commit 1280555b4d041dd025198c8e85ed14b4c1c91cfb Author: teamarchive2.fnf.archive.org root Date: Tue Apr 6 22:21:54 2021 +0000 first commit diff --git a/ADAM.ASM b/ADAM.ASM new file mode 100755 index 0000000..697c78f --- /dev/null +++ b/ADAM.ASM @@ -0,0 +1,1740 @@ +************************************************************** +* +* 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 + \ No newline at end of file diff --git a/ADAMIMG.ASM b/ADAMIMG.ASM new file mode 100755 index 0000000..6f12de4 --- /dev/null +++ b/ADAMIMG.ASM @@ -0,0 +1,18 @@ + .FILE "adamimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include adamimg.tbl + .include adamimg.h + +****************************************************************************** + + .even + .include "adam.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/ADAMIMG.H b/ADAMIMG.H new file mode 100755 index 0000000..fcae403 --- /dev/null +++ b/ADAMIMG.H @@ -0,0 +1,79 @@ + .global A4AH4C + .global A2AH2A + .global A4AM4B + .global A2AM2A + .global A3AE4A + .global A3AE2A + .global A4BK3C + .global A2BK3B + .global A4LB4A + .global A2LB2B + .global A3CP3A + .global A3CP3D + .global A3FH3A + .global A3FD3B + .global A3GU4A + .global A3GU2A + .global A4KM3C + .global A2KM3A + .global A4NM3A + .global A2NM3A + .global A4BG3A + .global A2BG3A + .global A4MP4B + .global A3DC3B + .global A3GD4A + .global A3GD2A + .global A2JT2A + .global A4BF3A + .global A3BF3A + .global A3ZM3C + .global A4GH3A + .global A3PD3A + .global A4FG3A + .global A4GR3B + .global A2FG3A + .global A2GR3Z + .global A3RL1A + .global A4PM4A + .global A4SB4A + .global A4GF3A + .global A4SW4A + .global A3PO4B + .global A4UT4Z + .global A4UT4Y + .global A3LC3A + .global A3RC3A + .global A4UP3A + .global A2UP3A + .global A4OT3A + .global A4UT3A + .global A4MK3B + .global A4SC5B + .global A2SC1A + .global A2PU3G + .global A4PU3B + .global A4PU3C + .global A2PU3D + .global A4BC3A + .global A2BC3B + .global A4PS3A + .global A2PS3A + .global A4HT3A + .global A3PJ3B + .global A2PJ2C + .global A2ST2D + .global A2TW2Z + .global A2WL1A + .global A2WL2B + .global A2WL8B + .global A3BO3A + .global A3RN3A + .global A4ST4J + .global A4TW4Z + .global A4WL2B + .global A4WL4A + .global A4WL5B + .global A1TT5Z + .global A1TR5Z + .global A2CT2B diff --git a/ADJUST.ASM b/ADJUST.ASM new file mode 100755 index 0000000..fd2e763 --- /dev/null +++ b/ADJUST.ASM @@ -0,0 +1,3722 @@ +************************************************************** +* +* Software: ? +* Initiated: ? +* +* Modified: Shawn Liptak, 1/22/92 -Total carnage cleanup +* Shawn Liptak, 2/20/92 -Basketball cleanup +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 2/20/92 21:25 +************************************************************** + .file "adjust.asm" + .width 132 + .option b,d,l,t + .mnolist + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "game.equ" + .include "link.equ" + .include "menu.equ" + .include "dip.equ" + .include "macros.h" + .include "sound.h" + + .include "fontsimg.glo" + + .text + +* IN THIS MODULE + + .DEF GO_ADJ + .DEF DO_ADJH + .DEF BCDBIN + .DEF BINBCD + .DEF SET_COIN_ADJ, MEN_ADJ, CKDIP, TAMPEREDP + + .globl CLR_MAIN + .globl ADJ_INST + .globl CADJ_BOX + .globl CLR_CUR + .globl DO_BIG_LINE + + .ref _switch_map_mode + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref ST_STICK + .ref L_MESS + .ref MESS_MM + .ref GET_ADJ + .ref GET_CSPT + .ref NO_CREDS + .ref GET_FAC + .ref MENU_TOP + .ref HTOHXASC + .ref STRCNRM + .ref ANY_BUT + .ref PUT_ADJ + .ref CS_ENTS + .ref STD_BORD + .ref CMOS_VAL + .ref LM_FINIS + .ref INIT_HSR + .ref LM_SETUP + .ref CRED_P + .ref B_MENU + .ref BLNKAREA + .ref GETSTICK + .ref P_FORK + .ref LD_CTAB + .ref STRLNRM + .ref RD7FONT + .ref READ_DIP + .ref HEXTOASC + .ref F_ADC_S + .ref BLNKHELP + .ref COL_INST + .ref H_SLAVE + .ref STRRNRM + .ref CLR_SCRN + +****************************************************************************** + + + +******************************** +* Adjustment menu requested.....make sure CMOS is ok! + +GO_ADJ + MOVI MEN_ADJ,A8 + +GEN_ADJUST + MOVE A8,-*A12,L ;PUSH MENU ON STACK + + CALLA CMOS_VAL ;CHECK OUT THE REGION + JRZ SET_OK ;ITS OK.....CONTINUE.... + + JSRP GET_FAC ;BRING TO FACTORY SETTINGS OR QUIT. + JSRP ANY_BUT + + CALLA CMOS_VAL ;CAN'T GO IF WE'RE NOT OK NOW + JRNZ GO_ADQ ;ITS NOT VALID....NO ADJUSTING! + +SET_OK + MOVK 1,A0 + MOVE A0,-*A12,W ;LIKE GEN_MENU...KEEP NUMBER ON STACK + +ADJ_LOOP + CALLA CLR_SCRN ;CLEAR THE SCREEN! + + MOVI ADJ_ADV,A8 + JSRP L_MESS ;PRINT THE NEW INSTRUCTIONS + + MOVE *A12(WORD_SIZE),A8,L ;GET THE MENU + JSRP MENU_TOP ;PRINT OUT THE TOP. + MOVI COLOR_RED,A9 + CALLA COL_INST ;PUT UP A DIFFERENT INSTR. BOX + + MOVE *A12,A9,W ;GET INDEX TO USE. + JSRP B_MENU ;FETCH THE ENTRY TO ADJUST. + +* EACH ADJUSTMENT HAS A STRUCTURE ASSOCIATED WITH IT. +* A9 RETURNS A STRUCTURE FOR THE ITEM SELECTED. + + MOVE A9,A9 ;0 IS RETURN TO MAIN MENU + JRZ GO_ADJX + +* A8 HAS THE MENU NUMBER.....UNLIKE GEN_MENU...DON'T STEP! + + MOVE A8,*A12,W ;PUT IT SAFELY ON OUR STACK. + + MOVE *A9(AD_ROUT),A0,L ;GET THE ROUTINE TO CALL FOR ACTIVATION + MOVI ADJ_LOOP,A7 + MOVE A7,-*A12,L ;PUSH RETURN ADDRESS + JUMP A0 ;"CALL THE ROUTINE (PASSING STRUCT IN A9) + +GO_ADJX + addk WORD_SIZE,a12 ;"pop" the position indicator +GO_ADQ + addk LONG_SIZE,a12 ;Pop menu + RETP ;OK...RETURN! + +************************************************************************** +* * +* PRICE_ADJ * +* * +* THIS IS EXECUTED WHEN THE "CUSTOM PRICING" ENTRY IS * +* SELECTED FOR ADJUSTMENT FROM THE ADJUSTMENT MENU. * +* * +* IT CREATES A WHOLE NEW ADJUSTMENT MENU CONTIAING: * +* * +* * +* LEFT SLOT UNITS * +* CENTER SLOT UNITS * +* RIGHT SLOT UNITS * +* UNITS / CREDIT * +* UNITS / BONUS * +* MINIMUM UNITS * +* CREDITS TO START * +* CREDITS TO CONTINUE * +* SHOW CREDIT FRACTIONS * +* COINS PER DOLLAR * +* FREE PLAY * +* MAXIMUM CREDITS * +* COIN PAGE HELP * +* * +************************************************************************** +PRICE_ADJ + MOVI MEN_CUST,A8 ;HANDLE JUST LIKE MAIN ADJ. MENU + JAUC GEN_ADJUST + +MULT_ADJ + MOVI MEN_MULT,A8 ;HANDLE JUST LIKE MAIN ADJ. MENU + JAUC GEN_ADJUST + +************************************************************************** +* * +* GEN_ADJ * +* * +* THIS IS THE ROUTINE THAT IS EXECUTED TO DO * +* THE ADJUSTING ONCE A BUTTON IS CLICKED ON * +* AN ADJUSTMENT. * +* * +* A9 -> ADJUSTMENT STRUCTURE! * +* * +************************************************************************** +GEN_ADJ: + movk 2,a0 ;Adjusting switch mapping mode + move a0,@_switch_map_mode,L + MOVE A9,*A13(PDATA),L ;SAVE THE STRUCTURE POINTER + + MOVE A9,A8 ;GET TO GENERAL POINTING REGISTER + JSRP DO_IN_WHITE ;GO FROM LF TO WHITE RIGHT AWAY. + +; JSRP ADJ_DOOR ;CAN'T DO IT UNLESS DOOR IS OPEN. + MOVE A0,A0 + JRNZ ADJ_CAN ;CANCELLED +* + CALLR CLR_MAIN ;CLEAR OUT THE MAIN MENU REGION + CALLR ADJ_INST ;PUT INSTRUCTIONS AT BOTTOM. + JSRP ST_STICK ;LOCKOUT STUCK SWITCHES + + SLEEPK 2 ;STOP RACE ON INSTRUCTIONS +ADJ_CHNG + SLEEPK 1 ;NOW LOOP ON STICK...EXIT + + MOVI 31000H,A5 ;TYPOMATIC....BOT HALF SAYS DON'T TIME OUT +* ;TOP HALF IS TICKS PER HIT + JSRP GETSTICK ;ASK THE STICK HANDLER....... + MOVE *A13(PDATA),A8,L ;GET OUR POINTER + MOVE A0,A1 ;KEEP GETSTICK VALUE + JRZ ADJ_CHNG ;ITS ZERO....NO MORE WORK NEEDED + + MOVE *A8(AD_CMOS),A0,W ;GET ADJ NUMBER + MOVE A0,A2 ;COPY FOR LATER + + CALLR GET_EADJ ;READ IT OUT (FIXING ZERO IF NEC) + MOVE A0,A3 ;SAVE "OLD" VALUE +* +* A0 = ADJUSTMENT VALUE +* A1 = GET_STICK VALUE +* A2 = ADJUSTMENT NUMBER +* A3 = ADJUSTMENT VALUE READ! +* A8 = ADJUSTMENT STRUCTURE POINTER +* + CMPI 3,A1 ;BUTTON......BACK TO ADJ MENU! + JRZ ADJ_BUTT ;YEP....WE'RE OUT OF HERE. + + CMPI 2,A1 + JRZ ADJ_DOWN ;ITS DOWN.... +* +* REQUEST TO GO UP.... +* + CALLR INC_ADJ ;INCREMENT IT + JRUC ADJ_JOIN + +ADJ_DOWN: + CALLR DEC_ADJ ;DECREMENT IT +ADJ_JOIN: + MOVE A2,A0 ;ADJUSTMENT NUMBER + CALLR GET_EADJ ;READ IT OUT (FIXING ZERO IF NEC) + CMP A0,A3 ;DID IT NOT CHANGE? + JRZ ADJ_CHNG ;NOPE....NO ACTION! +* +* IT CHANGED....WE NEED TO BEEP AND RE-PLOT LOWER +* PORTION TO REFLECT NEW SETTING. +* + movi beep1_snd,a3 + calla SNDSND + JSRP DO_IN_WHITE ;AND UPDATE THE ADJUSTMENT + + JRUC ADJ_CHNG ;AND LOOP! + +DO_IN_WHITE + CALLR CLR_CUR ;CLEAR OUT CURRENT SETTING + MOVI COLOR_WHITE,A11 ;THEY'RE STARING....NO HEADACHES + JAUC AD_CRVAL ;PRINT THE NEW VALUE + +ADJ_BUTT: + movi beep2_snd,a3 + calla SNDSND +ADJ_CAN: + movk 1,a0 + move a0,@_switch_map_mode,L + RETP + +************************************************************************** +* * +* DEC_ADJ * +* * +* THIS IS CALLED TO MOVE TO THE PREVIOUS VALUE. * +* A0 = VALUE READ FROM CMOS * +* A2 = ADJUSTMENT NUMBER (TO WRITE IT BACK) * +* A8 = ADJUSTMENT STRUCTURE POINTER. * +* * +* INC_ADJ IS USED TO STEP TO THE NEXT VALUE * +* * +************************************************************************** +DEC_ADJ: + MMTM SP,A0,A1,A2,A3 + MOVE A0,A3 ;COPY ORIGINAL VALUE + MOVE *A8(AD_DELTA),A1,L ;GET UNITS BETWEEN VALUES + CALLR MAKE_BIN_IF_NEC ;CHANGE RADIX FOR MATH IF NECESSARY + SUB A1,A0 ;REMOVE THIS FROM READ VALUE + JRUC FINISH_CHANGE ;GO TO COMMON ROUTINE TO WRAP IT UP + +INC_ADJ: + MMTM SP,A0,A1,A2,A3 + MOVE A0,A3 ;COPY ORIGINAL VALUE + MOVE *A8(AD_DELTA),A1,L ;GET UNITS BETWEEN VALUES + CALLR MAKE_BIN_IF_NEC + ADD A1,A0 ;REMOVE THIS FROM READ VALUE + +FINISH_CHANGE: + CALLR BCD_IF_NEC ;BACK TO BCD AFTER THE MATH + CALLR PUT_IN_RANGE ;ADJUST TO ACCOUNT FOR WRAP AND LIMITS + MOVE *A8(AD_ZEQU),A1,L ;This number becomes zero + CMP A0,A1 ;is this the number? + JRNZ FC_NZ ;NOPE...STORE IT! + CLR A0 ;USE ZERO IN PLACE OF THIS NUMBER! + +FC_NZ: + MOVE A0,A1 ;WRITING REG + MOVE A2,A0 ;ADJUSTMENT NUMBER + CALLA PUT_ADJ ;WRITE IT BACK +* +* SEE IF WE'RE DOING MASTER COINAGE. +* + CMP A1,A3 ;DID THE NUMBER CHANGE? + JRZ NOT_COIN ;NOPE...DON'T LOAD IT UP! +* +* AT THIS POINT WE KNOW THAT THE VALUE BEING ADJUSTED CHANGED. +* + CALLR DIRTY_IF_NEC ;IF ITS A COIN VALUE TAKE NOTE! + + CMPI ADJPRICE,A0 ;IS IT? + JRNZ NOT_COIN ;NOT COIN + + CALLA LD_CTAB ;BATCH WRITE THE VALUES IN! + CALLA NO_CREDS ;REMOVE CREDITS AND FRACTIONS WHEN + CALLA CRED_P ;LINK-OUT! +* ;MODE CHANGES + +NOT_COIN: + CALLA F_ADC_S ;MAKE CHECKSUM VALID! + MMFM SP,A0,A1,A2,A3 + RETS + +************************************************************************** +* * +* DIRTY_IF_NEC * +* * +* THIS IS CALLED BY ALL ADJUSTMENTS WHEN THEY ACTUALLY * +* CHANGE THEIR VALUE. FOR THE COINAGE ADJUSTMENTS, * +* IF ANY OF THE 1ST 6 VALUES ARE TOUCHED WE NEED TO MAKE * +* * +* ADJ1ST6 = ZERO. * +* * +* IF ANY OF THE 1ST 8 VALUES ARE TOUCHED WE NEED TO MAKE * +* * +* ADJVIRGIN = ZERO. * +* * +* THE AD_FLAGS FIELD IN THE ADJUSTMENT STRUCTURE HAVE BITS * +* INDICATING WHICH (IF ANY) SHOULD BE DIRTYED. * +* * +************************************************************************** +DIRTY_IF_NEC + + MMTM SP,A0,A1,A2 + MOVE *A8(AD_FLAGS),A2,W ;FETCH THE FLAGS + + BTST VIRG_BIT,A2 ;DOES CHANGING THIS SAY SET VIRG BIT. + JRZ NOT_1ST_8 ;NOPE + + movk ADJVIRGIN,a0 + CLR A1 + CALLA PUT_ADJ + +NOT_1ST_8 + BTST SIX_BIT,A2 ;1ST 6? + JRZ NOT_1ST_6 + + movk ADJ1ST6,a0 + CLR A1 + CALLA PUT_ADJ +NOT_1ST_6 + BTST HSR_BIT,A2 ;HIGH SCORE RESET NUM? + JRZ NOT_HSR ;NOPE + + CALLA INIT_HSR ;IT WAS CHANGED....STUFF THE VALUE! + +NOT_HSR + MMFM SP,A0,A1,A2 + RETS + +************************************************************************** +* * +* MAKE_BIN_IF_NEC * +* * +* THIS IS CALLED AFTER THE A0 HAS THE ADJUSTMENT AND * +* A1 HAS THE AMOUNT TO ADD OR SUBTRACT. IF WE'RE * +* DOING BCD MATH THEN CONVERT BOTH A0 AND A1. * +* * +************************************************************************** +MAKE_BIN_IF_NEC: + MMTM SP,A2 + MOVE *A8(AD_FLAGS),A2,W ;GET THE FLAGS + BTST BCD_BIT,A2 ;BCD? + JRZ MBINX ;NOPE + + CALLA BCDBIN ;CONVERT A0 TO BINARY + MOVE A0,A2 ;SAVE + MOVE A1,A0 ;NOW A1 + CALLA BCDBIN + MOVE A0,A1 + MOVE A2,A0 ;NOW PUT A0 BACK +MBINX: + MMFM SP,A2 + RETS + +************************************************************************** +* * +* BCD_IF_NEC * +* * +* A0 HAS A RESULT OF THE ADJUSTMENT.....IN BINARY. * +* CONVERT BACK TO BCD IF THAT'S THE MODE. * +* * +************************************************************************** +BCD_IF_NEC: + MMTM SP,A2 + MOVE *A8(AD_FLAGS),A2,W ;GET THE FLAGS + BTST BCD_BIT,A2 ;BCD? + JRZ BINX ;NOPE + + CALLA BINBCD ;BACK TO BCD + +BINX: + MMFM SP,A2 + RETS + +ADJ_CASH + .WORD >F7A5-10H,8,>8085,0 ;CASH REGISTER SOUND +ADJ_LBEEP +ADJ_BEEP .WORD >F3F7-10H,>20,>8081,0 ;BEEP TONE + +************************************************************************** +* * +* CLR_CUR * +* * +* THIS IS CALLED TO CLEAR OUT THE AREA WHERE THE * +* "CURRENT SETTING" IS BEING DISPLAYED. * +* * +************************************************************************** +CLR_CUR: + MMTM SP,A3,A4 + MOVI AM_HX,A3 ;THIS IS LEFT MARGIN OF HELP AREA + + MOVI CUR_LRX,A4 ;RIGHT X + SUB A3,A4 ;A4 HAS X DISTANCE + + ADDI ADJ_ULY*10000H,A3 ;UPPER LEFT Y + ADDI (256-ADJ_ULY)*10000H,A4 ;Y GOES TO BOTTOM OF SCREEN + CALLA BLNKAREA ;ITS BLANK NOW! + MMFM SP,A3,A4 + RETS + +************************************************************************** +* * +* CLR_MAIN * +* * +* THIS IS CALLED TO CLEAR OUT THE ADJUSTMENT MENU AND * +* THE CYAN INSTRUCTIONS FOR THIS MENU. * +* * +************************************************************************** +CLR_MAIN + MMTM SP,A3,A4 + MOVI TIT_ULX,A3 ;LEFT EDGE + MOVI AM_HX,A4 ;UP TO THIS EDGE + SUB A3,A4 ;X'S ARE SET. + ADDI INST_ULY*10000H,A3 ;TOP Y + ADDI (400-INST_ULY)*10000H,A4 ;Y DISTANCE + CALLA BLNKAREA + MMFM SP,A3,A4 + RETS + +************************************************************************** +* * +* ADJ_DOOR * +* * +* PRINT MESSAGE THAT DOOR MUST BE OPENED TO CONTINUE. * +* HOLD CONTROL TILL BUTTON IS PRESSED (CANCELLING) * +* OR DOOR IS OPEN. * +* * +* RETURN A0 = 0 MEANS DOOR GOT OPENED. * +* A0 .NE 0 FOR BUTTON PRESSED. * +* * +************************************************************************** +;ADJ_DOOR: +; CALLA CK_DOOR ;IS THE DOOR OPEN? NZ=OPEN +; JRNZ DORET ;YEP.......RETURN A0=0 +; +; CALLA CLR_MAIN ;CLEAR THE SCREEN +; MOVI CUR_ULY,A10 ;PLOT TO SQUARE UP WITH "CURRENT SETTING" +; CALLA ADINBOX ;PUT A NICE BOX AROUND IT. +; MOVI MESS_OPEN_OR_CANCEL,A8 +; JSRP L_MESS ;GIVE INSTRUCTIONS +; JSRP ST_STICK ;GET "STARTING STATE" + +;WD1 +; SLEEPK 1 ;NAP A BIT + +; CALLA CK_DOOR +; JRNZ DORET ;ITS OPEN...RETURN OK + +; MOVI 40010H,A5 ;TYPOMATIC PARMS +; JSRP GETSTICK ;CHECK BUTTONS +; CMPI 3,A0 ;BUTTON? +; JRNZ WD1 ;NOT YET + +; SOUND1 ADJ_LBEEP ;MAKE A BEEP. +; MOVK 3,A0 ;RETURN A0 .NE. 0 +* +* RETURN A0=3 +* +; RETP + +* RETURN A0=0 (CONTINUE) +* +;DORET: +; CLR A0 +; RETP + + +* +************************************************************************** +* * +* ADJ_INST * +* * +* THIS IS CALLED TO PUT AN INSTRUCTION BOX OUT * +* WHILE ADJUSTMENT IS TAKING PLACE. * +* * +************************************************************************** +ADJ_INST: + MOVE *A13(PDATA),A8,L ;PASS THE ADJUSTMENT POINTER + MOVI ADJ_INST_P,A7 + CALLA P_FORK ;START IT UP! + RETS + +************************************************************************** +* * +* ADJ_INST_P * +* * +* THIS IS CALLED TO PUT INSTRUCTIONS FOR ADJUSTMENT * +* MODIFICAITION UP AND FLASH THE ARROW (IF ITS NOT * +* TOO ANNOYING) * +* * +************************************************************************** + +ADJ_INST_P: + JSRP ADJUSTING ;PUT UP "ADJUSTING DIFFICULTY" MESSAGE + + MOVE A10,A3 ;STASH # OF ARROWS WHERE IT WILL BE SAFE + CALLR ADINBOX ;PUT THE BOX OUT + + MOVI INST_TO_ADJ,A8 + JSRP L_MESS ;PRINT OUT INSTRUCTIONS + + MOVI ADJ_ARROW,A8 + JSRP L_MESS + + JAUC SUCIDE + +************************************************************************** +* * +* ADINBOX * +* * +* THIS PUTS A BOX AROUND THE ADJUSTMENT INSTRUCTIONS. * +* * +************************************************************************** +* +INBOX_HEIGHT EQU 7BH + +ADINBOX: + MMTM SP,A10 + MOVI CUR_ULY-2,A10 + SLL 16,A10 + MOVI TIT_ULX,A4 ;UPPER RIGHT X + MOVY A10,A4 ;UPPER RIGHT + + MOVI AM_RX,A5 + MOVY A10,A5 ;START WITH BASE Y + ADDI INBOX_HEIGHT*10000H,A5 + + CALLR WH_BORD + MMFM SP,A10 + RETS + +************************************************************************** +* * +* ADJUSTING * +* * +* THIS IS CALLED WHEN WE ENTER THE "ADJUSTING" PHASE * +* IT PUTS A BOX IN THE LEFT AREA TO SAY WHAT WE ARE ADJUSTING. * +* * +************************************************************************** +ADJUSTING: + MOVE A8,A2 ;PUT ADJUSTMENT BLOCK PTR WHERE ITS SAFE + MOVI (CUR_ULY-31H)*10000H,A4 ;FOR DO_BORDER + ADDI TIT_ULX,A4 ;A4 IS REASONABLY EASY + + MOVI ((CUR_ULY-2)+MB_YWID)*10000H,A5 ;OVERLAP THE ONE BELOW IT + ADDI AM_RX,A5 ;THIS IS RIGHT EDGE + + CALLR WH_BORD ;DO A WHITE BORDER + + MOVI MES_ADNAME,A8 ;PUT THE ADJUSTMENT NAME UP + CALLA LM_SETUP + MOVE *A2(AD_MAIN),A8,L ;GET THE MAIN MENU MESSAGE + JSRP LM_FINIS + + MOVI MES_ADJUSTING,A8 + JSRP L_MESS + RETP + +MULT_VAL + CLR A4 + movk 6,a1 ;Setup a box for our 3 lines + CALLR PADJ_BOX ;(a10 is set as y for the 3 lines) + + MOVI M_MULTVAL,A8 + MOVI COLOR_DECAY,A11 + JSRP PRINT_SMALL_LINE ;HEADER FOR COIN SLOT VALUE + + MOVI COLOR_WHITE,A11 ;DON'T GLOW INSIDE BOX IF THAT'S THE MODE + ADDK 15,A10 + MOVI M_MULTVAL1,A8 + MOVI ADJLTOTMULT,A0 + JSRP ADJ_LEFT_RIGHT + + ADDK 11,A10 + MOVI M_MULTVAL2,A8 + MOVI ADJRTOTMULT,A0 + JSRP ADJ_LEFT_RIGHT + + ADDK 11,A10 + MOVI M_MULTVAL3,A8 + MOVI ADJCTOTMULT,A0 + JSRP ADJ_LEFT_RIGHT + + ADDK 11,A10 + MOVI M_MULTVAL4,A8 + MOVI ADJXTOTMULT,A0 + JSRP ADJ_LEFT_RIGHT + + ADDK 11,A10 + MOVI M_MULTVAL5,A8 + MOVI ADJBTOTMULT,A0 + JSRP ADJ_LEFT_RIGHT + + RETP + +************************************************************************** +* * +* PARAM_VAL * +* * +* This is called to summarize the values of the * +* important adjustments on the parameter page. * +* * +************************************************************************** +* +* WE WILL PRING OUT 3 LINES IN A BOX. +* +* 1) Pricing: +* 2) Free Play: yes/no +* 3) Maximum Credits: +* + +PDY EQU HELP_DY +PMARG EQU 6 + +PARAM_VAL + movk 5,a1 ;Setup a box for our 3 lines + CALLR ADJ_BOX ;(a10 is set as y for the 3 lines) + +; addk 6,a10 ;Push to center 5 lines in box + + CALLR GET_COIN_TITLE ;COIN MODE + MOVI MESS_GP,A8 + JSRP SMALL_LEFT_RIGHT ;PRINT THE LINES + + ADDI PDY,A10 ;PUSH TO NEXT LINE + + MOVI M_NO,A2 ;ASSUME "NO" + movk ADJFREPL,a0 + CALLA GET_ADJ ;GET THE FREE PLAY ADJUSTMENT + JRZ NOT_FREE + MOVI M_YES,A2 + +NOT_FREE + MOVI MESS_FP,A8 + JSRP SMALL_LEFT_RIGHT ;PRINT THE LINES + + ADDI PDY,A10 ;PUSH TO NEXT LINE + + movk ADJMAXC,a0 + MOVI MESS_MAX,A8 + JSRP ADJ_LEFT_RIGHT ;A0 = ADJUST A8 = MESSAGE +* +* CREDITS TO START AND CONTINUE NEEDS TO HANDLE PLURAL ETC. +* + ADDI PDY,A10 ;PUSH TO NEXT LINE + movk ADJCSTRT,a0 ;Get credits required to start + MOVI M_CTS_PL,A8 + JSRP ADJ_LEFT_RIGHT ;A0 = ADJUST A8 = MESSAGE +* +* NOW THE CREDITS TO CONTINUE +* + ADDI PDY,A10 ;PUSH TO NEXT LINE + movk ADJCCONT,a0 ;Get credits required to continu + MOVI M_CTC_PL,A8 + JSRP ADJ_LEFT_RIGHT ;A0 = ADJUST A8 = MESSAGE + + RETP + +************************************************************************** +* * +* ADJ_LEFT_RIGHT * +* * +* A8 HAS MESSAGE * +* A0 HAS ADJUSTMENT * +* A10 HAS HEIGHT. * +* * +* LEFT JUSTIFY A8 MESSAGE * +* RIGHT JUSTIFY A0 ADJUSTMENT (AFTER READING IT) * +* * +************************************************************************** +ADJ_LEFT_RIGHT + MOVE A8,A3 ;STASH MESSAGE + + CALLA GET_ADJ + MOVE A0,A8 + CALLA HEXTOASC ;A8 POINTS TO NUMBER STRING + + MOVE A8,A2 + MOVE A3,A8 ;GET MESSAGE IN A8 + + JRUC SMALL_LEFT_RIGHT + +************************************************************************** +* * +* SMALL_LEFT_RIGHT * +* * +* THIS IS CALLED TO PRINT A LEFT AND RIGHT JUSTIFIED * +* PAIR OF STRINGS IN THE "CURRENT SETTING BOX" * +* * +* A2 = RIGHT JUSTIFIED STRING * +* A8 = LEFT JUSTIFIED STRING TO PRINT * +* A10 = Y VALUE * +* * +************************************************************************** +SMALL_LEFT_RIGHT + MMTM A12,A11,A6,A10,A9,A3 + + MOVI COLOR_WHITE,A6 ;SOLID WHITE FOR THESE MULTI-LINERS + MOVI RD7FONT,A11 ;USE BABY FONT + + MOVI AM_HX+PMARG,A9 ;LEFT X IS INSIDE LEFT LINE + + MOVE A10,A3 ;SAVE Y IN A3 + SLL 16,A3 + MOVY A3,A9 ;POINTER SET! + + MOVI SPACING07,A10 + + CLR A0 + + JSRP STRLNRM ;DO IT! + + MOVE A2,A8 ;GET RIGHT JUSTIFIED STRING + MOVI TIT_LRX-PMARG,A9 ;INSIDE RIGHT MARGIN + MOVY A3,A9 ;AT OUR Y + JSRP STRRNRM ;PRINT IT! + + MMFM A12,A11,A6,A10,A9,A3 + RETP + +************************************************************************** +* * +* COIN_SET * +* * +* THIS IS THE ROUTINE THAT IS CALLED TO DISPLAY THE CURRENT * +* COINAGE SETTINGS. * +* * +* A8 HAS POINTER TO ADJUSTMENT BLOCK * +* A11 HAS THE COLOR TO USE * +* * +************************************************************************** +COIN_SET + CALLR TAMPEREDP ;HAS THE 1ST 6 COIN VALUE BEEN TAMPERED WITH? + JRZ SBO ;YEP....SMALL BOX ONLY! + +; movk 8,a1 ;Big box for outside +; CALLR ADJ_BOX +;SBO +; movk 1,a1 ;Draw a box to hold 1 line +; CALLR ADJ_BOX ;DRAW THE BOX....PASS BACK 1ST PLOT LINE + + CALLR CLR_CUR + MOVI 6,A1 ;BIG BOX FOR OUTSIDE + MOVK 5,A4 ; GROSS KLUDGE TO OFFSET BOX + CALLR CADJ_BOX +SBO MOVI 1,A1 ;DRAW A BOX TO HOLD 1 LINE + CLR A4 + CALLR CADJ_BOX ;DRAW THE BOX....PASS BACK 1ST PLOT LINE + + MOVI [ADJ_CULY+5,AM_HX+5],A3 + MOVI [21,185],A4 + CALLA BLNKAREA + MOVI [ADJ_CULY+31,AM_HX+5],A3 + MOVI [58,185],A4 + CALLA BLNKAREA + +* THE ABOVE 2 CALLS SHOULD CREATE A BOX LIKE: +* +* 浜様様様様様様様様様 +* U.S.A. 1 +* 才様様様様様様様様様 +* 1 COIN / 1 CREDIT +* +* +* 25c $1.00 25c +* 藩様様様様様様様様様 +* +* A10 HAS THE PLACE TO PLOT THE TITLE LINE. +* + SUBK 5,A10 + MOVE A10,A4 ;KEEP THE Y HANDY. + + + CALLR GET_COIN_TITLE ;GET TITLE FOR BIG BOX IN A2. + +* A2 HAS STRING +* A10 IS Y TO PRINT +* A11 IS COLOR + +COIN_TIT + JSRP DO_BIG_LINE ;PRINT THIS LINE! + + MOVI COLOR_WHITE,A11 ;DON'T GLOW INSIDE BOX IF THAT'S THE MODE + + CALLR TAMPEREDP ;HAS THE 1ST 6 COIN VALUE BEEN TAMPERED WITH? + JRZ NO_INFO ;YEP....JUST GIVE THE STARTS AND CONTINUES + + ADDK 11,A10 + SLL 16,A10 + PUSHP A10 ;SAVE Y POSITION + + CALLA GET_CSPT ;A6 POINTS AT THE CSELECT BLOCK + MOVE *A6(CS_LIST),A2,L ;FETCH POINTER TO MESSAGE LIST + JRZ NO_HEADERS ;NO LIST! + + MOVI COIN_HEAD_Y,A10 ;AT THIS HEIGHT + +NEXT_HEADER + MOVE *A2+,A8,L + JRZ NO_HEADERS ;HEADERS ARE OUT...CONTINUE + + JSRP PRINT_SMALL_LINE ;PRINT THE LINE + addk 12,a10 ;Push to next line + JRUC NEXT_HEADER + +NO_HEADERS + MOVI M_SLOTVAL,A8 + MOVI MESS_CTS,A10 ;SET Y FOR COIN SLOT LINE. + movi >1212,a11 ;Med blue + JSRP PRINT_SMALL_LINE ;HEADER FOR COIN SLOT VALUE + + CALLA GET_CSPT ;A6 POINTS AT THE CSELECT BLOCK + MOVE *A6(CS_SLOTS),A8,L ;PRINT COIN SLOT INFO + addk 12,a10 ;Push y up for a gap + JSRP PRINT_SMALL_LINE ;PRINT THE LINE + + MOVI TOST_MESS,A8 + CALLA LM_SETUP + PUSH A0 + MOVE *A12,A0,L + MOVY A0,A9 + MOVI ADJCSTRT,A0 ; CREDITS TO START + CALLA GET_ADJ + MOVE A0,A8 + PULL A0 + CALLA HEXTOASC + JSRP LM_FINIS + + MOVI TOCONT_MESS,A8 + CALLA LM_SETUP + PUSH A0 + MOVE *A12,A0,L + MOVY A0,A9 + MOVI ADJCCONT,A0 ; CREDITS TO START + CALLA GET_ADJ + MOVE A0,A8 + PULL A0 + CALLA HEXTOASC + JSRP LM_FINIS + + MOVI TOSTOC_MESS,A8 + CALLA LM_SETUP + PULLP A3 + MOVY A3,A9 + JSRP LM_FINIS + + +NO_INFO + RETP ;DONE FOR NOW + +TOSTOC_MESS + MESS_MAC RD7FONT,SPACING07,AM_HX+116,0,COLOR_WHITE,STRCNRM,0 + .STRING "TO START. TO CONTINUE.",0 + .EVEN + +TOST_MESS + MESS_MAC RD7FONT,SPACING07,AM_HX+27,0,COLOR_WHITE,STRRNRM,0 + +TOCONT_MESS + MESS_MAC RD7FONT,SPACING07,AM_HX+110,0,COLOR_WHITE,STRRNRM,0 + +************************************************************************** +* * +* GET_COIN_TITLE * +* * +* THIS IS CALLED TO FETCH THE CHARACTER STRING MESSAGE * +* FOR THE CURRENT COIN MODE. IF ITS STANDARD, THEN * +* IT IS FETCHED BASED ON THE COIN SELECT TABLE. * +* * +* IF THE 1ST 6 PARAMETERS HAVE BEEN MODIFIED, THEN * +* IT RETURNS THE STRING "NON-STANDARD". * +* * +************************************************************************** +GET_COIN_TITLE + PUSH a6 + + CALLA GET_CSPT ;A6 POINTS AT THE CSELECT BLOCK + MOVI MESS_DIP,A2 + CALLR CKDIP + JRZ gctx + + MOVI MESS_TAMPERED,A2 + movk ADJ1ST6,a0 ;Non-standard title if 1st 6 modified + CALLA GET_ADJ + jrz gctx ;Changed? + MOVE *A6(CS_TITLE),A2,L ;GET THE CSELECT TITLE FOR ITS VALUES + +gctx PULL a6 + RETS + +************************************************************************** +* * +* TAMPEREDP * +* * +* HAVE THE COIN PARAMETERS BEEN TAMPERED WITH. * +* THIS IS NON-ZERO IF ANY OF THE 1ST 6 COIN * +* PARAMETERS HAVE BEEN ADJUSTED. * +* * +************************************************************************** +TAMPEREDP + PUSH a0 + movk ADJ1ST6,a0 ;Just check the 1st 6 + CALLA GET_ADJ ;HAS IT BEEN TAMPERED WITH (0 MEANS YES) + MMFM SP,A0 + RETS + +CKDIP + CALLA READ_DIP + ANDI DPUSECMOS,A0 + MOVE A0,A0 + RETS + +************************************************************************** +* * +* SET_COIN_ADJ * +* * +* SET THE COIN ADJUSTMENT STUFF FROM WHATEVER IS POINTED TO BY * +* A6 * +* * +* ENTRY * +* A6 POINTER TO THE FIRST 6 ADJUSTMENTS ( SORT OF ) * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +SET_COIN_ADJ: + MMTM SP,A0,A1,A6,A7 + MOVI ADJLMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJRMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJXMULT,A0 ; NEW ADDITION, FOLKS! + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJDBVMULT,A0 ; NEW ADDITION, FOLKS! + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCUNIT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJBUNIT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJMUNIT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCSTRT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCCONT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCDIV,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJFRAC,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + PUSH A6 + MOVI ADJLTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJRTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJXTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJBTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + PULL A6 + + movk ADJVIRGIN,a0 ;THIS SAYS 1ST 8 UNTOUCHED. + movk 1,a1 + calla PUT_ADJ + + movk ADJ1ST6,a0 ;THIS SAYS 1ST 6 UNTOUCHED. + movk 1,a1 + calla PUT_ADJ ;DONE! + + CALLA F_ADC_S ; KEEP THE WORLD A HAPPY PLACE + + MMFM SP,A0,A1,A6,A7 + RETS + +************************************************************************** +* * +* PRINT_SMALL_LINE * +* * +* THIS IS CALLED TO PRINT A LINE IN THE "CURRENT SETTING" * +* BOX FOR THE COINAGE. * +* * +* A8 = STRING TO PRINT * +* A10 = Y VALUE * +* A11 = COLOR * +* * +* PRINT IN THE 7 POINT FONT WITH X CENTERED FOR THE * +* HELP SYSTEM. * +* * +************************************************************************** +PRINT_SMALL_LINE + MMTM A12,A11,A6,A10,A9 + + MOVE A11,A6 ;COLOR SET + MOVI RD7FONT,A11 ;USE BABY FONT + + MOVI AM_HX,A9,W ;GET LEFT X + CALLR LEFT_TO_CENTER ;CONVERT IT + + MOVE A10,A0 + SLL 16,A0 + MOVY A0,A9 ;POINTER SET! + + MOVI SPACING07,A10 + + CLR A0 + + JSRP STRCNRM ;DO IT! + + MMFM A12,A11,A6,A10,A9 + RETP + + +******************************** +* DO_ADJH +* +* THIS IS CALLED TO PLOT THE RIGHT HALF OF THE SCREEN +* FOR EACH ADJUSTMENT AS THE USER SELECTS THEM ON +* THE ADJUSTMENT MENU. +* +* THE FORMAT IS AS FOLLOWS: +* +* 浜様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様 +* A D J U S T M E N T M E N U +* ROBO REVISION 1.4 +* 藩様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様 +* 浜様様様様様様様様様様様様様様 浜様様様様様様様様様様様様様様様様融 +* SELECT BLAH BLAH BLAH GAME DIFFICULTY +* 藩様様様様様様様様様様様様様様 藩様様様様様様様様様様様様様様様様夕 +* 浜様様様様様様様様様様様様様様 浜様様様様様様様様様様様様様様様様融 +* THIS CONTROLS THE OVERALL +* GAME PRICING DIFFICULTY OF GAME PLAY. +* =======GAME DIFFICULTY======= +* LIVES PER PLAY RANGE OF SETTINGS: 1-9 +* POWER-UPS PER PLAY +* EXTRA MAN EVERY EASIEST SETTING: 1 +* LAST EXTRA MAN HARDEST SETTING: 9 +* ATTRACT-MODE SOUND FACTORY SETTING: 3 +* AUTO HIGH SCORE RESET 藩様様様様様様様様様様様様様様様様夕 +* VIOLENCE LEVEL +* RETURN TO MAIN MENU +* +* 浜様様様様様様様様様様様様様様様様融 +* +* 9 - EXTRA HARD +* +* 藩様様様様様様様様様様様様様様 藩様様様様様様様様様様様様様様様様夕 +* +* +* ON ENTRY....A1 POINTS AT THE 3 WORDS FOR CURRENT +* MENU ENTRY. +* +DO_ADJH +* +* FIRST WE BLANK OUT THE AREA...WE NEED TO DO THIS FROM +* THE MENU PROCESS SINCE THE RIGHT EDGE IS DETERMINED BY +* MENU PDATA STUFF. IT WILL RETURN IN A9 THE MARGIN WE +* SHOULD WORK FROM. +* + CALLA BLNKHELP ;BLANK OUT THE AREA WE'RE PLOTTING! + MOVE A1,A8 ;PASS THE STRUCTURE POINTER TO NEW PROCESS! + MOVI AD_SLAVE,A7 + CALLA P_FORK ;THIS CREATES IT! + RETS ;NOW RETURN TO MENU HANDLER! + +************************************************************************** +* * +* AD_SLAVE * +* * +* THIS IS FORKED TO PLOT THE RIGHT SIDE...IT HAS * +* ITS OWN PDATA AREA FOR INFO STORAGE. * +* * +* A8 = POINTER TO THE MENU SELECTION 3 LONG-WORD ENTRY * +* A9 = LEFT X MARGIN FOR OUR WORK. * +* * +************************************************************************** +ADS_STRUCT EQU PDATA ;LONG-POINTER TO ADJUSTMENT STRUCTURE +ADS_LX EQU ADS_STRUCT+LONG_SIZE ;WORD-LEFT X TO WORK FROM +ADS_CX EQU ADS_LX+WORD_SIZE ;WORD-CENTER X FOR WORK + +AD_SLAVE: + MOVE *A8(MENU_ROUTINE),A11,L ;NOW WE HAVE OUR SPECIAL STRUCTURE! + MOVE A11,*A13(ADS_STRUCT),L ;STASH IT...WE'LL NEED IT + MOVE A9,*A13(ADS_LX),W ;ALSO THE X..... + + MOVE A9,A4 ;COPY LEFT FOR BORDER ROUT + CALLR LEFT_TO_CENTER + + MOVE A9,*A13(ADS_CX),W ;STASH THE CENTER +* +* A4 = UPPER LEFT Y,X +* A5 = LOWER RIGHT Y,X +* A0 = Y,X WIDTH OF BORDER +* A9 = COLOR OF BORDER. +* + ADDI INST_ULY*10000H,A4 ;ADD IN THE Y + MOVI (INST_LRY*10000H)+TIT_LRX,A5 ;THIS IS OTHER EDGE. + MOVI COLOR_WHITE,A9 + CALLA STD_BORD ;ADJUSTMENT BORDER IS UP. + + MOVI ADJT_SETUP,A8 + CALLA LM_SETUP ;SETUP TO PRINT TITLE + + MOVE *A13(ADS_CX),A2,W ;GET THE X + MOVX A2,A9 ;SUBSTITUTE OUR X IN. + + MOVE *A13(ADS_STRUCT),A2,L ;GET STRUCTURE POINTER + MOVE *A2(AD_TITLE),A8,L ;GET MESSAGE POINTER + + JSRP LM_FINIS ;BOX AND TITLE ARE UP. + + MOVE *A2(AD_HELP),A8,L ;HELP STRUCTURE + CALLR CKDIP + JRNZ ADSSKIP + CMPI HELP_PRICE,A8 ; PRICING HELP + JRZ ADSDIP + CMPI HELP_PARAM,A8 ; PARAMETER HELP + JRZ ADSDIP + CMPI HELP_FREE,A8 ; FREEPLAY HELP + JRNZ ADSSKIP +ADSDIP + MOVI HELP_DIP,A8 +ADSSKIP + + MOVE *A13(ADS_LX),A9,W ;LEFT X FOR HELP BOX + MOVI INST_LRY+BOX_YGAP,A10 ;THIS IS HELP BOX POSITION + ADDI 10000H,A10 ;FLAG THAT THIS IS TOP..NOT CENTER! + + MOVI H_SLAVE,A7 ;FORK OFF SO IT CAN USE PDATA! + CALLA P_FORK ;START UP ANOTHER W/ SAME ID +* +* NOW WE NEED TO SHOW THE CURRENT SETTING ON THE LOWER HALF OF +* THE SCREEN. +* + MOVE *A13(ADS_STRUCT),A8,L ;GET THE ADJUSTMENT STRUCTURE + MOVI COLOR_LF,A11 ;INDICATE STANDARD COLOR. + JSRP AD_CRVAL ;PRINT SCREEN SHOWING THE CURRENT VALUE + + JAUC SUCIDE ;OUR JOB IS DONE!...EXIT + +************************************************************************** +* * +* LEFT_TO_CENTER * +* * +* THIS IS CALLED TO FIND THE CENTER POINT FOR A BOX BASED ON * +* THE LEFT PASSED IN A9. CENTER X RETURNED IN A9. * +* * +************************************************************************** +LEFT_TO_CENTER: + ADDI TIT_LRX,A9 ;FIND BOX CENTER + SRL 1,A9 ;NOW WE HAVE THE CENTER + ADDI C_KLUDGE,A9 ;MAKE IT CENTER CORRECTLY + RETS + +************************************************************************** +* * +* AD_CRVAL * +* * +* THIS IS CALLED TO PRINT THE CURRENT VALUE FOR ANY * +* ADJUSTMENT. THE VALUE SHOULD BE PRINTED AND BOXED * +* IN THE LOWER RIGHT REGION UNDER THE "CURRENT SETTING" * +* HEADER. * +* * +* A8 -> ADJUSTMENT STRUCTURE * +* A11 -> COLOR TO USE * +* ADJ_LEFX (GLOBAL RAM) CONTAINS LEFT MARGIN FOR THIS. * +* * +************************************************************************** + +AD_CRVAL: + MOVE *A8(AD_NAMEIT),A0,L ;FETCH THE "NAME-IT" ROUTINE + JUMP A0 ;AND "JSRP" THAT ROUTINE + +************************************************************************** +* * +* HEX_OR_MESS * +* * +* THIS IS CALLED FOR THE EXTRA MAN EVERY...AND * +* "LAST EXTRA MAN" ADJUSTMENTS. IT PRINTS OUT * +* THE HEX ADJUSTMENT WITH COMMAS, OR PRINTS * +* THE MESSAGE STORED AT A8(AD_NAMPTR) ON ITS LOWEST VALUE. * +* * +* ****** NOTE THAT "BIN_OR_MESS" (BELOW) USES PARTS OF THIS! * +* * +************************************************************************** +HEX_OR_MESS + PUSH a8 + + CALLR ADJ_STUFF ;GET THE REGGIES FIXED UP. + +* NOW A0 HAS THE ADJUSTMENT....FORM THE C-STRING + + MOVE *A8(AD_MIN),A1,L ;GET MINIMUM VALUE + CMP A0,A1 ;ARE WE AT MINIMUM? + JRNZ NOT_MIN ;NOPE + +AT_MIN MOVE *A8(AD_NAMPTR),A8,L ;GET THE MESSAGE POINTER + JRUC PRT_MIN + +NOT_MIN MOVE A0,A8 + MOVK 1,A3 ;INDICATE COMMAS ARE DESIRED + CALLA HTOHXASC ;CONVERT A8 TO THIS NUMBER + +PRT_MIN MOVE A8,A2 + PULL a8 + + JSRP DO_BIG_LINE ;NOW PRINT IT OUT + RETP ;AND RETURN + +************************************************************************** +* * +* BIN_OR_MESS * +* * +* THIS IS CALLED TO PRINT A BINARY NUMBER OR * +* A MESSAGE AT A8(AD_NAMPTR) IF IT IS AT MINIMUM. * +* * +************************************************************************** +BIN_OR_MESS: + MMTM SP,A8 ;PRESERVE A8 PLEASE + + CALLR ADJ_STUFF ;GET THE REGGIES FIXED UP. +* +* NOW A0 HAS THE ADJUSTMENT....FORM THE C-STRING +* + MOVE *A8(AD_MIN),A1,L ;GET MINIMUM VALUE + CMP A0,A1 ;ARE WE AT MINIMUM? + JRZ AT_MIN ;YEP.....PRINT "OFF" + + CALLA BINBCD ;TURN TO BCD PLEASE + JRUC NOT_MIN ;AND NOW PRINT WITH COMMAS. + +************************************************************************** +* * +* JUST_BIN * +* * +* THIS IS CALLED TO PRINT OUT THE ADJUSTMENT * +* (STORED IN BINARAY) IN DECIMAL. * +* * +************************************************************************** +JUST_BIN: + MMTM SP,A8 ;PRESERVE A8 PLEASE + + CALLR ADJ_STUFF ;GET THE REGGIES FIXED UP. +* +* NOW A0 HAS THE ADJUSTMENT....FORM THE C-STRING +* + CALLA BINBCD ;TURN IT TO BCD! + JRUC NOT_MIN + +************************************************************************** +* * +* LIST_1LINE * +* * +* THIS IS CALLED TO DO A 1 LINE LISTING OF MESSAGES * +* ASSOCAITED WITH THE CURRENT ADJUSTMENT. * +* A8 = STRUCTURE * +* A11 = COLOR OF TEXT INSIDE BOX. * +* * +************************************************************************** +LIST_1LINE + CALLR ADJ_STUFF ;GET THE REGGIES FIXED UP. + + MOVE *A8(AD_MAX),A1,L ;IS IT TOO HIGH? + CMP A1,A0 ;COMPARE TO ADJUSTMENT + JRLS L1L1 ;IN RANGE..... +* +* ADJUSTMENT IS TOO HIGH...DON'T GO THROUGH TABLE! +* + MOVI M_NULL,A2 ;USE NULL POINTER + JRUC L1L2 + +L1L1 + MOVE *A8(AD_MIN),A1,L ;GET THE LOWEST VALUE + SUB A1,A0 ;THIS IS OFFSET + MOVK LONG_SIZE,A1 ;THIS MANY LONG WORDS + MPYU A0,A1 ;THIS IS OFFSET INTO TABLE + MOVE *A8(AD_NAMPTR),A0,L ;THIS IS TABLE BASE + + CMPI DO_FREE,A8 ; IS IT A FREEPLAY ITEM + JRNZ LIGO + PUSH A0 + CALLA CKDIP ; CHECK FOR DIP SWITCH SETTING + MMFM SP,A0 + JRNZ LIGO + MOVI LIST_DIPNOYES,A0 +LIGO + + ADD A1,A0 ;A0 HAS THE TEXT OF THE SINGLE LINE + MOVE *A0,A2,L ;GET THE VECTOR +* +* TEXT POINTER IN A2 +* COLOR IN A11 +* Y IN A10 +* +L1L2 + JSRP DO_BIG_LINE ;PRINT OUT THIS LINE + RETP ;NOW RETURN + +************************************************************************** +* * +* ADJ_STUFF * +* * +* THIS IS CALLED BY THE ROUTINES THAT DISPLAY * +* ADJUSTMENTS. IT PLOTS THE BOX AND RETURNS: * +* * +* A10 = HEIGHT FOR 15 POINT SINGLE TEXT LINE * +* A0 = ADJUSTMENT WITH ZERO SUBSTITUTION COMPLETED. * +* * +************************************************************************** +ADJ_STUFF + movk 1,a1 ;Indicate 2 puny lines (for our big one) + CALLR ADJ_BOX ;DRAW THE BOX....PASS BACK 1ST PLOT LINE +* +* A10 HAS Y HEIGHT OF 1ST ENTRY. +* + MOVE *A8(AD_CMOS),A0,W ;GET ADJUSTMENT NUMBER + CALLR GET_EADJ ;FETCH THE CURRENT VALUE. + + jruc PUT_IN_RANGE ;IF ITS OUT OF RANGE, FIX IT! + +************************************************************************** +* * +* DO_BIG_LINE * +* * +* THIS IS CALLED TO DO A SINGLE LINE FOR AN ADJUSTMENT * +* "CURRENT ADJUSTMENT" BOX. * +* * +* A2 = POINTER TO TEXT * +* A10 = Y COORDINATE * +* A11 = COLOR * +* * +* X LEFT COORDINATE IS IN GLOBAL "ADJ_LEFX" * +* * +************************************************************************** +DO_BIG_LINE + MMTM A12,A10,A11,A8 ;SAVE STUFF FOR CALLER + MOVE A11,A6 + MOVI AM_HX,A9,W ;GET LEFT X + CALLR LEFT_TO_CENTER ;CONVERT IT + SLL 16,A10 ;SHIFT Y DOWN + MOVY A10,A9 ;X,Y SET + MOVE A2,A8 ;TEXT POINTER + CLR A0 ;NO SLEEP + MOVI SPACING20,A10 + MOVI RD7FONT,A11 + JSRP STRCNRM ;DO IT! + MMFM A12,A10,A11,A8 ;POP THE STUFF. + RETP + +************************************************************************** +* * +* GET_EADJ * +* * +* THIS IS LIKE GET_ADJ, HOWEVER IF ZERO COMES OUT, * +* WE CHECK TO SEE IF THERE IS A LOGICAL NUMBER TO * +* PASS OUT IN PLACE OF THE ZERO. * +* * +* A8 POINTS AT THE ADJUSTMENT STRUCTURE. * +* * +************************************************************************** +GET_EADJ + MMTM SP,A1 + CALLA GET_ADJ ;FETCH THE ADJUSTMENT + JRNZ GET_EA1 ;ITS NOT ZERO....RETURN +* +* ITS ZERO....SEE IF THERE'S A VALUE TO SUB +* + MOVE *A8(AD_ZEQU),A1,L ;IS THERE A SUB VALUE? + JRZ GET_EA1 ;NOPE...RETURN THE ZERO (AND FLAG) + + MOVE A1,A0 ;RETURN THE SUBSTITUTE VALUE +GET_EA1 + MMFM SP,A1 + RETS + +************************************************************************** +* * +* PUT_IN_RANGE * +* * +* THIS IS CALLED TO TAKE AN ADJUSTMENT AND MAKE SURE * +* IT HAS A VALID VALUE. IF ITS BETWEEN THE MIN AND MAX * +* (INCLUSIVE) ALLOWED, THEN WE RETURN WITH NO ACTION. * +* * +* IF ITS OUTSIDE, THEN WE SET IT ACCORDING TO THE * +* "WRAP_AROUND" PARAMETER. * +* * +* A0 HAS ADJUSTMENT VALUE * +* A8 POINTS AT ADJUSTMENT STRUCTURE. * +* * +* RETURN NEW VALUE IN A0. * +* * +************************************************************************** +PUT_IN_RANGE: + MMTM SP,A1,A2,A3 + MOVE *A8(AD_MIN),A1,L ;GET MINIMUM + MOVE *A8(AD_MAX),A2,L ;GET MAXIMUM + MOVE *A8(AD_FLAGS),A3,W ;ARE WE WRAPPING AROUND + BTST WRAP_BIT,A3 ;WELL? + JRNZ CK_WRAP ;YEP....USE A FANCY HANDLER. + + CMP A1,A0 ;ARE WE TOO LOW? + JRHS NOT_LO +* +* ITS TOO LOW.....USE MINIMUM +* +USE_LO: + MOVE A1,A0 + +* +* WE'RE NOT WRAPPING AROUNG....IF ITS MEGA-HIGH....KEEP IT +* AT THE LOW BOUNDARY. +* +NOT_LO: + CMPI 090000000H,A0 + JRHI USE_LO ;USE THE LOW VALUE! + + CMP A2,A0 + JRLS PIRX + +USE_HI: + MOVE A2,A0 + JRUC PIRX +* +* WE NEED TO WRAP FROM LOWEST TO HIGHEST +* +CK_WRAP: + CMPI 090000000H,A0 ;IN THIS RANGE, WE MUST HAVE WRAPPED DOWN + JRHI USE_HI ;SO USE HIGH VALUE + + CMP A1,A0 ;IS IT LOWER THAN LO? + JRLO USE_HI ;IT IS ....USE THE HIGH ONE. + + CMP A2,A0 ;IS IT TOO HIGH? + JRHI USE_LO ;IT IS....USE THE LOW ONE. + +PIRX: + MMFM SP,A1,A2,A3 + RETS + +************************************************************************** +* * +* ADJ_BOX * +* * +* A1 HAS NUMBER OF LINES FOR ADJUSTMENT * +* RETURN A10 AT Y IF 1ST LINE OF BOX. * +* * +************************************************************************** +CADJ_BOX + MMTM SP,A4,A5,A0,A9 + MOVI ADJ_CULY,A10 + JRUC ADJ_ENT + +PADJ_BOX + MMTM SP,A4,A5,A0,A9 + MOVI ADJ_PULY,A10 + JRUC ADJ_ENT +ADJ_BOX MMTM SP,A4,A5,A0,A9 +* + MOVI ADJ_ULY,A10 ;THIS IS TOP OF BOX + CLR A4 + +ADJ_ENT + CMPI 2,A1 + JRNZ ADJ_ENT_NORMAL + MOVK 8,A5 ; 1 LINER KLUDGE + JRUC ADJ_ENT_GO +ADJ_ENT_NORMAL + MOVI HELP_DY,A5 ;DISTANCE PER ENTRY + MPYU A1,A5 ;DISTANCE FOR ALL ENTRIES +ADJ_ENT_GO + ADD A4,A5 ; FIX IT UP A LITTLE + ADDI HELP_Y_MARGIN+(MB_YWID*2)+HELP_YLO_MARGIN,A5 + +;ADJ_BOX +; MMTM SP,A4,A5,A0,A9 + +; MOVI HELP_DY,A5 ;DISTANCE PER ENTRY +; MPYU A1,A5 ;DISTANCE FOR ALL ENTRIES +; ADDI HELP_Y_MARGIN+(MB_YWID*2)+HELP_YLO_MARGIN,A5 +* +* A5 NOW CONTAINS FULL HEIGHT OF BOX +* +; MOVI ADJ_ULY,A10 ;THIS IS TOP OF BOX +* +* NOW FORM UPPER LEFT IN A4 +* + MOVE A10,A4 ;MOVE Y OVER + SLL 16,A4 ;MAKE ROOM FOR X + ADDI AM_HX,A4 ;PUT IN THE X...THIS IS UPPER LEFT! + + ADD A10,A5 ;ADD BASE TO OFFSET + SLL 16,A5 ;PUT IN Y POSITION + ADDI TIT_LRX,A5 ;ADD IN THE X FOR THE CORNER +* +* NOW ADJUST FROM TOP OF BOX TO POSITION OF +* 1ST ENTRY. +* + ADDI MB_YWID+HELP_Y_MARGIN,A10 ;Y OF 1ST ENTRY +* +* A10 IS NOW SET FOR RETURN VALUE +* + MOVI COLOR_YELLOW,A9 ;MAKE THESE BOXES YELLOW + + CALLA STD_BORD + MMFM SP,A4,A5,A0,A9 + RETS + +WH_BORD + MMTM SP,A9 + MOVI COLOR_WHITE,A9 + CALLA STD_BORD + MMFM SP,A9 + RETS +; +************************************************************************** +* * +* BINBCD * +* * +* CONVERT BINARY NUMBER IN A0 TO BCD. * +* * +************************************************************************** +BINBCD MMTM SP,A1,A2,A3,A4,A5 + CMPI 99999999,A0 ;ARE WE TOO BIG? + JRLS BBIR ;IN RANGE + MOVI 99999999H,A0 ;RETURN THE LARGEST NUMBER WE HAVE! + JRUC BB_RET + +BBIR MOVK 10,A1 ;ALWAYS DIVIDE BY A0 + CLR A5 ;ACCUMULATE RESULT IN A5 + CLR A4 ;A4 HAS CURRENT SHIFT COUNT + MOVE A0,A3 ; HAS NUMERATOR +DO_BCD_AGAIN + CLR A2 + DIVU A1,A2 ;A2 HAS LEFTOVER...A3 HAS CURRENT DIGIT + SLL A4,A3 ;SHIFT IT CORRECT NUMBER OF TIMES + ADD A3,A5 ;ADD IT INTO RESULT REG + ADDK 4,A4 ;ADD 4 TO SHIFT COUNT + MOVE A2,A3 ;REFRESH NUMERATOR + JRNZ DO_BCD_AGAIN + + MOVE A5,A0 ;PUT OUT RESULT +BB_RET MMFM SP,A1,A2,A3,A4,A5 + RETS + +************************************************************************** +* * +* BCDBIN * +* * +* THIS TURNS A BCD NUMBER (IN A0) INTO A BINARY * +* NUMBER. * +* * +************************************************************************** +BCDBIN MMTM SP,A1,A2,A3,A4,A5 ;WORK REGGIES. + CLR A2 ;ACCUMULATE IN A2 + movk 1,a3 ;Current factor is 1. + movk 10,a4 ;Save some movi insts later + movk 16,a5 ;Divide it down by 16 at a time +BCBLOOP MOVE A0,A1 ;DIVIDEND IN + JRZ BCBDONE ;ALL UNITS EXHAUSTED! + CLR A0 + DIVU A5,A0 ;DIVIDE BY 10H...(REMAINDER IN A1) + MPYU A3,A1 ;TIMES POSITION FACTOR + ADD A1,A2 ;INTO ACCUMULATION REGISTER + MPYU A4,A3 ;NEXT DIGIT IS WORTH 10 TIMES THIS ONE + JRUC BCBLOOP + +BCBDONE MOVE A2,A0 ;RETURN RESULT IN A0 + MMFM SP,A1,A2,A3,A4,A5 ;WORK REGGIES. + RETS + + +**** DATA SECTION BEGINS **** + + .DATA +* +* GAME ADJUSTMENT +* +* THE FOLLOWING STRUCTURES ARE FOR EACH ADJUSTMENT +* +* AD_ROUT EQU 0 ;LONG...ROUTINE TO RUN WHEN SELECTED. +* AD_TITLE EQU AD_ROUT+LONG_SIZE ;LONG...POINTER TO TITLE FOR RIGHT COLUMN +* AD_HELP EQU AD_TITLE+LONG_SIZE ;LONG...POINT TO HELP STRUCT FOR EXPLANATION +* AD_CMOS EQU AD_HELP+LONG_SIZE ;WORD...GET_ADJ / PUT_ADJ NUMBER. +* AD_MIN EQU AD_CMOS+WORD_SIZE ;LONG...MINIMUM VALUE FOR ADJ. +* AD_MAX EQU AD_MIN+LONG_SIZE ;LONG...MAXIMUM VALUE FOR ADJ. +* AD_DELTA EQU AD_MAX+LONG_SIZE ;LONG...UNITS BETWEEN VALUES. +* AD_ZEQU EQU AD_DELTA+LONG_SIZE ;LONG...NUMBER TO STORE IN MEMORY AS ZERO +* AD_NAMEIT EQU AD_HYPER+LONG_SIZE ;LONG...ROUTINE TO PRINT VALUES. +* AD_WRAP EQU AD_NAMEIT+LONG_SIZE ;WORD...NON ZERO TO WRAP FROM HIGHEST TO LOWEST +* AD_NAMPTR EQU AD_WRAP+WORD_SIZE ;LONG...POINTER TO DATA FOR NAMEIT ROUTINE +* +DO_PRICE + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_PRICE ;POINTER TO HEADER MESSAGE + .LONG HELP_PRICE ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJPRICE ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG CS_ENTS ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG COIN_SET ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;WRAP AROUND ON COIN MODES + .LONG 0 ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_PRICE ;POINTER TO HEADER MESSAGE + +DO_MULT + .LONG MULT_ADJ ;ROUTINE TO RUN + .LONG MESS_MULT + .LONG HELP_MULT + .WORD ADJPRICE ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG CS_ENTS ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG MULT_VAL ;Routine for showing current value + .WORD WRAP_VAL ;WRAP AROUND ON COIN MODES + .LONG 0 ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_MULT + +DO_PARAM + .LONG PRICE_ADJ ;ROUTINE TO RUN + .LONG MESS_PARAM ;POINTER TO HEADER MESSAGE + .LONG HELP_PARAM ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJPRICE ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG CS_ENTS ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG PARAM_VAL ;Routine for showing current value + .WORD WRAP_VAL ;WRAP AROUND ON COIN MODES + .LONG 0 ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_PARAM ;POINTER TO HEADER MESSAGE + +*MECHANICAL COIN COUNTER ADJUST + +DO_CNTR + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_CNTR ;POINTER TO HEADER MESSAGE + .LONG HELP_CNTR ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCNTR ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 3 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD 0 ;DON'T WRAP AROUND + .LONG LIST_CNTR ;JUST SHOW THE NUMBER + .LONG MESS_CNTR ;POINTER TO HEADER MESSAGE + +;DO_HEAD: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_HEAD ;POINTER TO HEADER MESSAGE +; .LONG HELP_HEAD ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJHEADSZ ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 1 ;MINIMUM VALUE +; .LONG 2 ;MAXIMUM VALUE +; .LONG 1 ;MOVE UP AND DOWN BY 1'S +; .LONG 0 ;DON'T SUB ZERO FOR ANY +; .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. +; .WORD 0 ;DON'T WRAP AROUND +; .LONG LIST_HEAD ;LIST OF MESSAGES FOR THIS ADJ. +; .LONG MESS_HEAD ;POINTER TO HEADER MESSAGE + +DO_DIFF: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_DIFF ;POINTER TO HEADER MESSAGE + .LONG HELP_DIFF ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJDIFF ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE +; .LONG 5 ;MAXIMUM VALUE + .LONG 10 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD 0 ;DON'T WRAP AROUND + .LONG LIST_DIFF ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_DIFF ;POINTER TO HEADER MESSAGE + +DO_SPEEDS: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_SPEEDS ;POINTER TO HEADER MESSAGE + .LONG HELP_SPEEDS ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJSPEED ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 5 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD 0 ;DON'T WRAP AROUND + .LONG LIST_SPEEDS ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_SPEEDS ;POINTER TO HEADER MESSAGE + +;DO_FULLG: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_FULLG ;POINTER TO HEADER MESSAGE +; .LONG HELP_FULLG ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJFULLG ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 4 ;MINIMUM VALUE +; .LONG 16 ;MAXIMUM VALUE +; .LONG 1 ;MOVE UP AND DOWN BY 1'S +; .LONG 0 ;DON'T SUB ZERO FOR ANY +; .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. +; .WORD 0 ;DON'T WRAP AROUND +; .LONG LIST_FULLG ;LIST OF MESSAGES FOR THIS ADJ. +; .LONG MESS_FULLG ;POINTER TO HEADER MESSAGE + +;DO_WINM: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_WINM ;POINTER TO HEADER MESSAGE +; .LONG HELP_WINM ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJWINMODE ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 0 ;MINIMUM VALUE +; .LONG 1 ;MAXIMUM VALUE +; .LONG 1 ;MOVE UP AND DOWN BY 1'S +; .LONG 0 ;DON'T SUB ZERO FOR ANY +; .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. +; .WORD WRAP_VAL ;DON'T WRAP AROUND +; .LONG LIST_WINM ;LIST OF MESSAGES FOR THIS ADJ. +; .LONG MESS_WINM ;POINTER TO HEADER MESSAGE +; +; +;DO_COMPASS: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_COMPASS ;POINTER TO HEADER MESSAGE +; .LONG HELP_COMPASS ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJCOMPASS ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 0 ;MINIMUM VALUE +; .LONG 1 ;MAXIMUM VALUE +; .LONG 1 ;MOVE UP AND DOWN BY 1'S +; .LONG 0 ;DON'T SUB ZERO FOR ANY +; .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. +; .WORD WRAP_VAL ;DON'T WRAP AROUND +; .LONG LIST_COMPASS ;LIST OF MESSAGES FOR THIS ADJ. +; .LONG MESS_COMPASS ;POINTER TO HEADER MESSAGE + + +;DO_EASY: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_EASY ;POINTER TO HEADER MESSAGE +; .LONG HELP_EASY ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJBUYIN ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 0 ;MINIMUM VALUE +; .LONG 1 ;MAXIMUM VALUE +; .LONG 1 ;MOVE UP AND DOWN BY 250'S +; .LONG 0 ;DON'T SUB ZERO FOR ANY +; .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. +; .WORD WRAP_VAL ;WRAP AROUND +; .LONG LIST_NOYES ;LIST OF MESSAGES FOR THIS ADJ. +; .LONG MESS_EASY ;POINTER TO HEADER MESSAGE + +;DO_LIVES: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_LIVES ;POINTER TO HEADER MESSAGE +; .LONG HELP_LIVES ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJLIVES ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 1 ;MINIMUM VALUE +; .LONG 7 ;MAXIMUM VALUE +; .LONG 1 ;MOVE UP AND DOWN BY 1'S +; .LONG 0 ;DON'T SUB ZERO FOR ANY +; .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. +; .WORD 0 ;DON'T WRAP AROUND +; .LONG LIST_LIVES ;LIST OF MESSAGES FOR THIS ADJ. +; .LONG MESS_LIVES ;POINTER TO HEADER MESSAGE +; +;DO_ROCKS: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_ROCKS ;POINTER TO HEADER MESSAGE +; .LONG HELP_ROCKS ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJROCKS ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 1 ;MINIMUM VALUE +; .LONG 10 ;MAXIMUM VALUE +; .LONG 1 ;MOVE UP AND DOWN BY 1'S +; .LONG 0 ;DON'T SUB ZERO FOR ANY +; .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. +; .WORD 0 ;DON'T WRAP AROUND +; .LONG LIST_ROCKS ;LIST OF MESSAGES FOR THIS ADJ. +; .LONG MESS_ROCKS ;POINTER TO HEADER MESSAGE + +;DO_EXTRA: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_EXTRA ;POINTER TO HEADER MESSAGE +; .LONG HELP_EXTRA ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJEXTRA ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 25000H ;MINIMUM VALUE (25000 IS "OFF" 50000 IS MIN) +; .LONG 500000H ;MAXIMUM VALUE +; .LONG 25000H ;MOVE UP AND DOWN BY 25K AT A CRACK'S +; .LONG 25000H ;SUBSTITUTE ZERO FOR 25000H +; .LONG HEX_OR_MESS ;HEX WITH COMMAS...OR OFF IF SET TO LOWEST VALUE +; .WORD WRAP_VAL+BCD_VAL ;ALLOW WRAP AROUND +; .LONG MESS_OFF ;NO ANCILLARY INFO. +; .LONG MESS_EXTRA ;POINTER TO HEADER MESSAGE + +;DO_LAST: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_LAST ;POINTER TO HEADER MESSAGE +; .LONG HELP_LAST ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJLAST ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 00H ;MINIMUM VALUE (0 IS "OFF" 100000 IS MIN) +; .LONG 5000000H ;MAXIMUM VALUE 5 MIL +; .LONG 100000H ;MOVE UP AND DOWN BY 100K AT A CRACK'S +; .LONG 00H ;SUBSTITUTE ZERO FOR ZERO +; .LONG HEX_OR_MESS ;HEX WITH COMMAS...OR OFF IF SET TO LOWEST VALUE +; .WORD WRAP_VAL+BCD_VAL ;ALLOW WRAP AROUND +; .LONG MESS_OFF ;NO ANCILLARY INFO. +; .LONG MESS_LAST ;POINTER TO HEADER MESSAGE + +DO_AMODE: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_AMOD2 ;POINTER TO HEADER MESSAGE + .LONG HELP_AMODE ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJMUSIC ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;WRAP AROUND + .LONG LIST_AMODE ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_AMODE ;POINTER TO HEADER MESSAGE + +DO_AHSRES: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_HSR2 ;POINTER TO HEADER MESSAGE + .LONG HELP_AHSRES ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJHSRES ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 25000 ;MAXIMUM VALUE + .LONG 250 ;MOVE UP AND DOWN BY 250'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG BIN_OR_MESS ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL^HSR_VAL ;WRAP AROUND AND RESET HSC IF TOUCHED + .LONG MESS_OFF ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_AHSRES ;POINTER TO HEADER MESSAGE + +* +* THESE ARE ALL FOR THE CUSTOM PRICING MENU +* +COINBITS: EQU WRAP_VAL+VIRG_VAL+SIX_VAL + +DO_LCOIN: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_LCU ;POINTER TO HEADER MESSAGE + .LONG HELP_LCU ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJLMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_LCU ;POINTER TO HEADER MESSAGE + +DO_CCOIN: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CCU ;POINTER TO HEADER MESSAGE + .LONG HELP_CCU ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_CCU ;POINTER TO HEADER MESSAGE + +DO_RCOIN: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_RCU ;POINTER TO HEADER MESSAGE + .LONG HELP_RCU ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJRMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_RCU ;POINTER TO HEADER MESSAGE +DO_XCOIN: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_XCU ;POINTER TO HEADER MESSAGE + .LONG HELP_XCU ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJXMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_XCU ;POINTER TO HEADER MESSAGE + +DO_TOTALIZER + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_TOTALIZER ;POINTER TO HEADER MESSAGE + .LONG HELP_TOTALIZER ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJTOTALIZER ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;JUST SHOW THE NUMBER + .WORD WRAP_VAL ;WRAP AROUND + .LONG LIST_NOYES ;NO EXTRA INFO NEEDED + .LONG M_TOTALIZER ;POINTER TO HEADER MESSAGE + +DO_LMULT + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_LMULT ;POINTER TO HEADER MESSAGE + .LONG HELP_LMULT ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJLTOTMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_LMULT ;POINTER TO HEADER MESSAGE +DO_RMULT + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_RMULT ;POINTER TO HEADER MESSAGE + .LONG HELP_RMULT ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJRTOTMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_RMULT ;POINTER TO HEADER MESSAGE +DO_CMULT + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CMULT ;POINTER TO HEADER MESSAGE + .LONG HELP_CMULT ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCTOTMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_CMULT ;POINTER TO HEADER MESSAGE +DO_XMULT + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_XMULT ;POINTER TO HEADER MESSAGE + .LONG HELP_XMULT ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJXTOTMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_XMULT ;POINTER TO HEADER MESSAGE + +DO_DBVMULT + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_DBVMULT ;POINTER TO HEADER MESSAGE + .LONG HELP_BMULT ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJBTOTMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_DBVMULT ;POINTER TO HEADER MESSAGE + +DO_DBV: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_DBV ;POINTER TO HEADER MESSAGE + .LONG HELP_DBV ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJDBVMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_DBV ;POINTER TO HEADER MESSAGE + +DO_UC: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_UC ;POINTER TO HEADER MESSAGE + .LONG HELP_UC ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCUNIT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_UC ;POINTER TO HEADER MESSAGE + +DO_UB: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_UB ;POINTER TO HEADER MESSAGE + .LONG HELP_UB ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJBUNIT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG BIN_OR_MESS ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG M_NOBONUS ;NO EXTRA INFO NEEDED + .LONG M_UB ;POINTER TO HEADER MESSAGE + +DO_UM: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_UM2 ;POINTER TO HEADER MESSAGE + .LONG HELP_UM ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJMUNIT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG BIN_OR_MESS ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG M_NOMIN ;NO EXTRA INFO NEEDED + .LONG M_UM ;POINTER TO HEADER MESSAGE + +CREDBITS: EQU VIRG_VAL + +DO_CST: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CST ;POINTER TO HEADER MESSAGE + .LONG HELP_CS ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCSTRT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 4 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_CST ;POINTER TO HEADER MESSAGE + +DO_CONT: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CONT2 ;POINTER TO HEADER MESSAGE + .LONG HELP_CC ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCCONT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 4 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_CONT ;POINTER TO HEADER MESSAGE + +DO_CRFR: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CRFR2 ;POINTER TO HEADER MESSAGE + .LONG HELP_CRFR ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJFRAC ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1 + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;WRAP AROUND + .LONG LIST_NOYES ;LIST OF MESSAGES FOR THIS ADJ. + .LONG M_CRFR ;POINTER TO HEADER MESSAGE + +DO_CPD: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CPD ;POINTER TO HEADER MESSAGE + .LONG HELP_CPD ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCDIV ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 20 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG BIN_OR_MESS ;JUST SHOW THE NUMBER + .WORD 0 ;NO WRAP AROUND + .LONG M_NO_COL ;NO EXTRA INFO NEEDED + .LONG M_CPD ;POINTER TO HEADER MESSAGE + +DO_MAX: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_MAX ;POINTER TO HEADER MESSAGE + .LONG HELP_MAX ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJMAXC ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 5 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD WRAP_VAL ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_MAX ;POINTER TO HEADER MESSAGE + +DO_FREE: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_FREE ;POINTER TO HEADER MESSAGE + .LONG HELP_FREE ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJFREPL ;CMOS ADJUSTMENT WE'RE SETTING +* +* G_FREE: REPLACE ".LONG 0" WITH ".LONG 1" +* + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 250'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;WRAP AROUND +* +* G_FREE: REPLACE ".LONG LIST_NOYES" WITH ".LONG LIST_YESNO" +* + .LONG LIST_NOYES ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_FREE ;POINTER TO HEADER MESSAGE + +DO_CTIT: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_CTIT ;POINTER TO HEADER MESSAGE + .LONG CTIT_HELP ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJNOCPAG ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;WRAP AROUND + .LONG LIST_YESNO ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_CTIT ;POINTER TO HEADER MESSAGE + +* +* ADJUSTMENT MENU IS SKINNY..LEAVING ROOM FOR EXPLANATION. +* +AM_BDY EQU -2 +AM_WID EQU 0A7H +AM_X EQU TIT_ULX+GAP+MB_XWID+(AM_WID/2)+C_KLUDGE +AM_Y EQU INST_LRY+BOX_YGAP+MB_YWID+GAP-AM_BDY +* +* RIGHT MARGIN OF ADJUST MENU BOX +* +AM_RX EQU TIT_ULX+(2*GAP)+AM_WID+(2*MB_XWID) +* +* LEFT MARGIN OF HELP BOX +* +AM_HX EQU AM_RX+BOX_XGAP + +MEN_ADJ: + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG M_GADJ ;TITLE + .WORD COLOR_WHITE ;COLOR OF TITLE + .WORD AM_X ;UL X + .WORD AM_Y ;UL Y + .WORD 12 + .WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED + .WORD 12 ;HEIGHT OF SELECTION BAR + .WORD AM_BDY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD AM_WID ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG MESS_PRICE,DO_PRICE,ADJ_HELP + .LONG MESS_MULT,DO_MULT,ADJ_HELP + .LONG MESS_PARAM,DO_PARAM,ADJ_HELP + .LONG MESS_FREE,DO_FREE,ADJ_HELP ;FREE PLAY + .LONG MESS_DIFF,DO_DIFF,ADJ_HELP + .LONG MESS_SPEEDS,DO_SPEEDS,ADJ_HELP + .LONG MESS_AMODE,DO_AMODE,ADJ_HELP + .LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG 0 ;END + +MEN_CUST: + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG M_CUSPRI ;TITLE + .WORD COLOR_BLUE ;COLOR OF TITLE + .WORD AM_X ;UL X + .WORD AM_Y ;UL Y + .WORD 11 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 12 ;HEIGHT OF SELECTION BAR + .WORD AM_BDY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD AM_WID ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_AM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG M_LCU,DO_LCOIN,ADJ_HELP ;LEFT SLOT UNITS + .LONG M_RCU,DO_RCOIN,ADJ_HELP ;RIGHT SLOT UNITS + .LONG M_CCU,DO_CCOIN,ADJ_HELP ;CENTER SLOT UNITS + .LONG M_XCU,DO_XCOIN,ADJ_HELP ;RIGHT SLOT UNITS + .LONG M_DBV,DO_DBV,ADJ_HELP ;DOLLAR BILL VALIDATOR + .LONG M_UC,DO_UC,ADJ_HELP ;UNITS FOR CREDIT + .LONG M_UB,DO_UB,ADJ_HELP ;UNITS FOR BONUS + .LONG M_UM,DO_UM,ADJ_HELP ;MINIMUM UNITS + .LONG M_CST,DO_CST,ADJ_HELP ;CREDITS REQUIRED TO START + .LONG M_CONT,DO_CONT,ADJ_HELP ;CREDITS REQUIRED TO CONTINUE + .LONG MESS_CTIT,DO_CTIT,ADJ_HELP ;COIN PAGE HELP LINE + .LONG M_CRFR,DO_CRFR,ADJ_HELP ;SHOW CREDIT FRACTIONS + .LONG M_CPD,DO_CPD,ADJ_HELP ;COINS PER DOLLAR + .LONG M_MAX,DO_MAX,ADJ_HELP ;MAXIMUM CREDITS + .LONG 0 + +MEN_MULT: + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG M_MULT ;TITLE + .WORD COLOR_BLUE ;COLOR OF TITLE + .WORD AM_X ;UL X + .WORD AM_Y ;UL Y + .WORD 11 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 12 ;HEIGHT OF SELECTION BAR + .WORD AM_BDY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD AM_WID ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_AM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG M_TOTALIZER,DO_TOTALIZER,ADJ_HELP + .LONG M_LMULT,DO_LMULT,ADJ_HELP ;LEFT SLOT UNITS + .LONG M_RMULT,DO_RMULT,ADJ_HELP ;LEFT SLOT UNITS + .LONG M_CMULT,DO_CMULT,ADJ_HELP ;LEFT SLOT UNITS + .LONG M_XMULT,DO_XMULT,ADJ_HELP ;LEFT SLOT UNITS + .LONG M_DBVMULT,DO_DBVMULT,ADJ_HELP ;LEFT SLOT UNITS + .LONG 0 +M_MULT + .STRING "CUSTOM MULTIPLIERS" + .BYTE 0 + .EVEN + +M_GADJ + .STRING "GAME ADJUSTMENT" + .BYTE 0 + .EVEN + +M_CUSPRI: + .STRING "CUSTOM PRICING" + .BYTE 0 + .EVEN + +MESS_FREE: + .STRING "FREE PLAY" + .BYTE 0 + .EVEN + +MESS_PRICE: + .STRING "STANDARD PRICING" + .BYTE 0 + .EVEN +MESS_MULT: + .STRING "CUSTOM MULTIPLIERS" + .BYTE 0 + .EVEN +MESS_PARAM: + .STRING "CUSTOM PRICING" + .BYTE 0 + .EVEN +MESS_DIFF: + .STRING "GAME DIFFICULTY" + .BYTE 0 + .EVEN +;MESS_HEAD: +; .STRING "PLAYER HEAD SIZE" +; .BYTE 0 +; .EVEN +MESS_SPEEDS: + .string "AVERAGE GAME TIME",0 + .even +;MESS_FULLG: +; .string "CREDITS FOR FULLGAME",0 +; .even +;MESS_WINM: +; .string "4 PLAYER WIN BONUS",0 +; .even +; +;MESS_COMPASS: +; .string "COMPUTER ASSISTANCE",0 +; .even + +MESS_CNTR: + .STRING "COIN COUNTER MODE" + .BYTE 0 + .EVEN +MESS_CTIT: + .STRING "COIN PAGE HELP" + .BYTE 0 + .EVEN +;MESS_LIVES: +; .STRING "LIVES PER PLAY" +; .BYTE 0 +; .EVEN +;MESS_EASY: +; .STRING "EASY BUY-IN" +; .BYTE 0 +; .EVEN +;MESS_ROCKS: +; .STRING "POWER-UPS PER PLAY" +; .BYTE 0 +; .EVEN +;MESS_EXTRA: +; .STRING "EXTRA MAN EVERY" +; .BYTE 0 +; .EVEN +;MESS_LAST: +; .STRING "LAST EXTRA MAN" +; .BYTE 0 +; .EVEN +MESS_AMODE: + .STRING "ATTRACT-MODE SOUND" ;FOR MENU + .BYTE 0 + .EVEN +MESS_AMOD2: + .STRING "A-MODE SOUND" ;FOR TITLE BOX (SHORTER VER.) + .BYTE 0 + .EVEN +MESS_AHSRES: + .STRING "AUTO HIGH SCORE RESET" ;FOR MENU + .BYTE 0 + .EVEN +MESS_HSR2: + .STRING "AUTO H.S. RESET" + .BYTE 0 + .EVEN + + +M_LCU: + .STRING "LEFT CHUTE (1) UNITS" + .BYTE 0 + .EVEN +M_CCU: + .STRING "CHUTE (3) UNITS" + .BYTE 0 + .EVEN +M_RCU: + .STRING "RIGHT CHUTE (2) UNITS" + .BYTE 0 + .EVEN +M_XCU: + .STRING "CHUTE (4) UNITS" + .BYTE 0 + .EVEN +M_TOTALIZER + .STRING "TOTALIZER MODE" + .BYTE 0 + .EVEN +M_LMULT + .STRING "CHUTE 1 TOTALIZER" + .BYTE 0 + .EVEN +M_RMULT + .STRING "CHUTE 2 TOTALIZER" + .BYTE 0 + .EVEN +M_CMULT + .STRING "CHUTE 3 TOTALIZER" + .BYTE 0 + .EVEN +M_XMULT + .STRING "CHUTE 4 TOTALIZER" + .BYTE 0 + .EVEN +M_DBVMULT + .STRING "DBV TOTALIZER" + .BYTE 0 + .EVEN +M_DBV: + .STRING "DBV UNITS" + .BYTE 0 + .EVEN +M_UC: + .STRING "UNITS / CREDIT" + .BYTE 0 + .EVEN +M_UB: + .STRING "UNITS / BONUS" + .BYTE 0 + .EVEN +M_UM: + .STRING "MIN. UNITS REQUIRED" + .BYTE 0 + .EVEN +M_UM2: + .STRING "MINIMUM UNITS" + .BYTE 0 + .EVEN +M_CST: + .STRING "CREDITS TO START" + .BYTE 0 + .EVEN +M_CONT: + .STRING "CREDITS TO CONTINUE" + .BYTE 0 + .EVEN +M_CONT2: + .STRING "CRED. TO CONTINUE" + .BYTE 0 + .EVEN +M_CRFR: + .STRING "SHOW CREDIT FRACTIONS" + .BYTE 0 + .EVEN +M_CRFR2: + .STRING "CREDIT FRACTIONS" + .BYTE 0 + .EVEN +M_CPD: + .STRING "COINS PER BILL" + .BYTE 0 + .EVEN +M_MAX: + .STRING "MAXIMUM CREDITS" + .BYTE 0 + .EVEN +MESS_AM: + .STRING "RETURN TO ADJ. MENU" + .BYTE 0 + .EVEN +* +* THIS IS THE ADJUSTMENT NAME IN THE UPPER RIGHT +* BOX +* +ADJT_Y EQU INST_ULY+9 ;CENTER IN THE BOX +ADJT_SETUP: + MESS_MAC RD7FONT,SPACING20,200,ADJT_Y,COLOR_LF,STRCNRM,0 + +CSET_Y EQU CUR_ULY+7 + .EVEN + +MOC_Y1 EQU CSET_Y+20 +MOC_Y2 EQU MOC_Y1+10 +MOC_Y3 EQU MOC_Y2+10 + +MESS_OPEN_OR_CANCEL + MESS_MAC RD7FONT,SPACING20,AM_X,MOC_Y1,COLOR_LF,STRCNRM,0 + .STRING "OPEN COIN DOOR, OR" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING20,AM_X,MOC_Y2,COLOR_LF,STRCNRM,0 + .STRING "PRESS ANY BUTTON" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING20,AM_X,MOC_Y3,COLOR_LF,STRCNRM,0 + .STRING "TO CANCEL" + .BYTE 0,0 + .EVEN + +IN_Y1 EQU CUR_ULY+32 +IN_Y2 EQU IN_Y1+12 +IN_Y3 EQU IN_Y2+39 +IN_Y4 EQU IN_Y3+12 + +INST_TO_ADJ + MESS_MAC RD7FONT,SPACING07,AM_X,IN_Y1,COLOR_WHITE,STRCNRM,0 + .STRING "MODIFY VALUE WITH" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,AM_X,IN_Y2,COLOR_WHITE,STRCNRM,0 + .STRING "ANY STICK" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,AM_X,IN_Y3,COLOR_WHITE,STRCNRM,0 + .STRING "PRESS ANY BUTTON" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,AM_X,IN_Y4,COLOR_WHITE,STRCNRM,0 + .STRING "WHEN VALUE IS CORRECT." + .BYTE 0,0 + .EVEN +* +* FOR THE WORD UNDER "ADJUSTING" WHILE THE ADJUSTING +* IS ACTUALLY BEING DONE +* +ADNOW_Y1 EQU CUR_ULY-35 +ADNOW_Y2 EQU ADNOW_Y1+12 + +MES_ADJUSTING + MESS_MAC RD7FONT,SPACING07,AM_X,ADNOW_Y1,COLOR_LF,STRCNRM,0 + .STRING "ADJUSTING" + .BYTE 0,0 + .EVEN + +MES_ADNAME + MESS_MAC RD7FONT,SPACING07,AM_X,ADNOW_Y2,COLOR_LF,STRCNRM,0 + +INSTR_Y EQU INST_ULY+5 +INSTR_2Y EQU INSTR_Y+10 + +ADJ_ADV + MESS_MAC RD7FONT,SPACING07,AM_X,INSTR_Y,COLOR_BPR,STRCNRM,0 + .STRING "SELECT WITH ANY STICK" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,AM_X,INSTR_2Y,COLOR_BPR,STRCNRM,0 + .STRING "PRESS A BUTTON TO MODIFY" + .BYTE 0,0 + .EVEN + +AAY EQU IN_Y1+19H + +ADJ_ARROW + MESS_MAC RD7FONT,0FFFDH,AM_X,AAY,COLOR_LF,STRCNRM,0 + .STRING "-----> -----> -----> -----> ----->" + .BYTE 0,0 + .EVEN + +* IF COIN SETTINGS DON'T NEATLY FIT INTO +* A MODE + +MESS_TAMPERED + .STRING "CUSTOM" + .BYTE 0 + .EVEN + +MESS_DIP + .STRING "DIPSWITCH",0 + .EVEN + +M_MULTVAL + .STRING "MULTIPLIER VALUES" + .BYTE 0 + .EVEN +M_MULTVAL1 + .STRING "CHUTE 1 MULTIPLIER : " + .BYTE 0 + .EVEN +M_MULTVAL2 + .STRING "CHUTE 2 MULTIPLIER : " + .BYTE 0 + .EVEN +M_MULTVAL3 + .STRING "CHUTE 3 MULTIPLIER : " + .BYTE 0 + .EVEN +M_MULTVAL4 + .STRING "CHUTE 4 MULTIPLIER : " + .BYTE 0 + .EVEN +M_MULTVAL5 + .STRING "VALIDATOR MULTIPLIER : " + .BYTE 0 + .EVEN + + +M_SLOTVAL + .STRING "S1 S2 S3 S4 DBV" + .BYTE 0 + .EVEN + +MESS_GP .STRING "GAME PRICING:" + .BYTE 0 + .EVEN +MESS_FP .STRING "FREE PLAY:" + .BYTE 0 + .EVEN +MESS_MAX .STRING "MAXIMUM CREDITS:" + .BYTE 0 + .EVEN + +M_CTS_PL .STRING "CREDITS TO START:" + .BYTE 0 + .EVEN +M_CTC_PL .STRING "CREDITS TO CONTINUE:" + .BYTE 0 + .EVEN + +************************************************************************** +* * +* HELP STRUCTURES FOR MAIN ADJUSTMENT MENU! * +* * +************************************************************************** +;HELP_HEAD +; .WORD 1 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG DHH_0 +; .LONG DHH_1 +; .LONG M_NULL +; .LONG DHH_3 +; .LONG DHH_4 +; .LONG DHH_5 +HELP_DIFF + .WORD 1 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG DH_0 + .LONG DH_1 + .LONG M_NULL + .LONG DH_3 + .LONG DH_4 + .LONG DH_5 +HELP_SPEEDS + .WORD 1 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG SH_0 + .LONG SH_1 + .LONG M_NULL + .LONG SH_3 + .LONG SH_4 + .LONG SH_5 +;HELP_FULLG +; .WORD 1 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG FGH_0 +; .LONG FGH_1 +; .LONG M_NULL +; .LONG FGH_3 +; .LONG FGH_4 +; .LONG FGH_5 +;HELP_WINM +; .WORD 1 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG WGH_0 +; .LONG WGH_1 +; .LONG M_NULL +; .LONG WGH_3 +; .LONG WGH_4 +; .LONG WGH_5 +;HELP_COMPASS +; .WORD 1 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG CPH_0 +; .LONG CPH_1 +; .LONG CPH_2 +; .LONG CPH_3 +; .LONG M_NULL +; .LONG CPH_4 + +HELP_CNTR + .WORD 1 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG CNTRH_0 + .LONG CNTRH_1 + .LONG M_NULL + .LONG CNTRH_3 + .LONG CNTRH_4 + .LONG CNTRH_5 + +HELP_PRICE + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 4 ;5 ENTRIES + .LONG PH_0 + .LONG PH_1 + .LONG PH_2 + .LONG PH_3 + +HELP_MULT + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 3 ;5 ENTRIES + .LONG MH_0 + .LONG MH_1 + .LONG MH_2 + +HELP_DIP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_RED ;COLOR + .WORD 3 + .LONG DIH_0 + .LONG DIH_1 + .LONG DIH_2 + +HELP_PARAM + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;5 ENTRIES + .LONG PP_0 + .LONG PP_1 + .LONG PP_2 + .LONG PP_3 + .LONG PP_4 + .LONG PP_5 + +;HELP_EASY +; .WORD 0 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 4 ;4 ENTRIES +; .LONG EH_0 +; .LONG EH_1 +; .LONG M_NULL +; .LONG EH_2 + +;HELP_LIVES +; .WORD 0 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG LH_0 +; .LONG LH_1 +; .LONG LH_2 +; .LONG LH_3 +; .LONG M_NULL +; .LONG LH_4 + +;HELP_ROCKS +; .WORD 0 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG RH_0 ;UNIQUE LINE FOR ROCKETS +; .LONG LH_1 ;SAME WORDING AS LIVES +; .LONG LH_2 +; .LONG LH_3 +; .LONG M_NULL +; .LONG RH_5 ;FACTORY OF 5 + +;HELP_EXTRA +; .WORD 0 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG EXH_0 ;UNIQUE LINE FOR ROCKETS +; .LONG EXH_1 ;SAME WORDING AS LIVES +; .LONG EXH_2 +; .LONG EXH_3 +; .LONG M_NULL +; .LONG EXH_4 ;FACTORY OF 100,000 + +;HELP_LAST +; .WORD 0 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG LMH_0 +; .LONG LMH_1 +; .LONG LMH_2 +; .LONG M_NULL +; .LONG LMH_3 +; .LONG LMH_4 + +HELP_AMODE + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 5 ;6 ENTRIES + .LONG HAM_1 + .LONG HAM_2 + .LONG HAM_3 + .LONG M_NULL + .LONG HAM_4 + +HELP_AHSRES + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG HAH_1 + .LONG HAH_2 + .LONG HAH_3 + .LONG HAH_4 + .LONG M_NULL + .LONG HAH_5 + +HELP_FREE + .WORD 0 + .WORD COLOR_BLUE + .WORD 6 + .LONG FP_M1 + .LONG FP_M2 + .LONG FP_M3 + .LONG FP_M4 + .LONG M_NULL + .LONG FP_M5 + +CTIT_HELP + .WORD 0 + .WORD COLOR_WHITE + .WORD 5 + .LONG CT_M1 + .LONG CT_M2 + .LONG CT_M3 + .LONG CT_M4 + .LONG CT_M5 + +HELP_LCU + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG LC_M1 + .LONG LC_M2 + .LONG LC_M3 + .LONG LC_M4 + .LONG LC_M5 + .LONG LC_M6 + +HELP_CCU + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG LC_M1 + .LONG LC_M2 + .LONG LC_M3 + .LONG LC_M4 + .LONG CC_M5 + .LONG LC_M6 + +HELP_RCU + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG LC_M1 + .LONG LC_M2 + .LONG LC_M3 + .LONG LC_M4 + .LONG RC_M5 + .LONG LC_M6 +HELP_XCU + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG LC_M1 + .LONG LC_M2 + .LONG LC_M3 + .LONG LC_M4 + .LONG XC_M5 + .LONG LC_M6 + +HELP_LMULT + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MZ_M1 + .LONG MZ_M2 + .LONG MZ_C1 + +HELP_RMULT + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MZ_M1 + .LONG MZ_M2 + .LONG MZ_C2 + +HELP_CMULT + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MZ_M1 + .LONG MZ_M2 + .LONG MZ_C3 + +HELP_XMULT + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MZ_M1 + .LONG MZ_M2 + .LONG MZ_C4 + +HELP_BMULT + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MZ_M1 + .LONG MZ_M2 + .LONG MZ_DB + +HELP_TOTALIZER + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MR_M1 + .LONG MR_M2 + .LONG MR_M3 +HELP_DBV + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG LC_M1 + .LONG LC_M2 + .LONG LC_M3 + .LONG LC_M4 + .LONG DBV_M5 + .LONG LC_M6 + +HELP_UC .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG UC_M1 + .LONG UC_M2 + .LONG UC_M3 + +HELP_UB .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG UB_M1 + .LONG UB_M2 + .LONG UB_M3 + +HELP_UM .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG UM_M1 + .LONG UM_M2 + .LONG UM_M3 + + +HELP_CS .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG CS_M1 + .LONG CS_M2 + .LONG CS_M3 + +HELP_CC .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG CS_M1 + .LONG CS_M2 + .LONG CC_M3 + +HELP_CRFR + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG FR_M1 + .LONG FR_M2 + .LONG FR_M3 + .LONG M_NULL + .LONG FR_M4 + .LONG FR_M5 + +HELP_CPD .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG CPD_M1 + .LONG CPD_M2 + .LONG CPD_M3 + .LONG CPD_M4 + .LONG CPD_M5 + .LONG CPD_M6 + +HELP_MAX .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG MC_M1 + .LONG MC_M2 + .LONG MC_M3 + .LONG MC_M4 + .LONG M_NULL + .LONG MC_M5 + +************************************************************************** +* * +* HELP MESSAGES FOR MAIN ADJUSTMENT MENU! * +* * +************************************************************************** + +CNTRH_0 .STRING "THIS CONTROLS MECHANICAL" + .BYTE 0 + .EVEN +CNTRH_1 .STRING "COIN COUNTER MODE" + .BYTE 0 + .EVEN +CNTRH_3 .STRING "CNTR1 = MULT OF LOW COIN: 1" + .BYTE 0 + .EVEN +CNTRH_4 .STRING "CNTR1 = 1 COUNT/COIN: 2" + .BYTE 0 + .EVEN +CNTRH_5 .STRING "CNTR1=LCOIN, CNTR2=RCOIN: 3" + .BYTE 0 + .EVEN + +;DHH_0 .STRING "THIS CONTROLS HEAD SIZE",0 +; .EVEN +;DHH_1 .STRING "FOR PLAYERS IN THE GAME.",0 +; .EVEN +;DHH_3 .STRING "NORMAL SIZE: 1",0 +; .EVEN +;DHH_4 .STRING "LARGE SIZE: 2",0 +; .EVEN +;DHH_5 .STRING "FACTORY SETTING: 1",0 +; .EVEN +; + +DH_0 .STRING "THIS CONTROLS THE OVERALL" + .BYTE 0 + .EVEN +DH_1 .STRING "DIFFICULTY OF GAME PLAY." +M_NULL .BYTE 0 + .EVEN +DH_3 .STRING "EASIEST SETTING: 1" + .BYTE 0 + .EVEN +DH_4 .STRING "HARDEST SETTING: 10" + .BYTE 0 + .EVEN +DH_5 .STRING "FACTORY SETTING: 5" + .BYTE 0 + .EVEN + + +SH_0 .STRING "THIS CONTROLS SPEED OF CLOCK" + .BYTE 0 + .EVEN +SH_1 .STRING "AND ADJUSTS DAMAGE PER HIT." + .BYTE 0 + .EVEN +SH_3 .STRING "SLOWEST SETTING: 1" + .BYTE 0 + .EVEN +SH_4 .STRING "FASTEST SETTING: 5" + .BYTE 0 + .EVEN +SH_5 .STRING "FACTORY SETTING: 3" + .BYTE 0 + .EVEN + + + +;FGH_0 .STRING "NUMBER OF CREDITS REQUIRED" +; .BYTE 0 +; .EVEN +;FGH_1 .STRING "TO PURCHASE A FULL GAME." +; .BYTE 0 +; .EVEN +;FGH_3 .STRING "MINIMUM CREDITS: 4" +; .BYTE 0 +; .EVEN +;FGH_4 .STRING "MAXIMUM CREDITS: 16" +; .BYTE 0 +; .EVEN +;FGH_5 .STRING "FACTORY SETTING: 8" +; .BYTE 0 +; .EVEN +; +; +;WGH_0 .STRING "BONUS FOR WINNERS IN A ",0 +; .EVEN +;WGH_1 .STRING "FOUR PLAYER GAME.",0 +; .EVEN +;WGH_3 .STRING " ",0 +; .EVEN +;WGH_4 .STRING " ",0 +; .EVEN +;WGH_5 .STRING "FACTORY SETTING: FREE GAME",0 +; .EVEN + + +;CPH_0 .string "COMPUTER KEEPS GAME CLOSE.",0 +; .even +;CPH_1 .string "THIS RESULTS IN MORE",0 +; .even +;CPH_2 .string "EXCITEMENT AND FROM OUR",0 +; .even +;CPH_3 .string "TESTS, HIGHER EARNINGS!",0 +; .even +;CPH_4 .string "FACTORY SETTING: ENABLED",0 +; .even + +MH_0 .STRING "CUSTOMISE THE INTERNAL" + .BYTE 0 + .EVEN +MH_1 .STRING "COIN CHUTE MULTIPLIERS" + .BYTE 0 + .EVEN +MH_2 .STRING "FOR EACH CHUTE." + .BYTE 0 + .EVEN +;MH_3 .STRING "CALCULATIONS" +; .BYTE 0 +; .EVEN + +PH_0 .STRING "SELECT BUILT-IN PRICING" + .BYTE 0 + .EVEN +PH_1 .STRING "MODE, SELECTING COINS" + .BYTE 0 + .EVEN +PH_2 .STRING "PER CREDIT, AND" + .BYTE 0 + .EVEN +PH_3 .STRING "COIN SLOT VALUE." + .BYTE 0 + .EVEN + +DIH_0 .STRING "THIS OPTION IS BEING",0 + .EVEN +DIH_1 .STRING "ADJUSTED FROM DIPSWITCH",0 + .EVEN +DIH_2 .STRING "SETTINGS.",0 + .EVEN + +* +* +;RH_0 .STRING "THE NUMBER OF POWER-UPS" +; .BYTE 0 +; .EVEN + +;RH_5 .STRING "FACTORY SETTING: 5" +; .BYTE 0 +; .EVEN + +;LH_0 .STRING "THE NUMBER OF LIVES" +; .BYTE 0 +; .EVEN +;LH_1 .STRING "A PLAYER RECEIVES" +; .BYTE 0 +; .EVEN +;LH_2 .STRING "EACH TIME HE STARTS" +; .BYTE 0 +; .EVEN +;LH_3 .STRING "OR CONTINUES A GAME." +; .BYTE 0 +; .EVEN +;LH_4 .STRING "FACTORY SETTING: 3" +; .BYTE 0 +; .EVEN + +;EXH_0 .STRING "PLAYERS RECEIVE AN" +; .BYTE 0 +; .EVEN +;EXH_1 .STRING "EXTRA LIFE EACH" +; .BYTE 0 +; .EVEN +;EXH_2 .STRING "TIME THEY SCORE" +; .BYTE 0 +; .EVEN +;EXH_3 .STRING "THIS MANY POINTS." +; .BYTE 0 +; .EVEN +;EXH_4 .STRING "FACTORY SETTING: 100,000" +; .BYTE 0 +; .EVEN + +;LMH_0 .STRING "ONCE A SCORE REACHES" +; .BYTE 0 +; .EVEN +;LMH_1 .STRING "THIS LEVEL, NO EXTRA" +; .BYTE 0 +; .EVEN +;LMH_2 .STRING "MEN WILL BE AWARDED." +; .BYTE 0 +; .EVEN +;LMH_3 .STRING "FACTORY SETTING: OFF" +; .BYTE 0 +; .EVEN +;LMH_4 .STRING "(NO LIMIT ON EXTRA MEN)" +; .BYTE 0 +; .EVEN + +HAM_1 .STRING "THIS DETERMINES WHETHER" + .BYTE 0 + .EVEN +HAM_2 .STRING "THE GAME WILL MAKE SOUNDS" + .BYTE 0 + .EVEN +HAM_3 .STRING "IN THE ATTRACT MODE." + .BYTE 0 + .EVEN +HAM_4 .STRING "FACTORY SETTING: OFF" + .BYTE 0 + .EVEN +HAH_1 .STRING "THE ALL TIME HIGH SCORE" + .BYTE 0 + .EVEN +HAH_2 .STRING "TABLE WILL BE RESET TO" + .BYTE 0 + .EVEN +HAH_3 .STRING "FACTORY VALUES EACH TIME" + .BYTE 0 + .EVEN +HAH_4 .STRING "THIS MANY PLAYS OCCURS." + .BYTE 0 + .EVEN +HAH_5 .STRING "FACTORY SETTING: 5000" + .BYTE 0 + .EVEN + +;HG_1 .STRING "THIS ALLOWS THE GRAPHIC" +; .BYTE 0 +; .EVEN +;HG_2 .STRING "VIOLENCE SHOWN ON SCREEN" +; .BYTE 0 +; .EVEN +;HG_3 .STRING "TO BE ADJUSTED." +; .BYTE 0 +; .EVEN +;HG_4 .STRING "FACTORY SETTING: NORMAL" +; .BYTE 0 +; .EVEN + +FP_M1 .STRING "SETTING FREE PLAY TO" + .BYTE 0 + .EVEN +FP_M2 .BYTE ASCII_DQ + .STRING "YES" + .BYTE ASCII_DQ + .STRING " ALLOWS UNLIMITED" + .BYTE 0 + .EVEN +FP_M3 .STRING "PLAY WITHOUT INSERTING" + .BYTE 0 + .EVEN +FP_M4 .STRING "ANY COINS." + .BYTE 0 + .EVEN +FP_M5 .STRING "FACTORY SETTING: NO" + .BYTE 0 + .EVEN +CT_M1 .STRING "WHENEVER STANDARD PRICING" + .BYTE 0 + .EVEN +CT_M2 .STRING "IS USED, A CORRESPONDING" + .BYTE 0 + .EVEN +CT_M3 .STRING "MESSAGE IS DISPLAYED ON THE" + .BYTE 0 + .EVEN +CT_M4 .STRING "CREDITS SCREEN. SETTING THIS" + .BYTE 0 + .EVEN +CT_M5 .STRING "TO " + .BYTE ASCII_DQ + .STRING "NO" + .BYTE ASCII_DQ + .STRING " DISABLES THE MESSAGE." + .BYTE 0 + .EVEN + +PP_0 .STRING "THIS ALLOWS ADJUSTMENT" + .BYTE 0 + .EVEN +PP_1 .STRING "OF PRICING PARAMETERS" + .BYTE 0 + .EVEN +PP_2 .STRING "(FOR NON-STANDARD MODES)," + .BYTE 0 + .EVEN +PP_3 .STRING "FREE PLAY, MAXIMUM CREDITS," + .BYTE 0 + .EVEN +PP_4 .STRING "CREDITS REQUIRED TO START" + .BYTE 0 + .EVEN +PP_5 .STRING "AND CREDITS TO CONTINUE." + .BYTE 0 + .EVEN + +;EH_0 .STRING "SETTING NOT YET" +; .BYTE 0 +; .EVEN +;EH_1 .STRING "ESTABLISHED" +; .BYTE 0 +; .EVEN +;EH_2 .STRING "FACTORY SETTING: ???" +; .BYTE 0 +; .EVEN + +LC_M1 .STRING "EACH COIN INSERTED ADDS TO" + .BYTE 0 + .EVEN +LC_M2 .STRING "COIN UNITS. THIS ADJUSTMENT" + .BYTE 0 + .EVEN +LC_M3 .STRING "SPECIFIES THE NUMBER OF COIN" + .BYTE 0 + .EVEN +LC_M4 .STRING "UNITS GIVEN FOR EACH" + .BYTE 0 + .EVEN +LC_M5 .STRING "COIN IN LEFT COIN CHUTE." + .BYTE 0 + .EVEN +LC_M6 .STRING "(SEE " + .BYTE ASCII_DQ + .STRING "UNITS / CREDIT" + .BYTE ASCII_DQ + .STRING ")" + .BYTE 0 + .EVEN +CC_M5 .STRING "COIN IN THIRD COIN CHUTE." + .BYTE 0 + .EVEN +RC_M5 .STRING "COIN IN RIGHT COIN CHUTE." + .BYTE 0 + .EVEN +XC_M5 .STRING "COIN IN FOURTH COIN CHUTE." + .BYTE 0 + .EVEN +MZ_M1 .STRING "MODIFIY TOTALIZING" + .BYTE 0 + .EVEN +MZ_M2 .STRING "MULTIPLER VALUE FOR" + .BYTE 0 + .EVEN +MZ_C1 .STRING "CHUTE 1." + .BYTE 0 + .EVEN +MZ_C2 .STRING "CHUTE 2." + .BYTE 0 + .EVEN +MZ_C3 .STRING "CHUTE 3." + .BYTE 0 + .EVEN +MZ_C4 .STRING "CHUTE 4." + .BYTE 0 + .EVEN + +MR_M1 .STRING "TOTALIZER MODE, EITHER." + .BYTE 0 + .EVEN + +MR_M2 .STRING "STANDARD TOTALIZER MODE (NO)" + .BYTE 0 + .EVEN + +MR_M3 .STRING "CUSTOM TOTALIZER MODE (YES)." + .BYTE 0 + .EVEN + +MZ_DB +DBV_M5 .STRING "BILL VALIDATOR." + .BYTE 0 + .EVEN +UC_M1 .STRING "THIS IS THE NUMBER OF COIN" + .BYTE 0 + .EVEN +UC_M2 .STRING "UNITS REQUIRED TO BUY ONE" + .BYTE 0 + .EVEN +UC_M3 .STRING "CREDIT." + .BYTE 0 + .EVEN +UB_M1 .STRING "1 BONUS CREDIT IS AWARDED" + .BYTE 0 + .EVEN +UB_M2 .STRING "AFTER THIS MANY COIN UNITS" + .BYTE 0 + .EVEN +UB_M3 .STRING "HAVE ACCUMULATED." + .BYTE 0 + .EVEN + +UM_M1 .STRING "NO CREDITS WILL BE AWARDED" + .BYTE 0 + .EVEN +UM_M2 .STRING "UNTIL THIS MANY COIN" + .BYTE 0 + .EVEN +UM_M3 .STRING "UNITS HAVE ACCUMULATED." + .BYTE 0 + .EVEN + +CS_M1 .STRING "EACH PLAYER NEEDS THIS" + .BYTE 0 + .EVEN +CS_M2 .STRING "MANY CREDITS TO" + .BYTE 0 + .EVEN +CS_M3 .STRING "BEGIN PLAY." + .BYTE 0 + .EVEN + +CC_M3 .STRING "CONTINUE A GAME." + .BYTE 0 + .EVEN + +FR_M1 .STRING "WHEN SET TO YES," + .BYTE 0 + .EVEN +FR_M2 .STRING "FRACTIONAL CREDITS WILL BE" + .BYTE 0 + .EVEN +FR_M3 .STRING "SEEN ON THE CREDITS SCREEN." + .BYTE 0 + .EVEN +FR_M4 .STRING "FRACTION SHOWN IS:" + .BYTE 0 + .EVEN +FR_M5 .STRING "(COIN UNITS / " + .BYTE ASCII_DQ + .STRING "UNITS/CREDIT" + .BYTE ASCII_DQ + .STRING ")" + .BYTE 0 + .EVEN + +CPD_M1 .STRING "THE DETAILED BOOKKEEPING" + .BYTE 0 + .EVEN +CPD_M2 .STRING "SCREEN SHOWS TOTAL" + .BYTE 0 + .EVEN +CPD_M3 .STRING "COLLECTIONS BASED ON THIS" + .BYTE 0 + .EVEN +CPD_M4 .STRING "MANY COINS PER BILL." + .BYTE 0 + .EVEN +CPD_M5 .STRING "(SET TO ZERO TO DISABLE THE" + .BYTE 0 + .EVEN +CPD_M6 .STRING "DISPLAY OF MONEY TOTALS.)" + .BYTE 0 + .EVEN + +MC_M1 .STRING "THIS IS THE LIMIT FOR" + .BYTE 0 + .EVEN +MC_M2 .STRING "THE CREDITS COUNTER." + .BYTE 0 + .EVEN +MC_M3 .STRING "ADDITIONAL COINS INSERTED" + .BYTE 0 + .EVEN +MC_M4 .STRING "WILL BE LOST." + .BYTE 0 + .EVEN +MC_M5 .STRING "FACTORY SETTING: 50" + .BYTE 0 + .EVEN + +* +* ADJUSTMENT ENUMERATION STRINGS +* +LIST_CNTR + .LONG CNTR_1,CNTR_2,CNTR_3 +;LIST_HEAD +; .long HEAD_1,HEAD_2 +LIST_DIFF + .LONG DIFF_1,DIFF_2,DIFF_3,DIFF_4,DIFF_5 + .LONG DIFF_6,DIFF_7,DIFF_8,DIFF_9,DIFF_10 + +LIST_SPEEDS + .long SPEED_1,SPEED_2,SPEED_3 + .long SPEED_4,SPEED_5 + +;LIST_FULLG +; .long N_4,N_5,N_6,N_7 +; .long N_8,N_9,N_10,N_11 +; .long N_12,N_13,N_14,N_15 +; .long N_16 + +;LIST_WINM +; .long WG_NONE,WG_FREE +;WG_NONE .string "NO BONUS",0 +; .even +;WG_FREE .string "FREE GAME",0 +; .even +; +;LIST_COMPASS +; .long CP_ENABLED +; .long CP_DISABLED +; +;CP_ENABLED .string "ENABLED",0 +; .even +;CP_DISABLED .string "DISABLED",0 +; .even +; +;LIST_LIVES +; .LONG LIVE_1,LIVE_2,LIVE_3,LIVE_4,LIVE_5 +; .LONG LIVE_6,LIVE_7 + +;LIST_ROCKS +; .LONG ROCK_1,ROCK_2,ROCK_3,ROCK_4,ROCK_5 +; .LONG ROCK_6,ROCK_7,ROCK_8,ROCK_9,ROCK_10 + +LIST_AMODE + .LONG M_AMS,M_NOAMS + +LIST_NOYES + .LONG M_NO,M_YES + +LIST_YESNO + .LONG M_YES,M_NO + +LIST_DIPNOYES + .LONG M_DNO, M_DYES + +M_NO .STRING "NO" + .BYTE 0 + .EVEN + +M_YES .STRING "YES" + .BYTE 0 + .EVEN + +M_DYES .STRING "DIPSWITCH - YES",0 + .EVEN + +M_DNO .STRING "DIPSWITCH - NO",0 + .EVEN + +CNTR_1 .STRING "1 (PROPORTIONAL)" + .BYTE 0 + .EVEN +CNTR_2 .STRING "2 (1 COUNT/COIN)" + .BYTE 0 + .EVEN +CNTR_3 .STRING "3 (2 COUNTERS)" + .BYTE 0 + .EVEN + +SPEED_1 .string "1 (APPROX. 3:00)",0 + .even +SPEED_2 .string "2 (APPROX. 2:00)",0 + .even +SPEED_3 .string "3 (APPROX. 1:45)",0 + .even +SPEED_4 .string "4 (APPROX. 1:30)",0 + .even +SPEED_5 .string "5 (APPROX. 1:15)",0 + .even + +N_4 .string "4",0 +N_5 .string "5",0 +N_6 .string "6",0 +N_7 .string "7",0 +N_8 .string "8 (DEFAULT)",0 +N_9 .string "9",0 +N_10 .string "10",0 +N_11 .string "11",0 +N_12 .string "12",0 +N_13 .string "13",0 +N_14 .string "14",0 +N_15 .string "15",0 +N_16 .string "16",0 + .even + +;HEAD_1 .string "1 (NORMAL)",0 +; .even +;HEAD_2 .string "2 (LARGE)",0 +; .even + +DIFF_1 .STRING "1 (SUPER EASY)" + .BYTE 0 + .EVEN +DIFF_2 .STRING "2 (EXTRA EASY)" + .BYTE 0 + .EVEN +DIFF_3 .STRING "3 (VERY EASY)" + .BYTE 0 + .EVEN +DIFF_4 .STRING "4 (EASY)" + .BYTE 0 + .EVEN +DIFF_5 .STRING "5 (NORMAL)" + .BYTE 0 + .EVEN +DIFF_6 .STRING "6 (HARD)" + .BYTE 0 + .EVEN +DIFF_7 .STRING "7 (VERY HARD)" + .BYTE 0 + .EVEN +DIFF_8 .STRING "8 (EXTRA HARD)" + .BYTE 0 + .EVEN +DIFF_9 .STRING "9 (SUPER HARD)" + .BYTE 0 + .EVEN +DIFF_10 .STRING "10 (IMPOSSIBLE)" + .BYTE 0 + .EVEN + + +;LIVE_1 .STRING "1 LIFE" +; .BYTE 0 +; .EVEN +;LIVE_2 .STRING "2 LIVES" +; .BYTE 0 +; .EVEN +;LIVE_3 .STRING "3 LIVES" +; .BYTE 0 +; .EVEN +;LIVE_4 .STRING "4 LIVES" +; .BYTE 0 +; .EVEN +;LIVE_5 .STRING "5 LIVES" +; .BYTE 0 +; .EVEN +;LIVE_6 .STRING "6 LIVES" +; .BYTE 0 +; .EVEN +;LIVE_7 .STRING "7 LIVES" +; .BYTE 0 +; .EVEN + +;ROCK_1 .STRING "1 POWER-UP" +; .BYTE 0 +; .EVEN +;ROCK_2 .STRING "2 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_3 .STRING "3 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_4 .STRING "4 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_5 .STRING "5 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_6 .STRING "6 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_7 .STRING "7 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_8 .STRING "8 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_9 .STRING "9 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_10 .STRING "10 POWER-UPS" +; .BYTE 0 +; .EVEN + +M_AMS .STRING "ON" + .BYTE 0 + .EVEN +M_NOAMS .STRING "OFF" + .BYTE 0 + .EVEN +;M_NORM .STRING "NORMAL" +; .BYTE 0 +; .EVEN +;M_LESS .STRING "LESS VIOLENT" +; .BYTE 0 +; .EVEN +* +* FOR EXTRA MAN EVERY AND LAST EXTRA MAN +* +MESS_OFF .STRING "OFF" + .BYTE 0 + .EVEN + +M_NOBONUS .STRING "NO BONUS CREDIT" + .BYTE 0 + .EVEN + +M_NOMIN .STRING "NO MINIMUM" + .BYTE 0 + .EVEN + +M_NO_COL .STRING "NO MONEY TOTALS" + .BYTE 0 + .EVEN + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/ADMSEQ1.ASM b/ADMSEQ1.ASM new file mode 100755 index 0000000..03d3b44 --- /dev/null +++ b/ADMSEQ1.ASM @@ -0,0 +1,640 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 10/12/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "admseq1.asm" + .title "Adam Bomb animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "adamimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;from ROPES.ASM + .ref rope_command + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* STANDS + + SUBR adm_zip_anim + WL TSEC*60,A2ST2D+FR1 + .word 0 + +#STNA2_SPD equ 6 + + SUBR adm_stand2_anim + SUBR adm_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + WL #STNA2_SPD,A2ST2D+FR1 + WL #STNA2_SPD,A2ST2D+FR2 + WL #STNA2_SPD,A2ST2D+FR3 + WL #STNA2_SPD,A2ST2D+FR4 + WL #STNA2_SPD,A2ST2D+FR5 + WL #STNA2_SPD,A2ST2D+FR6 + WL #STNA2_SPD,A2ST2D+FR7 + WL #STNA2_SPD,A2ST2D+FR8 + WL #STNA2_SPD,A2ST2D+FR9 + WL #STNA2_SPD,A2ST2D+FR10 + WL #STNA2_SPD,A2ST2D+FR11 + WL #STNA2_SPD,A2ST2D+FR12 + .word ANI_REPEAT + +#STNA4_SPD equ 6 + SUBR adm_stand4_anim + SUBR adm_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + WL #STNA4_SPD,A4ST4J+FR1 + WL #STNA4_SPD,A4ST4J+FR2 + WL #STNA4_SPD,A4ST4J+FR3 + WL #STNA4_SPD,A4ST4J+FR4 + WL #STNA4_SPD,A4ST4J+FR5 + WL #STNA4_SPD,A4ST4J+FR6 + WL #STNA4_SPD,A4ST4J+FR7 + WL #STNA4_SPD,A4ST4J+FR8 + WL #STNA4_SPD,A4ST4J+FR9 + WL #STNA4_SPD,A4ST4J+FR10 + WL #STNA4_SPD,A4ST4J+FR11 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKING TORSOS + +#TORSO2_SPD equ 4 + + SUBR adm_torso2_anim + SUBR adm_torso8_anim + WL #TORSO2_SPD,A2TW2Z+FR1 + .word ANI_REPEAT + + +#TORSO4_SPD equ 4 + SUBR adm_torso4_anim + SUBR adm_torso6_anim + WL #TORSO4_SPD,A4TW4Z+FR1 + WL #TORSO4_SPD,A4TW4Z+FR2 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + +#W1F2_SPD equ 2 + SUBR adm_walk1_f2_anim + WL #W1F2_SPD,A2WL1A+FR1 + WL #W1F2_SPD,A2WL1A+FR2 + WL #W1F2_SPD,A2WL1A+FR3 + WL #W1F2_SPD,A2WL1A+FR4 + WL #W1F2_SPD,A2WL1A+FR5 + WL #W1F2_SPD,A2WL1A+FR6 + WL #W1F2_SPD,A2WL1A+FR7 + WL #W1F2_SPD,A2WL1A+FR8 + WL #W1F2_SPD,A2WL1A+FR9 + WL #W1F2_SPD,A2WL1A+FR10 + WL #W1F2_SPD,A2WL1A+FR11 + WL #W1F2_SPD,A2WL1A+FR12 + WL #W1F2_SPD,A2WL1A+FR13 + WL #W1F2_SPD,A2WL1A+FR14 + WL #W1F2_SPD,A2WL1A+FR15 + WL #W1F2_SPD,A2WL1A+FR16 + WL #W1F2_SPD,A2WL1A+FR17 + WL #W1F2_SPD,A2WL1A+FR18 + .word ANI_REPEAT + +#W2F2_SPD equ 2 + SUBR adm_walk2_f2_anim + WL #W2F2_SPD,A2WL2B+FR1 + WL #W2F2_SPD,A2WL2B+FR2 + WL #W2F2_SPD,A2WL2B+FR3 + WL #W2F2_SPD,A2WL2B+FR4 + WL #W2F2_SPD,A2WL2B+FR5 + WL #W2F2_SPD,A2WL2B+FR6 + WL #W2F2_SPD,A2WL2B+FR7 + WL #W2F2_SPD,A2WL2B+FR8 + WL #W2F2_SPD,A2WL2B+FR9 + WL #W2F2_SPD,A2WL2B+FR10 + WL #W2F2_SPD,A2WL2B+FR11 + WL #W2F2_SPD,A2WL2B+FR12 + WL #W2F2_SPD,A2WL2B+FR13 + WL #W2F2_SPD,A2WL2B+FR14 + WL #W2F2_SPD,A2WL2B+FR15 + WL #W2F2_SPD,A2WL2B+FR16 + WL #W2F2_SPD,A2WL2B+FR17 + WL #W2F2_SPD,A2WL2B+FR18 + WL #W2F2_SPD,A2WL2B+FR19 + WL #W2F2_SPD,A2WL2B+FR20 + .word ANI_REPEAT + +#W4F2_SPD equ 2 + SUBR adm_walk4_f2_anim + WL #W4F2_SPD,A2WL8B+FR1 + WL #W4F2_SPD,A2WL8B+FR2 + WL #W4F2_SPD,A2WL8B+FR3 + WL #W4F2_SPD,A2WL8B+FR4 + WL #W4F2_SPD,A2WL8B+FR5 + WL #W4F2_SPD,A2WL8B+FR6 + WL #W4F2_SPD,A2WL8B+FR7 + WL #W4F2_SPD,A2WL8B+FR8 + WL #W4F2_SPD,A2WL8B+FR9 + WL #W4F2_SPD,A2WL8B+FR10 + WL #W4F2_SPD,A2WL8B+FR11 + WL #W4F2_SPD,A2WL8B+FR12 + WL #W4F2_SPD,A2WL8B+FR13 + WL #W4F2_SPD,A2WL8B+FR14 + WL #W4F2_SPD,A2WL8B+FR15 + WL #W4F2_SPD,A2WL8B+FR16 + WL #W4F2_SPD,A2WL8B+FR17 + .word ANI_REPEAT + +#W5F2_SPD equ 2 + SUBR adm_walk5_f2_anim + WL #W5F2_SPD,A2WL1A+FR18 + WL #W5F2_SPD,A2WL1A+FR17 + WL #W5F2_SPD,A2WL1A+FR16 + WL #W5F2_SPD,A2WL1A+FR15 + WL #W5F2_SPD,A2WL1A+FR14 + WL #W5F2_SPD,A2WL1A+FR13 + WL #W5F2_SPD,A2WL1A+FR12 + WL #W5F2_SPD,A2WL1A+FR11 + WL #W5F2_SPD,A2WL1A+FR10 + WL #W5F2_SPD,A2WL1A+FR9 + WL #W5F2_SPD,A2WL1A+FR8 + WL #W5F2_SPD,A2WL1A+FR7 + WL #W5F2_SPD,A2WL1A+FR6 + WL #W5F2_SPD,A2WL1A+FR5 + WL #W5F2_SPD,A2WL1A+FR4 + WL #W5F2_SPD,A2WL1A+FR3 + WL #W5F2_SPD,A2WL1A+FR2 + WL #W5F2_SPD,A2WL1A+FR1 + .word ANI_REPEAT + +#W6F2_SPD equ 2 + SUBR adm_walk6_f2_anim + WL #W6F2_SPD,A2WL2B+FR20 + WL #W6F2_SPD,A2WL2B+FR19 + WL #W6F2_SPD,A2WL2B+FR18 + WL #W6F2_SPD,A2WL2B+FR17 + WL #W6F2_SPD,A2WL2B+FR16 + WL #W6F2_SPD,A2WL2B+FR15 + WL #W6F2_SPD,A2WL2B+FR14 + WL #W6F2_SPD,A2WL2B+FR13 + WL #W6F2_SPD,A2WL2B+FR12 + WL #W6F2_SPD,A2WL2B+FR11 + WL #W6F2_SPD,A2WL2B+FR10 + WL #W6F2_SPD,A2WL2B+FR9 + WL #W6F2_SPD,A2WL2B+FR8 + WL #W6F2_SPD,A2WL2B+FR7 + WL #W6F2_SPD,A2WL2B+FR6 + WL #W6F2_SPD,A2WL2B+FR5 + WL #W6F2_SPD,A2WL2B+FR4 + WL #W6F2_SPD,A2WL2B+FR3 + WL #W6F2_SPD,A2WL2B+FR2 + WL #W6F2_SPD,A2WL2B+FR1 + .word ANI_REPEAT + + +#W8F2_SPD equ 2 + SUBR adm_walk8_f2_anim + WL #W8F2_SPD,A2WL8B+FR17 + WL #W8F2_SPD,A2WL8B+FR16 + WL #W8F2_SPD,A2WL8B+FR15 + WL #W8F2_SPD,A2WL8B+FR14 + WL #W8F2_SPD,A2WL8B+FR13 + WL #W8F2_SPD,A2WL8B+FR12 + WL #W8F2_SPD,A2WL8B+FR11 + WL #W8F2_SPD,A2WL8B+FR10 + WL #W8F2_SPD,A2WL8B+FR9 + WL #W8F2_SPD,A2WL8B+FR8 + WL #W8F2_SPD,A2WL8B+FR7 + WL #W8F2_SPD,A2WL8B+FR6 + WL #W8F2_SPD,A2WL8B+FR5 + WL #W8F2_SPD,A2WL8B+FR4 + WL #W8F2_SPD,A2WL8B+FR3 + WL #W8F2_SPD,A2WL8B+FR2 + WL #W8F2_SPD,A2WL8B+FR1 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKS FACING #4 + +#W1F4_SPD equ 2 + SUBR adm_walk1_f4_anim + WL #W1F4_SPD,A4WL5B+FR20 + WL #W1F4_SPD,A4WL5B+FR19 + WL #W1F4_SPD,A4WL5B+FR18 + WL #W1F4_SPD,A4WL5B+FR17 + WL #W1F4_SPD,A4WL5B+FR16 + WL #W1F4_SPD,A4WL5B+FR15 + WL #W1F4_SPD,A4WL5B+FR14 + WL #W1F4_SPD,A4WL5B+FR13 + WL #W1F4_SPD,A4WL5B+FR12 + WL #W1F4_SPD,A4WL5B+FR11 + WL #W1F4_SPD,A4WL5B+FR10 + WL #W1F4_SPD,A4WL5B+FR9 + WL #W1F4_SPD,A4WL5B+FR8 + WL #W1F4_SPD,A4WL5B+FR7 + WL #W1F4_SPD,A4WL5B+FR6 + WL #W1F4_SPD,A4WL5B+FR5 + WL #W1F4_SPD,A4WL5B+FR4 + WL #W1F4_SPD,A4WL5B+FR3 + WL #W1F4_SPD,A4WL5B+FR2 + WL #W1F4_SPD,A4WL5B+FR1 + .word ANI_REPEAT + +#W2F4_SPD equ 2 + SUBR adm_walk2_f4_anim + WL #W2F4_SPD,A4WL2B+FR1 + WL #W2F4_SPD,A4WL2B+FR2 + WL #W2F4_SPD,A4WL2B+FR3 + WL #W2F4_SPD,A4WL2B+FR4 + WL #W2F4_SPD,A4WL2B+FR5 + WL #W2F4_SPD,A4WL2B+FR6 + WL #W2F4_SPD,A4WL2B+FR7 + WL #W2F4_SPD,A4WL2B+FR8 + WL #W2F4_SPD,A4WL2B+FR9 + WL #W2F4_SPD,A4WL2B+FR10 + WL #W2F4_SPD,A4WL2B+FR11 + WL #W2F4_SPD,A4WL2B+FR12 + WL #W2F4_SPD,A4WL2B+FR13 + WL #W2F4_SPD,A4WL2B+FR14 + WL #W2F4_SPD,A4WL2B+FR15 + WL #W2F4_SPD,A4WL2B+FR16 + WL #W2F4_SPD,A4WL2B+FR17 + WL #W2F4_SPD,A4WL2B+FR18 + WL #W2F4_SPD,A4WL2B+FR19 + WL #W2F4_SPD,A4WL2B+FR20 + .word ANI_REPEAT + +#W4F4_SPD equ 2 + SUBR adm_walk4_f4_anim + WL #W4F4_SPD,A4WL4A+FR1 + WL #W4F4_SPD,A4WL4A+FR2 + WL #W4F4_SPD,A4WL4A+FR3 + WL #W4F4_SPD,A4WL4A+FR4 + WL #W4F4_SPD,A4WL4A+FR5 + WL #W4F4_SPD,A4WL4A+FR6 + WL #W4F4_SPD,A4WL4A+FR7 + WL #W4F4_SPD,A4WL4A+FR8 + WL #W4F4_SPD,A4WL4A+FR9 + WL #W4F4_SPD,A4WL4A+FR10 + WL #W4F4_SPD,A4WL4A+FR11 + WL #W4F4_SPD,A4WL4A+FR12 + WL #W4F4_SPD,A4WL4A+FR13 + WL #W4F4_SPD,A4WL4A+FR14 + WL #W4F4_SPD,A4WL4A+FR15 + WL #W4F4_SPD,A4WL4A+FR16 + WL #W4F4_SPD,A4WL4A+FR17 + WL #W4F4_SPD,A4WL4A+FR18 + WL #W4F4_SPD,A4WL4A+FR19 + .word ANI_REPEAT + +#W5F4_SPD equ 2 + SUBR adm_walk5_f4_anim + WL #W5F4_SPD,A4WL5B+FR1 + WL #W5F4_SPD,A4WL5B+FR2 + WL #W5F4_SPD,A4WL5B+FR3 + WL #W5F4_SPD,A4WL5B+FR4 + WL #W5F4_SPD,A4WL5B+FR5 + WL #W5F4_SPD,A4WL5B+FR6 + WL #W5F4_SPD,A4WL5B+FR7 + WL #W5F4_SPD,A4WL5B+FR8 + WL #W5F4_SPD,A4WL5B+FR9 + WL #W5F4_SPD,A4WL5B+FR10 + WL #W5F4_SPD,A4WL5B+FR11 + WL #W5F4_SPD,A4WL5B+FR12 + WL #W5F4_SPD,A4WL5B+FR13 + WL #W5F4_SPD,A4WL5B+FR14 + WL #W5F4_SPD,A4WL5B+FR15 + WL #W5F4_SPD,A4WL5B+FR16 + WL #W5F4_SPD,A4WL5B+FR17 + WL #W5F4_SPD,A4WL5B+FR18 + WL #W5F4_SPD,A4WL5B+FR19 + WL #W5F4_SPD,A4WL5B+FR20 + .word ANI_REPEAT + +#W6F4_SPD equ 2 + SUBR adm_walk6_f4_anim + WL #W6F4_SPD,A4WL2B+FR20 + WL #W6F4_SPD,A4WL2B+FR19 + WL #W6F4_SPD,A4WL2B+FR18 + WL #W6F4_SPD,A4WL2B+FR17 + WL #W6F4_SPD,A4WL2B+FR16 + WL #W6F4_SPD,A4WL2B+FR15 + WL #W6F4_SPD,A4WL2B+FR14 + WL #W6F4_SPD,A4WL2B+FR13 + WL #W6F4_SPD,A4WL2B+FR12 + WL #W6F4_SPD,A4WL2B+FR11 + WL #W6F4_SPD,A4WL2B+FR10 + WL #W6F4_SPD,A4WL2B+FR9 + WL #W6F4_SPD,A4WL2B+FR8 + WL #W6F4_SPD,A4WL2B+FR7 + WL #W6F4_SPD,A4WL2B+FR6 + WL #W6F4_SPD,A4WL2B+FR5 + WL #W6F4_SPD,A4WL2B+FR4 + WL #W6F4_SPD,A4WL2B+FR3 + WL #W6F4_SPD,A4WL2B+FR2 + WL #W6F4_SPD,A4WL2B+FR1 + .word ANI_REPEAT + +#W8F4_SPD equ 2 + SUBR adm_walk8_f4_anim + WL #W8F4_SPD,A4WL4A+FR19 + WL #W8F4_SPD,A4WL4A+FR18 + WL #W8F4_SPD,A4WL4A+FR17 + WL #W8F4_SPD,A4WL4A+FR16 + WL #W8F4_SPD,A4WL4A+FR15 + WL #W8F4_SPD,A4WL4A+FR14 + WL #W8F4_SPD,A4WL4A+FR13 + WL #W8F4_SPD,A4WL4A+FR12 + WL #W8F4_SPD,A4WL4A+FR11 + WL #W8F4_SPD,A4WL4A+FR10 + WL #W8F4_SPD,A4WL4A+FR9 + WL #W8F4_SPD,A4WL4A+FR8 + WL #W8F4_SPD,A4WL4A+FR7 + WL #W8F4_SPD,A4WL4A+FR6 + WL #W8F4_SPD,A4WL4A+FR5 + WL #W8F4_SPD,A4WL4A+FR4 + WL #W8F4_SPD,A4WL4A+FR3 + WL #W8F4_SPD,A4WL4A+FR2 + WL #W8F4_SPD,A4WL4A+FR1 + .word ANI_REPEAT + +#***************************************************************************** +* +* TURNS (STANDS) + + + SUBR adm_2_to_4_turn_anim + SUBR adm_8_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR2 + WL 3,A1TT5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_2_turn_anim + SUBR adm_6_to_8_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR3 + WL 3,A1TT5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_6_turn_anim + SUBR adm_6_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR4 + .word ANI_XFLIP + WL 3,A1TT5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_2_to_8_turn_anim + SUBR adm_8_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR1 + .word ANI_XFLIP + WL 3,A1TT5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_8_turn_anim + SUBR adm_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR3 + WL 3,A1TT5Z+FR2 + WL 3,A1TT5Z+FR1 + .word ANI_XFLIP + WL 3,A1TT5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_2_to_6_turn_anim + SUBR adm_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR1 + .word ANI_XFLIP + WL 3,A1TT5Z+FR1 + WL 3,A1TT5Z+FR2 + WL 3,A1TT5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + + SUBR adm_2_to_4_turn2_anim + SUBR adm_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TR5Z+FR2 + .word ANI_SETFACING + WL 3,A1TR5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_2_turn2_anim + SUBR adm_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TR5Z+FR3 + .word ANI_SETFACING + WL 3,A1TR5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_6_turn2_anim + SUBR adm_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TR5Z+FR4 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,A1TR5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_2_to_8_turn2_anim + SUBR adm_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TR5Z+FR1 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,A1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_8_turn2_anim + SUBR adm_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_2_to_6_turn2_anim + SUBR adm_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR adm_run2_anim + .word ANI_SETMODE,MODE_NORMAL + WL ANI_GOTO,#lp0 + +#RUN_SPD equ 2 + SUBR adm_run_anim + .word ANI_SETMODE,MODE_UNINT ;uninterruptable +#lp0 +#lp1 + WL #RUN_SPD+1,A3RN3A+FR10 + WL #RUN_SPD,A3RN3A+FR11 + WL #RUN_SPD,A3RN3A+FR12 + WL #RUN_SPD,A3RN3A+FR13 + WL #RUN_SPD,A3RN3A+FR1 + WL #RUN_SPD+1,A3RN3A+FR2 + WL #RUN_SPD,A3RN3A+FR3 + .word ANI_SOUND,run_snd + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + WL #RUN_SPD+1,A3RN3A+FR4 + WL #RUN_SPD,A3RN3A+FR5 + WL #RUN_SPD+1,A3RN3A+FR6 + WL #RUN_SPD,A3RN3A+FR7 + WL #RUN_SPD+1,A3RN3A+FR8 + .word ANI_SOUND,run_snd + WL #RUN_SPD,A3RN3A+FR9 + + WL ANI_GOTO,#lp1 + + +* +* OUT OF CONTROL RUN IN #3 + + SUBR adm_ocrun_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP ;don't change facing + WL 15,A3RN3A+FR1 +#lp + WL #RUN_SPD+1,A3RN3A+FR10 + WL #RUN_SPD,A3RN3A+FR11 + WL #RUN_SPD,A3RN3A+FR12 + WL #RUN_SPD,A3RN3A+FR13 + WL #RUN_SPD,A3RN3A+FR1 + WL #RUN_SPD+1,A3RN3A+FR2 + WL #RUN_SPD,A3RN3A+FR3 + .word ANI_SOUND,run_snd + WL #RUN_SPD+1,A3RN3A+FR4 + WL #RUN_SPD,A3RN3A+FR5 + WL #RUN_SPD+1,A3RN3A+FR6 + WL #RUN_SPD,A3RN3A+FR7 + WL #RUN_SPD+1,A3RN3A+FR8 + .word ANI_SOUND,run_snd + WL #RUN_SPD,A3RN3A+FR9 + WL ANI_GOTO,#lp + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR adm_bounce_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + .word ANI_ZEROVELS + WL 4,A3BO3A+FR1 + + WL 3,A3BO3A+FR2 + .word ANI_BOUNCEROPE,0 + WL 1,A3BO3A+FR2 + + WL 3,A3BO3A+FR3 + .word ANI_BOUNCEROPE,1 + WL 1,A3BO3A+FR3 + + WL 3,A3BO3A+FR4 + .word ANI_BOUNCEROPE,2 + WL 1,A3BO3A+FR4 + + WL 5,A3BO3A+FR5 + .word ANI_BOUNCEROPE,4 + WL 1,A3BO3A+FR5 + + WL 3,A3BO3A+FR6 + .word ANI_BOUNCEROPE,-1 ;release + WL 1,A3BO3A+FR6 + + WL 4,A3BO3A+FR7 + .word ANI_SOUND,run_snd + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** + + SUBR adm_slave_image_table + + .long #s2_grapple ;0 S2_GRAPPLE + .long #s4_grapple ;1 S4_GRAPPLE + .long #s3_grap_to_hh ;2 S3_GRAP_TO_HH + .long #s3_pile_driven ;3 S3_PILE_DRIVEN + + +#s2_grapple ;ABOMB #2 grapple + .long A2GR3Z+FR5 ;0 (most forward) + .long A2GR3Z+FR6 ;1 + .long A2GR3Z+FR7 ;2 + .long A2GR3Z+FR8 ;3 (most back) + +#s4_grapple ;ABOMB #4 grapple + .long A4GR3B+FR7 ;0 (most forward) + .long A4GR3B+FR6 ;1 + .long A4GR3B+FR5 ;2 + .long A4GR3B+FR4 ;3 (most back) + +#s3_grap_to_hh ;ABOMB #3 from grapple to head being held + +#s3_pile_driven ;ABOMB #3 pile driven + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/ADMSEQ2.ASM b/ADMSEQ2.ASM new file mode 100755 index 0000000..619eac4 --- /dev/null +++ b/ADMSEQ2.ASM @@ -0,0 +1,1630 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 10/12/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "admseq2.asm" + .title "Adam Bomb animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "display.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "adamimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* NORMAL #2 PUNCH + +#PUNCH_SPD equ 3 + SUBR adm_2_punch_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 2,A2PU3D+FR1 + WL 2,A2PU3D+FR2 + WL 5,A2PU3D+FR3 + WL 3,A2PU3D+FR4 + WL 3,A2PU3D+FR5 + + .word ANI_ATTACK_ON, AMODE_PUNCH,78,104,38,14 ;mode,x,y,w,h + WL 5,A2PU3D+FR6 + .word ANI_ATTACK_OFF + + WL 3,A2PU3D+FR7 + WL 3,A2PU3D+FR8 + WL 3,A2PU3D+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #4 PUNCH + + SUBR adm_4_punch_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 2,A4PU3C+FR1 + WL 2,A4PU3C+FR2 + WL 5,A4PU3C+FR3 + WL 3,A4PU3C+FR4 + WL 3,A4PU3C+FR5 + + .word ANI_ATTACK_ON, AMODE_PUNCH,88,100,38,14 ;mode,x,y,w,h + WL 5,A4PU3C+FR6 + .word ANI_ATTACK_OFF + + WL 3,A4PU3C+FR7 + WL 3,A4PU3C+FR8 + WL 3,A4PU3C+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 UPPERCUT + + SUBR adm_2_uprcut_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,A2UP3A+FR1 + WL 3,A2UP3A+FR3 + WL 3,A2UP3A+FR4 + WL 3,A2UP3A+FR5 + + .word ANI_ATTACK_ON, AMODE_UPRCUT,58,130,30,50 ;mode,x,y,w,h + WL 10,A2UP3A+FR6 + .word ANI_ATTACK_OFF + + WL 4,A2UP3A+FR7 + WL 4,A2UP3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 UPPERCUT + + SUBR adm_4_uprcut_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 4,A4UP3A+FR1 + WL 3,A4UP3A+FR2 + WL 3,A4UP3A+FR3 + WL 3,A4UP3A+FR4 + WL 3,A4UP3A+FR5 + + .word ANI_ATTACK_ON, AMODE_UPRCUT,53,140,20,62 ;mode,x,y,w,h + WL 10,A4UP3A+FR6 + .word ANI_ATTACK_OFF + WL 4,A4UP3A+FR7 + WL 4,A4UP3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEADBUTT + +#BUTT_SPD equ 3 + SUBR adm_2_butt_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #BUTT_SPD,A2BC3B+FR1 + WL #BUTT_SPD,A2BC3B+FR2 + WL #BUTT_SPD,A2BC3B+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,42,119,23,23 ;mode,x,y,w,h + WL #BUTT_SPD,A2BC3B+FR4 + .word ANI_ATTACK_OFF + + WL #BUTT_SPD,A2BC3B+FR5 + WL #BUTT_SPD,A2BC3B+FR6 + WL #BUTT_SPD,A2BC3B+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 HEADBUTT + +#BUTT_SPD equ 3 + SUBR adm_4_butt_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #BUTT_SPD,A4BC3A+FR2 + WL #BUTT_SPD,A4BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,37,118,28,23 ;mode,x,y,w,h + WL #BUTT_SPD,A4BC3A+FR4 + .word ANI_ATTACK_OFF + + WL #BUTT_SPD,A4BC3A+FR5 + WL #BUTT_SPD,A4BC3A+FR6 + WL #BUTT_SPD,A4BC3A+FR7 + WL #BUTT_SPD,A4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #2 KICK + + SUBR adm_2_kick_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,A2KM3A+FR1 + WL 3,A2KM3A+FR2 + WL 3,A2KM3A+FR3 + + .word ANI_ATTACK_ON, AMODE_KICK,92,85,40,20 ;mode,x,y,w,h + WL 8,A2KM3A+FR4 + .word ANI_ATTACK_OFF + + WL 3,A2KM3A+FR5 + WL 3,A2KM3A+FR6 + WL 3,A2KM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #4 KICK + + SUBR adm_4_kick_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 2,A4KM3C+FR1 + WL 2,A4KM3C+FR2 + WL 2,A4KM3C+FR3 +; WL 2,A4KM3C+FR4 + WL 3,A4KM3C+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,88,80,40,20 ;mode,x,y,w,h + WL 8,A4KM3C+FR6 + .word ANI_ATTACK_OFF + + WL 3,A4KM3C+FR7 + WL 3,A4KM3C+FR8 + WL 3,A4KM3C+FR9 +; WL 2,A4KM3C+FR10 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KNEE + +;not currently implemented +#KNEE_SPD equ 4 + SUBR adm_2_knee_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #KNEE_SPD,A2NM3A+FR1 + WL #KNEE_SPD,A2NM3A+FR2 + WL #KNEE_SPD,A2NM3A+FR3 + WL #KNEE_SPD,A2NM3A+FR4 + WL #KNEE_SPD,A2NM3A+FR5 + WL #KNEE_SPD,A2NM3A+FR6 + WL #KNEE_SPD,A2NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 KNEE + +;not currently implemented +#KNEE_SPD equ 4 + SUBR adm_4_knee_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #KNEE_SPD,A4NM3A+FR1 + WL #KNEE_SPD,A4NM3A+FR2 + WL #KNEE_SPD,A4NM3A+FR3 + WL #KNEE_SPD,A4NM3A+FR4 + WL #KNEE_SPD,A4NM3A+FR5 + WL #KNEE_SPD,A4NM3A+FR6 + WL #KNEE_SPD,A4NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 FLYING KICK + +#FKICK_SPD equ 3 + + SUBR adm_flying_kick_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; WL 3,A3DC3B+FR1 +; WL 2,A3DC3B+FR2 + WL 2,A3DC3B+FR3 + WL ANI_CODE,#get_xvel + WL ANI_SET_YVEL,70000h + + WL 6,A3DC3B+FR4 + WL 7,A3DC3B+FR5 + + .word ANI_ATTACK_ON, AMODE_FLYKICK,90,90,67,37 ;mode,x,y,w,h + WL 7,A3DC3B+FR6 + .word ANI_ATTACK_OFF + + WL 6,A3DC3B+FR7 + WL 3,A3DC3B+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SOUND,bounce_l1 + WL 3,A3DC3B+FR9 + .word ANI_XFLIP + + WL ANI_GOTO,adm_facedown_getup_anim + + +;Give player correct XVEL + SUBRP #get_xvel + + + move *a13(FACING_DIR),a0 + + move *a13(OBJ_XVEL),a14,L + jrnz #mv + + ;Wrestler not moving toward opponent + + movi 20000h,a1 + btst PLAYER_RIGHT_BIT,a0 + jrnz #setxvel + + movi -20000h,a1 + jruc #setxvel + +#mv + ;Is wrestler backing away from opponent? + move *a13(FACING_DIR),a1 + btst MOVE_LEFT_BIT,a1 + jrnz #face_lft + clr a1 + move a14,a14 + jrn #setxvel ;Wrestler was back pedaling + jruc #lunge +#face_lft + clr a1 + move a14,a14 + jrnn #setxvel ;Wrestler was back pedaling + +#lunge + ;Will lunge kick forward + movi 40000h,a1 + btst PLAYER_RIGHT_BIT,a0 + jrnz #setxvel + + movi -40000h,a1 +#setxvel + move a1,*a13(OBJ_XVEL),L + rets + + +#***************************************************************************** +* +* BODY HIT + +#BODY_HIT_SPD equ 3 + SUBR adm_4_body_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL ANI_CODE,#get_xvel + WL ANI_SET_YVEL,48000h + WL 4,A4AM4B+FR1 + WL 4,A4AM4B+FR2 + WL 6,A4AM4B+FR3 + WL 4,A4AM4B+FR4 + .word ANI_ZEROVELS + WL 6,A4AM4B+FR5 + WL 3,A4AM4B+FR6 + WL 3,A4AM4B+FR7 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_2_body_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL ANI_CODE,#get_xvel + WL ANI_SET_YVEL,48000h + WL 4,A2AM2A+FR1 + WL 4,A2AM2A+FR2 + WL 6,A2AM2A+FR3 + WL 4,A2AM2A+FR4 + .word ANI_ZEROVELS + WL 6,A2AM2A+FR5 + WL 3,A2AM2A+FR6 + WL 3,A2AM2A+FR7 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#setface +;Need to set facing dir because of this odd getup sequence + movk 10,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #rgt + movk 6,a1 +#rgt move a1,*a13(FACING_DIR) + rets + +#get_xvel + +;Give player correct XVEL +;BUG!!! If this guy gets hit in the butt, he will lunge back into kicker! +;What is the best way to jump back from opponent? Use the closest stuff? +;Maybe we should start the XVEL back when we start the BODY_HIT. + + move *a13(FACING_DIR),a0 + + movi 20000h,a1 + btst PLAYER_RIGHT_BIT,a0 + jrz #setxvel + + movi -20000h,a1 +#setxvel + move a1,*a13(OBJ_XVEL),L + rets + + +#***************************************************************************** +* +* FALL BACK + + SUBR adm_fall_back_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 5,A3FD3B+FR1 + WL 5,A3FD3B+FR2 + WL 5,A3FD3B+FR3 + WL 5,A3FD3B+FR4 + .word ANI_WAITHITGND + WL 4,A3FD3B+FR5 + WL 4,A3FD3B+FR6 + WL 4,A3FD3B+FR7 + .word ANI_SOUND,bounce_l1 + .word ANI_SHAKER,3 + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_END + +#***************************************************************************** +* +* GET UP + + SUBR adm_facedown_getup_anim + WL 4,A3GD2A+FR1 + WL 4,A3GD2A+FR2 + WL 4,A3GD2A+FR3 + WL 4,A3GD2A+FR4 + WL ANI_CODE,#choose_dir + WL ANI_IFSTATUS,#getup_in_2 +#getup_in_4 + WL 4,A3GD4A+FR5 + WL 4,A3GD4A+FR6 + WL 4,A3GD4A+FR7 + WL 4,A3GD4A+FR8 + WL ANI_GOTO,#getup_done +#getup_in_2 + WL 4,A3GD2A+FR5 + WL 4,A3GD2A+FR6 + WL 4,A3GD2A+FR7 + WL 4,A3GD2A+FR8 +#getup_done + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +; Routine to choose #2 or #4 getup. clear MODE_STATUS bit to start, +; then set if for a getup in 2, or leave clear for a getup in 4. + +#choose_dir + ;facing dir is pretty much screwed at this point, so we'll re- + ;calculate it. get the left or right bits from the B_FLIPH bit + ;in OBJ_CONTROL. get the up or down bits from the facing_dir table. + + movi MOVE_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrnz #rgt + movi MOVE_LEFT,a1 +#rgt + ori MOVE_DOWN,a1 + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + move *a13(NEW_FACING_DIR),a0 + btst PLAYER_UP_BIT,a0 + jrz #cd_done + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + andni MOVE_DOWN,a1 + ori MOVE_UP,a1 +#cd_done + move a1,*a13(FACING_DIR) + rets + + +;#getup_face +; move *a13(PLYRNUM),a0 +; sll 4,a0 ;x 16 +; addi facing_dir,a0 +; move *a0,a0 +; move *a13(OBJ_CONTROL),a1 +; btst B_FLIPH,a1 +; jrz #noflip +; btst MOVE_RIGHT_BIT,a0 +; jrz #gf_done +; xori M_FLIPH,a1 +; move a1,*a13(OBJ_CONTROL) +; rets +; +;#noflip +; btst MOVE_LEFT_BIT,a0 +; jrz #gf_done +; xori M_FLIPH,a1 +; move a1,*a13(OBJ_CONTROL) +;#gf_done +; rets + + +#GETUP_SPD equ 4 + + SUBR adm_faceup_getup_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #GETUP_SPD,A3GU4A+FR1 + WL #GETUP_SPD,A3GU4A+FR2 + WL #GETUP_SPD,A3GU4A+FR3 + WL #GETUP_SPD,A3GU4A+FR4 + WL #GETUP_SPD,A3GU4A+FR5 + WL #GETUP_SPD,A3GU4A+FR6 + WL #GETUP_SPD,A3GU4A+FR7 + WL #GETUP_SPD,A3GU4A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 HEAD HIT + +#HEAD_HIT_SPD equ 3 +#LB_SPEED equ 3 + SUBR adm_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL #HEAD_HIT_SPD,A4AH4C+FR1 + WL #HEAD_HIT_SPD,A4AH4C+FR2 + WL #HEAD_HIT_SPD+1,A4AH4C+FR3 + WL #HEAD_HIT_SPD+1,A4AH4C+FR4 + WL #HEAD_HIT_SPD,A4AH4C+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEAD HIT + +#HEAD_HIT_SPD equ 3 +#LB_SPEED equ 3 + SUBR adm_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL #HEAD_HIT_SPD,A2AH2A+FR1 + WL #HEAD_HIT_SPD+1,A2AH2A+FR2 + WL #HEAD_HIT_SPD+1,A2AH2A+FR3 + WL #HEAD_HIT_SPD+1,A2AH2A+FR4 + WL #HEAD_HIT_SPD+1,A2AH2A+FR5 + WL #HEAD_HIT_SPD+1,A2AH2A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* FACE HIT (HANDS ON FACE) + +#FACE_2_HIT_SPD equ 4 + SUBR adm_2_face_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + WL #FACE_2_HIT_SPD,A3AE2A+FR1 + WL #FACE_2_HIT_SPD,A3AE2A+FR2 + WL #FACE_2_HIT_SPD,A3AE2A+FR3 + WL #FACE_2_HIT_SPD,A3AE2A+FR4 + WL #FACE_2_HIT_SPD,A3AE2A+FR5 + WL #FACE_2_HIT_SPD,A3AE2A+FR6 + WL #FACE_2_HIT_SPD,A3AE2A+FR7 + .word ANI_OFFSET,-13,0,0 ;x,y,z + WL 2,A2ST2D+FR1 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#FACE_4_HIT_SPD equ 4 + SUBR adm_4_face_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + WL #FACE_4_HIT_SPD,A3AE4A+FR1 + WL #FACE_4_HIT_SPD,A3AE4A+FR2 + WL #FACE_4_HIT_SPD,A3AE4A+FR3 + WL #FACE_4_HIT_SPD,A3AE4A+FR4 + WL #FACE_4_HIT_SPD,A3AE4A+FR5 + WL #FACE_4_HIT_SPD,A3AE4A+FR6 + WL #FACE_4_HIT_SPD,A3AE4A+FR7 + .word ANI_OFFSET,-13,0,0 ;x,y,z + WL 2,A4ST4J+FR1 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#setface + movk 10,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #rgt + movk 6,a1 +#rgt move a1,*a13(FACING_DIR) + rets + + +#***************************************************************************** +* +* GRAB & THROW + +;this isn't called yet. +#GRABTHR_SPD equ 3 + SUBR adm_grab_throw_anim +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; WL #GRABTHR_SPD,A3GS3A+FR1 +; WL #GRABTHR_SPD,A3GS3A+FR2 +; +; .word ANI_ATTACK_ON, AMODE_GRABTHROW,80,75,32,31 ;mode,x,y,w,h +; .word ANI_ATTACHZ,76,54,0 +; WL #GRABTHR_SPD,A3GS3A+FR3 +; WL #GRABTHR_SPD,A3GS3A+FR4 +; .word ANI_ATTACK_OFF +; +; .word ANI_ATTACH,63,69 ;xoff,yoff +; WL #GRABTHR_SPD,A3GS3A+FR5 +; +; .word ANI_ATTACH,56,81 +; WL #GRABTHR_SPD,A3GS3A+FR6 +; +; .word ANI_ATTACH,37,107 +; WL #GRABTHR_SPD,A3GS3A+FR7 +; +; .word ANI_ATTACH,15,121 +; WL #GRABTHR_SPD,A3GS3A+FR8 +; +; .word ANI_ATTACH,-8,118 +; WL #GRABTHR_SPD,A3GS3A+FR9 +; +; .word ANI_ATTACH,-33,104 +; WL #GRABTHR_SPD,A3GS3A+FR10 +; +; .word ANI_ATTACH,-59,48 +; WL #GRABTHR_SPD,A3GS3A+FR11 +; +; .word ANI_ATTACH,-53,37 +; WL #GRABTHR_SPD,A3GS3A+FR12 +; .word ANI_DETACH +; +; WL #GRABTHR_SPD,A3GS3A+FR13 +; WL #GRABTHR_SPD,A3GS3A+FR14 +; WL #GRABTHR_SPD,A3GS3A+FR15 +; WL #GRABTHR_SPD,A3GS3A+FR16 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 FLYING CLOTHESLINE + +#CLINE_SPD equ 3 + SUBR adm_2_fly_cline_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_INAIR + WL #CLINE_SPD,A3LC3A+FR1 + WL #CLINE_SPD,A3LC3A+FR2 + WL #CLINE_SPD,A3LC3A+FR3 + + WL ANI_SET_YVEL,58000h + + WL #CLINE_SPD,A3LC3A+FR4 + + .word ANI_OFFSET,-5,50,0 + + WL #CLINE_SPD,A3LC3A+FR5 + WL #CLINE_SPD,A3LC3A+FR6 + + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_SHAKER,3 + .word ANI_SOUND,bounce_l1 + + WL #CLINE_SPD,A3LC3A+FR7 + WL #CLINE_SPD,A3LC3A+FR8 + WL #CLINE_SPD,A3LC3A+FR9 + + WL ANI_GOTO,adm_facedown_getup_anim + +#***************************************************************************** +* +* #4 FLYING CLOTHESLINE + +#CLINE_SPD equ 3 + SUBR adm_4_fly_cline_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_INAIR + WL #CLINE_SPD,A3RC3A+FR1 + WL #CLINE_SPD,A3RC3A+FR2 + WL #CLINE_SPD,A3RC3A+FR3 + + WL ANI_SET_YVEL,58000h + + WL #CLINE_SPD,A3RC3A+FR4 + WL #CLINE_SPD,A3RC3A+FR5 + + .word ANI_OFFSET,0,43,0 + + WL #CLINE_SPD,A3RC3A+FR6 + + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_SHAKER,3 + .word ANI_SOUND,bounce_l1 + + WL #CLINE_SPD,A3RC3A+FR7 + WL #CLINE_SPD,A3RC3A+FR8 + + WL ANI_GOTO,adm_facedown_getup_anim + +#***************************************************************************** +* +* CARRYING FRAMES + +carry2_anim +; WL 1,S2CA2 + .word ANI_END + +carry4_anim +; WL 1,S4CA4 + .word ANI_END + +#***************************************************************************** +* +* #2 ELBOW DROP + + SUBR adm_2_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,A2PJ2C+FR1 + WL 3,A2PJ2C+FR2 + WL ANI_SET_YVEL,68000h + WL 3,A2PJ2C+FR3 + .word ANI_OFFSET,0,34,0 + WL 3,A2PJ2C+FR4 + .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,50,40,-45,25,30,0 ;mode,x,y,z,w,h,d + .word ANI_WAITHITGND + .word ANI_SOUND,bounce_l1 + .word ANI_SHAKER,3 + .word ANI_SHAKEROPES,0 + WL 3,A2PJ2C+FR5 + WL 3,A2PJ2C+FR6 + .word ANI_ATTACK_OFF + WL 3,A2PJ2C+FR7 + WL 4,A3GD2A+FR6 + WL 4,A3GD2A+FR7 + WL 4,A3GD2A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 ELBOW DROP + + SUBR adm_4_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 4,A3PJ3B+FR1 + WL 4,A3PJ3B+FR2 + WL ANI_SET_YVEL,68000h + .word ANI_OFFSET,0,34,0 + WL 4,A3PJ3B+FR3 + WL 4,A3PJ3B+FR4 + .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,30,20,45,25,20,0 ;mode,x,y,z,w,h,d + .word ANI_WAITHITGND + .word ANI_SOUND,bounce_l1 + .word ANI_SHAKER,3 + .word ANI_SHAKEROPES,0 + WL 2,A3PJ3B+FR5 + WL 6,A3PJ3B+FR6 + .word ANI_ATTACK_OFF + WL 4,A3GD4A+FR4 + WL 4,A3GD4A+FR5 + WL 4,A3GD4A+FR6 + WL 4,A3GD4A+FR7 + WL 4,A3GD4A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + +#STOMP_SPD equ 3 + SUBR adm_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #STOMP_SPD,A2JT2A+FR7 + WL #STOMP_SPD,A2JT2A+FR8 + WL #STOMP_SPD,A2JT2A+FR1 + + WL ANI_SET_YVEL,58000h + + WL #STOMP_SPD,A2JT2A+FR2 + WL #STOMP_SPD,A2JT2A+FR3 + WL #STOMP_SPD,A2JT2A+FR4 + WL #STOMP_SPD,A2JT2A+FR5 + .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,38,40,-40,60,20,0 ;mode,x,y,z,w,h,d + .word ANI_WAITHITGND + .word ANI_ATTACK_OFF + WL #STOMP_SPD,A2JT2A+FR6 + WL #STOMP_SPD,A2JT2A+FR7 + WL #STOMP_SPD,A2JT2A+FR8 + WL #STOMP_SPD,A2JT2A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + +#STOMP_SPD equ 4 + SUBR adm_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #STOMP_SPD,A4MP4B+FR1 + WL #STOMP_SPD,A4MP4B+FR2 + WL #STOMP_SPD,A4MP4B+FR3 + + .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,28,19,40,17,19,0 ;mode,x,y,z,w,h,d + WL #STOMP_SPD,A4MP4B+FR4 + .word ANI_ATTACK_OFF + WL #STOMP_SPD,A4MP4B+FR5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HITS ON GROUND + +#HIT_SPD equ 2 + SUBR adm_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL #HIT_SPD,A3CP3A+FR1 + WL #HIT_SPD,A3CP3A+FR2 + WL #HIT_SPD,A3CP3A+FR4 + WL #HIT_SPD,A3CP3A+FR5 + WL #HIT_SPD,A3CP3A+FR6 + WL #HIT_SPD,A3CP3A+FR7 + WL #HIT_SPD,A3CP3A+FR8 + .word ANI_END + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + +#CLIMB_SPD equ 5 + SUBR adm_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS +; WL ANI_SET_YVEL,4000h ;27000 +; .word ANI_OFFSET,-8,-3,-16 ;x,y,z + .word ANI_SLOWMO,5 + WL #CLIMB_SPD,A2CT2B+FR1 + WL #CLIMB_SPD,A2CT2B+FR2 + WL #CLIMB_SPD,A2CT2B+FR3 + WL #CLIMB_SPD,A2CT2B+FR4 + .word ANI_OFFSET,4,19,0 ;x,y,z + WL #CLIMB_SPD,A2CT2B+FR5 + WL #CLIMB_SPD,A2CT2B+FR6 + WL #CLIMB_SPD,A2CT2B+FR7 + .word ANI_OFFSET,15,13,0 + WL #CLIMB_SPD,A2CT2B+FR8 + WL #CLIMB_SPD,A2CT2B+FR9 + WL #CLIMB_SPD,A2CT2B+FR10 + WL #CLIMB_SPD,A2CT2B+FR11 + .word ANI_SLOWMO,0 + .word ANI_ZEROVELS + + .word ANI_OFFSET,0,6,0 ;x,y,z + WL #CLIMB_SPD,A2CT2B+FR2 + .word ANI_OFFSET,10,18h,0 ;x,y,z + WL #CLIMB_SPD,A2CT2B+FR4 + .word ANI_OFFSET,-2,0dh,0 ;x,y,z + WL #CLIMB_SPD,A2CT2B+FR6 + + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + + .word ANI_OFFSET,2,0,0 ;x,y,z +#repeat + WL #CLIMB_SPD,A4SB4A+FR1 + WL #CLIMB_SPD,A4SB4A+FR2 + WL #CLIMB_SPD,A4SB4A+FR3 + WL #CLIMB_SPD,A4SB4A+FR4 + WL #CLIMB_SPD,A4SB4A+FR5 + WL #CLIMB_SPD,A4SB4A+FR6 + WL #CLIMB_SPD,A4SB4A+FR7 + WL #CLIMB_SPD,A4SB4A+FR8 + WL ANI_GOTO,#repeat + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + +#CLIMB_SPD equ 5 + SUBR adm_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_OFFSET,0,2,0 ;x,y,z + WL #CLIMB_SPD*4,A2ST2D+FR1 +; WL #CLIMB_SPD,A2CT2B+FR6 + .word ANI_OFFSET,0,-13,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2B+FR4 + + WL ANI_SET_YVEL,-4000h +; + .word ANI_OFFSET,-8,-26,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2B+FR2 + .word ANI_OFFSET,0,-5,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2A+FR12 + .word ANI_OFFSET,0,-10,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2A+FR9 + .word ANI_OFFSET,0,-10,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2A+FR7 + .word ANI_OFFSET,-9,-9,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2A+FR2 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* SECOND WIND + +#SWIND_SPD equ 3 + SUBR adm_2ndwind_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #SWIND_SPD,A4SW4A+FR1 + WL #SWIND_SPD,A4SW4A+FR2 + WL #SWIND_SPD,A4SW4A+FR3 + WL #SWIND_SPD,A4SW4A+FR4 + WL #SWIND_SPD,A4SW4A+FR5 + WL #SWIND_SPD,A4SW4A+FR6 + WL #SWIND_SPD,A4SW4A+FR7 + WL #SWIND_SPD,A4SW4A+FR8 + WL #SWIND_SPD,A4SW4A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* DIVE OFF TURNBUCKLE + +#DIVETB_SPD equ 2 + SUBR adm_diveofftb_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_XFLIP ;make an ANI_FACEOUT and ANI_FACEIN + + .word ANI_LEAPATOPP,40,180,TGT_HEAD,20,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL #DIVETB_SPD,A4PM4A+FR1 + WL #DIVETB_SPD,A4PM4A+FR2 + WL #DIVETB_SPD,A4PM4A+FR3 + WL #DIVETB_SPD,A4PM4A+FR4 + WL #DIVETB_SPD,A4PM4A+FR5 + WL #DIVETB_SPD,A4PM4A+FR6 + WL #DIVETB_SPD,A4PM4A+FR7 + WL #DIVETB_SPD,A4PM4A+FR8 + + WL 1,A4ST4J+FR1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_BOUNCE,4 + + .word ANI_SOUND,bounce_l1 + .word ANI_SHAKER,3 + .word ANI_SHAKEROPES,0 + WL 1,A4ST4J+FR1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SOUND,bounce_l1 + .word ANI_SHAKER,3 + .word ANI_SHAKEROPES,0 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + +#GRABFLNG_SPD equ 4 + SUBR adm_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,A1TR5Z+FR2 + WL 3,A1TR5Z+FR3 + WL ANI_GOTO,#cont + + SUBR adm_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + +#cont + WL #GRABFLNG_SPD,A4GF3A+FR1 + WL #GRABFLNG_SPD,A4GF3A+FR2 + + .word ANI_ATTACK_ON, AMODE_GRABFLING,76,72,22,14 ;mode,x,y,w,h + .word ANI_ATTACHZ,72,0,32 + WL #GRABFLNG_SPD,A4GF3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim +;missed + WL 8,A4GF3A+FR3 + WL 4,A4GF3A+FR2 + WL 4,A4GF3A+FR1 + + WL ANI_CODE,#setface + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gothim + .word ANI_ATTACH,67,0 + WL #GRABFLNG_SPD,A4GF3A+FR4 + .word ANI_ATTACH,57,0 + WL #GRABFLNG_SPD,A4GF3A+FR5 + .word ANI_ATTACH,40,0 + WL #GRABFLNG_SPD,A4GF3A+FR6 + .word ANI_ATTACH,5,0 + WL #GRABFLNG_SPD,A4GF3A+FR7 + .word ANI_ATTACH,-59,0 + WL #GRABFLNG_SPD,A4GF3A+FR8 + .word ANI_DETACH + WL #GRABFLNG_SPD+4,A4GF3A+FR9 + WL #GRABFLNG_SPD+4,A4GF3A+FR10 + WL #GRABFLNG_SPD+4,A4GF3A+FR11 + WL #GRABFLNG_SPD+4,A4GF3A+FR12 + + .word ANI_SETFACING + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#setface +;Need to set current facing dir + movk 10,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #rgt + movk 6,a1 +#rgt move a1,*a13(FACING_DIR) + rets + +#***************************************************************************** +* +* GRAB OPPONENT AND HOLD OVERHEAD + + +#GRABOH_SPD equ 3 + SUBR adm_2_graboh_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 3,A1TR5Z+FR2 + WL 3,A1TR5Z+FR3 + WL 3,A3PO4B+FR1 + WL 3,A3PO4B+FR2 + + .word ANI_ATTACK_ON_Z, AMODE_GRABHOLD,78,69,20,21,34,40 ;mode,x,y,z,w,h,d + .word ANI_ATTACHZ,45,65,4 + WL 3,A3PO4B+FR3 + WL 6,A3PO4B+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim +;missed + WL 3,A3PO4B+FR3 + WL 3,A3PO4B+FR2 + WL 3,A3PO4B+FR1 + WL 3,A1TR5Z+FR3 + WL 3,A1TR5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR adm_4_graboh_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 3,A3PO4B+FR1 + WL 3,A3PO4B+FR2 + WL 3,A3PO4B+FR3 + + .word ANI_ATTACK_ON_Z, AMODE_GRABHOLD,78,69,20,21,34,40 ;mode,x,y,z,w,h,d + .word ANI_ATTACHZ,45,65,4 + WL 6,A3PO4B+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim +;missed + WL 6,A3PO4B+FR4 + WL 3,A3PO4B+FR3 + WL 3,A3PO4B+FR2 + WL 3,A3PO4B+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gothim + .word ANI_ATTACH,50,85 + WL 6,A3PO4B+FR5 + .word ANI_ATTACH,20,120 + WL 6,A3PO4B+FR6 + .word ANI_ATTACH,0,120 + WL 6,A3PO4B+FR7 + .word ANI_ATTACH,0,125 + WL 6,A4UT4Z+FR1 + + .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD + .word ANI_SETMODE,+MODE_NOAUTOFLIP + .word ANI_END + +#***************************************************************************** +* +* FROM HOLD OVERHEAD, THROW OPPONENT STRAIGHT UP IN AIR + +#OHTHROW_SPD equ 4 + SUBR adm_ohthrow1_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SOUND,29h + .word ANI_ATTACH,9,124 + WL #OHTHROW_SPD,A4UT3A+FR1 + .word ANI_ATTACH,9,108 + WL #OHTHROW_SPD,A4UT3A+FR2 + .word ANI_ATTACH,9,82 + WL #OHTHROW_SPD+8,A4UT3A+FR3 + .word ANI_ATTACH,9,120 + WL #OHTHROW_SPD-2,A4UT3A+FR4 + .word ANI_ATTACH,9,145 + + .word ANI_THROW1 + + .word ANI_SOUND,42h + + WL #OHTHROW_SPD+6,A4UT3A+FR5 + WL #OHTHROW_SPD,A4UT3A+FR6 + WL #OHTHROW_SPD,A4UT3A+FR7 + WL #OHTHROW_SPD,A4UT3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + +#HELD_SPD equ 3 + SUBR adm_heldoh_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + WL #HELD_SPD,A4PM4A+FR1 + WL #HELD_SPD,A4PM4A+FR2 + WL #HELD_SPD,A4PM4A+FR3 + WL #HELD_SPD,A4PM4A+FR4 + WL #HELD_SPD,A4PM4A+FR5 + WL #HELD_SPD,A4PM4A+FR6 + WL #HELD_SPD,A4PM4A+FR7 + WL #HELD_SPD,A4PM4A+FR8 + .word ANI_REPEAT + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* BEEN THROWN FROM HELD OVERHEAD + +#HELD_SPD equ 3 + SUBR adm_heldthrown_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_XFLIP + + WL 1,A3FD3B+FR6 + .word ANI_WAITHITGND + .word ANI_SOUND,bounce_l1 + + .word ANI_BOUNCE,4 + + WL 1,A3FD3B+FR6 + .word ANI_WAITHITGND + .word ANI_SOUND,bounce_l1 + .word ANI_ZEROVELS + .word ANI_XFLIP + WL 1,A3RL1A+FR1 + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_END + + +#***************************************************************************** +* +* FLYING BUTT DROP + + .if 0 +#BUTTDRP_SPD equ 3 + SUBR adm_buttdrp_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + WL ANI_SET_YVEL,60000h + +; WL #BUTTDRP_SPD,A3JK3A+FR1 +; WL #BUTTDRP_SPD,A3JK3A+FR2 +; WL #BUTTDRP_SPD,A3JK3A+FR3 +; WL #BUTTDRP_SPD,A3JK3A+FR4 +; WL #BUTTDRP_SPD,A3JK3A+FR5 +; WL #BUTTDRP_SPD,A3JK3A+FR6 + +; WL 1,A3JK3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_BOUNCE,4 + +; WL 1,A3JK3A+FR7 + .word ANI_WAITHITGND +; WL TSEC*1,A3JK3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + .endif + +#***************************************************************************** +* +* #2 BLOCK + +#BLOCK_SPD equ 3 +#HITBLOCK_SPD equ 4 + SUBR adm_2_block_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + + WL #BLOCK_SPD,A2BK3B+FR1 + WL #BLOCK_SPD,A2BK3B+FR2 + WL #BLOCK_SPD,A2BK3B+FR3 + .word ANI_SETPLYRMODE,MODE_BLOCK + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + WL #BLOCK_SPD,A2BK3B+FR2 + WL #BLOCK_SPD,A2BK3B+FR1 + .word ANI_END + + SUBR adm_2_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,3000h + + WL #HITBLOCK_SPD,A2BK3B+FR7 + WL #HITBLOCK_SPD,A2BK3B+FR8 + WL #HITBLOCK_SPD,A2BK3B+FR6 + WL #HITBLOCK_SPD,A2BK3B+FR5 + WL #HITBLOCK_SPD,A2BK3B+FR4 + WL #HITBLOCK_SPD,A2BK3B+FR3 + + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + +#***************************************************************************** +* +* #4 BLOCK + +#BLOCK_SPD equ 3 +#HITBLOCK_SPD equ 4 + + SUBR adm_4_block_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + + WL #BLOCK_SPD,A4BK3C+FR1 + WL #BLOCK_SPD,A4BK3C+FR2 + WL #BLOCK_SPD,A4BK3C+FR3 + .word ANI_SETPLYRMODE,MODE_BLOCK + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + WL #BLOCK_SPD,A4BK3C+FR2 + WL #BLOCK_SPD,A4BK3C+FR1 + .word ANI_END + + SUBR adm_4_hitblock_anim + + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,3000h + WL #HITBLOCK_SPD,A4BK3C+FR4 + WL #HITBLOCK_SPD,A4BK3C+FR5 + WL #HITBLOCK_SPD,A4BK3C+FR7 + WL #HITBLOCK_SPD,A4BK3C+FR8 + WL #HITBLOCK_SPD,A4BK3C+FR6 + WL #HITBLOCK_SPD,A4BK3C+FR3 + + + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + +#***************************************************************************** +* +* HIP TOSS RUNNING OPPONENT + +;put in #2 and #4 hiptosses +#HIPTOSS_SPD equ 3 + SUBR adm_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + +;;; .word ANI_SLOWMO,5 + + WL #HIPTOSS_SPD,A4HT3A+FR1 + WL #HIPTOSS_SPD,A4HT3A+FR2 + .word ANI_ATTACK_ON, AMODE_HIPTOSS,76-20,74,32,32 ;mode,x,y,w,h + WL #HIPTOSS_SPD,A4HT3A+FR3 + .word ANI_ATTACK_OFF + WL #HIPTOSS_SPD,A4HT3A+FR4 + WL #HIPTOSS_SPD,A4HT3A+FR5 + WL #HIPTOSS_SPD,A4HT3A+FR6 + WL #HIPTOSS_SPD,A4HT3A+FR7 + WL #HIPTOSS_SPD,A4HT3A+FR8 + +;;; .word ANI_SLOWMO,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + +#TOSSFALL_SPD equ 3 + SUBR adm_hiptossfall_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + + WL #TOSSFALL_SPD,A3FH3A+FR1 + WL #TOSSFALL_SPD,A3FH3A+FR2 + WL #TOSSFALL_SPD,A3FH3A+FR3 + WL #TOSSFALL_SPD,A3FH3A+FR4 + WL #TOSSFALL_SPD,A3FH3A+FR5 + WL #TOSSFALL_SPD,A3FH3A+FR6 + WL #TOSSFALL_SPD,A3FH3A+FR7 + WL #TOSSFALL_SPD,A3FH3A+FR8 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_XFLIP + WL 1,A3RL1A+FR1 + +;;; .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 PUSH + +#PUSH_SPD equ 4 + SUBR adm_2_push_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #PUSH_SPD,A2PS3A+FR1 + WL #PUSH_SPD,A2PS3A+FR2 + WL #PUSH_SPD,A2PS3A+FR3 + WL #PUSH_SPD,A2PS3A+FR4 + .word ANI_ATTACK_ON, AMODE_PUSH,84,97,40,26 ;mode,x,y,w,h + WL #PUSH_SPD,A2PS3A+FR5 + .word ANI_ATTACK_OFF + WL #PUSH_SPD,A2PS3A+FR6 + WL #PUSH_SPD,A2PS3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 PUSH + +#PUSH_SPD equ 4 + SUBR adm_4_push_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #PUSH_SPD,A4PS3A+FR1 + WL #PUSH_SPD,A4PS3A+FR2 + WL #PUSH_SPD,A4PS3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUSH,79,101,34,18 ;mode,x,y,w,h + WL #PUSH_SPD,A4PS3A+FR4 + .word ANI_ATTACK_OFF + WL #PUSH_SPD,A4PS3A+FR5 + WL #PUSH_SPD,A4PS3A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 LOSE BALANCE + +#LB_SPEED equ 4 +#FRICTION_VAL equ 3000h + SUBR adm_2_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,#FRICTION_VAL + WL #LB_SPEED,A2LB2B+FR1 + WL #LB_SPEED,A2LB2B+FR2 + WL #LB_SPEED,A2LB2B+FR3 + WL #LB_SPEED,A2LB2B+FR4 + WL #LB_SPEED,A2LB2B+FR5 + WL #LB_SPEED,A2LB2B+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR adm_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,#FRICTION_VAL + WL #LB_SPEED,A4LB4A+FR1 + WL #LB_SPEED,A4LB4A+FR2 + WL #LB_SPEED,A4LB4A+FR3 + WL #LB_SPEED,A4LB4A+FR4 + WL #LB_SPEED,A4LB4A+FR5 + WL #LB_SPEED,A4LB4A+FR6 + WL #LB_SPEED,A4LB4A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 BIG BOOT + +#BIGBOOT_SPD equ 3 + SUBR adm_2_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #BIGBOOT_SPD,A2BG3A+FR1 + WL #BIGBOOT_SPD,A2BG3A+FR3 + WL #BIGBOOT_SPD,A2BG3A+FR4 + WL #BIGBOOT_SPD,A2BG3A+FR5 + + .word ANI_ATTACK_ON, AMODE_BIGBOOT,79,105,19,25 ;mode,x,y,w,h + WL #BIGBOOT_SPD,A2BG3A+FR6 + .word ANI_WAITRELEASE,PLAYER_KICK_BIT + .word ANI_ATTACK_OFF + + WL #BIGBOOT_SPD,A2BG3A+FR7 + WL #BIGBOOT_SPD,A2BG3A+FR8 + WL #BIGBOOT_SPD,A2BG3A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 BIG BOOT + +#BIGBOOT_SPD equ 3 + SUBR adm_4_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #BIGBOOT_SPD,A4BG3A+FR1 + WL #BIGBOOT_SPD,A4BG3A+FR3 + WL #BIGBOOT_SPD,A4BG3A+FR4 + WL #BIGBOOT_SPD,A4BG3A+FR5 + + .word ANI_ATTACK_ON, AMODE_BIGBOOT,79,105,19,25 ;mode,x,y,w,h + WL #BIGBOOT_SPD,A4BG3A+FR6 + .word ANI_WAITRELEASE,PLAYER_KICK_BIT + .word ANI_ATTACK_OFF + + WL #BIGBOOT_SPD,A4BG3A+FR7 + WL #BIGBOOT_SPD,A4BG3A+FR8 + WL #BIGBOOT_SPD,A4BG3A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* DIZZY + +#DIZZY_SPD equ 6 + SUBR adm_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZEROVELS + WL #DIZZY_SPD,A4SW4A+FR1 + WL #DIZZY_SPD,A4SW4A+FR2 + WL #DIZZY_SPD,A4SW4A+FR3 + WL #DIZZY_SPD,A4SW4A+FR4 + WL #DIZZY_SPD,A4SW4A+FR5 + WL #DIZZY_SPD,A4SW4A+FR6 + WL #DIZZY_SPD,A4SW4A+FR7 + WL #DIZZY_SPD,A4SW4A+FR8 + WL #DIZZY_SPD,A4SW4A+FR9 + .word ANI_REPEAT + + +#**************************************************************************** +* +* RAISE ARM IN VICTORY + +#RARM_SPD equ 8 + SUBR adm_raisearm_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZEROVELS + +; WL #RARM_SPD+10,A5WN5B+FR1 +; WL #RARM_SPD-2,A5WN5B+FR2 +; WL #RARM_SPD-2,A5WN5B+FR3 +; WL #RARM_SPD-2,A5WN5B+FR4 +; WL #RARM_SPD-2,A5WN5B+FR5 +; +; WL #RARM_SPD,A5WN5Z+FR1 +; WL #RARM_SPD,A5WN5Z+FR2 +; WL #RARM_SPD,A5WN5Z+FR3 +; WL #RARM_SPD,A5WN5Z+FR4 +; +; WL #RARM_SPD,A5WN5Z+FR1 +; WL #RARM_SPD,A5WN5Z+FR2 +; WL #RARM_SPD,A5WN5Z+FR3 +; WL #RARM_SPD,A5WN5Z+FR4 +; +; WL #RARM_SPD,A5WN5Z+FR1 +; WL #RARM_SPD,A5WN5Z+FR2 +; WL #RARM_SPD,A5WN5Z+FR3 +; WL #RARM_SPD,A5WN5Z+FR4 +; +; WL #RARM_SPD,A5WN5Z+FR1 +; WL #RARM_SPD,A5WN5Z+FR2 +; WL #RARM_SPD,A5WN5Z+FR3 +; WL #RARM_SPD,A5WN5Z+FR4 +; +; WL #RARM_SPD,A5WN5Z+FR1 +; WL #RARM_SPD,A5WN5Z+FR2 +; WL #RARM_SPD,A5WN5Z+FR3 +; WL #RARM_SPD+50,A5WN5Z+FR4 + + .word ANI_ENDMATCH + .word ANI_REPEAT + +#***************************************************************************** +* + SUBR adm_lockup2_anim + SUBR adm_lockup4_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_END + +#***************************************************************************** + + SUBR adm_roll_frames + + .word 9 ;speed + .long 30000h ;z velocity + .long 10000h*8/255 ;inv multiply (0-255 -> 0-8) + + .long A3RL1A+FR1 ;0 + .long A3RL1A+FR2 ;1 + .long A3RL1A+FR3 ;2 + .long A3RL1A+FR4 ;3 + .long A3RL1A+FR5 ;4 + .long A3RL1A+FR6 ;5 + .long A3RL1A+FR7 ;6 + .long A3RL1A+FR8 ;7 + .long A3RL1A+FR9 ;8 + .long 0,0,0,0,0,0 + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/ADMSEQ3.ASM b/ADMSEQ3.ASM new file mode 100755 index 0000000..70dfecf --- /dev/null +++ b/ADMSEQ3.ASM @@ -0,0 +1,360 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/12/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "admseq3.asm" + .title "Adam Bomb animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "display.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "adamimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref wres_get_stick_val_cur + .ref RNDRNG0 + .ref set_target_offsets + .ref get_opp_process + + .ref get_leap + .ref shake_all_ropes + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** + + SUBR adm_2_break_lockup_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-30000h,1 ;facing relative + .word ANI_FRICTION,3000h + WL 3,A2FG3A+FR4 + WL 3,A2FG3A+FR3 + WL 3,A2FG3A+FR2 + WL 3,A2FG3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR adm_2_lockup_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,A2FG3A+FR1 + WL 4,A2FG3A+FR2 + WL 4,A2FG3A+FR3 + WL 4,A2FG3A+FR4 + WL 4,A2FG3A+FR5 + .word ANI_ATTACK_ON, AMODE_GRAPPLE,24,-100,48,28 ;mode,x,y,w,h + WL 4,A2FG3A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#grapple + WL 4,A2FG3A+FR5 + WL 4,A2FG3A+FR4 + WL 4,A2FG3A+FR3 + WL 4,A2FG3A+FR2 + WL 4,A2FG3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#grapple + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_SLAVE,S4_GRAPPLE,3 + WL 8,A2GR3Z+FR5 + + .word ANI_SLAVE,S4_GRAPPLE,2 + WL 8,A2GR3Z+FR6 + + .word ANI_SLAVE,S4_GRAPPLE,1 + WL 8,A2GR3Z+FR7 + + .word ANI_SLAVE,S4_GRAPPLE,0 + WL 8,A2GR3Z+FR8 + + .word ANI_SLAVE,S4_GRAPPLE,1 + WL 8,A2GR3Z+FR7 + + .word ANI_SLAVE,S4_GRAPPLE,2 + WL 8,A2GR3Z+FR6 + + WL ANI_GOTO,#grapple + + +#***************************************************************************** + + SUBR adm_4_break_lockup_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-30000h,1 ;facing relative + .word ANI_FRICTION,3000h + WL 3,A4FG3A+FR4 + WL 3,A4FG3A+FR3 + WL 3,A4FG3A+FR2 + WL 3,A4FG3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR adm_4_lockup_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,A4FG3A+FR1 + WL 4,A4FG3A+FR2 + WL 4,A4FG3A+FR3 + WL 4,A4FG3A+FR4 + WL 4,A4FG3A+FR5 + .word ANI_ATTACK_ON, AMODE_GRAPPLE,24,-100,48,28 ;mode,x,y,w,h + WL 4,A4FG3A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#grapple + WL 4,A4FG3A+FR5 + WL 4,A4FG3A+FR4 + WL 4,A4FG3A+FR3 + WL 4,A4FG3A+FR2 + WL 4,A4FG3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#grapple + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_SLAVE,S2_GRAPPLE,3 + WL 8,A4GR3B+FR7 + + .word ANI_SLAVE,S2_GRAPPLE,2 + WL 8,A4GR3B+FR6 + + .word ANI_SLAVE,S2_GRAPPLE,1 + WL 8,A4GR3B+FR5 + + .word ANI_SLAVE,S2_GRAPPLE,0 + WL 8,A4GR3B+FR4 + + .word ANI_SLAVE,S2_GRAPPLE,1 + WL 8,A4GR3B+FR5 + + .word ANI_SLAVE,S2_GRAPPLE,2 + WL 8,A4GR3B+FR6 + + WL ANI_GOTO,#grapple + + + .if 0 +#***************************************************************************** + + SUBR dnk_3_head_hold_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 1,D3PG3A01 + .word ANI_ATTACHZ,45-5,0,0 + WL 3,D3PG3A01 + WL 4,D3PG3A02 + + WL 4+50,D3PG3A02 + .word ANI_END + + + SUBR dnk_3_head_held_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,D3BF3Z01 + WL 4,D3BF3Z02 +#loop + WL 4,D3BF3A01 + WL 4,D3BF3A02 + WL 4,D3BF3A03 + WL 4,D3BF3A04 + WL 4,D3BF3A05 + WL 4,D3BF3A06 + WL 4,D3BF3A07 + WL 4,D3BF3A08 + WL ANI_GOTO,#loop + + +#***************************************************************************** + + SUBR dnk_3_pile_driver_anim + + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +#lp + .word ANI_ATTACHZ,45-5,0,0 +;;; WL ANI_CODE,temp_shit0 +;;; .word ANI_SLAVE,S3_GRAP_TO_HH,0 + WL 63+00,D3PG3A01 + .word ANI_SLAVE,S3_GRAP_TO_HH,1 + WL 3+60,D3PG3A01 + .word ANI_SLAVE,S3_GRAP_TO_HH,2 + WL 3+60,D3PG3A02 + .word ANI_SLAVE,S3_GRAP_TO_HH,3 + WL 10+60,D3PG3A03 + WL 3+60,D3PG3A05 + + + +;;; WL ANI_CODE,temp_shit + + .word ANI_ATTACHZ,27-10,61-7,0 + + .word ANI_SLAVE,S3_PILE_DRIVEN,1 + + WL 3+60,D3PG3A05 + + .word ANI_SLAVE,S3_PILE_DRIVEN,2 + WL 2+60,D3PG3A06 + .word ANI_SLAVE,S3_PILE_DRIVEN,3 + WL 2+60,D3PG3A06 + .word ANI_SLAVE,S3_PILE_DRIVEN,4 + WL 2+60,D3PG3A06A + .word ANI_SLAVE,S3_PILE_DRIVEN,5 + WL 2+60,D3PG3A06A + .word ANI_SLAVE,S3_PILE_DRIVEN,6 + WL 64+60,D3PG3A07 + + WL ANI_SET_YVEL,90000h + .word ANI_OFFSET,0,47,0 ;x,y,z + + .word ANI_ATTACHZ,27-10,0,0 + + WL 4+00,D3PG3A08 + WL 4+00,D3PG3A09 + .word ANI_WAITHITGND + + + WL 4+60,D3PG3A10 + WL ANI_GOTO,#lp + + +temp_shit0 + move *a13(ATTACH_PROC),a2,L + + move *a13(OBJ_XPOSINT),a0 + addi 45,a0 + move a0,*a2(OBJ_XPOSINT) + + move *a13(OBJ_YPOS),*a2(OBJ_YPOS),L + + rets + + + +temp_shit + move *a13(ATTACH_PROC),a2,L + move *a2(OBJ_XPOSINT),a0 + subi 27,a0 + move a0,*a2(OBJ_XPOSINT) + + move *a2(OBJ_YPOSINT),a0 + addi 61-7,a0 + move a0,*a2(OBJ_YPOSINT) + + rets + + + + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +;#lp + .word ANI_ATTACHZ,44,0,-4 + WL 4+60,D3PG3A01 + + WL 4+6,D3PG3A01 + .word ANI_ATTACHZ,18,54,-4 + WL 4+6,D3PG3A02 + WL 4+6,D3PG3A03 + WL 4+6,D3PG3A04 + WL 4+6,D3PG3A05 + WL 4+6,D3PG3A06 + .word ANI_ATTACHZ,18,54,-4 + WL 4+140,D3PG3A07 +;;; WL ANI_GOTO,#lp + + WL ANI_CODE,clear_link + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** + + SUBR dnk_3_pile_driven + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +#lp + WL 4+60,D3BF3Z01 + WL 4+6,D3BF3Z02 + WL 4+6,D3BF3A01 + WL 4+6,D3PD3C01 + WL 4+6,D3PD3C02 + WL 4+6,D3PD3C02 + WL 4+6,D3PD3C03 + WL 4+6,D3PD3C04 + WL 4+6,D3PD3C04 + WL 4+140,D3PD3C05 +;;; WL ANI_GOTO,#lp + + WL ANI_CODE,clear_link + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +clear_link + clr a0 + move a0,*a13(ATTACH_PROC),L + rets + + + .endif + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/ALL.BAT b/ALL.BAT new file mode 100755 index 0000000..32b8821 --- /dev/null +++ b/ALL.BAT @@ -0,0 +1,9 @@ +@call BAM.BAT +@call BRET.BAT +@call DOINK.BAT +@call LEX.BAT +@call RAZOR.BAT +@call SHAWN.BAT +@call TAKER.BAT +@call YOKO.BAT + \ No newline at end of file diff --git a/AMODE.DOC b/AMODE.DOC new file mode 100755 index 0000000..e421516 Binary files /dev/null and b/AMODE.DOC differ diff --git a/AMODE2.DOC b/AMODE2.DOC new file mode 100755 index 0000000..ac70c8c Binary files /dev/null and b/AMODE2.DOC differ diff --git a/ANIM.ASM b/ANIM.ASM new file mode 100755 index 0000000..4968328 --- /dev/null +++ b/ANIM.ASM @@ -0,0 +1,4968 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 6/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "anim.asm" + .title "animation routines" + .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 "ring.equ" + .include "sound.h" + .include "jjxm.h" + .INCLUDE "SOUND.EQU" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + +****************************************************************************** +* +* external references + + .ref p2rounds,p1rounds,xxx_dead_anim,is_final_match,FINAL_PTR + .ref get_opp_process + .ref PSTATUS,round_award + .ref PCNT,slowmo,do_roll,match_over,triple_sound,is_8_on_1 + .ref match_winner,process_ptrs,square_root,set_target_offsets + .ref calc_line_x,RNDPER,wrtable_sound,rope_command,no_debris + .ref set_rope_z,SHAKER2,get_all_buttons_down,right_rproc + .ref left_rproc,adjust_health,create_dizzy_proc,get_mpart_offsets + .ref get_mpart_xsize,pal_find,round_tickcount,tgt_ground + .ref get_rope_x,allow_offscrn,ADD_TO_COMBO_COUNT,MOVE_NAME_ANNC + .ref reduce_bog,RNDRNG0,hyper_speed_on,royal_rumble + .ref kill_smove_procs,clear_lifebar + .ref wrestler_count,wrestler_count_proc + + .REF IF_SILENT_ADD_VOICE + +****************************************************************************** +* +* external definitions + +#***************************************************************************** + +OANIMODE equ 0 ;word +OANIBASE equ OANIMODE+10h ;long +OANIPC equ OANIBASE+20h ;long +OANICNT equ OANIPC+20h ;word +OCUR_FRAME equ OANICNT+10h ;long + + + SUBR animate_wrestler + + PUSH a4,a10 + + .ref match_time + move @match_time,a0,L + jrz #x + +; callr animate_wrestler1 +; callr animate_wrestler2 + + move a13,a10 + addi ANIMODE,a10 ;primary animation + callr animate + + move a13,a10 + addi ANIMODE2,a10 ;secondary animation + callr animate + +#x + PULL a4,a10 + rets + + + SUBR animate_wrestler1 + + PUSH a4,a10 + + move a13,a10 + addi ANIMODE,a10 ;primary animation + callr animate + + PULL a4,a10 + rets + + SUBR animate_wrestler2 + + PUSH a4,a10 + + move a13,a10 + addi ANIMODE2,a10 ;secondary animation + callr animate + + PULL a4,a10 + rets + +******** +animate ;a10 = * anim variables base + + move *a10(OANIMODE),a0 ;current animation ended??? + btst MODE_END_BIT,a0 + jrnz _exit + + .if 0 +*** temp patch to step through images on player 1 !!!! + + move *a13(PLYRNUM),a0 + jrnz #skippit + + move *a10(OANIBASE),a0,L + move *a10(OANIPC),a1,L + cmp a0,a1 + jreq _next_command + + move *a13(BUT_VAL_DOWN),a0 + move a0,a0 + jrnz _next_command + rets +#skippit + .endif + +*** + + + move *a10(OANICNT),a0 ;cur tick count + dec a0 + move a0,*a10(OANICNT) + jrgt _exit + +_next_command + move *a10(OANIPC),a4,L +_next_command1 + move *a4+,a0 ;tick count or command + jrn #command + jrz _ani_zip ;no-op + + move *a13(ANI_SPEED),a1 + mpyu a0,a1 + srl 8,a1 + move @hyper_speed_on,a14 + srl a14,a1 + .if DEBUG + move a1,a1 + jrge #not_z + LOCKUP +#not_z + .endif + move a1,*a10(OANICNT) ;# ticks to hold cur frame + +; move a0,a1 +; sll 8,a1 ;* 256 +; move *a13(ANI_SPEED),a0 ;divisor * 256 +; divu a0,a1 ;a1/a0 +; move a1,*a10(OANICNT) ;# ticks to hold cur frame + + move *a4+,a0,L ;* * multi image object + + .if DEBUG + cmpi >ff800000,a0 + jrhs #img_ok + LOCKUP ;bogus image pointer +#img_ok + .endif + + move *a0,a0,L ;* image + .if DEBUG + jrnz #ok + LOCKUP + jruc #skp +#ok + .endif + move a0,*a10(OCUR_FRAME),L +#skp + move a4,*a10(OANIPC),L + +_exit + rets + + +#command +; andi 0ffh,a0 +; sll 5,a0 ;x 32 + sll 24,a0 + srl 19,a0 + addi #ani_commands,a0 + + .if DEBUG + cmpi #ani_commands_end,a0 + jrlt #cmd_ok + LOCKUP ;bogus ani command +#cmd_ok + .endif + + move *a0,a0,L + jump a0 + +#ani_commands + .long _ani_zip ;0 + .long _ani_repeat ;1 + .long _ani_setmode ;2 + .long _ani_zerovels ;3 + .long _ani_setplyrmode ;4 + .long _ani_set_yvel ;5 + .long _ani_attack_on ;6 + .long _ani_attack_off ;7 + .long _ani_leapatopp ;8 + .long _ani_attach ;9 + .long _ani_detach ;10 + .long _ani_waithitgnd ;11 + .long _ani_xflip ;12 + .long _ani_bounce ;13 + .long _ani_attack_on_Z ;14 + .long _ani_gravity_on ;15 + .long _ani_gravity_off ;16 + .long _ani_goto ;17 + .long _ani_attachz ;18 + .long _ani_slowmo ;19 + .long _ani_waitrelease ;20 + .long _ani_offset ;21 + .long _ani_friction ;22 + .long _ani_min_yvel ;23 + .long _ani_attachvel ;24 + .long _ani_throw1 ;25 + .long _ani_sound ;26 + .long _ani_setfacing ;27 + .long _ani_pause ;28 + .long _ani_ifstatus ;29 + .long _ani_code ;30 + .long _ani_shaker ;31 + .long _ani_changeanim ;32 + .long _ani_faceup ;33 + .long _ani_facedown ;34 + .long _ani_bouncerope ;35 + .long _ani_shakeropes ;36 + .long _ani_bendrope ;37 + .long _ani_setspeed ;38 + .long _ani_leapatpos ;39 + .long _ani_zero_xzvels ;40 + .long _ani_rope_z ;41 + .long _ani_loop ;42 + .long _ani_zip ;43 + .long _ani_set_xvel ;44 + .long _ani_ifnotstatus ;45 + .long _ani_slide_back ;46 + .long _ani_clr_damage ;47 + .long _ani_set_zvel ;48 + .long _ani_checkword ;49 + .long _ani_face ;50 + .long _ani_setword ;51 + .long _ani_getup ;52 + .long _ani_getup_wait ;53 + .long _ani_clr_stars ;54 + .long _ani_shakeall ;55 + .long _ani_damage ;56 + .long _ani_start_dizzy ;57 + .long _ani_clr_status ;58 + .long _ani_set_target ;59 + .long _ani_max_x ;60 + .long _ani_max_z ;61 + .long _ani_max_y_vel ;62 + .long _ani_superslave ;63 + .long _ani_slaveanim ;64 + .long _ani_rawsound ;65 + .long _ani_damageopp ;66 + .long _ani_rndper ;67 + .long _ani_waithitopp ;68 + .long _ani_attchimage ;69 + .long _ani_ifoppmode ;99 + .long _ani_ifbuttons ;71 + .long _ani_ifnohitblock ;72 + .long _ani_end ;73 + .long _ani_ifrope ;74 + .long _ani_ifnotrope ;75 + .long _ani_opp_getup ;76 + .long _ani_shakecorner ;77 + .long _ani_singlestep ;78 + .long _ani_superslave2 ;79 + .long _ani_setoppmode ;80 + .long _ani_clroppmode ;81 + .long _ani_oppoffset ;82 + .long _ani_ifblocked ;83 + .long _ani_waitroll ;84 + .long _ani_setoppfacing ;85 + .long _ani_ifopp ;86 + .long _ani_snot ;87 + + .long _ani_if_butcount_ge ;88 + .long _ani_if_butcount_lt ;89 + .long _ani_if_rptcount ;90 + .long _ani_ifnot_rptcount ;91 + + .long _ani_ringcheck ;92 + .long _ani_debrisat ;93 + .long _ani_debris ;94 + .long _ani_set_wrestler_xflip ;95 + .long _ani_slideatopp ;96 + + .long _ani_clr_butcount ;97 + .long _ani_set_rptcount ;98 + .long _ani_dec_rptcount ;99 + + .long _ani_shadowtrail ;100 + .long _ani_createproc ;101 + .long _ani_target ;102 + .long _ani_hmbwait ;103 + .long _ani_safe_time ;104 + .long _ani_setopp_plyrmode ;105 + .long _ani_xflip_opp ;106 + .long _ani_setlong ;107 + .long _ani_immobilize ;108 + .long _ani_xflip_tbl ;109 + .long _ani_setoppvels ;110 + .long _ani_waithitgnd2 ;111 + .long _ani_set_opp_xvel ;112 + .long _ani_set_attach ;113 + .long _ani_inc_combo_count ;114 + .long _ani_clear_combo_count ;115 + .long _ani_add_move ;116 + .long _ani_startattack ;117 + .long _ani_changeanim_tbl ;118 + .long _ani_if_rptcount_ge ;119 + .long _ani_if_rptcount_lt ;120 + .long _ani_waithitany ;121 + .long _ani_draw_name ;122 + .long _ani_set_idiot ;123 + .long _ani_attchimage2 ;124 + .long _ani_ground ;125 + .long _ani_rot ;126 + .long _ani_scroll_ctrl ;127 + .long _ani_clear_climb ;128 + .long _ani_opp_face ;129 + .long _ani_setflag ;130 +#ani_commands_end + +#******** +_ani_zip ;0 + + .if DEBUG + LOCKUP + .endif + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_repeat ;1 + move *a10(OANIBASE),a4,L + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_setmode ;2 + move *a4+,a0 ;mode bits + move a0,*a10(OANIMODE) + move a4,*a10(OANIPC),L + + ;clear some STATUS_FLAGS bits too. + move *a13(STATUS_FLAGS),a14,L + andni SF_CLEAR_BITS,a14 + move a14,*a13(STATUS_FLAGS),L + + ;if *a13(PTIME) is nonzero, this anim was called by someone other + ; than our actual wrestler process. So clearing the KOD bit isn't + ; enough, since we're still sleeping. Set PTIME to 1. + move *a13(PTIME),a14 + jrz _next_command + movk 1,a14 + move a14,*a13(PTIME) + jruc _next_command + +#******** +_ani_zerovels ;3 + clr a0 + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_YVEL),L + move a0,*a13(OBJ_ZVEL),L + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_setplyrmode ;4 + + ;clear the climbin bit, just in case... + clr a14 + move a14,*a13(CLIMBING_THRU) + + move *a4+,a0 + move *a13(PLYRMODE),a1 ;this is a temp fudge!!! + cmpi MODE_DEAD,a1 + jreq #noset + +;If going into head hold mode, don't allow getup meter +;to come out for awhile. + cmpi MODE_HEADHOLD,a0 + jrnz #skp + move *a13(DELAY_METER),a14 + cmpi 6*60,a14 + jrge #skp + movi 9*60,a14 + move a14,*a13(DELAY_METER) +#skp + + move a0,*a13(PLYRMODE) +#noset + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_set_yvel ;5 + move *a4+,a0,L + move a0,*a13(OBJ_YVEL),L + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_attack_on ;6 + +;I'm not sure we want to zero attach_proc just for starting an attack! +;Watch this.... + clr a0 ;start out not attached +; move a0,*a13(ATTACH_PROC),L ;to anything + + move a0,*a13(HITBLOCKER) + +;The start of each attack on will clear MODE_STATUS! + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + move *a13(ANIMODE),a0 + ori MODE_CHECKHIT,a0 + move a0,*a13(ANIMODE) + + move *a4+,a0 + move a0,*a13(ATTACK_MODE) +; move *a4+,a0 +; move a0,*a13(OBJ_ATTXOFF) +; move *a4+,a0 +; move a0,*a13(OBJ_ATTYOFF) +; move *a4+,a0 +; move a0,*a13(OBJ_ATTWIDTH) +; move *a4+,a0 +; move a0,*a13(OBJ_ATTHEIGHT) + + move *a4+,a0,L + move a0,*a13(OBJ_ATTXOFF),L + move *a4+,a0,L + move a0,*a13(OBJ_ATTWIDTH),L + +;;; clr a0 +;;; move a0,*a13(OBJ_ATTZOFF) +;;; move a0,*a13(OBJ_ATTDEPTH) + + movi -40,a0 ;default z width (10) + move a0,*a13(OBJ_ATTZOFF) + movi 40*2,a0 ;10*2 + move a0,*a13(OBJ_ATTDEPTH) + + move a4,*a10(OANIPC),L + +; jruc _next_command + jruc _next_command1 + +#******** +_ani_attack_off ;7 + + ;clear CHECKHIT and WAITHITOPP bits + move *a13(ANIMODE),a0 + andni MODE_CHECKHIT|MODE_WAITHITOPP,a0 + move a0,*a13(ANIMODE) + + ;clear SMART_ATTACK bit and SMART_TARGET value + move *a13(STATUS_FLAGS),a14 + andni M_SMART_ATTACK,a14 + move a14,*a13(STATUS_FLAGS) + + clr a14 + move a14,*a13(SMART_TARGET),L + + ;update ATTACK_TIME + move @round_tickcount,a0 + move a0,*a13(ATTACK_TIME) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_leapatopp ;8 + +; # ticks to reach dest +; max total distance (X and Z) +; max X distance +; max Z distance +; max Y vel +; target area of opponent +; x,y,z offset of attack box + + STRUCT 0 + WORD #TICKS + WORD #MAX_TOTAL_DIST + WORD #MAX_X_DIST + WORD #MAX_Z_DIST + LONG #MAX_Y_VEL + WORD #TRGT + WORD #ATT_X_OFF + WORD #ATT_Y_OFF + WORD #ATT_Z_OFF + LABEL #SIZE + + + .bss oppx,32 + .bss oppz,32 + .bss oppy,32 + + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(CLOSEST_NUM),a11 + X32 a11 + addi process_ptrs,a11 + move *a11,a11,L + + move *a11(OBJ_XVEL),a5,L + + move *a11(PLYRMODE),a14 + cmpi MODE_RUNNING,a14 + jrne #outring + + move a0,a0 + jrnz #outring + +;if opponent is inside the ring, running and near the ropes +;then target where he is now (don't add in xvel) + + move *a11(OBJ_XPOSINT),a1 + + move a5,a5 ;xvel + jrp #run_right +;run_left + cmpi RING_X_CENTER,a1 + jrgt #outring + jruc #cnt + +#run_right + cmpi RING_X_CENTER,a1 + jrlt #outring +#cnt + + PUSH a13 + move a11,a13 + calla get_rope_x + PULL a13 + move *a11(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 70,a0 + jrgt #outring + + clr a5 ;clr xvel +#outring + + move *a11(OBJ_ZVEL),a6,L + move *a11(OBJ_YVEL),a7,L + move *a11(GROUND_Y),a8 + sll 16,a8 + addi [256,0],a8 + + move *a11(OBJ_XPOS),a1,L + move *a11(OBJ_ZPOS),a2,L + move *a11(OBJ_YPOS),a3,L + addi [256,0],a3 + + + move *a4(#TICKS),a0 + + move *a13(OBJ_GRAVITY),a14,L +#lp0 + add a5,a1 ;x + xvel + add a6,a2 ;z + zvel + + move a7,a7 + jrz #ok + + add a7,a3 ;y + yvel + sub a14,a7 ;yvel - gravity + cmp a3,a8 ;hit ground? + jrgt #ok + move a8,a3 + jruc #dn +#ok + dsj a0,#lp0 +#dn + subi [256,0],a3 + + move a1,@oppx,L + move a2,@oppz,L + move a3,@oppy,L + + + move *a4(#TRGT),a0 + jrn #user + btst B_TGT_GROUND,a0 + jrz #ngrnd + andni TGT_GROUND,a0 + calla set_target_offsets + calla tgt_ground + jruc #user +#ngrnd + calla set_target_offsets +#user + + move *a13(TGT_XOFF),a0 ;target x offset + sll 16,a0 + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #right1 + neg a0 +#right1 +;;; move *a11(OBJ_XPOS),a1,L + move @oppx,a1,L + add a0,a1 ;def target x + + move *a4(#ATT_X_OFF),a0 + sll 16,a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #right0 + neg a0 +#right0 + move *a13(OBJ_XPOS),a2,L + add a0,a2 ;att x + + sub a2,a1 ;def x - att x + move a1,a14 + abs a14 + + move *a4(#MAX_X_DIST),a0 + jrn #xok + sll 16,a0 + cmp a14,a0 + jrge #xok + + move a1,a1 + jrp #no_negx + neg a0 +#no_negx + move a0,a1 +#xok + move a1,a5 ;delta x + move *a4(#TICKS),a0 + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_XVEL),L + + + + move *a13(TGT_ZOFF),a0 ;target z offset + sll 16,a0 +;;; move *a11(OBJ_ZPOS),a1,L + move @oppz,a1,L + add a0,a1 ;def target z + + move *a13(OBJ_ZPOS),a2,L + move *a4(#ATT_Z_OFF),a0 + sll 16,a0 + add a0,a2 ;att z + + sub a2,a1 ;def z - att z + move a1,a14 + abs a14 + + move *a4(#MAX_Z_DIST),a0 + jrn #zok + sll 16,a0 + cmp a14,a0 + jrge #zok + + move a1,a1 + jrp #no_negz + neg a0 +#no_negz + move a0,a1 +#zok + move a1,a6 ;delta z + move *a4(#TICKS),a0 + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_ZVEL),L + + + move *a4(#MAX_TOTAL_DIST),a9 + jrn #maxok + + abs a5 + srl 16,a5 + move a5,a1 + mpyu a5,a1 ;deltax^2 + move a1,a5 + + abs a6 + srl 16,a6 + move a6,a1 + mpyu a6,a1 ;deltaz^2 + move a1,a0 + + add a5,a0 + calla square_root + + cmp a0,a9 ;a9-a0 (will we exceed max dist?) + jrgt #maxok + + sll 8,a9 ;x 256 (8 bits fractional) + divu a0,a9 ;a9/a0 + + move a9,a1 + move *a13(OBJ_XVEL),a0,L + mpys a0,a1 ;scale down xvel + sra 8,a1 ;shift off fractional + move a1,*a13(OBJ_XVEL),L + + move a9,a1 + move *a13(OBJ_ZVEL),a0,L + mpys a0,a1 ;scale down yvel + sra 8,a1 ;shift off fractional + move a1,*a13(OBJ_ZVEL),L +#maxok + + + + +;to calculate YVEL taking into account gravity: +;use y-y0 = v0*t + 0.5*a*t^2 + + + move *a4(#TICKS),a8 + move a8,a1 + mpyu a8,a1 ;t^2 + move *a13(OBJ_GRAVITY),a0,L + mpyu a0,a1 ;a*t^2 + srl 1,a1 ;1/2*a*t^2 + +;;; move *a11(OBJ_YPOS),a0,L ;opp y + move @oppy,a0,L + + move *a13(TGT_YOFF),a14 ;target y offset + sll 16,a14 + add a14,a0 + + move *a13(OBJ_YPOS),a2,L ;y0 + move *a4(#ATT_Y_OFF),a14 + sll 16,a14 + + add a14,a2 + + sub a2,a0 ;a0 = a0-a2 (y - y0) + add a0,a1 + jrnn #yvel_okay + +; LOCKUP + + clr a1 + jruc #yok +#yvel_okay + divu a8,a1 ;a1 = a1/a8 ( ((y-y0)+(1/2*a*t^2)) / t ) + + move *a4(#MAX_Y_VEL),a0,L + cmp a1,a0 + jrge #yok + move a0,a1 +#yok + move a1,*a13(OBJ_YVEL),L + + + ;make sure both have the same INRING value + move *a11(INRING),a0 + move *a13(INRING),a1 + cmp a0,a1 + jreq #done + + ;uh-oh. our INRING's don't match. Unless we're on the + ; turnbuckle (or flying from it), zero the X and Z + ; velocities and set the Y velocity to 50000h or something + + ;...unfortunately, there's no really clean way to tell if + ; we're on the turnbuckle at this point since the LEAPAT doesn't + ; happen until well into the anim sequence and our PLYRMODE could + ; be just about anything by then. So instead we'll fudge and look + ; at some other clues, like gravity and y pos. If a player has a + ; Y pos that's way high (80+) pixels above GROUND_Y and no gravity, + ; that sure looks like a turnbuckle, so go with it. + move *a13(ANIMODE),a14 + btst MODE_NOGRAVITY_BIT,a14 + jrz #nt + + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a14 + sub a14,a0 + subi 80,a0 + jrnn #done + +#nt ;no good. leap in place + clr a14 + move a14,*a13(OBJ_XVEL),L + move a14,*a13(OBJ_ZVEL),L + movi [5,0],a14 + move a14,*a13(OBJ_YVEL),L + +#done + jruc _next_command + + +#******** +_ani_attach ;9 +; move *a4+,a0 ;xoff +; move a0,*a13(ATTACH_XOFF) +; move *a4+,a0 +; move a0,*a13(ATTACH_YOFF) + + move *a4+,a0,L ;xoff + move a0,*a13(ATTACH_XOFF),L + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_detach ;10 + + move *a13(ATTACH_PROC),a1,L + jrz #done_really + clr a0 + move a0,*a13(ATTACH_PROC),L ;not attached to anything + + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jrne #done_really ;attach_procs don't match! + + move a0,*a1(ATTACH_PROC),L ;not attached to anything +#done + + ;if our victim is still in mode puppet, puppet2, headheld, or + ; attached, instead put him in ONGROUND. + move *a1(PLYRMODE),a14 + cmpi MODE_PUPPET,a14 + jreq #fix_opp + cmpi MODE_PUPPET2,a14 + jreq #fix_opp +;This was fucking up the shawn franknsteiner move from headhold! +;Forcing him to dive down too low! +; cmpi MODE_HEADHELD,a14 +; jreq #fix_opp + cmpi MODE_ATTACHED,a14 + jreq #fix_opp + jruc #done_really + +#fix_opp + movi MODE_ONGROUND,a14 + move a14,*a1(PLYRMODE) + +#done_really + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_waithitgnd ;11 + + move *a13(OBJ_YVEL),a0,L ;must have down velocity + jrp #no_gnd + + ;if we're the master and the attach is valid, check and see if + ; our puppet has hit the ground. + move *a13(ANIMODE),a14 + btst MODE_KEEPATTACHED_BIT,a14 + jrz #skip_pcheck + + move *a13(ATTACH_PROC),a0,L + jrz #skip_pcheck ;we're attached? + move *a0(ATTACH_PROC),a14,L + jrz #skip_pcheck ;they're attached? + cmp a13,a14 + jrne #skip_pcheck ;to each other? + + ;ah, but if the opponent's MODE_GHOST bit is set, ignore him + move *a0(ANIMODE),a14 + btst MODE_GHOST_BIT,a14 + jrnz #skip_pcheck + + move *a0(OBJ_YPOSINT),a1,W + move *a0(GROUND_Y),a2,W + sub a1,a2 + + jrnn #hit_gnd + +#skip_pcheck + + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_gnd + +#hit_gnd + CALLA SMALL_BOUNCE + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#no_gnd + movk 1,a0 + move a0,*a10(OANICNT) ;# ticks to hold cur frame + rets + + +#******** +_ani_xflip ;12 + + move *a13(OBJ_CONTROL),a0 + xori M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_bounce ;13 + + move *a4+,a0 ;Bounce value + sll 16,a0 + move a0,*a13(OBJ_YVEL),L + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_attack_on_Z ;14 + +;I'm not sure we want to zero attach_proc just for starting an attack! +;Watch this.... + clr a0 ;start out not attached +; move a0,*a13(ATTACH_PROC),L ;to anything + + move a0,*a13(HITBLOCKER) + move a0,*a13(ATTACH_ZOFF) + +;The start of each attack on will clear MODE_STATUS! + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + move *a13(ANIMODE),a0 + ori MODE_CHECKHIT,a0 + move a0,*a13(ANIMODE) + + move *a4+,a0 + move a0,*a13(ATTACK_MODE) +; move *a4+,a0 +; move a0,*a13(OBJ_ATTXOFF) +; move *a4+,a0 +; move a0,*a13(OBJ_ATTYOFF) +; move *a4+,a0 +; move a0,*a13(OBJ_ATTZOFF) +; move *a4+,a0 +; move a0,*a13(OBJ_ATTWIDTH) +; move *a4+,a0 +; move a0,*a13(OBJ_ATTHEIGHT) +; move *a4+,a0 +; move a0,*a13(OBJ_ATTDEPTH) + + move *a4+,a0,L + move a0,*a13(OBJ_ATTXOFF),L + move *a4+,a0,L + move a0,*a13(OBJ_ATTZOFF),L + move *a4+,a0,L + move a0,*a13(OBJ_ATTHEIGHT),L + move a4,*a10(OANIPC),L + +; jruc _next_command + jruc _next_command1 + +#******** +_ani_gravity_on ;15 + + move *a13(ANIMODE),a0 + andni MODE_NOGRAVITY,a0 + move a0,*a13(ANIMODE) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_gravity_off ;16 + + move *a13(ANIMODE),a0 + ori MODE_NOGRAVITY,a0 + move a0,*a13(ANIMODE) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_goto ;17 + + move *a4+,a4,L + move a4,*a10(OANIPC),L + +; jruc _next_command + jruc _next_command1 + +#******** +_ani_attachz ;18 + +; move *a4+,a0 ;xoff +; move a0,*a13(ATTACH_XOFF) +; move *a4+,a0 +; move a0,*a13(ATTACH_YOFF) + + move *a4+,a0,L + move a0,*a13(ATTACH_XOFF),L + move *a4+,a0 + move a0,*a13(ATTACH_ZOFF) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_slowmo ;19 + + move *a4+,a0 ;frame delay + move a0,@slowmo + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_waitrelease ;20 + + move *a13(BUT_VAL_CUR),a0 + + move *a4+,a1 ;button bit + btst a1,a0 ;still down? + jrz #button_up + + ;since we do the flip here, we have to update FACING_DIR too. + move *a13(NEW_FACING_DIR),*a13(FACING_DIR) + + move *a13(NEW_FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #right + + move *a13(OBJ_CONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + + movk 1,a0 + move a0,*a10(OANICNT) ;# ticks to hold cur frame + rets +#right + move *a13(OBJ_CONTROL),a14 + andni M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + + movk 1,a0 + move a0,*a10(OANICNT) ;# ticks to hold cur frame + rets + +#button_up + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_offset ;21 + + move *a4+,a1 ;x offset + move *a13(FACING_DIR),a0 + btst MOVE_RIGHT_BIT,a0 + jrnz #right + neg a1 +#right + move *a13(OBJ_XPOSINT),a0 + add a1,a0 + move a0,*a13(OBJ_XPOSINT) + + move *a4+,a1 ;y offset + move *a13(OBJ_YPOSINT),a0 + add a1,a0 + move a0,*a13(OBJ_YPOSINT) + + ;SCROLL_CTRL stuff + move *a13(SCROLL_Y),a0 + sub a1,a0 + move a0,*a13(SCROLL_Y) + + move *a4+,a1 ;z offset + move *a13(OBJ_ZPOSINT),a0 + add a1,a0 + move a0,*a13(OBJ_ZPOSINT) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_friction ;22 + + move *a4+,a0 ;friction value + move a0,*a13(OBJ_FRICTION) + + move *a13(ANIMODE),a0 + ori MODE_FRICTION,a0 + move a0,*a13(ANIMODE) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_min_yvel ;23 + +;sets YVEL to given value, UNLESS it's already higher. + + move *a4+,a0,L + move *a13(OBJ_YVEL),a14,L + cmp a0,a14 + jrge #set + move a0,*a13(OBJ_YVEL),L +#set move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_attachvel ;24 + + STRUCT 0 + LONG #XVEL + LONG #YVEL + LONG #ZVEL + LABEL #SIZE + + ;x velocity is always relative to attacker FACING_DIR + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a2,L ;proc attached to + jrz #not_attached + move *a2(ATTACH_PROC),a0,L + jrz #not_attached + + move *a4(#YVEL),a0,L + move a0,*a2(OBJ_YVEL),L + move *a4(#ZVEL),a0,L + move a0,*a2(OBJ_ZVEL),L + + move *a4(#XVEL),a0,L + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #xok + neg a0 +#xok + move a0,*a2(OBJ_XVEL),L + +#not_attached + jruc _next_command + +#******** +_ani_throw1 ;25 + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_sound ;26 + + move *a4+,a0 + cmpi run_snd,a0 + jrne #not_run + + ;if there's been another foot noise from this guy within the last + ; 12 ticks, give it a miss. + move @PCNT,a14 + zext a14,W + move *a13(FOOT_PCNT),a1 + sub a1,a14 + abs a14 + cmpi 12,a14 + jrlt #done + move @PCNT,a1 + move a1,*a13(FOOT_PCNT) + calla triple_sound + jruc #done + +#not_run + move a0,a0 + jrn #table_lookup + calla triple_sound + jruc #done + +#table_lookup + calla wrtable_sound + +#done + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_setfacing ;27 + + move *a13(NEW_FACING_DIR),a0 + move a0,*a13(FACING_DIR) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_pause ;28 + + ;hold current frame for a few ticks + move *a4+,a14 + move a4,*a10(OANIPC),L + move a14,*a10(OANICNT) + rets + + +#******** +_ani_ifstatus ;29 + + move *a4+,a0,L ;this is a conditional goto + move *a13(ANIMODE),a1 ;if MODE_STATUS set then + btst MODE_STATUS_BIT,a1 ;branch is taken + jrz #skip + + move a0,a4 ;new ani pc +#skip + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_code ;30 + + move *a4+,a0,L ;code to execute + move a4,*a10(OANIPC),L + PUSH a10 + call a0 + PULL a10 + jruc _next_command + +#******** +_ani_shaker ;31 + + push a10 + + move *a4+,a10,W ;shaker mode value + calla SHAKER2 + + pull a10 + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_changeanim ;32 + + move *a4+,a4,L + move a4,*a10(OANIPC),L + move a4,*a10(OANIBASE),L + +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_faceup ;33 + + movk MOVE_UP_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_UP_LEFT,a1 +#right move a1,*a13(FACING_DIR) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_facedown ;34 + + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_bouncerope ;35 + + movi ROPE_LEFT,a0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrle #dir_set + movi ROPE_RIGHT,a0 +#dir_set + movi ROPE_SIDES,a1 + move *a13(OBJ_ZPOS),a3,L + move *a4+,a2,W + move a4,*a10(OANIPC),L + jrnn #no_release + movi ROPE_SIDESR,a1 +#no_release + calla rope_command + movi 3ch,a0 + calla triple_sound + jruc _next_command + +#******** +_ani_shakeropes ;36 + + movi ROPE_BOUNCEUD,a1 + move *a4+,a2,W + move a4,*a10(OANIPC),L + + ;blow it off if we're outside + move *a13(INRING),a14 + jrnz _next_command + + ;force a2 into range, just to be safe... + andi 03h,a2 + + movi ROPE_BACK,a0 + calla rope_command + + movi ROPE_LEFT,a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrnz #cont + + movi ROPE_RIGHT,a0 +#cont + calla rope_command + + movi 3ch,a0 + calla triple_sound + + jruc _next_command + +#******** +_ani_bendrope ;37 + + movi ROPE_LEFT,a0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrle #dir_set + movi ROPE_RIGHT,a0 +#dir_set + movi ROPE_DOWNS,a1 + move *a13(OBJ_ZPOS),a3,L + move *a4+,a2,W + move a4,*a10(OANIPC),L + jrnn #no_release + movi ROPE_DOWNSR,a1 +#no_release + calla rope_command + jruc _next_command + +#******** +_ani_setspeed ;38 + + move *a4+,a0 + move a0,*a13(ANI_SPEED) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_leapatpos ;39 + +;WORD - #ticks to reach destination +;WORD - max distance to travel +;WORD - x,y,z offset of attack box (eg. attacker's fist) + +;NB - user must set TGT_XOFF,YOFF & ZOFF <-- these are the actual target + + + move *a4+,a8 ;# ticks + move *a4+,a9 ;max distance to travel + +#user + move *a13(TGT_XOFF),a1 ;target x + sll 16,a1 + + move *a4+,a0 ;attack x offset + sll 16,a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #right0 + neg a0 +#right0 + move *a13(OBJ_XPOS),a2,L + add a0,a2 ;att x + + sub a2,a1 ;def x - att x + move a1,a5 ;delta x + move a8,a0 ;ticks + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_XVEL),L + + +;to calculate YVEL taking into account gravity: +;use y-y0 = v0*t + 0.5*a*t^2 + + move a8,a1 + mpyu a8,a1 ;t^2 + move *a13(OBJ_GRAVITY),a0,L + mpyu a0,a1 ;a*t^2 + srl 1,a1 ;1/2*a*t^2 + + move *a13(TGT_YOFF),a0 ;target y + sll 16,a0 + + move *a4+,a14 ;attack y offset + sll 16,a14 + move *a13(OBJ_YPOS),a2,L ;y0 + sub a14,a2 + + sub a2,a0 ;a0 = a0-a2 (y - y0) + add a0,a1 + divu a8,a1 ;a1 = a1/a8 ( ((y-y0)+(1/2*a*t^2)) / t ) + + cmpi >0f0000,a1 + jrlt #yok + movi >0f0000,a1 +#yok move a1,*a13(OBJ_YVEL),L + + + move *a13(TGT_ZOFF),a1 ;target z + sll 16,a1 + + move *a4+,a0 ;attack z offset + sll 16,a0 + move *a13(OBJ_ZPOS),a2,L + add a0,a2 ;att z + + sub a2,a1 ;def z - att z + move a1,a6 ;delta z + move a8,a0 ;ticks + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_ZVEL),L + + + abs a5 + srl 16,a5 + move a5,a1 + mpyu a5,a1 ;deltax^2 + move a1,a5 + + abs a6 + srl 16,a6 + move a6,a1 + mpyu a6,a1 ;deltaz^2 + move a1,a0 + + add a5,a0 + calla square_root + + cmp a0,a9 ;a9-a0 (will we exceed max dist?) + jrgt #ok + + sll 8,a9 ;x 256 (8 bits fractional) + divu a0,a9 ;a9/a0 + + move a9,a1 + move *a13(OBJ_XVEL),a0,L + mpys a0,a1 ;scale down xvel + sra 8,a1 ;shift off fractional + move a1,*a13(OBJ_XVEL),L + + move a9,a1 + move *a13(OBJ_ZVEL),a0,L + mpys a0,a1 ;scale down yvel + sra 8,a1 ;shift off fractional + move a1,*a13(OBJ_ZVEL),L + +#ok + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_zero_xzvels ;40 + + clr a0 + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_ZVEL),L + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_rope_z ;41 + ;.word ANI_ROPE_Z,R_TOP,RZ_HIGH + + ;which rope has he hit? + move @right_rproc,a0,L + move *a13(OBJ_XPOS),a14,L + cmpi RING_X_CENTER<<16,a14 + jrgt #right + + move @left_rproc,a0,L +#right + move *a4+,a1,W ;rope index + move *a4+,a2,W ;action + calla set_rope_z + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_loop ;42 + + .ref arw_bwait + + move @p1rounds,a0 + cmpi 2,a0 + jrz #at_end + move @p2rounds,a0 + cmpi 2,a0 + jreq #at_end + + ;oooh, wait. If we've pinned someone, and announce_rnd_winner + ; is waiting on the result (they'll be waiting to wake up at + ; arw_bwait if they are) then we should wake it up. + move *a13(STATUS_FLAGS),a14 + btst B_PINNED,a14 + jrz #no_pin + + movi ANNC_PID,a0 + clr a1 + not a1 + calla EXISTP + jrnz #no_pin ;annc exists? + + move *a0(PWAKE),a14,L + cmpi arw_bwait,a14 + jrne #no_pin ;waiting for a pin? + + movk 1,a14 + move a14,*a0(PTIME) ;wake it up. + +#no_pin movk 1,a0 + move a0,*a10(OANICNT) + rets + +#at_end + jruc _ani_detach ;10 +; +; move a4,*a10(OANIPC),L +; jruc _next_command + + +#******** +;_ani_set_opp_getup ;43 +; +;;args: .word (GETUP_TIME) +; +; move *a4+,a0 +; +; move *a13(WHOIHIT),a14,L +; move a0,*a14(GETUP_TIME) +; +; move a4,*a10(OANIPC),L +; jruc _next_command +; + + +#******** +_ani_set_xvel ;44 + +;args: .long (XVEL) .word (MODE) ;if MODE=0 vel is absolute + ;if MODE=3 vel is new_face relative + move *a4+,a0,L + move *a4+,a1 + jrz #abs + dec a1 + jrz #face + dec a1 + jrz #hit + +;new_facing relative + move *a13(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a0 ;left + jruc #abs + +#hit +;hit relative + move *a13(PLYR_HIT_SIDE),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;hit from right + + neg a0 ;hit from left + jruc #abs +#face + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a0 ;left +#abs + move a0,*a13(OBJ_XVEL),L + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_ifnotstatus ;45 + + move *a4+,a0,L ;this is a conditional goto + move *a13(ANIMODE),a1 ;if MODE_STATUS clear then + btst MODE_STATUS_BIT,a1 ;branch is taken + jrnz #skip + + move a0,a4 ;new ani pc +#skip + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_slide_back + + move *a4+,a8 ;range + move *a4+,a9,L ;x-vel + move *a4+,a7,L ;new ani PC if no slide + move a4,*a10(OANIPC),L + + move *a13(ANIMODE),a14 ;was there a collision? + btst MODE_STATUS_BIT,a14 + jrz #no_slide + + + move *a13(WHOIHIT),a6,L + +; move *a6(PLYRMODE),a5 +; cmpi MODE_BLOCK,a5 +; jrz #no_slide + + move *a6(OBJ_XPOSINT),a5 + move *a13(OBJ_XPOSINT),a0 + + cmp a5,a0 ;a0-a5 + jrgt #hit_from_right + +;hit_from_left + move *a13(INRING),a0 + jrnz #outside1 + + PUSH a6,a13 + move a6,a13 + movi vln_right_rope,a6 + calla calc_line_x + PULL a6,a13 + move *a6(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmp a8,a0 + jrgt #no_slide + jruc #slide + +#outside1 + ;hit from left outside ring. + ; get left matedge first. if it's zero, or greater than our + ; x pos, check against right fence instead. + PUSH a6 + movi vln_left_matedge,a6 + calla calc_line_x + PULL a6 + TEST a0 + jrz #check_right_fence + move *a6(OBJ_XPOSINT),a1 + sub a1,a0 + jrlt #check_right_fence + + ;less than a nonzero left matedge val. check against it. + cmp a1,a8 + jrgt #no_slide + jruc #slide + +#check_right_fence + PUSH a6,a13 + move a6,a13 + movi vln_right_fence,a6 + calla calc_line_x + PULL a6,a13 + move *a6(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmp a8,a0 + jrgt #no_slide + jruc #slide + +#hit_from_right + move *a13(INRING),a0 + jrnz #outside2 + + PUSH a6,a13 + move a6,a13 + movi vln_left_rope,a6 + calla calc_line_x + PULL a6,a13 + move *a6(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmp a8,a0 + jrgt #no_slide + + neg a9 + jruc #slide +#outside2 + ;hit from right outside ring. + ; get right matedge first. if it's zero, or greater than our + ; x pos, check against left fence instead. + PUSH a6 + movi vln_right_matedge,a6 + calla calc_line_x + PULL a6 + TEST a0 + jrz #check_left_fence + move *a6(OBJ_XPOSINT),a1 + sub a0,a1 + jrlt #check_left_fence + + ;greater than a nonzero right matedge val. check against it. + cmp a1,a8 + jrle #no_slide + neg a9 + jruc #slide + +#check_left_fence + PUSH a6,a13 + move a6,a13 + movi vln_left_fence,a6 + calla calc_line_x + PULL a6,a13 + move *a6(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmp a8,a0 + jrgt #no_slide + neg a9 + +#slide + move a9,*a13(OBJ_XVEL),L + + + movi 3000h,a0 + move a0,*a13(OBJ_FRICTION) + + move *a13(ANIMODE),a0 + ori MODE_FRICTION,a0 + move a0,*a13(ANIMODE) + jruc _next_command + +#no_slide + move a7,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_clr_damage ;47 + + move a4,*a10(OANIPC),L +; calla clear_damage_log +; jruc _next_command + jruc _next_command1 + +#******** +_ani_set_zvel ;48 + +;args: .long (ZVEL) .word (MODE) ;if MODE=0 vel is absolute + ;if MODE=1 vel is facing relative + ;if MODE=2 vel is hit relative + move *a4+,a0,L + move *a4+,a1 + jrz #abs + dec a1 + jrz #face +;hit relative + move *a13(PLYR_HIT_SIDE),a14 + btst MOVE_UP_BIT,a14 + jrnz #abs ;hit from above + + neg a0 ;hit from below + jruc #abs +#face + move *a13(FACING_DIR),a14 + btst MOVE_DOWN_BIT,a14 + jrnz #abs ;down + neg a0 ;up +#abs + move a0,*a13(OBJ_ZVEL),L + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_checkword ;49 +;sets a word in the procs pdata area +; .word ANI_SETWORD,OFFSET,VAL + + move *a4+,a0 ;OFFSET + move a4,*a10(OANIPC),L + add a13,a0 + move *a0,a0 + jrz #clr + +;hit. set mode_status + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + jruc _next_command + + +#clr +;clear mode_status + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + jruc _next_command + + + + +#******** +_ani_face ;50 + + move *a4+,a0 + move a4,*a10(OANIPC),L + + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + xori MOVE_LEFT|MOVE_RIGHT,a0 +#no_flip + move a0,*a13(FACING_DIR) + + jruc _next_command + + +#******** +_ani_setword ;51 + +;sets a word in the procs pdata area +; .word ANI_SETWORD,OFFSET,VAL + + move *a4+,a0 ;OFFSET + add a13,a0 + move *a4+,a1 ;VAL + move a1,*a0 + move a4,*a10(OANIPC),L + +; jruc _next_command + jruc _next_command1 + +#******** +_ani_getup ;52 + +;args: .word (GETUP_TIME) + + move *a4+,a0 + + move *a13(PLYR_DIZZY),a14 + jrnz #skip + + move a0,*a13(GETUP_TIME) + +#skip + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_getup_wait ;53 + + move *a13(GETUP_TIME),a0 + jrnz #no_done + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#no_done + movk 1,a0 + move a0,*a10(OANICNT) ;# ticks to hold cur frame + rets + +#******** +_ani_clr_stars ;54 + + clr a0 + move a0,*a13(STARS_FLAG) + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_shakeall ;55 + + movi ROPE_BOUNCEUD,a1 + move *a4+,a2,W + move a4,*a10(OANIPC),L + + ;blow it off if we're outside + move *a13(INRING),a14 + jrnz _next_command + + move @reduce_bog,a14 + jrnz _next_command + + ;force a2 into range, just to be safe... + andi 03h,a2 + + movi ROPE_BACK,a0 + calla rope_command + movi ROPE_LEFT,a0 + calla rope_command + movi ROPE_RIGHT,a0 + calla rope_command + movi ROPE_FRONT,a0 + calla rope_command + + movi 3ch,a0 + calla triple_sound + + jruc _next_command + +#******** +_ani_damage ;56 + + move *a4+,a0 + neg a0 ;positive a0 = health increase... + move *a13(PLYRNUM),a1 + calla adjust_health + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_start_dizzy ;57 + +; clr a0 +; move a0,*a13(PLYR_DIZZY) + PUSH a10 + move *a4+,a10 ;Where do stars go? + calla create_dizzy_proc + PULL a10 + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_clr_status ;58 + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_set_target ;59 + + move *a4+,a0 + move a4,*a10(OANIPC),L + calla set_target_offsets + jruc _next_command + +#******** +_ani_max_x ;60 + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_max_z ;61 + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_max_y_vel ;62 + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_superslave ;63 + +; long pointer to slave table +; word index into table + + move *a4+,a5,L ;* table + move *a4+,a6 ;index to frame & offsets + move a4,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #done + + move *a11(WRESTLERNUM),a0 + X32 a0 + add a5,a0 + move *a0,a5,L + .if DEBUG + move *a5,a0,L ;table defined? + jrnz #ok1 + LOCKUP +; no slave table defined! +#ok1 + .endif + + movi 80,a1 ;LWWW + mpyu a6,a1 + + add a1,a5 + move *a5+,a0,L ;* * image + move *a0,a0,L ;* image + .if DEBUG + jrnz #ok + LOCKUP +; image not loaded! (null pointer) +#ok + .endif + move a0,*a11(CUR_FRAME),L ;primary frame + + move *a5+,a0 ;xoff + move a0,*a13(ATTACH_XOFF) + move *a5+,a0 + move a0,*a13(ATTACH_YOFF) + + move *a11(OBJ_CONTROL),a3 + + move *a13(FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #right +;left + andni M_FLIPH,a3 ;clear flip bit + jruc #cnt +#right + ori M_FLIPH,a3 ;set flip +#cnt + move *a5+,a0 ;flip flag + jrz #skip + + xori M_FLIPH,a3 ;invert +#skip + move a3,*a11(OBJ_CONTROL) + +#done + jruc _next_command + +#******** +* +;same as old slaveanim except this executes +;the animation up to the 1st sleep + +_ani_slaveanim ;64 + + move *a4+,a5,L ;* table + move a4,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a2,L + move *a2(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #done + + move *a2(WRESTLERNUM),a0 + X32 a0 + add a0,a5 + move *a5,a0,L + jrnz #ok1 + .if DEBUG + LOCKUP +; no slave anim table defined! + .endif + jruc _next_command +#ok1 +;a0 = * animation script +;a2 = * wrestler process + + PUSH a10,a13 + + move a2,a13 + callr change_anim1a ;execute animation + + PULL a10,a13 + +#done + jruc _next_command + +#******** +_ani_rawsound ;65 + + move *a4+,a3,W + calla SNDSND + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_damageopp ;66 + ;works on attached proc, or WHOIHIT if there isn't one + + .ref any_hits,DAM_MULT,FIRSTATT_MESS + + STRUCT 0 + WORD #FULL_DAMAGE + WORD #REDUCED_DAMAGE + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + ;get victim process ptr + move *a13(ATTACH_PROC),a2,L + jrnz #attach_found + move *a13(WHOIHIT),a2,L +#attach_found + + ;get damage + move *a4(#FULL_DAMAGE),a0 + move *a2(LAST_DAMAGE),a14 + jrz #dmset + move @PCNT,a1 + sub a14,a1 + cmpi 30,a1 + jrgt #dmset + move *a4(#REDUCED_DAMAGE),a0 +#dmset + + ;ooh, wait. if the attacker has a NEXT_DAMAGE set, use that instead. + move *a13(NEXT_DAMAGE),a14 + jrz #nnd ;aw, skip it. + move *a13(SPECIAL_DAMAGE_TIME),a14,L + move @PCNT,a1,L + cmp a14,a1 + jrgt #nnd ;too late. blow it off. + move *a13(NEXT_DAMAGE),a0 + +#nnd neg a0 + + ;If this is the first unblocked hit this round and it did at least + ; 2 pixels of damage, give an award + + PUSH a0 + + cmpi -2,a0 + jrgt #n1uh + +;Taunt style high risk move - give 3x dmg + move *a13(RISK),a1 + jrz #no_mult + + PUSH a0,a8,a10 + move a13,a8 + btst 15,a1 + jrz #reg +;Taunt style high risk move - give 3x dmg + movi -1,a10 + movk 4,a14 + move a14,@DAM_MULT + .ref BONUS_MESS + CREATE0 BONUS_MESS +#reg + clr a1 + move a1,*a13(RISK) + PULL a0,a8,a10 + jruc #clear +#no_mult + + + move @any_hits,a14 + jrnz #n1uh ;skip if there's already been one + + move *a2(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jreq #n1uh ;skip if it was blocked + + RND_AWARD a13,FIRST_HIT_AWD + + PUSH a10 + move a13,a10 + CREATE MESSAGE_PID,FIRSTATT_MESS + PULL a10 + + movk 2,a14 + move a14,@DAM_MULT +#clear + movk 1,a14 + move a14,@any_hits +#n1uh PULL a0 + + +;MODS REQUIRED TO MAKE ADJUST_HEALTH WORK IN COMBO MODE + move *a2(PLYRNUM),a1 + PUSH A10,A13 + + MOVE A13,A10 + calla adjust_health + + PULL A10,A13 + +#done jruc _next_command + +#******** +_ani_rndper ;67 + + ;word probability + ;long jump here if hit + + move *a4+,a0,W + move *a4+,a2,L + calla RNDPER + jrls #done + + ;ANI_GOTO a2 + move a2,*a10(OANIPC),L + jruc _next_command + +#done + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_waithitopp ;68 + + ;NOTE: This is just like an ordinary "WL ticks,frame" type command + ; except that the ANICNT is zeroed if we hit the opponent. + + ;word max ticks to wait + ;long frame to hold + + move *a13(ANIMODE),a14 + ori MODE_WAITHITOPP,a14 + move a14,*a13(ANIMODE) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_attchimage ;69 + +;long *image,word zoff + + ;update OANIPC + move a4,a14 + addi 30h,a14 + move a14,*a10(OANIPC),L + + clr a14 +; move a14,*a13(ATTACHIMG_XOFF) +; move a14,*a13(ATTACHIMG_YOFF) + + move a14,*a13(ATTACHIMG_XOFF),L + + move *a4+,a0,L + jrz #offimg + + move *a4+,a1 + move a1,*a13(ATTACHIMG_ZOFF) +#off +attach_cont69 ;entry from attachimage2 #124 + move *a13(ATTIMG_CUR_FRAME),*a13(ATTIMG_LAST_FRAME),L + + move *a0,a0,L + .if DEBUG + jrnz #ok + LOCKUP +;NULL IMAGE POINTER!!! +#ok + .endif +;#offimg + move a0,*a13(ATTIMG_CUR_FRAME),L + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#offimg + move a0,*a13(ATTIMG_CUR_FRAME),L + addk 16,a4 + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + .if 0 + + move *a4+,a0,L + jrz #off + move *a4+,a1 + move a1,*a13(ATTIMG_ZOFF) + + move *a0,a0,L + .if DEBUG + jrnz #ok + LOCKUP +;NULL IMAGE POINTER!!! +#ok + .endif + + move a0,*a13(ATTIMG_CUR_FRAME),L + move *a13(ATTIMG_IMG),a8,L + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(ICMAP),a0,L + calla pal_find + jrnz #AOK + + LOCKUP ;can't find palette + +#AOK + move a0,*a8(OPAL) + move *a8(OIMG),a0,L + movb *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + + move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 +; setf 6,0,0 +; move a7,*a8(OCTRL) ;Write 6 low bits +; setf 16,1,0 + move *a8(OCTRL),a14 + srl 6,a14 + sll 6,a14 + or a7,a14 + move a14,*a8(OCTRL) + + move *a13(OBJ_CONST),*a8(OCONST) + + jruc _next_command + +#off + move a0,*a13(ATTIMG_CUR_FRAME),L + jruc _next_command + + .endif + +#******** +_ani_ifoppmode ;70 + + ;If opponent PLYRMODE is #MODE, jump to #BRANCH + ;If the high bit of #MODE is set, jump on PLYRMODE != ~#MODE + + STRUCT 0 + WORD #MODE + LONG #BRANCH + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(CLOSEST_NUM),a11 + X32 a11 + addi process_ptrs,a11 + move *a11,a11,L + move *a11(PLYRMODE),a14 + + move *a4(#MODE),a0 + jrn #not + cmp a0,a14 + jrne #done + jruc #branch + +#not + not a0 + cmp a0,a14 + jreq #done + +#branch + move *a4(#BRANCH),a0,L + move a0,*a10(OANIPC),L + +#done + jruc _next_command + +#******** +_ani_ifbuttons ;71 + +;buttons (WORD), ani address (LONG) + + move *a13(BUT_VAL_CUR),a0 + + + move *a4+,a1 ;button vals + move *a4+,a2,L ;ani address + +;;Drones shouldn't run accidentally +; move *a13(PLYR_TYPE),a14 +; cmpi PTYPE_DRONE,a14 +; jrz #fail + + and a1,a0 + cmp a1,a0 + jrne #fail + + move a2,a4 ;jump to new ani address +#fail + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_ifnohitblock ;72 + +;ani address (LONG) + + move *a4+,a0,L ;this is a conditional goto + move *a13(HITBLOCKER),a14 + jrnz skip? + move a0,a4 +skip? + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_end ;73 + move *a10(OANIMODE),a0 + ori MODE_END,a0 + move a0,*a10(OANIMODE) + jruc _exit + +#******** +_ani_ifrope ;74 + clr a11 + jruc _ani_ifrope_common + +#******** +_ani_ifnotrope ;75 + +#MODE equ 0 ;UHW +#DIST equ 10h ;UHW +#ADDR equ 20h ;UHL +#SIZE equ 40h + + ;word distance + ;long jump here if close enough + ;word mode RC_FRONT - check rope in front of caller + ; RC_BACK - check rope behind caller + ; RC_EITHER - check nearest rope + ; or'ed with: + ; RC_PLAYER - check for caller + ; RC_OPPONENT - check for caller's closest opponent + + movk 1,a11 + +_ani_ifrope_common + ;prepare OANIPC before doing anything else + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(INRING),a0 + jrnz #definitly_too_far + + ;;;a9 is process ptr of person for whom we're checking + move a13,a9 + move *a4(#MODE),a0 + sra 8,a0 ;mask off the low byte + jrz #player_set ;RC_PLAYER == 0 + + move *a13(CLOSEST_NUM),a9 + X32 a9 + addi process_ptrs,a9 + move *a9,a9,L +#player_set + + move *a4(#MODE),a14,W ;mode + andi 00FFh,a14 ;mask off the high byte + jrz #check_front ;RC_FRONT == 0 + dec a14 + jrz #check_back + + ;;;RC_(FRONT|BACK|EITHER) cases +#check_closest + move *a9(OBJ_XPOSINT),a1 + cmpi RING_X_CENTER,a1 + jrgt #check_right_rope + jruc #check_left_rope + +#check_front + move *a9(FACING_DIR),a0 + btst MOVE_RIGHT_BIT,a0 + jrnz #check_right_rope + jruc #check_left_rope + +#check_back + move *a9(FACING_DIR),a0 + btst MOVE_LEFT_BIT,a0 + jrnz #check_right_rope + jruc #check_left_rope + + + ;now do the actual check +#check_left_rope + movi vln_left_rope,a6 + jruc #check_xxx_rope +#check_right_rope + movi vln_right_rope,a6 +#check_xxx_rope + calla calc_line_x + move *a9(OBJ_XPOSINT),a1 + sub a0,a1 + abs a1 + move *a4(#DIST),a0 + cmp a0,a1 + jrle #close_enough + + + ;a11 is one if we are an IFNOTROPE command, so swap outcomes. +#too_far + dec a11 + jrz #close_enough +#definitly_too_far + jruc _next_command + +#close_enough + dec a11 + jrz #too_far + + move *a4(#ADDR),a0,L + move a0,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_opp_getup ;76 + +;if TIME is negative, then clear DELAY_METER + +#TIME equ 0 ;UHW +#SIZE equ 10h + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a1,L + jrnz #victim_set + + ;not attached. check WHOIHIT + move *a13(WHOIHIT),a1,L + jrz #done + +#victim_set + + move *a4(#TIME),a0 + jrnn #norm + + clr a14 + move a14,*a1(DELAY_METER) ;always do delay + + abs a0 ;make GETUP_TIME positive + +#norm + move *a1(PLYR_DIZZY),a14 + jrnz #done + + move a0,*a1(GETUP_TIME) +#done + jruc _next_command + +#******** +_ani_shakecorner ;77 + + movk 1,a2 + movi ROPE_BOUNCEUD,a1 + movi ROPE_BACK,a0 + calla rope_command + + movi ROPE_LEFT,a0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrle #dir_set + movi ROPE_RIGHT,a0 +#dir_set + + movi ROPE_BOUNCEUD,a1 + calla rope_command + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_singlestep ;78 + + + calla get_all_buttons_down + move a0,a0 + jrnz #done + move a1,*a10(OANICNT) + jruc _exit + +#done + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_superslave2 ;79 + +; # ticks +; attacker frame +; table address +; table index + + STRUCT 0 ;ANI_SUPERSLAVE data + WORD #TICKS + LONG #ATTACKER + LONG #TABLE + WORD #INDEX + LABEL #SIZE + + STRUCT 0 ;table data + LONG #FRAME + WORD #XOFF + WORD #YOFF + WORD #FLIP + LABEL #TABLE_SIZE + + ;set OANIPC + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + ;verify the links + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #done + + move *a4(#TICKS),a0 + move *a13(ANI_SPEED),a1 + mpyu a0,a1 + srl 8,a1 + move a1,*a10(OANICNT) + move *a4(#ATTACKER),a0,L + move *a0,a0,L + + .if DEBUG + jrnz #ok0 + LOCKUP ;image not loaded! (null pointer) +#ok0 + .endif + ;set the attacker frame + move a0,*a10(OCUR_FRAME),L + + + ;get the slave table + move *a11(WRESTLERNUM),a0 + X32 a0 + move *a4(#TABLE),a14,L + add a14,a0 + move *a0,a5,L + + .if DEBUG + move *a5,a0,L + jrnz #ok1 + LOCKUP ;no slave table defined! +#ok1 + .endif + + ;get the defender frame + move *a4(#INDEX),a14 + movi #TABLE_SIZE,a1 + mpyu a14,a1 + add a1,a5 + move *a5(#FRAME),a0,L + move *a0,a0,L + + .if DEBUG + jrnz #ok + LOCKUP ;image not loaded! (null pointer) +#ok + .endif + + ;set the defender frame + move a0,*a11(CUR_FRAME),L + + ;compute attach offsets + ; attach Y is raw(table)x + defender Xoff - attacker Xoff + + ;attacker anis in a8, defender in a9 + move *a13(CUR_FRAME),a0,L ;attacker frame + calla get_mpart_offsets + move a0,a8 + move *a11(CUR_FRAME),a0,L ;defender frame + calla get_mpart_offsets + move a0,a9 + + ;attacker size in a6, defender in a7 + move *a13(CUR_FRAME),a0,L ;attacker frame + calla get_mpart_xsize + move a0,a6 + move *a11(CUR_FRAME),a0,L ;defender frame + calla get_mpart_xsize + move a0,a7 + + ;compute Y offset + move *a5(#YOFF),a1 ;raw Y + + move a9,a14 + sra 16,a14 + sub a14,a1 ;sub defender aniY + + move a8,a14 + sra 16,a14 + add a14,a1 ;add attacker aniY + + move a1,*a13(ATTACH_YOFF) + + ;attach Xoff: + ; no flip: raw x + def xoff - att xoff + ; def flip: raw x + (def xsz - def xoff) - att xoff + + ;compute X offset + move *a5(#XOFF),a1 ;raw X + + ;defender part in a2 + move a9,a2 + andi 0FFFFh,a2 ;def xoff + sext a2 + callr #attacker_flip_test + jrc #af_match + + ;attack X's don't match up + move *a5(#FLIP),a14 + jrz #def_set + neg a2 + add a7,a2 ;def xsize + jruc #def_set + + ;attack X's match up +#af_match + move *a5(#FLIP),a14 + jrnz #def_set + neg a2 + add a7,a2 ;def xsize +#def_set + + ;attacker part in a3 + move a8,a3 + andi 0FFFFh,a3 ;att xoff + + add a2,a1 + sub a3,a1 + + ;if X's don't match, negate this + calla #attacker_flip_test + jrc #foox + neg a1 +#foox + + move a1,*a13(ATTACH_XOFF) + + + ;set flip bits properly + move *a11(OBJ_CONTROL),a3 + move *a13(FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #right +;left + andni M_FLIPH,a3 ;clear flip bit + jruc #cnt +#right + ori M_FLIPH,a3 ;set flip +#cnt + move *a5(#FLIP),a0 ;flip flag + jrz #skip + + xori M_FLIPH,a3 ;invert +#skip + move a3,*a11(OBJ_CONTROL) + +#done + jruc _exit + + SUBRP #attacker_flip_test + ;Test for attacker flip. When facing right, flip should be off. + ; When facing left, should be on. Set the carry flag if everything + ; is okay. + PUSH a0,a1 + move *a13(FACING_DIR),a0 + move *a13(OBJ_CONTROL),a1 + btst B_FLIPH,a1 + jrnz #ttf_set + +#ttf_clear + btst MOVE_LEFT_BIT,a0 + jrnz #ttf_flip + jruc #ttf_noflip +#ttf_set + btst MOVE_RIGHT_BIT,a0 + jrnz #ttf_flip + jruc #ttf_noflip + +#ttf_flip + PULL a0,a1 + clrc + rets +#ttf_noflip + PULL a0,a1 + setc + rets + +#******** +_ani_setoppmode ;80 + + STRUCT 0 + WORD #MODE + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a0,L + jrz #done + move *a0(ATTACH_PROC),a14,L + jrz #done + + move *a0(ANIMODE),a1 + move *a4(#MODE),a14 + or a14,a1 + move a1,*a0(ANIMODE) + +#done + jruc _next_command + +#******** +_ani_clroppmode ;81 + + STRUCT 0 + WORD #MODE + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a0,L + jrz #done + move *a0(ATTACH_PROC),a14,L + jrz #done + + move *a0(ANIMODE),a1 + move *a4(#MODE),a14 + andn a14,a1 + move a1,*a0(ANIMODE) + +#done + jruc _next_command + +#******** +_ani_oppoffset ;82 + + STRUCT 0 + LONG #TABLE + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a0,L + jrz #done + move *a0(ATTACH_PROC),a14,L + jrz #done + + move *a0(WRESTLERNUM),a1 + X32 a1 + + move *a4(#TABLE),a14,L + jrz #done + add a14,a1 + + move *a0(OBJ_XPOSINT),a2 + move *a1+,a3 + move *a0(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #right + neg a3 +#right + add a3,a2 + move a2,*a0(OBJ_XPOSINT) + + move *a0(OBJ_YPOSINT),a2 + move *a1+,a3 + add a3,a2 + move a2,*a0(OBJ_YPOSINT) + +#done + jruc _next_command + +#******** +_ani_ifblocked ;83 + + move *a4+,a0,L ;this is a conditional goto + move *a13(HITBLOCKER),a1 + jrz #skip + + move a0,a4 ;new ani pc +#skip + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_waitroll ;84 + + ;Zombies always roll up. + move *a13(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #zombie + + ;DEAD check + move *a13(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #dead + move *a13(I_WILL_DIE),a14 + jrz #notded + + ;I_WILL_DIE is set. If immobilize is zero, die and clear it. + move *a13(IMMOBILIZE_TIME),a14 + jrnz #repeat + clr a14 + move a14,*a13(IMMOBILIZE_TIME) + move a14,*a13(I_WILL_DIE) + SETMODE DEAD + + calla clear_lifebar + jruc #dead + + +#notded ;since we're not dead, set mode onground, just to be safe + movi MODE_ONGROUND,a14 + move a14,*a13(PLYRMODE) + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #repeat + + move *a13(GETUP_TIME),a0 + jrnz #repeat + +#roll ;clear stars + clr a0 + move a0,*a13(STARS_FLAG) + + calla do_roll + jrz #getup + +#repeat ;come back again next tick. + clr a0 + move a0,*a13(Z_BOUND) + movk 1,a0 + move a0,*a10(OANICNT) + rets + +#getup move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#dead ;if player, change anim to xxx_dead_anim. + ;if drone, figure out if we should become a zombie or not. + ; if so, set it and roll up until we can't roll no more. Then the + ; mode_dead code takes over so we don't worry about it here. + ; if not, change to xxx_dead_anim. + move *a13(PLYR_TYPE),a14 + cmpi PTYPE_PLAYER,a14 + jreq #die + + ;drone. + calla is_8_on_1 + jrc #fin + move @royal_rumble,a14 +; jrnz #nolife + jrnz #rlife + jruc #die + + +#rlife ;royal rumble. give the human team some life + movk 4,a0 + clr a1 + calla adjust_health + jruc #nolife + +#fin ;this is the final match. + ; see if there's another guy in the hopper. + ; if there is, store his number and become a zombie. + + ;first, tho, give the guy who killed us some life. + move @PSTATUS,a1 + dec a1 + + ;but not if he's already dead! + move a1,a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #nolife + + movk 8,a0 + calla adjust_health + +#nolife + move @FINAL_PTR,a0,L + movb *a0,a1 + jrn #die ;no more guys + + ;okay, become a zombie. set our zombie flag, store our new number + ; in NEW_WRESTLERNUM, increment FINAL_PTR, and clear our ZOMBIE_TIME. + addk 8,a0 + move a0,@FINAL_PTR,L + + ;7->8 hack + cmpi 7,a1 + jrne #vok + movk 8,a1 +#vok move a1,*a13(NEW_WRESTLERNUM) + move *a13(STATUS_FLAGS),a14 + ori M_ZOMBIE,a14 + move a14,*a13(STATUS_FLAGS) + + clr a14 + move a14,*a13(ZOMBIE_TIME) + + ;kill our specials + calla kill_smove_procs + + ;if we're right up against either Z edge of the ring, move away + ; a few pixels so we can roll. + move *a13(OBJ_ZPOSINT),a14 + cmpi RING_TOP+7,a14 + jrle #mvdn + cmpi RING_BOT-7,a14 + jrle #zombie + + ;move up a few + subk 7,a14 + move a14,*a13(OBJ_ZPOSINT) + jruc #zombie + +#mvdn ;move down a few + addk 7,a14 + move a14,*a13(OBJ_ZPOSINT) + +#zombie movi J_UP,a14 + move a14,*a13(DRN_JOY) + move a14,*a13(STICK_VAL_CUR) + jruc #roll + +#die movi xxx_dead_anim,a14 + move a14,*a10(OANIBASE),L + move a14,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_setoppfacing ;85 + + move *a13(ATTACH_PROC),a0,L + jrz #done + move *a0(ATTACH_PROC),a14,L + jrz #done + + move *a0(NEW_FACING_DIR),a14 + move a14,*a0(FACING_DIR) + +#done + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_ifopp ;86 + +; .word ANI_IFOPP,wrestler1,wrestler2,...,wrestler3,-1 +; sets STATUS if opponent is one of the wrestlers in the list, else clears. + + move *a13(CLOSEST_NUM),a11 + X32 a11 + addi process_ptrs,a11 + move *a11,a11,L + + move *a11(WRESTLERNUM),a11 + + ;clear mode_status + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + ;compare loop +#loop + move *a4+,a0,W + jrn #done + cmp a0,a11 + jrne #loop + + ;hit. set mode_status + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + ;run off the rest of the list +#runoff + move *a4+,a14 + jrnn #runoff + +#done + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_snot ;87 + + move a4,a0 + addi 32+4*16,a0 ;LWWWW + move a0,*a10(OANIPC),L + + push a10 + clr a1 ;proc ID + move *a4+,a7,L ;wake address + move a4,a8 ;* arguments + move a13,a11 + calla GETPRC + pull a10 + + jruc _next_command + +#******** +_ani_if_butcount_ge ;88 + + STRUCT 0 + WORD #BUTTON + WORD #BUTCNT + LONG #ADDR + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a4(#BUTTON),a14 + add a13,a14 + move *a14,a14 ;button count + move *a4(#BUTCNT),a0 + cmp a0,a14 ;#of presses needed to repeat + jrlt #fail + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail + jruc _next_command + + +********* +_ani_if_butcount_lt ;89 + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a4(#BUTTON),a14 + add a13,a14 + move *a14,a14 ;button count + move *a4(#BUTCNT),a0 + cmp a0,a14 ;#of presses needed to repeat + jrge #fail2 + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail2 + jruc _next_command + +#******** +_ani_if_rptcount ;90 + + STRUCT 0 + LONG #ADDR + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(RPT_COUNT),a14 + jrz #fail + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail + jruc _next_command + +********* +_ani_ifnot_rptcount ;91 + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(RPT_COUNT),a14 + jrnz #fail2 + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail2 + jruc _next_command + + +#******** +_ani_ringcheck ;92 + + ;If caller and nearest opponent's INRING values don't match, jump + ; to #BRANCH + + STRUCT 0 + LONG #BRANCH + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(CLOSEST_NUM),a11 + X32 a11 + addi process_ptrs,a11 + move *a11,a11,L + move *a11(INRING),a0 + move *a13(INRING),a1 + cmp a0,a1 + jreq #done + + move *a4(#BRANCH),a0,L + move a0,*a10(OANIPC),L + +#done + jruc _next_command + +#******** + +;--> use this in a PUPPET sequence +;this is the same as calling ani_debris except that +;everything is relative to the wrestler attached to me + +_ani_debrisat ;93 + + move a4,a14 + addi 5*16,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + jrz #done + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jreq db94 +#done + jruc _next_command + + +#******** +_ani_debris ;94 + + .ref react_debris + + move a4,a14 + addi 5*16,a14 + move a14,*a10(OANIPC),L + move a13,a11 +db94 + +;Stop debris if other smoke is going on! Bog reduction... + move @no_debris,a1 + move @reduce_bog,a14 + or a14,a1 + jrnz _next_command + +;Too much bog outside... + move *a13(INRING),a1 + jrnz _next_command + + push a10 + clr a1 ;proc ID + + movi react_debris,a7 ;wake address + move a4,a8 ;* arguments + calla GETPRC + pull a10 + + jruc _next_command + + +#******** +_ani_set_wrestler_xflip ;95 + + move *a13(FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #right + + move *a13(OBJ_CONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#right + move *a13(OBJ_CONTROL),a14 + andni M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_slideatopp ;96 + +; max ticks to slide +; target velocity +; max Z distance +; target area of opponent +; x,y,z offset of attack box + + + STRUCT 0 + WORD #MAX_TICKS + LONG #VELOCITY + WORD #MAX_Z_DIST + WORD #TRGT + WORD #ATT_X_OFF + WORD #ATT_Y_OFF + WORD #ATT_Z_OFF + LABEL #SIZE + + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(CLOSEST_NUM),a11 + X32 a11 + addi process_ptrs,a11 + move *a11,a11,L + + ;make sure both have the same INRING value + move *a11(INRING),a0 + move *a13(INRING),a1 + cmp a0,a1 + jrne _next_command + + move *a11(OBJ_XPOS),a1,L + move *a11(OBJ_ZPOS),a2,L + move *a11(OBJ_YPOS),a3,L + addi [256,0],a3 + + move *a11(OBJ_XVEL),a5,L + move *a11(OBJ_ZVEL),a6,L + move *a11(OBJ_YVEL),a7,L + move *a11(GROUND_Y),a8 + sll 16,a8 + addi [256,0],a8 + + move *a4(#MAX_TICKS),a0 + +#lp0 + add a5,a1 ;x + xvel + add a6,a2 ;z + zvel + + move a7,a7 + jrz #ok + + add a7,a3 ;y + yvel +;;;; subi GRAVITY,a7 ;yvel - gravity + + cmp a3,a8 ;hit ground? + jrgt #ok + move a8,a3 + jruc #dn +#ok + dsj a0,#lp0 +#dn + subi [256,0],a3 + + move a1,@oppx,L + move a2,@oppz,L + move a3,@oppy,L + + move *a4(#TRGT),a0 + jrn #user + calla set_target_offsets +#user + + move *a13(TGT_XOFF),a0 ;target x offset + sll 16,a0 + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #right1 + neg a0 +#right1 +;;; move *a11(OBJ_XPOS),a1,L + move @oppx,a1,L + add a0,a1 ;def target x + + move *a4(#ATT_X_OFF),a0 + sll 16,a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #right0 + neg a0 +#right0 + move *a13(OBJ_XPOS),a2,L + add a0,a2 ;att x + + + + move *a4(#VELOCITY),a0,L + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #pos + neg a0 ;left +#pos + move a0,*a13(OBJ_XVEL),L + + +; move *a4(#MAX_TICKS),a0 +; move a0,*a10(OANICNT) + + jruc _next_command + + +#******** +_ani_clr_butcount ;97 + + move a4,*a10(OANIPC),L + clr a14 +; move a14,*a13(PUNCHB_COUNT) +; move a14,*a13(BLOCKB_COUNT) +; move a14,*a13(SPUNCHB_COUNT) +; move a14,*a13(KICKB_COUNT) +; move a14,*a13(SKICKB_COUNT) + + move a14,*a13(PUNCHB_COUNT),L + move a14,*a13(SPUNCHB_COUNT),L + move a14,*a13(SKICKB_COUNT) + +;;; move a14,*a13(BUT_COUNT) + jruc _next_command + +#******** +_ani_set_rptcount ;98 + + STRUCT 0 + WORD #VAL + LABEL #SIZE + + ;If #VAL is negative, set RPT_COUNT to RND(0-#VAL) + + move *a4+,a0 + jrnn #set + + neg a0 + calla RNDRNG0 + +#set move a0,*a13(RPT_COUNT) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_dec_rptcount ;99 + + move *a13(RPT_COUNT),a0 + jrz #atz + dec a0 +#atz + move a0,*a13(RPT_COUNT) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_shadowtrail ;100 + + STRUCT 0 + LONG #PALETTE + WORD #RATE + WORD #LIFESPAN + LABEL #SIZE + + move *a4,a0 + jrnz #not_off + + addi 010h,a4 + move a4,*a10(OANIPC),L + + move *a13(SHADTRAIL_PROC),a0,L ;check proc still exists + jrz #huh + + calla KILL + + clr a0 + move a0,*a13(SHADTRAIL_PROC),L ;proc is toast +#huh + jruc _next_command + + + + +#not_off + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move @reduce_bog,a14 + jrnz _next_command + + push a10 + + move a4,a8 ;* arguments + move a13,a11 ;* wrestler proc + +; move *a13(PLYRNUM),a0 +; ori SHADGEN_PID,a0 ;proc ID +; move a0,a1 ;mask +; calla EXISTP ;does process already exist? +; jrz #no_proc + + move *a13(SHADTRAIL_PROC),a0,L + jrz #no_proc + ;exists, so restart with new arguments + move *a13(PLYRNUM),a1 + ori SHADGEN_PID,a1 ;same proc ID + movi shadow_gen,a7 ;wake address + calla XFERPROC + jruc #exit + +#no_proc + move *a13(PLYRNUM),a1 + ori SHADGEN_PID,a1 ;proc ID + movi shadow_gen,a7 ;wake address + calla GETPRC + move a0,*a13(SHADTRAIL_PROC),L + +#exit + pull a10 + jruc _next_command + + + +*** +;a8 = * arguments +;a11 = * wrestler proc + +shadow_gen + +#lp + move *a11(SHADTRAIL_PROC),a0,L + jrz #die + + move *a11(CUR_FRAME),a10,L ;* multi-part image + + clr a1 ;proc ID + movi shadow_proc,a7 ;wake address + calla GETPRC ;create proc for piece + +; move *a10(-10h),a9 ;# pieces +; addi (17-7)*16,a10 ;1st header + move *a10(IPCOUNT),a9 ;# pieces + addi IANI2Y,a10 ;1st header +#loop + dec a9 + jrz #done +; addi 7*16,a10 + addi (ICBZ-IANI2Y),a10 + + clr a1 ;proc ID + movi shadow_proc,a7 ;wake address + calla GETPRC ;create proc for piece + + jruc #loop +#done + move *a8(#RATE),a0 + calla PRCSLP ;sleep + + jruc #lp +#die + DIE + + +*** +;created from shadow_gen - creates an image, sleeps, delobj & dies +shadow_proc + + move *a8(#LIFESPAN),a9 + + movi Y_SCALE_MULTIPLIER,a0 + move *a11(OBJ_ZPOSINT),a1 + mpyu a0,a1 + move *a11(OBJ_YPOSINT),a0 + sll 16,a0 + sub a0,a1 ;y pos + + move *a11(OBJ_XPOS),a0,L ;x pos + + move a10,a2 ;* image + + move *a11(OBJ_PRIORITY),a3,L + srl 16,a3 ;z pos + + move *a11(OBJ_CONTROL),a4 ;DMA flags + + PUSHP a0,a1,a2,a3,a4 + SLEEP 1 + PULLP a0,a1,a2,a3,a4 + + move *a8(#PALETTE),a5,L + move a5,b0 ;palette to use + + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJP + + move a9,a0 ;lifespan + calla PRCSLP ;sleep +;#slp +; move @PCNT,a1 +; andi 1,a1 +; sll 12,a1 +; move *a8(OXPOS),a0 +; andi 0fffh,a0 +; or a1,a0 +; move a0,*a8(OXPOS) +; SLEEP 1 +; dsj a9,#slp + + calla DELOBJA8 + DIE + + +#******** +_ani_createproc ;101 + + STRUCT 0 + LONG #ADDR + WORD #PROCID + WORD #WORD1 + WORD #WORD2 + WORD #WORD3 + LABEL #SIZE + + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + move a13,a11 + + push a10 + move *a4(#PROCID),a1 ;proc ID + move *a4(#ADDR),a7,L ;wake address + addi #WORD1,a4 + move a4,a8 ;* arguments + calla GETPRC + pull a10 + + jruc _next_command + + +#******** +_ani_target ;102 + + ;sets leapat target to #TARGET1 or #TARGET2, depending on the + ; value of #MODE. + ;ex: ANI_TARGET,TGT_HEAD,TGT_KNEES,ATM_CLOSEST + ; target the victim's head or victim's knees, whichever + ; is closest. + + ;NOTE: This assumes that victim is on the ground. If he's + ; not, the results will be screwy. + + STRUCT 0 + WORD #TARGET1 ;TGT_??? + WORD #TARGET2 ;TGT_??? + WORD #MODE ;ATM_CLOSEST|ATM_FARTHEST + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + + ;first, figure out the orientation of the wrestlers + calla get_opp_process + move a0,a11 + + ;see if our flip bits match + move *a13(OBJ_CONTROL),a0 + move *a11(OBJ_CONTROL),a1 + xor a1,a0 + btst B_FLIPH,a0 + + ;if Z is set, the flips match and thus the we're facing our + ; opponent's feet, thus the #TARGET with the highest value + ; is closest. if Z isn't set, the opposite is true. + jrz #facing_feet + jruc #facing_head + +#facing_feet + move *a4(#MODE),a14 + cmpi ATM_CLOSEST,a14 + jreq #choose_highest + jruc #choose_lowest + +#facing_head + move *a4(#MODE),a14 + cmpi ATM_CLOSEST,a14 + jreq #choose_lowest + jruc #choose_highest + +#choose_highest + move *a4(#TARGET1),a0 + move *a4(#TARGET2),a1 + cmp a1,a0 + jrge #set + jruc #switch + +#choose_lowest + move *a4(#TARGET1),a0 + move *a4(#TARGET2),a1 + cmp a1,a0 + jrle #set + jruc #switch + +#switch + move a1,a0 +#set + calla set_target_offsets + calla tgt_ground + jruc _next_command + +#******** +_ani_hmbwait ;103 + + STRUCT 0 + WORD #HIT + WORD #MISSED + WORD #BLOCKED + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + ;first check for a block + move *a13(HITBLOCKER),a1 + jrz #check_hit + + move *a4(#BLOCKED),*a10(OANICNT) + jrz _next_command + rets + + ;then for a hit +#check_hit + move *a13(ANIMODE),a14 + btst MODE_STATUS_BIT,a14 + jrz #missed + + move *a4(#HIT),*a10(OANICNT) + jrz _next_command + rets + + ;assume a miss +#missed + move *a4(#MISSED),*a10(OANICNT) + jrz _next_command + rets + +#******** +_ani_safe_time ;104 + + move *a4+,a0 + move a0,*a13(SAFE_TIME) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +;this won't do anything unless they're attached + +_ani_setopp_plyrmode ;105 + + move *a4+,a0 + move a4,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jrne #done + + move *a11(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #done + + move a0,*a11(PLYRMODE) +#done + jruc _next_command + +#******** +;this won't do anything unless they're attached + +_ani_xflip_opp ;106 + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jrne #done + + move *a11(OBJ_CONTROL),a0 + xori M_FLIPH,a0 + move a0,*a11(OBJ_CONTROL) + +#done + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +;sets a LONG in wrestler PDATA +_ani_setlong ;107 + + STRUCT 0 + WORD #PDOFF + LONG #LONG + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a4(#PDOFF),a0 + add a13,a0 + move *a4(#LONG),a1,L + move a1,*a0,L + + jruc _next_command + +#******** +* +_ani_immobilize ;108 + + move *a4+,a0 + + move *a13(PLYR_DIZZY),a1 + jrnz #skip + move *a13(WHOIHIT),a1,L + + ;don't immobilize blockers! + move *a1(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jreq #skip + + move a0,*a1(IMMOBILIZE_TIME) + + ;clear his velocities too. + clr a0 + move a0,*a1(OBJ_XVEL),L + move a0,*a1(OBJ_YVEL),L + move a0,*a1(OBJ_ZVEL),L +#skip + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +;this flips your opponent based upon flip table +;this won't do anything unless they're attached + +_ani_xflip_tbl ;109 + + STRUCT 0 + LONG #FLIPTBL + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jrne #done + + move *a11(WRESTLERNUM),a0 + X16 a0 + + move *a4(#FLIPTBL),a1,L + add a1,a0 + move *a0,a0 + jrz #done ;no flip + + move *a11(OBJ_CONTROL),a0 + xori M_FLIPH,a0 + move a0,*a11(OBJ_CONTROL) +#done + jruc _next_command + +#******** +* this sets the vels for a wrestler you're attached to +* x-vel and z-vel are relative to attackers facing dir + + ;works on attached proc, or WHOIHIT if there isn't one + +_ani_setoppvels ;110 + + STRUCT 0 + LONG #XVEL + LONG #YVEL + LONG #ZVEL + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jreq #attach_match + + ;no attach. instead do this to WHOIHIT + move *a13(WHOIHIT),a11,L + +#attach_match + move *a4(#YVEL),*a11(OBJ_YVEL),L + + move *a4(#XVEL),a0,L + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #xok ;right + neg a0 ;left +#xok + move a0,*a11(OBJ_XVEL),L + + move *a4(#ZVEL),a0,L + btst MOVE_DOWN_BIT,a14 + jrnz #zok ;down + neg a0 ;up +#zok + move a0,*a11(OBJ_ZVEL),L + +#done + jruc _next_command + + +#******** +;same as waithitgnd except you pass an offset to add to ground Y +;(so you can make the guy hit the ground sooner) + +_ani_waithitgnd2 ;111 + + STRUCT 0 + WORD #OFFSET + LABEL #SIZE + + + move *a13(OBJ_YVEL),a0,L ;must have down velocity + jrp #no_gnd + + ;if we're the master and the attach is valid, check and see if + ; our puppet has hit the ground. + move *a13(ANIMODE),a14 + btst MODE_KEEPATTACHED_BIT,a14 + jrz #skip_pcheck + + move *a13(ATTACH_PROC),a0,L + jrz #skip_pcheck ;we're attached? + move *a0(ATTACH_PROC),a14,L + jrz #skip_pcheck ;they're attached? + cmp a13,a14 + jrne #skip_pcheck ;to each other? + + ;ah, but if the opponent's MODE_GHOST bit is set, ignore him + move *a0(ANIMODE),a14 + btst MODE_GHOST_BIT,a14 + jrnz #skip_pcheck + + move *a0(OBJ_YPOSINT),a1,W + move *a0(GROUND_Y),a2,W + move *a4(#OFFSET),a14 + add a14,a2 + cmp a2,a1 + jrle #hit_gnd + +#skip_pcheck + + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a2 + move *a4(#OFFSET),a14 + add a14,a2 + cmp a2,a0 ;a0-a1 + jrgt #no_gnd + +#hit_gnd + sll 16,a2 + move a2,*a0(OBJ_YPOS),L + + .REF SMALL_BOUNCE + CALLA SMALL_BOUNCE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + jruc _next_command + +#no_gnd + movk 1,a0 + move a0,*a10(OANICNT) ;# ticks to hold cur frame + rets + + +#******** +_ani_set_opp_xvel ;112 + +;args: .long (XVEL) .word (MODE) ;if MODE=0 vel is absolute + ;if MODE=1 vel is facing relative + ;if MODE=2 vel is hit relative + ;if MODE=3 vel is new_face relative + + move a4,a14 + addi 30h,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jrne #done + + move *a4+,a0,L + move *a4+,a1 + jrz #abs + dec a1 + jrz #face + dec a1 + jrz #hit + +;new_facing relative + move *a13(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a0 ;left + jruc #abs + +#hit +;hit relative + move *a13(PLYR_HIT_SIDE),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;hit from right + + neg a0 ;hit from left + jruc #abs +#face + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a0 ;left +#abs + move a0,*a11(OBJ_XVEL),L + +#done jruc _next_command + +#******** +_ani_set_attach ;113 + move *a13(WHOIHIT),a0,L + move a0,*a13(ATTACH_PROC),L + move a13,*a0(ATTACH_PROC),L + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_inc_combo_count ;114 + move *a13(COMBO_COUNT),a0 + inc a0 + move a0,*a13(COMBO_COUNT) + CMPI 8,A0 + JRNE NO_BESERKER + MOVI HES_JUST_GONE_BERSERK,A0 + CALLA IF_SILENT_ADD_VOICE +NO_BESERKER + + MOVE *a13(WHOIHIT),A0,L + JRZ PROBLEMS_SS + MOVI 30,A14 + move a14,*a0(IMMOBILIZE_TIME) +PROBLEMS_SS + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_clear_combo_count ;115 + move *a13(COMBO_COUNT),a0 + jrz #start_combo + CLR A0 + move a0,*a13(COMBO_COUNT) + MOVE *a13(ATTACH_PROC),A0,L + jrnz #ok + MOVE *a13(WHOIHIT),A0,L + jrnz #ok +;Fix + LOCKUP +#ok +; MOVE *A0(GETUP_TIME),A14 +; JRZ NO_WORRIES_MATEY +;Time opponent has to execute combo breaker + clr a14 + move a14,*a0(IMMOBILIZE_TIME) + MOVE A14,*A0(GETUP_TIME) + MOVI 10*60,A14 + MOVE A14,*A0(DELAY_METER) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#start_combo +;problem here! +;Used to stuff a 1 in COMBO_COUNT. +;Mark now writes a 0 to COMBO_COUNT, +;Jake now skips the write altoghter. +;which is correct? +; movk 1,a0 + clr a0 + move a0,*a13(COMBO_COUNT) + MOVE *a13(ATTACH_PROC),A0,L + jrnz #ok2 + MOVE *a13(WHOIHIT),A0,L + jrnz #ok2 +;Fix + LOCKUP +#ok2 +; MOVE *A0(GETUP_TIME),A14 +; JRZ NO_WORRIES_MATEY +;Time opponent has to execute combo breaker + MOVI 80,A14 + move a14,*a0(IMMOBILIZE_TIME) + move @PCNT,a14 + move a14,*a0(ANTI_COMBO_TIME) ;Time stamp + CLR A14 + MOVE A14,*A0(GETUP_TIME) +;NO_WORRIES_MATEY + MOVI 10*60,A14 + MOVE A14,*A0(DELAY_METER) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + + +#******** +_ani_add_move ;116 + move *a4+,a7 + move *a4+,a5 + move *a4+,a6 + + MOVE *A13(WHOIHIT),A0,L + MOVE *A0(PLYRMODE),A14 + CMPI MODE_DEAD,A14 + JREQ NO_ADD_MORE_JUICE + + mmtm sp,a0,a4,a8,a10 + calla ADD_TO_COMBO_COUNT + mmfm sp,a0,a4,a8,a10 + +NO_ADD_MORE_JUICE + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +; +;if num_ticks is negative then use default value +; +_ani_startattack ;117 + + STRUCT 0 + WORD #ATT_TYPE + WORD #NUM_TICKS + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a4(#ATT_TYPE),*a13(ATTACK_TYPE) + + move *a4(#NUM_TICKS),a1 + jrp #ok + + movk 30,a1 ;default tick count +#ok + move @round_tickcount,a0 + add a0,a1 + move a1,*a13(ATTACK_TIME) + + jruc _next_command + +#******** +_ani_changeanim_tbl ;118 + + STRUCT 0 + LONG #TABLE + LABEL #END + + move *a13(WRESTLERNUM),a0 + X32 a0 + move *a4(#TABLE),a14,L + add a14,a0 + move *a0,a0,L + + move a0,*a10(OANIBASE),L + move a0,*a10(OANIPC),L + + jruc _next_command + +#******** +_ani_if_rptcount_ge ;119 + + STRUCT 0 + WORD #VAL + LONG #ADDR + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(RPT_COUNT),a14 + move *a4(#VAL),a0,W + cmp a0,a14 + jrlt #fail + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail + jruc _next_command + +#******** +_ani_if_rptcount_lt ;120 + + STRUCT 0 + WORD #VAL + LONG #ADDR + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(RPT_COUNT),a14 + move *a4(#VAL),a0,W + cmp a0,a14 + jrge #fail + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail + jruc _next_command + + +#******** +_ani_waithitany ;121 + ;holds on current frame until you hit the ground or your opponent. + ;NOTE: This doesn't use the WAITHITOPP bit. We poll for a hit, + ; which, now that I think about it, was probably the better way + ; to implement WAITHITOPP anyway... + ;ALSO NOTE: This doesn't work if you're attached. People who + ; are attached have no business waiting for a blow to land. + + ;have we hit the ground? + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_gnd + + ;hit ground. make noise and quit. + calla SMALL_BOUNCE + jruc #hit + +#no_gnd ;have we hit our opponent? + move *a13(ANIMODE),a14 + btst MODE_STATUS_BIT,a14 + jrz #no_hit + +#hit move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#no_hit movk 1,a0 + move a0,*a10(OANICNT) ;# ticks to hold cur frame + rets + +#******** +_ani_draw_name ;122 + +;FIX!! +;This is bog! Check to see if we want messages before CREATE! + move a13,a8 + CREATE MESSAGE_PID,MOVE_NAME_ANNC + move *a4+,a14 + move a14,*a0(PA10),L + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_set_idiot ;123 + ;Allow players off screen on toss outs + movi 80,a0 + move a0,@allow_offscrn + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_attchimage2 ;124 + + STRUCT 0 + LONG #IMAGE + WORD #XOFF + WORD #YOFF + WORD #ZOFF + LABEL #SIZE + +; move *a4(#XOFF),*a13(ATTACHIMG_XOFF) +; move *a4(#YOFF),*a13(ATTACHIMG_YOFF) + + move *a4(#XOFF),*a13(ATTACHIMG_XOFF),L + move *a4(#ZOFF),*a13(ATTACHIMG_ZOFF) + move *a4(#IMAGE),a0,L + + addi #SIZE,a4 + jruc attach_cont69 + +#******** +_ani_ground ;125 + move *a13(GROUND_Y),a0 + move a0,*a13(OBJ_YPOSINT) + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_rot ;126 + + movk 1,a14 + move a14,*a10(OANICNT) + rets + +#******** +_ani_scroll_ctrl;127 + + STRUCT 0 + WORD #Y_VAL + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a4(#Y_VAL),a14 + jrn #cont + move a14,*a13(SCROLL_Y) + +#cont move *a13(STATUS_FLAGS),a14 + ori M_SCROLL_CTRL,a14 + move a14,*a13(STATUS_FLAGS) + + jruc _next_command + +#******** +_ani_clear_climb ;128 + clr a14 + move a14,*a13(CLIMBING_THRU) + inc a14 + move a14,*a13(SAFE_TIME) + + move a4,*a10(OANIPC),L +; jruc _next_command + jruc _next_command1 + +#******** +_ani_opp_face ;129 + + move *a4+,a0 + move a4,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jrne #done + + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + xori MOVE_LEFT|MOVE_RIGHT,a0 +#no_flip + move a0,*a11(FACING_DIR) +#done + jruc _next_command + +#******** +_ani_setflag ;129 + + move *a13(STATUS_FLAGS),a14,L + move *a4+,a0,L + or a0,a14 + move a14,*a13(STATUS_FLAGS),L + move a4,*a10(OANIPC),L + jruc _next_command1 + +#***************************************************************************** +* used inside anim commands - doesn't call animate_wrestler +;a0 = * animation script +;a2 = * wrestler process + + SUBR change_anim_anim + + move a0,*a2(ANIBASE),L + move a0,*a2(ANIPC),L + + movi GRAVITY,a0 ;reset gravity + move a0,*a2(OBJ_GRAVITY),L + clr a0 + move a0,*a2(ANIMODE) + movk 1,a0 + move a0,*a2(ANICNT) + + rets + +#***************************************************************************** +;primary animation +;a0 = * animation script + + SUBR change_anim1 + + move *a13(ANIMODE),a2 + btst MODE_END_BIT,a2 ;if anim has ended, then + jrnz change_anim1a ;always restart it + + move *a13(ANIBASE),a2,L + cmp a0,a2 + jreq #no_change + + SUBR change_anim1a + + move a0,*a13(ANIBASE),L + move a0,*a13(ANIPC),L + + clr a0 + move a0,*a13(ANIMODE) + movk 1,a0 + move a0,*a13(ANICNT) + + movi GRAVITY,a0 ;reset gravity + move a0,*a13(OBJ_GRAVITY),L + callr animate_wrestler1 + +#no_change + rets + +#***************************************************************************** +;secondary animation +;a0 = * animation script + + SUBR change_anim2 + + move *a13(ANIMODE2),a2 + btst MODE_END_BIT,a2 ;if anim has ended, then + jrnz change_anim2a ;always restart it + + move *a13(ANIBASE2),a2,L + cmp a0,a2 + jreq #no_change + + SUBR change_anim2a + + move a0,*a13(ANIBASE2),L + move a0,*a13(ANIPC2),L + + clr a0 + move a0,*a13(ANIMODE2) + movk 1,a0 + move a0,*a13(ANICNT2) + + callr animate_wrestler2 + +#no_change + rets + +#***************************************************************************** + + SUBR slaveanim_tbl + + .long wres_slave_anim ;Bret + .long wres_slave_anim ;Razor + .long wres_slave_anim ;Taker + .long wres_slave_anim ;Yokozuna + .long wres_slave_anim ;Shawn + .long wres_slave_anim ;BamBam + .long wres_slave_anim ;Doink + .long wres_slave_anim ;Adam + .long wres_slave_anim ;Lex + + + SUBR wres_slave_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_END + +#***************************************************************************** + + SUBR set_images + + PUSH a13 + + movi process_ptrs,a1 + movi NUM_WRES,a2 +#slp + move *a1+,a13,L + jrz #skp_mtp + PUSH a1,a2 + callr #set_image + PULL a1,a2 +#skp_mtp + dsj a2,#slp + + PULL a13 + rets + + +#set_image + +; CLR A5 +; MOVE A5,*A13(SCREENY) + + move *a13(OBJ_ZPOS),a0,L + ori [01000h,0],a0 + move *a13(INRING),a14 + jrz #inring + cmpi [015ach,0],a0 + jrgt #inring + + subi [01e5h,0],a0 ;below mat +#inring + move a0,*a13(OBJ_PRIORITY),L + + + move *a13(OBJ_XPOS),a5,L ;x val + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(OBJ_ZPOSINT),a1 + mpyu a0,a1 + move a1,a6 ;y val + + move *a13(OBJ_BASE),a3,L + + + move a3,a0 + movk MAX_PIECES,a1 + movi [-100,0],a14 ;set all images offscreen + move *a13(OBJ_PRIORITY),a2,L + clr a7 +#lp + move *a0+,a8,L + move a7,*a8(OSAG),L + move a14,*a8(OXVAL),L + move a6,*a8(OYVAL),L ;keep updating YVAL to keep priorities + move a2,*a8(OZVAL),L + dsj a1,#lp + +; move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops +; andni 00111b,a7 +; movi DMAWNZ,a0 +; andi 01111b,a0 +; or a0,a7 + + move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops + andi 0110000b,a7 + ori DMAWNZ,a7 + + clr a10 ;x offset + move *a13(GROUND_Y),a11 ;y offset + + +; move *a13(CUR_FRAME),a0,L +; move *a0(12*16),a0 ;shadow index + clr a0 ;<------temp!!!!!! + move a0,*a13(PLYR_SHADOW) +; X32 a0 +; addi shadows,a0 +; move *a0,a0,L + + movi shadow,a0 + +;make shadow low priority + + move *a13(OBJ_PRIORITY),a14,L + PUSH a14 + + movi [013c8h,0],a14 ;inside ring + move *a13(INRING),a1 + jrz #in + movi [0106Ah,0],a14 ;outside ring +#in + move a14,*a13(OBJ_PRIORITY),L + + callr #plot_object ;plot shadow + PULL a14 + move a14,*a13(OBJ_PRIORITY),L + + move *a8(OXPOS),a0 + + move *a13(ANIMODE),a14 + btst MODE_NOSHADOW_BIT,a14 + jrz #shadow_on + clr a0 +#shadow_on + andni 1,a0 + move @PCNT,a1 + andi 1,a1 + or a1,a0 + move *a8(OYPOS),a1 + andi 1,a1 + xor a1,a0 + move a0,*a8(OXPOS) ;shake shadow + + ;leave him off if in mode_invisible + move *a13(ANIMODE),a14 + btst MODE_INVISIBLE_BIT,a14 + jrnz #done2 + + + move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + + + clr a10 ;x offset + move *a13(OBJ_YPOSINT),a11 ;y offset + + + move *a13(CUR_FRAME),a0,L + callr #plot_object ;image + + move *a13(OBJ_PAL),a1 + move a1,*a8(OPAL) + +; move *a0(-10h),a4 ;# pieces + move *a0(IPCOUNT),a4 ;# pieces + + .if DEBUG + .bss part_count,16 + ;part count check + move a4,@part_count + .endif + +; addi (13+4-7)*16,a0 ;1st header + addi IANI2Y,a0 ;1st header +#loop1 + dec a4 + jrz #done1 +; addi 7*16,a0 + addi (ICBZ-IANI2Y),a0 + callr #plot_object ;image + + move *a13(OBJ_PAL),a1 + move a1,*a8(OPAL) + + jruc #loop1 +#done1 + + move *a13(CUR_FRAME),a9,L + move *a9(IANI2X),a14,L ;secondary X & Y + inc a14 ;should be 0 + jrz #no_2nd_piece + + move *a9(IANIOFFX),a10 ;display x offset + move *a9(IANI2X),a14 ;secondary X + sub a14,a10 + + move *a9(IANIOFFY),a1 ;display y offset + move *a9(IANI2Y),a14 ;secondary Y + sub a14,a1 + add a1,a11 + + move *a13(CUR_FRAME2),a0,L + callr #plot_object + + move *a13(OBJ_PAL),a1 + move a1,*a8(OPAL) + +; move *a0(-10h),a4 ;# pieces + move *a0(IPCOUNT),a4 ;# pieces + + .if DEBUG + ;part count check + move @part_count,a14 + add a4,a14 + cmpi 5,a14 + jrle #okay + LOCKUP ;too many pieces!!! +#okay + .endif + +; addi (13+4-7)*16,a0 ;1st header + addi IANI2Y,a0 ;1st header +#loop2 + dec a4 + jrz #done2 +; addi 7*16,a0 + addi (ICBZ-IANI2Y),a0 + callr #plot_object ;image + + move *a13(OBJ_PAL),a1 + move a1,*a8(OPAL) + + jruc #loop2 + +#no_2nd_piece + movi MODE_END,a0 ;don't bother animating + move a0,*a13(ANIMODE2) ;if no 2nd piece + +#done2 + +; move a13,a3 +; addi ATTACH_IMG1,a3 +; movk 4,a4 +;#attloop +; move *a3+,a8,L +; jrz #skip + +;set the x,y & z of image +;; LOCKUP + + move *a13(ATTIMG_IMG),a8,L + move *a13(ATTIMG_CUR_FRAME),a0,L + jrnz #onscr + + move a0,*a8(OXVAL),L + movi [-100,0],a0 ;set all images offscreen + move a0,*a8(OYVAL),L + rets + +#onscr + move *a13(ATTIMG_LAST_FRAME),a1,L + cmp a0,a1 + jreq #no_change + +;image has just changed + + move *a13(ATTIMG_IMG),a8,L + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + .if 1 + move *a0(ICMAP),a0,L + + .ref pal_getf + calla pal_getf +;;; calla pal_find + jrnz #AOK + + LOCKUP ;can't get palette + +#AOK + move a0,*a8(OPAL) + .endif + move *a8(OIMG),a0,L + movb *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + + move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + move *a13(OBJ_CONST),*a8(OCONST) + + move *a13(ATTIMG_CUR_FRAME),*a13(ATTIMG_LAST_FRAME),L + +#no_change + clr a1 + move *a13(ATTACHIMG_XOFF),a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + movi M_FLIPH,a1 + neg a0 +#no_flip + sll 16,a0 + add a5,a0 + move a0,*a8(OXVAL),L + + move *a8(OFLAGS),a0 + andni M_FLIPH,a0 + or a1,a0 + move a0,*a8(OFLAGS) + + move *a13(ATTACHIMG_YOFF),a0 + sll 16,a0 + neg a0 + add a6,a0 + move a0,*a8(OYVAL),L + + move *a13(OBJ_PRIORITY),a0,L + move *a13(ATTACHIMG_ZOFF),a1 + sll 16,a1 + add a1,a0 + move a0,*a8(OZVAL),L + + move *a13(OBJ_YPOSINT),a11 ;y offset + move *a8(OIMG),a0,L + move *a0(IANIOFFY),a1 + add a11,a1 ;add in Y pos & ani-offset + move a1,*a8(ODYOFF) ;display y offset + + move *a0(IANIOFFX),*a8(ODXOFF) + +#skip +; dsj a4,#attloop + + rets + +#plot_object + + move *a3+,a8,L ;* object + + move a5,*a8(OXVAL),L + move a6,*a8(OYVAL),L + + move *a13(OBJ_PRIORITY),*a8(OZVAL),L + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFX),a1 + add a10,a1 ;add in X ani-offset (if any) + move a1,*a8(ODXOFF) ;display x offset + + move *a0(IANIOFFY),a1 + add a11,a1 ;add in Y pos & ani-offset + move a1,*a8(ODYOFF) ;display y offset + + movb *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + move *a13(OBJ_CONST),*a8(OCONST) + + rets + + +#***************************************************************************** + + + +shadows + .ref shadow + .long shadow + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/ANIM.EQU b/ANIM.EQU new file mode 100755 index 0000000..04ebc49 --- /dev/null +++ b/ANIM.EQU @@ -0,0 +1,284 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 3/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + +****************************************************************************** +* +* ANIMATION COMMANDS + +ANI_ZIP equ 0 + 8000h +ANI_REPEAT equ 1 + 8000h +ANI_SETMODE equ 2 + 8000h +ANI_ZEROVELS equ 3 + 8000h +ANI_SETPLYRMODE equ 4 + 8000h +ANI_SET_YVEL equ 5 + 8000h +ANI_ATTACK_ON equ 6 + 8000h +ANI_ATTACK_OFF equ 7 + 8000h +ANI_LEAPATOPP equ 8 + 8000h +ANI_ATTACH equ 9 + 8000h +ANI_DETACH equ 10 + 8000h +ANI_WAITHITGND equ 11 + 8000h +ANI_XFLIP equ 12 + 8000h +ANI_BOUNCE equ 13 + 8000h +ANI_ATTACK_ON_Z equ 14 + 8000h +ANI_GRAVITY_ON equ 15 + 8000h +ANI_GRAVITY_OFF equ 16 + 8000h +ANI_GOTO equ 17 + 8000h +ANI_ATTACHZ equ 18 + 8000h +ANI_SLOWMO equ 19 + 8000h +ANI_WAITRELEASE equ 20 + 8000h +ANI_OFFSET equ 21 + 8000h +ANI_FRICTION equ 22 + 8000h +ANI_MIN_YVEL equ 23 + 8000h +ANI_ATTACHVEL equ 24 + 8000h +ANI_THROW1 equ 25 + 8000h +ANI_SOUND equ 26 + 8000h +ANI_SETFACING equ 27 + 8000h +ANI_PAUSE equ 28 + 8000h +ANI_IFSTATUS equ 29 + 8000h +ANI_CODE equ 30 + 8000h +ANI_SHAKER equ 31 + 8000h +ANI_CHANGEANIM equ 32 + 8000h +ANI_FACEUP equ 33 + 8000h +ANI_FACEDOWN equ 34 + 8000h +ANI_BOUNCEROPE equ 35 + 8000h +ANI_SHAKEROPES equ 36 + 8000h +ANI_BENDROPE equ 37 + 8000h +ANI_SETSPEED equ 38 + 8000h +ANI_LEAPATPOS equ 39 + 8000h +ANI_ZERO_XZVELS equ 40 + 8000h +ANI_ROPE_Z equ 41 + 8000h +ANI_LOOP equ 42 + 8000h +;ANI_UNUSED equ 43 + 8000h +ANI_SET_XVEL equ 44 + 8000h +ANI_IFNOTSTATUS equ 45 + 8000h +ANI_SLIDE_BACK equ 46 + 8000h +ANI_CLR_DAMAGE equ 47 + 8000h +ANI_SET_ZVEL equ 48 + 8000h +ANI_CHECKWORD equ 49 + 8000h +ANI_FACE equ 50 + 8000h +ANI_SETWORD equ 51 + 8000h +ANI_GETUP equ 52 + 8000h +ANI_GETUP_WAIT equ 53 + 8000h +ANI_CLR_STARS equ 54 + 8000h +ANI_SHAKEALL equ 55 + 8000h +ANI_DAMAGE equ 56 + 8000h +ANI_START_DIZZY equ 57 + 8000h +ANI_CLR_STATUS equ 58 + 8000h +ANI_SET_TARGET equ 59 + 8000h +ANI_MAX_X equ 60 + 8000h +ANI_MAX_Z equ 61 + 8000h +ANI_MAX_Y_VEL equ 62 + 8000h +ANI_SUPERSLAVE equ 63 + 8000h +ANI_SLAVEANIM equ 64 + 8000h +ANI_RAWSOUND equ 65 + 8000h +ANI_DAMAGEOPP equ 66 + 8000h +ANI_RNDPER equ 67 + 8000h +ANI_WAITHITOPP equ 68 + 8000h +ANI_ATTCHIMAGE equ 69 + 8000h + +ANI_IFOPPMODE equ 70 + 8000h +ANI_IFBUTTONS equ 71 + 8000h +ANI_IFNOHITBLOCK equ 72 + 8000h +ANI_END equ 73 + 8000h +ANI_IFROPE equ 74 + 8000h +ANI_IFNOTROPE equ 75 + 8000h +ANI_OPP_GETUP equ 76 + 8000h +ANI_SHAKECORNER equ 77 + 8000h +ANI_SINGLESTEP equ 78 + 8000h +ANI_SUPERSLAVE2 equ 79 + 8000h +ANI_SETOPPMODE equ 80 + 8000h +ANI_CLROPPMODE equ 81 + 8000h +ANI_OPPOFFSET equ 82 + 8000h +ANI_IFBLOCKED equ 83 + 8000h +ANI_WAITROLL equ 84 + 8000h +ANI_SETOPPFACING equ 85 + 8000h +ANI_IFOPP equ 86 + 8000h +ANI_SNOT equ 87 + 8000h + +ANI_IF_BUTCOUNT_GE equ 88 + 8000h +ANI_IF_BUTCOUNT_LT equ 89 + 8000h +ANI_IF_RPTCOUNT equ 90 + 8000h +ANI_IFNOT_RPTCOUNT equ 91 + 8000h + +ANI_RINGCHECK equ 92 + 8000h +ANI_DEBRISAT equ 93 + 8000h +ANI_DEBRIS equ 94 + 8000h +ANI_SET_WRESTLER_XFLIP equ 95 + 8000h +ANI_SLIDEATOPP equ 96 + 8000h +ANI_CLR_BUTCOUNT equ 97 + 8000h +ANI_SET_RPTCOUNT equ 98 + 8000h +ANI_DEC_RPTCOUNT equ 99 + 8000h + +ANI_SHADOWTRAIL equ 100 + 8000h +ANI_CREATEPROC equ 101 + 8000h +ANI_TARGET equ 102 + 8000h +ANI_HMBWAIT equ 103 + 8000h +ANI_SAFE_TIME equ 104 + 8000h +; +ANI_SETOPP_PLYRMODE equ 105 + 8000h +ANI_XFLIP_OPP equ 106 + 8000h +ANI_SETLONG equ 107 + 8000h +ANI_IMMOBILIZE equ 108 + 8000h +ANI_XFLIP_TBL equ 109 + 8000h +; +ANI_SETOPPVELS equ 110 + 8000h +ANI_WAITHITGND2 equ 111 + 8000h +ANI_SET_OPP_XVEL equ 112 + 8000h +ANI_SET_ATTACH equ 113 + 8000h +ANI_INC_COMBO equ 114 + 8000h +ANI_CLEAR_COMBO equ 115 + 8000h +ANI_ADD_MOVE equ 116 + 8000h +ANI_STARTATTACK equ 117 + 8000h +ANI_CHANGEANIM_TBL equ 118 + 8000h +ANI_IF_RPTCOUNT_GE equ 119 + 8000h +ANI_IF_RPTCOUNT_LT equ 120 + 8000h +ANI_WAITHITANY equ 121 + 8000h +ANI_DRAW_NAME equ 122 + 8000h +ANI_SET_IDIOT equ 123 + 8000h +ANI_ATTCHIMAGE2 equ 124 + 8000h +ANI_GROUND equ 125 + 8000h +ANI_ROT equ 126 + 8000h +ANI_SCROLL_CTRL equ 127 + 8000h +ANI_CLEAR_CLIMB equ 128 + 8000h +ANI_FACE_OPP equ 129 + 8000h +ANI_SETFLAG equ 130 + 8000h + +****************************************************************************** +* +* HUGE MACROS! + +LEAPATOPP .macro w1,w2,w3,w4,l1,w5,w6,w7,w8 + .word ANI_LEAPATOPP + .word :w1:,:w2:,:w3:,:w4: + .long :l1: + .word :w5:,:w6:,:w7:,:w8: + .endm + +****************************************************************************** +* +* MISC EQUATES + +AM_ABS equ 0 +AM_FACE_REL equ 1 +AM_HIT_REL equ 2 +AM_NEWFACE_REL equ 3 + +RC_FRONT equ 0 +RC_BACK equ 1 +RC_EITHER equ 2 + +RC_PLAYER equ 0 +RC_OPPONENT equ 0100h + +ATM_CLOSEST equ 0 +ATM_FARTHEST equ 1 + +****************************************************************************** +* +* ANIMATION MODE BITS + +MODE_NORMAL equ 0 + +MODE_END equ 01h ;animation has ended +MODE_END_BIT equ 0 + +MODE_INTURN equ 02h ;in a standing or walking turn (this is sort +MODE_INTURN_BIT equ 1 ; of a low-powered UNINT bit. + +MODE_UNINT equ 04h ;uninterruptable +MODE_UNINT_BIT equ 2 + +MODE_NOAUTOFLIP equ 08h ;don't set xflip automatically +MODE_NOAUTOFLIP_BIT equ 3 ;(based on facing dir) + +MODE_CHECKHIT equ 10h ;do offensive collision check +MODE_CHECKHIT_BIT equ 4 + +MODE_NOGRAVITY equ 20h ;gravity status 0=on 1=off +MODE_NOGRAVITY_BIT equ 5 + +MODE_FRICTION equ 40h ;friction on floor +MODE_FRICTION_BIT equ 6 + +MODE_NOCONFINE equ 80h ;don't confine player to ring +MODE_NOCONFINE_BIT equ 7 + +MODE_NOCOLLIS equ 100h ;throw out player-player collisions +MODE_NOCOLLIS_BIT equ 8 + +MODE_STATUS equ 200h ;general purpose status flag +MODE_STATUS_BIT equ 9 + +MODE_OVERLAP equ 400h ;allow player-player overlap +MODE_OVERLAP_BIT equ 10 + +MODE_GHOST equ 800h ;may fall through floor if attached +MODE_GHOST_BIT equ 11 + +MODE_NOSHADOW equ 1000h ;turn off shadow +MODE_NOSHADOW_BIT equ 12 + +MODE_KEEPATTACHED equ 2000h ;automatically keep opponent attached +MODE_KEEPATTACHED_BIT equ 13 + +MODE_WAITHITOPP equ 4000h ;zero ANICNT upon hitting opponent +MODE_WAITHITOPP_BIT equ 14 + +MODE_INVISIBLE equ 8000h ;don't display wrestler +MODE_INVISIBLE_BIT equ 15 + +****************************************************************************** +* +* SLAVE IMAGE MODES + +S2_GRAPPLE equ 0 +S4_GRAPPLE equ 1 +S3_GRAP_TO_HH equ 2 +S3_PILE_DRIVEN equ 3 +S3_HIP_TOSSED equ 4 +S_CHOKE_SLAMMED equ 5 + +****************************************************************************** +* +* LONG IMAGE OFFSETS FOR ANIMATION SEQUENCES + +FR1 equ 1*20h +FR2 equ 2*20h +FR3 equ 3*20h +FR4 equ 4*20h +FR5 equ 5*20h +FR6 equ 6*20h +FR7 equ 7*20h +FR8 equ 8*20h +FR9 equ 9*20h +FR10 equ 10*20h +FR11 equ 11*20h +FR12 equ 12*20h +FR13 equ 13*20h +FR14 equ 14*20h +FR15 equ 15*20h +FR16 equ 16*20h +FR17 equ 17*20h +FR18 equ 18*20h +FR19 equ 19*20h +FR20 equ 20*20h +FR21 equ 21*20h +FR22 equ 22*20h +FR23 equ 23*20h +FR24 equ 24*20h +FR25 equ 25*20h +FR26 equ 26*20h +FR27 equ 27*20h +FR28 equ 28*20h +FR29 equ 29*20h +FR30 equ 30*20h + +****************************************************************************** + + \ No newline at end of file diff --git a/ATTR.ASM b/ATTR.ASM new file mode 100755 index 0000000..04cda8d --- /dev/null +++ b/ATTR.ASM @@ -0,0 +1,3939 @@ +**************************************************************** +* +* Software: ? +* Initiated: ? +* +* Modified: Shawn Liptak 8/6/91 - Hiscore display and entry (Total carnage) +* Shawn Liptak 11/9/91 - Title screen +* Shawn Liptak 2/7/92 - Stripped for basketball +* Jason Skiles 12/9/93 - Stripped for WWF +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/9/93 12:35 +**************************************************************** + .file "attract.asm" + .title "attract mode" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "macros.h" + .include "game.equ" + .include "audit.equ" + .include "link.equ" + .include "sound.h" + + .include "imgtbl.glo" + .include "crowdimg.glo" + .include "fontsimg.glo" + .include "miscimg.glo" + .include "bgndtbl.glo" + .include "ropeimg.glo" + + .include "logo.tbl" + .include "logo.glo" + .include "dip.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref ADJ_PAGE,BAKMODS,BEATEN_TAB_ENTRIES,BGND_UD1 + .ref BLOW_0_TO_1,CLOSE_PROGRESS_SCREEN,CRD_SCRN2 + .ref DELETE_ANY_OFF_TOP,DUMRETS,GAMSTATE,HALT,GET_ADJ + .ref IRQSKYE,MOVE_ALL_OBJS_UP,RC_BYTEI,RD7FONT + .ref RESET_FROM_PIXEL_WIPE,RNDRNG0,RNDRNGS,RemapIO + .ref SET_UP_PIXEL_WIPE,SOUNDSUP,SPECIAL_WIPEOUT,STOP_ALL_OBJS + .ref STRCNRMO_2,WHICH_SCREEN,WIPEOUT + .ref copy_string,current_round + .ref dec_to_asc,dpageflip,draw_each_beaten_table_entry,fade_down + .ref fade_up,get_all_buttons_cur2,index1,match_cnt + .ref mess_cursx,mess_cursy,mess_line_spacing,nosounds + .ref p1rounds,p2rounds,page_addr,pal_clean,pal_getf,print_beaten + .ref print_hscores,print_string2,print_string_C2 + .ref print_winstreaks,setup_message,start_match + .ref starting_num,table_cmos_check,total_matches,triple_sound + .ref wrestler_mugs2,set_volume,INIT_LADDER_TABLE + .ref wsf14_ascii,wsf10_ascii,print_string + .ref message_ascii,mess_cursx2 + .ref osgemd_ascii,LADDER,CURRENT_LADDER,NUM_OPPS + .ref hscore_colcyc2,ogmd10_ascii,CLOSE_SCREEN_LINE + .ref OPEN_SCREEN_LINE,HORZTRN1,HORZTRN2,TOP_LEFT + .ref BOT_RIGHT,LINES,not_blank,doing_dcs_reset,QSNDRST + .REF MUSIC_HAP,JUDDER_SHADOW + .REF DRKTRPLTP + .ref STRCNRMO_1 + .ref _clk_rd + .ref _auto_update_save + .ref _GetTime + .ref print_message + .ref concat_string + .ref concat_rom_string + .ref print_string_C + .ref print_string_C2 + .ref copy_rom_string + .ref wgsf24_ascii + .ref wsf14_ascii + .ref WSF_R_P + .ref _tseconds + .ref _tminutes + .ref _thours + .ref _tday + .ref _tdate + .ref _tmonth + .ref _tyear + .ref WHERE_WRESTLMANIA_SPARKLES,SPRINKLE_GLINTS + .ref RANDOM_SPARKLE + .ref READ_DIP + .globl hstd_mod + .ref print_inter,belt_type + .ref draw_each_inter_table_entry + .ref INTER_TAB_ENTRIES + .REF print_tag + .REF RNDPER + .REF MAYBE_TOUGH_ENOUGH + .ref osgmd8_ascii,SGMD8WHT + .ref story_bgnd + .ref hscore_colcyc,hscore_colcyc2 + +****************************************************************************** +;symbols defined externally + +;ram + + BSSX hisclong ,16 ;!0=Show hiscore table longer + + BSSX SHOW_CRD_FLAG,16 ;Show credits in amode gameplay + + .bss cycram ,8*2*16 ;Palette cycle mem + .bss cycram2 ,7*2*16 ;^ + +; .bss team_cnts ,32 ;left team cnt, +16=rgt team cnt +; .bss stick ,32 ;stick ram for team selection + +; .bss loop, 16 ; + + .bss TEMP,16 + + .BSS AMODE_LOOPS,16 + .BSS DCS_PAL,16 + .BSS DCS_BIT_TABLE,(32*7)*(31*44) + + .BSS LOGOMOD_START,(40H*20)+32 + .BSS LOGOMOD_END,0 + + .bss bios_type,16 + .bss nb_save,16 + + .text + + +******************************** +* Attract mode (Process) + + + SUBR attract_mode + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + ;let the sound board reset finish up. + SLEEPK 8 + + clr a3 + calla SNDSND + + movi INAMODE,a14 ;set GAMSTATE + move a14,@GAMSTATE + + clr a0 ;clear matches since attmode cntr + move a0,@total_matches,W + MOVE A0,@AMODE_LOOPS + MOVE A0,@MUSIC_HAP + + movk 1,a0 + move a0,@dpageflip ;page flipping on + + calla display_unblank + + + + JSRP dan_test + + + + + + +; ;temp! +;#foo JSRP DO_HINTS +; jruc #foo + +#loop +* Please, stop messing with this ! If you want it changed, ask me ! - Jake + JSRP show_hstd +;TEST PURPOSES ONLY +; .ref show_wrestler_end_story +; .ref which_player +; .ref PSTATUS +; +; clr a14 +; move a14,@PSTATUS +; +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 1,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 2,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 3,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 4,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 5,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 6,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 8,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +;END TEST + + JSRP DCS_LOGO +; JSRP show_sports_logo + JSRP show_gameplay + JSRP creditscreen + JSRP show_title + JSRP show_gameplay + JSRP creditscreen + JSRP DO_HINTS + JSRP show_gen_tips + JSRP show_bios + movk 1,a14 + move a14,@bios_type + move @next_bio,a14 + move a14,@nb_save + dec a14 + andi 7,a14 + move a14,@next_bio + movi story_bgnd,a0 + JSRP show_bios_tips + clr a14 + move a14,@bios_type + move @nb_save,a14 + move a14,@nb_save + JSRP show_operatormsg + + calla RemapIO ;Remap the I/O + MOVE @AMODE_LOOPS,A0 + INC A0 + MOVE A0,@AMODE_LOOPS + + btst 0,a0 + jrnz #loop + JSRP creditscreen +; JSRP show_hstd + JSRP show_time_date + + MOVE @AMODE_LOOPS,A0 + andk 7,a0 + jrnz #loop + + JSRP show_copyright + JSRP aama_message + + clr a0 + move a0,@AMODE_LOOPS + move a0,@SOUNDSUP ;turn all sounds on + + jruc #loop + +aama_message + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + clr a0 ;movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + +; movi hstd_mod,a0 +; move a0,@BAKMODS,L +; calla BGND_UD1 ;create objects for background +; +; SLEEPK 2 + +; calla display_unblank + + + movi blue_grad_pal,a0 + JSRP do_the_grad_thang + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln1,a8 + movi [54+60-20,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln2,a8 + movi [54+60,>b1],a9 + JSRP STRCNRMO_2 + + clr a0 + movi [>0606,0000],a6 ;pal 0, color 17 + movi #ln2b,a8 + movi [54+60,>104],a9 + JSRP STRCNRMO_2 + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln3,a8 + movi [54+71,200],a9 + JSRP STRCNRMO_2 + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln4,a8 + movi [54+82,200],a9 + JSRP STRCNRMO_2 + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln5,a8 + movi [54+93,200],a9 + JSRP STRCNRMO_2 + + + clr a10 + movk 8,a11 + CREATE FADE_PID,fade_up + + movk 1,a0 + move a0,@DISPLAYON + + SLEEPK 2 + calla display_unblank + +;Explanation - We MUST allow the fade process created above +;to finish because if someone wacks out below, the fade +;process is still running and JakeO's code to do his wipe +;across the screen stuff for the high score table starts running. +;His code uses the FADERAM area for those screen wipes and if a fader +;is running, the data in those areas gets changed by the fader process. +;Unfortunately, some of the data he is using is used as pointers in a +;memory to memory copy loop and if those values get changed the memory to +;memory copy goes haywire and starts scribbling all over the place causing +;a lockup. NOTE - The errant writes CAN and do occur into the CMOS area. +;There are 4 ways to solve the problem. +; +; 1. Guarentee that the fader is allowed to run to completion. +; +; 2. Kill off the fader after wacking out. +; +; 3. Use a different area of memory for the screen wipes. +; +; 4. Shoot Jake. +; +;Not wanting to go to jail I chose option 3 cause we got plenty of memory. +; + SLEEPK 20 + + movi 4*TSEC,a10 + JSRP wait_on_butn + +; clr a10 +; movk 16,a11 +; CREATE FADE_PID,fade_down +; +; SLEEP TSEC +; +; calla display_blank + + RETP + +; movi CLSNEUT|TYPTEXT|SUBTXT,a0 +; calla obj_del1c + + +; calla display_on +; calla view_page_0 +; movi >40*6,a10 +; JSRP fadein_jsrp +; jruc amode_fade_retp + +; RETP + +#ln1 .string "AAMA PARENTAL ADVISORY",0 +#ln2 .string "LIFE-LIKE VIOLENCE",0 +#ln2b .string "- MILD",0 +#ln3 .string "CONTAINS SELECTED SCENES INVOLVING",0 +#ln4 .string "HUMAN-LIKE CHARACTERS ENGAGED IN",0 +#ln5 .string "COMBATIVE ACTIVITY.",0 + .byte 0 + .even + + +do_the_grad_thang + + calla pal_getf + + SLEEPK 2 + + clr a3 + movi >00000101,a1 + + movi 31,a10 +loop movi >00020190,a2 + movi >2000000,a4 + movi >800c,a5 + calla QDMAN ;dman + addi >01010000,a1 + addi >00020000,a3 + dsj a10,loop + + addi >00840000,a3 + + movi 32,a10 +loop2 movi >00020190,a2 + movi >2000000,a4 + movi >800c,a5 + calla QDMAN ;dman + subi >01010000,a1 + addi >00020000,a3 + dsj a10,loop2 + + SLEEPK 4 + + RETP + +************************************************************************** +* * +* dman - manual dma, all regs must be setup upon calling * +* a1 = [constant color,palette] * +* a2 = size [h,w] * +* a3 = destination [y,x] * +* a4 = starting address * +* a5 = [offset,control] * +* * +************************************************************************** +dman + +*manual dma (setup your own regs) +*inputs: +*a1: constant color:palette +*a2: vsize:hsize +*a3: destination y:x +*a4: sag +*a5: offset:control +qdman: + MMTM sp,a2,a4,a13 + jruc qdma1 + + +************************************************************************** +* * +* dma queue support routines * +* * +************************************************************************** +* +* qdma puts image on dma q +* inputs: +* a1: constant color:palette +* a3: destination y:x +* a5: offset:control +* a14: address of image header +* gets: a2=h/w; a4=sag +* +;qdma +; mmtm sp,a2,a4,a13 +; move *a14,a2,l ;get vsize:hsize +; move *a14(isag),a4,l ;get sag + +qdma1 +; movk 1,a13 +; move a13,@qdmaflg,w ;q being modified + + .ref DMAQCUR,DMAQ + + move @DMAQCUR,a13,L + cmpi DMAQ,a13 + jrls qdmax ;q overload, can it + + mmtm a13,a1,a2,a3,a4,a5 + move a13,@DMAQCUR,L + +; clr a13 +; move a13,@qdmaflg,w + +qdmax MMFM sp,a2,a4,a13 + rets + +;************************************************************************* + +blue_grad_pal + .word 32 + + .word 31 + .word 30 + .word 29 + .word 28 + .word 27 + .word 26 + .word 25 + .word 24 + .word 23 + .word 22 + .word 21 + .word 20 + .word 19 + .word 18 + .word 17 + .word 16 + + .word 15 + .word 14 + .word 13 + .word 12 + .word 11 + .word 10 + .word 9 + .word 8 + .word 7 + .word 6 + .word 5 + .word 4 + .word 3 + .word 2 + .word 1 + .word 0 + +************ clear screen routine ********************* + +;clr_scrn +; clr a0 +; mmtm sp,a1,a2,a3 +; move @displayon,a3,w +; clr a1 +; move a1,@displayon,w +;; callr dmaqwait ;wait on dma +; clr a1 +; move a1,@cmapsel,w ;select color map 0 +; movi screen,a1,l +; movi ((scrne-2000h)-screen)/32,a2,l +;clrlp move a0,*a1+,l +; dsjs a2,clrlp +; move a3,@displayon,w +; mmfm sp,a1,a2,a3 +; rets + + +#**************************************************************** +* show_gameplay + + SUBRP show_gameplay + + movk 1,a0 + move a0,@current_round + move a0,@match_cnt + + move a0,@p1rounds + move a0,@p2rounds + + movk 7,a0 + calla RNDRNG0 + cmpi 7,a0 + jrnz #bug + inc a0 + +#bug move a0,@index1 + + ;initialize NUM_OPPS and CURRENT_LADDER + ;choose at random a battle between #2 and #6 on the ladder + + clr a14 + move a14,@belt_type + + calla INIT_LADDER_TABLE + + movk 5,a0 + calla RNDRNG0 + addk 1,a0 + X32 a0 + addi LADDER,a0 + move a0,@CURRENT_LADDER,L + move *a0,a14,L + srl 24,a14 + move a14,@NUM_OPPS + + CALLR TURN_SOUNDS_OFF_IF_NEED + + JSRP CLOSE_PROGRESS_SCREEN + calla SPECIAL_WIPEOUT + +;Eventually, we should show just quick clips of cool gameplay. + movk 1,a0 + move a0,@SHOW_CRD_FLAG + + CALLR TURN_SOUNDS_OFF_IF_NEED + + CREATE AMODE_GAMEPLAY_PID,start_match + + CALLA MAYBE_TOUGH_ENOUGH + + SLEEP 3*60 + + movi 10*TSEC,a10 + JSRP wait_on_butn + +;Freeze action in interesting spots... +;knockout processes + movk 1,a0 + move a0,@HALT + +;Stop wrestler procs +;Stop sweat +;Allow shadows to still shake + + CREATE0 DO_SET_IMAGES + + movi ACTIVE,a3,L + +#lp move *a3,a3,L ;Get next + jrz #x ;End? + move *a3(PWAKE),a0,L + .ref DO_SET_IMAGES + cmpi DO_SET_IMAGES,a0 + jrz #lp + + move *a3(PTIME),a14 ;Add sleep + addi 3*60,a14 + move a14,*a3(PTIME) + jruc #lp +#x + SLEEP 60 + +;fade down + clr a10 + movk 16,a11 + CREATE FADE_PID,fade_down + + SLEEPK 32 + + calla display_blank + + clr a0 + move a0,@SHOW_CRD_FLAG + CALLA nosounds + + RETP + +TURN_SOUNDS_OFF_IF_NEED + ADJUST ADJMUSIC + JRNZ TURN_OFF_SOUNDS + + MOVE @AMODE_LOOPS,A0 + CMPI 2,A0 + JRLT SOUNDS_SHOULD_BE_ON +TURN_OFF_SOUNDS + MOVK 2,A0 + MOVE A0,@SOUNDSUP +SOUNDS_SHOULD_BE_ON + RETS + +#**************************************************************** +* Show an operator message if one has been entered + + STRUCTPD + WORD som_string + + + SUBR show_operatormsg + + calla ADJ_PAGE + movk CMESS_LINES,a2 ;>Check for a message + movi CUSTOM_MESSAGE,a7 +#cmlp + calla RC_BYTEI + jrnz #msg + addi CMESS_LINE_SIZE,a7 + dsj a2,#cmlp + jruc #x +#msg + JSRP GENERIC_DISPLAY + movk CMESS_LINES,a2 ;>Check for a message + movi CUSTOM_MESSAGE,a7 + movi [50,200],a9 +#prtlp + PUSHP a2,a7 + + calla ADJ_PAGE + + move a13,a2 + addi som_string,a2 +#getlp calla RC_BYTEI + movb a0,*a2 + addk 8,a2 + move a0,a0 + jrnz #getlp + + + movi GOLD,a0 + calla pal_getf + move a0,a6 + + move a13,a8 + addi som_string,a8 + clr a0 + movk 1,a10 + movi osgfont_t,a11 + PUSHP a9 + JSRP STRCNRMO_1 + PULLP a9 + + movi OBJLST,a14 + +#olp move *a14,a14,L ;A14=*Next + jrz #oend + move *a14(ODATA_p),a0,L + jrnz #olp + movi [>320,>320],a1 + move a1,*a14(ODATA_p),L + jruc #olp +#oend + +; PUSHP a6 +; SLEEPK 30 +; PULLP a6 + PULLP a2,a7 +#nxt + addi [45,0],a9 + + addi CMESS_LINE_SIZE,a7 + dsj a2,#prtlp + + SLEEP 2*60 + + movi 6*TSEC,a10 + JSRP wait_on_butn + + JSRP scrn_scaleout + + calla WIPEOUT + +#x RETP + +#***************************************************************************** + + + .def osgfont_t +osgfont_t + .long OSGEMD_EXP,OSGEMD_APO,OSGEMD_NUM,OSGEMD_DOL ;!"#$ + .long OSGEMD_SPC,OSGEMD_AND,OSGEMD_APO,OSGEMD_OBR ;%&'( + .long OSGEMD_CBR,OSGEMD_SPC,OSGEMD_SPC,OSGEMD_SPC ;)*+, + .long OSGEMD_DAS,OSGEMD_DOT,OSGEMD_SLS ;-./ + .long OSGEMD_0,OSGEMD_1,OSGEMD_2,OSGEMD_3,OSGEMD_4 + .long OSGEMD_5,OSGEMD_6,OSGEMD_7,OSGEMD_8,OSGEMD_9 + .long OSGEMD_COL,OSGEMD_SPC,OSGEMD_SPC,OSGEMD_SPC ;:;<= + .long OSGEMD_SPC,OSGEMD_QUE,OSGEMD_SPC ;>?@ + .long OSGEMD_A,OSGEMD_B,OSGEMD_C,OSGEMD_D + .long OSGEMD_E,OSGEMD_F,OSGEMD_G,OSGEMD_H + .long OSGEMD_I,OSGEMD_J,OSGEMD_K,OSGEMD_L + .long OSGEMD_M,OSGEMD_N,OSGEMD_O,OSGEMD_P + .long OSGEMD_Q,OSGEMD_R,OSGEMD_S,OSGEMD_T + .long OSGEMD_U,OSGEMD_V,OSGEMD_W,OSGEMD_X + .long OSGEMD_Y,OSGEMD_Z + .long OSGEMD_SPC,OSGEMD_SPC,OSGEMD_SPC,OSGEMD_END ;[\]^ + .long OSGEMD_BAK,OSGEMD_SPC,OSGEMD_SPC ;_` + + +#***************************************************************************** +* Show credits screen +* + + SUBRP creditscreen + + calla pal_clean + + movk 1,a10 + JSRP CRD_SCRN2 + movi AMODE_PID,a0 + move a0,*a13(PROCID) + + ;fade down +; clr a10 +; movk 16,a11 +; CREATE0 fade_down +; +; SLEEP TSEC + + RETP + + +#***************************************************************************** +* Show time and date +* + + SUBRP show_time_date + + calla READ_DIP + btst DPTDON_B,a0 + jrz #std_exit + + move @_clk_rd,a8,L ;Save current auto update state + move a8,@_auto_update_save,L + clr a8 ;Enable auto update + move a8,@_clk_rd,L + JSRP _GetTime + + SLEEPK 30 + + JSRP GENERIC_DISPLAY + + movi #date_time_prompt,a2 + calla print_message + + movi #day_of_week_setup,a2 + calla setup_message + move @_tday,a4 + cmpi 1,a4 + jrlt #bad_day + cmpi 8,a4 + jrlt #do_day +#bad_day + movk 1,a4 +#do_day + subk 1,a4 + sll 5,a4 + addi #day_of_week_table,a4 + move *a4,a4,L + calla print_string_C2 + + + move @_tmonth,a4 + cmpi 1,a4 + jrlt #bad_month + cmpi 13,a4 + jrlt #do_month +#bad_month + movk 1,a4 +#do_month + subk 1,a4 + sll 5,a4 + addi #month_table,a4 + move *a4,a4,L + calla copy_rom_string + + move @_tdate,a0 + cmpi 1,a0 + jrlt #bad_date + cmpi 32,a0 + jrlt #do_date +#bad_date + movk 1,a0 +#do_date + movi 31,a1 + calla dec_to_asc + calla concat_string + + movi #d_sep,a4 + calla concat_rom_string + + move @_tyear,a0 + jrn #bad_year + cmpi 99,a0 + jrlt #do_year +#bad_year + clr a0 +#do_year + cmpi 9,a0 + jrgt #year_gt_9 + movi #zero_year,a4 + PUSHP a0 + calla concat_rom_string + PULLP a0 +#year_gt_9 + movi 99,a1 + calla dec_to_asc + calla concat_string + + movi #date_setup,a2 + calla setup_message + calla print_string_C + + move @_thours,a0 + jrn #bad_hour + cmpi 24,a0 + jrlt #do_hour +#bad_hour + clr a0 +#do_hour + movi 12,a1 + modu a1,a0 + jrnz #not_mid_or_noon + movk 12,a0 +#not_mid_or_noon + movi 13,a1 + calla dec_to_asc + calla copy_string + + movi #t_sep,a4 + calla concat_rom_string + + move @_tminutes,a0 + jrn #bad_minute + cmpi 60,a0 + jrlt #do_minute +#bad_minute + clr a0 +#do_minute + cmpi 9,a0 + jrgt #min_gt_9 + movi #zero_year,a4 + PUSHP a0 + calla concat_rom_string + PULLP a0 +#min_gt_9 + movi 60,a1 + calla dec_to_asc + calla concat_string + + movi #time_setup,a2 + calla setup_message + calla print_string_C + + + movi #its_time_to_message,a2 + calla print_message + + movi #wrestlemania_message,a2 + calla print_message + + SLEEPK 25 ; Min time to display + + movi TSEC*5,a2 +#wait_loop + PUSHP a2 + SLEEPK 1 + PULLP a2 + calla get_all_buttons_cur2 + jrnz #time_date_done + dsjs a2,#wait_loop +#time_date_done +; move @_auto_update_save,a8,L ;Restore Auto Update state + clr a8 + not a8 + move a8,@_clk_rd,L + +#std_exit + RETP + +#date_time_prompt + JAM_STR ogmd10_ascii,10,0,200,40,SGMD8GLD,print_string_C2 + .string "THE DATE AND TIME IS...",0 + .even + +#its_time_to_message + JAM_STR ogmd10_ascii,10,0,200,150,SGMD8GLD,print_string_C2 + .string "THAT MEANS IT'S TIME TO PLAY...",0 + .even + +#wrestlemania_message + JAM_STR wgsf24_ascii,10,0,200,180,WGFS_W_P,print_string_C2 + .string "WRESTLEMANIA",0 + .even + +#day_of_week_setup + JAM_STR wsf14_ascii,10,0,200,72,WSF_R_P,print_string_C2 + .even + +#date_setup + JAM_STR wsf14_ascii,10,0,200,92,WSF_R_P,print_string_C2 + .even + +#time_setup + JAM_STR wsf14_ascii,10,0,200,112,WSF_R_P,print_string_C2 + .even + +#d_sep + .string ", 19",0 + .even + +#t_sep + .string ":",0 + .even + +#zero_year + .string "0",0 + .even + +#monday_str + .string "MONDAY",0 + .even +#tuesday_str + .string "TUESDAY",0 + .even +#wednesday_str + .string "WEDNESDAY",0 + .even +#thursday_str + .string "THURSDAY",0 + .even +#friday_str + .string "FRIDAY",0 + .even +#saturday_str + .string "SATURDAY",0 + .even +#sunday_str + .string "SUNDAY",0 + .even + +#january_str + .string "JANUARY ",0 + .even +#february_str + .string "FEBRUARY ",0 + .even +#march_str + .string "MARCH ",0 + .even +#april_str + .string "APRIL ",0 + .even +#may_str + .string "MAY ",0 + .even +#june_str + .string "JUNE ",0 + .even +#july_str + .string "JULY ",0 + .even +#august_str + .string "AUGUST ",0 + .even +#september_str + .string "SEPTEMBER ",0 + .even +#october_str + .string "OCTOBER ",0 + .even +#november_str + .string "NOVEMBER ",0 + .even +#december_str + .string "DECEMBER ",0 + .even + +#day_of_week_table + .long #sunday_str + .long #monday_str + .long #tuesday_str + .long #wednesday_str + .long #thursday_str + .long #friday_str + .long #saturday_str + +#month_table + .long #january_str + .long #february_str + .long #march_str + .long #april_str + .long #may_str + .long #june_str + .long #july_str + .long #august_str + .long #september_str + .long #october_str + .long #november_str + .long #december_str + + + +#***************************************************************************** + + SUBRP show_copyright + + calla display_blank + calla WIPEOUT + + clr a0 + move a0,@dtype ;2D + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + move a0,@IRQSKYE + + SLEEPK 2 + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln1,a8 + movi [50+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln2,a8 + movi [62+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln3,a8 + movi [74+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln4,a8 + movi [86+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln5,a8 + movi [98+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln6,a8 + movi [110+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln7,a8 + movi [122+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln8,a8 + movi [134+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln9,a8 + movi [146+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + movi [200,0],a0 + movi [4bh-10,0],a1 + movi SMWWF2,a2 ;* image + movi 20000,a3 + movi DMAWNZ|M_NOCOLL,a4 + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJ + + clr a10 + movk 8,a11 + CREATE FADE_PID,fade_up + + movk 1,a0 + move a0,@DISPLAYON + + SLEEPK 2 + calla display_unblank + + SLEEPK 20 + + movi 3*TSEC,a10 + JSRP wait_on_butn + + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + calla obj_del1c + + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln10,a8 + movi [50+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln11,a8 + movi [62+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln12,a8 + movi [74+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln13,a8 + movi [86+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln14,a8 + movi [98+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln15,a8 + movi [110+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln16,a8 + movi [122+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln17,a8 + movi [134+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln18,a8 + movi [146+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln19,a8 + movi [158+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + SLEEPK 20 + + movi 3*TSEC,a10 + JSRP wait_on_butn + + RETP + +#ln1 .string "VIDEO GAME SOFTWARE DESIGNED AND DEVELOPED",0 +#ln2 .string "BY MIDWAY MANUFACTURING COMPANY",0 +#ln3 .string "(C) 1995 ASSIGNED TO ACCLAIM ENTERTAINMENT, INC.",0 +#ln4 .string "[ (C) 1995 TITANSPORTS, INC. ]",0 +#ln5 .string "ALL DISTINCTIVE NAMES AND CHARACTER LIKENESSES",0 +#ln6 .string "USED HEREIN ARE TRADEMARKS OF TITANSPORTS, INC.",0 +#ln7 .string "SUBLICENSED BY MIDWAY MANUFACTURING COMPANY",0 +#ln8 .string "FROM ACCLAIM ENTERTAINMENT INC.",0 +#ln9 .string "ALL RIGHTS RESERVED.",0 + +#ln10 .string "'WRESTLEMANIA'",0 +#ln11 .string "COMPOSED/PERFORMED BY MICHAEL STOCK,",0 +#ln12 .string "PETER WATERMAN, JAMES HART & J.J. MAGUIRE",0 +#ln13 .string "COURTESY OF TITANSPORTS INC. USED BY PERMISSION -",0 +#ln14 .string "ALL RIGHTS RESERVED",0 +#ln15 .string "'WRESTLEMANIA' BY WWF SUPERSTARS. (P) 1993 THE",0 +#ln16 .string "COPYRIGHT IN THIS SOUND RECORDING IS OWNED BY",0 +#ln17 .string "BMG EURODISC LIMITED AND IS USED BY PERMISSION.",0 +#ln18 .string "COMPOSED BY STOCK/WATERMAN/WWF AND PUBLISHED BY",0 +#ln19 .string "BMG MUSIC PUBLISHING LTD./ALL BOYS MUSIC LTD.",0 + .EVEN + + +#******************************************************** +* +* Print general tips +* + SUBRP print_gen_tips + + movi #gen_tip_mes,a2 + calla print_message + + MOVI [10,0],A0 + MOVI [21,0],A1 + + movi MVEBAR_R,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [13,0],A0 + MOVI [21+9,0],A1 + + movi SHADOW01,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + CREATE FLASH_PID,JUDDER_SHADOW + + movi #gen_tip_table,a1 + movi 60,a3 +#sgt_loop + move *a1+,a4,L + jrz #done + PUSHP a1,a3 + calla copy_rom_string + movi #gt_line_setup,a2 + calla setup_message + move a3,@mess_cursy + calla print_string_C + PULLP a1,a3 + addk 15,a3 + jruc #sgt_loop + +#done + calla hscore_colcyc +; calla hscore_colcyc2 + + RETP + +#gt_line_setup + JAM_STR ogmd10_ascii,6,0,200,90,SGMD8YEL,print_string + .even + +#gen_tip_mes + JAM_STR osgemd_ascii,10,0,200,10,BLUE,print_string_C2 + .byte "TONS O' TIPS",0,0 + .even + +#gen_tip1 + .string "PUT YOUR OPPONENT INTO A HEAD HOLD",0 + .even +#gen_tip1a + .string "USING TOWARD-TOWARD-POWERPUNCH.",0 + .even +#gen_tip2 + .string "FLING YOUR OPPONENT TO THE ROPES",0 + .even +#gen_tip2a + .string "USING AWAY-AWAY-POWERPUNCH.",0 + .even +#gen_tip3 + .string "WHEN IN CLOSE TO YOUR OPPONENT",0 + .even +#gen_tip3a + .string "USE AWAY-AWAY-PUNCH TO HIP TOSS HIM.",0 + .even +#gen_tip4 + .string "WHEN AN OPPONENT IS RUNNING AT YOU",0 + .even +#gen_tip4a + .string "USE POWERPUNCH & AWAY TO FLING HIM.",0 + .even + +#gen_tip_table + .long #gen_tip1 + .long #gen_tip1a + .long blank + .long #gen_tip2 + .long #gen_tip2a + .long blank + .long #gen_tip3 + .long #gen_tip3a + .long blank + .long #gen_tip4 + .long #gen_tip4a + .long 0 + + +#******************************************************** +* +* Show General Gameplay tips +* + SUBRP show_gen_tips + + movi hstd_mod,a0 + calla SET_UP_PIXEL_WIPE + JSRP print_gen_tips + SLEEPK 1 + JSRP BLOW_0_TO_1 + calla RESET_FROM_PIXEL_WIPE + + SLEEP TSEC + + movi 10*TSEC,a10 + JSRP wait_on_butn + + movi FLASH_PID,a0 + calla KIL1C + + movi CYCPID,a0 + calla KIL1C + + RETP + +#***************************************************************************** +* +* Show high score tables +* + + SUBRP show_hstd + + calla table_cmos_check ;make sure hscore CMOS is okay + + movi hstd_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + movi 1,a5 + + JSRP print_inter + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + MOVE @starting_num,a9 + DEC A9 + move a9,@starting_num + CMPI INTER_TAB_ENTRIES-6,A9 + JRLT SCROLL_TABLE_LOOP_2_I + MOVI INTER_TAB_ENTRIES-1,A9 + move a9,@starting_num + +SCROLL_TABLE_LOOP_2_I + clr a0 + move a0,@not_blank + MOVK 4,A11 + +SCROLL_TABLE_LOOP_I + MOVI 36,A10 +WAIT_ON_THOSE_BUTS_I + SLEEP 1 + calla get_all_buttons_cur2 + JRNZ JUST_WAIT_I + DSJS A10,WAIT_ON_THOSE_BUTS_I + PUSH A11 + CALLA DELETE_ANY_OFF_TOP + PULL A11 + sleep 1 + MOVE @starting_num,a9 + cmpi INTER_TAB_ENTRIES-1,a9 + JRGE JUST_WAIT_I + DEC A11 + JRZ DELAY_SCROLL_I +BACK_IN_AGAIN_I + inc a9 + move a9,@starting_num + PUSH A11 + CALLA draw_each_inter_table_entry + CALLA MOVE_ALL_OBJS_UP + PULL A11 + MOVI 34,A10 + jruc WAIT_ON_THOSE_BUTS_I + +DELAY_SCROLL_I + MOVK 3,A11 + SLEEP 15H ;scroll last three off + PUSH A11 + CALLA STOP_ALL_OBJS + PULL A11 + MOVI 85,A8 +MORE_WAITING_I + SLEEP 1 ;delay on each three displayed + calla get_all_buttons_cur2 + JRNZ JUST_WAIT_I + DSJS A8,MORE_WAITING_I + move @not_blank,a0 + jrnz JUST_WAIT_I + clr a0 + JRUC BACK_IN_AGAIN_I + +JUST_WAIT_I + + CALLA STOP_ALL_OBJS + movi 5*TSEC,a10 + JSRP wait_on_butn + + MOVI FLASH_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + +********************************************************************************* + movi hstd_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + movi 1,a5 + + JSRP print_beaten + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + MOVE @starting_num,a9 + DEC A9 + move a9,@starting_num + CMPI BEATEN_TAB_ENTRIES-6,A9 + JRLT SCROLL_TABLE_LOOP_2 + MOVI BEATEN_TAB_ENTRIES-1,A9 + move a9,@starting_num + +SCROLL_TABLE_LOOP_2 + clr a0 + move a0,@not_blank + MOVK 4,A11 + +SCROLL_TABLE_LOOP + MOVI 36,A10 +WAIT_ON_THOSE_BUTS + SLEEP 1 + calla get_all_buttons_cur2 + JRNZ JUST_WAIT + DSJS A10,WAIT_ON_THOSE_BUTS + PUSH A11 + CALLA DELETE_ANY_OFF_TOP + PULL A11 + sleep 1 + MOVE @starting_num,a9 + cmpi BEATEN_TAB_ENTRIES-1,a9 + JRGE JUST_WAIT + DEC A11 + JRZ DELAY_SCROLL +BACK_IN_AGAIN + inc a9 + move a9,@starting_num + PUSH A11 + CALLA draw_each_beaten_table_entry + CALLA MOVE_ALL_OBJS_UP + PULL A11 + MOVI 34,A10 + jruc WAIT_ON_THOSE_BUTS + +DELAY_SCROLL + MOVK 3,A11 + SLEEP 15H ;scroll last three off + PUSH A11 + CALLA STOP_ALL_OBJS + PULL A11 + MOVI 85,A8 +MORE_WAITING + SLEEP 1 ;delay on each three displayed + calla get_all_buttons_cur2 + JRNZ JUST_WAIT + DSJS A8,MORE_WAITING + move @not_blank,a0 + jrnz JUST_WAIT + clr a0 + JRUC BACK_IN_AGAIN + +JUST_WAIT + + CALLA STOP_ALL_OBJS + movi 5*TSEC,a10 + JSRP wait_on_butn + + MOVI FLASH_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + +*********************** + movi hstd_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + JSRP print_tag + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + movi 5*TSEC,a10 + JSRP wait_on_butn + +*********************** + movi hstd_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + JSRP print_hscores + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + movi 5*TSEC,a10 + JSRP wait_on_butn + + MOVI hstd_mod,A0 + CALLA SET_UP_PIXEL_WIPE + + JSRP print_winstreaks + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + movi 5*TSEC,a10 + JSRP wait_on_butn + + RETP + +hstd_mod + .long slateBMOD + .word 0,0 + .long 0 + + .if 1 + +rule_str + JAM_STR osgmd8_ascii,6,0,200,225,SGMD8WHT,print_string_C2 + .string "{WE MAKE THE GAMES THAT MAKE THE INDUSTRY}",0 + .even + + + + + + + SUBRP dan_test + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE ;Sky color + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + +;Turn on background module + MOVI #logo_mod,A0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + + movi #gen_tip_mes,a2 + calla print_message + + SLEEPK 1 + clr a10 + movk 4,a11 + CREATE FADE_PID,fade_up + + movk 1,a0 + move a0,@DISPLAYON + + calla display_unblank + +; SLEEPK 32 +; CREATE WATER_PID,MOVE_BACK_OFF_SCREEN + +;Turn some stuff on + CREATE BALL_PID,DISPATCH + + SLEEPK 32 + calla hscore_colcyc + +;Wait for 8 more seconds +#loop movi 118*TSEC,a10 + JSRP wait_on_butn + jruc #loop +;Timed out or hit a button + + + movi BALL_PID,a0 + calla KIL1C + movi BALL_ID,a0 + calla obj_del1c + + RETP + + +BALL_PID .equ 1 ;Process ID +BALL_ID .equ 2 ;IMG ID + + + SUBRP DISPATCH + + movi 32,a9 ;100 balls + +#lpx CREATE BALL_PID,ONE_BALL + SLEEPK 5 + + dsjs a9,#lpx + + DIE + + .ref PCNT + + SUBRP ONE_BALL +;Turn on 1 ball at center of screen, random vels + + movi 80000h,a0 + calla RNDRNG0 ;# between 0 and a0 + subi 40000h,a0 + move a0,a6 ;XVEL + + movi 60000h,a0 + calla RNDRNG0 ;# between 0 and a0 + subi 30000h,a0 + move a0,a7 ;YVEL + + movi [200,0],a0 ;200 pixels over in x + movi [160,0],a1 ;Y pos + + movi BALLD05A,a2 ;IMG to turn on + move @PCNT,a3 + andi 07fffh,a3 ;ZPOS + movi DMAWNZ,a4 ;IMG flags + movi BALL_ID,a5 ;ID + + + calla BEGINOBJW ;Begin obj with world added in +;a8=obj pointer + + +#lp SLEEPK 1 + + move *a8(OXVEL),a1,L + move *a8(OXPOS),a0 + cmpi 400,a0 + jrlo #xok + neg a1 + move a1,*a8(OXVEL),L + SLEEPK 2 +#xok + move *a8(OYVEL),a1,L + move *a8(OYPOS),a0 + cmpi 255,a0 + jrlo #yok + neg a1 + move a1,*a8(OYVEL),L + SLEEPK 2 +#yok + jruc #lp + +#gen_tip_mes + JAM_STR osgemd_ascii,10,0,200,20,BLUE,print_string_C2 + .byte "WRESTLEMANIA LITE!",0,0 + .even + + + + + +MOVE_BACK_OFF_SCREEN + + MOVE @WORLDTLX,A0,L + SUBI [2,0],A0 + MOVE A0,@WORLDTLX,L + + MOVE @WORLDTLY,A0,L + ADDI [2,0],A0 + MOVE A0,@WORLDTLY,L + + CALLA BGND_UD1 + + SLOOP 1,MOVE_BACK_OFF_SCREEN + + + + + + + + + + + + +LOGO_CREATLOOP + PUSH a0,a1,a3,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + move *a9+,a2,L + jrnz LOGO_CREATLOOP + RETS + +#logo_mod + .long SPORTBKBMOD + .word -400-(400*0),400*0 + .long SPORTBKBMOD + .word -400-(400*1),400*1 + .long SPORTBKBMOD + .word -400-(400*2),400*2 + .long SPORTBKBMOD + .word -400-(400*3),400*3 + .long SPORTBKBMOD + .word -400-(400*4),400*4 + .long SPORTBKBMOD + .word -400-(400*5),400*5 + .LONG 0 + +LOGO_LIST + .LONG SPRTLG01 + .LONG SPRTLG02 + .LONG SPRTLG03 + .LONG SPRTLG04 + .LONG SPRTLG05 + .LONG SPRTLG06 + .LONG SPRTLG07 + .LONG SPRTLG08 + .LONG SPRTLG09 + .LONG SPRTLG10 + .LONG SPRTLG11 + .LONG SPRTLG12 + .LONG SPRTLG13 + .LONG SPRTLG14 + .LONG SPRTLG15 + .LONG SPRTLG16 + .LONG SPRTLG17 + .LONG 0 + + +;MOVE_BACK_OFF_SCREEN +; +; MOVE @WORLDTLX,A0,L +; SUBI [2,0],A0 +; MOVE A0,@WORLDTLX,L +; +; MOVE @WORLDTLY,A0,L +; ADDI [2,0],A0 +; MOVE A0,@WORLDTLY,L +; +; CALLA BGND_UD1 +; +; SLOOP 1,MOVE_BACK_OFF_SCREEN +; + +; SUBRP show_big_wwf_title +; +; calla display_blank +; calla WIPEOUT ;CLEAN SYSTEM OUT +; +; clr a0 +; move a0,@HALT +; move a0,@dtype ;2d mode +; move a0,@IRQSKYE +; +; movk 1,a0 ;page flipping on +; move a0,@dpageflip +; +; SLEEPK 2 +; +; movi SCRNEND,a0 ;[256,405] +; move a0,@SCRNLR,L +; +; clr a0 +; move a0,@WORLDTLX,L +; move a0,@WORLDTLY,L +; +; movi #big_wwf_mod,a0 +; move a0,@BAKMODS,L +; calla BGND_UD1 ;create objects for background +; +; SLEEPK 2 +; +; calla display_unblank +; +; SLEEP TSEC/2 +; movi 10*TSEC,a10 +; JSRP wait_on_butn +; +; retp +; +;#big_wwf_mod +; .long bigwwfBMOD +; .word 0,0 +; .long 0 + +#***************************************************************************** +* +* Show lava title page +* + + SUBRP show_title + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + movi #title_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + SLEEPK 2 + + calla display_unblank + + + CREATE CYCPID,#cycle_lava + + + MOVI [102,7],A8 + MOVI WHERE_WRESTLMANIA_SPARKLES,A10 + MOVK 4,A9 + CREATE FLASH_PID,SPRINKLE_GLINTS + + CREATE ATTRACT_ANIMPID,RANDOM_SPARKLE + + SLEEP TSEC/2 + movi 10*TSEC,a10 + JSRP wait_on_butn + + movi CYCPID,a0 + calla KIL1C + MOVI FLASH_PID,A0 + calla KIL1C + MOVI ATTRACT_ANIMPID,A0 + calla KIL1C + + RETP + + + SUBRP show_title2 + + CREATE CYCPID,#cycle_lava + + SLEEP TSEC/2 + movi 8*TSEC,a10 + JSRP wait_on_butn + + movi CYCPID,a0 + calla KIL1C + +;fade down + clr a10 + movk 16,a11 + CREATE FADE_PID,fade_down + + SLEEP TSEC + + calla display_blank + + RETP + +#title_mod + .long NTITLESCBMOD + .word 0,0 + .long 0 + +#cycle_lava + movi #cyc_t,a9 +#lp0 + move *a9+,a0,L + + calla pal_getf + move a0,a8 ;Pal thats needs changing + + move *a9,a0,L + jrz #cycle_lava + + calla pal_getf + move a0,a11 ;Pal to change into + + movi BAKLST,a14 +#lp + move *a14,a14,L + jrz #x + move *a14(OPAL),a2 + cmp a8,a2 + jrne #lp +;Found matching pal + move a11,*a14(OPAL) + jruc #lp + +#x SLEEP 5 + jruc #lp0 + +#cyc_t .long LAVA1_P + .long LAVA2_P + .long LAVA3_P + .long LAVA4_P + .long LAVA5_P + .long LAVA6_P + .long LAVA7_P + .long LAVA8_P + .long LAVA10_P + .long LAVA10_P + .long LAVA10_P +; .long LAVA9_P + .long LAVA10_P + .long LAVA8_P + .long LAVA7_P + .long LAVA6_P + .long LAVA5_P + .long LAVA4_P + .long LAVA3_P + .long LAVA2_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long 0 + + .endif + + +;Keep this code around +;#***************************************************************************** +;* +;* Show WWF logo +; +; SUBRP show_big_wwf_logo_screen_thingie +; +; calla display_blank +; calla WIPEOUT ;CLEAN SYSTEM OUT +; +; clr a0 +; move a0,@HALT +; move a0,@dtype ;2d mode +; move a0,@IRQSKYE +; +; movk 1,a0 ;page flipping on +; move a0,@dpageflip +; +; SLEEPK 2 +; +; movi SCRNEND,a0 ;[256,405] +; move a0,@SCRNLR,L +; +; clr a0 +; move a0,@WORLDTLX,L +; move a0,@WORLDTLY,L +; +; movi #blank_mod,a0 +; move a0,@BAKMODS,L +; calla BGND_UD1 ;create objects for background +; +; SLEEPK 2 +; +; calla display_unblank +; +; SLEEPK 10 +; +; movi #logo_mod,a0 +; CALLA SET_UP_PIXEL_WIPE +; +; SLEEPK 1 +; +; JSRP BLOW_0_TO_1 +; +; +; SLEEP TSEC/2 +; movi 8*TSEC,a10 +; JSRP wait_on_butn +; +;;fade down +; clr a10 +; movk 16,a11 +; CREATE0 fade_down +; +; SLEEP TSEC +; +; calla display_blank +; +; RETP +; +;#logo_mod +; .long comesoonBMOD +; .word 0,0 +; .long 0 +;#blank_mod +; .long wwfblankBMOD +; .word 0,0 +; .long 0 + +#***************************************************************************** +* +* Show wrestler bios +* + .bss next_bio,16 + + SUBRP show_bios + + movi #bio_mod,a0 + SUBRP show_bios_tips + CALLA SET_UP_PIXEL_WIPE + + movb @next_bio,a10 + andi 00001111b,a10 + inc a10 + cmpi 8,a10 + jrlt #in_range + clr a10 +#in_range + + ;draw the logo + PUSH a10 + movb a10,@next_bio + + + MOVI 018h,a3 + MOVI 00bh,a4 + MOVI #bio_logos,a5 + clr a7 + + CALLR MAKE_UP_LOGO + + ;draw the mugshot + PULL a10 + PUSH a10 + X32 a10 + addi wrestler_mugs2,a10 + move *a10,a9,L + movi [017ah,0],a0 + movi [0Afh,0],a1 + + move *a9+,a2,L + clr a3 + movi DMAWNZ|M_FLIPH,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + +#mugcreatloop + PUSH a0,a1,a3,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + move *a9+,a2,L + jrnz #mugcreatloop + + + .ref wrestler_attributes,attbars + ;attributes + movi [0ffh,0],a0 + movi [0aeh,0],a1 +; movi ATTPL_G,a2 +; movi 10,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 +; PUSH a0,a1,a4,a5,a6,a7 +; calla BEGINOBJ +; PULL a0,a1,a4,a5,a6,a7 +; subi 2,a1 + movi ATT_TXT,a2 + movk 11,a3 + PUSH a0,a1 + calla BEGINOBJ + PULL a0,a1 + + + ;attribute bars + PULL a10 + PUSH a10 + addi [61,0],a0 + addi [12,0],a1 + movi ATTMTR_0,a2 + movi 11,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + + movi 4,a9 ;bar count + X64 a10 + addi wrestler_attributes,a10 + +#abc_loop + PUSH a0,a1,a3,a4,a5,a6,a7 + move *a10+,a2,W + X32 a2 + addi attbars,a2 + move *a2,a2,L + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + addi [8,0],a1 + dsj a9,#abc_loop + + move @bios_type,a14 + jrnz show_wres_tips + + ;print the bio text + ;a11 becomes the halfwidth for current wrestler + + PULL a10 + PUSH a10 + X32 a10 + addi #bio_data,a10 + move *a10,a10,L + move *a10+,a11,W + + movi 20,a14 + move a14,@mess_line_spacing + +; movi #bio_setup1,a2 +; calla setup_message +; movi #bio_center,a14 +; sub a11,a14 +; move a14,@mess_cursx +; movi #bio_message1,a4 +; calla print_string2 +; +; movi #bio_setup2,a2 +; calla setup_message +; movi #bio_center,a14 +; sub a11,a14 +; move a14,@mess_cursx +; movi #bio_message2,a4 +; calla print_string2 +; + + movi #bio_setup1,a2 + calla setup_message + + ;from text + movi #bio_y,a14 + move a14,@mess_cursy + movi #bio_center,a14 + move a14,@mess_cursx + + move *a10+,a4,L + calla print_string2 + + ;weight + + movi #bio_y+50,a14 + move a14,@mess_cursy + movi #bio_center,a14 + addi 16,a14 + move a14,@mess_cursx + + move *a10+,a0,W + movi 999,a1 + calla dec_to_asc + calla copy_string + calla print_string + + movi wsf10_ascii,a0 + move a0,@message_ascii,L + movi #pounds,a4 + movi #bio_y+54,a14 + move a14,@mess_cursy + move @mess_cursx2,a0 + move a0,@mess_cursx + calla print_string2 + + ;height + movi #bio_y+25,a14 + move a14,@mess_cursy + movi #bio_center,a14 + addi 8,a14 + move a14,@mess_cursx + + movi wsf14_ascii,a0 + move a0,@message_ascii,L + move *a10+,a0,W + movi 999,a1 + calla dec_to_asc + calla copy_string + calla print_string + + movi wsf10_ascii,a0 + move a0,@message_ascii,L + movi #feet,a4 + move @mess_cursx2,a0 + move a0,@mess_cursx + movi #bio_y+29,a14 + move a14,@mess_cursy + calla print_string2 + + movi wsf14_ascii,a0 + move a0,@message_ascii,L + move *a10+,a0,W + movi 999,a1 + calla dec_to_asc + calla copy_string + movi #bio_y+25,a14 + move a14,@mess_cursy + move @mess_cursx2,a0 + move a0,@mess_cursx + calla print_string + + movi wsf10_ascii,a0 + move a0,@message_ascii,L + movi #inches,a4 + movi #bio_y+29,a14 + move a14,@mess_cursy + move @mess_cursx2,a0 + move a0,@mess_cursx + calla print_string2 + + + ;quote + movi #bio_y+96+4,a14 + move a14,@mess_cursy + movi #bio_center,a14 + addk 15,a14 + move a14,@mess_cursx + movk 14,a14 + move a14,@mess_line_spacing + move *a10+,a4,L + calla print_string_C2 + + ;music + PULL a10 +no_attr + + MOVE @AMODE_LOOPS,A0 + CMPI 2,A0 + JRGE NO_MUSIC + + ADJUST ADJMUSIC + JRNZ NO_MUSIC + + X16 a10 + addi #wrestler_tunes,a10 + move *a10,a3,L + .if MUSIC_ON + calla SNDSND + .endif +NO_MUSIC + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP 2*TSEC + + movi 6*TSEC,a10 + JSRP wait_on_butn + + RETP + +wt_line1_setup + JAM_STR ogmd10_ascii,6,0,10,90,SGMD8YEL,print_string + .even +wt_title_setup + JAM_STR ogmd10_ascii,6,0,135,95,SGMD8RED,print_string_C2 + .string "SPECIAL MOVES" + .byte 0,0 + .even + +blank + .byte 0 + .even + +bret_tip1 + .string "CHARGE POWERPUNCH 2 SEC.",0 + .even +bret_tip1a + .string "TO DO A DDT.",0 + .even +bret_tip2 + .string "DOWN-DOWN-PUNCH TO DO",0 + .even +bret_tip2a + .string "A SUPER UPPERCUT.",0 + .even +bret_tip3 + .string "CHARGE POWERKICK 2 SEC",0 + .even +bret_tip3a + .string "TO DO A FLYING KICK.",0 + .even + +bret_tips + .long bret_tip1 + .long bret_tip1a + .long blank + .long bret_tip2 + .long bret_tip2a + .long blank + .long bret_tip3 + .long bret_tip3a + .long 0 + + +razor_tip1 + .string "CHARGE POWERKICK 2 SEC.",0 + .even +razor_tip1a + .string "TO DO A FLYING KICK.",0 + .even +razor_tip2 + .string "1/4 CIRCLE D,DT,T - PUNCH",0 + .even +razor_tip2a + .string "DOES DOWN SLASHES.",0 + .even +razor_tip3 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +razor_tip3a + .string "TO DO SLASHES.",0 + .even + +razor_tips + .long razor_tip1 + .long razor_tip1a + .long blank + .long razor_tip2 + .long razor_tip2a + .long blank + .long razor_tip3 + .long razor_tip3a + .long 0 + +taker_tip1 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +taker_tip1a + .string "TO DO A NECKBREAKER.",0 + .even +taker_tip2 + .string "TOWARD-TOWARD-POWERKICK",0 + .even +taker_tip2a + .string "DOES A TOMBSTONE SMASH.",0 + .even +taker_tip3 + .string "1/4 CIRCLE D,DT,T - PUNCH",0 + .even +taker_tip3a + .string "DOES A SLIDING CHOKE HOLD.",0 + .even + +taker_tips + .long taker_tip1 + .long taker_tip1a + .long blank + .long taker_tip2 + .long taker_tip2a + .long blank + .long taker_tip3 + .long taker_tip3a + .long 0 + + +yoko_tip1 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +yoko_tip1a + .string "TO DO A SALT THROW.",0 + .even +yoko_tip2 + .string "TOWARD-TOWARD-PUNCH",0 + .even +yoko_tip2a + .string "DOES A GUT PUSH.",0 + .even +yoko_tip3 + .string "TOWARD-TOWARD-POWERKICK",0 + .even +yoko_tip3a + .string "DOES A SCISSORS.",0 + .even + +yoko_tips + .long yoko_tip1 + .long yoko_tip1a + .long blank + .long yoko_tip2 + .long yoko_tip2a + .long blank + .long yoko_tip3 + .long yoko_tip3a + .long 0 + + +shawn_tip1 + .string "CHARGE POWERKICK 2 SEC.",0 + .even +shawn_tip1a + .string "TO DO A FLYING KICK",0 + .even +shawn_tip2 + .string "TOWARD-TOWARD-POWERKICK",0 + .even +shawn_tip2a + .string "DOES A FRANKENSTEINER.",0 + .even +shawn_tip3 + .string "TOWARD-TOWARD-KICK DOES",0 + .even +shawn_tip3a + .string "A SLIDING KICKTOSS.",0 + .even + +shawn_tips + .long shawn_tip1 + .long shawn_tip1a + .long blank + .long shawn_tip2 + .long shawn_tip2a + .long blank + .long shawn_tip3 + .long shawn_tip3a + .long 0 + + +bam_tip1 + .string "AWAY-AWAY-POWERKICK",0 + .even +bam_tip1a + .string "DOES A JUMP KICK.",0 + .even +bam_tip2 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +bam_tip2a + .string "TO DO A FIREPUNCH.",0 + .even +bam_tip3 + .string "CHARGE POWERPUNCH 2 SEC",0 + .even +bam_tip3a + .string "TO DO A NECKBREAKER.",0 + .even + +bam_tips + .long bam_tip1 + .long bam_tip1a + .long blank + .long bam_tip2 + .long bam_tip2a + .long blank + .long bam_tip3 + .long bam_tip3a + .long 0 + + +doink_tip1 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +doink_tip1a + .string "TO DO A JOY BUZZER.",0 + .even +doink_tip2 + .string "TOWARD-TOWARD-POWERKICK",0 + .even +doink_tip2a + .string "DOES A HAPPY HAMMER.",0 + .even +doink_tip3 + .string "SEVEN RAPID PUNCHES DOES",0 + .even +doink_tip3a + .string "A BOXING PUNCH.",0 + +doink_tips + .long doink_tip1 + .long doink_tip1a + .long blank + .long doink_tip2 + .long doink_tip2a + .long blank + .long doink_tip3 + .long doink_tip3a + .long 0 + + +lex_tip1 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +lex_tip1a + .string "TO DO A CLOBBER.",0 + .even +lex_tip2 + .string "TOWARD-TOWARD-PUNCH",0 + .even +lex_tip2a + .string "DOES A SLIDING ELBOW.",0 + .even +lex_tip3 + .string "TOWARD-TOWARD-POWERKICK",0 + .even +lex_tip3a + .string "DOES A HAMMER BLOW.",0 + .even + +lex_tips + .long lex_tip1 + .long lex_tip1a + .long blank + .long lex_tip2 + .long lex_tip2a + .long blank + .long lex_tip3 + .long lex_tip3a + .long 0 + +wrestler_tips + .long bret_tips + .long razor_tips + .long taker_tips + .long yoko_tips + .long shawn_tips + .long bam_tips + .long doink_tips + .long lex_tips + + SUBRP show_wres_tips + + movi wt_title_setup,a2 + calla print_message + + PULL a10 ; This is the wrestler number (0-7) + + move a10,a1 + X32 a1 + addi wrestler_tips,a1 + movi 120,a3 + move *a1,a1,L +swt_loop + move *a1+,a4,L + jrz no_attr + PUSHP a1,a3 + calla copy_rom_string + movi wt_line1_setup,a2 + calla setup_message + move a3,@mess_cursy + calla print_string + PULLP a1,a3 + addk 15,a3 + jruc swt_loop + + + SUBR MAKE_UP_LOGO + X64 a10 + add A5,a10 + move *a10+,a9,L + move *a10+,a0,W + move *a10,a1,W + add A3,a0 + add A4,a1 + sll 16,a0 + sll 16,a1 + + move *a9+,a2,L + clr a3 + movi DMAWNZ|M_SCRNREL,a4 + movi CLSNEUT,a5 + clr a6 + +#creatloop + MOVE A8,A10 + PUSH a0,a1,a3,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + move *a9+,a2,L + jrnz #creatloop + RETS + + +#bio_center .equ 100 +#bio_halfwidth .equ 87 + +#bio_y .equ 106 + +;#bio_setup1 +; JAM_STR osgmd8_ascii,5,0,0,#bio_y,SGMD8YEL,print_string2 +;#bio_message1 +; .byte "FROM:",1,"WEIGHT:",1,"HEIGHT:",1,"FINISHING",0 +; .even +; +;#bio_setup2 +; JAM_STR osgmd8_ascii,5,0,0,#bio_y+71,SGMD8YEL,print_string2 +;#bio_message2 +; .byte "MOVE:",0 +; .even + +;FIX!! + .even +#bio_setup1 + JAM_STR wsf14_ascii,6,0,0,#bio_y+75,WSF_Y_P,print_string2 + .even +;#bio_setup2 +; JAM_STR wsf10_ascii,6,10,0,#bio_y+75,WSF_Y_P,print_string2 +; .even + +#pounds + .byte " LBS.",0 + .even + +#feet + .byte " FT. ",0 + .even + +#inches + .byte " IN.",0 + .even + +#bio_data + .long #bhart_data,#razor_data,#taker_data,#yoko_data,#shawn_data + .long #bambam_data,#doink_data,#luger_data + +#bhart_data + .word 79 ;halfwidth + .long #bhart_fromstr ;from + .word 234,6,1 ;pounds, feet, inches + .long #bhart_quote ;quote text + +#razor_data + .word 77 ;halfwidth + .long #razor_fromstr ;from + .word 262,6,7 ;pounds, feet, inches + .long #razor_quote ;quote text + +#taker_data + .word 78 ;halfwidth + .long #taker_fromstr ;from + .word 322,6,11 ;pounds, feet, inches + .long #taker_quote ;quote text + +#yoko_data + .word 78 ;halfwidth + .long #yoko_fromstr ;from + .word 568,6,4 ;pounds, feet, inches + .long #yoko_quote ;quote text + +#shawn_data + .word 78 ;halfwidth + .long #shawn_fromstr ;from + .word 235,6,1 ;pounds, feet, inches + .long #shawn_quote ;quote text + +#bambam_data + .word 78 ;halfwidth + .long #bambam_fromstr ;from + .word 400,6,4 ;pounds, feet, inches + .long #bambam_quote ;quote text + +#doink_data + .word 78 ;halfwidth + .long #doink_fromstr ;from + .word 243,6,0 ;pounds, feet, inches + .long #doink_quote ;quote text + +#luger_data + .word 81 ;halfwidth + .long #luger_fromstr ;from + .word 270,6,4 ;pounds, feet, inches + .long #luger_quote ;quote text + +#bhart_fromstr +; .byte "CALGARY, ALBERTA",0 ;Too long + .byte "CALGARY",0 + .even +#razor_fromstr + .byte "MIAMI, FLORIDA",0 + .even +#taker_fromstr + .byte "DEATH VALLEY",0 + .even +#yoko_fromstr + .byte "TOKYO, JAPAN",0 + .even +#shawn_fromstr + .byte "SAN ANTONIO, TX",0 + .even +#bambam_fromstr + .byte "ASBURY PARK, NJ",0 + .even +#doink_fromstr + .byte "THE CIRCUS",0 + .even +#luger_fromstr + .byte "ATLANTA, GA",0 + .even + + + + +#bhart_quote + .byte "{I AM THE EXCELLENCE",1,"OF EXECUTION.}",0 + .even +#razor_quote + .byte "{TAKE A LOOK AT",1,"THE BAD GUY.}",0 + .even +#taker_quote + .byte "{REST IN PEACE}",0 + .even +#yoko_quote + .byte "{BANZAI !!!}",0 + .even +#shawn_quote + .byte "{I'M THE GREATEST THING",1,"GOING ON GOD'S GREEN EARTH.}",0 + .even +#bambam_quote + .byte "{I'M THE BEAST",1,"FROM THE EAST!",0 + .even +#doink_quote + .byte "{LIFE'S A JOKE!",0 +#luger_quote + .byte "{LEX LUGER IS THE",1,"ALL AMERICAN HERO}",0 + .even + +#bio_mod + .long biopageBMOD ;wrestler bios +; .long slateBMOD ;wrestler bios + .word 0,0 + .long 0 + +#bio_logos + LWW #bhart_logo,15,9 + LWW #razor_logo,16,9 + LWW #under_logo,17,9 + LWW #yoko_logo,20,7 + LWW #michael_logo,18,8 + LWW #bambam_logo,18,7 + LWW #doink_logo,24,8 + LWW #luger_logo,10,7 + +#bhart_logo + .long HRT3,0 +#razor_logo + .long RZR3,0 +#under_logo .long UND3,0 +#yoko_logo + .long YOK3,0 +#michael_logo + .long SHN3,0 +#bambam_logo + .long BAM3,0 +#doink_logo + .long DNK3,0 +#luger_logo + .long LEX3,0 + +#wrestler_tunes + .word 5,2,1,7,6,4,8,3 + +****************************************************************************** +* +* A10 = # of ticks before timing out + + SUBR wait_on_butn + +#lp SLEEPK 1 + + calla get_all_buttons_cur2 + jrz #nobutn + + move @SOUNDSUP,a0 + move a0,@TEMP + + clr a0 + move a0,@SOUNDSUP ;turn all sounds on + + ;set CMOS volume! + movi ADJVOLUME,a0 + calla GET_ADJ + BADCHK a0,0,255,28 ;reg, lo, hi, val if bad + calla set_volume + + movi >b6,a0 + calla triple_sound + + move @TEMP,a0 + move a0,@SOUNDSUP ;turn all sounds off + jruc #exit + +#nobutn + dsj a10,#lp + +#exit + RETP + + +;#***************************************************************************** +;* play vid clips (test) +; +; SUBRP show_movie +; +;;bank select 0 bit is bit 8 of SYSCTRL register. +; +; calla display_blank +; calla WIPEOUT ;CLEAN SYSTEM OUT +; calla pal_clean +; +; clr a0 +; move a0,@HALT +; move a0,@dtype ;2d mode +; move a0,@IRQSKYE +; +; movk 1,a0 ;page flipping on +; move a0,@dpageflip +; +; SLEEPK 2 +; +; movi SCRNEND,a0 ;[256,405] +; move a0,@SCRNLR,L +; +; clr a0 +; move a0,@WORLDTLX,L +; move a0,@WORLDTLY,L +; +; movi #movie_mod,a0 +; move a0,@BAKMODS,L +; calla BGND_UD1 ;create objects for background +; +; calla display_unblank +; +;;;;-> movi shnvid_f,a8 +; clr a9 +; movi (100+20*512)*8,a10 +; JSRP movie_run +; +; clr a0 +; move a0,@dpageflip ;kill the page-flipping! +; +; movi 6*TSEC,a10 +; JAUC wait_on_butn +; +;#movie_mod +; .long slateBMOD ;wrestler bios +; .word 0,0 +; .long 0 +; +; +;#***************************************************************************** +;* print that big picture of 'vince' +;* leave up whatever was on screen until we're ready to make the switch +; +; SUBRP show_vince +; +; ;disable auto page flipping +; clr a14 +; move a14,@dpageflip +; +; ;dump the pic to the draw (inactive) page +;;;;-> movi vinsml_f,a8 +; clr a9 +; movi (#vince_x+512*(#vince_y))*8,a10 +; JSRP movie_run +; +; ;swap 'em... +; callr page_flip +; +; ;...and wait +; movi 6*TSEC,a10 +; JSRP wait_on_butn +; +; ;fade down +; clr a10 +; movk 16,a11 +; CREATE0 fade_down +; +; SLEEP TSEC +; +; RETP +; +; +;#vince_x equ (400->186)/2 +;#vince_y equ (256->F5)/2 + + +#***************************************************************************** +* flips the active page + +; SUBRP page_flip +; +; movi ->1004,a0 +; move @dpage,a14 +; jrz #tp1 +; movi -4,a0 +;#tp1 +; move a0,@DPYSTRT +; move a0,@DPYADR +; +; move @dpage,a0 +; not a0 +; move a0,@dpage +; +; rets + +#***************************************************************************** + +;NOW LETS SEE... +;WORD TWO PIXELS +;WORD TWO PIXELS +;WORD TWO PIXELS +;WORD TWO PIXELS +;LONG XVEL +;LONG YVEL +;LONG XPOS +;LONG YPOS + +DCS_LOGO + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + movk 1,a0 + move a0,@dpageflip ;page flipping on + clr a0 + move a0,@IRQSKYE + + MOVI [200,0],A0 + MOVI [120,0],A1 + MOVI dcslogo,a2 + CLR A3 + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + addi CLSNEUT,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + CALLA BEGINOBJW + MOVE *A8(OPAL),A0 + MOVE A0,@DCS_PAL + + clr a10 + movk 8,a11 + CREATE FADE_PID,fade_up + + movk 1,a0 + move a0,@DISPLAYON + + calla display_unblank + + MOVE @AMODE_LOOPS,A0 + CMPI 2,A0 + JRGE NO_BANG + + ADJUST ADJMUSIC + JRNZ NO_BANG + + MOVI 1005,A3 + CALLA SNDSND +NO_BANG + + SLEEP 42h + + MOVI DMACTRL,B1 +WAIT_110 + MOVE *B1,B2,L + JRN WAIT_110 + PUSHST + DINT + PUSH A8 + + MOVI (186*5),A6 + MOVI [6,0],A5 + MOVI DCS_BIT_TABLE,A2 + MOVI 44,A11 + MOVE *A8(OSAG),A8,L + ADDI 02000000H,A8 + +NEXT_X_PIXEL1 + MOVI 31,A10 + MOVI [107,0],A4 + +NEXT_X_PIXEL2 + CALLR SETUP_ALL_PIX1 + + MOVI 32000H,A0 + CALLA RNDRNGS + MOVE A0,A1 + SRA 7,A1 + NEG A1 + MOVE A1,*A2+,L ;XVEL + + MOVE A0,*A2+,L ;XVEL + + MOVE A4,*A2+,L ;XPOS + ADD A5,A4 + ADDK 30,A8 + DSJS A10,NEXT_X_PIXEL2 + ADD A6,A8 + DSJS A11,NEXT_X_PIXEL1 + + PULL A8 + POPST + SLEEP 1 + MOVE *A8(OFLAGS),A1 + ORI M_NODISP,A1 + MOVE A1,*A8(OFLAGS) + + MOVI ADD_PIXEL_ROT,A0 + MOVE A0,@WHICH_SCREEN,L + + SLEEP 60 + + MOVI 254-60,A10 +loop_it + SLEEPK 1 + calla get_all_buttons_cur2 + JRNZ nobutn1 + dsj a10,loop_it + + MOVI DUMRETS,A0 + MOVE A0,@WHICH_SCREEN,L + + MOVE *A8(OFLAGS),A1 + ANDI 0FFFFH-M_NODISP,A1 + MOVE A1,*A8(OFLAGS) + + SLEEP 10 + + + MOVI DMACTRL,B1 +WAIT_111 + MOVE *B1,B2,L + JRN WAIT_111 + + PUSHST + DINT + PUSH A8 + MOVI 4C000H,A3 + + MOVI (186*5)*3,A6 + MOVE *A8(OSAG),A8,L + ADDI 02000000H,A8 + MOVI DCS_BIT_TABLE,A2 + MOVI 020H,A5 + MOVI 04000H,A7 + MOVI 21,A11 +NEXT_Y_PIXELS + MOVI 0358H,A4 + MOVI 46,A10 +NEXT_X_PIXELS + + CALLR SETUP_ALL_PIX1 + CALLR SETUP_ALL_PIX2 + + ADDK 20,A8 + + MOVI 0FH,A0 + PUSH A1 + CALLA RNDRNGS + PULL A1 + MOVE A0,*A2+,L ;XVEL + + MOVI 2100H,A0 + PUSH A1 + CALLA RNDRNGS + PULL A1 + SLL 1,A0 + MOVE A0,*A2+,L ;YVEL + + MOVE A4,*A2+,L ;XPOS + MOVE A3,*A2+,L ;YPOS + ADD A5,A4 + DSJS A10,NEXT_X_PIXELS + ADDK 10,A8 + ADD A6,A8 + ADD A7,A3 + DEC A11 + JRNZ NEXT_Y_PIXELS + + PULL A8 + POPST + + CALLA DELOBJA8 + + MOVI ADD_PIXEL_VEL,A0 + MOVE A0,@WHICH_SCREEN,L + + MOVK 3,A8 +FLASH_WHITE + MOVI 0FFFFH,A0 + MOVE A0,@IRQSKYE + SLEEP 1 + + CLR A0 + MOVE A0,@IRQSKYE + SLEEP 1 + DSJS A8,FLASH_WHITE + + SLEEPK 30 + + movi 100,a10 + JSRP wait_on_butn +nobutn1 + CLR A3 + CALLA SNDSND + RETP + +SETUP_ALL_PIX2 + MOVE A8,A14 + ADD A6,A14 + ADD A6,A14 + CALLR SETUP_TWO_PIX + ADDK 10,A14 + JRUC SETUP_TWO_PIX + +SETUP_ALL_PIX1 + MOVE A8,A14 + CALLR SETUP_TWO_PIX + ADDK 10,A14 + CALLR SETUP_TWO_PIX + + MOVE A8,A14 + ADD A6,A14 + CALLR SETUP_TWO_PIX + ADDK 10,A14 + +SETUP_TWO_PIX + MOVE *A14,A0 + SLL 32-5,A0 + SRL 32-5,A0 + + MOVE *A14(5),A9 + SLL 32-5,A9 + SRL 32-5-8,A9 + + OR A9,A0 + MOVE A0,*A2+ + RETS + +ADD_PIXEL_VEL + MOVI DMACTRL,B1 + MOVE @DCS_PAL,A3 + CALLR SET_UP_PAL + + MOVI 01F0H,A4 + MOVI 966,A9 + MOVI 3*32,A12 + MOVE @page_addr+010h,a14 + MOVE @page_addr,A10 + sll 3,a10 + sll 12,a14 + or a14,a10 + + MOVI 0FA000H,A14 + MOVI 0FF000H,A13 + MOVI 0FFFF8H,A11 + + PUSHST + DINT + MOVI DCS_BIT_TABLE,A8 + .ALIGN +NEXT_PIXEL_VEL + MMFM A8,A0,A1,A2,A3,A5,A6,A7 + ADD A4,A2 ;DO YACCEL + JRZ NO_PLOT_ANYTHING + + ADD A2,A0 ;Y + CMP A14,A0 + JRGE NO_WORRY_ABOUT_Y_BOUNCE + ADD A3,A1 ;X + MMTM A8,A0,A1,A2 + + AND A11,A1 + AND A13,A0 + OR A0,A1 + ADD A10,A1 + + MOVE A7,*A1,L + MOVE A6,*A1(01000H),L + MOVE A5,*A1(02000H),L + ADD A12,A8 +NO_PLOT_ANYTHING + DSJS A9,NEXT_PIXEL_VEL + POPST + RETS + +NO_WORRY_ABOUT_Y_BOUNCE + MOVE A4,A2 + NEG A2 + MMTM A8,A0,A1,A2 + ADD A12,A8 + DEC A9 + JRNZ NEXT_PIXEL_VEL + POPST + RETS + +SET_UP_PAL ;PAL IN A3 + MOVE *B1,B2,L + JRN SET_UP_PAL + MMTM SP,A2,A3,A4,A5,A6,A7,A9 + MOVI 01000100H,A2 + MOVI [4,4],A4 + CLR A5 + MOVI 020000000H,A6 + MOVI 0E0020000H,A9 + + MOVI DMAREGS,A7 + + mmtm A7,A2,A3,A4,A5,A6,A9 + + MMFM SP,A2,A3,A4,A5,A6,A7,A9 + RETS + +ADD_PIXEL_ROT + MOVI DMACTRL,B1 + MOVE @DCS_PAL,A3 + CALLR SET_UP_PAL + + MOVI 2*32,A5 + MOVE @page_addr+010h,a14 + MOVE @page_addr,A10 + sll 3,a10 + sll 12,a14 + or a14,a10 + ADDI 4C000H,A10 + MOVI 44,A9 + MOVI 31,A13 + MOVI 02000H,A4 + + MOVI 0FFFF8H,A11 + + MOVI DCS_BIT_TABLE,A12 + .ALIGN +NEXT_PIXEL_ROT + MMFM A12,A0,A1,A2,A6,A7 + + ADD A2,A1 ;XVEL + ADD A1,A0 ;X POS + MMTM A12,A0,A1 + + SRA 16-3,A0 + AND A11,A0 + ADD A10,A0 + + MOVE A7,*A0,L + MOVE A6,*A0(01000H),L + ADD A5,A12 + DSJS A13,NEXT_PIXEL_ROT + ADD A4,A10 + MOVI 31,A13 + DSJS A9,NEXT_PIXEL_ROT + RETS + + +****************************************************************************** + + SUBR GENERIC_DISPLAY + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + movi hstd_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + SLEEPK 2 + + calla display_unblank + RETP + +**************************************************************** +* THIS SHOULD BE CALLED IN PLACE OF ANY JRxx $ +* IN CASE OF ERROR. IF WE ARE IN DEBUG MODE +* IT WILL HANG, IF NOT, THE ERROR WILL BE LOGGED +* AND IT WILL RETURN. +* A1 = RETURN ADDRESS OF CALLING ROUTINE +* A2 = ERROR CODE + +ERRORLOG + MMTM SP,A2,A3,A4,A5,A6,A7 +; SLL 16,A2 +;ERRLOGG ;A8 IS IN A8 +; +; MOVE A13,A7 ;PROC. BLOCK IN A7 +; MOVE *A7(PROCID),A6 +; SLL 16,A6 +; MOVE *A8(OID),A3 +; MOVX A3,A6 ;A6 = [PROCID:*A8(OID)] +; +;; MOVE @CIRCUIT,A5 +;; SLL 16,A5 +;; MOVE @WAVE,A3 +; MOVX A3,A5 ;A5 = [CIRCUIT#:WAVE#,)] +; +; MOVI AUD1STRT,A4 ;PLAY # +; callr GETAUD4 +; +; SLL 16,A4 +; MOVE *A0(OID),A3 ;A4 = [STRT#:*A0(OID)] +; MOVX A3,A4 +; +; MOVE @GAMSTATE,A3 ;A2 = [PSTATUS:GAMSTATE] +; MOVX A3,A2 +; +; MOVE @PSTATUS,A3 ;A2 = [ERROR CODE:PSTATUS] +; MOVX A3,A2 +;; MOVE *SP(0C0H),A3,L ;A3=GET THE RETURN ADDRESS +; MOVE *SP(0E0H),A1,L ;A1=CALLING ADDRESS +;; CALLA ADD_DUMP + + MMFM SP,A2,A3,A4,A5,A6,A7 + RETS + +****************************************************************************** + +NUM_HINTS .EQU 5 + + .bss last_hint,16 + + SUBR DO_HINTS + movk 18,a8 + movk 6,a9 + JSRP CLOSE_SCREEN_LINE + calla SPECIAL_WIPEOUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + movi hstd_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + CLR A1 + MOVE A1,@TOP_LEFT,L + MOVE A1,@BOT_RIGHT,L + + MOVI 100,A0 + CALLA RNDPER + + ;temp! + JRUC WE_DO_THE_DESIGNER_HINTS +; JRLO WE_DO_THE_DESIGNER_HINTS + +; MOVK NUM_HINTS,A0 +; CALLA RNDRNG0 +; +; SLL 6,A0 +; ADDI GENERAL_HINT,A0 +; MOVE *A0+,A4,L +; MOVE *A0+,A5,L +; PUSH A5,A4 +; +; CALLA PUT_UP_BAR +; +; MOVI GENTIP,A2 +; CALLA PUT_UP_TIP_NAME +; +; JRUC GEN_TIP_BACK_IN_HERE + +WE_DO_THE_DESIGNER_HINTS + + move @last_hint,a0 + jrn #reset_chint + inc a0 + cmpi NUM_HINTS,a0 + jrge #reset_chint + jruc #shint + +#reset_chint + clr a0 +#shint move a0,@last_hint + + PUSHP A0 + SLL 7,A0 + ADDI WHICH_HINT,A0 + MOVE *A0+,A4,L + MOVE *A0+,A5,L + PUSH A5,A4 + PUSH A0 + + CALLA PUT_UP_BAR + + PULL A0 + MOVE *A0+,A2,L + PUSH A0 + + CALLA PUT_UP_TIP_NAME + + PULLP A2 + SLL 5,A2 + ADDI WHICH_22_NUM,A2 + MOVE *A2,A2,L + + MOVE *A8(OSIZEX),A0 + SRL 1,A0 + ADDI 200,A0 + SLL 16,A0 + + MOVI [9,0],A1 + movi 1800H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + movi WGFS_W_P,b0 + calla BEGINOBJP + + MOVI [400,0],A0 + MOVI [254,0],A1 + MOVI MUGBAK,A2 + movi 17FFH,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [400,0],A0 + MOVI [254,0],A1 + MOVI MUGFRNT,A2 + movi 1801H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + PULL A0 + MOVE *A0+,A2,L + + MOVI [400,0],A0 + MOVI [254,0],A1 + movi 1800H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + +GEN_TIP_BACK_IN_HERE + + MOVI #SETUP_LINE_1,A2 + CALLA setup_message + CALLA hscore_colcyc2 + PULL A4 + CALLA print_string_C2 + PULL A4 + PUSHP A4 + +; movk 18,a8 +; movk 6,a9 +; JSRP OPEN_SCREEN_LINE + + MOVI #SETUP_LINE,A2 + CALLA setup_message + + MOVI 15,A0 + MOVE A0,@mess_line_spacing + + PULLP A4 + MOVE A4,A10 + MOVE *A10+,A9,L +NEXT_HINT + MOVE *A10+,A4,L + CALLA print_string_C2 + move @mess_cursy,A0 + ADDI 15,A0 + move a0,@mess_cursy + + DSJS A9,NEXT_HINT + + movk 18,a8 + movk 6,a9 + JSRP OPEN_SCREEN_LINE + + SLEEP 80 + movi 15*TSEC,a10 + JSRP wait_on_butn + + movi FLASH_PID,a0 + clr a1 + not a1 + CALLA KILALL + + RETP ;?????? GOOD IDEA? + +PUT_UP_TIP_NAME + MOVI [190,0],A0 + MOVI [21,0],A1 + movi 1800H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + movi WGFS_W_P,b0 +; calla BEGINOBJ + calla BEGINOBJP + + RETS + +PUT_UP_BAR + MOVI [10,0],A0 + MOVI [21,0],A1 + + movi MVEBAR_R,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [13,0],A0 + MOVI [21+9,0],A1 + + movi SHADOW01,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + CREATE FLASH_PID,JUDDER_SHADOW + RETS + +#title_mod + .long slateBMOD +; .long LAVAPGBMOD + .word 0,0 + .long 0 + +WHICH_22_NUM + .LONG WGSF22_1 + .LONG WGSF22_2 + .LONG WGSF22_3 + .LONG WGSF22_4 + .LONG WGSF22_5 + .LONG WGSF22_6 + .LONG WGSF22_7 + .LONG WGSF22_8 + .LONG WGSF22_9 + .LONG WGSF22_0 + +WHICH_HINT + .LONG #HNTT_2,#HNT_2,JMSTIP,JASMUG + .LONG #HNTT_4,#HNT_4,MIKTIP,MIKMUG + .LONG #HNTT_3,#HNT_3,MJTTIP,MRKMUG + .LONG #HNTT_7,#HNT_7,EUGTIP,EUGMUG + .LONG #HNTT_5,#HNT_5,SHNTIP,SHNMUG + .LONG #HNTT_8,#HNT_8,JAKTIP,JAKMUG + .LONG #HNTT_1,#HNT_1,SALTIP,SALMUG + .LONG #HNTT_6,#HNT_6,TONTIP,TONMUG + .LONG #HNTT_9,#HNT_9,JOSTIP,JSHMUG + .LONG #HNTT_9,#HNT_9,JOSTIP,JSHMUG + +;GENERAL_HINT +; .LONG #HNTT_10,#HNT_10 +; .LONG #HNTT_10,#HNT_10 +; .LONG #HNTT_10,#HNT_10 +; .LONG #HNTT_10,#HNT_10 +; .LONG #HNTT_10,#HNT_10 +; .LONG #HNTT_10,#HNT_10 + + +#SETUP_LINE_1 + JAM_STR osgemd_ascii,10,0,200,50+12,RUBYPAL,print_string_C2 + +#SETUP_LINE + JAM_STR wsf10_ascii,10,1,200,90+18,WSF_Y_P,print_string_C2 + +#HNTT_1 .byte "OUT OF RING",0,0 + .even +#HNT_1 .long 4,#HNT_1A,#HNT_1B,#HNT_1C,#HNT_1D +#HNT_1A .byte "DON'T STAY OUT OF THE RING FOR",0,0 +#HNT_1B .byte "LONG. YOU SUFFER DAMAGE UNTIL",0,0 +#HNT_1C .byte "YOU RE-ENTER THE RING OR YOUR",0,0 +#HNT_1D .byte "OPPONENT JOINS YOU OUTSIDE.",0,0 + .even + + +#HNTT_2 .byte "IN-AIR PICK OFF",0,0 + .even +#HNT_2 .long 4,#HNT_2A,#HNT_2B,#HNT_2C,#HNT_2D +#HNT_2A .byte "WHEN YOUR OPPONENT IS RUNNING",0,0 +#HNT_2B .byte "OR LEAPING AT YOU, AWAY AWAY",0,0 +#HNT_2C .byte "PUNCH CAN BE USED TO PICK HIM",0,0 +#HNT_2D .byte "OFF AND DELIVER A BODY SLAM!",0,0 + .even + + +#HNTT_3 .byte "TURNBUCKLE LEAPS",0,0 + .even +#HNT_3 .long 6,#HNT_3A,#HNT_3B,#HNT_3C,#HNT_3D,#HNT_3E,#HNT_3F +#HNT_3A .byte "CLIMB THE TURNBUCKLE AND LEAP AT",0,0 +#HNT_3B .byte "YOUR OPPONENT, USING THE JOYSTICK",0,0 +#HNT_3C .byte "TO GUIDE YOUR FLIGHT. THESE ATTACKS",0,0 +#HNT_3D .byte "CANNOT BE BLOCKED. HOWEVER, THEY",0,0 +#HNT_3E .byte "CAN BE PICKED OFF WITH A WELL TIMED",0,0 +#HNT_3F .byte "KICK.",0,0 + .even + + +#HNTT_4 .byte "COMBO MODE",0,0 + .even +#HNT_4 .long 6,#HNT_4A,#HNT_4B,#HNT_4C,#HNT_4D,#HNT_4E,#HNT_4F +#HNT_4A .byte "PERFORMING A VARIETY OF MOVES",0,0 +#HNT_4B .byte "ACTIVATES 'COMBO MODE'. THIS ALLOWS",0,0 +#HNT_4C .byte "YOU TO LAUNCH SPECIAL DEVASTATING",0,0 +#HNT_4D .byte "COMBO MOVES FROM THE HEADHOLD.",0,0 +#HNT_4E .byte "MOST COMBOS START WITH TOWARD",0,0 +#HNT_4F .byte "TOWARD AND A BUTTON PRESS.",0,0 + .even + + +#HNTT_5 .byte "REVERSALS",0,0 + .even +#HNT_5 .long 5,#HNT_5A,#HNT_5B,#HNT_5C,#HNT_5D,#HNT_5E +#HNT_5A .byte "MANY HEADHOLD MOVES, SUCH AS THE",0,0 +#HNT_5B .byte "PILEDRIVER, CAN BE DONE BY EITHER",0,0 +#HNT_5C .byte "WRESTLER. WHOEVER DOES THE CORRECT",0,0 +#HNT_5D .byte "STICK AND BUTTON COMBINATION FIRST",0,0 +#HNT_5E .byte "WILL DO THE MOVE.",0,0 + .even + + +#HNTT_6 .byte "HIGH RISK MANEUVERS",0,0 + .even +#HNT_6 .long 3,#HNT_6A,#HNT_6B,#HNT_6C +#HNT_6A .byte "BOUNCE OFF THE ROPES JUST BEFORE",0,0 +#HNT_6B .byte "PERFORMING MANY JUMPING ATTACKS",0,0 +#HNT_6C .byte "FOR AN EXTRA DAMAGE BONUS!",0,0 + .even + + +#HNTT_7 .byte "SECOND WIND",0,0 + .even +#HNT_7 .long 6,#HNT_7A,#HNT_7B,#HNT_7C,#HNT_7D,#HNT_7E,#HNT_7F + .long #HNT_7G,#HNT_7H +#HNT_7A .byte "WHEN YOU'RE ABOUT TO BE PINNED",0,0 +#HNT_7B .byte "FOR THE SECOND TIME, YOU CAN",0,0 +#HNT_7C .byte "GET YOUR SECOND WIND AND FIGHT",0,0 +#HNT_7D .byte "ON, BUT ONLY IF YOUR COMBO METER",0,0 +#HNT_7E .byte "IS LIT. QUICKLY HIT THE BUTTONS",0,0 +#HNT_7F .byte "ONCE YOUR HEALTH METER RUNS OUT.",0,0 +#HNT_7G .byte "NOTE THAT THIS DOES NOT WORK IF",0,0 +#HNT_7H .byte "IF YOU DIE OUTSIDE THE RING.",0,0 + .even + + +#HNTT_8 .byte "HEAD HOLDS",0,0 + .even +#HNT_8 .long 6,#HNT_8A,#HNT_8B,#HNT_8C,#HNT_8D,#HNT_8E,#HNT_8F +#HNT_8A .byte "RAPIDLY PRESSING THE BUTTONS FROM",0,0 +#HNT_8B .byte "A HEADHOLD WILL EVENTUALLY CAUSE",0,0 +#HNT_8C .byte "A PILEDRIVER OR OTHER SPECIAL MOVE",0,0 +#HNT_8D .byte "TO HAPPEN. BUT THERE ARE MUCH",0,0 +#HNT_8E .byte "FASTER WAYS TO DO THEM, SUCH AS",0,0 +#HNT_8F .byte "TOWARD TOWARD POWER PUNCH.",0,0 + .even + + + +#HNTT_9 .byte "EXCESSIVE BLOCKING",0,0 + .even +#HNT_9 .long 5,#HNT_9A,#HNT_9B,#HNT_9C,#HNT_9D,#HNT_9E +#HNT_9A .byte "IF YOUR OPPONENT IS CONSTANTLY",0,0 +#HNT_9B .byte "BLOCKING, TRY GETTING IN CLOSE",0,0 +#HNT_9C .byte "TO PUT HIM IN A HEADHOLD. THEY",0,0 +#HNT_9D .byte "CAN'T BE BLOCKED. HIP TOSSES",0,0 +#HNT_9E .byte "ARE ALSO DIFFICULT TO BLOCK.",0,0 + .even + + +#***************************************************************************** +* +* successful octopus brings us to this page. It's a top-level process, just +* like the normal attract mode loop + + .ref _switch_addr,_switch2_addr + +OCTOBTN .macro VAL,TIMEOUT + movi :VAL:,a8 + movi :TIMEOUT:,a9 + JSRP #wait_but + jrc #octo_init + .endm + + SUBR octopus_page + + ;make sure we're in attract mode + move @GAMSTATE,a14 + cmpi INAMODE,a14 + jane SUCIDE + + calla SPECIAL_WIPEOUT + + ;let the sound board reset finish up. + SLEEPK 8 + + clr a3 + calla SNDSND + + ;put up some wallpaper + JSRP GENERIC_DISPLAY + + ;draw the text/pix + + calla display_unblank + + movi TSEC*10,a10 + +#octo_init + + ;check overall timeout + TEST a10 + jrn attract_mode + + ;octopus + OCTOBTN >fffeffff,TSEC/3 ;kick + OCTOBTN >ffffffdf,TSEC/3 ;block + OCTOBTN >ffffffbf,TSEC/3 ;pwr pnch + OCTOBTN >ffffffef,TSEC/3 ;pnch + OCTOBTN >ffffffdf,TSEC/3 ;block + OCTOBTN >fffdffff,TSEC/3 ;pwr kick + + ;success! + movi DIAGP,a14 + move a14,*a13(PROCID) + .ref HID_P + jauc HID_P + + ;begin a normal attract mode + jruc attract_mode + + SUBRP #wait_but + + calla #mk_a0 + cmp a0,a8 + jreq #gotit + SLEEPK 1 + dec a10 + dsj a9,#wait_but + setc + RETP +#gotit clrc + RETP + + + SUBRP #mk_a0 + move @_switch_addr,a0,L + move @_switch2_addr,a1,L + move *a0,a0 + move *a1,a1 + rl 16,a1 + and a1,a0 + rets + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/ATTRACT.ASM b/ATTRACT.ASM new file mode 100755 index 0000000..c230144 --- /dev/null +++ b/ATTRACT.ASM @@ -0,0 +1,3969 @@ +**************************************************************** +* +* Software: ? +* Initiated: ? +* +* Modified: Shawn Liptak 8/6/91 - Hiscore display and entry (Total carnage) +* Shawn Liptak 11/9/91 - Title screen +* Shawn Liptak 2/7/92 - Stripped for basketball +* Jason Skiles 12/9/93 - Stripped for WWF +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/9/93 12:35 +**************************************************************** + .file "attract.asm" + .title "attract mode" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "macros.h" + .include "game.equ" + .include "audit.equ" + .include "link.equ" + .include "sound.h" + + .include "imgtbl.glo" + .include "crowdimg.glo" + .include "fontsimg.glo" + .include "miscimg.glo" + .include "bgndtbl.glo" + .include "ropeimg.glo" + + .include "logo.tbl" + .include "logo.glo" + .include "dip.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref ADJ_PAGE,BAKMODS,BEATEN_TAB_ENTRIES,BGND_UD1 + .ref BLOW_0_TO_1,CLOSE_PROGRESS_SCREEN,CRD_SCRN2 + .ref DELETE_ANY_OFF_TOP,DUMRETS,GAMSTATE,HALT,GET_ADJ + .ref IRQSKYE,MOVE_ALL_OBJS_UP,RC_BYTEI,RD7FONT + .ref RESET_FROM_PIXEL_WIPE,RNDRNG0,RNDRNGS,RemapIO + .ref SET_UP_PIXEL_WIPE,SOUNDSUP,SPECIAL_WIPEOUT,STOP_ALL_OBJS + .ref STRCNRMO_2,WHICH_SCREEN,WIPEOUT + .ref copy_string,current_round + .ref dec_to_asc,dpageflip,draw_each_beaten_table_entry,fade_down + .ref fade_up,get_all_buttons_cur2,index1,match_cnt + .ref mess_cursx,mess_cursy,mess_line_spacing,nosounds + .ref p1rounds,p2rounds,page_addr,pal_clean,pal_getf,print_beaten + .ref print_hscores,print_string2,print_string_C2 + .ref print_winstreaks,setup_message,start_match + .ref starting_num,table_cmos_check,total_matches,triple_sound + .ref wrestler_mugs2,set_volume,INIT_LADDER_TABLE + .ref wsf14_ascii,wsf10_ascii,print_string + .ref message_ascii,mess_cursx2 + .ref osgemd_ascii,LADDER,CURRENT_LADDER,NUM_OPPS + .ref hscore_colcyc2,ogmd10_ascii,CLOSE_SCREEN_LINE + .ref OPEN_SCREEN_LINE,HORZTRN1,HORZTRN2,TOP_LEFT + .ref BOT_RIGHT,LINES,not_blank,doing_dcs_reset,QSNDRST + .ref MUSIC_HAP,JUDDER_SHADOW + .ref DRKTRPLTP,HID_P,PCNT + .ref STRCNRMO_1 + .ref _clk_rd + .ref _auto_update_save + .ref _GetTime + .ref print_message + .ref concat_string + .ref concat_rom_string + .ref print_string_C + .ref print_string_C2 + .ref copy_rom_string + .ref wgsf24_ascii + .ref wsf14_ascii + .ref WSF_R_P + .ref _tseconds + .ref _tminutes + .ref _thours + .ref _tday + .ref _tdate + .ref _tmonth + .ref _tyear + .ref WHERE_WRESTLMANIA_SPARKLES,SPRINKLE_GLINTS + .ref RANDOM_SPARKLE + .ref READ_DIP + .globl hstd_mod + .ref print_inter,belt_type + .ref draw_each_inter_table_entry + .ref INTER_TAB_ENTRIES + .ref print_tag + .ref RNDPER + .ref MAYBE_TOUGH_ENOUGH + .ref osgmd8_ascii,SGMD8WHT + .ref story_bgnd + .ref hscore_colcyc,hscore_colcyc2 + +****************************************************************************** +;symbols defined externally + +;ram + + BSSX hisclong ,16 ;!0=Show hiscore table longer + + BSSX SHOW_CRD_FLAG,16 ;Show credits in amode gameplay + + .bss cycram ,8*2*16 ;Palette cycle mem + .bss cycram2 ,7*2*16 ;^ + +; .bss team_cnts ,32 ;left team cnt, +16=rgt team cnt +; .bss stick ,32 ;stick ram for team selection + +; .bss loop, 16 ; + + .bss TEMP,16 + + .BSS AMODE_LOOPS,16 + .BSS DCS_PAL,16 + .BSS DCS_BIT_TABLE,(32*7)*(31*44) + + .BSS LOGOMOD_START,(40H*20)+32 + .BSS LOGOMOD_END,0 + + .bss bios_type,16 + .bss nb_save,16 + + .text + + +******************************** +* Attract mode (Process) + + + SUBR attract_mode + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + ;let the sound board reset finish up. + SLEEPK 8 + + clr a3 + calla SNDSND + + movi INAMODE,a14 ;set GAMSTATE + move a14,@GAMSTATE + + clr a0 ;clear matches since attmode cntr + move a0,@total_matches,W + MOVE A0,@AMODE_LOOPS + MOVE A0,@MUSIC_HAP + + movk 1,a0 + move a0,@dpageflip ;page flipping on + + calla display_unblank + +; ;temp! +;#foo JSRP DO_HINTS +; jruc #foo + +#loop +* Please, stop messing with this ! If you want it changed, ask me ! - Jake + + + ;kill that damned announcer proc too. +; movi VOICE_PID,a0 +; clr a1 +; not a1 +; calla EXISTP +; jrz #no_bleedin_announcer +; calla KILL +#no_bleedin_announcer + + + + JSRP show_hstd +;TEST PURPOSES ONLY +; .ref show_wrestler_end_story +; .ref which_player +; .ref PSTATUS +; +; clr a14 +; move a14,@PSTATUS +; +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 1,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 2,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 3,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 4,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 5,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 6,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +; movk 8,a14 +; move a14,@which_player +; JSRP show_wrestler_end_story +; +;END TEST + + JSRP DCS_LOGO + JSRP show_sports_logo + JSRP show_gameplay + JSRP creditscreen + JSRP show_title + JSRP show_gameplay + JSRP creditscreen + JSRP DO_HINTS + JSRP show_gen_tips + JSRP show_bios + movk 1,a14 + move a14,@bios_type + move @next_bio,a14 + move a14,@nb_save + dec a14 + andi 7,a14 + move a14,@next_bio + movi story_bgnd,a0 + JSRP show_bios_tips + clr a14 + move a14,@bios_type + move @nb_save,a14 + move a14,@nb_save + JSRP show_operatormsg + + calla RemapIO ;Remap the I/O + MOVE @AMODE_LOOPS,A0 + INC A0 + MOVE A0,@AMODE_LOOPS + + btst 0,a0 + jrnz #loop + JSRP creditscreen +; JSRP show_hstd + JSRP show_time_date + + MOVE @AMODE_LOOPS,A0 + andk 7,a0 + jrnz #loop + + JSRP show_copyright + JSRP aama_message + + clr a0 + move a0,@AMODE_LOOPS + move a0,@SOUNDSUP ;turn all sounds on + + jruc #loop + +aama_message + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + clr a0 ;movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + +; movi hstd_mod,a0 +; move a0,@BAKMODS,L +; calla BGND_UD1 ;create objects for background +; +; SLEEPK 2 + +; calla display_unblank + + + movi blue_grad_pal,a0 + JSRP do_the_grad_thang + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln1,a8 + movi [54+60-20,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln2,a8 + movi [54+60,>b1],a9 + JSRP STRCNRMO_2 + + clr a0 + movi [>0606,0000],a6 ;pal 0, color 17 + movi #ln2b,a8 + movi [54+60,>104],a9 + JSRP STRCNRMO_2 + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln3,a8 + movi [54+71,200],a9 + JSRP STRCNRMO_2 + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln4,a8 + movi [54+82,200],a9 + JSRP STRCNRMO_2 + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln5,a8 + movi [54+93,200],a9 + JSRP STRCNRMO_2 + + + clr a10 + movk 8,a11 + CREATE FADE_PID,fade_up + + movk 1,a0 + move a0,@DISPLAYON + + SLEEPK 2 + calla display_unblank + +;Explanation - We MUST allow the fade process created above +;to finish because if someone wacks out below, the fade +;process is still running and JakeO's code to do his wipe +;across the screen stuff for the high score table starts running. +;His code uses the FADERAM area for those screen wipes and if a fader +;is running, the data in those areas gets changed by the fader process. +;Unfortunately, some of the data he is using is used as pointers in a +;memory to memory copy loop and if those values get changed the memory to +;memory copy goes haywire and starts scribbling all over the place causing +;a lockup. NOTE - The errant writes CAN and do occur into the CMOS area. +;There are 4 ways to solve the problem. +; +; 1. Guarentee that the fader is allowed to run to completion. +; +; 2. Kill off the fader after wacking out. +; +; 3. Use a different area of memory for the screen wipes. +; +; 4. Shoot Jake. +; +;Not wanting to go to jail I chose option 3 cause we got plenty of memory. +; + SLEEPK 20 + + movi 4*TSEC,a10 + JSRP wait_on_butn + +; clr a10 +; movk 16,a11 +; CREATE FADE_PID,fade_down +; +; SLEEP TSEC +; +; calla display_blank + + RETP + +; movi CLSNEUT|TYPTEXT|SUBTXT,a0 +; calla obj_del1c + + +; calla display_on +; calla view_page_0 +; movi >40*6,a10 +; JSRP fadein_jsrp +; jruc amode_fade_retp + +; RETP + +#ln1 .string "AAMA PARENTAL ADVISORY",0 +#ln2 .string "LIFE-LIKE VIOLENCE",0 +#ln2b .string "- MILD",0 +#ln3 .string "CONTAINS SELECTED SCENES INVOLVING",0 +#ln4 .string "HUMAN-LIKE CHARACTERS ENGAGED IN",0 +#ln5 .string "COMBATIVE ACTIVITY.",0 + .byte 0 + .even + + +do_the_grad_thang + + calla pal_getf + + SLEEPK 2 + + clr a3 + movi >00000101,a1 + + movi 31,a10 +loop movi >00020190,a2 + movi >2000000,a4 + movi >800c,a5 + calla QDMAN ;dman + addi >01010000,a1 + addi >00020000,a3 + dsj a10,loop + + addi >00840000,a3 + + movi 32,a10 +loop2 movi >00020190,a2 + movi >2000000,a4 + movi >800c,a5 + calla QDMAN ;dman + subi >01010000,a1 + addi >00020000,a3 + dsj a10,loop2 + + SLEEPK 4 + + RETP + +************************************************************************** +* * +* dman - manual dma, all regs must be setup upon calling * +* a1 = [constant color,palette] * +* a2 = size [h,w] * +* a3 = destination [y,x] * +* a4 = starting address * +* a5 = [offset,control] * +* * +************************************************************************** +dman + +*manual dma (setup your own regs) +*inputs: +*a1: constant color:palette +*a2: vsize:hsize +*a3: destination y:x +*a4: sag +*a5: offset:control +qdman: + MMTM sp,a2,a4,a13 + jruc qdma1 + + +************************************************************************** +* * +* dma queue support routines * +* * +************************************************************************** +* +* qdma puts image on dma q +* inputs: +* a1: constant color:palette +* a3: destination y:x +* a5: offset:control +* a14: address of image header +* gets: a2=h/w; a4=sag +* +;qdma +; mmtm sp,a2,a4,a13 +; move *a14,a2,l ;get vsize:hsize +; move *a14(isag),a4,l ;get sag + +qdma1 +; movk 1,a13 +; move a13,@qdmaflg,w ;q being modified + + .ref DMAQCUR,DMAQ + + move @DMAQCUR,a13,L + cmpi DMAQ,a13 + jrls qdmax ;q overload, can it + + mmtm a13,a1,a2,a3,a4,a5 + move a13,@DMAQCUR,L + +; clr a13 +; move a13,@qdmaflg,w + +qdmax MMFM sp,a2,a4,a13 + rets + +;************************************************************************* + +blue_grad_pal + .word 32 + + .word 31 + .word 30 + .word 29 + .word 28 + .word 27 + .word 26 + .word 25 + .word 24 + .word 23 + .word 22 + .word 21 + .word 20 + .word 19 + .word 18 + .word 17 + .word 16 + + .word 15 + .word 14 + .word 13 + .word 12 + .word 11 + .word 10 + .word 9 + .word 8 + .word 7 + .word 6 + .word 5 + .word 4 + .word 3 + .word 2 + .word 1 + .word 0 + +************ clear screen routine ********************* + +;clr_scrn +; clr a0 +; mmtm sp,a1,a2,a3 +; move @displayon,a3,w +; clr a1 +; move a1,@displayon,w +;; callr dmaqwait ;wait on dma +; clr a1 +; move a1,@cmapsel,w ;select color map 0 +; movi screen,a1,l +; movi ((scrne-2000h)-screen)/32,a2,l +;clrlp move a0,*a1+,l +; dsjs a2,clrlp +; move a3,@displayon,w +; mmfm sp,a1,a2,a3 +; rets + + +#**************************************************************** +* show_gameplay + + SUBRP show_gameplay + + movk 1,a0 + move a0,@current_round + move a0,@match_cnt + + move a0,@p1rounds + move a0,@p2rounds + + movk 7,a0 + calla RNDRNG0 + cmpi 7,a0 + jrnz #bug + inc a0 + +#bug move a0,@index1 + + ;initialize NUM_OPPS and CURRENT_LADDER + ;choose at random a battle between #2 and #6 on the ladder + + clr a14 + move a14,@belt_type + + calla INIT_LADDER_TABLE + + movk 5,a0 + calla RNDRNG0 + addk 1,a0 + X32 a0 + addi LADDER,a0 + move a0,@CURRENT_LADDER,L + move *a0,a14,L + srl 24,a14 + move a14,@NUM_OPPS + + CALLR TURN_SOUNDS_OFF_IF_NEED + + JSRP CLOSE_PROGRESS_SCREEN + calla SPECIAL_WIPEOUT + +;Eventually, we should show just quick clips of cool gameplay. + movk 1,a0 + move a0,@SHOW_CRD_FLAG + + CALLR TURN_SOUNDS_OFF_IF_NEED + + CREATE AMODE_GAMEPLAY_PID,start_match + + CALLA MAYBE_TOUGH_ENOUGH + + SLEEP 3*60 + + movi 10*TSEC,a10 + JSRP wait_on_butn + +;Freeze action in interesting spots... +;knockout processes + movk 1,a0 + move a0,@HALT + +;Stop wrestler procs +;Stop sweat +;Allow shadows to still shake + + CREATE0 DO_SET_IMAGES + + movi ACTIVE,a3,L + +#lp move *a3,a3,L ;Get next + jrz #x ;End? + move *a3(PWAKE),a0,L + .ref DO_SET_IMAGES + cmpi DO_SET_IMAGES,a0 + jrz #lp + + move *a3(PTIME),a14 ;Add sleep + addi 3*60,a14 + move a14,*a3(PTIME) + jruc #lp +#x + SLEEP 60 + +;fade down + clr a10 + movk 16,a11 + CREATE FADE_PID,fade_down + + SLEEPK 32 + + calla display_blank + + clr a0 + move a0,@SHOW_CRD_FLAG + CALLA nosounds + + RETP + +TURN_SOUNDS_OFF_IF_NEED + ADJUST ADJMUSIC + JRNZ TURN_OFF_SOUNDS + + MOVE @AMODE_LOOPS,A0 + CMPI 2,A0 + JRLT SOUNDS_SHOULD_BE_ON +TURN_OFF_SOUNDS + MOVK 2,A0 + MOVE A0,@SOUNDSUP +SOUNDS_SHOULD_BE_ON + RETS + +#**************************************************************** +* Show an operator message if one has been entered + + STRUCTPD + WORD som_string + + + SUBR show_operatormsg + + calla ADJ_PAGE + movk CMESS_LINES,a2 ;>Check for a message + movi CUSTOM_MESSAGE,a7 +#cmlp + calla RC_BYTEI + jrnz #msg + addi CMESS_LINE_SIZE,a7 + dsj a2,#cmlp + jruc #x +#msg +; JSRP GENERIC_DISPLAY + JSRP dan_test + movk CMESS_LINES,a2 ;>Check for a message + movi CUSTOM_MESSAGE,a7 + movi [50,200],a9 +#prtlp + PUSHP a2,a7 + + calla ADJ_PAGE + + move a13,a2 + addi som_string,a2 +#getlp calla RC_BYTEI + movb a0,*a2 + addk 8,a2 + move a0,a0 + jrnz #getlp + + + movi GOLD,a0 + calla pal_getf + move a0,a6 + + move a13,a8 + addi som_string,a8 + clr a0 + movk 1,a10 + movi osgfont_t,a11 + PUSHP a9 + JSRP STRCNRMO_1 + PULLP a9 + + movi OBJLST,a14 + +#olp move *a14,a14,L ;A14=*Next + jrz #oend + move *a14(ODATA_p),a0,L + jrnz #olp + movi [>320,>320],a1 + move a1,*a14(ODATA_p),L + jruc #olp +#oend + +; PUSHP a6 +; SLEEPK 30 +; PULLP a6 + PULLP a2,a7 +#nxt + addi [45,0],a9 + + addi CMESS_LINE_SIZE,a7 + dsj a2,#prtlp + + SLEEP 2*60 + + movi 6*TSEC,a10 + JSRP wait_on_butn + + JSRP scrn_scaleout + + calla WIPEOUT + +#x RETP + +#***************************************************************************** + + + .def osgfont_t +osgfont_t + .long OSGEMD_EXP,OSGEMD_APO,OSGEMD_NUM,OSGEMD_DOL ;!"#$ + .long OSGEMD_SPC,OSGEMD_AND,OSGEMD_APO,OSGEMD_OBR ;%&'( + .long OSGEMD_CBR,OSGEMD_SPC,OSGEMD_SPC,OSGEMD_SPC ;)*+, + .long OSGEMD_DAS,OSGEMD_DOT,OSGEMD_SLS ;-./ + .long OSGEMD_0,OSGEMD_1,OSGEMD_2,OSGEMD_3,OSGEMD_4 + .long OSGEMD_5,OSGEMD_6,OSGEMD_7,OSGEMD_8,OSGEMD_9 + .long OSGEMD_COL,OSGEMD_SPC,OSGEMD_SPC,OSGEMD_SPC ;:;<= + .long OSGEMD_SPC,OSGEMD_QUE,OSGEMD_SPC ;>?@ + .long OSGEMD_A,OSGEMD_B,OSGEMD_C,OSGEMD_D + .long OSGEMD_E,OSGEMD_F,OSGEMD_G,OSGEMD_H + .long OSGEMD_I,OSGEMD_J,OSGEMD_K,OSGEMD_L + .long OSGEMD_M,OSGEMD_N,OSGEMD_O,OSGEMD_P + .long OSGEMD_Q,OSGEMD_R,OSGEMD_S,OSGEMD_T + .long OSGEMD_U,OSGEMD_V,OSGEMD_W,OSGEMD_X + .long OSGEMD_Y,OSGEMD_Z + .long OSGEMD_SPC,OSGEMD_SPC,OSGEMD_SPC,OSGEMD_END ;[\]^ + .long OSGEMD_BAK,OSGEMD_SPC,OSGEMD_SPC ;_` + + +#***************************************************************************** +* Show credits screen +* + + SUBRP creditscreen + + calla pal_clean + + movk 1,a10 + JSRP CRD_SCRN2 + movi AMODE_PID,a0 + move a0,*a13(PROCID) + + ;fade down +; clr a10 +; movk 16,a11 +; CREATE0 fade_down +; +; SLEEP TSEC + + RETP + + +#***************************************************************************** +* Show time and date +* + + SUBRP show_time_date + + calla READ_DIP + btst DPTDON_B,a0 + jrz #std_exit + + move @_clk_rd,a8,L ;Save current auto update state + move a8,@_auto_update_save,L + clr a8 ;Enable auto update + move a8,@_clk_rd,L + JSRP _GetTime + + SLEEPK 30 + + JSRP GENERIC_DISPLAY + + movi #date_time_prompt,a2 + calla print_message + + movi #day_of_week_setup,a2 + calla setup_message + move @_tday,a4 + cmpi 1,a4 + jrlt #bad_day + cmpi 8,a4 + jrlt #do_day +#bad_day + movk 1,a4 +#do_day + subk 1,a4 + sll 5,a4 + addi #day_of_week_table,a4 + move *a4,a4,L + calla print_string_C2 + + + move @_tmonth,a4 + cmpi 1,a4 + jrlt #bad_month + cmpi 13,a4 + jrlt #do_month +#bad_month + movk 1,a4 +#do_month + subk 1,a4 + sll 5,a4 + addi #month_table,a4 + move *a4,a4,L + calla copy_rom_string + + move @_tdate,a0 + cmpi 1,a0 + jrlt #bad_date + cmpi 32,a0 + jrlt #do_date +#bad_date + movk 1,a0 +#do_date + movi 31,a1 + calla dec_to_asc + calla concat_string + + movi #d_sep,a4 + calla concat_rom_string + + move @_tyear,a0 + jrn #bad_year + cmpi 99,a0 + jrlt #do_year +#bad_year + clr a0 +#do_year + cmpi 9,a0 + jrgt #year_gt_9 + movi #zero_year,a4 + PUSHP a0 + calla concat_rom_string + PULLP a0 +#year_gt_9 + movi 99,a1 + calla dec_to_asc + calla concat_string + + movi #date_setup,a2 + calla setup_message + calla print_string_C + + move @_thours,a0 + jrn #bad_hour + cmpi 24,a0 + jrlt #do_hour +#bad_hour + clr a0 +#do_hour + movi 12,a1 + modu a1,a0 + jrnz #not_mid_or_noon + movk 12,a0 +#not_mid_or_noon + movi 13,a1 + calla dec_to_asc + calla copy_string + + movi #t_sep,a4 + calla concat_rom_string + + move @_tminutes,a0 + jrn #bad_minute + cmpi 60,a0 + jrlt #do_minute +#bad_minute + clr a0 +#do_minute + cmpi 9,a0 + jrgt #min_gt_9 + movi #zero_year,a4 + PUSHP a0 + calla concat_rom_string + PULLP a0 +#min_gt_9 + movi 60,a1 + calla dec_to_asc + calla concat_string + + movi #time_setup,a2 + calla setup_message + calla print_string_C + + + movi #its_time_to_message,a2 + calla print_message + + movi #wrestlemania_message,a2 + calla print_message + + SLEEPK 25 ; Min time to display + + movi TSEC*5,a2 +#wait_loop + PUSHP a2 + SLEEPK 1 + PULLP a2 + calla get_all_buttons_cur2 + jrnz #time_date_done + dsjs a2,#wait_loop +#time_date_done +; move @_auto_update_save,a8,L ;Restore Auto Update state + clr a8 + not a8 + move a8,@_clk_rd,L + +#std_exit + RETP + +#date_time_prompt + JAM_STR ogmd10_ascii,10,0,200,40,SGMD8GLD,print_string_C2 + .string "THE DATE AND TIME IS...",0 + .even + +#its_time_to_message + JAM_STR ogmd10_ascii,10,0,200,150,SGMD8GLD,print_string_C2 + .string "THAT MEANS IT'S TIME TO PLAY...",0 + .even + +#wrestlemania_message + JAM_STR wgsf24_ascii,10,0,200,180,WGFS_W_P,print_string_C2 + .string "WRESTLEMANIA",0 + .even + +#day_of_week_setup + JAM_STR wsf14_ascii,10,0,200,72,WSF_R_P,print_string_C2 + .even + +#date_setup + JAM_STR wsf14_ascii,10,0,200,92,WSF_R_P,print_string_C2 + .even + +#time_setup + JAM_STR wsf14_ascii,10,0,200,112,WSF_R_P,print_string_C2 + .even + +#d_sep + .string ", 19",0 + .even + +#t_sep + .string ":",0 + .even + +#zero_year + .string "0",0 + .even + +#monday_str + .string "MONDAY",0 + .even +#tuesday_str + .string "TUESDAY",0 + .even +#wednesday_str + .string "WEDNESDAY",0 + .even +#thursday_str + .string "THURSDAY",0 + .even +#friday_str + .string "FRIDAY",0 + .even +#saturday_str + .string "SATURDAY",0 + .even +#sunday_str + .string "SUNDAY",0 + .even + +#january_str + .string "JANUARY ",0 + .even +#february_str + .string "FEBRUARY ",0 + .even +#march_str + .string "MARCH ",0 + .even +#april_str + .string "APRIL ",0 + .even +#may_str + .string "MAY ",0 + .even +#june_str + .string "JUNE ",0 + .even +#july_str + .string "JULY ",0 + .even +#august_str + .string "AUGUST ",0 + .even +#september_str + .string "SEPTEMBER ",0 + .even +#october_str + .string "OCTOBER ",0 + .even +#november_str + .string "NOVEMBER ",0 + .even +#december_str + .string "DECEMBER ",0 + .even + +#day_of_week_table + .long #sunday_str + .long #monday_str + .long #tuesday_str + .long #wednesday_str + .long #thursday_str + .long #friday_str + .long #saturday_str + +#month_table + .long #january_str + .long #february_str + .long #march_str + .long #april_str + .long #may_str + .long #june_str + .long #july_str + .long #august_str + .long #september_str + .long #october_str + .long #november_str + .long #december_str + + + +#***************************************************************************** + + SUBRP show_copyright + + calla display_blank + calla WIPEOUT + + clr a0 + move a0,@dtype ;2D + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + move a0,@IRQSKYE + + SLEEPK 2 + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln1,a8 + movi [50+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln2,a8 + movi [62+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln3,a8 + movi [74+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln4,a8 + movi [86+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln5,a8 + movi [98+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln6,a8 + movi [110+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln7,a8 + movi [122+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln8,a8 + movi [134+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln9,a8 + movi [146+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + movi [200,0],a0 + movi [4bh-10,0],a1 + movi SMWWF2,a2 ;* image + movi 20000,a3 + movi DMAWNZ|M_NOCOLL,a4 + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJ + + clr a10 + movk 8,a11 + CREATE FADE_PID,fade_up + + movk 1,a0 + move a0,@DISPLAYON + + SLEEPK 2 + calla display_unblank + + SLEEPK 20 + + movi 3*TSEC,a10 + JSRP wait_on_butn + + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + calla obj_del1c + + + clr a0 + movi [>1111,0000],a6 ;pal 0, color 17 + movi #ln10,a8 + movi [50+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln11,a8 + movi [62+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln12,a8 + movi [74+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln13,a8 + movi [86+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln14,a8 + movi [98+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln15,a8 + movi [110+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln16,a8 + movi [122+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln17,a8 + movi [134+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln18,a8 + movi [146+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + clr a0 + movi #ln19,a8 + movi [158+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_2 + + SLEEPK 20 + + movi 3*TSEC,a10 + JSRP wait_on_butn + + RETP + +#ln1 .string "VIDEO GAME SOFTWARE DESIGNED AND DEVELOPED",0 +#ln2 .string "BY MIDWAY MANUFACTURING COMPANY",0 +#ln3 .string "(C) 1995 ASSIGNED TO ACCLAIM ENTERTAINMENT, INC.",0 +#ln4 .string "[ (C) 1995 TITANSPORTS, INC. ]",0 +#ln5 .string "ALL DISTINCTIVE NAMES AND CHARACTER LIKENESSES",0 +#ln6 .string "USED HEREIN ARE TRADEMARKS OF TITANSPORTS, INC.",0 +#ln7 .string "SUBLICENSED BY MIDWAY MANUFACTURING COMPANY",0 +#ln8 .string "FROM ACCLAIM ENTERTAINMENT INC.",0 +#ln9 .string "ALL RIGHTS RESERVED.",0 + +#ln10 .string "'WRESTLEMANIA'",0 +#ln11 .string "COMPOSED/PERFORMED BY MICHAEL STOCK,",0 +#ln12 .string "PETER WATERMAN, JAMES HART & J.J. MAGUIRE",0 +#ln13 .string "COURTESY OF TITANSPORTS INC. USED BY PERMISSION -",0 +#ln14 .string "ALL RIGHTS RESERVED",0 +#ln15 .string "'WRESTLEMANIA' BY WWF SUPERSTARS. (P) 1993 THE",0 +#ln16 .string "COPYRIGHT IN THIS SOUND RECORDING IS OWNED BY",0 +#ln17 .string "BMG EURODISC LIMITED AND IS USED BY PERMISSION.",0 +#ln18 .string "COMPOSED BY STOCK/WATERMAN/WWF AND PUBLISHED BY",0 +#ln19 .string "BMG MUSIC PUBLISHING LTD./ALL BOYS MUSIC LTD.",0 + .EVEN + + +#******************************************************** +* +* Print general tips +* + SUBRP print_gen_tips + + movi #gen_tip_mes,a2 + calla print_message + + MOVI [10,0],A0 + MOVI [21,0],A1 + + movi MVEBAR_R,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [13,0],A0 + MOVI [21+9,0],A1 + + movi SHADOW01,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + CREATE FLASH_PID,JUDDER_SHADOW + + movi #gen_tip_table,a1 + movi 60,a3 +#sgt_loop + move *a1+,a4,L + jrz #done + PUSHP a1,a3 + calla copy_rom_string + movi #gt_line_setup,a2 + calla setup_message + move a3,@mess_cursy + calla print_string_C + PULLP a1,a3 + addk 15,a3 + jruc #sgt_loop + +#done + calla hscore_colcyc +; calla hscore_colcyc2 + + RETP + +#gt_line_setup + JAM_STR ogmd10_ascii,6,0,200,90,SGMD8YEL,print_string + .even + +#gen_tip_mes + JAM_STR osgemd_ascii,10,0,200,10,BLUE,print_string_C2 + .byte "TONS O' TIPS",0,0 + .even + +#gen_tip1 + .string "PUT YOUR OPPONENT INTO A HEAD HOLD",0 + .even +#gen_tip1a + .string "USING TOWARD-TOWARD-POWERPUNCH.",0 + .even +#gen_tip2 + .string "FLING YOUR OPPONENT TO THE ROPES",0 + .even +#gen_tip2a + .string "USING AWAY-AWAY-POWERPUNCH.",0 + .even +#gen_tip3 + .string "WHEN IN CLOSE TO YOUR OPPONENT",0 + .even +#gen_tip3a + .string "USE AWAY-AWAY-PUNCH TO HIP TOSS HIM.",0 + .even +#gen_tip4 + .string "WHEN AN OPPONENT IS RUNNING AT YOU",0 + .even +#gen_tip4a + .string "USE POWERPUNCH & AWAY TO FLING HIM.",0 + .even + +#gen_tip_table + .long #gen_tip1 + .long #gen_tip1a + .long blank + .long #gen_tip2 + .long #gen_tip2a + .long blank + .long #gen_tip3 + .long #gen_tip3a + .long blank + .long #gen_tip4 + .long #gen_tip4a + .long 0 + + +#******************************************************** +* +* Show General Gameplay tips +* + SUBRP show_gen_tips + + movi hstd_mod,a0 + calla SET_UP_PIXEL_WIPE + JSRP print_gen_tips + SLEEPK 1 + JSRP BLOW_0_TO_1 + calla RESET_FROM_PIXEL_WIPE + + SLEEP TSEC + + movi 10*TSEC,a10 + JSRP wait_on_butn + + movi FLASH_PID,a0 + calla KIL1C + + movi CYCPID,a0 + calla KIL1C + + RETP + +#***************************************************************************** +* +* Show high score tables +* + + SUBRP show_hstd + + calla table_cmos_check ;make sure hscore CMOS is okay + + movi hstd_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + movi 1,a5 + + JSRP print_inter + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + MOVE @starting_num,a9 + DEC A9 + move a9,@starting_num + CMPI INTER_TAB_ENTRIES-6,A9 + JRLT SCROLL_TABLE_LOOP_2_I + MOVI INTER_TAB_ENTRIES-1,A9 + move a9,@starting_num + +SCROLL_TABLE_LOOP_2_I + clr a0 + move a0,@not_blank + MOVK 4,A11 + +SCROLL_TABLE_LOOP_I + MOVI 36,A10 +WAIT_ON_THOSE_BUTS_I + SLEEP 1 + calla get_all_buttons_cur2 + JRNZ JUST_WAIT_I + DSJS A10,WAIT_ON_THOSE_BUTS_I + PUSH A11 + CALLA DELETE_ANY_OFF_TOP + PULL A11 + sleep 1 + MOVE @starting_num,a9 + cmpi INTER_TAB_ENTRIES-1,a9 + JRGE JUST_WAIT_I + DEC A11 + JRZ DELAY_SCROLL_I +BACK_IN_AGAIN_I + inc a9 + move a9,@starting_num + PUSH A11 + CALLA draw_each_inter_table_entry + CALLA MOVE_ALL_OBJS_UP + PULL A11 + MOVI 34,A10 + jruc WAIT_ON_THOSE_BUTS_I + +DELAY_SCROLL_I + MOVK 3,A11 + SLEEP 15H ;scroll last three off + PUSH A11 + CALLA STOP_ALL_OBJS + PULL A11 + MOVI 85,A8 +MORE_WAITING_I + SLEEP 1 ;delay on each three displayed + calla get_all_buttons_cur2 + JRNZ JUST_WAIT_I + DSJS A8,MORE_WAITING_I + move @not_blank,a0 + jrnz JUST_WAIT_I + clr a0 + JRUC BACK_IN_AGAIN_I + +JUST_WAIT_I + + CALLA STOP_ALL_OBJS + movi 5*TSEC,a10 + JSRP wait_on_butn + + MOVI FLASH_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + +********************************************************************************* + movi hstd_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + movi 1,a5 + + JSRP print_beaten + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + MOVE @starting_num,a9 + DEC A9 + move a9,@starting_num + CMPI BEATEN_TAB_ENTRIES-6,A9 + JRLT SCROLL_TABLE_LOOP_2 + MOVI BEATEN_TAB_ENTRIES-1,A9 + move a9,@starting_num + +SCROLL_TABLE_LOOP_2 + clr a0 + move a0,@not_blank + MOVK 4,A11 + +SCROLL_TABLE_LOOP + MOVI 36,A10 +WAIT_ON_THOSE_BUTS + SLEEP 1 + calla get_all_buttons_cur2 + JRNZ JUST_WAIT + DSJS A10,WAIT_ON_THOSE_BUTS + PUSH A11 + CALLA DELETE_ANY_OFF_TOP + PULL A11 + sleep 1 + MOVE @starting_num,a9 + cmpi BEATEN_TAB_ENTRIES-1,a9 + JRGE JUST_WAIT + DEC A11 + JRZ DELAY_SCROLL +BACK_IN_AGAIN + inc a9 + move a9,@starting_num + PUSH A11 + CALLA draw_each_beaten_table_entry + CALLA MOVE_ALL_OBJS_UP + PULL A11 + MOVI 34,A10 + jruc WAIT_ON_THOSE_BUTS + +DELAY_SCROLL + MOVK 3,A11 + SLEEP 15H ;scroll last three off + PUSH A11 + CALLA STOP_ALL_OBJS + PULL A11 + MOVI 85,A8 +MORE_WAITING + SLEEP 1 ;delay on each three displayed + calla get_all_buttons_cur2 + JRNZ JUST_WAIT + DSJS A8,MORE_WAITING + move @not_blank,a0 + jrnz JUST_WAIT + clr a0 + JRUC BACK_IN_AGAIN + +JUST_WAIT + + CALLA STOP_ALL_OBJS + movi 5*TSEC,a10 + JSRP wait_on_butn + + MOVI FLASH_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + +*********************** + movi hstd_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + JSRP print_tag + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + movi 5*TSEC,a10 + JSRP wait_on_butn + +*********************** + movi hstd_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + JSRP print_hscores + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + movi 5*TSEC,a10 + JSRP wait_on_butn + + MOVI hstd_mod,A0 + CALLA SET_UP_PIXEL_WIPE + + JSRP print_winstreaks + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + movi 5*TSEC,a10 + JSRP wait_on_butn + + RETP + +hstd_mod + .long slateBMOD + .word 0,0 + .long 0 + + .if 1 + +rule_str + JAM_STR osgmd8_ascii,6,0,200,225,SGMD8WHT,print_string_C2 + .string "{WE MAKE THE GAMES THAT MAKE THE INDUSTRY}",0 + .even + + + SUBRP show_sports_logo + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + MOVI logo_mod,A0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + movi rule_str,a2 + calla print_message + + MOVI LOGO_LIST,A9 + + MOVI [200,0],A0 + MOVI [118,0],A1 + + move *a9+,a2,L + MOVI 1000,a3 + movi DMAWNZ|M_SCRNREL,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + + CALLR LOGO_CREATLOOP + + SLEEPK 1 + clr a10 + movk 8,a11 + CREATE FADE_PID,fade_up + + movk 1,a0 + move a0,@DISPLAYON + + calla display_unblank + + SLEEPK 32 + CREATE WATER_PID,MOVE_BACK_OFF_SCREEN + + SLEEP TSEC/2 + movi 8*TSEC,a10 + JSRP wait_on_butn + + movi WATER_PID,a0 + clr a1 + not a1 + calla KILALL + + RETP + +LOGO_CREATLOOP + PUSH a0,a1,a3,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + move *a9+,a2,L + jrnz LOGO_CREATLOOP + RETS + +logo_mod + .long SPORTBKBMOD + .word -400-(400*0),400*0 + .long SPORTBKBMOD + .word -400-(400*1),400*1 + .long SPORTBKBMOD + .word -400-(400*2),400*2 + .long SPORTBKBMOD + .word -400-(400*3),400*3 + .long SPORTBKBMOD + .word -400-(400*4),400*4 + .long SPORTBKBMOD + .word -400-(400*5),400*5 + .LONG 0 + +LOGO_LIST + .LONG SPRTLG01 + .LONG SPRTLG02 + .LONG SPRTLG03 + .LONG SPRTLG04 + .LONG SPRTLG05 + .LONG SPRTLG06 + .LONG SPRTLG07 + .LONG SPRTLG08 + .LONG SPRTLG09 + .LONG SPRTLG10 + .LONG SPRTLG11 + .LONG SPRTLG12 + .LONG SPRTLG13 + .LONG SPRTLG14 + .LONG SPRTLG15 + .LONG SPRTLG16 + .LONG SPRTLG17 + .LONG 0 + + +MOVE_BACK_OFF_SCREEN + + MOVE @WORLDTLX,A0,L + SUBI [2,0],A0 + MOVE A0,@WORLDTLX,L + + MOVE @WORLDTLY,A0,L + ADDI [2,0],A0 + MOVE A0,@WORLDTLY,L + + CALLA BGND_UD1 + + SLOOP 1,MOVE_BACK_OFF_SCREEN + + +; SUBRP show_big_wwf_title +; +; calla display_blank +; calla WIPEOUT ;CLEAN SYSTEM OUT +; +; clr a0 +; move a0,@HALT +; move a0,@dtype ;2d mode +; move a0,@IRQSKYE +; +; movk 1,a0 ;page flipping on +; move a0,@dpageflip +; +; SLEEPK 2 +; +; movi SCRNEND,a0 ;[256,405] +; move a0,@SCRNLR,L +; +; clr a0 +; move a0,@WORLDTLX,L +; move a0,@WORLDTLY,L +; +; movi #big_wwf_mod,a0 +; move a0,@BAKMODS,L +; calla BGND_UD1 ;create objects for background +; +; SLEEPK 2 +; +; calla display_unblank +; +; SLEEP TSEC/2 +; movi 10*TSEC,a10 +; JSRP wait_on_butn +; +; retp +; +;#big_wwf_mod +; .long bigwwfBMOD +; .word 0,0 +; .long 0 + +#***************************************************************************** +* +* Show lava title page +* + + SUBRP show_title + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + movi #title_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + SLEEPK 2 + + calla display_unblank + + + CREATE CYCPID,#cycle_lava + + + MOVI [102,7],A8 + MOVI WHERE_WRESTLMANIA_SPARKLES,A10 + MOVK 4,A9 + CREATE FLASH_PID,SPRINKLE_GLINTS + + CREATE ATTRACT_ANIMPID,RANDOM_SPARKLE + + SLEEP TSEC/2 + movi 10*TSEC,a10 + JSRP wait_on_butn + + movi CYCPID,a0 + calla KIL1C + MOVI FLASH_PID,A0 + calla KIL1C + MOVI ATTRACT_ANIMPID,A0 + calla KIL1C + + RETP + + + SUBRP show_title2 + + CREATE CYCPID,#cycle_lava + + SLEEP TSEC/2 + movi 8*TSEC,a10 + JSRP wait_on_butn + + movi CYCPID,a0 + calla KIL1C + +;fade down + clr a10 + movk 16,a11 + CREATE FADE_PID,fade_down + + SLEEP TSEC + + calla display_blank + + RETP + +#title_mod + .long NTITLESCBMOD + .word 0,0 + .long 0 + +#cycle_lava + movi #cyc_t,a9 +#lp0 + move *a9+,a0,L + + calla pal_getf + move a0,a8 ;Pal thats needs changing + + move *a9,a0,L + jrz #cycle_lava + + calla pal_getf + move a0,a11 ;Pal to change into + + movi BAKLST,a14 +#lp + move *a14,a14,L + jrz #x + move *a14(OPAL),a2 + cmp a8,a2 + jrne #lp +;Found matching pal + move a11,*a14(OPAL) + jruc #lp + +#x SLEEP 5 + jruc #lp0 + +#cyc_t .long LAVA1_P + .long LAVA2_P + .long LAVA3_P + .long LAVA4_P + .long LAVA5_P + .long LAVA6_P + .long LAVA7_P + .long LAVA8_P + .long LAVA10_P + .long LAVA10_P + .long LAVA10_P +; .long LAVA9_P + .long LAVA10_P + .long LAVA8_P + .long LAVA7_P + .long LAVA6_P + .long LAVA5_P + .long LAVA4_P + .long LAVA3_P + .long LAVA2_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long 0 + + .endif + + +;Keep this code around +;#***************************************************************************** +;* +;* Show WWF logo +; +; SUBRP show_big_wwf_logo_screen_thingie +; +; calla display_blank +; calla WIPEOUT ;CLEAN SYSTEM OUT +; +; clr a0 +; move a0,@HALT +; move a0,@dtype ;2d mode +; move a0,@IRQSKYE +; +; movk 1,a0 ;page flipping on +; move a0,@dpageflip +; +; SLEEPK 2 +; +; movi SCRNEND,a0 ;[256,405] +; move a0,@SCRNLR,L +; +; clr a0 +; move a0,@WORLDTLX,L +; move a0,@WORLDTLY,L +; +; movi #blank_mod,a0 +; move a0,@BAKMODS,L +; calla BGND_UD1 ;create objects for background +; +; SLEEPK 2 +; +; calla display_unblank +; +; SLEEPK 10 +; +; movi #logo_mod,a0 +; CALLA SET_UP_PIXEL_WIPE +; +; SLEEPK 1 +; +; JSRP BLOW_0_TO_1 +; +; +; SLEEP TSEC/2 +; movi 8*TSEC,a10 +; JSRP wait_on_butn +; +;;fade down +; clr a10 +; movk 16,a11 +; CREATE0 fade_down +; +; SLEEP TSEC +; +; calla display_blank +; +; RETP +; +;#logo_mod +; .long comesoonBMOD +; .word 0,0 +; .long 0 +;#blank_mod +; .long wwfblankBMOD +; .word 0,0 +; .long 0 + +#***************************************************************************** +* +* Show wrestler bios +* + .bss next_bio,16 + + SUBRP show_bios + + movi #bio_mod,a0 + SUBRP show_bios_tips + CALLA SET_UP_PIXEL_WIPE + + movb @next_bio,a10 + andi 00001111b,a10 + inc a10 + cmpi 8,a10 + jrlt #in_range + clr a10 +#in_range + + ;draw the logo + PUSH a10 + movb a10,@next_bio + + + MOVI 018h,a3 + MOVI 00bh,a4 + MOVI #bio_logos,a5 + clr a7 + + CALLR MAKE_UP_LOGO + + ;draw the mugshot + PULL a10 + PUSH a10 + X32 a10 + addi wrestler_mugs2,a10 + move *a10,a9,L + movi [017ah,0],a0 + movi [0Afh,0],a1 + + move *a9+,a2,L + clr a3 + movi DMAWNZ|M_FLIPH,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + +#mugcreatloop + PUSH a0,a1,a3,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + move *a9+,a2,L + jrnz #mugcreatloop + + + .ref wrestler_attributes,attbars + ;attributes + movi [0ffh,0],a0 + movi [0aeh,0],a1 +; movi ATTPL_G,a2 +; movi 10,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 +; PUSH a0,a1,a4,a5,a6,a7 +; calla BEGINOBJ +; PULL a0,a1,a4,a5,a6,a7 +; subi 2,a1 + movi ATT_TXT,a2 + movk 11,a3 + PUSH a0,a1 + calla BEGINOBJ + PULL a0,a1 + + + ;attribute bars + PULL a10 + PUSH a10 + addi [61,0],a0 + addi [12,0],a1 + movi ATTMTR_0,a2 + movi 11,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + + movi 4,a9 ;bar count + X64 a10 + addi wrestler_attributes,a10 + +#abc_loop + PUSH a0,a1,a3,a4,a5,a6,a7 + move *a10+,a2,W + X32 a2 + addi attbars,a2 + move *a2,a2,L + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + addi [8,0],a1 + dsj a9,#abc_loop + + move @bios_type,a14 + jrnz show_wres_tips + + ;print the bio text + ;a11 becomes the halfwidth for current wrestler + + PULL a10 + PUSH a10 + X32 a10 + addi #bio_data,a10 + move *a10,a10,L + move *a10+,a11,W + + movi 20,a14 + move a14,@mess_line_spacing + +; movi #bio_setup1,a2 +; calla setup_message +; movi #bio_center,a14 +; sub a11,a14 +; move a14,@mess_cursx +; movi #bio_message1,a4 +; calla print_string2 +; +; movi #bio_setup2,a2 +; calla setup_message +; movi #bio_center,a14 +; sub a11,a14 +; move a14,@mess_cursx +; movi #bio_message2,a4 +; calla print_string2 +; + + movi #bio_setup1,a2 + calla setup_message + + ;from text + movi #bio_y,a14 + move a14,@mess_cursy + movi #bio_center,a14 + move a14,@mess_cursx + + move *a10+,a4,L + calla print_string2 + + ;weight + + movi #bio_y+50,a14 + move a14,@mess_cursy + movi #bio_center,a14 + addi 16,a14 + move a14,@mess_cursx + + move *a10+,a0,W + movi 999,a1 + calla dec_to_asc + calla copy_string + calla print_string + + movi wsf10_ascii,a0 + move a0,@message_ascii,L + movi #pounds,a4 + movi #bio_y+54,a14 + move a14,@mess_cursy + move @mess_cursx2,a0 + move a0,@mess_cursx + calla print_string2 + + ;height + movi #bio_y+25,a14 + move a14,@mess_cursy + movi #bio_center,a14 + addi 8,a14 + move a14,@mess_cursx + + movi wsf14_ascii,a0 + move a0,@message_ascii,L + move *a10+,a0,W + movi 999,a1 + calla dec_to_asc + calla copy_string + calla print_string + + movi wsf10_ascii,a0 + move a0,@message_ascii,L + movi #feet,a4 + move @mess_cursx2,a0 + move a0,@mess_cursx + movi #bio_y+29,a14 + move a14,@mess_cursy + calla print_string2 + + movi wsf14_ascii,a0 + move a0,@message_ascii,L + move *a10+,a0,W + movi 999,a1 + calla dec_to_asc + calla copy_string + movi #bio_y+25,a14 + move a14,@mess_cursy + move @mess_cursx2,a0 + move a0,@mess_cursx + calla print_string + + movi wsf10_ascii,a0 + move a0,@message_ascii,L + movi #inches,a4 + movi #bio_y+29,a14 + move a14,@mess_cursy + move @mess_cursx2,a0 + move a0,@mess_cursx + calla print_string2 + + + ;quote + movi #bio_y+96+4,a14 + move a14,@mess_cursy + movi #bio_center,a14 + addk 15,a14 + move a14,@mess_cursx + movk 14,a14 + move a14,@mess_line_spacing + move *a10+,a4,L + calla print_string_C2 + + ;music + PULL a10 +no_attr + + MOVE @AMODE_LOOPS,A0 + CMPI 2,A0 + JRGE NO_MUSIC + + ADJUST ADJMUSIC + JRNZ NO_MUSIC + + X16 a10 + addi #wrestler_tunes,a10 + move *a10,a3,L + .if MUSIC_ON + calla SNDSND + .endif +NO_MUSIC + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP 2*TSEC + + movi 6*TSEC,a10 + JSRP wait_on_butn + + RETP + +wt_line1_setup + JAM_STR ogmd10_ascii,6,0,10,90,SGMD8YEL,print_string + .even +wt_title_setup + JAM_STR ogmd10_ascii,6,0,135,95,SGMD8RED,print_string_C2 + .string "SPECIAL MOVES" + .byte 0,0 + .even + +blank + .byte 0 + .even + +bret_tip1 + .string "CHARGE POWERPUNCH 2 SEC.",0 + .even +bret_tip1a + .string "TO DO A DDT.",0 + .even +bret_tip2 + .string "DOWN-DOWN-PUNCH TO DO",0 + .even +bret_tip2a + .string "A SUPER UPPERCUT.",0 + .even +bret_tip3 + .string "CHARGE POWERKICK 2 SEC",0 + .even +bret_tip3a + .string "TO DO A FLYING KICK.",0 + .even + +bret_tips + .long bret_tip1 + .long bret_tip1a + .long blank + .long bret_tip2 + .long bret_tip2a + .long blank + .long bret_tip3 + .long bret_tip3a + .long 0 + + +razor_tip1 + .string "CHARGE POWERKICK 2 SEC.",0 + .even +razor_tip1a + .string "TO DO A FLYING KICK.",0 + .even +razor_tip2 + .string "1/4 CIRCLE D,DT,T - PUNCH",0 + .even +razor_tip2a + .string "DOES DOWN SLASHES.",0 + .even +razor_tip3 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +razor_tip3a + .string "TO DO SLASHES.",0 + .even + +razor_tips + .long razor_tip1 + .long razor_tip1a + .long blank + .long razor_tip2 + .long razor_tip2a + .long blank + .long razor_tip3 + .long razor_tip3a + .long 0 + +taker_tip1 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +taker_tip1a + .string "TO DO A NECKBREAKER.",0 + .even +taker_tip2 + .string "TOWARD-TOWARD-POWERKICK",0 + .even +taker_tip2a + .string "DOES A TOMBSTONE SMASH.",0 + .even +taker_tip3 + .string "1/4 CIRCLE D,DT,T - PUNCH",0 + .even +taker_tip3a + .string "DOES A SLIDING CHOKE HOLD.",0 + .even + +taker_tips + .long taker_tip1 + .long taker_tip1a + .long blank + .long taker_tip2 + .long taker_tip2a + .long blank + .long taker_tip3 + .long taker_tip3a + .long 0 + + +yoko_tip1 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +yoko_tip1a + .string "TO DO A SALT THROW.",0 + .even +yoko_tip2 + .string "TOWARD-TOWARD-PUNCH",0 + .even +yoko_tip2a + .string "DOES A GUT PUSH.",0 + .even +yoko_tip3 + .string "TOWARD-TOWARD-POWERKICK",0 + .even +yoko_tip3a + .string "DOES A SCISSORS.",0 + .even + +yoko_tips + .long yoko_tip1 + .long yoko_tip1a + .long blank + .long yoko_tip2 + .long yoko_tip2a + .long blank + .long yoko_tip3 + .long yoko_tip3a + .long 0 + + +shawn_tip1 + .string "CHARGE POWERKICK 2 SEC.",0 + .even +shawn_tip1a + .string "TO DO A FLYING KICK",0 + .even +shawn_tip2 + .string "TOWARD-TOWARD-POWERKICK",0 + .even +shawn_tip2a + .string "DOES A FRANKENSTEINER.",0 + .even +shawn_tip3 + .string "TOWARD-TOWARD-KICK DOES",0 + .even +shawn_tip3a + .string "A SLIDING KICKTOSS.",0 + .even + +shawn_tips + .long shawn_tip1 + .long shawn_tip1a + .long blank + .long shawn_tip2 + .long shawn_tip2a + .long blank + .long shawn_tip3 + .long shawn_tip3a + .long 0 + + +bam_tip1 + .string "AWAY-AWAY-POWERKICK",0 + .even +bam_tip1a + .string "DOES A JUMP KICK.",0 + .even +bam_tip2 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +bam_tip2a + .string "TO DO A FIREPUNCH.",0 + .even +bam_tip3 + .string "CHARGE POWERPUNCH 2 SEC",0 + .even +bam_tip3a + .string "TO DO A NECKBREAKER.",0 + .even + +bam_tips + .long bam_tip1 + .long bam_tip1a + .long blank + .long bam_tip2 + .long bam_tip2a + .long blank + .long bam_tip3 + .long bam_tip3a + .long 0 + + +doink_tip1 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +doink_tip1a + .string "TO DO A JOY BUZZER.",0 + .even +doink_tip2 + .string "TOWARD-TOWARD-POWERKICK",0 + .even +doink_tip2a + .string "DOES A HAPPY HAMMER.",0 + .even +doink_tip3 + .string "SEVEN RAPID PUNCHES DOES",0 + .even +doink_tip3a + .string "A BOXING PUNCH.",0 + +doink_tips + .long doink_tip1 + .long doink_tip1a + .long blank + .long doink_tip2 + .long doink_tip2a + .long blank + .long doink_tip3 + .long doink_tip3a + .long 0 + + +lex_tip1 + .string "CHARGE PUNCH 2 SECONDS",0 + .even +lex_tip1a + .string "TO DO A CLOBBER.",0 + .even +lex_tip2 + .string "TOWARD-TOWARD-PUNCH",0 + .even +lex_tip2a + .string "DOES A SLIDING ELBOW.",0 + .even +lex_tip3 + .string "TOWARD-TOWARD-POWERKICK",0 + .even +lex_tip3a + .string "DOES A HAMMER BLOW.",0 + .even + +lex_tips + .long lex_tip1 + .long lex_tip1a + .long blank + .long lex_tip2 + .long lex_tip2a + .long blank + .long lex_tip3 + .long lex_tip3a + .long 0 + +wrestler_tips + .long bret_tips + .long razor_tips + .long taker_tips + .long yoko_tips + .long shawn_tips + .long bam_tips + .long doink_tips + .long lex_tips + + SUBRP show_wres_tips + + movi wt_title_setup,a2 + calla print_message + + PULL a10 ; This is the wrestler number (0-7) + + move a10,a1 + X32 a1 + addi wrestler_tips,a1 + movi 120,a3 + move *a1,a1,L +swt_loop + move *a1+,a4,L + jrz no_attr + PUSHP a1,a3 + calla copy_rom_string + movi wt_line1_setup,a2 + calla setup_message + move a3,@mess_cursy + calla print_string + PULLP a1,a3 + addk 15,a3 + jruc swt_loop + + + SUBR MAKE_UP_LOGO + X64 a10 + add A5,a10 + move *a10+,a9,L + move *a10+,a0,W + move *a10,a1,W + add A3,a0 + add A4,a1 + sll 16,a0 + sll 16,a1 + + move *a9+,a2,L + clr a3 + movi DMAWNZ|M_SCRNREL,a4 + movi CLSNEUT,a5 + clr a6 + +#creatloop + MOVE A8,A10 + PUSH a0,a1,a3,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + move *a9+,a2,L + jrnz #creatloop + RETS + + +#bio_center .equ 100 +#bio_halfwidth .equ 87 + +#bio_y .equ 106 + +;#bio_setup1 +; JAM_STR osgmd8_ascii,5,0,0,#bio_y,SGMD8YEL,print_string2 +;#bio_message1 +; .byte "FROM:",1,"WEIGHT:",1,"HEIGHT:",1,"FINISHING",0 +; .even +; +;#bio_setup2 +; JAM_STR osgmd8_ascii,5,0,0,#bio_y+71,SGMD8YEL,print_string2 +;#bio_message2 +; .byte "MOVE:",0 +; .even + +;FIX!! + .even +#bio_setup1 + JAM_STR wsf14_ascii,6,0,0,#bio_y+75,WSF_Y_P,print_string2 + .even +;#bio_setup2 +; JAM_STR wsf10_ascii,6,10,0,#bio_y+75,WSF_Y_P,print_string2 +; .even + +#pounds + .byte " LBS.",0 + .even + +#feet + .byte " FT. ",0 + .even + +#inches + .byte " IN.",0 + .even + +#bio_data + .long #bhart_data,#razor_data,#taker_data,#yoko_data,#shawn_data + .long #bambam_data,#doink_data,#luger_data + +#bhart_data + .word 79 ;halfwidth + .long #bhart_fromstr ;from + .word 234,6,1 ;pounds, feet, inches + .long #bhart_quote ;quote text + +#razor_data + .word 77 ;halfwidth + .long #razor_fromstr ;from + .word 262,6,7 ;pounds, feet, inches + .long #razor_quote ;quote text + +#taker_data + .word 78 ;halfwidth + .long #taker_fromstr ;from + .word 322,6,11 ;pounds, feet, inches + .long #taker_quote ;quote text + +#yoko_data + .word 78 ;halfwidth + .long #yoko_fromstr ;from + .word 568,6,4 ;pounds, feet, inches + .long #yoko_quote ;quote text + +#shawn_data + .word 78 ;halfwidth + .long #shawn_fromstr ;from + .word 235,6,1 ;pounds, feet, inches + .long #shawn_quote ;quote text + +#bambam_data + .word 78 ;halfwidth + .long #bambam_fromstr ;from + .word 400,6,4 ;pounds, feet, inches + .long #bambam_quote ;quote text + +#doink_data + .word 78 ;halfwidth + .long #doink_fromstr ;from + .word 243,6,0 ;pounds, feet, inches + .long #doink_quote ;quote text + +#luger_data + .word 81 ;halfwidth + .long #luger_fromstr ;from + .word 270,6,4 ;pounds, feet, inches + .long #luger_quote ;quote text + +#bhart_fromstr +; .byte "CALGARY, ALBERTA",0 ;Too long + .byte "CALGARY",0 + .even +#razor_fromstr + .byte "MIAMI, FLORIDA",0 + .even +#taker_fromstr + .byte "DEATH VALLEY",0 + .even +#yoko_fromstr + .byte "TOKYO, JAPAN",0 + .even +#shawn_fromstr + .byte "SAN ANTONIO, TX",0 + .even +#bambam_fromstr + .byte "ASBURY PARK, NJ",0 + .even +#doink_fromstr + .byte "THE CIRCUS",0 + .even +#luger_fromstr + .byte "ATLANTA, GA",0 + .even + + + + +#bhart_quote + .byte "{I AM THE EXCELLENCE",1,"OF EXECUTION.}",0 + .even +#razor_quote + .byte "{TAKE A LOOK AT",1,"THE BAD GUY.}",0 + .even +#taker_quote + .byte "{REST IN PEACE}",0 + .even +#yoko_quote + .byte "{BANZAI !!!}",0 + .even +#shawn_quote + .byte "{I'M THE GREATEST THING",1,"GOING ON GOD'S GREEN EARTH.}",0 + .even +#bambam_quote + .byte "{I'M THE BEAST",1,"FROM THE EAST!",0 + .even +#doink_quote + .byte "{LIFE'S A JOKE!",0 +#luger_quote + .byte "{LEX LUGER IS THE",1,"ALL AMERICAN HERO}",0 + .even + +#bio_mod + .long biopageBMOD ;wrestler bios +; .long slateBMOD ;wrestler bios + .word 0,0 + .long 0 + +#bio_logos + LWW #bhart_logo,15,9 + LWW #razor_logo,16,9 + LWW #under_logo,17,9 + LWW #yoko_logo,20,7 + LWW #michael_logo,18,8 + LWW #bambam_logo,18,7 + LWW #doink_logo,24,8 + LWW #luger_logo,10,7 + +#bhart_logo + .long HRT3,0 +#razor_logo + .long RZR3,0 +#under_logo .long UND3,0 +#yoko_logo + .long YOK3,0 +#michael_logo + .long SHN3,0 +#bambam_logo + .long BAM3,0 +#doink_logo + .long DNK3,0 +#luger_logo + .long LEX3,0 + +#wrestler_tunes + .word 5,2,1,7,6,4,8,3 + +****************************************************************************** +* +* A10 = # of ticks before timing out + + SUBR wait_on_butn + +#lp SLEEPK 1 + + calla get_all_buttons_cur2 + jrz #nobutn + + move @SOUNDSUP,a0 + move a0,@TEMP + + clr a0 + move a0,@SOUNDSUP ;turn all sounds on + + ;set CMOS volume! + movi ADJVOLUME,a0 + calla GET_ADJ + BADCHK a0,0,255,28 ;reg, lo, hi, val if bad + calla set_volume + + movi >b6,a0 + calla triple_sound + + move @TEMP,a0 + move a0,@SOUNDSUP ;turn all sounds off + jruc #exit + +#nobutn + dsj a10,#lp + +#exit + RETP + + +;#***************************************************************************** +;* play vid clips (test) +; +; SUBRP show_movie +; +;;bank select 0 bit is bit 8 of SYSCTRL register. +; +; calla display_blank +; calla WIPEOUT ;CLEAN SYSTEM OUT +; calla pal_clean +; +; clr a0 +; move a0,@HALT +; move a0,@dtype ;2d mode +; move a0,@IRQSKYE +; +; movk 1,a0 ;page flipping on +; move a0,@dpageflip +; +; SLEEPK 2 +; +; movi SCRNEND,a0 ;[256,405] +; move a0,@SCRNLR,L +; +; clr a0 +; move a0,@WORLDTLX,L +; move a0,@WORLDTLY,L +; +; movi #movie_mod,a0 +; move a0,@BAKMODS,L +; calla BGND_UD1 ;create objects for background +; +; calla display_unblank +; +;;;;-> movi shnvid_f,a8 +; clr a9 +; movi (100+20*512)*8,a10 +; JSRP movie_run +; +; clr a0 +; move a0,@dpageflip ;kill the page-flipping! +; +; movi 6*TSEC,a10 +; JAUC wait_on_butn +; +;#movie_mod +; .long slateBMOD ;wrestler bios +; .word 0,0 +; .long 0 +; +; +;#***************************************************************************** +;* print that big picture of 'vince' +;* leave up whatever was on screen until we're ready to make the switch +; +; SUBRP show_vince +; +; ;disable auto page flipping +; clr a14 +; move a14,@dpageflip +; +; ;dump the pic to the draw (inactive) page +;;;;-> movi vinsml_f,a8 +; clr a9 +; movi (#vince_x+512*(#vince_y))*8,a10 +; JSRP movie_run +; +; ;swap 'em... +; callr page_flip +; +; ;...and wait +; movi 6*TSEC,a10 +; JSRP wait_on_butn +; +; ;fade down +; clr a10 +; movk 16,a11 +; CREATE0 fade_down +; +; SLEEP TSEC +; +; RETP +; +; +;#vince_x equ (400->186)/2 +;#vince_y equ (256->F5)/2 + + +#***************************************************************************** +* flips the active page + +; SUBRP page_flip +; +; movi ->1004,a0 +; move @dpage,a14 +; jrz #tp1 +; movi -4,a0 +;#tp1 +; move a0,@DPYSTRT +; move a0,@DPYADR +; +; move @dpage,a0 +; not a0 +; move a0,@dpage +; +; rets + +#***************************************************************************** + +;NOW LETS SEE... +;WORD TWO PIXELS +;WORD TWO PIXELS +;WORD TWO PIXELS +;WORD TWO PIXELS +;LONG XVEL +;LONG YVEL +;LONG XPOS +;LONG YPOS + +DCS_LOGO + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + movk 1,a0 + move a0,@dpageflip ;page flipping on + clr a0 + move a0,@IRQSKYE + + MOVI [200,0],A0 + MOVI [120,0],A1 + MOVI dcslogo,a2 + CLR A3 + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + addi CLSNEUT,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + CALLA BEGINOBJW + MOVE *A8(OPAL),A0 + MOVE A0,@DCS_PAL + + clr a10 + movk 8,a11 + CREATE FADE_PID,fade_up + + movk 1,a0 + move a0,@DISPLAYON + + calla display_unblank + + MOVE @AMODE_LOOPS,A0 + CMPI 2,A0 + JRGE NO_BANG + + ADJUST ADJMUSIC + JRNZ NO_BANG + + MOVI 1005,A3 + CALLA SNDSND +NO_BANG + + SLEEP 42h + + MOVI DMACTRL,B1 +WAIT_110 + MOVE *B1,B2,L + JRN WAIT_110 + PUSHST + DINT + PUSH A8 + + MOVI (186*5),A6 + MOVI [6,0],A5 + MOVI DCS_BIT_TABLE,A2 + MOVI 44,A11 + MOVE *A8(OSAG),A8,L + ADDI 02000000H,A8 + +NEXT_X_PIXEL1 + MOVI 31,A10 + MOVI [107,0],A4 + +NEXT_X_PIXEL2 + CALLR SETUP_ALL_PIX1 + + MOVI 32000H,A0 + CALLA RNDRNGS + MOVE A0,A1 + SRA 7,A1 + NEG A1 + MOVE A1,*A2+,L ;XVEL + + MOVE A0,*A2+,L ;XVEL + + MOVE A4,*A2+,L ;XPOS + ADD A5,A4 + ADDK 30,A8 + DSJS A10,NEXT_X_PIXEL2 + ADD A6,A8 + DSJS A11,NEXT_X_PIXEL1 + + PULL A8 + POPST + SLEEP 1 + MOVE *A8(OFLAGS),A1 + ORI M_NODISP,A1 + MOVE A1,*A8(OFLAGS) + + MOVI ADD_PIXEL_ROT,A0 + MOVE A0,@WHICH_SCREEN,L + + SLEEP 60 + + MOVI 254-60,A10 +loop_it + SLEEPK 1 + calla get_all_buttons_cur2 + JRNZ nobutn1 + dsj a10,loop_it + + MOVI DUMRETS,A0 + MOVE A0,@WHICH_SCREEN,L + + MOVE *A8(OFLAGS),A1 + ANDI 0FFFFH-M_NODISP,A1 + MOVE A1,*A8(OFLAGS) + + SLEEP 10 + + + MOVI DMACTRL,B1 +WAIT_111 + MOVE *B1,B2,L + JRN WAIT_111 + + PUSHST + DINT + PUSH A8 + MOVI 4C000H,A3 + + MOVI (186*5)*3,A6 + MOVE *A8(OSAG),A8,L + ADDI 02000000H,A8 + MOVI DCS_BIT_TABLE,A2 + MOVI 020H,A5 + MOVI 04000H,A7 + MOVI 21,A11 +NEXT_Y_PIXELS + MOVI 0358H,A4 + MOVI 46,A10 +NEXT_X_PIXELS + + CALLR SETUP_ALL_PIX1 + CALLR SETUP_ALL_PIX2 + + ADDK 20,A8 + + MOVI 0FH,A0 + PUSH A1 + CALLA RNDRNGS + PULL A1 + MOVE A0,*A2+,L ;XVEL + + MOVI 2100H,A0 + PUSH A1 + CALLA RNDRNGS + PULL A1 + SLL 1,A0 + MOVE A0,*A2+,L ;YVEL + + MOVE A4,*A2+,L ;XPOS + MOVE A3,*A2+,L ;YPOS + ADD A5,A4 + DSJS A10,NEXT_X_PIXELS + ADDK 10,A8 + ADD A6,A8 + ADD A7,A3 + DEC A11 + JRNZ NEXT_Y_PIXELS + + PULL A8 + POPST + + CALLA DELOBJA8 + + MOVI ADD_PIXEL_VEL,A0 + MOVE A0,@WHICH_SCREEN,L + + MOVK 3,A8 +FLASH_WHITE + MOVI 0FFFFH,A0 + MOVE A0,@IRQSKYE + SLEEP 1 + + CLR A0 + MOVE A0,@IRQSKYE + SLEEP 1 + DSJS A8,FLASH_WHITE + + SLEEPK 30 + + movi 100,a10 + JSRP wait_on_butn +nobutn1 + CLR A3 + CALLA SNDSND + RETP + +SETUP_ALL_PIX2 + MOVE A8,A14 + ADD A6,A14 + ADD A6,A14 + CALLR SETUP_TWO_PIX + ADDK 10,A14 + JRUC SETUP_TWO_PIX + +SETUP_ALL_PIX1 + MOVE A8,A14 + CALLR SETUP_TWO_PIX + ADDK 10,A14 + CALLR SETUP_TWO_PIX + + MOVE A8,A14 + ADD A6,A14 + CALLR SETUP_TWO_PIX + ADDK 10,A14 + +SETUP_TWO_PIX + MOVE *A14,A0 + SLL 32-5,A0 + SRL 32-5,A0 + + MOVE *A14(5),A9 + SLL 32-5,A9 + SRL 32-5-8,A9 + + OR A9,A0 + MOVE A0,*A2+ + RETS + +ADD_PIXEL_VEL + MOVI DMACTRL,B1 + MOVE @DCS_PAL,A3 + CALLR SET_UP_PAL + + MOVI 01F0H,A4 + MOVI 966,A9 + MOVI 3*32,A12 + MOVE @page_addr+010h,a14 + MOVE @page_addr,A10 + sll 3,a10 + sll 12,a14 + or a14,a10 + + MOVI 0FA000H,A14 + MOVI 0FF000H,A13 + MOVI 0FFFF8H,A11 + + PUSHST + DINT + MOVI DCS_BIT_TABLE,A8 + .ALIGN +NEXT_PIXEL_VEL + MMFM A8,A0,A1,A2,A3,A5,A6,A7 + ADD A4,A2 ;DO YACCEL + JRZ NO_PLOT_ANYTHING + + ADD A2,A0 ;Y + CMP A14,A0 + JRGE NO_WORRY_ABOUT_Y_BOUNCE + ADD A3,A1 ;X + MMTM A8,A0,A1,A2 + + AND A11,A1 + AND A13,A0 + OR A0,A1 + ADD A10,A1 + + MOVE A7,*A1,L + MOVE A6,*A1(01000H),L + MOVE A5,*A1(02000H),L + ADD A12,A8 +NO_PLOT_ANYTHING + DSJS A9,NEXT_PIXEL_VEL + POPST + RETS + +NO_WORRY_ABOUT_Y_BOUNCE + MOVE A4,A2 + NEG A2 + MMTM A8,A0,A1,A2 + ADD A12,A8 + DEC A9 + JRNZ NEXT_PIXEL_VEL + POPST + RETS + +SET_UP_PAL ;PAL IN A3 + MOVE *B1,B2,L + JRN SET_UP_PAL + MMTM SP,A2,A3,A4,A5,A6,A7,A9 + MOVI 01000100H,A2 + MOVI [4,4],A4 + CLR A5 + MOVI 020000000H,A6 + MOVI 0E0020000H,A9 + + MOVI DMAREGS,A7 + + mmtm A7,A2,A3,A4,A5,A6,A9 + + MMFM SP,A2,A3,A4,A5,A6,A7,A9 + RETS + +ADD_PIXEL_ROT + MOVI DMACTRL,B1 + MOVE @DCS_PAL,A3 + CALLR SET_UP_PAL + + MOVI 2*32,A5 + MOVE @page_addr+010h,a14 + MOVE @page_addr,A10 + sll 3,a10 + sll 12,a14 + or a14,a10 + ADDI 4C000H,A10 + MOVI 44,A9 + MOVI 31,A13 + MOVI 02000H,A4 + + MOVI 0FFFF8H,A11 + + MOVI DCS_BIT_TABLE,A12 + .ALIGN +NEXT_PIXEL_ROT + MMFM A12,A0,A1,A2,A6,A7 + + ADD A2,A1 ;XVEL + ADD A1,A0 ;X POS + MMTM A12,A0,A1 + + SRA 16-3,A0 + AND A11,A0 + ADD A10,A0 + + MOVE A7,*A0,L + MOVE A6,*A0(01000H),L + ADD A5,A12 + DSJS A13,NEXT_PIXEL_ROT + ADD A4,A10 + MOVI 31,A13 + DSJS A9,NEXT_PIXEL_ROT + RETS + + +****************************************************************************** + + SUBR GENERIC_DISPLAY + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + movi hstd_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + SLEEPK 2 + + calla display_unblank + RETP + +**************************************************************** +* THIS SHOULD BE CALLED IN PLACE OF ANY JRxx $ +* IN CASE OF ERROR. IF WE ARE IN DEBUG MODE +* IT WILL HANG, IF NOT, THE ERROR WILL BE LOGGED +* AND IT WILL RETURN. +* A1 = RETURN ADDRESS OF CALLING ROUTINE +* A2 = ERROR CODE + +ERRORLOG + MMTM SP,A2,A3,A4,A5,A6,A7 +; SLL 16,A2 +;ERRLOGG ;A8 IS IN A8 +; +; MOVE A13,A7 ;PROC. BLOCK IN A7 +; MOVE *A7(PROCID),A6 +; SLL 16,A6 +; MOVE *A8(OID),A3 +; MOVX A3,A6 ;A6 = [PROCID:*A8(OID)] +; +;; MOVE @CIRCUIT,A5 +;; SLL 16,A5 +;; MOVE @WAVE,A3 +; MOVX A3,A5 ;A5 = [CIRCUIT#:WAVE#,)] +; +; MOVI AUD1STRT,A4 ;PLAY # +; callr GETAUD4 +; +; SLL 16,A4 +; MOVE *A0(OID),A3 ;A4 = [STRT#:*A0(OID)] +; MOVX A3,A4 +; +; MOVE @GAMSTATE,A3 ;A2 = [PSTATUS:GAMSTATE] +; MOVX A3,A2 +; +; MOVE @PSTATUS,A3 ;A2 = [ERROR CODE:PSTATUS] +; MOVX A3,A2 +;; MOVE *SP(0C0H),A3,L ;A3=GET THE RETURN ADDRESS +; MOVE *SP(0E0H),A1,L ;A1=CALLING ADDRESS +;; CALLA ADD_DUMP + + MMFM SP,A2,A3,A4,A5,A6,A7 + RETS + +****************************************************************************** + +NUM_HINTS .EQU 10 + + .bss last_hint,16 + + SUBR DO_HINTS + movk 18,a8 + movk 6,a9 + JSRP CLOSE_SCREEN_LINE + calla SPECIAL_WIPEOUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + movi hstd_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + CLR A1 + MOVE A1,@TOP_LEFT,L + MOVE A1,@BOT_RIGHT,L + +; MOVI 100,A0 +; CALLA RNDPER +; +; ;temp! +; JRUC WE_DO_THE_DESIGNER_HINTS +; JRLO WE_DO_THE_DESIGNER_HINTS +; +; MOVK NUM_HINTS,A0 +; CALLA RNDRNG0 +; +; SLL 6,A0 +; ADDI GENERAL_HINT,A0 +; MOVE *A0+,A4,L +; MOVE *A0+,A5,L +; PUSH A5,A4 +; +; CALLA PUT_UP_BAR +; +; MOVI GENTIP,A2 +; CALLA PUT_UP_TIP_NAME +; +; JRUC GEN_TIP_BACK_IN_HERE +; +;WE_DO_THE_DESIGNER_HINTS + + move @last_hint,a0 + jrn #reset_chint + inc a0 + cmpi NUM_HINTS,a0 + jrge #reset_chint + jruc #shint + +#reset_chint + clr a0 +#shint move a0,@last_hint + + PUSHP A0 + SLL 7,A0 + ADDI WHICH_HINT,A0 + MOVE *A0+,A4,L + MOVE *A0+,A5,L + PUSH A5,A4 + PUSH A0 + + CALLA PUT_UP_BAR + + PULL A0 + MOVE *A0+,A2,L + PUSH A0 + + CALLA PUT_UP_TIP_NAME + + PULLP A2 + SLL 5,A2 + ADDI WHICH_22_NUM,A2 + MOVE *A2,A2,L + + MOVE *A8(OSIZEX),A0 + SRL 1,A0 + ADDI 200,A0 + SLL 16,A0 + + MOVI [9,0],A1 + movi 1800H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + movi WGFS_W_P,b0 + calla BEGINOBJP + + MOVI [400,0],A0 + MOVI [254,0],A1 + MOVI MUGBAK,A2 + movi 17FFH,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [400,0],A0 + MOVI [254,0],A1 + MOVI MUGFRNT,A2 + movi 1801H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + PULL A0 + MOVE *A0+,A2,L + + MOVI [400,0],A0 + MOVI [254,0],A1 + movi 1800H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + +GEN_TIP_BACK_IN_HERE + + MOVI #SETUP_LINE_1,A2 + CALLA setup_message + CALLA hscore_colcyc2 + PULL A4 + CALLA print_string_C2 + PULL A4 + PUSHP A4 + +; movk 18,a8 +; movk 6,a9 +; JSRP OPEN_SCREEN_LINE + + MOVI #SETUP_LINE,A2 + CALLA setup_message + + MOVI 15,A0 + MOVE A0,@mess_line_spacing + + PULLP A4 + MOVE A4,A10 + MOVE *A10+,A9,L +NEXT_HINT + MOVE *A10+,A4,L + CALLA print_string_C2 + move @mess_cursy,A0 + ADDI 15,A0 + move a0,@mess_cursy + + DSJS A9,NEXT_HINT + + movk 18,a8 + movk 6,a9 + JSRP OPEN_SCREEN_LINE + + SLEEP 80 + movi 15*TSEC,a10 + JSRP wait_on_butn + + movi FLASH_PID,a0 + clr a1 + not a1 + CALLA KILALL + + RETP ;?????? GOOD IDEA? + +PUT_UP_TIP_NAME + MOVI [190,0],A0 + MOVI [21,0],A1 + movi 1800H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + movi WGFS_W_P,b0 +; calla BEGINOBJ + calla BEGINOBJP + + RETS + +PUT_UP_BAR + MOVI [10,0],A0 + MOVI [21,0],A1 + + movi MVEBAR_R,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [13,0],A0 + MOVI [21+9,0],A1 + + movi SHADOW01,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + CREATE FLASH_PID,JUDDER_SHADOW + RETS + +#title_mod + .long slateBMOD + .word 0,0 + .long 0 + +WHICH_22_NUM + .LONG WGSF22_1 + .LONG WGSF22_2 + .LONG WGSF22_3 + .LONG WGSF22_4 + .LONG WGSF22_5 + .LONG WGSF22_6 + .LONG WGSF22_7 + .LONG WGSF22_8 + .LONG WGSF22_9 + .LONG WGSF22_0 + +WHICH_HINT + .LONG #HNTT_2,#HNT_2,JMSTIP,JASMUG + .LONG #HNTT_4,#HNT_4,MIKTIP,MIKMUG + .LONG #HNTT_3,#HNT_3,MJTTIP,MRKMUG + .LONG #HNTT_9,#HNT_9,JOSTIP,JSHMUG + .LONG #HNTT_7,#HNT_7,EUGTIP,EUGMUG + .LONG #HNTT_5,#HNT_5,SHNTIP,SHNMUG + .LONG #HNTT_8,#HNT_8,JAKTIP,JAKMUG + .LONG #HNTT_1,#HNT_1,SALTIP,SALMUG + .LONG #HNTT_6,#HNT_6,TONTIP,TONMUG + .LONG #HNTT_A,#HNT_A,EUGTIP,JSHMUG + +;GENERAL_HINT +; .LONG #HNTT_10,#HNT_10 +; .LONG #HNTT_10,#HNT_10 +; .LONG #HNTT_10,#HNT_10 +; .LONG #HNTT_10,#HNT_10 +; .LONG #HNTT_10,#HNT_10 +; .LONG #HNTT_10,#HNT_10 + + +#SETUP_LINE_1 + JAM_STR osgemd_ascii,10,0,200,50+12,RUBYPAL,print_string_C2 + +#SETUP_LINE + JAM_STR wsf10_ascii,10,1,200,90+18,WSF_Y_P,print_string_C2 + +#HNTT_1 .byte "OUT OF RING",0,0 + .even +#HNT_1 .long 4,#HNT_1A,#HNT_1B,#HNT_1C,#HNT_1D +#HNT_1A .byte "DON'T STAY OUT OF THE RING FOR",0,0 +#HNT_1B .byte "LONG. YOU SUFFER DAMAGE UNTIL",0,0 +#HNT_1C .byte "YOU REENTER THE RING OR YOUR",0,0 +#HNT_1D .byte "OPPONENT JOINS YOU OUTSIDE.",0,0 + .even + + +#HNTT_2 .byte "IN-AIR PICK OFF",0,0 + .even +#HNT_2 .long 4,#HNT_2A,#HNT_2B,#HNT_2C,#HNT_2D +#HNT_2A .byte "WHEN YOUR OPPONENT IS RUNNING",0,0 +#HNT_2B .byte "OR LEAPING AT YOU, AWAY AWAY",0,0 +#HNT_2C .byte "PUNCH CAN BE USED TO PICK HIM",0,0 +#HNT_2D .byte "OFF AND DELIVER A BODY SLAM!",0,0 + .even + + +#HNTT_3 .byte "TURNBUCKLE LEAPS",0,0 + .even +#HNT_3 .long 6,#HNT_3A,#HNT_3B,#HNT_3C,#HNT_3D,#HNT_3E,#HNT_3F +#HNT_3A .byte "CLIMB THE TURNBUCKLE AND LEAP AT",0,0 +#HNT_3B .byte "YOUR OPPONENT, USING THE JOYSTICK",0,0 +#HNT_3C .byte "TO GUIDE YOUR FLIGHT. THESE ATTACKS",0,0 +#HNT_3D .byte "CANNOT BE BLOCKED. HOWEVER, THEY",0,0 +#HNT_3E .byte "CAN BE PICKED OFF WITH A WELL TIMED",0,0 +#HNT_3F .byte "KICK.",0,0 + .even + + +#HNTT_4 .byte "COMBO MODE",0,0 + .even +#HNT_4 .long 6,#HNT_4A,#HNT_4B,#HNT_4C,#HNT_4D,#HNT_4E,#HNT_4F +#HNT_4A .byte "PERFORMING A VARIETY OF MOVES",0,0 +#HNT_4B .byte "ACTIVATES 'COMBO MODE'. THIS ALLOWS",0,0 +#HNT_4C .byte "YOU TO LAUNCH SPECIAL DEVASTATING",0,0 +#HNT_4D .byte "COMBO MOVES FROM THE HEADHOLD.",0,0 +#HNT_4E .byte "MOST COMBOS START WITH TOWARD",0,0 +#HNT_4F .byte "TOWARD AND A BUTTON PRESS.",0,0 + .even + + +#HNTT_5 .byte "REVERSALS",0,0 + .even +#HNT_5 .long 5,#HNT_5A,#HNT_5B,#HNT_5C,#HNT_5D,#HNT_5E +#HNT_5A .byte "MANY HEADHOLD MOVES, SUCH AS THE",0,0 +#HNT_5B .byte "PILEDRIVER, CAN BE DONE BY EITHER",0,0 +#HNT_5C .byte "WRESTLER. WHOEVER DOES THE CORRECT",0,0 +#HNT_5D .byte "STICK AND BUTTON COMBINATION FIRST",0,0 +#HNT_5E .byte "WILL DO THE MOVE.",0,0 + .even + + +#HNTT_6 .byte "HIGH RISK MANEUVERS",0,0 + .even +#HNT_6 .long 3,#HNT_6A,#HNT_6B,#HNT_6C +#HNT_6A .byte "BOUNCE OFF THE ROPES JUST BEFORE",0,0 +#HNT_6B .byte "PERFORMING MANY JUMPING ATTACKS",0,0 +#HNT_6C .byte "FOR AN EXTRA DAMAGE BONUS!",0,0 + .even + + +#HNTT_7 .byte "SECOND WIND",0,0 + .even +#HNT_7 .long 6,#HNT_7A,#HNT_7B,#HNT_7C,#HNT_7D,#HNT_7E,#HNT_7F + .long #HNT_7G,#HNT_7H +#HNT_7A .byte "WHEN YOU'RE ABOUT TO BE PINNED",0,0 +#HNT_7B .byte "FOR THE SECOND TIME, YOU CAN",0,0 +#HNT_7C .byte "GET YOUR SECOND WIND AND FIGHT",0,0 +#HNT_7D .byte "ON, BUT ONLY IF YOUR COMBO METER",0,0 +#HNT_7E .byte "IS LIT. QUICKLY HIT THE BUTTONS",0,0 +#HNT_7F .byte "ONCE YOUR HEALTH METER RUNS OUT.",0,0 +#HNT_7G .byte "NOTE THAT THIS DOES NOT WORK IF",0,0 +#HNT_7H .byte "IF YOU DIE OUTSIDE THE RING.",0,0 + .even + + +#HNTT_8 .byte "HEAD HOLDS",0,0 + .even +#HNT_8 .long 6,#HNT_8A,#HNT_8B,#HNT_8C,#HNT_8D,#HNT_8E,#HNT_8F +#HNT_8A .byte "RAPIDLY PRESSING THE BUTTONS FROM",0,0 +#HNT_8B .byte "A HEADHOLD WILL EVENTUALLY CAUSE",0,0 +#HNT_8C .byte "A PILEDRIVER OR OTHER SPECIAL MOVE",0,0 +#HNT_8D .byte "TO HAPPEN. BUT THERE ARE MUCH",0,0 +#HNT_8E .byte "FASTER WAYS TO DO THEM, SUCH AS",0,0 +#HNT_8F .byte "TOWARD TOWARD POWER PUNCH.",0,0 + .even + + +#HNTT_9 .byte "EXCESSIVE BLOCKING",0,0 + .even +#HNT_9 .long 5,#HNT_9A,#HNT_9B,#HNT_9C,#HNT_9D,#HNT_9E +#HNT_9A .byte "IF YOUR OPPONENT IS CONSTANTLY",0,0 +#HNT_9B .byte "BLOCKING, TRY GETTING IN CLOSE",0,0 +#HNT_9C .byte "TO PUT HIM IN A HEADHOLD. THEY",0,0 +#HNT_9D .byte "CAN'T BE BLOCKED. HIP TOSSES",0,0 +#HNT_9E .byte "ARE ALSO DIFFICULT TO BLOCK.",0,0 + .even + + +#HNTT_A .byte "CHOOSE WISELY",0,0 + .even +#HNT_A .long 4,#HNT_AA,#HNT_AB,#HNT_AC,#HNT_AD +#HNT_AA .byte "DRONES SELDOM GET THEIR SECOND WIND",0,0 +#HNT_AB .byte "UNLESS YOU PIN THEM, SO WHEN YOU'VE",0,0 +#HNT_AC .byte "DEFEATED A TEAM OF DRONES, PIN ONE",0,0 +#HNT_AD .byte "WHOSE COMBO METER IS UNLIT.",0,0 + .even + + +#***************************************************************************** +* +* successful octopus brings us to this page. It's a top-level process, just +* like the normal attract mode loop + + .ref _switch_addr,_switch2_addr + +OCTOBTN .macro VAL,TIMEOUT + movi :VAL:,a8 + movi :TIMEOUT:,a9 + JSRP #wait_but + jrc #octo_init + .endm + + SUBR octopus_page + + ;make sure we're in attract mode + move @GAMSTATE,a14 + cmpi INAMODE,a14 + jane SUCIDE + + calla SPECIAL_WIPEOUT + + ;let the sound board reset finish up. + SLEEPK 8 + + clr a3 + calla SNDSND + + ;put up some wallpaper + JSRP GENERIC_DISPLAY + + ;draw the text/pix + + calla display_unblank + + movi TSEC*10,a10 + +#octo_init + + ;check overall timeout + TEST a10 + jrn attract_mode + + ;octopus + OCTOBTN >fffeffff,TSEC/3 ;kick + OCTOBTN >ffffffdf,TSEC/3 ;block + OCTOBTN >ffffffbf,TSEC/3 ;pwr pnch + OCTOBTN >ffffffef,TSEC/3 ;pnch + OCTOBTN >ffffffdf,TSEC/3 ;block + OCTOBTN >fffdffff,TSEC/3 ;pwr kick + + ;success! + movi DIAGP,a14 + move a14,*a13(PROCID) + jauc HID_P + + ;begin a normal attract mode + jruc attract_mode + + SUBRP #wait_but + + calla #mk_a0 + cmp a0,a8 + jreq #gotit + SLEEPK 1 + dec a10 + dsj a9,#wait_but + setc + RETP +#gotit clrc + RETP + + + SUBRP #mk_a0 + move @_switch_addr,a0,L + move @_switch2_addr,a1,L + move *a0,a0 + move *a1,a1 + rl 16,a1 + and a1,a0 + rets + +#***************************************************************************** + + SUBRP dan_test + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE ;Sky color + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + +;Turn on background module + MOVI logo_mod,A0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + + SLEEPK 1 + clr a10 + movk 4,a11 + CREATE FADE_PID,fade_up + + movk 1,a0 + move a0,@DISPLAYON + + calla display_unblank + + CREATE BALL_PID,DISPATCH + + SLEEPK 32 + calla hscore_colcyc + + RETP + + +BALL_PID .equ 1 ;Process ID +BALL_ID .equ 2 ;IMG ID + + + SUBRP DISPATCH + + movi 32,a9 + +#lpx CREATE BALL_PID,ONE_BALL + SLEEPK 1 + + dsjs a9,#lpx + + DIE + + + SUBRP ONE_BALL + + ;create one ball at a random position with random velocity + + movi 80000h,a0 + calla RNDRNG0 ;# between 0 and a0 + subi 40000h,a0 + move a0,a6 ;XVEL + + movi 60000h,a0 + calla RNDRNG0 ;# between 0 and a0 + subi 30000h,a0 + move a0,a7 ;YVEL + + movi [255,0],a0 ;Y pos + calla RNDRNG0 + move a0,a1 + + movi [400,0],a0 ;200 pixels over in x + PUSH a1 + calla RNDRNG0 + PULL a1 + + movi BALLD05A,a2 ;IMG to turn on + move @PCNT,a3 + andi 07fffh,a3 ;ZPOS + movi DMAWNZ,a4 ;IMG flags + movi BALL_ID,a5 ;ID + + + calla BEGINOBJW ;Begin obj with world added in +;a8=obj pointer + + +#lp SLEEPK 1 + + move *a8(OXVEL),a1,L + move *a8(OXPOS),a0 + cmpi 400,a0 + jrlo #xok + neg a1 + move a1,*a8(OXVEL),L + SLEEPK 2 +#xok + move *a8(OYVEL),a1,L + move *a8(OYPOS),a0 + cmpi 255,a0 + jrlo #yok + neg a1 + move a1,*a8(OYVEL),L + SLEEPK 2 +#yok + jruc #lp + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/AUDIT.ASM b/AUDIT.ASM new file mode 100755 index 0000000..4147b1f --- /dev/null +++ b/AUDIT.ASM @@ -0,0 +1,3420 @@ +************************************************************** +* +* Software: LARRY DEMAR and DR. J +* Initiated: ? +* +* Modified: Shawn Liptak, 9/6/91 -SLEEPK (Total carnage) +* Shawn Liptak, 11/1/91 -Clean up +* Shawn Liptak, 2/11/91 -Started basketball +* Shawn Liptak, 11/6/92 -L_TIMER clean up +* Jason Skiles, 12/3/93 -Started WWF +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/3/93 9:52 +************************************************************** + .file "audit.asm" + .title "audits and ajustments handling" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;mproc equates + .include "display.equ" ;display proc. equates + .include "sys.equ" ;z unit system equates + .include "gsp.equ" + .include "game.equ" + .include "link.equ" ;link equates + .include "menu.equ" ;menu equates + .include "audit.equ" + .include "macros.h" + .include "sound.h" + + .include "fontsimg.glo" + .include "miscimg.glo" + .include "bgndtbl.glo" + .include "imgtbl.glo" + + +* BAD_AUD - ANYTIME AN AUDIT NUMBER IS FETCHED, IF ITS +* CHECKSUM IS BAD, THEN BAD_AUD GETS SET TO 1 +* THIS CAUSES "ERROR" IF ANY AUDIT IN A CALCULATION +* IS CORRUPTED, AND KEEPS A BAD CHECKSUM BAD WHEN +* AN AUDIT IS CHANGED. + + .BSS BAD_AUD ,16 ;(BAD_AUD...NOT BAD_DOG!) + .bss playtimer ,16 ;timer units for game + .BSS C_FRAC ,16 ;TIME 10 SECONDS TO + ;INDICATE COIN ACTIVITY + .BSS C_FLAGS ,5*32 ;INTERRUPT COIN BOUNCE + .BSS COINCNTR ,32 ;MECH COIN COUNTER TIMERS AND COUNTS +COINCNT1 .EQU COINCNTR +COINCNT2 .EQU COINCNTR+8 +* TIMERS 1,2:B16-23,B24-B31; COUNTS 1,2 B0-B7;B8-B15 + .BSS OCT_FLG,16 ;!0=Did 1st part + BSSX THIS_GAME_TIME,16 + + BSSX audit_ud_flag,16 ;audit_ud process active (EXISTP is + ; too slow and we check this often.) + + +* IN THIS MODULE +; .def ADD_DUMP + .def ADJ_PAGE + .def BAD_AUD + .def C_FRAC,COINCNTR + .def C_FLAGS + .def L_MESS,AUD,AUD1,GET_ADJ + .def GET_AUD,SLAM_SW,STORE_AUDIT + .def CAT_A0 + .def CCCC + .def CK_MAX +; .def CLRSWPRC + .def CLR_AUD,FAC_SET + .def CLR_AUDR +; .def CLR_SUBS + .def CMOS_VAL + .def COIN_PAG +; .def COINIRQ + .def CR_STRTP + .def CR_CONTP + .def CRD_SCRN + .def CRED_P + .def DEF_PAGE +; .def DUMP_FS + .def FORM_ADC + .def F_ADC_S + .def GET_CREDITS + .def GET_CSTR + .def HTOHXASC +; .def KILL_CRD + .def L_TIMER + .def LD_CTAB + .def LM_SETUP + .def LM_FINIS + .def NO_CREDS + .def P_START + .def P_CONT + .def PUT_ADJ + .def ROM_NAME + .def STRCAT + .def UNIT_CLR + .def WAIT_MUT + .DEF KILL_AUD + .ref PCNT + + .def CCOIN,RCOIN,SERVICE,XCOIN,LCOIN + .DEF DBV + +; .ref osgemd_ascii,sgmd8_ascii,ogmd10_ascii,lgmd_ascii +; .ref osgemd_ascii,sgmd8_ascii,ogmd10_ascii,wgsf24_ascii + .ref osgemd_ascii,ogmd10_ascii,wgsf24_ascii + .ref mess_cursy + .ref mess_line_spacing + + .ref print_message,setup_message + .ref print_string_C,print_string_C2 + .ref dec_to_asc + .ref copy_string,copy_rom_string + .ref concat_string,concat_rom_string + .ref BAKMODS + .ref BGND_UD1 + .ref COUNTER_MODE + + .GLOBAL SYNCHALF,WDOGDIS,GAMSTATE + + .ref IRQSKYE + .ref PSTATUS + .ref attract_mode + + + .ref _coin_addr + .ref _dipswitch_addr + + ;from DCSSOUND.ASM + .ref triple_sound + + .REF PSTARTS + +* IN HSTD.ASM + + .ref SET_PAGE + .ref P_FORK + .ref DEC_HSR + .ref RC_BYTEI + .ref RC_BYTE + .ref RC_WORD + .ref RC_LONG + .ref RC_LONGI + .ref WC_BYTE + .ref WC_BYTEI + .ref WC_WORD + .ref WC_WORDI + .ref WC_LONG + .ref WC_LONGI + +* IN MENU.ASM + + .ref GET_CSPT + .ref STR_OBJ + .ref STR_FREE + .ref CKPROMPT + .ref TWO_TS,TWO_TP + .ref BUILD_ST + .ref HID_P + +* IN ROBOATT.ASM + + .ref WIPEOUT + + +* IN TEST.ASM + +; .ref CK_DOOR +; .ref WT_ADV,WW_ADV + .ref FORM_SWS + .ref opmsg_clr + + + +* OTHERS + +; .ref plyr_strtb1,plyr_strtb2 + .ref dirqtimer + .ref SOUNDSUP + .ref RD15FONT,RD7FONT,STRCNRM + .ref STRNGRAM,STRLNRM,HEXTOASC + .ref CLR_SCRN + .ref KILALL + .ref SUCIDE + .ref dpageflip + .ref TAMPEREDP + .ref _switch_addr + + + .text + +************************************************************************** +* +* COIN HANDLING +* +************************************************************************** + +************************************************************************** +* +* L_TIMER +* +* THIS IS CALLED EACH TICK THROUGH THE EXEC LOOP +* BEFORE TIMER IS CLEARED. IT DOES NOTHING +* IF THE GAME IS NOT IN PLAY, ELSE IT ADDS +* THE EXEC TIME TO THE 1 PLAYER OR 2 PLAYER +* TIMER BASED ON CURRENT NUMBER OF PEOPLE PLAYING. +* +************************************************************************** + +L_TIMER + move @GAMSTATE,a0 + cmpi INAMODE,a0 + jrne #NO_CK_OCTO ;ATTRACT MODE..CHECK OCTOPUS! + +; move @SWITCH,a0 + move @_switch_addr,a0,L + move *a0,a0 + not a0 + andi >7f7f,a0 ;Get sticks 'n starts + move @OCT_FLG,a1 + jrgt #p2 ;Got part one? + + cmpi >7171,a0 ;P1&P2 all buts down & both sticks up + jrne #NO_CK_OCTO ;Wrong? + movi TSEC,a1 ;One sec to get part two +#p2 + subk 1,a1 + move a1,@OCT_FLG + jrgt #NO_CK_OCTO ;Still counting? + cmpi >202,a0 + jrne #NO_CK_OCTO ;Wrong? + + movi ACTIVE,a13 +; movi HID_P,a7 ;Start the process! +; movi DIAG_PID,a1 + movi AMODE_PID,a1 + .ref octopus_page + movi octopus_page,a7 + calla GETPRC +#NO_CK_OCTO ;ATTRACT MODE..CHECK OCTOPUS! + + move @dirqtimer,a1 ;get elapsed time + move @playtimer,a0 ;get play timer + sub a1,a0 ;add elapsed time + move a0,@playtimer + jrgt #not5 ;Under 5 seconds? + + CREATE AUDIT_UD_PID,audit_ud + + movi TSEC*5,a0 ;reset the countdown +#not5 + move a0,@playtimer + rets + +;each call to AUD1 takes 2 days to execute +;so it's now split over 3 frames + + SUBRP audit_ud + + movi 1,a14 + move a14,@audit_ud_flag + + move @GAMSTATE,a14 + jrn #skip ;in diagnostics + + move @PSTATUS,a14 + jrz #skip ;no players +;oops ! wrong order + + movi AUD_1PLAYTIME,a0 ;update the 1/2P time + cmpi 3,a14 + jrne #1pmode + movi AUD_2PLAYTIME,a0 +#1pmode + callr AUD1 + MOVE @PSTATUS,A14 + JRZ NO_NEED_TO_DO_ANYTHING + CMPI 3,A14 + JREQ BETTER_STOP_THIS + MOVE @PSTARTS,A0 + JRZ NO_NEED_TO_DO_ANYTHING + MOVE @THIS_GAME_TIME,A0 + INC A0 + MOVE A0,@THIS_GAME_TIME + JRUC NO_NEED_TO_DO_ANYTHING +BETTER_STOP_THIS + CLR A0 + MOVE A0,@PSTARTS + MOVE A0,@THIS_GAME_TIME +NO_NEED_TO_DO_ANYTHING + SLEEPK 1 + + movi AUD_PLTIME,a0 + callr AUD1 + + SLEEPK 1 +#skip + movi AUD_UPTIME,a0 ;update the total uptime + callr AUD1 + + clr a14 + move a14,@audit_ud_flag + + DIE + + + .if 0 + + + move @PSTATUS,a2 + jrz #audup + + move @GAMSTATE,a2 + jrn #audup + + movi AUD_1PLAYTIME,a0 ;update the 1/2P time + cmpi 3,a2 + jrne #1pmode + movi AUD_2PLAYTIME,a0 +#1pmode + callr AUD1 + + movi AUD_PLTIME,a0 + callr AUD1 + +#audup + movi AUD_UPTIME,a0 ;update the total uptime + callr AUD1 + + movi TSEC*5,a0 ;reset the countdown + +#not5 + rets + + .endif + + +#******************************* +* Give him a service credit + +SERVICE + move @GAMSTATE,a0 + jrn #x ;In diagnostics? + + move @_coin_addr,a0,L ;Get COIN inputs + move *a0,a0 + btst CDI_BIT,a0 ;Coin Door Closed ? + jrz #x ;Yes - Then NO Service Credits Allowed + + callr CCCC ;MAKE SURE THINGS ARE IN TACT + + movk AUDSERV,a0 + callr AUD1 ;CHALK UP A SERVICE CREDITS! + + callr getcoin + + callr GET_CREDITS + addk 1,a0 ;Add in the new ones + callr PUT_CREDITS ;NOW STORE EM BACK (ENFORCE MAX) + + callr FORM_COIN_CKSUM_AND_STORE + + ;Update little credit message + .ref update_credit_msg + calla update_credit_msg + + jruc CREDSP + +#x DIE + + +******************************** +* THE FOLLOWING COIN ROUTINES ARE PROCESSES! + +LCOIN MOVK ADJLMULT,A8 ;CMOS RAM ADJUST + MOVI LC_FLAG,A10 ;LEFT COIN FLAG + MOVI AUDLCOIN,A11 ;AUDIT NUMBER + JRUC VALID_COIN + +CCOIN MOVK ADJCMULT,A8 + MOVI CC_FLAG,A10 ;CENTER COIN FLAG + MOVI AUDCCOIN,A11 + JRUC VALID_COIN + +RCOIN MOVK ADJRMULT,A8 + MOVI RC_FLAG,A10 ;RYTE COIN FLAG + MOVI AUDRCOIN,A11 + JRUC VALID_COIN + +XCOIN MOVK ADJXMULT,A8 + MOVI XC_FLAG,A10 ;XTRA (FOURTH) COIN FLAG + MOVI AUDXCOIN,A11 + JRUC VALID_COIN + +DBV MOVK ADJDBVMULT,A8 + MOVI DBV_FLAG,A10 ;XTRA (FOURTH) COIN FLAG + MOVI AUD_DBV,A11 + JRUC VALID_COIN +; +; COIN CONTROL EQUATES +; +LC_FLAG .EQU C_FLAGS ;UHB LEFT COIN +RC_FLAG .EQU C_FLAGS+8 ;UHB RGT " +CC_FLAG .EQU C_FLAGS+16 ;UHB CNTR " +XC_FLAG .EQU C_FLAGS+24 ;UHB XTRA " +DBV_FLAG .EQU C_FLAGS+32 ;UHB DOLLAR BILL VALIDATOR +; +; VALID_COIN- CHECK THE DURATION OF COIN DROP AND SEES IF IT IS A VALID +; ENTRY +;PARAMS REQUIRED: +; A8 = MULTIPLIER FOR THAT SWITCH. +; A10 = RAM TIMER/FLAG +; A11 = BASE AUDIT NUMBER + +VALID_COIN + move @GAMSTATE,a0 + jrn CRX ;In diagnostics? + + MOVE A8,A0 ;MOVE MULTIPLIER ADJUST NUMBER TO A0 + CALLA GET_ADJ ;FETCH IT + MOVE A0,A8 ;AND BACK TO STATIC REG...ANY THERE? + JRZ CRX ;NOPE....DON'T WASTE THE TIME! + + CALLR SLAM_P ;SLAM AROUND? + JRNZ CRX ;THEN NO ACTION + MOVI LC_PID,A0 ;ALL 4 SLOTS USE THIS ID NOW + MOVE A0,*A13(PROCID) ;SET OUR ID (IN CASE TABLE IS WRONG) + +; movb *a10,a0 ;get flag byte +; jrz #fok +; LOCKUP +;#fok + MOVB *A10,A0 ;GET FLAG BYTE + JRNZ CRX ;SOMEONE ELSE THERE...WE'RE A BOUNCE! + +;OK....THIS IS A NEW POSITIVE EDGE....START THE DROP TIMING + + movk 5,a0 ;Wait a few ticks + movb a0,*a10 + +COIN_LOOP + SLEEPK 1 ;SLEEP TILL WE GET SUCCESS OR FAIL + MOVB *A10,A0 ;GET THE TIMER + JRGT COIN_LOOP + + CALLR SLAM_P ;SLAM? + JRNZ CRX ;THEN WE'RE OUT OF HERE + +; 1/2 SECOND HAS PASSED WITHOUT A SLAM....INDICATE COIN DROP + + CLR A0 + MOVE A0,@SOUNDSUP ;TURN SOUNDS ON. (A-MODE SOUND SUPRESSOR) + + callr getcoin + + MOVI 15*40H/8,A0 ;DON'T WIPE ON GAME OVER IF ITS WITHIN + MOVE A0,@C_FRAC ;15 SECONDS (THIS TIMES OUT TO OVER 20) + + MOVE A11,A0 + CALLR AUD1 ;CHALK THE DIRECT AUDIT + +*HIT THE MECHANICAL COIN COUNTERS + MOVE @COUNTER_MODE,A0,W + CMPI 1,A0 + JRNE MECH20 + + MOVI ADJTOTALIZER,A0 + CALLA GET_ADJ + JRZ NORMAL_TOTALIZER + MOVI ADJTOTALIZER,A0 + ADD A11,A0 + CALLA GET_ADJ + MOVE A0,A2 + MOVI COINCNT1,A1 + JRUC RE_ENTER_FROM_CUST_TOTALIZER +NORMAL_TOTALIZER + +*MULTIPLE OF LEAST VALUE COIN MODE + CALLA GET_CSPT ;POINT TO COIN TABLE A6 +; MOVK 5,A1 ;CHECK ALL CHUTES +; ADDI CS_LVAL,A6 ;ADD IN OFFSET TO CHUTE VALUES +; MOVE A6,A5 ;SAVE A6 +; CLR A2 +; NOT A2 +;MECH1L +; MOVE *A5+,A0 ;FIND LOWEST NON-ZERO NUMBER IN LIST +; JRZ MECH_SKIPZ +; CMP A2,A0 +; JRHI MECH_SKIPZ +; MOVE A0,A2 ;A NEW LOW! +;MECH_SKIPZ +; DSJS A1,MECH1L + + ADDI CS_LVAL,A6 ;ADD IN OFFSET TO CHUTE VALUES + DEC A11 ;GET YOUR CLICK COUNT + SLL 4,A11 ;OFFSET FOR CHUTE, WORD CORRECT + ADD A11,A6 + MOVE *A6,A2 ;GET MONEY VALUE + MOVE A2,A2 + JRZ MECH10 ;SOMETHING ILLEGAL HAPPENED, JUST ONE + +RE_ENTER_FROM_CUST_TOTALIZER +; CALLA GET_CSPT ;POINT TO COIN TABLE A6 +; DEC A11 ;GET YOUR CLICK COUNT +; SLL 4,A11 ;OFFSET FOR CHUTE, WORD CORRECT +; ADD A11,A6 +; MOVE *A6,A1 ;GET MONEY VALUE +; JRZ MECH10 ;WIERDNESS, JUST ONE CLICK +; DIVU A2,A1 ;DIVIDE BY LOWEST COMMON DENOMINATOR +; MOVE A1,A2 ;RESULT TO KEEP COMPAT + MOVI COINCNT1,A1 + JRUC MECH3B +MECH10 + MOVK 2,A0 ;VALUE OVER 10, JUST GIVE ONE CLICK +MECH20 + MOVI COINCNT1,A1 + CMPI 2,A0 + JREQ MECH3A ;CLICK COUNTER 1 MODE + + CMPI AUDLCOIN,A11 + JREQ MECH3A + CMPI AUDRCOIN,A11 + JRNE MECH4 + ADDK 8,A1 +MECH3A + MOVK 1,A2 +MECH3B + DINT + MOVB *A1,A0 + ADD A2,A0 + MOVB A0,*A1 + EINT +MECH4 + MOVE A8,A8 ;NO CREDIT UNITS? + JRZ CRX ;THEN NO MORE WORK TO DO. + CALLR ADJUST_CREDITS ;GIVE CREDIT FOR THE MONEY. + CALLR DEF_PAGE ;POINT PAGE AWAY! + + +; SET-UP CREDITS MSG IN GAME SCREEN AND INDICATE 'INSERT COIN' IF NOT ENOUGH +; HAVE BEEN DROPPED +; +; CALLA G_MSG ;PLOT MESSAGE FOR GAME PLAY SCREEN +CREDSP +; MOVE @GAMSTATE,A0 +; CMPI INAMODE,A0 +; JRNZ NOZERO +;NOZERO +; move @GAMSTATE,a0 +; cmpi INGAME,a0 +; jrne #not_ingame + + calla update_credit_msg + +;#not_ingame + MOVE @PSTATUS,A0 + JRNZ CRX + move @GAMSTATE,a0 + subk INAMODE,a0 ;A DISPLAY IN AMODE ONLY! + jrne CRX + +CRY jruc CRD_SCRN ;PUT UP THE CREDITS SCREEN + +CRX JAUC SUCIDE + + +******************************** +* Make all switch process dumdie entries + +;CLRSWPRC +; MMTM SP,A0,A1,A3 +; +; CLR A1 ;USE SWTAB ENTRY 0 FOR DUMDIE PROC +; MOVE @SWSTACK,A3,L +;CLRSTKL CMPI SWSTST,A3,L ;STACK AT START? +; JREQ CLRSTKX ;YES, EXIT +; MOVE *A3+,A0 +; CMPI 31,A0 +; JRLS CLRSTKL ;THIS ENTRY IS A REAL SWITCH +; MOVE A1,*A3(-10H) ;STORE THE DUMDIE CALL +; JRUC CLRSTKL +; +;CLRSTKX MMFM SP,A0,A1,A3 +; RETS + + +******************************** +* CR_STRTP - ARE THERE ENOUGH CREDITS TO START +* CR_CONTP - ARE THERE ENOUGH CREDITS TO CONTINUE +* P_START - PLAYER STARTED...DEDUCT CREDITS +* P_CONT - PLAYER CONTINUED...DEDUCT CREDITS +* CRED_P - HOW MANY CREDITS +* +* JRHS FOR OK TO START! + +CR_STRTP + PUSH a0,a1 + MOVK ADJFREPL,A0 + CALLR GET_ADJ ;ARE WE IN FREE PLAY? + CMPI 1,A0 ;WE ARE IF ITS NOT ZERO. + JRHS CR_STX + + CALLR CCCC ;MAKE SURE THINGS ARE IN TACT + CALLR COIN_PAG + CALLR GET_CREDITS ;GET CURRENT CREDITS + MOVE A0,A1 + MOVK ADJCSTRT,A0 + CALLR GET_ADJ ;GET NUMBER NEEDED + CMP A0,A1 ;DO WE HAVE ENOUGH TO START? + +CR_STX MMFM SP,A0,A1 + RETS + +CR_CONTP + PUSH a0,a1 + MOVK ADJFREPL,A0 + CALLR GET_ADJ ;ARE WE IN FREE PLAY? + CMPI 1,A0 ;WE ARE IF ITS NOT ZERO. + JRHS CR_STX1 + + CALLR CCCC ;MAKE SURE THINGS ARE IN TACT + CALLR COIN_PAG + CALLR GET_CREDITS ;GET CURRENT CREDITS + MOVE A0,A1 + MOVK ADJCCONT,A0 + CALLR GET_ADJ ;GET NUMBER NEEDED + CMP A0,A1 ;DO WE HAVE ENOUGH TO START? +CR_STX1 + MMFM SP,A0,A1 + RETS + +P_START + MMTM SP,A0,A1 + CALLR CRED_P + MOVE A0,A1 + MOVK ADJCSTRT,A0 + CALLR GET_ADJ ;GET NUMBER NEEDED + CALLR REMOVE_CREDITS + CALLA DEC_HSR ;TAKE 1 FROM HIGH SCORE RESET COUNTER + + calla update_credit_msg + + MMFM SP,A0,A1 + RETS + +P_CONT + MMTM SP,A0,A1 + CALLR CRED_P + MOVE A0,A1 + MOVK ADJCCONT,A0 + CALLR GET_ADJ ;GET NUMBER NEEDED + CALLR REMOVE_CREDITS + CALLA DEC_HSR ;TAKE 1 FROM HIGH SCORE RESET COUNTER + + calla update_credit_msg + + MMFM SP,A0,A1 + RETS + +REMOVE_CREDITS + SUB A0,A1 ;REMOVE START AMOUNT FROM WHAT WE HAVE + JRHS PS1 ;WE'RE OK. + + CLR A1 ;IT WENT NEGATIVE....MAKE ZERO. +PS1 CALLR COIN_PAG + MOVI CREDITS,A7 + MOVE A1,A0 ;PUT WHATS LEFT OUT TO WRITE + CALLA WC_BYTE ;WRITE THE NEW AMOUNT + + CALLR FORM_COIN_CKSUM_AND_STORE + CALLR DEF_PAGE ;POINT AT DEFAULT PAGE. + RETS + +************************************************************************** +* +* NO_CREDS +* +* THIS IS CALLED TO REMOVE CREDITS AND CREDIT FRACTIONS +* FROM THE MACHINE. +* +************************************************************************** +NO_CREDS + MMTM SP,A0,A1,A7 + CALLR FORM_COIN_CKSUM ;MAKE THE REAL CKSUM + MOVI COIN_CKSUM,A7 + MOVE A1,A0 + INC A0 ;MAKE THE CKSUM BAD! + CALLA WC_BYTE + MMFM SP,A0,A1,A7 + RETS +************************************************************************** +* +* CHALK_COIN +* +* A11 contains the base audit number. Chalk the audit for +* 1 more coin hit there! +* +* 3 away from the base is the "door-closed" counter +* 3 away from that is the "sub-total". +* 3 away from that is the "door-closed" sub-total. +* +************************************************************************** +;CHALK_COIN +; MMTM SP,A0 +; MOVE A11,A0 +;* +;* READY TO CHALK THE AUDIT......ZERO MEANS "EXTRA SLOT" +;* +; +;CCC01 +; CALLR CHALK_FOR_A0 ;CHALK RELEVANT COUNTERS +; MMFM SP,A0 +; RETS + +************************************************************************** +* +* CHALK_FOR_A0 +* +* THIS IS CALLED TO CHALK THE AUDITS FOR A COIN SWITCH. +* A0 HAS THE BASE AUDIT FOR THE COIN SWITCH. +* +************************************************************************** +;CHALK_FOR_A0 +; MMTM SP,A0 +; CALLR AUD1 ;CHALK THE DIRECT AUDIT + +; ADDI 2*CHUTES,A0 ;AND THE "SUB-TOTAL" +; CALLR AUD1 + +; SUBI CHUTES,A0 ;MOVE TO DOOR OPEN TOTAL +; CALLR AUD1 +; +; ADDI 2*CHUTES,A0 ;AND DOOR OPEN SUB-TOTAL +; CALLR AUD1 + +;CKCN1 +; MMFM SP,A0 +; RETS + +************************************************************************** +* +* ADJUST_CREDITS +* +* This is the routine that turns the coin switch hit +* into a tangable (if you could say that) reward. +* +* The coin chute multiplier is in A8. +* +************************************************************************** +ADJUST_CREDITS + + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11 + CALLR CK_MAX ;ARE WE AT MAXIMUM CREDITS? + JRHS ADCRXX ;YEP.....DON'T ROCK THE BOAT! + + CALLR CCCC ;VALIDATE THE CURRENT TOTALS (OR CLEAR!) + + CALLR FETCH_REQ ;GET THE REQUIRED FOR CREDIT, BONUS AND MINIMUM + +* A2 = REQUIRED FOR CREDIT +* A3 = FOR BONUS +* A4 = MINIMUM + + CALLR ADD_TO_CUNITS ;ADD TO OUR CUNITS + MOVE A3,A3 ;BONUS EFFECTIVE? + JRZ NO_BUNITS ;NOPE....DON'T RUN UP THE COUNTER! + + CALLR ADD_TO_BUNITS ;ADD TO BONUS UNITS + +NO_BUNITS + MOVE A4,A4 ;MINIMUM REQUIRED? + JRZ NO_MINIMUM ;NOPE.....LEAVE ALONE. + + MOVI MINUNITS,A7 ;POINT AT MINIMUM + CALLA RC_WORD ;GET THE AMOUNT ACCUMULATED + ADD A8,A0 ;ADD AMOUNT RECEIVED + CALLA WC_WORD ;WRITE THE MINUNITS BACK IN CASE NOT ENOUGH. + + SUB A4,A0 ;DO WE HAVE ENOUGH TO ACT? + JRLO ADCRX ;NOPE....NO CREDITS YET! + + CLR A0 ;CLEAR OUT MINIMUM FOR NEXT SHOT! + CALLA WC_WORD ;REMOVE ACCUMULATED MINIMUM. + +NO_MINIMUM + CLR A6 ;COUNT ACCUMULATED CREDITS IN A6 + CLR A10 ;IN CASE NO BONUS! + + CLR A8 + MOVI BUNITS,A7 + CALLA RC_WORD ;GET THE NUMBER OF BUNITS + MOVE A0,A9 ;INTO A9 + + MOVE A3,A3 ;DON'T DIVIDE BY ZERO! + JRZ NO_BU_BU + DIVU A3,A8 ;DIVIDE BUNITS BY NUMBER NEEDED FOR BONUS + + MOVE A9,A0 ;WRITE REMAINDER BACK + CALLA WC_WORD + + MOVE A8,A6 ;NUMBER OF BONUS CREDITS EARNED. + MOVE A8,A10 ;REMEMBER IF ANY BONUS CREDITS WERE EARNED! + +NO_BU_BU + CLR A8 + CALLR GET_CUNITS ;READ IN THE CUNITS + MOVE A0,A9 + + MOVE A2,A2 ;DON'T DIVIDE BY ZERO. + JRZ NO_CR + + DIVU A2,A8 ;GET CREDITS! + MOVE A9,A0 ;REMAINDER IS LEFTOVER CUNITS + CALLR PUT_CUNITS + ADD A8,A6 ;A6 HAS WHAT WE'VE WON! + +NO_CR + MOVE A6,A1 + MOVI AUDPAIDC,A0 + CALLA AUD ;CHALK UP THE EARNED CREDITS! + + CALLR GET_CREDITS + ADD A6,A0 ;ADD IN THE NEW ONES. + CALLR PUT_CREDITS ;NOW STORE EM BACK (ENFORCE MAX) + + MOVE A10,A10 ;WAS THE BONUS EARNED? + JRZ ADCRX ;NOPE...EXIT! +* +* WHEN BONUS EARNED...WE START THE WHOLE SYSTEM OVER! +* + CALLR CLEAR_UNITS + +ADCRX CALLR FORM_COIN_CKSUM_AND_STORE + +ADCRXX MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11 + RETS + +************************************************************************** +* +* PUT_CREDITS +* +* STORE CREDIT COUNT IN A0 TO CMOS....ENFORCING MAXIMUM CREDITS. +* +************************************************************************** +PUT_CREDITS + MMTM SP,A0,A6,A7 + CALLR GET_MAX ;GET MAX CREDS IN A1....BE ON COIN PAGE + CMP A1,A0 ;SEE HOW WE STACK UP. + JRLO USE_A0 ;WE'RE LOWER...JUST STORE. +* +* WE'RE AT (OR OVER) MAXIMUM CREDITS +* + CALLR CLEAR_UNITS ;CLEAR OUT THE UNIT FRACTIONS. + MOVE A1,A0 ;USE MAXIMUM + +USE_A0 MOVI CREDITS,A7 + CALLA WC_BYTE ;WRITE THE CREDITS OUT. + MMFM SP,A0,A6,A7 + RETS + +************************************************************************** +* +* GET_MAX +* +* GET MAXIMUM CREDITS IN A1. +* +* THIS LEAVES YOU ON COIN PAGE. +* +************************************************************************** +GET_MAX + PUSH a0 + MOVK ADJMAXC,A0 + CALLA GET_ADJ_FOR_COIN ;FETCH MAXIMUM CREDITS (PUT US ON COIN PAGE) + MOVE A0,A1 + MMFM SP,A0 + RETS + +************************************************************************** +* +* CK_MAX +* +* THIS IS CALLED TO SEE IF WE ARE AT MAXIMUM CREDITS. +* .HS. MEANS WE ARE AT MAXIMUM CREDITS. +* +************************************************************************** +CK_MAX + MMTM SP,A0,A1 + CALLR GET_MAX ;GET MAXIMUM IN A1 + CALLR CRED_P ;GET CREDITS IN A0 (AND FLIP PAGE AWAY) + CMP A1,A0 ;JRHS FOR MAXIMUM CREDITS! + MMFM SP,A0,A1 + RETS + +************************************************************************** +* +* UNIT_CLR +* +* THIS IS CALLED AT GAME OVER. IT CLEARS +* OUT ANY COIN FRACTIONS THAT WERE NOT USED BY THE +* CURRENT PLAYER(S). THIS ALLOWS ALL BUY-IN TO +* TAKE ADVANTAGE OF MULTIPLE COIN BONUSES. +* +* ANYTIME A COIN IS INSERTED, C_FRAC IS SET TO ABOUT +* 10 SECONDS. MY TIMING INTERFACE COUNTS C_FRAC DOWN +* TO ZERO. IF C_FRAC IS NON ZERO WHEN THIS ROUTINE IS +* CALLED, THEN SOMEONE PUT A COIN IN NOT TOO LONG BEFORE +* GAME OVER. DON'T SCREW HIM OUT OF HIS FRACTIONS. +* +************************************************************************** +UNIT_CLR + PUSH a0 + MOVE @C_FRAC,A0 ;DO WE GIVE HIM A REPRIEVE? + JRNZ UC1 ;YEP! + CALLR CCCC ;VALIDATE COINAGE + CALLR CLEAR_UNITS ;CLEAR OUT FRACTIONAL UNITS + CALLR FORM_COIN_CKSUM_AND_STORE ;MAKE ALL GOOD. +UC1 + MMFM SP,A0 + RETS + +CLEAR_UNITS + MMTM SP,A0,A7 + CLR A0 + MOVI CUNITS,A7 ;3 CONSECUTIVE WORDS OF CMOS + CALLA WC_WORDI + CALLA WC_WORDI + CALLA WC_WORD + MMFM SP,A0,A7 + RETS + +* RETURN CREDITS IN A0.........AND Z BIT CLEAR IF +* CREDITS EXIST OR IN FREE PLAY. + +CRED_P + CALLR CCCC ;CHECK TO SEE IF DATA IS OK. + +GET_CREDITS + PUSH a7 + CALLR COIN_PAG + MOVI CREDITS,A7 ; + CALLA RC_BYTE ;READ CURRENT CREDITS + JRNZ GC1 ;WE GOT SOME! + + ;PUSH THE ZERO! + PUSH a0 + MOVK ADJFREPL,A0 + CALLR GET_ADJ ;SEE IF FREEPLAY......(Z BIT CLEAR IF SO!) + MMFM SP,A0 ;RESTORE A0 + +GC1 CALLR DEF_PAGE ;FLIP CMOS AWAY + MMFM SP,A7 + RETS + +ADD_TO_CUNITS + MMTM SP,A0,A7 + CALLR GET_CUNITS + ADD A8,A0 + CALLR PUT_CUNITS + MMFM SP,A0,A7 + RETS + +GET_CUNITS + PUSH a7 + MOVI CUNITS,A7 + CALLA RC_WORD + MMFM SP,A7 + RETS + +PUT_CUNITS + PUSH a7 + MOVI CUNITS,A7 + CALLA WC_WORD + MMFM SP,A7 + RETS + +ADD_TO_BUNITS + MMTM SP,A7,A0 + MOVI BUNITS,A7 + CALLA RC_WORD + ADD A8,A0 + CALLA WC_WORD + MMFM SP,A7,A0 + RETS + + +****************************************************************************** + +CRD_SCRN + + CLR a10 ;Sleep 7 secs + + SUBR CRD_SCRN2 ;Entry pnt for shorter sleep + + clr a0 + move a0,@SHOW_CRD_FLAG + .ref SHOW_CRD_FLAG + + MOVI CP_PID1,A0 ;CHANGE TO "CREDIT PAGE" ID 1 + MOVE A0,*A13(PROCID) + MOVI 0FFFFH,A1 ;CHECK TO SEE IF CREDIT PAGE IS UP + CALLA EXISTP + jrnz #exists ;credit page up, so reprint text only + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + SLEEPK 2 + + movi coinin_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 + + movk 1,a0 + move a0,@DISPLAYON ;Display processor on + + callr crd_updatetxt + + SLEEPK 2 + + movi 4<<10+4<<5+7,a0 + move a0,@IRQSKYE + + SLEEPK 2 + calla display_unblank + + jruc #cont + + +#exists + move @HEBLNK,a0 + cmpi HEBLNKINIT,a0 + jrne #inscl + move @dtype,a0 + jrge #notinscl +#inscl move a10,a10 + jrnz KILL_CRD2 + jruc #die +#notinscl + SLEEPK 3 +#cont + callr crd_updatetxt ;Display players per credit messages + + movi HEBLNKINIT,a0 ;Display on (just in case) + move a0,@HEBLNK + + + SLEEP 1*TSEC + + + movi 4*TSEC,a11 +#lp SLEEPK 1 + .ref get_all_buttons_cur2 + calla get_all_buttons_cur2 + jrz #nob + movi bounce_snd,a0 + calla triple_sound + move a10,a10 + jrnz KILL_CRD2 + jruc KILL_CRD +#nob + dsj a11,#lp + +#ck2 + move a10,a10 + jrnz KILL_CRD2 + + movi 10*TSEC,a11 +#lp1 SLEEPK 1 + calla get_all_buttons_cur2 + jrz #nob1 + movi bounce_snd,a0 + calla triple_sound + jruc KILL_CRD +#nob1 + dsj a11,#lp1 + +KILL_CRD + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + SLEEPK 1 + + CREATE AMODE_PID,attract_mode + +#die DIE + + +KILL_CRD2 + RETP + +coinin_mod + .long slateBMOD + .word 0,0 + .long 0 + + +******************************** + + SUBRP crd_updatetxt + + movi CP_PID1,a0 ;PID + movi 0ffffh,a1 ;mask bits + calla KILALL ;kill all CP_PID1 procs except self + + movi TYPTEXT,a0 ;object ID + clr a1 ;mask + calla obj_delc ;delete existing text + +; MOVI CPYR_MES,a2 ;COPYRIGHT MESSAGE + +; .ref DIPSWITCH +; move @DIPSWITCH,a0 + move @_dipswitch_addr,a0,L + move *a0,a0 + btst 6,a0 ;UJ2 switch 1 + jrnz #notfair ;OFF? + +;Yes, a dollar bill acceptor is hooked up! + + MOVI dollar_mes,a2 ;Dollar bill message + calla print_message +#notfair + + PUSH A10 + callr credits_string + PULL A10 + rets + +#***************************************************************************** + + .asg 25,YSPACE + .asg 17,YSPACE0 + + .asg 40,LN0 + .asg 70,LN1 + .asg 100,LN2 + .asg 130,LN3 + .asg 90,LN3x ;free play y-line + .asg 160,LN4 + .asg 190,LN5 + .asg 220,LN6 + + +CM_Y_GAP EQU 13 +CM_Y_GAP2 EQU 80 +CM_Y_ADDGAP EQU [CM_Y_GAP,200] + + +credits_string + + MOVK ADJFREPL,A0 ;ARE WE IN FREE PLAY? + CALLA GET_ADJ + JRZ #not_freeply + + movi LN3x_setup,a2 + calla setup_message + movi 40,a0 + move a0,@mess_line_spacing + movi #str_freeply,a4 + calla print_string_C2 + + rets + +#not_freeply + +;print "BEST VALUE" +; movi LN0a_setup,a2 +; calla setup_message +; movi #str_value,a4 +; calla print_string_C2 + + +;print "PURCHASE FULL GAMES FOR ONLY X CREDITS!" +; movi LN0_setup,a2 +; calla setup_message +; movi #str_fullg1,a4 +; calla print_string_C2 + +; move @mess_cursy,a0 +; addi YSPACE0,a0 +; move a0,@mess_cursy +; movi ADJFULLG,a0 +; calla GET_ADJ ;# credits for full game +; movi 20,a1 ;max string value +; calla dec_to_asc +; calla copy_string +; movi #str_fullg2,a4 +; calla concat_rom_string +; calla print_string_C + + + + calla GET_CSPT ;a6 = * current pricing table + movk 2,a10 ;min number strings to print + move *a6(CS_LIST),a11,L ;a11 = * string list + jrz #no_strings + + move a11,a2 +#next_string + move *a2+,a0,L ;count up number of strings + jrz #last + inc a10 + jruc #next_string +#last +#no_strings + callr CRED_P ;get number credits + move a0,a3 + MOVK ADJCSTRT,A0 + callr GET_ADJ ;# credits to start + divu a0,a3 ;credits / credits to start + move a3,a3 + jrz #not_enough1 + inc a10 ;+1 string (READY FOR...) +#not_enough1 + + +;print "CREDITS : N" + + movi LN1_setup,a2 + calla setup_message + + callr CRED_P ;# credits in a0 + PUSH a0 + + movi #crd_str,a4 + calla copy_rom_string + + PULL a0 + PUSH a0 + movi 99,a1 ;max string value + calla dec_to_asc + calla concat_string + + MOVK ADJMAXC,a0 + calla GET_ADJ_FOR_COIN ;a0 = max credits + PULL a1 + cmp a0,a1 + jrlo #not_max_crds + movi #str_max,a4 ;max credits + calla concat_rom_string +#not_max_crds + calla print_string_C ;"CREDITS : NN" + + +;print 0-3 strings from current pricing table + + movi LN2_setup,a2 + calla setup_message + + movi 140,a0 + movi YSPACE0,a1 + mpyu a10,a1 ;# strings * Y spacing + srl 1,a1 ;/2 + sub a1,a0 + move a0,@mess_cursy ;centered Y + + calla TAMPEREDP + JRZ #done + +#next_string2 + move *a11+,a4,L ;* next string + jrz #done + + move @mess_cursy,a0 + addi YSPACE0,a0 + move a0,@mess_cursy + + calla print_string_C2 + + jruc #next_string2 +#done + + +;print "N CREDITS TO START" + + move @mess_cursy,a0 + addi YSPACE0,a0 + move a0,@mess_cursy + + MOVK ADJCSTRT,a0 + callr GET_ADJ ;# credits to start + PUSH a0 + movi 99,a1 ;max string value + calla dec_to_asc + calla copy_string + + movi #crd_2start,a4 + PULL a0 + dec a0 + jrz #1credit + movi #crd_2starts,a4 +#1credit + calla concat_rom_string + calla print_string_C + + +;print "N CREDITS TO CONTINUE" + + move @mess_cursy,a0 + addi YSPACE0,a0 + move a0,@mess_cursy + + MOVI ADJCCONT,a0 ;# credits to continue + callr GET_ADJ + PUSH a0 + movi 99,a1 ;max string value + calla dec_to_asc + calla copy_string + movi #crd_2cont,a4 + PULL a0 + dec a0 + jrz #1_creditb + movi #crd_2conts,a4 +#1_creditb + calla concat_rom_string + calla print_string_C + + +;print READY FOR N PLAYERS and PRESS START/INSERT COIN messages + movi LN5_setup,a2 + calla setup_message + + callr CRED_P ;get number credits + move a0,a3 + + MOVK ADJCSTRT,A0 + callr GET_ADJ ;# credits to start + + divu a0,a3 ;credits / credits to start + move a3,a3 + jrz #not_ready + dec a3 + +;;; move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players +;;; jrz #4_plyrs + + cmpi 2,a3 + jrlo #not_max + movi 1,a3 + +#4_plyrs +;;; cmpi 4,a3 +;;; jrlo #not_max +;;; movi 3,a3 +#not_max + sll 5,a3 ;x 32 bits + addi #ready_for_lookup,a3 + move *a3,a4,L +; move @mess_cursy,a0 +; addi YSPACE,a0 +; move a0,@mess_cursy + calla print_string_C2 + + movi #str_start,a4 + jruc #ready + +#not_ready +;Turmell +; movi RUBYPAL,a0 ;redpal +; move a0,@message_palette + movi #str_insert,a4 +#ready + move @mess_cursy,a0 + addi YSPACE,a0 + move a0,@mess_cursy + + calla print_string_C2 + + rets + + + +;LN0a_setup +; JAM_STR osgemd_ascii,10,0,200,LN0-3-YSPACE,WHITEPAL,0 +; .even +;LN0_setup +; JAM_STR ogmd10_ascii,5,0,200,LN0-YSPACE,SGMD8WHT,0 +; .even +LN1_setup + JAM_STR osgemd_ascii,10,0,200,LN1+4,GOLD,0 + .even +LN2_setup + JAM_STR ogmd10_ascii,5,0,200,LN2,SGMD8GLD,0 + .even +LN3_setup + JAM_STR osgemd_ascii,5,0,200,LN3,GREENPAL,0 + .even +LN3x_setup + JAM_STR wgsf24_ascii,8,0,200,LN3x,WGSF_Y_P,0 + .even +LN5_setup + JAM_STR osgemd_ascii,10,0,200,LN5+10,GREENPAL,0 + .even +LN6_setup + JAM_STR osgemd_ascii,10,0,200,LN6,GOLD,0 + .even + +#str_value + .string "BEST VALUE:",0 +#str_fullg1 + .string "PURCHASE FULL GAMES FOR ONLY ",0 +#str_fullg2 + .string " CREDITS PER PLAYER!",0 +#str_max + .string " (MAXIMUM)",0 +#crd_str + .string "CREDITS : ",0 +#crd_2start + .string " CREDIT TO START",0 +#crd_2starts + .string " CREDITS TO START",0 +#crd_2cont + .string " CREDIT TO CONTINUE",0 +#crd_2conts + .string " CREDITS TO CONTINUE",0 +#str_freeply + .string "FREE PLAY",1 +#str_start + .string "PRESS START",0 +#str_insert + .string "INSERT COINS",0 + .even +#ready_for_lookup + .long #str_1p,#str_2p + .long #str_3p,#str_4p +#str_1p .string "READY FOR 1 PLAYER",0 +#str_2p .string "READY FOR 1 OR 2 PLAYERS",0 +#str_3p .string "READY FOR 1 - 3 PLAYERS",0 +#str_4p .string "READY FOR 1 - 4 PLAYERS",0 + .even + + + .if 0 + +CM_LINE1 EQU CUSTOM_MESSAGE +CM_LINE2 EQU CUSTOM_MESSAGE+CMESS_LINE_SIZE +CM_LINE3 EQU CUSTOM_MESSAGE+(2*CMESS_LINE_SIZE) + +;OUTPUT_CUSTOM + + + CALLA ADJ_PAGE + MOVI VALID_CUSTOM,A7 + CALLA RC_WORD + CMPI VALID_VALUE,A0 ; CHECK TO SEE IF MESSAGE IS VALID + JRNZ #zippo + + + movi CM_LINE3,A10 ;CHECK LINE 3 + callr CK_LINE ;3 VALID LINES? + jrz GO_FOR_2 + movi LN2_setup,a2 + calla setup_message + movi STRNGRAM,a4 + calla print_string_C2 +GO_FOR_2 + movi CM_LINE2,A10 ;CHECK LINE 2 + callr CK_LINE ;2 VALID LINES? + jrz GO_FOR_1 + movi LN3_setup,a2 + calla setup_message + movi STRNGRAM,a4 + calla print_string_C2 +GO_FOR_1 + movi CM_LINE1,A10 ;CHECK LINE 1 + callr CK_LINE ;1 VALID LINES? + jrz #zippo + movi LN4_setup,a2 + calla setup_message + movi STRNGRAM,a4 + calla print_string_C2 +#zippo + .endif + +#***************************************************************************** + + .if 0 +HELP_TAB + .LONG L_MESS ;0 SAYS USE L_MESS + .LONG JUST_LIST ;1 SAYS USE LISTED MESSAGES ONLY + .LONG LINE_ONE_PLUS ;2 SAYS USE 1ST LINE W/ 2 TO START + .LONG LINE_TWO_PLUS ;3 + .LONG LINE_THREE_PLUS ;4 + .LONG LINE_ONE_PLUS_2 ;5 USE 1ST LINE 2/ 2 CREDITS PER PLAYER + .LONG LINE_TWO_PLUS_2 ;6 + .LONG LINE_THREE_PLUS_2 ;7 + .LONG OUTPUT_CUSTOM ;8 CUSTOM MESSAGE! + +JUST_LIST + MOVE A8,A3 ;STASH WHERE IT WILL SURVIVE + MOVE *A3(LONG_SIZE),A2,L ;ONE WORD ONLY? + JRZ JUST_ONE ;YEP....CENTER IT NICELY +* +* there's a 2nd line...check for 3rd! +* + MOVE *A3(2*LONG_SIZE),A2,L ;IS THERE A 3RD LINE? + JRZ JUST_TWO ;NOPE + + MOVI SETUP_3_OF_3,A8 + JSRP SET_THEN_A2 + + MOVE *A3(LONG_SIZE),A2,L ;GET LINE 2 + + MOVI SETUP_2_OF_3,A8 + JSRP SET_THEN_A2 + + MOVI SETUP_1_OF_3,A8 ;SET HEIGHT FOR TOP LINE + JRUC FIRST_LINE + +JUST_TWO + MOVE *A3(LONG_SIZE),A2,L ;GET LINE 2 + MOVI SETUP_2_OF_2,A8 + JSRP SET_THEN_A2 + + MOVI SETUP_1_OF_2,A8 + +FIRST_LINE + MOVE *A3,A2,L + JRUC SET_THEN_A2 ;DO TOP LEN AND RETURN + +JUST_ONE + MOVI SETUP_1_OF_1,A8 + JRUC FIRST_LINE ;DO TOP LEN AND RETURN + +* +* OUTPUT THE CUSTOM MESSAGE +* +CM_LINE1 EQU CUSTOM_MESSAGE +CM_LINE2 EQU CUSTOM_MESSAGE+CMESS_LINE_SIZE +CM_LINE3 EQU CUSTOM_MESSAGE+(2*CMESS_LINE_SIZE) + +OUTPUT_CUSTOM + MOVI CM_LINE3,A10 ;CHECK LINE 3 + CALLR CK_LINE ;3 VALID LINES? + JRZ GO_FOR_2 + + MOVI SETUP_3_OF_3,A8 + JSRP SET_THEN_STRNGRAM ;PUT IT OUT + + MOVI CM_LINE2,A10 + MOVI SETUP_2_OF_3,A8 + JSRP SET_THEN_STRNGRAM + + MOVI CM_LINE1,A10 + MOVI SETUP_1_OF_3,A8 + JRUC SET_THEN_STRNGRAM + +GO_FOR_2 + MOVI CM_LINE2,A10 ;CHECK LINE 2 + CALLR CK_LINE ;2 VALID LINES? + JRZ GO_FOR_1 + + MOVI SETUP_2_OF_2,A8 + JSRP SET_THEN_STRNGRAM ;PUT IT OUT + + MOVI CM_LINE1,A10 + MOVI SETUP_1_OF_2,A8 + JRUC SET_THEN_STRNGRAM + +GO_FOR_1 + MOVI CM_LINE1,A10 + MOVI SETUP_1_OF_1,A8 + JRUC SET_THEN_STRNGRAM + + .endif + +************************************************************************** +* +* SET_THEN_A2 +* +* THIS IS A PRIMITIVE FOR THE COIN PAGE PLOTTERS. +* +* IT SETS UP WITH THE STRING IN A8, THEN FINSHES +* ON THE STRING IN A2. +* +* JSRP THIS ROUTINE! +* +************************************************************************** +SET_THEN_A2 + CALLA LM_SETUP + MOVE A2,A8 + JAUC LM_FINIS ;THAT DOES LINE 3 + +************************************************************************** +* +* SET_THEN_STRNGRAM +* +* A10 POINTS AT A CMOS STRING FOR CUSTOM MESSAGE. +* A8 CONTAINS THE SETUP STRING FOR PRINTING THIS +* STRING OUT. CONVERT FROM CMOS TO STRNGRAM +* AND PRINT ON THE STRING. +* +************************************************************************** +SET_THEN_STRNGRAM + CALLR CK_LINE ;TRANSFER TO STRNGRAM + CALLR LM_SETUP + MOVI STRNGRAM,A8 + JAUC LM_FINIS + +************************************************************************** +* +* CK_LINE +* +* A10 POINTS AT A CMOS STRING. WE MOVE THIS STRING +* TO OUR PDATA AREA. THEN WE CALL BUILD_ST TO +* PACK IT INTO "STRNGRAM" WE RETURN .EQ. (PASSED FROM +* BUILD_ST) BACK TO OUR CALLER IF IT IS ALL SPACES. +* +************************************************************************** +CK_LINE + MMTM SP,A0,A7,A1,A2,A10 + MOVE A10,A7 ;INPUT POINTER TO CMOS + MOVE A13,A10 ;OUR PDATA AREA + ADDI PDATA,A10 ;A10 IS DESTINATION. + MOVE A10,A2 ;ITERATE TO LOAD IT UP. + + MOVI CMESS_CHARS,A1 ;COUNTER + CALLA ADJ_PAGE ;POINT THE PAGE + +CK_LOOP + CALLA RC_BYTEI ;FETCH A BYTE + MOVB A0,*A2 ;STORE + ADDK BYTE_SIZE,A2 + DSJS A1,CK_LOOP + + CALLA DEF_PAGE ;POINT AWAY NOW + CALLA BUILD_ST ;NOW XFER TO STRNGRAM (REMOVING SPACES ETC) + MMFM SP,A0,A7,A1,A2,A10 ;RETURN .EQ. IF ITS ALL SPACES. + RETS + + + + +LINE_ONE_PLUS + MOVE *A8,A2,L ;GET LINE 1 +LOP_1 + MOVI SETUP_1_OF_3,A8 + CALLR LM_SETUP + MOVE A2,A8 ;SWAP IN TEXT POINTER + JSRP LM_FINIS ;PRINT IT + +LOP_2 + MOVI TWO_TS,A8 ;TWO TO START STUFF + JAUC L_MESS ;PRINT IT AND RETURN + +* +* IF THE GAME IS IN A 2 TO START....2 TO CONTINUE MODE +* +LINE_THREE_PLUS + MOVE *A8(2*LONG_SIZE),A2,L ;FETCH LINE 3 + JRZ LOP_2 ;NOTHING ON LINE 3 + JAUC LOP_1 ;THEN ITS THE SAME AS ABOVE! + +LINE_TWO_PLUS + MOVE *A8(LONG_SIZE),A2,L ;FETCH LINE 2 + JRZ LOP_2 ;NOTHING ON LINE 2 + JAUC LOP_1 ;THEN ITS THE SAME AS ABOVE! + +LINE_ONE_PLUS_2 + MOVE *A8,A2,L ;GET LINE 1 +LOP_12 + MOVI SETUP_1_OF_2,A8 + CALLR LM_SETUP + MOVE A2,A8 ;SWAP IN TEXT POINTER + JSRP LM_FINIS ;PRINT IT + +LOP_22 + MOVI TWO_TP,A8 ;TWO CREDITS PER PLAYER + JAUC L_MESS ;PRINT IT AND RETURN + +LINE_TWO_PLUS_2 + MOVE *A8(LONG_SIZE),A2,L ;FETCH LINE 2 + JRZ LOP_22 ;NOTHING ON LINE 2 + JAUC LOP_12 ;THEN ITS THE SAME AS ABOVE! + +LINE_THREE_PLUS_2 + MOVE *A8(2*LONG_SIZE),A2,L ;FETCH LINE 3 + JRZ LOP_22 ;NOTHING ON LINE 3 + JAUC LOP_12 ;THEN ITS THE SAME AS ABOVE! + +************************************************************************** +* +* SELECT_SETUP +* +* THIS IS CALLED TO SELECT A SETUP STRING FOR THE +* CREDITS MESSAGE. IF THERE IS PROMPTING TO ADD...WE +* DROP IT DOWN....ELSE WE PRINT IT CENTERED. +* +************************************************************************** +SELECT_SETUP + PUSH a0 + MOVI MESS_CNUM,A8 ;ASSUME NO EXTRA PROMPT + + CALLA CKPROMPT ;IS THERE ONE? + JRZ NO_EXTRA + + MOVI MESS_LOWNUM,A8 +NO_EXTRA + MMFM SP,A0 + RETS + +************************************************************************** +* +* FETCH_REQ +* +* THIS ROUTINE FETCHES THE NUMBER OF UNITS REQUIRED +* FOR CREDIT, BONUS AND MINIMUM: +* +* A2 = REQ FOR CREDITS +* A3 = REQ FOR BONUS +* A4 = MINIMUM +* +************************************************************************** +FETCH_REQ + PUSH a0 + MOVK ADJCUNIT,A0 + CALLR GET_ADJ + MOVE A0,A2 + + MOVK ADJBUNIT,A0 + CALLR GET_ADJ + MOVE A0,A3 + + MOVK ADJMUNIT,A0 + CALLR GET_ADJ_FOR_COIN + MOVE A0,A4 + MMFM SP,A0 + RETS + +************************************************************************** +* +* SLAM_P +* +* IS THERE A SLAM PROCESS RUNNING? +* +* .EQ. NO +* .NE. YES +* +************************************************************************** +SLAM_P + MOVI SLAM_PID,A0 ;SLAM PROCESS ACTIVE? + MOVI 0FFFFH,A1 + jauc EXISTP + +SLAM_SW + movi SLAM_PID|>ffff0000,a0 ;So we can kill other indestructables + move a0,*a13(PROCID) ;Set our ID + calla KIL1C ;Kill others + + SLEEP TSEC ;1 second of coin ignoring + jauc SUCIDE + +************************************************************************** +* +* FORM_COIN_CKSUM +* +* THIS ROUTINE IS CALLED TO FORM THE COIN/CREDITS +* CHECKSUM. THE CHECKSUM IS RETURNED IN A1. +* +* Z IT MATCHES WHATS THERE +* NZ IT DOESN'T MATCH +* +************************************************************************** +FORM_COIN_CKSUM + MMTM SP,A0,A7,A2 + CALLR COIN_PAG ;MAKE SURE WE'RE ON THE RIGHT PAGE. + MOVI COIN_CKSUM_START,A7 ;POINT AT FIRST BYTE TO CHECK + MOVI COIN_CKSUM_BYTES,A2 + CLR A1 ;CLEAR OUT CHECKSUM + +CN_SUM + CALLA RC_BYTEI ;FETCH A BYTE IN A0 + ADD A0,A1 ;ADD TO SUM + DSJS A2,CN_SUM ;TILL WE HAVE EM ALL + + NOT A1 ;COMPLEMENT OF COURSE + sll 32-8,a1 + srl 32-8,a1 + + MOVI COIN_CKSUM,A7 + CALLA RC_BYTE ;FETCH THE CURRENT CKSUM + CMP A0,A1 ;COMPARE TO THIS + MMFM SP,A0,A7,A2 + RETS + +FORM_COIN_CKSUM_AND_STORE + MMTM SP,A1,A7,A0 + CALLR FORM_COIN_CKSUM + MOVI COIN_CKSUM,A7 + MOVE A1,A0 + CALLA WC_BYTE + MMFM SP,A1,A7,A0 + RETS + +************************************************************************** +* +* CCCC +* +* Check_Coin_and_Clear_on_bad_Checksum. +* +* This is called before operations that deal with +* the coinage and credits values. +* +* It checks to see if the area is in tact. If it +* is, then no action is performed. +* +* Else, it clears our all values (credits, etc.) +* so that nothing is given away erroneously. +* +************************************************************************** +CCCC + MMTM SP,A0,A1,A7,A2 + CALLR FORM_COIN_CKSUM ;THIS SETS US TO THE COINAGE PAGE! + JRZ CCCCX ;ALL IS OK! + + MOVI COIN_CKSUM_START,A7 ;POINT AT FIRST BYTE + MOVI COIN_CKSUM_BYTES,A2 ;NUMBER OF BYTES TO CLEAR + CLR A0 + +CCCC_LOOP + CALLA WC_BYTEI ;WRITE A BYTE + DSJS A2,CCCC_LOOP ;UNTIL THEY'RE DONE! + + CALLR FORM_COIN_CKSUM_AND_STORE ;NOW MAKE THE CKSUM VALID + +CCCCX + MMFM SP,A0,A1,A7,A2 + RETS + +************************************************************************** +* +* COIN_PAG +* +* THIS SETS THE CURRENT CMOS PAGE FOR COIN/CREDITS +* +************************************************************************** +COIN_PAG + PUSH a1 + MOVI COIN_SELECT,A1 ;THIS IS COIN/CREDITS PAGE + CALLA SET_PAGE ;SET IT PLEASE + MMFM SP,A1 + RETS + + +******************************** +* Add the # of players to the audit +* A0=Audit # +* Trashes A0-A1,B0-B1 + + SUBR aud_addnumplyrs + + movk 1,a1 ;1 plyr + move @PSTATUS,b0 + subk 3,b0 + jrne aanp50 ;Only 1? + movk 2,a1 ;2 plyrs +aanp50 jruc AUD + + +************************************************************************** +* +* AUDIT HANDLING +* +************************************************************************** +* +* POINT_AT_AUDIT +* +* THIS IS CALLED TO POINT AT THE AUDIT INDICATED BY +* A0. A0 IS THE AUDIT NUMBER 0-30. A7 IS RETURNED +* POINTING AT THE BEGINNING OF THE AUDIT. +* +************************************************************************** +POINT_AT_AUDIT + PUSH a1 + CALLR AUDIT_PAGE + + MOVI AUD_SIZE,A7 ;THIS IS SIZE PER AUDIT + MPYU A0,A7 ;A1 NOW HAS OFFSET + ADDI AUDITORG,A7 ;ADD BASE + MMFM SP,A1 + RETS + +AUDIT_PAGE + PUSH a1 + MOVI AUDIT_SELECT,A1 ;THIS IS AUDIT PAGE + CALLA SET_PAGE ;SET IT PLEASE + MMFM SP,A1 + RETS + +************************************************************************** +* +* FORM_AUD_CKSUM +* +* THIS IS CALLED TO FORM THE CHECKSUM FOR THE AUDIT +* SPECIFIED IN A0. +* +* A1 RETURNS THE CHECKSUM. +* +* Z BIT IS SET BASED ON WHETHER IT MATCHES THE CHECKSUM THERE. +* +************************************************************************** +FORM_AUD_CKSUM + MMTM SP,A0,A4,A7 + CALLR POINT_AT_AUDIT ;A7 = POINTER TO CURRENT ENTRY + MMTM SP,A7 ;SAVE POINTER TO ENTRY + MOVI AUD_BYTES_TO_CHECK,A4 ;COUNT DOWN THE BYTES + CLR A1 ;KEEP SUM IN A1 +ADD_A_BYTE + CALLA RC_BYTEI ;GET A BYTE INTO A0 + ADD A0,A1 ;ADD TO SUM + DSJ A4,ADD_A_BYTE ;ONE MORE ADDED + NOT A1 ;CHECKSUM IS NOW IN LOW WORD + ZEXT A1 +; ANDI WORD_MASK,A1 ;MASK SO ITS COOL + MMFM SP,A7 ;GET POINTER BACK + ADDI AUD_CKSUM,A7 ;POINT AT CHECKBYTE + CALLA RC_WORD ;READ IN THE CKSUM + CMP A0,A1 ;COMPARE WHAT'S THERE TO WHAT WE GOT + MMFM SP,A0,A4,A7 ;Z BIT RETURNS COMPARE + RETS ;A1 RETURNS CKSUM + +************************************************************************** +* +* STORE_AUD_CKSUM +* +* THIS WILL STORE THE AUDIT CHECKSUM IN A1 FOR THE +* AUDIT NUMBER SPECIFIED BY A0. +* +************************************************************************** +STORE_AUD_CKSUM + MMTM SP,A7,A0 ;POINTING REGISTER + CALLR POINT_AT_AUDIT ;A7 POINTS AT AUDIT + ADDI AUD_CKSUM,A7 ;POINT AT CHECKBYTE + MOVE A1,A0 ;GET CHECKBYTE IN A0 + CALLA WC_WORD ;WRITE THE CKSUM + MMFM SP,A7,A0 ;POINTING REGISTER + RETS + +************************************************************************** +* +* FORM_AUD_CKSUM_AND_STORE +* +* THE VALUE AT BAD_AUD IS USED TO DETERMINE WHETHER TO STORE +* THE CORRECT OR INCORRECT VALUE! +* +* A0 = AUDIT NUMBER +* +************************************************************************** +FORM_AUD_CKSUM_AND_STORE + MMTM SP,A1,A2 ;SAVE A1! + CALLR FORM_AUD_CKSUM + MOVE @BAD_AUD,A2 ;GET THE "FUDGE" WORD + XOR A2,A1 ;MAKE CKSUM BAD IF AUDIT IS BAD + CALLR STORE_AUD_CKSUM + MMFM SP,A1,A2 + RETS + +************************************************************************** +* +* GET_AUD +* +* THIS IS CALLED TO FETCH THE AUDIT VALUE FOR THE AUDIT +* SPECIFIED IN A0 INTO A1. IF THE CHECKBYTE FOR THE +* AUDIT IS INCORRECT, THEN RAM LOCATION BAD_AUD WILL BE +* SET TO 1. +* +************************************************************************** +GET_AUD + MMTM SP,A0,A7 + CALLR FORM_AUD_CKSUM ;SEE IF CKSUM IS OK + JRZ FETCH_AUDIT_1 ;ITS OK.... + + MOVK 1,A1 ;CHECKSUM IS BAD + MOVE A1,@BAD_AUD ;SET THE FLAG! + +FETCH_AUDIT_1 + CALLR POINT_AT_AUDIT ;A7 POINTS AT AUDIT + ADDI AUD_DATA,A7 ;ADD ZERO OFFSET + CALLA RC_LONG ;FETCH THE LONG WORD TO A0 + MOVE A0,A1 ;RETURN IN A1 + MMFM SP,A0,A7 + RETS + +************************************************************************** +* +* STORE_AUDIT +* +* A0 = AUDIT NUMBER TO STORE VALUE FOR +* A1 = VALUE TO STORE. +* BAD_AUD = NON ZERO IF BAD CHECKSUM IS TO BE MAINTAINED. +* +************************************************************************** +STORE_AUDIT + + MMTM SP,A0,A7 + CALLR POINT_AT_AUDIT ;A7 POINTS AT AUDIT + ADDI AUD_DATA,A7 ;ADD ZERO OFFSET + MOVE A1,A0 ;MOVE DATA TO WRITING REGISTER + CALLA WC_LONG ;WRITE THE DATA BACK + MMFM SP,A0,A7 ;GET AUDIT NUMBER BACK + JRUC FORM_AUD_CKSUM_AND_STORE ;STORE GOOD OR BAD CKSUM BASED + ;ON BAD_AUD + +************************************************************************** +* +* CLR_SUBS +* +* THIS IS CALLED TO CLEAR OUT THE COINAGE SUB-TOTALS. +* +************************************************************************** +;CLR_SUBS +; MOVI FRST_SUB,A0 +; MOVI LAST_SUB,A1 +; CALLR CLR_AUDR ;CLEAR EM OUT! +; RETP +; +************************************************************************** +* +* CLR_AUDR +* +* THIS IS CALLED TO CLEAR OUT A RANGE OF AUDITS. +* A0 = 1ST AUDIT NUMBER +* A1 = LAST AUDIT NUMBER (INCLUSIVE) +* +************************************************************************** +CLR_AUDR + MMTM SP,A0,A1,A2 + MOVE A1,A2 ;MOVE "LAST" TO A2 + CLR A1 ;WE'LL STORE ZEROS + MOVE A1,@BAD_AUD ;MAKE CKSUMS GOOD ON STORING +CAR1 + CALLR STORE_AUDIT ;STORE THIS AUDIT + INC A0 ;KICK TO NEXT AUDIT + CMP A2,A0 + JRLS CAR1 + MMFM SP,A0,A1,A2 + RETS + +************************************************************************** +* +* CLR_DUMP_AUD +* +* This is called by both joysticks down while looking +* at dump page. It clears out the audits associated +* with that page. +* +************************************************************************** +;CLR_DUMP_AUD +; MOVI AUDDOGGY,A0 +; CALLR KILL_AUD +; MOVI AUDLOCK,A0 +; CALLR KILL_AUD +; MOVI AUDTRAP,A0 +; CALLR KILL_AUD +; MOVI AUDSURV,A0 +; CALLR KILL_AUD +; MOVI AUDBONE,A0 +; CALLR KILL_AUD +; RETS + +************************************************************************** +* +* KILL_AUD +* +* This is called to clear out an audit. +* +* A0 = audit number. +* +************************************************************************** +KILL_AUD + PUSH a1 + CLR A1 ;WE'LL STORE ZEROS + MOVE A1,@BAD_AUD ;MAKE CKSUMS GOOD ON STORING + CALLR STORE_AUDIT ;STORE THIS AUDIT + MMFM SP,A1 + RETS + +************************************************************************** +* +* AUD +* +* A0 = AUDIT NUMBER.......A1 = COUNT TO ADD. +* +************************************************************************** +AUD + MMTM SP,A1,A2 + CLR A2 ;SET "BAD_AUD" GOOD UNTIL OTHERWISE PROVEN! + MOVE A2,@BAD_AUD ;ITS GOOD. + MOVE A1,A2 ;COPY OUR COUNT + CALLR GET_AUD ;FETCH THE CURRENT AUDIT COUNTER + ADD A2,A1 ;ADD THE NEW COUNT + CALLR STORE_AUDIT ;STORE IT BACK + CALLR DEF_PAGE ;SWITCH PAGE AWAY FROM THE DATA! + MMFM SP,A1,A2 + RETS + +AUD1 + PUSH a1 + MOVK 1,A1 + CALLR AUD + MMFM SP,A1 + RETS + +************************************************************************** +* +* CLR_AUD +* +* This is called to clear out all of the audits. +* +* A relatively easy task given the primitives available. +* +************************************************************************** +CLR_AUD + MMTM SP,A0,A1 + MOVK 1,A0 ;START AT AUDIT 1 + MOVI N_AUDITS-1,A1 ;THIS IS TOTAL ALLOCATED + CALLR CLR_AUDR + MMFM SP,A0,A1 + RETS + +************************************************************************** +* +* ADJUSTMENTS +* +************************************************************************** +************************************************************************** +* +* CMOS_VAL +* +* ARE ADJUSTMENTS AND NAME/REV OK? +* +* .EQ. MEANS YES +* .NE. MEANS NO +* +************************************************************************** +CMOS_VAL + callr form_crc32 + jrnz CMOS_BAD + CALLR FORM_ADC ;SEE IF CKSUM IS OK. + JRNZ CMOS_BAD ;NOPE....RETURN .NE. + + CALLR CHECK_NAME_AND_REV ;HOW ABOUT THE NAME AND REV? +CMOS_BAD + RETS + +************************************************************************** +* +* Adjustments are all stored as long words in CMOS. +* They are referenced by adjustment number. Stuff +* adjustment number in A0. Call GET_ADJ and the +* value is returned in A0. +* +************************************************************************** +************************************************************************** +* +* FORM_ADC +* +* THIS IS CALLED TO FORM THE CHECKSUM FOR THE ADJUSTMENTS +* AREA. IT IS RETURNED IN A1. +* +* IT IS COMPARED TO THE REAL CHECKSUM AND .EQ. RETURNED IF OK. +* +************************************************************************** +FORM_ADC + MMTM SP,A7,A0,A6 + CALLR ADJ_PAGE ;SET CMOS PAGE FOR ADJUSTMENTS + MOVI ADJUSTORG,A7 ;POINT AT FIRST BYTE + MOVI ADJ_BYTES_TO_CHECK,A6 ;NUMBER OF BYTES + CLR A1 ;ACCUMULATE CKSUM HERE + +ADJ_C1 + CALLA RC_BYTEI ;READ A BYTE + ADD A0,A1 ;ADD THE BYTE TO THE SUM + DSJS A6,ADJ_C1 + NOT A1 ;COMPLEMENT THE SUM + ZEXT A1 + MOVI ADJ_CKSUM,A7 + CALLA RC_WORD ;FETCH THE CHECKSUM + CMP A0,A1 ;COMPARE TO FETCHED VALUE + MMFM SP,A7,A0,A6 + RETS + + SUBR form_crc32 + mmtm sp,a7,a0,a6 + movi ADJUSTORG,a7 + movi ADJ_BYTES_TO_CHECK,a6 + clr a1 +crc_lp + calla RC_BYTEI + xor a0,a1 + rl 1,a1 + dsjs a6,crc_lp + movi ADJ_CRC32,a7 + calla RC_LONG + cmp a0,a1 + mmfm sp,a7,a0,a6 + rets + +************************************************************************** +* +* F_ADC_S +* +* CALCULATE THE ADJUSTMENT CHECKSUM AND STORE THE +* NEW VALUE. +* +************************************************************************** +F_ADC_S + MMTM SP,A0,A1,A7 + CALLR FORM_ADC ;FORM THE CKSUM + MOVE A1,A0 ;PUT IN CMOS WRITING REGGIE + MOVI ADJ_CKSUM,A7 + CALLA WC_WORD ;AND STORE IT + callr form_crc32 + move a1,a0 + movi ADJ_CRC32,a7 + calla WC_LONG + MMFM SP,A0,A1,A7 + RETS + +************************************************************************** +* +* GET_ADJ +* +* THIS IS CALLED TO FETCH THE VALUE OF AN ADJUSTMENT. +* +* THE ADJUSTMENT NUMBER IS GIVEN IN A0. +* THE VALUE FOR THE ADJUSTMENT IS RETURNED IN A0. +* +************************************************************************** +GET_ADJ + PUSH a1,a7 + CALLR ADJPOINT ;POINT AT ADJUSTMENT + CALLA RC_LONG ;FETCH THE ADJUST PLEASE + CALLR DEF_PAGE + PULL a1,a7 + MOVE A0,A0 ;RETURN Z BIT BASED ON ADJUSTMENT! + RETS + +************************************************************************** +* +* PUT_ADJ +* +* ADJUST NUMBER IN A0. +* VALUE IN A1. +* STORE IT!........ +* +* ****************** THIS IS A UTILITY......IT DOES NOT +* CORRECT ANY CHECKSUM CHANGE THAT +* MAY OCCUR!! +* +************************************************************************** +PUT_ADJ + PUSH a0,a7 + CALLR ADJPOINT ;POINT AT REQUESTED ADJ. + MOVE A1,A0 ;GET VALUE IN WRITING REGGIE! + CALLA WC_LONG ;WRITE THE ADJUSTMENT + CALLR DEF_PAGE ;SWAP PAGE AWAY. + MMFM SP,A7,A0 + RETS + +ADJPOINT + CALLR ADJ_PAGE ;SET CMOS PAGE FOR ADJUSTMENTS + MOVI ADJ_SIZE,A7 ;SIZE PER ADJUSTMENT IN A7 + MPYU A0,A7 ;TIMES ADJUSTMENT REQUESTED. + ADDI ADJUSTORG,A7 ;ADD TO BASE + RETS + +GET_ADJ_FOR_COIN + CALLR GET_ADJ ;GET THE ADJUSTMENT + JAUC COIN_PAG ;THEN RE-INSTATE THE COIN PAGE! + +************************************************************************** +* +* CHECK_NAME_AND_REV +* +* THIS ROUTINE IS CALLED TO SEE IF THE GAME NAME/REV IS +* CORRECT. IF IT IS NOT, THE GAME WILL AUTOMATICALLY +* FACTORY SET. Z MEANS OK! +* +************************************************************************** +CHECK_NAME_AND_REV + MMTM SP,A0,A1,A2,A3,A7 + CALLR ADJ_PAGE ;MAKE SURE WE'RE ON THE CORRECT PAGE + + MOVI NAME_REV,A7 ;POINT AT CMOS NAME STORAGE + MOVI ROM_NAME,A1 ;POINT AT OUR VERSION + MOVI NAME_REV_SIZE,A2 ;MAXIMUM NAME SIZE + +NEXT_LET1 + CALLA RC_BYTEI ;FETCH A BYTE + MOVB *A1,A3 ;GET 1 FROM ROM + SLL 24,A3 + SRL 24,A3 + + CMP A3,A0 ;THEY BETTER BE THE SAME + JRNZ RETURN_NOW ;NOPE....BYE (RETURN .NE.) + + ADDK BYTE_SIZE,A1 ;KICK SOURCE POINTER + MOVE A0,A0 ;WAS IT A ZERO? + JRZ RETURN_NOW ;YEP....NO MORE (RETURN .EQ.) + DSJS A2,NEXT_LET1 + CLR A0 ;RETURN .EQ. + +RETURN_NOW + MMFM SP,A0,A1,A2,A3,A7 + RETS + +************************************************************************** +* +* ADJ_PAGE +* +* THIS SETS THE CURRENT CMOS PAGE FOR ADJUSTMENTS. +* +************************************************************************** +ADJ_PAGE + PUSH a1 + MOVI ADJUST_SELECT,A1 ;THIS IS AUDIT PAGE + CALLA SET_PAGE ;SET IT PLEASE + MMFM SP,A1 + RETS + + +************************************************************************** +* +* DEF_PAGE +* +* THIS SWITCHES TO "DEFAULT" PAGE. THE DEFAULT +* PAGE IS THE ONE THAT WE WOULD LIKE TO SMASH +* MOST IN THE CASE OF A CRASH. AFTER MOST +* PROCESSING, WE SWITCH TO THIS PAGE! +* +************************************************************************** +DEF_PAGE + .if 0 + PUSHST ;PRESERVE CODES THAT ARE BEING RETURNED + PUSH a1 + MOVI TODAYS_SELECT,A1 ;THIS IS TODAY'S HIGH SCORES PAGE + CALLA SET_PAGE ;SET IT PLEASE + PULL a1 + POPST + .endif + RETS + +************************************************************************** +* FAC_SET - Restores the factory settings to the adjustments +* A0=Mode (0=All adjustments, 1=Only coinage) + +FAC_SET + PUSH a1,a2,a7 + + move a0,-*sp + subk 1,a0 + jreq fs20 ;Just coinage? + + calla opmsg_clr + +;;; CALLR DUMP_FS ;CLEAR OUT "DUMP" MEMORY +;;; (stomps on player records) + + + CALLR NO_CREDS ;REMOVE ANY COINS + CALLR ADJ_PAGE ;SET CMOS PAGE CORRECTLY + + MOVI FACTORY_TABLE,A1 ;ROM + MOVI ADJUSTORG,A7 ;CMOS + MOVI N_ADJUSTS,A2 ;NUMBER OF ADJUSTMENTS ALLOCATED + +FACS1 + MOVE *A1+,A0 ;FETCH A ROM LONG WORD + ZEXT A0 + CALLA WC_LONGI ;WRITE THE WORD TO CMOS + DSJS A2,FACS1 ;WRITE 1 LONG WORD PER ADJUST +fs20 +; .if YUNIT +; move @SWITCH+>30,a1 +; btst 6,a1 +; jrnz fs80 +; not a1 +; sll 32-5,a1 +; srl 32-5-3,a1 ;*8 +; cmpi (dctend-dipcoinage_t),a1 +; jrhs fs50 ;Illegal setting? +; addi dipcoinage_t,a1 +; movb *a1,a1 +; movk ADJPRICE,a0 ;Master priceing +; callr PUT_ADJ +;fs50 +; movk ADJFREPL,a0 ;Free play +; clr a1 ;Off +; callr PUT_ADJ +;fs80 +; .endif + + callr LD_CTAB ;EXPAND THE CSELCT VALUE + callr F_ADC_S ;MAKE THE CHECKSUM CORRECT. + + move *sp+,a0 + subk 1,a0 + jreq fsx ;Only coinage? + +* NOW STORE THE GAME NAME AND REVISION INFO + + MOVI NAME_REV,A7 ;POINT AT CMOS NAME STORAGE + MOVI ROM_NAME,A1 ;POINT AT OUR VERSION + MOVI NAME_REV_SIZE,A2 ;MAXIMUM NAME SIZE + +NEXT_LETTER + MOVB *A1,A0 ;FETCH A BYTE + CALLA WC_BYTEI ;WRITE IT TO CMOS + ADDK BYTE_SIZE,A1 ;KICK SOURCE POINTER + move a0,a0 + jrz fsx ;End? + DSJS A2,NEXT_LETTER + +fsx PULL a1,a2,a7 + rets + +;dipcoinage_t +; .byte 1,2,3, 10,11,12, 16,17,18, 29, 32, 33,34,35, 37 +; .byte 39, 41,42, 43, 45,46, 49, 50, 52, 53, 54, 55 +;dctend + .even + +************************************************************************** +* +* SWITCH_FOR_JUMPER +* +* THIS IS CALLED OUT OF THE FACTORY SETTING SEQUENCE. +* IT CHECKS FOR JUMPER COMBINATIONS INDICATING +* GERMAN OR FRENCH GAMES. +* +* THE JUMPERS ARE CONNECTED AS FOLLOWS: +* +* GERMAN JUMPER = BIT 15 OF "COINS" +* FRENCH JUMPER = BIT 14 OF "COINS" +* +* IF BOTH JUMPERS ARE IN, OR BOTH ARE MISSING, THEN +* ITS U.S. DEFAULT....LEAVE EVERYTHING ALONE. +* +* IF GERMAN IS MISSING (READ AS A 1) THEN USE +* GERMAN 1 COINAGE. +* +* IF FRENCH IS MISSING THEN USE FRENCH 1 COINAGE. +* +************************************************************************** +;SWITCH_FOR_JUMPER +; MMTM SP,A0 +; MOVE @COINS,A0 ;GET THE 16 BITS +; ANDI JUMPERS,A0 ;JUST KEEP THE BITS +; JRZ USA ;BOTH ARE IN...US! +; +; CMPI JUMPERS,A0 ;ARE BOTH MISSING? +; JRZ USA ;YEP....US. +; +; CMPI GERMAN_BIT,A0 ;IS JUST THE GERMAN MISSING? +; JRNZ NOGERM ;NOPE +; +; CALLR DO_GERMAN ;DO THE GERMAN STUFF +; JRUC SFJX ;AND EXIT +;* +;* MUST BE FRENCH +;* +;NOGERM +; CALLR DO_FRENCH ;IF IT IS NOT POSSIBLE....DO IT. +;USA +;SFJX +; MMFM SP,A0 +; RETS +; +;DO_FRENCH +; MMTM SP,A0,A1 +; MOVK ADJPRICE,A0 ;AS MASTER PRICER. +; MOVI F1SEL,A1 ;USE FRENCH SELECTOR +; CALLA PUT_ADJ +; MMFM SP,A0,A1 +; RETS +; +;DO_GERMAN +; MMTM SP,A0,A1 +; MOVK ADJPRICE,A0 ;AS MASTER PRICER. +; MOVI G1SEL,A1 ;USE GERMAN SELECTOR +; CALLA PUT_ADJ +; +; MOVK ADJDIFF,A0 +; MOVI 1,A1 ;DIFFICULTY 1 FOR GERMANS +; CALLA PUT_ADJ +; +; MOVK ADJBUYIN,A0 +; MOVI 1,A1 ;EASY BUY-IN FOR GERMANS +; CALLA PUT_ADJ +; +; MMFM SP,A0,A1 +; RETS + +************************************************************************** +* +* LD_CTAB +* +* THIS IS CALLED TO STORE THE CSELCT VALUES FOR +* THE COIN SELECTOR STORED AS ADJPRICE. +* +************************************************************************** +LD_CTAB + mmtm sp,a0,a6,a1 + + calla GET_CSPT ;A6=CSELCT table + +;{ + .IF 0 + movk 1,a1 + move *a6(16*4),a0 + jrnn lct5 ;Normal 1 credit to start? + movk 2,a1 +lct5 movk ADJCSTRT,a0 + callr PUT_ADJ + movk 1,a1 + movk ADJCCONT,a0 + callr PUT_ADJ + + movk ADJC1,a0 ;1st one to store +lct8 move *a6+,a1 ;Get word + abs a1 + callr PUT_ADJ ;Write this one to memory + addk 1,a0 + cmpi ADJCX,a0 + jrls lct8 + + .ENDIF + +;} + + movi ADJLMULT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJCMULT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJRMULT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJXMULT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJDBVMULT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJCUNIT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJBUNIT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJMUNIT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJCSTRT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJCCONT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJCDIV,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJFRAC,a0 + move *a6+,a1 + calla PUT_ADJ + + PUSH A6 + MOVI ADJLTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJRTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJXTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJBTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + PULL A6 + + movk ADJVIRGIN,a0 ;THIS SAYS 1ST 8 UNTOUCHED. + movk 1,a1 + callr PUT_ADJ + + movk ADJ1ST6,a0 ;THIS SAYS 1ST 6 UNTOUCHED. + movk 1,a1 + callr PUT_ADJ ;DONE! + + mmfm sp,a0,a6,a1 + rets + +************************************************************************** +* +* CC_COIN +* MMTM SP,A7 +* CALLR COIN_PAG +* MOVI HSR_C,A7 +* CALLA RC_LONG ;GET THE TABLE COUNTER +* JRZ CCC_X ;ITS DOWN +* DEC A0 ;1 LESS +* CALLA WC_LONG +* CCC_X MMFM SP,A7 +* RETS +* +************************************************************************** + +************************************************************************** +* +* L_MESS +* +* A8 POINTS AT MESS_MAC FOLLOWED BY MESSAGE TEXT. +* POP ALL REGGIES LEAVING A8 POINTING AT TEXT. +* AND JUMP TO THE TEXT PROCESSOR! +* +* THE MMFM POPS THE ROUTINE TO CALL INTO A1. +* +* YOU ***MUST*** USE JSRP TO GET HERE. WE JUMP TO +* THE STRING ROUTINE WHICH WILL RETP BACK TO THE CALLER! +* +************************************************************************** +L_MESS_LOOP + addk BYTE_SIZE,a8 ;PUSH BEYOND THIS BYTE +L_MESS addk >f,a8 ;Round up word + srl 4,a8 + sll 4,a8 + + MMFM A8,A1,A6,A9,A10,A11 ;LOAD UP REGGIES FROM A8. + CLR A0 ;NEVER SLEEP! + + MOVI L_RET,A7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JUMP A1 ;JUMP TO THE ROUTINE. +L_RET MOVB *A8,A0 ;CHECK NEXT BYTE 0=DONE...1=MORE. + JRNZ L_MESS_LOOP + RETP + +************************************************************************** +* +* LM_SETUP +* +* THIS IS CALLED TO SETUP THE WORLD FOR A STRING +* OPERATION, BUT NOT PHYSICALLY MAKE THE CALL. +* +* THIS ALLOWS TWEAKING OF REGGIES BEFORE THE CALL. +* +* LM_FINIS +* +* THIS IS CALLED ONCE THE MODIFICATIONS ARE MADE! +* +************************************************************************** +LM_SETUP + MMFM A8,A1,A6,A9,A10,A11 ;LOAD UP REGGIES FROM A8. + CLR A0 ;DON'T SLEEP + RETS + +LM_FINIS + JUMP A1 ;THIS RUNS ROUTINE AND + +************************************************************************** +* +* GET_CSTR +* +* HERE WE FORM THE CREDITS STRING AND +* RETURN IT IN THE STRING BUFFER. +* WE RETURN A8 POINTING AT THIS BUFFER. +* +* WE ALSO PUT APPROPRIATE FRACTION ON THE +* END IF ADJUSTED ACCORDINGLY. +* +************************************************************************** +GET_CSTR + MOVK ADJFREPL,A0 ;ARE WE IN FREE PLAY? + CALLA GET_ADJ + JRZ NOT_FREE + + MOVI MESS_FREEP,A8 ;RETURN POINTING AT FREE PLAY MESSAGE + JRUC GET_CX + +NOT_FREE + CALLA STR_OBJ ;ALLOCATE AN OBJECT PLEASE + JRC NO_SOBJ ;NONE TO USE! + + MOVI MESS_CREDITS,A8 ;POINT AT TEXT PART + CALLA STRCAT ;BUILD THIS IN. + CALLR CRED_P + MOVE A0,A10 ;SAVE CREDITS + CALLR CAT_A0 +* +* NOW WE NEED TO SEE IF WE SHOULD ADD A FRACTION. +* + MOVK ADJFRAC,A0 + CALLA GET_ADJ ;CHECK THE ADJUSTMENT + JRZ NSFRAC ;DON'T SHOW IT! +* +* ADD ANY FRACTION WE HAVE. +* + CALLR COIN_PAG ;PUT US ON COIN PAGE + CALLR GET_CUNITS ;A0 HAS CUNITS + CALLR DEF_PAGE ;FLIP CMOS AWAY + MOVE A0,A0 ;ZERO? + JRZ NSFRAC ;THEN NO FRACTION. +* +* WE HAVE A FRACTION...WERE THE CREDITS ZERO? +* + MOVE A10,A10 ;WE SAVED EM IN A10 + JRNZ NZM ;NON ZERO MANTISSA + + MOVE A7,A8 ;WALK DOWN STRING LOOKING FOR THE "ZERO" +KILL_Z + MOVB *A8,A1 ;GET A BYTE + JRZ NZM ;COULDN'T FIND IT....GO ON. + + CMPI LET_0,A1 ;IS THIS THE ZERO? + JRZ GOT_ZERO + + ADDK BYTE_SIZE,A8 + JRUC KILL_Z + +GOT_ZERO + CLR A1 + MOVB A1,*A8 ;KILL THE ZERO + +NZM + MOVI MESS_2SPACE,A8 ;SPACE BET. MANTISSA AND DENMO + CALLA STRCAT + +NOT_ZM + CALLR CAT_A0 ;ADD A0 ONTO FRACTION + + MOVI MESS_SLASH,A8 + CALLA STRCAT ;ADD SLASH + + MOVK ADJCUNIT,A0 ;UNITS REQUIRED FOR CREDIT + CALLA GET_ADJ + CALLR CAT_A0 ;DENOMINATOR + +NSFRAC + MOVE A7,A8 ;MOVE "OBJECT" TO A8 + MOVI STRNGRAM,A7 ;POINT AT STRING RAM + CLR A0 + MOVB A0,*A7 ;STRINGRAM IS NULL + CALLA STRCAT ;COPY THE STRING OUT OF OBJECT BLOCK + MOVE A7,A8 + CALLA STR_FREE ;AND FREE UP THE OBJECT BLOCK + +GET_CX + CLRC ;RETURN OK +GET_CXX + RETS +* +* NO OBJECTS AVAILABLE TO FORM STRING +* +NO_SOBJ + MOVI MESS_NULL,A8 + SETC + JRUC GET_CXX ;RETURN BLANK STRING! + +************************************************************************** +* +* CAT_A0 +* +* A0 HAS A BINARY NUMBER. TURN INTO DECIMAL STRING +* AND CONCATONATE TO THE STRING WE'RE BUILDING IN A7. * +* +************************************************************************** +CAT_A0 + PUSH a8 + MOVE A0,A8 ;CREDIT COUNT IN A8 + CALLA HEXTOASC ;STRING + CALLA STRCAT ;NOW WE HAVE WHOLE NUMBER. + MMFM SP,A8 + RETS + +************************************************************************** +* +* ADD_PROMPT +* +* THIS IS CALLED ON THE CREDITS PAGE TO ADD A WORD OF +* WISDOM BELOW THE CREDITS MESSAGE. IT PICKS OUT THE +* CORRECT MESSAGES AND BLINKS THEM. +* +************************************************************************** +ADD_PROMPT + MOVI PROMPT_PROC,A7 + CALLA P_FORK ;START UP ANOTHER W/ SAME ID TO FLASH! + RETP + +PROMPT_PROC + MOVK ADJFREPL,A0 + CALLA GET_ADJ + JRNZ rf4 ;ALWAYS READY FOR 4 PLAYERS! + + CALLR CRED_P + JRZ PP1 + + MOVE A0,A1 ;PUT CREDITS IN A1 + MOVK ADJCSTRT,A0 ;GET AMOUNT NEEDED TO START. + CALLA GET_ADJ + CMP A0,A1 ;ARE THERE ENOUGH TO START? + JRLO PP1 ;NOPE...."INSERT COIN" +* +* WE HAVE ENOUGH TO START FOR 1....HOW ABOUT 2? +* + jrz PP2 + move a0,a2 + add a2,a2 + cmp a1,a2 + jrz RF2 + jrhi PP2 + add a0,a2 + cmp a1,a2 + jrhi RF2 + add a0,a2 + cmp a1,a2 + jrhi rf3 + + +* +* >1 = READY FOR 2 PLAYERS. PRESS START. +* +rf4 + MOVI MESS_READY_4,A1 + JRUC RED_1 +rf3 + MOVI MESS_READY_3,A1 + JRUC RED_1 +RF2 + MOVI MESS_READY_2,A1 + JRUC RED_1 + +PP1 + MOVI MESS_INS_COIN,A0 + CLR A1 + JRUC RED_2 + +PP2 + MOVI MESS_READY_1,A1 +RED_1 + MOVI MESS_PRESS_START,A0 +RED_2 + MOVE A0,*A13(PDATA),L ;HOLD MESSAGES + MOVE A1,*A13(PDATA+LONG_SIZE),L + +BLINK_LOOP + MOVE *A13(PDATA),A8,L ;FIRST MESSAGE + JSRP L_MESS + MOVE *A13(PDATA+LONG_SIZE),A8,L ;2ND MESSAGE + JRZ BL1 ;NOT HOME! + + JSRP L_MESS + +BL1 + SLEEPK 10H + + MOVE *A13(PDATA),A8,L + CALLR LM_SETUP + CLR A6 ;BLACK + JSRP LM_FINIS + +BL2 + SLEEPK 10H + JRUC BLINK_LOOP + +************************************************************************** +* +* MESSAGE SECTION +* +************************************************************************** +ROM_NAME + .byte "WRESTLEMANIA REV 1.30 8/10/95",0 + .even + +FACTORY_TABLE + + .word 0 ;ADJNULL 0 + .word 1 ;ADJPRICE 1 ;MASTER PRICING + .word 1 ;ADJLMULT 2 + .word 4 ;ADJCMULT 3 + .word 1 ;ADJRMULT 4 + .word 0 ;ADJXMULT 5 + .word 0 ;ADJDBVMULT 6 ;DOLLR BILL VALIDATOR + .word 1 ;ADJCUNIT 7 + .word 0 ;ADJBUNIT 8 + .word 0 ;ADJMUNIT 9 + .word 4 ;ADJCDIV 10 + .word 1 ;ADJFRAC 11 ;NON ZERO SAYS SHOW HALF CREDITS + .word 2 ;ADJCSTRT 12 ;CREDITS REQUIRED TO START + .word 2 ;ADJCCONT 13 ;CREDITS REQUIRED TO CONTINUE + +; .word 3 ;ADJDIFF 14 + .word 5 ;ADJDIFF 14 ;Difficulty Level (1-10) + + .word 0 ; 15 + .word 0 ; 16 + .word 1 ;ADJMUSIC 17 ;attract mode music = off + .word 50 ;ADJMAXC 18 ;MAXIMUM CREDITS + .word 0 ;ADJFREPL 19 ;NON-ZERO MEANS FREE PLAY + .word 1 ;ADJVIRGIN 20 ;NON-ZERO MEANS 1ST 8 OF COIN ADJUST BLOCK UNTOUCHED + .word 8 ;ADJFULLG 21 ;credits needed to purchase full game (4-16) + .word 1 ;ADJ1ST6 22 ;NON-ZERO MEANS 1ST 6 UNTOUCHED. + .word 0 ;ADJNOCPAG 23 + .word 1 ;ADJCNTR 24 ;COIN COUNTER MODE + .word 3 ;ADJSPEED 25 ;game timer speed (1-5) + .word 1 ;ADJHEADSZ 26 ;player head sizes (1-2) + .word 1 ;ADJWINMODE 27 ;(winner stays free) + .word 30 ;ADJVOLUME 28 ;sound volume (4-255) + .WORD 0 ;CUSTOM TOTALIZER + .WORD 1 ;TOTALIZER CHUTE 1 + .WORD 1 ;TOTALIZER CHUTE 2 + .WORD 1 ;TOTALIZER CHUTE 3 + .WORD 1 ;TOTALIZER CHUTE 4 + .WORD 1 ;TOTALIZER DBV +** + + .if 0 + .word 0 ;ADJ_UNUSED 0 + .word 2 ;ADJ_PRICING 1 ;MASTER PRICING + .word 1 ;ADJ_LEFT_MULT 2 + .word 1 ;ADJ_RIGHT_MULT 4 + .word 4 ;ADJ_CENTER_MULT 3 + .word 0 ;ADJ_EXTRA_MULT 5 + .word 1 ;ADJ_UNITS_CREDIT 6 + .word 0 ;ADJ_UNITS_BONUS 7 + .word 0 ;ADJ_MIN_UNITS 8 + .word 4 ;ADJCDIV 9 ;COINS PER DOLLAR + .word 1 ;SHOW FRACTIONS 10 + .word 1 ;ADJ_START_CRED 11 ;CREDITS REQUIRED TO START + .word 1 ;ADJ_CONT_CRED 12 ;CREDITS REQUIRED TO CONTINUE + .word 3 ;ADJ_DIFFICULTY 13 + .word 5000 ;ADJ_HSRESET 14 + .word 3 ;ADJ_LIVES 15 + .word 0 ;ADJ_AMODE_MUSIC 16 + .word 50 ;MAXIMUM CREDITS 17 + .word 0 ;FREE PLAY 18 + .word 1 ;NON-ZERO MEANS COIN BLOCK (1ST 8) UNTOUCHED 19 + .word 0 ;ZERO MEANS NORMAL GORE ... 1 = SOFTEN IT 20 + .word 1 ;NON-ZERO MEANS 1ST 6 UNTOUCHED. 21 + .word 0 ;NON-ZERO MEANS NO COIN-SPECIFIC MESSAGE ON COIN PAGE 21 + .word 1 ;ADJCNTR 23 ADJUST MECH COIN COUNTER + .endif + +* A0 = SLEEP +* A1 = ROUTINE +* A6 = COLOR +* A8 = STRING POINTER +* A9 = SCREEN ADDRESS +* A10 = SPACING +* A11 = FONT +* A14 = FLAGS +* + +MESS_CREDITS + .byte "CREDITS: ",0 + .even + +* NORMAL CREDITS SETUP STRING +* +MESS_CNUM + MESS_MAC RD15FONT,SPACING20,CP_CX,135,ROBO_LF,STRCNRM,0 +* +* "LOW" CREDITS SETUP STRING WHEN EXTRA ADVICE ON PRICING +* IS BEING ADDED. +* +MESS_LOWNUM + MESS_MAC RD15FONT,SPACING20,CP_CX,135,ROBO_LF,STRCNRM,0 + +MESS_FREEP + .byte "FREE PLAY",0,0 + .even + +MESS_READY_1 + MESS_MAC RD15FONT,SPACING20,CP_CX,155,ROBO_YELLOW,STRCNRM,0 + .byte "READY FOR 1 PLAYER",0,0 + .even + +MESS_READY_2 + MESS_MAC RD15FONT,SPACING20,CP_CX,155,ROBO_YELLOW,STRCNRM,0 + .byte "READY FOR 1 - 2 PLAYERS",0,0 + .even + +MESS_READY_3 + MESS_MAC RD15FONT,SPACING20,CP_CX,155,ROBO_YELLOW,STRCNRM,0 + .byte "READY FOR 1 - 3 PLAYERS",0,0 + .even + +MESS_READY_4 + MESS_MAC RD15FONT,SPACING20,CP_CX,155,ROBO_YELLOW,STRCNRM,0 + .byte "READY FOR 1 - 4 PLAYERS",0,0 + .even + +MESS_INS_COIN + MESS_MAC RD15FONT,SPACING20,CP_CX,175,ROBO_YELLOW,STRCNRM,0 + + + .byte "INSERT COINS",0,0 + + + .even + +MESS_PRESS_START + MESS_MAC RD15FONT,SPACING20,CP_CX,175,ROBO_YELLOW,STRCNRM,0 + .byte "PRESS START",0,0 + .even + + .if 0 + +************************************************************************** +* +* DUMPING SOFTWARE +* +************************************************************************** +DUMP_FS + CALLR DUMP_PAGE + CLR A0 + MOVI DUMP_PTR,A7 + CALLA WC_WORD ;SET NUMBER OF DUMPS TO ZERO + RETS + +************************************************************************** +* +* ADD_DUMP +* +* THIS IS CALLED TO RECORD A DUMP. A0 THROUGH A9 ARE +* RECORDED IN MEMORY. +* +************************************************************************** +DUMP_SIZE .equ 10*C_LONG_SIZE ;9 LONG WORDS. +DUMP_LAST .equ CMOS+>8000-DUMP_SIZE ;Let em use the whole page! +MAX_DUMP .equ 8 ;DON'T HOLD MORE THAN 12/PAGE + +ADD_DUMP + MMTM SP,B0,B1,B2 + MMTM SP,A0,A1,A7 + CALLR DUMP_PAGE ;SET CMOS PAGE CORRECTLY. + MOVE A0,B0 + MOVE A7,B2 ;SAVE THESE! + MOVE A1,B1 + + MOVI DUMP_PTR,A7 + CALLA RC_WORD ;GET THE INDICATOR OF HOW MANY. + MOVI DUMP_SIZE,A1 + MPYU A0,A1 ;THIS IS OFFSET INTO CMOS FOR THIS ENTRY! + + ADDI DUMP_DATA,A1 ;NOW A1 POINTS WHERE WE'RE PUTTING THE DATA! + CMPI DUMP_LAST,A1 ;ARE WE TOO FAR FOR ANOTHER? + JRHS NO_DUMP ;YEP....SKIP IT + + INC A0 ;1 MORE OUT THERE! + CALLA WC_WORD ;CHALK IT! + + MOVE A1,A7 ;THIS IS POINTER TO STORE DATA. + MOVE B0,A0 ;THIS IS A0 + CALLA WC_LONGI + MOVE B1,A0 ;THIS IS A1 + CALLA WC_LONGI + MOVE A2,A0 ;THIS IS A2 + CALLA WC_LONGI + MOVE A3,A0 ;THIS IS A3 + CALLA WC_LONGI + MOVE A4,A0 ;THIS IS A4 + CALLA WC_LONGI + MOVE A5,A0 ;THIS IS A5 + CALLA WC_LONGI + MOVE A6,A0 ;THIS IS A6 + CALLA WC_LONGI + MOVE B2,A0 ;THIS IS A7 + CALLA WC_LONGI + MOVE A8,A0 ;THIS IS A8 + CALLA WC_LONGI + MOVE A9,A0 ;THIS IS A9 + CALLA WC_LONGI +NO_DUMP + MMFM SP,A0,A1,A7 + MMFM SP,B0,B1,B2 + RETS + +DUMP_PAGE + PUSH a1 + MOVI DUMP_SELECT,A1 ;THIS IS DUMP PAGE + CALLA SET_PAGE ;SET IT PLEASE + MMFM SP,A1 + RETS + +DISPDUMP + CALLR DUMP_PAGE + MOVI DUMP_PTR,A7 + CALLA RC_WORD ;GET THE INDICATOR OF HOW MANY. + JRZ NOTHIN_TO_DUMP + + CLR A9 ;THIS IS CURRENT ONE + MOVE A0,A8 ;THIS IS THE LAST ONE TO DO + +DO_ANOTHER_DPAGE + CALLA CLR_SCRN ;CLEAR SCREEN + CALLR DUMP_PAGE + movk 20,a10 ;This is y coordiante of current one! + MOVI MAX_DUMP,A11 ;THIS IS MAX NUMBER PER PAGE. + +DO_ANOTHER_DUMP + JSRP DO_DUMP + addk 30,a10 ;Kick y up + INC A9 ;KICK TO NEXT DUMP + CMP A8,A9 ;UNTIL THEY'RE ALL DONE! + JRHS DUMP_DONE ;WE'RE NOT ALL DONE YET! + + DSJS A11,DO_ANOTHER_DUMP ;NOT FOR THIS PAGE EITHER! + + JSRP WAIT_MUT ;WATCH FOR STICKS! + JRUC DO_ANOTHER_DPAGE + + .endif + +************************************************************************** +* +* WAIT_MUT +* +* THIS IS LIKE "WAIT_BUT"....WAIT FOR ANY BUTTON EXCEPT +* THAT IT WILL CLEAR OUT THE DUMPS IF BOTH STICKS ARE PUSHED +* DOWN. +* +************************************************************************** +WAIT_MUT + CALLA FORM_SWS ;1ST STATE DOESN'T COUNT +* +* RETURN CURRENT STATE IN A0..PREVIOUS STATE IN A1. +* +WB1 + SLEEPK 1 + + CALLA FORM_SWS + MOVE A0,A2 + ANDI 2002H,A2 + CMPI 2002H,A2 + JRNZ WB2 ;NOT "CLEAR" + +; .ref GETSPEAK +; CALLA GETSPEAK + + +; CALLR DUMP_FS ;CLEAR OUT THE DUMPS! +; CALLR CLR_DUMP_AUD + JRUC WB1 + +getcoin + movi coin_snd,a0 + ;one time in 512, do a different sound + move @PCNT,a14 + sll 32-9,a14 + srl 32-9,a14 + jrnz #csnd + movi 39h,a0 +#csnd calla triple_sound + rets + + +WB2 NOT A1 ;LAST = 0 AND NOW = 1 MEANS EDGE! + AND A1,A0 ;1'S WHERE WE HAVE POSITIVE EDGE. + ANDI BUTTONS,A0 ;IS IT A BUTTON? + JRZ WB1 + +;DO NEW SOUND CALL HERE + + movi beep2_snd,a0 + calla triple_sound + RETP + + +DUMP_DONE + RETP ;AND RETURN TO CALLER! + +NOTHIN_TO_DUMP + CALLA CLR_SCRN ;PRINT SOMETHING PLEASE + MOVI MESS_NODUMP,A8 + JSRP L_MESS + RETP + +************************************************************************** +* DO_DUMP +* A9=DUMP NUMBER TO DO +* A10=Y POSITION. + + .if 0 +DO_DUMP + MMTM A12,A8,A9,A10,A11 + + MOVI DUMP_SIZE,A7 + MPYU A9,A7 ;THIS IS OFFSET INTO CMOS FOR THIS ENTRY! + + ADDI DUMP_DATA,A7 ;NOW A1 POINTS WHERE WE'RE PUTTING THE DATA! +* +* Y IS IN A10 +* + MOVE A10,A3 ;Y IN A3 + MOVK 30,A2 ;STORE X IN A2 + MOVK 10,A5 ;NUMBER OF WORDS TO DUMP +NEXT_ELE + CALLA RC_LONGI ;GET A WORD + MOVE A0,A4 ;HEX IN A4 + + MOVE A7,*A13(PDATA),L + MOVE A2,*A13(PDATA+LONG_SIZE),L + MOVE A3,*A13(PDATA+(2*LONG_SIZE)),L + MOVE A5,*A13(PDATA+(3*LONG_SIZE)),L + + JSRP WRITE_HEX ;WRITE IT OUT.....A0 = DATA +* A10 = Y +* A11 = X + MOVE *A13(PDATA),A7,L + MOVE *A13(PDATA+LONG_SIZE),A2,L + MOVE *A13(PDATA+(2*LONG_SIZE)),A3,L + MOVE *A13(PDATA+(3*LONG_SIZE)),A5,L + + ADDI 48H,A2 + + CMPI 6,A5 ;WHEN WE'RE DOWN TO 4 SKIP TO NEXT LINE + JRNZ NO_SKIP_NOW + + ADDK 12,A3 ;PUSH TO 2ND LINE + MOVI 33,A2 ;RE-MARGIN OVER. (30) + +NO_SKIP_NOW + DSJ A5,NEXT_ELE + + MMFM A12,A8,A9,A10,A11 + RETP + + .endif + +************************************************************************** +* +* WRITE_HEX +* +* A4 = DATA +* A3 = Y +* A2 = X +* +************************************************************************** +WRITE_HEX + MOVI MESS_DUMP,A8 + CALLR LM_SETUP ;SETUP FOR A DUMP! + MOVE A3,A9 ;MOVE Y DOWN + SLL 16,A9 ;SHIFT Y INTO PLACE + ADD A2,A9 ;ADD IN X + + MOVE A4,A8 + CLR A3 ;NO COMMAS! + CALLR HTOHXASC ;CONVERT PLEASE! + JSRP LM_FINIS + RETP + +************************************************************************** +* HTOHXASC - CONVERTS A 32 BIT HEX # TO AN ASCII STRING TERMINATED BY 0 +* A3=NON ZERO IF COMMAS ARE TO BE ADDED! +* A8=HEX # +* Rets: +* A8=PTR TO THE STRING + +HTOHXASC + MMTM SP,A1,A2,A9 + CLR A1 + CLR A2 ;COMMA COUNT + MOVE A1,-*SP ;HERE'S THE NULL TERMINATOR + MOVK 16,A1 ;DIVISOR FOR HEX + MOVE A8,A9 +HEXTASC2 + CLR A8 + DIVU A1,A8 + ADDI '0',A9 ;MAKE THE REMAINDER ASCII + CMPI '9',A9 ;IS IT IN A-F RANGE? + JRLS HHH1 + ADDI 7,A9 ;MAKE ALPHA! +HHH1 + MOVE A9,-*SP ;SAVE HERE + MOVE A8,A9 + JRZ HEXTASC3 ;BR = DONE! + INC A2 + CMPI 3,A2 ;COMMA CHECK + JRLO HEXTASC2 ;BR = NO COMMA +* +* SEE IF WE'RE DOING COMMAS +* + MOVE A3,A3 ;COMMAS? + JRZ HEXTASC2 ;NOPE....IGNORE! + + MOVI ',',A2 + MOVE A2,-*SP ;STUFF A COMMA + CLR A2 + JRUC HEXTASC2 +HEXTASC3 + MOVI STRNGRAM,A1 ;STORE HERE FOR BLOW OUT + MOVE A1,A8 + +HEXTASC4 + MOVE *SP+,A9 + MOVB A9,*A1 + ADDK 8,A1 + MOVE A9,A9 + JRNZ HEXTASC4 + MMFM SP,A1,A2,A9 + RETS + +************************************************************************** +* STRCAT - THIS IS CALLED TO CONCATONATE 2 STRINGS. +* A7 <--- +* THAT IS.......CONCATONATE A8 ONTO THE END OF A7. + +STRCAT + MMTM SP,A7,A0,A8 +STRC2 + MOVB *A7,A0 ;WALK DOWN A7 TO ITS ZERO. + JRZ STRC1 ;WE'RE THERE! + + ADDK BYTE_SIZE,A7 ;KICK TO NEXT BYTE + JRUC STRC2 +* +* NOW A7 POINTS AT ITS ZERO. +* +STRC1 + MOVB *A8,A0 ;GET A BYTE FROM 2ND STRING + MOVB A0,*A7 ;ADD THIS TO 1ST STRING + ADDK BYTE_SIZE,A7 + ADDK BYTE_SIZE,A8 + MOVE A0,A0 ;DID WE JUST MOVE TERMINATOR? + JRNZ STRC1 ;NOPE...MOVE ANOTHER + + MMFM SP,A7,A0,A8 + RETS + +MESS_DUMP + MESS_MAC RD7FONT,SPACING07,23,227,ROBO_WHITE,STRLNRM,0 + +MESS_NODUMP + MESS_MAC RD15FONT,SPACING20,200,128,ROBO_ORANGE,STRCNRM,0 + .byte "NOTHING HERE....PRESS ADVANCE!",0,0 + .even + +MESS_SLASH + .byte "/",0 + .even + +MESS_2SPACE .byte " " +MESS_NULL .byte 0 + .even + +SETUP_1_OF_3 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_13,ROBO_LASER,STRCNRM,0 +SETUP_2_OF_3 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_23,ROBO_LASER,STRCNRM,0 +SETUP_3_OF_3 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_33,ROBO_LASER,STRCNRM,0 + +SETUP_1_OF_2 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_12,ROBO_LASER,STRCNRM,0 + +SETUP_2_OF_2 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 + +SETUP_1_OF_1 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_11,ROBO_LASER,STRCNRM,0 + +dollar_mes + JAM_STR ogmd10_ascii,5,0,200,53,SGMD8YEL,print_string_C2 + .byte "THIS GAME ACCEPTS DOLLAR BILLS",0,0 + .even + +;CPYR_MES +; JAM_STR sgmd8_ascii,5,0,200,240,SGMD8YEL,print_string_C2 +; .byte " COPYRIGHT 1993 MIDWAY MANUFACTURING COMPANY",0,0 +; .even +; +; MESS_MAC RD7FONT,SPACING07,CP_CX,240,ROBO_WHITE,STRCNRM,0 +; .byte " COPYRIGHT 1993 MIDWAY MANUFACTURING COMPANY",0,0 +; .even + +;MEN_MES +; MESS_MAC RD7FONT,SPACING07,CP_CX+6,20,ROBO_WHITE,STRCNRM,0 +; .byte "LIVES AWARDED AT START",0,0 +; .even +;MEN_MES2 +; MESS_MAC RD7FONT,SPACING07,CP_CX+6,30,ROBO_WHITE,STRCNRM,0 +; .byte "LIVES AWARDED FOR A CONTINUE",0,0 +; .even + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/AUDIT.EQU b/AUDIT.EQU new file mode 100755 index 0000000..def2f1d --- /dev/null +++ b/AUDIT.EQU @@ -0,0 +1,195 @@ +* +* AUDITS +* +* AUDITS ARE HANDLED BY AUDITS NUMBER OFF OF THE BASE +* OF THE AUDIT REGION +* +* IF "CHUTES" VALUE IS CHANGED....EXTRA VALUES MUST +* BE PUT IN THIS TABLE. (AND ADJUSTMENT TABLE OF COURSE) +* + +AUDNULL equ 0 +AUDLCOIN equ 1 ;TOTAL COINS IN LEFT CHUTE +AUDCCOIN equ 2 ;Center +AUDRCOIN equ 3 ;Right +AUDXCOIN equ 4 ;4TH CHUTE +AUD_DBV EQU 5 ;BILL VALIDATOR +AUDSERV equ 6 ;SERVICE CREDITS +AUDPAIDC equ 13 + +* +FRST_C equ AUDLCOIN ;FOR CLEARING COINS +LAST_C equ AUDPAIDC +* + +AUD_TOTSTARTS equ 14 ;total starts +AUD_PRESTARTS equ 15 ;attract mode starts + +AUD1STRT equ 16 ;player 1 starts +AUD2STRT equ 17 ;player 2 starts +AUD1CONT equ 18 ;player 1 continues +AUD2CONT equ 19 ;player 2 continues + +AUD1TIME equ 20 ;5 SECOND CHUNKS. (700 YEARS WORTH) (unused?) +AUD2TIME equ 21 ;5 SECOND CHUNKS. (unused?) + +AUDAUTO equ 22 ;AUTO CYCLE PASSES +AUDSTAT equ 23 ;CMOS GAME STATE +AUDTRAP equ 24 ;UNUSED TRAP INSTRUCTION (unused) +AUDSURV equ 25 ;SURVIVED LOCKUPS (unused) +AUDBONE equ 26 ;GAMES NOT FINISHED +AUD_LOCKUP equ 27 ;watchdog lockups +AUD_LOCKUP2 equ 28 ;main loop lockups + +AUD_UPTIME equ 29 ;total up time +AUD_PLTIME equ 30 ;total play time +AUD_1PLAYTIME equ 31 ;time spent in 1p mode ( REAL time, not ) +AUD_2PLAYTIME equ 32 ;time spent in 2p mode ( game clock time ) + +AUD_2PBTIME equ 33 ;total time of completed HUM v HUM battles +AUD_CPUWINTIME equ 34 ;total time of CPU wins +AUD_CPULOSETIME equ 35 ;total time of CPU losses + +AUD_VSCPUS equ 36 ;battles vs cpu started +AUD_VSCPUF equ 37 ;battles vs cpu finished +AUD_VSHUMS equ 38 ;battles vs human started +AUD_VSHUMF equ 39 ;battles vs human finished + +AUD_FASTCDH equ 40 ;fastest computer defeat of human (REAL time) +AUD_FASTHDC equ 41 ;fastest human defeat of computer +AUD_FASTHDH equ 42 ;fastest human defeat of human + +AUD_CPUWIN equ 43 ;battles vs cpu won by cpu + +AUD_CONTOFF equ 44 ;total continues offered (1p mode only?) +AUD_CONTTAKN equ 45 ;total continues taken (1p mode only?) + +AUD_LSCORE equ 46 ;last [hscore,winstreak] entered + +AUD_SNDERR1 equ 47 ;IRQ error +AUD_SNDERR2 equ 48 ;bad checksum +AUD_SNDERR3 equ 49 ;sound watchdog barked +AUD_SNDERR4 equ 50 ;SDAV error + +AUD_BHART equ AUD_SNDERR4+1 ;human uses of the wrestlers +AUD_RRAMO equ AUD_BHART+1 +AUD_UNDER equ AUD_BHART+2 +AUD_YOKO equ AUD_BHART+3 +AUD_SMICH equ AUD_BHART+4 +AUD_BBBIG equ AUD_BHART+5 +AUD_DCLOW equ AUD_BHART+6 +AUD_X equ AUD_BHART+7 ;hole where adam bomb used to be... +AUD_LLUGE equ AUD_BHART+8 + +AUD_BHARTC equ AUD_LLUGE+1 ;computer uses of the wrestlers +AUD_RRAMOC equ AUD_BHARTC+1 +AUD_UNDERC equ AUD_BHARTC+2 +AUD_YOKOC equ AUD_BHARTC+3 +AUD_SMICHC equ AUD_BHARTC+4 +AUD_BBBIGC equ AUD_BHARTC+5 +AUD_DCLOWC equ AUD_BHARTC+6 +AUD_XC equ AUD_BHARTC+7 +AUD_LLUGEC equ AUD_BHARTC+8 + +AUD_BHARTHW equ AUD_LLUGEC+1 ;wins per wrestler (human use) +AUD_RRAMOHW equ AUD_BHARTHW+1 +AUD_UNDERHW equ AUD_BHARTHW+2 +AUD_YOKOHW equ AUD_BHARTHW+3 +AUD_SMICHHW equ AUD_BHARTHW+4 +AUD_BBBIGHW equ AUD_BHARTHW+5 +AUD_DCLOWHW equ AUD_BHARTHW+6 +AUD_XHW equ AUD_BHARTHW+7 +AUD_LLUGEHW equ AUD_BHARTHW+8 + +AUD_BHARTCW equ AUD_LLUGEHW+1 ;wins per wrestler (computer use) +AUD_RRAMOCW equ AUD_BHARTCW+1 +AUD_UNDERCW equ AUD_BHARTCW+2 +AUD_YOKOCW equ AUD_BHARTCW+3 +AUD_SMICHCW equ AUD_BHARTCW+4 +AUD_BBBIGCW equ AUD_BHARTCW+5 +AUD_DCLOWCW equ AUD_BHARTCW+6 +AUD_XCW equ AUD_BHARTCW+7 +AUD_LLUGECW equ AUD_BHARTCW+8 +AUD_WINSTREAK EQU AUD_LLUGECW+1 +AUD_PINSPEED EQU AUD_WINSTREAK+1 +AUD_BEATEN EQU AUD_PINSPEED+1 +AUD_INTER EQU AUD_BEATEN+1 +AUD_COMBO EQU AUD_INTER+1 +AUD_TOTALGAMES EQU AUD_COMBO+1 +AUD_CREDLEN EQU AUD_TOTALGAMES+1 +AUD_CREDLENNUM EQU AUD_CREDLEN+1 +AUD_INTERCON equ AUD_CREDLENNUM+1 +AUD_WWF equ AUD_INTERCON+1 +AUD_TAGMTCH equ AUD_WWF+1 +AUD_TAG EQU AUD_TAGMTCH+1 +AUD_HEADTOHEAD equ AUD_TAG+1 +AUD_ROYALRUM equ AUD_HEADTOHEAD+1 +AUD_RRWINS equ AUD_ROYALRUM+1 +AUD_P1ICONMAX equ AUD_RRWINS+1 +AUD_P2ICONMAX equ AUD_P1ICONMAX+1 +* +LAST_AUDIT equ AUD_P2ICONMAX + +* + +* +FRSTGAUD equ AUD_TOTSTARTS +LASTGAUD equ LAST_AUDIT +* + + + +* +* ADJUSTMENTS ARE ALL LONG WORDS REFERENCED BY ADJUSTMENT +* NUMBER. +* +ADJNULL equ 0 +ADJPRICE equ 1 ;MASTER PRICING + +ADJLMULT equ 2 +ADJC1 equ ADJLMULT ;FIRST COIN TABLE ADJUSTMENT +ADJCMULT equ 3 +ADJRMULT equ 4 +ADJXMULT equ 5 +ADJDBVMULT equ 6 +ADJCUNIT equ 7 +ADJBUNIT equ 8 +ADJMUNIT equ 9 +ADJCDIV equ 10 +ADJFRAC equ 11 ;NON ZERO SAYS SHOW HALF CREDITS +ADJCSTRT equ 12 ;CREDITS REQUIRED TO START +ADJCCONT equ 13 ;CREDITS REQUIRED TO CONTINUE +ADJCX equ ADJCCONT ;LAST COIN TABLE ADJUSTMENT + +ADJDIFF equ 14 +ADJHSRES equ 15 +ADJLIVES equ 16 +ADJMUSIC equ 17 +ADJMAXC equ 18 ;MAXIMUM CREDITS +ADJFREPL equ 19 ;NON-ZERO MEANS FREE PLAY +ADJVIRGIN equ 20 ;NON-ZERO MEANS 1ST 8 OF COIN ADJUST BLOCK UNTOUCHED +**********************************;ADJVIRGIN IS MAINTAINED...BUT NOT USED +ADJFULLG equ 21 ;credits needed to purchase full game (4-16) +ADJ1ST6 equ 22 ;NON-ZERO MEANS 1ST 6 UNTOUCHED. +ADJNOCPAG equ 23 +ADJCNTR equ 24 ;COIN COUNTER MODE +ADJSPEED equ 25 ;game timer speed (1-5) +ADJHEADSZ equ 26 ;player head sizes (1-5) +ADJWINMODE equ 27 ;4 player winner mode (1-3) +ADJCOMPASS equ 28 ;computer assistance (0-1) +ADJVOLUME equ 28 ;sound volume (0-255) +ADJTOTALIZER EQU 29 +ADJLTOTMULT EQU 30 +ADJCTOTMULT EQU 31 +ADJRTOTMULT EQU 32 +ADJXTOTMULT EQU 33 +ADJBTOTMULT EQU 34 +LAST_ADJUST equ 34 + +****************************************************************************** +;end + + + + + \ No newline at end of file diff --git a/AUTOEXEC.BAT b/AUTOEXEC.BAT new file mode 100755 index 0000000..b6fd6e6 --- /dev/null +++ b/AUTOEXEC.BAT @@ -0,0 +1,65 @@ +rem @loadhigh C:\DOS\SHARE.EXE /l:500 /f:5100 +@echo off +PATH C:\DOS;d:\;c:\bat;c:\bin;c:\brief;c:\norton;c:\mw;c:\ca\bin;c:\ca\binb;c:\windows;C:\laplink\ +set mouse=c:\mouse +c:\qemm\loadhi /r:2 C:\DOS\mouse +rem c:\qemm\loadhi /r:2 C:\DOS\smartdrv.exe +c:\qemm\loadhi /r:3 c:\uv\uv /l +c:\qemm\loadhi /r:1 C:\DOS\doskey /insert +set temp=d: +set tmp=d: +set dircmd=/o +set bpath=c:\brief\macros +set bhelp=c:\brief\help +set bfile=c:\brief\state.rst +set bbackup=c:\brief\backup +set bsuffix=ASM +set bflags=-i120k2l130Mpu100 -mSL -mrestore -m120 -Dega -D101key +set btmp=d:\ +set bcasm="!make" +set bcc="!cl /c /W2 /Od %%s.c" +set lib=c:\ca\lib +set include=c:\ca\include +set link=/CP:1 +set helpfiles=c:\ca\help\*.hlp +set init=c:\ca\init +set asmex=c:\ca\samples +set imgdir=c:\video\wwf\img +set srcdir=c:\video\wwf +set vdadir=c:\video\bball\vda +set artaddr=2a0 +set trgtaddr=280 +set mwmouse=32 +set mwcard=560 +set mwpath=c:\mw +set mwfont=system08.fnt +set tvpath=d: +set tvparm=d: +set tvopts=/v80,50 +set itusr1=g:\wwf\img\dnk +set itusr2=g:\wwf\img\bam +set itusr3=g:\wwf\img\und +ldkey +copy c:\command.com d: +copy c:\brief\e.exe d: +copy c:\brief\101key.drv d: +copy c:\bin\make.exe d: +copy c:\bin\gspa.exe d: +copy c:\bin\gsplnk.exe d: +copy c:\bin\tv.exe d: +copy c:\bin\crnchlst.exe d: +copy c:\bin\preasm.exe d: +mkdir d:\mw +copy c:\mw\*.* d:\mw +cd video\wwf +copy make.ini d: +copy wrestle.tvs d: +copy wrestle.map d: +copy wrestle.cmd d: +C:\DOS\mode con rate=30 delay=1 +prompt $p$g +echo ********************************* +echo * Wrestlemania development mode * +echo ********************************* + + diff --git a/AWARD.ASM b/AWARD.ASM new file mode 100755 index 0000000..ae74e47 --- /dev/null +++ b/AWARD.ASM @@ -0,0 +1,3251 @@ +************************************************************** +* +* Software: Mike Lynch, Jason Skiles, Mark Turmell +* Initiated: 04/04/95 +* +* Modified: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "award.asm" + .title "wrestling game program" + .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 "wwfsec.equ" + .include "game.equ" + .include "audit.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .include "sound.equ" + .include "damage.equ" + .include "jjxm.h" + + .include "imgtbl.glo" + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + + +SHOW_ACCUM_ICONS .set 0 + +BLOCK_ICONS .equ 2 ; 2 single rnd 5 for 2 +DBL_BLOCK_ICONS .equ 5 +PERFECT_ICONS .equ 2 +DBL_PERFECT_ICONS .equ 5 +BIG_COMEBACK_ICONS .equ 2 +TWO_ROUND_SWEEP_ICONS .equ 1 +FIVE_WINS_ICONS .equ 3 +QUICK_VICTORY_ICONS .equ 1 + +POWER_MOVE_ICONS .equ 0 +REVERSALS_ICONS .equ 0 +HIGH_RISK_MOVE_ICONS .equ 0 +COMBOS_STARTED_ICONS .equ 0 +COMBO_REVERSALS_ICONS .equ 0 +COMBO_BREAKER_ICONS .equ 0 +ULTRA_COMBOS_ICONS .equ 0 +FIRST_HIT_ICONS .equ 0 +DEFEAT_HUMAN_ICONS .equ 0 +GAME_COMPLETE_ICONS .equ 0 +SUPER_QWK_VICTORY_ICONS .equ 0 +VERY_QWK_VICTORY_ICONS .equ 0 + +MAX_BONUS_BARS .equ (NUM_AWARDS*2) +BONUS_RECORD_SIZE .equ 6 +BONUS_BAR_YPOS .equ 230 +BONUS_BAR_VEL .equ 20 +BONUS_BAR_YSPACE .equ 20 +BONUS_BAR_END_XPOS .equ 180 +BONUS_LTEXT_START_XPOS .equ -((BONUS_BAR_END_XPOS+22)/2) +BONUS_RTEXT_START_XPOS .equ -BONUS_LTEXT_START_XPOS + +BONUS_ICON1_START_XPOS .equ -22 +BONUS_ICON2_START_XPOS .equ -37 +BONUS_ICON3_START_XPOS .equ -52 + + +;fer know +LIFE_MAX .equ 163 ;green pixels in life bar + +BONUS_MSG_XPOS1 .equ 81 +BONUS_MSG_XPOS2 .equ 321 +BONUS_MSG_YPOS .equ 198 +BONUS_ICON_XPOS1 .equ BONUS_MSG_XPOS1 +BONUS_ICON_XPOS2 .equ BONUS_MSG_XPOS2 +BONUS_ICON_YPOS .equ BONUS_MSG_YPOS+22 + + +PROG_BICON_XPOS .equ 56 +PROG_BICON_YPOS .equ 93 + + .if 0 +DUFUS_BOX_YPOS .equ 144 +DUFUS_BOX_RXPOS .equ 399-(119+40) +DUFUS_BOX_LXPOS .equ 40 + .else +DUFUS_BOX_YPOS .equ 144+23 +DUFUS_BOX_RXPOS .equ 399-(59+40) +DUFUS_BOX_LXPOS .equ 40+59 + .endif + + +BOX_OUT_SOUND .equ 0aah +ZIP_IN_SOUND .equ 0b6h + + +POWERUP_CODE_ON .set 1 + + +PUNCH .equ 1 +BLOCK .equ 2 +SUPERP .equ 4 +KICK .equ 8 + + +UP .equ 32 +DOWN .equ 64 +LEFT .equ 128 +RIGHT .equ 256 + + +PU_START_Y .equ 210 +PU_BAR_YSPACE .equ -15 + +PU_LEND_X .equ 125 +PU_REND_X .equ 400-PU_LEND_X +PU_LTEXT_XPOS .equ -(PU_LEND_X/2) +PU_RTEXT_XPOS .equ 400+(PU_LEND_X/2) +PU_BAR_VELOCITY .equ 25 + +LPUBAROID .equ TYPVELALWAYS+010h +RPUBAROID .equ TYPVELALWAYS+011h + +MKDEBUG .equ 0 + + +PUPWAITSWITCH .macro SWITCHES,FAILADDR +lp? + SLEEPK 1 + dec a11 + jrz :FAILADDR: + move a8,a0 + calla get_but_val_down + move a0,a1 + move a8,a0 + calla get_stick_val_down + sll 5,a0 + or a1,a0 + jrz lp? + cmpi :SWITCHES:,a0 + jrnz lp? + + .endm + + +;performed by each player. They are used at the end of a match to award +;icons to the player. These are cleared before each match. +; +;The pxrnd_award arrays are used to keep track of awards on a per round basis. +;The pxmtch_award arrays are used to keep track of awards on a per match basis. +;The pxws_award arrays are used to keep track of awards on a per winstreak basis. +; + BSSX p1rnd_award, 8*NUM_AWARDS ;player 1 round awards + BSSX p2rnd_award, 8*NUM_AWARDS ;player 2 round awards + BSSX p1mtch_award, 8*NUM_AWARDS ;player 1 match awards + BSSX p2mtch_award, 8*NUM_AWARDS ;player 2 match awards + BSSX p1ws_award, 16*NUM_AWARDS ;player 1 winstreak awards + BSSX p2ws_award, 16*NUM_AWARDS ;player 2 winstreak awards + BSSX award_ok_to_die,32 + BSSX pcomeback, 32*2 ;Player big comeback status + BSSX dboxes_on,32 + BSSX powerup_requests,32 + BSSX powerup_die,32 + BSSX show_options_die,16 + BSSX do_show_options,16 + + BSSX blocking_off,16 + BSSX ring_out_on,16 + BSSX buddy_mode_on,16 + BSSX move_names_on,16 + BSSX drone_meters_on,16 + BSSX instant_combos_on,16 + BSSX hyper_speed_on,16 + BSSX no_ring_on,16 + BSSX mk3_tip_number,16 + .bss mk_cycram,16*16 + + .bss pwsarm, 32*2 ;Player big comeback status + .bss ptotal, 32*2 ;Player total Icon counts + .bss bar_obj_ptr, MAX_BONUS_BARS*BONUS_RECORD_SIZE*32*2 + .bss bonus_bar_size, 32 + .bss picon, 32*3*MAX_BONUS_BARS*2 + .bss player_award_state,32 + BSSX p1icon_total, 32 + BSSX p2icon_total, 32 + .bss icon_digit_adjust,32 + .bss p1bicon,32*8 + .bss p2bicon,32*8 + .bss icon_string_width,32 + .bss progress_icons,32*8 + .bss p1dufus_obj,32*2 + .bss p2dufus_obj,32*2 + .bss p1dufus_msg_flags,32 + .bss p2dufus_msg_flags,32 + BSSX p1powerup_request,32 + BSSX p2powerup_request,32 + BSSX p1pins,16 + BSSX p2pins,16 + + .ref match_time,ck_live_teammates + .ref PSTATUS,royal_rumble + .ref process_ptrs + .ref p1winstreak + .ref p2winstreak + .ref get_health + .ref p1oldwinstreak + .ref p2oldwinstreak + .ref FLASHME,FINAL_PTR + .ref triple_sound + .ref BEGINOBJ_TBL + .ref get_but_val_down + .ref get_stick_val_down + .ref get_all_buttons_cur + .ref END_MATCH_SPEECH + .ref fade_down + .ref pal_clean + .ref fade_up + .ref GET_AUD + .ref STORE_AUDIT + .ref is_8_on_1 + .ref wrestler_count + .ref in_finish_move + .ref NUM_OPPS + + +#*************************************************************** +* rst_awards - Used to zero out per round and/or per match award arrays +* Clears both players award arrays!!! +* a14 = pointer to awards array to clear +* + SUBR rst_awards + PUSH a0,a1 + movi (NUM_AWARDS*2)-1,a0 + clr a1 +#rst_award_loop + movb a1,*a14 + addk 8,a14 + dsjs a0,#rst_award_loop + movi pcomeback,a0 + move a1,*a0+,L + move a1,*a0,L + PULL a0,a1 + rets + + + SUBRP accumulate_player_awards + move @royal_rumble,a14 + jrnz #apa_done + X32 a0 + addi process_ptrs,a0 + move *a0,a1,L + jrz #apa_done + move a5,a0 + addi (BLOCKS_AWD*8),a0 + movb *a0,a1 + jrz #no_blocks + clr a1 + jruc #do_accumulate +#no_blocks + movk BLOCK_ICONS,a1 +#do_accumulate + movb a1,*a0 + movi NUM_RND_AWARDS,a2 ; number of awards +#acc_awards_loop + movb *a6,a3 ; Get current value of match award + movb *a5,a4 ; Get per round award + add a4,a3 ; Add to per match award + movb a3,*a6 ; Store back to per match award + addk 8,a6 ; Increment round awards pointer + addk 8,a5 ; Increment match awards pointer + dsjs a2,#acc_awards_loop ; Keep going until all are accumulated +#apa_done + rets + + +#*************************************************************** +* accumulate_awards - accumulates the per round awards into the +* per match awards. +* + SUBR accumulate_awards + PUSH a0,a1,a2,a3,a4,a5,a6 ; Save reggies I'm gonna trash + + clr a0 + movi p1rnd_award,a5 + movi p1mtch_award,a6 + callr accumulate_player_awards + + movk 1,a0 + movi p2rnd_award,a5 + movi p2mtch_award,a6 + callr accumulate_player_awards + + PULL a0,a1,a2,a3,a4,a5,a6 ; Restore reggies + movi p1rnd_award,a14 ; Clear out per round awards + callr rst_awards + rets + + +#*************************************************************** +* rst_winstreak_awards - Used to zero out per winstreak award arrays +* a14 = pointer to player winstreak award table to clear +* + SUBR rst_winstreak_awards + PUSH a0,a1 + movi NUM_AWARDS-1,a0 + clr a1 +#rst_ws_award_loop + move a1,*a14+,W + dsjs a0,#rst_ws_award_loop + PULL a0,a1 + rets + +#*************************************************************** +* +* This array contains the number of ICONS to award for each item in +* the awards stuff. This array MUST be in the same order as the +* awards indecies in game.equ +* + SUBRP award_icons: + .byte POWER_MOVE_ICONS ;POWER_MOVE_AWD + .byte REVERSALS_ICONS ;REVERSAL_AWD + .byte HIGH_RISK_MOVE_ICONS ;HIGH_RISK_AWD + .byte BLOCK_ICONS ;BLOCKS_AWD + .byte COMBOS_STARTED_ICONS ;COMBOS_AWD + .byte COMBO_REVERSALS_ICONS ;COMBO_REV_AWD + .byte COMBO_BREAKER_ICONS ;COMBO_BRKR_AWD + .byte ULTRA_COMBOS_ICONS ;UCOMBOS_AWD + .byte PERFECT_ICONS ;PERFECT_AWD + .byte FIRST_HIT_ICONS ;FIRST_HIT_AWD + .byte BIG_COMEBACK_ICONS ;COMEBACK_AWD + .byte SUPER_QWK_VICTORY_ICONS ;SUPER_QUICK_AWD + .byte VERY_QWK_VICTORY_ICONS ;VERY_QUICK_AWD + .byte QUICK_VICTORY_ICONS ;QUICK_AWD + .byte DEFEAT_HUMAN_ICONS ;DFT_HUMAN_AWD + .byte 0 ;Not used + .byte 0 ;Not used + .byte 0 ;Not used + .byte 0 ;Not used + .byte 0 ;Not used + .byte 0 ;Not used + .byte 0 ;Not used + .byte 0 ;Not used + .byte 0 ;Not used + .byte DBL_PERFECT_ICONS ;DBL_PERFECT_AWD + .byte TWO_ROUND_SWEEP_ICONS ;TWO_RND_AWD + .byte 0 ;Not used + .byte 0 ;Not used + .byte GAME_COMPLETE_ICONS ;GAME_CMPLT_AWD + .byte FIVE_WINS_ICONS ;FIVE_WINS_AWD + .byte 0 ;Not used + .byte 0 ;Not used + .even + +#*************************************************************** +* round_award - adds in round ICONS for a player. +* a0 = pointer to player data. +* a10 = award index. +* + SUBR round_award + PUSH a9,a8 + move *a0(PLYRNUM),a9,W ; Get the player number + cmpi 2,a9 ; Is this a human player + jrge #ra_out ; br = nope - get out + X8 a10 ; Mult award index by 8 + move a10,a8 + movb *a0(PLYR_SIDE),a9 ; What side are we ? + jrz #cks_rnd_p1 ; br = player 1 + addi p2rnd_award,a10 ; add player 2 round table base to index + jruc #cks_rnd_go ; increment counter +#cks_rnd_p1 + addi p1rnd_award,a10 ; add player 2 round table base to index +#cks_rnd_go + addi award_icons,a8 + movb *a8,a8 ; Get # ICONs to award + movb *a10,a9 ; Get current value + add a8,a9 ; Add em in + movb a9,*a10 ; Put it back +#ra_out PULL a9,a8 ; Restore A9 + rets ; Get the hell out + + +#*************************************************************** +* match_award - adds round ICONS to match ICONS total +* a0 = pointer to player data. +* a10 = award index. +* + SUBR match_award + PUSH a9,a8 + move *a0(PLYRNUM),a9,W ; Get the player number + cmpi 2,a9 ; Is this a human player + jrge #ma_out ; br = nope - get out + X8 a10 ; Mult award index by 8 + move a10,a8 + movb *a0(PLYR_SIDE),a9 ; What side are we ? + jrz #cks_match_p1 ; br = player 1 + addi p2mtch_award,a10 ; add player 2 round table base to index + jruc #cks_match_go ; increment counter +#cks_match_p1 + addi p1mtch_award,a10 ; add player 2 round table base to index +#cks_match_go + addi award_icons,a8 + movb *a8,a8 ; Get # ICONs to award + movb *a10,a9 ; Get current value + add a8,a9 ; Add em in + movb a9,*a10 ; Put it back +#ma_out PULL a9,a8 ; Restore A9 + rets ; Get the hell out + + +#* NOTE - These MUST Be in the same order as the award indexes in game.equ +* + SUBRP award_text + .long PWRMVEC ; Power Move + .long HIGHRSKC ; Reversal + .long HIGHRSKC ; High Risk + .long NOBLOCK ; No Blocks + .long HIGHRSKC ; Combos Started + .long CMBOREVC ; Combo Reversals + .long HIGHRSKC ; Combo Breakers + .long HIGHRSKC ; Ultra Combos + .long PERFECT ; Perfect + .long CMBOREVC ; First Hit + .long BIGCOME ; Big Comeback + .long HIGHRSKC ; Super Quick Pin + .long HIGHRSKC ; Very Quick Pin + .long FASTVIC ; Quick Pin + .long HIGHRSKC ; Defeated Human + .long 0 ; Not Yet Used + .long 0 ; Not Yet Used + .long 0 ; Not Yet Used + .long 0 ; Not Yet Used + .long 0 ; Not Yet Used + .long 0 ; Not Yet Used + .long 0 ; Not Yet Used + .long 0 ; Not Yet Used + .long 0 ; Not Yet Used + .long DOUBPERF ; DBL Perfect + .long TWOROUND ; First Two round win + .long 0 ; Not Yet Used + .long 0 ; Not Yet Used + .long HIGHRSKC ; Game Completed with < 5 buyins + .long FIVEWIN ; 5 Winstreak + .long 0 ; Not Yet Used + .long 0 ; Not Yet Used + + +;a8 = player number 0=1 1=2 +;a9 = *bar record +;a11 = zip out on state #, zip in then die on state #+1 + SUBRP zip_award_bar + move @player_award_state,a10,L + cmp a10,a11 + jrz #zip_out + SLEEPK 1 + jruc zip_award_bar + +#zip_out + movi ZIP_IN_SOUND,a0 + calla triple_sound + + subi (BONUS_RECORD_SIZE*32),a9 + addk 1,a11 + move *a9((BONUS_RECORD_SIZE-1)*32),a0,W + move a8,a8 + jrz #p1_zip_out + movi [-BONUS_BAR_VEL,0],a1 + jruc #zip_out_loop +#p1_zip_out + movi [BONUS_BAR_VEL,0],a1 +#zip_out_loop + move *a9,a10,L ; Bar + move *a10(OXVAL),a14,L + add a1,a14 + move a14,*a10(OXVAL),L + + move *a9(32),a10,L ; Text + move *a10(OXVAL),a14,L + add a1,a14 + move a14,*a10(OXVAL),L + + move *a9(64),a10,L ; 1st Icon + move *a10(OXVAL),a14,L + add a1,a14 + move a14,*a10(OXVAL),L + + move *a9(96),a10,L ; 2nd Icon + jrz #zout_done + move *a10(OXVAL),a14,L + add a1,a14 + move a14,*a10(OXVAL),L + + move *a9(128),a10,L ; 3rd Icon + jrz #zout_done + move *a10(OXVAL),a14,L + add a1,a14 + move a14,*a10(OXVAL),L +#zout_done + PUSHP a0,a1 + SLEEPK 1 + PULLP a0,a1 + move *a9,a10,L + move *a10(OXPOS),a10,W + cmp a10,a0 + jrnz #zip_out_loop + +; JSRP flash_bar_icons + + move *a9(((BONUS_RECORD_SIZE-1)*32)+16),a10,W + jrnz #no_zip_in + +#wait_2nd_state + move @player_award_state,a10,L + cmp a10,a11 + jrle #zip_in + SLEEPK 1 + jruc #wait_2nd_state + +#zip_in + SLEEPK 3 + move a8,a8 + jrz #p1_zip_in + movi [BONUS_BAR_VEL,0],a1 + movi 399,a0 + jruc #zip_in_loop +#p1_zip_in + movi [-BONUS_BAR_VEL,0],a1 + clr a0 +#zip_in_loop + move *a9,a10,L ; Bar + move *a10(OXVAL),a14,L + add a1,a14 + move a14,*a10(OXVAL),L + + move *a9(32),a10,L ; Text + move *a10(OXVAL),a14,L + add a1,a14 + move a14,*a10(OXVAL),L + + move *a9(64),a10,L ; 1st Icon + move *a10(OXVAL),a14,L + add a1,a14 + move a14,*a10(OXVAL),L + + move *a9(96),a10,L ; 2nd Icon + jrz #zin_done + move *a10(OXVAL),a14,L + add a1,a14 + move a14,*a10(OXVAL),L + + move *a9(128),a10,L ; 3rd Icon + jrz #zin_done + move *a10(OXVAL),a14,L + add a1,a14 + move a14,*a10(OXVAL),L +#zin_done + PUSHP a0,a1 + SLEEPK 1 + PULLP a0,a1 + move *a9,a10,L + move *a10(OXPOS),a10,W + cmp a10,a0 + jrnz #zip_in_loop + +#zip_exit + move *a9,a0,L ; Bar + calla DELOBJ + move *a9(32),a0,L ; Text + calla DELOBJ + move *a9(64),a0,L ; 1st Icon + calla DELOBJ + move *a9(96),a0,L ; 2nd Icon + jrz #zip_die + calla DELOBJ + move *a9(128),a0,L ; 3rd Icon + jrz #zip_die + calla DELOBJ +#zip_die + DIE + +#no_zip_in +; JSRP flash_bar_icons + move @award_ok_to_die,a10,L + addi 1,a10 + move a10,@award_ok_to_die,L +#no_zip_in_wait + move @award_ok_to_die,a10,L + cmpi 4,a10 + jrz #zip_exit + SLEEPK 1 + jruc #no_zip_in_wait + + + SUBRP flash_bar_icons + PUSHP a8,a9 + move a9,a10 + addi 64,a10 + movi 0101h,a9 +#iflash_loop + move *a10+,a8,L + jrz #fbi_exit + CREATE AWARD_PID,FLASHME + jruc #iflash_loop +#fbi_exit + SLEEPK 10 + PULLP a8,a9 + RETP + + + SUBRP get_num_awards: + PUSH a6,a7,a8,a9,a11 + clr a8 + movi award_text,a6 + movi NUM_AWARDS,a9 +#gna_loop + movb *a10,a11 + jrz #no_inc + move a11,*a7+,L + cmpi 5,a11 + jrge #gna_big_icon + clr a11 + jruc #gna_get_text_obj +#gna_big_icon + movi 1,a11 +#gna_get_text_obj + move a11,*a7+,L + move *a6,*a7,L + addi 32,a7 + addk 1,a8 +#no_inc + addi 32,a6 + addk 8,a10 + dsjs a9,#gna_loop + move a8,a10 + cmpi 6,a8 + jrle #no_limit + movk 6,a10 +#no_limit + PULL a6,a7,a8,a9,a11 + rets + + +#**************************************************************** +* +* adjust_perfects - This function is called to check to see if 2 perfects +* have been registered for a match. If so the perfects are deleted from +* a double perfect is put into the match awards and the 2 single perfects +* are removed. This allows the double perfect to be registered in the +* winstreak accumulation and the proper icon bar to be displayed at the +* end of the match. +* + SUBRP adjust_perfects + PUSH a9,a10 + movi p1mtch_award,a9 + addi (PERFECT_AWD*8),a9 + movb *a9,a10 ; How many perfects for match + cmpi (PERFECT_ICONS*2),a10 ; Is it 2? + jrnz #nop1_dbl_perfect ; br = nope + clr a10 ; Reset match perfects + movb a10,*a9 + subi (PERFECT_AWD*8),a9 ; Add a double perfect + addi (DBL_PERFECT_AWD*8),a9 + movb *a9,a10 + addk DBL_PERFECT_ICONS,a10 + movb a10,*a9 + jruc #ap_done +#nop1_dbl_perfect + movi p2mtch_award,a9 + addi (PERFECT_AWD*8),a9 + movb *a9,a10 + cmpi (PERFECT_ICONS*2),a10 + jrnz #ap_done + clr a10 + movb a10,*a9 + subi (PERFECT_AWD*8),a9 + addi (DBL_PERFECT_AWD*8),a9 + movb *a9,a10 + addk DBL_PERFECT_ICONS,a10 + movb a10,*a9 +#ap_done +#adjust_blocks + movi p1mtch_award,a9 + addi (BLOCKS_AWD*8),a9 + movb *a9,a10 ; How many block awards for match + cmpi (BLOCK_ICONS*2),a10 ; Is it >= 2? + jrlt #nop1_dbl_block ; br = nope + movk DBL_BLOCK_ICONS,a10 ; Give bigger award for multiround no blocking + movb a10,*a9 +#nop1_dbl_block + movi p2mtch_award,a9 + addi (BLOCKS_AWD*8),a9 + movb *a9,a10 + cmpi (BLOCK_ICONS*2),a10 + jrlt #ab_done + movk DBL_BLOCK_ICONS,a10 + movb a10,*a9 +#ab_done + PULL a9,a10 + rets + +; A8 = Player number +; A9 = *next bar icon record + SUBRP adjust_text_position + PUSH a9 + subi ((BONUS_RECORD_SIZE-3)*32),a9 ;Point at Icon 2 object +#adj_t_loop + move *a9,a0,L ;Object exist ? + jrz #atp_exit ;br = no + move *a0(OIMG),a14,L ;Get image pointer + move *a14,a14,W ;Get image width + move a8,a8 ;Player 1? + jrnz #do_tadjust ;br = no + neg a14 +#do_tadjust + move *a9(OXPOS),a0,W ;Get current XPos + add a14,a0 ;Adjust it + move a0,*a9(OXPOS),W ;Write it back + addi 32,a9 + jruc #adj_t_loop +#atp_exit + PULL a9 + rets + + + SUBRP create_player_awards + + movi bar_obj_ptr,a9 + movi p1mtch_award,a10 + movi picon,a7 + move a8,a8 ; player 1 ? + jrz #dpa_p1 ; br = yes + addi (MAX_BONUS_BARS*BONUS_RECORD_SIZE*32),a9 + addi (MAX_BONUS_BARS*3*32),a7 + movi p2mtch_award,a10 +#dpa_p1 + callr get_num_awards ; Get the number of awards + move a10,a10 + jrz #no_awards + + move a7,a0 + PUSH a0 + movk 1,a11 + movi [BONUS_BAR_YPOS,0],a1 ;Start Y position + movi 1800h,a3 ;Start Z position + movi TYPVELALWAYS,a5 ;Object ID + clr a6 + clr a7 ;Y velocity + +; Make a bonus bar +#do_next_award_bar + movi BONUSBAR,a2 ;Image Pointer + movi [399,0],a0 ;Start X position + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi DPLT_R_P,b0 ;Make em BLUE + move a8,a8 ;Player 1? + jrnz #do_bar ;br = no + clr a0 + movi DMAWNZ|M_3D|M_SCRNREL|M_FLIPH,a4 ;DMA flags + movi DPLT_B_P,b0 ;Make em BLUE +#do_bar + mmtm sp,a1,a8 + calla BEGINOBJP ;Bonus Bar + move a8,*a9+,L + mmfm sp,a1,a8 + +; Make the bonus bar text + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + PULL a0 + move *a0(64),a2,L + PUSH a0 + movi [399+BONUS_RTEXT_START_XPOS,0],a0 + move a8,a8 ;Player 1? + jrnz #do_text ;br = no + movi [BONUS_LTEXT_START_XPOS,0],a0 +#do_text + addi 10h,a3 + mmtm sp,a1,a8 + calla BEGINOBJ ;Bonus Bar + move a8,*a9+,L + mmfm sp,a1,a8 + +; Make the bonus bar icon 1 + PULL a0 + callr get_bbicons + PUSH a0 + movi [399-BONUS_ICON1_START_XPOS,0],a0 ;Start X position + move a8,a8 ;Player 1? + jrnz #do_icon_1 ;br = no + movi [BONUS_ICON1_START_XPOS,0],a0 ;Start X position +#do_icon_1 + addi 10h,a3 + mmtm sp,a1,a8 + move *a9,a2,L + calla BEGINOBJ ;Icon 1 + move a8,*a9+,L + mmfm sp,a1,a8 + +; Make the bonus bar icon 2 + move *a9,a2,L + jrz #no_2nd_icon + movi [399-BONUS_ICON2_START_XPOS,0],a0 ;Start X position + move a8,a8 ;Player 1? + jrnz #do_icon_2 ;br = no + movi [BONUS_ICON2_START_XPOS,0],a0 ;Start X position +#do_icon_2 + addi 10h,a3 + mmtm sp,a1,a8 + calla BEGINOBJ ;Icon 2 + move a8,*a9+,L + mmfm sp,a1,a8 + jruc #chk_3rd_icon +#no_2nd_icon + clr a2 + move a2,*a9+,L + jruc #no_more_icons +#chk_3rd_icon + +; Make the bonus bar icon 3 + move *a9,a2,L + jrz #no_more_icons + movi [399-BONUS_ICON3_START_XPOS,0],a0 ;Start X position + move a8,a8 ;Player 1? + jrnz #do_icon_3 ;br = no + movi [BONUS_ICON3_START_XPOS,0],a0 ;Start X position +#do_icon_3 + addi 10h,a3 + mmtm sp,a1,a8 + calla BEGINOBJ ;Icon 3 + move a8,*a9+,L + mmfm sp,a1,a8 + jruc #icon_3_done + +#no_more_icons + clr a2 + move a2,*a9+,L +#icon_3_done + movi (399-BONUS_BAR_END_XPOS),a0 + move a8,a8 ;Player 1? + jrnz #do_td_pos ;br = no + movi BONUS_BAR_END_XPOS,a0 ;End for check award +#do_td_pos + move a0,*a9+,W ;Store Ending position + clr a0 + move a0,*a9+,W ;Store NOT last + + callr adjust_text_position ;Adjust text position based on number of icons + +#create_bar_proc + mmtm sp,a1,a7 + CREATE AWARD_PID,zip_award_bar ; Process to control this bar + mmfm sp,a1,a7 + + addk 1,a11 + PULL a0 + addi 96,a0 + PUSH a0 + dsj a10,#do_next_award_bar + + movk 1,a0 + move a0,-*a9,W ;Store last + PULL a0 + rets +#no_awards + move @award_ok_to_die,a9,L + addi 1,a9 + move a9,@award_ok_to_die,L + rets + + + SUBRP total_icons + move a8,a8 + jrz #tot_p1_icons + movi p2mtch_award,a9 + movi p2icon_total,a10 + jruc #tot_awards +#tot_p1_icons + movi p1mtch_award,a9 + movi p1icon_total,a10 +#tot_awards + movi NUM_AWARDS,a11 + move *a10,a8,L +#tot_awards_loop + movb *a9,a14 + sll 24,a14 + srl 24,a14 + add a14,a8 + addk 8,a9 + dsjs a11,#tot_awards_loop + move a8,*a10,L + rets + + + + SUBR clear_icon_total + move a8,a8 + jrz #clr_p1_icons + clr a8 + move a8,@p2icon_total,L + rets +#clr_p1_icons + move a8,@p1icon_total,L + rets + + +#**************************************************************** +* +* create_end_rnd_awards - This PROCESS creates the icon bars displayed +* at the end of a match. +* + SUBR create_end_rnd_awards + move @royal_rumble,a14 + jrz #cera_ok + DIE +#cera_ok + + callr adjust_perfects + + movi (MAX_BONUS_BARS*BONUS_RECORD_SIZE*2),a8 + movi bar_obj_ptr,a9 + clr a11 +#clr_array_loop + move a11,*a9+,L + dsjs a8,#clr_array_loop + + clr a8 ; Clear the state machine + move a8,@player_award_state,L + +;1PLYR + move *a10(PLYR_SIDE),a8 + + callr create_player_awards ; Create awards for player 1 +;1PLYR movk 1,a8 +;1PLYR callr create_player_awards ; Create awards for player 2 + + movk 1,a8 ; Start the state machine + move a8,@player_award_state,L + +#state_loop + movi ((TSEC*3)/4),a9 ; How long each bar is diplayed +#state_loop1 + SLEEPK 1 + calla get_all_buttons_cur + jrnz #quick_states + dsjs a9,#no_state_advance ; Is it time to advance the state machine? + addk 1,a8 ; Yes + move a8,@player_award_state,L + jruc #state_loop ; Reset the Sleeper time +#no_state_advance + move @award_ok_to_die,a10,L ; Is it time to exit ? +;1PLYR cmpi 2,a10 + cmpi 1,a10 + jrnz #state_loop1 ; br = no + + clr a8 + callr total_icons + movk 1,a8 + callr total_icons + + movi TSEC/2,a8 +#wait + SLEEPK 1 + calla get_all_buttons_cur + jrnz #wait_abort + dsjs a8,#wait +#wait_abort + movk 3,a8 + move a8,@award_ok_to_die,L + + DIE + +#quick_states + SLEEPK 5 + addk 1,a8 + move a8,@player_award_state,L + jruc #no_state_advance + + +#**************************************************************** +* +* is_it_a_really_quick_win - This function determines whether the win +* by the player (a10) was quick enough to be awarded an icon. If so +* an icon is awarded. +* + SUBR is_it_a_really_quick_win + PUSH a0,a1,a2 + move @match_time,a0,L + move a0,a2 + andi 0fh,a0 + movk 10,a1 + mpyu a0,a1 + srl 16,a2 + add a2,a1 + cmpi 69,a1 + jrgt #quick + jruc #iiarqw_done + + cmpi 79,a1 + jrgt #super_quick + cmpi 73,a1 + jrgt #very_quick + cmpi 64,a1 + jrgt #quick + jruc #iiarqw_done +#super_quick + RND_AWARD a10,SUPER_QUICK_AWD + jruc #iiarqw_done +#very_quick + RND_AWARD a10,VERY_QUICK_AWD + jruc #iiarqw_done +#quick + RND_AWARD a10,QUICK_AWD +#iiarqw_done + PULL a0,a1,a2 + rets + + +#**************************************************************** +* +* give_award_if_opponent_is_human - This function awards the player +* with ICONs if he/she defeated a human player. +* + SUBR give_award_if_opponent_is_human + PUSH a9 + movb *a10(PLYR_SIDE),a9 + jrz #i_am_player1 + move @PSTATUS,a9 + andi 01b,a9 + jruc #gaioih_award +#i_am_player1 + move @PSTATUS,a9 + andi 10b,a9 +#gaioih_award + jrz #gaioih_done + RND_AWARD a10,DFT_HUMAN_AWD +#gaioih_done + PULL a9 + rets + rets + + +#**************************************************************** +* +* arm_comeback_award - This function arms the big comeback ICON +* awarding system. +* +* a10 = Index number of player +* + + SUBR arm_comeback_award + cmpi 2,a10 + jrlt #ok_to_arm + rets +#ok_to_arm + + ;figure out if all opponents are at 80%+ strength. + movi process_ptrs,a8 + movi NUM_WRES,a9 +#lp move *a8+,a0,L + jrz #nxt ;skip inactive + + move *a0(PLYR_SIDE),a14 + cmp a14,a10 ;humans only, so PLYRNUM == PLYR_SIDE + jreq #nxt ;skip teammates + + move *a0(PLYRNUM),a1 + calla get_health + cmpi (LIFE_MAX*80)/100,a0 + jrlt #rets ;abort if any enemy is under 80% strength + +#nxt dsj a9,#lp + + PUSH a0,a10 + X32 a10 + addi pcomeback,a10 + movk 1,a0 + move a0,*a10,L + PULL a0,a10 +#rets rets + + +#**************************************************************** +* +* check_for_award_for_big_comeback - This function awards ICONS for a +* player who cameback from the brink of disaster +* + SUBR check_for_award_for_big_comeback + PUSH a9 + movb *a10(PLYR_SIDE),a9 + jrz #i_am_player1 + move @(pcomeback+32),a9,L + jrz #gfbc_done + jruc #gfbc_award +#i_am_player1 + move @pcomeback,a9,L + jrz #gfbc_done +#gfbc_award + RND_AWARD a10,COMEBACK_AWD +#gfbc_done + PULL a9 + rets + + +#**************************************************************** +* +* arm_winstreak_award - This function arms the winstreak ICON +* awarding system. +* +* a1 = Winstreak Value +* a2 = Player Number +* + SUBR arm_winstreak_award + move a1,a1 + jrz #awa_exit + PUSHP a0,a1 + X32 a2 + addi pwsarm,a2 + movk 5,a0 + modu a0,a1 + jrnz #awa_disarm + movk 1,a0 + jruc #awa_ok +#awa_disarm + clr a0 +#awa_ok + move a0,*a2,L + PULLP a0,a1 +#awa_exit + rets + + +#**************************************************************** +* +* check_for_award_for_winstreak +* player who cameback from the brink of disaster +* + SUBR check_for_award_for_winstreak + PUSH a0,a9,a10 + move a10,a0 + movb *a10(PLYR_SIDE),a9 + jrz #i_am_player1 + movi (pwsarm+32),a10 + move *a10,a9,L + jrz #cfafw_done + jruc #cfafw_award +#i_am_player1 + movi pwsarm,a10 + move *a10,a9,L + jrz #cfafw_done +#cfafw_award + MATCH_AWARD a0,FIVE_WINS_AWD + clr a9 + move a9,*a10,L +#cfafw_done + PULL a0,a9,a10 + rets + +; A0 = *num icons +; A9 = *objects + SUBR get_bbicons + PUSH a0,a1,a9 + move *a0,a0,L ; Get number of Icons + cmpi 5,a0 ; Num < 5? + jrlt #small_icons ; br = yes + cmpi 10,a0 ; Num < 10? + jrlt #s_and_l_icons ; br = yes + movi BICON_10,a0 + move a0,*a9+,L ; Store the image pointer + jruc #gbb_done +#small_icons + movi BICON_1,a1 + cmpi 4,a0 + jrlt #small_loop + .if DEBUG + LOCKUP + .endif + subk 1,a0 +#small_loop + move a1,*a9+,L ; Store Icon image + dsjs a0,#small_loop + jruc #gbb_done +#s_and_l_icons + cmpi 5,a0 + jrz #is_five + cmpi 7,a0 + jrlt #gt5_ok + .if DEBUG + LOCKUP + .endif + movk 7,a0 +#gt5_ok + movi BICON_1,a1 +#sloop + move a1,*a9+,L + subk 1,a0 + cmpi 5,a0 + jrnz #sloop +#is_five + movi BICON_5,a1 + move a1,*a9+,L +#gbb_done + clr a0 + move a0,*a9,L + PULL a0,a1,a9 + rets + + + + + SUBRP bbicon_table + .long BICON_1A + .long BICON_5A + .long BICON_10A + .long BICON_20A + .long BICON_30A + .long BICON_40A + .long BICON_50A + .long BICON_60A + .long BICON_70A + .long BICON_80A + .long BICON_90A + .long BICON_100A + + + SUBRP get_bonus_icons + PUSH a0,a1,a2,a3,a4,a9 + addi 32,a9 + clr a4 + move a1,a3 + move a1,a0 + cmpi 100,a3 + jrge #icon_max + + clr a2 +#get_tens_loop + cmpi 10,a3 + jrlt #tens_done + subi 10,a3 + addk 1,a2 + jruc #get_tens_loop +#tens_done + move a2,a2 + jrz #no_tens + addk 1,a2 + sll 5,a2 + addi bbicon_table,a2 + move *a2,a1,L + move a1,*a9+,L + move *a1,a1,W + add a1,a4 +#no_tens + move a0,a3 + movk 10,a2 + modu a2,a3 + cmpi 5,a3 + jrlt #less_five + move @(bbicon_table+32),a2,L + move a2,*a9+,L + move *a2,a1,W + add a1,a4 + subi 5,a3 +#less_five + move a3,a3 + jrz #no_ones + move @bbicon_table,a2,L + move *a2,a1,W +#ones_loop + move a2,*a9+,L + add a1,a4 + dsjs a3,#ones_loop +#no_ones + srl 1,a4 + move a4,@icon_string_width,L + clr a2 + move a2,*a9,L + PULL a0,a1,a2,a3,a4,a9 + rets +#icon_max + movi BICON_100A,a2 + move a2,*a9+,L + move *a2,a1 + add a1,a4 + jruc #no_ones + +; a10 = player num +; a1 = num icons + SUBRP audit_icons + PUSH a0,a1,a2 + move a1,a2 + movi AUD_P1ICONMAX,a0 + move a10,a10 + jrz #p1_audit + movi AUD_P2ICONMAX,a0 +#p1_audit + calla GET_AUD + cmp a1,a2 + jrle #not_higher + move a2,a1 + calla STORE_AUDIT +#not_higher + PULL a0,a1,a2 + rets + + + + SUBR show_bonus_icons + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a9,a11 + movi [BONUS_MSG_XPOS1,0],a0 + move a10,a10 + jrz #p1bonus + movi p2bicon,a9 + move @p2winstreak,a1,W + + .if SHOW_ACCUM_ICONS + move @p2oldwinstreak,a2,W + cmp a1,a2 + .endif + + jrz #total_reset + move @p2icon_total,a1,L + jrz #no_bonus + callr audit_icons + movi [BONUS_MSG_XPOS2,0],a0 + jruc #do_bonus +#p1bonus + movi p1bicon,a9 + move @p1winstreak,a1,W + + .if SHOW_ACCUM_ICONS + move @p1oldwinstreak,a2,W + cmp a1,a2 + .endif + + jrz #total_reset + move @p1icon_total,a1,L + jrz #no_bonus + callr audit_icons +#do_bonus + callr get_bonus_icons + + movi [BONUS_MSG_YPOS,0],a1 + movi SKILBON,a2 + movi 104+200,a3 + movi DMAWNZ|M_SCRNREL,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJ + move a8,*a9+,L + + move a10,a10 + jrz #p1icon + movi [BONUS_ICON_XPOS2,0],a0 + jruc #dobicon +#p1icon + movi [BONUS_ICON_XPOS1,0],a0 +#dobicon + move @icon_string_width,a1,L + sll 16,a1 + sub a1,a0 + move *a9,a2,L +#dobicon_loop + movi [BONUS_ICON_YPOS,0],a1 + PUSH a0 + calla BEGINOBJ + PULL a0 + move *a2,a11,W + sll 16,a11 + add a11,a0 + move a8,*a9+,L + move *a9,a2,L + jrnz #dobicon_loop +#no_bonus + clr a0 + move a0,*a9,L + PULL a0,a1,a2,a3,a4,a5,a6,a7,a9,a11 + rets + + + + SUBRP #total_reset + move a10,a10 + jrz #p1_reset + clr a0 + move a0,@p2icon_total,L + jruc #no_bonus +#p1_reset + clr a0 + move a0,@p1icon_total,L + jruc #no_bonus + + + SUBR del_bonus_icons + PUSH a0,a2 + move a10,a10 + jrnz #del_p2 + movi p1bicon,a2 + jruc #del_bicon +#del_p2 + movi p2bicon,a2 +#del_bicon + move *a2+,a0,L + jrz #del_done + calla DELOBJ + jruc #del_bicon +#del_done + PULL a0,a2 + rets + + + + SUBR show_progress_bicons + PUSH a0,a1,a2,a3,a4,a5,a6,a6,a9,a10 + move @p2icon_total,a1,L + jrnz #do_spb +#spb_p1 + move @p1icon_total,a1,L + jrz #no_picons +#do_spb + movi progress_icons,a9 + callr get_bonus_icons + movi [PROG_BICON_XPOS,0],a0 + move @icon_string_width,a1,L + sll 16,a1 + sub a1,a0 + move *a9,a2,L + movi >2000,a3 + movi DMAWNZ|M_SCRNREL,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + addi 32,a9 + move *a9,a2,L +#dopicon_loop + movi [PROG_BICON_YPOS,0],a1 + PUSH a0 + calla BEGINOBJ + PULL a0 + move *a2,a10,W + sll 16,a10 + add a10,a0 + move a8,*a9+,L + move *a9,a2,L + jrnz #dopicon_loop +#no_picons + clr a6 + move a6,*a9,L + PULL a0,a1,a2,a3,a4,a5,a6,a6,a9,a10 + rets + + + SUBR del_progress_icon + PUSH a0,a2 + movi progress_icons,a2 ; Get pointer to progess screen icon array + addi 32,a2 +#del_picon + move *a2+,a0,L ; Get pointer to object + jrz #delp_done ; br = not valid object pointer + calla DELOBJ ; Delete the object + jruc #del_picon ; Go get next +#delp_done + PULL a0,a2 + rets + + +; Displays dufus messages for each HUMAN player + + SUBR show_dufus_messages + + PUSHP a9,a10 ; Save o reggie + + clr a9 ; Set up state machine + move a9,@award_ok_to_die,L + move a9,@dboxes_on,L + +f_wait + move @in_finish_move,a14 ; Are we doing a finishing move ? + jrz f_done ; br = no + SLEEPK 10 + jruc f_wait +f_done + + movk 1,a10 ; Msg number to show + CREATE AWARD_PID,display_dufus_message ; Show msgs for player 1 + + movk 1,a10 ; Msg number to show + movk 1,a9 + CREATE AWARD_PID,display_dufus_message ; Show msgs for player 2 + + SLEEPK 15 ; Give it a little time + + PULLP a9,a10 ; All done + RETP + + + SUBRP dufus_msgs + .long TORUN ; 1st Dufus Message (RUN) + .long CONTROLI ; 2nd Dufus Message (GETUP INSTRUCTIONS) + .long OUTRING ; 3rd Dufus Message (OUTRING INSTRUCTIONS) + + +; A13 = *player data +; A1 = message number (1-3) + SUBR dufus_msg_off + PUSH a0,a2,a3 + move *a13(PLYRNUM),a2,W ; Get the player number + cmpi 2,a2 ; Is this a human player + jrge #dmoff_exit ; br = nope - get out + + movi p1dufus_msg_flags,a2 ; Get pointer to player 1 msg flags + movb *a13(PLYR_SIDE),a0 ; Are we player 1? + jrz #do_dufus_msg_off ; br = yes + movi p2dufus_msg_flags,a2 ; Get pointer to player 2 msg flags +#do_dufus_msg_off + subk 1,a1 ; Decrement msg number + move *a2,a0,L ; Get msg flags + movk 1,a3 ; Set up for bit shift + sll a1,a3 + andn a3,a0 ; Disable this msg + move a0,*a2,L ; Write it back +#dmoff_exit + PULL a0,a2,a3 + rets + + +; A9 = message number +; A10 = *player data + SUBR dufus_msg_on + + move *a10(PLYRNUM),a8,W ; Get the player number + cmpi 2,a8 ; Is this a human player + jrge #dmo_exit ; br = nope - get out + move @p1dufus_msg_flags,a14,L ; Get Player 1 msg flags + movi p1winstreak,a11 +; movb *a10(PLYR_SIDE),a8 ; Get Player number + movb *a10(PLYRNUM),a8 ; Get Player number + jrz #p1_dmo ; br = player 1 + move @p2dufus_msg_flags,a14,L ; Get Player 2 msg flags + movi p2winstreak,a11 +#p1_dmo + move *a11,a11,W ; 3 or more wins ? + cmpi 3,a11 + jrge #dmo_exit ; br = yes + move a9,a10 ; Save msg number + move a8,a9 ; Save player number + move a10,a11 + subk 1,a11 ; sub 1 from msg num + movk 1,a8 ; set up for bit shift + sll a11,a8 ; shift by msg num-1 + and a8,a14 ; will this msg be displayed? + jrz #dmo_exit ; br = no + + clr a8 ; Set up state machine + move a8,@award_ok_to_die,L + + CREATE 4000h|AWARD_PID,display_dufus_message + + movi TSEC,a10 ; Let box get displayed for 1 second +#min_time_loop + SLEEPK 1 + callr suspend_all ; Put all but unsuspendables to sleep + dsjs a10,#min_time_loop ; 1 second? - br = no + + movi TSEC*2,a10 ; Allow up to 2 more seconds +#wait_die_loop + SLEEPK 1 + callr suspend_all ; Put all but unsuspendables to sleep + calla get_all_buttons_cur ; Anybody pressing buttons? + jrnz #dmo_abort ; br = yes + dsjs a10,#wait_die_loop ; 2 seconds? - br = no +#dmo_abort + movk 1,a9 ; Tell display_dufus_msg to die + move a9,@award_ok_to_die,L +#dmo_exit + DIE + + + SUBRP suspend_all + movi ACTIVE,a3,L + +#lp move *a3,a3,L ;Get next + jrz #x ;End? + move *a3(PROCID),a14 ;Get Process ID + andi 0c000h,a14 ;Is this either an indestructable or unsuspendable process? + jrnz #lp ;br = yes + + move *a3(PTIME),a14 ;Get current Sleep time + addk 1,a14 ;Add 1 to it + move a14,*a3(PTIME) ;Write it back + jruc #lp ;Go check next process + +#x rets + + + + SUBR reset_dufus_msgs + PUSH a0,a1 + movi p1dufus_msg_flags,a1 ; Pointer to player 1 msg enables + move a0,a0 ; Reset player 1 msgs? + jrz #rst_d_p1 ; br = yes + movi p2dufus_msg_flags,a1 ; Pointer to player 2 msg enables +#rst_d_p1 + movk 0fh,a0 ; Enable all msgs + move a0,*a1,L + PULL a0,a1 + rets + +;a9 = player number +;a11 = *objects (2) +;a2 = current scale divisor + SUBRP #adjust_tl + PUSH a2,a7,a10 + srl 8,a2 + andni 0ffh,a2 ; Mask lower scale bits + move *a11(32),a14,L ; Get pointer to object + move *a14(OIMG),a3,L ; Get pointer to image header + + move *a3,a7,W ; Get image Width + sll 15,a7 ; x 10000h + divu a2,a7 ; divide by scale factor + movi DUFUS_BOX_LXPOS,a10 + move a9,a9 ; Am I player 1? + jrz #atl_right ; br = yes + movi DUFUS_BOX_RXPOS,a10 +#atl_right + sub a7,a10 ; Upper left X + move a10,*a14(OXPOS) ; Set box X + move *a11,a14,L ; Get text object pointer + move a10,*a14(OXPOS) ; Set text X + + move *a3(16),a7,W ; Get image Width + sll 15,a7 ; x 10000h + divu a2,a7 ; divide by scale factor + movi DUFUS_BOX_YPOS,a10 + sub a7,a10 ; Upper Left Y + move *a11(32),a14,L ; Get Box object pointer + move a10,*a14(OYPOS) ; Set Box Y + move *a11,a14,L ; Get text object pointer + move a10,*a14(OYPOS) ; Set Text Y + PULL a2,a7,a10 + + rets + + + +; Displays dufus messages for a player +; A9 = player number +; A10 = message number (1 - 4) + SUBR display_dufus_message + + move @PSTATUS,a14 + move a9,a9 ; Player 1? + jrz #p1_is_dufus ; br = yes + move @p2winstreak,a0,W ; Is this player on a winstreak? + cmpi 3,a0 + jrge #no_dufus_msg ; br = yes (no dufus msgs) + movi p2dufus_msg_flags,a1 ; + movi [DUFUS_BOX_RXPOS,0],a0 ; Set p2 box x position + movi p2dufus_obj,a11 ; Pointer to be used later + jruc #dufus_msg_box ; Go do it +#p1_is_dufus + move @p1winstreak,a0,W ; Is this player on a winstreak? + cmpi 4,a0 + jrge #no_dufus_msg ; br = yes (no dufus msgs) + movi p1dufus_msg_flags,a1 ; Get which msgs to show + movi p1dufus_obj,a11 ; Pointer to used later + movi [DUFUS_BOX_LXPOS,0],a0 ; Set p1 box x position +#dufus_msg_box + btst a9,a14 ; Is this really a human ? + jrz #no_dufus_msg ; br = no + move *a1,a2,L ; Get enabled msg flags + movk 1,a3 ; Generate bit number of msg we want displayed + subi 1,a10 ; Subtract 1 from msg number + move a10,a8 ; Save msg number + sll a10,a3 ; Shift bit up + move a2,a10 ; Save bit + and a3,a2 ; Ok to display msg ? + jrz #no_dufus_msg ; br = no + andn a3,a10 ; Disable this msg + move a10,*a1,L ; Write it back + move a8,a3 ; Get msg number + sll 5,a3 ; Offset into table + addi dufus_msgs,a3 ; Add table pointer + movk 1,a2 + move a2,@dboxes_on,L + move *a3,a2,L ; Get image pointer (text) + movi [DUFUS_BOX_YPOS,0],a1 ; Vertical Position + movi >2000,a3 ; Z Position + movi DMAWNZ|M_3D|M_SCRNREL,a4 ; DMACTRL + movi CLSNEUT,a5 ; Object ID + clr a6 ; X Velocity + clr a7 ; Y Velocity + PUSH a0,a1 ; Save these + calla BEGINOBJ ; Create Text Object + PULL a0,a1 ; Restore regs + move a8,*a11,L ; Save off object pointer + movi 05000500h,a2 ; Set initial text scale factor + move a2,*a8(OSCALE),L + movi INFOBOX,a2 ; Box Image Pointer + subi 10h,a3 ; Make sure box is behind text + movi DPLT_B_P,b0 ; Player 1 palette + move a9,a9 ; Are we player 1? + jrz #p1_dufus_box_pal ; br = yes + movi DPLT_R_P,b0 ; Player 2 palette +#p1_dufus_box_pal + calla BEGINOBJP ; Create the box + move a8,*a11(32),L ; Save box object pointer + movi 05000500h,a2 ; Set initial box scale factor + move a2,*a8(OSCALE),L + movi 02000200h,a3 ; Initial amount to adjust scale factor +#dufus_wait + PUSHP a2,a3,a8 ; Savey reggies + callr #adjust_tl ; Adjust top/left corner position + SLEEPK 1 ; Wait + PULLP a2,a3,a8 ; Getty reggies + cmpi 01000100h,a2 ; Are we at full size + jrz #dufus_flash ; br = yes + sub a3,a2 ; Adjust scale factor + cmpi 00010001h,a3 ; Scaling value = 1? + jrz #no_more_shift ; br = yes + srl 1,a3 ; Adjust scaling value +#no_more_shift + move *a11,a8,L ; Get pointer to text object + move a2,*a8(OSCALE),L ; Set new scale factor + move *a11(32),a8,L ; Get pointer to box object + move a2,*a8(OSCALE),L ; Set new scale factor + jruc #dufus_wait ; Do it again +#dufus_flash + movi BOX_OUT_SOUND,a0 + calla triple_sound + move *a11(32),a8,L ; Get the object pointer + movi 0101h,a9 ; Constant color (white) + CREATE 4000h|AWARD_PID,FLASHME ; Flash him once + SLEEPK 5 + CREATE 4000h|AWARD_PID,FLASHME ; Flash him twice + SLEEPK 5 +#dufus_done + SLEEPK 1 + move @award_ok_to_die,a0,L ; Should I croak? + jrz #dufus_done ; br = no + + move *a11,a0,L ; Get rid of text object + calla DELOBJ + move *a11(32),a0,L ; Get rid of box object + calla DELOBJ +#no_dufus_msg + DIE ; Crooooak!!! + + + + .bss pin_objects,32*2 + + +****************************************************************************** +* +* a9 is dead team (0 or 1). Figure out if we need to post the message or +* not. + + SUBR pin_prompt + + move @royal_rumble,a14 ; Are we in royal rumble mode ? + jrnz #check_count ; br = yes + calla is_8_on_1 ; Are is 8 on 1 mode ? + jrnc #not_8_on_1 ; br = no +#check_count + move @wrestler_count,a14 ; Are there any drones left to kill ? + jrnz #die ; br = yes +#not_8_on_1 + + ;quit if there's already one of these going. (not likely) + movi PINHIM_ANIM_PID,a0 + movi -1,a1 + calla EXISTP + jrnz #die + + ;look for a live human from the winning team inside the ring. + ;quit if there isn't one. + movi process_ptrs,a0 + movi 2,a1 ;only check humans +#lp0 move *a0+,a2,L + jrz #nxt0 ;skip inactive + move *a2(PLYR_SIDE),a14 + cmp a9,a14 + jreq #nxt0 ;skip dead team + move *a2(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #nxt0 ;skip dead guys (shouldn't be any) + move *a2(INRING),a14 + jrnz #nxt0 ;skip outside guys + jruc #f_dead ;got one. move on. +#nxt0 dsj a1,#lp0 + jruc #die ;no live winning human found. quit. + +#f_dead ;Make sure everyone on the dead team is actually dead and not + ; a zombie. Further, make sure at least one is inside the ring. + move a2,a8 ;save proc ptr of pinner. + clr a10 ;"found pinable guy" flag + + movi process_ptrs,a0 + movi NUM_WRES,a1 ;check everyone +#lp1 move *a0+,a2,L + jrz #nxt1 ;skip inactive + move *a2(PLYR_SIDE),a14 + cmp a9,a14 + jrne #nxt1 ;skip live team + move *a2(INRING),a14 + jrnz #nxt1 ;skip outside guys + move *a2(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrne #die ;found live guy - quit + move *a2(STATUS_FLAGS),a14,L + btst B_ZOMBIE,a14 + jrnz #die ;found zombie - quit + inc a10 ;got one. +#nxt1 dsj a1,#lp1 + + + + ;done looking, and everyone on the dead team is dead and not a + ;zombie. If a10 is set, that means we also found at least one + ;inside the ring, so we can go ahead and flash the message. +#fp_dn TEST a10 + jrz #die + + + calla END_MATCH_SPEECH ;do the obnoxious "PIN HIM!" crap. + + MOVI 0BBH,A0 ;Move name annc snd + CALLA triple_sound + + + movi pin_objects,a9 + + movi [128,0],a1 + movi CHOICBK,a2 + movi 1800h,a3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ; DMACTRL + movi TYPPINHIM,a5 + clr a6 ; X Velocity + clr a7 ; Y Velocity + + move *a8(PLYR_SIDE),a14 + jrnz #onrt + + ;left + move @p1pins,a0 + addk 1,a0 + move a0,@p1pins + movi [-100,0],a0 + movi [-50,0],b6 + clr a10 + movi DPLT_B_P,b0 + movk 5,a11 + jruc #do_it + +#onrt ;right + move @p2pins,a0 + addk 1,a0 + move a0,@p2pins + movi [399+101,0],a0 + movi [399+50,0],b6 + movi 400,a10 + movi DPLT_R_P,b0 + movi -5,a11 + +#do_it + mmtm sp,a0,a1 + calla BEGINOBJP + mmfm sp,a0,a1 + move a8,*a9,L + + movi 1810h,a3 + move b6,a0 + movi PINHIM09,a2 + calla BEGINOBJ + move a8,*a9(32),L + + move a11,a0 + +#zin + move *a9,a8,L + move *a8(OXPOS),a11,W + cmp a10,a11 + jrz #zin_done + add a0,a11 + move a11,*a8(OXPOS),W + move *a9(32),a8,L + move *a8(OXPOS),a11,W + add a0,a11 + move a11,*a8(OXPOS),W + PUSHP a0 + SLEEPK 1 + PULLP a0 + jruc #zin + +#zin_done + + PUSHP a0 + CREATE PINHIM_ANIM_PID,#flash_pin_txt + + PUSHP a0 + SLEEP TSEC*2 + PULLP a0 + calla KILL + PULLP a0 + +#zout + move *a9,a8,L + move *a8(OXPOS),a11,W + cmpi -107,a11 + jrlt #zout_done + cmpi 500,a11 + jrgt #zout_done + sub a0,a11 + move a11,*a8(OXPOS),W + move *a9(32),a8,L + move *a8(OXPOS),a11,W + sub a0,a11 + move a11,*a8(OXPOS),W + PUSHP a0 + SLEEPK 1 + PULLP a0 + jruc #zout + +#zout_done + move *a9,a0,L + calla DELOBJ + move *a9(32),a0,L + calla DELOBJ + +#die DIE + + +#flash_pin_txt + + .ref setup_back_anim + .ref ANIM_CROWD + + move *a9(32),a8,L + movk 5,a9 + +#lpa PUSHP a9 + .ref PIN_FLASH_ANIM + movi PIN_FLASH_ANIM,a1 + calla setup_back_anim + + JSRP ANIM_CROWD + + PULLP a9 + dsj a9,#lpa + + DIE + + +*********************************************************** +#* +;A8 = player side (0,1) + SUBRP no_block_powerup_check +#lp + ;no no-block allowed if royal rumble. + move @royal_rumble,a14 + jrnz #die + + clr a11 + PUPWAITSWITCH BLOCK,#lp + + movi TSEC*2,a11 + PUPWAITSWITCH BLOCK,#lp + PUPWAITSWITCH BLOCK,#lp + + sll 5,a8 + addi p1powerup_request,a8 + + move *a8,a9,L + ori BLOCKING_OFF,a9 + move a9,*a8,L + +#die DIE + +*********************************************************** +#* +;A8 = player side (0,1) + SUBRP move_names_powerup_check +#lp + clr a11 + PUPWAITSWITCH PUNCH,#lp + + movi TSEC*2,a11 + PUPWAITSWITCH PUNCH,#lp + PUPWAITSWITCH PUNCH,#lp + PUPWAITSWITCH PUNCH,#lp + + sll 5,a8 + addi p1powerup_request,a8 + + move *a8,a9,L + ori MOVE_NAMES_ON,a9 + move a9,*a8,L + + DIE + + + +*********************************************************** +#* +;A8 = player side (0,1) + SUBRP drone_meters_powerup_check + + ;only in one-player games + move @PSTATUS,a11 + cmpi 3,a11 + jrz #onep_only + + ;only in one-on-one games + move @NUM_OPPS,a14 + dec a14 + jrnz #onep_only +#lp + + +; clr a11 +; PUPWAITSWITCH KICK,#lp +; +; movi TSEC*2,a11 +; PUPWAITSWITCH KICK,#lp +; PUPWAITSWITCH KICK,#lp + + sll 5,a8 + addi p1powerup_request,a8 + + move *a8,a9,L + ori D_METERS_ON,a9 + move a9,*a8,L + move a9,@drone_meters_on + +#onep_only + DIE + + +*********************************************************** +#* +;A8 = player side (0,1) + SUBRP hyper_match_powerup_check +#lp + clr a11 + PUPWAITSWITCH LEFT,#lp + + movi TSEC*2,a11 + PUPWAITSWITCH PUNCH,#lp + PUPWAITSWITCH PUNCH,#lp + PUPWAITSWITCH BLOCK,#lp + + sll 5,a8 + addi p1powerup_request,a8 + + move *a8,a9,L + ori HYPER_MATCH_ON,a9 ; Disabled for now + move a9,*a8,L + + DIE + + +*********************************************************** +#* +;A8 = player side (0,1) + SUBRP combos_powerup_check +#lp + clr a11 + PUPWAITSWITCH RIGHT,#lp + + movi TSEC*2,a11 + PUPWAITSWITCH PUNCH,#lp + PUPWAITSWITCH SUPERP,#lp + + sll 5,a8 + addi p1powerup_request,a8 + + move *a8,a9,L + ori COMBOS_ON,a9 + move a9,*a8,L + + DIE + + +*********************************************************** +#* +;A8 = player side (0,1) + SUBRP ring_out_powerup_check +#lp + clr a11 + PUPWAITSWITCH DOWN,#lp + + movi TSEC*2,a11 + PUPWAITSWITCH PUNCH,#lp + PUPWAITSWITCH KICK,#lp + PUPWAITSWITCH BLOCK,#lp + + sll 5,a8 + addi p1powerup_request,a8 + + move *a8,a9,L + ori RING_OUTS_ON,a9 + move a9,*a8,L + + DIE + + +*********************************************************** +#* +;A8 = player side (0,1) + SUBRP no_ring_powerup_check +#lp + clr a11 + PUPWAITSWITCH UP,#lp + + movi TSEC*2,a11 + PUPWAITSWITCH RIGHT,#lp + PUPWAITSWITCH DOWN,#lp + PUPWAITSWITCH LEFT,#lp + + sll 5,a8 + addi p1powerup_request,a8 + + move *a8,a9,L + ori NO_RING,a9 + move a9,*a8,L + + DIE + + +*********************************************************** +#* +;A8 = player side (0,1) + + BSSX buddy_mode_checked,16 + + SUBRP buddy_mode_powerup_check + +#lp ;no buddy mode allowed if royal rumble. + move @royal_rumble,a14 + jrnz #die + + ;clear the too late flag + clr a14 + move a14,@buddy_mode_checked + + clr a11 + PUPWAITSWITCH BLOCK,#lp + + movi TSEC*2,a11 + PUPWAITSWITCH BLOCK,#lp + PUPWAITSWITCH BLOCK,#lp + PUPWAITSWITCH BLOCK,#lp + PUPWAITSWITCH BLOCK,#lp + + ;too late? + move @buddy_mode_checked,a14 + jrnz #die + + sll 5,a8 + addi p1powerup_request,a8 + + move *a8,a9,L + ori BUDDY_MODE,a9 + move a9,*a8,L + +#die DIE + + +*********************************************************** +#* +;A8 = player side (0,1) + SUBRP player_powerup_checker + + CREATE PU_CHECK_PID,no_block_powerup_check + CREATE PU_CHECK_PID,move_names_powerup_check + CREATE PU_CHECK_PID,drone_meters_powerup_check +; CREATE PU_CHECK_PID,no_ring_powerup_check ; Disable until we get blimp module + CREATE PU_CHECK_PID,hyper_match_powerup_check + CREATE PU_CHECK_PID,combos_powerup_check + CREATE PU_CHECK_PID,ring_out_powerup_check + CREATE PU_CHECK_PID,buddy_mode_powerup_check + + DIE + + +*********************************************************** +#* + SUBR powerup_check + + move @do_show_options,a14 + jrz #powerup_check_die + + clr a8 + move a8,@p1powerup_request,L + move a8,@p2powerup_request,L + + move a8,@blocking_off + move a8,@ring_out_on + move a8,@move_names_on + move a8,@drone_meters_on + move a8,@instant_combos_on + move a8,@hyper_speed_on + move a8,@no_ring_on + + .if POWERUP_CODE_ON + + CREATE PU_CHECK_PID,player_powerup_checker + + movk 1,a8 + CREATE PU_CHECK_PID,player_powerup_checker + +#powerup_check_die + .endif + + DIE + + +*********************************************************** +#* + SUBR get_powerups + move @p1powerup_request,a9,L ; Player 1 powerups + move @p2powerup_request,a10,L ; Player 2 powerups + move a10,a11 ; Save Player 2 powerups + and a9,a11 ; Get h/h only powerups + andi BOTH_P_MASK,a11 + andni BOTH_P_MASK,a9 + andni BOTH_P_MASK,a10 + or a11,a9 + or a11,a10 + move a9,@p1powerup_request,L + move a10,@p2powerup_request,L + or a9,a10 +;Both players must select these + move a9,a8 + andi BLOCKING_OFF,a8 + jrz #blocking_on + movi 2020h,a8 + jruc #set_blocking +#blocking_on + clr a8 +#set_blocking + move a8,@blocking_off + + move a9,a8 + andi COMBOS_ON,a8 + move a8,@instant_combos_on + + move a9,a8 + andi RING_OUTS_ON,a8 + move a8,@ring_out_on + + move a9,a8 + andi NO_RING,a8 + move a8,@no_ring_on + + ;this one is done earlier in the wrestle code! +; move a9,a8 +; andi BUDDY_MODE,a8 +; move a8,@buddy_mode_on + + move a9,a8 + andi HYPER_MATCH_ON,a8 + jrz #hyper_off + movi 1,a8 + jruc #set_hyper +#hyper_off + clr a8 +#set_hyper + move a8,@hyper_speed_on + +;Either player can select these + move a10,a8 + andi D_METERS_ON,a8 + move a8,@drone_meters_on + + rets + + + +*********************************************************** +#* + SUBR show_options + .if POWERUP_CODE_ON + + move @do_show_options,a9 + jrnz #ok_to_show_options + DIE +#ok_to_show_options + callr get_powerups + + clr a8 + move a8,@show_options_die + + CREATE0 show_player_options + + movk 1,a8 + CREATE0 show_player_options + +;Make sure combo meter starts flashing! + .ref SET_FLASHING + + move @instant_combos_on,a14 + jrz #no + + clr a10 + calla SET_FLASHING + movk 1,a10 + calla SET_FLASHING +#no + + SLEEP TSEC + + movi TSEC*2,a9 +#show_opt_wait + SLEEPK 1 + calla get_all_buttons_cur + jrnz #show_opt_done + dsjs a9,#show_opt_wait +#show_opt_done + movk 1,a8 + move a8,@show_options_die + + movi RPUBAROID,a0 + calla obj_del1c + movi LPUBAROID,a0 + calla obj_del1c + + clr a8 + move a8,@do_show_options + + .endif + DIE + + +*********************************************************** +#* + SUBRP pu_bar_text + .long NOBLOCKA ; Blocking off + .long INSTCOMB ; Combos on + .long RINGOUT ; Ring outs on + .long SANSRING ; No Ring + .long MOVNAMES ; Move names off + .long DRONMETR ; Drone meters off + .long HYPERSPD ; Hyper match on + .long BUDDY ; Buddy mode on + + +*********************************************************** +#* + SUBRP move_pu_bars_on + PUSHP a8,a9,a10,a11 + + movi PU_LEND_X,a11 ; Amount we gonna move em + + movi LPUBAROID,a9 ; Player 1 pu bar objects + movk PU_BAR_VELOCITY,a10 ; Player 1 bar velocity + move a8,a8 ; Are we player 1? + jrz #p1_pu_bars ; br = yes + movi RPUBAROID,a9 ; Player 2 pu bar objects + neg a10 ; Player 2 bar velocity +#p1_pu_bars + movi OBJLST,a14 ; Top of object list +#move_lp + move *a14,a14,L ; Get object pointer + jrz #list_end ; List end? - br = yes + move *a14(OID),a1 ; Get object ID + cmp a9,a1 ; Is this one I'm a lookin fer + jrnz #move_lp + + move *a14(OXPOS),a1 ; Get current X position + add a10,a1 ; Add velocity + move a1,*a14(OXPOS) ; Write it back + jruc #move_lp ; Go chck next + +#list_end + SLEEPK 1 ; Show em + + subk PU_BAR_VELOCITY,a11 ; Are we done? + jrnz #p1_pu_bars ; br = no + + PULLP a8,a9,a10,a11 + RETP + + + +*********************************************************** +#* +;a8 = player number + SUBRP show_player_options + move @PSTATUS,a9 + btst a8,a9 + jrz #spo_die + +fini_wait + move @in_finish_move,a14 ; Are we doing a finishing move ? + jrz fini_done ; br = no + SLEEPK 10 + jruc fini_wait +fini_done + + movi [PU_START_Y,0],a11 + + move a8,a9 + sll 5,a9 + addi p1powerup_request,a9 + move *a9,a9,L + + movk (NUM_POWERUPS-1),a10 +#pu_request + btst a10,a9 + jrz #no_pu + + clr a0 + movi DPLT_B_P,b0 + move a8,a8 + jrz #p1_xpos + movi DPLT_R_P,b0 + movi [399,0],a0 +#p1_xpos + move a11,a1 + movi BONUSBAR,a2 + movi 1800h,a3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 + move a8,a8 + jrnz #no_hflip + ori M_FLIPH,a4 +#no_hflip + movi LPUBAROID,a5 + move a8,a8 + jrz #p1_boid + movi RPUBAROID,a5 +#p1_boid + clr a6 + clr a7 + PUSH a8 + calla BEGINOBJP + PULL a8 + + movi [PU_LTEXT_XPOS,0],a0 + move a8,a8 + jrz #lpu_p1_text + movi [PU_RTEXT_XPOS,0],a0 +#lpu_p1_text + move a11,a1 + move a10,a2 + sll 5,a2 + addi pu_bar_text,a2 + move *a2,a2,L + movi 1810h,a3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 + movi LPUBAROID,a5 + move a8,a8 + jrz #p1_toid + movi RPUBAROID,a5 +#p1_toid + clr a6 + clr a7 + movi WINFONT,b0 + PUSH a8 + calla BEGINOBJP + PULL a8 + + addi [PU_BAR_YSPACE,0],a11 +#no_pu + subk 1,a10 + jrnn #pu_request + + JSRP move_pu_bars_on + +#wait_die + SLEEPK 1 + move @show_options_die,a14 + jrz #wait_die + +#spo_die + DIE + +********************************************************************** +#* + +MYOBJ_REC_SIZE .equ (16*11) +SIZEOF_JAM_STR .equ (16*10) + +MYOBJECT .macro x,y,z,img,ctrl,id,xv,yv + .word :x:,:y:,:z: + .long :img: + .word :ctrl:,:id: + .long :xv:,:yv: + .endm + + SUBRP BLACKOUT + .word 400,256,0,0 + .long 2000000h + .word 04000h + .even + + .ref ogmd10_ascii + .ref wsf14_ascii + .ref print_string_C2 + .ref RNDRNG0 + .ref setup_message + .ref mess_objid + .ref WSF_W_P + + SUBRP #mk3_tip_prompt1 + JAM_STR wsf14_ascii,10,0,200,30,WSF_R_P,print_string_C2 + .string "CONGRATULATIONS!!!",0 + .even + SUBRP #mk3_tip_prompt2 + JAM_STR ogmd10_ascii,10,0,200,70,SGMD8GLD,print_string_C2 + .string "YOU'VE ACHIEVED A LEVEL OF",0 + .even + SUBRP #mk3_tip_prompt4 + JAM_STR ogmd10_ascii,10,0,200,85,SGMD8GLD,print_string_C2 + .string "PERFORMANCE THAT ENTITLES YOU",0 + .even + SUBRP #mk3_tip_prompt5 + JAM_STR ogmd10_ascii,10,0,200,100,SGMD8GLD,print_string_C2 + .string "TO A TIP FOR MORTAL KOMBAT 3",0 + .even + + SUBRP #mk3_tip1_str1 + JAM_STR ogmd10_ascii,10,0,200,130,SGMD8BLU,print_string_C2 +; Compressed string "FOR TWO PLAYER GAMES, USE THE" + .byte 027h,03ch,007h,035h,00eh,007h,071h,02bh + .byte 0eah,0e6h,01ch,0a0h,0a2h,06bh,0d2h,04dh + .byte 060h,0d3h,066h,050h,0a7h,026h,000h + .even + SUBRP #mk3_tip1_str2 + JAM_STR ogmd10_ascii,10,0,200,145,SGMD8BLU,print_string_C2 +; Compressed string "FOLLOWING CODE TO ENABLE A" + .byte 027h,0dch,0b6h,030h,0aeh,0beh,068h,040h + .byte 0c2h,0a5h,019h,0d4h,070h,060h,0beh,0e2h + .byte 0d8h,09ah,081h,008h,000h + .even + SUBRP #mk3_tip1_str3 + JAM_STR ogmd10_ascii,10,0,200,160,SGMD8BLU,print_string_C2 +; Compressed string "SPECIAL FEATURE." + .byte 074h,06ch,092h,0aah,0d8h,006h,0a7h,029h + .byte 0d6h,0f6h,06ch,03eh,000h + .even + + + SUBRP #mk3_tip2_str1 + JAM_STR ogmd10_ascii,10,0,200,130,SGMD8BLU,print_string_C2 +; Compressed string "IN TWO PLAYER GAMES, ENTER" + .byte 0eah,01bh,0d4h,038h,01ch,0c4h,0adh,0a8h + .byte 09bh,073h,080h,08ah,0aeh,049h,037h,081h + .byte 0f9h,0d6h,0e6h,00ch,000h + .even + SUBRP #mk3_tip2_str2 + JAM_STR ogmd10_ascii,10,0,200,145,SGMD8BLU,print_string_C2 +; Compressed string "THE CODE BELOW TO TURN ON A" + .byte 075h,06ah,006h,024h,05ch,09ah,0c1h,068h + .byte 0b6h,030h,01eh,0d4h,070h,050h,0dbh,0f3h + .byte 01bh,0c0h,06fh,020h,002h + .even + SUBRP #mk3_tip2_str3 + JAM_STR ogmd10_ascii,10,0,200,160,SGMD8BLU,print_string_C2 +; Compressed string "HIDDEN FEATURE." + .byte 0a9h,05ah,096h,0e6h,01bh,09ch,0a6h,058h + .byte 0dbh,0b3h,0f9h,000h + .even + + + + SUBRP #mk_code1_1 + .word 127+2+(24*0),179,4010h ;x,y,z + .long I_GORO ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + SUBRP #mk_code1_2 + .word 127+2+(24*1),179,4010h ;x,y,z + .long I_SHOKAHN ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + SUBRP #mk_code1_3 + .word 127+2+(24*2),179,4010h ;x,y,z + .long I_SHOKAHN ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + SUBRP #mk_code1_4 + .word 127+2+(24*3),179,4010h ;x,y,z + .long I_QUESTION ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + SUBRP #mk_code1_5 + .word 127+2+(24*4),179,4010h ;x,y,z + .long I_YINYANG ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + SUBRP #mk_code1_6 + .word 127+2+(24*5),179,4010h ;x,y,z + .long I_YINYANG ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + + + + SUBRP #mk_code2_1 + .word 127+2+(24*0),179,4010h ;x,y,z + .long I_QUESTION ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + SUBRP #mk_code2_2 + .word 127+2+(24*1),179,4010h ;x,y,z + .long I_GORO ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + SUBRP #mk_code2_3 + .word 127+2+(24*2),179,4010h ;x,y,z + .long I_GORO ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + SUBRP #mk_code2_4 + .word 127+2+(24*3),179,4010h ;x,y,z + .long I_QUESTION ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + SUBRP #mk_code2_5 + .word 127+2+(24*4),179,4010h ;x,y,z + .long I_GORO ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + SUBRP #mk_code2_6 + .word 127+2+(24*5),179,4010h ;x,y,z + .long I_GORO ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + + SUBRP #mk_code_frame + .word 127,177,4000h ;x,y,z + .long BOX2 ;Image + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSMK3 + .long 0,0 + + SUBRP #mk_code_tbl1 + .long #mk_code1_1 + .long #mk_code1_2 + .long #mk_code1_3 + .long #mk_code1_4 + .long #mk_code1_5 + .long #mk_code1_6 + .long #mk_code_frame + .long 0 + + SUBRP #mk_code_tbl2 + .long #mk_code2_1 + .long #mk_code2_2 + .long #mk_code2_3 + .long #mk_code2_4 + .long #mk_code2_5 + .long #mk_code2_6 + .long #mk_code_frame + .long 0 + + SUBRP #mk3_tip1_str_tbl + .long #mk3_tip1_str1 + .long #mk3_tip1_str2 + .long #mk3_tip1_str3 + .long 0 + .long #mk_code_tbl1 + + SUBRP #mk3_tip2_str_tbl + .long #mk3_tip2_str1 + .long #mk3_tip2_str2 + .long #mk3_tip2_str3 + .long 0 + .long #mk_code_tbl2 + + + SUBRP #mk3_tip_str_tbl + .long #mk3_tip1_str_tbl + .long #mk3_tip2_str_tbl + + SUBRP #mk3_tip_prompt_str_tbl + .long #mk3_tip_prompt1 + .long #mk3_tip_prompt2 + .long #mk3_tip_prompt4 + .long #mk3_tip_prompt5 + .long 0 + + .bss resume,16 + + SUBRP suspend_game +#lp + move @resume,a10 + jrnz #ok_to_resume + SLEEPK 1 + callr suspend_all + jruc #lp +#ok_to_resume + DIE + + SUBRP mk3_coin + .long MKCOIN_01 + .long MKCOIN_02 + .long MKCOIN_03 + .long MKCOIN_04 + .long MKCOIN_05 + .long MKCOIN_06 + .long MKCOIN_07 + .long MKCOIN_08 + .long MKCOIN_09 + .long 0 + + SUBRP mk3_smoke + .long MKLIGHT1 + .long MKLIGHT2 + .long MKLIGHT3 + .long MKLIGHT4 + .long MKLIGHT5 + .long MKLIGHT6 + .long MKLIGHT7 + .long MKLIGHT8 + .long MKLIGHT9 + .long MKLIGHT10 + .long MKLIGHT11 + .long MKLIGHT12 + .long MKLIGHT13 + .long MKLIGHT14 + .long MKLIGHT15 + .long MKLIGHT16 + .long MKLIGHT17 + .long MKLIGHT18 + .long MKLIGHT19 + .long MKLIGHT20 + .long 0 + + .ref obj_aniq + +;a11 = [xpos,ypos] +;a10 = *img tbl +;a8 = flip/noflip + SUBRP anim_mk + move a10,a9 + move a11,a1 + sll 16,a1 + + srl 16,a11 + sll 16,a11 + move a11,a0 + move *a9+,a2,L + movi 4000h,a3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 + move a8,a8 + jrz #no_flip + ori M_FLIPH,a4 +#no_flip + movi CLSMK3,a5 + clr a6 + clr a7 + calla BEGINOBJ +#mk_anim_lp + SLEEPK 5 + move *a9+,a0,L + jrnz #do_mka + move a10,a9 + move *a9+,a0,L +#do_mka + move *a8(OCTRL),a1 + calla obj_aniq + jruc #mk_anim_lp + DIE + + + SUBR show_mk3_tip + +;Disabled until we get real tips from end + + clr a0 ; Make everyone wait + move a0,@resume + CREATE 4000h,suspend_game + SLEEPK 1 + + calla pal_clean + clr a10 + movk 16,a11 + CREATE FADE_PID|4000h,fade_down + SLEEPK 32 + .if MKDEBUG + clr a0 + move a0,@mk3_tip_number + .endif + + .ref display_blank + .if MKDEBUG +#reenter + .endif + calla display_blank + + clr a0 + clr a1 + movi BLACKOUT,a2 + movi 3ff0h,a3 + movi DMACNZ|DMACZ|M_3D|M_SCRNREL,a4 + movi CLSMK3,a5 + clr a6 + clr a7 + movi DPLT_R_P,b0 + calla BEGINOBJP + clr a0 + move a0,*a8(OCONST) + + movi [200,0],a0 + movi [254,0],a1 + movi TRADEMARK,a2 + movi 4000h,a3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 + movi CLSMK3,a5 + clr a6 + clr a7 + calla BEGINOBJ + + SLEEPK 1 + + clr a8 + movi [25,205],a11 + movi mk3_coin,a10 + CREATE 4001h,anim_mk + + clr a8 + movi [101,205],a11 + movi mk3_coin,a10 + CREATE 4001h,anim_mk + + clr a8 + movi [178,205],a11 + movi mk3_coin,a10 + CREATE 4001h,anim_mk + + clr a8 + movi [254,205],a11 + movi mk3_coin,a10 + CREATE 4001h,anim_mk + + clr a8 + movi [331,205],a11 + movi mk3_coin,a10 + CREATE 4001h,anim_mk + + clr a8 + movi [0,1],a11 + movi mk3_smoke,a10 + CREATE 4001h,anim_mk + + movk 1,a8 + movi [399,1],a11 + movi mk3_smoke,a10 + CREATE 4001h,anim_mk + + SLEEPK 1 + + movi #mk3_tip_prompt_str_tbl,a9 +#mk3_tp_loop + move *a9+,a2,L + jrz #mk3_tp_done + move a2,a10 + calla setup_message + movi CLSMK3,a0 + move a0,@mess_objid + addi SIZEOF_JAM_STR,a10 + move a10,a4 + calla print_string_C2 + jruc #mk3_tp_loop + +#mk3_tp_done + movk 1,a0 ; Get a random tip to show + calla RNDRNG0 + .if MKDEBUG + move @mk3_tip_number,a0 + .endif + sll 5,a0 + addi #mk3_tip_str_tbl,a0 + move *a0,a9,L ; a9 = *str table + +#mk3_t_loop + move *a9+,a2,L + jrz #mk3_tip_done + move a2,a10 + calla setup_message + movi CLSMK3,a0 + move a0,@mess_objid + addi SIZEOF_JAM_STR,a10 + move a10,a0 + callr decompress_string + .ref message_buffer + + movi message_buffer,a4 + calla print_string_C2 + SLEEPK 15 + jruc #mk3_t_loop + +#mk3_tip_done + move *a9,a2,L + jrz #no_code + move a2,a9 +#mk3_c_loop + move *a9+,a0,L + jrz #code_done + calla BEGINOBJ_TBL + jruc #mk3_c_loop +#code_done + CREATE 4001h,sparkle_frame + +#no_code + .ref display_unblank + calla display_unblank + .ref SNDSND + movk 16,a3 + calla SNDSND + + + .if MKDEBUG + movi TSEC*120,a9 + .else + SLEEP TSEC*2 ; Minimum amount of time to display it + + movi TSEC*8,a9 + .endif +#delay_loop ; Now wait on a button + SLEEPK 1 + calla get_all_buttons_cur + jrnz #mk3t_exit + dsjs a9,#delay_loop + +#mk3t_exit + movi 4001h,a0 + calla KIL1C + + movi CLSMK3,a0 + calla obj_del1c + + SLEEPK 10 ; Let em all die off + + .if MKDEBUG + move @mk3_tip_number,a14 + addk 1,a14 + andi 1,a14 + move a14,@mk3_tip_number + jruc #reenter + .endif + clr a10 + movk 16,a11 + CREATE 4000h|FADE_PID,fade_up + SLEEPK 31 + movk 1,a0 ; Set ok to resume game + move a0,@resume + + DIE + + +sparkle_img + .long SPRKLA01 + .long SPRKLA02 + .long SPRKLA03 + .long SPRKLA04 + .long SPRKLA05 + .long SPRKLA06 + .long SPRKLA07 + .long SPRKLA08 + .long SPRKLA09 + .long SPRKLA10 + .long SPRKLA11 + .long SPRKLA12 + .long SPRKLA13 + .long 0 + +; A9 = [x,y] + SUBRP anim_sparkle + + movi sparkle_img,a10 + + move a9,a0 + srl 16,a0 + sll 16,a0 + + move a9,a1 + sll 16,a1 + + move *a10+,a2,L + movi 4020h,a3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 + movi CLSMK3+10,a5 + clr a6 + clr a7 + movi SPARKL_P,b0 + calla BEGINOBJP + +spa_loop + SLEEPK 3 + move *a10+,a0,L + jrz sp_exit + move *a8(OCTRL),a1 + calla obj_aniq + move *a8(OXPOS),a1 + addk 2,a1 + move a1,*a8(OXPOS) + jruc spa_loop +sp_exit + calla DELOBJA8 + DIE + + + SUBRP sparkle_frame + + movi 121,a0 ; Get a random x starting position + calla RNDRNG0 + move a0,a9 + + movk 1,a0 ; Get a random top/bottom + calla RNDRNG0 + + sll 16,a9 ; Set X position + move a0,a0 ; top or bottom of frame ? + jrz #top ; br = top + ori 19,a9 ; Set bottom +#top + addi [127,177],a9 ; Adjust for frame position + CREATE 4000h,anim_sparkle ; Animate a frame sparkle + + movi TSEC,a0 ; Random Sleep before creating next sparkle + calla RNDRNG0 + addi TSEC,a0 ; Minimum of 1 second between sparkles + calla PRCSLP + jruc sparkle_frame + + DIE + +; +; A0 = *compressed string +; + SUBR decompress_string + PUSH a1,a2 + movi message_buffer,a1,L + pushst ; Save status + dint ; No interrupts during this + setf 6,0,0 ; Field size = 6 +#decompress_loop + move *a0+,a2 + jrz #decompress_done + addi 01fh,a2 + movb a2,*a1 + addk 8,a1 + jruc #decompress_loop +#decompress_done + popst + clr a0 + movb a0,*a1 + PULL a1,a2 + rets + + .if 0 + +hello_prompt + JAM_STR ogmd10_ascii,10,0,200,80,SGMD8GLD,print_string_C2 + .string "HELLO GAME DESIGNER!!!" + .byte 0,1 + .even +hello_prompt1 + JAM_STR ogmd10_ascii,10,0,200,110,SGMD8GLD,print_string_C2 + .string "MIDWAY GAME DESIGNERS" + .byte 0,1 + .even +hello_prompt2 + JAM_STR ogmd10_ascii,10,0,200,125,SGMD8GLD,print_string_C2 + .string "ARE THE WORLD'S BEST" + .byte 0,1 + .even +hello_prompt3 + JAM_STR ogmd10_ascii,10,0,200,140,SGMD8GLD,print_string_C2 + .string "GAME DESIGNERS!!!!!" + .byte 0,0 + .even + + + SUBRP hi_programmer + clr a0 ; Make everyone wait + move a0,@resume + CREATE 4000h,suspend_game + SLEEPK 1 + + calla pal_clean + clr a10 + movk 16,a11 + CREATE FADE_PID|4000h,fade_down + SLEEPK 32 + + .ref print_message + + movi hello_prompt,a2 + calla print_message + movi hello_prompt1,a2 + calla print_message + movi hello_prompt2,a2 + calla print_message + movi hello_prompt3,a2 + calla print_message + + DIE + + + SUBR prog_specials + + calla get_all_buttons_cur + jrz #no_prog + cmpi B_PUNCH|B_SPUNCH|B_KICK|B_SKICK,a0 + jrnz #no_prog + + move *a13(PROCID),a2 + ori 4000h,a2 + move a2,*a13(PROCID) + + CREATE 4000h,hi_programmer + SLEEP TSEC + movi TSEC*5,a2 +#wait_loop + PUSHP a2 + SLEEPK 1 + PULLP a2 + calla get_all_buttons_cur + jrnz #ps_exit + dsjs a2,#wait_loop +#ps_exit + movk 1,a0 ; Set ok to resume game + move a0,@resume + + move *a13(PROCID),a2 + andni 4000h,a2 + move a2,*a13(PROCID) + + clr a10 + movk 16,a11 + CREATE FADE_PID,fade_up + SLEEPK 31 +#no_prog + RETP + + +#si_table + .long 0006864bh ; MARK + .long 00a0cdeeh ; JASON + .long 00050565h ; JAKE + .long 0006a565h ; MIKE + .long 00053d0eh ; JOHN + .long 000029e5h ; JOE + .long 0001258ch ; BILL + .long 013a16c5h ; STEVE + .long 00004c2ch ; SAL + .long 00053e68h ; JOSH + .long 000395c5h ; GENE + .long 013406eeh ; SHAWN + .long 000000a4h ; ED + .long 0072be47h ; GEORG + .long 00525d2eh ; EDWIN + .long 00d0c970h ; MARKP + .long 000a3dd9h ; TONY + .long 0 + +; A4 = *beginning of string +; A0 = character to add +; +; Returns +; Z - Special Inits +; NZ - Not Special Inits +; + SUBR are_special_inits + PUSH a0,a1,a2,a4,a5,a6 + move a4,a6 + subk 8,a6 +#recheck1 + addk 8,a6 + move a6,a4 + movb *a6,a2 + jrz #not_special_inits1 + clr a1 +#get_inits_loop1 + movb *a4,a2 + jrz #recheck1 + cmpi 20h,a2 + jrz #not_alpha1 + cmpi 21h,a2 + jrz #not_alpha1 + cmpi 19h,a2 + jrz #not_alpha1 + sll 5,a1 + subi 40h,a2 + andi 1fh,a2 + or a2,a1 + callr #check_it1 +#not_alpha1 + addk 8,a4 + jruc #get_inits_loop1 +#gi_done1 + +#check_it1 + PUSH a4 + movi #si_table,a4 + clr a0 +#check_dw_loop1 + move *a4+,a5,L + jrz #check_done1 + cmp a1,a5 + jrz #is_special + jruc #check_dw_loop1 +#check_done1 + PULL a4 + rets + +#is_special + PULL a4,a14 ; This sucks don't change this + movk 1,a0 ; or it will break + jruc #aid_exit1 +#not_special_inits1 + clr a0 +#aid_exit1 + move a0,a0 + PULL a0,a1,a2,a4,a5,a6 + rets + + .endif + + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP.BAT b/BACKUP.BAT new file mode 100755 index 0000000..6f6cc5f --- /dev/null +++ b/BACKUP.BAT @@ -0,0 +1,16 @@ +@xcopy /A *.asm \modified +@xcopy /A *.equ \modified +@xcopy /A *.bat \modified +@move \backup\back8.zip \backup\back9.zip +@move \backup\back7.zip \backup\back8.zip +@move \backup\back6.zip \backup\back7.zip +@move \backup\back5.zip \backup\back6.zip +@move \backup\back4.zip \backup\back5.zip +@move \backup\back3.zip \backup\back4.zip +@move \backup\back2.zip \backup\back3.zip +@move \backup\back1.zip \backup\back2.zip +@del mc* +@del mk*.bat +@del *.axx +pkzip -i -x*.lst -x*.out -x*.obj -x*.tbl -x*.glo \backup\back1.zip \video\wwf\*.* + \ No newline at end of file diff --git a/BACKUP/ADAM.ASM b/BACKUP/ADAM.ASM new file mode 100644 index 0000000..697c78f --- /dev/null +++ b/BACKUP/ADAM.ASM @@ -0,0 +1,1740 @@ +************************************************************** +* +* 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 + \ No newline at end of file diff --git a/BACKUP/ADAMIMG.ASM b/BACKUP/ADAMIMG.ASM new file mode 100644 index 0000000..6f12de4 --- /dev/null +++ b/BACKUP/ADAMIMG.ASM @@ -0,0 +1,18 @@ + .FILE "adamimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include adamimg.tbl + .include adamimg.h + +****************************************************************************** + + .even + .include "adam.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/BACKUP/ADAMIMG.H b/BACKUP/ADAMIMG.H new file mode 100644 index 0000000..fcae403 --- /dev/null +++ b/BACKUP/ADAMIMG.H @@ -0,0 +1,79 @@ + .global A4AH4C + .global A2AH2A + .global A4AM4B + .global A2AM2A + .global A3AE4A + .global A3AE2A + .global A4BK3C + .global A2BK3B + .global A4LB4A + .global A2LB2B + .global A3CP3A + .global A3CP3D + .global A3FH3A + .global A3FD3B + .global A3GU4A + .global A3GU2A + .global A4KM3C + .global A2KM3A + .global A4NM3A + .global A2NM3A + .global A4BG3A + .global A2BG3A + .global A4MP4B + .global A3DC3B + .global A3GD4A + .global A3GD2A + .global A2JT2A + .global A4BF3A + .global A3BF3A + .global A3ZM3C + .global A4GH3A + .global A3PD3A + .global A4FG3A + .global A4GR3B + .global A2FG3A + .global A2GR3Z + .global A3RL1A + .global A4PM4A + .global A4SB4A + .global A4GF3A + .global A4SW4A + .global A3PO4B + .global A4UT4Z + .global A4UT4Y + .global A3LC3A + .global A3RC3A + .global A4UP3A + .global A2UP3A + .global A4OT3A + .global A4UT3A + .global A4MK3B + .global A4SC5B + .global A2SC1A + .global A2PU3G + .global A4PU3B + .global A4PU3C + .global A2PU3D + .global A4BC3A + .global A2BC3B + .global A4PS3A + .global A2PS3A + .global A4HT3A + .global A3PJ3B + .global A2PJ2C + .global A2ST2D + .global A2TW2Z + .global A2WL1A + .global A2WL2B + .global A2WL8B + .global A3BO3A + .global A3RN3A + .global A4ST4J + .global A4TW4Z + .global A4WL2B + .global A4WL4A + .global A4WL5B + .global A1TT5Z + .global A1TR5Z + .global A2CT2B diff --git a/BACKUP/ADJUST.ASM b/BACKUP/ADJUST.ASM new file mode 100644 index 0000000..1bca52b --- /dev/null +++ b/BACKUP/ADJUST.ASM @@ -0,0 +1,3704 @@ +************************************************************** +* +* Software: ? +* Initiated: ? +* +* Modified: Shawn Liptak, 1/22/92 -Total carnage cleanup +* Shawn Liptak, 2/20/92 -Basketball cleanup +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 2/20/92 21:25 +************************************************************** + .file "adjust.asm" + .width 132 + .option b,d,l,t + .mnolist + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "game.equ" + .include "link.equ" + .include "menu.equ" + .include "dip.equ" + .include "macros.h" + .include "sound.h" + + .include "fontsimg.glo" + + .text + +* IN THIS MODULE + + .DEF GO_ADJ + .DEF DO_ADJH + .DEF BCDBIN + .DEF BINBCD + .DEF SET_COIN_ADJ, MEN_ADJ, CKDIP, TAMPEREDP + + .globl CLR_MAIN + .globl ADJ_INST + .globl CADJ_BOX + .globl CLR_CUR + .globl DO_BIG_LINE + + .ref _switch_map_mode + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref ST_STICK + .ref L_MESS + .ref MESS_MM + .ref GET_ADJ + .ref GET_CSPT + .ref NO_CREDS + .ref GET_FAC + .ref MENU_TOP + .ref HTOHXASC + .ref STRCNRM + .ref ANY_BUT + .ref PUT_ADJ + .ref CS_ENTS + .ref STD_BORD + .ref CMOS_VAL + .ref LM_FINIS + .ref INIT_HSR + .ref LM_SETUP + .ref CRED_P + .ref B_MENU + .ref BLNKAREA + .ref GETSTICK + .ref P_FORK + .ref LD_CTAB + .ref STRLNRM + .ref RD7FONT + .ref READ_DIP + .ref HEXTOASC + .ref F_ADC_S + .ref BLNKHELP + .ref COL_INST + .ref H_SLAVE + .ref STRRNRM + .ref CLR_SCRN + +****************************************************************************** + + + +******************************** +* Adjustment menu requested.....make sure CMOS is ok! + +GO_ADJ + MOVI MEN_ADJ,A8 + +GEN_ADJUST + MOVE A8,-*A12,L ;PUSH MENU ON STACK + + CALLA CMOS_VAL ;CHECK OUT THE REGION + JRZ SET_OK ;ITS OK.....CONTINUE.... + + JSRP GET_FAC ;BRING TO FACTORY SETTINGS OR QUIT. + JSRP ANY_BUT + + CALLA CMOS_VAL ;CAN'T GO IF WE'RE NOT OK NOW + JRNZ GO_ADQ ;ITS NOT VALID....NO ADJUSTING! + +SET_OK + MOVK 1,A0 + MOVE A0,-*A12,W ;LIKE GEN_MENU...KEEP NUMBER ON STACK + +ADJ_LOOP + CALLA CLR_SCRN ;CLEAR THE SCREEN! + + MOVI ADJ_ADV,A8 + JSRP L_MESS ;PRINT THE NEW INSTRUCTIONS + + MOVE *A12(WORD_SIZE),A8,L ;GET THE MENU + JSRP MENU_TOP ;PRINT OUT THE TOP. + MOVI COLOR_RED,A9 + CALLA COL_INST ;PUT UP A DIFFERENT INSTR. BOX + + MOVE *A12,A9,W ;GET INDEX TO USE. + JSRP B_MENU ;FETCH THE ENTRY TO ADJUST. + +* EACH ADJUSTMENT HAS A STRUCTURE ASSOCIATED WITH IT. +* A9 RETURNS A STRUCTURE FOR THE ITEM SELECTED. + + MOVE A9,A9 ;0 IS RETURN TO MAIN MENU + JRZ GO_ADJX + +* A8 HAS THE MENU NUMBER.....UNLIKE GEN_MENU...DON'T STEP! + + MOVE A8,*A12,W ;PUT IT SAFELY ON OUR STACK. + + MOVE *A9(AD_ROUT),A0,L ;GET THE ROUTINE TO CALL FOR ACTIVATION + MOVI ADJ_LOOP,A7 + MOVE A7,-*A12,L ;PUSH RETURN ADDRESS + JUMP A0 ;"CALL THE ROUTINE (PASSING STRUCT IN A9) + +GO_ADJX + addk WORD_SIZE,a12 ;"pop" the position indicator +GO_ADQ + addk LONG_SIZE,a12 ;Pop menu + RETP ;OK...RETURN! + +************************************************************************** +* * +* PRICE_ADJ * +* * +* THIS IS EXECUTED WHEN THE "CUSTOM PRICING" ENTRY IS * +* SELECTED FOR ADJUSTMENT FROM THE ADJUSTMENT MENU. * +* * +* IT CREATES A WHOLE NEW ADJUSTMENT MENU CONTIAING: * +* * +* * +* LEFT SLOT UNITS * +* CENTER SLOT UNITS * +* RIGHT SLOT UNITS * +* UNITS / CREDIT * +* UNITS / BONUS * +* MINIMUM UNITS * +* CREDITS TO START * +* CREDITS TO CONTINUE * +* SHOW CREDIT FRACTIONS * +* COINS PER DOLLAR * +* FREE PLAY * +* MAXIMUM CREDITS * +* COIN PAGE HELP * +* * +************************************************************************** +PRICE_ADJ + MOVI MEN_CUST,A8 ;HANDLE JUST LIKE MAIN ADJ. MENU + JAUC GEN_ADJUST + +MULT_ADJ + MOVI MEN_MULT,A8 ;HANDLE JUST LIKE MAIN ADJ. MENU + JAUC GEN_ADJUST + +************************************************************************** +* * +* GEN_ADJ * +* * +* THIS IS THE ROUTINE THAT IS EXECUTED TO DO * +* THE ADJUSTING ONCE A BUTTON IS CLICKED ON * +* AN ADJUSTMENT. * +* * +* A9 -> ADJUSTMENT STRUCTURE! * +* * +************************************************************************** +GEN_ADJ: + movk 2,a0 ;Adjusting switch mapping mode + move a0,@_switch_map_mode,L + MOVE A9,*A13(PDATA),L ;SAVE THE STRUCTURE POINTER + + MOVE A9,A8 ;GET TO GENERAL POINTING REGISTER + JSRP DO_IN_WHITE ;GO FROM LF TO WHITE RIGHT AWAY. + +; JSRP ADJ_DOOR ;CAN'T DO IT UNLESS DOOR IS OPEN. + MOVE A0,A0 + JRNZ ADJ_CAN ;CANCELLED +* + CALLR CLR_MAIN ;CLEAR OUT THE MAIN MENU REGION + CALLR ADJ_INST ;PUT INSTRUCTIONS AT BOTTOM. + JSRP ST_STICK ;LOCKOUT STUCK SWITCHES + + SLEEPK 2 ;STOP RACE ON INSTRUCTIONS +ADJ_CHNG + SLEEPK 1 ;NOW LOOP ON STICK...EXIT + + MOVI 31000H,A5 ;TYPOMATIC....BOT HALF SAYS DON'T TIME OUT +* ;TOP HALF IS TICKS PER HIT + JSRP GETSTICK ;ASK THE STICK HANDLER....... + MOVE *A13(PDATA),A8,L ;GET OUR POINTER + MOVE A0,A1 ;KEEP GETSTICK VALUE + JRZ ADJ_CHNG ;ITS ZERO....NO MORE WORK NEEDED + + MOVE *A8(AD_CMOS),A0,W ;GET ADJ NUMBER + MOVE A0,A2 ;COPY FOR LATER + + CALLR GET_EADJ ;READ IT OUT (FIXING ZERO IF NEC) + MOVE A0,A3 ;SAVE "OLD" VALUE +* +* A0 = ADJUSTMENT VALUE +* A1 = GET_STICK VALUE +* A2 = ADJUSTMENT NUMBER +* A3 = ADJUSTMENT VALUE READ! +* A8 = ADJUSTMENT STRUCTURE POINTER +* + CMPI 3,A1 ;BUTTON......BACK TO ADJ MENU! + JRZ ADJ_BUTT ;YEP....WE'RE OUT OF HERE. + + CMPI 2,A1 + JRZ ADJ_DOWN ;ITS DOWN.... +* +* REQUEST TO GO UP.... +* + CALLR INC_ADJ ;INCREMENT IT + JRUC ADJ_JOIN + +ADJ_DOWN: + CALLR DEC_ADJ ;DECREMENT IT +ADJ_JOIN: + MOVE A2,A0 ;ADJUSTMENT NUMBER + CALLR GET_EADJ ;READ IT OUT (FIXING ZERO IF NEC) + CMP A0,A3 ;DID IT NOT CHANGE? + JRZ ADJ_CHNG ;NOPE....NO ACTION! +* +* IT CHANGED....WE NEED TO BEEP AND RE-PLOT LOWER +* PORTION TO REFLECT NEW SETTING. +* + movi beep1_snd,a3 + calla SNDSND + JSRP DO_IN_WHITE ;AND UPDATE THE ADJUSTMENT + + JRUC ADJ_CHNG ;AND LOOP! + +DO_IN_WHITE + CALLR CLR_CUR ;CLEAR OUT CURRENT SETTING + MOVI COLOR_WHITE,A11 ;THEY'RE STARING....NO HEADACHES + JAUC AD_CRVAL ;PRINT THE NEW VALUE + +ADJ_BUTT: + movi beep2_snd,a3 + calla SNDSND +ADJ_CAN: + movk 1,a0 + move a0,@_switch_map_mode,L + RETP + +************************************************************************** +* * +* DEC_ADJ * +* * +* THIS IS CALLED TO MOVE TO THE PREVIOUS VALUE. * +* A0 = VALUE READ FROM CMOS * +* A2 = ADJUSTMENT NUMBER (TO WRITE IT BACK) * +* A8 = ADJUSTMENT STRUCTURE POINTER. * +* * +* INC_ADJ IS USED TO STEP TO THE NEXT VALUE * +* * +************************************************************************** +DEC_ADJ: + MMTM SP,A0,A1,A2,A3 + MOVE A0,A3 ;COPY ORIGINAL VALUE + MOVE *A8(AD_DELTA),A1,L ;GET UNITS BETWEEN VALUES + CALLR MAKE_BIN_IF_NEC ;CHANGE RADIX FOR MATH IF NECESSARY + SUB A1,A0 ;REMOVE THIS FROM READ VALUE + JRUC FINISH_CHANGE ;GO TO COMMON ROUTINE TO WRAP IT UP + +INC_ADJ: + MMTM SP,A0,A1,A2,A3 + MOVE A0,A3 ;COPY ORIGINAL VALUE + MOVE *A8(AD_DELTA),A1,L ;GET UNITS BETWEEN VALUES + CALLR MAKE_BIN_IF_NEC + ADD A1,A0 ;REMOVE THIS FROM READ VALUE + +FINISH_CHANGE: + CALLR BCD_IF_NEC ;BACK TO BCD AFTER THE MATH + CALLR PUT_IN_RANGE ;ADJUST TO ACCOUNT FOR WRAP AND LIMITS + MOVE *A8(AD_ZEQU),A1,L ;This number becomes zero + CMP A0,A1 ;is this the number? + JRNZ FC_NZ ;NOPE...STORE IT! + CLR A0 ;USE ZERO IN PLACE OF THIS NUMBER! + +FC_NZ: + MOVE A0,A1 ;WRITING REG + MOVE A2,A0 ;ADJUSTMENT NUMBER + CALLA PUT_ADJ ;WRITE IT BACK +* +* SEE IF WE'RE DOING MASTER COINAGE. +* + CMP A1,A3 ;DID THE NUMBER CHANGE? + JRZ NOT_COIN ;NOPE...DON'T LOAD IT UP! +* +* AT THIS POINT WE KNOW THAT THE VALUE BEING ADJUSTED CHANGED. +* + CALLR DIRTY_IF_NEC ;IF ITS A COIN VALUE TAKE NOTE! + + CMPI ADJPRICE,A0 ;IS IT? + JRNZ NOT_COIN ;NOT COIN + + CALLA LD_CTAB ;BATCH WRITE THE VALUES IN! + CALLA NO_CREDS ;REMOVE CREDITS AND FRACTIONS WHEN + CALLA CRED_P ;LINK-OUT! +* ;MODE CHANGES + +NOT_COIN: + CALLA F_ADC_S ;MAKE CHECKSUM VALID! + MMFM SP,A0,A1,A2,A3 + RETS + +************************************************************************** +* * +* DIRTY_IF_NEC * +* * +* THIS IS CALLED BY ALL ADJUSTMENTS WHEN THEY ACTUALLY * +* CHANGE THEIR VALUE. FOR THE COINAGE ADJUSTMENTS, * +* IF ANY OF THE 1ST 6 VALUES ARE TOUCHED WE NEED TO MAKE * +* * +* ADJ1ST6 = ZERO. * +* * +* IF ANY OF THE 1ST 8 VALUES ARE TOUCHED WE NEED TO MAKE * +* * +* ADJVIRGIN = ZERO. * +* * +* THE AD_FLAGS FIELD IN THE ADJUSTMENT STRUCTURE HAVE BITS * +* INDICATING WHICH (IF ANY) SHOULD BE DIRTYED. * +* * +************************************************************************** +DIRTY_IF_NEC + + MMTM SP,A0,A1,A2 + MOVE *A8(AD_FLAGS),A2,W ;FETCH THE FLAGS + + BTST VIRG_BIT,A2 ;DOES CHANGING THIS SAY SET VIRG BIT. + JRZ NOT_1ST_8 ;NOPE + + movk ADJVIRGIN,a0 + CLR A1 + CALLA PUT_ADJ + +NOT_1ST_8 + BTST SIX_BIT,A2 ;1ST 6? + JRZ NOT_1ST_6 + + movk ADJ1ST6,a0 + CLR A1 + CALLA PUT_ADJ +NOT_1ST_6 + BTST HSR_BIT,A2 ;HIGH SCORE RESET NUM? + JRZ NOT_HSR ;NOPE + + CALLA INIT_HSR ;IT WAS CHANGED....STUFF THE VALUE! + +NOT_HSR + MMFM SP,A0,A1,A2 + RETS + +************************************************************************** +* * +* MAKE_BIN_IF_NEC * +* * +* THIS IS CALLED AFTER THE A0 HAS THE ADJUSTMENT AND * +* A1 HAS THE AMOUNT TO ADD OR SUBTRACT. IF WE'RE * +* DOING BCD MATH THEN CONVERT BOTH A0 AND A1. * +* * +************************************************************************** +MAKE_BIN_IF_NEC: + MMTM SP,A2 + MOVE *A8(AD_FLAGS),A2,W ;GET THE FLAGS + BTST BCD_BIT,A2 ;BCD? + JRZ MBINX ;NOPE + + CALLA BCDBIN ;CONVERT A0 TO BINARY + MOVE A0,A2 ;SAVE + MOVE A1,A0 ;NOW A1 + CALLA BCDBIN + MOVE A0,A1 + MOVE A2,A0 ;NOW PUT A0 BACK +MBINX: + MMFM SP,A2 + RETS + +************************************************************************** +* * +* BCD_IF_NEC * +* * +* A0 HAS A RESULT OF THE ADJUSTMENT.....IN BINARY. * +* CONVERT BACK TO BCD IF THAT'S THE MODE. * +* * +************************************************************************** +BCD_IF_NEC: + MMTM SP,A2 + MOVE *A8(AD_FLAGS),A2,W ;GET THE FLAGS + BTST BCD_BIT,A2 ;BCD? + JRZ BINX ;NOPE + + CALLA BINBCD ;BACK TO BCD + +BINX: + MMFM SP,A2 + RETS + +ADJ_CASH + .WORD >F7A5-10H,8,>8085,0 ;CASH REGISTER SOUND +ADJ_LBEEP +ADJ_BEEP .WORD >F3F7-10H,>20,>8081,0 ;BEEP TONE + +************************************************************************** +* * +* CLR_CUR * +* * +* THIS IS CALLED TO CLEAR OUT THE AREA WHERE THE * +* "CURRENT SETTING" IS BEING DISPLAYED. * +* * +************************************************************************** +CLR_CUR: + MMTM SP,A3,A4 + MOVI AM_HX,A3 ;THIS IS LEFT MARGIN OF HELP AREA + + MOVI CUR_LRX,A4 ;RIGHT X + SUB A3,A4 ;A4 HAS X DISTANCE + + ADDI ADJ_ULY*10000H,A3 ;UPPER LEFT Y + ADDI (256-ADJ_ULY)*10000H,A4 ;Y GOES TO BOTTOM OF SCREEN + CALLA BLNKAREA ;ITS BLANK NOW! + MMFM SP,A3,A4 + RETS + +************************************************************************** +* * +* CLR_MAIN * +* * +* THIS IS CALLED TO CLEAR OUT THE ADJUSTMENT MENU AND * +* THE CYAN INSTRUCTIONS FOR THIS MENU. * +* * +************************************************************************** +CLR_MAIN + MMTM SP,A3,A4 + MOVI TIT_ULX,A3 ;LEFT EDGE + MOVI AM_HX,A4 ;UP TO THIS EDGE + SUB A3,A4 ;X'S ARE SET. + ADDI INST_ULY*10000H,A3 ;TOP Y + ADDI (400-INST_ULY)*10000H,A4 ;Y DISTANCE + CALLA BLNKAREA + MMFM SP,A3,A4 + RETS + +************************************************************************** +* * +* ADJ_DOOR * +* * +* PRINT MESSAGE THAT DOOR MUST BE OPENED TO CONTINUE. * +* HOLD CONTROL TILL BUTTON IS PRESSED (CANCELLING) * +* OR DOOR IS OPEN. * +* * +* RETURN A0 = 0 MEANS DOOR GOT OPENED. * +* A0 .NE 0 FOR BUTTON PRESSED. * +* * +************************************************************************** +;ADJ_DOOR: +; CALLA CK_DOOR ;IS THE DOOR OPEN? NZ=OPEN +; JRNZ DORET ;YEP.......RETURN A0=0 +; +; CALLA CLR_MAIN ;CLEAR THE SCREEN +; MOVI CUR_ULY,A10 ;PLOT TO SQUARE UP WITH "CURRENT SETTING" +; CALLA ADINBOX ;PUT A NICE BOX AROUND IT. +; MOVI MESS_OPEN_OR_CANCEL,A8 +; JSRP L_MESS ;GIVE INSTRUCTIONS +; JSRP ST_STICK ;GET "STARTING STATE" + +;WD1 +; SLEEPK 1 ;NAP A BIT + +; CALLA CK_DOOR +; JRNZ DORET ;ITS OPEN...RETURN OK + +; MOVI 40010H,A5 ;TYPOMATIC PARMS +; JSRP GETSTICK ;CHECK BUTTONS +; CMPI 3,A0 ;BUTTON? +; JRNZ WD1 ;NOT YET + +; SOUND1 ADJ_LBEEP ;MAKE A BEEP. +; MOVK 3,A0 ;RETURN A0 .NE. 0 +* +* RETURN A0=3 +* +; RETP + +* RETURN A0=0 (CONTINUE) +* +;DORET: +; CLR A0 +; RETP + + +* +************************************************************************** +* * +* ADJ_INST * +* * +* THIS IS CALLED TO PUT AN INSTRUCTION BOX OUT * +* WHILE ADJUSTMENT IS TAKING PLACE. * +* * +************************************************************************** +ADJ_INST: + MOVE *A13(PDATA),A8,L ;PASS THE ADJUSTMENT POINTER + MOVI ADJ_INST_P,A7 + CALLA P_FORK ;START IT UP! + RETS + +************************************************************************** +* * +* ADJ_INST_P * +* * +* THIS IS CALLED TO PUT INSTRUCTIONS FOR ADJUSTMENT * +* MODIFICAITION UP AND FLASH THE ARROW (IF ITS NOT * +* TOO ANNOYING) * +* * +************************************************************************** + +ADJ_INST_P: + JSRP ADJUSTING ;PUT UP "ADJUSTING DIFFICULTY" MESSAGE + + MOVE A10,A3 ;STASH # OF ARROWS WHERE IT WILL BE SAFE + CALLR ADINBOX ;PUT THE BOX OUT + + MOVI INST_TO_ADJ,A8 + JSRP L_MESS ;PRINT OUT INSTRUCTIONS + + MOVI ADJ_ARROW,A8 + JSRP L_MESS + + JAUC SUCIDE + +************************************************************************** +* * +* ADINBOX * +* * +* THIS PUTS A BOX AROUND THE ADJUSTMENT INSTRUCTIONS. * +* * +************************************************************************** +* +INBOX_HEIGHT EQU 7BH + +ADINBOX: + MMTM SP,A10 + MOVI CUR_ULY-2,A10 + SLL 16,A10 + MOVI TIT_ULX,A4 ;UPPER RIGHT X + MOVY A10,A4 ;UPPER RIGHT + + MOVI AM_RX,A5 + MOVY A10,A5 ;START WITH BASE Y + ADDI INBOX_HEIGHT*10000H,A5 + + CALLR WH_BORD + MMFM SP,A10 + RETS + +************************************************************************** +* * +* ADJUSTING * +* * +* THIS IS CALLED WHEN WE ENTER THE "ADJUSTING" PHASE * +* IT PUTS A BOX IN THE LEFT AREA TO SAY WHAT WE ARE ADJUSTING. * +* * +************************************************************************** +ADJUSTING: + MOVE A8,A2 ;PUT ADJUSTMENT BLOCK PTR WHERE ITS SAFE + MOVI (CUR_ULY-31H)*10000H,A4 ;FOR DO_BORDER + ADDI TIT_ULX,A4 ;A4 IS REASONABLY EASY + + MOVI ((CUR_ULY-2)+MB_YWID)*10000H,A5 ;OVERLAP THE ONE BELOW IT + ADDI AM_RX,A5 ;THIS IS RIGHT EDGE + + CALLR WH_BORD ;DO A WHITE BORDER + + MOVI MES_ADNAME,A8 ;PUT THE ADJUSTMENT NAME UP + CALLA LM_SETUP + MOVE *A2(AD_MAIN),A8,L ;GET THE MAIN MENU MESSAGE + JSRP LM_FINIS + + MOVI MES_ADJUSTING,A8 + JSRP L_MESS + RETP + +MULT_VAL + CLR A4 + movk 6,a1 ;Setup a box for our 3 lines + CALLR PADJ_BOX ;(a10 is set as y for the 3 lines) + + MOVI M_MULTVAL,A8 + MOVI COLOR_DECAY,A11 + JSRP PRINT_SMALL_LINE ;HEADER FOR COIN SLOT VALUE + + MOVI COLOR_WHITE,A11 ;DON'T GLOW INSIDE BOX IF THAT'S THE MODE + ADDK 15,A10 + MOVI M_MULTVAL1,A8 + MOVI ADJLTOTMULT,A0 + JSRP ADJ_LEFT_RIGHT + + ADDK 11,A10 + MOVI M_MULTVAL2,A8 + MOVI ADJRTOTMULT,A0 + JSRP ADJ_LEFT_RIGHT + + ADDK 11,A10 + MOVI M_MULTVAL3,A8 + MOVI ADJCTOTMULT,A0 + JSRP ADJ_LEFT_RIGHT + + ADDK 11,A10 + MOVI M_MULTVAL4,A8 + MOVI ADJXTOTMULT,A0 + JSRP ADJ_LEFT_RIGHT + + ADDK 11,A10 + MOVI M_MULTVAL5,A8 + MOVI ADJBTOTMULT,A0 + JSRP ADJ_LEFT_RIGHT + + RETP + +************************************************************************** +* * +* PARAM_VAL * +* * +* This is called to summarize the values of the * +* important adjustments on the parameter page. * +* * +************************************************************************** +* +* WE WILL PRING OUT 3 LINES IN A BOX. +* +* 1) Pricing: +* 2) Free Play: yes/no +* 3) Maximum Credits: +* + +PDY EQU HELP_DY +PMARG EQU 6 + +PARAM_VAL + movk 5,a1 ;Setup a box for our 3 lines + CALLR ADJ_BOX ;(a10 is set as y for the 3 lines) + +; addk 6,a10 ;Push to center 5 lines in box + + CALLR GET_COIN_TITLE ;COIN MODE + MOVI MESS_GP,A8 + JSRP SMALL_LEFT_RIGHT ;PRINT THE LINES + + ADDI PDY,A10 ;PUSH TO NEXT LINE + + MOVI M_NO,A2 ;ASSUME "NO" + movk ADJFREPL,a0 + CALLA GET_ADJ ;GET THE FREE PLAY ADJUSTMENT + JRZ NOT_FREE + MOVI M_YES,A2 + +NOT_FREE + MOVI MESS_FP,A8 + JSRP SMALL_LEFT_RIGHT ;PRINT THE LINES + + ADDI PDY,A10 ;PUSH TO NEXT LINE + + movk ADJMAXC,a0 + MOVI MESS_MAX,A8 + JSRP ADJ_LEFT_RIGHT ;A0 = ADJUST A8 = MESSAGE +* +* CREDITS TO START AND CONTINUE NEEDS TO HANDLE PLURAL ETC. +* + ADDI PDY,A10 ;PUSH TO NEXT LINE + movk ADJCSTRT,a0 ;Get credits required to start + MOVI M_CTS_PL,A8 + JSRP ADJ_LEFT_RIGHT ;A0 = ADJUST A8 = MESSAGE +* +* NOW THE CREDITS TO CONTINUE +* + ADDI PDY,A10 ;PUSH TO NEXT LINE + movk ADJCCONT,a0 ;Get credits required to continu + MOVI M_CTC_PL,A8 + JSRP ADJ_LEFT_RIGHT ;A0 = ADJUST A8 = MESSAGE + + RETP + +************************************************************************** +* * +* ADJ_LEFT_RIGHT * +* * +* A8 HAS MESSAGE * +* A0 HAS ADJUSTMENT * +* A10 HAS HEIGHT. * +* * +* LEFT JUSTIFY A8 MESSAGE * +* RIGHT JUSTIFY A0 ADJUSTMENT (AFTER READING IT) * +* * +************************************************************************** +ADJ_LEFT_RIGHT + MOVE A8,A3 ;STASH MESSAGE + + CALLA GET_ADJ + MOVE A0,A8 + CALLA HEXTOASC ;A8 POINTS TO NUMBER STRING + + MOVE A8,A2 + MOVE A3,A8 ;GET MESSAGE IN A8 + + JRUC SMALL_LEFT_RIGHT + +************************************************************************** +* * +* SMALL_LEFT_RIGHT * +* * +* THIS IS CALLED TO PRINT A LEFT AND RIGHT JUSTIFIED * +* PAIR OF STRINGS IN THE "CURRENT SETTING BOX" * +* * +* A2 = RIGHT JUSTIFIED STRING * +* A8 = LEFT JUSTIFIED STRING TO PRINT * +* A10 = Y VALUE * +* * +************************************************************************** +SMALL_LEFT_RIGHT + MMTM A12,A11,A6,A10,A9,A3 + + MOVI COLOR_WHITE,A6 ;SOLID WHITE FOR THESE MULTI-LINERS + MOVI RD7FONT,A11 ;USE BABY FONT + + MOVI AM_HX+PMARG,A9 ;LEFT X IS INSIDE LEFT LINE + + MOVE A10,A3 ;SAVE Y IN A3 + SLL 16,A3 + MOVY A3,A9 ;POINTER SET! + + MOVI SPACING07,A10 + + CLR A0 + + JSRP STRLNRM ;DO IT! + + MOVE A2,A8 ;GET RIGHT JUSTIFIED STRING + MOVI TIT_LRX-PMARG,A9 ;INSIDE RIGHT MARGIN + MOVY A3,A9 ;AT OUR Y + JSRP STRRNRM ;PRINT IT! + + MMFM A12,A11,A6,A10,A9,A3 + RETP + +************************************************************************** +* * +* COIN_SET * +* * +* THIS IS THE ROUTINE THAT IS CALLED TO DISPLAY THE CURRENT * +* COINAGE SETTINGS. * +* * +* A8 HAS POINTER TO ADJUSTMENT BLOCK * +* A11 HAS THE COLOR TO USE * +* * +************************************************************************** +COIN_SET + CALLR TAMPEREDP ;HAS THE 1ST 6 COIN VALUE BEEN TAMPERED WITH? + JRZ SBO ;YEP....SMALL BOX ONLY! + +; movk 8,a1 ;Big box for outside +; CALLR ADJ_BOX +;SBO +; movk 1,a1 ;Draw a box to hold 1 line +; CALLR ADJ_BOX ;DRAW THE BOX....PASS BACK 1ST PLOT LINE + + CALLR CLR_CUR + MOVI 6,A1 ;BIG BOX FOR OUTSIDE + MOVK 5,A4 ; GROSS KLUDGE TO OFFSET BOX + CALLR CADJ_BOX +SBO MOVI 1,A1 ;DRAW A BOX TO HOLD 1 LINE + CLR A4 + CALLR CADJ_BOX ;DRAW THE BOX....PASS BACK 1ST PLOT LINE + + MOVI [ADJ_CULY+5,AM_HX+5],A3 + MOVI [21,185],A4 + CALLA BLNKAREA + MOVI [ADJ_CULY+31,AM_HX+5],A3 + MOVI [58,185],A4 + CALLA BLNKAREA + +* THE ABOVE 2 CALLS SHOULD CREATE A BOX LIKE: +* +* 浜様様様様様様様様様 +* U.S.A. 1 +* 才様様様様様様様様様 +* 1 COIN / 1 CREDIT +* +* +* 25c $1.00 25c +* 藩様様様様様様様様様 +* +* A10 HAS THE PLACE TO PLOT THE TITLE LINE. +* + SUBK 5,A10 + MOVE A10,A4 ;KEEP THE Y HANDY. + + + CALLR GET_COIN_TITLE ;GET TITLE FOR BIG BOX IN A2. + +* A2 HAS STRING +* A10 IS Y TO PRINT +* A11 IS COLOR + +COIN_TIT + JSRP DO_BIG_LINE ;PRINT THIS LINE! + + MOVI COLOR_WHITE,A11 ;DON'T GLOW INSIDE BOX IF THAT'S THE MODE + + CALLR TAMPEREDP ;HAS THE 1ST 6 COIN VALUE BEEN TAMPERED WITH? + JRZ NO_INFO ;YEP....JUST GIVE THE STARTS AND CONTINUES + + ADDK 11,A10 + SLL 16,A10 + PUSHP A10 ;SAVE Y POSITION + + CALLA GET_CSPT ;A6 POINTS AT THE CSELECT BLOCK + MOVE *A6(CS_LIST),A2,L ;FETCH POINTER TO MESSAGE LIST + JRZ NO_HEADERS ;NO LIST! + + MOVI COIN_HEAD_Y,A10 ;AT THIS HEIGHT + +NEXT_HEADER + MOVE *A2+,A8,L + JRZ NO_HEADERS ;HEADERS ARE OUT...CONTINUE + + JSRP PRINT_SMALL_LINE ;PRINT THE LINE + addk 12,a10 ;Push to next line + JRUC NEXT_HEADER + +NO_HEADERS + MOVI M_SLOTVAL,A8 + MOVI MESS_CTS,A10 ;SET Y FOR COIN SLOT LINE. + movi >1212,a11 ;Med blue + JSRP PRINT_SMALL_LINE ;HEADER FOR COIN SLOT VALUE + + CALLA GET_CSPT ;A6 POINTS AT THE CSELECT BLOCK + MOVE *A6(CS_SLOTS),A8,L ;PRINT COIN SLOT INFO + addk 12,a10 ;Push y up for a gap + JSRP PRINT_SMALL_LINE ;PRINT THE LINE + + MOVI TOST_MESS,A8 + CALLA LM_SETUP + PUSH A0 + MOVE *A12,A0,L + MOVY A0,A9 + MOVI ADJCSTRT,A0 ; CREDITS TO START + CALLA GET_ADJ + MOVE A0,A8 + PULL A0 + CALLA HEXTOASC + JSRP LM_FINIS + + MOVI TOCONT_MESS,A8 + CALLA LM_SETUP + PUSH A0 + MOVE *A12,A0,L + MOVY A0,A9 + MOVI ADJCCONT,A0 ; CREDITS TO START + CALLA GET_ADJ + MOVE A0,A8 + PULL A0 + CALLA HEXTOASC + JSRP LM_FINIS + + MOVI TOSTOC_MESS,A8 + CALLA LM_SETUP + PULLP A3 + MOVY A3,A9 + JSRP LM_FINIS + + +NO_INFO + RETP ;DONE FOR NOW + +TOSTOC_MESS + MESS_MAC RD7FONT,SPACING07,AM_HX+116,0,COLOR_WHITE,STRCNRM,0 + .STRING "TO START. TO CONTINUE.",0 + .EVEN + +TOST_MESS + MESS_MAC RD7FONT,SPACING07,AM_HX+27,0,COLOR_WHITE,STRRNRM,0 + +TOCONT_MESS + MESS_MAC RD7FONT,SPACING07,AM_HX+110,0,COLOR_WHITE,STRRNRM,0 + +************************************************************************** +* * +* GET_COIN_TITLE * +* * +* THIS IS CALLED TO FETCH THE CHARACTER STRING MESSAGE * +* FOR THE CURRENT COIN MODE. IF ITS STANDARD, THEN * +* IT IS FETCHED BASED ON THE COIN SELECT TABLE. * +* * +* IF THE 1ST 6 PARAMETERS HAVE BEEN MODIFIED, THEN * +* IT RETURNS THE STRING "NON-STANDARD". * +* * +************************************************************************** +GET_COIN_TITLE + PUSH a6 + + CALLA GET_CSPT ;A6 POINTS AT THE CSELECT BLOCK + MOVI MESS_DIP,A2 + CALLR CKDIP + JRZ gctx + + MOVI MESS_TAMPERED,A2 + movk ADJ1ST6,a0 ;Non-standard title if 1st 6 modified + CALLA GET_ADJ + jrz gctx ;Changed? + MOVE *A6(CS_TITLE),A2,L ;GET THE CSELECT TITLE FOR ITS VALUES + +gctx PULL a6 + RETS + +************************************************************************** +* * +* TAMPEREDP * +* * +* HAVE THE COIN PARAMETERS BEEN TAMPERED WITH. * +* THIS IS NON-ZERO IF ANY OF THE 1ST 6 COIN * +* PARAMETERS HAVE BEEN ADJUSTED. * +* * +************************************************************************** +TAMPEREDP + PUSH a0 + movk ADJ1ST6,a0 ;Just check the 1st 6 + CALLA GET_ADJ ;HAS IT BEEN TAMPERED WITH (0 MEANS YES) + MMFM SP,A0 + RETS + +CKDIP + CALLA READ_DIP + ANDI DPUSECMOS,A0 + MOVE A0,A0 + RETS + +************************************************************************** +* * +* SET_COIN_ADJ * +* * +* SET THE COIN ADJUSTMENT STUFF FROM WHATEVER IS POINTED TO BY * +* A6 * +* * +* ENTRY * +* A6 POINTER TO THE FIRST 6 ADJUSTMENTS ( SORT OF ) * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +SET_COIN_ADJ: + MMTM SP,A0,A1,A6,A7 + MOVI ADJLMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJRMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJXMULT,A0 ; NEW ADDITION, FOLKS! + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJDBVMULT,A0 ; NEW ADDITION, FOLKS! + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCUNIT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJBUNIT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJMUNIT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCSTRT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCCONT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCDIV,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJFRAC,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + PUSH A6 + MOVI ADJLTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJRTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJXTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJBTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + PULL A6 + + movk ADJVIRGIN,a0 ;THIS SAYS 1ST 8 UNTOUCHED. + movk 1,a1 + calla PUT_ADJ + + movk ADJ1ST6,a0 ;THIS SAYS 1ST 6 UNTOUCHED. + movk 1,a1 + calla PUT_ADJ ;DONE! + + CALLA F_ADC_S ; KEEP THE WORLD A HAPPY PLACE + + MMFM SP,A0,A1,A6,A7 + RETS + +************************************************************************** +* * +* PRINT_SMALL_LINE * +* * +* THIS IS CALLED TO PRINT A LINE IN THE "CURRENT SETTING" * +* BOX FOR THE COINAGE. * +* * +* A8 = STRING TO PRINT * +* A10 = Y VALUE * +* A11 = COLOR * +* * +* PRINT IN THE 7 POINT FONT WITH X CENTERED FOR THE * +* HELP SYSTEM. * +* * +************************************************************************** +PRINT_SMALL_LINE + MMTM A12,A11,A6,A10,A9 + + MOVE A11,A6 ;COLOR SET + MOVI RD7FONT,A11 ;USE BABY FONT + + MOVI AM_HX,A9,W ;GET LEFT X + CALLR LEFT_TO_CENTER ;CONVERT IT + + MOVE A10,A0 + SLL 16,A0 + MOVY A0,A9 ;POINTER SET! + + MOVI SPACING07,A10 + + CLR A0 + + JSRP STRCNRM ;DO IT! + + MMFM A12,A11,A6,A10,A9 + RETP + + +******************************** +* DO_ADJH +* +* THIS IS CALLED TO PLOT THE RIGHT HALF OF THE SCREEN +* FOR EACH ADJUSTMENT AS THE USER SELECTS THEM ON +* THE ADJUSTMENT MENU. +* +* THE FORMAT IS AS FOLLOWS: +* +* 浜様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様 +* A D J U S T M E N T M E N U +* ROBO REVISION 1.4 +* 藩様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様 +* 浜様様様様様様様様様様様様様様 浜様様様様様様様様様様様様様様様様融 +* SELECT BLAH BLAH BLAH GAME DIFFICULTY +* 藩様様様様様様様様様様様様様様 藩様様様様様様様様様様様様様様様様夕 +* 浜様様様様様様様様様様様様様様 浜様様様様様様様様様様様様様様様様融 +* THIS CONTROLS THE OVERALL +* GAME PRICING DIFFICULTY OF GAME PLAY. +* =======GAME DIFFICULTY======= +* LIVES PER PLAY RANGE OF SETTINGS: 1-9 +* POWER-UPS PER PLAY +* EXTRA MAN EVERY EASIEST SETTING: 1 +* LAST EXTRA MAN HARDEST SETTING: 9 +* ATTRACT-MODE SOUND FACTORY SETTING: 3 +* AUTO HIGH SCORE RESET 藩様様様様様様様様様様様様様様様様夕 +* VIOLENCE LEVEL +* RETURN TO MAIN MENU +* +* 浜様様様様様様様様様様様様様様様様融 +* +* 9 - EXTRA HARD +* +* 藩様様様様様様様様様様様様様様 藩様様様様様様様様様様様様様様様様夕 +* +* +* ON ENTRY....A1 POINTS AT THE 3 WORDS FOR CURRENT +* MENU ENTRY. +* +DO_ADJH +* +* FIRST WE BLANK OUT THE AREA...WE NEED TO DO THIS FROM +* THE MENU PROCESS SINCE THE RIGHT EDGE IS DETERMINED BY +* MENU PDATA STUFF. IT WILL RETURN IN A9 THE MARGIN WE +* SHOULD WORK FROM. +* + CALLA BLNKHELP ;BLANK OUT THE AREA WE'RE PLOTTING! + MOVE A1,A8 ;PASS THE STRUCTURE POINTER TO NEW PROCESS! + MOVI AD_SLAVE,A7 + CALLA P_FORK ;THIS CREATES IT! + RETS ;NOW RETURN TO MENU HANDLER! + +************************************************************************** +* * +* AD_SLAVE * +* * +* THIS IS FORKED TO PLOT THE RIGHT SIDE...IT HAS * +* ITS OWN PDATA AREA FOR INFO STORAGE. * +* * +* A8 = POINTER TO THE MENU SELECTION 3 LONG-WORD ENTRY * +* A9 = LEFT X MARGIN FOR OUR WORK. * +* * +************************************************************************** +ADS_STRUCT EQU PDATA ;LONG-POINTER TO ADJUSTMENT STRUCTURE +ADS_LX EQU ADS_STRUCT+LONG_SIZE ;WORD-LEFT X TO WORK FROM +ADS_CX EQU ADS_LX+WORD_SIZE ;WORD-CENTER X FOR WORK + +AD_SLAVE: + MOVE *A8(MENU_ROUTINE),A11,L ;NOW WE HAVE OUR SPECIAL STRUCTURE! + MOVE A11,*A13(ADS_STRUCT),L ;STASH IT...WE'LL NEED IT + MOVE A9,*A13(ADS_LX),W ;ALSO THE X..... + + MOVE A9,A4 ;COPY LEFT FOR BORDER ROUT + CALLR LEFT_TO_CENTER + + MOVE A9,*A13(ADS_CX),W ;STASH THE CENTER +* +* A4 = UPPER LEFT Y,X +* A5 = LOWER RIGHT Y,X +* A0 = Y,X WIDTH OF BORDER +* A9 = COLOR OF BORDER. +* + ADDI INST_ULY*10000H,A4 ;ADD IN THE Y + MOVI (INST_LRY*10000H)+TIT_LRX,A5 ;THIS IS OTHER EDGE. + MOVI COLOR_WHITE,A9 + CALLA STD_BORD ;ADJUSTMENT BORDER IS UP. + + MOVI ADJT_SETUP,A8 + CALLA LM_SETUP ;SETUP TO PRINT TITLE + + MOVE *A13(ADS_CX),A2,W ;GET THE X + MOVX A2,A9 ;SUBSTITUTE OUR X IN. + + MOVE *A13(ADS_STRUCT),A2,L ;GET STRUCTURE POINTER + MOVE *A2(AD_TITLE),A8,L ;GET MESSAGE POINTER + + JSRP LM_FINIS ;BOX AND TITLE ARE UP. + + MOVE *A2(AD_HELP),A8,L ;HELP STRUCTURE + CALLR CKDIP + JRNZ ADSSKIP + CMPI HELP_PRICE,A8 ; PRICING HELP + JRZ ADSDIP + CMPI HELP_PARAM,A8 ; PARAMETER HELP + JRZ ADSDIP + CMPI HELP_FREE,A8 ; FREEPLAY HELP + JRNZ ADSSKIP +ADSDIP + MOVI HELP_DIP,A8 +ADSSKIP + + MOVE *A13(ADS_LX),A9,W ;LEFT X FOR HELP BOX + MOVI INST_LRY+BOX_YGAP,A10 ;THIS IS HELP BOX POSITION + ADDI 10000H,A10 ;FLAG THAT THIS IS TOP..NOT CENTER! + + MOVI H_SLAVE,A7 ;FORK OFF SO IT CAN USE PDATA! + CALLA P_FORK ;START UP ANOTHER W/ SAME ID +* +* NOW WE NEED TO SHOW THE CURRENT SETTING ON THE LOWER HALF OF +* THE SCREEN. +* + MOVE *A13(ADS_STRUCT),A8,L ;GET THE ADJUSTMENT STRUCTURE + MOVI COLOR_LF,A11 ;INDICATE STANDARD COLOR. + JSRP AD_CRVAL ;PRINT SCREEN SHOWING THE CURRENT VALUE + + JAUC SUCIDE ;OUR JOB IS DONE!...EXIT + +************************************************************************** +* * +* LEFT_TO_CENTER * +* * +* THIS IS CALLED TO FIND THE CENTER POINT FOR A BOX BASED ON * +* THE LEFT PASSED IN A9. CENTER X RETURNED IN A9. * +* * +************************************************************************** +LEFT_TO_CENTER: + ADDI TIT_LRX,A9 ;FIND BOX CENTER + SRL 1,A9 ;NOW WE HAVE THE CENTER + ADDI C_KLUDGE,A9 ;MAKE IT CENTER CORRECTLY + RETS + +************************************************************************** +* * +* AD_CRVAL * +* * +* THIS IS CALLED TO PRINT THE CURRENT VALUE FOR ANY * +* ADJUSTMENT. THE VALUE SHOULD BE PRINTED AND BOXED * +* IN THE LOWER RIGHT REGION UNDER THE "CURRENT SETTING" * +* HEADER. * +* * +* A8 -> ADJUSTMENT STRUCTURE * +* A11 -> COLOR TO USE * +* ADJ_LEFX (GLOBAL RAM) CONTAINS LEFT MARGIN FOR THIS. * +* * +************************************************************************** + +AD_CRVAL: + MOVE *A8(AD_NAMEIT),A0,L ;FETCH THE "NAME-IT" ROUTINE + JUMP A0 ;AND "JSRP" THAT ROUTINE + +************************************************************************** +* * +* HEX_OR_MESS * +* * +* THIS IS CALLED FOR THE EXTRA MAN EVERY...AND * +* "LAST EXTRA MAN" ADJUSTMENTS. IT PRINTS OUT * +* THE HEX ADJUSTMENT WITH COMMAS, OR PRINTS * +* THE MESSAGE STORED AT A8(AD_NAMPTR) ON ITS LOWEST VALUE. * +* * +* ****** NOTE THAT "BIN_OR_MESS" (BELOW) USES PARTS OF THIS! * +* * +************************************************************************** +HEX_OR_MESS + PUSH a8 + + CALLR ADJ_STUFF ;GET THE REGGIES FIXED UP. + +* NOW A0 HAS THE ADJUSTMENT....FORM THE C-STRING + + MOVE *A8(AD_MIN),A1,L ;GET MINIMUM VALUE + CMP A0,A1 ;ARE WE AT MINIMUM? + JRNZ NOT_MIN ;NOPE + +AT_MIN MOVE *A8(AD_NAMPTR),A8,L ;GET THE MESSAGE POINTER + JRUC PRT_MIN + +NOT_MIN MOVE A0,A8 + MOVK 1,A3 ;INDICATE COMMAS ARE DESIRED + CALLA HTOHXASC ;CONVERT A8 TO THIS NUMBER + +PRT_MIN MOVE A8,A2 + PULL a8 + + JSRP DO_BIG_LINE ;NOW PRINT IT OUT + RETP ;AND RETURN + +************************************************************************** +* * +* BIN_OR_MESS * +* * +* THIS IS CALLED TO PRINT A BINARY NUMBER OR * +* A MESSAGE AT A8(AD_NAMPTR) IF IT IS AT MINIMUM. * +* * +************************************************************************** +BIN_OR_MESS: + MMTM SP,A8 ;PRESERVE A8 PLEASE + + CALLR ADJ_STUFF ;GET THE REGGIES FIXED UP. +* +* NOW A0 HAS THE ADJUSTMENT....FORM THE C-STRING +* + MOVE *A8(AD_MIN),A1,L ;GET MINIMUM VALUE + CMP A0,A1 ;ARE WE AT MINIMUM? + JRZ AT_MIN ;YEP.....PRINT "OFF" + + CALLA BINBCD ;TURN TO BCD PLEASE + JRUC NOT_MIN ;AND NOW PRINT WITH COMMAS. + +************************************************************************** +* * +* JUST_BIN * +* * +* THIS IS CALLED TO PRINT OUT THE ADJUSTMENT * +* (STORED IN BINARAY) IN DECIMAL. * +* * +************************************************************************** +JUST_BIN: + MMTM SP,A8 ;PRESERVE A8 PLEASE + + CALLR ADJ_STUFF ;GET THE REGGIES FIXED UP. +* +* NOW A0 HAS THE ADJUSTMENT....FORM THE C-STRING +* + CALLA BINBCD ;TURN IT TO BCD! + JRUC NOT_MIN + +************************************************************************** +* * +* LIST_1LINE * +* * +* THIS IS CALLED TO DO A 1 LINE LISTING OF MESSAGES * +* ASSOCAITED WITH THE CURRENT ADJUSTMENT. * +* A8 = STRUCTURE * +* A11 = COLOR OF TEXT INSIDE BOX. * +* * +************************************************************************** +LIST_1LINE + CALLR ADJ_STUFF ;GET THE REGGIES FIXED UP. + + MOVE *A8(AD_MAX),A1,L ;IS IT TOO HIGH? + CMP A1,A0 ;COMPARE TO ADJUSTMENT + JRLS L1L1 ;IN RANGE..... +* +* ADJUSTMENT IS TOO HIGH...DON'T GO THROUGH TABLE! +* + MOVI M_NULL,A2 ;USE NULL POINTER + JRUC L1L2 + +L1L1 + MOVE *A8(AD_MIN),A1,L ;GET THE LOWEST VALUE + SUB A1,A0 ;THIS IS OFFSET + MOVK LONG_SIZE,A1 ;THIS MANY LONG WORDS + MPYU A0,A1 ;THIS IS OFFSET INTO TABLE + MOVE *A8(AD_NAMPTR),A0,L ;THIS IS TABLE BASE + + CMPI DO_FREE,A8 ; IS IT A FREEPLAY ITEM + JRNZ LIGO + PUSH A0 + CALLA CKDIP ; CHECK FOR DIP SWITCH SETTING + MMFM SP,A0 + JRNZ LIGO + MOVI LIST_DIPNOYES,A0 +LIGO + + ADD A1,A0 ;A0 HAS THE TEXT OF THE SINGLE LINE + MOVE *A0,A2,L ;GET THE VECTOR +* +* TEXT POINTER IN A2 +* COLOR IN A11 +* Y IN A10 +* +L1L2 + JSRP DO_BIG_LINE ;PRINT OUT THIS LINE + RETP ;NOW RETURN + +************************************************************************** +* * +* ADJ_STUFF * +* * +* THIS IS CALLED BY THE ROUTINES THAT DISPLAY * +* ADJUSTMENTS. IT PLOTS THE BOX AND RETURNS: * +* * +* A10 = HEIGHT FOR 15 POINT SINGLE TEXT LINE * +* A0 = ADJUSTMENT WITH ZERO SUBSTITUTION COMPLETED. * +* * +************************************************************************** +ADJ_STUFF + movk 1,a1 ;Indicate 2 puny lines (for our big one) + CALLR ADJ_BOX ;DRAW THE BOX....PASS BACK 1ST PLOT LINE +* +* A10 HAS Y HEIGHT OF 1ST ENTRY. +* + MOVE *A8(AD_CMOS),A0,W ;GET ADJUSTMENT NUMBER + CALLR GET_EADJ ;FETCH THE CURRENT VALUE. + + jruc PUT_IN_RANGE ;IF ITS OUT OF RANGE, FIX IT! + +************************************************************************** +* * +* DO_BIG_LINE * +* * +* THIS IS CALLED TO DO A SINGLE LINE FOR AN ADJUSTMENT * +* "CURRENT ADJUSTMENT" BOX. * +* * +* A2 = POINTER TO TEXT * +* A10 = Y COORDINATE * +* A11 = COLOR * +* * +* X LEFT COORDINATE IS IN GLOBAL "ADJ_LEFX" * +* * +************************************************************************** +DO_BIG_LINE + MMTM A12,A10,A11,A8 ;SAVE STUFF FOR CALLER + MOVE A11,A6 + MOVI AM_HX,A9,W ;GET LEFT X + CALLR LEFT_TO_CENTER ;CONVERT IT + SLL 16,A10 ;SHIFT Y DOWN + MOVY A10,A9 ;X,Y SET + MOVE A2,A8 ;TEXT POINTER + CLR A0 ;NO SLEEP + MOVI SPACING20,A10 + MOVI RD7FONT,A11 + JSRP STRCNRM ;DO IT! + MMFM A12,A10,A11,A8 ;POP THE STUFF. + RETP + +************************************************************************** +* * +* GET_EADJ * +* * +* THIS IS LIKE GET_ADJ, HOWEVER IF ZERO COMES OUT, * +* WE CHECK TO SEE IF THERE IS A LOGICAL NUMBER TO * +* PASS OUT IN PLACE OF THE ZERO. * +* * +* A8 POINTS AT THE ADJUSTMENT STRUCTURE. * +* * +************************************************************************** +GET_EADJ + MMTM SP,A1 + CALLA GET_ADJ ;FETCH THE ADJUSTMENT + JRNZ GET_EA1 ;ITS NOT ZERO....RETURN +* +* ITS ZERO....SEE IF THERE'S A VALUE TO SUB +* + MOVE *A8(AD_ZEQU),A1,L ;IS THERE A SUB VALUE? + JRZ GET_EA1 ;NOPE...RETURN THE ZERO (AND FLAG) + + MOVE A1,A0 ;RETURN THE SUBSTITUTE VALUE +GET_EA1 + MMFM SP,A1 + RETS + +************************************************************************** +* * +* PUT_IN_RANGE * +* * +* THIS IS CALLED TO TAKE AN ADJUSTMENT AND MAKE SURE * +* IT HAS A VALID VALUE. IF ITS BETWEEN THE MIN AND MAX * +* (INCLUSIVE) ALLOWED, THEN WE RETURN WITH NO ACTION. * +* * +* IF ITS OUTSIDE, THEN WE SET IT ACCORDING TO THE * +* "WRAP_AROUND" PARAMETER. * +* * +* A0 HAS ADJUSTMENT VALUE * +* A8 POINTS AT ADJUSTMENT STRUCTURE. * +* * +* RETURN NEW VALUE IN A0. * +* * +************************************************************************** +PUT_IN_RANGE: + MMTM SP,A1,A2,A3 + MOVE *A8(AD_MIN),A1,L ;GET MINIMUM + MOVE *A8(AD_MAX),A2,L ;GET MAXIMUM + MOVE *A8(AD_FLAGS),A3,W ;ARE WE WRAPPING AROUND + BTST WRAP_BIT,A3 ;WELL? + JRNZ CK_WRAP ;YEP....USE A FANCY HANDLER. + + CMP A1,A0 ;ARE WE TOO LOW? + JRHS NOT_LO +* +* ITS TOO LOW.....USE MINIMUM +* +USE_LO: + MOVE A1,A0 + +* +* WE'RE NOT WRAPPING AROUNG....IF ITS MEGA-HIGH....KEEP IT +* AT THE LOW BOUNDARY. +* +NOT_LO: + CMPI 090000000H,A0 + JRHI USE_LO ;USE THE LOW VALUE! + + CMP A2,A0 + JRLS PIRX + +USE_HI: + MOVE A2,A0 + JRUC PIRX +* +* WE NEED TO WRAP FROM LOWEST TO HIGHEST +* +CK_WRAP: + CMPI 090000000H,A0 ;IN THIS RANGE, WE MUST HAVE WRAPPED DOWN + JRHI USE_HI ;SO USE HIGH VALUE + + CMP A1,A0 ;IS IT LOWER THAN LO? + JRLO USE_HI ;IT IS ....USE THE HIGH ONE. + + CMP A2,A0 ;IS IT TOO HIGH? + JRHI USE_LO ;IT IS....USE THE LOW ONE. + +PIRX: + MMFM SP,A1,A2,A3 + RETS + +************************************************************************** +* * +* ADJ_BOX * +* * +* A1 HAS NUMBER OF LINES FOR ADJUSTMENT * +* RETURN A10 AT Y IF 1ST LINE OF BOX. * +* * +************************************************************************** +CADJ_BOX + MMTM SP,A4,A5,A0,A9 + MOVI ADJ_CULY,A10 + JRUC ADJ_ENT + +PADJ_BOX + MMTM SP,A4,A5,A0,A9 + MOVI ADJ_PULY,A10 + JRUC ADJ_ENT +ADJ_BOX MMTM SP,A4,A5,A0,A9 +* + MOVI ADJ_ULY,A10 ;THIS IS TOP OF BOX + CLR A4 + +ADJ_ENT + CMPI 2,A1 + JRNZ ADJ_ENT_NORMAL + MOVK 8,A5 ; 1 LINER KLUDGE + JRUC ADJ_ENT_GO +ADJ_ENT_NORMAL + MOVI HELP_DY,A5 ;DISTANCE PER ENTRY + MPYU A1,A5 ;DISTANCE FOR ALL ENTRIES +ADJ_ENT_GO + ADD A4,A5 ; FIX IT UP A LITTLE + ADDI HELP_Y_MARGIN+(MB_YWID*2)+HELP_YLO_MARGIN,A5 + +;ADJ_BOX +; MMTM SP,A4,A5,A0,A9 + +; MOVI HELP_DY,A5 ;DISTANCE PER ENTRY +; MPYU A1,A5 ;DISTANCE FOR ALL ENTRIES +; ADDI HELP_Y_MARGIN+(MB_YWID*2)+HELP_YLO_MARGIN,A5 +* +* A5 NOW CONTAINS FULL HEIGHT OF BOX +* +; MOVI ADJ_ULY,A10 ;THIS IS TOP OF BOX +* +* NOW FORM UPPER LEFT IN A4 +* + MOVE A10,A4 ;MOVE Y OVER + SLL 16,A4 ;MAKE ROOM FOR X + ADDI AM_HX,A4 ;PUT IN THE X...THIS IS UPPER LEFT! + + ADD A10,A5 ;ADD BASE TO OFFSET + SLL 16,A5 ;PUT IN Y POSITION + ADDI TIT_LRX,A5 ;ADD IN THE X FOR THE CORNER +* +* NOW ADJUST FROM TOP OF BOX TO POSITION OF +* 1ST ENTRY. +* + ADDI MB_YWID+HELP_Y_MARGIN,A10 ;Y OF 1ST ENTRY +* +* A10 IS NOW SET FOR RETURN VALUE +* + MOVI COLOR_YELLOW,A9 ;MAKE THESE BOXES YELLOW + + CALLA STD_BORD + MMFM SP,A4,A5,A0,A9 + RETS + +WH_BORD + MMTM SP,A9 + MOVI COLOR_WHITE,A9 + CALLA STD_BORD + MMFM SP,A9 + RETS +; +************************************************************************** +* * +* BINBCD * +* * +* CONVERT BINARY NUMBER IN A0 TO BCD. * +* * +************************************************************************** +BINBCD MMTM SP,A1,A2,A3,A4,A5 + CMPI 99999999,A0 ;ARE WE TOO BIG? + JRLS BBIR ;IN RANGE + MOVI 99999999H,A0 ;RETURN THE LARGEST NUMBER WE HAVE! + JRUC BB_RET + +BBIR MOVK 10,A1 ;ALWAYS DIVIDE BY A0 + CLR A5 ;ACCUMULATE RESULT IN A5 + CLR A4 ;A4 HAS CURRENT SHIFT COUNT + MOVE A0,A3 ; HAS NUMERATOR +DO_BCD_AGAIN + CLR A2 + DIVU A1,A2 ;A2 HAS LEFTOVER...A3 HAS CURRENT DIGIT + SLL A4,A3 ;SHIFT IT CORRECT NUMBER OF TIMES + ADD A3,A5 ;ADD IT INTO RESULT REG + ADDK 4,A4 ;ADD 4 TO SHIFT COUNT + MOVE A2,A3 ;REFRESH NUMERATOR + JRNZ DO_BCD_AGAIN + + MOVE A5,A0 ;PUT OUT RESULT +BB_RET MMFM SP,A1,A2,A3,A4,A5 + RETS + +************************************************************************** +* * +* BCDBIN * +* * +* THIS TURNS A BCD NUMBER (IN A0) INTO A BINARY * +* NUMBER. * +* * +************************************************************************** +BCDBIN MMTM SP,A1,A2,A3,A4,A5 ;WORK REGGIES. + CLR A2 ;ACCUMULATE IN A2 + movk 1,a3 ;Current factor is 1. + movk 10,a4 ;Save some movi insts later + movk 16,a5 ;Divide it down by 16 at a time +BCBLOOP MOVE A0,A1 ;DIVIDEND IN + JRZ BCBDONE ;ALL UNITS EXHAUSTED! + CLR A0 + DIVU A5,A0 ;DIVIDE BY 10H...(REMAINDER IN A1) + MPYU A3,A1 ;TIMES POSITION FACTOR + ADD A1,A2 ;INTO ACCUMULATION REGISTER + MPYU A4,A3 ;NEXT DIGIT IS WORTH 10 TIMES THIS ONE + JRUC BCBLOOP + +BCBDONE MOVE A2,A0 ;RETURN RESULT IN A0 + MMFM SP,A1,A2,A3,A4,A5 ;WORK REGGIES. + RETS + + +**** DATA SECTION BEGINS **** + + .DATA +* +* GAME ADJUSTMENT +* +* THE FOLLOWING STRUCTURES ARE FOR EACH ADJUSTMENT +* +* AD_ROUT EQU 0 ;LONG...ROUTINE TO RUN WHEN SELECTED. +* AD_TITLE EQU AD_ROUT+LONG_SIZE ;LONG...POINTER TO TITLE FOR RIGHT COLUMN +* AD_HELP EQU AD_TITLE+LONG_SIZE ;LONG...POINT TO HELP STRUCT FOR EXPLANATION +* AD_CMOS EQU AD_HELP+LONG_SIZE ;WORD...GET_ADJ / PUT_ADJ NUMBER. +* AD_MIN EQU AD_CMOS+WORD_SIZE ;LONG...MINIMUM VALUE FOR ADJ. +* AD_MAX EQU AD_MIN+LONG_SIZE ;LONG...MAXIMUM VALUE FOR ADJ. +* AD_DELTA EQU AD_MAX+LONG_SIZE ;LONG...UNITS BETWEEN VALUES. +* AD_ZEQU EQU AD_DELTA+LONG_SIZE ;LONG...NUMBER TO STORE IN MEMORY AS ZERO +* AD_NAMEIT EQU AD_HYPER+LONG_SIZE ;LONG...ROUTINE TO PRINT VALUES. +* AD_WRAP EQU AD_NAMEIT+LONG_SIZE ;WORD...NON ZERO TO WRAP FROM HIGHEST TO LOWEST +* AD_NAMPTR EQU AD_WRAP+WORD_SIZE ;LONG...POINTER TO DATA FOR NAMEIT ROUTINE +* +DO_PRICE + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_PRICE ;POINTER TO HEADER MESSAGE + .LONG HELP_PRICE ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJPRICE ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG CS_ENTS ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG COIN_SET ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;WRAP AROUND ON COIN MODES + .LONG 0 ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_PRICE ;POINTER TO HEADER MESSAGE + +DO_MULT + .LONG MULT_ADJ ;ROUTINE TO RUN + .LONG MESS_MULT + .LONG HELP_MULT + .WORD ADJPRICE ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG CS_ENTS ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG MULT_VAL ;Routine for showing current value + .WORD WRAP_VAL ;WRAP AROUND ON COIN MODES + .LONG 0 ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_MULT + +DO_PARAM + .LONG PRICE_ADJ ;ROUTINE TO RUN + .LONG MESS_PARAM ;POINTER TO HEADER MESSAGE + .LONG HELP_PARAM ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJPRICE ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG CS_ENTS ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG PARAM_VAL ;Routine for showing current value + .WORD WRAP_VAL ;WRAP AROUND ON COIN MODES + .LONG 0 ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_PARAM ;POINTER TO HEADER MESSAGE + +*MECHANICAL COIN COUNTER ADJUST + +DO_CNTR + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_CNTR ;POINTER TO HEADER MESSAGE + .LONG HELP_CNTR ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCNTR ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 3 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD 0 ;DON'T WRAP AROUND + .LONG LIST_CNTR ;JUST SHOW THE NUMBER + .LONG MESS_CNTR ;POINTER TO HEADER MESSAGE + +DO_HEAD: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_HEAD ;POINTER TO HEADER MESSAGE + .LONG HELP_HEAD ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJHEADSZ ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 2 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD 0 ;DON'T WRAP AROUND + .LONG LIST_HEAD ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_HEAD ;POINTER TO HEADER MESSAGE + +DO_DIFF: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_DIFF ;POINTER TO HEADER MESSAGE + .LONG HELP_DIFF ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJDIFF ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 5 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD 0 ;DON'T WRAP AROUND + .LONG LIST_DIFF ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_DIFF ;POINTER TO HEADER MESSAGE + +DO_SPEEDS: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_SPEEDS ;POINTER TO HEADER MESSAGE + .LONG HELP_SPEEDS ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJSPEED ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 5 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD 0 ;DON'T WRAP AROUND + .LONG LIST_SPEEDS ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_SPEEDS ;POINTER TO HEADER MESSAGE + +DO_FULLG: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_FULLG ;POINTER TO HEADER MESSAGE + .LONG HELP_FULLG ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJFULLG ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 4 ;MINIMUM VALUE + .LONG 16 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD 0 ;DON'T WRAP AROUND + .LONG LIST_FULLG ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_FULLG ;POINTER TO HEADER MESSAGE + +DO_WINM: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_WINM ;POINTER TO HEADER MESSAGE + .LONG HELP_WINM ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJWINMODE ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;DON'T WRAP AROUND + .LONG LIST_WINM ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_WINM ;POINTER TO HEADER MESSAGE + + +DO_COMPASS: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_COMPASS ;POINTER TO HEADER MESSAGE + .LONG HELP_COMPASS ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCOMPASS ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;DON'T WRAP AROUND + .LONG LIST_COMPASS ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_COMPASS ;POINTER TO HEADER MESSAGE + + +;DO_EASY: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_EASY ;POINTER TO HEADER MESSAGE +; .LONG HELP_EASY ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJBUYIN ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 0 ;MINIMUM VALUE +; .LONG 1 ;MAXIMUM VALUE +; .LONG 1 ;MOVE UP AND DOWN BY 250'S +; .LONG 0 ;DON'T SUB ZERO FOR ANY +; .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. +; .WORD WRAP_VAL ;WRAP AROUND +; .LONG LIST_NOYES ;LIST OF MESSAGES FOR THIS ADJ. +; .LONG MESS_EASY ;POINTER TO HEADER MESSAGE + +DO_LIVES: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_LIVES ;POINTER TO HEADER MESSAGE + .LONG HELP_LIVES ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJLIVES ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 7 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD 0 ;DON'T WRAP AROUND + .LONG LIST_LIVES ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_LIVES ;POINTER TO HEADER MESSAGE + +;DO_ROCKS: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_ROCKS ;POINTER TO HEADER MESSAGE +; .LONG HELP_ROCKS ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJROCKS ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 1 ;MINIMUM VALUE +; .LONG 10 ;MAXIMUM VALUE +; .LONG 1 ;MOVE UP AND DOWN BY 1'S +; .LONG 0 ;DON'T SUB ZERO FOR ANY +; .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. +; .WORD 0 ;DON'T WRAP AROUND +; .LONG LIST_ROCKS ;LIST OF MESSAGES FOR THIS ADJ. +; .LONG MESS_ROCKS ;POINTER TO HEADER MESSAGE + +;DO_EXTRA: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_EXTRA ;POINTER TO HEADER MESSAGE +; .LONG HELP_EXTRA ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJEXTRA ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 25000H ;MINIMUM VALUE (25000 IS "OFF" 50000 IS MIN) +; .LONG 500000H ;MAXIMUM VALUE +; .LONG 25000H ;MOVE UP AND DOWN BY 25K AT A CRACK'S +; .LONG 25000H ;SUBSTITUTE ZERO FOR 25000H +; .LONG HEX_OR_MESS ;HEX WITH COMMAS...OR OFF IF SET TO LOWEST VALUE +; .WORD WRAP_VAL+BCD_VAL ;ALLOW WRAP AROUND +; .LONG MESS_OFF ;NO ANCILLARY INFO. +; .LONG MESS_EXTRA ;POINTER TO HEADER MESSAGE + +;DO_LAST: +; .LONG GEN_ADJ ;ROUTINE TO RUN +; .LONG MESS_LAST ;POINTER TO HEADER MESSAGE +; .LONG HELP_LAST ;POINTER TO HELP MESSAGES FOR RIGHT SIDE +; .WORD ADJLAST ;CMOS ADJUSTMENT WE'RE SETTING +; .LONG 00H ;MINIMUM VALUE (0 IS "OFF" 100000 IS MIN) +; .LONG 5000000H ;MAXIMUM VALUE 5 MIL +; .LONG 100000H ;MOVE UP AND DOWN BY 100K AT A CRACK'S +; .LONG 00H ;SUBSTITUTE ZERO FOR ZERO +; .LONG HEX_OR_MESS ;HEX WITH COMMAS...OR OFF IF SET TO LOWEST VALUE +; .WORD WRAP_VAL+BCD_VAL ;ALLOW WRAP AROUND +; .LONG MESS_OFF ;NO ANCILLARY INFO. +; .LONG MESS_LAST ;POINTER TO HEADER MESSAGE + +DO_AMODE: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_AMOD2 ;POINTER TO HEADER MESSAGE + .LONG HELP_AMODE ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJMUSIC ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;WRAP AROUND + .LONG LIST_AMODE ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_AMODE ;POINTER TO HEADER MESSAGE + +DO_AHSRES: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_HSR2 ;POINTER TO HEADER MESSAGE + .LONG HELP_AHSRES ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJHSRES ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 25000 ;MAXIMUM VALUE + .LONG 250 ;MOVE UP AND DOWN BY 250'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG BIN_OR_MESS ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL^HSR_VAL ;WRAP AROUND AND RESET HSC IF TOUCHED + .LONG MESS_OFF ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_AHSRES ;POINTER TO HEADER MESSAGE + +* +* THESE ARE ALL FOR THE CUSTOM PRICING MENU +* +COINBITS: EQU WRAP_VAL+VIRG_VAL+SIX_VAL + +DO_LCOIN: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_LCU ;POINTER TO HEADER MESSAGE + .LONG HELP_LCU ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJLMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_LCU ;POINTER TO HEADER MESSAGE + +DO_CCOIN: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CCU ;POINTER TO HEADER MESSAGE + .LONG HELP_CCU ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_CCU ;POINTER TO HEADER MESSAGE + +DO_RCOIN: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_RCU ;POINTER TO HEADER MESSAGE + .LONG HELP_RCU ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJRMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_RCU ;POINTER TO HEADER MESSAGE +DO_XCOIN: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_XCU ;POINTER TO HEADER MESSAGE + .LONG HELP_XCU ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJXMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_XCU ;POINTER TO HEADER MESSAGE + +DO_TOTALIZER + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_TOTALIZER ;POINTER TO HEADER MESSAGE + .LONG HELP_TOTALIZER ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJTOTALIZER ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;JUST SHOW THE NUMBER + .WORD WRAP_VAL ;WRAP AROUND + .LONG LIST_NOYES ;NO EXTRA INFO NEEDED + .LONG M_TOTALIZER ;POINTER TO HEADER MESSAGE + +DO_LMULT + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_LMULT ;POINTER TO HEADER MESSAGE + .LONG HELP_LMULT ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJLTOTMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_LMULT ;POINTER TO HEADER MESSAGE +DO_RMULT + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_RMULT ;POINTER TO HEADER MESSAGE + .LONG HELP_RMULT ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJRTOTMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_RMULT ;POINTER TO HEADER MESSAGE +DO_CMULT + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CMULT ;POINTER TO HEADER MESSAGE + .LONG HELP_CMULT ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCTOTMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_CMULT ;POINTER TO HEADER MESSAGE +DO_XMULT + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_XMULT ;POINTER TO HEADER MESSAGE + .LONG HELP_XMULT ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJXTOTMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_XMULT ;POINTER TO HEADER MESSAGE + +DO_DBVMULT + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_DBVMULT ;POINTER TO HEADER MESSAGE + .LONG HELP_BMULT ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJBTOTMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_DBVMULT ;POINTER TO HEADER MESSAGE + +DO_DBV: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_DBV ;POINTER TO HEADER MESSAGE + .LONG HELP_DBV ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJDBVMULT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_DBV ;POINTER TO HEADER MESSAGE + +DO_UC: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_UC ;POINTER TO HEADER MESSAGE + .LONG HELP_UC ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCUNIT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_UC ;POINTER TO HEADER MESSAGE + +DO_UB: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_UB ;POINTER TO HEADER MESSAGE + .LONG HELP_UB ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJBUNIT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG BIN_OR_MESS ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG M_NOBONUS ;NO EXTRA INFO NEEDED + .LONG M_UB ;POINTER TO HEADER MESSAGE + +DO_UM: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_UM2 ;POINTER TO HEADER MESSAGE + .LONG HELP_UM ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJMUNIT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG BIN_OR_MESS ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG M_NOMIN ;NO EXTRA INFO NEEDED + .LONG M_UM ;POINTER TO HEADER MESSAGE + +CREDBITS: EQU VIRG_VAL + +DO_CST: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CST ;POINTER TO HEADER MESSAGE + .LONG HELP_CS ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCSTRT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 4 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_CST ;POINTER TO HEADER MESSAGE + +DO_CONT: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CONT2 ;POINTER TO HEADER MESSAGE + .LONG HELP_CC ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCCONT ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 1 ;MINIMUM VALUE + .LONG 4 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD COINBITS ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_CONT ;POINTER TO HEADER MESSAGE + +DO_CRFR: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CRFR2 ;POINTER TO HEADER MESSAGE + .LONG HELP_CRFR ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJFRAC ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1 + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;WRAP AROUND + .LONG LIST_NOYES ;LIST OF MESSAGES FOR THIS ADJ. + .LONG M_CRFR ;POINTER TO HEADER MESSAGE + +DO_CPD: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_CPD ;POINTER TO HEADER MESSAGE + .LONG HELP_CPD ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJCDIV ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 20 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG BIN_OR_MESS ;JUST SHOW THE NUMBER + .WORD 0 ;NO WRAP AROUND + .LONG M_NO_COL ;NO EXTRA INFO NEEDED + .LONG M_CPD ;POINTER TO HEADER MESSAGE + +DO_MAX: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG M_MAX ;POINTER TO HEADER MESSAGE + .LONG HELP_MAX ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJMAXC ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 5 ;MINIMUM VALUE + .LONG 99 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG JUST_BIN ;JUST SHOW THE NUMBER + .WORD WRAP_VAL ;WRAP AROUND + .LONG 0 ;NO EXTRA INFO NEEDED + .LONG M_MAX ;POINTER TO HEADER MESSAGE + +DO_FREE: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_FREE ;POINTER TO HEADER MESSAGE + .LONG HELP_FREE ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJFREPL ;CMOS ADJUSTMENT WE'RE SETTING +* +* G_FREE: REPLACE ".LONG 0" WITH ".LONG 1" +* + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 250'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;WRAP AROUND +* +* G_FREE: REPLACE ".LONG LIST_NOYES" WITH ".LONG LIST_YESNO" +* + .LONG LIST_NOYES ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_FREE ;POINTER TO HEADER MESSAGE + +DO_CTIT: + .LONG GEN_ADJ ;ROUTINE TO RUN + .LONG MESS_CTIT ;POINTER TO HEADER MESSAGE + .LONG CTIT_HELP ;POINTER TO HELP MESSAGES FOR RIGHT SIDE + .WORD ADJNOCPAG ;CMOS ADJUSTMENT WE'RE SETTING + .LONG 0 ;MINIMUM VALUE + .LONG 1 ;MAXIMUM VALUE + .LONG 1 ;MOVE UP AND DOWN BY 1'S + .LONG 0 ;DON'T SUB ZERO FOR ANY + .LONG LIST_1LINE ;MESSAGE LIST USED FOR VALUES. + .WORD WRAP_VAL ;WRAP AROUND + .LONG LIST_YESNO ;LIST OF MESSAGES FOR THIS ADJ. + .LONG MESS_CTIT ;POINTER TO HEADER MESSAGE + +* +* ADJUSTMENT MENU IS SKINNY..LEAVING ROOM FOR EXPLANATION. +* +AM_BDY EQU -2 +AM_WID EQU 0A7H +AM_X EQU TIT_ULX+GAP+MB_XWID+(AM_WID/2)+C_KLUDGE +AM_Y EQU INST_LRY+BOX_YGAP+MB_YWID+GAP-AM_BDY +* +* RIGHT MARGIN OF ADJUST MENU BOX +* +AM_RX EQU TIT_ULX+(2*GAP)+AM_WID+(2*MB_XWID) +* +* LEFT MARGIN OF HELP BOX +* +AM_HX EQU AM_RX+BOX_XGAP + +MEN_ADJ: + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG M_GADJ ;TITLE + .WORD COLOR_WHITE ;COLOR OF TITLE + .WORD AM_X ;UL X + .WORD AM_Y ;UL Y + .WORD 12 + .WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED + .WORD 12 ;HEIGHT OF SELECTION BAR + .WORD AM_BDY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD AM_WID ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG MESS_PRICE,DO_PRICE,ADJ_HELP + .LONG MESS_MULT,DO_MULT,ADJ_HELP + .LONG MESS_PARAM,DO_PARAM,ADJ_HELP + .LONG MESS_FREE,DO_FREE,ADJ_HELP ;FREE PLAY + .LONG MESS_DIFF,DO_DIFF,ADJ_HELP + .LONG MESS_SPEEDS,DO_SPEEDS,ADJ_HELP + .LONG MESS_AMODE,DO_AMODE,ADJ_HELP + .LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG 0 ;END + +MEN_CUST: + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG M_CUSPRI ;TITLE + .WORD COLOR_BLUE ;COLOR OF TITLE + .WORD AM_X ;UL X + .WORD AM_Y ;UL Y + .WORD 11 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 12 ;HEIGHT OF SELECTION BAR + .WORD AM_BDY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD AM_WID ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_AM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG M_LCU,DO_LCOIN,ADJ_HELP ;LEFT SLOT UNITS + .LONG M_RCU,DO_RCOIN,ADJ_HELP ;RIGHT SLOT UNITS + .LONG M_CCU,DO_CCOIN,ADJ_HELP ;CENTER SLOT UNITS + .LONG M_XCU,DO_XCOIN,ADJ_HELP ;RIGHT SLOT UNITS + .LONG M_DBV,DO_DBV,ADJ_HELP ;DOLLAR BILL VALIDATOR + .LONG M_UC,DO_UC,ADJ_HELP ;UNITS FOR CREDIT + .LONG M_UB,DO_UB,ADJ_HELP ;UNITS FOR BONUS + .LONG M_UM,DO_UM,ADJ_HELP ;MINIMUM UNITS + .LONG M_CST,DO_CST,ADJ_HELP ;CREDITS REQUIRED TO START + .LONG M_CONT,DO_CONT,ADJ_HELP ;CREDITS REQUIRED TO CONTINUE + .LONG MESS_CTIT,DO_CTIT,ADJ_HELP ;COIN PAGE HELP LINE + .LONG M_CRFR,DO_CRFR,ADJ_HELP ;SHOW CREDIT FRACTIONS + .LONG M_CPD,DO_CPD,ADJ_HELP ;COINS PER DOLLAR + .LONG M_MAX,DO_MAX,ADJ_HELP ;MAXIMUM CREDITS + .LONG 0 + +MEN_MULT: + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG M_MULT ;TITLE + .WORD COLOR_BLUE ;COLOR OF TITLE + .WORD AM_X ;UL X + .WORD AM_Y ;UL Y + .WORD 11 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 12 ;HEIGHT OF SELECTION BAR + .WORD AM_BDY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD AM_WID ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_AM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG M_TOTALIZER,DO_TOTALIZER,ADJ_HELP + .LONG M_LMULT,DO_LMULT,ADJ_HELP ;LEFT SLOT UNITS + .LONG M_RMULT,DO_RMULT,ADJ_HELP ;LEFT SLOT UNITS + .LONG M_CMULT,DO_CMULT,ADJ_HELP ;LEFT SLOT UNITS + .LONG M_XMULT,DO_XMULT,ADJ_HELP ;LEFT SLOT UNITS + .LONG M_DBVMULT,DO_DBVMULT,ADJ_HELP ;LEFT SLOT UNITS + .LONG 0 +M_MULT + .STRING "CUSTOM MULTIPLIERS" + .BYTE 0 + .EVEN + +M_GADJ + .STRING "GAME ADJUSTMENT" + .BYTE 0 + .EVEN + +M_CUSPRI: + .STRING "CUSTOM PRICING" + .BYTE 0 + .EVEN + +MESS_FREE: + .STRING "FREE PLAY" + .BYTE 0 + .EVEN + +MESS_PRICE: + .STRING "STANDARD PRICING" + .BYTE 0 + .EVEN +MESS_MULT: + .STRING "CUSTOM MULTIPLIERS" + .BYTE 0 + .EVEN +MESS_PARAM: + .STRING "CUSTOM PRICING" + .BYTE 0 + .EVEN +MESS_DIFF: + .STRING "GAME DIFFICULTY" + .BYTE 0 + .EVEN +MESS_HEAD: + .STRING "PLAYER HEAD SIZE" + .BYTE 0 + .EVEN +MESS_SPEEDS: + .string "GAME TIMER SPEED",0 + .even +MESS_FULLG: + .string "CREDITS FOR FULLGAME",0 + .even +MESS_WINM: + .string "4 PLAYER WIN BONUS",0 + .even + +MESS_COMPASS: + .string "COMPUTER ASSISTANCE",0 + .even + +MESS_CNTR: + .STRING "COIN COUNTER MODE" + .BYTE 0 + .EVEN +MESS_CTIT: + .STRING "COIN PAGE HELP" + .BYTE 0 + .EVEN +MESS_LIVES: + .STRING "LIVES PER PLAY" + .BYTE 0 + .EVEN +;MESS_EASY: +; .STRING "EASY BUY-IN" +; .BYTE 0 +; .EVEN +;MESS_ROCKS: +; .STRING "POWER-UPS PER PLAY" +; .BYTE 0 +; .EVEN +;MESS_EXTRA: +; .STRING "EXTRA MAN EVERY" +; .BYTE 0 +; .EVEN +;MESS_LAST: +; .STRING "LAST EXTRA MAN" +; .BYTE 0 +; .EVEN +MESS_AMODE: + .STRING "ATTRACT-MODE SOUND" ;FOR MENU + .BYTE 0 + .EVEN +MESS_AMOD2: + .STRING "A-MODE SOUND" ;FOR TITLE BOX (SHORTER VER.) + .BYTE 0 + .EVEN +MESS_AHSRES: + .STRING "AUTO HIGH SCORE RESET" ;FOR MENU + .BYTE 0 + .EVEN +MESS_HSR2: + .STRING "AUTO H.S. RESET" + .BYTE 0 + .EVEN + + +M_LCU: + .STRING "LEFT CHUTE (1) UNITS" + .BYTE 0 + .EVEN +M_CCU: + .STRING "CHUTE (3) UNITS" + .BYTE 0 + .EVEN +M_RCU: + .STRING "RIGHT CHUTE (2) UNITS" + .BYTE 0 + .EVEN +M_XCU: + .STRING "CHUTE (4) UNITS" + .BYTE 0 + .EVEN +M_TOTALIZER + .STRING "TOTALIZER MODE" + .BYTE 0 + .EVEN +M_LMULT + .STRING "CHUTE 1 TOTALIZER" + .BYTE 0 + .EVEN +M_RMULT + .STRING "CHUTE 2 TOTALIZER" + .BYTE 0 + .EVEN +M_CMULT + .STRING "CHUTE 3 TOTALIZER" + .BYTE 0 + .EVEN +M_XMULT + .STRING "CHUTE 4 TOTALIZER" + .BYTE 0 + .EVEN +M_DBVMULT + .STRING "DBV TOTALIZER" + .BYTE 0 + .EVEN +M_DBV: + .STRING "DBV UNITS" + .BYTE 0 + .EVEN +M_UC: + .STRING "UNITS / CREDIT" + .BYTE 0 + .EVEN +M_UB: + .STRING "UNITS / BONUS" + .BYTE 0 + .EVEN +M_UM: + .STRING "MIN. UNITS REQUIRED" + .BYTE 0 + .EVEN +M_UM2: + .STRING "MINIMUM UNITS" + .BYTE 0 + .EVEN +M_CST: + .STRING "CREDITS TO START" + .BYTE 0 + .EVEN +M_CONT: + .STRING "CREDITS TO CONTINUE" + .BYTE 0 + .EVEN +M_CONT2: + .STRING "CRED. TO CONTINUE" + .BYTE 0 + .EVEN +M_CRFR: + .STRING "SHOW CREDIT FRACTIONS" + .BYTE 0 + .EVEN +M_CRFR2: + .STRING "CREDIT FRACTIONS" + .BYTE 0 + .EVEN +M_CPD: + .STRING "COINS PER BILL" + .BYTE 0 + .EVEN +M_MAX: + .STRING "MAXIMUM CREDITS" + .BYTE 0 + .EVEN +MESS_AM: + .STRING "RETURN TO ADJ. MENU" + .BYTE 0 + .EVEN +* +* THIS IS THE ADJUSTMENT NAME IN THE UPPER RIGHT +* BOX +* +ADJT_Y EQU INST_ULY+9 ;CENTER IN THE BOX +ADJT_SETUP: + MESS_MAC RD7FONT,SPACING20,200,ADJT_Y,COLOR_LF,STRCNRM,0 + +CSET_Y EQU CUR_ULY+7 + .EVEN + +MOC_Y1 EQU CSET_Y+20 +MOC_Y2 EQU MOC_Y1+10 +MOC_Y3 EQU MOC_Y2+10 + +MESS_OPEN_OR_CANCEL + MESS_MAC RD7FONT,SPACING20,AM_X,MOC_Y1,COLOR_LF,STRCNRM,0 + .STRING "OPEN COIN DOOR, OR" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING20,AM_X,MOC_Y2,COLOR_LF,STRCNRM,0 + .STRING "PRESS ANY BUTTON" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING20,AM_X,MOC_Y3,COLOR_LF,STRCNRM,0 + .STRING "TO CANCEL" + .BYTE 0,0 + .EVEN + +IN_Y1 EQU CUR_ULY+32 +IN_Y2 EQU IN_Y1+12 +IN_Y3 EQU IN_Y2+39 +IN_Y4 EQU IN_Y3+12 + +INST_TO_ADJ + MESS_MAC RD7FONT,SPACING07,AM_X,IN_Y1,COLOR_WHITE,STRCNRM,0 + .STRING "MODIFY VALUE WITH" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,AM_X,IN_Y2,COLOR_WHITE,STRCNRM,0 + .STRING "ANY STICK" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,AM_X,IN_Y3,COLOR_WHITE,STRCNRM,0 + .STRING "PRESS ANY BUTTON" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,AM_X,IN_Y4,COLOR_WHITE,STRCNRM,0 + .STRING "WHEN VALUE IS CORRECT." + .BYTE 0,0 + .EVEN +* +* FOR THE WORD UNDER "ADJUSTING" WHILE THE ADJUSTING +* IS ACTUALLY BEING DONE +* +ADNOW_Y1 EQU CUR_ULY-35 +ADNOW_Y2 EQU ADNOW_Y1+12 + +MES_ADJUSTING + MESS_MAC RD7FONT,SPACING07,AM_X,ADNOW_Y1,COLOR_LF,STRCNRM,0 + .STRING "ADJUSTING" + .BYTE 0,0 + .EVEN + +MES_ADNAME + MESS_MAC RD7FONT,SPACING07,AM_X,ADNOW_Y2,COLOR_LF,STRCNRM,0 + +INSTR_Y EQU INST_ULY+5 +INSTR_2Y EQU INSTR_Y+10 + +ADJ_ADV + MESS_MAC RD7FONT,SPACING07,AM_X,INSTR_Y,COLOR_BPR,STRCNRM,0 + .STRING "SELECT WITH ANY STICK" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,AM_X,INSTR_2Y,COLOR_BPR,STRCNRM,0 + .STRING "PRESS A BUTTON TO MODIFY" + .BYTE 0,0 + .EVEN + +AAY EQU IN_Y1+19H + +ADJ_ARROW + MESS_MAC RD7FONT,0FFFDH,AM_X,AAY,COLOR_LF,STRCNRM,0 + .STRING "-----> -----> -----> -----> ----->" + .BYTE 0,0 + .EVEN + +* IF COIN SETTINGS DON'T NEATLY FIT INTO +* A MODE + +MESS_TAMPERED + .STRING "CUSTOM" + .BYTE 0 + .EVEN + +MESS_DIP + .STRING "DIPSWITCH",0 + .EVEN + +M_MULTVAL + .STRING "MULTIPLIER VALUES" + .BYTE 0 + .EVEN +M_MULTVAL1 + .STRING "CHUTE 1 MULTIPLIER : " + .BYTE 0 + .EVEN +M_MULTVAL2 + .STRING "CHUTE 2 MULTIPLIER : " + .BYTE 0 + .EVEN +M_MULTVAL3 + .STRING "CHUTE 3 MULTIPLIER : " + .BYTE 0 + .EVEN +M_MULTVAL4 + .STRING "CHUTE 4 MULTIPLIER : " + .BYTE 0 + .EVEN +M_MULTVAL5 + .STRING "VALIDATOR MULTIPLIER : " + .BYTE 0 + .EVEN + + +M_SLOTVAL + .STRING "COIN SLOT VALUES" + .BYTE 0 + .EVEN + +MESS_GP .STRING "GAME PRICING:" + .BYTE 0 + .EVEN +MESS_FP .STRING "FREE PLAY:" + .BYTE 0 + .EVEN +MESS_MAX .STRING "MAXIMUM CREDITS:" + .BYTE 0 + .EVEN + +M_CTS_PL .STRING "CREDITS TO START:" + .BYTE 0 + .EVEN +M_CTC_PL .STRING "CREDITS TO CONTINUE:" + .BYTE 0 + .EVEN + +************************************************************************** +* * +* HELP STRUCTURES FOR MAIN ADJUSTMENT MENU! * +* * +************************************************************************** +HELP_HEAD + .WORD 1 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG DHH_0 + .LONG DHH_1 + .LONG M_NULL + .LONG DHH_3 + .LONG DHH_4 + .LONG DHH_5 +HELP_DIFF + .WORD 1 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG DH_0 + .LONG DH_1 + .LONG M_NULL + .LONG DH_3 + .LONG DH_4 + .LONG DH_5 +HELP_SPEEDS + .WORD 1 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG SH_0 + .LONG SH_1 + .LONG M_NULL + .LONG SH_3 + .LONG SH_4 + .LONG SH_5 +HELP_FULLG + .WORD 1 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG FGH_0 + .LONG FGH_1 + .LONG M_NULL + .LONG FGH_3 + .LONG FGH_4 + .LONG FGH_5 +HELP_WINM + .WORD 1 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG WGH_0 + .LONG WGH_1 + .LONG M_NULL + .LONG WGH_3 + .LONG WGH_4 + .LONG WGH_5 +HELP_COMPASS + .WORD 1 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG CPH_0 + .LONG CPH_1 + .LONG CPH_2 + .LONG CPH_3 + .LONG M_NULL + .LONG CPH_4 + +HELP_CNTR + .WORD 1 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG CNTRH_0 + .LONG CNTRH_1 + .LONG M_NULL + .LONG CNTRH_3 + .LONG CNTRH_4 + .LONG CNTRH_5 + +HELP_PRICE + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 4 ;5 ENTRIES + .LONG PH_0 + .LONG PH_1 + .LONG PH_2 + .LONG PH_3 + +HELP_MULT + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 3 ;5 ENTRIES + .LONG MH_0 + .LONG MH_1 + .LONG MH_2 + +HELP_DIP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_RED ;COLOR + .WORD 3 + .LONG DIH_0 + .LONG DIH_1 + .LONG DIH_2 + +HELP_PARAM + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;5 ENTRIES + .LONG PP_0 + .LONG PP_1 + .LONG PP_2 + .LONG PP_3 + .LONG PP_4 + .LONG PP_5 + +;HELP_EASY +; .WORD 0 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 4 ;4 ENTRIES +; .LONG EH_0 +; .LONG EH_1 +; .LONG M_NULL +; .LONG EH_2 + +HELP_LIVES + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG LH_0 + .LONG LH_1 + .LONG LH_2 + .LONG LH_3 + .LONG M_NULL + .LONG LH_4 + +;HELP_ROCKS +; .WORD 0 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG RH_0 ;UNIQUE LINE FOR ROCKETS +; .LONG LH_1 ;SAME WORDING AS LIVES +; .LONG LH_2 +; .LONG LH_3 +; .LONG M_NULL +; .LONG RH_5 ;FACTORY OF 5 + +;HELP_EXTRA +; .WORD 0 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG EXH_0 ;UNIQUE LINE FOR ROCKETS +; .LONG EXH_1 ;SAME WORDING AS LIVES +; .LONG EXH_2 +; .LONG EXH_3 +; .LONG M_NULL +; .LONG EXH_4 ;FACTORY OF 100,000 + +;HELP_LAST +; .WORD 0 ;CENTER JUSTIFY +; .WORD COLOR_BLUE ;COLOR +; .WORD 6 ;6 ENTRIES +; .LONG LMH_0 +; .LONG LMH_1 +; .LONG LMH_2 +; .LONG M_NULL +; .LONG LMH_3 +; .LONG LMH_4 + +HELP_AMODE + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 5 ;6 ENTRIES + .LONG HAM_1 + .LONG HAM_2 + .LONG HAM_3 + .LONG M_NULL + .LONG HAM_4 + +HELP_AHSRES + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG HAH_1 + .LONG HAH_2 + .LONG HAH_3 + .LONG HAH_4 + .LONG M_NULL + .LONG HAH_5 + +HELP_FREE + .WORD 0 + .WORD COLOR_BLUE + .WORD 6 + .LONG FP_M1 + .LONG FP_M2 + .LONG FP_M3 + .LONG FP_M4 + .LONG M_NULL + .LONG FP_M5 + +CTIT_HELP + .WORD 0 + .WORD COLOR_WHITE + .WORD 5 + .LONG CT_M1 + .LONG CT_M2 + .LONG CT_M3 + .LONG CT_M4 + .LONG CT_M5 + +HELP_LCU + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG LC_M1 + .LONG LC_M2 + .LONG LC_M3 + .LONG LC_M4 + .LONG LC_M5 + .LONG LC_M6 + +HELP_CCU + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG LC_M1 + .LONG LC_M2 + .LONG LC_M3 + .LONG LC_M4 + .LONG CC_M5 + .LONG LC_M6 + +HELP_RCU + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG LC_M1 + .LONG LC_M2 + .LONG LC_M3 + .LONG LC_M4 + .LONG RC_M5 + .LONG LC_M6 +HELP_XCU + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG LC_M1 + .LONG LC_M2 + .LONG LC_M3 + .LONG LC_M4 + .LONG XC_M5 + .LONG LC_M6 + +HELP_LMULT + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MZ_M1 + .LONG MZ_M2 + .LONG MZ_C1 + +HELP_RMULT + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MZ_M1 + .LONG MZ_M2 + .LONG MZ_C2 + +HELP_CMULT + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MZ_M1 + .LONG MZ_M2 + .LONG MZ_C3 + +HELP_XMULT + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MZ_M1 + .LONG MZ_M2 + .LONG MZ_C4 + +HELP_BMULT + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MZ_M1 + .LONG MZ_M2 + .LONG MZ_DB + +HELP_TOTALIZER + .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG MR_M1 + .LONG MR_M2 + .LONG MR_M3 +HELP_DBV + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG LC_M1 + .LONG LC_M2 + .LONG LC_M3 + .LONG LC_M4 + .LONG DBV_M5 + .LONG LC_M6 + +HELP_UC .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG UC_M1 + .LONG UC_M2 + .LONG UC_M3 + +HELP_UB .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG UB_M1 + .LONG UB_M2 + .LONG UB_M3 + +HELP_UM .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG UM_M1 + .LONG UM_M2 + .LONG UM_M3 + + +HELP_CS .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG CS_M1 + .LONG CS_M2 + .LONG CS_M3 + +HELP_CC .WORD 0 + .WORD COLOR_WHITE + .WORD 3 + .LONG CS_M1 + .LONG CS_M2 + .LONG CC_M3 + +HELP_CRFR + .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG FR_M1 + .LONG FR_M2 + .LONG FR_M3 + .LONG M_NULL + .LONG FR_M4 + .LONG FR_M5 + +HELP_CPD .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG CPD_M1 + .LONG CPD_M2 + .LONG CPD_M3 + .LONG CPD_M4 + .LONG CPD_M5 + .LONG CPD_M6 + +HELP_MAX .WORD 0 + .WORD COLOR_WHITE + .WORD 6 + .LONG MC_M1 + .LONG MC_M2 + .LONG MC_M3 + .LONG MC_M4 + .LONG M_NULL + .LONG MC_M5 + +************************************************************************** +* * +* HELP MESSAGES FOR MAIN ADJUSTMENT MENU! * +* * +************************************************************************** + +CNTRH_0 .STRING "THIS CONTROLS MECHANICAL" + .BYTE 0 + .EVEN +CNTRH_1 .STRING "COIN COUNTER MODE" + .BYTE 0 + .EVEN +CNTRH_3 .STRING "CNTR1 = MULT OF LOW COIN: 1" + .BYTE 0 + .EVEN +CNTRH_4 .STRING "CNTR1 = 1 COUNT/COIN: 2" + .BYTE 0 + .EVEN +CNTRH_5 .STRING "CNTR1=LCOIN, CNTR2=RCOIN: 3" + .BYTE 0 + .EVEN + +DHH_0 .STRING "THIS CONTROLS HEAD SIZE",0 + .EVEN +DHH_1 .STRING "FOR PLAYERS IN THE GAME.",0 + .EVEN +DHH_3 .STRING "NORMAL SIZE: 1",0 + .EVEN +DHH_4 .STRING "LARGE SIZE: 2",0 + .EVEN +DHH_5 .STRING "FACTORY SETTING: 1",0 + .EVEN + + +DH_0 .STRING "THIS CONTROLS THE OVERALL" + .BYTE 0 + .EVEN +DH_1 .STRING "DIFFICULTY OF GAME PLAY." +M_NULL .BYTE 0 + .EVEN +DH_3 .STRING "EASIEST SETTING: 1" + .BYTE 0 + .EVEN +DH_4 .STRING "HARDEST SETTING: 5" + .BYTE 0 + .EVEN +DH_5 .STRING "FACTORY SETTING: 3" + .BYTE 0 + .EVEN + + +SH_0 .STRING "THIS CONTROLS THE OVERALL" + .BYTE 0 + .EVEN +SH_1 .STRING "GAME TIMER SPEED." + .BYTE 0 + .EVEN +SH_3 .STRING "SLOWEST SETTING: 1" + .BYTE 0 + .EVEN +SH_4 .STRING "FASTEST SETTING: 5" + .BYTE 0 + .EVEN +SH_5 .STRING "FACTORY SETTING: 3" + .BYTE 0 + .EVEN + + + +FGH_0 .STRING "NUMBER OF CREDITS REQUIRED" + .BYTE 0 + .EVEN +FGH_1 .STRING "TO PURCHASE A FULL GAME." + .BYTE 0 + .EVEN +FGH_3 .STRING "MINIMUM CREDITS: 4" + .BYTE 0 + .EVEN +FGH_4 .STRING "MAXIMUM CREDITS: 16" + .BYTE 0 + .EVEN +FGH_5 .STRING "FACTORY SETTING: 8" + .BYTE 0 + .EVEN + + +WGH_0 .STRING "BONUS FOR WINNERS IN A ",0 + .EVEN +WGH_1 .STRING "FOUR PLAYER GAME.",0 + .EVEN +WGH_3 .STRING " ",0 + .EVEN +WGH_4 .STRING " ",0 + .EVEN +WGH_5 .STRING "FACTORY SETTING: FREE GAME",0 + .EVEN + + +CPH_0 .string "COMPUTER KEEPS GAME CLOSE.",0 + .even +CPH_1 .string "THIS RESULTS IN MORE",0 + .even +CPH_2 .string "EXCITEMENT AND FROM OUR",0 + .even +CPH_3 .string "TESTS, HIGHER EARNINGS!",0 + .even +CPH_4 .string "FACTORY SETTING: ENABLED",0 + .even + +MH_0 .STRING "CUSTOMISE THE INTERNAL" + .BYTE 0 + .EVEN +MH_1 .STRING "COIN CHUTE MULTIPLIERS" + .BYTE 0 + .EVEN +MH_2 .STRING "FOR EACH CHUTE." + .BYTE 0 + .EVEN +;MH_3 .STRING "CALCULATIONS" +; .BYTE 0 +; .EVEN + +PH_0 .STRING "SELECT BUILT-IN PRICING" + .BYTE 0 + .EVEN +PH_1 .STRING "MODE, SELECTING COINS" + .BYTE 0 + .EVEN +PH_2 .STRING "PER CREDIT, AND" + .BYTE 0 + .EVEN +PH_3 .STRING "COIN SLOT VALUE." + .BYTE 0 + .EVEN + +DIH_0 .STRING "THIS OPTION IS BEING",0 + .EVEN +DIH_1 .STRING "ADJUSTED FROM DIPSWITCH",0 + .EVEN +DIH_2 .STRING "SETTINGS.",0 + .EVEN + +* +* +;RH_0 .STRING "THE NUMBER OF POWER-UPS" +; .BYTE 0 +; .EVEN + +;RH_5 .STRING "FACTORY SETTING: 5" +; .BYTE 0 +; .EVEN + +LH_0 .STRING "THE NUMBER OF LIVES" + .BYTE 0 + .EVEN +LH_1 .STRING "A PLAYER RECEIVES" + .BYTE 0 + .EVEN +LH_2 .STRING "EACH TIME HE STARTS" + .BYTE 0 + .EVEN +LH_3 .STRING "OR CONTINUES A GAME." + .BYTE 0 + .EVEN +LH_4 .STRING "FACTORY SETTING: 3" + .BYTE 0 + .EVEN + +;EXH_0 .STRING "PLAYERS RECEIVE AN" +; .BYTE 0 +; .EVEN +;EXH_1 .STRING "EXTRA LIFE EACH" +; .BYTE 0 +; .EVEN +;EXH_2 .STRING "TIME THEY SCORE" +; .BYTE 0 +; .EVEN +;EXH_3 .STRING "THIS MANY POINTS." +; .BYTE 0 +; .EVEN +;EXH_4 .STRING "FACTORY SETTING: 100,000" +; .BYTE 0 +; .EVEN + +;LMH_0 .STRING "ONCE A SCORE REACHES" +; .BYTE 0 +; .EVEN +;LMH_1 .STRING "THIS LEVEL, NO EXTRA" +; .BYTE 0 +; .EVEN +;LMH_2 .STRING "MEN WILL BE AWARDED." +; .BYTE 0 +; .EVEN +;LMH_3 .STRING "FACTORY SETTING: OFF" +; .BYTE 0 +; .EVEN +;LMH_4 .STRING "(NO LIMIT ON EXTRA MEN)" +; .BYTE 0 +; .EVEN + +HAM_1 .STRING "THIS DETERMINES WHETHER" + .BYTE 0 + .EVEN +HAM_2 .STRING "THE GAME WILL MAKE SOUNDS" + .BYTE 0 + .EVEN +HAM_3 .STRING "IN THE ATTRACT MODE." + .BYTE 0 + .EVEN +HAM_4 .STRING "FACTORY SETTING: OFF" + .BYTE 0 + .EVEN +HAH_1 .STRING "THE ALL TIME HIGH SCORE" + .BYTE 0 + .EVEN +HAH_2 .STRING "TABLE WILL BE RESET TO" + .BYTE 0 + .EVEN +HAH_3 .STRING "FACTORY VALUES EACH TIME" + .BYTE 0 + .EVEN +HAH_4 .STRING "THIS MANY PLAYS OCCURS." + .BYTE 0 + .EVEN +HAH_5 .STRING "FACTORY SETTING: 5000" + .BYTE 0 + .EVEN +HG_1 .STRING "THIS ALLOWS THE GRAPHIC" + .BYTE 0 + .EVEN +HG_2 .STRING "VIOLENCE SHOWN ON SCREEN" + .BYTE 0 + .EVEN +HG_3 .STRING "TO BE ADJUSTED." + .BYTE 0 + .EVEN +HG_4 .STRING "FACTORY SETTING: NORMAL" + .BYTE 0 + .EVEN + +FP_M1 .STRING "SETTING FREE PLAY TO" + .BYTE 0 + .EVEN +FP_M2 .BYTE ASCII_DQ + .STRING "YES" + .BYTE ASCII_DQ + .STRING " ALLOWS UNLIMITED" + .BYTE 0 + .EVEN +FP_M3 .STRING "PLAY WITHOUT INSERTING" + .BYTE 0 + .EVEN +FP_M4 .STRING "ANY COINS." + .BYTE 0 + .EVEN +FP_M5 .STRING "FACTORY SETTING: NO" + .BYTE 0 + .EVEN +CT_M1 .STRING "WHENEVER STANDARD PRICING" + .BYTE 0 + .EVEN +CT_M2 .STRING "IS USED, A CORRESPONDING" + .BYTE 0 + .EVEN +CT_M3 .STRING "MESSAGE IS DISPLAYED ON THE" + .BYTE 0 + .EVEN +CT_M4 .STRING "CREDITS SCREEN. SETTING THIS" + .BYTE 0 + .EVEN +CT_M5 .STRING "TO " + .BYTE ASCII_DQ + .STRING "NO" + .BYTE ASCII_DQ + .STRING " DISABLES THE MESSAGE." + .BYTE 0 + .EVEN + +PP_0 .STRING "THIS ALLOWS ADJUSTMENT" + .BYTE 0 + .EVEN +PP_1 .STRING "OF PRICING PARAMETERS" + .BYTE 0 + .EVEN +PP_2 .STRING "(FOR NON-STANDARD MODES)," + .BYTE 0 + .EVEN +PP_3 .STRING "FREE PLAY, MAXIMUM CREDITS," + .BYTE 0 + .EVEN +PP_4 .STRING "CREDITS REQUIRED TO START" + .BYTE 0 + .EVEN +PP_5 .STRING "AND CREDITS TO CONTINUE." + .BYTE 0 + .EVEN + +;EH_0 .STRING "SETTING NOT YET" +; .BYTE 0 +; .EVEN +;EH_1 .STRING "ESTABLISHED" +; .BYTE 0 +; .EVEN +;EH_2 .STRING "FACTORY SETTING: ???" +; .BYTE 0 +; .EVEN + +LC_M1 .STRING "EACH COIN INSERTED ADDS TO" + .BYTE 0 + .EVEN +LC_M2 .STRING "COIN UNITS. THIS ADJUSTMENT" + .BYTE 0 + .EVEN +LC_M3 .STRING "SPECIFIES THE NUMBER OF COIN" + .BYTE 0 + .EVEN +LC_M4 .STRING "UNITS GIVEN FOR EACH" + .BYTE 0 + .EVEN +LC_M5 .STRING "COIN IN LEFT COIN CHUTE." + .BYTE 0 + .EVEN +LC_M6 .STRING "(SEE " + .BYTE ASCII_DQ + .STRING "UNITS / CREDIT" + .BYTE ASCII_DQ + .STRING ")" + .BYTE 0 + .EVEN +CC_M5 .STRING "COIN IN THIRD COIN CHUTE." + .BYTE 0 + .EVEN +RC_M5 .STRING "COIN IN RIGHT COIN CHUTE." + .BYTE 0 + .EVEN +XC_M5 .STRING "COIN IN FOURTH COIN CHUTE." + .BYTE 0 + .EVEN +MZ_M1 .STRING "MODIFIY TOTALIZING" + .BYTE 0 + .EVEN +MZ_M2 .STRING "MULTIPLER VALUE FOR" + .BYTE 0 + .EVEN +MZ_C1 .STRING "CHUTE 1." + .BYTE 0 + .EVEN +MZ_C2 .STRING "CHUTE 2." + .BYTE 0 + .EVEN +MZ_C3 .STRING "CHUTE 3." + .BYTE 0 + .EVEN +MZ_C4 .STRING "CHUTE 4." + .BYTE 0 + .EVEN + +MR_M1 .STRING "TOTALIZER MODE, EITHER." + .BYTE 0 + .EVEN + +MR_M2 .STRING "STANDARD TOTALIZER MODE (NO)" + .BYTE 0 + .EVEN + +MR_M3 .STRING "CUSTOM TOTALIZER MODE (YES)." + .BYTE 0 + .EVEN + +MZ_DB +DBV_M5 .STRING "BILL VALIDATOR." + .BYTE 0 + .EVEN +UC_M1 .STRING "THIS IS THE NUMBER OF COIN" + .BYTE 0 + .EVEN +UC_M2 .STRING "UNITS REQUIRED TO BUY ONE" + .BYTE 0 + .EVEN +UC_M3 .STRING "CREDIT." + .BYTE 0 + .EVEN +UB_M1 .STRING "1 BONUS CREDIT IS AWARDED" + .BYTE 0 + .EVEN +UB_M2 .STRING "AFTER THIS MANY COIN UNITS" + .BYTE 0 + .EVEN +UB_M3 .STRING "HAVE ACCUMULATED." + .BYTE 0 + .EVEN + +UM_M1 .STRING "NO CREDITS WILL BE AWARDED" + .BYTE 0 + .EVEN +UM_M2 .STRING "UNTIL THIS MANY COIN" + .BYTE 0 + .EVEN +UM_M3 .STRING "UNITS HAVE ACCUMULATED." + .BYTE 0 + .EVEN + +CS_M1 .STRING "EACH PLAYER NEEDS THIS" + .BYTE 0 + .EVEN +CS_M2 .STRING "MANY CREDITS TO" + .BYTE 0 + .EVEN +CS_M3 .STRING "BEGIN PLAY." + .BYTE 0 + .EVEN + +CC_M3 .STRING "CONTINUE A GAME." + .BYTE 0 + .EVEN + +FR_M1 .STRING "WHEN SET TO YES," + .BYTE 0 + .EVEN +FR_M2 .STRING "FRACTIONAL CREDITS WILL BE" + .BYTE 0 + .EVEN +FR_M3 .STRING "SEEN ON THE CREDITS SCREEN." + .BYTE 0 + .EVEN +FR_M4 .STRING "FRACTION SHOWN IS:" + .BYTE 0 + .EVEN +FR_M5 .STRING "(COIN UNITS / " + .BYTE ASCII_DQ + .STRING "UNITS/CREDIT" + .BYTE ASCII_DQ + .STRING ")" + .BYTE 0 + .EVEN + +CPD_M1 .STRING "THE DETAILED BOOKKEEPING" + .BYTE 0 + .EVEN +CPD_M2 .STRING "SCREEN SHOWS TOTAL" + .BYTE 0 + .EVEN +CPD_M3 .STRING "COLLECTIONS BASED ON THIS" + .BYTE 0 + .EVEN +CPD_M4 .STRING "MANY COINS PER BILL." + .BYTE 0 + .EVEN +CPD_M5 .STRING "(SET TO ZERO TO DISABLE THE" + .BYTE 0 + .EVEN +CPD_M6 .STRING "DISPLAY OF MONEY TOTALS.)" + .BYTE 0 + .EVEN + +MC_M1 .STRING "THIS IS THE LIMIT FOR" + .BYTE 0 + .EVEN +MC_M2 .STRING "THE CREDITS COUNTER." + .BYTE 0 + .EVEN +MC_M3 .STRING "ADDITIONAL COINS INSERTED" + .BYTE 0 + .EVEN +MC_M4 .STRING "WILL BE LOST." + .BYTE 0 + .EVEN +MC_M5 .STRING "FACTORY SETTING: 50" + .BYTE 0 + .EVEN + +* +* ADJUSTMENT ENUMERATION STRINGS +* +LIST_CNTR + .LONG CNTR_1,CNTR_2,CNTR_3 +LIST_HEAD + .long HEAD_1,HEAD_2 +LIST_DIFF + .LONG DIFF_1,DIFF_2,DIFF_3,DIFF_4,DIFF_5 +; .LONG DIFF_6,DIFF_7,DIFF_8,DIFF_9,DIFF_10 + +LIST_SPEEDS + .long SPEED_1,SPEED_2,SPEED_3 + .long SPEED_4,SPEED_5 + +LIST_FULLG + .long N_4,N_5,N_6,N_7 + .long N_8,N_9,N_10,N_11 + .long N_12,N_13,N_14,N_15 + .long N_16 + +LIST_WINM + .long WG_NONE,WG_FREE +WG_NONE .string "NO BONUS",0 + .even +WG_FREE .string "FREE GAME",0 + .even + +LIST_COMPASS + .long CP_ENABLED + .long CP_DISABLED + +CP_ENABLED .string "ENABLED",0 + .even +CP_DISABLED .string "DISABLED",0 + .even + +LIST_LIVES + .LONG LIVE_1,LIVE_2,LIVE_3,LIVE_4,LIVE_5 + .LONG LIVE_6,LIVE_7 + +;LIST_ROCKS +; .LONG ROCK_1,ROCK_2,ROCK_3,ROCK_4,ROCK_5 +; .LONG ROCK_6,ROCK_7,ROCK_8,ROCK_9,ROCK_10 + +LIST_AMODE + .LONG M_AMS,M_NOAMS + +LIST_NOYES + .LONG M_NO,M_YES + +LIST_YESNO + .LONG M_YES,M_NO + +LIST_DIPNOYES + .LONG M_DNO, M_DYES + +M_NO .STRING "NO" + .BYTE 0 + .EVEN + +M_YES .STRING "YES" + .BYTE 0 + .EVEN + +M_DYES .STRING "DIPSWITCH - YES",0 + .EVEN + +M_DNO .STRING "DIPSWITCH - NO",0 + .EVEN + +CNTR_1 .STRING "1 (PROPORTIONAL)" + .BYTE 0 + .EVEN +CNTR_2 .STRING "2 (1 COUNT/COIN)" + .BYTE 0 + .EVEN +CNTR_3 .STRING "3 (2 COUNTERS)" + .BYTE 0 + .EVEN + +SPEED_1 .string "1 (EXTRA SLOW)",0 + .even +SPEED_2 .string "2 (SLOW)",0 + .even +SPEED_3 .string "3 (NORMAL)",0 + .even +SPEED_4 .string "4 (FAST)",0 + .even +SPEED_5 .string "5 (EXTRA FAST)",0 + .even + +N_4 .string "4",0 +N_5 .string "5",0 +N_6 .string "6",0 +N_7 .string "7",0 +N_8 .string "8 (DEFAULT)",0 +N_9 .string "9",0 +N_10 .string "10",0 +N_11 .string "11",0 +N_12 .string "12",0 +N_13 .string "13",0 +N_14 .string "14",0 +N_15 .string "15",0 +N_16 .string "16",0 + .even + +HEAD_1 .string "1 (NORMAL)",0 + .even +HEAD_2 .string "2 (LARGE)",0 + .even + +DIFF_1 .STRING "1 (EXTRA EASY)" + .BYTE 0 + .EVEN +DIFF_2 .STRING "2 (EASY)" + .BYTE 0 + .EVEN +DIFF_3 .STRING "3 (NORMAL)" + .BYTE 0 + .EVEN +DIFF_4 .STRING "4 (HARD)" + .BYTE 0 + .EVEN +DIFF_5 .STRING "5 (EXTRA HARD)" + .BYTE 0 + .EVEN + + +LIVE_1 .STRING "1 LIFE" + .BYTE 0 + .EVEN +LIVE_2 .STRING "2 LIVES" + .BYTE 0 + .EVEN +LIVE_3 .STRING "3 LIVES" + .BYTE 0 + .EVEN +LIVE_4 .STRING "4 LIVES" + .BYTE 0 + .EVEN +LIVE_5 .STRING "5 LIVES" + .BYTE 0 + .EVEN +LIVE_6 .STRING "6 LIVES" + .BYTE 0 + .EVEN +LIVE_7 .STRING "7 LIVES" + .BYTE 0 + .EVEN + +;ROCK_1 .STRING "1 POWER-UP" +; .BYTE 0 +; .EVEN +;ROCK_2 .STRING "2 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_3 .STRING "3 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_4 .STRING "4 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_5 .STRING "5 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_6 .STRING "6 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_7 .STRING "7 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_8 .STRING "8 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_9 .STRING "9 POWER-UPS" +; .BYTE 0 +; .EVEN +;ROCK_10 .STRING "10 POWER-UPS" +; .BYTE 0 +; .EVEN + +M_AMS .STRING "ON" + .BYTE 0 + .EVEN +M_NOAMS .STRING "OFF" + .BYTE 0 + .EVEN +M_NORM .STRING "NORMAL" + .BYTE 0 + .EVEN +M_LESS .STRING "LESS VIOLENT" + .BYTE 0 + .EVEN +* +* FOR EXTRA MAN EVERY AND LAST EXTRA MAN +* +MESS_OFF .STRING "OFF" + .BYTE 0 + .EVEN + +M_NOBONUS .STRING "NO BONUS CREDIT" + .BYTE 0 + .EVEN + +M_NOMIN .STRING "NO MINIMUM" + .BYTE 0 + .EVEN + +M_NO_COL .STRING "NO MONEY TOTALS" + .BYTE 0 + .EVEN + +****************************************************************************** + .END + \ No newline at end of file diff --git a/BACKUP/ADMSEQ1.ASM b/BACKUP/ADMSEQ1.ASM new file mode 100644 index 0000000..03d3b44 --- /dev/null +++ b/BACKUP/ADMSEQ1.ASM @@ -0,0 +1,640 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 10/12/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "admseq1.asm" + .title "Adam Bomb animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "adamimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;from ROPES.ASM + .ref rope_command + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* STANDS + + SUBR adm_zip_anim + WL TSEC*60,A2ST2D+FR1 + .word 0 + +#STNA2_SPD equ 6 + + SUBR adm_stand2_anim + SUBR adm_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + WL #STNA2_SPD,A2ST2D+FR1 + WL #STNA2_SPD,A2ST2D+FR2 + WL #STNA2_SPD,A2ST2D+FR3 + WL #STNA2_SPD,A2ST2D+FR4 + WL #STNA2_SPD,A2ST2D+FR5 + WL #STNA2_SPD,A2ST2D+FR6 + WL #STNA2_SPD,A2ST2D+FR7 + WL #STNA2_SPD,A2ST2D+FR8 + WL #STNA2_SPD,A2ST2D+FR9 + WL #STNA2_SPD,A2ST2D+FR10 + WL #STNA2_SPD,A2ST2D+FR11 + WL #STNA2_SPD,A2ST2D+FR12 + .word ANI_REPEAT + +#STNA4_SPD equ 6 + SUBR adm_stand4_anim + SUBR adm_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + WL #STNA4_SPD,A4ST4J+FR1 + WL #STNA4_SPD,A4ST4J+FR2 + WL #STNA4_SPD,A4ST4J+FR3 + WL #STNA4_SPD,A4ST4J+FR4 + WL #STNA4_SPD,A4ST4J+FR5 + WL #STNA4_SPD,A4ST4J+FR6 + WL #STNA4_SPD,A4ST4J+FR7 + WL #STNA4_SPD,A4ST4J+FR8 + WL #STNA4_SPD,A4ST4J+FR9 + WL #STNA4_SPD,A4ST4J+FR10 + WL #STNA4_SPD,A4ST4J+FR11 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKING TORSOS + +#TORSO2_SPD equ 4 + + SUBR adm_torso2_anim + SUBR adm_torso8_anim + WL #TORSO2_SPD,A2TW2Z+FR1 + .word ANI_REPEAT + + +#TORSO4_SPD equ 4 + SUBR adm_torso4_anim + SUBR adm_torso6_anim + WL #TORSO4_SPD,A4TW4Z+FR1 + WL #TORSO4_SPD,A4TW4Z+FR2 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + +#W1F2_SPD equ 2 + SUBR adm_walk1_f2_anim + WL #W1F2_SPD,A2WL1A+FR1 + WL #W1F2_SPD,A2WL1A+FR2 + WL #W1F2_SPD,A2WL1A+FR3 + WL #W1F2_SPD,A2WL1A+FR4 + WL #W1F2_SPD,A2WL1A+FR5 + WL #W1F2_SPD,A2WL1A+FR6 + WL #W1F2_SPD,A2WL1A+FR7 + WL #W1F2_SPD,A2WL1A+FR8 + WL #W1F2_SPD,A2WL1A+FR9 + WL #W1F2_SPD,A2WL1A+FR10 + WL #W1F2_SPD,A2WL1A+FR11 + WL #W1F2_SPD,A2WL1A+FR12 + WL #W1F2_SPD,A2WL1A+FR13 + WL #W1F2_SPD,A2WL1A+FR14 + WL #W1F2_SPD,A2WL1A+FR15 + WL #W1F2_SPD,A2WL1A+FR16 + WL #W1F2_SPD,A2WL1A+FR17 + WL #W1F2_SPD,A2WL1A+FR18 + .word ANI_REPEAT + +#W2F2_SPD equ 2 + SUBR adm_walk2_f2_anim + WL #W2F2_SPD,A2WL2B+FR1 + WL #W2F2_SPD,A2WL2B+FR2 + WL #W2F2_SPD,A2WL2B+FR3 + WL #W2F2_SPD,A2WL2B+FR4 + WL #W2F2_SPD,A2WL2B+FR5 + WL #W2F2_SPD,A2WL2B+FR6 + WL #W2F2_SPD,A2WL2B+FR7 + WL #W2F2_SPD,A2WL2B+FR8 + WL #W2F2_SPD,A2WL2B+FR9 + WL #W2F2_SPD,A2WL2B+FR10 + WL #W2F2_SPD,A2WL2B+FR11 + WL #W2F2_SPD,A2WL2B+FR12 + WL #W2F2_SPD,A2WL2B+FR13 + WL #W2F2_SPD,A2WL2B+FR14 + WL #W2F2_SPD,A2WL2B+FR15 + WL #W2F2_SPD,A2WL2B+FR16 + WL #W2F2_SPD,A2WL2B+FR17 + WL #W2F2_SPD,A2WL2B+FR18 + WL #W2F2_SPD,A2WL2B+FR19 + WL #W2F2_SPD,A2WL2B+FR20 + .word ANI_REPEAT + +#W4F2_SPD equ 2 + SUBR adm_walk4_f2_anim + WL #W4F2_SPD,A2WL8B+FR1 + WL #W4F2_SPD,A2WL8B+FR2 + WL #W4F2_SPD,A2WL8B+FR3 + WL #W4F2_SPD,A2WL8B+FR4 + WL #W4F2_SPD,A2WL8B+FR5 + WL #W4F2_SPD,A2WL8B+FR6 + WL #W4F2_SPD,A2WL8B+FR7 + WL #W4F2_SPD,A2WL8B+FR8 + WL #W4F2_SPD,A2WL8B+FR9 + WL #W4F2_SPD,A2WL8B+FR10 + WL #W4F2_SPD,A2WL8B+FR11 + WL #W4F2_SPD,A2WL8B+FR12 + WL #W4F2_SPD,A2WL8B+FR13 + WL #W4F2_SPD,A2WL8B+FR14 + WL #W4F2_SPD,A2WL8B+FR15 + WL #W4F2_SPD,A2WL8B+FR16 + WL #W4F2_SPD,A2WL8B+FR17 + .word ANI_REPEAT + +#W5F2_SPD equ 2 + SUBR adm_walk5_f2_anim + WL #W5F2_SPD,A2WL1A+FR18 + WL #W5F2_SPD,A2WL1A+FR17 + WL #W5F2_SPD,A2WL1A+FR16 + WL #W5F2_SPD,A2WL1A+FR15 + WL #W5F2_SPD,A2WL1A+FR14 + WL #W5F2_SPD,A2WL1A+FR13 + WL #W5F2_SPD,A2WL1A+FR12 + WL #W5F2_SPD,A2WL1A+FR11 + WL #W5F2_SPD,A2WL1A+FR10 + WL #W5F2_SPD,A2WL1A+FR9 + WL #W5F2_SPD,A2WL1A+FR8 + WL #W5F2_SPD,A2WL1A+FR7 + WL #W5F2_SPD,A2WL1A+FR6 + WL #W5F2_SPD,A2WL1A+FR5 + WL #W5F2_SPD,A2WL1A+FR4 + WL #W5F2_SPD,A2WL1A+FR3 + WL #W5F2_SPD,A2WL1A+FR2 + WL #W5F2_SPD,A2WL1A+FR1 + .word ANI_REPEAT + +#W6F2_SPD equ 2 + SUBR adm_walk6_f2_anim + WL #W6F2_SPD,A2WL2B+FR20 + WL #W6F2_SPD,A2WL2B+FR19 + WL #W6F2_SPD,A2WL2B+FR18 + WL #W6F2_SPD,A2WL2B+FR17 + WL #W6F2_SPD,A2WL2B+FR16 + WL #W6F2_SPD,A2WL2B+FR15 + WL #W6F2_SPD,A2WL2B+FR14 + WL #W6F2_SPD,A2WL2B+FR13 + WL #W6F2_SPD,A2WL2B+FR12 + WL #W6F2_SPD,A2WL2B+FR11 + WL #W6F2_SPD,A2WL2B+FR10 + WL #W6F2_SPD,A2WL2B+FR9 + WL #W6F2_SPD,A2WL2B+FR8 + WL #W6F2_SPD,A2WL2B+FR7 + WL #W6F2_SPD,A2WL2B+FR6 + WL #W6F2_SPD,A2WL2B+FR5 + WL #W6F2_SPD,A2WL2B+FR4 + WL #W6F2_SPD,A2WL2B+FR3 + WL #W6F2_SPD,A2WL2B+FR2 + WL #W6F2_SPD,A2WL2B+FR1 + .word ANI_REPEAT + + +#W8F2_SPD equ 2 + SUBR adm_walk8_f2_anim + WL #W8F2_SPD,A2WL8B+FR17 + WL #W8F2_SPD,A2WL8B+FR16 + WL #W8F2_SPD,A2WL8B+FR15 + WL #W8F2_SPD,A2WL8B+FR14 + WL #W8F2_SPD,A2WL8B+FR13 + WL #W8F2_SPD,A2WL8B+FR12 + WL #W8F2_SPD,A2WL8B+FR11 + WL #W8F2_SPD,A2WL8B+FR10 + WL #W8F2_SPD,A2WL8B+FR9 + WL #W8F2_SPD,A2WL8B+FR8 + WL #W8F2_SPD,A2WL8B+FR7 + WL #W8F2_SPD,A2WL8B+FR6 + WL #W8F2_SPD,A2WL8B+FR5 + WL #W8F2_SPD,A2WL8B+FR4 + WL #W8F2_SPD,A2WL8B+FR3 + WL #W8F2_SPD,A2WL8B+FR2 + WL #W8F2_SPD,A2WL8B+FR1 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKS FACING #4 + +#W1F4_SPD equ 2 + SUBR adm_walk1_f4_anim + WL #W1F4_SPD,A4WL5B+FR20 + WL #W1F4_SPD,A4WL5B+FR19 + WL #W1F4_SPD,A4WL5B+FR18 + WL #W1F4_SPD,A4WL5B+FR17 + WL #W1F4_SPD,A4WL5B+FR16 + WL #W1F4_SPD,A4WL5B+FR15 + WL #W1F4_SPD,A4WL5B+FR14 + WL #W1F4_SPD,A4WL5B+FR13 + WL #W1F4_SPD,A4WL5B+FR12 + WL #W1F4_SPD,A4WL5B+FR11 + WL #W1F4_SPD,A4WL5B+FR10 + WL #W1F4_SPD,A4WL5B+FR9 + WL #W1F4_SPD,A4WL5B+FR8 + WL #W1F4_SPD,A4WL5B+FR7 + WL #W1F4_SPD,A4WL5B+FR6 + WL #W1F4_SPD,A4WL5B+FR5 + WL #W1F4_SPD,A4WL5B+FR4 + WL #W1F4_SPD,A4WL5B+FR3 + WL #W1F4_SPD,A4WL5B+FR2 + WL #W1F4_SPD,A4WL5B+FR1 + .word ANI_REPEAT + +#W2F4_SPD equ 2 + SUBR adm_walk2_f4_anim + WL #W2F4_SPD,A4WL2B+FR1 + WL #W2F4_SPD,A4WL2B+FR2 + WL #W2F4_SPD,A4WL2B+FR3 + WL #W2F4_SPD,A4WL2B+FR4 + WL #W2F4_SPD,A4WL2B+FR5 + WL #W2F4_SPD,A4WL2B+FR6 + WL #W2F4_SPD,A4WL2B+FR7 + WL #W2F4_SPD,A4WL2B+FR8 + WL #W2F4_SPD,A4WL2B+FR9 + WL #W2F4_SPD,A4WL2B+FR10 + WL #W2F4_SPD,A4WL2B+FR11 + WL #W2F4_SPD,A4WL2B+FR12 + WL #W2F4_SPD,A4WL2B+FR13 + WL #W2F4_SPD,A4WL2B+FR14 + WL #W2F4_SPD,A4WL2B+FR15 + WL #W2F4_SPD,A4WL2B+FR16 + WL #W2F4_SPD,A4WL2B+FR17 + WL #W2F4_SPD,A4WL2B+FR18 + WL #W2F4_SPD,A4WL2B+FR19 + WL #W2F4_SPD,A4WL2B+FR20 + .word ANI_REPEAT + +#W4F4_SPD equ 2 + SUBR adm_walk4_f4_anim + WL #W4F4_SPD,A4WL4A+FR1 + WL #W4F4_SPD,A4WL4A+FR2 + WL #W4F4_SPD,A4WL4A+FR3 + WL #W4F4_SPD,A4WL4A+FR4 + WL #W4F4_SPD,A4WL4A+FR5 + WL #W4F4_SPD,A4WL4A+FR6 + WL #W4F4_SPD,A4WL4A+FR7 + WL #W4F4_SPD,A4WL4A+FR8 + WL #W4F4_SPD,A4WL4A+FR9 + WL #W4F4_SPD,A4WL4A+FR10 + WL #W4F4_SPD,A4WL4A+FR11 + WL #W4F4_SPD,A4WL4A+FR12 + WL #W4F4_SPD,A4WL4A+FR13 + WL #W4F4_SPD,A4WL4A+FR14 + WL #W4F4_SPD,A4WL4A+FR15 + WL #W4F4_SPD,A4WL4A+FR16 + WL #W4F4_SPD,A4WL4A+FR17 + WL #W4F4_SPD,A4WL4A+FR18 + WL #W4F4_SPD,A4WL4A+FR19 + .word ANI_REPEAT + +#W5F4_SPD equ 2 + SUBR adm_walk5_f4_anim + WL #W5F4_SPD,A4WL5B+FR1 + WL #W5F4_SPD,A4WL5B+FR2 + WL #W5F4_SPD,A4WL5B+FR3 + WL #W5F4_SPD,A4WL5B+FR4 + WL #W5F4_SPD,A4WL5B+FR5 + WL #W5F4_SPD,A4WL5B+FR6 + WL #W5F4_SPD,A4WL5B+FR7 + WL #W5F4_SPD,A4WL5B+FR8 + WL #W5F4_SPD,A4WL5B+FR9 + WL #W5F4_SPD,A4WL5B+FR10 + WL #W5F4_SPD,A4WL5B+FR11 + WL #W5F4_SPD,A4WL5B+FR12 + WL #W5F4_SPD,A4WL5B+FR13 + WL #W5F4_SPD,A4WL5B+FR14 + WL #W5F4_SPD,A4WL5B+FR15 + WL #W5F4_SPD,A4WL5B+FR16 + WL #W5F4_SPD,A4WL5B+FR17 + WL #W5F4_SPD,A4WL5B+FR18 + WL #W5F4_SPD,A4WL5B+FR19 + WL #W5F4_SPD,A4WL5B+FR20 + .word ANI_REPEAT + +#W6F4_SPD equ 2 + SUBR adm_walk6_f4_anim + WL #W6F4_SPD,A4WL2B+FR20 + WL #W6F4_SPD,A4WL2B+FR19 + WL #W6F4_SPD,A4WL2B+FR18 + WL #W6F4_SPD,A4WL2B+FR17 + WL #W6F4_SPD,A4WL2B+FR16 + WL #W6F4_SPD,A4WL2B+FR15 + WL #W6F4_SPD,A4WL2B+FR14 + WL #W6F4_SPD,A4WL2B+FR13 + WL #W6F4_SPD,A4WL2B+FR12 + WL #W6F4_SPD,A4WL2B+FR11 + WL #W6F4_SPD,A4WL2B+FR10 + WL #W6F4_SPD,A4WL2B+FR9 + WL #W6F4_SPD,A4WL2B+FR8 + WL #W6F4_SPD,A4WL2B+FR7 + WL #W6F4_SPD,A4WL2B+FR6 + WL #W6F4_SPD,A4WL2B+FR5 + WL #W6F4_SPD,A4WL2B+FR4 + WL #W6F4_SPD,A4WL2B+FR3 + WL #W6F4_SPD,A4WL2B+FR2 + WL #W6F4_SPD,A4WL2B+FR1 + .word ANI_REPEAT + +#W8F4_SPD equ 2 + SUBR adm_walk8_f4_anim + WL #W8F4_SPD,A4WL4A+FR19 + WL #W8F4_SPD,A4WL4A+FR18 + WL #W8F4_SPD,A4WL4A+FR17 + WL #W8F4_SPD,A4WL4A+FR16 + WL #W8F4_SPD,A4WL4A+FR15 + WL #W8F4_SPD,A4WL4A+FR14 + WL #W8F4_SPD,A4WL4A+FR13 + WL #W8F4_SPD,A4WL4A+FR12 + WL #W8F4_SPD,A4WL4A+FR11 + WL #W8F4_SPD,A4WL4A+FR10 + WL #W8F4_SPD,A4WL4A+FR9 + WL #W8F4_SPD,A4WL4A+FR8 + WL #W8F4_SPD,A4WL4A+FR7 + WL #W8F4_SPD,A4WL4A+FR6 + WL #W8F4_SPD,A4WL4A+FR5 + WL #W8F4_SPD,A4WL4A+FR4 + WL #W8F4_SPD,A4WL4A+FR3 + WL #W8F4_SPD,A4WL4A+FR2 + WL #W8F4_SPD,A4WL4A+FR1 + .word ANI_REPEAT + +#***************************************************************************** +* +* TURNS (STANDS) + + + SUBR adm_2_to_4_turn_anim + SUBR adm_8_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR2 + WL 3,A1TT5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_2_turn_anim + SUBR adm_6_to_8_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR3 + WL 3,A1TT5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_6_turn_anim + SUBR adm_6_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR4 + .word ANI_XFLIP + WL 3,A1TT5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_2_to_8_turn_anim + SUBR adm_8_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR1 + .word ANI_XFLIP + WL 3,A1TT5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_8_turn_anim + SUBR adm_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR3 + WL 3,A1TT5Z+FR2 + WL 3,A1TT5Z+FR1 + .word ANI_XFLIP + WL 3,A1TT5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_2_to_6_turn_anim + SUBR adm_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TT5Z+FR1 + .word ANI_XFLIP + WL 3,A1TT5Z+FR1 + WL 3,A1TT5Z+FR2 + WL 3,A1TT5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + + SUBR adm_2_to_4_turn2_anim + SUBR adm_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TR5Z+FR2 + .word ANI_SETFACING + WL 3,A1TR5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_2_turn2_anim + SUBR adm_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TR5Z+FR3 + .word ANI_SETFACING + WL 3,A1TR5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_6_turn2_anim + SUBR adm_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TR5Z+FR4 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,A1TR5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_2_to_8_turn2_anim + SUBR adm_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,A1TR5Z+FR1 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,A1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_4_to_8_turn2_anim + SUBR adm_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_2_to_6_turn2_anim + SUBR adm_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR adm_run2_anim + .word ANI_SETMODE,MODE_NORMAL + WL ANI_GOTO,#lp0 + +#RUN_SPD equ 2 + SUBR adm_run_anim + .word ANI_SETMODE,MODE_UNINT ;uninterruptable +#lp0 +#lp1 + WL #RUN_SPD+1,A3RN3A+FR10 + WL #RUN_SPD,A3RN3A+FR11 + WL #RUN_SPD,A3RN3A+FR12 + WL #RUN_SPD,A3RN3A+FR13 + WL #RUN_SPD,A3RN3A+FR1 + WL #RUN_SPD+1,A3RN3A+FR2 + WL #RUN_SPD,A3RN3A+FR3 + .word ANI_SOUND,run_snd + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + WL #RUN_SPD+1,A3RN3A+FR4 + WL #RUN_SPD,A3RN3A+FR5 + WL #RUN_SPD+1,A3RN3A+FR6 + WL #RUN_SPD,A3RN3A+FR7 + WL #RUN_SPD+1,A3RN3A+FR8 + .word ANI_SOUND,run_snd + WL #RUN_SPD,A3RN3A+FR9 + + WL ANI_GOTO,#lp1 + + +* +* OUT OF CONTROL RUN IN #3 + + SUBR adm_ocrun_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP ;don't change facing + WL 15,A3RN3A+FR1 +#lp + WL #RUN_SPD+1,A3RN3A+FR10 + WL #RUN_SPD,A3RN3A+FR11 + WL #RUN_SPD,A3RN3A+FR12 + WL #RUN_SPD,A3RN3A+FR13 + WL #RUN_SPD,A3RN3A+FR1 + WL #RUN_SPD+1,A3RN3A+FR2 + WL #RUN_SPD,A3RN3A+FR3 + .word ANI_SOUND,run_snd + WL #RUN_SPD+1,A3RN3A+FR4 + WL #RUN_SPD,A3RN3A+FR5 + WL #RUN_SPD+1,A3RN3A+FR6 + WL #RUN_SPD,A3RN3A+FR7 + WL #RUN_SPD+1,A3RN3A+FR8 + .word ANI_SOUND,run_snd + WL #RUN_SPD,A3RN3A+FR9 + WL ANI_GOTO,#lp + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR adm_bounce_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + .word ANI_ZEROVELS + WL 4,A3BO3A+FR1 + + WL 3,A3BO3A+FR2 + .word ANI_BOUNCEROPE,0 + WL 1,A3BO3A+FR2 + + WL 3,A3BO3A+FR3 + .word ANI_BOUNCEROPE,1 + WL 1,A3BO3A+FR3 + + WL 3,A3BO3A+FR4 + .word ANI_BOUNCEROPE,2 + WL 1,A3BO3A+FR4 + + WL 5,A3BO3A+FR5 + .word ANI_BOUNCEROPE,4 + WL 1,A3BO3A+FR5 + + WL 3,A3BO3A+FR6 + .word ANI_BOUNCEROPE,-1 ;release + WL 1,A3BO3A+FR6 + + WL 4,A3BO3A+FR7 + .word ANI_SOUND,run_snd + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** + + SUBR adm_slave_image_table + + .long #s2_grapple ;0 S2_GRAPPLE + .long #s4_grapple ;1 S4_GRAPPLE + .long #s3_grap_to_hh ;2 S3_GRAP_TO_HH + .long #s3_pile_driven ;3 S3_PILE_DRIVEN + + +#s2_grapple ;ABOMB #2 grapple + .long A2GR3Z+FR5 ;0 (most forward) + .long A2GR3Z+FR6 ;1 + .long A2GR3Z+FR7 ;2 + .long A2GR3Z+FR8 ;3 (most back) + +#s4_grapple ;ABOMB #4 grapple + .long A4GR3B+FR7 ;0 (most forward) + .long A4GR3B+FR6 ;1 + .long A4GR3B+FR5 ;2 + .long A4GR3B+FR4 ;3 (most back) + +#s3_grap_to_hh ;ABOMB #3 from grapple to head being held + +#s3_pile_driven ;ABOMB #3 pile driven + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/ADMSEQ2.ASM b/BACKUP/ADMSEQ2.ASM new file mode 100644 index 0000000..619eac4 --- /dev/null +++ b/BACKUP/ADMSEQ2.ASM @@ -0,0 +1,1630 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 10/12/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "admseq2.asm" + .title "Adam Bomb animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "display.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "adamimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* NORMAL #2 PUNCH + +#PUNCH_SPD equ 3 + SUBR adm_2_punch_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 2,A2PU3D+FR1 + WL 2,A2PU3D+FR2 + WL 5,A2PU3D+FR3 + WL 3,A2PU3D+FR4 + WL 3,A2PU3D+FR5 + + .word ANI_ATTACK_ON, AMODE_PUNCH,78,104,38,14 ;mode,x,y,w,h + WL 5,A2PU3D+FR6 + .word ANI_ATTACK_OFF + + WL 3,A2PU3D+FR7 + WL 3,A2PU3D+FR8 + WL 3,A2PU3D+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #4 PUNCH + + SUBR adm_4_punch_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 2,A4PU3C+FR1 + WL 2,A4PU3C+FR2 + WL 5,A4PU3C+FR3 + WL 3,A4PU3C+FR4 + WL 3,A4PU3C+FR5 + + .word ANI_ATTACK_ON, AMODE_PUNCH,88,100,38,14 ;mode,x,y,w,h + WL 5,A4PU3C+FR6 + .word ANI_ATTACK_OFF + + WL 3,A4PU3C+FR7 + WL 3,A4PU3C+FR8 + WL 3,A4PU3C+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 UPPERCUT + + SUBR adm_2_uprcut_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,A2UP3A+FR1 + WL 3,A2UP3A+FR3 + WL 3,A2UP3A+FR4 + WL 3,A2UP3A+FR5 + + .word ANI_ATTACK_ON, AMODE_UPRCUT,58,130,30,50 ;mode,x,y,w,h + WL 10,A2UP3A+FR6 + .word ANI_ATTACK_OFF + + WL 4,A2UP3A+FR7 + WL 4,A2UP3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 UPPERCUT + + SUBR adm_4_uprcut_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 4,A4UP3A+FR1 + WL 3,A4UP3A+FR2 + WL 3,A4UP3A+FR3 + WL 3,A4UP3A+FR4 + WL 3,A4UP3A+FR5 + + .word ANI_ATTACK_ON, AMODE_UPRCUT,53,140,20,62 ;mode,x,y,w,h + WL 10,A4UP3A+FR6 + .word ANI_ATTACK_OFF + WL 4,A4UP3A+FR7 + WL 4,A4UP3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEADBUTT + +#BUTT_SPD equ 3 + SUBR adm_2_butt_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #BUTT_SPD,A2BC3B+FR1 + WL #BUTT_SPD,A2BC3B+FR2 + WL #BUTT_SPD,A2BC3B+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,42,119,23,23 ;mode,x,y,w,h + WL #BUTT_SPD,A2BC3B+FR4 + .word ANI_ATTACK_OFF + + WL #BUTT_SPD,A2BC3B+FR5 + WL #BUTT_SPD,A2BC3B+FR6 + WL #BUTT_SPD,A2BC3B+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 HEADBUTT + +#BUTT_SPD equ 3 + SUBR adm_4_butt_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #BUTT_SPD,A4BC3A+FR2 + WL #BUTT_SPD,A4BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,37,118,28,23 ;mode,x,y,w,h + WL #BUTT_SPD,A4BC3A+FR4 + .word ANI_ATTACK_OFF + + WL #BUTT_SPD,A4BC3A+FR5 + WL #BUTT_SPD,A4BC3A+FR6 + WL #BUTT_SPD,A4BC3A+FR7 + WL #BUTT_SPD,A4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #2 KICK + + SUBR adm_2_kick_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,A2KM3A+FR1 + WL 3,A2KM3A+FR2 + WL 3,A2KM3A+FR3 + + .word ANI_ATTACK_ON, AMODE_KICK,92,85,40,20 ;mode,x,y,w,h + WL 8,A2KM3A+FR4 + .word ANI_ATTACK_OFF + + WL 3,A2KM3A+FR5 + WL 3,A2KM3A+FR6 + WL 3,A2KM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #4 KICK + + SUBR adm_4_kick_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 2,A4KM3C+FR1 + WL 2,A4KM3C+FR2 + WL 2,A4KM3C+FR3 +; WL 2,A4KM3C+FR4 + WL 3,A4KM3C+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,88,80,40,20 ;mode,x,y,w,h + WL 8,A4KM3C+FR6 + .word ANI_ATTACK_OFF + + WL 3,A4KM3C+FR7 + WL 3,A4KM3C+FR8 + WL 3,A4KM3C+FR9 +; WL 2,A4KM3C+FR10 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KNEE + +;not currently implemented +#KNEE_SPD equ 4 + SUBR adm_2_knee_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #KNEE_SPD,A2NM3A+FR1 + WL #KNEE_SPD,A2NM3A+FR2 + WL #KNEE_SPD,A2NM3A+FR3 + WL #KNEE_SPD,A2NM3A+FR4 + WL #KNEE_SPD,A2NM3A+FR5 + WL #KNEE_SPD,A2NM3A+FR6 + WL #KNEE_SPD,A2NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 KNEE + +;not currently implemented +#KNEE_SPD equ 4 + SUBR adm_4_knee_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #KNEE_SPD,A4NM3A+FR1 + WL #KNEE_SPD,A4NM3A+FR2 + WL #KNEE_SPD,A4NM3A+FR3 + WL #KNEE_SPD,A4NM3A+FR4 + WL #KNEE_SPD,A4NM3A+FR5 + WL #KNEE_SPD,A4NM3A+FR6 + WL #KNEE_SPD,A4NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 FLYING KICK + +#FKICK_SPD equ 3 + + SUBR adm_flying_kick_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; WL 3,A3DC3B+FR1 +; WL 2,A3DC3B+FR2 + WL 2,A3DC3B+FR3 + WL ANI_CODE,#get_xvel + WL ANI_SET_YVEL,70000h + + WL 6,A3DC3B+FR4 + WL 7,A3DC3B+FR5 + + .word ANI_ATTACK_ON, AMODE_FLYKICK,90,90,67,37 ;mode,x,y,w,h + WL 7,A3DC3B+FR6 + .word ANI_ATTACK_OFF + + WL 6,A3DC3B+FR7 + WL 3,A3DC3B+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SOUND,bounce_l1 + WL 3,A3DC3B+FR9 + .word ANI_XFLIP + + WL ANI_GOTO,adm_facedown_getup_anim + + +;Give player correct XVEL + SUBRP #get_xvel + + + move *a13(FACING_DIR),a0 + + move *a13(OBJ_XVEL),a14,L + jrnz #mv + + ;Wrestler not moving toward opponent + + movi 20000h,a1 + btst PLAYER_RIGHT_BIT,a0 + jrnz #setxvel + + movi -20000h,a1 + jruc #setxvel + +#mv + ;Is wrestler backing away from opponent? + move *a13(FACING_DIR),a1 + btst MOVE_LEFT_BIT,a1 + jrnz #face_lft + clr a1 + move a14,a14 + jrn #setxvel ;Wrestler was back pedaling + jruc #lunge +#face_lft + clr a1 + move a14,a14 + jrnn #setxvel ;Wrestler was back pedaling + +#lunge + ;Will lunge kick forward + movi 40000h,a1 + btst PLAYER_RIGHT_BIT,a0 + jrnz #setxvel + + movi -40000h,a1 +#setxvel + move a1,*a13(OBJ_XVEL),L + rets + + +#***************************************************************************** +* +* BODY HIT + +#BODY_HIT_SPD equ 3 + SUBR adm_4_body_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL ANI_CODE,#get_xvel + WL ANI_SET_YVEL,48000h + WL 4,A4AM4B+FR1 + WL 4,A4AM4B+FR2 + WL 6,A4AM4B+FR3 + WL 4,A4AM4B+FR4 + .word ANI_ZEROVELS + WL 6,A4AM4B+FR5 + WL 3,A4AM4B+FR6 + WL 3,A4AM4B+FR7 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR adm_2_body_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL ANI_CODE,#get_xvel + WL ANI_SET_YVEL,48000h + WL 4,A2AM2A+FR1 + WL 4,A2AM2A+FR2 + WL 6,A2AM2A+FR3 + WL 4,A2AM2A+FR4 + .word ANI_ZEROVELS + WL 6,A2AM2A+FR5 + WL 3,A2AM2A+FR6 + WL 3,A2AM2A+FR7 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#setface +;Need to set facing dir because of this odd getup sequence + movk 10,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #rgt + movk 6,a1 +#rgt move a1,*a13(FACING_DIR) + rets + +#get_xvel + +;Give player correct XVEL +;BUG!!! If this guy gets hit in the butt, he will lunge back into kicker! +;What is the best way to jump back from opponent? Use the closest stuff? +;Maybe we should start the XVEL back when we start the BODY_HIT. + + move *a13(FACING_DIR),a0 + + movi 20000h,a1 + btst PLAYER_RIGHT_BIT,a0 + jrz #setxvel + + movi -20000h,a1 +#setxvel + move a1,*a13(OBJ_XVEL),L + rets + + +#***************************************************************************** +* +* FALL BACK + + SUBR adm_fall_back_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 5,A3FD3B+FR1 + WL 5,A3FD3B+FR2 + WL 5,A3FD3B+FR3 + WL 5,A3FD3B+FR4 + .word ANI_WAITHITGND + WL 4,A3FD3B+FR5 + WL 4,A3FD3B+FR6 + WL 4,A3FD3B+FR7 + .word ANI_SOUND,bounce_l1 + .word ANI_SHAKER,3 + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_END + +#***************************************************************************** +* +* GET UP + + SUBR adm_facedown_getup_anim + WL 4,A3GD2A+FR1 + WL 4,A3GD2A+FR2 + WL 4,A3GD2A+FR3 + WL 4,A3GD2A+FR4 + WL ANI_CODE,#choose_dir + WL ANI_IFSTATUS,#getup_in_2 +#getup_in_4 + WL 4,A3GD4A+FR5 + WL 4,A3GD4A+FR6 + WL 4,A3GD4A+FR7 + WL 4,A3GD4A+FR8 + WL ANI_GOTO,#getup_done +#getup_in_2 + WL 4,A3GD2A+FR5 + WL 4,A3GD2A+FR6 + WL 4,A3GD2A+FR7 + WL 4,A3GD2A+FR8 +#getup_done + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +; Routine to choose #2 or #4 getup. clear MODE_STATUS bit to start, +; then set if for a getup in 2, or leave clear for a getup in 4. + +#choose_dir + ;facing dir is pretty much screwed at this point, so we'll re- + ;calculate it. get the left or right bits from the B_FLIPH bit + ;in OBJ_CONTROL. get the up or down bits from the facing_dir table. + + movi MOVE_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrnz #rgt + movi MOVE_LEFT,a1 +#rgt + ori MOVE_DOWN,a1 + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + move *a13(NEW_FACING_DIR),a0 + btst PLAYER_UP_BIT,a0 + jrz #cd_done + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + andni MOVE_DOWN,a1 + ori MOVE_UP,a1 +#cd_done + move a1,*a13(FACING_DIR) + rets + + +;#getup_face +; move *a13(PLYRNUM),a0 +; sll 4,a0 ;x 16 +; addi facing_dir,a0 +; move *a0,a0 +; move *a13(OBJ_CONTROL),a1 +; btst B_FLIPH,a1 +; jrz #noflip +; btst MOVE_RIGHT_BIT,a0 +; jrz #gf_done +; xori M_FLIPH,a1 +; move a1,*a13(OBJ_CONTROL) +; rets +; +;#noflip +; btst MOVE_LEFT_BIT,a0 +; jrz #gf_done +; xori M_FLIPH,a1 +; move a1,*a13(OBJ_CONTROL) +;#gf_done +; rets + + +#GETUP_SPD equ 4 + + SUBR adm_faceup_getup_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #GETUP_SPD,A3GU4A+FR1 + WL #GETUP_SPD,A3GU4A+FR2 + WL #GETUP_SPD,A3GU4A+FR3 + WL #GETUP_SPD,A3GU4A+FR4 + WL #GETUP_SPD,A3GU4A+FR5 + WL #GETUP_SPD,A3GU4A+FR6 + WL #GETUP_SPD,A3GU4A+FR7 + WL #GETUP_SPD,A3GU4A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 HEAD HIT + +#HEAD_HIT_SPD equ 3 +#LB_SPEED equ 3 + SUBR adm_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL #HEAD_HIT_SPD,A4AH4C+FR1 + WL #HEAD_HIT_SPD,A4AH4C+FR2 + WL #HEAD_HIT_SPD+1,A4AH4C+FR3 + WL #HEAD_HIT_SPD+1,A4AH4C+FR4 + WL #HEAD_HIT_SPD,A4AH4C+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEAD HIT + +#HEAD_HIT_SPD equ 3 +#LB_SPEED equ 3 + SUBR adm_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL #HEAD_HIT_SPD,A2AH2A+FR1 + WL #HEAD_HIT_SPD+1,A2AH2A+FR2 + WL #HEAD_HIT_SPD+1,A2AH2A+FR3 + WL #HEAD_HIT_SPD+1,A2AH2A+FR4 + WL #HEAD_HIT_SPD+1,A2AH2A+FR5 + WL #HEAD_HIT_SPD+1,A2AH2A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* FACE HIT (HANDS ON FACE) + +#FACE_2_HIT_SPD equ 4 + SUBR adm_2_face_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + WL #FACE_2_HIT_SPD,A3AE2A+FR1 + WL #FACE_2_HIT_SPD,A3AE2A+FR2 + WL #FACE_2_HIT_SPD,A3AE2A+FR3 + WL #FACE_2_HIT_SPD,A3AE2A+FR4 + WL #FACE_2_HIT_SPD,A3AE2A+FR5 + WL #FACE_2_HIT_SPD,A3AE2A+FR6 + WL #FACE_2_HIT_SPD,A3AE2A+FR7 + .word ANI_OFFSET,-13,0,0 ;x,y,z + WL 2,A2ST2D+FR1 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#FACE_4_HIT_SPD equ 4 + SUBR adm_4_face_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + WL #FACE_4_HIT_SPD,A3AE4A+FR1 + WL #FACE_4_HIT_SPD,A3AE4A+FR2 + WL #FACE_4_HIT_SPD,A3AE4A+FR3 + WL #FACE_4_HIT_SPD,A3AE4A+FR4 + WL #FACE_4_HIT_SPD,A3AE4A+FR5 + WL #FACE_4_HIT_SPD,A3AE4A+FR6 + WL #FACE_4_HIT_SPD,A3AE4A+FR7 + .word ANI_OFFSET,-13,0,0 ;x,y,z + WL 2,A4ST4J+FR1 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#setface + movk 10,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #rgt + movk 6,a1 +#rgt move a1,*a13(FACING_DIR) + rets + + +#***************************************************************************** +* +* GRAB & THROW + +;this isn't called yet. +#GRABTHR_SPD equ 3 + SUBR adm_grab_throw_anim +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; WL #GRABTHR_SPD,A3GS3A+FR1 +; WL #GRABTHR_SPD,A3GS3A+FR2 +; +; .word ANI_ATTACK_ON, AMODE_GRABTHROW,80,75,32,31 ;mode,x,y,w,h +; .word ANI_ATTACHZ,76,54,0 +; WL #GRABTHR_SPD,A3GS3A+FR3 +; WL #GRABTHR_SPD,A3GS3A+FR4 +; .word ANI_ATTACK_OFF +; +; .word ANI_ATTACH,63,69 ;xoff,yoff +; WL #GRABTHR_SPD,A3GS3A+FR5 +; +; .word ANI_ATTACH,56,81 +; WL #GRABTHR_SPD,A3GS3A+FR6 +; +; .word ANI_ATTACH,37,107 +; WL #GRABTHR_SPD,A3GS3A+FR7 +; +; .word ANI_ATTACH,15,121 +; WL #GRABTHR_SPD,A3GS3A+FR8 +; +; .word ANI_ATTACH,-8,118 +; WL #GRABTHR_SPD,A3GS3A+FR9 +; +; .word ANI_ATTACH,-33,104 +; WL #GRABTHR_SPD,A3GS3A+FR10 +; +; .word ANI_ATTACH,-59,48 +; WL #GRABTHR_SPD,A3GS3A+FR11 +; +; .word ANI_ATTACH,-53,37 +; WL #GRABTHR_SPD,A3GS3A+FR12 +; .word ANI_DETACH +; +; WL #GRABTHR_SPD,A3GS3A+FR13 +; WL #GRABTHR_SPD,A3GS3A+FR14 +; WL #GRABTHR_SPD,A3GS3A+FR15 +; WL #GRABTHR_SPD,A3GS3A+FR16 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 FLYING CLOTHESLINE + +#CLINE_SPD equ 3 + SUBR adm_2_fly_cline_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_INAIR + WL #CLINE_SPD,A3LC3A+FR1 + WL #CLINE_SPD,A3LC3A+FR2 + WL #CLINE_SPD,A3LC3A+FR3 + + WL ANI_SET_YVEL,58000h + + WL #CLINE_SPD,A3LC3A+FR4 + + .word ANI_OFFSET,-5,50,0 + + WL #CLINE_SPD,A3LC3A+FR5 + WL #CLINE_SPD,A3LC3A+FR6 + + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_SHAKER,3 + .word ANI_SOUND,bounce_l1 + + WL #CLINE_SPD,A3LC3A+FR7 + WL #CLINE_SPD,A3LC3A+FR8 + WL #CLINE_SPD,A3LC3A+FR9 + + WL ANI_GOTO,adm_facedown_getup_anim + +#***************************************************************************** +* +* #4 FLYING CLOTHESLINE + +#CLINE_SPD equ 3 + SUBR adm_4_fly_cline_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_INAIR + WL #CLINE_SPD,A3RC3A+FR1 + WL #CLINE_SPD,A3RC3A+FR2 + WL #CLINE_SPD,A3RC3A+FR3 + + WL ANI_SET_YVEL,58000h + + WL #CLINE_SPD,A3RC3A+FR4 + WL #CLINE_SPD,A3RC3A+FR5 + + .word ANI_OFFSET,0,43,0 + + WL #CLINE_SPD,A3RC3A+FR6 + + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_SHAKER,3 + .word ANI_SOUND,bounce_l1 + + WL #CLINE_SPD,A3RC3A+FR7 + WL #CLINE_SPD,A3RC3A+FR8 + + WL ANI_GOTO,adm_facedown_getup_anim + +#***************************************************************************** +* +* CARRYING FRAMES + +carry2_anim +; WL 1,S2CA2 + .word ANI_END + +carry4_anim +; WL 1,S4CA4 + .word ANI_END + +#***************************************************************************** +* +* #2 ELBOW DROP + + SUBR adm_2_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,A2PJ2C+FR1 + WL 3,A2PJ2C+FR2 + WL ANI_SET_YVEL,68000h + WL 3,A2PJ2C+FR3 + .word ANI_OFFSET,0,34,0 + WL 3,A2PJ2C+FR4 + .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,50,40,-45,25,30,0 ;mode,x,y,z,w,h,d + .word ANI_WAITHITGND + .word ANI_SOUND,bounce_l1 + .word ANI_SHAKER,3 + .word ANI_SHAKEROPES,0 + WL 3,A2PJ2C+FR5 + WL 3,A2PJ2C+FR6 + .word ANI_ATTACK_OFF + WL 3,A2PJ2C+FR7 + WL 4,A3GD2A+FR6 + WL 4,A3GD2A+FR7 + WL 4,A3GD2A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 ELBOW DROP + + SUBR adm_4_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 4,A3PJ3B+FR1 + WL 4,A3PJ3B+FR2 + WL ANI_SET_YVEL,68000h + .word ANI_OFFSET,0,34,0 + WL 4,A3PJ3B+FR3 + WL 4,A3PJ3B+FR4 + .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,30,20,45,25,20,0 ;mode,x,y,z,w,h,d + .word ANI_WAITHITGND + .word ANI_SOUND,bounce_l1 + .word ANI_SHAKER,3 + .word ANI_SHAKEROPES,0 + WL 2,A3PJ3B+FR5 + WL 6,A3PJ3B+FR6 + .word ANI_ATTACK_OFF + WL 4,A3GD4A+FR4 + WL 4,A3GD4A+FR5 + WL 4,A3GD4A+FR6 + WL 4,A3GD4A+FR7 + WL 4,A3GD4A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + +#STOMP_SPD equ 3 + SUBR adm_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #STOMP_SPD,A2JT2A+FR7 + WL #STOMP_SPD,A2JT2A+FR8 + WL #STOMP_SPD,A2JT2A+FR1 + + WL ANI_SET_YVEL,58000h + + WL #STOMP_SPD,A2JT2A+FR2 + WL #STOMP_SPD,A2JT2A+FR3 + WL #STOMP_SPD,A2JT2A+FR4 + WL #STOMP_SPD,A2JT2A+FR5 + .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,38,40,-40,60,20,0 ;mode,x,y,z,w,h,d + .word ANI_WAITHITGND + .word ANI_ATTACK_OFF + WL #STOMP_SPD,A2JT2A+FR6 + WL #STOMP_SPD,A2JT2A+FR7 + WL #STOMP_SPD,A2JT2A+FR8 + WL #STOMP_SPD,A2JT2A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + +#STOMP_SPD equ 4 + SUBR adm_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #STOMP_SPD,A4MP4B+FR1 + WL #STOMP_SPD,A4MP4B+FR2 + WL #STOMP_SPD,A4MP4B+FR3 + + .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,28,19,40,17,19,0 ;mode,x,y,z,w,h,d + WL #STOMP_SPD,A4MP4B+FR4 + .word ANI_ATTACK_OFF + WL #STOMP_SPD,A4MP4B+FR5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HITS ON GROUND + +#HIT_SPD equ 2 + SUBR adm_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL #HIT_SPD,A3CP3A+FR1 + WL #HIT_SPD,A3CP3A+FR2 + WL #HIT_SPD,A3CP3A+FR4 + WL #HIT_SPD,A3CP3A+FR5 + WL #HIT_SPD,A3CP3A+FR6 + WL #HIT_SPD,A3CP3A+FR7 + WL #HIT_SPD,A3CP3A+FR8 + .word ANI_END + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + +#CLIMB_SPD equ 5 + SUBR adm_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS +; WL ANI_SET_YVEL,4000h ;27000 +; .word ANI_OFFSET,-8,-3,-16 ;x,y,z + .word ANI_SLOWMO,5 + WL #CLIMB_SPD,A2CT2B+FR1 + WL #CLIMB_SPD,A2CT2B+FR2 + WL #CLIMB_SPD,A2CT2B+FR3 + WL #CLIMB_SPD,A2CT2B+FR4 + .word ANI_OFFSET,4,19,0 ;x,y,z + WL #CLIMB_SPD,A2CT2B+FR5 + WL #CLIMB_SPD,A2CT2B+FR6 + WL #CLIMB_SPD,A2CT2B+FR7 + .word ANI_OFFSET,15,13,0 + WL #CLIMB_SPD,A2CT2B+FR8 + WL #CLIMB_SPD,A2CT2B+FR9 + WL #CLIMB_SPD,A2CT2B+FR10 + WL #CLIMB_SPD,A2CT2B+FR11 + .word ANI_SLOWMO,0 + .word ANI_ZEROVELS + + .word ANI_OFFSET,0,6,0 ;x,y,z + WL #CLIMB_SPD,A2CT2B+FR2 + .word ANI_OFFSET,10,18h,0 ;x,y,z + WL #CLIMB_SPD,A2CT2B+FR4 + .word ANI_OFFSET,-2,0dh,0 ;x,y,z + WL #CLIMB_SPD,A2CT2B+FR6 + + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + + .word ANI_OFFSET,2,0,0 ;x,y,z +#repeat + WL #CLIMB_SPD,A4SB4A+FR1 + WL #CLIMB_SPD,A4SB4A+FR2 + WL #CLIMB_SPD,A4SB4A+FR3 + WL #CLIMB_SPD,A4SB4A+FR4 + WL #CLIMB_SPD,A4SB4A+FR5 + WL #CLIMB_SPD,A4SB4A+FR6 + WL #CLIMB_SPD,A4SB4A+FR7 + WL #CLIMB_SPD,A4SB4A+FR8 + WL ANI_GOTO,#repeat + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + +#CLIMB_SPD equ 5 + SUBR adm_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_OFFSET,0,2,0 ;x,y,z + WL #CLIMB_SPD*4,A2ST2D+FR1 +; WL #CLIMB_SPD,A2CT2B+FR6 + .word ANI_OFFSET,0,-13,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2B+FR4 + + WL ANI_SET_YVEL,-4000h +; + .word ANI_OFFSET,-8,-26,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2B+FR2 + .word ANI_OFFSET,0,-5,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2A+FR12 + .word ANI_OFFSET,0,-10,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2A+FR9 + .word ANI_OFFSET,0,-10,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2A+FR7 + .word ANI_OFFSET,-9,-9,0 ;x,y,z +; WL #CLIMB_SPD,A2CT2A+FR2 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* SECOND WIND + +#SWIND_SPD equ 3 + SUBR adm_2ndwind_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #SWIND_SPD,A4SW4A+FR1 + WL #SWIND_SPD,A4SW4A+FR2 + WL #SWIND_SPD,A4SW4A+FR3 + WL #SWIND_SPD,A4SW4A+FR4 + WL #SWIND_SPD,A4SW4A+FR5 + WL #SWIND_SPD,A4SW4A+FR6 + WL #SWIND_SPD,A4SW4A+FR7 + WL #SWIND_SPD,A4SW4A+FR8 + WL #SWIND_SPD,A4SW4A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* DIVE OFF TURNBUCKLE + +#DIVETB_SPD equ 2 + SUBR adm_diveofftb_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_XFLIP ;make an ANI_FACEOUT and ANI_FACEIN + + .word ANI_LEAPATOPP,40,180,TGT_HEAD,20,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL #DIVETB_SPD,A4PM4A+FR1 + WL #DIVETB_SPD,A4PM4A+FR2 + WL #DIVETB_SPD,A4PM4A+FR3 + WL #DIVETB_SPD,A4PM4A+FR4 + WL #DIVETB_SPD,A4PM4A+FR5 + WL #DIVETB_SPD,A4PM4A+FR6 + WL #DIVETB_SPD,A4PM4A+FR7 + WL #DIVETB_SPD,A4PM4A+FR8 + + WL 1,A4ST4J+FR1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_BOUNCE,4 + + .word ANI_SOUND,bounce_l1 + .word ANI_SHAKER,3 + .word ANI_SHAKEROPES,0 + WL 1,A4ST4J+FR1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SOUND,bounce_l1 + .word ANI_SHAKER,3 + .word ANI_SHAKEROPES,0 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + +#GRABFLNG_SPD equ 4 + SUBR adm_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,A1TR5Z+FR2 + WL 3,A1TR5Z+FR3 + WL ANI_GOTO,#cont + + SUBR adm_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + +#cont + WL #GRABFLNG_SPD,A4GF3A+FR1 + WL #GRABFLNG_SPD,A4GF3A+FR2 + + .word ANI_ATTACK_ON, AMODE_GRABFLING,76,72,22,14 ;mode,x,y,w,h + .word ANI_ATTACHZ,72,0,32 + WL #GRABFLNG_SPD,A4GF3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim +;missed + WL 8,A4GF3A+FR3 + WL 4,A4GF3A+FR2 + WL 4,A4GF3A+FR1 + + WL ANI_CODE,#setface + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gothim + .word ANI_ATTACH,67,0 + WL #GRABFLNG_SPD,A4GF3A+FR4 + .word ANI_ATTACH,57,0 + WL #GRABFLNG_SPD,A4GF3A+FR5 + .word ANI_ATTACH,40,0 + WL #GRABFLNG_SPD,A4GF3A+FR6 + .word ANI_ATTACH,5,0 + WL #GRABFLNG_SPD,A4GF3A+FR7 + .word ANI_ATTACH,-59,0 + WL #GRABFLNG_SPD,A4GF3A+FR8 + .word ANI_DETACH + WL #GRABFLNG_SPD+4,A4GF3A+FR9 + WL #GRABFLNG_SPD+4,A4GF3A+FR10 + WL #GRABFLNG_SPD+4,A4GF3A+FR11 + WL #GRABFLNG_SPD+4,A4GF3A+FR12 + + .word ANI_SETFACING + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#setface +;Need to set current facing dir + movk 10,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #rgt + movk 6,a1 +#rgt move a1,*a13(FACING_DIR) + rets + +#***************************************************************************** +* +* GRAB OPPONENT AND HOLD OVERHEAD + + +#GRABOH_SPD equ 3 + SUBR adm_2_graboh_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 3,A1TR5Z+FR2 + WL 3,A1TR5Z+FR3 + WL 3,A3PO4B+FR1 + WL 3,A3PO4B+FR2 + + .word ANI_ATTACK_ON_Z, AMODE_GRABHOLD,78,69,20,21,34,40 ;mode,x,y,z,w,h,d + .word ANI_ATTACHZ,45,65,4 + WL 3,A3PO4B+FR3 + WL 6,A3PO4B+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim +;missed + WL 3,A3PO4B+FR3 + WL 3,A3PO4B+FR2 + WL 3,A3PO4B+FR1 + WL 3,A1TR5Z+FR3 + WL 3,A1TR5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR adm_4_graboh_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 3,A3PO4B+FR1 + WL 3,A3PO4B+FR2 + WL 3,A3PO4B+FR3 + + .word ANI_ATTACK_ON_Z, AMODE_GRABHOLD,78,69,20,21,34,40 ;mode,x,y,z,w,h,d + .word ANI_ATTACHZ,45,65,4 + WL 6,A3PO4B+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim +;missed + WL 6,A3PO4B+FR4 + WL 3,A3PO4B+FR3 + WL 3,A3PO4B+FR2 + WL 3,A3PO4B+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gothim + .word ANI_ATTACH,50,85 + WL 6,A3PO4B+FR5 + .word ANI_ATTACH,20,120 + WL 6,A3PO4B+FR6 + .word ANI_ATTACH,0,120 + WL 6,A3PO4B+FR7 + .word ANI_ATTACH,0,125 + WL 6,A4UT4Z+FR1 + + .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD + .word ANI_SETMODE,+MODE_NOAUTOFLIP + .word ANI_END + +#***************************************************************************** +* +* FROM HOLD OVERHEAD, THROW OPPONENT STRAIGHT UP IN AIR + +#OHTHROW_SPD equ 4 + SUBR adm_ohthrow1_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SOUND,29h + .word ANI_ATTACH,9,124 + WL #OHTHROW_SPD,A4UT3A+FR1 + .word ANI_ATTACH,9,108 + WL #OHTHROW_SPD,A4UT3A+FR2 + .word ANI_ATTACH,9,82 + WL #OHTHROW_SPD+8,A4UT3A+FR3 + .word ANI_ATTACH,9,120 + WL #OHTHROW_SPD-2,A4UT3A+FR4 + .word ANI_ATTACH,9,145 + + .word ANI_THROW1 + + .word ANI_SOUND,42h + + WL #OHTHROW_SPD+6,A4UT3A+FR5 + WL #OHTHROW_SPD,A4UT3A+FR6 + WL #OHTHROW_SPD,A4UT3A+FR7 + WL #OHTHROW_SPD,A4UT3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + +#HELD_SPD equ 3 + SUBR adm_heldoh_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + WL #HELD_SPD,A4PM4A+FR1 + WL #HELD_SPD,A4PM4A+FR2 + WL #HELD_SPD,A4PM4A+FR3 + WL #HELD_SPD,A4PM4A+FR4 + WL #HELD_SPD,A4PM4A+FR5 + WL #HELD_SPD,A4PM4A+FR6 + WL #HELD_SPD,A4PM4A+FR7 + WL #HELD_SPD,A4PM4A+FR8 + .word ANI_REPEAT + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* BEEN THROWN FROM HELD OVERHEAD + +#HELD_SPD equ 3 + SUBR adm_heldthrown_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_XFLIP + + WL 1,A3FD3B+FR6 + .word ANI_WAITHITGND + .word ANI_SOUND,bounce_l1 + + .word ANI_BOUNCE,4 + + WL 1,A3FD3B+FR6 + .word ANI_WAITHITGND + .word ANI_SOUND,bounce_l1 + .word ANI_ZEROVELS + .word ANI_XFLIP + WL 1,A3RL1A+FR1 + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_END + + +#***************************************************************************** +* +* FLYING BUTT DROP + + .if 0 +#BUTTDRP_SPD equ 3 + SUBR adm_buttdrp_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + WL ANI_SET_YVEL,60000h + +; WL #BUTTDRP_SPD,A3JK3A+FR1 +; WL #BUTTDRP_SPD,A3JK3A+FR2 +; WL #BUTTDRP_SPD,A3JK3A+FR3 +; WL #BUTTDRP_SPD,A3JK3A+FR4 +; WL #BUTTDRP_SPD,A3JK3A+FR5 +; WL #BUTTDRP_SPD,A3JK3A+FR6 + +; WL 1,A3JK3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_BOUNCE,4 + +; WL 1,A3JK3A+FR7 + .word ANI_WAITHITGND +; WL TSEC*1,A3JK3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + .endif + +#***************************************************************************** +* +* #2 BLOCK + +#BLOCK_SPD equ 3 +#HITBLOCK_SPD equ 4 + SUBR adm_2_block_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + + WL #BLOCK_SPD,A2BK3B+FR1 + WL #BLOCK_SPD,A2BK3B+FR2 + WL #BLOCK_SPD,A2BK3B+FR3 + .word ANI_SETPLYRMODE,MODE_BLOCK + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + WL #BLOCK_SPD,A2BK3B+FR2 + WL #BLOCK_SPD,A2BK3B+FR1 + .word ANI_END + + SUBR adm_2_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,3000h + + WL #HITBLOCK_SPD,A2BK3B+FR7 + WL #HITBLOCK_SPD,A2BK3B+FR8 + WL #HITBLOCK_SPD,A2BK3B+FR6 + WL #HITBLOCK_SPD,A2BK3B+FR5 + WL #HITBLOCK_SPD,A2BK3B+FR4 + WL #HITBLOCK_SPD,A2BK3B+FR3 + + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + +#***************************************************************************** +* +* #4 BLOCK + +#BLOCK_SPD equ 3 +#HITBLOCK_SPD equ 4 + + SUBR adm_4_block_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + + WL #BLOCK_SPD,A4BK3C+FR1 + WL #BLOCK_SPD,A4BK3C+FR2 + WL #BLOCK_SPD,A4BK3C+FR3 + .word ANI_SETPLYRMODE,MODE_BLOCK + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + WL #BLOCK_SPD,A4BK3C+FR2 + WL #BLOCK_SPD,A4BK3C+FR1 + .word ANI_END + + SUBR adm_4_hitblock_anim + + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,3000h + WL #HITBLOCK_SPD,A4BK3C+FR4 + WL #HITBLOCK_SPD,A4BK3C+FR5 + WL #HITBLOCK_SPD,A4BK3C+FR7 + WL #HITBLOCK_SPD,A4BK3C+FR8 + WL #HITBLOCK_SPD,A4BK3C+FR6 + WL #HITBLOCK_SPD,A4BK3C+FR3 + + + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + +#***************************************************************************** +* +* HIP TOSS RUNNING OPPONENT + +;put in #2 and #4 hiptosses +#HIPTOSS_SPD equ 3 + SUBR adm_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + +;;; .word ANI_SLOWMO,5 + + WL #HIPTOSS_SPD,A4HT3A+FR1 + WL #HIPTOSS_SPD,A4HT3A+FR2 + .word ANI_ATTACK_ON, AMODE_HIPTOSS,76-20,74,32,32 ;mode,x,y,w,h + WL #HIPTOSS_SPD,A4HT3A+FR3 + .word ANI_ATTACK_OFF + WL #HIPTOSS_SPD,A4HT3A+FR4 + WL #HIPTOSS_SPD,A4HT3A+FR5 + WL #HIPTOSS_SPD,A4HT3A+FR6 + WL #HIPTOSS_SPD,A4HT3A+FR7 + WL #HIPTOSS_SPD,A4HT3A+FR8 + +;;; .word ANI_SLOWMO,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + +#TOSSFALL_SPD equ 3 + SUBR adm_hiptossfall_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + + WL #TOSSFALL_SPD,A3FH3A+FR1 + WL #TOSSFALL_SPD,A3FH3A+FR2 + WL #TOSSFALL_SPD,A3FH3A+FR3 + WL #TOSSFALL_SPD,A3FH3A+FR4 + WL #TOSSFALL_SPD,A3FH3A+FR5 + WL #TOSSFALL_SPD,A3FH3A+FR6 + WL #TOSSFALL_SPD,A3FH3A+FR7 + WL #TOSSFALL_SPD,A3FH3A+FR8 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_XFLIP + WL 1,A3RL1A+FR1 + +;;; .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 PUSH + +#PUSH_SPD equ 4 + SUBR adm_2_push_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #PUSH_SPD,A2PS3A+FR1 + WL #PUSH_SPD,A2PS3A+FR2 + WL #PUSH_SPD,A2PS3A+FR3 + WL #PUSH_SPD,A2PS3A+FR4 + .word ANI_ATTACK_ON, AMODE_PUSH,84,97,40,26 ;mode,x,y,w,h + WL #PUSH_SPD,A2PS3A+FR5 + .word ANI_ATTACK_OFF + WL #PUSH_SPD,A2PS3A+FR6 + WL #PUSH_SPD,A2PS3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 PUSH + +#PUSH_SPD equ 4 + SUBR adm_4_push_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #PUSH_SPD,A4PS3A+FR1 + WL #PUSH_SPD,A4PS3A+FR2 + WL #PUSH_SPD,A4PS3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUSH,79,101,34,18 ;mode,x,y,w,h + WL #PUSH_SPD,A4PS3A+FR4 + .word ANI_ATTACK_OFF + WL #PUSH_SPD,A4PS3A+FR5 + WL #PUSH_SPD,A4PS3A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 LOSE BALANCE + +#LB_SPEED equ 4 +#FRICTION_VAL equ 3000h + SUBR adm_2_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,#FRICTION_VAL + WL #LB_SPEED,A2LB2B+FR1 + WL #LB_SPEED,A2LB2B+FR2 + WL #LB_SPEED,A2LB2B+FR3 + WL #LB_SPEED,A2LB2B+FR4 + WL #LB_SPEED,A2LB2B+FR5 + WL #LB_SPEED,A2LB2B+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR adm_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,#FRICTION_VAL + WL #LB_SPEED,A4LB4A+FR1 + WL #LB_SPEED,A4LB4A+FR2 + WL #LB_SPEED,A4LB4A+FR3 + WL #LB_SPEED,A4LB4A+FR4 + WL #LB_SPEED,A4LB4A+FR5 + WL #LB_SPEED,A4LB4A+FR6 + WL #LB_SPEED,A4LB4A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 BIG BOOT + +#BIGBOOT_SPD equ 3 + SUBR adm_2_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #BIGBOOT_SPD,A2BG3A+FR1 + WL #BIGBOOT_SPD,A2BG3A+FR3 + WL #BIGBOOT_SPD,A2BG3A+FR4 + WL #BIGBOOT_SPD,A2BG3A+FR5 + + .word ANI_ATTACK_ON, AMODE_BIGBOOT,79,105,19,25 ;mode,x,y,w,h + WL #BIGBOOT_SPD,A2BG3A+FR6 + .word ANI_WAITRELEASE,PLAYER_KICK_BIT + .word ANI_ATTACK_OFF + + WL #BIGBOOT_SPD,A2BG3A+FR7 + WL #BIGBOOT_SPD,A2BG3A+FR8 + WL #BIGBOOT_SPD,A2BG3A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 BIG BOOT + +#BIGBOOT_SPD equ 3 + SUBR adm_4_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL #BIGBOOT_SPD,A4BG3A+FR1 + WL #BIGBOOT_SPD,A4BG3A+FR3 + WL #BIGBOOT_SPD,A4BG3A+FR4 + WL #BIGBOOT_SPD,A4BG3A+FR5 + + .word ANI_ATTACK_ON, AMODE_BIGBOOT,79,105,19,25 ;mode,x,y,w,h + WL #BIGBOOT_SPD,A4BG3A+FR6 + .word ANI_WAITRELEASE,PLAYER_KICK_BIT + .word ANI_ATTACK_OFF + + WL #BIGBOOT_SPD,A4BG3A+FR7 + WL #BIGBOOT_SPD,A4BG3A+FR8 + WL #BIGBOOT_SPD,A4BG3A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* DIZZY + +#DIZZY_SPD equ 6 + SUBR adm_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZEROVELS + WL #DIZZY_SPD,A4SW4A+FR1 + WL #DIZZY_SPD,A4SW4A+FR2 + WL #DIZZY_SPD,A4SW4A+FR3 + WL #DIZZY_SPD,A4SW4A+FR4 + WL #DIZZY_SPD,A4SW4A+FR5 + WL #DIZZY_SPD,A4SW4A+FR6 + WL #DIZZY_SPD,A4SW4A+FR7 + WL #DIZZY_SPD,A4SW4A+FR8 + WL #DIZZY_SPD,A4SW4A+FR9 + .word ANI_REPEAT + + +#**************************************************************************** +* +* RAISE ARM IN VICTORY + +#RARM_SPD equ 8 + SUBR adm_raisearm_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZEROVELS + +; WL #RARM_SPD+10,A5WN5B+FR1 +; WL #RARM_SPD-2,A5WN5B+FR2 +; WL #RARM_SPD-2,A5WN5B+FR3 +; WL #RARM_SPD-2,A5WN5B+FR4 +; WL #RARM_SPD-2,A5WN5B+FR5 +; +; WL #RARM_SPD,A5WN5Z+FR1 +; WL #RARM_SPD,A5WN5Z+FR2 +; WL #RARM_SPD,A5WN5Z+FR3 +; WL #RARM_SPD,A5WN5Z+FR4 +; +; WL #RARM_SPD,A5WN5Z+FR1 +; WL #RARM_SPD,A5WN5Z+FR2 +; WL #RARM_SPD,A5WN5Z+FR3 +; WL #RARM_SPD,A5WN5Z+FR4 +; +; WL #RARM_SPD,A5WN5Z+FR1 +; WL #RARM_SPD,A5WN5Z+FR2 +; WL #RARM_SPD,A5WN5Z+FR3 +; WL #RARM_SPD,A5WN5Z+FR4 +; +; WL #RARM_SPD,A5WN5Z+FR1 +; WL #RARM_SPD,A5WN5Z+FR2 +; WL #RARM_SPD,A5WN5Z+FR3 +; WL #RARM_SPD,A5WN5Z+FR4 +; +; WL #RARM_SPD,A5WN5Z+FR1 +; WL #RARM_SPD,A5WN5Z+FR2 +; WL #RARM_SPD,A5WN5Z+FR3 +; WL #RARM_SPD+50,A5WN5Z+FR4 + + .word ANI_ENDMATCH + .word ANI_REPEAT + +#***************************************************************************** +* + SUBR adm_lockup2_anim + SUBR adm_lockup4_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_END + +#***************************************************************************** + + SUBR adm_roll_frames + + .word 9 ;speed + .long 30000h ;z velocity + .long 10000h*8/255 ;inv multiply (0-255 -> 0-8) + + .long A3RL1A+FR1 ;0 + .long A3RL1A+FR2 ;1 + .long A3RL1A+FR3 ;2 + .long A3RL1A+FR4 ;3 + .long A3RL1A+FR5 ;4 + .long A3RL1A+FR6 ;5 + .long A3RL1A+FR7 ;6 + .long A3RL1A+FR8 ;7 + .long A3RL1A+FR9 ;8 + .long 0,0,0,0,0,0 + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/ADMSEQ3.ASM b/BACKUP/ADMSEQ3.ASM new file mode 100644 index 0000000..70dfecf --- /dev/null +++ b/BACKUP/ADMSEQ3.ASM @@ -0,0 +1,360 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/12/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "admseq3.asm" + .title "Adam Bomb animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "display.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "adamimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref wres_get_stick_val_cur + .ref RNDRNG0 + .ref set_target_offsets + .ref get_opp_process + + .ref get_leap + .ref shake_all_ropes + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** + + SUBR adm_2_break_lockup_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-30000h,1 ;facing relative + .word ANI_FRICTION,3000h + WL 3,A2FG3A+FR4 + WL 3,A2FG3A+FR3 + WL 3,A2FG3A+FR2 + WL 3,A2FG3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR adm_2_lockup_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,A2FG3A+FR1 + WL 4,A2FG3A+FR2 + WL 4,A2FG3A+FR3 + WL 4,A2FG3A+FR4 + WL 4,A2FG3A+FR5 + .word ANI_ATTACK_ON, AMODE_GRAPPLE,24,-100,48,28 ;mode,x,y,w,h + WL 4,A2FG3A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#grapple + WL 4,A2FG3A+FR5 + WL 4,A2FG3A+FR4 + WL 4,A2FG3A+FR3 + WL 4,A2FG3A+FR2 + WL 4,A2FG3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#grapple + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_SLAVE,S4_GRAPPLE,3 + WL 8,A2GR3Z+FR5 + + .word ANI_SLAVE,S4_GRAPPLE,2 + WL 8,A2GR3Z+FR6 + + .word ANI_SLAVE,S4_GRAPPLE,1 + WL 8,A2GR3Z+FR7 + + .word ANI_SLAVE,S4_GRAPPLE,0 + WL 8,A2GR3Z+FR8 + + .word ANI_SLAVE,S4_GRAPPLE,1 + WL 8,A2GR3Z+FR7 + + .word ANI_SLAVE,S4_GRAPPLE,2 + WL 8,A2GR3Z+FR6 + + WL ANI_GOTO,#grapple + + +#***************************************************************************** + + SUBR adm_4_break_lockup_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-30000h,1 ;facing relative + .word ANI_FRICTION,3000h + WL 3,A4FG3A+FR4 + WL 3,A4FG3A+FR3 + WL 3,A4FG3A+FR2 + WL 3,A4FG3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR adm_4_lockup_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,A4FG3A+FR1 + WL 4,A4FG3A+FR2 + WL 4,A4FG3A+FR3 + WL 4,A4FG3A+FR4 + WL 4,A4FG3A+FR5 + .word ANI_ATTACK_ON, AMODE_GRAPPLE,24,-100,48,28 ;mode,x,y,w,h + WL 4,A4FG3A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#grapple + WL 4,A4FG3A+FR5 + WL 4,A4FG3A+FR4 + WL 4,A4FG3A+FR3 + WL 4,A4FG3A+FR2 + WL 4,A4FG3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#grapple + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_SLAVE,S2_GRAPPLE,3 + WL 8,A4GR3B+FR7 + + .word ANI_SLAVE,S2_GRAPPLE,2 + WL 8,A4GR3B+FR6 + + .word ANI_SLAVE,S2_GRAPPLE,1 + WL 8,A4GR3B+FR5 + + .word ANI_SLAVE,S2_GRAPPLE,0 + WL 8,A4GR3B+FR4 + + .word ANI_SLAVE,S2_GRAPPLE,1 + WL 8,A4GR3B+FR5 + + .word ANI_SLAVE,S2_GRAPPLE,2 + WL 8,A4GR3B+FR6 + + WL ANI_GOTO,#grapple + + + .if 0 +#***************************************************************************** + + SUBR dnk_3_head_hold_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 1,D3PG3A01 + .word ANI_ATTACHZ,45-5,0,0 + WL 3,D3PG3A01 + WL 4,D3PG3A02 + + WL 4+50,D3PG3A02 + .word ANI_END + + + SUBR dnk_3_head_held_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,D3BF3Z01 + WL 4,D3BF3Z02 +#loop + WL 4,D3BF3A01 + WL 4,D3BF3A02 + WL 4,D3BF3A03 + WL 4,D3BF3A04 + WL 4,D3BF3A05 + WL 4,D3BF3A06 + WL 4,D3BF3A07 + WL 4,D3BF3A08 + WL ANI_GOTO,#loop + + +#***************************************************************************** + + SUBR dnk_3_pile_driver_anim + + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +#lp + .word ANI_ATTACHZ,45-5,0,0 +;;; WL ANI_CODE,temp_shit0 +;;; .word ANI_SLAVE,S3_GRAP_TO_HH,0 + WL 63+00,D3PG3A01 + .word ANI_SLAVE,S3_GRAP_TO_HH,1 + WL 3+60,D3PG3A01 + .word ANI_SLAVE,S3_GRAP_TO_HH,2 + WL 3+60,D3PG3A02 + .word ANI_SLAVE,S3_GRAP_TO_HH,3 + WL 10+60,D3PG3A03 + WL 3+60,D3PG3A05 + + + +;;; WL ANI_CODE,temp_shit + + .word ANI_ATTACHZ,27-10,61-7,0 + + .word ANI_SLAVE,S3_PILE_DRIVEN,1 + + WL 3+60,D3PG3A05 + + .word ANI_SLAVE,S3_PILE_DRIVEN,2 + WL 2+60,D3PG3A06 + .word ANI_SLAVE,S3_PILE_DRIVEN,3 + WL 2+60,D3PG3A06 + .word ANI_SLAVE,S3_PILE_DRIVEN,4 + WL 2+60,D3PG3A06A + .word ANI_SLAVE,S3_PILE_DRIVEN,5 + WL 2+60,D3PG3A06A + .word ANI_SLAVE,S3_PILE_DRIVEN,6 + WL 64+60,D3PG3A07 + + WL ANI_SET_YVEL,90000h + .word ANI_OFFSET,0,47,0 ;x,y,z + + .word ANI_ATTACHZ,27-10,0,0 + + WL 4+00,D3PG3A08 + WL 4+00,D3PG3A09 + .word ANI_WAITHITGND + + + WL 4+60,D3PG3A10 + WL ANI_GOTO,#lp + + +temp_shit0 + move *a13(ATTACH_PROC),a2,L + + move *a13(OBJ_XPOSINT),a0 + addi 45,a0 + move a0,*a2(OBJ_XPOSINT) + + move *a13(OBJ_YPOS),*a2(OBJ_YPOS),L + + rets + + + +temp_shit + move *a13(ATTACH_PROC),a2,L + move *a2(OBJ_XPOSINT),a0 + subi 27,a0 + move a0,*a2(OBJ_XPOSINT) + + move *a2(OBJ_YPOSINT),a0 + addi 61-7,a0 + move a0,*a2(OBJ_YPOSINT) + + rets + + + + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +;#lp + .word ANI_ATTACHZ,44,0,-4 + WL 4+60,D3PG3A01 + + WL 4+6,D3PG3A01 + .word ANI_ATTACHZ,18,54,-4 + WL 4+6,D3PG3A02 + WL 4+6,D3PG3A03 + WL 4+6,D3PG3A04 + WL 4+6,D3PG3A05 + WL 4+6,D3PG3A06 + .word ANI_ATTACHZ,18,54,-4 + WL 4+140,D3PG3A07 +;;; WL ANI_GOTO,#lp + + WL ANI_CODE,clear_link + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** + + SUBR dnk_3_pile_driven + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +#lp + WL 4+60,D3BF3Z01 + WL 4+6,D3BF3Z02 + WL 4+6,D3BF3A01 + WL 4+6,D3PD3C01 + WL 4+6,D3PD3C02 + WL 4+6,D3PD3C02 + WL 4+6,D3PD3C03 + WL 4+6,D3PD3C04 + WL 4+6,D3PD3C04 + WL 4+140,D3PD3C05 +;;; WL ANI_GOTO,#lp + + WL ANI_CODE,clear_link + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +clear_link + clr a0 + move a0,*a13(ATTACH_PROC),L + rets + + + .endif + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/ALL.BAT b/BACKUP/ALL.BAT new file mode 100644 index 0000000..32b8821 --- /dev/null +++ b/BACKUP/ALL.BAT @@ -0,0 +1,9 @@ +@call BAM.BAT +@call BRET.BAT +@call DOINK.BAT +@call LEX.BAT +@call RAZOR.BAT +@call SHAWN.BAT +@call TAKER.BAT +@call YOKO.BAT + \ No newline at end of file diff --git a/BACKUP/ANIM.ASM b/BACKUP/ANIM.ASM new file mode 100644 index 0000000..26fb695 --- /dev/null +++ b/BACKUP/ANIM.ASM @@ -0,0 +1,4148 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 6/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "anim.asm" + .title "animation routines" + .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 "ring.equ" + .include "sound.h" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + +****************************************************************************** +* +* external references + + .REF p2rounds,p1rounds + + .ref wres_get_but_val_cur,get_opp_process,clear_damage_log + .ref PCNT,slowmo,do_roll,match_over,triple_sound + .ref match_winner,process_ptrs,square_root,set_target_offsets + .ref calc_line_x,RNDPER,crowd_cheer,wrtable_sound,rope_command + .ref set_rope_z,SHAKER2,get_all_buttons_down,right_rproc + .ref left_rproc,adjust_health,create_dizzy_proc,get_mpart_offsets + .ref get_mpart_xsize,pal_find + .ref round_tickcount + + .ref get_rope_x + .ref ADD_TO_COMBO_COUNT + +****************************************************************************** +* +* external definitions + +#***************************************************************************** + +OANIMODE equ 0 ;word +OANIBASE equ OANIMODE+10h ;long +OANIPC equ OANIBASE+20h ;long +OANICNT equ OANIPC+20h ;word +OCUR_FRAME equ OANICNT+10h ;long + + + SUBR animate_wrestler + + PUSH a4,a10 + + .ref match_time + move @match_time,a0,L + jrz #x + +; callr animate_wrestler1 +; callr animate_wrestler2 + + move a13,a10 + addi ANIMODE,a10 ;primary animation + callr animate + + move a13,a10 + addi ANIMODE2,a10 ;secondary animation + callr animate + +#x + PULL a4,a10 + rets + + + SUBR animate_wrestler1 + + PUSH a4,a10 + + move a13,a10 + addi ANIMODE,a10 ;primary animation + callr animate + + PULL a4,a10 + rets + + SUBR animate_wrestler2 + + PUSH a4,a10 + + move a13,a10 + addi ANIMODE2,a10 ;secondary animation + callr animate + + PULL a4,a10 + rets + +******** +animate ;a10 = * anim variables base + + move *a10(OANIMODE),a0 ;current animation ended??? + btst MODE_END_BIT,a0 + jrnz _exit + + .if 0 +*** temp patch to step through images on player 1 !!!! + + move *a13(PLYRNUM),a0 + jrnz #skippit + + move *a10(OANIBASE),a0,L + move *a10(OANIPC),a1,L + cmp a0,a1 + jreq _next_command + + .ref get_but_val_down + move *a13(PLYRNUM),a0 + calla get_but_val_down + move a0,a0 + jrnz _next_command + rets +#skippit + .endif + +*** + + + move *a10(OANICNT),a0 ;cur tick count + dec a0 + move a0,*a10(OANICNT) + jrgt _exit + +_next_command + move *a10(OANIPC),a4,L + move *a4+,a0 ;tick count or command + jrn #command + jrz _ani_zip ;no-op + + move *a13(ANI_SPEED),a1 + mpyu a0,a1 + srl 8,a1 + move a1,*a10(OANICNT) ;# ticks to hold cur frame + +; move a0,a1 +; sll 8,a1 ;* 256 +; move *a13(ANI_SPEED),a0 ;divisor * 256 +; divu a0,a1 ;a1/a0 +; move a1,*a10(OANICNT) ;# ticks to hold cur frame + + move *a4+,a0,L ;* * multi image object + move *a0,a0,L ;* image + .if DEBUG + jrnz #ok + LOCKUP + jruc #skp +#ok + .endif + move a0,*a10(OCUR_FRAME),L +#skp + move a4,*a10(OANIPC),L + +_exit + rets + + +#command + andi 0ffh,a0 + sll 5,a0 ;x 32 + addi #ani_commands,a0 + move *a0,a0,L + jump a0 + +#ani_commands + .long _ani_zip ;0 + .long _ani_repeat ;1 + .long _ani_setmode ;2 + .long _ani_zerovels ;3 + .long _ani_setplyrmode ;4 + .long _ani_set_yvel ;5 + .long _ani_attack_on ;6 + .long _ani_attack_off ;7 + .long _ani_leapatopp ;8 + .long _ani_attach ;9 + .long _ani_detach ;10 + .long _ani_waithitgnd ;11 + .long _ani_xflip ;12 + .long _ani_bounce ;13 + .long _ani_attack_on_Z ;14 + .long _ani_gravity_on ;15 + .long _ani_gravity_off ;16 + .long _ani_goto ;17 + .long _ani_attachz ;18 + .long _ani_slowmo ;19 + .long _ani_waitrelease ;20 + .long _ani_offset ;21 + .long _ani_friction ;22 + .long _ani_endmatch ;23 + .long _ani_attachvel ;24 + .long _ani_throw1 ;25 + .long _ani_sound ;26 + .long _ani_setfacing ;27 + .long _ani_pause ;28 + .long _ani_ifstatus ;29 + .long _ani_code ;30 + .long _ani_shaker ;31 + .long _ani_changeanim ;32 + .long _ani_faceup ;33 + .long _ani_facedown ;34 + .long _ani_bouncerope ;35 + .long _ani_shakeropes ;36 + .long _ani_bendrope ;37 + .long _ani_setspeed ;38 + .long _ani_leapatpos ;39 + .long _ani_zero_xzvels ;40 + .long _ani_rope_z ;41 + .long _ani_round_loop ;42 +;MJT Start + .long _ani_zip ;43 +;MJT End + .long _ani_set_xvel ;44 + .long _ani_ifnotstatus ;45 + .long _ani_slide_back ;46 + .long _ani_clr_damage ;47 + .long _ani_set_zvel ;48 + .long _ani_master_throw ;49 + .long _ani_face ;50 + .long _ani_setword ;51 + .long _ani_getup ;52 + .long _ani_getup_wait ;53 + .long _ani_clr_stars ;54 + .long _ani_shakeall ;55 + .long _ani_damage ;56 + .long _ani_start_dizzy ;57 + .long _ani_clr_status ;58 + .long _ani_set_target ;59 + .long _ani_max_x ;60 + .long _ani_max_z ;61 + .long _ani_max_y_vel ;62 + .long _ani_superslave ;63 + .long _ani_slaveanim ;64 + .long _ani_rawsound ;65 + .long _ani_damageopp ;66 + .long _ani_rndper ;67 + .long _ani_waithitopp ;68 + .long _ani_attchimage ;69 + .long _ani_ifoppmode ;99 + .long _ani_ifbuttons ;71 + .long _ani_ifnohitblock ;72 + .long _ani_end ;73 + .long _ani_ifrope ;74 + .long _ani_ifnotrope ;75 + .long _ani_opp_getup ;76 + .long _ani_shakecorner ;77 + .long _ani_singlestep ;78 + .long _ani_superslave2 ;79 + .long _ani_setoppmode ;80 + .long _ani_clroppmode ;81 + .long _ani_oppoffset ;82 + .long _ani_ifblocked ;83 + .long _ani_waitroll ;84 + .long _ani_setoppfacing ;85 + .long _ani_ifopp ;86 + .long _ani_snot ;87 + + .long _ani_if_butcount_ge ;88 + .long _ani_if_butcount_lt ;89 + .long _ani_if_rptcount ;90 + .long _ani_ifnot_rptcount ;91 + + .long _ani_ringcheck ;92 + .long _ani_debrisat ;93 + .long _ani_debris ;94 + .long _ani_set_wrestler_xflip ;95 + .long _ani_slideatopp ;96 + + .long _ani_clr_butcount ;97 + .long _ani_set_rptcount ;98 + .long _ani_dec_rptcount ;99 + + .long _ani_shadowtrail ;100 + .long _ani_createproc ;101 + .long _ani_target ;102 + .long _ani_hmbwait ;103 + .long _ani_safe_time ;104 + .long _ani_setopp_plyrmode ;105 + .long _ani_xflip_opp ;106 + .long _ani_setlong ;107 + .long _ani_immobilize ;108 + .long _ani_xflip_tbl ;109 + .long _ani_setoppvels ;110 + .long _ani_waithitgnd2 ;111 + .LONG _ani_set_opp_xvel ;112 + .long _ani_set_attach ;113 + .long _ani_inc_combo_count ;114 + .long _ani_clear_combo_count ;115 + .long _ani_add_move ;116 + .long _ani_startattack ;117 + .long _ani_changeanim_tbl ;118 + .long _ani_if_rptcount_ge ;119 + .long _ani_if_rptcount_lt ;120 + +#******** +_ani_zip ;0 + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_repeat ;1 + move *a10(OANIBASE),a4,L + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_setmode ;2 + move *a4+,a0 ;mode bits + move a0,*a10(OANIMODE) + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_zerovels ;3 + clr a0 + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_YVEL),L + move a0,*a13(OBJ_ZVEL),L + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_setplyrmode ;4 + + ;clear the climbin bit, just in case... + clr a14 + move a14,*a13(CLIMBING_THRU) + + move *a4+,a0 + move *a13(PLYRMODE),a1 ;this is a temp fudge!!! + cmpi MODE_DEAD,a1 + jreq #noset + +;If going into head hold mode, don't allow getup meter +;to come out for awhile. + cmpi MODE_HEADHOLD,a0 + jrnz #skp + move *a13(DELAY_METER),a14 + cmpi 5*60,a14 + jrge #skp + movi 6*60,a14 + move a14,*a13(DELAY_METER) +#skp + + move a0,*a13(PLYRMODE) +#noset + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_set_yvel ;5 + move *a4+,a0,L + move a0,*a13(OBJ_YVEL),L + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_attack_on ;6 + +;I'm not sure we want to zero attach_proc just for starting an attack! +;Watch this.... + clr a0 ;start out not attached +; move a0,*a13(ATTACH_PROC),L ;to anything + + move a0,*a13(HITBLOCKER) + + move *a13(ANIMODE),a0 + ori MODE_CHECKHIT,a0 + move a0,*a13(ANIMODE) + + move *a4+,a0 + move a0,*a13(ATTACK_MODE) + move *a4+,a0 + move a0,*a13(OBJ_ATTXOFF) + move *a4+,a0 + move a0,*a13(OBJ_ATTYOFF) + move *a4+,a0 + move a0,*a13(OBJ_ATTWIDTH) + move *a4+,a0 + move a0,*a13(OBJ_ATTHEIGHT) + +;;; clr a0 +;;; move a0,*a13(OBJ_ATTZOFF) +;;; move a0,*a13(OBJ_ATTDEPTH) + + movi -30,a0 ;default z width (10) + move a0,*a13(OBJ_ATTZOFF) + movi 30*2,a0 ;10*2 + move a0,*a13(OBJ_ATTDEPTH) + + move a4,*a10(OANIPC),L + + jruc _next_command + +#******** +_ani_attack_off ;7 + + move *a13(ANIMODE),a0 + andni MODE_CHECKHIT,a0 + move a0,*a13(ANIMODE) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_leapatopp ;8 + +; # ticks to reach dest +; max total distance (X and Z) +; max X distance +; max Z distance +; max Y vel +; target area of opponent +; x,y,z offset of attack box + + STRUCT 0 + WORD #TICKS + WORD #MAX_TOTAL_DIST + WORD #MAX_X_DIST + WORD #MAX_Z_DIST + LONG #MAX_Y_VEL + WORD #TRGT + WORD #ATT_X_OFF + WORD #ATT_Y_OFF + WORD #ATT_Z_OFF + LABEL #SIZE + + + .bss oppx,32 + .bss oppz,32 + .bss oppy,32 + + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(CLOSEST_NUM),a11 + X32 a11 + addi process_ptrs,a11 + move *a11,a11,L + + move *a11(OBJ_XVEL),a5,L + + move *a11(PLYRMODE),a14 + cmpi MODE_RUNNING,a14 + jrne #outring + + move a0,a0 + jrnz #outring + +;if opponent is inside the ring, running and near the ropes +;then target where he is now (don't add in xvel) + + move *a11(OBJ_XPOSINT),a1 + + move a5,a5 ;xvel + jrp #run_right +;run_left + cmpi RING_X_CENTER,a1 + jrgt #outring + jruc #cnt + +#run_right + cmpi RING_X_CENTER,a1 + jrlt #outring +#cnt + + PUSH a13 + move a11,a13 + calla get_rope_x + PULL a13 + move *a11(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 70,a0 + jrgt #outring + + clr a5 ;clr xvel +#outring + + move *a11(OBJ_ZVEL),a6,L + move *a11(OBJ_YVEL),a7,L + move *a11(GROUND_Y),a8 + sll 16,a8 + addi [256,0],a8 + + move *a11(OBJ_XPOS),a1,L + move *a11(OBJ_ZPOS),a2,L + move *a11(OBJ_YPOS),a3,L + addi [256,0],a3 + + + move *a4(#TICKS),a0 + + move *a13(OBJ_GRAVITY),a14,L +#lp0 + add a5,a1 ;x + xvel + add a6,a2 ;z + zvel + + move a7,a7 + jrz #ok + + add a7,a3 ;y + yvel + sub a14,a7 ;yvel - gravity + cmp a3,a8 ;hit ground? + jrgt #ok + move a8,a3 + jruc #dn +#ok + dsj a0,#lp0 +#dn + subi [256,0],a3 + + move a1,@oppx,L + move a2,@oppz,L + move a3,@oppy,L + + + move *a4(#TRGT),a0 + jrn #user + calla set_target_offsets +#user + + move *a13(TGT_XOFF),a0 ;target x offset + sll 16,a0 + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #right1 + neg a0 +#right1 +;;; move *a11(OBJ_XPOS),a1,L + move @oppx,a1,L + add a0,a1 ;def target x + + move *a4(#ATT_X_OFF),a0 + sll 16,a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #right0 + neg a0 +#right0 + move *a13(OBJ_XPOS),a2,L + add a0,a2 ;att x + + sub a2,a1 ;def x - att x + move a1,a14 + abs a14 + + move *a4(#MAX_X_DIST),a0 + jrn #xok + sll 16,a0 + cmp a14,a0 + jrge #xok + + move a1,a1 + jrp #no_negx + neg a0 +#no_negx + move a0,a1 +#xok + move a1,a5 ;delta x + move *a4(#TICKS),a0 + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_XVEL),L + + + + move *a13(TGT_ZOFF),a0 ;target z offset + sll 16,a0 +;;; move *a11(OBJ_ZPOS),a1,L + move @oppz,a1,L + add a0,a1 ;def target z + + move *a13(OBJ_ZPOS),a2,L + move *a4(#ATT_Z_OFF),a0 + sll 16,a0 + add a0,a2 ;att z + + sub a2,a1 ;def z - att z + move a1,a14 + abs a14 + + move *a4(#MAX_Z_DIST),a0 + jrn #zok + sll 16,a0 + cmp a14,a0 + jrge #zok + + move a1,a1 + jrp #no_negz + neg a0 +#no_negz + move a0,a1 +#zok + move a1,a6 ;delta z + move *a4(#TICKS),a0 + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_ZVEL),L + + + move *a4(#MAX_TOTAL_DIST),a9 + jrn #maxok + + abs a5 + srl 16,a5 + move a5,a1 + mpyu a5,a1 ;deltax^2 + move a1,a5 + + abs a6 + srl 16,a6 + move a6,a1 + mpyu a6,a1 ;deltaz^2 + move a1,a0 + + add a5,a0 + calla square_root + + cmp a0,a9 ;a9-a0 (will we exceed max dist?) + jrgt #maxok + + sll 8,a9 ;x 256 (8 bits fractional) + divu a0,a9 ;a9/a0 + + move a9,a1 + move *a13(OBJ_XVEL),a0,L + mpys a0,a1 ;scale down xvel + sra 8,a1 ;shift off fractional + move a1,*a13(OBJ_XVEL),L + + move a9,a1 + move *a13(OBJ_ZVEL),a0,L + mpys a0,a1 ;scale down yvel + sra 8,a1 ;shift off fractional + move a1,*a13(OBJ_ZVEL),L +#maxok + + + + +;to calculate YVEL taking into account gravity: +;use y-y0 = v0*t + 0.5*a*t^2 + + + move *a4(#TICKS),a8 + move a8,a1 + mpyu a8,a1 ;t^2 + move *a13(OBJ_GRAVITY),a0,L + mpyu a0,a1 ;a*t^2 + srl 1,a1 ;1/2*a*t^2 + +;;; move *a11(OBJ_YPOS),a0,L ;opp y + move @oppy,a0,L + + move *a13(TGT_YOFF),a14 ;target y offset + sll 16,a14 + add a14,a0 + + move *a13(OBJ_YPOS),a2,L ;y0 + move *a4(#ATT_Y_OFF),a14 + sll 16,a14 + + add a14,a2 + + sub a2,a0 ;a0 = a0-a2 (y - y0) + add a0,a1 + jrnn #yvel_okay + +; LOCKUP + + clr a1 + jruc #yok +#yvel_okay + divu a8,a1 ;a1 = a1/a8 ( ((y-y0)+(1/2*a*t^2)) / t ) + + move *a4(#MAX_Y_VEL),a0,L + cmp a1,a0 + jrge #yok + move a0,a1 +#yok + move a1,*a13(OBJ_YVEL),L + + + ;make sure both have the same INRING value + move *a11(INRING),a0 + move *a13(INRING),a1 + cmp a0,a1 + jreq #done + + ;uh-oh. our INRING's don't match. Unless we're on the + ; turnbuckle, zero the X and Z velocities and set the Y + ; velocity to 50000h or something + move *a13(PLYRMODE),a14,W + cmpi MODE_ONTURNBKL,a14 + jreq #done + + ;no good. leap in place + clr a14 + move a14,*a13(OBJ_XVEL),L + move a14,*a13(OBJ_ZVEL),L + movi [5,0],a14 + move a14,*a13(OBJ_YVEL),L + +#done + jruc _next_command + + +#******** +_ani_attach ;9 + + move *a4+,a0 ;xoff + move a0,*a13(ATTACH_XOFF) + move *a4+,a0 + move a0,*a13(ATTACH_YOFF) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_detach ;10 + + move *a13(ATTACH_PROC),a1,L + jrz #done + clr a0 + move a0,*a13(ATTACH_PROC),L ;not attached to anything + + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jrne #done + + move a0,*a1(ATTACH_PROC),L ;not attached to anything +#done + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_waithitgnd ;11 + + move *a13(OBJ_YVEL),a0,L ;must have down velocity + jrp #no_gnd + + ;if we're the master and the attach is valid, check and see if + ; our puppet has hit the ground. + move *a13(ANIMODE),a14 + btst MODE_KEEPATTACHED_BIT,a14 + jrz #skip_pcheck + + move *a13(ATTACH_PROC),a0,L + jrz #skip_pcheck ;we're attached? + move *a0(ATTACH_PROC),a14,L + jrz #skip_pcheck ;they're attached? + cmp a13,a14 + jrne #skip_pcheck ;to each other? + + ;ah, but if the opponent's MODE_GHOST bit is set, ignore him + move *a0(ANIMODE),a14 + btst MODE_GHOST_BIT,a14 + jrnz #skip_pcheck + + move *a0(OBJ_YPOSINT),a1,W + move *a0(GROUND_Y),a2,W + sub a1,a2 + + jrnn #hit_gnd + +#skip_pcheck + + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_gnd + +#hit_gnd + .REF SMALL_BOUNCE + CALLA SMALL_BOUNCE + move a4,*a10(OANIPC),L + jruc _next_command + +#no_gnd + movk 1,a0 + move a0,*a10(OANICNT) ;# ticks to hold cur frame + rets + + +#******** +_ani_xflip ;12 + + move *a13(OBJ_CONTROL),a0 + xori M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_bounce ;13 + + move *a4+,a0 ;Bounce value + sll 16,a0 + move a0,*a13(OBJ_YVEL),L + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_attack_on_Z ;14 + +;I'm not sure we want to zero attach_proc just for starting an attack! +;Watch this.... + clr a0 ;start out not attached +; move a0,*a13(ATTACH_PROC),L ;to anything + + move a0,*a13(HITBLOCKER) + move a0,*a13(ATTACH_ZOFF) + + move *a13(ANIMODE),a0 + ori MODE_CHECKHIT,a0 + move a0,*a13(ANIMODE) + + move *a4+,a0 + move a0,*a13(ATTACK_MODE) + move *a4+,a0 + move a0,*a13(OBJ_ATTXOFF) + move *a4+,a0 + move a0,*a13(OBJ_ATTYOFF) + move *a4+,a0 + move a0,*a13(OBJ_ATTZOFF) + move *a4+,a0 + move a0,*a13(OBJ_ATTWIDTH) + move *a4+,a0 + move a0,*a13(OBJ_ATTHEIGHT) + move *a4+,a0 + move a0,*a13(OBJ_ATTDEPTH) + + move a4,*a10(OANIPC),L + + jruc _next_command + +#******** +_ani_gravity_on ;15 + + move *a13(ANIMODE),a0 + andni MODE_NOGRAVITY,a0 + move a0,*a13(ANIMODE) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_gravity_off ;16 + + move *a13(ANIMODE),a0 + ori MODE_NOGRAVITY,a0 + move a0,*a13(ANIMODE) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_goto ;17 + + move *a4+,a4,L + move a4,*a10(OANIPC),L + + jruc _next_command + +#******** +_ani_attachz ;18 + + move *a4+,a0 ;xoff + move a0,*a13(ATTACH_XOFF) + move *a4+,a0 + move a0,*a13(ATTACH_YOFF) + move *a4+,a0 + move a0,*a13(ATTACH_ZOFF) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_slowmo ;19 + + move *a4+,a0 ;frame delay + move a0,@slowmo + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_waitrelease ;20 + + move a13,a0 + calla wres_get_but_val_cur + + move *a4+,a1 ;button bit + btst a1,a0 ;still down? + jrz #button_up + + movk 1,a0 + move a0,*a10(OANICNT) ;# ticks to hold cur frame + rets + +#button_up + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_offset ;21 + + move *a4+,a1 ;x offset + move *a13(FACING_DIR),a0 + btst MOVE_RIGHT_BIT,a0 + jrnz #right + neg a1 +#right + move *a13(OBJ_XPOSINT),a0 + add a1,a0 + move a0,*a13(OBJ_XPOSINT) + + move *a4+,a1 ;y offset + move *a13(OBJ_YPOSINT),a0 + add a1,a0 + move a0,*a13(OBJ_YPOSINT) + + move *a4+,a1 ;z offset + move *a13(OBJ_ZPOSINT),a0 + add a1,a0 + move a0,*a13(OBJ_ZPOSINT) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_friction ;22 + + move *a4+,a0 ;friction value + move a0,*a13(OBJ_FRICTION) + + move *a13(ANIMODE),a0 + ori MODE_FRICTION,a0 + move a0,*a13(ANIMODE) + + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_endmatch ;23 + + movk 1,a0 + move a0,@match_over + + move *a13(PLYRNUM),a1 + movk 1,a0 + sll a1,a0 ;set bit for player who won + move a0,@match_winner + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_attachvel ;24 + + STRUCT 0 + LONG #XVEL + LONG #YVEL + LONG #ZVEL + LABEL #SIZE + + ;x velocity is always relative to attacker FACING_DIR + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a2,L ;proc attached to + jrz #not_attached + move *a2(ATTACH_PROC),a0,L + jrz #not_attached + + move *a4(#YVEL),a0,L + move a0,*a2(OBJ_YVEL),L + move *a4(#ZVEL),a0,L + move a0,*a2(OBJ_ZVEL),L + + move *a4(#XVEL),a0,L + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #xok + neg a0 +#xok + move a0,*a2(OBJ_XVEL),L + +#not_attached + jruc _next_command + +#******** +_ani_throw1 ;25 + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_sound ;26 + + move *a4+,a0 + cmpi run_snd,a0 + jrne #not_run + + ;if there's been another foot noise from this guy within the last + ; 12 ticks, give it a miss. + move @PCNT,a14 + zext a14,W + move *a13(FOOT_PCNT),a1 + sub a1,a14 + abs a14 + cmpi 12,a14 + jrlt #done + move @PCNT,a1 + move a1,*a13(FOOT_PCNT) + calla triple_sound + jruc #done + +#not_run + move a0,a0 + jrn #table_lookup + calla triple_sound + jruc #done + +#table_lookup + calla wrtable_sound + +#done + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_setfacing ;27 + + move *a13(NEW_FACING_DIR),a0 + move a0,*a13(FACING_DIR) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_pause ;28 + + ;hold current frame for a few ticks + move *a4+,a14 + move a4,*a10(OANIPC),L + move a14,*a10(OANICNT) + rets + + +#******** +_ani_ifstatus ;29 + + move *a4+,a0,L ;this is a conditional goto + move *a13(ANIMODE),a1 ;if MODE_STATUS set then + btst MODE_STATUS_BIT,a1 ;branch is taken + jrz #skip + + move a0,a4 ;new ani pc +#skip + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_code ;30 + + move *a4+,a0,L ;code to execute + move a4,*a10(OANIPC),L + PUSH a10 + call a0 + PULL a10 + jruc _next_command + +#******** +_ani_shaker ;31 + + push a10 + + move *a4+,a10,W ;shaker mode value + calla SHAKER2 + + pull a10 + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_changeanim ;32 + + move *a4+,a4,L + move a4,*a10(OANIPC),L + move a4,*a10(OANIBASE),L + + jruc _next_command + + +#******** +_ani_faceup ;33 + + movk MOVE_UP_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_UP_LEFT,a1 +#right move a1,*a13(FACING_DIR) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_facedown ;34 + + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_bouncerope ;35 + + movi ROPE_LEFT,a0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrle #dir_set + movi ROPE_RIGHT,a0 +#dir_set + movi ROPE_SIDES,a1 + move *a13(OBJ_ZPOS),a3,L + move *a4+,a2,W + move a4,*a10(OANIPC),L + jrnn #no_release + movi ROPE_SIDESR,a1 +#no_release + calla rope_command + jruc _next_command + +#******** +_ani_shakeropes ;36 + + movi ROPE_BOUNCEUD,a1 + move *a4+,a2,W + move a4,*a10(OANIPC),L + + ;force a2 into range, just to be safe... + andi 03h,a2 + + movi ROPE_BACK,a0 + calla rope_command + + movi ROPE_LEFT,a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrnz #cont + + movi ROPE_RIGHT,a0 +#cont + calla rope_command + + jruc _next_command + +#******** +_ani_bendrope ;37 + + movi ROPE_LEFT,a0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrle #dir_set + movi ROPE_RIGHT,a0 +#dir_set + movi ROPE_DOWNS,a1 + move *a13(OBJ_ZPOS),a3,L + move *a4+,a2,W + move a4,*a10(OANIPC),L + jrnn #no_release + movi ROPE_DOWNSR,a1 +#no_release + calla rope_command + jruc _next_command + +#******** +_ani_setspeed ;38 + + move *a4+,a0 + move a0,*a13(ANI_SPEED) + + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_leapatpos ;39 + +;WORD - #ticks to reach destination +;WORD - max distance to travel +;WORD - x,y,z offset of attack box (eg. attacker's fist) + +;NB - user must set TGT_XOFF,YOFF & ZOFF <-- these are the actual target + + + move *a4+,a8 ;# ticks + move *a4+,a9 ;max distance to travel + +#user + move *a13(TGT_XOFF),a1 ;target x + sll 16,a1 + + move *a4+,a0 ;attack x offset + sll 16,a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #right0 + neg a0 +#right0 + move *a13(OBJ_XPOS),a2,L + add a0,a2 ;att x + + sub a2,a1 ;def x - att x + move a1,a5 ;delta x + move a8,a0 ;ticks + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_XVEL),L + + +;to calculate YVEL taking into account gravity: +;use y-y0 = v0*t + 0.5*a*t^2 + + move a8,a1 + mpyu a8,a1 ;t^2 + move *a13(OBJ_GRAVITY),a0,L + mpyu a0,a1 ;a*t^2 + srl 1,a1 ;1/2*a*t^2 + + move *a13(TGT_YOFF),a0 ;target y + sll 16,a0 + + move *a4+,a14 ;attack y offset + sll 16,a14 + move *a13(OBJ_YPOS),a2,L ;y0 + sub a14,a2 + + sub a2,a0 ;a0 = a0-a2 (y - y0) + add a0,a1 + divu a8,a1 ;a1 = a1/a8 ( ((y-y0)+(1/2*a*t^2)) / t ) + + cmpi >0f0000,a1 + jrlt #yok + movi >0f0000,a1 +#yok move a1,*a13(OBJ_YVEL),L + + + move *a13(TGT_ZOFF),a1 ;target z + sll 16,a1 + + move *a4+,a0 ;attack z offset + sll 16,a0 + move *a13(OBJ_ZPOS),a2,L + add a0,a2 ;att z + + sub a2,a1 ;def z - att z + move a1,a6 ;delta z + move a8,a0 ;ticks + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_ZVEL),L + + + abs a5 + srl 16,a5 + move a5,a1 + mpyu a5,a1 ;deltax^2 + move a1,a5 + + abs a6 + srl 16,a6 + move a6,a1 + mpyu a6,a1 ;deltaz^2 + move a1,a0 + + add a5,a0 + calla square_root + + cmp a0,a9 ;a9-a0 (will we exceed max dist?) + jrgt #ok + + sll 8,a9 ;x 256 (8 bits fractional) + divu a0,a9 ;a9/a0 + + move a9,a1 + move *a13(OBJ_XVEL),a0,L + mpys a0,a1 ;scale down xvel + sra 8,a1 ;shift off fractional + move a1,*a13(OBJ_XVEL),L + + move a9,a1 + move *a13(OBJ_ZVEL),a0,L + mpys a0,a1 ;scale down yvel + sra 8,a1 ;shift off fractional + move a1,*a13(OBJ_ZVEL),L + +#ok + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_zero_xzvels ;40 + + clr a0 + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_ZVEL),L + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_rope_z ;41 + ;.word ANI_ROPE_Z,R_TOP,RZ_HIGH + + ;which rope has he hit? + move @right_rproc,a0,L + move *a13(OBJ_XPOS),a14,L + cmpi RING_X_CENTER<<16,a14 + jrgt #right + + move @left_rproc,a0,L +#right + move *a4+,a1,W ;rope index + move *a4+,a2,W ;action + calla set_rope_z + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_round_loop ;42 + + move @p1rounds,a0 + cmpi 2,a0 + jrz #at_end + move @p2rounds,a0 + cmpi 2,a0 + jreq #at_end + + movk 1,a0 + move a0,*a10(OANICNT) + rets + +#at_end + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +;MJT Start +;_ani_set_opp_getup ;43 +; +;;args: .word (GETUP_TIME) +; +; move *a4+,a0 +; +; move *a13(WHOIHIT),a14,L +; move a0,*a14(GETUP_TIME) +; +; move a4,*a10(OANIPC),L +; jruc _next_command +; +;MJT End + + +#******** +_ani_set_xvel ;44 + +;args: .long (XVEL) .word (MODE) ;if MODE=0 vel is absolute + ;if MODE=1 vel is facing relative + ;if MODE=2 vel is hit relative + ;if MODE=3 vel is new_face relative + move *a4+,a0,L + move *a4+,a1 + jrz #abs + dec a1 + jrz #face + dec a1 + jrz #hit + +;new_facing relative + move *a13(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a0 ;left + jruc #abs + +#hit +;hit relative + move *a13(PLYR_HIT_SIDE),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;hit from right + + neg a0 ;hit from left + jruc #abs +#face + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a0 ;left +#abs + move a0,*a13(OBJ_XVEL),L + + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_ifnotstatus ;45 + + move *a4+,a0,L ;this is a conditional goto + move *a13(ANIMODE),a1 ;if MODE_STATUS clear then + btst MODE_STATUS_BIT,a1 ;branch is taken + jrnz #skip + + move a0,a4 ;new ani pc +#skip + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_slide_back + + move *a4+,a8 ;range + move *a4+,a9,L ;x-vel + move *a4+,a7,L ;new ani PC if no slide + move a4,*a10(OANIPC),L + + move *a13(ANIMODE),a14 ;was there a collision? + btst MODE_STATUS_BIT,a14 + jrz #no_slide + + + move *a13(WHOIHIT),a6,L + + move *a6(PLYRMODE),a5 + cmpi MODE_BLOCK,a5 + jrz #no_slide + + move *a6(OBJ_XPOSINT),a5 + move *a13(OBJ_XPOSINT),a0 + + cmp a5,a0 ;a0-a5 + jrgt #hit_from_right + +;hit_from_left + move *a13(INRING),a0 + jrnz #outside1 + + PUSH a6,a13 + move a6,a13 + movi vln_right_rope,a6 + calla calc_line_x + PULL a6,a13 + move *a6(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmp a8,a0 + jrgt #no_slide + jruc #slide +#outside1 + jruc #no_slide + + + + +#hit_from_right + move *a13(INRING),a0 + jrnz #outside2 + + PUSH a6,a13 + move a6,a13 + movi vln_left_rope,a6 + calla calc_line_x + PULL a6,a13 + move *a6(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmp a8,a0 + jrgt #no_slide + + neg a9 + jruc #slide +#outside2 + jruc #no_slide + + +#slide + move a9,*a13(OBJ_XVEL),L + + + movi 3000h,a0 + move a0,*a13(OBJ_FRICTION) + + move *a13(ANIMODE),a0 + ori MODE_FRICTION,a0 + move a0,*a13(ANIMODE) + jruc _next_command + +#no_slide + move a7,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_clr_damage ;47 + + move a4,*a10(OANIPC),L + calla clear_damage_log + jruc _next_command + +#******** +_ani_set_zvel ;48 + +;args: .long (ZVEL) .word (MODE) ;if MODE=0 vel is absolute + ;if MODE=1 vel is facing relative + ;if MODE=2 vel is hit relative + move *a4+,a0,L + move *a4+,a1 + jrz #abs + dec a1 + jrz #face +;hit relative + move *a13(PLYR_HIT_SIDE),a14 + btst MOVE_UP_BIT,a14 + jrnz #abs ;hit from above + + neg a0 ;hit from below + jruc #abs +#face + move *a13(FACING_DIR),a14 + btst MOVE_DOWN_BIT,a14 + jrnz #abs ;down + neg a0 ;up +#abs + move a0,*a13(OBJ_ZVEL),L + + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_master_throw ;49 + + + move *a4+,a5,L ;x vel + move *a4+,a6,L ;z vel + move *a4+,a7,L ;y vel + move *a4+,a8,L ;ani seq (for slave) + move a4,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a2,L ;proc attached to + jrz #not_attached + move *a2(ATTACH_PROC),a0,L + jrz #not_attached + + clr a0 + move a0,*a13(ATTACH_PROC),L ;not attached to anything + move a0,*a2(ATTACH_PROC),L ;not attached to anything + + move *a2(PLYR_HIT_SIDE),a0 + btst MOVE_RIGHT_BIT,a0 + jrnz #no_neg ;hit from right + neg a5 +#no_neg + move a5,*a2(OBJ_XVEL),L + move a6,*a2(OBJ_ZVEL),L + move a7,*a2(OBJ_YVEL),L + + move a8,a0 ;ani seq + callr change_anim_anim ;a2 = * process + + jruc _next_command + + + move *a2(WRESTLERNUM),a0 + X32 a0 +;;; addi #heldthrown_table,a0 + move *a0,a0,L + callr change_anim_anim ;a2 = * process + + movi MODE_INAIR,a0 + move a0,*a2(PLYRMODE) + + movi TSEC*4,a0 ;!!!! this must be passed + move a0,*a2(GETUP_TIME) + +#not_attached + jruc _next_command + + + +#******** +_ani_face ;50 + + move *a4+,a0 + move a4,*a10(OANIPC),L + + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + xori MOVE_LEFT|MOVE_RIGHT,a0 +#no_flip + move a0,*a13(FACING_DIR) + + jruc _next_command + + +#******** +_ani_setword ;51 + +;sets a word in the procs pdata area +; .word ANI_SETWORD,OFFSET,VAL + + move *a4+,a0 ;OFFSET + add a13,a0 + move *a4+,a1 ;VAL + move a1,*a0 + move a4,*a10(OANIPC),L + + jruc _next_command + +#******** +_ani_getup ;52 + +;args: .word (GETUP_TIME) + + move *a4+,a0 + + move *a13(PLYR_DIZZY),a14 + jrnz #skip + + move a0,*a13(GETUP_TIME) +#skip + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_getup_wait ;53 + + move *a13(GETUP_TIME),a0 + jrnz #no_done + + move a4,*a10(OANIPC),L + jruc _next_command + +#no_done + movk 1,a0 + move a0,*a10(OANICNT) ;# ticks to hold cur frame + rets + +#******** +_ani_clr_stars ;54 + + clr a0 + move a0,*a13(STARS_FLAG) + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_shakeall ;55 + + movi ROPE_BOUNCEUD,a1 + move *a4+,a2,W + move a4,*a10(OANIPC),L + + ;force a2 into range, just to be safe... + andi 03h,a2 + + move @NUM_OPPS,A0 + CMPI 2,A0 + JRGE _next_command + + movi ROPE_BACK,a0 + calla rope_command + movi ROPE_LEFT,a0 + calla rope_command + movi ROPE_RIGHT,a0 + calla rope_command + movi ROPE_FRONT,a0 + calla rope_command + + jruc _next_command + +#******** +_ani_damage ;56 + + move *a4+,a0 + neg a0 ;positive a0 = health increase... + move *a13(PLYRNUM),a1 + calla adjust_health + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_start_dizzy ;57 + +; clr a0 +; move a0,*a13(PLYR_DIZZY) + PUSH a10 + move *a4+,a10 ;Where do stars go? + calla create_dizzy_proc + PULL a10 + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_clr_status ;58 + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_set_target ;59 + + move *a4+,a0 + move a4,*a10(OANIPC),L + calla set_target_offsets + jruc _next_command + +#******** +_ani_max_x ;60 + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_max_z ;61 + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_max_y_vel ;62 + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_superslave ;63 + +; long pointer to slave table +; word index into table + + move *a4+,a5,L ;* table + move *a4+,a6 ;index to frame & offsets + move a4,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #done + + move *a11(WRESTLERNUM),a0 + X32 a0 + add a5,a0 + move *a0,a5,L + .if DEBUG + move *a5,a0,L ;table defined? + jrnz #ok1 + LOCKUP +; no slave table defined! +#ok1 + .endif + + movi 80,a1 ;LWWW + mpyu a6,a1 + + add a1,a5 + move *a5+,a0,L ;* * image + move *a0,a0,L ;* image + .if DEBUG + jrnz #ok + LOCKUP +; image not loaded! (null pointer) +#ok + .endif + move a0,*a11(CUR_FRAME),L ;primary frame + + move *a5+,a0 ;xoff + move a0,*a13(ATTACH_XOFF) + move *a5+,a0 + move a0,*a13(ATTACH_YOFF) + + move *a11(OBJ_CONTROL),a3 + + move *a13(FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #right +;left + andni M_FLIPH,a3 ;clear flip bit + jruc #cnt +#right + ori M_FLIPH,a3 ;set flip +#cnt + move *a5+,a0 ;flip flag + jrz #skip + + xori M_FLIPH,a3 ;invert +#skip + move a3,*a11(OBJ_CONTROL) + +#done + jruc _next_command + +#******** +* +;same as old slaveanim except this executes +;the animation up to the 1st sleep + +_ani_slaveanim ;64 + + move *a4+,a5,L ;* table + move a4,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a2,L + move *a2(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #done + + move *a2(WRESTLERNUM),a0 + X32 a0 + add a0,a5 + move *a5,a0,L + jrnz #ok1 + .if DEBUG + LOCKUP +; no slave anim table defined! + .endif + jruc _next_command +#ok1 +;a0 = * animation script +;a2 = * wrestler process + + PUSH a10,a13 + + move a2,a13 + callr change_anim1a ;execute animation + + PULL a10,a13 + +#done + jruc _next_command + +#******** +_ani_rawsound ;65 + + move *a4+,a3,W + calla SNDSND + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_damageopp ;66 + + move *a4+,a0 + neg a0 + move *a13(ATTACH_PROC),a2,L + jrz #done + move *a2(PLYRNUM),a1 + calla adjust_health + +#done + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_rndper ;67 + + ;word probability + ;long jump here if hit + + move *a4+,a0,W + move *a4+,a2,L + calla RNDPER + jrls #done + + ;ANI_GOTO a2 + move a2,*a10(OANIPC),L + jruc _next_command + +#done + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_waithitopp ;68 + + ;NOTE: This is just like an ordinary "WL ticks,frame" type command + ; except that the ANICNT is zeroed if we hit the opponent. + + ;word max ticks to wait + ;long frame to hold + + move *a13(ANIMODE),a14 + ori MODE_WAITHITOPP,a14 + move a14,*a13(ANIMODE) + + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_attchimage ;69 + +;long *image,word zoff + + ;update OANIPC + move a4,a14 + addi 30h,a14 + move a14,*a10(OANIPC),L + + move *a4+,a0,L + jrz #offimg + + move *a4+,a1 + move a1,*a13(ATTIMG_ZOFF) +#off + move *a13(ATTIMG_CUR_FRAME),*a13(ATTIMG_LAST_FRAME),L + + move *a0,a0,L + .if DEBUG + jrnz #ok + LOCKUP +;NULL IMAGE POINTER!!! +#ok + .endif +;#offimg + move a0,*a13(ATTIMG_CUR_FRAME),L + move a4,*a10(OANIPC),L + jruc _next_command + +#offimg + move a0,*a13(ATTIMG_CUR_FRAME),L + addk 16,a4 + move a4,*a10(OANIPC),L + jruc _next_command + + .if 0 + + move *a4+,a0,L + jrz #off + move *a4+,a1 + move a1,*a13(ATTIMG_ZOFF) + + move *a0,a0,L + .if DEBUG + jrnz #ok + LOCKUP +;NULL IMAGE POINTER!!! +#ok + .endif + + move a0,*a13(ATTIMG_CUR_FRAME),L + move *a13(ATTIMG_IMG),a8,L + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(ICMAP),a0,L + calla pal_find + jrnz #AOK + + LOCKUP ;can't find palette + +#AOK + move a0,*a8(OPAL) + move *a8(OIMG),a0,L + movb *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + + move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + move *a13(OBJ_CONST),*a8(OCONST) + + jruc _next_command + +#off + move a0,*a13(ATTIMG_CUR_FRAME),L + jruc _next_command + + .endif + +#******** +_ani_ifoppmode ;70 + + ;If opponent PLYRMODE is #MODE, jump to #BRANCH + ;If the high bit of #MODE is set, jump on PLYRMODE != ~#MODE + + STRUCT 0 + WORD #MODE + LONG #BRANCH + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(CLOSEST_NUM),a11 + X32 a11 + addi process_ptrs,a11 + move *a11,a11,L + move *a11(PLYRMODE),a14 + + move *a4(#MODE),a0 + jrn #not + cmp a0,a14 + jrne #done + jruc #branch + +#not + not a0 + cmp a0,a14 + jreq #done + +#branch + move *a4(#BRANCH),a0,L + move a0,*a10(OANIPC),L + +#done + jruc _next_command + +#******** +_ani_ifbuttons ;71 + +;buttons (WORD), ani address (LONG) + +;SL + move a13,a0 + calla wres_get_but_val_cur + + move *a4+,a1 ;button vals + move *a4+,a2,L ;ani address + + and a1,a0 + cmp a1,a0 + jrne #fail + + move a2,a4 ;jump to new ani address +#fail + move a4,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_ifnohitblock ;72 + +;ani address (LONG) + + move *a4+,a0,L ;this is a conditional goto + move *a13(HITBLOCKER),a14 + jrnz skip? + move a0,a4 +skip? + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_end ;73 + move *a10(OANIMODE),a0 + ori MODE_END,a0 + move a0,*a10(OANIMODE) + jruc _exit + +#******** +_ani_ifrope ;74 + clr a11 + jruc _ani_ifrope_common + +#******** +_ani_ifnotrope ;75 + +#MODE equ 0 ;UHW +#DIST equ 10h ;UHW +#ADDR equ 20h ;UHL +#SIZE equ 40h + + ;word distance + ;long jump here if close enough + ;word mode RC_FRONT - check rope in front of caller + ; RC_BACK - check rope behind caller + ; RC_EITHER - check nearest rope + ; or'ed with: + ; RC_PLAYER - check for caller + ; RC_OPPONENT - check for caller's closest opponent + + movk 1,a11 + +_ani_ifrope_common + ;prepare OANIPC before doing anything else + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + ;;;a9 is process ptr of person for whom we're checking + move a13,a9 + move *a4(#MODE),a0 + sra 8,a0 ;mask off the low byte + jrz #player_set ;RC_PLAYER == 0 + + move *a13(CLOSEST_NUM),a9 + X32 a9 + addi process_ptrs,a9 + move *a9,a9,L +#player_set + + move *a4(#MODE),a14,W ;mode + andi 00FFh,a14 ;mask off the high byte + jrz #check_front ;RC_FRONT == 0 + dec a14 + jrz #check_back + + ;;;RC_(FRONT|BACK|EITHER) cases +#check_closest + move *a9(OBJ_XPOSINT),a1 + cmpi RING_X_CENTER,a1 + jrgt #check_right_rope + jruc #check_left_rope + +#check_front + move *a9(FACING_DIR),a0 + btst MOVE_RIGHT_BIT,a0 + jrnz #check_right_rope + jruc #check_left_rope + +#check_back + move *a9(FACING_DIR),a0 + btst MOVE_LEFT_BIT,a0 + jrnz #check_right_rope + jruc #check_left_rope + + + ;now do the actual check +#check_left_rope + movi vln_left_rope,a6 + jruc #check_xxx_rope +#check_right_rope + movi vln_right_rope,a6 +#check_xxx_rope + calla calc_line_x + move *a9(OBJ_XPOSINT),a1 + sub a0,a1 + abs a1 + move *a4(#DIST),a0 + cmp a0,a1 + jrle #close_enough + + + ;a11 is one if we are an IFNOTROPE command, so swap outcomes. +#too_far + dec a11 + jrz #close_enough + + jruc _next_command + +#close_enough + dec a11 + jrz #too_far + + move *a4(#ADDR),a0,L + move a0,*a10(OANIPC),L + jruc _next_command + + +#******** +_ani_opp_getup ;76 + +;if TIME is negative, then clear DELAY_METER + +#TIME equ 0 ;UHW +#SIZE equ 10h + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a1,L + jrnz #victim_set + + ;not attached. check WHOIHIT + move *a13(WHOIHIT),a1,L + jrz #done + +#victim_set + + move *a4(#TIME),a0 + jrnn #norm + + clr a14 + move a14,*a1(DELAY_METER) ;always do delay + + abs a0 ;make GETUP_TIME positive + +#norm + move *a1(PLYR_DIZZY),a14 + jrnz #done + + move a0,*a1(GETUP_TIME) +#done + jruc _next_command + +#******** +_ani_shakecorner ;77 + + movk 1,a2 + movi ROPE_BOUNCEUD,a1 + movi ROPE_BACK,a0 + calla rope_command + + movi ROPE_LEFT,a0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrle #dir_set + movi ROPE_RIGHT,a0 +#dir_set + + movi ROPE_BOUNCEUD,a1 + calla rope_command + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_singlestep ;78 + + + calla get_all_buttons_down + move a0,a0 + jrnz #done + move a1,*a10(OANICNT) + jruc _exit + +#done + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_superslave2 ;79 + +; # ticks +; attacker frame +; table address +; table index + + STRUCT 0 ;ANI_SUPERSLAVE data + WORD #TICKS + LONG #ATTACKER + LONG #TABLE + WORD #INDEX + LABEL #SIZE + + STRUCT 0 ;table data + LONG #FRAME + WORD #XOFF + WORD #YOFF + WORD #FLIP + LABEL #TABLE_SIZE + + ;set OANIPC + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + ;verify the links + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #done + + move *a4(#TICKS),a0 + move *a13(ANI_SPEED),a1 + mpyu a0,a1 + srl 8,a1 + move a1,*a10(OANICNT) + move *a4(#ATTACKER),a0,L + move *a0,a0,L + + .if DEBUG + jrnz #ok0 + LOCKUP ;image not loaded! (null pointer) +#ok0 + .endif + ;set the attacker frame + move a0,*a10(OCUR_FRAME),L + + + ;get the slave table + move *a11(WRESTLERNUM),a0 + X32 a0 + move *a4(#TABLE),a14,L + add a14,a0 + move *a0,a5,L + + .if DEBUG + move *a5,a0,L + jrnz #ok1 + LOCKUP ;no slave table defined! +#ok1 + .endif + + ;get the defender frame + move *a4(#INDEX),a14 + movi #TABLE_SIZE,a1 + mpyu a14,a1 + add a1,a5 + move *a5(#FRAME),a0,L + move *a0,a0,L + + .if DEBUG + jrnz #ok + LOCKUP ;image not loaded! (null pointer) +#ok + .endif + + ;set the defender frame + move a0,*a11(CUR_FRAME),L + + ;compute attach offsets + ; attach Y is raw(table)x + defender Xoff - attacker Xoff + + ;attacker anis in a8, defender in a9 + move *a13(CUR_FRAME),a0,L ;attacker frame + calla get_mpart_offsets + move a0,a8 + move *a11(CUR_FRAME),a0,L ;defender frame + calla get_mpart_offsets + move a0,a9 + + ;attacker size in a6, defender in a7 + move *a13(CUR_FRAME),a0,L ;attacker frame + calla get_mpart_xsize + move a0,a6 + move *a11(CUR_FRAME),a0,L ;defender frame + calla get_mpart_xsize + move a0,a7 + + ;compute Y offset + move *a5(#YOFF),a1 ;raw Y + + move a9,a14 + sra 16,a14 + sub a14,a1 ;sub defender aniY + + move a8,a14 + sra 16,a14 + add a14,a1 ;add attacker aniY + + move a1,*a13(ATTACH_YOFF) + + ;attach Xoff: + ; no flip: raw x + def xoff - att xoff + ; def flip: raw x + (def xsz - def xoff) - att xoff + + ;compute X offset + move *a5(#XOFF),a1 ;raw X + + ;defender part in a2 + move a9,a2 + andi 0FFFFh,a2 ;def xoff + sext a2 + callr #attacker_flip_test + jrc #af_match + + ;attack X's don't match up + move *a5(#FLIP),a14 + jrz #def_set + neg a2 + add a7,a2 ;def xsize + jruc #def_set + + ;attack X's match up +#af_match + move *a5(#FLIP),a14 + jrnz #def_set + neg a2 + add a7,a2 ;def xsize +#def_set + + ;attacker part in a3 + move a8,a3 + andi 0FFFFh,a3 ;att xoff + + add a2,a1 + sub a3,a1 + + ;if X's don't match, negate this + calla #attacker_flip_test + jrc #foox + neg a1 +#foox + + move a1,*a13(ATTACH_XOFF) + + + ;set flip bits properly + move *a11(OBJ_CONTROL),a3 + move *a13(FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #right +;left + andni M_FLIPH,a3 ;clear flip bit + jruc #cnt +#right + ori M_FLIPH,a3 ;set flip +#cnt + move *a5(#FLIP),a0 ;flip flag + jrz #skip + + xori M_FLIPH,a3 ;invert +#skip + move a3,*a11(OBJ_CONTROL) + +#done + jruc _exit + + SUBRP #attacker_flip_test + ;Test for attacker flip. When facing right, flip should be off. + ; When facing left, should be on. Set the carry flag if everything + ; is okay. + PUSH a0,a1 + move *a13(FACING_DIR),a0 + move *a13(OBJ_CONTROL),a1 + btst B_FLIPH,a1 + jrnz #ttf_set + +#ttf_clear + btst MOVE_LEFT_BIT,a0 + jrnz #ttf_flip + jruc #ttf_noflip +#ttf_set + btst MOVE_RIGHT_BIT,a0 + jrnz #ttf_flip + jruc #ttf_noflip + +#ttf_flip + PULL a0,a1 + clrc + rets +#ttf_noflip + PULL a0,a1 + setc + rets + +#******** +_ani_setoppmode ;80 + + STRUCT 0 + WORD #MODE + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a0,L + jrz #done + move *a0(ATTACH_PROC),a14,L + jrz #done + + move *a0(ANIMODE),a1 + move *a4(#MODE),a14 + or a14,a1 + move a1,*a0(ANIMODE) + +#done + jruc _next_command + +#******** +_ani_clroppmode ;81 + + STRUCT 0 + WORD #MODE + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a0,L + jrz #done + move *a0(ATTACH_PROC),a14,L + jrz #done + + move *a0(ANIMODE),a1 + move *a4(#MODE),a14 + andn a14,a1 + move a1,*a0(ANIMODE) + +#done + jruc _next_command + +#******** +_ani_oppoffset ;82 + + STRUCT 0 + LONG #TABLE + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a0,L + jrz #done + move *a0(ATTACH_PROC),a14,L + jrz #done + + move *a0(WRESTLERNUM),a1 + X32 a1 + + move *a4(#TABLE),a14,L + jrz #done + add a14,a1 + + move *a0(OBJ_XPOSINT),a2 + move *a1+,a3 + move *a0(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #right + neg a3 +#right + add a3,a2 + move a2,*a0(OBJ_XPOSINT) + + move *a0(OBJ_YPOSINT),a2 + move *a1+,a3 + add a3,a2 + move a2,*a0(OBJ_YPOSINT) + +#done + jruc _next_command + +#******** +_ani_ifblocked ;83 + + move *a4+,a0,L ;this is a conditional goto + move *a13(HITBLOCKER),a1 + jrz #skip + + move a0,a4 ;new ani pc +#skip + move a4,*a10(OANIPC),L + jruc _next_command + +;MJT Start +#******** +_ani_waitroll ;84 + + ;DEAD check + move *a13(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #repeat +;MJT Start + move *a13(I_WILL_DIE),a14 + jrnz #repeat +;MJT End + + ;since we're not dead, set mode onground, just to be safe + movi MODE_ONGROUND,a14 + move a14,*a13(PLYRMODE) + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #repeat + + move *a13(GETUP_TIME),a0 + jrnz #repeat + + ;clear stars + clr a0 + move a0,*a13(STARS_FLAG) + + calla do_roll + jrz #getup + +#repeat ;come back again next tick. + clr a0 + move a0,*a13(Z_BOUND) + movk 1,a0 + move a0,*a10(OANICNT) + rets + +#getup + move a4,*a10(OANIPC),L + jruc _next_command + +;MJT End + +#******** +_ani_setoppfacing ;85 + + move *a13(ATTACH_PROC),a0,L + jrz #done + move *a0(ATTACH_PROC),a14,L + jrz #done + + move *a0(NEW_FACING_DIR),a14 + move a14,*a0(FACING_DIR) + +#done + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_ifopp ;86 + +; .word ANI_IFOPP,wrestler1,wrestler2,...,wrestler3,-1 +; sets STATUS if opponent is one of the wrestlers in the list, else clears. + + move *a13(CLOSEST_NUM),a11 + X32 a11 + addi process_ptrs,a11 + move *a11,a11,L + + move *a11(WRESTLERNUM),a11 + + ;clear mode_status + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + ;compare loop +#loop + move *a4+,a0,W + jrn #done + cmp a0,a11 + jrne #loop + + ;hit. set mode_status + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + ;run off the rest of the list +#runoff + move *a4+,a14 + jrnn #runoff + +#done + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_snot ;87 + + move a4,a0 + addi 32+4*16,a0 ;LWWWW + move a0,*a10(OANIPC),L + + push a10 + clr a1 ;proc ID + move *a4+,a7,L ;wake address + move a4,a8 ;* arguments + move a13,a11 + calla GETPRC + pull a10 + + jruc _next_command + +#******** +_ani_if_butcount_ge ;88 + + STRUCT 0 + WORD #BUTTON + WORD #BUTCNT + LONG #ADDR + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a4(#BUTTON),a14 + add a13,a14 + move *a14,a14 ;button count + move *a4(#BUTCNT),a0 + cmp a0,a14 ;#of presses needed to repeat + jrlt #fail + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail + jruc _next_command + + +********* +_ani_if_butcount_lt ;89 + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a4(#BUTTON),a14 + add a13,a14 + move *a14,a14 ;button count + move *a4(#BUTCNT),a0 + cmp a0,a14 ;#of presses needed to repeat + jrge #fail2 + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail2 + jruc _next_command + +#******** +_ani_if_rptcount ;90 + + STRUCT 0 + LONG #ADDR + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(RPT_COUNT),a14 + jrz #fail + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail + jruc _next_command + +********* +_ani_ifnot_rptcount ;91 + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(RPT_COUNT),a14 + jrnz #fail2 + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail2 + jruc _next_command + + +#******** +_ani_ringcheck ;92 + + ;If caller and nearest opponent's INRING values don't match, jump + ; to #BRANCH + + STRUCT 0 + LONG #BRANCH + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(CLOSEST_NUM),a11 + X32 a11 + addi process_ptrs,a11 + move *a11,a11,L + move *a11(INRING),a0 + move *a13(INRING),a1 + cmp a0,a1 + jreq #done + + move *a4(#BRANCH),a0,L + move a0,*a10(OANIPC),L + +#done + jruc _next_command + +#******** + +;--> use this in a PUPPET sequence +;this is the same as calling ani_debris except that +;everything is relative to the wrestler attached to me + +_ani_debrisat ;93 + + move a4,a14 + addi 4*16,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + jrz #done + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jreq db94 +#done + jruc _next_command + + +#******** +_ani_debris ;94 + + .ref react_debris + + move a4,a14 + addi 4*16,a14 + move a14,*a10(OANIPC),L + move a13,a11 +db94 + + .ref NUM_OPPS + move @NUM_OPPS,A1 + CMPI 2,A1 + JRGE _next_command +;MJT Start +;Stop debris if other smoke is going on! Bog reduction... + .ref no_debris + move @no_debris,a1 + jrnz _next_command +;MJT End + + push a10 + clr a1 ;proc ID + + movi react_debris,a7 ;wake address + move a4,a8 ;* arguments + calla GETPRC + pull a10 + + jruc _next_command + + +#******** +_ani_set_wrestler_xflip ;95 + + move *a13(FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #right + + move *a13(OBJ_CONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + + move a4,*a10(OANIPC),L + jruc _next_command + +#right + move *a13(OBJ_CONTROL),a14 + andni M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_slideatopp ;96 + +; max ticks to slide +; target velocity +; max Z distance +; target area of opponent +; x,y,z offset of attack box + + STRUCT 0 + WORD #MAX_TICKS + WORD #VELOCITY + WORD #MAX_Z_DIST + WORD #TRGT + WORD #ATT_X_OFF + WORD #ATT_Y_OFF + WORD #ATT_Z_OFF + LABEL #SIZE + + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(CLOSEST_NUM),a11 + X32 a11 + addi process_ptrs,a11 + move *a11,a11,L + + ;make sure both have the same INRING value + move *a11(INRING),a0 + move *a13(INRING),a1 + cmp a0,a1 + jrne _next_command + + move *a11(OBJ_XPOS),a1,L + move *a11(OBJ_ZPOS),a2,L + move *a11(OBJ_YPOS),a3,L + addi [256,0],a3 + + move *a11(OBJ_XVEL),a5,L + move *a11(OBJ_ZVEL),a6,L + move *a11(OBJ_YVEL),a7,L + move *a11(GROUND_Y),a8 + sll 16,a8 + addi [256,0],a8 + + move *a4(#MAX_TICKS),a0 + +#lp0 + add a5,a1 ;x + xvel + add a6,a2 ;z + zvel + + move a7,a7 + jrz #ok + + add a7,a3 ;y + yvel +;;;; subi GRAVITY,a7 ;yvel - gravity + + cmp a3,a8 ;hit ground? + jrgt #ok + move a8,a3 + jruc #dn +#ok + dsj a0,#lp0 +#dn + subi [256,0],a3 + + move a1,@oppx,L + move a2,@oppz,L + move a3,@oppy,L + + move *a4(#TRGT),a0 + jrn #user + calla set_target_offsets +#user + + move *a13(TGT_XOFF),a0 ;target x offset + sll 16,a0 + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #right1 + neg a0 +#right1 +;;; move *a11(OBJ_XPOS),a1,L + move @oppx,a1,L + add a0,a1 ;def target x + + move *a4(#ATT_X_OFF),a0 + sll 16,a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #right0 + neg a0 +#right0 + move *a13(OBJ_XPOS),a2,L + add a0,a2 ;att x + + + + move *a4(#VELOCITY),a0,L + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #pos + neg a0 ;left +#pos + move a0,*a13(OBJ_XVEL),L + + +; move *a4(#MAX_TICKS),a0 +; move a0,*a10(OANICNT) + + jruc _next_command + + +#******** +_ani_clr_butcount ;97 + + move a4,*a10(OANIPC),L + clr a14 + move a14,*a13(PUNCHB_COUNT) + move a14,*a13(BLOCKB_COUNT) + move a14,*a13(SPUNCHB_COUNT) + move a14,*a13(KICKB_COUNT) + move a14,*a13(SKICKB_COUNT) + +;;; move a14,*a13(BUT_COUNT) + jruc _next_command + +#******** +_ani_set_rptcount ;98 + + move *a4+,a0 + move a0,*a13(RPT_COUNT) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_dec_rptcount ;99 + + move *a13(RPT_COUNT),a0 + jrz #atz + dec a0 +#atz + move a0,*a13(RPT_COUNT) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_shadowtrail ;100 + + STRUCT 0 + LONG #PALETTE + WORD #RATE + WORD #LIFESPAN + LABEL #SIZE + + move *a4,a0 + jrnz #not_off + + addi 010h,a4 + move a4,*a10(OANIPC),L + + move *a13(SHADTRAIL_PROC),a0,L ;check proc still exists + jrz #huh + + calla KILL + + clr a0 + move a0,*a13(SHADTRAIL_PROC),L ;proc is toast +#huh + jruc _next_command + + + + +#not_off + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + push a10 + + move a4,a8 ;* arguments + move a13,a11 ;* wrestler proc + +; move *a13(PLYRNUM),a0 +; ori SHADGEN_PID,a0 ;proc ID +; move a0,a1 ;mask +; calla EXISTP ;does process already exist? +; jrz #no_proc + + move *a13(SHADTRAIL_PROC),a0,L + jrz #no_proc + ;exists, so restart with new arguments + move *a13(PLYRNUM),a1 + ori SHADGEN_PID,a1 ;same proc ID + movi shadow_gen,a7 ;wake address + calla XFERPROC + jruc #exit + +#no_proc + move *a13(PLYRNUM),a1 + ori SHADGEN_PID,a1 ;proc ID + movi shadow_gen,a7 ;wake address + calla GETPRC + move a0,*a13(SHADTRAIL_PROC),L + +#exit + pull a10 + jruc _next_command + + + +*** +;a8 = * arguments +;a11 = * wrestler proc + +shadow_gen + +#lp + move *a11(SHADTRAIL_PROC),a0,L + jrz #die + + move *a11(CUR_FRAME),a10,L ;* multi-part image + + clr a1 ;proc ID + movi shadow_proc,a7 ;wake address + calla GETPRC ;create proc for piece + + move *a10(-10h),a9 ;# pieces + addi (17-7)*16,a10 ;1st header +#loop + dec a9 + jrz #done + addi 7*16,a10 + + clr a1 ;proc ID + movi shadow_proc,a7 ;wake address + calla GETPRC ;create proc for piece + + jruc #loop +#done + move *a8(#RATE),a0 + calla PRCSLP ;sleep + + jruc #lp +#die + DIE + + +*** +;created from shadow_gen - creates an image, sleeps, delobj & dies +shadow_proc + + move *a8(#LIFESPAN),a9 + + movi Y_SCALE_MULTIPLIER,a0 + move *a11(OBJ_ZPOSINT),a1 + mpyu a0,a1 + move *a11(OBJ_YPOSINT),a0 + sll 16,a0 + sub a0,a1 ;y pos + + move *a11(OBJ_XPOS),a0,L ;x pos + + move a10,a2 ;* image + + move *a11(OBJ_PRIORITY),a3,L + srl 16,a3 ;z pos + + move *a11(OBJ_CONTROL),a4 ;DMA flags + + PUSHP a0,a1,a2,a3,a4 + SLEEP 1 + PULLP a0,a1,a2,a3,a4 + + move *a8(#PALETTE),a5,L + move a5,b0 ;palette to use + + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJP + + move a9,a0 ;lifespan + calla PRCSLP ;sleep +;#slp +; move @PCNT,a1 +; andi 1,a1 +; sll 12,a1 +; move *a8(OXPOS),a0 +; andi 0fffh,a0 +; or a1,a0 +; move a0,*a8(OXPOS) +; SLEEP 1 +; dsj a9,#slp + + calla DELOBJA8 + DIE + + +#******** +_ani_createproc ;101 + + STRUCT 0 + LONG #ADDR + WORD #PROCID + WORD #WORD1 + WORD #WORD2 + WORD #WORD3 + LABEL #SIZE + + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + move a13,a11 + + push a10 + move *a4(#PROCID),a1 ;proc ID + move *a4(#ADDR),a7,L ;wake address + addi #WORD1,a4 + move a4,a8 ;* arguments + calla GETPRC + pull a10 + + jruc _next_command + + +#******** +_ani_target ;102 + + ;sets leapat target to #TARGET1 or #TARGET2, depending on the + ; value of #MODE. + ;ex: ANI_TARGET,TGT_HEAD,TGT_KNEES,ATM_CLOSEST + ; target the victim's head or victim's knees, whichever + ; is closest. + + ;NOTE: This assumes that victim is on the ground. If he's + ; not, the results will be screwy. + + STRUCT 0 + WORD #TARGET1 ;TGT_??? + WORD #TARGET2 ;TGT_??? + WORD #MODE ;ATM_CLOSEST|ATM_FARTHEST + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + + ;first, figure out the orientation of the wrestlers + calla get_opp_process + move a0,a11 + + ;see if our flip bits match + move *a13(OBJ_CONTROL),a0 + move *a11(OBJ_CONTROL),a1 + xor a1,a0 + btst B_FLIPH,a0 + + ;if Z is set, the flips match and thus the we're facing our + ; opponent's feet, thus the #TARGET with the highest value + ; is closest. if Z isn't set, the opposite is true. + jrz #facing_feet + jruc #facing_head + +#facing_feet + move *a4(#MODE),a14 + cmpi ATM_CLOSEST,a14 + jreq #choose_highest + jruc #choose_lowest + +#facing_head + move *a4(#MODE),a14 + cmpi ATM_CLOSEST,a14 + jreq #choose_lowest + jruc #choose_highest + +#choose_highest + move *a4(#TARGET1),a0 + move *a4(#TARGET2),a1 + cmp a1,a0 + jrge #set + jruc #switch + +#choose_lowest + move *a4(#TARGET1),a0 + move *a4(#TARGET2),a1 + cmp a1,a0 + jrle #set + jruc #switch + +#switch + move a1,a0 +#set + calla set_target_offsets + jruc _next_command + +#******** +_ani_hmbwait ;103 + + STRUCT 0 + WORD #HIT + WORD #MISSED + WORD #BLOCKED + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + ;first check for a block + move *a13(HITBLOCKER),a1 + jrz #check_hit + + move *a4(#BLOCKED),*a10(OANICNT) + jrz _next_command + rets + + ;then for a hit +#check_hit + move *a13(ANIMODE),a14 + btst MODE_STATUS_BIT,a14 + jrz #missed + + move *a4(#HIT),*a10(OANICNT) + jrz _next_command + rets + + ;assume a miss +#missed + move *a4(#MISSED),*a10(OANICNT) + jrz _next_command + rets + +#******** +_ani_safe_time ;104 + + move *a4+,a0 + move a0,*a13(SAFE_TIME) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +;this won't do anything unless they're attached + +_ani_setopp_plyrmode ;105 + + move *a4+,a0 + move a4,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jrne #done + + move a0,*a11(PLYRMODE) +#done + jruc _next_command + +#******** +;this won't do anything unless they're attached + +_ani_xflip_opp ;106 + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jrne #done + + move *a11(OBJ_CONTROL),a0 + xori M_FLIPH,a0 + move a0,*a11(OBJ_CONTROL) + +#done + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +;sets a LONG in wrestler PDATA +_ani_setlong ;107 + + STRUCT 0 + WORD #PDOFF + LONG #LONG + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a4(#PDOFF),a0 + add a13,a0 + move *a4(#LONG),a1,L + move a1,*a0,L + + jruc _next_command + +#******** +* +_ani_immobilize ;108 + + move *a4+,a0 + + move *a13(PLYR_DIZZY),a14 + jrnz #skip + move *a13(WHOIHIT),a14,L + + move a0,*a14(IMMOBILIZE_TIME) +#skip + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +;this flips your opponent based upon flip table +;this won't do anything unless they're attached + +_ani_xflip_tbl ;109 + + STRUCT 0 + LONG #FLIPTBL + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jrne #done + + move *a11(WRESTLERNUM),a0 + X16 a0 + + move *a4(#FLIPTBL),a1,L + add a1,a0 + move *a0,a0 + jrz #done ;no flip + + move *a11(OBJ_CONTROL),a0 + xori M_FLIPH,a0 + move a0,*a11(OBJ_CONTROL) +#done + jruc _next_command + +#******** +* this sets the vels for a wrestler you're attached to +* x-vel and z-vel are relative to attackers facing dir + +_ani_setoppvels ;110 + + STRUCT 0 + LONG #XVEL + LONG #YVEL + LONG #ZVEL + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jrne #done + + move *a4(#YVEL),*a11(OBJ_YVEL),L + + move *a4(#XVEL),a0,L + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #xok ;right + neg a0 ;left +#xok + move a0,*a11(OBJ_XVEL),L + + move *a4(#ZVEL),a0,L + btst MOVE_DOWN_BIT,a14 + jrnz #zok ;down + neg a0 ;up +#zok + move a0,*a11(OBJ_ZVEL),L + +#done + jruc _next_command + + +#******** +;same as waithitgnd except you pass an offset to add to ground Y +;(so you can make the guy hit the ground sooner) + +_ani_waithitgnd2 ;111 + + STRUCT 0 + WORD #OFFSET + LABEL #SIZE + + + move *a13(OBJ_YVEL),a0,L ;must have down velocity + jrp #no_gnd + + ;if we're the master and the attach is valid, check and see if + ; our puppet has hit the ground. + move *a13(ANIMODE),a14 + btst MODE_KEEPATTACHED_BIT,a14 + jrz #skip_pcheck + + move *a13(ATTACH_PROC),a0,L + jrz #skip_pcheck ;we're attached? + move *a0(ATTACH_PROC),a14,L + jrz #skip_pcheck ;they're attached? + cmp a13,a14 + jrne #skip_pcheck ;to each other? + + ;ah, but if the opponent's MODE_GHOST bit is set, ignore him + move *a0(ANIMODE),a14 + btst MODE_GHOST_BIT,a14 + jrnz #skip_pcheck + + move *a0(OBJ_YPOSINT),a1,W + move *a0(GROUND_Y),a2,W + move *a4(#OFFSET),a14 + add a14,a2 + cmp a2,a1 + jrle #hit_gnd + +#skip_pcheck + + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a2 + move *a4(#OFFSET),a14 + add a14,a2 + cmp a2,a0 ;a0-a1 + jrgt #no_gnd + +#hit_gnd + sll 16,a2 + move a2,*a0(OBJ_YPOS),L + + .REF SMALL_BOUNCE + CALLA SMALL_BOUNCE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + jruc _next_command + +#no_gnd + movk 1,a0 + move a0,*a10(OANICNT) ;# ticks to hold cur frame + rets + + +#******** +_ani_set_opp_xvel ;112 + +;args: .long (XVEL) .word (MODE) ;if MODE=0 vel is absolute + ;if MODE=1 vel is facing relative + ;if MODE=2 vel is hit relative + ;if MODE=3 vel is new_face relative + + move *a13(ATTACH_PROC),a11,L + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jrne #done + + move *a4+,a0,L + move *a4+,a1 + jrz #abs + dec a1 + jrz #face + dec a1 + jrz #hit + +;new_facing relative + move *a13(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a0 ;left + jruc #abs + +#hit +;hit relative + move *a13(PLYR_HIT_SIDE),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;hit from right + + neg a0 ;hit from left + jruc #abs +#face + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a0 ;left +#abs + move a0,*a11(OBJ_XVEL),L + +#done + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_set_attach ;113 + move *a13(WHOIHIT),a0,L + move a0,*a13(ATTACH_PROC),L + move a13,*a0(ATTACH_PROC),L + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_inc_combo_count ;114 + move *a13(COMBO_COUNT),a0 + inc a0 + move a0,*a13(COMBO_COUNT) + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_clear_combo_count ;115 + CLR A0 + move a0,*a13(COMBO_COUNT) +; MOVE A0,*A13(COMBO_START) + + MOVE *a13(WHOIHIT),A0,L + MOVE *A0(GETUP_TIME),A14 + JRZ NO_WORRIES_MATEY + MOVI 40,A14 + move a14,*a0(IMMOBILIZE_TIME) + CLR A14 + MOVE A14,*A0(GETUP_TIME) +NO_WORRIES_MATEY + MOVI 120,A14 + MOVE A14,*A0(DELAY_METER) + +; MMTM SP,A0,A4,A8,A10 +; CALLA REWIRE_COMBO_METER +; MMFM SP,A0,A4,A8,A10 + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +_ani_add_move ;116 + move *a4+,a7 + move *a4+,a5 + move *a4+,a6 + mmtm sp,a0,a4,a8,a10 + calla ADD_TO_COMBO_COUNT + mmfm sp,a0,a4,a8,a10 + + move a4,*a10(OANIPC),L + jruc _next_command + +#******** +; +;if num_ticks is negative then use default value +; +_ani_startattack ;117 + + STRUCT 0 + WORD #ATT_TYPE + WORD #NUM_TICKS + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a4(#ATT_TYPE),*a13(ATTACK_TYPE) + + move *a4(#NUM_TICKS),a1 + jrp #ok + + movk 15,a1 ;default tick count +#ok + move @round_tickcount,a0 + add a0,a1 + move a1,*a13(ATTACK_TIME) + + jruc _next_command + +#******** +_ani_changeanim_tbl ;118 + + STRUCT 0 + LONG #TABLE + LABEL #END + + move *a13(WRESTLERNUM),a0 + X32 a0 + move *a4(#TABLE),a14,L + add a14,a0 + move *a0,a0,L + + move a0,*a10(OANIBASE),L + move a0,*a10(OANIPC),L + + jruc _next_command + +#******** +_ani_if_rptcount_ge ;119 + + STRUCT 0 + WORD #VAL + LONG #ADDR + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(RPT_COUNT),a14 + move *a4(#VAL),a0,W + cmp a0,a14 + jrlt #fail + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail + jruc _next_command + +#******** +_ani_if_rptcount_lt ;120 + + STRUCT 0 + WORD #VAL + LONG #ADDR + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a10(OANIPC),L + + move *a13(RPT_COUNT),a14 + move *a4(#VAL),a0,W + cmp a0,a14 + jrge #fail + + move *a4(#ADDR),*a10(OANIPC),L ;take branch +#fail + jruc _next_command + + +#***************************************************************************** +* used inside anim commands - doesn't call animate_wrestler +;a0 = * animation script +;a2 = * wrestler process + + SUBR change_anim_anim + + move a0,*a2(ANIBASE),L + move a0,*a2(ANIPC),L + + movi GRAVITY,a0 ;reset gravity + move a0,*a2(OBJ_GRAVITY),L + clr a0 + move a0,*a2(ANIMODE) + movk 1,a0 + move a0,*a2(ANICNT) + + rets + +#***************************************************************************** +;primary animation +;a0 = * animation script + + SUBR change_anim1 + + move *a13(ANIMODE),a2 + btst MODE_END_BIT,a2 ;if anim has ended, then + jrnz change_anim1a ;always restart it + + move *a13(ANIBASE),a2,L + cmp a0,a2 + jreq #no_change + + SUBR change_anim1a + + move a0,*a13(ANIBASE),L + move a0,*a13(ANIPC),L + + clr a0 + move a0,*a13(ANIMODE) + movk 1,a0 + move a0,*a13(ANICNT) + + movi GRAVITY,a0 ;reset gravity + move a0,*a13(OBJ_GRAVITY),L + callr animate_wrestler1 + +#no_change + rets + +#***************************************************************************** +;secondary animation +;a0 = * animation script + + SUBR change_anim2 + + move *a13(ANIMODE2),a2 + btst MODE_END_BIT,a2 ;if anim has ended, then + jrnz change_anim2a ;always restart it + + move *a13(ANIBASE2),a2,L + cmp a0,a2 + jreq #no_change + + SUBR change_anim2a + + move a0,*a13(ANIBASE2),L + move a0,*a13(ANIPC2),L + + clr a0 + move a0,*a13(ANIMODE2) + movk 1,a0 + move a0,*a13(ANICNT2) + + callr animate_wrestler2 + +#no_change + rets + +#***************************************************************************** + + SUBR slaveanim_tbl + + .long wres_slave_anim ;Bret + .long wres_slave_anim ;Razor + .long wres_slave_anim ;Taker + .long wres_slave_anim ;Yokozuna + .long wres_slave_anim ;Shawn + .long wres_slave_anim ;BamBam + .long wres_slave_anim ;Doink + .long wres_slave_anim ;Adam + .long wres_slave_anim ;Lex + + + SUBR wres_slave_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_END + +#***************************************************************************** + + SUBR set_images + + PUSH a13 + + movi process_ptrs,a1 + movi NUM_WRES,a2 +#slp + move *a1+,a13,L + jrz #skp_mtp + PUSH a1,a2 + callr #set_image + PULL a1,a2 +#skp_mtp + dsj a2,#slp + + PULL a13 + rets + + +#set_image + +; CLR A5 +; MOVE A5,*A13(SCREENY) + + move *a13(OBJ_ZPOS),a0,L + ori [01000h,0],a0 + move *a13(INRING),a14 + jrz #inring + cmpi [015ach,0],a0 + jrgt #inring + + subi [01e5h,0],a0 ;below mat +#inring + move a0,*a13(OBJ_PRIORITY),L + + + move *a13(OBJ_XPOS),a5,L ;x val + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(OBJ_ZPOSINT),a1 + mpyu a0,a1 + move a1,a6 ;y val + + move *a13(OBJ_BASE),a3,L + + + move a3,a0 + movk MAX_PIECES,a1 + movi [-100,0],a14 ;set all images offscreen + move *a13(OBJ_PRIORITY),a2,L + clr a7 +#lp + move *a0+,a8,L + move a7,*a8(OSAG),L + move a14,*a8(OXVAL),L + move a6,*a8(OYVAL),L ;keep updating YVAL to keep priorities + move a2,*a8(OZVAL),L + dsj a1,#lp + +; move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops +; andni 00111b,a7 +; movi DMAWNZ,a0 +; andi 01111b,a0 +; or a0,a7 + + move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops + andi 0110000b,a7 + ori DMAWNZ,a7 + + clr a10 ;x offset + move *a13(GROUND_Y),a11 ;y offset + + +; move *a13(CUR_FRAME),a0,L +; move *a0(12*16),a0 ;shadow index + clr a0 ;<------temp!!!!!! + move a0,*a13(PLYR_SHADOW) +; X32 a0 +; addi shadows,a0 +; move *a0,a0,L + + movi shadow,a0 + +;make shadow low priority + + move *a13(OBJ_PRIORITY),a14,L + PUSH a14 + + movi [013c8h,0],a14 ;inside ring + move *a13(INRING),a1 + jrz #in + movi [01095h,0],a14 ;outside ring +#in + move a14,*a13(OBJ_PRIORITY),L + + callr #plot_object ;plot shadow + PULL a14 + move a14,*a13(OBJ_PRIORITY),L + + move *a8(OXPOS),a0 + + move *a13(ANIMODE),a14 + btst MODE_NOSHADOW_BIT,a14 + jrz #shadow_on + clr a0 +#shadow_on + andni 1,a0 + move @PCNT,a1 + andi 1,a1 + or a1,a0 + move *a8(OYPOS),a1 + andi 1,a1 + xor a1,a0 + move a0,*a8(OXPOS) ;shake shadow + + ;leave him off if in mode_invisible + move *a13(ANIMODE),a14 + btst MODE_INVISIBLE_BIT,a14 + jrnz #done2 + + + move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + + + clr a10 ;x offset + move *a13(OBJ_YPOSINT),a11 ;y offset + + + move *a13(CUR_FRAME),a0,L + callr #plot_object ;image + + move *a13(OBJ_PAL),a1 + move a1,*a8(OPAL) + + move *a0(-10h),a4 ;# pieces + addi (13+4-7)*16,a0 ;1st header +#loop1 + dec a4 + jrz #done1 + addi 7*16,a0 + callr #plot_object ;image + + move *a13(OBJ_PAL),a1 + move a1,*a8(OPAL) + + jruc #loop1 +#done1 + + move *a13(CUR_FRAME),a9,L + move *a9(IANI2X),a14,L ;secondary X & Y + inc a14 ;should be 0 + jrz #no_2nd_piece + + move *a9(IANIOFFX),a10 ;display x offset + move *a9(IANI2X),a14 ;secondary X + sub a14,a10 + + move *a9(IANIOFFY),a1 ;display y offset + move *a9(IANI2Y),a14 ;secondary Y + sub a14,a1 + add a1,a11 + + move *a13(CUR_FRAME2),a0,L + callr #plot_object + + move *a13(OBJ_PAL),a1 + move a1,*a8(OPAL) + + move *a0(-10h),a4 ;# pieces + addi (13+4-7)*16,a0 ;1st header +#loop2 + dec a4 + jrz #done2 + addi 7*16,a0 + callr #plot_object ;image + + move *a13(OBJ_PAL),a1 + move a1,*a8(OPAL) + + jruc #loop2 + +#no_2nd_piece + movi MODE_END,a0 ;don't bother animating + move a0,*a13(ANIMODE2) ;if no 2nd piece + +#done2 + +; move a13,a3 +; addi ATTACH_IMG1,a3 +; movk 4,a4 +;#attloop +; move *a3+,a8,L +; jrz #skip + +;set the x,y & z of image +;; LOCKUP + + move *a13(ATTIMG_IMG),a8,L + move *a13(ATTIMG_CUR_FRAME),a0,L + jrnz #onscr + + move a0,*a8(OXVAL),L + movi [-100,0],a0 ;set all images offscreen + move a0,*a8(OYVAL),L + rets + +#onscr + move *a13(ATTIMG_LAST_FRAME),a1,L + cmp a0,a1 + jreq #no_change + +;image has just changed + + move *a13(ATTIMG_IMG),a8,L + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(ICMAP),a0,L + + .ref pal_getf + calla pal_getf +;;; calla pal_find + jrnz #AOK + + LOCKUP ;can't get palette + +#AOK + move a0,*a8(OPAL) + move *a8(OIMG),a0,L + movb *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + + move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + move *a13(OBJ_CONST),*a8(OCONST) + + move *a13(ATTIMG_CUR_FRAME),*a13(ATTIMG_LAST_FRAME),L + +#no_change + + move a5,*a8(OXVAL),L + move a6,*a8(OYVAL),L + + move *a13(OBJ_PRIORITY),a0,L + move *a13(ATTIMG_ZOFF),a1 + sll 16,a1 + add a1,a0 + move a0,*a8(OZVAL),L + + move *a13(OBJ_YPOSINT),a11 ;y offset + move *a8(OIMG),a0,L + move *a0(IANIOFFY),a1 + add a11,a1 ;add in Y pos & ani-offset + move a1,*a8(ODYOFF) ;display y offset + + move *a0(IANIOFFX),*a8(ODXOFF) + +#skip +; dsj a4,#attloop + + rets + +#plot_object + + move *a3+,a8,L ;* object + + move a5,*a8(OXVAL),L + move a6,*a8(OYVAL),L + + move *a13(OBJ_PRIORITY),*a8(OZVAL),L + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFX),a1 + add a10,a1 ;add in X ani-offset (if any) + move a1,*a8(ODXOFF) ;display x offset + + move *a0(IANIOFFY),a1 + add a11,a1 ;add in Y pos & ani-offset + move a1,*a8(ODYOFF) ;display y offset + + movb *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + move *a13(OBJ_CONST),*a8(OCONST) + + rets + + +#***************************************************************************** + + + +shadows + .ref shadow + .long shadow + + +****************************************************************************** + .end + + \ No newline at end of file diff --git a/BACKUP/ANIM.EQU b/BACKUP/ANIM.EQU new file mode 100644 index 0000000..23bf2c6 --- /dev/null +++ b/BACKUP/ANIM.EQU @@ -0,0 +1,277 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 3/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + +****************************************************************************** +* +* ANIMATION COMMANDS + +ANI_ZIP equ 0 + 8000h +ANI_REPEAT equ 1 + 8000h +ANI_SETMODE equ 2 + 8000h +ANI_ZEROVELS equ 3 + 8000h +ANI_SETPLYRMODE equ 4 + 8000h +ANI_SET_YVEL equ 5 + 8000h +ANI_ATTACK_ON equ 6 + 8000h +ANI_ATTACK_OFF equ 7 + 8000h +ANI_LEAPATOPP equ 8 + 8000h +ANI_ATTACH equ 9 + 8000h +ANI_DETACH equ 10 + 8000h +ANI_WAITHITGND equ 11 + 8000h +ANI_XFLIP equ 12 + 8000h +ANI_BOUNCE equ 13 + 8000h +ANI_ATTACK_ON_Z equ 14 + 8000h +ANI_GRAVITY_ON equ 15 + 8000h +ANI_GRAVITY_OFF equ 16 + 8000h +ANI_GOTO equ 17 + 8000h +ANI_ATTACHZ equ 18 + 8000h +ANI_SLOWMO equ 19 + 8000h +ANI_WAITRELEASE equ 20 + 8000h +ANI_OFFSET equ 21 + 8000h +ANI_FRICTION equ 22 + 8000h +ANI_ENDMATCH equ 23 + 8000h +ANI_ATTACHVEL equ 24 + 8000h +ANI_THROW1 equ 25 + 8000h +ANI_SOUND equ 26 + 8000h +ANI_SETFACING equ 27 + 8000h +ANI_PAUSE equ 28 + 8000h +ANI_IFSTATUS equ 29 + 8000h +ANI_CODE equ 30 + 8000h +ANI_SHAKER equ 31 + 8000h +ANI_CHANGEANIM equ 32 + 8000h +ANI_FACEUP equ 33 + 8000h +ANI_FACEDOWN equ 34 + 8000h +ANI_BOUNCEROPE equ 35 + 8000h +ANI_SHAKEROPES equ 36 + 8000h +ANI_BENDROPE equ 37 + 8000h +ANI_SETSPEED equ 38 + 8000h +ANI_LEAPATPOS equ 39 + 8000h +ANI_ZERO_XZVELS equ 40 + 8000h +ANI_ROPE_Z equ 41 + 8000h +ANI_LOOP equ 42 + 8000h + +;MJT Start +;ANI_UNUSED equ 43 + 8000h +;MJT End + +ANI_SET_XVEL equ 44 + 8000h +ANI_IFNOTSTATUS equ 45 + 8000h +ANI_SLIDE_BACK equ 46 + 8000h +ANI_CLR_DAMAGE equ 47 + 8000h +ANI_SET_ZVEL equ 48 + 8000h +ANI_MASTER_THROW equ 49 + 8000h +ANI_FACE equ 50 + 8000h +ANI_SETWORD equ 51 + 8000h +ANI_GETUP equ 52 + 8000h +ANI_GETUP_WAIT equ 53 + 8000h +ANI_CLR_STARS equ 54 + 8000h +ANI_SHAKEALL equ 55 + 8000h +ANI_DAMAGE equ 56 + 8000h +ANI_START_DIZZY equ 57 + 8000h +ANI_CLR_STATUS equ 58 + 8000h +ANI_SET_TARGET equ 59 + 8000h +ANI_MAX_X equ 60 + 8000h +ANI_MAX_Z equ 61 + 8000h +ANI_MAX_Y_VEL equ 62 + 8000h +ANI_SUPERSLAVE equ 63 + 8000h +ANI_SLAVEANIM equ 64 + 8000h +ANI_RAWSOUND equ 65 + 8000h +ANI_DAMAGEOPP equ 66 + 8000h +ANI_RNDPER equ 67 + 8000h +ANI_WAITHITOPP equ 68 + 8000h +ANI_ATTCHIMAGE equ 69 + 8000h + +ANI_IFOPPMODE equ 70 + 8000h +ANI_IFBUTTONS equ 71 + 8000h +ANI_IFNOHITBLOCK equ 72 + 8000h +ANI_END equ 73 + 8000h +ANI_IFROPE equ 74 + 8000h +ANI_IFNOTROPE equ 75 + 8000h +ANI_OPP_GETUP equ 76 + 8000h +ANI_SHAKECORNER equ 77 + 8000h +ANI_SINGLESTEP equ 78 + 8000h +ANI_SUPERSLAVE2 equ 79 + 8000h +ANI_SETOPPMODE equ 80 + 8000h +ANI_CLROPPMODE equ 81 + 8000h +ANI_OPPOFFSET equ 82 + 8000h +ANI_IFBLOCKED equ 83 + 8000h +ANI_WAITROLL equ 84 + 8000h +ANI_SETOPPFACING equ 85 + 8000h +ANI_IFOPP equ 86 + 8000h +ANI_SNOT equ 87 + 8000h + +ANI_IF_BUTCOUNT_GE equ 88 + 8000h +ANI_IF_BUTCOUNT_LT equ 89 + 8000h +ANI_IF_RPTCOUNT equ 90 + 8000h +ANI_IFNOT_RPTCOUNT equ 91 + 8000h + +ANI_RINGCHECK equ 92 + 8000h +ANI_DEBRISAT equ 93 + 8000h +ANI_DEBRIS equ 94 + 8000h +ANI_SET_WRESTLER_XFLIP equ 95 + 8000h +ANI_SLIDEATOPP equ 96 + 8000h +ANI_CLR_BUTCOUNT equ 97 + 8000h +ANI_SET_RPTCOUNT equ 98 + 8000h +ANI_DEC_RPTCOUNT equ 99 + 8000h + +ANI_SHADOWTRAIL equ 100 + 8000h +ANI_CREATEPROC equ 101 + 8000h +ANI_TARGET equ 102 + 8000h +ANI_HMBWAIT equ 103 + 8000h +ANI_SAFE_TIME equ 104 + 8000h +; +ANI_SETOPP_PLYRMODE equ 105 + 8000h +ANI_XFLIP_OPP equ 106 + 8000h +ANI_SETLONG equ 107 + 8000h +ANI_IMMOBILIZE equ 108 + 8000h +ANI_XFLIP_TBL equ 109 + 8000h +; +ANI_SETOPPVELS equ 110 + 8000h +ANI_WAITHITGND2 equ 111 + 8000h +ANI_SET_OPP_XVEL equ 112 + 8000h +ANI_SET_ATTACH EQU 113 + 8000H +ANI_INC_COMBO EQU 114 + 8000H +ANI_CLEAR_COMBO equ 115 + 8000h +ANI_ADD_MOVE EQU 116 + 8000H +ANI_STARTATTACK equ 117 + 8000h +ANI_CHANGEANIM_TBL equ 118 + 8000h +ANI_IF_RPTCOUNT_GE equ 119 + 8000h +ANI_IF_RPTCOUNT_LT equ 120 + 8000h + +****************************************************************************** +* +* HUGE MACROS! + +LEAPATOPP .macro w1,w2,w3,w4,l1,w5,w6,w7,w8 + .word ANI_LEAPATOPP + .word :w1:,:w2:,:w3:,:w4: + .long :l1: + .word :w5:,:w6:,:w7:,:w8: + .endm + +****************************************************************************** +* +* MISC EQUATES + +AM_ABS equ 0 +AM_FACE_REL equ 1 +AM_HIT_REL equ 2 +AM_NEWFACE_REL equ 3 + +RC_FRONT equ 0 +RC_BACK equ 1 +RC_EITHER equ 2 + +RC_PLAYER equ 0 +RC_OPPONENT equ 0100h + +ATM_CLOSEST equ 0 +ATM_FARTHEST equ 1 + +****************************************************************************** +* +* ANIMATION MODE BITS + +MODE_NORMAL equ 0 + +MODE_END equ 01h ;animation has ended +MODE_END_BIT equ 0 + +MODE_PAUSE equ 02h ;animation paused +MODE_PAUSE_BIT equ 1 + +MODE_UNINT equ 04h ;uninterruptable +MODE_UNINT_BIT equ 2 + +MODE_NOAUTOFLIP equ 08h ;don't set xflip automatically +MODE_NOAUTOFLIP_BIT equ 3 ;(based on facing dir) + +MODE_CHECKHIT equ 10h ;do offensive collision check +MODE_CHECKHIT_BIT equ 4 + +MODE_NOGRAVITY equ 20h ;gravity status 0=on 1=off +MODE_NOGRAVITY_BIT equ 5 + +MODE_FRICTION equ 40h ;friction on floor +MODE_FRICTION_BIT equ 6 + +MODE_NOCONFINE equ 80h ;don't confine player to ring +MODE_NOCONFINE_BIT equ 7 + +MODE_NOCOLLIS equ 100h ;throw out player-player collisions +MODE_NOCOLLIS_BIT equ 8 + +MODE_STATUS equ 200h ;general purpose status flag +MODE_STATUS_BIT equ 9 + +MODE_OVERLAP equ 400h ;allow player-player overlap +MODE_OVERLAP_BIT equ 10 + +MODE_GHOST equ 800h ;may fall through floor if attached +MODE_GHOST_BIT equ 11 + +MODE_NOSHADOW equ 1000h ;turn off shadow +MODE_NOSHADOW_BIT equ 12 + +MODE_KEEPATTACHED equ 2000h ;automatically keep opponent attached +MODE_KEEPATTACHED_BIT equ 13 + +MODE_WAITHITOPP equ 4000h ;zero ANICNT upon hitting opponent +MODE_WAITHITOPP_BIT equ 14 + +MODE_INVISIBLE equ 8000h ;don't display wrestler +MODE_INVISIBLE_BIT equ 15 + +****************************************************************************** +* +* SLAVE IMAGE MODES + +S2_GRAPPLE equ 0 +S4_GRAPPLE equ 1 +S3_GRAP_TO_HH equ 2 +S3_PILE_DRIVEN equ 3 +S3_HIP_TOSSED equ 4 +S_CHOKE_SLAMMED equ 5 + +****************************************************************************** +* +* LONG IMAGE OFFSETS FOR ANIMATION SEQUENCES + +FR1 equ 1*20h +FR2 equ 2*20h +FR3 equ 3*20h +FR4 equ 4*20h +FR5 equ 5*20h +FR6 equ 6*20h +FR7 equ 7*20h +FR8 equ 8*20h +FR9 equ 9*20h +FR10 equ 10*20h +FR11 equ 11*20h +FR12 equ 12*20h +FR13 equ 13*20h +FR14 equ 14*20h +FR15 equ 15*20h +FR16 equ 16*20h +FR17 equ 17*20h +FR18 equ 18*20h +FR19 equ 19*20h +FR20 equ 20*20h +FR21 equ 21*20h +FR22 equ 22*20h +FR23 equ 23*20h +FR24 equ 24*20h +FR25 equ 25*20h +FR26 equ 26*20h +FR27 equ 27*20h +FR28 equ 28*20h +FR29 equ 29*20h +FR30 equ 30*20h + +****************************************************************************** + \ No newline at end of file diff --git a/BACKUP/ATTRACT.ASM b/BACKUP/ATTRACT.ASM new file mode 100644 index 0000000..f74a8a2 --- /dev/null +++ b/BACKUP/ATTRACT.ASM @@ -0,0 +1,1750 @@ +**************************************************************** +* +* Software: ? +* Initiated: ? +* +* Modified: Shawn Liptak 8/6/91 - Hiscore display and entry (Total carnage) +* Shawn Liptak 11/9/91 - Title screen +* Shawn Liptak 2/7/92 - Stripped for basketball +* Jason Skiles 12/9/93 - Stripped for WWF +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/9/93 12:35 +**************************************************************** + .file "attract.asm" + .title "attract mode" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "macros.h" + .include "game.equ" + .include "audit.equ" + .include "link.equ" + .include "sound.h" + + .include "imgtbl.glo" + .include "fontsimg.glo" + .include "miscimg.glo" + .include "bgndtbl.glo" + .include "ropeimg.glo" + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref GET_ADJ,nosounds,CLOSE_PROGRESS_SCREEN + .ref SPECIAL_WIPEOUT,BLOW_0_TO_1,RESET_FROM_PIXEL_WIPE + .ref SET_UP_PIXEL_WIPE,wrestler_mugs2 + .ref BAKMODS,HALT,GAMSTATE,pal_getf + .ref dpageflip,CRD_SCRN2,RC_BYTEI,IRQSKYE + .ref BGND_UD1,ADJ_PAGE,WIPEOUT,setup_message + .ref STRCNRMO_1,RNDRNG0,SOUNDSUP,fade_up + .ref fade_down + + ;from DCSSOUND.ASM + .ref triple_sound + + ;from DISPLAY.ASM + .ref BEGINOBJW_TBL + + ;from HSTD.ASM + .ref print_hscores,print_winstreaks + .ref table_cmos_check + .REF draw_beaten_table_entry + .ref print_beaten + .REF STOP_ALL_OBJS + .REF MOVE_ALL_OBJS_UP + .REF DELETE_ANY_OFF_TOP + .REF BEATEN_TAB_ENTRIES + .REF starting_num + .ref draw_each_beaten_table_entry + + ;from MAIN.ASM + .ref RemapIO + + ;from PAL.ASM + .ref pal_clean + + ;from ROBO.ASM + + ;from SELECT.ASM + .ref wrestler_attributes,attbars + .ref RD7FONT + + ;from STRING.ASM + .ref osgmd8_ascii,mess_cursx,mess_cursy,mess_line_spacing + .ref print_string2,copy_string,dec_to_asc + .ref print_string_C2,print_string_R2,concat_rom_string + .ref print_string_R,concat_string + + ;from UNZIP.ASM + .ref movie_run + + ;from UTIL.ASM + .ref get_all_buttons_cur2 + + ;from WRESTLE.ASM + .ref total_matches + + .REF WHICH_SCREEN + .REF page_addr + .REF RNDRNGS + .REF DUMRETS + + .DEF GENERIC_DISPLAY + +****************************************************************************** + +;symbols defined in this file + + .def MAKE_UP_LOGO + +****************************************************************************** +;symbols defined externally + +;ram + + BSSX hisclong ,16 ;!0=Show hiscore table longer + + BSSX SHOW_CRD_FLAG,16 ;Show credits in amode gameplay + + .bss cycram ,8*2*16 ;Palette cycle mem + .bss cycram2 ,7*2*16 ;^ + +; .bss team_cnts ,32 ;left team cnt, +16=rgt team cnt +; .bss stick ,32 ;stick ram for team selection + +; .bss loop, 16 ; + + .bss TEMP,16 + + .BSS AMODE_LOOPS,16 + .BSS DCS_PAL,16 + .BSS DCS_BIT_TABLE,(32*7)*(31*44) + + .text + + +******************************** +* Attract mode (Process) + + + SUBR attract_mode + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + movi INAMODE,a14 ;set GAMSTATE + move a14,@GAMSTATE + + clr a0 ;clear matches since attmode cntr + move a0,@total_matches,W + MOVE A0,@AMODE_LOOPS + + movk 1,a0 + move a0,@dpageflip ;page flipping on + + calla display_unblank + +#loop + + JSRP show_title +; JSRP creditscreen + JSRP DCS_LOGO +;MJT Start +; JSRP show_big_wwf_logo_screen_thingie +;MJT End + JSRP show_copyright + JSRP show_hstd + JSRP show_bios + JSRP show_gameplay + JSRP show_operatormsg + + calla RemapIO ;Remap the I/O + MOVE @AMODE_LOOPS,A0 + INC A0 + MOVE A0,@AMODE_LOOPS + + jruc #loop + + +#**************************************************************** +* show_gameplay + + SUBRP show_gameplay + + movk 1,a0 + move a0,@current_round + move a0,@match_cnt + + + .ref p1rounds + .ref p2rounds + move a0,@p1rounds + move a0,@p2rounds + + + + .ref current_round + .ref match_cnt + .ref start_match2 + .ref index1 + .ref index2 + + movk 7,a0 + calla RNDRNG0 + cmpi 7,a0 + jrnz #bug + inc a0 +#bug + move a0,@index1 + movk 7,a0 + calla RNDRNG0 + cmpi 7,a0 + jrnz #bug2 + inc a0 +#bug2 + move a0,@index2 + + CALLR TURN_SOUNDS_OFF_IF_NEED + + JSRP CLOSE_PROGRESS_SCREEN + calla SPECIAL_WIPEOUT + +;Eventually, we should show just quick clips of cool gameplay. + movk 1,a0 + move a0,@SHOW_CRD_FLAG + + CALLR TURN_SOUNDS_OFF_IF_NEED + + CREATE0 start_match2 + +;MJT Start + SLEEP 3*60 + + movi 15*TSEC,a10 +;MJT End + JSRP wait_on_butn + + clr a0 + move a0,@SHOW_CRD_FLAG + CALLA nosounds + + RETP + +TURN_SOUNDS_OFF_IF_NEED + ADJUST ADJMUSIC + JRNZ TURN_OFF_SOUNDS + + MOVE @AMODE_LOOPS,A0 + CMPI 2,A0 + JRLT SOUNDS_SHOULD_BE_ON +TURN_OFF_SOUNDS + MOVK 2,A0 + MOVE A0,@SOUNDSUP +SOUNDS_SHOULD_BE_ON + RETS + +#**************************************************************** +* Show an operator message if one has been entered + + STRUCTPD + WORD som_string + + + SUBR show_operatormsg + + calla ADJ_PAGE + movk CMESS_LINES,a2 ;>Check for a message + movi CUSTOM_MESSAGE,a7 +#cmlp + calla RC_BYTEI + jrnz #msg + addi CMESS_LINE_SIZE,a7 + dsj a2,#cmlp + jruc #x +#msg + JSRP GENERIC_DISPLAY + movk CMESS_LINES,a2 ;>Check for a message + movi CUSTOM_MESSAGE,a7 + movi [50,200],a9 +#prtlp + PUSHP a2,a7 + + calla ADJ_PAGE + + move a13,a2 + addi som_string,a2 +#getlp calla RC_BYTEI + movb a0,*a2 + addk 8,a2 + move a0,a0 + jrnz #getlp + + + movi GOLD,a0 + calla pal_getf + move a0,a6 + + move a13,a8 + addi som_string,a8 + clr a0 + movk 1,a10 + movi osgfont_t,a11 + PUSHP a9 + JSRP STRCNRMO_1 + PULLP a9 + + movi OBJLST,a14 + +#olp move *a14,a14,L ;A14=*Next + jrz #oend + move *a14(ODATA_p),a0,L + jrnz #olp + movi [>320,>320],a1 + move a1,*a14(ODATA_p),L + jruc #olp +#oend + +; PUSHP a6 +; SLEEPK 30 +; PULLP a6 + PULLP a2,a7 +#nxt + addi [45,0],a9 + + addi CMESS_LINE_SIZE,a7 + dsj a2,#prtlp + + SLEEP 2*60 + + movi 6*TSEC,a10 + JSRP wait_on_butn + + JSRP scrn_scaleout + + calla WIPEOUT + +#x RETP + +#***************************************************************************** + + + .def osgfont_t +osgfont_t + .long OSGEMD_EXP,OSGEMD_APO,OSGEMD_NUM,OSGEMD_DOL ;!"#$ + .long OSGEMD_SPC,OSGEMD_AND,OSGEMD_APO,OSGEMD_OBR ;%&'( + .long OSGEMD_CBR,OSGEMD_SPC,OSGEMD_SPC,OSGEMD_SPC ;)*+, + .long OSGEMD_DAS,OSGEMD_DOT,OSGEMD_SLS ;-./ + .long OSGEMD_0,OSGEMD_1,OSGEMD_2,OSGEMD_3,OSGEMD_4 + .long OSGEMD_5,OSGEMD_6,OSGEMD_7,OSGEMD_8,OSGEMD_9 + .long OSGEMD_COL,OSGEMD_SPC,OSGEMD_SPC,OSGEMD_SPC ;:;<= + .long OSGEMD_SPC,OSGEMD_QUE,OSGEMD_SPC ;>?@ + .long OSGEMD_A,OSGEMD_B,OSGEMD_C,OSGEMD_D + .long OSGEMD_E,OSGEMD_F,OSGEMD_G,OSGEMD_H + .long OSGEMD_I,OSGEMD_J,OSGEMD_K,OSGEMD_L + .long OSGEMD_M,OSGEMD_N,OSGEMD_O,OSGEMD_P + .long OSGEMD_Q,OSGEMD_R,OSGEMD_S,OSGEMD_T + .long OSGEMD_U,OSGEMD_V,OSGEMD_W,OSGEMD_X + .long OSGEMD_Y,OSGEMD_Z + .long OSGEMD_SPC,OSGEMD_SPC,OSGEMD_SPC,OSGEMD_END ;[\]^ + .long OSGEMD_BAK,OSGEMD_SPC,OSGEMD_SPC ;_` + + +#***************************************************************************** +* Show credits screen +* + + SUBRP creditscreen + + calla pal_clean + + movk 1,a10 + JSRP CRD_SCRN2 + movi AMODE_PID,a0 + move a0,*a13(PROCID) + + ;fade down +; clr a10 +; movk 16,a11 +; CREATE0 fade_down +; +; SLEEP TSEC + + RETP + + +#***************************************************************************** + + SUBRP show_copyright + + calla display_blank + calla WIPEOUT + + clr a0 + move a0,@dtype ;2D + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + move a0,@IRQSKYE + + SLEEPK 2 + +;Establish a pal! +;This pal has pure white as the first color! That is what the STRING +;routine uses. + + movi ATTMTR_P,a0 + calla pal_getf + + clr a0 + clr a6 + movi #ln1,a8 + movi [50+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_1 + + clr a0 + movi #ln2,a8 + movi [62+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_1 + + clr a0 + movi #ln3,a8 + movi [74+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_1 + + clr a0 + movi #ln4,a8 + movi [86+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_1 + + clr a0 + movi #ln5,a8 + movi [98+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_1 + + clr a0 + movi #ln6,a8 + movi [110+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_1 + + clr a0 + movi #ln7,a8 + movi [122+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_1 + + clr a0 + movi #ln8,a8 + movi [134+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_1 + + clr a0 + movi #ln9,a8 + movi [146+60,200],a9 + movk 1,a10 + movi RD7FONT,a11 + JSRP STRCNRMO_1 + +;MJT Start +;Place the correct WWF logo here (The one from Title page) +; movi [200,0],a0 +; movi [4bh-5,0],a1 +; movi WWFLGO1,a2 ;* image +; movi 20000,a3 +; movi DMAWNZ|M_NOCOLL,a4 +; movi CLSDEAD,a5 +; clr a6 +; clr a7 +; calla BEGINOBJ +;MJT End + + clr a10 + movk 8,a11 + CREATE0 fade_up + + movk 1,a0 + move a0,@DISPLAYON + + SLEEPK 2 + calla display_unblank + + SLEEP 30 + + movi 6*TSEC,a10 + JSRP wait_on_butn + + RETP + +#ln1 .string "VIDEO GAME SOFTWARE DESIGNED AND DEVELOPED",0 +#ln2 .string "BY MIDWAY MANUFACTURING COMPANY",0 +#ln3 .string "(C) 1995 ASSIGNED TO ACCLAIM ENTERTAINMENT, INC.",0 +#ln4 .string "[ (C) 1995 TITAN SPORTS, INC. ]",0 +#ln5 .string "ALL DISTINCTIVE NAMES AND CHARACTER LIKENESSES",0 +#ln6 .string "USED HEREIN ARE TRADEMARKS OF TITAN SPORTS, INC.",0 +#ln7 .string "SUBLICENSED BY MIDWAY MANUFACTURING COMPANY",0 +#ln8 .string "FROM ACCLAIM ENTERTAINMENT INC.",0 +#ln9 .string "ALL RIGHTS RESERVED.",0 + .EVEN + +#***************************************************************************** +* +* Show high score tables +* + + SUBRP show_hstd + calla table_cmos_check ;make sure hscore CMOS is okay + + movi hstd_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + movi 1,a5 + + JSRP print_beaten + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + MOVE @starting_num,a9 + DEC A9 + move a9,@starting_num + CMPI BEATEN_TAB_ENTRIES-6,A9 + JRLT SCROLL_TABLE_LOOP + MOVI BEATEN_TAB_ENTRIES-1,A9 + move a9,@starting_num + +SCROLL_TABLE_LOOP + MOVK 22,A10 +WAIT_ON_THOSE_BUTS + SLEEP 1 + calla get_all_buttons_cur2 + JRNZ JUST_WAIT + DSJS A10,WAIT_ON_THOSE_BUTS + CALLA DELETE_ANY_OFF_TOP + sleep 1 + MOVE @starting_num,a9 + cmpi BEATEN_TAB_ENTRIES-1,a9 + JRGE JUST_WAIT + inc a9 + move a9,@starting_num + CALLA draw_each_beaten_table_entry + CALLA MOVE_ALL_OBJS_UP + jruc SCROLL_TABLE_LOOP + +JUST_WAIT + CALLA STOP_ALL_OBJS + movi 5*TSEC,a10 + JSRP wait_on_butn + + + calla table_cmos_check ;make sure hscore CMOS is okay + + movi hstd_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + JSRP print_hscores + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + movi 5*TSEC,a10 + JSRP wait_on_butn + + MOVI hstd_mod,A0 + CALLA SET_UP_PIXEL_WIPE + + JSRP print_winstreaks + + SLEEPK 1 + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP TSEC/2 + movi 5*TSEC,a10 + JSRP wait_on_butn + + RETP + +hstd_mod + .long slateBMOD + .word 0,0 + .long 0 + +#***************************************************************************** +* +* Show lava title page +* + + SUBRP show_title + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + movi #title_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + SLEEPK 2 + + calla display_unblank + + CREATE CYCPID,#cycle_lava + + SLEEP TSEC/2 + movi 8*TSEC,a10 + JSRP wait_on_butn + + movi CYCPID,a0 + calla KIL1C + +;fade down + clr a10 + movk 16,a11 + CREATE0 fade_down + + SLEEP TSEC + + calla display_blank + + RETP + +#title_mod + .long LAVAPGBMOD + .word 0,0 + .long 0 + +#cycle_lava + movi #cyc_t,a9 +#lp0 + move *a9+,a0,L + + calla pal_getf + move a0,a8 ;Pal thats needs changing + + move *a9,a0,L + jrz #cycle_lava + + calla pal_getf + move a0,a11 ;Pal to change into + + movi BAKLST,a14 +#lp + move *a14,a14,L + jrz #x + move *a14(OPAL),a2 + cmp a8,a2 + jrne #lp +;Found matching pal + move a11,*a14(OPAL) + jruc #lp + +#x SLEEP 5 + jruc #lp0 + +#cyc_t .long LAVA1_P + .long LAVA2_P + .long LAVA3_P + .long LAVA4_P + .long LAVA5_P + .long LAVA6_P + .long LAVA7_P + .long LAVA8_P + .long LAVA10_P + .long LAVA10_P + .long LAVA10_P +; .long LAVA9_P + .long LAVA10_P + .long LAVA8_P + .long LAVA7_P + .long LAVA6_P + .long LAVA5_P + .long LAVA4_P + .long LAVA3_P + .long LAVA2_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long LAVA1_P + .long 0 + +;MJT Start +;Replace with correct artwork +;Keep this code around +; +;#***************************************************************************** +;* +;* Show WWF logo +; +; SUBRP show_big_wwf_logo_screen_thingie +; +; calla display_blank +; calla WIPEOUT ;CLEAN SYSTEM OUT +; +; clr a0 +; move a0,@HALT +; move a0,@dtype ;2d mode +; move a0,@IRQSKYE +; +; movk 1,a0 ;page flipping on +; move a0,@dpageflip +; +; SLEEPK 2 +; +; movi SCRNEND,a0 ;[256,405] +; move a0,@SCRNLR,L +; +; clr a0 +; move a0,@WORLDTLX,L +; move a0,@WORLDTLY,L +; +; movi #blank_mod,a0 +; move a0,@BAKMODS,L +; calla BGND_UD1 ;create objects for background +; +; SLEEPK 2 +; +; calla display_unblank +; +; SLEEPK 10 +; +; movi #logo_mod,a0 +; CALLA SET_UP_PIXEL_WIPE +; +; SLEEPK 1 +; +; JSRP BLOW_0_TO_1 +; +; +; SLEEP TSEC/2 +; movi 8*TSEC,a10 +; JSRP wait_on_butn +; +;;fade down +; clr a10 +; movk 16,a11 +; CREATE0 fade_down +; +; SLEEP TSEC +; +; calla display_blank +; +; RETP +; +;#logo_mod +; .long comesoonBMOD +; .word 0,0 +; .long 0 +;#blank_mod +; .long wwfblankBMOD +; .word 0,0 +; .long 0 +;MJT End + +#***************************************************************************** +* +* Show wrestler bios +* + .bss next_bio,16 + + SUBRP show_bios + + movi #bio_mod,a0 + CALLA SET_UP_PIXEL_WIPE + + movb @next_bio,a10 + andi 00001111b,a10 + inc a10 + cmpi 8,a10 + jrlt #in_range + clr a10 +#in_range + + ;draw the logo + PUSH a10 + movb a10,@next_bio + + + MOVI 0AAh,a3 + MOVI 01Ah,a4 + MOVI #bio_logos,a5 + clr a7 + + CALLR MAKE_UP_LOGO + + ;draw the mugshot + PULL a10 + PUSH a10 + X32 a10 + addi wrestler_mugs2,a10 + move *a10,a9,L + movi [025h,0],a0 + movi [0ACh,0],a1 + + move *a9+,a2,L + clr a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + +#mugcreatloop + PUSH a0,a1,a3,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + move *a9+,a2,L + jrnz #mugcreatloop + + ;attributes + movi [025h,0],a0 + movi [0BCh,0],a1 + movi ATTPL_G,a2 + movi 10,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + PUSH a0,a1,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a4,a5,a6,a7 + subi 2,a1 + movi ATT_TXT,a2 + movi 11,a3 + PUSH a0,a1 + calla BEGINOBJ + PULL a0,a1 + + ;attribute bars + PULL a10 + PUSH a10 + addi [61,0],a0 + addi [12,0],a1 + movi ATTMTR_0,a2 + movi 11,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + + movi 4,a9 ;bar count + X64 a10 + addi wrestler_attributes,a10 + +#abc_loop + PUSH a0,a1,a3,a4,a5,a6,a7 + move *a10+,a2,W + X32 a2 + addi attbars,a2 + move *a2,a2,L + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + addi [8,0],a1 + dsj a9,#abc_loop + + ;print the bio text + ;a11 becomes the halfwidth for current wrestler + + PULL a10 + PUSH a10 + X32 a10 + addi #bio_data,a10 + move *a10,a10,L + move *a10+,a11,W + + movi 20,a14 + move a14,@mess_line_spacing + + movi #bio_setup1,a2 + calla setup_message + movi #bio_center,a14 + sub a11,a14 + move a14,@mess_cursx + movi #bio_message1,a4 + calla print_string2 + + movi #bio_setup2,a2 + calla setup_message + movi #bio_center,a14 + sub a11,a14 + move a14,@mess_cursx + movi #bio_message2,a4 + calla print_string2 + + ;from text + movi #bio_y,a14 + move a14,@mess_cursy + movi #bio_center,a14 + add a11,a14 + move a14,@mess_cursx + + move *a10+,a4,L + calla print_string_R2 + + ;weight + movi #bio_y+20,a14 + move a14,@mess_cursy + movi #bio_center,a14 + add a11,a14 + move a14,@mess_cursx + + move *a10+,a0,W + movi 999,a1 + calla dec_to_asc + calla copy_string + movi #pounds,a4 + calla concat_rom_string + calla print_string_R + + ;height + movi #bio_y+40,a14 + move a14,@mess_cursy + movi #bio_center,a14 + add a11,a14 + move a14,@mess_cursx + + move *a10+,a0,W + movi 999,a1 + calla dec_to_asc + calla copy_string + movi #feet,a4 + calla concat_rom_string + move *a10+,a0,W + movi 999,a1 + calla dec_to_asc + calla concat_string + movi #inches,a4 + calla concat_rom_string + calla print_string_R + + + ;finish move + movi #bio_y+71,a14 + move a14,@mess_cursy + movi #bio_center,a14 + add a11,a14 + move a14,@mess_cursx + + move *a10+,a4,L + calla print_string_R2 + + + ;quote + movi #bio_y+92,a14 + move a14,@mess_cursy + movi #bio_center,a14 + move a14,@mess_cursx + movi 13,a14 + move a14,@mess_line_spacing + move *a10+,a4,L + calla print_string_C2 + + ;music + PULL a10 + + MOVE @AMODE_LOOPS,A0 + CMPI 2,A0 + JRGE NO_MUSIC + + ADJUST ADJMUSIC + JRNZ NO_MUSIC + + X16 a10 + addi #wrestler_tunes,a10 + move *a10,a3,L + .if MUSIC_ON + calla SNDSND + .endif +NO_MUSIC + + JSRP BLOW_0_TO_1 + + CALLA RESET_FROM_PIXEL_WIPE + + SLEEP 2*TSEC + + movi 6*TSEC,a10 + JSRP wait_on_butn + + RETP + + +MAKE_UP_LOGO + X64 a10 + add A5,a10 + move *a10+,a9,L + move *a10+,a0,W + move *a10,a1,W + add A3,a0 + add A4,a1 + sll 16,a0 + sll 16,a1 + + move *a9+,a2,L + clr a3 + movi DMAWNZ|M_SCRNREL,a4 + movi CLSNEUT,a5 + clr a6 + +#creatloop + MOVE A8,A10 + PUSH a0,a1,a3,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a3,a4,a5,a6,a7 + move *a9+,a2,L + jrnz #creatloop + RETS + + +#bio_center .equ 270 +#bio_halfwidth .equ 87 + +#bio_y .equ 118 + +#bio_setup1 + JAM_STR osgmd8_ascii,5,0,0,#bio_y,SGMD8YEL,print_string2 +#bio_message1 + .byte "FROM:",1,"WEIGHT:",1,"HEIGHT:",1,"FINISHING",0 + .even + +#bio_setup2 + JAM_STR osgmd8_ascii,5,0,0,#bio_y+71,SGMD8YEL,print_string2 +#bio_message2 + .byte "MOVE:",0 + .even + +#pounds + .byte " pounds",0 + .even + +#feet + .byte " feet ",0 + .even + +#inches + .byte " inches",0 + .even + +#bio_data + .long #bhart_data,#razor_data,#taker_data,#yoko_data,#shawn_data + .long #bambam_data,#doink_data,#luger_data + +#bhart_data + .word 79 ;halfwidth + .long #bhart_fromstr ;from + .word 234,6,1 ;pounds, feet, inches + .long #bhart_finish ;finishing move text + .long #bhart_quote ;quote text + +#razor_data + .word 77 ;halfwidth + .long #razor_fromstr ;from + .word 270,6,4 ;pounds, feet, inches + .long #razor_finish ;finishing move text + .long #razor_quote ;quote text + +#taker_data + .word 78 ;halfwidth + .long #taker_fromstr ;from + .word 322,6,11 ;pounds, feet, inches + .long #taker_finish ;finishing move text + .long #taker_quote ;quote text + +#yoko_data + .word 78 ;halfwidth + .long #yoko_fromstr ;from + .word 505,6,3 ;pounds, feet, inches + .long #yoko_finish ;finishing move text + .long #yoko_quote ;quote text + +#shawn_data + .word 78 ;halfwidth + .long #shawn_fromstr ;from + .word 210,6,0 ;pounds, feet, inches + .long #shawn_finish ;finishing move text + .long #shawn_quote ;quote text + +#bambam_data + .word 78 ;halfwidth + .long #bambam_fromstr ;from + .word 400,6,6 ;pounds, feet, inches + .long #bambam_finish ;finishing move text + .long #bambam_quote ;quote text + +#doink_data + .word 78 ;halfwidth + .long #doink_fromstr ;from + .word 220,5,11 ;pounds, feet, inches + .long #doink_finish ;finishing move text + .long #doink_quote ;quote text + +#luger_data + .word 81 ;halfwidth + .long #luger_fromstr ;from + .word 270,6,4 ;pounds, feet, inches + .long #luger_finish ;finishing move text + .long #luger_quote ;quote text + +#bhart_fromstr + .byte "calgary, alberta",0 + .even +#razor_fromstr + .byte "miami, florida",0 + .even +#taker_fromstr + .byte "death valley",0 + .even +#yoko_fromstr + .byte "polynesia",0 + .even +#shawn_fromstr + .byte "san antonio, tx",0 + .even +#bambam_fromstr + .byte "asbury park, nj",0 + .even +#doink_fromstr + .byte "ringling bros.",0 + .even +#luger_fromstr + .byte "world gym",0 + .even + + +#bhart_finish + .byte "sharpshooter",0 + .even +#razor_finish + .byte "razor's edge",0 + .even +#taker_finish + .byte "the tombstone",0 + .even +#yoko_finish + .byte "banzai splash",0 + .even +#shawn_finish + .byte "back suplex",0 + .even +#bambam_finish + .byte "flying headbutt",0 + .even +#doink_finish + .byte "poke in the eye",0 + .even +#luger_finish + .byte "charging forearm",0 + .even + + +#bhart_quote + .byte "{i am the excellence",1,"of execution.}",0 + .even +#razor_quote + .byte "{take a look at",1,"the bad guy.}",0 + .even +#taker_quote + .byte "{rest in peace}",0 + .even +#yoko_quote + .byte "{food!!!}",0 + .even +#shawn_quote + .byte "{shawn michaels is the",1,"sexiest man alive.}",0 + .even +#bambam_quote + .byte "{burn! burn! burn!}",0 + .even +#doink_quote + .byte "{i like little boys...heh heh!}",0 +#luger_quote + .byte "{no! i am not a wrestler!}",0 + .even + +#bio_mod +; .long bioscrnBMOD ;wrestler bios + .long slateBMOD ;wrestler bios + .word 0,0 + .long 0 + +#bio_logos + LWW #bhart_logo,15,9 + LWW #razor_logo,16,9 + LWW #under_logo,17,9 + LWW #yoko_logo,20,7 + LWW #michael_logo,18,8 + LWW #bambam_logo,18,7 + LWW #doink_logo,24,8 + LWW #luger_logo,10,7 + +#bhart_logo + .long HRT3,0 +#razor_logo + .long RZR3,0 +#under_logo + .long UND3,0 +#yoko_logo + .long YOK3,0 +#michael_logo + .long SHN3,0 +#bambam_logo + .long BAM3,0 +#doink_logo + .long DNK3,0 +#luger_logo + .long LEX3,0 + +#wrestler_tunes + .word 5,2,1,7,6,4,8,3 + +****************************************************************************** +* +* A10 = # of ticks before timing out + + SUBR wait_on_butn + +#lp SLEEPK 1 + + calla get_all_buttons_cur2 + jrz #nobutn + + move @SOUNDSUP,a0 + move a0,@TEMP + + clr a0 + move a0,@SOUNDSUP ;turn all sounds on + + movi >b6,a0 + calla triple_sound + + move @TEMP,a0 + move a0,@SOUNDSUP ;turn all sounds off + jruc #exit + +#nobutn + dsj a10,#lp + +#exit + RETP + +;MJT Start +; +;#***************************************************************************** +;* play vid clips (test) +; +; SUBRP show_movie +; +;;bank select 0 bit is bit 8 of SYSCTRL register. +; +; calla display_blank +; calla WIPEOUT ;CLEAN SYSTEM OUT +; calla pal_clean +; +; clr a0 +; move a0,@HALT +; move a0,@dtype ;2d mode +; move a0,@IRQSKYE +; +; movk 1,a0 ;page flipping on +; move a0,@dpageflip +; +; SLEEPK 2 +; +; movi SCRNEND,a0 ;[256,405] +; move a0,@SCRNLR,L +; +; clr a0 +; move a0,@WORLDTLX,L +; move a0,@WORLDTLY,L +; +; movi #movie_mod,a0 +; move a0,@BAKMODS,L +; calla BGND_UD1 ;create objects for background +; +; calla display_unblank +; +;;;;-> movi shnvid_f,a8 +; clr a9 +; movi (100+20*512)*8,a10 +; JSRP movie_run +; +; clr a0 +; move a0,@dpageflip ;kill the page-flipping! +; +; movi 6*TSEC,a10 +; JAUC wait_on_butn +; +;#movie_mod +; .long slateBMOD ;wrestler bios +; .word 0,0 +; .long 0 +; +; +;#***************************************************************************** +;* print that big picture of 'vince' +;* leave up whatever was on screen until we're ready to make the switch +; +; SUBRP show_vince +; +; ;disable auto page flipping +; clr a14 +; move a14,@dpageflip +; +; ;dump the pic to the draw (inactive) page +;;;;-> movi vinsml_f,a8 +; clr a9 +; movi (#vince_x+512*(#vince_y))*8,a10 +; JSRP movie_run +; +; ;swap 'em... +; callr page_flip +; +; ;...and wait +; movi 6*TSEC,a10 +; JSRP wait_on_butn +; +; ;fade down +; clr a10 +; movk 16,a11 +; CREATE0 fade_down +; +; SLEEP TSEC +; +; RETP +; +; +;#vince_x equ (400->186)/2 +;#vince_y equ (256->F5)/2 +; + +#***************************************************************************** +* flips the active page +; +; SUBRP page_flip +; +; movi ->1004,a0 +; move @dpage,a14 +; jrz #tp1 +; movi -4,a0 +;#tp1 +; move a0,@DPYSTRT +; move a0,@DPYADR +; +; move @dpage,a0 +; not a0 +; move a0,@dpage +; +; rets +;MJT End + +#***************************************************************************** + +;NOW LETS SEE... +;WORD TWO PIXELS +;WORD TWO PIXELS +;WORD TWO PIXELS +;WORD TWO PIXELS +;LONG XVEL +;LONG YVEL +;LONG XPOS +;LONG YPOS + +DCS_LOGO + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + movk 1,a0 + move a0,@dpageflip ;page flipping on + + calla display_unblank + + MOVI [200,0],A0 + MOVI [120,0],A1 + MOVI dcslogo,a2 + CLR A3 + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + addi CLSNEUT,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + CALLA BEGINOBJW + MOVE *A8(OPAL),A0 + MOVE A0,@DCS_PAL + SLEEP 10 + + MOVI DMACTRL,B1 +WAIT_110 + MOVE *B1,B2,L + JRN WAIT_110 + PUSHST + DINT + PUSH A8 + + MOVI (186*5),A6 + MOVI [6,0],A5 + MOVI DCS_BIT_TABLE,A2 + MOVI 44,A11 + MOVE *A8(OSAG),A8,L + ADDI 02000000H,A8 + +NEXT_X_PIXEL1 + MOVI 31,A10 + MOVI [107,0],A4 + +NEXT_X_PIXEL2 + CALLR SETUP_ALL_PIX1 + + MOVI 32000H,A0 + CALLA RNDRNGS + MOVE A0,A1 + SRA 7,A1 + NEG A1 + MOVE A1,*A2+,L ;XVEL + + MOVE A0,*A2+,L ;XVEL + + MOVE A4,*A2+,L ;XPOS + ADD A5,A4 + ADDK 30,A8 + DSJS A10,NEXT_X_PIXEL2 + ADD A6,A8 + DSJS A11,NEXT_X_PIXEL1 + + PULL A8 + POPST + SLEEP 1 + MOVE *A8(OFLAGS),A1 + ORI M_NODISP,A1 + MOVE A1,*A8(OFLAGS) + + MOVI ADD_PIXEL_ROT,A0 + MOVE A0,@WHICH_SCREEN,L + SLEEP 254 + + MOVI DUMRETS,A0 + MOVE A0,@WHICH_SCREEN,L + + MOVE *A8(OFLAGS),A1 + ANDI 0FFFFH-M_NODISP,A1 + MOVE A1,*A8(OFLAGS) + + SLEEP 10 + + + MOVI DMACTRL,B1 +WAIT_111 + MOVE *B1,B2,L + JRN WAIT_111 + + PUSHST + DINT + PUSH A8 + MOVI 4C000H,A3 + + MOVI (186*5)*3,A6 + MOVE *A8(OSAG),A8,L + ADDI 02000000H,A8 + MOVI DCS_BIT_TABLE,A2 + MOVI 020H,A5 + MOVI 04000H,A7 + MOVI 21,A11 +NEXT_Y_PIXELS + MOVI 0358H,A4 + MOVI 46,A10 +NEXT_X_PIXELS + + CALLR SETUP_ALL_PIX1 + CALLR SETUP_ALL_PIX2 + + ADDK 20,A8 + + MOVI 0FH,A0 + PUSH A1 + CALLA RNDRNGS + PULL A1 + MOVE A0,*A2+,L ;XVEL + + MOVI 2100H,A0 + PUSH A1 + CALLA RNDRNGS + PULL A1 + SLL 1,A0 + MOVE A0,*A2+,L ;YVEL + + MOVE A4,*A2+,L ;XPOS + MOVE A3,*A2+,L ;YPOS + ADD A5,A4 + DSJS A10,NEXT_X_PIXELS + ADDK 10,A8 + ADD A6,A8 + ADD A7,A3 + DEC A11 + JRNZ NEXT_Y_PIXELS + + PULL A8 + POPST + + CALLA DELOBJA8 + + MOVI ADD_PIXEL_VEL,A0 + MOVE A0,@WHICH_SCREEN,L + + MOVK 3,A8 +FLASH_WHITE + MOVI 0FFFFH,A0 + MOVE A0,@IRQSKYE + + SLEEP 1 + + CLR A0 + MOVE A0,@IRQSKYE + + SLEEP 1 + DSJS A8,FLASH_WHITE + + SLEEP 100 + + RETP + +SETUP_ALL_PIX2 + MOVE A8,A14 + ADD A6,A14 + ADD A6,A14 + CALLR SETUP_TWO_PIX + ADDK 10,A14 + JRUC SETUP_TWO_PIX + +SETUP_ALL_PIX1 + MOVE A8,A14 + CALLR SETUP_TWO_PIX + ADDK 10,A14 + CALLR SETUP_TWO_PIX + + MOVE A8,A14 + ADD A6,A14 + CALLR SETUP_TWO_PIX + ADDK 10,A14 + +SETUP_TWO_PIX + MOVE *A14,A0 + SLL 32-5,A0 + SRL 32-5,A0 + + MOVE *A14(5),A9 + SLL 32-5,A9 + SRL 32-5-8,A9 + + OR A9,A0 + MOVE A0,*A2+ + RETS + +ADD_PIXEL_VEL + MOVI DMACTRL,B1 + MOVE @DCS_PAL,A3 + CALLR SET_UP_PAL + + MOVI 01F0H,A4 + MOVI 966,A9 + MOVI 3*32,A12 + MOVE @page_addr+010h,a14 + MOVE @page_addr,A10 + sll 3,a10 + sll 12,a14 + or a14,a10 + + MOVI 0FA000H,A14 + MOVI 0FF000H,A13 + MOVI 0FFFF8H,A11 + + PUSHST + DINT + MOVI DCS_BIT_TABLE,A8 + .ALIGN +NEXT_PIXEL_VEL + MMFM A8,A0,A1,A2,A3,A5,A6,A7 + ADD A4,A2 ;DO YACCEL + JRZ NO_PLOT_ANYTHING + + ADD A2,A0 ;Y + CMP A14,A0 + JRGE NO_WORRY_ABOUT_Y_BOUNCE + ADD A3,A1 ;X + MMTM A8,A0,A1,A2 + + AND A11,A1 + AND A13,A0 + OR A0,A1 + ADD A10,A1 + + MOVE A7,*A1,L + MOVE A6,*A1(01000H),L + MOVE A5,*A1(02000H),L + ADD A12,A8 +NO_PLOT_ANYTHING + DSJS A9,NEXT_PIXEL_VEL + POPST + RETS + +NO_WORRY_ABOUT_Y_BOUNCE + MOVE A4,A2 + NEG A2 + MMTM A8,A0,A1,A2 + ADD A12,A8 + DEC A9 + JRNZ NEXT_PIXEL_VEL + POPST + RETS + +SET_UP_PAL ;PAL IN A3 + MOVE *B1,B2,L + JRN SET_UP_PAL + MMTM SP,A2,A3,A4,A5,A6,A7,A9 + MOVI 01000100H,A2 + MOVI [4,4],A4 + CLR A5 + MOVI 020000000H,A6 + MOVI 0E0020000H,A9 + + MOVI DMAREGS,A7 + + mmtm A7,A2,A3,A4,A5,A6,A9 + + MMFM SP,A2,A3,A4,A5,A6,A7,A9 + RETS + +ADD_PIXEL_ROT + MOVI DMACTRL,B1 + MOVE @DCS_PAL,A3 + CALLR SET_UP_PAL + + MOVI 2*32,A5 + MOVE @page_addr+010h,a14 + MOVE @page_addr,A10 + sll 3,a10 + sll 12,a14 + or a14,a10 + ADDI 4C000H,A10 + MOVI 44,A9 + MOVI 31,A13 + MOVI 02000H,A4 + + MOVI 0FFFF8H,A11 + + MOVI DCS_BIT_TABLE,A12 + .ALIGN +NEXT_PIXEL_ROT + MMFM A12,A0,A1,A2,A6,A7 + + ADD A2,A1 ;XVEL + ADD A1,A0 ;X POS + MMTM A12,A0,A1 + + SRA 16-3,A0 + AND A11,A0 + ADD A10,A0 + + MOVE A7,*A0,L + MOVE A6,*A0(01000H),L + ADD A5,A12 + DSJS A13,NEXT_PIXEL_ROT + ADD A4,A10 + MOVI 31,A13 + DSJS A9,NEXT_PIXEL_ROT + RETS + + +****************************************************************************** + +GENERIC_DISPLAY + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 2 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + movi hstd_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + SLEEPK 2 + + calla display_unblank + RETP + + + .end + \ No newline at end of file diff --git a/BACKUP/AUDIT.ASM b/BACKUP/AUDIT.ASM new file mode 100644 index 0000000..bf2784a --- /dev/null +++ b/BACKUP/AUDIT.ASM @@ -0,0 +1,3331 @@ +************************************************************** +* +* Software: LARRY DEMAR and DR. J +* Initiated: ? +* +* Modified: Shawn Liptak, 9/6/91 -SLEEPK (Total carnage) +* Shawn Liptak, 11/1/91 -Clean up +* Shawn Liptak, 2/11/91 -Started basketball +* Shawn Liptak, 11/6/92 -L_TIMER clean up +* Jason Skiles, 12/3/93 -Started WWF +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/3/93 9:52 +************************************************************** + .file "audit.asm" + .title "audits and ajustments handling" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;mproc equates + .include "display.equ" ;display proc. equates + .include "sys.equ" ;z unit system equates + .include "gsp.equ" + .include "game.equ" + .include "link.equ" ;link equates + .include "menu.equ" ;menu equates + .include "audit.equ" + .include "macros.h" + .include "sound.h" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + + +* BAD_AUD - ANYTIME AN AUDIT NUMBER IS FETCHED, IF ITS +* CHECKSUM IS BAD, THEN BAD_AUD GETS SET TO 1 +* THIS CAUSES "ERROR" IF ANY AUDIT IN A CALCULATION +* IS CORRUPTED, AND KEEPS A BAD CHECKSUM BAD WHEN +* AN AUDIT IS CHANGED. + + .BSS BAD_AUD ,16 ;(BAD_AUD...NOT BAD_DOG!) + .bss playtimer ,16 ;timer units for game + .BSS C_FRAC ,16 ;TIME 10 SECONDS TO + ;INDICATE COIN ACTIVITY + .BSS C_FLAGS ,5*32 ;INTERRUPT COIN BOUNCE + .BSS COINCNTR ,32 ;MECH COIN COUNTER TIMERS AND COUNTS +COINCNT1 .EQU COINCNTR +COINCNT2 .EQU COINCNTR+8 +* TIMERS 1,2:B16-23,B24-B31; COUNTS 1,2 B0-B7;B8-B15 + .BSS OCT_FLG,16 ;!0=Did 1st part + + +* IN THIS MODULE +; .def ADD_DUMP + .def ADJ_PAGE + .def BAD_AUD + .def C_FRAC,COINCNTR + .def C_FLAGS + .def L_MESS,AUD,AUD1,GET_ADJ + .def GET_AUD,SLAM_SW,STORE_AUDIT + .def CAT_A0 + .def CCCC + .def CK_MAX +; .def CLRSWPRC + .def CLR_AUD,FAC_SET + .def CLR_AUDR +; .def CLR_SUBS + .def CMOS_VAL + .def COIN_PAG +; .def COINIRQ + .def CR_STRTP + .def CR_CONTP + .def CRD_SCRN + .def CRED_P + .def DEF_PAGE +; .def DUMP_FS + .def FORM_ADC + .def F_ADC_S + .def GET_CREDITS + .def GET_CSTR + .def HTOHXASC +; .def KILL_CRD + .def L_TIMER + .def LD_CTAB + .def LM_SETUP + .def LM_FINIS + .def NO_CREDS + .def P_START + .def P_CONT + .def PUT_ADJ + .def ROM_NAME + .def STRCAT + .def UNIT_CLR + .def WAIT_MUT + .DEF KILL_AUD + + .def CCOIN,RCOIN,SERVICE,XCOIN,LCOIN + .DEF DBV + + .ref osgemd_ascii,sgmd8_ascii,ogmd10_ascii,lgmd_ascii + .ref mess_cursy + .ref mess_line_spacing + + .ref print_message,setup_message + .ref print_string_C,print_string_C2 + .ref dec_to_asc + .ref copy_string,copy_rom_string + .ref concat_string,concat_rom_string + .ref BAKMODS + .ref BGND_UD1 + .REF COUNTER_MODE + + .GLOBAL SYNCHALF,WDOGDIS,GAMSTATE + + .REF IRQSKYE + .REF PSTATUS,WRLD + .ref attract_mode + + + .ref _coin_addr + .ref _dipswitch_addr + + ;from DCSSOUND.ASM + .ref triple_sound + + +* IN HSTD.ASM + + .REF SET_PAGE + .REF P_FORK + .REF DEC_HSR,INIT_HSR + .REF RC_BYTEI + .REF RC_BYTE + .REF RC_WORD + .REF RC_LONG + .REF RC_LONGI + .REF WC_BYTE + .REF WC_BYTEI + .REF WC_WORD + .REF WC_WORDI + .REF WC_LONG + .REF WC_LONGI + +* IN MENU.ASM + + .REF GET_CSPT + .REF STR_OBJ + .REF STR_FREE + .REF CKPROMPT + .REF TWO_TS,TWO_TP + .REF BUILD_ST + .REF HID_P + .REF DIAG + .REF CS_ENTS + +* IN ROBOATT.ASM + + .REF WIPEOUT + + +* IN TEST.ASM + +; .REF CK_DOOR +; .REF WT_ADV,WW_ADV + .REF WAIT_BUT + .REF FORM_SWS + .ref opmsg_clr + + + +* OTHERS + +; .ref plyr_strtb1,plyr_strtb2 + .ref dirqtimer + .ref SOUNDSUP + .ref RD15FONT,RD7FONT,STRCNRM + .ref STRNGRAM,STRLNRM,HEXTOASC + .ref CLR_SCRN + .ref KILALL + .ref SUCIDE + .ref dpageflip + .ref TAMPEREDP + + + .text + +************************************************************************** +* +* COIN HANDLING +* +************************************************************************** + +************************************************************************** +* +* L_TIMER +* +* THIS IS CALLED EACH TICK THROUGH THE EXEC LOOP +* BEFORE TIMER IS CLEARED. IT DOES NOTHING +* IF THE GAME IS NOT IN PLAY, ELSE IT ADDS +* THE EXEC TIME TO THE 1 PLAYER OR 2 PLAYER +* TIMER BASED ON CURRENT NUMBER OF PEOPLE PLAYING. +* +************************************************************************** + +L_TIMER + move @dirqtimer,a1 ;get elapsed time + move @playtimer,a0 ;get play timer + sub a1,a0 ;add elapsed time + move a0,@playtimer + jrgt #not5 ;Under 5 seconds? + + CREATE0 audit_ud + + movi TSEC*5,a0 ;reset the countdown +#not5 + move a0,@playtimer + rets + +;each call to AUD1 takes 2 days to execute +;so it's now split over 3 frames + +audit_ud + + move @PSTATUS,a14 + jrz #skip ;no players + + move @GAMSTATE,a14 + jrn #skip ;in diagnostics + + movi AUD_1PLAYTIME,a0 ;update the 1/2P time + cmpi 3,a14 + jrne #1pmode + movi AUD_2PLAYTIME,a0 +#1pmode + callr AUD1 + + SLEEPK 1 + + movi AUD_PLTIME,a0 + callr AUD1 + + SLEEPK 1 +#skip + movi AUD_UPTIME,a0 ;update the total uptime + callr AUD1 + + DIE + + + .if 0 + + + move @PSTATUS,a2 + jrz #audup + + move @GAMSTATE,a2 + jrn #audup + + movi AUD_1PLAYTIME,a0 ;update the 1/2P time + cmpi 3,a2 + jrne #1pmode + movi AUD_2PLAYTIME,a0 +#1pmode + callr AUD1 + + movi AUD_PLTIME,a0 + callr AUD1 + +#audup + movi AUD_UPTIME,a0 ;update the total uptime + callr AUD1 + + movi TSEC*5,a0 ;reset the countdown + +#not5 + rets + + .endif + +#******************************* +* Give him a service credit + +SERVICE + move @GAMSTATE,a0 + jrn #x ;In diagnostics? + + move @_coin_addr,a0,L ;Get COIN inputs + move *a0,a0 + btst CDI_BIT,a0 ;Coin Door Closed ? + jrz #x ;Yes - Then NO Service Credits Allowed + + callr CCCC ;MAKE SURE THINGS ARE IN TACT + + movk AUDSERV,a0 + callr AUD1 ;CHALK UP A SERVICE CREDITS! + + callr getcoin + + callr GET_CREDITS + addk 1,a0 ;Add in the new ones + callr PUT_CREDITS ;NOW STORE EM BACK (ENFORCE MAX) + + callr FORM_COIN_CKSUM_AND_STORE + + ;Update little credit message + .ref update_credit_msg + calla update_credit_msg + + jruc CREDSP + +#x DIE + + +******************************** +* THE FOLLOWING COIN ROUTINES ARE PROCESSES! + +LCOIN MOVK ADJLMULT,A8 ;CMOS RAM ADJUST + MOVI LC_FLAG,A10 ;LEFT COIN FLAG + MOVI AUDLCOIN,A11 ;AUDIT NUMBER + JRUC VALID_COIN + +CCOIN MOVK ADJCMULT,A8 + MOVI CC_FLAG,A10 ;CENTER COIN FLAG + MOVI AUDCCOIN,A11 + JRUC VALID_COIN + +RCOIN MOVK ADJRMULT,A8 + MOVI RC_FLAG,A10 ;RYTE COIN FLAG + MOVI AUDRCOIN,A11 + JRUC VALID_COIN + +XCOIN MOVK ADJXMULT,A8 + MOVI XC_FLAG,A10 ;XTRA (FOURTH) COIN FLAG + MOVI AUDXCOIN,A11 + JRUC VALID_COIN + +DBV MOVK ADJDBVMULT,A8 + MOVI DBV_FLAG,A10 ;XTRA (FOURTH) COIN FLAG + MOVI AUD_DBV,A11 + JRUC VALID_COIN +; +; COIN CONTROL EQUATES +; +LC_FLAG .EQU C_FLAGS ;UHB LEFT COIN +RC_FLAG .EQU C_FLAGS+8 ;UHB RGT " +CC_FLAG .EQU C_FLAGS+16 ;UHB CNTR " +XC_FLAG .EQU C_FLAGS+24 ;UHB XTRA " +DBV_FLAG .EQU C_FLAGS+32 ;UHB DOLLAR BILL VALIDATOR +; +; VALID_COIN- CHECK THE DURATION OF COIN DROP AND SEES IF IT IS A VALID +; ENTRY +;PARAMS REQUIRED: +; A8 = MULTIPLIER FOR THAT SWITCH. +; A10 = RAM TIMER/FLAG +; A11 = BASE AUDIT NUMBER + +VALID_COIN + move @GAMSTATE,a0 + jrn CRX ;In diagnostics? + + MOVE A8,A0 ;MOVE MULTIPLIER ADJUST NUMBER TO A0 + CALLA GET_ADJ ;FETCH IT + MOVE A0,A8 ;AND BACK TO STATIC REG...ANY THERE? + JRZ CRX ;NOPE....DON'T WASTE THE TIME! + + CALLR SLAM_P ;SLAM AROUND? + JRNZ CRX ;THEN NO ACTION + MOVI LC_PID,A0 ;ALL 4 SLOTS USE THIS ID NOW + MOVE A0,*A13(PROCID) ;SET OUR ID (IN CASE TABLE IS WRONG) + +; movb *a10,a0 ;get flag byte +; jrz #fok +; LOCKUP +;#fok + MOVB *A10,A0 ;GET FLAG BYTE + JRNZ CRX ;SOMEONE ELSE THERE...WE'RE A BOUNCE! + +;OK....THIS IS A NEW POSITIVE EDGE....START THE DROP TIMING + + movk 5,a0 ;Wait a few ticks + movb a0,*a10 + +COIN_LOOP + SLEEPK 1 ;SLEEP TILL WE GET SUCCESS OR FAIL + MOVB *A10,A0 ;GET THE TIMER + JRGT COIN_LOOP + + CALLR SLAM_P ;SLAM? + JRNZ CRX ;THEN WE'RE OUT OF HERE + +; 1/2 SECOND HAS PASSED WITHOUT A SLAM....INDICATE COIN DROP + + CLR A0 + MOVE A0,@SOUNDSUP ;TURN SOUNDS ON. (A-MODE SOUND SUPRESSOR) + + callr getcoin + + MOVI 15*40H/8,A0 ;DON'T WIPE ON GAME OVER IF ITS WITHIN + MOVE A0,@C_FRAC ;15 SECONDS (THIS TIMES OUT TO OVER 20) + + MOVE A11,A0 + CALLR AUD1 ;CHALK THE DIRECT AUDIT + +*HIT THE MECHANICAL COIN COUNTERS + MOVE @COUNTER_MODE,A0,W + CMPI 1,A0 + JRNE MECH20 + + MOVI ADJTOTALIZER,A0 + CALLA GET_ADJ + JRZ NORMAL_TOTALIZER + MOVI ADJTOTALIZER,A0 + ADD A11,A0 + CALLA GET_ADJ + MOVE A0,A2 + JRUC RE_ENTER_FROM_CUST_TOTALIZER +NORMAL_TOTALIZER + +*MULTIPLE OF LEAST VALUE COIN MODE + CALLA GET_CSPT ;POINT TO COIN TABLE A6 + MOVK 5,A1 ;CHECK ALL CHUTES + ADDI CS_LVAL,A6 ;ADD IN OFFSET TO CHUTE VALUES + MOVE A6,A5 ;SAVE A6 + CLR A2 + NOT A2 +MECH1L + MOVE *A5+,A0 ;FIND LOWEST NON-ZERO NUMBER IN LIST + JRZ MECH_SKIPZ + CMP A2,A0 + JRHI MECH_SKIPZ + MOVE A0,A2 ;A NEW LOW! +MECH_SKIPZ + DSJS A1,MECH1L + MOVE A2,A2 + JRZ MECH10 ;SOMETHING ILLEGAL HAPPENED, JUST ONE + +RE_ENTER_FROM_CUST_TOTALIZER + + DEC A11 ;GET YOUR CLICK COUNT + SLL 4,A11 ;OFFSET FOR CHUTE, WORD CORRECT + ADD A11,A6 + MOVE *A6,A1 ;GET MONEY VALUE + JRZ MECH10 ;WIERDNESS, JUST ONE CLICK + DIVU A2,A1 ;DIVIDE BY LOWEST COMMON DENOMINATOR + MOVE A1,A2 ;RESULT TO KEEP COMPAT + MOVI COINCNT1,A1 + JRUC MECH3B +MECH10 + MOVK 2,A0 ;VALUE OVER 10, JUST GIVE ONE CLICK +MECH20 + MOVI COINCNT1,A1 + CMPI 2,A0 + JREQ MECH3A ;CLICK COUNTER 1 MODE + + CMPI AUDLCOIN,A11 + JREQ MECH3A + CMPI AUDRCOIN,A11 + JRNE MECH4 + ADDK 8,A1 +MECH3A + MOVK 1,A2 +MECH3B + DINT + MOVB *A1,A0 + ADD A2,A0 + MOVB A0,*A1 + EINT +MECH4 + MOVE A8,A8 ;NO CREDIT UNITS? + JRZ CRX ;THEN NO MORE WORK TO DO. + CALLR ADJUST_CREDITS ;GIVE CREDIT FOR THE MONEY. + CALLR DEF_PAGE ;POINT PAGE AWAY! + + +; SET-UP CREDITS MSG IN GAME SCREEN AND INDICATE 'INSERT COIN' IF NOT ENOUGH +; HAVE BEEN DROPPED +; +; CALLA G_MSG ;PLOT MESSAGE FOR GAME PLAY SCREEN +CREDSP +; MOVE @GAMSTATE,A0 +; CMPI INAMODE,A0 +; JRNZ NOZERO +;NOZERO + move @GAMSTATE,a0 + cmpi INGAME,a0 + jrne #not_ingame + + calla update_credit_msg + +#not_ingame + MOVE @PSTATUS,A0 + JRNZ CRX + move @GAMSTATE,a0 + subk INAMODE,a0 ;A DISPLAY IN AMODE ONLY! + jrne CRX + +CRY jruc CRD_SCRN ;PUT UP THE CREDITS SCREEN + +CRX JAUC SUCIDE + + +******************************** +* Make all switch process dumdie entries + +;CLRSWPRC +; MMTM SP,A0,A1,A3 +; +; CLR A1 ;USE SWTAB ENTRY 0 FOR DUMDIE PROC +; MOVE @SWSTACK,A3,L +;CLRSTKL CMPI SWSTST,A3,L ;STACK AT START? +; JREQ CLRSTKX ;YES, EXIT +; MOVE *A3+,A0 +; CMPI 31,A0 +; JRLS CLRSTKL ;THIS ENTRY IS A REAL SWITCH +; MOVE A1,*A3(-10H) ;STORE THE DUMDIE CALL +; JRUC CLRSTKL +; +;CLRSTKX MMFM SP,A0,A1,A3 +; RETS + + +******************************** +* CR_STRTP - ARE THERE ENOUGH CREDITS TO START +* CR_CONTP - ARE THERE ENOUGH CREDITS TO CONTINUE +* P_START - PLAYER STARTED...DEDUCT CREDITS +* P_CONT - PLAYER CONTINUED...DEDUCT CREDITS +* CRED_P - HOW MANY CREDITS +* +* JRHS FOR OK TO START! + +CR_STRTP + PUSH a0,a1 + MOVK ADJFREPL,A0 + CALLR GET_ADJ ;ARE WE IN FREE PLAY? + CMPI 1,A0 ;WE ARE IF ITS NOT ZERO. + JRHS CR_STX + + CALLR CCCC ;MAKE SURE THINGS ARE IN TACT + CALLR COIN_PAG + CALLR GET_CREDITS ;GET CURRENT CREDITS + MOVE A0,A1 + MOVK ADJCSTRT,A0 + CALLR GET_ADJ ;GET NUMBER NEEDED + CMP A0,A1 ;DO WE HAVE ENOUGH TO START? + +CR_STX MMFM SP,A0,A1 + RETS + +CR_CONTP + PUSH a0,a1 + MOVK ADJFREPL,A0 + CALLR GET_ADJ ;ARE WE IN FREE PLAY? + CMPI 1,A0 ;WE ARE IF ITS NOT ZERO. + JRHS CR_STX1 + + CALLR CCCC ;MAKE SURE THINGS ARE IN TACT + CALLR COIN_PAG + CALLR GET_CREDITS ;GET CURRENT CREDITS + MOVE A0,A1 + MOVK ADJCCONT,A0 + CALLR GET_ADJ ;GET NUMBER NEEDED + CMP A0,A1 ;DO WE HAVE ENOUGH TO START? +CR_STX1 + MMFM SP,A0,A1 + RETS + +P_START + MMTM SP,A0,A1 + CALLR CRED_P + MOVE A0,A1 + MOVK ADJCSTRT,A0 + CALLR GET_ADJ ;GET NUMBER NEEDED + CALLR REMOVE_CREDITS + CALLA DEC_HSR ;TAKE 1 FROM HIGH SCORE RESET COUNTER + + calla update_credit_msg + + MMFM SP,A0,A1 + RETS + +P_CONT + MMTM SP,A0,A1 + CALLR CRED_P + MOVE A0,A1 + MOVK ADJCCONT,A0 + CALLR GET_ADJ ;GET NUMBER NEEDED + CALLR REMOVE_CREDITS + CALLA DEC_HSR ;TAKE 1 FROM HIGH SCORE RESET COUNTER + + calla update_credit_msg + + MMFM SP,A0,A1 + RETS + +REMOVE_CREDITS + SUB A0,A1 ;REMOVE START AMOUNT FROM WHAT WE HAVE + JRHS PS1 ;WE'RE OK. + + CLR A1 ;IT WENT NEGATIVE....MAKE ZERO. +PS1 CALLR COIN_PAG + MOVI CREDITS,A7 + MOVE A1,A0 ;PUT WHATS LEFT OUT TO WRITE + CALLA WC_BYTE ;WRITE THE NEW AMOUNT + + CALLR FORM_COIN_CKSUM_AND_STORE + CALLR DEF_PAGE ;POINT AT DEFAULT PAGE. + RETS + +************************************************************************** +* +* NO_CREDS +* +* THIS IS CALLED TO REMOVE CREDITS AND CREDIT FRACTIONS +* FROM THE MACHINE. +* +************************************************************************** +NO_CREDS + MMTM SP,A0,A1,A7 + CALLR FORM_COIN_CKSUM ;MAKE THE REAL CKSUM + MOVI COIN_CKSUM,A7 + MOVE A1,A0 + INC A0 ;MAKE THE CKSUM BAD! + CALLA WC_BYTE + MMFM SP,A0,A1,A7 + RETS +************************************************************************** +* +* CHALK_COIN +* +* A11 contains the base audit number. Chalk the audit for +* 1 more coin hit there! +* +* 3 away from the base is the "door-closed" counter +* 3 away from that is the "sub-total". +* 3 away from that is the "door-closed" sub-total. +* +************************************************************************** +;CHALK_COIN +; MMTM SP,A0 +; MOVE A11,A0 +;* +;* READY TO CHALK THE AUDIT......ZERO MEANS "EXTRA SLOT" +;* +; +;CCC01 +; CALLR CHALK_FOR_A0 ;CHALK RELEVANT COUNTERS +; MMFM SP,A0 +; RETS + +************************************************************************** +* +* CHALK_FOR_A0 +* +* THIS IS CALLED TO CHALK THE AUDITS FOR A COIN SWITCH. +* A0 HAS THE BASE AUDIT FOR THE COIN SWITCH. +* +************************************************************************** +;CHALK_FOR_A0 +; MMTM SP,A0 +; CALLR AUD1 ;CHALK THE DIRECT AUDIT + +; ADDI 2*CHUTES,A0 ;AND THE "SUB-TOTAL" +; CALLR AUD1 + +; SUBI CHUTES,A0 ;MOVE TO DOOR OPEN TOTAL +; CALLR AUD1 +; +; ADDI 2*CHUTES,A0 ;AND DOOR OPEN SUB-TOTAL +; CALLR AUD1 + +;CKCN1 +; MMFM SP,A0 +; RETS + +************************************************************************** +* +* ADJUST_CREDITS +* +* This is the routine that turns the coin switch hit +* into a tangable (if you could say that) reward. +* +* The coin chute multiplier is in A8. +* +************************************************************************** +ADJUST_CREDITS + + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11 + CALLR CK_MAX ;ARE WE AT MAXIMUM CREDITS? + JRHS ADCRXX ;YEP.....DON'T ROCK THE BOAT! + + CALLR CCCC ;VALIDATE THE CURRENT TOTALS (OR CLEAR!) + + CALLR FETCH_REQ ;GET THE REQUIRED FOR CREDIT, BONUS AND MINIMUM + +* A2 = REQUIRED FOR CREDIT +* A3 = FOR BONUS +* A4 = MINIMUM + + CALLR ADD_TO_CUNITS ;ADD TO OUR CUNITS + MOVE A3,A3 ;BONUS EFFECTIVE? + JRZ NO_BUNITS ;NOPE....DON'T RUN UP THE COUNTER! + + CALLR ADD_TO_BUNITS ;ADD TO BONUS UNITS + +NO_BUNITS + MOVE A4,A4 ;MINIMUM REQUIRED? + JRZ NO_MINIMUM ;NOPE.....LEAVE ALONE. + + MOVI MINUNITS,A7 ;POINT AT MINIMUM + CALLA RC_WORD ;GET THE AMOUNT ACCUMULATED + ADD A8,A0 ;ADD AMOUNT RECEIVED + CALLA WC_WORD ;WRITE THE MINUNITS BACK IN CASE NOT ENOUGH. + + SUB A4,A0 ;DO WE HAVE ENOUGH TO ACT? + JRLO ADCRX ;NOPE....NO CREDITS YET! + + CLR A0 ;CLEAR OUT MINIMUM FOR NEXT SHOT! + CALLA WC_WORD ;REMOVE ACCUMULATED MINIMUM. + +NO_MINIMUM + CLR A6 ;COUNT ACCUMULATED CREDITS IN A6 + CLR A10 ;IN CASE NO BONUS! + + CLR A8 + MOVI BUNITS,A7 + CALLA RC_WORD ;GET THE NUMBER OF BUNITS + MOVE A0,A9 ;INTO A9 + + MOVE A3,A3 ;DON'T DIVIDE BY ZERO! + JRZ NO_BU_BU + DIVU A3,A8 ;DIVIDE BUNITS BY NUMBER NEEDED FOR BONUS + + MOVE A9,A0 ;WRITE REMAINDER BACK + CALLA WC_WORD + + MOVE A8,A6 ;NUMBER OF BONUS CREDITS EARNED. + MOVE A8,A10 ;REMEMBER IF ANY BONUS CREDITS WERE EARNED! + +NO_BU_BU + CLR A8 + CALLR GET_CUNITS ;READ IN THE CUNITS + MOVE A0,A9 + + MOVE A2,A2 ;DON'T DIVIDE BY ZERO. + JRZ NO_CR + + DIVU A2,A8 ;GET CREDITS! + MOVE A9,A0 ;REMAINDER IS LEFTOVER CUNITS + CALLR PUT_CUNITS + ADD A8,A6 ;A6 HAS WHAT WE'VE WON! + +NO_CR + MOVE A6,A1 + MOVI AUDPAIDC,A0 + CALLA AUD ;CHALK UP THE EARNED CREDITS! + + CALLR GET_CREDITS + ADD A6,A0 ;ADD IN THE NEW ONES. + CALLR PUT_CREDITS ;NOW STORE EM BACK (ENFORCE MAX) + + MOVE A10,A10 ;WAS THE BONUS EARNED? + JRZ ADCRX ;NOPE...EXIT! +* +* WHEN BONUS EARNED...WE START THE WHOLE SYSTEM OVER! +* + CALLR CLEAR_UNITS + +ADCRX CALLR FORM_COIN_CKSUM_AND_STORE + +ADCRXX MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11 + RETS + +************************************************************************** +* +* PUT_CREDITS +* +* STORE CREDIT COUNT IN A0 TO CMOS....ENFORCING MAXIMUM CREDITS. +* +************************************************************************** +PUT_CREDITS + MMTM SP,A0,A6,A7 + CALLR GET_MAX ;GET MAX CREDS IN A1....BE ON COIN PAGE + CMP A1,A0 ;SEE HOW WE STACK UP. + JRLO USE_A0 ;WE'RE LOWER...JUST STORE. +* +* WE'RE AT (OR OVER) MAXIMUM CREDITS +* + CALLR CLEAR_UNITS ;CLEAR OUT THE UNIT FRACTIONS. + MOVE A1,A0 ;USE MAXIMUM + +USE_A0 MOVI CREDITS,A7 + CALLA WC_BYTE ;WRITE THE CREDITS OUT. + MMFM SP,A0,A6,A7 + RETS + +************************************************************************** +* +* GET_MAX +* +* GET MAXIMUM CREDITS IN A1. +* +* THIS LEAVES YOU ON COIN PAGE. +* +************************************************************************** +GET_MAX + PUSH a0 + MOVK ADJMAXC,A0 + CALLA GET_ADJ_FOR_COIN ;FETCH MAXIMUM CREDITS (PUT US ON COIN PAGE) + MOVE A0,A1 + MMFM SP,A0 + RETS + +************************************************************************** +* +* CK_MAX +* +* THIS IS CALLED TO SEE IF WE ARE AT MAXIMUM CREDITS. +* .HS. MEANS WE ARE AT MAXIMUM CREDITS. +* +************************************************************************** +CK_MAX + MMTM SP,A0,A1 + CALLR GET_MAX ;GET MAXIMUM IN A1 + CALLR CRED_P ;GET CREDITS IN A0 (AND FLIP PAGE AWAY) + CMP A1,A0 ;JRHS FOR MAXIMUM CREDITS! + MMFM SP,A0,A1 + RETS + +************************************************************************** +* +* UNIT_CLR +* +* THIS IS CALLED AT GAME OVER. IT CLEARS +* OUT ANY COIN FRACTIONS THAT WERE NOT USED BY THE +* CURRENT PLAYER(S). THIS ALLOWS ALL BUY-IN TO +* TAKE ADVANTAGE OF MULTIPLE COIN BONUSES. +* +* ANYTIME A COIN IS INSERTED, C_FRAC IS SET TO ABOUT +* 10 SECONDS. MY TIMING INTERFACE COUNTS C_FRAC DOWN +* TO ZERO. IF C_FRAC IS NON ZERO WHEN THIS ROUTINE IS +* CALLED, THEN SOMEONE PUT A COIN IN NOT TOO LONG BEFORE +* GAME OVER. DON'T SCREW HIM OUT OF HIS FRACTIONS. +* +************************************************************************** +UNIT_CLR + PUSH a0 + MOVE @C_FRAC,A0 ;DO WE GIVE HIM A REPRIEVE? + JRNZ UC1 ;YEP! + CALLR CCCC ;VALIDATE COINAGE + CALLR CLEAR_UNITS ;CLEAR OUT FRACTIONAL UNITS + CALLR FORM_COIN_CKSUM_AND_STORE ;MAKE ALL GOOD. +UC1 + MMFM SP,A0 + RETS + +CLEAR_UNITS + MMTM SP,A0,A7 + CLR A0 + MOVI CUNITS,A7 ;3 CONSECUTIVE WORDS OF CMOS + CALLA WC_WORDI + CALLA WC_WORDI + CALLA WC_WORD + MMFM SP,A0,A7 + RETS + +* RETURN CREDITS IN A0.........AND Z BIT CLEAR IF +* CREDITS EXIST OR IN FREE PLAY. + +CRED_P + CALLR CCCC ;CHECK TO SEE IF DATA IS OK. + +GET_CREDITS + PUSH a7 + CALLR COIN_PAG + MOVI CREDITS,A7 ; + CALLA RC_BYTE ;READ CURRENT CREDITS + JRNZ GC1 ;WE GOT SOME! + + ;PUSH THE ZERO! + PUSH a0 + MOVK ADJFREPL,A0 + CALLR GET_ADJ ;SEE IF FREEPLAY......(Z BIT CLEAR IF SO!) + MMFM SP,A0 ;RESTORE A0 + +GC1 CALLR DEF_PAGE ;FLIP CMOS AWAY + MMFM SP,A7 + RETS + +ADD_TO_CUNITS + MMTM SP,A0,A7 + CALLR GET_CUNITS + ADD A8,A0 + CALLR PUT_CUNITS + MMFM SP,A0,A7 + RETS + +GET_CUNITS + PUSH a7 + MOVI CUNITS,A7 + CALLA RC_WORD + MMFM SP,A7 + RETS + +PUT_CUNITS + PUSH a7 + MOVI CUNITS,A7 + CALLA WC_WORD + MMFM SP,A7 + RETS + +ADD_TO_BUNITS + MMTM SP,A7,A0 + MOVI BUNITS,A7 + CALLA RC_WORD + ADD A8,A0 + CALLA WC_WORD + MMFM SP,A7,A0 + RETS + + +****************************************************************************** + +CRD_SCRN + + CLR a10 ;Sleep 7 secs + + SUBR CRD_SCRN2 ;Entry pnt for shorter sleep + + clr a0 + move a0,@SHOW_CRD_FLAG + .ref SHOW_CRD_FLAG + + MOVI CP_PID1,A0 ;CHANGE TO "CREDIT PAGE" ID 1 + MOVE A0,*A13(PROCID) + MOVI 0FFFFH,A1 ;CHECK TO SEE IF CREDIT PAGE IS UP + CALLA EXISTP + jrnz #exists ;credit page up, so reprint text only + +; JSRP scrn_scaleininit ;Hide display + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + SLEEPK 2 + + movi coinin_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 + + movk 1,a0 + move a0,@DISPLAYON ;Display processor on + + callr crd_updatetxt + + SLEEPK 2 + +; JSRP scrn_scalein + + movi 4<<10+4<<5+7,a0 + move a0,@IRQSKYE + + SLEEPK 2 + calla display_unblank + + jruc #cont + + +#exists + move @HEBLNK,a0 + cmpi HEBLNKINIT,a0 + jrne #inscl + move @dtype,a0 + jrge #notinscl +#inscl move a10,a10 + jrnz KILL_CRD2 + jruc #die +#notinscl + SLEEPK 3 +#cont + callr crd_updatetxt ;Display players per credit messages + + movi HEBLNKINIT,a0 ;Display on (just in case) + move a0,@HEBLNK + + + SLEEP 1*TSEC + + + movi 4*TSEC,a11 +#lp SLEEPK 1 + .ref get_all_buttons_cur2 + calla get_all_buttons_cur2 + jrz #nob + movi bounce_snd,a0 + calla triple_sound + move a10,a10 + jrnz KILL_CRD2 + jruc KILL_CRD +#nob + dsj a11,#lp + +#ck2 + move a10,a10 + jrnz KILL_CRD2 + + movi 10*TSEC,a11 +#lp1 SLEEPK 1 + calla get_all_buttons_cur2 + jrz #nob1 + movi bounce_snd,a0 + calla triple_sound + jruc KILL_CRD +#nob1 + dsj a11,#lp1 + +KILL_CRD + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + SLEEPK 1 + + CREATE AMODE_PID,attract_mode + +#die DIE + + +KILL_CRD2 + RETP + +coinin_mod + .long slateBMOD + .word 0,0 + .long 0 + + +******************************** + + SUBRP crd_updatetxt + + movi CP_PID1,a0 ;PID + movi 0ffffh,a1 ;mask bits + calla KILALL ;kill all CP_PID1 procs except self + + movi TYPTEXT,a0 ;object ID + clr a1 ;mask + calla obj_delc ;delete existing text + +; MOVI CPYR_MES,a2 ;COPYRIGHT MESSAGE + +; .ref DIPSWITCH +; move @DIPSWITCH,a0 + move @_dipswitch_addr,a0,L + move *a0,a0 + btst 6,a0 ;UJ2 switch 1 + jrnz #notfair ;OFF? + +;Yes, a dollar bill acceptor is hooked up! + + MOVI dollar_mes,a2 ;Dollar bill message + calla print_message +#notfair + + PUSH A10 + callr credits_string + PULL A10 + rets + +#***************************************************************************** + + .asg 25,YSPACE + .asg 17,YSPACE0 + + .asg 40,LN0 + .asg 70,LN1 + .asg 100,LN2 + .asg 130,LN3 + .asg 60,LN3x + .asg 160,LN4 + .asg 190,LN5 + .asg 220,LN6 + + +CM_Y_GAP EQU 13 +CM_Y_GAP2 EQU 80 +CM_Y_ADDGAP EQU [CM_Y_GAP,200] + + +credits_string + + MOVK ADJFREPL,A0 ;ARE WE IN FREE PLAY? + CALLA GET_ADJ + JRZ #not_freeply + + movi LN3x_setup,a2 + calla setup_message + movi CM_Y_GAP2,a0 + move a0,@mess_line_spacing + movi #str_freeply,a4 + calla print_string_C2 + + rets + +#not_freeply + +;print "BEST VALUE" +; movi LN0a_setup,a2 +; calla setup_message +; movi #str_value,a4 +; calla print_string_C2 + + +;print "PURCHASE FULL GAMES FOR ONLY X CREDITS!" +; movi LN0_setup,a2 +; calla setup_message +; movi #str_fullg1,a4 +; calla print_string_C2 + +; move @mess_cursy,a0 +; addi YSPACE0,a0 +; move a0,@mess_cursy +; movi ADJFULLG,a0 +; calla GET_ADJ ;# credits for full game +; movi 20,a1 ;max string value +; calla dec_to_asc +; calla copy_string +; movi #str_fullg2,a4 +; calla concat_rom_string +; calla print_string_C + + + + calla GET_CSPT ;a6 = * current pricing table + movk 2,a10 ;min number strings to print + move *a6(CS_LIST),a11,L ;a11 = * string list + jrz #no_strings + + move a11,a2 +#next_string + move *a2+,a0,L ;count up number of strings + jrz #last + inc a10 + jruc #next_string +#last +#no_strings + callr CRED_P ;get number credits + move a0,a3 + MOVK ADJCSTRT,A0 + callr GET_ADJ ;# credits to start + divu a0,a3 ;credits / credits to start + move a3,a3 + jrz #not_enough1 + inc a10 ;+1 string (READY FOR...) +#not_enough1 + + +;print "CREDITS : N" + + movi LN1_setup,a2 + calla setup_message + + callr CRED_P ;# credits in a0 + PUSH a0 + + movi #crd_str,a4 + calla copy_rom_string + + PULL a0 + PUSH a0 + movi 99,a1 ;max string value + calla dec_to_asc + calla concat_string + + MOVK ADJMAXC,a0 + calla GET_ADJ_FOR_COIN ;a0 = max credits + PULL a1 + cmp a0,a1 + jrlo #not_max_crds + movi #str_max,a4 ;max credits + calla concat_rom_string +#not_max_crds + calla print_string_C ;"CREDITS : NN" + + +;print 0-3 strings from current pricing table + + movi LN2_setup,a2 + calla setup_message + + movi 140,a0 + movi YSPACE0,a1 + mpyu a10,a1 ;# strings * Y spacing + srl 1,a1 ;/2 + sub a1,a0 + move a0,@mess_cursy ;centered Y + + calla TAMPEREDP + JRZ #done + +#next_string2 + move *a11+,a4,L ;* next string + jrz #done + + move @mess_cursy,a0 + addi YSPACE0,a0 + move a0,@mess_cursy + + calla print_string_C2 + + jruc #next_string2 +#done + + +;print "N CREDITS TO START" + + move @mess_cursy,a0 + addi YSPACE0,a0 + move a0,@mess_cursy + + MOVK ADJCSTRT,a0 + callr GET_ADJ ;# credits to start + PUSH a0 + movi 99,a1 ;max string value + calla dec_to_asc + calla copy_string + + movi #crd_2start,a4 + PULL a0 + dec a0 + jrz #1credit + movi #crd_2starts,a4 +#1credit + calla concat_rom_string + calla print_string_C + + +;print "N CREDITS TO CONTINUE" + + move @mess_cursy,a0 + addi YSPACE0,a0 + move a0,@mess_cursy + + MOVI ADJCCONT,a0 ;# credits to continue + callr GET_ADJ + PUSH a0 + movi 99,a1 ;max string value + calla dec_to_asc + calla copy_string + movi #crd_2cont,a4 + PULL a0 + dec a0 + jrz #1_creditb + movi #crd_2conts,a4 +#1_creditb + calla concat_rom_string + calla print_string_C + + +;print READY FOR N PLAYERS and PRESS START/INSERT COIN messages + movi LN5_setup,a2 + calla setup_message + + callr CRED_P ;get number credits + move a0,a3 + + MOVK ADJCSTRT,A0 + callr GET_ADJ ;# credits to start + + divu a0,a3 ;credits / credits to start + move a3,a3 + jrz #not_ready + dec a3 + +;;; move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players +;;; jrz #4_plyrs + + cmpi 2,a3 + jrlo #not_max + movi 1,a3 + +#4_plyrs +;;; cmpi 4,a3 +;;; jrlo #not_max +;;; movi 3,a3 +#not_max + sll 5,a3 ;x 32 bits + addi #ready_for_lookup,a3 + move *a3,a4,L +; move @mess_cursy,a0 +; addi YSPACE,a0 +; move a0,@mess_cursy + calla print_string_C2 + + movi #str_start,a4 + jruc #ready + +#not_ready +;Turmell +; movi RUBYPAL,a0 ;redpal +; move a0,@message_palette + movi #str_insert,a4 +#ready + move @mess_cursy,a0 + addi YSPACE,a0 + move a0,@mess_cursy + + calla print_string_C2 + + rets + + + +LN0a_setup + JAM_STR osgemd_ascii,10,0,200,LN0-3-YSPACE,WHITEPAL,0 + .even +LN0_setup + JAM_STR ogmd10_ascii,5,0,200,LN0-YSPACE,SGMD8WHT,0 + .even +LN1_setup + JAM_STR osgemd_ascii,10,0,200,LN1+4,GOLD,0 + .even +LN2_setup + JAM_STR ogmd10_ascii,5,0,200,LN2,SGMD8GLD,0 + .even +LN3_setup + JAM_STR osgemd_ascii,5,0,200,LN3,GREENPAL,0 + .even +LN3x_setup + JAM_STR lgmd_ascii,10,2,200,LN3x,LGMDGLD,0 + .even +LN5_setup + JAM_STR osgemd_ascii,10,0,200,LN5+10,GREENPAL,0 + .even +LN6_setup + JAM_STR osgemd_ascii,10,0,200,LN6,GOLD,0 + .even + +#str_value + .string "BEST VALUE:",0 +#str_fullg1 + .string "PURCHASE FULL GAMES FOR ONLY ",0 +#str_fullg2 + .string " CREDITS PER PLAYER!",0 +#str_max + .string " (MAXIMUM)",0 +#crd_str + .string "CREDITS : ",0 +#crd_2start + .string " CREDIT TO START",0 +#crd_2starts + .string " CREDITS TO START",0 +#crd_2cont + .string " CREDIT TO CONTINUE",0 +#crd_2conts + .string " CREDITS TO CONTINUE",0 +#str_freeply + .string "FREE PLAY",1 +#str_start + .string "PRESS START",0 +#str_insert + .string "INSERT COINS",0 + .even +#ready_for_lookup + .long #str_1p,#str_2p + .long #str_3p,#str_4p +#str_1p .string "READY FOR 1 PLAYER",0 +#str_2p .string "READY FOR 1 - 2 PLAYERS",0 +#str_3p .string "READY FOR 1 - 3 PLAYERS",0 +#str_4p .string "READY FOR 1 - 4 PLAYERS",0 + .even + + + .if 0 + +CM_LINE1 EQU CUSTOM_MESSAGE +CM_LINE2 EQU CUSTOM_MESSAGE+CMESS_LINE_SIZE +CM_LINE3 EQU CUSTOM_MESSAGE+(2*CMESS_LINE_SIZE) + +;OUTPUT_CUSTOM + + + CALLA ADJ_PAGE + MOVI VALID_CUSTOM,A7 + CALLA RC_WORD + CMPI VALID_VALUE,A0 ; CHECK TO SEE IF MESSAGE IS VALID + JRNZ #zippo + + + movi CM_LINE3,A10 ;CHECK LINE 3 + callr CK_LINE ;3 VALID LINES? + jrz GO_FOR_2 + movi LN2_setup,a2 + calla setup_message + movi STRNGRAM,a4 + calla print_string_C2 +GO_FOR_2 + movi CM_LINE2,A10 ;CHECK LINE 2 + callr CK_LINE ;2 VALID LINES? + jrz GO_FOR_1 + movi LN3_setup,a2 + calla setup_message + movi STRNGRAM,a4 + calla print_string_C2 +GO_FOR_1 + movi CM_LINE1,A10 ;CHECK LINE 1 + callr CK_LINE ;1 VALID LINES? + jrz #zippo + movi LN4_setup,a2 + calla setup_message + movi STRNGRAM,a4 + calla print_string_C2 +#zippo + .endif + +#***************************************************************************** + + .if 0 +HELP_TAB + .LONG L_MESS ;0 SAYS USE L_MESS + .LONG JUST_LIST ;1 SAYS USE LISTED MESSAGES ONLY + .LONG LINE_ONE_PLUS ;2 SAYS USE 1ST LINE W/ 2 TO START + .LONG LINE_TWO_PLUS ;3 + .LONG LINE_THREE_PLUS ;4 + .LONG LINE_ONE_PLUS_2 ;5 USE 1ST LINE 2/ 2 CREDITS PER PLAYER + .LONG LINE_TWO_PLUS_2 ;6 + .LONG LINE_THREE_PLUS_2 ;7 + .LONG OUTPUT_CUSTOM ;8 CUSTOM MESSAGE! + +JUST_LIST + MOVE A8,A3 ;STASH WHERE IT WILL SURVIVE + MOVE *A3(LONG_SIZE),A2,L ;ONE WORD ONLY? + JRZ JUST_ONE ;YEP....CENTER IT NICELY +* +* there's a 2nd line...check for 3rd! +* + MOVE *A3(2*LONG_SIZE),A2,L ;IS THERE A 3RD LINE? + JRZ JUST_TWO ;NOPE + + MOVI SETUP_3_OF_3,A8 + JSRP SET_THEN_A2 + + MOVE *A3(LONG_SIZE),A2,L ;GET LINE 2 + + MOVI SETUP_2_OF_3,A8 + JSRP SET_THEN_A2 + + MOVI SETUP_1_OF_3,A8 ;SET HEIGHT FOR TOP LINE + JRUC FIRST_LINE + +JUST_TWO + MOVE *A3(LONG_SIZE),A2,L ;GET LINE 2 + MOVI SETUP_2_OF_2,A8 + JSRP SET_THEN_A2 + + MOVI SETUP_1_OF_2,A8 + +FIRST_LINE + MOVE *A3,A2,L + JRUC SET_THEN_A2 ;DO TOP LEN AND RETURN + +JUST_ONE + MOVI SETUP_1_OF_1,A8 + JRUC FIRST_LINE ;DO TOP LEN AND RETURN + +* +* OUTPUT THE CUSTOM MESSAGE +* +CM_LINE1 EQU CUSTOM_MESSAGE +CM_LINE2 EQU CUSTOM_MESSAGE+CMESS_LINE_SIZE +CM_LINE3 EQU CUSTOM_MESSAGE+(2*CMESS_LINE_SIZE) + +OUTPUT_CUSTOM + MOVI CM_LINE3,A10 ;CHECK LINE 3 + CALLR CK_LINE ;3 VALID LINES? + JRZ GO_FOR_2 + + MOVI SETUP_3_OF_3,A8 + JSRP SET_THEN_STRNGRAM ;PUT IT OUT + + MOVI CM_LINE2,A10 + MOVI SETUP_2_OF_3,A8 + JSRP SET_THEN_STRNGRAM + + MOVI CM_LINE1,A10 + MOVI SETUP_1_OF_3,A8 + JRUC SET_THEN_STRNGRAM + +GO_FOR_2 + MOVI CM_LINE2,A10 ;CHECK LINE 2 + CALLR CK_LINE ;2 VALID LINES? + JRZ GO_FOR_1 + + MOVI SETUP_2_OF_2,A8 + JSRP SET_THEN_STRNGRAM ;PUT IT OUT + + MOVI CM_LINE1,A10 + MOVI SETUP_1_OF_2,A8 + JRUC SET_THEN_STRNGRAM + +GO_FOR_1 + MOVI CM_LINE1,A10 + MOVI SETUP_1_OF_1,A8 + JRUC SET_THEN_STRNGRAM + + .endif + +************************************************************************** +* +* SET_THEN_A2 +* +* THIS IS A PRIMITIVE FOR THE COIN PAGE PLOTTERS. +* +* IT SETS UP WITH THE STRING IN A8, THEN FINSHES +* ON THE STRING IN A2. +* +* JSRP THIS ROUTINE! +* +************************************************************************** +SET_THEN_A2 + CALLA LM_SETUP + MOVE A2,A8 + JAUC LM_FINIS ;THAT DOES LINE 3 + +************************************************************************** +* +* SET_THEN_STRNGRAM +* +* A10 POINTS AT A CMOS STRING FOR CUSTOM MESSAGE. +* A8 CONTAINS THE SETUP STRING FOR PRINTING THIS +* STRING OUT. CONVERT FROM CMOS TO STRNGRAM +* AND PRINT ON THE STRING. +* +************************************************************************** +SET_THEN_STRNGRAM + CALLR CK_LINE ;TRANSFER TO STRNGRAM + CALLR LM_SETUP + MOVI STRNGRAM,A8 + JAUC LM_FINIS + +************************************************************************** +* +* CK_LINE +* +* A10 POINTS AT A CMOS STRING. WE MOVE THIS STRING +* TO OUR PDATA AREA. THEN WE CALL BUILD_ST TO +* PACK IT INTO "STRNGRAM" WE RETURN .EQ. (PASSED FROM +* BUILD_ST) BACK TO OUR CALLER IF IT IS ALL SPACES. +* +************************************************************************** +CK_LINE + MMTM SP,A0,A7,A1,A2,A10 + MOVE A10,A7 ;INPUT POINTER TO CMOS + MOVE A13,A10 ;OUR PDATA AREA + ADDI PDATA,A10 ;A10 IS DESTINATION. + MOVE A10,A2 ;ITERATE TO LOAD IT UP. + + MOVI CMESS_CHARS,A1 ;COUNTER + CALLA ADJ_PAGE ;POINT THE PAGE + +CK_LOOP + CALLA RC_BYTEI ;FETCH A BYTE + MOVB A0,*A2 ;STORE + ADDK BYTE_SIZE,A2 + DSJS A1,CK_LOOP + + CALLA DEF_PAGE ;POINT AWAY NOW + CALLA BUILD_ST ;NOW XFER TO STRNGRAM (REMOVING SPACES ETC) + MMFM SP,A0,A7,A1,A2,A10 ;RETURN .EQ. IF ITS ALL SPACES. + RETS + + + + +LINE_ONE_PLUS + MOVE *A8,A2,L ;GET LINE 1 +LOP_1 + MOVI SETUP_1_OF_3,A8 + CALLR LM_SETUP + MOVE A2,A8 ;SWAP IN TEXT POINTER + JSRP LM_FINIS ;PRINT IT + +LOP_2 + MOVI TWO_TS,A8 ;TWO TO START STUFF + JAUC L_MESS ;PRINT IT AND RETURN + +* +* IF THE GAME IS IN A 2 TO START....2 TO CONTINUE MODE +* +LINE_THREE_PLUS + MOVE *A8(2*LONG_SIZE),A2,L ;FETCH LINE 3 + JRZ LOP_2 ;NOTHING ON LINE 3 + JAUC LOP_1 ;THEN ITS THE SAME AS ABOVE! + +LINE_TWO_PLUS + MOVE *A8(LONG_SIZE),A2,L ;FETCH LINE 2 + JRZ LOP_2 ;NOTHING ON LINE 2 + JAUC LOP_1 ;THEN ITS THE SAME AS ABOVE! + +LINE_ONE_PLUS_2 + MOVE *A8,A2,L ;GET LINE 1 +LOP_12 + MOVI SETUP_1_OF_2,A8 + CALLR LM_SETUP + MOVE A2,A8 ;SWAP IN TEXT POINTER + JSRP LM_FINIS ;PRINT IT + +LOP_22 + MOVI TWO_TP,A8 ;TWO CREDITS PER PLAYER + JAUC L_MESS ;PRINT IT AND RETURN + +LINE_TWO_PLUS_2 + MOVE *A8(LONG_SIZE),A2,L ;FETCH LINE 2 + JRZ LOP_22 ;NOTHING ON LINE 2 + JAUC LOP_12 ;THEN ITS THE SAME AS ABOVE! + +LINE_THREE_PLUS_2 + MOVE *A8(2*LONG_SIZE),A2,L ;FETCH LINE 3 + JRZ LOP_22 ;NOTHING ON LINE 3 + JAUC LOP_12 ;THEN ITS THE SAME AS ABOVE! + +************************************************************************** +* +* SELECT_SETUP +* +* THIS IS CALLED TO SELECT A SETUP STRING FOR THE +* CREDITS MESSAGE. IF THERE IS PROMPTING TO ADD...WE +* DROP IT DOWN....ELSE WE PRINT IT CENTERED. +* +************************************************************************** +SELECT_SETUP + PUSH a0 + MOVI MESS_CNUM,A8 ;ASSUME NO EXTRA PROMPT + + CALLA CKPROMPT ;IS THERE ONE? + JRZ NO_EXTRA + + MOVI MESS_LOWNUM,A8 +NO_EXTRA + MMFM SP,A0 + RETS + +************************************************************************** +* +* FETCH_REQ +* +* THIS ROUTINE FETCHES THE NUMBER OF UNITS REQUIRED +* FOR CREDIT, BONUS AND MINIMUM: +* +* A2 = REQ FOR CREDITS +* A3 = REQ FOR BONUS +* A4 = MINIMUM +* +************************************************************************** +FETCH_REQ + PUSH a0 + MOVK ADJCUNIT,A0 + CALLR GET_ADJ + MOVE A0,A2 + + MOVK ADJBUNIT,A0 + CALLR GET_ADJ + MOVE A0,A3 + + MOVK ADJMUNIT,A0 + CALLR GET_ADJ_FOR_COIN + MOVE A0,A4 + MMFM SP,A0 + RETS + +************************************************************************** +* +* SLAM_P +* +* IS THERE A SLAM PROCESS RUNNING? +* +* .EQ. NO +* .NE. YES +* +************************************************************************** +SLAM_P + MOVI SLAM_PID,A0 ;SLAM PROCESS ACTIVE? + MOVI 0FFFFH,A1 + jauc EXISTP + +SLAM_SW + movi SLAM_PID|>ffff0000,a0 ;So we can kill other indestructables + move a0,*a13(PROCID) ;Set our ID + calla KIL1C ;Kill others + + SLEEP TSEC ;1 second of coin ignoring + jauc SUCIDE + +************************************************************************** +* +* FORM_COIN_CKSUM +* +* THIS ROUTINE IS CALLED TO FORM THE COIN/CREDITS +* CHECKSUM. THE CHECKSUM IS RETURNED IN A1. +* +* Z IT MATCHES WHATS THERE +* NZ IT DOESN'T MATCH +* +************************************************************************** +FORM_COIN_CKSUM + MMTM SP,A0,A7,A2 + CALLR COIN_PAG ;MAKE SURE WE'RE ON THE RIGHT PAGE. + MOVI COIN_CKSUM_START,A7 ;POINT AT FIRST BYTE TO CHECK + MOVI COIN_CKSUM_BYTES,A2 + CLR A1 ;CLEAR OUT CHECKSUM + +CN_SUM + CALLA RC_BYTEI ;FETCH A BYTE IN A0 + ADD A0,A1 ;ADD TO SUM + DSJS A2,CN_SUM ;TILL WE HAVE EM ALL + + NOT A1 ;COMPLEMENT OF COURSE + sll 32-8,a1 + srl 32-8,a1 + + MOVI COIN_CKSUM,A7 + CALLA RC_BYTE ;FETCH THE CURRENT CKSUM + CMP A0,A1 ;COMPARE TO THIS + MMFM SP,A0,A7,A2 + RETS + +FORM_COIN_CKSUM_AND_STORE + MMTM SP,A1,A7,A0 + CALLR FORM_COIN_CKSUM + MOVI COIN_CKSUM,A7 + MOVE A1,A0 + CALLA WC_BYTE + MMFM SP,A1,A7,A0 + RETS + +************************************************************************** +* +* CCCC +* +* Check_Coin_and_Clear_on_bad_Checksum. +* +* This is called before operations that deal with +* the coinage and credits values. +* +* It checks to see if the area is in tact. If it +* is, then no action is performed. +* +* Else, it clears our all values (credits, etc.) +* so that nothing is given away erroneously. +* +************************************************************************** +CCCC + MMTM SP,A0,A1,A7,A2 + CALLR FORM_COIN_CKSUM ;THIS SETS US TO THE COINAGE PAGE! + JRZ CCCCX ;ALL IS OK! + + MOVI COIN_CKSUM_START,A7 ;POINT AT FIRST BYTE + MOVI COIN_CKSUM_BYTES,A2 ;NUMBER OF BYTES TO CLEAR + CLR A0 + +CCCC_LOOP + CALLA WC_BYTEI ;WRITE A BYTE + DSJS A2,CCCC_LOOP ;UNTIL THEY'RE DONE! + + CALLR FORM_COIN_CKSUM_AND_STORE ;NOW MAKE THE CKSUM VALID + +CCCCX + MMFM SP,A0,A1,A7,A2 + RETS + +************************************************************************** +* +* COIN_PAG +* +* THIS SETS THE CURRENT CMOS PAGE FOR COIN/CREDITS +* +************************************************************************** +COIN_PAG + PUSH a1 + MOVI COIN_SELECT,A1 ;THIS IS COIN/CREDITS PAGE + CALLA SET_PAGE ;SET IT PLEASE + MMFM SP,A1 + RETS + + +******************************** +* Add the # of players to the audit +* A0=Audit # +* Trashes A0-A1,B0-B1 + + SUBR aud_addnumplyrs + + movk 1,a1 ;1 plyr + move @PSTATUS,b0 + subk 3,b0 + jrne aanp50 ;Only 1? + movk 2,a1 ;2 plyrs +aanp50 jruc AUD + + +************************************************************************** +* +* AUDIT HANDLING +* +************************************************************************** +* +* POINT_AT_AUDIT +* +* THIS IS CALLED TO POINT AT THE AUDIT INDICATED BY +* A0. A0 IS THE AUDIT NUMBER 0-30. A7 IS RETURNED +* POINTING AT THE BEGINNING OF THE AUDIT. +* +************************************************************************** +POINT_AT_AUDIT + PUSH a1 + CALLR AUDIT_PAGE + + MOVI AUD_SIZE,A7 ;THIS IS SIZE PER AUDIT + MPYU A0,A7 ;A1 NOW HAS OFFSET + ADDI AUDITORG,A7 ;ADD BASE + MMFM SP,A1 + RETS + +AUDIT_PAGE + PUSH a1 + MOVI AUDIT_SELECT,A1 ;THIS IS AUDIT PAGE + CALLA SET_PAGE ;SET IT PLEASE + MMFM SP,A1 + RETS + +************************************************************************** +* +* FORM_AUD_CKSUM +* +* THIS IS CALLED TO FORM THE CHECKSUM FOR THE AUDIT +* SPECIFIED IN A0. +* +* A1 RETURNS THE CHECKSUM. +* +* Z BIT IS SET BASED ON WHETHER IT MATCHES THE CHECKSUM THERE. +* +************************************************************************** +FORM_AUD_CKSUM + MMTM SP,A0,A4,A7 + CALLR POINT_AT_AUDIT ;A7 = POINTER TO CURRENT ENTRY + MMTM SP,A7 ;SAVE POINTER TO ENTRY + MOVI AUD_BYTES_TO_CHECK,A4 ;COUNT DOWN THE BYTES + CLR A1 ;KEEP SUM IN A1 +ADD_A_BYTE + CALLA RC_BYTEI ;GET A BYTE INTO A0 + ADD A0,A1 ;ADD TO SUM + DSJ A4,ADD_A_BYTE ;ONE MORE ADDED + NOT A1 ;CHECKSUM IS NOW IN LOW WORD + ZEXT A1 +; ANDI WORD_MASK,A1 ;MASK SO ITS COOL + MMFM SP,A7 ;GET POINTER BACK + ADDI AUD_CKSUM,A7 ;POINT AT CHECKBYTE + CALLA RC_WORD ;READ IN THE CKSUM + CMP A0,A1 ;COMPARE WHAT'S THERE TO WHAT WE GOT + MMFM SP,A0,A4,A7 ;Z BIT RETURNS COMPARE + RETS ;A1 RETURNS CKSUM + +************************************************************************** +* +* STORE_AUD_CKSUM +* +* THIS WILL STORE THE AUDIT CHECKSUM IN A1 FOR THE +* AUDIT NUMBER SPECIFIED BY A0. +* +************************************************************************** +STORE_AUD_CKSUM + MMTM SP,A7,A0 ;POINTING REGISTER + CALLR POINT_AT_AUDIT ;A7 POINTS AT AUDIT + ADDI AUD_CKSUM,A7 ;POINT AT CHECKBYTE + MOVE A1,A0 ;GET CHECKBYTE IN A0 + CALLA WC_WORD ;WRITE THE CKSUM + MMFM SP,A7,A0 ;POINTING REGISTER + RETS + +************************************************************************** +* +* FORM_AUD_CKSUM_AND_STORE +* +* THE VALUE AT BAD_AUD IS USED TO DETERMINE WHETHER TO STORE +* THE CORRECT OR INCORRECT VALUE! +* +* A0 = AUDIT NUMBER +* +************************************************************************** +FORM_AUD_CKSUM_AND_STORE + MMTM SP,A1,A2 ;SAVE A1! + CALLR FORM_AUD_CKSUM + MOVE @BAD_AUD,A2 ;GET THE "FUDGE" WORD + XOR A2,A1 ;MAKE CKSUM BAD IF AUDIT IS BAD + CALLR STORE_AUD_CKSUM + MMFM SP,A1,A2 + RETS + +************************************************************************** +* +* GET_AUD +* +* THIS IS CALLED TO FETCH THE AUDIT VALUE FOR THE AUDIT +* SPECIFIED IN A0 INTO A1. IF THE CHECKBYTE FOR THE +* AUDIT IS INCORRECT, THEN RAM LOCATION BAD_AUD WILL BE +* SET TO 1. +* +************************************************************************** +GET_AUD + MMTM SP,A0,A7 + CALLR FORM_AUD_CKSUM ;SEE IF CKSUM IS OK + JRZ FETCH_AUDIT_1 ;ITS OK.... + + MOVK 1,A1 ;CHECKSUM IS BAD + MOVE A1,@BAD_AUD ;SET THE FLAG! + +FETCH_AUDIT_1 + CALLR POINT_AT_AUDIT ;A7 POINTS AT AUDIT + ADDI AUD_DATA,A7 ;ADD ZERO OFFSET + CALLA RC_LONG ;FETCH THE LONG WORD TO A0 + MOVE A0,A1 ;RETURN IN A1 + MMFM SP,A0,A7 + RETS + +************************************************************************** +* +* STORE_AUDIT +* +* A0 = AUDIT NUMBER TO STORE VALUE FOR +* A1 = VALUE TO STORE. +* BAD_AUD = NON ZERO IF BAD CHECKSUM IS TO BE MAINTAINED. +* +************************************************************************** +STORE_AUDIT + + MMTM SP,A0,A7 + CALLR POINT_AT_AUDIT ;A7 POINTS AT AUDIT + ADDI AUD_DATA,A7 ;ADD ZERO OFFSET + MOVE A1,A0 ;MOVE DATA TO WRITING REGISTER + CALLA WC_LONG ;WRITE THE DATA BACK + MMFM SP,A0,A7 ;GET AUDIT NUMBER BACK + JRUC FORM_AUD_CKSUM_AND_STORE ;STORE GOOD OR BAD CKSUM BASED + ;ON BAD_AUD + +************************************************************************** +* +* CLR_SUBS +* +* THIS IS CALLED TO CLEAR OUT THE COINAGE SUB-TOTALS. +* +************************************************************************** +;CLR_SUBS +; MOVI FRST_SUB,A0 +; MOVI LAST_SUB,A1 +; CALLR CLR_AUDR ;CLEAR EM OUT! +; RETP +; +************************************************************************** +* +* CLR_AUDR +* +* THIS IS CALLED TO CLEAR OUT A RANGE OF AUDITS. +* A0 = 1ST AUDIT NUMBER +* A1 = LAST AUDIT NUMBER (INCLUSIVE) +* +************************************************************************** +CLR_AUDR + MMTM SP,A0,A1,A2 + MOVE A1,A2 ;MOVE "LAST" TO A2 + CLR A1 ;WE'LL STORE ZEROS + MOVE A1,@BAD_AUD ;MAKE CKSUMS GOOD ON STORING +CAR1 + CALLR STORE_AUDIT ;STORE THIS AUDIT + INC A0 ;KICK TO NEXT AUDIT + CMP A2,A0 + JRLS CAR1 + MMFM SP,A0,A1,A2 + RETS + +************************************************************************** +* +* CLR_DUMP_AUD +* +* This is called by both joysticks down while looking +* at dump page. It clears out the audits associated +* with that page. +* +************************************************************************** +;CLR_DUMP_AUD +; MOVI AUDDOGGY,A0 +; CALLR KILL_AUD +; MOVI AUDLOCK,A0 +; CALLR KILL_AUD +; MOVI AUDTRAP,A0 +; CALLR KILL_AUD +; MOVI AUDSURV,A0 +; CALLR KILL_AUD +; MOVI AUDBONE,A0 +; CALLR KILL_AUD +; RETS + +************************************************************************** +* +* KILL_AUD +* +* This is called to clear out an audit. +* +* A0 = audit number. +* +************************************************************************** +KILL_AUD + PUSH a1 + CLR A1 ;WE'LL STORE ZEROS + MOVE A1,@BAD_AUD ;MAKE CKSUMS GOOD ON STORING + CALLR STORE_AUDIT ;STORE THIS AUDIT + MMFM SP,A1 + RETS + +************************************************************************** +* +* AUD +* +* A0 = AUDIT NUMBER.......A1 = COUNT TO ADD. +* +************************************************************************** +AUD + MMTM SP,A1,A2 + CLR A2 ;SET "BAD_AUD" GOOD UNTIL OTHERWISE PROVEN! + MOVE A2,@BAD_AUD ;ITS GOOD. + MOVE A1,A2 ;COPY OUR COUNT + CALLR GET_AUD ;FETCH THE CURRENT AUDIT COUNTER + ADD A2,A1 ;ADD THE NEW COUNT + CALLR STORE_AUDIT ;STORE IT BACK + CALLR DEF_PAGE ;SWITCH PAGE AWAY FROM THE DATA! + MMFM SP,A1,A2 + RETS + +AUD1 + PUSH a1 + MOVK 1,A1 + CALLR AUD + MMFM SP,A1 + RETS + +************************************************************************** +* +* CLR_AUD +* +* This is called to clear out all of the audits. +* +* A relatively easy task given the primitives available. +* +************************************************************************** +CLR_AUD + MMTM SP,A0,A1 + MOVK 1,A0 ;START AT AUDIT 1 + MOVI N_AUDITS-1,A1 ;THIS IS TOTAL ALLOCATED + CALLR CLR_AUDR + MMFM SP,A0,A1 + RETS + +************************************************************************** +* +* ADJUSTMENTS +* +************************************************************************** +************************************************************************** +* +* CMOS_VAL +* +* ARE ADJUSTMENTS AND NAME/REV OK? +* +* .EQ. MEANS YES +* .NE. MEANS NO +* +************************************************************************** +CMOS_VAL + CALLR FORM_ADC ;SEE IF CKSUM IS OK. + JRNZ CMOS_BAD ;NOPE....RETURN .NE. + + CALLR CHECK_NAME_AND_REV ;HOW ABOUT THE NAME AND REV? +CMOS_BAD + RETS + +************************************************************************** +* +* Adjustments are all stored as long words in CMOS. +* They are referenced by adjustment number. Stuff +* adjustment number in A0. Call GET_ADJ and the +* value is returned in A0. +* +************************************************************************** +************************************************************************** +* +* FORM_ADC +* +* THIS IS CALLED TO FORM THE CHECKSUM FOR THE ADJUSTMENTS +* AREA. IT IS RETURNED IN A1. +* +* IT IS COMPARED TO THE REAL CHECKSUM AND .EQ. RETURNED IF OK. +* +************************************************************************** +FORM_ADC + MMTM SP,A7,A0,A6 + CALLR ADJ_PAGE ;SET CMOS PAGE FOR ADJUSTMENTS + MOVI ADJUSTORG,A7 ;POINT AT FIRST BYTE + MOVI ADJ_BYTES_TO_CHECK,A6 ;NUMBER OF BYTES + CLR A1 ;ACCUMULATE CKSUM HERE + +ADJ_C1 + CALLA RC_BYTEI ;READ A BYTE + ADD A0,A1 ;ADD THE BYTE TO THE SUM + DSJS A6,ADJ_C1 + NOT A1 ;COMPLEMENT THE SUM + ZEXT A1 + MOVI ADJ_CKSUM,A7 + CALLA RC_WORD ;FETCH THE CHECKSUM + CMP A0,A1 ;COMPARE TO FETCHED VALUE + MMFM SP,A7,A0,A6 + RETS + +************************************************************************** +* +* F_ADC_S +* +* CALCULATE THE ADJUSTMENT CHECKSUM AND STORE THE +* NEW VALUE. +* +************************************************************************** +F_ADC_S + MMTM SP,A0,A1,A7 + CALLR FORM_ADC ;FORM THE CKSUM + MOVE A1,A0 ;PUT IN CMOS WRITING REGGIE + MOVI ADJ_CKSUM,A7 + CALLA WC_WORD ;AND STORE IT + MMFM SP,A0,A1,A7 + RETS + +************************************************************************** +* +* GET_ADJ +* +* THIS IS CALLED TO FETCH THE VALUE OF AN ADJUSTMENT. +* +* THE ADJUSTMENT NUMBER IS GIVEN IN A0. +* THE VALUE FOR THE ADJUSTMENT IS RETURNED IN A0. +* +************************************************************************** +GET_ADJ + PUSH a1,a7 + CALLR ADJPOINT ;POINT AT ADJUSTMENT + CALLA RC_LONG ;FETCH THE ADJUST PLEASE + CALLR DEF_PAGE + PULL a1,a7 + MOVE A0,A0 ;RETURN Z BIT BASED ON ADJUSTMENT! + RETS + +************************************************************************** +* +* PUT_ADJ +* +* ADJUST NUMBER IN A0. +* VALUE IN A1. +* STORE IT!........ +* +* ****************** THIS IS A UTILITY......IT DOES NOT +* CORRECT ANY CHECKSUM CHANGE THAT +* MAY OCCUR!! +* +************************************************************************** +PUT_ADJ + PUSH a0,a7 + CALLR ADJPOINT ;POINT AT REQUESTED ADJ. + MOVE A1,A0 ;GET VALUE IN WRITING REGGIE! + CALLA WC_LONG ;WRITE THE ADJUSTMENT + CALLR DEF_PAGE ;SWAP PAGE AWAY. + MMFM SP,A7,A0 + RETS + +ADJPOINT + CALLR ADJ_PAGE ;SET CMOS PAGE FOR ADJUSTMENTS + MOVI ADJ_SIZE,A7 ;SIZE PER ADJUSTMENT IN A7 + MPYU A0,A7 ;TIMES ADJUSTMENT REQUESTED. + ADDI ADJUSTORG,A7 ;ADD TO BASE + RETS + +GET_ADJ_FOR_COIN + CALLR GET_ADJ ;GET THE ADJUSTMENT + JAUC COIN_PAG ;THEN RE-INSTATE THE COIN PAGE! + +************************************************************************** +* +* CHECK_NAME_AND_REV +* +* THIS ROUTINE IS CALLED TO SEE IF THE GAME NAME/REV IS +* CORRECT. IF IT IS NOT, THE GAME WILL AUTOMATICALLY +* FACTORY SET. Z MEANS OK! +* +************************************************************************** +CHECK_NAME_AND_REV + MMTM SP,A0,A1,A2,A3,A7 + CALLR ADJ_PAGE ;MAKE SURE WE'RE ON THE CORRECT PAGE + + MOVI NAME_REV,A7 ;POINT AT CMOS NAME STORAGE + MOVI ROM_NAME,A1 ;POINT AT OUR VERSION + MOVI NAME_REV_SIZE,A2 ;MAXIMUM NAME SIZE + +NEXT_LET1 + CALLA RC_BYTEI ;FETCH A BYTE + MOVB *A1,A3 ;GET 1 FROM ROM + SLL 24,A3 + SRL 24,A3 + + CMP A3,A0 ;THEY BETTER BE THE SAME + JRNZ RETURN_NOW ;NOPE....BYE (RETURN .NE.) + + ADDK BYTE_SIZE,A1 ;KICK SOURCE POINTER + MOVE A0,A0 ;WAS IT A ZERO? + JRZ RETURN_NOW ;YEP....NO MORE (RETURN .EQ.) + DSJS A2,NEXT_LET1 + CLR A0 ;RETURN .EQ. + +RETURN_NOW + MMFM SP,A0,A1,A2,A3,A7 + RETS + +************************************************************************** +* +* ADJ_PAGE +* +* THIS SETS THE CURRENT CMOS PAGE FOR ADJUSTMENTS. +* +************************************************************************** +ADJ_PAGE + PUSH a1 + MOVI ADJUST_SELECT,A1 ;THIS IS AUDIT PAGE + CALLA SET_PAGE ;SET IT PLEASE + MMFM SP,A1 + RETS + + +************************************************************************** +* +* DEF_PAGE +* +* THIS SWITCHES TO "DEFAULT" PAGE. THE DEFAULT +* PAGE IS THE ONE THAT WE WOULD LIKE TO SMASH +* MOST IN THE CASE OF A CRASH. AFTER MOST +* PROCESSING, WE SWITCH TO THIS PAGE! +* +************************************************************************** +DEF_PAGE + .if 0 + PUSHST ;PRESERVE CODES THAT ARE BEING RETURNED + PUSH a1 + MOVI TODAYS_SELECT,A1 ;THIS IS TODAY'S HIGH SCORES PAGE + CALLA SET_PAGE ;SET IT PLEASE + PULL a1 + POPST + .endif + RETS + +************************************************************************** +* FAC_SET - Restores the factory settings to the adjustments +* A0=Mode (0=All adjustments, 1=Only coinage) + +FAC_SET + PUSH a1,a2,a7 + + move a0,-*sp + subk 1,a0 + jreq fs20 ;Just coinage? + + calla opmsg_clr + +;;; CALLR DUMP_FS ;CLEAR OUT "DUMP" MEMORY +;;; (stomps on player records) + + + CALLR NO_CREDS ;REMOVE ANY COINS + CALLR ADJ_PAGE ;SET CMOS PAGE CORRECTLY + + MOVI FACTORY_TABLE,A1 ;ROM + MOVI ADJUSTORG,A7 ;CMOS + MOVI N_ADJUSTS,A2 ;NUMBER OF ADJUSTMENTS ALLOCATED + +FACS1 + MOVE *A1+,A0 ;FETCH A ROM LONG WORD + ZEXT A0 + CALLA WC_LONGI ;WRITE THE WORD TO CMOS + DSJS A2,FACS1 ;WRITE 1 LONG WORD PER ADJUST +fs20 +; .if YUNIT +; move @SWITCH+>30,a1 +; btst 6,a1 +; jrnz fs80 +; not a1 +; sll 32-5,a1 +; srl 32-5-3,a1 ;*8 +; cmpi (dctend-dipcoinage_t),a1 +; jrhs fs50 ;Illegal setting? +; addi dipcoinage_t,a1 +; movb *a1,a1 +; movk ADJPRICE,a0 ;Master priceing +; callr PUT_ADJ +;fs50 +; movk ADJFREPL,a0 ;Free play +; clr a1 ;Off +; callr PUT_ADJ +;fs80 +; .endif + + callr LD_CTAB ;EXPAND THE CSELCT VALUE + callr F_ADC_S ;MAKE THE CHECKSUM CORRECT. + + move *sp+,a0 + subk 1,a0 + jreq fsx ;Only coinage? + +* NOW STORE THE GAME NAME AND REVISION INFO + + MOVI NAME_REV,A7 ;POINT AT CMOS NAME STORAGE + MOVI ROM_NAME,A1 ;POINT AT OUR VERSION + MOVI NAME_REV_SIZE,A2 ;MAXIMUM NAME SIZE + +NEXT_LETTER + MOVB *A1,A0 ;FETCH A BYTE + CALLA WC_BYTEI ;WRITE IT TO CMOS + ADDK BYTE_SIZE,A1 ;KICK SOURCE POINTER + move a0,a0 + jrz fsx ;End? + DSJS A2,NEXT_LETTER + +fsx PULL a1,a2,a7 + rets + +;dipcoinage_t +; .byte 1,2,3, 10,11,12, 16,17,18, 29, 32, 33,34,35, 37 +; .byte 39, 41,42, 43, 45,46, 49, 50, 52, 53, 54, 55 +;dctend + .even + +************************************************************************** +* +* SWITCH_FOR_JUMPER +* +* THIS IS CALLED OUT OF THE FACTORY SETTING SEQUENCE. +* IT CHECKS FOR JUMPER COMBINATIONS INDICATING +* GERMAN OR FRENCH GAMES. +* +* THE JUMPERS ARE CONNECTED AS FOLLOWS: +* +* GERMAN JUMPER = BIT 15 OF "COINS" +* FRENCH JUMPER = BIT 14 OF "COINS" +* +* IF BOTH JUMPERS ARE IN, OR BOTH ARE MISSING, THEN +* ITS U.S. DEFAULT....LEAVE EVERYTHING ALONE. +* +* IF GERMAN IS MISSING (READ AS A 1) THEN USE +* GERMAN 1 COINAGE. +* +* IF FRENCH IS MISSING THEN USE FRENCH 1 COINAGE. +* +************************************************************************** +;SWITCH_FOR_JUMPER +; MMTM SP,A0 +; MOVE @COINS,A0 ;GET THE 16 BITS +; ANDI JUMPERS,A0 ;JUST KEEP THE BITS +; JRZ USA ;BOTH ARE IN...US! +; +; CMPI JUMPERS,A0 ;ARE BOTH MISSING? +; JRZ USA ;YEP....US. +; +; CMPI GERMAN_BIT,A0 ;IS JUST THE GERMAN MISSING? +; JRNZ NOGERM ;NOPE +; +; CALLR DO_GERMAN ;DO THE GERMAN STUFF +; JRUC SFJX ;AND EXIT +;* +;* MUST BE FRENCH +;* +;NOGERM +; CALLR DO_FRENCH ;IF IT IS NOT POSSIBLE....DO IT. +;USA +;SFJX +; MMFM SP,A0 +; RETS +; +;DO_FRENCH +; MMTM SP,A0,A1 +; MOVK ADJPRICE,A0 ;AS MASTER PRICER. +; MOVI F1SEL,A1 ;USE FRENCH SELECTOR +; CALLA PUT_ADJ +; MMFM SP,A0,A1 +; RETS +; +;DO_GERMAN +; MMTM SP,A0,A1 +; MOVK ADJPRICE,A0 ;AS MASTER PRICER. +; MOVI G1SEL,A1 ;USE GERMAN SELECTOR +; CALLA PUT_ADJ +; +; MOVK ADJDIFF,A0 +; MOVI 1,A1 ;DIFFICULTY 1 FOR GERMANS +; CALLA PUT_ADJ +; +; MOVK ADJBUYIN,A0 +; MOVI 1,A1 ;EASY BUY-IN FOR GERMANS +; CALLA PUT_ADJ +; +; MMFM SP,A0,A1 +; RETS + +************************************************************************** +* +* LD_CTAB +* +* THIS IS CALLED TO STORE THE CSELCT VALUES FOR +* THE COIN SELECTOR STORED AS ADJPRICE. +* +************************************************************************** +LD_CTAB + mmtm sp,a0,a6,a1 + + calla GET_CSPT ;A6=CSELCT table + +;{ + .IF 0 + movk 1,a1 + move *a6(16*4),a0 + jrnn lct5 ;Normal 1 credit to start? + movk 2,a1 +lct5 movk ADJCSTRT,a0 + callr PUT_ADJ + movk 1,a1 + movk ADJCCONT,a0 + callr PUT_ADJ + + movk ADJC1,a0 ;1st one to store +lct8 move *a6+,a1 ;Get word + abs a1 + callr PUT_ADJ ;Write this one to memory + addk 1,a0 + cmpi ADJCX,a0 + jrls lct8 + + .ENDIF + +;} + + movi ADJLMULT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJCMULT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJRMULT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJXMULT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJDBVMULT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJCUNIT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJBUNIT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJMUNIT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJCSTRT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJCCONT,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJCDIV,a0 + move *a6+,a1 + calla PUT_ADJ + + movi ADJFRAC,a0 + move *a6+,a1 + calla PUT_ADJ + + PUSH A6 + MOVI ADJLTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJCTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJRTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJXTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + MOVI ADJBTOTMULT,A0 + MOVE *A6+,A1,W + CALLA PUT_ADJ + PULL A6 + + movk ADJVIRGIN,a0 ;THIS SAYS 1ST 8 UNTOUCHED. + movk 1,a1 + callr PUT_ADJ + + movk ADJ1ST6,a0 ;THIS SAYS 1ST 6 UNTOUCHED. + movk 1,a1 + callr PUT_ADJ ;DONE! + + mmfm sp,a0,a6,a1 + rets + +************************************************************************** +* +* CC_COIN +* MMTM SP,A7 +* CALLR COIN_PAG +* MOVI HSR_C,A7 +* CALLA RC_LONG ;GET THE TABLE COUNTER +* JRZ CCC_X ;ITS DOWN +* DEC A0 ;1 LESS +* CALLA WC_LONG +* CCC_X MMFM SP,A7 +* RETS +* +************************************************************************** + +************************************************************************** +* +* L_MESS +* +* A8 POINTS AT MESS_MAC FOLLOWED BY MESSAGE TEXT. +* POP ALL REGGIES LEAVING A8 POINTING AT TEXT. +* AND JUMP TO THE TEXT PROCESSOR! +* +* THE MMFM POPS THE ROUTINE TO CALL INTO A1. +* +* YOU ***MUST*** USE JSRP TO GET HERE. WE JUMP TO +* THE STRING ROUTINE WHICH WILL RETP BACK TO THE CALLER! +* +************************************************************************** +L_MESS_LOOP + addk BYTE_SIZE,a8 ;PUSH BEYOND THIS BYTE +L_MESS addk >f,a8 ;Round up word + srl 4,a8 + sll 4,a8 + + MMFM A8,A1,A6,A9,A10,A11 ;LOAD UP REGGIES FROM A8. + CLR A0 ;NEVER SLEEP! + + MOVI L_RET,A7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JUMP A1 ;JUMP TO THE ROUTINE. +L_RET MOVB *A8,A0 ;CHECK NEXT BYTE 0=DONE...1=MORE. + JRNZ L_MESS_LOOP + RETP + +************************************************************************** +* +* LM_SETUP +* +* THIS IS CALLED TO SETUP THE WORLD FOR A STRING +* OPERATION, BUT NOT PHYSICALLY MAKE THE CALL. +* +* THIS ALLOWS TWEAKING OF REGGIES BEFORE THE CALL. +* +* LM_FINIS +* +* THIS IS CALLED ONCE THE MODIFICATIONS ARE MADE! +* +************************************************************************** +LM_SETUP + MMFM A8,A1,A6,A9,A10,A11 ;LOAD UP REGGIES FROM A8. + CLR A0 ;DON'T SLEEP + RETS + +LM_FINIS + JUMP A1 ;THIS RUNS ROUTINE AND + +************************************************************************** +* +* GET_CSTR +* +* HERE WE FORM THE CREDITS STRING AND +* RETURN IT IN THE STRING BUFFER. +* WE RETURN A8 POINTING AT THIS BUFFER. +* +* WE ALSO PUT APPROPRIATE FRACTION ON THE +* END IF ADJUSTED ACCORDINGLY. +* +************************************************************************** +GET_CSTR + MOVK ADJFREPL,A0 ;ARE WE IN FREE PLAY? + CALLA GET_ADJ + JRZ NOT_FREE + + MOVI MESS_FREEP,A8 ;RETURN POINTING AT FREE PLAY MESSAGE + JRUC GET_CX + +NOT_FREE + CALLA STR_OBJ ;ALLOCATE AN OBJECT PLEASE + JRC NO_SOBJ ;NONE TO USE! + + MOVI MESS_CREDITS,A8 ;POINT AT TEXT PART + CALLA STRCAT ;BUILD THIS IN. + CALLR CRED_P + MOVE A0,A10 ;SAVE CREDITS + CALLR CAT_A0 +* +* NOW WE NEED TO SEE IF WE SHOULD ADD A FRACTION. +* + MOVK ADJFRAC,A0 + CALLA GET_ADJ ;CHECK THE ADJUSTMENT + JRZ NSFRAC ;DON'T SHOW IT! +* +* ADD ANY FRACTION WE HAVE. +* + CALLR COIN_PAG ;PUT US ON COIN PAGE + CALLR GET_CUNITS ;A0 HAS CUNITS + CALLR DEF_PAGE ;FLIP CMOS AWAY + MOVE A0,A0 ;ZERO? + JRZ NSFRAC ;THEN NO FRACTION. +* +* WE HAVE A FRACTION...WERE THE CREDITS ZERO? +* + MOVE A10,A10 ;WE SAVED EM IN A10 + JRNZ NZM ;NON ZERO MANTISSA + + MOVE A7,A8 ;WALK DOWN STRING LOOKING FOR THE "ZERO" +KILL_Z + MOVB *A8,A1 ;GET A BYTE + JRZ NZM ;COULDN'T FIND IT....GO ON. + + CMPI LET_0,A1 ;IS THIS THE ZERO? + JRZ GOT_ZERO + + ADDK BYTE_SIZE,A8 + JRUC KILL_Z + +GOT_ZERO + CLR A1 + MOVB A1,*A8 ;KILL THE ZERO + +NZM + MOVI MESS_2SPACE,A8 ;SPACE BET. MANTISSA AND DENMO + CALLA STRCAT + +NOT_ZM + CALLR CAT_A0 ;ADD A0 ONTO FRACTION + + MOVI MESS_SLASH,A8 + CALLA STRCAT ;ADD SLASH + + MOVK ADJCUNIT,A0 ;UNITS REQUIRED FOR CREDIT + CALLA GET_ADJ + CALLR CAT_A0 ;DENOMINATOR + +NSFRAC + MOVE A7,A8 ;MOVE "OBJECT" TO A8 + MOVI STRNGRAM,A7 ;POINT AT STRING RAM + CLR A0 + MOVB A0,*A7 ;STRINGRAM IS NULL + CALLA STRCAT ;COPY THE STRING OUT OF OBJECT BLOCK + MOVE A7,A8 + CALLA STR_FREE ;AND FREE UP THE OBJECT BLOCK + +GET_CX + CLRC ;RETURN OK +GET_CXX + RETS +* +* NO OBJECTS AVAILABLE TO FORM STRING +* +NO_SOBJ + MOVI MESS_NULL,A8 + SETC + JRUC GET_CXX ;RETURN BLANK STRING! + +************************************************************************** +* +* CAT_A0 +* +* A0 HAS A BINARY NUMBER. TURN INTO DECIMAL STRING +* AND CONCATONATE TO THE STRING WE'RE BUILDING IN A7. * +* +************************************************************************** +CAT_A0 + PUSH a8 + MOVE A0,A8 ;CREDIT COUNT IN A8 + CALLA HEXTOASC ;STRING + CALLA STRCAT ;NOW WE HAVE WHOLE NUMBER. + MMFM SP,A8 + RETS + +************************************************************************** +* +* ADD_PROMPT +* +* THIS IS CALLED ON THE CREDITS PAGE TO ADD A WORD OF +* WISDOM BELOW THE CREDITS MESSAGE. IT PICKS OUT THE +* CORRECT MESSAGES AND BLINKS THEM. +* +************************************************************************** +ADD_PROMPT + MOVI PROMPT_PROC,A7 + CALLA P_FORK ;START UP ANOTHER W/ SAME ID TO FLASH! + RETP + +PROMPT_PROC + MOVK ADJFREPL,A0 + CALLA GET_ADJ + JRNZ rf4 ;ALWAYS READY FOR 4 PLAYERS! + + CALLR CRED_P + JRZ PP1 + + MOVE A0,A1 ;PUT CREDITS IN A1 + MOVK ADJCSTRT,A0 ;GET AMOUNT NEEDED TO START. + CALLA GET_ADJ + CMP A0,A1 ;ARE THERE ENOUGH TO START? + JRLO PP1 ;NOPE...."INSERT COIN" +* +* WE HAVE ENOUGH TO START FOR 1....HOW ABOUT 2? +* + jrz PP2 + move a0,a2 + add a2,a2 + cmp a1,a2 + jrz RF2 + jrhi PP2 + add a0,a2 + cmp a1,a2 + jrhi RF2 + add a0,a2 + cmp a1,a2 + jrhi rf3 + + +* +* >1 = READY FOR 2 PLAYERS. PRESS START. +* +rf4 + MOVI MESS_READY_4,A1 + JRUC RED_1 +rf3 + MOVI MESS_READY_3,A1 + JRUC RED_1 +RF2 + MOVI MESS_READY_2,A1 + JRUC RED_1 + +PP1 + MOVI MESS_INS_COIN,A0 + CLR A1 + JRUC RED_2 + +PP2 + MOVI MESS_READY_1,A1 +RED_1 + MOVI MESS_PRESS_START,A0 +RED_2 + MOVE A0,*A13(PDATA),L ;HOLD MESSAGES + MOVE A1,*A13(PDATA+LONG_SIZE),L + +BLINK_LOOP + MOVE *A13(PDATA),A8,L ;FIRST MESSAGE + JSRP L_MESS + MOVE *A13(PDATA+LONG_SIZE),A8,L ;2ND MESSAGE + JRZ BL1 ;NOT HOME! + + JSRP L_MESS + +BL1 + SLEEPK 10H + + MOVE *A13(PDATA),A8,L + CALLR LM_SETUP + CLR A6 ;BLACK + JSRP LM_FINIS + +BL2 + SLEEPK 10H + JRUC BLINK_LOOP + +************************************************************************** +* +* MESSAGE SECTION +* +************************************************************************** +ROM_NAME +; .byte "NBA JAM REV 3.01 4/07/93",0 + + .byte "WRESTLEMANIA PROTO 1.00 6/28/94",0 + + .even + +FACTORY_TABLE + + .word 0 ;ADJNULL 0 + .word 1 ;ADJPRICE 1 ;MASTER PRICING + .word 1 ;ADJLMULT 2 + .word 4 ;ADJCMULT 3 + .word 1 ;ADJRMULT 4 + .word 0 ;ADJXMULT 5 + .word 0 ;ADJDBVMULT 6 ;DOLLR BILL VALIDATOR + .word 1 ;ADJCUNIT 7 + .word 0 ;ADJBUNIT 8 + .word 0 ;ADJMUNIT 9 + .word 4 ;ADJCDIV 10 + .word 1 ;ADJFRAC 11 ;NON ZERO SAYS SHOW HALF CREDITS + .word 2 ;ADJCSTRT 12 ;CREDITS REQUIRED TO START + .word 2 ;ADJCCONT 13 ;CREDITS REQUIRED TO CONTINUE + + .word 3 ;ADJDIFF 14 + + .word 0 ; 15 + .word 0 ; 16 + .word 1 ;ADJMUSIC 17 ;attract mode music = off + .word 50 ;ADJMAXC 18 ;MAXIMUM CREDITS + .word 0 ;ADJFREPL 19 ;NON-ZERO MEANS FREE PLAY + .word 1 ;ADJVIRGIN 20 ;NON-ZERO MEANS 1ST 8 OF COIN ADJUST BLOCK UNTOUCHED + .word 8 ;ADJFULLG 21 ;credits needed to purchase full game (4-16) + .word 1 ;ADJ1ST6 22 ;NON-ZERO MEANS 1ST 6 UNTOUCHED. + .word 0 ;ADJNOCPAG 23 + .word 1 ;ADJCNTR 24 ;COIN COUNTER MODE + .word 3 ;ADJSPEED 25 ;game timer speed (1-5) + .word 1 ;ADJHEADSZ 26 ;player head sizes (1-2) + .word 1 ;ADJWINMODE 27 ;(winner stays free) + .word 30 ;ADJVOLUME 28 ;sound volume (4-255) + .WORD 0 ;CUSTOM TOTALIZER + .WORD 1 ;TOTALIZER CHUTE 1 + .WORD 1 ;TOTALIZER CHUTE 2 + .WORD 1 ;TOTALIZER CHUTE 3 + .WORD 1 ;TOTALIZER CHUTE 4 + .WORD 1 ;TOTALIZER DBV +** + + .if 0 + .word 0 ;ADJ_UNUSED 0 + .word 2 ;ADJ_PRICING 1 ;MASTER PRICING + .word 1 ;ADJ_LEFT_MULT 2 + .word 1 ;ADJ_RIGHT_MULT 4 + .word 4 ;ADJ_CENTER_MULT 3 + .word 0 ;ADJ_EXTRA_MULT 5 + .word 1 ;ADJ_UNITS_CREDIT 6 + .word 0 ;ADJ_UNITS_BONUS 7 + .word 0 ;ADJ_MIN_UNITS 8 + .word 4 ;ADJCDIV 9 ;COINS PER DOLLAR + .word 1 ;SHOW FRACTIONS 10 + .word 1 ;ADJ_START_CRED 11 ;CREDITS REQUIRED TO START + .word 1 ;ADJ_CONT_CRED 12 ;CREDITS REQUIRED TO CONTINUE + .word 3 ;ADJ_DIFFICULTY 13 + .word 5000 ;ADJ_HSRESET 14 + .word 3 ;ADJ_LIVES 15 + .word 0 ;ADJ_AMODE_MUSIC 16 + .word 50 ;MAXIMUM CREDITS 17 + .word 0 ;FREE PLAY 18 + .word 1 ;NON-ZERO MEANS COIN BLOCK (1ST 8) UNTOUCHED 19 + .word 0 ;ZERO MEANS NORMAL GORE ... 1 = SOFTEN IT 20 + .word 1 ;NON-ZERO MEANS 1ST 6 UNTOUCHED. 21 + .word 0 ;NON-ZERO MEANS NO COIN-SPECIFIC MESSAGE ON COIN PAGE 21 + .word 1 ;ADJCNTR 23 ADJUST MECH COIN COUNTER + .endif + +* A0 = SLEEP +* A1 = ROUTINE +* A6 = COLOR +* A8 = STRING POINTER +* A9 = SCREEN ADDRESS +* A10 = SPACING +* A11 = FONT +* A14 = FLAGS +* + +MESS_CREDITS + .byte "CREDITS: ",0 + .even + +* NORMAL CREDITS SETUP STRING +* +MESS_CNUM + MESS_MAC RD15FONT,SPACING20,CP_CX,135,ROBO_LF,STRCNRM,0 +* +* "LOW" CREDITS SETUP STRING WHEN EXTRA ADVICE ON PRICING +* IS BEING ADDED. +* +MESS_LOWNUM + MESS_MAC RD15FONT,SPACING20,CP_CX,135,ROBO_LF,STRCNRM,0 + +MESS_FREEP + .byte "FREE PLAY",0,0 + .even + +MESS_READY_1 + MESS_MAC RD15FONT,SPACING20,CP_CX,155,ROBO_YELLOW,STRCNRM,0 + .byte "READY FOR 1 PLAYER",0,0 + .even + +MESS_READY_2 + MESS_MAC RD15FONT,SPACING20,CP_CX,155,ROBO_YELLOW,STRCNRM,0 + .byte "READY FOR 1 - 2 PLAYERS",0,0 + .even + +MESS_READY_3 + MESS_MAC RD15FONT,SPACING20,CP_CX,155,ROBO_YELLOW,STRCNRM,0 + .byte "READY FOR 1 - 3 PLAYERS",0,0 + .even + +MESS_READY_4 + MESS_MAC RD15FONT,SPACING20,CP_CX,155,ROBO_YELLOW,STRCNRM,0 + .byte "READY FOR 1 - 4 PLAYERS",0,0 + .even + +MESS_INS_COIN + MESS_MAC RD15FONT,SPACING20,CP_CX,175,ROBO_YELLOW,STRCNRM,0 + + + .byte "INSERT COINS",0,0 + + + .even + +MESS_PRESS_START + MESS_MAC RD15FONT,SPACING20,CP_CX,175,ROBO_YELLOW,STRCNRM,0 + .byte "PRESS START",0,0 + .even + + .if 0 + +************************************************************************** +* +* DUMPING SOFTWARE +* +************************************************************************** +DUMP_FS + CALLR DUMP_PAGE + CLR A0 + MOVI DUMP_PTR,A7 + CALLA WC_WORD ;SET NUMBER OF DUMPS TO ZERO + RETS + +************************************************************************** +* +* ADD_DUMP +* +* THIS IS CALLED TO RECORD A DUMP. A0 THROUGH A9 ARE +* RECORDED IN MEMORY. +* +************************************************************************** +DUMP_SIZE .equ 10*C_LONG_SIZE ;9 LONG WORDS. +DUMP_LAST .equ CMOS+>8000-DUMP_SIZE ;Let em use the whole page! +MAX_DUMP .equ 8 ;DON'T HOLD MORE THAN 12/PAGE + +ADD_DUMP + MMTM SP,B0,B1,B2 + MMTM SP,A0,A1,A7 + CALLR DUMP_PAGE ;SET CMOS PAGE CORRECTLY. + MOVE A0,B0 + MOVE A7,B2 ;SAVE THESE! + MOVE A1,B1 + + MOVI DUMP_PTR,A7 + CALLA RC_WORD ;GET THE INDICATOR OF HOW MANY. + MOVI DUMP_SIZE,A1 + MPYU A0,A1 ;THIS IS OFFSET INTO CMOS FOR THIS ENTRY! + + ADDI DUMP_DATA,A1 ;NOW A1 POINTS WHERE WE'RE PUTTING THE DATA! + CMPI DUMP_LAST,A1 ;ARE WE TOO FAR FOR ANOTHER? + JRHS NO_DUMP ;YEP....SKIP IT + + INC A0 ;1 MORE OUT THERE! + CALLA WC_WORD ;CHALK IT! + + MOVE A1,A7 ;THIS IS POINTER TO STORE DATA. + MOVE B0,A0 ;THIS IS A0 + CALLA WC_LONGI + MOVE B1,A0 ;THIS IS A1 + CALLA WC_LONGI + MOVE A2,A0 ;THIS IS A2 + CALLA WC_LONGI + MOVE A3,A0 ;THIS IS A3 + CALLA WC_LONGI + MOVE A4,A0 ;THIS IS A4 + CALLA WC_LONGI + MOVE A5,A0 ;THIS IS A5 + CALLA WC_LONGI + MOVE A6,A0 ;THIS IS A6 + CALLA WC_LONGI + MOVE B2,A0 ;THIS IS A7 + CALLA WC_LONGI + MOVE A8,A0 ;THIS IS A8 + CALLA WC_LONGI + MOVE A9,A0 ;THIS IS A9 + CALLA WC_LONGI +NO_DUMP + MMFM SP,A0,A1,A7 + MMFM SP,B0,B1,B2 + RETS + +DUMP_PAGE + PUSH a1 + MOVI DUMP_SELECT,A1 ;THIS IS DUMP PAGE + CALLA SET_PAGE ;SET IT PLEASE + MMFM SP,A1 + RETS + +DISPDUMP + CALLR DUMP_PAGE + MOVI DUMP_PTR,A7 + CALLA RC_WORD ;GET THE INDICATOR OF HOW MANY. + JRZ NOTHIN_TO_DUMP + + CLR A9 ;THIS IS CURRENT ONE + MOVE A0,A8 ;THIS IS THE LAST ONE TO DO + +DO_ANOTHER_DPAGE + CALLA CLR_SCRN ;CLEAR SCREEN + CALLR DUMP_PAGE + movk 20,a10 ;This is y coordiante of current one! + MOVI MAX_DUMP,A11 ;THIS IS MAX NUMBER PER PAGE. + +DO_ANOTHER_DUMP + JSRP DO_DUMP + addk 30,a10 ;Kick y up + INC A9 ;KICK TO NEXT DUMP + CMP A8,A9 ;UNTIL THEY'RE ALL DONE! + JRHS DUMP_DONE ;WE'RE NOT ALL DONE YET! + + DSJS A11,DO_ANOTHER_DUMP ;NOT FOR THIS PAGE EITHER! + + JSRP WAIT_MUT ;WATCH FOR STICKS! + JRUC DO_ANOTHER_DPAGE + + .endif + +************************************************************************** +* +* WAIT_MUT +* +* THIS IS LIKE "WAIT_BUT"....WAIT FOR ANY BUTTON EXCEPT +* THAT IT WILL CLEAR OUT THE DUMPS IF BOTH STICKS ARE PUSHED +* DOWN. +* +************************************************************************** +WAIT_MUT + CALLA FORM_SWS ;1ST STATE DOESN'T COUNT +* +* RETURN CURRENT STATE IN A0..PREVIOUS STATE IN A1. +* +WB1 + SLEEPK 1 + + CALLA FORM_SWS + MOVE A0,A2 + ANDI 2002H,A2 + CMPI 2002H,A2 + JRNZ WB2 ;NOT "CLEAR" + +; .REF GETSPEAK +; CALLA GETSPEAK + + +; CALLR DUMP_FS ;CLEAR OUT THE DUMPS! +; CALLR CLR_DUMP_AUD + JRUC WB1 + +getcoin + movi coin_snd,a0 + calla triple_sound + rets + + +WB2 NOT A1 ;LAST = 0 AND NOW = 1 MEANS EDGE! + AND A1,A0 ;1'S WHERE WE HAVE POSITIVE EDGE. + ANDI BUTTONS,A0 ;IS IT A BUTTON? + JRZ WB1 + +;DO NEW SOUND CALL HERE + + movi beep2_snd,a0 + calla triple_sound + RETP + + +DUMP_DONE + RETP ;AND RETURN TO CALLER! + +NOTHIN_TO_DUMP + CALLA CLR_SCRN ;PRINT SOMETHING PLEASE + MOVI MESS_NODUMP,A8 + JSRP L_MESS + RETP + +************************************************************************** +* DO_DUMP +* A9=DUMP NUMBER TO DO +* A10=Y POSITION. + + .if 0 +DO_DUMP + MMTM A12,A8,A9,A10,A11 + + MOVI DUMP_SIZE,A7 + MPYU A9,A7 ;THIS IS OFFSET INTO CMOS FOR THIS ENTRY! + + ADDI DUMP_DATA,A7 ;NOW A1 POINTS WHERE WE'RE PUTTING THE DATA! +* +* Y IS IN A10 +* + MOVE A10,A3 ;Y IN A3 + MOVK 30,A2 ;STORE X IN A2 + MOVK 10,A5 ;NUMBER OF WORDS TO DUMP +NEXT_ELE + CALLA RC_LONGI ;GET A WORD + MOVE A0,A4 ;HEX IN A4 + + MOVE A7,*A13(PDATA),L + MOVE A2,*A13(PDATA+LONG_SIZE),L + MOVE A3,*A13(PDATA+(2*LONG_SIZE)),L + MOVE A5,*A13(PDATA+(3*LONG_SIZE)),L + + JSRP WRITE_HEX ;WRITE IT OUT.....A0 = DATA +* A10 = Y +* A11 = X + MOVE *A13(PDATA),A7,L + MOVE *A13(PDATA+LONG_SIZE),A2,L + MOVE *A13(PDATA+(2*LONG_SIZE)),A3,L + MOVE *A13(PDATA+(3*LONG_SIZE)),A5,L + + ADDI 48H,A2 + + CMPI 6,A5 ;WHEN WE'RE DOWN TO 4 SKIP TO NEXT LINE + JRNZ NO_SKIP_NOW + + ADDK 12,A3 ;PUSH TO 2ND LINE + MOVI 33,A2 ;RE-MARGIN OVER. (30) + +NO_SKIP_NOW + DSJ A5,NEXT_ELE + + MMFM A12,A8,A9,A10,A11 + RETP + + .endif + +************************************************************************** +* +* WRITE_HEX +* +* A4 = DATA +* A3 = Y +* A2 = X +* +************************************************************************** +WRITE_HEX + MOVI MESS_DUMP,A8 + CALLR LM_SETUP ;SETUP FOR A DUMP! + MOVE A3,A9 ;MOVE Y DOWN + SLL 16,A9 ;SHIFT Y INTO PLACE + ADD A2,A9 ;ADD IN X + + MOVE A4,A8 + CLR A3 ;NO COMMAS! + CALLR HTOHXASC ;CONVERT PLEASE! + JSRP LM_FINIS + RETP + +************************************************************************** +* HTOHXASC - CONVERTS A 32 BIT HEX # TO AN ASCII STRING TERMINATED BY 0 +* A3=NON ZERO IF COMMAS ARE TO BE ADDED! +* A8=HEX # +* Rets: +* A8=PTR TO THE STRING + +HTOHXASC + MMTM SP,A1,A2,A9 + CLR A1 + CLR A2 ;COMMA COUNT + MOVE A1,-*SP ;HERE'S THE NULL TERMINATOR + MOVK 16,A1 ;DIVISOR FOR HEX + MOVE A8,A9 +HEXTASC2 + CLR A8 + DIVU A1,A8 + ADDI '0',A9 ;MAKE THE REMAINDER ASCII + CMPI '9',A9 ;IS IT IN A-F RANGE? + JRLS HHH1 + ADDI 7,A9 ;MAKE ALPHA! +HHH1 + MOVE A9,-*SP ;SAVE HERE + MOVE A8,A9 + JRZ HEXTASC3 ;BR = DONE! + INC A2 + CMPI 3,A2 ;COMMA CHECK + JRLO HEXTASC2 ;BR = NO COMMA +* +* SEE IF WE'RE DOING COMMAS +* + MOVE A3,A3 ;COMMAS? + JRZ HEXTASC2 ;NOPE....IGNORE! + + MOVI ',',A2 + MOVE A2,-*SP ;STUFF A COMMA + CLR A2 + JRUC HEXTASC2 +HEXTASC3 + MOVI STRNGRAM,A1 ;STORE HERE FOR BLOW OUT + MOVE A1,A8 + +HEXTASC4 + MOVE *SP+,A9 + MOVB A9,*A1 + ADDK 8,A1 + MOVE A9,A9 + JRNZ HEXTASC4 + MMFM SP,A1,A2,A9 + RETS + +************************************************************************** +* STRCAT - THIS IS CALLED TO CONCATONATE 2 STRINGS. +* A7 <--- +* THAT IS.......CONCATONATE A8 ONTO THE END OF A7. + +STRCAT + MMTM SP,A7,A0,A8 +STRC2 + MOVB *A7,A0 ;WALK DOWN A7 TO ITS ZERO. + JRZ STRC1 ;WE'RE THERE! + + ADDK BYTE_SIZE,A7 ;KICK TO NEXT BYTE + JRUC STRC2 +* +* NOW A7 POINTS AT ITS ZERO. +* +STRC1 + MOVB *A8,A0 ;GET A BYTE FROM 2ND STRING + MOVB A0,*A7 ;ADD THIS TO 1ST STRING + ADDK BYTE_SIZE,A7 + ADDK BYTE_SIZE,A8 + MOVE A0,A0 ;DID WE JUST MOVE TERMINATOR? + JRNZ STRC1 ;NOPE...MOVE ANOTHER + + MMFM SP,A7,A0,A8 + RETS + +MESS_DUMP + MESS_MAC RD7FONT,SPACING07,23,227,ROBO_WHITE,STRLNRM,0 + +MESS_NODUMP + MESS_MAC RD15FONT,SPACING20,200,128,ROBO_ORANGE,STRCNRM,0 + .byte "NOTHING HERE....PRESS ADVANCE!",0,0 + .even + +MESS_SLASH + .byte "/",0 + .even + +MESS_2SPACE .byte " " +MESS_NULL .byte 0 + .even + +SETUP_1_OF_3 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_13,ROBO_LASER,STRCNRM,0 +SETUP_2_OF_3 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_23,ROBO_LASER,STRCNRM,0 +SETUP_3_OF_3 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_33,ROBO_LASER,STRCNRM,0 + +SETUP_1_OF_2 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_12,ROBO_LASER,STRCNRM,0 + +SETUP_2_OF_2 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 + +SETUP_1_OF_1 + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_11,ROBO_LASER,STRCNRM,0 + +dollar_mes + JAM_STR ogmd10_ascii,5,0,200,53,SGMD8YEL,print_string_C2 + .byte "THIS GAME ACCEPTS DOLLAR BILLS",0,0 + .even + +CPYR_MES + JAM_STR sgmd8_ascii,5,0,200,240,SGMD8YEL,print_string_C2 + .byte " COPYRIGHT 1993 MIDWAY MANUFACTURING COMPANY",0,0 + .even + + MESS_MAC RD7FONT,SPACING07,CP_CX,240,ROBO_WHITE,STRCNRM,0 + .byte " COPYRIGHT 1993 MIDWAY MANUFACTURING COMPANY",0,0 + .even + +;MEN_MES +; MESS_MAC RD7FONT,SPACING07,CP_CX+6,20,ROBO_WHITE,STRCNRM,0 +; .byte "LIVES AWARDED AT START",0,0 +; .even +;MEN_MES2 +; MESS_MAC RD7FONT,SPACING07,CP_CX+6,30,ROBO_WHITE,STRCNRM,0 +; .byte "LIVES AWARDED FOR A CONTINUE",0,0 +; .even + + + + + + .end + \ No newline at end of file diff --git a/BACKUP/AUDIT.EQU b/BACKUP/AUDIT.EQU new file mode 100644 index 0000000..356b93a --- /dev/null +++ b/BACKUP/AUDIT.EQU @@ -0,0 +1,179 @@ +* +* AUDITS +* +* AUDITS ARE HANDLED BY AUDITS NUMBER OFF OF THE BASE +* OF THE AUDIT REGION +* +* IF "CHUTES" VALUE IS CHANGED....EXTRA VALUES MUST +* BE PUT IN THIS TABLE. (AND ADJUSTMENT TABLE OF COURSE) +* + +AUDNULL equ 0 +AUDLCOIN equ 1 ;TOTAL COINS IN LEFT CHUTE +AUDCCOIN equ 2 ;Center +AUDRCOIN equ 3 ;Right +AUDXCOIN equ 4 ;4TH CHUTE +AUD_DBV EQU 5 ;BILL VALIDATOR +AUDSERV equ 6 ;SERVICE CREDITS +AUDPAIDC equ 13 + +* +FRST_C equ AUDLCOIN ;FOR CLEARING COINS +LAST_C equ AUDPAIDC +* + +AUD_TOTSTARTS equ 14 ;total starts +AUD_PRESTARTS equ 15 ;attract mode starts + +AUD1STRT equ 16 ;player 1 starts +AUD2STRT equ 17 ;player 2 starts +AUD1CONT equ 18 ;player 1 continues +AUD2CONT equ 19 ;player 2 continues + +AUD1TIME equ 20 ;5 SECOND CHUNKS. (700 YEARS WORTH) (unused?) +AUD2TIME equ 21 ;5 SECOND CHUNKS. (unused?) + +AUDAUTO equ 22 ;AUTO CYCLE PASSES +AUDSTAT equ 23 ;CMOS GAME STATE +AUDTRAP equ 24 ;UNUSED TRAP INSTRUCTION (unused) +AUDSURV equ 25 ;SURVIVED LOCKUPS (unused) +AUDBONE equ 26 ;GAMES NOT FINISHED +AUD_LOCKUP equ 27 ;watchdog lockups +AUD_LOCKUP2 equ 28 ;main loop lockups + +AUD_UPTIME equ 29 ;total up time +AUD_PLTIME equ 30 ;total play time +AUD_1PLAYTIME equ 31 ;time spent in 1p mode ( REAL time, not ) +AUD_2PLAYTIME equ 32 ;time spent in 2p mode ( game clock time ) + +AUD_2PBTIME equ 33 ;total time of completed HUM v HUM battles +AUD_CPUWINTIME equ 34 ;total time of CPU wins +AUD_CPULOSETIME equ 35 ;total time of CPU losses + +AUD_VSCPUS equ 36 ;battles vs cpu started +AUD_VSCPUF equ 37 ;battles vs cpu finished +AUD_VSHUMS equ 38 ;battles vs human started +AUD_VSHUMF equ 39 ;battles vs human finished + +AUD_FASTCDH equ 40 ;fastest computer defeat of human (REAL time) +AUD_FASTHDC equ 41 ;fastest human defeat of computer +AUD_FASTHDH equ 42 ;fastest human defeat of human + +AUD_CPUWIN equ 43 ;battles vs cpu won by cpu + +AUD_CONTOFF equ 44 ;total continues offered (1p mode only?) +AUD_CONTTAKN equ 45 ;total continues taken (1p mode only?) + +AUD_LSCORE equ 46 ;last [hscore,winstreak] entered + +AUD_SNDERR1 equ 47 ;IRQ error +AUD_SNDERR2 equ 48 ;bad checksum +AUD_SNDERR3 equ 49 ;RAM test failed +AUD_SNDERR4 equ 50 ;SDAV error + +AUD_BHART equ AUD_SNDERR4+1 ;human uses of the wrestlers +AUD_RRAMO equ AUD_BHART+1 +AUD_UNDER equ AUD_BHART+2 +AUD_YOKO equ AUD_BHART+3 +AUD_SMICH equ AUD_BHART+4 +AUD_BBBIG equ AUD_BHART+5 +AUD_DCLOW equ AUD_BHART+6 +AUD_X equ AUD_BHART+7 ;hole where adam bomb used to be... +AUD_LLUGE equ AUD_BHART+8 + +AUD_BHARTC equ AUD_LLUGE+1 ;computer uses of the wrestlers +AUD_RRAMOC equ AUD_BHARTC+1 +AUD_UNDERC equ AUD_BHARTC+2 +AUD_YOKOC equ AUD_BHARTC+3 +AUD_SMICHC equ AUD_BHARTC+4 +AUD_BBBIGC equ AUD_BHARTC+5 +AUD_DCLOWC equ AUD_BHARTC+6 +AUD_XC equ AUD_BHARTC+7 +AUD_LLUGEC equ AUD_BHARTC+8 + +AUD_BHARTHW equ AUD_LLUGEC+1 ;wins per wrestler (human use) +AUD_RRAMOHW equ AUD_BHARTHW+1 +AUD_UNDERHW equ AUD_BHARTHW+2 +AUD_YOKOHW equ AUD_BHARTHW+3 +AUD_SMICHHW equ AUD_BHARTHW+4 +AUD_BBBIGHW equ AUD_BHARTHW+5 +AUD_DCLOWHW equ AUD_BHARTHW+6 +AUD_XHW equ AUD_BHARTHW+7 +AUD_LLUGEHW equ AUD_BHARTHW+8 + +AUD_BHARTCW equ AUD_LLUGEHW+1 ;wins per wrestler (computer use) +AUD_RRAMOCW equ AUD_BHARTCW+1 +AUD_UNDERCW equ AUD_BHARTCW+2 +AUD_YOKOCW equ AUD_BHARTCW+3 +AUD_SMICHCW equ AUD_BHARTCW+4 +AUD_BBBIGCW equ AUD_BHARTCW+5 +AUD_DCLOWCW equ AUD_BHARTCW+6 +AUD_XCW equ AUD_BHARTCW+7 +AUD_LLUGECW equ AUD_BHARTCW+8 +AUD_WINSTREAK EQU AUD_LLUGECW+1 +AUD_PINSPEED EQU AUD_WINSTREAK+1 +AUD_BEATEN EQU AUD_PINSPEED+1 +AUD_COMBO EQU AUD_BEATEN+1 +* +LAST_AUDIT equ AUD_COMBO +* + +* +FRSTGAUD equ AUD1STRT +LASTGAUD equ LAST_AUDIT +* + + + +* +* ADJUSTMENTS ARE ALL LONG WORDS REFERENCED BY ADJUSTMENT +* NUMBER. +* +ADJNULL equ 0 +ADJPRICE equ 1 ;MASTER PRICING + +ADJLMULT equ 2 +ADJC1 equ ADJLMULT ;FIRST COIN TABLE ADJUSTMENT +ADJCMULT equ 3 +ADJRMULT equ 4 +ADJXMULT equ 5 +ADJDBVMULT equ 6 +ADJCUNIT equ 7 +ADJBUNIT equ 8 +ADJMUNIT equ 9 +ADJCDIV equ 10 +ADJFRAC equ 11 ;NON ZERO SAYS SHOW HALF CREDITS +ADJCSTRT equ 12 ;CREDITS REQUIRED TO START +ADJCCONT equ 13 ;CREDITS REQUIRED TO CONTINUE +ADJCX equ ADJCCONT ;LAST COIN TABLE ADJUSTMENT + +ADJDIFF equ 14 +ADJHSRES equ 15 +ADJLIVES equ 16 +ADJMUSIC equ 17 +ADJMAXC equ 18 ;MAXIMUM CREDITS +ADJFREPL equ 19 ;NON-ZERO MEANS FREE PLAY +ADJVIRGIN equ 20 ;NON-ZERO MEANS 1ST 8 OF COIN ADJUST BLOCK UNTOUCHED +**********************************;ADJVIRGIN IS MAINTAINED...BUT NOT USED +ADJFULLG equ 21 ;credits needed to purchase full game (4-16) +ADJ1ST6 equ 22 ;NON-ZERO MEANS 1ST 6 UNTOUCHED. +ADJNOCPAG equ 23 +ADJCNTR equ 24 ;COIN COUNTER MODE +ADJSPEED equ 25 ;game timer speed (1-5) +ADJHEADSZ equ 26 ;player head sizes (1-5) +ADJWINMODE equ 27 ;4 player winner mode (1-3) +ADJCOMPASS equ 28 ;computer assistance (0-1) +ADJVOLUME equ 28 ;sound volume (0-255) +ADJTOTALIZER EQU 29 +ADJLTOTMULT EQU 30 +ADJCTOTMULT EQU 31 +ADJRTOTMULT EQU 32 +ADJXTOTMULT EQU 33 +ADJBTOTMULT EQU 34 +LAST_ADJUST equ 34 + +****************************************************************************** +;end + + + \ No newline at end of file diff --git a/BACKUP/BACKUP.BAT b/BACKUP/BACKUP.BAT new file mode 100644 index 0000000..6f6cc5f --- /dev/null +++ b/BACKUP/BACKUP.BAT @@ -0,0 +1,16 @@ +@xcopy /A *.asm \modified +@xcopy /A *.equ \modified +@xcopy /A *.bat \modified +@move \backup\back8.zip \backup\back9.zip +@move \backup\back7.zip \backup\back8.zip +@move \backup\back6.zip \backup\back7.zip +@move \backup\back5.zip \backup\back6.zip +@move \backup\back4.zip \backup\back5.zip +@move \backup\back3.zip \backup\back4.zip +@move \backup\back2.zip \backup\back3.zip +@move \backup\back1.zip \backup\back2.zip +@del mc* +@del mk*.bat +@del *.axx +pkzip -i -x*.lst -x*.out -x*.obj -x*.tbl -x*.glo \backup\back1.zip \video\wwf\*.* + \ No newline at end of file diff --git a/BACKUP/BAD_IMGS.ASM b/BACKUP/BAD_IMGS.ASM new file mode 100644 index 0000000..216dcbe --- /dev/null +++ b/BACKUP/BAD_IMGS.ASM @@ -0,0 +1,22 @@ +These frames are used in at least one .ASM file, but aren't being loaded. +We outta maybe fix this or something. + + +B4YR3A02 yokseq2.asm +B4YR3A06 yokseq2.asm +B4YR3A08 yokseq2.asm + +D3GU4A01 rzrseq3.asm + +L2ST2C01 lexseq1.asm + +S2CT2A09 shnseq2.asm +S2CT2A10 shnseq2.asm +S2CT2A11 shnseq2.asm +S2CT2A12 shnseq2.asm + +U3DD3A01 undseq3.asm +U4BF3A04 lexseq3.asm + +Y2ST2Z01 yokseq1.asm + \ No newline at end of file diff --git a/BACKUP/BAKGND.ASM b/BACKUP/BAKGND.ASM new file mode 100644 index 0000000..c7bfb67 --- /dev/null +++ b/BACKUP/BAKGND.ASM @@ -0,0 +1,839 @@ +************************************************************** +* +* Software: Todd Allen, Mark Turmell, Shawn Liptak +* Initiated: 1988? +* +* Modified: Shawn Liptak, 9/16/91 -Minor improvements (Total carnage) +* Shawn Liptak, 11/15/91 -CREATE0 +* Shawn Liptak, 2/10/92 -Started basketball +* Shawn Liptak, 5/4/92 -Works with DMA2 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 9/23/92 12:26 +************************************************************** + .file "bakgnd.asm" + .title "background handlers" + .option b,d,l + .mnolist + + .include "mproc.equ" + .include "display.equ" + .include "gsp.equ" + .include "sys.equ" + .include "game.equ" + .include "macros.h" + + .include "fontsimg.glo" + .include "bgndtbl.glo" ;background equates + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref pal_getf + + .REF DO_FLASH,DO_JASON_CROWD,DO_TONY_CROWD + .REF DO_VOGEL_CROWD + +****************************************************************************** + + + +;defs + + + +;uninitialized ram definitions + + + .bss BGNDPALTBL ,32 + .bss MOD_POS ,32 + BSSX BAKBITS ,10000 + + BSSX BAKMODS ,32 + + + .text + +******************************** + +*BACKGROUND UPDATER EQUATES +BLSTSTRT .EQU >8000 +BLSTEND .EQU >8001 + +************* LOCAL CONSTANTS FOR UPD ************** +DISP_PAD .SET [20h,20h] ;Y:X +DISP_PAD2 .SET [80h,20h] ;Y:X +WIDEST_BLOCK .SET 250 + +* MUST KEEP THE SIZE OF THESE STRUCTURES A MULTIPLE OF 16 +;MAP_ZFLAGSPAL .SET 0 +MAP_PAL .SET 0 ;SIZE 4 - PALETTE SELECT +MAP_FLAGS .SET 4 ;SIZE 4 - BIT 0 HFLIP, BIT 1 YFLIP +MAP_Z .SET 8 ;SIZE 8 +MAP_X .SET 16 ;SIZE 16 +MAP_Y .SET 32 ;SIZE 16 +MAP_HDR .SET 48 ;SIZE 16 - OFFSET IN LONG WORDS FROM BLOCK_HDR_TBL + ; BITS 12-15 ARE BITS 4-7 OF PAL + ; MAP_HDR SET TO >FFFF IF BLOCK IS NOT ALLOCATED +BLOCK_SIZE .SET 64 ;Uses shifts! + +* Offsets for a BLOCK HDR structure +;MAP_SIZE .set 0 +MAP_W .set 0 ;Word +MAP_H .set 16 ;Word +MAP_DATAPTR .set 32 ;Long +MAP_CTRL .equ 64 ;DMA ctrl word +;BLOCK_HDR_SIZE .set 80 + + +************************************************************************ +* SCAN A MODULE LIST TO FIND OUT WHICH MODULE CONTAINS BLOCKS +* WHICH NEED TO BE CHECKED +* A0=XPOS FOR WHICH HEIGHT OF BACKGROUND NEEDS TO BE DETERMINED +*RETURNS A0 - +* MINIMUM YPOS (MAX HEIGHT) OF PRIMARY BACKGROUND WHICH OVERLAPS +* SPECIFIED XPOS +* A0 = 0 IF XPOS IS INVALID + +BGNDHGHT + MMTM SP,A1,A2,A3,A4,A7,A8,A9,A10,A11 + MOVE A0,A1 + + CLR A10 ;INIT PACKED Y:X STARTING POSITION + CLR A11 + + MOVE @BAKMODS,A0,L ;* A0- PTR TO THE MODULE LIST +MODLP0 MOVE *A0+,A8,L ;LOAD MODULE PTR + jrz MODX0 ;End? + MOVE *A8+,A9,L ;LOAD PACKED Y:X SIZE + + MOVE *A0+,A3 ;X START POSITION + ZEXT A3 + CMPI BLSTSTRT,A3 + JRNZ NOTLSTSTRTX + MOVE A11,A3 + SUBXY A9,A3 + JRUC GOTNEWX0 +NOTLSTSTRTX + CMPI BLSTEND,A3 + JRNZ GOTNEWX0 + MOVE A11,A3 +GOTNEWX0 + MOVE *A0+,A4 ;Y START POSITION + ZEXT A4 + CMPI BLSTSTRT,A4 + JRNZ NOTLSTSTRTY + MOVE A11,A4 + SUBXY A9,A4 + JRUC GOTNEWY0 +NOTLSTSTRTY + CMPI BLSTEND,A4 + JRNZ NOTLSTENDY + MOVE A11,A4 + JRUC GOTNEWY0 +NOTLSTENDY + SLL 16,A4 +GOTNEWY0 + MOVY A4,A3 + MOVE A3,A10 + +; CMPXY A10,A1 +; JRV MODX0 ;JUMP TO EXIT LOOP IF MOD START X > X SOUGHT + + ;IF MOD END X < X SOUGHT KEEP SEARCHING MOD LIST + MOVE A10,A11 + ADDXY A9,A11 ;A11 IS MODULE Y:X END + + MOVE *A8+,A9 ;LOAD # OF BLOCKS + ADD A9,A7 ;A7 IS NEW BAKBITS PTR + CMPXY A11,A1 + JRNV MODLP0 ;SKIP IF AX < BX + + MOVE A10,A0 + SRL 16,A0 + JRUC GOTHGHT + +MODX0 CLR A0 +GOTHGHT MMFM SP,A1,A2,A3,A4,A7,A8,A9,A10,A11 + RETS + + +******************************** +* PARMS +* A0=XPos of block +* A1=*Start of bkgnd block table +* A2=*End of block table +* >A0=ADDRESS OF FIRST BLOCK WITH X COORDINATE >= PARM +* IF NEW X IS HIGHEST RETURNS NEXT EMPTY BLOCK +* IF NO BLOCKS WITH >= X, RETURN 0 + +* A1 = BLOCK TABLE BASE + OFFSET TO X VAL +* A14 - THRESHHOLD FOR SWITCHING FROM BINARY TO LINEAR SEARCH +* A9 = LOW # -- # GREATEST BACKGROUND BLOCK +* A10 = MID # -- (HIGH + LOW) >> 1 +* A2 = HIGH # -- # OF LOWEST BACKGROUND BLOCK + + SUBRP bgnd_get1stx + + PUSH a1,a2,a8,a9,a10 + + clr a9 ;set low = 0 + sub a1,a2 + srl 6,a2 ;div by size of block (64) + addi MAP_X,a1 ;block tbl base + x offset + movk 5,a14 ;threshhold for switching from binary to linear search + +#lp move a2,a10 + sub a9,a10 ;if (high - low) <= 5 finish with linear search + cmp a14,a10 + jrle lsrch + + srl 1,a10 ;/2 + add a9,a10 + + move a10,a8 ;Get mid X + sll 6,a8 ;multiply by block size (64) + add a1,a8 + move *a8,a8 ;get x coor of the block + cmp a0,a8 + jrlt blow + + move a10,a2 ;high = mid + jruc #lp +blow move a10,a9 ;low = mid + jruc #lp + +lsrch + ;* FINISH WITH A LINEAR SEARCH OF BLOCK TABLE FROM LOW TO HIGH + ;* ENDING WITH FIRST BLOCK X COOR THAT IS >= A0 + ;* A0 = X VAL BEING SEARCHED FOR + ;* A9 = LOW ADDRESS -- PTS TO X OFFSET OF BLOCK + ;* A2 = HIGH ADDRESS -- PTS TO X OFFSET OF BLOCK + + SLL 6,A9 ;LOW BLOCK # TO LOW BLOCK OFFSET + SLL 6,A2 ;HIGH BLOCK # TO HIGH BLOCK OFFSET + ADD A1,A9 + ADD A1,A2 + MOVI BLOCK_SIZE,A8 +#linlp + MOVE *A9,A10 ;X COOR + CMP A0,A10 + JRGE GOTB ;IF LOW->X >= A0 GOTO FOUND + ADD A8,A9 + CMP A2,A9 + jrle #linlp + clr a0 ;block not found, return 0 + jruc #x + +GOTB + move a9,a0 ;return a ptr to the block + subi MAP_X,a0 + +#x + PULL a1,a2,a8,a9,a10 + rets + + +*********************** BAK END ******************************* +;* SCAN A MODULE LIST AND RETURN THE PACKED Y:X END POINT +;PARMS + ;A0 - MODULE LIST +;RETURNS + ;A0 - PACKED Y:X END OF WAVE +;BAK_END +; MMTM SP,A3,A4,A8,A9,A10,A11 +; +; CLR A10 ;CLR PACKED Y:X STARTING POSITION +; CLR A11 +; +; +;WEMODLP +; MOVE *A0+,A8,L ;LOAD MODULE PTR +; JRZ WEMODX ;END OF THE MODULE TBL +; MOVE *A8+,A9,L ;LOAD PACKED Y:X SIZE +; +; MOVE *A0+,A3,W ;X START POSITION +; ZEXT A3,W +; CMPI BLSTSTRT,A3 +; JRNZ WENOTLASTSTARTX +; MOVE A11,A3 +; SUBXY A9,A3 +; JRUC WEGOTNEWX +;WENOTLASTSTARTX +; CMPI BLSTEND,A3 +; JRNZ WEGOTNEWX +; MOVE A11,A3 +;WEGOTNEWX +; MOVE *A0+,A4,W ;Y START POSITION +; ZEXT A4,W +; CMPI BLSTSTRT,A4 +; JRNZ WENOTLASTSTARTY +; MOVE A11,A4 +; SUBXY A9,A4 +; JRUC WEGOTNEWY +;WENOTLASTSTARTY +; CMPI BLSTEND,A4 +; JRNZ WENOTLASTENDY +; MOVE A11,A4 +; JRUC WEGOTNEWY +;WENOTLASTENDY +; SLL 16,A4 +;WEGOTNEWY +; MOVY A4,A3 +; MOVE A3,A10 +; +; MOVE A10,A11 +; ADDXY A9,A11 ;A11 IS MODULE Y:X END +; +; JRUC WEMODLP +; +;WEMODX +; MOVE A11,A0 +; MMFM SP,A3,A4,A8,A9,A10,A11 +; RETS + + +*********************** BAK START ******************************* +* SCAN A MODULE LIST AND RETURN THE PACKED Y:X STARTING POINT +*PARMS +*A0 - MODULE LIST +*RETURNS +*A0 - PACKED Y:X START OF WAVE +;BAK_STRT +; MMTM SP,A3,A4,A8,A9,A11 +; +; CLR A11 +; MOVE *A0+,A8,L ;LOAD MODULE PTR +; JRZ WSMODX ;END OF THE MODULE TBL +; MOVE *A8+,A9,L ;LOAD PACKED Y:X SIZE +; +; MOVE *A0+,A3,W ;X START POSITION +; ZEXT A3,W +; CMPI BLSTSTRT,A3 +; JRNZ WSNOTLASTSTARTX +; MOVE A11,A3 +; SUBXY A9,A3 +; JRUC WSGOTNEWX +;WSNOTLASTSTARTX +; CMPI BLSTEND,A3 +; JRNZ WSGOTNEWX +; MOVE A11,A3 +;WSGOTNEWX +; MOVE *A0+,A4,W ;Y START POSITION +; ZEXT A4,W +; CMPI BLSTSTRT,A4 +; JRNZ WSNOTLASTSTARTY +; MOVE A11,A4 +; SUBXY A9,A4 +; JRUC WSGOTNEWY +;WSNOTLASTSTARTY +; CMPI BLSTEND,A4 +; JRNZ WSNOTLASTENDY +; MOVE A11,A4 +; JRUC WSGOTNEWY +;WSNOTLASTENDY +; SLL 16,A4 +;WSGOTNEWY +; MOVY A4,A3 +; MOVE A3,A0 +; +;WSMODX +; MMFM SP,A3,A4,A8,A9,A11 +; RETS + + +**************************************************************** +* Update disp list for main bakgnd +* Deletes all display objects which are not on the screen +* Insures all background blocks on screen are on the disp list +* Input: WORLDTL, SCRNTL, SCRNLR, BAKLST, BAKBITS, BAKMODS +* Trashes scratch + + SUBR BGND_UD1 + + PUSH a2,a3,a4,a5,a6,a7,a8,a9,a10,a11 + PUSH b2 + + move @WORLDTL,a3,L + move a3,a4 + move @SCRNTL,a0,L + addxy a0,a3 + move @SCRNLR,a0,L + addxy a0,a4 + + movi DISP_PAD,a0 ;XY border pad + + subxy a0,a3 ;A3=DISP_TL + addxy a0,a4 ;A4=DISP_LR + movi BAKLST,a8 ;A8=*bakgnd list + callr bgnd_delnonvis + + move @BAKMODS,a0,L ;*Module list + movi BAKBITS,a7 ;Bit table for block being on disp list + movi INSBOBJ,b2 ;*Insert routine + callr bgnd_scanmod + + PULL b2 + PULL a2,a3,a4,a5,a6,a7,a8,a9,a10,a11 + rets + + +#******************************* +* Scan a module list to find out which modules contain blocks +* which need to be checked for addition to the display list. +* A0=*Module list +* A3=DISP_TL +* A4=DISP_LR +* A7=*Bakbits table +* B2=*Insert routine +* Trashes A0-A2,A5,A6,A8-A11,A14,B0-B1 + + SUBRP bgnd_scanmod + + move a7,a6 ;a6 will point to bakbits after mod + jruc #next + +#lp + move *a0+,a9,L ;Y:X start + + move *a8+,a11,L ;Mod Y:X size + addxy a9,a11 ;Mod Y:X end + + move *a8+,a2 ;# of blocks + add a2,a6 ;A6=*Next bakbits + + cmpxy a3,a11 + jrxlt #next ;Mod x end < tl x ? + jrylt #next ;Mod y end < tl y ? + + cmpxy a9,a4 + jrxlt #next ;Mod x start > br x ? + jrylt #next ;Mod y start > br y ? + + sll 6,a2 ;*64 (each block is 4 words) + move *a8+,a1,L ;A1=*block table + add a1,a2 ;A2=*block table end + + move *a8+,a5,L ;A5=*hdrs + move *a8+,a10,L ;A10=*PAL table + subxy a9,a3 + subxy a9,a4 + callr bgnd_addmod + addxy a9,a3 + addxy a9,a4 + +#next move a6,a7 + move *a0+,a8,L ;* module + jrnz #lp ;!End? + + +#x rets + + +#******************************* +* This function adds all module blocks in the given range of module +* relative coors to the display list. +* The boundries are included in the group to add. +* +* A1=*Bakgnd block table +* A2=*Bakgnd block table end +* A3=DISP_TL relative to the module start pos +* A4=DISP_LR ^ +* A5=*Bakgnd hdr table +* A7=*Bakbits table +* A9=Module start position Y:X +* A10=*Palette table for new block +* B2=*Bakground insert routine primary|secondary +* +* Trashes A1,A8,A14,B0-B1 + + SUBRP bgnd_addmod + + PUSH a0,a6,a7 + + movx a3,a0 ;find 1st universe block with x >= a9 + sext a0 + subi WIDEST_BLOCK,a0 ;1st x coordinate of a block + callr bgnd_get1stx + jrz #x ;no blocks with > X ? + + movi BLOCK_SIZE,a6 + + move a0,a8 ;A0=*Block + sub a1,a8 ;subtract off start of table + srl 6,a8 ;divide by block size (64) + add a7,a8 ;a8=ptr to bit which indicates block on list + subk 8,a8 ;after inc a8, use movb *a8 to load sign bit + sub a6,a0 ;subtract block size + move a0,a7 + +#sclp1 + addk 1,a8 + add a6,a7 ;Next block + cmp a2,a7 + jrge #x ;End? + + movb *a8,a0 ;Check bakbit + jrn #sclp1 ;Already displayed? + + move *a7(MAP_X),a1 + cmpxy a3,a1 + JRXGE #qscanstrt ;Block X >= TL X ? (Do quicker scan) + + move *a7(MAP_HDR),a14 + sll 32-12,a14 ;Bits 0-11 are hdr offset + srl 32-12-4,a14 ;*16 + move a14,a0 ;>*5 + sll 2,a0 + add a0,a14 + add a5,a14 ;A14=*Img hdr + + move *a14,a0 ;MAP_W + add a0,a1 + cmpxy a3,a1 + JRXLT #sclp1 ;Block X+W < TL X ? (not in range) + + move *a7(MAP_Y),a1 + sll 16,a1 + cmpxy a4,a1 + JRYGE #sclp1 ;Block Y >= BR Y ? + + move *a14(MAP_H),a0 + sll 16,a0 + add a0,a1 + cmpxy a3,a1 + JRYLT #sclp1 ;Block Y+H < TL Y ? + + callr bgnd_addblk + jrnc #sclp1 + + jruc #x ;No more blocks! + + +* Since blocks are sorted from left to right, we can do a quicker scan +* once block left > display left + +#sclp2 + addk 1,a8 + add a6,a7 ;Next block + cmp a2,a7 + jrge #x ;End? + + movb *a8,a0 ;Check bakbit + jrn #sclp2 ;Already displayed? + +#qscanstrt + move *a7(MAP_Y),a1 + sll 16,a1 + cmpxy a4,a1 + JRYGE #sclp2 ;Block Y >= BR Y ? + + move *a7(MAP_HDR),a14 + sll 32-12,a14 ;Bits 0-11 are hdr offset + srl 32-12-4,a14 ;*16 + move a14,a0 ;>*5 + sll 2,a0 + add a0,a14 + add a5,a14 ;A14=*Img hdr + + move *a14(MAP_H),a0 + sll 16,a0 + add a0,a1 + cmpxy a3,a1 + JRYLT #sclp2 ;Block Y+H < TL Y ? + + move *a7(MAP_X),a1 + cmpxy a4,a1 + JRXGE #x ;BLOCK X > BR X ? + + callr bgnd_addblk + jrnc #sclp2 + + +#x PULL a0,a6,a7 + rets + + +#******************************* +* Add a block (object) to a list +* A5=*Base of background block hdr +* A7=*Background block +* A8=*Bakbit for obj +* A9=Module start position Y:X +* A10=*Palette table for new block +* B2=*Ins routine +* Trashes A1,A14,B0-B1 +* C set if getobj fails + + + SUBRP bgnd_addblk + + PUSH a0,a2,a3,a4 + + + calla GETOBJ + jrz #x + + movb *a8,a14 ;set bit in bitmap for block on list + ori >80,a14 + movb a14,*a8 + + move a8,*a0(OPLINK),L ;OPLINK = *Bakbit for obj + + clr a1 + move a1,*a0(OID) + move a1,*a0(OFLAGS) + move a1,*a0(OXVEL),L + move a1,*a0(OYVEL),L + movi 01000100H,a1 + move a1,*a0(OSCALE),L + + move *a7(MAP_X),a1,L ;A1=ypos:xpos of block from mod base + addxy a9,a1 ;+module base position + move a1,*a0(OXPOS) + srl 16,a1 + move a1,*a0(OYPOS) + move *a7,a4 ;A4=map_z,8:map_flags,4:map_pal,4 + move a4,a3 + zext a3 + srl 8,a3 + move a3,*a0(OZPOS) + + move *a7(MAP_HDR),a1 + movx a1,a14 + sll 32-16,a14 + srl 32-4,a14 + sll 4+5,a14 ;Bits 12-15 are bits 4-7 of pal index *32 + + sll 32-12,a1 ;Bits 0-11 are hdr offset + srl 32-12-4,a1 ;*16 + move a1,a3 ;>*5 + sll 2,a1 + add a3,a1 + + add a5,a1 ;A1=*Img hdr + + move a4,a3 ;A4=Map_z,8: map_flags,4: map_pal,4 + sll 32-4,a4 ;Last four bits for *pal + srl 32-4-5,a4 ;*32 + add a14,a4 + add a10,a4 ;+Pal_t base + move a0,a2 ;Save A0 + move *a4,a0,L ;Get *PAL + move a1,a4 + .if NMBPAL + calla pal_getb + .else + calla pal_getf + .endif + jrnz bsetpal ;No PAL? + clr a0 +bsetpal + zext a0 + move a0,*a2(OPAL),L + move a2,a0 ;Restore A0 + move a4,a1 ;^ A1 + move a1,*a0(OIMG),L ;A1=Data block pointer + + move *a1(MAP_CTRL),a4 ;Get DMA ctrl + ori >8002,a4 ;A4=flags (>8000 dma go, 2) + srl 4,a3 ;remove palette bits + sll 32-2,a3 + jrc #trans ;Transparent? + addk 1,a4 +#trans srl 26,a3 ;Line up flip bits + or a3,a4 + + move *a1+,a2,L ;ISIZE + move *a1,a3,L ;Get SAG + zext a4 ;Zero offset in A4 + + move a0,a1 + addi OSIZE+32,a1 + mmtm a1,a2,a3,a4 ;Stuff OSIZE,OSAG,OFFSET,OCTRL + + move *a0(OZPOS),a4 + + cmpi 80,a4 ;> 80? + jrlt #normz ;Normal? + + cmpi 100,a4 + jrge no_call_routine + move a4,a14 + subi 80,a14 + X32 a14 + addi z_t,a14 + move *a14,a14,L + call a14 + jruc #end_clever_stuff + +no_call_routine + + subi 100,a4 + X16 a4 + addi #ztbl,a4 + move *a4,a4 + move a4,*a0(OZPOS) + + + .if 0 +; sll 5,a4 ;*32 +; addi z_t,a4 +; move *a4,a4,L +; call a4 ;Call special code + + move a4,*a0(OZPOS) + + subi 20,a4 ;> 100? + jrgt #no_rel + move *a0(OFLAGS),a4 + ori M_SCRNREL,a4 + move a4,*a0(OFLAGS) + move *a0(OYPOS),a4 + andi 0ffh,a4 + move a4,*a0(OYPOS) +#no_rel + .endif + +#end_clever_stuff + move *a0(OFLAGS),a4 + ori M_BOBJ,a4 + move a4,*a0(OFLAGS) + + clr a4 + move a4,*a0(OXVEL),L + move a4,*a0(OYVEL),L + + calla INSOBJ ;Put on objlst + clrc + PULL a0,a2,a3,a4 + rets + +#normz call b2 ;Call insert routine + clrc + PULL a0,a2,a3,a4 + rets + +#x setc ;failure to get object + PULL a0,a2,a3,a4 + rets + + + +#ztbl + .word 013c7h ;100 mat + .word 013c8h ;101 back posts + .word 013c9h ;102 back buckles + .word 01500h ;103 front buckles + .word 01501h ;104 front posts + .word 01502h ;105 front mat +; .word 015aah ;103 front buckles +; .word 015abh ;104 front posts +; .word 015ach ;105 front mat + .word 01769h ;106 front gate + .word 0 ;107 + .word 0 ;108 + .word 0 ;109 + .word 0 ;110 + .word 0 ;111 + .word 0 ;112 + .word 0 ;113 + .word 0 ;114 + .word 0 ;115 + .word 0 ;116 + .word 0 ;117 + .word 0 ;118 + .word 0 ;119 + .word 0 ;120 + + + +******************************** +* These functions are called when a block has the appropriate Z +* A0=*Obj +* You can trash A1-A4,A14,B0,B1 + +z_t +;80 + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,DO_FLASH,DO_JASON_CROWD,DO_TONY_CROWD,DO_VOGEL_CROWD +;90 + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null + + +bak_null + + rets + + + +#******************************* +* This function deletes all objs outside the given range +* of coors from the display list. +* The boundries are not included in the group to delete. +* A3=DISP_TL +* A4=DISP_LR +* A8=*Bakgnd list +* Trashes A0,A6-A9 + + SUBR bgnd_delnonvis + +#lp move a8,a9 ;ptr to prev in a9 + move *a8,a8,L ;ptr to next in a8 + jrz #x ;End? + +#lp2 MOVE *A8(OXPOS),A7 + CMPXY A7,A4 + JRXLT DEL_IT ;JUMP IF BR X < BLOCK X + + MOVE *A8(OYPOS),A0 + SLL 16,A0 + CMPXY A0,A4 + JRYLT DEL_IT ;JUMP IF BR Y < BLOCK Y + + MOVE *A8(OIMG),A1,L + MOVE *A1,A6 ;A6 BLOCK WIDTH + ADD A6,A7 + CMPXY A3,A7 + JRXLT DEL_IT ;JUMP IF TL X > BLOCK X+W + + MOVE *A1(MAP_H),A7 ;A7 BLOCK HEIGHT + SLL 16,A7 + ADD A7,A0 + CMPXY A3,A0 + JRYGE #lp ;JUMP IF TL Y <= BLOCK Y+H + +DEL_IT + move *a8(OPLINK),a0,L ;>Clr the on display list bit + movb *a0,a7 + sll 32-7,a7 + srl 32-7,a7 + movb a7,*a0 + + move *a8,*a9,L ;Unlink + move @OFREE,a0,L + move a0,*a8,L + move a8,@OFREE,L ;Put on free list + move *a9,a8,L ;A8=*Next obj + jrnz #lp2 ;More? + +#x rets + + + + + + + .end + + + + \ No newline at end of file diff --git a/BACKUP/BAM.ASM b/BACKUP/BAM.ASM new file mode 100644 index 0000000..082dc77 --- /dev/null +++ b/BACKUP/BAM.ASM @@ -0,0 +1,2327 @@ +;Add smoke whisps +;fire moves +;pain grunts, etc +;put in opponent running flykick +;make flykick not miss on bounce! +;sound at razor hand clap at pin + +************************************************************** +* +* 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 "jjxm.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_up,wres_get_but_val_down + .ref wres_get_stick_val_cur + .ref get_punch_dtime + .ref clear_damage_log + + .ref change_anim1,change_anim1a + .ref change_anim2,change_anim2a + .ref keep_attached + .ref get_opp_plyrmode + .ref check_secret_moves + .ref execute_walk + .ref bounce_off_ropes + .ref climb_turnbuckle + .ref do_roll + .ref JUMP_ROPES,ADD_IF_SILENT + + ;from WRESTLE.ASM + .ref lineup_grapple +; .ref break_lockup + .REF DO_REVERSAL + .REF DO_REVERSAL_MESS + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref wres_slave_anim + .ref bam_zip_anim + .ref start_run_anim + + .ref bam_stand2_anim,bam_stand8_anim + .ref bam_stand4_anim,bam_stand6_anim + .ref bam_torso2_anim,bam_torso8_anim + .ref bam_torso4_anim,bam_torso6_anim + .ref bam_pogo_anim + .ref bam_3_hiptoss_anim + + .ref bam_2_to_4_turn_anim,bam_8_to_6_turn_anim ;stand + .ref bam_4_to_2_turn_anim,bam_6_to_8_turn_anim + .ref bam_4_to_6_turn_anim,bam_6_to_4_turn_anim + .ref bam_2_to_8_turn_anim,bam_8_to_2_turn_anim + .ref bam_4_to_8_turn_anim,bam_6_to_2_turn_anim + .ref bam_2_to_6_turn_anim,bam_8_to_4_turn_anim + + .ref bam_2_to_4_turn2_anim,bam_8_to_6_turn2_anim ;torso + .ref bam_4_to_2_turn2_anim,bam_6_to_8_turn2_anim + .ref bam_4_to_6_turn2_anim,bam_6_to_4_turn2_anim + .ref bam_2_to_8_turn2_anim,bam_8_to_2_turn2_anim + .ref bam_4_to_8_turn2_anim,bam_6_to_2_turn2_anim + .ref bam_2_to_6_turn2_anim,bam_8_to_4_turn2_anim + + .ref bam_walk1_f2_anim,bam_walk2_f2_anim,bam_walk4_f2_anim + .ref bam_walk5_f2_anim,bam_walk6_f2_anim,bam_walk8_f2_anim + + .ref bam_walk1_f4_anim,bam_walk2_f4_anim,bam_walk4_f4_anim + .ref bam_walk5_f4_anim,bam_walk6_f4_anim,bam_walk8_f4_anim + + .ref bam_4_fpunch_anim + .ref bam_2_fpunch_anim +; .ref bam_2_lockup_anim,bam_4_lockup_anim + + .ref bam_run2_anim + + .ref bam_2_head_hit_anim,bam_4_head_hit_anim + .ref bam_2_head_hit2_anim,bam_4_head_hit2_anim + .ref bam_2_body_hit_anim,bam_4_body_hit_anim + + .ref bam_2_punch_anim,bam_4_punch_anim + .ref bam_2_kick_anim,bam_4_kick_anim + .ref bam_flying_kick_anim + + .ref bam_2_body_hit_anim,bam_4_body_hit_anim + .ref bam_hitonground_anim + + .ref bam_2_butt_anim,bam_4_butt_anim + .ref bam_2_knee_anim,bam_4_knee_anim + .ref bam_4_bigboot_anim + + .ref bam_head_hit2_anim,bam_head_hit_dizzy_anim + .ref bam_2_stomp_anim,bam_4_stomp_anim + + .ref bam_2_push_anim,bam_4_push_anim + .ref bam_4_losebal_anim + + .ref bam_2_grabfling_anim + .ref bam_4_grabfling_anim + + .ref bam_fall_back_anim + + .ref bam_2_faceup_getup_anim + .ref bam_4_faceup_getup_anim + + .ref bam_2_lbowdrop_anim,bam_4_lbowdrop_anim + + .ref bam_4_jumpkick_anim + +; .ref bam_running_headbutt + .ref bam_3_pile_driver_anim + + .ref bam_4_graboh_anim,bam_heldoh_anim + .ref bam_2_graboh_anim + .ref bam_holdoh_anim + .ref bam_stndholdoh_anim + + .ref bam_backbreaker_anim + + .ref mode_inair2 + .ref wres_get_but_val_cur + .ref bam_2_pin_anim + .ref bam_4_pin_anim + + .ref bam_3_butt_drop_anim + + .ref bam_climb_up_anim,bam_climb_down_anim,bam_bellyflop_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +bam_secret_moves +;Button held down moves need to be first entry + .long #firepnch ;must have this one + + .long #neck_grab + .long #grab_fling + .long #grab_toss + .long #flykick + .long 0 + +****************************************************************************** +* +* SPECIAL MOVE PROCESSES - Secret moves +* +;a8=process of wrestler + + SUBR bam_smove_table + .long bam_graboh + .long bam_hdhold_pile + .long bam_hdhold_pogo + .long bam_hdhold_pogo2 + .long 0 + + .ref wres_get_stick_rel_new + +******************************************************************************* + +#flykick + .word B_SKICK, J_ALL + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 32 ;max + .long #scrt_flykick + +#scrt_flykick + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ATTACHED,a0 + jrz #out + + movi bam_4_jumpkick_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + + rets + +******************************************************************************* + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 32 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + + .ref bam_3_head_hold_anim + movi bam_3_head_hold_anim,a0 + calla change_anim1a + + rets + +******************************************************************************* + +#grab_toss + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long scrt_hiptoss + +scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + move *a13(CLOSEST_DIST),a0 + cmpi 80h,a0 + jrgt #out + + movi bam_3_hiptoss_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,HIPTOSS_T1,HIPTOSS_T2 + + rets + +******************************************************************************* + +#grab_fling + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling + +#scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + movi bam_3_hiptoss_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,HIPTOSS_T1,HIPTOSS_T2 + + rets +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + + FACE24 bam,grabfling_anim + calla change_anim1a + + WRSND W_BAMBAM,GRABFLING_T1,GRABFLING_T2 + + rets + + +******************************************************************************* + +#firepnch + + move a13,a0 + calla wres_get_but_val_up + btst PLAYER_SPUNCH_BIT,a0 + jrz #no_punch + + move *a13(PLYRNUM),a0 + .ref get_powerp_dtime + calla get_powerp_dtime + cmpi 85,a0 ;> min? + jrlt #no_punch +; cmpi 100+60,a0 ;< max? +; jrgt #no_punch + + callr #scrt_firepnch + setc + rets + +#no_punch + clrc + rets + + +#scrt_firepnch + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #ok + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out +; cmpi MODE_HEADHELD,a0 +; jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + +#ok + FACE24 bam,fpunch_anim + calla change_anim1a +#out + rets + +#***************************************************************************** + +bam_hdhold_pogo + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_UP,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_DOWN_AWAY|J_DOWN_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + +#slam + movi bam_pogo_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +#***************************************************************************** +bam_hdhold_pogo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN B_SKICK,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN B_KICK,0,#lp + WAITSWITCH_DWN B_PUNCH,0,#lp + WAITSWITCH_DWN B_SPUNCH,0,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + +#slam + movi bam_pogo_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +#* +bam_graboh + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp +; move *a8(PLYRMODE),a0 +; cmpi MODE_HEADHOLD,a0 +; jrz #cont0 +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont0 + clr a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_KICK,J_DOWN_AWAY|J_DOWN_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #dograb + cmpi MODE_HEADHELD,a0 + jrz #cont + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp0 + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #lp0 + cmpi MODE_DEAD,a0 + jrz #lp0 + cmpi MODE_ATTACHED,a0 + jrz #lp0 + + jruc #dograb + +#cont + + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#dograb + movi bam_4_graboh_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + SLEEP 60 + + jruc #lp + +#* +bam_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,0,#lp + + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#slam + movi bam_3_pile_driver_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + + +; WAITSWITCH_DWN J_AWAY,J_UP|J_DOWN,#lp +; WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp +; WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp +; WAITSWITCH_DWN J_DOWN_AWAY,0,#lp +; WAITSWITCH_DWN J_DOWN,0,#lp +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp +; WAITSWITCH_DWN J_TOWARD,0,#lp + + + +#***************************************************************************** + + SUBR bam_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi bam_stand4_anim,a0 + calla change_anim1a + + movi bam_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + .ref do_taunt + CREATE0 do_taunt + PULL a10 + + rets + +#p1 + movi bam_stand2_anim,a0 + calla change_anim1a + + movi bam_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* BAM BAM CONTROL CODE +* +* a13 = * bam process + + SUBR move_bam + + 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 + .long mode_normal ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .ref mode_choking + .long mode_choking ;25 + + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + +;Any button causes a pin + move a13,a0 + calla wres_get_but_val_cur + move a0,a0 + jrz #opp_not_dead + +;Make sure opponent is on the ground! +;First, see if opponent is on the ground. + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #opp_not_dead + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a1,L + + move *a1(OBJ_YPOS),a0,L + move *a1(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + +;Opponent is on ground. +;Now check to see if I'm attached to him in puppet mode! + move *a13(ATTACH_PROC),a1,L + jrz #done + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 +;If I'm attached to him, let the move finish! + jrz #opp_not_dead +#done + + FACE24 bam,pin_anim + calla change_anim1a + + rets + +#opp_notgnd +#opp_not_dead + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #no_climb + + 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 #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#z ;0 + + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 headbutt +* dizzy " " +* normal > normal punch +* dizzy " " +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running hiptoss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 50, 45,#punch_hdbutt,#punch_punch + JJXM DIZZY, 50, 45,#punch_hdbutt,#punch_punch + JJXM BLOCK, 50, 45,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 120,120,#punch_lbowdrop,#punch_punch + JJXM RUNNING, #punch_hiptoss + JJXM BOUNCING, #punch_rets + JJXM ONTURNBKL, 50, 96,#punch_yankdown,#punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM INAIR, 50, 45,#punch_hdbutt,#punch_punch + JJXM ATTACHED, 50, 45,#punch_hdbutt,#punch_punch + JJXM DEAD, 50, 45,#punch_hdbutt,#punch_punch + JJXM OPPOVERHEAD, 50, 45,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 50, 45,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 50, 45,#punch_hdbutt,#punch_punch + JJXM MASTER, 50, 45,#punch_hdbutt,#punch_punch + JJXM SLAVE, 50, 45,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 50, 45,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 50, 45,#punch_hdbutt,#punch_punch + JJXM PUPPET, 50, 45,#punch_hdbutt,#punch_punch + JJXM INAIR2, 50, 45,#punch_hdbutt,#punch_punch + JJXM_END + + +***** +#punch_rets + rets + +***** +#punch_punch +std_punch + + FACE24 bam,punch_anim + calla change_anim1a + + WRSND W_BAMBAM,PUNCH_T1,PUNCH_T2 + rets + +***** +#punch_hdbutt + + FACE24 bam,butt_anim + calla change_anim1a + + WRSND W_BAMBAM,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbowdrop + + FACE24 bam,lbowdrop_anim + calla change_anim1a + + WRSND W_BAMBAM,LBOWDROP_T1,LBOWDROP_T2 + rets + +***** +#punch_yankdown +std_yankdown + rets + +***** +#punch_hiptoss +std_hiptoss + rets + + +************ +#block ;2 + +;do_block + .ref bam_2_block_anim + .ref bam_4_block_anim + +std_block + FACE24 bam,block_anim + calla change_anim1 + + rets + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 120 120 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 90, 45,#spunch_special,#spunch_jump + JJXM DIZZY, 90, 45,#spunch_special,#spunch_jump + JJXM BLOCK, 90, 45,#spunch_special,#spunch_jump + JJXM ONGROUND, 120,120,#spunch_lbowdrop,std_punch + JJXM RUNNING, 90, 92,std_hiptoss,#spunch_jump + JJXM BOUNCING, #spunch_rets + JJXM ONTURNBKL, 60, 96,std_yankdown,std_punch + JJXM CLIMBTURNBKL, std_punch + JJXM INAIR, 85, 45,#spunch_special,#spunch_jump + JJXM ATTACHED, 85, 45,#spunch_special,#spunch_jump + JJXM DEAD, 116,112,#spunch_lbowdrop,std_punch + JJXM OPPOVERHEAD, 85, 45,#spunch_special,#spunch_jump + JJXM WAITANIM, 85, 45,#spunch_special,#spunch_jump + JJXM GRAPPLE, 85, 45,#spunch_special,#spunch_jump + JJXM MASTER, 85, 45,#spunch_special,#spunch_jump + JJXM SLAVE, 85, 45,#spunch_special,#spunch_jump + JJXM HEADHOLD, 85, 45,#spunch_special,#spunch_jump + JJXM HEADHELD, do_pile ;19 + JJXM PUPPET, 85, 45,#spunch_special,#spunch_jump + JJXM INAIR2, 85, 45,#spunch_special,#spunch_jump + JJXM_END + +#spunch_rets + rets + +***** +#spunch_jump +;jumping punch attack + .ref bam_2_slap_anim + .ref bam_4_slap_anim + FACE24 bam,slap_anim + calla change_anim1a + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + rets + +***** +#spunch_special +;If stick is toward opponent, then do head hold + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + + jrz #cont + + move *a13(CLOSEST_XDIST),a1 + cmpi 50,a1 + jrgt #spunch_jump + jruc #hdbutt +#cont + + .ref bam_3_head_hold2_anim + movi bam_3_head_hold2_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + rets +#hdbutt + +;Bam Bam special move test +; FACE24 bam,graboh_anim +; movi bam_running_headbutt,a0 +; movi bam_pogo_anim,a0 +; movi bam_4_fpunch_anim,a0 + + FACE24 bam,butt_anim + calla change_anim1a + + WRSND W_BAMBAM,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#spunch_lbowdrop + + .ref bam_2_hair_pickup_anim + .ref bam_4_hair_pickup_anim +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + .ref process_ptrs + addi process_ptrs,a14 + move *a14,a14,L + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 bam,hair_pickup_anim + calla change_anim1 + WRSND W_BAMBAM,KICK_T1,KICK_T2 + rets + +#no + FACE24 bam,lbowdrop_anim + calla change_anim1a + + WRSND W_BAMBAM,KICK_T1,KICK_T2 + + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 knee +* dizzy " " +* normal > normal kick +* dizzy " " +* +* onground < 120 120 stomp +* onground > normal kick +* +* running normal kick +* bouncing normal kick +* +* onturnbkl normal kick +* climbturnbkl normal kick +* + JJXM_INIT + JJXM NORMAL, 60, 92,#kick_knee,#kick_kick + JJXM DIZZY, 60, 92,#kick_knee,#kick_kick + JJXM BLOCK, 60, 92,#kick_knee,#kick_kick + JJXM ONGROUND, 120,120,#kick_stomp,#kick_kick + JJXM RUNNING, 120,92,#kick_kick,#kick_flyingkick + JJXM BOUNCING, #kick_kick + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM INAIR, 60, 92,#kick_knee,#kick_kick + JJXM ATTACHED, 60, 92,#kick_knee,#kick_kick + JJXM DEAD, 60, 92,#kick_knee,#kick_kick + JJXM OPPOVERHEAD, 60, 92,#kick_knee,#kick_kick + JJXM WAITANIM, 60, 92,#kick_knee,#kick_kick + JJXM GRAPPLE, 60, 92,#kick_knee,#kick_kick + JJXM MASTER, 60, 92,#kick_knee,#kick_kick + JJXM SLAVE, 60, 92,#kick_knee,#kick_kick + JJXM HEADHOLD, 60, 92,#kick_knee,#kick_kick + JJXM HEADHELD, 60, 92,#kick_knee,#kick_kick + JJXM PUPPET, 60, 92,#kick_knee,#kick_kick + JJXM INAIR2, 60, 92,#kick_knee,#kick_kick + JJXM_END + +***** +#kick_flyingkick + +; .ref bam_sflying_kick_anim + movi bam_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + + rets +***** +#kick_kick +std_kick + + FACE24 bam,kick_anim + calla change_anim1a + + WRSND W_BAMBAM,KICK_T1,KICK_T2 + rets + +***** +#kick_knee + + FACE24 bam,knee_anim + calla change_anim1a + + WRSND W_BAMBAM,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp +attack_stomp + + FACE24 bam,stomp_anim + calla change_anim1a + + WRSND W_BAMBAM,KICK_T1,KICK_T2 + + rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 120 120 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 60 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 60, 60,#skick_special,#skick_kick + JJXM DIZZY, 60, 60,#skick_special,#skick_kick + JJXM BLOCK, 60, 60,#skick_special,#skick_kick + JJXM ONGROUND, 120,120,attack_stomp,std_kick + JJXM RUNNING, #skick_bigboot + JJXM BOUNCING, #skick_bigboot + JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick + JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick + JJXM INAIR, 60, 60,#skick_special,#skick_kick + JJXM ATTACHED, 60, 60,#skick_special,#skick_kick + JJXM DEAD, 60, 60,#skick_special,#skick_kick + JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick + JJXM WAITANIM, 60, 60,#skick_special,#skick_kick + JJXM GRAPPLE, 60, 60,#skick_special,#skick_kick + JJXM MASTER, 60, 60,#skick_special,#skick_kick + JJXM SLAVE, 60, 60,#skick_special,#skick_kick + JJXM HEADHOLD, 60, 60,#skick_special,#skick_kick + JJXM HEADHELD, 60, 60,#skick_special,#skick_kick + JJXM PUPPET, 60, 60,#skick_special,#skick_kick + JJXM INAIR2, 60, 60,#skick_special,#skick_kick + JJXM_END + +***** +#skick_special +#skick_kick + +;Jumping karate kick + .ref bam_2_superkick_anim + .ref bam_4_superkick_anim + + FACE24 bam,superkick_anim + calla change_anim1a + + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +#skick_bigboot + + movi bam_4_bigboot_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + + rets + + +************ +#graboh ;8 + +;Both super buttons at the same time! + + movi bam_4_graboh_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_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(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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_stick_val_cur + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#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 + .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 +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 belly flop +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline + JJXM DIZZY, #punch_clothesline + JJXM BLOCK, #punch_clothesline + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_rets + JJXM RUNNING, #punch_clothesline + JJXM BOUNCING, #punch_clothesline + JJXM ONTURNBKL, #punch_clothesline + JJXM CLIMBTURNBKL, #punch_clothesline + JJXM INAIR, #punch_clothesline + JJXM ATTACHED, #punch_clothesline + JJXM DEAD, 176,176,#punch_bellyflop,#punch_rets + JJXM OPPOVERHEAD, #punch_clothesline + JJXM WAITANIM, #punch_clothesline + JJXM GRAPPLE, #punch_clothesline + JJXM MASTER, #punch_clothesline + JJXM SLAVE, #punch_clothesline + JJXM HEADHOLD, #punch_clothesline + JJXM HEADHELD, #punch_clothesline + JJXM PUPPET, #punch_clothesline + JJXM INAIR2, #punch_clothesline + JJXM_END + + +#punch_rets + rets + +***** +#punch_clothesline +;Only allow clothesline if near center of ring, and running toward opponent + move *a13(MOVE_DIR),a1 + btst MOVE_LEFT_BIT,a1 + jrnz #lft +;Moving right + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID+70h,a0 + jrlt #ok + +; LOCKUP + + rets + +#lft +;Moving left + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID-70h,a0 + jrgt #ok + +; LOCKUP + + rets +#ok + move *a13(MOVE_DIR),a1 + move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi #mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrz #yes + +; LOCKUP + + rets +#yes + +;Will lunge toward opponent +;Is facing opponent - nt running away from him! + .ref bam_fly_cline_anim + movi bam_fly_cline_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + + rets + +#mv_tbl .long 0,0,0,0,0,MOVE_RIGHT_BIT,MOVE_RIGHT_BIT + .long 0,0,MOVE_LEFT_BIT,MOVE_LEFT_BIT + + +***** +#punch_bellyflop +attack_bellyflop + + movi bam_3_butt_drop_anim,a0 + calla change_anim1a + rets + +************ +#block ;2 + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 running stomp +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick + JJXM DIZZY, #kick_flyingkick + JJXM BLOCK, #kick_flyingkick + JJXM ONGROUND, 176,176,attack_bellyflop,#kick_rets + JJXM RUNNING, #kick_flyingkick + JJXM BOUNCING, #kick_flyingkick + JJXM ONTURNBKL, #kick_flyingkick + JJXM CLIMBTURNBKL, #kick_flyingkick + JJXM INAIR, #kick_flyingkick + JJXM ATTACHED, #kick_flyingkick + JJXM DEAD, 176,176,attack_bellyflop,#kick_rets + JJXM OPPOVERHEAD, #kick_flyingkick + JJXM WAITANIM, #kick_flyingkick + JJXM GRAPPLE, #kick_flyingkick + JJXM MASTER, #kick_flyingkick + JJXM SLAVE, #kick_flyingkick + JJXM HEADHOLD, #kick_flyingkick + JJXM HEADHELD, #kick_flyingkick + JJXM PUPPET, #kick_flyingkick + JJXM INAIR2, #kick_flyingkick + JJXM_END + + +#kick_rets + rets + +***** +#kick_flyingkick + + movi bam_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + + rets + +;***** +;#kick_runstomp +; +; 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 + +#***************************************************************************** + +mode_onground ;4 + +; move *a13(GETUP_TIME),a0 +; jrnz #exit +; +; move *a13(ANIBASE),a0,L +; cmpi bam_2_faceup_getup_anim,a0 +; jrz #exit +; cmpi bam_4_faceup_getup_anim,a0 +; jrz #exit +; +; calla do_roll +; jrnz #exit ;did roll +; +; FACE24 bam,faceup_getup_anim +; calla change_anim1a +; +;#exit + 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 bam_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 + + ;this is so an attack isn't turned into a climbdown + ; in those 5-10 ticks before MODE_INAIR2 is set... + move *a13(ANIBASE),a14,L + cmpi bam_climb_up_anim,a14 + jrne #no_climbdown + + movi bam_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + + rets + +#no_climbdown + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#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 + + movi bam_bellyflop_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + ;check unint +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #no_interrupt + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #no_interrupt + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #punchblock ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + FACE24 bam,push_anim + calla change_anim1a + + WRSND W_BAMBAM,PUSH_T1,PUSH_T2 + + rets + +#***************************************************************************** +* doink with zero health + +mode_dizzy ;8 + + move *a13(GETUP_TIME),a0 + jrnz #still_going + + calla clear_damage_log + + clr a0 + move a0,*a13(STARS_FLAG) + + SETMODE NORMAL + +#still_going + 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 ;* remove this???? + 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) + + rets + +#still_attached + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(FACING_DIR),a0 + andni MOVE_UP,a0 + ori MOVE_DOWN,a0 + move a0,*a13(FACING_DIR) + move a0,*a13(NEW_FACING_DIR) + + move a13,a0 + calla wres_get_stick_val_cur + jrz #stand + + move a0,*a13(MOVE_DIR) + calla execute_walk + + movi bam_holdoh_anim,a0 + calla change_anim2 + jruc #ck_butns +#stand + clr a0 + move a0,*a13(MOVE_DIR) + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_ZVEL),L + + movi bam_stndholdoh_anim,a0 + calla change_anim1 + +#ck_butns + + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table +;FIX!!! +;Get action table from doink for everyone! The one that reads +;buttons correctly when two buttons are pressed at the same time! + + .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 + + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #z + + .ref bam_slamdwn_anim + movi bam_slamdwn_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,PUNCH_T1,PUNCH_T2 + + rets +#block ;2 +#super_punch ;4 +#kick ;8 + rets + +#super_kick ;16 + + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #z + + movi bam_backbreaker_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,HIPTOSS_T1,HIPTOSS_T2 + + 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 +; +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +;;now get move off +;;if opponents meter almost zero then break apart +; +; calla break_lockup +; 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(ATTACH_PROC),a10,L + jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + +;Should we allow you to break from head hold into a block? +;I think not right now... +; 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 do_block ;& 1 for current buttons +; +;;Do an ANI_DETACH +; move *a13(ATTACH_PROC),a1,L +; jrz #done +; clr a0 +; move a0,*a13(ATTACH_PROC),L ;not attached to anything +; +; move *a1(ATTACH_PROC),a2,L +; cmp a2,a13 +; jrne #done +; +; move a0,*a1(ATTACH_PROC),L ;not attached to anything +;#done +; +;#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 + +#no_interrupt + rets + +#exit + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#z ;0 + rets + +************ + +#super_punch ;4 + + rets + +#punch ;1 +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag +; movi dnk_uppercuts_to_head_anim,a0 + movi bam_4_knee_anim,a0 + calla change_anim1a + rets + +#tag +; movi dnk_uppercut_to_head_anim,a0 + movi bam_4_knee_anim,a0 + calla change_anim1a + rets + +************ +;#super_punch ;4 + +do_pile +;This flag is only set if bam bam has done repeated kicks! + move *a13(USR_VAR2),a0 + jrz #z + + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #punch + + movi bam_3_pile_driver_anim,a0 + calla change_anim1a + rets + +#punchkick +#graboh +#kick + +; move a13,a0 +; calla wres_get_stick_val_cur +; +; btst PLAYER_DOWN_BIT,a0 +; jrz #knee +; +; move a13,a0 +; .ref wres_get_stick_rel_cur +; calla wres_get_stick_rel_cur +; +; btst MOVE_TOWARD_BIT,a0 +; jrz #knee +; +; .ref bam_hdbutts_anim +; movi bam_hdbutts_anim,a0 +; calla change_anim1a +; rets +; +;#knee + movi bam_4_knee_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #z + +;Quick knees + .ref bam_knees_anim + movi bam_knees_anim,a0 + calla change_anim1a + rets + +#***************************************************************************** +mode_headheld ;19 + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + .ref bam_3_head_held_stand_anim + movi bam_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +;;If stick is toward opponent, then do reversal +; move a13,a0 +; calla wres_get_stick_val_cur +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrnz #out +; +; move a13,a0 +; calla wres_get_but_val_down +; btst PLAYER_SPUNCH_BIT,a0 +; jrz #out +; +; .ref DO_REVERSAL +; .ref DO_REVERSAL_MESS +; +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +;;Successful reversal pile drive +; move *a13(OBJ_ZPOS),a0,L +; addi [5,0],a0 +; move a0,*a13(OBJ_ZPOS),L +; +; movi bam_3_pile_driver_anim,a0 +; calla change_anim1a +; +;#out +; rets + +#***************************************************************************** +mode_puppet ;20 + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +#VEL equ 30000h +#DVEL equ 21f0eh + + + SUBR bam_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 bam_rotate_anims_table +; old = up right + .long bam_stand2_anim ;new = up right + .long bam_2_to_4_turn_anim ; = down right + .long bam_2_to_6_turn_anim ; = down left *** + .long bam_2_to_8_turn_anim ; = up left + +; old = down right + .long bam_4_to_2_turn_anim ;new = up right + .long bam_stand4_anim ; = down right + .long bam_4_to_6_turn_anim ; = down left + .long bam_4_to_8_turn_anim ; = up left *** + +; old = down left + .long bam_6_to_2_turn_anim ;new = up right *** + .long bam_6_to_4_turn_anim ; = down right + .long bam_stand6_anim ; = down left + .long bam_6_to_8_turn_anim ; = up left + +; old = up left + .long bam_8_to_2_turn_anim ;new = up right + .long bam_8_to_4_turn_anim ; = down right *** + .long bam_8_to_6_turn_anim ; = down left + .long bam_stand8_anim ; = up left + + + SUBR bam_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long bam_walk1_f2_anim ;1 (UP) + .long bam_walk1_f2_anim ;2 (UP_RIGHT) + .long bam_walk1_f4_anim ;3 (RIGHT) + .long bam_walk1_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk1_f4_anim ;5 (DOWN) + .long bam_walk1_f4_anim ;6 (DOWN_LEFT) + .long bam_walk1_f2_anim ;7 (LEFT) + .long bam_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk2_f2_anim ;2 (UP_RIGHT) + .long bam_walk2_f2_anim ;3 (RIGHT) + .long bam_walk2_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk8_f4_anim ;5 (DOWN) + .long bam_walk8_f4_anim ;6 (DOWN_LEFT) + .long bam_walk4_f2_anim ;7 (LEFT) + .long bam_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk2_f2_anim ;2 (UP_RIGHT) + .long bam_walk2_f2_anim ;3 (RIGHT) + .long bam_walk4_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk4_f4_anim ;5 (DOWN) + .long bam_walk8_f4_anim ;6 (DOWN_LEFT) + .long bam_walk6_f2_anim ;7 (LEFT) + .long bam_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk8_f2_anim ;2 (UP_RIGHT) + .long bam_walk4_f4_anim ;3 (RIGHT) + .long bam_walk4_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk2_f4_anim ;5 (DOWN) + .long bam_walk6_f4_anim ;6 (DOWN_LEFT) + .long bam_walk2_f2_anim ;7 (LEFT) + .long bam_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long bam_walk5_f2_anim ;1 (UP) + .long bam_walk5_f2_anim ;2 (UP_RIGHT) + .long bam_walk5_f4_anim ;3 (RIGHT) + .long bam_walk5_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk5_f4_anim ;5 (DOWN) + .long bam_walk5_f4_anim ;6 (DOWN_LEFT) + .long bam_walk5_f2_anim ;7 (LEFT) + .long bam_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk6_f2_anim ;2 (UP_RIGHT) + .long bam_walk2_f2_anim ;3 (RIGHT) + .long bam_walk6_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk2_f4_anim ;5 (DOWN) + .long bam_walk4_f4_anim ;6 (DOWN_LEFT) + .long bam_walk2_f2_anim ;7 (LEFT) + .long bam_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk6_f2_anim ;2 (UP_RIGHT) + .long bam_walk6_f2_anim ;3 (RIGHT) + .long bam_walk8_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk4_f4_anim ;5 (DOWN) + .long bam_walk4_f4_anim ;6 (DOWN_LEFT) + .long bam_walk2_f2_anim ;7 (LEFT) + .long bam_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk4_f2_anim ;2 (UP_RIGHT) + .long bam_walk6_f2_anim ;3 (RIGHT) + .long bam_walk8_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk6_f4_anim ;5 (DOWN) + .long bam_walk2_f4_anim ;6 (DOWN_LEFT) + .long bam_walk2_f2_anim ;7 (LEFT) + .long bam_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR bam_torso_anims_table +; old = up right + .long bam_torso2_anim ;new = up right + .long bam_2_to_4_turn2_anim ; = down right + .long bam_2_to_6_turn2_anim ; = down left *** + .long bam_2_to_8_turn2_anim ; = up left + +; old = down right + .long bam_4_to_2_turn2_anim ;new = up right + .long bam_torso4_anim ; = down right + .long bam_4_to_6_turn2_anim ; = down left + .long bam_4_to_8_turn2_anim ; = up left *** + +; old = down left + .long bam_6_to_2_turn2_anim ;new = up right *** + .long bam_6_to_4_turn2_anim ; = down right + .long bam_torso6_anim ; = down left + .long bam_6_to_8_turn2_anim ; = up left + +; old = up left + .long bam_8_to_2_turn2_anim ;new = up right + .long bam_8_to_4_turn2_anim ; = down right *** + .long bam_8_to_6_turn2_anim ; = down left + .long bam_torso8_anim ; = up left + + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/BAM.BAT b/BACKUP/BAM.BAT new file mode 100644 index 0000000..b1b2263 --- /dev/null +++ b/BACKUP/BAM.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld bam bam_hit bam_kik bam_msc bam_pnc bam_wlk bam_rjr bam_mjt bam_jms bam_jake +@copy bam.ld1 + bam.ld2 bam.lod +@move bam.h ..\bamimg.h +@move bam.seq .. + diff --git a/BACKUP/BAMIMG.ASM b/BACKUP/BAMIMG.ASM new file mode 100644 index 0000000..04b8a36 --- /dev/null +++ b/BACKUP/BAMIMG.ASM @@ -0,0 +1,18 @@ + .FILE "bamimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include bamimg.tbl + .include bamimg.h + +****************************************************************************** + + .even + .include "bam.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/BACKUP/BAMIMG.H b/BACKUP/BAMIMG.H new file mode 100644 index 0000000..6bb09bd --- /dev/null +++ b/BACKUP/BAMIMG.H @@ -0,0 +1,100 @@ + .global B4AM4A + .global B3CP3B + .global B3GU2A + .global B3GU4A + .global B4AH4A + .global B2AH2A + .global B3PP3Q + .global B3FD3C + .global B2AM2A + .global B4BK3D + .global B2BK3B + .global B3AE3A + .global B4LB4B + .global B4TD3B + .global B4TD3A + .global B4KM3E + .global B2KM3B + .global B4KM3A + .global B2KM3E + .global B4NM3A + .global B2NM3A + .global B2BG3A + .global B3DC3B + .global B4KM3H + .global B4GF3A + .global B3HB3A + .global B4TI4A + .global B4BF3A + .global B3BF3C + .global B2FG3Z + .global B4FG3Z + .global B4MF4A + .global B3RL1A + .global B4HU4B + .global B4SB4A + .global B2FH3Z + .global B4FH3Z + .global B4PU3D + .global B2PU3C + .global B4PS3A + .global B2PS3A + .global B4BC3A + .global B2BC3A + .global B3PO4A + .global B4PO4Z + .global B2ST2A + .global B4ST4Z + .global B2TW2Z + .global B4TW4Z + .global B1TT5Z + .global B1TR5Z + .global B2WL1A + .global B2WL2B + .global B2WL8B + .global B4WL2A + .global B4WL4B + .global B4WL5B + .global B4YR3A + .global B3RN3A + .global B4BO3Z + .global B3DD3D + .global B4UC3Z + .global B4TN4X + .global B3SV3B + .global B3FH3F + .global B3RC3A + .global B3DR3B + .global B4POGO + .global BCDARM + .global B4CD3B + .global B4GH3B + .global B4CF4A + .global B3PO4E + .global B2PN5A + .global B5RV5A + .global B4WC4B + .global B3PG3A + .global B4CD3A + .global B3MS3Z + .global B4RS4A + .global B4SW4B + .global B4WS4A + .global B4GH3D + .global B3DU3A + .global B3MS3X + .global B4BB1X + .global B3BR3Z + .global B4BZ4A + .global B4UC3B + .global B4MP4A + .global B2MP2A + .global B3PJ3B + .global B2PJ3A + .global B3JK3A + .global B4FK4B + .global B4FK4F + .global BURNBODY + .global B3RR3Z + .global B4CR7A + .global B2JD4A diff --git a/BACKUP/BAMSEQ1.ASM b/BACKUP/BAMSEQ1.ASM new file mode 100644 index 0000000..5632955 --- /dev/null +++ b/BACKUP/BAMSEQ1.ASM @@ -0,0 +1,597 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "bamseq1.asm" + .title "Bam Bam Bigelo animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "bamimg.h" + .include "takerimg.h" ;<---temp!!! + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF SMALL_RUN + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* STANDS + + SUBR bam_zip_anim + WL 60*60,B2ST2A+FR1 + .word ANI_END + + + SUBR bam_stand2_anim + SUBR bam_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 4,B2ST2A+FR1 + WL 4,B2ST2A+FR2 + WL 4,B2ST2A+FR3 + WL 4,B2ST2A+FR4 + WL 4,B2ST2A+FR5 + WL 4,B2ST2A+FR6 + WL 4,B2ST2A+FR7 + WL 4,B2ST2A+FR8 + WL 4,B2ST2A+FR9 + WL 4,B2ST2A+FR10 + WL 4,B2ST2A+FR11 + WL 4,B2ST2A+FR12 + WL 4,B2ST2A+FR13 + .word ANI_REPEAT + + + SUBR bam_stand4_anim + SUBR bam_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 6,B4ST4Z+FR1 + WL 6,B4ST4Z+FR2 + WL 6,B4ST4Z+FR3 + WL 6,B4ST4Z+FR4 + WL 6,B4ST4Z+FR5 + WL 6,B4ST4Z+FR6 + WL 6,B4ST4Z+FR7 + WL 6,B4ST4Z+FR8 + WL 6,B4ST4Z+FR9 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR bam_torso2_anim + SUBR bam_torso8_anim + + WL 6,B2TW2Z+FR1 + WL 6,B2TW2Z+FR2 + WL 6,B2TW2Z+FR3 + WL 6,B2TW2Z+FR2 + .word ANI_REPEAT + + + SUBR bam_torso4_anim + SUBR bam_torso6_anim + + WL 6,B4TW4Z+FR1 + WL 6,B4TW4Z+FR2 + WL 6,B4TW4Z+FR3 + WL 6,B4TW4Z+FR2 + .word ANI_REPEAT + + SUBR bam_holdoh_anim + WL 999,B4PO4Z+FR1 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR bam_walk1_f2_anim + WL 2,B2WL1A+FR1 + WL 2,B2WL1A+FR2 + WL 2,B2WL1A+FR3 + WL 2+1,B2WL1A+FR4 + WL 2,B2WL1A+FR5 + WL 2,B2WL1A+FR6 + WL 2,B2WL1A+FR7 + WL 2+1,B2WL1A+FR8 + WL 2,B2WL1A+FR9 + WL 2,B2WL1A+FR10 + WL 2,B2WL1A+FR11 + WL 2+1,B2WL1A+FR12 + WL 2,B2WL1A+FR13 + WL 2,B2WL1A+FR14 + WL 2,B2WL1A+FR15 + WL 2+1,B2WL1A+FR16 + .word ANI_REPEAT + + SUBR bam_walk2_f2_anim + WL 2,B2WL2B+FR1 + WL 2,B2WL2B+FR2 + WL 2,B2WL2B+FR3 + WL 2,B2WL2B+FR4 + WL 2,B2WL2B+FR5 + WL 2,B2WL2B+FR6 + WL 2,B2WL2B+FR7 + WL 2,B2WL2B+FR8 + WL 2,B2WL2B+FR9 + WL 2,B2WL2B+FR10 + WL 2,B2WL2B+FR11 + WL 2,B2WL2B+FR12 + WL 2,B2WL2B+FR13 + WL 2,B2WL2B+FR14 + WL 2,B2WL2B+FR15 + WL 2,B2WL2B+FR16 + WL 2,B2WL2B+FR17 + WL 2,B2WL2B+FR18 + .word ANI_REPEAT + + SUBR bam_walk4_f2_anim + WL 3,B2WL8B+FR1 + WL 3,B2WL8B+FR2 + WL 3,B2WL8B+FR3 + WL 3,B2WL8B+FR4 + WL 3,B2WL8B+FR5 + WL 3,B2WL8B+FR6 + WL 3,B2WL8B+FR7 + WL 3,B2WL8B+FR8 + WL 3,B2WL8B+FR9 + WL 3,B2WL8B+FR10 + WL 3,B2WL8B+FR11 + WL 3,B2WL8B+FR12 + .word ANI_REPEAT + + SUBR bam_walk5_f2_anim + WL 2,B2WL1A+FR16 + WL 2,B2WL1A+FR15 + WL 2,B2WL1A+FR14 + WL 2+1,B2WL1A+FR13 + WL 2,B2WL1A+FR12 + WL 2,B2WL1A+FR11 + WL 2,B2WL1A+FR10 + WL 2+1,B2WL1A+FR9 + WL 2,B2WL1A+FR8 + WL 2,B2WL1A+FR7 + WL 2,B2WL1A+FR6 + WL 2+1,B2WL1A+FR5 + WL 2,B2WL1A+FR4 + WL 2,B2WL1A+FR3 + WL 2,B2WL1A+FR2 + WL 2+1,B2WL1A+FR1 + .word ANI_REPEAT + + SUBR bam_walk6_f2_anim + WL 2,B2WL2B+FR18 + WL 2,B2WL2B+FR17 + WL 2,B2WL2B+FR16 + WL 2,B2WL2B+FR15 + WL 2,B2WL2B+FR14 + WL 2,B2WL2B+FR13 + WL 2,B2WL2B+FR12 + WL 2,B2WL2B+FR11 + WL 2,B2WL2B+FR10 + WL 2,B2WL2B+FR9 + WL 2,B2WL2B+FR8 + WL 2,B2WL2B+FR7 + WL 2,B2WL2B+FR6 + WL 2,B2WL2B+FR5 + WL 2,B2WL2B+FR4 + WL 2,B2WL2B+FR3 + WL 2,B2WL2B+FR2 + WL 2,B2WL2B+FR1 + .word ANI_REPEAT + + + SUBR bam_walk8_f2_anim + WL 3,B2WL8B+FR12 + WL 3,B2WL8B+FR11 + WL 3,B2WL8B+FR10 + WL 3,B2WL8B+FR9 + WL 3,B2WL8B+FR8 + WL 3,B2WL8B+FR7 + WL 3,B2WL8B+FR6 + WL 3,B2WL8B+FR5 + WL 3,B2WL8B+FR4 + WL 3,B2WL8B+FR3 + WL 3,B2WL8B+FR2 + WL 3,B2WL8B+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR bam_walk1_f4_anim + WL 2,B4WL5B+FR15 + WL 2+1,B4WL5B+FR14 + WL 2,B4WL5B+FR13 + WL 2,B4WL5B+FR12 + WL 2+1,B4WL5B+FR11 + WL 2,B4WL5B+FR10 + WL 2+1,B4WL5B+FR9 + WL 2,B4WL5B+FR8 + WL 2,B4WL5B+FR7 + WL 2+1,B4WL5B+FR6 + WL 2,B4WL5B+FR5 + WL 2+1,B4WL5B+FR4 + WL 2,B4WL5B+FR3 + WL 2,B4WL5B+FR2 + WL 2+1,B4WL5B+FR1 + .word ANI_REPEAT + + SUBR bam_walk2_f4_anim + WL 2,B4WL2A+FR1 + WL 2+1,B4WL2A+FR2 + WL 2,B4WL2A+FR3 + WL 2,B4WL2A+FR4 + WL 2+1,B4WL2A+FR5 + WL 2,B4WL2A+FR6 + WL 2+1,B4WL2A+FR7 + WL 2,B4WL2A+FR8 + WL 2,B4WL2A+FR9 + WL 2+1,B4WL2A+FR10 + WL 2,B4WL2A+FR11 + WL 2+1,B4WL2A+FR12 + WL 2,B4WL2A+FR13 + WL 2,B4WL2A+FR14 + WL 2+1,B4WL2A+FR15 + .word ANI_REPEAT + + SUBR bam_walk4_f4_anim + WL 2,B4WL4B+FR1 + WL 2,B4WL4B+FR2 + WL 2,B4WL4B+FR3 + WL 2,B4WL4B+FR4 + WL 2,B4WL4B+FR5 + WL 2,B4WL4B+FR6 + WL 2,B4WL4B+FR7 + WL 2,B4WL4B+FR8 + WL 2,B4WL4B+FR9 + WL 2,B4WL4B+FR10 + WL 2,B4WL4B+FR11 + WL 2,B4WL4B+FR12 + WL 2,B4WL4B+FR13 + WL 2,B4WL4B+FR14 + WL 2,B4WL4B+FR15 + WL 2,B4WL4B+FR16 + WL 2,B4WL4B+FR17 + WL 2,B4WL4B+FR18 + .word ANI_REPEAT + + SUBR bam_walk5_f4_anim + WL 2,B4WL5B+FR1 + WL 2+1,B4WL5B+FR2 + WL 2,B4WL5B+FR3 + WL 2,B4WL5B+FR4 + WL 2+1,B4WL5B+FR5 + WL 2,B4WL5B+FR6 + WL 2+1,B4WL5B+FR7 + WL 2,B4WL5B+FR8 + WL 2,B4WL5B+FR9 + WL 2+1,B4WL5B+FR10 + WL 2,B4WL5B+FR11 + WL 2+1,B4WL5B+FR12 + WL 2,B4WL5B+FR13 + WL 2,B4WL5B+FR14 + WL 2+1,B4WL5B+FR15 + .word ANI_REPEAT + + SUBR bam_walk6_f4_anim + WL 2,B4WL2A+FR15 + WL 2+1,B4WL2A+FR14 + WL 2,B4WL2A+FR13 + WL 2,B4WL2A+FR12 + WL 2+1,B4WL2A+FR11 + WL 2,B4WL2A+FR10 + WL 2+1,B4WL2A+FR9 + WL 2,B4WL2A+FR8 + WL 2,B4WL2A+FR7 + WL 2+1,B4WL2A+FR6 + WL 2,B4WL2A+FR5 + WL 2+1,B4WL2A+FR4 + WL 2,B4WL2A+FR3 + WL 2,B4WL2A+FR2 + WL 2+1,B4WL2A+FR1 + .word ANI_REPEAT + + SUBR bam_walk8_f4_anim + WL 2,B4WL4B+FR18 + WL 2,B4WL4B+FR17 + WL 2,B4WL4B+FR16 + WL 2,B4WL4B+FR15 + WL 2,B4WL4B+FR14 + WL 2,B4WL4B+FR13 + WL 2,B4WL4B+FR12 + WL 2,B4WL4B+FR11 + WL 2,B4WL4B+FR10 + WL 2,B4WL4B+FR9 + WL 2,B4WL4B+FR8 + WL 2,B4WL4B+FR7 + WL 2,B4WL4B+FR6 + WL 2,B4WL4B+FR5 + WL 2,B4WL4B+FR4 + WL 2,B4WL4B+FR3 + WL 2,B4WL4B+FR2 + WL 2,B4WL4B+FR1 + .word ANI_REPEAT + + +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR bam_2_to_4_turn_anim + SUBR bam_8_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TT5Z+FR2 ;2.5 + WL 1,B1TT5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_2_turn_anim + SUBR bam_6_to_8_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TT5Z+FR3 ;3.5 + WL 1,B1TT5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_6_turn_anim + SUBR bam_6_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 1,B1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_2_to_8_turn_anim + SUBR bam_8_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 1,B1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_8_turn_anim + SUBR bam_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TT5Z+FR3 ;3.5 + WL 1,B1TT5Z+FR2 ;2.5 + WL 1,B1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 1,B1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_2_to_6_turn_anim + SUBR bam_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TT5Z+FR2 ;2.5 + WL 1,B1TT5Z+FR3 ;3.5 + WL 1,B1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 1,B1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR bam_2_to_4_turn2_anim + SUBR bam_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TR5Z+FR2 ;2.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,B1TR5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_2_turn2_anim + SUBR bam_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TR5Z+FR3 ;3.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,B1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_6_turn2_anim + SUBR bam_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,B1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_2_to_8_turn2_anim + SUBR bam_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TR5Z+FR1 ;1.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,B1TR5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_8_turn2_anim + SUBR bam_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,B1TR5Z+FR4 ;4.5 + WL 1,B1TR5Z+FR3 ;3.5 + .word ANI_SETFACING + WL 1,B1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_2_to_6_turn2_anim + SUBR bam_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,B1TR5Z+FR2 ;2.5 + .word ANI_SETFACING + WL 1,B1TR5Z+FR3 ;3.5 + WL 1,B1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,B1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR bam_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16+8,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR bam_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + +#lp1 + WL 3,B3RN3A+FR1 + WL 3,B3RN3A+FR2 + WL 3,B3RN3A+FR3 + WL ANI_CODE,SMALL_RUN + WL 3,B3RN3A+FR4 + WL 3,B3RN3A+FR5 +#run2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16+8,71 ;mode,x,y,w,h + WL 3,B3RN3A+FR6 + WL 3,B3RN3A+FR7 + WL 3,B3RN3A+FR8 + WL 3,B3RN3A+FR9 + WL ANI_CODE,SMALL_RUN + WL 3,B3RN3A+FR10 + WL 3,B3RN3A+FR11 + WL 3,B3RN3A+FR12 + + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR bam_bounce_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,B4BO3Z+FR1 + .word ANI_BOUNCEROPE,0 + WL 1,B4BO3Z+FR1 + + WL 3,B4BO3Z+FR2 + .word ANI_BOUNCEROPE,1 + WL ANI_CODE,SMALL_RUN + + WL 1,B4BO3Z+FR2 + + WL 3,B4BO3Z+FR3 + .word ANI_BOUNCEROPE,2 + WL 1,B4BO3Z+FR3 + + WL 3,B4BO3Z+FR4 + .word ANI_BOUNCEROPE,3 + WL 1,B4BO3Z+FR4 + + .word ANI_ZEROVELS + + WL 3,B4BO3Z+FR5 + .word ANI_BOUNCEROPE,4 + WL 1,B4BO3Z+FR5 + WL 4,B4BO3Z+FR6 + WL 3,B4BO3Z+FR7 + .word ANI_BOUNCEROPE,0 + WL 1,B4BO3Z+FR7 + WL 3,B4BO3Z+FR8 + .word ANI_BOUNCEROPE,-1 + WL ANI_CODE,SMALL_RUN + WL 1,B4BO3Z+FR8 + WL 4,B4BO3Z+FR9 + + .word ANI_OFFSET,-10,0,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/BAMSEQ2.ASM b/BACKUP/BAMSEQ2.ASM new file mode 100644 index 0000000..42618c2 --- /dev/null +++ b/BACKUP/BAMSEQ2.ASM @@ -0,0 +1,3818 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "bamseq2.asm" + .title "Bam Bam Bigelo animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .include "bamimg.h" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref SET_DIR_FACE,start_run_anim,HIT_THE_MAT,SMALL_BOUNCE + .ref choose_2or4,no_bk_xvel,CALL_MISSES,CALL_NASTY_MOVE + .ref DO_CROWD_CHEER,check_xvel,hit_puppet,BAMBLU_P,pal_getf + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + + SUBR bam_2_fpunch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + + .word ANI_SET_RPTCOUNT,4 ;3 times + +#loop + .word ANI_CLR_BUTCOUNT + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,50,105,10 + + .word ANI_STARTATTACK,AT_PUNCH,10 + + WL 2,B2FH3Z+FR1 + WL 3,B2FH3Z+FR2 + WL 3,B2FH3Z+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B2FH3Z+FR4 + .word ANI_ATTACK_ON, AMODE_PUNCH,7,44,59,68 ;mode,x,y,w,h + WL 3,B2FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gotim +;missed + WL 3,B2FH3Z+FR6 + WL 3,B2FH3Z+FR7 + + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gotim + .word ANI_IMMOBILIZE,30 + WL ANI_CODE,CALL_NASTY_MOVE + .word ANI_STARTATTACK,AT_PUNCH,5 + + WL ANI_CODE,#set_opp_xy + + WL 2,B2FH3Z+FR6 + WL 3,B2FH3Z+FR7 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,40,105,-10 + + WL 2,B4FH3Z+FR1 + WL 3,B4FH3Z+FR2 + WL 3,B4FH3Z+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B4FH3Z+FR4 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_PUNCH,7,44,59,68 ;mode,x,y,w,h + WL 3,B4FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gotim2 +;missed + WL 3,B4FH3Z+FR6 + WL 3,B4FH3Z+FR7 + + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gotim2 + .word ANI_IMMOBILIZE,30 + WL ANI_CODE,#set_opp_xy + + WL 2,B4FH3Z+FR6 + WL 3,B4FH3Z+FR7 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,4,#fail + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop +#fail + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_fpunch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + + .word ANI_SET_RPTCOUNT,4 ;3 times + +#loop2 + .word ANI_STARTATTACK,AT_PUNCH,10 + .word ANI_CLR_BUTCOUNT + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,50,105,-10 + + WL 2,B4FH3Z+FR1 + WL 3,B4FH3Z+FR2 + WL 3,B4FH3Z+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B4FH3Z+FR4 + .word ANI_ATTACK_ON, AMODE_PUNCH,7,44,59,68 ;mode,x,y,w,h + WL 3,B4FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gotim2a +;missed + WL 3,B4FH3Z+FR6 + WL 3,B4FH3Z+FR7 + + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gotim2a + .word ANI_IMMOBILIZE,30 + .word ANI_STARTATTACK,AT_PUNCH,15 + WL ANI_CODE,CALL_NASTY_MOVE + + WL ANI_CODE,#set_opp_xy + + WL 2,B4FH3Z+FR6 + WL 3,B4FH3Z+FR7 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,40,105,10 + + WL 2,B2FH3Z+FR1 + WL 3,B2FH3Z+FR2 + WL 3,B2FH3Z+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B2FH3Z+FR4 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_PUNCH,7,44,59,68 ;mode,x,y,w,h + WL 3,B2FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gotima +;missed + WL 3,B2FH3Z+FR6 + WL 3,B2FH3Z+FR7 + + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gotima + .word ANI_IMMOBILIZE,30 + WL ANI_CODE,#set_opp_xy + + WL 2,B2FH3Z+FR6 + WL 3,B2FH3Z+FR7 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,4,#fail2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop +#fail2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#set_opp_xy + move *a13(WHOIHIT),a0,L + movi [2,0],a14 + move a14,*a0(OBJ_YVEL),L + + movi -[2,0],a1 + move *a0(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a1 ;left +#abs + move a1,*a0(OBJ_XVEL),L + + .ref create_impact3 + calla create_impact3 + rets + +#***************************************************************************** +* +* #2 NORMAL PUNCH + + SUBR bam_2_punch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 3,B2PU3C+FR4 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,7 + WL 3,B2PU3C+FR5 + WL 3,B2PU3C+FR6 + + WL 1,B2PU3C+FR7 + .word ANI_ATTACK_ON, AMODE_PUNCH,28,92,56,10 ;mode,x,y,w,h + WL 3,B2PU3C+FR7 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-30000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 3,B2PU3C+FR7 +#no_hit + + WL 2,B2PU3C+FR7 + + WL 3,B2PU3C+FR8 + WL 2,B2PU3C+FR9 + WL 2,B2PU3C+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 NORMAL PUNCH + + SUBR bam_4_punch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 3,B4PU3D+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,7 + WL 3,B4PU3D+FR3 + WL 3,B4PU3D+FR4 + + WL 1,B4PU3D+FR5 + .word ANI_ATTACK_ON, AMODE_PUNCH,28,92,56,10 ;mode,x,y,w,h + WL 3,B4PU3D+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-30000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 3,B4PU3D+FR5 +#no_hit + WL 2,B4PU3D+FR5 + + WL 3,B4PU3D+FR6 + WL 2,B4PU3D+FR7 + WL 2,B4PU3D+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 PUSH + + SUBR bam_2_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,15 + WL 2,B2PS3A+FR1 + WL 2,B2PS3A+FR2 + WL 2,B2PS3A+FR3 + WL 2,B2PS3A+FR4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + WL 2,B2PS3A+FR5 + WL 2,B2PS3A+FR6 + +; WL ANI_CODE,#fireball + .word ANI_ATTACK_ON, AMODE_PUSH,36,85,49,17 ;mode,x,y,w,h + WL 3,B2PS3A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WWL ANI_SLIDE_BACK,40h,-60000h,#no_hit ;range,vel,addr + WL 15,B2PS3A+FR7 +#no_hit + WL 7,B2PS3A+FR7 + WL 4,B2PS3A+FR8 + WL 4,B2PS3A+FR9 +; WL 4,B2PS3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb +#missed + WL 7,B2PS3A+FR7 + WL 4,B2PS3A+FR8 + WL 4,B2PS3A+FR9 +; WL 4,B2PS3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#fireball + move a13,a11 + .ref bam_fireball + CREATE0 bam_fireball + rets + +#************ +* +* #4 PUSH + + SUBR bam_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,12 + WL 3,B4PS3A+FR1 + WL 3,B4PS3A+FR2 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + WL 3,B4PS3A+FR3 + WL 3,B4PS3A+FR4 +; WL ANI_CODE,#fireball + .word ANI_ATTACK_ON, AMODE_PUSH,36,85,49,17 ;mode,x,y,w,h + WL 3,B4PS3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WWL ANI_SLIDE_BACK,40h,-60000h,#no_hit ;range,vel,addr + WL 15,B4PS3A+FR5 +#no_hit + WL 7,B4PS3A+FR5 + WL 4,B4PS3A+FR6 + WL 4,B4PS3A+FR7 + WL 4,B4PS3A+FR8 + WL 4,B4PS3A+FR9 + WL 4,B4PS3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#missedb +#missed + WL 7,B4PS3A+FR5 + WL 4,B4PS3A+FR6 + WL 4,B4PS3A+FR7 + WL 4,B4PS3A+FR8 + WL 4,B4PS3A+FR9 + WL 4,B4PS3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#fireball + move a13,a11 + CREATE0 bam_fireball + rets + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR bam_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,B2AH2A+FR2 + WL 15,B2AH2A+FR3 + WL 3,B2AH2A+FR4 + WL 3,B2AH2A+FR5 + WL 3,B2AH2A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR bam_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,B4AH4A+FR2 + WL 3,B4AH4A+FR3 + WL 14,B4AH4A+FR4 + WL 2,B4AH4A+FR5 + WL 2,B4AH4A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR bam_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,B4AH4A+FR2 + WL 3,B4AH4A+FR3 + WL 14,B4AH4A+FR4 + WL 2,B4AH4A+FR5 + WL 2,B4AH4A+FR6 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,bam_dizzy_anim + .word ANI_END + + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR bam_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + + WL 4,B4LB4B+FR1 + WL 4,B4LB4B+FR2 + WL 4,B4LB4B+FR3 + WL 4,B4LB4B+FR4 + WL 4,B4LB4B+FR5 + WL 4,B4LB4B+FR6 + WL 4,B4LB4B+FR7 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 ELBOW DROP + +#yoff equ 50 + + SUBR bam_2_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_LBDROP,-1 + WL 3,B2PJ3A+FR3 + WL 3,B2PJ3A+FR4 + + ;if we're gonna miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,19,-6,-40,33,31,50 + WL 1,B2PJ3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#no_leapat + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + LEAPATOPP 20,999,112,96,90000h,TGT_USER,35,0+#yoff,-40 + .word ANI_SETPLYRMODE,MODE_INAIR + WL ANI_CODE,no_bk_xvel + +#no_leapat + WL 3,B2PJ3A+FR5 + WL 3,B2PJ3A+FR6 + .word ANI_OFFSET,0,#yoff,0 + WL 4,B2PJ3A+FR7 + WL 4,B2PJ3A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,19,-6,-40,33,31,50 + WL 1,B2PJ3A+FR9 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,2 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#hit +#missed + WL ANI_CODE,CALL_MISSES +#hit + WL 3,B2PJ3A+FR9 + WL 4,B2PJ3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + WL ANI_CHANGEANIM,bam_2_faceup_getup2_anim + +#***************************************************************************** +* +* #4 ELBOW DROP + +#yoff equ 40 + + SUBR bam_4_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LBDROP,-1 + WL 3,B3PJ3B+FR3 + WL 3,B3PJ3B+FR4 + + ;if we're gonna miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,19,-6,-40,33,31,50 + WL 1,B3PJ3B+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#no_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,112,96,90000h,TGT_USER,32,#yoff,40 + WL ANI_CODE,no_bk_xvel + +#no_leapat + WL 2,B3PJ3B+FR5 + .word ANI_OFFSET,0,#yoff,0 + WL 3,B3PJ3B+FR6 + WL 3,B3PJ3B+FR7 + WL 3,B3PJ3B+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,12,-9,-10,42,42,50 + WL 1,B3PJ3B+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,2 + + ;bounce off the guy + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,-18000h,AM_ABS + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#hit + +#missed + WL ANI_CODE,CALL_MISSES +#hit + + WL 3,B3PJ3B+FR9 + WL 4,B3GU4A+FR4 + + .word ANI_SETMODE,MODE_NORMAL + WL ANI_CHANGEANIM,bam_4_faceup_getup2_anim + +#***************************************************************************** +* +* #3 FLYING BUTT-DROP + +#yoff equ 51 + + SUBR bam_3_butt_drop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_BUTTSTOMP,38 + WL 4,B3JK3A+FR4 + WL 4,B3JK3A+FR5 + +; .word ANI_TARGET,TGT_HEAD,TGT_GROIN,ATM_FARTHEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,999,112,96,90000h,TGT_CHEST,9,3+#yoff,-20 + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_CODE,no_bk_xvel + WL 4,B3JK3A+FR6 + .word ANI_OFFSET,0,#yoff,0 + WL 4,B3JK3A+FR7 + .word ANI_ATTACK_ON,AMODE_BUTTSTOMP,-25,-7+5,55,23 + WWL ANI_WAITHITOPP,26,B3JK3A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,35 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFNOTSTATUS,#miss + +#hit + .word ANI_ZEROVELS + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL 4,B3JK3A+FR9 + WL 4,B3JK3A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 4,B3JK3A+FR9 + WL 4,B3JK3A+FR10 + .word ANI_OFFSET,15,9,0 + .word ANI_FACEUP + .word ANI_XFLIP + WL ANI_CHANGEANIM,bam_2_faceup_getup2_anim + +#miss ;missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,B3JK3A+FR9 + WL 4,B3JK3A+FR10 + .word ANI_OFFSET,15,9,0 + .word ANI_FACEUP + .word ANI_XFLIP + WL ANI_CHANGEANIM,bam_2_faceup_getup2_anim + +#***************************************************************************** +* +* TURNBUCKLE BELLYFLOP + + SUBR bam_bellyflop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOCOLLIS|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + + .word ANI_STARTATTACK,AT_LEAPING,44 + WL 4,B4FK4B+FR3 + WL 4,B4FK4B+FR4 + .word ANI_OFFSET,17,40,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 36,190,190,190,90000h,TGT_CHEST,18,0,20 + + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + + WL ANI_CODE,check_xvel + + WL 4,B4FK4B+FR5 + WL 4,B4FK4B+FR6 + WL 4,B4FK4B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-14,0,-20,86,27,60 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-14,15,-20,86,27,60 +#opp_onground + WWL ANI_WAITHITOPP,26,B4FK4B+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + + ;missed + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WL 4,B4FK4B+FR9 + WL 4,B4FK4B+FR10 + .word ANI_BOUNCE,4 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + WL ANI_CHANGEANIM,bam_4_faceup_getup3_anim + +#hit + WL 4,B4FK4F+FR9 + WL 4,B4FK4F+FR10 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,3 + + WL ANI_CODE,#attach_victim + WL ANI_SLAVEANIM,#release_table + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_INVISIBLE|MODE_NOSHADOW|MODE_NOCOLLIS + .word ANI_PAUSE,40 + + ;reappear + WL ANI_CODE,#set_new_position + .word ANI_SETMODE,MODE_UNINT|MODE_NOSHADOW|MODE_NOCOLLIS + + .word ANI_SOUND,0ABh + WL 4,B4RS4A+FR1 + WL 4,B4RS4A+FR2 + WL 4,B4RS4A+FR3 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + WL 4,B4RS4A+FR4 + WL 4,B4RS4A+FR5 + WL 4,B4RS4A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;attach victim just as if we'd puppeted him + SUBRP #attach_victim + + move *a13(WHOIHIT),a14,L + + PUSH a13 + move a13,a10 + move a14,a13 + calla hit_puppet ;pretend collision + PULL a13 + rets + + +;for now, just go to the middle of the ring + SUBRP #set_new_position + + movi RING_X_CENTER,a14 + move a14,*a13(OBJ_XPOSINT) + movi RING_Z_CENTER,a14 + move a14,*a13(OBJ_ZPOSINT) + movi MAT_Y,a14 + move a14,*a13(OBJ_YPOSINT) + rets + + +#release_table + .long xxx_burn_anim,xxx_burn_anim,xxx_burn_anim + .long xxx_burn_anim,xxx_burn_anim,xxx_burn_anim + .long xxx_burn_anim,xxx_burn_anim,xxx_burn_anim + +#***************************************************************************** +* +* BURN FROM BAM BAM FLAMING TURNBUCKLE SPLASH (generic - everyone uses this) + + SUBR xxx_burn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,#set_pal + WL 6,B4FK4F+FR11 + WL 6,B4FK4F+FR12 + WL 5,B4FK4F+FR13 + WL 5,B4FK4F+FR14 + + .word ANI_SET_RPTCOUNT,2 +#loop + WL 4,BURNBODY+FR1 + WL 4,BURNBODY+FR2 + WL 4,BURNBODY+FR3 + WL 4,BURNBODY+FR4 + WL 4,BURNBODY+FR5 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop + + WL ANI_CODE,#restore_pal + WL ANI_CHANGEANIM_TBL,#getup_table + +#set_pal + movi BAMBLU_P,a0 + calla pal_getf + move *a13(OBJ_PAL),*a13(MY_PAL),W + move a0,*a13(OBJ_PAL),W + rets + +#restore_pal + move *a13(MY_PAL),*a13(OBJ_PAL),W + rets + + + .ref hrt_faceup_getup_anim + .ref rzr_faceup_getup_anim + .ref und_faceup_getup_anim + .ref yok_faceup_getup_anim + .ref shn_faceup_getup_anim + .ref dnk_faceup_getup_anim + .ref lex_faceup_getup_anim + +#getup_table + .long hrt_faceup_getup_anim ;0 Bret Hart + .long rzr_faceup_getup_anim ;1 Razor Ramon + .long und_faceup_getup_anim ;2 Undertaker + .long yok_faceup_getup_anim ;3 Yokozuna + .long shn_faceup_getup_anim ;4 Shawn Michaels + .long bam_faceup_getup_anim ;5 Bam Bam + .long dnk_faceup_getup_anim ;6 Doink + .long 0 + .long lex_faceup_getup_anim ;8 Lex Luger + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR bam_2_butt_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,B2BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,12 + WL 3,B2BC3A+FR3 + WL 3,B2BC3A+FR4 + WL 3,B2BC3A+FR5 + WL 3,B2BC3A+FR6 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,5,79,40,19 ;mode,x,y,w,h + WL 3,B2BC3A+FR7 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,B2BC3A+FR7 +#no_hit + + WL 5,B2BC3A+FR7 + + WL 3,B2BC3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEADBUTT + + SUBR bam_4_butt_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,B4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,12 + WL 3,B4BC3A+FR2 + WL 3,B4BC3A+FR3 + WL 3,B4BC3A+FR4 + WL 3,B4BC3A+FR5 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,5,79,40,19 ;mode,x,y,w,h + WL 3,B4BC3A+FR6 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit2 + + WL ANI_SET_YVEL,38000h + WL 6,B4BC3A+FR6 +#no_hit2 + WL 5,B4BC3A+FR6 + + WL 3,B4BC3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK + + SUBR bam_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 2,B2KM3B+FR1 + WL 1,B2KM3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,5 + WL 1,B2KM3B+FR2 + WL 2,B2KM3B+FR3 + WL 2,B2KM3B+FR4 + + WL ANI_SET_YVEL,20000h + .word ANI_ATTACK_ON, AMODE_KICK,35,65,66,43 ;mode,x,y,w,h + WL 6,B2KM3B+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 6,B2KM3B+FR5 + +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B2KM3B+FR6 + WL 3,B2KM3B+FR7 + WL 3,B2KM3B+FR8 + WL 3,B2KM3B+FR9 + WL 3,B2KM3B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KICK + + SUBR bam_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 2,B4KM3A+FR1 + WL 1,B4KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,5 + WL 1,B4KM3A+FR2 + WL 2,B4KM3A+FR3 + WL 2,B4KM3A+FR4 + + WL ANI_SET_YVEL,20000h + .word ANI_ATTACK_ON, AMODE_KICK,37,62,62,35 ;mode,x,y,w,h + WL 6,B4KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 6,B4KM3A+FR5 + +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B4KM3A+FR6 + WL 3,B4KM3A+FR7 + WL 3,B4KM3A+FR8 + WL 3,B4KM3A+FR9 + WL 3,B4KM3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #2 SUPER KARATE KICK + + SUBR bam_2_superkick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,B2BG3A+FR1 + +* #4 SUPER KARATE KICK + + SUBR bam_4_superkick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_LEAPING,10 + WL 3,B4KM3E+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,65,35,90000h,TGT_HEAD,64,82,10 +; WLW ANI_SET_ZVEL,0h,AM_ABS + WL ANI_SET_YVEL,30000h + .word ANI_FRICTION,4000h + WL 3,B4KM3E+FR2 + WL 4,B4KM3E+FR3 + .word ANI_ATTACK_ON, AMODE_KICK,12,58,60,40 ;mode,x,y,w,h + WL 2,B4KM3E+FR5 + WLW ANI_SET_ZVEL,0h,AM_ABS + WL 5,B4KM3E+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;hit + .ref create_impact2 + WL ANI_CODE,create_impact2 + + .word ANI_ZEROVELS + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 7,B4KM3E+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +#no_hit2 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + + .word ANI_WAITHITGND + WL 3,B4KM3E+FR5 + WL 3,B4KM3E+FR6 + WL 3,B4KM3E+FR7 + WL 3,B4KM3E+FR7 + WL 3,B4KM3E+FR8 + WL 3,B4KM3E+FR9 + WL 3,B4KM3E+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed +#missedb + WL ANI_CODE,CALL_MISSES + WL 3,B4KM3E+FR5 + .word ANI_WAITHITGND + WL 3,B4KM3E+FR6 + WL 3,B4KM3E+FR7 + WL 3,B4KM3E+FR8 + WL 3,B4KM3E+FR9 + WL 3,B4KM3E+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 & #4 TURBO KICK + + SUBR bam_4_jumpkick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;;; .word ANI_SLOWMO,2 + + .word ANI_STARTATTACK,AT_LEAPING,19 + WL 3,B4KM3H+FR2 + WL 3,B4KM3H+FR3 + WL 3,B4KM3H+FR4 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 10,999,95,50,90000h,TGT_HEAD,70,100,20 + + WL 4,B4KM3H+FR5 + WL 3,B4KM3H+FR6 + WL 3,B4KM3H+FR7 + + + .word ANI_ATTACK_ON, AMODE_JUMPKICK,49,87,34,20 ;mode,x,y,w,h + WL 3,B4KM3H+FR9 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL 6,B4KM3H+FR9 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 6,B4KM3H+FR9 + + WL 3,B4KM3H+FR10 + WL 3,B4KM3H+FR11 + WL 3,B4KM3H+FR12 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 FLYING KICK + + SUBR bam_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,B3DC3B+FR4 + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_LEAPING,15 + + WL 1,B3DC3B+FR4 + + .ref get_leap + WL ANI_CODE,get_leap + WL ANI_IFSTATUS,#no_xvel + +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 17,999,145,65,90000h,TGT_HEAD,67,75,0 + LEAPATOPP 14,999,145,65,90000h,TGT_HEAD,57,75,0 + + WL ANI_GOTO,#cont + +#no_xvel + .word ANI_ZERO_XZVELS + WL ANI_SET_YVEL,64000h +#cont + WL 4,B3DC3B+FR5 + WL 7,B3DC3B+FR6 + .word ANI_OFFSET,0,50,0 ;x,y,z + WL 3,B3DC3B+FR7 + + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_FLYKICK,53,23,27,29 ;mode,x,y,w,h + WL 3,B3DC3B+FR8 + .word ANI_ATTACK_OFF + WL 3,B3DC3B+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_BOUNCE,3 + + WL 3,B3DC3B+FR11 +; WL 3,B3DC3B+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT +; WL 2,B3DC3B+FR9 + + WL 5,B3DC3B+FR11 + + .word ANI_XFLIP + .word ANI_OFFSET,5,0,0 ;x,y,z + + WL 3,B3GU2A+FR5 + WL 3,B3GU2A+FR6 + WL 3,B3GU2A+FR7 + WL 3,B3GU2A+FR8 + WL 3,B3GU2A+FR9 + +;Check for a flip here + WL 1,B3GU2A+FR10 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,B3GU2A+FR10 + + + WL 3,B3GU2A+FR10 + WL 3,B3GU2A+FR11 + WL 3,B3GU2A+FR12 + WL 3,B3GU2A+FR13 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + +;#***************************************************************************** +;* +;* #3 RUNNING HEADBUTT +; +; SUBR bam_running_headbutt +; +; .word ANI_SETMODE,MODE_UNINT ;uninterruptable +; .word ANI_SETSPEED,100h +; +; .word ANI_ZEROVELS +; WLW ANI_SET_XVEL,50000h,AM_FACE_REL +; +;#lp1 +; +;; WL 3,B3RN3A+FR1 +;; WL 3,B3RN3A+FR2 +;; WL 3,B3RN3A+FR3 +;; WL 3,B3RN3A+FR4 +;; WL 3,B3RN3A+FR5 +;; .word ANI_SOUND,run_snd +;; WL 3,B3RN3A+FR6 +;; WL 3,B3RN3A+FR7 +; .word ANI_STARTATTACK,AT_HDBUTT,36 +; WL 3,B3RN3A+FR8 +; WL 3,B3RN3A+FR9 +; WL 3,B3RN3A+FR10 +; WL 3,B3RN3A+FR11 +; .word ANI_SOUND,run_snd +; WL 3,B3RN3A+FR12 +; +; WL 3,B3RN3A+FR1 +; WL 3,B3RN3A+FR2 +; +; .word ANI_ZEROVELS +; +;;; WL 3,B2BC3A+FR2 +; WL 3,B2BC3A+FR3 +; WL 3,B2BC3A+FR4 +; WL 3,B2BC3A+FR5 +; WL 3,B2BC3A+FR6 +; +; .word ANI_ATTACK_ON, AMODE_HDBUTT,5,79,40,19 ;mode,x,y,w,h +; WL 3,B2BC3A+FR7 +; .word ANI_ATTACK_OFF +; WL 6,B2BC3A+FR7 +; +; WL 4,B2BC3A+FR8 +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END +; +; +; WL ANI_GOTO,#lp1 + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR bam_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,B2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_STOMP,16 + WL 3,B2MP2A+FR2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,13,0,-40,22,28,50 + WL 1,B2MP2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL 4,B2MP2A+FR3 + WL 4,B2MP2A+FR4 + WL 4,B2MP2A+FR5 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,13,0,-40,22,28,50 + WL 1,B2MP2A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL ANI_GOTO,#hit +#missed + WL ANI_CODE,CALL_MISSES +#hit + WL 5,B2MP2A+FR6 + WL 4,B2MP2A+FR7 + WL 4,B2MP2A+FR8 + WL 4,B2MP2A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#leapat_stomp + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,112,96,40000h,TGT_USER,24,0,-30 + WL ANI_CODE,no_bk_xvel + + WL 4,B2MP2A+FR3 + WL 4,B2MP2A+FR4 + WL 4,B2MP2A+FR5 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,13,0,-40,22,28,50 + WL 1,B2MP2A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#l_missed + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,13000h,AM_ABS + WL ANI_GOTO,#l_hit +#l_missed + WL ANI_CODE,CALL_MISSES +#l_hit + WL 5,B2MP2A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,B2MP2A+FR7 + WL 4,B2MP2A+FR8 + WL 4,B2MP2A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 STOMP ON FALLEN OPPONENT + + SUBR bam_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,B4MP4A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 3,B4MP4A+FR2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,-3,-5,-10,46,35,50 + WL 1,B4MP4A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat + + .word ANI_STARTATTACK,AT_STOMP,9 + WL 4,B4MP4A+FR3 + WL 3,B4MP4A+FR4 + WL 2,B4MP4A+FR5 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-5,-10,46,35,50 + WL 1,B4MP4A+FR6 + .word ANI_ATTACK_OFF + WL ANI_GOTO,#common + +#leapat + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,112,96,40000h,TGT_USER,12,0,30 + WL ANI_CODE,no_bk_xvel + + .word ANI_STARTATTACK,AT_STOMP,16 + WL 3,B4MP4A+FR3 + WL 3,B4MP4A+FR4 + WL 3,B4MP4A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-5,-10,46,35,50 + WL 1,B4MP4A+FR6 + .word ANI_ATTACK_OFF + +#common + WL ANI_IFNOTSTATUS,#missed + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL ANI_GOTO,#hit +#missed + WL ANI_CODE,CALL_MISSES +#hit + WL 5,B4MP4A+FR6 + WL 4,B4MP4A+FR7 + WL 4,B4MP4A+FR8 + WL 4,B4MP4A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 BIG BOOT + +; SUBR bam_2_bigboot_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_SETSPEED,100h +; .word ANI_ZEROVELS +; +; .word ANI_STARTATTACK,AT_BIGBOOT,12 +; WL 3,B2KM3B+FR1 +; WL 3,B2KM3B+FR2 +; WL 3,B2KM3B+FR3 +; WL 3,B2KM3B+FR4 +; +; WL ANI_CODE,#clrcnt +; WL ANI_SET_YVEL,20000h +; .word ANI_ATTACK_ON, AMODE_BIGBOOT,35,65,66,43 ;mode,x,y,w,h +; WL 2,B2KM3B+FR5 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS +;#lp +; WL 2,B2KM3B+FR5 +; WL ANI_CODE,#holdup +; WL ANI_IFSTATUS,#lp +; .word ANI_ATTACK_OFF +; +; WL 3,B2KM3B+FR6 +; WL 3,B2KM3B+FR7 +; WL 3,B2KM3B+FR8 +; WL 3,B2KM3B+FR9 +; WL 3,B2KM3B+FR10 +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + + +* #4 BIG BOOT + + SUBR bam_4_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_BIGBOOT,12 + WL 3,B4KM3A+FR1 + WL 3,B4KM3A+FR2 + WL 3,B4KM3A+FR3 + WL 3,B4KM3A+FR4 + + WL ANI_CODE,#clrcnt + WL ANI_SET_YVEL,20000h + .word ANI_ATTACK_ON, AMODE_BIGBOOT,37,62,62,35 ;mode,x,y,w,h + WL 2,B4KM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS +#lp0 + WL 2,B4KM3A+FR5 + WL ANI_CODE,#holdup + WL ANI_IFSTATUS,#lp0 + .word ANI_ATTACK_OFF + + WL 3,B4KM3A+FR6 + WL 3,B4KM3A+FR7 + WL 3,B4KM3A+FR8 + WL 3,B4KM3A+FR9 + WL 3,B4KM3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#clrcnt +;We are re-using BUT_COUNT in the player process + clr a0 + move a0,*a13(BUT_COUNT) + rets + +#holdup + move *a13(BUT_COUNT),a0 + inc a0 + move a0,*a13(BUT_COUNT) + +;Max time to hold up in air (*2 ticks) + cmpi 25,a0 + jrgt #button_up + + move *a13(PLYRNUM),a0 + .ref wres_get_but_val_cur + calla wres_get_but_val_cur + btst PLAYER_SKICK_BIT,a0 ;still down? + jrz #button_up + +;Still holding... + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#button_up + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* #2 KNEE + + SUBR bam_2_knee_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,B2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KNEE,21 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 21,999,36,30,90000h,TGT_CHEST,56,74,0 + + WL 3,B2NM3A+FR4 + + .word ANI_ATTACK_ON, AMODE_KNEE,34,31,52,51 ;mode,x,y,w,h + WL 3,B2NM3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL 3,B2NM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont + +#no_hit + WL ANI_IFNOTSTATUS,#nodrft + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL 15,B2NM3A+FR5 + .word ANI_ZERO_XZVELS +#nodrft + WL 1,B2NM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 3,B2NM3A+FR5 +#cont + WL 3,B2NM3A+FR6 + WL 3,B2NM3A+FR7 + WL 3,B2NM3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 KNEE + + SUBR bam_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,B4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KNEE,21 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 21,999,36,20,90000h,TGT_CHEST,46,74,0 + WL 3,B4NM3A+FR3 + WL 3,B4NM3A+FR4 + + .word ANI_ATTACK_ON, AMODE_KNEE,29,32,46,40 ;mode,x,y,w,h + WL 3,B4NM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hit2 + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + WL 3,B4NM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 +#no_hit2 + WL 1,B4NM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS +#cont2 + WL 3,B4NM3A+FR5 + WL 3,B4NM3A+FR4 + WL 3,B4NM3A+FR3 + WL 3,B4NM3A+FR2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + + SUBR bam_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_PUPPET,14 + WL 3,B1TT5Z+FR2 + WL 3,B1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR bam_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_PUPPET,8 + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + + WL 4,B4GF3A+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET,33,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,B4GF3A+FR2 +; WL 4,B4GF3A+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,B4GF3A+FR3 +; WL 4,B4GF3A+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;got him + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,B4GF3A+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,7,B4GF3A+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,5,B4GF3A+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,B4GF3A+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,5,B4GF3A+FR8,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,5,B4GF3A+FR9,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 6,B4GF3A+FR9 + WL 4,B4GF3A+FR11 + .word ANI_OFFSET,0,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missedb + WL 15,B4GF3A+FR3 +#missed + WL ANI_CODE,CALL_MISSES + WL 8,B4GF3A+FR3 + WL 4,B4GF3A+FR2 + WL 4,B4GF3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H4YR3A,H3RN3A + .ref R4YR3A,R3RN3D + .ref U4YR3B,U3RN3A + .ref Y4YR3A,Y3RN3C + .ref S4YR3A,S3RN3A + .ref B4YR3A,B3RN3A + .ref D4YR3B,D3RN3B + .ref L4YR3B,L3RN3B + +#Bret + LWWW H4YR3A+FR1,54,5,1 + LWWW H4YR3A+FR2,44,7,1 + LWWW H4YR3A+FR3,34,12,1 + LWWW H4YR3A+FR5,16,8,1 + LWWW H3RN3A+FR1,10,-10,0 + LWWW H3RN3A+FR2,-45,-8,0 +#Razor + LWWW R4YR3A+FR1,37,14,0 + LWWW R4YR3A+FR2,21,18,0 + LWWW R4YR3A+FR3,-9,14,0 + LWWW R4YR3A+FR4,-28,10,0 + LWWW R3RN3D+FR10,16,3,0 + LWWW R3RN3D+FR11,-29,2,0 +#Taker + LWWW U4YR3B+FR2,42,18,0 + LWWW U4YR3B+FR3,37,15,0 + LWWW U4YR3B+FR4,15,26,0 + LWWW U4YR3B+FR5,4,19,0 + LWWW U3RN3A+FR1,17,4,0 + LWWW U3RN3A+FR2,-31,1,0 +#Yokozuna + LWWW Y4YR3A+FR1,54,10,1 + LWWW Y4YR3A+FR4,25,13,1 + LWWW Y4YR3A+FR5,14,17,1 + LWWW Y4YR3A+FR7,-10,1,1 + LWWW Y3RN3C+FR7,34,3,0 + LWWW Y3RN3C+FR8,2,0,0 +#Shawn + LWWW S4YR3A+FR2,36,4,1 + LWWW S4YR3A+FR3,45,-4,1 + LWWW S4YR3A+FR5,8,14,1 + LWWW S4YR3A+FR6,-4,6,1 + LWWW S3RN3A+FR2,18,-4,0 + LWWW S3RN3A+FR3,-19,-5,0 +#BamBam + LWWW B4YR3A+FR3,46,11,0 + LWWW B4YR3A+FR4,53,7,0 + LWWW B4YR3A+FR5,46,13,0 + LWWW B4YR3A+FR7,-21,3,0 + LWWW B3RN3A+FR1,16,0,0 + LWWW B3RN3A+FR2,-41,0,0 +#Doink + LWWW D4YR3B+FR1,71,9,1 + LWWW D4YR3B+FR2,60,13,1 + LWWW D4YR3B+FR3,38,17,1 + LWWW D4YR3B+FR4,8,12,1 + LWWW D3RN3B+FR3,27,3,0 + LWWW D3RN3B+FR4,-35,-1,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,67,10,1 + LWWW L4YR3B+FR2,43,5,1 + LWWW L4YR3B+FR3,20,12,1 + LWWW L4YR3B+FR4,-27,5,1 + LWWW L3RN3B+FR2,27,1,0 + LWWW L3RN3B+FR3,-19,-3,0 + + +#strt_run_tbl + .ref start_run_flung + + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR bam_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,B2AH2A+FR1 + WL 3,B2AH2A+FR2 + WL 3,B2AH2A+FR3 + WL 3,B2AH2A+FR4 + WL 3,B2AH2A+FR5 + WL 3,B2AH2A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT + + SUBR bam_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,B4AH4A+FR1 + WL 3,B4AH4A+FR2 + WL 3,B4AH4A+FR3 + WL 3,B4AH4A+FR4 + WL 3,B4AH4A+FR5 + WL 3,B4AH4A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #2 HEAD HIT - From spin kick + + SUBR bam_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + WL 3,B2AH2A+FR1 + WL 3,B2AH2A+FR2 + WL 1,B2AH2A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B2AH2A+FR4 + WL 3,B2AH2A+FR5 + WL 3,B2AH2A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT - From spin kick + + SUBR bam_4_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,B4AH4A+FR1 + WL 3,B4AH4A+FR2 + WL 1,B4AH4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B4AH4A+FR4 + WL 3,B4AH4A+FR5 + WL 3,B4AH4A+FR6 + + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_head_hit4_anim +;From earslap + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; WLW ANI_SET_XVEL,-28000h,AM_HIT_REL +; WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 4,B4AH4A+FR3 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + WL 4,B4AH4A+FR4 + WL 4,B4AH4A+FR5 + WL 4,B4AH4A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* HEAD HIT2 (HANDS ON FACE) + + SUBR bam_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 4,B3AE3A+FR2 + WL 4,B3AE3A+FR3 + WL 4,B3AE3A+FR4 + WL 4,B3AE3A+FR5 + WL 4,B3AE3A+FR6 + WL 4,B3AE3A+FR7 + WL 4,B3AE3A+FR8 + WL 4,B3AE3A+FR9 + WL 4,B3AE3A+FR10 + WL 4,B3AE3A+FR11 + WL 4,B3AE3A+FR12 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* HEAD HIT2 (ENDS IN DIZZY) + + SUBR bam_head_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,B3AE3A+FR2 + WL 4,B3AE3A+FR3 + WL 4,B3AE3A+FR4 + WL 4,B3AE3A+FR5 + WL 4,B3AE3A+FR6 + WL 4,B3AE3A+FR7 + WL 4,B3AE3A+FR8 + WL 4,B3AE3A+FR9 + WL 4,B3AE3A+FR10 + WL 4,B3AE3A+FR11 + WL 4,B3AE3A+FR12 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,bam_dizzy_anim + + .word ANI_END + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR bam_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .ref ckzpos + WL ANI_CODE,ckzpos + + WL 3,B2AM2A+FR1 + WL 3,B2AM2A+FR2 + WL 3,B2AM2A+FR3 + WL 1,B2AM2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B2AM2A+FR5 + WL 3,B2AM2A+FR6 + WL 3,B2AM2A+FR7 + WL 3,B2AM2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 BODY HIT + + SUBR bam_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .ref ckzpos + WL ANI_CODE,ckzpos + + WL 3,B4AM4A+FR1 + WL 3,B4AM4A+FR2 + WL 3,B4AM4A+FR3 + WL 1,B4AM4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B4AM4A+FR5 + WL 3,B4AM4A+FR6 + WL 3,B4AM4A+FR7 + WL 3,B4AM4A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 BODY HIT - DIZZY + + SUBR bam_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .ref ckzpos + WL ANI_CODE,ckzpos + + WL 3,B4AM4A+FR1 + WL 3,B4AM4A+FR2 + WL 3,B4AM4A+FR3 + WL 1,B4AM4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B4AM4A+FR5 + WL 3,B4AM4A+FR6 + WL 3,B4AM4A+FR7 + WL 3,B4AM4A+FR8 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,bam_dizzy_anim + + .word ANI_END + + + SUBR bam_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + WL 3,B2AM2A+FR1 + WL 3,B2AM2A+FR2 + WL 3,B2AM2A+FR3 + WL 1,B2AM2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B2AM2A+FR5 + WL 3,B2AM2A+FR6 + WL 3,B2AM2A+FR7 + WL 3,B2AM2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_DIZZY + + .ref ckzpos + WL ANI_CODE,ckzpos + + WL 3,B4AM4A+FR1 + WL 3,B4AM4A+FR2 + WL 3,B4AM4A+FR3 + WL 1,B4AM4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B4AM4A+FR5 + WL 3,B4AM4A+FR6 + WL 3,B4AM4A+FR7 + WL 3,B4AM4A+FR8 +; .word ANI_OFFSET,0,0,0 ;x,y,z + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,bam_dizzy_anim + .word ANI_END + +* #4 BODY HIT + + SUBR bam_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + WL 3,B4AM4A+FR1 + WL 3,B4AM4A+FR2 + WL 3,B4AM4A+FR3 + WL 1,B4AM4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B4AM4A+FR5 + WL 3,B4AM4A+FR6 + WL 3,B4AM4A+FR7 + WL 3,B4AM4A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,B4AM4A+FR1 + WL 3,B4AM4A+FR2 + WL 3,B4AM4A+FR3 + WL 3,B4AM4A+FR4 + WL 3,B4AM4A+FR5 + WL 3,B4AM4A+FR6 + WL 3,B4AM4A+FR7 + WL 3,B4AM4A+FR8 + + .word ANI_FACEDOWN + + + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,bam_fall_back_anim + .word ANI_END + +#nodead + + + + .ref bam_3_head_held_anim + WL ANI_CHANGEANIM,bam_3_head_held_anim + + .word ANI_END + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR bam_hitonground_xflip_anim + .word ANI_XFLIP + ;fall through + + SUBR bam_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL 1,B3CP3B+FR1 + WL ANI_SET_YVEL,39000h + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 2,B3CP3B+FR1 + WL 3,B3CP3B+FR2 + WL 3,B3CP3B+FR3 + WL 3,B3CP3B+FR4 + WL 3,B3CP3B+FR5 + WL 3,B3CP3B+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,B3CP3B+FR7 + WL 4,B3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* FALL BACK + + SUBR bam_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,68000h + + .ref ckzpos + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[106,-29] ;Y,X of head + WL 4,B4UC3B+FR1 + .word ANI_OFFSET,0,52,0 + WWL ANI_SETLONG,DEBRIS_X,[44,-42] ;Y,X of head + WL 4,B4UC3B+FR2 + WWL ANI_SETLONG,DEBRIS_X,[37,-45] ;Y,X of head + WL 4,B4UC3B+FR3 + WWL ANI_SETLONG,DEBRIS_X,[24,-50] ;Y,X of head + WL 4,B4UC3B+FR4 + WWL ANI_SETLONG,DEBRIS_X,[16,-54] ;Y,X of head + WL 4,B4UC3B+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + + .word ANI_FRICTION,2000h + + WWL ANI_SETLONG,DEBRIS_X,[14,-54] ;Y,X of head + WL 2,B4UC3B+FR6 + .word ANI_BOUNCE,5 + WL 2,B4UC3B+FR6 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WWL ANI_SETLONG,DEBRIS_X,[14,-54] ;Y,X of head + WL 4,B4UC3B+FR7 + WWL ANI_SETLONG,DEBRIS_X,[14,-54] ;Y,X of head + WL 4,B4UC3B+FR8 + .word ANI_OFFSET,8,0,5 ;x,y,z + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 4,B3RL1A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + .word ANI_END + + SUBR bam_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,18000h + + WLW ANI_SET_ZVEL,18000h,AM_ABS + .ref ckzpos + WL ANI_CODE,ckzpos + + WL 4,B4UC3B+FR1 + .word ANI_OFFSET,0,52,0 + WL 4,B4UC3B+FR2 + WL 4,B4UC3B+FR3 + WL 4,B4UC3B+FR4 + WL 4,B4UC3B+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + + WL 4,B3FD3C+FR1 + WL 4,B3FD3C+FR2 + WL 4,B3FD3C+FR3 + WL 4,B3FD3C+FR4 + WL 4,B3FD3C+FR5 + .word ANI_OFFSET,-35,0,0 ;x,y,z + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL ANI_CODE,HIT_THE_MAT + + WL 3,B3MS3X+FR1 + WL 3,B3MS3X+FR2 + WL 3,B3MS3X+FR3 + + WL 20,B3RL1A+FR7 + + WL ANI_CHANGEANIM,bam_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR bam_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + + WL 4,B4UC3B+FR1 + .word ANI_OFFSET,0,52,0 + WL 4,B4UC3B+FR2 + WL 4,B4UC3B+FR3 + WL 4,B4UC3B+FR4 + WL 4,B4UC3B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + +; .word ANI_FRICTION,2000h + + WL 2,B4UC3B+FR6 +; .word ANI_BOUNCE,5 + WL 2,B4UC3B+FR6 + +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_ZEROVELS + + WL 4,B4UC3B+FR7 + WL 4,B4UC3B+FR8 + .word ANI_OFFSET,8,0,5 ;x,y,z + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 4,B3RL1A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + +#***************************************************************************** +* + + SUBR bam_faceup_getup_anim + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,bam_4_faceup_getup_anim + WL ANI_CHANGEANIM,bam_2_faceup_getup_anim + + SUBR bam_2_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_STARS + .word ANI_CLR_DAMAGE + + WL 3,B3GU2A+FR1 + WL ANI_GOTO,#common2 + + SUBR bam_2_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_STARS + .word ANI_CLR_DAMAGE + +#common2 + WL 3,B3GU2A+FR2 + WL 3,B3GU2A+FR3 + WL 3,B3GU2A+FR4 + WL 3,B3GU2A+FR5 + WL 3,B3GU2A+FR6 + WL 3,B3GU2A+FR7 + WL 3,B3GU2A+FR8 + WL 3,B3GU2A+FR9 + +;Check for a flip here + WL 1,B3GU2A+FR10 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,B3GU2A+FR10 + + WL 3,B3GU2A+FR11 + WL 3,B3GU2A+FR12 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_STARS + .word ANI_CLR_DAMAGE + WL 3,B3GU4A+FR1 + WL 3,B3GU4A+FR2 + WL 3,B3GU4A+FR3 + WL ANI_GOTO,#common4 + + SUBR bam_4_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_STARS + .word ANI_CLR_DAMAGE + +#common4 + WL 3,B3GU4A+FR4 + WL 3,B3GU4A+FR5 + WL 3,B3GU4A+FR6 +#frame7 + WL 3,B3GU4A+FR7 + WL 3,B3GU4A+FR8 + WL 3,B3GU4A+FR9 + + + +;Check for a flip here + WL 1,B3GU4A+FR10 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,B3GU4A+FR10 + + WL 3,B3GU4A+FR11 + WL 3,B3GU4A+FR12 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR bam_4_faceup_getup3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_STARS + .word ANI_CLR_DAMAGE + WL ANI_GOTO,#frame7 + + +#***************************************************************************** +* +* DIZZY + + SUBR bam_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + + WL 8,B4TI4A+FR1 + WL 8,B4TI4A+FR2 + WL 8,B4TI4A+FR3 + WL 8,B4TI4A+FR4 + WL 8,B4TI4A+FR5 + WL 8,B4TI4A+FR6 + WL 8,B4TI4A+FR7 + WL 8,B4TI4A+FR6 + WL 8,B4TI4A+FR5 + WL 8,B4TI4A+FR4 + WL 8,B4TI4A+FR3 + WL 8,B4TI4A+FR2 + + WL ANI_GOTO,#loop + + +#***************************************************************************** + + SUBR bam_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*10/255 ;inv multiply (0-255 -> 0-10) + + .long B3RL1A+FR1 ;0 + .long B3RL1A+FR2 ;1 + .long B3RL1A+FR3 ;2 + .long B3RL1A+FR4 ;3 + .long B3RL1A+FR5 ;4 + .long B3RL1A+FR6 ;5 + .long B3RL1A+FR7 ;6 + .long B3RL1A+FR8 ;7 + .long B3RL1A+FR9 ;8 + .long B3RL1A+FR10 ;9 + .long B3RL1A+FR11 ;10 + .long 0,0,0,0,0,0 + + +;#***************************************************************************** +; +; SUBR bam_leap_test +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +; .word ANI_STARTATTACK,AT_STOMP,80 +; WL 10,B4TI4A+FR1 +; +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 69,999,800h,20,90000h,TGT_CHEST,80,0,0 +; +; WL 70-3,B4TI4A+FR1 +; +;; .word ANI_ATTACK_ON, AMODE_STOMP,-20,0,40,20 ;mode,x,y,w,h +; +; .word ANI_SLOWMO,20 +; +; WL 3,B4TI4A+FR1 +; .word ANI_ATTACK_OFF +; +; .word ANI_ZEROVELS +; +;;;; .word ANI_SOUND,bounce_l1 +; +; .word ANI_GRAVITY_OFF +; +;;;; WL ANI_CODE,#lockup +; +; WL 3,B4TI4A+FR1 +; WL ANI_CODE,HIT_THE_MAT +; +; WL 20,B4TI4A+FR1 +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_GRAVITY_ON +; WL 20,B4TI4A+FR1 +; +; .word ANI_SLOWMO,0 +; +; +; WL 60,B3RL1A+FR1 +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END +; +; +;#lockup +; nop +; LOCKUP +; nop +; rets +; +#***************************************************************************** +* +* Get tossed out of ring from Shawn's Frankensteiner +* + + SUBR bam_rxn2_fsteiner_anim + + .word ANI_END + +#***************************************************************************** +* +* #2 BLOCK + + SUBR bam_2_block_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZERO_XZVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 3,B2BK3B+FR1 + WL 3,B2BK3B+FR2 +#blk2 WL 3,B2BK3B+FR3 + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + WL 3,B2BK3B+FR2 + WL 3,B2BK3B+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_2_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_FRICTION,4000h + .word ANI_SETSPEED,100h + + WL 2,B2BK3B+FR4 + WL 2,B2BK3B+FR5 + WL 2,B2BK3B+FR4 + WL ANI_GOTO,#blk2 + + +* #4 BLOCK + + SUBR bam_4_block_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZERO_XZVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + + + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 3,B4BK3D+FR2 + WL 3,B4BK3D+FR3 +#blk4 WL 3,B4BK3D+FR4 + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + WL 3,B4BK3D+FR3 + WL 3,B4BK3D+FR2 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_FRICTION,4000h + .word ANI_SETSPEED,100h + WL 2,B4BK3D+FR6 + WL 2,B4BK3D+FR7 + WL 2,B4BK3D+FR8 + WL 2,B4BK3D+FR7 + WL 2,B4BK3D+FR6 + WL ANI_GOTO,#blk4 + + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR bam_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WL 8,B4TD3B+FR5 + WL 8,B4TD3B+FR6 + WL 8,B4TD3B+FR7 + WL 1,B4TD3B+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + + .word ANI_DAMAGE,D_HIPTOSS + .word ANI_SETWORD,DELAY_METER,0 + .word ANI_GETUP,500 + + .word ANI_OFFSET,10,0,0 + WL 3,B4TD3B+FR9 + WL ANI_CHANGEANIM,bam_hitonground_xflip_anim + + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR bam_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + .word ANI_XFLIP + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,300 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + .word ANI_OFFSET,15,0,0 ;x,y,z + WL 1,B3CP3B+FR1 + WL ANI_SET_YVEL,50000h + WL 3,B3CP3B+FR1 + WL 4,B3CP3B+FR2 + WL 4,B3CP3B+FR3 + WL 4,B3CP3B+FR4 + WL 4,B3CP3B+FR5 + WL 4,B3CP3B+FR6 + WL 4,B3CP3B+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 3,B3RL1A+FR1 ;1st frame of roll + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR bam_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,B4TD3B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,300 + .word ANI_DAMAGE,D_HIPTOSS + + WL 3,B4TD3B+FR8 + WL 3,B4TD3B+FR9 + + .word ANI_XFLIP + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_OFFSET,15,0,0 ;x,y,z + WL 4,B3CP3B+FR1 + WL 4,B3CP3B+FR2 + WL 4,B3CP3B+FR3 + WL 4,B3CP3B+FR4 + WL 4,B3CP3B+FR5 + WL 4,B3CP3B+FR6 + WL 4,B3CP3B+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 3,B3RL1A+FR1 ;1st frame of roll + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* + + SUBR bam_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + WL 2,B3GU4A+FR12 + WL 2,B3GU4A+FR10 + WL 2,B3GU4A+FR7 + WL ANI_SET_YVEL,39000h + + WL 3,B3CP3B+FR1 + WL 3,B3CP3B+FR2 + WL 3,B3CP3B+FR3 + WL 3,B3CP3B+FR4 + WL 3,B3CP3B+FR5 + WL 3,B3CP3B+FR6 + WL 3,B3CP3B+FR7 + + WL 4,B3RL1A+FR1 ;1st frame of roll + + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + .word ANI_END + +#***************************************************************************** + SUBR bam_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WLW ANI_SET_XVEL,2000h,AM_FACE_REL + + .word ANI_OFFSET,16,0,0 + WL 4,B4CR7A+FR2 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,3,0,0 ;***** + WL 4,B4CR7A+FR3 + .word ANI_OFFSET,3,0,0 ;***** + WL 4,B4CR7A+FR4 + + .word ANI_BENDROPE,2 + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + .word ANI_OFFSET,5,0,0 ;***** + WL 4,B4CR7A+FR5 + + .word ANI_OFFSET,3,0,0 ;***** + WL 4,B4CR7A+FR6 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,3,0,0 ;***** + WL 4,B4CR7A+FR7 + .word ANI_OFFSET,4,0,0 ;***** + WL 4,B4CR7A+FR8 + .word ANI_BENDROPE,3 + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + .word ANI_OFFSET,5,0,0 ;***** + WL 4,B4CR7A+FR9 + .word ANI_OFFSET,5,0,0 ;***** + WL 4,B4CR7A+FR10 + .word ANI_ZEROVELS + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,10,-3,0 + WL 4,B4CR7A+FR11 + .word ANI_OFFSET,2,0,0 ;***** + WL 4,B4CR7A+FR12 + + ;now jump off... + WL 4,B2JD4A+FR1 ;D4FM4A+FR1 + WL 4,B2JD4A+FR2 + WL 3,B2JD4A+FR3 + + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,B2JD4A+FR4 + .word ANI_WAITHITGND + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 3,B2JD4A+FR6 + WL 3,B2JD4A+FR7 + WL 6,B2JD4A+FR8 + WL 3,B2JD4A+FR9 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR bam_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in + WL 4,B2JD4A+FR1 + WL 4,B2JD4A+FR2 + + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,1ch,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 4,B2JD4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + WL 4,B2JD4A+FR6 + WL 3,B2JD4A+FR7 + .word ANI_OFFSET,13,0,0 ;***** + WL 3,B2JD4A+FR8 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + WL ANI_CODE,#set_z + WLW ANI_SET_XVEL,2000h,AM_FACE_REL + + ;climb through + .word ANI_OFFSET,3,0,0 ;***** + WL 3,B4CR7A+FR2 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,B4CR7A+FR3 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,B4CR7A+FR4 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,B4CR7A+FR5 + + .word ANI_BENDROPE,2 + + .word ANI_OFFSET,3,0,0 ;***** + WL 3,B4CR7A+FR6 + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_BENDROPE,2 + .word ANI_OFFSET,5,0,0 ;***** + WL 3,B4CR7A+FR7 + .word ANI_OFFSET,5,0,0 ;***** + WL 3,B4CR7A+FR8 + .word ANI_BENDROPE,3 + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_OFFSET,5,0,0 ;***** + WL 3,B4CR7A+FR9 + .word ANI_OFFSET,5,0,0 ;***** + WL 3,B4CR7A+FR10 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,10,-3,0 + WL 3,B4CR7A+FR11 + WL 3,B4CR7A+FR12 + .word ANI_ZEROVELS + + WL ANI_CODE,clr_climb + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets +#set_z + +clr_climb + + clr a0 + move a0,*a13(CLIMBING_THRU) ;1=Climbing thru ropes flag + rets + +#***************************************************************************** + + SUBR bam_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL 3,B3GU2A+FR13 + WL 3,B3GU2A+FR12 + WL 3,B3GU2A+FR11 + WL 3,B3GU2A+FR10 + WL 3,B3GU2A+FR9 + WL 3,B3GU2A+FR8 + WL 3,B3GU2A+FR7 + WL 3,B3GU2A+FR6 + WL 3,B3GU2A+FR5 + WL 3,B3GU2A+FR4 + WL 3,B3GU2A+FR2 + WL 3,B3GU2A+FR1 + + ;roll over once + WLW ANI_SET_ZVEL,0A8000h,AM_ABS + + WL 3,B3RL1A+FR1 + WL 3,B3RL1A+FR2 + WL 3,B3RL1A+FR3 + WL 3,B3RL1A+FR4 + WL 3,B3RL1A+FR5 + WL 3,B3RL1A+FR6 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + + ;climb through + .WORD ANI_XFLIP + WL ANI_CODE,NOT_IN_RING + .word ANI_OFFSET,20,-37h,0 ;x,y,z + WL 3,B2KM3E+FR6 + WL 3,B2KM3E+FR3 + WL 3,B2KM3E+FR2 + .WORD ANI_XFLIP + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +NOT_IN_RING + MOVK 1,A0 + MOVE A0,*A13(INRING) + RETS + +#***************************************************************************** + + SUBR bam_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .WORD ANI_XFLIP + WL 3,B2KM3E+FR2 + WL 3,B2KM3E+FR3 + WL 3,B2KM3E+FR6 + .word ANI_OFFSET,-20,37h,-60 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,B3RL1A+FR11 + WL 3,B3RL1A+FR10 + WL 3,B3RL1A+FR9 + WL 3,B3RL1A+FR8 + WL 3,B3RL1A+FR7 + WL 3,B3RL1A+FR6 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,B3GU2A+FR1 + WL 3,B3GU2A+FR2 + WL 3,B3GU2A+FR3 + WL 3,B3GU2A+FR4 + WL 3,B3GU2A+FR5 + WL 3,B3GU2A+FR6 + WL 3,B3GU2A+FR7 + WL 3,B3GU2A+FR8 + WL 3,B3GU2A+FR9 + WL 3,B3GU2A+FR10 + WL 3,B3GU2A+FR11 + WL 3,B3GU2A+FR12 + WL 3,B3GU2A+FR13 + + WL ANI_CODE,clr_climb + + .WORD ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR bam_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,B1TT5Z+FR2 + WL 3,B1TT5Z+FR3 + +#dir4 + WL 3,B3GU4A+FR12 + WL 3,B3GU4A+FR11 + WL 3,B3GU4A+FR10 + WL 3,B3GU4A+FR9 + WL 3,B3GU4A+FR8 + WL 3,B3GU4A+FR7 + WL 3,B3GU4A+FR6 + WL 3,B3GU4A+FR5 + WL 3,B3GU4A+FR4 + WL 3,B3GU4A+FR3 + WL 3,B3GU4A+FR2 + WL 3,B3GU4A+FR1 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,B3RL1A+FR11 + WL 3,B3RL1A+FR10 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + WL 3,B3RL1A+FR9 + WL 3,B3RL1A+FR8 + WL 3,B3RL1A+FR7 + + ;climb through + .word ANI_ZEROVELS + .word ANI_OFFSET,0,-61,0 + .WORD ANI_XFLIP + WL 3,B4KM3E+FR2 + WL 3,B4KM3E+FR1 + .WORD ANI_XFLIP + + .word ANI_ZERO_XZVELS + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + + +#***************************************************************************** + + SUBR bam_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,B4KM3E+FR1 + WL 3,B4KM3E+FR2 + WL 3,B4KM3E+FR4 + .word ANI_OFFSET,0,61,0 + .WORD ANI_XFLIP + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,B3RL1A+FR8 + WL 3,B3RL1A+FR9 + WL 3,B3RL1A+FR10 + WL 3,B3RL1A+FR11 + + .word ANI_ZEROVELS + + ;get up + WL 3,B3GU4A+FR1 + WL 3,B3GU4A+FR2 + WL 3,B3GU4A+FR3 + WL 3,B3GU4A+FR4 + WL 3,B3GU4A+FR5 + WL 3,B3GU4A+FR6 + WL 3,B3GU4A+FR7 + WL 3,B3GU4A+FR8 + WL 3,B3GU4A+FR9 + WL 3,B3GU4A+FR10 + WL 3,B3GU4A+FR11 + WL 3,B3GU4A+FR12 + + WL ANI_CODE,clr_climb + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#set_zvel2 + movi 50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR bam_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,B1TT5Z+FR2 ;2.5 + WL 3,B1TT5Z+FR3 ;3.5 + WL ANI_GOTO,#cont + + SUBR bam_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,999,80h,50h,90000h,TGT_CHEST,0,57,-15 + + WL 3,B2PN5A+FR3 + .word ANI_OFFSET,0,34,0 ;x,y,z + WL 22,B2PN5A+FR4 +; .word ANI_WAITHITGND + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + +; WLW ANI_ATTCHIMAGE,D4PN5L+FR4,10 ;image, zoff (priority) + WL 3,B2PN5A+FR5 + WL ANI_CODE,DO_CROWD_CHEER + + .word ANI_ATTACK_OFF + WL ANI_CODE,HIT_THE_MAT + .word ANI_BOUNCE,4 +; WLW ANI_ATTCHIMAGE,D4PN5L+FR5,10 ;image, zoff (priority) + WL 3,B2PN5A+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + WL 4,B2PN5A+FR7 + .ref win_announce + WL ANI_CODE,win_announce +; WLW ANI_ATTCHIMAGE,0,0 ;Turn it off +; WL 40,D4PN5A+FR6 + .word ANI_OFFSET,0,0,20 ;x,y,z + WL 40,B2PN5A+FR5 + +;???? IS THIS WHERE IT GOES ? + .word ANI_LOOP +;Do another ground hit on opponent + .ref grnd_hit + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,-22000h,AM_ABS + WL 4,B5RV5A+FR1 + WL 4,B5RV5A+FR2 + WL 4,B5RV5A+FR3 + WL 4,B5RV5A+FR4 + WL 4,B5RV5A+FR5 + WL 4,B5RV5A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,B4WC4B+FR1 + WL 4,B4WC4B+FR2 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + + WL 4,B4WC4B+FR2 + WL 4,B4WC4B+FR1 + + WL 4,B5RV5A+FR8 + WL 1000,B5RV5A+FR7 + + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* HIP TOSS RUNNING OPPONENT + + SUBR bam_3_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,6 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 6,40,40,40,90000h,TGT_CHEST,20,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,B3DR3B+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET,16,40,42,42 ;mode,x,y,w,h + WL 2,B3DR3B+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,6,B3DR3B+FR2 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;got him + .ref DO_SNAP_MESS + WL ANI_CODE,DO_SNAP_MESS + .ref CALL_SPECIAL_MOVE + WL ANI_CODE,CALL_SPECIAL_MOVE + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED +; .word ANI_DAMAGEOPP,D_HIPTOSS + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR6,#puppet_tbl,3 + WL ANI_SET_YVEL,20000h +; WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR7,#puppet_tbl,4 + + WL ANI_SLAVEANIM,#rollout_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + + WL 10,B3DR3B+FR8 + WL 6,B3DR3B+FR9 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 6,B3DR3B+FR10 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 15,B3DR3B+FR3 +#missed + WL 10,B3DR3B+FR3 + WL 4,B3DR3B+FR2 + WL 4,B3DR3B+FR1 + + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H3FR3A,H2AM3A + LWWW H3FR3A+FR1,34,16,0 + LWWW H2AM3A+FR7,27,17,0 + LWWW H3FR3A+FR2,11,12,0 + LWWW H3FR3A+FR3,1,27,0 + LWWW H3FR3A+FR3,-9,13,0 + .long 0 + +#Razor + .ref R3TD3A + LWWW R3TD3A+FR2,24,15,0 + LWWW R3TD3A+FR3,16,14,0 + LWWW R3TD3A+FR4,8,11,0 + LWWW R3TD3A+FR5,7,24,0 + LWWW R3TD3A+FR6,-3,22,0 + .long 0 +#Taker + .ref U4AM4C,U3FH3A + LWWW U4AM4C+FR4,25,38,0 + LWWW U3FH3A+FR1,27,20,1 + LWWW U3FH3A+FR2,8,9,1 + LWWW U3FH3A+FR3,1,4,1 + LWWW U3FH3A+FR4,-8,8,1 + .long 0 +#Yokozuna + .ref Y3FL3W,Y5GU4B + LWWW Y5GU4B+FR7,23,26,0 + LWWW Y5GU4B+FR7,15,32,0 + LWWW Y3FL3W+FR3,-15,22,0 +; LWWW Y3PP3Q+FR1,-2,22,0 + LWWW Y3FL3W+FR4,-15,16,0 + LWWW Y3FL3W+FR5,-4,15,0 + + + +; LWWW Y3FL3W+FR1,28,43,0 +; LWWW Y3FL3W+FR2,12,38,0 +; LWWW Y3FL3W+FR3,-15,22,0 +; LWWW Y3FL3W+FR4,-15,16,0 +; LWWW Y3FL3W+FR5,-4,15,0 + .long 0 +#Shawn + .ref S3OS3X + LWWW S3OS3X+FR3,23,47,1 + LWWW S3OS3X+FR4,-7,41,1 + LWWW S3OS3X+FR5,-31,25,1 + LWWW S3OS3X+FR6,-27,43,1 + LWWW S3OS3X+FR7,-8,42,1 + .long 0 +#BamBam + .ref B4TD3B + LWWW B4TD3B+FR2,19,30,0 + LWWW B4TD3B+FR3,11,27,0 + LWWW B4TD3B+FR4,7,15,0 + LWWW B4TD3B+FR5,-3,35,0 + LWWW B4TD3B+FR6,-10,43,0 + .long 0 +#Doink + .ref D3OS3A + LWWW D3OS3A+FR1,26,19,0 + LWWW D3OS3A+FR2,9,22,0 + LWWW D3OS3A+FR3,-7,13,0 + LWWW D3OS3A+FR4,-12,12,0 + LWWW D3OS3A+FR5,-6,11,0 + .long 0 +#Adam + .long 0 +#Lex + .ref L4AM4B,L3FH3A + LWWW L3FH3A+FR1,22,25,0 + LWWW L3FH3A+FR2,19,10,0 + LWWW L3FH3A+FR3,11,14,0 + LWWW L3FH3A+FR4,12,12,0 + LWWW L3FH3A+FR5,8,7,0 + .long 0 + + .ref hrt_tossed2_anim + .ref shn_tossed2_anim +; .ref bam_tossed2_anim + .ref dnk_tossed2_anim + .ref und_tossed2_anim + .ref lex_tossed2_anim + .ref rzr_tossed2_anim + .ref yok_tossed2_anim + +#rollout_tbl + .long hrt_tossed2_anim,rzr_tossed2_anim + .long und_tossed2_anim + .long yok_tossed2_anim + .long shn_tossed2_anim,bam_tossed2_anim + .long dnk_tossed2_anim,0,lex_tossed2_anim + +#***************************************************************************** +* +* #2,4 FLYING CLOTHESLINE + + SUBR bam_fly_cline_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,9 + WL 3,B3RC3A+FR1 + + WLW ANI_SET_XVEL,70000h,AM_FACE_REL + WWL ANI_SETLONG,OBJ_GRAVITY,08000h + WL 3,B3RC3A+FR2 + WL 3,B3RC3A+FR3 + WL ANI_SET_YVEL,50000h + WL 3,B3RC3A+FR4 + .word ANI_OFFSET,0,45,0 ;x,y,z + .word ANI_ATTACK_ON, AMODE_CLINE,2,5,14,53 ;mode,x,y,w,h ;31 + WL 20,B3RC3A+FR5 + .word ANI_ATTACK_OFF + WL 3,B3RC3A+FR7 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + WL 3,B3RC3A+FR8 + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + .word ANI_FRICTION,3000h + .word ANI_BOUNCE,4 + + WL 3,B3RC3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + WL 15,B3RC3A+FR8 + + WL ANI_IFSTATUS,#gothim +;He missed, have him stay on ground for awhile! + WL ANI_CODE,CALL_MISSES + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 30,B3RC3A+FR8 +#gothim + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + .word ANI_END + +; +; WL 3,D3RL1B+FR7 +; WL 3,D3RL1B+FR9 +; WL 3,D3RL1B+FR11 +; +;;Perhaps we should turn off collisions when getting up!? +;;Getting up, set no_collis +; .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP+MODE_NOCOLLIS +; +; WL 3,D3GU4A+FR2 +; WL 3,D3GU4A+FR3 +; WL 3,D3GU4A+FR4 +; WL 3,D3GU4A+FR5 +; WL 3,D3GU4A+FR6 +; +;;Check for a flip here +; WL 1,D3GU4A+FR7 +; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_SET_WRESTLER_XFLIP +; +; WL 2,D3GU4A+FR7 +; WL 3,D3GU4A+FR8 +; WL 3,D3GU4A+FR9 +; +; .word ANI_SAFE_TIME,0 +; +; .word ANI_FACEDOWN +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END + +#***************************************************************************** +* #4 SLAP + +;Leaping fire head butt + + SUBR bam_2_slap_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,20 + + WL 2,B1TT5Z+FR2 ;2.5 + WL 2,B1TT5Z+FR3 ;3.5 + + SUBR bam_4_slap_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,16 + WL 3,B3FH3F+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 13,999,4ah,50,90000h,TGT_HEAD,40,101,10 + + .word ANI_CLR_STATUS + WL 3,B3FH3F+FR2 + WL 3,B3FH3F+FR3 + WL 3,B3FH3F+FR4 + WL 2,B3FH3F+FR5 + WL 2,B3FH3F+FR6 + WL 1,B3FH3F+FR7 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,32,47,39,55 ;mode,x,y,w,h + WL 2,B3FH3F+FR7 + WL 3,B3FH3F+FR8 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;hit + .ref create_impact + WL ANI_CODE,create_impact + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hit2 + WL ANI_SET_YVEL,40000h +#no_hit2 +#missed +#missedb + WL 3,B3FH3F+FR8 + WL 3,B3FH3F+FR9 + WL 3,B3FH3F+FR10 + WL 3,B3FH3F+FR11 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** + + SUBR bam_knees_anim +;From head hold mode + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SETWORD,USR_VAR2,0 + + WL 2,B4KM3A+FR1 + .word ANI_SET_RPTCOUNT,3 ;3 times +#rpt_loop + .word ANI_STARTATTACK,AT_KNEE,6 + .word ANI_CLR_BUTCOUNT + + WL 2,B4KM3A+FR2 + WL 2,B4KM3A+FR3 + WL 2,B4KM3A+FR4 + .word ANI_ATTACK_ON, AMODE_HEADKNEES,37,62,62,35 ;mode,x,y,w,h + WL 2,B4KM3A+FR5 + .word ANI_ATTACK_OFF + WL 2,B4KM3A+FR6 + WL 2,B4KM3A+FR7 + WL 2,B4KM3A+FR8 +; WL 1,B4KM3A+FR9 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#missed2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop + .word ANI_SETWORD,USR_VAR2,1 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#missed2 + + .word ANI_DETACH +; WLW ANI_SET_XVEL,18000h,AM_FACE_REL + WL ANI_CHANGEANIM,bam_3_hiptoss_anim + .word ANI_END + +#missed2 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#missed3 + .ref bam_4_graboh_anim + WL ANI_CHANGEANIM,bam_4_graboh_anim + .word ANI_END + +#missed3 + WL 3,B4KM3A+FR10 + + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#****************************************************************************** + + SUBR bam_hdbutts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SETWORD,USR_VAR2,0 + + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + .word ANI_SET_RPTCOUNT,3 ;3 times +#rpt_loop + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_HDBUTT,10 + + WL 2,B4BC3A+FR1 + WL 2,B4BC3A+FR2 + WL 2,B4BC3A+FR3 + WL 2,B4BC3A+FR4 + WL 2,B4BC3A+FR5 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,5,79,40,19 ;mode,x,y,w,h + WL 2,B4BC3A+FR6 + .word ANI_ATTACK_OFF + WL 2,B4BC3A+FR6 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#missed2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop + .word ANI_SETWORD,USR_VAR2,1 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#missed2 + + .word ANI_DETACH + WL ANI_CHANGEANIM,bam_3_hiptoss_anim + .word ANI_END + +#missed2 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#missed3 + .ref bam_4_graboh_anim + .ref bam_pogo_anim + WL ANI_CHANGEANIM,bam_pogo_anim + .word ANI_END + +#missed3 + WL 2,B4BC3A+FR7 + + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/BAMSEQ3.ASM b/BACKUP/BAMSEQ3.ASM new file mode 100644 index 0000000..163f70e --- /dev/null +++ b/BACKUP/BAMSEQ3.ASM @@ -0,0 +1,2573 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "bamseq3.asm" + .title "Bam Bam Bigelo animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "bamimg.h" + + .include "display.equ" + .include "damage.equ" + + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref DO_PILE_MESS + .REF DO_BODY_MESS + .REF DO_BACK_MESS + .ref CALL_SETUP + + .ref D4SK4A,bam_faceup_getup_anim + .REF HIT_THE_MAT,CALL_SPECIAL_MOVE + .ref CALL_MISSES,tgt_tbukl,tbukl_flip + .ref set_position,make_white,make_norm,start_smoke + .ref am_I_dizzy + .ref bam_dizzy_anim + .ref set_skeleton_pal,set_my_pal + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GRAB OPPONENT AND HOLD OVERHEAD + + + SUBR bam_2_graboh_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,15 + WL 2,B1TT5Z+FR2 ;2.5 + WL 2,B1TT5Z+FR3 ;3.5 + + SUBR bam_4_graboh_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,11 + WL 3,B3PO4A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,80,80,60,90000h,TGT_CHEST,66,67,0 + WL ANI_SET_YVEL,20000h +; .ref store_opp_xvel +; WL ANI_CODE,store_opp_xvel + + WL 3,B3PO4A+FR2 + WL 3,B3PO4A+FR3 + + .word ANI_ATTACK_ON, AMODE_PUPPET,29,47,39,45 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,5,B3PO4A+FR4 + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missed + +;#gothim + .ref merge_xvels + WL ANI_CODE,CALL_SETUP + + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR5,#puppet_tbl,1 + +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR8,#puppet_tbl,4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_SLAVEANIM,#strt_flail_tbl + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 20,B3PO4A+FR4 + WL 3,B3PO4A+FR3 + WL 3,B3PO4A+FR2 + WL 3,B3PO4A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + .ref H3MS3Z,H4MF4B + .ref R3MS3Z,R4MF4B + .ref U4GH3C,U3MS3Z,U4PM3C,U4GH3C + .ref Y3MS3Z,Y3MF3B + .ref S3PM4B,S3MS3Z,S3MF3B +; .ref B3MS3Z,B4MF4A + .ref D3GS3X,D4MF4A + .ref L3MS3Z,L3MF3B +#Bret + LWWW H3MS3Z+FR1,53,16,0 + LWWW H3MS3Z+FR2,37,20,0 + LWWW H3MS3Z+FR3,24,22,0 + LWWW H3MS3Z+FR4,-12,26,0 + LWWW H4MF4B+FR1,-31,10,0 + .long 0 +#Razor + LWWW R3MS3Z+FR1,57,7,0 + LWWW R3MS3Z+FR2,37,13,0 + LWWW R3MS3Z+FR3,10,13,0 + LWWW R3MS3Z+FR4,-25,21,0 + LWWW R4MF4B+FR6,-40,16,0 + .long 0 +#Taker + LWWW U4GH3C+FR10,67,16,0 + LWWW U3MS3Z+FR1,31,36,0 + LWWW U3MS3Z+FR2,-6,32,0 + LWWW U3MS3Z+FR4,-31,17,0 + LWWW U4PM3C+FR6,-44,20,0 + .long 0 +#Yokozuna + LWWW Y3MS3Z+FR1,65,4,0 + LWWW Y3MS3Z+FR2,48,30,0 + LWWW Y3MS3Z+FR3,24,30,0 + LWWW Y3MS3Z+FR5,-29,28,0 + LWWW Y3MF3B+FR7,-32,19,0 + .long 0 +#Shawn + LWWW S3PM4B+FR1,53,14,0 + LWWW S3MS3Z+FR1,18,20,0 + LWWW S3MS3Z+FR2,3,20,0 + LWWW S3MS3Z+FR4,-33,19,0 + LWWW S3MF3B+FR6,-45,21,0 + .long 0 +#BamBam + LWWW B3MS3Z+FR1,60,13,0 + LWWW B3MS3Z+FR2,38,13,0 + LWWW B3MS3Z+FR3,15,10,0 + LWWW B3MS3Z+FR4,-21,27,0 + LWWW B4MF4A+FR6,-41,31,0 + .long 0 +#Doink + LWWW D3GS3X+FR1,70,0,0 + LWWW D3GS3X+FR3,35,22,0 + LWWW D3GS3X+FR4,18,15,0 + LWWW D3GS3X+FR5,-16,19,0 + LWWW D4MF4A+FR1,-36,14,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MS3Z+FR1,63,8,0 + LWWW L3MS3Z+FR2,37,22,0 + LWWW L3MS3Z+FR3,7,12,0 + LWWW L3MS3Z+FR5,-32,16,0 + LWWW L3MF3B+FR6,-37,14,0 + .long 0 + + .ref hrt_heldoh_anim + .ref rzr_heldoh_anim + .ref und_heldoh_anim + .ref yok_heldoh_anim + .ref shn_heldoh_anim +; .ref bam_heldoh_anim + .ref dnk_heldoh_anim + .ref lex_heldoh_anim + +#strt_flail_tbl + .long hrt_heldoh_anim + .long rzr_heldoh_anim + .long und_heldoh_anim + .long yok_heldoh_anim + .long shn_heldoh_anim + .long bam_heldoh_anim + .long dnk_heldoh_anim + .long 0 + .long lex_heldoh_anim + + + SUBR bam_stndholdoh_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 999,B3PO4A+FR8 + .word ANI_REPEAT + + +#***************************************************************************** +* +* OPPONENT HELD OVERHEAD - SLAM DOWN + + + SUBR bam_slamdwn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_ATTACK_ON, AMODE_PUPPET,-30,138,64,11 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,6,B3PO4A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_ATTACHZ,0,0,4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED|MODE_OVERLAP|MODE_NOCONFINE + + WWLLW ANI_SUPERSLAVE2,4,B4CF4A+FR1,#puppet_tbl,0 + + .word ANI_SOUND,82h ;Effort grunt + + WLW ANI_SET_ZVEL,-18000h,AM_ABS + WL ANI_SET_YVEL,50000h +;Float away from side ropes! +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + WL ANI_CODE,DO_BODY_MESS + + WWLLW ANI_SUPERSLAVE2,4,B4CF4A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,B4CF4A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,B4CF4A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,B4CF4A+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,B4CF4A+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,B4CF4A+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,B4CF4A+FR8,#puppet_tbl,7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,3,B4CF4A+FR9,#puppet_tbl,8 + + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_DAMAGEOPP,D_HIPTOSS + .word ANI_SHAKER,30 + + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL ANI_SLAVEANIM,#faced_tbl + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + WL 5,B4CF4A+FR9 + WL ANI_CODE,#set_opp_y + + WL 2,B4CF4A+FR9 + + .word ANI_WAITHITGND + WL 4,B3PO4E+FR2 + WL 4,B3PO4E+FR3 + WL 4,B3PO4E+FR4 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + +; .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD +; .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + +#set_opp_y + move *a13(WHOIHIT),a0,L + movi [5,0],a14 + move a14,*a0(OBJ_YVEL),L + movi [2,0],a14 + move a14,*a0(OBJ_ZVEL),L + + movi -[3,0],a1 + move *a0(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a1 ;left +#abs + move a1,*a0(OBJ_XVEL),L + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref S3CF3Z,Y3KF3B,L3TF3X + +#Bret + LWWW H4MF4B+FR1,-29,11,0 + LWWW H4MF4B+FR1,-31,8,0 + LWWW H4MF4B+FR1,-34,9,0 + LWWW H4MF4B+FR1,-39,7,0 + LWWW H4MF4B+FR1,-43,10,0 + LWWW H4MF4B+FR1,-40,14,0 + LWWW H4MF4B+FR1,-33,15,0 + LWWW H4MF4B+FR1,-13,6,0 + LWWW H4MF4B+FR1,-8,-41,0 + .long 0 +#Razor + LWWW R4MF4B+FR6,-35,15,0 + LWWW R4MF4B+FR6,-38,14,0 + LWWW R4MF4B+FR6,-40,15,0 + LWWW R4MF4B+FR6,-41,16,0 + LWWW R4MF4B+FR6,-38,24,0 + LWWW R4MF4B+FR6,-43,24,0 + LWWW R4MF4B+FR6,-41,21,0 + LWWW R4MF4B+FR6,-29,11,0 + LWWW R3MS3Z+FR6,25,-46,0 + .long 0 +#Taker + .ref U3CF3Q + LWWW U4PM3C+FR6,-42,17,0 + LWWW U4PM3C+FR6,-44,14,0 + LWWW U4PM3C+FR6,-47,14,0 + LWWW U4PM3C+FR6,-48,14,0 + LWWW U4PM3C+FR6,-44,21,0 + LWWW U4PM3C+FR6,-49,21,0 + LWWW U4PM3C+FR6,-46,19,0 + LWWW U4PM3C+FR6,-30,10,0 + LWWW U3CF3Q+FR1,14,-62,0 + .long 0 +#Yokozuna + LWWW Y3MF3B+FR7,-37,18,0 + LWWW Y3MF3B+FR7,-42,15,0 + LWWW Y3MF3B+FR7,-45,16,0 + LWWW Y3MF3B+FR7,-46,16,0 + LWWW Y3MF3B+FR7,-42,23,0 + LWWW Y3MF3B+FR7,-46,23,0 + LWWW Y3MF3B+FR7,-42,22,0 + LWWW Y3MF3B+FR7,-20,14,0 + LWWW Y3KF3B+FR1,18,-37,0 + .long 0 +#Shawn + LWWW S3MF3B+FR6,-43,18,0 + LWWW S3MF3B+FR6,-44,16,0 + LWWW S3MF3B+FR6,-47,17,0 + LWWW S3MF3B+FR6,-48,17,0 + LWWW S3MF3B+FR6,-44,23,0 + LWWW S3MF3B+FR6,-49,23,0 + LWWW S3MF3B+FR6,-47,20,0 + LWWW S3MF3B+FR6,-28,10,0 + LWWW S3CF3Z+FR1,27,-59,0 + .long 0 +#BamBam + LWWW B4MF4A+FR6,-48,35,0 + LWWW B4MF4A+FR6,-50,34,0 + LWWW B4MF4A+FR6,-54,34,0 + LWWW B4MF4A+FR6,-58,32,0 + LWWW B4MF4A+FR6,-56,37,0 + LWWW B4MF4A+FR6,-61,37,0 + LWWW B4MF4A+FR6,-53,40,0 + LWWW B4MF4A+FR6,-33,29,0 + LWWW B3RL1A+FR7,35,-55,0 + .long 0 +#Doink + LWWW D4MF4A+FR1,-34,15,0 + LWWW D4MF4A+FR1,-36,12,0 + LWWW D4MF4A+FR1,-39,13,0 + LWWW D4MF4A+FR1,-42,12,0 + LWWW D4MF4A+FR1,-40,19,0 + LWWW D4MF4A+FR1,-44,19,0 + LWWW D4MF4A+FR1,-34,17,0 + LWWW D4MF4A+FR1,-24,6,0 + LWWW D3GS3X+FR8,20,-59,0 + LWWW B4CF4A+FR1,-47,141,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MF3B+FR6,-35,12,0 + LWWW L3MF3B+FR6,-36,9,0 + LWWW L3MF3B+FR6,-37,10,0 + LWWW L3MF3B+FR6,-38,11,0 + LWWW L3MF3B+FR6,-35,19,0 + LWWW L3MF3B+FR6,-40,18,0 + LWWW L3MF3B+FR6,-40,16,0 + LWWW L3MF3B+FR6,-30,5,0 + LWWW L3TF3X+FR1,9,-55,0 + .long 0 + + .ref hrt_break_face_anim,rzr_break_face_anim + .ref und_break_face_anim + .ref shn_break_face_anim + .ref dnk_break_face_anim +; .ref bam_break_face_anim + .ref lex_break_face_anim + .ref yok_break_face_anim + +#faced_tbl + .long hrt_break_face_anim,rzr_break_face_anim + .long und_break_face_anim + .long yok_break_face_anim + .long shn_break_face_anim,bam_break_face_anim + .long dnk_break_face_anim,0,lex_break_face_anim + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR bam_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop WL 5,B4MF4A+FR1 + WL 5,B4MF4A+FR2 + WL 5,B4MF4A+FR3 + WL 5,B4MF4A+FR4 + WL 5,B4MF4A+FR5 + WL 5,B4MF4A+FR6 + WL 5,B4MF4A+FR7 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + .word ANI_OFFSET,-20,-50,0 ;x,y,z + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 5,B3MS3Z+FR4 + WL 5,B3MS3Z+FR3 + WL 5,B3MS3Z+FR2 + WL 5,B3MS3Z+FR1 + WL 5,B2ST2A+FR1 + + .word ANI_WAITHITGND + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* BACK BREAKER + + SUBR bam_backbreaker_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_ATTACK_ON, AMODE_PUPPET,-30,138,64,11 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,6,B3PO4A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_ATTACHZ,0,0,4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED|MODE_OVERLAP|MODE_NOCONFINE + + .word ANI_OFFSET,0,10,0 ;x,y,z + + WLW ANI_SET_ZVEL,-18000h,AM_ABS + WL ANI_SET_YVEL,70000h +;Float away from side ropes! +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + WL ANI_CODE,DO_BACK_MESS + + WWLLW ANI_SUPERSLAVE2,16,B4BB1X+FR2,#puppet_tbl,0 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_ZEROVELS + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR4,#puppet_tbl,2 + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR5,#puppet_tbl,3 + .word ANI_DAMAGEOPP,D_BACKBRKR + +;Perhaps even shake ropes + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + + WL ANI_CODE,CALL_SPECIAL_MOVE + + WL ANI_SLAVEANIM,#bncoff_tbl + + .word ANI_DETACH + + WL 30,B4BB1X+FR5 + WL 4,B4BB1X+FR6 + WL 4,B4BB1X+FR7 + WL 4,B4BB1X+FR8 + WL 4,B4BB1X+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR set_xdrift + +;Float +;This could become a leap at position command +;Leap at the center of ring! + +;Check to make sure I'm in ring! + move *a13(INRING),a1 + jrnz #ok + + move *a13(OBJ_XPOSINT),a0 + subi RING_X_MID,a0 + abs a0 + cmpi 60h,a0 + jrlt #ok + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID,a0 + jrgt #onrgt + + movi [3,0000h],a0 + move a0,*a13(OBJ_XVEL),L + rets +#onrgt + movi -[3,0000h],a0 + move a0,*a13(OBJ_XVEL),L +#ok + rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H3BR3Z + .ref H3DC3A + LWWW H3BR3Z+FR4,-28,16,1 + LWWW H3DC3A+FR5,-9,32,1 + LWWW H3DC3A+FR5,-11,30,1 + LWWW H3BR3Z+FR1,4,-23,1 + .long 0 +#Razor + .ref R3BR3Z + .ref R3FD3B + LWWW R3BR3Z+FR1,-21,15,1 + LWWW R3FD3B+FR9,-15,18,1 +; LWWW R3FD3B+FR6,-19,34,1 + LWWW R3FD3B+FR9,-15,18,1 + LWWW R3BR3Z+FR3,-15,-30,1 + .long 0 +#Taker + .ref U3BR3Z + .ref U3CP3B + LWWW U3BR3Z+FR1,-30,10,1 + LWWW U3BR3Z+FR2,-31,10,1 + LWWW U3CP3B+FR4,-28,36,0 + LWWW U3BR3Z+FR3,-18,-21,1 + .long 0 +#Yokozuna + .ref Y3RL1A + .ref Y3CP3B + .ref Y3BR3Z + LWWW Y3RL1A+FR3,-21,18,0 + LWWW Y3RL1A+FR2,-21,22,0 + LWWW Y3CP3B+FR1,-8,24,0 + LWWW Y3BR3Z+FR1,-21,-11,1 + .long 0 +#Shawn + .ref S3RL3A + .ref S3BR3Z + LWWW S3RL3A+FR3,-21,16,0 + LWWW S3RL3A+FR1,-25,14,0 + LWWW S3BR3Z+FR5,-23,19,1 + LWWW S3BR3Z+FR3,6,-27,1 + .long 0 +#BamBam + .ref B3BR3Z + LWWW B3BR3Z+FR11,-27,21,1 + LWWW B3BR3Z+FR12,-29,29,1 + LWWW B3BR3Z+FR13,-27,19,1 + LWWW B3BR3Z+FR14,-24,-8,1 + .long 0 +#Doink + .ref D3UC3A + .ref D3BK3Z + LWWW D3BK3Z+FR2,-15,11,1 + LWWW D3BK3Z+FR3,-9,20,1 + LWWW D3UC3A+FR5,-13,28,1 + LWWW D3BK3Z+FR7,-18,-30,1 + .long 0 +#Adam + .long 0 +#Lex + .ref L3RL1A + .ref L3UC3A + .ref L3BR3Z + LWWW L3RL1A+FR7,-29,16,0 + LWWW L3RL1A+FR9,-23,12,0 + LWWW L3UC3A+FR4,-21,24,1 + LWWW L3BR3Z+FR1,-14,-28,1 + .long 0 + +#bncoff_tbl + .ref hrt_backbroken_anim + .ref rzr_backbroken_anim + .ref und_backbroken_anim + .ref yok_backbroken_anim + .ref shn_backbroken_anim + .ref dnk_backbroken_anim + .ref lex_backbroken_anim + + .long hrt_backbroken_anim + .long rzr_backbroken_anim + .long und_backbroken_anim + .long yok_backbroken_anim + .long shn_backbroken_anim + .long bam_backbroken_anim + .long dnk_backbroken_anim + .long 0 + .long lex_backbroken_anim + + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR bam_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,B3BR3Z+FR14 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + +; WL 15,B3BR3Z+FR15 +; WL 4,B3BR3Z+FR16 + + WL 25,B3BR3Z+FR14 + WL 4,B3BR3Z+FR16 + .word ANI_XFLIP + WL 2,B3RL1A+FR3 + + + +; WL 3,B3RL1A+FR4 +; WL 3,B3RL1A+FR5 +; WL 3,B3RL1A+FR6 +; WL 3,B3RL1A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + +; .word ANI_XFLIP + + WL 3,B3MS3X+FR1 + WL 3,B3MS3X+FR2 + WL 3,B3MS3X+FR3 + + .word ANI_SETPLYRMODE,MODE_ONGROUND +; .word ANI_GETUP,100 + +;No stars around head here... + + .word ANI_DETACH + + WL 20,B3RL1A+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* NECK BREAKER + +; SUBR bam_neckbreaker_anim +; +; .if 0 +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN +; +; WL 6,B4GH3B+FR1 +; WL 6,B4GH3B+FR2 +; WL 6,B4GH3B+FR3 +; WL 6,B4GH3B+FR4 +; +; .word ANI_ATTACK_ON, AMODE_PUPPET,13,90,71,16 ;mode,x,y,w,h +; WL 6,B4GH3B+FR5 +; .word ANI_ATTACK_OFF +; +; WL ANI_IFSTATUS,#gotim +; +;;missed +; WL ANI_CODE,CALL_MISSES +; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN +; +; WL 6,B4GH3B+FR4 +; WL 6,B4GH3B+FR3 +; WL 6,B4GH3B+FR2 +; WL 6,B4GH3B+FR1 +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END +; +; +;#gotim +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED +; .word ANI_ATTACHZ,0,0,-4 +; +; WLW ANI_SUPERSLAVE,#puppet_tbl,0 +; WL 6,B4GH3B+FR5 +; WLW ANI_SUPERSLAVE,#puppet_tbl,1 +; WL 6,B4GH3B+FR6 +; WLW ANI_SUPERSLAVE,#puppet_tbl,2 +; WL 6,B4GH3B+FR7 +; WLW ANI_SUPERSLAVE,#puppet_tbl,3 +; WL 6,B3DD3B+FR1 +; WLW ANI_SUPERSLAVE,#puppet_tbl,4 +; WL 6,B3DD3B+FR2 +; WLW ANI_SUPERSLAVE,#puppet_tbl,5 +; WL 6,B3DD3B+FR3 +; WLW ANI_SUPERSLAVE,#puppet_tbl,6 +; WL 6,B3DD3B+FR4 +; WLW ANI_SUPERSLAVE,#puppet_tbl,7 +; WL 6,B3DD3B+FR5 +; +; WL ANI_SET_YVEL,080000h +; +; WLW ANI_SUPERSLAVE,#puppet_tbl,8 +; WL 6,B3DD3B+FR6 +; WLW ANI_SUPERSLAVE,#puppet_tbl,9 +; WL 6,B3DD3B+FR8 +; WLW ANI_SUPERSLAVE,#puppet_tbl,10 +; WL 6,B3DD3B+FR9 +; +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS +; +; WLW ANI_SUPERSLAVE,#puppet_tbl,11 +; WL 6,B3DD3B+FR11 +; +; WL ANI_SLAVEANIM,#slaveanim_tbl +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP +; +; WL 6,B3DD3B+FR12 +; WL 6,B3GU4A+FR4 +; WL 6,B3GU4A+FR5 +; WL 6,B3GU4A+FR6 +; WL 6,B3GU4A+FR7 +; WL 6,B3GU4A+FR8 +; WL 6,B3GU4A+FR9 +; +; .word ANI_DETACH +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END +; +; +;#slaveanim_tbl +; .long 0 ;Bret +; .long 0 ;Razor +; .long 0 ;Taker +; .long 0 ;Yokozuna +; .long 0 ;Shawn +; .long bam_neckbroken_anim ;BamBam +; .long 0 ;Doink +; .long 0 ;Adam +; .long 0 ;Lex +; +; +;#puppet_tbl +; .long #Bret +; .long #Razor +; .long #Taker +; .long #Yokozuna +; .long #Shawn +; .long #BamBam +; .long #Doink +; .long #Adam +; .long #Lex +;#Bret +; .long 0 +;#Razor +; .long 0 +;#Taker +; LWWW U4BF3A+FR1,79,0,1 +; LWWW U4BF3A+FR2,84,-2,1 +; LWWW U4BF3A+FR3,85,8,1 +; LWWW U3DD3B+FR1,70,10,1 +; LWWW U3DD3B+FR2,84,8,1 +; LWWW U3DD3B+FR3,90,10,1 +; LWWW U3DD3B+FR4,78,6,1 +; LWWW U3DD3B+FR5,75,5,1 +; LWWW U3DD3B+FR6,74,9,1 +; LWWW U3DD3B+FR6,82,9,1 +; LWWW U3DD3B+FR7,89,11,1 +; LWWW U3DD3B+FR9,113,1,1 +;#Yokozuna +; .long 0 +;#Shawn +; .long 0 +;#BamBam +; LWWW B4BF3A+FR1,86,4,0 +; LWWW B4BF3A+FR2,86,4,0 +; LWWW B4BF3A+FR3,84,4,0 +; LWWW B3DD3D+FR1,86,4,1 +; LWWW B3DD3D+FR2,81,3,1 +; LWWW B3DD3D+FR3,92,2,1 +; LWWW B3DD3D+FR4,88,-7,1 +; LWWW B3DD3D+FR5,92,-8,1 +; LWWW B3DD3D+FR6,100,3,1 +; LWWW B3DD3D+FR6,103,10,1 +; LWWW B3DD3D+FR7,118,21,1 +; LWWW B3DD3D+FR10,148,-8,1 +;#Doink +; .long 0 +;#Adam +; .long 0 +;#Lex +; .long 0 +; +; .endif +; + +#***************************************************************************** +* +* END OF NECK BROKEN SEQ. + + SUBR bam_neckbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,060000h +;; WLW ANI_SET_ZVEL,20000h,AM_ABS + + .word ANI_XFLIP + + WL 3,B3CP3B+FR4 + WL 6,B3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,B3CP3B+FR6 + WL 5,B3CP3B+FR7 + + WL 10,B3RL1A+FR1 ;1st frame of roll + + .word ANI_DETACH + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* POGO STICK HEAD CRUNCHER + + SUBR bam_pogo_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_CHEER,3 + .word ANI_ATTACK_ON, AMODE_PUPPET,32,25,42h,21 ;mode,x,y,w,h + +;#contpd + WWL ANI_WAITHITOPP,4,B3PG3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;Check to see if I have tried to pile drive Yokozuna! + +;FIX!! Yoko check +; WL ANI_CODE,is_this_yoko +; WL ANI_IFSTATUS,#yoko_miss + +;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,B3PG3A+FR1,#puppet_tbl,0 + .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,20,B3PG3A+FR1,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR2,#puppet_tbl,1 + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,-28000h,AM_ABS +;Float toward the center of ring! +; WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,7,B3PG3A+FR5,#puppet_tbl,4 + + .word ANI_SET_RPTCOUNT,4 ;3 times + .word ANI_CLR_BUTCOUNT + +;Place opponent in front of me in z + + .word ANI_ATTACHZ,0,0,4 + WLW ANI_ATTCHIMAGE,BCDARM+FR2,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR2,#puppet_tbl,5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,BCDARM+FR4,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR4,#puppet_tbl,6 + WLW ANI_ATTCHIMAGE,BCDARM+FR5,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR5,#puppet_tbl,7 + WLW ANI_ATTCHIMAGE,BCDARM+FR6,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR6,#puppet_tbl,8 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR8,#puppet_tbl,9 + + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,4,B4CD3B+FR8,#puppet_tbl,10 + + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_POGO1 + + WL ANI_CODE,CALL_SPECIAL_MOVE +; WL ANI_CODE,#set_opp_xflip + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,3,#letgo + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop +#letgo + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + WL 20,B4CF4A+FR9 + + .word ANI_WAITHITGND + WL 4,B3PO4E+FR2 + WL 4,B3PO4E+FR3 + WL 4,B3PO4E+FR4 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 4,B3PG3A+FR1 + WL 4,B3PG3A+FR2 + WL 4,B3PG3A+FR3 + WL 4,B3PG3A+FR4 + +#cont WL ANI_SET_YVEL,30000h + + WL 3,B3PG3A+FR5 + .word ANI_OFFSET,0,26,0 ;x,y,z + + WL 4,B4CD3A+FR3 + WL 4,B4CD3A+FR4 + WL 4,B4CD3A+FR5 + +; WL ANI_SET_YVEL,-20000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +;Maybe do a bounce + + ;impact + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 4,B4CD3A+FR6 + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; WL 18,D4HS3B+FR8 + + WL 4,B4CD3A+FR6 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WL 3,B3PG3A+FR9 + WL 3,B3PG3A+FR10 + WL 3,B3PG3A+FR11 + WL 3,B3PG3A+FR12 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#rpt_loop + .word ANI_CLR_BUTCOUNT + + WL ANI_SET_YVEL,60000h + + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR8,#puppet_tbl,10 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR8,#puppet_tbl,9 + WLW ANI_ATTCHIMAGE,BCDARM+FR6,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR6,#puppet_tbl,8 + WLW ANI_ATTCHIMAGE,BCDARM+FR5,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR5,#puppet_tbl,7 + WLW ANI_ATTCHIMAGE,BCDARM+FR4,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR4,#puppet_tbl,6 + WLW ANI_ATTCHIMAGE,BCDARM+FR2,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR2,#puppet_tbl,5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,BCDARM+FR4,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR4,#puppet_tbl,6 + WLW ANI_ATTCHIMAGE,BCDARM+FR5,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR5,#puppet_tbl,7 + WLW ANI_ATTCHIMAGE,BCDARM+FR6,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR6,#puppet_tbl,8 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR8,#puppet_tbl,9 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,4,B4CD3B+FR8,#puppet_tbl,10 + + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + .word ANI_DAMAGEOPP,D_POGO2 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,3,#letgo + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop + WL ANI_GOTO,#letgo + +#set_opp_xflip + move *a13(ATTACH_PROC),a0,L + + move *a0(OBJ_CONTROL),a14 + xori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H3BF3A,H3PP3X,H4POGO + .ref R3BF3A,R3GP3Z,R4POGO + .ref U4BF3Z,U3PP3X,U3GP3X,U4POGO + .ref Y3BF3A,Y3PP3Q,Y3FD3N,Y4POGO + .ref S3BF3A,S3GP3X,S3OS3X,S3FD3X,S4POGO + .ref D3BF3A,D3PD3Z,D4POGO + .ref L3BF3B,L3GP3Z,L3FH3A,L3FD3B,L4POGO +; .ref B4AM4A,B3PP3Q,B4POGO,B4PO00 + +#Bret + LWWW H3BF3A+FR3,38,-13,0 + LWWW H3PP3X+FR1,18,-32,0 + LWWW H3PP3X+FR2,9,7,0 + LWWW H3PP3X+FR3,19,43,0 + LWWW H3PP3X+FR6,18,36,0 + + LWWW H4POGO+FR1,26,50,1 + LWWW H4POGO+FR1,29,51,1 + LWWW H4POGO+FR1,28,56,1 + LWWW H4POGO+FR1,28,50,1 + LWWW H4POGO+FR2,-3,20,1 + LWWW H4POGO+FR3,-9,9,1 + .long 0 +#Razor + LWWW R3BF3A+FR9,39,-18,0 + LWWW R3GP3Z+FR1,25,-29,0 + LWWW R3GP3Z+FR2,21,-22,0 + LWWW R3GP3Z+FR4,37,44,0 + LWWW R3GP3Z+FR5,32,44,0 + + LWWW R4POGO+FR3,-1,44,1 + LWWW R4POGO+FR3,0,44,1 + LWWW R4POGO+FR3,-4,50,1 + LWWW R4POGO+FR3,-3,48,1 + LWWW R4POGO+FR4,-15,23,1 + LWWW R4POGO+FR5,-21,2,1 + .long 0 +#Taker + LWWW U4BF3Z+FR1,37,-12,0 + LWWW U3PP3X+FR1,23,-25,1 + LWWW U3PP3X+FR2,24,-15,1 + LWWW U3PP3X+FR4,17,18,1 + LWWW U3PP3X+FR6,28,58,1 + + LWWW U4POGO+FR1,16,59,1 + LWWW U4POGO+FR1,17,61,1 + LWWW U4POGO+FR1,16,69,1 + LWWW U4POGO+FR1,18,64,1 + LWWW U4POGO+FR3,-16,12,1 + LWWW U4POGO+FR4,-19,-3,1 + .long 0 +#Yokozuna + LWWW Y3BF3A+FR11,46,-7,0 + LWWW Y3PP3Q+FR1,24,-22,0 + LWWW Y3PP3Q+FR3,25,-11,0 + LWWW Y3PP3Q+FR4,35,3,0 + LWWW Y3PP3Q+FR7,25,21,0 + + LWWW Y4POGO+FR1,13,44,1 + LWWW Y4POGO+FR1,14,46,1 + LWWW Y4POGO+FR1,11,54,1 + LWWW Y4POGO+FR1,11,53,1 + LWWW Y4POGO+FR3,4,21,1 + LWWW Y4POGO+FR4,-4,7,1 + .long 0 +#Shawn + LWWW S3BF3A+FR5,29,-27,0 + LWWW S3GP3X+FR1,30,-31,0 + LWWW S3GP3X+FR2,23,-21,0 + LWWW S3GP3X+FR3,27,5,0 + LWWW S3GP3X+FR5,30,40,0 + + LWWW S4POGO+FR1,20,49,1 + LWWW S4POGO+FR1,21,49,1 + LWWW S4POGO+FR1,17,57,1 + LWWW S4POGO+FR1,17,54,1 + LWWW S4POGO+FR2,0,26,1 + LWWW S4POGO+FR3,-9,-1,1 + .long 0 +#BamBam + LWWW B4AM4A+FR5,41,-13,0 + LWWW B3PP3Q+FR1,23,-32,0 + LWWW B3PP3Q+FR2,23,-14,0 + LWWW B3PP3Q+FR3,27,12,0 + LWWW B3PP3Q+FR5,33,34,0 + + LWWW B4POGO+FR5,16,60,1 + LWWW B4POGO+FR5,17,63,1 + LWWW B4POGO+FR5,15,69,1 + LWWW B4POGO+FR5,17,64,1 + LWWW B4POGO+FR3,-7,32,1 + LWWW B4POGO+FR4,-11,1,1 + + .long 0 +#Doink + LWWW D3BF3A+FR1,40,-14,0 + LWWW D3PD3Z+FR1,29,-36,1 + LWWW D3PD3Z+FR2,24,-14,1 + LWWW D3PD3Z+FR3,26,16,1 + LWWW D3PD3Z+FR6,34,39,1 + + LWWW D4POGO+FR2,11,55,1 + LWWW D4POGO+FR2,12,58,1 + LWWW D4POGO+FR2,9,63,1 + LWWW D4POGO+FR2,9,58,1 + LWWW D4POGO+FR3,-3,29,1 + LWWW D4POGO+FR4,-15,7,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3BF3B+FR1,27,-21,0 + LWWW L3GP3Z+FR1,25,-29,0 + LWWW L3GP3Z+FR2,23,-13,0 + LWWW L3GP3Z+FR4,29,23,0 + LWWW L3GP3Z+FR6,30,36,0 + + LWWW L4POGO+FR1,13,54,1 + LWWW L4POGO+FR1,15,56,1 + LWWW L4POGO+FR1,13,61,1 + LWWW L4POGO+FR1,15,59,1 + LWWW L4POGO+FR3,9,30,1 + LWWW L4POGO+FR4,-8,11,1 + .long 0 + + .ref hrt_break_neck3_anim + .ref shn_break_neck4_anim + .ref dnk_break_neck3_anim + .ref und_break_neck3_anim + .ref lex_break_neck3_anim + .ref rzr_break_neck3_anim + .ref yok_break_neck3_anim + +#rollout_tbl + .long hrt_break_neck3_anim,rzr_break_neck3_anim + .long und_break_neck3_anim + .long yok_break_neck3_anim + .long shn_break_neck4_anim,bam_break_neck3_anim + .long dnk_break_neck3_anim,0,lex_break_neck3_anim + + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR bam_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,B4HU4B+FR7 + WL 4,B4HU4B+FR8 + WL 4,B4HU4B+FR9 + + .word ANI_OFFSET,0,20,0 + + WL ANI_CODE,tgt_tbukl + .word ANI_LEAPATPOS,20,200,10,4,0 ;#ticks,dist,xoff,yoff,zoff + WL 20,B4HU4B+FR11 + + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_SHAKECORNER + .word ANI_ZEROVELS + WL 4,B4HU4B+FR12 + + WL 5,B4SB4A+FR1 + WL 5,B4SB4A+FR2 + WL 5,B4SB4A+FR3 + WL 5,B4SB4A+FR4 + WL 5,B4SB4A+FR5 + WL 5,B4SB4A+FR6 + WL 5,B4SB4A+FR7 + WL 5,B4SB4A+FR8 + WL 5,B4SB4A+FR9 +#repeat + WL 7,B4SB4A+FR10 + WL ANI_CODE,tbukl_flip + WL 7,B4SB4A+FR9 + WL ANI_CODE,tbukl_flip + WL 7,B4SB4A+FR8 + WL ANI_CODE,tbukl_flip + WL 7,B4SB4A+FR7 + WL ANI_CODE,tbukl_flip + WL 7,B4SB4A+FR8 + WL ANI_CODE,tbukl_flip + WL 7,B4SB4A+FR9 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR bam_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SHAKECORNER +; WL 4,B4SB4A+FR7 +; WL 4,B2JD4A+FR1 + WL 4,B2JD4A+FR2 + + WLW ANI_SET_XVEL,18000h,AM_FACE_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL ANI_SET_YVEL,20000h + + .word ANI_GRAVITY_ON + WL 4,B2JD4A+FR3 + WL 4,B2JD4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKECORNER + + WL 4,B2JD4A+FR6 + WL 4,B2JD4A+FR8 + WL 4,B2JD4A+FR9 + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR bam_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,B4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,B4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,B4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,B4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,B4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,B4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,B4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,B4ST4Z+FR1 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref bam_fall_back_anim + + WL ANI_CHANGEANIM,bam_fall_back_anim + .word ANI_END + +#nodead + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 0b0bh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + + +#***************************************************************************** + + SUBR bam_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + +; WL 4,D3BF3Z+FR1 +; WL 4,D3BF3Z+FR2 + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,B3BF3C+FR5 + WL 4,B3BF3C+FR6 + WL 4,B3BF3C+FR7 + WL 4,B3BF3C+FR8 + WL 4,B3BF3C+FR9 + WL 4,B3BF3C+FR1 + WL 4,B3BF3C+FR2 + WL 4,B3BF3C+FR3 + WL 4,B3BF3C+FR4 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR bam_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,B3BF3C+FR5 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,B2AH2A+FR4 + WL 3,B2AH2A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B2AH2A+FR6 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 2,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR bam_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,B3BF3C+FR5 + WL 3,B1TT5Z+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR bam_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + .word ANI_XFLIP +; .word ANI_OFFSET,25,0,0 + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + WL 6,B3FD3C+FR1 + WL 8,B3FD3C+FR2 + WL 3,B3FD3C+FR3 + WL 3,B3FD3C+FR4 + WL 3,B3FD3C+FR5 + .word ANI_WAITHITGND + WL 4,B3FD3C+FR5 + + ;hit. stay. + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-30,0,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 23,B3RL1A+FR7 + .word ANI_WAITROLL + + .word ANI_OFFSET,10,0,-6 + .ref bam_4_faceup_getup_anim + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + .word ANI_END + + SUBR bam_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,B4POGO+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_XFLIP + WL 3,B3FD3C+FR3 + WL 3,B3FD3C+FR4 + WL 3,B3FD3C+FR5 + + ;hit. stay. + + .word ANI_OFFSET,-30,0,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 23,B3RL1A+FR7 + .word ANI_WAITROLL + + .word ANI_OFFSET,10,0,-6 + .ref bam_4_faceup_getup_anim + + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + .word ANI_END + + SUBR bam_break_neck4_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WL ANI_CODE,ckzpos + + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back4 + + WL 4,B4UC3B+FR6 + WL 4,B3FD3C+FR2 + WL 4,B3FD3C+FR3 + WL 4,B3FD3C+FR4 + WL 4,B3FD3C+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + +#fall_back4 + WL 4,B4UC3B+FR6 + WL 4,B4UC3B+FR7 + WL 4,B4UC3B+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + + + + SUBR bam_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back + + ;plenty of room. fall over. + .word ANI_OFFSET,20,0,0 + WL 5,B3FD3C+FR4 + .word ANI_OFFSET,13,0,0 + WL 5,B3FD3C+FR5 + .word ANI_OFFSET,51,0,0 + WL 5,B3RL1A+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + +#fall_back + ;no room. roll back onto yer back. + .word ANI_OFFSET,14,0,0 + WL 5,B4TD3B+FR7 + .word ANI_OFFSET,-12,0,0 + WL 5,B4TD3B+FR8 + .word ANI_OFFSET,-26,0,0 + WL 5,B4UC3B+FR7 + .word ANI_OFFSET,-16,0,0 + .word ANI_XFLIP + WL 10,B3RL1A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + + +#****************************************************************************** + + SUBR bam_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,16 + WL 2,B1TT5Z+FR2 ;2.5 + WL 2,B1TT5Z+FR3 ;3.5 + + SUBR bam_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,12 + +;Put cool cheers here +; .word ANI_CHEER,3 + + WL 4,B4WS4A+FR1 + + LEAPATOPP 8,999,80,80,30000h,TGT_HEAD,26,6,-2 + WL 4,B4WS4A+FR2 + WL 4,B4WS4A+FR3 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET,25,0,25,22 ;mode,x,y,w,h + WL 4,B4WS4A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WL ANI_CODE,CALL_SETUP + + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + + WWLLW ANI_SUPERSLAVE2,4,B4WS4A+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,B4GH3D+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,B4GH3D+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,B4GH3D+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,B4GH3D+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,B4GH3D+FR5,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 3,B4GH3D+FR5 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,B4WS4A+FR4 + WL 4,B4WS4A+FR3 + WL 4,B4WS4A+FR2 + WL 4,B4WS4A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + .ref rzr_3_head_held_anim +; .ref bam_3_head_held_anim + .ref und_3_head_held_anim + .ref yok_3_head_held_anim + .ref hrt_3_head_held_anim + .ref lex_3_head_held_anim + .ref shn_3_head_held_anim + .ref dnk_3_head_held_anim + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H3GU4A,H3DU3A,H3BF3A + .ref R3GU4A,R3DU3B,R3BF3A + .ref U3DU3B,U4BF3Z + .ref Y3GU2A,Y3BF3A + .ref S3GU4A,S3DU3A,S3BF3A + .ref B3GU4A,B3DU3A,B3BF3C + .ref D3DU3A,D3HT3Z,D3BF3A + .ref L3DU3A,L3BF3B + +#Bret + LWWW H3GU4A+FR1,33,-42,0 + LWWW H3GU4A+FR3,62,-31,0 + LWWW H3DU3A+FR3,59,-38,1 + LWWW H3DU3A+FR4,64,-36,1 + LWWW H3DU3A+FR5,63,-33,1 + LWWW H3BF3A+FR1,60,-34,0 + .long 0 +#Razor + LWWW R3GU4A+FR2,41,-43,1 + LWWW R3GU4A+FR3,46,-31,0 + LWWW R3GU4A+FR5,59,-44,0 + LWWW R3DU3B+FR2,59,-48,1 + LWWW R3DU3B+FR4,60,-31,1 + LWWW R3BF3A+FR4,64,-35,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,39,-40,1 + LWWW U3DU3B+FR5,36,-29,1 + LWWW U3DU3B+FR6,49,-44,1 + LWWW U3DU3B+FR8,60,-40,1 + LWWW U3DU3B+FR10,56,-27,1 + LWWW U4BF3Z+FR5,64,-14,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,45,-28,0 + LWWW Y3GU2A+FR3,53,-16,0 + LWWW Y3GU2A+FR6,32,-43,0 + LWWW Y3GU2A+FR9,55,-45,0 + LWWW Y3GU2A+FR12,61,-31,0 + LWWW Y3BF3A+FR1,65,-24,0 + .long 0 +#Shawn + LWWW S3GU4A+FR1,39,-42,1 + LWWW S3GU4A+FR2,47,-26,0 + LWWW S3GU4A+FR4,64,-43,0 + LWWW S3GU4A+FR5,59,-39,0 + LWWW S3DU3A+FR2,60,-42,1 + LWWW S3BF3A+FR1,50,-34,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,46,-30,0 + LWWW B3GU4A+FR4,50,-24,0 + LWWW B3GU4A+FR6,58,-34,0 + LWWW B3GU4A+FR7,59,-50,0 + LWWW B3DU3A+FR2,60,-33,1 + LWWW B3BF3C+FR5,69,-28,0 + .long 0 +#Doink + LWWW D3DU3A+FR2,41,-36,1 + LWWW D3DU3A+FR3,53,-25,1 + LWWW D3DU3A+FR5,49,-39,1 + LWWW D3DU3A+FR8,55,-47,1 + LWWW D3HT3Z+FR1,56,-34,1 + LWWW D3BF3A+FR2,62,-34,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3DU3A+FR2,50,-39,1 + LWWW L3DU3A+FR4,33,-18,1 + LWWW L3DU3A+FR6,37,-39,1 + LWWW L3DU3A+FR7,52,-34,1 + LWWW L3DU3A+FR9,65,-39,1 + LWWW L3BF3B+FR2,65,-38,0 + .long 0 + + +#****************************************************************************** + + SUBR bam_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .ref bam_stand4_anim + WL ANI_CHANGEANIM,bam_stand4_anim + .word ANI_END + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR bam_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 2,B3RL1A+FR7 ;Face down + WL ANI_SET_YVEL,80000h + WL 4,B3MS3X+FR1 + WL 4,B3MS3X+FR2 + WL 4,B3MS3X+FR3 + .word ANI_WAITHITGND + .word ANI_END + + +* Head slams into mat +;From head slam + + SUBR bam_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 2,B3RL1A+FR7 ;Face down + WL ANI_SET_YVEL,40000h + WL 4,B3MS3X+FR1 + WL 4,B3MS3X+FR2 + WL 4,B3MS3X+FR3 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .ref SMALL_BOUNCE +; WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 4,B3MS3X+FR1 + WL 4,B3MS3X+FR2 + WL 4,B3MS3X+FR3 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 2,B3RL1A+FR7 ;Face down + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + .word ANI_END + + + SUBR bam_3_pile_driver_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_CHEER,3 + .word ANI_ATTACK_ON, AMODE_PUPPET,32,25,42h,21 ;mode,x,y,w,h + +;#contpd + WWL ANI_WAITHITOPP,4,B3PG3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;Check to see if I have tried to pile drive Yokozuna! + +;FIX!! Yoko check +; WL ANI_CODE,is_this_yoko +; WL ANI_IFSTATUS,#yoko_miss + +;got him + WL ANI_CODE,DO_PILE_MESS + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,B3PG3A+FR1,#puppet_tbl,0 + .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,20,B3PG3A+FR1,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR2,#puppet_tbl,1 + +; WL ANI_SET_YVEL,30000h + WL ANI_SET_YVEL,70000h +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR5,#puppet_tbl,4 + +;Mess with the physics! + +; WL ANI_SET_YVEL,-20000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +; WWLLW ANI_SUPERSLAVE2,2,B3PG3A+FR5,#puppet_tbl,4 ;13 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR3,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR4,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR5,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR6,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,2,B3PG3A+FR9,#puppet_tbl,9 + + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER + + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL 20,B3PG3A+FR9 + WLW ANI_SET_ZVEL,-10000h,AM_ABS + WL 3,B3PG3A+FR10 + WL 3,B3PG3A+FR11 + WL 3,B3PG3A+FR12 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;#yoko_miss +;;Cause Yoko to stand up out of his head hold and break free +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; +; WL ANI_CODE,CALL_MISS_YOKO +; +; WL 3,D3PP3Z+FR1 +; WL 3,D3PP3Z+FR2 +; WL 3,D3PP3Z+FR3 +; WL 3,D3PP3Z+FR4 +; WL ANI_CODE,#break +; WL ANI_GOTO,#cont +; + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 4,B3PG3A+FR1 + WL 4,B3PG3A+FR2 + WL 4,B3PG3A+FR3 + WL 4,B3PG3A+FR4 + +#cont WL ANI_SET_YVEL,30000h + + WL 3,B3PG3A+FR5 + .word ANI_OFFSET,0,26,0 ;x,y,z + + WL 4,B4CD3A+FR3 + WL 4,B4CD3A+FR4 + WL 4,B4CD3A+FR5 + +; WL ANI_SET_YVEL,-20000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +;Maybe do a bounce + + ;impact +; WL ANI_CODE,SMALL_BOUNCE + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 4,B4CD3A+FR6 + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; WL 18,D4HS3B+FR8 + + WL 4,B4CD3A+FR6 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WL 3,B3PG3A+FR9 + WL 3,B3PG3A+FR10 + WL 3,B3PG3A+FR11 + WL 3,B3PG3A+FR12 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#set_opp_xflip + move *a13(ATTACH_PROC),a0,L + + move *a0(OBJ_CONTROL),a14 + xori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +;Check to see if I have tried to pile drive Yokozuna! + +; SUBR is_this_yoko +; +; move *a13(ATTACH_PROC),a0,L +; move *a0(WRESTLERNUM),a0 +; cmpi 3,a0 +; jrnz #ok +; +;;Yes, this is Yoko! +; +; move *a13(ANIMODE),a1 +; ori MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets +;#ok +; move *a13(ANIMODE),a1 +; andni MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets +; +;;For Yoko breaking free +;#break +; move *a13(ATTACH_PROC),a2,L +; .ref yok_3_head_held_brk_anim +; movi yok_3_head_held_brk_anim,a0 +;;a0 = * animation script +;;a2 = * wrestler process +; .ref change_anim_anim +; calla change_anim_anim +; rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H3BF3A,H3PP3X + .ref R3BF3A,R3GP3Z + .ref U4BF3Z,U3PP3X,U3GP3X + .ref Y3BF3A,Y3PP3Q,Y3FD3N + .ref S3BF3A,S3GP3X,S3OS3X,S3FD3X + .ref B4AM4A,B3PP3Q + .ref D3BF3A,D3PD3Z + .ref L3BF3B,L3GP3Z,L3FH3A,L3FD3B + +#Bret + LWWW H3BF3A+FR3,38,-13,0 + LWWW H3PP3X+FR1,18,-32,0 + LWWW H3PP3X+FR2,9,7,0 + LWWW H3PP3X+FR3,17,52,0 + LWWW H3PP3X+FR6,18,72,0 + LWWW H3PP3X+FR6,28,74,0 + LWWW H3PP3X+FR6,34,71,0 + LWWW H3PP3X+FR6,43,67,0 + LWWW H3PP3X+FR7,47,-9,0 + LWWW H3PP3X+FR8,42,-29,0 + .long 0 +#Razor + LWWW R3BF3A+FR9,39,-18,0 + LWWW R3GP3Z+FR1,25,-29,0 + LWWW R3GP3Z+FR2,21,-22,0 + LWWW R3GP3Z+FR4,34,58,0 + LWWW R3GP3Z+FR5,32,74,0 + LWWW R3GP3Z+FR5,42,77,0 + LWWW R3GP3Z+FR5,45,76,0 + LWWW R3GP3Z+FR5,51,67,0 + LWWW R3GP3Z+FR7,48,9,0 + LWWW R3GP3Z+FR8,40,-33,0 + .long 0 +#Taker + LWWW U4BF3Z+FR1,37,-12,0 + LWWW U3PP3X+FR1,23,-25,1 + LWWW U3PP3X+FR2,24,-15,1 + LWWW U3PP3X+FR3,20,17,1 + LWWW U3PP3X+FR5,25,60,1 + LWWW U3PP3X+FR6,38,86,1 + LWWW U3PP3X+FR6,41,86,1 + LWWW U3PP3X+FR6,47,77,1 + LWWW U3GP3X+FR1,52,-18,1 +; with a Y beneath the mat, which promptly results in his Y pos being +; set to match his GROUND_Y and his Yvel being zeroed. This sucks. + LWWW U3GP3X+FR2,51,-41+5,1 + .long 0 +#Yokozuna + LWWW Y3BF3A+FR11,46,-7,0 + LWWW Y3PP3Q+FR1,24,-22,0 + LWWW Y3PP3Q+FR3,28,-9,0 + LWWW Y3PP3Q+FR4,36,20,0 + LWWW Y3PP3Q+FR6,24,40,0 + LWWW Y3PP3Q+FR7,36,49,0 + LWWW Y3PP3Q+FR7,36,51,0 + LWWW Y3PP3Q+FR7,43,34,0 + LWWW Y3FD3N+FR2,52,-8,0 + LWWW Y3FD3N+FR3,48,-9,0 + .long 0 +#Shawn + LWWW S3BF3A+FR5,29,-27,0 + LWWW S3GP3X+FR1,30,-31,0 + LWWW S3GP3X+FR2,23,-19,0 + LWWW S3GP3X+FR3,28,19,0 + LWWW S3GP3X+FR4,22,65,0 + LWWW S3OS3X+FR8,43,66,1 + LWWW S3OS3X+FR8,43,66,1 + LWWW S3OS3X+FR8,47,57,1 + LWWW S3FD3X+FR2,57,-2,0 + LWWW S3GP3X+FR6,49,-30,0 + .long 0 +#BamBam + LWWW B4AM4A+FR5,41,-13,0 + LWWW B3PP3Q+FR1,23,-28,0 + LWWW B3PP3Q+FR2,23,-7,0 + LWWW B3PP3Q+FR3,29,33,0 + LWWW B3PP3Q+FR5,34,66,0 + LWWW B3PP3Q+FR6,35,74,0 + LWWW B3PP3Q+FR6,38,74,0 + LWWW B3PP3Q+FR6,46,68,0 + LWWW B3PP3Q+FR7,54,1,0 + LWWW B3FD3C+FR1,44,-23,0 + .long 0 +#Doink + LWWW D3BF3A+FR1,40,-14,0 + LWWW D3PD3Z+FR1,29,-36,1 + LWWW D3PD3Z+FR2,24,-12,1 + LWWW D3PD3Z+FR3,26,23,1 + LWWW D3PD3Z+FR4,19,63,1 + LWWW D3PD3Z+FR6,45,66,1 + LWWW D3PD3Z+FR6,47,62,1 + LWWW D3PD3Z+FR6,52,57,1 + LWWW D3PD3Z+FR8,52,-17,1 + LWWW D3PD3Z+FR9,48,-36,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3BF3B+FR1,27,-21,0 + LWWW L3GP3Z+FR1,25,-29,0 + LWWW L3GP3Z+FR2,23,-13,0 + LWWW L3GP3Z+FR4,29,36,0 + LWWW L3GP3Z+FR6,31,63,0 + LWWW L3GP3Z+FR6,42,64,0 + LWWW L3GP3Z+FR6,44,64,0 + LWWW L3GP3Z+FR6,53,54,0 + LWWW L3FH3A+FR6,51,-5,0 + LWWW L3FD3B+FR1,49,-30,0 + .long 0 + + .ref hrt_break_neck2_anim + .ref shn_break_neck2_anim + .ref dnk_break_neck2_anim + .ref und_break_neck2_anim + .ref lex_break_neck2_anim + .ref rzr_break_neck2_anim + .ref yok_break_neck2_anim + +#rollout_tbl + .long hrt_break_neck2_anim,rzr_break_neck2_anim + .long und_break_neck2_anim + .long yok_break_neck2_anim + .long shn_break_neck2_anim,bam_break_neck2_anim + .long dnk_break_neck2_anim,0,lex_break_neck2_anim + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR bam_3_head_hold2_anim +;Head hold when standing next to player +;No collisions possible + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + + WL 2,B4GH3B+FR1 + WL 2,B4GH3B+FR2 + WL 2,B4GH3B+FR3 + .word ANI_ATTACK_ON, AMODE_PUPPET3,28,82,59,21 ;mode,x,y,w,h + WL 3,B4GH3B+FR4 + WWL ANI_WAITHITOPP,6,B4GH3B+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + +; WL ANI_IFBLOCKED,#missed + WL ANI_GOTO,#gothim + + SUBR bam_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + .word ANI_STARTATTACK,AT_LEAPING,9 + + WL 3,B4GH3B+FR1 + WL 3,B4GH3B+FR2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 7,999,60,40,90000h,TGT_HEAD,72,96,0 + + WL 3,B4GH3B+FR3 + + .word ANI_ATTACK_ON, AMODE_PUPPET,28,82,59,21 ;mode,x,y,w,h + WL 3,B4GH3B+FR4 + + WWL ANI_WAITHITOPP,6,B4GH3B+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missed + +#gothim +;got him + + WL ANI_CODE,CALL_SETUP + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,B4GH3B+FR5,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + WWLLW ANI_SUPERSLAVE2,4,B4GH3B+FR6,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,B4GH3B+FR7,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,B4GH3D+FR5,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 4,B4GH3D+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 25,B4GH3B+FR5 + WL 3,B4GH3B+FR4 + WL 3,B4GH3B+FR3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H2AH3A,H3HB3A,H3BF3A + .ref R2AH2D,R3HB3A,R3BF3A + .ref U4BF3A,U4BF3Z,U4AM4C + .ref Y3BF3A,Y3LB3A + .ref S4AH3D,S4BF3A +; .ref B4BF3A,B3HB3A,B3BF3C + .ref D3AK3A,D3BF3A + .ref L4AH4B,L3BF3A,L3BF3B +#Bret + LWWW H2AH3A+FR1,86,19,0 + LWWW H3HB3A+FR3,78,-13,0 + LWWW H3HB3A+FR2,68,-17,0 + LWWW H3HB3A+FR1,57,-35,0 + .long 0 +#Razor + LWWW R3HB3A+FR3,80,-4,0 + LWWW R3HB3A+FR3,79,-15,0 + LWWW R3HB3A+FR2,75,-29,0 + LWWW R3BF3A+FR1,62,-36,0 + .long 0 +#Taker + LWWW U4AM4C+FR2,78,5,0 + LWWW U4BF3A+FR2,74,-1,0 + LWWW U4BF3A+FR3,44,-16,0 + LWWW U4BF3Z+FR3,63,-23,0 + .long 0 +#Yokozuna + LWWW Y3LB3A+FR2,82,10,0 + LWWW Y3LB3A+FR2,81,-1,0 + LWWW Y3LB3A+FR9,66,-26,0 + LWWW Y3BF3A+FR1,59,-23,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,78,2,0 + LWWW S4AH3D+FR5,77,-9,0 + LWWW S4BF3A+FR2,71,-21,0 + LWWW S4BF3A+FR3,44,-22,0 + .long 0 +#BamBam + LWWW B4BF3A+FR1,84,8,0 + LWWW B4BF3A+FR1,83,-3,0 + LWWW B3HB3A+FR2,74,-32,0 + LWWW B3BF3C+FR5,66,-27,0 + .long 0 +#Doink + LWWW D3AK3A+FR3,66,12,0 + LWWW D3AK3A+FR3,65,1,0 + LWWW D3AK3A+FR2,75,-19,0 + LWWW D3BF3A+FR1,62,-33,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,72,3,0 + LWWW L3BF3A+FR1,78,-8,1 + LWWW L3BF3A+FR2,74,-23,1 + LWWW L3BF3B+FR5,55,-31,0 + .long 0 + + .ref rzr_3_head_held_anim +; .ref bam_3_head_held_anim + .ref und_3_head_held_anim + .ref yok_3_head_held_anim + .ref hrt_3_head_held_anim + .ref lex_3_head_held_anim + .ref shn_3_head_held_anim + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + + +***************************************************************************** + + + .end + \ No newline at end of file diff --git a/BACKUP/BAMSEQ4.ASM b/BACKUP/BAMSEQ4.ASM new file mode 100644 index 0000000..ad0a045 --- /dev/null +++ b/BACKUP/BAMSEQ4.ASM @@ -0,0 +1,171 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 12/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "bamseq4.asm" + .title "Bam Bam animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "bamimg.h" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF HIT_THE_MAT,SMALL_BOUNCE + .REF CALL_MISSES + .ref am_I_dizzy + .ref am_I_dead + .ref ckzpos + .ref ck_dizzy + .ref start_run_anim + .ref bam_faceup_getup_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR bam_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,B3CP3B+FR1 + .ref ckzpos + WL ANI_CODE,ckzpos + WL ANI_SET_YVEL,040000h + WL 3,B3CP3B+FR1 + WL 4,B3CP3B+FR2 + WL 4,B3CP3B+FR3 + WL 4,B3CP3B+FR4 + WL 4,B3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,B3CP3B+FR7 + + WL 10,B3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + + SUBR bam_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,B4UC3Z+FR8 + WL ANI_CODE,ckzpos + WL 3,B4UC3Z+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + + WL 4,B3CP3B+FR1 + WL 4,B3CP3B+FR2 + WL 4,B3CP3B+FR3 + WL 4,B3CP3B+FR4 + WL 4,B3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,B3CP3B+FR7 + + WL 10,B3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + +#***************************************************************************** + + SUBR bam_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;; .word ANI_OFFSET,0,51,0 ;x,y,z + + WL 6,B4UC3B+FR3 + WL 6,B4UC3B+FR4 + WL 6,B4UC3B+FR5 + WL 1,B4UC3B+FR6 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,B3FD3C+FR1 + WL 3,B3FD3C+FR2 + WL 3,B3FD3C+FR3 + WL 3,B3FD3C+FR4 + WL 3,B3FD3C+FR5 + + .word ANI_ZERO_XZVELS + +;;; .word ANI_XFLIP + + WL 8,B3RL1A+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/BAM_MJT.IMG b/BACKUP/BAM_MJT.IMG new file mode 100644 index 0000000..bc0c6e4 Binary files /dev/null and b/BACKUP/BAM_MJT.IMG differ diff --git a/BACKUP/BAM_MSC.IMG b/BACKUP/BAM_MSC.IMG new file mode 100644 index 0000000..4a4238f Binary files /dev/null and b/BACKUP/BAM_MSC.IMG differ diff --git a/BACKUP/BGNDEQU.H b/BACKUP/BGNDEQU.H new file mode 100644 index 0000000..917c725 --- /dev/null +++ b/BACKUP/BGNDEQU.H @@ -0,0 +1,12 @@ +Wring .EQU 1979 +Hring .EQU 868 +Wwwfblank .EQU 400 +Hwwfblank .EQU 256 +Wslate .EQU 400 +Hslate .EQU 256 +Wwwfselbk .EQU 476 +Hwwfselbk .EQU 256 +WLADDER .EQU 999 +HLADDER .EQU 300 +WLAVAPG .EQU 404 +HLAVAPG .EQU 257 diff --git a/BACKUP/BGNDPAL.ASM b/BACKUP/BGNDPAL.ASM new file mode 100644 index 0000000..1c5a9d7 --- /dev/null +++ b/BACKUP/BGNDPAL.ASM @@ -0,0 +1,344 @@ + include bgndtbl.glo + + .OPTION B,D,L,T + .include "BGNDTBL.GLO" + .DATA +NUGRND_P: ;PAL #0 + .word 255 ;pal size + .word 00H,0575FH,0533FH,04F1EH,04AFEH,046BDH,0469DH,0427CH,03E5CH,03A1BH + .word 035FBH,031DAH,0319AH,02D79H,02D59H,02D58H,02937H,02515H,02514H,020F3H + .word 020D1H,01CD0H,018CEH,0188DH,0148CH,0146AH,01069H,0C48H,0C46H,0825H + .word 0864H,03510H,0310EH,030EEH,030CDH,02CEEH,02CCFH,028CFH,02CCDH,028AFH + .word 02CCCH,02CADH,02CACH,028AEH,028ADH,0288EH,02C8BH,028ACH,0288CH,024ADH + .word 0288BH,0286BH,0248CH,0286AH,0248AH,0246AH,0208BH,0244AH,02469H,0206BH + .word 0208AH,02449H,0206AH,02429H,02448H,0204AH,02049H,02048H,02029H,02027H + .word 02008H,02007H,01C28H,02006H,02004H,01808H,01807H,01407H,04630H,04A10H + .word 04A0FH,04610H,0460FH,045EFH,045EEH,041EFH,041EEH,03DEFH,03DEEH,041CEH + .word 041CDH,03DCEH,03DCDH,039CEH,039CDH,03DAEH,03DADH,03DACH,039ADH,039ACH + .word 039ABH,0398DH,0398CH,0398BH,0358CH,0358BH,0358AH,0356CH,0356BH,0356AH + .word 0316BH,0316AH,03169H,0314BH,0314AH,03149H,02D4AH,02D49H,02D48H,02D2AH + .word 02D29H,02D28H,02928H,02907H,02508H,02507H,02107H,024E7H,024E6H,020E7H + .word 020E6H,01CE8H,01CE7H,01CE6H,018E7H,020C6H,01CC6H,01CC5H,018C6H,018A6H + .word 056FDH,04ABDH,052BAH,04A9AH,04E77H,0467AH,0425CH,0425AH,04A56H,04259H + .word 03E39H,03A38H,03619H,03E17H,03618H,03617H,035F7H,035F6H,031D8H,035D3H + .word 029B7H,02DB6H,039ADH,02596H,02D93H,02575H,02175H,02573H,02572H,02D6DH + .word 01D54H,02153H,01934H,01D33H,01D32H,01932H,02130H,01113H,01512H,01D10H + .word 010F1H,018F0H,014F0H,0CD0H,014EEH,010CEH,08AEH,010ADH,048EH,06DH + .word 088BH,06CH,04DH,0FH,0C6AH,04BH,0C88H,06AH,0CH,02AH + .word 09H,07H,03H,06F9FH,0733BH,06B3CH,06B1AH,066D9H,05ED8H,066B7H + .word 05A96H,05294H,04E73H,05655H,04E55H,05633H,04A52H,06593H,04631H,04A13H + .word 04210H,045F1H,03DEFH,0642DH,039CEH,0498DH,0602AH,035ADH,0318CH,05409H + .word 02D6BH,05405H,0392AH,04C25H,0294AH,05003H,02529H,04802H,038A6H,01D0CH + .word 02108H,03445H,01CE7H,03802H,018C6H,014AAH,02821H,014A5H,07FDDH,07FDDH + .word 07FDDH,07FDDH,07FDDH,07FDDH,07FDDH +STRS_P: ;PAL #1 + .word 64 ;pal size + .word 00H,00H,0421H,0420H,0842H,0841H,0C63H,014A4H,018C6H,018C5H + .word 01CE6H,01CE7H,02108H,01D08H,02107H,0294AH,01CC5H,02528H,0400H,0C41H + .word 0820H,0318BH,0318CH,02D6BH,035ADH,02D6AH,02949H,02529H,014A5H,010A5H + .word 0821H,0C62H,01084H,01083H,0C42H,01483H,01062H,039CDH,039CEH,03DEFH + .word 035ACH,020E7H,031ACH,02929H,0C61H,01063H,018A4H,01082H,01484H,0C83H + .word 010A4H,04631H,03DEEH,0420FH,04210H,0316AH,02D8BH,02D8CH,02948H,02D69H + .word 062F6H,02D49H,02D4AH,0296BH +CPOSTB_P: ;PAL #2 + .word 32 ;pal size + .word 00H,05B3BH,0531AH,04AD9H,04299H,03A78H,03237H,02A16H,021D6H,01DB5H + .word 01574H,01153H,0912H,04F2H,0B1H,090H,06FH,06EH,04DH,04DH + .word 04CH,02BH,02AH,029H,08H,07H,06H,06H,05H,04H + .word 03H,03H +PURTAB_P: ;PAL #3 + .word 64 ;pal size + .word 00H,02108H,056F8H,052D7H,04EB6H,04A96H,04A95H,04A75H,04675H,04654H + .word 04254H,04234H,03974H,03E33H,03E13H,03953H,03D32H,031B1H,04451H,04031H + .word 03C11H,03811H,04430H,03C10H,03810H,02D8FH,0346FH,0304FH,02C4FH,0346EH + .word 0344EH,02C2EH,0296DH,0302DH,0282DH,0280DH,0254CH,0212CH,0202CH,0280CH + .word 0240CH,0200CH,01C0CH,0200CH,01C0CH,0200BH,01C0BH,0200CH,0200BH,0240BH + .word 0200BH,0200AH,0200AH,0200AH,02009H,02009H,02408H,02008H,02008H,02007H + .word 02007H,02005H,02003H,056F7H +SDWAL_P: ;PAL #4 + .word 34 ;pal size + .word 00H,0864H,0358CH,02D4AH,02508H,02507H,02107H,020E7H,020E6H,01CE7H + .word 01CE6H,01CC6H,01CC5H,018C6H,035ADH,0318CH,02D6BH,0294AH,02529H,02108H + .word 014A5H,02949H,02528H,018E6H,018C5H,014C6H,018A5H,018A4H,014A4H,010A4H + .word 01484H,01084H,01083H,0C84H +NUMAT_P: ;PAL #6 + .word 75 ;pal size + .word 00H,04F1EH,046BDH,0469DH,03E5CH,03A1BH,035FBH,031DAH,0319AH,02D79H + .word 02D58H,02937H,02515H,02514H,020F3H,020D1H,01CD0H,018CEH,0188DH,0148CH + .word 0146AH,07FDBH,07FBBH,07FBAH,07BBBH,07BBAH,07F99H,07B9AH,07B99H,0779AH + .word 07B78H,07F77H,07B79H,0777AH,07779H,07778H,07379H,07758H,07757H,07359H + .word 07358H,07755H,07737H,07735H,07337H,07336H,06F37H,06F36H,06B37H,06F16H + .word 06F15H,06B17H,06B16H,06B15H,06EF5H,066F5H,066F4H,06AD4H,066D4H,062D3H + .word 066B3H,062B3H,05EB2H,05E91H,05A92H,05A91H,05A71H,05671H,05670H,05650H + .word 05250H,04E2FH,04E0EH,02D59H,018AEH +TBUCK_P: ;PAL #7 + .word 60 ;pal size + .word 00H,02951H,0212DH,020EDH,020ECH,01CCBH,01CAAH,018ABH,018AAH,018A9H + .word 01488H,01487H,01469H,01066H,0C44H,0844H,0424H,0422H,03DEFH,035ADH + .word 0294AH,0252AH,02109H,014A5H,0C63H,0842H,07B9AH,07759H,07756H,06F12H + .word 06AF9H,06AF6H,06ACEH,05EB7H,06656H,05A51H,05A26H,04A2FH,04DF5H,055AFH + .word 06173H,035CCH,054F2H,0454EH,0454AH,04946H,0392EH,03926H,044CCH,044CAH + .word 02926H,030EDH,038CAH,024CAH,024A6H,024A3H,018A6H,01064H,01043H,0C43H +CPOSTT_P: ;PAL #8 + .word 32 ;pal size + .word 00H,0365AH,02E39H,02A19H,025F8H,021B7H,01D96H,01976H,01555H,01134H + .word 0D14H,08F3H,04D2H,0D1H,0B1H,090H,06FH,06EH,04DH,04DH + .word 04CH,02BH,02AH,029H,08H,07H,06H,06H,05H,04H + .word 03H,03H +DKCUR_P: ;PAL #9 + .word 38 ;pal size + .word 00H,024ABH,0248BH,0246AH,0208BH,0206AH,0204AH,02049H,01C4BH,01C4AH + .word 02028H,01C49H,01C29H,01C28H,01C08H,01829H,01C07H,01827H,01807H,01807H + .word 01806H,01408H,01806H,01407H,01806H,01805H,01407H,01406H,01405H,01406H + .word 01404H,01405H,01404H,01005H,01403H,0C05H,0C04H,0804H +WWFSKT_P: ;PAL #20 + .word 54 ;pal size + .word 00H,07687H,07267H,06E47H,06A27H,06207H,059E5H,055C6H,051A5H,04985H + .word 04164H,05EB7H,049D1H,0418FH,0444CH,0506EH,0308CH,060D1H,030EDH,02CD1H + .word 038D2H,044D3H,050D4H,05CD1H,05CB0H,054AFH,04C6DH,0404BH,03C4AH,03C6BH + .word 06B1AH,066D9H,062D7H,05A96H,05655H,05213H,04A12H,04DD2H,04D70H,0414BH + .word 0352AH,039D3H,04CEDH,02048H,030D1H,041B1H,0396EH,03027H,03427H,0354DH + .word 0312CH,02D0BH,028EAH,02825H +NTBCK_P: ;PAL #21 + .word 30 ;pal size + .word 00H,02951H,0212DH,020EDH,020ECH,01CCBH,01CAAH,018AAH,018A9H,01488H + .word 01487H,01066H,0C44H,0844H,0422H,03DEFH,0294AH,0252AH,02109H,014A5H + .word 0842H,05A51H,05A26H,0454EH,03926H,051E5H,04184H,03523H,05E46H,07FDDH +matl_P: ;PAL #22 + .word 75 ;pal size + .word 00H,04F1EH,046BDH,0469DH,03E5CH,03A1BH,035FBH,031DAH,0319AH,02D79H + .word 02D58H,02937H,02515H,02514H,020F3H,020D1H,01CD0H,018CEH,0188DH,0148CH + .word 0146AH,07FDBH,07FBBH,07FBAH,07BBBH,07BBAH,07F99H,07B9AH,07B99H,0779AH + .word 07B78H,07F77H,07B79H,0777AH,07779H,07778H,07379H,07758H,07757H,07359H + .word 07358H,07755H,07737H,07735H,07337H,07336H,06F37H,06F36H,06B37H,06F16H + .word 06F15H,06B17H,06B16H,06B15H,06EF5H,066F5H,066F4H,06AD4H,066D4H,062D3H + .word 066B3H,062B3H,05EB2H,05E91H,05A92H,05A91H,05A71H,05671H,05670H,05650H + .word 05250H,04E2FH,04E0EH,02D59H,018AEH + +ing9PALS: + .long NUGRND_P + .long STRS_P + .long CPOSTB_P + .long PURTAB_P + .long SDWAL_P + .long NMAT_P + .long NUMAT_P + .long TBUCK_P + .long CPOSTT_P + .long DKCUR_P + .long FRTROW_P + .long SDCRWD_P + .long JOYDEW_P + .long JASON_P + .long FARCRD_P + .long VOGEL_P + .long FLASH_P + .long ALEX_P + .long MARNE_P + .long JAKE_P + .long WWFSKT_P + .long NTBCK_P + .long matl_P +LLOGOL_P: ;PAL #1 + .word 15 ;pal size + .word 00H,05697H,04E76H,04E55H,04634H,04613H,03DF2H,01CE8H,014C7H,014A6H + .word 0C85H,0422H,01H,00H,066FBH +LLOGOD_P: ;PAL #2 + .word 15 ;pal size + .word 00H,03DD1H,035B0H,0358FH,02D6EH,02D4DH,0252CH,0422H,01H,00H + .word 00H,00H,00H,00H,04E35H + +kpgPALS: + .long CSELBK_P + .long LLOGOL_P + .long LLOGOD_P +CSELBK2P: ;PAL #0 + .word 22 ;pal size + .word 0400H,0443H,0C44H,0C65H,0422H,0C86H,0401H,0400H,0400H,014A7H + .word 01D2DH,014A8H,014C9H,014EAH,01D0BH,01D0CH,0256FH,0254EH,02D91H,02570H + .word 02DB2H,02DD3H +MGP_B_P: ;PAL #1 + .word 31 ;pal size + .word 00H,07BDFH,0739FH,06B7FH,0673FH,05F1EH,056DEH,052BEH,04A9DH,0425DH + .word 03E3DH,0361CH,031DCH,029BBH,0259BH,0217BH,01D59H,01937H,01515H,010F4H + .word 0CD2H,0CB0H,088FH,088DH,086CH,046AH,0449H,047H,026H,04H + .word 03H +MGP_R_P: ;PAL #2 + .word 31 ;pal size + .word 00H,07FDEH,07F9CH,07F5AH,07B18H,07AD6H,07694H,07252H,07210H,06DCEH + .word 06DADH,0696BH,06529H,06508H,060C6H,060A5H,058A5H,05484H,04C84H,04884H + .word 04463H,03C63H,03842H,03042H,02C42H,02821H,02021H,01C21H,01400H,01000H + .word 0C00H + +ELBKPALS: + .long CSELBK2P + .long MGP_B_P + .long MGP_R_P + .long CSELBK_P + .long CRPL_G_P + .long LLOGOL_P + .long LLOGOD_P +NUMATP2: ;PAL #0 + .word 75 ;pal size + .word 00H,04F1EH,046BDH,0469DH,03E5CH,03A1BH,035FBH,031DAH,0319AH,02D79H + .word 02D58H,02937H,02515H,02514H,020F3H,020D1H,01CD0H,018CEH,0188DH,0148CH + .word 0146AH,07FDBH,07FBBH,07FBAH,07BBBH,07BBAH,07F99H,07B9AH,07B99H,0779AH + .word 07B78H,07F77H,07B79H,0777AH,07779H,07778H,07379H,07758H,07757H,07359H + .word 07358H,07755H,07737H,07735H,07337H,07336H,06F37H,06F36H,06B37H,06F16H + .word 06F15H,06B17H,06B16H,06B15H,06EF5H,066F5H,066F4H,06AD4H,066D4H,062D3H + .word 066B3H,062B3H,05EB2H,05E91H,05A92H,05A91H,05A71H,05671H,05670H,05650H + .word 05250H,04E2FH,04E0EH,02D59H,018AEH +FARCRDP2: ;PAL #1 + .word 64 ;pal size + .word 00H,02D6BH,02108H,01CE7H,014A5H,01084H,0842H,04A31H,04A0EH,045CDH + .word 03DCEH,03CC6H,039ADH,0396AH,03928H,038A5H,03549H,0316BH,03127H,02D49H + .word 02D28H,02CC5H,02CC4H,02929H,02928H,028E6H,028A4H,024C5H,024A3H,020E6H + .word 020C5H,020A4H,02083H,01CC5H,018A4H,01883H,01862H,01062H,01041H,0820H + .word 0800H,014C4H,0427CH,01B7H,0173H,0254DH,0EDH,08AH,014C9H,018A7H + .word 0867H,010A6H,01086H,0886H,0C64H,0444H,0422H,014A4H,01083H,0822H + .word 01D08H,01102H,040C6H,06FDFH +JASONP2: ;PAL #2 + .word 54 ;pal size + .word 00H,02108H,01CE7H,014A5H,01084H,0842H,040A7H,03DCEH,03CC6H,039ADH + .word 038A5H,0358BH,03549H,0316BH,03127H,02D49H,02D28H,02CC5H,02CC4H,02928H + .word 028E6H,028A4H,020E6H,020C5H,020A4H,02083H,01CC5H,018A4H,01883H,01862H + .word 01062H,01041H,01021H,0821H,0800H,01523H,014C4H,0427CH,01B7H,0173H + .word 0EDH,08AH,018A7H,01086H,0886H,0C64H,0422H,018C5H,014A4H,01083H + .word 0822H,01102H,040C6H,06FDFH +CPOSTTP2: ;PAL #3 + .word 32 ;pal size + .word 00H,0365AH,02E39H,02A19H,025F8H,021B7H,01D96H,01976H,01555H,01134H + .word 0D14H,08F3H,04D2H,0D1H,0B1H,090H,06FH,06EH,04DH,04DH + .word 04CH,02BH,02AH,029H,08H,07H,06H,06H,05H,04H + .word 03H,03H +ROPERP2: ;PAL #4 + .word 16 ;pal size + .word 00H,07210H,06DADH,06529H,060C6H,05C84H,05821H,05000H,04800H,04400H + .word 03C00H,03800H,03000H,02800H,02400H,01C00H +ROPEWP2: ;PAL #5 + .word 16 ;pal size + .word 00H,07FFFH,0739CH,06B5AH,06739H,05EF7H,05AD6H,05294H,04A52H,04631H + .word 03DEFH,039CEH,0318CH,0294AH,02529H,01CE7H +ROPEBP2: ;PAL #6 + .word 16 ;pal size + .word 00H,04EFEH,0427DH,03A3CH,031FBH,02DD9H,02998H,02177H,01D36H,01915H + .word 014F3H,010B2H,0C91H,0870H,084FH,042EH +FLASH2P: ;PAL #7 + .word 42 ;pal size + .word 00H,02108H,01CE7H,014A5H,01084H,0842H,020C5H,020A4H,01CC5H,018A4H + .word 01883H,01862H,01062H,0821H,0800H,0C83H,0883H,0427CH,01B7H,0173H + .word 0254DH,0EDH,0252AH,08AH,014C9H,018A7H,0867H,014A6H,010A6H,01086H + .word 0886H,0C64H,0444H,0424H,0422H,018C5H,014A4H,01083H,0822H,01D08H + .word 014C6H,06FDFH + +ERPALS: + .long NUMATP2 + .long FARCRDP2 + .long JASONP2 + .long CPOSTTP2 + .long ROPERP2 + .long ROPEWP2 + .long ROPEBP2 + .long FLASH2P + .long VOGEL_P +MIDWAY_P: ;PAL #0 + .word 19 ;pal size + .word 02108H,06404H,05003H,03C02H,0284AH,0284AH,0284AH,0284AH,0284AH,0284AH + .word 0284AH,0284AH,0284AH,0284AH,0284AH,0284AH,0284AH,0284AH,0284AH +WWFAP: ;PAL #1 + .word 256 ;pal size + .word 02108H,07FFFH,073BDH,07BB6H,0779DH,07399H,07B92H,07F8DH,04BDCH,07777H + .word 06B7CH,07376H,043DAH,07B6CH,07F4FH,07754H,07752H,06B5AH,07B66H,07B4EH + .word 07739H,0635DH,07F48H,07B62H,07B4AH,037B9H,06F38H,06739H,0772DH,07B40H + .word 07315H,06F16H,0573DH,07311H,06F12H,0533CH,0770BH,06318H,0770AH,05B19H + .word 03B7H,07B01H,06AF4H,04F1CH,072E8H,076E5H,056FAH,05AF7H,0396H,076E3H + .word 06ED0H,056F8H,076E0H,06ECCH,062D3H,046FBH,04EF8H,05AD7H,06EC9H,05ED4H + .word 046FAH,072C4H,076C1H,07278H,066CBH,072C0H,04ED8H,042DBH,04ED7H,04AD8H + .word 06EA6H,056B6H,06EA5H,06A8FH,04AB6H,03ABAH,07280H,06E82H,06E16H,05294H + .word 05A8EH,06A6BH,06E67H,05A71H,0369AH,04696H,06E60H,04E75H,0664CH,05271H + .word 05E4FH,04A74H,06A44H,06A42H,05650H,05E49H,02A79H,06628H,06627H,02679H + .word 05E2EH,06994H,06A04H,02E77H,04A52H,06A00H,0620AH,02A59H,06224H,03E55H + .word 02659H,0522EH,06206H,05A0FH,05E0BH,04A31H,02A56H,05E09H,065C5H,04631H + .word 04233H,06553H,016ACH,0560BH,059CFH,01E38H,059E7H,05DC5H,06581H,06580H + .word 05DA6H,03E10H,059ABH,04DECH,055E6H,03213H,060F1H,045EDH,01217H,06161H + .word 055A8H,05D65H,04DCAH,01DF5H,05585H,0DF7H,011F6H,031F0H,041CDH,05946H + .word 05C90H,03DCEH,045B0H,05944H,049ADH,09F6H,04DA7H,05184H,035CFH,019D5H + .word 05D01H,05D7H,05CE1H,03DABH,01D6H,0418FH,035AEH,05126H,0582EH,031AFH + .word 05124H,04588H,04982H,011B4H,039A6H,050ADH,0DB4H,04947H,05103H,025AFH + .word 04D24H,0454BH,025AEH,04943H,0416AH,04926H,03589H,04167H,04529H,054A2H + .word 0412CH,0594H,0298DH,0356CH,04145H,0316CH,048E4H,044CBH,03D43H,01D6EH + .word 04104H,048C1H,03946H,01D6DH,05042H,02D4BH,019A0H,0352BH,03CE6H,040C4H + .word 03905H,034EAH,01580H,038C6H,034C9H,0212BH,03106H,02909H,030C9H,034C3H + .word 030C7H,034A5H,03C61H,0340AH,01D08H,01922H,02CE1H,028E5H,024E7H,01521H + .word 03406H,03008H,01CE7H,024C6H,03403H,028A2H,02C07H,02C06H,018C6H,02807H + .word 02C04H,03001H,02408H,02804H,02082H,02406H,02006H,01C07H,01485H,01806H + .word 01804H,0C64H,01422H,01001H,0842H,0401H +WWFR_P: ;PAL #2 + .word 17 ;pal size + .word 02108H,07FFFH,04EB5H,04654H,03E11H,03614H,035F3H,035F1H,03192H,02592H + .word 02990H,0298DH,0254EH,018A8H,018A7H,01065H,07FFFH +STONE_P: ;PAL #3 + .word 256 ;pal size + .word 02108H,07FFFH,04EB5H,04675H,04654H,03631H,03615H,03E11H,03614H,035F6H + .word 03610H,035F5H,035F4H,035F3H,035F1H,035D4H,035D3H,02DD4H,035D1H,035B4H + .word 035B2H,029B4H,035B1H,02DB3H,035B0H,029B3H,02DB2H,029B2H,02DB1H,03593H + .word 029B1H,025B1H,02D93H,03192H,02D92H,02D91H,02592H,02991H,02D90H,02591H + .word 02990H,0318CH,0298FH,02573H,02D71H,0298DH,02572H,02571H,02970H,02D6FH + .word 02171H,02D6EH,02570H,0296FH,02170H,0256FH,0296EH,02D6BH,0256EH,02951H + .word 02D50H,02950H,02D4EH,02550H,02150H,0294EH,0214FH,0294DH,0254EH,0214EH + .word 02531H,0254DH,02930H,0294AH,01D4EH,0214DH,02D2EH,02530H,0214CH,02D2CH + .word 0252FH,01D30H,0212FH,0292DH,01D2FH,0212EH,0252DH,01D2EH,0212DH,0192EH + .word 0252BH,01D2DH,0250FH,0192DH,02529H,0290DH,0250EH,0192CH,01D0FH,0210EH + .word 02129H,01D2AH,0210DH,0190EH,0250BH,0210CH,0190DH,01D0CH,0210BH,0210AH + .word 0190CH,01D0BH,02108H,0190BH,01D0AH,024ECH,020EDH,0150BH,01D09H,024EAH + .word 0150AH,01CECH,020EBH,020EAH,018ECH,01CEBH,018EBH,01CEAH,014EBH,018CDH + .word 01CE9H,014EAH,01CE7H,018E9H,020CBH,018E8H,018CCH,020C9H,018CBH,014CBH + .word 01CC9H,018CAH,01CC7H,018C9H,0CCBH,010CAH,018C8H,014C9H,018C6H,010ABH + .word 01CA9H,0C8CH,01CA8H,014AAH,018A9H,010AAH,018A8H,014A9H,0C8BH,0CAAH + .word 018A7H,018A6H,014A8H,088BH,0CA9H,010A8H,046CH,01889H,014A7H,0CA8H + .word 010A7H,01489H,014A5H,01888H,01089H,010A6H,01887H,0C89H,010A5H,01886H + .word 01088H,046AH,01487H,01468H,0C69H,0C88H,01087H,01485H,0869H,0888H + .word 0C87H,01068H,01086H,0469H,0887H,01467H,0C68H,01084H,0868H,0C85H + .word 01083H,0468H,01465H,01463H,01066H,0448H,0467H,01065H,0C66H,01064H + .word 01046H,0866H,0C65H,0466H,0865H,01045H,0C64H,0C63H,0465H,0846H + .word 01044H,0446H,0464H,0C45H,01042H,0463H,0845H,0445H,0C44H,0C24H + .word 0844H,0C42H,0C04H,0843H,025H,044H,0824H,0443H,0804H,0424H + .word 0442H,024H,0823H,023H,0821H,0403H,0422H,03H,022H,0421H + .word 0402H,021H,02H,0401H,0400H,07FFFH +SMWWF2P: ;PAL #5 + .word 256 ;pal size + .word 024ECH,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H,00H,05401H + .word 03801H,04401H,04822H,05109H,06A12H,02402H,04466H,06E54H,038C8H,0618FH + .word 05DF1H,044EAH,01802H,03405H,06634H,05A33H,0450CH,059B1H,01002H,038CAH + .word 0494EH,059D2H,06E77H,02446H,06677H,06A98H,0775CH,051D3H,06257H,06EDAH + .word 02889H,0390DH,03D2EH,04991H,059F5H,05E37H,06699H,06EFBH,0731CH,049F5H + .word 05257H,062DCH,05A9CH,039D8H,04A5AH,04A59H,03E19H,031D8H,035F9H,076E0H + .word 076E2H,07706H,0772AH,076C2H,0772EH,07731H,07660H,07640H,07685H,076EEH + .word 065E2H,07643H,07600H,065C1H,076ABH,07668H,07204H,07227H,07180H,06161H + .word 069C5H,0724AH,0768DH,05D41H,05942H,05564H,06DE7H,06961H,03CE2H,04D02H + .word 07562H,05D22H,06D21H,06D42H,05923H,030A2H,06965H,05189H,07291H,068E1H + .word 058C1H,06E4FH,070E1H,058A1H,068E2H,054C2H,060E3H,04C81H,06105H,06926H + .word 044E5H,065EDH,06481H,064A2H,072B4H,076F6H,07081H,054A3H,059CDH,06E51H + .word 06082H,05D28H,06C62H,0400H,06021H,05842H,03842H,03042H,06084H,048A5H + .word 050C6H,05D08H,05D6BH,0658CH,06DEFH,07FFFH + +PGPALS: + .long MIDWAY_P + .long WWFAP + .long WWFR_P + .long STONE_P + .long LAVA1_P + .long SMWWF2P + \ No newline at end of file diff --git a/BACKUP/BGNDTBL.ASM b/BACKUP/BGNDTBL.ASM new file mode 100644 index 0000000..c676132 --- /dev/null +++ b/BACKUP/BGNDTBL.ASM @@ -0,0 +1,818 @@ + include bgndtbl.glo + + .OPTION B,D,L,T + .include "BGNDTBL.GLO" + .DATA + +ing9HDRS: + .word 12,9 ;x size, y size + .long 0333DE02H ;address + .word 06000H ;dma ctrl + .word 72,31 + .long 0333E08AH + .word 05000H + .word 68,121 + .long 03340C22H + .word 07000H + .word 68,63 + .long 0334ED1EH + .word 06000H + .word 224,72 + .long 03355186H + .word 00H + .word 104,91 + .long 03374986H + .word 00H + .word 56,75 + .long 03387146H + .word 06000H + .word 76,55 + .long 0338D3B6H + .word 06000H + .word 60,67 + .long 033935AEH + .word 06000H + .word 28,86 + .long 033993E6H + .word 06000H + .word 72,47 + .long 0339CC56H + .word 06000H + .word 96,51 + .long 033A1BA6H + .word 06000H + .word 108,129 + .long 033A8E66H + .word 06000H + .word 76,32 + .long 033BD4EEH + .word 05000H + .word 48,47 + .long 033C046EH + .word 06000H + .word 72,96 + .long 033C394EH + .word 06000H + .word 20,28 + .long 033CDB4EH + .word 06000H + .word 92,173 + .long 033CE86EH + .word 00H + .word 68,31 + .long 033ED9CEH + .word 05000H + .word 76,64 + .long 033F02FAH + .word 00H + .word 60,177 + .long 033F9AFAH + .word 06000H + .word 100,71 + .long 034093E2H + .word 06000H + .word 144,92 + .long 03413A4AH + .word 06000H + .word 60,76 + .long 034270CAH + .word 06000H + .word 100,132 + .long 0342DBAAH + .word 06000H + .word 104,176 + .long 0344110AH + .word 00H + .word 124,113 + .long 03464D0AH + .word 00H + .word 48,71 + .long 034802EAH + .word 06000H + .word 92,66 + .long 034852CAH + .word 06000H + .word 40,59 + .long 0348E11AH + .word 06000H + .word 40,61 + .long 0349186AH + .word 06000H + .word 124,176 + .long 0349519AH + .word 00H + .word 72,172 + .long 034BFB9AH + .word 00H + .word 108,71 + .long 034D7E9AH + .word 06000H + .word 56,33 + .long 034E3252H + .word 06000H + .word 36,34 + .long 034E5DA2H + .word 06000H + .word 112,97 + .long 034E7A52H + .word 00H + .word 152,75 + .long 034FCDD2H + .word 00H + .word 64,68 + .long 03513212H + .word 00H + .word 156,99 + .long 0351BA12H + .word 00H + .word 224,109 + .long 03539CB2H + .word 07000H + .word 68,69 + .long 03563852H + .word 06000H + .word 44,34 + .long 0356A64AH + .word 06000H + .word 12,98 + .long 0356C95AH + .word 05000H + .word 80,19 + .long 0356E052H + .word 06000H + .word 60,48 + .long 035703F2H + .word 06000H + .word 36,63 + .long 03574772H + .word 06000H + .word 108,67 + .long 03577C9AH + .word 05000H + .word 48,36 + .long 035809EEH + .word 06000H + .word 116,75 + .long 0358326EH + .word 06000H + .word 232,9 + .long 0358FE56H + .word 06000H + .word 12,12 + .long 03592F46H + .word 05000H + .word 44,13 + .long 03593216H + .word 06000H + .word 8,93 + .long 03593F7EH + .word 05000H + .word 44,37 + .long 03594E06H + .word 06000H + .word 28,61 + .long 0359742EH + .word 05000H + .word 36,75 + .long 0359958AH + .word 00H + .word 152,99 + .long 0359E9EAH + .word 00H + .word 172,6 + .long 035BC02AH + .word 06000H + .word 136,66 + .long 035BD85AH + .word 05000H + .word 36,35 + .long 035C87AAH + .word 06000H + .word 192,75 + .long 035CA532H + .word 00H + .word 120,109 + .long 035E6732H + .word 07000H + .word 36,32 + .long 035FCCDAH + .word 06000H + .word 52,38 + .long 035FE7DAH + .word 06000H + .word 228,39 + .long 0360162AH + .word 06000H + .word 52,99 + .long 0360E692H + .word 00H + .word 56,66 + .long 03618772H + .word 00H + .word 96,111 + .long 0361FAF2H + .word 06000H + .word 44,36 + .long 0362F4B2H + .word 06000H + .word 100,9 + .long 036319D2H + .word 06000H + .word 100,6 + .long 03632EEAH + .word 06000H + .word 72,109 + .long 03633CFAH + .word 06000H + .word 100,99 + .long 0363F4EAH + .word 00H + .word 124,66 + .long 03652A4AH + .word 05000H + .word 52,36 + .long 0365CA22H + .word 06000H + .word 44,36 + .long 0365F602H + .word 06000H + .word 104,66 + .long 03661B22H + .word 05000H + .word 60,49 + .long 0366A132H + .word 06000H + .word 220,75 + .long 0366E61AH + .word 00H + .word 76,68 + .long 0368E9BAH + .word 00H + .word 72,97 + .long 03698B3AH + .word 00H + .word 248,36 + .long 036A657AH + .word 00H + .word 196,73 + .long 036B7C7AH + .word 00H + .word 96,111 + .long 036D3B9AH + .word 00H + .word 104,92 + .long 036E889AH + .word 00H + .word 40,63 + .long 036FB39AH + .word 00H + .word 72,78 + .long 0370025AH + .word 06000H + .word 104,102 + .long 037085FAH + .word 06000H +ringBLKS: + .word 04046H ;flags + .word 0,0 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 04044H,155,586,01H + .word 04050H,176,744,02H + .word 03F49H,183,626,03H + .word 06A40H,183,796,04H + .word 03F40H,186,764,05H + .word 04044H,198,618,06H + .word 04444H,201,524,07H + .word 04040H,201,691,01008H + .word 0414AH,203,687,09H + .word 03F44H,203,579,0AH + .word 03F44H,203,693,0BH + .word 0264BH,209,461,0CH + .word 04044H,219,612,0DH + .word 04444H,227,519,01H + .word 04050H,241,686,02H + .word 03F49H,248,626,03H + .word 04044H,254,646,0EH + .word 02144H,265,367,0FH + .word 04040H,272,687,01010H + .word 04444H,274,551,06H + .word 04040H,287,682,011H + .word 02144H,293,377,012H + .word 04444H,295,547,0DH + .word 03E40H,297,689,013H + .word 04049H,313,626,03H + .word 0284BH,316,430,014H + .word 04444H,330,579,0EH + .word 02144H,334,408,07H + .word 02144H,335,463,0AH + .word 04DH,336,305,015H + .word 044FH,338,376,016H + .word 02144H,359,404,01H + .word 02E4BH,363,542,017H + .word 02A4BH,374,446,018H + .word 04150H,376,567,02H + .word 04040H,378,679,019H + .word 04040H,383,566,01AH + .word 02C4CH,395,523,01BH + .word 06A40H,403,796,04H + .word 02144H,406,435,06H + .word 02144H,427,432,0DH + .word 024EH,434,310,01CH + .word 04150H,442,508,02H + .word 0244CH,450,477,01DH + .word 0640H,461,429,0101EH + .word 02144H,462,463,0EH + .word 04040H,480,679,01FH + .word 044FH,480,376,016H + .word 04040H,506,507,020H + .word 0841H,507,435,01021H + .word 0E4AH,517,474,022H + .word 04DH,529,305,015H + .word 0124AH,576,473,023H + .word 04040H,578,582,024H + .word 04040H,578,507,025H + .word 06940H,586,689,026H + .word 04040H,589,756,027H + .word 06446H,594,580,01028H + .word 0640H,609,418,0101EH + .word 0A42H,611,440,01029H + .word 0404AH,620,473,02AH + .word 044FH,622,376,016H + .word 06A40H,623,796,04H + .word 024EH,630,310,01CH + .word 06842H,640,585,02BH + .word 06455H,641,665,02CH + .word 06944H,648,700,0102DH + .word 06747H,649,585,02EH + .word 06940H,649,689,02FH + .word 0104CH,671,471,030H + .word 0C43H,675,434,01031H + .word 06445H,691,669,032H + .word 06558H,716,577,033H + .word 06445H,719,587,034H + .word 06448H,719,497,035H + .word 04DH,721,305,015H + .word 0164AH,723,470,036H + .word 06545H,724,502,01037H + .word 04040H,727,507,038H + .word 04040H,744,756,039H + .word 04040H,746,507,038H + .word 06445H,752,589,03AH + .word 06940H,757,689,03BH + .word 044FH,764,376,016H + .word 0184AH,770,472,03CH + .word 04040H,774,507,038H + .word 04040H,774,507,038H + .word 0841H,789,436,01021H + .word 04040H,799,507,03DH + .word 06446H,816,580,0103EH + .word 024EH,818,311,01CH + .word 01A4AH,820,475,03FH + .word 06A40H,842,796,04H + .word 01C4AH,859,469,040H + .word 06944H,877,707,01041H + .word 04040H,893,756,042H + .word 06940H,893,689,043H + .word 0541H,894,382,044H + .word 01E4AH,914,471,045H + .word 06445H,921,669,046H + .word 06445H,922,589,047H + .word 06446H,933,580,01048H + .word 04040H,943,756,049H + .word 06840H,947,689,04AH + .word 0124AH,966,473,023H + .word 04DH,974,305,015H + .word 0841H,976,436,01021H + .word 044FH,977,376,016H + .word 04046H,980,0,00H + .word 04050H,987,507,03DH + .word 06456H,1000,580,0103EH + .word 0144AH,1008,471,04BH + .word 06455H,1019,669,032H + .word 06455H,1019,589,03AH + .word 04050H,1040,756,039H + .word 06940H,1047,689,04AH + .word 0224AH,1061,471,04CH + .word 06A40H,1061,796,04H + .word 024EH,1073,310,01CH + .word 0C43H,1080,432,01031H + .word 0104CH,1099,471,030H + .word 0640H,1104,423,0101EH + .word 06456H,1118,580,01028H + .word 044FH,1119,376,016H + .word 0E4AH,1150,474,022H + .word 04DH,1163,305,015H + .word 06940H,1170,689,04DH + .word 06455H,1179,587,034H + .word 04040H,1179,507,038H + .word 06555H,1188,501,01037H + .word 04050H,1191,756,027H + .word 0A42H,1198,439,01029H + .word 04040H,1207,507,038H + .word 0164AH,1210,470,036H + .word 06548H,1214,577,033H + .word 06458H,1215,497,035H + .word 06445H,1217,665,02CH + .word 06944H,1221,704,0104EH + .word 04040H,1241,507,04FH + .word 04050H,1245,582,024H + .word 06757H,1252,585,02EH + .word 0184AH,1258,472,03CH + .word 024EH,1260,310,01CH + .word 044FH,1261,376,016H + .word 0841H,1268,437,01021H + .word 06940H,1274,689,050H + .word 06A40H,1281,796,04H + .word 06852H,1285,585,02BH + .word 01C4AH,1302,469,040H + .word 04050H,1332,679,01FH + .word 04DH,1350,305,015H + .word 01E4AH,1357,471,045H + .word 04040H,1357,582,051H + .word 0C43H,1376,432,01031H + .word 0144AH,1401,471,04BH + .word 044FH,1403,376,016H + .word 03F50H,1428,566,01AH + .word 04040H,1443,580,052H + .word 024EH,1450,310,01CH + .word 0404AH,1450,473,02AH + .word 04050H,1454,679,019H + .word 04040H,1458,507,053H + .word 04040H,1484,616,052H + .word 0A42H,1489,438,01029H + .word 01A4AH,1495,475,03FH + .word 06A40H,1500,796,04H + .word 04040H,1524,652,052H + .word 02154H,1531,462,0EH + .word 02154H,1538,430,0DH + .word 04DH,1541,305,015H + .word 044FH,1545,376,016H + .word 04050H,1557,683,011H + .word 04040H,1563,687,052H + .word 02154H,1579,434,06H + .word 04250H,1601,519,054H + .word 04040H,1603,723,052H + .word 02154H,1611,401,01H + .word 04140H,1629,507,02H + .word 02154H,1632,406,07H + .word 02154H,1634,461,0AH + .word 04040H,1644,759,052H + .word 0245CH,1647,473,01DH + .word 04040H,1649,763,055H + .word 04250H,1656,574,054H + .word 02A5BH,1664,444,018H + .word 02154H,1681,374,012H + .word 04250H,1685,578,056H + .word 04040H,1686,795,052H + .word 04140H,1694,565,02H + .word 02C5CH,1698,518,01BH + .word 02154H,1705,365,0FH + .word 02E5BH,1717,541,017H + .word 04250H,1717,632,054H + .word 06A40H,1720,796,04H + .word 04040H,1725,831,052H + .word 04140H,1759,623,02H + .word 04254H,1761,579,0EH + .word 0285BH,1764,429,014H + .word 04454H,1768,547,0DH + .word 04543H,1769,626,057H + .word 04250H,1777,688,054H + .word 04250H,1807,692,056H + .word 04454H,1809,551,06H + .word 0265BH,1823,460,0CH + .word 04140H,1823,681,02H + .word 04250H,1837,743,054H + .word 04264H,1837,626,0AH + .word 04543H,1840,631,058H + .word 04454H,1841,519,01H + .word 04454H,1862,523,07H + .word 04454H,1864,579,0AH + .word 03249H,1878,727,03H + .word 04140H,1888,739,02H + .word 07374H,1907,624,0AH + .word 0FFFFH ;End Marker +ringBMOD: + .word 1979,868,215 ;x size, y size, #blocks + .long ringBLKS, ing9HDRS, ing9PALS + +kpgHDRS: + .word 204,133 ;x size, y size + .long 03717E9AH ;address + .word 05000H ;dma ctrl + .word 204,119 + .long 03739086H + .word 05000H + .word 204,5 + .long 03756AAAH + .word 04000H + .word 196,133 + .long 03757A9AH + .word 05000H + .word 196,119 + .long 037777BEH + .word 05000H + .word 196,5 + .long 03793F4AH + .word 04000H + .word 76,62 + .long 03794E9AH + .word 04680H + .word 76,62 + .long 03797D12H + .word 04680H +wwfblankBLKS: + .word 0140H ;flags + .word 0,0 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 0140H,0,133,01H + .word 04040H,0,251,02H + .word 0140H,204,0,03H + .word 0140H,204,133,04H + .word 04040H,204,251,05H + .word 0FFFFH ;End Marker +slateBLKS: + .word 0140H ;flags + .word 0,133 ;x,y + .word 01H ;pal5,pal4,hdr13-0 + .word 0140H,0,0,00H + .word 04040H,0,251,02H + .word 04041H,17,12,06H + .word 04042H,17,178,07H + .word 04041H,157,12,06H + .word 04042H,157,178,07H + .word 0140H,204,133,04H + .word 0140H,204,0,03H + .word 04040H,204,251,05H + .word 04041H,298,12,06H + .word 04042H,298,178,07H + .word 0FFFFH ;End Marker +wwfblankBMOD: + .word 400,256,6 ;x size, y size, #blocks + .long wwfblankBLKS, kpgHDRS, kpgPALS +slateBMOD: + .word 400,256,12 ;x size, y size, #blocks + .long slateBLKS, kpgHDRS, kpgPALS + +ELBKHDRS: + .word 76,62 ;x size, y size + .long 0379AB8AH ;address + .word 04680H ;dma ctrl + .word 76,62 + .long 0379DA02H + .word 04680H + .word 204,133 + .long 037A087AH + .word 05000H + .word 204,119 + .long 037C1A66H + .word 05000H + .word 204,5 + .long 037DF48AH + .word 04000H + .word 128,9 + .long 037E047AH + .word 04080H + .word 8,135 + .long 037E1672H + .word 04000H + .word 124,61 + .long 037E2752H + .word 05000H + .word 124,145 + .long 037EBB0EH + .word 05000H + .word 40,44 + .long 03801A3AH + .word 05080H + .word 196,133 + .long 03803C7EH + .word 05000H + .word 196,119 + .long 038239A2H + .word 05000H + .word 196,5 + .long 0384012EH + .word 04000H + .word 124,145 + .long 0384107EH + .word 05000H + .word 124,61 + .long 03856FAAH + .word 05000H +wwfselbkBLKS: + .word 0545H ;flags + .word 0,13 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 0546H,0,177,01H + .word 0143H,44,0,02H + .word 0143H,44,133,03H + .word 04043H,44,251,04H + .word 0240H,54,236,05H + .word 0243H,54,101,06H + .word 0343H,54,36,06H + .word 0A51H,59,175,07H + .word 0A51H,59,30,08H + .word 0545H,200,7,00H + .word 0546H,200,186,01H + .word 04044H,204,180,09H + .word 04044H,204,90,09H + .word 04044H,204,45,09H + .word 04044H,204,135,09H + .word 04044H,244,180,09H + .word 04044H,244,135,09H + .word 04044H,244,90,09H + .word 04044H,244,45,09H + .word 0143H,248,0,0AH + .word 0143H,248,133,0BH + .word 04043H,248,251,0CH + .word 0A42H,300,30,0DH + .word 0A42H,300,175,0EH + .word 0240H,304,236,05H + .word 0545H,400,13,00H + .word 0546H,400,177,01H + .word 0253H,421,101,06H + .word 0353H,421,36,06H + .word 0FFFFH ;End Marker +wwfselbkBMOD: + .word 476,256,30 ;x size, y size, #blocks + .long wwfselbkBLKS, ELBKHDRS, ELBKPALS + +ERHDRS: + .word 92,66 ;x size, y size + .long 03860366H ;address + .word 06980H ;dma ctrl + .word 100,40 + .long 03867236H + .word 07000H + .word 72,61 + .long 0386DF96H + .word 06580H + .word 144,92 + .long 038726AEH + .word 06080H + .word 192,2 + .long 03885BBEH + .word 04000H + .word 192,2 + .long 038861BEH + .word 04000H + .word 192,2 + .long 038867BEH + .word 04000H + .word 100,71 + .long 03886DBEH + .word 06980H + .word 12,84 + .long 0388F666H + .word 05080H +LADDERBLKS: + .word 05841H ;flags + .word 0,118 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 06440H,8,260,01H + .word 05647H,9,71,02H + .word 05948H,10,183,03H + .word 05A54H,68,190,04H + .word 05A55H,68,214,05H + .word 05A56H,68,236,06H + .word 05742H,84,112,07H + .word 05647H,93,10,02H + .word 06440H,107,260,01H + .word 05647H,138,96,02H + .word 05948H,151,183,03H + .word 05841H,177,117,00H + .word 05647H,201,30,02H + .word 06440H,206,260,01H + .word 05A43H,260,176,08H + .word 05742H,264,112,07H + .word 05A46H,269,236,06H + .word 05A44H,270,190,04H + .word 05A45H,270,214,05H + .word 05647H,280,70,02H + .word 05948H,292,183,03H + .word 06440H,305,260,01H + .word 05647H,342,5,02H + .word 05841H,364,117,00H + .word 06440H,404,260,01H + .word 05647H,408,80,02H + .word 05948H,433,183,03H + .word 05742H,454,112,07H + .word 05A56H,461,236,06H + .word 05A54H,462,190,04H + .word 05A55H,462,214,05H + .word 05647H,502,52,02H + .word 06440H,503,260,01H + .word 05841H,552,117,00H + .word 05647H,570,100,02H + .word 05948H,574,183,03H + .word 05647H,597,16,02H + .word 06440H,602,260,01H + .word 05742H,637,112,07H + .word 05647H,643,82,02H + .word 05A43H,653,176,08H + .word 05A45H,662,214,05H + .word 05A46H,662,236,06H + .word 05A44H,662,190,04H + .word 06440H,701,260,01H + .word 05647H,711,28,02H + .word 05948H,716,182,03H + .word 05841H,726,116,00H + .word 05647H,774,67,02H + .word 05647H,790,0,02H + .word 06440H,800,260,01H + .word 05742H,809,111,07H + .word 04040H,899,260,01H + .word 0FFFFH ;End Marker + +;file LADDER blocks not in any module +; .word 04056H ;flags +; .word 1388,337 ;x,y +; .word 06H ;pal5,pal4,hdr13-0 +; .word 04054H,1389,291,04H +; .word 04055H,1389,315,05H +; .word 04040H,1438,361,01H +; .word 04040H,1537,361,01H +; .word 04043H,1580,277,08H +; .word 04044H,1590,291,04H +; .word 04045H,1590,315,05H +; .word 04046H,1590,337,06H +; .word 04040H,1636,361,01H +; .word 04040H,1735,361,01H +; .word 0FFFFH ;End Marker +LADDERBMOD: + .word 999,300,54 ;x size, y size, #blocks + .long LADDERBLKS, ERHDRS, ERPALS + +PGHDRS: + .word 200,131 ;x size, y size + .long 0389096EH ;address + .word 00H ;dma ctrl + .word 200,125 + .long 038C3C2EH + .word 00H + .word 200,77 + .long 038F496EH + .word 0F80H + .word 88,81 + .long 0390F216H + .word 04E80H + .word 36,24 + .long 0391171EH + .word 04580H + .word 120,102 + .long 03911B9EH + .word 04B80H + .word 192,10 + .long 039156BEH + .word 03080H + .word 100,71 + .long 03916CE0H + .word 04D80H + .word 124,16 + .long 03919750H + .word 02080H + .word 92,52 + .long 0391A686H + .word 0480H + .word 104,102 + .long 03921CDEH + .word 04B80H + .word 192,67 + .long 039258FEH + .word 080H + .word 200,131 + .long 0393E59EH + .word 00H + .word 200,125 + .long 0397185EH + .word 00H + .word 144,92 + .long 039A259EH + .word 04F80H + .word 88,55 + .long 039AA03EH + .word 04A80H +LAVAPGBLKS: + .word 04043H ;flags + .word 0,125 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 04043H,1,0,01H + .word 05F41H,2,102,02H + .word 04044H,8,153,03H + .word 04044H,12,91,04H + .word 04044H,77,28,05H + .word 04042H,109,79,06H + .word 04044H,124,154,07H + .word 04040H,140,198,08H + .word 05F45H,158,19,09H + .word 04044H,196,31,0AH + .word 05F41H,199,103,0BH + .word 04043H,200,126,0CH + .word 04043H,201,0,0DH + .word 04044H,229,133,0EH + .word 04044H,316,66,0FH + .word 0FFFFH ;End Marker +LAVAPGBMOD: + .word 404,257,16 ;x size, y size, #blocks + .long LAVAPGBLKS, PGHDRS, PGPALS + \ No newline at end of file diff --git a/BACKUP/BKUP.BAT b/BACKUP/BKUP.BAT new file mode 100644 index 0000000..8a6aaa6 --- /dev/null +++ b/BACKUP/BKUP.BAT @@ -0,0 +1,31 @@ +@echo Backing up DOC directory... +c: +cd \video\doc +i: +cd \video\doc +xcopy c:*.doc /m /v +@echo Backing up Wrestlemania... +c: +cd \video\wwf +i: +cd \video\wwf +xcopy c:*.asm /m /v +xcopy c:*.equ /m /v +xcopy c:*.h /m /v +xcopy c:makefile /m /v +xcopy c:make.ini /m /v +xcopy c:*.cmd /m /v +xcopy c:*.bat /m /v +c: +cd img +i: +cd img +xcopy c:*.bat /m /v +xcopy c:*.lod /m /v +xcopy c:*.ld1 /m /v +xcopy c:*.bdb /m /v +xcopy c:*.bdd /m /v +xcopy c:*.img /m /v +ww + + \ No newline at end of file diff --git a/BACKUP/BRET.ASM b/BACKUP/BRET.ASM new file mode 100644 index 0000000..ea4adb5 --- /dev/null +++ b/BACKUP/BRET.ASM @@ -0,0 +1,1857 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/24/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "bret.asm" + .title "Bret Hart specific game code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "jjxm.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,inc_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 clear_damage_log + .ref check_dizzy + + .ref change_anim1,change_anim1a + .ref change_anim2,change_anim2a + .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 bounce_off_ropes + .ref climb_turnbuckle + .ref do_roll,JUMP_ROPES + + ;from DCSSOUND.ASM + .ref triple_sound + + ;from WRESTLE.ASM + .ref lineup_grapple + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref wres_slave_anim + .ref hrt_zip_anim + .ref start_run_anim + + .ref hrt_2_block_anim,hrt_4_block_anim + + .ref hrt_stand2_anim,hrt_stand8_anim + .ref hrt_stand4_anim,hrt_stand6_anim + .ref hrt_torso2_anim,hrt_torso8_anim + .ref hrt_torso4_anim,hrt_torso6_anim + + .ref hrt_2_to_4_turn_anim,hrt_8_to_6_turn_anim ;stand + .ref hrt_4_to_2_turn_anim,hrt_6_to_8_turn_anim + .ref hrt_4_to_6_turn_anim,hrt_6_to_4_turn_anim + .ref hrt_2_to_8_turn_anim,hrt_8_to_2_turn_anim + .ref hrt_4_to_8_turn_anim,hrt_6_to_2_turn_anim + .ref hrt_2_to_6_turn_anim,hrt_8_to_4_turn_anim + + .ref hrt_2_to_4_turn2_anim,hrt_8_to_6_turn2_anim ;torso + .ref hrt_4_to_2_turn2_anim,hrt_6_to_8_turn2_anim + .ref hrt_4_to_6_turn2_anim,hrt_6_to_4_turn2_anim + .ref hrt_2_to_8_turn2_anim,hrt_8_to_2_turn2_anim + .ref hrt_4_to_8_turn2_anim,hrt_6_to_2_turn2_anim + .ref hrt_2_to_6_turn2_anim,hrt_8_to_4_turn2_anim + + .ref hrt_walk1_f2_anim,hrt_walk2_f2_anim,hrt_walk4_f2_anim + .ref hrt_walk5_f2_anim,hrt_walk6_f2_anim,hrt_walk8_f2_anim + + .ref hrt_walk1_f4_anim,hrt_walk2_f4_anim,hrt_walk4_f4_anim + .ref hrt_walk5_f4_anim,hrt_walk6_f4_anim,hrt_walk8_f4_anim + + .ref hrt_run2_anim +;,hrt_ocrun_anim + + .ref hrt_2_punch_anim,hrt_4_punch_anim + .ref hrt_2_kick_anim,hrt_4_kick_anim + .ref hrt_flying_kick_anim + + .ref hrt_hitonground_anim,hrt_hitonground_facedown_anim + + .ref hrt_2_butt_anim,hrt_4_butt_anim + .ref hrt_2_knee_anim,hrt_4_knee_anim + .ref hrt_2_bigboot_anim + .ref hrt_4_bigboot_anim + + .ref hrt_2_stomp_anim,hrt_4_stomp_anim + + .ref hrt_2_push_anim,hrt_4_push_anim + + .ref hrt_4_grabfling_anim,hrt_hipslam_anim + + .ref hrt_2_grabfling_anim + + .ref hrt_faceup_getup_anim,hrt_facedown_getup_anim + + .ref hrt_4_jumpkick_anim + + .ref hrt_heldoh_anim + + .ref hrt_backbreaker_anim + .ref hrt_neckbreaker_anim + .ref hrt_pogo_anim + + .ref hrt_2_ground_punch_anim,hrt_4_ground_punch_anim + .ref hrt_running_ground_punch_anim + .ref hrt_climb_down_anim,hrt_tbukl_leap_anim + .ref hrt_climb_up_anim + + .ref hrt_hh_2_ddt_anim + .ref hrt_running_ddt_anim + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +bret_secret_moves + .long #button_hold ;must have this one + + .long #neck_grab + .long #grab_fling + + .long 0 + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 30 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + .ref hrt_3_head_hold_anim + movi hrt_3_head_hold_anim,a0 + calla change_anim1a + rets + +#grab_fling + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long scrt_grabfling + +scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + + + FACE24 hrt,grabfling_anim + calla change_anim1a + + WRSND W_BRET,GRABFLING_T1,GRABFLING_T2 + + rets + + +#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 + + + +#hdheld_push + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 50 ;max + .long scrt_hdpush + +scrt_hdpush + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #out + + .ref hrt_2_push2_anim + movi hrt_2_push2_anim,a0 + calla change_anim1a + +#out + rets + + + +#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_2ndwind + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_scrt_2ndwind + +;;; movi hrt_2ndwind_anim,a0 + calla change_anim1a +#no_scrt_2ndwind + rets + + +#***************************************************************************** + + SUBR bret_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi hrt_stand4_anim,a0 + calla change_anim1a + + movi hrt_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + .ref do_taunt + CREATE0 do_taunt + PULL a10 + + rets + +#p1 + movi hrt_stand2_anim,a0 + calla change_anim1a + + movi hrt_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* BRET HART CONTROL CODE +* +* a13 = * bret process + + SUBR move_bret + + + movi bret_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 + .long mode_normal ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .ref mode_inair2 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .ref mode_choking + .long mode_choking ;25 + +#***************************************************************************** + +mode_normal + + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + +;Any button causes a pin + move a13,a0 + calla wres_get_but_val_cur + move a0,a0 + jrz #opp_not_dead + +;Make sure opponent is on the ground! +;First, see if opponent is on the ground. + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #opp_not_dead + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a1,L + + move *a1(OBJ_YPOS),a0,L + move *a1(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + +;Opponent is on ground. +;Now check to see if I'm attached to him in puppet mode! + move *a13(ATTACH_PROC),a1,L + jrz #done + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 +;If I'm attached to him, let the move finish! + jrz #opp_not_dead +#done + + .ref hrt_2_pin_anim + .ref hrt_4_pin_anim + + FACE24 hrt,pin_anim + calla change_anim1a + + rets + +#opp_notgnd +#opp_not_dead + +;MJT Start + move *a13(IMMOBILIZE_TIME),a0 + jrnz #no_climb +;MJT End + + 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 + move *a13(WRESTLERNUM),A5 + .ref CLIMB_ROPES,ADD_IF_SILENT + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets +#no_climb + + calla execute_walk + +#no_interrupt + rets + +#action_table +;This table accounts for 2 buttons being hit simultaneously. + + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +************ +#graboh + rets + +#z ;0 + + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 62 92 headbutt +* dizzy " " +* normal > normal punch +* dizzy " " +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running hiptoss +* bouncing hiptoss +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 62, 92,#punch_hdbutt,#punch_punch + JJXM BLOCK, 62, 92,#punch_hdbutt,#punch_punch + JJXM DIZZY, 62, 92,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 120,120,#punch_lbowdrop,#punch_punch + JJXM RUNNING, #punch_hiptoss + JJXM BOUNCING, #punch_hiptoss + JJXM ONTURNBKL, 60, 96,#punch_yankdown,#punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM INAIR, 62, 92,#punch_hdbutt,#punch_punch + JJXM ATTACHED, 62, 92,#punch_hdbutt,#punch_punch + JJXM DEAD, 62, 92,#punch_hdbutt,#punch_punch + JJXM OPPOVERHEAD, 62, 92,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 62, 92,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 62, 92,#punch_hdbutt,#punch_punch + JJXM MASTER, 62, 92,#punch_hdbutt,#punch_punch + JJXM SLAVE, 62, 92,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 62, 92,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 62, 92,#punch_hdbutt,#punch_punch + JJXM PUPPET, 62, 92,#punch_hdbutt,#punch_punch + JJXM INAIR2, 62, 92,#punch_hdbutt,#punch_punch + JJXM_END + +#punch_rets + rets + +***** +#punch_punch +std_punch + + FACE24 hrt,punch_anim + calla change_anim1a + + WRSND W_BRET,PUNCH_T1,PUNCH_T2 + rets + +***** +#punch_hdbutt + + FACE24 hrt,butt_anim + calla change_anim1a + + WRSND W_BRET,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbowdrop + + FACE24 hrt,ground_punch_anim + calla change_anim1a + + WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2 + rets + +***** +#punch_yankdown +std_yankdown + rets + +***** +#punch_hiptoss +std_hiptoss + + movi hrt_hipslam_anim,a0 + calla change_anim1a + + WRSND W_BRET,HIPTOSS_T1,HIPTOSS_T2 + rets + + +************ +#block ;2 + + clr a0 + move a0,*a13(OBJ_XVEL),L + +std_block + + move *a13(NEW_FACING_DIR),a0 + move a0,*a13(FACING_DIR) + + FACE24 hrt,block_anim + calla change_anim1 + rets + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 120 120 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 50, 92,#spunch_special,#spunch_jump + JJXM BLOCK, 50, 92,#spunch_special,#spunch_jump + JJXM DIZZY, 50, 92,#spunch_special,#spunch_jump + JJXM ONGROUND, 120,120,#spunch_lbowdrop,std_punch + JJXM RUNNING, std_hiptoss + JJXM BOUNCING, std_hiptoss + JJXM ONTURNBKL, 60, 96,std_yankdown,std_punch + JJXM CLIMBTURNBKL, std_punch + JJXM INAIR, 50, 92,#spunch_special,#spunch_jump + JJXM ATTACHED, 50, 92,#spunch_special,#spunch_jump + JJXM DEAD, 50, 92,#spunch_special,#spunch_jump + JJXM WAITANIM, 50, 92,#spunch_special,#spunch_jump + JJXM GRAPPLE, 50, 92,#spunch_special,#spunch_jump + JJXM MASTER, 50, 92,#spunch_special,#spunch_jump + JJXM SLAVE, 50, 92,#spunch_special,#spunch_jump + JJXM HEADHOLD, 50, 92,#spunch_special,#spunch_jump + JJXM HEADHELD, 50, 92,#spunch_special,#spunch_jump + JJXM PUPPET, 50, 92,#spunch_special,#spunch_jump + JJXM INAIR2, 50, 92,#spunch_special,#spunch_jump + JJXM OPPOVERHEAD, 50, 92,#spunch_special,#spunch_jump + JJXM_END + +***** +#spunch_jump ;jumping punch attack + +;RJR START + movi hrt_hipslam_anim,a0 + calla change_anim1a +;RJR END + rets + +***** +#spunch_special + +;RJR START +; movi hrt_pogo_anim,a0 + movi hrt_hipslam_anim,a0 + calla change_anim1a +;RJR END + WRSND W_BRET,PUNCH_T1,PUNCH_T2 + + rets + +***** +#spunch_lbowdrop + + .ref hrt_2_hair_pickup_anim + .ref hrt_4_hair_pickup_anim +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 hrt,hair_pickup_anim + calla change_anim1 + + WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2 + + rets + +#no + FACE24 hrt,ground_punch_anim + calla change_anim1 + + WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2 + + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 56 92 knee +* block " " +* dizzy " " +* normal > normal kick +* block " " +* dizzy " " +* +* onground < 120 120 stomp +* onground > normal kick +* +* running normal kick +* bouncing normal kick +* +* onturnbkl normal kick +* climbturnbkl normal kick +* + JJXM_INIT + JJXM NORMAL, 56, 92,#kick_knee,#kick_kick + JJXM BLOCK, 56, 92,#kick_knee,#kick_kick + JJXM DIZZY, 56, 92,#kick_knee,#kick_kick + JJXM ONGROUND, 120,120,#kick_stomp,#kick_kick + JJXM RUNNING, #kick_kick + JJXM BOUNCING, #kick_kick + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM INAIR, 56, 92,#kick_knee,#kick_kick + JJXM ATTACHED, 56, 92,#kick_knee,#kick_kick + JJXM DEAD, 56, 92,#kick_knee,#kick_kick + JJXM OPPOVERHEAD, 56, 92,#kick_knee,#kick_kick + JJXM WAITANIM, 56, 92,#kick_knee,#kick_kick + JJXM GRAPPLE, 56, 92,#kick_knee,#kick_kick + JJXM MASTER, 56, 92,#kick_knee,#kick_kick + JJXM SLAVE, 56, 92,#kick_knee,#kick_kick + JJXM HEADHOLD, 56, 92,#kick_knee,#kick_kick + JJXM HEADHELD, 56, 92,#kick_knee,#kick_kick + JJXM PUPPET, 56, 92,#kick_knee,#kick_kick + JJXM INAIR2, 56, 92,#kick_knee,#kick_kick + JJXM_END + +***** +#kick_kick +std_kick + + FACE24 hrt,kick_anim + calla change_anim1a + + WRSND W_BRET,KICK_T1,KICK_T2 + rets + +***** +#kick_knee + + FACE24 hrt,knee_anim + calla change_anim1a + + WRSND W_BRET,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp +attack_stomp + + FACE24 hrt,stomp_anim + calla change_anim1a + + WRSND W_BRET,KICK_T1,KICK_T2 + + rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 120 120 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 60 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 60, 60,#skick_special,#skick_kick + JJXM BLOCK, 60, 60,#skick_special,#skick_kick + JJXM DIZZY, 60, 60,#skick_special,#skick_kick + JJXM ONGROUND, 120,120,attack_stomp,std_kick + JJXM RUNNING, #skick_bigboot + JJXM BOUNCING, #skick_bigboot + JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick + JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick + JJXM INAIR, 60, 60,#skick_special,#skick_kick + JJXM ATTACHED, 60, 60,#skick_special,#skick_kick + JJXM DEAD, 60, 60,#skick_special,#skick_kick + JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick + JJXM WAITANIM, 60, 60,#skick_special,#skick_kick + JJXM GRAPPLE, 60, 60,#skick_special,#skick_kick + JJXM MASTER, 60, 60,#skick_special,#skick_kick + JJXM SLAVE, 60, 60,#skick_special,#skick_kick + JJXM HEADHOLD, 60, 60,#skick_special,#skick_kick + JJXM HEADHELD, 60, 60,#skick_special,#skick_kick + JJXM PUPPET, 60, 60,#skick_special,#skick_kick + JJXM INAIR2, 60, 60,#skick_special,#skick_kick + JJXM_END + +***** +#skick_kick + + movi hrt_4_jumpkick_anim,a0 + calla change_anim1a + + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +#skick_special + + movi hrt_neckbreaker_anim,a0 + calla change_anim1a + rets + +;***** +;#skick_stomp +; +; rets + +***** +#skick_bigboot + + FACE24 hrt,bigboot_anim + calla change_anim1a + + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + + rets + + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ 60000h ;50000h +;#XACC_VAL equ 04000h +#ZDRIFT_VAL equ 20000h ;18000h + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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_stick_val_cur + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#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 + .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 +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 belly flop +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline + JJXM BLOCK, #punch_clothesline + JJXM DIZZY, #punch_clothesline + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_rets + JJXM RUNNING, #punch_clothesline + JJXM BOUNCING, #punch_clothesline + JJXM ONTURNBKL, #punch_clothesline + JJXM CLIMBTURNBKL, #punch_clothesline + JJXM INAIR, #punch_clothesline + JJXM ATTACHED, #punch_clothesline + JJXM DEAD, #punch_clothesline + JJXM OPPOVERHEAD, #punch_clothesline + JJXM WAITANIM, #punch_clothesline + JJXM GRAPPLE, #punch_clothesline + JJXM MASTER, #punch_clothesline + JJXM SLAVE, #punch_clothesline + JJXM HEADHOLD, #punch_clothesline + JJXM HEADHELD, #punch_clothesline + JJXM PUPPET, #punch_clothesline + JJXM INAIR2, #punch_clothesline + JJXM_END + + +***** +#punch_rets + rets + +***** +#punch_clothesline + + + movi hrt_running_ddt_anim,a0 + calla change_anim1a + + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +#punch_bellyflop +attack_bellyflop + + movi hrt_running_ground_punch_anim,a0 + calla change_anim1a + + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + + rets + +************ +#block ;2 + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 running stomp +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick + JJXM BLOCK, #kick_flyingkick + JJXM DIZZY, #kick_flyingkick + JJXM ONGROUND, 176,176,attack_bellyflop,#kick_rets + JJXM RUNNING, #kick_flyingkick + JJXM BOUNCING, #kick_flyingkick + JJXM ONTURNBKL, #kick_flyingkick + JJXM CLIMBTURNBKL, #kick_flyingkick + JJXM INAIR, #kick_flyingkick + JJXM ATTACHED, #kick_flyingkick + JJXM DEAD, #kick_flyingkick + JJXM OPPOVERHEAD, #kick_flyingkick + JJXM WAITANIM, #kick_flyingkick + JJXM GRAPPLE, #kick_flyingkick + JJXM MASTER, #kick_flyingkick + JJXM SLAVE, #kick_flyingkick + JJXM HEADHOLD, #kick_flyingkick + JJXM HEADHELD, #kick_flyingkick + JJXM PUPPET, #kick_flyingkick + JJXM INAIR2, #kick_flyingkick + JJXM_END + +#kick_rets + rets + +***** +#kick_flyingkick + + movi hrt_flying_kick_anim,a0 + calla change_anim1a + + WRSND W_BRET,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 + +#***************************************************************************** + +mode_onground ;4 + + 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 hrt_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 + + ;this is so an attack isn't turned into a climbdown + ; in those 5-10 ticks before MODE_INAIR2 is set... + move *a13(ANIBASE),a14,L + cmpi hrt_climb_up_anim,a14 + jrne #no_climbdown + + movi hrt_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + + rets + +#no_climbdown + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#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 + + movi hrt_tbukl_leap_anim,a0 + calla change_anim1a + + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #no_interrupt + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #punchblock ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + FACE24 hrt,push_anim + calla change_anim1a + + WRSND W_BRET,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* BRET with zero health + +mode_dizzy ;8 + + move *a13(GETUP_TIME),a0 + jrnz #still_going + + calla clear_damage_log + + clr a0 + move a0,*a13(STARS_FLAG) + + SETMODE NORMAL + +#still_going + 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 ;* remove this???? +; 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) +; +; rets +; +;#still_attached +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #no_interrupt +; +; move *a13(FACING_DIR),a0 +; andni MOVE_UP,a0 +; ori MOVE_DOWN,a0 +; move a0,*a13(FACING_DIR) +; move a0,*a13(NEW_FACING_DIR) +; +; move a13,a0 +; calla wres_get_stick_val_cur +; jrz #stand +; +; move a0,*a13(MOVE_DIR) +; calla execute_walk +; +; movi hrt_holdoh_anim,a0 +; calla change_anim2 +; jruc #ck_butns +;#stand +; clr a0 +; move a0,*a13(MOVE_DIR) +; move a0,*a13(OBJ_XVEL),L +; move a0,*a13(OBJ_ZVEL),L +; +; movi hrt_stndholdoh_anim,a0 +; calla change_anim1 +; +;#ck_butns +; +; +; move a13,a0 +; calla wres_get_but_val_down +; andi 011111b,a0 +; X32 a0 +; addi #action_table,a0 +; move *a0,a0,L +; call a0 +; +;#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 +;#block ;2 +;#super_punch ;4 +;#kick ;8 +;#super_kick ;16 +; + 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(ATTACH_PROC),a10,L + jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + +;Should we allow you to break from head hold into a block? +;I think not right now... +; 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 do_block ;& 1 for current buttons +; +;;Do an ANI_DETACH +; move *a13(ATTACH_PROC),a1,L +; jrz #done +; clr a0 +; move a0,*a13(ATTACH_PROC),L ;not attached to anything +; +; move *a1(ATTACH_PROC),a2,L +; cmp a2,a13 +; jrne #done +; +; move a0,*a1(ATTACH_PROC),L ;not attached to anything +;#done +; +;#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 + +#no_interrupt + rets + +#exit + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#z ;0 + rets + +************ + +#punch ;1 +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag +; movi dnk_uppercuts_to_head_anim,a0 + movi hrt_4_knee_anim,a0 + calla change_anim1a + rets + +#tag +; movi dnk_uppercut_to_head_anim,a0 + movi hrt_4_knee_anim,a0 + calla change_anim1a + rets + +************ +#super_punch ;4 + + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #punch + + movi hrt_hh_2_ddt_anim,a0 + calla change_anim1a + rets + +#punchkick +#graboh +#kick + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #knee + +; .ref dnk_3_head_slam_anim + +; movi dnk_3_head_slam_anim,a0 + movi hrt_4_knee_anim,a0 + calla change_anim1a + rets + +#knee +; movi dnk_3_knee_to_head_anim,a0 + movi hrt_4_knee_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #kick + +;Quick knees +; movi dnk_3_knees_to_head_anim,a0 + movi hrt_4_knee_anim,a0 + calla change_anim1a + rets + +#***************************************************************************** +mode_headheld ;19 + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + .ref hrt_3_head_held_stand_anim + movi hrt_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_puppet ;20 + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +#VEL equ 30000h +#DVEL equ 21f0eh + + + SUBR hrt_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 hrt_rotate_anims_table +; old = up right + .long hrt_stand2_anim ;new = up right + .long hrt_2_to_4_turn_anim ; = down right + .long hrt_2_to_6_turn_anim ; = down left *** + .long hrt_2_to_8_turn_anim ; = up left + +; old = down right + .long hrt_4_to_2_turn_anim ;new = up right + .long hrt_stand4_anim ; = down right + .long hrt_4_to_6_turn_anim ; = down left + .long hrt_4_to_8_turn_anim ; = up left *** + +; old = down left + .long hrt_6_to_2_turn_anim ;new = up right *** + .long hrt_6_to_4_turn_anim ; = down right + .long hrt_stand6_anim ; = down left + .long hrt_6_to_8_turn_anim ; = up left + +; old = up left + .long hrt_8_to_2_turn_anim ;new = up right + .long hrt_8_to_4_turn_anim ; = down right *** + .long hrt_8_to_6_turn_anim ; = down left + .long hrt_stand8_anim ; = up left + + + SUBR hrt_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long hrt_walk1_f2_anim ;1 (UP) + .long hrt_walk1_f2_anim ;2 (UP_RIGHT) + .long hrt_walk1_f4_anim ;3 (RIGHT) + .long hrt_walk1_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk1_f4_anim ;5 (DOWN) + .long hrt_walk1_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk1_f2_anim ;7 (LEFT) + .long hrt_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk2_f2_anim ;2 (UP_RIGHT) + .long hrt_walk2_f2_anim ;3 (RIGHT) + .long hrt_walk2_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk8_f4_anim ;5 (DOWN) + .long hrt_walk8_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk4_f2_anim ;7 (LEFT) + .long hrt_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk2_f2_anim ;2 (UP_RIGHT) + .long hrt_walk2_f2_anim ;3 (RIGHT) + .long hrt_walk4_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk4_f4_anim ;5 (DOWN) + .long hrt_walk8_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk6_f2_anim ;7 (LEFT) + .long hrt_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk8_f2_anim ;2 (UP_RIGHT) + .long hrt_walk4_f4_anim ;3 (RIGHT) + .long hrt_walk4_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk2_f4_anim ;5 (DOWN) + .long hrt_walk6_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk2_f2_anim ;7 (LEFT) + .long hrt_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long hrt_walk5_f2_anim ;1 (UP) + .long hrt_walk5_f2_anim ;2 (UP_RIGHT) + .long hrt_walk5_f4_anim ;3 (RIGHT) + .long hrt_walk5_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk5_f4_anim ;5 (DOWN) + .long hrt_walk5_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk5_f2_anim ;7 (LEFT) + .long hrt_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk6_f2_anim ;2 (UP_RIGHT) + .long hrt_walk2_f2_anim ;3 (RIGHT) + .long hrt_walk6_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk2_f4_anim ;5 (DOWN) + .long hrt_walk4_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk2_f2_anim ;7 (LEFT) + .long hrt_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk6_f2_anim ;2 (UP_RIGHT) + .long hrt_walk6_f2_anim ;3 (RIGHT) + .long hrt_walk8_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk4_f4_anim ;5 (DOWN) + .long hrt_walk4_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk2_f2_anim ;7 (LEFT) + .long hrt_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk4_f2_anim ;2 (UP_RIGHT) + .long hrt_walk6_f2_anim ;3 (RIGHT) + .long hrt_walk8_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk6_f4_anim ;5 (DOWN) + .long hrt_walk2_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk2_f2_anim ;7 (LEFT) + .long hrt_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR hrt_torso_anims_table +; old = up right + .long hrt_torso2_anim ;new = up right + .long hrt_2_to_4_turn2_anim ; = down right + .long hrt_2_to_6_turn2_anim ; = down left *** + .long hrt_2_to_8_turn2_anim ; = up left + +; old = down right + .long hrt_4_to_2_turn2_anim ;new = up right + .long hrt_torso4_anim ; = down right + .long hrt_4_to_6_turn2_anim ; = down left + .long hrt_4_to_8_turn2_anim ; = up left *** + +; old = down left + .long hrt_6_to_2_turn2_anim ;new = up right *** + .long hrt_6_to_4_turn2_anim ; = down right + .long hrt_torso6_anim ; = down left + .long hrt_6_to_8_turn2_anim ; = up left + +; old = up left + .long hrt_8_to_2_turn2_anim ;new = up right + .long hrt_8_to_4_turn2_anim ; = down right *** + .long hrt_8_to_6_turn2_anim ; = down left + .long hrt_torso8_anim ; = up left + + +#***************************************************************************** +* +* SPECIAL MOVE PROCESSES +* + + SUBR hrt_smove_table + + .long sm_sliding_choke + .long 0 + +sm_sliding_choke + +#lp + SLEEP 5*TSEC + +; ;success! Check for the UNINT bit, then queue it up. +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over +; movi und_sliding_choke_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L + + jruc #lp + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/BRET.BAT b/BACKUP/BRET.BAT new file mode 100644 index 0000000..01f70f2 --- /dev/null +++ b/BACKUP/BRET.BAT @@ -0,0 +1,9 @@ +@echo off +@wwfld bret hrt_hit hrt_kik hrt_msc hrt_pnc hrt_wlk hrt_jms hrt_mjt hrt_rjr hrt_jake +@copy bret.ld1 + bret.ld2 bret.lod +@move bret.h ..\bretimg.h +@move bret.seq .. + + + + \ No newline at end of file diff --git a/BACKUP/BRET.H b/BACKUP/BRET.H new file mode 100644 index 0000000..e69de29 diff --git a/BACKUP/BRETIMG.ASM b/BACKUP/BRETIMG.ASM new file mode 100644 index 0000000..44b2712 --- /dev/null +++ b/BACKUP/BRETIMG.ASM @@ -0,0 +1,18 @@ + .FILE "bretimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include bretimg.tbl + .include bretimg.h + +****************************************************************************** + + .even + .include "bret.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/BACKUP/BRETIMG.H b/BACKUP/BRETIMG.H new file mode 100644 index 0000000..90f2efc --- /dev/null +++ b/BACKUP/BRETIMG.H @@ -0,0 +1,74 @@ + .global H2AH3A + .global H4AH3A + .global H2AE3A + .global H4AE3A + .global H2AM3A + .global H4AM3A + .global H2BK3A + .global H4BK3A + .global H2CP3A + .global H4LB3A + .global H3GU2A + .global H3GU4A + .global H2KM3A + .global H4KM3B + .global H2NM3A + .global H4NM3A + .global H2MP2B + .global H4MP4A + .global H3DC3A + .global H4TI4B + .global H3GF7B + .global H3RL1A + .global H4MF4B + .global H3FR3A + .global H2PL3B + .global H4PL3X + .global H2BC3A + .global H4BC3A + .global H2PS3A + .global H4PS3A + .global H2TW2A + .global H4TW4A + .global H2ST2A + .global H4ST4A + .global H1TL5A + .global H1TT5A + .global H2WL1A + .global H2WL2A + .global H2WL8A + .global H4WL2A + .global H4WL4A + .global H4WL5A + .global H3RN3A + .global H3BO3A + .global H3UC3X + .global H3UC3Z + .global H3MS3X + .global H2PF2B + .global H4PF4B + .global H4JK4C + .global H4HU4B + .global H4SB4B + .global H4JP4C + .global H3RR3Z + .global H4POGO + .global H4GH3C + .global H3PN5A + .global H3BR3Z + .global H3MS3Z + .global H4GH3Z + .global H4LD4A + .global H4SL4C + .global H3DU3A + .global H3PP3X + .global H4BZ4A + .global H4YR3A + .global H3HB3A + .global H3BF3A + .global H3HT3X + .global H3DD3Z + .global H3DD3B + .global H4TN4X + .global H4CR3D + .global H4JD4B diff --git a/BACKUP/BUG.ASM b/BACKUP/BUG.ASM new file mode 100644 index 0000000..3e4d4f2 --- /dev/null +++ b/BACKUP/BUG.ASM @@ -0,0 +1,57 @@ +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + +#CLIMB_SPD equ 5 + SUBR dnk_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOFACE | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + WL ANI_SET_YVEL,4000h ;27000 + + + + + .word ANI_OFFSET,-5,-7,-15 ;x,y,z + +;Changing the -5 to a -7 causes a dramatic change in Y + + + + + WL #CLIMB_SPD,D2CT2A02 + .word ANI_OFFSET,0,19h,0 ;x,y,z + WL #CLIMB_SPD,D2CT2A07 + .word ANI_OFFSET,0,9,0 ;x,y,z + WL #CLIMB_SPD,D2CT2A09 + .word ANI_OFFSET,0,>a,0 ;x,y,z + WL #CLIMB_SPD,D2CT2A12 + .word ANI_ZEROVELS + + .word ANI_OFFSET,0,6,0 ;x,y,z + WL #CLIMB_SPD,D2CT2B02 + .word ANI_OFFSET,10,18h,0 ;x,y,z + WL #CLIMB_SPD,D2CT2B04 + .word ANI_OFFSET,-2,0dh,0 ;x,y,z + WL #CLIMB_SPD,D2CT2B06 + + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT | MODE_NOFACE | MODE_NOCONFINE | MODE_NOGRAVITY + + .word ANI_OFFSET,2,0,0 ;x,y,z +#repeat + WL #CLIMB_SPD,D2CT2C01 + WL #CLIMB_SPD,D2CT2C03 + WL #CLIMB_SPD,D2CT2C05 + WL #CLIMB_SPD,D2CT2C07 + WL #CLIMB_SPD,D2CT2C09 + WL #CLIMB_SPD,D2CT2C11 + WL #CLIMB_SPD,D2CT2C13 + WL #CLIMB_SPD,D2CT2C15 + WL #CLIMB_SPD,D2CT2C17 + WL #CLIMB_SPD,D2CT2C19 + WL #CLIMB_SPD,D2CT2C21 + WL ANI_GOTO,#repeat + + + \ No newline at end of file diff --git a/BACKUP/COLL2.ASM b/BACKUP/COLL2.ASM new file mode 100644 index 0000000..1031f0e --- /dev/null +++ b/BACKUP/COLL2.ASM @@ -0,0 +1,1045 @@ +************************************************************** +* +* Software: George Petro, Todd Allen +* Initiated: 1989? +* +* Modified: Mark Turmell, 7/17/90 -Total Carnage +* Shawn Liptak, 7/?/91 -Speed improvements +* Shawn Liptak, 7/?/91 -SL type stuff +* Shawn Liptak, 8/30/91 -New collision loop +* Shawn Liptak, 9/18/91 -Pixscan improvements +* Shawn Liptak, 2/11/92 -Started basketball +* Jason Skiles, 10/13/93 -Started WWF Robotron +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 10/13/93 15:19 +************************************************************** + .file "coll2.asm" + .title "collision routines" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "game.equ" + .include "imgtbl.glo" + .include "macros.h" + +;sounds + + + +;refs +; .ref ball_hit + + ;from ROBO.ASM + .ref player_die + .ref bullet_die + .ref grunt_shot,grunt_die + .ref post_die + .ref human_saved,human_killed,human_hitpost + .ref hulk_pushback + .ref sphereoid_die,enforcer_die,spark_die + .ref quark_die,tank_die,shell_die + +;defs + +;ram + + BSSX coll_stop ,16 ;!0=Stop scan on current obj + .bss PList ,32*(30+1) ;List of objs of class player + .bss NList ,32*(30+1) ;List of objs of class neutral + .bss EList ,32*(100+1) ;List of objs of class enemy + .bss HList ,32*(40+1) ;List of humans + .bss KList ,32*(20+1) ;List of hulks + BSSX CCCCount ,16 ;Col Check Cycle Counter. + +;NOBJ=# objects to display + + + +**************************************************************************** +* When writing collision routines which are to be called from the collision +* scanner in this file, the following things should be taken into +* consideration: +* The collision routines are called, not created. +* The collision routine receives a ptr to the victims OBJ in A8 +* The collision routine receives a ptr to the killers OBJ in A0 +* The collision routine can destroy A0,A8,A14,B0,B1. +* Other registers must be preserved! +* +* When OBJ1,OBJ2 collide, two routines are called, one with +* OBJ1 in A8 and the other with OBJ2 in A8. A collision routine +* should only affect the victim, and not the killer. +* If a victim object is deleted, it will not be scanned futher. +* If any other object is deleted, the collision scan will be aborted. +* To prevent multiple simultaneous collisions of the same victim +* object, the object ID of the victim object should be modified +* by the collision routine, if the victims nature is changed. + + + +**************************************************************************** +* Collision loop (New version) + + SUBR collisions + + SLEEPK 1 + + move @CCCCount,a0 + inc a0 + move a0,@CCCCount + + move @WORLDTLX+16,a6 ;A6=Xmin + move a6,a7 + addi 100,a7 ;A7=Xmax + move a7,b3 + callr collx + + move b3,a6 + move a6,a7 + addi 100,a7 + move a7,b3 + callr collx + + move b3,a6 + move a6,a7 + addi 100,a7 + move a7,b3 + callr collx + + move b3,a6 + move a6,a7 + addi 100,a7 + callr collx + + jruc collisions + +******************************** +* Build lists and collide based on X +* A6=XMin +* A7=XMax (+1) + +collx + movi OBJLST,a0 ;Object list to check + + movi HList,a8 + movi KList,b8 + movi PList,a9 ;Build collision lists + move a9,b4 ;Set A5/B4 for 1st collision call + movi EList,a10 + move a10,a5 + movi NList,a11 + jruc mklists + +csr20 move a0,*a10+,L ;Insert on enemy list +mklists move *a0,a0,L ;Get next obj + jrz gotlists + + movb *a0(OFLAGS+B_NOCOLL-7),a2 + jrn mklists ;Not collideable? + + move *a0(OXPOS),a1 ;Obj can lie on max/min boundary + cmp a7,a1 + jrge mklists ;Out of range? + + move *a0(OSIZEX),a2 + add a2,a1 + cmp a6,a1 + jrle mklists ;Out of range? + + move *a0(OID),a2 ;Check Class + cmpi 0FFFF8600h,a2 + jreq csrHULK + move a2,a2 + jrn csr20 ;Enemy? + btst 14,a2 + jrnz csr40 ;Player? + + cmpi CLSNEUT|TYPHUMAN,a2 + jreq csrHU ;Human? + + move a0,*a11+,L ;Insert on neutral list + jruc mklists + +csrHU move a0,*a8+,L ;Insert on human list + jruc mklists + +csrHULK + move a0,b14 + move b14,*b8+,L ;Insert on hulk list + jruc mklists + +csr40 move a0,*a9+,L ;Insert on player list + jruc mklists + +gotlists + move a0,*a8,L ;Null terminate each list + move a0,*a9,L + move a0,*a10,L + move a0,*a11,L + + callr ColLists ;Collide enemy to player + + movi NList,a5 + movi PList,b4 + callr ColLists ;Collide neutral to player + + move @CCCCount,a0 + btst 0,a0 + jrnz #skip_NE + movi NList,a5 + movi EList,b4 + callr ColLists ;Collide neutral to enemy +#skip_NE ; every third (2nd, really) cycle + + move @CCCCount,a0 + andi 07h,a0 + jrnz #skip_HK + movi HList,a5 + movi KList,b4 + callr ColLists ;Collide human to hulk +#skip_HK ; every eighth cycle + + movi HList,a5 + movi PList,b4 + callr ColLists ;Collide human to player + + move @CCCCount,a0 + andi 03h,a0 + jrnz #skip_HN + movi HList,a5 + movi NList,b4 + callr ColLists ;Collide human to neutral +#skip_HN ; every fourth frame + + move @CCCCount,a0 + andi 07h,a0 + jrnz #skip_KN + movi KList,a5 + movi NList,b4 + callr ColLists ;Collide hulk to neutral +#skip_KN ; every eighth frame only + + movi KList,a5 + movi PList,b4 +; callr ColLists ;Collide hulk to player + +******************************** +* Collide objects on list A5 with those on LIST B4 +* A5,B4=ptrs to null terminated tables of object ptrs + +ColLists +CLstsLp0 + move *a5+,a1,L + jrz scndone + ;Load up coors of obj from first list + move *a1(OXPOS),a9 ;A9=OBJ1 Xmin + jrz CLstsLp0 ;Deleted? + move *a1(OSIZEX),a10 ;A10=OBJ1 Xmax (+1) + add a9,a10 + move *a1(OYPOS),a7 ;A7=OBJ1 Ymin + move *a1(OSIZEY),a11 ;A11=OBJ1 Ymax (+1) + add a7,a11 + move *a1(ODXOFF),a14,W + sub a14,a10 + move *a1(ODYOFF),a14,W + sub a14,a11 + move b4,a6 ;Load head of second list + +PScnLp1 move *a6+,a2,L + jrz CLstsLp0 + +; movb *a2(OFLAGS+B_3D-7),a0 +; jrn #3d ;3D mode? (Maybe all????) + + move *a2(OYPOS),a0 ;Check objs A1,A2 for intersection + cmp a11,a0 +; jrge PScnLp1 ;Y2Min >= Y1Max? + jrge CLstsLp0 ;Y2Min >= Y1Max? + move *a2(OSIZEY),a14 + add a14,a0 + move *a2(ODYOFF),a14 + sub a14,a0 + cmp a7,a0 + jrle PScnLp1 ;Y2Max <= Y1Min? + +#3d move *a2(OXPOS),a0 ;Signed compares because objs may lie on 0 + jrz PScnLp1 ;Deleted? + cmp a10,a0 + jrge PScnLp1 ;X2Min >= X1Max? + move *a2(OSIZEX),a14 + add a14,a0 + move *a2(ODXOFF),a14 + sub a14,a0 + cmp a9,a0 + jrle PScnLp1 ;X2Max <= X1Min? + + callr ColFunc ;>Call colfunc for obj A1 and A2 + move b0,b1 ;B1=*Collision routine for obj A1 + SWAP a1,a2 + callr ColFunc + SWAP a1,a2 + move b0,b2 ;B2=*Collision routine for obj A2 + or b1,b0 ;Set z flag if both are zero + jrz PScnLp1 + + movb *a1(OFLAGS+B_PIXSCAN-7),a14 ;Is PIXSCAN ON + jrn DoPScn0 + movb *a2(OFLAGS+B_PIXSCAN-7),a14 ;Is PIXSCAN ON + jrnn SkPxScn0 +DoPScn0 callr PIXSCAN + jrnc PScnLp1 ;BR=THIS WASN'T REALLY A COLLISION +SkPxScn0 + + clr a0 + move a0,@coll_stop ;Clr flag + + move b1,b1 + jrz PObj2Col + move a1,a8 + move a2,a0 + call b1 ;Call collision for A1 + +PObj2Col + move b2,b2 + jrz PCkFree + move a2,a8 + move a1,a0 + call b2 ;Call collision for A2 + +PCkFree move @coll_stop,a0 + jrz PScnLp1 ;Continue scan? + jruc CLstsLp0 + +scndone rets + + +**************************************************************************** +* Return in B0 routine for obj A1 struck by obj A2 +* Trashes A3-A4 + +ColFunc + movb *a1(OID+8),a3 + movb *a2(OID+8),a4 + sll 32-5,a3 + srl 17,a3 ;32 Long Word Align + sll 32-5,a4 + srl 22,a4 ;Long Align + add a4,a3 + addi TypeTbl,a3 + + move *a3,a3,L + jump a3 ;Routine can trash A0/A3/A4/A8/A14 + + +**************************************************************************** +* These are the COLLISION FUNCTIONS +* A collision function is selected by the routine ColFunc +* which uses the TYPE field of the victims OID to select a subtable +* and indexes the subtable with the TYPE field of the killer. +* This gives a ptr to a COLLISION FUNCTION which returns +* the COLLISION ROUTINE to be called for the victim in B0. +* The COLLISION FUNCS can destroy registers A0,A3,A4,A8 +**************************************************************************** + +TypeTbl +;0000 +;NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;100 +;Player (PL) + .LONG NULL, NULL, NULL, PLGR, NULL, PLPO, PLHL, NULL + .LONG PLSP, PLEN, PLSK, PLQU, PLTA, PLSH, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;200 +;Bullet (from player) (BL) + .LONG NULL, NULL, NULL, BLGR, NULL, BLPO, BLHL, NULL + .LONG BLSP, BLEN, BLSK, BLQU, BLTA, BLSH, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;300 +;GRUNT (GR) + .LONG NULL, NULL, GRBL, NULL, NULL, GRPO, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;400 +;Human (HU) + .LONG NULL, HUPL, NULL, NULL, NULL, HUPO, HUHL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;500 +;Post (PO) + .LONG NULL, NULL, POBL, POGR, NULL, NULL, POHL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;600 +;Hulk (HL) + .LONG NULL, NULL, HLBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;700 +;Text + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;800 +;Sphereoid (SP) + .LONG NULL, NULL, SPBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;900 +;Enforcer (EN) + .LONG NULL, NULL, ENBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;a00 +;Spark (SK) + .LONG NULL, NULL, SKBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;b00 +;Quark (QU) + .LONG NULL, NULL, QUBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;c00 +;Tank (TA) + .LONG NULL, NULL, TABL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;d00 +;SHELL (SH) + .LONG NULL, NULL, SHBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;e00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;f00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1000 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1100 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1200 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1300 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1400 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1500 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1600 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1700 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1800 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1900 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1a00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1b00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1c00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1d00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1e00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1f00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + +NULL clr b0 + rets + +;Jason's Robotron Collision + +PLGR ;player hits grunt +PLPO ;player hits post +PLHL ;player hits hulk +PLSP ;player hits sphereoid +PLEN ;player hits enforcer +PLSK ;player hits spark +PLQU ;player hits quark +PLTA ;player hits tank +PLSH ;player hits shell + movi player_die,b0 + rets + +BLGR ;bullet hits grunt +BLPO ;bullet hits post +BLHL ;bullet hits hulk +BLSP ;bullet hits sphereoid +BLEN ;bullet hits enforcer +BLSK ;bullet hits spark +BLQU ;bullet hits quark +BLTA ;bullet hits tank +BLSH ;bullet hits shell + movi bullet_die,b0 + rets + +GRBL ;GRUNT hits bullet + movi grunt_shot,b0 + rets + +GRPO ;GRUNT hits post + movi grunt_die,b0 + rets + +HUPL ;human hits player + movi human_saved,b0 + rets + +HUHL ;human hits hulk + movi human_killed,b0 + rets + +HUPO ;human hits post + movi human_hitpost,b0 + rets + +POBL ;post hits bullet +POGR ;post hits grunt +POHL ;post hits hulk + movi post_die,b0 + rets + +HLBL ;hulk hits bullet + movi hulk_pushback,b0 + rets + +SPBL ;sphereoid hits bullet + movi sphereoid_die,b0 + rets + +ENBL ;enforcer hits bullet + movi enforcer_die,b0 + rets + +SKBL ;spark hits bullet + movi spark_die,b0 + rets + +QUBL ;quark hits bullet + movi quark_die,b0 + rets + +TABL ;tank hits bullet + movi tank_die,b0 + rets + +SHBL ;shell hits bullet + movi shell_die,b0 + rets + +**************************************************************************** +*COLLISION ROUTINE +*A1=OBJECT ONE +*A2=OBJECT TWO +*RETURNS: CS= COLLISION, CC= NO COLLISION +* +* CLOBBERS A14 +*CREATE TIME SLICE WHILE LOCKING OUT INTERRUPTS + +PIXSCAN + mmtm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13 + mmtm sp,b0,b1 + + move a1,a10 ;A10=*Obj0 + move a2,a8 ;A8=*Obj1 + dint + move *a10(OXPOS),a3 ;Set up object box TLX,TLY + move *a10(OYVAL),a14,L + movy a14,a3 ;A3=Obj0 Y:X + + move *a8(OXPOS),a4 + move *a8(OYVAL),a14,L + movy a14,a4 ;A4=Obj1 Y:X + + move *a10(OCTRL),a6 + move a6,b0 ;B0=flags object 0 + move *a8(OCTRL),a6 + move a6,b1 ;B1=flags object 1 + + move *a10(OIMG),a9,L ;A9=*Image 0 + move *a8(OIMG),a7,L ;A7=*Image 1 + eint + + move *a9,a5,L ;ISIZE + move *a7,a6,L ;ISIZE + addxy a3,a5 ;A5=Obj0 lower rgt Y:X + addxy a4,a6 ;A6=Obj1 lower rgt Y:X + cmpxy a6,a3 ;compare (lrx1,lry1) to (tlx0,tly0) + JRXGE CSFAIL + JRYGE CSFAIL + cmpxy a4,a5 ;compare (tlx1,tly1) to (lrx0,lry0) + JRXLE CSFAIL + JRYLE CSFAIL + + +*A11=XOFF0 +*A12=XOFF1 + move a3,a2 ;>Calc XOFF0,XOFF1,XSCAN + subxy a4,a2 + sext a2 + jrnn clx1 + neg a2 + move a2,a11 ;object 1 to the right + clr a12 + move a4,a13 ;rightmost top left + jruc clx2 + +clx1 move a2,a12 ;object 0 to the right + clr a11 + move a3,a13 ;rightmost top left +clx2 cmpxy a5,a6 ;find leftmost lower right + jrxn clx3 + subxy a5,a13 + jruc clx4 + +clx3 subxy a6,a13 +clx4 sext a13 + neg a13 ;A13=XSCAN + + ;>Calc YOFF0,YOFF1,YSCAN + sra 16,a3 ;Kill X half + sra 16,a4 + sra 16,a5 + sra 16,a6 + move a3,a2 ;A3=YOFF1 + sub a4,a2 ;A2=YOFF0 + jrnn cly1 + neg a2 + clr a3 ;object 1 to the right + move a4,a14 ;rightmost top left + jruc cly2 + +cly1 move a3,a14 ;object 0 to the right + move a2,a3 + clr a2 +cly2 cmp a5,a6 ;find leftmost lower right + jrn cly3 + sub a5,a14 + jruc cly4 +cly3 sub a6,a14 +cly4 neg a14 ;A14=YSCAN + +*A2=YOFF0 +*A3=YOFF1 +*A4=IMAGE SOURCE ADDRESS TEMP +*A5=WIDTH TEMP +*A7=IMAGE 1 DATA HEADER POINTER +*A8=IMAGE 1 OBJECT POINTER +*A9=IMAGE 0 DATA HEADER POINTER +*A10=IMAGE 0 OBJECT POINTER +*A11=XOFF0 +*A12=XOFF1 +*A13=XSCAN +*A14=YSCAN + +*CALCULATE OBJECT 0 STARTAD, HINC0, VINC0 + + move *a9(ISAG),a4,L ;Get image source address + move *a9,a5 ;Get ISIZEX + addk 3,a5 ;correct erroneous width (thanx, warren) + srl 2,A5 + sll 2,A5 + +*CHECK OBJECT 0 FLIPS + + btst B_FLIPH,b0 + jrnz CL0HF ;HORIZONTAL FLIP + btst B_FLIPV,b0 + jrnz CL0VF ;VERTICAL FLIP + + ;NO FLIP CASE + move a5,a1 ;Get width + mpyu a2,a1 ;Mult width x yoff + add a11,a1 ;Add in x offset + sll 3,a1 ;Correct for byte addressing + add a1,a4 ;A4=STARTAD0=IMAGEAD0+(YOFF0 X W0) + XOFF + sub a13,a5 ;A5=VINC0=W0-XScan + sll 3,a5 ;Correct for pixel addressing + movk 8,a2 ;A2=HINC0 + jruc CLOBJ1 + + +CL0HF BTST B_FLIPV,B0 ;VERT FLIP TOO? + JRNE CL0HVF ;HORIZ AND VERT FLIP + ;HORIZONTAL FLIP + MOVE A5,A1 ;GET WIDTH + MPYU A2,A1 ;MULT WIDTH X Y OFFSET + ADD A5,A1 ;ADD IN WIDTH + SUB A11,A1 ;SUBTRACT X OFFSET + DEC A1 ;-1 MORE + SLL 3,A1 ;CORRECT FOR BYTE ADDRESSING + ADD A1,A4 ;A4=STARTAD0=IMAGEAD0+(YOFF0*W0)+W0-XOFF0-1 + MOVI -8,A2 ;A2=HINC0 + ADD A13,A5 ;A5=VINC0=W0+XSCAN + SLL 3,A5 ;CORRECT FOR PIXEL ADDRESSING + JRUC CLOBJ1 + + ;VERTICAL FLIP +CL0VF MOVE *A9(ISIZEY),A1 ;GET HEIGHT + SUB A2,A1 ;SUBTRACT YOFF0 + DEC A1 + MPYU A5,A1 ;MULTIPLY BY WIDTH + ADD A11,A1 ;ADD IN X OFFSET + SLL 3,A1 ;CORRECT FOR PIXEL ADDRESSING + ADD A1,A4 ;A4=STARTAD0=IMAGEAD0+(H0-YOFF0-1)W0+XOFF0 + NEG A5 ;-W0 + SUB A13,A5 ;-XSCAN + SLL 3,A5 ;A5=VINC0=-W0-XSCAN + MOVK 8,A2 ;A2=HINC0 + JRUC CLOBJ1 + + ;VERTICAL AND HORIZONTAL FLIP +CL0HVF MOVE *A9(ISIZEY),A1 ;GET HEIGHT + SUB A2,A1 ;SUBTRACT YOFF0 + DEC A1 + MPYU A5,A1 ;MULTIPLY BY WIDTH + ADD A5,A1 ;ADD IN WIDTH (W0) + SUB A11,A1 ;SUBTRACT XOFF0 + DEC A1 + SLL 3,A1 ;CORRECT FOR PIXEL ADDRESSING + ADD A1,A4 ;A4=STARTAD0=(H0-YOFF0-1)W0+W0-XOFF0-1 + NEG A5 ;-W0 + ADD A13,A5 ;+XSCAN + SLL 3,A5 ;A5=VINC0=-W0-XSCAN + MOVI -8,A2 ;A2=HINC0 + + +*CALCULATE OBJECT 1 STARTAD, HJUMP, VJUMP + +*A2=HINC0 +*A3=YOFF1, HINC1 +*A4=STARTAD0 +*A5=VINC0 +*A6=STARTAD1 +*A7=IMAGE 1 DATA HEADER POINTER +*A8=IMAGE 1 OBJECT POINTER +*A9=IMAGE 0 DATA HEADER POINTER +*A10=IMAGE 0 OBJECT POINTER +*A11=W1, VINC1 +*A12=XOFF1 +*A13=XSCAN +*A14=YSCAN + +CLOBJ1 move *a7(ISAG),a6,L ;Get image source address + move *a7,a11 ;Get ISIZEX + addk 3,a11 ;correct erroneous width (thanx, warren) + srl 2,A11 + sll 2,A11 + + BTST B_FLIPH,B1 ;CHECK OBJECT 1 FLIPS + JRNE CL1HF ;HORIZONTAL FLIP + BTST B_FLIPV,B1 + JRNE CL1VF ;VERTICAL FLIP + +*NO FLIP CASE +*A3=HINC1=8 (BYTE AT A TIME) +*A11=VINC1=W1-XSCAN +*A6=STARTAD1=IMAGEAD1+(YOFF1 X W1) + XOFF1 + + MOVE A11,A1 ;GET WIDTH + MPYU A3,A1 ;MULT WIDTH X YOFF + ADD A12,A1 ;ADD IN X OFFSET + SLL 3,A1 ;CORRECT FOR BYTE ADDRESSING + ADD A1,A6 ;ADD TO SOURCE ADDRESS + MOVK 8,A3 ;HINC1 + SUB A13,A11 ;VINC1=W1-XSCAN + SLL 3,A11 ;CORRECT FOR PIXEL ADDRESSING + JRUC CSH + +*HORIZONTAL FLIP +*A3=HINC1=-8 +*A11=VINC1=W1+XSCAN +*A6=STARTAD1=IMAGEAD1+(YOFF1 X W1) + W1-XOFF1-1 +CL1HF BTST B_FLIPV,B1 ;VERT FLIP TOO? + JRNE CL1HVF ;HORIZ AND VERT FLIP + MOVE A11,A1 ;GET WIDTH + MPYU A3,A1 ;MULT WIDTH X Y OFFSET + ADD A11,A1 ;ADD IN WIDTH + SUB A12,A1 ;SUBTRACT X OFFSET + DEC A1 ;-1 MORE + SLL 3,A1 ;CORRECT FOR BYTE ADDRESSING + ADD A1,A6 + MOVI -8,A3 ;HINC1 + ADD A13,A11 ;VINC1=W1+XSCAN + SLL 3,A11 ;CORRECT FOR PIXEL ADDRESSING + JRUC CSH + +*VERTICAL FLIP +*A3=HINC1=8 +*A11=VINC1=-W1-XSCAN +*A6=STARTAD1=IMAGEAD1+(H1-YOFF1-1)W1+XOFF1 +CL1VF MOVE *A7(ISIZEY),A1 ;GET HEIGHT + SUB A3,A1 ;SUBTRACT YOFF1 + DEC A1 + MPYU A11,A1 ;MULTIPLY BY WIDTH + ADD A12,A1 ;ADD IN X OFFSET + SLL 3,A1 ;CORRECT FOR PIXEL ADDRESSING + ADD A1,A6 ;ADD TO SOURCE ADDRESS + NEG A11 ;-W1 + SUB A13,A11 ;-XSCAN + SLL 3,A11 ;CORRECT FOR PIXEL ADDRESSING + MOVK 8,A3 ;HINC1 + JRUC CSH + +*VERTICAL AND HORIZONTAL FLIP +*A3=HINC1=-8 +*A11=VINC1=-W1-XSCAN +*A6=STARTAD1=(H1-YOFF1-1)W1+W1-XOFF1-1 +CL1HVF MOVE *A7(ISIZEY),A1 ;GET HEIGHT + SUB A3,A1 ;SUBTRACT YOFF1 + DEC A1 + MPYU A11,A1 ;MULTIPLY BY WIDTH + ADD A11,A1 ;ADD IN WIDTH (W1) + SUB A12,A1 ;SUBTRACT XOFF1 + DEC A1 + SLL 3,A1 ;CORRECT FOR PIXEL ADDRESSING + ADD A1,A6 ;ADD TO SOURCE ADDRESS + NEG A11 ;-W1 + ADD A13,A11 ;+XSCAN + SLL 3,A11 ;CORRECT FOR PIXEL ADDRESSING + MOVI -8,A3 ;HINC1 + +*A1= WIDTH COUNTER XSCAN +*A2=H INCREMENT IMAGE 0 +*A3=H INCREMENT IMAGE 1 +*A4=INDEX TO IMAGE 0 +*A5=V INCREMENT IMAGE 0 +*A6=INDEX TO IMAGE 1 +*A7=IMAGE 1 DATA HEADER POINTER +*A8=IMAGE 1 OBJECT POINTER +*A9=IMAGE 0 DATA HEADER POINTER +*A10=IMAGE 0 OBJECT POINTER +*A11=V INCREMENT IMAGE 1 +*A13=WIDTH COUNT XSCAN +*A14=HEIGHT COUNT YSCAN + +CSH cmpi >80,a14 ;no scan if xscan, yscan values out of range + jrhs CSFAIL + cmpi >80,a13 + jrhs CSFAIL + + dint + move @INTENB,a0 + andni X1E,a0 + move a0,@INTENB + eint + +csh0 move @DMACTRL,a0 + jrn csh0 ;DMA busy? + + .if YUNIT + setf 6,0,0 ;6 bit field + .else + setf 8,0,0 ;8 bit field + .endif + +csh1 move a13,a1 ;load line countdown horiz counter + +cshl move *a4,a0 ;Check image 0 corresponding non zeroes + jrz csnxh ;No hit? + + move *a6,a0 ;check image 1 + jrnz pshit ;Hit? + +csnxh add a2,a4 ;Add horiz increments + add a3,a6 + dsjs a1,cshl ;Loop horizontal + + add a5,a4 ;Add vert increments + add a11,a6 + dsjs a14,csh1 ;Loop vert + + setf 16,1,0 ;Normal field + +CSFAIL move b13,b13 + jrz psnodma ;Skip DMA restart? + dint + move @INTENB,a0 + ori X1E,a0 + move a0,@INTENB + eint +psnodma clrc ;No hit + jruc psx ;Exit + + +pshit setf 16,1,0 ;Normal field + move b13,b13 + jrz csflags ;Skip DMA restart? + dint + move @INTENB,a0 + ori X1E,a0 + move a0,@INTENB + eint +csflags setc ;Hit + +psx mmfm sp,b0,b1 + mmfm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13 + rets + + + +******************************** +*PLAYER HAS BEEN COLLIDED WITH +*TELL THIS COLLISION CHECK THAT PLAYER IS REALLY SHORTER THAN HE IS +*THEN RETURN CARRY SET IF STILL A HIT, CARRY CLEAR IF THIS SHOULD NOT BE +*A COLLISION. +*A0=OBJECT THAT HIT PLAYER +*A8=PLAYER LEGS IMAGE PTR + +;SHORT_PLYR +; MOVE *A8(OYPOS),A7 ;A7 - OBJ1 Ymin +; ADDK 3,A7 ;ADDI 0 +; MOVE *A0(OID),A11 +; zext a11 +;; CMPI CLSENMY|TYPORB,A11 +;; JRNE SP0 +;; SUBK 5,A7 +;; MOVE *A8(OSIZEY),A11,W ;A11 - OBJ1 Ymax +;; SUBK 8,A11 ;MAKE LEGS SHORTER IN LENGTH! +;; JRUC SP2 +;;SP0 +; CMPI CLSNEUT|TYPMINE,A11 +; JRNE SP1 +; ADDK 12,A7 ;15 +; MOVE *A8(OSIZEY),A11 ;A11 - OBJ1 Ymax +; SUBK 19,A11 ;MAKE LEGS SHORTER IN LENGTH! ;21 +; JRUC SP2 +;SP1 +; move *A8(OSIZEY),A11 ;A11 - OBJ1 Ymax +; SUBK 20,A11 ;19 ;SUBI 13 16 ;MAKE LEGS SHORTER IN LENGTH! +;SP2 add A7,A11 +; move *A0(OYPOS),A6 ;CHECK OBJS A0,A8 for intersection +; cmp A11,A6 +; jrgt CLRCR ;Y2Min > Y1Max +; move *A0(OSIZEY),A11 +; add A11,A6 +; cmp A7,A6 +; jrlt CLRCR ;Y2Max < Y1Min +; +;;NOW X CHECK +; +; move *A8(OXPOS),A7 ;A9 - OBJ1 Xmin +; addk 6,a7 +; move *A8(OSIZEX),A11 ;A10 - OBJ1 Xmax +; subk 6,a11 +; add A7,A11 +; move *A0(OXPOS),A6 ;USE SIGNED COMPARES BECAUSE OBJS MAY LIE ON ZERO +; cmp A11,A6 +; jrgt CLRCR ;X2Min > X1Max +; move *A0(OSIZEX),A11 +; add A11,A6 +; cmp A7,A6 +; jrlt CLRCR ;X2Max < X1Min +; +; move @PCNT,a6 +; btst 0,a6 +; JRZ CLRCR +; SETC ;GOT A BOX INTERSECTION +; RETS +;CLRCR CLRC +; RETS + + + + + + .end + \ No newline at end of file diff --git a/BACKUP/COLLIS.ASM b/BACKUP/COLLIS.ASM new file mode 100644 index 0000000..187284a --- /dev/null +++ b/BACKUP/COLLIS.ASM @@ -0,0 +1,863 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 9/10/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "collis.asm" + .title "game collision 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 "special.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref process_ptrs + .ref get_opp_plyrmode + .ref round_tickcount + .ref wrestler_hit + .ref special_hit + .ref wrestler_hit_special + + + .ref plyr1_objlist + .ref plyr2_objlist + .ref neutral_objlist + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + + SUBR overlap_collision + + + movi process_ptrs,a9 + movi NUM_WRES,a10 +#collis_loop +;RJR START + .align +;RJR END + move *a9+,a11,L + jrz #inactive + cmp a11,a13 + jreq #skip ;skip self + + + move *a11(ANIMODE),a0 + btst MODE_OVERLAP_BIT,a0 ;allow overlap? + jrnz #skip + + move *a13(ANIMODE),a0 + move *a11(ANIMODE),a1 + or a1,a0 + btst MODE_NOCOLLIS_BIT,a0 + jrnz #skip + + move *a11(ATTACH_PROC),a0,L ;skip this if attached + cmp a0,a13 + jreq #skip + + + move *a13(PLYRMODE),a0 ;if player is on ground and + cmpi MODE_ONGROUND,a0 ;then he can't move + jreq #skip + + move *a13(PLYRMODE),a0 ;if player is running (or bouncing) + cmpi MODE_RUNNING,a0 ;and opponent is on ground + jreq #running ;then run through him + cmpi MODE_BOUNCING,a0 + jrne #not_running +#running + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jreq #skip +#not_running + + + move *a13(ANIMODE),a0 + btst MODE_OVERLAP_BIT,a0 ;allow overlap? + jrnz #skip + + move *a13(OBJ_COLLX2),a5 + move *a11(OBJ_COLLX1),a1 + sub a1,a5 ;Ax2 - Bx1 + jrle #no_overlap ;a5 = ROX + + move *a13(OBJ_COLLX1),a0 + move *a11(OBJ_COLLX2),a6 + sub a0,a6 ;Bx2 - Ax1 + jrle #no_overlap ;a6 = LOX + + move *a13(OBJ_COLLZ2),a7 + move *a11(OBJ_COLLZ1),a1 + sub a1,a7 ;Az2 - Bz1 + jrle #no_overlap ;a7 = BOZ + + move *a13(OBJ_COLLZ1),a0 + move *a11(OBJ_COLLZ2),a8 + sub a0,a8 ;Bz2 - Az1 + jrle #no_overlap ;a8 = TOZ + + move *a13(OBJ_COLLY2),a1 + move *a11(OBJ_COLLY1),a0 + sub a0,a1 ;Ay2 - By1 + jrle #no_overlap + + move *a13(OBJ_COLLY1),a1 + move *a11(OBJ_COLLY2),a0 + sub a1,a0 ;By2 - Ay1 + jrle #no_overlap + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jreq #up_down + + move a5,a0 + cmp a6,a5 ;a5-a6 (ROX-LOX) + jrlt #rox_min + move a6,a0 +#rox_min + move a7,a1 + cmp a8,a7 ;a7-a8 (BOZ-TOZ) + jrlt #boz_min + move a8,a1 +#boz_min + + move *a11(PLYRMODE),a14 ;if opp is on ground then + cmpi MODE_ONGROUND,a14 ;slide off in Z + jrne #skp + + srl 1,a0 ;DZ / 2 +#skp + + cmp a1,a0 ;a0-a1 (MOX-MOZ) + +;MJT Start + jrgt #up_down + + +;X glitch too big? + cmpi 3dh,a1 + jrgt #up_down +;MJT End + + +;#left_right + + cmp a6,a5 ;a5-a6 (ROX-LOX) + jrgt #right + +;#left + move *a13(OBJ_XPOSINT),a0 + sub a5,a0 ;XPOS-ROX + move a0,*a13(OBJ_XPOSINT) + + jruc #ud2 + +#right + move *a13(OBJ_XPOSINT),a0 + add a6,a0 ;XPOS+LOX + move a0,*a13(OBJ_XPOSINT) + +#ud2 + move *a13(MOVE_DIR),a0 + jrz #exit + andi MOVE_UP|MOVE_DOWN,a0 + jrnz #exit + + movi 3,a0 + cmp a8,a7 ;a7-a8 (BOZ-TOZ) + jrgt #d2 + neg a0 +#d2 + move *a13(OBJ_ZPOSINT),a14 + add a0,a14 + move a14,*a13(OBJ_ZPOSINT) + rets + + + + + +#up_down + cmp a8,a7 ;a7-a8 (BOZ-TOZ) + jrgt #down +;#up + move *a13(OBJ_ZPOSINT),a0 + sub a7,a0 ;XPOS-BOZ + move a0,*a13(OBJ_ZPOSINT) + jruc #lr2 + +#down + move *a13(OBJ_ZPOSINT),a0 + add a8,a0 ;XPOS-TOZ + move a0,*a13(OBJ_ZPOSINT) + +#lr2 + move *a13(MOVE_DIR),a0 + jrz #exit + andi MOVE_LEFT|MOVE_RIGHT,a0 + jrnz #exit + + movi 3,a0 + cmp a6,a5 ;a5-a6 (ROX-LOX) + jrgt #r2 + neg a0 +#r2 + move *a13(OBJ_XPOSINT),a14 + add a0,a14 + move a14,*a13(OBJ_XPOSINT) + rets + + + + + + +#no_overlap + +#skip +#inactive + dsj a10,#collis_loop +#exit + rets + +#***************************************************************************** + + SUBR set_collision_boxes + + + move *a13(CUR_FRAME),a4,L + +;; move *a4(12*16),*a13(OBJ_BOXXOFF) ;x off +;; move *a4(13*16),*a13(OBJ_BOXYOFF) ;y off +;; move *a4(14*16),*a13(OBJ_BOXWIDTH) ;width +;; move *a4(15*16),*a13(OBJ_BOXHEIGHT) ;height + + movi -30,a0 + move a0,*a13(OBJ_BOXZOFF) + movi 60,a0 + move a0,*a13(OBJ_BOXDEPTH) + + move *a13(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + +;If running, have a smaller Z depth + + jrnz #next + + movi -15,a0 + move a0,*a13(OBJ_BOXZOFF) + movi 30,a0 + move a0,*a13(OBJ_BOXDEPTH) + jruc #norm + +#next + cmpi MODE_RUNNING,a0 + jrnz #norm + + movi -5,a0 + move a0,*a13(OBJ_BOXZOFF) + movi 10,a0 + move a0,*a13(OBJ_BOXDEPTH) + +#norm + + + +;*********************************************************** +; +;XJR - maybe add 100 or so to the initial Y-pos so +; that colly1 or y2 never become negative... +; +;*********************************************************** + + + + move *a13(OBJ_YPOSINT),a0 + move *a4(14*16),a1 ;BOX YOFF + sub a1,a0 + move a0,*a13(OBJ_COLLY2) + move *a4(16*16),a1 ;BOX HEIGHT + sub a1,a0 + move a0,*a13(OBJ_COLLY1) + + move *a13(OBJ_ZPOSINT),a0 + move *a13(OBJ_BOXZOFF),a1 + add a1,a0 + move a0,*a13(OBJ_COLLZ1) + move *a13(OBJ_BOXDEPTH),a1 + add a1,a0 + move a0,*a13(OBJ_COLLZ2) + + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #not_flipped + +;#flipped + move *a13(OBJ_XPOSINT),a0 + move *a4(13*16),a1 ;BOX XOFF + sub a1,a0 + move a0,*a13(OBJ_COLLX2) + move *a4(15*16),a1 ;BOX WIDTH + sub a1,a0 + move a0,*a13(OBJ_COLLX1) + rets + +#not_flipped + move *a13(OBJ_XPOSINT),a0 + move *a4(13*16),a1 ;BOX XOFF + add a1,a0 + move a0,*a13(OBJ_COLLX1) + move *a4(15*16),a1 ;BOX WIDTH + add a1,a0 + move a0,*a13(OBJ_COLLX2) + rets + +#***************************************************************************** + + .bss x1,16 + .bss x2,16 + .bss y1,16 + .bss y2,16 + .bss z1,16 + .bss z2,16 + + + SUBR check_collisions + + + callr object_collisions + + PUSH a13 + + + move @round_tickcount,a0 + andi 1,a0 + jrz #even + + + +;odd + movi process_ptrs+32*NUM_WRES,a4 + movi NUM_WRES,a5 +#collis_loop1 + move -*a4,a10,L + jrz #inactive1 + + move *a10(ANIMODE),a0 + btst MODE_CHECKHIT_BIT,a0 + jrz #inactive1 + + PUSH a4,a5 + + callr set_xyz + + + movi process_ptrs,a4 + movi NUM_WRES,a5 +#collis_loop2 + move *a4+,a13,L + jrz #inactive2 + cmp a10,a13 + jreq #skip_self + + PUSH a4,a5 + + callr check_collis + + PULL a4,a5 + move *a10(ANIMODE),a0 + btst MODE_STATUS_BIT,a0 ;hit someone? + jrnz #done +#skip_self +#inactive2 + dsj a5,#collis_loop2 + + + + PULL a4,a5 +#inactive1 + dsj a5,#collis_loop1 + + PULL a13 + rets + +#done + PULL a4,a5 + PULL a13 + rets + + + +#even +#* + movi process_ptrs,a4 + movi NUM_WRES,a5 +#collis_loop1 + move *a4+,a10,L + jrz #inactive1 + + move *a10(ANIMODE),a0 + btst MODE_CHECKHIT_BIT,a0 + jrz #inactive1 + + PUSH a4,a5 + + callr set_xyz + + + movi process_ptrs,a4 + movi NUM_WRES,a5 +#collis_loop2 + move *a4+,a13,L + jrz #inactive2 + cmp a10,a13 + jreq #skip_self + + PUSH a4,a5 + + callr check_collis + + PULL a4,a5 + move *a10(ANIMODE),a0 + btst MODE_STATUS_BIT,a0 ;hit someone? + jrnz #done +#skip_self +#inactive2 + dsj a5,#collis_loop2 + + + + PULL a4,a5 +#inactive1 + dsj a5,#collis_loop1 + + + PULL a13 + rets +#done + PULL a4,a5 + PULL a13 + rets + +#***************************************************************************** +* a10 = * offensive process +* a13 = * defensive process + + SUBRP check_collis + + move *a13(ANIMODE),a0 + btst MODE_NOCOLLIS_BIT,a0 + jrnz #no_hit + + move *a13(SAFE_TIME),a0 + jrnz #no_hit + + move @x1,a0 + move *a13(OBJ_COLLX2),a1 + cmp a0,a1 ;Dx2 - Ox1 + jrlt #no_hit ;if Dx2 < Ox1 + + move @x2,a0 + move *a13(OBJ_COLLX1),a1 + cmp a0,a1 ;Dx1 - Ox2 + jrgt #no_hit ;if Dx1 > Ox2 + + move @y1,a0 + move *a13(OBJ_COLLY2),a1 + cmp a0,a1 ;Dy2 - Oy1 + jrlt #no_hit ;if Dy2 < Oy1 + + move @y2,a0 + move *a13(OBJ_COLLY1),a1 + cmp a0,a1 ;Dy1 - Oy2 + jrgt #no_hit ;if Dy1 > Oy2 + + move @z1,a0 + move *a13(OBJ_COLLZ2),a1 + cmp a0,a1 ;Dz2 - Oz1 + jrlt #no_hit ;Dz2 < Oz1 + + move @z2,a0 + move *a13(OBJ_COLLZ1),a1 + cmp a0,a1 ;Dz1 - Oz2 + jrgt #no_hit ;Dz1 > Oz2 + + ;if attacker is in MODE_WAITHITOPP, clear said bit and zero ANICNTs. + move *a10(ANIMODE),a14 + btst MODE_WAITHITOPP_BIT,a14 + jrz #skip_whopp + + andni MODE_WAITHITOPP,a14 + move a14,*a10(ANIMODE) + clr a14 + move a14,*a10(ANICNT) + move a14,*a10(ANICNT2) +#skip_whopp + + move a10,*a13(WHOHITME),L + move a13,*a10(WHOIHIT),L + + clr a14 ;false + move *a13(PLYRMODE),a0 + cmpi MODE_BLOCK,a0 + jrne #noblock + inc a14 ;true +#noblock + move a14,*a10(HITBLOCKER) + + movi MOVE_RIGHT,a0 + move *a10(OBJ_XPOSINT),a1 + move *a13(OBJ_XPOSINT),a2 + cmp a2,a1 + jrgt #hit_from_right + movi MOVE_LEFT,a0 +#hit_from_right + movi MOVE_DOWN,a14 + move *a10(OBJ_ZPOS),a1,L + move *a13(OBJ_ZPOS),a2,L + cmp a2,a1 + jrgt #hit_from_below + movi MOVE_UP,a14 +#hit_from_below + or a14,a0 + move a0,*a13(PLYR_HIT_SIDE) + move a0,*a10(PLYR_HIT_SIDE) + + move *a10(ANIMODE),a0 + ori MODE_STATUS,a0 ;this flag set whenever + move a0,*a10(ANIMODE) ;a successful hit + + calla wrestler_hit +#no_hit + rets + + + +#***************************************************************************** +* a10 = *process +* sets x1,x2,y1,y2,z1 and z2 + + SUBRP set_xyz + + move *a10(OBJ_YPOSINT),a0 + move *a10(OBJ_ATTYOFF),a1 + add a1,a0 + move a0,@y1 + move *a10(OBJ_ATTHEIGHT),a1 + add a1,a0 + move a0,@y2 + + move *a10(OBJ_ZPOSINT),a0 + move *a10(OBJ_ATTZOFF),a1 + add a1,a0 + move a0,@z1 + move *a10(OBJ_ATTDEPTH),a1 + add a1,a0 + move a0,@z2 + + +; move *a10(FACING_DIR),a14 +; btst PLAYER_RIGHT_BIT,a14 +; jrnz #facing_right + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #facing_right + + +;facing_left + move *a10(OBJ_XPOSINT),a0 + move *a10(OBJ_ATTXOFF),a1 + sub a1,a0 + move a0,@x2 + move *a10(OBJ_ATTWIDTH),a1 + sub a1,a0 + move a0,@x1 + rets + +#facing_right + move *a10(OBJ_XPOSINT),a0 + move *a10(OBJ_ATTXOFF),a1 + add a1,a0 + move a0,@x1 + move *a10(OBJ_ATTWIDTH),a1 + add a1,a0 + move a0,@x2 + + rets + + +#***************************************************************************** +* +* a10 = * wrestler process to turn collisions off + + SUBR wres_collis_off + + move *a10(ANIMODE),a0 + andni MODE_CHECKHIT,a0 + move a0,*a10(ANIMODE) + rets + + +#***************************************************************************** + + SUBR object_collisions + +;MJT Start +;FIX!!! This can point to a non existent proc +;MJT End + + movi plyr1_objlist,a0 + callr set_spobj_boxes + + movi plyr2_objlist,a0 + callr set_spobj_boxes + + movi neutral_objlist,a0 + callr set_spobj_boxes + + + movi plyr1_objlist,a6 + movi plyr2_objlist,a7 + callr objlist2objlist_collis + + + movi plyr1_objlist,a10 + callr objlist2player_collis + + movi plyr2_objlist,a10 + callr objlist2player_collis + + movi neutral_objlist,a10 + callr objlist2player_collis + + + rets + + +#***************************************************************************** +;a10 = objlist1 + +objlist2player_collis + + PUSH a13 + + move *a10,a10,L + jrz #done +#lp1 + + move *a10(SP_COLLX1),a0 + move *a10(SP_COLLX2),a1 + + move *a10(SP_COLLY1),a2 + move *a10(SP_COLLY2),a3 + + move *a10(SP_COLLZ1),a4 + move *a10(SP_COLLZ2),a5 + + + movi process_ptrs,a7 + movi NUM_WRES,a6 +#collis_loop + move *a7+,a13,L + jrz #inactive + +;MJT Start + move *a13(ANIMODE),a14 + btst MODE_NOCOLLIS_BIT,a14 + jrnz #no_hit +;MJT End + +;check if projectile should hit this guy...(same side) + + move *a13(OBJ_COLLX2),a14 + cmp a0,a14 ;Dx2 - Ox1 + jrlt #no_hit ;if Dx2 < Ox1 + + move *a13(OBJ_COLLX1),a14 + cmp a1,a14 ;Dx1 - Ox2 + jrgt #no_hit ;if Dx1 > Ox2 + + move *a13(OBJ_COLLY2),a14 + cmp a2,a14 ;Dy2 - Oy1 + jrlt #no_hit ;if Dy2 < Oy1 + + move *a13(OBJ_COLLY1),a14 + cmp a3,a14 ;Dy1 - Oy2 + jrgt #no_hit ;if Dy1 > Oy2 + + move *a13(OBJ_COLLZ2),a14 + cmp a4,a14 ;Dz2 - Oz1 + jrlt #no_hit ;Dz2 < Oz1 + + move *a13(OBJ_COLLZ1),a14 + cmp a5,a14 ;Dz1 - Oz2 + jrgt #no_hit ;Dz1 > Oz2 + +;hit + calla wrestler_hit_special + + jruc #done + +#no_hit +#inactive + dsj a6,#collis_loop + + + move *a10(SP_NEXT),a10,L + jrnz #lp1 + +#done + + PULL a13 + rets + + +#***************************************************************************** +;a6 = objlist1 +;a7 = objlist2 + +objlist2objlist_collis + + move *a6,a6,L + jrz #done +#lp1 + move a7,a8 + move *a8,a8,L + jrz #done + + move *a6(SP_COLLX1),a0 + move *a6(SP_COLLX2),a1 + + move *a6(SP_COLLY1),a2 + move *a6(SP_COLLY2),a3 + + move *a6(SP_COLLZ1),a4 + move *a6(SP_COLLZ2),a5 + +#lp2 + move *a8(SP_COLLX2),a14 + cmp a0,a14 ;Dx2 - Ox1 + jrlt #no_hit ;if Dx2 < Ox1 + + move *a8(SP_COLLX1),a14 + cmp a1,a14 ;Dx1 - Ox2 + jrgt #no_hit ;if Dx1 > Ox2 + + move *a8(SP_COLLY2),a14 + cmp a2,a14 ;Dy2 - Oy1 + jrlt #no_hit ;if Dy2 < Oy1 + + move *a8(SP_COLLY1),a14 + cmp a3,a14 ;Dy1 - Oy2 + jrgt #no_hit ;if Dy1 > Oy2 + + move *a8(SP_COLLZ2),a14 + cmp a4,a14 ;Dz2 - Oz1 + jrlt #no_hit ;Dz2 < Oz1 + + move *a8(SP_COLLZ1),a14 + cmp a5,a14 ;Dz1 - Oz2 + jrgt #no_hit ;Dz1 > Oz2 + +;hit + calla special_hit + + jruc #done + +#no_hit + + move *a8(SP_NEXT),a8,L + jrnz #lp2 + + move *a6(SP_NEXT),a6,L + jrnz #lp1 + +#done + rets + + +#***************************************************************************** + +set_spobj_boxes + + move *a0,a0,L + jrz #done +#lp + + move *a0(SP_OBJ_YPOSINT),a1 + move *a0(SP_YOFF),a14 + add a14,a1 + move a1,*a0(SP_COLLY1) + move *a0(SP_HEIGHT),a14 + add a14,a1 + move a1,*a0(SP_COLLY2) + + + move *a0(SP_OBJ_ZPOSINT),a1 + move *a0(SP_ZOFF),a14 + add a14,a1 + move a1,*a0(SP_COLLZ1) + move *a0(SP_DEPTH),a14 + add a14,a1 + move a1,*a0(SP_COLLZ2) + + + move *a0(SP_OBJCONTROL),a14 + btst B_FLIPH,a14 + jrz #not_flipped + +;#flipped + move *a0(SP_OBJ_XPOSINT),a1 + move *a0(SP_XOFF),a14 + sub a14,a1 + move a1,*a0(SP_COLLX2) + move *a0(SP_WIDTH),a14 + sub a14,a1 + move a1,*a0(SP_COLLX1) + jruc #cnt + +#not_flipped + move *a0(SP_OBJ_XPOSINT),a1 + move *a0(SP_XOFF),a14 + add a14,a1 + move a1,*a0(SP_COLLX1) + move *a0(SP_WIDTH),a14 + add a14,a1 + move a1,*a0(SP_COLLX2) + +#cnt + move *a0(SP_NEXT),a0,L + jrnz #lp + +#done + rets + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/CROWD.ASM b/BACKUP/CROWD.ASM new file mode 100644 index 0000000..617cb4e --- /dev/null +++ b/BACKUP/CROWD.ASM @@ -0,0 +1,995 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 28 Apr 94 +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 4/28/94 22:12 +************************************************************** + + .file "crowd.asm" + .title "crowd stuff" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;Mproc equates + .include "display.equ" ;Display proc equates + .include "gsp.equ" ;Gsp asm equates + .include "sys.equ" + .include "game.equ" + .include "audit.equ" + .include "macros.h" + .include "link.equ" + .include "sound.h" + + .INCLUDE "SOUND.EQU" + .include "crowdimg.tbl" + .include "crowdimg.glo" + .include "bgndtbl.glo" + .include "imgtbl.glo" + +#***************************************************************************** + + .def animate_back + + ;from DISPLAY.ASM + .ref BAKLST + + ;from UTIL.ASM + .ref RNDRNG0 + .ref RNDPER + .DEF DO_CROWD_CHEER + + .REF START_FLASHES + +#***************************************************************************** + +DEF_ANISPD equ 8 +SPD_FOREVER equ 7FFFh + +CROWD_OBJS equ 0h +CROWD_NORMANIM equ 20h +CROWD_CHEERANIM equ 40h + +CANI_GOTO equ 0 + 8000h +CANI_RNDWAIT equ 1 + 8000h +CANI_END equ 2 + 8000H +CANI_CODE EQU 3 + 8000H +CANI_REPEAT EQU 4 + 8000H +CANI_SHOULD_REPEAT EQU 5 + 8000H + +*STRUCT BOBJANIM +SCPTR .set 000 ;UHL script pointer (next instruction) +TIME .set 020h ;UHW time to hold +FRAME .set 030h ;UHL current obj +CHEER1 .set 050h ;UHL cheer1 jump point +CHEER2 .set 070h ;UHL cheer2 jump point +REPEAT_P .SET 090H ;UHL REPEAT POINT TO JUMP BACK TO +REPEAT_N .SET 0B0H ;UHW REPEAT THIS NUMBER OF TIMES +*ENDSTRUCT +BSIZE equ REPEAT_N+10h + +NUMCROWD equ 24 + +HICROWDZ equ 23 ;high z (after shift) + + BSSX CROWDDATA,(NUMCROWD+1)*BSIZE + +#***************************************************************************** +* Main crowd control process +* + +;NOTE: The background stuff is doing SOMETHING with ODXOFF and ODYOFF, so +; I'm storing anim points in OXVEL and OYVEL instead. Those seem safe. + + SUBR crowd_anim + + ;initialize + movi NUMCROWD,a0 + movi CROWD_ANIMS,a1 + movi CROWDDATA,a2 +#initloop + move *a1+,a3,L + move *a3+,a14,W + move a14,*a2(TIME),W + move *a3+,a14,L + move a14,*a2(FRAME),L + move a3,*a2(SCPTR),L + move *a1+,a14,L + move a14,*a2(CHEER1),L + move *a1+,a14,L + move a14,*a2(CHEER2),L + CLR A14 + MOVE A14,*A2(REPEAT_P),L + MOVE A14,*A2(REPEAT_N) + addi BSIZE,a2 + dsj a0,#initloop + + clr a14 + move a14,*a2(SCPTR),L + +#main_loop +; TINTOFF ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SLEEP 1 +;#wt move @0C00001D0h,a0 +; cmpi 0d8h,a0 +; jrlt #wt +; TINTON ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + ;update CROWDDATA + movi CROWDDATA-BSIZE,a4 +#cd_loop + addi BSIZE,a4 + move *a4(SCPTR),a14,L + jrz #cd_done + callr animate_back + jruc #cd_loop + +animate_back + move *a4(TIME),a14,W + dec a14 + jrz #next_command + move a14,*a4(TIME),W + MOVK 1,A14 + rets + + +#next_command + move *a4(SCPTR),a5,L +#next_in_the_QUEUE + move *a5+,a14,W + jrn #cani_command + move a14,*a4(TIME),W + move *a5+,a14,L + move a14,*a4(FRAME),L + move a5,*a4(SCPTR),L + MOVK 1,A14 + DEC A14 + rets + +#cani_command + andi 7FFFh,a14 + X32 a14 + addi #cani_commands,a14 + move *a14,a14,L + jump a14 + +#cani_commands + .long #_goto + .long #_rndwait + .LONG #_END_ANIM + .LONG #_CODE + .LONG #_RANDOM_REPEAT + .LONG #_SHOULD_WE_WE_REPEAT + +********** +#_CODE + MOVE *A5+,A0,L + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14 + CALL A0 + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14 + jruc #next_in_the_QUEUE + + +#_END_ANIM + MOVI -1,A14 + RETS + +#_goto + move *a5+,a5,L + move a5,*a4(SCPTR),L + jruc #next_command + +********** +#_rndwait + move *a5+,a0,W + calla RNDRNG0 + move a0,*a4(TIME),W + move a5,*a4(SCPTR),L + rets + +#_RANDOM_REPEAT + MOVE *A5+,A0 + MOVE A5,*A4(REPEAT_P),L + CALLA RNDRNG0 + MOVE A0,*A4(REPEAT_N) + jruc #next_in_the_QUEUE + +#_SHOULD_WE_WE_REPEAT + MOVE *A4(REPEAT_N),A0 + DEC A0 + MOVE A0,*A4(REPEAT_N) + JRZ REACHED_LAST_LOOP + JRN REACHED_LAST_LOOP + MOVE *A4(REPEAT_P),*A4(SCPTR),L + MOVE *A4(REPEAT_P),A5,L + jruc #next_in_the_QUEUE +REACHED_LAST_LOOP + CLR A0 + MOVE A0,*A4(REPEAT_N) + jruc #next_in_the_QUEUE + + + +#cd_done +;RJR START + .ref PCNT + move @PCNT,a14 + btst 0,a14 + jrz #main_loop +;RJR END + + + ;update BAKLST + move @BAKLST,a8,L + + .align ;RJR +#bakloop + move *a8(OZPOS),a0,W + srl 1,a0 + jrc #bakskip + cmpi HICROWDZ,a0 + jrgt #bakskip + + move a0,a1 + X64 a1 + X128 a0 + add a1,a0 + + addi CROWDDATA,a0 + move *a0(FRAME),a0,L + move *a8(OIMG),a1,L + cmp a0,a1 + jreq #bakskip + +; callr anibobj +;RJR START (in-lined) + move *a8(OCTRL),a1,W + + move *a8(OXPOS),a2,W + move *a8(OXVEL),a3,W + move *a0(IANIOFFX),a4,W + clr a5 + btst B_FLIPH,a1 + jrz #noflip + + ;obj is horz-flipped. negate the Xanim point and adjust X pos + ; by XSZold-XSZnew + neg a4 + move *a8(OSIZEX),a5,W + move *a0(ISIZEX),a14,W + sub a14,a5 +#noflip + add a3,a2 + sub a4,a2 + add a5,a2 + move a2,*a8(OXPOS),W + move a4,*a8(OXVEL),W + + + move *a8(OYPOS),a2,W + move *a8(OYVEL),a3,W + move *a0(IANIOFFY),a4,W + add a3,a2 + sub a4,a2 + move a2,*a8(OYPOS),W + move a4,*a8(OYVEL),W + + move a0,a2 + move a1,a3 + + move a2,*a8(OIMG),L + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + setf 5,0,0 + move *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits +; setf 6,0,0 +; move a3,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 +;RJR END +#bakskip + move *a8,a8,L + jrnz #bakloop + + + jruc #main_loop + + +;crowd anim starting points +CROWD_ANIMS + .long #jasoncrd_norm, #jasoncrd_cheer1,#jasoncrd_cheer2 + .long #tonycrd_norm, #tonycrd_cheer1 ,#tonycrd_cheer1 + .long #vogel_norm, #vogel_cheer1 ,#vogel_cheer2 + .long #tobias_norm, #tobias_cheer1 ,#tobias_cheer2 + .long #alex_norm, #alex_cheer1 ,#alex_cheer2 + .long #marine_norm, #marine_cheer1 ,#marine_cheer2 + .long #jake_norm, #jake_cheer1 ,#jake_cheer2 + .long #johnc_norm, #johnc_cheer1 ,#johnc_cheer2 + .long #dewey_norm, #dewey_cheer1 ,#dewey_cheer2 + .long #jason_norm, #jason_cheer1 ,#jason_cheer2 + .long #jamie_norm, #jamie_cheer1 ,#jamie_cheer2 + .long #sheridan_norm, #sheridan_cheer1,#sheridan_cheer2 + .long #sal_norm, #sal_cheer1 ,#sal_cheer2 + .long #josh_norm, #josh_cheer1 ,#josh_cheer2 + .long #mark_norm, #mark_cheer1 ,#mark_cheer1 + .long #tony_norm, #tony_cheer1 ,#tony_cheer2 + .long #carlos_norm, #carlos_cheer1 ,#carlos_cheer2 + .long #newc_norm, #newc_cheer1 ,#newc_cheer2 + .long #joy_norm, #joy_cheer1 ,#joy_cheer1 + .long #side1_norm, #side1_cheer1 ,#side1_cheer1 + .long #side2_norm, #side2_cheer1 ,#side2_cheer1 + .long #side3_norm, #side3_cheer1 ,#side3_cheer1 + .long #george_norm, #george_cheer1 ,#george_cheer1 + .long #dave_norm, #dave_cheer1 ,#dave_cheer2 + + +********** +* Alex + +#ALEX_SPD equ 6 + +#alex_norm + WL SPD_FOREVER,ALEX1 + WL CANI_GOTO,#alex_norm + +#alex_cheer1 + WL #ALEX_SPD,ALEX2 + WL #ALEX_SPD,ALEX3 + WL #ALEX_SPD,ALEX4 + WL #ALEX_SPD,ALEX2 + WL CANI_GOTO,#alex_norm +#alex_cheer2 + WL #ALEX_SPD,ALEX2 + WL #ALEX_SPD,ALEX3 + .WORD CANI_REPEAT,7 + WL #ALEX_SPD,ALEX4 + WL #ALEX_SPD,ALEX3 + .WORD CANI_SHOULD_REPEAT + WL #ALEX_SPD,ALEX2 + WL CANI_GOTO,#alex_norm + +********** +* Carlos + +#CARLOS_SPD equ 7 + +#carlos_norm + WL SPD_FOREVER,CARLO1 + WL CANI_GOTO,#carlos_norm + +#carlos_cheer1 + WL #CARLOS_SPD,CARLO2 + WL #CARLOS_SPD,CARLO3 + WL #CARLOS_SPD,CARLO4 + WL #CARLOS_SPD,CARLO2 + WL CANI_GOTO,#carlos_norm + +#carlos_cheer2 + WL #CARLOS_SPD,CARLO2 + WL #CARLOS_SPD,CARLO3 + WL #CARLOS_SPD,CARLO4 + .WORD CANI_REPEAT,7 + WL #CARLOS_SPD,CARLO3 + WL #CARLOS_SPD,CARLO4 + .WORD CANI_SHOULD_REPEAT + WL #CARLOS_SPD,CARLO2 + WL CANI_GOTO,#carlos_norm + +********** +* Dave + +#DAVE_SPD equ 8 + +#dave_norm + WL SPD_FOREVER,DAVEMSK1 + WL CANI_GOTO,#dave_norm + +#dave_cheer1 + WL #DAVE_SPD,DAVEMSK2 + WL #DAVE_SPD,DAVEMSK3 + WL #DAVE_SPD,DAVEMSK4 + WL #DAVE_SPD,DAVEMSK3 + WL #DAVE_SPD,DAVEMSK2 + WL CANI_GOTO,#dave_norm + +#dave_cheer2 + .WORD CANI_REPEAT,7 + WL #DAVE_SPD,DAVEMSK2 + WL #DAVE_SPD,DAVEMSK3 + .WORD CANI_SHOULD_REPEAT + WL #DAVE_SPD,DAVEMSK4 + WL #DAVE_SPD,DAVEMSK3 + WL #DAVE_SPD,DAVEMSK2 + WL CANI_GOTO,#dave_norm + +********** +* Dewey + +#DEWEY_SPD equ 7 + +#dewey_norm + WL #DEWEY_SPD,DEWY1 + .word CANI_RNDWAIT,TSEC*10 + WL #DEWEY_SPD,DEWY2 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY4 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY2 + WL CANI_GOTO,#dewey_norm + +#dewey_cheer1 + WL #DEWEY_SPD,DEWY1 + WL #DEWEY_SPD,DEWY2 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY4 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY2 + WL CANI_GOTO,#dewey_norm + +#dewey_cheer2 + WL #DEWEY_SPD,DEWY1 + .WORD CANI_REPEAT,7 + WL #DEWEY_SPD,DEWY2 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY4 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY2 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY4 + WL #DEWEY_SPD,DEWY3 + .WORD CANI_SHOULD_REPEAT + WL #DEWEY_SPD,DEWY2 + WL CANI_GOTO,#dewey_norm + +********** +* George + +#GEORGE_SPD equ 8 + +#george_norm + WL #GEORGE_SPD,GEORGE1 + .word CANI_RNDWAIT,TSEC*4 + WL #GEORGE_SPD,GEORGE2 + WL #GEORGE_SPD,GEORGE3 + WL #GEORGE_SPD,GEORGE4 + WL #GEORGE_SPD,GEORGE3 + WL #GEORGE_SPD,GEORGE2 + WL CANI_GOTO,#george_norm + +#george_cheer1 + .WORD CANI_REPEAT,2 + WL #GEORGE_SPD,GEORGE1 + WL #GEORGE_SPD,GEORGE2 + WL #GEORGE_SPD,GEORGE3 + WL #GEORGE_SPD,GEORGE4 + WL #GEORGE_SPD,GEORGE3 + WL #GEORGE_SPD,GEORGE2 + .WORD CANI_SHOULD_REPEAT + WL CANI_GOTO,#george_norm + +********** +* Jake + +#JAKE_SPD equ 8 + +#jake_norm + WL SPD_FOREVER,JAKE1 + WL CANI_GOTO,#jake_norm + +#jake_cheer1 + WL #JAKE_SPD,JAKE2 + WL #JAKE_SPD,JAKE3 + WL #JAKE_SPD,JAKE4 + WL #JAKE_SPD,JAKE2 + WL CANI_GOTO,#jake_norm + +#jake_cheer2 + WL #JAKE_SPD,JAKE2 + .WORD CANI_REPEAT,7 + WL #JAKE_SPD,JAKE3 + WL #JAKE_SPD,JAKE4 + .WORD CANI_SHOULD_REPEAT + WL #JAKE_SPD,JAKE2 + WL CANI_GOTO,#jake_norm + +********** +* Jamie + +#JAMIE_SPD equ 5 + +#jamie_norm + WL SPD_FOREVER,JAMIE1 + WL CANI_GOTO,#jamie_norm + +#jamie_cheer1 + WL #JAMIE_SPD,JAMIE2 + WL #JAMIE_SPD,JAMIE3 + WL #JAMIE_SPD,JAMIE4 + WL #JAMIE_SPD,JAMIE5 + WL #JAMIE_SPD,JAMIE6 + WL CANI_GOTO,#jamie_norm + +#jamie_cheer2 + .WORD CANI_REPEAT,7 + WL #JAMIE_SPD,JAMIE2 + WL #JAMIE_SPD,JAMIE3 + .WORD CANI_SHOULD_REPEAT + WL #JAMIE_SPD,JAMIE4 + WL #JAMIE_SPD,JAMIE5 + WL #JAMIE_SPD,JAMIE6 + WL CANI_GOTO,#jamie_norm + +********** +* Jason + +#JASON_SPD equ 6 + +#jason_norm + WL SPD_FOREVER,SERG1 + WL CANI_GOTO,#jason_norm + +#jason_cheer1 + WL #JASON_SPD,SERG2 + WL #JASON_SPD,SERG3 + WL #JASON_SPD,SERG4 + WL #JASON_SPD,SERG5 + WL #JASON_SPD,SERG4 + WL #JASON_SPD,SERG3 + WL #JASON_SPD,SERG2 + WL CANI_GOTO,#jason_norm + +#jason_cheer2 + WL #JASON_SPD,SERG2 + WL #JASON_SPD,SERG3 + .WORD CANI_REPEAT,7 + WL #JASON_SPD,SERG4 + WL #JASON_SPD,SERG5 + WL #JASON_SPD,SERG4 + WL #JASON_SPD,SERG3 + .WORD CANI_SHOULD_REPEAT + WL #JASON_SPD,SERG2 + WL CANI_GOTO,#jason_norm + + +********** +* Jason crowd + +#JCROWD_SPD equ 8 + +#jasoncrd_norm + WL SPD_FOREVER,JASONCRD1 + WL CANI_GOTO,#jasoncrd_norm + +#jasoncrd_cheer1 + WL #JCROWD_SPD,JASONCRD2 + WL #JCROWD_SPD,JASONCRD3 + WL #JCROWD_SPD,JASONCRD4 + WL #JCROWD_SPD,JASONCRD5 + WL CANI_GOTO,#jasoncrd_norm + +#jasoncrd_cheer2 + WL #JCROWD_SPD,JASONCRD2 + WL #JCROWD_SPD,JASONCRD3 + .WORD CANI_REPEAT,7 + WL #JCROWD_SPD,JASONCRD4 + WL #JCROWD_SPD,JASONCRD5 + .WORD CANI_SHOULD_REPEAT + WL CANI_GOTO,#jasoncrd_norm + + +********** +* JohnC + +#JOHNC_SPD equ 8 + +#johnc_norm + WL SPD_FOREVER,JOHNC1 + WL CANI_GOTO,#johnc_norm + +#johnc_cheer1 + WL #JOHNC_SPD,JOHNC2 + WL #JOHNC_SPD,JOHNC3 + WL #JOHNC_SPD*3,JOHNC4 + WL #JOHNC_SPD,JOHNC3 + WL #JOHNC_SPD,JOHNC2 + WL CANI_GOTO,#johnc_norm + +#johnc_cheer2 + WL #JOHNC_SPD,JOHNC2 + WL #JOHNC_SPD,JOHNC3 + WL #JOHNC_SPD,JOHNC4 + WL #JOHNC_SPD,JOHNC3 + WL #JOHNC_SPD*3,JOHNC4 + WL #JOHNC_SPD,JOHNC3 + WL #JOHNC_SPD,JOHNC2 + WL CANI_GOTO,#johnc_norm + +********** +* Josh + +#JOSH_SPD equ 7 + +#josh_norm + WL SPD_FOREVER,JOSH1 + WL CANI_GOTO,#josh_norm + +#josh_cheer1 + WL #JOSH_SPD,JOSH2 + WL #JOSH_SPD,JOSH3 + WL #JOSH_SPD,JOSH4 + WL #JOSH_SPD,JOSH3 + WL #JOSH_SPD,JOSH4 + WL #JOSH_SPD,JOSH2 + WL CANI_GOTO,#josh_norm + +#josh_cheer2 + WL #JOSH_SPD,JOSH2 + WL #JOSH_SPD,JOSH3 + WL #JOSH_SPD,JOSH4 + .WORD CANI_REPEAT,6 + WL #JOSH_SPD,JOSH3 + WL #JOSH_SPD,JOSH4 + .WORD CANI_SHOULD_REPEAT + WL #JOSH_SPD,JOSH2 + WL CANI_GOTO,#josh_norm + + +********** +* Joy (side crowd) + +#JOY_SPD equ 8 + +#joy_norm + WL SPD_FOREVER,JOY1 + WL CANI_GOTO,#joy_norm +#joy_cheer1 + WL #JOY_SPD,JOY1 + WL #JOY_SPD,JOY2 + WL #JOY_SPD,JOY3 + WL #JOY_SPD,JOY4 + WL #JOY_SPD,JOY5 + WL #JOY_SPD,JOY4 + WL #JOY_SPD,JOY3 + WL CANI_GOTO,#joy_norm + +********** +* Marine + +#MARINE_SPD equ 8 + +#marine_norm + WL SPD_FOREVER,MARINE1 + WL CANI_GOTO,#marine_norm + +#marine_cheer1 + WL #MARINE_SPD,MARINE2 + WL #MARINE_SPD,MARINE3 + WL #MARINE_SPD,MARINE4 + WL #MARINE_SPD,MARINE2 + WL CANI_GOTO,#marine_norm + +#marine_cheer2 + WL #MARINE_SPD,MARINE2 + .WORD CANI_REPEAT,6 + WL #MARINE_SPD,MARINE3 + WL #MARINE_SPD,MARINE4 + .WORD CANI_SHOULD_REPEAT + WL #MARINE_SPD,MARINE3 + WL #MARINE_SPD,MARINE2 + WL CANI_GOTO,#marine_norm + +********** +* Mark + +#MARK_SPD equ 8 + +#mark_norm + WL SPD_FOREVER,TURMEL1 + WL CANI_GOTO,#mark_norm + +#mark_cheer1 + WL #MARK_SPD,TURMEL2 + WL #MARK_SPD,TURMEL3 + WL 20,TURMEL4 + WL #MARK_SPD,TURMEL3 + WL #MARK_SPD,TURMEL2 + WL CANI_GOTO,#mark_norm + +********** +* Newc + +#NEWC_SPD equ 9 + +#newc_norm + WL SPD_FOREVER,NEWCOM1 + WL CANI_GOTO,#newc_norm + +#newc_cheer1 + WL #NEWC_SPD,NEWCOM2 + WL #NEWC_SPD,NEWCOM3 + WL #NEWC_SPD,NEWCOM4 + WL #NEWC_SPD,NEWCOM3 + WL #NEWC_SPD,NEWCOM4 + WL #NEWC_SPD,NEWCOM3 + WL #NEWC_SPD,NEWCOM2 + WL CANI_GOTO,#newc_norm + +#newc_cheer2 + WL #NEWC_SPD,NEWCOM2 + .WORD CANI_REPEAT,6 + WL #NEWC_SPD,NEWCOM3 + WL #NEWC_SPD,NEWCOM4 + .WORD CANI_SHOULD_REPEAT + WL #NEWC_SPD,NEWCOM2 + WL CANI_GOTO,#newc_norm + +********** +* Sal + +#SAL_SPD equ 8 + +#sal_norm + WL SPD_FOREVER,SAL1 + WL CANI_GOTO,#sal_norm + +#sal_cheer1 + WL #SAL_SPD,SAL2 + WL #SAL_SPD,SAL3 + WL #SAL_SPD,SAL4 + WL #SAL_SPD,SAL3 + WL #SAL_SPD,SAL4 + WL #SAL_SPD,SAL3 + WL #SAL_SPD,SAL2 + WL CANI_GOTO,#sal_norm + +#sal_cheer2 + WL #SAL_SPD,SAL2 + .WORD CANI_REPEAT,7 + WL #SAL_SPD,SAL3 + WL #SAL_SPD,SAL4 + .WORD CANI_SHOULD_REPEAT + WL #SAL_SPD,SAL2 + WL CANI_GOTO,#sal_norm + +********** +* Sheridan + +#SHERIDAN_SPD equ 8 + +#sheridan_norm + WL 1,SHERID1 + .word CANI_RNDWAIT,TSEC*20 + WL #SHERIDAN_SPD,SHERID6 + WL #SHERIDAN_SPD,SHERID7 + WL #SHERIDAN_SPD*2,SHERID8 + WL #SHERIDAN_SPD,SHERID7 + WL #SHERIDAN_SPD,SHERID6 + WL CANI_GOTO,#sheridan_norm + +#sheridan_cheer1 + WL #SHERIDAN_SPD,SHERID1 + WL #SHERIDAN_SPD,SHERID2 + WL #SHERIDAN_SPD,SHERID3 + WL #SHERIDAN_SPD,SHERID4 + WL #SHERIDAN_SPD,SHERID5 + WL #SHERIDAN_SPD,SHERID6 + WL #SHERIDAN_SPD,SHERID7 + WL #SHERIDAN_SPD*2,SHERID8 + WL #SHERIDAN_SPD,SHERID7 + WL #SHERIDAN_SPD,SHERID6 + WL CANI_GOTO,#sheridan_norm + +#sheridan_cheer2 + WL #SHERIDAN_SPD,SHERID1 + WL #SHERIDAN_SPD,SHERID2 + WL #SHERIDAN_SPD,SHERID3 + .WORD CANI_REPEAT,3 + WL #SHERIDAN_SPD,SHERID4 + WL #SHERIDAN_SPD,SHERID5 + .WORD CANI_SHOULD_REPEAT + WL CANI_GOTO,#sheridan_norm + +********** +* Side crowd + +#SDCRD_SPD equ 8 + +#side1_norm + WL SPD_FOREVER,SDCRD1A + WL CANI_GOTO,#side1_norm + +#side1_cheer1 + WL #SDCRD_SPD,SDCRD2A + WL #SDCRD_SPD,SDCRD3A + WL #SDCRD_SPD,SDCRD4A + WL #SDCRD_SPD,SDCRD3A + WL #SDCRD_SPD,SDCRD2A + WL CANI_GOTO,#side1_norm + +#side2_norm + WL SPD_FOREVER,SDCRD1B + WL CANI_GOTO,#side2_norm + +#side2_cheer1 + WL #SDCRD_SPD,SDCRD2B + WL #SDCRD_SPD,SDCRD3B + WL #SDCRD_SPD,SDCRD4B + WL #SDCRD_SPD,SDCRD3B + WL #SDCRD_SPD,SDCRD2B + WL CANI_GOTO,#side2_norm + +#side3_norm + WL SPD_FOREVER,SDCRD1C + WL CANI_GOTO,#side3_norm + +#side3_cheer1 + WL #SDCRD_SPD,SDCRD2C + WL #SDCRD_SPD,SDCRD3C + WL #SDCRD_SPD,SDCRD4C + WL #SDCRD_SPD,SDCRD3C + WL #SDCRD_SPD,SDCRD2C + WL CANI_GOTO,#side3_norm + +********** +* Tobias + +#TOBIAS_SPD equ 7 + +#tobias_norm + WL SPD_FOREVER,TOBIAS1 + WL CANI_GOTO,#tobias_norm + +#tobias_cheer1 + WL #TOBIAS_SPD,TOBIAS2 + WL #TOBIAS_SPD,TOBIAS3 + WL #TOBIAS_SPD,TOBIAS4 + WL #TOBIAS_SPD,TOBIAS2 + WL CANI_GOTO,#tobias_norm + +#tobias_cheer2 + WL #TOBIAS_SPD,TOBIAS2 + .WORD CANI_REPEAT,7 + WL #TOBIAS_SPD,TOBIAS3 + WL #TOBIAS_SPD,TOBIAS4 + .WORD CANI_SHOULD_REPEAT + WL #TOBIAS_SPD,TOBIAS2 + WL CANI_GOTO,#tobias_norm + +********** +* Tony + +#TONY_SPD equ 7 + +#tony_norm + WL SPD_FOREVER,CRAZY1 + WL CANI_GOTO,#tony_norm + +#tony_cheer1 + WL #TONY_SPD,CRAZY2 + WL #TONY_SPD,CRAZY3 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY5 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY5 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY3 + WL #TONY_SPD,CRAZY2 + WL CANI_GOTO,#tony_norm + +#tony_cheer2 + WL #TONY_SPD,CRAZY2 + WL #TONY_SPD,CRAZY3 + .WORD CANI_REPEAT,7 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY5 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY3 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY5 + .WORD CANI_SHOULD_REPEAT + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY3 + WL #TONY_SPD,CRAZY2 + WL CANI_GOTO,#tony_norm + + +********** +* Tony crowd + +#TONYC_SPD equ 8 + +#tonycrd_norm + WL SPD_FOREVER,TONYCRD1 + WL CANI_GOTO,#tonycrd_norm + +#tonycrd_cheer1 + WL #TONYC_SPD,TONYCRD2 + WL #TONYC_SPD,TONYCRD3 + WL #TONYC_SPD,TONYCRD4 + WL #TONYC_SPD,TONYCRD5 + WL CANI_GOTO,#tonycrd_norm + +********** +* Vogel + +#VOGEL_SPD equ 8 + +#vogel_norm + WL SPD_FOREVER,VOGEL1 + WL CANI_GOTO,#vogel_norm + +#vogel_cheer1 + WL #VOGEL_SPD,VOGEL2 + WL #VOGEL_SPD,VOGEL3 + WL #VOGEL_SPD,VOGEL4 + WL #VOGEL_SPD,VOGEL3 + WL #VOGEL_SPD,VOGEL2 + WL CANI_GOTO,#vogel_norm + +#vogel_cheer2 + WL #VOGEL_SPD,VOGEL2 + .WORD CANI_REPEAT,7 + WL #VOGEL_SPD,VOGEL3 + WL #VOGEL_SPD,VOGEL4 + .WORD CANI_SHOULD_REPEAT + WL #VOGEL_SPD,VOGEL2 + WL CANI_GOTO,#vogel_norm + +DO_CROWD_CHEER + MOVK C_OVERIDE|C_LONG,A3 + CLR A4 + +#***************************************************************************** +* Causes the crowd to cheer. + +;INPUT A3 = BIT 0 1=LONG OR 0=SHORT TYPE OF ANIMATION +; BIT 1 1=OVERRIDE WHAT IS ALREADY GOING ON OR NOT +; BIT 2 1=DO RANDOM NUMBER OF PEOPLE IN AUDIENCE +; A4 = RNDPER VALUE IF BIT 2 SET IN A3 + SUBR crowd_cheer + + CLR A7 + BTST B_RANDOM,A3 + JRZ NO_RANDOMNESS + MOVE A4,A7 +NO_RANDOMNESS + movi CROWDDATA,a4 + movi NUMCROWD,a5 + movk 1,a6 +#loop + MOVE A7,A0 + JRZ DO_THEM_ALL + CALLA RNDPER + JRLS DO_NEXT_PERSON +DO_THEM_ALL + BTST B_OVERRIDE,A3 + JRNZ JUST_DO_IT_ANYWAY + MOVE *A4(CHEER1),A8,L + MOVE *A4(SCPTR),A9,L + CMP A8,A9 + JRGE DO_NEXT_PERSON +JUST_DO_IT_ANYWAY + move *a4(CHEER1),*a4(SCPTR),L + BTST B_L_OR_S,A3 + JRZ OKAY_DO_SHORT + move *a4(CHEER2),*a4(SCPTR),L +OKAY_DO_SHORT + move a6,*a4(TIME),W +DO_NEXT_PERSON + addi BSIZE,a4 + dsj a5,#loop + + CALLA START_FLASHES + + rets + + +#***************************************************************************** + .end + + + \ No newline at end of file diff --git a/BACKUP/DAMAGE.EQU b/BACKUP/DAMAGE.EQU new file mode 100644 index 0000000..4979b32 --- /dev/null +++ b/BACKUP/DAMAGE.EQU @@ -0,0 +1,150 @@ +****************************************************************************** +* +* Damage values for attacks. +* + +;Separate into doink moves, etc. + +;MJT Start +D_PUNCH .equ 12 +D_HDBUTT .equ 12 +D_KICK .equ 14 +D_FLYKICK .equ 32 +D_GRABTHROW .equ 0 +D_UPRCUT .equ 22 +D_LBDROP .equ 17 +D_GRBHOLD .equ 0 +D_GRBFLNG .equ 0 +D_PUSH .equ 0 +D_BIGBOOT .equ 15 +D_KNEE .equ 12 +D_GRAPPLE .equ 0 +D_BOXPUNCH .equ 20 +D_STOMP .equ 9 +D_SPINKIK .equ 28 +D_CLINE .equ 32 +D_HEDHOLD .equ 0 +D_JUMPKICK .equ 27 +D_RUN .equ 0 +D_PUPPET .equ 0 +D_BCKHAND .equ 26 +D_BUZZ .equ 25 +D_HAYMAKER .equ 26 +D_BLBDROP .equ 20 +D_BSTOMP .equ 17 +D_HDKNEES .equ 12 +D_EARSLAP1 .equ 21 +D_EARSLAP2 .equ 6 +D_HAMMER1 .equ 15 +D_HAMMER2 .equ 4 +D_BUTTSTOMP .equ 30 +D_ATT31 .equ 0 +D_ATT32 .equ 0 +D_ATT33 .equ 0 +D_TOMB .equ 18 +D_BIGKNEE .equ 17 +D_FLPKIK .equ 0 +D_SPDKIK .equ 18 +D_SPDKIK2 .equ 32 +D_HITCK .equ 0 +D_ARMBRK .equ 17 +D_ATT40 .equ 0 +D_ATT41 .equ 0 +D_ATT42 .equ 0 +D_ATT43 .equ 0 +D_HDBUTT_STAY .equ 7 + +;Puppet move damage values: +;These are used in the sequences +;EX: ANI_DAMAGEOPP,BSLAM + +D_HAIR_PICKUP .equ 0 +D_BSLAM .equ 20 +D_GSUPLEX .equ 25 +D_FSTEIN .equ 30 +D_HIPTOSS .equ 15 +D_PILEDRIVER .equ 40 +D_FACESLAM1 .equ 28 +D_FACESLAM2 .equ 5 +D_BACKBRKR .equ 35 +D_POGO1 .equ 25 +D_POGO2 .equ 11 +D_KICKTOSS .equ 22 +D_NECKBRKR .equ 30 +D_NECKSLAM .equ 32 +D_RUGSLAM .equ 10 +D_HITCONCRETE .equ 10 +D_FLIPSLAM .equ 20 +;MJT End + + + + + + + +****************************************************************************** +* +* ATTACK TYPES (USED FOR DRONE STUFF) + + +AT_PUNCH .equ 0 +AT_HDBUTT .equ 1 +AT_KICK .equ 2 +AT_FLYKICK .equ 3 +AT_GRABTHROW .equ 4 +AT_UPRCUT .equ 5 +AT_LBDROP .equ 6 +AT_GRBHOLD .equ 7 +AT_GRBFLNG .equ 8 +AT_PUSH .equ 9 +AT_BIGBOOT .equ 10 +AT_KNEE .equ 11 +AT_GRAPPLE .equ 12 +AT_BOXPUNCH .equ 13 +AT_STOMP .equ 14 +AT_SPINKIK .equ 15 +AT_CLINE .equ 16 +AT_HEDHOLD .equ 17 +AT_JUMPKICK .equ 18 +AT_RUN .equ 19 +AT_PUPPET .equ 20 +AT_BCKHAND .equ 21 +AT_BUZZ .equ 22 +AT_HAYMAKER .equ 23 +AT_BLBDROP .equ 24 +AT_BSTOMP .equ 25 +AT_HDKNEES .equ 26 +AT_EARSLAP1 .equ 27 +AT_EARSLAP2 .equ 28 +AT_HAMMER1 .equ 29 +AT_HAMMER2 .equ 30 +AT_BUTTSTOMP .equ 31 +AT_TOMB .equ 35 +AT_BIGKNEE .equ 36 +AT_FLPKIK .equ 37 +AT_SPDKIK .equ 38 +AT_SPDKIK2 .equ 39 +AT_HITCK .equ 40 +AT_ARMBRK .equ 41 +AT_HDBUTT_STAY .equ 42 +AT_HAIR_PICKUP .equ 43 +AT_BSLAM .equ 44 +AT_GSUPLEX .equ 45 +AT_FSTEIN .equ 46 +AT_HIPTOSS .equ 47 +AT_PILEDRIVER .equ 48 +AT_FACESLAM1 .equ 49 +AT_FACESLAM2 .equ 50 +AT_BACKBRKR .equ 51 +AT_POGO1 .equ 52 +AT_POGO2 .equ 53 +AT_KICKTOSS .equ 54 +AT_NECKBRKR .equ 55 +AT_NECKSLAM .equ 56 +;MJT Start +AT_LEAPING .equ 57 +;MJT End + +****************************************************************************** + \ No newline at end of file diff --git a/BACKUP/DCSSOUND.ASM b/BACKUP/DCSSOUND.ASM new file mode 100644 index 0000000..0a0eee3 --- /dev/null +++ b/BACKUP/DCSSOUND.ASM @@ -0,0 +1,3312 @@ +************************************************************** +* +* Software: Ed Boon +* Initiated: ? +* +* Modified: Jason Skiles, 23 Nov 93 - WWF conversion +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 1/10/94 12:02 +************************************************************** + + .file "dcssound.asm" + .title "sound processor" + .width 132 + .option b,d,l,t + .mnolist + + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "audit.equ" + .include "macros.h" + .include "display.equ" + .INCLUDE "GSP.EQU" + .INCLUDE "SOUND.equ" + + .text +;************************************************************************** +;* * +;* OK people, there are several ready made speech call routines for * +;* you to use. I'll go through them, with where you should call them * +;* from and what they are for. * +;* vvvvvv All These to be called from scripts VVVVVVVV * +;* CALL_MISSES - If you attempt to do something and miss, * +;* E.g. head grab.... * +;* CALL_SPECIAL_MOVE - For the 5 dollar moves, the pile drivers etc * +;* CALL_ANI_AVERAGE_MOVE - For the Average moves that are fairly easy to * +;* fire off. E.g. Back hand slap, Shawns spin kick * +;* DO_REVERSAL - When a move is reversed against the opponent * +;* CALL_MISS_YOKO - For use when you try to do a move against YOKO and f * +;* CALL_THROWN_OUT - Been chucked out of the ring * +;* CALL_OTHER_AVERAGE - Another Average move speech call, to provide vari * +;* CALL_NASTY_MOVE - When you do something against the rules, * +;* E.g. Doink buzzer, Doink Hammer, Shawn arm break * +;* CALL_SETUP - Set up for a better move, E.g. Head grab, Picking up over * +;* * +;* vvvvvv All these calls come from the REACT subroutines VVVVV * +;* CALL_FACE_HIT - Any thing that *JUST* hits the face Eg. Head butts * +;* CALL_MID_HIT - Any thing that *JUST* hits the midsection * +;* CALL_DROP_KICK - For any move that results in both wrestlers * +;* hitting the ground. * +;* * +;************************************************************************** + + + .DEF CALL_ANI_AVERAGE_MOVE + + .def SNDSND, SET_LOWER_VOL, FADE_MASTER_VOL + .DEF CALL_NASTY_MOVE + + .DEF CALL_MISS_YOKO, CLEAR_SPEECH_REPEAT + + .DEF CALL_OTHER_AVERAGE + + .DEF ADD_VOICE, RESET_VOICE_QUEUE + .DEF ANNOUNCE_VOICE + .DEF IF_SILENT_ADD_VOICE + BSSX DONE_HOWARD,16 + .DEF VINCE_START_GAME + .DEF nosounds + .def WALK_SOUND + .DEF SMALL_RUN + .REF RNDPER + .DEF ADD_TO_QUEUE + .DEF ADD_IF_SILENT + .DEF CLIMB_ROPES + .DEF JUMP_ROPES + .DEF CALL_DROP_KICK + .DEF DO_REVERSAL,CALL_THROWN_OUT + .DEF CALL_FACE_HIT,CALL_MID_HIT + .DEF CALL_MISSES,CALL_SETUP + .DEF CALL_MATCH_OVER,CALL_AVERAGE_MOVE + .DEF CALL_SPECIAL_MOVE + .DEF HIT_THE_MAT + .def SMALL_BOUNCE + .DEF VINCE_START_ROUND2_3 + .REF index1,index2,process_ptrs,NUM_OPPS,PSTATUS + .REF total_matches + + ;for various files + .def DEFAULT_SOUND_TABLE,MASTER_SOUND_TABLE + + ;from AUDIT.ASM + .ref PUT_ADJ,GET_ADJ,F_ADC_S + + ;from UTIL.ASM + .ref RNDRNG0 + + ;from WRESTLE.ASM + .ref GAMSTATE + + .ref crowd_cheer + .REF get_health + + .ref _coin_addr + .ref _sound_addr + .ref _soundirq_addr + .ref _coin_counter_addr + +send .set >0001 ; script command --> send sound code +setpri .set >0002 ; script command --> set priority +endtune .set >0003 ; script command --> end of tune script +sleep .set >0004 ; script command --> sleep next byte +send2 .set >0005 + + +sndpri .set 0 ; priority offset +snddur .set 10h ; duration offset +sndscp .set 20h ; script pointer offset + +ex .set >8000 ; flag: extended sound call !! + + .bss chan1ram,0,1 + BSSX chan1pri,16,1 ; sound channel #1 priority + BSSX chan1dur,16,1 ; sound channel #1 duration (timer) + .bss chan1scp,32,1 ; sound channel #1 script pointer + BSSX chan1snd,16,1 ; sound channel #1 current sound + + BSSX chan2pri,16,1 ; sound channel #2 priority + BSSX chan2dur,16,1 ; sound channel #2 duration (timer) + .bss chan2scp,32,1 ; sound channel #2 script pointer + BSSX chan2snd,16,1 ; sound channel #2 current sound + + BSSX chan3pri,16,1 ; sound channel #3 priority + BSSX chan3dur,16,1 ; sound channel #3 duration (timer) + .bss chan3scp,32,1 ; sound channel #3 script pointer + BSSX chan3snd,16,1 ; sound channel #3 current sound + + BSSX chan4pri,16,1 ; sound channel #4 priority + BSSX chan4dur,16,1 ; sound channel #4 duration (timer) + .bss chan4scp,32,1 ; sound channel #4 script pointer + BSSX chan4snd,16,1 ; sound channel #4 current sound + + BSSX vincechan,16,1 ; channel vince is on, if any + BSSX vincedur,16,1 ; vince duration + + BSSX randychan,16,1 ; channel randy is on, if any + BSSX randydur,16,1 ; randy duration + + BSSX howardchan,16,1 ; channel howard is on, if any + BSSX howarddur,16,1 ; howard duration + + BSSX SOUNDSUP,16,1 ; SOUND ENABLED FLAG + .BSS LAST_VOICE,64 ;LAST SPEECH CALL MADE + .BSS WHICH_LAST_VOICE,32 + BSSX REPEAT_STATE,16 + + bssx ANNOUNCE_QUEUE,32*20 + .BSS EOF_ANNOUNCE_QUEUE,0 + BSSX NEXT_ANN_QUEUE,32 + BSSX CURRENT_ANN_QUEUE,32 + + +************************************************************************** +* * +* Sound type priorities +* * +************************************************************************** + +;all new priorities. whee. +sp_woosh equ 4 << 8 ; attack whoosh +sp_attkv equ 8 << 8 ; attack grunt +sp_mat1 equ 12 << 8 ; mat noises +sp_mat2 equ 16 << 8 ; mat noises +sp_reacv equ 16 << 8 ; react grunt +sp_smack equ 20 << 8 ; smack +sp_wspch equ 24 << 8 ; wrestler speech +sp_anncer equ 100 << 8 ; announcer speech +sp_system1 equ 36 << 8 ; system stuff +sp_system2 equ 40 << 8 ; system stuff + + +************************************************************************** +* * +* TRIPLE SOUND TABLE format: * +* * +* .word >aaaa,>bbbb * +* * +* where: aaaa = priority / duration * +* bbbb = channel 1 sound call * +* * +************************************************************************** + +triple_sndtab + .word 0,0 ; 0 = + .word sp_smack|17,>80 ; 1 = face hit #0 + .word sp_smack|14,>84 ; 2 = face hit #1 + .word sp_system2|90,1480 ; 3 = combo earned sound + .word sp_smack|15,>88 ; 4 = body hit #0 + .word sp_smack|17,>8c ; 5 = body hit #1 + .word sp_attkv|15,>90 ; 6 = kick #0 + .word sp_attkv|13,>94 ; 7 = kick #1 + .word sp_attkv|15,>98 ; 8 = kick #2 + + .word sp_mat1|13,156 ; 9 = fall to mat #0 + .word sp_wspch|70,460 ; a = clock tick + .word sp_mat1|62,412 ; b = mat crash #0 + .word sp_mat1|53,416 ; c = mat rattle #0 + .word sp_mat1|39,424 ; d = mat rattle #2 + + .word sp_woosh|21,>a8 ; e = whoosh #0 + .word sp_woosh|20,>ac ; f = whoosh #1 + .word sp_woosh|21,>b0 ; 10 = whoosh #2 + .word sp_woosh|13,>b4 ; 11 = whoosh #3 + .word sp_woosh|12,>b8 ; 12 = whoosh #4 + .word sp_woosh|10,>bc ; 13 = whoosh #5 + .word sp_woosh|13,>c0 ; 14 = whoosh #6 + .word sp_woosh|15,>c4 ; 15 = whoosh #7 + .word sp_woosh|14,>c8 ; 16 = whoosh #8 + .word sp_woosh|11,>cc ; 17 = whoosh #9 + + .word sp_smack|20,>d0 ; 18 = hard hit #0 + .word sp_smack|11,>d4 ; 19 = hard hit #1 + .word sp_smack|21,>d8 ; 1a = hard hit #2 + .word sp_smack|24,>dc ; 1b = hard hit #3 + .word sp_smack|20,>e0 ; 1c = hard hit #4 + + .word sp_attkv|32,>e4 ; 1d = long effort grunt #0 + .word sp_attkv|40,>e8 ; 1e = long effort grunt #1 + .word sp_attkv|29,>ec ; 1f = long effort grunt #2 + .word sp_attkv|42,>f0 ; 20 = long effort grunt #3 + .word sp_attkv|36,>f4 ; 21 = long effort grunt #4 + .word sp_attkv|26,>f8 ; 22 = long effort grunt #5 + .word sp_attkv|31,>fc ; 23 = long effort grunt #6 + .word sp_attkv|34,>100 ; 24 = long effort grunt #7 + .word sp_attkv|33,>104 ; 25 = long effort grunt #8 + .word sp_attkv|30,>108 ; 26 = long effort grunt #9 + .word sp_attkv|29,>10c ; 27 = long effort grunt #10 + .word sp_attkv|28,>110 ; 28 = long effort grunt #11 + .word sp_attkv|42,>114 ; 29 = long effort grunt #12 + + .word sp_attkv|19,>118 ; 2a = short effort grunt #0 + .word sp_attkv|23,>11c ; 2b = short effort grunt #1 + .word sp_attkv|24,>120 ; 2c = short effort grunt #2 + .word sp_attkv|13,>124 ; 2d = short effort grunt #3 + .word sp_attkv|16,>128 ; 2e = short effort grunt #4 + .word sp_attkv|26,>12c ; 2f = short effort grunt #5 + .word sp_attkv|20,>130 ; 30 = short effort grunt #6 + .word sp_attkv|22,>134 ; 31 = short effort grunt #7 + .word sp_attkv|23,>138 ; 32 = short effort grunt #8 + .word sp_smack|35,>530 ; 33 = bones breaking #0 + .word sp_smack|39,>534 ; 34 = bones breaking #1 + .word sp_smack|33,>538 ; 35 = bones breaking #2 + .word sp_smack|54,>53c ; 36 = bones breaking #3 + .word sp_smack|34,>540 ; 37 = bones breaking #4 + .word sp_smack|33,>544 ; 38 = bones breaking #5 + .word sp_smack|42,>548 ; 39 = bones breaking #6 + .word sp_smack|44,>54c ; 3a = bones breaking #7 + .word sp_smack|28,>550 ; 3b = bones breaking #8 + .word sp_attkv|85,1292 ; 3c = plywood crash #3 + .word sp_attkv|62,408 ; 3d = ring mat crash #0 + .word sp_smack|149,1448 ; 3E = doink joy buzzer + .word sp_attkv|67,1452 ; 3f = doink water spray + .word sp_attkv|21,176 ; 40 = urn materialisation + .word sp_attkv|21,176 ; 41 = Bam Bam rising in flames + .word sp_attkv|185,904 ; 42 = Bam Bam taunt + .word sp_smack|70,1436 ; 43 = doink big glove slap + .word sp_smack|84,1440 ; 44 = doink big foot hit + .word sp_smack|80,1444 ; 45 = doink big hammer hit + .word sp_attkv|11,428 ; 46 = footsteps on mat #0 + .word sp_attkv|15,432 ; 47 = footsteps on mat #1 + .word sp_anncer|131,1376 ; 48 = COIN IN SOUNDS + + .word sp_anncer|53,1512 ; 49 = buy in sound + .word sp_woosh|19,1556 ; 4a = flashbulb #0 + .word sp_woosh|32,1560 ; 4b = flashbulb #1 + .word sp_woosh|40,1564 ; 4c = flashbulb #2 + .word sp_smack|35,1568 ; 4d = flash the "W" after a victory + .word 0,0 ; 4e + .word 0,0 ; 4f + + ;DOINK SPEECH + .word sp_wspch|53,>20c ; 50 = wait a minute, wait a minute + .word sp_wspch|29,>210 ; 51 = time out + .word sp_wspch|40,>214 ; 52 = chokes #0 + .word sp_wspch|23,>218 ; 53 = times + .word sp_wspch|39,>21c ; 54 = wait, wait + .word sp_wspch|79,>220 ; 55 = laugh #0 + .word sp_wspch|140,>224 ; 56 = laugh #1 + .word sp_wspch|42,>228 ; 57 = laugh #2 + .word sp_wspch|123,>22c ; 58 = laugh #3 + .word sp_wspch|91,>230 ; 59 = yell as tossed + + ;RAZOR SPEECH + .word sp_wspch|94,>300 ; 5a = you picked the right guy + .word sp_wspch|69,>304 ; 5b = check me out, maing... + .word sp_wspch|81,>308 ; 5c = Razor...Ramon! + .word 0,0 ; 5d + .word 0,0 ; 5e + .word 0,0 ; 5f + + ;SHAWN SPEECH + .word sp_wspch|269,>280 ; 60 = lucky you...breaking bones + .word sp_wspch|130,>284 ; 61 = wrestler o' 90's + .word sp_wspch|132,>288 ; 62 = how could...hurt so bad + .word sp_wspch|26,>28c ; 63 = no no + .word sp_wspch|21,>290 ; 64 = please + + ;BAM BAM SPEECH + .word sp_wspch|75,>290 ; 65 = deadly choice + .word sp_wspch|147,>290 ; 66 = the beast from the east + .word sp_wspch|185,>290 ; 67 = bam bam - bam bam - yeah! + .word sp_wspch|162,>290 ; 68 = bam bam bigelow + .word sp_wspch|160,>290 ; 69 = burn, baby, burn! + .word sp_wspch|24,>290 ; 6a = hey! #0 + .word sp_wspch|23,>290 ; 6b = no no + .word sp_wspch|18,>290 ; 6c = no + .word sp_wspch|20,>290 ; 6d = hey! #1 + .word sp_wspch|36,>290 ; 6e = no no no + .word sp_wspch|103,>290 ; 6f = get out of my ring + + + .word sp_reacv|34,>458 ; 70 = DOINK pain #0 + .word sp_reacv|30,>45c ; 71 = DOINK pain #1 + .word sp_reacv|40,>460 ; 72 = DOINK pain #2 + + .word sp_reacv|42,>464 ; 73 = DOINK gut hit #0 + .word sp_reacv|40,>468 ; 74 = DOINK gut hit #1 + .word sp_reacv|18,>46c ; 75 = DOINK gut hit #2 + + .word sp_reacv|16,>470 ; 76 = RAZOR pain #0 + .word sp_reacv|12,>474 ; 77 = RAZOR pain #1 + .word sp_reacv|25,>478 ; 78 = RAZOR pain #2 + + .word sp_reacv|24,>47c ; 79 = RAZOR generic grunt #0 + .word sp_reacv|16,>480 ; 7a = RAZOR generic grunt #1 + .word sp_reacv|21,>484 ; 7b = RAZOR generic grunt #2 + + .word sp_reacv|29,>488 ; 7c = RAZOR gut hit #0 + .word sp_reacv|38,>48c ; 7d = RAZOR gut hit #1 + .word sp_reacv|42,>490 ; 7e = RAZOR gut hit #2 + + .word sp_reacv|32,>31e ; 7f = RAZOR choke #0 (more voice) + .word sp_reacv|17,>321 ; 80 = RAZOR choke #0 (more air) + .word sp_reacv|97,>324 ; 81 = RAZOR lift & throw something + + .word sp_wspch|62,1196 ; 82 = BAM BAM effort #1 + + .word sp_reacv|48,>40f ; 83 = JASON effort grunt #0 + .word sp_reacv|36,>412 ; 84 = JASON effort grunt #1 + .word sp_reacv|39,>415 ; 85 = JASON effort grunt #2 + .word sp_reacv|31,>418 ; 86 = JASON effort grunt #3 + .word sp_reacv|31,>41b ; 87 = JASON effort grunt #4 + .word sp_reacv|39,>41e ; 88 = JASON effort grunt #5 + .word sp_reacv|40,>421 ; 89 = JASON effort grunt #6 + .word sp_reacv|34,>424 ; 8a = JASON effort grunt #7 + .word sp_reacv|27,>427 ; 8b = JASON effort grunt #8 + .word sp_reacv|35,>42a ; 8c = CG effort grunt #0 + .word sp_reacv|44,>42d ; 8d = CG effort grunt #1 + .word sp_reacv|35,>430 ; 8e = CG effort grunt #2 + .word sp_reacv|36,>433 ; 8f = CG effort grunt #3 + .word sp_reacv|36,>433 ; 90 = CG effort grunt #4 + .word sp_reacv|25,>436 ; 91 = CG effort grunt #5 + .word sp_reacv|34,>439 ; 92 = CG effort grunt #6 + .word sp_reacv|49,>43c ; 93 = CG effort grunt #7 + .word sp_reacv|57,>43f ; 94 = CG effort grunt #8 + .word sp_reacv|31,>400 ; 95 = SAL pain grunt #0 + .word sp_reacv|53,>403 ; 96 = SAL pain grunt #1 + .word sp_reacv|82,>409 ; 97 = SAL pain grunt #2 + .word sp_reacv|37,>40c ; 98 = SAL pain grunt #3 + .word 0,0 ; 99 + .word 0,0 ; 9a + .word 0,0 ; 9b + .word 0,0 ; 9c + .word 0,0 ; 9d + .word 0,0 ; 9e + .word 0,0 ; 9f + .word 0,0 ; a0 + .word 0,0 ; a1 + .word 0,0 ; a2 + .word 0,0 ; a3 + .word 0,0 ; a4 + .word 0,0 ; a5 + .word 0,0 ; a6 + .word 0,0 ; a7 + .word 0,0 ; a8 + .word 0,0 ; a9 + .word 0,0 ; aa + .word sp_reacv|72,>4D4 ; ab = BAMBAM morph out of mat + .word sp_reacv|40,>15C ; ac = CARTOON bong #2 + .word sp_reacv|58,>170 ; ad = CARTOON crash/bong #0 + .word sp_reacv|33,1220 ; ae = SHAWN pain #1 + .word sp_reacv|33,1224 ; af = SHAWN gut hit #0 + + ;MISCELLANEOUS SOUNDS + .word sp_mat1|29,>315 ; b0 = some blip sound + .word sp_system1|90,0148h ; b1 = round start bell + .word sp_smack|19,>160 ; b2 = squeeze horn honk #0 + .word sp_smack|75,014fh ; b3 = twist - slam + .word sp_mat1|46,344 ; b4 = bong (temp!) + .word sp_mat1|15,>1b2 ; b5 = footstep on mat #1 + + .word sp_system1|34,>178 ; b6 = Quick whistle for transitions + + .word sp_system1|9,1364 ; b7 = timer tick #0 + .word sp_system1|11,1368 ; b8 = timer tock #0 + .word sp_attkv|84,1484 ; b9 = danger sound + .word sp_attkv|102,1488 ; ba = combo performed + .word sp_system1|125,1520 ; bb = reversal_sound + + .word sp_mat1|46,>152 ; bc = bong! (timer?) + .word sp_mat1|42,>164 ; bd = ricochet bonk + .word sp_mat1|51,>17c ; be = wobble (danger!) + .word sp_mat1|51|75,>500 ; bf = Plywood crash #0 + .word sp_mat1|39,316 ; c0 = fall to mat #0 + .word sp_mat2|77,>508 ; c1 = Plywood crash #2 + .word sp_mat1|26,320 ; c2 = fall to mat #1 + .word sp_mat2|83,>510 ; c3 = Plywood crash #4 + .word sp_smack|101,>514 ; c4 = Chair crash #0 + .word sp_smack|101,>518 ; c5 = Chair crash #1 + .word sp_smack|90,>51c ; c6 = Chair crash #2 + .word sp_system1|9,1456 ; c7 = player 1 moves cursor #1 + .word sp_system1|9,1460 ; c8 = player 2 moves cursor #1 + .word sp_system1|10,1464 ; c9 = player 1 moves cursor #2 + .word sp_system1|9,1468 ; ca = player 2 moves cursor #2 + .word sp_system1|35,1504 ; cb = player 1 selects #1 + .word sp_system1|35,1508 ; cc = player 2 selects #1 + .word 0,0 ; cd + .word 0,0 ; ce + .word 0,0 ; cf + .word 0,0 ; d0 + .word 0,0 ; d1 + .word 0,0 ; d2 + .word 0,0 ; d3 + .word 0,0 ; d4 + .word 0,0 ; d5 + .word 0,0 ; d6 + .word 0,0 ; d7 + .word 0,0 ; d8 + .word 0,0 ; d9 + .word 0,0 ; da + .word 0,0 ; db + .word 0,0 ; dc + .word 0,0 ; dd + .word 0,0 ; de + .word 0,0 ; df + + ;ANNOUNCER SPEECH - must be contiguous +announcer_start + ;VINCE MCMAHON + .word sp_anncer|249,3072 ; e0 = VINCE greeting + .word sp_anncer|18,3076 ; e1 = VINCE ascending Doink #1 + .word sp_anncer|19,3080 ; e2 = VINCE ascending Doink #2 + .word sp_anncer|21,3084 ; e3 = VINCE ascending Doink #3 + .word sp_anncer|24,3088 ; e4 = VINCE ascending Doink #4 + + .word sp_anncer|26,3092 ; e5 = VINCE ascending Shawn #1 + .word sp_anncer|26,3096 ; e6 = VINCE ascending Shawn #2 + .word sp_anncer|28,3100 ; e7 = VINCE ascending Shawn #3 + .word sp_anncer|31,3104 ; e8 = VINCE ascending Shawn #4 + + .word sp_anncer|26,3108 ; e9 = VINCE ascending Razor #1 + .word sp_anncer|27,3112 ; ea = VINCE ascending Razor #2 + .word sp_anncer|30,3116 ; eb = VINCE ascending Razor #3 + .word sp_anncer|31,3120 ; ec = VINCE ascending Razor #4 + + .word sp_anncer|105,3124 ; ed = VINCE Unbeeleeevable! #0 + .word sp_anncer|66,3128 ; ee = VINCE Forget about it! + .word sp_anncer|48,3132 ; ef = VINCE Here's the setup... + .word sp_anncer|86,3136 ; f0 = VINCE aaaaannnnd OH! + .word sp_anncer|49,3140 ; f1 = VINCE Oh, my! + .word sp_anncer|61,3144 ; f2 = VINCE Congratulations + + .word sp_anncer|34,3148 ; f3 = VINCE ascending Undertaker #1 + .word sp_anncer|37,3152 ; f4 = VINCE ascending Undertaker #2 + .word sp_anncer|36,3156 ; f5 = VINCE ascending Undertaker #3 + .word sp_anncer|44,3160 ; f6 = VINCE ascending Undertaker #4 + + .word sp_anncer|32,3164 ; f7 = VINCE ascending Bam Bam #1 + .word sp_anncer|30,3168 ; f8 = VINCE ascending Bam Bam #2 + .word sp_anncer|32,3172 ; f9 = VINCE ascending Bam Bam #3 + .word sp_anncer|34,3176 ; fa = VINCE ascending Bam Bam #4 + + .word sp_anncer|22,3180 ; fb = VINCE ascending Luger #1 + .word sp_anncer|21,3184 ; fc = VINCE ascending Luger #2 + .word sp_anncer|21,3188 ; fd = VINCE ascending Luger #3 + .word sp_anncer|26,3192 ; fe = VINCE ascending Luger #4 + + .word sp_anncer|26,3196 ; ff = VINCE ascending Hitman #1 + .word sp_anncer|26,3200 ;100 = VINCE ascending Hitman #2 + .word sp_anncer|27,3204 ;101 = VINCE ascending Hitman #3 + .word sp_anncer|25,3208 ;102 = VINCE ascending Hitman #4 + + .word sp_anncer|27,3212 ;103 = VINCE ascending Yoko #1 + .word sp_anncer|26,3216 ;104 = VINCE ascending Yoko #2 + .word sp_anncer|30,3220 ;105 = VINCE ascending Yoko #3 + .word sp_anncer|32,3224 ;106 = VINCE ascending Yoko #4 + + .word sp_anncer|63,3228 ;107 = VINCE Here we go! + .word sp_anncer|93,3232 ;108 = VINCE What a matchup this is! + + ; VINCE Very impressive move by + .word sp_anncer|92,3236 ;109 = ...Doink! + .word sp_anncer|113,3240 ;10a = ...Shawn Michaels! + .word sp_anncer|108,3244 ;10b = ...Razor Ramon! + .word sp_anncer|113,3248 ;10c = ...the Undertaker! + .word sp_anncer|125,3252 ;10d = ...Bam Bam Bigelow! + .word sp_anncer|107,3256 ;10e = ...Lex Luger! + .word sp_anncer|110,3260 ;10f = ...Bret Hart! + .word sp_anncer|121,3264 ;110 = ...Yokozuna! +;LEAVE PLENTY OF SPACE FOR FUTURE SOUNDS + ;Tonites match up.... + .word sp_anncer|100,3412 ;111 = ...Doink! + .word sp_anncer|100,3416 ;112 = ...Shawn Michaels! + .word sp_anncer|99,3420 ;113 = ...Razor Ramon! + .word sp_anncer|127,3424 ;114 = ...Bam Bam Bigelow! + .word sp_anncer|105,3428 ;115 = ...the Undertaker! + .word sp_anncer|98,3432 ;116 = ...Lex Luger! + .word sp_anncer|121,3436 ;117 = ...Bret Hart! + .word sp_anncer|116,3440 ;118 = ...Yokozuna! + ;In the square circle tonite.. + .word sp_anncer|126,3444 ;119 =...Doink! + .word sp_anncer|126,3448 ;11a =...Shawn Michaels! + .word sp_anncer|125,3452 ;11b =...Razor Ramon! + .word sp_anncer|153,3456 ;11c =...Bam Bam Bigelow! + .word sp_anncer|131,3460 ;11d =...the Undertaker! + .word sp_anncer|124,3464 ;11e =...Lex Luger! + .word sp_anncer|147,3468 ;11f =...Bret Hart! + .word sp_anncer|142,3472 ;120 =...Yokozuna! + .word sp_anncer|82,3476 ;121 =versus Doink! + .word sp_anncer|83,3480 ;122 =versus Shawn Michaels! + .word sp_anncer|72,3484 ;123 =versus Razor Ramon! + .word sp_anncer|104,3488 ;124 =versus Bam Bam Bigelow! + .word sp_anncer|83,3492 ;125 =versus the Undertaker! + .word sp_anncer|75,3496 ;126 =versus Lex Luger! + .word sp_anncer|98,3500 ;127 =versus Bret Hart! + .word sp_anncer|87,3504 ;128 =versus Yokozuna! + .word sp_anncer|135,3360 ;129 =this is a complete disaster + .word sp_anncer|86,3356 ;12a =this is a debacle + .word sp_anncer|54,3640 ;12b =doink the clown + .word sp_anncer|55,3644 ;12c =shawn michaels + .word sp_anncer|44,3648 ;12d =razor ramon + .word sp_anncer|76,3652 ;12e =bam bam + .word sp_anncer|54,3656 ;12f =undertaker + .word sp_anncer|47,3660 ;130 =lex luger + .word sp_anncer|70,3664 ;131 =bret hart + .word sp_anncer|59,3668 ;132 =yoko + .word sp_anncer|28,3672 ;133 =and + .word sp_anncer|62,3228 ;134 =here we go + .word sp_anncer|93,3232 ;135 =what a matchup this is + .word sp_anncer|104,3628 ;136 =a capacity crowd here + .word sp_anncer|75,3528 ;137 =at wrestlemania + .word sp_anncer|73,3508 ;138 =who will be the victor ? + .word sp_anncer|73,3512 ;139 =its anybody's guess + .word sp_anncer|150,3516 ;13a =anything can happen here in wwf + .word sp_anncer|48,3532 ;13b =theres the bell + .word sp_anncer|73,3564 ;13c =he's going to the top rope + .word sp_anncer|75,3300 ;13d =he's going to the top + .word sp_anncer|52,3328 ;13e =here it comes + .word sp_anncer|57,3368 ;13f =boomshakalaka + .word sp_anncer|83,3380 ;140 =and.... #1 + .word sp_anncer|57,3384 ;141 =and.... #2 + .word sp_anncer|90,3388 ;142 =and.... #3 + .word sp_anncer|63,3556 ;143 =look at this + .word sp_anncer|69,3568 ;144 =off the top rope + .word sp_anncer|108,3396 ;145 =ooh (for kaboom) + .word sp_anncer|74,3400 ;146 =kaboom + .word sp_anncer|109,3392 ;147 =long oooh + .word sp_anncer|59,3316 ;148 =with authority + .word sp_anncer|97,3320 ;149 =oh my goodness #0 + .word sp_anncer|34,3324 ;14a =look out + .word sp_anncer|56,3332 ;14b =did you see that + .word sp_anncer|39,3336 ;14c =and..... #0 + .word sp_anncer|31,3340 ;14d =oh ! #0 + .word sp_anncer|68,3352 ;14e =oooh! #0 + .word sp_anncer|53,3364 ;14f =thats gotta hurt + .word sp_anncer|84,3372 ;150 =wow! #0 + .word sp_anncer|61,3376 ;151 =wow! #1 + .word sp_anncer|65,3404 ;152 =almost + .word sp_anncer|50,3536 ;153 =nicely done + .word sp_anncer|93,3540 ;154 =heaves him clear out of the ring + .word sp_anncer|48,3544 ;155 =nice escape + .word sp_anncer|64,3548 ;156 =nice execution + .word sp_anncer|82,3572 ;157 =oh that hurts #0 + .word sp_anncer|70,3576 ;158 =oh that hurts #1 + .word sp_anncer|31,3580 ;159 =a miss + .word sp_anncer|62,3584 ;15a =and misses + .word sp_anncer|56,3588 ;15b =into the ropes + .word sp_anncer|43,3592 ;15c =a quick reversal + .word sp_anncer|63,3596 ;15d =both men down + .word sp_anncer|51,3600 ;15e =this could be it + .word sp_anncer|53,3604 ;15f =no, wait a minute + .word sp_anncer|63,3608 ;160 =Unbeeleeevable! #1 + .word sp_anncer|92,3612 ;161 =Unbeeleeevable! #2 + .word sp_anncer|54,3616 ;162 =oh my goodness #1 + .word sp_anncer|99,3620 ;163 =oh my goodness #2 + .word sp_anncer|95,3624 ;164 =listen to the crowd + .word sp_anncer|71,3632 ;165 =did you hear that + .word sp_anncer|106,3636 ;166 =ive never seen anything like that + .word sp_anncer|86,3268 ;167 =give credit to doink + .word sp_anncer|110,3272 ;168 =give credit to shawn + .word sp_anncer|108,3276 ;169 =give credit to razor + .word sp_anncer|119,3280 ;16a =give credit to bam + .word sp_anncer|112,3284 ;16b =give credit to undertaker + .word sp_anncer|104,3288 ;16c =give credit to lex luger + .word sp_anncer|105,3292 ;16d =give credit to bret hart + .word sp_anncer|118,3296 ;16e =give credit to yoko + .word sp_anncer|90,3680 ;16f =not a good idea + .word sp_anncer|70,3684 ;170 =what was he thinking + .word sp_anncer|94,3688 ;171 =you cant get any closer than that + .word sp_anncer|120,3692 ;172 =now its doink coming back + .word sp_anncer|120,3696 ;173 =now its shawn michaels coming back + .word sp_anncer|119,3700 ;174 =now its razor ramone coming back + .word sp_anncer|126,3704 ;175 =now its the undertaker coming back + .word sp_anncer|147,3708 ;176 =now its bam bam bigelow coming back + .word sp_anncer|118,3712 ;177 =now its lex luger coming back + .word sp_anncer|142,3716 ;178 =now its bret hart coming back + .word sp_anncer|136,3720 ;179 =now its yokozuna coming back + .word sp_anncer|112,3724 ;17a =whats keeping these guys up + .word sp_anncer|109,3728 ;17b =it looks like its all over + .word sp_anncer|101,3732 ;17c =its pandemonium out there + .word sp_anncer|130,3736 ;17d =its pandemonium in the ring + .word sp_anncer|39,3740 ;17e =whats this + .word sp_anncer|100,3744 ;17f =what a turn of events this is + .word sp_anncer|95,3748 ;180 =magnificent! + .word sp_anncer|80,3752 ;181 =can you believe that! + .word sp_anncer|88,3756 ;182 =rejected!! + .word sp_anncer|62,3760 ;183 =what a beating! + .word sp_anncer|40,3764 ;184 =to the face! + .word sp_anncer|54,3768 ;185 =to the midsection! + .word sp_anncer|44,3772 ;186 =and another! + .word sp_anncer|112,3776 ;187 =I wouldn't want to be on the receiving end of that! + .word sp_anncer|54,3780 ;188 =what power! + .word sp_anncer|72,3784 ;189 =what speed! + .word sp_anncer|67,3788 ;18a =what skill! + .word sp_anncer|67,3792 ;18b =what a blow! + .word sp_anncer|52,3796 ;18c =awesome... + .word sp_anncer|89,3800 ;18d =just awesome! + .word sp_anncer|82,3804 ;18e =good night! + .word sp_anncer|28,3808 ;18f =hello! + .word sp_anncer|120,3812 ;190 =it doesn't look good for Doink the Clown! + .word sp_anncer|121,3816 ;191 =it doesn't look good for Shawn Michaels! + .word sp_anncer|104,3820 ;192 =it doesn't look good for Razor Ramone! + .word sp_anncer|116,3824 ;193 =it doesn't look good for The Undertaker! + .word sp_anncer|142,3828 ;194 =it doesn't look good for Bam Bam Bigelow! + .word sp_anncer|107,3832 ;195 =it doesn't look good for Lex Luger! + .word sp_anncer|134,3836 ;196 =it doesn't look good for Bret the Hitman Hart! + .word sp_anncer|121,3840 ;197 =it doesn't look good for Yokozuna! + .word sp_anncer|74,3844 ;198 =can anybody stop him!? + .word sp_anncer|19,3848 ;199 =what -- + .word sp_anncer|28,3852 ;19a =What the -- + .word sp_anncer|34,3856 ;19b =Wait a minute -- + .word sp_anncer|49,3860 ;19c =He can't do that + .word sp_anncer|42,3864 ;19d =Is that legal? + .word sp_anncer|66,3868 ;19e =Now that was cheap! + .word sp_anncer|62,3872 ;19f =That's not very fair! + .word sp_anncer|70,3876 ;1A0 =Somebody call security! + .word sp_anncer|66,3880 ;1A1 =That wasn't very nice! + .word sp_anncer|64,3884 ;1A2 =I can't watch this! + .word sp_anncer|87,3888 ;1A3 =Most impressive! + .word sp_anncer|130,3892 ;1A4 =incredible combination move! + .word sp_anncer|25,3896 ;1A5 =No!! + .word sp_anncer|28,3900 ;1A6 =Yess!! + .word sp_anncer|74,3904 ;1A7 =High-Risk Manuever -- + .word sp_anncer|75,3908 ;1A8 =What a slam! + .word sp_anncer|106,3912 ;1A9 =it's a donnybrook + .word sp_anncer|124,3916 ;1Aa =he's just gone berserk + .word sp_anncer|56,3920 ;1Ab =the joybuzzer + .word sp_anncer|64,3924 ;1Ac =shocking + .word sp_anncer|110,3928 ;1Ad =can you believe what you've just seen? + .word sp_anncer|44,3932 ;1Ae =he's got him + .word sp_anncer|55,3936 ;1Af =a cross-body! + .word sp_anncer|61,3940 ;1B0 =suplex! + .word sp_anncer|46,3944 ;1B1 =neck-breaker! + .word sp_anncer|87,3948 ;1B2 =the tombstone piledriver! + .word sp_anncer|72,3952 ;1B3 =he's got him in a sharpshooter! + .word sp_anncer|52,3956 ;1B4 =Banzai Drop! + .word sp_anncer|55,3960 ;1B5 =the Razor's edge! + .word sp_anncer|53,3964 ;1B6 =Back Suplex! + .word sp_anncer|49,3968 ;1B7 =Savate Kick! + .word sp_anncer|78,3972 ;1B8 =The Awesome Forearm! + .word sp_anncer|76,3976 ;1B9 =Flying Head Butt! + .word sp_anncer|136,3980 ;1Ba =Somehow I don't think this grudge will end here + .word sp_anncer|80,3984 ;1Bb =Sign here please + .word sp_anncer|67,3988 ;1Bc =good night! + .word sp_anncer|0,0 ;1Bd + .word sp_anncer|0,0 ;1Be + .word sp_anncer|0,0 ;1Bf + .word sp_anncer|0,0 ;1C0 + .word sp_anncer|0,0 ;1C1 + .word sp_anncer|0,0 ;1C2 + .word sp_anncer|0,0 ;1C3 + .word sp_anncer|0,0 ;1C4 + .word sp_anncer|0,0 ;1C5 + .word sp_anncer|0,0 ;1C6 + .word sp_anncer|0,0 ;1C7 + .word sp_anncer|0,0 ;1C8 + .word sp_anncer|0,0 ;1C9 + .word sp_anncer|0,0 ;1Ca + .word sp_anncer|0,0 ;1Cb + .word sp_anncer|0,0 ;1Cc + .word sp_anncer|0,0 ;1Cd + .word sp_anncer|0,0 ;1Ce + .word sp_anncer|0,0 ;1Cf +vince_end ;end of vince speech section + ;RANDY SAVAGE + .word sp_anncer|73,6144 ;1D0 =nicely done + .word sp_anncer|152,6148 ;1D1 =taste of his own medicine + .word sp_anncer|52,6152 ;1D2 =look at this + .word sp_anncer|99,6156 ;1D3 =right to the kisser + .word sp_anncer|93,6160 ;1D4 =that was dumb + .word sp_anncer|89,6164 ;1D5 =that was ugly + .word sp_anncer|71,6168 ;1D6 =did you see that + .word sp_anncer|130,6172 ;1D7 =ive never seen anything like that + .word sp_anncer|77,6176 ;1D8 =oh yeah + .word sp_anncer|59,6180 ;1D9 =this could be it + .word sp_anncer|75,6184 ;1Da =no, wait a minute + .word sp_anncer|128,6188 ;1Db =what a move by Shawn Michaels + .word sp_anncer|79,6192 ;1Dc =what a move by Doink + .word sp_anncer|144,6196 ;1Dd =what a move by Razor Ramone + .word sp_anncer|146,6200 ;1De =what a move by the Undertaker + .word sp_anncer|111,6204 ;1Df =what a move by Bam Bam + .word sp_anncer|91,6208 ;1E0 =what a move by Lex + .word sp_anncer|124,6212 ;1E1 =what a move by the Hitman + .word sp_anncer|139,6216 ;1E2 =what a move by Yokozuna + .word sp_anncer|85,6220 ;1E3 =That'll cost him + .word sp_anncer|116,6224 ;1E4 =Rejected + .word sp_anncer|59,6228 ;1E5 =That's gotta hurt + .word sp_anncer|133,6232 ;1E6 =Game over + .word sp_anncer|86,6236 ;1E7 =What power + .word sp_anncer|85,6240 ;1E8 =What speed + .word sp_anncer|105,6244 ;1E9 =What agility + .word sp_anncer|67,6248 ;1Ea =awesome + .word sp_anncer|95,6252 ;1Eb =goodnight + .word sp_anncer|30,6256 ;1Ec =hello + .word sp_anncer|72,6260 ;1Ed =What's going on? + .word sp_anncer|65,6264 ;1Ee =He can't do that + .word sp_anncer|64,6268 ;1Ef =That was cheap + .word sp_anncer|111,6272 ;1F0 =Somebody call security + .word sp_anncer|108,6276 ;1F1 =That wasn't very nice + .word sp_anncer|80,6280 ;1F2 =I can't watch + .word sp_anncer|82,6284 ;1F3 =Incredible + .word sp_anncer|96,6288 ;1F4 =This could be trouble + .word sp_anncer|129,6292 ;1F5 =I think he broke it + .word sp_anncer|134,6296 ;1F6 =Nobody gets up from that + .word sp_anncer|51,6300 ;1F7 =Dig it + .word sp_anncer|122,6304 ;1F8 =Oooo Vicious + .word sp_anncer|0,0 ;1F9 + .word sp_anncer|0,0 ;1Fa +randy_end ;end of randy speech section + ;HOWARD FINKEL + .word sp_anncer|117,2560 ;1Fb =good evening ladies and gents + .word sp_anncer|130,2564 ;1Fc =my name is howard finkel + .word sp_anncer|226,2568 ;1Fd =and welcome to wrestlmainia by midway + .word sp_anncer|192,2576 ;1Fe =we have a winner + .word sp_anncer|188,2572 ;1Ff =this match is scheduled for 2 falls + +howards_end ;extremely dull british film - YOU SAID IT ! + .word sp_attkv|20,4500 ; 200 =DOINK takes a punch to the face + .word sp_attkv|26,4504 ; 201 =DOINK takes a head-butt + .word sp_attkv|27,4508 ; 202 =DOINK takes a special weapon to the face/head + .word sp_attkv|21,4512 ; 203 =DOINK takes a hit to the gut + .word sp_attkv|21,4516 ; 204 =DOINK takes a kick/knee to the gut + .word sp_attkv|33,4520 ; 205 =DOINK takes a gut hit (alternate) + .word sp_attkv|21,4524 ; 206 =DOINK short effort grunt before kick/punch #0 + .word sp_attkv|44,4536 ; 207 =DOINK medium effort grunt before lifting/reaching for something + .word sp_attkv|61,4540 ; 208 =DOINK long effort grunt before throwing something + .word sp_attkv|70,4544 ; 209 =DOINK long effort grunt before jumping from top rope maybe + .word sp_attkv|39,4548 ; 20a =DOINK short scream of pain #0 + .word sp_attkv|50,4552 ; 20b =DOINK short scream of pain #1 + .word sp_attkv|46,4556 ; 20c =DOINK medium scream of pain #0 + .word sp_attkv|63,4560 ; 20d =DOINK medium scream of pain #1 + .word sp_attkv|104,4564 ; 20e =DOINK long scream of pain #0 + .word sp_attkv|71,4568 ; 20f =DOINK JOYBUZZER: put'er there pal + .word sp_attkv|54,4572 ; 210 =DOINK JOYBUZZER: pleased to meet you + .word sp_attkv|66,4576 ; 211 =DOINK JOYBUZZER BLOCKED allllrighty then! + .word sp_attkv|70,4580 ; 212 =DOINK REVERSAL I don't think so! + .word sp_attkv|48,4584 ; 213 =DOINK REVERSAL O no you don't + .word sp_attkv|77,4588 ; 214 =DOINK 1st Fall victory (?) + .word sp_attkv|17,4592 ; 215 =DOINK Jarvis laugh for repeat punch #0 + .word sp_attkv|18,4596 ; 216 =DOINK Jarvis laugh for repeat punch #1 + .word sp_attkv|21,4600 ; 217 =DOINK Jarvis laugh for repeat punch #2 + .word sp_attkv|40,4604 ; 218 =DOINK Jarvis laugh for repeat punch #3 + .word sp_attkv|100,4608 ; 219 =DOINK nonono loop - endless + .word sp_attkv|100,4612 ; 21a =DOINK choking loop (endless) + + .WORD sp_attkv|21,4616 ;21b =DOINK short effort grunt #3 + .WORD sp_attkv|18,4620 ;21c =DOINK short effort grunt #4 + .WORD sp_attkv|48,4624 ;21d =DOINK double effort grunt #0 + .WORD sp_attkv|47,4628 ;21e =DOINK double effort grunt #1 + .WORD sp_attkv|52,4632 ;21f =DOINK double effort grunt #2 + .WORD sp_attkv|55,4636 ;220 =DOINK reaches out/down & grabs you #0 + .WORD sp_attkv|40,4640 ;221 =DOINK reaches out/down & grabs you #1 + .WORD sp_attkv|76,4644 ;222 =DOINK lifts you up #0 + .WORD sp_attkv|74,4648 ;223 =DOINK lifts you up #1 + .WORD sp_attkv|26,4652 ;224 =DOINK shakes you like a rug #0 + .WORD sp_attkv|25,4656 ;225 =DOINK shakes you like a rug #1 + .WORD sp_attkv|27,4660 ;226 =DOINK shakes you like a rug #2 + .WORD sp_attkv|17,4664 ;227 =DOINK pushes you #0 + .WORD sp_attkv|13,4668 ;228 =DOINK pushes you #1 + .WORD sp_attkv|67,4672 ;229 =DOINK jumps from the turnbuckle #0 + .WORD sp_attkv|68,4676 ;22a =DOINK jumps from the turnbuckle #1 + .WORD sp_attkv|29,4680 ;22b =DOINK takes a head butt #0 + .WORD sp_attkv|29,4684 ;22c =DOINK takes a hit to the gut #3 + .WORD sp_attkv|33,4688 ;22d =DOINK takes a hit to the gut #4 + .WORD sp_attkv|55,4692 ;22e =DOINK gets lifted up #0 + .WORD sp_attkv|59,4696 ;22f =DOINK gets lifted up #1 + .WORD sp_attkv|44,4700 ;230 =DOINK gets pushed #0 + .WORD sp_attkv|42,4704 ;231 =DOINK gets pushed #1 + .WORD sp_attkv|36,4708 ;232 =DOINK gets tossed #0 + .WORD sp_attkv|52,4712 ;233 =DOINK gets tossed #1 + .WORD sp_attkv|19,4528 ;234 =DOINK short effort grunt before kick/punch #1 + .WORD sp_attkv|16,4532 ;235 =DOINK short effort grunt before kick/punch #2 + + +triple_end ;end of triple sound tables + + +****************************************************************************** +* +* sound table format: each row contains the triple_sound_table indices of +* the four sound calls associated with a given move. the first two are the +* noises a wrestler makes when he throws the move, and the second two are +* the noises he makes when he's hit with the move. if the value is DEFLT, +* the value will be read from DEFAULT_SOUND_TABLE instead of the wrestler's +* custom table. +* + +DEFLT .equ 8000h + +DEFAULT_SOUND_TABLE + ; whsh grunt smak ouch + .word 0012h,0032h,1001h,002Dh ;punch + .word 0017h,0000h,001Bh,002Eh ;headbutt + .word 0011h,0032h,0018h,007Ch ;kick + .word 0011h,0079h,001Bh,0071h ;flykick + + .word 0000h,0028h,0000h,001Ah ;grabthrow + .word 0016h,002Ch,0001h,0072h ;uppercut + .word 0011h,0032h,0005h,0073h ;elbow drop + .word 0000h,0028h,0000h,0000h ;grabhold + + .word 0000h,0028h,0000h,001Ah ;grabfling + + .word 0000h,0079h,0000h,0026h ;push + .word 0000h,0028h,0000h,001ah ;hiptoss + .word 0017h,007Ah,0074h,0000h ;big boot + .word 0012h,0032h,001Bh,002Dh ;super punch + + .word 0000h,0079h ;turndive + .word 1002h,1003h ;rug slam + .word 0059h ;yellthrow + +MASTER_SOUND_TABLE +;Bret Hart 00 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT ;yellthrow + +;Razor Ramon 01 + .word DEFLT,0031h,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,0078h ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT ;yellthrow + +;Undertaker 02 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT ;yellthrow + +;Yokozuna 03 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT ;yellthrow + +;Shawn Michaels 04 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT ;yellthrow + +;Bam Bam Bigelow 05 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT ;yellthrow + +;Doink the Clown 06 + ; whsh grunt smak ouch + .word DEFLT,0206H,DEFLT,0200H ;punch + .word DEFLT,0206H,1000h,0201H ;headbutt + .word DEFLT,DEFLT,DEFLT,0204H ;kick + .word DEFLT,0207H,DEFLT,0202H ;flykick + + .word DEFLT,0207H,DEFLT,020CH ;grabthrow + .word DEFLT,0206H,DEFLT,0203H ;uppercut + .word DEFLT,0206H,DEFLT,020AH ;elbow drop + .word DEFLT,0207H,DEFLT,0219H ;grabhold + + .word DEFLT,0208H,DEFLT,020DH ;grabfling + .word DEFLT,0206H,DEFLT,0206H ;push + .word DEFLT,0084h,DEFLT,0207H ;hiptoss + .word DEFLT,0207H,DEFLT,020Bh ;big boot + + .word DEFLT,0206H,DEFLT,020CH ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT ;yellthrow + +;Adam Bomb 07 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT ;yellthrow + +;Lex Luger 08 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT ;yellthrow + +;Ref 09 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT ;yellthrow + +#***************************************************************************** +* +* Play a sound from the tables. +* >a0 = sound number (or'ed with 1000h for a random table) +* + + SUBR table_sound + + btst 12,a0 + jreq triple_sound + + ;it's a random sound + PUSH a2 + xori 1000h,a0 + X32 a0 + addi #random_sound_tables,a0 + move *a0,a2,L + move *a2+,a0,W + calla RNDRNG0 + X16 a0 + add a0,a2 + move *a2,a0,W + PULL a2 + jruc triple_sound + +#random_sound_tables + .long #doink_hdbutt_l ; 0 + .long #generic_punch_l ; 1 + .long #generic_rugslam_l ; 2 + .long #generic_rslam_impact_l ; 3 + .long #doink_rugslam_l ; 4 + .long #doink_rugslam_impact_l ; 5 + + +#doink_hdbutt_l + .word 3,1Bh,1Bh,1Bh,0B2h + +#generic_punch_l + .word 3,1h,2h,19h,1Bh + +#generic_rugslam_l + .word 5,072h,071h,07Ch,074h,0AEh,0AFh + +#generic_rslam_impact_l + .word 1,0C1h,0C3h + +#doink_rugslam_l + .word 5,072h,071h,07Ch,074h,0AEh,0AFh + +#doink_rugslam_impact_l + .word 5,0C1h,0C1h,0C3h,0C3h,0ACh,0ADh + + +****************************************************************************** +* * +* reset sound board * +* * +* this is a full reset, checksum dings and all. this is the same routine +* that was in the old (gspsnd) processor. (ed boon) +* +* NOTE: If any data are sent to the sound board within ~270msec of the +* reset signal, diagnostics will be skipped and there won't be any +* loud and annoying bongs. +* + + SUBR snd_reset + PUSH a0,a1 ;Need an extra reggie + + movi SNDRSTBIT|32,a0 + move @_coin_counter_addr,a1,L + move a0,*a1 + + movi 6000,a0 ;wait for it to catch + dsjs a0,$ + + movi 32,a0 + move @_coin_counter_addr,a1,L + move a0,*a1 + + PULL a0,a1 ; Restore the reggies + rets + + +****************************************************************************** +* +* quiet sound board reset +* +* Just like snd_reset, but without the diagnostic tests and consequent chimes. +* It also sets the volume to the CMOS level. +* +* NOTE: Don't CALLx this function, JSRP it. It SLEEPs. +* +* Trashes everything except the reggies which get saved by default when +* you sleep... + + SUBR QSNDRST + + + movi SNDRSTBIT|32,a0 + move @_coin_counter_addr,a1,L ; IS A1 SAFE? + move a0,*a1,W + + + movi 6000,a0 ;wait for it to catch + dsjs a0,$ + + movi 32,a0 + move @_coin_counter_addr,a1,L ; IS A1 SAFE? + move a0,*a1,W + + SLEEPK 2 + move @_sound_addr,a0,L + movb a14,*a0 + SLEEPK 4 + movi ADJVOLUME,a0 + calla GET_ADJ + callr set_volume + + RETP + +#***************************************************************************** +* Process that quietly resets the sound board, then dies. Useful when you +* don't feel like waiting for the reset to finish before you move on. + + SUBR qsndrst_proc + + JSRP QSNDRST + + DIE + +****************************************************************************** + + SUBR snd_play1 + rets + + +#***************************************************************************** +* Wrestlemania tune + + SUBR wmania_tune + + movi 11,a3 + callr SNDSND +#loop + SLEEP TSEC*8 + movi 14,a3 + callr SNDSND + SLEEP TSEC*8 + movi 13,a3 + callr SNDSND + jruc #loop + + +#***************************************************************************** +* Rings the match start bell a few times. (process) +* +* Note: This uses the channel_sound routine to conserve tracks. If, for +* whatever reason, these rings are spaced out by more than 89 ticks, +* (the duration of the bell sound), then this should NOT be done as +* it could result in other sound calls being truncated prematurely. +* + +bell_snd equ 0B1h + + STRUCTPD + WORD #BELL_CHANNEL ;UHW snd channel of bell + + SUBR ring_bell + + movi bell_snd,a0 + callr triple_sound + sra 16,a14 + move a14,*a13(#BELL_CHANNEL),W + + SLEEP TSEC/3 + + movi bell_snd,a0 + move *a13(#BELL_CHANNEL),a1,W + callr channel_sound + + SLEEP TSEC/3 + + movi bell_snd,a0 + move *a13(#BELL_CHANNEL),a1,W + callr channel_sound + + DIE + + +#***************************************************************************** +* Runs the speech call for a given wrestler, after waiting for channel 1 to +* clear. +* +*>a0=wrestler # + + SUBR select_speech + + X32 a0 + addi #wrestler_sounds,a0 + move *a0+,a8,W + jrz #done + move *a0,a9,W + + CREATE DELAYSND_PID,delay_code_a3 + +#done + rets + + + SUBRP delay_code_a3 + +#loop1 + ;if this is the only delay_code_a3 process, do the sound, wait out + ; the duration, then die. + + movi DELAYSND_PID,a0 + movi 0FFFFh,a1 + calla EXISTP + jrz #go + SLEEPK 1 + jruc #loop1 + +#go + move a8,a3 + callr send_code_a3 + +#loop2 + SLEEPK 1 + dsj a9,#loop2 + + DIE + + +#wrestler_sounds + .word 0000h,0 ;HART + .word 0300h,94 ;RAZOR + .word 0000h,0 ;TAKER + .word 0000h,0 ;YOKO + .word 0000h,0 ;SHAWN + .word 0000h,0 ;BAM BAM + .word 0200h,88 ;DOINK + .word 0000h,0 ;ADAM BOMB + .word 0000h,0 ;PERFECT + .word 0000h,0 ;LUGER +#wrestler_soundsX + + +#***************************************************************************** +* channel_sound +* +* like triple_sound, only you specify the channel it goes on, priorities +* notwithstanding. This isn't quite the same thing as SNDSND, tho, since +* chanXpri, chanXdur, and chanXsnd are updated. +* +* >a0 = sound call (index), >a1=channel (1-4) +* + + SUBR channel_sound + + PUSH a0,a1,a2,a3,a4 + + X32 a0 + addi triple_sndtab,a0 + move *a0,a2,W + andi 0ffh,a2 ;a2 = duration + move *a0+,a3,W + sra 8,a3 ;a3 = priority + move *a0,a4,W ;a4 = call (channel 1) + + dec a1 + jrz #chan1 + inc a4 + dec a1 + jrz #chan2 + inc a4 + dec a1 + jrz #chan3 + inc a4 + dec a1 + jrz #chan4 + + ;error! + .if DEBUG + LOCKUP + .endif + jruc #done +#chan1 + move a2,@chan1dur,W + move a3,@chan1pri,W + move a4,@chan1snd,W + jruc #send +#chan2 + move a2,@chan2dur,W + move a3,@chan2pri,W + move a4,@chan2snd,W + jruc #send +#chan3 + move a2,@chan3dur,W + move a3,@chan3pri,W + move a4,@chan3snd,W + jruc #send +#chan4 + move a2,@chan4dur,W + move a3,@chan4pri,W + move a4,@chan4snd,W +; jruc #send + +#send + move a4,a3 + callr send_code_a3 + +#done + PULL a0,a1,a2,a3,a4 + rets + +#***************************************************************************** +* announcer_sound +* +* Lots like triple_sound, except that it identifies the announcer who's +* talking, and if he's already saying something, the new call cuts off +* the old one. +* +* >a0 = sound call (index into triple_sound table) +* a10 = *wrestlerproc >a0 = sound call index (might be OR'ed with 8000h) +* + + SUBR wrtable_sound + + push a1,a4 + + ;undo the |W_LOOKUP if present + sll 32-15,a0 + srl 32-15,a0 + + move *a10(WRESTLERNUM),a1,W + movi MASTER_SOUND_TABLE-DEFAULT_SOUND_TABLE,a2 + mpyu a2,a1 + X16 a0 + add a0,a1 + addi MASTER_SOUND_TABLE,a1 + move *a1,a1,W + jrnn #okay + + ;oops. use the default table instead + addi DEFAULT_SOUND_TABLE,a0 + move *a0,a1,W +#okay + move a1,a0 + calla triple_sound + +#done + pull a1,a4 + rets + +#***************************************************************************** +* +* triple_sound - Make a sound call from the triple_sndtab sound table +* +* input: a0 = sound call offset into table +* output: a14 = [channel,duration] of call. (0 if not played) +* + + SUBR triple_sound + + move @SOUNDSUP,b3,W ; are we allowed ?? + jrne send_rets ; no + + PUSH a0,a1,a2,a3,a4,a5,a6 + X32 a0 ; 32 bits per table entry + addi triple_sndtab,a0 ; a0 --> our entry + cmpi triple_end,a0 ; past the end of the table ? + jrhs tsnd9 ; yes, sans + +tsnd0 move *a0+,a1,W ; a1 = [priority , duration] + jreq tsnd9 ; zero entry = skip + jrn triple_tune ; ffff = tune script + + move a1,a4 + srl 8,a1 ; a1 = priority only + sll 32-8,a4 + srl 32-8,a4 ; a4 = duration only + move *a0+,a3,W ; a3 = channel 1 sound call +* +* a1 = priority +* a3 = channel 1 sound call +* a4 = duration +* + move @chan1pri,a0,W + jreq tsnd1 ; channel 1 + move @chan2pri,a0,W + jreq tsnd2 ; channel 2 + move @chan3pri,a0,W + jreq tsnd3 ; channel 3 + move @chan4pri,a0,W + jreq tsnd4 ; channel 4 +* +* all channels used up ---> see if I am more important +* + +;Old Method = find first call that I outrank and bump it. +; +; move @chan1pri,a0,W +; cmp a0,a1 ; who is more important ? +; jrhs tsnd1 ; me ---> do it +; move @chan2pri,a0,W +; cmp a0,a1 ; who is more important ? +; jrhs tsnd2 ; me ---> do it +; move @chan3pri,a0,W +; cmp a0,a1 ; who is more important ? +; jrhs tsnd3 ; me ---> do it +; move @chan4pri,a0,W +; cmp a0,a1 ; who is more important ? +; jrhs tsnd4 ; me ---> do it + +;New Method = find lowest-priority call and bump it if I outrank it. + + move @chan1pri,a5,W + movi tsnd1,a6 + + move @chan2pri,a14 + cmp a5,a14 + jrge #check_3 + move a14,a5 + movi tsnd2,a6 +#check_3 + move @chan3pri,a14 + cmp a5,a14 + jrge #check_4 + move a14,a5 + movi tsnd3,a6 +#check_4 + move @chan4pri,a14 + cmp a5,a14 + jrge #lowest_found + move a14,a5 + movi tsnd4,a6 + +#lowest_found + cmp a5,a1 ; who is more important ? + jrlt #no_preempt ; him. forget it. + jump a6 + +#no_preempt + PULL a0,a1,a2,a3,a4,a5,a6 + clr a14 +send_rets + clrc + rets + +tsnd1 move a1,@chan1pri,W ; new priority for channel 1 + move a4,@chan1dur,W ; new duration + movi [1,0],a2 + move a3,@chan1snd,W + jruc tsnd7 + +tsnd2 move a1,@chan2pri,W ; new priority for channel 2 + move a4,@chan2dur,W ; new duration + inc a3 ; switch to channel 2 sound call + move a3,@chan2snd,W + movi [2,0],a2 + jruc tsnd7 + +tsnd3 move a1,@chan3pri,W ; new priority for channel 3 + move a4,@chan3dur,W ; new duration + addk 2,a3 ; switch to channel 3 sound call + move a3,@chan3snd,W + movi [3,0],a2 + jruc tsnd7 + +tsnd4 move a1,@chan4pri,W ; new priority for channel 4 + move a4,@chan4dur,W ; new duration + addk 3,a3 ; switch to channel 4 sound call + move a3,@chan4snd,W + movi [4,0],a2 + +tsnd7 + callr SNDSND + or a4,a2 + move a2,a14 + +tsnd9 PULL a0,a1,a2,a3,a4,a5,a6 + setc ; carry set = success + rets + +* +* tune script decoding +* +triple_tune + + addk 16,a0 + move *a0,a1,L ; a1 = tune table + move *a1+,a2,W ; a2 = priority + + movb *a1(8),a0 ; grab player 1 channel + move *a13(PLYRNUM),a3,W + jrz tune4 ; player 1? + movb *a1,a0 ; grab player 1 channel +tune4 addk 16,a1 ; a1 ---> next command + + dec a0 ; a0 = channel = (0-2) + sll 6,a0 ; 64 bits / channel ram storage area + addi chan1ram,a0 ; a0 = our channel's ram + move *a0(sndpri),a3,W ; a3 = current priority + cmp a3,a2 ; who is more important ? + jrlo tune9 ; not me... + + move a2,*a0(sndpri),W ; i am the new priority !! + callr do_tune_commands + +tune9 PULL a0,a1,a2,a3,a4,a5,a6 + + rets + +#***************************************************************************** + + SUBR snd_update + + ;update announcer bits + move @vincedur,a0,W + jrz #no_vince + dec a0 + move a0,@vincedur,W +#no_vince + + move @randydur,a0,W + jrz #no_randy + dec a0 + move a0,@randydur,W +#no_randy + + move @howarddur,a0,W + jrz #no_howard + dec a0 + move a0,@howarddur,W +#no_howard + + move @chan1dur,a0,W ; channel #1 timing down ? + jrz sup2 ; nope.... + dec a0 ; yes, count this tick !! + move a0,@chan1dur,W ; update duration ram + jrnz sup2 + + move @chan1scp,a1,L ; we doing a tune script ? + jrz sup1 ; no + movi chan1pri,a0 ; a0 = input = chan 1 ram pointer + callr do_tune_commands + jruc sup2 +sup1 move a1,@chan1pri,W ; no script --> priority = 0 + +sup2 move @chan2dur,a0,W ; channel #2 timing down ? + jrz sup3 ; nope.... + dec a0 ; yes, count this tick !! + move a0,@chan2dur,W ; update duration ram + jrnz sup3 + move @chan2scp,a1,L ; a1 = input = chan 2 script point + jrz sup25 ; we are not processing a tune !! + movi chan2pri,a0 ; a0 = input = chan 2 ram pointer + callr do_tune_commands + jruc sup3 +sup25 move a1,@chan2pri,W ; no script --> priority = 0 + +sup3 move @chan3dur,a0,W ; channel #3 timing down ? + jrz sup4 ; nope.... + dec a0 ; yes, count this tick !! + move a0,@chan3dur,W ; update duration ram + jrnz sup4 + move @chan3scp,a1,L ; a1 = input = chan 3 script point + jrz sup35 ; we are not processing a tune !! + movi chan3pri,a0 ; a0 = input = chan 3 ram pointer + callr do_tune_commands + jruc sup4 +sup35 move a1,@chan3pri,W ; no script --> priority = 0 + +sup4 move @chan4dur,a0,W ; channel #4 timing down ? + jrz supexit ; nope.... + dec a0 ; yes, count this tick !! + move a0,@chan4dur,W ; update duration ram + jrnz supexit + move @chan4scp,a1,L ; a1 = input = chan 4 script point + jrz sup45 ; we are not processing a tune !! + movi chan4pri,a0 ; a0 = input = chan 4 ram pointer + callr do_tune_commands + rets +sup45 move a1,@chan4pri,W ; no script --> priority = 0 + +supexit rets + +#***************************************************************************** +* do_tune_commands +* +* run and execute a list of tune commands until a "sleep" or "endtune" +* is reached +* +* input: +* a0 = top of current channel's ram storage +* a1 = current script position +* + + SUBRP do_tune_commands + move *a1+,a3,W ; get [parameter,command] + sll 16,a3 + srl 16,a3 ; mask out the "ffff" scum + + move a3,a2 ; save [command,parameter] + sll 24,a2 + srl 24,a2 + dec a2 ; a2 = command offset + X32 a2 + + addi tune_commands,a2 + move *a2,a2,L ; grab address + jump a2 ; execute + +tune_commands + .long tc_send ; 1 + .long tc_setpri ; 2 + .long tc_endtune ; 3 + .long tc_sleep ; 4 + .long tc_send2 ; 5 + + +tc_send + srl 8,a3 ; yes --> a3 = code to send + calla SNDSND ; send it and return + jruc do_tune_commands + +tc_setpri + srl 8,a3 ; yes --> a3 = priority to set to + move a3,*a1(sndpri),W ; set it + jruc do_tune_commands + +tc_endtune + clr a1 + move a1,*a0(sndpri),W + move a1,*a0(snddur),W + move a1,*a0(sndscp),L ; clear this channel + rets + +tc_sleep + srl 8,a3 ; yes --> a3 = sleep time + move a3,*a0(snddur),W ; store into duration area + move a1,*a0(sndscp),L ; save current script pointer + clr a1 ; signal --> we are done + rets + +tc_send2 + push a1 ; save script position +tcs1 subk 8,a1 + movb *a1,a2 + cmpi endtune,a2 ; search backwards for "endtune" + jrne tcs1 + addk 24,a1 ; a1 ---> channel + movb *a1,a2 ; a2 = current channel + pull a1 ; restore script position + + cmpi 1,a2 + jreq tcs2 + cmpi 2,a2 + jreq tcs2 ; channel 1 or 2 = player 1 + + movb *a1,a3 ; grab it player 2 sound call + sll 8,a3 ; adjust for next line of code + +tcs2 addk 8,a1 ; a1 ---> next command + srl 8,a3 ; yes --> a3 = code to send + callr SNDSND ; send it and return + jruc do_tune_commands + + +tc_setpri2 + srl 8,a3 ; yes --> a3 = priority to set to + move a3,*a1(sndpri),W ; set it + jruc do_tune_commands + +#***************************************************************************** +* nosounds +* +* cancels all sound calls. zeros all priorities and stops all +* currently running tunes. +* + + SUBR nosounds + + PUSH a0,a1 + clr a3 + callr SNDSND ; silence the music board + callr clear_sound_ram + PULL a0,a1 + + rets + +#***************************************************************************** + + SUBRP clear_sound_ram + + clr a0 + movi chan1ram,a1 +nos2 move a0,*a1+,W ; zero u out !!! + cmpi chan4scp+32,a1 ; everyone cleared ?? + jrne nos2 ; nope, do more + + rets + +#***************************************************************************** +* Sets the volume of the DCS. +* >a0=volume (0-255) +* + + SUBR set_volume + + PUSH a0,a1,a3 + + andi 0FFh,a0 ;forces value into range + movi 55AAh,a3 + callr send_code_a3 + + move a0,a3 ; volume + move a0,a1 + not a1 ; sans volume + sll 32-8,a1 + srl 32-8,a1 + sll 8,a3 + or a1,a3 ; a3 = [volume,sans volume] + callr send_code_a3 + + move a0,a1 + movi ADJVOLUME,a0 + calla PUT_ADJ + calla F_ADC_S + + PULL a0,a1,a3 + rets + +#***************************************************************************** +* Raw hardware sound call. +* >a3=sound code (0-1ff) + + SUBR SNDSND + SUBR send_code_a3 + + PUSH a0,a1,a2,a3,a4 + move @SOUNDSUP,a0 ; are we allowed ?? + jrnz sendx ; no + + move a3,a3 ; is it a null call (negative)? + jrn sendx + + move a3,a0 + sll 32-16,a3 + srl 32-8,a3 ; a3 = high byte +* +* send high byte +* + move @_sound_addr,a4,L + move a3,*a4 + + movk 2,a2 + dsj a2,$ ; time for signal to get through + callr poll_sirq +* +* send low byte +* + sll 32-8,a0 + srl 32-8,a0 ; a3 = low byte + move @_sound_addr,a4,L + move a0,*a4 + + callr poll_sirq + +sendx PULL a0,a1,a2,a3,a4 + rets + +#***************************************************************************** +* Poll sound IRQ. When IRQ goes high, sound board is ready for next call. +* Do timeout so sound board can't screw things up. +* + + SUBRP poll_sirq + movi 390/3,a4 ; 180 micros max firq delay on snd board + +;#poll3 movb @SOUNDIRQ+B_SIRQ-7,a1 + +#poll3 + move @_soundirq_addr,a1,L + addi (B_SIRQ-7),a1 + movb *a1,a1 + + jrn #poll9 ; done? + dsj a4,#poll3 +#poll9 rets + +#***************************************************************************** + +VOLDN .equ 11 +VOLUP .equ 12 + + SUBR VOLBTN_PRESS + + ;in diagnostics? + move @GAMSTATE,a0,W + jrn #done + + ;already adjusting? + movi VOLADJ_PID,a0 + movi 0FFFFh,a1 + calla EXISTP + jrnz #done + + ;okay, adjust + movi VOLADJ_PID,a14 + move a14,*a13(PROCID),W + +; move @COINS,a0 + move @_coin_addr,a0,L + move *a0,a0 + btst VOLDN,a0 + jrz #voldn_loop + + +#volup_loop + ;increment the volume + movi ADJVOLUME,a0 + calla GET_ADJ + inc a0 + cmpi 255,a0 + jrle #up_okay + movi 255,a0 +#up_okay + calla set_volume + SLEEPK 1 + + ;if the vol+ button is no longer down, die +; move @COINS,a0 + move @_coin_addr,a0,L + move *a0,a0 + btst VOLUP,a0 + jrnz #done + jruc #volup_loop + +#voldn_loop + ;decrement the volume + movi ADJVOLUME,a0 + calla GET_ADJ + dec a0 + jrnn #dn_okay + clr a0 +#dn_okay + calla set_volume + SLEEPK 1 + + ;if the vol- button is no longer down, die +; move @COINS,a0 + move @_coin_addr,a0,L + move *a0,a0 + btst VOLDN,a0 + jrnz #done + jruc #voldn_loop + +#done + DIE + +;missing KILL_HOWARD + +;missing DO_HOWARD +VINCE_START_GAME + MOVI MATCHUP_TAB,A2 + MOVE @HCOUNT,A1 + SRL 1,A1 + JRNC START_CHOSEN + MOVI SQUARED_TAB,A2 +START_CHOSEN + movi index1,a3 + MOVI index2,a8 + MOVE @PSTATUS,A0 + CMPI 3,A0 + JREQ USE_BOTH_INDEXES + MOVI index1,a4 + SRL 1,A0 + JRC INDEX_USE_SET + MOVI index2,a4 +INDEX_USE_SET + CALLA MAKE_ANNOUNCEMENT + MOVE @process_ptrs+020h,a4,L + ADDI WRESTLERNUM,A4 + MOVI VERSUS_TAB,A2 + CALLA MAKE_ANNOUNCEMENT + MOVE @process_ptrs+040h,a4,L + JRZ NO_MORE_OPPS + MOVE @process_ptrs+060h,a2,L + JRNZ JUST_VERSUS + MOVI 133H,A0 + CALLA ADD_VOICE +JUST_VERSUS + ADDI WRESTLERNUM,A4 + MOVI WHICH_WRESTLER,A2 + CALLA MAKE_ANNOUNCEMENT + MOVE @process_ptrs+060h,a4,L + JRZ NO_MORE_OPPS + MOVI 133H,A0 + CALLA ADD_VOICE + ADDI WRESTLERNUM,A4 + MOVI WHICH_WRESTLER,A2 + CALLA MAKE_ANNOUNCEMENT +NO_MORE_OPPS + DIE + +USE_BOTH_INDEXES + MOVE A3,A4 + CALLA MAKE_ANNOUNCEMENT + MOVE A8,A4 + MOVI VERSUS_TAB,A2 + CALLA MAKE_ANNOUNCEMENT + DIE + +MAKE_ANNOUNCEMENT + MOVE *A4,A1 + SLL 4,A1 + ADD A2,A1 + MOVE *A1,A0 + CALLA ADD_VOICE + RETS + +;Bret +;Razor +;Taker +;Yoko +;Shawn +;Bam Bam +;Doink +;spare +;Lex +WHICH_WRESTLER + .WORD 131H + .WORD 12DH + .WORD 12FH + .WORD 132H + .WORD 12CH + .WORD 12EH + .WORD 12BH + .WORD 0 + .WORD 130H + +VERSUS_TAB + .WORD 127h + .WORD 123h + .WORD 125h + .WORD 128h + .WORD 122h + .WORD 124h + .WORD 121h + .WORD 0 + .WORD 126h + +SQUARED_TAB + .WORD 11Fh + .WORD 11Bh + .WORD 11Dh + .WORD 120h + .WORD 11Ah + .WORD 11Ch + .WORD 119h + .WORD 0 + .WORD 11Eh + +MATCHUP_TAB + .WORD 117h + .WORD 113h + .WORD 115h + .WORD 118h + .WORD 112h + .WORD 114h + .WORD 111h + .WORD 0 + .WORD 116h + +VINCE_START_ROUND2_3 + MOVI 6,A0 + CALLA RNDRNG0 + MOVE A0,A1 + SLL 5,A1 + ADDI RAND_START_2_3,A1 + MOVE *A1+,A0 + CALLA ADD_VOICE + MOVE *A1,A0 + JRZ NO_TWO_STEP + CALLA ADD_VOICE +NO_TWO_STEP + RETS + +RAND_START_2_3 + .WORD 134H,0 + .WORD 135H,0 + .WORD 136H,0 + .WORD 138H,137H + .WORD 138H,139H + .WORD 13AH,0 + .WORD 13BH,0 + +;************************************************************************** +;* * +;* TABLES ARE SET UP AS FOLLOWS - * +;* WORD x(NUMBER OF TABLE ENTRIES -1), TABLE ENTRY SIZE * +;* LABEL * +;* WORD TABLE ENTRY 1 * +;* ... * +;* WORD TABLE ENTRY x * +;* * +;* TABLES CAN HAVE MORE THAN ONE CALL PER ENTRY * +;* CALL EITHER ADD_TO_QUEUE OF ADD_IF_SILENT WITH TABLE ADDRESS IN A2 * +;* CALL WITH A0 SET TO RANDOMNESS OF ACTUALLY MAKING A SOUND CALL * +;* A0 = 0 NO CHANCE, A0=1000 100% CHANCE * +;* IF CALLING A TABLE WITH EITHER 'GIVE CREDIT' OR * +;* 'VERY_IMPRESSIVE' IN IT, A5 MUST REFLECT THE ATTACKING WRESTLER NUMBER * +;* * +;************************************************************************** + +RESET_VOICE_QUEUE + MOVI ANNOUNCE_QUEUE,A1 + MOVE A1,@NEXT_ANN_QUEUE,L + MOVE A1,@CURRENT_ANN_QUEUE,L + RETS + +IF_SILENT_ADD_VOICE + MMTM SP,A1,A2 + MOVE @NEXT_ANN_QUEUE,A1,L + MOVE @CURRENT_ANN_QUEUE,A2,L + CMP A1,A2 + JRNE NO_ADD + CALLR WHO_IS_IT + JRC NOT_ANNOUNCER + JRNZ NO_ADD +NOT_ANNOUNCER + MMFM SP,A1,A2 +ADD_VOICE + PUSH A1 + MOVE @NEXT_ANN_QUEUE,A1,L + MOVE A0,*A1+ + CMPI EOF_ANNOUNCE_QUEUE,A1 + JRNE NO_RESET_QUEUE + MOVI ANNOUNCE_QUEUE,A1 +NO_RESET_QUEUE + MOVE A1,@NEXT_ANN_QUEUE,L + PULL A1 + CLR A0 + MOVE A0,A0 + RETS + +NO_ADD + MMFM SP,A1,A2 + MOVI -1,A0 + RETS + +ANNOUNCE_VOICE + MOVE @NEXT_ANN_QUEUE,A1,L + MOVE @CURRENT_ANN_QUEUE,A2,L + CMP A1,A2 + JREQ NOTHING_TO_DO_NOW + MOVE *A2+,A0 + JRN TIME_TO_DIE + CMPI EOF_ANNOUNCE_QUEUE,A2 + JRNE NO_RESET_QUEUE2 + MOVI ANNOUNCE_QUEUE,A2 +NO_RESET_QUEUE2 + MOVE A2,@CURRENT_ANN_QUEUE,L + CMPI 0E0H,A0 + JRLT DO_TRIPLE_SOUND + CALLA announcer_sound + CALLA PRCSLP + JRUC ANNOUNCE_VOICE + +DO_TRIPLE_SOUND + CALLA triple_sound + CALLA PRCSLP + JRUC ANNOUNCE_VOICE + +NOTHING_TO_DO_NOW + SLOOP 1,ANNOUNCE_VOICE + +TIME_TO_DIE + DIE + + + bssx which_table,32 + bssx which_one_first,16 + +ADD_TO_QUEUE + MOVI -1,B3 + JRUC IN_HERE +ADD_IF_SILENT + CLR B3 +IN_HERE + move a2,@which_table,L + + MMTM SP,A0,A1,A2,A3 + MOVE *A2(-050H),A3 + JRZ NO_RESET_REPEAT + CLR A3 + MOVE A3,@REPEAT_STATE +NO_RESET_REPEAT + MOVE *A2(-040H),A3,L + JRZ NO_CROWD + CALLA DO_CROWD_ANYWAY +NO_CROWD + MOVE @REPEAT_STATE,A4 + JRZ NO_DO_REPEAT + MOVI REPEAT_MODE,A0 + MOVK 010H,A3 + JRUC DO_REPEAT +NO_DO_REPEAT + CALLA RNDPER + JRLS NO_MORE + MOVE *A2(-010H),A3 + MOVE *A2(-020H),A0 + CALLA RNDRNG0 + move a0,@which_one_first + MPYU A3,A0 + ADD A2,A1 +ADD_AGAIN + MOVE *A1+,A0 +DO_REPEAT + CMPI END_GAME_STUFF,A0 + JREQ DO_END_STUFF + CMPI GIVE_CREDIT,A0 + JREQ SPECIAL_SET_UP + CMPI VERY_IMPRESSIVE,A0 + JREQ SPECIAL_SET_UP + CMPI IT_DOESNT_LOOK_GOOD,A0 + JREQ SPECIAL_SET_UP + CMPI R_IMPRESSIVE_MOVE,A0 + JREQ SPECIAL_SET_UP + CMPI REPEAT_MODE,A0 + JRNE NO_SPECIAL_SET_UP +SPECIAL_SET_UP + CALLR SET_UP_PERSONAL_CALL + CALLR ARE_WE_REPEATING + JRC SET_NO_MORE + JRUC DO_THE_SPEECH +NO_SPECIAL_SET_UP + CALLR ARE_WE_REPEATING + JRNC DO_THE_SPEECH +NO_SPECIAL_END_STUFF + SUBI 010H,A1 + ADD A3,A1 + JRUC ADD_AGAIN + +DO_THE_SPEECH + CALLR ADD_SPEECH_TO_LIST + MOVE B3,B3 + JRNZ ADD_ANYWAY +************************************** + MOVE A0,A0 + JRNN OKAY + LOCKUP +OKAY +************************************** + CALLA IF_SILENT_ADD_VOICE + JRUC SPEECH_ADDED +ADD_ANYWAY + CALLA ADD_VOICE +SPEECH_ADDED + JRN NO_MORE + SUBI 010H,A3 + JRZ NO_MORE +ADD_AGAIN3 + MOVE *A1+,A0 + JRZ NO_MORE + CALLA ADD_VOICE + SUBI 010H,A3 + JRNZ ADD_AGAIN3 +NO_MORE + MMFM SP,A0,A1,A2,A3 + RETS +SET_NO_MORE + MOVI -1,A0 + MMFM SP,A0,A1,A2,A3 + RETS + + +ARE_WE_REPEATING + PUSH A1,A2,A3 + MOVI LAST_VOICE,A1 + MOVK 4,A3 +NEXT_SPEECH + MOVE *A1+,A2 + CMP A0,A2 + JREQ YES_WE_ARE + DSJS A3,NEXT_SPEECH + PULL A1,A2,A3 + CLRC + RETS +YES_WE_ARE + PULL A1,A2,A3 + SETC + RETS + +ADD_SPEECH_TO_LIST + PUSH A1 + MOVE @WHICH_LAST_VOICE,A1,L + ADDK 16,A1 + CMPI WHICH_LAST_VOICE,A1 + JRNE NO_RESET_SPEECH_REPEAT + MOVI LAST_VOICE,A1 +NO_RESET_SPEECH_REPEAT + MOVE A1,@WHICH_LAST_VOICE,L + MOVE A0,*A1 + PULL A1 + RETS + +CLEAR_SPEECH_REPEAT + MOVI LAST_VOICE,A1 + MOVE A1,@WHICH_LAST_VOICE,L + CLR A0 + MOVE A0,*A1+,L + MOVE A0,*A1+,L + RETS + +DO_CROWD_ANYWAY + MMTM SP,A0,A1,A3,A5 + MOVE *A3(-010H),A0 + CALLA RNDRNG0 + SLL 6,A0 + ADD A3,A0 + MOVE A0,A4 + MOVI CROWD_SOUND_PID,A0 + MOVI -1,A1 + CALLA EXISTP + JRNZ NO_CROWD_ALREADY_GOING + MOVE A4,A0 + MOVE *A0,A3 + CALLA SNDSND + MOVE *A0(010H),A9 + CREATE CROWD_SOUND_PID,CROWD_DUMMY +NO_CROWD_ALREADY_GOING + MOVE A4,A0 + MOVE *A0(020H),A3 + BTST B_RANDOM,A3 + JRZ NO_NEED_FOR_A4 + MOVE *A0(030H),A4 +NO_NEED_FOR_A4 + CALLA crowd_cheer + MMFM SP,A0,A1,A3,A5 + RETS + +CROWD_DUMMY + MOVE A9,A0 + CALLA PRCSLP + DIE + +SET_UP_PERSONAL_CALL + PUSH A1 + SLL 4,A5 + MOVI GIVE_CREDIT_TO,A1 + INC A0 + JRZ MADE_RIGHT_TABLE + MOVI VERY_IMPRESSIVE_MOVE,A1 + INC A0 + JRZ MADE_RIGHT_TABLE + MOVI IT_DOESNT_LOOK_GOOD_FOR,A1 + INC A0 + INC A0 + JRZ MADE_RIGHT_TABLE + MOVI VERY_IMPRESSIVE_MOVE_R,A1 + INC A0 + JRZ MADE_RIGHT_TABLE + MOVE @REPEAT_STATE,A0 + JRNZ ALREADY_IN_REPEAT_MODE + MOVI 80,A9 + CREATE REPEAT_MODE_PID,REPEAT_DUMMY + MOVK 4,A0 +ALREADY_IN_REPEAT_MODE + DEC A0 + MOVE A0,@REPEAT_STATE + SLL 4,A0 + SLL 2,A5 + MOVI ASCENDING_TABLE,A1 + ADD A0,A5 + CALLR SET_DUMMY_SLEEP +MADE_RIGHT_TABLE + ADD A5,A1 + MOVE *A1,A0 + PULL A1 + RETS + +SET_DUMMY_SLEEP + PUSH A1 + MOVI REPEAT_MODE_PID,A0 + MOVI -1,A1 + CALLA EXISTP + JRZ NO_DUMMY_TO_SET + MOVI 80,A1 + MOVE A1,*A0(PTIME) +NO_DUMMY_TO_SET + PULL A1 + RETS + +REPEAT_DUMMY + MOVE A9,A0 + CALLA PRCSLP + CLR A0 + MOVE A0,@REPEAT_STATE + DIE + +DO_END_STUFF + PUSH A1 + MOVI NUM_WRES,A1 +CHECK_NEXT + PUSH A1 + DEC A1 + CALLA get_health + PULL A1 + CMPI 40,A0 + JRLT YES_WE_NEAR_END + DSJS A1,CHECK_NEXT + PULL A1 + JRUC NO_SPECIAL_END_STUFF +YES_WE_NEAR_END + PULL A1 + MOVI SPECIAL_LAST_STUFF,A2 + MOVE *A2(-010H),A3 + MOVE *A2(-020H),A0 + CALLA RNDRNG0 + MPYU A3,A0 + ADD A2,A1 + MOVE *A1+,A0 + CALLR ARE_WE_REPEATING + JRC SET_NO_MORE + CLR A4 + MOVE A4,@REPEAT_STATE + CMPI IT_DOESNT_LOOK_GOOD,A0 + JREQ SPECIAL_SET_UP + JRUC DO_THE_SPEECH + +ASCENDING_TABLE + .WORD 102H,101H,100H,0FFH + .WORD 0ECH,0EBH,0EAH,0E9H + .WORD 0F6H,0F5H,0F4H,0F3H + .WORD 106H,105H,104H,103H + .WORD 0E8H,0E7H,0E6H,0E5H + .WORD 0FAH,0F9H,0F8H,0F7H + .WORD 0E4H,0E3H,0E2H,0E1H + .WORD 0,0,0,0 + .WORD 0FEH,0FDH,0FCH,0FBH + +VERY_IMPRESSIVE_MOVE + .WORD VERY_IMP_HART + .WORD VERY_IMP_RAZOR + .WORD VERY_IMP_UNDER + .WORD VERY_IMP_YOKO + .WORD VERY_IMP_SHAWN + .WORD VERY_IMP_BAM + .WORD VERY_IMP_DOINK + .WORD 0 + .WORD VERY_IMP_LUGER + +VERY_IMPRESSIVE_MOVE_R + .WORD R_MOVE_BY_HITMAN + .WORD R_MOVE_BY_RAZOR + .WORD R_MOVE_BY_UNDER + .WORD R_MOVE_BY_YOKO + .WORD R_MOVE_BY_SHAWN + .WORD R_MOVE_BY_BAM + .WORD R_MOVE_BY_DOINK + .WORD 0 + .WORD R_MOVE_BY_LEX + +IT_DOESNT_LOOK_GOOD_FOR + .WORD IT_DOESNT_LOOK_BRET + .WORD IT_DOESNT_LOOK_RAZOR + .WORD IT_DOESNT_LOOK_UNDER + .WORD IT_DOESNT_LOOK_YOKO + .WORD IT_DOESNT_LOOK_SHAWN + .WORD IT_DOESNT_LOOK_BAMBAM + .WORD IT_DOESNT_LOOK_DOINK + .WORD 0 + .WORD IT_DOESNT_LOOK_LEX + +GIVE_CREDIT_TO + .WORD GIVE_CRED_HART + .WORD GIVE_CRED_RAZOR + .WORD GIVE_CRED_UNDER + .WORD GIVE_CRED_YOKO + .WORD GIVE_CRED_SHAWN + .WORD GIVE_CRED_BAM + .WORD GIVE_CRED_DOINK + .WORD 0 + .WORD GIVE_CRED_LUGER + + .WORD -1 + .LONG CRESCENDO_TABLE + .WORD 10,010H +CLIMB_ROPES + .WORD GOING_TO_TOP_ROPE + .WORD GOING_TO_TOP + .WORD HERE_IT_COMES + .WORD AND_1 + .WORD AND_2 + .WORD AND_3 + .WORD LOOK_AT_THIS + .WORD HERES_THE_SETUP + .WORD R_OH_YEAH + .WORD WHATS_THIS + .WORD R_LOOK_AT_THIS + + .WORD GOING_TO_TOP_ROPE + .WORD GOING_TO_TOP + .WORD HERE_IT_COMES + .WORD AND_1 + + .WORD 0 + .LONG ROPES_CHEER + .WORD 7,020H +JUMP_ROPES + .WORD KABOOM_OH,KABOOM + .WORD REPEAT_MODE,0 + .WORD OOOH,0 + .WORD BOOMSHAKALAKA,0 + .WORD OFF_THE_TOP,0 + .WORD LOOK_OUT,0 + .WORD R_NICELY_DONE,0 + .WORD I_WOULD_RECEIVE_THAT,0 + + .WORD KABOOM_OH,KABOOM + .WORD OOOH,0 + .WORD BOOMSHAKALAKA,0 + .WORD OFF_THE_TOP,0 + +CALL_MISSES + CREATE0 PROC_MISSES + RETS + +PROC_MISSES + SLEEP 5 + MOVI MISSES,A2 + MOVI 700,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD -1 + .LONG CROWD_FAIL + .WORD 10,010H +MISSES + .WORD A_MISS + .WORD NO_V + .WORD AND_MISSES + .WORD ALMOST + .WORD FORGET_ABOUT_IT + .WORD R_THAT_WAS_DUMB + .WORD R_THAT_WAS_UGLY + .WORD AND_OH + .WORD REJECTED + .WORD R_THATLL_COST_HIM + .WORD AND_OH + + .WORD A_MISS + .WORD AND_MISSES + .WORD ALMOST + .WORD R_REJECTED + +CALL_SPECIAL_MOVE + MOVE *A13(WRESTLERNUM),A9 + CREATE0 PROC_SPECIAL_MOVE + RETS + +PROC_SPECIAL_MOVE + SLEEP 10 + MOVE A9,A5 + MOVI SPECIAL_MOVE,A2 + MOVI 800,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG CROWD_SPECIAL + .WORD 27,020H +SPECIAL_MOVE + .WORD END_GAME_STUFF,0 + .WORD LISTEN_TO_THE_CROWD,0 + .WORD REPEAT_MODE,0 + .WORD DID_YOU_SEE_THAT,0 + .WORD VERY_IMPRESSIVE,0 + .WORD THATS_GOTTA_HURT,0 + .WORD NICELY_DONE,0 + .WORD IVE_NEVER_SEEN_THAT,0 + .WORD OH_MY,0 + .WORD OH_MY_GOODNESS_0,0 + .WORD DID_YOU_SEE_THAT,R_IVE_NEVER_SEEN + .WORD DID_YOU_SEE_THAT,R_OH_YEAH + .WORD WOW_0,0 + .WORD UNBEELEVABLE_0,0 + .WORD LOOK_AT_THIS,0 + .WORD R_DID_YOU_SEE_THAT,UNBEELEVABLE_0 + .WORD WHAT_A_TURN_OF_EVENTS,R_INCREDIBLE + .WORD R_TASTE_OF_HIS_OWN,0 + .WORD WHAT_A_BEATING,R_NICELY_DONE + .WORD I_WOULD_RECEIVE_THAT,0 + .WORD R_LOOK_AT_THIS,CAN_YOU_BELIEVE_THAT + .WORD CAN_ANYBODY_STOP_HIM,R_INCREDIBLE + .WORD R_THATS_GOTTA_HURT,YES_V + .WORD WHAT_A_SLAM,R_IVE_NEVER_SEEN + .WORD I_CANT_WATCH_THIS,0 + .WORD CAN_ANYBODY_STOP_HIM,0 + .WORD R_I_THINK_HE_BROKE_IT,0 + .WORD R_NOBODY_GETS_UP,0 + + .WORD LISTEN_TO_THE_CROWD,0 + .WORD DID_YOU_SEE_THAT,0 + .WORD THATS_GOTTA_HURT,0 + .WORD NICELY_DONE,0 + +CALL_DROP_KICK + MOVE *A10(WRESTLERNUM),A9 + CREATE0 PROC_DROP_KICK + RETS + +PROC_DROP_KICK + SLEEP 15 + MOVE A9,A5 + MOVI DROP_KICK,A2 + MOVI 600,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG CROWD_CHEER + .WORD 16,010H +DROP_KICK + .WORD LISTEN_TO_THE_CROWD + .WORD REPEAT_MODE + .WORD NICELY_DONE + .WORD BOTH_MEN_DOWN + .WORD OH_MY + .WORD OH_THAT_HURTS_0 + .WORD WITH_AUTHORITY + .WORD KABOOM + .WORD BOOMSHAKALAKA + .WORD R_TASTE_OF_HIS_OWN + .WORD VERY_IMPRESSIVE + .WORD ITS_PAND_OUT_THERE + .WORD WHAT_SPEED + .WORD TO_THE_FACE + .WORD AWESOME + .WORD GOODNIGHT + .WORD WHAT_A_BLOW + + .WORD LISTEN_TO_THE_CROWD + .WORD NICELY_DONE + .WORD BOTH_MEN_DOWN + .WORD OH_MY + +CALL_FACE_HIT + MOVE *A10(WRESTLERNUM),A9 + CREATE0 PROC_FACE_HIT + RETS + +PROC_FACE_HIT + SLEEP 8 + MOVE A9,A5 + MOVI FACE_HIT,A2 + MOVI 300,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG CROWD_ORDINARY + .WORD 7,010H +FACE_HIT + .WORD TO_THE_FACE + .WORD R_WHAT_SPEED + .WORD TO_THE_FACE + .WORD WHAT_POWER + .WORD TO_THE_FACE + .WORD WHAT_A_BLOW + .WORD HELLO + .WORD R_GOODNIGHT + + .WORD TO_THE_FACE + .WORD WHAT_SPEED + .WORD R_WHAT_POWER + .WORD OH_MY + +CALL_MID_HIT + MOVE *A10(WRESTLERNUM),A9 + CREATE0 PROC_MID_HIT + RETS + +PROC_MID_HIT + SLEEP 8 + MOVE A9,A5 + MOVI MID_HIT,A2 + MOVI 300,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG CROWD_ORDINARY + .WORD 7,010H +MID_HIT + .WORD TO_THE_MIDSECTION + .WORD WHAT_SPEED + .WORD TO_THE_MIDSECTION + .WORD R_WHAT_POWER + .WORD TO_THE_MIDSECTION + .WORD WHAT_SKILL + .WORD WHAT_A_BLOW + .WORD R_HELLO + + .WORD TO_THE_MIDSECTION + .WORD WHAT_SPEED + .WORD R_WHAT_POWER + .WORD OH_MY + +CALL_AVERAGE_MOVE + MOVE *A10(WRESTLERNUM),A9 + CREATE0 PROC_AVERAGE_MOVE + RETS + +CALL_ANI_AVERAGE_MOVE + MOVE *A13(WRESTLERNUM),A9 + CREATE0 PROC_AVERAGE_MOVE + RETS + +PROC_AVERAGE_MOVE + SLEEP 10 + MOVE A9,A5 + MOVI AVERAGE_MOVE,A2 + MOVI 700,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG CROWD_CHEER + .WORD 20,010H +AVERAGE_MOVE + .WORD END_GAME_STUFF + .WORD OH_THAT_HURTS_1 + .WORD REPEAT_MODE + .WORD OH_0 + .WORD WITH_AUTHORITY + .WORD NICELY_DONE + .WORD NICE_EXECUTION + .WORD OOOH_0 + .WORD OH_MY_GOODNESS_2 + .WORD R_RIGHT_TO_THE_KISSER + .WORD ITS_PAND_IN_THE_RING + .WORD WHAT_POWER + .WORD WHAT_SKILL + .WORD R_WHAT_AGILITY + .WORD R_AWESOME + .WORD R_HELLO + .WORD WHAT_A_BLOW + .WORD GOODNIGHT + .WORD MOST_IMPRESSIVE + .WORD AWESOME + .WORD R_IMPRESSIVE_MOVE + + .WORD OH_THAT_HURTS_1 + .WORD OH_0 + .WORD WITH_AUTHORITY + .WORD NICELY_DONE + +DO_REVERSAL + push a8 + MOVE *A13(WRESTLERNUM),A5 + MOVI REVERSAL,A2 + MOVI 700,A0 + CALLR ADD_IF_SILENT + pull a8 + RETS + + .WORD 0 + .LONG CROWD_CHEER + .WORD 13,010H +REVERSAL + .WORD NO_WAIT_A_MINUTE + .WORD NICE_ESCAPE + .WORD WOW_1 + .WORD LOOK_OUT + .WORD FORGET_ABOUT_IT + .WORD A_QUICK_REVERSAL + .WORD R_THAT_WAS_DUMB + .WORD WHATS_THIS + .WORD R_NO_WAIT_A_MINUTE + .WORD WHAT + .WORD WHAT_THE + .WORD MOST_IMPRESSIVE + .WORD YES_V + .WORD WAIT_A_MINUTE + + .WORD NO_WAIT_A_MINUTE + .WORD NICE_ESCAPE + .WORD WOW_1 + .WORD LOOK_OUT + +CALL_MISS_YOKO + CREATE0 PROC_MISS_YOKO + RETS + +PROC_MISS_YOKO + SLEEP 10 + MOVI MISS_YOKO,A2 + MOVI 600,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD -1 + .LONG 0 + .WORD 5,010H +MISS_YOKO + .WORD FORGET_ABOUT_IT + .WORD R_THAT_WAS_DUMB + .WORD NOT_A_GOOD_IDEA + .WORD WHAT_WAS_HE_THINKING + .WORD AND_OH + .WORD REJECTED +; .WORD R_WHAT_WAS_HE_THINKING + + .WORD FORGET_ABOUT_IT + .WORD R_THAT_WAS_DUMB + .WORD NOT_A_GOOD_IDEA + .WORD WHAT_WAS_HE_THINKING + + .WORD -1 + .LONG CROWD_THROWN + .WORD 14,010H +THROWN_OUT + .WORD HEAVES_HIM + .WORD VERY_IMPRESSIVE + .WORD NICE_EXECUTION + .WORD UNBEELEVABLE_1 + .WORD IVE_NEVER_SEEN_THAT + .WORD OH_THAT_HURTS_0 + .WORD WITH_AUTHORITY + .WORD WHAT_A_TURN_OF_EVENTS + .WORD WHAT_POWER + .WORD R_WHAT_SPEED + .WORD WHAT_SKILL + .WORD R_WHAT_AGILITY + .WORD MAGNIFICENT + .WORD JUST_AWESOME + + .WORD HEAVES_HIM + .WORD NICE_EXECUTION + .WORD UNBEELEVABLE_1 + .WORD IVE_NEVER_SEEN_THAT + +CALL_THROWN_OUT + MOVE *A13(WRESTLERNUM),A9 + CREATE0 PROC_THROWN_OUT + RETS + +PROC_THROWN_OUT + SLEEP 10 + MOVE A9,A5 + MOVI THROWN_OUT,A2 + MOVI 700,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD -1 + .LONG CROWD_THROWN + .WORD 12,010H +OTHER_AVERAGE + .WORD VERY_IMPRESSIVE + .WORD NICE_EXECUTION + .WORD UNBEELEVABLE_1 + .WORD IVE_NEVER_SEEN_THAT + .WORD OH_THAT_HURTS_0 + .WORD WITH_AUTHORITY + .WORD WHAT_A_TURN_OF_EVENTS + .WORD WHAT_POWER + .WORD R_WHAT_SPEED + .WORD WHAT_SKILL + .WORD R_WHAT_AGILITY + .WORD MAGNIFICENT + .WORD JUST_AWESOME + + .WORD MAGNIFICENT + .WORD NICE_EXECUTION + .WORD UNBEELEVABLE_1 + .WORD IVE_NEVER_SEEN_THAT + +CALL_OTHER_AVERAGE + MOVE *A13(WRESTLERNUM),A9 + CREATE0 PROC_OTHER_AVERAGE + RETS + +PROC_OTHER_AVERAGE + SLEEP 10 + MOVE A9,A5 + MOVI OTHER_AVERAGE,A2 + MOVI 700,A0 + CALLR ADD_IF_SILENT + DIE + +CALL_NASTY_MOVE + MOVE *A13(WRESTLERNUM),A9 + CREATE0 PROC_NASTY_MOVE + RETS + +PROC_NASTY_MOVE + SLEEP 10 + MOVE A9,A5 + MOVI NASTY_MOVE,A2 + MOVI 700,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD -1 + .LONG CROWD_FAIL + .WORD 8,020H +NASTY_MOVE + .WORD R_WHATS_GOING_ON,IS_THAT_LEGAL + .WORD HE_CANT_DO_THAT,R_SOMEONE_CALL_SECURITY + .WORD NOW_THAT_WAS_CHEAP,R_I_CANT_WATCH + .WORD THATS_NOT_VERY_FAIR,0 + .WORD SOMEONE_CALL_SECURITY,0 + .WORD THAT_WASNT_VERY_NICE,R_GOODNIGHT + .WORD I_CANT_WATCH_THIS,R_OH_VICIOUS + .WORD R_THATS_GOTTA_HURT,THATS_NOT_VERY_FAIR + .WORD SHOCKING,0 + + .WORD R_WHATS_GOING_ON,IS_THAT_LEGAL + .WORD HE_CANT_DO_THAT,R_SOMEONE_CALL_SECURITY + .WORD NOW_THAT_WAS_CHEAP,R_I_CANT_WATCH + .WORD THATS_NOT_VERY_FAIR,0 + +CALL_SETUP + MOVE *A13(WRESTLERNUM),A9 + CREATE0 PROC_SETUP_MOVE + RETS + +PROC_SETUP_MOVE + SLEEP 5 + MOVE A9,A5 + MOVI SETUP_MOVE,A2 + MOVI 700,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG SETUP_TABLE + .WORD 12,010H +SETUP_MOVE + .WORD END_GAME_STUFF + .WORD REPEAT_MODE + .WORD HERES_THE_SETUP + .WORD AND_1 + .WORD HERE_IT_COMES + .WORD AND_2 + .WORD LOOK_AT_THIS + .WORD OOOH + .WORD R_LOOK_AT_THIS + .WORD WHATS_THIS + .WORD ITS_PAND_IN_THE_RING + .WORD R_THIS_COULD_BE_TROUBLE + .WORD R_DIG_IT + + .WORD HERES_THE_SETUP + .WORD AND_1 + .WORD HERE_IT_COMES + .WORD AND_2 + .WORD LOOK_AT_THIS + + .WORD 6,010H +SPECIAL_LAST_STUFF + .WORD THIS_COULD_BE_IT + .WORD R_THIS_COULD_BE_IT + .WORD YOU_CANT_GET_ANY_CLOSER + .WORD WHAT_KEEPING_THEM_UP + .WORD LOOKS_LIKE_ITS_OVER + .WORD R_GAME_OVER + .WORD IT_DOESNT_LOOK_GOOD + + .WORD THIS_COULD_BE_IT + .WORD R_THIS_COULD_BE_IT + .WORD YOU_CANT_GET_ANY_CLOSER + .WORD WHAT_KEEPING_THEM_UP + +CALL_MATCH_OVER + CREATE0 PROC_MATCH_OVER + RETS + +PROC_MATCH_OVER + SLEEP 5 + move *a10(WRESTLERNUM),a5 + MOVE @HCOUNT,A0 + SRL 1,A0 + JRNC WRESTLER_SPEECH + MOVI MATCH_OVER,A2 + MOVI 900,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD -1 + .LONG 0 + .WORD 5,010H +MATCH_OVER + .WORD GIVE_CREDIT + .WORD TOTAL_DISASTER + .WORD TOTAL_DEBUNK + .WORD UNBEELEVABLE_0 + .WORD CONGRATULATIONS + .WORD R_OH_YEAH + + .WORD GIVE_CREDIT + .WORD TOTAL_DISASTER + .WORD TOTAL_DEBUNK + .WORD UNBEELEVABLE_0 + +WRESTLER_SPEECH + SLL 5,A5 + ADDI WHICH_WRESTLER_TALKS,A5 + MOVE *A5,A2,L + MOVI 500,A0 + CALLR ADD_IF_SILENT + DIE + +WHICH_WRESTLER_TALKS + .LONG HART_FINISHES + .LONG RAZOR_FINISHES + .LONG UNDERTAKER_FINISHES + .LONG YOKO_FINISHES + .LONG SHAWN_FINISHES + .LONG BAM_FINISHES + .LONG DOINK_FINISHES + .LONG 0 + .LONG LUGER_FINISHES + + .LONG 0 + .WORD 0,010H +HART_FINISHES + .WORD 0 + + .LONG 0 + .WORD 0,010H +RAZOR_FINISHES + .WORD RAZOR_RIGHT_GUY + + .LONG 0 + .WORD 0,010H +UNDERTAKER_FINISHES + .WORD 0 + + .LONG 0 + .WORD 0,010H +YOKO_FINISHES + .WORD 0 + + .LONG 0 + .WORD 1,010H +SHAWN_FINISHES + .WORD SHAWN_LUCKY_YOU + .WORD SHAWN_WRESTLER_90 + + .LONG 0 + .WORD 2,010H +BAM_FINISHES + .WORD BAM_BEAST_FROM_EAST + .WORD BAM_BAM_YEAH + .WORD BAM_GET_OUT + + .LONG 0 + .WORD 0,010H +DOINK_FINISHES + .WORD DOINK_LAUGH_1 + + .LONG 0 + .WORD 0,010H +LUGER_FINISHES + .WORD 0 + +HIT_THE_MAT + MOVK 4,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI MATT_HITS,a0 + MOVE *A0,A0 + CALLA triple_sound + RETS + + .WORD 4,010H +MATT_HITS + .word 0BFH,0C1H,0C3H,0BH + .word 0DH + +SMALL_BOUNCE + MOVK 2,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI small_bounce_sounds,a0 + MOVE *A0,A0 + CALLA triple_sound + RETS + +SMALL_RUN + MOVK 1,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI small_bounce_sounds,a0 + MOVE *A0,A0 + CALLA triple_sound + RETS + +small_bounce_sounds + .word 0C0H,0C2H,0DH + +WALK_SOUND + + MOVI 046H,A0 + MOVE @HCOUNT,A1 + SRL 1,A1 + JRNC WALK_SET + MOVI 047H,A0 +WALK_SET + CALLA triple_sound + RETS + + .WORD 3 +SETUP_TABLE + .WORD CROWD_CRESCENDO,D_CROWD_CRESCENDO,C_LONG|C_OVERIDE,0 + .WORD CROWD_OH_1,D_CROWD_OH_1,C_LONG|C_OVERIDE,0 + .WORD CROWD_HEY_LOOP,D_CROWD_HEY_LOOP,C_LONG|C_OVERIDE,0 + .WORD CROWD_YEAH_0,D_CROWD_YEAH_0,C_LONG|C_OVERIDE,0 + + .WORD 0 +CRESCENDO_TABLE + .WORD CROWD_CRESCENDO,D_CROWD_CRESCENDO,C_LONG|C_RANDOM,700 + + .WORD 2 +ROPES_CHEER + .WORD CROWD_WHISTLE_1,D_CROWD_WHISTLE_1,C_LONG|C_RANDOM,600 + .WORD CROWD_WHOA_1,D_CROWD_WHOA_1,C_LONG|C_RANDOM,600 + .WORD CROWD_OH_1,D_CROWD_OH_1,C_LONG|C_RANDOM,600 + + .WORD 2 +CROWD_FAIL + .WORD CROWD_OH_FAIL,D_CROWD_OH_FAIL,C_LONG|C_RANDOM,600 + .WORD CROWD_OH_0,D_CROWD_OH_0,C_LONG|C_RANDOM,600 + .WORD CROWD_BOO,D_CROWD_BOO,C_LONG|C_RANDOM,600 + + .WORD 2 +CROWD_SPECIAL + .WORD CROWD_OH_CHEER,D_CROWD_OH_CHEER,C_LONG|C_OVERIDE,0 + .WORD CROWD_HOORAY,D_CROWD_HOORAY,C_LONG|C_OVERIDE,0 + .WORD CROWD_VICTORY_LOOP,D_CROWD_VICTORY_LOOP,C_LONG|C_OVERIDE,0 + + .WORD 4 +CROWD_CHEER + .WORD CROWD_YEAH_0,D_CROWD_YEAH_0,C_LONG|C_RANDOM,600 + .WORD CROWD_WHISTLE_1,D_CROWD_WHISTLE_1,C_LONG|C_RANDOM,600 + .WORD CROWD_CHEER_0,D_CROWD_CHEER_0,C_LONG|C_RANDOM,600 + .WORD CROWD_CHEER_1,D_CROWD_CHEER_1,C_LONG|C_RANDOM,600 + .WORD CROWD_DOUBLE_WHOA,D_CROWD_DOUBLE_WHOA,C_LONG|C_RANDOM,600 + + .WORD 1 +CROWD_THROWN + .WORD CROWD_OH_CHEER,D_CROWD_OH_CHEER,C_SHORT|C_OVERIDE,0 + .WORD CROWD_WHISTLE_1,D_CROWD_WHISTLE_1,C_SHORT|C_OVERIDE,0 + + .WORD 1 +CROWD_ORDINARY + .WORD CROWD_OH_CHEER,D_CROWD_OH_CHEER,C_SHORT|C_OVERIDE|C_RANDOM,250 + .WORD CROWD_WHISTLE_1,D_CROWD_WHISTLE_1,C_SHORT|C_OVERIDE|C_RANDOM,250 + +;A11 = WHICH CHANNEL, -1 = MASTER +;A8 = TICKS TO FADE OVER +FADE_MASTER_VOL + MOVI ADJVOLUME,A0 + CALLA GET_ADJ + MOVE A0,A9 + SLL 16,A9 + MOVE A9,A10 + DIVU A8,A9 +NEXT_FADE + SUB A9,A10 + MOVE A10,A0 + SRL 16,A0 + MOVE A11,A1 + CALLR SET_LOWER_VOL + SLEEPK 1 + DSJS A8,NEXT_FADE + CLR A0 + MOVE A11,A1 + CALLR SET_LOWER_VOL + DIE + +;A1 WHICH CHANNEL +;A0 WHAT TO SET CHANNEL VOL TO 255=100% +SET_LOWER_VOL + MOVI 55ABH,A3 + ADD A1,A3 + CALLA SNDSND + MOVE A0,A3 + SLL 8,A0 + NOT A3 + SLL 24,A3 + SRL 24,A3 + OR A0,A3 + CALLA SNDSND + RETS + + +****************************************************************************** + .end + + + + + \ No newline at end of file diff --git a/BACKUP/DELETE.ASM b/BACKUP/DELETE.ASM new file mode 100644 index 0000000..00e68bf --- /dev/null +++ b/BACKUP/DELETE.ASM @@ -0,0 +1,15 @@ +;These are .ASM files that are no longer used but simply refuse to die. + +ADAMIMG.ASM +ADMSEQ1.ASM +ADMSEQ2.ASM +ADMSEQ3.ASM +BUG.ASM +COMMON.ASM +DELETE.ASM +HARTIMG.ASM +MAINIMG.ASM +ROPESIMG.ASM +TEMPLATE.ASM + + \ No newline at end of file diff --git a/BACKUP/DELETE.BAT b/BACKUP/DELETE.BAT new file mode 100644 index 0000000..0435f1c --- /dev/null +++ b/BACKUP/DELETE.BAT @@ -0,0 +1,23 @@ +del ATTRACT.IMG +del BLANK.IMG +del DCSLOGO.IMG +del DNKPIN.IMG +del NMATCH12.IMG +del NUFLOR.IMG +del PWRBARS.IMG +del REF_HIT.IMG +del REF_MSC.IMG +del REF_PNC.IMG +del REF_WLK.IMG +del SHIT.IMG +del SHIT2.IMG +del SHNGSUP.IMG +del SHNRUN.IMG +del SHN_JMS.IMG +del SIDEROPE.IMG +del SLATE.IMG +del TEMP.IMG +del WWFMUGS2.IMG +del XPLOSION.IMG + + \ No newline at end of file diff --git a/BACKUP/DELT.BAT b/BACKUP/DELT.BAT new file mode 100644 index 0000000..071a235 --- /dev/null +++ b/BACKUP/DELT.BAT @@ -0,0 +1,3 @@ +@echo off +del t\%1 + \ No newline at end of file diff --git a/BACKUP/DIAG.ASM b/BACKUP/DIAG.ASM new file mode 100644 index 0000000..3bf5cf6 --- /dev/null +++ b/BACKUP/DIAG.ASM @@ -0,0 +1,5794 @@ +************************************************************** +* +* Software: JAMIE BEGELMAN, KURT MAHAN, EUGENE P. JARVIS +* Initiated: ? +* +* Modified: Shawn Liptak, 11/14/91 -Total carnage clean up +* Shawn Liptak, 1/20/92 -DIP switch test +* Shawn Liptak, 1/24/92 -Added line_draw +* Shawn Liptak, 2/20/92 -Basketball cleanup +* GEORGE PETRO, 1/17/93 -NBA JAM +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 3/24/93 16:48 +************************************************************** + .width 132 + .option b,d,l,t + .mnolist + + + .include "gsp.equ" + .include "sys.equ" + .include mproc.equ +; .include mac2.asm + .include link.equ + .include imgtbl.glo +; .include "imgtbl2.glo" +; .include "shawn.hdr" + .include "macros.h" + .INCLUDE GAME.EQU + .INCLUDE DIP.EQU + + ;from DCSSOUND.ASM + .ref SNDSND + + .ref _tseconds + .ref _switch_map_mode + .ref _coin_addr + .ref _switch_addr + .ref _switch2_addr + .ref _watchdog_addr + .ref _dipswitch_addr + .ref _sound_addr + .ref _soundirq_addr + .ref _coin_counter_addr + .ref InitAddresses + .ref dec_to_asc + .ref copy_string,copy_rom_string + .ref concat_string + .ref message_buffer + .ref SOUNDSUP + .ref _rtc_seconds + .ref _rtc_minutes + .ref _rtc_hours + .ref _rtc_day + .ref _rtc_date + .ref _rtc_month + .ref _rtc_year + .ref _year + .ref _month + .ref _day + .ref _serial_number + .ref _man_date + + .globl _get_time + .globl _set_time + .globl _aquire_time + + +SCRXFUDGE equ 56 +************************************************************************** +* * +* DEFS AND REFS * +* * +************************************************************************** + .ref fudge_switches, fudge_switches_diag, CPU_RET + .REF SNDSND,INTIO,WARMSET,GET_AUD,STORE_AUDIT,WDOGDIS + .ref AUD1, GAMSTATE, KILL_AUD, PCMOSRET + .ref CLR_AUD, FAC_SET, CMOS_VAL, ROM_NAME + + .DEF POWERTST, DIAGCPUTEST, POWERCMOS + .def SWITCHTEST, SWSET1, SWSET2 + .DEF CROSS_H,COL_BARS,BURN_IN,STRNEW1 + + .DEF CIRCLE,HVLINE,STRING,RECTANGLE,POINT,DSCRCLR,INITCOLR + .DEF READ_DIP + + .REF SNDTST + .REF SYSCOPY +*SYMBOLS IN MENU.ASM + .REF USA_1, USA_2, USA_3, USA_4, USA_ELECTITLE + .REF GERMAN_1, GERMAN_2, GERMAN_3, GERMAN_4, GERMAN_ELECTITLE + .REF FRENCH_1, FRENCH_2, FRENCH_3, FRENCH_4, FRENCH_ELECTITLE + .REF DIPCOINTAB + + + .REF GET_ADJ, GET_CSPT, NO_CREDS + .REF PUT_ADJ, CRED_P, HEXTOASC, F_ADC_S, SET_COIN_ADJ + .REF init_all, mainlp, DIAG_COLORS + +* +*DIAGNOSTIC SOUND EQUATES +* +CMOS_ERROR_SND .EQU 0203h +CPU_ERROR_SND .EQU 0203h +DIP_SND .EQU 0c8h +SWITCH_SND .EQU 0c8h + + .BSS SWSET1,32 ; FOR SWITCH TEST + .BSS SWSET2,32 + + .BSS DIPVAL,16 + .BSS DIP1ST,16 + + .BSS FORCEDIP,16 ; FOR FORCING THE USE OF THE DIP + .BSS CERRORS,32 + .BSS CPASSES,32 + .BSS SCHANGE,16 + .bss _snd_status,32 + .bss _b6_save,32 ; Temporary register fer me + .bss _temporary,32 ; Another temp fer me + .bss _snd_diag_code,16 ; Temporary storage for sound diag code + .bss _snd_chip_count,16 ; Temporary register fer me + .bss _pic_raw,128 ; Stuff fer the PIC + .bss _pic_temp,64 + +************************************************************************** +* * +* USEFUL MACROS * +* * +************************************************************************** +* +* TIMED PAUSE +* +PAUSE .macro TIME, REG + MOVI :TIME:,:REG:,L +LABEL? NOP + DSJS :REG:,LABEL? + .endm + +*BIT SET +* BSET BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO SET BIT IN +* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY + +BSET .macro P1,R1 + MOVK 1,A14 + SLL :P1:,A14 + OR A14,:R1: + .endm + + +* +*RJST - RIGHT JUSTIFIES BITS IN A LONG WORD, I.E. RIGHTMOST BIT +* TO BIT POSITION 0 +* RJST REG +RJST .macro REG + MOVE :REG:,:REG: + JRZ MX? +MLP? + SRL 1,:REG: + JRNC MLP? + SLL 1,:REG: + ADDK 1,:REG: +MX? + .endm + + +BUT_MAC .macro X,Y,RADIUS,COLOR,MASK,SHIFT,EXTEND + .WORD :X: + .WORD :Y: + .WORD :RADIUS: + .LONG :COLOR: + .LONG :MASK: + .WORD :SHIFT: + .WORD :EXTEND: + .endm + +STR_MAC .macro X,Y,STRING,COLOR,DIR + .WORD :X: + .WORD :Y: + .LONG :STRING: + .WORD :COLOR: + .WORD :DIR: + .endm + +VECMAC .macro COLOR,X1,Y1,X2,Y2 + .WORD :COLOR: + .WORD :X1: + .WORD :Y1: + .WORD :X2: + .WORD :Y2: + .endm + +DOTMAC .macro COLOR,X,Y + .WORD :COLOR: + .WORD :X: + .WORD :Y: + .endm + +RECTMAC .macro COLOR,X,Y,W,H + .WORD :W: + .WORD :H: + .WORD :X: + .WORD :Y: + .WORD :COLOR: + .endm + +CHIPMAC .macro NUM,X1,Y1,X2,Y2,X3,Y3,STRING,DIR,X4,Y4,STUFFED + .WORD :NUM: + .WORD :X1: + .WORD :Y1: + .WORD :X2: + .WORD :Y2: + .WORD :X3: + .WORD :Y3: + .LONG :STRING: + .WORD :DIR: + .WORD :X4: + .WORD :Y4: + .WORD :STUFFED: + .endm + +CMNUM EQU 0 +CMLOC EQU CMNUM+16 +CMXLOC EQU CMLOC +CMYLOC EQU CMLOC+16 +CMSIZE EQU CMLOC+32 +CMXSIZE EQU CMSIZE +CMYSIZE EQU CMSIZE+16 +CMOFFSET EQU CMSIZE+32 +CMSTRING EQU CMOFFSET+32 +CMDIR EQU CMSTRING+32 +CMPINLOC EQU CMDIR+16 +CMSTUFFED EQU CMPINLOC+32 +CMEND EQU CMSTUFFED+16 + + +************************************************************************** +* * +* RAM_CHIP: MACRO DEFINES A RAM CHIP RECORD. * +* * +* CHIP_NO -- CHIP NUMBER * +* WIDTH -- CHIP CELL SIZE IN BITS (MUST BE > 0) * +* INTERLEAVE -- DISTANCE BETWEEN ADJACENT CELLS ON CHIP (IN BITS) * +* START_ADDR -- ADDRESS OF FIRST CELL ON CHIP * +* END_ADDR -- ADDRESS OF LAST CELL ON CHIP * +* * +************************************************************************** + +RAM_CHIP .macro TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR + + .WORD :WIDTH: + .WORD :INTERLEAVE: + .WORD :CHIP_NO: + .LONG :START_ADDR: + .LONG :END_ADDR: + .LONG :TAB_LINK: + .endm + +RAM_WDTH EQU 000H ; OFFSETS INTO RAM CHIP RECORD +RAM_ITLV EQU 010H +RAM_NMBR EQU 020H +RAM_SADR EQU 030H +RAM_EADR EQU 050H +RAM_LINK EQU 070H +RAM_SIZE EQU 090H + +ROM_CKSM EQU 000H +ROM_WDTH EQU 010H ; OFFSETS INTO ROM CHIP RECORD +ROM_ITLV EQU 020H +ROM_NMBR EQU 030H +ROM_SADR EQU 040H +ROM_EADR EQU 060H +ROM_LINK EQU 080H +ROM_SIZE EQU 0A0H + +**************************************************************************** +* ROM_CHIP: MACRO DEFINES A ROM CHIP RECORD. * +* * +* CHIP_NO -- CHIP NUMBER * +* WIDTH -- CHIP CELL SIZE IN BITS (MUST BE > 0) * +* INTERLEAVE -- DISTANCE BETWEEN ADJACENT CELLS ON CHIP (IN BITS) * +* START_ADDR -- ADDRESS OF FIRST CELL ON CHIP * +* END_ADDR -- ADDRESS OF LAST CELL ON CHIP * +* CHECK_SUM -- DATAIO CHECK SUM FOR CHIP * +**************************************************************************** + +ROM_CHIP .macro TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR, CHECK_SUM + + .WORD :CHECK_SUM: + .WORD :WIDTH: + .WORD :INTERLEAVE: + .WORD :CHIP_NO: + .LONG :START_ADDR: + .LONG :END_ADDR: + .LONG :TAB_LINK: + + .endm + + +RANDOM_SEED EQU 5A5A5A5Ah ; RAM TESTS: PSEUDO-RANDOM SEQUENCE +ZERO_EXTEND EQU 1Fh ; PARAMETERS +SIGN_EXTEND EQU 20h +PAL_SELECT EQU 0FFDCH ; ENABLE VIDEO PALETTE MAP ACCESS + + + .text + .even + + +************************************************************************** +* * +* POWERTST * +* * +* POWERUP SELF TEST ROUTINES * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** +POWERTST + dint + setf 16,1,0 + setf 32,0,1 + MOVI STCKST,SP,L +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + +; HALT DMA AND ENABLE CACHE + + clr a14 + move a14,@DMACTRL + move a14,@DMACTRL + + FCALL INTIO,B6 + +; DISABLE VIDEO PALETTE RAMS, AUTOERASE AND ERROR LED + + MOVI SYSCINIT,A13 + MOVE A13,@SYSCTRL + + FCALL CPUTEST,SP + JAUC WARMSET + + + +**************************************************************************** +* * +* PIC SECURITY STUFF * +* * +* Security source for WWF-UNIT's PIC * +* * +* Version 1.00 * +* Written by: Michael J. Lynch * +* Copyright (c) 1994 by Williams Electronics Games Inc. * +* All rights reserved * +* * +* TTTTT OOO PPPP SSS EEEEE CCC RRRR EEEEE TTTTT * +* T O O P P S S E C C R R E T * +* T O O P P S E C R R E T * +* T O O PPPP SSS EEEE C RRRR EEEE T * +* T O O P S E C R R E T * +* T O O P S S E C C R R E T * +* T OOO P SSS EEEEE CCC R R EEEEE T * +* * +* * +* Company Confidential Information * +* NEED TO KNOW BASIS ONLY * +* * +* USE OR DISCLOSURE STRICTLY PROHIBITED UNLESS APPROVED IN WRITING FROM * +* WILLIAMS ELECTRONICS GAMES INC. * +* * +* Unapproved use or disclosure will result in severe torture!!!!! * +* * +**************************************************************************** + +; _pic_bin2bcd Converts a hex number in a7 to BCD and puts it in A3 +_pic_bin2bcd: + clr a3 + movi 100000,a0 +_bin2bcd_loop: + sll 4,a3 + move a7,a1 + divu a0,a1 + or a1,a3 + mpyu a0,a1 + sub a1,a7 + move a0,a1 + movk 10,a0 + divu a0,a1 + move a1,a0 + jrnz _bin2bcd_loop + FRET b6 + +****************************************************************************** +* * +* _bcd2hex - Converts a 32 bit (8 digit) BCD Number to Hexidecimal * +* * +* ENTRY * +* A0 - BCD Number to be converted * +* B6 - Return Address * +* * +* EXIT * +* A2 - Converted Number (hex) * +* * +* USES * +* A1 - Multiplier * +* A3 - Temporary * +* A4 - Digit Counter * +* * +* Written by: Michael J. Lynch * +* * +****************************************************************************** +_bcd2hex: + clr a2 ; Start with 0 + movk 1,a1 ; Starting Multiplier + movk 8,a4 ; Number of BCD digits to convert +_b2h_loop: ; Main BCD to hex conversion loop + move a0,a3 ; Put BCD number in temporary register + andi 0fh,a3 ; get rid of bits not interested in + mpyu a1,a3 ; multiply by current multiplier + add a3,a2 ; Accumulate into final register + srl 4,a0 ; Shift to next BCD digit + movk 10,a3 ; Calculate next multiplier (mult = mult * 10) + mpyu a3,a1 ; New Multiplier + dsjs a4,_b2h_loop ; Keep going until 8 BCD digits are done + FRET b6 ; return + +_read_pic_data: + setf 8,0 + setf 32,0,1 + movk 16,a9 ; Number of bytes of data to read + movi _pic_raw,a1 ; address at which to store raw data from PIC + movk 010h,a8 ; Send Request Serial Number Data Command + move a8,@PIC_COMMAND +_rp_data_loop: + setf 16,0 + clr a8 + move a8,@PIC_COMMAND + movi 1000000,a2 ; Wait for PIC to acknowledge +_rp_ack_loop: + move a2,a2 ; Check for command timeout + jrz gn_bad ; WOA PIC never acknowledged - ERROR!!!! + move @_watchdog_addr,a8,L + move a8,*a8 + move @_soundirq_addr,a8,L + move *a8,a8 + subi 1,a2 + btst 12,a8 ; Data available ? + jrnz _rp_ack_loop ; NO + setf 8,0 ; YES + move @PIC_DATA,a0 ; read data + move a0,*a1+ ; write to temp holding area + movk 010h,a8 ; Acknowledge reciept of data + setf 16,0 + move a8,@PIC_COMMAND + movi 1000000,a2 ; Wait for PIC n acknowlegde +_rp_nack_loop: + move a2,a2 + jrz gn_bad + move @_watchdog_addr,a8,L + move a8,*a8 + move @_soundirq_addr,a8,L + move *a8,a8 + subi 1,a2 + btst 12,a8 + jrz _rp_nack_loop + dsj a9,_rp_data_loop + clr a4 ; Holding Register for X + clr a5 ; Holding Register for Y + setf 8,0 + movi _pic_raw,a10 + addi 060h,a10 + move *a10+,a4 ; Get X + move *a10,a5 ; Get Y + setf 24,0 + clr a7 ; Calculate B-3-5-9 + movi _pic_raw,a10 + move *a10,a7 + subi 15732,a7 + movi 581,a0 + divu a0,a7 + sub a4,a7 ; B359 (binary) + FCALL _pic_bin2bcd,b6 ; B359 (bcd) a1 = B359 + setf 4,0 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addi 014h,a10 + move a0,*a10 ; Stuff the 5 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 0ch,a10 + move a0,*a10 ; Stuff the 3 + + + movi _pic_raw,a10 + addi 018h,a10 + move *a10,a7,1 ; Calculate 2-A-0-8-6 + subi 7463513,a7 + movi 4223,a0 + divu a0,a7 + sub a5,a7 + sub a5,a7 + sub a4,a7 ; 2A086 (binary) + FCALL _pic_bin2bcd,b6 ; 2A086 (bcd) + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 018h,a10 + move a0,*a10 ; Stuff the 6 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addi 020h,a10 + move a0,*a10 ; Stuff the 8 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + move a0,*a10 ; Stuff the 0 + srl 8,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 8,a10 + move a0,*a10 ; Stuff the 2 + + + setf 24,0 ; Calcuate 1-7-4 + movi 038h,a10 + addi _pic_raw,a10 + move *a10,a7 + subi 127984,a7 + movi 7117,a0 + divu a0,a7 + sub a5,a7 + sub a5,a7 + sub a5,a7 + sub a5,a7 + sub a5,a7 ; 174 (binary) + FCALL _pic_bin2bcd,b6 ; 174 (bcd) a1 = 174 + setf 4,0 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 010h,a10 + move a0,*a10 ; Stuff the 4 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 01ch,a10 + move a0,*a10 ; Stuff the 7 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 4,a10 + move a0,*a10 ; Stuff the 1 + + setf 16,0 + movi 050h,a10 + addi _pic_raw,a10 + move *a10,a0 ; This is a pointer to the date code + move *a10,a1 + sll 8,a1 + srl 8,a0 + andi 0ffh,a0 + andi 0ff00h,a1 + or a1,a0 + move a0,@_man_date,L + + setf 4,0 + movi _pic_temp,a10 + addk 0ch,a10 + move *a10+,a0 ; Most Significant Digit (serial number) + sll 4,a0 + move *a10+,a1 + or a1,a0 + sll 4,a0 + move *a10+,a1 + or a1,a0 + sll 4,a0 + move *a10+,a1 + or a1,a0 + sll 4,a0 + move *a10+,a1 + or a1,a0 + sll 4,a0 + move *a10+,a1 ; Least Significant Digit (serial number) + or a1,a0 + FCALL _bcd2hex,b6 ; Convert to hex (a2 = serial # hex) + move a2,@_serial_number,L + + setf 4,0 + movi _pic_temp,a10 + move *a10+,a0 ; Most Significant Digit (game number) + sll 4,a0 + move *a10+,a1 + or a1,a0 + sll 4,a0 + move *a10+,a1 ; Least Significant Digit (game number) + or a1,a0 + FCALL _bcd2hex,b6 ; Convert to hex + + clr a1 + cmpi 528,a2 ; Development PIC Game Number + jrz gn_good + cmpi 430,a2 ; Real Game Number (WrestleMania) + jrz gn_good +gn_bad: + movi SEC_MESS_2,a0 ; Level 2 Security Check failure + FCALL STRINGCENTER,b6 + addi [220,0],a1 + clr a2 + movi COLOR_RED,a3 + FCALL STRING,b6 + LOCKUP +gn_good: + setf 8,0 ; Stomp on memory used to decode PIC + clr a0 + movi 16,a1 + movi _pic_raw,a2 +_stomp_temp: + move a0,*a2+ + dsjs a1,_stomp_temp + movi 8,a1 + movi _pic_temp,a2 +_stomp_temp1: + move a0,*a2+ + dsjs a1,_stomp_temp1 + setf 16,1,0 ;Field0 = Word sign extend + setf 32,0,1 ;Field1 = Long word + rets + + +************************************************************************** +* * +* POWERCMOS * +* * +* CHECK THE CMOS AND DO A LOT OF OTHER STUFF -- SHOW THE * +* POWER UP MESSAGES * +* * +* ENTRY NOTHING * +* EXIT NOTHING * +* * +************************************************************************** +POWERCMOS: + DINT + MOVI SYSCINIT,A1 + MOVE A1,@SYSCTRL,W + + CALLA WDOGDIS ; GET RID OF WATCH DOG + + CLR A13 ; USED TO DECIDE WHETHER PAUSE OR NOT + MOVE A13,@DMACTRL,W + MOVE A13,@DMACTRL,W + FCALL INITCOLR,B5 ; FIX UP THE COLORS + FCALL INTIO,B6 + FCALL DSCRCLR,B6 ; MAKE SURE OF SCREEN + MOVI ROM_NAME,A0 + FCALL STRINGCENTER,B6 ; GET WIDTH OF STRING + ADDI [30,0],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + callr _read_pic_data + movi 05018h,a13 ; Palette 128 match color (BLACK) + move a13,@VMUX_BREG1,W + movi 08080h,a13 ; Set Palette # to 128 + move a13,@DMACMAP,W + movi SEC_MESS_1,a0 ; Print the message (won't show up) + FCALL STRINGCENTER,b6 ; Note - only shows up on pirate + addi [220,0],a1 ; hardware + clr a2 + movi COLOR_RED,a3 + FCALL STRING,b6 + clr a13 ; Set palette # back to 0 + move a13,@DMACMAP,W + + movi SNDREVPROMPT,a0 ; Sound Revision Prompt + FCALL STRINGCENTER,b6 + addi [120,0],a1 + clr a2 + movi COLOR_PURPLE,a3 + FCALL STRING,b6 + move @_watchdog_addr,a0,L + move a0,*a0,W + move @_coin_counter_addr,a0,L + movi 030h,a1 ; Yank down the reset + move a1,*a0,W + movi 10000,a1 ; Hold it fer a while + dsjs a1,$ + movi 020h,a1 ; Let it go + move a1,*a0,W + movi 10000,a1 + dsjs a1,$ + move @_sound_addr,a0,L ; Bypass the diags + movb a0,*a0 + move @_watchdog_addr,a0,L ; Kill the dog + move a0,*a0,W + movi 500000,a1 ; Wait fer a while +_swait_lp + move @_watchdog_addr,a0,L + move *a0,a0,W + dsjs a1,_swait_lp +; movk 2,a2 +;_wait_diag +; movi 1000000,a1 +;_wait_diag_1 +; move @_soundirq_addr,a0,L +; move *a0,a0,W +; btst B_SDAV,a0 ; Sound data waiting +; jrz _diag_byte_1 +; move @_watchdog_addr,a0,L +; move a0,*a0,W +; dsjs a1,_wait_diag_1 +; jruc _snd_timeout +;_diag_byte_1 +; move @SOUND,a0,W ; Yes - get rid of it +; movi 10000,a1 +; dsjs a1,$ +; dsjs a2,_wait_diag + clr a3 ; Turn on the sounds + move a3,@SOUNDSUP,W + movi 999,a3 ; Send revision request sound call + calla SNDSND + movi 1000000,a2 +_sndrev_loop + move @_watchdog_addr,a0,L + movb a0,*a0 + move @_soundirq_addr,a0,L ; Wait fer a response + move *a0,a1,W + btst B_SDAV,a1 ; Got a response ? + jrz _snd_response ; BR = yes + dsjs a2,_sndrev_loop +_snd_timeout + movi SNDTIMEOUT,a0 ; If we get here we never got a response + FCALL STRINGCENTER,b6 ; Tell operator about it + addi [135,0],a1 + clr a2 + movi COLOR_RED,a3 + FCALL STRING,b6 + jruc _sndrev_done ; Then we be done +_snd_response + move @_sound_addr,a0,L ; Get sound revision data + move *a0,a0,W + move a0,@_snd_chip_count,W ; Put up sound revision + move a0,a1 +; andi 0d0h,a1 + andi 0ffh,a1 + cmpi 0ffh,a1 + jrz _snd_timeout + andi 0f0h,a1 + cmpi 0d0h,a1 + jrz _proto_version + movi SNDRELEASEPROMPT,a4 + jruc _do_snd_version +_proto_version + movi SNDPROTOPROMPT,a4 +_do_snd_version + calla copy_rom_string + move @_snd_chip_count,a0,W + andi 0fh,a0 + movk 15,a1 + calla dec_to_asc + calla concat_string + movi message_buffer,a0 + FCALL STRINGCENTER,b6 + addi [135,0],a1 + clr a2 + movi COLOR_WHITE,a3 + FCALL STRING,b6 +_sndrev_done + + movi GAMESNPROMPT,a0 ; Put up Game Serial number + FCALL STRINGCENTER,b6 + addi [160,0],a1 + clr a2 + movi COLOR_PURPLE,a3 + FCALL STRING,b6 + move @_serial_number,a0,L ; Serial number put here by _get_serial_number + movi 1000000,a1 + calla dec_to_asc + calla copy_string + movi message_buffer,a0 + FCALL STRINGCENTER,b6 + addi [175,0],a1 + clr a2 + movi COLOR_WHITE,a3 + FCALL STRING,b6 + + CALLA CMOS_VAL ; CHECKSUM AUDITS/ADJUSTMENTS + JREQ CMOSOK +* +* BAD CHECKSUM ON POWERUP ----> FACTORY SET +* +; CALLA RES_ALL ;ALL TIME TABLE + clr a0 ;Full + CALLA FAC_SET + CALLA CLR_AUD + + MOVK 1,A13 ; FLAG ERROR + CALLA CMOS_VAL ; TRY AGAIN + JREQ CMOSB1 ; BR = OK WE'RE IN + + MOVI CMOS_BAD,A0 + FCALL STRINGCENTER,B6 + ADDI [50,0],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + MOVI CMOS_UNFAC,A0 + FCALL STRINGCENTER,B6 + ADDI [65,0],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + JRUC CMOS1 +CMOSB1 + MOVI CMOS_FACRES,A0 + FCALL STRINGCENTER,B6 + ADDI [50,0],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + JRUC CMOS1 +CMOSOK + MOVI CMOS_OK,A0 + FCALL STRINGCENTER,B6 + ADDI [50,0],A1 + CLR A2 + MOVI COLOR_GREEN,A3 + FCALL STRING,B6 + +CMOS1 + CALLA CRED_P ;CHECK OUT CREDITS, THIS WILL CLEAR + ;IF NECESSARY. THANX LINKY! + + CALLR READ_DIP + ANDI DPUSECMOS,A0 + JRNZ CMOS3 ; BR = USING CMOS COINAGE + + MOVI CMOS_DIP,A0 + FCALL STRINGCENTER,B6 +; ADDI [110,0],A1 + ADDI [75,0],A1 + CLR A2 + MOVI COLOR_WHITE,A3 + FCALL STRING,B6 + + CALLR SET_DIP_COINAGE + JRUC CMOS4 + +CMOS3 +; +; USING CMOS HERE +; + MOVI CMOS_CMOS,A0 + FCALL STRINGCENTER,B6 +; ADDI [110,0],A1 + ADDI [75,0],A1 + CLR A2 + MOVI COLOR_WHITE,A3 + FCALL STRING,B6 +CMOS4 +; CALLR PLOTCOINAGE ; PLOT SOME COINAGE +; MOVE @SWITCH,A0,L ; CHECK SLAM SWITCH +; NOT A0 +; ANDI 00080000H,A0 + move @_coin_addr,a0,L + move *a0,a0,W + not a0 + andi 8h,a0 + JRZ CMOSRET + MOVI CMOS_TILT,A0 + FCALL STRINGCENTER,B6 + ADDI [205,0],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + MOVK 1,A13 ; FLAG ERROR +CMOSRET + MOVE A13,A13 + JRZ CTMP0 + + MOVI CMOS_ERROR_SND,A0 +; MOVE A0,@SOUND,W + move @_sound_addr,a13,L + move a0,*a13,W + + MOVI CMOS_WAIT,A0 + FCALL STRINGCENTER,B6 + ADDI [230,0],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + CALLA WDOGDIS ; DISABLE WOOF WOOF + + CALLA fudge_switches ;get fudged switches in a0 + andi BUTTONS|START_BITS,a0 + MOVE A0,@SWSET1,L +CTMP1 +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + CALLA fudge_switches ;get fudged switches in a0 + andi BUTTONS|START_BITS,a0 + MOVE @SWSET1,A1,L + CMP A0,A1 + JRZ CTMP1 + JRUC CTMP2 +CTMP0 + MOVI 200H,A0 +CTMP_WAIT +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a1,L + move a1,*a1 + + +;Temp!!!!! +;Speed up warm reset - Replace when we ship! +; PAUSE 1000H,B6 +; PAUSE 2000h,B6 ;Go fast +; DSJS A0,CTMP_WAIT + +CTMP2 + move @_serial_number,b5,L + move @_man_date,b6,L + JAUC PCMOSRET + + +SNDREVPROMPT + .string "SOUND SYSTEM VERSION",0 + .even +SNDPROTOPROMPT + .string "PROTO ",0 + .even +SNDRELEASEPROMPT + .string "RELEASE ",0 + .even +SNDTIMEOUT + .string "TIMEOUT ON RESPONSE FROM SOUND SECTION",0 + .even +GAMESNPROMPT + .string "GAME SERIAL NUMBER",0 + .even + +CMOS_TILT + .STRING "WARNING -- SLAM SWITCH CLOSED",0 + .EVEN + +CMOS_DIP + .STRING "USING DIPSWITCH COINAGE",0 + .EVEN + +CMOS_CMOS + .STRING "USING CMOS COINAGE",0 + .EVEN + +CMOS_WAIT + .STRING "ERRORS DETECTED -- ANY BUTTON TO CONTINUE",0 + .EVEN + +CMOS_FACRES + .STRING "CMOS INVALID -- FACTORY SETTINGS RESTORED",0 + .EVEN + +CMOS_BAD + .string "CMOS CHIP U62 BAD",0 + .EVEN + +CMOS_UNFAC + .STRING "UNABLE TO RESTORE FACTORY SETTINGS",0 + .EVEN + +CMOS_OK + .STRING "CMOS OK",0 + .EVEN + +************************************************************************** +* * +* BURNIN * +* * +* FACTORY BURNIN TEST -- EXITS BY RESETING THE GAME * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* NOTHING * +* * +* CALL * +* JAUC * +* * +************************************************************************** + +BURN_IN: + DINT + MOVI AUDAUTO,A0 ;ZERO OUT BURNIN AUDIT + CALLA KILL_AUD +BURNLOOP + CALLA WDOGDIS ;MAKE SURE THE DOG IS ASLEEP + FCALL CPUTEST,SP +BURNSP: + setf 16,1,0 + setf 32,0,1 + MOVI STCKST,SP,L ;RESTORE THE STACK PTR + MOVI SYSCINIT,A0 ;RE-INITIALIZE SYSTEM CONTROL + MOVE A0,@SYSCTRL,W + MOVE A0,@SYSCOPY,W ;KEEP A COPY IN RAM + MOVI AUDAUTO,A0 + CALLA AUD1 ;ANOTHER ONE WORKED + JRUC BURNLOOP + +************************************************************************** +* * +* DIAGCPUTEST * +* * +* DIAGNOSTIC CALL FOR THE CPU TEST * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* JUMPS TO *EXEC_LP* AFTER SETTING EVERYTHING UP * +* * +* CALL * +* JAUC * +* * +************************************************************************** + +DIAGCPUTEST: + CALLA WDOGDIS + DINT + calla InitAddresses ; Make sure I/O addresses are initialized + FCALL CPUTEST,SP +DIAGSP: + SETF 16,1,0 ; WORD NO SIGN EXTEND + SETF 32,0,1 ; LONG WORD + MOVI STCKST,SP,L + CALLA init_all + + callr _read_pic_data + + CALLA DIAG_COLORS ;FIRE UP THE COLORS + +; EINT ; ENABLE INTERRUPTS AND WE'RE OFF +; DISPON ; ENABLE THE DISPLAY SYSTEM + CREATE DIAG_PID,CPU_RET + MOVI INDIAG,A0 + MOVE A0,@GAMSTATE,W + movk 1,a0 ; Menu driver switch mapping mode + move a0,@_switch_map_mode,L + calla InitAddresses + JAUC mainlp + +**************************************** +* bin2bcd - Converts binary number pointed to by a0 to bcd and stores it back +* into area pointed to by a0. +* + SUBR bin2bcd + mmtm sp,a0,a1,a2,a3 + move *a0,a2,W + move a2,a1 + movi 10,a3 + divu a3,a1 + sll 4,a1 + movi 10,a3 + modu a3,a2 + or a2,a1 + move a1,*a0,W + mmfm sp,a0,a1,a2,a3 + rets + +********************************************************* +* _set_time - Sets the real time clock based on values in +* _rtc_seconds +* _rtc_minutes +* _rtc_hours +* _rtc_day +* _rtc_date +* _rtc_month +* _rtc_year +* Time is set through the PIC. + SUBR _set_time + mmtm sp,a0,a1,a2,a3,a4 + movi _rtc_seconds,a0,L + movi 7,a4 +_st_cnvt_loop + callr bin2bcd + addk 16,a0 + dsjs a4,_st_cnvt_loop + movi 14,a4 + movi _rtc_seconds,a3,L + pushst + dint + movi 012h,a0 + move a0,@PIC_COMMAND,W +_st_next_val + movk 2,a0 + move a0,@PIC_COMMAND,W + movi 1000000,a1 +_st_ack_wait + move @_watchdog_addr,a2,L + move a2,*a2,W + move @_soundirq_addr,a2,L + move *a2,a2,W + btst 12,a2 + jrz _got_st_ack + dsjs a1,_st_ack_wait + jruc _st_done +_got_st_ack + pushst + setf 4,0 + move *a3,a1,0 + popst + move a1,@PIC_COMMAND,W + ori 010h,a1 + move a1,@PIC_COMMAND,W + addk 4,a3 + btst 3,a3 + jrz _addr_ok + addk 8,a3 +_addr_ok + movi 1000000,a0 +_st_nack_wait + move @_watchdog_addr,a2,L + move a2,*a2,W + move @_soundirq_addr,a2,L + move *a2,a2,W + btst 12,a2 + jrnz _got_st_nack + dsjs a0,_st_nack_wait + jruc _st_done +_got_st_nack + dsj a4,_st_next_val +_st_done + popst + mmfm sp,a0,a1,a2,a3,a4 + rets + +******************************************** +* bcd2hex - Converts 2 digit BCD number in a1 to hex and stores back in a1 +* + SUBR bcd2hex + mmtm sp,a0,a3 + move a1,a2 + movk 10,a3 + andi 0f0h,a1 + srl 4,a1 + mpyu a3,a1 + andi 0fh,a2 + add a2,a1 + mmfm sp,a0,a3 + rets + +*********************************************** +* _aquire_time - Time aquisition trigger function called in the DIRQ +* Starts the acquisition of time information from the +* Real Time Clock (RTC). The time information is transfered +* from the RTC to the PIC by the PIC. This is done this way +* because the RTC to PIC interface is an I2C bus interface +* and requires approximately 3 ms to transfer the data from +* the RTC to the PIC. This function is called by the DIRQ +* every 27 ticks (495ms) and then on the next DIRQ the function +* to transfer the time information from the PIC to this +* application is called. This prevents this application from +* being bogged down while the time information is being +* moved from the RTC to the PIC. + SUBR _aquire_time + mmtm sp,a0,a1 + movi 011h,a0 ;Command code 0x1 + move a0,@PIC_COMMAND,W +_at_next_byte + movi 01h,a0 + move a0,@PIC_COMMAND,W + movi 100000,a0 ;Wait for Acknowledge +_at_ack_wait + move @_watchdog_addr,a1,L + move a1,*a1,W + move @_soundirq_addr,a1,L + move *a1,a1,W + btst 12,a1 + jrz _got_at_ack + dsjs a0,_at_ack_wait + jruc _at_done +_got_at_ack + movi 010h,a1 + move a1,@PIC_COMMAND,W ;Take away Request +_at_done + mmfm sp,a0,a1 + rets + +************************************************* +* _get_time - This function transfers the time information that was extracted +* from the RTC by the PIC from the PIC to some global memory +* area for use by this application. The time information is +* stored in hexidecimal word sized global values as follows +* +* _tseconds (0-59) Current seconds +* _tminutes (0-59) Current minutes +* _thours (0-23) Current hours +* _tday (1-7) Current Day (1=Sunday, 7=Saturday) +* _tdate (1-31) Current Date +* _tmonth (1-12) Current Month (1=January, 12=December) +* _tyear (0-99) Current Last 2 Digits of year + SUBR _get_time + mmtm sp,a0,a1,a2,a3 + movk 8,a3 ;Number of bytes of data to get + movi _tseconds,a2 + movi 013h,a0 ;Command code 0x3 + move a0,@PIC_COMMAND,W +_gt_next_byte + movi 03h,a0 + move a0,@PIC_COMMAND,W + movi 100000,a0 ;Wait for Acknowledge +_get_time_data_wait + move @_watchdog_addr,a1,L + move a1,*a1,W + move @_soundirq_addr,a1,L + move *a1,a1,W + btst 12,a1 + jrz _got_gt_ack + dsjs a0,_get_time_data_wait + cmpi 1,a3 + jrz _get_time_adjust + movk 1,a0 + jruc _get_time_done +_got_gt_ack + move @PIC_DATA,a0,W ;Read the data + movi 010h,a1 + move a1,@PIC_COMMAND,W ;Tell PIC we took data + andi 0ffh,a0 + move a0,*a2+,W + movi 100000,a0 +_gt_wait_nack + move @_watchdog_addr,a1,L + move a1,*a1,W + move @_soundirq_addr,a1,L + move *a1,a1,L + btst 12,a1 + jrnz _got_gt_nack + dsjs a0,_gt_wait_nack +_got_gt_nack + dsj a3,_gt_next_byte +_get_time_adjust + movi _tseconds,a0,L + move *a0,a1,W ;Mask off unused bits for seconds + andi 07fh,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnn _chk_seconds59 + clr a1 + jruc _seconds_ok +_chk_seconds59 + cmpi 60,a1 + jrlt _seconds_ok + clr a1 +_seconds_ok + move a1,*a0+,W + move *a0,a1,W ;Mask off unused bits for minutes + andi 07fh,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnn _chk_minutes59 + clr a1 + jruc _minutes_ok +_chk_minutes59 + cmpi 60,a1 + jrlt _minutes_ok + clr a1 +_minutes_ok + move a1,*a0+,W + move *a0,a1,W ;Mask off unused bits for hours + andi 03fh,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnn _chk_hours23 + clr a1 + jruc _hours_ok +_chk_hours23 + cmpi 24,a1 + jrlt _hours_ok + clr a1 +_hours_ok + move a1,*a0+,W + move *a0,a1,W ;Mask off unused bits for day + andi 07h,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnz _chk_day7 + movk 1,a1 + jruc _day_ok +_chk_day7 + cmpi 8,a1 + jrlt _day_ok + movk 1,a1 +_day_ok + move a1,*a0+,W + move *a0,a1,W ;Mask off unused bits for date + andi 03fh,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnz _chk_date31 + movk 1,a1 + jruc _date_ok +_chk_date31 + cmpi 32,a1 + jrlt _date_ok + movk 1,a1 +_date_ok + move a1,*a0+,W + move *a0,a1 ;Mask off unused bits for month + andi 01fh,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnz _chk_month12 + movk 1,a1 + jruc _month_ok +_chk_month12 + cmpi 13,a1 + jrlt _month_ok + movk 1,a1 +_month_ok + + move a1,*a0+,W + move *a0,a1,W + callr bcd2hex ;Convert to hex + move a1,a1 + jrnn _chk_year99 + clr a1 + jruc _year_ok +_chk_year99 + cmpi 100,a1 + jrlt _year_ok + clr a1 +_year_ok + move a1,*a0,W + clr a0 ;All bits used for year +_get_time_done + mmfm sp,a0,a1,a2,a3 + rets + +*********************************************** +* PICCHECK - Power up test for the PIC MicroController +* Checks basic communications with the PIC chip +* +PICCHECK + movi 1fh,a0 ;Command code 0xf + move a0,@PIC_COMMAND,W + movi 0fh,a0 + move a0,@PIC_COMMAND,W + movi 100000,a0 ;Wait for Acknowledge +pic_loop + move @_watchdog_addr,a1,L + move a1,*a1,W + move @_soundirq_addr,a1,L + move *a1,a1,W + btst 12,a1 + jrz _got_pic_ack ;BR = got acknowledge + dsjs a0,pic_loop + movk 1,a0 + jruc _piccheck_done +_got_pic_ack + move @PIC_DATA,a0,W ;Read the data + movi 010h,a1 + move a1,@PIC_COMMAND,W ;Tell PIC we took data + movi 100000,a1 +_pic_nack_loop + move @_watchdog_addr,a2,L + move a2,*a2,W + move @_soundirq_addr,a2,L + move *a2,a2,W + btst 12,a2 + jrnz _got_pic_nack + dsjs a1,_pic_nack_loop + movk 1,a0 + jruc _piccheck_done +_got_pic_nack + andi 0fh,a0 + cmpi 0fh,a0 + jrz _pic_ok + movk 1,a0 + jruc _piccheck_done +_pic_ok + clr a0 +_piccheck_done + FRET b5 + +*************************************************** +* SNDCHECK - Sound Subsystem Check during CPUTEST +* +SNDCHECK + move b6,@_b6_save,L + move @_coin_counter_addr,a0,L + movi 030h,a1 + move a1,*a0,W + movi 8,a1 + dsjs a1,$ + movi 020h,a1 + move a1,*a0,W + movi 1000000,a1 +dsp_loop1 + move @_watchdog_addr,a0,L + move a0,*a0,W + move @_soundirq_addr,a0,L + move *a0,a2,W + btst B_SDAV,a2 + jrz dsp_lp1_exit + dsjs a1,dsp_loop1 + movi DSP,a10 + movk 1,a0 + move a0,a11 + inc a11 + FCALL CHIPOUT,b5 + movk 1,a0 + jruc dspcheck_done +dsp_lp1_exit + move @_sound_addr,a0,L + move *a0,a0,W + andi 0ffh,a0 + cmpi 079h,a0 + jrz dsp_next_byte + movi DSP,a10 + movk 1,a0 + move a0,a11 + inc a11 + FCALL CHIPOUT,b5 + movk 1,a0 + jruc dspcheck_done +dsp_next_byte + movi 10000000,a1 +dsp_loop2 + move @_watchdog_addr,a0,L + move a0,*a0,W + move @_soundirq_addr,a0,L + move *a0,a2,W + btst B_SDAV,a2 + jrz dsp_lp2_exit + dsjs a1,dsp_loop2 + movi DSP,a10 + movk 1,a0 + move a0,a11 + inc a11 + FCALL CHIPOUT,b5 + movk 1,a0 + jruc dspcheck_done +dsp_lp2_exit + movi DSP,a10 + clr a0 + move a0,a11 + inc a11 + FCALL CHIPOUT,b5 + move @_sound_addr,a0,L + move *a0,a0,W + andi 0ffh,a0 + move a0,a14 + clr a0 + move a0,a0 + jrz dsp_ok + movk 1,a0 + jruc dspcheck_done +dsp_ok + clr a0 + move a0,@_snd_status,L + subi 2,a14 + move a14,@_snd_diag_code,W + clr a14 + move a14,@_snd_chip_count,W + movi SROMTAB,a12,L +snd_romok_loop + move *a12+,a10,L + jrz sndrom_done + move @_snd_chip_count,a14,W + move @_snd_diag_code,a11,W + cmp a11,a14 + jrnz sndchip_ok + movk 2,a11 + move a11,@_snd_status,L + jruc snd_chip_out +sndchip_ok + movk 1,a11 +snd_chip_out + addk 1,a14 + move a14,@_snd_chip_count,W + FCALL CHIPOUT,b5 + move @_snd_status,a11,L + jrz snd_romok_loop + movk 1,a0 + jruc dspcheck_done +sndrom_done + movi SNDRAMTAB,a12,L +snd_ramok_loop + move *a12+,a10,L + jrz sndram_done + move @_snd_diag_code,a14,W + cmpi 8,a14 + jrnz sndram_ok + movk 2,a11 + move a11,@_snd_status,L + jruc snd_ram_out +sndram_ok + movk 1,a11 +snd_ram_out + FCALL CHIPOUT,b5 + move @_snd_status,a11,L + jrz snd_ramok_loop + movk 1,a0 + jruc dspcheck_done +sndram_done + clr a0 +dspcheck_done + movi 1000000,a1 +dspcheck_wait_exit_loop + move @_watchdog_addr,a2,L + move a2,*a2,W + dsjs a1,dspcheck_wait_exit_loop + move @_b6_save,b6,L + FRET b6 + +************************************************************************** +* * +* CPUTEST * +* * +* THE ACTUAL CPU TEST STUFF * +* * +* ENTRY * +* SP RETURN ADDRESS * +* * +* EXIT * +* WHO KNOWS * +* * +* CALL * +* FCALL CPUTEST,SP * +* * +************************************************************************** +;CPUT_X .EQU 25 ;TEXT X POSITION +;CPUT_Y1 .EQU 128 ;TEXT ROW 1 Y POSITION +;CPUT_Y2 .EQU 140 ;TEXT ROW 2 Y POSITION +;CPUT_Y3 .EQU 152 ;TEXT ROW 3 Y POSITION +;CPUT_CLRS .EQU [CPUT_Y3-CPUT_Y1+15,200-CPUT_X] + +CPUT_X .EQU 180 ;TEXT X POSITION +CPUT_Y1 .EQU 118 ;TEXT ROW 1 Y POSITION +CPUT_Y2 .EQU 130 ;TEXT ROW 2 Y POSITION +CPUT_Y3 .EQU 142 ;TEXT ROW 3 Y POSITION +CPUT_CLRS .EQU [CPUT_Y3-CPUT_Y1+10,389-CPUT_X] + +CPUT_CLR .EQU [CPUT_Y1,CPUT_X] ;CLEAR START + +CPUTEST: +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + FCALL INITCOLR,B5 ;HEY! IT LOOKS BETTER THIS WAY + FCALL DSCRCLR,B6 ;BLOW THE SCREEN OR IT LOOKS TOO UGLY + + CLR B0 + + .if WWFUNIT + movi SYSCINIT,a13 + .else + MOVI 0FFFCH,A13 + .endif + + MOVE A13,@SYSCTRL,W ;MAKE SURE WE'RE WRITING TO BIT MAP + MOVI VRAMCHIPS,A14 ;VERIFY BIT MAP + FCALL RAMCHECK,B5 + +; ENABLE VIDEO PALETTE MAP ACCESS + + + .if WWFUNIT + +; movi PALENB,a13 + movi SYSCINIT,a13 + andni PALENB,a13 + + .else + MOVI PAL_SELECT,A13 + .endif + + MOVE A13,@SYSCTRL,W + MOVI PALCHIPS,A14 ;VERIFY OBJECT PALETTE RAM + FCALL RAMCHECK,B5 + MOVE B0,A12 + +; DISABLE VIDEO PALETTE MAP ACCESS + + + .if WWFUNIT + movi SYSCINIT,a13 + .else + MOVI 0FFFCH,A13 + .endif + + MOVE A13,@SYSCTRL,W + FCALL INITCOLR,B5 ;RELOAD THE COLORS + FCALL DSCRCLR,B6 + + FCALL CPUDRAW,B5 ;SHOW THE CPU + MOVI CPU,A10 ;WE GOT THIS FAR, CPU MUST BE OK + MOVI 1,A11 + FCALL CHIPOUT,B5 + + MOVI VRAMTAB,A9 + FCALL CHIPTABLE,B5 ;PLOT OUT THE CHIP TABLE + + MOVE A12,A12 + JRZ PSRAMCK +PBADRAM + MOVI RAMBADMESS,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + JRUC PCPUBAD + +PSRAMCK + MOVI SRAMCHECK,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + CLR B0 + MOVI SRAMCHIPS,A14 ;VERIFY SCRATCH RAMS + FCALL RAMCHECK,B5 + MOVE B0,A12 + move sp,a1 + movi STCKST,sp ; Set up a temporary stack + calla InitAddresses ; Reset the I/O Addresses + move a1,sp + + MOVI CPUT_CLR,A0 + MOVI CPUT_CLRS,A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + + MOVE A12,A12 + JRNZ PBADRAM +PROMCK + MOVI ROMCMESS,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + MOVI CPUEXIT1_MESS,A0 + MOVI [CPUT_Y2,CPUT_X],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + MOVI CPUEXIT2_MESS,A0 + MOVI [CPUT_Y3,CPUT_X],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + CLR B0 ;KEEP THE STATS HERE + + MOVI PROMCHIPS,A14 + FCALL ROMCHECK,B5 + jrnz PROMABORT + + move @DIPSWITCH,a14,W + andi DP4MEG_DIAG,a14 + jrz test_8meg_iroms + MOVI IROMCHIPS,A14 + FCALL ROMCHECK,B5 + jrnz PROMABORT + movi SYSCINIT,a14 + ori 0100h,a14 + move a14,@SYSCTRL,W ; Image IROM bank 1 + movi IROMCHIPS1,a14 + FCALL ROMCHECK,b5 + jrnz PROMABORT + + jruc irom_test_done +test_8meg_iroms: ; 8 Megabit Irom chips + MOVI IROMCHIPS_8MEG,A14 + FCALL ROMCHECK,B5 + jrnz PROMABORT + movi SYSCINIT,a14 + ori 0100h,a14 + move a14,@SYSCTRL,W ; Image IROM bank 1 + movi IROMCHIPS1_8MEG,a14 + FCALL ROMCHECK,b5 + jrnz PROMABORT +irom_test_done: + + move b0,a12 + movi CPUT_CLR,a0 + movi CPUT_CLRS,a1 + movi COLOR_BLACK,a2 + FCALL RECTANGLE,b6 + movi SYSCINIT,a14 + move a14,@SYSCTRL,W ; Back to IROM bank 0 + move a12,a12 + jrnz PBADROM +PROMABORT + movi SYSCINIT,a14 + move a14,@SYSCTRL,W ; Back to IROM bank 0 + MOVE B0,A12 + MOVI CPUT_CLR,A0 + MOVI CPUT_CLRS,A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + + MOVE A12,A12 +; jrnz PBADROM + +*WE CHECK ON THE DMA HERE +PDMACK + MOVI DMACMESS,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + FCALL DMACHECK,B5 ;CHECK THE DMA + MOVI DMA,A10 + MOVE A0,A11 + MOVE A0,A12 + INC A11 ;GREEN/RED + FCALL CHIPOUT,B5 + + MOVI CPUT_CLR,A0 + MOVI CPUT_CLRS,A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + + MOVE A12,A12 + jrnz PBADDMA + movi SNDCMESS,a0 + movi [CPUT_Y1,CPUT_X],a1 + clr a2 + movi COLOR_YELLOW,a3 + FCALL STRING,b6 + FCALL SNDCHECK,b6 +; movi DSP,a10 +; move a0,a11 + move a0,a12 +; inc a11 +; FCALL CHIPOUT,b5 + movi CPUT_CLR,a0 + movi CPUT_CLRS,a1 + movi COLOR_BLACK,a2 + FCALL RECTANGLE,b6 + move a12,a12 + jrnz PBADSND + + movi PICCMESS,a0 + movi [CPUT_Y1,CPUT_X],a1 + clr a2 + movi COLOR_YELLOW,a3 + FCALL STRING,b6 + FCALL PICCHECK,b5 + movi PIC,a10 + move a0,a11 + move a0,a12 + inc a11 + FCALL CHIPOUT,b5 + movi CPUT_CLR,a0 + movi CPUT_CLRS,a1 + movi COLOR_BLACK,a2 + FCALL RECTANGLE,b6 + move a12,a12 + JRZ PCPUGOOD + movi PICBADMESS,a0 + movi [CPUT_Y1,CPUT_X],a1 + clr a2 + movi COLOR_RED,a3 + FCALL STRING,b6 + jruc PCPUBAD +PBADSND + movi SNDBADMESS,a0 + movi [CPUT_Y1,CPUT_X],a1 + clr a2 + movi COLOR_RED,a3 + FCALL STRING,b6 + jruc PCPUBAD +PBADDMA + MOVI DMABADMESS,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + JRUC PCPUBAD +PBADROM + MOVI CPUT_CLR,A0 + MOVI CPUT_CLRS,A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + MOVI ROMBADMESS,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + +PCPUBAD + MOVI CPUPAUSE,A0 + MOVI [CPUT_Y2,CPUT_X],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + +PCPUWAIT +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + + .IF TUNIT + MOVI CPU_ERROR_SND,A0 +; MOVE A0,@SOUND,W + move @_sound_addr,a3,L + move a0,*a3,W + .ELSE + MOVI 0FD00H|CPU_ERROR_SND,A0 +; MOVE A0,@SOUND,W + move @_sound_addr,a3,L + move a0,*a3,W + MOVI 0FF00H|CPU_ERROR_SND,A0 +; MOVE A0,@SOUND,W ; LET HIM HEAR IT + move @_sound_addr,a3,L + move a0,*a3,W + .ENDIF + + MOVE A13,B5 + PAUSE 10000,B6 + FCALL fudge_switches_diag,B6 + andi BUTTONS|START_BITS,a0 + MOVE A0,B1 + MOVI -1,B0 ; ASSUME DON'T TIMEOUT + CMPI DIAGSP,SP + JRZ PCPUTMP1 + CMPI BURNSP,SP + JRZ PCPUTMP1 + MOVI 200000H,B0 +PCPUTMP1 +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + MOVE B0,B0 + JRN PCPUNOTIMEOUT + DEC B0 + JRZ PCPURET ; TIMEOUT HERE +PCPUNOTIMEOUT + FCALL fudge_switches_diag,B6 + andi BUTTONS|START_BITS,a0 + MOVE B1,A1 + CMP A0,A1 + JRNZ PCPURET + JRUC PCPUTMP1 +PCPUGOOD + CLR A0 + JRUC PCPUREALRET +PCPURET + MOVK 1,A0 +PCPUREALRET + MOVE A0,A0 + FRET SP + +DMACMESS + .STRING "CHECKING CUSTOM",0 + .EVEN +DMABADMESS +; .STRING "CUSTOM CHIP UE13 BAD",0 + .STRING "CUSTOM CHIP U33 BAD",0 + .EVEN + +ROMCMESS + .STRING "CHECKING ROMS",0 + .EVEN +ROMBADMESS + .STRING "ROM CHIPS BAD",0 + .EVEN + +RAMBADMESS + .STRING "RAM CHIPS BAD",0 + .EVEN + +SNDCMESS + .string "CHECKING SOUND SECTION",0 + .even +SNDBADMESS + .string "SOUND SECTION BAD",0 + .even +PICCMESS + .string "CHECKING PIC CHIP",0 + .even +PICBADMESS + .string "PIC CHIP BAD",0 + .even + +CPUGOOD + .STRING "CPU BOARD OK",0 + .EVEN + +CPUPAUSE + .STRING "PRESS ANY BUTTON",0 + .EVEN + +CPUEXIT1_MESS + .STRING "HOLD START BUTTON",0 + .EVEN +CPUEXIT2_MESS + .STRING "TO EXIT.",0 + .EVEN + + +************************************************************************** +* * +* CPUDRAW * +* * +* PLOT THE CPU BOARD AND DRAW ALL THE CHIPS * +* * +* ENTRY * +* B5 RETURN ADDRESS * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +CPUDRAW: + MOVI CPU_VECS,A9 ; POINT AT VECTOR TABLE +CPUDLP1 + MOVE *A9+,A2,W ; GET COLOR + JRZ CPUD1 + MOVE *A9+,A0,L ; START POINT + MOVE *A9+,A1,L ; END POINT + FCALL HVLINE,B6 + JRUC CPUDLP1 +CPUD1 + MOVE B5,A13 + FCALL CHIPPLOT,B5 ; PLOT ALL THE CHIPS + MOVI BOARDSTRING,A0 + move @DIPSWITCH,a1,W + andi DP4MEG_DIAG,a1 + jrnz bdtype_4meg + movi BOARDSTRING1,a0 +bdtype_4meg: + + MOVI [25,270],A1 + CLR A2 + MOVI COLOR_WHITE,A3 + FCALL STRING,B6 + MOVI BOARDSTRING2,A0 + MOVI [37,274],A1 + FCALL STRING,B6 + MOVE A13,B5 + FRET B5 + +BOARDSTRING + .string "A-18968-40030",0 + .EVEN +;MJL 12/1/94 - NOTE This guy needs to be changed to the actual assembly +;number when it is available. +BOARDSTRING1: + .string "A-18968-08MEG",0 + .even + +BOARDSTRING2 + .STRING "WRESTLEMANIA",0 + .EVEN + +************************************************************************** +* * +* CHIPTABLE * +* * +* UPDATE A LIST OF CHIPS, BASED ON THEIR VALUES IN A12 * +* * +* ENTRY * +* A9 POINTER TO TABLE * +* A12 LIST OF ON/OFF BITS * +* B5 RETURN ADDRESS * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +CHIPTABLE: + MOVE B5,A14 +CTABLOOP + MOVE *A9+,A10,L ; GET POINTER TO CHIP RECORD + JRZ CTABDONE + MOVK 1,A11 + MOVE *A10(CMNUM),A0,W ; GET THE BIT NUMBER + BTST A0,A12 ; CHECK BIT NUMBER + JRZ CTABL2 + MOVK 2,A11 +CTABL2 + FCALL CHIPOUT,B5 + JRUC CTABLOOP + +CTABDONE + MOVE A14,B5 + FRET B5 + +************************************************************************** +* * +* CHIPPLOT * +* * +* PLOT OUT THE CHIP LIST * +* * +* ENTRY * +* B5 RET VALUE * +* * +* EXIT * +* NOTHING * +************************************************************************** + +CHIPPLOT: + MOVE B5,A14 + MOVI CPU_CHIPS,A10 +CPPLOTLOOP + CLR A11 + MOVE *A10,A0,L + JRZ CPPLOTDONE + FCALL CHIPOUT,B5 + ADDI CMEND,A10 + JRUC CPPLOTLOOP + +CPPLOTDONE + MOVE A14,B5 + FRET B5 + +************************************************************************** +* * +* CHIPOUT * +* * +* ACTUALLY PLOT THE CHIP * +* * +* ENTRY * +* A10 POINTS TO CHIP TO PLOT * +* A11 COLOR OF CHIP * +* 00 = OUTLINE * +* 01 = GREEN * +* 02 = RED * +* 03 = GREY * +* * +* EXIT * +* A10 IS INTACT * +* * +************************************************************************** + +CHIPOUT: + MOVE *A10(CMLOC),A5,L ; CHIP OUTLINE + MOVE A5,A6 + MOVE A5,A7 + MOVE A5,A8 + MOVE *A10(CMXSIZE),A0,W + ADD A0,A6 + ADD A0,A7 + MOVE *A10(CMYSIZE),A0,W + SLL 16,A0 + ADD A0,A7 + ADD A0,A8 + MOVE A5,A0 + MOVE A6,A1 + MOVI COLOR_WHITE,A2 + FCALL HVLINE,B6 + MOVE A6,A0 + MOVE A7,A1 + ADDI [1,0],A1 + MOVI COLOR_WHITE,A2 + FCALL HVLINE,B6 + MOVE A8,A0 + MOVE A7,A1 + MOVI COLOR_WHITE,A2 + FCALL HVLINE,B6 + MOVE A5,A0 + MOVE A8,A1 + MOVI COLOR_WHITE,A2 + FCALL HVLINE,B6 +; + MOVE *A10(CMSTUFFED),A0,W ; CHECK FOR STUFFED + JRNZ CONOSTUF + MOVK 3,A11 ; WANT IT GREY, DUDE + +CONOSTUF + MOVE A11,A11 ; CHECK FOR FILLING THE CHIP + JRZ CONOFILL + MOVE *A10(CMLOC),A0,L + ADDI 00010001H,A0 + MOVE *A10(CMSIZE),A1,L + SUBI 00010001H,A1 ; GET INTERNAL AREA + MOVE A11,A2 + SLL 4,A2 + ADDI CHIPCOLORS,A2 + MOVE *A2,A2,W ; GET ME A COLOR + FCALL RECTANGLE,B6 +CONOFILL + MOVE *A10(CMPINLOC),A1,L ; PIN LOCATION + MOVE A5,A0 + ADD A1,A0 + MOVI COLOR_WHITE,A1 + FCALL POINT,B6 + + MOVE *A10(CMSTRING),A0,L ; CHIP TEXT + MOVE A5,A1 + MOVE *A10(CMOFFSET),A2,L + ADD A2,A1 + MOVE *A10(CMDIR),A2,W + MOVI COLOR_BLACK,A3 + MOVE A11,A11 ; CHECK FOR COLOR + JRNZ COBLACK + MOVI COLOR_WHITE,A3 +COBLACK + FCALL STRING,B6 + FRET B5 + +CHIPCOLORS: + .WORD COLOR_BLACK + .WORD COLOR_GREEN + .WORD COLOR_RED + .WORD COLOR_GREY + +************************************************************************** +* * +* DMACHECK * +* * +* CHECK THE DMA OUT * +* * +* ENTRY * +* B5 RETURN ADDRESS * +* * +* EXIT * +* A0 DMA STATUS * +* 0 = GOOD * +* 1 = BAD * +* * +************************************************************************** +DMACHECK + setf 16,1,0 +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + CLR A14 + MOVE A14,@DMACTRL,W + MOVE A14,@DMACTRL,W + + MOVK DMACF4,A14 + MOVE A14,@DMACONF,W ;ADJUST WINDOW RIGHT/LEFT BORDER + MOVI [511,0],A14 + MOVE A14,@DMAWINDOW,L ;OPEN LEFT TO RIGHT + MOVI DMAWIN|DMACF4,A14 + MOVE A14,@DMACONF,W ;ADJUST WINDOW RIGHT/LEFT BORDER + MOVI [511,0],A14 + MOVE A14,@DMAWINDOW,L ;FULL HEIGHT WINDOW + MOVI [100H,100H],A14 +; MOVE A14,@DMASCALEX + MOVE A14,@DMASCALEX,L + + MOVI [1,448],A14 ;BLOW OUT TRADEMARK + MOVE A14,@DMAHSIZE,L + + CLR A14 + MOVE A14,@DMAOFFST,W ;OFFSET + MOVE A14,@DMACONST,W ;CONSTANT + MOVE A14,@DMAHORIZ,L ;CLEAR DESTINATION ADDRESS + +; MOVI 2000000H,A14 ;DMA LOGO LOCATION + clr a14 + MOVE A14,@DMASAGL,L + + MOVI 257,A14 + MOVE A14,@DMAVERT,W ;OFFSCREEN PLOT + + MOVI 0505H,A14 + MOVE A14,@DMACMAP,W + + MOVI 8003H,A14 ;USE IMAGE ROM - WRITE ALWAYS + MOVE A14,@DMACTRL,W ;KICK OFF THE DMA + + MOVI 7FFFH,A14 ;LOAD TIMEOUT COUNTER +DMACWAIT +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + MOVE @DMACTRL,A0,W ;DMA BUSY? + JRNN DMADONE ;BR = NO, TIME TO CHECK + DSJS A14,DMACWAIT + JRUC DMACBAD ;DMA TIMED OUT + +DMADONE + CLR A0 ;GET BACK TO A REAL PALETTE + MOVE A0,@DMACMAP,W + MOVI 0101000H,A0 ;LINEAR SCREEN LOCATION OF DATA + MOVI 2000000H,A1 ;DMA LOGO LOCATION + MOVI 448,A2 ;NUMBER OF BYTES TO COMPARE +DMACLOOP + MOVB *A0,A3 ;DESTINATION BYTE +; SLL 28,A3 +; SRL 28,A3 + MOVB *A1,A4 ;SOURCE BYTE +; SLL 28,A4 +; SRL 28,A4 + ADDK 8,A0 + ADDK 8,A1 + CMP A3,A4 + JRNZ DMACBAD ;BR = DATA ERROR + DSJS A2,DMACLOOP +* +*CHECK DATA IN OBJECT PALETTE +* + + .if WWFUNIT +; movi PALENB,a13 + movi SYSCINIT,a13 + andni PALENB,a13 + .else + MOVI PAL_SELECT,A13 + .endif + + MOVE A13,@SYSCTRL,W ;ENABLE PALETTE + + MOVI 0101000H,A0 ;LOCATION + MOVI 224,A2 ;NUMBER OF WORDS TO COMPARE +DMACLOOP2 + MOVE *A0+,A3,W +; ANDI 0F0FH,A3 + CMPI 0505H,A3 + JRNZ DMACBAD + DSJS A2,DMACLOOP2 + CLR A0 + JRUC DMACRET +DMACBAD + CLR A0 ;GET BACK TO A REAL PALETTE + MOVE A0,@DMACTRL,W + MOVE A0,@DMACTRL,W + MOVE A0,@DMACMAP,W + MOVK 1,A0 +DMACRET + + .if WWFUNIT +; movi SYSCINIT,a3 + movi SYSCINIT,a13 + .else + MOVI 0FFFCH,A13 + .endif + + MOVE A13,@SYSCTRL,W + + SETF 16,0,0 + + MOVE A0,A0 + FRET B5 + + +DOG_COUNT .EQU 8000H ;EVERY 32K + .align +************************************************************************** +* * +* RAMCHECK * +* * +* CHECK A BANK OF RAM, GIVEN A STARTING TABLE ADDRESS * +* * +* ENTRY * +* A14 POINTER TO RAM TABLE * +* B5 RETURN ADDRESS * +* * +* EXIT * +* B0 LIST OF ERRORS * +* * +************************************************************************** + +RAMCHECK: +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + SETF 16,0,0 + SETF 32,0,1 + +; SNAG NEXT CHIP RECORD + +RAMLOOP: + CLR B2 + MOVE *A14(RAM_SADR),A12,L ; STARTING ADDRESS + MOVE *A14(RAM_EADR),A13,L ; ENDING ADDRESS + MOVE *A14(RAM_ITLV),A11,W ; INTERLEAVE + MOVE *A14(RAM_WDTH),A10,W ; WIDTH + +; CELL COUNT + + SUB A12,A13 ; (END-START)/INTERLEAVE+1 + DIVU A11,A13 + INC A13 + +; SET FIELD SIZES + + MOVE A11,A9 ; FS1 = INTERLEAVE + ANDI ZERO_EXTEND,A9 + EXGF A9,1 + + MOVE A10,A9 ; FS0 = WIDTH + ANDI ZERO_EXTEND,A9 + EXGF A9,0 + +; FILL IN ASCENDING ORDER + + MOVE A13,A9 ; XEROX COUNT + MOVE A12,A8 ; XEROX START + + MOVI RANDOM_SEED,A7 + CLR A5 + MOVI DOG_COUNT,B14 + +RAC1 + SLA 1,A7 ; GENERATE A PSEUDO + JRV RAC2 ; RANDOM NUMBER + movk 2,a4 + or a4,a7 +RAC2 + MOVE A7,A6 + ADDC A5,A6 + + MOVE A6,*A8+,1 ; WRITE + DSJS B14,RAC1_NODOG +; movb a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + movb a0,*a0 + MOVI DOG_COUNT,B14 ;AND RELOAD COUNT +RAC1_NODOG + DSJS A9,RAC1 + + ;READBACK IN ASCENDING ORDER + MOVE A13,A9 ; XEROX COUNT + MOVE A12,A8 ; XEROX START + + MOVI RANDOM_SEED,A7 + MOVI DOG_COUNT,B14 + +RAC3 SLA 1,A7 ; GENERATE A PSEUDO + JRV RAC4 ; RANDOM NUMBER + movk 2,a4 + or a4,a7 +RAC4 MOVE A7,A6 + ADDC A5,A6 + + move *a8,a4,0 ;Read + add a11,a8 + ZEXT A6 + + CMP A6,A4 + jrne rac5 ;Error? + + DSJS B14,RAC5_NODOG +; movb a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + movb a0,*a0 + MOVI DOG_COUNT,B14 ;AND RELOAD COUNT +RAC5_NODOG + DSJS A9,RAC3 + + jruc showstat + +rac5 ;Error! + SETF 16,0,0 ; RESET FIELDS + SETF 32,0,1 + MOVE *A14(RAM_NMBR),A4,W ; GET BIT NUMBER TO SET + MOVE A4,B1 + MOVK 1,B2 + SLL B1,B2 + OR B2,B0 ; SET THAT BIT + + +showstat + SETF 16,0,0 ; RESET FIELDS + SETF 32,0,1 +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + + +; B1 SHOULD BE ZERO IF THE CHIP IS COOL HERE + + MOVE *A14(RAM_LINK),A10,L + JRZ RAMNOPLOT + MOVK 1,A11 + MOVE B2,B2 + JRZ RAMPLOT + MOVK 2,A11 +RAMPLOT + MOVE B5,A9 ; I HOPE THIS ONE IS SAFE! + MOVE B0,A13 + FCALL CHIPOUT,B5 + MOVE A13,B0 + MOVE A9,B5 + +RAMNOPLOT + ADDI RAM_SIZE,A14 ; ADVANCE TO NEXT GUY + MOVE *A14,A7,W + JRNZ RAMLOOP ; HERE WE GO AGAIN + FRET B5 + + +************************************************************************** +* * +* ROMCHECK - ROUTINE TO CHECKSUM THE PROGRAM AND IMAGE ROMS. * +* RETURNS * +* B0 = BITS SET FOR BAD ROMS. * +* Z = TEST FINISHED. * +* NZ = TEST ABORTED BY USER. * +* * +************************************************************************** + .align + +ROMCHECK: +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 +ROMLOOP + CLR B2 + MOVE *A14(ROM_CKSM),A13,L ; CHECK TO SEE IF ROM SOCKET THERE + JRZ ROMEMPTY + CLR A8 ; CHECKSUM + + MOVI DOG_COUNT,B14 + + MOVE *A14(ROM_SADR),A12,L ; STARTING ADDRESS + MOVE *A14(ROM_EADR),A13,L ; ENDING ADDRESS + MOVE *A14(ROM_ITLV),A11,W ; INTERLEAVE +; +; SUM UP A GIVEN IMAGE ROM -- THE TUNIT WAY +; + SUB A12,A13 ; (( EADDR - SADDR ) / INTERLEAVE) + 1 + DIVU A11,A13 + INC A13 + setf 8,0,1 +rcilp + move *a12,a7,1 ;Get a byte + add a11,a12 + add a7,a8 + dsjs b14,rcilp_nodog +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + movi DOG_COUNT,b14 ;AND RELOAD COUNT +rcilp_nodog + dsjs a13,rcilp + + setf 32,0,1 + +*LAND HERE FROM IMAGE CHECKSUM TO DETERMINE IF WE HIT IT +;ROMCKCK + MOVE *A14(ROM_CKSM),A7,W +ROM_COMPARE + ZEXT A7 + ZEXT A8 + CMP A7,A8 + JRZ ROMRELOOP + MOVE *A14(ROM_NMBR),A4,W ; GET BIT NUMBER TO SET + MOVE A4,B1 + MOVK 1,B2 + SLL B1,B2 + OR B2,B0 ; SET THAT BIT +ROMRELOOP +; move a0,@WATCHDOG ;Reset + move @_watchdog_addr,a0,L + move a0,*a0 + MOVE *A14(ROM_LINK),A10,L + JRZ ROMNOPLOT + MOVK 1,A11 + MOVE B2,B2 + JRZ ROMPLOT + MOVK 2,A11 +ROMPLOT + MOVE B5,A9 ; I HOPE THIS ONE IS SAFE! + MOVE B0,A13 + FCALL CHIPOUT,B5 + MOVE A13,B0 + MOVE A9,B5 + +ROMNOPLOT + ADDI ROM_SIZE,A14 +*CHECKING FOR EARLY EXIT BY OPERATOR +; MOVE @SWITCH,A13,L + move @_coin_addr,a13,L + move *a13,a13,W + sll 16,a13 + ANDI START_BITS,A13 + CMPI START_BITS,A13 + JRNE ROMABORT +; MOVE A13,A8 +; ANDI 00000004H,A13 ;CHECK PLAYER 1 START +; JRZ ROMABORT ;BR = IT'S PRESSED +; ANDI 00000020H,A8 ;CHECK PLAYER 2 START +; JRZ ROMABORT ;BR = IT'S PRESSED + JRUC ROMLOOP ;BACK FOR THE NEXT +*HERE ON OPERATOR ABORT +ROMABORT + CLRZ + FRET B5 +ROMEMPTY + clr a12 + setz + FRET B5 + + +************************************************************************** +* * +* MONITOR STUFF * +* * +************************************************************************** +CROSS_H +CONV_PLOT + MOVI MON_RECS,A9 +CPRLP1 + MOVE *A9+,A2,W ; GET COLOR + JRZ CPRDONE + MOVE *A9+,A0,L ; START POINT + MOVE *A9+,A1,L ; DIMENSIONS + FCALL RECTANGLE,B6 + JRUC CPRLP1 +CPRDONE + MOVI MON_VECS,A9 ; POINT AT VECTOR TABLE +CPVLP1 + MOVE *A9+,A2,W ; GET COLOR + JRZ CPVDONE + MOVE *A9+,A0,L ; START POINT + MOVE *A9+,A1,L ; END POINT + FCALL HVLINE,B6 + JRUC CPVLP1 +CPVDONE + MOVI MON_DOTS,A9 ; POINT AT DOT TABLE +CPDLP1 + MOVE *A9+,A1,W ; GET COLOR + JRZ CPDDONE + MOVE *A9+,A0,L ; GET THE POINT + FCALL POINT,B6 + JRUC CPDLP1 +CPDDONE + RETS +************************************************************************** +* * +* MONITOR TEST DATA AREA * +* * +************************************************************************** + +MON_VECS: + VECMAC ROBO_WHITE,004,004,390,004 + VECMAC ROBO_WHITE,004,004,004,250 + VECMAC ROBO_WHITE,004,250,390,250 + VECMAC ROBO_WHITE,390,250,390,004 + VECMAC ROBO_WHITE,060,005,060,250 + VECMAC ROBO_WHITE,115,005,115,250 + VECMAC ROBO_WHITE,170,005,170,250 + VECMAC ROBO_WHITE,225,005,225,250 + VECMAC ROBO_WHITE,280,005,280,250 + VECMAC ROBO_WHITE,335,005,335,250 + VECMAC ROBO_WHITE,005,054,390,054 + VECMAC ROBO_WHITE,005,103,390,103 + VECMAC ROBO_WHITE,005,152,390,152 + VECMAC ROBO_WHITE,005,201,390,201 + .LONG 0 + +MON_RECS: + VECMAC ROBO_RED, 182,000,030,005 ; TOP + VECMAC ROBO_GREEN, 182,005,030,006 + VECMAC ROBO_RED, 182,250,030,005 ; BOTTOM + VECMAC ROBO_GREEN, 182,244,030,006 + VECMAC ROBO_RED, 000,117,005,020 ; LEFT + VECMAC ROBO_GREEN, 005,117,006,020 + VECMAC ROBO_RED, 390,117,005,020 ; RIGHT + VECMAC ROBO_GREEN, 384,117,006,020 + .LONG 0 + +MON_DOTS: + DOTMAC ROBO_WHITE,032,029 + DOTMAC ROBO_WHITE,087,029 + DOTMAC ROBO_WHITE,142,029 + DOTMAC ROBO_WHITE,197,029 + DOTMAC ROBO_WHITE,252,029 + DOTMAC ROBO_WHITE,307,029 + DOTMAC ROBO_WHITE,362,029 + + DOTMAC ROBO_WHITE,032,078 + DOTMAC ROBO_WHITE,087,078 + DOTMAC ROBO_WHITE,142,078 + DOTMAC ROBO_WHITE,197,078 + DOTMAC ROBO_WHITE,252,078 + DOTMAC ROBO_WHITE,307,078 + DOTMAC ROBO_WHITE,362,078 + + DOTMAC ROBO_WHITE,032,127 + DOTMAC ROBO_WHITE,087,127 + DOTMAC ROBO_WHITE,142,127 + DOTMAC ROBO_WHITE,197,127 + DOTMAC ROBO_WHITE,252,127 + DOTMAC ROBO_WHITE,307,127 + DOTMAC ROBO_WHITE,362,127 + + DOTMAC ROBO_WHITE,032,176 + DOTMAC ROBO_WHITE,087,176 + DOTMAC ROBO_WHITE,142,176 + DOTMAC ROBO_WHITE,197,176 + DOTMAC ROBO_WHITE,252,176 + DOTMAC ROBO_WHITE,307,176 + DOTMAC ROBO_WHITE,362,176 + + DOTMAC ROBO_WHITE,032,225 + DOTMAC ROBO_WHITE,087,225 + DOTMAC ROBO_WHITE,142,225 + DOTMAC ROBO_WHITE,197,225 + DOTMAC ROBO_WHITE,252,225 + DOTMAC ROBO_WHITE,307,225 + DOTMAC ROBO_WHITE,362,225 + .LONG 0 + +PRIMARY_COLORS: + RECTMAC ROBO_RED,0,0,395,255 + RECTMAC ROBO_GREEN,0,0,395,255 + RECTMAC ROBO_BLUE,0,0,395,255 + .LONG 0 + +COLOR_BARS: + + RECTMAC ROBO_BLACK, 0, 0, 49, 16 + RECTMAC ROBO_BLACK, 49, 0, 49, 16 + RECTMAC ROBO_BLACK, 98, 0, 49, 16 + RECTMAC ROBO_BLACK, 147, 0, 49, 16 + RECTMAC ROBO_BLACK, 196, 0, 49, 16 + RECTMAC ROBO_BLACK, 245, 0, 49, 16 + RECTMAC ROBO_BLACK, 294, 0, 49, 16 + RECTMAC ROBO_BLACK, 343, 0, 49, 16 + .LONG 0 + + + +************************************************************************** +* * +* COLORBAR * +* * +************************************************************************** +COL_BARS +COLORBAR + + MOVI INTENSITIES_START,A0,L + MOVI COLRAM+100H,A1,L + + MOVK 16, A2 ;5 BITS / COLOR + MOVK 8, A6 ;# COLOR BARS +CB3 + ADDI >F00,A1 ;STEP TO NEXT PALETTE + MOVE *A0+,A3 ;STARTING COLOR + MOVE *A0+,A4 ;COLOR DECREMENT + + MOVE A2,A5 + +CB4 MOVE A3,*A1+ + SUB A4,A3 + DSJS A5,CB4 + DSJS A6,CB3 + +; ========================= +; | DISPLAY COLOR BARS | +; ========================= + + CLR A14 + MOVE A14,@DMACTRL,W ; HALT THE DMA + MOVE A14,@DMACTRL,W + MOVI 0101H,A14 + MOVE A14,A8 + + MOVI COLOR_BARS, A3, L ; COLOR BAR TABLE + MOVI [16,0], A13, L ; POSITION INCRMENT + MOVI 101H,A12 + MOVK 16, A11 ; # INTENSITIES / BAR + MOVK 8,A6 ;THIS MANY BARS +CB6 + CLR A2 ; STARTING COLOR + MOVE *A3+,A1,L + JRZ CB8 + MOVE A8,@DMACMAP,W ;STUFF PALETTE + MOVE *A3+,A0,L + ADDK 16,A3 + MOVE A11,A10 +CB7 + FCALL RECTANGLE, B6 + ADD A13, A0 + ADD A12, A2 + DSJS A10, CB7 + ADD A14,A8 ;NEXT PALETTE PLEASE + DSJ A6,CB6 + +CB8 + CLR A14 + MOVE A14,@DMACMAP + RETS + + +INTENSITIES_START + + .WORD 03E0H ; GREEN + .WORD 0040H ; BUMP GREEN + + .WORD 7C00H ; RED + .WORD 0800H ; BUMP RED + + .WORD 001FH ; BLUE + .WORD 0002H ; BUMP BLUE + + .WORD 0000H ; BLACK + .WORD 0000H ; BUMP BLACK + + .WORD 7FFFH ; WHITE + .WORD 0842H ; BUMP WHITE + + .WORD 7FE0H ; YELLOW + .WORD 0840H ; BUMP YELLOW + + .WORD 7C1FH ; PURPLE + .WORD 0802H ; BUMP PURPLE + + .WORD 03FFH ; CYAN + .WORD 0042H ; BUMP CYAN + + .LONG 0 + +************************************************************************** +* SWITCHTEST - Test regular or DIP switches +* A0=Mode (0=Switches, 1=DIPs) + +DONEMASK EQU 00240000H ; P1 + P2 START + .BSS DONECNT,32 ; FOR SWITCH TEST + +SWITCHTEST + PUSH a12,a13 + + subk 1,a0 + jreq DIPTEST + clr a0 + move a0,@_switch_map_mode,L ; No switch mapping + +; CALLA WDOGDIS + movk 10h,A13 + MOVE A13,@DONECNT,L + CLR A13 ; THE HOLD ME REGISTER + MOVE A13,@SWSET1,L + MOVE A13,@SWSET2,L + MOVI BUT_TABLE,A9 + CLR A10 + CALLR BUT_PLOT ; PLOT SOME BUTTONS + MOVI JOY_TABLE,A9 + CALLR JOY_PLOT ; PLOT THE JOYSTICKS + MOVI STR_TABLE,A9 + CALLR STR_PLOT ; PLOT THE STRINGS + MOVI BUT_STRS,A9 + CALLR STR_PLOT ; PLOT THE BUTTON STRINGS +; MOVI [180,0],A0 +; MOVI [180,400],A1 + MOVI [172,0],A0 + MOVI [172,400],A1 + MOVI ROBO_WHITE,A2 + FCALL HVLINE,B6 ; DRAW LITTLE WHITE LINE +SDLOOP + PULL a12,a13 + SLEEPK 1 + PUSH a12,a13 + +; move @COINS,a10,W +; move @SWITCH,a14,W + move @_coin_addr,a10,L + move *a10,a10,W + move @_switch_addr,a14,L + move *a14,a14,W + sll 16,a10 + sll 16,a14 ;mask off top 16 + srl 16,a14 + or a14,a10 + +; MOVE @SWITCH,A10,L ; GRAB ME A SWITCH REGISTER + + NOT A10 + MOVE A10,A0 + ANDI DONEMASK,A0 + CMPI DONEMASK,A0,L ; CHECK FOR DONE + JRNZ SDGO + MOVE @DONECNT,A0,L ;REQUIRE A CERTAIN TIME + DEC A0 + MOVE A0,@DONECNT,L + JRNE SDGO + +switchx PULL a12,a13 + movk 1,a0 + move a0,@_switch_map_mode,L ; Back to menu switch map + RETP + +SDGO + MOVE @SWSET1,A11,L + CMP A11,A10 ; CHECK FOR CHANGES + JRZ SDCK2 + MOVE A10,@SWSET1,L +; MOVE @SWITCH+32,A10,L + move @_switch2_addr,a10,L + move *a10,a10,W + NOT A10 + SLL 16,A10 + SRL 16,A10 + JRUC SDPRC1 +SDCK2 +;JML +; MOVE @SWITCH+32,A10,L +; NOT A10 +; SLL 16,A10 +; SRL 16,A10 +; move @SWITCH2,a10,W + move @_switch2_addr,a10,L + move *a10,a10,W + not a10 + sll 16,a10 + srl 16,a10 +;JML End + MOVE @SWSET2,A11,L + CMP A11,A10 + JRZ SDLOOP +SDPRC1 + MOVE A10,@SWSET2,L +SDPROC + CLR A0 + MOVE A0,@SCHANGE + + MOVI BUT_TABLE,A9 + CALLR BUT_PLOT + MOVI BUT_STRS,A9 + CALLR STR_PLOT ; PLOT THE BUTTON STRINGS + MOVI JOY_TABLE,A9 + CALLR JOY_UPDATE ; UPDATE THE JOYSTICK INFO + + MOVE @SCHANGE,A0 + JRZ SDLOOP + + MOVI SWITCH_SND,A3 + calla SNDSND + JRUC SDLOOP + + + +************************************************************************** +* * +* SET_DIP_COINAGE - SETUP COINAGE ACCORDING TO THE DIPSWITCHES * +* * +************************************************************************** +SET_DIP_COINAGE + MMTM SP,A0,A1,A2,A6 + + CALLR READ_DIP + MOVE A0,A2 + ANDI DPUSECMOS,A2 ;USING CMOS? + JRNZ SDC_X ;BR=YES, DO NOT LOAD COINAGE + + MOVE A0,A2 + ANDI DPCOUNTRY,A0 + + SRL DPCOUNTRY_SRL,A0 ; CHANGE TO TO MULTIPLE OF 32 + SLL 5,A0 + + ADDI DIPCOINTAB,A0 + MOVE *A0,A1,L ; POINTER TO RIGHT COIN TABLE + + ANDI DPCOINAGE,A2 + CMPI DPCOINAGE,A2 ; CHECK FOR FREEPLAY + JRZ CMOS21 + + SRL DPCOINAGE_SRL,A2 + SLL 4,A2 + + ADD A2,A1 + MOVE *A1,A1,W ; WHICH COIN TABLE TO USE + + MOVI ADJPRICE,A0 + CALLA GET_ADJ ;GET THE COIN SELECT NUMBER BEING USED. + CMP A0,A1 ;DID WE CHANGE COIN MODES + JREQ SDC_SAMEC + CALLA NO_CREDS ;CLEAR CREDITS + CALLA CRED_P ;LINK-OUT! +SDC_SAMEC + MOVI ADJPRICE,A0 ; MASTER PRICING + CALLA PUT_ADJ ; STUFF IT IN CMOS + MOVI ADJFREPL,A0 + CLR A1 ; MAKE SURE NO FREEPLAY + CALLA PUT_ADJ +CMOS20 + MOVI ADJ1ST6,A0 ;MAKE THEM UNTOUCHED PLEASE + MOVK 1,A1 + CALLA PUT_ADJ + + CALLA F_ADC_S ;CHECKSUM THE ADJUSTMENTS + + CALLA GET_CSPT + CALLA SET_COIN_ADJ ; SET THE ADJUSTMENTS UP IN CMOS + + CALLA F_ADC_S ;CHECKSUM THE ADJUSTMENTS + + JRUC SDC_X +CMOS21 + MOVI ADJFREPL,A0 + MOVK 1,A1 ; FREEPLAY, DUDE! + CALLA PUT_ADJ + JRUC CMOS20 +SDC_X + MMFM SP,A0,A1,A2,A6 + RETS + +************************************************************************** +* * +* DIPTEST * +* * +* DIP SWITCH TESTING * +* * +************************************************************************** + +DIPTEST: + movk 3,a14 + move a14,@_switch_map_mode,L ; Any button mapping + MOVK 1,A14 + MOVE A14,@DIP1ST,W ;YES THIS IS THE FIRST TIME THROUGH + CALLR READ_DIP + MOVE A0,@DIPVAL,W + +DT_PLOT + MOVI DIP_VECS,A9 ; POINT AT VECTOR TABLE +DTVLP1 + MOVE *A9+,A2,W ; GET COLOR + JRZ DTVDONE + MOVE *A9+,A0,L ; START POINT + MOVE *A9+,A1,L ; END POINT + FCALL HVLINE,B6 + JRUC DTVLP1 +DTVDONE + MOVI DIP_STRS,A9 + CALLR STR_PLOT + + CALLR SET_DIP_COINAGE + + CALLR DIPPLOT + CALLR DIPSTATE + + MOVE @DIP1ST,A14,W + JRNZ DTL_SKIP_SND + + MOVI DIP_SND,A0 +; MOVE A0,@SOUND,W + move @_sound_addr,a9,L + move a0,*a9,W + +DTL_SKIP_SND + CLRM @DIP1ST,W + + CALLA fudge_switches ;get fudged switches in a0 + andi BUTTONS|START_BITS,a0 + MOVE A0,@SWSET1,L +DTLOOP + PULL a12,a13 + SLEEPK 1 + PUSH a12,a13 + +; CALLA CKTEST ; EMERGENCY EXIT + CALLA fudge_switches ;get fudged switches in a0 + MOVE @SWSET1,A1,L + andi BUTTONS|START_BITS,a0 + CMP A0,A1 + JRNZ DT_X + + CALLR READ_DIP + MOVE @DIPVAL,A1,W + ZEXT A1 + CMP A0,A1 + JRZ DTLOOP ;BR = NO CHANGE + MOVE A0,@DIPVAL,W ;SAVE THE OLD + JRUC DT_PLOT ;PLOT THE NEW SWITCH STUFF +DT_X + JRUC switchx + + +************************************************************************** +* * +* DIPSTATE * +* * +* PLOT OUT THE STATES OF ALL THE DIP SWITCHES * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** +DIPSTATE + MOVI [82,74],A0 + MOVI [104,140],A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + MOVI [82,284],A0 + MOVI [104,111],A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + + CALLR READ_DIP + MOVE A0,A10 ;LET'S KEEP A COPY + + CLR A2 + MOVI COLOR_WHITE,A3 + + CLR A7 + MOVI DUSECMOS_0,A1 + ANDI DPUSECMOS,A0 + JRZ DS1 + MOVK 1,A7 + MOVI DUSECMOS_1,A1 +DS1 + MOVE A1,A0 + MOVI [89,75],A1 + FCALL STRING,B6 + +*PLOT CURRENT COINAGE + MOVE A7,A7 ;ARE WE CMOS OR DIPSWITCH + JRZ DS_PC ;BR = DIPSWITCH + + MOVI [113,75],A1 + MOVI DUNUSED,A0 ;JUST PRINT UNUSED + FCALL STRING,B6 + JRUC DS_SC ;AND GO FOR THE NEXT SWITCHES + +DS_PC + MOVI COLOR_WHITE,A3 + MOVI [101,75],A1 + MOVI DCOINAGE,A0 + FCALL STRING,B6 + MOVE A10,A0 + ANDI DPCOUNTRY,A0 + SRL DPCOUNTRY_SRL,A0 + SLL 5,A0 + ADDI DCOINTAB,A0 + MOVE *A0,A1,L ; POINTER TO RIGHT COIN TABLE + MOVE A10,A0 + ANDI DPCOINAGE,A0 + SRL DPCOINAGE_SRL,A0 + SLL 5,A0 + ADD A0,A1 + MOVE *A1,A0,L ; NOW POINTING AT MESSAGE + CLR A2 + MOVI [101,132],A1 + FCALL STRING,B6 + +*PLOT CREDITS TO START, CREDITS TO CONTINUE + MOVI DTOSTART,A0 + MOVI [113,90],A1 + FCALL STRING,B6 + + MOVI DTOCONTINUE,A0 + MOVI [125,90],A1 + FCALL STRING,B6 + + MOVI ADJCSTRT,A0 + CALLA GET_ADJ ; GET NUMBER NEEDED ( IN A0 ) + MOVE A0,A8 + CMPI 9,A8 + JRLS DSTS_1 + MOVK 9,A8 +DSTS_1 + CALLA HEXTOASC + MOVE A8,A0 + MOVI [113,80],A1 + FCALL STRING,B6 + + MOVI ADJCCONT,A0 + CALLA GET_ADJ ; GET NUMBER NEEDED ( IN A0 ) + MOVE A0,A8 + CMPI 9,A8 + JRLS DSTC_1 + MOVK 9,A8 +DSTC_1 + CALLA HEXTOASC + MOVE A8,A0 + MOVI [125,80],A1 + FCALL STRING,B6 + + +DS_SC +*PLOT COUNTRY SELECTION + MOVE A10,A0 + ANDI DPCOUNTRY,A0 + SRL DPCOUNTRY_SRL,A0 + SLL 5,A0 + ADDI DCOUNTRY_TAB,A0 + MOVE *A0,A0,L + MOVI [143,75],A1 + FCALL STRING,B6 + +*PLOT COIN COUNTER MODE + MOVE A10,A7 + ANDI DPCOUNTER,A7 + SRL DPCOUNTER_SRL,A7 + SLL 6,A7 + ADDI DCOUNTER_TAB,A7 + MOVE *A7+,A0,L + MOVI [163,75],A1 + FCALL STRING,B6 + MOVE *A7+,A0,L + MOVI [175,75],A1 + FCALL STRING,B6 + + +*PLOT NUMBER OF PLAYERS ALLOWED + MOVE A10,A0 ;ADD THE FOLLOWING FOR PLAYER # + ANDI DPPLAYERS,A0 + RJST A0 + SLL 5,A0 + ADDI DPLAYER_TAB,A0 + MOVE *A0,A0,L + + + +; MOVI DUNUSED,A0 + + + + MOVI [89,285],A1 + FCALL STRING,B6 +;;; + +*PLOT DOLLAR BILL VALIDATOR STATUS + MOVI DNOVALIDATOR,A0 ;ASSUME NO VALIDATOR + MOVE A10,A1 + ANDI DPVALIDATOR,A1 ;DO WE HAVE ONE? + JRZ DSTS_NOV ;BR = NO + MOVI DVALIDATOR,A0 ;ASSUME NO VALIDATOR + +DSTS_NOV + MOVI [101,285],A1 + FCALL STRING,B6 + +;Turmell +; MOVI DUNUSED,A0 + +*PLOT video clips off/on message + MOVI DCLIPS,A0 ;Assume clips on + MOVE A10,A1 + ANDI DPNOVIDCLIPS,A1 + JRZ DSTS_NOC ;BR = NO + MOVI DNOCLIPS,A0 ;Assume no clips wanted + +DSTS_NOC + + + MOVI [113,285],A1 + FCALL STRING,B6 + + MOVI DUNUSED,A0 + MOVI [125,285],A1 + FCALL STRING,B6 + + MOVI DUNUSED,A0 + MOVI [137,285],A1 + FCALL STRING,B6 + +; MOVI DUNUSED,A0 + movi D4MEGIROM,a0 + move a10,a1 + andi DP4MEG,a1 + jrz dsts_4meg + movi D8MEGIROM,a0 +dsts_4meg: + MOVI [149,285],A1 + FCALL STRING,B6 + + +;Turmell +; MOVI DUNUSED,A0 + +*PLOT skip over powerup test message + MOVI DPOWER,A0 + MOVE A10,A1 + ANDI DPPOWER,A1 + JRZ DSTS_NOP + MOVI DNOPOWER,A0 + +DSTS_NOP + + MOVI [161,285],A1 + FCALL STRING,B6 + + MOVI DTEST_0,A0 + MOVI [173,285],A1 + FCALL STRING,B6 + + RETS + + +************************************************************************** +* * +* DIPPLOT * +* * +* PLOT OUT THE DIP SWITCHES * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** +DIPPLOT: + MOVI [83,21],A0 + MOVI [104,38],A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + MOVI [83,231],A0 + MOVI [104,38],A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + CALLR READ_DIP + CLR A2 +DIPLOOP + MOVE A2,A3 + SLL 5,A3 + ADDI DIPYTAB,A3 + MOVE *A3,A3,L + SLL 16,A3 ; GOT THE Y LOC + + CLR A5 + CMPI 8,A2 + .IF TUNIT=0 + JRLO DIPL2 + .ELSE + JRHS DIPL2 + .ENDIF + MOVI 210,A5 +DIPL2 + MOVX A5,A3 + + BTST A2,A0 ; CHECK IF BIT IS SET + JRNZ DIPON + MOVI DP_OFF,A1 + ADDI 29,A3 + MOVI COLOR_GREY,A4 + JRUC DIPSTR + +DIPON + MOVI DP_ON,A1 + ADDI 32,A3 + MOVI COLOR_WHITE,A4 + +DIPSTR + MMTM SP,A0,A2 + MOVE A1,A0 ; SET STRING + MOVE A3,A1 ; SET LOCATION + MOVE A4,A3 + CLR A2 ; HORIZONTAL + FCALL STRING,B6 + MMFM SP,A0,A2 + INC A2 + CMPI 16,A2 + JRLO DIPLOOP + RETS + + +DIPYTAB + .LONG 89,101,113,125,137,149,161,173 + .LONG 89,101,113,125,137,149,161,173 + + +************************************************************************** +* * +* READ_DIP * +* * +* READ IN BOTH DIP SWITCHES * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* A0 DIP SWITCH * +* * +************************************************************************** + +READ_DIP: + MMTM SP,A1,A2,A3 + +; MOVE @DIPSWITCH,A0,W ; READ IT IN + move @_dipswitch_addr,a0,L + move *a0,a0,W + NOT A0 ; INVERT IT FOR TRUE BITS + CLR A1 + movk 7,a2 +RDLOOP + BTST A2,A0 + JRZ RD1 + MOVK 7,A3 + SUB A2,A3 + BSET A3,A1 +RD1 + addk 8,a2 + BTST A2,A0 + JRZ RD2 + MOVK 15,A3 + SUB A2,A3 + addk 8,a3 + BSET A3,A1 +RD2 + subk 8,a2 + DEC A2 + JRNN RDLOOP + MOVE A1,A0 + + MMFM SP,A1,A2,A3 + RETS + + +************************************************************************** +* * +* JOY_MESS * +* * +* PLOT THE STATUS OF A JOYSTICK AROUND A CIRCLE * +* * +* ENTRY * +* A9 CENTER OF STICK CIRCLE * +* A10 BUTTON MASK * +* A11 COLOR * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +JOY_MESS + MOVI JJJTAB,A8 + MOVK 4,A7 +JML + MOVI ROBO_BLACK,A3 + SRL 1,A10 + JRNC JM1 + MOVE A11,A3 ; SET COLOR + MOVK 1,A14 + MOVE A14,@SCHANGE,W +JM1 + MOVE *A8+,A0,L + MOVE A9,A1 ; CIRCLE CENTER + MOVB *A8,A2 ;X CORRECTION + ADDK 8,A8 + ADD A2,A1 + MOVB *A8,A2 ;Y CORRECTION + ADDK 8,A8 + SLL 16,A2 + ADD A2,A1 + CLR A2 ; DIRECTION + CALLR STRNEW + DSJS A7,JML + RETS +* +*JOYSTICK MESSAGE TABLE +* +JJJTAB + .LONG UPMESS + .BYTE -7,-25 + + .LONG DOWNMESS + .BYTE -13,18 + + .LONG LEFTMESS + .BYTE -39,-4 + + .LONG RIGHTMESS + .BYTE 18,-4 + + + +************************************************************************** +* * +* BUT_PLOT * +* * +* PLOT A BUTTON TABLE ON THE SCREEN * +* * +* ENTRY * +* A9 POINTS TO BUTTON TABLE LIST * +* A10 SETTINGS OF THE SWITCH REGISTER * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +BUT_PLOT: + clr b4 ;OFFSET + + MOVE *A9,A1,L ; XY LOC + JRZ BPDONE + ADDK 32,A9 + MOVE *A9+,A0 ; RADIUS + MOVE *A9+,A6,L ; COLOR + MOVE *A9+,A11,L ; GET MASK + ADDK 16,A9 ; SHIFT COUNT + MOVE *A9,A8,W ; JAMMA EXTEND-O-BIT + JRZ BPLOW + MOVE @SWSET2,A10,L + JRUC BPAND +BPLOW + MOVE @SWSET1,A10,L +BPAND + ADDK 16,A9 + AND A10,A11 ; MASK OFF SOMETHING USEFUL + JRZ BPHOLLOW + ADDI CFILL,A6 ; MASK IN THE FILL BITS + JRUC BPCIRC +BPHOLLOW + MMTM SP,A0,A1,A6 + MOVI ROBO_BLACK,A6 + ADDI CFILL,A6 + FCALL CIRCLE,B6 + MMFM SP,A0,A1,A6 + JRUC BPCIRC2 +BPCIRC + MOVK 1,A14 + MOVE A14,@SCHANGE,W +BPCIRC2 + FCALL CIRCLE,B6 + JRUC BUT_PLOT +BPDONE + RETS + +************************************************************************** +* * +* JOY_PLOT * +* * +* PLOT A BUTTON TABLE ON THE SCREEN * +* * +* ENTRY * +* A9 POINTS TO BUTTON TABLE LIST * +* * +************************************************************************** + +JOY_PLOT: + MOVE *A9,A1,L ; XY LOC + JRZ JPDONE + ADDK 32,A9 + MOVE *A9+,A0 ; RADIUS + MOVE *A9,A6,L ; COLOR + ADDI 96,A9 + FCALL CIRCLE,B6 + JRUC JOY_PLOT +JPDONE + RETS + +************************************************************************** +* * +* JOY_UPDATE * +* * +* UPDATE ALL THE STICK INFORMATION * +* * +* ENTRY * +* A9 JOYSTICK TABLE POINTER * +* A10 SWITCH INFORMATION * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +JOY_UPDATE: + MOVE *A9,A1,L ; XY LOC + JRZ JUDONE + ADDI 32,A9 + MOVE *A9+,A0 ; RADIUS + MOVE *A9+,A11,L ; COLOR + MOVE *A9+,A6,L ; MASK + MOVE *A9+,A7 ; SHIFT COUNT + MOVE *A9,A8 ; EXTEND-O-BIT FOR JAMMA + JRZ JULOW + MOVE @SWSET2,A10,L + JRUC JUAND +JULOW + MOVE @SWSET1,A10,L +JUAND + ADDK 16,A9 + AND A10,A6 ; MASK OFF JOYSTICK BITS + NOT A7 + ADDK 1,A7 + SRL A7,A6 ; ZERO BASE THE LITTLE SUCKER + MMTM SP,A9,A10,A8,A7 + MOVE A1,A9 ; CENTER OF STICK HERE + MOVE A6,A10 ; BUTTON MASK + CALLR JOY_MESS + MMFM SP,A9,A10,A8,A7 + JRUC JOY_UPDATE +JUDONE + RETS + + +************************************************************************** +* * +* STR_PLOT * +* * +* PLOT A STRING TABLE ON THE SCREEN * +* * +* ENTRY * +* A9 POINTS TO STRING TABLE LIST * +* * +************************************************************************** + +STR_PLOT + MOVE *A9,A1,L ;XY LOC + JRZ STDONE + ADDK 32,A9 + MOVE *A9+,A0,L ;STRING PTR + MOVE *A9+,A3 ;COLOR + MOVE *A9+,A2 ;DIRECTION + FCALL STRING,B6 + JRUC STR_PLOT +STDONE + RETS + +CFILL EQU 0FFFF0000H + + +; FORMAT +; +; X,Y,RADIUS,COLOR,MASK,SHIFT COUNT ( FOR JOYSTICK STUFF ), EXTENDBIT + +P1BC .equ 80 +P2BC .equ 160 +P3BC .equ 240 +P4BC .equ 320 +PBCY .equ 162-40 + +P1BX equ P2BC +P2BX equ P4BC +PBY equ 110 + +BUT_TABLE + + BUT_MAC P1BX-24,PBY-12,10,ROBO_BLUE,010H,0,0 ; P1 A1 (PUNCH) + BUT_MAC P1BX, PBY,10,ROBO_RED,020H,0,0 ; P1 A2 (BLOCK) + BUT_MAC P1BX+24,PBY-12,10,ROBO_BLUE,040H,0,0 ; P1 A3 (SPUNCH) + BUT_MAC P1BX-24,PBY+12,10,ROBO_BLUE,01H,0,1 ; P1 A5 (KICK) + BUT_MAC P1BX+24,PBY+12,10,ROBO_BLUE,02H,0,1 ; P1 A6 (SKICK) + + BUT_MAC P2BX-24,PBY-12,10,ROBO_BLUE,01000H,0,0 ; P2 A1 (PUNCH) + BUT_MAC P2BX, PBY,10,ROBO_RED,02000H,0,0 ; P2 A2 (BLOCK) + BUT_MAC P2BX+24,PBY-12,10,ROBO_BLUE,04000H,0,0 ; P2 A3 (SPUNCH) + BUT_MAC P2BX-24,PBY+12,10,ROBO_BLUE,10H,0,1 ; P2 A5 (KICK) + BUT_MAC P2BX+24,PBY+12,10,ROBO_BLUE,20H,0,1 ; P2 A6 (SKICK) + +; BUT_MAC P2BC-12,PBCY-12,10,ROBO_BLUE,010H,0,0 ; P1 A1 +; BUT_MAC P2BC+12,PBCY-12,10,ROBO_BLUE,020H,0,0 ; P1 A2 +; BUT_MAC P2BC-12,PBCY+12,10,ROBO_BLUE,040H,0,0 ; P1 A3 +; BUT_MAC P2BC+12,PBCY+12,10,ROBO_BLUE,080H,0,0 ; P1 A4 +; BUT_MAC P2BC-60,PBCY+24,10,ROBO_RED,01H,0,1 ; P1 A5 +; BUT_MAC P2BC-36,PBCY+24,10,ROBO_RED,02H,0,1 ; P1 A6 + +; BUT_MAC P4BC-12,PBCY-12,10,ROBO_BLUE,01000H,0,0 ; P2 A1 +; BUT_MAC P4BC+12,PBCY-12,10,ROBO_BLUE,02000H,0,0 ; P2 A2 +; BUT_MAC P4BC-12,PBCY+12,10,ROBO_BLUE,04000H,0,0 ; P2 A3 +; BUT_MAC P4BC+12,PBCY+12,10,ROBO_BLUE,08000H,0,0 ; P2 A4 +; BUT_MAC P4BC-60,PBCY+24,10,ROBO_RED,04H,0,1 ; P2 A5 +; BUT_MAC P4BC-36,PBCY+24,10,ROBO_RED,08H,0,1 ; P2 A6 + + BUT_MAC P1BC,70,10,ROBO_WHITE,00040000H,0,0 ; P1 START + BUT_MAC P3BC,70,10,ROBO_WHITE,00200000H,0,0 ; P2 START + +; BUT_MAC 30,207,10,COLOR_GREEN,00010000H,0,0 ; COIN LEFT +; BUT_MAC 75,207,10,COLOR_GREEN,00020000H,0,0 ; COIN RIGHT +; BUT_MAC 120,207,10,COLOR_GREEN,00800000H,0,0 ; COIN CENTER +; BUT_MAC 165,207,10,COLOR_GREEN,01000000H,0,0 ; FOURTH COIN + BUT_MAC 30,199,10,COLOR_GREEN,00010000H,0,0 ; COIN LEFT + BUT_MAC 75,199,10,COLOR_PURPLE,00020000H,0,0 ; COIN RIGHT + BUT_MAC 120,184,10,COLOR_GREEN,00800000H,0,0 ; COIN CENTER + BUT_MAC 120,217,10,COLOR_GREEN,01000000H,0,0 ; FOURTH COIN +; BUT_MAC 214,207,10,COLOR_GREEN,00400000H,0,0 ; SERVICE CREDIT +; BUT_MAC 260,199,10,COLOR_GREEN,00080000H,0,0 ; SLAM +; BUT_MAC 260,222,10,COLOR_GREEN,00100000H,0,0 ; TEST + BUT_MAC 214,199,10,COLOR_GREEN,00400000H,0,0 ; SERVICE CREDIT + BUT_MAC 332,184,10,COLOR_GREEN,00080000H,0,0 ; SLAM + BUT_MAC 332,206,10,COLOR_GREEN,00100000H,0,0 ; TEST + BUT_MAC 165,184,10,COLOR_PURPLE,10000000H,0,0 ; VOL UP + BUT_MAC 165,217,10,COLOR_PURPLE,08000000H,0,0 ; VOL DOWN + BUT_MAC 280,199,10,COLOR_PURPLE,20000000H,0,0 ; COINDOOR INTERLOCK + BUT_MAC 332,228,10,COLOR_GREEN,80000000H,0,0 ; BILL VALIDATOR INPUT + + .LONG 0 + + + ; X,Y,RADIUS,COLOR,MASK,SHIFT,EXTEND +JOY_TABLE + BUT_MAC P1BC,110,16,CFILL+ROBO_RED,0fH,0,0 ; P1 MOVE + BUT_MAC P3BC,110,16,CFILL+ROBO_RED,0f00H,8,0 ; P2 MOVE + .LONG 0 + + +STR_TABLE +; STR_MAC 116,15,STSTART,ROBO_YELLOW,0 ; JAM SWITCH MESSAGE + + STR_MAC P1BC-24,47,P1START,ROBO_RED,0 ; P1 START + STR_MAC P3BC-24,47,P2START,ROBO_RED,0 ; P2 START +; STR_MAC 94,30,GETOUT1,ROBO_WHITE,0 ;GET OUT MESSAGE 1 + STR_MAC 70,162,GETOUT1,ROBO_LASER,0 ;GET OUT MESSAGE 1 +; STR_MAC 12,233,LEFTSLOT,COLOR_GREEN,0 ;LEFT COIN +; STR_MAC 103,222,CENTER,COLOR_GREEN,0 ;CENTER COIN +; STR_MAC 147,222,FOURTH,COLOR_GREEN,0 ;COIN MIDDLE +; STR_MAC 56,233,RIGHTSLOT,COLOR_GREEN,0 ;RIGHT COIN + STR_MAC 12,225,LEFTSLOT,COLOR_GREEN,0 ;LEFT COIN + STR_MAC 103,197,CENTER,COLOR_GREEN,0 ;CENTER COIN + STR_MAC 103,230,FOURTH,COLOR_GREEN,0 ;COIN MIDDLE + STR_MAC 56,225,RIGHTSLOT,COLOR_PURPLE,0 ;RIGHT COIN +; STR_MAC 10,222,COINMESS1,COLOR_GREEN,0 ;BOTTOM MESSAGE +; STR_MAC 55,222,COINMESS2,COLOR_GREEN,0 + STR_MAC 10,214,COINMESS1,COLOR_GREEN,0 ;BOTTOM MESSAGE + STR_MAC 55,214,COINMESS2,COLOR_PURPLE,0 +; STR_MAC 193,222,SERVICE1,COLOR_GREEN,0 ;SERVICE CREDIT +; STR_MAC 197,233,SERVICE2,COLOR_GREEN,0 ;SERVICE CREDIT +; STR_MAC 275,196,SLAM,COLOR_GREEN,0 ;SLAM +; STR_MAC 275,219,TEST,COLOR_GREEN,0 ;TEST SWITCH + STR_MAC 193,214,SERVICE1,COLOR_GREEN,0 ;SERVICE CREDIT + STR_MAC 197,225,SERVICE2,COLOR_GREEN,0 ;SERVICE CREDIT + STR_MAC 347,181,SLAM,COLOR_GREEN,0 ;SLAM + STR_MAC 347,204,TEST,COLOR_GREEN,0 ;TEST SWITCH + STR_MAC 143,197,VOLUPMESS,COLOR_PURPLE,0 ;VOLUME UP + STR_MAC 143,230,VOLDOWNMESS,COLOR_PURPLE,0 ;VOLUME DOWN + STR_MAC 252,214,CDINTERLOCK1,COLOR_PURPLE,0 ;COINDOOR INTERLOCK 1 + STR_MAC 252,225,CDINTERLOCK2,COLOR_PURPLE,0 ;COINDOOR INTERLOCK 2 + STR_MAC 347,227,BILLVALID,COLOR_GREEN,0 ;BILL VALIDATOR + + STR_MAC P1BC-15,110-3,J1MESS,ROBO_WHITE,0 + STR_MAC P3BC-15,110-3,J2MESS,ROBO_WHITE,0 + + .LONG 0 + + +BUT_STRS +; STR_MAC P1BC+18,PBCY-4,PASSMESS,ROBO_BLUE,0 ; P1 A2 +; STR_MAC P1BC-3,PBCY-16,SHOOTMESS,ROBO_RED,0 ; P1 A1 +; STR_MAC P1BC-23,PBCY-4,TURBOMESS,ROBO_WHITE,0 ; P1 A3 + +; STR_MAC P2BC+18,PBCY-4,PASSMESS,ROBO_BLUE,0 ; P1 A2 +; STR_MAC P2BC-3,PBCY-16,SHOOTMESS,ROBO_RED,0 ; P1 A1 +; STR_MAC P2BC-23,PBCY-4,TURBOMESS,ROBO_WHITE,0 ; P1 A3 + + .LONG 0 + +************************************************************************** +* * +* DIP SWITCH DISPLAY STUFF * +* * +************************************************************************** +DIP_VECS: + VECMAC COLOR_RED,20,82,60,82 ; DS1 + VECMAC COLOR_RED,20,82,20,188 + VECMAC COLOR_RED,20,188,60,188 + VECMAC COLOR_RED,60,82,60,188 + + VECMAC COLOR_RED,230,82,270,82 ; DS2 + VECMAC COLOR_RED,230,82,230,188 + VECMAC COLOR_RED,230,188,270,188 + VECMAC COLOR_RED,270,82,270,188 + + VECMAC COLOR_WHITE,63,92,73,92 + +; VECMAC COLOR_WHITE,63,54,73,54 + + VECMAC COLOR_WHITE,63,104,68,104 ;COINAGE MODE + VECMAC COLOR_WHITE,63,128,68,128 + VECMAC COLOR_WHITE,68,104,68,128 + VECMAC COLOR_WHITE,68,116,73,116 + + VECMAC COLOR_WHITE,63,140,68,140 ;COUNTRY + VECMAC COLOR_WHITE,63,152,68,152 + VECMAC COLOR_WHITE,68,140,68,152 + VECMAC COLOR_WHITE,68,146,73,146 + + VECMAC COLOR_WHITE,63,164,68,164 ;COIN COUNTER MODE + VECMAC COLOR_WHITE,63,176,68,176 + VECMAC COLOR_WHITE,68,164,68,176 + VECMAC COLOR_WHITE,68,170,73,170 + + VECMAC COLOR_WHITE,273,92,283,92 ;# OF PLAYERS + + VECMAC COLOR_WHITE,273,104,283,104 ;UNUSED + + VECMAC COLOR_WHITE,273,116,283,116 ;UNUSED + + VECMAC COLOR_WHITE,273,128,283,128 ;UNUSED + + VECMAC COLOR_WHITE,273,140,283,140 ;UNUSED + + VECMAC COLOR_WHITE,273,152,283,152 ;UNUSED + + +; VECMAC COLOR_WHITE,273,90,278,90 ;# OF PLAYERS +; VECMAC COLOR_WHITE,273,102,278,102 +; VECMAC COLOR_WHITE,278,90,278,102 +; VECMAC COLOR_WHITE,278,96,283,96 + + VECMAC COLOR_WHITE,273,164,283,164 ;UNUSED + + VECMAC COLOR_WHITE,273,176,283,176 ;TEST SWITCH + + .LONG 0 + +DIP_STRS: +; STR_MAC 124,8,DP_TITLE,COLOR_GREEN,0 + STR_MAC 30,70,DP_DS1,COLOR_WHITE,0 + STR_MAC 240,70,DP_DS2,COLOR_WHITE,0 + STR_MAC 7,89,DP_DSN1,COLOR_WHITE,0 + STR_MAC 7,101,DP_DSN2,COLOR_WHITE,0 + STR_MAC 7,113,DP_DSN3,COLOR_WHITE,0 + STR_MAC 7,125,DP_DSN4,COLOR_WHITE,0 + STR_MAC 7,137,DP_DSN5,COLOR_WHITE,0 + STR_MAC 7,149,DP_DSN6,COLOR_WHITE,0 + STR_MAC 7,161,DP_DSN7,COLOR_WHITE,0 + STR_MAC 7,173,DP_DSN8,COLOR_WHITE,0 + + STR_MAC 217,89,DP_DSN1,COLOR_WHITE,0 + STR_MAC 217,101,DP_DSN2,COLOR_WHITE,0 + STR_MAC 217,113,DP_DSN3,COLOR_WHITE,0 + STR_MAC 217,125,DP_DSN4,COLOR_WHITE,0 + STR_MAC 217,137,DP_DSN5,COLOR_WHITE,0 + STR_MAC 217,149,DP_DSN6,COLOR_WHITE,0 + STR_MAC 217,161,DP_DSN7,COLOR_WHITE,0 + STR_MAC 217,173,DP_DSN8,COLOR_WHITE,0 + + STR_MAC 100,230,DP_INS1,ROBO_LASER,0 + + .LONG 0 + +DP_DS1: + .STRING "SW2",0 + .EVEN +DP_DS2: + .STRING "SW1",0 + .EVEN +DP_DSN1 + .STRING "8",0 + .EVEN +DP_DSN2 + .STRING "7",0 + .EVEN +DP_DSN3 + .STRING "6",0 + .EVEN +DP_DSN4 + .STRING "5",0 + .EVEN +DP_DSN5 + .STRING "4",0 + .EVEN +DP_DSN6 + .STRING "3",0 + .EVEN +DP_DSN7 + .STRING "2",0 + .EVEN +DP_DSN8 + .STRING "1",0 + .EVEN + +D4MEGIROM: + .string "4 MEG IROM",0 + .even +D8MEGIROM: + .string "8 MEG IROM",0 + .even + +DUSECMOS_1: + .STRING "CMOS COINAGE",0 + .EVEN + +DUSECMOS_0: + .STRING "DIPSWITCH COINAGE",0 + .EVEN + +DMIRROR_0 + .STRING "MIRROR DISPLAY",0 + .EVEN + +DMIRROR_1 + .STRING "NORMAL DISPLAY",0 + .EVEN + +DCOUNTER_0a + .STRING "ONE COIN COUNTER",0 + .EVEN +DCOUNTER_0b + .STRING "1 COUNT/COIN",0 + .EVEN + +DCOUNTER_1a + .STRING "TWO COIN COUNTERS",0 + .EVEN +DCOUNTER_1b + .STRING "1 COUNT/COIN",0 + .EVEN + +DCOUNTER_2a + .STRING "ONE COIN COUNTER",0 + .EVEN +DCOUNTER_2b + .STRING "TOTALIZING ",0 + .EVEN + + +DCOUNTER_TAB + .LONG DCOUNTER_0a, DCOUNTER_0b + .LONG DCOUNTER_1a, DCOUNTER_1b + .LONG DCOUNTER_2a, DCOUNTER_2b + .LONG DCOUNTER_0a, DCOUNTER_0b + +DCOINAGE + .STRING "COINAGE",0 + .EVEN + +DCOUNTRY_0 + .STRING "USA",0 + .EVEN +DCOUNTRY_2 + .STRING "FRENCH",0 + .EVEN + +DPLAYER_TAB + .LONG DPLAYER_0, DPLAYER_1 + +DCOUNTRY_1 + .STRING "GERMAN",0 + .EVEN + +DCOUNTRY_TAB + .LONG DCOUNTRY_0, DCOUNTRY_1, DCOUNTRY_2, DCOUNTRY_3 + +DCREDITS + .STRING "CREDITS...",0 + .EVEN +DTOSTART + .STRING "TO START",0 + .EVEN +DTOCONTINUE + .STRING "TO CONTINUE",0 + .EVEN + +DTEST_0 + .STRING "TEST SWITCH",0 + .EVEN + +DPLAYER_0 + .STRING "4 PLAYER KIT",0 + .EVEN +DPLAYER_1 + .STRING "2 PLAYER KIT",0 + .EVEN + +DNOVALIDATOR + .STRING "NO VALIDATOR",0 + .EVEN +DVALIDATOR + .STRING "VALIDATOR INST.",0 + .EVEN +DCLIPS + .STRING "UNUSED",0 + .EVEN +DNOCLIPS + .STRING "UNUSED",0 + .EVEN +DPOWER + .STRING "POWERUP TEST",0 + .EVEN +DNOPOWER + .STRING "SKIP TEST",0 + .EVEN + +DUCOIN7 + .STRING "FREEPLAY",0 + .EVEN + +DCOINTAB + .LONG DUCOINTAB, DGCOINTAB, DFCOINTAB, DUCOINTAB + +DP_TITLE + .STRING "DIPSWITCH SETTINGS",0 + .EVEN + +DP_INS1 + .STRING "PRESS ANY BUTTON TO EXIT",0 + .EVEN + +DP_ON + .STRING "ON",0 + .EVEN +DP_OFF + .STRING "OFF",0 + +DUNUSED +DGCOIN4 +DCOUNTRY_3 + .STRING "UNUSED",0 + .EVEN + +DUCOINTAB + .LONG USA_1,USA_2,USA_3,USA_4,USA_ELECTITLE,DGCOIN4 + .LONG DGCOIN4,DUCOIN7 + +DGCOINTAB + .LONG GERMAN_1,GERMAN_2,GERMAN_3,GERMAN_4,GERMAN_ELECTITLE + .LONG DGCOIN4,DGCOIN4,DUCOIN7 + +DFCOINTAB + .LONG FRENCH_1,FRENCH_2,FRENCH_3,FRENCH_4,FRENCH_ELECTITLE + .LONG DGCOIN4,DGCOIN4,DUCOIN7 + +DCREDTAB + .LONG DP_DSN2,DP_DSN1 + .LONG DP_DSN1,DP_DSN1 + .LONG DP_DSN2,DP_DSN2 + .LONG DP_DSN3,DP_DSN1 + .LONG DP_DSN4,DP_DSN1 + .LONG DP_DSN3,DP_DSN2 + .LONG DP_DSN4,DP_DSN2 + .LONG DP_DSN3,DP_DSN3 + + + .if 0 +dip_t + STR_MAC 090h,20h,DIPMES0,ROBO_YELLOW,0 ;DIP SWITCH TEST + STR_MAC DS1_XPOS+16,3Ch,DIPMES1,ROBO_GREEN,0 ;DIP SWITCH 1 + STR_MAC DS2_XPOS+16,3Ch,DIPMES2,ROBO_GREEN,0 ;DIP SWITCH 2 + STR_MAC 200-12*8,220,GETOUT2,ROBO_GREEN,0 ;exit message + .LONG 0 + +dipline_t + .word 20,10,379,10 + .word 379,10,379,245 + .word 379,245,20,245 + .word 20,245,20,10 + + .word DS1_XPOS+12,DIP_YPOS-4, DS1_XPOS+43,DIP_YPOS-4 + .word DS1_XPOS+12,DIP_YPOS+109, DS1_XPOS+43,DIP_YPOS+109 + .word DS1_XPOS+12,DIP_YPOS-4, DS1_XPOS+12,DIP_YPOS+109 + .word DS1_XPOS+43,DIP_YPOS-4, DS1_XPOS+43,DIP_YPOS+109 + + .word DS2_XPOS+12,DIP_YPOS-4, DS2_XPOS+43,DIP_YPOS-4 + .word DS2_XPOS+12,DIP_YPOS+109, DS2_XPOS+43,DIP_YPOS+109 + .word DS2_XPOS+12,DIP_YPOS-4, DS2_XPOS+12,DIP_YPOS+109 + .word DS2_XPOS+43,DIP_YPOS-4, DS2_XPOS+43,DIP_YPOS+109 + + .long -1 + +dipline2 + .word DS1_XPOS+45,DIP_YPOS+3, DS1_XPOS+48,DIP_YPOS+3 + .word DS1_XPOS+45,DIP_YPOS+4+5*14, DS1_XPOS+48,DIP_YPOS+4+5*14 + .word DS1_XPOS+48,DIP_YPOS+3, DS1_XPOS+48,DIP_YPOS+4+5*14 + .word DS1_XPOS+49,DIP_YPOS-2+3*14, DS1_XPOS+51,DIP_YPOS-2+3*14 + .word DS1_XPOS+45,DIP_YPOS+4+6*14, DS1_XPOS+51,DIP_YPOS+4+6*14 + .word DS2_XPOS+45,DIP_YPOS+4, DS2_XPOS+51,DIP_YPOS+4 + .long -1 + +country_text + .long cntry0,cntry1,cntry2,cntry3 ;4 + .long cntry4,cntry5,cntry6,cntry7 ;8 + .long cntry8,cntry9,cntry10,cntry11 ;12 + .long cntry12,cntry13,cntry14,cntry15 ;16 + .long cntry16,cntry17,cntry18,cntry19 ;20 + .long cntry20,cntry21,cntry22,cntry23 ;24 + .long cntry24,cntry25,cntry26,cntry0 ;28 + .long cntry0,cntry0,cntry0,cntry0 ;32 + + .long cntry0,cntry0,cntry0,cntry0 ;36 + .long cntry0,cntry0,cntry0,cntry0 ;40 + .long cntry0,cntry0,cntry0,cntry0 ;44 + .long cntry0,cntry0,cntry0,cntry0 ;48 + .long cntry0,cntry0,cntry0,cntry0 ;52 + .long cntry0,cntry0,cntry0,cntry0 ;56 + .long cntry0,cntry0,cntry0,cntry0 ;60 + .long cntry0,cntry0,cntry0,cntry0 ;64 + +cntry0 .string "USA 1",0 ;0 +cntry1 .string "USA 2",0 ;1 +cntry2 .string "USA 3",0 ;2 +cntry3 .string "GERMANY 1",0 ;3 +cntry4 .string "GERMANY 2",0 ;4 +cntry5 .string "GERMANY 3",0 ;5 +cntry6 .string "FRANCE 1",0 ;6 +cntry7 .string "FRANCE 2",0 ;7 +cntry8 .string "FRANCE 3",0 ;8 +cntry9 .string "SWISS 1",0 ;9 +cntry10 .string "ITALY",0 ;10 +cntry11 .string "UK 1",0 ;11 +cntry12 .string "UK 2",0 ;12 +cntry13 .string "UK ELEC",0 ;13 +cntry14 .string "SPAIN 1",0 ;14 +cntry15 .string "AUSTRALIA 1",0 ;15 +cntry16 .string "JAPAN 1",0 ;16 +cntry17 .string "JAPAN 2",0 ;17 +cntry18 .string "AUSTRIA 1",0 ;18 +cntry19 .string "BELGIUM 1",0 ;19 +cntry20 .string "BELGIUM 2",0 ;20 +cntry21 .string "SWEDEN",0 ;21 +cntry22 .string "NEW ZEALAND",0 ;22 +cntry23 .string "NETHERLANDS",0 ;23 +cntry24 .string "FINLAND",0 ;24 +cntry25 .string "NORWAY",0 ;25 +cntry26 .string "DENMARK",0 ;26 + +DIP_COIN1 .string "CMOS COINAGE",0 +DIP_COIN2 .string "DIP COINAGE",0 +DIP_TESTSW1 .string "TEST MODE",0 +DIP_TESTSW2 .string "GAME MODE",0 + +DIPMES0 .STRING "DIP SWITCH TEST",0 +DIPMES1 .STRING "DS1",0 +DIPMES2 .STRING "DS2",0 +DIPMES01 .string "1",0 +DIPMES02 .string "2",0 +DIPMES03 .string "3",0 +DIPMES04 .string "4",0 +DIPMES05 .string "5",0 +DIPMES06 .string "6",0 +DIPMES07 .string "7",0 +DIPMES08 .string "8",0 +DIPMES18 + .STRING "1 2 3 4 5 6 7 8",0 +DIPON .STRING "ON",0 +DIPOFF .STRING "OFF",0 + + .endif + +LEFTSLOT + .STRING "LEFT",0 + .EVEN +RIGHTSLOT + .STRING "RIGHT",0 + .EVEN +SERVICE1 + .STRING "SERVICE",0 + .EVEN +SERVICE2 + .STRING "CREDIT",0 + .EVEN + +COINMESS1 + .STRING "COIN1",0 + .EVEN +COINMESS2 + .STRING "COIN2",0 + .EVEN + +CENTER + .STRING "COIN3",0 + .EVEN +FOURTH + .STRING "COIN4",0 + .EVEN +;SLAM +; .STRING "SLAM - TILT",0 +; .EVEN +SLAM .string "SLAM",0 + .even +VOLUPMESS + .string "VOL UP",0 + .even +VOLDOWNMESS + .string "VOL DN",0 + .even +CDINTERLOCK1 + .string "COINDOOR",0 + .even +CDINTERLOCK2 + .string "INTERLOCK",0 + .even +BILLVALID + .string "BILL IN",0 + .even + +TEST + .STRING "TEST",0 + .EVEN +SEC_MESS_1 + .string "LEVEL 1 SECURITY CHECK",0 + .even +SEC_MESS_2 + .string "LEVEL 2 SECUREITY CHECK FAILURE",0 + .even + + +J1MESS .string "JOY1",0 +J2MESS .string "JOY2",0 + +GETOUT2 .STRING "PRESS ANY BUTTON TO EXIT",0 +GETOUT1 .STRING "PRESS START 1 AND START 2 TO EXIT",0 +; .STRING "TEST SWITCH OFF TO EXIT",0 + .EVEN + +STSTART .STRING "WRESTLEMANIA SWITCHES",0 + .EVEN + +P1START .STRING "START 1",0 + .EVEN +P2START .STRING "START 2",0 + .EVEN + +LEFTMESS + .STRING "LFT",0 + .EVEN +RIGHTMESS + .STRING "RT",0 + .EVEN +UPMESS + .STRING "UP",0 + .EVEN +DOWNMESS + .STRING "DWN",0 + .EVEN + +P1MOVE + .STRING "P1 MOVE",0 + .EVEN +P2MOVE + .STRING "P2 MOVE",0 + .EVEN + + +**************************************************************************** +* INITCOLR: INITIALIZE COLORS; ROUTINE LOADS PALETTE 0 WITH THE COLOR * +* PALETTE USED BY DIAGNOSTIC TESTS. * +**************************************************************************** + +INITCOLR + + MOVI COLRAM,A0,L ; PALETTE LOCATION + MOVI DIAGP,A1,L + MOVE *A1+,A2,W ; LENGTH OF PALETTE +LPLP1 + MOVE *A1+,*A0+,W + DSJS A2,LPLP1 ; KEEP ON CHUGGIN, BABY + + CLR A14 + MOVE A14, @CMAPSEL + + FRET B5 +**************************************************************************** +* POINT: FUNCTION DISPLAYS A POINT OF ANY COLOR. * +* * +* ENTRY: A0 = XY SCREEN ADDRESS OF THE POINT * +* A1 = COLOR VALUE * +* B6 = RETURN ADDRESS * +* * +* USES: A0, A1, B2, B3, B4, B6, B10 * +**************************************************************************** + +POINT: + ADDI SCRXFUDGE,A0 + + MOVI SCRN_PTCH, DPTCH + CLR OFFSET + + LMO DPTCH, B10 + MOVE B10, @CONVDP + + PIXT A1, *A0.XY + + FRET B6 + +**************************************************************************** +* RECTANGLE: FUNCTION DISPLAYS A RECTANGLE OF ANY COLOR. * +* * +* ENTRY: A0 = XY SCREEN ADDRESS OF UPPER LEFT CORNER * +* A1 = XY RECTANGLE DIMENSIONS * +* A2 = COLOR VALUE * +* * +* B6 = RETURN ADDRESS * +* * +* USES: A0, A1, A2, B2, B3, B4, B6, B7, B9, B10 * +**************************************************************************** + +RECTANGLE: + ADDI SCRXFUDGE,A0 + + MOVI SCRN_PTCH, DPTCH + CLR OFFSET + + LMO DPTCH, B10 + MOVE B10, @CONVDP + + MOVE A2, COLOR1 + MOVE A0, DADDR + MOVE A1, DYDX + move a1,@_temporary,L ;Temporary Storage fer these + move a2,SADDR + move @CONTROL,a1,W + move a1,a2 + andni 020h,a2 + move a2,@CONTROL,W ; Pixel Transparency OFF + move a2,a2 + + FILL XY + + move a1,@CONTROL,W ; Restore Pixel Transparency + move SADDR,a2 ; Restore these reggies + move @_temporary,a1,L + + SUBI SCRXFUDGE,A0 + + FRET B6 + +**************************************************************************** +* LINE: FUNCTION DRAWS HORIZONTAL OR VERTICAL LINES OF ANY COLOR. +* +* ENTRY: A0 = BEGINNING XY SCREEN ADDRESS +* A1 = ENDING XY SCREEN ADDRESS +* A2 = COLOR VALUE +* +* B6 = RETURN ADDRESS +* +* USES: A0-A4, B3,B4,B6,B9,B10 +**************************************************************************** + +HVLINE + MOVI SCRXFUDGE,A3 + ADDXY A3,A0 + ADDXY A3,A1 + + MOVI SCRN_PTCH,DPTCH + CLR OFFSET + + LMO DPTCH,B10 + MOVE B10,@CONVDP + + MOVE A2,COLOR1 + + MOVK 1, A2 ; DRAV DX: ASSUME HORIZONTAL LINE + + MOVE A0,A3 ; DETERMINE (P2 > P1) OR (P2 < P1) + CVXYL A3,A3 + + MOVE A1,A4 + CVXYL A4,A4 + + CMP A3,A4 ; IF (P2 < P1) ~(INCREMENT) + JRP $100 + + NEG A2 ; INCREMENT IS A SIGNED WORD + ZEXT A2 + +$100 CMPXY A0,A1 ; IF VERTICAL LINE + JRZ $110 ; DRAV DX -> DRAV DY + SLL 16,A2 + +$110 DRAV A2,A0 ; DRAW LINE + CMPXY A0,A1 + JRNN $110 + JRNZ $110 + + FRET B6 + + +******************************** +* Draw a line +* A0=YX Start +* A1=YX End +* A2=Color +* B6=Return addr +* Trashes B0-B5,B7-B13 + + SUBRP line_draw + + ADDI SCRXFUDGE,A0 + ADDI SCRXFUDGE,A1 + + move a2,COLOR1 + movi SCRN_PTCH,DPTCH + clr OFFSET ;B4 + lmo DPTCH,b0 + move b0,@CONVDP + + move a0,b2 ;YX strt + move a1,b10 ;YX end + clr b7 ;b:a + subxy b2,b10 + jrnc bpos + jrnv bneg_apos + subxy b10,b7 + movi -1,b11 + jruc cmp_b_a +bneg_apos + subxy b10,b7 + movx b10,b7 + movi >ffff0000,b11 + jruc cmp_b_a +bpos jrnv bpos_apos +bpos_aneg + subxy b10,b7 + movy b10,b7 + movi >1ffff,b11 + jruc cmp_b_a +bpos_apos + move b10,b7 + movi >10001,b11 +cmp_b_a clr b12 + + move b7,b0 + srl 16,b0 + clr b10 + movx b7,b10 + cmp b0,b10 + jrgt a_ge_b + + move b0,b10 + movx b7,b0 + rl 16,b7 ;Swap b:a + movy b11,b12 + sll 1,b0 + sub b10,b0 + addk 1,b10 + move b11,b11 + jrn line1 +line0 line 0 + jruc ldx + +a_ge_b movx b11,b12 + sll 1,b0 + sub b10,b0 + move b11,b11 + jrnn line0 +line1 line 1 + +ldx FRET B6 + + +**************************************************************************** +* STRING: FUNCTION DISPLAYS AN ASCII STRING OF ANY COLOR EITHER VERTICALLY +* OR HORIZONTALLY. +* +* ENTRY: A0 = STARTING STRING ADDRESS +* A1 = Y:X SCREEN ADDRESS +* A2 = DIRECTION +* A3 = COLOR +* +* B6 = RETURN ADDRESS +* +* USES: A0 - A6, B0 - B4, B6 - B14 +**************************************************************************** +STRNEW1 + MMTM SP,A1,A2,A3,A4,A5,A6 + FCALL STRING,B6 + MMFM SP,A1,A2,A3,A4,A5,A6 + RETS +STRNEW + PUSH a0 + CALLR STRNEW1 + MMFM SP,A0 + RETS + +STRING + ADDI SCRXFUDGE,A1 + + MOVI SCRN_PTCH,DPTCH + CLR OFFSET + + LMO DPTCH,B10 + MOVE B10,@CONVDP + + MOVE A3,COLOR1 + CLR COLOR0 + + +$200 MOVB *A0,A4 ;GET CHARACTER + JRZ $230 ;QUIT IF NULL + + ADDK 8,A0 + SUBK 32,A4 ;GET POINTER TO CHARACTER HEADER + SLL 3,A4 + ADDI SYSFONT,A4,L + MOVB *A4,A4 + SLL 5,A4 + ADDI T2_SP,A4 + MOVE *A4+,A5 ;CHAR DIMENSIONS + MOVE A5,A6 ;SPLIT UP BYTE + SLL 12,A6 ;SHIFT UP HEIGHT TO Y + SLL 28,A5 ;STRIP AWAY HEIGHT + SRL 28,A5 + MOVY A6,A5 + RL 16,A5 + MOVE A5,DYDX + + CLR A6 ;A6 = CHAR WIDTH + MOVX A5,A6 + + ADDK 7, A6 ;ROUND UP WIDTH TO INTEGRAL NUMBER + SRL 3, A6 ;OF BYTES = SOURCE PITCH + SLL 3, A6 + MOVE A6,SPTCH + + MOVE *A4,A6 ;CHAR DATA + ADDI CBASE,A6 + MOVE A6,SADDR + + MOVE A1,DADDR + + PIXBLT B,XY + + CLR A6 + MOVE A2,A2 + JRZ $210 + + MOVY A5,A6 ;A1 += (CHAR HEIGHT + SPACING) + SRL 16,A6 ;DIRECTION = DOWN + ADDK 1,A6 + SLL 16,A6 + ADD A6,A1 + JRUC $200 + +$210 MOVX A5,A6 ;A1 += (CHAR WIDTH + SPACING) + ADDK 2,A6 ;DIRECTION = RIGHT + ADD A6,A1 + JRUC $200 + +$230 ;SETF 16, 1, 0 + FRET B6 + +STRINGCENTER: + SETF 8, 0, 0 + CLR A1 + MOVE A0,A2 +SPLLOOP + MOVE *A0+, A4 ; GET THE CHAR + JRZ SPLEND ; END OF STRING + + SUBK 32, A4 ; GET POINTER TO CHARACTER HEADER + + SLL 3,A4 + ADDI SYSFONT,A4,L + MOVB *A4,A4 + SLL 5,A4 + ADDI T2_SP,A4 + + MOVE *A4+, A5, 1 ; CHAR DIMENSIONS + ZEXT A5 + + SRL 4,A5 ; GET JUST THE X DIMENSION + +; ADDK 7, A5 ; ROUND UP WIDTH TO INTEGRAL NUMBER +; SRL 3, A5 ; OF BYTES = SOURCE PITCH +; SLL 3, A5 + + ADDK 2H, A5 ; GIVE IN TO SPACING + ADD A5, A1 + JRUC SPLLOOP + +SPLEND + SETF 16, 1, 0 + MOVE A2,A0 ; RESTORE STRING ADDRESS + SRL 1,A1 + MOVI 200,A2 + SUB A1,A2 + MOVE A2,A1 + FRET B6 + +;**************************************************************************** +;* CIRCLE: FUNCTION DRAWS OUTLINE OR FILLED CIRCLES. * +;* * +;* ENTRY: A0 = radius * +;* A1 = center (Y:X) * +;* A6 = <00:15> = color * +;* A6 = <15:31> = fill: 0=no fill, 1=fill * +;* * +;* USES: A0 - A8, B0, B10 * +;**************************************************************************** + +CIRCLE + ADDI SCRXFUDGE,A1 + + movi plot8,a7 ; assume no fill + btst 16,a6 + jrz CIRC0 + movi fill4,a7 +CIRC0 + movi SCRN_PTCH,DPTCH ;Restore screen pitch and convdp + movk >13,b10 ;this is faster + MOVE B10,@CONVDP + MOVE A6,COLOR1 + movi [1,0],DYDX ; Y width always 1 + + clr a2 ; x = 0 + move a0,a3 ; y = r + move a0,a4 + sll 1,a4 + subk 3,a4 + neg a4 ; d = 3 - 2*r +cloop + cmp a3,a2 ; if x > y, we are done + jrgt done + + MOVE A7,B0 ; PLOT ROUTINE + EXGPC B0 + + move a2,a5 ; x -> a5 + btst 31,a4 + jrz dpos ; branch if d is positive + +; d negative + + sll 2,a5 ; 4*x -> a5 + addk 6,a5 ; 4*x+6 -> a5 + jruc cont + +; d positive + +dpos sub a3,a5 ; x-y -> a5 + sll 2,a5 ; 4*(x-y) -> a5 + addk 10,a5 ; 4*(x-y)+10 -> a5 + subk 1,a3 ; y = y - 1 + +cont add a5,a4 ; d = d + a5 + addk 1,a2 ; x = x + 1 + jruc cloop + +done FRET B6 + +plot8 + move a3,a5 + neg a5 ; -y into a5; +y in a3 + sll 16,a5 + sll 16,a3 + movx a2,a5 ; a3 = (y:x) + movx a2,a3 ; a5 = (-y:x) + + movk 2,a8 +put4 + move a1,a0 ; center (Y:X) in a0 + addxy a3,a0 ; (cx+x),(cy+y) + pixt a6,*a0.XY + move a1,a0 ; center (Y:X) in a0 + addxy a5,a0 ; (cx+x),(cy-y) + pixt a6,*a0.XY + move a1,a0 ; center (Y:X) in a0 + subxy a3,a0 ; (cx-x),(cy-y) + pixt a6,*a0.XY + move a1,a0 ; center (Y:X) in a0 + subxy a5,a0 ; (cx-x),(cy+y) + pixt A6,*a0.XY + rl 16,a3 + rl 16,a5 ; transpose x and y + dsj a8,put4 + sra 16,a3 ; restore y + + FRET B0 + +fill4: + move a2,b10 ; x + sll 1,b10 ; 2x + movx b10,DYDX ; delta x = 2x + move a3,a5 + neg a5 ; -y into a5 +y in a3 + sll 16,a5 + sll 16,a3 + movx a2,a5 ; a3 = (y:x) + movx a2,a3 ; a5 = (-y:x) + movk 2,a8 +put2: + move a1,a0 + subxy a5,a0 + move a0,DADDR + fill XY + + move a1,a0 + subxy a3,a0 + move a0,DADDR + fill XY + rl 16,a3 ; a3 = (x:y) + rl 16,a5 ; transpose x and y + clr a6 + subxy a5,a6 + move a6,a5 ; a5 = (-x:y) + move a3,b10 ; y + sll 1,b10 ; 2y + movx b10,DYDX ; delta x = 2y + dsj a8,put2 + sra 16,a3 ; restore y + + FRET B0 + +******************************** +*SCRCLR - CLEAR ENTIRE BIT MAP +* USES:B2,B3,B4 CALL WITH B6 +DSCRCLR + CLR B2 +DSWRITE + CLR B3 + MOVE B3,@DMACMAP,0 + MOVI SCREEN,B3,L + MOVI (SCRNE-SCREEN)/32,B4,L +SCRLP MOVE B2,*B3+,L + DSJS B4,SCRLP + FRET B6 + + + +************************************************************************** +* * +* CPU BOARD INFORMATION * +* * +************************************************************************** + +CPU_VECS: +; VECMAC COLOR_WHITE,5,15,390,15 ; BOARD OUTLINE +; VECMAC COLOR_WHITE,390,15,390,254 +; VECMAC COLOR_WHITE,5,253,390,253 +; VECMAC COLOR_WHITE,5,15,5,100 +; VECMAC COLOR_WHITE,5,100,15,100 +; VECMAC COLOR_WHITE,15,100,15,115 +; VECMAC COLOR_WHITE,5,115,15,115 +; VECMAC COLOR_WHITE,5,115,5,135 +; VECMAC COLOR_WHITE,5,135,15,135 +; VECMAC COLOR_WHITE,15,135,15,138 +; VECMAC COLOR_WHITE,5,138,15,138 +; VECMAC COLOR_WHITE,5,138,5,215 +; VECMAC COLOR_WHITE,5,215,15,215 +; VECMAC COLOR_WHITE,15,215,15,230 +; VECMAC COLOR_WHITE,5,230,15,230 +; VECMAC COLOR_WHITE,5,230,5,254 + + VECMAC COLOR_WHITE,5,5,5,243 ; BOARD OUTLINE + VECMAC COLOR_WHITE,5,243,390,243 + VECMAC COLOR_WHITE,390,243,390,5 + VECMAC COLOR_WHITE,390,5,355,5 + VECMAC COLOR_WHITE,355,5,355,10 + VECMAC COLOR_WHITE,355,10,343,10 + VECMAC COLOR_WHITE,343,10,343,5 + VECMAC COLOR_WHITE,343,5,326,5 + VECMAC COLOR_WHITE,326,5,326,10 + VECMAC COLOR_WHITE,326,10,323,10 + VECMAC COLOR_WHITE,323,10,323,5 + VECMAC COLOR_WHITE,323,5,212,5 + VECMAC COLOR_WHITE,212,5,212,10 + VECMAC COLOR_WHITE,212,10,200,10 + VECMAC COLOR_WHITE,200,10,200,5 + VECMAC COLOR_WHITE,200,5,5,5 + .LONG 0 + +CPUXBASE EQU 5 +CPUYBASE EQU 5 + + +CPU_CHIPS: +;CRAM1 CHIPMAC 0,125,25,20,45,7,11,CNAMEA8,1,2,2,1 ; COLOR RAM +;CRAM2 CHIPMAC 1,125,75,20,45,7,11,CNAMEC8,1,2,2,1 ; COLOR RAM + +;VRAM1 CHIPMAC 2,190,25,15,38,6,2,CNAMEA11,1,2,2,1 ; BANK 1 VIDEO RAM +;VRAM2 CHIPMAC 3,207,25,15,38,6,2,CNAMEA12,1,2,2,1 ; (PALETTE) +;VRAM3 CHIPMAC 4,224,25,15,38,6,2,CNAMEA13,1,2,2,1 +;VRAM4 CHIPMAC 5,241,25,15,38,6,2,CNAMEA14,1,2,2,1 + +;VRAM5 CHIPMAC 6,190,71,15,38,6,2,CNAMEB11,1,2,2,1 ; BANK 2 VIDEO RAM +;VRAM6 CHIPMAC 7,207,71,15,38,6,2,CNAMEB12,1,2,2,1 ; (PIXEL) +;VRAM7 CHIPMAC 8,224,71,15,38,6,2,CNAMEB13,1,2,2,1 +;VRAM8 CHIPMAC 9,241,71,15,38,6,2,CNAMEB14,1,2,2,1 + +;CPU CHIPMAC 0,330,60,35,35,4,13,CNAMEB21,0,3,3,1 ; CPU + +;DMA CHIPMAC 0,201,120,38,38,6,16,CNAMEE13,0,3,3,1 ; DMA + +;PROM1 CHIPMAC 1,155,210,20,40,7,3,CNAMEJ12,1,2,2,1 ; PROGRAM ROM 1 +;PROM2 CHIPMAC 0,155,167,20,40,7,3,CNAMEG12,1,2,2,1 ; PROGRAM ROM 2 + +;IROM1 CHIPMAC 1,195,167,20,40,7,3,CNAMEG14,1,2,2,1 ; IMAGE ROM +;IROM2 CHIPMAC 2,217,167,20,40,7,3,CNAMEG16,1,2,2,1 ; IMAGE ROM +;IROM3 CHIPMAC 3,239,167,20,40,7,3,CNAMEG17,1,2,2,1 ; IMAGE ROM +;IROM4 CHIPMAC 4,261,167,20,40,7,3,CNAMEG18,1,2,2,1 ; IMAGE ROM + +;IROM5 CHIPMAC 5,283,167,20,40,7,3,CNAMEG19,1,2,2,1 ; IMAGE ROM +;IROM6 CHIPMAC 6,305,167,20,40,7,3,CNAMEG20,1,2,2,1 ; IMAGE ROM +;IROM7 CHIPMAC 7,327,167,20,40,7,3,CNAMEG22,1,2,2,1 ; IMAGE ROM +;IROM8 CHIPMAC 8,349,167,20,40,7,3,CNAMEG23,1,2,2,1 ; IMAGE ROM + +;IROM9 CHIPMAC 9,195,210,20,40,7,3,CNAMEJ14,1,2,2,1 ; IMAGE ROM +;IROM10 CHIPMAC 10,217,210,20,40,7,3,CNAMEJ16,1,2,2,1 ; IMAGE ROM +;IROM11 CHIPMAC 11,239,210,20,40,7,3,CNAMEJ17,1,2,2,1 ; IMAGE ROM +;IROM12 CHIPMAC 12,261,210,20,40,7,3,CNAMEJ18,1,2,2,1 ; IMAGE ROM + +;IROM13 CHIPMAC 13,283,210,20,40,7,3,CNAMEJ19,1,2,2,1 ; IMAGE ROM +;IROM14 CHIPMAC 14,305,210,20,40,7,3,CNAMEJ20,1,2,2,1 ; IMAGE ROM +;IROM15 CHIPMAC 15,327,210,20,40,7,3,CNAMEJ22,1,2,2,1 ; IMAGE ROM +;IROM16 CHIPMAC 16,349,210,20,40,7,3,CNAMEJ23,1,2,2,1 ; IMAGE ROM + +;SRAM1 CHIPMAC 0,50,210,13,33,4,4,CNAMEJ4,1,2,2,1 ; SCRATCH PAD +;SRAM2 CHIPMAC 1,67,210,13,33,4,4,CNAMEJ5,1,2,2,1 ; SCRATCH PAD +;SRAM3 CHIPMAC 2,84,210,13,33,4,4,CNAMEJ6,1,2,2,1 ; SCRATCH PAD +;SRAM4 CHIPMAC 3,101,210,13,33,4,4,CNAMEJ7,1,2,2,1 ; SCRATCH PAD + + +CRAM1 CHIPMAC 0,347,152,30,13,5,3,CNAMEU36,0,28,2,1 ; COLOR RAM (U36) +CRAM2 CHIPMAC 1,313,152,30,13,5,3,CNAMEU37,0,28,2,1 ; COLOR RAM (U37) + +VRAM1 CHIPMAC 2,347,207,38,13,8,3,CNAMEU14,0,36,2,1 ; BANK 1 VIDEO RAM (U14) +VRAM2 CHIPMAC 3,307,207,38,13,8,3,CNAMEU15,0,36,2,1 ; (PALETTE) (U15) +VRAM3 CHIPMAC 4,267,207,38,13,8,3,CNAMEU16,0,36,2,1 ; (U16) +VRAM4 CHIPMAC 5,227,207,38,13,8,3,CNAMEU17,0,36,2,1 ; (U17) + +VRAM5 CHIPMAC 6,347,225,38,13,8,3,CNAMEU10,0,36,2,1 ; BANK 2 VIDEO RAM (U10) +VRAM6 CHIPMAC 7,307,225,38,13,8,3,CNAMEU11,0,36,2,1 ; (PIXEL) (U11) +VRAM7 CHIPMAC 8,267,225,38,13,8,3,CNAMEU12,0,36,2,1 ; (U12) +VRAM8 CHIPMAC 9,227,225,38,13,8,3,CNAMEU13,0,36,2,1 ; (U13) + +CPU CHIPMAC 0,330,50,35,35,7,13,CNAMEU59,0,3,3,1 ; CPU (U59) + +DMA CHIPMAC 0,246,157,38,38,8,16,CNAMEU33,0,3,3,1 ; DMA (U33) + +PROM1 CHIPMAC 1,220,65,40,13,9,3,CNAMEU63,0,38,2,1 ; PROGRAM ROM 1 (U63) +PROM2 CHIPMAC 0,220,83,40,13,9,3,CNAMEU54,0,38,2,1 ; PROGRAM ROM 2 (U54) + +IROM1 CHIPMAC 1,10,122,40,13,6,3, CNAMEU133,0,38,2,1 ; IMAGE ROM (U133) +IROM2 CHIPMAC 2,52,122,40,13,6,3, CNAMEU132,0,38,2,1 ; IMAGE ROM (U132) +IROM3 CHIPMAC 3,94,122,40,13,6,3, CNAMEU131,0,38,2,1 ; IMAGE ROM (U131) +IROM4 CHIPMAC 4,136,122,40,13,6,3, CNAMEU130,0,38,2,1 ; IMAGE ROM (U130) + +IROM5 CHIPMAC 5,10,137,40,13,6,3, CNAMEU129,0,38,2,1 ; IMAGE ROM (U129) +IROM6 CHIPMAC 6,52,137,40,13,6,3, CNAMEU128,0,38,2,1 ; IMAGE ROM (U128) +IROM7 CHIPMAC 7,94,137,40,13,6,3, CNAMEU127,0,38,2,1 ; IMAGE ROM (U127) +IROM8 CHIPMAC 8,136,137,40,13,6,3, CNAMEU126,0,38,2,1 ; IMAGE ROM (U126) + +IROM9 CHIPMAC 9,10,152,40,13,6,3, CNAMEU125,0,38,2,1 ; IMAGE ROM (U125) +IROM10 CHIPMAC 10,52,152,40,13,6,3, CNAMEU124,0,38,2,1 ; IMAGE ROM (U124) +IROM11 CHIPMAC 11,94,152,40,13,6,3, CNAMEU123,0,38,2,1 ; IMAGE ROM (U123) +IROM12 CHIPMAC 12,136,152,40,13,6,3,CNAMEU122,0,38,2,1 ; IMAGE ROM (U122) + +IROM13 CHIPMAC 13,10,167,40,13,6,3, CNAMEU121,0,38,2,1 ; IMAGE ROM (U121) +IROM14 CHIPMAC 14,52,167,40,13,6,3, CNAMEU120,0,38,2,1 ; IMAGE ROM (U120) +IROM15 CHIPMAC 15,94,167,40,13,6,3, CNAMEU119,0,38,2,1 ; IMAGE ROM (U119) +IROM16 CHIPMAC 16,136,167,40,13,6,3,CNAMEU118,0,38,2,1 ; IMAGE ROM (U118) + +IROM17 CHIPMAC 17,10,182,40,13,6,3, CNAMEU117,0,38,2,1 ; IMAGE ROM (U117) +IROM18 CHIPMAC 18,52,182,40,13,6,3, CNAMEU116,0,38,2,1 ; IMAGE ROM (U116) +IROM19 CHIPMAC 19,94,182,40,13,6,3, CNAMEU115,0,38,2,1 ; IMAGE ROM (U115) +IROM20 CHIPMAC 20,136,182,40,13,6,3,CNAMEU114,0,38,2,1 ; IMAGE ROM (U114) + +IROM21 CHIPMAC 21,10,197,40,13,6,3, CNAMEU113,0,38,2,1 ; IMAGE ROM (U113) +IROM22 CHIPMAC 22,52,197,40,13,6,3, CNAMEU112,0,38,2,1 ; IMAGE ROM (U112) +IROM23 CHIPMAC 23,94,197,40,13,6,3, CNAMEU111,0,38,2,1 ; IMAGE ROM (U111) +IROM24 CHIPMAC 24,136,197,40,13,6,3,CNAMEU110,0,38,2,1 ; IMAGE ROM (U110) + +IROM25 CHIPMAC 25,10,212,40,13,6,3, CNAMEU109,0,38,2,1 ; IMAGE ROM (U109) +IROM26 CHIPMAC 26,52,212,40,13,6,3, CNAMEU108,0,38,2,1 ; IMAGE ROM (U108) +IROM27 CHIPMAC 27,94,212,40,13,6,3, CNAMEU107,0,38,2,1 ; IMAGE ROM (U107) +IROM28 CHIPMAC 28,136,212,40,13,6,3,CNAMEU106,0,38,2,1 ; IMAGE ROM (U106) + +IROM29 CHIPMAC 29,10,227,40,13,6,3, CNAMEU105,0,38,2,1 ; IMAGE ROM (U105) +IROM30 CHIPMAC 30,52,227,40,13,6,3, CNAMEU104,0,38,2,1 ; IMAGE ROM (U104) +IROM31 CHIPMAC 31,94,227,40,13,6,3, CNAMEU103,0,38,2,1 ; IMAGE ROM (U103) +IROM32 CHIPMAC 32,136,227,40,13,6,3,CNAMEU102,0,38,2,1 ; IMAGE ROM (U102) + +SRAM1 CHIPMAC 0,225,101,30,13,4,3,CNAMEU49,0,28,2,1 ; SCRATCH PAD (U49) + +PIC CHIPMAC 0,177,65,40,13,9,3,CNAMEU64,0,38,2,1 ; PIC CHIP (U64) + +SROM1 CHIPMAC 1,49,57,40,13,14,3, CNAMEU2,0,38,2,1 ; Sound Rom (U2) +SROM2 CHIPMAC 2,49,72,40,13,14,3, CNAMEU3,0,38,2,1 ; Sound Rom (U3) +SROM3 CHIPMAC 3,49,87,40,13,14,3, CNAMEU4,0,38,2,1 ; Sound Rom (U4) +SROM4 CHIPMAC 4,49,102,40,13,14,3,CNAMEU5,0,38,2,1 ; Sound Rom (U5) +SROM5 CHIPMAC 5,7,57,40,13,14,3, CNAMEU6,0,38,2,1 ; Sound Rom (U6) +SROM6 CHIPMAC 6,7,72,40,13,14,3, CNAMEU7,0,38,2,1 ; Sound Rom (U7) +SROM7 CHIPMAC 7,7,87,40,13,14,3, CNAMEU8,0,38,2,1 ; Sound Rom (U8) +SROM8 CHIPMAC 8,7,102,40,13,14,3, CNAMEU9,0,38,2,1 ; Sound Rom (U9) + +DSP CHIPMAC 0,118,77,35,35,13,13,CNAMEU1,0,3,3,1 ; Sound DSP (U1) + +SNDRAM1 CHIPMAC 1,115,29,40,13,9,3,CNAMEU86,0,38,2,1 ; Sound Ram 1 (U86) +SNDRAM2 CHIPMAC 2,115,44,40,13,9,3,CNAMEU80,0,38,2,1 ; Sound Ram 2 (U80) +SNDRAM3 CHIPMAC 3,115,59,40,13,9,3,CNAMEU73,0,38,2,1 ; Sound Ram 3 (U73) + .LONG 0 + +VRAMTAB .LONG CRAM1,CRAM2 + .LONG VRAM1,VRAM2,VRAM3,VRAM4,VRAM5,VRAM6 + .LONG VRAM7,VRAM8 + .LONG 0 +PROMTAB .LONG PROM1,PROM2 + .LONG 0 +IROMTAB .LONG IROM1,IROM2,IROM3,IROM4 + .LONG IROM5,IROM6,IROM7,IROM8 + .LONG IROM9,IROM10,IROM11,IROM12 + .LONG IROM13,IROM14,IROM15,IROM16 + .long IROM17,IROM18,IROM19,IROM20 + .long IROM21,IROM22,IROM23,IROM24 + .long IROM25,IROM26,IROM27,IROM28 + .long IROM29,IROM30,IROM31,IROM32 + .LONG 0 +;SRAMTAB .LONG SRAM1,SRAM2,SRAM3,SRAM4 +SRAMTAB .LONG SRAM1 + .LONG 0 +SROMTAB .long SROM1, SROM2, SROM3, SROM4 + .long SROM5, SROM6, SROM7, SROM8 + .long 0 +SNDRAMTAB + .long SNDRAM1, SNDRAM2, SNDRAM3 + .long 0 + +CNAMEU1 + .string "U1",0 + .even +CNAMEU2 + .string "U2",0 + .even +CNAMEU3 + .string "U3",0 + .even +CNAMEU4 + .string "U4",0 + .even +CNAMEU5 + .string "U5",0 + .even +CNAMEU6 + .string "U6",0 + .even +CNAMEU7 + .string "U7",0 + .even +CNAMEU8 + .string "U8",0 + .even +CNAMEU9 + .string "U9",0 + .even +CNAMEU10 + .string "U10",0 + .even +CNAMEU11 + .string "U11",0 + .even +CNAMEU12 + .string "U12",0 + .even +CNAMEU13 + .string "U13",0 + .even +CNAMEU14 + .string "U14",0 + .even +CNAMEU15 + .string "U15",0 + .even +CNAMEU16 + .string "U16",0 + .even +CNAMEU17 + .string "U17",0 + .even +CNAMEU33 + .string "U33",0 + .even +CNAMEU36 + .string "U36",0 + .even +CNAMEU37 + .string "U37",0 + .even +CNAMEU49 + .string "U49",0 + .even +CNAMEU54 + .string "U54",0 + .even +CNAMEU59 + .string "U59",0 + .even +CNAMEU63 + .string "U63",0 + .even +CNAMEU64 + .string "U64",0 + .even +CNAMEU73 + .string "U73",0 + .even +CNAMEU80 + .string "U80",0 + .even +CNAMEU86 + .string "U86",0 + .even +CNAMEU133 + .string "U133",0 + .even +CNAMEU132 + .string "U132",0 + .even +CNAMEU131 + .string "U131",0 + .even +CNAMEU130 + .string "U130",0 + .even +CNAMEU129 + .string "U129",0 + .even +CNAMEU128 + .string "U128",0 + .even +CNAMEU127 + .string "U127",0 + .even +CNAMEU126 + .string "U126",0 + .even +CNAMEU125 + .string "U125",0 + .even +CNAMEU124 + .string "U124",0 + .even +CNAMEU123 + .string "U123",0 + .even +CNAMEU122 + .string "U122",0 + .even +CNAMEU121 + .string "U121",0 + .even +CNAMEU120 + .string "U120",0 + .even +CNAMEU119 + .string "U119",0 + .even +CNAMEU118 + .string "U118",0 + .even +CNAMEU117 + .string "U117",0 + .even +CNAMEU116 + .string "U116",0 + .even +CNAMEU115 + .string "U115",0 + .even +CNAMEU114 + .string "U114",0 + .even +CNAMEU113 + .string "U113",0 + .even +CNAMEU112 + .string "U112",0 + .even +CNAMEU111 + .string "U111",0 + .even +CNAMEU110 + .string "U110",0 + .even +CNAMEU109 + .string "U109",0 + .even +CNAMEU108 + .string "U108",0 + .even +CNAMEU107 + .string "U107",0 + .even +CNAMEU106 + .string "U106",0 + .even +CNAMEU105 + .string "U105",0 + .even +CNAMEU104 + .string "U104",0 + .even +CNAMEU103 + .string "U103",0 + .even +CNAMEU102 + .string "U102",0 + .even + + +************************************************************************** +* * +* RAM CHIP DATA * +* * +************************************************************************** + +; +; MAKE SURE THESE TABLES CORRESPOND WITH THE STUFF ABOVE +; + +VRAMCHIPS: +; COLOR RAMS + + +; RAM_CHIP 0,0, 8, 16, 1880000H, 18FFFF0H ; UA8 ( 0 - 3 ) +; RAM_CHIP 0,1, 8, 16, 1880008H, 18FFFF8H ; UC8 ( 8 - 11 ) + + RAM_CHIP 0,1, 8, 16, 1880000H, 18FFFF0H ; U37 ( 0 - 7 ) + RAM_CHIP 0,0, 7, 16, 1880008H, 18FFFF8H ; U36 ( 8 - 14 ) + + +; VIDEO RAMS +; RAM_CHIP $MACRO TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR +; RAM_CHIP 0, 6, 8, 32, 0000018H, 03FFFF8H ; UB11 ( 24 - 27 ) +; RAM_CHIP 0, 8, 8, 32, 0000010H, 03FFFF0H ; UB13 ( 16 - 19 ) +; RAM_CHIP 0, 7, 8, 32, 0000008H, 03FFFE8H ; UB12 ( 8 - 11 ) +; RAM_CHIP 0, 9, 8, 32, 0000000H, 03FFFE0H ; UB14 ( 0 - 3 ) + RAM_CHIP 0, 8, 8, 32, 0000018H, 03FFFF8H ; U12 + RAM_CHIP 0, 4, 8, 32, 0000010H, 03FFFF0H ; U16 + RAM_CHIP 0, 9, 8, 32, 0000008H, 03FFFE8H ; U13 + RAM_CHIP 0, 5, 8, 32, 0000000H, 03FFFE0H ; U17 + + .LONG 0 + +PALCHIPS: +; VIDEO PALETTE RAMS +; RAM_CHIP $MACRO TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR +; RAM_CHIP 0,2, 8, 32, 0000018H, 03FFFF8H ; UA11 ( 24 - 27 ) +; RAM_CHIP 0,4, 8, 32, 0000010H, 03FFFF0H ; UA13 ( 16 - 19 ) +; RAM_CHIP 0,3, 8, 32, 0000008H, 03FFFE8H ; UA12 ( 8 - 11 ) +; RAM_CHIP 0,5, 8, 32, 0000000H, 03FFFE0H ; UA14 ( 0 - 3 ) + RAM_CHIP 0,6, 8, 32, 0000018H, 03FFFF8H ; U10 + RAM_CHIP 0,2, 8, 32, 0000010H, 03FFFF0H ; U14 + RAM_CHIP 0,7, 8, 32, 0000008H, 03FFFE8H ; U11 + RAM_CHIP 0,3, 8, 32, 0000000H, 03FFFE0H ; U15 + .LONG 0 + +; SCRATCH RAMS + +SRAMCHECK + .STRING "CHECKING SCRATCH RAMS",0 + .EVEN + +SRAMCHIPS +; RAM_CHIP SRAM4,3, 4, 16, 1000004H, 13FFFF4H ; UJ7 ( 4 - 7 ) +; RAM_CHIP SRAM3,2, 4, 16, 1000000H, 13FFFF0H ; UJ6 ( 0 - 3 ) +; RAM_CHIP SRAM2,1, 4, 16, 1000008H, 13FFFF8H ; UJ5 ( 8 - 11 ) +; RAM_CHIP SRAM1,0, 4, 16, 100000CH, 13FFFFCH ; UJ4 ( 12 - 15 ) + RAM_CHIP SRAM1,0, 16, 16, 1000000H, 13FFFF0H ; U49 (0-15) + + .LONG 0 + +**************************************************************************** +* SYSFONT: SYSTEM FONT; MODULE DEFINES THE FONT USED WITH SYSTEM * +* DIAGNOSTICS. * +**************************************************************************** + +; =========================== +; | DYDX CHAR DIMENSIONS | +; | POINTER TO XY CHAR DATA | +; =========================== + +T2_SP .WORD 048h + .word I2_SP-CBASE + +T2_MN .WORD 088h + .WORD I2_MN-CBASE + +T2_PER .WORD 028H + .WORD I2_PER-CBASE + +T2_SLASH + .WORD 068H + .WORD I2_SLASH-CBASE +T2_00 + .WORD 068h + .WORD I2_00-CBASE + +T2_11: + .WORD 068h + .WORD I2_11-CBASE + +T2_22: + .WORD 068h + .WORD I2_22-CBASE + +T2_33: + .WORD 068h + .WORD I2_33-CBASE + +T2_44: + .WORD 068h + .WORD I2_44-CBASE + +T2_55: + .WORD 068h + .WORD I2_55-CBASE + +T2_66: + .WORD 068h + .WORD I2_66-CBASE + +T2_77: + .WORD 068h + .WORD I2_77-CBASE + +T2_88: + .WORD 068h + .WORD I2_88-CBASE + +T2_99: + .WORD 068h + .WORD I2_99-CBASE + +T2_AA: + .WORD 068h + .WORD I2_AA-CBASE + +T2_BB: + .WORD 068h + .WORD I2_BB-CBASE + +T2_CC: + .WORD 068h + .WORD I2_CC-CBASE + +T2_DD: + .WORD 068h + .WORD I2_DD-CBASE + +T2_EE: + .WORD 068h + .WORD I2_EE-CBASE + +T2_FF: + .WORD 068h + .WORD I2_FF-CBASE + +T2_GG: + .WORD 068h + .WORD I2_GG-CBASE + +T2_HH: + .WORD 068h + .WORD I2_HH-CBASE + +T2_II: + .WORD 028h + .WORD I2_II-CBASE + +T2_JJ: + .WORD 068h + .WORD I2_JJ-CBASE + +T2_KK: + .WORD 068h + .WORD I2_KK-CBASE + +T2_LL: + .WORD 058h + .WORD I2_LL-CBASE + +T2_MM: + .WORD 0A8h + .WORD I2_MM-CBASE + +T2_NN: + .WORD 078h + .WORD I2_NN-CBASE + +T2_OO: + .WORD 078h + .WORD I2_OO-CBASE + +T2_PP: + .WORD 068h + .WORD I2_PP-CBASE + +T2_QQ: + .WORD 07Ah + .WORD I2_QQ-CBASE + +T2_RR: + .WORD 068h + .WORD I2_RR-CBASE + +T2_SS: + .WORD 068h + .WORD I2_SS-CBASE + +T2_TT: + .WORD 068h + .WORD I2_TT-CBASE + +T2_UU: + .WORD 068h + .WORD I2_UU-CBASE + +T2_VV: + .WORD 078h + .WORD I2_VV-CBASE + +T2_WW: + .WORD 0B8h + .WORD I2_WW-CBASE + +T2_XX: + .WORD 078h + .WORD I2_XX-CBASE + +T2_YY: + .WORD 068h + .WORD I2_YY-CBASE + +T2_ZZ: + .WORD 068h + .WORD I2_ZZ-CBASE + +; =========================== +; | CHARACTER DIRECTORY | +; =========================== + +SYSFONT + + .BYTE (T2_SP-T2_SP)/32 ;SPACE CHARACTER, " " + .BYTE (T2_SP-T2_SP)/32 ;FILLER + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_MN-T2_SP)/32 ; MINUS CHARACTER, "-" + .BYTE (T2_PER-T2_SP)/32 + .BYTE (T2_SLASH-T2_SP)/32 ; "/" + .BYTE (T2_00-T2_SP)/32 ;0 + .BYTE (T2_11-T2_SP)/32 ;1 + .BYTE (T2_22-T2_SP)/32 ;2 + .BYTE (T2_33-T2_SP)/32 ;3 + .BYTE (T2_44-T2_SP)/32 ;4 + .BYTE (T2_55-T2_SP)/32 ;5 + .BYTE (T2_66-T2_SP)/32 ;6 + .BYTE (T2_77-T2_SP)/32 ;7 + .BYTE (T2_88-T2_SP)/32 ;8 + .BYTE (T2_99-T2_SP)/32 ;9 + .BYTE (T2_00-T2_SP)/32 ; no : + .BYTE (T2_00-T2_SP)/32 ; no ; + .BYTE (T2_00-T2_SP)/32 ; no < + .BYTE (T2_00-T2_SP)/32 ; no = + .BYTE (T2_00-T2_SP)/32 ; no > + .BYTE (T2_00-T2_SP)/32 ; no ? + .BYTE (T2_00-T2_SP)/32 ; no @ + .BYTE (T2_AA-T2_SP)/32 ;A + .BYTE (T2_BB-T2_SP)/32 ;B + .BYTE (T2_CC-T2_SP)/32 ;C + .BYTE (T2_DD-T2_SP)/32 ;D + .BYTE (T2_EE-T2_SP)/32 ;E + .BYTE (T2_FF-T2_SP)/32 ;F + .BYTE (T2_GG-T2_SP)/32 ;G + .BYTE (T2_HH-T2_SP)/32 ;H + .BYTE (T2_II-T2_SP)/32 ;I + .BYTE (T2_JJ-T2_SP)/32 ;J + .BYTE (T2_KK-T2_SP)/32 ;K + .BYTE (T2_LL-T2_SP)/32 ;L + .BYTE (T2_MM-T2_SP)/32 ;M + .BYTE (T2_NN-T2_SP)/32 ;N + .BYTE (T2_OO-T2_SP)/32 ;O + .BYTE (T2_PP-T2_SP)/32 ;P + .BYTE (T2_QQ-T2_SP)/32 ;Q + .BYTE (T2_RR-T2_SP)/32 ;R + .BYTE (T2_SS-T2_SP)/32 ;S + .BYTE (T2_TT-T2_SP)/32 ;T + .BYTE (T2_UU-T2_SP)/32 ;U + .BYTE (T2_VV-T2_SP)/32 ;V + .BYTE (T2_WW-T2_SP)/32 ;W + .BYTE (T2_XX-T2_SP)/32 ;X + .BYTE (T2_YY-T2_SP)/32 ;Y + .BYTE (T2_ZZ-T2_SP)/32 ;Z + +; =========================== +; | CHARACTER DEFINITIONS | +; =========================== +CBASE +I2_SP + .byte 00h + .byte 00h + .byte 00h + .byte 00h + .byte 00h + .byte 00h + .byte 00h + .byte 00h + +I2_MN: + .byte 000h + .byte 000h + .byte 000h + .byte 0FFh + .byte 0FFh + .byte 000h + .byte 000h + .byte 000h + +I2_PER: + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0FFH + .BYTE 0FFH + +I2_SLASH: + .BYTE 30H + .BYTE 30H + .BYTE 18H + .BYTE 18H + .BYTE 06H + .BYTE 06H + .BYTE 03H + .BYTE 03H + +I2_00: + .byte 01Eh + .byte 03Fh + .byte 033h + .byte 033h + .byte 033h + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_11: + .byte 0Eh + .byte 0Fh + .byte 0Fh + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + +I2_22: + .byte 01Fh + .byte 03Fh + .byte 038h + .byte 01Ch + .byte 0Eh + .byte 07h + .byte 03Fh + .byte 03Fh + +I2_33: + .byte 01Fh + .byte 03Fh + .byte 030h + .byte 01Eh + .byte 01Eh + .byte 030h + .byte 03Fh + .byte 01Fh + +I2_44: + .byte 038h + .byte 03Ch + .byte 036h + .byte 033h + .byte 03Fh + .byte 03Fh + .byte 030h + .byte 030h + +I2_55: + .byte 03Fh + .byte 03Fh + .byte 03h + .byte 01Fh + .byte 03Fh + .byte 030h + .byte 03Fh + .byte 01Fh + +I2_66: + .byte 03Eh + .byte 03Fh + .byte 03h + .byte 01Fh + .byte 03Fh + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_77: + .byte 03Fh + .byte 03Fh + .byte 030h + .byte 018h + .byte 018h + .byte 0Ch + .byte 0Ch + .byte 0Ch + +I2_88: + .byte 01Eh + .byte 03Fh + .byte 033h + .byte 01Eh + .byte 01Eh + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_99: + .byte 01Eh + .byte 03Fh + .byte 033h + .byte 03Fh + .byte 03Eh + .byte 030h + .byte 03Fh + .byte 01Fh + +I2_AA: + .byte 01Eh + .byte 03Fh + .byte 033h + .byte 033h + .byte 03Fh + .byte 03Fh + .byte 033h + .byte 033h + +I2_BB: + .byte 01Fh + .byte 03Fh + .byte 033h + .byte 03Fh + .byte 01Fh + .byte 033h + .byte 03Fh + .byte 01Fh + +I2_CC: + .byte 03Eh + .byte 03Fh + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03Fh + .byte 03Eh + +I2_DD: + .byte 01Fh + .byte 03Fh + .byte 033h + .byte 033h + .byte 033h + .byte 033h + .byte 03Fh + .byte 01Fh + +I2_EE: + .byte 03Fh + .byte 03Fh + .byte 03h + .byte 03Fh + .byte 03Fh + .byte 03h + .byte 03Fh + .byte 03Fh + +I2_FF: + .byte 03Fh + .byte 03Fh + .byte 03h + .byte 03Fh + .byte 03Fh + .byte 03h + .byte 03h + .byte 03h + +I2_GG: + .byte 03Eh + .byte 03Fh + .byte 03h + .byte 03h + .byte 033h + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_HH: + .byte 033h + .byte 033h + .byte 033h + .byte 03Fh + .byte 03Fh + .byte 033h + .byte 033h + .byte 033h + +I2_II: + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + +I2_JJ: + .byte 030h + .byte 030h + .byte 030h + .byte 030h + .byte 030h + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_KK: + .byte 033h + .byte 033h + .byte 01Bh + .byte 0Fh + .byte 01Fh + .byte 033h + .byte 033h + .byte 033h + +I2_LL: + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 01Fh + .byte 01Fh + +I2_MM: + .byte 087h,03h + .byte 0CFh,03h + .byte 0CFh,03h + .byte 07Bh,03h + .byte 07Bh,03h + .byte 033h,03h + .byte 033h,03h + .byte 033h,03h + +I2_NN: + .byte 063h + .byte 067h + .byte 06Fh + .byte 06Fh + .byte 07Bh + .byte 07Bh + .byte 073h + .byte 063h + +I2_OO: + .byte 03Eh + .byte 07Fh + .byte 063h + .byte 063h + .byte 063h + .byte 063h + .byte 07Fh + .byte 03Eh + +I2_PP: + .byte 01Fh + .byte 03Fh + .byte 033h + .byte 03Fh + .byte 01Fh + .byte 03h + .byte 03h + .byte 03h + +I2_QQ: + .byte 03Eh + .byte 07Fh + .byte 063h + .byte 063h + .byte 063h + .byte 063h + .byte 07Fh + .byte 03Eh + .byte 060h + .byte 060h + +I2_RR: + .byte 01Fh + .byte 03Fh + .byte 033h + .byte 03Fh + .byte 01Fh + .byte 033h + .byte 033h + .byte 033h + +I2_SS: + .byte 03Eh + .byte 03Fh + .byte 03h + .byte 01Fh + .byte 03Eh + .byte 030h + .byte 03Fh + .byte 01Fh + +I2_TT: + .byte 03Fh + .byte 03Fh + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + +I2_UU: + .byte 033h + .byte 033h + .byte 033h + .byte 033h + .byte 033h + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_VV: + .byte 063h + .byte 063h + .byte 063h + .byte 036h + .byte 036h + .byte 03Eh + .byte 01Ch + .byte 01Ch + +I2_WW: + .byte 023h,06h + .byte 023h,06h + .byte 073h,06h + .byte 076h,03h + .byte 076h,03h + .byte 0DEh,03h + .byte 08Ch,01h + .byte 08Ch,01h + +I2_XX: + .byte 063h + .byte 063h + .byte 036h + .byte 01Ch + .byte 01Ch + .byte 036h + .byte 063h + .byte 063h + +I2_YY: + .byte 033h + .byte 033h + .byte 01Eh + .byte 01Eh + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + +I2_ZZ: + .byte 03Fh + .byte 03Fh + .byte 038h + .byte 01Ch + .byte 0Eh + .byte 07h + .byte 03Fh + .byte 03Fh + + + .EVEN +* +* ROM chip definitions and checksums +* +CKSUM1 .equ >ac9f ;a911 +CKSUM2 .equ >a0e2 ;9fff + +PROMCHIPS +; ROM_CHIP PROM1,0,0,16, 0FF800000H, 0FFFFFFF0H, CKSUM1 ; UJ12 +; ROM_CHIP PROM2,1,0,16, 0FF800008H, 0FFFFFFF8H, CKSUM2 ; UG12 + ROM_CHIP PROM2,1,0,16, 0FF800000H, 0FFFFFFF0H, CKSUM1 ; U54 + ROM_CHIP PROM1,0,0,16, 0FF800008H, 0FFFFFFF8H, CKSUM2 ; U63 + .LONG 0 + +* CHECKSUM PATCHES + .WORD >ffff-CKSUM1 ;1'S COMPLEMENT OF THE UJ12 CHECKSUM + .WORD >ffff-CKSUM2 ;1'S COMPLEMENT OF THE UG12 CHECKSUM + + +************************************************************************** +* * +* IMAGE ROM CHECKSUM TABLES * +* * +* NOTE: COMMENT OUT ANY UNSTUFFED PARTS THAT * +* EXIST BEFORE THE .LONG 0 TERMINATOR! * +* * +************************************************************************** +; ROM_CHIP $MACRO TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR, CHECK_SUM +IROMCHIPS + .EVEN + ROM_CHIP IROM1, 0, 8,32, 2000000H, 2FFFFE0H, 01161H ; U133 + ROM_CHIP IROM2, 1, 8,32, 2000008H, 2FFFFE8H, 0748dH ; U132 + ROM_CHIP IROM3, 2, 8,32, 2000010H, 2FFFFF0H, 08b9dH ; U131 + ROM_CHIP IROM4, 3, 8,32, 2000018H, 2FFFFF8H, 05afeH ; U130 + + ROM_CHIP IROM5, 4, 8,32, 3000000H, 3FFFFE0H, 03e9bH ; U129 + ROM_CHIP IROM6, 5, 8,32, 3000008H, 3FFFFE8H, 05ca0H ; U128 + ROM_CHIP IROM7, 6, 8,32, 3000010H, 3FFFFF0H, 0c6ecH ; U127 + ROM_CHIP IROM8, 7, 8,32, 3000018H, 3FFFFF8H, 0c336H ; U126 + + ROM_CHIP IROM9, 8, 8,32, 4000000H, 4FFFFE0H, 0f400H ; U125 + ROM_CHIP IROM10, 9, 8,32, 4000008H, 4FFFFE8H, 0b70dH ; U124 + ROM_CHIP IROM11,10, 8,32, 4000010H, 4FFFFF0H, 0f731H ; U123 + ROM_CHIP IROM12,11, 8,32, 4000018H, 4FFFFF8H, 07be3H ; U122 + + ROM_CHIP IROM13,12, 8,32, 5000000H, 5FFFFE0H, 0bdd6H ; U121 + ROM_CHIP IROM14,13, 8,32, 5000008H, 5FFFFE8H, 0f515H ; U120 + ROM_CHIP IROM15,14, 8,32, 5000010H, 5FFFFF0H, 0ef39H ; U119 + ROM_CHIP IROM16,15, 8,32, 5000018H, 5FFFFF8H, 0b948H ; U118 + .LONG 0 + +; This and possibly other tables need to be set up yet +IROMCHIPS1 + ROM_CHIP IROM17,16, 8,32, 2000000H, 2FFFFE0H, 01161H ; U117 + ROM_CHIP IROM18,17, 8,32, 2000008H, 2FFFFE8H, 0748dH ; U116 + ROM_CHIP IROM19,18, 8,32, 2000010H, 2FFFFF0H, 08b9dH ; U115 + ROM_CHIP IROM20,19, 8,32, 2000018H, 2FFFFF8H, 05afeH ; U114 + + ROM_CHIP IROM21,20, 8,32, 3000000H, 3FFFFE0H, 03e9bH ; U113 + ROM_CHIP IROM22,21, 8,32, 3000008H, 3FFFFE8H, 05ca0H ; U112 + ROM_CHIP IROM23,22, 8,32, 3000010H, 3FFFFF0H, 0c6ecH ; U111 + ROM_CHIP IROM24,23, 8,32, 3000018H, 3FFFFF8H, 0c336H ; U110 + + ROM_CHIP IROM25,24, 8,32, 4000000H, 4FFFFE0H, 0f400H ; U109 + ROM_CHIP IROM26,25, 8,32, 4000008H, 4FFFFE8H, 0b70dH ; U108 + ROM_CHIP IROM27,26, 8,32, 4000010H, 4FFFFF0H, 0f731H ; U107 + ROM_CHIP IROM28,27, 8,32, 4000018H, 4FFFFF8H, 07be3H ; U106 + + ROM_CHIP IROM29,28, 8,32, 5000000H, 5FFFFE0H, 0bdd6H ; U105 + ROM_CHIP IROM30,29, 8,32, 5000008H, 5FFFFE8H, 0f515H ; U104 + ROM_CHIP IROM31,30, 8,32, 5000010H, 5FFFFF0H, 0ef39H ; U103 + ROM_CHIP IROM32,31, 8,32, 5000018H, 5FFFFF8H, 0b948H ; U102 + .LONG 0 ; FORCE IT TO STOP HERE + +IROMCHIPS_8MEG + .EVEN + ROM_CHIP IROM1, 0, 8,32, 2000000H, 3FFFFE0H, 08FD1H ; U133 + ROM_CHIP IROM2, 1, 8,32, 2000008H, 3FFFFE8H, 061CEH ; U132 + ROM_CHIP IROM3, 2, 8,32, 2000010H, 3FFFFF0H, 0A1C7H ; U131 + ROM_CHIP IROM4, 3, 8,32, 2000018H, 3FFFFF8H, 01C46H ; U130 + + ROM_CHIP IROM5, 4, 8,32, 4000000H, 5FFFFE0H, 08E37H ; U129 + ROM_CHIP IROM6, 5, 8,32, 4000008H, 5FFFFE8H, 0EE4AH ; U128 + ROM_CHIP IROM7, 6, 8,32, 4000010H, 5FFFFF0H, 0FB9AH ; U127 + ROM_CHIP IROM8, 7, 8,32, 4000018H, 5FFFFF8H, 09148H ; U126 + .LONG 0 +IROMCHIPS1_8MEG + ROM_CHIP IROM9, 8, 8,32, 2000000H, 3FFFFE0H, 0BCA7H ; U125 + ROM_CHIP IROM10, 9, 8,32, 2000008H, 3FFFFE8H, 093E3H ; U124 + ROM_CHIP IROM11,10, 8,32, 2000010H, 3FFFFF0H, 09A20H ; U123 + ROM_CHIP IROM12,11, 8,32, 2000018H, 3FFFFF8H, 0D5FAH ; U122 + + ROM_CHIP IROM13,12, 8,32, 4000000H, 5FFFFE0H, 0EAF6H ; U121 + ROM_CHIP IROM14,13, 8,32, 4000008H, 5FFFFE8H, 086F5H ; U120 + ROM_CHIP IROM15,14, 8,32, 4000010H, 5FFFFF0H, 033F1H ; U119 + ROM_CHIP IROM16,15, 8,32, 4000018H, 5FFFFF8H, 0A04EH ; U118 + .LONG 0 + + + + + + .END + + \ No newline at end of file diff --git a/BACKUP/DIFFN.BAT b/BACKUP/DIFFN.BAT new file mode 100644 index 0000000..8f08d45 --- /dev/null +++ b/BACKUP/DIFFN.BAT @@ -0,0 +1,2 @@ +diff %1 new\%1 + \ No newline at end of file diff --git a/BACKUP/DIFFT.BAT b/BACKUP/DIFFT.BAT new file mode 100644 index 0000000..a94402d --- /dev/null +++ b/BACKUP/DIFFT.BAT @@ -0,0 +1,5 @@ +@echo off +dir %1 +dir t\%1 +diff %1 t\%1 + \ No newline at end of file diff --git a/BACKUP/DIP.EQU b/BACKUP/DIP.EQU new file mode 100644 index 0000000..79ef001 --- /dev/null +++ b/BACKUP/DIP.EQU @@ -0,0 +1,105 @@ +************************************************************************** +* * +* NBA JAM - DIPSWITCH EQUATE FILE * +* * +* COPYRIGHT (C) 1993 MIDWAY MANUFACTURING COMPANY. * +* ALL RIGHTS RESERVED. * +* * +************************************************************************** + + +DPUSECMOS EQU 0100H ;USE CMOS MASK + +DPCOINAGE EQU 0E00H ;COINAGE MASK +DPCOINAGE_SRL EQU 9 ;SHIFT TO RIGHT JUSTIFY + +DPCOUNTRY EQU 3000H ;COUNTRY MASK +DPCOUNTRY_SRL EQU 12 ;SHIFT TO RIGHT JUSTIFY + +DPCOUNTER EQU 0C000H ;COIN COUNTER MODE +DPCOUNTER_SRL EQU 14 ;SHIFT TO RIGHT JUSTIFY + +DPPLAYERS EQU 1 ;NUMBER OF HARDWARE PLAYERS + +DPVALIDATOR EQU 2 ;DOLLAR BILL VALIDATOR INSTALLED +DPVALIDATOR_SRL EQU 1 ;SHIFT TO RIGHT JUSTIFY + +DPNOVIDCLIPS EQU 4 ;No video clips +DPNOVIDCLIPS_B EQU 2 + +;DPTOURNAMENT EQU 8 ;Tournament mode +;DPTOURNAMENT_B EQU 3 + +DP4MEG equ 32 ;4 Megabit/8 Megabit Image ROMS +DP4MEG_DIAG equ 4 ;4 Megabit/8 Megabit Image ROMS + +DPPOWER EQU 64 ;Tournament mode +DPPOWER_B EQU 6 + +DPTEST EQU 128 ;TEST SWITCH +DPTEST_B EQU 7 + +; DPUSECMOS ( UJ1 - 1 ) +; +; 0 = DIP SWITCH COINAGE USED +; 1 = CMOS COINAGE USED +; +; DPRIGHTSLOT ( UJ1 - 4 3 2 ) +; +; 000 = USA 1 / GERMAN 1 / FRENCH 1 +; 001 = USA 2 / GERMAN 2 / FRENCH 2 +; 010 = USA 3 / GERMAN 3 / FRENCH 3 +; 011 = USA 4 / GERMAN 4 / FRENCH 4 +; 100 = 1 COIN / 2 CREDIT +; 101 = 1 COIN / 3 CREDIT +; 110 = 1 COIN / 4 CREDIT +; 111 = FREEPLAY +; +; DPCOUNTRY ( UJ1 - 6 5 ) +; +; 00 = USA +; 01 = GERMAN +; 10 = FRENCH +; 11 = OUTERSPACE +; +; DPCOUNTER ( UJ1 - 8 7 ) +; +; 00 = 1 COUNT/COIN - LEFT COUNTER +; 01 = 1 COUNT/COIN - LEFT AND RIGHT COUNTERS +; 10 = TOTALIZER - LEFT COUNTER +; 11 = 1 COUNT/COIN - LEFT COUNTER +; +; DPPLAYERS ( UJ2 - 1 ) +; +; 0 = GAME CONFIGURED FOR 4 PLAYERS +; 1 = GAME CONFIGURED FOR 2 PLAYERS +; +; DPVALIDATOR ( UJ2 - 2 ) +; +; 0 = NO DOLLAR BILL ACCEPTOR INSTALLED +; 1 = DOLLAR BILL ACCEPTOR INSTALLED +; +; DPNOVIDCLIPS ( UJ2 - 3 ) +; +; 0 = Video clips on +; 1 = Video clips off +; +; DPTOURNAMENT ( UJ2 - 4 ) +; +; 0 = Tournament mode off +; 1 = Tournament mode on +; +; DPUNUSED ( UJ2 - 5 ) +; +; DPUNUSED ( UJ2 - 6 ) +; +; DPUNUSED ( UJ2 - 7 ) +; +; DPTEST ( UJ2 - 8 ) +; +; 0 = NORMAL NON-TEST +; 1 = TEST MODE +; +****************************************************************************** + + \ No newline at end of file diff --git a/BACKUP/DIRT.BAT b/BACKUP/DIRT.BAT new file mode 100644 index 0000000..636a7b1 --- /dev/null +++ b/BACKUP/DIRT.BAT @@ -0,0 +1,3 @@ +@echo off +dir t /od + \ No newline at end of file diff --git a/BACKUP/DISPLAY.ASM b/BACKUP/DISPLAY.ASM new file mode 100644 index 0000000..d2bde95 --- /dev/null +++ b/BACKUP/DISPLAY.ASM @@ -0,0 +1,3287 @@ +*敖陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳朕 +* +* File : display.asm +* Contents : DMA object handler +* Project : WWF Wrestlemania +* Programmer : +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*青陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳潰 +************************************************************************* + + .file "display.asm" + .title "DMA object handler" + .width 132 + .option b,d,l,t + .mnolist + + + .include "gsp.equ" + .include "sys.equ" + .include "mproc.equ" + .include "display.equ" + .include "macros.h" + .include "fontsimg.glo" + .INCLUDE "PLYR.EQU" + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF process_ptrs + .ref special_screen + .REF DUMRETS,WHICH_SCREEN + .REF TOP_LEFT,BOT_RIGHT + .def clear_objs + .ref FRANIMQ + .ref HALT + .ref SYSCOPY + .ref pal_getf + .ref IRQSKYE + + .DEF SPECIAL_DISPLAY_INIT + +****************************************************************************** + +;global variables + + .sect "OFIXED" + +OBJLST .long 0 ;*Active object list +OFREE .long 0 ;*Free object block +BAKLST .long 0 ;*Background list + + + +GND_Y .equ 116-40 +GNDI_Y .equ 116 +GNDI_W .equ 1277 +GNDI_H .equ 138 +GND_H .equ GNDI_H+40 +GZBASE .equ 894 + + + .bss present_pos,16 + BSSX page_addr,32 + + .bss SCROLLX ,32 ;X scroll value + .bss SCROLLY ,32 ;Y scroll value + ;/ Must stay in order + .bss WORLDTLX ,32 ;Left X screen coord (16:16) + .bss WORLDTLY ,32 ;Top Y screen coord (16:16) + .bss WORLDTL ,32 ;Top left world Y:X + + .bss SCRNTL ,32 ;TOP LEFT [Y,X] SCREEN (SCRN COORD.) + .bss SCRNLR ,32 ;LOWER RIGHT [Y,X] SCREEN (SCRN COORD.) + + .bss dpage ,16 ;Display page; 0=Page0, -1=Page1 + .bss dtype ,16 ;Display type; 0=2D, 1=3D, -=Special + .bss dcode_p ,32 ;!0=*Special code (^ must = neg) + .bss DMAQCUR ,32 ;Misc DMAQ position + + .bss OBJSTR,NOBJ*OBSIZ ;Object structure mem + +QSIZE .set (NOBJ+GNDI_H)*BQCELL +QMSIZE .set NOBJ*BQCELL + .bss dmaq0 ,QSIZE ;Main DMA queue + BSSX DMAQ ,QMSIZE ;Misc DMA queue + + BSSX gndstat ,16 ;!0=Show ground + BSSX gndpos_t ,16*GND_H + BSSX gndx ,32 + .bss DISPLAYON ,16 ;!0=Do display processing +; BSSX QDMAFLG ,16 ;!0=Misc DMAQ being updated + + BSSX _3dstat ,16 ;!0=Show polygons + + + .text + + +****************************************************************************** +* NO CODE BEFORE DMA INT!!! (Cache aligned) +* +#***************************************************************************** +* DMA interrupt +* B12=*End of DMA regs +* B13=DMAQ count-1 or Neg +* B14=*Next DMAQ fetch + + SUBR dma_irq + + move -*b14,-*b12,L ;[Y SCALE : X SCALE] + move -*b14,-*b12,L ;[COLOR CONST : PAL REGISTER] + move -*b14,-*b12,L ;[HEIGHT : WIDTH] + move -*b14,-*b12,L ;[DEST Y : DEST X] + move -*b14,-*b12,L ;[SOURCE ADDRESS] + move -*b14,-*b12,L ;[CNTRL REG-DMA go! : OFFSET/CLIP] + + addi 0c0h,b12 ;DMAREGS (End of DMA) + subk 1,b13 + jrn #done ;Queue empty? + RETI + + push b11 + move @present_pos,b11 + cmp b11,b13 + jreq do_shadows + pull b11 + reti + +#done + setf 1,0,0 ;Disable dma interrupt + move b12,@INTENB+1 ;Clr X1E + clr b13 ;For safety! + subk 1,b13 ;-1 + reti + +do_shadows + pull b11 + pushst + dint + callr PLACE_SHADOWS + popst + reti + + +#***************************************************************************** +* Load DMA Q from obj list (2D type) +* A0=*Obj list +* A4=*DMAQ next free spot +* A13=Screen BR, A14=Screen TL +* B2=Y offset for top of page : XPad offset +* B4=World Y:X +* B5=OFLAGS offset +* B6=World center scrn X * 64K +* B11=*DMACTRL + +dma_objlst2d +; movi [100h,100h],a5 ;A5=Y:X scale + jruc #nxt + + .align + +#lp + MOVE *A0(OFLAGS),A1 + BTST B_NODISP,A1 + JRNZ #nxt + move *a0(OSCALE),a5,L + + move b5,a3 + add a0,a3 + move *a3+,a1 ;Get OFLAGS + mmfm a3,a12,a11,a9,a8 + + move *a0(OYVAL),a10,L ;Get int Y + + move *a0(OXPOS),a2 ;X + movx a2,a10 ;A10=Obj Y:X + btst B_SCRNREL,a1 + jrnz #noscl ;Screen relative XY? + move b4,a6 ;A6=World TL Y:X + subxy a6,a10 ;-world coord to get screen coord +#noscl + ;A8=Const:PAL + ;A9=HEIGHT:WIDTH + ;A10=Dest Y:X + ;A11=*SAG + ;A12=Offset:Ctrl + + btst B_BOBJ,a1 + jrnz #is_bgnd_obj + + move *a0(ODOFF),a3,L ;display offset Y:X + + btst B_FLIPH,a12 + jrz #no_x_flip0 + + movx a3,a2 + neg a2 + dec a2 ; -1 + addxy a9,a2 ;- image width (gets added later) + movx a2,a3 + +#no_x_flip0 + + btst B_FLIPV,a12 + jrz #no_y_flip0 + + move a3,a2 + srl 16,a2 + neg a2 + dec a2 ; -1 + sll 16,a2 + addxy a9,a2 ;- image height (gets added later) + movy a2,a3 + +#no_y_flip0 + + subxy a3,a10 + + +#is_bgnd_obj + + + +;Check for flipping, clipping, adjust offset, sag + + ;Calc top,bot,left,right clips + ;a2 = BR clip size + clr a3 ;a3 = TL clip size + move a10,a2 ;Dest Y:X + addxy a9,a2 ; + HEIGHT:WIDTH = BR Y:X + subxy a13,a2 ;A2=BR clip size + JRYGE #clip_bot + movy a3,a2 ;no bot clip if y neg +#clip_bot + JRXGE #clip_right + movx a3,a2 ;no right clip if x neg +#clip_right + + move a14,a7 ;screen TL + subxy a10,a7 ; - DEST Y:X = TL clip size + JRYLT #no_top_clip + movy a7,a3 ;Top clip size + btst 7,a12 ;zero compression on? + jrnz #no_top_clip ;can't clip if it is + movy a14,a10 ;Y start = window top edge + +#no_top_clip + JRXLT #no_left_clip + movx a7,a3 ;Left clip size + btst 7,a12 + jrnz #no_left_clip ;Zero compression on? + movx a14,a10 ;X start = window left edge + +#no_left_clip + move a2,b0 ;Save BR clip + add a3,a2 ;TL clip + BR clip + ;no need to use addxy as no signs + this sets Z for both + + jrz #noclip ;Zero clip? + + + move a9,a6 ;Save HEIGHT:WIDTH + + subxy a2,a9 ;Get clipped size + JRXLE #nxt ;Totally clipped? + JRYLE #nxt + + btst 7,a12 + jrz #nozc ;Zero compression off? + move a6,a9 ;Restore v:h size + jruc #noclip + +#nozc + clr a1 + movx a2,a1 ;x clip total + move a1,a1 + jrz #no_x_clip + movx a9,a1 ;image width + subk 8,a1 + jrle #nxt ;<=8 wide? Skip so DMA doesn't lockup + +#no_x_clip + movx a6,a9 ;Restore hsize + + movx a3,a1 ;A1=Left clip + + + btst B_FLIPH,a12 + jrz #no_x_flip + + subxy a1,a10 ;Original X + + move b0,a1 ;LClip=RClip + zext a1,W ;clear Y portion + subxy a1,a10 ;X-RClip + + +#no_x_flip + btst B_FLIPV,a12 + jrz #no_y_flip + + move b0,a3 ;Bot clip + +#no_y_flip + srl 16,a3 ;A3=Top or bot clip + jrz #t0 + zext a6,W ;clear Y portion + mpyu a6,a3 ;T or B clip * width + + +#t0 + add a1,a3 ;Add x clip + y clip * width + move a12,a1 + sll 32-15,a1 ;Get bits 12-14 (PIXEL SIZE) + srl 32-15+12,a1 + jrnz #not8 + movk 8,a1 +#not8 mpys a1,a3 ;# of bits to skip + add a3,a11 ;Add to SAG + sll 16,a2 + addxy a2,a12 ;Add clip offset to offset + + +#noclip + +;if image is flipped, dma plots from opposite end + + btst B_FLIPH,a12 + jrz #300 + movx a9,a1 ;image WIDTH + subk 1,a1 + zext a1 + addxy a1,a10 ;+ WIDTH-1 + +#300 + btst B_FLIPV,a12 + jrz #400 + move a9,a1 ;image HEIGHT + srl 16,a1 + subk 1,a1 + sll 16,a1 + addxy a1,a10 ;+ HEIGHT-1 +#400 + + + move b2,a1 + addxy a1,a10 ;Add the page y offset : XPad + rl 16,a12 ;Flip ctrl & offset + mmtm a4,a5,a8,a9,a10,a11,a12 ;Save the dma regs + addk 1,b13 ;+1 Q cnt + jrgt #nxt ;DMA going? + + dint + + setf 1,0,0 ;>Enable DMA int + movk 1,a1 + move a1,@INTENB+1 ;X1E + setf 16,1,0 + + move *b11,b0 + jrn #dmaok ;DMA busy? + + move b13,b13 + jrn #dmaok ;DMA int done? + + trap 1 ;Cause DMA int + +#dmaok eint +#nxt + move *a0,a0,L ;Get next link + jrnz #lp ;More? + rets + + +#***************************************************************************** +* Load DMA Q from obj list (3D type) +* A0=*Obj list +* A4=*DMAQ next free spot +* A13=Screen BR, A14=Screen TL +* B2=Y offset for top of page : XPad offset +* B4=World Y:X +* B5=OFLAGS offset +* B6=World center scrn X * 64K +* B11=*DMACTRL + +dma_objlst3d + movi [100h,100h],a5 ;A5=Y:X scale + jruc #nxt + + .align + +#lp + move b5,a3 + add a0,a3 + move *a3+,a1 ;Get OFLAGS + mmfm a3,a12,a11,a9,a8 + + move *a0(OYVAL),a10,L ;Get int Y + + move *a0(OXPOS),a2 ;X + movx a2,a10 ;A10=Obj Y:X + btst B_SCRNREL,a1 + jrnz #noscl ;Screen relative XY? + move b4,a6 ;A6=World TL Y:X + subxy a6,a10 ;-world coord to get screen coord +#noscl + ;A8=Const:PAL + ;A9=HEIGHT:WIDTH + ;A10=Dest Y:X + ;A11=*SAG + ;A12=Offset:Ctrl + + btst B_BOBJ,a1 + jrnz #is_bgnd_obj + + move *a0(ODOFF),a3,L ;display offset Y:X + + btst B_FLIPH,a12 + jrz #no_x_flip0 + + movx a3,a2 + neg a2 + dec a2 ; -1 + addxy a9,a2 ;- image width (gets added later) + movx a2,a3 + +#no_x_flip0 + + btst B_FLIPV,a12 + jrz #no_y_flip0 + + move a3,a2 + srl 16,a2 + neg a2 + dec a2 ; -1 + sll 16,a2 + addxy a9,a2 ;- image height (gets added later) + movy a2,a3 + +#no_y_flip0 + + subxy a3,a10 + + +#is_bgnd_obj + + + +;Check for flipping, clipping, adjust offset, sag + + ;Calc top,bot,left,right clips + ;a2 = BR clip size + clr a3 ;a3 = TL clip size + move a10,a2 ;Dest Y:X + addxy a9,a2 ; + HEIGHT:WIDTH = BR Y:X + subxy a13,a2 ;A2=BR clip size + JRYGE #clip_bot + movy a3,a2 ;no bot clip if y neg +#clip_bot + JRXGE #clip_right + movx a3,a2 ;no right clip if x neg +#clip_right + + move a14,a7 ;screen TL + subxy a10,a7 ; - DEST Y:X = TL clip size + JRYLT #no_top_clip + movy a7,a3 ;Top clip size + btst 7,a12 ;zero compression on? + jrnz #no_top_clip ;can't clip if it is + movy a14,a10 ;Y start = window top edge + +#no_top_clip + JRXLT #no_left_clip + movx a7,a3 ;Left clip size + btst 7,a12 + jrnz #no_left_clip ;Zero compression on? + movx a14,a10 ;X start = window left edge + +#no_left_clip + move a2,b0 ;Save BR clip + add a3,a2 ;TL clip + BR clip + ;no need to use addxy as no signs + this sets Z for both + + jrz #noclip ;Zero clip? + + + move a9,a6 ;Save HEIGHT:WIDTH + + subxy a2,a9 ;Get clipped size + JRXLE #nxt ;Totally clipped? + JRYLE #nxt + + btst 7,a12 + jrz #nozc ;Zero compression off? + move a6,a9 ;Restore v:h size + jruc #noclip + +#nozc + clr a1 + movx a2,a1 ;x clip total + move a1,a1 + jrz #no_x_clip + movx a9,a1 ;image width + subk 8,a1 + jrle #nxt ;<=8 wide? Skip so DMA doesn't lockup + +#no_x_clip + movx a6,a9 ;Restore hsize + + movx a3,a1 ;A1=Left clip + + + btst B_FLIPH,a12 + jrz #no_x_flip + + subxy a1,a10 ;Original X + + move b0,a1 ;LClip=RClip + zext a1,W ;clear Y portion + subxy a1,a10 ;X-RClip + + +#no_x_flip + btst B_FLIPV,a12 + jrz #no_y_flip + + move b0,a3 ;Bot clip + +#no_y_flip + srl 16,a3 ;A3=Top or bot clip + jrz #t0 + zext a6,W ;clear Y portion + mpyu a6,a3 ;T or B clip * width + + +#t0 + add a1,a3 ;Add x clip + y clip * width + move a12,a1 + sll 32-15,a1 ;Get bits 12-14 (PIXEL SIZE) + srl 32-15+12,a1 + jrnz #not8 + movk 8,a1 +#not8 mpys a1,a3 ;# of bits to skip + add a3,a11 ;Add to SAG + sll 16,a2 + addxy a2,a12 ;Add clip offset to offset + + +#noclip + +;if image is flipped, dma plots from opposite end + + btst B_FLIPH,a12 + jrz #300 + movx a9,a1 ;image WIDTH + subk 1,a1 + zext a1 + addxy a1,a10 ;+ WIDTH-1 + +#300 + btst B_FLIPV,a12 + jrz #400 + move a9,a1 ;image HEIGHT + srl 16,a1 + subk 1,a1 + sll 16,a1 + addxy a1,a10 ;+ HEIGHT-1 +#400 + + + move b2,a1 + addxy a1,a10 ;Add the page y offset : XPad + rl 16,a12 ;Flip ctrl & offset + mmtm a4,a5,a8,a9,a10,a11,a12 ;Save the dma regs + addk 1,b13 ;+1 Q cnt + jrgt #nxt ;DMA going? + + dint + + setf 1,0,0 ;>Enable DMA int + movk 1,a1 + move a1,@INTENB+1 ;X1E + setf 16,1,0 + + move *b11,b0 + jrn #dmaok ;DMA busy? + + move b13,b13 + jrn #dmaok ;DMA int done? + + trap 1 ;Cause DMA int + +#dmaok eint +#nxt + move *a0,a0,L ;Get next link + jrnz #lp ;More? + rets + + +#***************************************************************************** +* Load DMA Q from obj list +* A0=*Obj list +* A4=*DMAQ next free spot +* A13=Screen BR, A14=Screen TL +* B2=Y offset for top of page : XPad offset +* B4=World Y:X +* B5=OFLAGS offset +* B6=World center scrn X * 64K +* B11=*DMACTRL + +dma_background + + movi [100h,100h],a5 ;A5=Y:X scale + jruc #nxt + + .align + +#lp + move b5,a3 + add a0,a3 + move *a3+,a1 ;Get OFLAGS + mmfm a3,a12,a11,a9,a8 + + move *a0(OYVAL),a10,L ;Get int Y + + move *a0(OXPOS),a2 ;X + movx a2,a10 ;A10=Obj Y:X + btst B_SCRNREL,a1 + jrnz #noscl ;Screen relative XY? + move b4,a6 ;A6=World TL Y:X + subxy a6,a10 ;-world coord to get screen coord +#noscl + ;A8=Const:PAL + ;A9=HEIGHT:WIDTH + ;A10=Dest Y:X + ;A11=*SAG + ;A12=Offset:Ctrl + +;Check for flipping, clipping, adjust offset, sag + + ;Calc top,bot,left,right clips + clr a3 ;A3=TL clip size + move a10,a2 ;Dest Y:X + addxy a9,a2 ; + HEIGHT:WIDTH = BR Y:X + subxy a13,a2 ;A2=BR clip size + JRYGE #clip_bot + movy a3,a2 ;no bot clip if y neg +#clip_bot + JRXGE #clip_right + movx a3,a2 ;no right clip if x neg +#clip_right + + move a14,a7 ;screen TL + subxy a10,a7 ; - DEST Y:X = TL clip size + JRYLT #no_top_clip + movy a7,a3 ;Top clip size + btst 7,a12 ;zero compression on? + jrnz #no_top_clip ;can't clip if it is + movy a14,a10 ;Y start = window top edge + +#no_top_clip + JRXLT #no_left_clip + movx a7,a3 ;Left clip size + btst 7,a12 + jrnz #no_left_clip ;Zero compression on? + movx a14,a10 ;X start = window left edge + +#no_left_clip + move a2,b0 ;Save + add a3,a2 ;TL clip+BR clip + jrz #noclip ;Zero clip? + + + move a9,a6 ;Save HEIGHT:WIDTH + + subxy a2,a9 ;Get clipped size + JRXLE #nxt ;Totally clipped? + JRYLE #nxt + + btst 7,a12 + jrz #nozc ;Zero compression off? + move a6,a9 ;Restore v:h size + jruc #noclip + +#nozc + clr a1 + movx a2,a1 ;x clip total + move a1,a1 + jrz #no_x_clip + movx a9,a1 ;image width + subk 8,a1 + jrle #nxt ;<=8 wide? Skip so DMA doesn't lockup + +#no_x_clip + movx a6,a9 ;Restore hsize + + movx a3,a1 ;A1=Left clip + + + btst B_FLIPH,a12 + jrz #no_x_flip + + subxy a1,a10 ;Original X + + move b0,a1 ;LClip=RClip + zext a1 + subxy a1,a10 ;X-RClip + + +#no_x_flip + btst B_FLIPV,a12 + jrz #no_y_flip + + move b0,a3 ;Bot clip + +#no_y_flip + srl 16,a3 ;A3=Top or bot clip + jrz #t0 + zext a6 + mpyu a6,a3 ;T or B clip * total hsize + + +#t0 + add a1,a3 ;Add left clip + tc*ths + move a12,a1 + sll 32-15,a1 ;Get bits 12-14 (PIXEL SIZE) + srl 32-15+12,a1 + jrnz #not8 + movk 8,a1 +#not8 mpys a1,a3 ;# of bits to skip + add a3,a11 ;Add to SAG + sll 16,a2 + addxy a2,a12 ;Add clip offset to offset + + +#noclip + + btst B_FLIPH,a12 ;if flipped, keep block + jrz #300 ;in same position + movx a9,a1 ;image WIDTH + subk 1,a1 + zext a1 + addxy a1,a10 +#300 btst B_FLIPV,a12 + jrz #400 + move a9,a1 ;image HEIGHT + srl 16,a1 + subk 1,a1 + sll 16,a1 + addxy a1,a10 +#400 + + + move b2,a1 + addxy a1,a10 ;Add the page y offset : XPad + rl 16,a12 ;Flip ctrl & offset + mmtm a4,a5,a8,a9,a10,a11,a12 ;Save the dma regs + addk 1,b13 ;+1 Q cnt + jrgt #nxt ;DMA going? + + dint + + setf 1,0,0 ;>Enable DMA int + movk 1,a1 + move a1,@INTENB+1 ;X1E + setf 16,1,0 + + move *b11,b0 + jrn #dmaok ;DMA busy? + + move b13,b13 + jrn #dmaok ;DMA int done? + + trap 1 ;Cause DMA int + +#dmaok eint +#nxt + move *a0,a0,L ;Get next link + jrnz #lp ;More? + rets + + +#***************************************************************************** +* Display object lists, called by DIRQ + +DISPLAY + move @DISPLAYON,a0 + jrz #novel + + movi DMACTRL,b11 ;B11=*DMACTRL + + +;this is for use on the pixel wash screen transition + movi [PAGE1YO,SCRNXP],b2 + movi [509,256],b3 ;dma window [ bottom : top ] + move @special_screen,a1 + jrnz #p1 + + movi SCRNXP,b2 ;B2=Page y offset : XPad offset + movi [253,0],b3 ;dma window [ bottom : top ] + + move @dpage,a1 + jrnz #p1 + movi [PAGE1YO,SCRNXP],b2 + movi [509,256],b3 ;dma window [ bottom : top ] + +#p1 + move b2,@page_addr,L + movi dmaq0+QSIZE,a4 ;A4=*DMAQ for new data (Top) + clr b13 ;Kill DMA + move b13,*b11 + move b13,*b11 + + movi DMAREGS,b12 ;B12=*DMAREGS + subk 1,b13 ;B13=Q count (-1) + move a4,b14 ;B14=*DMAQ for next fetch (Top) + +;------> SHAWN WAS SETTING DSZ (BIT6) ALSO ??????????????? + + movi BIT5,b0 ;DMAWIN (1 = BOTTOM:TOP) + move b0,*b12(30h) ;DMACONF (Top/Bottom) + move b3,*b12,L ;DMAWINDOW + +; move @DISPLAYON,a0 +; jrz #doff ;Stop DMA of objects except for score? + + movi WORLDTLX,b0 ;Left X screen coord (16:16) + move *b0+,b3,L ;left x [16:16] + move *b0+,b4,L ;top y [16:16] + srl 16,b3 ;int left x + movx b3,b4 + move b4,*b0,L ;top left world [Y:X] (WORLDTL) + + movi OFLAGS,b5 ;B5=Obj data offset + move b4,b6 + addi 200,b6 + sll 16,b6 ;B6=World center scrn X * 64K + move @SCRNLR,a13,L ;A13=Screen BR + move @SCRNTL,a14,L ;A14=Screen TL + + move @TOP_LEFT,A0,L + ADDXY A0,A14 + MOVE @BOT_RIGHT,A0,L + ADDXY A0,A13 + + movi BAKLST,a0 + callr dma_background + + move b13,@present_pos + + movi OBJLST,a0 + callr dma_objlst2d + + MOVE @WHICH_SCREEN,A0,L + CALL A0 + +#doff + move @DMAQCUR,a2,L + movi DMAQ+QMSIZE,a1 + cmp a1,a2 + jrhs #noman ;Empty? + move a1,@DMAQCUR,L ;Reset top of queue + + move b2,a5 + +#lp move -*a1,-*a4,L ;>Copy manual DMAQ to end of Q + move -*a1,-*a4,L + move -*a1,-*a4,L + move -*a1,a0,L + addxy a5,a0 ;+Y + move a0,-*a4,L + move -*a1,-*a4,L + move -*a1,-*a4,L + addk 1,b13 + cmp a2,a1 + jrhi #lp + + + move *b11,b0 + jrn #noman ;DMA busy? + + move b13,b13 + jrn #noman ;DMA int done? + + setf 1,0,0 ;>Enable DMA int + movk 1,a1 + move a1,@INTENB+1 ;X1E + setf 16,1,0 + + trap 1 ;Cause DMA int + +#noman + + move @HALT,a0 + jrnz #novel ;Skip vel update? + movi OBJLST,a0 + callr vel_add +#novel +#x + rets + + +;Null dma data +nulldma .long >80000000,IROM,0,>00010001,0,>1000100 + + +#***************************************************************************** +* Velocity add loop +* A0=*Obj list +* Trashes A0-A7 + .align +#lp move a0,a1 + addk OXVEL,a1 + + mmfm a1,a2,a3,a4,a5,a6,a7 ;A7=XV, A6=YV, A5=ZV, A4=X, A3=Y, A2=Z + + add a5,a2 ;Add ZVEL to Z + move a2,-*a1,L + add a6,a3 ;Add YVEL to Y (Uses hidden cycle!) + move a3,-*a1,L + add a7,a4 ;Add XVEL to X ^ + move a4,-*a1,L + +vel_add move *a0,a0,L + jrnz #lp ;!End? + rets + + + +#***************************************************************************** +* Manual DMA +* A1=Constant color:Palette +* A2=height:width +* A3=Dest Y:X +* A4=SAG +* A5=Offset:Control +* Trashes A0,A14 + +QDMAN +; movk 1,a0 +; move a0,@QDMAFLG ;Q being modified + + move @DMAQCUR,a14,L + cmpi DMAQ,a14 + jrls #x ;Q full? + + movi [100h,100h],a0 ;No scale + rl 16,a5 ;Flip DMA & offset + mmtm a14,a0,a1,a2,a3,a4,a5 + rl 16,a5 ;Flip DMA & offset + move a14,@DMAQCUR,L + +#x +; clr a0 +; move a0,@QDMAFLG + rets + + .if 0 + +#******************************* +* Turn on the 2d with scaling display mode +* Trashes scratch + + SUBRP display_2dsclmodeon + + movi #drawcode,a0 + move a0,@dcode_p,L + movi -1,a0 + move a0,@dtype + + rets + +#drawcode + movi BAKLST,a0 + callr dma_objlst2d + + movi OBJLST,a0 +;;;; jruc dma_objlst2dscl + + +#******************************* +* Turn on the 2d, with scaling and stars, display mode +* Trashes scratch + + .asg SCRATCH+8*128*1024,STARBUF +NSTARS .equ 900 +STARSIZE .equ 32*6+16 + + SUBRP display_2dsclstarmodeon + + movi NSTARS,b0 ;>Init star array + movi STARBUF,a1 + movi -1,a0 +#silp move a0,*a1,L ;X + addi STARSIZE,a1 + dsj b0,#silp + + movi #drawcode,a0 + move a0,@dcode_p,L + movi -1,a0 + move a0,@dtype + + rets + +******************************** +* B2=Y offset for top of page : XPad offset +* Trashes A0-A3,A5-A12,B0-B3 + +CFRAC .equ 2 + + .bss starcolor ,16 + +#drawcode + PUSH a13,a14 + PUSH b4 + + movk 3,a0 + callr rnd + move @starcolor,a6 + add a0,a6 + move a6,@starcolor + sll 32-3-6,a6 + srl 32-3,a6 ;Remove fraction + sll 5+CFRAC,a6 + + + movi NSTARS,a5 ;>Find a free star + movi STARBUF,a2 + movk 3,a3 +#flp move *a2,a0,L ;X + jrn #found + addi STARSIZE,a2 +#fnxt dsj a5,#flp + jruc #nofree + +#found movi [200,0],a0 ;>Create star + move a0,*a2+,L ;X + movi [252,0],a0 + move a0,*a2+,L ;Y + + clr a0 + move a0,*a2+,L ;XV + movi ->3e000,a0 + move a0,*a2+,L ;YV + + movi >7ff,a0 + callr rnd + subi >3ff,a0 + move a0,*a2+,L ;XA + movi >3ff,a0 + callr rnd + addi >7ff,a0 + move a0,*a2+,L ;YA + + move a6,*a2+ ;Color type + dsj a3,#fnxt +#nofree + + movi #star_p,a0 ;>Update stars + calla pal_getf + move a0,@DMACMAP + + movi 512*8,b3 + lmo b3,b0 + move b0,@CONVDP + clr b4 + + movi 1<<(32-5-CFRAC),a11 + movi [400,0],a13 ;A13=X max+1 + movi [254,0],a14 ;A14=Y max+1 + move b2,a12 + movi NSTARS,b0 + movi STARBUF,a8 +#lp +; move *a8+,a2,L ;X +; move *a8+,a3,L ;Y +; move *a8+,a5,L ;XV +; move *a8+,a6,L ;YV +; move *a8+,a9,L ;XA +; move *a8+,a10,L ;YA + mmfm a8,a2,a3,a5,a6,a9,a10 ;YA,XA,YV,XV,Y,X + move *a8+,a1 ;Color + move a10,a10 + jrn #nxt + + add a2,a5 + add a3,a6 + add a5,a9 + add a6,a10 + cmp a13,a10 + jrhs #offscr ;X off screen? + cmp a14,a9 + jrlo #plot ;Y on screen? +#offscr + movi -1,a0 + move a0,*a8(-STARSIZE),L + jruc #nxt +#plot + move a10,*a8(-STARSIZE),L + move a9,*a8(-STARSIZE+32),L + move a6,*a8(-STARSIZE+32*2),L + move a5,*a8(-STARSIZE+32*3),L + + move a1,a0 + sll 32-5-CFRAC,a0 + add a11,a0 + jrc #maxc ;Overflow? +; cmpi 32*4,a1 +; jrge #offscr + addk 1,a1 + move a1,*a8(-16) +#maxc srl CFRAC,a1 ;Remove fraction + srl 16,a10 + movx a10,a9 + addxy a12,a9 + pixt a1,*a9.XY +#nxt + dsj b0,#lp + + PULL b4 + PULL a13,a14 + + movi BAKLST,a0 + callr dma_objlst2d + + movi OBJLST,a0 +;;; jruc dma_objlst2dscl + +#star_p + .word 256 + COLORW 01,01,01, 02,02,02, 03,03,03, 04,04,04 ;Grey + COLORW 05,05,05, 06,06,06, 07,07,07, 08,08,08 + COLORW 09,09,09, 10,10,10, 11,11,11, 12,12,12 + COLORW 13,13,13, 14,14,14, 15,15,15, 16,16,16 + COLORW 17,17,17, 18,18,18, 19,19,19, 20,20,20 + COLORW 21,21,21, 22,22,22, 23,23,23, 24,24,24 + COLORW 25,25,25, 26,26,26, 27,27,27, 28,28,28 + COLORW 29,29,29, 30,30,30, 31,31,31, 31,31,31 + COLORW 01,01,00, 02,02,00, 03,03,00, 04,04,00 ;Yellow + COLORW 05,05,00, 06,06,00, 07,07,00, 08,08,00 + COLORW 09,09,00, 10,10,00, 11,11,00, 12,12,00 + COLORW 13,13,00, 14,14,00, 15,15,00, 16,16,00 + COLORW 17,17,00, 18,18,00, 19,19,00, 20,20,00 + COLORW 21,21,00, 22,22,00, 23,23,00, 24,24,00 + COLORW 25,25,00, 26,26,00, 27,27,00, 28,28,00 + COLORW 29,29,00, 30,30,00, 31,31,00, 31,31,00 + COLORW 01,00,00, 02,00,00, 03,00,00, 04,00,00 ;Red + COLORW 05,00,00, 06,00,00, 07,00,00, 08,00,00 + COLORW 09,00,00, 10,00,00, 11,00,00, 12,00,00 + COLORW 13,00,00, 14,00,00, 15,00,00, 16,00,00 + COLORW 17,00,00, 18,00,00, 19,00,00, 20,00,00 + COLORW 21,00,00, 22,00,00, 23,00,00, 24,00,00 + COLORW 25,00,00, 26,00,00, 27,00,00, 28,00,00 + COLORW 29,00,00, 30,00,00, 31,00,00, 31,00,00 + COLORW 00,01,00, 00,02,00, 00,03,00, 00,04,00 ;Green + COLORW 00,05,00, 00,06,00, 00,07,00, 00,08,00 + COLORW 00,09,00, 00,10,00, 00,11,00, 00,12,00 + COLORW 00,13,00, 00,14,00, 00,15,00, 00,16,00 + COLORW 00,17,00, 00,18,00, 00,19,00, 00,20,00 + COLORW 00,21,00, 00,22,00, 00,23,00, 00,24,00 + COLORW 00,25,00, 00,26,00, 00,27,00, 00,28,00 + COLORW 00,29,00, 00,30,00, 00,31,00, 00,31,00 + COLORW 00,00,01, 00,00,02, 00,00,03, 00,00,04 ;Blue + COLORW 00,00,05, 00,00,06, 00,00,07, 00,00,08 + COLORW 00,00,09, 00,00,10, 00,00,11, 00,00,12 + COLORW 00,00,13, 00,00,14, 00,00,15, 00,00,16 + COLORW 00,00,17, 00,00,18, 00,00,19, 00,00,20 + COLORW 00,00,21, 00,00,22, 00,00,23, 00,00,24 + COLORW 00,00,25, 00,00,26, 00,00,27, 00,00,28 + COLORW 00,00,29, 00,00,30, 00,00,31, 00,00,31 + COLORW 00,00,01, 00,00,02, 00,00,03, 00,00,04 ;Lt blue + COLORW 00,00,05, 00,00,06, 00,00,07, 00,00,08 + COLORW 00,00,09, 01,01,10, 02,02,11, 03,03,12 + COLORW 04,04,13, 05,05,14, 06,06,15, 07,07,16 + COLORW 08,08,17, 09,09,18, 10,10,19, 11,11,20 + COLORW 12,12,21, 14,14,22, 16,16,23, 18,18,24 + COLORW 20,20,25, 22,22,26, 24,24,27, 26,26,28 + COLORW 28,28,29, 30,30,30, 30,30,31, 31,31,31 + COLORW 01,00,01, 02,00,02, 03,00,03, 04,00,04 ;Purple + COLORW 05,00,05, 06,00,06, 07,00,07, 08,00,08 + COLORW 09,00,09, 10,00,10, 11,00,11, 12,00,12 + COLORW 13,00,13, 14,00,14, 15,00,15, 16,00,16 + COLORW 17,00,17, 18,00,18, 19,00,19, 20,00,20 + COLORW 21,00,21, 22,00,22, 23,00,23, 24,00,24 + COLORW 25,00,25, 26,00,26, 27,00,27, 28,00,28 + COLORW 29,00,29, 30,00,30, 31,00,31, 31,00,31 + COLORW 00,01,01, 00,02,02, 00,03,03, 00,04,04 ;Cyan + COLORW 00,05,05, 00,06,06, 00,07,07, 00,08,08 + COLORW 00,09,09, 00,10,10, 00,11,11, 00,12,12 + COLORW 00,13,13, 00,14,14, 00,15,15, 00,16,16 + COLORW 00,17,17, 00,18,18, 00,19,19, 00,20,20 + COLORW 00,21,21, 00,22,22, 00,23,23, 00,24,24 + COLORW 00,25,25, 00,26,26, 00,27,27, 00,28,28 + COLORW 00,29,29, 00,30,30, 00,31,31, 00,31,31 + + .endif + +******************************** +* Get random # with mask +* A0=Mask +* >A0=Rnd # (Pass CC) +* Trashes scratch + + SUBRP rnd + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + and a1,a0 + rets + + +******************************** +* Zeros velocities for all objects on OBJLST + +STOPOBJS + clr a0 + movi OBJLST,a1 + jruc so20 + +so10 move a0,*a1(OXVEL),L + move a0,*a1(OYVEL),L + move a0,*a1(OZVEL),L +so20 move *a1,a1,L + jrnz so10 + + rets + + +******************************** +* Sort object list in Z:Y priority +* Trashes A0-A7 + + .align + + SUBR obj_yzsort + + movi OBJLST,a0 + movk 1,a1 ;Lowest Z + sll 31,a1 ;Make >80000000 + jruc yzlp + +yz0 + move *a2(OZPOS),a6 ;Get Z + move *a2(OYPOS),a7 ;Get Y + + cmp a1,a6 + jrgt priok ;Next Z > Current Z? + jrlt priswap + + cmp a5,a7 + jrge priok ;Next Y > Current Y? + +priswap dint ;>Make current after next + move a2,*a4,L ;Point last to next + move *a2,*a0,L ;Point current to block after next + move a0,*a2,L ;Point next to current + eint + move a2,a4 + jruc yzlp ;Continue sort of current obj + +priok move a0,a4 ;A4=*Last obj + move a2,a0 ;A0=*Current obj + move a6,a1 ;A1=Current Z + move a7,a5 ;A5=Current Y + +yzlp move *a0,a2,L ;A2=*Next obj + jrnz yz0 + + rets + + +************************************************************************** +* TEST IF OBJECT ON SCREEN +* A8=OBJECT +* RETURNS Z IF ON SCREEN + +*ENTER HERE AND PROVIDE YOUR OWN SCREEN BOUNDRIES +SCRTSTG + mmtm sp,a1,a2,a3 + jruc scrtst1 + +*NORMAL SCREEN BOUNDRIES +SCRTST + mmtm sp,a1,a2,a3 + move @SCRNTL,a2,L ;Get screen top left + move @SCRNLR,a3,L ;Get screen lower rgt + +scrtst1 move *a8(OYPOS),a0 + move *a8(OXPOS),a1 + sll 16,a0 + movx a1,a0 ;get top left of object + move @WORLDTL,a1,L + subxy a1,a0 ;subtract out world base + move *a8(OSIZE),a1,L + addxy a0,a1 ;get lower rt of object + + cmpxy a3,a0 ;is it lower than lower rt? + JRYGE scrtf_d ;lower + JRXGE scrtf_r ;to the right + + cmpxy a2,a1 + JRYLE scrtf_u ;above... + JRXLE scrtf_l ;to the left.. + + mmfm sp,a1,a2,a3 + clr a0 ;On screen Z + rets +scrtf_l movi 1,a0 ;Pass NZ + mmfm sp,a1,a2,a3 + rets + +scrtf_r movi 2,a0 + mmfm sp,a1,a2,a3 + rets + +scrtf_u movi 3,a0 + mmfm sp,a1,a2,a3 + rets + +scrtf_d movi 4,a0 + mmfm sp,a1,a2,a3 + rets + + +#******************************* +* Initialize display system +* Trashes scratch + + SUBR SPECIAL_DISPLAY_INIT + + pushst + dint + movi DIE+X2E,a0 + move a0,@INTENB ;Display int on, DMA int off + + clr a0 + move a0,@DMACTRL ;Init DMA + move a0,@DMACTRL + move a0,@CMAPSEL ;Clear color map select + move a0,@DMATEST + move a0,@DMACONF + movi [511,0],a1 ;RIGHT:LEFT (full width to fix glitch) + move a1,@DMAWINDOW,L + movi 30h,a1 ;<--------------------check this!!!!!!!!!!! + move a1,@DMACONF ;BOTTOM:TOP + movi [509,0],a1 + move a1,@DMAWINDOW,L + movi [100h,100h],a1 + move a1,@DMASCALEX,L + + movi -1,b13 ;DMAQ cnt + + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A0 + MOVE A0,@TOP_LEFT,L + MOVE A0,@BOT_RIGHT,L + move a0,@special_screen + callr clear_objs + popst + + rets + + +#******************************* +* Initialize display system +* Trashes scratch + + SUBR display_init + + pushst + dint + movi DIE+X2E,a0 + move a0,@INTENB ;Display int on, DMA int off + + clr a0 + move a0,@DMACTRL ;Init DMA + move a0,@DMACTRL + move a0,@CMAPSEL ;Clear color map select + move a0,@DMATEST + move a0,@DMACONF + movi [511,0],a1 ;RIGHT:LEFT (full width to fix glitch) + move a1,@DMAWINDOW,L + movi 30h,a1 ;<--------------------check this!!!!!!!!!!! + move a1,@DMACONF ;BOTTOM:TOP + movi [509,0],a1 + move a1,@DMAWINDOW,L + movi [100h,100h],a1 + move a1,@DMASCALEX,L + + movi -1,b13 ;DMAQ cnt + + clr a1 ;>Clr video mem + movi (SCRNE-512*8*2)/64,b0 +#clp move a0,*a1+,L + move a0,*a1+,L + dsj b0,#clp + ;>Set autoerase lines + movi 510*512*8,a1 ;Store to last 2 lines of bitmap + movi ERASECOL,a14 ;Color pair + movi 512*8*2/16,b0 +#lp move a14,*a1+ + dsj b0,#lp + + + + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A0 + MOVE A0,@TOP_LEFT,L + MOVE A0,@BOT_RIGHT,L + move a0,@special_screen + callr clear_objs + popst + + rets + +clear_objs + CLR A0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + move a0,@WORLDTL,L + move a0,@SCROLLX,L + move a0,@SCROLLY,L + + move a0,@BAKLST,L ;Null backgnd object list + move a0,@OBJLST,L ;Null object list + + move a0,@dcode_p,L + + movi SCRNST,a1 ;Screen top left [Y,X] + move a1,@SCRNTL,L + movi SCRNEND,a1 ;Screen lower right [Y,X] + move a1,@SCRNLR,L + + movi DMAQ+QMSIZE,a1 + move a1,@DMAQCUR,L ;Init misc DMA queue + + movi OBJSTR,a1,L ;>Init free list + move a1,@OFREE,L + movi NOBJ,b0 ;# of object blocks + +#olp move a1,a14 + addi OBSIZ,a1 + move a1,*a14,L ;link em up + dsj b0,#olp + + move a0,*a14,L ;Null end + rets + + +******************************** +* Get a free object block +* Trashes scratch +* >A0=*Object or 0 (Z) + +GETOBJ + move @OFREE,a0,L + jrz nonelft ;None free? + + move *a0,a1,L + move a1,@OFREE,L ;Unlink + clr a1 + move a1,*a0(OPLINK),L + move a1,*a0(ODATA_p),L +getox + move a0,a0 + rets + +nonelft + .if DEBUG + LOCKUP + eint + .else + CALLERR 3,0 + .endif + jruc getox + + +******************************** +* Add object to free list +* Can trash A0-A1 (currently doesn't) + +FREEOBJ + move @OFREE,*a0+,L + subk 32,a0 + move a0,@OFREE,L + rets + + +#******************************* +* Unlink an object from object list +* A0=*Obj +* Trashes scratch + +; SUBR obj_unlink +; +; movi OBJLST,a14 +; +;#lp move a14,a1 ;A1=*Prev +; move *a14,a14,L ;A14=*Next +; jrz #err +; cmp a14,a0 +; jrne #lp +; +; move *a0,*a1,L ;Unlink from obj list +; rets +; +;#err +; .if DEBUG +; LOCKUP +; eint +; .endif +; rets + + +******************************** +* Insert an object block into an object list +* List is sorted by increasing z and increasing y within constant z + + +#******************************* +* Insert background object +* A0=*Obj +* Trashes scratch + +INSBOBJ + movi BAKLST,a14 + jruc #strt + +******************************** +* Insert foreground object +* A0=*Obj +* Trashes scratch + +INSOBJ + + movi OBJLST,a14 + +#strt PUSH a2,a3,a4 + + move *a0(OZPOS),a1 + move *a0(OYPOS),a4 +#lp + move a14,a2 ;A2=*prev + move *a14,a14,L ;A14=*next + jrz #x + move *a14(OZPOS),a3 + cmp a3,a1 + jrgt #lp + jrlt #x + + move *a14(OYPOS),a3 ;Test y position + cmp a3,a4 + jrgt #lp + + +#x move a14,*a0,L ;Put *next in new block + move a0,*a2,L ;Put *new in prev block + + PULL a2,a3,a4 + rets + + +#******************************* +* Delete background object +* A0=*Obj + +DELBOBJ + + movi BAKLST,a14 + jruc #lp + + +******************************** +* Delete foreground object +* A8=*Obj + +DELOBJA8 + + move a8,a0 + +******************************** +* Delete foreground object +* A0=*Obj +* Trashes scratch + +DELOBJ + movi OBJLST,a14 + +#lp move a14,a1 ;A1=*Prev + move *a14,a14,L ;A14=*Next + jrz delerr + cmp a14,a0 + jrne #lp + + move *a0,*a1,L ;Unlink from obj list + + clr a1 + move a1,*a0(OXPOS) ;Indicates not in use for collisions + + move @OFREE,*a0+,L ;Add to free list + subk 32,a0 + move a0,@OFREE,L + +#x rets + +delerr + .if DEBUG + LOCKUP + eint + .else + CALLERR 1,0 + .endif + jruc #x + + + +******************************** +* FRANIM list an object, delete it and DIE +* A8=*Obj +* A9=*FRANIM list + +FRQDELDIE + + JSRP FRANIMQ + +#******************************* +* Delete foreground object and DIE +* A8=*Obj + +DELOBJDIE + + movi OBJLST,a14 + +#lp move a14,a1 ;A1=*Prev + move *a14,a14,L ;A14=*Next + jrz doderr + cmp a14,a8 + jrne #lp + + move *a8,*a1,L ;Unlink from obj list + + clr a1 + move a1,*a8(OXPOS) ;Indicates not in use for collisions + + move @OFREE,*a8+,L ;Add to free list + subk 32,a8 + move a8,@OFREE,L + +#x jauc SUCIDE + +doderr + .if DEBUG + LOCKUP + eint + .else + CALLERR 1,0 + .endif + jruc #x + + + +#******************************* +* Delete one class from the obj list +* A0=OID +* Trashes scratch + +obj_del1c + + clr a1 + +******************************** +* Delete a class from the obj list +* A0=OID +* A1=!Mask (Bits to remove) +* Trashes scratch + +obj_delc + move a2,b0 + move a3,b1 + + movi OBJLST,a14 + sext a0 + andn a1,a0 ;Form match + +#lp move a14,a3 ;A3=*Prev + move *a14,a14,L ;A14=*Next + jrz #x +#cmp move *a14(OID),a2 + andn a1,a2 ;Mask + cmp a0,a2 + jrne #lp + + move *a14,*a3,L ;Unlink from obj list + + move @OFREE,*a14+,L ;Add to free list + subk 32,a14 + move a14,@OFREE,L + move *a3,a14,L + jrnz #cmp + +#x + move b1,a3 + move b0,a2 + rets + + + +#******************************* +* Check objlst for an object with a certain OID +* A0=OID +* A1=!Mask (Bits to remove) +* >A0=*Obj or 0 (Z) +* Trashes scratch + +EXISTOBJ + move a2,b0 + + movi OBJLST,a14 + sext a0 + andn a1,a0 ;Form match +#lp + move *a14,a14,L + jrz #x + move *a14(OID),a2 + andn a1,a2 ;Mask + cmp a0,a2 + jrne #lp + +#x move b0,a2 + move a14,a0 + rets + + +#******************************* +* Check if object on free list +* A0=*Obj +* >A0=*Obj or 0 (Z) +* Trashes scratch + +;ISFREE +; movi OFREE,a1 +; jruc #lp + + +******************************** +* Check if object on OBJLST +* A0=*Obj +* >A0=*Obj or 0 (Z) +* Trashes scratch + +ISOBJ + movi OBJLST,a1 + +#lp move *a1,a1,L + jrz #x ;End? + cmp a0,a1 + jrne #lp ;No match? + + move a0,a0 ;Clr Z + rets + +#x clr a0 ;Set Z + rets + + +******************************** +* Add world coordinates to an object +* A0=*Obj +* Trashes scratch, !A0 + + SUBR obj_addworldxy + + move @WORLDTLX,a14,L + move *a0(OXVAL),a1,L + add a14,a1 + move a1,*a0(OXVAL),L + + move @WORLDTLY,a14,L + move *a0(OYVAL),a1,L + add a14,a1 + move a1,*a0(OYVAL),L + + rets + + +************************************************************************** +* * +* ADJNEWTL - ADJUST AN OBJECT TO A NEW SET OF X,Y WORLD COORDINATES * +* BEFORE THEY ARE STORED(TAKE EFFECT). * +* NOTE: CURRENT OBJECT COORDS. MUST BE ABSOLUTE WORLD. * +* A0 = PTR TO OBJECT * +* A4 = NEW WTLX, 32 BITS * +* A5 = NEW WTLY, 32 BITS * + +ADJNEWTL + PUSH a1,a2 + CALLR GSCRNREL ;SCREEN RELATIVE PLEASE + ADD A4,A1 + ADD A5,A2 ;ADJUST + MOVE A1,*A0(OXVAL),L + MOVE A2,*A0(OYVAL),L ;STORE + PULL a1,a2 + RETS + + +************************************************************************** +* * +* GSCRNREL - GET THE SCREEN RELATIVE X,Y COORDINATES OF AN OBJECT * +* IT IS ASSUMED THAT THE CURRENT X,Y COORDINATES ARE * +* WORLD ABSOLUTE. * +* A0 = PTR TO THE OBJECT BLOCK * +* RETURNS * +* A1 = X SCREEN RELATIVE, 32 BITS * +* A2 = Y SCREEN RELATIVE, 32 BITS * + +GSCRNREL + PUSH a5 + MOVE @WORLDTLX,A5,L + MOVE *A0(OXVAL),A1,L + SUB A5,A1 + MOVE @WORLDTLY,A5,L + MOVE *A0(OYVAL),A2,L + SUB A5,A2 + PULL a5 + RETS + + +************************************************************************** +* * +* SCRNRELV - MAKE THE X & Y VELOCITIES OF AN OBJECT RELATIVE TO THE * +* SCREEN. IN OTHER WORDS, ADJUST THEM SO THAT THE CURRENT * +* SCROLL RATE DOESN'T AFFECT THEM. * +* A0 = PTR TO OBJECT * +* * +************************************************************************** + +SCRNRELV + PUSH a1,a5 + MOVE @SCROLLX,A5,L + MOVE *A0(OXVEL),A1,L + ADD A5,A1 + MOVE A1,*A0(OXVEL),L + MOVE @SCROLLY,A5,L + MOVE *A0(OYVEL),A1,L + ADD A5,A1 + MOVE A1,*A0(OYVEL),L + PULL a1,a5 + RETS + + +******************************** +* Adjust current object image with respect to it's anipt and flip flags +* A0=*Object +* A2=New YVAL +* A3=New XVAL +* A4=New FLAGS (Only DMA bits) +* Trashes A1,A14,B0-B1 +* >A2=Adjusted YVAL +* >A3=Adjusted XVAL + +GANISAG + PUSH a4,a6,a7 + + PUSH a2 + move *a0(OIMG),a1,L + move *a1,a2,L ;ISIZE + move a2,*a0(OSIZE),L + callr GANIOF + PULL a2 + + sub a6,a3 + sub a7,a2 ;adjust upper left corner + move a3,*a0(OXVAL),L + move a2,*a0(OYVAL),L + + move *a1(ICTRL),a1 ;Get DMA flags + andi >803f,a4 ;Kill mode bits + or a1,a4 + move a4,*a0(OCTRL),L ;&OFFSET + + PULL a4,a6,a7 + rets + + +****************************************************************************** +* Begin an object +* A0=XVAL, A1=YVAL, A2=*IMG, A3=ZPOS, A4=FLAGS, A5=OID, A6=XVEL, A7=YVEL +* >A8=*Obj +* Trashes scratch + +BEGINOBJW + move @WORLDTLX,a8,L ;Adjust for world coord + add a8,a0 + btst B_3D,a4 + jrnz BEGINOBJ ;No Y add for 3D? + move @WORLDTLY,a8,L + add a8,a1 + +BEGINOBJ + PUSH a2,a3,a4,a6,a7,a9,a10 + move a0,a9 ;X + move a1,a10 ;Y + + move *a2(ICMAP),a0,L ;Get *palette + .if DEBUG + jrnn bopalerr ;No palette? + .endif + calla pal_getf + +bo20 move @OFREE,a8,L ;Pointer to next available obj block + jrz begobjerr ;No objs? + move *a8,a1,L + move a1,@OFREE,L ;Adjust pointer to free list + + move a0,*a8(OPAL),L ;Set palette & constant + clr a0 + move a0,*a8(ODATA_p),L ;Clr stuff + move a0,*a8(OXANI),L + move a0,*a8(OZVEL),L + move a0,*a8(OMISC) + + move a0,*a8(ODOFF),L + movi 01000100H,a0 + move a0,*a8(OSCALE),L + + move a3,*a8(OZPOS) + + move a5,*a8(OID) + move a6,*a8(OXVEL),L + move a7,*a8(OYVEL),L + + move a2,a1 ;*Img + move *a1,a2,L ;ISIZE + callr GANIOF ;Adjust animation offset + +;here!!!!!!!!!!!!!! + move *a1(IANIOFFX),*a8(ODXOFF) ;display x offset + move *a1(IANIOFFY),*a8(ODYOFF) ;display y offset + + move *a1(ISAG),a3,L ;Get top left sag + +;;; sub a6,a9 ;- x anioff +;;; sub a7,a10 ;- y anioff + move a9,*a8(OXVAL),L + move a10,*a8(OYVAL),L + + move a1,*a8(OIMG),L + move a2,*a8(OSIZE),L + move a3,*a8(OSAG),L + move a4,*a8(OFLAGS) + move *a1(ICTRL),a0 ;Get DMA flags + andi >803f,a4 ;Kill mode bits + or a0,a4 + move a4,*a8(OCTRL),L ;&OFSET + + PULL a2,a3,a4,a6,a7,a9,a10 + + move a13,*a8(OPLINK),L + move a8,a0 + jruc INSOBJ ;Insert object into list + + + .if DEBUG +bopalerr + LOCKUP ;Object doesn't have pallette! + eint + clr a0 + jruc bo20 + .endif + +begobjerr + .if DEBUG + LOCKUP ;Out of objects! + eint + .else + CALLERR 3,7 + .endif + move @OBJLST,a8,L ;Pass 1st obj on list + PULL a2,a3,a4,a6,a7,a9,a10 + rets + + + +#******************************* +* Begin an object with specified palette +* A0=XVAL, A1=YVAL, A2=*IMG, A3=ZPOS, A4=FLAGS, A5=OID, A6=XVEL, A7=YVEL +* B0=*Palette +* >A8=*Obj +* Trashes scratch + +BEGINOBJWP + move @WORLDTLX,a8,L ;Adjust for world coord + add a8,a0 + btst B_3D,a4 + jrnz BEGINOBJP ;No Y add for 3D? + move @WORLDTLY,a8,L + add a8,a1 + +BEGINOBJP + PUSH a2,a3,a4,a6,a7,a9,a10 + move a0,a9 ;X + move a1,a10 ;Y + + move b0,a0 ;Get *palette + .if DEBUG + jrnn #bopalerr ;No pallette? + .endif + calla pal_getf + +#bo20 move @OFREE,a8,L ;Pointer to next available obj block + jrz begobjerr ;No objs? + move *a8,a1,L + move a1,@OFREE,L ;Adjust pointer to free list + + move a0,*a8(OPAL),L ;Set pallette & constant + clr a0 + move a0,*a8(ODATA_p),L ;Clr stuff + move a0,*a8(OXANI),L + move a0,*a8(OZVEL),L + move a0,*a8(OMISC) + + move a0,*a8(ODOFF),L + movi 01000100H,a0 + move a0,*a8(OSCALE),L + + move a3,*a8(OZPOS) + + move a5,*a8(OID) + move a6,*a8(OXVEL),L + move a7,*a8(OYVEL),L + + move a2,a1 ;*Img + move *a1,a2,L ;ISIZE + callr GANIOF ;Adjust animation offset + +;here!!!!!!!!!!!!!! + move *a1(IANIOFFX),*a8(ODXOFF) ;display x offset + move *a1(IANIOFFY),*a8(ODYOFF) ;display y offset + + move *a1(ISAG),a3,L ;Get top left sag + +;;; sub a6,a9 ;- x anioff +;;; sub a7,a10 ;- y anioff + move a9,*a8(OXVAL),L + move a10,*a8(OYVAL),L + + move a1,*a8(OIMG),L + move a2,*a8(OSIZE),L + move a3,*a8(OSAG),L + move a4,*a8(OFLAGS) + move *a1(ICTRL),a0 ;Get DMA flags + andi >803f,a4 ;Kill mode bits + or a0,a4 + move a4,*a8(OCTRL),L ;&OFSET + + PULL a2,a3,a4,a6,a7,a9,a10 + + move a13,*a8(OPLINK),L + move a8,a0 + jruc INSOBJ ;Insert object into list + + + .if DEBUG +#bopalerr + LOCKUP ;Object doesn't have pallette! + eint + clr a0 + jruc #bo20 + .endif + + +#******************************* +* Set new image for an object +* A1=*Image hdr +* A4=New FLAGS +* A8=*Obj +* Trashes A1,A14 + + SUBR ANI + + PUSH a0,a2,a3,a4,a5,a6,a7 + + cmpi ROM,a1 + jrlo anierr + + move a1,a3 + move a4,a5 + move *a8(OIMG),a1,L + move *a8(OCTRL),a4 + cmp a1,a3 + jrne #1 ;Different img? + + sext a5 + cmp a4,a5 + jreq #x ;All the same? + +#1 move *a8(OSIZE),a2,L + callr GANIOF ;Get old animation offset + move a3,a1 ;New OIMG + srl 6,a4 + sll 6,a4 + or a5,a4 ;Set new OCTRL + move a6,a0 + move a7,a5 + move *a1(ISAG),a3,L ;Get top left sag + move *a1,a2,L ;ISIZE + callr GANIOF ;Get new animation offset + move a1,*a8(OIMG),L + sub a6,a0 ;Subtract new from old + sub a7,a5 + zext a4 ;Zero offset in A4 + + move a8,a6 ;Get push address of octrl,osag,osize + addi OCTRL+>60,a6 + mmtm a6,a2,a3,a4 ;Save new data + + subi OCTRL-OXVAL,a6 + move *a6,a7,L ;New OXVAL + add a0,a7 + move a7,*a6+,L + move *a6,a7,L ;New OYVAL + add a5,a7 + move a7,*a6,L + +#x PULL a0,a2,a3,a4,a5,a6,a7 + rets + +anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,7 + .endif + jruc #x + + +#***************************************************************************** +* Change an objects image (Doesn't check VFLIP) +* A0=*New image +* A1=New flip flags & const +* A8=*Obj +* Trashes scratch + + SUBRP obj_aniq + + + PUSH a2,a3 + + cmpi ROM,a0 + jrlo #anierr + + move a0,a2 + move a1,a3 + + callr anipt_getxy + + move a2,*a8(OIMG),L + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + setf 5,0,0 + move *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 6,0,0 + move a3,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + move a0,a2 + move a1,a3 + callr anipt_getxy + + sub a0,a2 ;Subtract new from old + sub a1,a3 + + move a8,a0 ;Get base address + addi OXVAL,a0 + move *a0,a14,L ;New OXVAL + add a2,a14 + move a14,*a0+,L + move *a0,a14,L ;New OYVAL + add a3,a14 + move a14,*a0,L + +#x PULL a2,a3 + rets + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,2 + .endif + jruc #x + + +#******************************* +* Get an objects anipt XY (Doesn't check VFLIP) +* A8=*Obj +* >A0=Scaled Ani X (16:16) +* >A1=Scaled Ani Y +* Trashes scratch + + SUBRP anipt_getxy + + move a2,b0 + + move *a8(OIMG),a2,L + + move *a2(IANIOFFX),a0 + sll 16,a0 + move *a2(IANIOFFY),a1 + sll 16,a1 + + move *a8(OCTRL),a14 + btst B_FLIPH,a14 + jrz #x ;No flip? + + move *a2,a2 ;ISIZEX + subk 1,a2 + sll 16,a2 ;*64K + neg a0 + add a2,a0 ;+size + + +#x move b0,a2 + rets + + + +#******************************* +* Change an objects image (doesn't check flip flags) +* A0=*New image +* A1=New OCTRL +* A8=*Obj +* Trashes scratch + + SUBRP obj_aniq_cnoff + + move a2,b0 + + move a1,*a8(OCTRL) ;Write new ctrl + + move *a8(OIMG),a14,L + move *a14(IANIOFFX),a2 + move *a14(IANIOFFY),a14 + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFY),a1 + move *a0(IANIOFFX),a0 + + sub a0,a2 ;Subtract new from old + sub a1,a14 + sll 16,a2 + sll 16,a14 + + move a8,a0 ;Get base address + addi OXVAL,a0 + move *a0,a1,L ;New OXVAL + add a2,a1 + move a1,*a0+,L + move *a0,a1,L ;New OYVAL + add a14,a1 + move a1,*a0,L + + move b0,a2 + rets + + + +#******************************* +* Change an scaled objects image (Doesn't check VFLIP) +* A0=*New image +* A1=New OCTRL (low 8 bits) +* A8=*Obj +* Trashes scratch, A2,A3 + + + SUBRP obj_aniq_scld + + + cmpi ROM,a0 + jrlo #anierr + + move a0,a2 + move a1,a3 + +;;; calla anipt_getsclxy + + movb a3,*a8(OCTRL) + + move a2,*a8(OIMG),L + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + move a0,a2 + move a1,a3 +;;; calla anipt_getsclxy + + sub a0,a2 ;Subtract new from old + sub a1,a3 + + move a0,*a8(OXANI),L ;Save scaled anipt + + move a8,a0 ;Get base address + addi OXVAL,a0 + move *a0,a14,L ;New OXVAL + add a2,a14 + move a14,*a0+,L + move *a0,a14,L ;New OYVAL + add a3,a14 + move a14,*a0,L + +#x rets + + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,0 + .endif + jruc #x + + + +******************************** +* Get the x and y positions of an objects animation point +* A8=*Object +* Trashes scratch +* >A2=Ani pt Y 16:16 +* >A3=Ani pt X 16:16 + +GETANIXY + PUSH a4,a6,a7 + move *a8(OIMG),a1,L + move *a8(OSIZE),a2,L + move *a8(OCTRL),a4 + callr GANIOF + move *a8(OXVAL),a3,L + move *a8(OYVAL),a2,L + add a6,a3 + add a7,a2 + PULL a4,a6,a7 + rets + + +#******************************** +* Get animation offset (Fast!) +* A1=*Image header, A2=H:W, A4=OCTRL +* Trashes A14 +*Rets: +* A6=X ani offset * 64K +* A7=Y ani offset * 64K + +GANIOF + move *a1(IANIOFF),a6,L + cmpi IROM,a6 + jrge #err + +#h clr a7 + movy a6,a7 + sll 16,a6 ;Move to upper word + + btst B_FLIPH,a4 + jrz #v + move a2,a14 + subk 1,a14 + sll 16,a14 ;Move W to upper word + neg a6 + add a14,a6 ;Sub Width-1 + +#v btst B_FLIPV,a4 + jrz #x + move a2,a14 + neg a7 + srl 16,a14 + subk 1,a14 + sll 16,a14 + add a14,a7 ;Sub Hgt-1 + +#x rets + +#err clr a6 + jruc #h + + +#******************************* +* Scale screen out (JSRP) + + .asg SCRATCH+8*256*1024,SCRNBUF + .asg SCRNBUF+8*128*1024,PALBUF + + .bss scrnscl ,16 + + SUBR scrn_scaleout + + movk 1,a0 + move a0,@HALT + + move @dtype,a0 + PUSHP a0 + move @gndstat,a0 + PUSHP a0 + + movi >160,a0 + move a0,@scrnscl + + movi #initcode,a0 + move a0,@dcode_p,L + + movi -1,a0 + move a0,@dtype + clr a0 + move a0,@gndstat + move a0,@IRQSKYE + +#lp SLEEPK 1 + + movi scrnscl,a14 + move *a14,a5 + move a5,a0 + srl 3,a0 + add a0,a5 + move a5,*a14 + cmpi >7000,a5 + jrlt #lp + + clr a0 + move a0,@dcode_p,L + + PULLP a0 + move a0,@gndstat + PULLP a0 + move a0,@dtype + + + RETP + +#initcode + callr scrn_copy + movi scrn_scale,a0 + move a0,@dcode_p,L + jump a0 + + +#******************************* +* Initialization for scrn_scalein (JSRP) + + SUBR scrn_scaleininit + + dint +#lp move @VCOUNT,a0 + cmpi EOSINT,a0 + jrlt #lp + move @HSBLNK,a0 ;Blank screen + move a0,@HEBLNK + eint + SLEEPK 2 + + RETP + +#******************************* +* Scale screen in (JSRP) + + SUBR scrn_scalein + + PUSHP a8 + + move @HALT,a0 + PUSHP a0 + movk 1,a0 + move a0,@HALT + + move @dtype,a0 + PUSHP a0 + move @gndstat,a0 + PUSHP a0 + move @dcode_p,a0,L + PUSHP a0 + + movi >7000,a0 + move a0,@scrnscl + + movi #initcode,a0 + move a0,@dcode_p,L + movi -1,a0 + move a0,@dtype + clr a0 + move a0,@gndstat + + + .if DEBUG +; movi >1a0,a0 +; move a0,@scrnscl +; SLEEP TSEC*2 + .endif + + +#lp SLEEPK 1 + + movi scrnscl,a14 + move *a14,a5 + move a5,a0 + srl 2,a0 + sub a0,a5 + move a5,*a14 + cmpi >100,a5 + jrgt #lp + + + PULLP a0 + move a0,@dcode_p,L + PULLP a0 + move a0,@gndstat + PULLP a0 + move a0,@dtype + + PULLP a0 + move a0,@HALT + + + PULLP a8 + RETP + + +#initcode + callr scrn_copy + movi scrn_scaledison,a0 + move a0,@dcode_p,L + jruc scrn_scale + + +#******************************* +* B2=Y offset for top of page : XPad offset +* Trashes A0-A3,A7 + + SUBRP scrn_copy + + move b2,a0 + srl 16,a0 + xori >100,a0 ;Flip to the page being shown + sll 12,a0 ;*512*8 + addi SCRNXP*8,a0 ;A0=*Scrn mem + PUSH a0 + + movi SCRNBUF,a1 + movi 254,a3 + movi (512-400)*8,a7 +#cslp + movi 400/16,a2 +#cslp2 move *a0+,*a1+,L + move *a0+,*a1+,L + move *a0+,*a1+,L + move *a0+,*a1+,L + dsj a2,#cslp2 + + add a7,a0 + add a7,a1 + dsj a3,#cslp + + + move @SYSCOPY,a0 + .if WWFUNIT + andni PALENB,a0 + move a0,@SYSCOPY + .if DEBUG + andni LEDON,a0 + ori WROMINTCLR,a0 + .endif + .else + andni 100000b,a0 + move a0,@SYSCOPY + .if DEBUG + andni 1000000b,a0 + .endif + .endif + move a0,@SYSCTRL + + + PULL a0 + movi PALBUF,a1 + movi 254,a3 +#cplp + movi 400/16,a2 +#cplp2 move *a0+,*a1+,L + move *a0+,*a1+,L + move *a0+,*a1+,L + move *a0+,*a1+,L + dsj a2,#cplp2 + + add a7,a0 + add a7,a1 + dsj a3,#cplp + + move @SYSCOPY,a0 + + + .if WWFUNIT + ori PALENB,a0 + move a0,@SYSCOPY + .if DEBUG + andni LEDON,a0 + ori WROMINTCLR,a0 + .endif + .else + ori 100000b,a0 + move a0,@SYSCOPY + .if DEBUG + andni 1000000b,a0 + .endif + .endif + move a0,@SYSCTRL + + + rets + + +#******************************* +* Copy screen data (throw out 1 in 5 pixels) +* B2=Y offset for top of page : XPad offset + + SUBRP scrn_scale140 + + PUSH a4,a14 + + movi >140,a5 + + move b2,a1 + srl 16,a1 + addi 25,a1 + sll 12,a1 ;*512*8 + addi SCRNXP*8+40*8,a1 ;A1=*Scrn mem + + movi DMACMAP,a6 + clr a7 ;Y line 8:8 +#lp + move a7,a2 + srl 8,a2 + sll 12,a2 ;*512*8 + move a2,a3 + + addi SCRNBUF,a2 + addi PALBUF,a3 + movi 400/2/5,b0 ;Copy 1 line +#cslp + move *a3,*a6 ;Set pal latch + addk 16,a3 + move *a2+,*a1+ ;Copy 2 pixels + + move *a3,*a6 + addk 16,a3 + move *a2+,*a1+ + + move *a3,*a6 + addk 16,a3 + move *a2+,*a1+ + + move *a3,*a6 + addk 16,a3 + move *a2+,*a1+ + + addk 16,a3 + addk 16,a2 + + dsj b0,#cslp + + addi (512-320)*8,a1 + + add a5,a7 + cmpi 254<<8,a7 + jrlt #lp + + +#x PULL a4,a14 + rets + + + +#******************************* +* Copy screen data (throw out 1 in 3 pixels) +* B2=Y offset for top of page : XPad offset + + SUBRP scrn_scale180 + + PUSH a4,a14 + + movi >180,a5 + + move b2,a1 + srl 16,a1 + addi 42,a1 + sll 12,a1 ;*512*8 + addi SCRNXP*8+68*8,a1 ;A1=*Scrn mem + + movi DMACMAP,a6 + clr a7 ;Y line 8:8 +#lp + move a7,a2 + srl 8,a2 + sll 12,a2 ;*512*8 + move a2,a3 + + addi SCRNBUF,a2 + addi PALBUF,a3 + movi 400/2/3,b0 ;Copy 1 line +#cslp + move *a3,*a6 ;Set pal latch + addk 16,a3 + move *a2+,*a1+ ;Copy 2 pixels + + move *a3,*a6 + addk 16,a3 + move *a2+,*a1+ + + addk 16,a3 + addk 16,a2 + + dsj b0,#cslp + + addi (512-264)*8,a1 + + add a5,a7 + cmpi 254<<8,a7 + jrlt #lp + + +#x PULL a4,a14 + rets + + +******************************** + + SUBRP scrn_scaledison + + movi HEBLNKINIT,a0 ;Display on + move a0,@HEBLNK + movi scrn_scale,a0 + move a0,@dcode_p,L + + +#******************************* +* Copy screen data with variable down scaling +* B2=Y offset for top of page : XPad offset + + SUBRP scrn_scale + + move @scrnscl,a5 + cmpi >168,a5 + jrlt scrn_scale140 + cmpi >190,a5 + jrlt scrn_scale180 + + PUSH a4,a14 + + move b2,a9 + srl 16,a9 + movi 127<<8,a3 + divu a5,a3 + sub a3,a9 + addi 127,a9 + sll 12,a9 ;*512*8 + + addi (SCRNXP+200)*8,a9 ;A9=*Scrn mem + movi 100<<8,a3 + divu a5,a3 + sll 4,a3 ;*16 + sub a3,a9 + + movi DMACMAP,a6 + clr a7 ;Y line 8:8 + movi 200<<8,a10 +#lp + move a7,a2 + srl 8,a2 + sll 12,a2 ;*512*8 + move a2,a3 + + move a9,a1 + addi SCRNBUF,a2 + addi PALBUF,a3 + clr a8 ;X 8:8 +#cslp + move *a3,*a6 ;Set pal latch + move *a2,*a1 ;Copy 2 pixels + addk 16,a1 + + move a8,a0 + add a5,a8 + sra 8,a0 + move a8,a14 + sra 8,a14 + sub a0,a14 + +#nxtp + addk 16,a3 + addk 16,a2 + subk 1,a14 + jrgt #nxtp + + cmp a10,a8 + jrlt #cslp + + + addi 512*8,a9 ;Next line + + add a5,a7 + cmpi 254<<8,a7 + jrlt #lp + + +#x PULL a4,a14 + rets + + +#***************************************************************************** +* Remove an object from OBJLST and move it to BAKLST +* a0=*obj +* Trashes a1,a14 + + SUBR fg2bg + + movi OBJLST,a1 + +#loop + move a1,a14 + move *a1,a1,L + jrz #not_found + cmp a0,a1 + jrne #loop + + ;found it + move *a0,*a14,L ;remove from OBJLST + callr INSBOBJ ;add to BAKLST + + move *a0(ODXOFF),a1 ;adjust X and Y pos. BGND objects + move *a0(OXPOS),a14 ; don't use anim points. + sub a1,a14 + move a14,*a0(OXPOS) + clr a14 + move a14,*a0(ODXOFF) + + move *a0(ODYOFF),a1 + move *a0(OYPOS),a14 + sub a1,a14 + move a14,*a0(OYPOS) + clr a14 + move a14,*a0(ODYOFF) + +#not_found + rets + +#***************************************************************************** +* Create an object from one of jason's special header blocks. +* >a0=*block +* 01000100,a2 + move a2,@DMASCALEX,L ; dma input #1 = scale +; movi bpal_black*>10000,a2 +*TEMP + movi 010101010h,a2 +; CLR A2 +*TEMP + move a2,@DMACMAP,L ; dma input #2 = const:palette +* +* setup dedicated registers +* +* b0 = dmactrl +* b1 = worldtly +* a2 = dma y:x size pointer +* a3 = dma control:offset +* a6 = dma y coordinate pointer +* a12 = dma sag pointer +* + + movi DMAVERT,a6 + movk 1,a8 + move a8,*a6(020h),W ; y size is always "1" + movi DMAOFFST,a2 + clr a8 + move a8,*a2+,W ; offset is always "0" + movi DMAHORIZ,b6 + movi 02000000h,a7 + movi DMASAGL,a12 + move @page_addr,a5,L + +shad0 + move *a3+,a9,L + move *a9(OXPOS),a0,W + zext a0,W +; sll 16,a13 +; or a13,a0 ; a0 = ani y:x for all pieces (world) + + move b1,a14 ; a14 = worldtly + CLR A13 + move @WORLDTLX+16,a13 + SUBXY A13,A0 + + move @WORLDTLY+16,A13 + SUBI 10,A13 + SLL 16,A13 + SUBXY A13,A0 + + addxy a5,a0 + MOVE A0,B8 + MOVE B8,*B6,L ;DO XPOS + + MOVE A0,B4 + + .ALIGN +************************************************************************** +* * +* piece by piece loop * +* * +************************************************************************** +shad2 + move *a9(OYPOS),a10 + jrn shad9 + move *a9(OSAG),a10,L ; a10 = sag of this piece + jrz shad9 ; sag = 0 ---> we are done + + add a7,a10 + + move *a9(OSIZEY),a13,W ; a13 = # of lines + srl 3,a13 ; shadows are 1/4 the normal height + move a13,b5 + + move *a9(OSIZEX),a11,W + move a11,*a6(010h),W ; set a11 = x size for this piece + + move *a9(ODXOFF),A13 + move *a9(OCTRL),a14,W + btst B_FLIPH,a14 ; flip horizontal ? + jreq shad1 + NEG A13 + +shad1 move a14,a1 + move a14,a4 + sll 16+4,a1 + srl 32-2,a1 ; a1 = trail multiplier + sll 16+4+2,a4 + srl 32-2,a4 ; a4 = lead multiplier + + ori DMACNZ,a14 + + MOVE B4,A0 + SUBXY A13,A0 + move a0,b8 + move b8,*b6,W ; set x coordinate here !! + srl 16,a0 + move *a9(ODYOFF),A13 + SRL 3,A13 + SUBXY A13,A0 + +************************************************************************** +* * +* line by line loop * +* * +************************************************************************** + +shad4 +shad3 move *b0,b3,W + jrn shad3 ; wait for dma while busy + + sub A7,a10 + move a10,*a12,L ; stuff sag + add A7,a10 + + move a0,*a6,W ; set y coordinate + move a14,*a2,W ; set the GO! bit + dsjs b5,shad5 + +************************************************************************** +* * +* do the last line again to fill in "holes" * +* * +************************************************************************** + inc a0 + move a0,*a6,W ; set y 1 line down + dec a0 + +shad6 move *b0,b3,W + jrn shad6 ; wait for dma while busy + move a14,*a2,W ; set the GO + move *a3+,a9,L + jruc shad2 + +* +* skip 4 lines +* +shad5 move *b0,b3,W + jrn shad5 ; wait for dma while busy + inc a0 + movk 8,b3 + setf 8,0,0 ; field 0 is 8 bits (zero extend) + +shad7 move *a10+,a8,W ; grab a BYTE !! + + move a8,a13 + sll 32-4,a13 + srl 32-4,a13 ; mask off upper b.s. + sll a4,a13 ; a13 = lead zeros + + srl 4,a8 + sll a1,a8 ; a8 = trailing zeros + + add a8,a13 ; a13 = lead + trailing = all compressed zeros + move a11,a8 ; a8 = x size + sub a13,a8 ; a8 = uncompressed pixels to skip + + sll 1,a8 ; 2x + add a8,a10 + sll 1,a8 ; + 4x = 6 bits per pixel + add a8,a10 ; a10 ---> sag for next line + dsjs b3,shad7 + +;xx + setf 16,1,0 ; field 0 is back to 16 bits + jruc shad4 + +shad9 + mmfm sp,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14 + mmfm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 + rets + +;****************************************************************************** +; +;PLACE_SHADOWS +; mmtm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 +; mmtm sp,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14 +; +; move @process_ptrs,a3,L +; jrz shad9 +; addi OBJ_BASE,a3 +; move *a3,a3,L +; addi 020h,a3 +; +; movi DMACTRL,b0 +;shad_1 move *b0,b3,W +; jrn shad_1 ; wait for dma while busy +; +; movi >01000100,a2 +; move a2,@DMASCALEX,L ; dma input #1 = scale +;; movi bpal_black*>10000,a2 +;*TEMP +; CLR A2 +;*TEMP +; move a2,@DMACMAP,L ; dma input #2 = const:palette +;* +;* setup dedicated registers +;* +;* b0 = dmactrl +;* b1 = worldtly +;* a2 = dma y:x size pointer +;* a3 = dma control:offset +;* a6 = dma y coordinate pointer +;* a12 = dma sag pointer +;* +; +; movi DMAVERT,a6 +; movk 1,a8 +; move a8,*a6(020h),W ; y size is always "1" +; movi DMAOFFST,a2 +; clr a8 +; move a8,*a2+,W ; offset is always "0" +; movi DMAHORIZ,b6 +; movi 02000000h,a7 +; movi DMASAGL,a12 +; move @page_addr,a5,L +; +;shad0 +; move *a3+,a9,L +; move *a9(OYPOS),a13,W +; move *a9(OXPOS),a0,W +; zext a0,W +; sll 16,a13 +; or a13,a0 ; a0 = ani y:x for all pieces (world) +; +; move b1,a14 ; a14 = worldtly +; CLR A13 +; move @WORLDTLX+16,a13 +; SUBXY A13,A0 +; +; move @WORLDTLY+16,A13 +; SLL 16,A13 +; ADDXY A13,A0 +; +; addxy a5,a0 +; MOVE A0,B8 +; MOVE B8,*B6,L ;DO XPOS +; +; MOVE A0,B4 +; +;************************************************************************** +;* * +;* piece by piece loop * +;* * +;************************************************************************** +; +;shad2 move *a9(OSAG),a10,L ; a10 = sag of this piece +; jrz shad9 ; sag = 0 ---> we are done +; +; add a7,a10 +; +; move *a9(OSIZEY),a13,W ; a13 = # of lines +; srl 2,a13 ; shadows are 1/4 the normal height +; move a13,b5 +; +; move *a9(OSIZEX),a11,W +; move a11,*a6(010h),W ; set a11 = x size for this piece +; +; move *a9(OCTRL),a14,W +; btst B_FLIPH,a14 ; flip horizontal ? +; jreq shad1 +; addxy a11,a0 ; yes, adjust coordinates for flip +; dec a0 ; and nudge.. +; +;shad1 move a14,a1 +; move a14,a4 +; sll 16+4,a1 +; srl 32-2,a1 ; a1 = trail multiplier +; sll 16+4+2,a4 +; srl 32-2,a4 ; a4 = lead multiplier +; +; ori DMACNZ,a14 +; +; MOVE B4,A0 +; move a0,b8 +; move b8,*b6,W ; set x coordinate here !! +; srl 16,a0 +; +;************************************************************************** +;* * +;* line by line loop * +;* * +;************************************************************************** +; +;shad4 +;shad3 move *b0,b3,W +; jrn shad3 ; wait for dma while busy +; +; sub A7,a10 +; move a10,*a12,L ; stuff sag +; add A7,a10 +; +; move a0,*a6,W ; set y coordinate +; move a14,*a2,W ; set the GO! bit +; dsjs b5,shad5 +; +;************************************************************************** +;* * +;* do the last line again to fill in "holes" * +;* * +;************************************************************************** +; inc a0 +; move a0,*a6,W ; set y 1 line down +; dec a0 +; +;shad6 move *b0,b3,W +; jrn shad6 ; wait for dma while busy +; +; move a14,*a2,W ; set the GO +; +; move *a3+,a9,L +; +; jruc shad2 +; +;* +;* skip 4 lines +;* +;shad5 move *b0,b3,W +; jrn shad5 ; wait for dma while busy +; +; inc a0 +; +; movk 4,b3 +; setf 8,0,0 ; field 0 is 8 bits (zero extend) +; +;shad7 move *a10+,a8,W ; grab a BYTE !! +; +; move a8,a13 +; sll 32-4,a13 +; srl 32-4,a13 ; mask off upper b.s. +; sll a4,a13 ; a13 = lead zeros +; +; srl 4,a8 +; sll a1,a8 ; a8 = trailing zeros +; +; add a8,a13 ; a13 = lead + trailing = all compressed zeros +; move a11,a8 ; a8 = x size +; sub a13,a8 ; a8 = uncompressed pixels to skip +; +; sll 1,a8 ; 2x +; add a8,a10 +; sll 1,a8 ; + 4x = 6 bits per pixel +; add a8,a10 ; a10 ---> sag for next line +; dsjs b3,shad7 +; +;;xx +; setf 16,1,0 ; field 0 is back to 16 bits +; jruc shad4 +; +;shad9 +; mmfm sp,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14 +; mmfm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 +; rets +; + +****************************************************************************** + .end + + + + + \ No newline at end of file diff --git a/BACKUP/DISPLAY.EQU b/BACKUP/DISPLAY.EQU new file mode 100644 index 0000000..204b475 --- /dev/null +++ b/BACKUP/DISPLAY.EQU @@ -0,0 +1,138 @@ +************************************************************** +* +* Software: +* Initiated: 9/3/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + + + .globl OFREE,OBJLST,BAKLST,DISPLAYON,SCRNRELV + .globl GETOBJ,INSOBJ,DELOBJ,DELOBJA8 + .globl DISPLAY,OBJSTR + .globl ANI,SCRTST,SCRTSTG,GANIOF,DELBOBJ + .globl INSBOBJ,KILBOBJ + .globl PULLBOBJ,PULLOBJ,GANISAG + .globl QDMA,QDMAN,GETANIXY + .globl obj_addworldxy + .globl SCROLLX,SCROLLY,WORLDTLX,WORLDTLY,WORLDTL + .globl SCRNTL,SCRNLR,GSCRNREL,ADJNEWTL + .globl OBJSTR,SCREENTL,SCREENLR,DMAQCUR + .globl dpage,dtype + .globl dmaq0cnt,dmaq1cnt,dmaq0flg,dmaq1flg + .globl dmaq0,dmaq1 + .globl STOPOBJS + .globl FREEOBJ,EXISTOBJ + .globl ISOBJ + .globl BEGINOBJW,BEGINOBJ + .globl BEGINOBJWP,BEGINOBJP + + .globl obj_delc,obj_del1c,obj_aniq,obj_aniq_cnoff + .globl obj_aniq_scld + .globl DELOBJDIE,FRQDELDIE + .globl scrn_scaleininit,scrn_scalein,scrn_scaleout + .globl display_blank,display_unblank + .globl display_2dsclmodeon,display_2dsclstarmodeon + +*CONSTANTS + +SCRNXP equ 56 ;Left X padding in bitmap +SCRNST equ [0,-32] ;Top left of screen +SCRNEND equ [254,432] ;Bottom right of screen +SCRNMID equ [128,200] ;Midpoint of screen +PAGE1YO equ 256 ;2nd page Y offset +TSEC equ 53 ;Ticks per second + +;HEBLNKINIT equ 32h ;Initial value for register +HEBLNKINIT equ 65h ;Initial value for register + + +OWSPD equ 18 ;Open window speed +OWSPD2 equ 25 +CWSPD equ 40 ;Close win speed + +RING_X_MID equ 1024 + +SCALETSIZE equ 40*4*16 + + +*STRUCT OBJ +OLINK equ 000 ;UHL *next object block +OXVEL equ 020h ;UHL X velocity 16:16 +OYVEL equ 040h ;UHL Y velocity 16:16 +OZVEL equ 060h ;UHL Z velocity 16:16 +OXVAL equ 080h ;UHL X position 16:16 +OXFRAC equ 080h ; X pos fraction +OXPOS equ 090h ; X pos integer +OYVAL equ 0a0h ;UHL Y position 16:16 +OYFRAC equ 0a0h ; Y pos frac +OYPOS equ 0b0h ; Y pos int +OZVAL equ 0c0h ;UHL Z position 16:16 +OZPOS equ 0d0h ; Z pos int +OFLAGS equ 0e0h ;UHW Mode flags +OCTRL equ 0f0h ;UHW DMA control +OFSET equ 100h ;UHW Offset +OSAG equ 110h ;UHL *Image data +OSIZE equ 130h ; +OSIZEX equ 130h ;UHW X size +OSIZEY equ 140h ;UHW Y size +OPAL equ 150h ;UHW Palette # +OCONST equ 160h ;UHW Constant color +OIMG equ 170h ;UHL *Image header +OID equ 190h ;UHW Object ID +OPLINK equ 1a0h ;UHL *Process +ODATA_p equ 1c0h ;UHL *Scale table if scaled obj +OXANI equ 1e0h ;SHL X scaled animation pt 16:16 +OMISC equ 210h ;UHW Misc data (3D mode Z offset) +ODOFF equ 220h ; +ODXOFF equ 220h ;SDW display x offset +ODYOFF equ 230h ;SDW display y offset +OSCALE EQU 240H ;UHL scale this object (set to 100% in BEGINOBJ) +OBSIZ equ 260h +*ENDSTRUCT + +NOBJ equ 350 ;Total # objects + +BQCELL equ 0c0h ;Size of DMA queue element + +;Values for OFLAGS & OCTRL +M_WRZERO equ 1 ;Write zero data +M_WRNONZ equ 2 ;Write non-zero data +M_CONZER equ 4 ;Replace zero data with constant +M_CONNON equ 8 ;Replace non-zero data with constant +M_CONST equ 0ch ;Replace all with constant +M_FLIPH equ 10h ;Flip horizontally +M_FLIPV equ 20h ;Flip vertically +M_3DQ equ 40h ;Display in quick perspective +M_NODISP equ 80H ;DONT DISPLAY THIS OBJ +M_3D equ 100h ;Display in perspective using XYZ +M_SHAD equ 200h ;Shadow +M_PIXSCAN equ 400h ;Pixel scan on +M_NOCOLL equ 800h ;Collisions off +M_NOSCALE equ 1000h ;3D scaling off +M_SCRNREL equ 2000h ;Screen relative XY on +M_BOBJ equ 4000h ;background object (special flip) + +;OFLAGS/OCTRL bits +B_WRZERO equ 0 +B_WRNONZ equ 1 +B_CONZER equ 2 +B_CONNON equ 3 +B_FLIPH equ 4 +B_FLIPV equ 5 +B_3DQ equ 6 +B_NODISP equ 7 ;DONT DISPLAY THIS OBJ +B_3D equ 8 +B_SHAD equ 9 +B_PIXSCAN equ 10 +B_NOCOLL equ 11 +B_NOSCALE equ 12 +B_SCRNREL equ 13 +B_BOBJ equ 14 + +****************************************************************************** + + + \ No newline at end of file diff --git a/BACKUP/DNKSEQ1.ASM b/BACKUP/DNKSEQ1.ASM new file mode 100644 index 0000000..a65d14f --- /dev/null +++ b/BACKUP/DNKSEQ1.ASM @@ -0,0 +1,616 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 10/12/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "dnkseq1.asm" + .title "Krusty the Clown animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "doinkimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF SMALL_RUN + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* STANDS + + SUBR dnk_zip_anim + WL TSEC*60,D2ST2B+FR3 + .word ANI_END + + SUBR dnk_stand2_anim + SUBR dnk_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 6,D2ST2B+FR3 + WL 6,D2ST2B+FR4 + WL 6,D2ST2B+FR5 + WL 6,D2ST2B+FR6 + WL 6,D2ST2B+FR5 + WL 6,D2ST2B+FR4 + .word ANI_REPEAT + + SUBR dnk_stand4_anim + SUBR dnk_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 6,D4ST4E+FR3 + WL 6,D4ST4E+FR4 + WL 6,D4ST4E+FR5 + WL 6,D4ST4E+FR6 + WL 6,D4ST4E+FR5 + WL 6,D4ST4E+FR4 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKING TORSOS + + + SUBR dnk_torso2_anim + SUBR dnk_torso8_anim + WL 4,D2TW2B+FR1 + WL 4,D2TW2B+FR2 + WL 4,D2TW2B+FR3 + WL 4,D2TW2B+FR4 + WL 4,D2TW2B+FR3 + WL 4,D2TW2B+FR2 + .word ANI_REPEAT + + + + SUBR dnk_torso4_anim + SUBR dnk_torso6_anim + WL 4,D4TW4B+FR1 + WL 4,D4TW4B+FR2 + WL 4,D4TW4B+FR3 + WL 4,D4TW4B+FR4 + WL 4,D4TW4B+FR3 + WL 4,D4TW4B+FR2 + .word ANI_REPEAT + + SUBR dnk_holdoh_anim + WL 999,D4TH4A+FR1 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR dnk_walk1_f2_anim + WL 2,D2WL1A+FR1 + WL 2,D2WL1A+FR2 + WL 2,D2WL1A+FR3 + WL 2,D2WL1A+FR4 + WL 2,D2WL1A+FR5 + WL 2,D2WL1A+FR6 + WL 2,D2WL1A+FR7 + WL 2,D2WL1A+FR8 + WL 2,D2WL1A+FR9 + WL 2,D2WL1A+FR10 + WL 2,D2WL1A+FR11 + WL 2,D2WL1A+FR12 + WL 2,D2WL1A+FR13 + WL 2,D2WL1A+FR14 + WL 2,D2WL1A+FR15 + WL 2,D2WL1A+FR16 + WL 2,D2WL1A+FR17 + WL 2,D2WL1A+FR18 + .word ANI_REPEAT + + SUBR dnk_walk2_f2_anim + WL 2,D2WL2A+FR1 + WL 2,D2WL2A+FR2 + WL 2,D2WL2A+FR3 + WL 2,D2WL2A+FR4 + WL 2,D2WL2A+FR5 + WL 2,D2WL2A+FR6 + WL 2,D2WL2A+FR7 + WL 2,D2WL2A+FR8 + WL 2,D2WL2A+FR9 + WL 2,D2WL2A+FR10 + WL 2,D2WL2A+FR11 + WL 2,D2WL2A+FR12 + WL 2,D2WL2A+FR13 + WL 2,D2WL2A+FR14 + WL 2,D2WL2A+FR15 + WL 2,D2WL2A+FR16 + WL 2,D2WL2A+FR17 + .word ANI_REPEAT + + SUBR dnk_walk4_f2_anim + WL 2,D2WL4B+FR1 + WL 2,D2WL4B+FR2 + WL 2,D2WL4B+FR3 + WL 2,D2WL4B+FR4 + WL 2,D2WL4B+FR5 + WL 2,D2WL4B+FR6 + WL 2,D2WL4B+FR7 + WL 2,D2WL4B+FR8 + WL 2,D2WL4B+FR9 + WL 2,D2WL4B+FR10 + WL 2,D2WL4B+FR11 + WL 2,D2WL4B+FR12 + WL 2,D2WL4B+FR13 + WL 2,D2WL4B+FR14 + WL 2,D2WL4B+FR15 + WL 2,D2WL4B+FR16 + WL 2,D2WL4B+FR17 + WL 2,D2WL4B+FR18 + .word ANI_REPEAT + + SUBR dnk_walk5_f2_anim + WL 2,D2WL1A+FR18 + WL 2,D2WL1A+FR17 + WL 2,D2WL1A+FR16 + WL 2,D2WL1A+FR15 + WL 2,D2WL1A+FR14 + WL 2,D2WL1A+FR13 + WL 2,D2WL1A+FR12 + WL 2,D2WL1A+FR11 + WL 2,D2WL1A+FR10 + WL 2,D2WL1A+FR9 + WL 2,D2WL1A+FR8 + WL 2,D2WL1A+FR7 + WL 2,D2WL1A+FR6 + WL 2,D2WL1A+FR5 + WL 2,D2WL1A+FR4 + WL 2,D2WL1A+FR3 + WL 2,D2WL1A+FR2 + WL 2,D2WL1A+FR1 + .word ANI_REPEAT + + SUBR dnk_walk6_f2_anim + WL 2,D2WL2A+FR17 + WL 2,D2WL2A+FR16 + WL 2,D2WL2A+FR15 + WL 2,D2WL2A+FR14 + WL 2,D2WL2A+FR13 + WL 2,D2WL2A+FR12 + WL 2,D2WL2A+FR11 + WL 2,D2WL2A+FR10 + WL 2,D2WL2A+FR9 + WL 2,D2WL2A+FR8 + WL 2,D2WL2A+FR7 + WL 2,D2WL2A+FR6 + WL 2,D2WL2A+FR5 + WL 2,D2WL2A+FR4 + WL 2,D2WL2A+FR3 + WL 2,D2WL2A+FR2 + WL 2,D2WL2A+FR1 + .word ANI_REPEAT + + + SUBR dnk_walk8_f2_anim + WL 2,D2WL4B+FR18 + WL 2,D2WL4B+FR17 + WL 2,D2WL4B+FR16 + WL 2,D2WL4B+FR15 + WL 2,D2WL4B+FR14 + WL 2,D2WL4B+FR13 + WL 2,D2WL4B+FR12 + WL 2,D2WL4B+FR11 + WL 2,D2WL4B+FR10 + WL 2,D2WL4B+FR9 + WL 2,D2WL4B+FR8 + WL 2,D2WL4B+FR7 + WL 2,D2WL4B+FR6 + WL 2,D2WL4B+FR5 + WL 2,D2WL4B+FR4 + WL 2,D2WL4B+FR3 + WL 2,D2WL4B+FR2 + WL 2,D2WL4B+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR dnk_walk1_f4_anim + WL 2,D4WL5A+FR18 + WL 2,D4WL5A+FR17 + WL 2,D4WL5A+FR16 + WL 2,D4WL5A+FR15 + WL 2,D4WL5A+FR14 + WL 2,D4WL5A+FR13 + WL 2,D4WL5A+FR12 + WL 2,D4WL5A+FR11 + WL 2,D4WL5A+FR10 + WL 2,D4WL5A+FR9 + WL 2,D4WL5A+FR8 + WL 2,D4WL5A+FR7 + WL 2,D4WL5A+FR6 + WL 2,D4WL5A+FR5 + WL 2,D4WL5A+FR4 + WL 2,D4WL5A+FR3 + WL 2,D4WL5A+FR2 + WL 2,D4WL5A+FR1 + .word ANI_REPEAT + + SUBR dnk_walk2_f4_anim + WL 2,D4WL2A+FR1 + WL 2,D4WL2A+FR2 + WL 2,D4WL2A+FR3 + WL 2,D4WL2A+FR4 + WL 2,D4WL2A+FR5 + WL 2,D4WL2A+FR6 + WL 2,D4WL2A+FR7 + WL 2,D4WL2A+FR8 + WL 2,D4WL2A+FR9 + WL 2,D4WL2A+FR10 + WL 2,D4WL2A+FR11 + WL 2,D4WL2A+FR12 + WL 2,D4WL2A+FR13 + WL 2,D4WL2A+FR14 + WL 2,D4WL2A+FR15 + WL 2,D4WL2A+FR16 + WL 2,D4WL2A+FR17 + WL 2,D4WL2A+FR18 + .word ANI_REPEAT + + SUBR dnk_walk4_f4_anim + WL 2,D4WL4A+FR1 + WL 2,D4WL4A+FR2 + WL 2,D4WL4A+FR3 + WL 2,D4WL4A+FR4 + WL 2,D4WL4A+FR5 + WL 2,D4WL4A+FR6 + WL 2,D4WL4A+FR7 + WL 2,D4WL4A+FR8 + WL 2,D4WL4A+FR9 + WL 2,D4WL4A+FR10 + WL 2,D4WL4A+FR11 + WL 2,D4WL4A+FR12 + WL 2,D4WL4A+FR13 + WL 2,D4WL4A+FR14 + WL 2,D4WL4A+FR15 + WL 2,D4WL4A+FR16 + WL 2,D4WL4A+FR17 + WL 2,D4WL4A+FR18 + .word ANI_REPEAT + + SUBR dnk_walk5_f4_anim + WL 2,D4WL5A+FR1 + WL 2,D4WL5A+FR2 + WL 2,D4WL5A+FR3 + WL 2,D4WL5A+FR4 + WL 2,D4WL5A+FR5 + WL 2,D4WL5A+FR6 + WL 2,D4WL5A+FR7 + WL 2,D4WL5A+FR8 + WL 2,D4WL5A+FR9 + WL 2,D4WL5A+FR10 + WL 2,D4WL5A+FR11 + WL 2,D4WL5A+FR12 + WL 2,D4WL5A+FR13 + WL 2,D4WL5A+FR14 + WL 2,D4WL5A+FR15 + WL 2,D4WL5A+FR16 + WL 2,D4WL5A+FR17 + WL 2,D4WL5A+FR18 + .word ANI_REPEAT + + SUBR dnk_walk6_f4_anim + WL 2,D4WL2A+FR18 + WL 2,D4WL2A+FR17 + WL 2,D4WL2A+FR16 + WL 2,D4WL2A+FR15 + WL 2,D4WL2A+FR14 + WL 2,D4WL2A+FR13 + WL 2,D4WL2A+FR12 + WL 2,D4WL2A+FR11 + WL 2,D4WL2A+FR10 + WL 2,D4WL2A+FR9 + WL 2,D4WL2A+FR8 + WL 2,D4WL2A+FR7 + WL 2,D4WL2A+FR6 + WL 2,D4WL2A+FR5 + WL 2,D4WL2A+FR4 + WL 2,D4WL2A+FR3 + WL 2,D4WL2A+FR2 + WL 2,D4WL2A+FR1 + .word ANI_REPEAT + + SUBR dnk_walk8_f4_anim + WL 2,D4WL4A+FR18 + WL 2,D4WL4A+FR17 + WL 2,D4WL4A+FR16 + WL 2,D4WL4A+FR15 + WL 2,D4WL4A+FR14 + WL 2,D4WL4A+FR13 + WL 2,D4WL4A+FR12 + WL 2,D4WL4A+FR11 + WL 2,D4WL4A+FR10 + WL 2,D4WL4A+FR9 + WL 2,D4WL4A+FR8 + WL 2,D4WL4A+FR7 + WL 2,D4WL4A+FR6 + WL 2,D4WL4A+FR5 + WL 2,D4WL4A+FR4 + WL 2,D4WL4A+FR3 + WL 2,D4WL4A+FR2 + WL 2,D4WL4A+FR1 + .word ANI_REPEAT + + +;2 TICKS = 1 +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR dnk_2_to_4_turn_anim + SUBR dnk_8_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TT5Z+FR2 ;2.5 + WL 1,D1TT5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_2_turn_anim + SUBR dnk_6_to_8_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TT5Z+FR3 ;3.5 + WL 1,D1TT5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_6_turn_anim + SUBR dnk_6_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 1,D1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_to_8_turn_anim + SUBR dnk_8_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 1,D1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_8_turn_anim + SUBR dnk_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TT5Z+FR3 ;3.5 + WL 1,D1TT5Z+FR2 ;2.5 + WL 1,D1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 1,D1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_to_6_turn_anim + SUBR dnk_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TT5Z+FR2 ;2.5 + WL 1,D1TT5Z+FR3 ;3.5 + WL 1,D1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 1,D1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR dnk_2_to_4_turn2_anim + SUBR dnk_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TR5Z+FR2 ;2.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,D1TR5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_2_turn2_anim + SUBR dnk_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TR5Z+FR3 ;3.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,D1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_6_turn2_anim + SUBR dnk_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,D1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_to_8_turn2_anim + SUBR dnk_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TR5Z+FR1 ;1.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,D1TR5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_8_turn2_anim + SUBR dnk_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,D1TR5Z+FR4 ;4.5 + WL 1,D1TR5Z+FR3 ;3.5 + .word ANI_SETFACING + WL 1,D1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_to_6_turn2_anim + SUBR dnk_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,D1TR5Z+FR2 ;2.5 + .word ANI_SETFACING + WL 1,D1TR5Z+FR3 ;3.5 + WL 1,D1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,D1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR dnk_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR dnk_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + +#lp1 + WL 1,D3RN3B+FR1 +; .word ANI_SOUND,run_snd + WL ANI_CODE,SMALL_RUN + WL 1,D3RN3B+FR1 + WL 3,D3RN3B+FR2 + WL 2,D3RN3B+FR3 + WL 3,D3RN3B+FR4 + WL 2,D3RN3B+FR5 +#run2 + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL 2,D3RN3B+FR6 +; .word ANI_SOUND,run_snd + WL ANI_CODE,SMALL_RUN + WL 1,D3RN3B+FR6 + WL 2,D3RN3B+FR7 + WL 3,D3RN3B+FR8 + WL 2,D3RN3B+FR9 + WL 3,D3RN3B+FR10 + WL 2,D3RN3B+FR11 + + WL ANI_GOTO,#lp1 + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR dnk_bounce_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 2,D3BO3B+FR2 + .word ANI_BOUNCEROPE,0 + WL 1,D3BO3B+FR2 + + WL 2,D3BO3B+FR3 + .word ANI_BOUNCEROPE,1 + WL ANI_CODE,SMALL_RUN +; .word ANI_SOUND,run_snd + + WL 1,D3BO3B+FR3 + + WL 2,D3BO3B+FR4 + .word ANI_BOUNCEROPE,2 + WL 1,D3BO3B+FR4 + + WL 2,D3BO3B+FR5 + .word ANI_BOUNCEROPE,3 + WL 1,D3BO3B+FR5 + + .word ANI_ZEROVELS + + WL 2,D3BO3B+FR6 + .word ANI_BOUNCEROPE,4 + WL 1,D3BO3B+FR6 + WL 3,D3BO3B+FR7 + WL 2,D3BO3B+FR8 + .word ANI_BOUNCEROPE,0 + WL 1,D3BO3B+FR8 + WL 2,D3BO3B+FR9 + .word ANI_BOUNCEROPE,-1 + WL ANI_CODE,SMALL_RUN +; .word ANI_SOUND,run_snd + WL 1,D3BO3B+FR9 + WL 3,D3BO3B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/DNKSEQ2.ASM b/BACKUP/DNKSEQ2.ASM new file mode 100644 index 0000000..b4883fe --- /dev/null +++ b/BACKUP/DNKSEQ2.ASM @@ -0,0 +1,5221 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 10/12/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "dnkseq2.asm" + .title "Krusty the Clown animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "display.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "doinkimg.h" + .include "miscimg.glo" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF DO_CROWD_CHEER + + .REF DO_SNAP_MESS + + .def SET_DIR_FACE + + .REF HIT_THE_MAT,SMALL_BOUNCE + .REF CALL_MISSES,CALL_SETUP,CALL_SPECIAL_MOVE + .ref wres_get_but_val_cur + .ref am_I_dizzy + .ref am_I_dead + .ref start_run_anim + + .ref wres_get_stick_val_cur + .ref set_target_offsets + .ref get_opp_process + .ref get_leap + .ref shake_all_ropes + + .ref rope_command + .ref react_debris + + .ref get_but_val_cur + .ref RNDPER + .ref clear_damage_log + .ref check_dizzy + .ref tally_damage + .ref calc_line_x + .ref choose_2or4 + .ref tgt_ground,process_ptrs + + .ref hrt_hitonground_anim + .ref rzr_hitonground_anim + .ref und_hitonground_anim + .ref yok_hitonground_anim + .ref shn_hitonground_anim + .ref bam_hitonground_anim + .ref lex_hitonground_anim + + .REF dnk_4_combo_earslap_anim + .ref DO_COMBO_MESS + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* NORMAL #2 PUNCH + + SUBR dnk_2_punch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,D2PU3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,5 ;type, #ticks 'til attack on + + WL 2,D2PU3A+FR2 + WL 2,D2PU3A+FR3 + WL 1,D2PU3A+FR4 + + .ref doink_pie +; WLWWWW ANI_SNOT,doink_pie,0,0,0,0 + + .word ANI_ATTACK_ON, AMODE_PUNCH,22,86,55,9 ;mode,x,y,w,h + WL 1,D2PU3A+FR4 + WL 2,D2PU3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-30000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 3,D2PU3A+FR5 +#no_hit + WL 1,D2PU3A+FR5 + WL 3,D2PU3A+FR6 + WL 4,D2PU3A+FR7 + WL 4,D2PU3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* NORMAL #4 PUNCH + + SUBR dnk_4_punch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,D4PU3C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,5 ;type, #ticks 'til attack on + + WL 2,D4PU3C+FR2 + WL 2,D4PU3C+FR3 + WL 1,D4PU3C+FR4 + +; WLWWWW ANI_SNOT,doink_pie,0,0,0,0 + + .word ANI_ATTACK_ON, AMODE_PUNCH,22,86,55,9 ;mode,x,y,w,h + WL 1,D4PU3C+FR4 + WL 2,D4PU3C+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-30000h,#no_hit2 + + WL ANI_SET_YVEL,30000h + WL 3,D4PU3C+FR5 + +#no_hit2 + WL 1,D4PU3C+FR5 + WL 3,D4PU3C+FR6 + WL 4,D4PU3C+FR7 + WL 4,D4PU3C+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* BOXING GLOVE #2 PUNCH + + SUBR dnk_2_box_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_BOXPUNCH,15 + WL 3,D2RG3B+FR6 + WL 3,D2RG3B+FR7 + WL 3,D2RG3B+FR8 + WL 3,D2RG3B+FR9 + WL 3,D2RG3B+FR10 + + .word ANI_ATTACK_ON, AMODE_BOXPUNCH,37,84,66,15 ;mode,x,y,w,h + WL 4,D2RG3B+FR11 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit ;range,vel,addr +#no_hit + WL 10,D2RG3B+FR11 + + WL 2,D2PU3A+FR6 + WL 3,D2PU3A+FR7 + WL 2,D2PU3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 15,D2RG3B+FR11 + +#missed + WL 5,D2RG3B+FR11 + + WL 2,D2PU3A+FR6 + WL 3,D2PU3A+FR7 + WL 2,D2PU3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#* BOXING GLOVE #4 PUNCH + + SUBR dnk_4_box_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_BOXPUNCH,15 + WL 3,D4RG3A+FR6 + WL 3,D4RG3A+FR7 + WL 3,D4RG3A+FR9 + WL 3,D4RG3A+FR10 + WL 3,D4RG3A+FR11 + + .word ANI_ATTACK_ON, AMODE_BOXPUNCH,37,84,66,15 ;mode,x,y,w,h + WL 4,D4RG3A+FR12 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit2 ;range,vel,addr +#no_hit2 + WL 10,D4RG3A+FR12 + + WL 2,D4PU3C+FR6 + WL 3,D4PU3C+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 15,D4RG3A+FR12 +#missed + WL 5,D4RG3A+FR12 + + WL 2,D4PU3C+FR6 + WL 3,D4PU3C+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR dnk_2_butt_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 2,D2BC3A+FR1 + WL 1,D2BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,3 + WL 1,D2BC3A+FR2 + WL 2,D2BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,21,79,27,24 ;mode,x,y,w,h + WL 3,D2BC3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,D2BC3A+FR5 +#no_hit + WL 4,D2BC3A+FR5 + WL 4,D2BC3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 HEADBUTT + + SUBR dnk_4_butt_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 2,D4BC3A+FR1 + WL 1,D4BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,3 + WL 1,D4BC3A+FR2 + WL 2,D4BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,21,79,27,24 ;mode,x,y,w,h + WL 3,D4BC3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit2 + + WL ANI_SET_YVEL,38000h + WL 6,D4BC3A+FR5 +#no_hit2 + WL 4,D4BC3A+FR5 + WL 4,D4BC3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* #4 COMBO HEADBUTT + + SUBR dnk_4_combo_butt_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,10000h +; .word ANI_STARTATTACK,AT_HDBUTT,5 + WL 2,D4BC3A+FR1 + WL 2,D4BC3A+FR2 + WL 1,D4BC3A+FR3 + + .word ANI_CLR_BUTCOUNT + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HDBUTT,21,79,27,24 ;mode,x,y,w,h + WL 2,D4BC3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + +; .word ANI_STARTATTACK,AT_HDBUTT,9 + + WL 2,D4BC3A+FR5 + WL 2,D4BC3A+FR6 + + WL ANI_SET_YVEL,10000h + WL 2,D4BC3A+FR1 + WL 2,D4BC3A+FR2 + WL 1,D4BC3A+FR3 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HDBUTT,21,79,27,24 ;mode,x,y,w,h + WL 2,D4BC3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + +; .word ANI_STARTATTACK,AT_HDBUTT,9 + + WL 2,D4BC3A+FR5 + WL 2,D4BC3A+FR6 + + WL ANI_SET_YVEL,10000h + WL 2,D4BC3A+FR1 + WL 2,D4BC3A+FR2 + WL 1,D4BC3A+FR3 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HDBUTT,31,79,27,24 ;mode,x,y,w,h + WL 2,D4BC3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + WL 2,D4BC3A+FR5 + WL 2,D4BC3A+FR6 + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,dnk_4_box_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,dnk_4_combo_hiptoss_anim + +#NEXT_CHECK_2 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK_3 + WL ANI_CHANGEANIM,dnk_4_combo_earslap_anim + +#NEXT_CHECK_3 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#miss + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,dnk_4_knee_fall_anim +#miss + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 2,D4BC3A+FR5 + WL 2,D4BC3A+FR6 + + .word ANI_DETACH + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #2 KICK + + SUBR dnk_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,D2KM3B+FR1 ;4 + WL 1,D2KM3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,5 + WL 1,D2KM3B+FR2 + WL 2,D2KM3B+FR3 + + WL 2,D2KM3B+FR4 ;4 + + .word ANI_ATTACK_ON, AMODE_KICK,20,62,68,16 ;mode,x,y,w,h + WL 1,D2KM3B+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 2,D2KM3B+FR4 + +#no_hit + WL ANI_IFNOTSTATUS,#nopause + WL 2,D2KM3B+FR4 +#nopause + + WL 3,D2KM3B+FR4 + WL 3,D2KM3B+FR5 + WL 3,D2KM3B+FR6 + WL 3,D2KM3B+FR7 + WL 3,D2KM3B+FR8 + WL 3,D2KM3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* NORMAL #4 KICK + + SUBR dnk_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,D4KM3A+FR2 + WL 1,D4KM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,5 + WL 1,D4KM3A+FR3 + WL 2,D4KM3A+FR4 + + WL 2,D4KM3A+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,20,62,68,16 ;mode,x,y,w,h + WL 1,D4KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 2,D4KM3A+FR5 + +#no_hit2 + WL ANI_IFNOTSTATUS,#nopause2 + WL 2,D4KM3A+FR5 +#nopause2 + + WL 3,D4KM3A+FR5 + WL 3,D4KM3A+FR6 + WL 3,D4KM3A+FR7 + WL 3,D4KM3A+FR8 + WL 3,D4KM3A+FR9 + WL 3,D4KM3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_combo_kick_anim + + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + .WORD ANI_INC_COMBO + +; .word ANI_STARTATTACK,AT_KICK,7 + WL 2,D4KM3A+FR2 + WL 1,D4KM3A+FR3 + WL 2,D4KM3A+FR4 + + WL 2,D4KM3A+FR5 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_KICK,20,62,68,16 ;mode,x,y,w,h + WL 1,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + .word ANI_CLR_BUTCOUNT + WL ANI_SET_YVEL,30000h + +; .word ANI_STARTATTACK,AT_KICK,13 + WL 2,D4KM3A+FR5 + WL 1,D4KM3A+FR6 + WL 1,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 1,D4KM3A+FR10 + + WL 1,D4KM3A+FR2 + WL 1,D4KM3A+FR3 + WL 2,D4KM3A+FR4 + + WL 2,D4KM3A+FR5 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_KICK,20,62,68,16 ;mode,x,y,w,h + WL 1,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + WL ANI_SET_YVEL,30000h +; .word ANI_STARTATTACK,AT_KICK,11 + WL 1,D4KM3A+FR5 + + WL 1,D4KM3A+FR6 + WL 1,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 1,D4KM3A+FR10 + + WL 1,D4KM3A+FR2 + WL 1,D4KM3A+FR3 + WL 1,D4KM3A+FR4 + + WL 2,D4KM3A+FR5 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_KICK,20,62,68,16 ;mode,x,y,w,h + WL 1,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + .word ANI_DETACH + + WL ANI_SET_YVEL,30000h + WL 1,D4KM3A+FR5 + + WL 1,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 1,D4KM3A+FR10 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + WL ANI_CHANGEANIM,dnk_4_combo_spin_kick_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK_2 + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,dnk_4_box_anim + +#NEXT_CHECK_2 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#miss + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,dnk_4_knee_fall_anim + +#miss + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + WL 3,D4KM3A+FR5 + WL 3,D4KM3A+FR6 + WL 3,D4KM3A+FR7 + WL 3,D4KM3A+FR8 + WL 3,D4KM3A+FR9 + WL 3,D4KM3A+FR10 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#***************************************************************************** +* +* #2 SPIN KICK + + SUBR dnk_2_spin_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_SPINKIK,15 + WL 3,D2KB3A+FR9 + WL 1,D2KB3A+FR9 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 11,999,50,50,90000h,TGT_HEAD,79,87,-30 + WL 2,D2KB3A+FR8 + WL 3,D2KB3A+FR7 + WL 3,D2KB3A+FR6 + WL 3,D2KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,87,21,20 ;mode,x,y,w,h + + WL 4,D2KB3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-58000h,#no_hit + WL ANI_SET_YVEL,50000h + WL ANI_GOTO,#nopause +#no_hit + WL ANI_IFNOTSTATUS,#nopause + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,30000h,AM_HIT_REL +#nopause + WL 1,D2KB3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,D2KB3A+FR3 + WL 4,D2KB3A+FR2 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 SPIN KICK + + SUBR dnk_4_spin_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_SPINKIK,15 + WL 3,D4KB3A+FR9 + WL 1,D4KB3A+FR9 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + + LEAPATOPP 11,999,50,50,90000h,TGT_HEAD,81,90,30 + WL 2,D4KB3A+FR8 + WL 3,D4KB3A+FR7 + WL 3,D4KB3A+FR6 + WL 3,D4KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,82,26,13 ;mode,x,y,w,h + WL 4,D4KB3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-58000h,#no_hit2 + WL ANI_SET_YVEL,50000h + WL ANI_GOTO,#nopause2 +#no_hit2 + WL ANI_IFNOTSTATUS,#nopause2 + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,30000h,AM_HIT_REL +#nopause2 + WL 1,D4KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,D4KB3A+FR4 + WL 4,D4KB3A+FR3 + WL 4,D4KB3A+FR2 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR dnk_4_combo_spin_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h +; .word ANI_STARTATTACK,AT_SPINKIK,9 + WL 2,D2KB3A+FR9 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,45,50,90000h,TGT_HEAD,79,87,-30 + WL 2,D2KB3A+FR8 + WL 2,D2KB3A+FR7 + WL 2,D2KB3A+FR6 + WL 1,D2KB3A+FR5 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,87,21,20 ;mode,x,y,w,h + WL 2,D2KB3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss_combo_spin2 + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + WLW ANI_SET_ZVEL,40000h,AM_FACE_REL + WLW ANI_SET_XVEL,0h,AM_ABS + + .word ANI_CLR_BUTCOUNT + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +; .word ANI_STARTATTACK,AT_SPINKIK,16 + WL 2,D2KB3A+FR3 + WL 2,D2KB3A+FR2 + WL 2,D4KB3A+FR9 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + + WL 2,D4KB3A+FR9 + + LEAPATOPP 8,999,45,50,90000h,TGT_HEAD,81,90,30 + WL 2,D4KB3A+FR8 + WL 2,D4KB3A+FR7 + WL 1,D4KB3A+FR6 + WL 2,D4KB3A+FR5 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,82,26,13 ;mode,x,y,w,h + WL 1,D4KB3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss_combo_spin4 + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + WLW ANI_SET_ZVEL,40000h,AM_FACE_REL + WLW ANI_SET_XVEL,0h,AM_ABS + + WL 2,D4KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +; .word ANI_STARTATTACK,AT_SPINKIK,14 + WL 2,D4KB3A+FR4 + WL 1,D4KB3A+FR3 + WL 2,D4KB3A+FR2 + +;end kick 4 + + WL 1,D2KB3A+FR9 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,45,50,90000h,TGT_HEAD,79,87,-30 + WL 1,D2KB3A+FR8 + WL 1,D2KB3A+FR7 + WL 1,D2KB3A+FR6 + WL 1,D2KB3A+FR5 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,87,21,20 ;mode,x,y,w,h + WL 2,D2KB3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss_combo_spin2 + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,18000h,0h ;x,y,z vels + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + WLW ANI_SET_XVEL,0h,AM_ABS + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +; .word ANI_STARTATTACK,AT_SPINKIK,12 + WL 1,D2KB3A+FR3 + WL 2,D2KB3A+FR2 + WL 1,D4KB3A+FR9 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + + LEAPATOPP 8,999,45,50,90000h,TGT_HEAD,81,90,30 + WL 1,D4KB3A+FR8 + WL 2,D4KB3A+FR7 + WL 1,D4KB3A+FR6 + WL 1,D4KB3A+FR5 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,82,26,13 ;mode,x,y,w,h + WL 1,D4KB3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss_combo_spin4 + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,18000h,0h ;x,y,z vels + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + WLW ANI_SET_XVEL,0h,AM_ABS + + WL 1,D4KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 1,D4KB3A+FR4 + WL 2,D4KB3A+FR3 + WL 1,D4KB3A+FR2 + +;end kick 4 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,dnk_4_box_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,dnk_4_combo_hiptoss_anim + +#NEXT_CHECK_2 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK_3 + WL ANI_CHANGEANIM,dnk_4_combo_earslap_anim + +#NEXT_CHECK_3 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#miss_combo_spin4 + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,dnk_4_knee_fall_anim + +#miss_combo_spin2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 2,D2KB3A+FR3 + WL 2,D2KB3A+FR2 + WL 2,D4KB3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#miss_combo_spin4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 2,D4KB3A+FR4 + WL 2,D4KB3A+FR3 + WL 2,D4KB3A+FR2 + + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 KNEE + + SUBR dnk_2_knee_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,D2KM3D+FR1 ;D2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KNEE,22 + WL 1,D2KM3D+FR1 ;D2NM3A+FR3 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 21,999,36,30,90000h,TGT_CHEST,46,74,0 + + .word ANI_ATTACK_ON, AMODE_KNEE,5,41,48,36 ;mode,x,y,w,h + WL 3,D2NM3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hit + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL 1,D2NM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont +#no_hit + WL ANI_IFNOTSTATUS,#nodrft + WLW ANI_SET_ZVEL,0C000h,AM_ABS +#nodrft + WL 12h,D2NM3A+FR4 + .word ANI_ZERO_XZVELS +; WL 14,D2NM3A+FR4 ;8 +; WL 1,D2NM3A+FR4 ;8 +#cont + WL 4,D2NM3A+FR5 + WL 4,D2NM3A+FR6 + WL 4,D2NM3A+FR7 + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 KNEE + +;For when knee knocks you on your butt + + SUBR dnk_4_knee_fall_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_BIGKNEE,19 + WL 4,D4NM3B+FR3 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 21,999,36,20,90000h,TGT_CHEST,46,74,0 + LEAPATOPP 15,999,86,20,90000h,TGT_CHEST,26,74,0 + +;This knee will knock the guy down! + .word ANI_ATTACK_ON, AMODE_BIGKNEE,-5,41,70,36 ;mode,x,y,w,h + WL 3,D4NM3B+FR4 + .word ANI_ATTACK_OFF + + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hit3 + WL ANI_SET_YVEL,60000h +; WLW ANI_SET_ZVEL,-4000h,AM_ABS + WL 1,D4NM3B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 +#no_hit3 + WL 1ah,D4NM3B+FR4 + .word ANI_ZERO_XZVELS + WL 3,D4NM3B+FR4 ;8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 + + + SUBR dnk_4_knee_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_KNEE,25 + WL 3,D4NM3B+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4NM3B+FR3 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 21,999,36,20,90000h,TGT_CHEST,46,74,0 + + .word ANI_ATTACK_ON, AMODE_KNEE,5,41,40,36 ;mode,x,y,w,h + WL 3,D4NM3B+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hit2 + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,-4000h,AM_ABS + WL 1,D4NM3B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 +#no_hit2 + WL 12h,D4NM3B+FR4 + .word ANI_ZERO_XZVELS + WL 14,D4NM3B+FR4 ;8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS +#cont2 + WL 4,D4NM3B+FR5 + WL 4,D4NM3B+FR6 + WL 4,D4NM3B+FR7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 FLYING KICK + +#yoff1 equ 40 + + SUBR dnk_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,D3DC3C+FR1 + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL ANI_CODE,get_leap + WL ANI_IFSTATUS,#no_xvel + +;If opponent is on ground, just jump in place + WL ANI_CODE,#ckongrnd + WL ANI_IFNOTSTATUS,#norm + WL ANI_CHANGEANIM,dnk_belly_anim +#norm +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 19,999,150,65,90000h,TGT_HEAD,30,100,0 + .word ANI_STARTATTACK,AT_LEAPING,21 + + WL ANI_GOTO,#cont + +#no_xvel + .word ANI_ZERO_XZVELS + WL ANI_SET_YVEL,64000h +#cont + WL 3,D3DC3C+FR2 + + .word ANI_OFFSET,0,#yoff1,0 ;x,y,z + WL 3,D3DC3C+FR3 + WL 6,D3DC3C+FR4 + + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_FLYKICK,53,23,27,29 ;mode,x,y,w,h + WL 3,D3DC3C+FR5 + .word ANI_ATTACK_OFF + WL 4,D3DC3C+FR6 + + WL 3,D3DC3C+FR7 + WL 3,D3DC3C+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + .WORD ANI_ADD_MOVE,MOVE_C_3,3,2 + WL ANI_IFSTATUS,#got +;Missed him + WL 4,D3DC3C+FR9 + .word ANI_BOUNCE,3 + WL 4,D3DC3C+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,CALL_MISSES + WL ANI_CODE,SMALL_BOUNCE + WL 2,D3DC3C+FR9 + +#got + WL 2,D3DC3C+FR9 +#cont2 + WL 2,D3DC3C+FR9 + WL 4,D3DC3C+FR9 + WL 4,D3DC3C+FR10 + + .word ANI_XFLIP + .word ANI_OFFSET,5,0,0 ;x,y,z + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + + WL 6,D2GD2A+FR4 + WL 6,D2GD2A+FR6 + WL 4,D2GD2A+FR7 +;Check for a flip here + WL 2,D2GD2A+FR9 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D2GD2A+FR9 + WL 4,D2GD2A+FR10 + + .word ANI_SAFE_TIME,15 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#get_leap + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + +;Is wrestler backing away from opponent? + + move *a13(MOVE_DIR),a1 + move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi #mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrnz #novel + + calla get_opp_process ;closest opponent process + + move *a0(MOVE_DIR),a1 + move *a0(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi #mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrnz #novel +;Will lunge toward opponent + rets + +#mv_tbl .long 0,0,0,0,0,MOVE_RIGHT_BIT,MOVE_RIGHT_BIT + .long 0,0,MOVE_LEFT_BIT,MOVE_LEFT_BIT + +#novel + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + rets + +#ckongrnd + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + calla get_opp_process ;closest opponent process + move *a0(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #inplace + rets + +#inplace + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* BODY HIT + + SUBR dnk_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WL ANI_CODE,ckzpos + WL 4,D3AM3A+FR1 + WL 4,D3AM3A+FR2 + WL 6,D3AM3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 4,D3AM3A+FR4 + WL 6,D3AM3A+FR5 + WL 3,D3AM3A+FR6 + WL 3,D3AM3A+FR7 + WL 3,D3AM3A+FR8 + WL 1,D4ST4E+FR3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR dnk_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + + WL 4,D3AM3A+FR1 + WL 4,D3AM3A+FR2 + WL 6,D3AM3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 4,D3AM3A+FR4 + WL 6,D3AM3A+FR5 + WL 3,D3AM3A+FR6 + WL 3,D3AM3A+FR7 + WL 3,D3AM3A+FR8 +; .word ANI_OFFSET,-9,-1,0 ;x,y,z + .word ANI_OFFSET,0,-1,0 ;x,y,z + WL 1,D4SW4C+FR1 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + + .word ANI_END + + + +;Hit by a knee! + SUBR dnk_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + WL ANI_CODE,ckzpos + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + + WL 4,D3AM3A+FR1 + WL 4,D3AM3A+FR2 + WL 14,D3AM3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 4,D3AM3A+FR4 + WL 6,D3AM3A+FR5 + WL 3,D3AM3A+FR6 + WL 3,D3AM3A+FR7 + WL 3,D3AM3A+FR8 + WL 1,D4ST4E+FR3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + WL ANI_CODE,ckzpos + .word ANI_DEBRIS,400,0,6,72,0 ;%chance, tbl index, x,y,z off + + WL 4,D3AM3A+FR1 + WL 4,D3AM3A+FR2 + WL 14,D3AM3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 4,D3AM3A+FR4 + WL 6,D3AM3A+FR5 + WL 3,D3AM3A+FR6 + WL 3,D3AM3A+FR7 + WL 3,D3AM3A+FR8 +; .word ANI_OFFSET,-9,-1,0 ;x,y,z + .word ANI_OFFSET,0,-1,0 ;x,y,z + WL 1,D4SW4C+FR1 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + .word ANI_END + +;Being held by head, hit by a quick knee! + SUBR dnk_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,0,2 ;x,y,z + WL 4,D3HP3A+FR1 + WL 4,D3HP3A+FR2 + WL 4,D3HP3A+FR3 + WL 4,D3HP3A+FR4 + WL 4,D3HP3A+FR5 + .word ANI_WAITHITGND + + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,dnk_fall_back_anim + .word ANI_END + +#nodead + + + + .ref dnk_3_head_held_anim + + WL ANI_CHANGEANIM,dnk_3_head_held_anim + + .word ANI_END + +#***************************************************************************** +* +* FALL BACK + + SUBR dnk_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,70000h + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[96,-09] ;Y,X of head + WL 3,D3UC3A+FR1 + WWL ANI_SETLONG,DEBRIS_X,[95,-32] ;Y,X of head + WL 3,D3UC3A+FR2 + WWL ANI_SETLONG,DEBRIS_X,[91,-41] ;Y,X of head + WL 3,D3UC3A+FR3 + .word ANI_OFFSET,0,50,0 ;x,y,z + + WWL ANI_SETLONG,DEBRIS_X,[36,-45] ;Y,X of head + WL 3,D3UC3A+FR4 + WWL ANI_SETLONG,DEBRIS_X,[29,-48] ;Y,X of head + WL 2,D3UC3A+FR5 + WWL ANI_SETLONG,DEBRIS_X,[19,-48] ;Y,X of head + WL 2,D3UC3A+FR6 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_FRICTION,3000h + WWL ANI_SETLONG,DEBRIS_X,[05,-47] ;Y,X of head + WL 2,D3UC3A+FR8 + .word ANI_BOUNCE,5 + WL 1,D3UC3A+FR8 + WWL ANI_SETLONG,DEBRIS_X,[09,-41] ;Y,X of head + WL 5,D3UC3A+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,[07,-48] ;Y,X of head + WL 3,D3UC3A+FR10 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 3,D3UC3A+FR11 + + .word ANI_XFLIP + WL 1,D3SA3A+FR9 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + +;Stay on ground for awhile... Maybe this will be table driven + WL 6,D3SA3A+FR9 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + + SUBR ckzpos + +;If falling near the front or rear ropes, slide toward middle +;of the ring to allow opponent to walk around him. + move *a13(OBJ_ZPOSINT),a0 + cmpi 510h,a0 + jrgt #slideup + cmpi 442h,a0 + jrgt #ok + +;slide down scrn + movi 24000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets +#slideup + movi -24000h,a0 + move a0,*a13(OBJ_ZVEL),L +#ok + rets + +#* FALL BACK + + SUBR dnk_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,20000h + WL ANI_CODE,ckzpos + + WL 3,D3UC3A+FR1 + WL 3,D3UC3A+FR2 + WL 3,D3UC3A+FR3 + .word ANI_OFFSET,0,50,0 ;x,y,z + + WL 3,D3UC3A+FR4 + WL 2,D3UC3A+FR5 + WL 2,D3UC3A+FR6 +; WL 2,D3UC3A+FR7 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,200,1,-8,12,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + + .word ANI_OFFSET,-25,0,0 ;x,y,z + WL 3,D3FD3E+FR2 + WL 3,D3FD3E+FR3 + WL 3,D3FD3E+FR4 + WL 3,D3FD3E+FR5 + WL 3,D3FD3E+FR6 + WL 3,D3FD3E+FR7 + WL 3,D3FD3E+FR8 + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-22,0,0 ;x,y,z + + WL 4,D3GS3X+FR8 + WL 4,D3GS3X+FR9 + WL 4,D3GS3X+FR10 +;Stay on ground for awhile... Maybe this will be table driven + WL 20,D3GS3X+FR8 ;Face down +; WL 3,D3SA3A+FR9 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR dnk_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + + WL 3,D3UC3A+FR1 + WL 3,D3UC3A+FR2 + WL 3,D3UC3A+FR3 + .word ANI_OFFSET,0,50,0 ;x,y,z + + WL 3,D3UC3A+FR4 + WL 2,D3UC3A+FR5 + WL 2,D3UC3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,300,1,-8,12,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 +; .word ANI_FRICTION,3000h + WL 2,D3UC3A+FR8 +; .word ANI_BOUNCE,5 + WL 1,D3UC3A+FR8 + WL 5,D3UC3A+FR9 +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_ZEROVELS + WL 3,D3UC3A+FR10 + WL 3,D3UC3A+FR11 + + .word ANI_XFLIP + WL 1,D3SA3A+FR9 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 3,D3SA3A+FR9 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + + +#***************************************************************************** + +;chooses 2 or 4 right away + + SUBR dnk_faceup_getup_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + WL ANI_CODE,choose_2or4 + WL ANI_IFNOTSTATUS,dnk_2_faceup_getup_anim + WL ANI_CHANGEANIM,dnk_4_faceup_getup_anim + + SUBR dnk_4_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_CLR_STARS + .word ANI_CLR_DAMAGE + + WL 1,D3SA3A+FR9 + WL 3,D3GU4A+FR2 + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,30 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_CLR_STARS + .word ANI_CLR_DAMAGE + + +; WL 1,D3SA3A+FR9 + WL 2,D3RL1B+FR2 + WL 2,D3RL1B+FR3 + WL 2,D3RL1B+FR4 + WL 2,D3RL1B+FR5 + WL 2,D3RL1B+FR6 + + WL 6,D2GD2A+FR4 + WL 6,D2GD2A+FR6 + WL 4,D2GD2A+FR7 +;Check for a flip here + WL 2,D2GD2A+FR9 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D2GD2A+FR9 + WL 4,D2GD2A+FR10 + + .word ANI_SAFE_TIME,30 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + +#* + + .IF 0 + +;Check for push back on all face hits! +;If against ropes, do a push sequence from proper angle 2/4 + +trypush + + rets + +;We need to do something similar when wrestler is trapped up against +;the outside gates! + + move *a13(INRING),a0 + jrnz #nopush + + move *a13(CLOSEST_XDIST),a0 + cmpi 95,a0 + jrgt #nopush + + movi 3*TSEC,a0 + calla tally_damage + cmpi 5,a0 + jrlt #nopush +;Check to see if I'm against ropes + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi vln_right_rope,a6 + calla calc_line_x + move *a13(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 90,a0 + jrgt #nopush + move *a13(FACING_DIR),a1 + btst MOVE_LEFT,a1 + jrz #nopush + jruc #push +#onlft + movi vln_left_rope,a6 + calla calc_line_x + move *a13(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 90,a0 + jrgt #nopush + move *a13(FACING_DIR),a1 + btst MOVE_RIGHT,a1 + jrz #nopush + +#push +;Cause wrestler to jump into proper push sequence + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + movi 800,a0 + calla RNDPER + jrhi #out + calla clear_damage_log +#out + rets + + .ENDIF + + + SUBR set_move_dir + + move *a13(FACING_DIR),a1 + btst MOVE_UP_BIT,a1 + jrz #nopush + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets +#nopush + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + + +#***************************************************************************** +* +* #4 HEAD HIT + + SUBR dnk_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + +; WL ANI_CODE,#tryblood + + WL 3,D3AH3B+FR1 + WL 3,D3AH3B+FR2 + WL 3,D3AH3B+FR3 + WL 2,D3AH3B+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;#tryblood +; move a13,a11 +; CREATE0 react_bloodnguts_gen +; .ref react_bloodnguts_gen +; rets + +#* #2 HEAD HIT + + SUBR dnk_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,D2AH2A+FR1 + WL 4,D2AH2A+FR2 + WL 4,D2AH2A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#* #4 HEAD HIT - From spin kick & backhand slap + + SUBR dnk_4_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,D3AH3B+FR1 + .word ANI_DEBRIS,400,2,-23,102,0 ;%chance, tbl index, x,y,z off + WL 3,D3AH3B+FR2 + .word ANI_WAITHITGND + WL 4,D3AH3B+FR3 + .word ANI_ZEROVELS + WL 4,D3AH3B+FR5 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_head_hit4_anim +;From earslap + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,50000h + + WL 4,D3AH3B+FR2 + WL 4,D3AH3B+FR3 + WL 6,D3AH3B+FR5 + .word ANI_WAITHITGND + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#* #2 HEAD HIT - From spin kick & backhand slap + + SUBR dnk_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,D2AH2A+FR1 + .word ANI_DEBRIS,300,2,-23,102,0 ;%chance, tbl index, x,y,z off + WL 4,D2AH2A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,D2AH2A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HEAD HIT2 (HANDS ON FACE) + + SUBR dnk_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + .word ANI_FRICTION,3000h + WL 4,D3AE3B+FR1 + WL 4,D3AE3B+FR2 + WL 4,D3AE3B+FR3 + WL 4,D3AE3B+FR4 + WL 4,D3AE3B+FR5 + WL 4,D3AE3B+FR6 + WL 4,D3AE3B+FR7 + WL 4,D3AE3B+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#* + + SUBR dnk_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,28000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_FRICTION,3000h +; WL 4,D3AE3B+FR1 + WL 4,D3AE3B+FR2 + WL 4,D3AE3B+FR3 + WL 18,D3AE3B+FR4 + WL 2,D3AE3B+FR5 + .word ANI_ZEROVELS + WL 2,D3AE3B+FR5 + WL 4,D3AE3B+FR6 + WL 4,D3AE3B+FR7 + WL 4,D3AE3B+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* HEAD HIT2 (ENDS IN DIZZY) + + SUBR dnk_head_dead_dizzy_anim +;This is a head hit dizzy seq which causes the player to fall down after a time + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_DIZZY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 4,D3AE3B+FR1 + WL 4,D3AE3B+FR2 + WL 4,D3AE3B+FR3 + WL 4,D3AE3B+FR4 + WL 4,D3AE3B+FR5 + WL 4,D3AE3B+FR6 + WL 4,D3AE3B+FR7 + WL 4,D3AE3B+FR8 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + .word ANI_END + +* HEAD HIT2 (ENDS IN DIZZY) + + SUBR dnk_head_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 4,D3AE3B+FR1 + WL 4,D3AE3B+FR2 + WL 4,D3AE3B+FR3 + WL 4,D3AE3B+FR4 + WL 4,D3AE3B+FR5 + WL 4,D3AE3B+FR6 + WL 4,D3AE3B+FR7 + WL 4,D3AE3B+FR8 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + .word ANI_END + +#***************************************************************************** +* +* #2,4 FLYING CLOTHESLINE + + SUBR dnk_fly_cline_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_LEAPING,9 + WL 3,D3RC3A+FR1 + .word ANI_OFFSET,5,0,0 ;x,y,z + WL 3,D3RC3A+FR2 + + WL ANI_SET_YVEL,64000h + WLW ANI_SET_XVEL,60000h,AM_FACE_REL + .word ANI_OFFSET,9,45,0 ;x,y,z + WL 3,D3RC3A+FR3 + .word ANI_ATTACK_ON, AMODE_CLINE,25,6,23,37 ;mode,x,y,w,h ;31 + WL 3,D3RC3A+FR4 + .WORD ANI_ADD_MOVE,MOVE_C_4,3,2 + WL 3,D3RC3A+FR5 + WL 3,D3RC3A+FR6 + WL 3,D3RC3A+FR7 + WL 6,D3RC3A+FR8 + .word ANI_ATTACK_OFF + WL 3,D3RC3A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + .word ANI_FRICTION,3000h + .word ANI_BOUNCE,4 + + WL ANI_CODE,HIT_THE_MAT + WL 3,D3RC3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE +; .word ANI_ZEROVELS + WL 15,D3RC3A+FR9 + + WL ANI_IFSTATUS,#gothim +;He missed, have him stay on ground for awhile! + WL ANI_CODE,CALL_MISSES + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;Do a little damage when missing! +; .word ANI_DAMAGE,2 ;Damage myself +; WL 30,D3RC3A+FR9 + WL 3,D3RC3A+FR9 +;#done + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END +#gothim + + WL 3,D3RL1B+FR7 +; WL 3,D3RL1B+FR8 + WL 3,D3RL1B+FR9 +; WL 3,D3RL1B+FR10 + WL 3,D3RL1B+FR11 + +;Perhaps we should turn off collisions when getting up!? +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP+MODE_NOCOLLIS + + WL 3,D3GU4A+FR2 + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR ck_dizzy + + calla check_dizzy + jrz #not_dizzy + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#not_dizzy + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* #2,4 BELLY FLOP FROM RUNNING MODE ONTO FALLEN OPPONENT + + SUBR dnk_belly_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,get_leap + WL ANI_IFNOTSTATUS,#normal + + WL ANI_CODE,#close + WL ANI_IFSTATUS,#no_xvel + +#normal + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,200,100,90,90000h,TGT_GROIN,0,0,-10 + .word ANI_STARTATTACK,AT_BUTTSTOMP,30 + + WL ANI_GOTO,#cont + +#no_xvel + .word ANI_ZERO_XZVELS + WL ANI_SET_YVEL,74000h + + WL 5,D4JD4A+FR4 + .word ANI_OFFSET,0,45,0 ;x,y,z + WL 5,D4FM4A+FR5 + + .word ANI_ATTACK_ON, AMODE_BUTTSTOMP,-18,4,50,23 ;mode,x,y,w,h + WL 1,D4FM4A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + +#miss WL ANI_CODE,shake_all_ropes + .word ANI_BOUNCE,5 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,15 + WL 5,D4FM4A+FR7 + + WL 1,D4FM4A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + + WL ANI_GOTO,#cont4 + +#cont WL 5,D4JD4A+FR4 + .word ANI_OFFSET,0,45,0 ;x,y,z + WL 5,D4FM4A+FR5 + + .word ANI_ATTACK_ON, AMODE_BUTTSTOMP,-18,4,50,23 ;mode,x,y,w,h + WL 1,D4FM4A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#miss + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,15 + + + WL 5,D4FM4A+FR7 + +#cont4 WL 8,D4FM4A+FR9 + + .word ANI_XFLIP + .word ANI_FACEDOWN + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,0 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#close + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + calla get_opp_process ;closest opponent process + move *a0(OBJ_XPOSINT),a0 + MOVE *a13(OBJ_XPOSINT),a14 + sub a0,a14 + abs a14 + cmpi 30h,a14 + jrgt #inplace + rets + +#inplace + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* #2 ELBOW DROP + + SUBR dnk_2_lbowdrop_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + WL 3,D2PJ2A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_LBDROP,19 + WL 3,D2PJ2A+FR4 + + .word ANI_OFFSET,0,50,0 ;x,y,z + + WL ANI_CODE,#set_target + WL ANI_CODE,tgt_ground + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,72,48h,90000h,TGT_USER,-3,0,-30 + WL ANI_CODE,#zero_x + + WL 3,D2PJ2A+FR6 + WL 3,D2PJ2A+FR8 + WL 10,D2PJ2A+FR10 + .word ANI_WAITHITGND + + .word ANI_ZERO_XZVELS +;Perhaps even shake ropes + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,18 + +; .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,-15,7,10,30,21,40 ;mode,x,y,z,w,h,d + .word ANI_ATTACK_ON, AMODE_LBOWDROP,-15,7,30,21 ;mode,x,y,z,w,h,d + + WL 2,D2PJ2A+FR11 + WL 2,D2PJ2A+FR12 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim2 + .word ANI_BOUNCE,3 + WL ANI_CODE,HIT_THE_MAT +; WL ANI_CODE,SMALL_BOUNCE + WL ANI_CODE,CALL_MISSES + +;He missed, have him stay on ground for awhile! + WL 40,D2PJ2A+FR12 + .word ANI_WAITHITGND + WL ANI_GOTO,#cont +#gothim2 + .word ANI_BOUNCE,4 + WL ANI_CODE,HIT_THE_MAT + WL 15,D2PJ2A+FR12 + +#cont WL 3,D5GD3A+FR5 + + WL 3,D5GD3A+FR6 + WL 3,D5GD3A+FR7 + WL 3,D5GD3A+FR8 + WL 3,D5GD3A+FR9 + WL 3,D5GD3A+FR10 + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +; SUBR dnk_2_tlbowdrop_anim +; +;;Jump in air and land on opponent with fist. Always goes to chest. +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; WL 3,D2PJ2C+FR1 +; WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim +; +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 26,999,72,48h,90000h,TGT_CHEST,-35,-22,-2 +; +; WL 3,D2PJ2C+FR2 +; .word ANI_OFFSET,0,20,0 ;x,y,z +; WL 18h,D2PJ2C+FR4 +; .word ANI_WAITHITGND +; .word ANI_ZERO_XZVELS +; WL 3,D2PJ2C+FR6 +; WL 1,D2PJ2C+FR10 +; +; .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,18,1,10,21,34,40 ;mode,x,y,z,w,h,d +; WL 3,D2PJ2C+FR10 +; .word ANI_ATTACK_OFF +; +; WL ANI_IFSTATUS,#gothimt2 +; WL ANI_GOTO,#miss +; +;#gothimt2 +; +;;Do SHAKER for Yokozuna only? +; .word ANI_SHAKER,18 +; +; WL 4,D2PJ2C+FR10 +; WL ANI_CODE,#get_off +; WL 4,D2PJ2C+FR12 +;#miss +; WL 4,D2PJ2C+FR12 +; WL 1,D2GD2A+FR9 +; .word ANI_WAITHITGND +; .word ANI_ZERO_XZVELS +; WL 3,D2GD2A+FR9 +; +; .word ANI_FACEUP +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END + + +* #4 ELBOW DROP + + SUBR dnk_4_lbowdrop_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + WL 3,D4PJ4A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_LBDROP,19 + WL 3,D4PJ4A+FR3 + + .word ANI_OFFSET,0,31h,0 ;x,y,z + + WL ANI_CODE,#set_target + WL ANI_CODE,tgt_ground + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,72,48h,90000h,TGT_USER,-3,0,30 + + WL ANI_CODE,#zero_x + + WL 3,D4PJ4A+FR4 + WL 3,D4PJ4A+FR6 + WL 10,D4PJ4A+FR7 + .word ANI_WAITHITGND +#land + .word ANI_ZERO_XZVELS +;Perhaps even shake ropes + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,18 + +; .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,-6,22,16,25,27,30 ;mode,x,y,z,w,h,d + .word ANI_ATTACK_ON, AMODE_LBOWDROP,-6,0,25,27 ;mode,x,y,z,w,h,d + + WL 1,D4PJ4A+FR10 + .word ANI_WAITHITGND + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim4 + .word ANI_BOUNCE,3 + WL ANI_CODE,HIT_THE_MAT + +;He missed, have him stay on ground for awhile! + + WL ANI_CODE,CALL_MISSES + WL 40,D4PJ4A+FR10 + .word ANI_WAITHITGND + WL ANI_GOTO,#land2 + +#gothim4 + .word ANI_BOUNCE,4 + WL ANI_CODE,HIT_THE_MAT + WL 15,D4PJ4A+FR10 +#land2 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_OFFSET,10,0,0 ;x,y,z + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + + WL 4,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,0 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +; SUBR dnk_4_tlbowdrop_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; .word ANI_SETSPEED,100h +; +; WL 3,D4PJ4A+FR2 +; WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim +; WL 3,D4PJ4A+FR3 +; +; .word ANI_OFFSET,0,31h,0 ;x,y,z +; +; WL ANI_CODE,#set_target +; +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 28,999,72,48h,90000h,TGT_USER,-3,-23,30 +; +; WL ANI_CODE,#zero_x +; +; WL 3,D4PJ4A+FR4 +; WL 3,D4PJ4A+FR6 +; WL 10+12,D4PJ4A+FR7 +; WL ANI_GOTO,#land +; +;Elbow drop #4 from turnbuckle + SUBR dnk_4_blbowdrop_anim + +;If jumping toward an in ring opponent & near the edge of ring, turn on +;the confine bit! + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOCOLLIS|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_OFFSET,11,4,0 ;x,y,z + + WL 2,D4PJ4A+FR2 + WL 2,D4PJ4A+FR3 + + .word ANI_GRAVITY_ON + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_OFFSET,0,31h,0 ;x,y,z + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 31,190,190,190,90000h,TGT_CHEST,-3,-3,50 + + .word ANI_SHAKECORNER ;Shake corner ropes + +;Check x vel to make sure we aren't going to land on ropes! + WL ANI_CODE,check_xvel + + WL 3,D4PJ4A+FR4 + WL 3,D4PJ4A+FR6 + +;Start confining wrestler + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS|MODE_OVERLAP + + WL 10,D4PJ4A+FR7 + .word ANI_ATTACK_ON_Z, AMODE_BLBOWDROP,-6,22,16,25,27,30 ;mode,x,y,z,w,h,d + WL 20,D4PJ4A+FR7 + + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ZERO_XZVELS +;Perhaps even shake ropes + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + + WL 1,D4PJ4A+FR10 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_9,3,1 + WL ANI_IFSTATUS,#gothimb + .word ANI_BOUNCE,4 ;Bigger bounce + WL ANI_CODE,HIT_THE_MAT +; WL ANI_CODE,SMALL_BOUNCE + +;He missed, have him stay on ground for awhile! + + WL ANI_CODE,CALL_MISSES + WL 25,D4PJ4A+FR10 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL ANI_GOTO,#tag + + +#gothimb + .word ANI_BOUNCE,4 + WL ANI_CODE,HIT_THE_MAT + WL 15,D4PJ4A+FR10 + .word ANI_WAITHITGND +#tag .word ANI_XFLIP + .word ANI_OFFSET,-10,0,0 ;x,y,z + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + + WL 4,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,0 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +* #4 HAMMER POUND OF FALLEN OPPONENT + + SUBR dnk_4_hammer_anim +;Fix attack boxes! No z + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_CLR_BUTCOUNT + WL 3,D4HM4A+FR1 + +;This assumes this is triggered by punch button! + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HAMMER1,10 + WL 3,D4HM4A+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 7,190,90,50,90000h,TGT_GROIN,95,82,13h ;13 +; LEAPATOPP 9,190,90,50,90000h,TGT_GROIN,50h,30h,23h ;13 + + .word ANI_SET_RPTCOUNT,4 ;5 times +; .word ANI_CLR_BUTCOUNT + + WL 7,D4HM4A+FR3 ;16 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,D4HM4A+FR4 + WL 3,D4HM4A+FR5 + WL 3,D4HM4A+FR6 + .word ANI_ATTACK_ON, AMODE_HAMMER,31,3,88,73 ;mode,x,y,w,h + WL 3,D4HM4A+FR7 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_2,3,1 + WL ANI_IFNOTSTATUS,#tagmiss + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;He got him, shake screen + .word ANI_DAMAGEOPP,D_HAMMER1 ;First hammer hit (+ table) + +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,30 + .word ANI_SHAKER,25 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#missedb + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_hammer + +#missedb +#tagmiss + + WL 3,D4HM4A+FR8 + WL 3,D4HM4A+FR9 + WL 3,D4HM4A+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#dnk_quick_hammer + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_HAMMER1,27 + WL 3,D4HM4A+FR8 + WL 3,D4HM4A+FR9 + WL 3,D4HM4A+FR10 + WL 3,D4HM4A+FR1 + WL 3,D4HM4A+FR2 + WL 3,D4HM4A+FR3 + WL 3,D4HM4A+FR4 + WL 3,D4HM4A+FR5 + WL 3,D4HM4A+FR6 + .word ANI_ATTACK_ON, AMODE_HAMMER,31,3,88,73 ;mode,x,y,w,h + WL 3,D4HM4A+FR7 + .word ANI_ATTACK_OFF + +; .WORD ANI_ADD_MOVE,MOVE_C_2,3,1 + WL ANI_IFNOTSTATUS,#tagmiss + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,30 + + .word ANI_SHAKER,25 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,2,#failed + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_hammer +#failed + + WL 3,D4HM4A+FR8 + WL 3,D4HM4A+FR9 + WL 3,D4HM4A+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +dnk_combo_hammer_anim + .word ANI_SET_RPTCOUNT,3 ;5 times + .word ANI_IMMOBILIZE,30 +; .word ANI_STARTATTACK,AT_HAMMER1,23 + WL 4,D4HM4A+FR1 + WL 4,D4HM4A+FR2 + WL 4,D4HM4A+FR3 ;16 + WL 3,D4HM4A+FR4 + WL 4,D4HM4A+FR5 + WL 4,D4HM4A+FR6 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HAMMER,31,3,88,73 ;mode,x,y,w,h + WL 4,D4HM4A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed2 + .WORD ANI_INC_COMBO + .word ANI_IMMOBILIZE,30 + .word ANI_SHAKER,25 + +dnk_repeat_combo_hammer_anim + .word ANI_CLR_BUTCOUNT +; .word ANI_STARTATTACK,AT_HAMMER1,15 + WL 2,D4HM4A+FR8 + WL 1,D4HM4A+FR9 + WL 2,D4HM4A+FR10 + WL 2,D4HM4A+FR1 + WL 1,D4HM4A+FR2 + WL 2,D4HM4A+FR3 + WL 2,D4HM4A+FR4 + WL 1,D4HM4A+FR5 + WL 2,D4HM4A+FR6 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HAMMER,31,3,88,73 ;mode,x,y,w,h + WL 2,D4HM4A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed2 + .WORD ANI_INC_COMBO + +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,30 + + .word ANI_SHAKER,25 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,2,#missed2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,dnk_repeat_combo_hammer_anim + +#missed2 + WL ANI_CODE,DO_COMBO_MESS + WL 3,D4HM4A+FR8 + WL 3,D4HM4A+FR9 + WL 3,D4HM4A+FR10 + .WORD ANI_CLEAR_COMBO + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + +#set_target + + calla get_opp_process + move a0,a11 + + move *a13(CLOSEST_XDIST),a0 + cmpi >40,a0 + jrlt #drop + +;We are to side of fallen opponent, we must float toward +;his head or his knees + +;Take into account my flip as well as my opponents flip! + move *a13(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a11(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrnz #head + + movi TGT_KNEES,a0 + calla set_target_offsets + rets + +#head + movi TGT_HEAD,a0 + calla set_target_offsets + rets + +#drop +;Just drop straight down + movi TGT_CHEST,a0 + calla set_target_offsets + rets + +#zero_x + move *a13(CLOSEST_XDIST),a0 + cmpi >40,a0 + jrgt #ok ;Is he to the side? + +;Don't float if dropping straight down + clr a0 + move a0,*a13(OBJ_XVEL),L +#ok rets + +#get_off +;Get off from fallen opponent + movi [3,0],a0 + move a0,*a13(OBJ_ZVEL),L + movi [2,0],a0 + move a0,*a13(OBJ_YVEL),L + rets + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR dnk_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,D3MP3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_STOMP,15 + WL ANI_CODE,#set_target + WL ANI_CODE,tgt_ground + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 15,999,40h,50,90000h,TGT_USER,20,0,-30 + + WL 3,D3MP3A+FR2 + WL 3,D3MP3A+FR3 + WL 3,D3MP3A+FR4 +;#cont + WL 3,D3MP3A+FR5 + WL 3,D3MP3A+FR6 + + .word ANI_ATTACK_ON_Z, AMODE_STOMP,7,7,-20,20,33,30 ;mode,x,y,z,w,h,d + .word ANI_ZERO_XZVELS + + WL 3+4,D3MP3A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim + WL 3,D3MP3A+FR8 + .word ANI_WAITHITGND + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gothim + WL ANI_CODE,#get_off + WL 5,D3MP3A+FR8 + .word ANI_WAITHITGND + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +;;Turbo #2 stomp +; SUBR dnk_2_tstomp_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +; WL 3,D3MP3A+FR1 +; +; WL ANI_CODE,#set_target +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 1ah,999,60h,50h,90000h,TGT_USER,20,13,-30 +; +; WL 3,D3MP3A+FR2 +; WL 3,D3MP3A+FR3 +; WL 10h,D3MP3A+FR4 +; WL ANI_GOTO,#cont + +* #4 STOMP ON FALLEN OPPONENT + + SUBR dnk_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,D4MP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL ANI_CODE,#set_target + WL ANI_CODE,tgt_ground + .word ANI_STARTATTACK,AT_STOMP,15 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 15,999,40h,50h,90000h,TGT_USER,32,0,30 + + WL 3,D4MP4D+FR2 + WL 3,D4MP4D+FR3 + WL 9,D4MP4D+FR4 + +;#cont4 +; WL 3,D4MP4D+FR5 + +; .word ANI_ATTACK_ON_Z, AMODE_STOMP,2,1,40,19,27,30 ;mode,x,y,z,w,h,d + .word ANI_ATTACK_ON_Z, AMODE_STOMP,22,8,40,35,22,30 ;mode,x,y,z,w,h,d + + .word ANI_ZERO_XZVELS + + WL 7,D4MP4D+FR6 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim4 + WL 4,D4MP4D+FR7 + .word ANI_WAITHITGND + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#gothim4 + WL ANI_CODE,#get_off4 + WL 5,D4MP4D+FR7 + .word ANI_WAITHITGND + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +;Turbo #4 stomp +; SUBR dnk_4_tstomp_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +; WL 3,D4MP4D+FR1 +; WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim +; +; WL ANI_CODE,#set_target +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 30,999,40h,50h,90000h,TGT_USER,32,10,30 +; +; WL 3,D4MP4D+FR2 +; WL 3,D4MP4D+FR3 +; WL 18h,D4MP4D+FR4 +; WL ANI_GOTO,#cont4 + + +;Stomp #4 from top of turnbuckle + SUBR dnk_4_bstomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_XFLIP ;make an ANI_FACEOUT and ANI_FACEIN + + WL 4,D4JD4A+FR1 + WL 4,D4JD4A+FR2 + + .word ANI_GRAVITY_ON + .word ANI_SETPLYRMODE,MODE_INAIR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16+20,190,190,190,90000h,TGT_CHEST,39+8,7+4,20 + .word ANI_STARTATTACK,AT_LEAPING,36 + + .word ANI_SHAKECORNER ;Shake corner ropes + +;Check x vel to make sure we aren't going to land on ropes! + WL ANI_CODE,check_xvel + + .word ANI_OFFSET,8,4,0 ;x,y,z + WL ANI_IFNOTSTATUS,#nooff + .word ANI_OFFSET,-16,0,0 ;x,y,z + +#nooff + WL 3,D4MP4D+FR2 + WL 3,D4MP4D+FR3 + + WL 15,D4MP4D+FR4 + +;Start confining wrestler + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS|MODE_OVERLAP + + WL 1eh-15,D4MP4D+FR4 + + .word ANI_ATTACK_ON_Z, AMODE_BSTOMP,29,7,0,20,16,30 ;mode,x,y,z,w,h,d + WL 3,D4MP4D+FR6 + + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ZERO_XZVELS + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,shake_all_ropes + +; WL 1,D4MP4D+FR7 + + .word ANI_BOUNCE,6 + + WL ANI_CODE,HIT_THE_MAT + + WL 6,D4MP4D+FR6 + .word ANI_ATTACK_OFF + + WL 9,D4MP4D+FR7 + + .WORD ANI_ADD_MOVE,MOVE_C_9,3,1 + WL ANI_IFSTATUS,#gothimb4 + WL 3,D4MP4D+FR7 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR check_xvel + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + ;don't mess with anything if opponent is ouside the ring + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(INRING),a0,W + jrnz #ok + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID,a0 + jrgt #onrgt + +;Check to make sure opponent is in ring! + move *a13(OBJ_XVEL),a0,L + jrnn #ok +; cmpi [0,8000h],a0 +; jrge #ok +;Will land on ropes + movi [1,8000h],a0 + move a0,*a13(OBJ_XVEL),L + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets +#onrgt +;Check to make sure opponent is in ring! + move *a13(OBJ_XVEL),a0,L + jrn #ok +; cmpi -[0,8000h],a0 +; jrle #ok +;Will land on ropes + movi -[1,8000h],a0 + move a0,*a13(OBJ_XVEL),L + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) +#ok + rets + +#gothimb4 + WLW ANI_SET_ZVEL,-50000h,AM_ABS +; WL ANI_CODE,#getoff4 + + WL 5,D4MP4D+FR7 + .word ANI_WAITHITGND + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + +; SUBR dnk_4_run_stomp_anim +;;Stomp fallen opponent from running mode +; +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +;; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +; WL 3,D4MP4D+FR1 +; +; WL ANI_CODE,get_leap +; WL ANI_IFSTATUS,#no_xvel3 +; +;; WL ANI_CODE,#set_target +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 30,999,0c0h,50h,90000h,TGT_GROIN,32,10,30 +; WL ANI_GOTO,#cont3 +; +;#no_xvel3 +; .word ANI_ZEROVELS +; WL ANI_SET_YVEL,44000h +;#cont3 +; +; WL 3,D4MP4D+FR2 +; WL 3,D4MP4D+FR3 +; WL 20,D4MP4D+FR4 +; .word ANI_ATTACK_ON_Z, AMODE_STOMP,22,8,40,35,22,30 ;mode,x,y,z,w,h,d +; +; WL 7,D4MP4D+FR6 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS +; .word ANI_ATTACK_OFF +; +; WL ANI_IFSTATUS,#ahit4 +; WL 4,D4MP4D+FR7 +; .word ANI_FACEDOWN +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +;#ahit4 +; WL ANI_CODE,#get_off4 +; WL 5,D4MP4D+FR7 +; +; .word ANI_FACEDOWN +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +; +; SUBR dnk_2_run_stomp_anim +;;Stomp fallen opponent from running mode +; +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +;; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +; WL 3,D3MP3A+FR1 +; +; WL ANI_CODE,get_leap +; WL ANI_IFSTATUS,#no_xvel2 +; +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 30,999,0c0h,50h,90000h,TGT_GROIN,20,13,-30 +; +; WL ANI_GOTO,#cont2 +; +;#no_xvel2 +; .word ANI_ZEROVELS +; WL ANI_SET_YVEL,44000h +;#cont2 +; +; +; WL 3,D3MP3A+FR2 +; WL 3,D3MP3A+FR3 +; WL 20,D3MP3A+FR4 +; WL 3,D3MP3A+FR5 +; WL 3,D3MP3A+FR6 +; +; .word ANI_ATTACK_ON_Z, AMODE_STOMP,7,7,-20,20,33,30 ;mode,x,y,z,w,h,d +; +; WL 3+4,D3MP3A+FR7 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS +; .word ANI_ATTACK_OFF +; +; WL ANI_IFSTATUS,#ahit +; WL 3,D3MP3A+FR8 +; .word ANI_FACEUP +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +;#ahit +; WL ANI_CODE,#get_off +; WL 5,D3MP3A+FR8 +; .word ANI_FACEUP +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END + +#set_target + + calla get_opp_process + move a0,a11 + + move a13,a0 + calla wres_get_stick_val_cur + btst MOVE_LEFT_BIT,a0 + jrnz #lft + btst MOVE_RIGHT_BIT,a0 + jrnz #rgt +;No stick +;Randomize between head/chest/groin/knees +; movk 3,a0 +; calla RNDRNG0 +; X16 a0 +; addi #targets,a0 +; move *a0,a0 + + movi TGT_CHEST,a0 + + calla set_target_offsets + rets + +;Go to chest or if opponent is flipped, go to head! +#lft + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #chest +#head + movi TGT_HEAD,a0 + calla set_target_offsets + rets + +;Go to head or if opponent is flipped, go to chest! +#rgt + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #head +#chest + movi TGT_KNEES,a0 + calla set_target_offsets + rets + +; or set *a13(TGT_XOFF), *a13(TGT_YOFF) & *a13(TGT_ZOFF) manually + +#targets + .word TGT_HEAD ;0 + .word TGT_CHEST ;1 + .word TGT_GROIN ;2 + .word TGT_KNEES ;3 + + +#get_off + movi [4,0],a0 + move a0,*a13(OBJ_ZVEL),L + movi [2,0],a0 + move a0,*a13(OBJ_YVEL),L + rets + +#get_off4 + movi -[2,0],a0 + move a0,*a13(OBJ_ZVEL),L + movi [1,0],a0 + move a0,*a13(OBJ_YVEL),L + rets + + +#***************************************************************************** +* + + SUBR dnk_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_XFLIP + + WL 2,D3GU4A+FR9 + WL 2,D3GU4A+FR7 + WL 2,D3GU4A+FR5 + WL ANI_SET_YVEL,39000h + WL 2,D3SA3A+FR2 + .word ANI_DEBRIS,400,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,D3SA3A+FR3 + WL 6,D3SA3A+FR4 + WL 3,D3SA3A+FR5 + WL 3,D3SA3A+FR7 + WL 2,D3SA3A+FR8 + WL 6,D3SA3A+FR9 + + +;FIX!!! Add to other wrestlers + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + +;#done + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR dnk_hitonground_xflip_anim + .word ANI_XFLIP + ;fall through + + SUBR dnk_hitonground_anim + +;We need to take stars away on hits... + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,39000h + + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 2,D3SA3A+FR2 + WL 3,D3SA3A+FR3 + WL 6,D3SA3A+FR4 + WL 3,D3SA3A+FR5 + WL 3,D3SA3A+FR7 + WL 2,D3SA3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR dnk_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,4000h ;27000 + .word ANI_OFFSET,-8+13,-3+4,-16 ;x,y,z + WL 5,D2CT2A+FR2 + .word ANI_OFFSET,0,15h,0 ;x,y,z + WL 5,D2CT2A+FR7 + .word ANI_SHAKEROPES,1 + .word ANI_OFFSET,4,4,0 ;x,y,z + WL 5,D2CT2A+FR9 + .word ANI_OFFSET,6,14,0 ;x,y,z + WL 5,D2CT2A+FR12 + .word ANI_ZEROVELS + + .word ANI_OFFSET,0,6,0 ;x,y,z + WL 5,D2CT2B+FR2 + .word ANI_OFFSET,10,18h,0 ;x,y,z + WL 5,D2CT2B+FR4 + .word ANI_OFFSET,-2,0dh,0 ;x,y,z + WL 5,D2CT2B+FR6 + + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + + .word ANI_OFFSET,2,0,0 ;x,y,z + WL ANI_CODE,#flip +#repeat + WL 5,D2CT2C+FR1 + WL ANI_CODE,#flip + WL 5,D2CT2C+FR3 + WL ANI_CODE,#flip + WL 5,D2CT2C+FR5 + WL ANI_CODE,#flip + WL 5,D2CT2C+FR7 + WL ANI_CODE,#flip + WL 5,D2CT2C+FR9 + WL ANI_CODE,#flip + WL 5,D2CT2C+FR11 + WL ANI_CODE,#flip + WL 5,D2CT2C+FR13 + WL ANI_CODE,#flip + WL 5,D2CT2C+FR15 + WL ANI_CODE,#flip + WL 5,D2CT2C+FR17 + WL ANI_CODE,#flip + WL 5,D2CT2C+FR19 + WL ANI_CODE,#flip + WL 5,D2CT2C+FR21 + WL ANI_CODE,#flip + WL ANI_GOTO,#repeat + +* CLIMB DOWN TURNBUCKLES + + SUBR dnk_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_OFFSET,0,2,0 ;x,y,z + WL 5,D2CT2B+FR6 + .word ANI_OFFSET,0,-13,0 ;x,y,z + WL 5,D2CT2B+FR4 + + WL ANI_SET_YVEL,-4000h + + .word ANI_OFFSET,-8,-26,0 ;x,y,z + WL 5,D2CT2B+FR2 + .word ANI_OFFSET,0,-5,0 ;x,y,z + .word ANI_SHAKEROPES,1 + WL 5,D2CT2A+FR12 + .word ANI_OFFSET,0,-10,0 ;x,y,z + WL 5,D2CT2A+FR9 + .word ANI_OFFSET,0,-10,0 ;x,y,z + WL 5,D2CT2A+FR7 + .word ANI_OFFSET,-9,-9,0 ;x,y,z + WL 5,D2CT2A+FR2 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#flip +;Check to see if opponent is getting in/out of ring, and turn accordingly! + calla get_opp_process ;closest opponent process + move *a0(INRING),a0 ;0 = in ring, 1 = outside + + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft + +;On right turnbuckle + move a0,a0 + jrz #noflip +#yesflip + move *a13(OBJ_CONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#noflip + move *a13(OBJ_CONTROL),a14 + andni M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + rets +#onlft +;On left turnbuckle + move a0,a0 + jrz #yesflip + jruc #noflip + +#***************************************************************************** +* +* SECOND WIND + + SUBR dnk_2ndwind_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,D4SW4B+FR1 + WL 3,D4SW4B+FR2 + + WL 3,D4SW4E+FR1 + WL 3,D4SW4E+FR2 + WL 3,D4SW4E+FR3 + WL 3,D4SW4E+FR4 + WL 3,D4SW4E+FR5 + + WL 3,D4SW4E+FR1 + WL 3,D4SW4E+FR2 + WL 3,D4SW4E+FR3 + WL 3,D4SW4E+FR4 + WL 3,D4SW4E+FR5 + + WL 3,D4SW4F+FR1 + WL 3,D4SW4F+FR2 + WL 3,D4SW4F+FR3 + WL 3,D4SW4F+FR4 + WL 3,D4SW4F+FR5 + WL 3,D4SW4F+FR6 + WL 3,D4SW4F+FR7 + + WL 3,D4SW4F+FR1 + WL 3,D4SW4F+FR2 + WL 3,D4SW4F+FR3 + WL 3,D4SW4F+FR4 + WL 3,D4SW4F+FR5 + WL 3,D4SW4F+FR6 + WL 3,D4SW4F+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* BUTT DROP FROM TOP OF TURNBUCKLE + + SUBR dnk_diveofftb_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS|MODE_NOGRAVITY|MODE_OVERLAP|MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP ;make an ANI_FACEOUT and ANI_FACEIN + +; .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_STARTATTACK,AT_LEAPING,43 + WL 4,D4JD4A+FR1 + WL 4,D4JD4A+FR2 ;D4FM4A+FR1 + +; .word ANI_SHAKEALL,1 + .word ANI_GRAVITY_ON + .word ANI_SETPLYRMODE,MODE_INAIR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 35,190,190,190,90000h,TGT_KNEES,-15,0,-10 + + .word ANI_SHAKECORNER ;Shake corner ropes + +;Check x vel to make sure we aren't going to land on ropes! + WL ANI_CODE,check_xvel + + WL 3,D4JD4A+FR4 + + .word ANI_OFFSET,0,45,0 ;x,y,z + + WL 3,D4FM4A+FR5 + + WL 3,D4FM4A+FR6 +;Start confining wrestler + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS|MODE_OVERLAP + + .word ANI_ATTACK_ON_Z, AMODE_BSTOMP,-18,-3,0,50,23,30 ;mode,x,y,z,w,h,d +; .word ANI_ATTACK_ON, AMODE_STOMP,-18,4,50,23 ;mode,x,y,w,h + WL 1,D4FM4A+FR6 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_9,3,1 + WL ANI_CODE,shake_all_ropes + + .word ANI_BOUNCE,5 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,18 + WL 5,D4FM4A+FR7 + + .word ANI_ATTACK_ON_Z, AMODE_BSTOMP,-18,-3,0,50,23,30 ;mode,x,y,z,w,h,d + WL 1,D4FM4A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + +; .word ANI_BOUNCE,5 +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_SHAKER,8 +; WL 5,D4FM4A+FR7 +; +; +; WL 12,D4FM4A+FR6 +; .word ANI_ATTACK_ON_Z, AMODE_BSTOMP,-18,-3,0,50,23,30 ;mode,x,y,z,w,h,d +; WL 1,D4FM4A+FR6 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS +; .word ANI_ATTACK_OFF + + + WL ANI_CODE,SMALL_BOUNCE + + WL 5,D4FM4A+FR7 + WL 8,D4FM4A+FR9 + + .word ANI_XFLIP + .word ANI_FACEDOWN + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,0 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Jump straight down from turnbuckle without causing any harm! + SUBR dnk_4_bjump_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOCOLLIS | MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + WL ANI_CODE,#get_stick ;Maybe jump where he isn't facing! + + .word ANI_SETPLYRMODE,MODE_INAIR2 + + WL 4,D4JD4A+FR1 + WL 4,D4JD4A+FR2 +; .word ANI_SHAKEROPES,1 + .word ANI_GRAVITY_ON +; .word ANI_SETPLYRMODE,MODE_INAIR + +;Now jump off... + WL ANI_SET_YVEL,60000h + + .word ANI_SHAKECORNER ;Shake corner ropes + + WL ANI_CODE,#set_xvel + WL 3,D4JD4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 3,D4JD4A+FR6 + WL 3,D4JD4A+FR7 + WL 6,D4JD4A+FR8 + WL 3,D4JD4A+FR10 + WL 3,D4JD4A+FR11 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#get_stick + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right turnbuckle + move a13,a0 + calla wres_get_stick_val_cur + btst MOVE_LEFT_BIT,a0 + jrnz #lft ;Override jumping outside + + +;Don't allow jumping out of ring if opponent not out there... +; btst MOVE_RIGHT_BIT,a0 +; jrnz #rgt + + + +;No stick +;Jump toward opponent (Could be out of ring) + calla get_opp_process ;closest opponent process + move *a0(INRING),a0 ;0 = in ring, 1 = outside + jrnz #rgt +#lft +;If on right side turnbuckle, and stick is to left, do the flip + move *a13(OBJ_CONTROL),a0 + ori M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + rets +#rgt + move *a13(OBJ_CONTROL),a0 + andni M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + rets + +#onlft + move a13,a0 + calla wres_get_stick_val_cur + + +;Don't allow jumping out of ring if opponent not out there... +; btst MOVE_LEFT_BIT,a0 +; jrnz #lft + + + + btst MOVE_RIGHT_BIT,a0 + jrnz #rgt ;Override jumping outside +;No stick +;Jump toward opponent (Could be out of ring) + calla get_opp_process ;closest opponent process + move *a0(INRING),a0 ;0 = in ring, 1 = outside + jrnz #lft + jruc #rgt + rets + + +#set_xvel + +; movk 1,a2 +; movi ROPE_BOUNCEUD,a1 +; movi ROPE_BACK,a0 +; calla rope_command + + movi -20000h,a1 + movi -30000h,a4 +; movi ROPE_RIGHT,a3 + + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrnz #right + +; move *a13(OBJ_XPOSINT),a14 +; cmpi RING_X_CENTER,a14 +; jrgt #right + + movi 20000h,a1 + movi 30000h,a4 +; movi ROPE_LEFT,a3 +#right + +;If jumping out of ring, jump a little further! + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #lft1 + move a1,a1 + jrn #reg + move a4,a1 + jruc #reg +#lft1 move a1,a1 + jrp #reg + move a4,a1 +#reg + move a1,*a13(OBJ_XVEL),L + movi 20000h,a1 + move a1,*a13(OBJ_ZVEL),L +; move a3,a0 +; movi ROPE_BOUNCEUD,a1 +; calla rope_command + rets + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR dnk_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,10 + WL 3,D1TT5Z+FR2 + WL 3,D1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR dnk_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + + .word ANI_STARTATTACK,AT_PUPPET,4 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + + WL 4,D4GF3A+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET,33,56,44,18 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,D4GF3A+FR2 + +; WL 4,D4GF3A+FR2 + .word ANI_ZERO_XZVELS + + WWL ANI_WAITHITOPP,4,D4GF3A+FR3 + +; WL 4,D4GF3A+FR3 + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;got him + + +; WL ANI_SET_YVEL,40000h + + + + WL ANI_CODE,CALL_SETUP + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + + .word ANI_SETOPPFACING + + + WWLLW ANI_SUPERSLAVE2,10,D4GF3A+FR3,#puppet_tbl,0 + .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,7,D4GF3A+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,5,D4GF3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,D4GF3A+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,5,D4GF3A+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,5,D4GF3A+FR8,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 10,D4GF3A+FR9 ;16 + .word ANI_OFFSET,-10,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missedb +; WL 25,D4GF3A+FR3 +#missed + WL ANI_CODE,CALL_MISSES + WL 12,D4GF3A+FR3 + WL 4,D4GF3A+FR2 + WL 4,D4GF3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H4YR3A,H3RN3A + .ref R4YR3A,R3RN3D + .ref U4YR3B,U3RN3A + .ref Y4YR3A,Y3RN3C + .ref S4YR3A,S3RN3A + .ref B4YR3A,B3RN3A + .ref L4YR3B,L3RN3B + +#Bret + LWWW H4YR3A+FR1,53,7,1 + LWWW H4YR3A+FR2,49,9,1 + LWWW H4YR3A+FR3,48,9,1 + LWWW H4YR3A+FR5,43,11,1 + LWWW H3RN3A+FR1,15,5,0 + LWWW H3RN3A+FR2,-14,8,0 +#Razor + LWWW R4YR3A+FR1,32,17,0 + LWWW R4YR3A+FR2,21,20,0 + LWWW R4YR3A+FR3,1,11,0 + LWWW R4YR3A+FR4,4,15,0 + LWWW R3RN3D+FR10,9,16,0 + LWWW R3RN3D+FR11,-4,16,0 +#Taker + LWWW U4YR3B+FR2,34,18,0 + LWWW U4YR3B+FR3,37,16,0 + LWWW U4YR3B+FR4,29,24,0 + LWWW U4YR3B+FR5,27,24,0 + LWWW U3RN3A+FR2,-11,15,0 + LWWW U3RN3A+FR2,-25,14,0 +#Yokozuna + LWWW Y4YR3A+FR1,59,11,1 + LWWW Y4YR3A+FR4,37,13,1 + LWWW Y4YR3A+FR5,32,11,1 + LWWW Y4YR3A+FR7,5,3,1 + LWWW Y3RN3C+FR7,18,13,0 + LWWW Y3RN3C+FR8,8,12,0 +#Shawn + LWWW S4YR3A+FR2,38,5,1 + LWWW S4YR3A+FR3,52,-3,1 + LWWW S4YR3A+FR5,21,11,1 + LWWW S4YR3A+FR6,19,10,1 + LWWW S3RN3A+FR2,16,11,0 + LWWW S3RN3A+FR3,4,11,0 +#BamBam + LWWW B4YR3A+FR3,32,15,0 + LWWW B4YR3A+FR4,43,11,0 + LWWW B4YR3A+FR5,53,12,0 + LWWW B4YR3A+FR7,9,9,0 + LWWW B3RN3A+FR1,6,19,0 + LWWW B3RN3A+FR2,3,17,0 +#Doink + LWWW D4YR3B+FR1,64,16,1 + LWWW D4YR3B+FR2,60,20,1 + LWWW D4YR3B+FR3,47,19,1 + LWWW D4YR3B+FR4,38,20,1 + LWWW D3RN3B+FR3,23,20,0 + LWWW D3RN3B+FR4,-8,18,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,66,16,1 + LWWW L4YR3B+FR2,54,10,1 + LWWW L4YR3B+FR3,38,13,1 + LWWW L4YR3B+FR4,13,11,1 + LWWW L3RN3B+FR2,0,19,0 + LWWW L3RN3B+FR3,10,13,0 + +#strt_run_tbl + .ref start_run_flung + + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR dnk_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 3,D4MF4A+FR1 + WL 3,D4MF4A+FR2 + WL 3,D4MF4A+FR3 + WL 3,D4MF4A+FR4 + WL 3,D4MF4A+FR5 + WL 3,D4MF4A+FR6 + WL 3,D4MF4A+FR7 + WL 3,D4MF4A+FR8 + WL 3,D4MF4A+FR9 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 2,D4MF4A+FR6 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,D3GS3X+FR5 + WL 4,D3GS3X+FR4 + WL 4,D3GS3X+FR3 + WL 4,D3GS3X+FR1 + .word ANI_WAITHITGND + WL 2,D2ST2B+FR3 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* #2 BLOCK + + SUBR dnk_2_block_anim + +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZERO_XZVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_BLOCK + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! +; WL ANI_CODE,wrong_face + +;wrong_face +; move *a13(ANIMODE),a1 +; andni MODE_STATUS,a1 +; +; move *a13(FACING_DIR),a0 +; move *a13(NEW_FACING_DIR),a14 +; +; +;#breakout +; move *a13(ANIMODE),a1 +; ori MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets + + WL 2,D2BK3C+FR1 + WL 2,D2BK3C+FR2 +; .word ANI_SETPLYRMODE,MODE_BLOCK +#blk2 WL 2,D2BK3C+FR3 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + WL 2,D2BK3C+FR2 + WL 2,D2BK3C+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_hitblock_anim + +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_FRICTION,4000h + .word ANI_SETSPEED,100h + + WL 4,D2BK3C+FR7 + WL 4,D2BK3C+FR5 + WL ANI_GOTO,#blk2 + +* #4 BLOCK + + SUBR dnk_4_block_anim + +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZERO_XZVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 2,D4BK3A+FR1 + WL 2,D4BK3A+FR2 +; .word ANI_SETPLYRMODE,MODE_BLOCK +#blk4 WL 2,D4BK3A+FR3 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + WL 2,D4BK3A+FR2 + WL 2,D4BK3A+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_hitblock_anim + +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WL 4,D4BK3A+FR7 + WL 4,D4BK3A+FR6 + WL ANI_GOTO,#blk4 + + +#***************************************************************************** +* +* HIP TOSS RUNNING OPPONENT + + SUBR dnk_2_hiptoss2_anim +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCOLLIS ;uninterruptable + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 2,D1TT5Z+FR2 + WL 2,D1TT5Z+FR3 + + SUBR dnk_4_hiptoss2_anim + +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCOLLIS ;uninterruptable + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,60,55,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,D3HT3Q+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET,33,36,44,48 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,8,D3HT3Q+FR1 + .word ANI_ZERO_XZVELS +; WWL ANI_WAITHITOPP,15,D3HT3Q+FR1 + .word ANI_ATTACK_OFF + + WL ANI_GOTO,#cont + + SUBR dnk_2_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + WL 3,D1TT5Z+FR2 + WL 3,D1TT5Z+FR3 + + SUBR dnk_4_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,D3HT3Q+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET,33,36,44,48 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,D3HT3Q+FR1 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,D3HT3Q+FR1 + .word ANI_ATTACK_OFF +#cont + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;got him +; WL ANI_SET_YVEL,30000h + + .word ANI_SOUND,82h ;Effort grunt + + WL ANI_CODE,DO_SNAP_MESS + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR1,#puppet_tbl,0 + WL ANI_CODE,SMALL_BOUNCE +; .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,1,D3HT3Q+FR8,#puppet_tbl,7 + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS + + .WORD ANI_ADD_MOVE,MOVE_C_1,2,1 + + WL ANI_SLAVEANIM,#rollout_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL 15,D3HT3Q+FR8 + WL 4,D3HT3Q+FR7 + WL 4,D3HT3Q+FR6 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb +; WL 10,D3HT3Q+FR1 +#missed + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; WL 20,D3HT3Q+FR1 + + WL 10,D3HT3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_combo_hiptoss_anim + + .word ANI_SET_RPTCOUNT,4 ;5 times +re_enter_combo_hiptoss + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_STARTATTACK,AT_PUPPET,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,D3HT3Q+FR1 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_PUPPET,33,0,44,60 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,D3HT3Q+FR1 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,D3HT3Q+FR1 + .word ANI_ATTACK_OFF + .word ANI_CLR_BUTCOUNT + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker + +;got him + + .WORD ANI_INC_COMBO + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR1,#puppet_tbl,0 + .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,1,D3HT3Q+FR8,#puppet_tbl,7 + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS + + WL ANI_SLAVEANIM,#rollout_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + + WLLL ANI_SETOPPVELS,0,80000h,0h ;x,y,z vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + +; WL 15,D3HT3Q+FR8 + WL 4,D3HT3Q+FR8 + WL 4,D3HT3Q+FR7 + WL 4,D3HT3Q+FR6 + + .word ANI_FACEDOWN + .word ANI_SETFACING + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,yes_do_combo_again + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHECK2A + .WORD ANI_XFLIP + WL ANI_CHANGEANIM,dnk_combo_hammer_anim + +#NEXT_CHECK2A + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_IMMOBILIZE,120 + WL 4,D3HT3Q+FR6 + .WORD ANI_XFLIP + WL ANI_CHANGEANIM,dnk_2ndwind_anim + +#NEXT_CHECK + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +yes_do_combo_again + .WORD ANI_XFLIP + WL ANI_CHANGEANIM,re_enter_combo_hiptoss + +#missedbc + WL 10,D3HT3Q+FR1 +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 20,D3HT3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H2AH3A,H3FR3A,H2CP3A,H2AM3A + LWWW H2AH3A+FR5,72,10,0 + LWWW H2AM3A+FR1,58,17,0 + LWWW H2AM3A+FR7,47,8,0 + LWWW H3FR3A+FR2,29,25,0 + LWWW H3FR3A+FR3,14,59,0 + LWWW H3FR3A+FR4,-26,62,0 + LWWW H3FR3A+FR5,-75,-6,0 + LWWW H2CP3A+FR8,-149,-47,1 + .long 0 +#Razor + .ref R3TD3A,R3GU2A + LWWW R3TD3A+FR1,56,6,0 + LWWW R3TD3A+FR3,45,6,0 + LWWW R3TD3A+FR4,37,19,0 + LWWW R3TD3A+FR5,36,47,0 + LWWW R3TD3A+FR6,15,62,0 + LWWW R3TD3A+FR7,-25,65,0 + LWWW R3TD3A+FR8,-73,9,0 + LWWW R3GU2A+FR1,-155,-43,1 + .long 0 +#Taker + .ref U3AE4A,U4AM4C,U3FH3A,U3CP3B + LWWW U3AE4A+FR1,73,22,0 + LWWW U4AM4C+FR4,52,18,0 ;15 + LWWW U3FH3A+FR1,55,20,1 ;15 + LWWW U3FH3A+FR2,32,45,1 ;40 + LWWW U3FH3A+FR3,18,60,1 ;54 + LWWW U3FH3A+FR4,-30,68,1 ;63 + LWWW U3FH3A+FR5,-92,18,1 + LWWW U3CP3B+FR1,-175,-40,1 + .long 0 +#Yokozuna + .ref Y4AE4A,Y3FL3W,Y3FD3A,Y3MS3Z + LWWW Y4AE4A+FR1,81,10,0 + LWWW Y3MS3Z+FR2,56,18,0 + LWWW Y3FL3W+FR3,36,24,0 + LWWW Y3FL3W+FR4,37,55,0 + LWWW Y3FL3W+FR5,17,68,0 + LWWW Y3FL3W+FR6,-43,68,0 + LWWW Y3FL3W+FR7,-90,11,0 + LWWW Y3FD3A+FR7,-130,-17,0 + .long 0 +#Shawn + .ref S3OS3X + LWWW S3OS3X+FR2,58,7,1 + LWWW S3OS3X+FR4,27,18,1 + LWWW S3OS3X+FR5,22,16,1 + LWWW S3OS3X+FR6,26,64,1 + LWWW S3OS3X+FR7,20,79,1 + LWWW S3OS3X+FR8,-13,78,1 + LWWW S3OS3X+FR9,-98,20,1 + LWWW S3OS3X+FR10,-144,-38,1 + .long 0 +#BamBam + .ref B4TD3B + LWWW B4TD3B+FR1,53,2,0 + LWWW B4TD3B+FR3,39,4,0 + LWWW B4TD3B+FR4,42,16,0 + LWWW B4TD3B+FR5,33,59,0 + LWWW B4TD3B+FR6,23,88,0 + LWWW B4TD3B+FR7,-28,73,0 + LWWW B4TD3B+FR8,-68,16,0 + LWWW B4TD3B+FR9,-117,-28,0 + .long 0 +#Doink + LWWW D3AE3B+FR8,69,8,0 + LWWW D3PM4C+FR2,37,7,0 + LWWW D3OS3A+FR1,56,10,0 + LWWW D3OS3A+FR3,37,26,0 + LWWW D3OS3A+FR4,23,41,0 + LWWW D3OS3A+FR6,-23,52,0 + LWWW D3FD3E+FR2,-73,-18,0 + LWWW D3SA3A+FR2,-137,-40,1 + .long 0 +#Adam + .long 0 +#Lex + .ref L4AM4B,L3FH3A,L3CP3B + LWWW L4AM4B+FR3,64,-10,0 + LWWW L3FH3A+FR1,46,14,0 + LWWW L3FH3A+FR2,42,14,0 ;8 + LWWW L3FH3A+FR3,31,35,0 + LWWW L3FH3A+FR4,24,46,0 + LWWW L3FH3A+FR5,-15,49,0 + LWWW L3FH3A+FR6,-69,1,0 + LWWW L3CP3B+FR1,-152,-39,1 + .long 0 + + .ref hrt_tossed_anim + .ref shn_tossed_anim + .ref bam_tossed_anim + .ref und_tossed_anim + .ref lex_tossed_anim + .ref rzr_tossed_anim + .ref yok_tossed_anim + +#rollout_tbl + .long hrt_tossed_anim,rzr_tossed_anim + .long und_tossed_anim + .long yok_tossed_anim + .long shn_tossed_anim,bam_tossed_anim + .long dnk_tossed_anim,0,lex_tossed_anim + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR dnk_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + .word ANI_GETUP,300 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 4,D3SA3A+FR3 + WL 4,D3SA3A+FR4 + WL 4,D3SA3A+FR5 + WL 4,D3SA3A+FR7 + WL 4,D3SA3A+FR8 + WL 4,D3SA3A+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 3,D3SA3A+FR3 + WL 3,D3SA3A+FR4 + WL 3,D3SA3A+FR5 + WL 3,D3SA3A+FR7 + WL 3,D3SA3A+FR8 + WL 3,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR dnk_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,D3OS3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,300 + .word ANI_DAMAGE,D_HIPTOSS + + WL 3,D3FD3E+FR2 + .word ANI_XFLIP + .word ANI_OFFSET,20,0,0 ;x,y,z + WL 3,D3SA3A+FR9 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 3,D3SA3A+FR3 + WL 3,D3SA3A+FR4 + WL 3,D3SA3A+FR5 + WL 3,D3SA3A+FR7 + WL 3,D3SA3A+FR8 + WL 3,D3SA3A+FR9 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 3,D3SA3A+FR9 +#done + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* #2 PUSH + + SUBR dnk_2_push2_anim ;From head held + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,D3AK3A+FR2 + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL ANI_GOTO,#tag + + SUBR dnk_2_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,6 +#tag WL 3,D2PS3A+FR1 + WL 3,D2PS3A+FR2 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + WL 3,D2PS3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUSH,30,83,54,14 ;mode,x,y,w,h + WL 3,D2PS3A+FR4 + WL 3,D2PS3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-50000h,#no_hit ;range,vel,addr + WL 15,D2PS3A+FR5 +#no_hit + WL 15,D2PS3A+FR5 + WL 4,D2PS3A+FR6 + WL 4,D2PS3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#* #4 PUSH + + SUBR dnk_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,D4PS3A+FR1 + WL 3,D4PS3A+FR2 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + WL 3,D4PS3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUSH,47,88,53,9 ;mode,x,y,w,h + WL 3,D4PS3A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WWL ANI_SLIDE_BACK,40h,-60000h,#no_hit ;range,vel,addr + WL 15,D4PS3A+FR4 +#no_hit + WL 15,D4PS3A+FR4 + WL 4,D4PS3A+FR5 + WL 4,D4PS3A+FR6 + WL 4,D4PS3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#missedb +#missed + WL 15,D4PS3A+FR4 + + WL 4,D4PS3A+FR5 + WL 4,D4PS3A+FR6 + WL 4,D4PS3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR dnk_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,D2AH2A+FR1 + WL 15,D2AH2A+FR2 + WL 4,D2AH2A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR dnk_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,D3AH3B+FR1 + WL 3,D3AH3B+FR2 + WL 14,D3AH3B+FR3 + WL 2,D3AH3B+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR dnk_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,D3AH3B+FR1 + WL 3,D3AH3B+FR2 + WL 14,D3AH3B+FR3 + WL 2,D3AH3B+FR5 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + .word ANI_END + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR dnk_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + + WL 4,D4LB4A+FR2 + WL 4,D4LB4A+FR3 + WL 4,D4LB4A+FR4 + WL 4,D4LB4A+FR5 + WL 4,D4LB4B+FR1 + WL 4,D4LB4B+FR2 + WL 4,D4LB4B+FR3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_losebal_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + + WL 4,D4LB4A+FR2 + WL 4,D4LB4A+FR3 + WL 4,D4LB4A+FR4 + WL 4,D4LB4A+FR5 + WL 4,D4LB4B+FR1 + WL 4,D4LB4B+FR2 + WL 4,D4LB4B+FR3 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + .word ANI_END + +#***************************************************************************** +* +* #2 BIG BOOT +* + + SUBR dnk_2_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_BIGBOOT,9 + WL 3,D3SK3X+FR1 + WL 3,D3SK3X+FR2 + WL 3,D3SK3X+FR3 + WL ANI_CODE,#clrcnt + + .word ANI_ATTACK_ON, AMODE_BIGBOOT,57,66,32,46 ;mode,x,y,w,h + WL 2,D3SK3X+FR4 +#lp0 + WL 2,D3SK3X+FR4 + WL ANI_CODE,#holdup + WL ANI_IFSTATUS,#lp0 + + .word ANI_ATTACK_OFF + + WL 3,D3SK3X+FR5 + WL 3,D3SK3X+FR6 + WL 3,D3SK3X+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 BIG BOOT + + SUBR dnk_4_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_BIGBOOT,9 + WL 3,D3SK3X+FR1 + WL 3,D3SK3X+FR2 + WL 3,D3SK3X+FR3 + WL ANI_CODE,#clrcnt + + .word ANI_ATTACK_ON, AMODE_BIGBOOT,34,78,46,25 ;mode,x,y,w,h + WL 2,D3SK3X+FR4 +#lp + WL 2,D3SK3X+FR4 + + WL ANI_CODE,#holdup + WL ANI_IFSTATUS,#lp + +; .word ANI_WAITRELEASE,PLAYER_KICK_BIT + + .word ANI_ATTACK_OFF + + WL 3,D3SK3X+FR5 + WL 3,D3SK3X+FR6 + WL 3,D3SK3X+FR7 + WL 3,D3SK3X+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#clrcnt +;We are re-using BUT_COUNT in the player process + clr a0 + move a0,*a13(BUT_COUNT) + + rets + +#holdup + move *a13(BUT_COUNT),a0 + inc a0 + move a0,*a13(BUT_COUNT) + +;Max time to hold up in air (*2 ticks) + cmpi 25,a0 + jrgt #button_up + + move *a13(PLYRNUM),a0 + calla get_but_val_cur + btst PLAYER_SKICK_BIT,a0 ;still down? + jrz #button_up + +;Still holding... + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#button_up + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* DIZZY + + SUBR dnk_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + WL 6,D4SW4C+FR1 + WL 6,D4SW4C+FR2 + WL 6,D4SW4C+FR3 + WL 6,D4SW4C+FR4 + WL 6,D4SW4C+FR5 + WL 6,D4SW4C+FR6 + WL 6,D4SW4C+FR5 + WL 6,D4SW4C+FR4 + WL 6,D4SW4C+FR3 + WL 6,D4SW4C+FR2 + WL ANI_GOTO,#loop + + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR dnk_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,D1TT5Z+FR2 + WL 3,D1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR dnk_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,999,80h,50h,90000h,TGT_CHEST,0,57,-15 + + WL 3,D4PN5A+FR1 + WL 3,D4PN5A+FR2 + .word ANI_OFFSET,0,57,0 ;x,y,z + WL 19,D4PN5A+FR3 +; .word ANI_WAITHITGND + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,D4PN5L+FR4,10 ;image, zoff (priority) + WL 3,D4PN5A+FR4 + + .word ANI_ATTACK_OFF + WL ANI_CODE,HIT_THE_MAT + + WL ANI_CODE,DO_CROWD_CHEER + + .word ANI_BOUNCE,4 + WLW ANI_ATTCHIMAGE,D4PN5L+FR5,10 ;image, zoff (priority) + WL 4,D4PN5A+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + WL 4,D4PN5A+FR5 + WL ANI_CODE,win_announce + WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + WL 40,D4PN5A+FR6 + + .word ANI_LOOP + +;Do another ground hit on opponent + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 4,D5GD4A+FR1 + WL 4,D5GD4A+FR2 + .word ANI_OFFSET,-10,0,0 ;x,y,z + WL 6,D3GU4A+FR7 + WL 5,D3GU4A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 5,D3GU4A+FR9 + + WL 8+10,D5WN5B+FR1 + WL 8-2,D5WN5B+FR2 + WL 8-2,D5WN5B+FR3 + WL 8-2,D5WN5B+FR4 + WL 8-2,D5WN5B+FR5 + +#loop WL 6,D5WN5Z+FR1 + WL 6,D5WN5Z+FR2 + WL 6,D5WN5Z+FR3 + WL 6,D5WN5Z+FR4 + WL ANI_GOTO,#loop + + SUBR win_announce + + PUSH a10 + move a13,a10 + .ref announce_rnd_winner + CREATE ANNC_PID,announce_rnd_winner + PULL a10 + + rets + + + SUBR grnd_hit + + PUSH a13 + move *a13(WHOIHIT),a13,L + move *a13(WRESTLERNUM),a0 + move a0,a1 + sll 5,a0 + addi #hit_t,a0 + move *a0,a0,L + .ref change_anim1a + calla change_anim1a + PULL a13 + rets + +#hit_t + .long hrt_hitonground_anim ;0 Bret Hart + .long rzr_hitonground_anim ;1 Razor Ramon + .long und_hitonground_anim ;2 Undertaker + .long yok_hitonground_anim ;3 Yokozuna + .long shn_hitonground_anim ;4 Shawn Michaels + .long bam_hitonground_anim ;5 Bam Bam + .long dnk_hitonground_anim ;6 Doink + .long 0 ;7 spare + .long lex_hitonground_anim ;8 Lex Luger + .long 0 ;9 Referee + +#***************************************************************************** +* +* #3 CLIMB THROUGH ROPES + + SUBR dnk_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WLW ANI_SET_XVEL,2000h,AM_FACE_REL + .word ANI_OFFSET,13,0,0 + WL 4,D3CR3D+FR1 + .word ANI_BENDROPE,0 + WL 4,D3CR3D+FR2 + WL 4,D3CR3D+FR3 + WL 4,D3CR3D+FR4 + WL 4,D3CR3D+FR5 + + .word ANI_BENDROPE,2 + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + WL 4,D3CR3D+FR6 + .word ANI_BENDROPE,2 + WL 4,D3CR3D+FR7 + WL 4,D3CR3D+FR8 + .word ANI_BENDROPE,3 + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + WL 4,D3CR3D+FR9 + WL 4,D3CR3D+FR10 + .word ANI_ZEROVELS + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,43,-3,0 + WL 4,D3CR3D+FR11 + + ;now jump off... + WL 4,D4JD4A+FR1 ;D4FM4A+FR1 + WL 4,D4JD4A+FR2 + + WL ANI_SET_YVEL,60000h + +; WL ANI_CODE,#set_xvel + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,D4JD4A+FR4 + .word ANI_WAITHITGND + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 3,D4JD4A+FR6 + WL 3,D4JD4A+FR7 + WL 6,D4JD4A+FR8 + WL 3,D4JD4A+FR10 + WL 3,D4JD4A+FR11 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#***************************************************************************** + + SUBR dnk_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;jump in + WL 4,D4JD4A+FR1 + WL 4,D4JD4A+FR2 + + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,1ch,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 4,D4JD4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + WL 4,D4JD4A+FR6 + WL 3,D4JD4A+FR7 + WL 3,D4JD4A+FR11 + + WL ANI_CODE,#set_z + WLW ANI_SET_XVEL,2000h,AM_FACE_REL + + ;climb through + WL 3,D3CR3D+FR1 + .word ANI_BENDROPE,0 + WL 3,D3CR3D+FR2 + WL 3,D3CR3D+FR3 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + WL 3,D3CR3D+FR4 + WL 3,D3CR3D+FR5 + + .word ANI_BENDROPE,2 +; .word ANI_ROPE_Z,R_TOP,RZ_HIGH +; .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + WL 3,D3CR3D+FR6 + .word ANI_BENDROPE,2 + WL 3,D3CR3D+FR7 + WL 3,D3CR3D+FR8 + .word ANI_BENDROPE,3 + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + WL 3,D3CR3D+FR9 + WL 3,D3CR3D+FR10 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,43,-3,0 + WL 3,D3CR3D+FR11 + .word ANI_ZEROVELS + + .word ANI_OFFSET,-5,0,0 + WL ANI_CODE,clr_climb + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_z + + +clr_climb + + clr a0 + move a0,*a13(CLIMBING_THRU) ;1=Climbing thru ropes flag + rets + +#set_trgt + movi RING_X_CENTER-0f8h-50,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+50,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets + +SET_DIR_FACE + MOVI 10,A0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft1 + MOVI 6,A0 +#onlft1 + MOVE A0,*A13(NEW_FACING_DIR) + RETS + +#***************************************************************************** + + SUBR dnk_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL ANI_IFSTATUS,#dir4 + +;Facing #2, spin first! + WL 3,D1TT5Z+FR2 + WL 3,D1TT5Z+FR3 +#dir4 + WL 3,D3GU4A+FR9 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR7 + WL 3,D3GU4A+FR6 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR2 + + ;roll over once + WLW ANI_SET_ZVEL,70000h,AM_ABS + + WL 3,D3SA3A+FR9 + WL 3,D3RL1B+FR2 + WL 3,D3RL1B+FR3 + + WL 3,D3RL1B+FR4 + WL 3,D3RL1B+FR5 + WL 3,D3RL1B+FR6 + WL 3,D3RL1B+FR7 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + + ;climb through + WL 3,D2CR1A+FR3 + WL 3,D2CR1A+FR2 + WL 3,D2CR1A+FR1 + .word ANI_OFFSET,0,-37h,0 ;x,y,z + WL 1,D2ST2B+FR3 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + + +#***************************************************************************** + + SUBR dnk_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .word ANI_OFFSET,0,37h,-60 + WL 3,D2CR1A+FR1 + WL 3,D2CR1A+FR2 + WL 3,D2CR1A+FR3 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,D3RL1B+FR7 + WL 3,D3RL1B+FR6 + WL 3,D3RL1B+FR5 + WL 3,D3RL1B+FR4 + WL 3,D3RL1B+FR3 + WL 3,D3RL1B+FR2 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,D3GU4A+FR2 + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + WL 3,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + WL ANI_CODE,clr_climb + .word ANI_OFFSET,0,0,0 + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR dnk_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,D2GD2A+FR9 + WL 3,D2GD2A+FR7 + WL 3,D2GD2A+FR6 + WL 3,D2GD2A+FR4 + WL ANI_CODE,#set_zvel3 + WL ANI_GOTO,#cont + +#dir4 + WL 3,D3GU4A+FR9 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR7 + WL 3,D3GU4A+FR6 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR2 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,D3RL1B+FR11 +#cont + WL 3,D3RL1B+FR10 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + WL 3,D3RL1B+FR9 + WL 3,D3RL1B+FR8 + WL 3,D3RL1B+FR7 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,D2CR1A+FR8 + WL 3,D2CR1A+FR9 + WL 3,D2CR1A+FR10 + WL 3,D2CR1A+FR11 + + .word ANI_ZERO_XZVELS + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -6c000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#set_zvel3 + movi -7c000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR dnk_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,D2CR1A+FR11 + WL 3,D2CR1A+FR10 + WL 3,D2CR1A+FR9 + WL 3,D2CR1A+FR8 + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,D3RL1B+FR8 + WL 3,D3RL1B+FR9 + WL 3,D3RL1B+FR10 + WL 3,D3RL1B+FR11 + + WL 3,D3SA3A+FR9 + + .word ANI_ZEROVELS + + ;get up + WL 3,D3GU4A+FR2 + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + WL 3,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + WL ANI_CODE,clr_climb + .word ANI_OFFSET,0,0,100 + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#set_zvel2 + movi 42000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR dnk_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*10/255 ;inv multiply (0-255 -> 0-10) + + .long D3SA3A+FR9 ;0 + .long D3RL1B+FR2 ;1 + .long D3RL1B+FR3 ;2 + .long D3RL1B+FR4 ;3 + .long D3RL1B+FR5 ;4 + .long D3RL1B+FR6 ;5 + .long D3RL1B+FR7 ;6 + .long D3RL1B+FR8 ;7 + .long D3RL1B+FR9 ;8 + .long D3RL1B+FR10 ;9 + .long D3RL1B+FR11 ;10 + .long 0,0,0,0,0,0 + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/DNKSEQ3.ASM b/BACKUP/DNKSEQ3.ASM new file mode 100644 index 0000000..7cf4c88 --- /dev/null +++ b/BACKUP/DNKSEQ3.ASM @@ -0,0 +1,3209 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/2/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "dnkseq3.asm" + .title "Krusty the Clown animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "display.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "doinkimg.h" + .include "fontsimg.glo" + .include "miscimg.glo" + .include "damage.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + .REF DO_HEAD_MESS + + .REF DO_PILE_MESS + .REF CALL_MISS_YOKO + + .REF triple_sound + .ref wres_get_but_val_cur + .ref set_move_dir + .ref RNDRNG0 + + .REF HIT_THE_MAT,SMALL_BOUNCE + .REF CALL_MISSES,CALL_SETUP,CALL_THROWN_OUT + .ref CALL_SPECIAL_MOVE + + .ref get_leap + .ref shake_all_ropes + + .ref dnk_dizzy_anim +; .ref dnk_4_graboh_anim +; .ref dnk_2_graboh_anim + + .ref dnk_2_faceup_getup_anim + .ref dnk_4_faceup_getup_anim + + .ref dnk_hitonground_anim + .ref dnk_faceup_getup_anim + .ref dnk_hitonground_xflip_anim + + .ref dnk_4_combo_butt_anim + .ref DO_COMBO_MESS + .REF dnk_4_box_anim + .REF dnk_4_knee_fall_anim + .ref dnk_flying_kick_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +***************************************************************************** +* +* JOY BUZZER + + SUBR dnk_2_buzz_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,2000h + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_PUPPET,9 + WL 3,D1TT5Z+FR2 + WL 3,D1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR dnk_4_buzz_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,2000h + .word ANI_SETSPEED,100h + + .word ANI_ZEROVELS + +;Comes in from head held mode! + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_DETACH + +#cont + .word ANI_STARTATTACK,AT_PUPPET,3 + WL 3,D4BZ3A+FR1 + + .word ANI_ZEROVELS + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_ATTACK_ON, AMODE_PUPPET,23,62,59,29 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,35,D4BZ3A+FR2 + .word ANI_ATTACK_OFF +#cont4 + WL ANI_IFSTATUS,#gothim + WL 30,D4BZ3A+FR2 + WL ANI_GOTO,#cont2 + +#gothim +; WL ANI_CODE,merge_xvels + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,D4BZ3A+FR3,#puppet_tbl,0 + +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + + .word ANI_ATTACK_ON, AMODE_BUZZ,53,62,50,29 ;mode,x,y,w,h + WL 1,D4BZ3A+FR3 + .word ANI_ATTACK_OFF + +; .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. +; .word ANI_ZEROVELS + + WL ANI_CODE,start_sparks + + WL 1,D4BZ3A+FR3 + WL 3,D4BZ3A+FR4 + WL 3,D4BZ3A+FR5 + WL 3,D4BZ3A+FR6 + WL 3,D4BZ3A+FR3 + WL 3,D4BZ3A+FR4 + + +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + + WL 3,D4BZ3A+FR5 + .word ANI_ZERO_XZVELS + WL 3,D4BZ3A+FR6 + WL 3,D4BZ3A+FR3 + WL 3,D4BZ3A+FR4 + WL 3,D4BZ3A+FR5 + WL 3,D4BZ3A+FR6 + WL 3,D4BZ3A+FR3 + WL 3,D4BZ3A+FR4 + WL 3,D4BZ3A+FR5 + WL 3,D4BZ3A+FR6 + WL 3,D4BZ3A+FR3 + WL 3,D4BZ3A+FR4 + WL 3,D4BZ3A+FR5 + WL 3,D4BZ3A+FR6 + +;Stay in this buzz sequence longer if player keeps whacking on his punch button! + + WWL ANI_SLIDE_BACK,30h,-30000h,#cont2 + + WL ANI_SET_YVEL,30000h + WL 3,D4BZ3A+FR2 +#cont2 + WL 6,D4BZ3A+FR2 + WL 3,D4BZ3A+FR1 + + WL ANI_CODE,#zero_butn + + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_buzz2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,2000h + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_LEAPING,9 + WL 3,D1TT5Z+FR2 + WL 3,D1TT5Z+FR3 + WL ANI_GOTO,#cont3 + + SUBR dnk_4_buzz2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,2000h + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_NORMAL + +#cont3 + .word ANI_STARTATTACK,AT_LEAPING,3 + WL 3,D4BZ3A+FR1 + + WL ANI_CODE,get_leap + WL ANI_IFNOTSTATUS,#normal + + .word ANI_ZEROVELS + .word ANI_CLR_STATUS + WL ANI_GOTO,#contz + +#normal + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 9,999,38h,80,90000h,TGT_HEAD,80,85,0 +; WL ANI_SET_YVEL,30000h + +#contz + .word ANI_ATTACK_ON, AMODE_PUPPET,23,62,59,29 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,20,D4BZ3A+FR2 + .word ANI_ATTACK_OFF + WLW ANI_SET_ZVEL,0h,AM_ABS + WL ANI_GOTO,#cont4 + +#zero_butn +;Force player to start holding his button down starting at the end +;of the current buzz sequence. + + move *a13(PLYRNUM),a0 + X16 a0 + .ref punch_dtime1 + addi punch_dtime1,a0 + clr a14 + move a14,*a0 + rets + + +start_sparks + + move a13,a10 + CREATE0 hand_sparks + movi 3eh,a0 + calla triple_sound + + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H4BZ4A + LWWW H4BZ4A+FR1,80,28,1 +#Razor + .ref R4BZ4A + LWWW R4BZ4A+FR1,75,30,1 +#Taker + .ref U4BZ4A + LWWW U4BZ4A+FR1,75,30,1 +#Yokozuna + .ref Y4BZ4A + LWWW Y4BZ4A+FR1,75,26,1 +#Shawn + .ref S4BZ4A + LWWW S4BZ4A+FR1,75,24,1 +#BamBam + .ref B4BZ4A + LWWW B4BZ4A+FR1,75,15,1 +#Doink + LWWW D4BZ4A+FR1,75,30,1 +#Adam + .long 0 +#Lex + .ref L4BZ4A + LWWW L4BZ4A+FR1,75,23,1 + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR dnk_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + +;Put this Doink into the blue doink pal, then replace whatever +;pal he was using at the end! + +;We have to change pals on whatever guy we are showing in order +;to show the blue skeleton. + + WL ANI_CODE,set_position + WL 2,D4SK4A+FR1 + WL 3,D4BZ4A+FR1 + + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + + WL 3,D4BZ4A+FR1 + WL 3,D4SK4A+FR1 + WL 3,D4BZ4A+FR1 + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,D4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL 3,D4BZ4A+FR1 + WL 3,D4SK4A+FR1 + WL 3,D4BZ4A+FR1 + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4BZ4A+FR1 + WL 3,D4SK4A+FR1 + WL ANI_CODE,start_smoke + + .word ANI_DETACH + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,D4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,D4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,D4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,D4ST4E+FR3 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref dnk_fall_back_anim + + WL ANI_CHANGEANIM,dnk_fall_back_anim + .word ANI_END + +#nodead + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR am_I_dizzy + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move *a13(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jrz #not_dizzy + move *a13(PLYR_DIZZY),a0 + jrz #not_dizzy + ori MODE_STATUS,a1 +#not_dizzy + move a1,*a13(ANIMODE) + rets + + SUBR am_I_dead + + move *a13(PLYRNUM),a1 + .ref get_health + calla get_health + jrnz #notdead + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + movi MODE_DEAD,a1 + move a1,*a13(PLYRMODE) + rets +#notdead + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move *a13(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jrnz #not_dead + ori MODE_STATUS,a1 +#not_dead + move a1,*a13(ANIMODE) + rets + + SUBR make_white + movi 0101h,a14 + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#make_black + movi 0b0bh,a14 + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + + SUBR make_norm + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a13(OBJ_CONTROL) + rets + + SUBR set_position + move *a13(WHOHITME),a0,L + move *a0(OBJ_XPOSINT),a1 + move *a13(OBJ_XPOSINT),a2 + cmp a1,a2 + jrlt #lft +#rgt + addi 140,a1 + move *a10(OBJ_XPOSINT),a2 +#lft subi 70,a1 +; move a1,*a13(OBJ_XPOSINT) + move *a0(OBJ_YPOSINT),a1 + addi 12,a1 +; move a1,*a13(OBJ_YPOSINT) + move *a0(OBJ_ZPOSINT),a1 + subi 20,a1 +; move a1,*a13(OBJ_ZPOSINT) + movi DNKBLU_P,a0 + .ref pal_getf + calla pal_getf + move a0,*a13(SKELETON_PAL) + move *a13(OBJ_PAL),a0 + move a0,*a13(MY_PAL) + + rets + + SUBR set_skeleton_pal + move *a13(SKELETON_PAL),a0 + move a0,*a13(OBJ_PAL) + rets + + SUBR set_my_pal + move *a13(MY_PAL),a0 + move a0,*a13(OBJ_PAL) + rets + + SUBR start_smoke + + move a13,a10 + CREATE0 body_smoke + + rets + +#***************************************************************************** + +; SUBR dnk_2_break_lockup_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; WLW ANI_SET_XVEL,-30000h,1 ;facing relative +; .word ANI_FRICTION,3000h +; WL 3,D2FG3A+FR4 +; WL 3,D2FG3A+FR3 +; WL 3,D2FG3A+FR2 +; WL 3,D2FG3A+FR1 +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +;#***************************************************************************** +; +; SUBR dnk_2_lockup_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +; WL 4,D2FG3A+FR1 +; WL 4,D2FG3A+FR2 +; WL 4,D2FG3A+FR3 +; .word ANI_ATTACK_ON, AMODE_GRAPPLE,24,72,48,28 ;mode,x,y,w,h +; WL 4,D2FG3A+FR4 +; .word ANI_ATTACK_OFF +; WL ANI_IFSTATUS,#grapple +; WL 4,D2FG3A+FR4 +; WL 4,D2FG3A+FR3 +; WL 4,D2FG3A+FR2 +; WL 4,D2FG3A+FR1 +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +;#grapple +; .word ANI_SETMODE,MODE_NOAUTOFLIP +; .word ANI_SLAVE,S4_GRAPPLE,3 +; WL 8,D2GR3A+FR4 +; +; .word ANI_SLAVE,S4_GRAPPLE,2 +; WL 8,D2GR3A+FR5 +; +; .word ANI_SLAVE,S4_GRAPPLE,1 +; WL 8,D2GR3A+FR6 +; +; .word ANI_SLAVE,S4_GRAPPLE,0 +; WL 8,D2GR3A+FR7 +; +; .word ANI_SLAVE,S4_GRAPPLE,1 +; WL 8,D2GR3A+FR6 +; +; .word ANI_SLAVE,S4_GRAPPLE,2 +; WL 8,D2GR3A+FR5 +; +; WL ANI_GOTO,#grapple +; +; +;#***************************************************************************** +; +; SUBR dnk_4_break_lockup_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; WLW ANI_SET_XVEL,-30000h,1 ;facing relative +; .word ANI_FRICTION,3000h +; WL 3,D4FG3B+FR4 +; WL 3,D4FG3B+FR3 +; WL 3,D4FG3B+FR2 +; WL 3,D4FG3B+FR1 +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +;#***************************************************************************** +; +; SUBR dnk_4_lockup_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; WL 4,D4FG3B+FR1 +; WL 4,D4FG3B+FR2 +; WL 4,D4FG3B+FR3 +; .word ANI_ATTACK_ON, AMODE_GRAPPLE,24,72,48,28 ;mode,x,y,w,h +; WL 4,D4FG3B+FR4 +; .word ANI_ATTACK_OFF +; WL ANI_IFSTATUS,#grapple +; WL 4,D4FG3B+FR4 +; WL 4,D4FG3B+FR3 +; WL 4,D4FG3B+FR2 +; WL 4,D4FG3B+FR1 +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +;#grapple +; .word ANI_SETMODE,MODE_NOAUTOFLIP +; .word ANI_SLAVE,S2_GRAPPLE,3 +; WL 8,D4GR3B+FR3 +; +; .word ANI_SLAVE,S2_GRAPPLE,2 +; WL 8,D4GR3B+FR4 +; +; .word ANI_SLAVE,S2_GRAPPLE,1 +; WL 8,D4GR3B+FR5 +; +; .word ANI_SLAVE,S2_GRAPPLE,0 +; WL 8,D4GR3B+FR6 +; +; .word ANI_SLAVE,S2_GRAPPLE,1 +; WL 8,D4GR3B+FR5 +; +; .word ANI_SLAVE,S2_GRAPPLE,2 +; WL 8,D4GR3B+FR4 +; +; WL ANI_GOTO,#grapple +; + +#***************************************************************************** + + SUBR dnk_3_pile_driver_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here + + .word ANI_ATTACK_ON, AMODE_PUPPET,32,15,45,41 ;mode,x,y,w,h + +;#contpd + WWL ANI_WAITHITOPP,4,D4GH3A+FR8 ;D3PP3Z+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;Check to see if I have tried to pile drive Yokozuna! + + .word ANI_SOUND,82h ;Effort grunt + +;FIX!! Yoko check +; WL ANI_CODE,is_this_yoko +; WL ANI_IFSTATUS,#yoko_miss + +;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + + WWLLW ANI_SUPERSLAVE2,4,D3PP3Z+FR1,#puppet_tbl,0 + .word ANI_WAITHITGND + + .WORD ANI_ADD_MOVE,MOVE_C_5,3,2 + + WWLLW ANI_SUPERSLAVE2,4,D3PP3Z+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,20,D3PP3Z+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,D3PP3Z+FR4,#puppet_tbl,3 + + WL ANI_SET_YVEL,80000h +;Float toward the center of ring! + .ref set_xdrift + WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,3,D3PP3Z+FR5,#puppet_tbl,4 + .word ANI_OFFSET,0,26,0 ;x,y,z + + WWLLW ANI_SUPERSLAVE2,3,D3PP3Z+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,7,D4HS3B+FR6,#puppet_tbl,7 + +;do message + WL ANI_CODE,DO_PILE_MESS + +;Mess with the physics! + + WL ANI_SET_YVEL,-20000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +;Maybe do a bounce + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER + + WWLLW ANI_SUPERSLAVE2,4,D4HS3B+FR7,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,4,D4HS3B+FR8,#puppet_tbl,9 + + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + WL 18,D4HS3B+FR8 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + +; .word ANI_DETACH + +; .word ANI_SAFE_TIME,0 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#yoko_miss +;Cause Yoko to stand up out of his head hold and break free + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL ANI_CODE,CALL_MISS_YOKO + + WL 3,D3PP3Z+FR1 + WL 3,D3PP3Z+FR2 + WL 3,D3PP3Z+FR3 + WL 3,D3PP3Z+FR4 + WL ANI_CODE,#break + WL ANI_GOTO,#cont + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 3,D3PP3Z+FR1 + WL 3,D3PP3Z+FR2 + WL 3,D3PP3Z+FR3 + WL 3,D3PP3Z+FR4 + +#cont WL ANI_SET_YVEL,80000h + + WL 3,D3PP3Z+FR5 + .word ANI_OFFSET,0,26,0 ;x,y,z + + WL 3,D3PP3Z+FR6 + WL 3,D4HS3B+FR6 + WL 7,D4HS3B+FR6 + +; WL ANI_SET_YVEL,-20000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +;Maybe do a bounce + + ;impact + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 4,D4HS3B+FR7 + WL 4,D4HS3B+FR8 + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 18,D4HS3B+FR8 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_FACEDOWN + +; WL 20,D4GH3A+FR8 + + .word ANI_SAFE_TIME,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#set_opp_xflip + move *a13(ATTACH_PROC),a0,L + + move *a0(OBJ_CONTROL),a14 + xori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +;Check to see if I have tried to pile drive Yokozuna! + + SUBR is_this_yoko + + move *a13(ATTACH_PROC),a0,L + move *a0(WRESTLERNUM),a0 + cmpi 3,a0 + jrnz #ok + +;Yes, this is Yoko! + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets +#ok + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +;For Yoko breaking free +#break + move *a13(ATTACH_PROC),a2,L + .ref yok_3_head_held_brk_anim + movi yok_3_head_held_brk_anim,a0 +;a0 = * animation script +;a2 = * wrestler process + .ref change_anim_anim + calla change_anim_anim + rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H4AM3A,H3BF3A,H3PP3X + LWWW H4AM3A+FR5,48,-37,0 + LWWW H3BF3A+FR3,32,-34,0 + LWWW H3PP3X+FR1,9,-30,0 + LWWW H3PP3X+FR2,4,9,0 + LWWW H3PP3X+FR3,13,23,0 + LWWW H3PP3X+FR4,36,23,0 + LWWW H3PP3X+FR5,54,44,0 + LWWW H3PP3X+FR6,60,48,0 + LWWW H3PP3X+FR7,63,18,0 + LWWW H3PP3X+FR8,59,8,0 + .long 0 +#Razor + .ref R4AM4B,R3BF3A,R3GP3Z + LWWW R4AM4B+FR5,42,-33,0 + LWWW R3BF3A+FR9,26,-32,0 + LWWW R3GP3Z+FR1,14,-20,0 + LWWW R3GP3Z+FR2,14,-16,0 + LWWW R3GP3Z+FR3,23,6,0 + LWWW R3GP3Z+FR4,54,22,0 + LWWW R3GP3Z+FR5,63,41,0 + LWWW R3GP3Z+FR6,70,43,0 + LWWW R3GP3Z+FR7,66,32,0 + LWWW R3GP3Z+FR8,62,0,0 + .long 0 +#Taker + .ref U4MP4A,U4BF3Z,U3PP3X,U3GP3X + LWWW U4MP4A+FR7,46,-11,0 + LWWW U4BF3Z+FR1,28,-26,0 + LWWW U3PP3X+FR1,15,-22,1 + LWWW U3PP3X+FR2,18,-18,1 + LWWW U3PP3X+FR3,20,-22,1 + LWWW U3PP3X+FR4,36,-8,1 + LWWW U3PP3X+FR5,57,35,1 + LWWW U3PP3X+FR6,65,60,1 + LWWW U3GP3X+FR1,62,8,1 + LWWW U3GP3X+FR2,69,-7,1 + .long 0 +#Yokozuna + .ref Y4AM4A,Y3BF3A,Y3PP3Q,Y3FD3N + LWWW Y4AM4A+FR4,59,-27,0 + LWWW Y3BF3A+FR11,31,-25,0 + LWWW Y3PP3Q+FR1,16,-15,0 + LWWW Y3PP3Q+FR2,13,-17,0 + LWWW Y3PP3Q+FR3,26,-20,0 + LWWW Y3PP3Q+FR4,52,-18,0 + LWWW Y3PP3Q+FR6,50,5,0 + LWWW Y3PP3Q+FR7,52,13,0 + LWWW Y3FD3N+FR2,57,13,0 + LWWW Y3FD3N+FR3,58,22,0 + LWWW Y3FD3N+FR4,63,11,0 + .long 0 +#Shawn + .ref S4BF3A,S3BF3A,S3GP3X,S3OS3X,S3FD3X + LWWW S4BF3A+FR3,25,-24,0 + LWWW S3BF3A+FR5,14,-39,0 + LWWW S3GP3X+FR1,15,-24,0 + LWWW S3GP3X+FR2,12,-19,0 + LWWW S3GP3X+FR3,27,-5,0 + LWWW S3GP3X+FR4,53,23,0 + LWWW S3GP3X+FR5,67,39,0 + LWWW S3OS3X+FR8,71,31,1 + LWWW S3FD3X+FR2,69,23,0 + LWWW S3GP3X+FR6,66,4,0 + .long 0 +#BamBam + .ref B3BF3C,B4AM4A,B3PP3Q,B3FD3C + LWWW B3BF3C+FR5,48,-27,0 + LWWW B4AM4A+FR5,27,-24,0 + LWWW B3PP3Q+FR1,12,-26,0 + LWWW B3PP3Q+FR2,11,-15,0 + LWWW B3PP3Q+FR3,31,3,0 + LWWW B3PP3Q+FR4,57,16,0 + LWWW B3PP3Q+FR5,64,33,0 + LWWW B3PP3Q+FR6,57,40,0 + LWWW B3PP3Q+FR7,60,28,0 + LWWW B3PP3Q+FR7,61,46,0 +; LWWW B3PP3Q+FR7,61,46,0 +; LWWW B3FD3C+FR1,57,13,0 + .long 0 +#Doink + LWWW D3HT3Z+FR1,36,-41,1 + LWWW D3BF3A+FR1,27,-34,0 + LWWW D3PD3Z+FR1,16,-35,1 + LWWW D3PD3Z+FR2,13,-22,1 + LWWW D3PD3Z+FR3,23,0,1 + LWWW D3PD3Z+FR4,39,25,1 + LWWW D3PD3Z+FR5,46,33,1 + LWWW D3PD3Z+FR6,58,23,1 + LWWW D3PD3Z+FR8,58,7,1 + LWWW D3PD3Z+FR9,59,-3,1 + .long 0 +#Adam + .long 0 +#Lex + .ref L4AM4B,L3BF3B,L3GP3Z,L3FH3A,L3FD3B + LWWW L4AM4B+FR6,52,-39,0 + LWWW L3BF3B+FR1,9,-34,0 + LWWW L3GP3Z+FR1,13,-22,0 + LWWW L3GP3Z+FR2,16,-16,0 + LWWW L3GP3Z+FR3,27,-16,0 + LWWW L3GP3Z+FR4,46,-5,0 + LWWW L3GP3Z+FR5,63,13,0 + LWWW L3GP3Z+FR6,67,33,0 + LWWW L3FH3A+FR6,58,20,0 + LWWW L3FD3B+FR1,61,2,0 + .long 0 + + .ref hrt_break_neck2_anim + .ref shn_break_neck2_anim + .ref bam_break_neck2_anim + .ref und_break_neck2_anim + .ref lex_break_neck2_anim + .ref rzr_break_neck2_anim + .ref yok_break_neck2_anim +#rollout_tbl + .long hrt_break_neck2_anim,rzr_break_neck2_anim + .long und_break_neck2_anim + .long yok_break_neck2_anim + .long shn_break_neck2_anim,bam_break_neck2_anim + .long dnk_break_neck2_anim,0,lex_break_neck2_anim + + +#***************************************************************************** + + SUBR dnk_3_head_slam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here + + .word ANI_ATTACK_ON, AMODE_PUPPET,32,49,50,21 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,3,D4GH3A+FR8 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WL ANI_SET_YVEL,60000h ;50000h + +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + WL ANI_CODE,DO_HEAD_MESS + + .word ANI_SET_RPTCOUNT,3 ;2 times + .word ANI_CLR_BUTCOUNT + + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR3,#puppet_tbl,2 +;On the way down! + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR5,#puppet_tbl,3 + .word ANI_OFFSET,0,34,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,4 + .word ANI_WAITHITGND + .WORD ANI_ADD_MOVE,MOVE_C_6,3,1 + .word ANI_ZEROVELS + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR7,#puppet_tbl,5 + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,2,D4HS3B+FR8,#puppet_tbl,6 + +;Maybe do a bounce + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_FACESLAM1 + WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6 + +#try_rpt + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,3,#norepeat + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#slam_again + WL ANI_GOTO,#norepeat + +#slam_again + .WORD ANI_ADD_MOVE,MOVE_C_6,3,1 + .word ANI_CLR_BUTCOUNT + +;Slam him again using detach/reattach if button pressed again! + WL ANI_SLAVEANIM,#faced2_tbl + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 2,D4HS3B+FR8 + WL ANI_SET_YVEL,50000h + WL 2,D4HS3B+FR7 + WL 13,D4HS3B+FR6 + +;Reattach me to who I'm slamming + WL ANI_CODE,#reattach + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +#contz + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR7,#puppet_tbl,5 + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6 + +;Maybe do a bounce + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_FACESLAM2 ;Repeated headslam + WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6 + WL ANI_GOTO,#try_rpt + +#norepeat + WL ANI_CODE,CALL_SPECIAL_MOVE + + WL ANI_SLAVEANIM,#faced_tbl + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 18,D4HS3B+FR8 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,0 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 6,D4HS3B+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#reattach + move *a13(WHOIHIT),a0,L + move a0,*a13(ATTACH_PROC),L + move a13,*a0(ATTACH_PROC),L + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H3MS3Z,H3MS3X + LWWW H3MS3Z+FR1,36,-5,0 + LWWW H3MS3Z+FR2,39,0,0 + LWWW H3MS3Z+FR3,51,-1,0 + LWWW H3MS3Z+FR4,58,-4,0 + LWWW H3MS3Z+FR5,62,-6,0 + LWWW H3MS3Z+FR6,57,-11,0 + LWWW H3MS3X+FR5,71,-24,0 + .long 0 +#Razor + .ref R3MS3Z,R3MS3Q + LWWW R3MS3Z+FR1,48,-6,0 + LWWW R3MS3Z+FR2,46,5,0 + LWWW R3MS3Z+FR3,53,-2,0 + LWWW R3MS3Z+FR4,65,1,0 + LWWW R3MS3Z+FR5,71,-4,0 + LWWW R3MS3Z+FR6,73,-28,0 + LWWW R3MS3Q+FR1,76,-11,0 + .long 0 +#Taker + .ref U3MS3Z,U3CF3Q + LWWW U3MS3Z+FR1,37,9,0 + LWWW U3MS3Z+FR2,25,17,0 + LWWW U3MS3Z+FR3,28,0,0 + LWWW U3MS3Z+FR4,44,-1,0 + LWWW U3MS3Z+FR5,53,4,0 + LWWW U3MS3Z+FR6,55,-14,0 + LWWW U3CF3Q+FR1,61,-26,0 + .long 0 +#Yokozuna + .ref Y3MS3Z,Y3KF3B + LWWW Y3MS3Z+FR1,54,-8,0 + LWWW Y3MS3Z+FR2,53,12,0 + LWWW Y3MS3Z+FR3,53,10,0 + LWWW Y3MS3Z+FR4,59,6,0 + LWWW Y3MS3Z+FR5,61,-1,0 + LWWW Y3MS3Z+FR6,62,-27,0 + LWWW Y3KF3B+FR1,66,-2,0 + .long 0 +#Shawn + .ref S3MS3Z,S3CF3Z + LWWW S3MS3Z+FR1,31,-10,0 + LWWW S3MS3Z+FR2,29,3,0 + LWWW S3MS3Z+FR3,39,7,0 + LWWW S3MS3Z+FR4,55,5,0 + LWWW S3MS3Z+FR5,61,3,0 + LWWW S3MS3Z+FR6,74,-39,0 + LWWW S3CF3Z+FR1,82,-23,0 + .long 0 +#BamBam + .ref B3MS3Z,B3RL1A + LWWW B3MS3Z+FR1,47,2,0 + LWWW B3MS3Z+FR2,49,-4,0 + LWWW B3MS3Z+FR3,52,-2,0 + LWWW B3MS3Z+FR4,65,7,0 + LWWW B3MS3Z+FR5,70,21,0 + LWWW B3MS3Z+FR6,72,3,0 + LWWW B3RL1A+FR7,73,-15,0 + .long 0 +#Doink + LWWW D3GS3X+FR1,52,-15,0 + LWWW D3GS3X+FR3,45,2,0 + LWWW D3GS3X+FR4,51,-2,0 + LWWW D3GS3X+FR5,61,-4,0 + LWWW D3GS3X+FR7,68,-4,0 + LWWW D3GS3X+FR8,67,-39,0 + LWWW D3GS3X+FR9,75,-15,0 + .long 0 +#Adam + .long 0 +#Lex + .ref L3MS3Z,L3TF3X + LWWW L3MS3Z+FR1,55,-3,0 + LWWW L3MS3Z+FR2,44,4,0 + LWWW L3MS3Z+FR3,46,1,0 + LWWW L3MS3Z+FR4,57,-4,0 + LWWW L3MS3Z+FR5,60,1,0 + LWWW L3MS3Z+FR6,64,-26,0 + LWWW L3TF3X+FR1,60,-19,0 + .long 0 + + + .ref hrt_break_face2_anim,rzr_break_face2_anim + .ref und_break_face2_anim + .ref shn_break_face2_anim,bam_break_face2_anim + .ref lex_break_face2_anim + .ref yok_break_face2_anim + + .ref hrt_break_face_anim,rzr_break_face_anim + .ref und_break_face_anim + .ref shn_break_face_anim,bam_break_face_anim + .ref lex_break_face_anim + .ref yok_break_face_anim + + +#faced2_tbl + .long hrt_break_face2_anim,rzr_break_face2_anim + .long und_break_face2_anim + .long yok_break_face2_anim + .long shn_break_face2_anim,bam_break_face2_anim + .long dnk_break_face2_anim,0,lex_break_face2_anim + +#faced_tbl + .long hrt_break_face_anim,rzr_break_face_anim + .long und_break_face_anim + .long yok_break_face_anim + .long shn_break_face_anim,bam_break_face_anim + .long dnk_break_face_anim,0,lex_break_face_anim + + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR dnk_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 1,D3GS3X+FR9 + WL ANI_SET_YVEL,80000h + WL 3,D3GS3X+FR9 + WL 5,D3GS3X+FR10 + .word ANI_WAITHITGND + .word ANI_END + + +* Head slams into mat +;From head slam + + SUBR dnk_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 1,D3GS3X+FR8 + WL ANI_SET_YVEL,40000h + WL 2,D3GS3X+FR8 + WL 5,D3GS3X+FR9 + WL 5,D3GS3X+FR10 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 4,D3GS3X+FR8 + WL 4,D3GS3X+FR9 + WL 4,D3GS3X+FR10 + WL 4,D3GS3X+FR8 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 1,D3GS3X+FR8 ;Face down + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR dnk_3_head_hold2_anim +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 2,D4GH3A+FR1 + WL 2,D4GH3A+FR2 + WL 2,D4GH3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUPPET3,32,60,62,45 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,7,D4GH3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_GOTO,#gothim + + SUBR dnk_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + .word ANI_STARTATTACK,AT_LEAPING,9 + + WL 3,D4GH3A+FR1 + WL 3,D4GH3A+FR2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 7,999,60,40,90000h,TGT_HEAD,81,88,0 + LEAPATOPP 7,999,60,45,90000h,TGT_HEAD,60,88,0 + + WL 3,D4GH3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUPPET,32,60,62,45 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,7,D4GH3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missedb + +#gothim +;got him + .word ANI_SETWORD,USR_VAR2,0 + + WL ANI_CODE,CALL_SETUP + +; WLW ANI_SUPERSLAVE,#puppet_tbl,0 +; WL 3,D4GH3A+FR3 + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WLW ANI_SUPERSLAVE,#puppet_tbl,1 + WL 3,D4GH3A+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_SUPERSLAVE,#puppet_tbl,2 + WL 4,D4GH3A+FR5 + WLW ANI_SUPERSLAVE,#puppet_tbl,3 + WL 4,D4GH3A+FR7 + WLW ANI_SUPERSLAVE,#puppet_tbl,4 + WL 4,D4GH3A+FR8 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 3,D4GH3A+FR8 + +; .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + WL 3,D4GM3A+FR6 + WL 3,D4GM3A+FR7 + WL 3,D4GM3A+FR8 + WL 3,D4GM3A+FR10 + .word ANI_WAITHITGND + WL 3,D4GM3A+FR11 + WL 3,D4GM3A+FR12 + WL 3,D4GM3A+FR13 + WL 3,D4GM3A+FR14 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,D4GM3A+FR6 + WL 3,D4GM3A+FR7 + WL 3,D4GM3A+FR8 + WL 13,D4GM3A+FR10 + WL 3,D4GM3A+FR11 + WL 3,D4GM3A+FR12 + WL 3,D4GM3A+FR13 + WL 3,D4GM3A+FR14 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;new xvel is (attacker xvel + defender xvel)/4 + SUBR merge_xvels + + move @#opp_xvel,a0,L + move *a13(OBJ_XVEL),a1,L + add a1,a0 +; sra 2,a0 + move a0,*a13(OBJ_XVEL),L +#rets + rets + +;save opponent's x-velocity + SUBR store_opp_xvel + move *a13(CLOSEST_NUM),a0 + X32 a0 + .ref process_ptrs + addi process_ptrs,a0 + move *a0,a0,L + move *a0(OBJ_XVEL),a0,L + move a0,@#opp_xvel,L + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + .ref H2AH3A,H3HB3A + .ref R4AM4B,R3HB3A,R3BF3A + .ref U4AM4C,U4BF3A,U4BF3Z + .ref Y3LB3A,Y3BF3A + .ref S4AH3D,S4BF3A + .ref B4BF3A,B3HB3A,B3BF3C + .ref L4AH4B,L2AH2A,L3BF3A,L3BF3B +#Bret + LWWW H2AH3A+FR1,79,-1,0 + LWWW H2AH3A+FR1,79,-1,0 + LWWW H3HB3A+FR3,79,-1,0 + LWWW H3HB3A+FR2,79,-1,0 + LWWW H3HB3A+FR1,80,-1,0 +#Razor + LWWW R3HB3A+FR3,77,-1,0 + LWWW R3HB3A+FR3,77,-1,0 + LWWW R3HB3A+FR3,77,-1,0 + LWWW R3HB3A+FR2,77,-1,0 + LWWW R3BF3A+FR1,68,-1,0 +#Taker + LWWW U4AM4C+FR2,93,-1,0 + LWWW U4AM4C+FR2,93,-1,0 + LWWW U4BF3A+FR2,93,-1,0 + LWWW U4BF3A+FR3,93,-1,0 + LWWW U4BF3Z+FR3,56h,-1,0 +#Yokozuna + LWWW Y3LB3A+FR2,83,-1,0 + LWWW Y3LB3A+FR2,83,-1,0 + LWWW Y3LB3A+FR2,83,-1,0 + LWWW Y3LB3A+FR9,83,-1,0 + LWWW Y3BF3A+FR1,4fh,-1,0 +#Shawn + LWWW S4AH3D+FR5,77,-1,0 + LWWW S4AH3D+FR5,77,-1,0 + LWWW S4AH3D+FR5,77,-1,0 + LWWW S4BF3A+FR2,77,-1,0 + LWWW S4BF3A+FR3,77,-1,0 +#BamBam + LWWW B4BF3A+FR1,87,-4,0 + LWWW B4BF3A+FR1,87,-4,0 + LWWW B4BF3A+FR1,87,-4,0 + LWWW B3HB3A+FR2,55h,-1,0 + LWWW B3BF3C+FR5,55h,0,0 +#Doink + LWWW D3AK3A+FR3,73,0,0 + LWWW D3AK3A+FR3,73,0,0 + LWWW D3AK3A+FR3,73,0,0 + LWWW D3AK3A+FR2,73,0,0 +;Use first frame of arm wave instead of this frame! + LWWW D3BF3A+FR1,73,0,0 + +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,81,-1,0 + LWWW L4AH4B+FR3,81,-1,0 +; LWWW L2AH2A+FR3,81,-1,0 + LWWW L3BF3A+FR1,81,-1,1 + LWWW L3BF3A+FR2,81,-1,1 + LWWW L3BF3B+FR5,4fh,-1,0 + + .ref rzr_3_head_held_anim + .ref bam_3_head_held_anim + .ref und_3_head_held_anim + .ref yok_3_head_held_anim + .ref hrt_3_head_held_anim + .ref lex_3_head_held_anim + .ref shn_3_head_held_anim + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#***************************************************************************** + + SUBR dnk_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + +; WL 4,D3BF3Z+FR1 +; WL 4,D3BF3Z+FR2 + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,D3BF3A+FR2 + WL 4,D3BF3A+FR3 + WL 4,D3BF3A+FR4 + WL 4,D3BF3A+FR5 + WL 4,D3BF3A+FR6 + WL 4,D3BF3A+FR7 + WL 4,D3BF3A+FR8 + WL 4,D3BF3A+FR1 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR dnk_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,D3AK3A+FR2 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,D2AH2A+FR1 + WL 4,D2AH2A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,D2AH2A+FR3 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 2,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR dnk_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,D3AK3A+FR2 + WL 3,D1TT5Z+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* KNEE TO HEAD HELD OPPONENT + +; SUBR dnk_3_knee_to_head_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; .word ANI_SETPLYRMODE,MODE_NORMAL +; +; WL 4,D4KH3A+FR1 +; WL 4,D4KH3A+FR2 +; +; WL 1,D4KH3A+FR3 +; .word ANI_ATTACK_ON, AMODE_KNEE,14,51,62,21 ;mode,x,y,w,h +; WL 4-1,D4KH3A+FR3 +; .word ANI_ATTACK_OFF +; WL 10,D4KH3A+FR3 +; +; WL 5,D4KH3A+FR4 +; WL 5,D4KH3A+FR5 +; WL 5,D4KH3A+FR6 +; +; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + + SUBR dnk_3_knee_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_KNEE,9 + WL 3,D3SK3X+FR1 + WL 3,D3SK3X+FR2 + WL 3,D3SK3X+FR3 + + .word ANI_ATTACK_ON, AMODE_KNEE,20,62,68,16 + WL 3,D3SK3X+FR4 + .word ANI_ATTACK_OFF + WL 10,D3SK3X+FR4 + + WL 3,D3SK3X+FR5 + WL 3,D3SK3X+FR6 + WL 3,D3SK3X+FR7 + + .word ANI_FACEUP +; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; .word ANI_SETPLYRMODE,MODE_NORMAL +; +; WL 3,D4KM3A+FR2 +; WL 3,D4KM3A+FR3 +; WL 3,D4KM3A+FR4 +; +; .word ANI_ATTACK_ON, AMODE_KNEE,20,62,68,16 +; WL 3,D4KM3A+FR5 +; .word ANI_ATTACK_OFF +; WL 10,D4KM3A+FR5 +; WL 3,D4KM3A+FR6 +; WL 3,D4KM3A+FR7 +; WL 3,D4KM3A+FR8 +; WL 3,D4KM3A+FR9 +; WL 3,D4KM3A+FR10 +; +; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + + +; SUBR dnk_3_knees_to_head_anim +; +;;Need to do a move which kicks guys in the ass! +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; .word ANI_SETPLYRMODE,MODE_NORMAL +; +; .word ANI_SET_RPTCOUNT,3 ;2 times +; WL ANI_GOTO,#skp +;#rpt +; WL 3,D4KH3A+FR2 +;#skp +; .word ANI_CLR_BUTCOUNT +; +; WL 3,D4KH3A+FR1 +; WL 3,D4KH3A+FR2 +; WL 1,D4KH3A+FR3 +; .word ANI_ATTACK_ON, AMODE_HEADKNEES,14,51,62,21 ;mode,x,y,w,h +; WL 4,D4KH3A+FR3 +; .word ANI_ATTACK_OFF +; WL ANI_IFNOTSTATUS,#missed +; +; WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#exit +; .word ANI_DEC_RPTCOUNT +; WL ANI_IF_RPTCOUNT,#rpt +; +; .word ANI_CLR_BUTCOUNT +; +; WL 3,D4KH3A+FR2 +; WL 3,D4KH3A+FR1 +; +; WL 3,D4KH3A+FR2 +; WL 1,D4KH3A+FR3 +; .word ANI_ATTACK_ON, AMODE_HEADKNEES,14,51,62,21 ;mode,x,y,w,h +; WL 4,D4KH3A+FR3 +; .word ANI_ATTACK_OFF +; WL ANI_IFNOTSTATUS,#missed +; +; WWWL ANI_IF_BUTCOUNT_GE,SPUNCHB_COUNT,1,#do_pile +; +;#exit +;#missed +; .word ANI_DETACH +; .word ANI_OFFSET,0,0,-5 ;x,y,z +; WL 3,D4KH3A+FR2 +; WL 4,D4KH3A+FR1 +; .word ANI_FACEDOWN +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +; +;#do_pile +; WL 3+2,D4KH3A+FR2 +; WL 4+1,D4KH3A+FR1 +; +; .word ANI_DETACH +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; WL ANI_CHANGEANIM,dnk_3_pile_driver_anim +; .word ANI_END +; + + SUBR dnk_3_knees_to_head_anim + +;Need to do a move which kicks guys in the ass! + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SET_RPTCOUNT,3 ;2 times + WL ANI_GOTO,#skp +#rpt + .word ANI_STARTATTACK,AT_KNEE,10 + WL 3,D4KH3A+FR3 +#skp + WL ANI_SET_YVEL,30000h + .word ANI_CLR_BUTCOUNT + + WL 2,D4KM3A+FR2 + WL 2,D4KM3A+FR3 + WL 3,D4KM3A+FR4 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HEADKNEES,20,42,68,36 + WL 4,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + + .word ANI_CLR_BUTCOUNT + + WL 2,D4KM3A+FR4 + WL 2,D4KM3A+FR3 + WL ANI_SET_YVEL,40000h + WL 2,D4KM3A+FR2 + WL 2,D4KM3A+FR3 + WL 2,D4KM3A+FR4 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HEADKNEES,20,42,68,36 + WL 4,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WWWL ANI_IF_BUTCOUNT_GE,SPUNCHB_COUNT,1,#do_pile + +#exit +#missed + .word ANI_DETACH + .word ANI_OFFSET,0,0,-5 ;x,y,z + WL 2,D4KM3A+FR6 + WL 2,D4KM3A+FR7 + WL 2,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 2,D4KM3A+FR10 + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#do_pile + WL 2,D4KM3A+FR6 + WL 2,D4KM3A+FR7 + WL 2,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 2,D4KM3A+FR10 + + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,dnk_3_pile_driver_anim + .word ANI_END + + +#***************************************************************************** +* +* UPPERCUT TO HEAD HELD OPPONENT + + SUBR dnk_uppercut_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_KNEE,16 +; WL 4,D4GP3C+FR1 + WL 4,D4GP3C+FR2 + WL 4,D4GP3C+FR3 + + WL 4,D4GP3C+FR4 + WL 4,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_KNEE,44,57,32,37 ;mode,x,y,w,h + WL 10,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL 4 ,D4GP3C+FR7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;FIX!!! Make cooler... +#***************************************************************************** +* +* UPPERCUT TO HEAD HELD OPPONENT + + SUBR dnk_combo_uppercut_to_head_anim + + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + .WORD ANI_INC_COMBO +; .word ANI_STARTATTACK,AT_KNEE,9 + WL 2,D4GP3C+FR2 + WL 3,D4GP3C+FR3 + + WL 2,D4GP3C+FR4 + WL 2,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_KNEE,44,57,32,37 ;mode,x,y,w,h + WL 1,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + WL ANI_CODE,SET_OPTIMAL_POSITION + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels +; .word ANI_STARTATTACK,AT_KNEE,12 + WL 3,D4GP3C+FR6 + WL 3 ,D4GP3C+FR7 + + .word ANI_CLR_BUTCOUNT + + WL 2,D4GP3C+FR2 + WL 1,D4GP3C+FR3 + + WL 2,D4GP3C+FR4 + WL 1,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_KNEE,44,57,32,37 ;mode,x,y,w,h + WL 1,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels +; .word ANI_STARTATTACK,AT_KNEE,8 + WL 1,D4GP3C+FR6 + WL 2 ,D4GP3C+FR7 + + WL 1,D4GP3C+FR2 + WL 2,D4GP3C+FR3 + + WL 1,D4GP3C+FR4 + WL 1,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_KNEE,44,57,32,37 ;mode,x,y,w,h + WL 1,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO + .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels + WLW ANI_SET_XVEL,80000h,AM_FACE_REL + WL 1,D4GP3C+FR6 + WL 2 ,D4GP3C+FR7 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,dnk_4_box_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,dnk_4_combo_butt_anim + +#NEXT_CHECK_2 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#miss + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,dnk_4_knee_fall_anim + +#miss + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +SET_OPTIMAL_POSITION + MOVE *A13(WHOIHIT),A0,L + MOVE *A13(OBJ_XPOS),A2,L + MOVI [70,0],A1 + MOVE *A13(FACING_DIR),A3 + BTST MOVE_LEFT_BIT,A3 + JRZ NO_NEED_TO_NEG_XDIR + NEG A1 +NO_NEED_TO_NEG_XDIR + ADD A1,A2 + MOVE A2,*A0(OBJ_XPOS),L + RETS + + + SUBR dnk_uppercuts_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SETWORD,USR_VAR2,0 + + .word ANI_CLR_BUTCOUNT + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times +; .word ANI_STARTATTACK,AT_KNEE,10 + WL 3,D4GP3C+FR2 + WL 3,D4GP3C+FR3 + WL ANI_GOTO,#skp +#rpt + .word ANI_CLR_BUTCOUNT +; .word ANI_STARTATTACK,AT_KNEE,10 + + WL 2,D4GP3C+FR8 + WL 2,D4GP3C+FR9 + WL 2,D4GP3C+FR3 +#skp + WL 2,D4GP3C+FR4 + WL 2,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HEADKNEES,44,57,32,37 ;mode,x,y,w,h + WL 3,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + + .word ANI_SETWORD,USR_VAR2,1 + .word ANI_CLR_BUTCOUNT + + WL 2,D4GP3C+FR8 + WL 2,D4GP3C+FR9 + WL 2,D4GP3C+FR3 + + WL 2,D4GP3C+FR4 + WL 2,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HEADKNEES,44,57,32,37 ;mode,x,y,w,h + WL 3,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_CODE,#go_high + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit + + WL 3,D4GP3C+FR7 + + .ref dnk_flying_kick_anim + WL ANI_CHANGEANIM,dnk_flying_kick_anim + .word ANI_END + +#exit +#missed + .word ANI_OFFSET,0,0,-5 ;x,y,z + WL 3,D4GP3C+FR7 + .word ANI_DETACH + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;#ck_pile +;;Check for stick down and super punch down +; move a13,a0 +; .ref wres_get_stick_val_cur +; calla wres_get_stick_val_cur +; +; btst PLAYER_DOWN_BIT,a0 +; jrz #no +; +; move a13,a0 +; .ref wres_get_but_val_down +; calla wres_get_but_val_down +; btst PLAYER_SPUNCH_BIT,a0 +; jrz #no +; +; move *a13(ANIMODE),a1 +; ori MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets +; +;#no +; move *a13(ANIMODE),a1 +; andni MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets + + +#go_high +;Got rid of this because attach_proc is a zero after a hit +; move *a13(ATTACH_PROC),a0,L +; move *a0(WRESTLERNUM),A14 +; cmpi 3,a14 ;Yoko +; jrz #x +; movi 50000h,a14 +; move a14,*a0(OBJ_YVEL),L + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + + move *a14(WRESTLERNUM),a0 + cmpi 3,a0 ;Yoko too fat + jrz #x + + movi 50000h,a0 ;Go higher for last hit! + move a0,*a14(OBJ_YVEL),L +#x rets + + +#chk_count + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + move *a13(BUT_COUNT),a14 + jrz #fail + ori MODE_STATUS,a0 +#fail + move a0,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* #2 SLAP + + + SUBR dnk_2_slap_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,9 + WL 3,D2BS3A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0dh,999,44h,40,90000h,TGT_HEAD,96,105,-30 + + .word ANI_CLR_STATUS + WL 3,D2BS3A+FR2 + WL 07h,D2BS3A+FR3 + WL 3,D2BS3A+FR4 + + .word ANI_ATTACK_ON, AMODE_BACKHAND,75,81,36,28 ;mode,x,y,w,h + WL 3,D2BS3A+FR5 + WL 3,D2BS3A+FR6 + + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hit + + WL ANI_SET_YVEL,40000h + WL 10,D2BS3A+FR6 +#no_hit + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 8h,D2BS3A+FR6 + WL 3,D2BS3A+FR8 + WL 3,D2BS3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 SLAP + + SUBR dnk_4_slap_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,9 + WL 3,D4BS3A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0dh,999,44h,40,90000h,TGT_HEAD,96,105,30 + + .word ANI_CLR_STATUS + WL 3,D4BS3A+FR2 + WL 07h,D4BS3A+FR3 + WL 3,D4BS3A+FR4 + + .word ANI_ATTACK_ON, AMODE_BACKHAND,75,81,36,28 ;mode,x,y,w,h + WL 3,D4BS3A+FR5 + WL 3,D4BS3A+FR6 + + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hit2 + + WL ANI_SET_YVEL,40000h + WL 10,D4BS3A+FR6 +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 8,D4BS3A+FR6 + WL 3,D4BS3A+FR8 + WL 3,D4BS3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;ck_inair +; move *a13(ANIMODE),a1 +; andni MODE_STATUS,a1 +; move *a13(CLOSEST_NUM),a0 +; X32 a0 +; .ref process_ptrs +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(PLYRMODE),a0 +; cmpi MODE_INAIR2,a0 +; jrz #yes +; cmpi MODE_INAIR,a0 +; jrz #yes +; ori MODE_STATUS,a1 +;#yes +; move a1,*a13(ANIMODE) +; +; rets + +#***************************************************************************** +* +* EAR SLAP + + + SUBR dnk_2_earslap_anim + SUBR dnk_4_earslap_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SET_RPTCOUNT,4 ;3 times + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_LEAPING,14 + WL 3,D3ES3A+FR1 + + LEAPATOPP 0dh,999,50h,80,90000h,TGT_HEAD,106,105,-30 + + + .word ANI_CLR_STATUS + WL 3,D3ES3A+FR2 + + WL 5,D3ES3A+FR3 + WL 3,D3ES3A+FR4 + WL 3,D3ES3A+FR5 + + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h + .word ANI_SOUND,43h + .word ANI_SHAKER,22 + WL 3,D3ES3A+FR6 + + .word ANI_ATTACK_OFF + + + .WORD ANI_ADD_MOVE,MOVE_C_8,3,1 + WL ANI_IFSTATUS,#gothim + WL 10,D3ES3A+FR6 + WL ANI_GOTO,#no_hit2 + +#gothim + .word ANI_DAMAGEOPP,D_EARSLAP1 ;First one (+ table) + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_DEBRIS,300,4,120,100,0 ;%chance, tbl index, x,y,z off + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#fail + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_earslap +#fail + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hit3 + + WL ANI_SET_YVEL,40000h + WL 10,D3ES3A+FR6 +#no_hit3 + WL ANI_CODE,CALL_MISSES + WL 8,D3ES3A+FR6 + WL 3,D3ES3A+FR5 + WL 3,D3ES3A+FR4 + WL 3,D3ES3A+FR3 + WL 3,D3ES3A+FR2 + WL 3,D3ES3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#dnk_quick_earslap + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_EARSLAP1,14 + WL 2,D3ES3A+FR5 + WL 2,D3ES3A+FR4 + WL 2,D3ES3A+FR3 + WL 2,D3ES3A+FR2 + WL 2,D3ES3A+FR3 + WL 2,D3ES3A+FR4 + WL 2,D3ES3A+FR5 + + .word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h + .word ANI_SHAKER,22 + WL 3,D3ES3A+FR6 + .word ANI_ATTACK_OFF + +; .WORD ANI_ADD_MOVE,MOVE_C_8,3,1 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#fail2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_earslap +#fail2 + +; .word ANI_ATTACK_ON, AMODE_BACKHAND,90,74,40,42 ;mode,x,y,w,h + .word ANI_ATTACK_ON, AMODE_HDBUTT,70,74,60,42 ;mode,x,y,w,h + + .word ANI_SHAKER,22 + WL 3,D3ES3A+FR6 + .word ANI_ATTACK_OFF + + WL ANI_CODE,#set_opp_y + +;Stay in this buzz sequence longer if player keeps whacking on his punch button! + +; WL ANI_SLAVEANIM,#drift_tbl +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; +; .word ANI_DETACH + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hitx + + WL ANI_SET_YVEL,40000h + WL 10,D3ES3A+FR6 +#no_hitx + WL 15,D3ES3A+FR6 + +#no_hit2 + WL 8,D3ES3A+FR6 + WL 3,D3ES3A+FR5 + WL 3,D3ES3A+FR4 + WL 3,D3ES3A+FR3 + WL 3,D3ES3A+FR2 + WL 3,D3ES3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#set_opp_y + move *a13(WHOIHIT),a0,L + movi [4,0],a14 + move a14,*a0(OBJ_YVEL),L + rets + + SUBR dnk_4_combo_earslap_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SET_RPTCOUNT,3 ;2 times + +; .word ANI_STARTATTACK,AT_EARSLAP1,17 + + WL 3,D3ES3A+FR1 + + LEAPATOPP 0dh,999,50h,80,90000h,TGT_HEAD,106,105,-30 + + WL 3,D3ES3A+FR2 + + WL 5,D3ES3A+FR3 + WL 3,D3ES3A+FR4 + WL 3,D3ES3A+FR5 + + .word ANI_ZERO_XZVELS + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h + .word ANI_SOUND,43h + .word ANI_SHAKER,22 + WL 12,D3ES3A+FR6 + + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothimc + WL 12,D3ES3A+FR6 + WL ANI_GOTO,#no_hit2c + +#gothimc + .WORD ANI_INC_COMBO + .word ANI_DAMAGEOPP,D_EARSLAP2 ;First one (+ table) + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_CLR_BUTCOUNT + +#dnk_quick_combo_earslap +; .word ANI_STARTATTACK,AT_EARSLAP1,10 + WL 1,D3ES3A+FR5 + WL 2,D3ES3A+FR4 + WL 1,D3ES3A+FR3 + WL 2,D3ES3A+FR2 + WL 1,D3ES3A+FR3 + WL 2,D3ES3A+FR4 + WL 1,D3ES3A+FR5 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h + .word ANI_SHAKER,22 + WL 3,D3ES3A+FR6 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit2c + .WORD ANI_INC_COMBO + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_combo_earslap + + WL 3,D3ES3A+FR6 + WL 3,D3ES3A+FR5 + WL 3,D3ES3A+FR4 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WL ANI_CHANGEANIM,dnk_4_buzz2_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHEK2 + + WL 3,D3ES3A+FR3 + WL 3,D3ES3A+FR2 + WL 3,D3ES3A+FR1 + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WL ANI_CHANGEANIM,dnk_flying_kick_anim + +#NEXT_CHEK2 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#missed + + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + + WL 3,D3ES3A+FR3 + WL 3,D3ES3A+FR2 + WL 3,D3ES3A+FR1 + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,dnk_3_head_slam_anim + +#missed + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#no_hit2c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 8,D3ES3A+FR6 + WL 3,D3ES3A+FR5 + WL 3,D3ES3A+FR4 + WL 3,D3ES3A+FR3 + WL 3,D3ES3A+FR2 + WL 3,D3ES3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;#puppet_tbl +; .long #Bret +; .long #Razor +; .long #Taker +; .long #Yokozuna +; .long #Shawn +; .long #BamBam +; .long #Doink +; .long #Adam +; .long #Lex +; +;#Bret +; .ref H4AH3A +; LWWW H4AH3A+FR3,80,28,0 +;#Razor +; .ref R4AH4C +; LWWW R4AH4C+FR5,75,30,0 +;#Taker +; .ref U4AH3A +; LWWW U4AH3A+FR4,75,30,0 +;#Yokozuna +; .ref Y4AH4A +; LWWW Y4AH4A+FR3,95,5,0 +;#Shawn +; .ref S4AH3D +; LWWW S4AH3D+FR3,75,24,0 +;#BamBam +; .ref B4AH4A +; LWWW B4AH4A+FR3,75,15,0 +;#Doink +; .ref D3AH3B +; LWWW D3AH3B+FR2,75,30,0 +;#Adam +; .long 0 +;#Lex +; .ref L4AH4B +; LWWW L4AH4B+FR5,75,23,0 +; +;#drift_tbl +; .ref hrt_4_head_hit3_anim,rzr_4_head_hit3_anim +; .ref und_4_head_hit2_anim,yok_4_head_hit4_anim +; .ref shn_4_head_hit3_anim,bam_4_head_hit2_anim +; .ref dnk_4_head_hit3_anim,lex_4_head_hit3_anim +; +; .long hrt_4_head_hit3_anim +; .long rzr_4_head_hit3_anim +; .long und_4_head_hit2_anim +; .long yok_4_head_hit4_anim +; .long shn_4_head_hit3_anim +; .long bam_4_head_hit2_anim +; .long dnk_4_head_hit3_anim +; .long 0 +; .long lex_4_head_hit3_anim + + +#******************************* +* Smoke trail (Process) +* A10=*wrestler proc + + SUBR body_smoke + + clr a11 +#lp CREATE0 smokepuff + SLEEPK 1 + inc a11 + cmpi 17,a11 + jrlt #lp + + DIE + + +#******************************* +* Smoke trail puff (Process) +* A10=*wrestler proc + + SUBRP smokepuff + + move *a10(OBJ_ZPOSINT),a3 + movk 3,a0 + calla RNDRNG0 + subk 2,a0 + add a0,a3 ;-2 to 1 + addk 16,a3 + ori 1000h,a3 + + movk 3,a0 + calla RNDRNG0 + sll 5,a0 ;*32 + addi smoke_t,a0 + move *a0,a9,L + + movi [1,8000h],a6 + movi [-2,0],a7 + + move a11,a14 + sll 4,a14 + addi #x_tbl,a14 + move *a14,a1 + + move *a10(OBJ_XPOSINT),a0 + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a6 + neg a1 +#no_flip + add a1,a0 + sll 16,a0 ;X + + move a11,a14 + sll 4,a14 + addi #y_tbl,a14 + move *a14,a14 + + movi Y_SCALE_MULTIPLIER,a2 + move *a10(OBJ_ZPOSINT),a1 + mpyu a2,a1 + move *a10(OBJ_YPOSINT),a2 + sub a14,a2 + addi 0h,a2 + sll 16,a2 + sub a2,a1 + + movi CLDB1ORNG,a2 + movi DMAWNZ|M_3D|M_NOCOLL,a4 + movi CLSDEAD,a5 + + calla BEGINOBJ + + SLEEPK 3 + + jauc FRQDELDIE + +#x_tbl .word -14,-3,10,25,30,31,30,39,26,-3,17,32,53,54,41,32,45 +#y_tbl .word -14,-33,-51,-59,-39,-20,-2,-67,-75,-76,-84,-77,-57,-81 + .word -86,-98,-108 + + .def smoke_t +smoke_t + .long cldbw_l,cldblg_l,cldbgry_l,cldblg2_l + +cldbw_l + LW CLDB2,3 + LWL CLDB3,NEWPALET|3,ORNGPAL + LW CLDB4,2 + LWL CLD5,NEWPALET|2,WHTPAL + LW CLD6,2 + LW CLD7,2 + LW CLD8,2 + LW CLD9,2 + LWL0 CLD10,2 +cldblg_l + LW CLDB2,2 + LWL CLDB3,NEWPALET|3,ORNGPAL + LW CLDB4,2 + LWL CLD5,NEWPALET|2,LGRYPAL + LW CLD6,2 + LW CLD7,2 + LW CLD8,2 + LW CLD9,2 + LWL0 CLD10,2 +cldbgry_l + LW CLDB2,3 + LWL CLDB3,NEWPALET|2,ORNGPAL + LW CLDB4,2 + LWL CLD5,NEWPALET|2,GREYPAL + LW CLD6,2 + LW CLD7,2 + LW CLD8,2 + LW CLD9,2 + LWL0 CLD10,2 +cldblg2_l + LW CLDB2,2 + LWL CLDB3,NEWPALET|2,ORNGPAL + LWL CLDB4,NEWPALET|2,LGRYPAL + LW CLD5,2 + LW CLD6,2 + LW CLD7,2 + LW CLD8,2 + LW CLD9,2 + LWL0 CLD10,2 + +#******************************* +* Start sparks in AMODE +* A10=*wrestler proc + + SUBRP hand_sparks + + movi 11,a11 ;13 +#lp CREATE0 one_spark + CREATE0 one_spark + SLEEPK 3 + dsj a11,#lp + DIE + +GRAV equ 04000h ;9000h ;a000h ;6000h + +#******************************** +* Spark from hand buzzer (Process) +* A10=*wrestler proc + + SUBR one_spark + + movk >a,a0 + calla RNDRNG0 + subk 5,a0 + sll 14,a0 ;XVel + move a0,a6 + + movk >3,a0 + calla RNDRNG0 + addk 1,a0 + sll 16,a0 ;YVel + neg a0 + move a0,a7 + + move *a10(OBJ_ZPOSINT),a3 + movk 3,a0 + calla RNDRNG0 + subk 2,a0 + add a0,a3 ;-2 to 1 + addk 16,a3 + ori 1000h,a3 + + movi 40h,a1 + move *a10(OBJ_XPOSINT),a0 + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a1 +#no_flip + add a1,a0 + sll 16,a0 + + movi Y_SCALE_MULTIPLIER,a14 + move *a10(OBJ_ZPOSINT),a1 + mpyu a14,a1 + move *a10(OBJ_YPOSINT),a14 + addi 52h,a14 + sll 16,a14 + sub a14,a1 + + movi SPARK1,a2 + movi DMAWNZ|M_3D|M_NOCOLL,a4 + movi CLSDEAD,a5 + calla BEGINOBJ + + movk >f,a0 + calla RNDRNG0 + subk 7,a0 + sll 14,a0 + move a0,*a8(OZVEL),L + + movi spark_l,a9 + + movk 3,a11 + jruc #strt + +#lp dsj a10,#noani +#strt + move a11,a10 + move *a9,a0,L + jrz #die ;noani + addk 32,a9 + + move *a8(OCTRL),a1 + calla obj_aniq +#noani + SLEEPK 3 + move *a8(OYVEL),a2,L + addi GRAV*2,a2 + move a2,*a8(OYVEL),L + jruc #lp ;Going up? + +#die + clr a0 + move a0,*a8(OXVEL),L + move a0,*a8(OYVEL),L + move a0,*a8(OZVEL),L + + jauc DELOBJDIE + + +spark_l + .long SPARK2 + .long SPARK2 + .long SPARK2 + .long SPARK2 + .long SPARK2 + .long SPARK3 + .long SPARK3 + .long SPARK3 + + .long 0 + + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR dnk_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + +;Maybe put this z float in other neck2_anim seqs. +;FIX! + .ref ckzpos + WL ANI_CODE,ckzpos + +* .word ANI_GETUP,300 + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 15,D3FD3E+FR4 + WL 3,D3FD3E+FR5 + WL 3,D3FD3E+FR6 + WL 3,D3FD3E+FR7 + WL 3,D3FD3E+FR8 + .word ANI_WAITHITGND + WL 4,D3FD3E+FR9 + + ;hit. stay. + WL ANI_CODE,SMALL_BOUNCE +;Fix!!!??? +;Based on flip, this offset is fucked up! + .word ANI_OFFSET,-20,-3,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 20,D3RC3A+FR9 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + + SUBR dnk_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + WL 15,D4POGO+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_XFLIP + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + WL 3,D3FD3E+FR6 + WL 3,D3FD3E+FR7 + WL 3,D3FD3E+FR8 + .word ANI_WAITHITGND + WL 4,D3FD3E+FR9 + + ;hit. stay. + WL ANI_CODE,SMALL_BOUNCE +;Fix!!!??? +;Based on flip, this offset is fucked up! + .word ANI_OFFSET,-20,-3,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! +; .word ANI_GETUP,150 + WL 10,D3RC3A+FR9 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + + SUBR dnk_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WWWL ANI_IFROPE,RC_FRONT,100,#fall_back + + ;plenty o' room. roll over + WL 4,D3FD3E+FR4 + .word ANI_OFFSET,7,0,0 + WL 4,D3FD3E+FR5 + .word ANI_OFFSET,5,0,0 + WL 4,D3FD3E+FR6 + .word ANI_OFFSET,2,0,0 + WL 4,D3FD3E+FR7 + .word ANI_OFFSET,3,0,0 + WL 4,D3FD3E+FR8 + .word ANI_OFFSET,22,0,0 +; WL 4,D3FD3E+FR9 + .word ANI_OFFSET,25,0,0 + + ;impact + WL ANI_CODE,SMALL_BOUNCE + WL 10,D3GS3X+FR8 ;Face down + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + +#fall_back + ;too close to the ropes. fall back + WL 7,D3FD3E+FR3 + .word ANI_OFFSET,-12,0,0 + WL 4,D3FD3E+FR2 + .word ANI_OFFSET,-25,0,0 + WL 4,D3UC3A+FR9 + .word ANI_OFFSET,-1,0,0 + WL 4,D3UC3A+FR10 + WL 4,D3UC3A+FR11 + .word ANI_OFFSET,-3,0,0 + + .word ANI_XFLIP + WL 4,D3SA3A+FR9 + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + + +#****************************************************************************** + + SUBR dnk_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + + WL 2,D1TT5Z+FR2 ;2.5 + WL 2,D1TT5Z+FR3 ;3.5 + + SUBR dnk_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,8 + WL 4,D3PP3A+FR1 + + LEAPATOPP 8,999,80,80,40000h,TGT_HEAD,46,6,-2 + WL 4,D3PP3A+FR2 + WL 4,D3PP3A+FR3 + .word ANI_ZERO_XZVELS + +;FIX!! on other guys! +;PUPPET2 MODE! +;If no getup time for other guy, do a miss! + .word ANI_ATTACK_ON, AMODE_PUPPET2,21,1,43,23 ;mode,x,y,w,h + WL 5,D3PP3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WL ANI_CODE,CALL_SETUP + + WWLLW ANI_SUPERSLAVE2,4,D3PP3A+FR5,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,D3PP3A+FR6,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,D3PP3A+FR7,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,D3PP3A+FR8,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,D3PP3A+FR9,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,5,D4GH3A+FR8,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + .word ANI_SETWORD,USR_VAR2,0 + + WL 3,D4GH3A+FR8 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 35,D3PP3A+FR3 + WL 4,D3PP3A+FR2 + WL 4,D3PP3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR ck_getup + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + move *a13(WHOIHIT),a0,L + + move *a0(GETUP_TIME),a0 + jrz #misshim + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + +#misshim + rets + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H3GU4A,H3DU3A + LWWW H3GU4A+FR1,38,-35,0 + LWWW H3GU4A+FR3,53,-39,0 + LWWW H3DU3A+FR3,54,-34,1 + LWWW H3DU3A+FR4,58,-24,1 + LWWW H3DU3A+FR5,52,-28,1 + LWWW H3BF3A+FR1,51,-37,0 + .long 0 +#Razor + .ref R3GU4A,R3DU3B + LWWW R3GU4A+FR2,49,-33,1 + LWWW R3GU4A+FR3,50,-31,0 + LWWW R3GU4A+FR5,56,-39,0 + LWWW R3DU3B+FR2,57,-34,1 + LWWW R3DU3B+FR4,63,-25,1 + LWWW R3BF3A+FR4,52,-36,0 + .long 0 +#Taker + .ref U3DU3B + LWWW U3DU3B+FR2,45,-29,1 + LWWW U3DU3B+FR5,40,-33,1 + LWWW U3DU3B+FR6,46,-37,1 + LWWW U3DU3B+FR8,57,-32,1 + LWWW U3DU3B+FR10,61,-25,1 + LWWW U4BF3Z+FR5,56,-16,0 + .long 0 +#Yokozuna + .ref Y3GU2A + LWWW Y3GU2A+FR1,38,-22,0 + LWWW Y3GU2A+FR3,54,-22,0 + LWWW Y3GU2A+FR6,29,-37,0 + LWWW Y3GU2A+FR9,48,-32,0 + LWWW Y3GU2A+FR12,65,-22,0 + LWWW Y3BF3A+FR1,58,-25,0 + .long 0 +#Shawn + .ref S3GU4A,S3DU3A + LWWW S3GU4A+FR1,43,-33,1 + LWWW S3GU4A+FR2,49,-31,0 + LWWW S3GU4A+FR4,58,-39,0 + LWWW S3GU4A+FR5,58,-38,0 + LWWW S3DU3A+FR2,65,-36,1 + LWWW S3BF3A+FR1,43,-36,0 + .long 0 +#BamBam + .ref B3GU4A,B3DU3A + LWWW B3GU4A+FR3,46,-20,0 + LWWW B3GU4A+FR4,50,-28,0 + LWWW B3GU4A+FR6,46,-29,0 + LWWW B3GU4A+FR7,46,-35,0 + LWWW B3DU3A+FR2,58,-22,1 + LWWW B3BF3C+FR5,57,-28,0 + .long 0 +#Doink + LWWW D3DU3A+FR2,39,-26,1 + LWWW D3DU3A+FR3,49,-28,1 + LWWW D3DU3A+FR5,48,-27,1 + LWWW D3DU3A+FR8,55,-36,1 + LWWW D3HT3Z+FR1,56,-28,1 + LWWW D3BF3A+FR2,44,-35,0 + .long 0 +#Adam + .long 0 +#Lex + .ref L3DU3A,L3BF3B + LWWW L3DU3A+FR2,43,-34,1 + LWWW L3DU3A+FR4,31,-26,1 + LWWW L3DU3A+FR6,35,-36,1 + LWWW L3DU3A+FR7,40,-28,1 + LWWW L3DU3A+FR9,53,-31,1 + LWWW L3BF3B+FR2,54,-38,0 + .long 0 + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR dnk_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + WL ANI_CODE,CALL_THROWN_OUT + + WL 8,D3OS3A+FR4 + WL 8,D3OS3A+FR5 + WL 8,D3OS3A+FR6 + .word ANI_OFFSET,0,45,0 + WL 1,D3FD3E+FR2 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + + .word ANI_DAMAGE,D_HIPTOSS + .word ANI_SETWORD,DELAY_METER,0 + .word ANI_GETUP,500 + + WL ANI_CHANGEANIM,dnk_hitonground_xflip_anim + +#****************************************************************************** + + SUBR dnk_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,D4CO4A+FR1 + WL 4,D4CO4A+FR2 + WL 4,D4CO4A+FR3 + WL 4,D4CO4A+FR4 + WL 4,D4CO4A+FR5 + WL 4,D4CO4A+FR6 + + WL 4,D4CO4A+FR5 + WL 4,D4CO4A+FR4 + WL 4,D4CO4A+FR3 + WL 4,D4CO4A+FR4 + WL 4,D4CO4A+FR5 + WL 4,D4CO4A+FR6 + + WL 4,D4CO4A+FR5 + WL 4,D4CO4A+FR4 + WL 4,D4CO4A+FR3 + WL 4,D4CO4A+FR2 + WL 4,D4CO4A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .ref dnk_stand4_anim + WL ANI_CHANGEANIM,dnk_stand4_anim + .word ANI_END + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR dnk_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,D3BK3Z+FR7 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 25,D3BK3Z+FR7 + + WL 4,D3BK3Z+FR6 +; WL 4,D3UC3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + .word ANI_XFLIP + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 2,D3SA3A+FR2 + WL 3,D3SA3A+FR3 + WL 6,D3SA3A+FR4 + WL 3,D3SA3A+FR5 + + WL 3,D3SA3A+FR7 + WL 2,D3SA3A+FR8 + WL 3,D3SA3A+FR9 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 5,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/DNKSEQ4.ASM b/BACKUP/DNKSEQ4.ASM new file mode 100644 index 0000000..89dac46 --- /dev/null +++ b/BACKUP/DNKSEQ4.ASM @@ -0,0 +1,174 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 11/28/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "dnkseq4.asm" + .title "Dink animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "doinkimg.h" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF HIT_THE_MAT,SMALL_BOUNCE + .REF CALL_MISSES + .ref am_I_dizzy + .ref am_I_dead + .ref ckzpos + .ref ck_dizzy + .ref start_run_anim + .ref dnk_faceup_getup_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR dnk_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,D3SA3A+FR2 + .ref ckzpos + WL ANI_CODE,ckzpos + WL ANI_SET_YVEL,040000h + WL 3,D3SA3A+FR2 + WL 4,D3SA3A+FR3 + WL 4,D3SA3A+FR4 + WL 4,D3SA3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,D3SA3A+FR8 + + WL 10,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + + SUBR dnk_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; WL ANI_SET_YVEL,040000h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,D3SA3X+FR2 + WL ANI_CODE,ckzpos + + WL 3,D3SA3X+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + + WL ANI_SET_YVEL,030000h + WL 3,D3SA3A+FR2 + WL 4,D3SA3A+FR3 + WL 4,D3SA3A+FR4 + WL 4,D3SA3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,D3SA3A+FR8 + + WL 10,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + +#***************************************************************************** + + SUBR dnk_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,47,0 ;x,y,z + + WL 6,D3UC3A+FR4 + WL 6,D3UC3A+FR5 + WL 6,D3UC3A+FR6 + WL 1,D3UC3A+FR7 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,D3FD3E+FR2 + WL 3,D3FD3E+FR3 + WL 3,D3FD3E+FR4 + WL 3,D3FD3E+FR5 + WL 3,D3FD3E+FR6 + WL 3,D3FD3E+FR7 + WL 3,D3FD3E+FR8 + WL 3,D3FD3E+FR9 + + .word ANI_ZERO_XZVELS + +;;; .word ANI_XFLIP + + WL 8,D3RL1B+FR6 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/DNK_FUN.IMG b/BACKUP/DNK_FUN.IMG new file mode 100644 index 0000000..f2c4c9c Binary files /dev/null and b/BACKUP/DNK_FUN.IMG differ diff --git a/BACKUP/DNK_HIT.IMG b/BACKUP/DNK_HIT.IMG new file mode 100644 index 0000000..7e649e4 Binary files /dev/null and b/BACKUP/DNK_HIT.IMG differ diff --git a/BACKUP/DNK_JMS.IMG b/BACKUP/DNK_JMS.IMG new file mode 100644 index 0000000..ed6c0d5 Binary files /dev/null and b/BACKUP/DNK_JMS.IMG differ diff --git a/BACKUP/DNK_KIK.IMG b/BACKUP/DNK_KIK.IMG new file mode 100644 index 0000000..8bf2ceb Binary files /dev/null and b/BACKUP/DNK_KIK.IMG differ diff --git a/BACKUP/DNK_MJT.IMG b/BACKUP/DNK_MJT.IMG new file mode 100644 index 0000000..4df758d Binary files /dev/null and b/BACKUP/DNK_MJT.IMG differ diff --git a/BACKUP/DNK_MSC.IMG b/BACKUP/DNK_MSC.IMG new file mode 100644 index 0000000..78a6edc Binary files /dev/null and b/BACKUP/DNK_MSC.IMG differ diff --git a/BACKUP/DNK_NEW.IMG b/BACKUP/DNK_NEW.IMG new file mode 100644 index 0000000..dfd9f10 Binary files /dev/null and b/BACKUP/DNK_NEW.IMG differ diff --git a/BACKUP/DNK_PNC.IMG b/BACKUP/DNK_PNC.IMG new file mode 100644 index 0000000..5d08296 Binary files /dev/null and b/BACKUP/DNK_PNC.IMG differ diff --git a/BACKUP/DNK_RJR.IMG b/BACKUP/DNK_RJR.IMG new file mode 100644 index 0000000..b0890ee Binary files /dev/null and b/BACKUP/DNK_RJR.IMG differ diff --git a/BACKUP/DNK_SPC.IMG b/BACKUP/DNK_SPC.IMG new file mode 100644 index 0000000..029f9ad Binary files /dev/null and b/BACKUP/DNK_SPC.IMG differ diff --git a/BACKUP/DNK_WLK.IMG b/BACKUP/DNK_WLK.IMG new file mode 100644 index 0000000..d121722 Binary files /dev/null and b/BACKUP/DNK_WLK.IMG differ diff --git a/BACKUP/DOINK.ASM b/BACKUP/DOINK.ASM new file mode 100644 index 0000000..e753625 --- /dev/null +++ b/BACKUP/DOINK.ASM @@ -0,0 +1,3117 @@ +;Do some 5x damage moves, etc. +;Do speed up walk move - flash player white! +;Flash player on powerups! +;Stop near rope pile driver zeroing of y vel + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 9/3/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "doink.asm" + .title "doink specific game code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "jjxm.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" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + + .REF DO_REVERSAL + .REF DO_REVERSAL_MESS + + .ref ADD_IF_SILENT,JUMP_ROPES,CLIMB_ROPES + .ref check_dizzy + .ref create_damage_points + + .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 tally_damage,clear_damage_log + .ref inc_getup_time + + .ref change_anim1,change_anim1a + .ref change_anim2,change_anim2a + .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 climb_turnbuckle + + ;from CROWD.ASM + .ref crowd_cheer + + ;from DCSSOUND.ASM + .ref triple_sound + + ;from WRESTLE.ASM + .ref calc_line_x + .ref face_each_other + .ref lineup_grapple,lineup_headhold +; .ref break_lockup + + .ref slide_offscr + +;animation sequence + + .ref dnk_3_pile_driver_anim + .ref dnk_2_push2_anim + .ref start_run_anim + + .ref dnk_4_earslap_anim + .ref dnk_2_earslap_anim + .ref dnk_4_slap_anim + .ref dnk_2_slap_anim +; .ref dnk_4_slap2_anim +; .ref dnk_2_slap2_anim + .ref dnk_head_hit_dizzy_anim + .ref dnk_knockdwn_anim + .ref dnk_4_hammer_anim + + .ref wres_slave_anim + .ref dnk_zip_anim + + .ref dnk_stand2_anim,dnk_stand8_anim + .ref dnk_stand4_anim,dnk_stand6_anim + .ref dnk_torso2_anim,dnk_torso8_anim + .ref dnk_torso4_anim,dnk_torso6_anim + + .ref dnk_2_to_4_turn_anim,dnk_8_to_6_turn_anim ;stand + .ref dnk_4_to_2_turn_anim,dnk_6_to_8_turn_anim + .ref dnk_4_to_6_turn_anim,dnk_6_to_4_turn_anim + .ref dnk_2_to_8_turn_anim,dnk_8_to_2_turn_anim + .ref dnk_4_to_8_turn_anim,dnk_6_to_2_turn_anim + .ref dnk_2_to_6_turn_anim,dnk_8_to_4_turn_anim + + .ref dnk_2_to_4_turn2_anim,dnk_8_to_6_turn2_anim ;torso + .ref dnk_4_to_2_turn2_anim,dnk_6_to_8_turn2_anim + .ref dnk_4_to_6_turn2_anim,dnk_6_to_4_turn2_anim + .ref dnk_2_to_8_turn2_anim,dnk_8_to_2_turn2_anim + .ref dnk_4_to_8_turn2_anim,dnk_6_to_2_turn2_anim + .ref dnk_2_to_6_turn2_anim,dnk_8_to_4_turn2_anim + + .ref dnk_walk1_f2_anim,dnk_walk2_f2_anim,dnk_walk4_f2_anim + .ref dnk_walk5_f2_anim,dnk_walk6_f2_anim,dnk_walk8_f2_anim + + .ref dnk_walk1_f4_anim,dnk_walk2_f4_anim,dnk_walk4_f4_anim + .ref dnk_walk5_f4_anim,dnk_walk6_f4_anim,dnk_walk8_f4_anim + + .ref dnk_2_punch_anim,dnk_4_punch_anim + .ref dnk_2_buzz_anim,dnk_4_buzz_anim + .ref dnk_2_buzz2_anim,dnk_4_buzz2_anim + + .ref dnk_2_butt_anim,dnk_4_butt_anim + .REF dnk_combo_uppercut_to_head_anim + .ref dnk_4_combo_kick_anim + .REF CHECK_COMBO_GO + + .ref dnk_2_kick_anim,dnk_4_kick_anim + .ref dnk_2_spin_kick_anim,dnk_4_spin_kick_anim + .ref dnk_2_knee_anim,dnk_4_knee_anim + + .ref dnk_2_box_anim,dnk_4_box_anim + + .ref dnk_run_anim,dnk_run2_anim + + .ref dnk_4_blbowdrop_anim + .ref dnk_4_bjump_anim + + .ref dnk_2_lbowdrop_anim,dnk_4_lbowdrop_anim + .ref dnk_2_grabfling_anim + .ref dnk_4_grabfling_anim + + .ref dnk_heldoh_anim + + .ref dnk_diveofftb_anim + + .ref dnk_fly_cline_anim + .ref dnk_flying_kick_anim +; .ref dnk_sflying_kick_anim + + .ref dnk_4_head_hit2_anim + + .ref dnk_2_head_hit2_anim + .ref dnk_4_head_hit_anim,dnk_head_hit3_anim + .ref dnk_2_head_hit_anim,dnk_head_hit2_anim + .ref dnk_fall_back_anim + .ref dnk_2_faceup_getup_anim + .ref dnk_4_faceup_getup_anim + + .ref dnk_4_losebal_dizzy_anim + + .ref dnk_hitonground_anim + .ref dnk_4_stomp_anim,dnk_2_stomp_anim + .ref dnk_4_bstomp_anim + + .ref dnk_2ndwind_anim + .ref dnk_climb_up_anim,dnk_climb_down_anim + .ref dnk_4_block_anim,dnk_2_block_anim + .ref dnk_2_hitblock_anim,dnk_4_hitblock_anim + .ref dnk_2_hiptoss_anim,dnk_4_hiptoss_anim + .ref dnk_2_hiptoss2_anim,dnk_4_hiptoss2_anim + .ref dnk_4_push_anim,dnk_2_push_anim + .ref dnk_4_bigboot_anim,dnk_2_bigboot_anim + .ref dnk_4_losebal_anim + .ref dnk_dizzy_anim + .ref dnk_2_pin_anim + .ref dnk_4_pin_anim +; .ref dnk_2_lockup_anim,dnk_4_lockup_anim + .ref dnk_climbthru_side_anim,dnk_climbthru_bot_anim + .ref dnk_climbthru_top_anim,dnk_climbin_bot_anim + .ref dnk_climbin_top_anim,dnk_climbin_side_anim + + .ref dnk_belly_anim + .ref ck_ignore ;Ignore button press? + + .ref dnk_3_knee_to_head_anim + .ref dnk_3_knees_to_head_anim + .ref dnk_uppercut_to_head_anim + .ref dnk_uppercuts_to_head_anim + .ref dnk_get_buzz_anim + .ref wres_get_stick_rel_new + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +doink_secret_moves + +;These secret moves are triggered only after a move list seq has ended! You +;can't hold on the last button press and have it trigger! + +;Button held down moves need to be first entry + .long #buzz + .long #earslap + .long #grab_fling + .long #hammer + .long #grab_toss + .long #neck_grab + .long #boxing_pnch + .long 0 + + +****************************************************************************** +* +* SPECIAL MOVE PROCESSES - Secret moves +* +;a8=process of wrestler + + SUBR dnk_smove_table + .long dnk_hdhold_slam + .long dnk_hdhold_pile + .long dnk_hdhold_combo1 + .long dnk_hdhold_combo2 + .long dnk_grab_toss_air + .long dnk_walk_fast + .long 0 + + +******************************************************************************* +#buzz + move a13,a0 + calla wres_get_but_val_up + btst PLAYER_PUNCH_BIT,a0 + jrz #no_punch + +;FIX!! Give some jumping velocity + +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #no_punch + + move *a13(PLYRNUM),a0 + calla get_punch_dtime + cmpi 100,a0 ;> min? + jrlt #no_punch +; cmpi 6*60,a0 ;< max? +; jrgt #no_punch + +;Held punch button down for more than 2 seconds. +;If opponent is on ground, try hammer move + + callr scrt_buzz + setc + rets + +#no_punch + clrc + rets + + +scrt_buzz + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #ok + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrz #leapbuzz + +;If stick is toward opponent, then do sliding/leaping buzzer + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #norm + +; movi [7,0],a0 +; move *a13(FACING_DIR),a14 +; btst MOVE_RIGHT_BIT,a14 +; jrnz #abs ;right +; neg a0 ;left +;#abs +; move a0,*a13(OBJ_XVEL),L +; movi [3,0],a0 +; move a0,*a13(OBJ_YVEL),L + +#leapbuzz + FACE24 dnk,buzz2_anim + calla change_anim1a + + rets + +#norm + FACE24 dnk,buzz_anim + calla change_anim1a + + rets + +#ok + movi dnk_4_buzz_anim,a0 + calla change_anim1a + + rets + + +******************************************************************************* +; BITS MASK +#boxing_pnch + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word 8000h | 60 ;max + .long scrt_glove + +scrt_glove + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + MOVE *A13(COMBO_COUNT),A0 + JRNZ #out + + FACE24 dnk,box_anim + calla change_anim1a + WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 + + rets + +******************************************************************************* +#hammer + .word B_SKICK, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long scrt_hammer + +scrt_hammer + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + + movi dnk_4_hammer_anim,a0 + calla change_anim1a + + rets + +******************************************************************************* + +#earslap + .word B_PUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_DOWN_TOWARD, J_REAL_LR + .word J_DOWN, J_REAL_LR + .word 8000h | 50 ;max + .long #scrt_earslap + +#scrt_earslap + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + movi dnk_4_earslap_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long scrt_neck + +scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + .ref dnk_3_head_hold_anim + movi dnk_3_head_hold_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#grab_fling + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long scrt_grabfling + +scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + FACE24 dnk,hiptoss_anim + calla change_anim1a + + WRSND W_DOINK,GRABFLING_T1,GRABFLING_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + FACE24 dnk,grabfling_anim + calla change_anim1a + + WRSND W_DOINK,GRABFLING_T1,GRABFLING_T2 + rets + +******************************************************************************* + +#grab_toss + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long scrt_hiptoss + +scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit + + move *a13(CLOSEST_DIST),a0 + cmpi 68h,a0 + jrgt #out + +#doit + FACE24 dnk,hiptoss_anim + calla change_anim1a + + WRSND W_DOINK,GRABFLING_T1,GRABFLING_T2 + rets + +******************************************************************************* + +;#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 +; +;scrt_2ndwind +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #out +; +; movi dnk_2ndwind_anim,a0 +; calla change_anim1a +; + +#out rets + +******************************************************************************* + +#* +dnk_hdhold_slam + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_UP,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_DOWN_AWAY|J_DOWN_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#slam + .ref dnk_3_head_slam_anim + movi dnk_3_head_slam_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* +#* +dnk_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,0,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#slam + movi dnk_3_pile_driver_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +; WAITSWITCH_DWN J_UP_TOWARD,0,#lp +; WAITSWITCH_DWN J_TOWARD,0,#lp +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp +; WAITSWITCH_DWN J_DOWN,0,#lp +; WAITSWITCH_DWN B_SKICK,J_DOWN_AWAY,#lp +; WAITSWITCH_DWN J_AWAY,J_UP|J_DOWN,#lp +; WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp +; WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp +; WAITSWITCH_DWN J_DOWN_AWAY,0,#lp +; WAITSWITCH_DWN J_DOWN,0,#lp +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp +; WAITSWITCH_DWN J_TOWARD,0,#lp + + + +******************************************************************************* + +#* +dnk_hdhold_combo1 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_DOWN_TOWARD|J_UP_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + MOVI dnk_combo_uppercut_to_head_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* + +#* +dnk_hdhold_combo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SKICK,J_DOWN_TOWARD|J_UP_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + movi dnk_4_combo_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* +#* +dnk_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_PUNCH,J_DOWN_AWAY|J_UP_AWAY,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + +;Don't do it when he is on ground + PUSH a13 + move a8,a13 + calla get_opp_plyrmode + PULL a13 +;Don't do it when he is on ground + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 +; cmpi AT_SPINKIK,a0 +; jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #lp + + FACE24 dnk,hiptoss_anim + move a0,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_DOINK,GRABFLING_T1,GRABFLING_T2 + + SLEEP 60 + jruc #lp + +#doit2 FACE24 dnk,hiptoss2_anim + move a0,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_DOINK,GRABFLING_T1,GRABFLING_T2 + + SLEEP 60 + + jruc #lp + + +******************************************************************************* + +#* +dnk_walk_fast + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(WALK_FAST),a0 + jrnz #lp0 + move *a8(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + jrnz #lp0 + + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN_AWAY,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_UP_TOWARD,0,#lp + WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_UP_AWAY,0,#lp + + + move *a8(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + jrnz #lp0 + + movi 30000h,a0 + move a0,*a8(OBJ_YVEL),L + + movi 15*60,a0 + move a0,*a8(WALK_FAST) + +;Doink speech call +;211h + movi 211h,a0 + .ref ADD_VOICE + calla ADD_VOICE +; calla IF_SILENT_ADD_VOICE + + movi 0101h,a14 + move a14,*a8(OBJ_CONST) + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + movi 0101h,a14 + move a14,*a8(OBJ_CONST) + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEP 30 + + movi 0b2h,a0 ;Honk + calla triple_sound + + SLEEPK 18 + + movi 0b2h,a0 ;Honk + calla triple_sound + + SLEEPK 18 + + movi 0b2h,a0 ;Honk + calla triple_sound + +#tag SLEEPK 5 + move *a8(WALK_FAST),a0 + jrnz #tag + + movi 0101h,a14 + move a14,*a8(OBJ_CONST) + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a8(OBJ_CONTROL) + + DIE + + jruc #lp +;DIE! + +#***************************************************************************** + + SUBR doink_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi dnk_stand4_anim,a0 + calla change_anim1a + + movi dnk_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE0 do_taunt + PULL a10 + + rets + +#p1 + movi dnk_stand2_anim,a0 + calla change_anim1a + + movi dnk_torso2_anim,a0 + calla change_anim2a + + rets + + SUBR do_taunt +;a10=*wrestler proc +;Do a taunt at start of rounds + + SLEEP 60 + .ref HALT + move @HALT,a0 + jaz SUCIDE + + movi 250,a0 + .ref RNDPER + calla RNDPER + jals SUCIDE + + .ref current_round + move @current_round,a0 + cmpi 1,a0 + jrz #tag +;Start of 2 or 3rd round! Only drones can taunt here! + move *a10(PLYRNUM),a0 + cmpi 2,a0 + jalt SUCIDE +;Drone to taunt +#tag PUSH a13 + move a10,a13 + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #taunt_t,a0 + move *a0,a0,L + + calla change_anim1a + PULL a13 + + DIE + + .ref hrt_4_taunt_anim,rzr_4_taunt_anim,und_4_taunt_anim + .ref yok_4_taunt_anim,shn_4_taunt_anim,bam_4_taunt_anim + .ref lex_4_taunt_anim + .ref dnk_4_taunt_anim + +#taunt_t + .long hrt_4_taunt_anim ;0 Bret Hart + .long rzr_4_taunt_anim ;1 Razor Ramon + .long und_4_taunt_anim ;2 Undertaker + .long yok_4_taunt_anim ;3 Yokozuna + .long shn_4_taunt_anim ;4 Shawn Michaels + .long bam_4_taunt_anim ;5 Bam Bam + .long dnk_4_taunt_anim ;6 Doink + .long 0 ;7 spare + .long lex_4_taunt_anim ;8 Lex Luger + .long 0 ;9 Referee + +#***************************************************************************** +* +* DOINKS CONTROL CODE +* +* a13 = * doink process + + SUBR move_doink + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + movi doink_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 + .long mode_normal ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .ref mode_choking + .long mode_choking ;25 + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(I_WILL_DIE),a0 + jrz #nope +;Player has died amidst a combo... +;Knock me down. + movi dnk_fall_back_anim,a0 + calla change_anim1a + +;Zero health bar + movi -10,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + SETMODE DEAD + + clr a0 + move a0,*a13(I_WILL_DIE) + + rets + +#nope +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + +;Any button causes a pin + move a13,a0 + calla wres_get_but_val_cur + move a0,a0 + jrz #opp_not_dead + +;Make sure opponent is on the ground! +;First, see if opponent is on the ground. + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #opp_not_dead + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a1,L + + move *a1(OBJ_YPOS),a0,L + move *a1(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + +;Opponent is on ground. +;Now check to see if I'm attached to him in puppet mode! + move *a13(ATTACH_PROC),a1,L + jrz #done + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 +;If I'm attached to him, let the move finish! + jrz #opp_not_dead +#done + + FACE24 dnk,pin_anim + calla change_anim1a + + rets + +#opp_notgnd +#opp_not_dead + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #no_climb + + 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 + clr a0 + move a0,*a13(ATTACK_TYPE) +#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 + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets +#no_climb + + calla execute_walk + +#no_interrupt + rets + +#action_table +;This table accounts for 2 buttons being hit simultaneously. + + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +;Unmolested list... +; .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 ;0 + + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 headbutt +* dizzy " " +* normal > normal punch +* dizzy " " +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running hiptoss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 50, 45,#punch_hdbutt,#punch_punch ;0 + JJXM RUNNING, 50, 45,#punch_hdbutt,#punch_punch ;1 + JJXM INAIR, 50, 45,#punch_hdbutt,#punch_punch ;2 + JJXM ATTACHED, 50, 45,#punch_hdbutt,#punch_punch ;3 + JJXM ONGROUND, 120,120,#punch_lbowdrop,#punch_punch ;4 + JJXM BOUNCING, 50, 45,#punch_hdbutt,#punch_punch ;1 +; JJXM BOUNCING, #punch_rets ;5 + JJXM ONTURNBKL, 50, 45,#punch_hdbutt,#punch_punch ;6 + JJXM BLOCK, 50, 45,#punch_hdbutt,#punch_punch ;7 + JJXM DIZZY, 50, 45,#punch_hdbutt,#punch_punch ;8 + JJXM DEAD, 96,112,#punch_lbowdrop,#punch_punch ;9 + JJXM OPPOVERHEAD, 50, 45,#punch_hdbutt,#punch_punch ;10 + JJXM CLIMBTURNBKL, #punch_punch ;11 + JJXM WAITANIM, 50, 45,#punch_hdbutt,#punch_punch ;12 + JJXM GRAPPLE, 50, 45,#punch_hdbutt,#punch_punch ;13 + JJXM MASTER, 50, 45,#punch_hdbutt,#punch_punch ;14 + JJXM SLAVE, 50, 45,#punch_hdbutt,#punch_punch ;15 + JJXM HEADHOLD, 50, 45,#punch_hdbutt,#punch_punch ;16 + JJXM HEADHELD, 50, 45,#punch_hdbutt,#punch_punch ;19 + JJXM PUPPET, 50, 45,#punch_hdbutt,#punch_punch ;20 + JJXM INAIR2, 50, 45,#punch_hdbutt,#punch_punch ;21 + JJXM_END + +#punch_rets + rets + +***** +#punch_punch +std_punch + + FACE24 dnk,punch_anim + calla change_anim1a + + WRSND W_DOINK,PUNCH_T1,PUNCH_T2 + + rets + +***** +#punch_hdbutt + + FACE24 dnk,butt_anim + calla change_anim1a + + WRSND W_DOINK,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#punch_lbowdrop + + FACE24 dnk,lbowdrop_anim + calla change_anim1a + + WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 + + rets + +***** +;#punch_yankdown +;std_yankdown +; +; move *a13(INRING),a0 +; jrnz std_punch ;outside of ring +; +; movi dnk_2_yank_anim,a0 +; calla change_anim1a +; +; WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 +; +; rets + +;***** +;#punch_hiptoss +;std_hiptoss +; +; movi dnk_hiptoss_anim,a0 +; calla change_anim1a +; +; WRSND W_DOINK,HIPTOSS_T1,HIPTOSS_T2 +; +; rets + +***** +;maybe this doesn't happen automatically +; +; calla get_opp_plyrmode +; cmpi MODE_DIZZY,a0 +; jrne #opp_not_dizzy +; move *a13(CLOSEST_XDIST),a0 +; cmpi 80,a0 +; jrlt #opp_not_dizzy +; FACE24 dnk,box_anim +; calla change_anim1a +; WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 +***** + +************ +#block ;2 +std_block + FACE24 dnk,block_anim + calla change_anim1 + + rets + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 144 160 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 85, 45,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 85, 45,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 85, 45,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 85, 45,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 136,112,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, 85, 45,#spunch_special,#spunch_slap ;1 +; JJXM BOUNCING, #spunch_rets ;5 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 85, 45,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 85, 45,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 96,112,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 85, 45,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 85, 45,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 85, 45,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 85, 45,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 85, 45,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 85, 45,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, do_pile ;19 + JJXM PUPPET, 85, 45,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 85, 45,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +***** +#spunch_slap + +; cmpi 60,a2 +; jrgt #norm +; cmpi 6eh,a1 +; jrlt #close +; +;#norm + FACE24 dnk,slap_anim + calla change_anim1a + + WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 + + rets + +;#close +; cmpi 70,a1 +; jrlt #norm +; +; FACE24 dnk,slap2_anim +; calla change_anim1a +; +; WRSND W_DOINK,PUNCH_T1,PUNCH_T2 +; +; rets + +***** +#spunch_special +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrz #cont + + move *a13(CLOSEST_XDIST),a1 + cmpi 50,a1 + jrgt std_punch + jruc #hdbutt +#cont + .ref dnk_3_head_hold2_anim + movi dnk_3_head_hold2_anim,a0 + calla change_anim1a + + WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 + + rets + +#hdbutt + + FACE24 dnk,butt_anim + calla change_anim1 + + WRSND W_DOINK,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#spunch_lbowdrop + .ref dnk_2_hair_pickup_anim + .ref dnk_4_hair_pickup_anim +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 dnk,hair_pickup_anim + calla change_anim1 + WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no FACE24 dnk,lbowdrop_anim + calla change_anim1 + WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 knee +* dizzy " " +* normal > normal kick +* dizzy " " +* +* onground < 120 120 stomp +* onground > normal kick +* +* running normal kick +* bouncing normal kick +* +* onturnbkl normal kick +* climbturnbkl normal kick +* + JJXM_INIT + JJXM NORMAL, 50, 92,#kick_knee,#kick_kick ;0 + JJXM RUNNING, 120,92,#kick_kick,#kick_flyingkick ;1 + JJXM INAIR, 50, 92,#kick_knee,#kick_kick ;2 + JJXM ATTACHED, 50, 92,#kick_knee,#kick_kick ;3 + JJXM ONGROUND, 120,120,#kick_stomp,#kick_kick ;4 + JJXM BOUNCING, 120,92,#kick_kick,#kick_flyingkick ;5 + JJXM ONTURNBKL, #kick_kick ;6 + JJXM BLOCK, 50, 92,#kick_knee,#kick_kick ;7 + JJXM DIZZY, 50, 92,#kick_knee,#kick_kick ;8 + JJXM DEAD, 96,112,#kick_stomp,#kick_kick ;9 + JJXM OPPOVERHEAD, 50, 92,#kick_knee,#kick_kick ;10 + JJXM CLIMBTURNBKL, #kick_kick ;11 + JJXM WAITANIM, 50, 92,#kick_knee,#kick_kick ;12 + JJXM GRAPPLE, 50, 92,#kick_knee,#kick_kick ;13 + JJXM MASTER, 50, 92,#kick_knee,#kick_kick ;14 + JJXM SLAVE, 50, 92,#kick_knee,#kick_kick ;15 + JJXM HEADHOLD, 50, 92,#kick_knee,#kick_kick ;16 + JJXM HEADHELD, 50, 92,#kick_knee,#kick_kick ;19 + JJXM PUPPET, 50, 92,#kick_knee,#kick_kick ;20 + JJXM INAIR2, 50, 92,#kick_knee,#kick_kick ;21 + JJXM_END + +***** +#kick_flyingkick + + movi dnk_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +#kick_kick +std_kick + + FACE24 dnk,kick_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + +***** +#kick_knee + + FACE24 dnk,knee_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + +***** +#kick_stomp + + FACE24 dnk,stomp_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 144 160 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 60 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 60, 60,#skick_special,#skick_kick ;0 + JJXM RUNNING, #skick_bigboot ;1 + JJXM INAIR, 60, 60,#skick_special,#skick_kick ;2 + JJXM ATTACHED, 60, 60,#skick_special,#skick_kick ;3 + JJXM ONGROUND, 144,160,#skick_stomp,std_kick ;4 + JJXM BOUNCING, #skick_bigboot ;5 + JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick ;6 + JJXM BLOCK, 60, 60,#skick_special,#skick_kick ;7 + JJXM DIZZY, 60, 60,#skick_special,#skick_kick ;8 + JJXM DEAD, 144,160,#skick_stomp,std_kick ;9 + JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick ;10 + JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick ;11 + JJXM WAITANIM, 60, 62,#skick_special,#skick_kick ;12 + JJXM GRAPPLE, 60, 62,#skick_special,#skick_kick ;13 + JJXM MASTER, 60, 62,#skick_special,#skick_kick ;14 + JJXM SLAVE, 60, 62,#skick_special,#skick_kick ;15 + JJXM HEADHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM HEADHELD, std_kick + JJXM PUPPET, 60, 62,#skick_special,#skick_kick ;20 + JJXM INAIR2, 60, 60,#skick_special,#skick_kick ;21 + JJXM_END + +***** +#skick_kick + + FACE24 dnk,spin_kick_anim + calla change_anim1a + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + rets + +***** +#skick_special +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrz #cont2 + + FACE24 dnk,knee_anim + calla change_anim1 + +;- correct sounds? + WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 + rets + +#cont2 + .ref dnk_4_knee_fall_anim + movi dnk_4_knee_fall_anim,a0 + calla change_anim1 + + WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 + rets + + +***** +#skick_stomp + + FACE24 dnk,stomp_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + +***** +#skick_bigboot ;we can probably get away with just a #4 big boot + + FACE24 dnk,bigboot_anim + calla change_anim1a + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + + +************ + +#graboh ;8 + +; FACE24 dnk,graboh_anim +; calla change_anim1a +; +; WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 + + rets + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ 60000h ;50000h +#XRUN2_VAL equ 88000h +#ZDRIFT_VAL equ 20000h ;18000h + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + + move *a13(WALK_FAST),a14 + jrz #no + movi #XRUN2_VAL,a0 +#no + + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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_stick_val_cur + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#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 + + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + + 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 + .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 +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 belly flop +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline ;0 + JJXM RUNNING, #punch_clothesline ;1 + JJXM INAIR, #punch_clothesline ;2 + JJXM ATTACHED, #punch_clothesline ;3 + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_lbowdrop ;4 + JJXM BOUNCING, #punch_clothesline ;5 + JJXM ONTURNBKL, #punch_clothesline ;6 + JJXM BLOCK, #punch_clothesline ;7 + JJXM DIZZY, #punch_clothesline ;8 + JJXM DEAD, 176,176,#punch_bellyflop,#punch_lbowdrop ;9 + JJXM OPPOVERHEAD, #punch_clothesline ;10 + JJXM CLIMBTURNBKL, #punch_clothesline ;11 + JJXM WAITANIM, #punch_clothesline ;12 + JJXM GRAPPLE, #punch_clothesline ;13 + JJXM MASTER, #punch_clothesline ;14 + JJXM SLAVE, #punch_clothesline ;15 + JJXM HEADHOLD, #punch_clothesline ;16 + JJXM HEADHELD, #punch_clothesline ;19 + JJXM PUPPET, #punch_clothesline ;20 + JJXM INAIR2, #punch_clothesline ;21 + JJXM_END + + +***** +#punch_clothesline + +;Only allow clothesline if near center of ring, and running toward opponent + move *a13(MOVE_DIR),a1 + btst MOVE_LEFT_BIT,a1 + jrnz #lft +;Moving right + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID+70h,a0 + jrlt #ok + +; LOCKUP + + rets + +#lft +;Moving left + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID-70h,a0 + jrgt #ok + +; LOCKUP + + rets +#ok + move *a13(MOVE_DIR),a1 + move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi #mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrz #yes + +; LOCKUP + + rets +#yes + +;Will lunge toward opponent +;Is facing opponent - nt running away from him! + movi dnk_fly_cline_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +#mv_tbl .long 0,0,0,0,0,MOVE_RIGHT_BIT,MOVE_RIGHT_BIT + .long 0,0,MOVE_LEFT_BIT,MOVE_LEFT_BIT + +***** +#punch_lbowdrop +#punch_bellyflop + + movi dnk_belly_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +;#punch_lbowdrop +; +; FACE24 dnk,lbowdrop_anim +; calla change_anim1a +; +; WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 +; +; rets + +************ +#block ;2 + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 running stomp +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick ;0 + JJXM RUNNING, #kick_flyingkick ;1 + JJXM INAIR, #kick_flyingkick ;2 + JJXM ATTACHED, #kick_flyingkick ;3 + JJXM ONGROUND, 176,176,#kick_runstomp,#kick_runstomp ;4 + JJXM BOUNCING, #kick_flyingkick ;5 + JJXM ONTURNBKL, #kick_flyingkick ;6 + JJXM BLOCK, #kick_flyingkick ;7 + JJXM DIZZY, #kick_flyingkick ;8 + JJXM DEAD, 176,176,#kick_runstomp,#kick_runstomp ;9 + JJXM OPPOVERHEAD, #kick_flyingkick ;10 + JJXM CLIMBTURNBKL, #kick_flyingkick ;11 + JJXM WAITANIM, #kick_flyingkick ;12 + JJXM GRAPPLE, #kick_flyingkick ;13 + JJXM MASTER, #kick_flyingkick ;14 + JJXM SLAVE, #kick_flyingkick ;15 + JJXM HEADHOLD, #kick_flyingkick ;16 + JJXM HEADHELD, #kick_flyingkick ;19 + JJXM PUPPET, #kick_flyingkick ;20 + JJXM INAIR2, #kick_flyingkick ;21 + JJXM_END + +***** +#kick_flyingkick + + movi dnk_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +#kick_runstomp + movi dnk_belly_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +; FACE24 dnk,run_stomp_anim +; calla change_anim1a +; +; clr a0 +; move a0,*a13(RUN_TIME) +; +; WRSND W_DOINK,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 + +#***************************************************************************** + +mode_onground ;4 + +; move *a13(GETUP_TIME),a0 +; jrnz #exit +; +; move *a13(ANIBASE),a0,L +; cmpi dnk_2_faceup_getup_anim,a0 +; jrz #exit +; cmpi dnk_4_faceup_getup_anim,a0 +; jrz #exit +; +; calla do_roll +; jrnz #exit ;did roll +; +; FACE24 dnk,faceup_getup_anim +; calla change_anim1a +; +;#exit + 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 dnk_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 + + ;this is so an attack isn't turned into a climbdown + ; in those 5-10 ticks before MODE_INAIR2 is set... + move *a13(ANIBASE),a14,L + cmpi dnk_climb_up_anim,a14 + jrne #no_climbdown + + movi dnk_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + +#no_interrupt + rets + +#no_climbdown + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + MOVE *A13(PLYRNUM),A5 + movi JUMP_ROPES,a2 + MOVI 1000,A0 + calla ADD_IF_SILENT + rets + + +;For standing on top of turnbuckles + +#action_table + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +************ +#z + rets + +************ +#punch ;1 +#punchkick ;1 + + movi dnk_4_blbowdrop_anim,a0 ;Buckle + calla change_anim1a + rets + +************ +#block ;2 + + movi dnk_4_bjump_anim,a0 ;Buckle + calla change_anim1a + rets + +************ +#super_punch ;4 +;If stick is toward opponent, then do hammer pound move +; move a13,a0 +; calla wres_get_stick_val_cur +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 + +; xor a0,a1 +; andi MOVE_LEFT|MOVE_RIGHT,a1 +; cmpi MOVE_LEFT|MOVE_RIGHT,a1 + +; jrnz #graboh ;Br=regular +; +;;Do hammer pound +; movi dnk_4_bhammer_anim,a0 +; calla change_anim1a +; rets +; +; +#graboh ;1 + + movi dnk_diveofftb_anim,a0 + calla change_anim1a + rets + +************ +#kick ;8 +#super_kick ;16 + + movi dnk_4_bstomp_anim,a0 ;Buckle + calla change_anim1a + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + ;check unint +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #no_interrupt + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #no_interrupt + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #punchblock ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + FACE24 dnk,push_anim + calla change_anim1a + + WRSND W_DOINK,PUSH_T1,PUSH_T2 + + rets + +#***************************************************************************** +* + +mode_dizzy ;8 + + move *a13(GETUP_TIME),a0 + jrnz #still_going + + calla clear_damage_log + + clr a0 + move a0,*a13(STARS_FLAG) + + SETMODE NORMAL + +#still_going + 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 ;* remove this???? +; 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) +; +; rets +; +;#still_attached +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #no_interrupt +; +; move *a13(FACING_DIR),a0 +; andni MOVE_UP,a0 +; ori MOVE_DOWN,a0 +; move a0,*a13(FACING_DIR) +; move a0,*a13(NEW_FACING_DIR) +; +; move a13,a0 +; calla wres_get_stick_val_cur +; jrz #stand +; +; move a0,*a13(MOVE_DIR) +; calla execute_walk +; +; movi dnk_holdoh_anim,a0 +; calla change_anim2 +; jruc #ck_butns +;#stand +; clr a0 +; move a0,*a13(MOVE_DIR) +; move a0,*a13(OBJ_XVEL),L +; move a0,*a13(OBJ_ZVEL),L +; +; movi dnk_stndholdoh_anim,a0 +; calla change_anim1 +; +;#ck_butns +; +; +; move a13,a0 +; calla wres_get_but_val_down +; andi 011111b,a0 +; X32 a0 +; addi #action_table,a0 +; move *a0,a0,L +; call a0 +; +;#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 ;0 +; rets +; +;************ +;#punch ;1 +;#block ;2 +;#super_punch ;4 +;#kick ;8 +;#super_kick ;16 +; +; movi dnk_ohthrow1_anim,a0 +; calla change_anim1a +; + 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(ATTACH_PROC),a10,L + jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#z ;0 + rets + +************ + +#punch ;1 +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag + movi dnk_uppercuts_to_head_anim,a0 + calla change_anim1a + rets + +#tag movi dnk_uppercut_to_head_anim,a0 + calla change_anim1a + rets + +************ +#super_punch ;4 + +do_pile +;This flag is only set if doink has done repeated uppercuts! + move *a13(USR_VAR2),a0 + jrz #z + + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #punch + + movi dnk_3_pile_driver_anim,a0 + calla change_anim1a + rets + +#punchkick +#graboh +#kick + movi dnk_3_knee_to_head_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #z + +;Quick knees + movi dnk_3_knees_to_head_anim,a0 + calla change_anim1a + rets + + +#***************************************************************************** + +mode_headheld ;19 + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + .ref dnk_3_head_held_stand_anim + movi dnk_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets +; +;;No reversal if getup_time is set +; move *a13(GETUP_TIME),a0 +; jrnz #out +; +;;If stick is toward opponent, then do reversal +; +; +; move a13,a0 +; calla wres_get_stick_val_cur +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrnz #out +; +; move a13,a0 +; calla wres_get_but_val_down +; btst PLAYER_SPUNCH_BIT,a0 +; jrz #out +; +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +;;Successful reversal pile drive +; move *a13(OBJ_ZPOS),a0,L +; addi [5,0],a0 +; move a0,*a13(OBJ_ZPOS),L +; +; movi dnk_3_pile_driver_anim,a0 +; calla change_anim1a +; +;#out +; rets + +#***************************************************************************** +mode_puppet ;20 + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** +* + SUBR mode_inair2 ;21 + +;Read joystick for floating off from turnbuckle moves + +;Perhaps each wrestler will have a different drift value +#ZDRIFT2_VAL equ 58000h +#XDRIFT_VAL equ 30000h + + move a13,a0 + calla wres_get_stick_val_cur + clr a1 + + movi -#ZDRIFT2_VAL,a1 + btst PLAYER_UP_BIT,a0 + jrnz #setvel + + movi #ZDRIFT2_VAL,a1 + btst PLAYER_DOWN_BIT,a0 + jrnz #setvel + + clr a1 +#setvel +; move *a13(OBJ_ZVEL),a14,L +; add a1,a14 +; move a14,*a13(OBJ_ZVEL),L + + move *a13(OBJ_ZPOS),a14,L + add a1,a14 + move a14,*a13(OBJ_ZPOS),L + + + clr a1 + + movi -#XDRIFT_VAL,a1 + btst PLAYER_LEFT_BIT,a0 + jrnz #setvel2 + + movi #XDRIFT_VAL,a1 + btst PLAYER_RIGHT_BIT,a0 + jrnz #setvel2 + + clr a1 +#setvel2 +; move *a13(OBJ_XVEL),a14,L +; add a1,a14 +; move a14,*a13(OBJ_XVEL),L + + move *a13(OBJ_XPOS),a14,L + add a1,a14 + move a14,*a13(OBJ_XPOS),L + + rets + +#***************************************************************************** + + +#VEL equ 30000h ;38000h ;30000h +#DVEL equ 21f0eh ;27978h ;21f0eh + + + SUBR dnk_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 dnk_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_stand6_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_stand8_anim ; = up left + + + SUBR dnk_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 dnk_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_6_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_8_turn2_anim ; = up left *** + +; old = down left + .long dnk_6_to_2_turn2_anim ;new = up right *** + .long dnk_6_to_4_turn2_anim ; = down right + .long dnk_torso6_anim ; = down left + .long dnk_6_to_8_turn2_anim ; = up left + +; old = up left + .long dnk_8_to_2_turn2_anim ;new = up right + .long dnk_8_to_4_turn2_anim ; = down right *** + .long dnk_8_to_6_turn2_anim ; = down left + .long dnk_torso8_anim ; = up left + + + +; +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +; WORD #TIMEOUT ;UDW +; +; +; SUBRP dnk_hammer_mv +; +;;in: +;;a8 = wrestler process address +; +;;Hammer pound opponent +;;Charge away for 30 ticks +;;Toward & Super punch +; +;#start_over +; ;charge on stick away +; clr a14 +; move a14,*a13(#CHARGE_TIME),W +;#loop1 +; SLEEPK 1 +; +;;Disallow these type of moves if out of control +; move *a8(GETUP_TIME),a0 +; jrnz #loop1 +; +; move *a13(#CHARGE_TIME),a14,W +; inc a14 +; move a14,*a13(#CHARGE_TIME),W +; +; move a8,a0 +; calla wres_get_stick_val_cur +; +; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to +; ; our left, flip the L|R direction bits... +; +; ;...however, if the stick isn't pointed left or right, don't do +; ;anything. +; move a0,a14 +; andi MOVE_LEFT|MOVE_RIGHT,a14 +; jrz #no_flip +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip +; +; ;if we're still holding away, jump back to #loop1 +; btst MOVE_LEFT_BIT,a0 +; jrnz #loop1 +; +; ;no longer holding away... +; move *a13(#CHARGE_TIME),a14 +; +;;x seconds held stick is away +; +; cmpi 15,a14 +; jrlt #start_over +; +; ;okay, they released after holding away for 2 seconds. Give them +; ;half a second to push forward + super_punch +; +;; movi TSEC/2,a14 +; movk 20,a14 +; move a14,*a13(#TIMEOUT) +;#loop2 +; SLEEPK 1 +; +; move a8,a0 +; calla wres_get_but_val_down +; move a0,a0 +; jrnz #press +; +; move *a13(#TIMEOUT),a14 +; dec a14 +; jrz #start_over +; move a14,*a13(#TIMEOUT) +; jruc #loop2 +; +;#press +; ;we have a button press. Is it super punch? +; btst PLAYER_PUNCH_BIT,a0 +; jrz #start_over ;wrong button. No good. +; +; ;Check for a towards on the stick. +; move a8,a0 +; calla wres_get_stick_val_cur +; move a0,a0 +; jrz #start_over ;no stick at all. No good. +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip2 +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip2 +; btst MOVE_RIGHT_BIT,a0 +; jrz #start_over ;pooched it +; +;;success! Check for the UNINT bit, then queue it up. +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over +; +; movi dnk_4_hammer_anim,a14 +; +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #start_over +; +;; move *a13(PLYRMODE),a0 +;; cmpi MODE_ONTURNBKL,a0 +;; jrnz #do +;; movi dnk_4_bhammer_anim,a14 +;;#do +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; jruc #start_over +; +;; .endif +; +;#* +; +; SUBRP dnk_earslap_mv +; +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +; WORD #TIMEOUT ;UDW +; +; +;;in: +;;a8 = wrestler process address +; +;;Ear slap opponent +;;Charge away for 30 ticks +;;Toward & Super punch +; +;#start_over +; ;charge on stick away +; clr a14 +; move a14,*a13(#CHARGE_TIME),W +;#loop1 +; SLEEPK 1 +; +;;Disallow these type of moves if out of control +; move *a8(GETUP_TIME),a0 +; jrnz #loop1 +; calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #loop1 +; cmpi MODE_DEAD,a0 +; jrz #loop1 +; +; move *a13(#CHARGE_TIME),a14,W +; inc a14 +; move a14,*a13(#CHARGE_TIME),W +; +; move a8,a0 +; calla wres_get_stick_val_cur +; +; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to +; ; our left, flip the L|R direction bits... +; +; ;...however, if the stick isn't pointed left or right, don't do +; ;anything. +; move a0,a14 +; andi MOVE_LEFT|MOVE_RIGHT,a14 +; jrz #no_flip +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip +; +; ;if we're still holding away, jump back to #loop1 +; btst MOVE_LEFT_BIT,a0 +; jrnz #loop1 +; +; ;no longer holding away... +; move *a13(#CHARGE_TIME),a14 +; +;;x seconds held stick is away +; +; cmpi 20,a14 +; jrlt #start_over +; +; ;okay, they released after holding away for 2 seconds. Give them +; ;half a second to push forward + super_punch +; +;; movi TSEC/2,a14 +; movk 15,a14 +; move a14,*a13(#TIMEOUT) +;#loop2 +; SLEEPK 1 +; +; move a8,a0 +; calla wres_get_but_val_down +; move a0,a0 +; jrnz #press +; +; move *a13(#TIMEOUT),a14 +; dec a14 +; jrz #start_over +; move a14,*a13(#TIMEOUT) +; jruc #loop2 +; +;#press +; ;we have a button press. Is it super punch? +; btst PLAYER_SPUNCH_BIT,a0 +;; jrz #start_over ;wrong button. No good. +; jrz #loop2 +; btst PLAYER_PUNCH_BIT,a0 +; jrz #loop2 +; +; ;Check for a towards on the stick. +; move a8,a0 +; calla wres_get_stick_val_cur +; move a0,a0 +;; jrz #start_over ;no stick at all. No good. +; jrz #loop2 +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip2 +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip2 +; btst MOVE_RIGHT_BIT,a0 +;; jrz #start_over ;pooched it +; jrz #loop2 +; +;;success! Check for the UNINT bit, then queue it up. +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over +; +; movi dnk_4_earslap_anim,a14 +; +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #start_over +; +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; jruc #start_over +; + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/DOINK.BAT b/BACKUP/DOINK.BAT new file mode 100644 index 0000000..f0ae8f1 --- /dev/null +++ b/BACKUP/DOINK.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld doink dnk_hit dnk_kik dnk_msc dnk_new dnk_pnc dnk_spc dnk_wlk dnk_mjt dnk_rjr dnk_jms dnk_fun +@copy doink.ld1 + doink.ld2 doink.lod +@move doink.h ..\doinkimg.h +@move doink.seq .. + \ No newline at end of file diff --git a/BACKUP/DOINKIMG.ASM b/BACKUP/DOINKIMG.ASM new file mode 100644 index 0000000..c2303f9 --- /dev/null +++ b/BACKUP/DOINKIMG.ASM @@ -0,0 +1,20 @@ + .FILE "doinkimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include doinkimg.tbl + .include doinkimg.h + +****************************************************************************** + + .even + .include "doink.seq" + + .global D2ST2B03 + +****************************************************************************** +; END + \ No newline at end of file diff --git a/BACKUP/DOINKIMG.H b/BACKUP/DOINKIMG.H new file mode 100644 index 0000000..582bd33 --- /dev/null +++ b/BACKUP/DOINKIMG.H @@ -0,0 +1,107 @@ + .global D2BK3C + .global D4BK3A + .global D2AH2A + .global D2GD2A + .global D3AE3B + .global D3AH3B + .global D3AM3A + .global D3GU4A + .global D3RC3A + .global D3SA3A + .global D3UC3A + .global D4LB4A + .global D4LB4B + .global D2KM3B + .global D2KM3D + .global D2NM3A + .global D3MP3A + .global D4KM3A + .global D4MP4D + .global D4NM3B + .global D3DC3C + .global D2CR1A + .global D2CT2A + .global D2CT2B + .global D2CT2C + .global D2GR3A + .global D3CR3D + .global D3RL1B + .global D4FM4A + .global D4GF3A + .global D4GM3A + .global D4GR3B + .global D4JD4A + .global D4MF4A + .global D4SW4B + .global D4SW4C + .global D4SW4E + .global D4SW4F + .global D5WN5B + .global D5WN5Z + .global D4BZ3A + .global D3BF3A + .global D3HP3A + .global D3PD3C + .global D4KH3A + .global D4SK4A + .global D4BZ4A + .global D2BC3A + .global D2PJ2A + .global D2PS3A + .global D2PU3A + .global D4BC3A + .global D4PJ4A + .global D4PS3A + .global D4PU3C + .global D5GD3A + .global D4BS3A + .global D2BS3A + .global D2RG3B + .global D4RG3A + .global D2TW2B + .global D4TW4B + .global D1TR5Z + .global D1TT5Z + .global D2ST2B + .global D2WL1A + .global D2WL2A + .global D2WL4B + .global D3BO3B + .global D3RN3B + .global D4ST4E + .global D4TH4A + .global D4WL2A + .global D4WL4A + .global D4WL5A + .global D4POGO + .global D3BK3Z + .global D3HT3Q + .global D4SQ4A + .global D4CO4A + .global D3GS3X + .global D4HS3B + .global D3DU3A + .global D3HT3Z + .global D3PP3A + .global D4YR3B + .global D4GH3A + .global D3AK3A + .global D4PN5L + .global D4PN5A + .global D5GD4A + .global D3PP3Z + .global D3PD3Z + .global D3DD3C + .global D3SA3X + .global D3TN3A + .global D3FH3A + .global D3RR3Z + .global D3PM4C + .global D3OS3A + .global D3FD3E + .global D4GP3C + .global D3ES3A + .global D4HM4A + .global D2KB3A + .global D4KB3A + .global D3SK3X diff --git a/BACKUP/DRONE.ASM b/BACKUP/DRONE.ASM new file mode 100644 index 0000000..4a73c76 --- /dev/null +++ b/BACKUP/DRONE.ASM @@ -0,0 +1,1258 @@ +************************************************************** +* +* Software: Shawn Liptak +* Initiated: 11/21/94 +* +* Modified: Shawn Liptak, 11/21/94 -Started wrestling +* +* COPYRIGHT (C) 1994 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 1/12/95 19:35 +************************************************************** + .file "drone.asm" + .title "wrestling drone code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" + .include "display.equ" + .include "gsp.equ" + .include "sys.equ" + .include "audit.equ" + .include "game.equ" + .include "anim.equ" + .include "plyr.equ" + + +;sounds external + + +;symbols externally defined + + .ref process_ptrs + .ref round_tickcount + + +;symbols defined in this file + + +;uninitialized ram definitions + + BSSX droneoff ,16 ;!0=Drone code off + + +;equates for this file + + +U_M .equ MOVE_UP<<5 +D_M .equ MOVE_DOWN<<5 +L_M .equ MOVE_LEFT<<5 +R_M .equ MOVE_RIGHT<<5 + +P_M .equ PLAYER_PUNCH_VAL +B_M .equ PLAYER_BLOCK_VAL +SP_M .equ PLAYER_SPUNCH_VAL +K_M .equ PLAYER_KICK_VAL +SK_M .equ PLAYER_SKICK_VAL + + .text + +#*************************************************************** +* Main drone logic +* A8 = *Obj +* A13 = *Plyr process +* Trashes scratch, A2-A7 + + SUBR drone_main + + .if DEBUG + move @droneoff,a0 + jrnz #xx + .endif + + + move *a13(DRN_BUT),a6 + move *a13(DRN_JOY),a7 + +;陳陳陳陳陳陳陳 + +; move *a13(DRN_MODE),a0 +; +; move *a13(CLOSEST_XDIST),a1 +; cmpi 100,a1 +; jrlt #ret +; cmpi 130,a1 +; jrgt #skdn +; +; callr drone_seek +; jruc #skdn +;#ret +; callr drone_retreat +;#skdn + +;陳陳陳陳陳陳陳 >Handle getup time + + move *a13(GETUP_TIME),a0 + jrle #nogt + subk 10,a0 + jrge #gtok + clr a0 +#gtok move a0,*a13(GETUP_TIME) + jruc #dsabt +#nogt +;陳陳陳陳陳陳陳 + + move *a13(DRN_DELAY),a0 + subk 1,a0 + jrle #newact + move a0,*a13(DRN_DELAY) + jruc #x + +#newact + move *a13(CLOSEST_XDIST),a0 + cmpi 200,a0 + jrgt #noatk ;Too far? + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + + move *a14(ATTACK_TIME),a0 + move @round_tickcount,a1 +; move *a14(DRN_ATKSTRTTIME),a0 +; move @PCNT,a1 + sub a1,a0 + jrlt #noatk + + cmpi 500,a0 + jrge #noatk ;Overflow? + + move *a14(GETUP_TIME),a0 + jrgt #noatk ;Out of control? + + movi B_M,a0 ;Block it + move a0,*a13(DRN_BUT) + jruc #x +#noatk + +;陳陳陳陳陳陳陳 + + move *a13(DRN_ACT_p),a5,L + jrnz #cact + + clr a0 + move a0,*a13(DRN_BUT) + +;DEBUG +; jruc #x + + move *a13(PLYRMODE),a2 ;A2=My mode + cmpi MODE_HEADHELD,a2 + jreq #hh + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #unint ;Wait? +#hh + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #wnshort_t,a0 + + move *a13(CLOSEST_XDIST),a1 + move *a13(CLOSEST_ZDIST),a14 + cmp a1,a14 + jrge #havebig + move a1,a14 +#havebig + cmpi 90,a14 + jrlt #shrt + addi #wnmed_t-#wnshort_t,a0 + cmpi 180,a14 + jrlt #med + addi #wnlong_t-#wnmed_t,a0 +#shrt +#med + move *a0,a5,L ;Get * mode list + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a3 +#mdlp + movb *a5,a0 ;My mode # + addk 8,a5 + movb *a5,a14 ;His mode # + addk 8,a5 + move *a5+,a1,L ;* script * table + + move a0,a0 + jrn #inochk ;Don't chk? + cmp a2,a0 + jrne #mdlp ;Not in mode? +#inochk + move a14,a14 + jrn #def ;Don't chk? + cmp a3,a14 + jrne #mdlp ;Not in mode? +#def + move a1,a5 + move *a5+,a0 ;# entries + callr rndrng0 + X32 a0 + add a0,a5 + move *a5,a5,L +#cact +;陳陳陳陳陳陳陳 >Read script command +#scplp + move *a5+,a0 + jrge #nocd ;No command? + + sll 32-14,a0 + jrc #dsdone ;Done? (Bit 14) + + srl 32-14,a0 + +;陳陳陳陳陳陳陳 >Seek until 0 + + subk 1,a0 ;#1 + jrne #nseekt0 + + callr drone_seek + jrz #scplp + + subk 16,a5 + jruc #dsdone +#nseekt0 +;陳陳陳陳陳陳陳 + + exgpc a5 ;Call function + jruc #scplp +#nocd +;陳陳陳陳陳陳陳 >Joy & button bits + + move a0,a1 + sll 32-5,a0 + srl 32-5,a0 + move a0,*a13(DRN_BUT) + + srl 5,a1 + move *a13(FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #rgt ;Facing rgt? + + move a1,a0 ;>Flip L&R bits + move a1,a14 + sll 32-2,a1 + srl 3,a0 ;Bit0=Rgt + sll 32-3,a14 + srl 31,a14 + sll 1,a14 ;Bit1=Left + or a0,a1 + or a14,a1 + rl 2,a1 +#rgt + move a1,*a13(DRN_JOY) + + move *a5+,a0 ;Get delay + move a0,*a13(DRN_DELAY) + jrgt #dsdone +#dsabt + clr a5 +#dsdone + move a5,*a13(DRN_ACT_p),L + +#unint + +;陳陳陳陳陳陳陳 >Calc ctrl bit transitions +#x + move *a13(DRN_BUT),a0 + xor a0,a6 + move a6,a1 + and a0,a6 + move a6,*a13(DRN_BUTDT) + andn a0,a1 + move a1,*a13(DRN_BUTUT) + + move *a13(DRN_JOY),a0 + xor a0,a7 + and a0,a7 + move a7,*a13(DRN_JOYDT) + +#xx + rets + + +#wnshort_t + .long bret_s_t,raz_s_t,utak_s_t,yoko_s_t + .long shawn_s_t,bam_s_t,doink_s_t,doink_s_t,lex_s_t +#wnmed_t + .long bret_m_t,raz_m_t,utak_m_t,yoko_m_t + .long shawn_m_t,bam_m_t,doink_m_t,doink_m_t,lex_m_t +#wnlong_t + .long bret_l_t,raz_l_t,utak_l_t,yoko_l_t + .long shawn_l_t,bam_l_t,doink_l_t,doink_l_t,lex_l_t + + +#******************************* +* Drone script commands + +BBL .macro w,w2,l + .byte :w:,:w2: + .long :l: + .endm + +DS_CODE .macro + .word 8000h+0 + .endm +DS_SLP1 .macro + .word 0c000h+0 + .endm +DS_SEEKTIL0 .macro + .word 8000h+1 + .endm +DS_END .macro + .word 0,0 + .endm + +;陳陳陳陳陳陳陳 + +bam_s_t + BBL MODE_RUNNING,-1,mdrun + BBL MODE_HEADHOLD,-1,#ba_mdhh + BBL MODE_HEADHELD,-1,#ba_mdhhe + BBL MODE_OPPOVERHEAD,-1,#ba_mdooh + BBL -1,MODE_ONGROUND,#mdog + WL -1,#ba_mdn +#ba_mdn ;Normal +; .word 1-1 +; .long #ba_pkup + .word 16-1 + .long retreat + .long #blk,#blk + .long #blkp,#blkp + .long #p,#sp,#k,#sk + .long #hg,#hg + .long #flng + .long #htoss + .long #ham ;Karate kick + .long #firep ;Fire punch + .long #ba_pkup + +#firep .word SP_M,90, 0,10, SP_M,10, 0,10, SP_M,0 +#ba_pkup + .word D_M,2, 0,2, D_M,2, K_M,2, 0,0 + +#ba_mdhh ;Holding head + .word 2-1 + .long #hgpogo + .long #hgpd + +#ba_mdhhe ;Head held + .word 2-1 + .long #hgpogo + .long #hgpd + +#hgpogo .word U_M,2, D_M,2, 0,2, D_M,2, SK_M,0 + +#ba_mdooh ;Holding opp over head + .word 2-1 + .long #oohsd + .long #oohbb + +#oohsd .word D_M+P_M,0 ;Slam down +#oohbb .word D_M+SK_M,0 ;Back breaker + +;陳陳陳陳陳陳陳 + +bret_s_t +raz_s_t +utak_s_t +yoko_s_t +shawn_s_t +doink_s_t +lex_s_t + BBL MODE_RUNNING,-1,mdrun + BBL MODE_HEADHOLD,-1,#mdhh + BBL MODE_HEADHELD,-1,#mdhhe + BBL -1,MODE_ONGROUND,#mdog + WL -1,#mdn +#mdn ;Normal + .word 1-1 + .long #eslap + .word 16-1 + .long retreat + .long #blk,#blk + .long #blkp,#blkp + .long #p,#sp,#k,#sk + .long #hg,#hg + .long #flng + .long #htoss + .long #ham,#buz + .long #eslap,#pbig + .long #pkup +#mdog ;Opp on gnd + .word 7-1 + .long retreat + .long #p,#sp,#k,#sk + .long #oghg,#oghg + +#mdhh ;Holding head + .word 5-1 + .long #hgfs + .long #hgpd + .long #hgpppk + .long #hgp4 + .long #hgkkkpd +#mdhhe ;Head held + .word 5-1 + .long #hgfs + .long #hgpd + .long #hgpppk + .long #hgp4 + .long #hgkkkpd + +mdrun ;Running + .word 1-1 + .long drn_run + +#blk .word B_M,30, 0,0 +#blkp .word B_M,30, B_M+P_M,0 +#p .word P_M,0 +#sp .word SP_M,0 +#k .word K_M,0 +#sk .word SK_M,0 + +#flng .word L_M+SP_M,0 +#htoss .word L_M+P_M,0 +#ham .word R_M,2, 0,2, R_M,2, SK_M,2, K_M,2 + DS_END +#buz .word P_M,20, P_M+K_M,20, P_M,20, P_M+K_M,20, P_M,10, 0,0 +#eslap .word D_M,2, D_M+R_M,2, R_M,2, P_M,2, 0,10, P_M,10, 0,10, P_M,0 +#pbig .word P_M,2, 0,2, P_M,2, 0,2, P_M,2, 0,2, P_M,2, 0,2 + .word P_M,2, 0,2, P_M,2, 0,2, P_M,2, 0,0 +#pkup .word SP_M+SK_M,0 +#hg + .word R_M,2, 0,2, R_M,2, 0,2, SP_M,0, R_M,40 + DS_END + +#oghg ;Head grab + .word D_M,2, SP_M,0 + +#hgfs ;Face slam + .word U_M,2, D_M,2, 0,2, D_M,2, SK_M,2 + .word 0,30 + .word K_M,2 ;Repeat + DS_END +#hgpd ;Piledriver + .word L_M,2, R_M,2, 0,2, R_M,2, SP_M,2 + .word 0,30 + DS_END +#hgpppk ;Punch*3, kick + .asg 6,T + .word R_M+P_M,T, R_M,T, R_M+P_M,T, R_M,T + .word R_M+P_M,T, R_M,T, R_M+P_M,T, R_M,T + .word R_M+K_M,2 + .word 0,30 + DS_END +#hgp4 ;Punch*4 + .asg 6,T + .word R_M+P_M,T, R_M,T, R_M+P_M,T, R_M,T + .word R_M+P_M,T, R_M,T, R_M+P_M,T, R_M,T + .word R_M+P_M,T, R_M,T, R_M+P_M,2 + .word 0,30 + DS_END +#hgkkkpd ;Knee*3, piledriver + .asg 6,T + .word R_M+SK_M,T, R_M,T, R_M+SK_M,T, R_M,T + .word R_M+SK_M,T, R_M,T, R_M+SK_M,T, R_M,T + .word SP_M,2 + .word 0,30 + DS_END + + +#******************************* + +bret_m_t +raz_m_t +utak_m_t +yoko_m_t +shawn_m_t +bam_m_t +doink_m_t +lex_m_t + BBL MODE_RUNNING,-1,mdrun + BBL -1,MODE_ONGROUND,#mdog + WL -1,#mdn +#mdog + .word 3-1 + .long seek + .long #seeksp + .long #seeksk + +#seeksp + DS_SEEKTIL0 + .word SP_M,0 +#seeksk + DS_SEEKTIL0 + .word SK_M,0 + +#mdn ;Normal + .word 6-1 + .long seek + .long retreat + .long #sp + .long #sk + .long #ham + .long #run + +#sp .word SP_M,0 +#sk .word SK_M,0 +#ham .word R_M,2, 0,2, R_M,2, SK_M,30, K_M,2 + +#run .word P_M+K_M,0 + + + +#******************************* + +bret_l_t +raz_l_t +utak_l_t +yoko_l_t +shawn_l_t +bam_l_t +doink_l_t +lex_l_t + BBL MODE_RUNNING,-1,mdrun + BBL -1,MODE_ONGROUND,#mdog + WL -1,#mdn +#mdog + .word 1-1 + .long seek +#mdn + .word 2-1 + .long seek + .long #run + +#run .word P_M+K_M,0 + +******************************** + +#sk2 exgpc a5 + DS_SLP1 +seek + DS_CODE + movi 3fh,a0 + callr rnd + jrz #x + callr drone_seek + jrnz #sk2 +#x exgpc a5 + DS_END + +#******************************* + +#sk2 + exgpc a5 + DS_SLP1 +retreat + DS_CODE + movk 1fh,a0 + callr rnd + jrz #x + callr drone_retreat + jrnz #sk2 +#x exgpc a5 + DS_END + + +#******************************* + +#rsk + movk 10,a2 + callr drone_seek2 + andni MOVE_LEFT+MOVE_RIGHT,a0 ;0 up & dn + move a0,*a13(DRN_JOY) + exgpc a5 + DS_SLP1 +drn_run + DS_CODE + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrne #abrt + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(OBJ_XPOSINT),a0 + move *a13(OBJ_XPOSINT),a1 + sub a1,a0 + move *a13(OBJ_XVEL+16),a1 + xor a0,a1 + move a1,a1 + jrn #rsk ;Sign different so i'm running away? + abs a0 + cmpi 180,a0 + jrgt #rsk ;Too far? + + move *a14(OBJ_ZPOSINT),a0 + move *a13(OBJ_ZPOSINT),a1 + sub a1,a0 + abs a0 + subk 30,a0 + jrgt #rsk ;Too far? + + movk 1,a0 + callr rnd + jrnz #k + + exgpc a5 + DS_SLP1 + .word P_M,0 +#k + exgpc a5 + DS_SLP1 + .word K_M,0 +#abrt + exgpc a5 + DS_END + + +#******************************* +* Push stick to move away from opponent +*>A0 = Joy bits set or 0 (Pass CC) +* Trashes scratch, A2 + + SUBRP drone_retreat + + movk 5,a2 + callr drone_seek +; jrnz #sk2 + + X16 a0 + addi #xchg_t,a0 + move *a0,a0 + move a0,*a13(DRN_JOY) + + rets + +#xchg_t .word 0,10b,01b,0 + .word 1000b,1010b,1001b,0 + .word 100b,110b,101b,0 + .word 0,0,0,0 + + +#******************************* +* Push stick to move drone towards his seek position + + SUBRP drone_seek + + movi 70,a2 + + SUBRP drone_seek2 + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(OBJ_XPOSINT),a0 + move *a14(OBJ_ZPOSINT),a1 + +#******************************* +* Push stick to move drone towards an XZ location +* A0 = X to seek +* A1 = Z +* A2 = Range to stop +* A8 = *Obj +*>A0 = Joy bits set or 0 (Pass CC) +* Trashes scratch + + SUBRP drone_seekxy + + move a3,b0 + + move *a13(OBJ_XPOSINT),a3 + sub a0,a3 + + clr a0 + + move a3,a14 + abs a3 + sub a2,a3 + jrle #onx + move a14,a14 + jrlt #nolft + subk 4,a0 ;Left + +#nolft addk 8,a0 ;Rgt +#onx + move *a13(OBJ_ZPOSINT),a3 + + sub a1,a3 + move a3,a14 + abs a3 + sub a2,a3 + jrle #onz + move a14,a14 + jrlt #noup + subk 1,a0 ;Up + +#noup addk 2,a0 ;Dn +#onz + move a0,*a13(DRN_JOY) + + move b0,a3 + move a0,a0 + rets + + + +#******************************* +* Drone code - defence +* A8=*Obj +* A9=*Plyr secondary data +* A11=*Ctrl bits +* A13=*Plyr process + + NOTINUSE + + SUBRP drone_defence + + PUSH a7,a10 + + + move @ballpnum,a5 + sll 5,a5 + addi plyrproc_t,a5 + move *a5,a5,L ;A5=*Proc of opponent with ball + + + calla drone_getcurskillo + move a0,a7 ;A7=Ptsdn+skill for indexing (*16) + + + clr a0 + move a0,*a13(plyr_d_cflgs) + + move *a13(plyr_d_mode),a14 + jrn #inmd ;Already in mode? + + subk 1,a0 ;-1 + move a0,*a13(plyr_d_mode) + + move a7,a14 + addi #mdsk_t,a14 + move *a14,a0 + move a0,a2 + srl 2,a2 ;/4 + + callr rndrng0 + addk 1,a0 + add a2,a0 + move a0,*a13(plyr_d_seekcnt) + + clr a0 + move a0,*a9(pld_d_nastycnt) +#inmd + + + movk 2,a10 ;>Update nasty mode + move @game_time,a14,L + + cmpi >800,a14 + jrlt #nasty ;Less than 8 secs? + + move @gmqrtr,a2 + subk 3,a2 + jrlt #chkst + move *a13(plyr_ptsdown),a1 + addk 3,a1 + jrle #chkst ;Winning by 3 or more? + cmpi >30000,a14 + jrlt #nasty ;Less than 30 secs? + +#chkst move @shotimer+16,a14 ;Tens + jrnz #scok + move @shotimer,a14 ;Ones + subk 5,a14 + jrlt #nasty ;Less than 5 secs? + +#scok move *a9(pld_d_nastycnt),a10 + jrgt #naston + + movi 999,a0 + callr rndrng0 + + move a7,a14 + addi #nast_t,a14 + move *a14,a1 + cmp a1,a0 + jrge #nonast ;No nasty? + + movi TSEC,a10 + +#naston subk 1,a10 +#nasty move a10,*a9(pld_d_nastycnt) +#nonast + + + move *a13(plyr_d_seekcnt),a0 + subk 1,a0 + jrgt #seek + + move *a13(plyr_num),a2 + XORK 2,a2 + move a2,a4 + sll 5,a4 ;*32 + addi plyrproc_t,a4 + move *a4,a4,L + cmp a5,a4 + jreq #guard ;I'm on guy with ball? + + move *a5(plyr_ohpdist),a0 + cmpi 300,a0 + jrgt #guard ;Too far to worry about? + + move *a5(plyr_seqflgs),a0 + btst DUNK_B,a0 + jrnz #gbc ;He's dunking? + + move *a13(plyr_tmproc_p),a3,L + move *a3(plyr_seq),a0 + subi STAGGER_SEQ,a0 + jrls #tmok + subk FLYBACKWB2_SEQ-STAGGER_SEQ,a0 + jrls #gbc ;Teammates staggered? +#tmok + move *a3(plyr_o1dist),a14 + move *a3(plyr_o1dir),a1 + btst 0,a2 + jrnz #p1 + move *a3(plyr_o2dist),a14 + move *a3(plyr_o2dir),a1 +#p1 + move *a3(plyr_hpdir),a0 ;Find dir difference + sub a1,a0 + abs a0 + cmpi >40,a0 + jrle #dsml + subi >80,a0 + abs a0 +#dsml subk 28,a0 + jrle #gbc ;TM not between op and hoop? + + cmpi 160,a14 + jrgt #gbc ;TM not guarding? +;FIX + jruc #guard + +#gbc move a5,a4 ;Guard ball carrier +#guard + move *a4(PA8),a2,L ;*Obj + + move *a2(OXPOS),a0 + move *a2(OXANI+16),a14 + add a14,a0 ;X + move *a2(OZPOS),a1 ;Z + + move *a2(OXVEL),a14,L + sra 16-4,a14 ;16 ticks from now + add a14,a0 + move *a2(OZVEL),a14,L + sra 16-4,a14 ;16 ticks from now + add a14,a1 + + move a10,a10 + jrgt #setseek ;Nasty on? + + move *a5(plyr_seqflgs),a14 + btst SHOOT_B,a14 + jrnz #setseek ;Starting a shot? + + move *a13(plyr_myhoopx),a2 ;>Stay near oplyr between my basket + movi CZMID,a3 + + add a0,a2 + sll 1,a0 + add a2,a0 + sra 2,a0 ;/4 + + add a1,a3 + sll 1,a1 + add a3,a1 + sra 2,a1 ;/4 +#setseek + move a0,*a13(plyr_d_seekx) + move a1,*a13(plyr_d_seeky) + + movk 25,a0 + move *a5(plyr_hpdist),a1 + cmpi 320,a1 + jrge #seek ;Far from my hoop? + + + move a7,a14 + addi #skt_t,a14 + move *a14,a0 + move a0,a2 + srl 2,a2 ;/4 + callr rndrng0 + add a2,a0 + +#seek move a0,*a13(plyr_d_seekcnt) + + callr drone_seek + move a0,a2 + + + + move *a13(plyr_num),a14 ;>Get opponents proc + addk 2,a14 + sll 32-2,a14 + srl 32-2-5,a14 ;*32 + addi plyrproc_t,a14 + move *a14,a0,L + move *a0(plyr_ohpdist),a0 + subk 10,a0 + cmpi 300,a0 + jrlt #long + subi 80,a0 ;Turbo earlier +#long + move *a13(plyr_hpdist),a1 + cmp a0,a1 + jrlt #icloser + addi BUT3_M,a2 ;Turbo +#icloser + + + move *a13(plyr_balldist),a1 + cmpi 35,a1 + jrgt #psrnd ;!In his face? + + move a10,a10 + jrgt #ps ;Nasty on? + +#psrnd + move a7,a14 + addi #dist_t,a14 + move *a14,a0 + cmp a0,a1 + jrgt #skipsp ;Ball too far? + + movi 999,a0 + callr rndrng0 + + move a7,a14 + addi #ps_t,a14 + move *a14,a1 + cmp a1,a0 + jrge #skipsp ;Skip push? +#ps + sll 32-4,a2 + srl 32-4,a2 + addk BUT2_M,a2 ;Steal + + movk 1,a0 + callr rnd + jrnz #skipsp ;50%? + + addi BUT2_M<<8|BUT3_M,a2 ;Push +#skipsp + + + move *a13(plyr_balldist),a14 ;>Chk if I can block ball + cmpi 65,a14 + jrge #noblk + + move *a5(plyr_jmpcnt),a0 + jrnz #tryblk ;Plyr with ball is in air? + + move *a5(plyr_seqflgs),a0 + btst SHOOT_B,a0 + jrz #noblk ;!Starting a shot? + movk 11,a0 + callr rndrng0 + move a0,a0 + jrnz #noblk ;94% ignore? + jruc #blk + +#tryblk + move a10,a10 + jrgt #blk ;Nasty on? + + movi 99,a0 + callr rndrng0 + move a7,a14 + addi #blk_t,a14 + move *a14,a1 + cmp a1,a0 + jrge #noblk + +#blk + sll 32-4,a2 + srl 32-4,a2 + addk BUT1_M,a2 ;Block +#noblk + + move a2,*a11 + + PULL a7,a10 + rets + + +#mdsk_t ;Mode switch max seek time + .word 50,50,50,50,50 ;Up 15-11 + .word 50,50,45,45,40 ;10-6 + .word 33,25,22,18,16 ;5-1 + .word 14 ;Even score + .word 10,8,6,4,4 ;Dn 1-5 + .word 4,3,3,3,2 ;6-10 + .word 2,2,2,2,1 ;11-15 + +#nast_t ;% to become nasty + .word 0,0,0,0,0 + .word 1,1,2,2,2 + .word 3,3,3,4,6 + .word 8 + .word 10,11,12,13,14 + .word 15,17,20,25,26 + .word 27,28,29,30,35 +#skt_t ;Max seek time + .word 60,60,58,55,52 + .word 48,44,40,36,32 + .word 28,24,22,18,16 + .word 15 ;Even score + .word 15,15,14,14,14 + .word 14,14,14,13,13 + .word 13,13,13,12,12 + +#dist_t ;Max dist to try push/steal + .word 110,100,100,100,100 + .word 90,90,80,80,80,80 + .word 70,70,60,60,60 + .word 50 + .word 50,50,50,50,50 + .word 50,50,50,50,50 + .word 50,50,50,50,50 +#ps_t ;% to push/steal + .word 1,2,2,2,2 + .word 3,3,3,3,3 + .word 4,4,4,5,5 + .word 6 + .word 6,6,8,10,13 + .word 15,17,18,20,30 + .word 40,60,80,150,250 +#blk_t ;% to block + .word 1,1,2,3,3 + .word 3,3,4,4,5 + .word 6,7,8,10,12 + .word 14 + .word 16,18,20,25,30 + .word 35,40,45,50,50 + .word 50,50,50,50,50 + + .endif + + + +#******************************* +* Get the current skill offset +* >A0=Offset (0-30) *16 +* Trashes scratch + +; SUBRP drone_getcurskillo +; +; move *a13(plyr_ptsdown),a0 +; move *a13(plyr_d_skill),a14 +; add a14,a0 +; cmpi 15,a0 +; jrle #mxdnok +; movk 15,a0 +;#mxdnok addk 15,a0 +; jrge #dnok +; clr a0 +;#dnok sll 4,a0 ;A7=Ptsdn+skill for indexing (*16) +; +; rets + + + +#******************************* +* Adjust all drone abilities (at every minute dec of game clock) +* A0=Game clock minute count before dec (0-2) +* Trashes scratch + +; SUBR drone2_adjskill +; +; PUSH a2,a3,a4,a5,a6 +; +; move a0,a5 +; subk 2,a5 +; abs a5 +; move @gmqrtr,a1 +; cmpi 3,a1 +; jrls #qok +; movk 3,a1 ;Overtime +;#qok movk 3,a0 +; mpyu a0,a1 +; add a1,a5 ;A5=Quarter+minute index (0-11) +; +; +; movk ADJDIFF,a0 ;Get difficulty level +; calla GET_ADJ ;Drone v2 is level 4 & 5 +; subk 4,a0 ;-2 to 2 +; move a0,a6 +; sll 1,a0 ;*2 +; add a0,a6 ;A6=Difficulty adj (0 or 3) +; +; movi plyrproc_t,a4 +; movk 4,b0 +;#lp +; move *a4+,a3,L +; +; move *a3(plyr_d_skill),a2 +; +; move *a3(plyr_ptsdown),a14 +; cmpi 15,a14 +; jrle #mxdnok +; movk 15,a14 +;#mxdnok addk 15,a14 +; jrge #dnok +; clr a14 +;#dnok sll 4,a14 +; addi #adj_t,a14 +; move *a14,a14 +; add a14,a2 +; +; move a5,a14 ;>Chk quarter minimum +; sll 3,a14 +; addi #min_t,a14 +; movb *a14,a14 +; add a6,a14 +; cmp a14,a2 +; jrge #minok +; move a14,a2 +;#minok +; move *a3(plyr_num),a1 +; XORK 1,a1 +; move @PSTATUS,a14 +; btst a1,a14 +; jrnz #tminok ;Teammate is human? +; +; move @team1,a1 ;>Chk team minimum +; cmpi 3,b0 +; jrge #t1 +; move @team2,a1 +;#t1 movk 12,a0 +; mpyu a0,a1 +; +; add a5,a1 +; sll 3,a1 ;*8 +; addi #tdmin_t,a1 +; movb *a1,a14 +; add a6,a14 +; cmp a14,a2 +; jrge #tminok +; move a14,a2 +;#tminok +; move a2,*a3(plyr_d_skill) +; +; dsj b0,#lp +; +; PULL a2,a3,a4,a5,a6 +; rets +; +; +;#adj_t .word -5,-5,-5,-5,-5 +; .word -5,-5,-5,-4,-3 +; .word -2,-1,0,0,0 +; .word 0 +; .word 1,1,2,2,3 +; .word 3,4,4,5,5 +; .word 5,6,6,6,7 +; +;#min_t .byte -15,-12,-10, -8,-7,-6, -5,-4,-4, -3,-2,-3 +; +;TMDIFF .macro +; .byte -10,-9,-8, -7,-6,-5, -4,-4,-3, -2,0,-2 +; .endm +;#tdmin_t +; TMDIFF ;ATL +; TMDIFF ;BOST +; TMDIFF ;CHAR +; .byte 6,7,8, 9,10,11, 12,12,13, 14,15,14 ;CHI (1) +; .byte -6,-5,-5, -4,-3,-3, -2,-2,-2, -1,0,-1 ;CLEV (10) +; TMDIFF ;DAL +; TMDIFF ;DEN +; .byte -5,-4,-4, -3,-2,-2, -1,-1,-1, 0,1,0 ;DET (9) +; TMDIFF ;GOLD +; .byte -4,-3,-3, -2,-1,-1, 0,0,0, 1,2,1 ;HOU (8) +; .byte -3,-2,-2, -1,0,0, 1,1,1, 2,3,2 ;IND (7) +; TMDIFF ;LAC +; .byte -1,-1,0, 1,1,1, 2,2,2, 3,4,3 ;LAL (6) +; TMDIFF ;MIAMI +; TMDIFF ;MILW +; TMDIFF ;MINN +; TMDIFF ;NJ +; .byte 1,1,2, 3,3,3, 4,4,4, 5,6,5 ;NY (4) +; TMDIFF ;ORL +; TMDIFF ;PHIL +; .byte 4,4,5, 6,6,6, 7,7,7, 8,9,8 ;PHX (2) +; .byte 2,2,3, 4,4,4, 5,5,5, 6,7,6 ;PORT (3) +; TMDIFF ;SAC +; TMDIFF ;SANANT +; TMDIFF ;SEA +; .byte 0,0,1, 2,2,2, 3,3,3, 4,5,4 ;UTAH (5) +; TMDIFF ;WASH +; .even + + +******************************** +* Get random # with mask +* A0=Mask +* >A0=Rnd # (Pass CC) +* Trashes scratch + + SUBRP rnd + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + and a1,a0 + rets + + +******************************** +* Quickly produce a random # in range 0-X +* A0=X +* >A0=Random # (0 to A0) (No CC) +* Trashes scratch + + SUBRP rndrng0 + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + addk 1,a0 + mpyu a1,a0 ;Condition codes not valid! + + rets + + + + + .end + \ No newline at end of file diff --git a/BACKUP/FONTSIMG.ASM b/BACKUP/FONTSIMG.ASM new file mode 100644 index 0000000..2f6fcb8 --- /dev/null +++ b/BACKUP/FONTSIMG.ASM @@ -0,0 +1,11 @@ + .FILE "imgtbl.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include fontsimg.glo + + .include fontsimg.tbl + \ No newline at end of file diff --git a/BACKUP/GAME.EQU b/BACKUP/GAME.EQU new file mode 100644 index 0000000..722ad56 --- /dev/null +++ b/BACKUP/GAME.EQU @@ -0,0 +1,425 @@ +************************************************************** +* +* Software: +* Initiated: 9/3/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + +;PROCESS ID'S + +AMODE_PID .equ 100h +SELECT_PID .equ 300h +PREGAME_PID .equ 400h +GAME_PID .equ 500h +WAITCONT_PID .equ 600h +PARTY_PID .equ 700h +GAMEOVER_PID .equ 800h +HISC_PID .equ 900h +SHADGEN_PID .equ 0a00h ;$a00 - $a00 + NUM_WRESTLERS-1 + + +CYCPID .equ 110h +CYCPID2 .equ 111h ;2nd cycler +BUYINPID .equ 112h +GMEOVPID .equ 113h +COLRPID .equ 114h ;COLOR CYCLE FROM INTERRUPT +DG1PID .equ 115h ;CNTDWN DIGIT PROC +DG2PID .equ 116h ;CNTDWN DIGIT PROC +FADEPID .equ 117h ;SOUND FADER +CP_PID1 .equ 118h ;Credit page +CP_PID2 .equ 119h ;^ +LC_PID .equ 11Ah+8000h ;Left coin (Indestructible) +RC_PID .equ 11Bh+8000h +CC_PID .equ 11Ch+8000h +SLAM_PID .equ 11Dh+8000h +DIAG_PID .equ 11Eh +PSWPID .equ 11Fh ;Plyr start switch +FX_PID .equ 120h ;volume adjust bgnd noise +OVRHED_PID .equ 121h ;INSERT COIN/PRESS START message +WMAIN_PID .equ 122h ;wrestler_main PID +CDEBUG_PID .equ 123h ;collis_debug PID +TIMER_PID .equ 124h ;match timer PID +RTCLOCK_PID .equ 125h ;game realtime clock PID +MUSIC_PID .equ 126h ;battle music PID +VOLBTN_PID .equ 127h ;coin door volume button +VOLADJ_PID .equ 128h ;in-game volume adjustment +ROPE_PID .equ 129h +CREDITID .equ 12Ah ;Credit IMGS ID +GETUP_PID .equ 12Bh ;getup meters +ATTRACT_ANIMPID .equ 12Ch ;attract mode anim +RNDSWON_ID .equ 12Dh ; +ANNC_PID .equ 12eh +SMOVE_PID .equ 12fh ;special move monitor +ADD_INIT_PID .equ 130h +SEL_SPCH_PID1 .EQU 131H +SEL_SPCH_PID2 .EQU 132H +HOWARD_PID .EQU 133H +WATER_PID .EQU 134H +HI_INPUT_PID .EQU 137H ;137/138 +VOICE_PID .EQU 8100H +FLASH_PID .EQU 139H +CLOCK_PID .EQU 13AH +SHAKE_PID .equ 13Bh +CROWD_SOUND_PID .EQU 13CH +REPEAT_MODE_PID .EQU 13DH +REWIRE_PID .EQU 13EH +MESSAGES_PID .EQU 13FH ;140H +ICON_PID .EQU 141H ;142H +FLASH_COMBO_PID .EQU 143H ;144H + +*** ROBOTRON PIDs +;player +ROBOMAN_PID .equ 200h +PLYRGUN_PID .equ 201h +BULLET_PID .equ 202h +MISC_PID .equ 203h + +;neutrals +HUMAN_PID .equ 210h +ROBOSCORE_PID .equ 211h + +;enemies +GRUNT_PID .equ 220h +HULK_PID .equ 221h +SPHEREOID_PID .equ 222h +ENFORCER_PID .equ 223h +SPARK_PID .equ 224h +QUARK_PID .equ 225h +TANK_PID .equ 226h +SHELL_PID .equ 227h + +;dead stuff +DEADGRUNT_PID .equ 230h +DEADBULLET_PID .equ 231h +DEADPOST_PID .equ 232h +SAVEDHUMAN_PID .equ 233h +DEADHUMAN_PID .equ 234h +DEADPLAYER_PID .equ 235h +DEADSPHERE_PID .equ 236h +DEADNFORCER_PID .equ 237h +DEADSPARK_PID .equ 238h +DEADQUARK_PID .equ 239h +DEADTANK_PID .equ 23Ah +DEADSHELL_PID .equ 23Bh + + +;lifebar stuff +METER_PID .equ 240h +MESSAGE_PID .EQU 241H ;242H + +;crowd stuff +CROWD_PID .equ 300h +DEWEY_PID .equ 301h +JAMIE_PID .equ 302h +JASON_PID .equ 303h +JOHNC_PID .equ 304h +JOSH_PID .equ 305h +MARK_PID .equ 306h +NEWC_PID .equ 307h +SAL_PID .equ 308h +TONY_PID .equ 309h +SHERIDAN_PID .equ 30Ah +CARLOS_PID .equ 30Bh +JAKE_PID .equ 30Ch +MARINE_PID .equ 30Dh +ALEX_PID .equ 30Eh +VOGEL_PID .equ 30Fh +TONYCRD_PID .equ 310h +JASONCRD_PID .equ 311h +JOYSIDE_PID .equ 312h +SIDECRD_PID .equ 313h +GEORGE_PID .equ 314h +TOBIAS_PID .equ 315h + +JOY_PID .equ 2000h ;Joystick scanner +COLL_PID .equ 2100h ;Collisions +;STAT_PID .equ 2200h ;Status display + +ANIMPID .equ 4000h ;Animation PIDs (256) + +DELAYSND_PID .equ 2300h ;various unimportant PID's +RNDSEL_PID .equ 2301h +SELTIMER_PID .equ 2302h ;player select clock + +;OBJECT ID'S + +;OBJECT IDENTIFIER FIELDS +;B_CLASS .set 15 +;F_CLASS .set 0E000h + +CLSNEUT .equ 0000h ;Neutral items +CLSHUMAN .equ 1000h ;Humans +CLSDEAD .equ 2000h ;Objects that delete themselves +CLSANIM .equ 3800h ;Animation class objects +CLSPLYR .equ 4000h ;Players stuff +CLSENMY .equ 8000h ;Enemies + +TYPNEUT .equ 0000h ;Type neutral +TYPTEXT .equ 0700h ;Type text + +TYPPLYR .equ 0100h ;Player +TYPBULLET .equ 0200h +TYPGRUNT .equ 0300h +TYPHUMAN .equ 0400h +TYPPOST .equ 0500h +TYPHULK .equ 0600h +TYPTEXT .equ 0700h +TYPSPHEREOID .equ 0800h +TYPENFORCER .equ 0900h +TYPSPARK .equ 0A00h +TYPQUARK .equ 0B00h +TYPTANK .equ 0C00h +TYPSHELL .equ 0D00h +TYPE_MESS1 .EQU 0110H +TYPE_MESS2 .EQU 0120H + + +;TYPE NEUTRAL SUB TYPES +SUBLBAR .equ 7 ;LIFE BAR +SUBTBAR .equ 8 ;TURBO BAR +SUBMFRAME .equ 9 ;LIFE/TURBO FRAME +SUBROPE .equ 0Ah +SUBHORZ .equ 10h +SUBSIDE .equ 20h + +;TYPE TEXT SUB TYPES +SUBTXT .equ 1 ;TEXT ID +SUBMES1 .equ 2 +SUBMES2 .equ 3 +SUBOVRHED .equ 4 ;INSERT COIN/PRESS START messages +SUBSCOR .equ 5 ;SCORE ID +SUBNAME .equ 6 ;WRESTLER NAMES ON LIFE BARS + +;B_TYPE .set 12 +;F_TYPE .set 1F00h +;B_PLYR .set 6 +;F_PLYR .set 00C0h +;B_PLYR1 .set 6 +;B_PLYR2 .set 7 + +;B_SUBT .set 5 +;F_SUBT .set 003Fh + +JOYLFT .EQU 2 +JOYRGT .EQU 3 +JOYUP .EQU 0 +JOYDN .EQU 1 + +;BIT MASKS FOR PLAYER CONTROL TESTING + +BMPRYTE .EQU 3 ;MOVE RIGHT,LEFT,DOWN,UP (LSB) +BMPLEFT .EQU 2 +BMPDOWN .EQU 1 +BMPUP .EQU 0 + +;YUNIT EQUATES +BMPFRYTE .EQU 7 ;FIRE RIGHT,LEFT,DOWN,UP (MSB) +BMPFLEFT .EQU 6 +BMPFDOWN .EQU 5 +BMPFUP .EQU 4 + +;BITS USED IN PLAYER CONTROLS (1=ACTIVE) + +PRYTE .EQU 8 +PLEFT .EQU 4 +PDOWN .EQU 2 +PUP .EQU 1 + +;YUNIT EQUATES FOR JOYSTICK +;PFRYTE .EQU 80H +;PFLEFT .EQU 40H +;PFDOWN .EQU 20H +;PFUP .EQU 10H + +*CROWD BIT SETTINGS +C_LONG .EQU 1 +C_SHORT .EQU 0 +C_OVERIDE .EQU 2 +C_RANDOM .EQU 4 + +B_L_OR_S .EQU 0 +B_OVERRIDE .EQU 1 +B_RANDOM .EQU 2 + +*GAME STATE CONSTANTS +INDIAG .equ -1 ;Any neg +INAMODE .equ 1 ;attract mode +INSELECT .equ 2 ;char select mode +INPREGAME .equ 3 ;'get ready' phase +INGAME .equ 4 ;actual battle +INWAITCONT .equ 5 ;battle has ended and a player has + ; lost. waiting for them to continue +INPARTY .equ 6 ;player won the game +INGAMEOVER .equ 7 ;game over, headed for attract mode +INHISCORE .equ 8 ;a player has lost. check and see + ; if he makes one of the tables, and + ; get his inits if he does. + +*ASCII FONT MISCELLANEOUS EQUATES +F15SP .EQU 7EH ;FONT 15 SP CHARACTER, FOR HS ENTRY +F15RUB .EQU F15SP+1 ;FONT 15 RUB CHARACTER,FOR HS ENTRY +F15END .EQU F15RUB+1 ;FONT 15 END CHARACTER,FOR HS ENTRY +F15RQUOT .EQU F15END+1 ;FONT 15 RIGHT QUOTE + +*Rope stuff +ROPE_FRONT .equ 0 +ROPE_BACK .equ 1 +ROPE_LEFT .equ 2 +ROPE_RIGHT .equ 3 + +R_TOP .equ 0 ;ANI_ROPE_Z rope specifier +R_MIDDLE .equ 1 +R_BOTTOM .equ 2 + +RZ_HIGH .equ 0 ;ANI_ROPE_Z action +RZ_NORM .equ 1 + +ROPE_BOUNCEUD .equ 0 ;bounce up and down +ROPE_BOUNCEIO .equ 1 ;bounce in and out +ROPE_SIDES .equ 2 ;side spring +ROPE_DOWNS .equ 3 ;down spring +ROPE_SIDESR .equ 4 ;side spring release +ROPE_DOWNSR .equ 5 ;down spring release +ROPE_COMMANDS .equ 6 + +****************************************************************************** +* +* PLAYER FACING & MOVE DIRECTIONS + +MOVE_ZIP equ 0 +MOVE_UP equ 1 +MOVE_DOWN equ 2 +MOVE_LEFT equ 4 +MOVE_UP_LEFT equ 5 +MOVE_DOWN_LEFT equ 6 +MOVE_RIGHT equ 8 +MOVE_UP_RIGHT equ 9 +MOVE_DOWN_RIGHT equ 10 + + +;used in special moves table +J_UP equ MOVE_UP +J_UP_TOWARD equ MOVE_UP_RIGHT +J_TOWARD equ MOVE_RIGHT +J_DOWN_TOWARD equ MOVE_DOWN_RIGHT +J_DOWN equ MOVE_DOWN +J_DOWN_AWAY equ MOVE_DOWN_LEFT +J_AWAY equ MOVE_LEFT +J_UP_AWAY equ MOVE_UP_LEFT + +J_FLIPPED_LR equ J_TOWARD | J_AWAY + +J_LEFT equ MOVE_LEFT<<8 +J_RIGHT equ MOVE_RIGHT<<8 +J_REAL_LR equ J_LEFT | J_RIGHT +J_ALL equ 01111b | J_REAL_LR + +MOVE_UP_BIT equ 0 +MOVE_DOWN_BIT equ 1 +MOVE_LEFT_BIT equ 2 +MOVE_RIGHT_BIT equ 3 + +MOVE_AWAY_BIT equ MOVE_LEFT_BIT +MOVE_TOWARD_BIT equ MOVE_RIGHT_BIT + +****************************************************************************** +* +* BUTTONS + +PLAYER_UP_BIT equ 0 +PLAYER_UP_VAL equ 1< 0-12) + + .long H3RL1A+FR1 ;0 + .long H3RL1A+FR13 ;1 + .long H3RL1A+FR12 ;2 + .long H3RL1A+FR11 ;3 + .long H3RL1A+FR10 ;4 + .long H3RL1A+FR9 ;5 + .long H3RL1A+FR8 ;6 + .long H3RL1A+FR7 ;7 + .long H3RL1A+FR6 ;8 + .long H3RL1A+FR5 ;9 + .long H3RL1A+FR4 ;10 + .long H3RL1A+FR3 ;11 + .long H3RL1A+FR2 ;12 + + .long 0,0,0,0,0,0 + + +#***************************************************************************** + + SUBR hrt_leap_test + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .ref HIT_THE_MAT,SMALL_BOUNCE,hrt_faceup_getup_anim + .ref ck_dizzy,ckzpos + + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR hrt_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,300 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 4,H2CP3A+FR1 + WL 4,H2CP3A+FR2 + WL 4,H2CP3A+FR3 + WL 4,H2CP3A+FR4 + WL 4,H2CP3A+FR5 + WL 4,H2CP3A+FR6 + WL 4,H2CP3A+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,H2CP3A+FR8 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR hrt_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,H3FR3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,300 + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,H3FR3A+FR5 + .word ANI_XFLIP + .word ANI_OFFSET,15,0,0 ;x,y,z + WL 3,H2CP3A+FR8 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 4,H2CP3A+FR1 + WL 4,H2CP3A+FR2 + WL 4,H2CP3A+FR3 + WL 4,H2CP3A+FR4 + WL 4,H2CP3A+FR5 + WL 4,H2CP3A+FR6 + WL 4,H2CP3A+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,H2CP3A+FR8 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* + + SUBR hrt_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + + WL 2,H3GU4A+FR10 + WL 2,H3GU4A+FR8 + WL 2,H3GU4A+FR3 + WL ANI_SET_YVEL,39000h + + WL 3,H2CP3A+FR1 + .word ANI_DEBRIS,400,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,H2CP3A+FR2 + WL 3,H2CP3A+FR3 + WL 3,H2CP3A+FR4 + WL 3,H2CP3A+FR5 + WL 3,H2CP3A+FR6 + WL 3,H2CP3A+FR7 + WL 3,H2CP3A+FR8 + +;MJT Start + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead +;MJT End + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#***************************************************************************** + SUBR hrt_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WLW ANI_SET_XVEL,2000h,AM_FACE_REL + + .word ANI_OFFSET,16,0,0 + WL 4,H4CR3D+FR1 + WL 4,H4CR3D+FR2 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,3,0,0 ;***** + WL 4,H4CR3D+FR3 + WL 4,H4CR3D+FR4 + + .word ANI_BENDROPE,2 + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + .word ANI_OFFSET,5,0,0 ;***** + WL 4,H4CR3D+FR5 + + .word ANI_BENDROPE,2 + + .word ANI_OFFSET,4+6,0,0 ;***** + WL 4,H4CR3D+FR8 + + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_BENDROPE,3 + .word ANI_OFFSET,10,0,0 ;***** + WL 4,H4CR3D+FR9 + .word ANI_ZEROVELS + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,5,0,0 ;***** + WL 4,H4CR3D+FR10 + .word ANI_OFFSET,10,-3,0 + WL 4,H4CR3D+FR11 + .word ANI_OFFSET,2,0,0 ;***** + WL 4,H4CR3D+FR12 + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + ;now jump off... + WL 4,H4JD4B+FR1 + WL 4,H4JD4B+FR2 + WL 3,H4JD4B+FR3 + WL 3,H4JD4B+FR4 + WL 3,H4JD4B+FR5 + WL 3,H4JD4B+FR6 + + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,H4JD4B+FR7 + .word ANI_WAITHITGND + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 6,H4JD4B+FR8 + WL 3,H4JD4B+FR9 + WL 3,H4JD4B+FR10 + WL 3,H4JD4B+FR11 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR hrt_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in + WL 4,H4JD4B+FR1 + WL 4,H4JD4B+FR2 + WL 4,H4JD4B+FR3 + WL 4,H4JD4B+FR4 + WL 4,H4JD4B+FR5 + WL 4,H4JD4B+FR6 + + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,1ch,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 4,H4JD4B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + .word ANI_OFFSET,13,0,0 ;***** + WL 3,H4JD4B+FR8 + WL 3,H4JD4B+FR9 + WL 3,H4JD4B+FR10 + WL 3,H4JD4B+FR11 + + WL ANI_CODE,#set_z + WLW ANI_SET_XVEL,2000h,AM_FACE_REL + + ;climb through + WL 3,H4CR3D+FR1 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,H4CR3D+FR2 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,H4CR3D+FR3 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_OFFSET,3,0,0 ;***** + WL 3,H4CR3D+FR4 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,H4CR3D+FR5 + + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_BENDROPE,2 + .word ANI_OFFSET,5+8,0,0 ;***** + WL 3,H4CR3D+FR8 + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_OFFSET,5,0,0 ;***** + WL 3,H4CR3D+FR9 + .word ANI_OFFSET,5,0,0 ;***** + WL 3,H4CR3D+FR10 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,10,-3,0 + WL 3,H4CR3D+FR11 + WL 3,H4CR3D+FR12 + .word ANI_ZEROVELS + + WL ANI_CODE,clr_climb + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets +#set_z + +clr_climb + + clr a0 + move a0,*a13(CLIMBING_THRU) ;1=Climbing thru ropes flag + rets + + +#***************************************************************************** + + SUBR hrt_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL 3,H3GU4A+FR10 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR5 + WL 3,H3GU4A+FR4 + WL 3,H3GU4A+FR2 + WL 3,H3GU4A+FR1 + + ;roll over once + WLW ANI_SET_ZVEL,80000h,AM_ABS + + WL 3,H3RL1A+FR13 + WL 3,H3RL1A+FR12 + WL 3,H3RL1A+FR11 + WL 3,H3RL1A+FR10 + WL 3,H3RL1A+FR9 + WL 3,H3RL1A+FR8 + WL 3,H3RL1A+FR7 + WL 3,H3RL1A+FR6 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + + ;climb through + + .WORD ANI_XFLIP + WL ANI_CODE,NOT_IN_RING + .word ANI_OFFSET,0,-37h,0 ;x,y,z + WL 3,H4KM3B+FR7 + WL 3,H4KM3B+FR8 + WL 3,H4KM3B+FR9 + .WORD ANI_XFLIP + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS + +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +NOT_IN_RING + MOVK 1,A0 + MOVE A0,*A13(INRING) + RETS + +#***************************************************************************** + + SUBR hrt_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .WORD ANI_XFLIP + WL 3,H4KM3B+FR9 + WL 3,H4KM3B+FR8 + WL 3,H4KM3B+FR7 + .word ANI_OFFSET,0,37h,-60 + .WORD ANI_XFLIP + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,H3RL1A+FR6 + WL 3,H3RL1A+FR7 + WL 3,H3RL1A+FR8 + WL 3,H3RL1A+FR9 + WL 3,H3RL1A+FR10 + WL 3,H3RL1A+FR11 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,H3GU4A+FR1 + WL 3,H3GU4A+FR2 + WL 3,H3GU4A+FR3 + WL 3,H3GU4A+FR4 + WL 3,H3GU4A+FR5 + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR10 + + WL ANI_CODE,clr_climb + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR hrt_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2, spin first! + WL 3,H1TT5A+FR3 + WL 3,H1TT5A+FR4 + +#dir4 + WL 3,H3GU4A+FR10 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR5 + WL 3,H3GU4A+FR4 + WL 3,H3GU4A+FR3 + WL 3,H3GU4A+FR2 + WL 3,H3GU4A+FR1 + + ;roll over once + WL ANI_CODE,#set_zvel2 +#cont + WL 3,H3RL1A+FR13 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + WL 3,H3RL1A+FR1 + WL 3,H3RL1A+FR2 + WL 3,H3RL1A+FR3 + WL 3,H3RL1A+FR4 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,H3MS3Z+FR4 + WL 3,H3MS3Z+FR3 + WL 3,H3MS3Z+FR2 + + .word ANI_ZERO_XZVELS + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR hrt_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,H3MS3Z+FR2 + WL 3,H3MS3Z+FR3 + WL 3,H3MS3Z+FR4 + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,H3RL1A+FR3 + WL 3,H3RL1A+FR2 + WL 3,H3RL1A+FR1 + WL 3,H3RL1A+FR13 + + .word ANI_ZEROVELS + + ;get up + WL 3,H3GU4A+FR1 + WL 3,H3GU4A+FR2 + WL 3,H3GU4A+FR3 + WL 3,H3GU4A+FR4 + WL 3,H3GU4A+FR5 + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR10 + + WL ANI_CODE,clr_climb + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel2 + movi 52000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR hrt_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,H1TL5A+FR3 ;2.5 + WL 3,H1TL5A+FR4 ;3.5 + WL ANI_GOTO,#cont + + SUBR hrt_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 29,999,80h,50h,90000h,TGT_CHEST,0,57,-15 + + WL 3,H3PN5A+FR1 + WL 4,H3PN5A+FR2 + WL 4,H3PN5A+FR3 + .word ANI_OFFSET,0,48,0 ;x,y,z + WL 18,H3PN5A+FR4 +; .word ANI_WAITHITGND + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + + WL 5,H3PN5A+FR7 + + WL ANI_CODE,DO_CROWD_CHEER + .word ANI_ATTACK_OFF + WL ANI_CODE,HIT_THE_MAT + .word ANI_BOUNCE,4 + WL 4,H3PN5A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + WL 4,H3PN5A+FR8 + .ref win_announce + WL ANI_CODE,win_announce + .word ANI_OFFSET,0,0,0 ;x,y,z + WL 40,H3PN5A+FR8 + +;???? IS THIS WHERE IT GOES ? + .word ANI_LOOP + +;Do another ground hit on opponent + .ref grnd_hit + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR10 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,H4SL4C+FR1 + WL 5,H4SL4C+FR2 + WL 5,H4SL4C+FR3 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR9 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR7 + + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + + + + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR9 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR7 + + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR9 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR7 + + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + + + WL 1000,H4SL4C+FR3 + +; WL 5,H4SL4C+FR2 +; WL 1000,H4SL4C+FR1 + + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* END + + \ No newline at end of file diff --git a/BACKUP/HRTSEQ3.ASM b/BACKUP/HRTSEQ3.ASM new file mode 100644 index 0000000..754ad41 --- /dev/null +++ b/BACKUP/HRTSEQ3.ASM @@ -0,0 +1,1550 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "hrtseq3.asm" + .title "lockup stuff and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "display.equ" + + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" + + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + +;RJR START + .ref DO_SNAP_MESS,CALL_SPECIAL_MOVE +;RJR END + + ;BAM BAM + .ref bam_3_head_held_anim + .ref B3GU4A,B3DU3A,B3BF3C + + ;DOINK + .ref dnk_3_head_held_anim + .ref D3DU3A,D3HT3Z,D3BF3A + + ;BRET + .ref hrt_hitonground_facedown_anim,hrt_stand4_anim + .ref hrt_flyout2_anim,hrt_faceup_getup_anim + .ref H3GU4A,H3DU3A,H3BF3A + + ;LEX + .ref lex_3_head_held_anim + .ref L3DU3A,L3BF3B + + ;RAZOR + .ref rzr_3_head_held_anim + .ref R3GU4A,R3DU3B,R3BF3A + + ;SHAWN + .ref shn_3_head_held_anim + .ref S3GU4A,S3DU3A,S3BF3A + + ;TAKER + .ref und_3_head_held_anim + .ref U3DU3B,U4BF3Z + + ;YOKO + .ref yok_3_head_held_anim + .ref Y3GU2A,Y3BF3A + + ;MISC + .ref CALL_MISSES,SMALL_BOUNCE + .ref tgt_tbukl,tbukl_flip + + + .ref HIT_THE_MAT + + .ref slaveanim_tbl + + .ref hrt_slambounce_anim + .ref rzr_slambounce_anim + .ref und_slambounce_anim + .ref yok_slambounce_anim + .ref shn_slambounce_anim + .ref bam_slambounce_anim + .ref dnk_slambounce_anim + .ref lex_slambounce_anim + + .ref rzr_break_face_anim + .ref und_break_face_anim + .ref yok_break_face_anim + .ref shn_break_face_anim + .ref bam_break_face_anim + .ref dnk_break_face_anim + .ref lex_break_face_anim + +;RJR START + .ref hrt_tossed_anim + .ref rzr_tossed_anim + .ref und_tossed_anim + .ref yok_tossed_anim + .ref shn_tossed_anim + .ref bam_tossed_anim + .ref dnk_tossed_anim + .ref lex_tossed_anim +;RJR END + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR hrt_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 3,H4MF4B+FR1 + WL 3,H4MF4B+FR2 + WL 3,H4MF4B+FR3 + WL 3,H4MF4B+FR4 + WL 3,H4MF4B+FR5 + WL 3,H4MF4B+FR6 + WL 3,H4MF4B+FR7 + WL 3,H4MF4B+FR8 + WL 3,H4MF4B+FR9 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 5,H4MF4B+FR1 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,H3MS3Z+FR4 + WL 4,H3MS3Z+FR3 + WL 4,H3MS3Z+FR2 + WL 4,H3MS3Z+FR1 + .word ANI_WAITHITGND + WL 4,H2ST2A+FR1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* BACK BREAKER + + SUBR hrt_backbreaker_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NECK BREAKER + + SUBR hrt_neckbreaker_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* END OF NECK BROKEN SEQ. + + SUBR hrt_neckbroken_anim + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#***************************************************************************** +* +* POGO STICK HEAD CRUNCHER + + SUBR hrt_pogo_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + +#yoff equ 20 + + SUBR hrt_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 4,H4HU4B+FR1 + WL 4,H4HU4B+FR2 + WL ANI_CODE,tgt_tbukl + .word ANI_LEAPATPOS,20,200,8,-3,0 ;#ticks,dist,xoff,yoff,zoff + WL 20,H4HU4B+FR3 + + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_SHAKECORNER + + .word ANI_OFFSET,0,#yoff,0 + WL 4,H4HU4B+FR4 + WL 4,H4HU4B+FR7 + +#repeat + WL 4,H4SB4B+FR1 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR2 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR3 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR4 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR5 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR6 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR7 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR6 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR5 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR4 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR3 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR2 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR hrt_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SHAKECORNER + + WL 4,H4HU4B+FR2 + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WLW ANI_SET_ZVEL,-10000h,AM_FACE_REL + WL ANI_SET_YVEL,20000h + + WL 1,H4HU4B+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,H4HU4B+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;RJR START +#***************************************************************************** +* +* HIP SLAM +* + + SUBR hrt_hipslam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,48,0,2 + WL ANI_SET_YVEL,0 + + WL 4,H3HT3X+FR1 + WL 4,H3HT3X+FR2 + + .word ANI_ATTACK_ON,AMODE_PUPPET,19,59,70,38 + WWL ANI_WAITHITOPP,3,H3HT3X+FR3 + + .word ANI_ZERO_XZVELS + + WL ANI_IFBLOCKED,#missedblk + WL ANI_IFSTATUS,#got_him + + WWL ANI_WAITHITOPP,20,H3HT3X+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFBLOCKED,#missedblk + WL ANI_IFNOTSTATUS,#missed + +#got_him + .word ANI_ATTACK_OFF + WL ANI_CODE,DO_SNAP_MESS + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,H3HT3X+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,H3HT3X+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,H3HT3X+FR5,#puppet_tbl,2 + WLW ANI_SET_XVEL,-18000h,AM_FACE_REL + WL ANI_SET_YVEL,08000h + .word ANI_OFFSET,0,43,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,4,H3HT3X+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,H3HT3X+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,1,H3HT3X+FR8,#puppet_tbl,5 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS + + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR9,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR10,#puppet_tbl,7 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + .word ANI_FACE,MOVE_LEFT|MOVE_UP + WL 10,H3HT3X+FR10 + .word ANI_XFLIP + WL 4,H3HT3X+FR11 + WL 4,H3HT3X+FR12 + + WL 4,H3GU2A+FR7 + WL 4,H3GU2A+FR8 + WL 4,H3GU2A+FR9 + WL 4,H3GU2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + +#missedblk + WL 10,H3HT3X+FR3 + WL 20,H3HT3X+FR3 +#missed + WL ANI_CODE,CALL_MISSES + + WL 6,H3HT3X+FR2 + WL 6,H3HT3X+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#rollout_tbl + .long hrt_tossed_anim,rzr_tossed_anim + .long und_tossed_anim + .long yok_tossed_anim + .long shn_tossed_anim,bam_tossed_anim + .long dnk_tossed_anim,0,lex_tossed_anim + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AH3A+FR5,55,11,0 + LWWW H2AM3A+FR1,42,16,0 + LWWW H2AM3A+FR7,25,1,0 + LWWW H3FR3A+FR2,2,32,0 + LWWW H3FR3A+FR3,-17,62,0 + LWWW H3FR3A+FR4,-40,49,0 + LWWW H3FR3A+FR5,-69,4,0 + LWWW H2CP3A+FR8,-142,-30,1 + .long 0 +#Razor + LWWW R4AH4C+FR3,65,18,0 + LWWW R3TD3A+FR1,40,16,0 + LWWW R3TD3A+FR3,13,1,0 + LWWW R3TD3A+FR4,-4,22,0 + LWWW R3TD3A+FR5,-8,38,0 + LWWW R3TD3A+FR6,-30,37,0 + LWWW R3TD3A+FR7,-65,16,0 + LWWW R3GU2A+FR1,-159,-28,1 + .long 0 +#Taker + LWWW U3AE4A+FR1,69,24,0 + LWWW U4AM4C+FR4,41,13,0 + LWWW U3FH3A+FR1,28,7,1 + LWWW U3FH3A+FR2,2,36,1 + LWWW U3FH3A+FR3,-14,48,1 + LWWW U3FH3A+FR4,-45,48,1 + LWWW U3FH3A+FR5,-80,24,1 + LWWW U3CP3B+FR1,-161,-25,1 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR1,66,12,0 + LWWW Y3FL3W+FR2,31,6,0 + LWWW Y3FL3W+FR3,5,8,0 + LWWW Y3FL3W+FR4,8,45,0 + LWWW Y3FL3W+FR5,-3,64,0 + LWWW Y3FL3W+FR6,-43,62,0 + LWWW Y3FL3W+FR7,-84,18,0 + LWWW Y3FD3A+FR7,-127,-3,0 + .long 0 +#Shawn + LWWW S3OS3X+FR2,43,9,1 + LWWW S3OS3X+FR4,9,8,1 + LWWW S3OS3X+FR5,-16,6,1 + LWWW S3OS3X+FR6,-14,54,1 + LWWW S3OS3X+FR7,-13,71,1 + LWWW S3OS3X+FR8,-27,61,1 + LWWW S3OS3X+FR9,-88,33,1 + LWWW S3OS3X+FR10,-136,-20,1 + .long 0 +#BamBam + LWWW B4AH4A+FR1,56,13,0 + LWWW B4TD3B+FR2,25,13,0 + LWWW B4TD3B+FR3,2,8,0 + LWWW B4TD3B+FR4,2,25,0 + LWWW B4TD3B+FR5,-17,59,0 + LWWW B4TD3B+FR6,-45,57,0 + LWWW B4TD3B+FR7,-79,29,0 + LWWW B4TD3B+FR9,-130,-10,0 + .long 0 +#Doink + LWWW D3AE3B+FR8,63,13,0 + LWWW D3PM4C+FR2,21,18,0 + LWWW D3OS3A+FR2,3,10,0 + LWWW D3OS3A+FR4,-17,34,0 + LWWW D3OS3A+FR5,-22,42,0 + LWWW D3OS3A+FR6,-42,36,0 + LWWW D3FD3E+FR2,-79,-6,0 + LWWW D3SA3A+FR2,-144,-21,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3FH3A+FR1,44,-8,0 + LWWW L3FH3A+FR2,39,-16,0 + LWWW L3FH3A+FR3,21,5,0 + LWWW L3FH3A+FR4,10,35,0 + LWWW L3FH3A+FR5,-11,46,0 + LWWW L3FH3A+FR6,-39,45,0 + LWWW L3FH3A+FR6,-63,14,0 + LWWW L3CP3B+FR1,-150,-23,1 + .long 0 + + + .if 0 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + WL 4,H3HT3X+FR1 + WL 4,H3HT3X+FR2 + + ;don't do it if it's just gonna lock on a hit + .word ANI_IFOPP,W_BRET,-1 + WL ANI_IFNOTSTATUS,#missed + + .word ANI_ATTACK_ON,AMODE_PUPPET,46,88,42,23 + WL 4,H3HT3X+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + .word ANI_ATTACHZ,0,0,4 + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WLW ANI_SUPERSLAVE,#puppet_tbl,0 + WL 8,H3HT3X+FR3 + WLW ANI_SUPERSLAVE,#puppet_tbl,1 + WL 4,H3HT3X+FR4 + + WL ANI_SET_YVEL,30000h + + WLW ANI_SUPERSLAVE,#puppet_tbl,2 + WL 4,H3HT3X+FR5 + + WWWL ANI_IFROPE,RC_BACK,128,#throw_him_out + + WLW ANI_SUPERSLAVE,#puppet_tbl,3 + WL 4,H3HT3X+FR6 + WLW ANI_SUPERSLAVE,#puppet_tbl,4 + WL 4,H3HT3X+FR7 + WLW ANI_SUPERSLAVE,#puppet_tbl,5 + WL 4,H3HT3X+FR8 + WLW ANI_SUPERSLAVE,#puppet_tbl,6 + WL 4,H3HT3X+FR9 + + ;impact + .word ANI_SOUND,0C2h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_DAMAGEOPP,16 + .word ANI_OPP_GETUP,30 + + WL ANI_SLAVEANIM,#recover_tbl + .word ANI_DETACH +#attacker_lands + .word ANI_ZEROVELS + WL 10,H3HT3X+FR10 + WL 4,H3HT3X+FR11 + WL 4,H3HT3X+FR12 + + ;get up + WL 4,H3GU2A+FR8 + WL 4,H3GU2A+FR9 + WL 4,H3GU2A+FR10 + .word ANI_FACEUP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + ;release him + WL ANI_SLAVEANIM,#flyout_tbl + .word ANI_DETACH + WL 4,H3HT3X+FR6 + WL 4,H3HT3X+FR7 + WL 4,H3HT3X+FR8 + WL 4,H3HT3X+FR9 + WL ANI_GOTO,#attacker_lands + +#missed + WL ANI_CODE,CALL_MISSES + WL 10,H3HT3X+FR3 + WL 4,H3HT3X+FR2 + WL 4,H3HT3X+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3UC3X+FR1,72,-2,1 + LWWW H3UC3X+FR3,58,24,1 + LWWW H3UC3X+FR5,50,73,1 + LWWW H3UC3Z+FR1,23,94,1 + LWWW H3UC3Z+FR2,6,78,1 + LWWW H3UC3Z+FR4,5,45,1 + LWWW H3MS3X+FR1,-100,0,0 +#Razor + .long 0 +#Taker + .long 0 +#Yokozuna + .long 0 +#Shawn + .long 0 +#BamBam + .long 0 +#Doink + .long 0 +#Adam + .long 0 +#Lex + .long 0 + +#recover_tbl + .long hrt_hitonground_facedown_anim,0,0,0 + .long 0,0,0,0,0 + +#flyout_tbl + .long hrt_flyout2_anim,0,0,0 + .long 0,0,0,0,0 + + + .endif + +;RJR END +#***************************************************************************** + + SUBR hrt_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,H3BF3A+FR1 + WL 4,H3BF3A+FR2 + WL 4,H3BF3A+FR3 + WL 4,H3BF3A+FR4 + WL 4,H3BF3A+FR5 + WL 4,H3BF3A+FR6 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR hrt_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,H3HB3A+FR2 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,H2AH3A+FR1 + WL 3,H2AH3A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,H2AH3A+FR3 + WL 3,H2AH3A+FR4 + WL 3,H2AH3A+FR5 + WL 3,H2AH3A+FR6 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 4,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR hrt_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,H3HB3A+FR3 + WL 3,H1TL5A+FR3 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#****************************************************************************** + + SUBR hrt_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 5,H4SL4C+FR1 + WL 5,H4SL4C+FR2 + WL 5,H4SL4C+FR3 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR9 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR7 + + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + + WL 5,H4SL4C+FR3 + WL 5,H4SL4C+FR2 + WL 5,H4SL4C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,hrt_stand4_anim + .word ANI_END + +#****************************************************************************** + + SUBR hrt_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,15 + WL 2,H1TL5A+FR3 ;2.5 + WL 2,H1TL5A+FR4 ;3.5 + + SUBR hrt_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_CHEER,3 + + .word ANI_STARTATTACK,AT_PUPPET,11 + WL 3,H4GH3Z+FR1 + + LEAPATOPP 8,999,80,80,40000h,TGT_HEAD,10,6,-2 + + WL 4,H4GH3Z+FR2 + WL 4,H4GH3Z+FR3 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET,18,0,25,18 ;mode,x,y,w,h + WL 5,H4GH3Z+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + .word ANI_DAMAGEOPP,10 + + WWLLW ANI_SUPERSLAVE2,4,H4GH3Z+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,H4GH3Z+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,H4GH3Z+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,H4GH3Z+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,H4GH3Z+FR8,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,H4GH3Z+FR8,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 4,H4GH3Z+FR8 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL 20,H4GH3Z+FR3 + WL 3,H4GH3Z+FR2 + WL 3,H4GH3Z+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,30,-33,0 + LWWW H3GU4A+FR3,46,-36,0 + LWWW H3DU3A+FR3,48,-34,1 + LWWW H3DU3A+FR4,55,-25,1 + LWWW H3DU3A+FR5,53,-37,1 + LWWW H3BF3A+FR1,52,-38,0 + .long 0 +#Razor + LWWW R3GU4A+FR2,36,-30,1 + LWWW R3GU4A+FR3,36,-29,0 + LWWW R3GU4A+FR5,55,-35,0 + LWWW R3DU3B+FR2,50,-35,1 + LWWW R3DU3B+FR4,52,-33,1 + LWWW R3BF3A+FR4,48,-40,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,41,-26,1 + LWWW U3DU3B+FR5,36,-27,1 + LWWW U3DU3B+FR6,47,-35,1 + LWWW U3DU3B+FR8,49,-31,1 + LWWW U3DU3B+FR10,52,-32,1 + LWWW U4BF3Z+FR5,62,-20,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,31,-21,0 + LWWW Y3GU2A+FR3,47,-16,0 + LWWW Y3GU2A+FR6,32,-38,0 + LWWW Y3GU2A+FR9,52,-35,0 + LWWW Y3GU2A+FR12,51,-32,0 + LWWW Y3BF3A+FR1,48,-29,0 + .long 0 +#Shawn + LWWW S3GU4A+FR1,35,-32,1 + LWWW S3GU4A+FR2,39,-29,0 + LWWW S3GU4A+FR4,51,-34,0 + LWWW S3GU4A+FR5,50,-36,0 + LWWW S3DU3A+FR2,56,-40,1 + LWWW S3BF3A+FR1,39,-39,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,39,-15,0 + LWWW B3GU4A+FR4,44,-23,0 + LWWW B3GU4A+FR6,48,-27,0 + LWWW B3GU4A+FR7,48,-38,0 + LWWW B3DU3A+FR2,48,-34,1 + LWWW B3BF3C+FR5,59,-33,0 + .long 0 +#Doink + LWWW D3DU3A+FR2,33,-25,1 + LWWW D3DU3A+FR3,43,-27,1 + LWWW D3DU3A+FR5,45,-30,1 + LWWW D3DU3A+FR8,48,-38,1 + LWWW D3HT3Z+FR1,48,-38,1 + LWWW D3BF3A+FR2,49,-37,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3DU3A+FR2,37,-27,1 + LWWW L3DU3A+FR4,25,-16,1 + LWWW L3DU3A+FR6,28,-30,1 + LWWW L3DU3A+FR7,41,-27,1 + LWWW L3DU3A+FR9,53,-37,1 + LWWW L3BF3B+FR2,61,-41,0 + .long 0 + + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR hrt_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 2,H3MS3X+FR5 ;Face down + WL ANI_SET_YVEL,80000h + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 3,H3MS3X+FR5 + .word ANI_WAITHITGND + .word ANI_END + + +* Head slams into mat +;From head slam + + SUBR hrt_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 2,H3MS3X+FR5 ;Face down + WL ANI_SET_YVEL,40000h + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 3,H3MS3X+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 3,H3MS3X+FR5 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,H3MS3X+FR5 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + .word ANI_END + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR hrt_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,12 + WL 3,H4GH3C+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 9,999,60,40,90000h,TGT_HEAD,56,93,8 + WL 3,H4GH3C+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,40,80,37,23 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,3,H4GH3C+FR3 + WWL ANI_WAITHITOPP,6,H4GH3C+FR4 + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missed + +;got him +; WL ANI_CODE,merge_xvels + + .ref CALL_SETUP + WL ANI_CODE,CALL_SETUP + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,H4GH3C+FR5,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,H4GH3C+FR6,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,H4GH3C+FR7,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,H4GH3Z+FR8,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 4,H4GH3Z+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 25,H4GH3C+FR4 + WL 3,H4GH3C+FR3 + WL 3,H4GH3C+FR2 + WL 3,H4GH3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +; .ref H2AH3A,H3HB3A,H3BF3A + .ref R2AH2D,R3HB3A,R3BF3A + .ref U4BF3A,U4BF3Z,U4AM4C + .ref Y3BF3A,Y3LB3A + .ref S4AH3D,S4BF3A + .ref B4BF3A,B3HB3A,B3BF3C + .ref D3AK3A,D3BF3A + .ref L2AH2A,L3BF3A,L3BF3B,L4AH4B +#Bret + LWWW H2AH3A+FR1,79,25,0 + LWWW H3HB3A+FR3,65,2,0 + LWWW H3HB3A+FR2,56,-8,0 + LWWW H3HB3A+FR1,49,-40,0 + .long 0 +#Razor + LWWW R3HB3A+FR3,70,3,0 + LWWW R3HB3A+FR3,74,0,0 + LWWW R3HB3A+FR2,71,-19,0 + LWWW R3BF3A+FR1,53,-40,0 + .long 0 +#Taker + LWWW U4AM4C+FR2,61,12,0 + LWWW U4BF3A+FR2,66,13,0 + LWWW U4BF3A+FR3,34,-7,0 + LWWW U4BF3Z+FR3,55,-29,0 + .long 0 +#Yokozuna + LWWW Y3LB3A+FR2,74,15,0 + LWWW Y3LB3A+FR2,78,12,0 + LWWW Y3LB3A+FR9,60,-18,0 + LWWW Y3BF3A+FR1,56,-30,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,78,8,0 + LWWW S4AH3D+FR5,82,5,0 + LWWW S4BF3A+FR2,68,-12,0 + LWWW S4BF3A+FR3,30,-28,0 + .long 0 +#BamBam + LWWW B4BF3A+FR1,79,12,0 + LWWW B4BF3A+FR1,83,9,0 + LWWW B3HB3A+FR2,69,-25,0 + LWWW B3BF3C+FR5,60,-34,0 + .long 0 +#Doink + LWWW D3AK3A+FR3,58,17,0 + LWWW D3AK3A+FR3,62,14,0 + LWWW D3AK3A+FR2,66,-9,0 + LWWW D3BF3A+FR1,53,-40,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,74,13,0 + LWWW L3BF3A+FR1,81,9,1 + LWWW L3BF3A+FR2,72,-12,1 + LWWW L3BF3B+FR5,54,-34,0 + .long 0 + + .ref rzr_3_head_held_anim + .ref bam_3_head_held_anim + .ref und_3_head_held_anim + .ref yok_3_head_held_anim +; .ref hrt_3_head_held_anim + .ref lex_3_head_held_anim + .ref shn_3_head_held_anim + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#***************************************************************************** +* +* DDT (FROM HEAD HOLD) + + SUBR hrt_hh_2_ddt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WL ANI_SLAVEANIM,slaveanim_tbl + .word ANI_SETOPPMODE,MODE_GHOST + + WWLLW ANI_SUPERSLAVE2,3,H1TL5A+FR5,#puppet_tbl,0 + .word ANI_XFLIP + WWLLW ANI_SUPERSLAVE2,3,H1TL5A+FR6,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,H1TL5A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR1,#puppet_tbl,3 + + WWL ANI_SETLONG,OBJ_GRAVITY,0a000h + WL ANI_SET_YVEL,70000h + + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR2,#puppet_tbl,4 + .word ANI_OFFSET,0,53,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR3,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR4,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR5,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,1,H3DD3Z+FR6,#puppet_tbl,8 + + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR7,#puppet_tbl,9 + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#break_face_tbl + + .word ANI_SETOPP_PLYRMODE,MODE_ONGROUND + .word ANI_DETACH + WL 8,H3UC3X+FR9 + WL 8,H3UC3X+FR10 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#break_face_tbl + .long hrt_break_face_anim,rzr_break_face_anim + .long und_break_face_anim + .long yok_break_face_anim + .long shn_break_face_anim,bam_break_face_anim + .long dnk_break_face_anim,0,lex_break_face_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3GU4A+FR10,43,-24,0 + + LWWW H4AM3A+FR3,-45,-37,0 + LWWW H4AM3A+FR5,-45,-41,0 + LWWW H4AM3A+FR6,-43,-33,0 + LWWW H3MS3Z+FR1,-73,-16,0 + LWWW H3MS3Z+FR2,-84,-19,0 + LWWW H3MS3Z+FR3,-85,-20,0 + LWWW H3MS3Z+FR4,-85,-20,0 + LWWW H3MS3Z+FR5,-93,-17,0 + LWWW H3MS3Z+FR6,-65,-21,0 + .long 0 +#Razor + LWWW R4AM3X+FR2,46-10,-9,0 + + LWWW R4AM3X+FR4,-47,-24,0 + LWWW R4AM3X+FR5,-48,-20,0 + LWWW R4AM3X+FR6,-47,-14,0 + LWWW R3MS3Z+FR1,-53,-15,0 + LWWW R3MS3Z+FR2,-67,-16,0 + LWWW R3MS3Z+FR3,-85,-22,0 + LWWW R3MS3Z+FR4,-96,-21,0 + LWWW R3MS3Z+FR5,-98,-25,0 + LWWW R3MS3Z+FR6,-92,-42,0 + .long 0 +#Taker + LWWW U3GD2A+FR8,50-13,-19,0 + + LWWW U4BF3Z+FR2,-56,-32,0 + LWWW U4BF3Z+FR1,-59,-34,0 + LWWW U4BF3A+FR3,-60,-12,0 + LWWW U3MS3Z+FR1,-70,-3,0 + LWWW U3MS3Z+FR2,-85,-7,0 + LWWW U3MS3Z+FR3,-97,-25,0 + LWWW U3MS3Z+FR4,-99,-25,0 + LWWW U3MS3Z+FR5,-106,-26,0 + LWWW U3MS3Z+FR6,-96,-31,0 + .long 0 +#Yokozuna + LWWW Y4AM4A+FR7,44-12,-20,0 + + LWWW Y4AM4A+FR5,-54,-24,0 + LWWW Y4AM4A+FR4,-58,-26,0 + LWWW Y4AM4A+FR3,-56,-25,0 + LWWW Y3MS3Z+FR1,-57,-24,0 + LWWW Y3MS3Z+FR2,-73,-4,0 + LWWW Y3MS3Z+FR3,-94,-10,0 + LWWW Y3MS3Z+FR4,-93,-13,0 + LWWW Y3MS3Z+FR5,-94,-21,0 + LWWW Y3MS3Z+FR6,-94,-41,0 + .long 0 +#Shawn + LWWW S4AM3A+FR5,44-17,-41,0 + + LWWW S4AM3A+FR6,-48,-46,0 + LWWW S4AM3A+FR7,-48,-39,0 + LWWW S4AM3A+FR8,-46,-21,0 + LWWW S3MS3Z+FR1,-55,-22,0 + LWWW S3MS3Z+FR2,-76,-18,0 + LWWW S3MS3Z+FR3,-84,-18,0 + LWWW S3MS3Z+FR4,-87,-19,0 + LWWW S3MS3Z+FR5,-93,-22,0 + LWWW S3MS3Z+FR6,-97,-54,0 + .long 0 +#BamBam + LWWW B4AM4A+FR2,50-16,-21,0 + + LWWW B4AM4A+FR3,-47,-29,0 + LWWW B4AM4A+FR6,-50,-31,0 + LWWW B4AM4A+FR7,-50,-25,0 + LWWW B3MS3Z+FR1,-69,-11,0 + LWWW B3MS3Z+FR2,-91,-18,0 + LWWW B3MS3Z+FR3,-104,-25,0 + LWWW B3MS3Z+FR4,-106,-14,0 + LWWW B3MS3Z+FR5,-103,-2,0 + LWWW B3MS3Z+FR6,-92,-13,0 + .long 0 +#Doink + LWWW D3AM3A+FR4,53-17,-21,0 + + LWWW D3AM3A+FR5,-49,-34,0 + LWWW D3PP3A+FR3,-55,-40,0 + LWWW D3PP3A+FR2,-55,-24,0 + LWWW D3GS3X+FR1,-49,-22,0 + LWWW D3GS3X+FR3,-58,-19,0 + LWWW D3GS3X+FR4,-70,-19,0 + LWWW D3GS3X+FR5,-68,-23,0 + LWWW D3GS3X+FR7,-76,-25,0 + LWWW D3GS3X+FR8,-103,-53,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3BF3A+FR2,60-23,-18,1 + + LWWW L3BF3A+FR3,-61,-34,1 + LWWW L4GH3B+FR2,-52,-34,0 + LWWW L4GH3B+FR3,-52,-25,0 + LWWW L3MS3Z+FR1,-65,-15,0 + LWWW L3MS3Z+FR2,-65,-15,0 + LWWW L3MS3Z+FR3,-74,-22,0 + LWWW L3MS3Z+FR4,-82,-26,0 + LWWW L3MS3Z+FR5,-94,-29,0 + LWWW L3MS3Z+FR6,-96,-46,0 + .long 0 + + +;RJR START +#***************************************************************************** +* +* RUNNING DDT + + SUBR hrt_running_ddt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,120,120,40,90000h,TGT_HEAD,-10,38+53,0 + + WL 7,H3DD3Z+FR1 + WL 7,H3DD3Z+FR2 + + .word ANI_OFFSET,0,53,0 ;x,y,z + + .word ANI_ATTACK_ON, AMODE_PUPPET,-27,26,38,49 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,H3DD3Z+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedblk + + WL ANI_CODE,#half_vels + + .word ANI_ATTACHZ,0,0,2 ;opp in front + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR6,#puppet_tbl,3 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS + + + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR7,#puppet_tbl,4 + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#break_face_tbl + WLLL ANI_SETOPPVELS,-10000h,40000h,0 ;x,y,z vels + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 8,H3UC3X+FR9 + WL 8,H3UC3X+FR10 + + .word ANI_XFLIP + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + +#missedblk +#missed + WL 4,H3DD3Z+FR3 + WL 4,H3DD3Z+FR4 + WL 4,H3DD3Z+FR5 + WL 4,H3DD3Z+FR6 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 4,H3DD3Z+FR7 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WL 8,H3UC3X+FR9 + WL 8,H3UC3X+FR10 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_XFLIP + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + +#half_vels + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + + clr a0 + movi [2,0],a0 + move a0,*a13(OBJ_YVEL),L + rets + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 1 ;yoko + .word 0 ;shawn + .word 1 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#break_face_tbl + .long hrt_tossed_anim,rzr_tossed_anim + .long und_tossed_anim + .long yok_tossed_anim + .long shn_tossed_anim,bam_tossed_anim + .long dnk_tossed_anim,0,lex_tossed_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3UC3X+FR1,-28,-9,0 + LWWW H3UC3X+FR2,-62,-2,0 + LWWW H3UC3X+FR3,-70,4,0 + LWWW H3UC3X+FR4,-62,4,0 + LWWW H2CP3A+FR1,-69,-39,1 + .long 0 +#Razor + LWWW R3FD3B+FR1,-36,-4,0 + LWWW R3FD3B+FR2,-62,1,0 + LWWW R3FD3B+FR4,-80,14,0 + LWWW R3FD3B+FR5,-70,15,0 + LWWW R3AM3D+FR2,-89,-42,1 + .long 0 +#Taker + LWWW U3FD3X+FR1,-30,-5,1 + LWWW U3FD3X+FR2,-43,-2,1 + LWWW U3FD3X+FR3,-50,4,1 + LWWW U3FD3X+FR4,-61,8,1 + LWWW U3CP3B+FR3,-95,-28,1 + .long 0 +#Yokozuna + LWWW Y3FD3A+FR1,-34,-11,0 + LWWW Y3FD3A+FR2,-69,16,0 + LWWW Y3FD3A+FR3,-62,17,0 + LWWW Y3FD3A+FR4,-67,11,0 + LWWW Y3CP3B+FR1,-74,-38,1 + .long 0 +#Shawn + LWWW S3UC3X+FR1,-40,-3,0 + LWWW S3UC3X+FR2,-58,-3,0 + LWWW S3UC3X+FR4,-69,-4,0 + LWWW S3UC3X+FR5,-58,9,0 + LWWW S3CP3B+FR2,-83,-37,1 + .long 0 +#BamBam + LWWW B4UC3B+FR1,-43,4,0 + LWWW B4UC3B+FR2,-58,-1,0 + LWWW B4UC3B+FR3,-76,-1,0 + LWWW B4UC3B+FR4,-82,-4,0 + LWWW B3CP3B+FR2,-84,-7,1 + .long 0 +#Doink + LWWW D3UC3A+FR2,-47,-2,0 + LWWW D3UC3A+FR3,-57,6,0 + LWWW D3UC3A+FR4,-75,8,0 + LWWW D3UC3A+FR5,-75,3,0 + LWWW D3SA3A+FR4,-79,-42,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3UC3X+FR2,-47,-14,0 + LWWW L3UC3X+FR3,-76,-10,0 + LWWW L3CP3X+FR2,-81,-4,1 + LWWW L3CP3X+FR3,-73,8,1 + LWWW L3CP3X+FR1,-90,-52,1 + .long 0 + +;RJR END +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/HRTSEQ4.ASM b/BACKUP/HRTSEQ4.ASM new file mode 100644 index 0000000..b81c250 --- /dev/null +++ b/BACKUP/HRTSEQ4.ASM @@ -0,0 +1,1499 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "hrtseq3.asm" + .title "blocks, reactions to routine and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "bretimg.h" + .include "bamimg.h" + + .include "display.equ" + .include "damage.equ" + + + +****************************************************************************** +* EXTERNAL REFERENCES + + + .REF SMALL_BOUNCE + .REF HIT_THE_MAT + .ref D4SK4A + + .ref set_position + .ref set_skeleton_pal + .ref am_I_dizzy + .ref start_smoke + .ref set_my_pal + .ref make_white + .ref make_norm + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #2 BLOCK & HITBLOCK + + SUBR hrt_2_block_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + WLW ANI_SET_ZVEL,0,AM_ABS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 4,H2BK3A+FR1 + WL 10,H2BK3A+FR2 +#2block + .word ANI_SETMODE,MODE_NOAUTOFLIP + WL 1,H2BK3A+FR2 + .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 4,H2BK3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_2_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + WL 4,H2BK3A+FR4 + WL 4,H2BK3A+FR3 + WL ANI_GOTO,#2block + +#************ +* +* #4 BLOCK & HITBLOCK + + SUBR hrt_4_block_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,3000h + WLW ANI_SET_ZVEL,0,AM_ABS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 4,H4BK3A+FR1 + WL 10,H4BK3A+FR2 +#4block + .word ANI_SETMODE,MODE_NOAUTOFLIP + WL 1,H4BK3A+FR2 + .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + WL 4,H4BK3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + WL 4,H4BK3A+FR4 + WL 4,H4BK3A+FR3 + WL ANI_GOTO,#4block + + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR hrt_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,H2AH3A+FR1 + WL 3,H2AH3A+FR2 + WL 3,H2AH3A+FR3 + WL 3,H2AH3A+FR4 + WL 3,H2AH3A+FR5 + WL 3,H2AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_2_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + .word ANI_DEBRIS,300,2,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,H2AH3A+FR1 + WL 4,H2AH3A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,H2AH3A+FR3 + WL 3,H2AH3A+FR4 + WL 3,H2AH3A+FR5 + WL 3,H2AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT + + SUBR hrt_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,H4AH3A+FR1 + WL 3,H4AH3A+FR2 + WL 3,H4AH3A+FR3 + WL 3,H4AH3A+FR4 + WL 3,H4AH3A+FR5 + WL 3,H4AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + .word ANI_DEBRIS,300,2,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,H4AH3A+FR1 + WL 4,H4AH3A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,H4AH3A+FR3 + WL 3,H4AH3A+FR4 + WL 3,H4AH3A+FR5 + WL 3,H4AH3A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_head_hit4_anim +;From earslap + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; WLW ANI_SET_XVEL,-28000h,AM_HIT_REL +; WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 4,H4AH3A+FR2 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + WL 4,H4AH3A+FR3 + WL 4,H4AH3A+FR4 + WL 4,H4AH3A+FR5 + WL 4,H4AH3A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEAD HIT2 (HANDS ON FACE) + + SUBR hrt_2_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 4,H2AE3A+FR1 + WL 4,H2AE3A+FR2 + WL 4,H2AE3A+FR3 + WL 4,H2AE3A+FR4 + WL 4,H2AE3A+FR5 + WL 4,H2AE3A+FR6 + WL 4,H2AE3A+FR7 + WL 4,H2AE3A+FR8 + +;; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT2 (HANDS ON FACE) + + SUBR hrt_4_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 4,H4AE3A+FR1 + WL 4,H4AE3A+FR2 + WL 4,H4AE3A+FR3 + WL 4,H4AE3A+FR4 + WL 4,H4AE3A+FR5 + WL 4,H4AE3A+FR6 + WL 4,H4AE3A+FR7 + WL 4,H4AE3A+FR8 + +;; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT2 (ENDS IN DIZZY) + + SUBR hrt_4_head_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 4,H4AE3A+FR1 + WL 4,H4AE3A+FR2 + WL 4,H4AE3A+FR3 + WL 4,H4AE3A+FR4 + WL 4,H4AE3A+FR5 + WL 4,H4AE3A+FR6 + WL 4,H4AE3A+FR7 + WL 4,H4AE3A+FR8 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,hrt_dizzy_anim + + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR hrt_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,H2AH3A+FR1 + WL 15,H2AH3A+FR2 + WL 4,H2AH3A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR hrt_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,H4AH3A+FR1 + WL 3,H4AH3A+FR2 + WL 14,H4AH3A+FR3 + WL 2,H4AH3A+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR hrt_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,H4AH3A+FR1 + WL 3,H4AH3A+FR2 + WL 14,H4AH3A+FR3 + WL 2,H4AH3A+FR5 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,hrt_dizzy_anim + .word ANI_END + + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR hrt_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,H2AM3A+FR1 + WL 4,H2AM3A+FR2 + WL 4,H2AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,H2AM3A+FR4 + WL 4,H2AM3A+FR5 + WL 4,H2AM3A+FR6 + WL 4,H2AM3A+FR7 + WL 4,H2AM3A+FR8 + + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +; SUBR hrt_2_body_hit_dizzy_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; WL ANI_SET_YVEL,48000h +; WLW ANI_SET_XVEL,-30000h,AM_HIT_REL +; +; WL 4,H2AM3A+FR1 +; WL 4,H2AM3A+FR2 +; WL 4,H2AM3A+FR3 +; +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS +; +; WL 4,H2AM3A+FR4 +; WL 4,H2AM3A+FR5 +; WL 4,H2AM3A+FR6 +; WL 4,H2AM3A+FR7 +; WL 4,H2AM3A+FR8 +; +; .word ANI_SETPLYRMODE,MODE_DIZZY +; WL ANI_CHANGEANIM,hrt_dizzy_anim +; .word ANI_END + +#************ +* +* #4 BODY HIT + + SUBR hrt_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,H4AM3A+FR1 + WL 4,H4AM3A+FR2 + WL 4,H4AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,H4AM3A+FR4 + WL 4,H4AM3A+FR5 + WL 4,H4AM3A+FR6 + WL 4,H4AM3A+FR7 + WL 4,H4AM3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,H4AM3A+FR1 + WL 4,H4AM3A+FR2 + WL 4,H4AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,H4AM3A+FR4 + WL 4,H4AM3A+FR5 + WL 4,H4AM3A+FR6 + WL 4,H4AM3A+FR7 + WL 4,H4AM3A+FR8 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,hrt_dizzy_anim + .word ANI_END + + + + + SUBR hrt_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,04000h,AM_ABS + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,H2AM3A+FR1 + WL 4,H2AM3A+FR2 + WL 4,H2AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,H2AM3A+FR4 + WL 4,H2AM3A+FR5 + WL 4,H2AM3A+FR6 + WL 4,H2AM3A+FR7 + WL 4,H2AM3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-04000h,AM_ABS + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,H4AM3A+FR1 + WL 4,H4AM3A+FR2 + WL 4,H4AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,H4AM3A+FR4 + WL 4,H4AM3A+FR5 + WL 4,H4AM3A+FR6 + WL 4,H4AM3A+FR7 + WL 4,H4AM3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,08000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,H4AM3A+FR1 + WL 4,H4AM3A+FR2 + WL 4,H4AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,H4AM3A+FR4 + WL 4,H4AM3A+FR5 + WL 4,H4AM3A+FR6 + WL 4,H4AM3A+FR7 + WL 4,H4AM3A+FR8 + + .word ANI_OFFSET,0,0,0 ;x,y,z + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,hrt_dizzy_anim + .word ANI_END + + +;Being held by head, hit by a quick knee! + SUBR hrt_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,0,2 ;x,y,z + + WL 4,H2AM3A+FR1 + WL 4,H2AM3A+FR2 + WL 4,H2AM3A+FR3 + WL 4,H2AM3A+FR4 + + .word ANI_WAITHITGND + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,hrt_fall_back_anim + .word ANI_END + +#nodead + .ref hrt_3_head_held_anim + + WL ANI_CHANGEANIM,hrt_3_head_held_anim + + .word ANI_END + + + + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR hrt_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,39000h + + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 3,H2CP3A+FR1 + WL 3,H2CP3A+FR2 + WL 3,H2CP3A+FR3 + WL 3,H2CP3A+FR4 + WL 3,H2CP3A+FR5 + WL 3,H2CP3A+FR6 + WL 3,H2CP3A+FR7 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,H2CP3A+FR8 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + + SUBR hrt_hitonground_facedown_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + .word ANI_BOUNCE,3 + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 3,H3MS3X+FR1 + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 3,H3MS3X+FR5 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +;MJT Start +#***************************************************************************** +* +* FALL BACK + + SUBR hrt_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,60000h + + .ref ckzpos + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[99,-10] ;Y,X of head + WL 4,H3UC3X+FR1 + + .word ANI_OFFSET,0,45,0 ;x,y,z + WWL ANI_SETLONG,DEBRIS_X,[44,-38] ;Y,X of head + WL 4,H3UC3X+FR2 + WWL ANI_SETLONG,DEBRIS_X,[38,-39] ;Y,X of head + WL 4,H3UC3X+FR3 + WWL ANI_SETLONG,DEBRIS_X,[33,-39] ;Y,X of head + WL 4,H3UC3X+FR4 + + WWL ANI_SETLONG,DEBRIS_X,[26,-39] ;Y,X of head + WL 4,H3UC3X+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,[9,-49] ;Y,X of head + WL 2,H3UC3X+FR6 + .word ANI_BOUNCE,5 + WL 2,H3UC3X+FR6 + WWL ANI_SETLONG,DEBRIS_X,[5,-49] ;Y,X of head + WL 4,H3UC3X+FR7 + WWL ANI_SETLONG,DEBRIS_X,[5,-49] ;Y,X of head + WL 4,H3UC3X+FR8 + .word ANI_WAITHITGND +;MJT Start + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,[5,-49] ;Y,X of head + WL 4,H3UC3X+FR9 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 4,H3UC3X+FR10 + .word ANI_XFLIP + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP +;MJT End + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 1,H3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* FALL BACK + + SUBR hrt_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,20000h + + .ref ckzpos + WL ANI_CODE,ckzpos + + WL 4,H3UC3X+FR1 + + .word ANI_OFFSET,0,45,0 ;x,y,z + WL 4,H3UC3X+FR2 + WL 4,H3UC3X+FR3 + WL 4,H3UC3X+FR4 + + WL 4,H3UC3X+FR5 + WL 4,H3UC3X+FR6 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + + WL 3,H3UC3Z+FR1 + WL 3,H3UC3Z+FR2 + WL 3,H3UC3Z+FR3 + WL 3,H3UC3Z+FR4 + WL 3,H3UC3Z+FR5 + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL ANI_CODE,HIT_THE_MAT + .word ANI_OFFSET,-20,0,0 ;x,y,z + WL 3,H3MS3X+FR1 + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 25,H3MS3X+FR5 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR hrt_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + + WL 4,H3UC3X+FR1 + + .word ANI_OFFSET,0,45,0 ;x,y,z + WL 4,H3UC3X+FR2 + WL 4,H3UC3X+FR3 + WL 4,H3UC3X+FR4 + + WL 4,H3UC3X+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + +; .word ANI_FRICTION,3000h + + WL 2,H3UC3X+FR6 +; .word ANI_BOUNCE,5 + WL 2,H3UC3X+FR6 + WL 4,H3UC3X+FR7 + WL 4,H3UC3X+FR8 +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_ZEROVELS + WL 4,H3UC3X+FR9 + WL 4,H3UC3X+FR10 + .word ANI_XFLIP + + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 1,H3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#***************************************************************************** +* +* FACE UP GETUP + + SUBR hrt_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + WL 4,H3GU2A+FR1 + WL 4,H3GU2A+FR2 + WL 4,H3GU2A+FR3 + WL 4,H3GU2A+FR4 + WL 4,H3GU2A+FR5 + WL 4,H3GU2A+FR6 + WL 4,H3GU2A+FR7 + WL 4,H3GU2A+FR8 + WL 4,H3GU2A+FR9 + WL 4,H3GU2A+FR10 + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 4,H3GU4A+FR1 + WL 4,H3GU4A+FR2 + WL 4,H3GU4A+FR3 + WL 4,H3GU4A+FR4 + WL ANI_GOTO,#common_4 + + SUBR hrt_4_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +#common_4 + WL 4,H3GU4A+FR5 + WL 4,H3GU4A+FR6 + WL 4,H3GU4A+FR7 + WL 4,H3GU4A+FR8 + WL 4,H3GU4A+FR9 + WL 4,H3GU4A+FR10 + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +***** +* set status bit for a getup in 4, clear for a 2. +choose_2or4 + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + + move *a13(NEW_FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #choose_2 + ori MODE_STATUS,a0 +#choose_2 + move a0,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* FACE DOWN GETUP + + SUBR hrt_facedown_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; WL 4,H3RL1A+FR9 +; WL 4,H3RL1A+FR10 + WL 4,H3GU4A+FR4 + WL 4,H3GU4A+FR5 + WL 4,H3GU4A+FR6 + WL 4,H3GU4A+FR7 + WL 4,H3GU4A+FR8 + WL 4,H3GU4A+FR9 + WL 4,H3GU4A+FR10 + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* DIZZY + + SUBR hrt_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + + WL 5,H4TI4B+FR1 + WL 5,H4TI4B+FR2 + WL 5,H4TI4B+FR3 + WL 5,H4TI4B+FR4 + WL 5,H4TI4B+FR5 + WL 5,H4TI4B+FR6 + WL 5,H4TI4B+FR7 + WL 5,H4TI4B+FR8 + WL 5,H4TI4B+FR7 + WL 5,H4TI4B+FR6 + WL 5,H4TI4B+FR5 + WL 5,H4TI4B+FR4 + WL 5,H4TI4B+FR3 + WL 5,H4TI4B+FR2 + + WL ANI_GOTO,#loop + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR hrt_break_neck_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + WWWL ANI_IFROPE,RC_FRONT,100,#fall_back + + ;break the neck + WL 4,H3UC3Z+FR2 + .word ANI_OFFSET,16,0,0 + WL 4,H3UC3Z+FR3 + .word ANI_OFFSET,18,0,0 + WL 4,H3UC3Z+FR4 + .word ANI_OFFSET,30,0,0 + WL 4,H3UC3Z+FR5 + .word ANI_OFFSET,28,0,0 + WL 4,H3RL1A+FR8 + .word ANI_FACEDOWN + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_facedown_getup_anim + +#fall_back + WL 6,H3UC3Z+FR2 + .word ANI_OFFSET,-8,0,0 + WL 4,H3UC3Z+FR1 + .word ANI_OFFSET,-10,0,0 + WL 4,H3UC3X+FR7 + WL 4,H3UC3X+FR8 + WL 4,H3UC3X+FR9 + WL 4,H3UC3X+FR10 + .word ANI_XFLIP + WL 4,H2CP3A+FR8 + .word ANI_FACEDOWN + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_facedown_getup_anim + + SUBR hrt_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + ;break the neck + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + .ref ckzpos + WL ANI_CODE,ckzpos + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_XFLIP + + .word ANI_OFFSET,15,0,0 + + WL 4,H3UC3Z+FR2 + .word ANI_OFFSET,-3,0,0 + WL 4,H3UC3Z+FR3 + .word ANI_OFFSET,-3,0,0 + WL 4,H3UC3Z+FR4 + WL 4,H3UC3Z+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-20,0,0 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + + WL 10,H3RL1A+FR8 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + .word ANI_END + + SUBR hrt_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,H4POGO+FR3 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_XFLIP + + .word ANI_OFFSET,0,0,0 + + WL 3,H3PP3X+FR7 + .word ANI_OFFSET,15,0,0 + WL 3,H3UC3Z+FR2 + .word ANI_OFFSET,-3,0,0 + WL 3,H3UC3Z+FR3 + .word ANI_OFFSET,-3,0,0 + WL 3,H3UC3Z+FR4 + WL 3,H3UC3Z+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-20,0,0 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + + WL 10,H3RL1A+FR8 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + .word ANI_END + + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR hrt_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + + WL 4,H4LB3A+FR1 + WL 4,H4LB3A+FR3 + WL 4,H4LB3A+FR4 + WL 4,H4LB3A+FR5 + WL 4,H4LB3A+FR6 + WL 4,H4LB3A+FR9 + WL 4,H4LB3A+FR10 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_losebal_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,H4LB3A+FR1 + WL 4,H4LB3A+FR3 + WL 4,H4LB3A+FR4 + WL 4,H4LB3A+FR5 + WL 4,H4LB3A+FR6 + WL 4,H4LB3A+FR9 + WL 4,H4LB3A+FR10 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,hrt_dizzy_anim + .word ANI_END + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR hrt_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,H4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,H4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,H4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,H4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,H4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,H4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,H4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z +;MJT Start + WL 1,H4ST4A+FR5 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,hrt_fall_back_anim + .word ANI_END + +#nodead +;MJT End + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 2f2fh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR hrt_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WL 8,H3FR3A+FR4 + WL 8,H3FR3A+FR5 + WL 8,H3FR3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + .word ANI_DAMAGE,D_HIPTOSS + .word ANI_SETWORD,DELAY_METER,0 + .word ANI_GETUP,500 + + + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_XFLIP + WL ANI_CHANGEANIM,hrt_hitonground_anim + + +#***************************************************************************** +* +* FLY OUT #2 - (hrt_hpsl) +* + + SUBR hrt_flyout2_anim + + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,48000h + + WL 4,H3UC3X+FR5 + .word ANI_WAITHITGND + + ;IMPACT + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_DAMAGE,D_HITCONCRETE + .word ANI_ZEROVELS + + .word ANI_DAMAGE,D_HIPTOSS + .word ANI_SETWORD,DELAY_METER,0 + .word ANI_GETUP,500 + + + WL 10,H3UC3X+FR6 + WL 4,H3UC3Z+FR1 + WL 4,H3UC3Z+FR2 + WL 4,H3UC3Z+FR3 + WL 4,H3UC3Z+FR4 + WL 4,H3UC3Z+FR5 + .word ANI_XFLIP + .word ANI_OFFSET,84,0,0 + WL 4,H3MS3X+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_hitonground_facedown_anim + +;MJT Start +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR hrt_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,H3BR3Z+FR1 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + + WL 25,H3BR3Z+FR1 + + +; WL 4,H3BR3Z+FR2 + WL 4,H3BR3Z+FR3 + .word ANI_XFLIP + WL 2,H3RL1A+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + WL 3,H3MS3X+FR1 + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 3,H3MS3X+FR5 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 1,H3RL1A+FR8 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + .word ANI_END +;MJT End + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR hrt_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,H2CP3A+FR8 + WL ANI_CODE,ckzpos + WL 3,H2CP3A+FR8 + WL 4,H2CP3A+FR2 + WL 4,H2CP3A+FR3 + WL 4,H2CP3A+FR4 + WL 4,H2CP3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,H2CP3A+FR7 + WL 10,H2CP3A+FR8 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + SUBR hrt_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 1,H3UC3Z+FR10 + .ref ckzpos + WL ANI_CODE,ckzpos + WL 10,H3UC3Z+FR10 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + WL 3,H2CP3A+FR8 + WL 4,H2CP3A+FR2 + WL 4,H2CP3A+FR3 + WL 4,H2CP3A+FR4 + WL 4,H2CP3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,H2CP3A+FR7 + WL 10,H2CP3A+FR8 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#***************************************************************************** + + SUBR hrt_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,43,0 ;x,y,z + + WL 4,H3UC3X+FR2 + WL 4,H3UC3X+FR3 + WL 4,H3UC3X+FR4 + WL 1,H3UC3X+FR5 + + .word ANI_WAITHITGND +;;; .word ANI_ZERO_XZVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,H3UC3X+FR6 + WL 3,H3UC3X+FR7 + + WL 3,H3UC3Z+FR1 + WL 3,H3UC3Z+FR2 + WL 3,H3UC3Z+FR3 + WL 3,H3UC3Z+FR4 + WL 3,H3UC3Z+FR5 + + .word ANI_ZERO_XZVELS + + WL 8,H3RL1A+FR8 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_facedown_getup_anim + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/HRT_MJT.IMG b/BACKUP/HRT_MJT.IMG new file mode 100644 index 0000000..c862b94 Binary files /dev/null and b/BACKUP/HRT_MJT.IMG differ diff --git a/BACKUP/HSTD.ASM b/BACKUP/HSTD.ASM new file mode 100644 index 0000000..228c3fc --- /dev/null +++ b/BACKUP/HSTD.ASM @@ -0,0 +1,2907 @@ +**************************************************************** +* +* Software: LARRY DeMAR, EUGENE JARVIS +* Modified: Shawn Liptak 8/6/91 - Multi color fonts +* Jason Skiles 12/14/93 - Use STRING.ASM calls +* Jason Skiles 1/17/94 - Hold most recent index in CMOS +* +* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 1/17/94 11:59 +**************************************************************** + .file "hstd.asm" + .title "robo high-score-to-date management" + .width 132 + .option b,d,l,t + .mnolist + + .include "audit.equ" + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "game.equ" + .include "link.equ" + .include "macros.h" + .include "plyr.equ" + .include "gsp.equ" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + .include "ropeimg.glo" + .include "sound.h" + + .TEXT + +; - confine cursor to end and del once all inits are in + +* IN THIS MODULE + + .DEF STOP_ALL_OBJS + .DEF MOVE_ALL_OBJS_UP + .DEF DELETE_ANY_OFF_TOP + .DEF BEATEN_TAB_ENTRIES + .ref IGNORE_CHAR_WIDTH + .ref message_buffer2 + .ref get_process_ptr + .ref match_time_bcd + .def winstreak_check + .def pin_speed_check + .def CHECK_SCORE, PIN_SPEED_TAB, FIND_LOW_TABLE_LEVEL + .ref triple_sound + .def do_that_cycle + .ref change_image + .ref digits_tbl + + .DEF GET_HSCR + .DEF RC_BYTEI + .DEF RC_BYTE + .DEF RC_WORD + .DEF RC_LONG + .DEF RC_LONGI + .DEF WC_BYTE + .DEF WC_BYTEI + .DEF WC_WORD + .DEF WC_WORDI + .DEF WC_LONG + .DEF WC_LONGI + .DEF PT_ENTRY + .DEF INIT_TB + .DEF INIT_TAB ;GEORGES POWER UP ENTRY + .DEF P_FORK + .DEF VAL_TAB + .DEF ROM_PTRS + + + .DEF STREAK_TAB + .DEF BEATEN_TAB + .DEF DO_BEATEN_GAME +; .DEF ISHSTD,GETINIT,GETINIT1,GETINIT2,INITTIM + .DEF SET_PAGE +; .DEF A2_CHECK + .DEF DEC_HSR,INIT_HSR,GET_HSC + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref ADD_VOICE + .ref howard_wins + .ref SYSCOPY + .ref GET_ADJ + .ref DEF_PAGE + .ref BINBCD + + ;from ADJUST.ASM + .ref BCDBIN + + ;from AUDIT.ASM + .ref AUD,GET_AUD,KILL_AUD + .ref AUD1 + + ;from BAKGND.ASM + .ref BAKMODS,BGND_UD1 + + ;from DISPLAY.ASM + .ref obj_del1c,BEGINOBJ_TBL + + ;from MAIN.ASM + .ref dpageflip,IRQSKYE + + ;from PAL.ASM + .ref pal_getf + + ;from ROBO.ASM + .ref civanic + + ;from STRING.ASM + .ref osgemd_ascii,message_ascii,mess_space_width,mess_spacing + .ref mess_cursx,mess_cursy,message_palette,print_string_R + .ref dec_to_asc,copy_string,message_buffer,print_string + .ref print_message,print_string_C2,mess_objid,setup_message + .ref ogmd10_ascii + .ref mess_line_spacing,print_string2 + .ref print_string_R2 + .ref font9_ascii + + ;from UTIL.ASM + .ref CYCLE_TABLE,WIPEOUT,get_stick_val_down,get_stick_val_cur + .ref get_but_val_down + .ref RNDRNG0 + + ;from WRESTLE.ASM + .ref HALT,p1winstreak,p2winstreak,PSTATUS,match_winner + + .ref match_time + .ref which_player + .ref dec_to_asc_new_entry + .REF MATCH_TIMERS + +****************************************************************************** + + .TEXT + +;Sound headers + +BEEPSND .WORD >F3FE,>10,>80A2,0 ;LOW BEEP + + + bssx starting_num,16 + bssx entered_inits, (8*6)*2 + .bss entered_message, (16*4)*2 + .bss last_hscore_ndx, 16 + .bss last_streak_ndx, 16 + +************************************************************************** +* +* HIGH SCORE TABLE DEFINITIONS +* +************************************************************************** + +STREAK_TABLE_VISIBLE equ 20 +PIN_SPEED_TAB_VISIBLE equ 10 +BEATEN_TAB_VISIBLE equ 5 + +STREAK_TAB + .LONG STREAK_TABLE_ORIGIN ;LOCATION OF TABLE + .WORD STREAK_TABLE_ENTRIES-1 ;NUMBER IN THE TABLE (DON'T COUNT ZERO FILLER) + .WORD STREAK_TABLE_VISIBLE ;unused? + .WORD STREAK_TABLE_SELECT ;BITS TO SELECT IT + .LONG STREAK_ROM_TABLE ;ROM IMAGE OF TABLE + .WORD STREAK_TABLE_ENTRIES/5 ;RESET TABLE IF 1/5 OR MORE BAD + +PIN_SPEED_TAB + .LONG PIN_SPEED_TAB_ORIGIN ;LOCATION OF TABLE + .WORD PIN_SPEED_TAB_ENTRIES-1 ;NUMBER IN THE TABLE (DON'T COUNT ZERO FILLER) + .WORD PIN_SPEED_TAB_VISIBLE ;unused ? + .WORD PIN_SPEED_TAB_SELECT ;BITS TO SELECT IT + .LONG PIN_SPEED_TAB_ROM_TABLE ;ROM IMAGE OF TABLE + .WORD PIN_SPEED_TAB_ENTRIES/5 ;RESET TABLE IF 1/5 OR MORE BAD + + +BEATEN_TAB + .LONG BEATEN_TAB_ORIGIN ;LOCATION OF TABLE + .WORD BEATEN_TAB_ENTRIES-1 ;NUMBER IN THE TABLE (DON'T COUNT ZERO FILLER) + .WORD BEATEN_TAB_VISIBLE ;unused? + .WORD BEATEN_TAB_SELECT ;BITS TO SELECT IT + .LONG BEATEN_ROM_TABLE ;ROM IMAGE OF TABLE + .WORD BEATEN_TAB_ENTRIES/5 ;RESET TABLE IF 1/5 OR MORE BAD + + +P_FORK + MMTM SP,A1 + MOVE *A13(PROCID),A1 ;PASS OUR ID TO FORKED PROCESS + CALLA GETPRC ;MAKE THE PROCESS + MMFM SP,A1 + RETS + +************************************************************************** +* +* AUTO HIGH SCORE TABLE RESET HANDLING +* +************************************************************************** +* +* DEC_HSR +* +* THIS IS CALLED WITH EACH START OR CONTINUE FOR +* A PLAYER. IT REMOVES 1 FROM THE HSTD COUNTER UNLESS +* ITS ALREADY SITTING AT ZERO. +* +************************************************************************** +DEC_HSR + MMTM SP,A0 + CALLR GET_HSC ;THIS IS EASY...GET THE COUNTER + JRZ DECHX ;ITS ZERO....NO ACTION. + DEC A0 ;REMOVE A TICK + CALLR PUT_HSC ;PUT IT BACK JAK +DECHX MMFM SP,A0 + RETS + +************************************************************************** +* +* DELAY_HSRESET +* +* THIS IS CALLED WHEN A NEW ENTRY IS MADE IN THE ALL TIME +* HIGH SCORE TABLE. IF WE'RE CLOSE TO A HIGH SCORE +* RESET, WE PUT IT OFF AWHILE SO HE CAN SHOW HIS FRIENDS +* FOR A FEW DAYS. +* +************************************************************************** +HS_MIN EQU 750 ;ALWAYS 750 PLAYS BEFORE REMOVING A FRESH +* ;NAME. +DELAY_HSRESET: + MMTM SP,A0 + CALLR GET_HSC ;THIS IS EASY...GET THE COUNTER + CMPI HS_MIN,A0 ;IS IT TOO LOW + JRHS DHX ;NOPE...NO ACTION + + MOVI HS_MIN,A0 ;STOP THE RESET! + CALLR PUT_HSC ;THIS MANY PLAYS TILL RESET! +DHX: + MMFM SP,A0 + RETS + +************************************************************************** +* +* INIT_HSR +* +* THIS IS CALLED TO INITIALIZE THE HIGH SCORE RESET +* COUNTER TO ITS ADJUSTED VALUE. +* +************************************************************************** +INIT_HSR + MMTM SP,A0 + MOVI ADJHSRES,A0 + CALLA GET_ADJ ;GET THE ADJUSTED VALUE + CALLR PUT_HSC ;SET IT TO THIS VALUE + MMFM SP,A0 + RETS + +************************************************************************** +* +* PUT_HSC +* +* THIS IS CALLED TO SET THE HIGH SCORE RESET COUNTER +* TO THE VALUE IN A0. +* +************************************************************************** +PUT_HSC + MMTM SP,A7,A0 + CALLR HSR_PAGE ;HIGH SCORE PAGE + + MOVI HRESET_COUNTER,A7 ;POINT AT + CALLR WC_LONGI ;WRITE OUR PARAMETER + NOT A0 ;NEGATE IT. + CALLR WC_LONG ;AND WRITE IN SUBSEQUENT SPOT. + CALLA DEF_PAGE ;FLIP PAGE + MMFM SP,A7,A0 ;AND RETURN + RETS + +************************************************************************** +* +* GET_HSC +* +* THIS IS CALLED TO FETCH THE HIGH SCORE COUNTER IN A0. +* IF IT IS INVALID, IT WILL IMMEDIATELY BE RESET TO THE +* ADJUSTED VALUE AND THIS IS WHAT WILL BE RETURNED +* IN A0. Z set if 0 +* +************************************************************************** +GET_HSC + MMTM SP,A7,A1 + CALLR HSR_PAGE ;POINT PAGE AT HSR + + MOVI HRESET_COUNTER,A7 ;POINT AT + CALLR RC_LONGI ;READ THE VALUE + MOVE A0,A1 ;STASH IT + CALLR RC_LONG ;READ VERIFIER + NOT A0 ;SEE IF ITS VALID + CMP A0,A1 + JRZ GET_HSCX ;IT IS....RETURN IT. + + CALLR INIT_HSR ;REFRESH IT WITH FACTORY VALUE +* +* NOW RETURN THE FACTORY VALUE IN CASE IT DIDN'T TAKE +* + MOVI ADJHSRES,A0 + CALLA GET_ADJ ;GET THE ADJUSTED VALUE + +GET_HSCX + CALLA DEF_PAGE ;FLIP PAGE AWAY FROM US + MOVE A0,A0 ;SET Z FLAG BASED ON COUNTER + MMFM SP,A7,A1 + RETS + +HSR_PAGE + MMTM SP,A1 + MOVI HSR_SELECT,A1 + CALLR SET_PAGE + MMFM SP,A1 + RETS + +#********************************************************************* +* Check validity of high score and win streak tables. +* + + SUBR table_cmos_check + + movi PIN_SPEED_TAB,a8 + callr VAL_TAB + movi STREAK_TAB,a8 + callr VAL_TAB + + movi BEATEN_TAB,a8 + callr VAL_TAB + rets + +#********************************************************************* +* Display high score table +* + + SUBR print_beaten + + push a5 + movi #hscore_mes,a2 + calla print_message + + pull a9 + move a9,@starting_num + movi HS_SIZE,a7 + mpyu a7,a9 + addi BEATEN_TAB_ORIGIN,a9 + move a9,a8 + + movi 5,a7 ;draw 5 + + movi [51,8],a9 + movi [35,6eh],a10 + +#loop + movi GOLD,a11 + movi AUD_BEATEN,A0 + calla GET_AUD + MOVE @starting_num,A5 + cmp a1,a5 + jrne #gold + movi BLUE,a11 +#gold + PUSH a3,a7,a8,a9,a10,a11 + movi BEATEN_TAB_SELECT,a1 ;set the read page + callr SET_PAGE + movi special_copy,a5 + callr draw_beaten_table_entry + PULL a3,a7,a8,a9,a10,a11 + + move @starting_num,a5 + inc a5 + move a5,@starting_num + + dec a7 + jrz #done + + addi HS_SIZE,a8 + addi [2ch,0],a9 + addi [2ch,0],a10 + jruc #loop +#done + callr hscore_colcyc + callr hscore_colcyc2 + RETP + +#hscore_mes + JAM_STR osgemd_ascii,10,0,200,10,RUBYPAL,print_string_C2 + .byte "GAME BEATEN BY...",0,0 + .even + +STOP_ALL_OBJS + MOVI OBJLST,A8 + CLR A1 + JRUC DO_EACH_OBJ_STOP +STOP_THIS_OBJ + MOVE A1,*A8(OYVEL),L +DO_EACH_OBJ_STOP + MOVE *A8,A8,L + JRNZ STOP_THIS_OBJ + RETS + +MOVE_ALL_OBJS_UP + MOVI OBJLST,A8 + MOVI [-2,0],A1 + JRUC DO_EACH_OBJ +MOVE_THIS_OBJ_UP + MOVE A1,*A8(OYVEL),L +DO_EACH_OBJ + MOVE *A8,A8,L + JRNZ MOVE_THIS_OBJ_UP + RETS + +DELETE_ANY_OFF_TOP + MOVI OBJLST,A8 + MOVI [-30,0],A3 + JRUC DO_EACH_OBJ_NEXT +DELETE_OR_NOT + MOVE *A8(OYVAL),A2,L + CMP A3,A2 + JRGT DO_EACH_OBJ_NEXT + MOVE *A8,A9,L + CALLA DELOBJA8 + MOVE A9,A8 + JRNZ DELETE_OR_NOT + RETS +DO_EACH_OBJ_NEXT + MOVE *A8,A8,L + JRNZ DELETE_OR_NOT + RETS + +#********************************************************************* +* Display high score table +* + + SUBR print_hscores + + movi #hscore_mes,a2 + calla print_message + + movi 18,a7 ;draw 9 + movk 1,a3 + + movi PIN_SPEED_TAB_ORIGIN+HS_SIZE,a8 + movi [35,50],a9 + movi [35,180],a10 + +#loop + movi GOLD,a11 + movi AUD_PINSPEED,A0 + calla GET_AUD + CMP a1,A3 + jrne #notblue + movi BLUE,a11 +#notblue + PUSH A3,a7,a8,a9,a10,a11 + movi PIN_SPEED_TAB_SELECT,a1 ;set the read page + callr SET_PAGE + movi special_copy,a5 + callr draw_table_entry + PULL A3,a7,a8,a9,a10,a11 + + INC A3 + dec a7 + jrz #done + cmpi 9,a7 + jreq #begin_right + + addi HS_SIZE,a8 + addi [23,0],a9 + addi [23,0],a10 + jruc #loop + +#begin_right + addi HS_SIZE,a8 + movi [35,225],a9 + movi [35,350],a10 + jruc #loop + +#done + RETP + +#hscore_mes + JAM_STR osgemd_ascii,10,0,200,10,RUBYPAL,print_string_C2 + .byte "FASTEST PINDOWN TIMES",0,0 + .even + + +#********************************************************************* +* Display win streaks table +* + + SUBR print_winstreaks + + movi #streak_mes,a2 + calla print_message + + movi 18,a7 ;draw 18 + movk 1,a3 + + movi STREAK_TABLE_ORIGIN+HS_SIZE,a8 + movi [35,50],a9 + movi [35,175],a10 + +#loop + movi GOLD,a11 + movi AUD_WINSTREAK,A0 + calla GET_AUD + cmp a1,a3 + jrne #gold + movi BLUE,a11 +#gold + PUSH A3,a7,a8,a9,a10,a11 + movi STREAK_TABLE_SELECT,a1 + callr SET_PAGE + movi copy_string,a5 + callr draw_table_entry + PULL A3,a7,a8,a9,a10,a11 + INC A3 + dec a7 + jrz #done + cmpi 9,a7 + jreq #begin_right + + addi HS_SIZE,a8 + addi [23,0],a9 + addi [23,0],a10 + jruc #loop + +#begin_right + addi HS_SIZE,a8 + movi [35,225],a9 + movi [35,350],a10 + jruc #loop + +#done + RETP + + +#streak_mes + JAM_STR osgemd_ascii,10,0,200,10,RUBYPAL,print_string_C2 + .byte "LONGEST WINNING STREAKS",0,0 + .even + +special_copy + movi message_buffer,a2 + movi message_buffer2,a3 + move *a3+,*a2+ + movi ".",a1 + movb a1,*a2 + addi 8,a2 + movb *a3,*a2 + addi 8,a2 + addi 16,a3 + clr a1 + movb a1,*a2 + MOVK 15,A0 + move a0,@mess_spacing + MOVK 1,A0 + MOVE A0,@IGNORE_CHAR_WIDTH + rets + +#******************************* +* Display a table entry (initials and score) +* >a8=*entry, a9=[Y,Xleft] of initials, a10=[Y,Xright] of score, a11=pal +* >a0=draw high score message? (0|1) + + SUBRP draw_table_entry + + move a8,a7 + callr RC_LONG ;read the score + calla BCDBIN + movi 9999999,a1 + calla dec_to_asc ;convert to ASCII + CLR A0 + move a0,@mess_spacing + call a5 + + movi osgemd_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + move a10,a0 + sll 16,a0 + srl 16,a0 + move a0,@mess_cursx + move a10,a0 + srl 16,a0 + move a0,@mess_cursy + move a11,@message_palette,L + calla print_string_R + + ;initials + movi message_buffer,a1 + move a8,a7 + addi HS_INITS,a7 + movi 3,a2 + +#initloop + callr RC_BYTEI + movb a0,*a1 + addk 8,a1 + dsj a2,#initloop + +#terminate + clr a0 ;null-terminate it + movb a0,*a1 +#terminated + + movi osgemd_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a9,a0 + sll 16,a0 + srl 16,a0 + move a0,@mess_cursx + move a9,a0 + srl 16,a0 + move a0,@mess_cursy + move a11,@message_palette,L + calla print_string + + rets + +which_crouton + .long CRUT_BH + .long CRUT_RR + .long CRUT_UN + .long CRUT_YK + .long CRUT_SM + .long CRUT_BM + .long CRUT_DK + .long CRUT_LX + + SUBR draw_each_beaten_table_entry + + movi HS_SIZE,a7 + mpyu a7,a9 + addi BEATEN_TAB_ORIGIN,a9 + move a9,a8 + + movi [51+221,8],a9 + movi [35+221,6eh],a10 + + movi GOLD,a11 + movi AUD_BEATEN,A0 + calla GET_AUD + MOVE @starting_num,A5 + cmp a1,a5 + jrne #gold + movi BLUE,a11 +#gold + movi BEATEN_TAB_SELECT,a1 ;set the read page + callr SET_PAGE + movi special_copy,a5 + +#******************************* +* Display a table entry (initials and score) +* >a8=*entry, a9=[Y,Xleft] of initials, a10=[Y,Xright] of score, a11=pal +* >a0=draw high score message? (0|1) + + SUBR draw_beaten_table_entry + + push a7 + push a9,a10 + move a8,a7 + callr RC_LONG ;read the score + move a0,a9 + movk 8,a10 + clr a3 + pull a1 + push a1 + move a1,a0 + sll 16,a0 + clr b4 +next_icon + srl 1,a9 + jrnc no_icon + mmtm sp,a0,a1,a3,a8,a11 + move a3,a4 + sll 5,a4 + addi which_crouton,a4 + move *a4,a2,L + movi 1000,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + movi 01000100h,a3 + move a3,*a8(OSCALE),L + mmfm sp,a0,a1,a3,a8,a11 + addi [24h,0],a0 + inc b4 +no_icon + srl 3,a9 + inc a3 + dec a10 + jrnz next_icon + + mmtm sp,a0,a1,a3,a8,a11 + movi 8,b5 + sub b4,b5 + move b5,a10 + addi [10,0],a0 +next_dot +; movi CRUTPLT_G,a2 + movi OSGEMD_DOT,a2 + movi 1000,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + push a0,a1 + calla BEGINOBJW + pull a0,a1 + addi [24h,0],a0 + dec a10 + jrnz next_dot + mmfm sp,a0,a1,a3,a8,a11 + + pull a9,a10 + + ;initials +do_just_init + movi message_buffer,a1 + move a8,a7 + addi HS_INITS,a7 + movi 5,a2 + +#initloop + callr RC_BYTEI + movb a0,*a1 + addk 8,a1 + dsj a2,#initloop + +#terminate + clr a0 ;null-terminate it + movb a0,*a1 +#terminated + + movi osgemd_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a9,a0 + sll 16,a0 + srl 16,a0 + move a0,@mess_cursx + move a9,a0 + srl 16,a0 + move a0,@mess_cursy + move a11,@message_palette,L + calla print_string + + pull a7 + + movi "#",a0 + movb a0,@message_buffer + addk 8,a1 + move @starting_num,a0 + + calla BINBCD ;dec number in A0 + move a0,a1 + movi message_buffer+8,a2 + calla dec_to_asc_new_entry + + clr a0 + move a0,*a2+ + + movi ogmd10_ascii,a0 + move a0,@message_ascii,L + movi 7,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a9,a0 + sll 16,a0 + srl 16,a0 + move a0,@mess_cursx + move a9,a0 + srl 16,a0 + subi 14,a0 + move a0,@mess_cursy + movi SGMD8GLD,a0 + move a0,@message_palette,L + calla print_string + + rets + + +#******************************* +* high score page color cyclers +* + + SUBRP hscore_colcyc + + movi [10,7],a8 ;START AT COLOR 10, CYCLE 7 COLORS + movi BLUE,a9 ;PAL NAME + movi COLTAB2,a10 ;TABLE TO CYCLE WITH + movk 3,a11 ;RATE OF CYCLE IN TICKS + CREATE CYCPID,CYCLE_TABLE ;START PROCESS TO DO CYCLE + + rets + +COLTAB2 + .word 0033eh,0135fh,02b7fh,03f9fh,053bfh,06bdfh,07fffh + .word 06bdfh,053bfh,03f9fh,0277fh,0135fh,00f3fh,00b1fh,002ffh + .word 002dfh,002ffh,002ffh,0031fh,0031fh,0033fh,002fdh,002dch + .word 0029ah,00259h,00237h,00258h,00259h,0027ah,0029bh,002bch + .word 0025ah,001f7h,001b5h,00172h,00194h,001d6h,00218h,0065ah + .word 0069ch,00ebch,01addh,022fdh,02f1eh,0375eh,0437fh,04f9fh + .word 03b7fh,0275fh,0133fh,0033fh,002feh,002ddh,002bch,0029bh + .word 0025ah,00239h,00218h,00259h,0027bh,002bch,002feh,0033fh + + .word 0033eh,0135fh,02b7fh,03f9fh,053bfh,06bdfh,07fffh + .word 06bdfh,053bfh,03f9fh,0277fh,0135fh,00f3fh,00b1fh,002ffh + + SUBRP hscore_colcyc2 + + movi [10,7],a8 ;START AT COLOR 10, CYCLE 7 COLORS + movi RUBYPAL,a9 ;PAL NAME + movi COLTAB3,a10 ;TABLE TO CYCLE WITH + movk 3,a11 ;RATE OF CYCLE IN TICKS + CREATE CYCPID,CYCLE_TABLE ;START PROCESS TO DO CYCLE + + rets + +COLTAB3 + + .word 07c01h,07c63h,07d08h,07d8ch,07e10h,07eb5h,07f39h + .word 07e94h,07e10h,07d6bh,07ce7h,07c42h,07421h,06c00h,06400h + .word 05c00h,06400h,06800h,07000h,07400h,07c00h,07400h,06c00h + .word 06000h,05800h,05c00h,06000h,06400h,06800h,06c00h,07000h + .word 06400h,05c00h,05000h,04800h,05000h,05800h,06000h,06c00h + .word 06c21h,07063h,070c6h,07508h,0754ah,079adh,079efh,07e52h + .word 07defh,07dadh,0794ah,078e7h,07884h,07842h,07800h,07000h + .word 06c00h,06400h,06000h,06400h,06c00h,07000h,07800h,07c00h + + .word 07c01h,07c63h,07d08h,07d8ch,07e10h,07eb5h,07f39h + .word 07e94h,07e10h,07d6bh,07ce7h,07c42h,07421h,06c00h,06400h + + +#***************************************************************************** +* Checks to see if the expired player made the table, and takes care of all +* the details if he did. +* + + STRUCTPD + LONG #cursorimg ;UHL cursor *img + LONG #hiliteimg ;UHL hilite letter *img + WORD #stick ;UHW stick to read + LONG #which_tab + LONG #which_entry + LONG #which_level + WORD #which_aud + + .ref GAMSTATE + + +WHICH_TO_OR + .LONG 1H + .LONG 10H + .LONG 100H + .LONG 1000H + .LONG 10000H + .LONG 100000H + .LONG 1000000H + .LONG 10000000H + +DO_BEATEN_GAME + move a10,a1 + sll 4,a1 + addi which_player,a1 + move *a1,a9 + CMPI 8,A9 + JRNE AVOID_NUMBER_8 + DEC A9 +AVOID_NUMBER_8 + SLL 5,A9 + ADDI WHICH_TO_OR,A9 + MOVE *A9,A9,L + movi FIND_LOW_TABLE_LEVEL,a11 + movi BEATEN_TAB,a5 + movi enter_initials_beaten,a10 + movi SPECIAL_ENTRY,a7 + jruc create_initial_input + +pin_speed_check + + move a8,A0 + CMPI 2,A0 + JRGE no_create_proc_for_p + SLL 5,A0 + ADDI MATCH_TIMERS,A0 + MOVE *A0,A9,L + jrz no_create_proc_for_p + jrn no_create_proc_for_p + + movi FIND_LOW_TABLE_LEVEL,a11 + movi PIN_SPEED_TAB,a5 + movi enter_initials_top_20,a10 + movi do_entry_time,a7 + movi AUD_PINSPEED,a3 + jruc create_initial_input + +winstreak_check + move a8,a9 + sll 4,a9 + addi p1winstreak,a9 + move *a9,a9 + movi FIND_HIGH_TABLE_LEVEL,a11 + movi STREAK_TAB,a5 + movi enter_initials_streak,a10 + movi do_entry,a7 + movi AUD_WINSTREAK,a3 + +create_initial_input + move a8,a1 + addi HI_INPUT_PID,a1 + calla GETPRC + move a5,*a0(#which_tab),L + move a8,*a0(#stick) + move a10,*a0(#which_entry),L + move a11,*a0(#which_level),L + move a3,*a0(#which_aud) +no_create_proc_for_p + retp + +do_that_cycle + movi [02h,1],a8 ;cycle color A + movi FNT9RED_P,a9 ;pal name + movi fnt9_red_white,a10 ;use the LFLASH table + movk 6,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + movi [02h,1],a8 ;cycle color A + movi FNT9WHT2P,a9 ;pal name + movi fnt9_blue_white,a10 ;use the LFLASH table + movk 6,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + callr hscore_colcyc + callr hscore_colcyc2 + rets + +do_entry + ;convert score and wins to BCD + move a9,a0 + calla BINBCD + move a0,a9 +do_entry_time + move a9,a0 + + clr a3 + move *a13(#which_tab),a8,L + callr CHECK_SCORE + + jrz #done + + ;they made one of the tables. first update AUD_LSCORE + move a0,a1 + move *a13(#which_aud),a0 + calla KILL_AUD + calla AUD + +SPECIAL_ENTRY + MOVE *A13(#stick),a1 + MOVE a1,a2 + sll 5,a1 + sll 4,a2 + add a2,a1 + addi entered_inits,a1 + move *a1,a0,L + JRNZ NO_NEED_TO_ENTER + + create0 howard_wins + + PUSHP a9 + + MOVE *A13(#which_entry),A1,L + GETPC A7 + ADDI 040h,A7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JUMP A1 + + PULLP a9 + + MOVI 0B8H,A0 + CALLA triple_sound + + MOVE *A13(#stick),a1 + MOVE a1,a2 + sll 5,a1 + sll 4,a2 + add a2,a1 + addi entered_inits,a1 +NO_NEED_TO_ENTER + move a9,a0 + move *a13(#which_tab),a8,L + cmpi BEATEN_TAB,a8 + jrne normal_addition + callr SPECIAL_ADD_ENTRY + CALLR SORT_BEATEN_TABLE + jruc #done + +normal_addition + callr ADD_ENTRY +#done + movi CYCPID,a0 + movi -1,a1 + calla KILALL + DIE + +fnt9_blue_white + .word 0001fH,07FFFH + .word -1 + +fnt9_red_white + .word 07C00H,07FFFH + .word -1 + +***************************************************************************** +* proc pointer + #stick = stick (0:1) + + SUBR enter_message + clr a0 + movb a0,@entered_message + movb a0,@entered_message+40h + movi entered_message,a4 + move a4,a5 + movi entered_message+(15*8),a6 + PUSHP a4,a5,a6 + + movi #entermess_mes,a2 + PUSHP a2 + jruc #go + + SUBR enter_initials_beaten + + movi entered_inits,a4 + move a4,a5 + movi entered_inits+(5*8),a6 + movi #enterinita_mess,a3 + movi #enterinit5_mes,a2 + move *a13(#stick),a0 + move a0,a0 + jrz #enter_mess_set_3 + movi entered_inits+030h,a4 + move a4,a5 + movi entered_inits+(5*8)+030h,a6 + movi #enterinitb_mess,a3 + movi #enterinit6_mes,a2 +#enter_mess_set_3 + clr a14 + move a14,*a4,L ;clear out initials + move a14,*a4(018h) ;clear out initials + PUSHP a4,a5,a6 + PUSHP a2 + move a3,a2 + calla setup_message + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + move a0,@mess_objid + + move *a2+,a0,L ;print method + move a2,a4 ;* text string + call a0 + jruc #go + + SUBR enter_initials_streak + + movi entered_inits,a4 + move a4,a5 + movi entered_inits+(3*8),a6 + movi #enterinita_mess,a3 + movi #enterinit1_mes,a2 + move *a13(#stick),a0 + move a0,a0 + jrz #enter_mess_set_1 + movi entered_inits+030h,a4 + move a4,a5 + movi entered_inits+(3*8)+030h,a6 + movi #enterinitb_mess,a3 + movi #enterinit2_mes,a2 +#enter_mess_set_1 + clr a14 + move a14,*a4,L ;clear out initials + move a14,*a4(018h) ;clear out initials + PUSHP a4,a5,a6 + PUSHP a2 + move a3,a2 + calla setup_message + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + move a0,@mess_objid + + move *a2+,a0,L ;print method + move a2,a4 ;* text string + call a0 + jruc #go + + SUBR enter_initials_top_20 + movi entered_inits,a4 + move a4,a5 + movi entered_inits+(3*8),a6 + movi #enterinita_mess,a3 + movi #enterinit3_mes,a2 + move *a13(#stick),a0 + move a0,a0 + jrz #enter_mess_set + movi entered_inits+030h,a4 + move a4,a5 + movi entered_inits+(3*8)+030h,a6 + movi #enterinitb_mess,a3 + movi #enterinit4_mes,a2 +#enter_mess_set + clr a14 + move a14,*a4,L ;clear out initials + move a14,*a4(018h) ;clear out initials + PUSHP a4,a5,a6 + PUSHP a2 + move a3,a2 + + calla setup_message + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + move a0,@mess_objid + + move *a2+,a0,L ;print method + move a2,a4 ;* text string + call a0 +#go + + PULLP a2 + movk 13,a0 + move a0,@mess_line_spacing + + calla setup_message + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + move a0,@mess_objid + + move *a2+,a0,L ;print method + move a2,a4 ;* text string + call a0 + + callr draw_letter_grid ;draw the letter grid + + move *a13(#stick),a1 + jrnz #right_type + TBL_OBJ #cursor ;create cursor + jruc #cursor_type_set +#right_type + TBL_OBJ #cursor2 ;create cursor +#cursor_type_set + clr a0 + move a0,*a8(ODOFF),L + movi 0101h,a0 + move a0,*a8(OCONST) + movi #block_size,a0 + move a0,*a8(OSIZEX) + move a0,*a8(OSIZEY) + move a8,*a13(#cursorimg),L + + move *a13(#stick),a1 + jrnz #right_hilite + TBL_OBJ #hilite1 ;create hilite letter + jruc #hilite_set +#right_hilite + TBL_OBJ #hilite2 ;create hilite letter +#hilite_set + + move a8,*a13(#hiliteimg),L + + clr a9 + callr new_cursor_pos ;place them & set char img/pal + + ;reg use (loop) + ; a4 *first initial ram + ; a5 *next initial ram + ; a6 *last initial ram + ; a8 scratch + ; a9 cursor position (0-29) + ;a10 hold count for repeat motion + ;a11 debounce timer + + PULLP a4,a5,a6 + clr a11 + MOVI 700H,B5 + clr b3 + +#loop +;this timer is done the hard way cos its 1:30 in the morning and I dont +;have the energy to be clever + movk 1,b1 + cmpi 150*5,b5 + jrgt no_need_for_timer + mmtm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 + move b5,b7 + movi 150,b1 + divs b1,b7 + move b3,b3 + jrnz we_already_have_it + movi [83,0],a0 + move *a13(#stick),a1 + jrz which_edge_set + movi [322,0],a0 +which_edge_set + movi [16,0],a1 ;y pos + movi FNT9_5,a2 + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + move *a13(#stick),a5 + addi CLSNEUT|TYPTEXT|00A3h,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + move a8,b3 + + push b3,b5 + CREATE0 do_next_tick + movi 0B7H,a0 + calla triple_sound + pull b3,b5 +we_already_have_it + move b3,a8 + move b7,a0 + sll 5,a0 + addi digits_tbl,a0 + move *a0,a0,L ;* image + move *a8(OIMG),a1,L + cmp a0,a1 + jreq no_change + move *a8(OCTRL),a1 + calla change_image + push b3,b5 + create0 do_next_tick + movi 0B7H,a0 + calla triple_sound + pull b3,b5 +no_change + + mmfm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 +no_need_for_timer + + DEC B5 ;have a limit we'll wait + JRZ #done2 + move b3,a2 + MOVE B5,A0 + PUSHP A0,a2,a4,a5,a6 + SLEEPK 1 + PULLP A0,a2,a4,a5,a6 + MOVE A0,B5 + move a2,b3 + + ;button check + move *a13(#stick),a0 + calla get_but_val_down + move a0,a0 + jrz #stick_check + + ;new press. add a letter. + move a9,a0 + cmpi 28,a0 + jreq #deletechar ;backspace? + + cmpi 29,a0 + jreq #done2 ;EOL? + + cmp a5,a6 + jreq #stick_check ;room for another char? + + sla 3,a0 ;x8 + addi #init_table,a0 + movb *a0,*a5 + addk 8,a5 + clr a0 + movb a0,*a5 ;always keep a terminator in there. + jruc #added + +#deletechar + cmp a4,a5 + jreq #stick_check ;no chars to delete! + subk 8,a5 + clr a0 + movb a0,*a5 + callr print_init_string + jruc #stick_check + +#added + movi 0b1h,a0 + push b3,b5 + calla triple_sound + pull b3,b5 + + ;character added. + callr print_init_string + + ;if that was the last character, move the cursor to the END char. + cmp a5,a6 + jrne #stick_check + + movi 29,a9 + callr new_cursor_pos + jruc #stick_check + +#stick_check + dec a11 ;debounce check + jrp #loop ;too soon? + + move *a13(#stick),a0 + calla get_stick_val_down + move a0,a0 + jrz #no_new_stick + + movi #tstatic-#debounce_time,a10 + movi #debounce_time,a11 + jruc #adjust + +#no_new_stick + dec a10 + jrnz #loop ;holding and waiting + + ;whee! time to repeat-move + move *a13(#stick),a0 + calla get_stick_val_cur + movi #tmoving,a10 + jruc #adjust +#adjust + X16 a0 + addi #joytab,a0 + move *a0,a0 + + add a0,a9 + jrn #too_low + cmpi 30,a9 + jrge #too_high + jruc #just_right + +#too_low + addi 30,a9 + jruc #just_right +#too_high + subi 30,a9 + jruc #just_right + +#just_right + ;adjust cursor and character position + move a0,a0 + jrz no_motion_sound + movi 0c9h,a0 + move *a13(#stick),a1 + jrz motion_sound_set + inc a0 +motion_sound_set + push b3,b5 + calla triple_sound + pull b3,b5 +no_motion_sound + callr new_cursor_pos + jruc #loop + +#done2 + MOVI 0cbh,A0 + MOVE *A13(#stick),a1 + jrz select_set + inc a0 +select_set + push b3,b5 + CALLA triple_sound + pull b3,b5 + + pushp a4 + sleep 30 + pullp a4 + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A5h,a0 + calla obj_del1c + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + calla obj_del1c + + move *a4,a0,L + jrnz #initials_have_content + movk 5,a0 + calla RNDRNG0 + sll 5,a0 + addi #random_initials,a0 + move *a0,A0,L + move a0,*a4,L + +#initials_have_content + CMPI "TJM",a0 + jrne no_worry_about_disaster + + push a0 + movi 129h,a0 + move @HCOUNT,a1 + srl 1,a1 + jrnc we_now_which + inc a0 +we_now_which + CALLA ADD_VOICE + pull a0 +no_worry_about_disaster + + RETP + +do_next_tick + SLEEP 12 + MOVI 0B8H,A0 + CALLA triple_sound + DIE + +#random_initials + .byte "TJM",0 + .byte "TYJ",0 + .byte "LAS",0 + .byte "SMJ",0 + .byte "ZAJ",0 + .byte "TJR",0 + +**************************************** +* moves the cursor and hilite char to their new positions. + + SUBRP new_cursor_pos + + ;x pos = #grid_x + #block_size * (index mod 6) + move a9,a1 + movk 5,a0 + modu a0,a1 + movi #block_size,a0 + mpyu a0,a1 + move *a13(#stick),a3 + SLL 6,A3 + ADDI WHERE_BLOCK,A3 + MOVE *A3(010h),A14 + add a14,a1 + move *a13(#cursorimg),a8,L + move a1,*a8(OXPOS) + move *a13(#hiliteimg),a8,L + move a1,*a8(OXPOS) + + ;y pos = #grid_y + #block_size * (index / 6) + move a9,a1 + movk 5,a2 + divu a2,a1 + movi #block_size,a0 + mpyu a0,a1 + move *a3(030h),a14 + add a14,a1 + move *a13(#cursorimg),a8,L + move a1,*a8(OYPOS) + move *a13(#hiliteimg),a8,L + move a1,*a8(OYPOS) + + ;adjust the character image + move a9,a0 + sla 3,a0 ;x8 + addi #init_table,a0 + movb *a0,a0 + X32 a0 + addi font9_ascii,a0 + move *a0,a0,L + jrnz #good_image + movi OSGEMD_DOT,a0 +#good_image + move *a13(#hiliteimg),a8,L + calla civanic + movi FNT9YEL_P,a0 + calla pal_getf + move a0,*a8(OPAL) + move *a8(OSIZEX),a14 ;center it + subi #block_size,a14 + sra 1,a14 + move a14,*a8(ODXOFF) + move *a8(OSIZEY),a14 + subi #block_size,a14 + sra 1,a14 + move a14,*a8(ODYOFF) + + rets + + +**************************************** +* deletes the old displayed init string (if any) and makes a new one. + + SUBRP print_init_string + + push b5,b3 + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a8 + PUSH a4 + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A5h,a0 + calla obj_del1c + + movi #currentinit1_mes,a2 + move *a13(#stick),a3 + jrz #current_mess_set + movi #currentinit2_mes,a2 +#current_mess_set + + calla setup_message + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A5h,a0 + move a0,@mess_objid + + PULL a4 + calla print_string_C2 + + PULL a0,a1,a2,a3,a4,a5,a6,a7,a8 + pull b5,b3 + + rets + +**************************************** +* draw the letter grid + + SUBRP draw_letter_grid + + movi FNT9YEL_P,a0 + calla pal_getf + move a0,a11 + + move *a13(#stick),A1 + SLL 6,A1 + ADDI WHERE_BLOCK,A1 + MOVE *A1+,A0,L + MOVE *A1,A1,L + MOVE A0,B2 + SUBI [#block_size,0],B2 + + movi #init_table,a9 + movi 30,a10 + jruc #draw_loop + +#draw_incy + MOVE B2,A0 + addi [#block_size,0],a1 +#draw_incx + addi [#block_size,0],a0 + +#draw_loop + movb *a9,a2 + addk 8,a9 + X32 a2 + addi font9_ascii,a2 + move *a2,a2,L + jrnz #draw_okimg + + ;bad image + movi OSGEMD_DOT,a2 + +#draw_okimg + clr a3 + movi DMAWNZ,a4 + move *a13(#stick),a5 + addi CLSNEUT|TYPTEXT|00A3h,a5 + clr a6 + clr a7 + PUSH a0,a1 + calla BEGINOBJ + PULL a0,a1 + move a11,*a8(OPAL) ;set the palette + + ;center the image in its' box + move *a8(OSIZEX),a14 + subi #block_size,a14 + sra 1,a14 + move a14,*a8(ODXOFF) + + move *a8(OSIZEY),a14 + subi #block_size,a14 + sra 1,a14 + move a14,*a8(ODYOFF) + + dec a10 + jrz #draw_done + + move a10,a6 + movi 5,a7 + modu a7,a6 + jrz #draw_incy + jruc #draw_incx + +#draw_done + rets + +**************************************** +* enter inits config stuff +crap_off .equ 5 +WHERE_BLOCK + .LONG [32+crap_off,0] ;X + .LONG [59,0] ;Y + + .LONG [273+crap_off,0] ;X + .LONG [59,0] ;Y + +#init_table .STRING "ABCDEFGHIJKLMNOPQRSTUVWXYZ!",>10,>11,>12 + +#grid_x equ 200 ;x position of letter grid +#grid_y equ 100 ;y position of letter grid +#block_size equ 18 ;x & y spacing of letter grid + +#tstatic equ 30 ;ticks before repeat motion begins +#tmoving equ 10 ;ticks between repeat motions +#debounce_time equ 8 ;min ticks between stick changes + +#enterinit_mod + .long wwfselbkBMOD ;wrestler select map + .word -44,0 + .long 0 + +#currentinit1_mes + JAM_STR osgemd_ascii,10,1,77+crap_off,204,BLUE,print_string_C2 + .byte "FOO",0 + .even + +#currentinit2_mes + JAM_STR osgemd_ascii,10,1,315+crap_off,204,RUBYPAL,print_string_C2 + .byte "FOO",0,0 + .even + +#enterinita_mess + JAM_STR font9_ascii,8,0,76+crap_off,179,FNT9WHT2P,print_string_C2 + .byte "ENTER INITIALS",0,0 + .even + +#enterinitb_mess + JAM_STR font9_ascii,8,0,286+crap_off+29,179,FNT9RED_P,print_string_C2 + .byte "ENTER INITIALS",0,0 + .even + +#enterinit1_mes + JAM_STR font9_ascii,4,0,77+crap_off,38,FNT9WHT2P,print_string_C2 + .byte "WIN STREAK !",0,0 + .even + +#enterinit2_mes + JAM_STR font9_ascii,4,0,317+crap_off,38,FNT9RED_P,print_string_C2 + .byte "WIN STREAK !",0,0 + .even + +#enterinit3_mes + JAM_STR font9_ascii,4,0,77+crap_off,38,FNT9WHT2P,print_string_C2 + .byte "FAST VICTORY",0,0 + .even + +#enterinit4_mes + JAM_STR font9_ascii,4,0,317+crap_off,38,FNT9RED_P,print_string_C2 + .byte "FAST VICTORY",0,0 + .even + +#enterinit5_mes + JAM_STR font9_ascii,4,0,77+crap_off,38,FNT9WHT2P,print_string_C2 + .byte "BEATEN GAME",0,0 + .even + +#enterinit6_mes + JAM_STR font9_ascii,4,0,317+crap_off,38,FNT9RED_P,print_string_C2 + .byte "BEATEN GAME",0,0 + .even + +#entermess_mes + JAM_STR osgemd_ascii,10,0,200+crap_off,10,BLUE,print_string_C2 + .byte "ENTER A MESSAGE",0,0 + .even + +#cursor .word 0,0,10 ;X, Y, Z + .long jmeter ;IMG + .word DMACAL ;CTRL + .word CLSNEUT|TYPTEXT|00A3h + .long 0,0 ;XVEL, YVEL + .even + +#cursor2 .word 0,0,10 ;X, Y, Z + .long #jmeter2 ;IMG + .word DMACAL ;CTRL + .word CLSNEUT|TYPTEXT|00A4h + .long 0,0 ;XVEL, YVEL + .even + +#jmeter2 + .word 175,13,2,2 + .long 040427fcH + .word 02000H + .long #jmeter2_p + +#jmeter2_p + .word 5 + .word 00H,7d00H,07F60H,01E0H,00H + +#hilite1 .word 0,0,20 ;X, Y, Z + .long FNT9_A + .word DMAWNZ ;CTRL + .word CLSNEUT|TYPTEXT|00A3h + .long 0,0 ;XVEL, YVEL + .even + +#hilite2 .word 0,0,20 ;X, Y, Z + .long FNT9_A + .word DMAWNZ ;CTRL + .word CLSNEUT|TYPTEXT|00A4h + .long 0,0 ;XVEL, YVEL + .even + +#joytab ;RLDU + .word 0 ;0000 + .word -5 ;0001 + .word 5 ;0010 + .word 0 ;0011 + .word -1 ;0100 + .word -6 ;0101 + .word 4 ;0110 + .word -1 ;0111 + .word 1 ;1000 + .word -4 ;1001 + .word 6 ;1010 + .word 1 ;1011 + .word 0 ;1100 + .word -5 ;1101 + .word 5 ;1110 + .word 0 ;1111 + +******************************** +*INITIAL ENTRY JOYSTICK TABLE + +*INITIAL MATRIX + + +************************************************************************** +* +* CHECK_INITS +* +* A1 POINTS AT A SET OF INITIALS ENTERED. RETURN .EQ. +* IF THEY'RE ALL SPACES (OR ZERO). +* +************************************************************************** +CHECK_INITS: + MMTM SP,A0,A1,A2 + MOVI NUM_INITS,A2 +CHECK_NEXT: + MOVB *A1,A0 ;GET AN INITIAL + JRZ SPACE_FOUND ;NULL IS A SPACE + CMPI SPACE,A0 ;IS IT A REAL SPACE? + JRNZ LET_FOUND +SPACE_FOUND: + ADDI BYTE_SIZE,A1 + DSJS A2,CHECK_NEXT + CLR A2 ;SET Z BIT ON FALL THROUGH + +LET_FOUND: + MMFM SP,A0,A1,A2 + RETS + +************************************************************************** +* +* CHECK_SCORE +* +* THIS IS CALLED WITH A SCORE IN A0 TO SEE IF IT +* IS HIGH ENOUGH TO MAKE THE TABLE. +* +* THE OTHER PLAYER'S SCORE IS PASSED IN A2. IF +* THE PLAYER MAKES THE LAST POSITION OF THE TABLE, +* THEN HIS SCORE IS COMPARED AGAINST THE OTHER SCORE +* IT MUST BE HIGHER THAN THE OTHER SCORE, OTHERWISE +* HE WILL ENTER HIS INITIALS, BUT THERE WILL BE NO +* PLACE TO PUT THEM WHEN HIS BUDDY IS DONE ENTERING HIS! +* +* THIS ROUTINE CALLS FIND_TABLE_LEVEL WHICH RETURNS +* THE POINT IN THE TABLE THAT THE PASSED SCORE WOULD +* LAND. THIS VALUE MUST BE LESS THAN OR EQUAL TO +* THE "TB_VISIBLE" VALUE FOR THE TABLE. THIS WOULD +* MEAN THAT WE WANT TO GET THE PLAYER'S INITIALS. +* +* A8 CONTAINS ROM POINTER FOR TABLE TO CHECK. +* RETURN A0 = 0 (AND .EQ.) IF SCORE ISN'T HIGH ENOUGH +* AND A0 = POSITION IN TABLE IF SCORE MAKES IT. +* +************************************************************************** +CHECK_SCORE: + MMTM SP,A1,A3,A9,A10 + MOVE A0,A3 ;STASH SCORE IN A3 + move *a13(#which_level),a10,L + call a10 + +; CALLR FIND_TABLE_LEVEL ;SEE WHERE WE LAND IN THIS TABLE + + JRZ ANSWER_IN_A0 ;ZERO.....GUY DIDN'T MAKE IT + MOVE *A8(TB_VISIBLE),A1,W ;GET THE NUMBER "ENTERED" + CMP A1,A0 ;A0 MUST BE LESS OR EQUAL + JRLO ANSWER_IN_A0 ;NOT LAST ENTRY...RETURN SUCCESS + +; JRHI DIDNT_MAKE_HSTD +* +* GUY IS GOING FOR LAST POSITION.....SEE IF HIS BUDDY IS +* GOING TO NOSE HIM OUT: +* +* ^^^^^^^^^^ not anymore !! ^^^^^^^ +; CMP A2,A3 ;HI MUST BE HIGHER THAN BUDDY +; JRHI ANSWER_IN_A0 +; +;DIDNT_MAKE_HSTD: + CLR A0 ;RETURN FAILURE +ANSWER_IN_A0: + MOVE A0,A0 ;SET EQ BIT ACCORDINGLY + MMFM SP,A1,A3,A9,A10 + RETS + +SORT_BEATEN_TABLE + PUSH A1 + MOVI BEATEN_TAB,A8 + CALLR ROM_PTRS + MOVI AUD_BEATEN,A0 + CALLA GET_AUD + MOVE A1,A0 + PULL A1 + MOVE A0,A6 + CALLR TEST_NUM_ICON + MOVE A3,A5 + + MOVK 1,A0 + MOVI BEATEN_TAB_ENTRIES,A10 +TEST_NEXT_BEATEN_ENTRY + CALLR TEST_NUM_ICON + CMP A3,A5 + JREQ THIS_IS_IT + INC A0 + DSJS A10,TEST_NEXT_BEATEN_ENTRY +NO_MOVEMENT + RETS + +THIS_IS_IT + CMP A0,A6 + JREQ NO_MOVEMENT + MOVE A6,A10 + MOVE A10,A3 + MOVI BEATEN_TAB,A8 + CALLR ROM_PTRS + PUSH A0,A1 + MOVI AUD_BEATEN,A0 + CALLA GET_AUD + MOVE A1,A0 + CALLR GET_HSCR + MOVE A1,A4 + PULL A0,A1 + PUSH A0,A1 + MOVE A0,A1 + MOVI AUD_BEATEN,A0 + calla KILL_AUD + calla AUD + PULL A0,A1 + MMTM SP,A0,A1,A2,A3,A4,A7,A9,A10 + JRUC COPY_DOWN_LOOP + +TEST_NUM_ICON + PUSH A1 + CALLR GET_HSCR + CLR A3 + MOVK 8,A4 +TEST_NEXT_NYBBLE + SRL 1,A1 + JRNC NO_IN_A3 + INC A3 +NO_IN_A3 + SRL 3,A1 + DSJS A4,TEST_NEXT_NYBBLE + PULL A1 + RETS + +COMPARE_INITIALS + MOVK 1,A0 ;START AT 1 AND WORK UP. + CALLR VAL_TAB ;FIX THE TABLE IN CASE ITS BROKEN. + JRC #NOT_MATCHED +COMPARE_NEXT + CALLR COMPARE_INITS + JRNC MATCHED + INC A0 + CMP A10,A0 + JRNE COMPARE_NEXT + CLR A0 +MATCHED + MOVE A0,A0 + RETS +#NOT_MATCHED + MOVI -1,A0 + RETS + +COMPARE_INITS + PUSH A0 + MOVE A1,A6 + CALLA PT_ENTRY + ADDI HS_INITS,A7 ;POINT AT FIRST INITIAL + MOVI NUM_INITS,A2 ;THIS IS NUMBER OF INITIALS +#INIT_COPY_LOOP + CALLR RC_BYTEI + MOVE A0,A5 + JRNZ #NOT_BLANK + MOVI SPACE,A5 ;REPLACE BLANKS WITH SPACES +#NOT_BLANK: + MOVB *A6,A11 + CMP A5,A11 + JRNE NOT_MATCHED + ADDK 8,A6 + DSJ A2,#INIT_COPY_LOOP + PULL A0 + CALLR GET_HSCR + OR A1,A4 + CLRC + RETS +NOT_MATCHED + PULL A0 + SETC + RETS + +SPECIAL_ADD_ENTRY + MMTM SP,A0,A1,A2,A3,A4,A7,A9,A10 + CALLR ROM_PTRS ;SETUP FOR THIS TABLE + MOVE A0,A4 + PUSH A1 + CALLR COMPARE_INITIALS + JRNZ INSERT_HERE + JRN DIDNT_MAKE_IT + MOVE A10,A0 + +INSERT_HERE + PUSH A0 + MOVE A0,A1 + MOVI AUD_BEATEN,A0 + calla KILL_AUD + calla AUD + PULL A0 + PULL A1 + MOVE A10,A3 + SETC + JRUC COPY_DONE + +************************************************************************** +* +* ADD_ENTRY +* +* THIS IS CALLED AFTER "ENTER YOUR INITIALS" TO +* ADD AN ENTRY TO THE TABLE. A0 CONTAINS THE +* SCORE OF THE PLAYER. A1 CONTAINS A POINTER +* TO THE FETCHED INITIALS. THE INITIALS ARE +* STORED AS CONSECUTIVE BYTES IN CONVENTIONAL +* (1 BYTE TAKES 1 BYTE SPACE) RAM. +* +* A8 contains a the table to store the entry in. +* +* RETURN CARRY SET IF IT DIDN'T MAKE IT INTO REQUESTED TABLE +* +************************************************************************** +ADD_ENTRY: + MMTM SP,A0,A1,A2,A3,A4,A7,A9,A10 + CALLR ROM_PTRS ;SETUP FOR THIS TABLE + MOVE A0,A4 ;STASH THE SCORE A SEC. + CLR A2 ;DONT WORRY ABOUT OTHER GUY AT THIS POINT + CALLR CHECK_SCORE ;DOES THE REQUEST MAKE IT? + SETC ;ANTICIPATE FAILURE + JRZ DIDNT_MAKE_IT ;DON'T KNOW WHY I GOT THESE INITS. +* +* A0 NOW HAS THE PLACE FOR THE NEW GUY. +* MOVE THE ENTIRE TABLE DOWN 1 UNIT. +* + MOVE A10,A3 ;LAST GUY IN TABLE IS DESTINATION + +COPY_DOWN_LOOP: + MOVE A3,A2 ;GUY BEFORE HIM IS SOURCE + DEC A2 ;A2 NOW HAS SOURCE + CMP A0,A2 ;IS SOURCE LOWER THAN OUR SLOT? + JRLO COPY_DONE ;IT IS...DON'T MOVE HIM. + + CALLR COPY_ENTRY ;COPY A2 ENTRY TO A3 + DEC A3 ;MOVE DOWN TO ONE BEFORE + JRUC COPY_DOWN_LOOP + +COPY_DONE: + CALLR PUT_SCORE_FOR_ENTRY ;SCORE IN A4 WRITTEN TO ENTRY A0 +* +* INITAIAL POINTER IS IN A1 +* TABLE OFFSET IN A0 +* + CALLR PT_ENTRY ;GET ENTRY POINTER IN A7 + ADDI HS_INITS,A7 ;POINT AT FIRST INITIAL + MOVI NUM_INITS,A2 ;THIS IS NUMBER OF INITIALS + MMTM SP,A0 ;SAVE A0 + +INIT_COPY_LOOP: + MOVB *A1,A0 ;GET AN INITIAL + JRNZ NOT_BLANK + MOVI SPACE,A0 ;REPLACE BLANKS WITH SPACES +NOT_BLANK: + CALLR WC_BYTEI ;WRITE THE BYTE AND INCREMENT + ADDI BYTE_SIZE,A1 ;A1 TO NEXT BYTE PLEASE + DSJ A2,INIT_COPY_LOOP + + MMFM SP,A0 ;GET BACK ENTRY NUMBER + CALLR FORM_HS_CKSUM_AND_STORE ;FOR CHECKSUM FOR THIS ENTRY AND STORE! + CLRC ;RETURN SUCCESS! + +DIDNT_MAKE_IT + MMFM SP,A0,A1,A2,A3,A4,A7,A9,A10 + RETS + +#************************************************************************** +* +* FIND_TABLE_LEVEL +* +* THIS IS CALLED TO COMPARE THE SCORE IN A0 TO +* THE TABLE POINTED TO BY A8. +* +* RETURN PHYSICALLY WHERE IT FITS IN A0, AND +* SET THE Z FLAG ACCORDINGLY +* +************************************************************************** +FIND_HIGH_TABLE_LEVEL + MMTM SP,A1,A2,A3 + CALLR ROM_PTRS ;SETUP FOR THIS TABLE + CALLR VAL_TAB ;FIX THE TABLE IN CASE ITS BROKEN. + JRC #FTL_FAIL ;CAN'T VALIDATE..SAY SCORE DIDN'T MAKE IT + + MOVE A0,A2 ;KEEP SCORE IN A2 + MOVK 1,A0 ;START AT 1 AND WORK UP. + +#CHECK_NEXT_SCORE: + CALLR GET_HSCR ;FETCH A0 ENTRY'S SCORE IN A1 + CMP A1,A2 ;HOW DO WE FARE AGAINST A1? + JRHI #FOUND_THE_SPOT ;WE FOUND THE SPOT + INC A0 ;KEEP MOVING DOWN TILL WE FIT + CMP A10,A0 ;ARE WE LOOKING AT THE LAST ONE? + JRLS #CHECK_NEXT_SCORE + +#FTL_FAIL: + CLR A0 ;WE'RE NOT HIGH ENOUGH RETURN FAILURE + +#FOUND_THE_SPOT: + MOVE A0,A0 ;MAKE SURE YOU SET THE FLAGS + MMFM SP,A1,A2,A3 + RETS + +#************************************************************************** +* +* FIND_TABLE_LEVEL +* +* THIS IS CALLED TO COMPARE THE SCORE IN A0 TO +* THE TABLE POINTED TO BY A8. +* +* RETURN PHYSICALLY WHERE IT FITS IN A0, AND +* SET THE Z FLAG ACCORDINGLY +* +************************************************************************** +FIND_LOW_TABLE_LEVEL + MMTM SP,A1,A2,A3 + CALLR ROM_PTRS ;SETUP FOR THIS TABLE + CALLR VAL_TAB ;FIX THE TABLE IN CASE ITS BROKEN. + JRC #FTL_FAIL ;CAN'T VALIDATE..SAY SCORE DIDN'T MAKE IT + + MOVE A0,A2 ;KEEP SCORE IN A2 + MOVK 1,A0 ;START AT 1 AND WORK UP. + +#CHECK_NEXT_SCORE: + CALLR GET_HSCR ;FETCH A0 ENTRY'S SCORE IN A1 + CMP A1,A2 ;HOW DO WE FARE AGAINST A1? + JRLO #FOUND_THE_SPOT +; JRHI #FOUND_THE_SPOT ;WE FOUND THE SPOT + INC A0 ;KEEP MOVING DOWN TILL WE FIT + CMP A10,A0 ;ARE WE LOOKING AT THE LAST ONE? + JRLS #CHECK_NEXT_SCORE + +#FTL_FAIL: + CLR A0 ;WE'RE NOT HIGH ENOUGH RETURN FAILURE + +#FOUND_THE_SPOT: + MOVE A0,A0 ;MAKE SURE YOU SET THE FLAGS + MMFM SP,A1,A2,A3 + RETS + + +************************************************************************** +* +* GET_HSCR +* +* THIS IS CALLED TO FETCH THE SCORE FROM CMOS FOR +* A GIVEN ENTRY. +* +* ENTRY NUMBER PASSED IN A0. +* SCORE RETURNED IN A1. +* +************************************************************************** +GET_HSCR + MMTM SP,A7,A0 + CALLR PT_ENTRY ;POINT A7 AT ENTRY + ADDI HS_SCORE,A7 ;INDEX SCORE PART. + CALLR RC_LONG ;FETCH THE LONG WORD INTO A0 + MOVE A0,A1 ;MOVE TO A1 + MMFM SP,A7,A0 + RETS + +************************************************************************** +* +* PUT_SCORE_FOR_ENTRY +* +* THIS IS CALLED TO WRITE OUT THE SCORE FOR A GIVEN ENTRY. +* ENTRY SPECIFIED BY A0. +* SCORE PASSED IN A4. +* +************************************************************************** +PUT_SCORE_FOR_ENTRY + MMTM SP,A7,A0 + CALLR PT_ENTRY ;POINT A7 AT ENTRY + ADDI HS_SCORE,A7 ;INDEX SCORE PART. + MOVE A4,A0 ;MOVE SCORE TO A0 + CALLR WC_LONG ;WRITE OUT THE LONG WORD + MMFM SP,A7,A0 + RETS + +************************************************************************** +* +* LOW LEVEL HSTD PROCESSING +* +************************************************************************** +* +* FOR HIGH SCORE ROUTINES +* +* A8 = ROM POINTER FOR A GIVEN TABLE STATS +* A9 = RAM POINTER FOR CMOS DATA +* A10 = NUMBER OF ENTRIES IN THE TABLE +* +* A0 = PARTICULAR ENTRY TO DEAL WITH +* 0 = FILL ENTRY (POINTER ROUTINES POINT HERE IF ERROR) +* 1 = HIGHEST SCORE IN TABLE +* N = NTH SCORE +* +* A1 = OUTPUT OF CHECKSUM ROUTINE (BYTE) +* +* A7 = POINTER TO CURRENT ENTRY +* +* A4,A5,A6 SCRATCH +* +************************************************************************** +* +* FORM_HS_CKSUM +* +* THIS IS CALLED TO FORM THE CHECKSUM FOR THE SCORE +* NUMBER IN A0. (RAM POINTER ASSUMED IN A9). +* CHECKSUM IS RETURNED IN A1. THIS IS A *BYTE*. +* +* CHECKSUM IS COMPUTED AS THE COMPLEMENT OF THE SIMPLE SUM +* OF THE BYTES IN THE ENTRY. +* +* THIS ROUTINE RETURNS WITH THE Z BIT SET (.EQ.) IF THE +* CHECKSUM FOR THIS ENTRY MATCHES. +* +************************************************************************** +FORM_HS_CKSUM: + MMTM SP,A0,A4,A6,A7 + CALLR PT_ENTRY ;A7 = POINTER TO CURRENT ENTRY + MMTM SP,A7 ;SAVE POINTER TO ENTRY + MOVI HS_BYTES_TO_CHECK,A4 ;COUNT DOWN THE BYTES + CLR A1 ;KEEP SUM IN A1 +ADD_A_BYTE: + CALLR RC_BYTEI ;GET A BYTE INTO A0 + ADD A0,A1 ;ADD TO SUM + DSJ A4,ADD_A_BYTE ;ONE MORE ADDED + NOT A1 ;CHECKSUM IS NOW IN LOW BYTE + ANDI BYTE_MASK,A1 ;MASK SO ITS COOL + MMFM SP,A7 ;GET POINTER BACK + ADDI HS_CKBYTE,A7 ;POINT AT CHECKBYTE + CALLR RC_BYTE ;READ IN THE BYTE + CMP A0,A1 ;COMPARE WHAT'S THERE TO WHAT WE GOT + MMFM SP,A0,A4,A6,A7 ;Z BIT RETURNS COMPARE + RETS ;A1 RETURNS CKSUM + +************************************************************************** +* +* FORM_HS_CKSUM_AND_STORE +* +* THIS IS USED TO SET THE CHECKSUM FOR THE CURRENT +* ENTRY (A0) TO THE CORRECT VALUE. +* +************************************************************************** +FORM_HS_CKSUM_AND_STORE: + MMTM SP,A0,A7 + CALLR FORM_HS_CKSUM ;GET THE CKSUM IN A1, POINTER IN A7 + CALLR PT_ENTRY ;POINT AT THE VALUE + ADDI HS_CKBYTE,A7 ;POINT AT CHECKBYTE + MOVE A1,A0 ;GET CHECKBYTE TO A0 + CALLR WC_BYTE ;WRITE OUT THE BYTE + MMFM SP,A0,A7 + RETS + +************************************************************************** +* +* PT_ENTRY +* +* THIS IS CALLED TO POINT AT A GIVEN ENTRY OF +* THE HIGH SCORE TABLE. THIS ROUTINE BASES +* ACTIVITY ON ROM POINTER IN A8. IT FETCHES +* FRESH COPIES OF THE A9 RAM POINTER AND THE +* A10 ENTRY COUNTER. IT RETURNS THE ENTRY +* POINTER IN A7. +* +* A0 SPECIFIES WHICH ENTRY TO POINT AT +* A8,A9,A10 AND SYSCTRL ASSUMED SET PROPERLY +* A7 RETURNED POINTING TO THAT ENTRY +* +************************************************************************** +PT_ENTRY: + CMP A10,A0 ;A10 IS MAX VALUE + JRLS POINTER_IN_RANGE + + .IF DEBUG + JRUC $ ;HANG IN DEVELOPMENT + .ENDIF + + MOVE A9,A7 ;RETURN ZERO OFFSET IN FIELD + RETS + +POINTER_IN_RANGE: + MOVI HS_SIZE,A7 ;SIZE OF ENTRY + MPYU A0,A7 ;OFFSET OF ENTRY + ADD A9,A7 ;ADD IN THE BASE + RETS + +************************************************************************** +* +* ROM_PTRS +* +* THIS IS CALLED TO LOAD UP THE ROM STRUCTURE +* DATA INTO REGISTERS. +* +* THIS ALSO SETS UP STATUS WORD TO SELECT THE CMOS +* BANK SELECT FOR WHERE THE PARTICULAR TABLE RESIDES. +* +* INPUT A8=HSTD STRUCTURE ROM POINTER. +* +* OUTPUT A9 = CMOS RAM POINTER TO BASE OF TABLE +* OUTPUT A10= LAST ENTRY IN TABLE. TABLE WILL +* HAVE A10+1 ENTRIES SINCE ENTRY +* 0 IS A FILLER. +* +************************************************************************** +ROM_PTRS: + MMTM SP,A0,A1 ;SCRATCH REGGIES + MOVE *A8(TB_POINTER),A9,L ;GET CMOS POINTER + MOVE *A8(TB_COUNT),A10,W ;GET NUMBER OF ENTRIES + MOVE *A8(TB_PAGE_BITS),A1 ;GET OUR CMOS PAGE BITS + + CALLR SET_PAGE + + MMFM SP,A0,A1 ;SCRATCH REGGIES + RETS + +************************************************************************** +* +* SET_PAGE +* +* This is called to set the CMOS page to the bits +* contained in A1. +* +************************************************************************** +SET_PAGE +; MMTM SP,A0,A1 +; ANDI CMOS_PAGE_SELECT_BITS,A1 ;KILL SIGN EXTEND..SAVE BITS +; PUSHST ;SAVE INTERRUPT STATUS +; DINT ;STOP INTERRUPTS +; MOVE @SYSCOPY,A0,W ;GET THE RAM COPY +; ANDNI CMOS_PAGE_SELECT_BITS,A0 ;REMOVE THE CURRENT PAGE SELECT +; OR A1,A0 ;ADD IN OUR BITS +; MOVE A0,@SYSCOPY,W ;PUT THEM BACK IN THE RAM COPY +;; MOVE A0,@SYSCTRL,W ;NOW THE HARDWARE +; POPST ;OK TO RE-START INTS +; MMFM SP,A0,A1 + RETS + +************************************************************************** +* +* INIT_TAB +* +* This entrypoint is called at power up to +* clear out "today's" high score table. We do +* this job, and then we do the job on the +* all time table for high score reset if +* necessary. +* +************************************************************************** +INIT_TAB + RETS + +#************************************************************************* +* +* INIT_HSTRING +* +* Initializes the special name of the top scorer on the table. + + SUBR INIT_HSTRING + MOVI AUD_WINSTREAK,A0 + CALLA KILL_AUD + MOVI AUD_PINSPEED,A0 + CALLA KILL_AUD + MOVI AUD_BEATEN,A0 + CALLA KILL_AUD + rets + + +#************************************************************************* +* +* INIT_TB +* +* THIS IS CALLED TO SETUP A HIGH SCORE TABLE WITH +* FACTORY ENTRIES. +* +* A8 = ROM TABLE POINTER +* +************************************************************************** + SUBR INIT_TB + + MMTM SP,A5,A6,A7,A0 + CALLR ROM_PTRS ;STUFF TABLE DATA + MOVE *A8(TB_FACTORY),A6,L ;GET THE FACTORY TABLE + MOVE A10,A5 ;NUMBER OF VALID ENTRIES + INC A5 ;1 MORE TO HOLD ZERO ENTRY + MOVI HS_SIZE_IN_BYTES,A1 ;SIZE OF 1 ENTRY + MPYU A1,A5 ;A7 HAS NUMBER OF WORDS TO MOVE + MOVE A9,A7 ;CMOS POINTER IN A7 + +INIT_TB_1 + MOVB *A6,A0 ;GET A BYTE FROM ROM + ADDI BYTE_SIZE,A6 ;KICK ROM POINTER + CALLR WC_BYTEI ;WRITE THE BYTE AND INCREMENT + DSJS A5,INIT_TB_1 ;UNTIL THEY'RE ALL THERE. + + MOVE A10,A0 ;POINT AT LAST ENTRY +INIT_TB_2 + CALLR FORM_HS_CKSUM_AND_STORE ;SET ITS CHECKSUM + DEC A0 ;MOVE DOWN + JRNN INIT_TB_2 ;SET EACH ONE INCLUDING ZERO + MMFM SP,A5,A6,A7,A0 + + RETS + +#************************************************************************* +* +* COPY_ENTRY +* +* THIS IS CALLED TO COPY 1 ENTRY OF THE TABLE TO A +* DIFFERENT LOCATION IN THE TABLE. +* +* A8,A9,A10,SYSCTRL ASSUMED TO BE SETUP ALREADY +* A2 = SOURCE ENTRY (NUMBER) +* A3 = DESTINATION ENTRY (NUMBER) +* +************************************************************************** +COPY_ENTRY: + MMTM SP,A0,A4,A5,A6,A7 + MOVI HS_SIZE_IN_BYTES,A4 ;ENTRY SIZE IN BYTES + MOVE A2,A0 ;FIRST POINT FOR A0 + CALLR PT_ENTRY + MOVE A7,A6 ;A6 = SOURCE POINTER + MOVE A3,A0 + CALLR PT_ENTRY ;A5 = DESTINATION + MOVE A7,A5 +COPY_LOOP: +* +* IN THIS LOOP WE MOVE A BYTE AT A TIME. +* SINCE THE WORD AND LONG DO THE SHIFTING AND +* MASKING AND CALL MULTIPLE ROUTINES, THIS IS +* THE MOST EFFICIENT MODE OF OPERATION. +* + MOVE A6,A7 ;SOURCE IN CMOS REGGIE + CALLR RC_BYTEI ;FETCH A WORD + MOVE A7,A6 + MOVE A5,A7 ;DESTINATION + CALLR WC_BYTEI ;WRITE IT + MOVE A7,A5 ;BACK TO DEST REGGIE + DSJ A4,COPY_LOOP ;UNTIL ALL WORDS ARE COPIED + MMFM SP,A0,A4,A5,A6,A7 + RETS + +************************************************************************** +* +* VAL_TAB +* +* THIS ROUTINE IS CALLED WHEN WE ARE INTERESTED IN +* THE HSTD TABLE DATA. A8 CONTAINS THE ROM POINTER +* FOR THE TABLE. FOR ANY ENTRIES THAT WE THROW +* OUT, WE MOVE THE REST OF THE TABLE UP, AND CREATE +* A NEW ENTRY AT THE END OF THE TABLE. +* +* A2 = 0 ON OUTSIDE CALL. +* A2 = 1 ON RECURSIVE CALL (THE CHECK AFTER RE-INIT) +* +* THERE ARE 3 CHECKS MADE FOR EACH ENTRY: +* +* 1) IS CHECKSUM CORRECT. +* 2) IS SCORE ALL NUMERIC +* 3) ARE INITIALS ALL VALID ENTRIES. +* +* OUTPUT CC = TABLE OK +* CS = PROBLEM THAT CAN'T BE RECTIFIED +* (PROBABLY BAD RAM) +* +* A2 = 0 ...table ok, or cleaned up +* A2 otherwise meanes table initialized +* +************************************************************************** +VAL_TAB + CLR A2 ;indicate first call in + CALLR DO_VALIDATE ;validate + RETS + +DO_VALIDATE + MMTM SP,A0,A1,A3,A4,A5,A6,A7 + CALLR ROM_PTRS ;SETUP FOR TABLE + MOVI 1,A0 ;ITERATE THROUGH THE ENTRIES + CLR A1 ;COUNT ERRORS + +CHECK_A0_ENTRY: + CALLR CHECK_ENTRY ;IS THE ENTRY OK? + JRNC VT_1 ;YEP. + + CALLR REMOVE_ENTRY ;REMOVE THIS ENTRY + INC A1 + MOVE *A8(TB_ERROR_COUNT),A3 ;GET THRESHOLD + CMP A3,A1 ;ARE WE THERE? + JRLO CHECK_A0_ENTRY ;NOPE...CHECK MOVE UP ENTRY AT A0 +* +* TABLE IS MESSED UP....RE-INITIALIZE IT PLEASE +* + MOVE A2,A2 ;IS THIS RECURSIVE CHECK AFTER INIT? + JRNZ CANT_VALIDATE ;THEN RETURN FAILURE + + CALLR INIT_TB ;INIT THIS TABLE PLEASE + CALLR INIT_HSTRING + MOVK 1,A2 ;INDICATE RECURSIVE CALL + CALLR DO_VALIDATE ;IS IT ALRIGHT NOW? + MMFM SP,A0,A1,A3,A4,A5,A6,A7 + RETS +* +* LAST ENTRY WAS VALID...MOVE TO NEXT +* +VT_1: + INC A0 ;KICK IT + CMP A10,A0 ;STILL IN TABLE? + JRLS CHECK_A0_ENTRY ;YEP....CHECK THIS ENTRY + + CLRC ;RETURN VALID! + MMFM SP,A0,A1,A3,A4,A5,A6,A7 + RETS + +CANT_VALIDATE: + SETC ;RETURN FAILURE! + MMFM SP,A0,A1,A3,A4,A5,A6,A7 + RETS + +************************************************************************** +* +* CHECK_ENTRY +* +* THIS IS CALLED TO CHECK THE ENTRY INDICATED BY A0. +* +* CC = OK +* CS = ENTRY BAD +* +************************************************************************** +CHECK_ENTRY + MMTM SP,A0,A1,A2,A3,A7 + CALLR FORM_HS_CKSUM ;CHECK OUT CKSUM FIRST + JRNZ CHECK_FAIL ;BAD CHECKSUM....ITS BAD +* +* CHECKSUM OK...CHECK SCORE +* + CALLR GET_HSCR ;SCORE IN A1 + MOVE A1,A3 ;SAVE COPY OF SCORE + +CHECK_DIGIT: + MOVE A1,A2 ;COPY FOR NEXT NIBBLE + ANDI 0FH,A2 ;MASK THE NIBBLE + CMPI 9,A2 + JRHI CHECK_FAIL ;NIBBLE TOO HIGH + SRL 4,A1 ;SHIFT DOWN TO NEXT NIBBLE + JRNZ CHECK_DIGIT + + DEC A0 ;MAKE SURE WE ARE LOWER THAN PREVIOUS SCORE! + JREQ FIRST_ENT ;WE'RE THE 1ST IN THE TABLE + + CALLR GET_HSCR ;GET THE SCORE FOR THE GUY BEFORE US +; CMP A1,A3 ;OURS MUST BE LOWER OR SAME +; JRHI CHECK_FAIL ;OURS IS BIGGER....REMOVE US + +FIRST_ENT: + INC A0 ;RESTORE THE ENTRY NUMBER +* +* SCORE OK...CHECK INITIALS +* + CALLR PT_ENTRY ;POINT A7 AT ENTRY + ADDI HS_INITS,A7 ;POINT AT FIRST INITIAL + MOVI NUM_INITS,A2 ;THIS IS NUMBER OF INITIALS + +NEXT_LETTER: + CALLR RC_BYTEI ;FETCH A BYTE + + CALLR VERIFY_LETTER ;SEE IF ITS VALID. + JRC CHECK_FAIL ;NOT A LETTER...BYTE + + DSJ A2,NEXT_LETTER + + CLRC ;RETURN PASS + MMFM SP,A0,A1,A2,A3,A7 + RETS + +CHECK_FAIL: + SETC + MMFM SP,A0,A1,A2,A3,A7 + RETS + + +************************************************************************** +* +* VERIFY_LETTER +* +* THIS IS CALLED FOR EACH INITIAL LETTER TO SEE +* IF ITS VALID. +* +* CC = VALID +* CS = NOT VALID +* +************************************************************************** + +VERIFY_LETTER: + ANDI BYTE_MASK,A0 ;KEEP JUST THE BYTE + + CMPI '!',A0 ;SPACE? + JREQ VERIFY_PASS ;ITS OK. + + CMPI '%',A0 ;SPACE? + JREQ VERIFY_PASS ;ITS OK. + + CMPI '?',A0 ;SPACE? + JREQ VERIFY_PASS ;ITS OK. + + CMPI SPACE,A0 ;SPACE? + JREQ VERIFY_PASS ;ITS OK. + + CMPI LET_A,A0 ;BETWEEN A-Z? + JRLO VERIFY_FAIL + + CMPI LET_Z,A0 + JRHI VERIFY_FAIL + +VERIFY_PASS: + CLRC + RETS + +VERIFY_FAIL: + SETC + RETS + +************************************************************************** +* +* REMOVE_ENTRY +* +* THIS IS CALLED TO REMOVE A BAD ENTRY FROM THE TABLE. +* IT DELETES THE ENTRY INDICATED BY A0. +* +* IT BUBBLES THE REST OF THE TABLE UP 1 UNIT. +* +* IT THEN PUTS THE LOWEST SCORE FROM THE ROM TABLE +* WITH INITIALS IN THAT ENTRY. +* +************************************************************************** +REMOVE_ENTRY: + MMTM SP,A0,A1,A2,A6,A7 + MOVE A0,A3 ;THIS IS DEST + MOVE A3,A2 ;SOURCE IS 1 BELOW + +BUBBLE_ANOTHER: + INC A2 ;NOW WE'RE SET FOR A COPY... + + CMP A10,A2 ;IS SOURCE OUT OF RANGE? + JRHI BUBBLE_DONE ;YEP....WE'RE AT THE BOTTOM (A3) + + CALLR COPY_ENTRY + INC A3 + JRUC BUBBLE_ANOTHER + +BUBBLE_DONE: + MOVE A3,A0 ;THIS IS BOTTOM OF TABLE + CALLR PT_ENTRY ;A7 POINTS AT CMOS BLOCK + + MOVE *A8(TB_FACTORY),A6,L ;GET FACTORY TABLE + MOVI HS_ROM_SIZE,A1 ;SIZE OF ENTRY + MPYU A10,A1 ;TIMES NUMBER OF VALID ENTRIES..POINTS AT LAST. + ADD A1,A6 ;NOW WE POINT AT END OF ROM TABLE + MOVI HS_SIZE_IN_BYTES,A2 ;SIZE OF ENTRY + +REPLACE_LOOP: + MOVB *A6,A0 ;MOVE A ROM BYTE TO A0 + ADDI BYTE_SIZE,A6 + CALLR WC_BYTEI ;WRITE THE WORD AND INCREMENT + DSJ A2,REPLACE_LOOP ;UNTIL THEY'RE ALL THERE. + + MOVE A10,A0 ;POINT AT "LAST" ENTRY + CALLR FORM_HS_CKSUM_AND_STORE ;STORE THE CHECKBYTE + MMFM SP,A0,A1,A2,A6,A7 ;AND RETURN + RETS + +************************************************************************** +* +* CMOS UTILITIES +* +************************************************************************** + +************************************************************************** +* +* FOR ALL OF THESE CMOS ROUTINES. +* +* A7 = POINTER TO MEMORY +* A0 = DATA TO/FROM MEMORY +* +************************************************************************** +* +* **** IMPORTANT NOTE ON WORD AND LONG WORD PACKING **** +* +* NOTE THAT REQUESTS FOR WORDS RETURN THE 2 BYTES PACKED +* INTO A WORD AS <1ST BYTE><2ND BYTE>. THIS IS NOT +* THE SAME WAY THAT THE GSP HANDLES A WORD POINTED AT +* WITH A POINTER. +* +* LONG WORDS WORK SIMILARLY: +* +* MSB LSB +* <1ST BYTE> <2ND BYTE> <3RD BYTE> <4TH BYTE> +* +* TOUGH LUCK INTEL HACKERS! +* +* +* RC_BYTE +* WC_BYTE +* +* These 2 routines are the only routines that ever touch +* CMOS ram. This is done to localize the effect of +* changes in the architecture. All efforts to deal with +* CMOS should come through these routines. Locking +* hardware will be easily added in the future (as well +* as different memory mapping). + + + +RC_BYTE +; move @SYSCOPY,a0 +; sll 32-2,a0 +; srl 32-2,a0 +; sll 15,a0 ;Page offset +; add a7,a0 + movb *a7,a0 + sll 32-8,a0 + srl 32-8,a0 + rets + +WC_BYTE +; MOVE A1,-*SP,L +; move @SYSCOPY,a1 +; sll 32-2,a1 +; srl 32-2,a1 +; sll 15,a1 ;Page offset +; add a7,a1 +; move a7,a1 + move a0,@CMOSWE + movb a0,*a7 +; MMFM SP,A1 + rets + + +************************************************************************** +* +* RC_BYTEI +* +* READ BYTE POINTED TO BY A7...INCREMENT POINTER TO +* "NEXT" BYTE. +* +************************************************************************** +RC_BYTEI: + CALLR RC_BYTE + ADDI C_BYTE_SIZE,A7 ;WORDS SEPARATE CMOS BYTES. + MOVE A0,A0 ;RETURN FLAGS ACCORDINGLY + RETS + +RC_WORD: + MMTM SP,A1,A7 ;USE A1 TO COMBINE BYTES + CALLR RC_BYTEI ;GET A BYTE + MOVE A0,A1 ;SAVE IN A1 + ANDI BYTE_MASK,A1 ;MASK ONLY BYTE + SLL 8,A1 ;SHIFT TO HIGH BYTE + CALLR RC_BYTE ;GET THE 2ND BYTE + ANDI BYTE_MASK,A0 + OR A1,A0 ;A0 HAS THE WORD + MMFM SP,A1,A7 + RETS + +RC_WORDI: + CALLR RC_WORD + ADDI C_WORD_SIZE,A7 ;LONG SEPARATE CMOS WORDS. + MOVE A0,A0 ;RETURN FLAGS ACCORDINGLY + RETS + +RC_LONG: + MMTM SP,A1,A7 ;USE A1 TO COMBINE BYTES + CALLR RC_WORDI ;GET A WORD + MOVE A0,A1 ;SAVE IN A1 + ANDI WORD_MASK,A1 ;MASK ONLY WORD + SLL 16,A1 ;SHIFT TO HIGH WORD + CALLR RC_WORD ;GET THE 2ND WORD + ANDI WORD_MASK,A0 + OR A1,A0 ;A0 HAS THE LONG WORD + MMFM SP,A1,A7 + RETS + +RC_LONGI: + CALLR RC_LONG + ADDI C_LONG_SIZE,A7 ;DOUBLE THE DISTANCE FOR BRAIN DAMIJ + MOVE A0,A0 ;RETURN FLAGS ACCORDINGLY + RETS + +WC_BYTEI: + CALLR WC_BYTE + ADDI C_BYTE_SIZE,A7 + RETS + +WC_WORD: + MMTM SP,A0,A1,A7 + MOVE A0,A1 ;MAKE COPY OF WORD + SRL 8,A0 ;GET HIGH BYTE IN A0 + CALLR WC_BYTEI ;WRITE THE HIGH BYTE + MOVE A1,A0 ;NOW GET THE LOW BYTE BACK + CALLR WC_BYTE ;WRITE IT + MMFM SP,A0,A1,A7 ;AND RESTORE ALL WE TOUCHED + RETS + +WC_WORDI: + CALLR WC_WORD + ADDI C_WORD_SIZE,A7 + RETS + +WC_LONG: + MMTM SP,A0,A1,A7 + MOVE A0,A1 ;MAKE COPY OF LONG + SRL 16,A0 ;GET HIGH WORD IN A0 + CALLR WC_WORDI ;WRITE THE HIGH WORD + MOVE A1,A0 ;NOW GET THE LOW WORD BACK + CALLR WC_WORD ;WRITE IT + MMFM SP,A0,A1,A7 ;AND RESTORE ALL WE TOUCHED + RETS + +WC_LONGI: + CALLR WC_LONG + ADDI C_LONG_SIZE,A7 + RETS + +***************************************************************************** +***************************************************************************** +***** +***** DEFAULT ROM HSTD TABLES AND TABLE DEFINITIONS +***** +***************************************************************************** +***************************************************************************** + +TB_POINTER EQU 0 ;LONG-POINTER TO BEGINNING OF TABLE +TB_COUNT EQU TB_POINTER+LONG_SIZE ;WORD....# IN THE TABLE. +TB_VISIBLE EQU TB_COUNT+WORD_SIZE ;WORD....NUMBER DISPLAYED +TB_PAGE_BITS EQU TB_VISIBLE+WORD_SIZE ;WORD....STATUS WORD FOR CMOS PAGE +TB_FACTORY EQU TB_PAGE_BITS+WORD_SIZE ;LONG....ROM STARTUP TABLE +TB_ERROR_COUNT EQU TB_FACTORY+LONG_SIZE ;WORD....NUM ERRORS TO RE-INIT + + +SCRM .MACRO a,b + .byte :a:/>1000000,:a:/>10000&>ff,:a:/>100&>ff,:a:&>ff + .byte ":b:",0 + .ENDM + +STREAK_ROM_TABLE + SCRM >22122145,"EPJXX" ;****ZERO ENTRY...NOT SEEN! +ROM_ENTRY_SIZE EQU $-STREAK_ROM_TABLE + SCRM >21,"XJTXX" + SCRM >20,"CRLXX" + SCRM >19,"XJRXX" + SCRM >18,"GBSXX" + SCRM >17,"SALXX" + SCRM >16,"JYTXX" + SCRM >15,"XMSXX" + SCRM >14,"TDGXX" + SCRM >13,"MDPXX" + SCRM >12,"TOAXX" + SCRM >11,"STYXX" + SCRM >10,"WMNXX" + SCRM >9,"ASBXX" + SCRM >8,"ROTXX" + SCRM >7,"UNKXX" + SCRM >6,"GNPXX" + SCRM >5,"MIDXX" + SCRM >4,"WAYXX" + SCRM >3,"XXXXX" +STREAK_TABLE_ENTRIES EQU ($-STREAK_ROM_TABLE)/ROM_ENTRY_SIZE + +PIN_SPEED_TAB_ROM_TABLE + + SCRM >8001,"EPJYY" ;****ZERO ENTRY...NOT SEEN! + SCRM >3000,"XJTYY" + SCRM >4000,"XMSYY" + SCRM >5000,"XJRYY" + SCRM >5500,"JAZYY" + SCRM >6000,"SALYY" + SCRM >6500,"JSTYY" + SCRM >7000,"TGGYY" + SCRM >7130,"GDPYY" + SCRM >7200,"EGGYY" + SCRM >7230,"XXXYY" + SCRM >7500,"XJTYY" + SCRM >7730,"XMSYY" + SCRM >8000,"XJRYY" + SCRM >8100,"TGGYY" + SCRM >8230,"JAZYY" + SCRM >8500,"SALYY" + SCRM >8730,"JSTYY" + SCRM >9230,"GDPYY" + SCRM >9500,"EGGYY" + + +PIN_SPEED_TAB_ENTRIES EQU ($-PIN_SPEED_TAB_ROM_TABLE)/ROM_ENTRY_SIZE + +BEATEN_ROM_TABLE + SCRM >22122145,"EPJAB" ;****ZERO ENTRY...NOT SEEN! +B_ROM_ENTRY_SIZE EQU $-BEATEN_ROM_TABLE + SCRM >1,"ZJTAB" + SCRM >1,"CRLAB" + SCRM >10,"ZJRAB" + SCRM >10,"GBSAB" + SCRM >100,"SALAB" + SCRM >100,"JYTAB" + SCRM >1000,"ZMSAB" + SCRM >1000,"TDZAB" + SCRM >10000,"MDPAB" + SCRM >10000,"TOAAB" + SCRM >100000,"SZYAB" + SCRM >100000,"WMNAB" + SCRM >1000000,"ASBAB" + SCRM >1000000,"ROTAB" + SCRM >10000000,"UNKAB" + SCRM >10000000,"GNPAB" + SCRM >10000000,"MIDAB" + SCRM >10000000,"WAYAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" + SCRM >10000000,"XXXAB" +BEATEN_TAB_ENTRIES EQU ($-BEATEN_ROM_TABLE)/B_ROM_ENTRY_SIZE + + .END + + \ No newline at end of file diff --git a/BACKUP/IMGFIND.CMD b/BACKUP/IMGFIND.CMD new file mode 100644 index 0000000..e35fc44 --- /dev/null +++ b/BACKUP/IMGFIND.CMD @@ -0,0 +1,18 @@ +lod> bam.lod bret.lod doink.lod lex.lod main.lod misc.lod +lod> razor.lod shawn.lod taker.lod yoko.lod + +asm> adjust.asm anim.asm attract.asm audit.asm bakgnd.asm bam.asm +asm> bamseq1.asm bamseq2.asm bamseq3.asm bamseq4.asm bret.asm coll2.asm +asm> collis.asm crowd.asm dcssound.asm diag.asm display.asm dnkseq1.asm +asm> dnkseq2.asm dnkseq3.asm dnkseq4.asm doink.asm drone.asm getup.asm +asm> hrtseq1.asm hrtseq2.asm hrtseq3.asm hrtseq4.asm hstd.asm lex.asm +asm> lexseq1.asm lexseq2.asm lexseq3.asm lexseq4.asm lifebar.asm main.asm +asm> menu.asm mproc.asm pal.asm patch.asm progress.asm razor.asm react1.asm +asm> react2.asm react3.asm react4.asm react5.asm react6.asm react7.asm +asm> react8.asm react9.asm ring.asm robo.asm ropes.asm rzrseq1.asm +asm> rzrseq2.asm rzrseq3.asm rzrseq4.asm screen.asm select.asm shawn.asm +asm> shnseq1.asm shnseq2.asm shnseq3.asm shnseq4.asm special.asm square.asm +asm> string.asm tables.asm taker.asm test.asm text.asm undseq1.asm undseq2.asm +asm> undseq3.asm undseq4.asm unzip.asm util.asm wrestle.asm wrestle2.asm +asm> yoko.asm yokseq1.asm yokseq2.asm yokseq3.asm yokseq4.asm + \ No newline at end of file diff --git a/BACKUP/IMGFIND1.CMD b/BACKUP/IMGFIND1.CMD new file mode 100644 index 0000000..02473bf --- /dev/null +++ b/BACKUP/IMGFIND1.CMD @@ -0,0 +1,27 @@ +# +# write results to UNUSED.DOC +# + +RPT> unused1.doc + +# +# read images from these files +# + +LOD> ADAM.LOD BAM.LOD DOINK.LOD + +# +# search for images in these files +# + +ASM> ADAM.ASM ADJUST.ASM ADMSEQ1.ASM ADMSEQ2.ASM ADMSEQ3.ASM ANIM.ASM +ASM> ATTRACT.ASM AUDIT.ASM BAKGND.ASM BAM.ASM BAMSEQ1.ASM BAMSEQ2.ASM +ASM> BAMSEQ3.ASM BGNDPAL.ASM BGNDTBL.ASM COLL2.ASM COLLIS.ASM CROWD.ASM +ASM> DCSSOUND.ASM DIAG.ASM DISPLAY.ASM DNKSEQ1.ASM DNKSEQ2.ASM DNKSEQ3.ASM +ASM> DOINK.ASM GETUP.ASM HSTD.ASM LIFEBAR.ASM MAIN.ASM MENU.ASM MPROC.ASM +ASM> PAL.ASM PATCH.ASM RAZOR.ASM REF.ASM REFSEQ1.ASM RING.ASM ROBO.ASM +ASM> ROPES.ASM RZRSEQ1.ASM RZRSEQ2.ASM RZRSEQ3.ASM SELECT.ASM SPECIAL.ASM +ASM> SQUARE.ASM STRING.ASM TABLES.ASM TAKER.ASM TEMPLATE.ASM TEST.ASM +ASM> TEXT.ASM UNDSEQ1.ASM UNDSEQ2.ASM UNDSEQ3.ASM UNZIP.ASM UTIL.ASM +ASM> WRESTLE.ASM WRESTLE2.ASM YOKO.ASM YOKSEQ1.ASM YOKSEQ2.ASM YOKSEQ3.ASM + \ No newline at end of file diff --git a/BACKUP/IMGFIND2.CMD b/BACKUP/IMGFIND2.CMD new file mode 100644 index 0000000..2684d03 --- /dev/null +++ b/BACKUP/IMGFIND2.CMD @@ -0,0 +1,27 @@ +# +# write results to UNUSED.DOC +# + +RPT> unused2.doc + +# +# read images from these files +# + +LOD> MAIN.LOD RAZOR.LOD REF.LOD + +# +# search for images in these files +# + +ASM> ADAM.ASM ADJUST.ASM ADMSEQ1.ASM ADMSEQ2.ASM ADMSEQ3.ASM ANIM.ASM +ASM> ATTRACT.ASM AUDIT.ASM BAKGND.ASM BAM.ASM BAMSEQ1.ASM BAMSEQ2.ASM +ASM> BAMSEQ3.ASM BGNDPAL.ASM BGNDTBL.ASM COLL2.ASM COLLIS.ASM CROWD.ASM +ASM> DCSSOUND.ASM DIAG.ASM DISPLAY.ASM DNKSEQ1.ASM DNKSEQ2.ASM DNKSEQ3.ASM +ASM> DOINK.ASM GETUP.ASM HSTD.ASM LIFEBAR.ASM MAIN.ASM MENU.ASM MPROC.ASM +ASM> PAL.ASM PATCH.ASM RAZOR.ASM REF.ASM REFSEQ1.ASM RING.ASM ROBO.ASM +ASM> ROPES.ASM RZRSEQ1.ASM RZRSEQ2.ASM RZRSEQ3.ASM SELECT.ASM SPECIAL.ASM +ASM> SQUARE.ASM STRING.ASM TABLES.ASM TAKER.ASM TEMPLATE.ASM TEST.ASM +ASM> TEXT.ASM UNDSEQ1.ASM UNDSEQ2.ASM UNDSEQ3.ASM UNZIP.ASM UTIL.ASM +ASM> WRESTLE.ASM WRESTLE2.ASM YOKO.ASM YOKSEQ1.ASM YOKSEQ2.ASM YOKSEQ3.ASM + \ No newline at end of file diff --git a/BACKUP/IMGFIND3.CMD b/BACKUP/IMGFIND3.CMD new file mode 100644 index 0000000..5e0e80e --- /dev/null +++ b/BACKUP/IMGFIND3.CMD @@ -0,0 +1,27 @@ +# +# write results to UNUSED.DOC +# + +RPT> unused3.doc + +# +# read images from these files +# + +LOD> TAKER.LOD YOKO.LOD + +# +# search for images in these files +# + +ASM> ADAM.ASM ADJUST.ASM ADMSEQ1.ASM ADMSEQ2.ASM ADMSEQ3.ASM ANIM.ASM +ASM> ATTRACT.ASM AUDIT.ASM BAKGND.ASM BAM.ASM BAMSEQ1.ASM BAMSEQ2.ASM +ASM> BAMSEQ3.ASM BGNDPAL.ASM BGNDTBL.ASM COLL2.ASM COLLIS.ASM CROWD.ASM +ASM> DCSSOUND.ASM DIAG.ASM DISPLAY.ASM DNKSEQ1.ASM DNKSEQ2.ASM DNKSEQ3.ASM +ASM> DOINK.ASM GETUP.ASM HSTD.ASM LIFEBAR.ASM MAIN.ASM MENU.ASM MPROC.ASM +ASM> PAL.ASM PATCH.ASM RAZOR.ASM REF.ASM REFSEQ1.ASM RING.ASM ROBO.ASM +ASM> ROPES.ASM RZRSEQ1.ASM RZRSEQ2.ASM RZRSEQ3.ASM SELECT.ASM SPECIAL.ASM +ASM> SQUARE.ASM STRING.ASM TABLES.ASM TAKER.ASM TEMPLATE.ASM TEST.ASM +ASM> TEXT.ASM UNDSEQ1.ASM UNDSEQ2.ASM UNDSEQ3.ASM UNZIP.ASM UTIL.ASM +ASM> WRESTLE.ASM WRESTLE2.ASM YOKO.ASM YOKSEQ1.ASM YOKSEQ2.ASM YOKSEQ3.ASM + \ No newline at end of file diff --git a/BACKUP/IMGPAL.ASM b/BACKUP/IMGPAL.ASM new file mode 100644 index 0000000..60de85e --- /dev/null +++ b/BACKUP/IMGPAL.ASM @@ -0,0 +1,3954 @@ + .FILE "imgpal.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + +ALEX_P: + .word 64 + .word 00H,06318H,00H,06F14H,06E8CH,06A87H,05EB3H,05A90H + .word 05A2CH,05A25H,04E51H,04E2FH,04E0CH,04960H,03DCCH,03DABH + .word 03D87H,03D64H,03168H,03164H,02D27H,02D03H,020E4H,020E1H + .word 01CA3H,01C80H,01C00H,01481H,01060H,01060H,0C00H,00H + .word 04E93H,04651H,031EEH,035CDH,0216AH,02148H,01543H,01D07H + .word 010C4H,010C0H,010A4H,0CA4H,0C82H,0881H,083H,0880H + .word 0480H,0862H,0860H,041H,040H,040H,020H,020H + .word 00H,01C28H,0864H,00H,0420FH,0318BH,01083H,010E7H + +FRTROW_P: + .word 64 + .word 00H,06B5AH,0294AH,02108H,01CE7H,018C6H,014A5H,01084H + .word 0842H,00H,07756H,066F6H,062B2H,05AB5H,05671H,05651H + .word 0562EH,051EEH,051A2H,04A31H,04A0EH,04A0BH,045CDH,045CCH + .word 04565H,041AAH,039ADH,0398BH,0398AH,03569H,03549H,03526H + .word 034C5H,034C2H,02CC5H,02929H,02928H,02906H,028A4H,024E5H + .word 024C5H,02442H,020E6H,020A4H,018A4H,01883H,01862H,01821H + .word 01441H,01041H,01021H,0800H,0862H,014C9H,018A7H,0C64H + .word 0422H,0841H,01465H,01D08H,014C6H,0C84H,0442H,07FDDH + +SDCRWD_P: + .word 64 + .word 00H,06B5AH,0318CH,02D6BH,02108H,01084H,0842H,00H + .word 07756H,05610H,045CDH,045CCH,041AAH,039ADH,0398AH,03968H + .word 03549H,03526H,03128H,02D49H,02D28H,02928H,02907H,02904H + .word 028A4H,02507H,02442H,020E6H,020C5H,020A4H,01CC5H,01C21H + .word 018A4H,018A1H,01883H,01821H,01061H,0800H,02128H,01D07H + .word 018E6H,014C5H,0480H,0440H,029D1H,02950H,014D2H,0154DH + .word 0110BH,08A8H,018A7H,0886H,0C64H,0824H,0422H,018C5H + .word 014A4H,01083H,0841H,0254AH,014C6H,0C84H,0442H,034C6H + +JOYDEW_P: + .word 64 + .word 00H,06B5AH,01084H,0842H,07756H,062B2H,05651H,0562EH + .word 051EEH,04A31H,045CDH,041AAH,0416BH,039ADH,03549H,034C6H + .word 03444H,03127H,02907H,028E6H,028A4H,02883H,02844H,024E8H + .word 024C5H,024A7H,02442H,020E6H,020A4H,02083H,01C21H,01862H + .word 01821H,01441H,01021H,0800H,0427CH,03E36H,04655H,02992H + .word 014D2H,035F1H,02571H,0316DH,0254DH,0190DH,014ECH,0110BH + .word 0252AH,014C9H,01469H,0868H,018A7H,0867H,01086H,0C64H + .word 0444H,0824H,0424H,0422H,045F1H,01465H,0822H,01929H + +JAKE_P: + .word 64 + .word 00H,00H,066F5H,0626EH,06267H,05693H,05671H,0564EH + .word 0562BH,051E9H,04A0BH,0460EH,045EDH,045C9H,045A6H,04565H + .word 04168H,039AAH,039A6H,03569H,03545H,03522H,02926H,02923H + .word 024E5H,024C2H,01CC3H,018A4H,018A1H,01481H,01441H,0820H + .word 056D5H,04E93H,03E0FH,029ACH,0298AH,02D87H,01D85H,02549H + .word 01906H,018E6H,014E6H,014C4H,010C3H,08C5H,010A4H,010A2H + .word 0883H,0483H,0881H,0862H,0860H,0462H,0440H,0296CH + .word 0246AH,010A6H,0422H,04A51H,039CDH,018C5H,01929H,0D08H + +MARNE_P: + .word 64 + .word 00H,06B5AH,01CE7H,00H,07756H,066F5H,062D2H,06270H + .word 0626EH,06267H,05693H,05671H,0564EH,0562BH,055C6H,051EEH + .word 051E9H,051A2H,04A0BH,0460EH,045EDH,045C9H,045A6H,04565H + .word 04542H,039AAH,039A6H,03569H,03545H,03522H,034E2H,034C5H + .word 02926H,02923H,024E5H,024C2H,02441H,020C1H,01CC3H,018A4H + .word 018A2H,018A1H,01481H,01441H,0820H,056D5H,02549H,01906H + .word 018E6H,014E6H,014C4H,08C5H,010A4H,010A2H,0483H,0881H + .word 0862H,0860H,0440H,04A51H,039CDH,018C5H,01929H,07FDDH + +FLASH_P: + .word 64 + .word 00H,06B5AH,0318CH,02D6BH,02108H,01CE7H,018C6H,014A5H + .word 01084H,0842H,00H,05AB5H,051A2H,04A31H,039ADH,02D4AH + .word 02D46H,02929H,024C5H,020A4H,018A4H,018A2H,01883H,01062H + .word 03E0FH,02549H,02128H,01D07H,018E6H,014C5H,010A4H,0C83H + .word 0862H,0441H,0427CH,01B7H,0173H,021B2H,0EDH,08AH + .word 014C9H,08A8H,018A7H,0867H,014A6H,010A6H,01086H,0886H + .word 0C64H,0444H,0424H,0422H,04A51H,018C5H,014A4H,01083H + .word 0841H,02D8CH,0254AH,01D08H,014C6H,0442H,06FDFH,07FDDH + +VOGEL_P: + .word 64 + .word 00H,0318CH,02D6BH,02108H,01CE7H,018C6H,014A5H,01084H + .word 04A31H,0460FH,041AAH,04168H,039ADH,0396AH,03526H,034C6H + .word 0316BH,03149H,03128H,03127H,02D49H,02D46H,02D28H,02CC5H + .word 02929H,02906H,028E6H,028A4H,024C5H,024A3H,020E6H,02083H + .word 01CC3H,018A4H,01862H,01841H,01441H,01062H,0821H,0820H + .word 0800H,03E0FH,02547H,02128H,01906H,018E6H,014C5H,010A4H + .word 0C83H,0862H,0441H,014C9H,018A7H,010A6H,01086H,04A51H + .word 039CDH,018C5H,01083H,0841H,045F1H,01D08H,014C6H,0442H + +JASON_P: + .word 54 + .word 00H,02108H,01CE7H,014A5H,01084H,0842H,040A7H,03DCEH + .word 03CC6H,039ADH,038A5H,0358BH,03549H,0316BH,03127H,02D49H + .word 02D28H,02CC5H,02CC4H,02928H,028E6H,028A4H,020E6H,020C5H + .word 020A4H,02083H,01CC5H,018A4H,01883H,01862H,01062H,01041H + .word 01021H,0821H,0800H,01523H,014C4H,0427CH,01B7H,0173H + .word 0EDH,08AH,018A7H,01086H,0886H,0C64H,0422H,018C5H + .word 014A4H,01083H,0822H,01102H,040C6H,06FDFH + +FARCRD_P: + .word 64 + .word 00H,02D6BH,02108H,01CE7H,014A5H,01084H,0842H,04A31H + .word 04A0EH,045CDH,03DCEH,03CC6H,039ADH,0396AH,03928H,038A5H + .word 03549H,0316BH,03127H,02D49H,02D28H,02CC5H,02CC4H,02929H + .word 02928H,028E6H,028A4H,024C5H,024A3H,020E6H,020C5H,020A4H + .word 02083H,01CC5H,018A4H,01883H,01862H,01062H,01041H,0820H + .word 0800H,014C4H,0427CH,01B7H,0173H,0254DH,0EDH,08AH + .word 014C9H,018A7H,0867H,010A6H,01086H,0886H,0C64H,0444H + .word 0422H,014A4H,01083H,0822H,01D08H,01102H,040C6H,06FDFH + +FLASH4_P: + .word 42 + .word 00H,02108H,01CE7H,014A5H,01084H,0842H,020C5H,020A4H + .word 01CC5H,018A4H,01883H,01862H,01062H,0821H,0800H,0C83H + .word 0883H,0427CH,01B7H,0173H,0254DH,0EDH,0252AH,08AH + .word 014C9H,018A7H,0867H,014A6H,010A6H,01086H,0886H,0C64H + .word 0444H,0424H,0422H,018C5H,014A4H,01083H,0822H,01D08H + .word 014C6H,06FDFH + +BIGFLSH_P: + .word 22 + .word 00H,06BBEH,0573H,0152H,0111H,01D5H,06DBH,01B4H + .word 0237H,0278H,0216H,02955H,031F8H,039F5H,03A99H,04F1EH + .word 04AD9H,05ADDH,05B9EH,01931H,04A79H,05B5DH + +CHIP_B_P: + .word 16 + .word 0318CH,0635EH,052DAH,04A98H,04256H,03E35H,035F3H,02DB1H + .word 0256FH,0190CH,010CAH,0888H,0446H,0445H,0443H,0442H + +CSELBK_P: + .word 22 + .word 00H,0C85H,01486H,014A7H,0C64H,014C8H,0C43H,0421H + .word 0422H,01CE9H,0256FH,01CEAH,01D0BH,01D2CH,0254DH,0254EH + .word 02DB1H,02D90H,035D3H,02DB2H,035F4H,03615H + +SPKBLU_P: + .word 8 + .word 00H,07FFFH,06BDFH,053BFH,03F9FH,02B7FH,0135FH,033FH + +SPKYEL_P: + .word 8 + .word 00H,07FFFH,07FF4H,07FEAH,07FE0H,07F40H,07EA0H,07E00H + +SPKGRN_P: + .word 8 + .word 00H,07FFFH,06BFAH,053F4H,03FEFH,02BEAH,013E4H,03E0H + +SPKPRP_P: + .word 8 + .word 00H,07FFFH,07F5FH,07E9FH,07DFFH,07D5FH,07C9FH,07C1FH + +SPKTRQ_P: + .word 8 + .word 00H,07FFFH,06BFFH,053FFH,03FFFH,02BFFH,013FFH,03FFH + +NMAT_P: + .word 56 + .word 00H,07FDBH,07FBBH,07FBAH,07BBBH,07BBAH,07F99H,07B9AH + .word 07B99H,0779AH,07B78H,07F77H,07B79H,0777AH,07779H,07778H + .word 07379H,07758H,07757H,07359H,07358H,07755H,07737H,07735H + .word 07337H,07336H,06F37H,06F36H,06B37H,06F16H,06F15H,06B17H + .word 06B16H,06B15H,06EF5H,066F5H,066F4H,06AD4H,066D4H,062D3H + .word 066B3H,062B3H,05EB2H,05E92H,05E91H,05A92H,05A91H,05A72H + .word 05A71H,05671H,05670H,05651H,05650H,05250H,04E2FH,04E0EH + +ATTTXT_P: + .word 3 + .word 0212BH,07FE0H,00H + +MGP_G_P: + .word 31 + .word 00H,07BDEH,077BDH,0739CH,06F7BH,06B5AH,06739H,06318H + .word 05EF7H,05AD6H,056B5H,05294H,04E73H,04A52H,04631H,04210H + .word 03DEFH,039CEH,035ADH,0318CH,02D6BH,0294AH,02529H,02108H + .word 01CE7H,018C6H,014A5H,01084H,0C63H,0842H,0421H + +CRPL_G_P: + .word 23 + .word 00H,06B5AH,06739H,05EF7H,05AD6H,056B5H,05294H,04E73H + .word 04A52H,04631H,04210H,03DEFH,039CEH,035ADH,0318CH,02D6BH + .word 0294AH,02529H,02108H,01CE7H,018C6H,014A5H,01H + +CRPL_B_P: + .word 22 + .word 00H,03DFEH,039DDH,0319BH,02D7AH,02959H,02538H,02117H + .word 01CF6H,018D5H,014B4H,01093H,0C72H,0851H,0430H,0FH + .word 0EH,0DH,0CH,0BH,0AH,09H + +CRPL_R_P: + .word 22 + .word 00H,07DEFH,079CEH,0718CH,06D6BH,0694AH,06529H,06108H + .word 05CE7H,058C6H,054A5H,05084H,04C63H,04842H,04421H,03C00H + .word 03800H,03400H,03000H,02C00H,02800H,02400H + +CRUTBH_P: + .word 256 + .word 00H,0C22H,01464H,01064H,01485H,01CC7H,0316DH,018A7H + .word 039AFH,01FH,0844H,014AAH,018CBH,018CAH,014A8H,018C9H + .word 014A7H,02D6FH,0318FH,0318EH,035AFH,03DF1H,04E75H,02D6CH + .word 05296H,035AEH,05EF8H,06319H,0673AH,03FH,05FH,01D0EH + .word 0BFH,018ECH,035D3H,0DFH,014CAH,01D0DH,018EBH,03E15H + .word 014C9H,018EAH,031B0H,039F2H,04210H,03E13H,013FH,035D0H + .word 015FH,017FH,04E96H,019FH,01BFH,01DFH,021FH,025FH + .word 029FH,02BFH,031FH,033FH,041H,0120H,02A0H,0862H + .word 0C61H,0841H,07F98H,01483H,0460FH,0820H,01882H,0C41H + .word 07B34H,07F55H,07735H,01062H,041EEH,07B13H,07F34H,07B35H + .word 03947H,06E8FH,07F13H,020A3H,076D1H,07AF2H,07B14H,07F35H + .word 07EF2H,06691H,06A2CH,01883H,0726EH,0768FH,07ED1H,0664EH + .word 06E90H,076D2H,07AF3H,07F14H,072F4H,02082H,0724DH,0766EH + .word 07A8FH,01CA4H,07EF3H,0418AH,06EB2H,01041H,03D05H,01462H + .word 028C4H,06E0BH,06A2DH,07690H,05E0DH,07AB1H,07ED2H,05251H + .word 028A3H,065EBH,04968H,06A0CH,06E2DH,0724EH,0766FH,06A70H + .word 072B2H,05125H,065CAH,030E5H,01C83H,06E0CH,0722DH,0764EH + .word 07A6FH,05DECH,03D48H,0662EH,02D07H,03D8BH,03481H,038A2H + .word 01441H,04505H,01862H,030C4H,04D47H,05168H,05589H,059AAH + .word 05DCBH,020A4H,061ECH,0660DH,024C5H,06E4FH,04DABH,03549H + .word 05EF7H,044C3H,04905H,04D26H,05147H,038E5H,02083H,05D89H + .word 03D06H,061AAH,04127H,05DAAH,065CBH,061CBH,04969H,06A0DH + .word 0764FH,06E2EH,07670H,055CCH,03107H,01420H,01841H,01C62H + .word 038C4H,05968H,06189H,024A4H,04948H,069ECH,04D69H,0762EH + .word 028C5H,07A70H,02CE6H,03CC4H,040E5H,02483H,04906H,04D27H + .word 04927H,04D48H,05169H,0598AH,0558AH,05DABH,059ABH,03461H + .word 02062H,02883H,04D06H,05548H,05148H,028A4H,05569H,05D8AH + .word 01C20H,02020H,02862H,03083H,02CA4H,030C5H,034E6H,04128H + .word 04549H,02841H,03062H,034A4H,03CC5H,038C5H,040E6H,03CA4H + .word 048C5H,04CE6H,05149H,05928H,0400H,0800H,0C00H,0C21H + .word 01442H,01042H,01863H,0821H,024C6H,0C42H,01063H,020E7H + .word 05EB5H,03DCEH,04A31H,04E52H,05273H,05694H,0421H,07FFFH + +CRUTBM_P: + .word 256 + .word 00H,01001H,0822H,01FH,0420H,018C5H,05EF6H,05E6CH + .word 0628DH,06ACFH,06AF2H,04E2EH,06B15H,06F36H,0562BH,05A4CH + .word 03546H,062B1H,066D2H,06AF3H,0666CH,0626DH,06717H,0C41H + .word 03126H,0520CH,07F55H,06EF3H,0564FH,07336H,05ED5H,06F59H + .word 04588H,07ACFH,06ED2H,03526H,03947H,07EF1H,06E8FH,07F13H + .word 0562EH,0622CH,07F35H,07F78H,055A8H,03926H,049AAH,07AD1H + .word 05A2EH,05E4FH,07F57H,0726EH,0622DH,07ED1H,07AF3H,07F14H + .word 02907H,02082H,05987H,04946H,05DA8H,03905H,03D26H,07A4CH + .word 04147H,07A8FH,04989H,07EB0H,0418AH,045ABH,06EB2H,06F38H + .word 02C81H,04D46H,071E9H,061A8H,065C9H,061EBH,04D89H,07E8FH + .word 049CCH,04DEDH,066F6H,07359H,05103H,030A2H,034C3H,069C9H + .word 04126H,0760BH,04547H,03506H,051AAH,0622EH,0560EH,07AF4H + .word 048E3H,05125H,06166H,05546H,069A8H,02CC4H,07A2CH,030E5H + .word 069EBH,07E4DH,03D48H,04169H,04DCCH,06271H,03D8BH,06ED4H + .word 05E93H,06F17H,02882H,02CA3H,04926H,034E5H,03906H,05589H + .word 059AAH,03D27H,07E6FH,020A4H,06E4FH,04DABH,07ED3H,055EDH + .word 03128H,06671H,03549H,066D5H,03C81H,050E3H,02C82H,04D05H + .word 06DA9H,02083H,071EBH,03D06H,04127H,065ECH,06E0DH,07E91H + .word 06E92H,04081H,01841H,05505H,01C62H,03CE5H,06189H,024A4H + .word 0760DH,0762EH,059CCH,03949H,076B3H,06EF6H,07738H,03CA3H + .word 038A3H,06989H,04506H,04D27H,071CBH,075ECH,07A0DH,03507H + .word 07A92H,03040H,040A3H,02062H,02883H,044E5H,05148H,028A4H + .word 05569H,03907H,03D49H,0416AH,06AB4H,01C20H,03C61H,04CC4H + .word 02462H,030A4H,05948H,06169H,034C5H,0698AH,0658AH,06DABH + .word 030C5H,038E6H,075EDH,034E6H,04128H,04549H,03D28H,04DACH + .word 076F6H,03483H,034A4H,03CC5H,040E6H,04949H,0558BH,05107H + .word 05528H,04D28H,05D6AH,05D49H,0400H,0800H,0C00H,01000H + .word 01400H,02000H,02800H,03421H,01021H,02C63H,0C21H,01442H + .word 030A5H,01042H,01863H,0821H,02084H,01C84H,01463H,020A5H + .word 02CE7H,024C6H,01884H,059EFH,01CA5H,024E7H,0396BH,06273H + .word 06694H,01484H,03D8CH,02D29H,03DADH,06AF7H,02929H,0316BH + .word 05EB5H,062F7H,06718H,0842H,02529H,02D6BH,05EF7H,07FFFH + +CRUTDK_P: + .word 256 + .word 00H,070A7H,04085H,0658DH,060C8H,059AEH,05403H,05803H + .word 06424H,06845H,02443H,074EAH,03064H,034C7H,0516CH,03423H + .word 05866H,0656DH,059F0H,04403H,05C25H,03023H,03444H,01C43H + .word 07719H,05046H,06868H,06A33H,05C47H,02423H,04846H,03845H + .word 02844H,02085H,0452BH,05C89H,05CCBH,02403H,0548AH,06AF8H + .word 01823H,02C66H,05DF2H,02065H,06550H,0488AH,0550EH,02086H + .word 01C65H,06B19H,06172H,01464H,065D4H,034CAH,0350BH,03849H + .word 06E37H,048ADH,049B0H,01023H,02C68H,01C86H,04E12H,01444H + .word 05A75H,066D8H,06297H,0731BH,01845H,05634H,01C46H,061B6H + .word 03D4EH,06257H,04570H,0344CH,03CCEH,01846H,028CAH,05E37H + .word 06A9AH,06699H,05E77H,0775DH,02069H,05636H,06ADBH,0294AH + .word 041B1H,01848H,0669CH,05EB8H,045D3H,0733EH,05E99H,028CDH + .word 0206DH,020CAH,0777FH,049B7H,06B3BH,07BBFH,0C44H,02D0FH + .word 03991H,04E36H,05678H,05239H,05276H,062DCH,0C27H,0824H + .word 0186CH,0C45H,05E9DH,0C28H,01067H,0737FH,0104AH,0146CH + .word 045F9H,0405H,0671EH,06B3FH,0828H,03593H,02511H,02D53H + .word 0569DH,018C6H,0C4DH,01CD0H,03598H,01495H,01CD3H,0413H + .word 0429H,0C73H,0C6FH,02D73H,0C65H,035B5H,03DF8H,0463AH + .word 04E7CH,04216H,04E79H,05EFEH,05ADCH,04214H,01085H,039D0H + .word 0318DH,04211H,04EH,039F5H,071H,035D3H,02D90H,08AFH + .word 08AAH,0212AH,01D08H,014C5H,06374H,05B50H,0464FH,052B2H + .word 06B78H,073BAH,04A8DH,05EF7H,04AC8H,05F14H,04AC6H,014C2H + .word 0422DH,056D2H,05AF3H,056B5H,03A06H,04E8FH,05F13H,01D02H + .word 035E2H,02123H,05F11H,05AF1H,06333H,03A02H,056CFH,02962H + .word 052ADH,031A3H,04A64H,04224H,04A66H,07FE0H,05285H,01CE2H + .word 02943H,039C6H,02D65H,018C3H,02945H,02105H,04A4DH,056B0H + .word 05290H,04E70H,05291H,03DEDH,04A50H,05AD4H,06316H,06F79H + .word 04E72H,05AD5H,05EF6H,041E4H,02503H,02D45H,018A2H,01CC3H + .word 02926H,018A3H,02506H,014A5H,020E5H,07F52H,07F0FH,06E04H + .word 06A6BH,01483H,02CE3H,07F11H,01CC5H,020C4H,07EADH,0664DH + .word 05A0DH,07AB1H,05E50H,07AD4H,06A0EH,061EEH,06630H,07272H + .word 07C00H,05673H,05EB5H,062D6H,039ADH,04A31H,0737BH,07FFFH + +CRUTLX_P: + .word 256 + .word 00H,03801H,04885H,03422H,03022H,03443H,03C64H,03C85H + .word 02801H,03043H,03864H,038A6H,04D2AH,0558DH,02001H,03085H + .word 02C85H,034A6H,0452AH,0494BH,0412AH,0454BH,0518DH,055CFH + .word 06211H,02043H,059F0H,06253H,03844H,03865H,02464H,0456CH + .word 03044H,03886H,03486H,03CC8H,059AFH,01001H,03424H,055AFH + .word 05DF1H,0418DH,045AEH,049CFH,03445H,03866H,03C87H,06654H + .word 05E95H,049F0H,02486H,0314BH,06F3AH,0316CH,06F7AH,03527H + .word 01041H,03D69H,07AF4H,030E5H,07AD3H,030C4H,069A9H,034E5H + .word 07AB2H,07B16H,06567H,06988H,06DA9H,065CBH,06E0DH,0722EH + .word 0764FH,0724FH,07670H,07A91H,07EB2H,05E0EH,072B3H,07AF5H + .word 05105H,06967H,05926H,01C62H,06589H,069AAH,069CBH,06DECH + .word 069ECH,0720DH,07A70H,07292H,076B3H,07AD4H,07EF5H,07B59H + .word 05D05H,06126H,05D26H,06147H,06168H,06989H,0598AH,03507H + .word 06E2FH,06A2FH,06E50H,07A92H,07692H,07AB3H,06526H,02883H + .word 05106H,05527H,061ABH,065CCH,0720EH,069EDH,065EDH,0722FH + .word 07250H,07671H,05A0FH,07B17H,07B38H,07F59H,050A3H,04CC4H + .word 054E5H,04CE5H,05906H,05D27H,05D48H,05948H,05D69H,03D07H + .word 069CCH,04128H,0496AH,051CDH,06651H,06A72H,06251H,07AF6H + .word 07F17H,072D5H,02420H,034A4H,038C5H,04528H,0516AH,04949H + .word 059ACH,05DCDH,055ACH,06A0FH,06E51H,07272H,076B4H,07AD5H + .word 04483H,048C5H,04CE6H,05507H,05107H,05528H,05128H,05949H + .word 05D6AH,05149H,0556AH,05D8BH,065CDH,065EEH,04462H,04C83H + .word 054A4H,04CA4H,048A4H,054C5H,050C5H,04CC5H,054E6H,0616AH + .word 0400H,01000H,01400H,03800H,07C00H,03C21H,03821H,02C21H + .word 02821H,02021H,04042H,03C42H,03842H,04063H,02442H,04484H + .word 02042H,04CA5H,02C63H,048A5H,01C42H,02863H,044A5H,040A5H + .word 02463H,03CA5H,02C84H,040C6H,034A5H,048E7H,01442H,02884H + .word 030A5H,01C63H,038C6H,02CA5H,03CE7H,030C6H,028A5H,04529H + .word 0558CH,030E7H,059CEH,05DEFH,06210H,07AB5H,07ED6H,0394AH + .word 04DCEH,051EFH,06E94H,06252H,07AF7H,05631H,045CEH,05E73H + .word 06294H,066B5H,05652H,06AF7H,07339H,0775AH,07B7BH,06B18H + .word 07B9CH,04610H,04A31H,05694H,062F7H,05ED6H,06718H,07FFFH + +CRUTRR_P: + .word 256 + .word 00H,0392AH,01864H,02086H,05253H,030C9H,0356CH,05674H + .word 02CC9H,024A8H,02488H,028A9H,02489H,01866H,02088H,024A9H + .word 01C87H,01465H,0354DH,045D1H,0314CH,05A76H,020E8H,0292AH + .word 0358DH,05AB6H,062F8H,0288BH,0248AH,02089H,024AAH,03D70H + .word 0396FH,041B1H,049F3H,0248BH,01C88H,03D90H,04E14H,0398FH + .word 0354FH,045F3H,0358EH,02D4CH,05ED8H,03180H,07FE0H,02949H + .word 0318BH,039CDH,07B4CH,045C5H,041A5H,07F2AH,0770CH,041A6H + .word 045C7H,07B2EH,045A5H,07B0CH,01061H,02D03H,066AEH,04186H + .word 02D04H,03524H,0728AH,04165H,051E9H,072ADH,0820H,024C3H + .word 0C41H,0666DH,01461H,028E4H,01062H,055EAH,024A2H,028C3H + .word 01C82H,02CE4H,01440H,01861H,03505H,030E4H,0660BH,0C20H + .word 02082H,05566H,05987H,024A3H,06A0BH,0620CH,04E30H,01840H + .word 05545H,01041H,05966H,034E4H,071E9H,03D05H,05167H,065C9H + .word 01462H,028C4H,0764DH,04568H,04D89H,07AB1H,055ECH,049CCH + .word 02482H,05945H,06587H,075C8H,038E4H,071C8H,028A3H,05146H + .word 075E9H,05567H,06DEAH,04126H,0760BH,04547H,0762CH,03506H + .word 03081H,02061H,038C3H,06145H,05125H,06166H,03CE4H,05546H + .word 06DA8H,069A8H,04105H,05967H,071C9H,06DC9H,04526H,05D88H + .word 02CC4H,07A0BH,04947H,07A2CH,030E5H,01C83H,07E4DH,04D68H + .word 06E0CH,059CBH,03D48H,06A4FH,014A5H,03DEFH,01441H,040E4H + .word 06D87H,05D46H,02CA3H,05946H,071A8H,079C9H,05D67H,075C9H + .word 06588H,01862H,04926H,079EAH,030C4H,069A9H,034E5H,05589H + .word 07E6FH,020A4H,024C5H,03C81H,02861H,040A2H,02C82H,040C3H + .word 05D25H,030A3H,04905H,05126H,06D88H,034C4H,06988H,04D26H + .word 05547H,06DA9H,05147H,038E5H,02083H,05568H,03D06H,04127H + .word 05DAAH,065CBH,07670H,04481H,048C3H,06525H,048E4H,038C4H + .word 05D47H,03CE5H,075CAH,04106H,069AAH,065AAH,04527H,028C5H + .word 02CE6H,054C3H,03CA3H,050E4H,06568H,02483H,04906H,06989H + .word 04506H,04927H,0558AH,03861H,03461H,02883H,028A4H,02CC5H + .word 030E6H,04CA3H,02462H,030A4H,02CA4H,034C5H,04D6AH,07C00H + .word 0C21H,01042H,01863H,0821H,02CC6H,04129H,01C84H,0414AH + .word 03929H,045CEH,02929H,0316BH,02D4AH,04610H,04E52H,07FFFH + +CRUTSM_P: + .word 256 + .word 00H,0552AH,0512AH,040C7H,03CC7H,04509H,04D2AH,0596CH + .word 04D4BH,040E8H,03CE8H,0412AH,04D6CH,02885H,02CA6H,048E9H + .word 05D8EH,0456CH,0556DH,06695H,030E8H,061F1H,07AB7H,034A7H + .word 0618FH,05632H,07234H,020A6H,024C7H,01C85H,059B0H,06E55H + .word 07ED9H,0518FH,028E8H,049F0H,06696H,051F1H,07F1BH,07277H + .word 0418EH,0314BH,0C22H,06A15H,059D2H,07A99H,01885H,01CA6H + .word 07ADAH,05E34H,06EB8H,02909H,02D2AH,03DAEH,07F7DH,01464H + .word 07A79H,07ABAH,072B9H,07679H,07A9AH,07EBBH,07E9BH,0312BH + .word 01C86H,07ABBH,076FBH,07F9EH,0842H,01865H,07A9BH,05A75H + .word 07EBCH,07AFCH,07F1DH,07E9CH,07ADCH,07EFDH,07F7EH,07ABCH + .word 07F3EH,07EFEH,01044H,01465H,01064H,020C8H,01485H,01CC7H + .word 0316CH,02D4BH,0358DH,041F0H,03DCFH,04A32H,04E53H,01466H + .word 01486H,018A7H,03DD0H,01H,0210CH,0252BH,01CE8H,035AEH + .word 0296FH,035D2H,031B0H,02D8FH,0254CH,035D0H,04233H,03A13H + .word 0296CH,04A74H,01660H,06738H,04A0DH,0522EH,04E51H,020E6H + .word 045EDH,07F13H,07F14H,04A0FH,04989H,03527H,07AF4H,02D07H + .word 028E6H,07ED3H,03549H,07B16H,05651H,04D8AH,07E91H,03107H + .word 07EB2H,06E92H,0418BH,07E70H,02CE6H,03528H,03D6AH,028A4H + .word 03907H,07A71H,03928H,07671H,03D49H,0498BH,030C5H,03D07H + .word 07A2FH,04128H,07E50H,04549H,07A50H,03D28H,0518BH,07E71H + .word 04149H,055CDH,05E30H,0598BH,04D6AH,05DCDH,0660FH,07693H + .word 07AB4H,05549H,0596AH,0618BH,0556AH,065ACH,061ACH,069CDH + .word 0760FH,06DEEH,061CDH,06E0FH,065EEH,07230H,06E30H,07A72H + .word 06D8BH,069ACH,071CDH,079EEH,075EEH,0400H,0800H,01400H + .word 01800H,02400H,02800H,02C00H,03000H,03400H,03800H,04000H + .word 04800H,05000H,05400H,06000H,06400H,01421H,01842H,01442H + .word 05129H,0616BH,04508H,0658CH,01042H,01863H,0821H,02084H + .word 04929H,0618CH,04D4AH,05D8CH,034E7H,061ADH,024A5H,0494AH + .word 0558CH,030E7H,01C84H,0454AH,0496BH,07652H,020A5H,02CE7H + .word 05DEFH,024C6H,01884H,06631H,04DADH,028E7H,06A52H,01063H + .word 04DCEH,020C6H,076D6H,0354AH,024E7H,018A5H,04E10H,05231H + .word 05652H,0398CH,05A73H,020E7H,045EFH,02508H,05EB5H,07FFFH + +CRUTYK_P: + .word 256 + .word 00H,00H,00H,0C21H,0C41H,01041H,01062H,01063H + .word 01400H,01420H,01441H,01462H,01463H,01484H,01485H,01441H + .word 01800H,01841H,01862H,01882H,01883H,018A4H,01861H,01841H + .word 01C00H,01C41H,01C62H,01C82H,01C83H,01CC5H,01CC7H,02000H + .word 02020H,020A4H,020C5H,020C6H,020E7H,02108H,02062H,02400H + .word 02441H,02462H,02482H,024A3H,024A5H,024E7H,02508H,02482H + .word 02800H,02820H,02821H,02841H,02842H,02883H,028A3H,028C4H + .word 028C5H,02907H,02928H,02929H,02949H,02C00H,02C21H,02C83H + .word 02CA4H,02CA5H,02CC3H,02CC6H,02CE7H,02D08H,02D09H,02D29H + .word 02D49H,02D4AH,02D6AH,03000H,03062H,03083H,030A3H,030A4H + .word 030C4H,030C5H,030E5H,030E7H,03108H,03149H,0314AH,0316AH + .word 0316BH,0318BH,030A4H,03400H,03461H,03482H,034A3H,034A4H + .word 034C4H,034E4H,034E5H,03507H,0354AH,0356BH,0358BH,0358CH + .word 035ADH,03800H,03883H,038C4H,038E5H,038E6H,03907H,03908H + .word 0394AH,0396BH,0398CH,039ACH,039ADH,03CC3H,03CC4H,03CE4H + .word 03CE5H,03D05H,03D08H,03D29H,03D69H,03D6AH,03D6BH,03D8BH + .word 03D8CH,03DADH,03DCDH,03DCEH,040C3H,040C4H,040E4H,040E5H + .word 04129H,0416BH,0418CH,041ADH,04482H,044E4H,044E5H,04505H + .word 04506H,04547H,04569H,04589H,045ADH,045EFH,0460FH,04633H + .word 048C3H,048E4H,04925H,04926H,049ADH,049CEH,04A0FH,04A10H + .word 04D04H,04D05H,04D25H,04D26H,04D47H,04D68H,04DABH,04DCEH + .word 04DEFH,04E10H,04E52H,05126H,05146H,05147H,05167H,051AAH + .word 05230H,05231H,05525H,05547H,05567H,05568H,05589H,0562FH + .word 05652H,05673H,05694H,05946H,05967H,05968H,05988H,05989H + .word 05A93H,05AB6H,05AD7H,05D46H,05D67H,05D88H,05DA9H,05DAAH + .word 05E71H,05EB4H,05EB5H,05EF8H,06187H,06188H,061A8H,061A9H + .word 062D5H,062D6H,062F7H,062F8H,06587H,065A8H,065AAH,065C9H + .word 065CAH,065ECH,0660DH,066F7H,06718H,06739H,069A9H,069C9H + .word 069CAH,069EBH,06A2EH,06AF6H,06B39H,06DC9H,06DEAH,06DEBH + .word 06E0BH,06E0CH,06E90H,06F7AH,071EAH,0720BH,0720CH,0722CH + .word 0722DH,0722EH,0760BH,0760CH,0762DH,0764EH,07A2CH,07A4DH + .word 07A4EH,07A6FH,07A90H,07BDEH,07E6EH,07E6FH,07ED2H,07FFFH + +CRUTUN_P: + .word 256 + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,020H,0400H,0420H,0421H,0441H + .word 0800H,0820H,0841H,0842H,0C00H,0C41H,0C42H,0C62H + .word 0C63H,0C62H,0C41H,0C62H,0C83H,01062H,01000H,01041H + .word 01062H,01062H,01083H,01062H,01062H,01062H,01062H,01420H + .word 01484H,014A4H,01484H,014A4H,01800H,01861H,018A4H,018A5H + .word 018C5H,018C6H,018E6H,01C83H,01CA3H,01CC5H,01CC6H,01CE7H + .word 01D07H,02040H,02060H,020A4H,020C4H,020C5H,020E6H,020E7H + .word 02107H,02108H,02460H,024C5H,024E5H,024E6H,02508H,02528H + .word 02529H,02549H,02860H,028C4H,02928H,02929H,02949H,0294AH + .word 0296AH,0296BH,02C80H,02CE5H,02D06H,02D4AH,02D6BH,030A1H + .word 0316AH,0316BH,0316CH,0318BH,0318CH,034C2H,03504H,03527H + .word 0358BH,0358CH,035ACH,035ADH,035CDH,038C2H,038E2H,038E3H + .word 03905H,03926H,03969H,039ADH,039CEH,03CE2H,03D04H,03D05H + .word 03D24H,03D25H,03D47H,03DCEH,03DCFH,03DEEH,03DEFH,04103H + .word 04104H,04125H,04126H,04147H,041AAH,041CFH,041EFH,041F0H + .word 04210H,04524H,04545H,04546H,04568H,04589H,04610H,04611H + .word 04630H,04631H,04944H,04945H,04946H,04967H,049A9H,049CBH + .word 04A0FH,04A31H,04A52H,04A53H,04D65H,04D66H,04D87H,04D88H + .word 04DA9H,04DAAH,04E52H,04E73H,04E94H,05166H,05186H,05187H + .word 05188H,051A8H,051A9H,05273H,05293H,05294H,05586H,055A7H + .word 055A8H,055CAH,055EBH,055ECH,05693H,05694H,05695H,056B4H + .word 056B5H,059C9H,059EAH,05A0DH,05AB5H,05AD5H,05AD6H,05DC8H + .word 05DC9H,05DEAH,05DEBH,05E0BH,05E0DH,05ED6H,05EF6H,05EF7H + .word 061E9H,061EAH,0620AH,0620BH,0622CH,062F7H,0662CH,0664DH + .word 0664EH,06718H,06A2BH,06A2CH,06E4DH,06E6DH,06E6EH,07FFFH + +CRHI_B_P: + .word 3 + .word 02D6BH,01FH,07FFFH + +CRHI_R_P: + .word 3 + .word 02D6BH,07C00H,07FFFH + +robo_p: + .word 16 + .word 00H,07C00H,07DA0H,07C1FH,07DC0H,07FE1H,03E0H,01FH + .word 03DEFH,07FFFH,0F9H,06001H,073FH,0784BH,07951H,06300H + +FNT9WHT_P: + .word 3 + .word 02D6BH,00H,07FFFH + +FNT9RED_P: + .word 3 + .word 02D6BH,00H,07C00H + +FNT9WHT2P: + .word 3 + .word 02D6BH,00H,07FFFH + +FNT9YEL_P: + .word 3 + .word 02D6BH,00H,07FE0H + +FNT9PRP_P: + .word 3 + .word 02D6BH,00H,07C1FH + +WWFLOGOP: + .word 255 + .word 023H,075C0H,07640H,07600H,07180H,07141H,06D21H,070E1H + .word 06901H,068C1H,07081H,06C61H,06842H,06841H,06021H,06001H + .word 06042H,05401H,04401H,03801H,05441H,05C81H,058C1H,06DC1H + .word 064C1H,064E1H,06D60H,06C62H,06521H,07660H,05862H,05442H + .word 04822H,05461H,06481H,068C2H,02402H,068E2H,05842H,05821H + .word 06082H,04466H,03866H,02404H,02446H,06965H,03489H,0494EH + .word 0516EH,04991H,04DAFH,04DB2H,05190H,03D2EH,0492BH,0768EH + .word 076A0H,038CAH,0390DH,0450CH,044EAH,05462H,055B1H,051D3H + .word 059D2H,06E75H,05DF3H,07665H,059F5H,06677H,055F3H,049F5H + .word 06214H,06A52H,05E37H,076F6H,03842H,06257H,06635H,06A98H + .word 06258H,05A58H,06E77H,06699H,06EB6H,07642H,0550CH,05E79H + .word 06A56H,06EB9H,07669H,06A58H,0669AH,07672H,066B9H,06A9AH + .word 05A9BH,04CC6H,07662H,054E9H,06EDAH,066BBH,076F9H,048A2H + .word 054E5H,072DAH,0596BH,06ADCH,06561H,072D9H,0731CH,06EFBH + .word 0731BH,076F1H,064E2H,072DCH,06F1CH,066FBH,07709H,0775CH + .word 0773BH,06523H,06D42H,065F2H,07562H,07142H,0658DH,075A2H + .word 076EEH,07298H,06EF9H,065EDH,07602H,069EAH,064A2H,059CDH + .word 07604H,069C5H,07296H,07736H,076E6H,076C2H,059CAH,07731H + .word 05942H,06D62H,071EAH,05946H,06183H,02889H,01802H,06E4AH + .word 04468H,06A54H,01801H,059B1H,05E33H,0656AH,038C7H,06675H + .word 059F1H,02CA9H,06E26H,02822H,068A4H,01C26H,03405H,04404H + .word 03CA1H,01803H,01801H,01403H,01002H,0801H,04927H,01001H + .word 01804H,0802H,01401H,0400H,01848H,0402H,0C05H,01408H + .word 028CDH,03951H,02CA7H,018AFH,04A59H,01C8DH,0248CH,03910H + .word 05259H,03D2BH,062DCH,066FCH,0C03H,06E4EH,06F3CH,03DB3H + .word 04994H,05EBBH,05279H,06ED2H,07166H,0772EH,076E2H,076E0H + .word 0772AH,06109H,05DC7H,06E22H,05C64H,0720DH,06084H,06590H + .word 05611H,05EBCH,05EFCH,0629CH,056BCH,05A9CH,0527BH,0525AH + .word 05A5AH,04A5AH,0569CH,04E7BH,04E7CH,04E37H,04EBCH,0463AH + .word 04E79H,04639H,0525CH,0467BH,04219H,03E3AH,03A19H,03E1AH + .word 035D7H,035F9H,039D8H,0361AH,031D8H,02DD8H,02DB7H,07104H + .word 03196H,02952H,02996H,06EAEH,07726H,07722H,060A5H + +OSGEMD: + .word 43 + .word 0212BH,07F25H,0675BH,0673BH,0633AH,05F1AH,05AFAH,056DAH + .word 052DAH,052BAH,04E9AH,04A79H,04678H,04657H,04237H,03E16H + .word 03A15H,035D3H,031D2H,02DB1H,02990H,0256FH,0214EH,0214DH + .word 01D2CH,077BDH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,05100H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E46H + +ORANGPAL: + .word 43 + .word 0212BH,07FA0H,07F30H,07F10H,07EEFH,07E8BH,07ECBH,07EC0H + .word 07EC0H,07E60H,07E20H,07E00H,07DE0H,07DC0H,07DA0H,07D80H + .word 07D60H,06180H,06180H,05D60H,05940H,05520H,05100H,05100H + .word 04CE0H,07FFEH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +GREENPAL: + .word 43 + .word 0212BH,07F25H,04FEAH,0436AH,04389H,03FA9H,033E9H,033C9H + .word 02FC9H,02326H,03386H,02F65H,02B44H,02323H,02303H,022C2H + .word 02281H,02240H,02240H,02220H,02200H,021E0H,021C0H,021C0H + .word 021A0H,07FF9H,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +BLUE: + .word 43 + .word 0212BH,07F25H,063BFH,0539FH,04F9FH,04B7FH,04B3FH,0F3FH + .word 0F3FH,02BFH,02FFH,02BFH,029FH,027FH,025FH,023FH + .word 021EH,01DCH,01DBH,01BAH,0199H,0178H,0157H,0156H + .word 0135H,07BDFH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +REDPAL: + .word 43 + .word 0212BH,07F25H,07E2EH,07DEDH,07DACH,07D8BH,07DCDH,079ADH + .word 075ADH,0758DH,07929H,07508H,070E7H,06CE6H,068E6H,064A4H + .word 06084H,038A2H,054A2H,050A2H,04CA2H,048A2H,044A2H,044A2H + .word 02CA2H,07F39H,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +WHITEPAL: + .word 43 + .word 0212BH,07F25H,07BFFH,07BDFH,077DEH,073BEH,06F9EH,06B7EH + .word 0677EH,0675EH,05F18H,05AF7H,056F6H,056D5H,052B5H,04E94H + .word 04A93H,04651H,04250H,03E2FH,03A0EH,035EDH,031CCH,031CBH + .word 02DAAH,07FFFH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +PURPLE: + .word 43 + .word 0212BH,07F25H,07E1FH,07DFFH,07DFFH,07DDFH,079BFH,0759FH + .word 0719FH,0681DH,0701EH,06C1DH,0681CH,0641BH,0601AH,05C19H + .word 05417H,04C16H,04815H,04414H,04013H,03C12H,03811H,03810H + .word 0340FH,07FBEH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +TURQUSE: + .word 43 + .word 0212BH,07F25H,04FFEH,04FDCH,04FBBH,04F9AH,01FFEH,01BFEH + .word 017FEH,0339H,0398H,0377H,0356H,0335H,0314H,02F3H + .word 02D2H,0252H,0251H,0230H,020FH,01EEH,01CDH,01CCH + .word 01ABH,077FFH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +RUBYPAL: + .word 43 + .word 0212BH,07F25H,07E53H,07E33H,07E32H,07E12H,07DF2H,07DD2H + .word 07DD2H,07D70H,07D2FH,0790EH,078EDH,078CCH,074ABH,0708AH + .word 06C48H,06889H,06488H,06087H,05C86H,05885H,05484H,05484H + .word 05084H,07FBDH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +AQUAPAL: + .word 43 + .word 0212BH,07F25H,033FFH,033FFH,02FFFH,02BFFH,027FFH,023FFH + .word 01FFFH,035FH,033FH,031EH,02FFH,02DEH,02BDH,029CH + .word 025BH,027CH,027DH,025EH,0236H,0215H,01F4H,01F3H + .word 01D2H,067FFH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +WHITE2PAL: + .word 43 + .word 0212BH,07F25H,07BFFH,07BDFH,077DEH,073BEH,06F9EH,06B7EH + .word 0677EH,0675EH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07FFEH,07FFFH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +GOLD: + .word 43 + .word 0212BH,07F63H,07FA5H,07F85H,07F84H,07F64H,07F44H,07F24H + .word 07F24H,07EE0H,07EC0H,07AA0H,07680H,07660H,07240H,06E40H + .word 06E00H,06600H,06200H,05DE0H,059C0H,055A0H,05180H,05180H + .word 04D60H,077BDH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +REDPAL2: + .word 43 + .word 00H,07F25H,07E79H,07E59H,07E58H,07E38H,07E18H,07DF8H + .word 07DF8H,07D96H,07D55H,07D34H,07D13H,07CF2H,07CD1H,07CB0H + .word 07C6EH,07CAFH,07CAEH,07CADH,07CACH,078ABH,074AAH,074AAH + .word 070AAH,07FBDH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +LGMDGLD: + .word 56 + .word 0252BH,00H,05A60H,05A40H,05E40H,06220H,06220H,06620H + .word 06A20H,06E40H,07240H,07660H,07A80H,07240H,06E40H,06A20H + .word 06200H,05DE0H,059E0H,05A00H,05E20H,06220H,06640H,051E0H + .word 051C0H,049A0H,04580H,04160H,03D60H,03940H,03520H,03920H + .word 03D20H,04120H,04520H,04940H,04D40H,07280H,06E60H,06A20H + .word 06600H,061E0H,05DC0H,059A0H,05580H,03480H,03060H,02C60H + .word 02C40H,02840H,02820H,02420H,02400H,07F20H,04100H,01000H + +LGMDBLU: + .word 56 + .word 0252BH,00H,02ADFH,02ABFH,02EBFH,0329FH,0329EH,0369EH + .word 03A9EH,03EBEH,042BEH,046DDH,04AFDH,042BCH,03EBCH,03A9CH + .word 0327BH,02E5BH,02A5AH,02A7AH,02E9BH,0329BH,036BCH,0225AH + .word 02239H,01A19H,015F8H,011D7H,0DD7H,09B6H,0596H,0996H + .word 0D96H,01196H,01596H,019B6H,01DB6H,042FDH,03EDCH,03A9AH + .word 03679H,03258H,02E36H,02A15H,025F4H,04EBH,0CAH,0CAH + .word 0A9H,0A9H,088H,088H,067H,05B9FH,0116FH,01H + +LGGEMD1: + .word 56 + .word 0252BH,00H,04F3FH,04F1FH,0531FH,056FFH,056FEH,05AFEH + .word 05EFEH,0631EH,0671EH,06B3DH,06F5DH,0671CH,0631CH,05EFCH + .word 056DBH,052BBH,04EBAH,04EDAH,052FBH,056FBH,05B1CH,046BAH + .word 04699H,03E79H,03A58H,03637H,03237H,02E16H,029F6H,02DF6H + .word 031F6H,035F6H,039F6H,03E16H,04216H,0675DH,0633CH,05EFAH + .word 05AD9H,056B8H,05296H,04E75H,04A54H,0294BH,0252AH,0212AH + .word 02109H,01D09H,01CE8H,018E8H,018C7H,07FFFH,035CFH,0421H + +LGMDCHR: + .word 56 + .word 0252BH,00H,042DCH,042BCH,046BCH,04A9CH,04A9BH,04E9BH + .word 0529BH,056BBH,05ABBH,05EDAH,062FAH,05AB9H,056B9H,05299H + .word 04A78H,04658H,04257H,04277H,04698H,04A98H,04EB9H,03A57H + .word 03A36H,03216H,02DF5H,029D4H,025D4H,021B3H,01D93H,02193H + .word 02593H,02993H,02D93H,031B3H,035B3H,05AFAH,056D9H,05297H + .word 04E76H,04A55H,04633H,04212H,03DF1H,02109H,01CE8H,018E8H + .word 018C7H,014C7H,014A6H,010A6H,01085H,077BDH,02D8DH,00H + +LGMDORNG: + .word 56 + .word 0252BH,00H,061E3H,061C3H,065C3H,069A3H,069A2H,06DA2H + .word 071A2H,075C2H,079C2H,07DE1H,07E01H,079C0H,075C0H,071A0H + .word 06980H,06560H,06160H,06180H,065A0H,069A0H,06DC0H,05960H + .word 05940H,05120H,04D00H,048E0H,044E0H,040C0H,03CA0H,040A0H + .word 044A0H,048A0H,04CA0H,050C0H,054C0H,07A01H,075E0H,071A0H + .word 06D80H,06960H,06540H,06120H,05D00H,03C00H,03800H,03400H + .word 03400H,03000H,03000H,02C00H,02C00H,07EA3H,04880H,01800H + +LGMDRED2: + .word 56 + .word 0252BH,00H,07C84H,07C84H,07C84H,07C84H,07C84H,07C84H + .word 07C84H,07C84H,07C84H,07C84H,07C84H,07C84H,07C84H,07C84H + .word 07C84H,07C84H,07C84H,07C84H,07C84H,07C84H,07C84H,07484H + .word 07484H,06C84H,06884H,06484H,06084H,05C84H,05884H,05C84H + .word 06084H,06484H,06884H,06C84H,07084H,07DB0H,07D8FH,07D4DH + .word 07D2CH,07D0BH,07CE9H,07CC8H,078A7H,05800H,05400H,05000H + .word 05000H,04C00H,04C00H,04800H,04800H,07E52H,06422H,05021H + +LGMDSLV: + .word 56 + .word 0252BH,00H,0573AH,0571AH,05B1AH,05EFAH,05EF9H,062F9H + .word 066F9H,06B19H,06F19H,07338H,07758H,06F17H,06B17H,066F7H + .word 05ED6H,05AB6H,056B5H,056D5H,05AF6H,05EF6H,06317H,04EB5H + .word 04E94H,04674H,04253H,03E32H,03A32H,03611H,031F1H,035F1H + .word 039F1H,03DF1H,041F1H,04611H,04A11H,073BFH,06F9FH,06B5DH + .word 0673CH,0631BH,05EF9H,05AD8H,056B7H,035AEH,0318DH,02D8DH + .word 02D6CH,0296CH,0294BH,0254BH,0252AH,07FFFH,04232H,01084H + +LGMDWHT: + .word 56 + .word 00H,00H,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07FFFH,07BFFH,07BDFH,077DFH,077BEH,07FFFH,07FFFH,06318H + +LGMDPURP: + .word 56 + .word 00H,00H,0655FH,0653FH,0693FH,06D1FH,06D1FH,0711FH + .word 0751FH,0793FH,07D3FH,07D5FH,07D7FH,07D3EH,0793EH,0751EH + .word 06CFDH,068DDH,064DCH,064FCH,0691DH,06D1DH,0713EH,05CDCH + .word 05CBBH,0549BH,0507AH,04C59H,04859H,04438H,04018H,04418H + .word 04818H,04C18H,05018H,05438H,05838H,07D7FH,0795EH,0751CH + .word 070FBH,06CDAH,068B8H,06497H,06076H,0400DH,03C0CH,03C0CH + .word 03C0BH,03C0BH,03C0AH,03C0AH,03C09H,07E1FH,04C11H,01H + +LGMDGLDlt: + .word 56 + .word 0252BH,00H,07FA3H,07F83H,07F83H,07F63H,07F63H,07F63H + .word 07F63H,07F83H,07F83H,07FA3H,07FC3H,07F83H,07F83H,07F63H + .word 07F43H,07F23H,07F23H,07F43H,07F63H,07F63H,07F83H,07F23H + .word 07F03H,07EE3H,07EC3H,07EA3H,07AA3H,07683H,07263H,07663H + .word 07A63H,07E63H,07E63H,07E83H,07E83H,07EE0H,07EC0H,07E80H + .word 07E60H,07E40H,07A20H,07600H,071E0H,05964H,05544H,05144H + .word 05124H,04D24H,04D04H,04904H,048E4H,07F80H,05560H,02460H + +LGMDGLDdk: + .word 56 + .word 0252BH,00H,045A0H,04580H,04980H,04D60H,04D60H,05160H + .word 05560H,05980H,05D80H,061A0H,065C0H,05D80H,05980H,05560H + .word 04D40H,04920H,04520H,04540H,04960H,04D60H,05180H,03D20H + .word 03D00H,034E0H,030C0H,02CA0H,028A0H,02480H,02060H,02460H + .word 02860H,02C60H,03060H,03480H,03880H,05DC0H,059A0H,05560H + .word 05140H,04D20H,04900H,044E0H,040C0H,02000H,01C00H,01800H + .word 01800H,01400H,01400H,01000H,01000H,06A60H,02C40H,00H + +SGMD8RED: + .word 12 + .word 0212BH,07CA0H,00H,07D4AH,07D29H,07D08H,07CE7H,07CC6H + .word 07CA5H,07C63H,07C42H,07C00H + +SGMD8YEL: + .word 16 + .word 00H,07F25H,00H,07FE0H,07FC0H,07FA0H,07F80H,07F60H + .word 07F40H,07F20H,07F00H,07EE0H,02E0H,07FFFH,06940H,027BH + +SGMD8BLU: + .word 12 + .word 0212BH,07F25H,00H,03EDFH,03ABEH,036BEH,0327CH,02A5BH + .word 0263AH,02218H,01E18H,01DF8H + +SGMD8VIO: + .word 12 + .word 0212BH,07F25H,00H,0641FH,0601FH,05C1FH,0581FH,0501FH + .word 04C1FH,0481FH,0441FH,0441FH + +SGMD8WHT: + .word 12 + .word 0212BH,07F25H,00H,07FFFH,07BDEH,077BDH,0739CH,06F7BH + .word 06B5AH,06318H,05EF7H,05AD6H + +SGMD8GRY: + .word 12 + .word 0212BH,07F25H,00H,06739H,06318H,05EF7H,05AD6H,056B5H + .word 05294H,04E73H,04A52H,04631H + +SGMD8PLV: + .word 12 + .word 0212BH,07F25H,00H,06EDBH,06ABAH,06699H,06278H,05E57H + .word 05A36H,05615H,051F4H,04DD3H + +SGMD8PLR: + .word 12 + .word 0212BH,07F25H,00H,07A10H,075EFH,071CEH,06DCEH,069ADH + .word 0658CH,0616BH,05D4AH,05929H + +SGMD8PLB: + .word 12 + .word 0212BH,07F25H,00H,05EBFH,05A9EH,0527DH,04E5CH,04A3BH + .word 0461AH,041F9H,03DD8H,039B7H + +SGMD8PLY: + .word 12 + .word 0212BH,07F25H,00H,072EAH,06EC9H,06AA8H,06687H,06266H + .word 05E45H,05A24H,05603H,051E2H + +SGMD8WHT2: + .word 12 + .word 00H,07F25H,00H,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07BDEH,0739CH,06F7BH,06B5AH + +SGMD8RED2: + .word 12 + .word 00H,07CA0H,00H,07CE7H,07CC6H,07CA5H,07C84H,07C63H + .word 07C42H,07C00H,07C00H,07C00H + +SGMD8YEL2: + .word 16 + .word 00H,07FE5H,00H,07FE0H,07FE0H,07FE0H,07FE0H,07FE0H + .word 07FE0H,07FE0H,07FE0H,07FE0H,02E0H,07FFFH,06940H,027BH + +SGMD8GLD: + .word 12 + .word 0212BH,07F25H,00H,07F40H,07F20H,07F20H,07EE0H,07EC0H + .word 07EA0H,07E80H,07E80H,07E60H + +DUXPAL: + .word 11 + .word 00H,07C00H,06739H,01FH,035ADH,077A0H,0741AH,01AH + .word 015H,010H,0BH + +WINFONT: + .word 3 + .word 02D6BH,07FA0H,01020H + +HORZTRN1P: + .word 31 + .word 0318CH,0246FH,0244FH,02890H,028B1H,02CB1H,02891H,030D2H + .word 030B2H,030B1H,030D3H,02850H,02450H,0204FH,02470H,03CF3H + .word 034B2H,034B1H,038B2H,038B1H,03CF2H,038D2H,02C90H,0182EH + .word 03515H,04518H,0142CH,0102BH,0809H,065B7H,07FFFH + +DIAGP: + .word 29 + .word 00H,056B5H,07BDEH,07800H,07640H,077A0H,03C0H,01EH + .word 03A8EH,035EH,035ADH,06F00H,033FH,079F7H,0781EH,0677FH + .word 06F9FH,07FFFH,025DAH,04H,00H,043H,0BF79H,0FCABH + .word 0D306H,012A6H,06FB1H,07C00H,03E0H + +LAVA1_P: + .word 9 + .word 00H,07CA2H,06802H,04865H,04065H,03444H,02C44H,02443H + .word 01C22H + +LAVA2_P: + .word 9 + .word 00H,07881H,06401H,04444H,03C44H,03023H,02823H,02022H + .word 01801H + +LAVA3_P: + .word 9 + .word 00H,074A2H,06002H,04065H,03865H,02C44H,02444H,01C43H + .word 01422H + +LAVA4_P: + .word 9 + .word 00H,070A2H,05C02H,03C65H,03465H,02844H,02044H,01843H + .word 01022H + +LAVA5_P: + .word 9 + .word 00H,06CA2H,05802H,03865H,03065H,02444H,01C44H,01443H + .word 0C22H + +LAVA6_P: + .word 9 + .word 00H,068A2H,05402H,03465H,02C65H,02044H,01844H,01043H + .word 0822H + +LAVA7_P: + .word 9 + .word 00H,064A2H,05002H,03065H,02865H,01C44H,01444H,0C43H + .word 0422H + +LAVA8_P: + .word 9 + .word 00H,060A2H,04C02H,02C65H,02465H,01844H,01044H,0843H + .word 022H + +LAVA9_P: + .word 9 + .word 00H,040A2H,02C02H,0C65H,0465H,044H,044H,043H + .word 022H + +LAVA10_P: + .word 9 + .word 00H,058A2H,04402H,02465H,01C65H,01044H,0844H,043H + .word 022H + +BAMBLU_P: + .word 64 + .word 0E7H,07FFFH,04A52H,04210H,039CEH,0318CH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0842H,07D46H,07126H,06CC2H,06126H + .word 060C4H,06C41H,060A2H,05C41H,05083H,04C41H,03C20H,03020H + .word 01800H,077FAH,0327EH,01996H,0D59H,01153H,0512H,0F1H + .word 0CFH,06DH,07F79H,07F55H,07B13H,07AD1H,0728FH,0766DH + .word 06A4DH,0626BH,065E9H,059C9H,05187H,04D87H,05165H,04585H + .word 04901H,04103H,03903H,034C1H,02840H,01000H,07BEFH,07FC2H + .word 07F82H,07EE1H,07E60H,07DC0H,07D20H,064E0H,04CA0H,04080H + +BAMYLW_P: + .word 64 + .word 0E7H,07FFFH,04A52H,04210H,039CEH,0318CH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0842H,07D46H,07126H,06CC2H,06126H + .word 060C4H,06C41H,060A2H,05C41H,05083H,04C41H,03C20H,03020H + .word 01800H,077F6H,077F1H,07BD0H,07FA7H,07F82H,06B01H,05A60H + .word 045E0H,03560H,07F79H,07F55H,07B13H,07AD1H,0728FH,0766DH + .word 06A4DH,0626BH,065E9H,059C9H,05187H,04D87H,05165H,04585H + .word 04901H,04103H,03903H,034C1H,02840H,01000H,07BEFH,07FC2H + .word 07F82H,07EE1H,07E60H,07DC0H,07D20H,064E0H,04CA0H,04080H + +HRTPNK_P: + .word 64 + .word 00H,07F9AH,07B16H,07EF3H,076B2H,06E90H,06E6FH,06670H + .word 06A4EH,0624EH,0662DH,05E2EH,0660BH,05E0CH,05DEBH,055EDH + .word 051CAH,05586H,04DAAH,04988H,04967H,04126H,03D25H,03904H + .word 034E4H,030A2H,02CA3H,02482H,02441H,01863H,01021H,0800H + .word 07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04E73H,04631H + .word 03DEFH,035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + .word 07F5FH,07EDEH,07E5DH,079DAH,07977H,07135H,06D13H,068F2H + .word 060B1H,05C90H,0586FH,0502DH,0480BH,0400AH,03406H,02C03H + +HRTBLU_P: + .word 64 + .word 00H,07F9AH,07B16H,07EF3H,076B2H,06E90H,06E6FH,06670H + .word 06A4EH,0624EH,0662DH,05E2EH,0660BH,05E0CH,05DEBH,055EDH + .word 051CAH,05586H,04DAAH,04988H,04967H,04126H,03D25H,03904H + .word 034E4H,030A2H,02CA3H,02482H,02441H,01863H,01021H,0800H + .word 07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04E73H,04631H + .word 03DEFH,035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + .word 02FBFH,02B3FH,02ABEH,0263BH,025D8H,01D96H,01974H,01553H + .word 0D12H,08F1H,04D0H,08EH,06CH,04BH,027H,024H + +DNKBLU_P: + .word 64 + .word 00H,07FFFH,06F7BH,05EF7H,04E73H,03DEFH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0421H,07FEBH,07FA5H,07B41H,06EC0H + .word 06260H,05F8FH,0536BH,04748H,03705H,02AE3H,01EC0H,01A80H + .word 01640H,01600H,011C1H,01181H,0D41H,0D01H,07EF9H,07E55H + .word 07DD1H,07CC8H,07400H,06C00H,06400H,05C00H,05400H,04C00H + .word 04400H,03800H,03000H,02021H,067BFH,03AFEH,0227DH,01BBH + .word 0179H,0136H,0F4H,0D2H,08FH,06DH,04BH,028H + .word 027H,0626EH,05A0EH,045A9H,04566H,03926H,01C83H,01841H + +DNKPRP_P: + .word 64 + .word 0318CH,07FFFH,06F7BH,05EF7H,04E73H,03DEFH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0421H,07FEBH,07FA5H,07B41H,06EC0H + .word 06260H,03EFFH,02ABFH,01A7CH,0A39H,0217H,01F4H,01B2H + .word 0170H,012EH,0ECH,04ABH,046AH,0468H,07EF9H,07E55H + .word 07DD1H,07CC8H,07400H,06C00H,06400H,05C00H,05400H,04C00H + .word 04400H,03800H,03000H,02021H,07FBFH,0769DH,06D9BH,064B9H + .word 05C17H,05014H,04812H,04010H,0340DH,02C0BH,02409H,01806H + .word 01004H,0626EH,05A0EH,045A9H,04566H,03926H,01C83H,01841H + +LEXWHT_P: + .word 64 + .word 00H,07FDDH,07FBCH,07F55H,07AF4H,07AB2H,07AB0H,07A6EH + .word 06E4DH,0722CH,06A2DH,0660DH,05E0DH,061EBH,05DC9H,059A9H + .word 05189H,05167H,04546H,04103H,03D04H,03505H,02CC3H,02C81H + .word 02440H,01800H,0400H,0529AH,039DBH,0319AH,02955H,018D1H + .word 084DH,042AH,06D8CH,06D07H,06863H,04C42H,03863H,03800H + .word 02800H,07BDEH,0739CH,06739H,056B5H,04631H,02529H,014A5H + .word 0C63H,07FFFH,077BDH,06F7BH,06739H,05EF7H,05AD6H,05294H + .word 04A52H,04210H,039CEH,0318CH,0294AH,02108H,018C6H,014A5H + +LEXYEL_P: + .word 64 + .word 00H,07FDDH,07FBCH,07F55H,07AF4H,07AB2H,07AB0H,07A6EH + .word 06E4DH,0722CH,06A2DH,0660DH,05E0DH,061EBH,05DC9H,059A9H + .word 05189H,05167H,04546H,04103H,03D04H,03505H,02CC3H,02C81H + .word 02440H,01800H,0400H,0529AH,039DBH,0319AH,02955H,018D1H + .word 084DH,042AH,06D8CH,06D07H,06863H,04C42H,03863H,03800H + .word 02800H,07BDEH,0739CH,06739H,056B5H,04631H,02529H,014A5H + .word 0C63H,07FA0H,07B40H,07300H,06EC0H,06680H,06240H,05A00H + .word 055C0H,04DA0H,04960H,04140H,03D00H,034E0H,030C0H,028A0H + +RZRGRN_P: + .word 64 + .word 00H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 014C5H,010A4H,0C83H,0862H,0821H,00H,07FFEH,07FDAH + .word 07F98H,07F55H,07F54H,07F35H,07F12H,07EF3H,07ED0H,07ED1H + .word 07AD2H,07EAFH,07E8EH,07290H,0766EH,0724EH,06A4EH,06E2DH + .word 0620CH,065EAH,05DEBH,05DCAH,059CAH,055A8H,05188H,04D67H + .word 04125H,04502H,038E3H,03461H,02061H,01C20H,01000H,07FE8H + .word 07FA0H,07EE0H,065E0H,03D80H,0785H,0323H,02A1H,0240H + .word 0200H,01C0H,01A0H,0180H,0160H,0120H,0E0H,0A0H + +RZRPRP_P: + .word 64 + .word 00H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 014C5H,010A4H,0C83H,0862H,0821H,00H,07FFEH,07FDAH + .word 07F98H,07F55H,07F54H,07F35H,07F12H,07EF3H,07ED0H,07ED1H + .word 07AD2H,07EAFH,07E8EH,07290H,0766EH,0724EH,06A4EH,06E2DH + .word 0620CH,065EAH,05DEBH,05DCAH,059CAH,055A8H,05188H,04D67H + .word 04125H,04502H,038E3H,03461H,02061H,01C20H,01000H,07FE8H + .word 07FA0H,07EE0H,065E0H,03D80H,0701CH,06419H,05415H,04812H + .word 04010H,0380EH,0340DH,0300CH,02C0BH,02409H,01C07H,01405H + +SHNRED_P: + .word 63 + .word 00H,07FDDH,07F98H,07F58H,07F34H,07AD1H,07AB0H,0768FH + .word 06E90H,06E6EH,06E4DH,0622CH,05E0CH,059EAH,05DC9H,055CAH + .word 051A8H,04D89H,04D87H,04567H,04925H,04124H,03925H,03D03H + .word 038E2H,038C1H,030E4H,030C3H,03480H,02460H,02420H,01C40H + .word 01400H,0400H,076D6H,0720FH,06DABH,07128H,070C5H,06C42H + .word 06800H,06400H,05800H,05000H,04800H,03800H,02800H,01800H + .word 07BDEH,0739CH,06B5AH,06318H,05AD6H,05294H,04631H,03DEFH + .word 035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + +SHNPRP_P: + .word 63 + .word 00H,07FDDH,07F98H,07F58H,07F34H,07AD1H,07AB0H,0768FH + .word 06E90H,06E6EH,06E4DH,0622CH,05E0CH,059EAH,05DC9H,055CAH + .word 051A8H,04D89H,04D87H,04567H,04925H,04124H,03925H,03D03H + .word 038E2H,038C1H,030E4H,030C3H,03480H,02460H,02420H,01C40H + .word 01400H,0400H,076D6H,07210H,06DABH,064B9H,05C77H,05816H + .word 05415H,04C13H,04410H,03C0EH,0340CH,02409H,01405H,0401H + .word 07BDEH,0739CH,06B5AH,06318H,05AD6H,05294H,04631H,03DEFH + .word 035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + +UNDPRP_P: + .word 64 + .word 00H,07BBBH,07B77H,076F3H,06EB0H,0666FH,05E2DH,051EBH + .word 049CBH,045A9H,04167H,03947H,03D25H,03D03H,03105H,030E3H + .word 028C3H,02C80H,02081H,01861H,01840H,01420H,0C00H,07BDDH + .word 06B39H,06717H,062F6H,05AD5H,05272H,04A51H,0420FH,03DEEH + .word 039CDH,035ACH,0318BH,0316AH,02949H,02107H,01CE6H,014C5H + .word 014A4H,0C83H,0862H,0841H,0441H,0420H,0781EH,0701CH + .word 0681AH,06419H,05C17H,05415H,05014H,04812H,04010H,0380EH + .word 0340DH,02C0BH,02409H,02008H,01806H,01004H,0C03H,0401H + +UNDGRN_P: + .word 64 + .word 00H,07BBBH,07B77H,076F3H,06EB0H,0666FH,05E2DH,051EBH + .word 049CBH,045A9H,04167H,03947H,03D25H,03D03H,03105H,030E3H + .word 028C3H,02C80H,02081H,01861H,01840H,01420H,0C00H,07BDDH + .word 06B39H,06717H,062F6H,05AD5H,05272H,04A51H,0420FH,03DEEH + .word 039CDH,035ACH,0318BH,0316AH,02949H,02107H,01CE6H,014C5H + .word 014A4H,0C83H,0862H,0841H,0441H,0420H,03C0H,0340H + .word 0320H,0300H,02C0H,02A0H,0280H,0240H,0200H,01E0H + .word 01C0H,01A0H,0180H,0140H,0100H,0E0H,0C0H,0A0H + +UNDBLK_P: + .word 64 + .word 00H,07BBBH,07B77H,076F3H,06EB0H,0666FH,05E2DH,051EBH + .word 049CBH,045A9H,04167H,03947H,03D25H,03D03H,03105H,030E3H + .word 028C3H,02C80H,02081H,01861H,01840H,01420H,0C00H,07BDDH + .word 06B39H,06717H,062F6H,05AD5H,05272H,04A51H,0420FH,03DEEH + .word 039CDH,035ACH,0318BH,0316AH,02949H,02107H,01CE6H,014C5H + .word 014A4H,0C83H,0862H,0841H,0441H,0420H,0739CH,06B5AH + .word 06318H,05EF7H,056B5H,05294H,04A52H,04631H,03DEFH,039CEH + .word 0318CH,0294AH,02529H,01CE7H,018C6H,01084H,0C63H,0421H + +UNDRED_P: + .word 64 + .word 00H,07BBBH,07B77H,076F3H,06EB0H,0666FH,05E2DH,051EBH + .word 049CBH,045A9H,04167H,03947H,03D25H,03D03H,03105H,030E3H + .word 028C3H,02C80H,02081H,01861H,01840H,01420H,0C00H,07BDDH + .word 06B39H,06717H,062F6H,05AD5H,05272H,04A51H,0420FH,03DEEH + .word 039CDH,035ACH,0318BH,0316AH,02949H,02107H,01CE6H,014C5H + .word 014A4H,0C83H,0862H,0841H,0441H,0420H,07400H,06C00H + .word 06400H,06000H,05800H,05000H,04C00H,04400H,04000H,03800H + .word 03000H,02C00H,02400H,02000H,01800H,01000H,0C00H,0400H + +UNDGRY_P: + .word 64 + .word 00H,0739CH,06F7BH,06739H,06318H,05EF7H,056B5H,05294H + .word 04A52H,04631H,04210H,039CEH,035ADH,0318CH,0294AH,02529H + .word 01CE7H,018C6H,014A5H,0C63H,0842H,0421H,00H,07BDEH + .word 0739CH,06F7BH,06B5AH,06318H,05EF7H,05AD6H,05294H,04E73H + .word 04A52H,04210H,03DEFH,039CEH,0318CH,02D6BH,0294AH,02108H + .word 01CE7H,018C6H,014A5H,0C63H,0842H,0421H,0739CH,06B5AH + .word 06318H,05EF7H,056B5H,05294H,04A52H,04210H,03DEFH,035ADH + .word 0318CH,0294AH,02529H,01CE7H,014A5H,01084H,0842H,0421H + +UNDNEG_P: + .word 64 + .word 00H,00H,0421H,0842H,0C63H,014A5H,018C6H,01CE7H + .word 02529H,0294AH,0318CH,035ADH,039CEH,04210H,04631H,04A52H + .word 05294H,056B5H,05EF7H,06318H,06739H,06F7BH,0739CH,0421H + .word 0842H,0C63H,014A5H,018C6H,01CE7H,02108H,0294AH,02D6BH + .word 0318CH,039CEH,03DEFH,04210H,04A52H,04E73H,05294H,05AD6H + .word 05EF7H,06318H,06B5AH,06F7BH,0739CH,07BDEH,0421H,0842H + .word 01084H,014A5H,01CE7H,02529H,0294AH,0318CH,035ADH,03DEFH + .word 04210H,04A52H,05294H,056B5H,05EF7H,06318H,06B5AH,0739CH + +YOKRED_P: + .word 63 + .word 00H,0318CH,0294AH,01CE7H,01CC6H,018C6H,018A5H,01484H + .word 01463H,01063H,01042H,0C42H,0842H,0821H,0421H,0400H + .word 07F9AH,07B14H,07EF1H,07ACFH,076B0H,0768EH,06E4BH,06A4DH + .word 0622CH,0660BH,05A0CH,059EAH,051A8H,05187H,04988H,04966H + .word 04124H,04102H,03904H,038E2H,030A1H,03480H,02881H,02840H + .word 02400H,01400H,07E91H,07DAAH,07905H,070C3H,06CE4H,064A2H + .word 06081H,05CA2H,05860H,05840H,05460H,05040H,04C60H,04C40H + .word 04420H,04000H,03C20H,03C00H,03400H,02C00H,02000H + +YOKPRP_P: + .word 63 + .word 00H,0318CH,0294AH,01CE7H,01CC6H,018C6H,018A5H,01484H + .word 01463H,01063H,01042H,0C42H,0842H,0821H,0421H,0400H + .word 07F9AH,07B14H,07EF1H,07ACFH,076B0H,0768EH,06E4BH,06A4DH + .word 0622CH,0660BH,05A0CH,059EAH,051A8H,05187H,04988H,04966H + .word 04124H,04102H,03904H,038E2H,030A1H,03480H,02881H,02840H + .word 02400H,01400H,06E9BH,06DBBH,0691AH,060D8H,05CF7H,054B5H + .word 05094H,04CB3H,04872H,04852H,04471H,04050H,03C6FH,03C4FH + .word 0342DH,0300CH,02C2BH,02C0BH,02409H,01C07H,01004H + +RNDPLT_P: + .word 32 + .word 00H,07F3FH,076BBH,0729AH,06A58H,06637H,06216H,05DF5H + .word 059D4H,055B3H,05192H,04D71H,04950H,0452FH,0410EH,03CEDH + .word 038CCH,034ABH,0308AH,02C69H,02848H,02427H,02006H,01C05H + .word 01403H,00H,07FE0H,07FC0H,07FA0H,07F80H,07F60H,07F40H + +RNDNUM_P: + .word 10 + .word 00H,07FFFH,07BDEH,0739CH,06F7BH,06B5AH,06739H,05EF7H + .word 05AD6H,00H + +COMBO_P: + .word 32 + .word 00H,07FFFH,04E73H,0318CH,00H,07FE0H,07FC0H,07F80H + .word 07F60H,07F40H,07F20H,07EE0H,07EC0H,07BDFH,077DFH,073BFH + .word 06F9FH,06B9FH,0677FH,0637FH,05F5FH,0573FH,0531FH,04B1FH + .word 046FFH,03EDFH,03ABFH,036BFH,0329FH,02E7FH,02A7FH,0265FH + +SUPER_P: + .word 30 + .word 0225FH,0294AH,07FFFH,07BDEH,077BDH,0739CH,06F7BH,06B5AH + .word 06739H,06318H,05EF7H,05AD6H,04E73H,04A52H,04631H,035ADH + .word 0318CH,02D6BH,02529H,02108H,01CE7H,07BBDH,0779CH,0737BH + .word 00H,02C0H,03BCEH,03E0H,0380H,0320H + +PWREMP_P: + .word 28 + .word 00H,07FFFH,07BDEH,077BDH,0739CH,06F7BH,06B5AH,06739H + .word 06318H,05EF7H,05AD6H,056B5H,05294H,04E73H,04A52H,04631H + .word 04210H,03DEFH,039CEH,035ADH,0318CH,02529H,02108H,01CE7H + .word 018C6H,014A5H,01084H,00H + +FGR2YL_P: + .word 30 + .word 02CABH,07FE0H,04A40H,077E0H,06FE0H,063E0H,05BE0H,053C0H + .word 04BC0H,043C0H,037C0H,02FC0H,027C0H,01FC0H,017A0H,0FA0H + .word 07A0H,03A0H,04640H,03E40H,03A40H,03640H,03240H,02A40H + .word 02640H,01E40H,01640H,0E40H,0640H,0240H + +FYL2RD_P: + .word 32 + .word 02CABH,07000H,07020H,07060H,070A0H,070C0H,07500H,07540H + .word 07580H,075C0H,07A00H,07A40H,07A80H,07AC0H,07B20H,07F60H + .word 07FA0H,07FE0H,04400H,04420H,04460H,044A0H,044C0H,04900H + .word 04920H,04940H,04980H,049A0H,049C0H,04A00H,04A20H,04A40H + +DCLIQU3: + .word 24 + .word 00H,03170H,02D4FH,0292EH,0250DH,020ECH,01CCBH,01488H + .word 018AAH,035B1H,018A9H,03DD2H,041F3H,04634H,04E55H,05297H + .word 05EF9H,05AB8H,022H,0444H,0C46H,01D0BH,0671AH,0739CH + +SPARKL_P: + .word 16 + .word 0318CH,07FFFH,07FBFH,077BFH,0779FH,0675FH,05F3FH,0671CH + .word 04EDFH,042BFH,03A7FH,0365FH,02A5FH,0265FH,01E1FH,011FFH + +XPLODE_P: + .word 26 + .word 018C6H,07FE9H,07FE5H,07FE3H,07FA2H,07F42H,07EA1H,07E21H + .word 06E21H,071E1H,069A1H,05D81H,05960H,05140H,04D40H,04920H + .word 04100H,03D00H,038E0H,030C0H,02CC0H,028A0H,02080H,02060H + .word 01C80H,01860H + +BLUEEX_P: + .word 26 + .word 018D5H,07FFFH,06FDFH,067BFH,05F7EH,0535EH,04B3EH,042FEH + .word 03ADEH,02E9DH,0267DH,01E3DH,015FDH,0DBCH,059CH,015CH + .word 013AH,0118H,0117H,0F5H,0D3H,0D1H,0AFH,08EH + .word 08CH,06AH + +BRITEX_P: + .word 26 + .word 02108H,07FF8H,07FD5H,07FD1H,07FCEH,07FCBH,07FC8H,07B67H + .word 07B26H,07AE5H,076A4H,07663H,07622H,075E1H,07180H,07140H + .word 06920H,06120H,05D20H,05520H,04D00H,04500H,03CE0H,034E0H + .word 030C0H,028A0H + +SMOK_P_P: + .word 15 + .word 0318CH,07F7FH,07F1FH,07EBFH,07E5FH,07A1EH,071DCH,0699AH + .word 06158H,05916H,050D4H,04CB3H,04892H,04471H,04050H + +SMOK_W_P: + .word 15 + .word 00H,07FFFH,07FFFH,07FFFH,07BDEH,0739CH,06B5AH,06318H + .word 05AD6H,05294H,04A52H,04631H,04210H,03DEFH,039CEH + +SMOK_B_P: + .word 15 + .word 00H,063FFH,05BBFH,0537FH,04B3FH,042FEH,03ABCH,0327AH + .word 02A38H,021F6H,019B4H,01593H,01172H,0D51H,0930H + +SMOK_G_P: + .word 15 + .word 00H,067F9H,05FF7H,057F5H,04FF3H,047D1H,03F8FH,0374DH + .word 02F0BH,026C9H,01E87H,01A66H,01645H,01224H,0E03H + +SMOK_O_P: + .word 15 + .word 00H,07F5EH,07F59H,07F54H,07F6FH,07F6AH,07F64H,07F60H + .word 07F20H,07EE0H,07EA0H,07E60H,07E20H,07DE0H,07DA0H + +REPR_P: + .word 24 + .word 00H,07FFFH,0779CH,06B39H,062F7H,05694H,04E52H,045EFH + .word 039ADH,0314AH,02508H,01CC6H,01084H,0842H,07D8CH,07108H + .word 064A5H,05C63H,05021H,04800H,03C00H,03400H,02800H,02000H + +SKULL_P: + .word 63 + .word 018C6H,07FFCH,07FFAH,07FD9H,07FB8H,07F97H,07F96H,07F95H + .word 07B96H,07B75H,07753H,07354H,07333H,06F11H,06B33H,06F13H + .word 06F11H,06B13H,06AF1H,066F0H,066D1H,062D1H,062AEH,05EAEH + .word 05AB0H,05E8FH,05E8CH,05A8FH,05A6CH,0566BH,0568EH,05A4DH + .word 05A4CH,0564DH,0522CH,04E2EH,04E4CH,0520BH,04E0BH,049EAH + .word 0460BH,0460AH,041E9H,03DC9H,03DC8H,03DA9H,039A8H,035A9H + .word 03587H,03167H,03166H,02D47H,02D46H,02925H,02505H,02104H + .word 020E5H,020E4H,01CE6H,01CC3H,01883H,014A3H,01082H + +LAMB_P: + .word 32 + .word 018C6H,07FBBH,07B36H,07EF4H,07EB2H,066F4H,07E71H,062D3H + .word 05691H,075ECH,06E0EH,071AAH,065CDH,06D89H,04E2FH,06568H + .word 06547H,05189H,05526H,05903H,04D06H,0358AH,040E5H,03907H + .word 034C4H,034A3H,01CE6H,024C5H,02883H,02062H,01C83H,01441H + +HART_P: + .word 62 + .word 018C6H,07E9FH,07E7FH,07E1EH,07DDCH,07DBCH,07DBBH,07D7AH + .word 07D59H,07D38H,07D16H,07CF6H,078F5H,078B4H,074D4H,074B4H + .word 07493H,06954H,06953H,06933H,06553H,06C92H,06132H,06891H + .word 06871H,05D32H,060F1H,06471H,05D11H,06470H,05CF0H,06070H + .word 0606FH,058B0H,05C6FH,054F0H,058AFH,054CFH,0586FH,0586EH + .word 0548EH,0546EH,0508DH,04CAEH,0506DH,0488DH,04C4CH,0448CH + .word 0484BH,0446CH,0404BH,03C4AH,03849H,03449H,03028H,03027H + .word 02C28H,02C27H,02426H,02025H,01C24H,01403H + +FISH_P: + .word 22 + .word 018C6H,077D9H,06F96H,06753H,05F11H,056CFH,04EACH,0466BH + .word 03E29H,035E7H,031C6H,02984H,02144H,01D24H,018E3H,010C3H + .word 0C82H,06A00H,051A0H,03D40H,028C0H,01CA0H + +BLAD_P: + .word 16 + .word 018C6H,07FFFH,056B5H,05294H,04E73H,04A52H,04631H,04210H + .word 03DEFH,039CEH,035ADH,0318CH,02D6BH,0294AH,02529H,01CE7H + +STAR_P: + .word 22 + .word 018C6H,07F17H,07E51H,07D6BH,07C03H,06801H,05400H,04000H + .word 05F1FH,0465CH,02D9AH,01CF8H,0C76H,0850H,084BH,07FDFH + .word 06F3BH,05ED7H,04E53H,03DCFH,02D4BH,020E8H + +DBELL_P: + .word 16 + .word 018C6H,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04E73H + .word 04A52H,04210H,039CEH,0318CH,0294AH,02108H,018C6H,014A5H + +BAT_P: + .word 14 + .word 018C6H,04E73H,04631H,04210H,03DEFH,035ADH,0318CH,0294AH + .word 02529H,02108H,018C6H,014A5H,0C63H,0842H + +HANDS_P: + .word 64 + .word 040B8H,01D8AH,00H,020H,081H,02A0EH,0125H,0E3H + .word 0D88H,0546H,060H,015CAH,015A9H,0967H,0104H,01E0CH + .word 01DEBH,02E6FH,0262DH,036B1H,02A4EH,0220CH,03EF3H,03290H + .word 01188H,01E0DH,036D3H,03F16H,0966H,019CAH,01167H,01166H + .word 0944H,021EBH,019A8H,0923H,0479BH,0C2H,01186H,032B3H + .word 01EAH,0222FH,0544H,036F5H,04E3H,02E90H,02E92H,0C0H + .word 0264FH,02A71H,080H,0925H,02EB3H,04E2H,0A1H,021EAH + .word 01126H,04568H,03D26H,03505H,02CC4H,024A3H,01C82H,01462H + +TOMB_P: + .word 58 + .word 024C7H,0739CH,06B7AH,06B5AH,06739H,06318H,05EF7H,05AF6H + .word 05AD6H,056B5H,052B4H,05294H,04E93H,04E73H,04A72H,04A52H + .word 04651H,04631H,04230H,04210H,03E0FH,03DEFH,039EEH,039CEH + .word 035CDH,035ADH,031ACH,0318CH,02D8BH,02D6BH,0296AH,0294AH + .word 02549H,02529H,02128H,02108H,01D07H,01CE7H,018E6H,018C6H + .word 014C5H,014A5H,010A4H,01084H,0C83H,0C63H,0862H,0842H + .word 077BDH,0675CH,05B1BH,04ADBH,03E9AH,03239H,02619H,01DD8H + .word 01197H,0957H + +GHOST_P: + .word 23 + .word 0316BH,07BBBH,07BDDH,06B39H,06717H,062F6H,05AD5H,05693H + .word 05272H,04A51H,0420FH,041EEH,03DEEH,039CDH,039ACH,035ACH + .word 0318BH,02D8BH,0316AH,02949H,02107H,01CE6H,018C5H + +DIZZY_P: + .word 16 + .word 0A8H,07FEEH,07FE9H,07FE8H,07FE7H,07FE5H,07F80H,07B60H + .word 07720H,07300H,06EE0H,06AC0H,066A0H,06280H,05A40H,05200H + +BMDZP: + .word 8 + .word 07C1FH,077FAH,07BEFH,07FC2H,07F82H,07EE1H,07E60H,07DC0H + +YKDZP: + .word 15 + .word 07C1FH,07B5BH,076D7H,06E54H,065D0H,05A0CH,05D8CH,05D6DH + .word 0556BH,04D4AH,04929H,04108H,038E7H,030C6H,02CA5H + +UNDZP: + .word 13 + .word 07C1FH,07BBBH,07BDDH,06B39H,06717H,062F6H,05AD5H,05693H + .word 05272H,04A51H,0420FH,039CDH,0318BH + +RAZDIZP: + .word 22 + .word 01931H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 010A4H,00H,0737BH,06B38H,062F6H,05AB4H,05272H,0420EH + .word 039EDH,035ACH,02D8AH,02969H,02128H,0842H + +WHAK_P: + .word 127 + .word 00H,0294AH,00H,07D72H,07CC8H,07C45H,07C07H,07E18H + .word 07CEBH,07CA9H,07CA9H,07CA8H,07C89H,07C87H,07CA9H,07CA8H + .word 07C89H,07CCBH,07C67H,07CA9H,07C69H,07C67H,07CABH,07C69H + .word 07CA9H,07C68H,078ADH,078ABH,07869H,07867H,07803H,06CA9H + .word 06C88H,06C03H,06468H,060A9H,05C68H,05C03H,01463H,0CE5H + .word 014C5H,0C5H,067DFH,0473FH,046FFH,01A3FH,015BFH,02A7FH + .word 036DEH,097EH,036BDH,0155CH,095CH,01A39H,0959H,0938H + .word 0518H,02237H,021F7H,019F7H,01557H,0917H,0517H,08F7H + .word 019D5H,015D5H,019B5H,09B5H,01155H,0955H,0915H,01194H + .word 02554H,014F4H,08D4H,01193H,0D93H,0933H,01513H,01172H + .word 0D72H,0552H,0991H,01151H,0951H,02950H,0930H,0110H + .word 08F0H,04F0H,0890H,094FH,092FH,010FH,0EEH,014CEH + .word 08CEH,08AEH,0AEH,086EH,08CDH,086DH,0112AH,090AH + .word 010AH,0CAH,08AAH,0AAH,0909H,0109H,014C9H,08C9H + .word 0C9H,08A9H,0A9H,069H,086H,065H,06F77H,018C5H + .word 07E9FH,07BFFH,01D8CH,094AH,0C6H,04A5H,063H + +MPLTPRPP: + .word 29 + .word 00H,07F3FH,07F1EH,07EFDH,076BBH,0729AH,06A58H,06637H + .word 06216H,05DF5H,059D4H,055B3H,05192H,04D71H,04950H,0452FH + .word 0410EH,03CEDH,038CCH,034ABH,0308BH,0308AH,02C69H,02848H + .word 02427H,02006H,01C05H,01804H,01403H + +WGSF_W_P: + .word 10 + .word 0318CH,07FFFH,07BDEH,0739CH,06F7BH,06B5AH,06739H,05EF7H + .word 05AD6H,00H + +WSF_W_P: + .word 3 + .word 0318CH,07FFFH,00H + +DPLT_R_P: + .word 31 + .word 00H,07FDEH,07F9CH,07F5AH,07F18H,07ED6H,07E94H,07E52H + .word 07E10H,07DCEH,07DADH,07D6BH,07929H,07908H,074C6H,074A5H + .word 06CA5H,06884H,06084H,05C84H,05863H,05063H,04C42H,04442H + .word 04042H,03C21H,03421H,03021H,02800H,02400H,02000H + +DPLT_B_P: + .word 31 + .word 00H,07BDFH,0739FH,06B7FH,0673FH,05F1FH,056DFH,052BFH + .word 04A9FH,0425FH,03E3FH,0361FH,031DFH,029BFH,0259FH,0217FH + .word 01D5EH,0193CH,0151AH,010F9H,0CD7H,0CB5H,0894H,0892H + .word 0871H,046FH,044EH,04CH,02BH,09H,08H + +WGSF_Y_P: + .word 10 + .word 00H,07FE0H,07FC0H,07F80H,07F60H,07F40H,07F20H,07EE0H + .word 07EC0H,00H + +WGSF_B_P: + .word 10 + .word 00H,07FFFH,077DFH,06B9EH,0637EH,05B5EH,0533EH,046FDH + .word 042DCH,00H + +WBOXREDP: + .word 16 + .word 00H,07EF7H,07E73H,079ADH,0754AH,07108H,05800H,05000H + .word 04400H,03C00H,03400H,02C00H,02400H,01C00H,07FE0H,00H + +WBOXBLUP: + .word 16 + .word 00H,05EFFH,04E7FH,035BEH,0295DH,0211CH,016H,014H + .word 011H,0FH,0DH,0BH,09H,07H,07FE0H,00H + +RECVRB_P: + .word 48 + .word 00H,05EFFH,04E7FH,035BEH,0295DH,0211CH,016H,014H + .word 011H,0FH,0DH,0BH,09H,07H,07FFFH,00H + .word 03A0H,07A0H,0FA0H,017A0H,01FC0H,027C0H,02FC0H,037C0H + .word 043C0H,04BC0H,053C0H,05BE0H,063E0H,06FE0H,077E0H,07FE0H + .word 07FA0H,07F60H,07B20H,07AC0H,07A80H,07A40H,07A00H,075C0H + .word 07580H,07540H,07500H,070C0H,070A0H,07060H,07020H,07000H + +RECVRR_P: + .word 48 + .word 00H,07EF7H,07E73H,079ADH,0754AH,07108H,05800H,05000H + .word 04400H,03C00H,03400H,02C00H,02400H,01C00H,07FFFH,00H + .word 03A0H,07A0H,0FA0H,017A0H,01FC0H,027C0H,02FC0H,037C0H + .word 043C0H,04BC0H,053C0H,05BE0H,063E0H,06FE0H,077E0H,07FE0H + .word 07FA0H,07F60H,07B20H,07AC0H,07A80H,07A40H,07A00H,075C0H + .word 07580H,07540H,07500H,070C0H,070A0H,07060H,07020H,07000H + +RECBLK_P: + .word 3 + .word 02CABH,07FFFH,00H + +WWFICONP: + .word 121 + .word 0318CH,07DC0H,07E80H,07E20H,07EA0H,07ECDH,07F00H,07EA3H + .word 07EA1H,07F51H,07F87H,07FFFH,07FBFH,07DA1H,07FB8H,07FB1H + .word 07FADH,07F40H,07FA8H,07D80H,07F3EH,07F3CH,07F9FH,07D41H + .word 07EDBH,07E2BH,07521H,075C1H,07560H,07718H,0771CH,0773EH + .word 07541H,07561H,07688H,06CE1H,06CA1H,06CC1H,06EDBH,06E08H + .word 06C82H,064C1H,06521H,06461H,06656H,06612H,06568H,05C21H + .word 05C01H,05C61H,05E99H,05D82H,05461H,05613H,04CA1H,04C41H + .word 04DD2H,04E16H,04D69H,04DCBH,04D41H,04DB1H,04801H,04841H + .word 049B1H,04A13H,0416DH,0418FH,041D3H,03421H,0354DH,03591H + .word 03001H,03044H,030EAH,030C8H,0252DH,02001H,02044H,02041H + .word 01067H,01001H,01002H,01044H,0802H,0401H,00H,077BFH + .word 0779FH,0675FH,06F3FH,05F3FH,0671FH,0671CH,0571FH,066DCH + .word 04EDFH,04ADFH,042BFH,03ABFH,02EBFH,03A7FH,0365FH,05659H + .word 02E7FH,02A7FH,02A5FH,0265FH,01E5FH,01E3FH,01E1FH,0163FH + .word 011FFH,05DFH,05BFH,01DFH,019FH,099H,0846H,0403H + .word 01H + +BLOOD_P: + .word 11 + .word 00H,07CA3H,07483H,07083H,06883H,06083H,06083H,05C83H + .word 05063H,04463H,04800H + +BATP: + .word 13 + .word 07C1FH,02949H,01CC6H,014A5H,014A5H,01084H,0C63H,0843H + .word 0842H,0820H,00H,00H,00H + +SWTP: + .word 16 + .word 07C1FH,07FFFH,06B5AH,06739H,05EF7H,05AD6H,056B5H,04E73H + .word 04A52H,04631H,03DEFH,035ADH,02D6BH,0294AH,018C6H,01C83H + +TURKEYP: + .word 116 + .word 07C1FH,07FFFH,07FFEH,07FFBH,07FFAH,07FF9H,07FF8H,07FF6H + .word 07FDBH,07FD9H,07FD7H,07FD5H,07FD3H,07FB8H,07FB7H,07FB5H + .word 07FAFH,07F96H,07F93H,07F73H,07F72H,07F71H,07F56H,07F53H + .word 07F52H,07F4FH,07F2FH,07F15H,07F2CH,07F12H,07710H,07EEEH + .word 07AF0H,076F2H,07EEBH,06EF6H,07AEDH,076EEH,07ECEH,07AD0H + .word 06ECFH,06AD1H,07AACH,076AEH,072AFH,07E6AH,07E67H,06EACH + .word 0766AH,0726EH,07648H,06A6EH,06E6BH,06E6AH,079E6H,0666AH + .word 06A4CH,07209H,06A2AH,06E08H,06A28H,06E06H,05E4DH,0662CH + .word 0662AH,06DC7H,05E2BH,065E8H,06209H,069C5H,065E6H,05A0DH + .word 065C5H,061C7H,05DE8H,055EBH,06185H,05DA6H,059C7H,05D88H + .word 055A8H,05985H,055A6H,05589H,04DABH,05567H,05945H,04DA8H + .word 05565H,04D67H,05145H,04D66H,05105H,04569H,04947H,04568H + .word 04566H,04925H,04905H,04147H,04525H,03D66H,03D49H,03D47H + .word 048C5H,04105H,03D25H,040C5H,03907H,03905H,03526H,038C5H + .word 034E5H,030C5H,02CA5H,024A5H + +FIREBL_P: + .word 21 + .word 0E7H,04A52H,04210H,039CEH,02D6BH,06CC2H,060A2H,05C41H + .word 03020H,01800H,02840H,07BEFH,07FC2H,07F82H,07EE1H,07E60H + .word 07DC0H,07D20H,064E0H,04CA0H,04080H + +WWFLGO_P: + .word 65 + .word 02529H,050A4H,06E23H,069C3H,06524H,064C4H,03065H,06563H + .word 07643H,05565H,076A3H,028CAH,049D1H,04A55H,05A56H,06E8CH + .word 071E3H,044E9H,05A6DH,05A78H,05A9AH,06AB4H,066DAH,066FCH + .word 072A5H,065CBH,06F5EH,0737EH,06E25H,077BFH,0774BH,0735AH + .word 07265H,0556CH,07753H,06B1AH,069C5H,06EA5H,0352DH,05E52H + .word 039B1H,01025H,03927H,018A9H,05AB2H,05E07H,07704H,06F9EH + .word 04A72H,056B6H,061F1H,06EA3H,05F1EH,056DEH,04ABDH,0427CH + .word 071C4H,03E7CH,04EB5H,0467AH,0469AH,0323BH,02E1AH,04EB3H + .word 02DF9H + +ORNGPAL: + .word 64 + .word 00H,0800H,0C20H,01020H,01440H,01840H,01C40H,02060H + .word 02460H,02860H,02880H,02C80H,02C80H,030A0H,030A0H,034A0H + .word 034C0H,038C0H,038C0H,03CE0H,03CE0H,040E0H,04100H,04500H + .word 04900H,04920H,04D20H,04D20H,05140H,05140H,05540H,05560H + .word 05960H,05960H,05D80H,05DA0H,061C1H,061E2H,06603H,06624H + .word 06A45H,06A66H,06E87H,06EA8H,072C9H,072EAH,0770BH,0772CH + .word 07B4DH,07B6EH,07F8FH,07FB0H,0C00H,01840H,02880H,038C0H + .word 04520H,051A0H,05A03H,05120H,05DA0H,06603H,06E45H,07687H + +WHTPAL: + .word 64 + .word 00H,01084H,014A5H,018C6H,01CE7H,01CE8H,02108H,02109H + .word 02529H,0294AH,0294BH,02D6BH,0318CH,0318DH,035ADH,035AEH + .word 039CEH,03DEFH,03DF0H,04210H,04631H,04632H,04A52H,04A53H + .word 04E73H,04E74H,05294H,05295H,056B5H,056B6H,05AD6H,05AD7H + .word 05EF7H,05EF8H,06318H,06319H,06739H,0673AH,06B5AH,06B5BH + .word 06F7BH,06F7CH,0739CH,0739DH,073BDH,077BDH,077BEH,077DEH + .word 07BDEH,07BDFH,07BFFH,07FFFH,014A5H,02108H,0294AH,035ADH + .word 03DEFH,04631H,04E73H,04A52H,05294H,05AD6H,06318H,06B5AH + +LGRYPAL: + .word 64 + .word 00H,0842H,0863H,0C63H,0C64H,0C84H,01084H,01085H + .word 010A5H,014A5H,014A6H,014C6H,018C6H,018C7H,018E7H,01CE7H + .word 01CE8H,01D08H,02108H,02109H,02129H,02529H,0252AH,0254AH + .word 0294AH,0294BH,02D6BH,0318CH,035ADH,039CEH,03DEFH,04210H + .word 04631H,04A52H,04E73H,05294H,056B5H,05AD6H,05EF7H,06318H + .word 06739H,06B5AH,06B5BH,06F7BH,06F7CH,0739CH,0739DH,077BDH + .word 077BEH,07BDEH,07BDFH,07FFFH,01084H,014A5H,02529H,02D6BH + .word 035ADH,03DEFH,04A52H,0318CH,03DEFH,04A52H,05294H,05EF7H + +GREYPAL: + .word 64 + .word 00H,0842H,0863H,0C63H,0C84H,01084H,01085H,010A5H + .word 014A5H,014A6H,014C6H,018C6H,018C7H,018E7H,01CE7H,01CE8H + .word 01D08H,02108H,02109H,02129H,02529H,0252AH,0254AH,0294AH + .word 0294BH,0296BH,02D6BH,02D6CH,02D8CH,0318CH,0318DH,031ADH + .word 035ADH,035AEH,035CEH,039CEH,039CFH,039EFH,03DEFH,04210H + .word 04631H,04A52H,04E73H,04E74H,05294H,056B5H,05AD6H,05EF7H + .word 06318H,06739H,06B5AH,06F7BH,00H,0C63H,014A5H,02108H + .word 02D6BH,03DEFH,04A52H,02D6BH,03DEFH,04A52H,05294H,05AD6H + +scorep: + .word 63 + .word 00H,05H,03E0H,02C0H,01E0H,02D6BH,07C00H,014A5H + .word 00H,07FFFH,07F60H,01B4H,0278H,0237H,0E9H,0216H + .word 01D5H,0573H,0152H,0111H,07FA0H,07F20H,07F00H,07EE0H + .word 07EC0H,07EA0H,0D0H,07FE0H,018C6H,0699H,06DBH,06BAH + .word 0AFBH,0F9EH,0F7EH,0B5DH,0B1CH,0258H,013BFH,01F6H + .word 07F25H,02800H,06B5AH,0BH,06B5FH,07F21H,04A54H,07FA7H + .word 07220H,039D0H,07BDEH,0739CH,06F7BH,06739H,06318H,05EF7H + .word 018D2H,05AD6H,07FFFH,04E73H,03DEFH,0294AH,07FFFH + +shadow_p: + .word 2 + .word 00H,0421H + +jmeter_p: + .word 5 + .word 00H,01FH,07F60H,01E0H,00H + +BARB_P: + .word 15 + .word 00H,05EFFH,04E7FH,035BEH,0295DH,0211CH,016H,014H + .word 011H,0FH,0DH,0BH,09H,07H,0421H + +HEALTH_P: + .word 31 + .word 00H,02C0H,0721H,013A4H,03BCEH,04FF3H,0240H,0779CH + .word 077BDH,03DEFH,05AD6H,056B5H,05EF7H,06318H,02529H,0294AH + .word 04C00H,05C00H,07000H,06400H,05800H,03C00H,03000H,01FH + .word 0300H,01084H,0360H,03A0H,0340H,01E0H,0160H + +TEXT_P: + .word 4 + .word 00H,07FE0H,00H,07FFFH + +BARR_P: + .word 15 + .word 00H,07EF7H,07E73H,079ADH,0754AH,07108H,05800H,05000H + .word 04400H,03C00H,03400H,02C00H,02400H,01C00H,0421H + +DMG_P: + .word 32 + .word 00H,01B4H,0E9H,0278H,0237H,0216H,02108H,05294H + .word 0779CH,077BDH,07BBDH,07BDEH,0739CH,06F7BH,056B5H,05AD6H + .word 05EF7H,06318H,06739H,06B5AH,04E73H,04631H,04210H,02529H + .word 0294AH,01CE7H,018C6H,014A5H,014ACH,07FFFH,07FE0H,00H + +RRMUGA_P: + .word 255 + .word 07C1FH,04593H,03930H,04D95H,0310EH,028CBH,0288BH,028ACH + .word 02CACH,0288CH,02CADH,02C8CH,028ABH,02C8DH,03909H,05DEBH + .word 0660DH,06DEAH,05D67H,05925H,05524H,0722BH,0764CH,07A4CH + .word 07E4CH,07E6CH,07E2BH,07E0AH,079E9H,079EAH,07E0BH,075E9H + .word 069A8H,06987H,065A8H,05546H,048E4H,038A2H,03082H,02061H + .word 01840H,01861H,01862H,01062H,0C41H,01061H,0C61H,01463H + .word 01466H,01C88H,0248BH,024AAH,0248AH,02489H,0288AH,02488H + .word 0208AH,02889H,01886H,018A6H,01084H,04172H,03D31H,0350FH + .word 02CABH,02C8BH,034EAH,04149H,061EDH,04D05H,044E3H,061EAH + .word 06E2CH,07A8FH,07A6CH,07E4BH,075EAH,071A9H,05DA8H,05526H + .word 02062H,01841H,01441H,0C42H,0C62H,01042H,01063H,01065H + .word 01887H,02069H,02089H,020A9H,01485H,04152H,024CAH,0288DH + .word 028ADH,02CECH,03D27H,04967H,03061H,038C3H,02C81H,038E5H + .word 04D68H,06E4DH,0720AH,07209H,07A2BH,07A0AH,07E2AH,0760AH + .word 06DC9H,06587H,06167H,05D68H,02862H,01C41H,01462H,018A4H + .word 01847H,05196H,02CC5H,034E4H,030C3H,01C62H,03527H,04547H + .word 051A9H,06E0AH,07A2AH,07A0BH,02C82H,01482H,01082H,01483H + .word 01446H,01C68H,028AAH,02CAEH,030EDH,020A4H,03105H,0762BH + .word 0720BH,02861H,030CDH,024ABH,02088H,01C61H,020C5H,02CE6H + .word 02CC3H,04D88H,059C9H,065C9H,01C40H,01440H,01041H,0308DH + .word 024A3H,01883H,020E6H,02906H,03968H,03925H,05987H,04D45H + .word 04504H,01045H,02087H,01442H,01461H,0C21H,01044H,02C8EH + .word 01863H,01866H,01465H,02C89H,030ACH,02068H,030ADH,0C40H + .word 02469H,014A3H,0820H,0C20H,0841H,0246AH,04573H,030AEH + .word 0C24H,01CC5H,04974H,0822H,0821H,049B4H,01C63H,0C43H + .word 028A9H,02869H,01C66H,04DB5H,02467H,01846H,0308CH,030ABH + .word 0800H,01043H,0286AH,01C67H,01022H,01443H,02468H,01C87H + .word 030CCH,01822H,01484H,01C46H,02888H,02C8AH,024A9H,030ECH + .word 02CAFH,02C8FH,0401H,0308EH,0402H,02867H,020A8H,0312EH + .word 030AFH,030CFH,04DD5H,059D6H,05A16H,034AEH,05E79H,04171H + .word 05A77H,062DBH,0629BH,05A39H,059F9H,059D8H,055D7H,055B6H + .word 051B6H,03D71H,059F8H,055B8H,051B7H,0627BH,03950H + +RRMUGB_P: + .word 253 + .word 07C1FH,04593H,03D31H,0310EH,020A9H,02489H,02088H,02067H + .word 02488H,024AAH,028ACH,028ABH,024ABH,0288BH,024ACH,0248BH + .word 028ADH,038ECH,04D88H,055AAH,05DAAH,065A8H,069A9H,06947H + .word 079EBH,07DEBH,07DCAH,079C9H,079A8H,075A9H,079EAH,07A0BH + .word 0760AH,075CAH,07E4EH,07E8FH,07E91H,07E6FH,07E2DH,07E0CH + .word 079EDH,075EBH,071CAH,06DA9H,04172H,030EDH,01C88H,02086H + .word 0248AH,0288CH,04969H,059CBH,061CBH,06167H,07DEAH,075C9H + .word 07A2CH,07E4DH,07E2CH,07A0CH,079CAH,03D71H,0350FH,02089H + .word 028AAH,04129H,05189H,06DEAH,07187H,07E6EH,024CAH,03929H + .word 06567H,075EAH,06D67H,071A8H,06DA8H,071A9H,07E0BH,07E6DH + .word 07E4CH,03529H,04547H,05D88H,065AAH,071EBH,06D87H,07A4DH + .word 07E0DH,03930H,02D05H,075A8H,07E2BH,07A2BH,07A4CH,07DE9H + .word 07E70H,07E90H,07E4FH,028CBH,0288AH,02CC5H,030E3H,04569H + .word 06EB3H,07716H,0560FH,04D8AH,055CCH,0766EH,071C8H,06DA7H + .word 07A0AH,075E9H,0762CH,0760BH,07A6EH,07A4EH,04D95H,028A9H + .word 02CC6H,034E5H,02883H,03906H,06EF5H,03527H,06E6FH,071E9H + .word 071C9H,07A90H,06E0BH,04974H,024A8H,03104H,02CE3H,03D48H + .word 045ABH,024A3H,024A2H,051CBH,07EB1H,06DC9H,069A8H,0762FH + .word 06E2FH,061ECH,05DCCH,02469H,02889H,02888H,024A5H,06A0CH + .word 06146H,05D45H,06587H,05525H,04CC3H,07691H,0620EH,038E5H + .word 034A4H,03D05H,04526H,05567H,05D67H,04573H,02CECH,02887H + .word 02482H,02083H,01C62H,0660CH,06145H,06125H,05D25H,044C3H + .word 03882H,03461H,02441H,01C41H,04D26H,02C8BH,02464H,02483H + .word 04D47H,069A7H,05903H,054E3H,044A3H,03062H,028A4H,04505H + .word 06967H,058E4H,04CA2H,04481H,03861H,02C62H,02463H,04905H + .word 02CABH,02C8CH,02CADH,034E8H,06946H,06526H,02C40H,03D2AH + .word 05987H,06D66H,06D46H,04152H,0288DH,07188H,07167H,03082H + .word 02CACH,07588H,06566H,044E5H,05568H,02C8DH,0454AH,0720BH + .word 069ECH,07A6FH,02C8AH,0412BH,079E9H,06966H,07EF2H,07EB2H + .word 07AB1H,07A4FH,07E09H,07F14H,06987H,0660BH,07E0AH,07ED1H + .word 07EB0H,06D88H,075C8H,071EAH,06988H,02869H,030CAH,04D6AH + .word 06DAAH,07DC9H,06965H,07E4BH,07E6CH + +RRMUGC_P: + .word 253 + .word 07C1FH,06D89H,06988H,06147H,06568H,05D68H,05D47H,05947H + .word 05125H,04905H,040C4H,038A4H,030A4H,02CA4H,030E5H,03906H + .word 04527H,055AAH,06A2DH,065CAH,04D25H,048E4H,05126H,065ABH + .word 0762CH,07E6FH,07E8FH,0764DH,05924H,02C00H,02800H,02000H + .word 01820H,01441H,01462H,01062H,01483H,01045H,01446H,01C68H + .word 0248AH,02489H,024AAH,020A9H,01886H,018A6H,01084H,075A9H + .word 06DA8H,06567H,06167H,05D46H,04D05H,044C4H,03CC4H,028A3H + .word 03D07H,05189H,065ECH,05D89H,07E4DH,05903H,06DEAH,03861H + .word 01C20H,01842H,01461H,01463H,018A4H,01847H,02069H,075C9H + .word 06DA9H,06588H,05D67H,05546H,03CC3H,034A3H,02CA3H,03506H + .word 04948H,0598AH,05DCBH,04906H,06DECH,0768FH,0760BH,048C4H + .word 02400H,01466H,024CAH,028AAH,024ABH,0288AH,079EBH,075CAH + .word 071CAH,069A9H,05967H,03482H,034E6H,03907H,03D06H,05169H + .word 05147H,044E4H,044E5H,05969H,0764EH,07A2CH,03000H,01821H + .word 01442H,01065H,028CBH,024A9H,02088H,075EAH,06187H,04904H + .word 03CA3H,03481H,02882H,02483H,04D67H,03461H,0248BH,02087H + .word 06188H,05547H,02861H,02041H,01841H,01862H,020A4H,028E5H + .word 05168H,044A3H,07AF2H,06987H,04CC4H,01C21H,02488H,07A0BH + .word 071EAH,06DC9H,01C41H,03D27H,04568H,06166H,05D45H,01883H + .word 02889H,028ABH,01C88H,071EBH,075EBH,05946H,03CA2H,01C40H + .word 02CE6H,055CAH,04503H,05568H,06A2EH,01861H,01887H,02089H + .word 01C87H,01866H,065A8H,04D04H,040C3H,02461H,03948H,0498AH + .word 03CA1H,05148H,05146H,01840H,02086H,06189H,065A9H,061A8H + .word 05D87H,024C4H,04D89H,040E4H,02C20H,02068H,02467H,02487H + .word 05968H,05966H,05525H,02020H,01041H,01042H,051EDH,06A6FH + .word 05567H,05107H,0288CH,03882H,0C21H,0C42H,049CCH,05E2DH + .word 0620BH,01021H,03926H,02460H,01440H,05167H,034A2H,028A9H + .word 03082H,01061H,038C4H,02C62H,02441H,0C41H,05926H,05105H + .word 038A3H,05526H,05505H,03083H,02883H,0288BH,03483H,01C62H + .word 01063H,0208AH,030A3H,01C61H,044C5H,02061H,048E5H,01863H + .word 01C42H,05106H,02C82H,01044H,05D66H,02462H,0C61H,06146H + .word 02468H,02888H,0C62H,01083H,069A8H + +RRMUGD_P: + .word 253 + .word 07C1FH,03D71H,03930H,0310EH,024ABH,0248AH,024AAH,020AAH + .word 024A9H,020A9H,02089H,02088H,02488H,02087H,01C85H,01C87H + .word 01C66H,02CE7H,03D47H,04547H,04569H,04948H,05569H,05548H + .word 05127H,05528H,04907H,04D28H,04D49H,04D69H,04527H,038E5H + .word 04106H,03D06H,034C5H,02883H,02083H,02084H,01862H,04172H + .word 030EDH,0208AH,01C88H,03106H,04968H,04D48H,05989H,05DAAH + .word 061AAH,05549H,04D6AH,051AAH,04D89H,04528H,04127H,04107H + .word 03CE6H,02CC4H,02489H,020A8H,01C65H,069EDH,05148H,05149H + .word 04DAAH,055CCH,04105H,030A4H,02CA4H,03950H,0350FH,04593H + .word 0248BH,020C5H,04969H,04D27H,065CBH,065CCH,05969H,055CBH + .word 059CAH,059ECH,05189H,04126H,034E6H,028A9H,02065H,02067H + .word 03D48H,04D68H,05D89H,0596AH,0556AH,05169H,03D05H,024ACH + .word 03D4BH,0416AH,03108H,04589H,05968H,04D26H,05568H,05168H + .word 04927H,0352AH,0664EH,0458BH,04D47H,04526H,028AAH,02CE9H + .word 04DACH,04506H,05547H,05147H,0288BH,0392BH,030E8H,05947H + .word 05926H,05105H,05D68H,06189H,05D47H,04D25H,04926H,040E5H + .word 04D45H,05988H,06DAAH,071AAH,075ECH,06568H,06D69H,06589H + .word 069A9H,06588H,065A9H,05167H,061C9H,06989H,079EDH,075CBH + .word 06D89H,06DCAH,05D67H,05546H,05567H,0716AH,07169H,06D6AH + .word 075ACH,06DA9H,06988H,05D46H,01C68H,028CBH,03929H,048E6H + .word 04D07H,05D69H,0656BH,06129H,07A0DH,06167H,03D31H,038A4H + .word 03483H,06E72H,07717H,072B3H,06250H,06230H,04949H,07230H + .word 05D88H,061A9H,05DA9H,04906H,048E4H,03883H,05A0DH,02D05H + .word 05166H,054C4H,048A4H,044A4H,06A0DH,059A9H,028ABH,06188H + .word 05CE5H,05928H,0662DH,06126H,05967H,05146H,0288AH,05948H + .word 04D06H,061A8H,05946H,044C3H,05DA8H,04481H,040A3H,05D87H + .word 028ACH,05DC9H,03462H,03461H,024CAH,02D06H,05D25H,04CC3H + .word 03C40H,02C20H,02863H,02063H,02CECH,06D88H,06947H,048A2H + .word 04062H,03020H,0722EH,0762DH,065A8H,06DA8H,07E4FH,075A9H + .word 06D87H,06926H,04860H,06187H,06DC9H,07ED1H,079EAH,075C9H + .word 06504H,054A2H,079C9H,058E3H,07E2EH,049B4H,07E91H,020ABH + .word 07A0BH,079A8H,07EF4H,07EB2H,069A8H + +RRMUGE_P: + .word 251 + .word 07C1FH,01862H,01463H,01462H,01883H,028C5H,04569H,04527H + .word 040E5H,05147H,06A2EH,07A90H,07A6EH,075EBH,050E4H,02800H + .word 02861H,03D48H,051ECH,04587H,03D05H,03D45H,034C3H,02883H + .word 02CE5H,02083H,01841H,02CE4H,0560CH,0668DH,06A8CH,0728AH + .word 06E68H,06E47H,059E7H,051C6H,045A9H,03D89H,03569H,02928H + .word 04630H,02D2CH,01C88H,01CA8H,020A8H,02089H,01887H,018A6H + .word 01485H,01084H,01C83H,03526H,04948H,04906H,04D05H,065CBH + .word 0762CH,06DAAH,040A3H,03400H,03062H,02CA4H,03D07H,03505H + .word 024A1H,02062H,01CA3H,01C82H,04D89H,04987H,055A7H,04D84H + .word 034E1H,02907H,01CA4H,02D4AH,02088H,01886H,028E6H,04D8AH + .word 04D69H,044E6H,04CE5H,05968H,0724FH,0762EH,06DEBH,05125H + .word 03820H,02041H,01461H,02506H,02D05H,04105H,020A9H,024CAH + .word 028CBH,0356BH,02087H,04969H,04D27H,05126H,06587H,050E3H + .word 03860H,02420H,01441H,01061H,01062H,01442H,01041H,03547H + .word 028E4H,024C2H,034A4H,02C63H,024C4H,0416AH,04927H,04D26H + .word 061A9H,069A9H,05947H,04CC2H,038A2H,028E5H,024A4H,01466H + .word 01C87H,018A8H,038C5H,038E6H,034A3H,04926H,04D48H,05568H + .word 06DECH,06167H,03C81H,03061H,01CA2H,01065H,01CA9H,04106H + .word 02C84H,03D28H,05589H,06E0BH,01820H,04126H,03CE5H,038C4H + .word 02CC5H,028A4H,03CE4H,06DC9H,065C9H,01042H,024E6H,02884H + .word 028A5H,038E5H,05DECH,05988H,05145H,01483H,01044H,01045H + .word 0C24H,0C23H,01847H,034C4H,030C5H,05DCBH,05DA9H,01063H + .word 02069H,01888H,028C4H,065ECH,05546H,01C89H,01CA7H,04547H + .word 03CC4H,0558AH,06A0CH,05567H,03081H,01C68H,0248AH,04528H + .word 02CC4H,04506H,044C3H,024A8H,04D68H,04127H,04947H,04D47H + .word 04946H,034E5H,030C4H,01C86H,05DAAH,04D67H,04526H,030E5H + .word 034C5H,05D89H,05566H,02488H,05167H,034E6H,02489H,0208AH + .word 04D46H,061AAH,05D88H,024A9H,020AAH,0248BH,024AAH,05146H + .word 038A4H,059A8H,038E4H,04D6AH,0660DH,07F36H,07736H,03CC3H + .word 04968H,0768FH,07EF1H,0720BH,024ABH,0764DH,07FDBH,06ED2H + .word 020ABH,07E4DH,07A2CH,07F35H,07691H,04081H,07EAFH,05924H + .word 05547H,05989H,07AB2H + +RRMUGF_P: + .word 253 + .word 07C1FH,024CAH,01465H,01485H,020C5H,01CA4H,01CC4H,02105H + .word 020A4H,01480H,01483H,01484H,0352EH,020A9H,014A5H,02527H + .word 024C6H,02505H,02525H,020A1H,02483H,03950H,030EDH,02528H + .word 0310EH,028CBH,01886H,018A6H,01866H,01CC6H,02D6AH,02907H + .word 0316BH,02D48H,028C7H,035A9H,035AAH,03587H,03566H,03105H + .word 030E1H,034E5H,0354FH,0350FH,018A7H,01887H,05E4FH,045AAH + .word 045ECH,0524FH,04DEBH,05EAFH,05EEEH,05E49H,05E27H,05E28H + .word 05E6AH,05ECBH,05E89H,059E6H,04D60H,02CECH,0208AH,01CAAH + .word 020AAH,01C89H,01C88H,01C87H,02088H,01C67H,01C86H,01CA9H + .word 02089H,0396CH,05E2FH,06EF5H,06AB3H,0624FH,072F2H,07FB4H + .word 07FAFH,07F0AH,07EE9H,07EC9H,07EA8H,07ECAH,07F2DH,07F2CH + .word 07F0BH,07F6FH,07FD4H,07FD3H,07FCFH,07F6BH,061A0H,01CA8H + .word 02068H,06691H,04DCCH,07336H,07335H,07FD6H,07F09H,07EEBH + .word 07F4DH,07EEAH,07FF1H,07F8DH,07F8BH,061C0H,01C68H,01C66H + .word 01867H,02087H,0354CH,062D4H,0562FH,06F37H,05E70H,04DA8H + .word 07F53H,07F2BH,07244H,05E91H,04589H,04DABH,06F57H,07B75H + .word 07FB3H,076E9H,0312AH,04548H,07358H,05E6DH,066AFH,07EC8H + .word 07F0CH,07B2AH,020A8H,02086H,055EDH,07311H,07F2AH,07F91H + .word 05E2DH,07332H,05A2BH,07F07H,0560CH,06270H,07EE8H,07377H + .word 06AAFH,02067H,07799H,066B3H,07B78H,06AB1H,051EBH,06ECFH + .word 0396BH,06EF1H,020A7H,05E72H,0418DH,07B9BH,02489H,049A7H + .word 07773H,024AAH,01888H,03D6EH,072F6H,072F5H,07B32H,020ABH + .word 045AEH,04586H,072F0H,07EA7H,024A9H,0248AH,02488H,0352CH + .word 05A30H,03D65H,07795H,066D6H,01CA7H,024ABH,05E93H,0560AH + .word 03D49H,04147H,04545H,024A8H,028C9H,03928H,03D05H,038E2H + .word 030C3H,04526H,05189H,059CBH,028A3H,03906H,04D26H,05168H + .word 05DECH,04125H,020A6H,02CC5H,028A4H,05547H,061ECH,055AAH + .word 038E5H,04D05H,05126H,05D8AH,03CE6H,05528H,034E6H,05948H + .word 01883H,01862H,05947H,04947H,02062H,04D68H,01463H,01462H + .word 04528H,024A7H,01461H,0248BH,03506H,03D71H,02D05H,01442H + .word 03930H,034A4H,03947H,040E5H,03083H,04172H,048E5H,048E6H + .word 044E6H,04593H,028ABH,01C65H,04D28H + +RRMUGG_P: + .word 255 + .word 07C1FH,01484H,01884H,020A4H,01C84H,01CA4H,030E6H,03506H + .word 03547H,04963H,05167H,05569H,05968H,05D89H,05DAAH,05DEBH + .word 065A2H,069C4H,06DC7H,06DA8H,075EAH,079EBH,07A0BH,07E0BH + .word 07DEBH,07E2CH,07E4CH,07E6DH,07E8EH,061A1H,065A5H,075CAH + .word 07E2BH,07E4DH,07E8DH,05D81H,06587H,06DC8H,071CAH,075CBH + .word 07E6CH,05941H,06987H,06A02H,072A7H,071C9H,07DCBH,076EBH + .word 065C2H,079CAH,07E4BH,07F4CH,06E46H,071C8H,071A9H,079EAH + .word 07EC9H,07F2CH,06206H,075C9H,079CBH,07F0AH,07F2BH,071E8H + .word 07DECH,07DEAH,07E0AH,07F0BH,07EEAH,06E04H,06DC2H,071E7H + .word 075E9H,07E2AH,079C9H,07268H,07B0BH,071E5H,07267H,0760BH + .word 07A0AH,07EA9H,05522H,07207H,07EA7H,07689H,05563H,065E5H + .word 05963H,075C8H,04903H,04D01H,07FD6H,07F4EH,07EE7H,07E65H + .word 076AAH,04CE3H,04480H,072D0H,07BB7H,07F2EH,076ECH,044C2H + .word 03840H,048E1H,05965H,06167H,06188H,038E3H,04525H,04DA9H + .word 055E9H,04964H,07AEEH,03820H,03880H,04145H,02CA1H,04547H + .word 034C3H,06E6DH,07EEDH,07F2AH,0772CH,03440H,061C9H,06DCAH + .word 04947H,03081H,03D25H,03CE5H,06A8FH,07F4BH,07F09H,044E5H + .word 071E9H,0560BH,03D23H,03D26H,05E4CH,07F73H,05584H,05589H + .word 06A0BH,04D68H,06F14H,07FD8H,065EDH,02461H,028A2H,066D1H + .word 05982H,038A3H,02861H,034C4H,034A3H,038E6H,06270H,07B31H + .word 050C0H,04060H,06169H,065AAH,04D25H,0562FH,05A0CH,06ED1H + .word 06E6AH,0770BH,05920H,05504H,04DC9H,051A7H,05A2AH,076EFH + .word 07FACH,07B2AH,05D67H,028A4H,01841H,01862H,02483H,051EBH + .word 07F71H,07F8FH,05926H,05527H,04D26H,02CC5H,02462H,04569H + .word 07AF1H,07F91H,07FCFH,07FABH,03020H,06DAAH,0560DH,07FF0H + .word 07F69H,07F07H,05984H,0556AH,07F95H,0772FH,07F89H,04928H + .word 055AAH,065CBH,0624DH,07F75H,076C9H,07F47H,071EAH,02420H + .word 03505H,02CE3H,04DCAH,030A4H,04127H,06A0DH,071EBH,05987H + .word 02481H,0666EH,06E8DH,06A27H,07FD3H,07F05H,01CA3H,0762CH + .word 05925H,04CE4H,02C00H,05EB2H,06A90H,07731H,06628H,06EABH + .word 07793H,07BD4H,01463H,0724FH,02863H,05609H,06712H,01041H + .word 02CE6H,07A90H,07A4EH,0498AH,03D67H,05E6EH,07353H + +RRMUGH_P: + .word 252 + .word 07C1FH,01884H,01484H,01084H,01C84H,01CA4H,024A5H,03526H + .word 03546H,03506H,030E6H,030C6H,030C5H,024C6H,02084H,05DEBH + .word 05DC9H,05DA9H,05D87H,05D66H,05966H,05967H,05566H,05146H + .word 04946H,03D06H,034E6H,024A4H,07E8DH,07E6DH,07E4CH,07E6CH + .word 07E4BH,07E2BH,07E09H,07DE9H,079E9H,079C9H,075C9H,075C8H + .word 06DA7H,06D86H,06986H,07E2CH,07E0AH,079C8H,071C7H,07E2AH + .word 07A09H,079E8H,075E8H,071C8H,06DA6H,07E29H,071A7H,06987H + .word 071A8H,06586H,069A7H,075E7H,075C7H,07E6BH,07E4AH,06566H + .word 05946H,075E9H,05945H,020A5H,06565H,020A4H,06D87H,05546H + .word 06166H,07A0AH,06966H,06187H,06DA8H,06587H,06588H,05567H + .word 020C5H,071C9H,065A7H,065C9H,05188H,02506H,06988H,069A8H + .word 065CAH,0660CH,059ECH,03507H,01CC4H,06DC8H,069C9H,069EAH + .word 06A4FH,0562DH,02CE6H,075EAH,06DA9H,06DC9H,06E2DH,0624EH + .word 055CAH,04567H,02CE5H,06E2EH,07270H,07690H,04945H,04505H + .word 071E9H,069C8H,0724FH,06A70H,04D25H,04925H,044E4H,04D05H + .word 05125H,05D67H,05145H,04D04H,02CE3H,05925H,05525H,05124H + .word 04CE3H,01883H,01083H,05D46H,05104H,04CE4H,06167H,05524H + .word 03CC4H,01482H,01061H,06567H,05504H,038A2H,01081H,06DE9H + .word 06D88H,050E4H,044A3H,044C3H,03481H,01861H,01062H,071A9H + .word 05105H,03881H,02C61H,02460H,01C62H,04906H,05568H,034A2H + .word 05147H,06146H,01483H,034C3H,04905H,02862H,02062H,020A3H + .word 03060H,02882H,01C21H,014A5H,01485H,02880H,038E3H,05E0AH + .word 0666DH,04DA6H,02481H,01CC7H,02509H,014C6H,07F0AH,07288H + .word 061E4H,06E4AH,076EEH,07B2FH,07F6FH,07FB0H,0730DH,01C80H + .word 0358EH,04631H,0296BH,07EC8H,07EEAH,07F4DH,07F8FH,07F8DH + .word 05E86H,02D05H,04E75H,04654H,014A6H,07F09H,07F6BH,06AA9H + .word 04DC7H,045A9H,0398AH,0358BH,039CFH,056B7H,056D7H,035D0H + .word 07F07H,07EA7H,05A06H,04DC8H,05670H,04632H,04E95H,03E12H + .word 039B0H,01C88H,018A6H,07EE6H,07EA8H,076EBH,06669H,05E6DH + .word 04A10H,02D8DH,03DF0H,05EF9H,02088H,07EA5H,072ECH,05E28H + .word 0522FH,041EEH,0318DH,04653H,056D8H,07F92H,07A65H,07666H + .word 07AAAH,0666AH,04A0FH,04A53H + +UNMUGA_P: + .word 99 + .word 07C1FH,05EF7H,05294H,056B5H,06318H,04A52H,039ADH,0358DH + .word 0318CH,0358CH,0316CH,0356CH,014A5H,00H,0400H,0420H + .word 035ADH,0401H,05AD6H,039CEH,0294AH,0316BH,02D6BH,018A6H + .word 02D6CH,0318BH,0822H,020E8H,05AB6H,04E73H,0356BH,018A5H + .word 01484H,020H,05694H,05AB5H,04E53H,039AEH,0314BH,02D4BH + .word 0C63H,04E52H,0316AH,02D4AH,0C42H,05695H,02D2AH,02929H + .word 0821H,062F7H,0292AH,02D29H,024E7H,04A32H,020E7H,0421H + .word 02908H,02909H,018A4H,062F8H,02508H,0314AH,04A31H,02928H + .word 02D49H,02509H,06718H,024E8H,01042H,04631H,01CC7H,02108H + .word 018C6H,0842H,020C7H,01043H,0C43H,05ED6H,05273H,01CC6H + .word 020C6H,06F5AH,041EFH,01063H,06739H,06F7BH,04611H,04A11H + .word 04210H,077BDH,06B5AH,06F5BH,06B39H,06719H,05ED7H,05EB6H + .word 05A95H,05674H,03DEFH + +UNMUGB_P: + .word 123 + .word 07C1FH,0421H,0420H,0821H,0841H,0C41H,01883H,01441H + .word 01861H,01862H,0C20H,0820H,0400H,00H,01062H,01083H + .word 0358BH,05293H,04A4FH,04A51H,02D6BH,0294AH,02529H,02108H + .word 01082H,018C5H,02948H,0420EH,05EF7H,05294H,0C83H,014A5H + .word 05F17H,06339H,0441H,039CEH,05AD6H,05F18H,020H,02528H + .word 056D5H,06739H,014A4H,05EF6H,05ED6H,04210H,056B4H,06738H + .word 0840H,0C42H,01CE6H,05AB5H,06319H,06718H,035ADH,018A5H + .word 056B5H,06719H,02D6AH,06318H,020E7H,04E73H,0842H,0C62H + .word 06338H,062F8H,05EF8H,0861H,0C61H,0862H,039EDH,06F9AH + .word 077BBH,06B59H,06317H,062F7H,0C63H,02107H,01483H,014C4H + .word 05AD3H,01484H,01084H,02505H,041EDH,05ED5H,020E5H,0316BH + .word 04A2FH,05AB3H,05273H,03E0FH,03E10H,035CEH,02D6CH,02D4AH + .word 05AD7H,05695H,039CFH,0296BH,02508H,02928H,052B4H,041F0H + .word 05AF6H,05ED7H,05AB6H,041EFH,04A32H,020E8H,05AF7H,03DCEH + .word 02D8BH,04632H,056D6H,035CDH,06F7BH,06F5AH,06B5AH,06F5BH + .word 03DEFH,0673AH,06B3AH + +UNMUGC_P: + .word 255 + .word 07C1FH,06318H,056B5H,05294H,04631H,04A32H,04A52H,04E73H + .word 04630H,04610H,04210H,04A31H,041EFH,03DCEH,0318BH,01CC6H + .word 0841H,014A5H,0C62H,0421H,0821H,00H,0420H,0C42H + .word 01462H,020C5H,03107H,045AAH,04589H,034C2H,04546H,04D87H + .word 05187H,04D45H,055A7H,059C8H,06209H,05DE8H,04611H,04A11H + .word 0420FH,0358CH,02528H,01084H,02928H,01484H,0400H,0C41H + .word 018A3H,02927H,045CCH,03D24H,04D66H,04D89H,051A7H,051A8H + .word 05186H,04211H,035ADH,0316BH,03DEEH,020E6H,01884H,0820H + .word 01063H,018A4H,0C21H,0C00H,01461H,028E6H,045CBH,04DCBH + .word 055C9H,059C9H,055A8H,04632H,041F0H,039ADH,02D4AH,02D49H + .word 018A5H,0842H,01CC5H,03548H,03D69H,04969H,051CBH,059EBH + .word 05DEAH,0620AH,061EAH,05DC9H,059A8H,06739H,04652H,04A53H + .word 031ADH,0294AH,02D6AH,01CE6H,01483H,0398AH,041AAH,05E0CH + .word 061EBH,0660BH,06A4DH,06A2CH,06A0BH,061E9H,05DE9H,05EF8H + .word 05295H,056B4H,06738H,04E74H,03DF0H,02D6BH,02507H,05A0CH + .word 06A6FH,0666FH,0620BH,06A0AH,062F7H,05694H,06718H,05273H + .word 03DEFH,039CEH,01062H,051ECH,05E2DH,072B2H,06E91H,0662CH + .word 06E0BH,065EAH,05EF7H,04E52H,01083H,018C6H,041ABH,04DECH + .word 0622DH,06A2BH,06E2BH,03DCFH,035AEH,0C63H,055EAH,059CAH + .word 05588H,0660AH,05693H,04E72H,041EEH,04A51H,039AEH,03549H + .word 055CAH,055A9H,05188H,05DEBH,05DCAH,05AD6H,02947H,03169H + .word 039CCH,04E53H,01CC7H,059EAH,0660CH,0662BH,0420EH,0462FH + .word 03D89H,055EBH,0620CH,0316AH,014A3H,03149H,051EBH,0560CH + .word 03569H,05A2DH,01CA4H,055AAH,05587H,059CBH,03148H,05E2CH + .word 0622CH,04504H,04126H,05E0BH,0356AH,05E91H,04503H,03CC2H + .word 03CE4H,03926H,04148H,055CBH,0662DH,0664DH,0562FH,05E4FH + .word 030C5H,034E6H,059CCH,0622EH,01862H,028C5H,024A4H,03D47H + .word 05E0DH,0401H,01463H,04E0EH,05650H,0418BH,045ABH,05A2FH + .word 05ED7H,021H,01H,05ED3H,06716H,062F5H,041ACH,0460EH + .word 05AB5H,05695H,0C43H,0422H,05ED6H,062F8H,0292AH,01CE7H + .word 01485H,0843H,0318CH,02D4BH,01CE8H,014A6H,01064H,0823H + .word 0358DH,020E8H,018A6H,0316CH,0314BH,018C7H,01085H + +UNMUGD_P: + .word 254 + .word 07C1FH,059C8H,05DE8H,055A7H,059A7H,05DC8H,0620AH,06A4CH + .word 06A2BH,0660AH,061E9H,05DE9H,04945H,02861H,01800H,01000H + .word 0C00H,0800H,0420H,0820H,0421H,021H,00H,0400H + .word 0841H,0C42H,014A3H,01483H,0C41H,059A8H,0662BH,0660BH + .word 034C2H,01C00H,020H,0C40H,06A2CH,04103H,02420H,01400H + .word 05DC9H,05DEAH,06A4DH,06E6DH,06E4DH,04D45H,03081H,0821H + .word 0620BH,06E4CH,06A0BH,061EAH,05587H,04102H,02000H,06E2CH + .word 059E9H,04D65H,02C60H,0662CH,0726EH,065EAH,059C7H,03CE2H + .word 06E6EH,04123H,02020H,059C9H,05586H,05186H,02C81H,05E0AH + .word 04124H,01C20H,0C62H,055C9H,04D87H,01820H,01841H,01461H + .word 01861H,01041H,0C20H,01042H,01062H,0C21H,0C61H,0728EH + .word 0728FH,04966H,034C3H,03904H,03503H,03D03H,02CA2H,01C40H + .word 01420H,01862H,01883H,01020H,076AFH,055A8H,05187H,02860H + .word 02460H,02481H,02082H,076B0H,05165H,04523H,030A0H,02C80H + .word 028A1H,02040H,0840H,072B0H,06A4EH,0664DH,04D24H,04503H + .word 038C1H,02060H,01860H,01440H,06A8FH,06A6EH,0620CH,0622BH + .word 04D44H,04923H,02461H,01C60H,0662DH,0622CH,05E0BH,05A0AH + .word 051C9H,051A8H,04944H,04524H,034A1H,02061H,04DA8H,06A6DH + .word 0664CH,059EAH,05166H,030A1H,01C61H,01441H,0664EH,055C8H + .word 055EAH,051A9H,055CAH,055A9H,04545H,034C1H,02440H,06E91H + .word 07290H,0622DH,04D88H,05DEBH,05188H,04525H,04967H,038E2H + .word 01462H,01082H,072B1H,07291H,055ECH,04567H,04988H,05E2CH + .word 04D66H,06E70H,06A6FH,05E0DH,04DAAH,0560BH,02880H,01083H + .word 05A0DH,059EBH,04968H,04DA9H,049A8H,051E9H,055E9H,018A4H + .word 01484H,018C4H,04168H,03D47H,03D26H,05E4EH,0624EH,05A0CH + .word 014A4H,01CE6H,02108H,01CE7H,03527H,02CE5H,030C4H,0560CH + .word 05E2DH,038E3H,02107H,02949H,02926H,051CBH,059ECH,059CAH + .word 020A4H,03948H,045ABH,04DCCH,055EBH,05E0CH,04D67H,020E6H + .word 03D8AH,0562EH,04125H,0316AH,0318BH,04E0DH,06AD3H,0664FH + .word 051A7H,030C2H,01463H,0401H,0422FH,03568H,05A50H,06290H + .word 051EAH,0441H,03DECH,052B3H,04E71H,0294AH,02529H,045EBH + .word 049A9H,02CA1H,056B4H,024C2H,03E0DH,0464EH + +UNMUGE_P: + .word 255 + .word 07C1FH,06739H,05EF7H,06318H,056B5H,04E73H,05272H,05273H + .word 04E72H,04E52H,05252H,05294H,05694H,056B4H,039CEH,02929H + .word 03DEDH,02D6AH,0318AH,0420EH,02527H,0C41H,01CE6H,01083H + .word 0841H,0420H,0862H,014A5H,018C5H,0421H,06738H,05EF6H + .word 05ED6H,06317H,04E53H,05673H,04A52H,03DCEH,035ACH,03DEEH + .word 0316AH,035CCH,02507H,0821H,01483H,014A4H,014A3H,0318BH + .word 0400H,0C63H,00H,06718H,062F7H,05274H,04210H,04610H + .word 04630H,031ACH,018A5H,0C42H,01063H,02107H,010A3H,02949H + .word 05695H,05AB5H,039ADH,05693H,041EFH,04631H,02529H,0842H + .word 0296AH,05674H,04A51H,0420FH,03DEFH,01CE7H,0C62H,01CC6H + .word 020E6H,05293H,05ED5H,035ADH,0316BH,0294AH,039CDH,0358CH + .word 018C6H,01084H,01484H,05AB4H,05AD6H,0358BH,0822H,041EEH + .word 0460FH,039ACH,02928H,05ED7H,04A31H,03DCDH,02D49H,0820H + .word 01062H,01CA3H,01862H,02948H,018A4H,02528H,018A3H,01462H + .word 020A3H,024A3H,02D4AH,01CC4H,024C3H,028C4H,02CC3H,030E4H + .word 04A30H,018C4H,01CE5H,02106H,01882H,020C4H,028E5H,028E4H + .word 03504H,03904H,03CE3H,0462FH,039CCH,04A50H,03D25H,03D04H + .word 04A53H,041EDH,0460EH,0840H,020E5H,024E5H,02CE5H,04545H + .word 04524H,04103H,02D69H,028E6H,02D06H,03527H,04D86H,05166H + .word 04945H,04A32H,01CA4H,024C5H,03D47H,04566H,04966H,05186H + .word 05587H,01883H,020C5H,04188H,04587H,04987H,04D87H,05187H + .word 055A7H,01461H,01CA2H,02D05H,04588H,04988H,04DA8H,051A8H + .word 059C8H,059A8H,03DCCH,01082H,024E6H,020A2H,02CC4H,04189H + .word 04589H,049A9H,055C9H,055CBH,059E9H,05E0AH,059EBH,06719H + .word 062F8H,04611H,0318CH,0C61H,02506H,03569H,03DAAH,045CBH + .word 03906H,04568H,05E0BH,041CEH,049CBH,049AAH,0620BH,0622CH + .word 041AAH,04DECH,04DA9H,051A7H,0664DH,04E74H,02D6BH,06A6EH + .word 04E51H,01C83H,051A9H,06E8FH,01CC5H,03948H,0620CH,0662CH + .word 06E4DH,0728EH,024A2H,04D68H,061EAH,06A2CH,05AB6H,03DCFH + .word 024C4H,04527H,04926H,059C9H,05DC9H,0660BH,04D88H,05588H + .word 05987H,04632H,04652H,020E7H,03546H,055A9H,05DE9H,061E9H + .word 05DC8H,01042H,034C2H,0620AH,0660AH,06A2AH,0662AH + +UNMUGF_P: + .word 126 + .word 07C1FH,0421H,020E6H,02548H,014A3H,0821H,0420H,0400H + .word 00H,020H,01CE7H,02969H,018C5H,0841H,0C62H,02528H + .word 01082H,0C63H,01083H,01484H,0401H,01020H,0C00H,0800H + .word 0820H,02082H,01420H,01000H,01063H,028A2H,02060H,0C42H + .word 034C2H,02461H,01400H,03CE2H,02C81H,02460H,040E2H,034A2H + .word 02040H,01820H,04103H,04523H,03CE3H,034C1H,038C1H,04104H + .word 038E3H,02860H,01C20H,04D65H,04D45H,04924H,04503H,018A4H + .word 0840H,05186H,05166H,04965H,030A1H,01C40H,0C61H,051A7H + .word 04D66H,04525H,04524H,03D03H,038C2H,0842H,055C8H,055C9H + .word 04D87H,04967H,04946H,04945H,04966H,02420H,05DEAH,055EAH + .word 051C9H,05A0AH,055E9H,055A8H,04565H,04123H,0622CH,0664DH + .word 05187H,06E6EH,06E8FH,038E2H,02440H,0728FH,0768FH,0620CH + .word 059C9H,01800H,0728EH,0726EH,0660CH,0620AH,038C3H,0C41H + .word 06E6DH,06A4DH,061EAH,05DE9H,059C8H,06A4CH,06E4DH,0662CH + .word 055A7H,01C00H,05DC9H,061E9H,06A2CH,059A7H,05586H,05165H + .word 059A8H,06A6CH,05DC8H,01062H,055A6H,05DE8H + +UNMUGG_P: + .word 127 + .word 07C1FH,056B5H,039AEH,0316BH,02909H,020E8H,01CC7H,01CE7H + .word 01CC6H,018C6H,01485H,0400H,04631H,02509H,02929H,02108H + .word 02529H,01084H,01H,0292AH,02508H,0C63H,06318H,039ADH + .word 035ADH,0358DH,0398DH,0358CH,0318CH,0401H,00H,0421H + .word 05EF7H,05274H,04610H,04210H,041F0H,041EFH,03DCFH,03DEFH + .word 0420H,05294H,04611H,020H,045F0H,018A6H,02D4BH,0C42H + .word 03DF0H,014A5H,04A31H,0316CH,0C43H,03DCEH,0821H,0420FH + .word 0801H,03DEEH,039CEH,01085H,02D6BH,0294AH,04A11H,04630H + .word 04A30H,0316AH,05AB5H,04A10H,02D4AH,035ACH,039CFH,01484H + .word 039CDH,05AD5H,04A51H,0842H,0318DH,01043H,021H,05ED6H + .word 04E52H,04A52H,06718H,05AD6H,062F7H,05694H,02D6AH,02507H + .word 04E73H,04E53H,04A32H,04E32H,01CE6H,02528H,014A4H,0820H + .word 06719H,05695H,05273H,02D69H,014A3H,01062H,06739H,04E74H + .word 04A53H,0318BH,0C62H,0841H,05293H,02549H,018C5H,01483H + .word 056B4H,01083H,018A5H,01063H,04E72H,0822H,05295H,0840H + .word 0C41H,01D07H,04E94H,03DEDH,0C21H,05272H,0441H + +UNMUGH_P: + .word 12 + .word 07C1FH,0400H,0420H,0821H,01083H,0841H,0C63H,018C6H + .word 01063H,018C5H,02128H,01D06H + +BMMUGA_P: + .word 254 + .word 04814H,062AEH,05A4CH,0626DH,066AEH,049A8H,049A9H,04987H + .word 04566H,045A8H,04188H,04589H,030E4H,02061H,01C62H,02083H + .word 01C83H,024C5H,020A4H,024A4H,01C84H,01CA4H,028E6H,02063H + .word 02084H,028A6H,02085H,020A5H,024E6H,02507H,03128H,03D6AH + .word 051EEH,05E30H,05E2FH,07F36H,076F2H,07EB1H,07F57H,07ED3H + .word 05E6CH,06ECEH,04D88H,04988H,04588H,04167H,01C41H,01884H + .word 01863H,01463H,01883H,01462H,01CA3H,02484H,01C85H,02907H + .word 02908H,041ACH,051CDH,076B3H,07AF5H,07F14H,04D89H,04DA9H + .word 04568H,04567H,03505H,01C64H,01464H,01CA5H,0314AH,049CCH + .word 06671H,076F4H,07EB3H,01CC5H,0398CH,04DEFH,06A92H,076B1H + .word 04DA8H,04587H,04187H,04168H,04DCAH,028A3H,024A5H,03549H + .word 045EFH,04E0FH,051EAH,01C20H,03507H,030C6H,03D8BH,0562EH + .word 05A6EH,05EADH,0562BH,04948H,04968H,04127H,04547H,04989H + .word 04DC9H,01483H,02CC5H,030C5H,030E6H,028A4H,03D49H,03D28H + .word 028C5H,0458BH,0518AH,04DEAH,03CE5H,038A4H,04D68H,034A3H + .word 038C4H,04146H,03D05H,04546H,01862H,01062H,03D07H,034E6H + .word 030E7H,0520AH,04D49H,038E4H,034A5H,040E6H,03CC3H,04D69H + .word 02020H,034C5H,03CC5H,038A3H,04548H,04947H,04528H,04D48H + .word 03CC4H,049ACH,04DAAH,038E5H,030E3H,04949H,02861H,04149H + .word 04DCBH,066CFH,02C63H,038E6H,04969H,03CE4H,0456AH,04148H + .word 05189H,06AD0H,01C42H,01C63H,01442H,034E5H,04169H,05DCAH + .word 06A4DH,0726EH,0726DH,030C4H,04549H,04D28H,04927H,059AAH + .word 04106H,04506H,05167H,05968H,04CE5H,0722FH,03D45H,038C5H + .word 04107H,059CDH,05568H,06A2EH,04166H,02C81H,034C6H,0556AH + .word 04905H,040E4H,01C82H,01441H,04527H,05187H,04505H,03D46H + .word 04126H,04147H,04D6BH,049EBH,045A9H,02CC3H,02481H,06ED1H + .word 049CAH,04DEBH,045CAH,049EAH,045C9H,02CC4H,06AD1H,04E0CH + .word 04E0BH,0520BH,04E0AH,0522BH,03D88H,02CE5H,04DE9H,049C9H + .word 028C4H,0522CH,030E5H,04526H,049E9H,0520CH,02CE4H,0562CH + .word 0562DH,066B1H,04569H,066D1H,05A4DH,0564CH,0668DH,062AFH + .word 06EF2H,06AAEH,0522DH,06F14H,07F7AH,07737H,06ED3H,06ED2H + .word 06ED0H,06F13H,07777H,07734H,06AD2H,04C75H + +BMMUGB_P: + .word 251 + .word 04814H,07F34H,07F13H,07EF1H,07ED0H,07EF0H,07EF2H,07ECFH + .word 06A0BH,061C9H,04D68H,055ABH,051ECH,04568H,04DAAH,051CBH + .word 04DABH,038E5H,05589H,06E2EH,07AF3H,07EB1H,069EBH,06D87H + .word 07A2CH,0726DH,06A4EH,06A8EH,06AAFH,0668DH,0628DH,05E6CH + .word 05A2BH,05E6DH,0562BH,0626DH,066AFH,066AEH,05E4CH,05A6CH + .word 04E0BH,03588H,02506H,018A4H,07EF3H,059CAH,04DA9H,04969H + .word 04D89H,051ABH,0558AH,05989H,065A9H,0722CH,07AAFH,07A0BH + .word 06E6DH,06A8DH,06AAEH,05A4BH,0564BH,05A6DH,0628EH,0520BH + .word 03988H,07ED1H,07ED2H,07F11H,05DEAH,05A0CH,05DECH,0518AH + .word 05E0AH,06A2CH,07A6EH,0722BH,06A6CH,06ACFH,066ADH,0626CH + .word 0562AH,05E8DH,066CFH,06ED0H,0522BH,02926H,061EBH,061AAH + .word 05568H,061ECH,055AAH,055CBH,0664DH,0664EH,0624CH,05E2BH + .word 0664CH,06A4CH,0668EH,06ECFH,0560AH,062ADH,03568H,07EB3H + .word 0726EH,0768FH,06E8FH,0660CH,059C9H,0620CH,05DCBH,059AAH + .word 06ACEH,05A4CH,0520AH,062AEH,0522CH,07AD1H,059A8H,0622DH + .word 051A9H,049CCH,049ACH,041AAH,04989H,0620DH,0624DH,0562CH + .word 04946H,076B1H,07AF2H,05987H,0662DH,05189H,045CCH,045ACH + .word 0498AH,05A6EH,05E4DH,05A4AH,0564CH,05E0EH,0520DH,0562EH + .word 06671H,072F2H,076D0H,076CFH,0768DH,05588H,049ABH,049AAH + .word 05A2DH,055EBH,059EAH,055CAH,0622EH,0564EH,05A2AH,020E5H + .word 051EBH,0560CH,05E0DH,059EBH,05A0DH,051AAH,04DCBH,04D69H + .word 07311H,0626BH,06EEFH,05E6BH,0628CH,04589H,05167H,05A2CH + .word 05E4BH,0668CH,03567H,02505H,04968H,04547H,06AEFH,06ECEH + .word 066ACH,0622CH,055A8H,059CBH,05968H,05A6BH,06EEEH,05DA8H + .word 06A4DH,04D88H,049A9H,05E8CH,04E09H,05106H,0660BH,051E9H + .word 03147H,05587H,05D89H,06A4BH,059C7H,051CAH,04DE8H,045CBH + .word 04DC7H,07A8DH,0764BH,05565H,05988H,0662CH,05967H,05609H + .word 04527H,05E0CH,05DCAH,04D45H,04905H,04927H,0562DH,05188H + .word 051A8H,05A4DH,04D87H,04948H,05DEBH,05E0BH,04DA8H,05A0BH + .word 05E4AH,04D48H,04503H,05E2DH,01CC4H,04928H,05E2CH,04505H + .word 055EAH,03547H,059A9H,02105H,055A9H,0522AH,01CA4H,0558BH + .word 04D8AH,05E8EH,0520CH + +BMMUGC_P: + .word 255 + .word 04814H,0316BH,02529H,02508H,0821H,0C21H,0C41H,0820H + .word 0C42H,01463H,01863H,01C84H,02084H,02CC6H,03D08H,04D6AH + .word 05548H,05949H,05D48H,05D49H,06169H,05127H,048E5H,04483H + .word 040A4H,03CA4H,040E7H,04507H,0556AH,06E4FH,07EF4H,07F14H + .word 07F55H,07F33H,0420H,01063H,01462H,01C63H,024A5H,02CC5H + .word 02CA4H,034C5H,03CE6H,04D28H,05128H,04907H,040C5H,03883H + .word 04D47H,06E2EH,07F53H,0318BH,01042H,01884H,01442H,034E7H + .word 04528H,044E6H,034A3H,034A4H,04107H,040E6H,07271H,07ED3H + .word 02528H,020A4H,020A5H,028A6H,030C6H,038E7H,03D07H,03CC5H + .word 02C63H,02060H,02462H,028A4H,02083H,02C84H,061EEH,01C83H + .word 01CA4H,02484H,02884H,02882H,01C42H,01441H,051AAH,0724FH + .word 07E6EH,07E90H,01443H,01022H,01842H,055ADH,059CDH,061CCH + .word 069ECH,07A4EH,01C85H,01864H,01464H,02085H,02485H,059ACH + .word 06A0CH,06DCAH,0658AH,06588H,0760CH,01CA5H,028A5H,02CA5H + .word 04969H,07E70H,0764DH,0760BH,065C8H,05947H,035ACH,01843H + .word 01862H,024C5H,030E7H,03507H,034E6H,069ACH,07A8FH,01062H + .word 01483H,024C6H,05D8BH,075ECH,07E2EH,06DE9H,03063H,044C6H + .word 07A4FH,07A6FH,07A6EH,07A2CH,06567H,069A9H,071CBH,03CE7H + .word 06DAAH,07A0CH,075EAH,071AAH,079ECH,0656AH,07E2DH,075EBH + .word 071CAH,07A0DH,02509H,03484H,038C6H,07E4FH,07E4EH,07E4DH + .word 030A4H,03CC6H,075CBH,07E0DH,071EBH,030E6H,030A5H,034A5H + .word 05D28H,024A4H,05948H,05D6AH,07E6FH,02929H,0C20H,0800H + .word 04506H,05D69H,07A2BH,07E91H,071EAH,02949H,038E6H,05969H + .word 05D89H,07A2DH,039ADH,02D4AH,01484H,039CDH,06987H,034C6H + .word 048E6H,03DCEH,024A6H,0C00H,05525H,05A6CH,049E9H,066AEH + .word 045A8H,04DAAH,04989H,01000H,01C62H,04DEAH,06ACFH,045C9H + .word 04547H,02861H,01C20H,049EDH,01C41H,05927H,061CBH,07EB3H + .word 05A8DH,0562BH,03081H,04127H,02020H,0416AH,03504H,04549H + .word 0662EH,02C81H,04988H,034C3H,07F36H,03D05H,07AB1H,07A91H + .word 030E8H,03128H,04D8CH,06E93H,0626DH,049A9H,04DA9H,049A8H + .word 03D6AH,076F6H,041ACH,06230H,06A72H,06651H,076B3H,04987H + .word 02507H,03549H,05E2FH,051CDH,06EB4H,072B4H,07EB1H + +BMMUGD_P: + .word 254 + .word 04814H,07EF2H,07E8EH,069C9H,06166H,069A8H,071ECH,0760CH + .word 07E70H,07EB2H,07EF4H,07ED3H,07F15H,07ED2H,07EB1H,07ED1H + .word 07EB0H,07EAFH,07E8DH,07A6CH,0760BH,06187H,05545H,05DA8H + .word 065CAH,05547H,048E4H,038A2H,05589H,07F13H,07F33H,076D1H + .word 03040H,02800H,02060H,02062H,01862H,020A4H,01CA4H,01884H + .word 018A4H,01C84H,01484H,01084H,07F12H,07A4DH,07E2DH,07E4FH + .word 07F36H,07F35H,07EF3H,07E8FH,07E6DH,07E6CH,07A4CH,061A8H + .word 048E3H,040A2H,05168H,07F34H,07F53H,07B32H,05D87H,02C40H + .word 018A5H,01083H,07F57H,07F14H,07E90H,07E6EH,07E4DH,05967H + .word 065C9H,05125H,04D05H,04926H,06EADH,01883H,07F55H,040E4H + .word 076B2H,07711H,04D45H,02083H,01CC5H,07E6FH,07E91H,07E4EH + .word 07E4CH,07A0BH,071E9H,040C3H,07690H,07F51H,0620BH,020E5H + .word 01063H,07A6EH,07EF1H,07AD1H,07AB0H,06DAAH,07E2CH,071EBH + .word 06DCAH,07F32H,07F11H,0764DH,07A8FH,06169H,06E4EH,07EF0H + .word 04D47H,061ABH,06E2EH,07A2DH,06987H,04505H,06E0DH,05DE9H + .word 02081H,05528H,05126H,05D48H,0616AH,0762EH,07ED0H,07EAEH + .word 07ECFH,06E4DH,03C81H,03CA4H,040A4H,04CE6H,0596AH,061ACH + .word 069ACH,06DECH,07A8EH,02C80H,04D28H,07271H,05E0BH,05DEBH + .word 0724EH,07A6DH,07AAEH,050E5H,03483H,030A4H,05E2EH,07A0CH + .word 07A0DH,07E2EH,048A3H,06671H,06E50H,065ECH,0768DH,014A4H + .word 07E0CH,07A4EH,05DAAH,07AF2H,05925H,0358AH,03568H,02506H + .word 07E0DH,05927H,05945H,050E3H,05A70H,05E6DH,03988H,02906H + .word 07A4FH,07A6FH,05103H,0316AH,049E9H,049C7H,02CA3H,028E6H + .word 03D8BH,062B1H,05EB1H,045A6H,06AAEH,0628EH,040A1H,02CC5H + .word 045ABH,05E6EH,06AF3H,07753H,06ACFH,07732H,0628FH,03D07H + .word 0522CH,06EF0H,0628DH,0564CH,03588H,04DECH,062AFH,0626DH + .word 07A4BH,04D03H,03420H,066AFH,05209H,066AEH,06DC7H,06A0BH + .word 04881H,03841H,055AAH,04DCBH,0666EH,05A4BH,03567H,02505H + .word 07AAFH,076F3H,055CBH,05E2CH,0660CH,0562BH,05E8DH,066CFH + .word 062AEH,07AD0H,0768FH,05E8EH,07B33H,07FB7H,07FB5H,051E7H + .word 07A2CH,0668EH,04E0AH,07F78H,0764BH,07EB4H,04D89H,07AF1H + .word 059ECH,04568H,07AD2H,045EAH,055ECH,03925H + +BMMUGE_P: + .word 255 + .word 04814H,0316BH,02508H,0354AH,02929H,0C42H,0C22H,0C21H + .word 0821H,0820H,0C41H,01042H,01062H,01462H,018A4H,02484H + .word 024C6H,03507H,0396BH,0841H,01483H,01CA4H,01883H,024C5H + .word 02083H,03907H,01463H,02084H,02CC5H,028A4H,01063H,01884H + .word 020A6H,028C6H,02CC6H,030C5H,030A4H,02D6BH,0314AH,01441H + .word 01CA5H,03D49H,03CE6H,03CC5H,03483H,04528H,02528H,01C84H + .word 028E6H,04549H,0558BH,05148H,044E5H,040C5H,040E6H,02529H + .word 0842H,024A5H,03508H,04129H,0556AH,05D8BH,05948H,05107H + .word 04CE6H,044C5H,03928H,04948H,05589H,05127H,05527H,05507H + .word 05106H,048E5H,0800H,020A5H,02D07H,04128H,05569H,05968H + .word 05526H,05506H,0822H,01863H,04127H,05549H,05548H,05528H + .word 02884H,03D28H,03D07H,04D48H,05128H,04CE5H,04D07H,0596AH + .word 0C20H,0C62H,038E7H,038C6H,04107H,04507H,04506H,04D28H + .word 044C4H,048E6H,05949H,034A4H,04106H,04906H,05928H,05D49H + .word 0616AH,051ADH,0454AH,0356BH,01C83H,03CE7H,06169H,0696AH + .word 059CEH,0414AH,04D8CH,0416BH,02C84H,02042H,01400H,01000H + .word 0C00H,020A4H,04949H,02C63H,02462H,02883H,034C5H,03D27H + .word 04907H,05927H,0518CH,0516BH,0558CH,040A5H,03C63H,02800H + .word 0C01H,034E6H,04D69H,03CA4H,02000H,01821H,05DADH,059ADH + .word 04CC6H,048A5H,01800H,01001H,02CE7H,03908H,04D49H,01842H + .word 01442H,05DCEH,050E6H,04CA5H,04063H,02400H,030E7H,02C41H + .word 01C63H,054E6H,03C43H,0801H,034E7H,04928H,044E6H,03041H + .word 01021H,028A5H,01C00H,01864H,04947H,04D29H,03C42H,01043H + .word 01464H,03948H,04D89H,0456BH,0394AH,028A6H,03D08H,04929H + .word 03421H,0516AH,02908H,04529H,04D4AH,05149H,01862H,04D6AH + .word 061ABH,06DECH,071EDH,05969H,01C42H,061ACH,079EDH,07E2FH + .word 01484H,05D6AH,05D28H,04483H,07A50H,07E50H,0618AH,05D48H + .word 03820H,02CA5H,06E2EH,07AB4H,07E92H,048A3H,030C6H,061CCH + .word 07672H,07F36H,07E71H,0618BH,0658BH,0658AH,06569H,050C5H + .word 069EEH,07692H,07F79H,07EB3H,0656AH,034C6H,0764EH,07EF4H + .word 07ED3H,07E91H,0318CH,05D69H,04062H,0660DH,0724FH,07A70H + .word 07EF3H,02085H,048A4H,038E6H,07ED2H,07F13H,07F34H + +BMMUGF_P: + .word 255 + .word 04814H,03D28H,034E6H,03CE6H,030C5H,028A4H,02083H,02484H + .word 02CC5H,01C62H,03507H,04D8BH,05DCAH,05DAAH,05DA8H,061A8H + .word 06166H,050E3H,03420H,02400H,01C20H,01841H,01041H,01042H + .word 0C41H,01063H,01463H,024E9H,0316EH,03DD4H,035B5H,02973H + .word 02574H,018EEH,0C88H,01486H,018A6H,018A5H,01884H,01484H + .word 01483H,01084H,01062H,03CC5H,030A4H,02883H,02060H,01C41H + .word 01C83H,04549H,0558BH,05967H,04CC2H,02800H,01421H,01442H + .word 02D6FH,0254EH,018CAH,01485H,018A4H,01083H,03907H,040E6H + .word 065CAH,03C61H,014A4H,04107H,04D6AH,04907H,040E5H,04507H + .word 040C5H,04106H,02863H,02463H,020C5H,05DEDH,069EAH,05125H + .word 0C42H,01CA5H,04506H,05549H,04D48H,04D07H,05107H,04D06H + .word 04906H,04527H,04528H,03D48H,055CBH,048E5H,02420H,014A5H + .word 04D28H,05948H,061ACH,05528H,04D27H,03462H,02064H,05E2EH + .word 0660CH,06E0DH,0760DH,061ABH,038A2H,02000H,01462H,04CE6H + .word 05969H,0596AH,05D49H,05D48H,0616AH,0698BH,075EDH,0762EH + .word 06169H,05D69H,06250H,06E70H,0764EH,0764DH,03040H,01CA4H + .word 069CBH,06DCBH,07E2EH,07A4FH,07E70H,06589H,06DECH,05968H + .word 034A3H,0664EH,06E4FH,07E6EH,05546H,02020H,01CC6H,01883H + .word 07A4EH,07E91H,07E90H,071CBH,06DEBH,05547H,044A3H,055CCH + .word 07690H,0768FH,07E8EH,040C3H,020E6H,05949H,07E4FH,07E6FH + .word 07E2DH,07E4EH,0760BH,07EAFH,01CC5H,07A6FH,079EDH,04D05H + .word 040C4H,04547H,04526H,06E91H,07ED0H,069ACH,04081H,04D47H + .word 04926H,07EB0H,07E8FH,075ACH,06DCAH,03C81H,05589H,04927H + .word 04505H,03CC3H,07A8EH,01862H,079EEH,071ABH,05925H,040E4H + .word 05167H,07A8FH,018C5H,07E30H,044E4H,07ED2H,07AAFH,06E4CH + .word 0516AH,048A1H,05587H,04D45H,061EFH,05DACH,06E2EH,069EBH + .word 06E0AH,065C9H,05567H,076F3H,065ECH,05D68H,044C4H,07A4DH + .word 069C9H,03481H,07AAEH,07F11H,05166H,04D26H,044E5H,05D87H + .word 05566H,06AAEH,07A6EH,05146H,07F33H,0666DH,076D1H,07EB2H + .word 03CA4H,07A0BH,05E0BH,02C40H,07EF4H,050E5H,071EEH,07ECFH + .word 07209H,07F36H,07EB1H,048A3H,07EAEH,07E8DH,07A4BH,071E9H + .word 06187H,06DA9H,04061H,04462H,07A90H,05545H,07F53H + +BMMUGG_P: + .word 253 + .word 04814H,0316BH,018A5H,0C21H,01464H,01063H,018C6H,01884H + .word 01C84H,01CA4H,0458CH,02509H,01084H,024E6H,024E5H,02084H + .word 0396BH,02908H,035ADH,03528H,0358BH,03548H,03507H,030C6H + .word 01863H,01883H,02CC5H,03D28H,0456AH,04DADH,05210H,05652H + .word 056B5H,04E0FH,055CCH,0498AH,0496AH,04DCDH,055ACH,0560CH + .word 055CBH,0558BH,05189H,04D89H,03DADH,028E9H,02CE6H,038E6H + .word 05E0FH,06E71H,076B3H,07EB2H,07F14H,07FDDH,07FFFH,07758H + .word 06A91H,0660DH,065EDH,07338H,07F7CH,07B7BH,06EF8H,06E93H + .word 07E90H,07E8FH,07E4FH,061A9H,059ABH,05169H,0660EH,07EF2H + .word 0726DH,0312BH,02064H,038E8H,04528H,0516AH,059ACH,065EEH + .word 0722EH,07E70H,07F59H,07FFEH,077BCH,066B4H,04D49H,07317H + .word 07BBDH,06F7AH,06F19H,07FDEH,0777AH,076F8H,06DEBH,05946H + .word 04D05H,06273H,06EF7H,062F7H,06AB6H,072B6H,072B4H,07272H + .word 07650H,07EF5H,06A31H,061ACH,06DEEH,07B9AH,06B17H,03D49H + .word 05A52H,0764FH,05D87H,04CC2H,044A3H,06ED5H,07BDEH,0520FH + .word 049EFH,069EDH,07F77H,0779BH,02487H,01867H,072F6H,072D3H + .word 06E2EH,048C4H,038C5H,04107H,051EFH,05EB3H,0720DH,07ED1H + .word 07F13H,06EF3H,06271H,02CA3H,01C87H,05EB6H,040E6H,049AEH + .word 05A71H,05DEFH,05DA9H,03CA3H,03083H,028A5H,02D2BH,06717H + .word 062D5H,03D07H,030A5H,051F0H,05651H,06A2DH,05507H,03CA5H + .word 02C66H,01C88H,03DAEH,07691H,07F37H,0768FH,05547H,044C5H + .word 038A7H,02CAAH,024ABH,020A9H,05ED4H,03905H,06630H,03C61H + .word 03463H,034C8H,030EDH,028CEH,01CADH,01CABH,07A2EH,04928H + .word 07F96H,07B75H,044E3H,03CC3H,034C5H,02800H,02D0EH,024EFH + .word 061ABH,040A5H,06E72H,02000H,01800H,01420H,024ECH,0392BH + .word 06168H,048A3H,01042H,024E8H,024EBH,0496CH,059CDH,04D07H + .word 072D4H,0C41H,01483H,0456CH,05926H,06EB5H,0821H,0C42H + .word 06E4FH,05125H,01822H,0C01H,01041H,048E6H,01864H,01043H + .word 0C22H,0458AH,045EEH,0316CH,01486H,02D07H,0C20H,01466H + .word 06A0BH,04081H,01462H,0396CH,02D2CH,0660BH,03460H,01062H + .word 050E6H,04149H,0596BH,01463H,02C41H,0841H,01443H,01442H + .word 02063H,01422H,0820H,0801H,01CA5H + +BMMUGH_P: + .word 254 + .word 04814H,01C84H,01022H,01042H,0C42H,0C41H,01043H,01084H + .word 0C44H,0824H,0C43H,01063H,01484H,01064H,020C7H,024C5H + .word 0C21H,01085H,01086H,01485H,01021H,0C22H,01062H,03548H + .word 01463H,01486H,01087H,01487H,01488H,01065H,018A6H,02486H + .word 020A4H,02C84H,018A9H,04547H,030A4H,01842H,01421H,01CC7H + .word 01CCBH,01CCCH,018ACH,0C67H,01CC9H,028E9H,034C8H,030A7H + .word 03CA7H,034A8H,02C88H,02489H,024CBH,020AAH,018AAH,05505H + .word 03C61H,03CE6H,040E6H,03CC5H,02022H,0250AH,0292FH,0250FH + .word 02510H,02911H,02511H,020EEH,0C48H,0826H,02909H,0292CH + .word 0412DH,04D0BH,054C8H,054A7H,04467H,03CAAH,034CDH,030EEH + .word 02D10H,020ECH,02463H,0250DH,02910H,01069H,01464H,03D2EH + .word 04D2CH,050A8H,044A9H,038CCH,02CC6H,034E6H,03CA4H,01C21H + .word 024F1H,0148CH,01044H,048EAH,058EAH,050ECH,040CCH,02931H + .word 03507H,01821H,02509H,018EFH,0292BH,0350FH,038EEH,02CEFH + .word 02930H,03D07H,01083H,0108AH,0316EH,040E7H,02C42H,02110H + .word 04507H,04D28H,044E6H,02C83H,020E8H,04D48H,02530H,05128H + .word 04D07H,044C5H,0843H,0C63H,02D4EH,04D27H,05127H,04D06H + .word 044E5H,03883H,02420H,040C6H,048E6H,03462H,02531H,044E7H + .word 048E7H,05149H,04906H,0C62H,04907H,040C5H,040A4H,02C41H + .word 01820H,01041H,044C6H,01420H,02950H,02533H,02532H,02111H + .word 01C20H,02953H,02512H,02820H,01C00H,01400H,02952H,02133H + .word 044C4H,03483H,01800H,048C6H,04CE6H,048C5H,040C4H,0841H + .word 02974H,02553H,050E6H,04CC6H,04CE7H,05107H,01C01H,01442H + .word 01462H,02D30H,02D53H,02112H,05D48H,05527H,05507H,02D72H + .word 02D73H,02554H,02132H,05106H,02D4DH,02973H,02D95H,02976H + .word 02534H,02932H,04529H,03591H,02130H,02D97H,031B7H,02513H + .word 03862H,03171H,031B8H,03990H,040E5H,041D2H,03193H,02131H + .word 05928H,05927H,03DD2H,04216H,06168H,05526H,04A38H,031B5H + .word 035D8H,02CC5H,030C5H,05D47H,040A3H,041F8H,039F9H,02083H + .word 01C83H,05589H,05D89H,06589H,069A9H,06167H,05506H,0421AH + .word 01D0FH,014A5H,04549H,059CBH,065AAH,048A3H,03020H,03DD5H + .word 039FAH,031D7H,0456AH,059ABH,039B2H,04639H + +YKMUGA_P: + .word 254 + .word 04814H,054A5H,04063H,04842H,0594AH,03C00H,03800H,03000H + .word 02C00H,02800H,03400H,03C62H,05547H,065C9H,065A9H,069A8H + .word 065A8H,069C9H,071E9H,06DC9H,071EAH,0760AH,0760BH,0720BH + .word 0720AH,06DE9H,069C8H,069A9H,06588H,04463H,02400H,03C83H + .word 05968H,061A8H,05D87H,06587H,06DC8H,05D67H,06188H,04863H + .word 04C42H,05D4AH,03882H,06187H,06988H,06167H,05D66H,058A5H + .word 04C63H,05042H,05D8CH,04442H,03862H,069A7H,06DEAH,06DA8H + .word 0598CH,03C63H,04000H,05967H,065A7H,069C7H,05546H,071C9H + .word 06166H,06586H,05945H,02000H,061A7H,06186H,05D46H,05946H + .word 050A5H,03863H,03C82H,05D88H,05D47H,05925H,01400H,01800H + .word 01C00H,05989H,05DA9H,061A9H,05988H,05926H,05505H,05525H + .word 05126H,04D46H,04505H,04CA5H,0558AH,05DCBH,061EDH,06A2FH + .word 05DEDH,059ACH,06210H,07292H,061CBH,06589H,05504H,05125H + .word 04D26H,04526H,03D05H,030E4H,02CC4H,03883H,04D68H,051A9H + .word 05E0DH,06A70H,07F59H,07AD3H,07291H,05567H,03D26H,034E5H + .word 028C4H,020A3H,01CA3H,01863H,04967H,055E9H,05E0BH,07B13H + .word 072D1H,06E6FH,07AB0H,05146H,05166H,030E5H,024C4H,01461H + .word 01041H,038C3H,04567H,06A2DH,04D67H,04D47H,028C3H,01CA4H + .word 01883H,01462H,01062H,01061H,038E5H,03526H,04568H,045A9H + .word 02CE4H,028E4H,018A4H,04884H,03062H,030E6H,028C5H,01C83H + .word 01483H,020C5H,020A6H,01884H,020E6H,01CC5H,018A3H,02507H + .word 028E8H,02D29H,0314AH,03169H,0316AH,02907H,01C85H,02484H + .word 02D08H,05271H,035ABH,04A2FH,0356AH,02928H,039ADH,04A11H + .word 0354BH,04400H,01882H,04800H,04C00H,05400H,05000H,01482H + .word 05084H,01463H,05063H,05484H,05DADH,0316BH,05CC6H,020E5H + .word 02908H,02D28H,050E7H,050C6H,04CE7H,059CEH,05108H,05DCEH + .word 04D08H,0554AH,05DEFH,04484H,03421H,061EFH,02821H,01000H + .word 05529H,0596BH,05129H,044E7H,03484H,02C42H,02842H,02421H + .word 02C21H,02021H,03021H,03821H,05D6BH,06252H,0516BH,04929H + .word 040E7H,03CC6H,038C6H,040C6H,044C6H,044A5H,04C84H,07318H + .word 06294H,06231H,05A10H,059EFH,0618CH,06AB5H,048A5H,05463H + .word 05863H,06A73H,0556BH,048E7H,048C6H,059ADH + +YKMUGB_P: + .word 128 + .word 04814H,06588H,05D67H,05967H,05588H,05168H,04968H,03527H + .word 024C4H,01C83H,01462H,01883H,020C5H,01CA4H,024E5H,01483H + .word 01800H,01C00H,02400H,02C00H,03000H,01400H,05D88H,06188H + .word 05567H,05568H,04D68H,04547H,03D48H,02CE5H,020C4H,01C82H + .word 01882H,01041H,01461H,01862H,01863H,01884H,01CA5H,01463H + .word 01062H,02800H,01000H,05547H,05189H,04527H,034E5H,030E6H + .word 024C5H,05966H,05947H,05127H,04D47H,03D06H,03506H,028C5H + .word 01482H,01042H,02000H,05D66H,05968H,05148H,01C84H,04948H + .word 03D27H,01441H,03400H,05D46H,05988H,04548H,03106H,0C41H + .word 01061H,05587H,04568H,020A4H,05D87H,05167H,04D67H,03926H + .word 024A3H,03149H,03800H,04505H,03D26H,03105H,028C4H,01CA3H + .word 0C21H,014A3H,01CC5H,01443H,01843H,0821H,0C62H,01442H + .word 01842H,01C42H,03C00H,018A4H,02928H,020A5H,02907H,02906H + .word 020E5H,024E6H,01864H,04000H,04463H,04063H,04863H,04800H + .word 04400H,04C00H,05000H,0598CH,05D8CH,05D4AH,0594AH,0614AH + .word 05D29H,05929H,05508H,050A5H,034A5H,058A5H,054A5H,04CA5H + +YKMUGC_P: + .word 255 + .word 04814H,050A5H,03C42H,04042H,0554AH,03800H,02C00H,02800H + .word 03400H,03000H,01C00H,02400H,069C9H,06DEAH,071EAH,0760BH + .word 07E6DH,0764DH,06E0BH,06E0CH,0762CH,061A9H,05125H,05968H + .word 05547H,05946H,05D88H,05926H,05D46H,06166H,06588H,06DC9H + .word 06587H,0720BH,07A2CH,07E8FH,07EB0H,07ED1H,07E6EH,07E6CH + .word 07E4DH,07A4DH,0594AH,03C00H,01800H,02000H,0720AH,07A4CH + .word 069EAH,0764FH,069CAH,06189H,05525H,05104H,05D67H,061A8H + .word 07690H,069A9H,06DCAH,06DE9H,07A4EH,0762BH,05168H,04526H + .word 03CC4H,03CA2H,044A2H,044C3H,048E3H,065A8H,071ECH,069AAH + .word 06186H,071CAH,07EF2H,07E2CH,069A8H,071E9H,07A2DH,065CBH + .word 040C4H,061AAH,05126H,04D05H,044A0H,05D66H,075EAH,07A0BH + .word 04000H,069C8H,07A6FH,07670H,059AAH,03861H,06168H,03D26H + .word 02C83H,02C62H,03061H,06D88H,07A0CH,07E2DH,07E6FH,07E4EH + .word 079EBH,07E0CH,04842H,04C00H,01400H,05105H,071EBH,05504H + .word 06DECH,069CBH,04CE4H,04442H,04062H,07A4FH,07735H,076D1H + .word 048A2H,06586H,05505H,05925H,06DEBH,07F98H,06DA8H,050E4H + .word 06DA9H,075EBH,058A5H,05967H,06187H,07F55H,06988H,05D87H + .word 05966H,065A7H,07A2EH,0762EH,05524H,065A9H,05D47H,06188H + .word 05945H,0760AH,07A8DH,07B12H,061A7H,05545H,07609H,065C8H + .word 06DC8H,05947H,03062H,030C3H,04505H,05589H,04927H,04D89H + .word 05E0CH,055ABH,059CBH,03CA4H,03105H,02083H,045ABH,05A72H + .word 03549H,024A4H,0496AH,034A2H,06690H,06AF3H,06F37H,0354AH + .word 0394AH,06F59H,077BCH,06A2EH,050E3H,02D06H,01CA2H,05271H + .word 0779AH,05691H,041CBH,05DC9H,06165H,069A7H,055CBH,066B2H + .word 06F57H,07379H,04A2FH,05ED5H,03946H,06AF5H,066D5H,04884H + .word 03545H,020C0H,07FFDH,05E70H,04D03H,07BBAH,07FFEH,06737H + .word 05630H,034E5H,04147H,02CC3H,04DCBH,05503H,0722BH,03D03H + .word 034E1H,041A6H,07796H,07799H,04947H,04D45H,0660BH,03CC3H + .word 0662EH,055A7H,05E0BH,04968H,03D05H,069EBH,030E6H,07A6DH + .word 05124H,024C4H,02462H,02861H,0620CH,02C21H,02CA4H,034A1H + .word 03507H,061EDH,02CE5H,01C63H,054A5H,07E4CH,06E4FH,05E0FH + .word 04DACH,03D08H,038E6H,04063H,05DECH,04463H,07A6EH + +YKMUGD_P: + .word 254 + .word 04814H,07A4DH,07E6EH,07E4DH,07E4EH,07E6FH,07E90H,07EB1H + .word 07A70H,07A6FH,07E8FH,0722CH,07E8EH,07E6DH,0762BH,06DEAH + .word 065A9H,05947H,06DEBH,0764EH,04CE5H,03840H,04CA3H,054E5H + .word 05925H,069A8H,07E91H,065ECH,05189H,07757H,041CCH,01884H + .word 020C5H,01882H,01862H,01C62H,02400H,02800H,03800H,03400H + .word 02C00H,01C00H,01800H,01400H,01000H,07A6EH,07EB2H,07A4EH + .word 0720CH,06188H,06589H,06DCBH,069ECH,03C62H,05926H,069AAH + .word 05DA9H,04127H,07336H,05230H,01CA4H,020C6H,01863H,01C61H + .word 02000H,04000H,03C00H,03000H,07ED1H,07ED2H,0762DH,071EBH + .word 069CAH,065EBH,06127H,0720DH,05126H,04525H,04A0EH,07EB0H + .word 07A91H,069CBH,06168H,05D68H,071ECH,06E0CH,06189H,072B1H + .word 06588H,06167H,044C3H,03D04H,06EF3H,041ABH,020A3H,024E5H + .word 01C83H,07E4CH,07A90H,0722DH,061AAH,07A2EH,076F5H,038A2H + .word 06EF4H,03D48H,01C84H,01C82H,061A9H,06E0DH,040A3H,04D28H + .word 06EB3H,040E5H,03881H,04D68H,066B2H,02CE5H,01883H,07E2CH + .word 07E2BH,07A0AH,07A2BH,07A2CH,05568H,04D26H,05547H,07670H + .word 04D47H,05DECH,07779H,04D49H,03CC3H,06A91H,05E91H,024C5H + .word 07A0CH,079EAH,07E0BH,07E0AH,07A4CH,07AB0H,04925H,0660DH + .word 05DAAH,0558AH,06651H,055CEH,059CEH,0779AH,03106H,07A0BH + .word 071EAH,0760AH,07A8EH,06A0DH,04D48H,062B1H,066F5H,03D8AH + .word 01CA3H,075C9H,075EAH,07EAFH,07A8FH,07AB1H,06A2DH,04547H + .word 03906H,034E5H,020A4H,024E6H,01483H,02061H,075CAH,071A8H + .word 06A0CH,030E6H,02CE6H,01462H,01463H,065A8H,069C9H,06DE9H + .word 06E2DH,03927H,02081H,069EAH,0722BH,0764CH,06E2EH,03926H + .word 06E0BH,07A6DH,07E6CH,07A2AH,05DCBH,04D89H,065C7H,06E4BH + .word 03D27H,02D07H,01482H,01CC5H,069C8H,0720AH,07609H,0762CH + .word 0720BH,069E9H,0762AH,020E6H,020E5H,0660BH,02507H,02908H + .word 024E7H,01461H,07A4BH,01484H,01CA5H,01CC6H,018A4H,01062H + .word 0760BH,05587H,04D69H,03907H,03149H,02D48H,04949H,020C4H + .word 024C6H,05E0BH,055CAH,0498AH,018A3H,01C63H,05525H,06587H + .word 04568H,03928H,05945H,075EBH,065C9H,028A4H,06DC9H,0768FH + .word 024C4H,04968H,01063H,06DC8H,03D47H,04948H + +YKMUGE_P: + .word 252 + .word 04814H,04063H,03000H,03821H,04CA5H,03400H,02800H,02400H + .word 02821H,034C5H,03506H,030E5H,02CA4H,034E6H,030C4H,030A4H + .word 034C4H,038C4H,038C5H,038E5H,04127H,04463H,03C21H,03800H + .word 02000H,02C42H,030E4H,02CA3H,030C5H,038E6H,03D06H,02CC4H + .word 034C3H,038E4H,04106H,03CE5H,040E6H,03CE6H,02C00H,034E4H + .word 03CC4H,040E5H,03CC5H,04105H,034E5H,04506H,04505H,04527H + .word 04526H,01C00H,03D05H,03CE4H,04906H,044E5H,04D06H,04907H + .word 040C4H,04D27H,04D26H,04905H,048A5H,02C41H,040E4H,04D47H + .word 05147H,04D05H,028A4H,05148H,05127H,05126H,05106H,05527H + .word 050A5H,03CA4H,05548H,05526H,04507H,04528H,04107H,05146H + .word 05547H,05968H,05568H,03483H,04927H,04926H,05167H,05D89H + .word 05947H,05948H,03462H,05589H,05DAAH,05168H,05989H,05D68H + .word 05967H,05D88H,05567H,02C21H,05988H,05969H,04021H,05587H + .word 059A8H,065EBH,065CBH,061AAH,05D69H,050E7H,03061H,061CAH + .word 065CAH,061A8H,069E9H,069C9H,065A9H,06189H,061A9H,05DA9H + .word 04042H,065ECH,0660EH,06E4FH,07270H,06E2EH,0766EH,0764DH + .word 069A9H,065A8H,06587H,065AAH,069EBH,06E2CH,0724DH,07E8FH + .word 076AFH,07EB0H,07690H,0720CH,069EAH,06DEBH,06DC9H,06188H + .word 06E0CH,06A0AH,0724CH,06E0BH,06A0BH,069A8H,06588H,069CAH + .word 065C9H,03C42H,05546H,05D67H,065C8H,06E0AH,0720BH,0764CH + .word 0722CH,06E2BH,0722DH,04CE7H,05946H,06DEAH,0722BH,0760BH + .word 06DCAH,05D66H,06167H,06187H,071E9H,071EAH,06DECH,05125H + .word 069C8H,0762CH,071CAH,044A5H,04D25H,06DE9H,07A4DH,07A6EH + .word 0760CH,071EBH,0554AH,05525H,05D87H,061A7H,0720AH,07E6EH + .word 07A2DH,06DA7H,05DA8H,061C9H,05566H,0762DH,07E4DH,01800H + .word 03CA3H,040C3H,07E4EH,07A4CH,0760AH,03CC3H,06DC8H,061CBH + .word 069CBH,04CE4H,05105H,07A2CH,05D47H,069AAH,06589H,071ECH + .word 0658AH,044C4H,07E6FH,07A4EH,01400H,05966H,06E2DH,03861H + .word 040A3H,07A2BH,0762BH,065A7H,061EBH,05DCBH,04547H,04548H + .word 038E7H,04484H,04D04H,069C7H,06E09H,0766CH,06E4DH,04D68H + .word 044C5H,05D46H,07A6FH,075EAH,06168H,07E2CH,0766DH,05926H + .word 05545H,07E6DH,07E6CH,07A6DH + +YKMUGF_P: + .word 254 + .word 04814H,04527H,03507H,0524FH,06F5AH,05693H,01CC5H,01483H + .word 01463H,01862H,02CE5H,06718H,0737BH,07FFEH,07FFFH,0779CH + .word 056B7H,0673AH,06F9DH,05B1AH,056D8H,02D6CH,05ED7H,041F1H + .word 0358FH,07FDDH,07BBDH,05631H,045CDH,02C85H,02443H,01400H + .word 01000H,034E5H,03549H,01063H,020A3H,0396AH,05A93H,07BDEH + .word 04A31H,02929H,05EB4H,01C83H,024C5H,028E6H,04DEEH,07FDEH + .word 06B17H,06272H,03CE7H,02800H,02C00H,02400H,02000H,01800H + .word 01883H,01062H,01484H,020A4H,06737H,06B3AH,04611H,05695H + .word 01884H,01865H,01465H,01423H,028A6H,03D48H,04DEDH,066F3H + .word 07B99H,06EF5H,06693H,04928H,03400H,01C00H,01CC7H,024E9H + .word 0252AH,05672H,0520FH,03D27H,03800H,01462H,0316CH,062F7H + .word 056B8H,0296EH,035B0H,04E54H,0292AH,018A6H,020EAH,01466H + .word 05ED3H,03D89H,034E6H,01042H,01486H,07BDFH,0739BH,06F7CH + .word 04D27H,03D28H,05274H,0398CH,024C7H,03DEFH,045EFH,03000H + .word 05126H,05547H,05148H,04548H,04528H,04E73H,06B38H,05589H + .word 04D89H,0498AH,07BFFH,0292CH,03DAEH,02C63H,05967H,05D88H + .word 055AAH,05AD8H,0314AH,05968H,05D87H,059CAH,055CBH,0458AH + .word 02D07H,0460FH,04000H,061A8H,065CAH,0C65H,020A7H,0660BH + .word 0660DH,05E2FH,01CE9H,02109H,065C9H,069EAH,06E0BH,0662EH + .word 0624FH,0777CH,077BEH,04E95H,04A32H,06F59H,06A0CH,06E4EH + .word 06A70H,05E71H,0722DH,0724EH,06E91H,06AB2H,05F18H,0764DH + .word 0722CH,0766FH,076B2H,03D47H,035ACH,069E9H,0764EH,07A6FH + .word 07690H,055CCH,04969H,04A35H,05ED5H,07E8FH,07EB1H,07E90H + .word 05DABH,0720CH,0720BH,07A6EH,07A4DH,07EF2H,065AAH,05670H + .word 0762DH,0766EH,06DECH,01CA3H,01C82H,07EB2H,0762EH,07F14H + .word 07F13H,07E6FH,07A90H,04D47H,038E5H,07A4EH,07E6EH,07EB0H + .word 07ED1H,065EDH,07AB0H,07A4FH,04CE5H,05927H,0764FH,07670H + .word 069A9H,06187H,0726FH,01882H,07AB1H,07E4EH,06167H,0760CH + .word 071ECH,06168H,06671H,03128H,07A70H,07A2DH,05525H,076F4H + .word 0762CH,05DEDH,07315H,01861H,07E91H,069AAH,050E5H,044A1H + .word 054E3H,02506H,0720DH,05D6AH,03C61H,04C83H,05D25H,07716H + .word 0768FH,058E4H,06126H,07A91H,069EEH,04482H + +YKMUGG_P: + .word 254 + .word 04814H,020A4H,01400H,01464H,018A5H,02509H,01084H,01CC7H + .word 01484H,01041H,01884H,01C84H,018A4H,014A6H,014A5H,01483H + .word 01063H,01062H,02C00H,02000H,01CE8H,01841H,01CA4H,01CC5H + .word 0294AH,020E8H,02D6BH,020C6H,03400H,01C00H,035ADH,0C21H + .word 02483H,020C5H,0422H,02D4AH,03C63H,02800H,0316BH,04210H + .word 0296BH,02CA4H,030C4H,02CC4H,0294BH,03DCFH,041CFH,01886H + .word 039AEH,03821H,03063H,03D6BH,0356CH,0292AH,028E7H,02840H + .word 034C3H,03CC4H,03D26H,03949H,02D29H,035AFH,05695H,05EF7H + .word 06739H,04063H,030E6H,04A31H,056B6H,04E53H,02041H,03861H + .word 04D05H,05147H,04D47H,04968H,0458AH,06F5AH,0739CH,07BDEH + .word 07FFFH,07BDFH,04A32H,077BDH,06F7CH,039D1H,02400H,05252H + .word 06F9CH,0737CH,040C3H,04D26H,0398DH,05EF8H,077BEH,05EB6H + .word 010A5H,01463H,07FDEH,03000H,05274H,044E4H,05546H,05167H + .word 04169H,03D8BH,04654H,02D6DH,04E93H,0737BH,062F8H,06F3AH + .word 06AF7H,01885H,020A6H,044A5H,04632H,04E2FH,02883H,03461H + .word 05547H,05146H,05693H,05AB5H,041CDH,01485H,01864H,07BBDH + .word 062F7H,0460FH,035D0H,05276H,01043H,03CA1H,05967H,05568H + .word 04589H,0779CH,0C63H,0421H,01042H,0824H,01066H,0252BH + .word 01CA5H,04652H,06B39H,04DEEH,04CE4H,04D8AH,01D0BH,0C66H + .word 04E94H,04695H,0673AH,052D8H,02DB0H,0C64H,04E75H,048A5H + .word 05589H,01883H,02462H,051EFH,05566H,05587H,04D89H,0739DH + .word 014C8H,0396CH,05567H,049ACH,01085H,041F1H,049F0H,05232H + .word 04128H,05525H,05E93H,0779DH,05F18H,030A5H,07318H,05125H + .word 05A71H,077BCH,041ADH,034C4H,048E3H,05651H,031CFH,02C62H + .word 07B9BH,05126H,055CBH,04DCDH,03129H,07FDFH,07BFFH,077FFH + .word 03549H,038A3H,055ABH,06717H,05D88H,04DCBH,0739BH,05DAAH + .word 055ECH,01863H,07BBEH,02021H,02020H,040A3H,05105H,02420H + .word 030A3H,04505H,059ECH,02421H,01462H,02D27H,07FFEH,04E51H + .word 0456AH,01442H,03421H,0445H,05505H,05926H,038C3H,06167H + .word 05D68H,04527H,05524H,061A9H,038A4H,034A4H,065C9H,05ED5H + .word 030A4H,034C5H,05945H,034E5H,05545H,05D87H,05230H,07FDDH + .word 065CAH,05DCBH,05E0DH,0622DH,05A0EH,030E5H + +YKMUGH_P: + .word 254 + .word 04814H,01062H,01000H,01084H,01CC6H,01CE7H,018C6H,018A5H + .word 01484H,01064H,014A5H,01063H,01042H,01043H,01044H,0C44H + .word 01485H,02108H,01CE6H,01083H,02529H,01CC7H,0824H,01085H + .word 020E8H,041CFH,020E7H,018A6H,03DEFH,04210H,041F0H,0358CH + .word 0292AH,02D4BH,0316BH,0844H,02D4CH,056B6H,06739H,04E53H + .word 01464H,06318H,05695H,05AB5H,02929H,05253H,0294AH,0358EH + .word 0779DH,07FDFH,07FFFH,07BBDH,01463H,01443H,01864H,01865H + .word 0312AH,01465H,0356CH,062F7H,06F5AH,06B18H,0356AH,01884H + .word 07BBEH,0739DH,06B5AH,01863H,06B39H,077BCH,024C6H,024E6H + .word 01483H,05674H,07BDEH,0739CH,02D6BH,04E11H,05EF7H,0C64H + .word 018A4H,028E9H,077BDH,05AD6H,06F5BH,0864H,0443H,01D29H + .word 0635AH,01444H,01C65H,0354BH,024C7H,05ED6H,01065H,0423H + .word 0C43H,02507H,0779CH,020E6H,06B5BH,0250AH,0C45H,014A6H + .word 05ED8H,06B3AH,04630H,024A6H,02508H,01844H,01885H,06718H + .word 05EB6H,04633H,0777CH,06B19H,01C85H,0420FH,0314BH,07BDFH + .word 06F7BH,02528H,0398DH,01C84H,03DAEH,05293H,062F8H,02109H + .word 01843H,07FDEH,0737BH,0396BH,01C64H,041ADH,0C21H,05272H + .word 03569H,01883H,05AD5H,0C66H,0673AH,04E32H,04611H,0358BH + .word 04631H,05273H,05AD7H,04E95H,05653H,0C23H,04A54H,02509H + .word 05672H,01CA5H,02D4AH,01045H,0356BH,01CA4H,01466H,03DD0H + .word 06719H,0316EH,039B0H,06319H,01CE8H,020C7H,049F0H,077BEH + .word 028A6H,01023H,02064H,05ED7H,03D6CH,024E7H,01C63H,02085H + .word 03127H,05A93H,05252H,01462H,01862H,045CDH,07FFEH,03DABH + .word 0C65H,0292DH,06F39H,0392AH,06F7CH,07B9CH,01442H,028E6H + .word 01461H,01CEAH,04A35H,024C5H,04610H,06AF7H,0C41H,07BBCH + .word 06F37H,05651H,03949H,0865H,0845H,0214CH,0212CH,07337H + .word 07359H,04211H,06F7AH,02907H,07BFFH,05632H,04653H,05F19H + .word 0424H,05673H,030E7H,045F2H,05652H,01021H,02063H,028C5H + .word 0779BH,03129H,041ABH,06B38H,01800H,01C62H,04A0FH,06F59H + .word 020A3H,03928H,049CDH,05E71H,066D5H,05E72H,05631H,07738H + .word 028A5H,06B7BH,03E12H,056F9H,04675H,04E76H,077FFH,06F9EH + .word 05F3AH,04EB8H,03E15H,02D90H,01D2DH,01400H + +BHMUGA_P: + .word 253 + .word 04814H,02573H,01D0EH,02572H,039F7H,02551H,01CEDH,0190DH + .word 018ECH,018EBH,0190CH,01D0DH,0212FH,02151H,02D07H,01CA4H + .word 024E6H,020A4H,01441H,01440H,01841H,02840H,03CC3H,04D44H + .word 0766DH,0728FH,07F54H,07F13H,07EF2H,07B34H,076B2H,0662EH + .word 051AAH,04527H,04924H,040E2H,0620CH,0726EH,07690H,076F4H + .word 06A2DH,07EF5H,06E50H,05DEEH,051ACH,030E6H,02462H,02862H + .word 0498AH,03549H,024C5H,01463H,01462H,01483H,01883H,0C21H + .word 01CC4H,0358BH,03D8BH,028E6H,03106H,0562FH,05DECH,03D49H + .word 0210BH,0190BH,018EAH,01D0BH,01D2EH,01D0CH,01CECH,01D2DH + .word 014C9H,01087H,010A7H,01085H,01D30H,014CAH,0214FH,01D0AH + .word 01442H,02C81H,04103H,05567H,0660BH,07AF1H,055CCH,038E5H + .word 038A4H,034A2H,05568H,061CAH,061C9H,06A4DH,05DC9H,06A4EH + .word 04D8CH,02CA5H,049CDH,01CA3H,0396AH,01C83H,03128H,024A3H + .word 028A3H,0520DH,0210CH,01CEBH,01D0FH,02552H,03080H,04505H + .word 07AB0H,076D2H,06A2EH,04D69H,03D28H,028C5H,030C4H,05DEBH + .word 055CAH,04D47H,055A9H,0624FH,04E0FH,01041H,01882H,02D28H + .word 045ACH,0354AH,01862H,0212CH,0190EH,010A6H,01D2FH,01D4EH + .word 014ECH,018A8H,018C9H,01021H,03D05H,051EEH,02481H,04147H + .word 03D27H,03947H,01042H,0418BH,02150H,0212EH,014A7H,018EDH + .word 01CEAH,018CAH,04988H,04568H,05250H,049EEH,049EAH,03923H + .word 0292DH,02550H,02570H,018CBH,01086H,0190AH,01C82H,045CCH + .word 04DC8H,0210EH,02130H,035F6H,018C6H,05A92H,04A0CH,020EBH + .word 018CCH,014A8H,035D5H,01422H,03505H,01D2CH,01040H,0314CH + .word 02972H,041CEH,062B4H,0252CH,0210DH,01063H,03D8CH,024E3H + .word 045CBH,03988H,0252DH,02571H,0212DH,04E30H,01CEEH,02171H + .word 0C41H,02506H,0C42H,01D50H,01464H,01461H,03147H,01062H + .word 02993H,02DB4H,02D2AH,018A3H,02994H,02508H,0460EH,02D49H + .word 02864H,038C7H,02D94H,04238H,024E8H,0210FH,01CA7H,020ECH + .word 02995H,020A6H,05210H,05E52H,05A31H,05A94H,02553H,0252FH + .word 02152H,02D4FH,028C3H,01487H,01CCBH,031B5H,04259H,03A17H + .word 04EBBH,04A79H,02971H,0C66H,0C87H,0675CH,05ADCH,04A99H + .word 02DB6H,02DB5H,031B6H,039F8H,03A18H + +BHMUGB_P: + .word 251 + .word 04814H,02552H,02553H,02994H,01D2FH,0190CH,018ECH,018EAH + .word 018EBH,014EBH,018C9H,014CAH,01041H,01C83H,01462H,02CC5H + .word 01C20H,02861H,04106H,04548H,038E5H,03D28H,05A30H,06EB2H + .word 0620DH,059A8H,065EBH,05966H,069E9H,07AB0H,07F13H,07F55H + .word 07F34H,07AD1H,07AD2H,07690H,0724EH,07A91H,01D0EH,02151H + .word 0212EH,01D0DH,01D2EH,01D0CH,01CEBH,018CAH,014EAH,024C4H + .word 01883H,01C84H,01441H,01461H,02062H,03907H,01CA3H,03549H + .word 06AF7H,06672H,034A2H,040A2H,05125H,061A8H,0766FH,07F35H + .word 07EF3H,07F14H,07A90H,06E2DH,07AF2H,02573H,02551H,02150H + .word 02130H,01CECH,01CA4H,01862H,01420H,02040H,03506H,024C3H + .word 01CA0H,02904H,062F4H,049EDH,03D8AH,02C83H,02820H,03880H + .word 07F56H,07EF2H,0722DH,0212DH,018CBH,01882H,01442H,020A4H + .word 034C5H,030E6H,02CA4H,03948H,02862H,048E2H,0766EH,07B35H + .word 0190DH,01D2DH,01483H,01062H,01863H,01841H,04D48H,03CC3H + .word 040E2H,06A0BH,07F33H,07FB8H,06E91H,07670H,06E2EH,05948H + .word 05547H,0190BH,018C7H,01860H,014A7H,01CC5H,018A4H,01042H + .word 01463H,01884H,024A3H,03061H,04925H,0768FH,061ECH,05168H + .word 04D26H,01C63H,01842H,01C42H,0726EH,06E4EH,05588H,05127H + .word 02DB6H,01CEDH,01D2CH,01C62H,038A4H,03CE6H,018EDH,018A3H + .word 061ABH,0722FH,0764FH,0726FH,0662FH,0516AH,0518BH,01061H + .word 04124H,05DECH,05DEBH,0724FH,07AB2H,05DEFH,055EEH,0498CH + .word 01861H,06E4DH,0724DH,07EAFH,07EB1H,07ED3H,07AB1H,076F4H + .word 014A8H,01C41H,07A6EH,07EB0H,07ED2H,014C9H,01C40H,07ED1H + .word 07F76H,07F77H,07F97H,07F15H,076F3H,018A8H,01C61H,04D44H + .word 059A7H,07F12H,07F96H,07FB7H,05DC9H,07334H,07F78H,01CEAH + .word 05565H,07A6DH,07F11H,07F32H,07F54H,07F75H,07B14H,06EF2H + .word 018EEH,03481H,07ECFH,07F53H,07F74H,07B96H,07FD9H,07FDAH + .word 061C8H,07EF1H,07F95H,07B33H,044C1H,076F1H,02C81H,059ABH + .word 04903H,06187H,07ED0H,044A1H,07EF0H,044E4H,028E6H,076B2H + .word 0660BH,014CBH,02420H,07F57H,03CA2H,04D6AH,07AF4H,03D05H + .word 02572H,01CA5H,024E6H,02972H,039F7H,02550H,02D07H,03CC1H + .word 05587H,06A50H,04947H + +BHMUGC_P: + .word 254 + .word 04814H,07AB1H,07A70H,0722EH,05989H,069ECH,06A2DH,0720CH + .word 0724DH,07AAFH,07AD3H,07F13H,07F55H,07F34H,0726FH,07270H + .word 07691H,061ECH,04D26H,055ABH,055ECH,030E6H,03D28H,03107H + .word 020A4H,01462H,024C5H,01CA3H,01CA4H,01C84H,01041H,01442H + .word 02083H,01C83H,024E6H,01021H,0C01H,01883H,03548H,020C4H + .word 024E4H,03947H,014C9H,018C9H,018CAH,014A7H,014A6H,014A8H + .word 018EAH,01085H,01086H,01084H,059AAH,069EEH,06A2EH,069EBH + .word 061CBH,06E4EH,0660DH,05DECH,04149H,04DACH,02D07H,01042H + .word 01884H,01863H,01842H,0418AH,05A91H,0460DH,01C82H,018C6H + .word 014EAH,010A7H,0622EH,0624FH,06A70H,07739H,076B2H,0768FH + .word 07EF4H,04106H,0416AH,028C5H,0C41H,01483H,01862H,01461H + .word 028E3H,04E0CH,04E2FH,024E5H,02D05H,01860H,014C7H,018EBH + .word 01CECH,06EB2H,07B57H,04D47H,04504H,04D68H,061AAH,05147H + .word 05DCAH,018A3H,01882H,05589H,049A9H,03546H,05EB2H,03D6AH + .word 028A4H,02062H,02041H,03062H,03483H,03883H,040E5H,05168H + .word 07F14H,06E91H,03D48H,0C21H,01C80H,0190BH,03105H,03927H + .word 030C5H,04D28H,05127H,07B14H,01062H,0800H,0C20H,01441H + .word 01CA6H,01087H,038E4H,04547H,04905H,0498AH,018A4H,0820H + .word 01D0CH,0190CH,034A4H,0660BH,03128H,01040H,04188H,01CEBH + .word 028E6H,02C63H,040E7H,07AB2H,02D28H,020E9H,018CBH,0556AH + .word 01463H,05E0EH,04128H,03CE7H,076D3H,01063H,018A5H,0190DH + .word 076F4H,07F35H,07F76H,038C2H,01440H,07B35H,07F97H,07F77H + .word 07F98H,055CBH,04103H,0562DH,01061H,01D0DH,07F54H,020C5H + .word 0C00H,01CC5H,05E0BH,07F56H,06E4DH,03D05H,01CA5H,01D0EH + .word 07F75H,02883H,01022H,01C63H,02507H,05671H,045CCH,01487H + .word 07F36H,041ACH,01C85H,024C4H,02D03H,02480H,01485H,07714H + .word 048E3H,05E0DH,03D8AH,03DA9H,02CE1H,03D8CH,06AD1H,05545H + .word 07F78H,01443H,06B15H,01486H,040C3H,05987H,07F15H,024C3H + .word 018A8H,03460H,061A9H,01CEAH,02550H,029B3H,02973H,02971H + .word 0212EH,07B56H,0210DH,0214FH,02572H,0254DH,0294FH,031D4H + .word 01D2CH,0356BH,0250BH,01D2DH,07757H,07FDAH,07B34H,05DEEH + .word 04D45H,07B55H,07FD9H,06ED3H,01464H,0C22H + +BHMUGD_P: + .word 254 + .word 04814H,01D2FH,0190DH,02573H,01D0EH,014CBH,014EAH,014CAH + .word 018EAH,018CBH,014EBH,018CAH,018EBH,014C9H,01462H,0C41H + .word 01042H,014A8H,018ECH,018A5H,018A4H,01463H,0C21H,0821H + .word 0820H,014C8H,01041H,01CC4H,018C7H,01484H,0C20H,01020H + .word 01485H,01CA4H,018C8H,01884H,01885H,01021H,01000H,01C20H + .word 01883H,01486H,014A5H,01C84H,01441H,01800H,03082H,014ECH + .word 0190CH,01882H,014A7H,01062H,020A4H,01841H,02841H,04507H + .word 0190BH,01CEDH,018A7H,01421H,02020H,02400H,040E5H,05168H + .word 018EDH,01487H,02420H,04D47H,0598AH,014A9H,01CECH,01D0DH + .word 014A6H,01C41H,03081H,04906H,05989H,014AAH,01483H,02062H + .word 02441H,04505H,05568H,02130H,018C9H,01D2EH,0210EH,038A3H + .word 04926H,05147H,02994H,01D0CH,01863H,01400H,01C00H,05148H + .word 05969H,0212FH,01061H,0C42H,01442H,05569H,05549H,05149H + .word 02151H,018A8H,01481H,03CA4H,05528H,01488H,01CA3H,01420H + .word 02C41H,05D8AH,05949H,05589H,05D69H,018A9H,01CA5H,02C61H + .word 05548H,0618AH,05D49H,05927H,0658AH,01862H,0558AH,04D06H + .word 04CE5H,054E6H,02000H,04D68H,044E6H,04928H,01821H,03062H + .word 04927H,0596AH,02552H,018AAH,01860H,01820H,03CC4H,065CBH + .word 010A9H,01461H,05189H,05DAAH,065EAH,03CC3H,059AAH,05DCAH + .word 01C63H,02820H,061CBH,05DCCH,05D89H,061AAH,065CCH,01CE9H + .word 024C5H,05968H,065EBH,06A0DH,02150H,018EEH,01CC9H,02483H + .word 02021H,069CBH,069ECH,05169H,02995H,02572H,0190EH,03461H + .word 061ABH,04D27H,02DB6H,01D50H,01CEAH,020C3H,01C83H,02CA4H + .word 05127H,065A9H,069EBH,06E0EH,01D2DH,01D30H,02571H,02173H + .word 01CEBH,01C82H,02862H,06E0DH,05947H,07A71H,07AB0H,01D0FH + .word 05988H,065ABH,071EDH,0720CH,06E0CH,065AAH,06DEBH,07EF4H + .word 07F56H,0212EH,024C6H,01842H,065CAH,0762CH,07A8FH,07EF2H + .word 07F34H,01861H,01440H,030A4H,04905H,0722CH,0768FH,0764DH + .word 01C62H,01840H,034C4H,04D46H,06E2DH,0766EH,07F13H,07A6EH + .word 02840H,061CAH,0722DH,02CE5H,02883H,06A0CH,06DCAH,07AD1H + .word 02861H,02C60H,059A9H,05DA9H,071EBH,01C61H,030C3H,04D67H + .word 05D88H,06187H,069C9H,02551H,0516AH,069EAH + +BHMUGE_P: + .word 255 + .word 04814H,0C21H,01021H,01C63H,02063H,02464H,02484H,02483H + .word 02463H,02884H,02C84H,03484H,038A4H,044C5H,04CE5H,05105H + .word 05968H,05D8AH,030A5H,034C6H,038E6H,038E7H,034E7H,030C6H + .word 034A6H,028A4H,02462H,02863H,02C83H,03084H,05527H,05947H + .word 030A4H,03CE6H,04107H,04527H,04928H,04927H,04948H,04D49H + .word 04528H,03CE7H,038C6H,034C7H,03083H,04905H,04106H,04507H + .word 04D48H,05169H,05569H,0598AH,0598BH,059ABH,055ABH,0516AH + .word 05149H,04D69H,044E6H,02864H,04D47H,0558AH,05989H,061CBH + .word 065EDH,061EDH,05DCCH,0518AH,03D07H,05148H,05589H,061CCH + .word 05DA9H,06A0DH,0764FH,0724FH,06E2FH,0724EH,06E2EH,0660DH + .word 0558BH,034C5H,034A5H,034A4H,038C5H,05DAAH,069EDH,06A0EH + .word 06E2DH,0722DH,07A4FH,07E70H,07A90H,07AB0H,07ED1H,07AB1H + .word 07690H,06E4EH,06A2EH,04D28H,065C9H,065EBH,07A70H,07E90H + .word 07EB0H,07EF2H,07ED2H,07EB2H,0766FH,061ECH,061AAH,061A9H + .word 065CAH,06E0CH,0762EH,0764EH,07E6FH,07EB1H,07A91H,07650H + .word 065ECH,03CC6H,05D89H,0618AH,065CBH,06DECH,0720CH,0762DH + .word 07A6FH,07A6EH,07A4EH,07E8FH,061CAH,061EBH,05DABH,04548H + .word 04127H,05548H,06189H,069EBH,06E0BH,0722EH,069ECH,04D07H + .word 05128H,05147H,05D88H,06A0CH,06E0DH,061ABH,05DCBH,04908H + .word 04907H,0720DH,055AAH,05D6AH,065ACH,0618BH,0658BH,06DABH + .word 069CCH,0760DH,07A2EH,0720EH,059AAH,06DCDH,07A51H,07A30H + .word 075EEH,071EDH,07E4FH,0762FH,07A71H,07A73H,07E92H,0660CH + .word 05D27H,06568H,06589H,07ED3H,07E71H,04CC7H,050E7H,05928H + .word 065A9H,0724DH,06E2CH,0616BH,069ADH,05549H,04D27H,05568H + .word 06A2DH,05DCAH,07670H,07E91H,0722FH,07671H,07270H,0722CH + .word 07EF3H,07EF4H,07A8FH,0766EH,06E4DH,07A92H,07AB3H,07AB2H + .word 0768FH,07250H,07F14H,07F36H,0726EH,059A9H,07F55H,06188H + .word 07ED0H,07F33H,07F75H,07AF2H,07A2DH,07F13H,0620CH,05DEBH + .word 0760CH,07F35H,0660BH,05DACH,03442H,03841H,0762CH,06DEDH + .word 06E0EH,071EBH,07EF1H,07F57H,07F15H,07F76H,07F98H,07F77H + .word 07F34H,06A2CH,07B14H,07AF3H,07B55H,07F97H,07AD2H,0726FH + .word 07AD1H,07F12H,07F54H,07F56H,07AD3H,07A6DH,07A8EH + +BHMUGF_P: + .word 253 + .word 04814H,061ABH,059AAH,05968H,05569H,04D49H,04D8AH,04549H + .word 03D28H,020A4H,018A6H,018A4H,02D6BH,06319H,07BDEH,06B3AH + .word 01464H,01485H,01487H,0212AH,03DF0H,04613H,041F1H,03DEFH + .word 0358DH,02D2AH,018C7H,01462H,02908H,0316CH,020C6H,01084H + .word 014A6H,05D89H,0518AH,03D07H,03507H,01862H,05ED5H,077BCH + .word 05273H,0252CH,03E13H,05ED9H,0675DH,056B9H,0398DH,0314BH + .word 02D4CH,0358FH,020E9H,018C9H,02508H,01D07H,04969H,030E6H + .word 01441H,03549H,05250H,05693H,04611H,05F19H,077DFH,052B7H + .word 041F2H,056B5H,04E93H,056F7H,014A5H,05547H,028C5H,01CA3H + .word 0358AH,04A31H,03DAEH,028E9H,06F5AH,073BEH,0673BH,04A56H + .word 03DF2H,035B0H,039B0H,066F9H,035CFH,010A6H,01086H,04D27H + .word 05127H,05589H,04D89H,051ACH,030A5H,030C5H,030C3H,02CE3H + .word 04E2FH,06F7CH,0312BH,07BBDH,04E74H,04E96H,04E53H,05ED6H + .word 018EBH,01D0CH,014C9H,01085H,04D69H,024A3H,039ABH,05A95H + .word 04A32H,056D8H,0296FH,018ECH,010A8H,061CBH,05DECH,04948H + .word 03949H,02CE6H,01C83H,05AB7H,06B39H,01D2CH,018EDH,0190BH + .word 018EAH,04506H,04947H,0456AH,03528H,062D5H,05676H,014A4H + .word 01484H,014CAH,018CBH,010A7H,03CC5H,048E6H,04D48H,04127H + .word 0458AH,01020H,01461H,0737BH,045EFH,041CBH,01860H,014C7H + .word 040C5H,059ACH,04D6AH,01861H,03147H,041CDH,02D8FH,01CEAH + .word 01883H,03CE6H,05DCBH,041ACH,05255H,02994H,02571H,01087H + .word 04527H,05128H,04949H,01041H,02D48H,0739BH,05AB8H,01CC5H + .word 0190CH,0190DH,04528H,044E6H,04D28H,02D07H,01C82H,024C5H + .word 0737DH,01CECH,01C61H,062F7H,062FAH,06F3DH,0292CH,01D0DH + .word 04507H,01440H,04106H,0C20H,0C21H,01841H,07BDDH,018CAH + .word 04107H,02D25H,056B1H,01882H,014A7H,0C41H,024C2H,01D2EH + .word 024A0H,01460H,02993H,02972H,01CEBH,02D03H,01CEDH,0212FH + .word 01D30H,01840H,018A9H,05E0DH,055CBH,055CCH,01C80H,0620CH + .word 02CA4H,02060H,01060H,018A3H,028E0H,061ECH,02507H,01483H + .word 01040H,02463H,038A4H,04DCDH,04547H,038A3H,01061H,038C3H + .word 04968H,02862H,06A0DH,01C41H,06E50H,0660EH,0516AH,04D68H + .word 01C60H,06A4FH,03905H,03522H,0396BH + +BHMUGG_P: + .word 254 + .word 04814H,035ACH,01CE6H,014A4H,01084H,01062H,01042H,01483H + .word 01022H,01021H,01001H,01063H,01484H,0C21H,04E52H,0358BH + .word 014A5H,01000H,01884H,01C84H,020A4H,024C5H,020A6H,020E7H + .word 04610H,02D4AH,02508H,01043H,01400H,01421H,041EEH,0C42H + .word 0C41H,0C00H,01C64H,01C83H,034C5H,03507H,030C6H,02CC5H + .word 02CE8H,02D28H,01885H,04A30H,0316BH,01800H,02063H,02C84H + .word 04507H,0518AH,05549H,04D48H,04D07H,04928H,0492AH,0454BH + .word 0416CH,03509H,05272H,03DCEH,05271H,01463H,01401H,02000H + .word 04D4AH,03863H,048E5H,038A4H,048A1H,069A9H,07A0DH,07A2EH + .word 0764FH,0762EH,07A70H,06169H,06DECH,0760DH,071ECH,069CBH + .word 069ABH,065ABH,0658AH,06DADH,069B0H,06E75H,05694H,05693H + .word 04E51H,01CA5H,02C22H,038A3H,040E6H,05128H,044A1H,050E5H + .word 06DCBH,05D68H,05927H,05127H,065AAH,06189H,06168H,069AEH + .word 069F1H,02820H,048E8H,0516CH,034A4H,03CC5H,044E5H,040A3H + .word 06E0DH,061AAH,04D05H,05547H,0C43H,018A5H,03464H,040E8H + .word 03CE6H,03483H,044A4H,05D47H,06DCAH,06DEBH,0618AH,05AD6H + .word 01464H,03000H,061AEH,06147H,06568H,05AB3H,05AB4H,0616CH + .word 0556BH,03462H,06569H,071CBH,0658BH,0616AH,06149H,05D8AH + .word 04CE3H,07E4FH,0460EH,03041H,061ABH,04A32H,0821H,02C63H + .word 04108H,06148H,05AD5H,04A0FH,05674H,01C42H,0618BH,050E6H + .word 03DEDH,039ADH,01442H,048E6H,05105H,041EDH,01822H,05D89H + .word 061CCH,05DACH,01CA6H,0C22H,0800H,0464FH,01041H,0C20H + .word 03E0DH,01420H,02C41H,03169H,06738H,018A4H,069CAH,069EBH + .word 06F7BH,02926H,0737BH,01462H,065CBH,077BCH,0820H,05AD3H + .word 0460DH,0739AH,06317H,044C3H,04236H,04E4FH,03DCBH,062F4H + .word 062F7H,01020H,02150H,039F3H,04E91H,06B79H,0841H,0296EH + .word 02DB0H,03E15H,06B17H,02D49H,01D0EH,02552H,035AFH,05291H + .word 06758H,0190DH,018EBH,0256EH,014CBH,03E0FH,056D5H,04652H + .word 035CFH,018C9H,0C63H,05928H,02130H,018ECH,0212CH,0296DH + .word 04E93H,014EBH,014EAH,0210BH,014CAH,018EAH,018CBH,0254DH + .word 01D0BH,014C9H,02994H,0212FH,0801H,014A9H,014ECH,018CAH + .word 014A6H,02C83H,01485H,02483H,01CC5H,01C41H + +BHMUGH_P: + .word 252 + .word 04814H,01001H,01000H,01084H,01063H,01042H,01083H,0C42H + .word 01022H,01021H,01062H,01082H,0C81H,01484H,0C21H,0C22H + .word 010A5H,014A5H,01884H,020A6H,01C85H,018A4H,01043H,014A4H + .word 01064H,01020H,01401H,01801H,02401H,030E7H,03529H,028E7H + .word 020A5H,01CA5H,01CC6H,020C6H,01463H,02402H,03065H,03CE6H + .word 04D2AH,0494AH,03D49H,024E6H,01C84H,01883H,02507H,02D6BH + .word 02508H,045ADH,02C01H,03C01H,0614DH,07A74H,06E31H,04528H + .word 034E5H,03549H,01863H,01442H,024C6H,01864H,01462H,01483H + .word 018A5H,014A3H,039CEH,0318CH,06E75H,0352AH,03423H,0556CH + .word 055ADH,034A4H,0498CH,02D07H,024E7H,020E7H,0C41H,010A3H + .word 03E10H,056B4H,069F1H,06634H,048C8H,065D0H,05D8DH,04D8BH + .word 0314AH,020C7H,01041H,01081H,041EDH,056B3H,0698DH,02464H + .word 04001H,0696EH,07A13H,065ACH,05569H,055EDH,01CC5H,020E6H + .word 020C5H,01482H,02949H,06758H,069AAH,069AFH,06633H,030E8H + .word 01421H,01443H,01822H,04844H,0694DH,075F0H,0516AH,01CA4H + .word 069F2H,03421H,04063H,0592BH,05D6CH,04DCCH,02928H,014A2H + .word 065F2H,05A33H,03C24H,05CEBH,04969H,0416AH,01CA6H,06211H + .word 03D6AH,03C22H,054EAH,07233H,035ABH,065AAH,06DECH,065EFH + .word 0658EH,04D29H,06168H,065EDH,05DCCH,04465H,0596BH,03908H + .word 020E8H,01885H,020C3H,01881H,02105H,06189H,069CBH,0660EH + .word 01841H,02863H,03843H,03C64H,04507H,049CEH,010A4H,06989H + .word 055EEH,02063H,044A7H,0552AH,02C03H,04CA9H,061B0H,05DEFH + .word 014C6H,0C01H,02083H,06E0CH,0664FH,05D2CH,055AAH,0418AH + .word 0C00H,0720DH,0660DH,03D2AH,02CA5H,071ECH,05D68H,05947H + .word 040E8H,028C5H,06E2EH,05DAAH,03507H,0398AH,069C9H,069EEH + .word 040A5H,05529H,03D27H,0C20H,05D89H,059F0H,03463H,038A4H + .word 065CBH,048E6H,055F0H,01400H,02041H,05107H,040C5H,05927H + .word 0821H,04D89H,0820H,05547H,05505H,05DCBH,05589H,04D06H + .word 039ADH,04947H,03DCDH,044E6H,01485H,04149H,0422H,05274H + .word 05928H,04A32H,045F0H,02D2AH,05A94H,041EFH,024C7H,014A6H + .word 06B5AH,03083H,03CC5H,048E5H,077BDH,04E52H,02C83H,04D05H + .word 0739BH,0210BH,0294CH,0316DH + +LXMUGA_P: + .word 254 + .word 00H,02C43H,03444H,04466H,050E9H,02023H,01823H,01443H + .word 01C44H,01C43H,01C23H,02024H,02044H,02444H,038E8H,038E7H + .word 02842H,03085H,01C21H,02022H,0516AH,05D69H,069ABH,069ECH + .word 0762FH,07271H,07A70H,07A91H,07AB3H,07AF5H,07F15H,07F17H + .word 07AF6H,07F38H,07F59H,07F7BH,07B7CH,07BBDH,054EAH,01423H + .word 034A6H,059F0H,04128H,02843H,04D6BH,02043H,044C7H,05528H + .word 05927H,06147H,06169H,07AD3H,03C44H,02423H,01822H,01802H + .word 01C22H,02823H,02844H,051EFH,03D08H,02C63H,02421H,038A5H + .word 05506H,05D47H,05905H,0720DH,07692H,058EAH,01C24H,04DAEH + .word 0458CH,02C85H,02C42H,04CC5H,050C5H,07691H,076B4H,034C9H + .word 051F0H,0414AH,034C6H,04929H,04CE6H,04883H,04CA4H,06E0DH + .word 0724FH,01421H,0454DH,06273H,03D07H,04549H,04D8BH,04949H + .word 038A3H,04D07H,044A3H,06189H,0618AH,07672H,02464H,02466H + .word 051F2H,06AB6H,06275H,05E52H,06AB5H,038C5H,05549H,044A5H + .word 044C5H,05D8BH,061ACH,065CCH,06E2FH,04065H,02045H,02CA8H + .word 06EF9H,06695H,06AD5H,05A0FH,04107H,0558BH,059CDH,050E6H + .word 05D6AH,069EEH,0620FH,06A50H,040A7H,06EF6H,06651H,051ACH + .word 061EEH,06A30H,059EFH,05D89H,0733AH,0779DH,06693H,059ACH + .word 06A93H,03C86H,02866H,05A54H,06F19H,04DACH,055CDH,06630H + .word 02422H,03D2CH,0777DH,07339H,05A31H,0775BH,07317H,03483H + .word 03462H,03863H,028A7H,05A34H,06F1AH,0560FH,05E51H,04DF0H + .word 044E8H,059AEH,072D5H,03063H,04D2BH,03043H,02465H,05610H + .word 02822H,02064H,02CEAH,04DCFH,038A6H,072F9H,034C5H,05653H + .word 0412AH,01843H,076F7H,02863H,01422H,0416EH,04DF2H,066D8H + .word 07BBEH,066D6H,01023H,04590H,07FFEH,062B6H,03D2AH,02485H + .word 01842H,0352BH,02CC9H,07FDEH,07FDFH,01C66H,05E96H,07BFFH + .word 07FFFH,07BDEH,05A32H,0396EH,07BDFH,077BFH,03D4BH,01022H + .word 01442H,05634H,0777EH,0496CH,0592CH,03CA7H,01043H,03D6DH + .word 06F5AH,02488H,05633H,01402H,02487H,030EAH,05675H,06EFAH + .word 06719H,077DEH,0352DH,05A77H,06F5CH,0733CH,02065H,049B0H + .word 03509H,07BFEH,0458FH,066FAH,01C42H,01403H,038EAH,0510AH + .word 038A7H,03CA6H,06DF1H,0596DH,0512CH,044A8H + +LXMUGB_P: + .word 252 + .word 00H,07F59H,07F38H,07AF5H,07AB3H,07A91H,07670H,07A4FH + .word 0722EH,0720DH,06DCAH,06D88H,06147H,05D26H,05526H,04CE6H + .word 03CA4H,02422H,01C22H,01402H,0C02H,01023H,0C22H,01423H + .word 01022H,01443H,01802H,02064H,02864H,02403H,02823H,02802H + .word 02822H,02C23H,01422H,071ECH,06589H,05D47H,04CC4H,040A4H + .word 03021H,02442H,01C43H,01002H,01823H,02043H,030A4H,02402H + .word 07B15H,06987H,06125H,05504H,02821H,01C02H,0C21H,01421H + .word 02C84H,02021H,02C22H,06E0DH,061AAH,06126H,03043H,01C23H + .word 01842H,0822H,02423H,01822H,06E2FH,065CBH,06568H,05925H + .word 050E4H,044A3H,02842H,02022H,02443H,034C7H,01001H,02843H + .word 02824H,06DECH,06187H,04CC3H,048A2H,038A3H,02C42H,02C63H + .word 034C5H,038E6H,01801H,01021H,061EDH,069EEH,05D68H,04D05H + .word 01843H,02803H,06A71H,06A92H,072B3H,072B4H,06E4FH,05DAAH + .word 05D89H,04948H,040E6H,040E5H,038E5H,01C41H,01821H,02485H + .word 03D08H,02002H,072F5H,07291H,0660DH,051ABH,04D27H,04107H + .word 02462H,01C21H,02463H,02023H,059CDH,0660FH,06651H,05168H + .word 051ACH,02863H,02042H,02063H,038E8H,05147H,05DCBH,059ACH + .word 055CDH,02C62H,06A72H,06A91H,0664FH,055CCH,03083H,06272H + .word 06230H,05E0FH,04D8AH,02C83H,03508H,01C63H,04DACH,01C01H + .word 059EEH,0496AH,04D8BH,051CCH,055EDH,04549H,0416AH,06EB4H + .word 055CBH,04128H,01401H,06ED4H,0498AH,05E30H,01C42H,051CDH + .word 051EEH,02483H,030E9H,0802H,04105H,04947H,0498BH,03D07H + .word 06693H,0560FH,02CC5H,01400H,04DABH,049ABH,01000H,05E52H + .word 05E51H,04DCDH,04DCEH,072F6H,051EDH,07338H,07359H,06AD7H + .word 024C6H,0392BH,0458DH,066D6H,0735BH,06F19H,03D4AH,07317H + .word 06695H,051AEH,066B6H,05E74H,0779DH,05E94H,05210H,02CC7H + .word 05E93H,05252H,07B9DH,07B7CH,06AF8H,05A33H,066F9H,06F3AH + .word 0777CH,0733BH,06AB6H,05612H,03D6CH,07FFEH,07BBEH,045AEH + .word 0416CH,0C42H,0779EH,04DF0H,02CC8H,01C44H,02086H,05EB7H + .word 051F1H,049AFH,0352AH,04E32H,028A6H,02066H,030EAH,01444H + .word 03065H,02C43H,0512CH,04CEAH,048A8H,040A7H,04466H,04065H + .word 03C45H,03C65H,03844H,03C44H + +LXMUGC_P: + .word 255 + .word 00H,03444H,04045H,05066H,03C44H,03024H,02824H,02844H + .word 02C44H,03045H,03044H,03065H,038A7H,04D4CH,065F0H,069EFH + .word 0598BH,069ECH,0720EH,0764FH,07A71H,07AB2H,07A92H,07671H + .word 07270H,0724FH,06E2EH,07AB3H,07EF5H,07F16H,07F37H,07670H + .word 07E91H,0766FH,0724EH,0722EH,0722FH,07272H,02444H,02424H + .word 02C45H,03445H,06E52H,059ADH,05D6AH,0720DH,07650H,07692H + .word 076B3H,07AD4H,07AD3H,07691H,07250H,07EF4H,07AF4H,07A91H + .word 076B4H,02C43H,02843H,02C24H,03023H,03043H,03865H,07230H + .word 0616AH,0658BH,0760EH,07AB1H,0722DH,06DCBH,07EB2H,07EB1H + .word 0764EH,07AF5H,07B16H,040A6H,069ACH,06E0DH,07ED2H,07A90H + .word 07AD5H,02423H,03465H,03866H,048C9H,06DF0H,0616CH,07EF6H + .word 07ED4H,07EB3H,07A93H,07B17H,02842H,02823H,03844H,05528H + .word 061ACH,05928H,0658AH,06589H,069AAH,065AAH,05968H,065CBH + .word 07ED3H,07F58H,03864H,0514AH,065ABH,065CCH,06A30H,076D4H + .word 07F15H,0762EH,07F36H,048C6H,076D6H,07AF6H,072B3H,02443H + .word 03464H,0618BH,054E5H,054E7H,044A5H,0596CH,05DAEH,06651H + .word 06E74H,07251H,07F79H,04CC5H,0660FH,04929H,044E8H,065EEH + .word 030A6H,02C85H,038C7H,0492AH,05DCEH,05107H,048A6H,0558DH + .word 044E7H,02485H,02CC7H,0452AH,04508H,04461H,04063H,04C66H + .word 06610H,0516CH,044C5H,03882H,03C84H,03863H,048A4H,05D27H + .word 06567H,058E4H,054A3H,05084H,04064H,02043H,03C64H,05548H + .word 04D06H,06569H,069A9H,05D05H,04C83H,03822H,02044H,02445H + .word 040A8H,02863H,02C86H,02023H,06E4FH,0720CH,03084H,02864H + .word 01C23H,01C43H,07AB4H,02845H,02825H,034C8H,01C44H,01823H + .word 02464H,07F17H,07F39H,07F59H,07B38H,07F38H,050A8H,02C66H + .word 04D6EH,03D2AH,02C65H,038A9H,06653H,0762DH,07A6FH,07B59H + .word 07F7AH,07F5AH,07B58H,01C24H,038CAH,051AFH,01822H,0760DH + .word 07F7BH,07B5AH,01843H,01C22H,071ECH,07F9BH,07B37H,07B18H + .word 07B39H,03CE8H,034C7H,071EBH,02024H,04D8EH,02865H,0618AH + .word 07E92H,07ED5H,07693H,01C42H,061ABH,0760CH,058A8H,02022H + .word 07271H,07AD6H,04065H,01842H,061AAH,07F18H,050E9H,04066H + .word 058EAH,07AF8H,02C64H,01802H,034C5H,0558AH,07F9CH + +LXMUGD_P: + .word 254 + .word 00H,076B4H,07B18H,07F18H,07AF6H,07AD4H,07AB4H,07692H + .word 07271H,07670H,0764FH,0720DH,06DECH,069CBH,069AAH,06168H + .word 05D06H,050E6H,04CE7H,05128H,059ADH,04D29H,040C6H,04084H + .word 07672H,07A72H,07250H,065CDH,04528H,02443H,01001H,01022H + .word 01443H,01002H,01423H,01822H,03085H,03423H,03823H,03863H + .word 03044H,03403H,03424H,03023H,02422H,0C22H,07B38H,07F39H + .word 07292H,06E0EH,06DEDH,06DCCH,06DCBH,05506H,0512AH,0492AH + .word 04D6BH,044C5H,05D6AH,0618AH,06E51H,0558CH,034C7H,01422H + .word 01023H,0C03H,01802H,02864H,03004H,03824H,02423H,07F17H + .word 07AF5H,07AD5H,076B3H,07691H,0722EH,06E0DH,06DEBH,069CAH + .word 06989H,06147H,04D6CH,04D07H,05989H,07270H,05DEEH,02C85H + .word 01421H,03422H,07251H,0722FH,0720EH,05928H,06211H,06A52H + .word 04507H,07671H,07293H,0C01H,01021H,02464H,0C43H,07F38H + .word 07F5AH,07F59H,076D5H,06589H,05969H,0596CH,05DF0H,06E94H + .word 0660EH,06E30H,01844H,03024H,076B2H,07AB2H,07650H,06547H + .word 05D26H,05549H,0556BH,065F0H,06E92H,07AF4H,0660DH,05D8BH + .word 04948H,01000H,01C23H,02C43H,03022H,03043H,03002H,07B15H + .word 072B3H,0558BH,076D3H,059CDH,01801H,01C43H,03003H,07651H + .word 05D27H,05906H,069EDH,065ACH,07693H,01823H,02C24H,02C23H + .word 07EF5H,054E4H,054E5H,050E5H,04CC5H,050C5H,069CCH,03D28H + .word 01C22H,02C22H,02022H,07B39H,076F7H,05926H,04483H,03C84H + .word 04063H,069ACH,055ECH,01402H,07B19H,06ED7H,03529H,02485H + .word 02CA7H,040E8H,03021H,05927H,02801H,02023H,03864H,048A4H + .word 055AEH,0452AH,05905H,054C4H,05505H,03883H,02401H,02823H + .word 01C41H,0616AH,05907H,01400H,02C02H,03441H,01401H,061CBH + .word 050C4H,02802H,05D47H,07ED4H,06E4FH,050E4H,0C02H,0C23H + .word 0822H,030A6H,02822H,07A91H,07ED3H,020A6H,069ECH,01024H + .word 01044H,038E8H,07A70H,071ECH,06DCAH,0762FH,069A9H,06988H + .word 048A3H,02C03H,071EAH,06DA9H,071A9H,06567H,06146H,06DC9H + .word 02803H,07A6FH,0762EH,069A8H,06DA8H,058E5H,071C9H,06566H + .word 06545H,06125H,054C3H,06987H,0823H,0802H,02402H,0720BH + .word 06546H,06126H,02403H,07A4DH,06967H,038C6H + +LXMUGE_P: + .word 251 + .word 00H,07739H,0775BH,072F8H,07B3AH,07B5BH,07B7CH,072D6H + .word 06E73H,0660FH,05D8BH,05D69H,05528H,0558DH,06E30H,04D28H + .word 04CC5H,05906H,050C5H,04CA4H,04CA5H,04463H,04043H,04063H + .word 04065H,03C64H,03843H,04064H,03C44H,04044H,03C43H,03C22H + .word 03842H,07B38H,0777DH,07B7EH,07693H,065CCH,05D6AH,0554AH + .word 06A32H,05927H,05926H,050A4H,04883H,04443H,03C42H,07BBFH + .word 06E51H,05DACH,05549H,076B5H,06E93H,0558BH,05507H,05505H + .word 04C84H,04863H,04442H,04042H,0779CH,07B9DH,07FFFH,06F19H + .word 06694H,059CEH,040E8H,0516EH,06611H,05547H,048A5H,048A4H + .word 04464H,04485H,050E6H,05907H,04884H,0731AH,06ED7H,06653H + .word 05E11H,06A74H,07B9BH,05E12H,07297H,04D07H,04CC6H,05928H + .word 05D48H,05D27H,06148H,06127H,05948H,06E95H,061EEH,0492BH + .word 03CE9H,0450AH,0498DH,04DCEH,055CFH,0556DH,0658AH,069AAH + .word 06169H,06589H,06569H,0618AH,03865H,03423H,03444H,03445H + .word 03424H,03844H,0518EH,06E96H,065ABH,065ACH,069EDH,06DEEH + .word 069CCH,03C85H,03845H,03443H,040C7H,04885H,06E0EH,06E0FH + .word 07651H,07251H,07272H,07250H,0722EH,06DEDH,05D68H,06F3AH + .word 06F5BH,062B6H,04D4CH,03464H,03824H,05949H,061ABH,0722FH + .word 07671H,07AB3H,065AAH,04445H,05066H,04865H,03045H,02C44H + .word 03024H,03025H,03465H,03446H,03846H,05969H,06A0FH,07AB5H + .word 07AD6H,07271H,06E0DH,06E2FH,03C65H,03C45H,044A6H,0720EH + .word 07AD4H,06E2EH,03044H,069ACH,06DCDH,07650H,07AD3H,0764FH + .word 06DCBH,069ECH,02C45H,06149H,0616AH,069CDH,02C24H,05D49H + .word 06168H,02C23H,058E5H,058E6H,05D26H,06147H,06128H,059AFH + .word 061F0H,040A8H,044EAH,059F1H,06232H,0618BH,0658BH,07230H + .word 04045H,02C43H,048E9H,038A8H,04D2CH,0552BH,07274H,02824H + .word 03CA7H,06674H,048A6H,069D0H,065AEH,05D6CH,02C25H,07A73H + .word 05D2AH,0656CH,03425H,048EAH,04D6EH,06A0EH,07AF8H,06DECH + .word 02844H,075EDH,0720DH,03065H,06A76H,0762FH,0720FH,076D5H + .word 071EBH,06DA9H,034A7H,05E53H,0762EH,07A71H,07670H,03C63H + .word 03863H,04DAEH,065CBH,07A91H,050E8H,06DCCH,07F58H,07691H + .word 07F37H,0764DH,07A6FH + +LXMUGF_P: + .word 253 + .word 00H,03843H,03443H,03423H,03023H,03444H,03844H,04064H + .word 04484H,048A4H,054C5H,05927H,06169H,065ABH,069EDH,065EDH + .word 06A0DH,06E0EH,065ECH,0660CH,06E6EH,07690H,076D1H,05DAAH + .word 04D06H,03842H,03402H,03823H,02823H,01C22H,01022H,0C22H + .word 03422H,03022H,02C23H,02C43H,02C22H,03043H,03C43H,04063H + .word 050C5H,069CCH,069ECH,069CBH,065CCH,065CBH,061AAH,0728FH + .word 05968H,04483H,03421H,03822H,03803H,03403H,02822H,01822H + .word 05507H,065AAH,06DECH,05D68H,0726FH,0660BH,05D89H,04CE6H + .word 03821H,03C23H,01422H,03C63H,02423H,03863H,04485H,04CC6H + .word 05528H,05D6AH,061ABH,05548H,03885H,03C24H,03824H,03424H + .word 02402H,01002H,05106H,04CC5H,044A4H,04084H,02422H,050E6H + .word 05928H,0618AH,06189H,05947H,048E5H,03802H,01443H,05948H + .word 05107H,05D48H,05526H,05527H,0722FH,06E4DH,048C4H,03463H + .word 048C7H,04CE7H,05949H,05126H,061ECH,048C6H,061CCH,03042H + .word 02C21H,048C5H,05D69H,05105H,03C42H,04CE5H,03442H,044A5H + .word 05926H,048C3H,07A91H,0724DH,03C22H,05969H,05506H,07670H + .word 05DCAH,044C5H,02443H,04CC7H,04D05H,03C83H,050E5H,04CE4H + .word 048E6H,0556BH,04528H,04085H,05D26H,03841H,0618BH,04CC4H + .word 048E7H,059EFH,04DADH,03485H,05D49H,040C6H,0658BH,04D28H + .word 055ACH,05E31H,030A6H,0616AH,069CDH,04883H,04D4AH,055AEH + .word 06253H,055F0H,03063H,02001H,02022H,065CDH,05A33H,06ED8H + .word 05E53H,02C44H,02464H,06DEEH,065ACH,06254H,0731AH,0458CH + .word 05127H,040A4H,02C84H,03CE6H,055CFH,06AB6H,066B5H,01C01H + .word 038A6H,06E30H,059AEH,06ED6H,0412AH,04549H,06DEDH,05905H + .word 051ABH,01802H,0720DH,054E5H,03462H,038C4H,03483H,03004H + .word 03862H,04507H,055CCH,06DCCH,071ECH,06147H,054C4H,050A3H + .word 05906H,04D48H,04D8AH,034C4H,069AAH,05D27H,050A4H,05907H + .word 040A5H,03024H,06989H,058E5H,03D07H,034C6H,0456BH,0C42H + .word 07A70H,071EBH,06587H,06127H,054E4H,050C4H,01C43H,03908H + .word 07A92H,02485H,01823H,01402H,0658AH,01401H,01423H,01844H + .word 03003H,02023H,01023H,07AB4H,07692H,07672H,05D06H,0C23H + .word 01444H,06E51H,07AD5H,05D07H,07B16H + +LXMUGG_P: + .word 254 + .word 00H,049EFH,03128H,020C6H,01884H,01C83H,01863H,01442H + .word 01042H,01462H,01463H,01862H,06EB5H,06E93H,020C5H,02084H + .word 01C63H,01C62H,02083H,06EF7H,0418BH,03D4AH,0416AH,03D49H + .word 03D28H,03D07H,038E6H,034C5H,030A4H,038E5H,076D4H,06ED5H + .word 05E51H,06630H,0660FH,05E0FH,065EEH,05DCDH,05DACH,05D8AH + .word 05569H,04D06H,04CC5H,04CE6H,05506H,05948H,05968H,05969H + .word 05989H,06A93H,06E72H,06E51H,06A51H,06A30H,06E71H,07272H + .word 06E30H,06A0FH,06A0EH,069EEH,065CDH,065ACH,05949H,050E5H + .word 05928H,05927H,05D49H,05D48H,05D27H,06149H,0658AH,06169H + .word 06589H,06168H,065ABH,065CBH,061AAH,0618AH,072D7H,07271H + .word 06E50H,06A2FH,065EDH,065CCH,054E6H,05907H,05906H,06189H + .word 065AAH,069CCH,069ECH,06E2FH,06E0DH,06E0FH,069EDH,05D47H + .word 06148H,06147H,065A9H,061A9H,069CBH,06A10H,06E52H,06E73H + .word 05528H,0618BH,05D68H,065ECH,06A71H,06EB3H,07293H,05D6BH + .word 061ABH,05547H,05926H,0616AH,069CDH,05D26H,06568H,06588H + .word 069ABH,06DCCH,06DECH,072B4H,06569H,06A92H,06E31H,06E4FH + .word 05D69H,06E2EH,06E0EH,0660DH,06E10H,06E70H,061CCH,06127H + .word 06188H,06A50H,0724FH,07B18H,06DEDH,0722EH,0722DH,05105H + .word 069A9H,069C9H,06A2EH,050C4H,06AB3H,0658BH,048A4H,04462H + .word 04CA4H,050C5H,07691H,07A91H,04883H,04442H,04863H,04483H + .word 03C42H,04042H,04043H,04463H,04C84H,058E5H,06A31H,06E53H + .word 07274H,04063H,03C43H,04464H,04CA5H,05E31H,06E74H,072B6H + .word 072F8H,06A53H,06632H,06A32H,04884H,04062H,04022H,03C63H + .word 03822H,04885H,06673H,07AF7H,05D06H,03821H,050A4H,054E5H + .word 06EB6H,0773BH,07B3BH,07B7DH,07B9DH,07BBEH,0777DH,07B5BH + .word 05D07H,048A5H,06A73H,07718H,0775BH,04CA6H,04484H,03423H + .word 03843H,04864H,04C85H,06A72H,06650H,05DEEH,054E4H,04041H + .word 04443H,0554AH,06ED8H,072FAH,0773CH,07B7EH,06F19H,055CEH + .word 04D29H,044C7H,03443H,03C44H,06F17H,07FDFH,0779EH,058E6H + .word 03842H,0518BH,03421H,06F1BH,04508H,07317H,03C62H,061ECH + .word 0512AH,05E52H,055ADH,04507H,048E8H,055AFH,07B9AH,03C83H + .word 05905H,050E4H,07AF8H,044C5H,04CC3H,054C4H + +LXMUGH_P: + .word 251 + .word 00H,01462H,01883H,01884H,018A4H,01463H,01042H,0C42H + .word 01442H,01862H,02483H,01C83H,01C84H,020A4H,020C5H,020C6H + .word 038E5H,034C5H,034A4H,034E6H,03926H,03D28H,03D49H,03D47H + .word 03506H,02882H,05968H,05168H,05547H,05126H,05989H,05DAAH + .word 05DCBH,05DECH,0620CH,0620DH,05E0CH,059C9H,059A9H,05588H + .word 04D27H,044C4H,040C3H,03CC3H,03083H,02842H,01C41H,0C22H + .word 065ABH,065AAH,06589H,06189H,06188H,06168H,05D68H,05947H + .word 05D48H,05948H,05906H,05D69H,065CBH,065ECH,06A0DH,06A2DH + .word 0660CH,065EBH,061CAH,061AAH,05DA9H,05988H,05969H,061CBH + .word 061ECH,04D05H,044A4H,03C83H,02442H,01821H,01022H,065CAH + .word 065A9H,061A9H,06A0CH,061EDH,06A2EH,0662DH,061EBH,048E4H + .word 040A3H,03443H,01822H,06DECH,069ECH,069CBH,069CAH,069EBH + .word 0618AH,06E2DH,05D88H,048C3H,061ABH,05D89H,065CCH,0660DH + .word 0662EH,03C63H,069EDH,06DEDH,061CCH,06A70H,06E91H,06EB1H + .word 06A90H,06A6FH,0664EH,06E0DH,06DEBH,06E4FH,06A2FH,065EAH + .word 06E6FH,06E90H,072B1H,072B2H,072D2H,076D1H,0664DH,061EAH + .word 03C62H,03401H,02C23H,01C22H,01422H,0C02H,06A0EH,06E70H + .word 07291H,06A4FH,072D3H,072F3H,03022H,03023H,06E2EH,06A4EH + .word 06EB2H,0660BH,03441H,06E0CH,076B1H,06E4EH,0726FH,07290H + .word 06EB0H,06E6EH,03422H,02422H,06E2FH,06E50H,07292H,072B3H + .word 072D4H,072D5H,076F5H,03862H,03423H,072F5H,07716H,072B4H + .word 06A71H,0662CH,03842H,06E0EH,07B15H,07B37H,07B59H,072F4H + .word 07691H,072B0H,05105H,03821H,07250H,07271H,06E71H,07270H + .word 076F6H,07B7AH,07759H,07738H,03402H,076D4H,07B38H,0775AH + .word 05DA8H,03002H,01002H,076B2H,07AF5H,076D3H,07715H,076F4H + .word 06A4DH,061C9H,04883H,0C01H,076B3H,05928H,069CCH,058E5H + .word 076F3H,076D2H,06A0BH,03841H,050A4H,054C5H,069AAH,07692H + .word 06A2CH,03822H,03403H,04CA4H,06ED4H,06A6EH,06147H,069A9H + .word 0722FH,04063H,03C22H,03802H,03C23H,03823H,0722DH,07670H + .word 03C43H,054C6H,058E6H,05905H,03C42H,06E8FH,03843H,03824H + .word 03424H,050A3H,06DCBH,076F2H,07AF3H,0728FH,04863H,04464H + .word 03844H,0658AH,076B0H + +DKMUGA_P: + .word 250 + .word 00H,05E97H,06AFAH,06F3BH,0737CH,06B1AH,066FAH,062B9H + .word 066D9H,066D8H,062D5H,05AB1H,05A8FH,0528BH,04A47H,04A64H + .word 04222H,039E1H,039C2H,03DE3H,035C2H,039E4H,031A2H,02D81H + .word 02962H,018C3H,018A4H,01484H,01887H,0250AH,045F0H,06B19H + .word 06AF9H,06AFCH,0731CH,0731EH,05EB7H,06F1BH,066BAH,066B9H + .word 062B7H,04A4BH,04A25H,03E02H,03DE2H,03E03H,039E3H,039A3H + .word 02961H,035A4H,014A3H,01465H,02D2BH,05674H,06F1AH,05EBAH + .word 062D9H,062D7H,05691H,04A2AH,04606H,04223H,03E22H,03A02H + .word 03A03H,03E05H,04644H,04646H,04224H,035C1H,035C5H,02561H + .word 014A1H,01062H,01487H,01CA8H,02D4DH,05694H,0731AH,06F1EH + .word 066B8H,062B6H,05A73H,0524AH,04203H,03DC3H,05285H,031A1H + .word 02D83H,02523H,018A3H,0356DH,05EB6H,07319H,04A09H,05286H + .word 04E84H,04643H,039E2H,02563H,01CE4H,039AFH,072FBH,06F1CH + .word 06B1BH,06299H,062D8H,05A93H,04E4DH,04228H,04EC3H,01900H + .word 01CC9H,039CEH,05AB6H,066F8H,06298H,06297H,06296H,0526EH + .word 04A68H,04241H,04A63H,052C3H,04221H,02520H,020C3H,01CE7H + .word 0316BH,05672H,06AF7H,062B8H,05E98H,05A95H,04E73H,04A30H + .word 02DA4H,02944H,02104H,01864H,024E9H,04610H,06B3BH,05670H + .word 03DEDH,04E2FH,04E4EH,0462EH,0464FH,020E7H,05E96H,04E2DH + .word 045EBH,03DE6H,041E9H,0420AH,0460CH,0464BH,03DC2H,03E01H + .word 02929H,0318DH,06317H,06678H,03DE8H,03E06H,04648H,03E42H + .word 03A22H,03601H,0671AH,05E77H,05A76H,03DA8H,039A5H,03E41H + .word 01D02H,02544H,014E3H,062F8H,066F9H,05E76H,062B5H,05230H + .word 041E6H,039C3H,03E23H,020E5H,01D07H,04A14H,0777EH,05E78H + .word 05A77H,04A27H,041E5H,01D04H,01524H,01D09H,06277H,06293H + .word 0524DH,04202H,04622H,04603H,05E57H,05A97H,05A75H,05A71H + .word 03E82H,035C6H,035A7H,0522FH,0522DH,02DC0H,03162H,04A87H + .word 04623H,02922H,05658H,04683H,05A56H,05A57H,0568FH,04A23H + .word 05696H,05656H,04E8EH,0568DH,03E09H,05636H,05635H,05693H + .word 046A5H,04E8DH,041E3H,06F5CH,0737BH,05ED4H,05ED3H,05AD0H + .word 05ACFH,05ED6H,0739CH,06F5AH,06B59H,06719H,06B3AH,062F9H + .word 06F3AH,05A96H + +DKMUGB_P: + .word 252 + .word 00H,0733EH,07B3EH,07B1DH,07B7FH,07B9FH,0775FH,0779FH + .word 0777FH,0735FH,0735EH,06F1EH,0671AH,05A97H,05ED5H,0460CH + .word 03165H,039E7H,04A67H,04A65H,04EA7H,04A84H,04261H,039E1H + .word 035E1H,035C2H,02562H,02522H,01D03H,031A3H,03E04H,04224H + .word 04226H,04645H,04646H,03E06H,03DEBH,05271H,05694H,05253H + .word 04E32H,0358CH,02509H,020E8H,018C7H,06EFDH,0733DH,06B3AH + .word 05273H,05691H,035C4H,04624H,03A21H,03A02H,02981H,02962H + .word 04203H,04205H,04225H,04648H,04A69H,0466AH,04A8BH,0462BH + .word 0464CH,04E6DH,041ECH,0460FH,06EFEH,0775EH,0737FH,0737EH + .word 06F1CH,0671DH,05AF8H,04E51H,0426FH,035A4H,03A61H,039E3H + .word 02560H,01D21H,02964H,04204H,03E22H,03E23H,03E42H,03E45H + .word 035A9H,041EBH,031AAH,06F5EH,062F7H,05A93H,03DE8H,02961H + .word 039C3H,04625H,04242H,03163H,039E4H,03E03H,03DE3H,04629H + .word 04A2BH,0316BH,05F1AH,05F17H,056D4H,04E8FH,04E89H,03E28H + .word 04A2DH,04A2EH,0398DH,0673EH,056B7H,03A03H,03603H,02E01H + .word 03601H,039E2H,05272H,0398FH,01CC8H,062D9H,04E52H,02D82H + .word 03E02H,04A09H,05235H,0777EH,03DEDH,0360BH,03A22H,03A23H + .word 04A4BH,0526FH,05673H,05274H,03DCEH,02D84H,05655H,05A77H + .word 0731BH,0735BH,039A9H,04E4EH,05E77H,072FBH,062DAH,03167H + .word 035A6H,03DE2H,04E90H,05693H,05A75H,05A76H,04E14H,0356EH + .word 06EFBH,02D46H,03DC2H,039A3H,04E8DH,05255H,05676H,0777DH + .word 06B39H,05252H,02948H,020E4H,02923H,03DC3H,041E4H,031A1H + .word 039C2H,04A27H,0528DH,05A8FH,0526DH,04E74H,06739H,06F5CH + .word 01D25H,01CE3H,02DE1H,052CAH,041E9H,05A95H,05675H,05677H + .word 05657H,035CBH,04A30H,04610H,03148H,020E3H,05AB1H,05231H + .word 05A57H,02504H,02121H,05E76H,0396EH,02DC4H,05658H,05257H + .word 05256H,05656H,01CE0H,05A78H,05A56H,0396DH,02DC2H,05638H + .word 05636H,024E1H,05672H,05E57H,05A35H,05A37H,03604H,041E7H + .word 05674H,039A5H,05654H,035C6H,05A72H,05276H,05254H,049F4H + .word 03161H,04DF3H,04E36H,05EB8H,05ED7H,05E99H,05EB9H,05E98H + .word 05AB8H,05A98H,06716H,06315H,0316DH,062F4H,05AD3H,05A99H + .word 062B7H,062B8H,05275H,041D1H + +DKMUGC_P: + .word 253 + .word 00H,066D9H,0733BH,07359H,05A91H,045EAH,03DA7H,04E4BH + .word 039C8H,03185H,031A7H,02D86H,03A29H,04ACEH,0466BH,035C7H + .word 02504H,018A3H,01CC4H,018C3H,020E3H,024C5H,02926H,01063H + .word 01865H,0354DH,05A56H,062B6H,01CC7H,051F6H,07BBFH,07B7FH + .word 07FDFH,05EBAH,0106BH,018B1H,062DDH,07B3EH,06AFBH,072FCH + .word 07B3BH,07233H,05D2BH,0737BH,03166H,03E07H,02D85H,02DE6H + .word 029C9H,02944H,01884H,01065H,01846H,05EB7H,06EFCH,0731DH + .word 039AEH,0826H,0779FH,0671BH,018AEH,044FH,0890H,02515H + .word 06B5DH,0777FH,0733EH,07B5DH,06F1CH,0735CH,05AB3H,04A2DH + .word 02544H,03EAFH,03A4DH,03AA9H,01486H,018A9H,066B8H,045F4H + .word 04A3AH,039B6H,02D98H,035B9H,05ABDH,062F4H,03DE7H,039A5H + .word 025A4H,02E4AH,03A86H,03627H,01466H,02CEBH,06F19H,06F1BH + .word 0C2CH,01470H,06F1EH,0739CH,066D7H,05672H,0460AH,03A47H + .word 03647H,02E2CH,028CCH,066DAH,02D52H,06AF8H,05EB4H,02DC4H + .word 02122H,0290DH,06F5EH,04636H,039B2H,03E18H,062B4H,0526EH + .word 04668H,02924H,03152H,020D1H,084AH,0106CH,084EH,05A79H + .word 04646H,0470BH,01484H,01026H,088EH,0208BH,028AAH,024A9H + .word 05ACFH,04209H,03E45H,04AA9H,04F0DH,04AA5H,03605H,01483H + .word 01025H,01848H,02888H,034C8H,030A7H,01428H,05691H,03DE4H + .word 04226H,035E5H,02466H,051D0H,01829H,05692H,07B9DH,01449H + .word 01825H,01827H,0102BH,035C2H,01886H,049D3H,0842H,02469H + .word 0184AH,066BDH,041E6H,031A2H,052C9H,04644H,02963H,084CH + .word 042DH,062D3H,03E04H,01D02H,02D83H,042FH,046DH,06B16H + .word 04224H,04243H,01CE1H,014C1H,04A67H,03A01H,06718H,06F7AH + .word 04E2BH,014E4H,014C2H,03603H,039E3H,02542H,020C8H,04E31H + .word 020EAH,0739AH,05ED2H,04A68H,031C1H,03E02H,02541H,02582H + .word 0C70H,06B58H,05AD1H,01481H,045F9H,03E42H,01D25H,02526H + .word 062BAH,0631EH,02D46H,041EFH,03E81H,02D81H,04283H,03E41H + .word 0673CH,05ED4H,04A65H,02961H,06AF7H,052D2H,06313H,03641H + .word 0CC3H,06AFEH,02121H,03621H,05694H,05309H,025A1H,0290AH + .word 05ED7H,031A1H,04A27H,039A3H,0C84H,06AB9H,0526BH,05287H + .word 04A29H,05266H,039C1H,02DC2H,056B6H + +DKMUGD_P: + .word 255 + .word 00H,05CE9H,060ECH,071D3H,07F5DH,07FDFH,07B9FH,0779FH + .word 04A55H,0C69H,0874H,018D5H,0567AH,04632H,0146DH,06B3DH + .word 06F5FH,0777FH,05EFCH,0569CH,062FCH,05EF9H,035AEH,01064H + .word 0822H,01463H,018A3H,02905H,02D85H,031A2H,039E4H,04649H + .word 02DA0H,02963H,02D82H,02121H,02562H,02522H,035E4H,018C2H + .word 018C4H,07F3BH,07AFAH,04E59H,08AFH,0450H,0CB6H,05ABCH + .word 052B9H,020D2H,062FEH,05ADBH,035D1H,0424H,0824H,01466H + .word 018A5H,02505H,04227H,02561H,01081H,035C3H,018D1H,0C71H + .word 024F6H,0671FH,05F1DH,014AEH,04CH,02935H,06B3FH,0445H + .word 0C64H,01084H,02D66H,02DE4H,02DA7H,01D02H,014C0H,01D21H + .word 03E04H,03602H,02582H,0777DH,0739DH,042CH,06F5DH,052BAH + .word 01483H,02545H,02D65H,0631DH,04E99H,014A6H,01CC7H,01925H + .word 0CA2H,03666H,03644H,03A64H,04678H,052DBH,0675EH,05EBBH + .word 018E9H,03627H,02E04H,04AA9H,03EC8H,03AA5H,03A03H,0733FH + .word 04A3AH,0C6BH,028ADH,0186AH,03177H,0567CH,04E97H,020E9H + .word 028A7H,03DE9H,04687H,04647H,046C6H,042BH,0206CH,0248BH + .word 02CABH,034CAH,038CCH,086EH,01514H,039DAH,03E5BH,056FDH + .word 0252BH,04B29H,04307H,07B7FH,084DH,0828H,030A7H,0206BH + .word 044FH,0452H,035B7H,035A7H,03E66H,0530AH,03E42H,03601H + .word 07H,080AH,02489H,02467H,02CC9H,02CCAH,04DF0H,02CA8H + .word 01C48H,0106BH,01471H,0C93H,03184H,04244H,04EC7H,04684H + .word 04EA6H,039E3H,01049H,01827H,01425H,0890H,05EDEH,06AFDH + .word 05F1EH,02E01H,02DE1H,03E26H,03643H,04223H,014C2H,028H + .word 042FH,045FBH,052C9H,046C5H,035E1H,03A21H,04224H,04243H + .word 07B3EH,044BH,0C2DH,0C72H,0886H,02DC2H,0490H,01475H + .word 0214DH,0C46H,035C7H,02580H,03E81H,03A41H,02932H,05277H + .word 02DAFH,04A85H,04283H,04639H,01D12H,0CD1H,02990H,046C3H + .word 018E1H,056FEH,0463CH,020E3H,04A83H,02961H,04A7BH,02506H + .word 02509H,018A1H,04A65H,031A1H,039E1H,01D2AH,04261H,056B7H + .word 02923H,06EFFH,0571DH,03A32H,0733DH,052F9H,03A2EH,02584H + .word 062DBH,01D63H,01940H,029AAH,02D4AH,0462EH,039E6H,03168H + .word 0673BH,039A7H,041ECH,041CBH,056D2H,03661H,062F6H + +DKMUGE_P: + .word 255 + .word 00H,065AEH,0764EH,07252H,076D6H,07B1AH,07B5DH,07B3EH + .word 07B7EH,07B9FH,05EB9H,028A9H,0C29H,040AH,084EH,0144CH + .word 02829H,04446H,05424H,05803H,06823H,05044H,02422H,01023H + .word 01044H,01025H,0454EH,049D2H,034C9H,02825H,038A6H,0352AH + .word 0392DH,06A4DH,0779EH,0771DH,06699H,018AAH,06H,02DH + .word 04FH,02EH,084DH,03825H,05466H,05824H,03422H,01825H + .word 055D1H,0458FH,059AEH,0777EH,06F1EH,049D5H,0409H,08AEH + .word 0144AH,03849H,04C46H,0C21H,0C45H,0425H,01046H,01865H + .word 05632H,04402H,06045H,06424H,07B3DH,0292EH,082CH,01C02H + .word 01462H,07064H,07AAEH,07AD1H,07AF8H,05A79H,024CDH,04045H + .word 0C25H,01866H,05E55H,044A6H,06C65H,06E8DH,05637H,01026H + .word 06655H,06632H,04C05H,06027H,05026H,04C26H,05869H,06469H + .word 04DH,04C44H,04869H,054CEH,05532H,06DF8H,065D5H,05D74H + .word 055D6H,0807H,090H,050H,0C2FH,05E56H,0494AH,050ABH + .word 071C9H,069AAH,080BH,048AAH,05654H,0554DH,0773EH,072FDH + .word 06ADDH,06E6AH,06525H,05083H,01C00H,05A34H,04424H,06ABAH + .word 06EDAH,06EB9H,0654AH,0C46H,066B6H,072FBH,0592BH,05615H + .word 0608AH,034ADH,06679H,054A7H,0775DH,07FDFH,01C26H,02CA7H + .word 0564DH,05A36H,065D1H,04546H,038C2H,03971H,05C47H,066F9H + .word 01CA5H,02CC6H,07F30H,05E2AH,01420H,0656EH,086BH,018A3H + .word 06E8BH,07F0DH,07AC9H,04921H,066BAH,076B8H,02884H,059A9H + .word 044C1H,07F09H,07EA6H,06E03H,024C2H,04551H,072BBH,044CCH + .word 07A45H,05561H,020A5H,06047H,06175H,02511H,065C5H,02086H + .word 020C6H,066DBH,04A36H,055A6H,01C41H,01C63H,02927H,035B2H + .word 06DC2H,020C4H,02949H,06B3AH,072F9H,05865H,07A22H,06ED9H + .word 01D0EH,071E2H,05D82H,01441H,03547H,0458BH,0849H,07649H + .word 035CAH,039B5H,04A59H,0446CH,04E33H,046BH,04D86H,06E04H + .word 03D22H,048BH,01CC7H,02904H,01CC5H,05E9DH,066D2H,05AB2H + .word 018A7H,02DB0H,02D47H,029AFH,031CEH,02506H,02505H,05A95H + .word 014A5H,01D06H,02545H,045D8H,06825H,04E2DH,02D45H,029AAH + .word 02923H,03954H,0790AH,070A7H,06716H,0568FH,04A2BH,035A6H + .word 0362FH,01491H,06886H,02986H,0328CH,014F4H,06C66H + +DKMUGF_P: + .word 254 + .word 00H,03D51H,049B1H,05A56H,06676H,059D1H,0592EH,04889H + .word 04445H,069D5H,076DDH,06B1FH,062BCH,05659H,03549H,024E6H + .word 03844H,034A6H,02C23H,02C64H,02043H,01843H,01023H,0C24H + .word 0822H,0C44H,0826H,0C47H,088AH,0849H,024E9H,059A9H + .word 076D5H,07F7DH,03002H,02002H,01802H,05846H,06A79H,06B1DH + .word 06ADAH,02C43H,01044H,01487H,02929H,01D0AH,018C9H,01027H + .word 01C25H,0552AH,0652DH,07B3BH,044A5H,06424H,06445H,06845H + .word 064A6H,06C66H,07066H,0588AH,0771DH,0567DH,02C24H,0445H + .word 01D4DH,0294EH,014AEH,02025H,04C02H,079D0H,02401H,06C25H + .word 06823H,078C9H,05469H,07216H,07B3DH,06ABCH,0492DH,01043H + .word 01024H,02046H,05402H,06467H,076BAH,0733FH,02867H,039AEH + .word 014E7H,0404H,01028H,06027H,06449H,058CDH,048AEH,05EBDH + .word 062BFH,04572H,02445H,01844H,0466H,02DAEH,01827H,02826H + .word 05914H,05D31H,05978H,069D9H,059DAH,059DDH,0497AH,04977H + .word 044B2H,060CDH,062DDH,01046H,07B7FH,0737FH,07BBFH,06F5FH + .word 049B6H,05EDEH,04E5CH,06B3BH,01866H,01CC7H,06EFEH,06ABEH + .word 0775DH,05DF4H,04C49H,05EBEH,01484H,01D26H,06ADDH,066FFH + .word 045CEH,02526H,0886H,07FDFH,0779FH,064AAH,06551H,018A4H + .word 058A6H,0671EH,05A97H,01CC4H,03883H,05926H,058A3H,0316DH + .word 04E56H,04A59H,02993H,0CACH,02926H,04946H,04D02H,059CEH + .word 06A31H,05EDDH,05ABAH,039B1H,0673DH,03E34H,03526H,065AAH + .word 05A32H,065EDH,06A2EH,07672H,06EB2H,06EB6H,04632H,04929H + .word 040A3H,038CDH,03DF5H,01CA6H,02D47H,02147H,035A9H,045CAH + .word 04A2DH,030AAH,02524H,014E5H,029A8H,02C69H,02D85H,02565H + .word 0464AH,07B16H,076B2H,02026H,03C49H,0569DH,01D02H,035C7H + .word 03E0CH,02925H,018C2H,02965H,0654AH,03A48H,039E7H,02123H + .word 035C5H,03A45H,039A7H,03C4CH,06593H,04266H,046A6H,02542H + .word 02521H,02962H,031A5H,03603H,039E4H,03587H,0486CH,038F1H + .word 04A9DH,056BEH,05F1FH,01CF0H,028CFH,02DA3H,03E87H,035C3H + .word 028D1H,0246DH,049F9H,07679H,0675DH,03E12H,04AA8H,02141H + .word 04707H,02961H,03DB9H,056FEH,01D80H,0798FH,07086H,056DCH + .word 06F9FH,02555H,02EH,0C93H,06F7DH,02551H + +DKMUGG_P: + .word 251 + .word 00H,03929H,02002H,01802H,01022H,0C22H,01867H,02929H + .word 014C9H,0842H,01044H,018A6H,0442H,01443H,0841H,0550AH + .word 03023H,01C21H,028AAH,0820H,028C5H,01CA3H,05D6BH,064C9H + .word 0294DH,02926H,0614AH,05D09H,0454AH,03001H,02C23H,01844H + .word 04A32H,049CDH,0445H,0845H,01843H,03D88H,020C2H,04CA6H + .word 04022H,05442H,05863H,058A5H,03843H,02449H,038EDH,05635H + .word 06F3AH,066B5H,05A2FH,059CBH,03947H,049A9H,04566H,05E09H + .word 0696DH,0596CH,048A9H,04845H,064C5H,06CA4H,078C4H,0756AH + .word 075CEH,05906H,02421H,02067H,03571H,07FBFH,07B7EH,07B7DH + .word 0777AH,07AD2H,0866H,0446H,06A4DH,0662AH,06626H,058E8H + .word 05045H,06084H,068A3H,070A2H,074C3H,07526H,07E4DH,07DC9H + .word 07124H,06905H,01829H,06EDAH,07FDFH,0775DH,034A6H,07377H + .word 05E27H,064C6H,078C3H,07D45H,07E0BH,07523H,01824H,01C26H + .word 028CDH,077BEH,0773DH,05611H,0825H,01024H,01001H,0612BH + .word 059AEH,06529H,06CC5H,07D26H,07D67H,0565AH,0407H,0826H + .word 06F17H,05D2AH,07D24H,07DA6H,07DA5H,04843H,0352DH,0C4BH + .word 0425H,061ADH,06929H,07DC6H,03427H,0403H,02CH,04DH + .word 045D1H,0885H,0556BH,05529H,061AEH,03024H,02BH,04FH + .word 028H,018ACH,0487H,0887H,07062H,07DC5H,02804H,059F6H + .word 04AH,0468H,065CFH,05C81H,03CCBH,0779DH,02EH,0C29H + .word 06C63H,04401H,03C03H,04E35H,0868H,05861H,044CDH,080CH + .word 05844H,04801H,065F5H,05AB7H,04822H,05423H,02C67H,04551H + .word 08A8H,06864H,06C23H,06443H,02427H,0C0AH,05001H,05C03H + .word 04C8H,04A9H,069ABH,06841H,06421H,06003H,02424H,05AB8H + .word 02043H,065EDH,06969H,071H,08AAH,0CEBH,02C64H,02044H + .word 07883H,04043H,03DB2H,03444H,02C43H,07A8FH,07F9DH,01066H + .word 02D51H,091H,08FH,08C9H,03463H,03447H,06A58H,076FCH + .word 06087H,05571H,030H,0150BH,03844H,05868H,0150CH,04AAH + .word 069F1H,0102DH,03468H,06653H,076DAH,0777EH,072H,05C04H + .word 05066H,06D8CH,06DCFH,086FH,05405H,03C24H,0773EH,07B3EH + .word 0696BH,071F0H,06A56H,06DAEH,07B3CH,01426H,07211H,03596H + .word 04E3AH,056BDH,041B5H + +DKMUGH_P: + .word 255 + .word 00H,01CC5H,024C5H,0C43H,0424H,0445H,0823H,01044H + .word 01CC6H,01883H,0801H,01463H,018A5H,0C41H,0422H,0442H + .word 01886H,01422H,01802H,028E5H,0C45H,020E6H,01441H,01801H + .word 02D27H,02D04H,024C3H,02509H,049A9H,04DA6H,045A6H,03968H + .word 03124H,03523H,02D02H,03126H,03D6EH,03DAEH,01C42H,02422H + .word 06649H,05E09H,055E9H,0560BH,051C7H,04DC6H,049A4H,04565H + .word 03945H,028E3H,0C24H,0312AH,0354AH,02444H,02C03H,03002H + .word 06E8AH,06A6DH,051EAH,02CA4H,038E7H,0622DH,055C4H,051A5H + .word 0354DH,02507H,01401H,02C24H,03024H,03803H,04002H,0562CH + .word 020A4H,0867H,01848H,0392CH,06A90H,05E06H,04DC5H,01466H + .word 02424H,03044H,0664AH,0848H,0C4AH,024A9H,06271H,059E9H + .word 04584H,0400H,01024H,01C24H,02401H,03C01H,04401H,0626EH + .word 014A7H,0668FH,03D85H,0826H,0447H,0426H,02C44H,04168H + .word 072D1H,03927H,03D47H,059E7H,02843H,06A27H,020A3H,04802H + .word 01485H,06E49H,04844H,06629H,059E5H,01C60H,01C44H,02443H + .word 02820H,02061H,01826H,03D89H,0828H,0449H,0428H,01027H + .word 03400H,03063H,04443H,03C63H,038C4H,05546H,03CA5H,02C82H + .word 072ACH,048C1H,054C6H,040C6H,0252DH,04D44H,076ABH,07E66H + .word 065A2H,03860H,04843H,049D2H,03881H,06A29H,07E87H,07E23H + .word 060E6H,04A16H,056D7H,046AH,05DA6H,07AADH,07E21H,07E25H + .word 07A68H,03DB1H,077BEH,0726AH,07EEBH,07E65H,07E43H,07226H + .word 05064H,028EDH,06F5CH,05F1AH,014A9H,05984H,07ECCH,05AB9H + .word 0C88H,07E89H,07E85H,05522H,05003H,0777DH,035B6H,07B0DH + .word 0350DH,0737EH,06F3CH,03440H,066F9H,0673FH,0394AH,04526H + .word 07646H,07B7EH,07739H,055A6H,06F3AH,0671CH,049CFH,04D24H + .word 07229H,06DC6H,01847H,05212H,07668H,054E2H,04926H,07625H + .word 04C20H,0465AH,04A9BH,04ABCH,03E15H,0206AH,02027H,05148H + .word 0724CH,07A8AH,04441H,035F8H,03E39H,0465CH,056DEH,05EBFH + .word 0567AH,03972H,02067H,03085H,034C5H,05ADDH,05F1EH,056BEH + .word 05EFEH,056DDH,062DFH,05A9DH,034A6H,02087H,03D6DH,065E8H + .word 07689H,07E28H,07B98H,05DCCH,0567EH,06F5FH,06B3EH,045B5H + .word 02C87H,0AH,0660BH,0768EH,07AAFH,03CA7H,03C44H + +SMMUGA_P: + .word 254 + .word 00H,07F3DH,07F5DH,07F9DH,07F1DH,07EFDH,07EDDH,07EDCH + .word 07EBCH,07EDBH,07EDAH,07F5BH,0416AH,01864H,05635H,04633H + .word 01CC9H,0252CH,04E95H,03E31H,0360FH,01486H,024E6H,0352AH + .word 04DF0H,03129H,028E8H,039ACH,01CA6H,024E8H,020A6H,02CC7H + .word 03929H,04D4AH,0516BH,05D8CH,0596AH,0598BH,061ADH,061ACH + .word 069CDH,06DEEH,069ABH,069ACH,07F3CH,07F9EH,07F5EH,07F1EH + .word 07F3EH,07EFCH,07EF9H,07275H,02444H,04DCFH,01C85H,0C44H + .word 035D1H,02DD1H,0252BH,02D2AH,05A73H,041AEH,04610H,020A5H + .word 0516CH,061CDH,0618BH,065ADH,065ACH,05D8BH,07AFCH,07235H + .word 069F1H,02865H,01423H,01465H,01466H,014A9H,0294FH,0256FH + .word 02D8FH,02D4AH,05674H,05EB4H,02D6CH,0354CH,0498BH,065CEH + .word 05DABH,0556AH,0514BH,0514AH,04508H,02423H,01C66H,024EBH + .word 03DD0H,03DB0H,04A11H,05210H,05A51H,030E6H,01001H,02D08H + .word 02D09H,01863H,03107H,03D07H,04528H,0558DH,0598AH,07B3CH + .word 05DF2H,02CA6H,06AF7H,06273H,028A5H,0356AH,0558BH,05149H + .word 04D49H,07F1CH,07EFEH,076FAH,06EB7H,06275H,07718H,072B7H + .word 07B7CH,06AB5H,03CE8H,03D2AH,0396AH,02D29H,049ADH,05DCDH + .word 07B3DH,07656H,07E99H,040E8H,03949H,034E8H,0412AH,0618CH + .word 07AFBH,05DB1H,034A9H,034EAH,024C5H,059ABH,04529H,04549H + .word 076B9H,05D8FH,03CE7H,05D8AH,0516AH,076D9H,03085H,04929H + .word 0556EH,040A9H,0556BH,04129H,07E9AH,06E36H,038A7H,0558FH + .word 06A73H,05E2FH,07E9BH,07E7AH,0492CH,0394CH,07E79H,01802H + .word 041ACH,055EFH,07F5CH,07EBBH,07ADBH,06E35H,04128H,07F9CH + .word 07E9CH,07EBAH,02425H,028A8H,04108H,02908H,06234H,03046H + .word 04589H,02D07H,0418BH,07EBDH,07A56H,0512DH,0456CH,04DAEH + .word 03549H,02929H,02508H,01CC6H,07636H,03147H,018A3H,04D2BH + .word 069F3H,048EAH,041CDH,039CCH,0358AH,0398AH,02507H,02D28H + .word 028C5H,07EDEH,04DEDH,02905H,035A9H,02928H,07F1BH,06E56H + .word 02D69H,07E5AH,07A9AH,06613H,039CEH,041EFH,0358CH,01CC5H + .word 07E7BH,061D1H,065F3H,06570H,04D4CH,07EFBH,07EBEH,07E9DH + .word 07638H,06DF4H,06591H,07A39H,07E5BH,07A3AH,07A7BH,07F7CH + .word 07F7DH,07FFFH,07B5CH,07EFAH,07F3BH,07F1AH + +SMMUGB_P: + .word 251 + .word 00H,06DACH,069ABH,06DCDH,071EDH,065ACH,071EEH,065CDH + .word 06E0DH,06E0EH,05DECH,05189H,04D8AH,04149H,03D69H,03107H + .word 03128H,02D07H,020C6H,024C6H,024C7H,02D29H,0354BH,03D8CH + .word 0312AH,0396BH,0314AH,0356AH,041ADH,05E10H,05DB1H,07B1CH + .word 07F1EH,07EFEH,06A7AH,04190H,0310CH,024E8H,0596BH,05949H + .word 061ABH,05D8BH,06DEEH,0518BH,04949H,04D89H,04589H,0458BH + .word 03508H,028E7H,028E8H,01C85H,020A5H,045EEH,0354AH,03D8BH + .word 03129H,055CDH,0596FH,07F5DH,0516AH,059ACH,055ADH,0496AH + .word 02D09H,02909H,020A6H,0396CH,0316AH,02D4AH,03549H,05D70H + .word 07B3DH,05149H,04929H,04DACH,04129H,03529H,030E7H,0358BH + .word 0356BH,03929H,06191H,0456AH,03108H,02D49H,024E7H,02D2AH + .word 0558FH,069F3H,07AFCH,03528H,045CDH,020E6H,0316BH,055EEH + .word 028E5H,0392AH,02908H,02D08H,0520FH,06A13H,0452BH,03109H + .word 02929H,0314BH,02928H,020C5H,05DD1H,061B2H,07B1DH,07EBEH + .word 02D28H,04DCEH,06A3AH,04170H,024E6H,02507H,0356CH,0456DH + .word 0556FH,06E15H,0414FH,03509H,02508H,020C7H,0358CH,02D6CH + .word 03D2CH,07659H,024A8H,01CC5H,07699H,01CC6H,01CA5H,020E7H + .word 061D2H,07AFBH,07EFDH,01CA6H,018A5H,01886H,01C86H,06DF5H + .word 07F1DH,07EBCH,01CA4H,01885H,01C87H,03589H,03D89H,0516DH + .word 07257H,030EBH,01884H,018A6H,014A6H,07EDDH,030ECH,07617H + .word 01864H,01485H,030E9H,04DAFH,07235H,07A9BH,01465H,014C6H + .word 01CA7H,07A79H,061D1H,06571H,01866H,01466H,0496DH,07E7CH + .word 07E7EH,07A57H,07E5BH,07E7DH,01463H,07E5CH,06A18H,01887H + .word 0252AH,05DD2H,071F6H,07E19H,07DF9H,07E5DH,01863H,065D5H + .word 07A17H,07E1AH,07E3CH,055D0H,05570H,07239H,07DFBH,07E1BH + .word 07E3BH,018A7H,07A3AH,07A1BH,01C84H,07E3AH,05190H,079F7H + .word 069F8H,018A4H,04D6EH,069F7H,03CE9H,0452CH,07A1AH,07DFCH + .word 0412EH,06DB4H,04D2DH,0512DH,06E17H,0763AH,07A3BH,065B4H + .word 059AFH,06614H,05DB3H,071FAH,071D8H,0765BH,07A5CH,07EDCH + .word 07ADCH,076BAH,06A59H,0775CH,0775BH,0773CH,0771BH,07719H + .word 07F3DH,05A15H,07B3CH,07B1BH,076FBH,07AFDH,07F1CH,07EFCH + .word 059F4H,07ED9H,07EB9H + +SMMUGC_P: + .word 253 + .word 00H,07EFCH,07F3CH,07F5CH,07EDBH,07E77H,04CEAH,03865H + .word 04D2FH,06E55H,0452BH,03CC8H,030E7H,0416CH,055ADH,03507H + .word 028A5H,01C83H,020A3H,024C7H,028C7H,034E8H,0554CH,05DACH + .word 05D6CH,0594BH,0512AH,04949H,04D4BH,0514BH,061ACH,06DADH + .word 06DCDH,061CEH,0720FH,079EEH,079EDH,07E0FH,07E30H,07E51H + .word 07E99H,0592DH,040AAH,059D0H,038A6H,040C7H,06A30H,06E0FH + .word 07250H,07630H,061CDH,048E7H,04909H,04509H,071CDH,071ACH + .word 07E0DH,07E79H,06DD1H,040E8H,065AEH,07E72H,05929H,04886H + .word 05109H,0492AH,07E92H,0656AH,07B3AH,07A16H,02865H,044ECH + .word 05DAFH,048E8H,069EEH,0592BH,0616EH,069AEH,0720DH,07EBBH + .word 04D6CH,075CEH,040A5H,03CC7H,07EB4H,07A4FH,0552CH,03908H + .word 06A73H,065ABH,07F9CH,07212H,040A8H,04DCFH,062D6H,07294H + .word 0598BH,03CA5H,05D6EH,07E74H,04D8CH,076D5H,07292H,04D27H + .word 07EBCH,07635H,0392AH,0394CH,04D8EH,034A8H,03CEAH,075F2H + .word 0456BH,051CCH,03D68H,02D07H,05651H,05EB5H,05672H,0562FH + .word 040A7H,03CA8H,0398AH,066B2H,05AB1H,02D28H,01843H,028E8H + .word 034A7H,0492CH,04D6EH,044EBH,07E32H,06610H,01C85H,01CC6H + .word 06F16H,05631H,0C22H,01C66H,024C8H,055AEH,0518BH,01865H + .word 020A8H,020A6H,03D4BH,07B36H,07EF5H,07A97H,02485H,01887H + .word 01486H,0294DH,05EF7H,05F17H,0442H,01465H,045CDH,05DCDH + .word 059CEH,06E33H,041AEH,03E32H,01D2DH,018C9H,04655H,056D7H + .word 05F18H,0421H,06B19H,05A51H,049ABH,050E9H,03484H,05A75H + .word 035D1H,03A55H,029B2H,04A96H,031CFH,04652H,0294AH,066F9H + .word 0418CH,0516EH,02DB4H,035F5H,04ABAH,05AD8H,07FFFH,049F1H + .word 020AAH,0358CH,05EB7H,049CDH,0352AH,06F5CH,0779CH,02D8EH + .word 01D08H,01024H,0779BH,03509H,05695H,01466H,024CAH,028A6H + .word 072D7H,030EAH,0737CH,06F9AH,02529H,0212AH,05A53H,03D8DH + .word 0354BH,028A8H,0318EH,03DEFH,051EEH,01463H,041CEH,05232H + .word 02D0AH,076F8H,01022H,03DAFH,01823H,01021H,0C65H,04A0DH + .word 04E93H,031CDH,01C21H,06E70H,07A91H,05E10H,024C4H,07F1EH + .word 07696H,07ED3H,028C4H,06252H,0C43H,04E2BH,07EFEH,06311H + .word 01CC5H,028CBH,06F9DH,03A0FH,0C86H + +SMMUGD_P: + .word 250 + .word 00H,07E70H,07E71H,07E92H,07E91H,07EB2H,07ED2H,07EF3H + .word 07F13H,07F57H,07F96H,07F14H,07FBBH,0660DH,044E7H,03063H + .word 0556AH,072D6H,07F79H,03083H,06E32H,06EF7H,03929H,01065H + .word 014A7H,01CA7H,02D2AH,024E9H,024C7H,02508H,02909H,03129H + .word 04D6DH,06614H,07F5DH,07F5FH,07F3FH,07F1FH,06A9AH,04190H + .word 0312CH,07EF2H,07F54H,07E50H,069EDH,05D6BH,06E31H,07F36H + .word 07ED3H,07E0DH,07AD6H,044C3H,048C7H,07EF9H,06EB5H,01443H + .word 020A6H,02929H,02908H,02D08H,0454CH,065F1H,07EFAH,07DEDH + .word 07EF4H,075ADH,07149H,07230H,050E6H,06E52H,07F5AH,01083H + .word 01CC8H,02D29H,0392AH,059AFH,07677H,07E51H,07E2FH,07E93H + .word 0798BH,07DEEH,07EB4H,07273H,07F39H,06ED5H,0C42H,02D4AH + .word 01CC6H,02D09H,0558EH,07655H,07EB3H,07A51H,07A30H,07A71H + .word 07A93H,076D4H,06E92H,05DCDH,034E7H,0314AH,076FAH,07F1DH + .word 07EFFH,07E4FH,07670H,06DEEH,061ADH,05D6CH,0518CH,028E8H + .word 0356CH,0398CH,0316BH,0314BH,0312AH,0416AH,05DD0H,076B8H + .word 06A7AH,065CDH,051ABH,0394AH,02D49H,0396CH,0396AH,03D4AH + .word 06E35H,07E72H,07A50H,03507H,028C6H,0396BH,0356BH,0354AH + .word 03549H,0398BH,03DADH,04DACH,06A0FH,05DCEH,0354BH,03DCEH + .word 039ADH,0398DH,03D8CH,03D4BH,05DB0H,07B1BH,051CCH,02D27H + .word 01C84H,03DCDH,0662FH,01C83H,02D28H,02507H,03D6BH,075EFH + .word 07A92H,02CA5H,0356AH,039AEH,0358CH,041ADH,06631H,07AD3H + .word 07735H,07AD2H,07691H,04169H,05E72H,06273H,07716H,076D2H + .word 0764FH,0562DH,020C5H,02928H,0492BH,05DACH,0498AH,028C5H + .word 0358BH,0316AH,07EB8H,038E8H,05D8BH,069ABH,0762FH,04929H + .word 045CDH,03969H,0496AH,07A97H,03D8DH,03DACH,039ACH,07233H + .word 04109H,061EFH,0418BH,03D6AH,0556CH,049CDH,076B3H,05E0FH + .word 049EEH,07F3EH,04949H,06E50H,075CDH,06E4FH,049CBH,045CEH + .word 07696H,07F1EH,0562FH,07234H,06A0DH,06E90H,05A0DH,049AEH + .word 07AB3H,030E8H,069F1H,04A0FH,0762DH,07AB2H,04D89H,05A30H + .word 059CBH,05230H,05E70H,076D9H,04A10H,0626FH,051EFH,07A70H + .word 028A6H,06632H,065D2H,04189H,065B1H,07B3EH,071ABH,06DACH + .word 061ABH,055CBH + +SMMUGE_P: + .word 253 + .word 00H,02D2BH,039AEH,041F0H,05633H,04DAFH,0496BH,0514AH + .word 0596BH,05D8BH,04129H,02CA6H,024A6H,024A7H,01466H,01465H + .word 01886H,01866H,01865H,018A7H,01CC8H,020C8H,01887H,01045H + .word 01C86H,01C85H,01885H,020A6H,01C87H,01CA6H,01CA5H,02908H + .word 03D8DH,04A31H,041EFH,02D4BH,01CC7H,02D4CH,039CFH,0416CH + .word 0454AH,04D2AH,05DACH,04949H,04D29H,0452BH,034E7H,02086H + .word 01066H,01486H,01CA8H,020A7H,01CA7H,024C7H,018A6H,02508H + .word 01044H,0358DH,0354DH,0314BH,03509H,0556CH,05549H,044E7H + .word 02CC5H,020A5H,01864H,01884H,024C8H,01C84H,05274H,0352AH + .word 02487H,03D2AH,04D4CH,0618CH,030E9H,020A8H,0250AH,01445H + .word 020C9H,062D7H,04611H,04612H,024C9H,01C66H,028E8H,05D6CH + .word 03CE8H,028A8H,024EAH,01467H,05695H,024E9H,020E8H,02486H + .word 03929H,059CEH,038C7H,01464H,024E8H,04A32H,04E73H,034EAH + .word 05273H,01485H,02087H,014C6H,01867H,028C7H,03107H,020E9H + .word 014E8H,0214AH,0C45H,01064H,018A5H,01423H,01843H,01844H + .word 018A4H,01444H,01065H,03D4BH,01424H,0458DH,04D8BH,0558CH + .word 0518BH,02065H,065CDH,0C24H,055EFH,06A71H,07274H,07273H + .word 040E9H,03D6CH,0498DH,05DCDH,06DEEH,06E0FH,0412CH,01C65H + .word 01C45H,02066H,07E93H,07ED3H,07A73H,061ADH,04549H,061ACH + .word 069CCH,06DEDH,0762FH,07A0EH,059B2H,05634H,05A75H,049CFH + .word 07231H,07ED5H,07EB7H,07F18H,07651H,069CDH,076BAH,072B9H + .word 06AB8H,0731AH,0458EH,07ED6H,07F9CH,04907H,065ABH,07EDBH + .word 07EF9H,07F3BH,055F1H,024E5H,02907H,01463H,07E94H,07F17H + .word 07F78H,048E7H,065ACH,071EDH,069ADH,071CCH,071CDH,06DECH + .word 06DCCH,075EDH,07E4FH,07E50H,07EFCH,059F1H,01483H,01CA4H + .word 03149H,0C43H,03CEAH,07A11H,06DCDH,071EEH,075CDH,075CCH + .word 079EDH,07E91H,06612H,02023H,05529H,071ECH,07F3CH,02C65H + .word 01823H,01845H,065AEH,065CEH,05969H,065ADH,07E76H,065B0H + .word 066F8H,0558FH,079EEH,0698EH,071F2H,03885H,05E93H,01841H + .word 01001H,071ADH,075AEH,07EB9H,07614H,03CA7H,038A8H,0658CH + .word 0658DH,07A35H,071B2H,03067H,05DAEH,0616BH,0618DH,07F5CH + .word 07A13H,048C8H,03024H,061F2H,028A5H + +SMMUGF_P: + .word 254 + .word 00H,01886H,02D09H,024C7H,020C5H,020A6H,02509H,028E8H + .word 03529H,028E7H,024E9H,020A5H,03549H,0452BH,055ADH,05DCEH + .word 06E12H,07235H,07636H,071F5H,07677H,069B2H,065B3H,07AFBH + .word 07F1FH,07EFFH,06A59H,0418FH,0312CH,01C88H,01466H,028EBH + .word 045F1H,01486H,01CC6H,0396CH,0356AH,02D2AH,0294AH,03D8CH + .word 0396AH,030E8H,0498DH,0558FH,059AEH,069F3H,07A36H,06E17H + .word 06173H,0765AH,07EFDH,014A8H,05254H,03DF0H,0823H,01866H + .word 028A7H,03929H,0458CH,0520EH,04A0EH,049CCH,045CCH,03989H + .word 03127H,0458BH,03D49H,0452CH,065D2H,06DF4H,05D71H,07EBDH + .word 0C44H,06718H,0C43H,01885H,0310AH,0392AH,04D4DH,06A7AH + .word 04190H,04E73H,014E7H,01465H,0414AH,01865H,0456DH,059B0H + .word 06A14H,06171H,06DF6H,07A9AH,062F7H,035CFH,0318CH,02907H + .word 02CC5H,03D8BH,02C85H,05DD1H,0596FH,0550FH,06A9AH,05696H + .word 05294H,03A10H,0CA6H,04DAEH,06612H,03D0CH,059B3H,07F1DH + .word 06F3AH,04212H,056D6H,030C7H,04129H,0598DH,0556EH,06614H + .word 0771DH,07F5FH,0354CH,04E33H,06759H,01485H,04149H,055ABH + .word 061EFH,069F1H,07ED9H,066FAH,05EF9H,035AFH,0804H,020A8H + .word 05A54H,04DCBH,0498BH,0494BH,07AB7H,066D8H,07B9DH,01CE8H + .word 07B1BH,05EB5H,05AB6H,04611H,05E53H,06E56H,07FBEH,049CEH + .word 06F5AH,0252AH,0402H,072BAH,0516BH,06A72H,06AD6H,072D9H + .word 0598BH,05A30H,065CDH,061AEH,06AD5H,05A2FH,07E4FH,0720DH + .word 065ACH,061ABH,0596BH,0492AH,040E8H,02043H,01863H,05E2DH + .word 07314H,055EBH,059EBH,069EFH,07630H,040E7H,07232H,06651H + .word 072F5H,0622EH,07E91H,07E71H,0764FH,02C63H,072B6H,07F18H + .word 07EF6H,07EF4H,055CFH,03CE8H,06292H,072F3H,05DCDH,07F5DH + .word 06A0DH,0552AH,06E10H,07F16H,07F35H,07EB2H,07291H,03CE7H + .word 01823H,02065H,06A91H,07ED3H,04D06H,04CC6H,07273H,07F7BH + .word 07E72H,07F57H,07AB4H,07270H,06548H,06E0FH,07F78H,07E2FH + .word 075CDH,072B4H,051CDH,06E95H,0762EH,07FBBH,07293H,065F1H + .word 07A10H,05509H,06DADH,0C66H,07298H,07F13H,07EF1H,0656BH + .word 0596CH,04085H,07B99H,06230H,050E8H,07737H,07759H,01023H + .word 076DAH,07F55H,034A7H,05D2BH,06E92H,07FFDH + +SMMUGG_P: + .word 255 + .word 00H,020E8H,01485H,0C63H,01063H,0C01H,01483H,01885H + .word 01C83H,020A5H,01CC7H,014C7H,01486H,01CC8H,020C7H,02507H + .word 02509H,03D8DH,01465H,0C23H,0C64H,01061H,02D4BH,0252AH + .word 0C41H,020C5H,02D49H,0318BH,0314BH,0316CH,041AFH,02D09H + .word 0318DH,041CFH,0252CH,035CFH,0254CH,0296CH,0318EH,039CFH + .word 04DCFH,04DAFH,0416DH,03109H,02CE7H,020A6H,01886H,04653H + .word 052B6H,04EB7H,04676H,056D6H,052B5H,04210H,0418DH,05673H + .word 062F7H,06719H,04D8DH,049F0H,04E11H,030E9H,028E8H,01865H + .word 01866H,018AAH,02D8DH,03E31H,01843H,06F7DH,077BEH,06B7EH + .word 0675CH,05AFAH,05F1BH,06B5BH,05F19H,06F9CH,0C66H,05A51H + .word 07BDDH,07BBCH,03D6CH,05632H,0312BH,01466H,018EBH,04235H + .word 03E34H,0216EH,0CE8H,014A8H,020A8H,01CA8H,05255H,0673AH + .word 06F9EH,0677EH,05F3CH,0779DH,0258DH,0486H,0292AH,028A6H + .word 07318H,07FFEH,041F0H,04E32H,04632H,04A55H,03DF3H,0292CH + .word 039AEH,0675BH,04675H,014EAH,014C8H,01023H,04E53H,062F8H + .word 0679DH,04695H,055AEH,04DB0H,05E32H,02CA8H,01D2BH,0CA8H + .word 0C85H,04AD7H,025AFH,0152BH,024EAH,059F0H,05E10H,0392AH + .word 035B0H,0C86H,05ED7H,04E95H,031D1H,06253H,051CEH,03D8BH + .word 02D8EH,035D3H,06B3AH,06B39H,06737H,05ED5H,04A71H,04651H + .word 06F78H,059CEH,0456BH,01D2CH,03E33H,03DF0H,05693H,04E0FH + .word 045CCH,02D47H,04E0CH,06232H,0494BH,03D09H,028A5H,02D6EH + .word 0737AH,07379H,06B57H,06AD3H,03549H,04189H,049A9H,059AEH + .word 05E53H,0518DH,0452AH,05EB5H,05650H,03D6BH,03127H,0460FH + .word 03DA9H,051EBH,038E8H,01823H,01824H,0254BH,02907H,04DCBH + .word 0560BH,01D09H,05A0CH,055F1H,04592H,03D69H,0352DH,04569H + .word 049ABH,01469H,01CCDH,02910H,03552H,0314FH,031B3H,04E9AH + .word 05ABCH,066FDH,041F2H,018C5H,01509H,029ABH,049EDH,04D6DH + .word 04236H,02D90H,01D4BH,059ADH,0556CH,03E56H,0518BH,03610H + .word 02549H,062F5H,030E7H,0CC7H,05210H,0418BH,03E51H,06EF6H + .word 05DCDH,065EEH,0660EH,06A30H,06230H,06ED5H,072F5H,07737H + .word 06DEDH,0764EH,076D1H,07B13H,061ADH,06DEEH,07652H,06E0FH + .word 03D07H,04109H,055F2H,0514AH,04928H,040E7H,038E7H + +SMMUGH_P: + .word 251 + .word 00H,02529H,01CC7H,01485H,01C85H,01C83H,024A5H,024E5H + .word 0318CH,02D6CH,0294BH,01CA6H,028A5H,02CC5H,030E5H,030E7H + .word 03127H,0252AH,01CE9H,041EFH,04210H,039F0H,035CFH,0312CH + .word 0312AH,030EAH,030E8H,03D27H,04127H,04128H,04169H,04189H + .word 06338H,06B39H,06B5AH,0675AH,0673AH,062F8H,05EB7H,05674H + .word 05253H,05651H,05E31H,06611H,061F1H,069F0H,069EFH,06A2DH + .word 06A2FH,06A4EH,0664DH,051CAH,07FBCH,07FFFH,077DEH,0779CH + .word 0777CH,07B5CH,07EFCH,07F1CH,07EBAH,07E7AH,07A75H,07E90H + .word 07E8FH,07ED1H,07FBBH,07FFDH,072D8H,07674H,07A93H,07A71H + .word 06A4DH,0779BH,07718H,07672H,02D07H,01063H,0771BH,07ED9H + .word 07ED3H,07B9EH,07F3BH,076B7H,07EB4H,0622CH,028C7H,07758H + .word 07735H,06ED0H,066B1H,07F5AH,076F6H,0620EH,07757H,05E8FH + .word 06A91H,0666EH,05A0BH,07B77H,07B19H,07EB6H,06253H,024E8H + .word 0560DH,05E4DH,06A8FH,072B1H,05E0CH,072F3H,041F0H,0316CH + .word 059EBH,07713H,07B75H,07FD9H,07F79H,07FDBH,06B3AH,0356AH + .word 024C7H,049A9H,0668EH,07716H,0777AH,07B37H,07B99H,020A6H + .word 051C9H,051A9H,04547H,049AAH,055ECH,072F1H,06AF7H,0418FH + .word 03947H,0458AH,04DCBH,03928H,0562EH,0416AH,059ECH,06F13H + .word 06A74H,0416CH,03129H,03D89H,041ACH,03549H,02D08H,03DACH + .word 045CCH,04DCCH,04E0FH,04E0DH,02505H,06EF2H,0520BH,03567H + .word 03D49H,06EF4H,07A73H,06E30H,05E4FH,05E2EH,0564DH,0566FH + .word 045CBH,06670H,059ABH,0760FH,065EEH,03D4AH,05A4BH,03D8BH + .word 02507H,04E50H,06EB2H,0518BH,061EDH,05DEEH,03D2AH,03105H + .word 07B34H,04E30H,04DE9H,07B13H,04DACH,0412BH,04DEEH,05E71H + .word 06292H,0358BH,03D6CH,055EFH,059ACH,07651H,07231H,02D48H + .word 07632H,028E8H,038E9H,0496BH,05DAFH,071F4H,07E76H,07635H + .word 07E78H,065F4H,03D2CH,0556BH,055ADH,07EB9H,07EBDH,06A37H + .word 0416FH,065ADH,06A38H,06A71H,07ED5H,06A59H,01C66H,06E72H + .word 07EDBH,01C65H,076B3H,04D28H,01CA8H,028A7H,038E6H,07294H + .word 04969H,01466H,0496CH,04190H,0556DH,07A35H,024A8H,02D0AH + .word 05190H,05DD2H,069F4H,07698H,06592H,07B1EH,07EDEH,06614H + .word 07656H,06E15H,069F3H + +ATTMTR_P: + .word 18 + .word 02CABH,07FFFH,06F7BH,06B5AH,06739H,06318H,05EF7H,05AD6H + .word 05294H,04E73H,04A52H,035ADH,02D6BH,02529H,02108H,01CE7H + .word 01084H,013A4H + +GLVHIT_P: + .word 25 + .word 00H,06FBFH,06FBFH,06FBFH,06FBFH,06FBFH,06FBFH,06FBFH + .word 06FBFH,0637FH,0573EH,046DEH,03E9DH,02E3DH,025DCH,0197CH + .word 0D1CH,04BBH,099H,077H,055H,034H,012H,010H + .word 0EH + +ROPE_R_P: + .word 16 + .word 00H,07210H,06DADH,06529H,060C6H,05C84H,05821H,05000H + .word 04800H,04400H,03C00H,03800H,03000H,02800H,02400H,01C00H + +ROPE_W_P: + .word 16 + .word 00H,07FFFH,0739CH,06B5AH,06739H,05EF7H,04631H,05294H + .word 04A52H,035ADH,03DEFH,039CEH,0318CH,0294AH,02529H,01CE7H + +ROPE_B_P: + .word 16 + .word 00H,04EFEH,0427DH,03A3CH,031FBH,02DD9H,02998H,02177H + .word 01D36H,01915H,014F3H,010B2H,0C91H,0870H,084FH,042EH + +ARROWS: + .word 4 + .word 00H,015H,07FFFH,02B5H + +LEX3P: + .word 124 + .word 07C1FH,0C85H,010A6H,0864H,0422H,0443H,014C8H,0843H + .word 00H,01D09H,029AEH,0216CH,01D4CH,084AH,056B6H,046D6H + .word 03E95H,03632H,0214BH,02DD0H,0575AH,03A74H,084DH,014CEH + .word 031CEH,04B39H,046F8H,0298BH,0215AH,04653H,014D6H,0215DH + .word 035F1H,0C92H,0191BH,0C8EH,02E10H,057BDH,01822H,045AEH + .word 02802H,05674H,045F0H,0635AH,0360FH,03403H,04823H,05423H + .word 06844H,01D3CH,038A6H,01C64H,048E9H,04675H,014DAH,03844H + .word 03CE8H,02864H,0392AH,07045H,06423H,05A33H,048A6H,05AF9H + .word 04824H,05424H,0592AH,0452BH,03D6DH,06D6DH,0712AH,070C9H + .word 07087H,014D1H,0C21H,06D2BH,024E8H,028A6H,06632H,0714CH + .word 0C9AH,068E9H,069F1H,0859H,0856H,0451H,054C9H,0537CH + .word 0C22H,0718EH,058A7H,018FCH,067BDH,0677CH,0C8AH,0299CH + .word 04F7CH,0C7CH,04678H,07611H,0361AH,055AEH,065AEH,0514DH + .word 06AD6H,029BAH,0496DH,04AFCH,06675H,039F9H,068A7H,07295H + .word 01D10H,01936H,02DF4H,0CB6H,02152H,02E0FH,03E9CH,03A5CH + .word 035B4H,068ECH,051F0H,073BDH + +RZR3P: + .word 128 + .word 07C1FH,0443H,0864H,0421H,0422H,0843H,010A7H,014C9H + .word 0C86H,01D0CH,0C85H,0294CH,01829H,01446H,065E1H,04942H + .word 024A3H,01423H,0823H,04925H,07660H,06E20H,059A1H,02886H + .word 01825H,028A9H,01C06H,02809H,02007H,01424H,01846H,06645H + .word 02C66H,048A9H,0444AH,03C0CH,0402DH,0342AH,0356AH,05546H + .word 061C4H,050E9H,048AEH,038A6H,061A3H,044C6H,02408H,0190AH + .word 05562H,02C0AH,02448H,07220H,05A06H,039ACH,059C9H,04A0EH + .word 055C5H,06623H,04DA6H,06601H,054E7H,03466H,03DCDH,03DEFH + .word 069E3H,06164H,02849H,069E1H,045C9H,0C24H,014C7H,0398AH + .word 06E41H,03DF0H,065C2H,0358DH,041EDH,04A0BH,05609H,04210H + .word 038C2H,02045H,034A9H,03E10H,03E0FH,05E03H,01045H,05128H + .word 06A22H,03C8DH,02447H,06643H,0316CH,07681H,04A52H,02463H + .word 01845H,02826H,04E51H,044C2H,0564DH,03921H,02D6BH,02865H + .word 035CEH,06A62H,02D8DH,02C6AH,048F0H,01CA1H,04D11H,02425H + .word 076A2H,06A83H,072E3H,03063H,04929H,04D2CH,01C87H,061E9H + .word 0512DH,04D82H,02D01H,06EC3H,03907H,06A84H,01085H,06683H + +SHN3P: + .word 127 + .word 07C1FH,010A6H,014AAH,0443H,0864H,0843H,0422H,0421H + .word 0C86H,0C01H,01422H,03402H,02822H,04802H,05403H,05404H + .word 05CC9H,0190AH,04426H,01D2CH,039AEH,0254AH,03E0FH,06B3AH + .word 066B6H,0590BH,0596DH,04651H,05487H,05DF0H,05AB6H,06252H + .word 06AF8H,0824H,05E52H,038C9H,0146DH,0146AH,0C27H,02452H + .word 049CFH,0C46H,02074H,01C71H,03825H,04509H,0C48H,05805H + .word 02D8BH,048A7H,05DAEH,03886H,05466H,024B5H,02D38H,03DD1H + .word 0306DH,0210FH,020EAH,03152H,028B2H,04848H,05C26H,024CEH + .word 03470H,02C4AH,018ADH,028F6H,03536H,03159H,034B2H,05027H + .word 01CD0H,0384AH,05867H,06654H,065D0H,04A5AH,02D17H,045F6H + .word 028D5H,045F0H,02C6EH,0644AH,041DCH,039BBH,04617H,05849H + .word 048AEH,048AAH,0446DH,034AEH,034F5H,02531H,028B5H,028B6H + .word 024D5H,024D6H,024B6H,044B1H,054AEH,04956H,045BAH,05512H + .word 058D1H,04E94H,0354DH,0688EH,0586DH,05EDCH,0686CH,0739CH + .word 01067H,03DDCH,02D8CH,05535H,04D78H,0614EH,04A5DH,06F7CH + .word 0618FH,060F2H,05DD4H,064ABH,0708EH,0706EH,0737BH + +UND3P: + .word 127 + .word 07C1FH,01D09H,018E8H,0C64H,0C85H,014A6H,0442H,0422H + .word 0843H,010A5H,0421H,018C7H,0212AH,0292DH,02D8DH,035D1H + .word 031CEH,02129H,014C6H,0296BH,03A32H,052D6H,04675H,0254AH + .word 01064H,014C5H,0298BH,04253H,05B39H,0675BH,04AB6H,056F8H + .word 05716H,0C83H,0360FH,049B1H,03D50H,024EDH,0C66H,014A3H + .word 020E9H,06B7CH,077DEH,06F9DH,06BBBH,02E0DH,03E54H,02DB0H + .word 018A6H,04693H,01063H,01D07H,04F17H,01CC4H,02149H,02D0BH + .word 024E3H,03545H,03543H,03989H,0394AH,02906H,018A4H,03D86H + .word 049AAH,05A2DH,05E26H,06669H,06AADH,06A89H,066D1H,04A2EH + .word 05A29H,05651H,0626DH,06E87H,049A6H,076C9H,072ECH,024E4H + .word 066D4H,05E8EH,05A91H,051E3H,055E6H,05675H,03974H,041B5H + .word 051EDH,06647H,03953H,055EAH,049ADH,0352EH,03112H,03553H + .word 076C6H,03550H,04163H,03D94H,03111H,0416AH,06B36H,04E09H + .word 061E8H,0C61H,0416EH,0594DH,02D03H,04165H,07F07H,02CF0H + .word 02D10H,03931H,04171H,0821H,030F1H,07F09H,02D69H,0772CH + .word 02929H,07312H,028EFH,0822H,024EEH,028EDH,045A3H + +YOK3P: + .word 127 + .word 07C1FH,0C65H,010A6H,0864H,0443H,0C64H,0442H,0422H + .word 0C86H,0843H,0421H,021H,0822H,0C21H,01021H,02442H + .word 04463H,03042H,01C21H,0C85H,03463H,03C63H,02842H,014C8H + .word 02C63H,04884H,01C42H,04C84H,00H,01422H,02C42H,01C22H + .word 0844H,05084H,01H,010A7H,05484H,05D29H,03863H,04063H + .word 04484H,03484H,058A5H,0654AH,01D0BH,018EAH,01C85H,05884H + .word 01442H,06D4AH,054A5H,07DEFH,01086H,018C9H,014C7H,0863H + .word 01087H,05CA5H,0423H,04CA5H,07E73H,0400H,064C6H,0401H + .word 050A5H,02021H,04CE7H,04231H,03C64H,07E94H,05D4AH,03C84H + .word 03063H,03442H,02863H,06508H,02022H,0754AH,060A5H,07FFFH + .word 07F9CH,0658CH,054A4H,075EFH,0758CH,0842H,04C63H,0C42H + .word 07E31H,0865H,03C42H,03064H,06908H,054C6H,02C43H,0796BH + .word 02843H,04064H,044C6H,07DADH,06D8CH,024E8H,07EF7H,07F7BH + .word 05CC6H,068E7H,068A5H,07108H,02C64H,048A5H,02464H,05529H + .word 05083H,02C84H,02D8CH,0316BH,05C84H,01485H,02484H,0C43H + .word 04083H,02108H,038A6H,01D2CH,03CC6H,01C64H,010A8H + +BAM3P: + .word 123 + .word 07C1FH,0422H,0864H,0443H,0843H,0C86H,0421H,014A6H + .word 014C9H,02822H,01401H,05841H,02C20H,02840H,058A1H,0256DH + .word 0190AH,04064H,054E8H,0514BH,028C9H,04ED9H,04EDAH,035D1H + .word 04AB9H,0252BH,029AFH,03613H,046B8H,025B2H,04276H,02420H + .word 0445H,0CA8H,03656H,0356DH,024A6H,0467H,04CCH,0152EH + .word 0392AH,02440H,04697H,03DAEH,04441H,03420H,045B0H,038A5H + .word 02462H,01570H,01D91H,01DB2H,029F4H,02657H,010ECH,0C01H + .word 03A98H,02865H,0469H,0C22H,03A97H,0418FH,03C82H,01A35H + .word 048BH,01465H,01E13H,044C5H,054C5H,01615H,08C9H,0489H + .word 0198FH,011F4H,011D3H,0CCAH,068A1H,092FH,01191H,090AH + .word 02482H,01DD3H,04481H,01C83H,031F4H,0DD4H,034E8H,06841H + .word 04D07H,011B2H,04529H,03906H,05905H,01DD1H,0DB2H,02422H + .word 04CBH,070C1H,02842H,02151H,052FAH,06D01H,0571AH,046D9H + .word 08AAH,07122H,03D8BH,02E78H,02E98H,0146AH,05D03H,01C6EH + .word 01A36H,0C66H,03809H,0246DH,01E56H,0D70H,0424H,02A97H + .word 03278H,04C9H,0C24H + +DNK3P: + .word 127 + .word 07C1FH,0422H,0864H,010A6H,014C8H,0D4CH,0C86H,01821H + .word 02821H,03801H,04401H,0E54H,0B7FH,0B9FH,05801H,03845H + .word 02464H,04465H,01B9EH,0516CH,0175FH,01026H,0182AH,04DB3H + .word 0186EH,01071H,03071H,01492H,02CACH,03674H,0279EH,03B9EH + .word 01074H,01496H,034A6H,02B1AH,02B5EH,0529AH,0C70H,018BBH + .word 0314CH,084AH,0C6DH,02C82H,048A1H,04921H,054C2H,01DD6H + .word 01A9BH,03B19H,05642H,06EE5H,06F02H,07322H,06AA2H,02EDDH + .word 02D91H,014AEH,06F26H,06F29H,06E75H,06B3AH,056D6H,028A5H + .word 01F3BH,072C5H,06F32H,04A52H,072C2H,06F2DH,05522H,066FAH + .word 06B5CH,04AD6H,03881H,07325H,045C1H,03562H,055C1H,0373EH + .word 06A42H,0524BH,04A93H,0317BH,04616H,071B2H,0714DH,05612H + .word 06C8BH,04B19H,04946H,04C8CH,05A76H,020FBH,06EABH,049A6H + .word 05319H,04CE6H,0737BH,044F1H,0739CH,055C4H,07266H,058C6H + .word 061C5H,07262H,05126H,05B17H,06800H,04B7DH,07349H,047BDH + .word 07821H,0737CH,070C1H,078A5H,064A6H,071C1H,07521H,057BDH + .word 06867H,0639CH,05864H,06941H,068C0H,069C1H,06525H + +HRT3P: + .word 127 + .word 07C1FH,0864H,0422H,0443H,0843H,0421H,01087H,0C86H + .word 0C85H,01488H,01465H,0823H,018A9H,01CCAH,01CC9H,018AAH + .word 020EBH,014C8H,0210BH,0250DH,048CDH,054CEH,038ECH,034AAH + .word 024AAH,024A9H,05CAEH,064AEH,064CEH,02CAAH,0292DH,01085H + .word 03CABH,06CAEH,054CDH,06CCFH,05CCEH,0294DH,058ADH,044ABH + .word 06CF0H,018C7H,02889H,014C7H,06D11H,06532H,06530H,0452EH + .word 0352EH,024ECH,06D74H,05951H,0254EH,050ACH,06D72H,06DB5H + .word 028CBH,04950H,04991H,030CBH,064ADH,064F0H,06D0EH,06572H + .word 055B2H,07216H,06E15H,030C9H,071F4H,071D6H,06151H,06D93H + .word 06E58H,03089H,06D32H,071B6H,01885H,01C87H,02086H,02CC9H + .word 0552FH,07278H,05E15H,07194H,01468H,03468H,04469H,070CFH + .word 02846H,070F1H,07112H,06CF2H,07173H,06CB0H,07174H,01043H + .word 05CF0H,03067H,038CBH,07193H,0C66H,02868H,06CADH,024C9H + .word 07151H,054ABH,07131H,0498FH,0712FH,0350AH,0688BH,060EDH + .word 06CCDH,06D51H,03889H,0292EH,0294EH,0546BH,01CECH,058CDH + .word 064B0H,054AEH,01D0BH,039B1H,0318FH,03970H,0254CH + +FUJI_P: + .word 64 + .word 01931H,07FFEH,06B39H,06718H,062F7H,06AD1H,05ED6H,05AB5H + .word 06A6DH,05694H,06149H,05273H,05504H,0624CH,04E52H,05E2EH + .word 05230H,04881H,04A31H,0620BH,03041H,04A0FH,04610H,05A0BH + .word 041EFH,04DCDH,041CDH,03DCEH,04DAAH,041ACH,039ADH,0458BH + .word 0398BH,0358CH,04169H,0396AH,0316BH,03D46H,02D4AH,03926H + .word 03129H,03507H,02929H,02907H,02508H,028E7H,02442H,020E7H + .word 020C5H,01CC6H,01CC5H,020A5H,018A5H,01883H,01484H,01483H + .word 01863H,01063H,01041H,01021H,0C42H,0C41H,0821H,0400H + +URNFRM_P: + .word 43 + .word 0240BH,07BBBH,07B77H,076F3H,06EB0H,066B1H,0666FH,05A4FH + .word 05E2DH,0562DH,051EBH,049CBH,045A9H,04167H,03947H,03D25H + .word 03D03H,03105H,030E3H,028C3H,02081H,01861H,07BDDH,06F7FH + .word 06B5EH,0631EH,05EFDH,056BDH,0529CH,04E7BH,0463BH,0421AH + .word 03DFAH,039D9H,03198H,02D77H,02957H,02536H,02534H,01CF0H + .word 01CEBH,01CE6H,018C5H + +WGSF_R_P: + .word 10 + .word 00H,07C00H,07800H,07000H,06C00H,06800H,06400H,05C00H + .word 05800H,00H + +WGFS_W_P: + .word 10 + .word 0318CH,07FFFH,07BDEH,0739CH,06F7BH,06B5AH,06739H,05EF7H + .word 05AD6H,00H + +WSF_R_P: + .word 3 + .word 00H,07C00H,00H diff --git a/BACKUP/IMGTBL.ASM b/BACKUP/IMGTBL.ASM new file mode 100644 index 0000000..7cf2005 --- /dev/null +++ b/BACKUP/IMGTBL.ASM @@ -0,0 +1,16 @@ + .FILE "imgtbl.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include crowdimg.glo + + .include ropeimg.glo + + .include roboimg.glo + + .include fontsimg.glo + + .include BGNDTBL.GLO diff --git a/BACKUP/JJXM.H b/BACKUP/JJXM.H new file mode 100644 index 0000000..92cd3b6 --- /dev/null +++ b/BACKUP/JJXM.H @@ -0,0 +1,39 @@ +JJXM_DEBUG .equ 1 + +JJXM_INIT .macro + + calla get_opp_plyrmode + move *a13(CLOSEST_XDIST),a1 + move *a13(CLOSEST_ZDIST),a2 + + .endm + + +JJXM .macro MODE,DX,DZ,LESS,MORE + + cmpi MODE_:MODE:,a0 + jrne DONE? + + .if $isname(DX) + jruc :DX: + .else + cmpi :DX:,a1 + jrgt :MORE: + cmpi :DZ:,a2 + jrgt :MORE: + jruc :LESS: + .endif + +DONE? + .endm + +JJXM_END .macro + .if JJXM_DEBUG + LOCKUP + rets + .endif + .endm + + + + \ No newline at end of file diff --git a/BACKUP/LEX.ASM b/BACKUP/LEX.ASM new file mode 100644 index 0000000..fe4d8e8 --- /dev/null +++ b/BACKUP/LEX.ASM @@ -0,0 +1,1769 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 7/15/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lex.asm" + .title "Lex Luger specific game code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "jjxm.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,inc_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 clear_damage_log + .ref check_dizzy + + .ref change_anim1,change_anim1a + .ref change_anim2,change_anim2a + .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 bounce_off_ropes + .ref climb_turnbuckle + .ref do_roll,do_taunt + .ref JUMP_ROPES + + ;from CROWD.ASM + .ref crowd_cheer + + ;from DCSSOUND.ASM + .ref triple_sound + + ;from WRESTLE.ASM + .ref calc_line_x + .ref face_each_other + .ref lineup_grapple + + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref wres_slave_anim + .ref lex_zip_anim + .ref start_run_anim + + .ref lex_2_block_anim,lex_4_block_anim + .ref lex_2_hitblock_anim,lex_4_hitblock_anim + + .ref lex_stand2_anim,lex_stand8_anim + .ref lex_stand4_anim,lex_stand6_anim + .ref lex_torso2_anim,lex_torso8_anim + .ref lex_torso4_anim,lex_torso6_anim + + .ref lex_2_to_4_turn_anim,lex_8_to_6_turn_anim ;stand + .ref lex_4_to_2_turn_anim,lex_6_to_8_turn_anim + .ref lex_4_to_6_turn_anim,lex_6_to_4_turn_anim + .ref lex_2_to_8_turn_anim,lex_8_to_2_turn_anim + .ref lex_4_to_8_turn_anim,lex_6_to_2_turn_anim + .ref lex_2_to_6_turn_anim,lex_8_to_4_turn_anim + + .ref lex_2_to_4_turn2_anim,lex_8_to_6_turn2_anim ;torso + .ref lex_4_to_2_turn2_anim,lex_6_to_8_turn2_anim + .ref lex_4_to_6_turn2_anim,lex_6_to_4_turn2_anim + .ref lex_2_to_8_turn2_anim,lex_8_to_2_turn2_anim + .ref lex_4_to_8_turn2_anim,lex_6_to_2_turn2_anim + .ref lex_2_to_6_turn2_anim,lex_8_to_4_turn2_anim + + .ref lex_walk1_f2_anim,lex_walk2_f2_anim,lex_walk4_f2_anim + .ref lex_walk5_f2_anim,lex_walk6_f2_anim,lex_walk8_f2_anim + + .ref lex_walk1_f4_anim,lex_walk2_f4_anim,lex_walk4_f4_anim + .ref lex_walk5_f4_anim,lex_walk6_f4_anim,lex_walk8_f4_anim + + .ref lex_run2_anim + + .ref lex_2_punch_anim,lex_4_punch_anim + .ref lex_2_kick_anim,lex_4_kick_anim + + .ref lex_2_head_hit_anim,lex_4_head_hit_anim + .ref lex_2_head_hit2_anim,lex_4_head_hit2_anim + .ref lex_2_body_hit_anim,lex_4_body_hit_anim + .ref lex_hitonground_anim + + .ref lex_2_butt_anim,lex_4_butt_anim + .ref lex_2_knee_anim,lex_4_knee_anim + + .ref lex_head_hit_dizzy_anim + .ref lex_2_stomp_anim,lex_4_stomp_anim + + .ref lex_2_push_anim,lex_4_push_anim + .ref lex_4_losebal_anim + + .ref lex_4_grabfling_anim + + .ref lex_fall_back_anim + + .ref lex_summon_anim,lex_summon2_anim + .ref lex_faceup_getup_anim + .ref lex_4_graboh_anim,lex_heldoh_anim + +; .ref lex_2_turbopunch_anim,lex_4_turbopunch_anim + + .ref lex_flip_anim + + .ref lex_flying_kick_anim + + .ref lex_2_ground_punch_anim,lex_4_ground_punch_anim + .ref lex_flying_ground_punch_anim,lex_climb_down_anim + .ref lex_buckle_leap_anim,lex_climb_up_anim + .ref lex_grab2overhead_anim + .ref lex_backbreaker_anim + .ref lex_ohslam_anim + + .ref lex_vsuplex_anim + .ref lex_grab2elbow_anim + .ref lex_hiptoss_anim +;RJR START + .ref lex_slamdown_anim + .ref lex_grabslam_anim +;RJR END + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +lex_secret_moves + .long #button_hold ;must have this one + .long #neck_grab + .long #grab_fling +; .long #2nd_wind1 +; .long #2nd_wind2 + + .long 0 + + .ref lex_2_grabfling_anim + .ref lex_4_grabfling_anim + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 30 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + .ref lex_3_head_hold_anim + movi lex_3_head_hold_anim,a0 + calla change_anim1a + rets + +#grab_fling + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long scrt_grabfling + +scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + + FACE24 lex,grabfling_anim + calla change_anim1a + + WRSND W_LUGER,GRABFLING_T1,GRABFLING_T2 + +#out + rets + +#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 + +#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_2ndwind + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_scrt_2ndwind + +;;; movi lex_2ndwind_anim,a0 + calla change_anim1a +#no_scrt_2ndwind + rets + + +#***************************************************************************** + + SUBR lex_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi lex_stand4_anim,a0 + calla change_anim1a + + movi lex_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE0 do_taunt + PULL a10 + + rets + +#p1 + movi lex_stand2_anim,a0 + calla change_anim1a + + movi lex_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* LEX CONTROL CODE +* +* a13 = * Lex process + + SUBR move_lex + + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + movi lex_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 + .long mode_normal ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + + .ref mode_inair2 + + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .ref mode_choking + .long mode_choking ;25 + +#***************************************************************************** + +mode_normal + + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + +;Any button causes a pin + move a13,a0 + calla wres_get_but_val_cur + move a0,a0 + jrz #opp_not_dead + +;Make sure opponent is on the ground! +;First, see if opponent is on the ground. + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #opp_not_dead + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a1,L + + move *a1(OBJ_YPOS),a0,L + move *a1(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + +;Opponent is on ground. +;Now check to see if I'm attached to him in puppet mode! + move *a13(ATTACH_PROC),a1,L + jrz #done + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 +;If I'm attached to him, let the move finish! + jrz #opp_not_dead +#done + + .ref lex_2_pin_anim + .ref lex_4_pin_anim + .ref ADD_IF_SILENT,CLIMB_ROPES + + FACE24 lex,pin_anim + calla change_anim1a + + rets + +#opp_notgnd +#opp_not_dead + +;MJT Start + move *a13(IMMOBILIZE_TIME),a0 + jrnz #no_climb +;MJT End + + 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 + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets +#no_climb + + calla execute_walk + +#no_interrupt + rets + +#action_table +;This table accounts for 2 buttons being hit simultaneously. + + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +************ +#z + rets + +#graboh ;8 +;This is both super buttons at the same time + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 56 95 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing normal punch +* +* onturnbkl < 60 60 punch +* onturnbkl > normal punch +* +* climbturnbkl < 60 60 punch +* climbturnbkl > normal punch +* + + JJXM_INIT + JJXM NORMAL, 50, 95,#punch_hdbutt,#punch_punch + JJXM BLOCK, 50, 95,#punch_hdbutt,#punch_punch + JJXM DIZZY, 50, 95,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 120,120,#punch_lbdrop,#punch_punch + JJXM RUNNING, #punch_punch + JJXM BOUNCING, #punch_punch + JJXM ONTURNBKL, #punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM INAIR, 50, 95,#punch_hdbutt,#punch_punch + JJXM ATTACHED, 50, 95,#punch_hdbutt,#punch_punch + JJXM DEAD, 50, 95,#punch_hdbutt,#punch_punch + JJXM OPPOVERHEAD, 50, 95,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 50, 95,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 50, 95,#punch_hdbutt,#punch_punch + JJXM MASTER, 50, 95,#punch_hdbutt,#punch_punch + JJXM SLAVE, 50, 95,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 50, 95,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 50, 95,#punch_hdbutt,#punch_punch + JJXM PUPPET, 50, 95,#punch_hdbutt,#punch_punch + JJXM INAIR2, 50, 95,#punch_hdbutt,#punch_punch + JJXM_END + +***** +#punch_punch + +std_punch + + FACE24 lex,punch_anim + calla change_anim1a + + WRSND W_LUGER,PUNCH_T1,PUNCH_T2 + + rets + +***** +#punch_hdbutt + + FACE24 lex,butt_anim + calla change_anim1a + + WRSND W_LUGER,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbdrop + + FACE24 lex,ground_punch_anim + calla change_anim1a + + WRSND W_LUGER,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#block ;2 + + clr a0 + move a0,*a13(OBJ_XVEL),L + +std_block + FACE24 lex,block_anim + calla change_anim1 + rets + + +************ +#super_punch ;4 + +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 120 120 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 50, 92,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 50, 92,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 50, 92,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 50, 92,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 126,112,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, #spunch_rets ;5 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 50, 92,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 50, 92,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 96,112,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 50, 92,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 50, 92,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 50, 92,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 50, 92,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 50, 92,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 50, 92,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, 50, 92,#spunch_special,#spunch_slap ;19 + JJXM PUPPET, 50, 92,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 50, 92,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +***** +#spunch_slap + +;RJR START + movi lex_grab2elbow_anim,a0 + movi lex_hiptoss_anim,a0 + + movi lex_grab2overhead_anim,a0 + movi lex_grabslam_anim,a0 +;RJR END + calla change_anim1a + + WRSND W_LUGER,PUNCH_T1,PUNCH_T2 + + rets + +***** +#spunch_special + +; movi dnk_3_pile_driver_anim,a0 +; FACE24 dnk,butt_anim + FACE24 lex,butt_anim + calla change_anim1 + + WRSND W_LUGER,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#spunch_lbowdrop + .ref lex_2_hair_pickup_anim + .ref lex_4_hair_pickup_anim +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 lex,hair_pickup_anim + calla change_anim1 + + WRSND W_LUGER,LBOWDROP_T1,LBOWDROP_T2 + + rets + +#no + FACE24 lex,ground_punch_anim + calla change_anim1 + + WRSND W_LUGER,LBOWDROP_T1,LBOWDROP_T2 + + rets + + +; FACE24 lex,turbopunch_anim +; +; +; movi lex_flip_anim,a0 +; calla change_anim1a +; +; WRSND W_LUGER,PUNCH_T1,PUNCH_T2 +; +; rets + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 50 knee +* > normal kick +* +* onground < 128 128 stomp +* onground > normal kick +* +* running | +* bouncing big boot +* +* onturnbkl | +* climbturnbkl normal kick +* + + + JJXM_INIT + JJXM NORMAL, 60, 50,#kick_knee,#kick_kick + JJXM BLOCK, 60, 50,#kick_knee,#kick_kick + JJXM DIZZY, 60, 50,#kick_knee,#kick_kick + JJXM ONGROUND, 128,128,#kick_stomp,#kick_kick + JJXM RUNNING, #kick_bigboot + JJXM BOUNCING, #kick_bigboot + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM INAIR, 60, 50,#kick_knee,#kick_kick + JJXM ATTACHED, 60, 50,#kick_knee,#kick_kick + JJXM DEAD, 60, 50,#kick_knee,#kick_kick + JJXM OPPOVERHEAD, 60, 50,#kick_knee,#kick_kick + JJXM WAITANIM, 60, 50,#kick_knee,#kick_kick + JJXM GRAPPLE, 60, 50,#kick_knee,#kick_kick + JJXM MASTER, 60, 50,#kick_knee,#kick_kick + JJXM SLAVE, 60, 50,#kick_knee,#kick_kick + JJXM HEADHOLD, 60, 50,#kick_knee,#kick_kick + JJXM HEADHELD, 60, 50,#kick_knee,#kick_kick + JJXM PUPPET, 60, 50,#kick_knee,#kick_kick + JJXM INAIR2, 60, 50,#kick_knee,#kick_kick + JJXM_END + +***** +#kick_kick + + FACE24 lex,kick_anim + calla change_anim1a + + WRSND W_LUGER,KICK_T1,KICK_T2 + rets + +***** +#kick_knee + + FACE24 lex,knee_anim + calla change_anim1a + + WRSND W_LUGER,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp +attack_stomp + + FACE24 lex,stomp_anim + calla change_anim1a + + WRSND W_LUGER,KICK_T1,KICK_T2 + + rets + +***** +#kick_bigboot + + FACE24 lex,kick_anim + calla change_anim1a + + WRSND W_LUGER,KICK_T1,KICK_T2 + rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + 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(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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_stick_val_cur + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#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 + .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 +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 flying ground punch +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline + JJXM BLOCK, #punch_clothesline + JJXM DIZZY, #punch_clothesline + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_rets + JJXM RUNNING, #punch_clothesline + JJXM BOUNCING, #punch_clothesline + JJXM ONTURNBKL, #punch_clothesline + JJXM CLIMBTURNBKL, #punch_clothesline + JJXM INAIR, #punch_clothesline + JJXM ATTACHED, #punch_clothesline + JJXM DEAD, #punch_clothesline + JJXM OPPOVERHEAD, #punch_clothesline + JJXM WAITANIM, #punch_clothesline + JJXM GRAPPLE, #punch_clothesline + JJXM MASTER, #punch_clothesline + JJXM SLAVE, #punch_clothesline + JJXM HEADHOLD, #punch_clothesline + JJXM HEADHELD, #punch_clothesline + JJXM PUPPET, #punch_clothesline + JJXM INAIR2, #punch_clothesline + JJXM_END + +#punch_rets + rets + +***** +#punch_clothesline + + rets + +***** +#punch_bellyflop +attack_bellyflop + + movi lex_flying_ground_punch_anim,a0 + calla change_anim1a + + WRSND W_LUGER,FLYKICK_T1,FLYKICK_T2 + rets + + +************ +#block ;2 + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + rets + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 flying ground punch +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick + JJXM BLOCK, #kick_flyingkick + JJXM DIZZY, #kick_flyingkick + JJXM ONGROUND, 176,176,attack_bellyflop,#kick_rets + JJXM RUNNING, #kick_flyingkick + JJXM BOUNCING, #kick_flyingkick + JJXM ONTURNBKL, #kick_flyingkick + JJXM CLIMBTURNBKL, #kick_flyingkick + JJXM INAIR, #kick_flyingkick + JJXM ATTACHED, #kick_flyingkick + JJXM DEAD, #kick_flyingkick + JJXM OPPOVERHEAD, #kick_flyingkick + JJXM WAITANIM, #kick_flyingkick + JJXM GRAPPLE, #kick_flyingkick + JJXM MASTER, #kick_flyingkick + JJXM SLAVE, #kick_flyingkick + JJXM HEADHOLD, #kick_flyingkick + JJXM HEADHELD, #kick_flyingkick + JJXM PUPPET, #kick_flyingkick + JJXM INAIR2, #kick_flyingkick + JJXM_END + +#kick_rets + rets + +***** +#kick_flyingkick + + movi lex_flying_kick_anim,a0 + calla change_anim1a + + WRSND W_LUGER,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 + +#***************************************************************************** + +mode_onground ;4 + +; move *a13(GETUP_TIME),a0 +; jrnz #exit +; +; move *a13(ANIBASE),a0,L +; cmpi lex_faceup_getup_anim,a0 +; jrz #exit +; +; calla do_roll +; jrnz #exit ;did roll +; +; movi lex_faceup_getup_anim,a0 +; +; calla change_anim1a +; +;#exit + 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 lex_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 + + ;this is so an attack isn't turned into a climbdown + ; in those 5-10 ticks before MODE_INAIR2 is set... + move *a13(ANIBASE),a14,L + cmpi lex_climb_up_anim,a14 + jrne #no_climbdown + + movi lex_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + + rets + +#no_climbdown + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + rets + + +;For standing on top of turnbuckles + +#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 +#super_punch ;4 +#kick ;8 +#super_kick ;16 + + movi lex_buckle_leap_anim,a0 + calla change_anim1a + + WRSND W_LUGER,FLYKICK_T1,FLYKICK_T2 + rets + +************ +#block ;2 + + rets + + +#***************************************************************************** +* blocking + +mode_block ;7 + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #no_interrupt + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #punchblock ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + FACE24 lex,push_anim + calla change_anim1a + + WRSND W_LUGER,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* doink with zero health + +mode_dizzy ;8 + + move *a13(GETUP_TIME),a0 + jrnz #still_going + + calla clear_damage_log + + clr a0 + move a0,*a13(STARS_FLAG) + + SETMODE NORMAL + +#still_going + rets + +#***************************************************************************** +mode_dead ;9 + + rets + +#***************************************************************************** +* opponent held overhead + +mode_oppoverhead ;10 + + + move *a13(ATTACH_PROC),a11,L + jrz #not_attached + move *a11(ATTACH_PROC),a14,L + cmp a13,a14 + jreq #still_attached + + clr a0 + move a0,*a13(ATTACH_PROC),L + +#not_attached + + SETMODE NORMAL + + movi MODE_NORMAL,a0 + move a0,*a13(ANIMODE) + + rets + + +#still_attached + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #x + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#x 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 #punch_kick ;9 + .long #z,#z,#z,#z,#z,#z ;10-15 + .long #super_kick ;16 + .long #z,#z,#z ;17-19 + .long #spunch_skick ;20 + .long #z,#z,#z ;21-23 + .long #z,#z,#z,#z,#z,#z,#z,#z ;24-31 + +#z ;0 + rets + +#punch ;1 +#punch_kick ;9 + movi lex_backbreaker_anim,a0 + calla change_anim1a + rets + +#block ;2 + rets + +#super_punch ;4 +#spunch_skick ;20 +;RJR START + movi lex_backbreaker_anim,a0 + movi lex_slamdown_anim,a0 +;RJR END + calla change_anim1a + rets + +#kick ;8 + movi lex_ohslam_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;RJR START + movi lex_ohslam_anim,a0 + movi lex_slamdown_anim,a0 +;RJR END + calla change_anim1a + 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(ATTACH_PROC),a10,L + jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + +;Should we allow you to break from head hold into a block? +;I think not right now... +; 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 do_block ;& 1 for current buttons +; +;;Do an ANI_DETACH +; move *a13(ATTACH_PROC),a1,L +; jrz #done +; clr a0 +; move a0,*a13(ATTACH_PROC),L ;not attached to anything +; +; move *a1(ATTACH_PROC),a2,L +; cmp a2,a13 +; jrne #done +; +; move a0,*a1(ATTACH_PROC),L ;not attached to anything +;#done +; +;#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 + +#no_interrupt + rets + +#exit + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#z ;0 + rets + +************ + +#punch ;1 +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag +; movi dnk_uppercuts_to_head_anim,a0 + movi lex_4_knee_anim,a0 + calla change_anim1a + rets + +#tag +; movi dnk_uppercut_to_head_anim,a0 + movi lex_4_knee_anim,a0 + calla change_anim1a + rets + +************ +#super_punch ;4 + + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #punch + + movi lex_vsuplex_anim,a0 + calla change_anim1a + rets + +#punchkick +#graboh +#kick + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #knee + +; .ref dnk_3_head_slam_anim + +; movi dnk_3_head_slam_anim,a0 + movi lex_4_knee_anim,a0 + calla change_anim1a + rets + +#knee +; movi dnk_3_knee_to_head_anim,a0 + movi lex_4_knee_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #kick + +;Quick knees +; movi dnk_3_knees_to_head_anim,a0 + movi lex_4_knee_anim,a0 + calla change_anim1a + rets + + +#***************************************************************************** +mode_headheld ;19 + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + .ref lex_3_head_held_stand_anim + movi lex_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_puppet ;20 + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +#VEL equ 30000h +#DVEL equ 21f0eh + + + SUBR lex_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 lex_rotate_anims_table +; old = up right + .long lex_stand2_anim ;new = up right + .long lex_2_to_4_turn_anim ; = down right + .long lex_2_to_6_turn_anim ; = down left + .long lex_2_to_8_turn_anim ; = up left + +; old = down right + .long lex_4_to_2_turn_anim ;new = up right + .long lex_stand4_anim ; = down right + .long lex_4_to_6_turn_anim ; = down left + .long lex_4_to_8_turn_anim ; = up left + +; old = down left + .long lex_6_to_2_turn_anim ;new = up right + .long lex_6_to_4_turn_anim ; = down right + .long lex_stand6_anim ; = down left + .long lex_6_to_8_turn_anim ; = up left + +; old = up left + .long lex_8_to_2_turn_anim ;new = up right + .long lex_8_to_4_turn_anim ; = down right + .long lex_8_to_6_turn_anim ; = down left + .long lex_stand8_anim ; = up left + + + SUBR lex_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long lex_walk1_f2_anim ;1 (UP) + .long lex_walk1_f2_anim ;2 (UP_RIGHT) + .long lex_walk1_f4_anim ;3 (RIGHT) + .long lex_walk1_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk1_f4_anim ;5 (DOWN) + .long lex_walk1_f4_anim ;6 (DOWN_LEFT) + .long lex_walk1_f2_anim ;7 (LEFT) + .long lex_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk2_f2_anim ;2 (UP_RIGHT) + .long lex_walk2_f2_anim ;3 (RIGHT) + .long lex_walk2_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk8_f4_anim ;5 (DOWN) + .long lex_walk8_f4_anim ;6 (DOWN_LEFT) + .long lex_walk4_f2_anim ;7 (LEFT) + .long lex_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk2_f2_anim ;2 (UP_RIGHT) + .long lex_walk2_f2_anim ;3 (RIGHT) + .long lex_walk4_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk4_f4_anim ;5 (DOWN) + .long lex_walk8_f4_anim ;6 (DOWN_LEFT) + .long lex_walk6_f2_anim ;7 (LEFT) + .long lex_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk8_f2_anim ;2 (UP_RIGHT) + .long lex_walk4_f4_anim ;3 (RIGHT) + .long lex_walk4_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk2_f4_anim ;5 (DOWN) + .long lex_walk6_f4_anim ;6 (DOWN_LEFT) + .long lex_walk2_f2_anim ;7 (LEFT) + .long lex_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long lex_walk5_f2_anim ;1 (UP) + .long lex_walk5_f2_anim ;2 (UP_RIGHT) + .long lex_walk5_f4_anim ;3 (RIGHT) + .long lex_walk5_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk5_f4_anim ;5 (DOWN) + .long lex_walk5_f4_anim ;6 (DOWN_LEFT) + .long lex_walk5_f2_anim ;7 (LEFT) + .long lex_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk6_f2_anim ;2 (UP_RIGHT) + .long lex_walk2_f2_anim ;3 (RIGHT) + .long lex_walk6_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk2_f4_anim ;5 (DOWN) + .long lex_walk4_f4_anim ;6 (DOWN_LEFT) + .long lex_walk2_f2_anim ;7 (LEFT) + .long lex_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk6_f2_anim ;2 (UP_RIGHT) + .long lex_walk6_f2_anim ;3 (RIGHT) + .long lex_walk8_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk4_f4_anim ;5 (DOWN) + .long lex_walk4_f4_anim ;6 (DOWN_LEFT) + .long lex_walk2_f2_anim ;7 (LEFT) + .long lex_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk4_f2_anim ;2 (UP_RIGHT) + .long lex_walk6_f2_anim ;3 (RIGHT) + .long lex_walk8_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk6_f4_anim ;5 (DOWN) + .long lex_walk2_f4_anim ;6 (DOWN_LEFT) + .long lex_walk2_f2_anim ;7 (LEFT) + .long lex_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR lex_torso_anims_table +; old = up right + .long lex_torso2_anim ;new = up right + .long lex_2_to_4_turn2_anim ; = down right + .long lex_2_to_6_turn2_anim ; = down left + .long lex_2_to_8_turn2_anim ; = up left + +; old = down right + .long lex_4_to_2_turn2_anim ;new = up right + .long lex_torso4_anim ; = down right + .long lex_4_to_6_turn2_anim ; = down left + .long lex_4_to_8_turn2_anim ; = up left + +; old = down left + .long lex_6_to_2_turn2_anim ;new = up right + .long lex_6_to_4_turn2_anim ; = down right + .long lex_torso6_anim ; = down left + .long lex_6_to_8_turn2_anim ; = up left + +; old = up left + .long lex_8_to_2_turn2_anim ;new = up right + .long lex_8_to_4_turn2_anim ; = down right + .long lex_8_to_6_turn2_anim ; = down left + .long lex_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/LEX.BAT b/BACKUP/LEX.BAT new file mode 100644 index 0000000..41d5053 --- /dev/null +++ b/BACKUP/LEX.BAT @@ -0,0 +1,9 @@ +@echo off +@wwfld lex lex_hit lex_kik lex_msc lex_pnc lex_wlk lex_rjr lex_mjt lex_jms lex_jake +@copy lex.ld1 + lex.ld2 lex.lod +@move lex.h ..\leximg.h +@move lex.seq .. + + + + diff --git a/BACKUP/LEXIMG.ASM b/BACKUP/LEXIMG.ASM new file mode 100644 index 0000000..f498171 --- /dev/null +++ b/BACKUP/LEXIMG.ASM @@ -0,0 +1,18 @@ + .FILE "leximg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include leximg.tbl + .include leximg.h + +****************************************************************************** + + .even + .include "lex.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/BACKUP/LEXIMG.H b/BACKUP/LEXIMG.H new file mode 100644 index 0000000..6cae54d --- /dev/null +++ b/BACKUP/LEXIMG.H @@ -0,0 +1,92 @@ + .global L3GU4A + .global L2AE2A + .global L2AH2A + .global L4AH4A + .global L4AE4A + .global L3GU2A + .global L4AM4B + .global L2AM2B + .global L4AH4B + .global L3PB3A + .global L3CP3B + .global L3MF3B + .global L3UC3A + .global L2KM3A + .global L4KM3B + .global L4NM3B + .global L2NM3A + .global L3DC3B + .global L2BK3A + .global L2BK3B + .global L4BK3B + .global L4BK3C + .global L3RL1A + .global L4BC3D + .global L2BC3E + .global L4PS3A + .global L4PU3B + .global L2PU2B + .global L2PS3A + .global L2PJ3C + .global L2TW2Z + .global L4TW4Z + .global L2ST2C + .global L4ST4A + .global L4TI4B + .global L4WL4A + .global L4WL5A + .global L2WL2A + .global L4WL2B + .global L2WL1B + .global L2WL8A + .global L3RN3B + .global L4BO3Z + .global L1TT5A + .global L1TR5A + .global L3FO3A + .global L4HT3A + .global L3RE3C + .global L3LE3A + .global L3BR3Z + .global L4CF4A + .global L4ZZ5B + .global L4PO4A + .global L3DD3A + .global L3UC3Z + .global L3UC3X + .global L3TN3X + .global L4SH3A + .global L3FL3A + .global L3BF3A + .global L3VS3A + .global L4POGO + .global L4GH3Z + .global L4GH3B + .global L3PN5B + .global L3PN5D + .global L4FX5B + .global L3MS3Z + .global L4WS4B + .global L4SW5A + .global L4CO4Z + .global L3DU3A + .global L3GP3Z + .global L4GF3B + .global L4YR3B + .global L3BF3B + .global L4BZ4A + .global L3TF3X + .global L3RR3Z + .global L3FH3A + .global L3FD3B + .global L4MP3A + .global L2MP2A + .global L2PT2B + .global L4PT4B + .global L3PJ3F + .global L3CP3X + .global L3GU4B + .global L4HU4A + .global L4SB4A + .global L4CR3B + .global L4JD4A diff --git a/BACKUP/LEXSEQ1.ASM b/BACKUP/LEXSEQ1.ASM new file mode 100644 index 0000000..e526831 --- /dev/null +++ b/BACKUP/LEXSEQ1.ASM @@ -0,0 +1,693 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 7/15/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lexseq1.asm" + + .title "Lex Luger animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "leximg.h" + .include "takerimg.h" ;<-- temp! + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF SMALL_RUN + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* STANDS + + SUBR lex_zip_anim + WL 60*60,L2ST2C+FR1 + .word ANI_END + + + SUBR lex_stand2_anim + SUBR lex_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 3,L2ST2C+FR7 + WL 3,L2ST2C+FR8 + WL 3,L2ST2C+FR9 + WL 3,L2ST2C+FR10 + WL 3,L2ST2C+FR11 + WL 3,L2ST2C+FR12 + + WL 3,L2ST2C+FR11 + WL 3,L2ST2C+FR10 + WL 3,L2ST2C+FR9 + WL 3,L2ST2C+FR8 + WL 3,L2ST2C+FR7 + WL 3,L2ST2C+FR6 + WL 3,L2ST2C+FR5 + WL 3,L2ST2C+FR4 + WL 3,L2ST2C+FR3 + + WL 3,L2ST2C+FR2 + WL 3,L2ST2C+FR3 + WL 3,L2ST2C+FR4 + WL 3,L2ST2C+FR5 + WL 3,L2ST2C+FR6 + + .word ANI_REPEAT + + + SUBR lex_stand4_anim + SUBR lex_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 3,L4ST4A+FR5 + WL 3,L4ST4A+FR6 + WL 3,L4ST4A+FR7 + WL 3,L4ST4A+FR8 + WL 3,L4ST4A+FR9 + WL 3,L4ST4A+FR10 + WL 3,L4ST4A+FR11 + WL 3,L4ST4A+FR10 + WL 3,L4ST4A+FR9 + WL 3,L4ST4A+FR8 + WL 3,L4ST4A+FR7 + WL 3,L4ST4A+FR6 + WL 3,L4ST4A+FR5 + WL 3,L4ST4A+FR4 + WL 3,L4ST4A+FR3 + WL 3,L4ST4A+FR2 + + WL 3,L4ST4A+FR1 + WL 3,L4ST4A+FR2 + WL 3,L4ST4A+FR3 + WL 3,L4ST4A+FR4 + + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR lex_torso2_anim + SUBR lex_torso8_anim + + WL 4,L2TW2Z+FR1 + WL 4,L2TW2Z+FR2 + WL 4,L2TW2Z+FR3 + WL 4,L2TW2Z+FR4 + WL 4,L2TW2Z+FR5 + WL 4,L2TW2Z+FR4 + WL 4,L2TW2Z+FR3 + WL 4,L2TW2Z+FR2 + .word ANI_REPEAT + + + SUBR lex_torso4_anim + SUBR lex_torso6_anim + + WL 4,L4TW4Z+FR1 + WL 4,L4TW4Z+FR2 + WL 4,L4TW4Z+FR3 + WL 4,L4TW4Z+FR4 + WL 4,L4TW4Z+FR5 + WL 4,L4TW4Z+FR4 + WL 4,L4TW4Z+FR3 + WL 4,L4TW4Z+FR2 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR lex_walk1_f2_anim + + WL 3,L2WL1B+FR1 + WL 3,L2WL1B+FR2 + WL 3,L2WL1B+FR3 + WL 3,L2WL1B+FR4 + WL 3,L2WL1B+FR5 + WL 3,L2WL1B+FR6 + WL 3,L2WL1B+FR7 + WL 3,L2WL1B+FR8 + WL 3,L2WL1B+FR9 + WL 3,L2WL1B+FR10 + WL 3,L2WL1B+FR11 + WL 3,L2WL1B+FR12 + WL 3,L2WL1B+FR13 + WL 3,L2WL1B+FR14 + WL 3,L2WL1B+FR15 + WL 3,L2WL1B+FR16 + + .word ANI_REPEAT + + SUBR lex_walk2_f2_anim + + WL 3,L2WL2A+FR1 + WL 3,L2WL2A+FR2 + WL 3,L2WL2A+FR3 + WL 3,L2WL2A+FR4 + WL 3,L2WL2A+FR5 + WL 3,L2WL2A+FR6 + WL 3,L2WL2A+FR7 + WL 3,L2WL2A+FR8 + WL 3,L2WL2A+FR9 + WL 3,L2WL2A+FR10 + WL 3,L2WL2A+FR11 + WL 3,L2WL2A+FR12 + WL 3,L2WL2A+FR13 + WL 3,L2WL2A+FR14 + WL 3,L2WL2A+FR15 + WL 3,L2WL2A+FR16 + WL 3,L2WL2A+FR17 + WL 3,L2WL2A+FR18 + + .word ANI_REPEAT + + SUBR lex_walk4_f2_anim + + WL 3,L2WL8A+FR1 + WL 3,L2WL8A+FR2 + WL 3,L2WL8A+FR3 + WL 3,L2WL8A+FR4 + WL 3,L2WL8A+FR5 + WL 3,L2WL8A+FR6 + WL 3,L2WL8A+FR7 + WL 3,L2WL8A+FR8 + WL 3,L2WL8A+FR9 + WL 3,L2WL8A+FR10 + WL 3,L2WL8A+FR11 + WL 3,L2WL8A+FR12 + WL 3,L2WL8A+FR13 + WL 3,L2WL8A+FR14 + WL 3,L2WL8A+FR15 + WL 3,L2WL8A+FR16 + WL 3,L2WL8A+FR17 + + .word ANI_REPEAT + + SUBR lex_walk5_f2_anim + + WL 3,L2WL1B+FR16 + WL 3,L2WL1B+FR15 + WL 3,L2WL1B+FR14 + WL 3,L2WL1B+FR13 + WL 3,L2WL1B+FR12 + WL 3,L2WL1B+FR11 + WL 3,L2WL1B+FR10 + WL 3,L2WL1B+FR9 + WL 3,L2WL1B+FR8 + WL 3,L2WL1B+FR7 + WL 3,L2WL1B+FR6 + WL 3,L2WL1B+FR5 + WL 3,L2WL1B+FR4 + WL 3,L2WL1B+FR3 + WL 3,L2WL1B+FR2 + WL 3,L2WL1B+FR1 + + .word ANI_REPEAT + + SUBR lex_walk6_f2_anim + + WL 3,L2WL2A+FR18 + WL 3,L2WL2A+FR17 + WL 3,L2WL2A+FR16 + WL 3,L2WL2A+FR15 + WL 3,L2WL2A+FR14 + WL 3,L2WL2A+FR13 + WL 3,L2WL2A+FR12 + WL 3,L2WL2A+FR11 + WL 3,L2WL2A+FR10 + WL 3,L2WL2A+FR9 + WL 3,L2WL2A+FR8 + WL 3,L2WL2A+FR7 + WL 3,L2WL2A+FR6 + WL 3,L2WL2A+FR5 + WL 3,L2WL2A+FR4 + WL 3,L2WL2A+FR3 + WL 3,L2WL2A+FR2 + WL 3,L2WL2A+FR1 + + .word ANI_REPEAT + + + SUBR lex_walk8_f2_anim + + WL 3,L2WL8A+FR17 + WL 3,L2WL8A+FR16 + WL 3,L2WL8A+FR15 + WL 3,L2WL8A+FR14 + WL 3,L2WL8A+FR13 + WL 3,L2WL8A+FR12 + WL 3,L2WL8A+FR11 + WL 3,L2WL8A+FR10 + WL 3,L2WL8A+FR9 + WL 3,L2WL8A+FR8 + WL 3,L2WL8A+FR7 + WL 3,L2WL8A+FR6 + WL 3,L2WL8A+FR5 + WL 3,L2WL8A+FR4 + WL 3,L2WL8A+FR3 + WL 3,L2WL8A+FR2 + WL 3,L2WL8A+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR lex_walk1_f4_anim + + WL 3,L4WL5A+FR17 + WL 3,L4WL5A+FR16 + WL 3,L4WL5A+FR15 + WL 3,L4WL5A+FR14 + WL 3,L4WL5A+FR13 + WL 3,L4WL5A+FR12 + WL 3,L4WL5A+FR11 + WL 3,L4WL5A+FR10 + WL 3,L4WL5A+FR9 + WL 3,L4WL5A+FR8 + WL 3,L4WL5A+FR7 + WL 3,L4WL5A+FR6 + WL 3,L4WL5A+FR5 + WL 3,L4WL5A+FR4 + WL 3,L4WL5A+FR3 + WL 3,L4WL5A+FR2 + WL 3,L4WL5A+FR1 + .word ANI_REPEAT + + SUBR lex_walk2_f4_anim + + WL 3,L4WL2B+FR1 + WL 3,L4WL2B+FR2 + WL 3,L4WL2B+FR3 + WL 3,L4WL2B+FR4 + WL 3,L4WL2B+FR5 + WL 3,L4WL2B+FR6 + WL 3,L4WL2B+FR7 + WL 3,L4WL2B+FR8 + WL 3,L4WL2B+FR9 + WL 3,L4WL2B+FR10 + WL 3,L4WL2B+FR11 + WL 3,L4WL2B+FR12 + WL 3,L4WL2B+FR13 + WL 3,L4WL2B+FR14 + WL 3,L4WL2B+FR15 + WL 3,L4WL2B+FR16 + + .word ANI_REPEAT + + SUBR lex_walk4_f4_anim + + WL 3,L4WL4A+FR1 + WL 3,L4WL4A+FR2 + WL 3,L4WL4A+FR3 + WL 3,L4WL4A+FR4 + WL 3,L4WL4A+FR5 + WL 3,L4WL4A+FR6 + WL 3,L4WL4A+FR7 + WL 3,L4WL4A+FR8 + WL 3,L4WL4A+FR9 + WL 3,L4WL4A+FR10 + WL 3,L4WL4A+FR11 + WL 3,L4WL4A+FR12 + WL 3,L4WL4A+FR13 + WL 3,L4WL4A+FR14 + WL 3,L4WL4A+FR15 + WL 3,L4WL4A+FR16 + WL 3,L4WL4A+FR17 + WL 3,L4WL4A+FR18 + + .word ANI_REPEAT + + SUBR lex_walk5_f4_anim + + WL 3,L4WL5A+FR1 + WL 3,L4WL5A+FR2 + WL 3,L4WL5A+FR3 + WL 3,L4WL5A+FR4 + WL 3,L4WL5A+FR5 + WL 3,L4WL5A+FR6 + WL 3,L4WL5A+FR7 + WL 3,L4WL5A+FR8 + WL 3,L4WL5A+FR9 + WL 3,L4WL5A+FR10 + WL 3,L4WL5A+FR11 + WL 3,L4WL5A+FR12 + WL 3,L4WL5A+FR13 + WL 3,L4WL5A+FR14 + WL 3,L4WL5A+FR15 + WL 3,L4WL5A+FR16 + WL 3,L4WL5A+FR17 + + .word ANI_REPEAT + + SUBR lex_walk6_f4_anim + + WL 3,L4WL2B+FR16 + WL 3,L4WL2B+FR15 + WL 3,L4WL2B+FR14 + WL 3,L4WL2B+FR13 + WL 3,L4WL2B+FR12 + WL 3,L4WL2B+FR11 + WL 3,L4WL2B+FR10 + WL 3,L4WL2B+FR9 + WL 3,L4WL2B+FR8 + WL 3,L4WL2B+FR7 + WL 3,L4WL2B+FR6 + WL 3,L4WL2B+FR5 + WL 3,L4WL2B+FR4 + WL 3,L4WL2B+FR3 + WL 3,L4WL2B+FR2 + WL 3,L4WL2B+FR1 + + .word ANI_REPEAT + + SUBR lex_walk8_f4_anim + + WL 3,L4WL4A+FR18 + WL 3,L4WL4A+FR17 + WL 3,L4WL4A+FR16 + WL 3,L4WL4A+FR15 + WL 3,L4WL4A+FR14 + WL 3,L4WL4A+FR13 + WL 3,L4WL4A+FR12 + WL 3,L4WL4A+FR11 + WL 3,L4WL4A+FR10 + WL 3,L4WL4A+FR9 + WL 3,L4WL4A+FR8 + WL 3,L4WL4A+FR7 + WL 3,L4WL4A+FR6 + WL 3,L4WL4A+FR5 + WL 3,L4WL4A+FR4 + WL 3,L4WL4A+FR3 + WL 3,L4WL4A+FR2 + WL 3,L4WL4A+FR1 + + .word ANI_REPEAT + +;There are too many rotate frames listed here... + + +;MJT Start +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR lex_2_to_4_turn_anim + SUBR lex_8_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h +;Fix!!! +;Take out these extra frames + WL 1,L1TT5A+FR4 + WL 1,L1TT5A+FR5 + WL 1,L1TT5A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_2_turn_anim + SUBR lex_6_to_8_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TT5A+FR6 + WL 1,L1TT5A+FR5 + WL 1,L1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_6_turn_anim + SUBR lex_6_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TT5A+FR8 + .word ANI_XFLIP + WL 1,L1TT5A+FR9 + WL 1,L1TT5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_8_turn_anim + SUBR lex_8_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TT5A+FR2 + .word ANI_XFLIP + WL 1,L1TT5A+FR1 + WL 1,L1TT5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_8_turn_anim + SUBR lex_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TT5A+FR8 + .word ANI_XFLIP + WL 1,L1TT5A+FR9 + WL 1,L1TT5A+FR8 + WL 1,L4ST4A+FR5 ;#4 stand + WL 1,L1TT5A+FR6 + WL 1,L1TT5A+FR5 + WL 1,L1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_6_turn_anim + SUBR lex_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TT5A+FR4 + WL 1,L1TT5A+FR5 + WL 1,L1TT5A+FR6 + WL 1,L4ST4A+FR5 ;#4 stand + WL 1,L1TT5A+FR8 + .word ANI_XFLIP + WL 1,L1TT5A+FR9 + WL 1,L1TT5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR lex_2_to_4_turn2_anim + SUBR lex_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TR5A+FR4 + WL 1,L1TR5A+FR5 + .word ANI_SETFACING + WL 1,L1TR5A+FR5 + WL 1,L1TR5A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_2_turn2_anim + SUBR lex_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TR5A+FR6 + WL 1,L1TR5A+FR5 + .word ANI_SETFACING + WL 1,L1TR5A+FR5 + WL 1,L1TR5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_6_turn2_anim + SUBR lex_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TR5A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,L1TR5A+FR9 + WL 1,L1TR5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_8_turn2_anim + SUBR lex_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TR5A+FR2 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,L1TR5A+FR1 + WL 1,L1TR5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_8_turn2_anim + SUBR lex_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TR5A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,L1TR5A+FR9 + WL 1,L1TR5A+FR8 + WL 1,L4TW4Z+FR1 ;#4 stand (torso) + WL 1,L1TR5A+FR6 + WL 1,L1TR5A+FR5 + WL 1,L1TR5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_6_turn2_anim + SUBR lex_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,L1TR5A+FR4 + WL 1,L1TR5A+FR5 + WL 1,L1TR5A+FR6 + WL 1,L4TW4Z+FR1 ;#4 stand (torso) + WL 1,L1TR5A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,L1TR5A+FR9 + WL 1,L1TR5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + +;MJT End + SUBR lex_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR lex_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + +#lp1 + WL 3,L3RN3B+FR5 + WL 3,L3RN3B+FR6 + WL 3,L3RN3B+FR7 + WL 3,L3RN3B+FR8 + WL ANI_CODE,SMALL_RUN +#run2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL 3,L3RN3B+FR9 + WL 3,L3RN3B+FR10 + WL 3,L3RN3B+FR11 + WL 3,L3RN3B+FR12 + WL 3,L3RN3B+FR1 + WL 3,L3RN3B+FR2 + WL 3,L3RN3B+FR3 + WL ANI_CODE,SMALL_RUN + WL 3,L3RN3B+FR4 + + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR lex_bounce_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 2,L4BO3Z+FR1 + .word ANI_BOUNCEROPE,0 + WL 1,L4BO3Z+FR1 + + WL 2,L4BO3Z+FR2 + .word ANI_BOUNCEROPE,1 + WL ANI_CODE,SMALL_RUN + + WL 1,L4BO3Z+FR2 + + WL 2,L4BO3Z+FR3 + .word ANI_BOUNCEROPE,2 + WL 1,L4BO3Z+FR3 + + WL 2,L4BO3Z+FR4 + .word ANI_BOUNCEROPE,3 + WL 1,L4BO3Z+FR4 + + .word ANI_ZEROVELS + + WL 2,L4BO3Z+FR5 + .word ANI_BOUNCEROPE,4 + WL 1,L4BO3Z+FR5 + WL 3,L4BO3Z+FR6 + WL 2,L4BO3Z+FR7 + .word ANI_BOUNCEROPE,0 + WL 1,L4BO3Z+FR7 + WL 2,L4BO3Z+FR8 + .word ANI_BOUNCEROPE,-1 + WL ANI_CODE,SMALL_RUN + WL 1,L4BO3Z+FR8 + WL 3,L4BO3Z+FR9 + WL 3,L4BO3Z+FR10 + + .word ANI_OFFSET,15,0,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;MJT Start + +;MJT End +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/LEXSEQ2.ASM b/BACKUP/LEXSEQ2.ASM new file mode 100644 index 0000000..ad9b5ba --- /dev/null +++ b/BACKUP/LEXSEQ2.ASM @@ -0,0 +1,2497 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 7/15/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lexseq2.asm" + .title "Lex Luger animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "leximg.h" + .include "takerimg.h" ;<-- temp! + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF DO_CROWD_CHEER + .ref SET_DIR_FACE,no_bk_xvel,start_run_anim,CALL_MISSES + .ref ckzpos,ck_dizzy + .ref check_xvel + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #2 BLOCK & HITBLOCK + + SUBR lex_2_block_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + WLW ANI_SET_ZVEL,0,AM_ABS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 4,L2BK3A+FR1 + WL 4,L2BK3A+FR2 + WL 10,L2BK3A+FR5 +#2block + .word ANI_SETMODE,MODE_NOAUTOFLIP + WL 1,L2BK3A+FR5 + .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + WL 4,L2BK3A+FR2 + WL 4,L2BK3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + WL 4,L2BK3B+FR2 + WL 4,L2BK3B+FR1 + WL ANI_GOTO,#2block + +#************ +* +* #4 BLOCK & HITBLOCK + + SUBR lex_4_block_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + WLW ANI_SET_ZVEL,0,AM_ABS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 4,L4BK3B+FR1 + WL 4,L4BK3B+FR3 + WL 10,L4BK3B+FR5 +#4block + .word ANI_SETMODE,MODE_NOAUTOFLIP + WL 1,L4BK3B+FR5 + .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + WL 4,L4BK3B+FR3 + WL 4,L4BK3B+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + WL 4,L4BK3C+FR2 + WL 4,L4BK3C+FR1 + WL ANI_GOTO,#4block + + +#***************************************************************************** +* +* #2 NORMAL PUNCH + + SUBR lex_2_punch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,L2PU2B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 3,L2PU2B+FR2 + WL 3,L2PU2B+FR3 + .word ANI_ATTACK_ON, AMODE_PUNCH,20,81,54,19 ;mode,x,y,w,h + WL 3,L2PU2B+FR4 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-30000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 3,L2PU2B+FR4 +#no_hit + WL 3,L2PU2B+FR5 + WL 3,L2PU2B+FR6 + WL 3,L2PU2B+FR7 + WL 2,L2PU2B+FR8 + WL 2,L2PU2B+FR9 + + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 NORMAL PUNCH + + SUBR lex_4_punch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,L4PU3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 3,L4PU3B+FR2 + WL 3,L4PU3B+FR3 + .word ANI_ATTACK_ON, AMODE_PUNCH,20,81,54,19 ;mode,x,y,w,h + WL 3,L4PU3B+FR4 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-30000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 3,L4PU3B+FR4 + +#no_hit2 + WL 3,L4PU3B+FR5 + WL 3,L4PU3B+FR6 + WL 3,L4PU3B+FR7 + WL 2,L4PU3B+FR8 + WL 2,L4PU3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;#***************************************************************************** +;* +;* #2 TURBO PUNCH +; +;; SUBR lex_2_turbopunch_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP +; .word ANI_SETSPEED,100h +; .word ANI_ZEROVELS +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END +; +;#************ +;* +;* #4 TURBO PUNCH +; +; SUBR lex_2_turbopunch_anim +; SUBR lex_4_turbopunch_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP +; .word ANI_SETSPEED,100h +; .word ANI_ZEROVELS +; +; WL 5,L4BZ3C+FR1 +; WL 5,L4BZ3C+FR2 +; WL 5,L4BZ3C+FR3 +; +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 15-1,999,80,20,90000h,TGT_HEAD,77,0,10 +; WL ANI_SET_YVEL,0 +; +; WL 5,L4BZ3C+FR4 +; WL 5,L4BZ3C+FR5 +; WL 5,L4BZ3C+FR6 +; +; .word ANI_ZERO_XZVELS +; +; WL 15,L4BZ3C+FR6 +; +; WL 5,L4BZ3C+FR7 +; WL 5,L4BZ3C+FR8 +; WL 5,L4BZ3C+FR9 +; WL 5,L4BZ3C+FR10 +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + +#***************************************************************************** +* +* #2 PUSH + + SUBR lex_2_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,L2PS3A+FR2 + WL 3,L2PS3A+FR3 + WL 3,L2PS3A+FR4 + .word ANI_ATTACK_ON, AMODE_PUSH,41,77,61,20 ;mode,x,y,w,h + WL 3,L2PS3A+FR6 + .word ANI_ATTACK_OFF + +; WL ANI_IFNOTSTATUS,#missed +; WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WWL ANI_SLIDE_BACK,40h,-60000h,#no_hit ;range,vel,addr + WL 15,L2PS3A+FR6 +#no_hit + WL 3,L2PS3A+FR6 + WL 3,L2PS3A+FR7 + WL 3,L2PS3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 PUSH + + SUBR lex_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,L4PS3A+FR1 + WL 3,L4PS3A+FR2 + WL 3,L4PS3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUSH,41,77,61,20 ;mode,x,y,w,h + WL 3,L4PS3A+FR4 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,40h,-60000h,#no_hit ;range,vel,addr + WL 15,L4PS3A+FR4 +#no_hit + WL 4,L4PS3A+FR4 + WL 3,L4PS3A+FR3 + WL 3,L4PS3A+FR2 + WL 3,L4PS3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR lex_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + + WL 4,L3PB3A+FR3 + WL 4,L3PB3A+FR4 + WL 4,L3PB3A+FR5 + WL 4,L3PB3A+FR6 + WL 4,L3PB3A+FR7 + WL 4,L3PB3A+FR8 + WL 4,L3PB3A+FR9 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 PUNCH FALLEN OPPONENT + + SUBR lex_2_ground_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,L2PT2B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_LBDROP,11 + WL 3,L2PT2B+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,-4,-6,-40,37,36,50 + WL 1,L2PT2B+FR2 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL ANI_SET_YVEL,20000h + + WL 3,L2PT2B+FR3 + WL 3,L2PT2B+FR4 + WL 1,L2PT2B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,L2PT2B+FR6 + WL 3,L2PT2B+FR7 + + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-4,-6,-40,37,36,50 + WL 1,L2PT2B+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_GOTO,#missed + +#leapat_stomp + ;too far. leap at the chest. + .word ANI_TARGET,TGT_CHEST,TGT_KNEES,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,112,96,90000h,TGT_USER,13,0,-40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_LBDROP,16 + + WL 3,L2PT2B+FR3 + WL 3,L2PT2B+FR4 + WL 1,L2PT2B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,L2PT2B+FR6 + WL 2,L2PT2B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-4,-6,-40,37,36,50 + WL 1,L2PT2B+FR8 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#hit + WL ANI_GOTO,#missed + +#hit + .word ANI_SHAKER,18 + .word ANI_SHAKEALL,1 + WL 7,L2PT2B+FR8 + WL 3,L2PT2B+FR9 + WL 3,L2PT2B+FR10 + WL 3,L2PT2B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + WL 7,L2PT2B+FR8 + WL 3,L2PT2B+FR9 + WL 3,L2PT2B+FR10 + WL 3,L2PT2B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 PUNCH FALLEN OPPONENT + + SUBR lex_4_ground_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,L4PT4B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_STOMP,18 + WL 3,L4PT4B+FR2 + WL 2,L4PT4B+FR3 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,-3,-1,-10,29,28,50 + WL 1,L4PT4B+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL ANI_SET_YVEL,20000h + + WL 3,L4PT4B+FR4 + WL 3,L4PT4B+FR5 + .word ANI_WAITHITGND ;just in case OFFSET left us in air + WL 3,L4PT4B+FR6 + WL 3,L4PT4B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-1,-10,29,28,50 + WL 1,L4PT4B+FR8 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#hit + WL ANI_GOTO,#missed + +#leapat_stomp + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,112,96,90000h,TGT_USER,15,0,50 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,16 + + WL 3,L4PT4B+FR4 + WL 3,L4PT4B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L4PT4B+FR6 + WL 2,L4PT4B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-1,-10,29,28,50 + WL 1,L4PT4B+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_GOTO,#missed + +#hit + .word ANI_SHAKER,18 + .word ANI_SHAKEALL,1 + + WL 7,L4PT4B+FR8 + WL 4,L4PT4B+FR9 + WL 4,L4PT4B+FR10 + WL 4,L4PT4B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + WL 7,L4PT4B+FR8 + WL 4,L4PT4B+FR9 + WL 4,L4PT4B+FR10 + WL 4,L4PT4B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR lex_2_butt_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,L2BC3E+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 3,L2BC3E+FR3 + WL 3,L2BC3E+FR4 + .word ANI_ATTACK_ON, AMODE_HDBUTT,8,85,30,18 ;mode,x,y,w,h + WL 3,L2BC3E+FR5 + .word ANI_ATTACK_OFF + WL 3,L2BC3E+FR5 + WL 3,L2BC3E+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEADBUTT + + SUBR lex_4_butt_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,L4BC3D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 3,L4BC3D+FR3 + WL 3,L4BC3D+FR4 + .word ANI_ATTACK_ON, AMODE_HDBUTT,8,85,30,18 ;mode,x,y,w,h + WL 3,L4BC3D+FR5 + .word ANI_ATTACK_OFF + WL 3,L4BC3D+FR5 + WL 3,L4BC3D+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK + + SUBR lex_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + + WL 2,L2KM3A+FR1 + WL 1,L2KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,6 + WL 2,L2KM3A+FR2 + WL 2,L2KM3A+FR3 + WL 2,L2KM3A+FR4 + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 3,L2KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 3,L2KM3A+FR5 + +#no_hit + WL 3,L2KM3A+FR5 + WL 2,L2KM3A+FR6 + WL 2,L2KM3A+FR7 + WL 3,L2KM3A+FR8 + WL 3,L2KM3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KICK + + SUBR lex_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 2,L4KM3B+FR1 + WL 1,L4KM3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,6 + WL 2,L4KM3B+FR2 + WL 2,L4KM3B+FR3 + WL 2,L4KM3B+FR4 + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 3,L4KM3B+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 3,L4KM3B+FR5 +#no_hit2 + WL 3,L4KM3B+FR5 + WL 2,L4KM3B+FR6 + WL 2,L4KM3B+FR7 + WL 3,L4KM3B+FR8 + WL 3,L4KM3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #3 FLYING KICK (FLYING ELBOW) + + + SUBR lex_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_ZEROVELS + + WL 3,L3DC3B+FR1 + WL 3,L3DC3B+FR2 + WL 3,L3DC3B+FR3 + + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + WL ANI_SET_YVEL,60000h + .word ANI_OFFSET,24,44,0 ;x,y,z + + WL 8,L3DC3B+FR5 + WL 4,L3DC3B+FR6 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 10,L3DC3B+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR lex_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 4,L2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 3,L2MP2A+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,7,-2,-40,23,32,50 + WL 1,L2MP2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + .word ANI_STARTATTACK,AT_STOMP,12 + WL 4,L2MP2A+FR3 + WL 4,L2MP2A+FR5 + WL 4,L2MP2A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,3,-6,-40,31,40,50 + WL 3,L2MP2A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + WL 3,L2MP2A+FR8 + WL 3,L2MP2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + + .word ANI_TARGET,TGT_GROIN,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,112,96,90000h,TGT_USER,17,0,-50 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,14 + + WL 3,L2MP2A+FR3 + WL 3,L2MP2A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L2MP2A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,3,-6,-40,31,40,50 + WL 3,L2MP2A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 3,L2MP2A+FR8 + WL 3,L2MP2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + + SUBR lex_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,L4MP3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,1,-9,-10,31,30,50 + WL 1,L4MP3A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + .word ANI_STARTATTACK,AT_STOMP,14 + WL 4,L4MP3A+FR3 + WL 4,L4MP3A+FR4 + WL 4,L4MP3A+FR5 + WL 2,L4MP3A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-13,-10,39,38,50 + WL 4,L4MP3A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + WL 4,L4MP3A+FR9 + WL 4,L4MP3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + + .word ANI_TARGET,TGT_KNEES,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,112,96,90000h,TGT_USER,13,0,50 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,14 + WL 3,L4MP3A+FR3 + WL 3,L4MP3A+FR4 + WL 3,L4MP3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L4MP3A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-13,-10,39,38,50 + WL 4,L4MP3A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 4,L4MP3A+FR9 + WL 4,L4MP3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 FLYING GROUND-PUNCH + +#yoff equ 25 + + SUBR lex_flying_ground_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + WL 3,L3PJ3F+FR1 + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_FARTHEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,200,150,90,90000h,TGT_USER,56,#yoff,50 + .word ANI_SETPLYRMODE,MODE_INAIR + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_BUTTSTOMP,25 + + .word ANI_OFFSET,0,#yoff,0 + WL 3,L3PJ3F+FR3 + WL 3,L3PJ3F+FR4 + WL 3,L3PJ3F+FR5 + WL 4,L3PJ3F+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L3PJ3F+FR7 + + .word ANI_ATTACK_ON_Z,AMODE_BUTTSTOMP,5,-11,-10,50,34,70 + WL 1,L3PJ3F+FR9 + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 7,L3PJ3F+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,L3PJ3F+FR10 + + WL 4,L3GU4B+FR8 + WL 4,L3GU4B+FR9 + WL 4,L3GU4B+FR10 + + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* BUTT-KICKIN' TWO-FISTED OVERHEAD PUNCH TURNBUCKLE LEAP ATTACK SEQUENCE + +#yoff equ 25 + + SUBR lex_buckle_leap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOCOLLIS|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + + WL 3,L3PJ3F+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 31,190,190,190,90000h,TGT_GROIN,25,11+#yoff,50 + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + .word ANI_STARTATTACK,AT_BSTOMP,31 + +;Check x vel to make sure we aren't going to land on ropes! + WL ANI_CODE,check_xvel + + .word ANI_OFFSET,0,#yoff,0 + WL 3,L3PJ3F+FR3 + WL 3,L3PJ3F+FR4 + WL 3,L3PJ3F+FR5 + + ;attack box dimensions (that means size) depends on opp mode + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-2,12,-10,31,76,70 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,3,70,-10,39,27,70 + +#opp_onground + WL 1,L3PJ3F+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + + WL 2,L3PJ3F+FR7 + WL 4,L3PJ3F+FR9 + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_IFSTATUS,#hit + + ;missed + WL ANI_CODE,CALL_MISSES + .word ANI_BOUNCE,5 + +#hit + WL 7,L3PJ3F+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,L3PJ3F+FR10 + + WL 4,L3GU4B+FR8 + WL 4,L3GU4B+FR9 + WL 4,L3GU4B+FR10 + + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 KNEE + + SUBR lex_2_knee_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,L2NM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 3,L2NM3A+FR2 + WL 3,L2NM3A+FR3 + WL 3,L2NM3A+FR4 + WL 3,L2NM3A+FR5 + WL 3,L2NM3A+FR6 + WL 3,L2NM3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KNEE + + SUBR lex_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,L4NM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 3,L4NM3B+FR2 + WL 3,L4NM3B+FR3 + WL 3,L4NM3B+FR4 + WL 3,L4NM3B+FR5 + WL 3,L4NM3B+FR6 + WL 3,L4NM3B+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR lex_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_PUPPET,14 + WL 3,L1TT5A+FR4 + WL 3,L1TT5A+FR5 + WL ANI_GOTO,#cont + + SUBR lex_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + .word ANI_STARTATTACK,AT_PUPPET,8 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + WL 4,L4GF3B+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET,33,56,54,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,L4GF3B+FR2 +; WL 4,L4GF3B+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,L4GF3B+FR3 +; WL 4,L4GF3B+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;got him + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,L4GF3B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,6,L4GF3B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,L4GF3B+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,L4GF3B+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,L4GF3B+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,L4GF3B+FR8,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 16,L4GF3B+FR8 + .word ANI_OFFSET,-3,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missedb + WL 25,L4GF3B+FR3 +#missed + WL ANI_CODE,CALL_MISSES + + + WL 8,L4GF3B+FR3 + WL 4,L4GF3B+FR2 + WL 4,L4GF3B+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H4YR3A,H3RN3A + .ref R4YR3A,R3RN3D + .ref U4YR3B,U3RN3A + .ref Y4YR3A,Y3RN3C + .ref S4YR3A,S3RN3A + .ref B4YR3A,B3RN3A + .ref L4YR3B,L3RN3B + .ref D4YR3B,D3RN3B + +#Bret + LWWW H4YR3A+FR1,56,8,1 + LWWW H4YR3A+FR2,48,9,1 + LWWW H4YR3A+FR3,40,4,1 + LWWW H4YR3A+FR5,19,4,1 + LWWW H3RN3A+FR1,-4,-5,0 + LWWW H3RN3A+FR2,-21,-5,0 +#Razor + LWWW R4YR3A+FR1,36,20,0 + LWWW R4YR3A+FR2,22,22,0 + LWWW R4YR3A+FR3,2,6,0 + LWWW R4YR3A+FR4,-15,4,0 + LWWW R3RN3D+FR10,-15,4,0 + LWWW R3RN3D+FR11,-21,7,0 +#Taker + LWWW U4YR3B+FR2,42,19,0 + LWWW U4YR3B+FR3,43,16,0 + LWWW U4YR3B+FR4,22,17,0 + LWWW U4YR3B+FR5,5,13,0 + LWWW U3RN3A+FR2,-14,5,0 + LWWW U3RN3A+FR2,-36,4,0 +#Yokozuna + LWWW Y4YR3A+FR1,56,15,1 + LWWW Y4YR3A+FR4,30,17,1 + LWWW Y4YR3A+FR5,16,11,1 + LWWW Y4YR3A+FR7,-26,-4,1 + LWWW Y3RN3C+FR7,8,4,0 + LWWW Y3RN3C+FR8,7,2,0 +#Shawn + LWWW S4YR3A+FR2,50,5,1 + LWWW S4YR3A+FR3,61,-4,1 + LWWW S4YR3A+FR5,15,3,1 + LWWW S4YR3A+FR6,-12,-1,1 + LWWW S3RN3A+FR1,-3,-5,0 + LWWW S3RN3A+FR2,-32,-6,0 +#BamBam + LWWW B4YR3A+FR3,33,13,0 + LWWW B4YR3A+FR4,43,8,0 + LWWW B4YR3A+FR5,41,4,0 + LWWW B4YR3A+FR7,-6,-2,0 + LWWW B3RN3A+FR1,10,5,0 + LWWW B3RN3A+FR2,-8,6,0 +#Doink + LWWW D4YR3B+FR1,69,16,1 + LWWW D4YR3B+FR2,58,20,1 + LWWW D4YR3B+FR3,39,14,1 + LWWW D4YR3B+FR4,16,12,1 + LWWW D3RN3B+FR3,5,9,0 + LWWW D3RN3B+FR4,-16,8,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,63,16,1 + LWWW L4YR3B+FR2,43,9,1 + LWWW L4YR3B+FR3,18,7,1 + LWWW L4YR3B+FR4,-25,0,1 + LWWW L3RN3B+FR2,-8,7,0 + LWWW L3RN3B+FR3,-14,1,0 + + +#strt_run_tbl + .ref start_run_flung + + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR lex_2_head_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,L2AH2A+FR3 + WL 3,L2AH2A+FR4 + WL 3,L2AH2A+FR5 + WL 3,L2AH2A+FR6 + WL 3,L2AH2A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;From spin kick + SUBR lex_2_head_hit3_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + WL 3,L2AH2A+FR3 + .word ANI_DEBRIS,300,2,-23,102,0 ;%chance, tbl index, x,y,z off + WL 4,L2AH2A+FR4 + WL 4,L2AH2A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,L2AH2A+FR6 + WL 4,L2AH2A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT + + SUBR lex_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,L4AH4A+FR1 + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,L4AH4A+FR2 + WL 3,L4AH4A+FR3 + WL 3,L4AH4A+FR4 + WL 3,L4AH4A+FR5 + WL 3,L4AH4A+FR6 + WL 3,L4AH4A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;From spin kick + SUBR lex_4_head_hit3_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,L4AH4A+FR1 + WL 3,L4AH4A+FR2 + WL 3,L4AH4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,L4AH4A+FR4 + WL 3,L4AH4A+FR5 + WL 3,L4AH4A+FR6 + WL 3,L4AH4A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_head_hit4_anim +;From earslap + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + + WL 4,L4AH4A+FR3 + WL 4,L4AH4A+FR4 + WL 4,L4AH4A+FR5 + WL 4,L4AH4A+FR6 + WL 4,L4AH4A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR lex_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,L2AH2A+FR3 + WL 15,L2AH2A+FR4 + WL 4,L2AH2A+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR lex_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,L4AH4A+FR1 + WL 3,L4AH4A+FR2 + WL 14,L4AH4A+FR3 + WL 2,L4AH4A+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR lex_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,L4AH4A+FR1 + WL 3,L4AH4A+FR2 + WL 14,L4AH4A+FR3 + WL 2,L4AH4A+FR4 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,lex_dizzy_anim + .word ANI_END + + + +#***************************************************************************** +* +* #2 HEAD HIT2 (HANDS ON FACE) + + SUBR lex_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_FRICTION,3000h + + WL 3,L2AE2A+FR1 + WL 3,L2AE2A+FR2 + WL 3,L2AE2A+FR3 + WL 3,L2AE2A+FR4 + WL 3,L2AE2A+FR5 + WL 3,L2AE2A+FR6 + WL 3,L2AE2A+FR7 + WL 3,L2AE2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT2 (HANDS ON FACE) + + SUBR lex_4_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_FRICTION,3000h + + WL 4,L4AE4A+FR1 + WL 4,L4AE4A+FR2 + WL 4,L4AE4A+FR3 + WL 4,L4AE4A+FR4 + WL 4,L4AE4A+FR5 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* HEAD HIT2 (ENDS IN DIZZY) + + SUBR lex_head_hit_dizzy_anim + + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WL ANI_SET_YVEL,20000h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,L4AE4A+FR1 + WL 4,L4AE4A+FR2 + WL 4,L4AE4A+FR3 + WL 4,L4AE4A+FR4 + WL 4,L4AE4A+FR5 + + .word ANI_FACEDOWN + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,lex_dizzy_anim + + .word ANI_END + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR lex_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + WL 3,L2AM2B+FR2 + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL 3,L2AM2B+FR3 + WL 3,L2AM2B+FR4 + WL 3,L2AM2B+FR5 + WL 3,L2AM2B+FR6 + WL 3,L2AM2B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,L2AM2B+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,4000h,AM_ABS + + WL 3,L2AM2B+FR2 + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL 3,L2AM2B+FR3 + WL 3,L2AM2B+FR4 + WL 3,L2AM2B+FR5 + WL 3,L2AM2B+FR6 + WL 3,L2AM2B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,L2AM2B+FR8 + + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 BODY HIT + + SUBR lex_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + WL 3,L4AM4B+FR2 + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL 3,L4AM4B+FR3 + WL 3,L4AM4B+FR4 + WL 3,L4AM4B+FR5 + WL 3,L4AM4B+FR6 + WL 3,L4AM4B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,L4AM4B+FR8 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,L4AM4B+FR2 + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL 3,L4AM4B+FR3 + WL 3,L4AM4B+FR4 + WL 3,L4AM4B+FR5 + WL 3,L4AM4B+FR6 + WL 3,L4AM4B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,L4AM4B+FR8 + + .word ANI_FACEDOWN + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,lex_dizzy_anim + .word ANI_END + + SUBR lex_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-4000h,AM_ABS + + WL 3,L4AM4B+FR2 + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL 3,L4AM4B+FR3 + WL 3,L4AM4B+FR4 + WL 3,L4AM4B+FR5 + WL 3,L4AM4B+FR6 + WL 3,L4AM4B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,L4AM4B+FR8 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,L4AM4B+FR2 + WL 3,L4AM4B+FR3 + WL 3,L4AM4B+FR4 + WL 3,L4AM4B+FR5 + WL 3,L4AM4B+FR6 + WL 3,L4AM4B+FR7 + WL 3,L4AM4B+FR8 + .word ANI_WAITHITGND + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,lex_fall_back_anim + .word ANI_END + +#nodead + + .ref lex_3_head_held_anim + WL ANI_CHANGEANIM,lex_3_head_held_anim + .word ANI_END + + SUBR lex_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-4000h,AM_ABS + + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,L4AM4B+FR2 + WL 4,L4AM4B+FR3 + WL 4,L4AM4B+FR4 + WL 4,L4AM4B+FR5 + WL 4,L4AM4B+FR6 + WL 4,L4AM4B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,L4AM4B+FR8 + + .word ANI_FACEDOWN + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,lex_dizzy_anim + .word ANI_END + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR lex_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL 1,L3CP3X+FR2 + WL ANI_SET_YVEL,39000h + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 2,L3CP3X+FR2 + WL 3,L3CP3X+FR3 + WL 3,L3CP3X+FR4 + WL 3,L3CP3X+FR5 + WL 3,L3CP3X+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_ZEROVELS + WL 3,L3CP3X+FR7 + WL 3,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +;MJT Start +#***************************************************************************** +* +* FALL BACK + + SUBR lex_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,70000h + + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[102,13] ;Y,X of head + WL 4,L3UC3A+FR1 + WWL ANI_SETLONG,DEBRIS_X,[107,-2] ;Y,X of head + WL 4,L3UC3A+FR2 + +;Need more frames here to make smoother! + + .word ANI_OFFSET,0,47,0 ;x,y,z + + WWL ANI_SETLONG,DEBRIS_X,[39,-50] ;Y,X of head + WL 4,L3UC3A+FR3 + WWL ANI_SETLONG,DEBRIS_X,[28,-54] ;Y,X of head + WL 4,L3UC3A+FR4 + WWL ANI_SETLONG,DEBRIS_X,[13,-59] ;Y,X of head + WL 4,L3UC3A+FR5 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + .word ANI_XFLIP + WL 2,L3CP3X+FR2 + .word ANI_BOUNCE,5 + + WL ANI_CHANGEANIM,lex_hitonground_anim + +#***************************************************************************** +* +* FALL BACK + +;FIX!! Add roll over onto neck! + SUBR lex_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,10000h + + WL ANI_CODE,ckzpos + +; WL 4,L3UC3A+FR1 + WL 4,L3UC3A+FR2 + +;Need more frames here to make smoother! + + .word ANI_OFFSET,0,47,0 ;x,y,z + + WL 4,L3UC3A+FR3 + WL 4,L3UC3A+FR4 + WL 4,L3UC3A+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + + .word ANI_FRICTION,3000h + + .word ANI_XFLIP + WL 2,L3CP3X+FR2 + .word ANI_BOUNCE,5 + + WL ANI_CHANGEANIM,lex_hitonground_anim + + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR lex_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + + WL 4,L3UC3A+FR1 + WL 4,L3UC3A+FR2 + + .word ANI_OFFSET,0,47,0 ;x,y,z + + WL 4,L3UC3A+FR3 + WL 4,L3UC3A+FR4 + WL 4,L3UC3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + +; .word ANI_FRICTION,3000h + + .word ANI_XFLIP + WL 2,L3CP3X+FR2 +; .word ANI_BOUNCE,5 + + WL ANI_CHANGEANIM,lex_hitonground_anim + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR lex_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WL 8,L3FH3A+FR4 + WL 8,L3FH3A+FR5 + WL 1,L3FH3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SOUND,0C2h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + + .word ANI_DAMAGE,D_HIPTOSS + .word ANI_SETWORD,DELAY_METER,0 + .word ANI_GETUP,500 + + WL 3,L3UC3X+FR6 + WL 3,L3UC3X+FR7 + WL 3,L3UC3X+FR8 + WL 3,L3UC3X+FR9 + WL 3,L3UC3X+FR10 + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#***************************************************************************** +* + + SUBR lex_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; WL 4,L3GU4A+FR1 +; WL 4,L3GU4A+FR2 + .ref choose_2or4 + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +;#getup_in_2 + WL 4,L3GU2A+FR1 + WL 4,L3GU2A+FR2 + WL 4,L3GU2A+FR3 + WL 4,L3GU2A+FR4 + WL 4,L3GU2A+FR5 + WL 4,L3GU2A+FR6 + WL 4,L3GU2A+FR7 + WL 4,L3GU2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 4,L3GU2A+FR9 + WL 4,L3GU2A+FR10 + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 4,L3GU4A+FR1 + WL 4,L3GU4A+FR2 + WL 4,L3GU4A+FR3 + WL 4,L3GU4A+FR4 + WL 4,L3GU4A+FR5 + WL 4,L3GU4A+FR6 + WL 4,L3GU4A+FR7 + WL 4,L3GU4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 4,L3GU4A+FR9 + WL 4,L3GU4A+FR10 + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* DIZZY + + SUBR lex_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + + WL 8,L4TI4B+FR5 + WL 8,L4TI4B+FR6 + WL 8,L4TI4B+FR7 + WL 8,L4TI4B+FR8 + WL 8,L4TI4B+FR9 + WL 8,L4TI4B+FR8 + WL 8,L4TI4B+FR7 + WL 8,L4TI4B+FR6 + + WL ANI_GOTO,#loop + +#***************************************************************************** + + SUBR lex_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*10/255 ;inv multiply (0-255 -> 0-11) + + .long L3RL1A+FR11 ;0 + .long L3RL1A+FR10 ;1 + .long L3RL1A+FR9 ;2 + .long L3RL1A+FR8 ;3 + .long L3RL1A+FR7 ;4 + .long L3RL1A+FR6 ;5 + .long L3RL1A+FR5 ;6 + .long L3RL1A+FR4 ;7 + .long L3RL1A+FR3 ;8 + .long L3RL1A+FR2 ;9 + .long L3RL1A+FR1 ;10 + .long 0,0,0,0,0,0 + + + .ref HIT_THE_MAT,SMALL_BOUNCE + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR lex_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,300 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h +; .word ANI_OFFSET,0,0,0 ;x,y,z + WL 3,L3CP3X+FR2 + WL 3,L3CP3X+FR3 + WL 3,L3CP3X+FR4 + WL 3,L3CP3X+FR5 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 3,L3CP3X+FR6 + WL 3,L3CP3X+FR7 + WL 3,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR lex_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,L3FH3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,300 + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,L3FH3A+FR6 + .word ANI_XFLIP + .word ANI_OFFSET,20,0,0 ;x,y,z + WL 3,L3CP3X+FR1 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 3,L3CP3X+FR2 + WL 3,L3CP3X+FR3 + WL 3,L3CP3X+FR4 + WL 3,L3CP3X+FR5 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 4,L3CP3X+FR6 + WL 4,L3CP3X+FR7 + WL 4,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + .word ANI_END + + +#***************************************************************************** + SUBR lex_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_OFFSET,16,0,0 + WL 4,L4CR3B+FR1 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,4,0,0 ;***** + WL 4,L4CR3B+FR2 + .word ANI_OFFSET,4,0,0 ;***** + WL 4,L4CR3B+FR3 + .word ANI_OFFSET,4,0,0 ;***** + WL 4,L4CR3B+FR4 + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + .word ANI_OFFSET,5,0,0 ;***** + WL 4,L4CR3B+FR5 + + .word ANI_OFFSET,4,0,0 ;***** + WL 4,L4CR3B+FR6 + .word ANI_BENDROPE,2 + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + .word ANI_OFFSET,6,0,0 ;***** + WL 4,L4CR3B+FR7 + .word ANI_OFFSET,4,0,0 ;***** + WL 4,L4CR3B+FR8 + .word ANI_OFFSET,9,0,0 ;***** + WL 4,L4CR3B+FR9 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,7,0,0 ;***** + WL 4,L4CR3B+FR10 + .word ANI_OFFSET,8,-3,0 + WL 4,L4CR3B+FR11 + + ;now jump off... + WL 4,L4JD4A+FR1 ;D4FM4A+FR1 + WL 4,L4JD4A+FR2 + + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,L4JD4A+FR3 + .word ANI_WAITHITGND + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 3,L4JD4A+FR4 + WL 3,L4JD4A+FR6 + WL 3,L4JD4A+FR7 + WL 6,L4JD4A+FR8 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR lex_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in + WL 4,L4JD4A+FR1 + WL 4,L4JD4A+FR2 + + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,1ch,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 4,L4JD4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + WL 4,L4JD4A+FR4 + WL 4,L4JD4A+FR6 + WL 3,L4JD4A+FR7 + WL 3,L4JD4A+FR8 + WL ANI_CODE,#set_z + + .word ANI_OFFSET,10,0,0 ;***** + ;climb through + WL 3,L4CR3B+FR1 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,4,0,0 ;***** + WL 3,L4CR3B+FR2 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,4,0,0 ;***** + WL 3,L4CR3B+FR3 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_OFFSET,4,0,0 ;***** + WL 3,L4CR3B+FR4 + + .word ANI_OFFSET,6,0,0 ;***** + WL 3,L4CR3B+FR5 + + .word ANI_OFFSET,6,0,0 ;***** + WL 3,L4CR3B+FR6 + .word ANI_OFFSET,6,0,0 ;***** + WL 3,L4CR3B+FR7 + .word ANI_OFFSET,6,0,0 ;***** + WL 3,L4CR3B+FR8 + .word ANI_BENDROPE,3 + .word ANI_OFFSET,6,0,0 ;***** + WL 3,L4CR3B+FR9 + .word ANI_OFFSET,5,0,0 ;***** + WL 3,L4CR3B+FR10 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,5,-3,0 + WL 3,L4CR3B+FR11 + + WL ANI_CODE,clr_climb + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets +#set_z + +clr_climb + + clr a0 + move a0,*a13(CLIMBING_THRU) ;1=Climbing thru ropes flag + rets + + SUBR lex_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL ANI_IFSTATUS,#dir4 + +;Facing #2, spin first! + WL 3,L1TT5A+FR2 + WL 3,L1TT5A+FR4 +#dir4 + WL 3,L3GU4A+FR10 + WL 3,L3GU4A+FR9 + WL 3,L3GU4A+FR8 + WL 3,L3GU4A+FR7 + WL 3,L3GU4A+FR6 + WL 3,L3GU4A+FR5 + WL 3,L3GU4A+FR4 + WL 3,L3GU4A+FR2 + WL 3,L3GU4A+FR1 + + ;roll over once + WLW ANI_SET_ZVEL,90000h,AM_ABS + + WL 3,L3RL1A+FR11 + WL 3,L3RL1A+FR10 + WL 3,L3RL1A+FR9 + WL 3,L3RL1A+FR8 + WL 3,L3RL1A+FR7 + WL 3,L3RL1A+FR6 + WL 3,L3RL1A+FR5 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + + ;climb through + + WL ANI_CODE,NOT_IN_RING + .word ANI_OFFSET,0,-37h,0 ;x,y,z + WL 3,L2PJ3C+FR5 + WL 3,L2PJ3C+FR3 + WL 3,L2PJ3C+FR2 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) +#faceup + rets + +NOT_IN_RING + MOVK 1,A0 + MOVE A0,*A13(INRING) + RETS + +#***************************************************************************** + + SUBR lex_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + WL 3,L2PJ3C+FR2 + WL 3,L2PJ3C+FR3 + WL 3,L2PJ3C+FR5 + .word ANI_OFFSET,0,37h,-60 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,L3RL1A+FR6 + WL 3,L3RL1A+FR7 + WL 3,L3RL1A+FR8 + WL 3,L3RL1A+FR9 + WL 3,L3RL1A+FR10 + WL 3,L3RL1A+FR11 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,L3GU4A+FR1 + WL 3,L3GU4A+FR2 + WL 3,L3GU4A+FR3 + WL 3,L3GU4A+FR4 + WL 3,L3GU4A+FR5 + WL 3,L3GU4A+FR6 + WL 3,L3GU4A+FR7 + WL 3,L3GU4A+FR8 + WL 3,L3GU4A+FR9 + WL 3,L3GU4A+FR10 + + WL ANI_CODE,clr_climb + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR lex_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,L1TT5A+FR2 + WL 3,L1TT5A+FR4 + +#dir4 + WL 3,L3GU4A+FR10 + WL 3,L3GU4A+FR9 + WL 3,L3GU4A+FR8 + WL 3,L3GU4A+FR7 + WL 3,L3GU4A+FR6 + WL 3,L3GU4A+FR5 + WL 3,L3GU4A+FR4 + WL 3,L3GU4A+FR3 + WL 3,L3GU4A+FR2 + WL 3,L3GU4A+FR1 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,L3RL1A+FR11 +#cont + WL 3,L3RL1A+FR1 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + WL 3,L3RL1A+FR2 + WL 3,L3RL1A+FR3 + WL 3,L3RL1A+FR4 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,L3DC3B+FR3 + WL 3,L3DC3B+FR2 + WL 3,L3DC3B+FR1 + + .word ANI_ZERO_XZVELS + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR lex_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,L3DC3B+FR1 + WL 3,L3DC3B+FR2 + WL 3,L3DC3B+FR3 + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,L3RL1A+FR3 + WL 3,L3RL1A+FR2 + WL 3,L3RL1A+FR1 + WL 3,L3RL1A+FR11 + + .word ANI_ZEROVELS + + ;get up + WL 3,L3GU4A+FR1 + WL 3,L3GU4A+FR2 + WL 3,L3GU4A+FR3 + WL 3,L3GU4A+FR4 + WL 3,L3GU4A+FR5 + WL 3,L3GU4A+FR6 + WL 3,L3GU4A+FR7 + WL 3,L3GU4A+FR8 + WL 3,L3GU4A+FR9 + WL 3,L3GU4A+FR10 + + WL ANI_CODE,clr_climb + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel2 + movi 52000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** +* + + SUBR lex_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + + WL 2,L3GU4A+FR10 + WL 2,L3GU4A+FR7 + WL 2,L3GU4A+FR5 + WL ANI_SET_YVEL,39000h + + WL 3,L3CP3X+FR2 + WL 3,L3CP3X+FR3 + WL 3,L3CP3X+FR4 + WL 3,L3CP3X+FR5 + WL 3,L3CP3X+FR6 + WL 3,L3CP3X+FR7 + WL 3,L3CP3X+FR1 + +;MJT Start + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead +;MJT End + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +;MJT Start 2 +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR lex_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 2,L1TT5A+FR4 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR6 + WL ANI_GOTO,#cont + + SUBR lex_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,999,80h,50h,90000h,TGT_CHEST,0,57,-15 + + WL 3,L3PN5B+FR2 + .word ANI_OFFSET,0,20,0 ;x,y,z + WL 19,L3PN5B+FR5 + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + + WL 3,L3PN5B+FR9 + WL 3,L3PN5B+FR8 + + WL ANI_CODE,DO_CROWD_CHEER + + .word ANI_ATTACK_OFF + WL ANI_CODE,HIT_THE_MAT + .word ANI_BOUNCE,2 +; WLW ANI_ATTCHIMAGE,D4PN5L+FR5,10 ;image, zoff (priority) + WL 3,L3PN5B+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + .word ANI_OFFSET,0,0,20 ;x,y,z + + WL 3,L3PN5B+FR9 + .ref win_announce + WL ANI_CODE,win_announce +; WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + WL 40,L3PN5B+FR10 + +;MJT Start + .word ANI_LOOP +;MJT End + +;Do another ground hit on opponent + .ref grnd_hit + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 4,L3PN5D+FR1 + WL 4,L3PN5D+FR2 + WL 4,L3PN5D+FR3 + WL 4,L3PN5D+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,L3PN5D+FR5 + WL 4,L3PN5D+FR6 + + WL 5,L4FX5B+FR1 + WL 5,L4FX5B+FR2 + WL 5,L4FX5B+FR3 + WL 5,L4FX5B+FR4 + WL 5,L4FX5B+FR5 + WL 5,L4FX5B+FR6 + WL 5,L4FX5B+FR7 + WL 5,L4FX5B+FR8 + WL 5,L4FX5B+FR9 + WL 5,L4FX5B+FR10 + WL 5,L4FX5B+FR11 + + WL 5,L4FX5B+FR10 + WL 5,L4FX5B+FR9 + WL 5,L4FX5B+FR8 + + + WL 5,L4FX5B+FR7 + WL 5,L4FX5B+FR6 + WL 5,L4FX5B+FR5 + WL 5,L4FX5B+FR4 + WL 5,L4FX5B+FR5 + WL 5,L4FX5B+FR6 + WL 5,L4FX5B+FR7 + WL 5,L4FX5B+FR8 + WL 5,L4FX5B+FR9 + WL 5,L4FX5B+FR10 + WL 5,L4FX5B+FR11 + +;MJT Start +#lp WL 4,L4FX5B+FR10 + WL 4,L4FX5B+FR9 + WL 4,L4FX5B+FR8 + WL 4,L4FX5B+FR9 + WL 4,L4FX5B+FR10 + WL 4,L4FX5B+FR11 + WL ANI_GOTO,#lp + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +;MJT End 2 + .end + + \ No newline at end of file diff --git a/BACKUP/LEXSEQ3.ASM b/BACKUP/LEXSEQ3.ASM new file mode 100644 index 0000000..1db7ade --- /dev/null +++ b/BACKUP/LEXSEQ3.ASM @@ -0,0 +1,2580 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 7/15/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lexseq3.asm" + .title "Lex Luger animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" + + .include "display.equ" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref tgt_tbukl + .ref set_position + .ref set_skeleton_pal + .ref am_I_dizzy + .ref start_smoke + .ref ckzpos + .ref set_my_pal + .ref make_white + .ref CALL_SETUP + .ref HIT_THE_MAT + .ref SMALL_BOUNCE + .ref tbukl_flip + .ref make_norm + .ref CALL_MISSES + .REF CALL_SETUP + + .REF DO_SNAP_MESS + .REF CALL_SPECIAL_MOVE + .ref slaveanim_tbl + + .ref lex_stand4_anim + .ref lex_dizzy_anim + .ref lex_faceup_getup_anim + + .ref hrt_breakneck2_anim + .ref rzr_breakneck2_anim + .ref und_breakneck2_anim + .ref yok_breakneck2_anim + .ref shn_breakneck2_anim + .ref bam_breakneck2_anim + .ref dnk_breakneck2_anim + .ref lex_breakneck2_anim + + .ref hrt_tossed_anim + .ref rzr_tossed_anim + .ref und_tossed_anim + .ref yok_tossed_anim + .ref shn_tossed_anim + .ref bam_tossed_anim + .ref dnk_tossed_anim + .ref lex_tossed_anim + + .ref hrt_3_head_held_anim + .ref rzr_3_head_held_anim + .ref und_3_head_held_anim + .ref yok_3_head_held_anim + .ref shn_3_head_held_anim + .ref bam_3_head_held_anim + .ref dnk_3_head_held_anim + + .ref hrt_slambounce_anim + .ref rzr_slambounce_anim + .ref und_slambounce_anim + .ref yok_slambounce_anim + .ref shn_slambounce_anim + .ref bam_slambounce_anim + .ref dnk_slambounce_anim + .ref lex_slambounce_anim + +;RJR START + .ref hrt_break_neck2_anim + .ref rzr_break_neck2_anim + .ref und_break_neck2_anim + .ref yok_break_neck2_anim + .ref shn_break_neck2_anim + .ref bam_break_neck2_anim + .ref dnk_break_neck2_anim +;RJR END + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GRAB OPPONENT AND HOLD OVERHEAD + + + SUBR lex_4_graboh_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +; .word ANI_STARTATTACK,AT_GRABHOLD,16 + WL 4,U4PO4C+FR1 + WL 4,U4PO4C+FR2 + WL 4,U4PO4C+FR3 + WL 4,U4PO4C+FR4 + + .word ANI_ATTACK_ON, AMODE_GRABHOLD,43,27,32,64 ;mode,x,y,w,h + .word ANI_ATTACHZ,73,60,4 + WL 4,U4PO4C+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim +;missed + WL ANI_CODE,CALL_MISSES + WL 6,U4PO4C+FR5 + WL 4,U4PO4C+FR4 + WL 4,U4PO4C+FR3 + WL 4,U4PO4C+FR2 + WL 4,U4PO4C+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gothim + + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACH,71,73 + WL 4,U4PO4C+FR6 + .word ANI_ATTACH,62,101 + WL 4,U4PO4C+FR7 + .word ANI_ATTACH,39,121 + WL 4,U4PO4C+FR8 + .word ANI_ATTACH,12,131 + WL 4,U4PO4C+FR9 + .word ANI_ATTACH,-2,133 + WL 4,U4PO4C+FR10 + +; .if 0 +; +; .word ANI_ATTACH,59,64 +; WL 3,D3PO4B+FR7 +; .word ANI_ATTACH,35,96 +; WL 3,D3PO4B+FR8 +; .word ANI_ATTACH,15,116 +; WL 3,D3PO4B+FR9 +; .word ANI_ATTACH,9,124 +; WL 3,D3PO4B+FR10 +; .endif + + .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD + .word ANI_SETMODE,+MODE_NOAUTOFLIP + .word ANI_END + + SUBR lex_stndholdoh_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 999,U4PO4C+FR10 + .word ANI_REPEAT + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR lex_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count +#loop + WL 4,L3MF3B+FR1 + WL 4,L3MF3B+FR2 + WL 4,L3MF3B+FR3 + WL 4,L3MF3B+FR4 + WL 4,L3MF3B+FR5 + WL 4,L3MF3B+FR6 + WL 4,L3MF3B+FR7 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + + WL 5,L3MF3B+FR6 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,L3MS3Z+FR5 + WL 4,L3MS3Z+FR3 + WL 4,L3MS3Z+FR2 + WL 4,L3MS3Z+FR1 + .word ANI_WAITHITGND + WL 2,L2ST2C+FR7 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** + + SUBR lex_summon_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,U4SW4A+FR1 + WL 4,U4SW4A+FR2 + WL 4,U4SW4A+FR3 + WL 4,U4SW4A+FR4 + WL 4,U4SW4A+FR5 + WL 20,U4SW4A+FR6 + WL 4,U4SW4A+FR5 + WL 4,U4SW4A+FR4 + WL 4,U4SW4A+FR3 + WL 4,U4SW4A+FR2 + WL 4,U4SW4A+FR1 + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR lex_summon2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* FLIP + + SUBR lex_flip_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_STARTATTACK,AT_PUPPET,12 + WL 6,L4SH3A+FR1 + WL 6,L4SH3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET,33,96,43,18 ;mode,x,y,w,h + WL 6,L4SH3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gotim + +;missed + WL ANI_CODE,CALL_MISSES + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + WL 6,L4SH3A+FR3 + WL 6,L4SH3A+FR2 + WL 6,L4SH3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#gotim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,-4 + + WLW ANI_SUPERSLAVE,#puppet_tbl,0 + WL 6,L4SH3A+FR3 + WLW ANI_SUPERSLAVE,#puppet_tbl,1 + WL 6,L4SH3A+FR4 + WLW ANI_SUPERSLAVE,#puppet_tbl,2 + WL 6,L3FL3A+FR1 + WLW ANI_SUPERSLAVE,#puppet_tbl,3 + WL 6,L3FL3A+FR2 + WLW ANI_SUPERSLAVE,#puppet_tbl,4 + WL 6,L3FL3A+FR3 + WLW ANI_SUPERSLAVE,#puppet_tbl,5 + WL 6,L3FL3A+FR4 + WLW ANI_SUPERSLAVE,#puppet_tbl,6 + + WL 1,L3FL3A+FR6 + + WL ANI_SLAVEANIM,#slaveanim_tbl + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WL 5,L3FL3A+FR6 + + WL 6,L3FL3A+FR7 + WL 6,L3FL3A+FR8 + WL 6,L3FL3A+FR9 + + .word ANI_DETACH + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#slaveanim_tbl + .long 0 ;Bret + .long 0 ;Razor + .long 0 ;Taker + .long 0 ;Yokozuna + .long 0 ;Shawn + .long 0 ;BamBam + .long 0 ;Doink + .long 0 ;Adam + .long lex_flipped_anim ;Lex + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + .long 0 +#Razor + + + + LWWW R3BF3A+FR5,69,3,1 + LWWW R3BF3A+FR5,69,3,1 + + + + LWWW R3BF3A+FR5,69,3,1 + LWWW R3BF3A+FR5,69,3,1 + + LWWW R3TD3A+FR4,88,5,1 + LWWW R3TD3A+FR6,47,32,1 + LWWW R3TD3A+FR8,-35,44,1 +#Taker + LWWW U4BF3A+FR2,96,-7,1 + LWWW U4BF3A+FR3,96,1,1 + LWWW U4BF3A+FR4,73,5,1 + LWWW U4BF3A+FR4,73,5,1 + LWWW U3FH3A+FR1,71,14,1 + LWWW U3FH3A+FR2,61,26,1 + LWWW U3FH3A+FR4,-15,52,1 +#Yokozuna + .long 0 +#Shawn + .long 0 +#BamBam + LWWW B4BF3A+FR1,96,-1,1 + LWWW B4BF3A+FR3,96,-1,1 + LWWW B3BF3C+FR5,76,-8,1 + LWWW B3SV3B+FR5,76,-24,1 + LWWW B3SV3B+FR6,35,17,1 + LWWW B3SV3B+FR7,10,29,1 + LWWW B3SV3B+FR8,-70,12,1 +#Doink +; LWWW D3BF3Z+FR1,78,6,1 +; LWWW D3BF3Z+FR2,76,6,1 +; LWWW D3BF3Z+FR3,57,7,1 +; LWWW D3BF3Z+FR3,57,7,1 + LWWW D3FH3A+FR2,71,14,1 + LWWW D3FH3A+FR3,50,40,1 + LWWW D3FH3A+FR6,-19,51,1 +#Adam + .long 0 +#Lex + LWWW L3BF3A+FR1,87,0,1 + LWWW L3BF3A+FR2,80,0,1 + LWWW L3BF3A+FR3,73,0,1 + LWWW L3FH3A+FR3,91,5,1 + LWWW L3FH3A+FR4,63,35,1 + LWWW L3FH3A+FR5,51,52,1 + LWWW L3FH3A+FR6,-36,57,1 + +#***************************************************************************** +* +* END OF FLIPPED SEQ. + + SUBR lex_flipped_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,060000h,AM_FACE_REL + WL ANI_SET_YVEL,060000h + WL 1,L3FH3A+FR6 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_DETACH + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR lex_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 4,L4HU4A+FR5 + WL 4,L4HU4A+FR6 + WL 4,L4HU4A+FR7 + WL ANI_CODE,tgt_tbukl + .word ANI_LEAPATPOS,24,200,8,8,0 ;#ticks,dist,xoff,yoff,zoff + WL 15,L4HU4A+FR8 + WL 9,L4HU4A+FR9 + + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_SHAKECORNER + + WL 4,L4HU4A+FR7 + +#repeat + WL 6,L4SB4A+FR1 + WL ANI_CODE,tbukl_flip + WL 6,L4SB4A+FR2 + WL ANI_CODE,tbukl_flip + WL 6,L4SB4A+FR3 + WL ANI_CODE,tbukl_flip + WL 6,L4SB4A+FR4 + WL ANI_CODE,tbukl_flip + WL 6,L4SB4A+FR5 + WL ANI_CODE,tbukl_flip + WL 6,L4SB4A+FR6 + WL ANI_CODE,tbukl_flip + WL 6,L4SB4A+FR7 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR lex_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SHAKECORNER + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL ANI_SET_YVEL,20000h + + WL 1,L4HU4A+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,L4HU4A+FR7 + WL 4,L4HU4A+FR6 + WL 4,L4HU4A+FR5 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR lex_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + +; .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + + +; .word ANI_XFLIP + + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,L4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,L4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,L4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,L4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,L4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,L4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,L4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + +;MJT Start + WL 1,L4ST4A+FR5 + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref lex_fall_back_anim + WL ANI_CHANGEANIM,lex_fall_back_anim + .word ANI_END + +#nodead + +;MJT End + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 3e3eh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#***************************************************************************** + + SUBR lex_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,L3BF3B+FR5 + WL 4,L3BF3B+FR6 + WL 4,L3BF3B+FR1 + WL 4,L3BF3B+FR2 + WL 4,L3BF3B+FR3 + WL 4,L3BF3B+FR4 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR lex_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + .word ANI_XFLIP + WL 4,L3BF3A+FR2 + .word ANI_XFLIP + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 4,L2AH2A+FR3 + WL 4,L2AH2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,L2AH2A+FR5 + WL 4,L2AH2A+FR6 + WL 4,L2AH2A+FR7 +; WL 4,L2AH2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 4,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR lex_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_XFLIP + WL 4,L3BF3A+FR2 + .word ANI_XFLIP + WL 3,L1TT5A+FR5 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK +* + + SUBR lex_break_neck_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back + + ;plenty of room. break yer neck. + .word ANI_OFFSET,9,0,0 + WL 4,L3FD3B+FR3 + .word ANI_OFFSET,8,0,0 + WL 4,L3FD3B+FR4 + .word ANI_OFFSET,8,0,0 + WL 4,L3FD3B+FR5 + .word ANI_OFFSET,-1,0,0 + WL 4,L3FD3B+FR6 + .word ANI_OFFSET,32,0,0 + WL 1,L3RL1A+FR5 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#fall_back + ;sans. too close to the rope. + WL 4,L3FD3B+FR2 + .word ANI_OFFSET,-15,0,0 + WL 4,L3UC3X+FR7 + WL 4,L3UC3X+FR8 + WL 4,L3UC3X+FR9 + .word ANI_OFFSET,-17,0,0 + .word ANI_XFLIP + WL 1,L3RL1A+FR11 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + SUBR lex_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + ;break the neck + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + .word ANI_XFLIP + + .word ANI_OFFSET,-5,0,0 + + WL 4,L3FD3B+FR2 + WL 4,L3FD3B+FR3 + WL 4,L3FD3B+FR4 + WL 4,L3FD3B+FR5 + WL 4,L3FD3B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-25,0,0 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,L3RL1A+FR5 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,lex_faceup_getup_anim + .word ANI_END + + SUBR lex_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,L4POGO+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_XFLIP + + .word ANI_OFFSET,-5,0,0 + + WL 3,L3FH3A+FR6 + WL 3,L3FD3B+FR1 + WL 3,L3FD3B+FR2 + WL 3,L3FD3B+FR3 + WL 3,L3FD3B+FR4 + WL 3,L3FD3B+FR5 + WL 3,L3FD3B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-25,0,0 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,L3RL1A+FR5 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,lex_faceup_getup_anim + .word ANI_END + + SUBR lex_break_neck4_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL 4,L3UC3X+FR6 + WL 4,L3FD3B+FR1 + WL 4,L3FD3B+FR2 + + WL ANI_CHANGEANIM,lex_break_neck_anim + +#****************************************************************************** + + SUBR lex_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;There are too many rotate frames listed here... + WL 2,L1TT5A+FR4 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR6 + + SUBR lex_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_RAWSOUND,2055 ;big cheer #1 +; .word ANI_CHEER,3 + + .word ANI_STARTATTACK,AT_PUPPET,12 + WL 4,L4WS4B+FR1 + + LEAPATOPP 8,999,80,80,30000h,TGT_HEAD,26,6,-2 + WL 4,L4WS4B+FR2 + WL 4,L4WS4B+FR3 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET,24,0,32,20 ;mode,x,y,w,h + WL 4,L4WS4B+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + WL ANI_CODE,CALL_SETUP + + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + .word ANI_DAMAGEOPP,10 + + WWLLW ANI_SUPERSLAVE2,4,L4GH3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,L4GH3B+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,L4GH3B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,L4GH3B+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,L4GH3B+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,L4GH3B+FR6,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 3,L4GH3B+FR6 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL 20,L4WS4B+FR4 + WL 4,L4WS4B+FR3 + WL 4,L4WS4B+FR2 + WL 4,L4WS4B+FR1 + + WL ANI_CODE,CALL_MISSES + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,43,-35,0 + LWWW H3GU4A+FR3,57,-41,0 + LWWW H3DU3A+FR3,59,-42,1 + LWWW H3DU3A+FR4,67,-31,1 + LWWW H3DU3A+FR5,65,-28,1 + LWWW H3BF3A+FR1,43,-36,0 + .long 0 +#Razor + LWWW R3GU4A+FR2,43,-35,1 + LWWW R3GU4A+FR3,49,-38,0 + LWWW R3GU4A+FR5,58,-42,0 + LWWW R3DU3B+FR2,60,-38,1 + LWWW R3DU3B+FR4,58,-26,1 + LWWW R3BF3A+FR4,47,-35,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,45,-27,1 + LWWW U3DU3B+FR5,49,-33,1 + LWWW U3DU3B+FR6,55,-40,1 + LWWW U3DU3B+FR8,53,-31,1 + LWWW U3DU3B+FR10,56,-16,1 + LWWW U4BF3Z+FR5,42,-14,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,45,-23,0 + LWWW Y3GU2A+FR3,55,-23,0 + LWWW Y3GU2A+FR6,39,-42,0 + LWWW Y3GU2A+FR9,66,-36,0 + LWWW Y3GU2A+FR12,57,-23,0 + LWWW Y3BF3A+FR1,40,-24,0 + .long 0 +#Shawn + LWWW S3GU4A+FR1,43,-35,1 + LWWW S3GU4A+FR2,48,-37,0 + LWWW S3GU4A+FR4,60,-40,0 + LWWW S3GU4A+FR5,64,-36,0 + LWWW S3DU3A+FR2,58,-36,1 + LWWW S3BF3A+FR1,32,-34,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,45,-24,0 + LWWW B3GU4A+FR4,51,-34,0 + LWWW B3GU4A+FR6,62,-32,0 + LWWW B3GU4A+FR7,65,-38,0 + LWWW B3DU3A+FR2,62,-26,1 + LWWW B3BF3C+FR5,43,-27,0 + .long 0 +#Doink + LWWW D3DU3A+FR2,39,-29,1 + LWWW D3DU3A+FR3,47,-36,1 + LWWW D3DU3A+FR5,52,-36,1 + LWWW D3DU3A+FR8,59,-38,1 + LWWW D3HT3Z+FR1,60,-24,1 + LWWW D3BF3A+FR2,42,-33,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3DU3A+FR2,49,-34,1 + LWWW L3DU3A+FR4,41,-28,1 + LWWW L3DU3A+FR6,50,-37,1 + LWWW L3DU3A+FR7,57,-29,1 + LWWW L3DU3A+FR9,65,-27,1 + LWWW L3BF3B+FR2,43,-37,0 + .long 0 + +#****************************************************************************** + + SUBR lex_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,L4CO4Z+FR1 + WL 4,L4CO4Z+FR2 + WL 4,L4CO4Z+FR3 + WL 4,L4CO4Z+FR4 + WL 4,L4CO4Z+FR5 + WL 4,L4CO4Z+FR6 + WL 4,L4CO4Z+FR7 + WL 4,L4CO4Z+FR8 + WL 4,L4CO4Z+FR9 + + WL 4,L4CO4Z+FR8 + WL 4,L4CO4Z+FR7 + WL 4,L4CO4Z+FR6 + WL 4,L4CO4Z+FR5 + WL 4,L4CO4Z+FR4 + WL 4,L4CO4Z+FR3 + WL 4,L4CO4Z+FR2 + WL 4,L4CO4Z+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,lex_stand4_anim + .word ANI_END + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR lex_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + + WL 3,L3TF3X+FR1 ;Face down + WL ANI_SET_YVEL,80000h + WL 3,L3TF3X+FR2 ;Face down + WL 3,L3TF3X+FR3 ;Face down + WL 3,L3TF3X+FR4 ;Face down + WL 3,L3TF3X+FR5 ;Face down + .word ANI_WAITHITGND + .word ANI_END + + +* Head slams into mat +;From head slam + + SUBR lex_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + + WL 3,L3TF3X+FR1 ;Face down + WL ANI_SET_YVEL,40000h + WL 3,L3TF3X+FR2 ;Face down + WL 3,L3TF3X+FR3 ;Face down + WL 3,L3TF3X+FR4 ;Face down + WL 3,L3TF3X+FR5 ;Face down + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,L3TF3X+FR2 ;Face down + WL 3,L3TF3X+FR3 ;Face down + WL 3,L3TF3X+FR4 ;Face down + WL 3,L3TF3X+FR5 ;Face down + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,L3TF3X+FR5 ;Face down + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,lex_faceup_getup_anim + .word ANI_END + +;MJT Start +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR lex_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,L3BR3Z+FR1 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 25,L3BR3Z+FR1 + +; WL 4,L3BR3Z+FR2 + WL 4,L3UC3A+FR6 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + .word ANI_XFLIP + + WL 3,L3CP3X+FR2 + WL 3,L3CP3X+FR3 + WL 3,L3CP3X+FR4 + WL 3,L3CP3X+FR5 + WL 3,L3CP3X+FR6 + WL 3,L3CP3X+FR7 + WL 3,L3CP3X+FR1 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 1,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + .word ANI_END + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR lex_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,12 + WL 3,L4GH3Z+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 9,999,60,40,90000h,TGT_HEAD,60,96,8 + + .word ANI_ATTACK_ON, AMODE_PUPPET,44,96,34,21 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,9,L4GH3Z+FR2 + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missed + +;got him + + WL ANI_CODE,CALL_SETUP + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,L4GH3Z+FR3,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,L4GH3Z+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,L4GH3Z+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,L4GH3B+FR6,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 4,L4GH3B+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed +;RJR START + WL ANI_CODE,CALL_MISSES +;RJR END + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 25,L4GH3Z+FR3 + WL 3,L4GH3Z+FR2 + WL 3,L4GH3Z+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H2AH3A+FR1,44,8,0 + LWWW H3HB3A+FR3,47,-6,0 + LWWW H3HB3A+FR2,39,-13,0 + LWWW H3HB3A+FR1,37,-35,0 + .long 0 +#Razor + LWWW R3HB3A+FR3,54,-8,0 + LWWW R3HB3A+FR3,49,-6,0 + LWWW R3HB3A+FR2,46,-22,0 + LWWW R3BF3A+FR1,39,-36,0 + .long 0 +#Taker + LWWW U4AM4C+FR2,41,-2,0 + LWWW U4BF3A+FR2,39,4,0 + LWWW U4BF3A+FR3,15,-9,0 + LWWW U4BF3Z+FR3,43,-22,0 + .long 0 +#Yokozuna + LWWW Y3LB3A+FR2,56,1,0 + LWWW Y3LB3A+FR2,56,6,0 + LWWW Y3LB3A+FR9,39,-20,0 + LWWW Y3BF3A+FR1,39,-24,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,37,-6,0 + LWWW S4AH3D+FR5,37,-1,0 + LWWW S4BF3A+FR2,42,-15,0 + LWWW S4BF3A+FR3,24,-23,0 + .long 0 +#BamBam + LWWW B4BF3A+FR1,55,-2,0 + LWWW B4BF3A+FR1,55,3,0 + LWWW B3HB3A+FR2,44,-29,0 + LWWW B3BF3C+FR5,40,-28,0 + .long 0 +#Doink + LWWW D3AK3A+FR3,34,1,0 + LWWW D3AK3A+FR3,33,6,0 + LWWW D3AK3A+FR2,40,-12,0 + LWWW D3BF3A+FR1,40,-34,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,38,-5,0 + LWWW L3BF3A+FR1,47,-1,1 + LWWW L3BF3A+FR2,44,-17,1 + LWWW L3BF3B+FR5,41,-32,0 + .long 0 + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#***************************************************************************** +* +* VERTICAL SUPLEX (FROM HEAD HOLD) + + SUBR lex_vsuplex_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_SETLONG,OBJ_GRAVITY,0f000h + + WL ANI_SLAVEANIM,slaveanim_tbl + + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR4,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR5,#puppet_tbl,3 + + WL ANI_SET_YVEL,060000h + + WLW ANI_SET_XVEL,-10000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR6,#puppet_tbl,4 + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR7,#puppet_tbl,5 + .word ANI_OFFSET,0,54,0 ;x,y,z + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,5,L3VS3A+FR8,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,7,L3VS3A+FR9,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,5,L3VS3A+FR10,#puppet_tbl,8 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + + WWLLW ANI_SUPERSLAVE2,3,L3UC3A+FR6,#puppet_tbl,9 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,-30000h,40000h,0 ;x,y,z vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_XFLIP + WL 1,L3GU4A+FR1 + WL ANI_SET_YVEL,040000h + .word ANI_WAITHITGND + +;;; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + + + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + +#xflip_tbl + .word 1 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 1 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3BF3A+FR3,24,-36,0 + LWWW H3PP3X+FR1,19,-39,0 + LWWW H3PP3X+FR2,15,11,0 + LWWW H3PP3X+FR3,8,42,0 + LWWW H3PP3X+FR4,2,59,0 + LWWW H3PP3X+FR5,13,76,0 + LWWW H3PP3X+FR6,-1,82,0 + LWWW H3UC3X+FR8,-27,44,0 + LWWW H3UC3X+FR9,-72,10,0 + LWWW H3UC3X+FR10,-91,8,0 + .long 0 +#Razor + LWWW R3GP3Z+FR1,17,-43,0 + LWWW R3GP3Z+FR2,14,-27,0 + LWWW R3GP3Z+FR3,12,17,0 + LWWW R3GP3Z+FR4,22,52,0 + LWWW R3GP3Z+FR5,19,70,0 + LWWW R3GP3Z+FR6,22,73,0 + LWWW R3GP3Z+FR7,-5,61,0 + LWWW R3TD3A+FR7,-12,59,0 + LWWW R3TD3A+FR8,-37,35,0 + LWWW R3GU2A+FR1,-112,-10,1 + .long 0 +#Taker + LWWW U3PP3X+FR1,19,-39,1 + LWWW U3PP3X+FR2,18,-22,1 + LWWW U3PP3X+FR3,14,-6,1 + LWWW U3PP3X+FR4,7,26,1 + LWWW U3PP3X+FR5,11,74,1 + LWWW U3PP3X+FR6,14,96,1 + LWWW U3FH3A+FR5,-33,64,1 + LWWW U3FH3A+FR5,-38,67,1 + LWWW U3FD3B+FR7,-114,-15,0 + LWWW U3CP3B+FR1,-128,-6,1 + .long 0 +#Yokozuna + LWWW Y3BF3A+FR11,23,-28,0 + LWWW Y3PP3Q+FR1,17,-20,0 + LWWW Y3PP3Q+FR3,23,-2,0 + LWWW Y3PP3Q+FR4,21,21,0 + LWWW Y3PP3Q+FR6,0,48,0 + LWWW Y3PP3Q+FR7,0,53,0 + LWWW Y3PP3Q+FR7,-8,58,0 + LWWW Y3FD3A+FR5,-70,45,0 + LWWW Y3FD3A+FR6,-78,13,0 + LWWW Y3FD3A+FR7,-97,14,0 + .long 0 +#Shawn + LWWW S3BF3A+FR5,19,-40,0 + LWWW S3GP3X+FR1,20,-34,0 + LWWW S3GP3X+FR2,17,-21,0 + LWWW S3GP3X+FR3,20,9,0 + LWWW S3GP3X+FR4,16,62,0 + LWWW S3GP3X+FR5,15,65,0 + LWWW S3OS3X+FR9,-26,65,1 + LWWW S3UC3X+FR6,-31,53,0 + LWWW S3UC3X+FR8,-96,-13,0 + LWWW S3OS3X+FR10,-104,-5,1 + .long 0 +#BamBam + LWWW B3PP3Q+FR1,14,-40,0 + LWWW B3PP3Q+FR2,16,-12,0 + LWWW B3PP3Q+FR3,20,15,0 + LWWW B3PP3Q+FR4,18,42,0 + LWWW B3PP3Q+FR5,16,60,0 + LWWW B3PP3Q+FR6,9,70,0 + LWWW B4TD3B+FR8,-12,61,0 + LWWW B4TD3B+FR8,-19,64,0 + LWWW B4TD3A+FR1,-68,12,0 + LWWW B4TD3B+FR9,-90,3,0 + .long 0 +#Doink + LWWW D3PD3Z+FR1,25,-47,1 + LWWW D3PD3Z+FR2,19,-23,1 + LWWW D3PD3Z+FR3,18,4,1 + LWWW D3PD3Z+FR4,15,49,1 + LWWW D3PD3Z+FR5,8,73,1 + LWWW D3PD3Z+FR6,18,66,1 + LWWW D3PD3Z+FR6,12,65,1 + LWWW D3UC3A+FR8,-17,61,0 + LWWW D3UC3A+FR11,-90,6,0 + LWWW D3SA3A+FR2,-111,-8,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3BF3B+FR1,23,-40,0 + LWWW L3GP3Z+FR1,13,-31,0 + LWWW L3GP3Z+FR2,16,-13,0 + LWWW L3GP3Z+FR3,20,11,0 + LWWW L3GP3Z+FR5,21,39,0 + LWWW L3GP3Z+FR6,20,57,0 + LWWW L3GP3Z+FR6,9,66,0 + LWWW L3FH3A+FR6,-11,52,0 + LWWW L3UC3X+FR4,-94,3,0 + LWWW L3CP3X+FR1,-117,-7,1 + .long 0 + +#***************************************************************************** +*lift +; attacker sequence + + SUBR lex_grab2overhead_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,10 +;RJR START + LEAPATOPP 12,40,40,40,90000h,TGT_HEAD,70,78,0 + WL ANI_SET_YVEL,0 +;RJR END + WL 5,L4PO4A+FR1 + WL 5,L4PO4A+FR2 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_ATTACK_ON, AMODE_PUPPET,31,51,56,53 ;mode,x,y,w,h + WL 3,L4PO4A+FR3 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFBLOCKED,#missedb + WL ANI_IFSTATUS,#gotim + + +; WL 2,L4PO4A+FR3 +#missedb + WL 10,L4PO4A+FR4 + +;missed + WL 14,L4PO4A+FR4 + WL 6,L4PO4A+FR3 + WL 6,L4PO4A+FR2 + WL 6,L4PO4A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gotim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,8,L4PO4A+FR5,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,5,L4PO4A+FR6,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,5,L4PO4A+FR7,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,L4PO4A+FR8,#puppet_tbl,3 + + WL ANI_SLAVEANIM,#heldoh_tbl + + WL 4,L4PO4A+FR8 + + .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + + + .ref hrt_heldoh_anim + .ref rzr_heldoh_anim + .ref und_heldoh_anim + .ref yok_heldoh_anim + .ref shn_heldoh_anim + .ref bam_heldoh_anim + .ref dnk_heldoh_anim +; .ref lex_heldoh_anim + +#heldoh_tbl + .long hrt_heldoh_anim + .long rzr_heldoh_anim + .long und_heldoh_anim + .long yok_heldoh_anim + .long shn_heldoh_anim + .long bam_heldoh_anim + .long dnk_heldoh_anim + .long 0 + .long lex_heldoh_anim + +lex_grab_tbl +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4AM3A+FR1,81,7,0 + LWWW H3MS3Z+FR1,35,24,0 + LWWW H3MS3Z+FR4,-1,17,0 + LWWW H4MF4B+FR9,-19,18,0 + .long 0 +#Razor + LWWW R3MS3Z+FR1,66,10,0 + LWWW R3MS3Z+FR2,39,16,0 + LWWW R3MS3Z+FR3,5,14,0 + LWWW R4MF4B+FR9,-57,28,0 + .long 0 +#Taker + LWWW U4AM4C+FR1,63,19,0 + LWWW U3MS3Z+FR1,31,35,0 + LWWW U3MS3Z+FR3,-16,13,0 + LWWW U4PM3C+FR7,-29,27,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR1,90,14,0 + LWWW Y3MS3Z+FR2,45,25,0 + LWWW Y3MS3Z+FR4,-3,24,0 + LWWW Y3MF3B+FR7,-30,20,0 + .long 0 +#Shawn + LWWW S3OS3X+FR3,56,22,1 + LWWW S3MS3Z+FR1,29,13,0 + LWWW S3MS3Z+FR3,-16,22,0 + LWWW S3MF3B+FR7,-41,23,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,75,18,0 + LWWW B3MS3Z+FR2,42,14,0 + LWWW B3MS3Z+FR3,8,15,0 + LWWW B4MF4A+FR7,-51,35,0 + .long 0 +#Doink + LWWW D3AH3B+FR5,67,16,0 + LWWW D3GS3X+FR3,37,20,0 + LWWW D3GS3X+FR4,7,22,0 + LWWW D4MF4A+FR9,-32,37,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MS3Z+FR1,72,4,0 + LWWW L3MS3Z+FR2,37,10,0 + LWWW L3MS3Z+FR3,-2,14,0 + LWWW L3MF3B+FR6,-34,13,0 + .long 0 + +;RJR START +#***************************************************************************** + + SUBR lex_slamdown_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL ANI_SLAVEANIM,slaveanim_tbl + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WL ANI_SET_YVEL,028000h + + WWLLW ANI_SUPERSLAVE2,4,L3FO3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L3FO3A+FR2,#puppet_tbl,1 + + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + + WWLLW ANI_SUPERSLAVE2,3,L3FO3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,L3FO3A+FR4,#puppet_tbl,3 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WWLLW ANI_SUPERSLAVE2,3,L3FO3A+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,1,L3FO3A+FR6,#puppet_tbl,5 + + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#breakneck_tbl + WLLL ANI_SETOPPVELS,30000h,40000h,0 ;x,y,z vels + + .word ANI_DETACH + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + + WL 3,L3FO3A+FR6 + + WL 4,L3FO3A+FR7 + WL 4,L3FO3A+FR8 + + .word ANI_XFLIP + WL 4,L4ST4A+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#xflip_tbl + .word 1 ;bret + .word 1 ;razor + .word 1 ;taker + .word 1 ;yoko + .word 1 ;shawn + .word 1 ;bam + .word 1 ;doink + .word 1 ;spare + .word 1 ;lex + +#breakneck_tbl + .long hrt_break_neck2_anim + .long rzr_break_neck2_anim + .long und_break_neck2_anim + .long yok_break_neck2_anim + .long shn_break_neck2_anim + .long bam_break_neck2_anim + .long dnk_break_neck2_anim + .long 0 + .long lex_break_neck2_anim + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4MF4B+FR9,-21,18,0 + LWWW H3PP3X+FR3,-19,61,0 + LWWW H3PP3X+FR4,-19,54,1 + LWWW H3PP3X+FR5,-13,55,1 + LWWW H3PP3X+FR7,-52,-16,1 + LWWW H3PP3X+FR8,-58,-36,1 + .long 0 +#Razor + LWWW R4MF4B+FR9,-58,25,0 + LWWW R3GP3Z+FR3,-17,39,0 + LWWW R3GP3Z+FR4,-18,43,1 + LWWW R3GP3Z+FR5,-10,45,1 + LWWW R3GP3Z+FR7,-48,0,1 + LWWW R3GP3Z+FR8,-53,-40,1 + .long 0 +#Taker + LWWW U4PM3C+FR7,-35,26,0 + LWWW U3PP3X+FR3,-26,27,1 + LWWW U3PP3X+FR4,-32,35,0 + LWWW U3PP3X+FR5,-23,42,0 + LWWW U3GP3X+FR1,-58,-23,0 + LWWW U3GP3X+FR2,-56,-44,0 + .long 0 +#Yokozuna + LWWW Y3MF3B+FR7,-41,19,0 + LWWW Y3PP3Q+FR3,-14,21,0 + LWWW Y3PP3Q+FR4,-17,20,1 + LWWW Y3PP3Q+FR7,-31,37,1 + LWWW Y3FD3N+FR2,-67,-16,1 + LWWW Y3FD3N+FR3,-65,-15,1 + .long 0 +#Shawn + LWWW S3MF3B+FR7,-45,19,0 + LWWW S3GP3X+FR3,-10,22,0 + LWWW S3GP3X+FR4,-10,43,1 + LWWW S3GP3X+FR5,-13,33,1 + LWWW S3GP3X+FR7,-53,-15,1 + LWWW S3GP3X+FR6,-55,-32,1 + .long 0 +#BamBam + LWWW B4MF4A+FR7,-55,32,0 + LWWW B3MS3Z+FR5,-36,25,0 + LWWW B3PP3Q+FR3,-22,36,1 + LWWW B3PP3Q+FR4,-12,52,1 + LWWW B3PP3Q+FR7,-63,-7,1 + LWWW B3FD3C+FR1,-70,-29,1 + .long 0 +#Doink + LWWW D4MF4A+FR9,-29,35,0 + LWWW D3PD3Z+FR3,-8,35,1 + LWWW D3PD3Z+FR4,-13,60,0 + LWWW D3PD3Z+FR6,-3,47,0 + LWWW D3PD3Z+FR8,-48,-28,0 + LWWW D3PD3Z+FR9,-47,-46,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MF3B+FR6,-36,14,0 + LWWW L3GP3Z+FR2,-10,19,0 + LWWW L3GP3Z+FR3,-15,20,1 + LWWW L3GP3Z+FR5,-11,37,1 + LWWW L3FH3A+FR6,-59,-12,1 + LWWW L3FD3B+FR1,-56,-35,1 + .long 0 + + +#***************************************************************************** +* +* GRAB & SLAM ANIM + + SUBR lex_grabslam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,10 + LEAPATOPP 12,40,40,40,90000h,TGT_HEAD,70,78,0 + WL ANI_SET_YVEL,0 + WL 5,L4PO4A+FR1 + WL 5,L4PO4A+FR2 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_ATTACK_ON, AMODE_PUPPET,31,51,56,53 ;mode,x,y,w,h + WL 3,L4PO4A+FR3 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFBLOCKED,#missedb + WL ANI_IFSTATUS,#gotim + +; WL 2,L4PO4A+FR3 +#missedb + WL 10,L4PO4A+FR4 + +;missed + WL 14,L4PO4A+FR4 + WL 6,L4PO4A+FR3 + WL 6,L4PO4A+FR2 + WL 6,L4PO4A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gotim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,6,L4PO4A+FR5,lex_grab_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L4PO4A+FR6,lex_grab_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,L4PO4A+FR7,lex_grab_tbl,2 +; WWLLW ANI_SUPERSLAVE2,5,L4PO4A+FR8,lex_grab_tbl,3 + + WL ANI_CHANGEANIM,lex_slamdown_anim + + +;RJR END +#***************************************************************************** +*back breaker + + SUBR lex_backbreaker_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL ANI_SLAVEANIM,slaveanim_tbl + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWL ANI_SETLONG,OBJ_GRAVITY,0a000h + WL ANI_SET_YVEL,060000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WWLLW ANI_SUPERSLAVE2,4,L4ZZ5B+FR1,#puppet_tbl,0 + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + WWLLW ANI_SUPERSLAVE2,1,L4ZZ5B+FR2,#puppet_tbl,1 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_DEBRISAT,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + + WWLLW ANI_SUPERSLAVE2,3,L4ZZ5B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,L4ZZ5B+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,8,L4ZZ5B+FR5,#puppet_tbl,4 + + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#bounceoff_tbl + WLLL ANI_SETOPPVELS,0,0,-28000h ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 20,L4ZZ5B+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + + + + + + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWL ANI_SETLONG,OBJ_GRAVITY,0a000h + WL ANI_SET_YVEL,060000h + WWLLW ANI_SUPERSLAVE2,4,L4ZZ5B+FR1,#puppet_tbl,0 + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + WWLLW ANI_SUPERSLAVE2,1,L4ZZ5B+FR2,#puppet_tbl,1 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + + WWLLW ANI_SUPERSLAVE2,3,L4ZZ5B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,L4ZZ5B+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,14,L4ZZ5B+FR5,#puppet_tbl,4 + + WWLLW ANI_SUPERSLAVE2,4,L4ZZ5B+FR4,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,L4ZZ5B+FR3,#puppet_tbl,6 + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,4,L4ZZ5B+FR2,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,L4PO4A+FR8,#puppet_tbl,8 + + WL ANI_CHANGEANIM,lex_ohslam_anim + + +#xflip_tbl + .word 1 ;bret + .word 1 ;razor + .word 1 ;taker + .word 0 ;yoko + .word 1 ;shawn + .word 1 ;bam + .word 1 ;doink + .word 1 ;spare + .word 1 ;lex + +#bounceoff_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3BR3Z+FR4,-30,14,1 + LWWW H3BR3Z+FR4,-30,15,1 + LWWW H3BR3Z+FR3,-19,7,1 + LWWW H3BR3Z+FR2,-14,12,1 + LWWW H3BR3Z+FR1,-4,7,1 + LWWW H3BR3Z+FR2,-12,13,1 + LWWW H3BR3Z+FR4,-21,6,1 + LWWW H4MF4B+FR9,-21,20,1 + LWWW H4MF4B+FR9,-20,15,1 + .long 0 +#Razor + LWWW R3AM3D+FR2,-12,24,1 + LWWW R3FD3B+FR5,-18,46,1 + LWWW R3FD3B+FR5,-16,42,1 + LWWW R3BR3Z+FR2,-11,9,1 + LWWW R3BR3Z+FR3,-19,1,1 + LWWW R3BR3Z+FR2,-15,8,1 + LWWW R3AM3D+FR2,-6,10,1 + LWWW R4MF4B+FR9,-55,31,1 + LWWW R4MF4B+FR9,-57,28,1 + .long 0 +#Taker + LWWW U3CP3B+FR2,-36,18,0 + LWWW U3CP3B+FR2,-37,19,0 + LWWW U3CP3B+FR1,-34,5,0 + LWWW U3BR3Z+FR4,-25,15,1 + LWWW U3BR3Z+FR3,-23,-1,1 + LWWW U3BR3Z+FR4,-23,16,1 + LWWW U3CP3B+FR2,-28,7,1 + LWWW U4PM3C+FR7,-29,34,1 + LWWW U4PM3C+FR7,-29,27,1 + .long 0 +#Yokozuna + LWWW Y3RL1A+FR1,-33,23,0 + LWWW Y3RL1A+FR1,-30,20,0 + LWWW Y3CP3B+FR1,-13,13,0 + LWWW Y3BR3Z+FR2,-3,13,1 + LWWW Y3BR3Z+FR1,-26,11,1 + LWWW Y3BR3Z+FR2,-6,13,1 + LWWW Y3CP3B+FR1,-7,18,0 + LWWW Y3MF3B+FR7,-32,29,0 + LWWW Y3MF3B+FR7,-30,20,0 + .long 0 +#Shawn + LWWW S3CP3B+FR2,-25,25,0 + LWWW S3CP3B+FR2,-26,25,0 + LWWW S3CP3B+FR7,-24,1,0 + LWWW S3BR3Z+FR2,-6,-1,1 + LWWW S3BR3Z+FR3,4,-1,1 + LWWW S3BR3Z+FR2,-5,-3,1 + LWWW S3CP3B+FR7,-26,-2,1 + LWWW S3MF3B+FR7,-43,31,1 + LWWW S3MF3B+FR7,-41,23,1 + .long 0 +#BamBam + LWWW B3BR3Z+FR13,-32,29,1 + LWWW B3BR3Z+FR13,-34,28,1 + LWWW B3BR3Z+FR16,-27,34,1 + LWWW B3BR3Z+FR15,-22,16,1 + LWWW B3BR3Z+FR14,-28,23,1 + LWWW B3BR3Z+FR15,-22,18,1 + LWWW B3BR3Z+FR13,-25,20,1 + LWWW B4MF4A+FR7,-52,43,1 + LWWW B4MF4A+FR7,-51,35,1 + .long 0 +#Doink + LWWW D3UC3A+FR5,-34,38,1 + LWWW D3UC3A+FR5,-33,38,1 + LWWW D3SA3A+FR2,-24,3,0 + LWWW D3BK3Z+FR6,-16,9,1 + LWWW D3BK3Z+FR7,-21,-3,1 + LWWW D3BK3Z+FR7,-19,-1,1 + LWWW D3BK3Z+FR6,-20,14,1 + LWWW D4MF4A+FR9,-33,45,1 + LWWW D4MF4A+FR9,-32,37,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3UC3A+FR4,-22,24,1 + LWWW L3UC3A+FR4,-25,25,1 + LWWW L3UC3A+FR6,-16,9,1 + LWWW L3BR3Z+FR2,-12,3,1 + LWWW L3BR3Z+FR1,-13,-7,1 + LWWW L3BR3Z+FR2,-12,3,1 + LWWW L3UC3A+FR6,-16,9,1 + LWWW L3MF3B+FR6,-36,16,1 + LWWW L3MF3B+FR6,-34,13,1 + .long 0 + +#***************************************************************************** +*drop + + SUBR lex_ohslam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL ANI_SLAVEANIM,slaveanim_tbl + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WWLLW ANI_SUPERSLAVE2,12,L4CF4A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,L4CF4A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,L4CF4A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,L4CF4A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,L4CF4A+FR5,#puppet_tbl,4 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + + WWLLW ANI_SUPERSLAVE2,4,L4CF4A+FR7,#puppet_tbl,5 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,10000h,40000h,20000h ;x,y,z vels + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 4,L4CF4A+FR8 + WL 4,L4CF4A+FR9 + WL 4,L4CF4A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 1 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4MF4B+FR1,-33,15,0 + LWWW H4MF4B+FR1,-33,15,0 + LWWW H4MF4B+FR1,-30,15,0 + LWWW H4MF4B+FR1,-20,16,0 + LWWW H4MF4B+FR1,-9,11,0 + LWWW H3MS3X+FR1,0,-38,0 + .long 0 +#Razor + LWWW R4MF4B+FR6,-32,21,0 + LWWW R4MF4B+FR6,-32,22,0 + LWWW R4MF4B+FR6,-29,23,0 + LWWW R4MF4B+FR6,-19,22,0 + LWWW R4MF4B+FR6,-8,19,0 + LWWW R3MS3Z+FR6,3,-31,0 + .long 0 +#Taker + LWWW U4PM3C+FR6,-46,23,0 + LWWW U4PM3C+FR6,-46,24,0 + LWWW U4PM3C+FR6,-43,25,0 + LWWW U4PM3C+FR6,-33,24,0 + LWWW U4PM3C+FR6,-22,21,0 + LWWW U3CF3Q+FR1,-21,-46,0 + .long 0 +#Yokozuna + LWWW Y3MF3B+FR7,-41,27,0 + LWWW Y3MF3B+FR7,-41,28,0 + LWWW Y3MF3B+FR7,-34,27,0 + LWWW Y3MF3B+FR7,-24,27,0 + LWWW Y3MF3B+FR7,-15,22,0 + LWWW Y3KF3B+FR1,-1,-24,0 + .long 0 +#Shawn + LWWW S3MF3B+FR6,-47,23,0 + LWWW S3MF3B+FR6,-44,25,0 + LWWW S3MF3B+FR6,-37,21,0 + LWWW S3MF3B+FR6,-34,23,0 + LWWW S3MF3B+FR6,-23,18,0 + LWWW S3CF3Z+FR1,8,-43,0 + .long 0 +#BamBam + LWWW B4MF4A+FR6,-52,39,0 + LWWW B4MF4A+FR6,-52,40,0 + LWWW B4MF4A+FR6,-49,41,0 + LWWW B4MF4A+FR6,-39,40,0 + LWWW B4MF4A+FR6,-28,37,0 + LWWW B3RL1A+FR7,2,-37,0 + .long 0 +#Doink + LWWW D4MF4A+FR1,-38,17,0 + LWWW D4MF4A+FR1,-38,18,0 + LWWW D4MF4A+FR1,-35,19,0 + LWWW D4MF4A+FR1,-25,18,0 + LWWW D4MF4A+FR1,-14,15,0 + LWWW D3GS3X+FR8,-1,-43,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MF3B+FR6,-47,16,0 + LWWW L3MF3B+FR6,-47,17,0 + LWWW L3MF3B+FR6,-44,18,0 + LWWW L3MF3B+FR6,-34,17,0 + LWWW L3MF3B+FR6,-23,14,0 + LWWW L3TF3X+FR1,-16,-39,0 + .long 0 + +#***************************************************************************** + + SUBR lex_grab2elbow_anim + + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_STARTATTACK,AT_PUPPET,8 + + WL 4,L3RE3C+FR1 + WL 4,L3RE3C+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,2,1,40+10,22 ;mode,x,y,w,h + WL 4,L3RE3C+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#gotim + +;missed + WL 8,L3RE3C+FR3 + WL 4,L3RE3C+FR2 + WL 4,L3RE3C+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gotim +;what about block? + + .word ANI_OFFSET,0,0,-1 ;x,y,z + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WWLLW ANI_SUPERSLAVE2,4,L3RE3C+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,L3RE3C+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,10,L3RE3C+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,L3RE3C+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,L3RE3C+FR8,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,L3RE3C+FR9,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,L3RE3C+FR10,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,L3RE3C+FR12,#puppet_tbl,7 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#breakneck2_tbl + WLLL ANI_SETOPPVELS,30000h,40000h,0 ;x,y,z vels + + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 10,L3RE3C+FR12 + WL 6,L3RE3C+FR13 + WL 6,L3RE3C+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 1 ;lex + +#breakneck2_tbl + .long hrt_breakneck2_anim ;bret + .long rzr_breakneck2_anim ;razor + .long und_breakneck2_anim ;taker + .long yok_breakneck2_anim ;yoko + .long shn_breakneck2_anim ;shawn + .long bam_breakneck2_anim ;bam + .long dnk_breakneck2_anim ;doink + .long lex_breakneck2_anim ;spare + .long lex_breakneck2_anim ;lex + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4KM3B+FR3,39,28,0 + LWWW H4KM3B+FR8,-2,-12,0 + LWWW H4KM3B+FR6,2,-17,0 + LWWW H4KM3B+FR6,7,-18,0 + LWWW H4KM3B+FR6,6,-14,0 + LWWW H4KM3B+FR6,1,-8,0 + LWWW H4KM3B+FR8,2,-17,0 + LWWW H3UC3X+FR1,58,7,0 + .long 0 +#Razor + LWWW R3LE3A+FR1,40,34,1 + LWWW R3LE3A+FR2,10,19,1 + LWWW R3LE3A+FR4,-3,5,1 + LWWW R3LE3A+FR4,2,4,1 + LWWW R3LE3A+FR4,1,8,1 + LWWW R3LE3A+FR4,-4,14,1 + LWWW R3LE3A+FR2,11,14,1 + LWWW R3FD3B+FR1,52,6,0 + .long 0 +#Taker + LWWW U4KM3E+FR6,42,33,0 + LWWW U4KM3E+FR5,17,12,0 + LWWW U4KM3E+FR4,1,-5,0 + LWWW U4KM3E+FR4,6,-6,0 + LWWW U4KM3E+FR4,5,-2,0 + LWWW U4KM3E+FR4,0,4,0 + LWWW U4KM3E+FR5,18,7,0 + LWWW U3FD3X+FR1,59,12,1 + .long 0 +#Yokozuna + LWWW Y4KB3A+FR8,31,21,0 + LWWW Y4KB3A+FR7,9,5,0 + LWWW Y4KB3A+FR6,8,-6,0 + LWWW Y4KB3A+FR6,12,-7,0 + LWWW Y4KB3A+FR6,11,-3,0 + LWWW Y4KB3A+FR6,6,3,0 + LWWW Y4KB3A+FR7,8,0,0 + LWWW Y3FD3A+FR1,57,6,0 + .long 0 +#Shawn + LWWW S4KM3C+FR8,26,27,0 + LWWW S4KM3C+FR7,-1,1,0 + LWWW S4KM3C+FR6,-12,-15,0 + LWWW S4KM3C+FR6,-7,-16,0 + LWWW S4KM3C+FR6,-8,-12,0 + LWWW S4KM3C+FR6,-13,-6,0 + LWWW S4KM3C+FR7,0,-4,0 + LWWW S3UC3X+FR2,21,4,0 + .long 0 +#BamBam + LWWW B4KM3A+FR8,21,28,0 + LWWW B4KM3A+FR7,2,15,0 + LWWW B4KM3A+FR6,-3,1,0 + LWWW B4KM3A+FR6,2,0,0 + LWWW B4KM3A+FR6,1,4,0 + LWWW B4KM3A+FR6,-4,10,0 + LWWW B4KM3A+FR7,1,10,0 + LWWW B4UC3B+FR2,23,2,0 + .long 0 +#Doink + LWWW D2KM3B+FR2,29,33,0 + LWWW D2KM3B+FR3,7,17,0 + LWWW D2KM3B+FR4,-10,6,0 + LWWW D2KM3B+FR4,-5,5,0 + LWWW D2KM3B+FR4,-6,9,0 + LWWW D2KM3B+FR4,-11,15,0 + LWWW D2KM3B+FR3,8,12,0 + LWWW D3UC3A+FR3,36,19,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3LE3A+FR1,40,31,1 + LWWW L3LE3A+FR2,9,16,1 + LWWW L3LE3A+FR3,8,5,1 + LWWW L3LE3A+FR3,13,4,1 + LWWW L3LE3A+FR3,12,8,1 + LWWW L3LE3A+FR3,7,14,1 + LWWW L3LE3A+FR2,9,11,1 + LWWW L3LE3A+FR4,2,2,1 + .long 0 + + +#***************************************************************************** +* +* HIP TOSS RUNNING OPPONENT + + + SUBR lex_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,10 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0 + + WL 2,L4HT3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET,33,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,L4HT3A+FR2 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,L4HT3A+FR2 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;got him + WL ANI_CODE,DO_SNAP_MESS + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,L4HT3A+FR6,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,L4HT3A+FR7,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,L4HT3A+FR8,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,L4HT3A+FR9,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,L4HT3A+FR10,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,L4HT3A+FR11,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,L4HT3A+FR12,#puppet_tbl,6 + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#rollout_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL 19,L4HT3A+FR12 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 10,L4HT3A+FR2 +#missed + WL 20,L4HT3A+FR2 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#rollout_tbl + .long hrt_tossed_anim,rzr_tossed_anim + .long und_tossed_anim + .long yok_tossed_anim + .long shn_tossed_anim,bam_tossed_anim + .long dnk_tossed_anim,0,lex_tossed_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AM3A+FR1,74,10,0 + LWWW H2AM3A+FR7,33,4,0 + LWWW H3FR3A+FR2,13,7,0 + LWWW H3FR3A+FR3,-15,40,0 + LWWW H3FR3A+FR4,-28,27,0 + LWWW H3FR3A+FR5,-63,16,0 + LWWW H2CP3A+FR8,-143,-84,1 + .long 0 +#Razor + LWWW R3TD3A+FR3,51,1,0 + LWWW R3TD3A+FR4,27,-2,0 + LWWW R3TD3A+FR5,17,8,0 + LWWW R3TD3A+FR6,-13,31,0 + LWWW R3TD3A+FR7,-30,33,0 + LWWW R3TD3A+FR8,-71,21,0 + LWWW R3GU2A+FR1,-167,-82,1 + .long 0 +#Taker + LWWW U4AM4C+FR4,56,13,0 + LWWW U3FH3A+FR1,44,6,1 + LWWW U3FH3A+FR2,-2,16,1 + LWWW U3FH3A+FR3,-19,26,1 + LWWW U3FH3A+FR4,-38,20,1 + LWWW U3FH3A+FR5,-76,31,1 + LWWW U3CP3B+FR1,-164,-77,1 + .long 0 +#Yokozuna + LWWW Y3FL3W+FR1,57,25,0 + LWWW Y3FL3W+FR2,28,17,0 + LWWW Y3FL3W+FR3,-15,22,0 + LWWW Y3FL3W+FR4,-36,36,0 + LWWW Y3FL3W+FR6,-39,37,0 + LWWW Y3FL3W+FR7,-74,24,0 + LWWW Y3FD3A+FR7,-127,-59,0 + .long 0 +#Shawn + LWWW S3OS3X+FR4,26,20,1 + LWWW S3OS3X+FR5,5,11,1 + LWWW S3OS3X+FR6,-4,41,1 + LWWW S3OS3X+FR7,-26,51,1 + LWWW S3OS3X+FR8,-26,51,1 + LWWW S3OS3X+FR9,-84,34,1 + LWWW S3OS3X+FR10,-137,-73,1 + .long 0 +#BamBam + LWWW B4TD3B+FR2,39,9,0 + LWWW B4TD3B+FR3,21,12,0 + LWWW B4TD3B+FR4,6,12,0 + LWWW B4TD3B+FR6,-18,57,0 + LWWW B4TD3B+FR7,-38,38,0 + LWWW B4TD3B+FR8,-69,13,0 + LWWW B4TD3B+FR9,-116,-68,0 + .long 0 +#Doink + LWWW D3PM4C+FR2,37,20,0 + LWWW D3OS3A+FR1,31,11,0 + LWWW D3OS3A+FR3,-7,6,0 + LWWW D3OS3A+FR4,-25,28,0 + LWWW D3OS3A+FR6,-28,25,0 + LWWW D3FD3E+FR2,-67,0,0 + LWWW D3SA3A+FR2,-138,-80,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR3,63,11,0 + LWWW L3FH3A+FR2,24,5,0 + LWWW L3FH3A+FR3,8,9,0 + LWWW L3FH3A+FR4,-9,22,0 + LWWW L3FH3A+FR5,-23,11,0 + LWWW L3FH3A+FR6,-69,16,0 + LWWW L3CP3X+FR1,-162,-78,1 + .long 0 + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/LEXSEQ4.ASM b/BACKUP/LEXSEQ4.ASM new file mode 100644 index 0000000..96b82a7 --- /dev/null +++ b/BACKUP/LEXSEQ4.ASM @@ -0,0 +1,170 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 11/28/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lexseq4.asm" + .title "Lex Loser animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "leximg.h" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF HIT_THE_MAT,SMALL_BOUNCE + .REF CALL_MISSES + .ref am_I_dizzy + .ref am_I_dead + .ref ckzpos + .ref ck_dizzy + .ref start_run_anim + .ref lex_faceup_getup_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR lex_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,L3CP3X+FR3 + .ref ckzpos + WL ANI_CODE,ckzpos + WL 3,L3CP3X+FR3 + WL 4,L3CP3X+FR4 + WL 4,L3CP3X+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,L3CP3X+FR7 + + WL 10,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + SUBR lex_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,L3UC3Z+FR10 + .ref ckzpos + WL ANI_CODE,ckzpos + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + WL 4,L3CP3X+FR3 + WL 4,L3CP3X+FR4 + WL 4,L3CP3X+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,L3CP3X+FR7 + + WL 10,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#***************************************************************************** + + SUBR lex_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,39,0 ;x,y,z + + WL 4,L3UC3X+FR3 + WL 4,L3UC3X+FR4 + WL 1,L3UC3X+FR5 + + .word ANI_WAITHITGND +;;; .word ANI_ZERO_XZVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,L3UC3X+FR6 + + WL 3,L3FD3B+FR1 + WL 3,L3FD3B+FR2 + WL 3,L3FD3B+FR3 + WL 3,L3FD3B+FR4 + WL 3,L3FD3B+FR5 + + .word ANI_ZERO_XZVELS + + WL 3,L3FD3B+FR6 + +;;; .word ANI_XFLIP + WL 2,L3CP3X+FR7 + WL 1+5,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/LEX_HIT.IMG b/BACKUP/LEX_HIT.IMG new file mode 100644 index 0000000..9b6e68a Binary files /dev/null and b/BACKUP/LEX_HIT.IMG differ diff --git a/BACKUP/LEX_MJT.IMG b/BACKUP/LEX_MJT.IMG new file mode 100644 index 0000000..e3e52c9 Binary files /dev/null and b/BACKUP/LEX_MJT.IMG differ diff --git a/BACKUP/LIFEBAR.ASM b/BACKUP/LIFEBAR.ASM new file mode 100644 index 0000000..2a9eb4f --- /dev/null +++ b/BACKUP/LIFEBAR.ASM @@ -0,0 +1,3443 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 29 Oct 93 +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 4/12/94 15:30 +************************************************************** + + .file "lifebar.asm" + .title "meters, names, messages, and scores" + .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 "game.equ" + .include "plyr.equ" + .include "sys.equ" + .include "link.equ" + .include "sound.h" + + .include "miscimg.glo" + .include "fontsimg.glo" + .INCLUDE "SOUND.EQU" + +#***************************************************************************** + + .REF ANIM_CROWD + .REF setup_back_anim + .REF RNDRNG0 + + .ref update_timer + .DEF DO_HEAD_MESS,DO_GERM_MESS + .DEF DO_FRANK_MESS,DO_BACK_MESS + .DEF DO_BODY_MESS,DO_SNAP_MESS + .DEF CLEAR_COUNTERS + + .DEF DO_PILE_MESS + .ref LINES + .DEF WHICH_NAME, KILL_REWIRE_DUMMY + .REF get_process_ptr + .REF WHICH_SCREEN + .REF DUMRETS + .ref match_over + + .def SHIFT_BARS_IN_Z + .DEF DO_REVERSAL_MESS + .REF SET_LOWER_VOL + + .if rounds_on + .ref reset_for_round + .ref reset_for_round2 + .ref calc_match_time_2 + .endif + + .REF CLEAR_SPEECH_REPEAT + + .ref calc_match_time_1 + .REF VINCE_START_ROUND2_3 + + ;from ADJUST.ASM + .ref BINBCD + + ;from AUDIT.ASM + .ref CR_STRTP,GET_ADJ,GET_CREDITS + + ;from DCSSOUND.ASM + .ref triple_sound + + ;from DISPLAY.ASM + .ref BEGINOBJ_TBL + + ;from PAL.ASM + .ref pal_getf + + ;from ROBO.ASM + .ref civanic + + ;from STRING.ASM + .ref setup_message,print_string_C2,mess_objid + + .ref sgmd8_ascii,osgemd_ascii + + ;from WRESTLE.ASM + .ref set_winner + .ref PSTATUS,process_ptrs,p1winstreak,p2winstreak,current_round + .ref secret_damage,fight_debug,p1rounds,p2rounds + + .ref log_damage + + .ref GAMSTATE + + .ref HALT + .ref dnk_head_dead_dizzy_anim + .ref dnk_fall_back_anim + .ref wres_collis_off + .ref change_anim1a + .ref ring_bell + + .REF CALL_MATCH_OVER + + ;from UTIL.ASM + .ref get_all_buttons_cur2 + .DEF BONUS_MESS + .DEF DO_COMBO_MESS + .ref CLOSE_VERT_SCREEN_LINE,OPEN_VERT_SCREEN_LINE + .REF LINES_VERT +;RJR (REMOVE LINE) .REF anibobj + .REF ANIM_CROWD + .REF AUD1 + + +#***************************************************************************** + +;player life/turbo data struct +PLT_LIFE equ 0 ;UHW life pixels (164 max) +PLT_CLIFE equ PLT_LIFE+10h ;UHW displayed life (164 max) +PLT_TURBO equ PLT_CLIFE+10h ;UHW turbo val (5400h max) +PLT_ON_SECOND EQU PLT_TURBO+10h +PLT_PAL EQU PLT_ON_SECOND+010H +PLT_SIZE equ PLT_PAL+10h + +;meter data struct +MD_LINK equ 0 ;UHW PLYRNUM for this meter +MD_LIFE equ MD_LINK+10h ;UHL life bar *obj +MD_LBAK equ MD_LIFE+20h ;UHL turbo bar *obj +MD_NAME equ MD_LBAK+20h ;UHL name *obj +MD_COMBO equ MD_NAME+20h +MD_COMBO_SIZE equ MD_COMBO+20h +MD_SIZE equ MD_COMBO_SIZE+10H + + + .bss life_data, NUM_WRES*PLT_SIZE + + .bss meter_data, 2*MD_SIZE + + .bss damage_imgs, 4*32 + + .bss ram_lst, 32*40 ;For announce_match + + BSSX DAM_MULT,16 + + .BSS LAST_FLIP,16 + .BSS PILE_COUNT,16 + .BSS BODY_COUNT,16 + .BSS FRANK_COUNT,16 + .BSS GERM_COUNT,16 + .BSS BACK_COUNT,16 + .BSS HEAD_COUNT,16 + .BSS SNAP_COUNT,16 + BSSX HAVE_WE_AUDITED_THIS_GAME,16 + +;MJT Start +PILE_LIMIT .EQU 0 +FRANK_LIMIT .EQU 0 +BODY_LIMIT .EQU 0 +GERM_LIMIT .EQU 0 +BACK_LIMIT .EQU 0 +HEAD_LIMIT .EQU 0 +SNAP_LIMIT .EQU 0 +;MJT End +NUM_OF_COUNTERS .EQU 7 + +#***************************************************************************** +* +* Life/Turbo meter sizes and positions. +* + +LIFE_MAX .equ 164 ;green pixels in life bar +TURBO_MAX .equ 84<<8 ;max turbo value + + +#***************************************************************************** +* +* >a8 = PLYRNUM for left meter +* >a9 = PLYRNUM for right meter + + SUBR init_life_data + + ;initialize life data + MOVI FGR2YL_P,A0 + CALLA pal_getf + MOVE A0,A5 + movi NUM_WRES,a0 + movi life_data,a1 + movi LIFE_MAX,a2 + movi TURBO_MAX,a3 + clr a4 +#init_loop + move a2,*a1(PLT_LIFE) + move a3,*a1(PLT_TURBO) + move a4,*a1(PLT_CLIFE) + move a4,*a1(PLT_ON_SECOND) + MOVE A5,*A1(PLT_PAL) + addi PLT_SIZE,a1 + dsj a0,#init_loop + + rets + +CLEAR_COUNTERS + MOVK NUM_OF_COUNTERS,A0 + CLR A1 + MOVI PILE_COUNT,A2 +CLEAR_NEXT_COUNTER + MOVE A1,*A2+ + DSJS A0,CLEAR_NEXT_COUNTER + RETS + +#***************************************************************************** +* +* >a8 = PLYRNUM for left meter +* >a9 = PLYRNUM for right meter + + SUBR init_rnd_life_data + + ;initialize life data + movi NUM_WRES,a0 + movi life_data,a1 + movi LIFE_MAX,a2 +#init_loop + move a2,*a1(PLT_LIFE) + move a2,*a1(PLT_CLIFE) + addi PLT_SIZE,a1 + dsj a0,#init_loop + + rets + +P1CNTR .equ PDATA +P2CNTR .equ PDATA+16 +P1STATE .equ PDATA+32 +P2STATE .equ PDATA+48 + + SUBR meters + + PUSH a8,a9 + + ;Start the credits message + calla start_credbox + + callr display_damage + + ;initialize meter data + movi meter_data,a1 + TBL_OBJ lhlth1 + move a8,*a1(MD_LIFE),L + + TBL_OBJ lname + move a8,*a1(MD_NAME),L + + TBL_OBJ lframec + move a8,*a1(MD_LBAK),L + + TBL_OBJ lcombo + move a8,*a1(MD_COMBO),L + clr a8 ;initialize the combo meter + move a8,*a1(MD_COMBO_SIZE) + + addi MD_SIZE,a1 + + TBL_OBJ rhlth1 + move a8,*a1(MD_LIFE),L + + TBL_OBJ rname + move a8,*a1(MD_NAME),L + + TBL_OBJ rframec + move a8,*a1(MD_LBAK),L + + TBL_OBJ rcombo + move a8,*a1(MD_COMBO),L + clr a8 ;initialize the combo meter + move a8,*a1(MD_COMBO_SIZE) + + ;create the static (no-handle) objects + TBL_OBJ lframe + TBL_OBJ lframeb + + TBL_OBJ rframe + TBL_OBJ rframeb + + callr do_win_streaks + + PULL a8,a9 + + ;wire up the meters + clr a0 + move a8,a1 + callr rewire_meter + movk 1,a0 + move a9,a1 + callr rewire_meter + + CREATE ANNC_PID,announce_match + + movk 1,a0 + move a0,*a13(P1CNTR) + move a0,*a13(P2CNTR) + clr a0 + move a0,*a13(P1STATE) + move a0,*a13(P2STATE) + +#main_loop +;Update all the life data + clr a0 + +#maint_loop + MOVE @WHICH_SCREEN,A1,L + CMPI DUMRETS,A1 + JRNE JUST_DISPLAY_THEM + callr inc_life + inc a0 + cmpi NUM_WRES,a0 + jrne #maint_loop + +JUST_DISPLAY_THEM +;Update the meters + clr a0 + callr update_meter + movk 1,a0 + callr update_meter + +;Blink CPU controlled name with insert coins/press start + movi meter_data,a1 + move @PSTATUS,a0 + btst 0,a0 + jrnz #p2 +;Plyr 1 is drone + move *a13(P1CNTR),a0 + dec a0 + move a0,*a13(P1CNTR) + jrnz #p2 + move *a13(P1STATE),a0 + xori 1,a0 + move a0,*a13(P1STATE) + jrz #doname + +;Do correct coin message + + movi 120,a0 + move a0,*a13(P1CNTR) + + move *a1(MD_NAME),a8,L + movi WF_START,a0 +;Display the insert coin/press start message + calla CR_STRTP + jrhs #enough_money + movi WF_INSERT,a0 +#enough_money + calla civanic + jruc #p2 +#doname + movi 60,a0 + move a0,*a13(P1CNTR) + + move *a1(MD_LINK),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(WRESTLERNUM),a0 + + X32 a0 + addi name_tbl,a0 + move *a0,a0,L +;Change the name + move *a1(MD_NAME),a8,L + calla civanic + +#p2 + movi meter_data,a1 + addi MD_SIZE,a1 + move @PSTATUS,a0 + btst 1,a0 + jrnz #ok + +;Plyr 2 is drone + move *a13(P2CNTR),a0 + dec a0 + move a0,*a13(P2CNTR) + jrnz #ok + move *a13(P2STATE),a0 + xori 1,a0 + move a0,*a13(P2STATE) + jrz #doname2 + +;Do correct coin message + + movi 120,a0 + move a0,*a13(P2CNTR) + + move *a1(MD_NAME),a8,L + movi WF_START,a0 +;Display the insert coin/press start message + calla CR_STRTP + jrhs #enough_money + movi WF_INSERT,a0 +#enough_money2 + calla civanic + jruc #ok +#doname2 + movi 60,a0 + move a0,*a13(P2CNTR) + + move *a1(MD_LINK),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(WRESTLERNUM),a0 + + X32 a0 + addi name_tbl,a0 + move *a0,a0,L +;Change the name + move *a1(MD_NAME),a8,L + calla civanic + +#ok + SLEEPK 1 + jruc #main_loop + +#******** +* +* Meter objects and their positions +* + + +lbar_x .equ 11 +rbar_x .equ 390 + +lcombo_x .equ 181-45 +rcombo_x .equ 220+45 + +lname_x .equ 97 +rname_x .equ 303 + +bar_y .equ 20 +combo_y .equ bar_y+18 + +name_y .equ 13 + +bak_z .equ 200 +bar_z .equ 202 +frame_z .equ 201 +name_z .equ 203 + + +lcombo .word lcombo_x,combo_y,name_z ;X, Y, Z + .long SUPER_0 + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +rcombo .word rcombo_x,combo_y,name_z ;X, Y, Z + .long SUPER_0 + .word DMAWNZ|M_FLIPH|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +lframe .word lbar_x,bar_y,frame_z ;X, Y, Z + .long PWREMPTY + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + + +rframe .word rbar_x,bar_y,frame_z ;X, Y, Z + .long PWREMPTY + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + + +lframeb .word lbar_x,bar_y,frame_z ;X, Y, Z + .long LBAR_GENB ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +rframeb .word rbar_x,bar_y,frame_z ;X, Y, Z + .long RBAR_GENB ;IMG + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + + +lframec .word lbar_x,bar_y,bak_z ;X, Y, Z + .long LBAR_GENC ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +rframec .word rbar_x,bar_y,bak_z ;X, Y, Z + .long LBAR_GENC ;IMG + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +lwin .word 11,22h,name_z ;X, Y, Z + .long BWINBOX ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +rwin .word 391,22h,name_z ;X, Y, Z + .long RWINBOX ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + + +lhlth1 .word lbar_x,bar_y,bar_z ;X, Y, Z + .long FGRN2YEL + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBLBAR ;OID + .long 0,0 ;XVEL, YVEL + .even + +rhlth1 .word rbar_x,bar_y,bar_z ;X, Y, Z + .long FGRN2YEL + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;CTRL + .word CLSNEUT|TYPNEUT|SUBLBAR ;OID + .long 0,0 ;XVEL, YVEL + .even + +* +* name data +* + +lname .word lname_x,name_y,name_z ;X, Y, Z + .long NAM_BRT ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBLBAR ;OID + .long 0,0 ;XVEL, YVEL + .even + +rname .word rname_x,name_y,name_z ;X, Y, Z + .long NAM_RZR ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBLBAR ;OID + .long 0,0 ;XVEL, YVEL + .even + +;; A0 = PLAYER +; SUBR REWIRE_COMBO_METER +; MOVE *A13(PLYRNUM),A0 +; CMPI 2,A0 +; JRLT WE_SET_RIGHT_PLYRNUM +; MOVE @PSTATUS,A0 +; DEC A0 +; NOT A0 +; ANDI 1,A0 +;WE_SET_RIGHT_PLYRNUM +; PUSH A0 +; ADDI FLASH_COMBO_PID,A0 +; MOVI -1,A1 +; CALLA KILALL +; PULL A0 +; movi MD_SIZE,a1 +; mpyu a0,a1 +; addi meter_data,a1 +; CLR A14 +; MOVE A14,*A1(MD_COMBO_SIZE) +; MOVE *A1(MD_COMBO),A8,L +; MOVE A0,A0 +; JRZ NO_NEED_TO_SET_XFLIP +; MOVI M_FLIPH,A14 +;NO_NEED_TO_SET_XFLIP +; MOVI SUPER_P,A0 +; CALLA pal_getf +; MOVE A0,*A8(OPAL) +; +; MOVI SUPER_0,A0 +; MOVE *A0(ICTRL),A1 +; OR A14,A1 +; ORI 8000H|DMAWNZ,A1 +; MOVE A1,*A8(OCTRL) +; move *a0(IANIOFF),*A8(ODOFF),L +; move *a0(ISAG),*a8(OSAG),L +; move *a0(0),*a8(OSIZE),L +; RETS + +FLASH_COMBO + CREATE0 DO_COMBO_SOUND + + MOVI COMBO_P,A0 + CALLA pal_getf + MOVE A0,*A8(OPAL) + MOVE *A8(OCTRL),A1 + ANDNI M_FLIPH,A1 + MOVE A1,*A8(OCTRL) +DO_COMBO_FLASH_AGAIN + MOVI COMBO_FLASH_ANIM,A1 + callr setup_back_anim + JSRP ANIM_CROWD + SLEEP 10 + JRUC DO_COMBO_FLASH_AGAIN + +DO_COMBO_SOUND + SLEEP 25 + MOVI 3,A0 + CALLA triple_sound + DIE + +CANI_END equ 2 + 8000H + +COMBO_FLASH_ANIM + WL 2,COMBO_01 + WL 2,COMBO_02 + WL 2,COMBO_03 + WL 2,COMBO_04 + WL 2,COMBO_05 + WL 2,COMBO_06 + WL 2,COMBO_07 + WL 2,COMBO_08 + WL 2,COMBO_09 + WL 2,COMBO_10 + .WORD CANI_END + + SUBR CHECK_COMBO_GO + MOVE *A8(PLYRNUM),A14 + CMPI 2,A14 + JRLT WE_SET_NUMBER_RIGHT + MOVE @PSTATUS,A14 + DEC A14 + NOT A14 + ANDI 1,A14 +WE_SET_NUMBER_RIGHT + movi MD_SIZE,a1 + mpyu a14,a1 + addi meter_data,a1 + MOVE *A1(MD_COMBO_SIZE),a14 + cmpi 16,a14 + rets + + +;A7 = BIT TO SET IN PLAYER HISTORY +;A5 = FIRST TIME FOR MOVE +;A6 = MOVE REPEAT + SUBR ADD_TO_COMBO_COUNT + MOVE A7,A2 + MOVE A6,A3 + MOVE *a13(COMBO_START),A1 + AND A1,A2 + JRNZ ALREADY_ADDED_ONCE + MOVE A5,A3 + MOVE *a13(COMBO_START),A1 + OR A7,A1 + MOVE A1,*A13(COMBO_START) +ALREADY_ADDED_ONCE + MOVE *A13(PLYRNUM),A1 + CMPI 2,A1 + JRLT WE_SET_ON_PLAYER_NUMBER + MOVE @PSTATUS,A1 + DEC A1 + NOT A1 + ANDI 1,A1 +WE_SET_ON_PLAYER_NUMBER + movi MD_SIZE,a9 + mpyu a1,a9 + addi meter_data,a9 + MOVE *A9(MD_COMBO),A8,L + MOVE *A9(MD_COMBO_SIZE),A2 + ADD A3,A2 + MOVE A2,*A9(MD_COMBO_SIZE) + CMPI 16,A2 + JRGE SET_FLASHING_COMBO_GOING + SLL 5,A2 + ADDI WHICH_SIZE_BAR,A2 + MOVE *A2,A0,L + move *a0(IANIOFF),*A8(ODOFF),L + move *a0(ISAG),*a8(OSAG),L + RETS +SET_FLASHING_COMBO_GOING + PUSH A1 + ADDI FLASH_COMBO_PID,A1 + MOVE A1,A0 + MOVI -1,A1 + CALLA EXISTP + JRNZ COMBO_ALREADY_STARTED + PULL A0 + MOVI FLASH_COMBO_PID,A1 + ADD A0,A1 + MOVI FLASH_COMBO,A7 + CALLA GETPRC + RETS +COMBO_ALREADY_STARTED + PULL A0 + RETS + +WHICH_SIZE_BAR + .LONG SUPER_0 + .LONG SUPER_1 + .LONG SUPER_2 + .LONG SUPER_3 + .LONG SUPER_4 + .LONG SUPER_5 + .LONG SUPER_6 + .LONG SUPER_7 + .LONG SUPER_8 + .LONG SUPER_9 + .LONG SUPER_10 + .LONG SUPER_11 + .LONG SUPER_12 + .LONG SUPER_13 + .LONG SUPER_14 + .LONG SUPER_15 + .LONG SUPER_16 + + + + +WHICH_NAME + MOVE A9,A10 + NOT A9 + ANDI 1,A9 + MOVE A10,A1 + CALLA get_process_ptr + MOVE *A0(CLOSEST_NUM),A11 +WHICH_NAME_DIS + MOVI REWIRE_PID,A0 + MOVI -1,A1 + CALLA EXISTP + JRNZ NO_REWIRE + MOVE A10,A1 + CALLA get_process_ptr + MOVE *A0(CLOSEST_NUM),A1 + CMP A11,A1 + JREQ NO_REWIRE + MOVE A1,A11 + MOVE A9,A0 + CALLR rewire_meter + CREATE REWIRE_PID,WAIT_ON_REWIRE +NO_REWIRE + SLOOP 1,WHICH_NAME_DIS + +WAIT_ON_REWIRE + SLEEP 20 + DIE + +KILL_REWIRE_DUMMY + MMTM SP,A0,A1,A7 + MOVI REWIRE_PID,A0 + MOVI -1,A1 + CALLA KILALL + MMFM SP,A0,A1,A7 + RETS + +#***************************************************************************** +* 'rewires' a meter display for a different wrestler +* >a0 = display(0 or 1), >a1= playernum (0 to NUM_WRES-1) + + SUBR rewire_meter + + ;set the pointers + ;point a5 at the MD_???? block for the display + movi MD_SIZE,a5 + mpyu a0,a5 + addi meter_data,a5 + + ;point a6 at the PLT_???? block for PLYRNUM + movi PLT_SIZE,a3 + mpyu a1,a3 + movi life_data,a6 + add a3,a6 + + ;set MD_LINK + move a1,*a5(MD_LINK) + + ;point a7 at PLYRNUM's process + move a1,a7 + X32 a7 + addi process_ptrs,a7 + move *a7,a7,L + + ;change the name + MOVE *A6(PLT_PAL),A2 + MOVE *A5(MD_LIFE),A8,L + MOVE A2,*A8(OPAL),L + move *a5(MD_NAME),a8,L + move *a7(WRESTLERNUM),a1 + X32 a1 + addi name_tbl,a1 + move *a1,a0,L + calla civanic + + rets + +name_tbl + .long NAM_BRT,NAM_RZR,NAM_UND,NAM_YOK,NAM_SHN + .long NAM_BAM,NAM_DNK,NAM_DNK,NAM_LEX,NAM_LEX + +#***************************************************************************** +* Updates (resizes) the bars on a meter display. +* >a0 = meter (0 or 1) + + SUBRP update_meter + + ;aim a1 at the MD struct + movi MD_SIZE,a1 + mpyu a0,a1 + addi meter_data,a1 + + ;aim a3 at the PLT struct + move *a1(MD_LINK),a2 + movi PLT_SIZE,a3 + mpyu a2,a3 + addi life_data,a3 + + ;set the life bar + move *a1(MD_LIFE),a8,L + move *a3(PLT_CLIFE),a14 + neg a14 + addi LIFE_MAX,a14 ;a14 is pixels to hide + + move a14,*a8(OFSET) + + JRZ #NOT_TO_WORRY + + MOVE @WHICH_SCREEN,A1,L + CMPI DUMRETS,A1 + JREQ #NOT_TO_WORRY + MOVE *A8(OFLAGS),A1 + ORI M_NODISP,A1 + MOVE A1,*A8(OFLAGS) + RETS + +#NOT_TO_WORRY + MOVE *A8(OFLAGS),A1 + ANDI 0FFFFH-M_NODISP,A1 + MOVE A1,*A8(OFLAGS) + RETS + + +; movi 5,a7 +; mpyu a14,a7 +; move *a8(OIMG),a14,L +; move *a14(ISAG),a14,L +; add a14,a7 +; move a7,*a8(OSAG),L + + rets + +#***************************************************************************** +* Returns the remaining health for a player +* >a1 = PLYRNUM +* a0 = amount to add to player's health total +* >a1 = PLYRNUM +* >a10= attacker's process ptr + + SUBR adjust_health + + PUSH a1,a8,a10,a13 + + MOVE A0,A0 + JRZ NO_MULTIPLIER + + ;make sure a10 is valid + move *a13(WHOHITME),a14,L + cmp a14,a10 + jrne NO_MULTIPLIER + + MOVE *A10(COMBO_COUNT),A14 + JRZ DO_NORMAL_ADJUST_CHECK + SRA 1,A0 + CLR A3 + MOVE A3,@DAM_MULT + JRUC NO_MULTIPLIER + +DO_NORMAL_ADJUST_CHECK + + MOVE @DAM_MULT,A14 + JRZ NO_MULTIPLIER +;THIS CODE IS A BIT OF A HACK, BUT NEVER MIND +;MULT 2= 1.5 x HIT DAMAGE +;MULT 3= 2.0 x HIT DAMAGE +;MULT 4 UPWARDS = 2.5 x HIT DAMAGE + MOVE A0,A3 + SLL 1,A3 + CMPI 3,A14 + JREQ MULT_SET + MOVE A0,A10 + SRA 1,A10 + SUB A10,A3 + CMPI 2,A14 + JREQ MULT_SET + ADD A0,A3 +MULT_SET + MOVE A3,A0 + CLR A3 + MOVE A3,@DAM_MULT +NO_MULTIPLIER + + move a1,a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a13,L + + move *a13(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrnz #norm + +;Opponent already dead + + jruc #notdead + +#norm + + move a1,a10 + + calla log_damage + + callr update_secret_display + + movi PLT_SIZE,a14 + mpyu a14,a1 + addi life_data,a1 + move *a1(PLT_LIFE),a14 + + ;if a14 > 20 and a14+a0 <= 20, fire off a danger process. + PUSH a0,a1,a14 + cmpi 30,a14 + jrle #no_danger + move a14,a1 + add a0,a1 + cmpi 30,a1 + jrgt #no_danger + + CREATE0 flash_obj + +#no_danger + PULL a0,a1,a14 + add a14,a0 + jrn #toolow + jrz #toolow + + cmpi LIFE_MAX,a0 + jrle #done + + movi LIFE_MAX,a0 + jruc #done + +#toolow + clr a0 + +;MJT Start + .if DEBUG + + ;if he's out of life and we're in debug mode, fill him up. + move @fight_debug,a14 + jrz #done + movi LIFE_MAX,a0 + .endif +;MJT End + +#done + move a0,*a1(PLT_LIFE) + +; PULL a1,a10 + + move a10,a1 + + callr get_health + + +;Temp... Take this jrnz out and one blow kills opponent! + jrnz #notdead + + +;Is combo mode on for this player? + move *a13(WHOHITME),a8,L + callr CHECK_COMBO_GO + jrlt #ok +;Am I in the middle of a combo? + move *a8(COMBO_COUNT),a0 +;MJT Start + jrz #ok +;Give him some life back + move *a13(PLYRNUM),a1 + movi PLT_SIZE,a14 + mpyu a14,a1 + addi life_data,a1 + movk 1,a14 + move a14,*a1(PLT_LIFE) + movk 1,a0 + move a0,*a13(I_WILL_DIE) + jruc #notdead +#ok + + +;If this is the match winning blow, then keep opponent standing in finish him +;mode. Otherwise, knock him down to the ground and move onto the next round. + +;Finish this someday! +;We need to decide what to do in finish him situations. + + +;Player has just lost his first round, knock him down onto +;his butt. + + + + + + +;Add speech call "Pin him!" + +;MJT Start +; WRSND W_DOINK,FLYKICK_L1,FLYKICK_L2 +;MJT End + + + + + + + clr a0 + move a0,*a13(ROLL_POS) + +;Lookup table based on wrestler type + + move *a13(WHOHITME),a10,L ;* wrestler process + move *a10(ATTACK_MODE),a0 + cmpi AMODE_BLBOWDROP,a0 + jrz #skip0 + cmpi AMODE_BSTOMP,a0 + jrz #skip0 + cmpi AMODE_BUTTSTOMP,a0 + jrz #skip0 + + move *a13(WRESTLERNUM),a0 + sll 5,a0 + + move *a13(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrz #grnd + cmpi MODE_ONGROUND,a14 + jrnz #fall + +#grnd addi #convulse_t,a0 + move *a0,a0,L + + calla change_anim1a + + SETMODE DEAD +#skip0 + calla wres_collis_off + + PULL a1,a8,a10,a13 + + setc + rets + +#fall +;Check plyr mode, attempt a death fall back +;Otherewise, just set mode dead + cmpi MODE_NORMAL,a14 + jrz #fallbk + cmpi MODE_RUNNING,a14 + jrz #fallbk + cmpi MODE_INAIR,a14 + jrz #fallbk + cmpi MODE_INAIR2,a14 + jrz #fallbk + cmpi MODE_BOUNCING,a14 + jrz #fallbk + cmpi MODE_ONTURNBKL,a14 + jrz #fallbk + cmpi MODE_BLOCK,a14 + jrz #fallbk + cmpi MODE_DIZZY,a14 + jrz #fallbk + cmpi MODE_CLIMBTURNBKL,a14 + jrz #fallbk + cmpi MODE_HEADHOLD,a14 + jrz #fallbk + cmpi MODE_HEADHELD,a14 + jrz #skip + +;Puppet mode? Others? +;How best to deal with this? + + + SETMODE DEAD +#skip calla wres_collis_off +;MJT End + + PULL a1,a8,a10,a13 + + setc + rets + + +#fallbk addi #fallbacks_t,a0 + move *a0,a0,L + + calla change_anim1a + + movi [2,0],a2 + move *a13(OBJ_XPOSINT),a1 + move *a13(WHOHITME),a0,L ;* wrestler process + +;MJT Start +; move *a0(OBJ_XVEL),a14,L +; sra 1,a14 ;x_vel after collis +; neg a14 +; move a14,*a0(OBJ_XVEL),L +; movi 60000h,a14 ;4 +; move a14,*a0(OBJ_YVEL),L +;MJT End + + + move *a0(OBJ_XPOSINT),a0 + cmp a0,a1 ;offx - defx + jrgt #fall_right ;attacker on left + movi [-2,0],a2 + + +#fall_right + move a2,*a13(OBJ_XVEL),L + + calla wres_collis_off + + SETMODE DEAD + + PULL a1,a8,a10,a13 + + setc + rets + + +;#finishhim +; +; move *a13(WRESTLERNUM),a0 +; sll 5,a0 +; addi #dizzydead_t,a0 +; move *a0,a0,L +; +; calla change_anim1a +; +; PULL a1,a10,a13 +; +; setc +; rets + +#notdead + PULL a1,a8,a10,a13 + + clrc + rets + +#fallbacks_t +#fall_back + .ref hrt_fall_back_anim ;0 Bret Hart + .ref rzr_fall_back_anim ;1 Razor Ramon + .ref und_fall_back_anim ;2 Undertaker + .ref yok_fall_back_anim ;3 Yokozuna + .ref shn_fall_back_anim ;4 Shawn Michaels + .ref bam_fall_back_anim ;5 Bam Bam + .ref dnk_fall_back_anim ;6 Doink + .ref lex_fall_back_anim ;8 Lex Luger + + .long hrt_fall_back_anim ;0 Bret Hart + .long rzr_fall_back_anim ;1 Razor Ramon + .long und_fall_back_anim ;2 Undertaker + .long yok_fall_back_anim ;3 Yokozuna + .long shn_fall_back_anim ;4 Shawn Michaels + .long bam_fall_back_anim ;5 Bam Bam + .long dnk_fall_back_anim ;6 Doink + .long 0 ;7 spare + .long lex_fall_back_anim ;8 Lex Luger + .long 0 ;9 Referee + + + .ref dnk_hitonground_anim +#convulse_t +#hitonground + .ref hrt_hitonground_anim ;0 Bret Hart + .ref rzr_hitonground_anim ;1 Razor Ramon + .ref und_hitonground_anim ;2 Undertaker + .ref yok_hitonground_anim ;3 Yokozuna + .ref shn_hitonground_anim ;4 Shawn Michaels + .ref bam_hitonground_anim ;5 Bam Bam + .ref dnk_hitonground_anim ;6 Doink + .ref lex_hitonground_anim ;8 Lex Luger + + .long hrt_hitonground_anim ;0 Bret Hart + .long rzr_hitonground_anim ;1 Razor Ramon + .long und_hitonground_anim ;2 Undertaker + .long yok_hitonground_anim ;3 Yokozuna + .long shn_hitonground_anim ;4 Shawn Michaels + .long bam_hitonground_anim ;5 Bam Bam + .long dnk_hitonground_anim ;6 Doink + .long 0 ;7 spare + .long lex_hitonground_anim ;8 Lex Luger + .long 0 ;9 Referee + +;Fix this some day +;MJT Start +;#dizzydead_t +; .long dnk_head_dead_dizzy_anim ;0 Bret Hart +; .long dnk_head_dead_dizzy_anim ;1 Razor Ramon +; .long dnk_head_dead_dizzy_anim ;2 Undertaker +; .long dnk_head_dead_dizzy_anim ;3 Yokozuna +; .long dnk_head_dead_dizzy_anim ;4 Shawn Michaels +; .long dnk_head_dead_dizzy_anim ;5 Bam Bam +; .long dnk_head_dead_dizzy_anim ;6 Doink +; .long dnk_head_dead_dizzy_anim ;7 Adam Bomb +; .long dnk_head_dead_dizzy_anim ;8 Lex Luger +; .long dnk_head_dead_dizzy_anim ;9 Referee + +;MJT End + +#***************************************************************************** +* Create the credits display at the top of the screen +* + + SUBR start_credbox + + ;draw the panel + TBL_OBJ #plate + + callr update_credit_msg + rets + + +*************************************** +* Display credit info - Gets called from coin routines. +* +* Trashes a0-a7 + + SUBR update_credit_msg + + PUSH a8,a9,a10 + +;Only turn on these messages if during gameplay, or player select! + + .ref SHOW_CRD_FLAG + move @SHOW_CRD_FLAG,a0 + jrnz #cont0 + + move @GAMSTATE,a0 + cmpi INSELECT,a0 + jrz #cont + + CMPI INPREGAME,A0 + JREQ #cont + + subk INGAME,a0 + jrne #x + +#cont0 + +;When coins are entered, and the game is being played, tell the meter +;code to display approproiate coinin message. + +;Get meter process info + movi METER_PID,a0 + clr a1 + not a1 + calla EXISTP + jrz #cont + + movk 1,a1 + move a1,*a0(P1CNTR) + move a1,*a0(P2CNTR) + clr a1 + move a1,*a0(P1STATE) + move a1,*a0(P2STATE) + +#cont + + movi CLSDEAD|CREDITID,a0 + calla obj_del1c ;kill credit/qrtr imgs + + movi freeply,a10 + + movk ADJFREPL,a0 + CALLA GET_ADJ ;SEE IF FREEPLAY......(Z BIT CLEAR IF SO!) + jrnz #freep + + movi credit,a10 + + calla GET_CREDITS + calla BINBCD + + move a0,a9 + sll 32-4,a0 + srl 32-4-5,a0 ;*32 + addi #numfont,a0 + move *a0,a2,L + + movi [216,0],a0 + movi [6,0],a1 +; movi 1006,a3 ;Z + movi 201,a3 ;Z + movi DMAWNZ|M_SCRNREL,a4 + movi CLSDEAD|CREDITID,a5 + clr a6 + clr a7 + calla BEGINOBJ + + srl 4,a9 + sll 32-4,a9 + srl 32-4-5,a9 ;*32 + addi #numfont,a9 + move *a9,a2,L + + movi [211,0],a0 + movi [6,0],a1 + calla BEGINOBJ + +#freep movi [179,0],a0 + movi [6,0],a1 + move a10,a2 +; movi 1006,a3 ;Z + movi 201,a3 ;Z + movi DMAWNZ|M_SCRNREL,a4 + movi CLSDEAD|CREDITID,a5 + clr a6 + clr a7 + calla BEGINOBJ + +#x PULL a8,a9,a10 + + rets + +*************************************** +* config data +* + +#plate .word 176,4,200 ;X, Y, Z +;#plate .word 176,4,1006 ;X, Y, Z + .long crplate ;IMG + .word DMAWNZ|M_SCRNREL ;CTRL + .word CLSDEAD ;OID + .long 0,0 ;XVEL, YVEL + .even + +#numfont + .long font60 + .long font61 + .long font62 + .long font63 + .long font64 + .long font65 + .long font66 + .long font67 + .long font68 + .long font69 + +#***************************************************************************** +* Moves PLT_CLIFE toward PLT_LIFE if it isn't already there. +* >a0 = PLYRNUM + +#lifebar_deltavee equ 2 ;pixels per tick of motion + + SUBRP inc_life + + ;aim a1 at PLT block + movi PLT_SIZE,a1 + mpyu a0,a1 + addi life_data,a1 + + ;check the values + move *a1(PLT_LIFE),a2 + move *a1(PLT_CLIFE),a3 + + cmp a2,a3 + jrz #done + + ;CLIFE is lagging. move it toward LIFE + jrgt #shrink + + ;CLIFE needs to grow + addi #lifebar_deltavee,a3 + cmp a3,a2 + jruc #set + +#shrink + subi #lifebar_deltavee,a3 + cmp a2,a3 +#set + jrge #inrange + + ;overshot it + move a2,a3 +#inrange + move a3,*a1(PLT_CLIFE) + +#done + rets + +#***************************************************************************** +* Secret display of damage amount +* + + SUBR display_damage + + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + move @secret_damage,a2 + jrz #out + + + cmpi 2,a2 + jrz #p2 + +;Display P1 damage meter + + movi damage_imgs,a9 + + movi [0bh,0],a0 + movi [0e8h,0],a1 ;21h + movi damage,a2 + movi 1006,a3 ;Z + movi DMAWNZ|M_SCRNREL,a4 + movi CLSNEUT|TYPNEUT|SUBMES1,a5 + clr a6 + clr a7 + movi DMG_P,b0 + calla BEGINOBJP + + +;Now draw both digits for player 1 + + movi [4fh,0],a0 + movi [0ech,0],a1 + movi SGMD8_0,a2 + movi 1007,a3 ;Z + movi SGMD8YEL2,b0 + calla BEGINOBJP + move a8,*a9+,L + + movi [48h,0],a0 + movi [0ech,0],a1 + movi SGMD8_0,a2 + movi 1007,a3 ;Z + movi SGMD8YEL2,b0 + calla BEGINOBJP + move a8,*a9+,L + + move @secret_damage,a2 + cmpi 1,a2 + jrz #out + +;Also do p2 + +#p2 + +;Display p2 damage meter + + movi [135h,0],a0 + movi [0e8h,0],a1 + movi damage,a2 + movi 1006,a3 ;Z + movi DMAWNZ|M_SCRNREL,a4 + movi CLSNEUT|TYPNEUT|SUBMES1,a5 + clr a6 + clr a7 + movi DMG_P,b0 + calla BEGINOBJP + +;Now draw both digits for player 2 + + movi [178h,0],a0 + movi [0ech,0],a1 + movi SGMD8_0,a2 + movi 1007,a3 ;Z + movi SGMD8YEL2,b0 + calla BEGINOBJP + move a8,*a9+,L + + movi [171h,0],a0 + movi [0ech,0],a1 + movi SGMD8_0,a2 + movi 1007,a3 ;Z + movi SGMD8YEL2,b0 + calla BEGINOBJP + move a8,*a9+,L + +#out + PULL a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + + rets + +#***************************************************************************** +* Update secret display of damage amount +* >a0 = amount to display +* >a1 = PLYRNUM + + SUBRP update_secret_display + + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + move @secret_damage,a2 + jrz #out + + neg a0 + + move a1,a1 + jrz #p2 +;Plyr 1 + + btst 0,a2 + jrz #out + + + calla BINBCD + + move a0,a9 + sll 32-4,a0 + srl 32-4-5,a0 ;*32 + addi #numfont,a0 + move *a0,a1,L + move @damage_imgs,a8,L + move *a8(OCTRL),a4 + calla ANI + + srl 4,a9 + sll 32-4,a9 + srl 32-4-5,a9 ;*32 + addi #numfont,a9 + move *a9,a1,L + move @damage_imgs+32,a8,L + move *a8(OCTRL),a4 + calla ANI + jruc #out + +#p2 + + btst 1,a2 + jrz #out + + calla BINBCD + + move a0,a9 + sll 32-4,a0 + srl 32-4-5,a0 ;*32 + addi #numfont,a0 + move *a0,a1,L + move @damage_imgs+64,a8,L + move *a8(OCTRL),a4 + calla ANI + + srl 4,a9 + sll 32-4,a9 + srl 32-4-5,a9 ;*32 + addi #numfont,a9 + move *a9,a1,L + move @damage_imgs+96,a8,L + move *a8(OCTRL),a4 + calla ANI +#out + PULL a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + + rets + + +#numfont + .long SGMD8_0 + .long SGMD8_1 + .long SGMD8_2 + .long SGMD8_3 + .long SGMD8_4 + .long SGMD8_5 + .long SGMD8_6 + .long SGMD8_7 + .long SGMD8_8 + .long SGMD8_9 + +#***************************************************************************** +* Flash the background of the life meter for the current player. +* >a10 = plyrnum + +danger_snd equ 0b9h + + SUBRP flash_obj + + ;find the bar obj + movi meter_data,a1 + move *a1(MD_LINK),a2 + cmp a10,a2 + jreq #found + addi MD_SIZE,a1 + move *a1(MD_LINK),a2 + cmp a10,a2 + jrne #not_displayed +#found + move *a1(MD_LBAK),a8,L + + movi danger_snd,a0 + calla triple_sound + + movi 26,a3 + calla SNDSND + CLR A1 + MOVI 225,A0 + CALLA SET_LOWER_VOL + + movi TSEC&0FFFEh,a10 ;make sure it's an even number + movi 0808h,a0 + move a0,*a8(OCONST),W +#loop + move *a8(OCTRL),a0,W + xori M_CONST|M_WRNONZ,a0 + move a0,*a8(OCTRL),W + SLEEPK 1 + dsj a10,#loop + +#not_displayed + DIE + + + +****************************************************************************** + +do_win_streaks + + move @p1winstreak,a0 + jrz #p2 + + cmpi 99,a0 + jrls #maxok + movi 99,a0 +#maxok + calla BINBCD + + move a0,a9 + sll 32-4,a0 + srl 32-4-5,a0 ;*32 + addi #f_t,a0 + move *a0,a2,L + + movi [3dh,0],a0 + movi [23h,0],a1 + movi 1000h|name_z,a3 ;Z + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJ + +; move a8,a10 + + srl 4,a9 + sll 32-4,a9 + srl 32-4-5,a9 ;*32 + addi #f_t,a9 + move *a9,a2,L + movi [36h,0],a0 + movi [23h,0],a1 + calla BEGINOBJ + + TBL_OBJ lwin + +#p2 move @p2winstreak,a0 + jrz #x + + cmpi 99,a0 + jrls #maxok2 + movi 99,a0 +#maxok2 + calla BINBCD + + move a0,a9 + sll 32-4,a0 + srl 32-4-5,a0 ;*32 + addi #f_t,a0 + move *a0,a2,L + + movi [175h,0],a0 + movi [23h,0],a1 + movi 1000h|name_z,a3 ;Z + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJ + move a8,a10 + + srl 4,a9 + sll 32-4,a9 + srl 32-4-5,a9 ;*32 + addi #f_t,a9 + move *a9,a2,L + movi [16eh,0],a0 + movi [23h,0],a1 + calla BEGINOBJ + + TBL_OBJ rwin + +#x + rets + +#f_t + .long WFONT_0,WFONT_1,WFONT_2,WFONT_3,WFONT_4 + .long WFONT_5,WFONT_6,WFONT_7,WFONT_8,WFONT_9 + + + .ref match_cnt + +#***************************************************************************** +* + + STRUCTPD + LONG BLINK_PROC + +announce_match + + + MOVI CROWD_CHEER_0,A3 + CALLA SNDSND + + clr a0 + move a0,*a13(BLINK_PROC),L + + move @PSTATUS,a0 + jrnz #noamode + clr a0 + move a0,@HALT + DIE + +#noamode + + .if DEBUG + .ref skip_select + move @skip_select,a0 + jrz #noskp + clr a0 + move a0,@HALT + DIE +#noskp + .endif + + + SLEEP 28h + + movi ram_lst,a11 + clr a0 + movi 39,a1 +#lp move a0,*a11+,L + dsjs a1,#lp + movi ram_lst,a11 + + movi [252h,0],a0 ;x pos + movi [3eh,0],a1 ;y pos + movi MTCHPLT,a2 + movi MPLTPRPP,b0 + movi 1800h,a3 ;z pos + callr #begin_obj + + movi [252h,0],a0 ;x pos + movi [3eh,0],a1 ;y pos + movi MNMEPLT,a2 + movi MPLTPRPP,b0 + movi 1800h,a3 ;z pos + callr #begin_obj + + movi [574,0],a0 ;x pos + movi [4Fh,0],a1 ;y pos + movi MATCH,a2 + movi WGFS_W_P,b0 + movi 1801h,a3 ;z pos + callr #begin_obj + MOVE A8,B3 + CLR B4 + CLR B5 + CLR B6 + + move @match_cnt,a0 + + cmpi 999,a0 + jrls #maxok + movi 999,a0 +#maxok + calla BINBCD + + move a0,a9 + move a0,a10 + sll 32-4,a0 + srl 32-4-5,a0 ;*32 + addi #f_t,a0 + move *a0,a2,L + + movi [252h,0],a0 ;x pos + movi [43h,0],a1 ;y pos + movi WGFS_W_P,b0 + movi 1802h,a3 ;z pos + callr #begin_obj + MOVE A8,B4 + + srl 4,a9 + sll 32-4,a9 + srl 32-4-5,a9 ;*32 + move a9,a9 + jrz #ok2 + + addi #f_t,a9 + move *a9,a2,L + movi [252h,0],a0 ;x pos + movi [43h,0],a1 ;y pos + movi WGFS_W_P,b0 + movi 1802h,a3 ;z pos + callr #begin_obj + MOVE A8,B5 + + srl 8,a10 + sll 32-4,a10 + srl 32-4-5,a10 ;*32 + move a10,a10 + jrz #ok2 + + addi #f_t,a10 + move *a10,a2,L + movi [252h,0],a0 ;x pos + movi [43h,0],a1 ;y pos + movi WGFS_W_P,b0 + movi 1802h,a3 ;z pos + callr #begin_obj + MOVE A8,B6 + +#ok2 + MOVE *B3(OSIZEX),B7 + ADDI 5,B7 + MOVE *B4(OSIZEX),B0 + ADD B0,B7 + ADDK 3,B7 + MOVE B5,B5 + JRZ NO_NEED_TO_ADD_TO_X + SUBK 3,B7 + MOVE *B5(OSIZEX),B0 + ADD B0,B7 + MOVE B6,B6 + JRZ NO_NEED_TO_ADD_TO_X + MOVE *B6(OSIZEX),B0 + ADD B0,B7 + +NO_NEED_TO_ADD_TO_X + SRL 1,B7 + MOVI 252H,B8 + SUB B7,B8 + MOVE B8,*B3(OXPOS) + ADDI 5,B8 + MOVE B5,B5 + JRNZ NO_EXTRA_SPACE + ADDK 3,B8 +NO_EXTRA_SPACE + + MOVE B6,B6 + JRZ NO_NEED_TO_ADD_TO_X2A + MOVE *B3(OSIZEX),B7 + ADD B7,B8 + MOVE B8,*B6(OXPOS) + JRUC X2A_ADDED + +NO_NEED_TO_ADD_TO_X2A + MOVE B3,B6 +X2A_ADDED + MOVE B5,B5 + JRZ NO_NEED_TO_ADD_TO_X2B + MOVE *B6(OSIZEX),B7 + ADD B7,B8 + MOVE B8,*B5(OXPOS) + JRUC X2B_ADDED + +NO_NEED_TO_ADD_TO_X2B + MOVE B3,B5 +X2B_ADDED + MOVE *B5(OSIZEX),B7 + ADD B7,B8 + MOVE B8,*B4(OXPOS) + +;Print the text on the little plate + +;This will be a table lookup which points to match type +;(Ex. Best 2 of 3, Intercontinental Championship, WWF Championship +;Lumberjack match, Tag Team Bout, This contest is for 1 fall!, etc.) + +;Make sure we have enough ram set aside for the largest +;message possible. (ram_lst) + + movi [253h,0],a0 ;x pos + movi [68h,0],a1 ;y pos + CLR A3 + movi WHICH_MATCH,a2 + SLL 5,A3 + ADD A3,A2 + MOVE *A2,A2,L + movi WSF_W_P,b0 + movi 1801h,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi CLSNEUT|TYPTEXT|SUBMES1,a5 + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJP + + +;Place all of the new plates & string characters onto the ram_lst that +;gets scrolled. + + movi OBJLST,a14 + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + movi CLSNEUT|TYPTEXT|SUBMES1,a2 +#lp2 + move *a14,a14,L + jrz #x + move *a14(OID),a1 + cmp a2,a1 + jrz #add + cmp a0,a1 + jrne #lp2 +#add move a14,*a11+,L + jruc #lp2 +#x + +;This will blink between red/white + CREATE0 blink_font + move a0,*a13(BLINK_PROC),L + +;Slide everthing onto screen + + movi >b6,a0 + calla triple_sound + + movi 30h,a10 +#onscr_loop + + SLEEPK 1 + + movi [200,0],a0 + callr #set_x + + dsj a10,#onscr_loop + + CREATE0 DO_ROUNDS + +;In middle + CREATE0 ring_bell + + SLEEP 20h + + movi 60h,a10 + .ref wait_on_butn + JSRP wait_on_butn + + movi >b6,a0 + calla triple_sound + + movi 23h,a10 + +#offscr_loop + + SLEEPK 1 + + movi [0feb0h,0],a0 + callr #set_x + + dsj a10,#offscr_loop + + move *a13(BLINK_PROC),a0,L + calla KILL + + clr a0 + move a0,@HALT + + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + calla obj_del1c ;delete text/plates + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ;delete text/plates + + DIE + +#f_t + .long WGSF22_0,WGSF22_1,WGSF22_2,WGSF22_3,WGSF22_4 + .long WGSF22_5,WGSF22_6,WGSF22_7,WGSF22_8,WGSF22_9 + +WHICH_MATCH + .LONG BESTOF3 + .LONG ROYRUM + .LONG ELIMMTCH + .LONG TAGTEAM + .LONG ONEFALL + .LONG LUMBMTCH + + + +#ln0a_setup + JAM_STR osgemd_ascii,6,0,247h,43h,BLUE,0 + +#ln0b_setup + JAM_STR osgemd_ascii,6,0,23fh,43h,BLUE,0 + +#ln1_setup + JAM_STR sgmd8_ascii,5,0,252h,80h-10,SGMD8WHT2,0 + +#ln2_setup + JAM_STR sgmd8_ascii,5,0,252h,8bh-10,SGMD8WHT2,0 + +#str_rounds + .string "ROUNDS",0 + .even + +blink_font + + SLEEPK 2 + + movi 20,a10 +#top + movi WSF_R_P,a0 + calla pal_getf + + movi ram_lst,a11 +#lp3 + move *a11+,a8,L + jrz #x2 + move *a8(OID),a14 + cmpi CLSNEUT|TYPTEXT|SUBMES1,a14 + jrnz #lp3 + move a0,*a8(OPAL) + jruc #lp3 + +#x2 SLEEPK 4 + + movi WSF_W_P,a0 + calla pal_getf + + movi ram_lst,a11 +#lp4 + move *a11+,a8,L + jrz #x3 + move *a8(OID),a14 + cmpi CLSNEUT|TYPTEXT|SUBMES1,a14 + jrnz #lp4 + move a0,*a8(OPAL) + jruc #lp4 + +#x3 SLEEPK 7 + + dsj a10,#top + +announcing_being_done + DIE + + + SUBR announce_rnd_winner + + movi ANNC_PID,a0 + clr a1 + not a1 + calla EXISTP + jrnz announcing_being_done + + MOVI CROWD_VICTORY_LOOP,A3 + CALLA SNDSND + + calla set_winner + X32 a3 + addi process_ptrs,a3 + move *a3,a10,L + + move @p1rounds,a0 + cmpi 2,a0 + jrz at_end + move @p2rounds,a0 + cmpi 2,a0 + jreq at_end + calla calc_match_time_1 + jruc timer_updated + +at_end + calla calc_match_time_2 + +timer_updated + +;a10=*proc of wrestler who just pinned opponent +; + SLEEP 30 + +;Place token on top of winner, then have it float up to the top of the screen + + movi 27,a3 + calla SNDSND + CLR A1 + MOVI 255,A0 + CALLA SET_LOWER_VOL + +; movi [200,0],a0 ;x pos +; movi [2fh,0],a1 ;y pos +; movi MTCHPLT,a2 +; movi MPLTPRPP,b0 +; movi 1800h,a3 ;z pos +; callr #begin_obj +; +; movi #ln_nm1_setup,a2 +; calla setup_message +; +; movi CLSNEUT|TYPTEXT|SUBMES1,a0 +; move a0,@mess_objid +; +; move *a10(WRESTLERNUM),a0 +; sll 5,a0 +; addi #ln1_t,a0 +; move *a0,a4,L +; calla print_string_C2 +; +; movi #ln_nm2_setup,a2 +; calla setup_message +; +; movi CLSNEUT|TYPTEXT|SUBMES1,a0 +; move a0,@mess_objid +; +;;Display who won & what round was won +; movi #rnd1,a4 +; move @current_round,a0 +; cmpi 1,a0 +; jrz #ok0 +; movi #rnd2,a4 +; cmpi 2,a0 +; jrnz #okz +;;This may be a match winner! +; move @p1rounds,a0 +; jrz #okz +; cmpi 2,a0 +; jrnz #ok0 +;#okz +;;Match winner +; movi #rnd3,a4 +;#ok0 calla print_string_C2 +; +;;This will blink between red/white +; SLEEPK 4 +; +; PUSH a8,a9 +; movi SGMD8RED2,a8 +; movi SGMD8WHT2,a9 + .ref blink_pals +; CREATE0 blink_pals +; PULL a8,a9 +; move a0,*a13(BLINK_PROC),L +; +; SLEEP 60 + + CALLA CALL_MATCH_OVER + + SLEEP 20 + + move @p1rounds,a0 + cmpi 2,a0 + jrz DO_WAIT + move @p2rounds,a0 + cmpi 2,a0 + jrnz WE_CAN_EXIT + +DO_WAIT + MOVI 2*TSEC,a9 +WAIT_HERE + SLEEPK 1 + calla get_all_buttons_cur2 + JRNZ WE_CAN_EXIT + DSJS A9,WAIT_HERE + +WE_CAN_EXIT + move @current_round,a9 + CMPI 1,A9 + JREQ SET_WHICH_ROUND + CMPI 3,A9 + JREQ SET_WHICH_ROUND + INC A9 + move @p1rounds,a0 + JRZ SET_WHICH_ROUND + CMPI 2,A0 + JREQ SET_WHICH_ROUND + DEC A9 +SET_WHICH_ROUND + DEC A9 + + MOVE *A10(PLYRNUM),A11 + CMPI 2,A11 + JRLT NO_PROBLEMS_HERE + CLR A11 + MOVE @PSTATUS,A0 + SRL 1,A0 + JRNC NO_PROBLEMS_HERE + INC A11 +NO_PROBLEMS_HERE + CREATE0 CREATE_END_ROUND_TOP + SLEEP 15 + CREATE0 CREATE_END_ROUND_BOT + SLEEP 40 + CREATE0 CREATE_END_ROUND_ICON + + CALLA CLEAR_SPEECH_REPEAT + + move @p1rounds,a0 + cmpi 2,a0 + jrz #end + move @p2rounds,a0 + cmpi 2,a0 + jrnz #not_end + +#end + clr a0 + move a0,@HALT + + MOVI 260,a9 +WAIT_HERE2 + SLEEPK 1 + calla get_all_buttons_cur2 + JRNZ WE_CAN_EXIT2 + DSJS A9,WAIT_HERE2 +WE_CAN_EXIT2 + MOVK 2,A0 + move a0,@match_over + MOVI 4DH,A0 + CALLA triple_sound + DIE + +#not_end + + SLEEP 85 + CLR A1 + MOVE *A2(PLYRNUM),A3 + JRZ WHICH_ONE_SORTED + INC A1 + DEC A3 + JRZ WHICH_ONE_SORTED + MOVE *A10(PLYRNUM),A3 + JRZ WHICH_ONE_SORTED + DEC A1 +WHICH_ONE_SORTED + MOVE A1,A5 + MOVI PLT_SIZE,A3 + MPYU A3,A1 + ADDI life_data,A1 + MOVI LIFE_MAX,A14 + move a14,*a1(PLT_LIFE) + + MOVI MD_SIZE,A3 + MPYU A3,A5 + ADDI meter_data,A5 + MOVE *A5(MD_LIFE),A8,L + + MOVI FYL2RD_P,A0 + CALLA pal_getf + MOVE A0,*A8(OPAL) + +;Cause wrestlers to re-appear in the correct spot to start the next round. + + CALLA CLEAR_SPEECH_REPEAT + + MOVE @current_round,A1 + MOVI 16,A3 + CMPI 2,A1 + JREQ NOT_THIRD_MATCH + MOVI 17,A3 +NOT_THIRD_MATCH + CALLA SNDSND + CLR A1 + MOVI 175,A0 + CALLA SET_LOWER_VOL +NO_LOWER + movk 16,a8 + movk 1,a9 + jsrp CLOSE_VERT_SCREEN_LINE + + MOVI LINES_VERT,A1 + MOVE A1,@WHICH_SCREEN,L + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ;delete text/plates + + calla reset_for_round + calla reset_for_round2 + + movi TIMER_PID,a0 + movi -1,a1 + calla EXISTP + jrz dont_update_clock + pushst + dint + push a13 + move a0,a13 + calla update_timer + movi WGFS_W_P,a0 + calla pal_getf + move *a13(PDATA+20h),a8,L ;10's image pointer + move a0,*a8(OPAL) + move *a13(PDATA),a8,L ;10's image pointer + move a0,*a8(OPAL) + pull a13 + popst +dont_update_clock + +;Update the meters + clr a0 + MOVE A0,@DAM_MULT + callr update_meter + movk 1,a0 + callr update_meter + + movi [339h,0],a0 + move a0,@WORLDTLX,L + + movi [0ffd6h,0],a0 + move a0,@WORLDTLY,L + + .ref BGND_UD1 + calla BGND_UD1 + +;Now display "round 2" or "round 3" + + CREATE0 ring_bell + + + movk 1,a0 + move a0,@HALT + + SLEEPK 1 + calla BGND_UD1 + SLEEPK 1 + calla BGND_UD1 + + movk 16,a8 + movk 1,a9 + jsrp OPEN_VERT_SCREEN_LINE + + CREATE0 DO_ROUNDS + + SLEEP 60 + CALLA VINCE_START_ROUND2_3 + sleep 40 + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ;delete text/plates + + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + calla obj_del1c ;delete text/plates + + clr a0 + move a0,@HALT + + + DIE + + +DO_ROUNDS + movi [200,0],a0 ;x pos + movi [255,0],a1 ;y pos + movi RNDPLAT,a2 + movi RNDPLT_P,b0 + movi 1800h,a3 ;z pos + callr #begin_obj + PUSH A8 + + move @current_round,a0 + MOVI RNDNUM_1,A2 + DEC A0 + JRZ #OKAY + MOVI RNDNUM_2,A2 + DEC A0 + JRZ #OKAY + MOVI RNDNUM_3,A2 + DEC A0 + JRZ #OKAY + MOVI RNDNUM_4,A2 +#OKAY + movi [200,0],a0 ;x pos + movi [255,0],a1 ;y pos + movi RNDNUM_P,b0 + movi 1801h,a3 ;z pos + callr #begin_obj + PULL A9 + + MOVK 20,A10 +LOOP_ROUNDS_ON + MOVI [190,0],A0 + CALLR ZIP_ROUNDS_ON + SLEEP 1 + DSJS A10,LOOP_ROUNDS_ON + SLEEP 40 + MOVK 20,A10 +LOOP_ROUNDS_OFF + MOVI [300,0],A0 + CALLR ZIP_ROUNDS_ON + SLEEP 1 + DSJS A10,LOOP_ROUNDS_OFF + DIE + +ZIP_ROUNDS_ON + move *a8(OYVAL),a1,L + sub a1,a0 + sra 3,a0 + move *a8(OYVAL),a2,L + add a0,a2 + move a2,*a8(OYVAL),L + move *a9(OYVAL),a2,L + add a0,a2 + move a2,*a9(OYVAL),L + RETS + +#ln_nm1_setup + JAM_STR sgmd8_ascii,5,0,200,40h-10,SGMD8WHT2,0 + +#ln_nm2_setup + JAM_STR sgmd8_ascii,5,0,200,4bh-10,SGMD8WHT2,0 + +#ln_rnd_setup + .ref font9_ascii + JAM_STR font9_ascii,5,0,200,43h-10,FNT9WHT_P,0 + +#ln1_t .long #bh_ln1,#rr_ln1,#un_ln1,#yo_ln1 + .long #sm_ln1,#bb_ln1,#do_ln1,#ll_ln1 + .long #ll_ln1 +#ln2_t .long #bh_ln1,#rr_ln1,#un_ln1,#yo_ln1 + .long #sm_ln1,#bb_ln1,#do_ln1,#ll_ln1 + .long #ll_ln1 + +#bh_ln1 .string "BRET HART",0 +#rr_ln1 .string "RAZOR RAMON",0 +#un_ln1 .string "THE UNDERTAKER",0 +#yo_ln1 .string "YOKOZUNA",0 +#sm_ln1 .string "SHAWN MICHAELS",0 +#bb_ln1 .string "BAM BAM BIGELOW",0 +#do_ln1 .string "DOINK THE CLOWN",0 +#ll_ln1 .string "LEX LUGER",0 + +#rnd1 .string "WINS ROUND ONE",0 +#rnd2 .string "WINS ROUND TWO",0 +#rnd3 .string "WINS THE MATCH",0 + +#rnd_2 .string "ROUND 2",0 +#rnd_3 .string "ROUND 3",0 + + .even + + +announce_winner + + .if 0 + + SLEEP 90 + + movi [252h,0],a0 ;x pos + movi [2Eh,0],a1 ;y pos + movi MTCHPLT,a2 + movi MPLTPRPP,b0 + movi 1200,a3 ;z pos + callr #begin_obj + move a8,*a13(IPTR_PLATE),L + + xori 1,a10 + X32 a10 + addi process_ptrs,a10 + move *a10,a10,L + move *a10(WRESTLERNUM),a10 + X32 a10 + movi name_tbl,a2 + add a10,a2 + move *a2,a2,L + + movi [252h,0],a0 ;x pos + movi [46h,0],a1 ;y pos + movi TEXT_P,b0 + movi 1202,a3 ;z pos + callr #begin_obj + move a8,*a13(IPTR_TEXT),L + + movi [252h,0],a0 ;x pos + movi [54h,0],a1 ;y pos + movi wins_txt,a2 + movi TEXT_P,b0 + movi 1202,a3 ;z pos + callr #begin_obj + move a8,*a13(IPTR_TEXT2),L + + movi >b6,a0 + calla triple_sound + + movi 30h,a10 +#onscr_loop2 + + SLEEPK 1 + + movi [200,0],a0 + movk 3,a11 + callr #set_x + + dsj a10,#onscr_loop2 + +;In middle + +;Wait for wrestlers to scramble into position + SLEEP 3*60 + + movi >b6,a0 + calla triple_sound + + movi 23h,a10 + +#offscr_loop2 + + SLEEPK 1 + + movi [0fec0h,0],a0 + movk 3,a11 + callr #set_x + + dsj a10,#offscr_loop2 + + move *a13(IPTR_PLATE),a0,L + calla DELOBJ + move *a13(IPTR_TEXT),a0,L + calla DELOBJ + move *a13(IPTR_TEXT2),a0,L + calla DELOBJ + + clr a0 + move a0,@HALT + .endif + + DIE + +#set_x + movi ram_lst,a11 + move *a11,a8,L + move *a8(OXVAL),a1,L + sub a1,a0 + sra 3,a0 +#lp5 + move *a11+,a8,L + jrz #x4 +; move a0,*a8(OXVEL),L + move *a8(OXVAL),a2,L + add a0,a2 + move a2,*a8(OXVAL),L + + jruc #lp5 +#x4 + rets + +#begin_obj + + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi CLSNEUT|TYPTEXT|SUBTXT,a5 + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJP + rets + +blink_text + SLEEPK 10 +#lp1 + movi SGMD8RED2,a0 + calla pal_getf + move a0,*a8(OPAL) + SLEEPK 4 + movi SGMD8WHT2,a0 + calla pal_getf + move a0,*a8(OPAL) + SLEEPK 7 + jruc #lp1 + + +DO_SNAP_MESS + MOVE @SNAP_COUNT,A0 + INC A0 + MOVE A0,@SNAP_COUNT + CMPI SNAP_LIMIT,A0 + JRGE NO_NORE_MESS + MOVI SNAPMIRR,A8 + +DO_THIS_MESS + MOVE *A13(PLYRNUM),A9 + CALLA MAKE_PLAYER_NUMBER_RIGHT + MOVI MESSAGES_PID,A0 + ADD A9,A0 + MOVI -1,A1 + CALLA EXISTP + JRNZ NO_NORE_MESS + INC A9 + CLR A10 + MOVI 1801H,A11 + + MOVI MESSAGES_PID,A1 + ADD A9,A1 + MOVI SPECIAL_MESSAGE,A7 + CALLA GETPRC + + MOVI 0BBH,A0 + CALLA triple_sound +NO_NORE_MESS + RETS + +DO_HEAD_MESS + MOVE @HEAD_COUNT,A0 + INC A0 + MOVE A0,@HEAD_COUNT + CMPI HEAD_LIMIT,A0 + JRGE NO_NORE_MESS + MOVI HEADSLAM,A8 + JRUC DO_THIS_MESS + +DO_GERM_MESS + MOVE @GERM_COUNT,A0 + INC A0 + MOVE A0,@GERM_COUNT + CMPI GERM_LIMIT,A0 + JRGE NO_NORE_MESS + MOVI GERMSUPL,A8 + JRUC DO_THIS_MESS + +DO_FRANK_MESS + MOVE @FRANK_COUNT,A0 + INC A0 + MOVE A0,@FRANK_COUNT + CMPI FRANK_LIMIT,A0 + JRGE NO_NORE_MESS + MOVI FRANKEN,A8 + JRUC DO_THIS_MESS + +DO_BACK_MESS + MOVE @BACK_COUNT,A0 + INC A0 + MOVE A0,@BACK_COUNT + CMPI BACK_LIMIT,A0 + JRGE NO_NORE_MESS + MOVI BACKBRKR,A8 + JRUC DO_THIS_MESS + +DO_BODY_MESS + MOVE @BODY_COUNT,A0 + INC A0 + MOVE A0,@BODY_COUNT + CMPI BODY_LIMIT,A0 + JRGE NO_NORE_MESS + MOVI BODYSLAM,A8 + JRUC DO_THIS_MESS + +DO_PILE_MESS + MOVE @PILE_COUNT,A0 + INC A0 + MOVE A0,@PILE_COUNT + CMPI PILE_LIMIT,A0 + JRGE NO_NORE_MESS + MOVI PILEDRV,A8 + JRUC DO_THIS_MESS + +DO_REVERSAL_MESS + MOVE *A10(PLYRNUM),A9 + CALLA MAKE_PLAYER_NUMBER_RIGHT + CREATE0 CREATE_REVERSAL_MESS + RETS + +CREATE_REVERSAL_MESS + MOVK 2,A0 + MOVE A0,@DAM_MULT + + MOVI REVERS,A8 + CLR A10 + MOVI 1801H,A11 + + MOVI MESSAGES_PID,A1 + ADD A9,A1 + MOVI SPECIAL_MESSAGE,A7 + INC A9 + CALLA GETPRC + + MOVI 0BBH,A0 + CALLA triple_sound + + SLEEP 50 + + MOVI xDAMAGE,A8 + MOVI 2,A10 + MOVI 1803H,A11 + + DEC A9 + MOVI MESSAGES_PID,A1 + ADD A9,A1 + MOVI SPECIAL_MESSAGE,A7 + INC A9 + CALLA GETPRC + + DIE + +BONUS_MESS + CREATE0 DO_BONUS_MESS + RETS + +DO_BONUS_MESS + MOVE *A10(PLYRNUM),A9 + CALLA MAKE_PLAYER_NUMBER_RIGHT + MOVI HIGHRISK,A8 + CLR A10 + MOVI 1801H,A11 + + MOVI MESSAGES_PID,A1 + ADD A9,A1 + MOVI SPECIAL_MESSAGE,A7 + INC A9 + CALLA GETPRC + + MOVI 0BBH,A0 + CALLA triple_sound + + SLEEP 50 + + MOVI xDAMAGE,A8 + MOVI 2,A10 + MOVI 1803H,A11 + + DEC A9 + MOVI MESSAGES_PID,A1 + ADD A9,A1 + MOVI SPECIAL_MESSAGE,A7 + INC A9 + CALLA GETPRC + + DIE + +DO_COMBO_MESS + MOVE @HAVE_WE_AUDITED_THIS_GAME,A0 + JRNZ YES_WE_HAVE + movi AUD_COMBO,A0 + calla AUD1 + MOVK 1,A0 + MOVE A0,@HAVE_WE_AUDITED_THIS_GAME +YES_WE_HAVE + MOVI 0BAH,A0 + CALLA triple_sound + + MOVE *A13(PLYRNUM),A9 + MOVI HITCOMBO,A8 + MOVE *A13(COMBO_COUNT),A10 + CMPI 2,A10 + JRLT NO_MESSAGE + +;Add a couple for a better appearance! + addk 2,a10 + + MOVI 1803H,A11 + + CALLA MAKE_PLAYER_NUMBER_RIGHT + + MOVI MESSAGES_PID,A1 + ADD A9,A1 + MOVI SPECIAL_MESSAGE,A7 + INC A9 + CALLA GETPRC +NO_MESSAGE + RETS + + +MAKE_PLAYER_NUMBER_RIGHT + CMPI 2,A9 + JRLT WE_ARE_ALREADY_CORRECT + MOVE @PSTATUS,A9 + DEC A9 + NOT A9 + ANDI 1,A9 +WE_ARE_ALREADY_CORRECT + RETS + +ZIP_SPEED .EQU 18H +BUFF .EQU 25 +;A8=IMAGE TO PLACE UP +;A9=WHICH SIDE (1 OR 2) +;A10=NUMBER OF BONUS MULTIPLIER 2-5 (IF NECESSARY) +;A11=ZPOS TO PLACE BLOCK (SO DAMAGE x GOES OVER OTHER) +SPECIAL_MESSAGE + MOVI 10H,A0 + CALLA triple_sound + MOVE A11,B5 + CLR A11 + MOVE A8,A2 + MOVE *A2(ISIZEX),A3 + CMPI xDAMAGE,A2 + JREQ SPECIAL_CASE_THIS + CMPI HITCOMBO,A2 + JRNE ONLY_THIS_SIZE +SPECIAL_CASE_THIS + ADDI 19,A3 + MOVE A10,A0 + CALLA BINBCD + MOVE A0,A10 + MOVE A10,A11 + SRL 4,A11 + JRZ ONLY_THIS_SIZE + MOVI HITCOMBO2,A2 + ADDI 21,A3 + CMPI 1,A11 + JRNE ONLY_THIS_SIZE + SUBI 4,A3 +ONLY_THIS_SIZE + MOVI TYPE_MESS2,A5 + ADDI BUFF*2,A3 + MOVI 410,A0 + MOVE A0,A7 + SUB A3,A7 + SLL 16,A7 + DEC A9 + JRNZ WE_SET_XPOS + MOVI TYPE_MESS1,A5 + MOVE A3,A0 + NEG A0 + MOVI [BUFF,0],A7 + ADDK BUFF,A0 +WE_SET_XPOS + SLL 16,A0 + MOVE A0,*A13(PDATA+120H),L + MOVE A7,*A13(PDATA+100H),L + MOVI [230,0],A1 + MOVE B5,A3 + ADDK 1,A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + + CLR A6 + CLR A7 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9,A10 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9,A10 + PUSH A8 + + MOVI WHICH_BONUS_2,A14 + CMPI xDAMAGE,A2 + JREQ WE_HAVE_NUMBERS + CMPI HITCOMBO,A2 + JREQ WE_HAVE_NUMBERS + MOVI WHICH_BONUS_1,A14 + CMPI HITCOMBO2,A2 + JRNE NO_NEED_FOR_THIRD_OBJ +WE_HAVE_NUMBERS + SLL 32-4,A10 + SRL 32-4-5,A10 ;*32 + ADD A14,A10 + MOVE *A10,A2,L + MMTM SP,A0,A1,A3,A4,A5,A6,A7,A11 + calla BEGINOBJ + MMFM SP,A0,A1,A3,A4,A5,A6,A7,A11 + MOVE A8,A10 + + MOVE A11,A7 + SLL 32-4,A7 + JRZ NO_NEED_FOR_THIRD_OBJ + SRL 32-4-5,A7 ;*32 + ADDI WHICH_BONUS_2,A7 + MOVE *A7,A2,L + CLR A7 + MMTM SP,A0,A1,A5,A6,A7 + CMPI 1,A11 + JRNE NO_REPOS_THIS_NUM + ADDI [4,0],A0 +NO_REPOS_THIS_NUM + calla BEGINOBJ + MMFM SP,A0,A1,A5,A6,A7 + MOVE A8,A11 +NO_NEED_FOR_THIRD_OBJ + + MOVE *A8(OSIZEX),A2 + MOVI 395,A3 + SUB A2,A3 + SUBI BUFF,A3 + SLL 16,A0 + SUB A3,A0 + MOVI MVEBAR_B,A2 + movi DMAWNZ|M_FLIPH|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A9,A9 + JRZ BAR_SET + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVI MVEBAR_R,A2 + MOVE *A8(OXVAL),A0,L + SUBI [BUFF,0],A0 +BAR_SET + MOVE B5,A3 + calla BEGINOBJ + MOVE A8,A9 + PULL A8 + + MOVI ZIP_SPEED,A3 +MOVE_IT_ON + MOVE *A13(PDATA+100H),A0,L + CALLR MOVE_BARS + PUSHP A3 + SLEEPK 1 + PULLP A3 + DSJS A3,MOVE_IT_ON + + SLEEP 50 + + MOVI ZIP_SPEED,A3 +MOVE_IT_OFF + MOVE *A13(PDATA+120H),A0,L + SLA 1,A0 + CALLR MOVE_BARS + PUSHP A3 + SLEEPK 1 + PULLP A3 + DSJS A3,MOVE_IT_OFF + + CALLA DELOBJA8 + MOVE A9,A8 + CALLA DELOBJA8 + MOVE A10,A8 + JRZ NO_A10_3 + CALLA DELOBJA8 +NO_A10_3 + MOVE A11,A8 + JRZ NO_A11_3 + CALLA DELOBJA8 +NO_A11_3 + DIE + +MOVE_BARS + PUSH A8 + MOVE *A8(OXVAL),A1,L + SUB A1,A0 + SRA 3,A0 + + CALLR MOVE_THIS_PART + MOVE A9,A8 + JRZ NO_A11_PART + CALLR MOVE_THIS_PART + MOVE A10,A8 + JRZ NO_A10_PART + CALLR MOVE_THIS_PART +NO_A10_PART + MOVE A11,A8 + JRZ NO_A11_PART + CALLR MOVE_THIS_PART +NO_A11_PART + PULL A8 + RETS + +MOVE_THIS_PART + MOVE *A8(OXVAL),A2,L + ADD A0,A2 + MOVE A2,*A8(OXVAL),L + RETS + +WHICH_BONUS_2 + .LONG X0X,X1X,X2X + .LONG X3X,X4X,X5X + .LONG X6X,X7X,X8X + .LONG X9X + +WHICH_BONUS_1 + .LONG X0X2,X1X2,X2X2 + .LONG X3X2,X4X2,X5X2 + .LONG X6X2,X7X2,X8X2 + .LONG X9X2 + +Z_FORWARD .EQU 1800H +ZFLIP_POS .EQU 0D8000H + +SHIFT_BARS_IN_Z + CLR A0 + MOVE A0,@LAST_FLIP +SHIFT_BARS_IN_Z_MOTION + MOVE @WORLDTLY,A0,L + CMPI ZFLIP_POS,A0 + JRLT CHECK_IF_WE_ALREADY_FLIPPED_BACK + + MOVE @LAST_FLIP,A0 + JRNZ YES_WE_DID + MOVK 1,A0 + MOVE A0,@LAST_FLIP + CALLR SHIFT_BARS_FORWARD + SLOOP 4,SHIFT_BARS_IN_Z_MOTION + +CHECK_IF_WE_ALREADY_FLIPPED_BACK + MOVE @LAST_FLIP,A0 + JRZ YES_WE_DID + CLR A0 + MOVE A0,@LAST_FLIP + CALLR SHIFT_BARS_BACK +YES_WE_DID + SLOOP 4,SHIFT_BARS_IN_Z_MOTION + +SHIFT_BARS_FORWARD + movi OBJLST,a8 + JRUC DONT_SHIFT_IT_FORWARD +STILL_MORE_TO_CHECK + MOVE *A8(OZPOS),A1 + CMPI bak_z,A1 + JREQ SHIFT_IT_FORWARD + CMPI bar_z,A1 + JREQ SHIFT_IT_FORWARD + CMPI frame_z,A1 + JREQ SHIFT_IT_FORWARD + CMPI name_z,A1 + JRNE DONT_SHIFT_IT_FORWARD +SHIFT_IT_FORWARD + ADDI Z_FORWARD,A1 + MOVE A1,*A8(OZPOS) +DONT_SHIFT_IT_FORWARD + MOVE *A8,A8,L + JRNZ STILL_MORE_TO_CHECK + RETS + +SHIFT_BARS_BACK + movi OBJLST,a8 + JRUC DONT_SHIFT_IT_BACK +STILL_MORE_TO_CHECK_B + MOVE *A8(OZPOS),A1 + CMPI bak_z+Z_FORWARD,A1 + JREQ SHIFT_IT_BACK + CMPI bar_z+Z_FORWARD,A1 + JREQ SHIFT_IT_BACK + CMPI frame_z+Z_FORWARD,A1 + JREQ SHIFT_IT_BACK + CMPI name_z+Z_FORWARD,A1 + JRNE DONT_SHIFT_IT_BACK +SHIFT_IT_BACK + SUBI Z_FORWARD,A1 + MOVE A1,*A8(OZPOS) +DONT_SHIFT_IT_BACK + MOVE *A8,A8,L + JRNZ STILL_MORE_TO_CHECK_B + RETS + + +END_BUFF .equ 10 +END_POS .EQU 30 +END_YPOS .EQU 80 +TURM_OFF .EQU 4 + +WHICH_ROUND + .LONG FIRSTFAL,SECNDFAL,MATCHFAL + +CREATE_END_ROUND_TOP + SLL 5,A9 + ADDI WHICH_ROUND,A9 + MOVE *A9,A2,L + + CLR A1 + MOVE A1,*A13(PDATA+140),L + + MOVI [END_POS+150+TURM_OFF,0],A1 + MOVI [400+END_BUFF+150+TURM_OFF,0],A0 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A11,A11 + JRNZ WHICH_TEXT_SET + MOVI [400-END_POS-150,0],A1 + MOVI [0-END_BUFF-150,0],A0 +WHICH_TEXT_SET + MOVE A1,*A13(PDATA+100H),L + MOVI [END_YPOS,0],A1 + MOVI 1803H,A3 + MOVI CLSNEUT|TYPTEXT|SUBMES1,A5 + CLR A6 + CLR A7 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7 + MOVE A8,A9 + + MOVI [END_POS+TURM_OFF,0],A1 + MOVI [400+END_BUFF+TURM_OFF,0],A0 + MOVI MVEBAR_R,A2 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A11,A11 + JRNZ WHICH_BAR_SET + MOVI [400-END_POS,0],A1 + MOVI [0-END_BUFF,0],A0 + movi DMAWNZ|M_FLIPH|M_3D|M_SCRNREL,a4 ;DMA flags + MOVI MVEBAR_B,A2 +WHICH_BAR_SET + MOVE A1,*A13(PDATA+120H),L + MOVI [END_YPOS,0],A1 + MOVI 1800H,A3 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + CLR A0 + MOVE A0,*A13(PDATA+140H),L + JSRP ZIP_HIM_ON + DIE + +WHICH_WRESTLE_NAME + .LONG BIGHRT + .LONG BIGRAZ + .LONG BIGUND + .LONG BIGYOK + .LONG BIGSHN + .LONG BIGBAM + .LONG BIGDNK + .LONG 0 + .LONG BIGLEX + +CREATE_END_ROUND_BOT + MOVE *A10(WRESTLERNUM),A2 + SLL 5,A2 + ADDI WHICH_WRESTLE_NAME,A2 + MOVE *A2,A2,L + + MOVI [END_POS+150+TURM_OFF,0],A1 + MOVI [400+END_BUFF+150+TURM_OFF,0],A0 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A11,A11 + JRNZ ON_LEFT + MOVI [400-END_POS-150,0],A1 + MOVI [0-END_BUFF-150,0],A0 +ON_LEFT + MOVE A1,*A13(PDATA+100H),L + MOVI [END_YPOS+25,0],A1 + MOVI 1802H,A3 + MOVI CLSNEUT|TYPTEXT|SUBMES1,A5 + CLR A6 + CLR A7 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7 + MOVE A8,A9 + + MOVI [END_POS+TURM_OFF,0],A1 + MOVI AWDNMPL_R,A2 + MOVI [400+END_BUFF+TURM_OFF,0],A0 + MOVE A11,A11 + JRNZ ON_LEFT2 + MOVI [400-END_POS,0],A1 + MOVI [0-END_BUFF,0],A0 + MOVI AWDNMPL_B,A2 + movi DMAWNZ|M_FLIPH|M_3D|M_SCRNREL,a4 ;DMA flags +ON_LEFT2 + MOVE A1,*A13(PDATA+120H),L + MOVE A1,*A13(PDATA+140H),L + MOVI [END_YPOS,0],A1 + DEC A3 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + + PUSH A8 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVI DIAGLGO_R,A2 + MOVE A11,A11 + JRNZ ON_LEFT3 + MOVI DIAGLGO_B,A2 +ON_LEFT3 + INC A3 + calla BEGINOBJ + MOVE A8,A10 + PULL A8 + JSRP ZIP_HIM_ON + DIE + +ZIP_HIM_ON + MOVI ZIP_SPEED,A3 +MOVE_END_ON + MOVE *A13(PDATA+140H),A0,L + JRZ NOTHING_IN_A10 + PUSH A8 + MOVE A10,A8 + CALLR MOVE_THIS + PULL A8 +NOTHING_IN_A10 + MOVE *A13(PDATA+100H),A0,L + JRZ NOTHING_IN_A9 + PUSH A8 + MOVE A9,A8 + CALLR MOVE_THIS + PULL A8 +NOTHING_IN_A9 + MOVE *A13(PDATA+120H),A0,L + CALLR MOVE_THIS + PUSHP A3 + SLEEPK 1 + PULLP A3 + DSJS A3,MOVE_END_ON + RETP + +MOVE_THIS + MOVE *A8(OXVAL),A1,L + SUB A1,A0 + SRA 3,A0 + JRUC MOVE_THIS_PART + + +END_IPOS1 .EQU 332 +END_IPOS2 .EQU 292 +END_IYPOS .EQU 54 + +CREATE_END_ROUND_ICON + + MOVI [END_IPOS1+30,0],B4 + MOVI [400-END_IPOS1-30,0],B5 + MOVI [END_IPOS1,0],B6 + MOVI [400-END_IPOS1,0],B7 + + MOVE @p1rounds,a1 + MOVE A11,A11 + JRZ GOT_RIGHT_SIDE + MOVE @p2rounds,a1 +GOT_RIGHT_SIDE + DEC A1 + JRZ DO_THE_RIGHT_ROUND + + MOVI [END_IPOS2+30,0],B4 + MOVI [400-END_IPOS2-30,0],B5 + MOVI [END_IPOS2,0],B6 + MOVI [400-END_IPOS2,0],B7 +DO_THE_RIGHT_ROUND + + CLR A1 + MOVE A1,*A13(PDATA+140),L + + MOVI WWFICON10,A2 + MOVE B4,A1 + MOVI [400+END_BUFF+150,0],A0 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A11,A11 + JRNZ WHICH_ICON_SET + MOVE B5,A1 + MOVI [0-END_BUFF-150,0],A0 +WHICH_ICON_SET + MOVE A1,*A13(PDATA+100H),L + MOVI [END_IYPOS,0],A1 + MOVI 1801H,A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + CLR A5 + CLR A6 + CLR A7 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + MOVE A8,A9 + + MOVE B6,A1 + MOVI [400+END_BUFF,0],A0 + MOVI MVEBAR_R,A2 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A11,A11 + JRNZ WHICH_BAR2_SET + MOVE B7,A1 + MOVI [0-END_BUFF,0],A0 + movi DMAWNZ|M_FLIPH|M_3D|M_SCRNREL,a4 ;DMA flags + MOVI MVEBAR_B,A2 +WHICH_BAR2_SET + MOVE A1,*A13(PDATA+120H),L + MOVE A0,*A13(PDATA+160H),L + MOVI [END_IYPOS,0],A1 + MOVI 1800H,A3 + MOVI CLSNEUT|TYPTEXT|SUBMES1,A5 + CLR A6 + CLR A7 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7 + + JSRP ZIP_HIM_ON + SLEEP 20 + MOVI ICON_PID,A1 + ADD A11,A1 + CALLA FIND_ANY_OTHERS + MOVI 4DH,A0 + CALLA triple_sound + MOVI MAKE_ICON_GLOW,A7 + CALLA GETPRC + MOVE A9,A11 + CLR A9 + MOVE A9,*A13(PDATA+100),L + MOVE *A13(PDATA+160H),*A13(PDATA+120H),L + JSRP ZIP_HIM_ON + + MOVE A11,A8 + + CREATE0 MAYBE_A_SPARKLE + DIE + +MAKE_ICON_GLOW + MOVE A9,A8 + MOVI WWF_ICON_ANIM,A1 + CALLA setup_back_anim + JSRP ANIM_CROWD + SLEEP TSEC*10 + JRUC MAKE_ICON_GLOW + +FIND_ANY_OTHERS + PUSH A1 + MOVE A1,A0 + MOVI -1,A1 + CALLA EXISTP + JRZ NO_MORE + MOVK 1,A1 + MOVE A1,*A0(PTIME) +NO_MORE + PULL A1 + RETS + +CANI_END equ 2 + 8000H + +WWF_ICON_ANIM + WL 2,WWFICON01 + WL 2,WWFICON02 + WL 2,WWFICON03 + WL 2,WWFICON04 + WL 2,WWFICON05 + WL 2,WWFICON06 + WL 2,WWFICON07 + WL 2,WWFICON08 + WL 2,WWFICON09 + WL 2,WWFICON10 + .WORD CANI_END + +MAYBE_A_SPARKLE + MOVI 120,A0 + CALLA RNDRNG0 + ADDI 50,A0 + CALLA PRCSLP + CREATE0 ICON_SPARKLE + JRUC MAYBE_A_SPARKLE + +ICON_SPARKLE + + MOVK 6,A0 + CALLA RNDRNG0 + SLL 5,A0 + ADDI WHERE_SPARKLE,A0 + MOVE A0,A2 + + MOVE *A8(OXPOS),A0 + MOVE *A2,A14 + ADD A14,A0 + + MOVE *A8(OYPOS),A1 + MOVE *A2(10H),A14 + ADD A14,A1 + + SLL 16,A0 + SLL 16,A1 + MOVI SPRKLA01,A2 + MOVI 1802H,A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + + MOVK 2,A0 + CALLA RNDRNG0 + SLL 5,A0 + ADDI WHICH_SPARKLE,A0 + MOVE *A0,A1,L + calla setup_back_anim + JSRP ANIM_CROWD + CALLA DELOBJA8 + DIE + + +WHICH_SPARKLE + .LONG SPARKLE_1 + .LONG SPARKLE_2 + .LONG SPARKLE_3 + +WHERE_SPARKLE + .LONG [-8,-14] + .LONG [8,-9] + .LONG [-1,8] + .LONG [0,15] + .LONG [-9,19] + .LONG [-10,2] + .LONG [-1,-6] + +SPARKLE_1 + WL 2,SPRKLA01 + WL 2,SPRKLA02 + WL 2,SPRKLA03 + WL 2,SPRKLA04 + WL 2,SPRKLA05 + WL 2,SPRKLA06 + WL 2,SPRKLA07 + WL 2,SPRKLA08 + WL 2,SPRKLA09 + WL 2,SPRKLA10 + WL 2,SPRKLA11 + WL 2,SPRKLA12 + WL 2,SPRKLA13 + .WORD CANI_END + +SPARKLE_2 + WL 2,SPRKLB01 + WL 2,SPRKLB02 + WL 2,SPRKLB03 + WL 2,SPRKLB04 + WL 2,SPRKLB05 + WL 2,SPRKLB06 + WL 2,SPRKLB07 + WL 2,SPRKLB08 + WL 2,SPRKLB09 + WL 2,SPRKLB10 + WL 2,SPRKLB11 + WL 2,SPRKLB12 + WL 2,SPRKLB13 + .WORD CANI_END + +SPARKLE_3 + WL 2,SPRKLC01 + WL 2,SPRKLC02 + WL 2,SPRKLC03 + WL 2,SPRKLC04 + WL 2,SPRKLC05 + WL 2,SPRKLC06 + WL 2,SPRKLC07 + WL 2,SPRKLC08 + WL 2,SPRKLC09 + WL 2,SPRKLC10 + WL 2,SPRKLC11 + WL 2,SPRKLC12 + WL 2,SPRKLC13 + .WORD CANI_END + + +****************************************************************************** + .end + + \ No newline at end of file diff --git a/BACKUP/LIFEBAR.H b/BACKUP/LIFEBAR.H new file mode 100644 index 0000000..51f6e47 --- /dev/null +++ b/BACKUP/LIFEBAR.H @@ -0,0 +1,29 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 25 Apr 94 +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lifebar.h" + .title "meters, names, messages, and scores" + .width 132 + .option b,d,l,t + .mnolist + + .ref adjust_health + .ref get_health + + +* INCLUDE AFTER GAME.EQU + +****************************************************************************** +GETLIFE .macro + move *a13(PLYRNUM),a1 + calla get_health + .endm +****************************************************************************** + + \ No newline at end of file diff --git a/BACKUP/LINK.EQU b/BACKUP/LINK.EQU new file mode 100644 index 0000000..2b70ce4 --- /dev/null +++ b/BACKUP/LINK.EQU @@ -0,0 +1,355 @@ + .INCLUDE "AUDIT.EQU" ;AUDIT NAMES! + +* +CHUTES EQU 5 ;MAXIMUM COIN CHUTES IN GAME. +* +*MISC BUTTON EQUATES + .if TUNIT ; | | | +UP_BITS equ 00000000000000000000000100000001b +DOWN_BITS equ 00000000000000000000001000000010b +BUTTONS equ 00000000000000001111000011110000b +ACTION_BITS equ 00000000000000000111000001110000b +START_BITS equ 00000110001001000000000000000000b +DIAG_BITS EQU 00000000000100000000000000000000B + .else +UP_BITS equ 00000001000000000000000100000001b +DOWN_BITS equ 00000010000000000000001000000010b +BUTTONS equ 010110000101001000111000001110000b +ACTION_BITS equ 010110000000000000111000001110000b +START_BITS equ 0101001000000000000000000b + .endif + +***************************** +***************************** GET OFFICIAL PID FROM GEORGE ****************** +MENU_PID EQU 0AC1H ;GET_MENU SLAVE +MDUN_PID EQU 0AC2H ;MENU SLAVE CHANGES TO THIS WHEN DONE +OPMES_PID EQU 0AC3H ;OPERATOR ENTER INITIALS +***************************** GET OFFICIAL PID FROM GEORGE ****************** +***************************** +LONG_SIZE EQU 32 +WORD_SIZE EQU 16 +BYTE_SIZE EQU 8 + +C_LONG_SIZE EQU 64 +C_WORD_SIZE EQU 32 +C_BYTE_SIZE EQU 16 + +BYTE_MASK EQU 0FFH +WORD_MASK EQU 0FFFFH + +SX_MASK EQU 0FFFFH +SY_MASK EQU 0FFFF0000H + +************************************************************************** +* * +* ASCII STUFF * +* * +************************************************************************** +SPACE EQU 20H +EX_PT EQU 21H +LET_0 EQU 30H +LET_A EQU 41H +LET_Z EQU 5AH +UNDERSCORE EQU 5FH +FONT_SPACE EQU 7EH +FONT_RUB EQU FONT_SPACE+1 +FONT_END EQU FONT_RUB+1 +FONT_RQUOTE EQU FONT_END+1 +FONT_EPOUND equ FONT_RQUOTE+1 +FONT_CR equ FONT_EPOUND+1 +ASCII_COMMA EQU 2CH +RIGHT_PAREN EQU 29H +ASCII_DQ EQU 22H + +************************************************************************** +* * +* SCREEN STUFF * +* * +************************************************************************** +* +SCREEN_X_UNIT EQU 8 ;THESE ARE FOR PACKED LINEAR ADDRESS +SCREEN_Y_UNIT EQU 1000H ;FORMAT +* +STRUCT_X_UNIT EQU 1000H ;X UNIT IN SPR DATA STRUCTURE +STRUCT_Y_UNIT EQU 1000H ;Y UNIT IN SPR DATA STRUCTURE +* +TABLE_UNIT EQU 10000H ;16 BIT FRACTION IN HSTD COORDINATES +* +EVEN_X_MASK EQU 0FF8H ;X MASK TO EVEN PIXEL +X_MASK EQU 0FF8H ;MASK TO HOLD JUST X +Y_MASK EQU 1FF000H ;MASK TO HOLD JUST Y +* +Y_MAX EQU 256 +SCREEN_PITCH EQU 400 + +************************************************************************** +* * +* COLOR STUFF * +* * +************************************************************************** + + + +ROBO_GREY EQU 0101H ;[0E0H-223,0E0H-223] +ROBO_WHITE EQU 0202H ;[0E1H-223,0E1H-223] +ROBO_RED EQU 0303H ;[0E2H-223,0E2H-223] +ROBO_ORANGE EQU 0404H ;[0E3H-223,0E3H-223] +ROBO_YELLOW EQU 0505H ;[0E4H-223,0E4H-223] +ROBO_GREEN EQU 0606H ;[0E5H-223,0E5H-223] +ROBO_BLUE EQU 0707H ;[0E6H-223,0E6H-223] +ROBO_LF EQU 03E3EH +ROBO_CYAN EQU 0E0EH ;[0EDH-223,0EDH-223] +ROBO_DECAY EQU 03D3DH +ROBO_RGOLD EQU 0A0AH ;[0E9H-223,0E9H-223] +ROBO_LASER EQU 03E3EH +ROBO_LASER2 EQU 03F3FH +ROBO_BLUWH EQU 0C0CH ;[0EBH-223,0EBH-223] +ROBO_PINK EQU 0303H ;[0E2H-223,0E2H-223] +ROBO_SKY EQU 0D0DH ;[0ECH-223,0ECH-223] ;LAST COLOR IN ROBO IS "SKY" COLOR +ROBO_PURPLE EQU ROBO_SKY ;PURPLE FOR TEST MODE +ROBO_BLACK EQU 1414H ;BLACK AS COAL + +COLOR_GREY EQU ROBO_GREY +COLOR_WHITE EQU ROBO_WHITE +COLOR_RED EQU ROBO_RED +COLOR_ORANGE EQU ROBO_ORANGE +COLOR_YELLOW EQU ROBO_YELLOW +COLOR_GREEN EQU ROBO_GREEN +COLOR_BLUE EQU ROBO_BLUE +COLOR_LF EQU ROBO_LF +COLOR_CYAN EQU ROBO_CYAN +COLOR_DECAY EQU ROBO_DECAY +COLOR_PURPLE EQU ROBO_PURPLE +COLOR_BLACK EQU ROBO_BLACK +COLOR_BPR EQU 3C3CH +COLOR_RGB EQU 3D3DH + +LOG_PAL_SIZE EQU 12 ;SHIFT 12 BITS TO TURN NUMBER INTO OFFSET +* ;IN PALETTE MEMORY +* +MAX_PAL_MASK EQU 3FH ;THIS IS MASK FOR NUMBER OF PALETTES. +* +* +ALL_BLUE equ 1fh +ALL_GREEN equ 3e0h +ALL_RED equ 7c00h +ALL_PURPLE EQU ALL_RED+ALL_BLUE +LIGHT_PURPLE EQU 701CH +* +ONE_BLUE EQU 1 +ONE_GREEN EQU 20H +ONE_RED EQU 400H +* +THIRD_GREEN EQU 140H ;1/3TH GREEN ON +THIRD_RED EQU 2800H ;1/3 RED ON + +************************************************************************** +* +* AUDIT STRUCTURE +* +************************************************************************** +AUD_DATA EQU 0 ;THE COUNTER IS 4 BYTES STARTING AT ZERO +AUD_CKSUM EQU AUD_DATA+(4*C_BYTE_SIZE) ;CHECKSUM = 2 BYTES +AUD_SIZE EQU AUD_CKSUM+C_WORD_SIZE +AUD_BYTES_TO_CHECK EQU (AUD_SIZE/C_BYTE_SIZE)-2 ;# TO ADD FOR CHECKSUM + +N_AUDITS EQU 96 + + .IF (LAST_AUDIT+1)>N_AUDITS + XXX NOT ENOUGH RAM ALLOCATED FOR AUDITS! + .ENDIF + +************************************************************************** +* +* ADJUSTMENTS +* +************************************************************************** +ADJ_SIZE EQU C_LONG_SIZE +N_ADJUSTS EQU 35 ;# OF ADJUSTS + + .IF (LAST_ADJUST+1)>N_ADJUSTS + XXX NOT ENOUGH RAM ALLOCATED FOR ADJUSTMENTS! + .ENDIF + +************************************************************************** +* CMOS STUFF FOR HSTD +************************************************************************** +* High Score table (CMOS) entry data structure + +NUM_INITS EQU 5 ;INITIALS IN EACH ENTRY..THIS MUST BE ODD +* +HS_SCORE EQU 0 ;LONG WORD.....8 DIGIT SCORE +HS_INITS EQU HS_SCORE+C_LONG_SIZE ;BYTE FOR FIRST INITIAL +HS_CKBYTE EQU HS_INITS+(NUM_INITS*C_BYTE_SIZE) ;BYTE FOR CHECKSUM +HS_SIZE EQU HS_CKBYTE+C_BYTE_SIZE ;SIZE OF STRUCTURE +HS_BYTES_TO_CHECK EQU (HS_SIZE/C_BYTE_SIZE)-1 ;# TO ADD FOR CHECKSUM +HS_SIZE_IN_WORDS EQU HS_SIZE/C_WORD_SIZE ;SIZE OF ENTRY IN WORDS +HS_SIZE_IN_BYTES EQU HS_SIZE/C_BYTE_SIZE ;SIZE OF ENTRY IN BYTES +HS_ROM_SIZE EQU HS_SIZE/2 ;address size of rom entry +* +************************************************************************** +* +* A HIGH SCORE TABLE IS DEFINED IN ROM BY THE FOLLOWING * +* STRUCTURE (THERE ARE AT LEAST 2 TABLES....ALL TIME * +* AND "TODAYS") * +* +************************************************************************** +TB_POINTER EQU 0 ;LONG-POINTER TO BEGINNING OF TABLE +TB_COUNT EQU TB_POINTER+LONG_SIZE ;WORD....# IN THE TABLE. +TB_VISIBLE EQU TB_COUNT+WORD_SIZE ;WORD....NUMBER DISPLAYED +TB_PAGE_BITS EQU TB_VISIBLE+WORD_SIZE ;WORD....STATUS WORD FOR CMOS PAGE +TB_FACTORY EQU TB_PAGE_BITS+WORD_SIZE ;LONG....ROM STARTUP TABLE +TB_ERROR_COUNT EQU TB_FACTORY+LONG_SIZE ;WORD....NUM ERRORS TO RE-INIT + +WPCMOS EQU CMOS+4000H ;WRITE PROTECTED CMOS +HALF_PAGE EQU 4000h +;WP_READ EQU 1C00010H ;PLACE TO READ WRITE PROTECT STATUS +;WP_BIT EQU 800H ;BIT WHERE WRITE ENABLE LIVES 0=NO WRITES + + + .if WWFUNIT +CMOS_PAGE_SELECT_BITS EQU 03H ;BITS 0 AND 1 OF SYSCTRL SELECT CMOS PAGE +CMOS_PAGE_SELECT_UNIT EQU 01H ;4 PAGES USE MULTIPLES OF THIS + .else +CMOS_PAGE_SELECT_BITS EQU 0C0H ;BITS 6 AND 7 OF SYSCTRL SELECT CMOS PAGE +CMOS_PAGE_SELECT_UNIT EQU 040H ;4 PAGES USE MULTIPLES OF THIS + .endif + + +************************************************************************** +* CMOS ALLOCATION +************************************************************************** +* +* 8k * 8 bits mapped as 8k * 16 bits. +* +* No hardware pages anymore, but software still pretends that there +* are four pages of 2k. +* +* PAGE 0 LOW HALF = AUDITS +* HIGH HALF = ADJUSTMENTS +* +AUDIT_SELECT EQU CMOS_PAGE_SELECT_UNIT*0 +HSR_SELECT EQU AUDIT_SELECT ;HIGH SCORE RESET COUNTER +COIN_SELECT EQU AUDIT_SELECT ;COINS AND CREDITS +ADJUST_SELECT EQU CMOS_PAGE_SELECT_UNIT*0 +* +* PAGE 1 LOW HALF = WIN STREAKS +* HIGH HALF = TOP SCORES +* +STREAK_TABLE_SELECT equ CMOS_PAGE_SELECT_UNIT*1 +PIN_SPEED_TAB_SELECT equ CMOS_PAGE_SELECT_UNIT*2 +* +* PAGE 2 Unused +* +BEATEN_TAB_SELECT equ CMOS_PAGE_SELECT_UNIT*3 +* +* PAGE 3 Unused +* + +****************************************************************************** +* AUDIT PAGE AUDIT DATA AND CREDITS +* +AUDITORG EQU CMOS ;AUDITS LIVE HERE +CREDITS EQU AUDITORG+(N_AUDITS*AUD_SIZE) ;BYTE FOR CREDITS +CUNITS EQU CREDITS+C_BYTE_SIZE ;WORD +BUNITS EQU CUNITS+C_WORD_SIZE ;WORD +MINUNITS EQU BUNITS+C_WORD_SIZE ;WORD +COIN_CKSUM EQU MINUNITS+C_WORD_SIZE ;BYTE +HSR_C EQU COIN_CKSUM+C_BYTE_SIZE ;LONG = HIGH SCORE RESET COUNTER +* +* NEXT TWO ARE ASSUMED TO BE BACK TO BACK +* +HRESET_COUNTER EQU HSR_C+C_LONG_SIZE ;LONG = HIGH SCORE RESET COUNTER +HRESET_VERIFY EQU HRESET_COUNTER+C_LONG_SIZE ;LONG = 2ND COPY INVERTED. + +COIN_CKSUM_START EQU CREDITS +COIN_CKSUM_SIZE EQU COIN_CKSUM-COIN_CKSUM_START ;SIZE OF REGION TO CHECK +COIN_CKSUM_BYTES EQU COIN_CKSUM_SIZE/C_BYTE_SIZE ;NUMBER OF BYTES TO ADD + +CMESS_CHARS EQU 26 ;25 CHARS/LINE OF CUSTOM MESSAGE +CMESS_LINES EQU 3 ;3 LINES +CMESS_LINE_SIZE EQU CMESS_CHARS*C_BYTE_SIZE +CMESS_SIZE EQU CMESS_LINES*CMESS_LINE_SIZE + +VALID_VALUE EQU 0EABCH ;STORED AT "VALID_CUSTOM" IF OK! + +NAME_REV_SIZE EQU 30 ;NAME AND REV DATA + +ADJUSTORG EQU CMOS+HALF_PAGE ;FIRST ADJUSTMENT HERE +CUSTOM_MESSAGE EQU ADJUSTORG+(N_ADJUSTS*ADJ_SIZE) +VALID_CUSTOM EQU CUSTOM_MESSAGE+CMESS_SIZE ;WORD = EABC IF OK. +END_CK_REGION EQU VALID_CUSTOM+C_WORD_SIZE +ADJ_AREA_SIZE EQU END_CK_REGION-ADJUSTORG ;ADJUSTS+CUSTOM MESSAGE +ADJ_CKSUM EQU END_CK_REGION ;WORD CHECK FOR ADJUSTS +ADJ_BYTES_TO_CHECK EQU ADJ_AREA_SIZE/C_BYTE_SIZE ;NUMBER OF BYTES IN CHECKSUM. +NAME_REV EQU ADJ_CKSUM+C_WORD_SIZE +END_ADJ EQU NAME_REV+(NAME_REV_SIZE*C_BYTE_SIZE) +* + +****************************************************************************** +* High score and win streak page +* +* 1K bytes (1/2 page) are set aside for each table. +* + +;STREAK_STRING_ORIGIN equ CMOS +STREAK_STRING_ORIGIN equ WPCMOS+HALF_PAGE +STREAK_TABLE_ORIGIN equ STREAK_STRING_ORIGIN+(32*C_BYTE_SIZE) + +;PIN_SPEED_TAB_STRING_ORIGIN equ WPCMOS+(HALF_PAGE*1) +PIN_SPEED_TAB_STRING_ORIGIN equ STREAK_TABLE_ORIGIN+(HS_SIZE*19) +PIN_SPEED_TAB_ORIGIN equ PIN_SPEED_TAB_STRING_ORIGIN+(32*C_BYTE_SIZE) + +;BEATEN_TAB_STRING_ORIGIN equ WPCMOS+(HALF_PAGE*2) +BEATEN_TAB_STRING_ORIGIN equ PIN_SPEED_TAB_ORIGIN+(HS_SIZE*19) +BEATEN_TAB_ORIGIN equ BEATEN_TAB_STRING_ORIGIN+(32*C_BYTE_SIZE) + +************************************************************************** +* +* FOR COIN PAGE MESSAGES.....WE HAVE UP TO 3 LINES ABOVE +* THE CREDITS MESSAGE. +* +CP_13 EQU 101-35 ;LINE 1 OF 3 +CP_23 EQU 120-35 ;LINE 2 OF 3 +CP_33 EQU 139-35 ;LINE 3 OF 3 + +CP_DELTA3 EQU CP_23-CP_13 ;AMOUNT TO STEP FROM LINE TO LINE + +CP_12 EQU 130-35 ;LINE 1 OF 2 +CP_22 EQU 150-35 ;LINE 2 OF 2 + +CP_11 EQU 130-35 ;SINGLE HELP LINE + +CP_CX EQU 200 ;CENTER X FOR CREDITS SCREEN STUFF! + +************************************************************************** +* * +* MESS_MAC * +* * +* THIS MACRO IS USED TO SETUP AN "L_MESS" MESSAGE. * +* THE MESSAGE FOLLOWS THE MACRO. * +* ZERO TERMINATES THE MESSAGE. * +* ANOTHER ZERO TERMINATES L_MESS. * +* * +* A "1" AFTER THE TERMINATING "0" WILL CAUSE * +* L_MESS TO PRINT OUT ANOTHER MESSAGE. * +* * +************************************************************************** + +MESS_MAC .MACRO FONT,SPACING,X,Y,COLOR,ROUTINE,SLEEP + .LONG :FONT: + .LONG :SPACING: + .LONG ((:Y:)*10000H)+:X: + .LONG :COLOR: + .LONG :ROUTINE: +; .LONG :SLEEP: + .ENDM + +SPACING20 EQU 2 +SPACING07 EQU 1 + +******************************************************************************* + + + + diff --git a/BACKUP/MACROS.H b/BACKUP/MACROS.H new file mode 100644 index 0000000..8ce7c7c --- /dev/null +++ b/BACKUP/MACROS.H @@ -0,0 +1,667 @@ +************************************************************** +* +* Software: +* Initiated: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + +*CLICK AN AUDIT COUNTER +AUDIT .macro P1 + MOVI :P1:,A0 + CALLA AUD1 + .endm + +*AUDIT A WORD LONG RAM LOCATION +*P1 = AUDIT +*P2 = RAM LOCATION +AUDITCNT .macro P1,P2 + MOVE @:P2:,A1 + MOVI :P1:,A0 + CALLA AUD + .endm + +*Get a game adjustment value in A0 +ADJUST .macro P1 + MOVI :P1:,A0 + CALLA GET_ADJ + .endm + +*FCALL - Function call without using the system stack +FCALL .macro n,b + movi :n:,:b:,L + exgpc :b: + .endm + +*FRET - Function return without using the system stack +FRET .macro b + exgpc :b: + .endm + + +****************************************************************************** + +REFLONG .macro label + .ref label + .long label + .endm + + +FACE24 .macro NAME,MOVE,REG + .if $isreg(REG) + move *:REG:(FACING_DIR),a14 + .else + move *a13(FACING_DIR),a14 + .endif + movi :NAME:_2_:MOVE:,a0 + btst MOVE_UP_BIT,a14 + jrnz DONE? + movi :NAME:_4_:MOVE:,a0 +DONE? + .endm + + +FACE24TBL .macro TBL,REG + + .if ($symcmp(TBL,"a0") = 0) | ($symcmp(TBL,"a14") = 0) + .emsg "ERROR! - Can't use a0 or a14 with FACE24TBL" + .mexit + .endif + + .if $isreg(REG) + move *:REG:(WRESTLERNUM),a0 + .else + move *a13(WRESTLERNUM),a0 + .endif + X64 a0 + + .if $isreg(REG) + move *:REG:(FACING_DIR),a14 + .else + move *a13(FACING_DIR),a14 + .endif + + btst MOVE_UP_BIT,a14 + jrnz DONE? + + addi 32,a0 + +DONE? + .if $isreg(TBL) + add :TBL:,a0 + .else + addi :TBL:,a0 + .endif + + move *a0,a0,L + + .endm + + +FACETBL .macro TBL,REG + + .if $symcmp(TBL,"a0") = 0) + .emsg "ERROR! - Can't use a0 with FACETBL" + .mexit + .endif + + .if $isreg(REG) + move *:REG:(WRESTLERNUM),a0 + .else + move *a13(WRESTLERNUM),a0 + .endif + X32 a0 + + .if $isreg(TBL) + add :TBL:,a0 + .else + addi :TBL:,a0 + .endif + + move *a0,a0,L + + .endm + +****************************************************************************** + +SETMODE .macro MODE + + move a0,-*sp,1 + movi MODE_:MODE:,a0 + move a0,*a13(PLYRMODE) + move *sp+,a0,1 + .endm + +****************************************************************************** + +JAM_STR .macro FONT,SPACING,CSPACE,X,Y,PALETTE,PR_METHOD + .long :FONT: + .word :SPACING: + .word :CSPACE: + .word :X: + .word :Y: + .long :PALETTE: + .long :PR_METHOD: + .endm + +****************************************************************************** + +OPPDIST .macro DX,DZ + move *a13(CLOSEST_XDIST),a14 + cmpi DX,a14 + jrgt FOO? + move *a13(CLOSEST_ZDIST),a14 + cmpi DZ,a14 +FOO? + .endm + +****************************************************************************** + +TBL_OBJ .macro OBJ + movi OBJ,a0 + calla BEGINOBJ_TBL + .endm + +****************************************************************************** + +X2 .macro a + sll 1,:a: + .endm + +****************************************************************************** + +X4 .macro a + sll 2,:a: + .endm + +****************************************************************************** + +X8 .macro a + sll 3,:a: + .endm + +****************************************************************************** + +X16 .macro a + sll 4,:a: + .endm + +****************************************************************************** + +X32 .macro a + sll 5,:a: + .endm + +****************************************************************************** + +X64 .macro a + sll 6,:a: + .endm + +****************************************************************************** + +X128 .macro a + sll 7,:a: + .endm + +****************************************************************************** + +X256 .macro a + sll 8,:a: + .endm + +****************************************************************************** + +TINTON .macro + + .global tint_on + calla tint_on + .endm + + +TINTOFF .macro + + .global tint_off + calla tint_off + .endm + +******************************** +* Macro defines, include after mproc.equ +* 11 June 91 SPL +*.Last mod - 1/31/93 1:00 + + +BSSX .macro n,s + .def :n: + .bss :n:,:s: + .endm + +SUBR .macro p1 + .def :p1: + .even +:p1: + .endm + +SUBRP .macro p1 + .even +:p1: + .endm + +STRUCT .macro o + .asg :o:,SOFF + .endm +STRUCTPD .macro + .asg PDATA,SOFF + .endm +STRUC .macro n,s +:n: .set SOFF + .eval SOFF+:s:,SOFF + .endm +WORD .macro n +:n: .set SOFF + .eval SOFF+16,SOFF + .endm +LONG .macro n +:n: .set SOFF + .eval SOFF+32,SOFF + .endm +APTR .macro n +:n: .set SOFF + .eval SOFF+32,SOFF + .endm +LABEL .macro n +:n: .set SOFF + .endm + +FLAG .macro n +:n:_B .equ SOFF +:n:_M .equ 1<= 5? + jrlt #map_ok ;Nope - then use it + clr a0 ;else reset it back to 0 +#map_ok + move a0,@_io_map,L ;a0 = I/O map number + clr a1 ;a1 = SetAddresses Trap Request + trap 3 ;Remap I/O space + rets +RemapIO_End + +SecFuncTable + .long RemapIO,RemapIO_End + .word 06a9h ;This is a checksum of the function + .long 0 + +********************************** +* SecFuncCheck - Checks to make sure security functions have not be mucked with +* Trashes a0,a1,a2,a3, a4 + SUBR SecFuncCheck + + + rets ;<----------------temp!!!!!!!!!!!!!!!!!!!!!! + + + movi SecFuncTable,a0,L ;Table of security functions to check +SFC_loop + move *a0+,a1,L ;Pointer to beginning of function + jrz SFC_done + move *a0+,a2,L ;Pointer to end of function + sub a1,a2 + srl 3,a2 + clr a3 +SFC_iloop + movb *a1,a4 + andi 0ffh,a4 + add a4,a3 + addk 8,a1 + dsjs a2,SFC_iloop + move *a0+,a4,W + cmp a4,a3 + jrz SFC_loop + LOCKUP +SFC_done + + +*************************************************************** +* InitPIC - Initializes the PIC Microcontroller +* + SUBR InitPIC + calla InitAddresses + clr a0 ;Reset the PIC + move @_coin_counter_addr,a1,L + move a0,*a1,W + movi 10,a0 ;Hold RESET fer a bit + dsjs a0,$ + movi 010h,a0 ;Set no command request + move a0,@PIC_COMMAND,W + movi 020h,a0 ;Allow PIC to run + move @_coin_counter_addr,a1,L + move a0,*a1,W + movi 200000000,a1 +_pwait_loop + move @_soundirq_addr,a0,L + move *a0,a0,W + btst 12,a0 + jrz _pnwait + move @_watchdog_addr,a0,L + move a0,*a0 + dsjs a1,_pwait_loop +_pnwait + movi 010h,a0 + move a0,@PIC_COMMAND,W + movi 2000000,a1 +_pwait_loop1 + move @_soundirq_addr,a0,L + move *a0,a0,W + btst 12,a0 + jrnz _pwait_done + move @_watchdog_addr,a0,L + move a0,*a0 + dsjs a1,_pwait_loop1 +_pwait_done + rets + +******************************** +* Init hardware, IO, RAM +* Trashes scratch, A2-A7 + + SUBR init_all + dint ;No interrupts until addresses set up + clr a0 ;>Clr scratch mem + movi SCRATCH,a1 + movi >8000-20,a2 ;128K minus some stack +#lp move a0,*a1+,L + dsjs a2,#lp + + movi -1,a0 ;Auto Clock update OFF + move a0,@_clk_rd,L + calla InitPIC ;Initialize the PIC + + movi WDOGNUM,a0 + move a0,@WDOGRAM,L ;Mark system as initialized + + movi SYSCINIT|WPIROM,a0 + + move a0,@SYSCTRL + move a0,@SYSCOPY ;Copy + + callr io_init ;Initialize the I/O regs + + calla display_init ;Init display system + + calla process_init ;Init process list + + movk INAMODE,a0 + move a0,@GAMSTATE + movi 81261A8CH,a0 ;Random seed + move a0,@RAND,L + + movi swstacktop,a0 ;Initialize switch stack + move a0,@swstack_p,L + + callr dip_init ;Initialize the dipswitches + + CREATE 8000h,qsndrst_proc ;Init sound board + CALLA RESET_VOICE_QUEUE + CREATE VOICE_PID,ANNOUNCE_VOICE + + movk 1,a0 + move a0,@DISPLAYON + + ;clear write-to-rom ints + ; Toddview messes with the interrupt vector table at startup, + ; and we end up with a pending WROM int. Clear it out to avoid + ; hanging right off the bat. + move @SYSCOPY,a0 + xori 02000h,a0 + move a0,@SYSCTRL + move @SYSCOPY,a0 + move a0,@SYSCTRL + + eint + + rets + + +******************************** +* Initialize options via dip switch settings + +dip_init + PUSH a0,a1 + + calla READ_DIP ;Get the current dip switch bits + move a0,a1 + + andi DPPLAYERS,a0 ;AQUIRE THE NUMBER OF PLAYERS + sll 3,a0 + addi #pnum_t,a0 + movb *a0,a0 + move a0,@NPLAYERS + + move a1,a0 + andi DPCOUNTER,a0 + srl DPCOUNTER_SRL-3,a0 + addi #cntr_t,a0 + movb *a0,a0 ;Match eugene's old shit + move a0,@COUNTER_MODE + + move a1,a0 + andi DPVALIDATOR,a0 ;AQUIRE THE VALIDATOR STATUS + srl DPVALIDATOR_SRL,a0 + move a0,@VALIDATOR ;SAVE IT + + move a1,a0 + andi DPPLAYERS,a0 + move a0,@TWOPLAYERS ;0=4 plyrs, 1=2 plyrs + + PULL a0,a1 + rets + +;Translate dipswitch into number of players allowed + +#pnum_t .byte 4,2 + +;Translate dipswitch coin counter adjustment to what the old cmos values were + +#cntr_t .byte 2,3,1,2 + .even + + +************************************************************************** +* Initialize GSP I/O registers + +io_init + PUSH b2,b6 + movi INTIO,b6 + exgpc b6 + PULL b2,b6 + rets + + +#******************************* +* Initialize GSP I/O registers +* B6=*Return address +* Trashes B0-B2 + + SUBR INTIO + + movi HESYNC,b2 + movi gspioinit_t,b0 + movi (giiend-gspioinit_t)/16,b1 +#lp move *b0+,*b2+ + dsj b1,#lp + +; movi VMUX_CONTROL,b0 +; movi VMUX_INITMODE,b1 +; move b1,*b0 + movi VMUX_INITMODE,a0 + move a0,@VMUX_CONTROL,W + move b1,*b0 + + exgpc b6 + + +#******************************* +* Watch dog disable +* Note: Call while interrupts are turned off + + SUBR WDOGDIS + + .if TUNIT=0 + + PUSH a0,a1,a2,a3,a4 + + pushst + setf 16,1,0 + + movi #dis_t,a1 + move @SYSCOPY,a2 + movk 1,a3 + movi SYSCTRL,a4 + move *a1+,a0 + +#lp or a2,a0 + move a0,*a4 + xor a3,a0 + move a0,*a4 + move *a1+,a0 + jrnn #lp + + move a2,*a4 + + popst + PULL a0,a1,a2,a3,a4 + rets + + +#dis_t .word 0,0,0,0, 2,0,2,0, -1 ;WATCH DOG DISABLE TABLE + + .else + + rets + + .endif + + +**************************************************************** +* Display IRQ + +DIRQ + mmtm sp,b0,b1,b2,b3,b4,b5,b6,b7,b11 + mmtm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 + + + setf 1,0,0 + move sp,@INTPEND+DIP ;Clear int pending + move sp,@INTENB+DIP ;Disable display int + + eint ;Let DMA int run + + setf 16,1,0 ;Word sign extend + + movi DPYCTL,a8 + + move *a8,a7 ;>Shift register read to restart DMA + movi NIL|DXV|SRT|>10,a0 + move a0,*a8 + movi 510*>1000,a2 ;*Autoerase lines + pixt *a2,a2 ;Mem to shift reg xfer + + + move @dirqdraw,a0 + jrnz di50 ;In draw code? + + move b13,b0 + jrn #chkmp ;DMA done? + + + move @GAMSTATE,a0 + jrn #chkmp ;In diagnostics? (B13 invalid) + + movi 26000/4,a1 ;>Make sure DMA is OK +#dqwait cmp b13,b0 + jrne di50 ;DMAQ changed? + dsj a1,#dqwait + + .if DEBUG + trap 29 + .endif + + clr a1 + move a1,@DMACTRL ;Timed out + move a1,@DMACTRL + subk 1,a1 + move a1,b13 + +di50 move a7,*a8 ;Restore + jruc #60hzcode ;Skip flip + + +#chkmp move @dirqtimer,a1 + jrnz di50 ;Mproc not done? + + move @dpageflip,a2 + jrz di400 ;Flipping off? + + + movi -4,a0 ;Page0 + movi PAGE1YO*>1000,b2 ;*Page1 + move @dpage,a1 + jrnz #onp1 + movi ->1004,a0 ;Page1 + clr b2 ;*Page0 +#onp1 move a0,@DPYSTRT ;If we don't page flip next time + move a0,@DPYADR ;Override DPYSTRT + not a1 ;Flip + move a1,@dpage + + + dint + movi 26000/8,a1 ;>Wait on last DMA +#dwait move @DMACTRL,a0 + jrnn #dmaoff ;DMA stopped? + dsj a1,#dwait + move a1,@DMACTRL ;Timed out + .if DEBUG + trap 29 + .endif +#dmaoff + + move a2,a2 + jrn #noerase ;Erase off? + + movi CONTROL,a9 ;>Clear whole page + move *a9,a6 + +;NEW - This is a bug - NEVER Turn OFF CAS before RAS Refreshes +;There is a possibility that by putting an 8 in the CONTROL register +;the Dynamic RAM device's (Bitmap RAM and/or Scratch RAM) could lose +;data. Because the amount of time that CAS before RAS refreshes are turned +;off is very short, the probabilty of actual data loss is minimal. Data +;loss could occur if the CAS before RAS refreshes are shut off just prior +;to a refresh cycle occuring. This is not very likely though because of the +;asynchronous nature of the 34010's refresh cycles. Setting the control +;register to 0ch will guarentee that there will be no possibilty of losing +;refresh cycles to the DRAM and VRAM devices. This NOTE is here simply to +;explain the reason for the code change below. +; ---> movk 8,a0 <--- + + MOVk 0ch,a0 + + move a0,*a9 ;Transparency off + movk 16,a0 + move a0,@PSIZE + movi SCRN_PTCH*2,b3 ;Pitch (2 lines) + PUSH b10,b11,b12,b13,b14 + movi [127,1],b7 ;Rows:Columns + fill l + PULL b10,b11,b12,b13,b14 + + move a6,*a9 ;Restore + movk PXSIZE,a0 + move a0,@PSIZE ;Normal +#noerase + +di400 move a7,*a8 ;Restore + eint + + + calla pal_transfer ;Copy new PALs + + move @IRQSKYE,@ERASELOC ;Copy bkgnd color +; move @COLRTEMP,a0,L +; jrz #notindiag +; movi CYCOLORS,a1 +; move a0,*a1+,L ;Copy diagnostics color cycler +; move @COLRTEMP+32,*a1,L +;#notindiag + + callr switch_stack ;Scan misc switches + + movk 1,a0 + + move a0,@dirqdraw + + setf 1,0,0 ;Enable display int + move a0,@INTENB+DIP + setf 16,1,0 + + + calla DISPLAY ;Build DMAQ, update XYPOS + + dint + clr a0 + move a0,@dirqdraw ;Draw done + + + + +#60hzcode ;*** This code must run at 60HZ + + move @_clk_rd,a2,L ;Increment the time get counter + jrn _no_gt ;If negative then no auto clock update + addk 1,a2 + move a2,@_clk_rd,L + cmpi 1,a2 ;Time to transfer the time? + jrz _gt ;BR = yes go get time + xori 01bh,a2 ;Time to trigger time aquisition? + jrnz _no_gt ;BR = nope - exit + move a2,@_clk_rd,L ;Set counter back to 0 + calla _aquire_time ;Trigger time aquistion + jruc _no_gt ;Done +_gt + calla _get_time ;Transfer time from PIC + move @_tseconds,a2,W ;Seconds = 0 ? + jrnz _no_gt ;BR = Nope - all done + calla _AlarmClock ;else - go check for alarm functions +_no_gt + + .if WWFUNIT + .else + movi SWITCH,a2 + .endif + movi FSWITCH,a3 + + .if WWFUNIT +; move @SWITCH,a2 +; move @COINS,a0 + move @_switch_addr,a2,L + move *a2,a2 + move @_coin_addr,a0,L + move *a0,a0 + sll 16,a0 + andi 0ffffh,a2 + or a2,a0 + .else + move *a2+,a0,L + .endif + not a0 + move a0,*a3+,L + + .if WWFUNIT +; move @SWITCH2,a0 +; move @DIPSWITCH,a1 + move @_switch2_addr,a0,L + move *a0,a0 + move @_dipswitch_addr,a1,L + move *a1,a1 + sll 16,a1 + andi 0ffffh,a0 + or a0,a1 + .else + move *a2,a1,L + .endif + + + not a1 + move a1,*a3,L + + + move @switches_cur,a2,L + move a2,@switches_old,L + move @FSWITCH,a1,L + move a1,@switches_cur,L + move a2,a0 + xor a1,a2 ;down transitions + and a1,a2 + move a2,@switches_down,L + xor a0,a1 ;up transitions + and a0,a1 + move a1,@switches_up,L + + move @switches_cur+20h,a2,L + move a2,@switches_old+20h,L + move @FSWITCH+20h,a1,L + move a1,@switches_cur+20h,L + move a2,a0 + xor a1,a2 ;down transitions + and a1,a2 + move a2,@switches_down+20h,L + xor a0,a1 ;up transitions + and a0,a1 + move a1,@switches_up+20h,L + + + move @dirqtimer,a1 ;Tell mproc to run + addk 1,a1 + move a1,@dirqtimer + + callr switch_stack ;Scan misc switches + + MOVK 5,A1 + MOVI C_FLAGS,A2 +ALL_COUNTERS_DONE + MOVB *A2,A3 + JRZ NO_WORRY_COUNTER + SUBK 1,A3 + MOVE A3,*A2 +NO_WORRY_COUNTER + ADDK 8,A2 + DSJS A1,ALL_COUNTERS_DONE + + + dint + setf 1,0,0 ;Enable display int + movk 1,a1 + move a1,@INTENB+DIP + setf 16,1,0 + + + move @dirqcnt,a0 + addk 1,a0 + move a0,@dirqcnt + sll 32-3,a0 + jrnz dirqx ;Skip? + + + ;>Do every 8 ticks + .if DEBUG + .else + move @dirqtimer,a0 + cmpi 400,a0 + jahs init_prog ;Reset? + .endif + + + move @C_FRAC,a0 ;>Count down coin fraction timer + jrz #nfrc ;No frac? + sll 32-8,a0 + srl 32-8,a0 + subk 1,a0 + move a0,@C_FRAC +#nfrc + + ;>Coin counters + move @COINCNTR,a0,L + jrz l_dog ;Counters, timers inactive? + + movk 2,a4 ;do both counters + movi COINCNTR,a5 +ccntr0l + movb *a5,a1 ;more counts for counter ? + jrz c_cntr0 ;no + movb *a5(16),a2 ;previous pulse time out? + jrnz c_cntr0 ;no + movk 2,a2 + movb a2,*a5(16) ;start new pulse + dec a1 ;decrement counts + movb a1,*a5 +c_cntr0 + addk 8,a5 + dsjs a4,ccntr0l + + clr a2 ;counter on mask +; movi >100,a3 + MOVK >1,a3 + movk 2,a4 +c_cntr1l + movb *a5,a0 ;counter timer active? + jreq c_cntr1 ;no + dec a0 ;yes, dec it and store + movb a0,*a5 + jreq c_cntr1 ;done + add a3,a2 ;turn counter solenoid on +c_cntr1 + sll 1,a3 + addk 8,a5 + dsjs a4,c_cntr1l + + move @_coin_counter_addr,a0,L + ori 32,a2 + move a2,*a0,W + +l_dog + .if TUNIT2 +; move a0,@WATCHDOG ;Hit + move @_watchdog_addr,a0,L + move a0,*a0 + .else + + movi wdogbone_t,a1 ;>Clock watchdog + move @SYSCOPY,a2 + movk 1,a3 + movi SYSCTRL,a4 + move *a1+,a0 + +roverl or a2,a0 + move a0,*a4 + xor a3,a0 + move a0,*a4 + move *a1+,a0 + jrnn roverl ;More? + + move a2,*a4 ;Restore + .endif + + move @VCOUNT,a14 + move a14,@dma_bog + +dirqx mmfm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 + mmfm sp,b0,b1,b2,b3,b4,b5,b6,b7,b11 + reti + + +wdogbone_t + .word 0,2,0,2,2,-1 ;Watchdog feed table + + +#******************************* +* Scan switches + + SUBRP switch_stack + +; move @COINS,a0,W +; move @SWITCH,a1,W + move @_coin_addr,a0,L + move *a0,a0,W + move @_switch_addr,a1,L + move *a1,a1,W + sll 16,a0 + sll 16,a1 ;mask off top 16 + srl 16,a1 + or a1,a0 + + ori >6600ffff,a0 ;Set ignore bits +; movb @COINS+16,a1 +; move @SWITCH2,a1,W + move @_switch2_addr,a1,L + move *a1,a1,W + move @swtemp1,a1,L ;previous state t=n-1 + move @swtemp2,a2,L ;previous previous t=n-2 + move a1,@swtemp2,L ;new previous previous + move a0,@swtemp1,L ;new previous + and a1,a2 + andn a0,a2 ;look for 110 + jrz #x ;No switches? + + move @swstack_p,a3,L + +#lp cmpi swstackbot,a3 + jreq #x ;Switch stack overflow? + lmo a2,a0 ;1's comp leftmost bit + rl a0,a2 ;get rid of bit + sll 1,a2 + movk 31,a1 ;calc true bit # + sub a0,a1 + move a1,-*a3 ;Stack switch number (0-31) + rl a1,a2 ;Restore switch word without bit + jrnz #lp + + move a3,@swstack_p,L ;restore switch stack + +#x rets + + + +****************************************************************************** +* badtrapx - Come here when a trap is hit that is not defined and log it + +badtrap31 +badtrap30 +badtrap28 +badtrap27 +badtrap26 +badtrap25 +badtrap24 +badtrap23 +badtrap22 +badtrap21 +badtrap20 +badtrap19 +badtrap18 +badtrap17 +badtrap16 +badtrap15 +badtrap14 +badtrap13 +badtrap12 +badtrap11 +badtrap9 +badtrap8 +badtrap7 +badtrap6 +badtrap5 +badtrap4 +badtrap3 + + .if DEBUG ;??? + LOCKUP + eint + .else + CALLERR 9,0 + .endif + + reti + + +;WRITE TO CODE/IMAGE ROM +wrom_int + + .if DEBUG +;If debug, just lockup so we can fix it. + LOCKUP + eint + .else + +;If shipping code, audit the error and clear the int + PUSH a14 + movi SYSCINIT,a14 + xori 02000h,a14 + move a14,@SYSCTRL + ori 02000h,a14 + move a14,@SYSCTRL + PULL a14 + CALLERR 9,0 + eint + .endif + + reti + +badtrap + .if DEBUG + LOCKUP + eint + .else + CALLERR 9,0 + .endif + + reti + +badtrap29 + .if DEBUG + reti +; LOCKUP ;A write to ROM! + .endif + jruc badtrap + +****************************************************************************** +* trap3_handler - Security Trap +* a1 = Security Service Identifier +* 0 = SetAddresses (I/O address remap) +* a0 = Data for particular Security Service +* Security Service Value +* 0 Don't Care + SUBR trap3_handler + sll 5,a1 + addi _SecurityFunctions,a1 + move *a1,a1,L + call a1 + reti + +;Initial GSP I/O register values + +gspioinit_t +;NEW - Values change because dot clock is twice as fast. +; .word 015h ;>C0000000 -- HESYNC +; .word HEBLNKINIT ;>C0000010 -- HEBLNK +; .word 0fah ;>C0000020 -- HSBLNK +; .word 0fch ;>C0000030 -- HTOTAL + .word 02bh ;>C0000000 -- HESYNC + .word HEBLNKINIT ;>C0000010 -- HEBLNK + .word 01f5h ;>C0000020 -- HSBLNK + .word 01f9h ;>C0000030 -- HTOTAL + + .word 3 ;>C0000040 -- VESYNC + .word 20 ;>C0000050 -- VEBLNK + .word 274 ;>C0000060 -- VSBLNK ;254 lines + .word 288 ;>C0000070 -- VTOTAL + .word >f010 ;>C0000080 -- DPYCTL ENV|NIL|DXV|SRE|>10 + .word 0fffch ;>C0000090 -- DPYSTRT + .word EOSINT ;>C00000A0 -- DPYINT + .word 2ch ;>C00000B0 -- CONTROL + .word 0 ;>C00000C0 -- HSTDATA + .word 0 ;>C00000D0 -- HSTADRL + .word 0 ;>C00000E0 -- HSTADRH + .word 0 ;>C00000F0 -- HSTCTLL + .word 0 ;>C0000100 -- HSTCTLH + .word 0 ;>C0000110 -- INTENBL + .word 0 ;>C0000120 -- INTPEND + .word 0 ;>C0000130 -- CONVSP + .word 0 ;>C0000140 -- CONVDP + .word PXSIZE ;>C0000150 -- PSIZE + .word 0 ;>C0000160 -- PMASK + .word 0 ;>C0000170 -- RESERVED + .word 0 ;>C0000180 -- RESERVED + .word 0 ;>C0000190 -- RESERVED + .word 0 ;>C00001A0 -- RESERVED + .word 28 ;>C00001B0 -- DPYTAP +giiend + + +;Initialize all 32 trap vectors + + .sect "VECTORS" + + .long badtrap31 ;TRAP 31 + .long badtrap30 ;TRAP 30 ILLOP --- ILLEGAL OPCODE + .long badtrap29 ;TRAP 29 + .long badtrap28 ;TRAP 28 + .long badtrap27 ;TRAP 27 + .long badtrap26 ;TRAP 26 + .long badtrap25 ;TRAP 25 + .long badtrap24 ;TRAP 24 + .long badtrap23 ;TRAP 23 + .long badtrap22 ;TRAP 22 + .long badtrap21 ;TRAP 21 + .long badtrap20 ;TRAP 20 + .long badtrap19 ;TRAP 19 + .long badtrap18 ;TRAP 18 + .long badtrap17 ;TRAP 17 + .long badtrap16 ;TRAP 16 + .long badtrap15 ;TRAP 15 + .long badtrap14 ;TRAP 14 + .long badtrap13 ;TRAP 13 + .long badtrap12 ;TRAP 12 + .long badtrap11 ;TRAP 11 WV --- WINDOW VIOLATION + .long DIRQ ;TRAP 10 DI --- DISPLAY INTERRUPT + .long badtrap9 ;TRAP 9 HI --- HOST INTERRUPT + .long badtrap8 ;TRAP 8 NMI -- NONMASKABLE INTERRUPT + .long badtrap7 ;TRAP 7 + .long badtrap6 ;TRAP 6 + .long badtrap5 ;TRAP 5 + .long badtrap4 ;TRAP 4 + .long trap3_handler ;TRAP 3 Security Trap + .long wrom_int ;TRAP 2 INT2 --- EXTERNAL INTERRUPT 2 + .long dma_irq ;TRAP 1 INT1 --- EXTERNAL INTERRUPT 1 + .long init_prog ;TRAP 0 RESET + +****************************************************************************** + .end + + \ No newline at end of file diff --git a/BACKUP/MAINIMG.ASM b/BACKUP/MAINIMG.ASM new file mode 100644 index 0000000..e5e5c42 --- /dev/null +++ b/BACKUP/MAINIMG.ASM @@ -0,0 +1,10 @@ + .FILE "mainimg.asm" + .OPTION B,D,L,T + + .include mainimg.glo + .include mainimg.tbl + .DATA + .even + + + \ No newline at end of file diff --git a/BACKUP/MAKE.INI b/BACKUP/MAKE.INI new file mode 100644 index 0000000..dd2463e --- /dev/null +++ b/BACKUP/MAKE.INI @@ -0,0 +1,13 @@ +.MISER : # always use the miser. +.SUFFIXES : .EXE .OBJ .LIN .DEC .C .ASM .FOR .RAW .OUT + +RAM = d:\ +MAKE_TMP = ${RAM} + +.asm.obj: + preasm $*.asm $*.axx + GSPA $*.axx $*.obj $*.lst -h -l -v10 + @del $*.axx + @CRNCHLST $*.lst + + \ No newline at end of file diff --git a/BACKUP/MAKE0100.BAT b/BACKUP/MAKE0100.BAT new file mode 100644 index 0000000..0f4bc2e --- /dev/null +++ b/BACKUP/MAKE0100.BAT @@ -0,0 +1,5 @@ +@echo off +del mproc.axx +if errorlevel 1 goto m_end +echo>C:\VIDEO\WWF\make0100.err +:m_end diff --git a/BACKUP/MAKEFILE b/BACKUP/MAKEFILE new file mode 100644 index 0000000..18457ab --- /dev/null +++ b/BACKUP/MAKEFILE @@ -0,0 +1,142 @@ +# +# WRESTLING MAKEFILE +# + +.SUFFIXES : .EXE .ASM .OBJ .C + +# + + +OBJ = display.obj main.obj util.obj pal.obj mproc.obj \ + bakgnd.obj bgndtbl.obj bgndpal.obj \ + crowd.obj imgpal.obj miscimg.obj ropeimg.obj \ + roboimg.obj fontsimg.obj \ + bamimg.obj bretimg.obj doinkimg.obj \ + razorimg.obj takerimg.obj yokoimg.obj \ + shawnimg.obj leximg.obj \ + wrestle.obj wrestle2.obj special.obj anim.obj getup.obj \ + drone.obj \ + dcssound.obj patch.obj text.obj \ + attract.obj unzip.obj \ + string.obj square.obj \ + adjust.obj audit.obj test.obj diag.obj menu.obj hstd.obj \ + select.obj robo.obj tables.obj \ + coll2.obj lifebar.obj ropes.obj \ + doink.obj razor.obj lex.obj bret.obj \ + bam.obj taker.obj yoko.obj shawn.obj \ + react1.obj react2.obj react3.obj react4.obj react5.obj \ + react6.obj react7.obj react8.obj react9.obj \ + collis.obj ring.obj screen.obj progress.obj \ + bamseq1.obj bamseq2.obj bamseq3.obj bamseq4.obj \ + hrtseq1.obj hrtseq2.obj hrtseq3.obj hrtseq4.obj \ + dnkseq1.obj dnkseq2.obj dnkseq3.obj dnkseq4.obj \ + lexseq1.obj lexseq2.obj lexseq3.obj lexseq4.obj \ + rzrseq1.obj rzrseq2.obj rzrseq3.obj rzrseq4.obj \ + shnseq1.obj shnseq2.obj shnseq3.obj shnseq4.obj \ + yokseq1.obj yokseq2.obj yokseq3.obj yokseq4.obj \ + undseq1.obj undseq2.obj undseq3.obj undseq4.obj + +wrestle.out: $(OBJ) wrestle.cmd + gsplnk wrestle.cmd + copy d:\wrestle.out c:\video\wwf + copy d:\wrestle.map c:\video\wwf + tv wrestle /v +$(OBJ): $*.asm + + +adjust.obj: mproc.equ display.equ sys.equ game.equ link.equ menu.equ dip.equ macros.h sound.h fontsimg.glo +anim.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ fontsimg.glo bgndtbl.glo ring.equ sound.h +attract.obj: mproc.equ display.equ sys.equ gsp.equ macros.h game.equ audit.equ link.equ sound.h imgtbl.glo fontsimg.glo bgndtbl.glo +audit.obj: mproc.equ display.equ sys.equ gsp.equ game.equ link.equ menu.equ audit.equ macros.h sound.h fontsimg.glo bgndtbl.glo +bakgnd.obj: mproc.equ display.equ gsp.equ sys.equ game.equ macros.h fontsimg.glo bgndtbl.glo +bam.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +bamimg.obj: bamimg.tbl +bamseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h bamimg.h +bamseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h bamimg.h +bamseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h bamimg.h +bamseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h bamimg.h +bret.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +bretimg.obj: bretimg.tbl +collis.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ special.equ +crowd.obj: mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ macros.h link.equ sound.h bgndtbl.glo imgtbl.glo +dcssound.obj: macros.h mproc.equ sys.equ game.equ plyr.equ audit.equ macros.h display.equ +diag.obj: gsp.equ sys.equ mproc.equ link.equ imgtbl.glo macros.h game.equ dip.equ +display.obj: gsp.equ sys.equ mproc.equ display.equ macros.h fontsimg.glo +dnkseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +dnkseq2.obj: macros.h mproc.equ sys.equ display.equ game.equ plyr.equ anim.equ sound.h +dnkseq3.obj: macros.h mproc.equ sys.equ display.equ game.equ plyr.equ anim.equ sound.h +dnkseq4.obj: macros.h mproc.equ sys.equ display.equ game.equ plyr.equ anim.equ sound.h +doink.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +doinkimg.obj: doinkimg.tbl +#;SL +drone.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ plyr.equ +fontsimg.obj: fontsimg.glo +hrtseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +hrtseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +hrtseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +hstd.obj: audit.equ mproc.equ display.equ sys.equ game.equ link.equ macros.h fontsimg.glo bgndtbl.glo +lex.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +leximg.obj: leximg.tbl +lexseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +lexseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +lexseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +lexseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +lifebar.obj: macros.h mproc.equ display.equ gsp.equ game.equ plyr.equ sys.equ link.equ fontsimg.glo sound.h +main.obj: mproc.equ display.equ gsp.equ sys.equ game.equ dip.equ macros.h +menu.obj: mproc.equ display.equ sys.equ game.equ link.equ menu.equ macros.h sound.h fontsimg.glo gsp.equ +miscimg.obj: miscimg.tbl +mproc.obj: gsp.equ sys.equ mproc.equ display.equ macros.h +pal.obj: mproc.equ display.equ sys.equ gsp.equ game.equ macros.h fontsimg.glo bgndtbl.glo +progress.obj: mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ macros.h link.equ sound.h bgndtbl.glo imgtbl.glo +razor.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h lifebar.h +razorimg.obj: razorimg.tbl +react1.obj: plyr.equ damage.equ +react2.obj: plyr.equ +react3.obj: plyr.equ +react4.obj: plyr.equ +react5.obj: plyr.equ +react6.obj: plyr.equ +react7.obj: plyr.equ +react8.obj: plyr.equ +react9.obj: plyr.equ +ring.obj: ring.equ +robo.obj: mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ macros.h link.equ roboimg.glo fontsimg.glo +roboimg.obj: roboimg.glo +ropes.obj: display.equ ring.equ +ropeimg.obj: ropeimg.tbl +rzrseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +rzrseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +rzrseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +rzrseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +select.obj: mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ macros.h link.equ sound.h fontsimg.glo bgndtbl.glo imgtbl.glo +shawn.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +shawnimg.obj: shawnimg.tbl +shnseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +shnseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +shnseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +shnseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +special.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ plyr.equ anim.equ sound.h imgtbl.glo fontsimg.glo bgndtbl.glo ring.equ special.equ +square.obj: sys.equ macros.h +string.obj: mproc.equ display.equ sys.equ gsp.equ macros.h game.equ audit.equ fontsimg.glo bgndtbl.glo +taker.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +takerimg.obj: takerimg.tbl +test.obj: mproc.equ display.equ sys.equ gsp.equ imgtbl.glo game.equ link.equ menu.equ macros.h dip.equ fontsimg.glo sound.h +text.obj: text.tbl macros.h fontsimg.glo +undseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +undseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +undseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +undseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +unzip.obj: mproc.equ display.equ gsp.equ sys.equ macros.h fontsimg.glo +util.obj: mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ macros.h +wrestle.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ plyr.equ anim.equ sound.h imgtbl.glo fontsimg.glo bgndtbl.glo ring.equ wwfsec.equ +wrestle2.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ plyr.equ anim.equ sound.h imgtbl.glo fontsimg.glo bgndtbl.glo ring.equ +yoko.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +yokoimg.obj: yokoimg.tbl +yokseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +yokseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +yokseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +yokseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +screen.obj: screen.tbl + +# END + \ No newline at end of file diff --git a/BACKUP/MENU.ASM b/BACKUP/MENU.ASM new file mode 100644 index 0000000..73e4da2 --- /dev/null +++ b/BACKUP/MENU.ASM @@ -0,0 +1,7393 @@ +************************************************************** +* +* Software: LARRY DEMAR and DR. J +* Initiated: ? +* +* Modified: Shawn Liptak, 11/1/91 -Total carnage +* Shawn Liptak, 1/20/92 -Coinage from T2, Dipswitch +* Shawn Liptak, 1/24/92 -Coinage corrections +* Shawn Liptak, 3/4/92 -Basketball mods +* Shawn Liptak, 10/2/92 -TUNIT sound mods +* Jason Skiles, 11/24/93 -DCS sound mods +* Jason Skiles, 12/3/93 -Strip audits for WWF +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/7/93 11:25 +************************************************************** + .file "menu.asm" + .title "test menus" + .width 132 + .option b,d,l,t + .mnolist + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "game.equ" + .include "link.equ" + .include "menu.equ" + .include "macros.h" + .include "sound.h" + + .include "fontsimg.glo" + + .text + +; IN THIS MODULE + + .DEF MEN_MAIN,GET_CSPT + .DEF MESS_FAC + .DEF ANY_BUT,MEN_YN + .DEF STR_OBJ + .DEF STR_FREE + .DEF CKPROMPT + .DEF GO_DIAG ;ROUTINE FOR DIAGNOSTIC MENU + .DEF RTR_LEV,ROM_LEV + .DEF MESS_MM + .DEF CS_ENTS ;NUMBER OF HIGHEST IN COIN TABLE + .DEF TWO_TS,TWO_TP + .DEF FAC_STUF + .DEF BUILD_ST + .DEF SCODE ;SYNTH CODE CURRENTLY BEING MADE + .DEF DCODE ;DIG CODE CURRENTLY BEING MADE + .DEF HID_P + .DEF SNDTST + .DEF USA_1, USA_2, USA_3, USA_4, USA_ELECTITLE + .DEF GERMAN_1, GERMAN_2, GERMAN_3, GERMAN_4, GERMAN_ELECTITLE + .DEF FRENCH_1, FRENCH_2, FRENCH_3, FRENCH_4, FRENCH_ELECTITLE + .DEF DIPCOINTAB + .def RES_ALL + +****************************************************************************** +* EXTERNAL REFERENCES + .ref _coin_addr + .ref _switch_addr + .ref _switch2_addr + .ref _sound_addr + .ref _soundirq_addr + .ref _coin_counter_addr + .ref _set_time + .ref dec_to_asc + .ref copy_rom_string + .ref concat_string,concat_rom_string + .ref message_buffer + .ref MENU_TOP + .ref COL_INST + .ref GETSTICK + .ref ST_STICK + .ref CLR_MAIN + .ref ADJ_INST + .ref CADJ_BOX + .ref CLR_CUR + .ref _switch_map_mode + .ref _clk_rd + .ref _get_time + .ref _aquire_time + + + .globl _rtc_seconds, _rtc_day, _rtc_date, _rtc_month + .globl _rtc_minutes, _rtc_hours, _rtc_year + .globl _tseconds,_tminutes,_thours,_tday,_tdate,_tmonth,_tyear + .globl _serial_number,_month,_day,_year,_man_date + + .bss _setup_mess,10*16 ;Used for built messages + .bss _setup_mess_msg,8*40 ;Used for built message strings + + .bss _rtc_seconds,16 ;These are used when SETTING the RTC + .bss _rtc_minutes,16 + .bss _rtc_hours,16 + .bss _rtc_day,16 + .bss _rtc_date,16 + .bss _rtc_month,16 + .bss _rtc_year,16 + + .bss _last_seconds,16 ;This is used when displaying the time + + .bss _tseconds,16 ;This is where the current time is + .bss _tminutes,16 ;stored when the time data is read + .bss _thours,16 ;from the PIC. + .bss _tday,16 + .bss _tdate,16 + .bss _tmonth,16 + .bss _tyear,16 + .bss _mytemp,32 + + .bss _serial_number,32 ;Game Serial Number (Hexidecimal) + .bss _man_date,32 ;Date of manufacture (composite) + .bss _month,32 ;Date of manufacture (month) + .bss _day,32 ;Date of manufacture (date) + .bss _year,32 ;Date of manufacture (year) + + .bss _auto_update_save,32 ;Save area for clock auto update + + + .ref display_init + .ref opmsg_main + .ref SWITCHTEST + .ref CLR_AUD + .ref fswitches_cur,fswitches_down,fudge_switches2 + .ref AREUSURE + .ref RD15FONT + .ref L_MESS + .ref SCRCLR + .ref SUR_MESS + .ref DIAG_EX + .ref GET_ADJ + .ref NO_CREDS + .ref COL_BARS + .ref DIGSRT + .ref STRCNRM + .ref GET_AUD + .ref STRCAT + .ref QSNDRST + .ref FAC_SET + .ref GEN_MENU + .ref STRNGRAM + .ref GET_HSC + .ref STD_BORD + .ref CLR_AUDR + .ref STRNEW1 + .ref CMOS_VAL + .ref FORM_ADC + .ref LM_FINIS + .ref INIT_HSR + .ref TOP_BOX + .ref LM_SETUP + .ref B_MENU + .ref GO_ADJ + .ref BLNKAREA + .ref MAIN_RET + .ref STRLNRM + .ref RD7FONT + .ref WC_WORD + .ref HEXTOASC + .ref DIAGCPUTEST + .ref CROSS_H + .ref WDOGDIS + .ref SURE_BOX + .ref ROM_NAME + .ref STRRNRM + .ref FILLAREA + .ref CLR_SCRN + .ref CAT_A0 + .ref CK_MAX + .ref BURN_IN + .ref WAIT_BUT + .ref BAD_AUD + + ;from AUDIT.ASM + .ref AUD1 + + ;from DIAG.ASM + .ref RECTANGLE + + ;from HSTD.ASM + .ref INIT_TB,STREAK_TAB,PIN_SPEED_TAB,INIT_HSTRING + .REF BEATEN_TAB + + ;from MPROC.ASM + .ref KIL1C + + ;from NSOUND.ASM + .ref SNDSND,nosounds,set_volume + + ;from UTIL.ASM + .ref get_but_val_down,get_stick_val_cur,dpageflip_off + +****************************************************************************** + + .BSS FAC_FLAG,16 ;FLAG SAYS CLEAR AUDITS AND HSTABLE + ;IF FACTORY SETTINGS SUCCEED. + .BSS SCODE,16 ;SYNTH CODE LAST MADE! + .BSS DCODE,16 ;DIG CODE LAST MADE! + .BSS TMPOBJ,32 ;TEMPORARY OBJECT FROM STR_OBJ + + BSSX octopus2,16 + + + +************************************************************************** +* * +* COIN TABLE * +* * +************************************************************************** +* +* The coin table is made up of the normal entries from +* the pinball system, as well as some new ones that +* determine start and buy-in cost, and others that +* aid in the determination of a "total collection". +* +* Left Slot Multiplier word +* Center Slot Multiplier word +* Right Slot Multiplier word +* fourth slot Muliplier word +* bill validator Muliplier word +* Units for Credit word +* Units for Bonus word +* Minimum Units word +* Credits to start word +* Credits to Continue word +* Divisor in money calculation word 0 means "OFF" +* +* -------------------------------------------------------------- +* The above value get copied as adjustments (and are adjustable). +* In addition, the coin table contains help on how to arrive at +* the "Total Collection" for the coin audits. +* -------------------------------------------------------------- +* +* Count for each Left coin word +* Count for each Center coin word +* Count for each Right coin word +* Count for fourth coin word +* Count for DBV word +* Pointer to Leading text string long +* Pointer to Following text string long +* +************************************************************************** +* +* GET_CSPT +* +* THIS IS CALLED TO RETURN IN A6 THE CURRENT +* CSELCT LINE AS STORED IN THE ADJUSTMENT TABLE. +* +************************************************************************** +GET_CSPT + PUSH a0 + movk ADJPRICE,a0 + CALLA GET_ADJ ;GET THE COIN SELECT NUMBER BEING USED. + CALLR CS_POINT + PULL a0 + RETS + +************************************************************************** +* CS_POINT - Point at selected entry in the coinage select table +* A0=Offset # +* Rets: A6=*Coinage table +************************************************************************** +CS_POINT + MMTM SP,A0,A1 + MOVE A0,A0 ;ZERO? + JRZ CS1 ;YEP...RETURN FIRST LINE + + CMPI CS_ENTS,A0 ;IN RANGE? + JRLS CS2 ;YEP...CONTINUE + MOVK 1,A0 ;TOO LARGE.......USE 1ST LINE. + +CS2 DEC A0 ;INDEX INTO TABLE +CS1 MOVI CS_SIZE,A1 ;SIZE PER ENTRY + MPYU A0,A1 ;OFFSET INTO TABLE + ADDI CSELCT,A1 + MOVE A1,A6 ;RETURN THE POINTER + MMFM SP,A0,A1 + RETS + +************************************************************************** +* +* CKPROMPT +* +* IS THERE A PROMPT STRING FOR THE CREDITS PAGE. +* +* A0 RETURNS: +* +* YES.....RETURN POINTER TO SOMETHING +* NO......RETURN ZERO +* +* IF A0 HAS A POINTER THEN.... +* +* IF A1 = 0 THEN A0 IS AN L_MESS STRING THAT SHOULD +* JUST BE SENT OUT. +* +* IF A1 != 0 THEN A0 IS A POINTER LIST OF UP TO 2 MESSAGES. +* THAT GIVE PRICING INFO +* +* A1 = 0 PLOT THE A0 STRING OUTRIGHT USING L_MESS +* (IT CONTAINS ALL DATA) +* +* A1 = 1 PLOT ONLY THE STRING LIST (1 OR 2 POINTERS +* CENTERED APPROPRIATELY +* +* A1 = 2 PLOT THE 1ST LINE OF THE STRING LIST ALONG +* WITH THE 2 CREDITS TO START...1 TO CONTINUE +* +* A1 = 3 PLOT THE 2ND LINE OF THE STRING LIST ALONG +* WITH THE 2 CREDITS TO START...1 TO CONTINUE +* +* A1 = 4 PLOT THE 3RD LINE OF THE STRING LIST ALONG +* WITH THE 2 CREDITS TO START...1 TO CONTINUE +* +* A1 = 5 PLOT THE 1ST LINE OF THE STRING LIST ALONG +* ALONG WITH 2 COINS PER PLAYER +* +* A1 = 6 PLOT THE 2ND LINE OF THE STRING LIST ALONG +* ALONG WITH 2 COINS PER PLAYER +* +* A1 = 7 PLOT THE 3RD LINE OF THE STRING LIST ALONG +* ALONG WITH 2 COINS PER PLAYER +* +* A1 = 8 CUSTOM MESSAGE +* +************************************************************************** + +CKPROMPT + PUSH a6 + movk ADJFREPL,a0 + CALLA GET_ADJ + jrnz RET_NO ;Free play? + + CALLA CK_MAX ;ARE WE AT MAX CREDITS? + JRHS RET_MAX + + movk ADJNOCPAG,a0 + CALLA GET_ADJ ;CHECK THE ADJUSTMENT + JRNZ CKSPCASE ;WE'RE SET TO SHUT UP.JUST START/CONT + + movk ADJ1ST6,a0 ;has operator messed around? + CALLA GET_ADJ + JRZ CKSPCASE ;YEP...GO FOR GENERIC "2 TO START" + +* OPERATOR IS USING CANNED COINAGE....WE NEED TO USE THE +* CHECK IF ITS 2/1 OR 2/2 + + CALLR CK_2_CRED ;IS IT A 2 CREDIT MODE? + JRZ NOT_2_MODE ;NOPE...PRINT STOCK STUFF + + MOVE A0,A1 ;COPY 2/1 2/2 CODE + CALLR GET_CSPT ;POINT A6 AT CSEL FOR US NOW. + MOVE *A6(CS_PICK),A0 ;GET INDICATION OF WHICH LINE + JRZ CKSPCASE ;IT SAYS JUST ENUMERATE THE MODE! + +* NOW....IF ITS 2/1, A0 HAS THE CORRECT RETURN CODE +* IF ITS 2/2 WE NEED TO ADD 2 + + subk 1,a1 + JRZ RET_A0_VAL ;2/1? + + addk 3,a0 + JRUC RET_A0_VAL ;RETURN THIS! + +NOT_2_MODE + CALLR GET_CSPT ;POINT A6 AT CSEL FOR US NOW. + MOVE *A6(CS_PROMPT),A0,L ;FETCH POINTER TO MESSAGE (IF ANY) + JRZ CKSPCASE + ;WE HAVE SOMETHING STORED AT THE PROMPT + CMPI CSM_LAST,A0 ;IS IT LITTLE? + JRHI CKEXIT ;NOPE..ITS A POINTER..RETURN L_MESS STATUE + +RET_A0_VAL + MOVE A0,A1 ;ITS LITTLE...RETURN IT AS A CODE + MOVE *A6(CS_LIST),A0,L ;PASS BACK MESSAGE LIST FOR THIS MODE + JRUC CK_BYE + +RET_NO CLR A0 ;IT IS FREE PLAY. +CKEXIT CLR A1 ;NO FANCIES YET +CK_BYE PULL a6 + move a0,a0 ;Pass Z + rets + +* CONTROL COMES HERE IF IT LOOKS LIKE NO MESSAGE IS +* APPROPRIATE....CHECK FOR 2 TO START 1 TO CONTINUE GENERIC NEEDED. + +CKSPCASE + CALLR CK_2_CRED ;CHECK IF THERE ARE 2 CREDIT MODES. + JRZ RET_NO ;NOT A 2 CREDIT MODE. + + subk 1,a0 + JRZ TWO_ONE ;YEP...RETURN 2/1 + + MOVI TWO_CRED_PER_PLAYER,A0 + JRUC CKEXIT ;RETURN IT! + + +TWO_ONE MOVI TWO_TO_START_2C,A0 + + + JRUC CKEXIT + +RET_MAX MOVI MAX_C_M,A0 + JRUC CKEXIT + + +************************************************************************** +* CK_2_CRED - Checks if in a 2-credit to start mode +* +* A0=0 NOT 2/1 OR 2/2 CREDIT MODE +* A0=1 2 TO START 1 TO CONTINUE +* A0=2 2 TO START 2 TO CONTINUE +* +* Z NOT 2/1 OR 2/2 CREDIT MODE +* NZ IS 2/1 OR 2/2 CREDIT MODE +************************************************************************** +CK_2_CRED + MOVI ADJCSTRT,A0 + CALLA GET_ADJ ;HOW MANY TO START + subk 2,a0 + jrnz c2c20 ;!2 to start? + + MOVI ADJCCONT,A0 + CALLA GET_ADJ ;GET CONTINUE NUMBER + cmpi 2,a0 ;1 or 2 is what we return + jrhi c2c20 ;>2? + move a0,a0 ;Return NZ (unless its 2/0) + rets + +c2c20 clr a0 ;Pass Z + rets + +************************************************************************** +* * +* MENU HANDLING SOFTWARE * +* * +************************************************************************** + +************************************************************************** +* * +* FORCE_MAIN * +* * +* THIS IS CALLED TO GET TO MAIN MENU FROM LEVEL FURTHER * +* THAN 1 DOWN. IT SETS THE GLOBAL FLAG "MAIN_RET" * +* NON ZERO. GEN_MENU WILL KEEP RETURNING UNTIL * +* IT GETS BACK TO THE MAIN MENU. * +* * +************************************************************************** +FORCE_MAIN + MOVK 1,A0 ;POSITIVE NUMBER FORCES MAIN MENU. + MOVE A0,@MAIN_RET + RETP ;NOW "RETURN TO THE MENU" + +************************************************************************** +* * +* DIAGNOSTIC TESTS SELECTED......SHOW DIAGNOSTIC TEST MENU * +* * +************************************************************************** +GO_DIAG + MOVI MEN_DIAG,A8 ;PUT UP THE MENU AND GO! + JAUC GEN_MENU ;THIS WILL RETURN TO LEVEL ABOVE US! + +************************************************************************** +* * +* COIN BOOKKEEPING SELECTED * +* * +************************************************************************** +gb20 JSRP DO_CLCOIN +GO_BOOK + CALLA CLR_SCRN + MOVI MES_BOOK,A2 + MOVI ROBO_WHITE,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + MOVI COIN_AUDS,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + MOVI COIN1_AUDS,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI AUDLCOIN,A8 ;NOW PRINT MONEY FOR 1ST 3 + JSRP PRINT_COL + + MOVI COIN2_AUDS,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + + +; MOVI COIN_A2,A0 ;PUT PART 2 OF THE TABLE THERE. +; JSRP PRNT_AUD + + MOVI MEN_DETAIL,A8 + MOVK 2,A9 ;CURSOR ON 2nd ENTRY + JSRP B_MENU ;SEE IF THEY WANT PAGE 2. + CMPI 1,A8 ;DID WE GET 1'ST ENTRY? + jreq gb20 + + RETP + + +;DETAIL_SCREEN +; CALLA CLR_SCRN ;CLEAR OUT FOR ACTION! +; +; MOVI DT_Y1,A0 ;HEIGHT OF TOP TITLE +; MOVI ROBO_YELLOW,A9 ;COLOR +; CALLA F_TITLE ;FRAME IT +; +; MOVI DT_Y2,A0 ;HEIGHT OF 2ND TITLE +; CALLA F_TITLE ;FRAME IT +; +; MOVI DETAIL_TITLES,A8 ;NO ROOM FOR PRETTY TOP BOX...DO TITLES +; JSRP L_MESS ;ESTABLISH THE TITLES. +; +; MOVI COIN_D1,A0 ;DETAILED AUDIT 1 +; JSRP PRNT_AUD ;PRINT IT +; +; MOVI AUDLCOIN,A8 ;NOW PRINT MONEY FOR 1ST 3 +; JSRP PRINT_COL +; +; MOVI AUDLCSUB,A8 ;SUB-TOTAL OF TOTAL MONEY +; JSRP PRINT_SUBTOTAL ;PRINT IT. +; +; MOVI COIN_D2,A0 ;DETAILED AUDIT 2 +; JSRP PRNT_AUD +; +; MOVI AUDLCDC,A8 ;NOW PRINT MONEY FOR DOOR CLOSED SET +; JSRP PRINT_COL +; +; MOVI AUDLCDCS,A8 ;NOW PRINT SUB-TOTAL FOR DOOR CLOSED +; JSRP PRINT_SUBTOTAL ;THATS IT! +; +; MOVI MEN_CLR_SUB,A8 ;CLEAR SUBTOTAL OR RETURN TO MAIN MENU +; MOVI 2,A9 ;CURSOR ON 2ND ENTRY +; JSRP B_MENU +; +; CMPI 1,A8 ;CHOICE 1 IS CLEAR..... +; JRNZ NO_CLEAR_SUB ;NOPE...RETURN TO CALLER! +; +; MOVI MESS_CLEAR_SUBS,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE +; MOVI CLR_SUBS,A9 ;ROUTINE TO DO IT +; MOVI MESS_SUBS_CLEAR,A10 ;CONFIRMATION. +; JSRP AREUSURE ;ASK EM. +; JRUC DETAIL_SCREEN ;NOW PUT THIS SCREEN BACK UP. +; +;NO_CLEAR_SUB +;NO_DETAIL +; RETP ;AND RETURN TO OUR CALLER. +; +;PRINT_SUBTOTAL +; CALLR ADD_AUDIT_DY ;PUSH THE Y 1 LEVEL +; MOVI T_SUB,A9 ;USE "SUB-TOTAL" MESSAGE +; JAUC PRINT_MONEY ;AND NOW PRINT THE REQUESTED SUM. + +************************************************************************** +* * +* GAME AUDITS SELECTED * +* * +************************************************************************** + +************************************************************************** +* * +* AUDITS TO BE SHOWN ON GAME AUDITS PAGE: * +* * +* EXTRA MEN * +* GAMES COMPLETED * +* 1 PLAYER MINUTES * +* 2 PLAYER MINUTES * +* TOTAL HOURS PLAYED * +* AVG "PLAYER" GAME TIME * +* AVG. ELAPSED TIME / PLAY * +* * +************************************************************************** + +GO_AUD + CALLA CLR_SCRN + MOVI MES_AUD,A2 + MOVI ROBO_CYAN,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + MOVI GAME_AUDS1,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + SLEEPK 1 + + MOVI MEN_AP1,A8 ;AUDIT PAGE 1 MENU + MOVK 1,A9 ;CURSOR ON 1ST ENTRY + JSRP B_MENU ;SEE IF THEY WANT PAGE 2. + CMPI 1,A8 ;DID WE GET 1'ST ENTRY? + JRNZ NO_AP2 ;NOPE...RETURN TO OUR CALLER + + +#page2 + CALLA CLR_SCRN + + MOVI MES_AUD,A2 + MOVI ROBO_CYAN,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + MOVI GAME_AUDS2,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI MEN_AP2,A8 + MOVK 1,A9 ;CURSOR ON 1ST ENTRY + JSRP B_MENU ;SEE IF THEY WANT PAGE 2. + cmpi 2,A8 ;DID WE GET 2nd ENTRY (RETURN TO PAGE 1) + jreq GO_AUD ;YEP...PUT IT UP! + +#page3 + CALLA CLR_SCRN + + MOVI MES_AUD,A2 + MOVI ROBO_CYAN,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + MOVI GAME_AUDS3a,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI GAME_AUDS3b,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI GAME_AUDS3c,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI GAME_AUDS3d,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + movi GAUD_P3HEAD1,a8 ;and the page header + JSRP L_MESS + + movi GAUD_P3HEAD2,a8 ;and the page header + JSRP L_MESS + + movi GAUD_P3HEAD3,a8 ;and the page header + JSRP L_MESS + + movi GAUD_P3HEAD4,a8 ;and the page header + JSRP L_MESS + + movi GAUD_P3HEAD5,a8 ;and the page header + JSRP L_MESS + + movi GAUD_P3HEAD6,a8 ;and the page header + JSRP L_MESS + + MOVI MEN_AP3,A8 + MOVK 1,A9 ;CURSOR ON 1ST ENTRY + JSRP B_MENU ;SEE IF THEY WANT PAGE 2. + cmpi 2,A8 ;DID WE GET 2nd ENTRY (RETURN TO PAGE 2) + jreq #page2 ;YEP...PUT IT UP! + +NO_AP2 + RETP + +GO_UTIL + MOVI MEN_UTIL,A8 + JAUC GEN_MENU ;PROCESS THE UTILITY MENU! +* +* INDIVIDUAL UTILITY PROGRAMS +* + +DO_CLCRED + MOVI MESS_CLCRED,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE + MOVI CLR_CREDITS,A9 ;ROUTINE TO DO IT + MOVI MESS_CCCONF,A10 ;CONFIRMATION. + JAUC AREUSURE ;ASK EM......THEN RETURN! + +************************************************************************** +* * +* VOLUME ADJUSTMENT SELECTED * +* * +************************************************************************** + + .bss bar_height,16 + +GO_VOL + + calla display_blank + calla dpageflip_off ;page flipping off + + calla CLR_SCRN + movi M_VOLUME,a2 + movi ROBO_GREEN,a3 + JSRP TOP_BOX + + create FX_PID,background_sound ;noise + +; movi pf_volume_1,a8 ;title/instructions +; JSRP L_MESS + movi pf_volume_2,a8 + JSRP L_MESS + movi pf_volume_3,a8 + JSRP L_MESS + + movi bxy,a0 ;frame + movi bw|bh,a1 +; movi ROBO_GREEN,a2 + movi ROBO_BLUE,a2 + fcall RECTANGLE,b6 + + movi bxy+>00030003,a0 ;frame + movi bw|bh->00060006,a1 + movi ROBO_BLACK,a2 + fcall RECTANGLE,b6 + + movi pf_volume_4,a8 ;MIN/MAX + JSRP L_MESS + movi pf_volume_5,a8 + JSRP L_MESS + + clr a0 + move a0,@bar_height + movi ADJVOLUME,a0 + calla GET_ADJ + calla set_volume + callr vol_to_ht + callr adjust_bar_height + SLEEPK 2 + calla display_unblank + +vol_loop_top + SLEEPK 1 + + ;check for done + clr a1 + clr a0 + calla get_but_val_down + or a0,a1 + movk 1,a0 + calla get_but_val_down + or a0,a1 + move @_coin_addr,a0,L + move *a0,a0 + not a0 + andi 0e7ffh,a0 + or a0,a1 + jrnz vol_loop_done + + ;check for a vol change + clr a0 + calla get_stick_val_cur + move a0,a1 + movk 1,a0 + calla get_stick_val_cur + or a0,a1 + andi 0011b,a1 ;filter out left/right + + ;listen to the coin door switches too. OR them in. +; move @COINS,a0 ;the down switch + move @_coin_addr,a0,L + move *a0,a0 + not a0 + andi 0800h,a0 + srl 10,a0 + or a0,a1 +; move @COINS,a0 ;the up switch + move @_coin_addr,a0,L + move *a0,a0 + not a0 + andi 1000h,a0 + srl 12,a0 + or a0,a1 + jrz vol_loop_top + + ;get the volume + movi ADJVOLUME,a0 + calla GET_ADJ + + ;make sure the volume is in range + cmpi 4,a0 + jrge vol_notlow + movi 4,a0 + jruc vol_nothigh +vol_notlow + cmpi 255,a0 + jrle vol_nothigh + movi 255,a0 +vol_nothigh + + btst JOYDN,a1 + jrnz vol_dec + + ;increment volume + cmpi 255,a0 + jreq vol_loop_top + inc a0 + calla set_volume + callr vol_to_ht + callr adjust_bar_height + jruc vol_loop_top + +vol_dec ;decrement volume + cmpi 4,a0 + jreq vol_loop_top + dec a0 + calla set_volume + callr vol_to_ht + callr adjust_bar_height + jruc vol_loop_top + +vol_loop_done + movi FX_PID,a0 ;kill the background noise + calla KIL1C + calla nosounds + + RETP + + +#*************************************** +* Adjusts the bar height +* >a0=new height (1-170) + + SUBRP adjust_bar_height + + move a0,a1 + move @bar_height,a0 +#adjust_loop + cmp a1,a0 + jreq #done + jrlt #grow_bar + + movi ROBO_BLACK,a2 + callr vol_bar_line + dec a0 + jruc #adjust_loop + +#grow_bar + inc a0 + movi ROBO_RED,a2 + callr vol_bar_line + jruc #adjust_loop + +#done + move a0,@bar_height + rets + + +**************************************** +* Draws a line on the volume bar, but won't overwrite green pixels (text) +* >a0=line index (not Ypos) >a2=color + + SUBRP vol_bar_line + + PUSH a0,a1,a2 + ;convert the line index to a linear address + sla 16,a0 + neg a0 + addi bxy+bh->00030000+59,a0 ;various fudges here + cvxyl a0,a0 + + ;now write the color value to all non-green pixels + movi bw-6,a14 +vbl_pixel_loop + movb *a0,a1 +; cmpi ROBO_GREEN&0Fh,a1 + cmpi ROBO_BLUE&0Fh,a1 + jreq vbl_skip_pixel + movb a2,*a0 +vbl_skip_pixel + addk 8,a0 + dsj a14,vbl_pixel_loop + + PULL a0,a1,a2 + rets + +**************************************** +* Converts a 0-255 volume value to a 1-170 bar height value +* >a0=volume +* 40 + +bgsnd3 movi sound_fx_table,a10 +bgsnd6 move *a10+,a3,W + jrz bgsnd3 + calla SNDSND + SLEEP >20 + jruc bgsnd6 + +sound_fx_table + .word >0B0 + .word >080 + .word >203 + .word >0C5 + .word >0B9 + .word >0CB + .word >206 + .word >0B6 + .word >0D1 + .word >315 + .word >202 + .word 0 + +pf_volume_2 + MESS_MAC RD7FONT,SPACING20,200,174+53,COLOR_YELLOW,STRCNRM,0 + .string "ADJUST VOLUME WITH JOYSTICKS OR VOLUME BUTTONS",0,0 + .even + +pf_volume_3 + MESS_MAC RD7FONT,SPACING20,200,184+53,ROBO_LASER,STRCNRM,0 + .string "ANY OTHER BUTTON TO QUIT",0,0 + .even + +pf_volume_4 + MESS_MAC RD7FONT,SPACING20,201,vb_y+>05,ROBO_BLUE,STRCNRM,0 + .string "MAX",0,0 + .even + +pf_volume_5 + MESS_MAC RD7FONT,SPACING20,201,vb_y+>a0,ROBO_BLUE,STRCNRM,0 + .string "MIN",0,0 + .even + +vb_y .set >2f +vb_height .set 171 +bxy .set >002e0000+200->18 + +bh .set >b0*>10000 +bw .set >30 + +bthickx .set 3 +bthicky .set 3*>10000 + +volume_table + .long bh+3,bxy ; height:width / y:x coordinates + .long bh+3,bxy+bw ; height:width / y:x coordinates + + .long bthicky+bw,bxy ; height:width / y:x coordinates + .long bthicky+bw+bthickx,bxy+bh ; height:width / y:x coordinates + .long 0 + +************************************************************************** +* * +* CLR_CREDITS * +* * +* ROUTINE TO CLEAR OUT THE CREDITS POSTED ON THE GAME. * +* * +************************************************************************** +CLR_CREDITS + CALLA NO_CREDS ;CALL THE ROUTINE THAT DOES IT + RETP + +DO_CLCOIN + MOVI MESS_CLCOIN,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE + MOVI CLR_COINS,A9 ;ROUTINE TO DO IT + MOVI MESS_CCNCONF,A10 ;CONFIRMATION. + JAUC AREUSURE ;ASK EM......THEN RETURN! + +CLR_COINS + MOVI FRST_C,A0 + MOVI LAST_C,A1 + CALLA CLR_AUDR + RETP + +DO_CLAUD + MOVI MESS_CLAUD,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE + MOVI CLR_AUDITS,A9 ;ROUTINE TO DO IT + MOVI MESS_CAUDCONF,A10 ;CONFIRMATION. + JAUC AREUSURE ;ASK EM......THEN RETURN! + +DO_CLPLRECS + movi MESS_CLPLRECS,A8 ;CLEAR PLAYER RECORDS + movi clr_plr_records,a9 ;ROUTINE TO DO IT + movi MESS_CLPLRECSCONF,a10 ;CONFIRMATION. + jauc AREUSURE ;ASK EM......THEN RETURN! + +; .global clear_player_records +clr_plr_records +; calla clear_player_records + MOVI AUD_BHART,A0 + MOVI LASTGAUD,A1 + CALLA CLR_AUDR + RETP + +CLR_AUDITS + MOVI FRSTGAUD,A0 + MOVI LASTGAUD,A1 + CALLA CLR_AUDR +; CALLA DUMP_FS ;AND START THE "DUMP" RECORDS OVER + RETP + +DO_HSRES + MOVI MESS_HSRESET,A8 + MOVI HSSOFT,A9 + MOVI MESS_HSRCONF,A10 + JAUC AREUSURE + +HSSOFT + CALLR RES_ALL + RETP ;PROGRAM TO DO THE JOB! + +************************************************************************** +* +* RES_ALL +* +* RESET ALL TIME HIGH SCORE TABLE AND THE +* HIGH SCORE RESET COUNTER. +* +************************************************************************** +RES_ALL + MOVI STREAK_TAB,A8 + CALLA INIT_TB + movi PIN_SPEED_TAB,a8 + calla INIT_TB + movi BEATEN_TAB,a8 + calla INIT_TB + calla INIT_HSTRING + jauc INIT_HSR ;RE-SET THE HIGH SCORE RESET COUNTER + +DO_FACSET + MOVI MESS_FACSET,A8 + MOVK 1,A0 + JRUC DEF_ADJ_PART + +************************************************************************** +* * +* DO_DEF_ADJ THIS IS CALLED FROM UTILITY MENU TO * +* DO THE DEFAULT ADJUSTMENTS. * +* * +* DEF_ADJ_PART THIS IS CALLED OUT OF THE FULL * +* FACTORY SETTING TO HANDLE THE * +* ADJUSTMENT PART. * +* * +* A8 MUST HAVE THE MESSAGE FOR "ARE YOU SURE" * +* A0 .NE. 0 FOR FULL FACTORY SETTINGS (ON * +* SUCCESS OF ADJUSTMENT PART * +* * +************************************************************************** +DO_DEF_ADJ + MOVI MESS_DEF_ADJ,A8 + CLR A0 + +DEF_ADJ_PART + MOVE A0,@FAC_FLAG,W ;INDICATE THIS IS ADJUSTMENTS ONLY + MOVI DEFADJSOFT,A9 + MOVI NULL_ST,A10 ;DON'T PRINT ANYTHING....ROUTINE WILL. + JSRP AREUSURE + RETP + +DEFADJSOFT +* +* NOW SMASH THE CHECKSUM +* + CALLA FORM_ADC ;FORM THE CKSUM + MOVE A1,A0 ;PUT IN CMOS WRITING REGGIE + MOVI ADJ_CKSUM,A7 + INC A0 ;THIS SMASHES ADJUSTMENTS + CALLA WC_WORD ;AND STORE IT +* +* NOW MAKE SURE ITS SMASHED +* + CALLA CMOS_VAL + JRZ AD_FAIL ;WE CAN'T DO IT.....PRINT FAILURE. +* +* NOW SET THE ADJUSTMENTS TO THE FACTORY VALUE. +* + clr a0 ;Full + CALLA FAC_SET + CALLA CMOS_VAL ;IS IT OK NOW? + JRNZ AD_FAIL ;NOPE...PRINT FAILURE + + MOVI MESS_DEFCONF,A8 ;THIS IS SINGLE MESSAGE + + MOVE @FAC_FLAG,A0,W ;DO WE NEED TO CLEAR THE TABLES? + JRZ DAX ;NOPE...POST SINGLE MESSAGE + + CALLA CLR_SCRN ;CLEAR THE SCREEN FOR OUR MESSAGES. + CALLR FAC_STUF ;DO AUDITS AND HIGH SCORE TABLE + + MOVI MESS_FFSCONF,A8 ;PRINT THE REST OF THE MESSAGES + JSRP L_MESS ;THAT DOES IT! + +NOTABS + RETP + +* +* ON A FULL FACTORY SETTING (EITHER REQUESTED OR +* ADJUSTMENT FAILURE) THIS CLEARS THE AUDITS AND +* HIGH SCORE TABLE. +* +FAC_STUF + CALLA CLR_AUD ;CLEAR AUDITS TOO + CALLR RES_ALL ;ALL TIME TABLE + RETS + +AD_FAIL + MOVI MESS_FACFAIL,A8 + JRUC DAX + +DEF_CAN + MOVI MESS_CANCELLED,A8 +DAX + CALLA CLR_SCRN + JSRP SUR_MESS + RETP +************************************************************************** +* * +* EXIST_LET * +* * +* IS THE E_INITS PROCESS RUNNING? * +* * +************************************************************************** +EXIST_LET + MOVI OPMES_PID,A0 ;SETUP FOR THE EXISTP + MOVI 0FFFFH,A1 + JAUC EXISTP +************************************************************************** +* * +* BUILD_ST * +* * +* THIS IS CALLED TO TAKE THE STRING POINTED TO * +* BY -A10- AND REMOVE LEADING AND TRAILING BLANKS * +* AND MOVE THE STRING TO "STRNGRAM". * +* * +* RETURN THE NUMBER OF TRAILING BLANKS IN A2. * +* RETURN .EQ. IF ALL BLANK! * +* * +************************************************************************** +BUILD_ST + MMTM SP,A0,A1,A3,A4,A5,A10 + CLR A4 ;A4 = ZERO UNTIL 1ST NON-BLANK + MOVI STRNGRAM-BYTE_SIZE,A5 ;LAST NON-SPACE CHAR + MOVI STRNGRAM,A1 ;DESTINATION POINTER + MOVI CMESS_CHARS,A2 ;CHAR COUNT + +BSLOOP + MOVB *A10,A3 ;FETCH A BYTE + ANDI BYTE_MASK,A3 ;KILL SIGN EXTEND. + JRNZ BS1 ;NOT ZERO + MOVI SPACE,A3 ;REPLACE ZERO WITH SPACE. + +BS1 + CMPI SPACE,A3 ;IS IT A SPACE? + JRZ BS2 ;IT IS... +* +* NON-SPACE CHARACTER +* + OR A3,A4 ;INDICATE 1ST NON-BLANK SEEN + MOVE A1,A5 ;INDICATE THIS IS CURRENT TERMINATOR. + JRUC BS3 + +BS2 + MOVE A4,A4 ;HAS 1ST SPACE BEEN SEEN? + JRZ BS4 ;NOT YET...DON'T STORE +BS3 + MOVB A3,*A1 ;STORE IT IN MEMORY + ADDK BYTE_SIZE,A1 ;PUSH DESTINATION POINTER +BS4 + ADDK BYTE_SIZE,A10 ;PUSH SOURCE POINTER + DSJS A2,BSLOOP ;AND FINISH PARSE +* +* A5 NOW POINTS AT LAST NON-BLANK CHARACTER +* + ADDK BYTE_SIZE,A5 ;THIS IS 1 BEYOND + CLR A2 + MOVB A2,*A5 ;TERMINATE WITH A ZERO. +* +* FOR OUR RETURN, WE NEED TO COMPUTE THE NUMBER OF +* TRAILING SPACES IGNORED. +* + MOVE A4,A4 ;ALL BLANK? + JRNZ NOT_BLNK + MOVI CMESS_CHARS,A2 ;ALL CHARS ARE TRAILING BLANKS + JRUC BL_EX ;RETURN THIS + +NOT_BLNK + MOVE A1,A2 ;THIS IS LAST CHAR WE WROTE + SUB A5,A2 ;THIS IS NUMBER OF TRAILING SPACES (TIMES 8) + SRL 3,A2 ;DIVIDE BY 8 TO GET SPACES +BL_EX + MOVE A4,A4 ;FLAG ZERO FOR ALL BLANK! + MMFM SP,A0,A1,A3,A4,A5,A10 + RETS + +* A1 = +* A3 = DAG OF AREA [YPOS,XPOS] +* A4 = [Y,X] SIZE OF AREA + +GO_RED + MOVI ROBO_RED,A1 + JAUC SC_COL + +GO_GREEN + MOVI ROBO_GREEN,A1 + JAUC SC_COL + +GO_BLUE + MOVI ROBO_BLUE,A1 +SC_COL + SLL 16,A1 ;[color,palette] + clr a3 ;[y,x] start + movi [256,399],a4 ;[Y,X] SIZE OF AREA + CALLA FILLAREA ;THIS DOES THE SCREEN + movk 3,a1 ; Any button map mode + move a1,@_switch_map_mode,L +; JAUC WAIT_BUT ;NOW WAIT FOR ANY BUTTON! + JSRP WAIT_BUT + movk 1,a1 + move a1,@_switch_map_mode,L ; Back to menu map mode + RETP + +GO_CPUTEST + JAUC DIAGCPUTEST + + +GO_CROSS + CALLA SCRCLR + CALLA CROSS_H + movk 3,a1 ; Any button map mode + move a1,@_switch_map_mode,L +; JAUC WAIT_BUT ;NOW WAIT FOR ANY BUTTON! + JSRP WAIT_BUT + movk 1,a1 + move a1,@_switch_map_mode,L ; Back to menu map mode + RETP +; JSRP WAIT_BUT +; CALLA SCRCLR +; CALLA display_init +; RETP + +GO_SWTEST + CALLA SCRCLR + movi M_SWTEST,a2 + movi ROBO_GREEN,a3 + JSRP TOP_BOX + clr a0 + JSRP SWITCHTEST +; CALLA SCRCLR +; CALLA display_init + RETP + +dipsw_test + CALLA SCRCLR + movi M_DIPTEST,a2 + movi ROBO_GREEN,a3 + JSRP TOP_BOX + movk 1,a0 ;DIP mode + JSRP SWITCHTEST + RETP + +;GO_ROMTEST +; JAUC ROM_CHK + +GO_BARS +; MOVI 8000H,A1 +; CLR A0 +; CALLA KILALL + CALLA SCRCLR + MMTM SP,A12,A13 + CALLA COL_BARS + MMFM SP,A12,A13 + movk 3,a1 ; Any button map mode + move a1,@_switch_map_mode,L +; JAUC WAIT_BUT ;NOW WAIT FOR ANY BUTTON! + JSRP WAIT_BUT + movk 1,a1 + move a1,@_switch_map_mode,L ; Back to menu map mode + RETP +; JSRP WAIT_BUT +; CALLA SCRCLR +; CALLA display_init +; CALLA COLRSTRT +; RETP + +DO_BURN + MOVI MESS_BURN,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE + MOVI BURN_IN,A9 ;ENTRY POINT + MOVI MESS_BURN,A10 ;THIS WILL NEVER BE SEEN! + JAUC AREUSURE ;ASK EM. + +ANY_BUT + MOVI ANY_MENU,A8 ;ANY BUTTON TO CONTINUE + MOVK 1,A9 ;CURSOR ON ENTRY 1 + JAUC B_MENU ;DO IT....RETURN WHEN PRESSED. + + +************************************************************************** +* * +* HARDWARE INFORMATION SELECTED * +* * +************************************************************************** + .data + +M_DIPTEST + .string "DIPSWITCH TEST",0 + .even +M_SWTEST + .string "GENERAL SWITCH TEST",0 + .even +M_VOLUME + .string "VOLUME ADJUST",0 + .even +HARDWARE_HELP + .word 0 + .word COLOR_BLUE + .word 2 + .long HDWH_SN + .long HDWH_MAN +HDWH_SN + .string "SERIAL NUMBER",0 + .even +HDWH_MAN + .string "MANUFACTURE DATE",0 + .even + +CLOCK_HELP + .word 0 + .word COLOR_BLUE + .word 2 + .long CLKH_MESS1 + .long CLKH_MESS2 +CLKH_MESS1 + .string "DISPLAY OR SET",0 + .even +CLKH_MESS2 + .string "THE REAL TIME CLOCK",0 + .even +CLK_DISPLAY_HELP + .word 0 + .word COLOR_BLUE + .word 3 + .long CDISP_H1 + .long CDISP_H2 + .long CDISP_H3 +CDISP_H1 + .string "DISPLAYS THE CURRENT",0 + .even +CDISP_H2 + .string "DATE AND TIME FROM",0 + .even +CDISP_H3 + .string "THE REAL TIME CLOCK",0 + .even +CLK_SET_HELP + .word 0 + .word COLOR_BLUE + .word 3 + .long CSET_H1 + .long CSET_H2 + .long CSET_H3 +CSET_H1 + .string "ALLOWS SETTING OF THE",0 + .even +CSET_H2 + .string "DATE AND TIME FOR",0 + .even +CSET_H3 + .string "THE REAL TIME CLOCK",0 + .even +CLK_CALIBRATE_HELP + .word 0 + .word COLOR_BLUE + .word 3 + .long CCAL_H1 + .long CCAL_H2 + .long CCAL_H3 +CCAL_H1 + .string "PREFORMS AUTOMATIC",0 + .even +CCAL_H2 + .string "CALIBRATION OF THE",0 + .even +CCAL_H3 + .string "REAL TIME CLOCK",0 + .even + +MESS_HARDWARE + .string "HARDWARE INFO",0 + .even +MESS_CLOCK + .string "REAL TIME CLOCK",0 + .even + +CAL_MESS_Y EQU 114 + +CLK_CALIBRATE_MESS + MESS_MAC RD15FONT,SPACING07,200,CAL_MESS_Y+20,ROBO_YELLOW,STRCNRM,0 + .string "Calibrating Real Time Clock" + .byte 0,1 + .even + MESS_MAC RD15FONT,SPACING07,200,CAL_MESS_Y,ROBO_DECAY,STRCNRM,0 + .string "Please Wait" + .byte 0,0 + .even +CLK_CALIBRATE_OK_MESS + MESS_MAC RD15FONT,SPACING07,200,CAL_MESS_Y+7,ROBO_WHITE,STRCNRM,0 + .string "Calibration Successful" + .byte 0,0 + .even +M_CLK_DISPLAY + .string "DATE AND TIME DISPLAY",0,0 + .even +M_CLK_CALIBRATE + .string "REAL TIME CLOCK CALIBRATION",0,0 + .even +M_CLK_SET + .string "SETTING REAL TIME CLOCK",0,0 + .even + +CDAY_PROMPT_Y EQU 50 +CTIME_PROMPT_Y EQU 130 +CDAY_Y EQU CDAY_PROMPT_Y+30 +CDATE_Y EQU CDAY_Y+20 +CTIME_Y EQU CTIME_PROMPT_Y+30 + +MESS_CLKD_PROMPTS + MESS_MAC RD15FONT,SPACING07,200,CDAY_PROMPT_Y,ROBO_WHITE,STRCNRM,0 + .string "Current Date" + .byte 0,1 + .even + MESS_MAC RD15FONT,SPACING07,200,CTIME_PROMPT_Y,ROBO_WHITE,STRCNRM,0 + .string "Current Time" + .byte 0,1 + .even +MESS_QUIT + MESS_MAC RD7FONT,SPACING07,200,230,ROBO_DECAY,STRCNRM,0 + .string "PRESS ANY BUTTON TO QUIT" + .byte 0,0 + .even +MESS_RTC_SET + MESS_MAC RD7FONT,SPACING07,200,215,ROBO_LASER,STRCNRM,0 + .string "THE REAL TIME CLOCK HAS BEEN SET" + .byte 0,0 + .even +MESS_SUNDAY + .string "Sunday",0 + .even +MESS_MONDAY + .string "Monday",0 + .even +MESS_TUESDAY + .string "Tuesday",0 + .even +MESS_WEDNESDAY + .string "Wednesday",0 + .even +MESS_THURSDAY + .string "Thursday",0 + .even +MESS_FRIDAY + .string "Friday",0 + .even +MESS_SATURDAY + .string "Saturday",0 + .even + +DAY_TABLE .long MESS_SUNDAY,MESS_MONDAY,MESS_TUESDAY,MESS_WEDNESDAY + .long MESS_THURSDAY,MESS_FRIDAY,MESS_SATURDAY + .even + +MESS_JANUARY + .string "January ",0 + .even +MESS_FEBRUARY + .string "February ",0 + .even +MESS_MARCH + .string "March ",0 + .even +MESS_APRIL + .string "April ",0 + .even +MESS_MAY + .string "May ",0 + .even +MESS_JUNE + .string "June ",0 + .even +MESS_JULY + .string "July ",0 + .even +MESS_AUGUST + .string "August ",0 + .even +MESS_SEPTEMBER + .string "September ",0 + .even +MESS_OCTOBER + .string "October ",0 + .even +MESS_NOVEMBER + .string "November ",0 + .even +MESS_DECEMBER + .string "December ",0 + .even +MONTH_TABLE + .long MESS_JANUARY, MESS_FEBRUARY, MESS_MARCH, MESS_APRIL + .long MESS_MAY, MESS_JUNE, MESS_JULY, MESS_AUGUST, MESS_SEPTEMBER + .long MESS_OCTOBER, MESS_NOVEMBER, MESS_DECEMBER + .even +MESS_HYEARS + .string ", 19",0 + .even +TSEPERATOR + .string ":",0 + .even +ZPAD + .string "0",0 + .even +TIME_PM + .string " PM",0 + .even +TIME_AM + .string " AM",0 + .even +DAY_SETUP + MESS_MAC RD15FONT,SPACING07,200,CDAY_Y,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even +DATE_SETUP + MESS_MAC RD15FONT,SPACING07,200,CDATE_Y,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even +TIME_SETUP + MESS_MAC RD15FONT,SPACING07,200,CTIME_Y,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even +DAYADJ_SETUP + MESS_MAC RD15FONT,SPACING07,284,185,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even +DATEADJ_SETUP + MESS_MAC RD15FONT,SPACING07,286,205,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even +TADJ_SETUP + MESS_MAC RD15FONT,SPACING07,284,225,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even + +;SNDRELEASE_NUM_PROMPT: +; MESS_MAC RD15FONT,SPACING07,200,130,ROBO_PURPLE,STRCNRM,0 +; .string "Sound Software Version:\n" +; .string "RELEASE %2ld" +; .byte 0,0 +; .long _serial_number +; .even +;SNDPROTO_NUM_PROMPT: +; MESS_MAC RD15FONT,SPACING07,200,130,ROBO_PURPLE,STRCNRM,0 +; .string "Sound Software Version:\n" +; .string "PROTO %2ld" +; .byte 0,0 +; .long _serial_number +; .even + +WILLY_Y EQU 50 +UNIT_Y EQU WILLY_Y+50 +SERIAL_Y EQU UNIT_Y+40 +MAN_Y EQU SERIAL_Y+40 + +M_DOM + .string "DATE OF MANUFACTURE: ",0 + .even +M_SERIAL + .string "SERIAL NUMBER: ",0 + .even +MAN_DATE_SETUP: + MESS_MAC RD7FONT, SPACING07,200, MAN_Y, ROBO_PURPLE,STRCNRM,0 + .string "" + .byte 0,0 + .even +WILLY_PROMPT: + MESS_MAC RD15FONT, SPACING07, 200, WILLY_Y, ROBO_GREEN, STRCNRM,0 + .string "Midway Manufacturing Inc." + .byte 0,1 + .even + MESS_MAC RD15FONT, SPACING20, 200, UNIT_Y, ROBO_YELLOW, STRCNRM, 0 + .string "WWF UNIT" + .byte 0,0 + .even +SERIAL_NUM_SETUP: + MESS_MAC RD7FONT,SPACING07,200,SERIAL_Y,ROBO_PURPLE,STRCNRM,0 + .string "" + .byte 0,0 + .even + +M_HARDWARE_INFO + .string "HARDWARE INFORMATION",0 + .even + +MESS_CLK_TITLE + .string "REAL TIME CLOCK",0 + .even +MESS_DISPLAY + .string "DISPLAY",0 + .even +MESS_SET + .string "SET",0 + .even +MESS_CALIBRATE + .string "CALIBRATE",0 + .even + +MEN_CLOCK + .long RD7FONT ;FONT + .long STRCNRM ;CENTER PLEASE + .long MESS_CLK_TITLE ;TITLE + .word COLOR_GREEN ;COLOR OF TITLE + .word 104 ;UL X + .word MENU_Y-3 ;UL Y + .word MENU_DY-4 ;VERTICAL SPACING + .word ROBO_WHITE ;COLOR WHEN NOT SELECTED + .word 16 ;HEIGHT OF SELECTION BAR + .word -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .word BAR_DX ;EXTRA X ON EACH SIDE. + .word BAR_WID ;WIDTH OF BAR! (A LITTLE FATTER) + .word ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM (SHOULD BE DECAY) + .long MESS_DISPLAY,GO_DISPLAY,CLK_DISPLAY_HELP + .long MESS_SET,GO_TIME_SET,CLK_SET_HELP +; .long MESS_CALIBRATE,GO_CALIBRATE,CLK_CALIBRATE_HELP + .long MESS_MM,RET_CLOCK,NO_HELP + .long 0 + + + +* +* CLOCK SET MENU IS SKINNY..LEAVING ROOM FOR EXPLANATION. +* +CS_BDY EQU -2 +CS_WID EQU 0A7H +CS_X EQU TIT_ULX+GAP+MB_XWID+(CS_WID/2)+C_KLUDGE +CS_Y EQU INST_LRY+BOX_YGAP+MB_YWID+GAP-CS_BDY +* +* RIGHT MARGIN OF ADJUST MENU BOX +* +CS_RX EQU TIT_ULX+(2*GAP)+CS_WID+(2*MB_XWID) +* +* LEFT MARGIN OF HELP BOX +* +CS_HX EQU CS_RX+BOX_XGAP + +M_TIME_SET + .string "SET REAL TIME CLOCK",0 + .even +MESS_YEAR_SET + .string "YEAR",0 + .even +MESS_DATE_SET + .string "DATE",0 + .even +MESS_MONTH_SET + .string "MONTH",0 + .even +MESS_DAY_SET + .string "DAY",0 + .even +MESS_HOUR_SET + .string "HOURS",0 + .even +MESS_MINUTE_SET + .string "MINUTES",0 + .even +MESS_SECOND_SET + .string "SECONDS",0 + .even +MESS_SET_CLOCK + .string "SET TIME/DATE",0 + .even +MESS_CLK_RET + .string "RETURN TO PREV MENU",0 + .even + +MEN_TIME_SET + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG M_TIME_SET ;TITLE + .WORD COLOR_WHITE ;COLOR OF TITLE + .WORD CS_X ;UL X + .WORD CS_Y ;UL Y + .WORD 12 + .WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED + .WORD 12 ;HEIGHT OF SELECTION BAR + .WORD CS_BDY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD CS_WID ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_CLK_RET,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG MESS_YEAR_SET,DO_YEAR,ADJ_HELP + .LONG MESS_DATE_SET,DO_DATE,ADJ_HELP + .LONG MESS_MONTH_SET,DO_MONTH,ADJ_HELP ;FREE PLAY + .LONG MESS_DAY_SET,DO_DAY,ADJ_HELP + .LONG MESS_HOUR_SET,DO_HOUR,ADJ_HELP + .LONG MESS_MINUTE_SET,DO_MINUTE,ADJ_HELP + .LONG MESS_SECOND_SET,DO_SECOND,ADJ_HELP + .LONG MESS_SET_CLOCK,GO_CLOCK_SET,SET_CLOCK_HELP + .LONG MESS_CLK_RET,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG 0 ;END + +INSTR_Y EQU INST_ULY+5 +INSTR_2Y EQU INSTR_Y+10 + +CS_ADV + MESS_MAC RD7FONT,SPACING07,CS_X,INSTR_Y,COLOR_BPR,STRCNRM,0 + .STRING "SELECT WITH ANY STICK" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,CS_X,INSTR_2Y,COLOR_BPR,STRCNRM,0 + .STRING "PRESS A BUTTON TO MODIFY" + .BYTE 0,0 + .EVEN + +SCH_1 + .string "SETS THE REAL TIME CLOCK",0 + .even +SCH_2 + .string "TO THE VALUES SPECIFIED BY",0 + .even +SCH_3 + .string "THE OTHER MENU ITEMS.",0 + .even +SET_CLOCK_HELP + .word 1 + .word COLOR_BLUE + .word 3 + .long SCH_1 + .long SCH_2 + .long SCH_3 + .even +YSH_1 + .string " SET THE REAL TIME CLOCK's",0 + .even +YSH_2 + .string " YEAR VALUE.",0 + .even +YSH_3 + .string " Takes effect when SET is",0 + .even +YSH_4 + .string " selected on the RTC MENU",0 + .even +HELP_YEAR + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long YSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_YEAR + .long GEN_TS ; Routine to run + .long MESS_YEAR_SET ; Header Message + .long HELP_YEAR ; Help Messages + .word 6 ; Index number of val to change + .long 0 ; Minimum value + .long 99 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long YEAR_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long 0 ; Just Show Number + .long MESS_YEAR_SET ; Header Message + +DTSH_2 + .string " DATE VALUE.",0 + .even +HELP_DATE + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long DTSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_DATE + .long GEN_TS ; Routine to run + .long MESS_DATE_SET ; Header Message + .long HELP_DATE ; Help Messages + .word 4 ; Index Number of val to change + .long 1 ; Minimum value + .long 31 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long DATE_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long 0 ; Just Show Number + .long MESS_DATE_SET ; Header Message + + +MSH_2 + .string " MONTH OF YEAR.",0 + .even +HELP_MONTH + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long MSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_MONTH + .long GEN_TS ; Routine to run + .long MESS_MONTH_SET ; Header Message + .long HELP_MONTH ; Help Messages + .word 5 ; Index Number of val to change + .long 1 ; Minimum value + .long 12 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long MONTH_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long MONTH_TABLE ; Just Show Number + .long MESS_MONTH_SET ; Header Message + + +DSH_2 + .string " DAY OF WEEK.",0 + .even +HELP_DAY + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long DSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_DAY + .long GEN_TS ; Routine to run + .long MESS_DAY_SET ; Header Message + .long HELP_DAY ; Help Messages + .word 3 ; Index Number of val to change + .long 1 ; Minimum value + .long 7 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long DAY_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long DAY_TABLE ; Just Show Number + .long MESS_DAY_SET ; Header Message + +HSH_2 + .string " HOUR VALUE.",0 + .even +HELP_HOUR + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long HSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_HOUR + .long GEN_TS ; Routine to run + .long MESS_HOUR_SET ; Header Message + .long HELP_HOUR ; Help Messages + .word 2 ; Index Number of val to change + .long 1 ; Minimum value + .long 24 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long HOUR_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long 0 ; Just Show Number + .long MESS_HOUR_SET ; Header Message + + +MINSH_2 + .string " MINUTE VALUE.",0 + .even +HELP_MINUTE + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long MINSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_MINUTE + .long GEN_TS ; Routine to run + .long MESS_MINUTE_SET ; Header Message + .long HELP_MINUTE ; Help Messages + .word 1 ; Index Number of val to change + .long 0 ; Minimum value + .long 59 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long MINUTE_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long 0 ; Just Show Number + .long MESS_MINUTE_SET ; Header Message + +SSH_2 + .string " SECOND VALUE.",0 + .even +HELP_SECOND + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long SSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_SECOND + .long GEN_TS ; Routine to run + .long MESS_SECOND_SET ; Header Message + .long HELP_SECOND ; Help Messages + .word 0 ; Not used + .long 0 ; Minimum value + .long 59 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long SECOND_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long 0 ; Just Show Number + .long MESS_SECOND_SET ; Header Message + + .text + +GO_HARDWARE: + move @_man_date,a2,L + move a2,a1 + subk 1,a1 + movi 372,a0 + divu a0,a1 + movi 372,a3 + mpyu a1,a3 + sub a3,a2 + addi 80,a1 + move a1,@_year,1 + move a2,a0 + movi 31,a1 + modu a1,a0 + move a0,@_day,1 + move a2,a1 + subk 1,a1 + movi 31,a0 + divu a0,a1 + addk 1,a1 + move a1,@_month,1 + calla CLR_SCRN ; Clear the screen + movi M_HARDWARE_INFO,a2 ; Put up Title Box + movi ROBO_GREEN,a3 + JSRP TOP_BOX + movi WILLY_PROMPT,a8 + JSRP L_MESS + movi M_DOM,a4 + calla copy_rom_string ; Copy the Date of manufacture prompt + move @_month,a0 + dec a0 + sll 5,a0 + movi MONTH_TABLE,a8 + add a0,a8 + move *a8,a4,L + calla concat_rom_string ; Copy the month name + move @_day,a0 ; Convert date to ascii + movi 31,a1 + calla dec_to_asc + calla concat_string ; Add date to string + movi MESS_HYEARS,a4 ; Add , 19 to string + calla concat_rom_string + move @_year,a0 ; Convert year to ascii + movi 99,a1 + calla dec_to_asc + calla concat_string ; Add year to string + movi MAN_DATE_SETUP,a0 ; Setup message + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS ; Print Date of Manufacture + + movi M_SERIAL,a4 + calla copy_rom_string ; Copy serial number prompt + move @_serial_number,a0,L ; Convert serial number to ascii + movi 1000000,a1 + calla dec_to_asc + calla concat_string ; Add serial number to prompt + movi SERIAL_NUM_SETUP,a0 ; Setup the message + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS ; Print the Serial Number + movi MESS_QUIT,a8 + JSRP L_MESS +_hardware_check_sw: ; Wait for a button to be pressed + SLEEP 10 + move @_switch2_addr,a0,L + move *a0,a0,W + move @_switch_addr,a1,L + move *a1,a1,W + sll 16,a0 + srl 16,a0 + sll 16,a1 + srl 16,a1 + and a0,a1 + move @_coin_addr,a0,L + move *a0,a0 + sll 16,a0 + or a1,a0 + not a0 + jrz _hardware_check_sw +RET_HARDWARE: + JSRP FORCE_MAIN + RETP + + +GO_CLOCK: + move @_clk_rd,a8,L ;Save current auto update state + move a8,@_auto_update_save,L + clr a8 ;Enable auto update + move a8,@_clk_rd,L + JSRP _GetTime + movi MEN_CLOCK,a8 + jauc GEN_MENU +RET_CLOCK: + move @_auto_update_save,a8,L ;Restore Auto Update state + move a8,@_clk_rd,L + JSRP FORCE_MAIN + RETP + +GO_CALIBRATE: + calla CLR_SCRN ; Clear the screen + movi M_CLK_CALIBRATE,a2 ; Put up Title Box + movi ROBO_GREEN,a3 + JSRP TOP_BOX + movi CLK_CALIBRATE_MESS,a8 ; Put up calibrating message + JSRP L_MESS + SLEEP 5*60 ; Do calibration here + move @0c00000b0h,a0 ; Make sure transparency is OFF + move a0,-*sp + andni 020h,a0 + move a0,@0c00000b0h + movi [CAL_MESS_Y,0],a0 ; Get rid of calibrating message + movi [40,400],a1 + movi ROBO_BLACK,a2 + fcall RECTANGLE,b6 + move *sp+,a0 + move a0,@0c00000b0h ; Restore CONTROL register + movi CLK_CALIBRATE_OK_MESS,a8 ; Put up success message + JSRP L_MESS + SLEEP 60 ; Let user see it + calla CLR_SCRN + RETP ; All done + +; a0 = pointer to MESS_MAC TO COPY message is copied from message_buffer +_setup_message: + movi _setup_mess,a1 + movk 10,a2 +_sm_lp1: + move *a0+,*a1+ + dsjs a2,_sm_lp1 + movi _setup_mess_msg,a1 + movi message_buffer,a0 + pushst + setf 8,0 +_sm_lp2: + move *a0+,a2 + move a2,*a1+ + move a2,a2 + jrnz _sm_lp2 +_sm_done + popst + clr a2 + move a2,*a1 + rets + +******************************************************************* +* _GetTime - Process subroutine to get the current time. Time is +* returned in the _tXXXXXX globals. +* + SUBRP _GetTime + move @_clk_rd,a0,L ;Save status of auto update + move a0,@_auto_update_save,L + movi -1,a0 ;Shut down auto update + move a0,@_clk_rd,L + calla _aquire_time ;Arm time aquistion + SLEEPK 5 ;Wait for it to aquire time + calla _get_time ;Get the current time + move @_auto_update_save,a0,L + move a0,@_clk_rd,L ;Restore auto update status + RETP ;All done + +; Process Subroutine to print time +_display_time: + clr a0 + move a0,@message_buffer + move @_thours,a0 ; Hours + jrnz _hour_gz1 + addk 12,a0 + jruc _time_is_am +_hour_gz1 + cmpi 12,a0 + jrle _time_is_am + move @_thours,a0 ; Hours + subi 12,a0 +_time_is_am + movi 12,a1 ; Max hours + calla dec_to_asc + calla concat_string + movi TSEPERATOR,a4 + calla concat_rom_string + move @_tminutes,a0 + cmpi 9,a0 + jrgt _no_min_pad + movi ZPAD,a4 + calla concat_rom_string +_no_min_pad + move @_tminutes,a0 + movi 59,a1 ; Max Minutes + calla dec_to_asc + calla concat_string + movi TSEPERATOR,a4 + calla concat_rom_string + move @_tseconds,a0 + move a0,@_last_seconds + cmpi 9,a0 + jrgt _no_sec_pad + movi ZPAD,a4 + calla concat_rom_string +_no_sec_pad + move @_tseconds,a0 + movi 59,a1 ; Max Seconds + calla dec_to_asc + calla concat_string + move @_thours,a0 ; Hours + cmpi 11,a0 + jrgt _time_is_pm + movi TIME_AM,a4 + jruc _tdone +_time_is_pm + movi TIME_PM,a4 +_tdone + calla concat_rom_string + movi TIME_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS +_time_check_sw: + SLEEP 1 + move @_switch2_addr,a0,L + move *a0,a0,W + move @_switch_addr,a1,L + move *a1,a1,W + sll 16,a0 + srl 16,a0 + sll 16,a1 + srl 16,a1 + and a0,a1 + move @_coin_addr,a0,L + move *a0,a0,W + sll 16,a0 + or a1,a0 + not a0 + jrnz _dtime_done + move @_tseconds,a0 + move @_last_seconds,a1 + cmp a0,a1 + jrz _time_check_sw + movi 1cch,a3 + calla SNDSND + move @CONTROL,a0 ; Make sure transparency is OFF + move a0,-*sp + andni 020h,a0 + move a0,@CONTROL + movi [CTIME_Y,0],a0 ; Get rid of calibrating message + movi [20,400],a1 + movi ROBO_BLACK,a2 + fcall RECTANGLE,b6 + move *sp+,a0 + move a0,@CONTROL ; Restore CONTROL register + jruc _display_time +_dtime_done + RETP + + +GO_DISPLAY: + calla CLR_SCRN ; Clear the screen + movi M_CLK_DISPLAY,a2 ; Put up Title Box + movi ROBO_GREEN,a3 + JSRP TOP_BOX +GO_CLKS: +; move @_clk_rd,a0,L ;Save current auto update state +; move a0,@_auto_update_save,L +; clr a0 ;Enable auto update +; move a0,@_clk_rd,L +; JSRP _GetTime + movi MESS_CLKD_PROMPTS,a8 ; Put up assorted prompts + JSRP L_MESS + SLEEP 5 + movi DAY_TABLE,a8 ; Put Day of week up + move @_tday,a0 ; Day of week (1-7) + dec a0 + cmpi 6,a0 + jrgt _bad_day + sll 5,a0 + add a0,a8 + move *a8,a4,L + calla copy_rom_string + movi DAY_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS +_bad_day + movi MONTH_TABLE,a8 ; Put month of year up + move @_tmonth,a0 ; Month of year number (0-11) + dec a0 + cmpi 11,a0 + jrgt _bad_month + sll 5,a0 + add a0,a8 + move *a8,a4,L + calla copy_rom_string ; Copy month name to buffer +_bad_month + move @_tdate,a0 ; Date (1-31) + cmpi 9,a0 + jrgt _no_date_pad + movi ZPAD,a4 + calla concat_rom_string +_no_date_pad + move @_tdate,a0 ; Date (1-31) + movi 31,a1 ; Maximum Date + calla dec_to_asc ; Convert Date to ascii + calla concat_string ; Add to buffer + movi MESS_HYEARS,a4 ; , 19 + calla concat_rom_string ; Add to buffer + move @_tyear,a0 ; Year (0 - 99) + cmpi 9,a0 + jrgt _no_year_pad + movi ZPAD,a4 + calla concat_rom_string +_no_year_pad + move @_tyear,a0 + movi 99,a1 ; Max year + calla dec_to_asc ; Convert Years to ascii + calla concat_string ; Add to buffer + movi DATE_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS + JSRP _display_time +; move @_auto_update_save,a0,L ;Restore Auto Update state +; move a0,@_clk_rd,L + movi 0c7h,a3 + calla SNDSND + RETP ; All done + +_transfer_time + mmtm sp,a1,a2,a3 + movi _rtc_seconds,a1 + movi _tseconds,a2 + movi 7,a3 +_tt_loop1 + move *a2+,*a1+ + dsjs a3,_tt_loop1 + mmfm sp,a1,a2,a3 + rets + +GO_CLOCK_SET: + calla CLR_SCRN ; Clear the screen + movi M_CLK_SET,a2 ; Put up Title Box + movi ROBO_GREEN,a3 + JSRP TOP_BOX + calla _set_time + movi MESS_RTC_SET,a8 ; Put up "CLOCK SET" message + JSRP L_MESS +; SLEEP 16 + SLEEP 30 + callr _transfer_time + jauc GO_CLKS + +GO_TIME_SET +; JSRP _GetTime + callr _transfer_time + movi MEN_TIME_SET,a8 +GEN_TIME_SET + move a8,-*a12,L + movk 1,a0 + move a0,-*a12,W +TIME_SET_LOOP + calla CLR_SCRN + movi CS_ADV,a8 + JSRP L_MESS + move *a12(WORD_SIZE),a8,L + JSRP MENU_TOP + movi COLOR_RED,a9 + calla COL_INST + move *a12,a9,W + JSRP B_MENU + move a9,a9 + jrz GO_TS_QUIT +_not_set_time + move a8,*a12,W + move *a9(AD_ROUT),a0,L + movi TIME_SET_LOOP,a7 + move a7,-*a12,L + cmpi 9,a8 + jrz _time_set + jump a0 +_time_set + jauc GO_CLOCK_SET +GO_TS_QUIT + addk WORD_SIZE,a12 + addk LONG_SIZE,a12 + RETP + +_do_title + mmtm a12,a10,a11,a8 ;SAVE STUFF FOR CALLER +; move @_clk_rd,a0,L ;Save current auto update state +; move a0,@_auto_update_save,L +; clr a0 ;Enable auto update +; move a0,@_clk_rd,L +; JSRP _GetTime + subk 4,a10 + move a11,a6 + movi CS_HX,a9 + addi TIT_LRX,a9 + srl 1,a9 + subk 4,a9 + sll 16,a10 ;SHIFT Y DOWN + movy a10,a9 ;X,Y SET + move a2,a8 ;TEXT POINTER + clr a0 ;NO SLEEP + movi SPACING20,a10 + movi RD15FONT,a11 + JSRP STRCNRM ;DO IT! + mmfm a12,a10,a11,a8 ;POP THE STUFF. + RETP + +_adj_time_and_date + movi DAY_TABLE,a8 ; Put Day of week up + move @_rtc_day,a0 ; Day of week number (1-7) + dec a0 +; cmpi 6,a0 +; jrgt _abad_day + sll 5,a0 + add a0,a8 + move *a8,a4,L + calla copy_rom_string + movi DAYADJ_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS +_abad_day + movi MONTH_TABLE,a8 ; Put month of year up + move @_rtc_month,a0 ; Month of year number (1 - 12) + dec a0 +; cmpi 11,a0 +; jrgt _abad_month + sll 5,a0 + add a0,a8 + move *a8,a4,L + calla copy_rom_string ; Copy month name to buffer +_abad_month + move @_rtc_date,a0 ; Date + cmpi 9,a0 + jrgt _no_date_pad1 + movi ZPAD,a4 + calla concat_rom_string +_no_date_pad1 + move @_rtc_date,a0 ; Date + movi 31,a1 ; Maximum Date + calla dec_to_asc ; Convert Date to ascii + calla concat_string ; Add to buffer + movi MESS_HYEARS,a4 ; , 19 + calla concat_rom_string ; Add to buffer + move @_rtc_year,a0 ; Year + cmpi 9,a0 + jrgt _no_year_pad1 + movi ZPAD,a4 + calla concat_rom_string +_no_year_pad1 + move @_rtc_year,a0 + movi 99,a1 ; Max year + calla dec_to_asc ; Convert Years to ascii + calla concat_string ; Add to buffer + movi DATEADJ_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS + + clr a0 + move a0,@message_buffer + move @_rtc_hours,a0 ; Hours + jrnz _hour_gz + addk 12,a0 + jruc _time_is_am1 +_hour_gz + cmpi 12,a0 + jrle _time_is_am1 + move @_rtc_hours,a0 ; Hours + subi 12,a0 +_time_is_am1 + movi 12,a1 ; Max hours + calla dec_to_asc + calla concat_string + movi TSEPERATOR,a4 + calla concat_rom_string + move @_rtc_minutes,a0 + cmpi 9,a0 + jrgt _no_min_pad1 + movi ZPAD,a4 + calla concat_rom_string +_no_min_pad1 + move @_rtc_minutes,a0 + movi 59,a1 ; Max Minutes + calla dec_to_asc + calla concat_string + movi TSEPERATOR,a4 + calla concat_rom_string + move @_rtc_seconds,a0 + cmpi 9,a0 + jrgt _no_sec_pad1 + movi ZPAD,a4 + calla concat_rom_string +_no_sec_pad1 + move @_rtc_seconds,a0 + movi 59,a1 ; Max Seconds + calla dec_to_asc + calla concat_string + move @_rtc_hours,a0 ; Hours + cmpi 11,a0 + jrgt _time_is_pm1 + movi TIME_AM,a4 + jruc _tdone1 +_time_is_pm1 + movi TIME_PM,a4 +_tdone1 + calla concat_rom_string + movi TADJ_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS + RETP + +_set_it_up + calla CLR_CUR + movi 6,a1 + movk 5,a4 + calla CADJ_BOX + movi 1,a1 + clr a4 + calla CADJ_BOX + movi [ADJ_CULY+5,CS_HX+5],A3 + movi [21,185],A4 + calla BLNKAREA + movi [ADJ_CULY+31,CS_HX+5],A3 + movi [58,185],A4 + calla BLNKAREA + SLEEPK 2 ; I dare you to take this out + RETP + + +YEAR_SET + JSRP _set_it_up + movi MESS_YEAR_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +MONTH_SET + JSRP _set_it_up + movi MESS_MONTH_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +DATE_SET + JSRP _set_it_up + movi MESS_DATE_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +DAY_SET + JSRP _set_it_up + movi MESS_DAY_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +HOUR_SET + JSRP _set_it_up + movi MESS_HOUR_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +MINUTE_SET + JSRP _set_it_up + movi MESS_MINUTE_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +SECOND_SET + JSRP _set_it_up + movi MESS_SECOND_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +; a0 = value code +; a8 = PTR to data struct +; TRASHES a0, a3, a2 +_ts_val_up: + mmtm sp,a0,a2,a3 + sll 4,a0 + addi _rtc_seconds,a0 + move *a0,a3 + addk 1,a3 + move *a8(AD_MAX),a2,L + cmp a3,a2 + jrge _ts_vu_done + move *a8(AD_MIN),a3,L +_ts_vu_done + andi 0ffh,a1 + move a3,*a0 + mmfm sp,a0,a2,a3 + rets + +; a0 = value code +; a8 = PTR to data struct +; TRASHES a0, a3 +_ts_val_down: + mmtm sp,a0,a3,a1 + sll 4,a0 + addi _rtc_seconds,a0 + move *a0,a3 + subk 1,a3 + move *a8(AD_MIN),a1,L + cmp a1,a3 + jrge _ts_vd_done + move *a8(AD_MAX),a3,L +_ts_vd_done + andi 0ffh,a3 + move a3,*a0 + mmfm sp,a0,a3,a1 + rets + +GEN_TS: + movk 2,a0 + move a0,@_switch_map_mode,L + move a9,*a13(PDATA),L + move a9,a8 + calla CLR_MAIN + calla ADJ_INST + JSRP ST_STICK + SLEEPK 2 +TS_CHNG + SLEEPK 1 + movi 31000h,a5 + JSRP GETSTICK + move *a13(PDATA),a8,L + move a0,a1 + jrz TS_CHNG + move *a8(AD_CMOS),a0,W ; Get What we are adjusting + cmpi 3,a1 + jrz TS_BUTT + cmpi 2,a1 + jrz TS_DOWN + callr _ts_val_up ; Incrment the value + jruc TS_JOIN +TS_DOWN: + callr _ts_val_down ; Decrement the value +TS_JOIN: + movi beep1_snd,a3 + calla SNDSND + JSRP TS_UPDATE + jruc TS_CHNG +TS_UPDATE: + move *a8(AD_NAMEIT),a0,L + movi ROBO_LASER,a11 + jump a0 +TS_BUTT: + movi beep2_snd,a3 + calla SNDSND + JSRP TS_UPDATE + SLEEPK 5 +TS_CAN: + movk 1,a0 + move a0,@_switch_map_mode,L + RETP + + +******************************** +* DIAGNOSTIC TESTS +* +* SOUND TEST STUFF + +NCHAN EQU 6 ;DECLARE NUMBER OF ALLOWED CHANNELS +MUSICHAN EQU 3 ;THIS CHANNEL IS FOR THE TUNES + + +;RESETBIT EQU 0FE00H ;Sound board reset bit + + +GO_STEST + + CALLA CLR_SCRN + + movi MEN_SOUNDTEST,a8 + movk 1,a9 ;CURSOR ON 1st ENTRY + + JAUC GEN_MENU ;THIS WILL RETURN TO LEVEL ABOVE US! + +; jsrp B_MENU ;SEE IF THEY WANT PAGE 2. +; cmpi 1,A8 ;DID WE GET 1'ST ENTRY? +; RETP + +SNDTST + MOVI SNDMES,A8 ;MESSAGE POINTER +SNDTLP + CALLA SCRCLR + MOVI M_STEST,A0 ;SOUND TEST MESSAGE + MOVI >6080,A1 + CLR A2 + MOVI ROBO_WHITE,A3 + CALLA STRNEW1 + MOVI >B080,A1 ;SCREEN ADDRESS + MOVE A8,A0 + CALLA STRNEW1 + ADDK 8,A0 + MOVB *A0,A5 ;Channel + ADDK 8,A0 + MOVB *A0,A3 ;Sound # + sll 32-8,a3 ;Kill sign extend + srl 32-8,a3 + ADDK 8,A0 + CALLA SNDSND + MOVE A0,A8 + MOVE A13,A13 ;AUTO-CYCLE? + JRNE SNDSLP ;NO + CALLA WDOGDIS + MOVI 3000000,A13 +SNDAUTO DSJS A13,SNDAUTO + JRUC SNDSLP1 +SNDSLP + SLEEP 120 +SNDSLP1 + MOVB *A8,A5 + JRNE SNDTLP + MOVE A13,A13 ;AUTO CYCLE EXIT + JREQ SNDX1 + RETP + +SNDX1 RETS + +*SOUND TABLE +*MESSAGE,CHANNEL,SOUNDCODE +* +SNDMES + .byte "TUNE 1 (1)",0 + .byte MUSICHAN,1 + .byte "NO WAY (E6)",0 + .byte 1,>e6 + .byte "EXPL1 (30)",0 + .byte 4,>30 + .byte "TUNE 2 (9)",0 + .byte MUSICHAN,9 + .byte "SPIDER BOUNCE (83)",0 + .byte 4,>83 + .byte "MUSIC OFF (0)",0 + .byte MUSICHAN,0 + .byte 0 ;THE END OF TABLE + .even +******************************************************************************* +DO_GENTEST + + CALLA CLR_SCRN + MOVI M_DIGT,A2 + MOVI ROBO_GREEN,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + CALLA SURE_BOX ;PUT A NICE BOX UP! + + movi #snd_testing_mess,a8 + JSRP L_MESS + + ;reset the board + movi SNDRSTBIT|32,a0 ;pull bit low +; move a0,@COIN_COUNTERS,W + move @_coin_counter_addr,a8,L + move a0,*a8,W + movi 8,a14 ;wait a bit + dsjs a14,$ + + movi 32,a0 ;send it high again +; move a0,@COIN_COUNTERS,W + move @_coin_counter_addr,a8,L + move a0,*a8,W + + SLEEP TSEC/4 ;250ms wait + + movi TSEC*7,a0 ;wait for data available + JSRP poll_sdav + +; movb @SOUNDR,a0 ;read from the board (better be 0x79) + move @_sound_addr,a0,L + movb *a0,a0 + cmpi 79h,a0 + jrne sdav_not79 + + movi TSEC/5,a0 + JSRP poll_sdav ;great. now wait for the bong count + +; movb @SOUNDR,a0 + move @_sound_addr,a0,L + movb *a0,a0 + X32 a0 + addi diag_message_table,a0 + move *a0,a8,L + JSRP L_MESS + jauc ANY_BUT + +sdav_not79 + movi AUD_SNDERR4,a0 + calla AUD1 + .if DEBUG ;sound board misbehaving. should + LOCKUP ; write a 0x79 after the checksum + .endif ; tests. it wrote something else. + jauc ANY_BUT + +diag_message_table + .long #check_hardware + .long #board_ok + .long #bad_u2_checksum + .long #bad_u3_checksum + .long #bad_u4_checksum + .long #bad_u5_checksum + .long #bad_u6_checksum + .long #bad_u7_checksum + .long #bad_u8_checksum + .long #bad_u9_checksum + .long #bad_ram + + +**************************************** +* Wait for sound board Data AVailable to go active, with timeout. +* >a0=timeout +* >a0=time remaining + + SUBRP poll_sdav + PUSHP a8 + move a0,a8 + + +;psdav_0 move @SOUNDIRQ,a1,W + +psdav_0 + move @_soundirq_addr,a1,L + move *a1,a1,W + + btst B_SDAV,a1 + jrz psdav_found + SLEEPK 1 + dsj a8,psdav_0 + jruc psdav_timeout + +psdav_found + nop + +psdav_timeout + move a8,a0 + PULLP a8 + RETP + + +**************************************** +*blank the inside of the "are you sure" box +* +blnk_sure_box + MOVI [41H,29H],A3 + MOVI [0F2H,166H]-[41H,29H],A4 + JAUC BLNKAREA ;ITS BLANK! + +M_DIGT + .STRING "GENERAL SOUND TEST",0,0 + .EVEN + +SIRQ_DETECT + MESS_MAC RD7FONT,SPACING07,200,170,ROBO_GREEN,STRCNRM,0 + .STRING "SOUND IRQ DETECT FUNCTIONAL.",0,0 + .EVEN + +* +*MESSAGE FOR SOUND BOARD IRQ NOT WORKING +* +SIRQ_ERR + MESS_MAC RD15FONT,SPACING07,200,95,COLOR_LF,STRCNRM,0 + .STRING "** WARNING! **",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,120,COLOR_YELLOW,STRCNRM,0 + .STRING "UNABLE TO DETECT SOUND BOARD IRQ.",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,135,COLOR_YELLOW,STRCNRM,0 + .STRING "THIS MAY RESULT IN ERRANT SOUNDS.",0,0 + .EVEN + +SIRQ_ERR2 + MESS_MAC RD7FONT,SPACING07,200,170,ROBO_RED,STRCNRM,0 + .STRING "ERROR - SOUND IRQ NOT DETECTED.",0,0 + .EVEN + +DAC_LX EQU 125 +DAC_LX2 EQU DAC_LX+52 +DAC_ERR + MESS_MAC RD7FONT,SPACING07,200,68,COLOR_LF,STRCNRM,0 + .STRING "LISTEN FOR TONES:",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,81,COLOR_YELLOW,STRCNRM,0 + .STRING "0 TONES - CHECK HARDWARE",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "1 TONE - SOUND BOARD OK",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,101,COLOR_YELLOW,STRCNRM,0 + .STRING "2 TONES - BAD U2 CHECKSUM",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,111,COLOR_YELLOW,STRCNRM,0 + .STRING "3 TONES - BAD U3 CHECKSUM",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,121,COLOR_YELLOW,STRCNRM,0 + .STRING "4 TONES - BAD U4 CHECKSUM",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,131,COLOR_YELLOW,STRCNRM,0 + .STRING "5 TONES - BAD U5 CHECKSUM",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,141,COLOR_YELLOW,STRCNRM,0 + .STRING "6 TONES - BAD U6 CHECKSUM",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,151,COLOR_YELLOW,STRCNRM,0 + .STRING "10 TONES - RAM TEST FAILED",0,0 + .EVEN + +#snd_testing_mess + MESS_MAC RD7FONT,SPACING07,200,81,COLOR_YELLOW,STRCNRM,0 + .STRING "TESTING",0,0 + .EVEN + +#check_hardware + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "NO RESPONSE FROM SOUND SYSTEM",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,101,COLOR_YELLOW,STRCNRM,0 + .STRING "CHECK HARDWARE",0,0 + .EVEN + +#board_ok + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "1 TONE - SOUND BOARD OK",0,0 + .EVEN + +#bad_u2_checksum + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "BAD U2 CHECKSUM",0,0 + .EVEN + +#bad_u3_checksum + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "BAD U3 CHECKSUM",0,0 + .EVEN + +#bad_u4_checksum + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "BAD U4 CHECKSUM",0,0 + .EVEN + +#bad_u5_checksum + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "BAD U5 CHECKSUM",0,0 + .EVEN + +#bad_u6_checksum + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "BAD U6 CHECKSUM",0,0 + .EVEN + +#bad_u7_checksum + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "BAD U7 CHECKSUM",0,0 + .EVEN + +#bad_u8_checksum + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "BAD U8 CHECKSUM",0,0 + .EVEN + +#bad_u9_checksum + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "BAD U9 CHECKSUM",0,1 + .EVEN + +#bad_ram + MESS_MAC RD7FONT,SPACING07,200,91,COLOR_YELLOW,STRCNRM,0 + .STRING "RAM TEST FAILED",0,1 + .EVEN + +************************************************************************** +DO_PLAYSOUNDS + + MOVI SND_INST,A8 + JSRP L_MESS ;PUT INSTRUCTION OUT. + + JSRP QSNDRST + + movi [177,200-105],a4 ;upper left + movi [238+16,200+104-1],a5 ;bottom right + MOVI COLOR_WHITE,a9 + CALLR STD_BORD + + CLR A10 + movi COLOR_LF,a0 + move a10,a1 + callr plot_sound + move a10,a3 + CALLR MAKE_SOUND +#loop + SLEEPK 1 + + calla fudge_switches2 + move @fswitches_down,a0,L + andi START_BITS,a0 + jrnz #exit + + move @fswitches_down,a0,L + andi ACTION_BITS,a0 + jrz #no_play_sound + move a10,a3 + CALLR MAKE_SOUND + jruc #loop +#no_play_sound + + move a10,a2 + move @fswitches_cur,a0,L + andi UP_BITS,a0 + jrz #no_down + inc a2 +#no_down + move @fswitches_cur,a0,L + andi DOWN_BITS,a0 + jrz #no_up + dec a2 +#no_up + cmp a2,a10 + jreq #loop ;no change + + push a2 + movi ROBO_BLACK,a0 + move a10,a1 + callr plot_sound + pull a10 + andi 7,a10 + SLEEPK 6 + movi COLOR_LF,a0 + move a10,a1 + callr plot_sound + move a10,a3 + CALLR MAKE_SOUND + + movi 30,a11 +#wait_release + + calla fudge_switches2 + move @fswitches_cur,a0,L + andi UP_BITS|DOWN_BITS,a0 + jrz #loop + SLEEPK 1 + dsj a11,#wait_release + jruc #loop + +#exit + JSRP QSNDRST + RETP + +************************************************************************** +* colour in a0 +* sound number 0-3 passed in a1 +plot_sound + PUSH a10 + sll 5,a1 ;x 32 bits + addi sounds_tab,a1 ;base addr + move *a1,a1,L + PUSH a0,a1 + movi SND_SETUP,a8 + calla LM_SETUP ;GET CONFIRMATION DATA READY. + PULL a6,a8 ;colour,string + JSRP LM_FINIS ;plot strings + PULL a10 + rets +* +*MAKE_SOUND - MAKE A SOUND TEST SOUND +*A3 = INDEX INTO TEST SOUND LIST +*NOTE: TRASHES A3 +MAKE_SOUND + SLL 4,A3 + ADDI TEST_SOUND_TAB,A3 + MOVE *A3,A3,W + JAUC SNDSND + +************************************************************************** +* * +* MONITOR PATTERNS * +* * +************************************************************************** +GO_PATTERNS + MOVI MEN_PATTERNS,A8 ;PUT UP THE MENU AND GO! + JAUC GEN_MENU ;THIS WILL RETURN TO LEVEL ABOVE US! + +******************************************************************************* +******************************************************************************* +******************************************************************************* +* +* A U D I T D I S P L A Y S +* +******************************************************************************* +******************************************************************************* +******************************************************************************* +************************************************************************** +* * +* AUDIT TABLE STRUCTURE * +* * +************************************************************************** + + STRUCT 0 + APTR AUD_MESS ;*Text + APTR AUD_ROUTINE ;*Code to call or 0 + WORD AUD_NUMBER ;Audit number to show or 0 + WORD AUD_COLOR ;Color for this line + LABEL AUD_T_SIZE ;Size of structure + +AMAC .macro mess,rout,audit,color + .long :mess:,:rout: + .word :audit:,:color: + .endm + +TXTLINE .macro s + .byte ":s:",0 + .even + .endm + + +AUD_LM EQU TIT_ULX ;SQUARE OFF AUDITS W/ HEADER. +AUD_RM EQU TIT_LRX +AUD_Y_STRT EQU 54 +AUD_DY EQU 14 + +CP2_Y EQU 156 ;PART 2 OF COIN AUDIT PAGE. + +******************************** +* (doesn't display dollar values) + +COIN_OCTO_AUDS + .word AUD_Y_STRT+50,12+8 ;Y start, Y spacing + .word AUD_LM+30,AUD_RM-30 ;LFT/RGT margin X + AMAC M_LCOIN2,0,AUDLCOIN,ROBO_YELLOW + AMAC M_RCOIN2,0,AUDRCOIN,ROBO_YELLOW + AMAC M_CCOIN2,0,AUDCCOIN,ROBO_YELLOW + +;; AMAC amst_s,0,AUDBEGIN,ROBO_GREEN ;On parachute +;; AMAC M_START,STARTS,0,ROBO_GREEN +;; AMAC M_PAIDC,0,AUDPAIDC,ROBO_WHITE +;; AMAC M_SERV,0,AUDSERV,>1212 +;; AMAC M_PLAYS,DOPLAYS,0,ROBO_YELLOW + .long 0 + + + +******************************** +* TOP HALF OF COIN AUDIT PAGE 1 TABLE + +COIN_AUDS + .word AUD_Y_STRT,12+5 ;Y start, Y spacing + .word AUD_LM,AUD_RM ;LFT/RGT margin X + AMAC M_LCOIN,0,AUDLCOIN,ROBO_YELLOW + AMAC M_RCOIN,0,AUDRCOIN,ROBO_YELLOW + AMAC M_CCOIN,0,AUDCCOIN,ROBO_YELLOW + AMAC M_XCOIN,0,AUDXCOIN,ROBO_YELLOW + AMAC M_DBV,0,AUD_DBV,ROBO_YELLOW + AMAC M_START,STARTS,0,ROBO_GREEN +; AMAC M_CONTO,0,AUD_CONTOFFERED,ROBO_GREEN +; AMAC M_CONT,0,AUD_CONTTAKEN,ROBO_GREEN + .long 0 + +COIN1_AUDS + .word AUD_Y_STRT+14*6+2+13,AUD_DY + .word AUD_LM,AUD_RM + AMAC M_PAIDC,0,AUDPAIDC,ROBO_WHITE + .long 0 + +COIN2_AUDS + .word CP2_Y+AUD_DY+5+13,AUD_DY ;Y start, Y spacing + .word AUD_LM,AUD_RM ;LFT/RGT margin X + AMAC M_SERV,0,AUDSERV,>1212 + AMAC M_PLAYS,DOPLAYS,0,ROBO_YELLOW +; AMAC M_HSLEFT,DOHSLEFT,0,ROBO_YELLOW + .long 0 + +amst_s TXTLINE "ATTRACT MODE STARTS" +M_START TXTLINE "MID GAME STARTS" +M_CONTO TXTLINE "CONTINUES OFFERED" +M_CONT TXTLINE "CONTINUES TAKEN" +M_EXTRA TXTLINE "EXTRA MEN COLLECTED/EARNED" +M_P1MIN TXTLINE "HOURS OF SINGLE PLAY" +M_P2MIN TXTLINE "HOURS OF DUAL PLAY" +M_HOURS TXTLINE "TOTAL HOURS OF PLAY" +M_AVGT .byte "AVG. ",ASCII_DQ,"PLAYER",ASCII_DQ," GAME TIME (MIN.)",0 + .even + + +;* BOTTOM HALF OF COIN AUDIT PAGE 1 TABLE +;COIN_A2 .WORD CP2_Y ;Y START +; .WORD AUD_DY ;Y BETWEEN ENTRIES +; .WORD AUD_LM ;LEFT MARGIN X +; .WORD AUD_RM ;RIGHT MARGIN X +; AMAC M_START,STARTS,0,ROBO_YELLOW +; AMAC M_CONT,CONTINS,0,ROBO_YELLOW +; AMAC M_PLAYS,DOPLAYS,0,ROBO_YELLOW +; AMAC M_HSLEFT,DOHSLEFT,0,ROBO_YELLOW +; .LONG 0 + +************************************************************************** +* * +* COIN_D1 * +* * +* THIS IS TOP HALF OF DETAILED COIN AUDIT PAGE * +* ITS THE SAME AS THE OTHER COIN PAGE WITH THE Y POSITIONING * +* A LITTLE DIFFERENT * +* * +************************************************************************** +;COIN_D1 +; .WORD 39H ;Y START +; .WORD 11H ;Y BETWEEN ENTRIES +; .WORD AUD_LM ;LEFT MARGIN X +; .WORD AUD_RM ;RIGHT MARGIN X +; AMAC M_LCOIN,0,AUDLCOIN,ROBO_YELLOW +; AMAC M_CCOIN,0,AUDCCOIN,ROBO_YELLOW +; AMAC M_RCOIN,0,AUDRCOIN,ROBO_YELLOW +; .LONG 0 +* +* DOOR CLOSED AUDITS. +* +;COIN_D2 +; .WORD 090H ;Y START +; .WORD 11H ;Y BETWEEN ENTRIES +; .WORD AUD_LM ;LEFT MARGIN X +; .WORD AUD_RM ;RIGHT MARGIN X +; AMAC M_LCOIN,0,AUDLCDC,ROBO_YELLOW +; AMAC M_CCOIN,0,AUDCCDC,ROBO_YELLOW +; AMAC M_RCOIN,0,AUDRCDC,ROBO_YELLOW +; .LONG 0 + +************************************************************************** +* * +* GAME PLAY AUDIT SCREEN * +* * +************************************************************************** + + .asg 50,LM + .asg 400-50,RM + +GAME_AUDS1 + .word 55-10,11,LM,RM ;Y start, Y spacing, L margin, R margin + AMAC str_totuptime, prn_uptime,0, ROBO_WHITE + AMAC str_totpltime, prn_pltime,0, ROBO_WHITE + AMAC str_1pplay, prn_1plpct,0, ROBO_BLUE + AMAC str_2pplay, prn_2plpct,0, ROBO_BLUE + AMAC str_totstarts, 0,AUD_TOTSTARTS,ROBO_YELLOW + AMAC str_amodstarts, 0,AUD_PRESTARTS,ROBO_YELLOW + AMAC str_contoff, 0,AUD_CONTOFF, ROBO_CYAN + AMAC str_conttaken, 0,AUD_CONTTAKN, ROBO_CYAN + AMAC str_vscpus, 0,AUD_VSCPUS, ROBO_PURPLE + AMAC str_vscpuf, 0,AUD_VSCPUF, ROBO_PURPLE + AMAC str_cpuwin, prn_cpuwins,0, ROBO_GREEN + .long 0 + +GAME_AUDS2 + .word 55-10,11,LM,RM ;Y start, Y spacing, L margin, R margin + AMAC str_gametime, prn_avgtime,0, ROBO_BLUE + AMAC str_vshumtime, prn_hvhtime,0, ROBO_WHITE + AMAC str_cpuwintime, prn_cwintime,0, ROBO_WHITE + AMAC str_cpulosstime,prn_closstime,0,ROBO_WHITE + AMAC str_fasthvh, prn_fasthvh,0, ROBO_GREEN + AMAC str_fastcpuwin, prn_fastcwin,0, ROBO_GREEN + AMAC str_combo_per, prn_combogames,0, ROBO_GREEN + AMAC str_fasthumwin, prn_fasthwin,0, ROBO_GREEN + AMAC str_lockups, 0,AUD_LOCKUP, ROBO_CYAN + AMAC str_lockups2, 0,AUD_LOCKUP2, ROBO_CYAN + AMAC str_snderr1, 0,AUD_SNDERR1, ROBO_PINK + AMAC str_snderr2, 0,AUD_SNDERR2, ROBO_PINK + AMAC str_snderr3, 0,AUD_SNDERR3, ROBO_PINK + AMAC str_snderr4, 0,AUD_SNDERR4, ROBO_PINK + .long 0 + +GAME_AUDS3a + .word 55-10+22,11,LM,RM-140 ;Y start, Y spacing, L margin, R margin + AMAC str_bhart, 0,AUD_BHART, ROBO_GREEN + AMAC str_rramo, 0,AUD_RRAMO, ROBO_WHITE + AMAC str_under, 0,AUD_UNDER, ROBO_BLUE + AMAC str_yoko, 0,AUD_YOKO, ROBO_YELLOW + AMAC str_smich, 0,AUD_SMICH, ROBO_CYAN + AMAC str_bbbig, 0,AUD_BBBIG, ROBO_PURPLE + AMAC str_dclow, 0,AUD_DCLOW, ROBO_GREEN + AMAC str_lluge, 0,AUD_LLUGE, ROBO_YELLOW + .long 0 + +GAME_AUDS3b + .word 55-10+22,11,LM,RM-105-12 ;Y start, Y spacing, L margin, R margin + AMAC str_space, bhart_hwinpct,0,ROBO_GREEN + AMAC str_space, rramo_hwinpct,0,ROBO_WHITE + AMAC str_space, under_hwinpct,0,ROBO_BLUE + AMAC str_space, yoko_hwinpct,0,ROBO_YELLOW + AMAC str_space, smich_hwinpct,0,ROBO_CYAN + AMAC str_space, bbbig_hwinpct,0,ROBO_PURPLE + AMAC str_space, dclow_hwinpct,0,ROBO_GREEN + AMAC str_space, lluge_hwinpct,0,ROBO_YELLOW + .long 0 + +GAME_AUDS3c + .word 55-10+22,11,LM,RM-35 ;Y start, Y spacing, L margin, R margin + AMAC str_space, 0,AUD_BHARTC, ROBO_GREEN + AMAC str_space, 0,AUD_RRAMOC, ROBO_WHITE + AMAC str_space, 0,AUD_UNDERC, ROBO_BLUE + AMAC str_space, 0,AUD_YOKOC, ROBO_YELLOW + AMAC str_space, 0,AUD_SMICHC, ROBO_CYAN + AMAC str_space, 0,AUD_BBBIGC, ROBO_PURPLE + AMAC str_space, 0,AUD_DCLOWC, ROBO_GREEN + AMAC str_space, 0,AUD_LLUGEC, ROBO_YELLOW + .long 0 + +GAME_AUDS3d + .word 55-10+22,11,LM,RM-12 ;Y start, Y spacing, L margin, R margin + AMAC str_space, bhart_cwinpct,0,ROBO_GREEN + AMAC str_space, rramo_cwinpct,0,ROBO_WHITE + AMAC str_space, under_cwinpct,0,ROBO_BLUE + AMAC str_space, yoko_cwinpct,0,ROBO_YELLOW + AMAC str_space, smich_cwinpct,0,ROBO_CYAN + AMAC str_space, bbbig_cwinpct,0,ROBO_PURPLE + AMAC str_space, dclow_cwinpct,0,ROBO_GREEN + AMAC str_space, lluge_cwinpct,0,ROBO_YELLOW + .long 0 + +GAUD_P3HEAD1 + MESS_MAC RD7FONT,SPACING07,RM-135,45,ROBO_BLUE,STRCNRM,0 + .STRING "PLAYER",0,0 + .EVEN + +GAUD_P3HEAD2 + MESS_MAC RD7FONT,SPACING07,RM-30,45,ROBO_BLUE,STRCNRM,0 + .STRING "CPU",0,0 + .EVEN + +GAUD_P3HEAD3 + MESS_MAC RD7FONT,SPACING07,RM-140,56,ROBO_RED,STRRNRM,0 + .STRING "USES",0,0 + .EVEN + +GAUD_P3HEAD4 + MESS_MAC RD7FONT,SPACING07,RM-105,56,ROBO_RED,STRRNRM,0 + .STRING "WINS",0,0 + .EVEN + +GAUD_P3HEAD5 + MESS_MAC RD7FONT,SPACING07,RM-35,56,ROBO_RED,STRRNRM,0 + .STRING "USES",0,0 + .EVEN + +GAUD_P3HEAD6 + MESS_MAC RD7FONT,SPACING07,RM,56,ROBO_RED,STRRNRM,0 + .STRING "WINS",0,0 + .EVEN + +;page 1 +str_totuptime TXTLINE "TOTAL GAME UPTIME (HRS:MINS)" +str_totpltime TXTLINE "TOTAL GAME PLAY TIME (HRS:MINS)" +str_1pplay TXTLINE "ONE-PLAYER PLAY" +str_2pplay TXTLINE "TWO-PLAYER PLAY" +str_totstarts TXTLINE "TOTAL STARTS" +str_amodstarts TXTLINE "ATTRACT MODE STARTS" +str_contoff TXTLINE "CONTINUES OFFERED" +str_conttaken TXTLINE "CONTINUES TAKEN" +str_vscpus TXTLINE "1P GAMES BEGUN" +str_vscpuf TXTLINE "1P GAMES FINISHED" +str_cpuwin TXTLINE "CPU VICTORIES" + +;page 2 +str_gametime TXTLINE "AVG GAME TIME (MIN:SEC)" +str_vshumtime TXTLINE "AVG HUMAN VS HUMAN TIME" +str_cpuwintime TXTLINE "AVG CPU WIN TIME" +str_cpulosstime TXTLINE "AVG CPU LOSS TIME" +str_fasthvh TXTLINE "FASTEST 2-PLAYER WIN" +str_fastcpuwin TXTLINE "FASTEST CPU WIN" +str_fasthumwin TXTLINE "FASTEST CPU LOSS" +str_combo_per TXTLINE "HUMAN COMBO GAMES" +str_lockups TXTLINE "DOGS" +str_lockups2 TXTLINE "PROCESS KO" +str_snderr1 TXTLINE "SND ERR #1 (IRQ)" +str_snderr2 TXTLINE "SND ERR #2 (ROM CHECKSUM)" +str_snderr3 TXTLINE "SND ERR #3 (RAM TEST)" +str_snderr4 TXTLINE "SND ERR #4 (SDAV)" + +;page 3 +str_bhart TXTLINE "BRET HART" +str_rramo TXTLINE "RAZOR RAMON" +str_under TXTLINE "UNDERTAKER" +str_yoko TXTLINE "YOKOZUNA" +str_smich TXTLINE "SHAWN MICHAELS" +str_bbbig TXTLINE "BAM BAM BIGELOW" +str_dclow TXTLINE "DOINK THE CLOWN" +str_lluge TXTLINE "LEX LUGER" + +str_pct TXTLINE "%" + +str_space TXTLINE " " + .even + + .if 0 +ROBO_GREY EQU 0101H ;[0E0H-223,0E0H-223] +ROBO_WHITE EQU 0202H ;[0E1H-223,0E1H-223] +ROBO_RED EQU 0303H ;[0E2H-223,0E2H-223] +ROBO_ORANGE EQU 0404H ;[0E3H-223,0E3H-223] +ROBO_YELLOW EQU 0505H ;[0E4H-223,0E4H-223] +ROBO_GREEN EQU 0606H ;[0E5H-223,0E5H-223] +ROBO_BLUE EQU 0707H ;[0E6H-223,0E6H-223] +ROBO_LF EQU 03E3EH +ROBO_CYAN EQU 0E0EH ;[0EDH-223,0EDH-223] +ROBO_DECAY EQU 03F3FH +ROBO_RGOLD EQU 0A0AH ;[0E9H-223,0E9H-223] +ROBO_LASER EQU 03E3EH +ROBO_LASER2 EQU 03F3FH +ROBO_BLUWH EQU 0C0CH ;[0EBH-223,0EBH-223] +ROBO_PINK EQU 0303H ;[0E2H-223,0E2H-223] +ROBO_SKY EQU 0D0DH ;[0ECH-223,0ECH-223] ;LAST COLOR IN ROBO IS "SKY" COLOR +ROBO_PURPLE EQU ROBO_SKY ;PURPLE FOR TEST MODE +ROBO_BLACK EQU 1414H ;BLACK AS COAL + .endif + + +#***************************************************************************** +* total uptime +prn_uptime + movi AUD_UPTIME,a0 + calla GET_AUD + ;* 5 sec incs / 60 (sec p/min) = /12 + movk 12,a0 + divu a0,a1 ;mins + jruc P_TIME + + +#***************************************************************************** +* actual play time +prn_pltime + movi AUD_PLTIME,a0 + calla GET_AUD + ;* 5 sec incs / 60 (sec p/min) = /12 + movk 12,a0 + divu a0,a1 ;mins + jruc P_TIME + + +#***************************************************************************** +* percentage of 1 player play +prn_1plpct + movi AUD_PLTIME,a0 + calla GET_AUD + move a1,a4 + + movi AUD_1PLAYTIME,a0 + calla GET_AUD + movi 100,a0 + mpyu a0,a1 + move a1,a2 + move a4,a0 + callr ROUNDED_A0_INTO_A2 ;DIVIDES A0 INTO A2. RESULT IN A2 + move a2,a3 + jruc PERCENT_WORK + + +#***************************************************************************** +* percentage of 2 player play +prn_2plpct + movi AUD_PLTIME,a0 + calla GET_AUD + move a1,a4 + + movi AUD_2PLAYTIME,a0 + calla GET_AUD + movi 100,a0 + mpyu a0,a1 + move a1,a2 + move a4,a0 + callr ROUNDED_A0_INTO_A2 ;DIVIDES A0 INTO A2. RESULT IN A2 + move a2,a3 + jruc PERCENT_WORK + + +#***************************************************************************** +* +prn_cpuwins + movi AUD_VSCPUF,a0 + calla GET_AUD + move a1,a4 + + movi AUD_CPUWIN,a0 + calla GET_AUD + movi 100,a0 + mpyu a0,a1 + move a1,a2 + move a4,a0 + callr ROUNDED_A0_INTO_A2 ;DIVIDES A0 INTO A2. RESULT IN A2 + move a2,a3 + jruc PERCENT_WORK + + +#***************************************************************************** +* avg battle time (all categories) + +prn_avgtime + movi AUD_2PBTIME,a0 + calla GET_AUD + move a1,a3 + movi AUD_CPUWINTIME,a0 + calla GET_AUD + add a1,a3 + movi AUD_CPULOSETIME,a0 + calla GET_AUD + add a1,a3 + + movi AUD_VSHUMF,a0 + calla GET_AUD + move a1,a2 + movi AUD_VSCPUF,a0 + calla GET_AUD + add a1,a2 + + divu a2,a3 + move a3,a1 + jruc P_TIME + + +#***************************************************************************** +* avg 2-player battle time + +prn_hvhtime + movi AUD_2PBTIME,a0 + calla GET_AUD + + move a1,a3 + movi AUD_VSHUMF,a0 + calla GET_AUD + + divu a1,a3 + move a3,a1 + jruc P_TIME + + +#***************************************************************************** +* avg CPU win time + +prn_cwintime + movi AUD_CPUWINTIME,a0 + calla GET_AUD + + move a1,a3 + movi AUD_CPUWIN,a0 + calla GET_AUD + + divu a1,a3 + move a3,a1 + jruc P_TIME + + +#***************************************************************************** +* avg CPU loss time + +prn_closstime + movi AUD_CPULOSETIME,a0 + calla GET_AUD + + move a1,a3 + movi AUD_VSCPUF,a0 + calla GET_AUD + move a1,a2 + movi AUD_CPUWIN,a0 + calla GET_AUD + sub a1,a2 + + divu a2,a3 + move a3,a1 + jruc P_TIME + + +#***************************************************************************** +* fastest human v human win + +prn_fasthvh + movi AUD_FASTHDH,a0 + calla GET_AUD + jruc P_TIME + + +#***************************************************************************** +* fastest computer win + +prn_fastcwin + movi AUD_FASTCDH,a0 + calla GET_AUD + jruc P_TIME + + +#***************************************************************************** +* fastest computer loss + +prn_fasthwin + movi AUD_FASTHDC,a0 + calla GET_AUD + jruc P_TIME + + +#***************************************************************************** +* percentage of human combo games + +prn_combogames + movi AUD_COMBO,a2 + movi AUD_TOTSTARTS,a0 + jruc #set + +****************************************************************************** +* wrestler win percentages +* + +bhart_hwinpct + movi AUD_BHART,a0 + movi AUD_BHARTHW,a2 + jruc #set +bhart_cwinpct + movi AUD_BHARTC,a0 + movi AUD_BHARTCW,a2 + jruc #set +rramo_hwinpct + movi AUD_RRAMO,a0 + movi AUD_RRAMOHW,a2 + jruc #set +rramo_cwinpct + movi AUD_RRAMOC,a0 + movi AUD_RRAMOCW,a2 + jruc #set +under_hwinpct + movi AUD_UNDER,a0 + movi AUD_UNDERHW,a2 + jruc #set +under_cwinpct + movi AUD_UNDERC,a0 + movi AUD_UNDERCW,a2 + jruc #set +yoko_hwinpct + movi AUD_YOKO,a0 + movi AUD_YOKOHW,a2 + jruc #set +yoko_cwinpct + movi AUD_YOKOC,a0 + movi AUD_YOKOCW,a2 + jruc #set +smich_hwinpct + movi AUD_SMICH,a0 + movi AUD_SMICHHW,a2 + jruc #set +smich_cwinpct + movi AUD_SMICHC,a0 + movi AUD_SMICHCW,a2 + jruc #set +bbbig_hwinpct + movi AUD_BBBIG,a0 + movi AUD_BBBIGHW,a2 + jruc #set +bbbig_cwinpct + movi AUD_BBBIGC,a0 + movi AUD_BBBIGCW,a2 + jruc #set +dclow_hwinpct + movi AUD_DCLOW,a0 + movi AUD_DCLOWHW,a2 + jruc #set +dclow_cwinpct + movi AUD_DCLOWC,a0 + movi AUD_DCLOWCW,a2 + jruc #set +lluge_hwinpct + movi AUD_LLUGE,a0 + movi AUD_LLUGEHW,a2 + jruc #set +lluge_cwinpct + movi AUD_LLUGEC,a0 + movi AUD_LLUGECW,a2 + jruc #set +#set + calla GET_AUD + move a1,a4 + move a2,a0 + calla GET_AUD + movi 100,a0 + mpyu a0,a1 + move a1,a2 + move a4,a0 + callr ROUNDED_A0_INTO_A2 + move a2,a3 + jruc PERCENT_WORK + +************************************************************************** +* NUMBER_WORK - Print audit number +* A3=# + +PERCENT_WORK + MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER + CALLA LM_SETUP + + MOVE A3,A8 ;NOW WE HAVE BINARY NUMBER + CALLA HEXTOASC ;NOW WE POINT TO THE STRING. + + PUSH a8 + move a8,a7 + movi str_pct,a8 + CALLA STRCAT + PULL a8 + + PUSH a0 + move *a13(AT_RX),a0 + PUSHP a0 + addi 13,a0 + move a0,*a13(AT_RX) + PULL a0 + + move *a13(AT_PTR),a6,L ;Get *audit + move *a6(AUD_COLOR),a6 + + JSRP RIGHT_FINISH + + PULLP a0 + move a0,*a13(AT_RX) ;restore right margin + RETP + +#***************************************************************************** + +MISC_AUD + .word 50,18,AUD_LM,AUD_RM ;Y start, Y spacing, LMar, RMar + AMAC M_SECBON,0,AUDSURV,ROBO_YELLOW ;WARPS TAKEN + AMAC M_HIDB,0,AUDBONE,ROBO_YELLOW ;GAMES NOT FINISHED + AMAC M_PLAYS,DOPLAYS,0,ROBO_YELLOW ;PLAYS ON TOP + AMAC M_P1MIN,DO_P1MIN,0,ROBO_YELLOW + AMAC M_P2MIN,DO_P2MIN,0,ROBO_YELLOW + AMAC M_AVGT,DO_AVGT,0,ROBO_YELLOW + AMAC M_ELAPSE,DO_ELAPSE,0,ROBO_YELLOW + AMAC adiff_s,diff_prt,0,>1212 + .LONG 0 + +adiff_s TXTLINE "GAME DIFFICULTY LEVEL" + + + .IF 0 +******************************** +* Display revision message +* Do coin DIP if enabled +* Check cmos, if bad reset to factory + +FACCHECK + calla dpageflip_off + + CALLA CLR_SCRN + MOVI DIAGP,A0 + CALLA pal_getf + + MOVI AUDSTAT,A0 ;CLEAR GAME STATE AUDIT + CLR A1 + CALLA STORE_AUDIT + + MOVI ROM_NAME,A2 + MOVI ROBO_LF,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + .if YUNIT + move @SWITCH+30h,a0 + btst 6,a0 + jrnz fc40 ;No DIP coinage? + + movk 1,a0 ;Just coinage + calla FAC_SET + movi dipcoinage_mess,a8 + JSRP L_MESS +fc40 + .endif + + .if DEBUG + SLEEPK 1 ;Show it DEBUG + .else + SLEEP 120 ;Show it + .endif + + CALLA CMOS_VAL ;CMOS BOGUS? + JRZ FACC0 ;NO + + MOVI MESS_RESET,A8 ;ERROR MESSAGE + JSRP L_MESS + SLEEP 60 + + CALLR RES_ALL ;ALL TIME TABLE + clr a0 ;Full + CALLA FAC_SET + + MOVI MESS_FAC,A8 + CALLA LM_SETUP ;GET CONFIRMATION DATA READY. + JSRP LM_FINIS + SLEEP 60 + CALLA CMOS_VAL ;CMOS BOGUS? + JRZ FACC00 ;NO + + CALLA SCRCLR + MOVI MESS_RESET,A8 ;ERROR MESSAGE + JSRP L_MESS +FACC00 + SLEEP 240 + +FACC0 CALLA SCRCLR + + CREATE AMODE_PID,attract_mode + DIE + + +dipcoinage_mess + MESS_MAC RD7FONT,SPACING20,200,65,ROBO_WHITE,STRCNRM,0 + .byte "USING DIPSWITCH COINAGE",0,0 + .even + + .ENDIF + + +******************************** +* Octopuss sucessful, show stats + +HID_P + clr a0 + move a0,@octopus2 + +;;; JSRP show_designteam + + move @octopus2,a0 + JAZ DIAG_EX ;NOW GET OUT! + + CALLA display_init ;MAKE SURE A13 IS OK BEFORE ANY ACTIONS! + CALLA DIGSRT ;RE-INIT THE WORLD! + + MOVI ROM_NAME,A2 + MOVI ROBO_LF,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + +* A4 = UPPER LEFT Y,X * +* A5 = LOWER RIGHT Y,X * +* A6 = NUMBER OF SLICES GOING IN. * + +; MOVI [4EH,TIT_ULX],A4 +; MOVI [190H,TIT_LRX],A5 +; MOVK 16,A6 +; CALLA G_BORDER + +; MOVI M_TEAM,A8 ;PUT UP THE DESIGN TEAM! +; JSRP L_MESS +; +; JSRP WAIT_BUT + + calla CLR_SCRN ;Clr screen + + movi COIN_OCTO_AUDS,a0 + JSRP PRNT_AUD + + movi AUD_Y_STRT,a0 ;aud Y start + MOVE a0,*A13(AT_Y),W ;set Y COORDINATE + MOVI AUDLCOIN,A8 ;NOW PRINT MONEY FOR 1ST 3 + JSRP PRINT_COL2 + + +; movi COIN_AUDS,a0 ;PUT TABLE UP +; JSRP PRNT_AUD +; movi COIN1_AUDS,a0 ;PUT TABLE UP +; JSRP PRNT_AUD +; movi AUDLCOIN,a8 ;NOW PRINT MONEY FOR 1ST 3 +; JSRP PRINT_COL +; movi COIN2_AUDS,a0 ;PUT TABLE UP +; JSRP PRNT_AUD + + JSRP WAIT_BUT + + + calla CLR_SCRN ;Clr screen + movi GAME_AUDS1,A0 ;Show 1st screen + JSRP PRNT_AUD + JSRP WAIT_BUT + + calla CLR_SCRN ;Clr screen + movi GAME_AUDS2,A0 ;Show 2nd screen + JSRP PRNT_AUD + JSRP WAIT_BUT + +; MOVI AUDLCOIN,A8 ;Prt money +; JSRP PRINT_COL + JSRP WAIT_BUT + +; JSRP DISPDUMP +; JSRP WAIT_MUT ;Clrs dump if sticks down + +;;; JSRP show_player_records + + JAUC DIAG_EX ;NOW GET OUT! + + +************************************************************************** +* PRNT_AUD - THIS IS CALLED TO PRINT OUT AN AUDIT TABLE + +AT_PTR EQU PDATA ;LONG +AT_Y EQU PDATA+LONG_SIZE ;WORD +AT_DY EQU AT_Y+WORD_SIZE ;WORD +AT_LX EQU AT_DY+WORD_SIZE ;WORD LEFT MARGIN X +AT_RX EQU AT_LX+WORD_SIZE ;WORD RIGHT MARGIN X +AT_OBJ EQU AT_RX+WORD_SIZE ;LONG OBJECT POINTER FOR COLLECTION ROUT +AT_MESS EQU AT_OBJ+LONG_SIZE ;LONG PRINT_MONEY MESSAGE STASH + +PRNT_AUD + MOVE *A0+,A1 ;GET STARTING HEIGHT + MOVE A1,*A13(AT_Y) ;STORE + + MOVE *A0+,A1 ;GET DY TO USE + MOVE A1,*A13(AT_DY) ;STASH IT AWAY + + MOVE *A0+,A1 ;GET LEFT MARGIN + MOVE A1,*A13(AT_LX) ;STORE + + MOVE *A0+,A1 ;GET RIGHT MARGIN + MOVE A1,*A13(AT_RX) ;STASH IT AWAY + + MOVE A0,*A13(AT_PTR),L ;SAVE POINTER INTO AREA + +PA1 JSRP aud_prtone + + MOVE *A13(AT_PTR),A0,L ;GET POINTER + ADDI AUD_T_SIZE,A0 + MOVE A0,*A13(AT_PTR),L ;PUT BACK + + CALLR ADD_AUDIT_DY + + MOVE *A0,A1,L ;ARE WE DONE? + JRNZ PA1 + SLEEPK 2 + + RETP + +************************************************************************** +* * +* ADD_AUDIT_DY * +* * +* THIS IS CALLED TO MOVE THE AUDIT Y (STORE IN * +* PROCESS AREA) TO THE NEXT AUDIT BY ADDING THE * +* CURRENT DY (ALSO STORED IN PROCESS AREA). * +* * +************************************************************************** +ADD_AUDIT_DY + MMTM SP,A1,A2 + MOVE *A13(AT_Y),A1,W + MOVE *A13(AT_DY),A2,W ;GET DELTA Y + ADD A2,A1 ;MOVE THE Y DOWN + MOVE A1,*A13(AT_Y),W + MMFM SP,A1,A2 + RETS + +BEGIN_AUDIT + MMTM SP,A0 + CLR A0 + MOVE A0,@BAD_AUD,W ;MONITOR CORRUPTION. + MMFM SP,A0 + RETS + +******************************** +* Print an audit line + + SUBRP aud_prtone + + CALLR BEGIN_AUDIT + MOVE *A13(AT_PTR),A3,L ;GET POINTER + MOVE *A3(AUD_ROUTINE),A4,L + jrz apo20 ;No code? + + movi apo50,a7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JUMP A4 ;"CALL" THE ROUTINE + +apo20 MOVE *A3(AUD_NUMBER),A0 ;FETCH THE AUDIT NUMBER + CALLA GET_AUD ;TURN INTO AUDIT COUNT! + MOVE A1,A3 ;PROTECT FOR A SECOND. + JSRP NUMBER_WORK ;GET THE NUMBER IN A3 UP THERE! + +apo50 + movi MESS_AUD_LINE,a8 + calla LM_SETUP ;Setup for audit printing + + move *a13(AT_PTR),a3,L ;Get *audit + move *a3(AUD_COLOR),a6 + move *a3(AUD_MESS),a8,L ;Get *text + + jruc LEFT_FINISH + + +******************************** +* LEFT_FINISH AND RIGHT_FINISH +* +* THESE ARE CALLED TO PUT AUDIT INFO +* ON THE LEFT OR RIGHT SIDE ONCE A8 POINTS AT +* THE CORRECT DATA TO PRINT + +LEFT_FINISH + CALLR TURN_RED_IF_NEC + CALLR SET_FOR_Y ;SET FOR AUDIT'S Y + CALLR SET_LEFT_X ;SET FOR LEFT X + JSRP LM_FINIS ;AND TYPE UP THE MESSAGE! + RETP + +RIGHT_FINISH + CALLR TURN_RED_IF_NEC ;CHANGE COLOR IF CORRUPTED. + CALLR SET_FOR_Y ;SET FOR AUDIT'S Y + CALLR SET_RIGHT_X + JSRP LM_FINIS ;FINISH THE JOB! + + MOVE @BAD_AUD,A0,W ;IS IT CORRUPTED? + JRZ RFX ;NOPE....RETURN + + MOVI MESS_ERROR,A8 + CALLA LM_SETUP ;SETUP "ERROR" + + CALLR SET_FOR_Y ;SET FOR AUDIT'S Y + ADDI 40000H,A9 ;PUSH 4 Y UNITS TO CENTER + CALLR SET_RIGHT_X + JSRP LM_FINIS ;FINISH THE JOB! + +RFX RETP + +TURN_RED_IF_NEC + MMTM SP,A3 + MOVE @BAD_AUD,A3 ;CHANGE TO RED? + JRZ DAA_1 ;NOPE...ITS OK! + MOVI ROBO_RED,A6 ;CHANGE COLOR TO RED +DAA_1 MMFM SP,A3 + RETS + +SET_FOR_Y + MMTM SP,A3 + MOVE *A13(AT_Y),A3,W ;GET Y COORDINATE + SLL 16,A3 ;PUT IT IN POSITION + MOVY A3,A9 ;PUT IT IN PLACE + MMFM SP,A3 + RETS + +SET_LEFT_X + MMTM SP,A3 + MOVE *A13(AT_LX),A3,W + MOVX A3,A9 ;PUT THE X IN PLACE + MMFM SP,A3 + RETS + +SET_RIGHT_X + MMTM SP,A3 + MOVE *A13(AT_RX),A3,W + MOVX A3,A9 ;PUT THE X IN PLACE + MMFM SP,A3 + RETS + +************************************************************************** +* NUMBER_WORK - Print audit number +* A3=# + +NUMBER_WORK + MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER + CALLA LM_SETUP + + MOVE A3,A8 ;NOW WE HAVE BINARY NUMBER + CALLA HEXTOASC ;NOW WE POINT TO THE STRING. + move *a13(AT_PTR),a6,L ;Get *audit + move *a6(AUD_COLOR),a6 + jruc RIGHT_FINISH + +************************************************************************** +* * +* GET_STARTS * +* * +* TOTAL GAME STARTS IN A2. * +* * +************************************************************************** +GET_STARTS + MMTM SP,A0,A1 + MOVK AUD1STRT,A0 + CALLA GET_AUD + MOVE A1,A2 + + MOVK AUD2STRT,A0 + CALLA GET_AUD + ADD A1,A2 + MMFM SP,A0,A1 + RETS + +************************************************************************** +* * +* GET_CONTS * +* * +* TOTAL GAME CONTINUES IN A2. * +* * +************************************************************************** +GET_CONTS + MMTM SP,A0,A1 + MOVK AUD1CONT,A0 + CALLA GET_AUD + MOVE A1,A2 + + MOVK AUD2CONT,A0 + CALLA GET_AUD + ADD A1,A2 + MMFM SP,A0,A1 + RETS + + +************************************************************************** +* Get total plays (Beginning+starts+continues) +* Rets: A2=# + +GET_PLAYS + PUSH a0 +; movk AUDBEGIN,a0 +; calla GET_AUD +; move a1,a0 + clr a0 + callr GET_STARTS ;Actually middle starts + add a2,a0 + callr GET_CONTS + add a0,a2 + PULL a0 + rets + +************************************************************************** +* * +* PRINT_MONEY * +* * +* THIS IS CALLED TO PRINT OUT THE "MONEY" ON THE MONEY * +* LINE OF THE AUDIT TABLE. * +* * +* AUDIT X AND Y IS SET FOR THE LINE TO DISPLAY IT ON. * +* * +* A8 HAS THE 1ST OF 3 AUDITS TO USE FOR THE CALCULATION * +* A9 HAS THE MESSAGE TO LEFT JUSTIFY ON THE CURRENT LINE * +* * +************************************************************************** +PRINT_COL + MOVI T_MONEY,A9 ;THIS ENTRYPOINT IS FOR COLLECTION MESSAGE + +PRINT_MONEY + MOVE A9,*A13(AT_MESS),L ;HOLD MESSAGE FOR WHEN WE NEED IT! + MOVI ADJCDIV,A0 ;IF DIVISOR IS ZERO..THEN ITS OFF! + CALLA GET_ADJ + JRZ NO_MONEY ;THAT'S ALL FOLKS! + + CALLR BEGIN_AUDIT ;KEEP TRACK OF SANITY OF CALC. +* +* ROUTINE IN A2 FORMS STRING BASED ON 3 AUDITS STARTING +* WITH THE NUMBER IN A8. +* + CALLR STR_OBJ ;GET AN OBJECT FOR STRINGING + JRC NO_MONEY ;COULDN'T GET AN OBJECT! + + CALLR SUM_COINS ;ADD UP THE COIN PARTS IN A2 + +* +* WE'RE DOING A PREFIX STRING...NO PREFIX IF ITS BEEN TAMPERED +* + CALLR SIXP ;HAVE THE 6 BEEN TAMPERED + JRZ NO_PREFIX + CALLR GET_CSPT ;A6 POINTS AT CSECECT DATA. + MOVE *A6(CS_LMES),A8,L ;LEFT STRING FOR MONEY TOTAL + CALLA STRCAT ;SHOVE THE STRING IN! + +NO_PREFIX + MOVK 1,A0 ;DIVIDE COINS BY 1 IF ITS BEEN TAMPERED WITH + CALLR SIXP + JRZ DIV_BY_1 ;TAMPERED WITH...DIVIDE BY 1 FOR "COINS" + + MOVI ADJCDIV,A0 ;GET THE COIN PARTS PLEASE + CALLA GET_ADJ +* +* GET QUOTIENT IN A2 +* REMAINDER IN A3 +* +DIV_BY_1 + MOVE A2,A3 ;SETUP AS DIVIDEND + CLR A2 + DIVU A0,A2 ;DIVIDE UNITS/DIVISOR + + MOVE A2,A8 ;WE NEED TO PUT QUOTIENT IN STRING + CALLA HEXTOASC ;THIS FORMS STRING FOR QUOTIENT + + CALLA STRCAT ;ADD QUOTIENT TO PRINTOUT + + CMPI 1,A0 ;IS DIVISOR ONE?????? + JRZ NOFRAC ;YEP.......NO DECIMAL! +* +* WE HAVE A DIVISOR.....WE NEED TO DISPLAY CENTS. +* + MOVI ME_DECIMAL,A8 ;ADD DECIMAL POINT + CALLA STRCAT ;ITS THERE! +* +* REMAINDER IS IN A3....TURN IT TO 100THS. +* + MOVI 100,A2 + MPYU A2,A3 ;REMAINDER TIMES 100 + MOVE A3,A2 ;DIVIDEND IN A2 + + CALLR ROUNDED_A0_INTO_A2 + CALLR A2_100TH ;CAT THE 100THS IN A2 TO THE A7 STRING. + +NOFRAC + MOVI COINS_TRAIL,A8 ;ASSUME IT WILL BE "COINS" + CALLR SIXP ;TAMPERED? + JRZ COIN_SUF ;YEP....USE " COINS" + MOVE *A6(CS_RMES),A8,L ;FINISH IT OFF WITH RIGHT STRING + +COIN_SUF + CALLA STRCAT ;SHOVE THE STRING IN! + MOVI M_MONEY,A8 ;MESSAGE FOR THIS LINE PASSED IN A9 + CALLA LM_SETUP + + MOVE @TMPOBJ,A8,L ;POINTER TO MONEY STRING + JSRP RIGHT_FINISH ;PUT ON RIGHT MARGIN + + CALLR STR_FREE + + MOVE *A13(AT_MESS),A8,L ;SETUP PASSED MESSAGE + CALLA LM_SETUP + JSRP LEFT_FINISH ;PUT UP PASSED MESSAGE. +NO_MONEY + RETP + +************************************************************************** +* prints up collection minus $$$ +* + +PRINT_COL2 + MOVI T_MONEY2,A9 ;THIS ENTRYPOINT IS FOR COLLECTION MESSAGE + + MOVE A9,*A13(AT_MESS),L ;HOLD MESSAGE FOR WHEN WE NEED IT! + MOVI ADJCDIV,A0 ;IF DIVISOR IS ZERO..THEN ITS OFF! + CALLA GET_ADJ + JRZ NO_MONEY2 ;THAT'S ALL FOLKS! + + CALLR BEGIN_AUDIT ;KEEP TRACK OF SANITY OF CALC. +* +* ROUTINE IN A2 FORMS STRING BASED ON 3 AUDITS STARTING +* WITH THE NUMBER IN A8. +* + CALLR STR_OBJ ;GET AN OBJECT FOR STRINGING + JRC NO_MONEY2 ;COULDN'T GET AN OBJECT! + + CALLR SUM_COINS ;ADD UP THE COIN PARTS IN A2 + +* +* WE'RE DOING A PREFIX STRING...NO PREFIX IF ITS BEEN TAMPERED +* +;; CALLR SIXP ;HAVE THE 6 BEEN TAMPERED +;; JRZ NO_PREFIX2 +;; CALLR GET_CSPT ;A6 POINTS AT CSECECT DATA. +;; MOVE *A6(CS_LMES),A8,L ;LEFT STRING FOR MONEY TOTAL + movi M_VERINF,a8 + CALLA STRCAT ;SHOVE THE STRING IN! + +NO_PREFIX2 + MOVK 1,A0 ;DIVIDE COINS BY 1 IF ITS BEEN TAMPERED WITH + CALLR SIXP + JRZ DIV_BY_12 ;TAMPERED WITH...DIVIDE BY 1 FOR "COINS" + + MOVI ADJCDIV,A0 ;GET THE COIN PARTS PLEASE + CALLA GET_ADJ +* +* GET QUOTIENT IN A2 +* REMAINDER IN A3 +* +DIV_BY_12 + MOVE A2,A3 ;SETUP AS DIVIDEND + CLR A2 + DIVU A0,A2 ;DIVIDE UNITS/DIVISOR + + MOVE A2,A8 ;WE NEED TO PUT QUOTIENT IN STRING + CALLA HEXTOASC ;THIS FORMS STRING FOR QUOTIENT + + CALLA STRCAT ;ADD QUOTIENT TO PRINTOUT + + CMPI 1,A0 ;IS DIVISOR ONE?????? + JRZ NOFRAC2 ;YEP.......NO DECIMAL! +* +* WE HAVE A DIVISOR.....WE NEED TO DISPLAY CENTS. +* +;; MOVI ME_DECIMAL,A8 ;ADD DECIMAL POINT + MOVI ME_DASH,A8 ;ADD DASH + CALLA STRCAT ;ITS THERE! +* +* REMAINDER IS IN A3....TURN IT TO 100THS. +* + MOVI 100,A2 + MPYU A2,A3 ;REMAINDER TIMES 100 + MOVE A3,A2 ;DIVIDEND IN A2 + + CALLR ROUNDED_A0_INTO_A2 + CALLR A2_100TH ;CAT THE 100THS IN A2 TO THE A7 STRING. + +NOFRAC2 + MOVI COINS_TRAIL,A8 ;ASSUME IT WILL BE "COINS" + CALLR SIXP ;TAMPERED? + JRZ COIN_SUF2 ;YEP....USE " COINS" + MOVE *A6(CS_RMES),A8,L ;FINISH IT OFF WITH RIGHT STRING + +COIN_SUF2 + CALLA STRCAT ;SHOVE THE STRING IN! + MOVI M_MONEY,A8 ;MESSAGE FOR THIS LINE PASSED IN A9 + CALLA LM_SETUP + + MOVE @TMPOBJ,A8,L ;POINTER TO MONEY STRING + JSRP RIGHT_FINISH ;PUT ON RIGHT MARGIN + + CALLR STR_FREE + + MOVE *A13(AT_MESS),A8,L ;SETUP PASSED MESSAGE + CALLA LM_SETUP + JSRP LEFT_FINISH ;PUT UP PASSED MESSAGE. +NO_MONEY2 + RETP + +************************************************************************** +* * +* STR_OBJ * +* * +* THIS IS CALLED TO GET AN OBJECT FOR * +* CONCATONATING STRINGS TOGETHER. * +* * +* A7 POINTS AT NULL STRING * +* * +* NOTE THAT THIS IS NO LONGER RE-ENTRANT! * +* * +* YOU MUST CALL STR_FREE BEFORE SLEEPING! * +* * +************************************************************************** +STR_OBJ + PUSH a0,a1,a14 + CALLA GETOBJ ;USE AN OBJECT BLOCK FOR STRING MANIPULATION + JRNZ STR_O1 +* +* NO OBJECTS DURING TEST MODE +* + SETC + JRUC STR_OFAIL + +STR_O1 + MOVE A0,@TMPOBJ,L ;SAVE TO FREE LATER + MOVE A0,A7 ;THIS IS WHERE IT BELONGS. + CLR A0 + MOVB A0,*A7 ;MAKE STRING NULL + CLRC ;RETURN SUCCESS +STR_OFAIL + PULL a0,a1,a14 + RETS + +************************************************************************** +* * +* ROUNDED_A0_INTO_A2 * +* * +* THIS DIVIDES A0 INTO A2. IT LEAVES THE RESULT IN A2 * +* AND ROUNDS UP IF NECESSARY. * +* * +************************************************************************** +ROUNDED_A0_INTO_A2 + MMTM SP,A3 + MOVE A0,A0 ;DIVIDE BY ZERO? + JRNZ NDZ + MOVE A0,A2 ;RETURN ZERO + JRUC NOROUND +NDZ + MOVE A2,A3 + CLR A2 ; AS DIVIDEND + DIVU A0,A2 ;DIVIDE AND A2 = PENNIES....A3 = REMAINDER + SLL 1,A3 ;SHIFT REMAINDER + CMP A0,A3 ;COMPARE TO DIVISOR + JRLO NOROUND ;TOO LOW TO ROUND UP + INC A2 ;A2 HAS CORRECT PENNIES +NOROUND + MMFM SP,A3 + RETS + +************************************************************************** +* * +* A2_100TH * +* * +* A7 HAS A STRING TO BE PRINTED. WE HAVE THE * +* LAST TWO NUMBERS (NOT TO BE LEAD ZERO BLANKED) IN * +* A2. CONCATONATE THEM ONTO THE A7 STRING. * +* * +* THIS IS USED FOR PENNIES, HOURS AND MINUTES. * +* * +************************************************************************** +A2_100TH + MMTM SP,A8 + CMPI 9,A2 ;9 OR LESS REQUIES LEAD ZERO. + JRHI NOLEAD + + MOVI ME_ZERO,A8 ;THROW IN THE LEAD ZERO + CALLA STRCAT ;THIS DOES IT! + +NOLEAD + MOVE A2,A8 + CALLA HEXTOASC ;MAKE STRING + CALLA STRCAT ;PUT IT IN! + MMFM SP,A8 + RETS + +************************************************************************** +* * +* SUM_COINS * +* * +* A8 HAS FIRST OF THE 4 AUDIT NUMBERS OF INTEREST * +* * +* RETURN COINS TIMES THEIR FACTORS IN A2. * +* * +************************************************************************** +SUM_COINS + MMTM SP,A0,A1,A3,A6,A4 + + MOVE A8,A0 ;POINT AT AUDIT NUMBER + CLR A2 ;SUM = ZERO + + CALLR GET_CSPT ;A6 POINTS AT CSELECT TABLE + ADDI CS_LVAL,A6 ;POINT AT 1ST MULTIPLIER + + MOVI CHUTES,A4 ;NOW...ITERATE OVER THE CHUTES + +NEXT_CHUTE + MOVE *A6+,A3,W ;GET MULTPLIER FOR THIS CHUTE + CALLR FIX_A3 ;REPLACE A3 WITH 1 (MULTIPLIER) IF + ;ITS SOME CUSTOM MODE. + CALLR ADD_AUD_A0_TIMES_A3_TO_A2 + INC A0 ;NEXT AUDIT + DSJS A4,NEXT_CHUTE + + MMFM SP,A0,A1,A3,A6,A4 + RETS + +ADD_AUD_A0_TIMES_A3_TO_A2 + CALLA GET_AUD ;FETCH THE AUDIT + MPYU A1,A3 ;TIME THE FACTOR + ADD A3,A2 + RETS + +************************************************************************** +* FIX_A3 +* +* THIS IS CALLED BY THE LOW LEVEL MONEY TOTALIZER. +* THE MULTIPLIER FOR THE COIN SLOT THAT ITS WORKING +* ON IS IN A3. WE REPLACE IT WITH "1" TO SUM "TOTAL COINS" +* IF ITS IN A NON-STANDARD COIN MODE. +* +************************************************************************** +FIX_A3 + CALLR SIXP ;HAS IT BEEN TAMPERED WITH? + JRNZ FIX_A3X ;NOPE...LEAVE A3 + + MOVK 1,A3 +FIX_A3X + RETS + +************************************************************************** +* SIXP +* +* THIS IS CALLED TO SEE IF THE 1ST 6 COIN PARAMETERS HAVE +* BEEN TAMPERED WITH. +* +* Z=YES +* +************************************************************************** +SIXP + MMTM SP,A0 + MOVI ADJ1ST6,A0 + CALLA GET_ADJ ;HAS IT BEEN TAMPERED WITH? + MMFM SP,A0 + RETS + +STARTS + CALLR GET_STARTS + MOVE A2,A3 ;GET IN PRINTOUT REG. + jruc NUMBER_WORK ;AND PRINT IT + +CONTINS + CALLR GET_CONTS + MOVE A2,A3 ;GET IN PRINTOUT REG. + jruc NUMBER_WORK ;AND PRINT IT + +DOPLAYS + CALLR GET_PLAYS + MOVE A2,A3 ;PUT IN PLACE + jruc NUMBER_WORK + +DOHSLEFT + MOVI ADJHSRES,A0 + CALLA GET_ADJ ;IS IF OFF? + JRZ DOHSOFF ;YEP...PRINT IT + + CALLA GET_HSC ;GET THE COUNTER VALUE + MOVE A0,A3 + jruc NUMBER_WORK ;AND SHOW IT! + +DOHSOFF + MOVI MESS_AUD_NUM,A8 + CALLA LM_SETUP ;SETUP FOR AUDIT PRINTING. + + MOVI M_HSOFF,A8 ;THIS EFFECTIVELY ERASES LINE! + JAUC RIGHT_FINISH + +DO_P1MIN + MOVI AUD1TIME,A0 +P1MJ + CALLA GET_AUD ;TURN INTO NUMBER + MOVE A1,A4 ;MOVE NUMBER TO "HOUR" COMPUTATION REGGIE + JRUC DH11 ;AND DO LIKE THE HOURS! + + +DO_P2MIN + MOVI AUD2TIME,A0 + JRUC P1MJ + +DO_HOURS + CALLR TOT_TIME ;READ OUT THE TOTAL TIME. +DH11 MOVE A4,A5 ;A5 HAS RUNNING PLAY TIME + CLR A4 ; READY FOR DIVISION + MOVK 12,A0 + DIVU A0,A4 ;A4 HAS MINUTES + CMPI 6,A5 ;ROUND PROPERLY + JRLO DH1 ;NOT ENOUGH + INC A4 +DH1 + MOVE A4,A1 ;NOW THIS DIVIDED BY 60 IS WHAT WE NEED + jruc P_TIME ;DO IT! + +DO_AVGT + CALLR TOT_TIME ;A3 HAS WEIGHTED TIME + +DOAVC CALLR GET_PLAYS ;GET TOTAL PLAYS IN A2 + MOVE A2,A0 ;STASH IN A0. + MOVK 5,A1 ;TURN INTO SECONDS + MPYU A1,A3 ;A3 HAS SECONDS OF INTEREST + MOVE A3,A2 + CALLR ROUNDED_A0_INTO_A2 ;DIVIDE A2 BY PLAYS (AND ROUND) + MOVE A2,A1 ;NOW GET IN PLACE FOR P_TIME + jruc P_TIME ;DO IT! + +DO_ELAPSE + CALLR TOT_TIME + MOVE A4,A3 ;USE ELAPSED TIME + JRUC DOAVC ;AND THE REST IS IDENTICAL. + + +keyavg_prt +; movi AUDKEYTOT,a0 +; calla GET_AUD +; move a1,a3 +; movi AUDFULLGAMES,a0 +; calla GET_AUD +; divs a1,a3 +; jruc NUMBER_WORK ;Print it + + +diff_prt + movk ADJDIFF,a0 + calla GET_ADJ + move a0,a3 + jruc NUMBER_WORK ;Print it + + +************************************************************************** +* * +* P_TIME * +* * +* THIS IS CALLED TO DISPLAY AN AUDIT IN TIME (0:00) * +* FORMAT. THE NUMBER TO BE USED IS PASSED IN A1. * +* * +************************************************************************** +P_TIME + CALLR STR_OBJ ;USE AN OBJECT BLOCK FOR STRING MANIPULATION + JRC NO_OBJS ;NO OBJECTS....PRINT NOTHING + + CLR A0 ;DIVIDEND IN + MOVI 60,A2 + DIVU A2,A0 ;A0 = "MINUTES"....A1 = "SECONDS + + CALLA CAT_A0 ;ADD A0 STRING TO A7 BUILD + MOVI ME_COLON,A8 + CALLA STRCAT ;PUT THE COLON IN. + + MOVE A1,A2 ;GET "SECONDS" IN A2 + CALLR A2_100TH ;AND GET THE 100THS IN. + + MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER + CALLA LM_SETUP + move *a13(AT_PTR),a6,L ;Get *audit + move *a6(AUD_COLOR),a6 + + MOVE A7,A8 ;PUT STRING CORRECT REGGIE + JSRP RIGHT_FINISH ;PRINT THE LINE + + CALLR STR_FREE ;FREE UP THE OBJECT! + +NO_OBJS + RETP ;NOW RETURN TO CALLER + +STR_FREE + MOVE @TMPOBJ,A0,L ;GET OBJECT BACK + JRNZ FREE_IT_NOW + + .IF DEBUG + JRUC $ + .ENDIF + RETS ;NO OBJECT...RETURN! + +FREE_IT_NOW + jauc FREEOBJ ;AND LET IT GO. + +************************************************************************** +* * +* TOT_TIME * +* * +* (1 * P1TIME) + (2 * P2TIME) IN A3 * +* ELAPSED TIME IN A4 * +* * +************************************************************************** +TOT_TIME + MMTM SP,A0,A1 + MOVI AUD1TIME,A0 + CALLA GET_AUD + MOVE A1,A3 + MOVE A1,A4 + MOVI AUD2TIME,A0 + CALLA GET_AUD + ADD A1,A4 ;A4 HAS SIMPLE SUM NOW + SLL 1,A1 ;DOUBLE THE PLAYER 2 TIME + ADD A1,A3 + MMFM SP,A0,A1 + RETS + + +******************************** +**** DATA SECTION BEGINS **** + + .DATA + + + +******************************** +* AUDIT TEXT + +MESS_ERROR + MESS_MAC RD7FONT,SPACING07,0,0,ROBO_RED,STRLNRM,0 + TXTLINE " ERROR" + +MESS_AUD_NUM + MESS_MAC RD7FONT,SPACING20,367,227,ROBO_YELLOW,STRRNRM,0 + +MESS_AUD_LINE + MESS_MAC RD7FONT,SPACING20,23,227,ROBO_YELLOW,STRLNRM,0 + + +MES_AUD TXTLINE "GAME AUDITS" + +MES_BOOK + TXTLINE "COIN BOOKKEEPING" + +M_LCOIN TXTLINE "LEFT SLOT COINS" +M_CCOIN TXTLINE "CENTER SLOT (3) COINS" +M_RCOIN TXTLINE "RIGHT SLOT COINS" + +M_LCOIN2 TXTLINE "JAMS FROM THE LEFT" +M_CCOIN2 TXTLINE "JAMS FROM THE CENTER" +M_RCOIN2 TXTLINE "JAMS FROM THE RIGHT" + +M_XCOIN TXTLINE "EXTRA SLOT (4) COINS" +M_DBV TXTLINE "BILL VALIDATOR" + +M_PAIDC TXTLINE "PAID CREDITS" + +M_SERV TXTLINE "SERVICE CREDITS" + + +M_PLAYS TXTLINE "TOTAL PLAYS" + +M_HSLEFT + TXTLINE "PLAYS UNTIL H.S. RESET" + +M_HSOFF TXTLINE "OFF" + + .even +M_ELAPSE + TXTLINE "AVG. ELAPSED TIME/PLAY" + +M_MONEY MESS_MAC RD15FONT,SPACING20,367,227,ROBO_WHITE,STRRNRM,0 + +T_MONEY MESS_MAC RD15FONT,SPACING20,23,227,ROBO_WHITE,STRLNRM,0 + TXTLINE "TOTAL COLLECTION" + +T_MONEY2 MESS_MAC RD15FONT,SPACING20,23,227,ROBO_WHITE,STRLNRM,0 + TXTLINE "JAM INFO" + +M_VERINF + TXTLINE "031-0" + +M_LOCKUP + TXTLINE "LOCKUPS" +M_HIDB TXTLINE "GAMES NOT FINISHED" + +M_SECBON + TXTLINE "WARPS" + + +************************************************************************** +* * +* MENU DESCRIPTORS * +* * +************************************************************************** +* +* MAIN TEST MENU +* +MEN_MAIN + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSMAIN ;TITLE + .WORD ROBO_WHITE ;COLOR OF TITLE + .WORD MENU_X ;UL X + .WORD MENU_Y-3 ;UL Y + .WORD MENU_DY-6 ;VERTICAL SPACING + .WORD ROBO_WHITE ;COLOR WHEN NOT SELECTED + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD BAR_WID ;WIDTH OF BAR! + .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_DIAG,GO_DIAG,DIAG_HELP + .LONG MESS_COIN_AUD,GO_BOOK,COIN_HELP + .LONG MESS_GAME_AUD,GO_AUD,AUDIT_HELP + .LONG MESS_GAME_ADJ,GO_ADJ,ADJUST_HELP + .LONG MESS_UTIL,GO_UTIL,UTIL_HELP + .LONG MESS_HARDWARE,GO_HARDWARE,HARDWARE_HELP + .LONG MESS_CLOCK,GO_CLOCK,CLOCK_HELP + .LONG MESS_VOL,GO_VOL,VOL_HELP + .LONG MESS_EXIT,0,EXIT_HELP ;SPECIAL CASE! + .LONG 0 ;END + +* UTILITES MENU GOES LEFT OF CENTER + +UM_WID EQU 206 +UM_X EQU TIT_ULX+GAP+MB_XWID+(UM_WID/2)+C_KLUDGE + +MEN_UTIL + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSUTIL ;TITLE + .WORD COLOR_WHITE ;COLOR OF TITLE + .WORD UM_X ;UL X + .WORD MENU_Y-3 ;UL Y + .WORD 18 ;VERTICAL SPACING + .WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEG) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD UM_WID ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_CLCRED,DO_CLCRED,CLCRED_HELP + .LONG MESS_CLCOIN,DO_CLCOIN,CLCOIN_HELP + .LONG MESS_CLAUD,DO_CLAUD,CLAUD_HELP + .LONG MESS_HSRES,DO_HSRES,HSRES_HELP + .LONG MESS_CLPLRECS,DO_CLPLRECS,CLPLRECS_HELP + .LONG MESS_DEF_ADJ,DO_DEF_ADJ,DEF_ADJ_HELP + .LONG MESS_FACSET,DO_FACSET,FACSET_HELP + .LONG opmsg_s,opmsg_main,OPMSG_HELP + .LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG 0 ;END + +* DIAGNOSTIC TESTS MENU + +MEN_DIAG + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSDIAG ;TITLE + .WORD COLOR_RED ;COLOR OF TITLE + .WORD 200 ;UL X + .WORD MENU_Y-3 ;UL Y + .WORD 20 ;VERTICAL SPACING + .WORD COLOR_RED ;COLOR WHEN NOT SELECTED + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 195 ;WIDTH OF BAR! (A LITTLE FATTER) + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_SWTEST,GO_SWTEST,BLNK_HELP + .LONG diptst_mess,dipsw_test,BLNK_HELP +ROM_LEV EQU 3 ;TEST NUMBER FOLLOWING ROM TEST + .LONG MESS_CPUTEST,GO_CPUTEST,BLNK_HELP +RTR_LEV EQU 4 ;TEST NUMBER FOLLOWING CPU TEST (FOR RETURN) + .LONG M_STEST,GO_STEST,BLNK_HELP + .LONG MESS_PATTERNS,GO_PATTERNS,BLNK_HELP + .LONG MESS_BURN,DO_BURN,BLNK_HELP + .LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG 0 + +STM_WID EQU 250 + + +* PRESS ANY BUTTON TO CONTINUE + +ANY_MENU + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG 0 ;TITLE + .WORD 0 ;COLOR OF TITLE + .WORD 200 ;UL X + .WORD 200 ;UL Y + .WORD MENU_DY ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD BAR_HITE ;HEIGHT OF SELECTION BAR + .WORD -9 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 234 ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_ANY,0,NO_HELP + .LONG 0 + +* MONITOR PATTERNS + +MEN_PATTERNS + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSPAT ;TITLE + .WORD COLOR_RED ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD MENU_Y-3 ;UL Y + .WORD 23 ;VERTICAL SPACING + .WORD COLOR_YELLOW ;COLOR WHEN NOT SELECTED + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 234 ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_RED,GO_RED,BLNK_HELP + .LONG MESS_GREEN,GO_GREEN,BLNK_HELP + .LONG MESS_BLUE,GO_BLUE,BLNK_HELP + .LONG MESS_BARS,GO_BARS,BLNK_HELP + .LONG MESS_CROSS,GO_CROSS,BLNK_HELP + .LONG MESS_DIAGM,0,BLNK_HELP + .LONG MESS_MM,FORCE_MAIN,NO_HELP ;RETURN TO MAIN MENU + .LONG 0 + +* DETAILED COINAGE AVAILABLE (ON 1ST COINAGE PAGE) + +MEN_DETAIL + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSPAT ;TITLE + .WORD COLOR_YELLOW ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD 224 ;UL Y + .WORD 12 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 10 ;HEIGHT OF SELECTION BAR + .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 157 ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_CLCOIN,0,NO_HELP ;Clr coins + .LONG MESS_MM,FORCE_MAIN,NO_HELP ;RETURN TO MAIN MENU + .LONG 0 + +* YES/NO (FOR ARE YOU SURE?) + +MEN_YN .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSDIAG ;TITLE + .WORD COLOR_RED ;COLOR OF TITLE + .WORD 200 ;UL X + .WORD 166 ;UL Y + .WORD 19 ;VERTICAL SPACING + .WORD COLOR_YELLOW ;COLOR WHEN NOT SELECTED + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 78 ;WIDTH OF BAR! (A LITTLE FATTER) + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_YES,0,NO_HELP + .LONG MESS_NO,0,NO_HELP + .LONG 0 + +* NEXT AUDIT PAGE + +MEN_AP1 .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSPAT ;TITLE + .WORD ROBO_YELLOW ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD 226 ;UL Y + .WORD 12 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 10 ;HEIGHT OF SELECTION BAR + .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 157 ;WIDTH OF BAR! + .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_TOPAGE2,0,NO_HELP ;DETAILED SECTION + .LONG MESS_MM,FORCE_MAIN,NO_HELP;RETURN TO MAIN MENU + .LONG 0 + +MEN_AP2 .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSPAT ;TITLE + .WORD ROBO_YELLOW ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD 226 ;UL Y + .WORD 12 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 10 ;HEIGHT OF SELECTION BAR + .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 157 ;WIDTH OF BAR! + .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_TOPAGE2,0,NO_HELP ;DETAILED SECTION + .LONG MESS_BACKP1,0,NO_HELP ;DETAILED SECTION + .LONG 0 + +MEN_AP3 .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSPAT ;TITLE + .WORD ROBO_YELLOW ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD 226 ;UL Y + .WORD 12 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 10 ;HEIGHT OF SELECTION BAR + .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 157 ;WIDTH OF BAR! + .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_MM,FORCE_MAIN,NO_HELP;RETURN TO MAIN MENU + .LONG MESS_BACKP1,0,NO_HELP ;DETAILED SECTION + .LONG 0 + + +MEN_SOUNDTEST + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESS_SNDTST0 ;TITLE + .WORD ROBO_YELLOW ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD MENU_Y-3 ;UL Y + .WORD 20 ;VERTICAL SPACING + .word ROBO_RED ;colour when not selected + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 192+6 ;WIDTH OF BAR! + .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM + .long MESS_SNDTST1,DO_GENTEST,NO_HELP + .long MESS_SNDTST2,DO_PLAYSOUNDS,NO_HELP + .long MESS_SNDTST3,0,NO_HELP + .long MESS_SNDTST4,FORCE_MAIN,NO_HELP + .LONG 0 + +************************************************************************** +* * +* HELP MENUS FOR MAIN MENU * +* * +************************************************************************** +* HM_JUST 0 = CENTER 1 = LEFT +* HM_COLOR +* HM_ENTS + +DIAG_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;# ENTRIES + .LONG MESS_SWTEST + .long diptst_mess + .LONG MESS_CPUTEST + .LONG M_STEST + .LONG MESS_PATTERNS + .LONG U_BURNIN + +COIN_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 3 ;2 ENTRIES + .LONG CH_0 + .LONG CH_1 + .LONG CH_2 + +AUDIT_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 2 ;2 ENTRIES + .LONG AH_1 + .LONG AH_2 + +ADJUST_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 3 ;3 ENTRIES + .LONG AD_1 + .LONG AD_2 + .LONG AD_3 + +UTIL_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG U_CLR_CRED + .LONG U_CLR_COIN + .LONG U_CLR_AUD + .LONG U_HSRESET + .LONG U_CLRRECS + .LONG U_FACTORY + +VOL_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 2 ;2 ENTRIES + .LONG MESS_ATV + .LONG MESS_OTG + +EXIT_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 1 ;1 ENTRY + .LONG U_END + + +******************************** +* HELP FOR UTILITY MENU + +CLCRED_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 3 ;# entries + .LONG MEH_CLCRED1 + .LONG MEH_CLCRED2 + .LONG MEH_CLCRED3 + +CLCOIN_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 4 ;# entries + .LONG MEH_CLCOIN1 + .LONG MEH_CLCOIN2 + .LONG MEH_CLCOIN3 + .LONG MEH_CLCOIN4 + +CLAUD_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 2 ;# entries + .LONG MEH_CLAUD1 + .LONG MEH_CLAUD2 + +CLPLRECS_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 2 ;# entries + .long MEH_CLPLRECS1 + .long MEH_CLPLRECS2 + +HSRES_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 3 ;# entries + .LONG MEH_RESHS1 + .LONG MEH_RESHS2 + .LONG MEH_RESHS3 + +DEF_ADJ_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 4 ;# entries + .LONG MEH_DEFA1 + .LONG MEH_DEFA2 + .LONG MEH_DEFA3 + .LONG MEH_DEFA4 + +FACSET_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 4 ;# entries + .LONG MEH_FAC1 + .LONG MEH_FAC2 + .LONG MEH_FAC3 + .LONG MEH_FAC4 + +OPMSG_HELP + .word 0 ;CENTER JUSTIFY + .word COLOR_BLUE ;COLOR + .word 3 ;# entries + .long opmsgh1_s + .long opmsgh2_s + .long opmsgh3_s + + +************************************************************************** +* * +* TEXT STRINGS * +* * +************************************************************************** + +SIY0 equ 190 +SIY1 equ 212 +SIY2 equ 224 +SIY3 equ 236 + +SND_INST + MESS_MAC RD7FONT,SPACING07,200,SIY1,ROBO_WHITE,STRCNRM,0 + .STRING "UP AND DOWN TO SELECT SOUND",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,SIY2,ROBO_WHITE,STRCNRM,0 + .STRING "PRESS ACTION BUTTON TO PLAY",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,SIY3,ROBO_WHITE,STRCNRM,0 + .STRING "PRESS START BUTTON TO EXIT",0,0 + +SND_SETUP MESS_MAC RD15FONT,SPACING20,200,SIY0,ROBO_WHITE,STRCNRM,0 + +sounds_tab .long SND_ST0,SND_ST1,SND_ST2,SND_ST3 + .long SND_ST4,SND_ST5,SND_ST6,SND_ST7 + +SND_ST0 .string "FACE HIT",0 +SND_ST1 .string "WHOOSH",0 +SND_ST2 .string "HARD HIT",0 +SND_ST3 .string "LONG GRUNT",0 +SND_ST4 .string "SHORT GRUNT",0 +SND_ST5 .string "DOINK LAUGH",0 +SND_ST6 .string "DOINK YELL",0 +SND_ST7 .string "RAZOR CHOKE",0 + + .even + +TEST_SOUND_TAB + .word 080h,0B4h,0C7h,0DDh,114h,226h,230h,31Fh + +MESS_SNDTST0 .string "SOUND BOARD TEST",0 +MESS_SNDTST1 .string "GENERAL TEST",0 +MESS_SNDTST2 .string "PLAY SOUNDS",0 +MESS_SNDTST3 .string "BACK TO DIAGNOSTICS MENU",0 +MESS_SNDTST4 .string "RETURN TO MAIN MENU",0 + +MESS_YES + .byte "YES",0 + .EVEN + +MESS_NO .byte "NO",0 + .EVEN + +;MESS_CLEAR_SUBS +; .byte "CLEAR SUBTOTALS" +; .BYTE 0 +; .EVEN +; +;MESS_SUBS_CLEAR +; .byte "SUBTOTALS CLEARED" +; .BYTE 0 +; .EVEN + +MESS_TOPAGE2 + .byte "NEXT AUDIT PAGE" + .BYTE 0 + .EVEN + +MESS_BACKP1 + .byte "PREVIOUS AUDIT PAGE" + .BYTE 0 + .EVEN + +MESS_ANY + .byte "ANY BUTTON TO CONTINUE" + .BYTE 0 + .EVEN + +MESS_MM + .byte "RETURN TO MAIN MENU" + .BYTE 0 + .EVEN + +MESSDIAG ;THIS IS TITLE OF PAGE +MESS_DIAG + .byte "DIAGNOSTIC TESTS" + .BYTE 0 + .EVEN +MESS_COIN_AUD + .byte "COIN BOOKKEEPING" + .BYTE 0 + .EVEN +MESS_GAME_AUD + .byte "GAME AUDITS" + .BYTE 0 + .EVEN + +MESS_GAME_ADJ + .byte "GAME ADJUSTMENT" + .BYTE 0 + .EVEN +MESS_UTIL + .byte "UTILITIES" + .BYTE 0 + .EVEN + +MESS_VOL + .byte "VOLUME ADJUST" + .BYTE 0 + .EVEN + +MESS_EXIT + .byte "EXIT TO GAME OVER" + .BYTE 0 + .EVEN + +CH_0 .byte "VIEW COINBOX" + .BYTE 0 + .EVEN +CH_1 .byte "TOTALS AND" + .BYTE 0 + .EVEN +CH_2 .byte "GAMEPLAY COUNTERS" + .BYTE 0 + .EVEN + +AH_1 .byte "VIEW GAME" + .BYTE 0 + .EVEN +AH_2 .byte "PLAY STATISTICS" + .BYTE 0 + .EVEN + +AD_1 .byte "MAKE CHANGES" + .BYTE 0 + .EVEN +AD_2 .byte "TO PRICING AND" + .BYTE 0 + .EVEN +AD_3 .byte "GAME DIFFICULTY" + .BYTE 0 + .EVEN + +MESS_CLCRED +U_CLR_CRED .byte "CLEAR CREDITS" + .BYTE 0 + .EVEN + +MESS_CCCONF .byte "CREDITS CLEARED" + .BYTE 0 + .EVEN + +MESS_CLCOIN +U_CLR_COIN .byte "CLEAR COIN COUNTERS" + .BYTE 0 + .EVEN + +MESS_CLAUD +U_CLR_AUD .byte "CLEAR GAME AUDITS" + .BYTE 0 + .EVEN + +MESS_CLPLRECS +U_CLRRECS + .string "CLEAR PLAYER STATISTICS",0 + +MESS_HSRESET +U_HSRESET .byte "RESET HIGH SCORES" + .BYTE 0 + .EVEN + +MESS_HSRES + .byte "RESET HIGH SCORES" + .BYTE 0 + .EVEN + +MESS_ATV + .byte "ADJUST THE VOLUME",0 + .even +MESS_OTG + .byte "OF THE GAME",0 + .even + +;M_OPMESS_TIT +;U_OPMESS .byte "OPERATOR MESSAGE" +; .BYTE 0 +; .EVEN + +;M_SET_OMESS +;;MESS_OPMESS .byte "SET OPERATOR MESSAGE" +; .BYTE 0 +; .EVEN + +U_BURNIN .byte "BURN-IN TEST",0 + .even + +MESS_BURN .byte "RUN BURN-IN TEST",0 + .even + +MESS_DEF_ADJ TXTLINE "DEFAULT ADJUSTMENTS" +U_FACTORY TXTLINE "FACTORY SETTINGS" +MESS_FACSET TXTLINE "FULL FACTORY RESTORE" + +opmsg_s TXTLINE "OPERATOR MESSAGE" +opmsgh1_s TXTLINE "ENTER AN OPERATOR" +opmsgh2_s TXTLINE "MESSAGE TO" +opmsgh3_s TXTLINE "THE PLAYERS" + + +U_END .byte "END TESTING",0 + .even + +MESS_SWTEST .byte "SWITCH TEST",0 + .even +diptst_mess .byte "DIP SWITCH TEST",0 + .even +MESS_CPUTEST .byte "CPU BOARD TEST",0 + .even +M_STEST .byte "SOUND BOARD TEST",0 + .even + +MESSPAT ;HEADER TITLE +MESS_PATTERNS .byte "MONITOR PATTERNS",0 + .EVEN + +MESS_RED .byte "RED SCREEN",0 + .EVEN +MESS_GREEN .byte "GREEN SCREEN",0 + .EVEN +MESS_BLUE .byte "BLUE SCREEN",0 + .EVEN +MESS_BARS .byte "COLOR BARS",0 + .EVEN +MESS_CROSS .byte "CROSSHATCH PATTERN",0 + .EVEN +MESS_DIAGM .byte "BACK TO DIAGNOSTICS MENU",0 + .EVEN + +* ON FULL RESTORE....THE FOLLOWING IS PRINTED. + ;0 = END OF STRING...1 = MORE MESSAGES! + +MESS_RESET + MESS_MAC RD7FONT,SPACING20,200,80,ROBO_RED,STRCNRM,0 +MESS_FACFAIL + .byte "FAILURE IN CMOS RAM",0,0 + .EVEN + +MESS_FFSCONF +MESS_FAC MESS_MAC RD7FONT,SPACING20,200,96,COLOR_WHITE,STRCNRM,0 +MESS_DEFCONF + .byte "ADJUSTMENTS RESTORED.",0,1 + .EVEN + + MESS_MAC RD7FONT,SPACING20,200,112,COLOR_YELLOW,STRCNRM,0 +MESS_CCNCONF + .byte "COIN COUNTERS CLEARED.",0,1 + .EVEN + + MESS_MAC RD7FONT,SPACING20,200,128,COLOR_BLUE,STRCNRM,0 +MESS_CAUDCONF + .byte "GAME AUDITS CLEARED.",0,1 + .EVEN + + MESS_MAC RD7FONT,SPACING20,200,144,COLOR_RED,STRCNRM,0 +MESS_HSRCONF + .byte "HIGH SCORE TABLE RESET.",0,1 + .EVEN + + MESS_MAC RD7FONT,SPACING20,200,160,COLOR_CYAN,STRCNRM,0 +MESS_CLPLRECSCONF + .string "PLAYER STATISTICS CLEARED.",0,0 + .EVEN + +MESS_CANCELLED + .byte "CANCELLED",0 + .EVEN + +CIN_X EQU (TIT_ULX+TIT_LRX)/2 +CR_X EQU CIN_X-34 +CIN_Y EQU 86 + +CIY1 EQU CIN_Y+14 +CIY2 EQU CIY1+15 +CIY3 EQU CIY2+25 +CIY4 EQU CIY3+25 + +************************************************************************** +* * +* STRINGS FOR UTILITY HELP MENUS * +* * +************************************************************************** +MEH_CLCRED1 .byte "REMOVE ANY",0 + .EVEN +MEH_CLCRED2 .byte "POSTED CREDITS",0 + .EVEN +MEH_CLCRED3 .byte "FROM THE GAME",0 + .EVEN + +MEH_CLCOIN1 .byte "CLEAR OUT PAID",0 + .EVEN +MEH_CLCOIN2 .byte "CREDITS TOTAL",0 + .EVEN +MEH_CLCOIN3 .byte "AND THE COIN",0 + .EVEN +MEH_CLCOIN4 .byte "SLOT COUNTERS",0 + .EVEN + +MEH_CLAUD1 .byte "CLEAR GAMEPLAY",0 + .EVEN +MEH_CLAUD2 .byte "STATISTICS",0 + .EVEN + +MEH_CLPLRECS1 .string "CLEAR PLAYER",0 + .even +MEH_CLPLRECS2 .string "STATISTICS",0 + .even + +MEH_RESHS1 .byte "RESET HIGH SCORE",0 + .EVEN +MEH_RESHS2 .byte "TABLE TO FACTORY",0 + .EVEN +MEH_RESHS3 .byte "DEFAULT VALUES",0 + .EVEN + +MEH_DEFA1 .byte "SET ALL GAME",0 + .EVEN +MEH_DEFA2 .byte "ADJUSTMENTS TO",0 + .EVEN +MEH_DEFA3 .byte "THEIR FACTORY",0 + .EVEN +MEH_DEFA4 .byte "DEFAULT VALUE",0 + .EVEN + + +MEH_FAC1 + .STRING "RESET ALL AUDITS,",0 + .EVEN +MEH_FAC2 + .STRING "COUNTERS, ADJUSTMENTS,",0 + .EVEN +MEH_FAC3 + .STRING "HIGH SCORES AND",0 + .EVEN +MEH_FAC4 + .STRING "THE PLAYER STATISTICS.",0 + .EVEN + + +************************************************************************** +* * +* MAIN MENU NAMES * +* * +************************************************************************** +MESSMAIN + .byte "WRESTLEMANIA TEST MENU",0 + .even + +MESSUTIL + .byte "UTILITY MENU",0 + .even + + + +CSELCT +************************************************************************** +* * +* USA 1: 1 COIN = 1 CREDIT * +* * +* 2 TO START / 2 TO CONTINUE * +* * +************************************************************************** + .WORD 1,0,1,0,4,1,0,0,2,2 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG OCOP ;ONE COIN ONE PLAY + .LONG USA_1 ;TITLE OF COIN MODE + .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_NONE ;NO PRICING LINE ON 2/1 + .LONG USA_QDQ ;QUARTER + +************************************************************************** +* * +* USA 2: 1 COIN = 1 CREDIT * +* * +* 2 TO START / 1 TO CONTINUE * +* * +************************************************************************** + .WORD 1,0,1,0,4,1,0,0,2,1 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG OCOP ;ONE COIN ONE PLAY + .LONG USA_2 ;TITLE OF COIN MODE + .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_NONE ;NO PRICING LINE ON 2/1 + .LONG USA_QDQ ;QUARTER + + +************************************************************************** +* * +* USA 3 COINAGE IS 25 CENT * +* 1 TO START / 1 TO CONTINUE * +* * +************************************************************************** + + .WORD 1,0,1,0,4,1,0,0,1,1 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;ONE COIN ONE PLAY + .LONG USA_3 ;TITLE OF COIN MODE + .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_NONE ;NO PRICING LINE ON 2/1 + .LONG USA_QDQ ;QUARTER + +************************************************************************** +* * +* USA 4 COINAGE IS 50 CENT 3/$1.00 * +* 1 TO START / 1 TO CONTINUE * +* * +************************************************************************** + + .WORD 1,0,1,0,4,2,4,0,1,1 ; WILLY PRICING + .WORD 4 ; 4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ; DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ; COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ; CHARACTER STRINGS. + .LONG CSM_LIST ; PRINT THE 2 THE OP SEES + .LONG USA_4 ; TITLE OF COIN MODE + .LONG DOLLAR_3 ; 1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ; SHOW LINE 2 + .LONG USA_QDQ ; QUARTER + + +************************************************************************** +* * +* ADDITION "FULL PRICE" COINAGES * +* * +************************************************************************** + + .IF FULLPRICE + +************************************************************************** +* * +* USA 5 COINAGE IS 50 CENT 4/$1.00 * +* 2 TO START / 1 TO CONTINUE * +* * +************************************************************************** + + .WORD 3,0,3,0,12,4,12,6,2,1 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 0 ;NO COIN FRACTIONS + .WORD 1,0,1,0,3 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG USA_5 ;TITLE OF COIN MODE + .LONG DOLLAR_4 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;SHOW LINE 2 + .LONG USA_QDQ ;QUARTER + +* +* USA 6 50 PER CREDIT +* + .WORD 1,0,1,0,4,2,0,0,1,1 ; WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;2 COINS PER PLAYER + .LONG USA_6 ;TITLE OF COIN MODE + .LONG F_F_1S1C ;2 COINS PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_1 ;SHOW LINE 1 + .LONG USA_QDQ ;QUARTER +* +* USA 7 COINAGE IS 50 CENT 3/$1.00 +* + .WORD 3,0,3,0,12,2,4,0,1,1 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,3 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG USA_7 ;TITLE OF COIN MODE + .LONG UFS3D ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;SHOW LINE 2 + .LONG USA_QDQ ;QUARTER + +* +* USA 8 COINAGE IS 50 CENT 4/$1.00 +* + .WORD 1,0,1,0,4,4,12,6,2,2 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 0 ;NO COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG USA_8 ;TITLE OF COIN MODE + .LONG UFS4D ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;SHOW LINE 2 + .LONG USA_QDQ ;QUARTER + +* USA 9 COINAGE IS 50 CENT 4/$1.00 +* + .WORD 1,0,1,0,4,4,12,6,3,2 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 0 ;NO COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG USA_8 ;TITLE OF COIN MODE + .LONG UFS4D ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;SHOW LINE 2 + .LONG USA_QDQ ;QUARTER + +* USA 10 COINAGE IS 50 CENT 4/$1.00 +* + .WORD 1,0,1,0,4,4,12,6,3,3 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 0 ;NO COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG USA_8 ;TITLE OF COIN MODE + .LONG UFS4D ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;SHOW LINE 2 + .LONG USA_QDQ ;QUARTER + + .ENDIF +* +* USA ELECTRONIC +* + .WORD 20,0,5,1,0,5,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS + .WORD 20 ; COINS/DOLLAR + .WORD 1 ; DISPLAY FRACTIONS + .WORD 20,0,5,1,0 ; L,C,R,4 + .LONG DOLLAR_LEAD,NULL_ST ; CHARACTER STRINGS. + .LONG USA_ELECTRONIC ; SPECIAL MESSAGE + .LONG USA_ELECTITLE ; TITLE OF COIN MODE + .LONG USA_EL ; SETTINGS DESCRIPTION + .WORD SHOW_2 ; LINES TO SHOW ON + .LONG USA_ESLOT ; QUARTER + +* +* GERMAN 1 COINAGE IS 6 PLAYS FOR 5 DM +* 2 TO START, 2 TO CONTINUE +* + .WORD 6,0,30,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DMS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG GERMAN_1 ;TITLE OF COIN MODE + .LONG DM_6 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG GERMAN_15 ;1 DM / 5 DM + +G1SEL EQU ($-CSELCT)/CS_SIZE ;COIN SELECT VALUE FOR GERMAN 1 +* +* GERMAN 2 COINAGE IS 7 PLAYS FOR 5 DM +* 2 TO START, 1 TO CONTINUE +* + .WORD 6,0,30,0,0,5,30,0,2,1 ;WILLY PRICING + .WORD 1 ;DMS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG GERMAN_2 ;TITLE OF COIN MODE + .LONG DM_7 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG GERMAN_15 ;1 DM / 5 DM +* +* GERMAN 3 COINAGE IS 8 PLAYS FOR 5 DM +* 2 TO START, 1 TO CONTINUE +* + .WORD 7,0,35,0,0,5,35,0,2,1 ;WILLY PRICING + .WORD 1 ;DMS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG GERMAN_3 ;TITLE OF COIN MODE + .LONG DM_8 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG GERMAN_15 ;1 DM / 5 DM +* +* GERMAN 4 COINAGE IS 5 PLAYS FOR 5 DM +* 2 TO START, 1 TO CONTINUE +* + .WORD 1,0,5,0,0,1,0,0,2,1 ;WILLY PRICING + .WORD 1 ;DMS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG GERMAN_4 ;TITLE OF COIN MODE + .LONG DM_5 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG GERMAN_15 ;1 DM / 5 DM + +* +* GERMAN 5 COINAGE IS 6 PLAYS FOR 5 DM +* 2 TO START, 1 TO CONTINUE +* + .WORD 6,0,30,0,0,5,0,0,2,1 ;WILLY PRICING + .WORD 1 ;DMS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG GERMAN_5 ;TITLE OF COIN MODE + .LONG DM_6 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG GERMAN_15 ;1 DM / 5 DM + +* +* GERMAN ELECTRONIC +* 2 TO START, 2 TO CONTINUE +* + .WORD 60,12,24,0,0,10,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS + .WORD 1 ; COINS/DOLLAR + .WORD 0 ; DISPLAY FRACTIONS + .WORD 5,1,2,0,0 ; L,C,R,4 + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG GERMAN_ELECTRONIC ; SPECIAL MESSAGE + .LONG GERMAN_ELECTITLE ; TITLE OF COIN MODE + .LONG DM112265 ; SETTINGS DESCRIPTION + .WORD SHOW_3 ; LINES TO SHOW ON + .LONG GERMAN_ESLOT ; QUARTER + +**************************************************************************** +**************************************************************************** +******* THE FOLLOWING NUMBERS ARE FIGURED FOR THE FRENCH SETTINGS +******* REQUESTED BY DIMITRI K. OF P.S.D. +******* +******* 1F 5F 10F U/C U/B M/U +******* -------------------------------- +******* 1/2F 3/5F 7/10F 3 15 30 5 30 0 +******* 1/3F 2/5F 5/10F 2 10 20 5 20 0 +******* 1/5F 3/10F 1 5 10 5 10 0 +******* 1/5F 3/10F 7/20F 3 15 30 10 60 15 +******* 2/5F 4/10F 9/20F 2 10 20 5 40 10 +******* 2/5F 5/10F 11/20F 1 5 10 2 20 5 +******* +* +* +* FRENCH 1 2/5F 5/10F +* +* + .WORD 2,0,4,0,0,1,4,0,2,2 ; 2/5F 5/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_1 ;TITLE OF COIN MODE + .LONG FIVE_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG FRENCH510 + +F1SEL EQU ($-CSELCT)/CS_SIZE ;COIN SELECT VALUE FOR FRENCH 1 + +* +* FRENCH 2 2/5F 4/10F +* +* + .WORD 2,0,4,0,0,1,0,0,2,1 ; 2/5F 4/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_2 ;TITLE OF COIN MODE + .LONG FOUR_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG FRENCH510 +* +* FRENCH 3 1/5F 3/10F +* +* + .WORD 1,0,2,0,0,1,2,0,2,1 ;1/5F 3/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_3 ;TITLE OF COIN MODE + .LONG THREE_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG FRENCH510 +* +* FRENCH 4 1/5F 2/10F +* +* + .WORD 1,0,2,0,0,1,0,0,2,1 ;1/5F 2/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_4 ;TITLE OF COIN MODE + .LONG TWO_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_1 + .LONG FRENCH510 + + .IF FULLPRICE + +* +* +* FRENCH 5 2/5F 5/10F 11/2 X 10F +* +* + .WORD 5,0,10,0,0,2,20,0,2,1 ;2/5F 5/10F 11/20F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_5 ;TITLE OF COIN MODE + .LONG FIVE_10_11 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT + .LONG FRENCH510 +* +* FRENCH 6 2/5F 4/10F 9/2 X 10F +* +* + .WORD 2,0,4,0,0,1,8,0,2,1 ;2/5F 4/10F 9/20F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_6 ;TITLE OF COIN MODE + .LONG FOUR_10_9 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT + .LONG FRENCH510 +* +* FRENCH 7 1/5F 3/10F 7/2 X 10F +* +* + .WORD 3,0,6,0,0,2,12,0,2,1 ;1/5F 3/10F 7/20F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_7 ;TITLE OF COIN MODE + .LONG THREE_10_7 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT + .LONG FRENCH510 +* +* FRENCH 8 1/5F 2/10F 5/2 X 10F +* +* + .WORD 1,0,2,0,0,1,4,0,2,1 ;1/5F 2/10F 5/20F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_8 ;TITLE OF COIN MODE + .LONG TWO_10_5 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT + .LONG FRENCH510 + +* +* FRENCH 9 1/3 X 1F 2/5F +* +* COIN SLOTS ARE 1F -- 5F +* +* + .WORD 2,0,10,0,0,5,0,0,2,1 ;1/3x1F 2/5F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_9 ;TITLE OF COIN MODE + .LONG F1325 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;USE LINE 2 WHEN ONLY 1 WILL FIT + .LONG FRENCH1F5F +* +* FRENCH 10 1/2 X 1F 3/5F +* +* COIN SLOTS ARE 1F -- 5F +* +* + .WORD 3,0,15,0,0,5,0,0,2,1 ;1/2x1F 3/5F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_10 ;TITLE OF COIN MODE + .LONG F1235 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;USE LINE 2 WHEN ONLY 1 WILL FIT + .LONG FRENCH1F5F +* +* FRENCH 11 1/3 X 1F 2/5F 5/2 X 5F +* +* COIN SLOTS ARE 1F -- 5F +* +* + .WORD 2,0,10,0,0,5,20,0,2,1 ;1/3x1F 2/5F 5/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_11 ;TITLE OF COIN MODE + .LONG F13255 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 2 WHEN ONLY 1 WILL FIT + .LONG FRENCH1F5F + +* +* FRENCH 12 1/2 X 1F 3/5F 7 / 2 X 5F +* +* COIN SLOTS ARE 1F -- 5F +* +* + .WORD 3,0,15,0,0,5,30,0,2,1 ;1/2x1F 3/5F 7/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_12 ;TITLE OF COIN MODE + .LONG F12355 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 2 WHEN ONLY 1 WILL FIT + .LONG FRENCH1F5F + + .ENDIF + +* +* FRANCE ELECTRONIC +* + .WORD 1,15,6,0,0,3,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS + .WORD 1 ; COINS/DOLLAR + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,10,5,0,0 ; L,C,R,4 + .LONG NULL_ST,FRANC_TRAIL ; CHARACTER STRINGS. + .LONG FRANCE_ELECTRONIC ; SPECIAL MESSAGE + .LONG FRENCH_ELECTITLE ; TITLE OF COIN MODE + .LONG F13255 ;COIN PAGE DESCRIPTION + .WORD SHOW_3 ;THREE LINES FOR THIS BABY + .LONG FRANCE_ESLOT ; QUARTER + +* +* CANADA COINAGE IS 50 CENT 3/$1.00 +* + .WORD 1,0,4,0,4,2,4,0,2,2 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,4,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG CANADA ;TITLE OF COIN MODE + .LONG CAN_1503D ;1 PLAY 50, 3 FOR A DOLLAR + .WORD SHOW_2 ;SHOW LINE 2 + .LONG CAN_QD ;QUARTER + + .IF FULLPRICE + +* SWISS 1 COINAGE IS 6 PLAYS FOR 5 FRANC + + .WORD 6,0,30,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 1 ;FRANCS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SWISS_1 ;TITLE OF COIN MODE + .LONG SFRANC_6 ;1 COIN PER CREDIT (SERIES + .WORD SHOW_2 + .LONG SWISS15 + +* SWISS 2 COINAGE IS 7 PLAYS FOR 5 FRANC + + .WORD 6,0,30,0,0,5,30,0,2,2 ;WILLY PRICING + .WORD 1 ;FRANCS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SWISS_2 ;TITLE OF COIN MODE + .LONG SFRANC_7 ;1 COIN PER CREDIT (SERIES + .WORD SHOW_2 + .LONG SWISS15 + +* SWISS 3 COINAGE IS 8 PLAYS FOR 5 FRANC + + .WORD 7,0,35,0,0,5,35,0,2,2 ;WILLY PRICING + .WORD 1 ;FRANCS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SWISS_3 ;TITLE OF COIN MODE + .LONG SFRANC_8 ;1 COIN PER CREDIT (SERIES + .WORD SHOW_2 + .LONG SWISS15 + +* ITALY COINAGE IS 1 PLAYS FOR 500 LIRE + + .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;LIRE HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 500,0,500,0,0 ;COIN VALUE + .LONG NULL_ST,LIRE_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG ITALY_1 ;TITLE OF COIN MODE + .LONG P1500L ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG ITALYLIRE + +* U.K. 1 COINAGE IS 1 PLAY FOR 20P 3 FOR 50P + + .WORD 6,0,15,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 10 ;PENCE ARE FRACTIONS! + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 2,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,POUND_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG UK_1 ;TITLE OF COIN MODE + .LONG UK_120 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG UK2050 + +* U.K. 2 COINAGE IS 2 PLAY FOR 20P 5 FOR 50P + + .WORD 2,0,5,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 10 ;PENCE ARE FRACTIONS! + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 2,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,POUND_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG UK_2 ;TITLE OF COIN MODE + .LONG UK_220 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG UK2050 + +* U.K. ELECTRONIC 1 + +* CENTER = 20P XTRA = 10P LEFT = 1P RIGHT = 50P +* 1 PLAY / 30 P +* 2 PLAY / 50 P +* 4 PLAY / 1 POUND + +* L, C, R, 4,DBV,U/C,U/B,MINUNITS + .WORD 28, 4, 12, 2, 0, 4, 0,0,2,2 ;NUMBERS FOR 1L/20p/50p/10p + .WORD 10 ;PENCE SUCK! + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 10,2,5,1,0 ;COIN VALUE + .LONG NULL_ST,POUND_TRAIL ;CHARACTER STRINGS. + .LONG UK_ELECTRONIC ;SPECIAL TITLE W/ POUND + .LONG UK_3 ;TITLE OF COIN MODE + .LONG UK_420 ;.5/10p 1/20p 3/50p 7/1L + .WORD SHOW_2 + .LONG UK_ELEC + +* U.K. ELECTRONIC 2 (CCU) + +* CREDITS ARE AWARDED 1 COIN / 1 PLAY..... + +* CCU ACCUMULATES 4 COINS AND STROKES US AS FOLLOWS: + +* 1 PLAY / 30 P +* 2 PLAY / 50 P +* 4 PLAY / 1 POUND + + .WORD 1,0,0,0,0,1,0,0,2,2 ;NUMBERS FOR + .WORD 1 ;PENCE ARE FRACTIONS! + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 1,0,0,0,0 ;COIN VALUE + .LONG NULL_ST,COINS_TRAIL ;CHARACTER STRINGS. + .LONG UK_ELECTRONIC ;SPECIAL TITLE W/ POUND + .LONG UK_4 ;TITLE OF COIN MODE + .LONG UK_320 ;1/30P 2/50P 4/1L + .WORD SHOW_2 + .LONG UK_CCU + +* DONE BECAUSE WE LEARNED SOME NEW SPANISH SHIT! + +* SPAIN 1 1 play / 100 Peseta 6 play / 500 Peseta + + .WORD 1,0,5,0,0,1,5,0,2,2 ;WILLY PRICING + .WORD 1 ;no fractions + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 100,0,500,0,0 ;COIN VALUE + .LONG NULL_ST,PESETA_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SP_1 ;TITLE OF COIN MODE + .LONG SP_5100 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG PESETA100 + + +* SPAIN 2 1 play / 25 Peseta 5 play / 100 Peseta + + .WORD 1,0,5,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;no fractions + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 100,0,500,0,0 ;COIN VALUE + .LONG NULL_ST,PESETA_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SP_2 ;TITLE OF COIN MODE + .LONG SP_4100 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG PESETA100 + + +* AUSTRALIA 1 1 play / 3 X 20 CENTS 2 FOR $1.00 + + .WORD 2,0,10,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 5 ;DOLLARS + .WORD 0 ;DON'T SHOW FRACTIONS FOR T + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG AUS_1 ;TITLE OF COIN MODE + .LONG AU_60 ;1 COIN PER CREDIT (SERIES OF S + .WORD SHOW_2 + .LONG AUST20C +* +* AUSTRALIA 2 1 play / $1.00 2 plays for $2.00 +* + .WORD 1,0,5,0,0,5,0,0,1,1 ; WILLY PRICING + .WORD 5 ; DOLLARS + .WORD 1 ; SHOW FRACTIONS FOR THE 3 C + .WORD 1,0,5,0,0 ; COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ; CHARACTER STRINGS. + .LONG CSM_LIST + .LONG AUS_2 ; TITLE OF COIN MODE + .LONG AU_100 ; 1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG AUST20C + + .ENDIF + +* JAPAN 1 1 play / 100 yen + + .WORD 1,1,1,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 100,100,100,0,0 ;COIN VALUE + .LONG NULL_ST,YEN_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG JAP_1 ;TITLE OF COIN MODE + .LONG JAP_100 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG YEN100 + + .IF FULLPRICE +* JAPAN 2 2 play / 100 yen + + .WORD 2,2,2,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 100,100,100,0,0 ;COIN VALUE + .LONG NULL_ST,YEN_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG JAP_2 ;TITLE OF COIN MODE + .LONG JAP_200 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG YEN100 + +* AUSTRIA 1 1 Play / 5 Schilling 2 Play / 10 Schilling + + .WORD 1,0,2,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,SHILL_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG ASTA_1 ;TITLE OF COIN MODE + .LONG ASTA_15 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG SHILL510 + +* AUSTRIA 2 1 Play / 2 X 5 Schilling 3 Play / 10 Schilling + + .WORD 1,0,2,0,0,2,4,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,SHILL_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG ASTA_2 ;TITLE OF COIN MODE + .LONG ASTA_10 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG SHILL510 + +* BELGIUM 1 1 play / 20F + + .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 20,0,20,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG BEL_1 ;TITLE OF COIN MODE + .LONG BEL_120 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG FRANC20 + +* BELGIUM 2 3 play / 20F + + .WORD 3,0,3,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 20,0,20,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG BEL_2 ;TITLE OF COIN MODE + .LONG BEL_320 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG FRANC20 + +* BELGIUM 3 2 play / 20F + + .WORD 2,0,2,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 20,0,20,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG BEL_3 ;TITLE OF COIN MODE + .LONG BEL_220 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG FRANC20 + +* +* BELGIUM ELECTRONIC +* + .WORD 10,1,4,0,0,4,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS + .WORD 1 ; COINS/DOLLAR + .WORD 1 ; DISPLAY FRACTIONS + .WORD 50,5,20,0,0 ; L,C,R,4 + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG BELGIUM_ELECTRONIC ; SPECIAL MESSAGE + .LONG BELGIUM_ELECTITLE ; TITLE OF COIN MODE + .LONG BEL_ELEC ; SETTINGS DESCRIPTION + .WORD SHOW_2 ; LINES TO SHOW ON + .LONG BELGIUM_ESLOT ; QUARTER + +* SWEDEN 1 play / 3 X 1 KRONA 2 PLAY 5 KRONA + + .WORD 2,0,10,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,KRONA_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SWED_1 ;TITLE OF COIN MODE + .LONG SWED_2X5 ;1 COIN PER CREDIT (SERIES + .WORD SHOW_1 + .LONG KRONA5 + +* NEW ZEALAND 1 1 play / 3 X 20 CENT + + .WORD 1,0,1,0,0,3,0,0,1,1 ;WILLY PRICING + .WORD 5 ;FIVE PER + .WORD 1 ;SHOW FRACTIONS + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG NZ_1 ;TITLE OF COIN MODE + .LONG NZ_13 ;1 COIN PER CREDIT (SERIES OF S + .WORD SHOW_1 + .LONG NZ20 + + +* NEW ZEALAND 2 1 play / 2 X 20 CENT + + .WORD 1,0,1,0,0,2,0,0,1,1 ;WILLY PRICING + .WORD 5 ;FIVE PER + .WORD 1 ;SHOW FRACTIONS + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG NZ_2 ;TITLE OF COIN MODE + .LONG NZ_12 ;1 COIN PER CREDIT (SERIES OF S + .WORD SHOW_1 + .LONG NZ20 + +* NETHERLANDS 1 PLAY / 1 HFL. 3 PLAY / 2.5 HFL. + + .WORD 1,0,3,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;FIVE PER + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,2,0,0 ;COIN VALUE + .LONG NULL_ST,HFL_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG NETH ;TITLE OF COIN MODE + .LONG NETH_HF ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG HFSLOT + + +* FINLAND 1 PLAY / 1 MARKKA + + .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;FIVE PER + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG NULL_ST,MARKKA_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG FINLAND ;TITLE OF COIN MODE + .LONG FINMKA ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG MKSLOT + +* NORWAY 1 PLAY / 2 X 1 KRONE 3/ 5 X 1 KRONE + + .WORD 3,0,3,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 1 ;FIVE PER + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG NULL_ST,KRONE_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG NORWAY ;TITLE OF COIN MODE + .LONG KR_LIST ;1 COIN PER CREDIT (SERIES OF STRI + .WORD SHOW_2 + .LONG NKRSLOT + +* DENMARK 1 PLAY / 2 X 1 KRONE 3/ 5 KRONE 7 / 10 KRONE + + .WORD 3,0,15,0,0,5,30,0,2,2 ;WILLY PRICING + .WORD 1 ;FIVE PER + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,KRONE_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG DENMARK ;TITLE OF COIN MODE + .LONG DKR_LIST ;1 COIN PER CREDIT (SERIES + .WORD SHOW_3 + .LONG DKRSLOT + + +* ANTILLES 1 PLAY / 25 CENTS 4 PLAYS / 1 GUILDER + + .WORD 1,0,4,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 4 ;FIVE PER + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,4,0,0 ;COIN VALUE + .LONG NULL_ST,GUILDER_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG ANTILLES ;TITLE OF COIN MODE + .LONG ANT_LIST ;1 COIN PER CREDIT (SERIES + .WORD SHOW_1 + .LONG ANTSLOT + +* HUNGARY 1 CREDIT / 2x10 FORINT 3 CREDITS / 2x20 FORINT + + .WORD 1,0,2,0,0,2,4,0,2,2 ;WILLY PRICING + .WORD 1 ;1 TO 1 + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 10,0,20,0,0 ;COIN VALUE + .LONG NULL_ST,FORINT_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG HUNGARY ;TITLE OF COIN MODE + .LONG HUNG_LIST ;1 COIN PER CREDIT (SERIES + .WORD SHOW_1 + .LONG HUNGSLOT + + .ENDIF + +CS_ENTS EQU ($-CSELCT)/CS_SIZE ;NUMBER OF ENTRIES IN TABLE + + +; +; DIP SWITCH TABLES +; + +USABASE EQU 1 +GERBASE EQU G1SEL +FRABASE EQU F1SEL + + .IF FULLPRICE + +USADIP .WORD USABASE+0, USABASE+1, USABASE+2, USABASE+3, USABASE+8 + .WORD USABASE+8, USABASE+8 + +GERDIP .WORD GERBASE+0, GERBASE+1, GERBASE+2, GERBASE+3, GERBASE+4 + .WORD GERBASE+4, GERBASE+4 + +FRADIP .WORD FRABASE+0, FRABASE+1, FRABASE+2, FRABASE+3, FRABASE+12 + .WORD FRABASE+12, FRABASE+12 + + .ELSE + +USADIP .WORD USABASE+0, USABASE+1, USABASE+2, USABASE+3, USABASE+4 + .WORD USABASE+4, USABASE+4 + +GERDIP .WORD GERBASE+0, GERBASE+1, GERBASE+2, GERBASE+3, GERBASE+4 + .WORD GERBASE+4, GERBASE+4 + +FRADIP .WORD FRABASE+0, FRABASE+1, FRABASE+2, FRABASE+3, FRABASE+4 + .WORD FRABASE+4, FRABASE+4 + + .ENDIF + + +DIPCOINTAB .LONG USADIP, GERDIP, FRADIP, USADIP + + +************************************************************************** +* * +* COLLECTION MESSAGES * +* * +************************************************************************** +ME_ZERO .STRING "0" + .BYTE 0 + .EVEN + +ME_DASH .string "-",0 + .even + +ME_DECIMAL .STRING "." + .BYTE 0 + .EVEN + +ME_COLON .STRING ":" + .BYTE 0 + .EVEN + +DOLLAR_LEAD .STRING "$ " + .BYTE 0 + .EVEN + +POUND_LEAD + .STRING FONT_EPOUND," ",0 + .EVEN +POUND_TRAIL + .STRING " PND",0 + .EVEN + +NULL_ST + .BYTE 0 + .EVEN + +DM_TRAIL .STRING " DM" + .BYTE 0 + .EVEN + +FRANC_TRAIL .STRING " FRANC" + .BYTE 0 + .EVEN + + .IF FULLPRICE +LIRE_TRAIL .STRING " LIRE" + .BYTE 0 + .EVEN + +PESETA_TRAIL .STRING " PESETA" + .BYTE 0 + .EVEN + .ENDIF + +YEN_TRAIL + .STRING " YEN" + .BYTE 0 + .EVEN + + .IF FULLPRICE +SHILL_TRAIL + .STRING " SCHILLINGS" + .BYTE 0 + .EVEN + +KRONA_TRAIL + .STRING " KRONA" + .BYTE 0 + .EVEN + .ENDIF + +COINS_TRAIL + .STRING " COINS" + .BYTE 0 + .EVEN + + .IF FULLPRICE +HFL_TRAIL + .STRING " HFI." + .BYTE 0 + .EVEN + +MARKKA_TRAIL + .STRING " MARKKA" + .BYTE 0 + .EVEN + +KRONE_TRAIL + .STRING " KRONE" + .BYTE 0 + .EVEN + +GUILDER_TRAIL + .STRING " GUILDER" + .BYTE 0 + .EVEN + +FORINT_TRAIL + .STRING " FT",0 + .ENDIF + +* +* FOR THE COINAGE ADJUSTMENT MODE: +* +* +* THIS SET IS TITLES FOR THE CANNED MODES. +* +USA_1 .STRING "USA 1",0 + .EVEN +USA_2 .STRING "USA 2",0 + .EVEN +USA_3 .STRING "USA 3",0 + .EVEN +USA_4 .STRING "USA 4",0 + .EVEN + + .IF FULLPRICE +USA_5 .STRING "USA 5",0 + .EVEN +USA_6 .STRING "USA 6",0 + .EVEN +USA_7 .STRING "USA 7",0 + .EVEN +USA_8 .STRING "USA 8",0 + .EVEN + .ENDIF + +USA_ELECTITLE + .STRING "USA ECA",0 + .EVEN + +FRENCH_ELECTITLE + .STRING "FRANCE ECA",0 + .EVEN + +GERMAN_ELECTITLE + .STRING "GERMAN ECA",0 + .EVEN + + +GERMAN_1 .STRING "GERMAN 1",0 + .EVEN +GERMAN_2 .STRING "GERMAN 2",0 + .EVEN +GERMAN_3 .STRING "GERMAN 3",0 + .EVEN +GERMAN_4 .STRING "GERMAN 4",0 + .EVEN +GERMAN_5 .STRING "GERMAN 5",0 + .EVEN + +FRENCH_1 .STRING "FRANCE 1",0 + .EVEN +FRENCH_2 .STRING "FRANCE 2",0 + .EVEN +FRENCH_3 .STRING "FRANCE 3",0 + .EVEN +FRENCH_4 .STRING "FRANCE 4",0 + .EVEN + + .IF FULLPRICE +FRENCH_5 .STRING "FRANCE 5",0 + .EVEN +FRENCH_6 .STRING "FRANCE 6",0 + .EVEN +FRENCH_7 .STRING "FRANCE 7",0 + .EVEN +FRENCH_8 .STRING "FRANCE 8",0 + .EVEN +FRENCH_9 .STRING "FRANCE 9",0 + .EVEN +FRENCH_10 .STRING "FRANCE 10",0 + .EVEN +FRENCH_11 .STRING "FRANCE 11",0 + .EVEN +FRENCH_12 .STRING "FRANCE 12",0 + .EVEN + +CANADA + .STRING "CANADA",0 + .EVEN + +SWISS_1 .STRING "SWISS 1" + .BYTE 0 + .EVEN +SWISS_2 .STRING "SWISS 2" + .BYTE 0 + .EVEN +SWISS_3 .STRING "SWISS 3" + .BYTE 0 + .EVEN +ITALY_1 .STRING "ITALY" + .BYTE 0 + .EVEN +UK_1 .STRING "U.K. 1" + .BYTE 0 + .EVEN +UK_2 .STRING "U.K. 2" + .BYTE 0 + .EVEN +UK_3 .STRING "U.K. ECA" + .BYTE 0 + .EVEN +UK_4 .STRING "U.K. ELEC W/CCU" + .BYTE 0 + .EVEN +SP_1 .STRING "SPAIN 1" + .BYTE 0 + .EVEN +SP_2 .STRING "SPAIN 2" + .BYTE 0 + .EVEN +AUS_1 .STRING "AUSTRALIA 1" + .BYTE 0 + .EVEN +AUS_2 .STRING "AUSTRALIA 2" + .BYTE 0 + .EVEN + .ENDIF + +JAP_1 .STRING "JAPAN 1" + .BYTE 0 + .EVEN + + .IF FULLPRICE +JAP_2 .STRING "JAPAN 2" + .BYTE 0 + .EVEN +ASTA_1 .STRING "AUSTRIA 1" + .BYTE 0 + .EVEN +ASTA_2 .STRING "AUSTRIA 2" + .BYTE 0 + .EVEN +BEL_1 .STRING "BELGIUM 1" + .BYTE 0 + .EVEN +BEL_2 .STRING "BELGIUM 2" + .BYTE 0 + .EVEN +BEL_3 .STRING "BELGIUM 3" + .BYTE 0 + .EVEN +BELGIUM_ELECTITLE + .STRING "BELGIUM ECA",0 + .EVEN +SWED_1 .STRING "SWEDEN" + .BYTE 0 + .EVEN +NZ_1 .STRING "NEW ZEALAND 1" + .BYTE 0 + .EVEN +NZ_2 .STRING "NEW ZEALAND 2" + .BYTE 0 + .EVEN +NETH .STRING "NETHERLANDS" + .BYTE 0 + .EVEN + +FINLAND .STRING "FINLAND" + .BYTE 0 + .EVEN + +NORWAY .STRING "NORWAY" + .BYTE 0 + .EVEN + +DENMARK .STRING "DENMARK" + .BYTE 0 + .EVEN + +ANTILLES .STRING "ANTILLES" + .BYTE 0 + .EVEN + +HUNGARY + .STRING "HUNGARY",0 + .EVEN + + .ENDIF +* +* THIS SECTION IS A POINTER TO STRING LISTS +* FOR THE "CURRENT SETTING" BOX. +* +USA_EL + .LONG EC1 + .LONG DOLL4 + .LONG 0 +* +* 1 COIN / 1 CREDIT +Q_Q + .LONG C11 ;THIS POINTS AT MESSAGE + .LONG 0 ;THIS ENDS LIST +* +* 2 COINS / 1 CREDIT +* +F_F_1S1C + .LONG C21 + .LONG 0 + +************************************************************************* + + +* +* 2 COINS / 1 CREDIT +* 4 COINS / 3 CREDITS +* +DOLLAR_3 .LONG C21 + .LONG C43 + .LONG 0 +* +* 2 COINS / 1 CREDIT +* 4 COINS / 4 CREDITS +* +DOLLAR_4 .LONG C21 + .LONG C44 + .LONG 0 + + +******************************************************************** + + + .IF FULLPRICE + +U1Q4D .LONG C11 ;THIS POINTS AT MESSAGE + .LONG DOLL4 ;4 FOR A DOLLAR + .LONG 0 + +;UFS2D .LONG C21 ; THIS POINTS AT MESSAGE +; .LONG DOLL2 ; 2 FOR A DOLLAR +; .LONG 0 + +UFS3D .LONG C21 ;THIS POINTS AT MESSAGE + .LONG DOLL3 ;3 FOR A DOLLAR + .LONG 0 + +UFS4D .LONG C21 ;THIS POINTS AT MESSAGE + .LONG DOLL4 ;4 FOR A DOLLAR + .LONG 0 + + .ENDIF + +* +* 1 PLAY 1/DM +* 5 PLAY 5/DM +* +DM_5 .LONG DM11 + .LONG DM55 + .LONG 0 + +DM_6 .LONG DM11 + .LONG DM65 + .LONG 0 + +DM_7 .LONG DM11 + .LONG DM75 + .LONG 0 + +DM_8 .LONG DM11 + .LONG DM85 + .LONG 0 + +DM112265 + .LONG DM11 + .LONG DM22 + .LONG DM65 + .LONG 0 + +SFRANC_6 .LONG SFRANC11 + .LONG SFRANC65 + .LONG 0 + +CAN_1503D + .LONG C15 ;THIS POINTS AT MESSAGE + .LONG DOLL3 ;3 FOR A DOLLAR + .LONG 0 + +SFRANC_7 .LONG SFRANC11 + .LONG SFRANC75 + .LONG 0 + +SFRANC_8 .LONG SFRANC11 + .LONG SFRANC85 + .LONG 0 +* +* 2 PLAYS 5F / 5 PLAYS 10F +* +FIVE_10 .LONG F25 + .LONG F510 + .LONG 0 + +FIVE_10_11 + .LONG F25 + .LONG F510 + .LONG F1120 + .LONG 0 + +FOUR_10 .LONG F25 + .LONG F410 + .LONG 0 + +FOUR_10_9 + .LONG F25 + .LONG F410 + .LONG F4109 + .LONG 0 + +THREE_10 .LONG F15 + .LONG F310 + .LONG 0 + +THREE_10_7 + .LONG F15 + .LONG F310 + .LONG F4107 + .LONG 0 + +TWO_10 .LONG F15 + .LONG F210 + .LONG 0 + +TWO_10_5 .LONG F15 + .LONG F210 + .LONG F4105 + .LONG 0 + +F1325 .LONG F3X1F + .LONG F2F5 + .LONG 0 + +F13255 .LONG F3X1F + .LONG F2F5 + .LONG F52X5 + .LONG 0 + +F1235 .LONG F2X1F + .LONG F3F5 + .LONG 0 + +F12355 .LONG F2X1F + .LONG F3F5 + .LONG F72X5 + .LONG 0 + + .IF FULLPRICE + +* 500 LIRE + +P1500L .LONG P1500L_P + .LONG 0 + +* 1 PLAY / 20 P 3 PLAYS 50 P + +UK_120 .LONG UK_1201 + .LONG UK_1202 + .LONG 0 + +UK_220 .LONG UK_2201 + .LONG UK_2202 + .LONG 0 + +UK_320 .LONG UK_3201 + .LONG UK_3202 + .LONG UK_3203 + .LONG 0 + +UK_420 .LONG UK_4201 + .LONG UK_4202 + .LONG UK_4203 + .LONG 0 + +SP_4100 .LONG SP_11 + .LONG SP_44 + .LONG 0 + +SP_5100 .LONG SP_11 + .LONG SP_54 + .LONG 0 + +AU_60 .LONG AU_36 + .LONG AU_2D + .LONG 0 + +AU_100 .LONG AU_520 + .LONG AU_1D + .LONG 0 + + .ENDIF + +JAP_100 .LONG JAP_101 + .LONG 0 + + .IF FULLPRICE + +JAP_200 .LONG JAP_201 + .LONG 0 + +ASTA_10 .LONG ASTA101 + .LONG ASTA102 + .LONG 0 + +ASTA_15 .LONG ASTA151 + .LONG ASTA152 + .LONG 0 + +BEL_120 .LONG BEL_1201 + .LONG 0 +BEL_220 .LONG BEL_2201 + .LONG 0 +BEL_320 .LONG BEL_3201 + .LONG 0 +BEL_ELEC + .LONG BEL_1201 + .LONG 0 + +SWED_2X5 .LONG SWED_S51 + .LONG SWED_S52 + .LONG 0 + +NZ_12 .LONG NZ_121 + .LONG 0 + +NZ_13 .LONG NZ_131 + .LONG 0 + +NETH_HF .LONG HF_11 + .LONG HF_32 + .LONG 0 + +FINMKA .LONG FIN_1 + .LONG 0 + +KR_LIST .LONG NOR_12 + .LONG NOR_35 + .LONG 0 + +DKR_LIST .LONG DEN_12 + .LONG DEN_35 + .LONG DEN_710 + .LONG 0 + +ANT_LIST .LONG ANT1P25 + .LONG ANT4DOL + .LONG 0 + +HUNG_LIST + .LONG HUNG2X10 + .LONG HUNG2X20 + .LONG 0 + + .ENDIF + +EC1 .STRING "1 CREDIT / 25 CENTS",0 + .EVEN +C11 .STRING "1 CREDIT / 1 COIN" + .BYTE 0 + .EVEN +C21 .STRING "1 CREDIT / 2 COINS" + .BYTE 0 + .EVEN +C43 .STRING "3 CREDIT / 4 COINS" + .BYTE 0 + .EVEN +C44 .STRING "4 CREDITS / 4 COINS" + .BYTE 0 + .EVEN +C15 + .STRING "1 CREDIT / 2 X 25 CENTS",0 + .EVEN + +DOLL2 .STRING "2 CREDITS / $1.00" + .BYTE 0 + .EVEN + +DOLL3 .STRING "3 CREDITS / $1.00" + .BYTE 0 + .EVEN + +DOLL4 .STRING "4 CREDITS / $1.00" + .BYTE 0 + .EVEN + +DM11 .STRING "1 CREDIT / 1 DM",0 + .EVEN +DM22 .STRING "2 CREDITS / 2 DM",0 + .EVEN +DM55 .STRING "5 CREDITS / 5 DM",0 + .EVEN +DM65 .STRING "6 CREDITS / 5 DM",0 + .EVEN +DM75 .STRING "7 CREDITS / 5 DM",0 + .EVEN +DM85 .STRING "8 CREDITS / 5 DM",0 + .EVEN + +F3F5 .STRING "3 CREDITS / 5F" + .BYTE 0 + .EVEN +F2F5 +F25 .STRING "2 CREDITS / 5F" + .BYTE 0 + .EVEN +F15 .STRING "1 CREDIT / 5F" + .BYTE 0 + .EVEN +F510 .STRING "5 CREDITS / 10F" + .BYTE 0 + .EVEN +F1120 .STRING "11 CREDITS / 2 X 10F" + .BYTE 0 + .EVEN +F4109 .STRING "9 CREDITS / 2 X 10F" + .BYTE 0 + .EVEN +F4107 .STRING "7 CREDITS / 2 X 10F" + .BYTE 0 + .EVEN +F4105 .STRING "5 CREDITS / 2 X 10F" + .BYTE 0 + .EVEN +F410 .STRING "4 CREDITS / 10F" + .BYTE 0 + .EVEN +F310 .STRING "3 CREDITS / 10F" + .BYTE 0 + .EVEN +F210 .STRING "2 CREDITS / 10F" + .BYTE 0 + .EVEN + +F3X1F .STRING "1 CREDIT / 3 X 1F" + .BYTE 0 + .EVEN + +F2X1F .STRING "1 CREDIT / 2 X 1F" + .BYTE 0 + .EVEN + +F52X5 .STRING "5 CREDITS / 2 X 5F" + .BYTE 0 + .EVEN + +F72X5 .STRING "7 CREDITS / 2 X 5F" + .BYTE 0 + .EVEN + +SFRANC11 .STRING "1 CREDIT / 1F" + .BYTE 0 + .EVEN +SFRANC65 .STRING "6 CREDITS / 5F" + .BYTE 0 + .EVEN +SFRANC75 .STRING "7 CREDITS / 5F" + .BYTE 0 + .EVEN +SFRANC85 .STRING "8 CREDITS / 5F" + .BYTE 0 + .EVEN + + .IF FULLPRICE +P1500L_P .STRING "1 CREDIT / 500 LIRE" + .BYTE 0 + .EVEN + +UK_1201 .STRING "1 CREDIT / 20 P" + .BYTE 0 + .EVEN +UK_1202 .STRING "3 CREDITS / 50 P" + .BYTE 0 + .EVEN + +UK_2201 .STRING "2 CREDITS / 20 P" + .BYTE 0 + .EVEN +UK_2202 .STRING "5 CREDITS / 50 P" + .BYTE 0 + .EVEN + +UK_3201 .STRING "1 CREDIT / 30 P" + .BYTE 0 + .EVEN +UK_3202 .STRING "2 CREDITS / 50 P" + .BYTE 0 + .EVEN +UK_3203 .STRING "4 CREDITS / L1.00" + .BYTE 0 + .EVEN + +UK_4201 .STRING "1 CREDIT / 20 P" + .BYTE 0 + .EVEN +UK_4202 .STRING "3 CREDITS / 50 P" + .BYTE 0 + .EVEN +UK_4203 .STRING "7 CREDITS / L1.00" + .BYTE 0 + .EVEN + +SP_11 .STRING "1 CREDIT / 100 PESETA" + .BYTE 0 + .EVEN + +SP_44 .STRING "5 CREDITS / 500 PESETA" + .BYTE 0 + .EVEN + +SP_54 .STRING "6 CREDITS / 500 PESETA" + .BYTE 0 + .EVEN +NZ_131 +AU_36 .STRING "1 CREDIT / 3 X 20 CENTS" + .BYTE 0 + .EVEN +AU_2D .STRING "2 CREDITS / $ 1.00" + .BYTE 0 + .EVEN +AU_520 .STRING "1 CREDIT / 5 X 20 CENTS" + .BYTE 0 + .EVEN +AU_1D .STRING "1 CREDIT / $ 1.00" + .BYTE 0 + .EVEN + .ENDIF + +JAP_101 .STRING "1 CREDIT / 100 YEN" + .BYTE 0 + .EVEN + + .IF FULLPRICE + +JAP_201 .STRING "2 CREDITS / 100 YEN" + .BYTE 0 + .EVEN +ASTA101 .STRING "1 CREDIT / 2 X 5 SCHILLING" + .BYTE 0 + .EVEN +ASTA102 .STRING "3 CREDITS / 2 X 10 SCHILLING" + .BYTE 0 + .EVEN +ASTA151 .STRING "1 CREDIT / 5 SCHILLING" + .BYTE 0 + .EVEN +ASTA152 .STRING "2 CREDITS / 10 SCHILLING" + .BYTE 0 + .EVEN + +BEL_1201 .STRING "1 CREDIT / 2OF" + .BYTE 0 + .EVEN +BEL_2201 .STRING "2 CREDITS / 2OF" + .BYTE 0 + .EVEN +BEL_3201 .STRING "3 CREDITS / 2OF" + .BYTE 0 + .EVEN + +SWED_S51 .STRING "1 CREDIT / 3 X 1 KRONA" + .BYTE 0 + .EVEN +SWED_S52 .STRING "2 CREDITS / 5 KRONA" + .BYTE 0 + .EVEN + +NZ_121 .STRING "1 CREDIT / 2 X 20 CENTS" + .BYTE 0 + .EVEN + +HF_11 .STRING "1 CREDIT / 1 HFI" + .BYTE 0 + .EVEN + +HF_32 .STRING "3 CREDITS / 2.5 HFI" + .BYTE 0 + .EVEN + +FIN_1 .STRING "1 CREDIT / 1 MARKKA" + .BYTE 0 + .EVEN + +DEN_12 +NOR_12 .STRING "1 CREDIT / 2 X 1 KRONE" + .BYTE 0 + .EVEN + +NOR_35 .STRING "3 CREDITS / 5 X 1 KRONE" + .BYTE 0 + .EVEN + +DEN_35 .STRING "3 CREDITS / 5 KRONE" + .BYTE 0 + .EVEN + +DEN_710 .STRING "7 CREDITS / 2 X 5 KRONE" + .BYTE 0 + .EVEN + +ANT1P25 .STRING "1 CREDIT / 25 CENTS" + .BYTE 0 + .EVEN + +ANT4DOL .STRING "4 CREDITS / 1 GUILDER" + .BYTE 0 + .EVEN + +HUNG2X10 + .STRING "1 CREDIT / 2 X 10 FORINT",0 + .EVEN + +HUNG2X20 + .STRING "3 CREDITS / 2 X 20 FORINT",0 + .EVEN + + .ENDIF + +************************************************************************** +* * +* COIN SLOT TITLES * +* * +************************************************************************** + +USA_ESLOT + .STRING "1 DOLLAR 10/25/5 CENT",0 + .EVEN + +FRANCE_ESLOT + .STRING "1/10/5 FRANCS",0 + .EVEN + +GERMAN_ESLOT + .STRING "5/1/2 DM",0 + .EVEN + +BELGIUM_ESLOT + .STRING "50/5/20 FR",0 + .EVEN + +USA_QQ .STRING "25 CENT 25 CENT" + .BYTE 0 + .EVEN + + .IF FULLPRICE +USA_QDQ + .STRING "25 CENT $1.00 25 CENT",0 + .EVEN + .ENDIF + +GERMAN_15 .STRING "1 DM 5 DM" + .BYTE 0 + .EVEN +FRENCH510 .STRING "5 F 10 F" + .BYTE 0 + .EVEN +FRENCH1F5F + .STRING "1 F 5 F",0 + .EVEN + +CAN_QD + .STRING "25 CENT $ 1.00",0 + .EVEN + + .IF FULLPRICE +SWISS15 .STRING "1 F 5 F" + .BYTE 0 + .EVEN +ITALYLIRE .STRING "500 LIRE 500 LIRE" + .BYTE 0 + .EVEN +UK2050 .STRING "20 P 50 P" + .BYTE 0 + .EVEN +UK_ELEC .STRING "L1.00 20P 50P 10P" + .BYTE 0 + .EVEN +UK_CCU .STRING "CCU ON LEFT SLOT " + .BYTE 0 + .EVEN +PESETA100 + .STRING "100 PESETA 500 PESETA",0 + .EVEN +AUST20C + .STRING "20 CENT $ 1.00",0 + .EVEN + + .ENDIF + +YEN100 .STRING "100 YEN 100 YEN" + .BYTE 0 + .EVEN + + .IF FULLPRICE +SHILL510 .STRING "5 SCHILLING 10 SCHILLING" + .BYTE 0 + .EVEN +FRANC20 .STRING "20 F 20 F" + .BYTE 0 + .EVEN +KRONA5 .STRING "1 KRONA 5 KRONA" + .BYTE 0 + .EVEN +NZ20 .STRING "20 CENT 20 CENT" + .BYTE 0 + .EVEN +HFSLOT .STRING "1 HFI 2.5 HFI" + .BYTE 0 + .EVEN + +MKSLOT .STRING "1 MARKKA 1 MARKKA" + .BYTE 0 + .EVEN + +NKRSLOT .STRING "1 KRONE 1 KRONE" + .BYTE 0 + .EVEN + +DKRSLOT .STRING "1 KRONE 5 KRONE" + .BYTE 0 + .EVEN + +ANTSLOT .STRING "25 CENTS 1 GUILDER" + .BYTE 0 + .EVEN + +HUNGSLOT + .STRING "10 FORINT 20 FORINT",0 + .EVEN + + .ENDIF + +;;CP_CX EQU 200 +;;CP_11 EQU 11 +;;CP_13 EQU 13 +;;CP_23 EQU 23 +;;CP_33 EQU 33 + + + + +;TXT_2_TO_START +; MESS_MAC RD15FONT,SPACING20,CP_CX,CP_11,ROBO_YELLOW,STRCNRM,0 +; .byte "2 CREDITS TO START",0,1 +; .even +; MESS_MAC RD15FONT,SPACING20,CP_CX,CP_23,ROBO_YELLOW,STRCNRM,0 +; .byte "1 CREDIT TO CONTINUE",0,0 +; .even + +;TWO_PER_PLAYER +; MESS_MAC RD7FONT,SPACING07,CP_CX,CP_11,ROBO_YELLOW,STRCNRM,0 +; .STRING "2 COINS PER PLAYER" +; .BYTE 0,0 +; .EVEN + +OCOP MESS_MAC RD7FONT,SPACING07,CP_CX,CP_11,ROBO_YELLOW,STRCNRM,0 + .STRING "1 COIN / 1 PLAY" + .BYTE 0,0 + .EVEN + +USA_ELECTRONIC: + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 + .STRING "1 CREDIT / 25 CENTS" + .STRING "\n4 CREDITS / 1 DOLLAR",0,1 + .EVEN + +FRANCE_ELECTRONIC: + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 + .STRING "1 CREDIT / 25 CENTS" + .STRING "\n4 CREDITS / 1 DOLLAR",0,1 + .EVEN + +GERMAN_ELECTRONIC: + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 + .STRING "1 CREDIT / 1 DM" + .STRING "\n6 CREDITS / 5 DM",0,1 + .EVEN + + .IF FULLPRICE +BELGIUM_ELECTRONIC: + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 + .STRING "1 CREDIT / 20 FR" + .EVEN + +UK_ELECTRONIC + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 + .STRING "1 CREDIT / 30 P" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_23,ROBO_YELLOW,STRCNRM,0 + .STRING "2 CREDITS / 50 P" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_33,ROBO_YELLOW,STRCNRM,0 + .STRING "4 CREDITS / " + .BYTE FONT_EPOUND + .STRING "1.00" + .BYTE 0,0 + .EVEN + .ENDIF + + +* +* THE FOLLOWING 2 MESSAGES ARE GENERIC AND WILL +* BE DISPLAYED IF THE MODE MATCHES AND NO +* APPROPRIATE MESSAGE EXISTS +* +* THIS IS FOR THIS BEING THE ONLY MESSAGE DISPLAYED ON +* THE SCREEN +* +TWO_TO_START + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_12,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS TO START",0,1 + .even + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 + .byte "1 CREDIT TO CONTINUE",0,0 + .even + +TWO_TO_START_2C + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_12,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS TO START",0,1 + .even + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS TO CONTINUE",0,0 + .even +* +* THIS IS FOR LINES TWO AND 3 WITH AN ADDITIONAL LINE ABOVE +* + +TWO_TS MESS_MAC RD15FONT,SPACING20,CP_CX,CP_23,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS TO START",0,1 + .even + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_33,ROBO_LASER,STRCNRM,0 + .byte "1 CREDIT TO CONTINUE",0,0 + .even + +TWO_TP MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS PER PLAYER",0,0 + .even + +TWO_CRED_PER_PLAYER + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_11,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS PER PLAYER",0,0 + .even + +MAX_C_M MESS_MAC RD15FONT,SPACING20,CP_CX,CP_11,ROBO_LF,STRCNRM,0 + .byte "MAXIMUM CREDITS!",0,0 + .even + + .end + \ No newline at end of file diff --git a/BACKUP/MENU.EQU b/BACKUP/MENU.EQU new file mode 100644 index 0000000..dec4413 --- /dev/null +++ b/BACKUP/MENU.EQU @@ -0,0 +1,198 @@ +**********************************MENU EQUATES**************************** +; +; FOR EACH ENTRY IN THE MENU +; +MENU_TEXT_PTR EQU 0 ;OFFSET OF TEXT POINTER +MENU_ROUTINE EQU LONG_SIZE ;OFFSET OF ROUTINE +MENU_HELP EQU MENU_ROUTINE+LONG_SIZE +MENU_ENTRY_SIZE EQU 3*LONG_SIZE +* +BLNK_HELP EQU 0 ;NO HELP BOX FOR THIS ENTRY +NO_HELP EQU 00000001H ;NO HELP AREA IN THIS MENU +ADJ_HELP EQU 00000002H ;PASS STRUCTURE POINTER TO ADJUSTMENT HELP ROUT +SND_HELP EQU 00000003H ;CALLED ON SOUND TEST MENU +SND_PLAY EQU 00000004H ;CALLED FROM SOUND "PLAY" SELECTIONS +* +SND_MESS_Y EQU 196 +SND_BOX_H EQU 57 + +* +* SPACING BETWEEN BOXES ON SCREEN +* +BOX_YGAP EQU 3 +BOX_XGAP EQU 2 +* +* +* A CENTERED BOX NEEDS TO BE MOVED LEFT THIS AMOUNT +* (PIXELS) TO CORRECTLY FRAME CENTERED TEXT AT +* THE SAME POSITION +* +C_KLUDGE EQU 1 +* +* THESE DETERMINE THE THICKNESS OF THE BOX LINES +* +MB_XWID EQU 3 +MB_YWID EQU 3 +* +* GAP BETWEEN A MENU BORDER BOX AND +* THE SELECTION BAR +* +GAP EQU 2 ;GAP BETWEEN BORDER AND SELECTION BAR +* +* CONSTANT TO PASS TO "DO_BORDER" FOR OUR +* BOX SIZE +* +BORDER_SIZE EQU (MB_YWID*10000H)+MB_XWID + +*******************************TEST TITLE CONSTANTS**************************** +* +* THESE ARE USED TO SET TOP BOX AND MAIN TITLE. +* THE MENUS AND HELP SCREENS WILL SQUARE OFF +* TO THE NUMBERS SET HERE. +* + +TM_X EQU 200 ;USED TO POSITION TITLE AND BOX TOGETHER +TM_Y EQU 10 + +TIT_ULX EQU TM_X-195 +TIT_LRX EQU TM_X+189 + +TIT_ULY EQU TM_Y-6 +TIT_LRY EQU TM_Y+32 + +********************************MAIN MENU CONSTANTS*************************** + +INST_ULY EQU TIT_LRY+BOX_YGAP ;Y RANGE FOR INSTRUCTION BOX +INST_LRY EQU INST_ULY+29 + +BAR_DY EQU -8 +BAR_WID EQU 183 +MENU_X EQU TIT_ULX+GAP+MB_XWID+(BAR_WID/2)+C_KLUDGE +MENU_Y EQU INST_LRY+BOX_YGAP+MB_YWID+GAP-BAR_DY +MENU_DY EQU 23 +BAR_HITE EQU 26 +BAR_DX EQU 6 +* +* HELP DRAWER CONSTANTS +* +HELP_X_MARGIN EQU 10 ;MARGIN FOR LEFT JUSTIFIED HELP TEXT +HELP_Y_MARGIN EQU 8 ;TOP OF BOX TO 1ST ENTRY +HELP_YLO_MARGIN EQU HELP_Y_MARGIN-4 ;BOTTOM MARGIN IS A TOUCH LESS DUE +* ;TO SPACING +HELP_DY EQU 12 ;SCREEN UNITS PER ITEM. +* +* +* ADJUSTMENT MENU CONSTANTS +* +* "CURRENT SETTING" BOX +* +CUR_ULY EQU 125 +CUR_LRX EQU TIT_LRX +CUR_LRY EQU CUR_ULY+(INST_LRY-INST_ULY) ;SAME HEIGHT AS TOP BOX +CUR_ULY2 EQU 140 +CUR_LRY2 EQU CUR_ULY2+(INST_LRY-INST_ULY) + +ADJ_ULY EQU CUR_LRY2+BOX_YGAP ;USE OUR "FIXED" SPACING. +ADJ_CULY EQU ADJ_ULY-20 ; COIN UPPER LEFT Y +ADJ_PULY EQU ADJ_ULY-28 + +COIN_HEAD_Y EQU ADJ_CULY+34 ;1ST OF TOP COIN INFO LINES +MESS_CTS EQU COIN_HEAD_Y+35 ;START/CONTINUE PLACE + +************************************************************************** +* * +* COIN SELECT TABLE OFFSETS * +* * +************************************************************************** + +* IF "CHUTES" VALUE CHANGES.....EXTRA WORDS MUST BE PUT HERE + +CS_LMULT EQU 0 +CS_CMULT EQU CS_LMULT+WORD_SIZE +CS_RMULT EQU CS_CMULT+WORD_SIZE +CS_XMULT EQU CS_RMULT+WORD_SIZE +CS_DBV EQU CS_XMULT+WORD_SIZE +CS_UCRED EQU CS_DBV+WORD_SIZE +CS_UBON EQU CS_UCRED+WORD_SIZE +CS_UMIN EQU CS_UBON+WORD_SIZE + +CS_STRT EQU CS_UMIN+WORD_SIZE +CS_CONT EQU CS_STRT+WORD_SIZE +CS_CDIV EQU CS_CONT+WORD_SIZE + +CS_FRAC EQU CS_CDIV+WORD_SIZE +CS_COPY EQU CS_FRAC+WORD_SIZE ;UP TO HERE IS COPIED AS ADJUSTMENTS +CS_LVAL EQU CS_COPY +CS_CVAL EQU CS_LVAL+WORD_SIZE +CS_RVAL EQU CS_CVAL+WORD_SIZE +CS_XVAL EQU CS_RVAL+WORD_SIZE +CS_DBVVAL EQU CS_XVAL+WORD_SIZE +CS_LMES EQU CS_DBVVAL+WORD_SIZE +CS_RMES EQU CS_LMES+LONG_SIZE +CS_PROMPT EQU CS_RMES+LONG_SIZE +CS_TITLE EQU CS_PROMPT+LONG_SIZE +CS_LIST EQU CS_TITLE+LONG_SIZE +CS_PICK EQU CS_LIST+LONG_SIZE ;WHICH LINE TO ADD TO 2 TO START...1 TO +CS_SLOTS EQU CS_PICK+WORD_SIZE ;TEXT DESCRIBING COIN SLOTS +CS_SIZE EQU CS_SLOTS+LONG_SIZE + +* +* ADJUSTMENT STRUCTURE. THIS STRUCTURE IS +* POINTED TO BY THE 2ND MENU LONG WORD (WHERE NORMALLY +* THE ROUTINE LIVES). +* +AD_ROUT EQU 0 ;LONG...ROUTINE TO RUN WHEN SELECTED. +AD_TITLE EQU AD_ROUT+LONG_SIZE ;LONG...POINTER TO TITLE FOR RIGHT COLUMN +AD_HELP EQU AD_TITLE+LONG_SIZE ;LONG...POINT TO HELP STRUCT FOR EXPLANATION +AD_CMOS EQU AD_HELP+LONG_SIZE ;WORD...GET_ADJ / PUT_ADJ NUMBER. +AD_MIN EQU AD_CMOS+WORD_SIZE ;LONG...MINIMUM VALUE FOR ADJ. +AD_MAX EQU AD_MIN+LONG_SIZE ;LONG...MAXIMUM VALUE FOR ADJ. +AD_DELTA EQU AD_MAX+LONG_SIZE ;LONG...UNITS BETWEEN VALUES. +AD_ZEQU EQU AD_DELTA+LONG_SIZE ;LONG...NUMBER TO STORE AS A ZERO. +AD_NAMEIT EQU AD_ZEQU+LONG_SIZE ;LONG...ROUTINE TO PRINT VALUES. +AD_FLAGS EQU AD_NAMEIT+LONG_SIZE ;WORD...bit zero non zero says wrap +* ; bit one non zero says BCD + ; bit two says flag "1st 8 coinage changed" (ADJVIRGIN) + ; bit three says flag 1st 6 changed (ADJ1st6) + ; bit four says its hsr counter +AD_NAMPTR EQU AD_FLAGS+WORD_SIZE ;LONG...POINTER TO DATA FOR NAMEIT ROUTINE +AD_MAIN EQU AD_NAMPTR+LONG_SIZE ;LONG...MAIN MENU STRING + +WRAP_BIT EQU 0 +BCD_BIT EQU 1 +VIRG_BIT EQU 2 +SIX_BIT EQU 3 +HSR_BIT EQU 4 +WRAP_VAL EQU 1 +BCD_VAL EQU 2 +VIRG_VAL EQU 4 +SIX_VAL EQU 8 +HSR_VAL EQU 16 +* +* FOR CSELECT TABLE...... +* +* A1 = 1 PLOT ONLY THE STRING LIST (1 OR 2 POINTERS +* CENTERED APPROPRIATELY +* +* A1 = 2 PLOT THE 1ST LINE OF THE STRING LIST ALONG +* WITH THE 2 CREDITS TO START...1 TO CONTINUE +* +* A1 = 3 PLOT THE 2ND LINE OF THE STRING LIST ALONG +* WITH THE 2 CREDITS TO START...1 TO CONTINUE +* +CSM_LIST EQU 1 +CSM_1W_21 EQU 2 +CSM_2W_21 EQU 3 +CSM_3W_21 EQU 4 +CSM_LAST EQU 4 + +* +* FOR CS_PICK: +* +SHOW_NONE EQU 0 ;JUST USE 2/1 BY ITSELF +SHOW_1 EQU 2 ;SHOW 1ST LINE +SHOW_2 EQU 3 ;SHOW 2ND LINE +SHOW_3 EQU 4 ;SHOW 3RD LINE + + + \ No newline at end of file diff --git a/BACKUP/MERGE.ASM b/BACKUP/MERGE.ASM new file mode 100644 index 0000000..62d8226 --- /dev/null +++ b/BACKUP/MERGE.ASM @@ -0,0 +1,4 @@ +15 Sep 94 - Jason & Jamie merge, new code on both systems +16 Sep 94 - Merge Mark in, new code on Jason's system +27 Sep 94 - Code from Jason's system up on net at 6:40 p.m. + \ No newline at end of file diff --git a/BACKUP/MISCIMG.ASM b/BACKUP/MISCIMG.ASM new file mode 100644 index 0000000..dcad77b --- /dev/null +++ b/BACKUP/MISCIMG.ASM @@ -0,0 +1,11 @@ + .FILE "imgtbl.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include miscimg.glo + + .include miscimg.tbl + \ No newline at end of file diff --git a/BACKUP/MK000275.BAT b/BACKUP/MK000275.BAT new file mode 100644 index 0000000..5f1d5bf --- /dev/null +++ b/BACKUP/MK000275.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del takerimg.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK000607.BAT b/BACKUP/MK000607.BAT new file mode 100644 index 0000000..1e8d2ed --- /dev/null +++ b/BACKUP/MK000607.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del razorimg.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK003373.BAT b/BACKUP/MK003373.BAT new file mode 100644 index 0000000..29967c2 --- /dev/null +++ b/BACKUP/MK003373.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +CRNCHLST >nul: display.lst +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK003606.BAT b/BACKUP/MK003606.BAT new file mode 100644 index 0000000..879b8b0 --- /dev/null +++ b/BACKUP/MK003606.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del dnkseq2.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK004360.BAT b/BACKUP/MK004360.BAT new file mode 100644 index 0000000..879b8b0 --- /dev/null +++ b/BACKUP/MK004360.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del dnkseq2.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK004700.BAT b/BACKUP/MK004700.BAT new file mode 100644 index 0000000..2167d0d --- /dev/null +++ b/BACKUP/MK004700.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +copy d:\wrestle.out c:\video\wwf +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK006751.BAT b/BACKUP/MK006751.BAT new file mode 100644 index 0000000..879b8b0 --- /dev/null +++ b/BACKUP/MK006751.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del dnkseq2.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK007219.BAT b/BACKUP/MK007219.BAT new file mode 100644 index 0000000..4d73327 --- /dev/null +++ b/BACKUP/MK007219.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del attract.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK007266.BAT b/BACKUP/MK007266.BAT new file mode 100644 index 0000000..233c735 --- /dev/null +++ b/BACKUP/MK007266.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del bamseq3.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK007770.BAT b/BACKUP/MK007770.BAT new file mode 100644 index 0000000..2167d0d --- /dev/null +++ b/BACKUP/MK007770.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +copy d:\wrestle.out c:\video\wwf +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK008261.BAT b/BACKUP/MK008261.BAT new file mode 100644 index 0000000..2167d0d --- /dev/null +++ b/BACKUP/MK008261.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +copy d:\wrestle.out c:\video\wwf +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK008496.BAT b/BACKUP/MK008496.BAT new file mode 100644 index 0000000..fc59989 --- /dev/null +++ b/BACKUP/MK008496.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +CRNCHLST >nul: wrestle.lst +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK009489.BAT b/BACKUP/MK009489.BAT new file mode 100644 index 0000000..3838961 --- /dev/null +++ b/BACKUP/MK009489.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del wrestle.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK009491.BAT b/BACKUP/MK009491.BAT new file mode 100644 index 0000000..2167d0d --- /dev/null +++ b/BACKUP/MK009491.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +copy d:\wrestle.out c:\video\wwf +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK010038.BAT b/BACKUP/MK010038.BAT new file mode 100644 index 0000000..663cda6 --- /dev/null +++ b/BACKUP/MK010038.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del razor.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK010840.BAT b/BACKUP/MK010840.BAT new file mode 100644 index 0000000..e1145ce --- /dev/null +++ b/BACKUP/MK010840.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del display.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK011591.BAT b/BACKUP/MK011591.BAT new file mode 100644 index 0000000..a82a050 --- /dev/null +++ b/BACKUP/MK011591.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +del select.axx +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MK013083.BAT b/BACKUP/MK013083.BAT new file mode 100644 index 0000000..2167d0d --- /dev/null +++ b/BACKUP/MK013083.BAT @@ -0,0 +1,5 @@ +echo off +set MAKE_EEK= +copy d:\wrestle.out c:\video\wwf +if errorlevel 1 goto make_end +:make_end diff --git a/BACKUP/MOVET.BAT b/BACKUP/MOVET.BAT new file mode 100644 index 0000000..0c0fc13 --- /dev/null +++ b/BACKUP/MOVET.BAT @@ -0,0 +1,3 @@ +@echo off +move t\%1 . + \ No newline at end of file diff --git a/BACKUP/MPROC.ASM b/BACKUP/MPROC.ASM new file mode 100644 index 0000000..e2ba5bd --- /dev/null +++ b/BACKUP/MPROC.ASM @@ -0,0 +1,594 @@ +************************************************************** +* GSP MULTI-PROCESSING SYSTEM +* +* Software: Eugene P Jarvis, Shawn Liptak +* Initiated: 1988? +* +* Modified: Shawn Liptak, 7/?/91 -New KILL stuff (Total carnage) +* Shawn Liptak, 8/12/91 -KOP code +* Shawn Liptak, 10/27/91 -Shawn.hdr +* Shawn Liptak, 2/18/92 -Basketball (cleanup) +* Shawn Liptak, 7/1/92 -Slowmotion +* Jason Skiles, 2/23/94 -Super-procs +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 2/23/94 11:45 +************************************************************** + .file "mproc.asm" + .title "GSP multi-processing system" + .width 132 + .option b,d,l,t + .mnolist + + + .include "gsp.equ" + .include "sys.equ" + .include "mproc.equ" + .include "display.equ" + .include "macros.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref obj_yzsort + .ref dirqtimer + .ref L_TIMER + +****************************************************************************** + + + .bss PRCSTR ,NPROC*PRCSIZ ;Process data blocks + +; Note: A super-proc is spotted by comparing its address to SPRCSTR. +; Make SURE that SPRCSTR always rests higher in RAM than PRCSTR. +; It would be A Bad Thing were this test to become unreliable. + + .bss SPRCSTR ,SNPROC*SPRCSIZ ;Super-process data blocks + +;Who coded this pus-oozing clusterfuck piece of shit? G-R-E-A-T fucking +; idea, you chowderhead. With a simple pair of .bss directives, you've +; wasted an enormous amount of precious scratch ram. It's a wonder +; ANYTHING works in this stupid game. HEL-LO! *bonk* *bonk* *bonk* +; Allocate it in unused image RAM instead. It saves space, and we've +; plenty of room there. By the time it's all used up, we'll be shipping, +; so it'll be ROM instead of RAM and you won't be able to overwrite the +; image data. +; Some programmers around here are just SO fucking clueless... +; USE YOUR HEADS, YOU FUCKWITS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + + .sect "FIXED" +ACTIVE .long 0 +FREE .long 0 +SFREE .long 0 + + + .text + + +******************************** +* Process list initialize +* >A13=*Process active list +* Trashes scratch + + SUBR process_init + + movi ACTIVE,a13 ;Init A13 + clr a0 + move a0,*a13,L ;Empty list + + movi PRCSTR,a1 + move a1,@FREE,L ;Full free list + + movi NPROC,b0 ;# of processes +#lp move a1,a14 + addi PRCSIZ,a1 + move a1,*a14,L ;Set link + dsj b0,#lp + + move a0,*a14,L ;Null last link + + ;initialize the super-proc list + movi SPRCSTR,a1 + move a1,@SFREE,L + + movi SNPROC,b0 ;# of processes +#slp move a1,a14 + addi SPRCSIZ,a1 + move a1,*a14,L ;Set link + dsj b0,#slp + + move a0,*a14,L ;Null last link + + rets + + +#******************************* +* Process dispatch + + SUBR process_dispatch + + + .if 0 + + movi 31*32,a0 ;Proc usage + move a0,@ERASELOC + +#dmawt move b13,b13 + jrge #dmawt + movk 6,a0 ;DMA usage + move a0,@ERASELOC +#noline + .endif + + .if DEBUG + .ref slowmotion + move @slowmotion,a0 +#smlp move @dirqtimer,a1 + cmp a1,a0 + jrge #smlp + .endif + + movi ACTIVE,a13 ;*Proc list + clr a0 + move a0,@dirqtimer ;Tell DIRQ to flip and draw + +#lp calla obj_yzsort ;Sort display list + move @dirqtimer,a0 + jrz #lp ;Wait? + + calla L_TIMER ;Linky timer (FIX so BOG time is OK!) + + jruc prcd1 + +******************************** +* Process sleep +* Stack=*Wakeup +* A0=Sleep time + +PRCSLP + PULL a7 ;Get *Wakeup + +PRCLSP move a13,a1 + addi PDATA,a1 + mmtm a1,a7,a8,a9,a10,a11,a12 ;*Wakeup, regs, *stack + move a0,-*a1 ;sleep + + +;D3PTS .equ >120 ;UHL *Points array (Cnt, XYZ,XYZ..) +; +; PUSH a0,a1 ;DEBUG +; movi d3vis_p,a1 +; move *a1,a0,L +; jrz #dx +;#debug move a1,a0 +; move *a0,a1,L +; jrnz #debug +; move *a0(D3PTS),a1,L +; jrz $ ;ERROR!!! +;#dx PULL a0,a1 + + + + .if DEBUG + move a13,a0 + cmpi SPRCSTR,a13 ;is it a superproc? + jrge #super_stkchk + + addi PSDATA,a0 + cmp a0,a12 + jrlt $ ;stick on stack overflow + addi PRCSIZ-PSDATA,a0 + cmp a0,a12 + jrgt $ ;stick on stack underflow + jruc prcd1 +#super_stkchk + addi SPSDATA,a0 + cmp a0,a12 + jrlt $ ;stick on stack overflow + addi SPRCSIZ-SPSDATA,a0 + cmp a0,a12 + jrgt $ ;stick on stack underflow + jruc prcd1 + .endif + +prcd1 + move *a13,a13,L + jrz prcdx ;End? + move *a13(PTIME),a0 ;Get count + subk 1,a0 + move a0,*a13(PTIME) ;Put it back + jrgt prcd1 ;Not ready? + + + move a13,a1 ;>Dispatch + addi >40,a1 + mmfm a1,a7,a8,a9,a10,a11,a12 ;*Wake, regs, *stack + jump a7 ;Do process + + +prcdx rets + + +******************************** +* Process kills itself + +SUCIDE + movi ACTIVE,a1 +suclp move a1,a2 ;save previous + move *a1,a1,L + jrz sucerr + + cmp a1,a13 + jrne suclp ;!Us + + move *a1,*a2,L ;Unlink + + cmpi SPRCSTR,a1 + jrge #suclink_sproc + + move @FREE,*a1+,L ;Link into free list at start + subk 32,a1 + move a1,@FREE,L + + move a2,a13 ;Set current process to previous + jruc prcd1 ;Continue with dispatch + +#suclink_sproc + move @SFREE,*a1+,L ;Link into super-proc free list at start + subk 32,a1 + move a1,@SFREE,L + move a2,a13 ;Continue with dispatch + jruc prcd1 + +sucerr + .if DEBUG + LOCKUP + eint + .else + CALLERR 5,0 + .endif + movi ACTIVE,a13 ;*Proc list + jruc prcd1 + + +#******************************* +* Kill process (won't kill self) +* A0=*Process to kill +* Trashes scratch + +KILL + cmp a0,a13 + jreq #x ;Killing self? + + movi ACTIVE,a1 + +#lp move a1,a14 ;Save previous + move *a1,a1,L + jrz killerr ;Can't find? + cmp a1,a0 + jrne #lp ;Not the one? + + move *a0,*a14,L ;Unlink from active + + cmpi SPRCSTR,a0 + jrge #kill_super + move @FREE,*a0+,L ;Link into free list at start + subk 32,a0 + move a0,@FREE,L + jruc #x + +#kill_super + move @SFREE,*a0+,L ;Link into free list at start + subk 32,a0 + move a0,@SFREE,L + jruc #x + +#x rets + +killerr + .if DEBUG + LOCKUP + eint + .else + CALLERR 6,0 + .endif + jruc #x + + +******************************** +* Create a process +* A1=PID, A7=PC, A8,A9,A10,A11 Passed parameters +* A13=*Current process +* >A0=*Created process (Flags invalid!) +* Trashes A14,B0-B1 + +GETPRC + move a12,b0 + + move @FREE,a0,L + jrz nonelft ;No more? + move *a0,a14,L + move a14,@FREE,L ;Unlink from free list + move *a13,*a0,L ;Link into active list after current process + move a0,*a13,L + jruc xferprc0 + +nonelft + .if DEBUG + LOCKUP + eint + .else + CALLERR 4,2 + .endif + jruc getpx + +******************************** +* +* Identical to GETPRC, except that the created process is placed in the +* process list immediately BEFORE the parent process, not after. +* +* A1=PID, A7=PC, A8,A9,A10,A11 Passed parameters +* A13=*Current process +* >A0=*Created process (Flags invalid!) +* Trashes A14,B0-B1 + +GETPRC_INSERT + move a12,b0 + + move @FREE,a0,L + jrz nonelft ;No more? + move *a0,a14,L + move a14,@FREE,L ;Unlink from free list + + + ;find the process that's immediately before the parent. + PUSH a1,a2 + movi ACTIVE,a1 + move *a1,a2,L +#search + cmp a13,a2 + jreq #found + move a2,a1 + move *a1,a2,L + jrnz #search + + ;We've been called by a nonexistent process. How odd. + .if DEBUG + LOCKUP + .endif + PULL a1,a2 + jruc getpx + +#found + ;a2 is parent proc, a1 is before that. slip in between. + move a0,*a1,L + move a2,*a0,L + PULL a1,a2 + jruc xferprc0 + + + +; move *a13,*a0,L ;Link into active list after current process +; move a0,*a13,L +; jruc xferprc0 + +******************************** +* Create a super-process +* A1=PID, A7=PC, A8,A9,A10,A11 Passed parameters +* A13=*Current process +* >A0=*Created process (Flags invalid!) +* Trashes A14,B0-B1 + + SUBR GETSPRC + move a12,b0 + + move @SFREE,a0,L + jrz nonelft ;No more? + move *a0,a14,L + move a14,@SFREE,L ;Unlink from free list + move *a13,*a0,L ;Link into active list after current process + move a0,*a13,L + jruc xferprc0 + + +******************************** +* Transfer control of an existing process +* A0=*Process to be xfer'd +* A1=New PID +* A7=*Wake address +* A8-A11=Passed to the xfer'd proc +* Trashes A14,B0-B1 + +XFERPROC + move a12,b0 +xferprc0 + cmpi ROM,a7 + jrlo procwakeerr ;Error? + + move a0,a14 + addi PDATA,a14 + move a0,a12 ;Reset process stack pointer + addi SPRCSIZ,a12 + cmpi SPRCSTR,a0 + jrge #superproc + + addi PRCSIZ-SPRCSIZ,a12 +#superproc + mmtm a14,a7,a8,a9,a10,a11,a12 ;Stuff wake, regs, p stack ptr + movk 1,a12 + move a12,-*a14 ;Wakeup next time + move a1,-*a14 ;ID + +getpx move b0,a12 + rets ;Flags are trashed!!! + +procwakeerr + .if DEBUG + LOCKUP + eint + .else + CALLERR 7,0 + .endif + jruc getpx + + +******************************** +* Kill a class of processes except for self +* A0=PID +* A1=Mask (bits to keep) +* Trashes scratch + +KILALL + not a1 + jruc KILALLN + + +******************************** +* Kill one class of processes +* A0=PID +* Trashes scratch + +KIL1C + clr a1 + +#******************************* +* Kill a class of processes +* A0=PID +* A1=!Mask (bits to remove) +* Trashes scratch + +KILALLN + move a2,b0 + move a3,b1 + + zext a1 ;Won't kill PIDS >8000+ + andn a1,a0 ;Form match + movi ACTIVE,a2 + +#lp move a2,a3 ;Save previous + move *a2,a2,L + jrz #x ;Done? + move *a2(PROCID),a14 + JRN #lp ;ALLOW INDESTRUCTABLES (ANYTHING 8000h+) + +; jrnn #ok +; LOCKUP +;#ok + andn a1,a14 ;Apply mask + cmp a0,a14 + jrne #lp ;No match? + + cmp a2,a13 + jreq #lp ;Current proecess? + + move *a2,*a3,L ;Unlink + cmpi SPRCSTR,a2 + jrge #spr + move @FREE,a14,L ;Link into free list at start + move a14,*a2,L + move a2,@FREE,L + move a3,a2 + jruc #lp + +#spr + move @SFREE,a14,L ;Link into super-proc free list at start + move a14,*a2,L + move a2,@SFREE,L + move a3,a2 + jruc #lp + +#x move b0,a2 + move b1,a3 + rets + + +******************************** +* Knock out one class of processes +* A0=PID, A2=Time to add +* Trashes scratch + +KOP_1C + clr a1 + +#******************************* +* Knock out a class of processes +* A0=PID, A1=!Mask (Bits to remove), A2=Time to add +* Trashes scratch + +KOP_ALL + move a3,b0 + andn a1,a0 ;Form match + movi ACTIVE,a3,L + +#lp move *a3,a3,L ;Get next + jrz #x ;End? + move *a3(PROCID),a14 + andn a1,a14 ;Mask + cmp a0,a14 + jrnz #lp ;No match? + + move *a3(PTIME),a14 ;Add sleep + add a2,a14 + move a14,*a3(PTIME) + jruc #lp + +#x move b0,a3 + rets + + +#******************************* +* Check to see if process exists +* A0=*Process +* Rets: Z=Not found, NZ=Found +* Trashes scratch + +process_exist + movi ACTIVE,a1 + +#lp move *a1,a1,L + jrz #x ;End? + cmp a0,a1 + jrne #lp ;!Match? + move a0,a0 ;Clr Z + +#x rets + + +#******************************* +* Find if at least one process, other than calling process, exists +* A0=PROCID +* A1=Mask +* Rets: A0=*Process or 0 (Z) + +EXISTP + PUSH a1,a2,a4 + + sext a0 + and a1,a0 ;form match + movi ACTIVE,a2 + +#lp move *a2,a2,L + jrz #x ;End? + move *a2(PROCID),a4 + and a1,a4 + cmp a0,a4 + jrne #lp ;!Match? + + cmp a2,a13 + jreq #lp ;Self? + +#x move a2,a0 + + PULL a1,a2,a4 + rets + + + + + + .end + + \ No newline at end of file diff --git a/BACKUP/MPROC.EQU b/BACKUP/MPROC.EQU new file mode 100644 index 0000000..3589ff3 --- /dev/null +++ b/BACKUP/MPROC.EQU @@ -0,0 +1,376 @@ +*.Last mod - 1/7/93 21:10 + + .globl GETPRC,SUCIDE,PRCSLP,PRCLSP + .globl process_exist,EXISTP + .globl XFERPROC + .globl KILL,KILALL,KIL1C,KILALLN,KOP_1C,KOP_ALL + .globl RAND,ACTIVE,FREE,PRCSTR + .globl snd_play1,snd_play,SNDSND + .globl SFREE,SPRCSTR,GETSPRC,GETPRC_INSERT + +;Process data structure +*STRUCT PROC +PLINK .set 0 ;UHL LINK TO NEXT 32 BITS +PROCID .set 20h ;UHW PROCESS ID 16 BITS +PTIME .set 30h ;UHW SLEEP TIME X 16MSEC 16 BITS +PSPTR .set 40h ;UHL PROCESS STACK POINTER 32 BITS +PA11 .set 60h ;UHL REGISTERS SAVED +PA10 .set 80h ;UHL +PA9 .set 0A0h ;UHL +PA8 .set 0C0h ;UHL +PWAKE .set 0E0h ;UHL +PDATA .set 100h ;PROCESS DATA STORE + +PSDATA .set 400h ;PROCESS STACK DATA +PRCSIZ .set 600h ;END OF DATA STRUCTURE +*ENDSTRUCT + +SPSDATA .set 0d80h ;SUPER-PROCESS STACK DATA +SPRCSIZ .set 0f80h ;SUPER-PROCESS END OF STRUCT + +SNPROC .SET 7 ;# of super-procs + +NPROC .SET 100 ;# processes + +*GSP MACROS + +*SUBTRACT REGISTER FROM MEMORY +* SUBRM REG,ADDR,FIELD SIZE +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +SUBRM .macro P1,P2,P3 + MOVE :P2:,A14,:P3: + SUB :P1:,A14 + MOVE A14,:P2:,:P3: + .endm + +*ADD REGISTER TO MEMORY +* ADDRM REG,ADDR,FIELD SIZE +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +ADDRM .macro P1,P2,P3 + MOVE :P2:,A14,:P3: + ADD :P1:,A14 + MOVE A14,:P2:,:P3: + .endm + +*INCREMENT LOCATION +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +INCW .macro P1 + MOVE :P1:,A14 + INC A14 + MOVE A14,:P1: + .endm + +*DECREMENT WORD +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +DECW .macro P1 + MOVE :P1:,A14 + DEC A14 + MOVE A14,:P1: + .endm + +*INCREMENT MEMORY +* INCM ADDR,FIELD SIZE +*A14 DESTROYED + +INCM .macro P1,P2 + MOVE :P1:,A14,:P2: + INC A14 + MOVE A14,:P1:,:P2: + .endm + +*DECREMENT MEMORY +* DECM ADDR,FIELD SIZE +*A14 DESTROYED + +DECM .macro P1,P2 + MOVE :P1:,A14,:P2: + DEC A14 + MOVE A14,:P1:,:P2: + .endm + +*SUBTRACT MEMORY +* SUBM ADDR,REG,FIELD SIZE +*SUBTRACTS ADDRESS FROM REGISTER +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +SUBM .macro P1,P2,P3 + MOVE :P1:,A14,:P3: + SUB A14,:P2: + .endm + +*ADD MEMORY +* ADDM ADDR,REG,FIELD SIZE +*ADDS ADDRESS FROM REGISTER +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +ADDM .macro P1,P2,P3 + MOVE :P1:,A14,:P3: + ADD A14,:P2: + .endm + +*NEGATE MEMORY +* NEGM ADDR,FIELD SIZE +*NEGATES ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +NEGM .macro P1,P2 + MOVE :P1:,A14,:P2: + NEG A14 + MOVE A14,:P1:,:P2: + .endm + +*COMPARE MEMORY +* CMPM ADDR,REG,FIELD SIZE +*COMPARES ADDRESS TO REGISTER +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +CMPM .macro P1,P2,P3 + MOVE :P1:,A14,:P3: + CMP A14,:P2: + .endm + +*CLEAR MEMORY +* CLRM ADDR,FIELD SIZE +*CLEARS ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +CLRM .macro P1,P2 + CLR A14 + MOVE A14,:P1:,:P2: + .endm + +*COMPLEMENT MEMORY +* COMM ADDR,FIELD SIZE +*COMPLEMENTS ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +COMM .macro P1,P2 + MOVE :P1:,A14,:P2: + NOT A14 + MOVE A14,:P1:,:P2: + .endm + +*SHIFT LEFT MEMORY +* SLLM SHIFT COUNT,ADDR,FIELD SIZE +*SHIFTS ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +SLLM .macro P1,P2,P3 + MOVE :P2:,A14,:P3: + SLL :P1:,A14 + MOVE A14,:P2:,:P3: + .endm + +*SHIFT RIGHT ARITHMETIC MEMORY +* SRAM SHIFT COUNT,ADDR,FIELD SIZE +*SHIFTS ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +SRAM .macro P1,P2,P3 + MOVE :P2:,A14,:P3: + SEXT A14,:P3: + SRA :P1:,A14 + MOVE A14,:P2:,:P3: + .endm + +*SHIFT RIGHT LOGICAL MEMORY +* SRLM SHIFT COUNT,ADDR,FIELD SIZE +*SHIFTS ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +SRLM .macro P1,P2,P3 + MOVE :P2:,A14,:P3: + ZEXT A14,:P3: + SRL :P1:,A14 + MOVE A14,:P2:,:P3: + .endm + +*BIT SET +* BSET BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO SET BIT IN +* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY + +BSET .macro P1,R1 + MOVK 1,A14 + SLL :P1:,A14 + OR A14,:R1: + .endm + + +*BIT CLR +* BCLR BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO CLR BIT IN +* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY + +BCLR .macro P1,R1 + MOVK 1,A14 + SLL :P1:,A14 + ANDN A14,:R1: + .endm + +*SET THE Z BIT +* SETZ +* STATUS BITS: +* N Unaffected +* C Unaffected +* Z 1 +* V Unaffected +* NOTE: A14 IS CLEARED + +SETZ .macro + CLR A14 + .endm + +*CLR THE Z BIT +* CLRZ +* STATUS BITS: +* N Unaffected +* C Unaffected +* Z 0 +* V Unaffected +* NOTE: A14 IS SET TO 1 + +CLRZ .macro + CLR A14 + NOT A14 + .endm + +*PROCESS SLEEP CONSTANT +*A=Sleep time 1-7fff +*RET ADDR ON STACK + +SLEEP .macro A + movi :A:,a0 + calla PRCSLP + .endm + +SLEEPK .macro A + movk :A:,a0 + calla PRCSLP + .endm + +*PROCESS SLEEP REGISTER +*REG1=REGISTER THAT CONTAINS SLEEP TIME 1-FFFF LOADED INTO A0 +*RET ADDR ON STACK + +SLEEPR .macro REG1 + MOVE :REG1:,A0 + CALLA PRCSLP + .endm + +*PROCESS LOOP SLEEP +*s=Sleep time, a=*Wakeup addr + +SLOOP .macro s,a + .if :s: < 33 + movk :s:,a0 + .else + movi :s:,a0 + .endif + movi :a:,a7,L + jauc PRCLSP + .endm + +*PROCESS LOOP SLEEP REGISTER +*P1=REGISTER CONTAINING SLEEP TIME 1-FFFF, P2 =WAKEUP ADDR-->A7 + +SLOOPR .macro P1,P2 + MOVE :P1:,A0 + MOVI :P2:,A7,L + JAUC PRCLSP + .endm + +*PROCESS CREATION MACRO +*P1=ID-->A1, P2=PC-->A7 + +CREATE .macro p1,p2 + movi :p1:,a1 + movi :p2:,a7,L + calla GETPRC + .endm + +*PROCESS CREATION MACRO +*A=PC-->A7 +CREATE0 .macro A + clr a1 + movi :A:,a7,L + calla GETPRC + .endm + +SCREATE .macro p1,p2 + movi :p1:,a1 + movi :p2:,a7,L + calla GETSPRC + .endm + +*KILL PROCESS(ES) +*P1=ID-->A0,P2=MASK-->A1 + +KILLIT .macro P1,P2 + MOVI :P1:,A0 + MOVI :P2:,A1 + CALLA KILALL + .endm + +*CALL IT QUITS + +DIE .macro + jauc SUCIDE + .endm + +*PROCESS JUMP SUBROUTINE +*P1=ADDRESS OF SLEEPING PROCESS +*A7 IS USED FOR PC STORAGE + +JSRP .macro P1 + GETPC A7 + ADDI 060h,A7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JAUC :P1: + .endm + +*PROCESS JUMP SUBROUTINE ON REGISTER +*R1=REGISTER CONTAINING ADDRESS OF SLEEPING PROCESS +*A7 IS USED FOR PC STORAGE + +JSRPR .macro R1 + GETPC A7 + ADDI 040h,A7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JUMP :R1: + .endm + +*RETURN FROM SLEEPING SUBROUTINE +*A7 IS USED FOR PC STORAGE +*STATUS REGISTER IS NOT AFFECTED + +RETP .macro + mmfm a12,a7 ;PULL RETURN ADDR, W/O ZAPPING STAT + exgpc a7 + .endm + +*FIND MATCHING PROCESS(ES), BRANCH IF ONE WAS FOUND +*P1=ID-->A0,P2=MASK-->A1,P3=BRANCH LABEL +MATCHP .macro P1,P2,P3 + MOVI :P1:,A0 + MOVI :P2:,A1 + CALLA EXISTP + JANZ :P3: + .endm + +*FIND MATCHING PROCESS(ES), BRANCH IF NONE WERE FOUND +*P1=ID-->A0,P2=MASK-->A1,P3=BRANCH LABEL +NOMATCHP .macro P1,P2,P3 + MOVI :P1:,A0 + MOVI :P2:,A1 + CALLA EXISTP + JAZ :P3: + .endm + +LOCKUP .macro + trap 29 + .endm + + \ No newline at end of file diff --git a/BACKUP/PAL.ASM b/BACKUP/PAL.ASM new file mode 100644 index 0000000..d77d04f --- /dev/null +++ b/BACKUP/PAL.ASM @@ -0,0 +1,1297 @@ +************************************************************** +* +* Software: ?, Shawn Liptak and Mark Turmell +* Initiated: 4/13/89 (palstuff) +* +* Modified: Shawn Liptak, 7/23/91 -New FADEIN/OUT (Total carnage) +* Shawn Liptak, 7/28/91 -Merged with fbstuff +* Shawn Liptak, 8/12/91 -PAL_TOWHT/PAL_FMWHT +* Shawn Liptak, 8/21/91 -Merged pall & palstuff +* Shawn Liptak, 9/13/91 -Clean up! +* Shawn Liptak, 9/17/91 -New PAL struct +* Shawn Liptak, 11/19/91 -Improved GETxPAL with CLNPAL +* Shawn Liptak, 2/20/92 -Basketball cleanup +* Shawn Liptak, 4/29/92 -Conditional bgndpal assembly +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 11/18/92 20:30 +************************************************************** + .title "palette allocator and fader control" + .file "pal.asm" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "game.equ" + .include "macros.h" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref IRQSKYE + .REF IGNORE_SPECIAL,IGNORE_THIS_PAL + +****************************************************************************** + +;defs + +;equates + +FPALNUM .equ 8 +FPALSZ .equ 256*16 + + +;ram + + .bss fade_start,16 + .bss fade_end,16 + .bss fade_inc,16 + .bss fade_list,32 ;list of palettes not to fade + + + BSSX PALRAM ,0 ;Palette allocation ram + BSSX PALFRAM ,PALRSIZ*NMFPAL + BSSX PALBRAM ,PALRSIZ*NMBPAL + BSSX PALTRAM ,PALTSIZ*NUMPALT + + BSSX FADERAM ,FPALSZ*NMFPAL ;Fade mem for palettes + + BSSX palfmin ,16 + .bss irqskyeo,16 ;Orignal autoerase color + + +morfpal1 equ FADERAM+0*16*64 +morfpal2 equ FADERAM+1*16*64 +morfpal3 equ FADERAM+2*16*64 +morfpal4 equ FADERAM+3*16*64 +morfpal5 equ FADERAM+4*16*64 +morfpal6 equ FADERAM+5*16*64 +morfpal7 equ FADERAM+6*16*64 +morfpal8 equ FADERAM+7*16*64 +morfpal9 equ FADERAM+8*16*64 +morfpal10 equ FADERAM+9*16*64 +morfpal11 equ FADERAM+10*16*64 + + .def morfpal1,morfpal2 + .def morfpal3,morfpal4 + .def morfpal5,morfpal6 + .def morfpal7,morfpal8 + .def morfpal9,morfpal10 + .def morfpal11 + + .text + +******************************** +* Note: Scratch = A0-A1,A14,B0-B1 + + +#******************************* +* Clear out palette allocation and xfer ram +* Trashes scratch + + SUBR pal_init + + movi PALRAM,a0 ;*Pal list + movi PALRSIZ*NUMPAL/16,b0 ;# of words + + clr a1 +#l1 move a1,*a0+ + dsj b0,#l1 + + movi PALTRAM,a0 ;*xfer ram + movi PALTSIZ*NUMPALT/16,b0 ;# of words + +#l2 move a1,*a0+ + dsj b0,#l2 + rets + + +#******************************* +* Cleanup unused palettes +* Trashes A1,A14,B0-B1 + + SUBR pal_clean + + PUSH a0,a2,a3,a4 + movi PALRAM+PALRSIZ,a2 ;Skip 1st pal + + movi NUMPAL-1,a3 ;Chk all pals + movi >0101,a4 ;2nd PAL # + +#lp move @OBJLST,a0,L + jrz cp30 ;No objs, chk backgnd + +cp20 move *a0(OPAL),a14 + cmp a14,a4 + jreq cp80 ;Used? Chk next + move *a0,a0,L + jrnz cp20 + +cp30 move @BAKLST,a0,L ;Check in bgnd list + jrz cp60 ;No objects, clean it out + +cp50 move *a0(OPAL),a14 + cmp a14,a4 + jreq cp80 ;Used? Chk next + move *a0,a0,L + jrnz cp50 + +cp60 +; move *a2,a0,L +; cmpi WARPP,a0 +; jrne cp70 ;Not warp pal? +; +; movi CYCPID,a0 +; movi -1,a1 +; calla EXISTP +; move a0,a0 +; jrnz cp80 ;Found cycler? + +cp70 + MOVE @IGNORE_SPECIAL,A14 + JRZ cp70a + move *a2,a0,L + CALLA IGNORE_THIS_PAL + JRC cp80 +cp70a + + clr a0 ;Palette not used, free it + move a0,*a2,L + +cp80 addi >0101,a4 ;Next pal + .if PAL64 + btst 4,a4 + jrz cp90 + addi >3030,a4 + sext a4 ;For compare + .endif + +cp90 addk PALRSIZ,a2 + dsj a3,#lp + + PULL a0,a2,a3,a4 + rets + + +#******************************* +* Find the color map # to which the given palette is assigned +* A0=*Pallette +* >A0=PAL # (DMA format) or 0 (Z) +* Trashes scratch + + SUBR pal_find + + movi PALRAM,a1 + movi NUMPAL,b0 + +#lp move *a1+,a14,L ;Get * palette + cmp a0,a14 + jreq #ok ;Found? + dsj b0,#lp + clr a0 ;Set Z + rets + +#ok subi NUMPAL,b0 ;Compute pal # + neg b0 + move b0,a1 + + .if PAL64 + movk >f,a14 + and a1,a14 ;A14=4 low bits + srl 4,a1 ;Move B4/B5 to B6/B7 + sll 6,a1 + add a14,a1 + .endif + + move a1,a0 ;Return pal # + sll 8,a1 + add a1,a0 + addk 1,a1 ;Clr Z (OK) + rets + + + +#******************************* +* Get a foreground palette +* A0=*Palette +*Rets: +* A0=Color map allocated (0000-cfcf) +* Z set if no palette free +* Trashes scratch + + SUBR pal_getf + + PUSH a2,a3 + + movi PALRAM,a1 ;>Check if palette already exists + movi NUMPAL,a3 +gfp4 move *a1+,a2,L ;Get *palette + cmp a0,a2 + jreq getpn ;Already in color ram? + dsj a3,gfp4 + + movi PALFRAM,a1 ;>Check for a spare palette + movi NMFPAL,a3 +gfp8 move *a1+,a2,L + jrz getfp ;Palette empty? Grab it + dsj a3,gfp8 + + .if DEBUG +; LOCKUP +; eint + .endif + callr pal_clean + + movi PALFRAM,a1 ;>Check for a spare palette + movi NMFPAL,a3 +gfp20 move *a1+,a2,L + jrz getfp ;Palette empty? Grab it + dsj a3,gfp20 + +#err PULL a2,a3 + clr a0 ;Set Z error + rets + + +******************************** +* Get a background palette +* A0=*Palette +*Rets: +* A0=Color map allocated (0000-cfcf) +* Z set if no palette free +* Trashes scratch + + .if NMBPAL + + SUBR pal_getb + + PUSH a2,a3 + + movi PALRAM,a1 ;>Check if palette already exists + movi NUMPAL,a3 +gbp4 move *a1+,a2,L ;Get *palette + cmp a0,a2 + jreq getpn ;Already in color ram? + dsj a3,gbp4 + + movi PALBRAM,a1 ;>Check for a spare palette + movk NMBPAL,a3 +gbp8 move *a1+,a2,L + jrz gbp30 ;Palette empty? Grab it + dsj a3,gbp8 + + .if DEBUG + LOCKUP + eint + .endif + callr pal_clean + + movi PALBRAM,a1 ;>Check for a spare palette + movk NMBPAL,a3 +gbp10 move *a1+,a2,L + jrz gbp30 ;Palette empty? Grab it + dsj a3,gbp10 + jruc #err + + +getfp addk NMBPAL,a3 ;>Setup your new palette + + .else +getfp + + .endif + + +gbp30 PUSH a0,a1 + move a3,a1 ;Palette # + subi NUMPAL,a1 ;Compute palette # + neg a1 + + .if PAL64 + movk >f,a2 + and a1,a2 ;A2=4 low bits + srl 4,a1 ;Move B4/B5 to B6/B7 + sll 6,a1 + add a2,a1 + .endif + + sll 8,a1 ;*256 + move *a0+,a2 ;Get # colors in pal + callr pal_set ;Setup pal transfer + mmfm sp,a0,a1 + jrz #err ;Failed to get transfer? + move a0,-*a1,L ;Stuff palette * + +getpn subi NUMPAL,a3 ;Compute palette # + neg a3 + + .if PAL64 + movk >f,a1 + and a3,a1 ;A2=4 low bits + srl 4,a3 ;Move B4/B5 to B6/B7 + sll 6,a3 + add a1,a3 + .endif + + move a3,a0 ;Return palette # + sll 8,a3 + add a3,a0 ;Double it up for DMA + + PULL a2,a3 + addk 1,a1 ;Clr Z for OK + rets + + +#******************************* +* Setup palette transfer +* A0=* to palette color data +* A1=Bit 8-15 destination palette | Bit 0-7 start color +* A2=Color count (0-255) +* Rets: Z set if unable to setup transfer +* Trashes scratch + + SUBR pal_set + + move a3,b1 + + movi PALTRAM,a3 + movi NUMPALT,b0 ;# of palette transfers allowed + +#lp move *a3+,a14 + jrz #set ;Cell free? + addi PALTSIZ-16,a3 + dsj b0,#lp + .if DEBUG + LOCKUP + eint + .endif + jruc #x + +#set move a0,*a3+,L ;Set PALSRC + move a1,*a3 ;Set PALDEST + move a2,*a3(-48) ;Set PLDCNT (Must set last) + +#x move b1,a3 + move b0,b0 ;Return Z (error) or NZ (ok) + rets + + + +#******************************* +* Transfer palette data +* Called during vblank +* Looks through PALTRAM for transfers +* Trashes A0-A7 + + SUBR pal_transfer + + movi PALTRAM,a0 + movi NUMPALT,a3 ;# OF PALETTES + + clr a6 + movi COLRAM,a7 + +#lp move *a0,a4 ;Get count + jrz #x ;End? + +PAL_DEBUG equ 0 + .if PAL_DEBUG + move @HEBLNK,a1 + cmpi HEBLNKINIT,a1 + jrnz #hb_ok + LOCKUP +#hb_ok + .endif + + move a6,*a0+ ;Clear out tranfer count + move *a0+,a1,L ;Source address + move *a0+,a2 ;Destination palette + zext a2 + + .if PAL64 + move a2,a5 ;Convert to color ram address + sll 32-12,a5 + srl 32-12-4,a5 ;*16 + srl 14,a2 ;Move B14/15 to B6/7 + sll 6+4,a2 + add a5,a2 + .else + sll 4,a2 ;*16 for word addr + .endif + + add a7,a2 ;+color ram base address + + sll 32-9,a4 ;Make 0-511 + srl 32-9+1,a4 + jrnc #1 ;Even data count? + move *a1+,*a2+ + +#1 srl 1,a4 ;/2 data count + jrnc #2 ;Even? + move *a1+,*a2+,L + +#2 srl 1,a4 ;/2 data count + jrnc #3 ;Even? + move *a1+,*a2+,L + move *a1+,*a2+,L +#3 jrz #5 ;Cnt=0? + +#4 move *a1+,*a2+,L + move *a1+,*a2+,L + move *a1+,*a2+,L + move *a1+,*a2+,L + dsj a4,#4 + +#5 dsj a3,#lp + +#x rets + + + +#******************************* +* Black out selected palette +* A0=* palette to black out +* Trashes scratch + + SUBR pal_blacken + + PUSH a2 + + callr pal_find + jrz #err + sll 8,a0 + move a0,a1 + movi FADERAM,a0 + movk 32,b0 + clr a2 +#lp move a2,*a0+,L + dsj b0,#lp + movi FADERAM,a0 + movi 64,a2 + callr pal_set + +#err PULL a2 + rets + + +******************************** +* PUMP_RED PROCESS, CYCLE NUCLEAR REACTORS + +;PUMP_RED +; SLEEPK 18H +; MOVI REACTR,A0 +; MOVE A0,@KPBASE,L +; CALLR find_pal +; JRZ REDOUT +; SLL 8,A0 +; MOVE A0,A11 ;NEEDED LATER FOR pal_set +; +; MOVI 25,A10 ;PUMP RED A10 TIMES +; MOVI 128,A8 +;REDLOOP MOVI FADERAM,A0 +; ADDK 10H,A8 +; CALLR DO_MULT +; SLEEPK 1 +; DSJ A10,REDLOOP +;REDOUT +; MOVK 25,A10 ;PUMP RED A10 TIMES +;RED2 MOVI FADERAM,A0 +; SUBI 10H,A8 +; CALLR DO_MULT +; SLEEPK 1 +; DSJ A10,RED2 +; JRUC PUMP_RED +; +;DO_MULT +; MOVE A8,A2 +; PUSH a8,a10,a11 +; +; MOVE @KPBASE,A1,L ;REACTR,A1 +;;PARAMS +;; A0 - DEST RAM FOR PAL +;; A1 - SRC FOR PAL +;; A2 - COLOR MULTIPLIER +;; EACH COLOR IN PALETTE WILL BE MULTIPLIED BY A2 THEN DIVIDED BY 128 +; +; move *a1+,a14 +; move a14,*a0+ +; SLL 23,A14 ;TOP BITS OF FIELD ARE FLAGS +; SRL 23,A14 ;ONLY 9 BITS NEEDED FOR # COLORS +; MOVI >7C00,A4 ;A4 - PRE MULT MASK FOR 5 BITS OF RED +;; MOVI >03E0,A6 ;A6 - PRE MULT MASK FOR 5 BITS OF GREEN +;; MOVI >001F,A8 ;A8 - PRE MULT MASK FOR 5 BITS OF BLUE +; MOVE A4,A9 +;; MOVE A6,A10 +;; MOVE A8,A11 +; SLL 7,A9 ; A9 - POST MULT MAX FOR 5 BITS OF RED +;; SLL 7,A10 ;A10 - POST MULT MAX FOR 5 BITS OF GREEN +;; SLL 7,A11 ;A11 - POST MULT MAX FOR 5 BITS OF BLUE +;FADELPR +; MOVE *A1+,A3,W ;A3 - RED +; MOVE A3,A5 +; ANDI 03FFH,A5 +;; MOVE A3,A5 ;A5 - GREEN +;; MOVE A3,A7 ;A7 - BLUE +; AND A4,A3 +; CMPI 1001H,A3 +; JRC REDOKR +;; AND A6,A5 +;; AND A8,A7 +; MPYU A2,A3 +;; MPYU A2,A5 +;; MPYU A2,A7 +; CMP A9,A3 +; JRLE REDOKR +; MOVE A9,A3 +;REDOKR +;; CMP A10,A5 +;; JRLE GREENOK +;; MOVE A10,A5 +;;GREENOK +;; CMP A11,A7 +;; JRLE BLUEOK +;; MOVE A11,A7 +;;BLUEOK +; AND A9,A3 +; SRL 7,A3 +;; AND A10,A5 +; OR A5,A3 +;; OR A7,A3 +;; SRL 7,A3 +; MOVE A3,*A0+ +; DSJS A14,FADELPR +; +; +; PULL a8,a10,a11 +; +; movi FADERAM,a0 ;*Color data +; move a11,a1 ;Pal# +; move *a0+,a2 ;#Colors +; jruc pal_set + + + +******************************** +* Fade in all selected palettes from black +* A0=*Palette list to fade in (autoerase + 0-8 pals) +* A1=Fade delay in ticks +* Trashes scratch,A7,A9-A10 +* If 1st entry not neg then it enables autoerase fading + + + SUBR pal_fadein + + move a0,a9 ;A9=*Palette list + move a1,a10 ;A10=Fade delay + CREATE0 fadein + rets + +fadein + move a13,a6 + addi PDATA,a6 + movk FPALNUM,a7 + + move a9,a11 + move *a11+,a0,L ;!-=Autoerase color + jrn fi30 + move a0,@irqskyeo ;Save color + +fi20 move *a11+,a0,L ;Get * palette + jrz fi70 ;0=End +fi30 callr pal_find + jrnz fi60 ;OK? + not a0 ;Make neg (should = -256) +fi60 sll 8,a0 + move a0,*a6+ ;Save palette # + dsj a7,fi20 + +fi70 clr a8 ;A8=Brightness + + +fi100 addk 8,a8 + + movi FADERAM,a5 + move a13,a6 + addi PDATA,a6 + movk FPALNUM,a7 + + move a9,a11 + move *a11,a1,L + jrn fi200 + addk 32,a11 + move a8,a2 + callr pal_fadeae + +fi200 move *a11+,a1,L + jrz fi400 ;End? + move a5,a0 + move a8,a2 + callr pal_fade + move a5,a0 ;*Palette colors + move *a6+,a1 ;Palette # + cmpi -256,a1 ;FF00 + jreq fi230 ;Couldn't find? + move *a0+,a2 ;#Colors + callr pal_set +fi230 addi FPALSZ,a5 + dsj a7,fi200 + +fi400 move a10,a0 + calla PRCSLP + cmpi 128,a8 + jrlo fi100 + +fi800 DIE + + + + +******************************** +* Fade out all selected palettes to black +* A0=*Palette list to fade out (autoerase + 0-8 pals) +* A1=Fade delay in ticks +* If 1st entry not neg then it enables autoerase fading + + + SUBR pal_fadeout + + clr a10 + move a10,@palfmin + + SUBR pal_fadeout2 + + move a0,a9 ;A9=*Palette list + move a1,a10 ;A10=Fade delay + CREATE0 fadeout + rets + +fadeout + move a13,a6 + addi PDATA,a6 + movk FPALNUM,a7 + + move a9,a11 + move *a11+,a0,L ;!-=Autoerase color + jrn fo30 + move @IRQSKYE,a0 ;Save color + move a0,@irqskyeo + +fo20 move *a11+,a0,L ;Get * palette + jrz fo70 ;0=End +fo30 callr pal_find + jrnz fo60 + not a0 ;Make neg +fo60 sll 8,a0 + move a0,*a6+ ;Save palette # + dsj a7,fo20 + +fo70 movi 128,a8 ;A8=Brightness + + +fo100 subk 8,a8 + + movi FADERAM,a5 + move a13,a6 + addi PDATA,a6 + movk FPALNUM,a7 + + move a9,a11 + move *a11+,a1,L + jrn fo220 + move a8,a2 + callr pal_fadeae + +fo200 move *a11+,a1,L + jrz fo400 +fo220 move a5,a0 + move a8,a2 + callr pal_fade + move a5,a0 ;*Palette colors + move *a6+,a1 ;Palette # + cmpi -256,a1 ;FF00 + jrz fo250 + move *a0+,a2 ;#Colors + callr pal_set +fo250 addi FPALSZ,a5 + dsj a7,fo200 + +fo400 move a10,a0 + calla PRCSLP + move @palfmin,a0 + cmp a0,a8 + jrgt fo100 + +fo800 DIE + + +******************************** +* Fade autoerase color + + SUBRP pal_fadeae ;A2=Brightness (0-128) + + PUSH a3,a5,a7,a8 + + movi IRQSKYE,a0 + movi irqskyeo,a1 + movk 1,a14 + jruc pf1c + + +******************************** +* Fade a palette +* Each color in palette will be multiplied by a2 then divided by 128 +* A0=*Ram for pal, A1=*Palette, A2=Brightness (0-128) +* Trashes scratch + + SUBRP pal_fade + + PUSH a3,a5,a7,a8 + + move *a1+,a14 ;# Colors + move a14,*a0+ + + sll 32-9,a14 ;Remove any flags + srl 32-9,a14 ;9 bits needed for # colors + +pf1c movk >1f,a8 ;A8=5 bit color mask + +pf100 move *a1+,a3 + movk >1f,a7 + and a3,a7 ;A7=Blue + srl 5,a3 + movk >1f,a5 + and a3,a5 ;A5=Green + srl 5,a3 ;A3=Red + + mpyu a2,a3 + mpyu a2,a5 + mpyu a2,a7 + srl 7,a3 ;/128 + srl 7,a5 + srl 7,a7 + + cmp a8,a3 + jrls pfrok + move a8,a3 + +pfrok cmp a8,a5 + jrls pfgok + move a8,a5 + +pfgok cmp a8,a7 + jrls pfbok + move a8,a7 + +pfbok sll 10,a3 + sll 5,a5 + or a5,a3 + or a7,a3 + move a3,*a0+ ;Save color + dsj a14,pf100 + + PULL a3,a5,a7,a8 + rets + + + +************************************************************************** +* Fade palettes from black to their normal colors except for list +* A0=*List NOT to fade or 0 +* Trashes scratch + + SUBR pal_fadeinx + + PUSH a2,a6,a7,a8,a9,a10 + movk 8,a10 + jruc fbf10 + + +************************************************************************** +* Fade palettes down to black except for list +* A0=*List NOT to fade or 0 +* Trashes scratch + + SUBR pal_fadeoutx + + PUSH a2,a6,a7,a8,a9,a10 + movi -8,a10 + +fbf10 move a0,a6 + ;Start proc to fade each palette + clr a9 ;palette slot + movi PALRAM,a2 ;A2=*Palette table + +fbf20 move *a2+,a8,L ;Ptr to palette + jrz fbf70 + move a6,a7 ;A6=*List of palettes to skip + jrz fbf60 + +fbf50 move *a7+,a1,L + jrz fbf60 + cmp a1,a8 + jreq fbf70 ;Skip pal? + jruc fbf50 + +fbf60 CREATE0 fadeonep + +fbf70 addk 1,a9 + cmpi NUMPAL,a9 + jrlt fbf20 + +fbfx PULL a2,a6,a7,a8,a9,a10 + rets + + +************************************************************************** +* fadeonep - Fade one palette (Process) +* +* A8=*Palette to be faded +* A9=Palette slot # (0 to NUMPAL-1) +* A10=Add value per fade (!0) + +fadeonep + + .if PAL64 + movk >f,a2 + and a9,a2 ;A2=4 low bits + srl 4,a9 ;Move B4/B5 to B6/B7 + sll 6,a9 + add a2,a9 + .endif + + sll 8,a9 ;B8-15 dest pal, B0-7 color (0) + + clr a11 ;For up fade + move a10,a10 + jrgt fop60 + movi 128,a11 ;For dn fade + jruc fop60 + ;>Set up faded pal in process data space +foplp + move a11,a2 ;A2=Color Multiplier + move a13,a0 + addi PDATA,a0 ;A0=Dest Ram for Pal + move a0,a5 + move a8,a1 ;A1=Src for Pal + callr pal_fade + + move a5,a0 ;>Move faded palette to palram + move a9,a1 + move *a0+,a2 ;Get # colors in palette + callr pal_set ;Set transfer + + SLEEPK 2 +fop60 add a10,a11 + cmpi 128,a11 + jrls foplp + + + SLEEPK 2 ;Wait on last pal_set + DIE + + +**************************************************************** +* Fade palettes from white to their normal colors except for list +* A0=*List NOT to fade or 0 +* A1=Do Autoerase (!0=Yes) + + SUBR pal_fmwht + + PUSH a2,a6,a7,a8,a9,a10 + movi -1,a10 + jruc ptw10 + + +**************************************************************** +* Brighten palettes to white except for list +* A0=*List NOT to fade or 0 +* A1=Do Autoerase (!0=Yes) + + SUBR pal_towht + + PUSH a2,a6,a7,a8,a9,a10 + move @IRQSKYE,a2 ;Save color + move a2,@irqskyeo + movk 1,a10 + +ptw10 move a0,a6 + move a1,a1 + jrz ptw15 ;Skip AE + CREATE0 addbrt_ae + ;Start proc to fade each palette +ptw15 clr a9 ;palette slot + movi PALRAM,a2 ;A2=*Palette table + +ptw20 move *a2+,a8,L ;Ptr to palette + jrz ptw70 + move a6,a7 ;A6=*List of palettes to skip + jrz ptw60 + +ptw50 move *a7+,a1,L + jrz ptw60 + cmp a1,a8 + jreq ptw70 ;Skip pal? + jruc ptw50 + +ptw60 CREATE0 brightenonep + +ptw70 addk 1,a9 + cmpi NUMPAL,A9 + jrlt ptw20 + +ptwx PULL a2,a6,a7,a8,a9,a10 + rets + + +******************************** +* Brighten one palette (Process) +* A8=*Palette to be faded +* A9=Palette slot # +* A10=Add value per loop (!0) + +brightenonep + .if PAL64 + movk >f,a2 + and a9,a2 ;A2=4 low bits + srl 4,a9 ;Move B4/B5 to B6/B7 + sll 6,a9 + add a2,a9 + .endif + + sll 8,a9 ;B8-15 dest pal, B0-7 color (0) + + clr a11 ;For up fade + move a10,a10 + jrgt bop20 + movk 31,a11 ;For dn fade +bop20 + ;Set up faded pal in process data space +boplp add a10,a11 + cmpi 31,a11 + jrhi bopx + move a11,a2 ;A2=Brightness + move a13,a0 + addi PDATA,a0 ;A0=Dest Ram for Pal + move a0,a5 + move a8,a1 ;A1=Src for Pal + callr pal_addb + + move a5,a0 ;>Move faded palette to palram + move a9,a1 + move *a0+,a2 ;Get # colors in palette + callr pal_set ;Set transfer + + SLEEPK 3 + jruc boplp + +bopx SLEEPK 1 ;give last xfer a chance to go + DIE + + +******************************** +* Change brightness of autoerase (Process) +* A10=Add value per loop (!0) + + SUBR addbrt_ae + + clr a11 ;For up fade + move a10,a10 + jrgt abae20 + movk 31,a11 ;For dn fade +abae20 +abaelp add a10,a11 + cmpi 31,a11 + jrhi abaex + move a11,a2 ;A2=Brightness + callr addbae + + SLEEPK 3 + jruc abaelp + +abaex DIE + + +******************************** +* Change brightness of autoerase +* A2=Brightness (-31 to 31) + + SUBRP addbae + + PUSH a3,a5,a7,a8 + + movi IRQSKYE,a0 + movi irqskyeo,a1 + movk 1,a14 + jruc pb1c + + +******************************** +* Change brightness of a palette +* Each color in palette will have A2 added to its RGB +* A0=*Ram for pal, A1=*Palette, A2=Brightness (-31 to 31) +* Trashes scratch + + SUBRP pal_addb + + PUSH a3,a5,a7,a8 + + move *a1+,a14 ;# Colors + move a14,*a0+ + + sll 23,a14 ;Remove any flags + srl 23,a14 ;9 bits needed for # colors + +pb1c movk >1f,a8 ;A8=Mask for 5 bits of color + +pb100 move *a1+,a3 + movk >1f,a7 + and a3,a7 ;A7=Blue + srl 5,a3 + movk >1f,a5 + and a3,a5 ;A5=Green + srl 5,a3 ;A3=Red + + add a2,a3 + add a2,a5 + add a2,a7 + + cmp a8,a3 + jrls pbrok + move a8,a3 + +pbrok cmp a8,a5 + jrls pbgok + move a8,a5 + +pbgok cmp a8,a7 + jrls pbbok + move a8,a7 + +pbbok sll 10,a3 + sll 5,a5 + or a5,a3 + or a7,a3 + move a3,*a0+ ;Save color + dsj a14,pb100 + + PULL a3,a5,a7,a8 + rets + + +#***************************************************************************** +* +* INPUT: a10 = * list palettes not to fade (0 terminated) +* A11=Fade increment (1-256) +*----------------------------------------------------------------------------- + + SUBR fade_up + + move a10,@fade_list,L + + clr a0 + move a0,@fade_start + + movi 256,a0 + move a0,@fade_end + + move a11,a0 ;movk 8 + move a0,@fade_inc + + jruc do_fade + +#***************************************************************************** +* Fade palettes down (process) +* A10=* list palettes not to fade (0 terminated) +* A11=Fade increment (1-256) +*----------------------------------------------------------------------------- + + SUBR fade_down + + move a10,@fade_list,L + + movi 256,a0 + move a0,@fade_start + + clr a0 + move a0,@fade_end + + move a11,@fade_inc + + jruc do_fade + +#***************************************************************************** +* +* INPUT: a10 = * list palettes not to fade (0 terminated) +* +*----------------------------------------------------------------------------- + + SUBR fade_up_half + + move a10,@fade_list,L + + movi 128,a0 + move a0,@fade_start + + movi 256,a0 + move a0,@fade_end + + movk 16,a0 + move a0,@fade_inc + + jruc do_fade + +#***************************************************************************** +* +* INPUT: a10 = * list palettes not to fade (0 terminated) +* +*----------------------------------------------------------------------------- + + SUBR fade_down_half + + move a10,@fade_list,L + + movi 256,a0 + move a0,@fade_start + + movi 128,a0 + move a0,@fade_end + + movk 16,a0 + move a0,@fade_inc + + jruc do_fade + +#***************************************************************************** + + SUBRP do_fade + + move @IRQSKYE,a0 + move a0,@irqskyeo + + move @fade_start,a10 +#fade_loop + + move @irqskyeo,a11 + movk >1f,a7 + and a11,a7 ;A7 = Blue + srl 5,a11 + movk >1f,a9 + and a11,a9 ;A9 = Green + srl 5,a11 ;A11 = Red + + mpyu a10,a7 ; X (0 - 32) + srl 8,a7 ;/256 + mpyu a10,a9 + srl 8,a9 + mpyu a10,a11 + srl 8,a11 + + sll 10,a11 ;red + or a11,a7 + sll 5,a9 ;green + or a9,a7 + + move a7,@IRQSKYE + + + movi FADERAM,a4 + movi PALRAM,a1 + movi NUMPAL,a3 +#next_pal + move *a1+,a2,L ;Get *palette + jrz #empty_pal + + move @fade_list,a7,L + jrz #skip_check + jruc #start + +#next_check + cmp a9,a2 + jreq #done ;skip this palette +#start + move *a7+,a9,L + jrnz #next_check + +#skip_check + + move *a2+,a5 ;Number colours in palette + move a5,a8 + move a4,a6 + +#copy_loop + move *a2+,a11 + movk >1f,a7 + and a11,a7 ;A7 = Blue + srl 5,a11 + movk >1f,a9 + and a11,a9 ;A9 = Green + srl 5,a11 ;A11 = Red + + mpyu a10,a7 ; X (0 - 32) + srl 8,a7 ;/256 + mpyu a10,a9 + srl 8,a9 + mpyu a10,a11 + srl 8,a11 + + sll 10,a11 ;red + or a11,a7 + sll 5,a9 ;green + or a9,a7 + + move a7,*a6+ ;1 word + + dsj a8,#copy_loop + + + PUSH a1,a2 + move a4,a0 ;* colour data + movi NUMPAL,a1 + sub a3,a1 ;dest palette ( 0 - NUMPAL-1 ) + sll 8,a1 ; + move a5,a2 ;# colours + callr pal_set + PULL a1,a2 +#done +#empty_pal + addi FPALSZ,a4 + dsj a3,#next_pal + + SLEEPK 1 + + move @fade_start,a0 + move @fade_end,a1 + cmp a0,a1 + jrhi #fading_up + ;fading_down + move @fade_inc,a0 ;signed inc + sub a0,a10 + cmp a1,a10 + jrge #fade_loop + + DIE + +#fading_up + move @fade_inc,a0 ;signed inc + add a0,a10 + cmp a1,a10 + jrls #fade_loop + + DIE + + +#***************************************************************************** + .end + + + \ No newline at end of file diff --git a/BACKUP/PATCH.ASM b/BACKUP/PATCH.ASM new file mode 100644 index 0000000..d2b6ba5 --- /dev/null +++ b/BACKUP/PATCH.ASM @@ -0,0 +1,163 @@ +************************************************************** +* +* Software: ? and Shawn Liptak +* Initiated: ? +* +* Modified: Shawn Liptak, 2/20/92 -Started basketball cleanup +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/10/92 19:07 +************************************************************** + .option b,d,l,t + .mnolist + + .include "gsp.equ" + .include "macros.h" + + + .def TVPATCH,TVPATCHX + + +****************************************************************************** +* EXTERNAL REFERENCES + + +****************************************************************************** + + .text + .even +OLDINTEN .word 0 + + + SUBR TVBP + + PUSH a0,a1 + PUSH b0,b1 + + move @INTENB,a0 ;Disable ROM protect interrupt (ext2) + move a0,@OLDINTEN + andni X2E,a0 + ori DIE,a0 ;Enable DIRQ + move a0,@INTENB + + PULL b0,b1 + PULL a0,a1 + rets + + + SUBR TVBPX + + PUSH a0 + + move @OLDINTEN,a0 ;Enable ROM protect interrupt (ext2) + ori X2E,a0 + move a0,@INTENB + + move @INTPEND,a0 ;Clear any pending X2E or DIE + andni X2E|DIE,a0 + move a0,@INTPEND + + move a0,@>1e00000 ;Clr FPGA rom protect + + PULL a0 + rets + + +TVPATCH: + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 +TVPATCHX: + \ No newline at end of file diff --git a/BACKUP/PBUILD.CMD b/BACKUP/PBUILD.CMD new file mode 100644 index 0000000..667ebf6 --- /dev/null +++ b/BACKUP/PBUILD.CMD @@ -0,0 +1,60 @@ +BAM_HIT.IMG +BAM_KIK.IMG +BAM_MJT.IMG +BAM_MSC.IMG +BAM_PNC.IMG +BAM_RJR.IMG +BAM_WLK.IMG +DNK_HIT.IMG +DNK_JMS.IMG +DNK_KIK.IMG +DNK_MJT.IMG +DNK_MSC.IMG +DNK_NEW.IMG +DNK_PNC.IMG +DNK_RJR.IMG +DNK_SPC.IMG +DNK_WLK.IMG +HRT_HIT.IMG +HRT_JMS.IMG +HRT_KIK.IMG +HRT_MSC.IMG +HRT_PNC.IMG +HRT_WLK.IMG +HRT_XXX.IMG +LEX_HIT.IMG +LEX_KIK.IMG +LEX_MJT.IMG +LEX_MSC.IMG +LEX_PNC.IMG +LEX_RJR.IMG +LEX_WLK.IMG +RZR_HIT.IMG +RZR_JMS.IMG +RZR_KIK.IMG +RZR_MJT.IMG +RZR_MSC.IMG +RZR_PNC.IMG +RZR_RJR.IMG +RZR_WLK.IMG +SHN_HIT.IMG +SHN_KIK.IMG +SHN_MJT.IMG +SHN_MSC.IMG +SHN_PNC.IMG +SHN_RJR.IMG +SHN_WLK.IMG +UND_HIT.IMG +UND_KIK.IMG +UND_MJT.IMG +UND_MSC.IMG +UND_PNC.IMG +UND_RJR.IMG +UND_WLK.IMG +YOK_HIT.IMG +YOK_KIK.IMG +YOK_MJT.IMG +YOK_MSC.IMG +YOK_PNC.IMG +YOK_WLK.IMG + \ No newline at end of file diff --git a/BACKUP/PLYR.EQU b/BACKUP/PLYR.EQU new file mode 100644 index 0000000..8992aa4 --- /dev/null +++ b/BACKUP/PLYR.EQU @@ -0,0 +1,328 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 3/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + + + +****************************************************************************** +* +* PLAYER DATA STRUCTURE + + +* +* (CHECK THE SIZE OF ALL THIS CRAP!!!!!!!!!!!!!!!!!!!!!!!!!!!!) +* + + + STRUCTPD + WORD OBJ_XPOS ;x-pos (world coordinates) + WORD OBJ_XPOSINT + + WORD OBJ_YPOS ;y-pos (world coordinates) + WORD OBJ_YPOSINT + + WORD OBJ_ZPOS ;z-pos (world coordinates) + WORD OBJ_ZPOSINT + + LONG OBJ_PRIORITY + + WORD OBJ_BOXXOFF + WORD OBJ_BOXYOFF + WORD OBJ_BOXZOFF + WORD OBJ_BOXWIDTH + WORD OBJ_BOXHEIGHT + WORD OBJ_BOXDEPTH + + WORD OBJ_COLLX1 + WORD OBJ_COLLX2 + WORD OBJ_COLLY1 + WORD OBJ_COLLY2 + WORD OBJ_COLLZ1 + WORD OBJ_COLLZ2 + + WORD OBJ_ATTXOFF + WORD OBJ_ATTYOFF + WORD OBJ_ATTZOFF + WORD OBJ_ATTWIDTH + WORD OBJ_ATTHEIGHT + WORD OBJ_ATTDEPTH + + WORD TGT_XOFF + WORD TGT_YOFF + WORD TGT_ZOFF + + LONG OBJ_XVEL + LONG OBJ_YVEL + LONG OBJ_ZVEL + + LONG OBJ_GRAVITY + + WORD OBJ_FRICTION + + WORD CLOSEST_DIST + WORD CLOSEST_XDIST + WORD CLOSEST_YDIST + WORD CLOSEST_ZDIST + WORD CLOSEST_NUM ;(number of closest opponent) + + WORD ATTACH_XOFF + WORD ATTACH_YOFF + WORD ATTACH_ZOFF + APTR ATTACH_PROC + + APTR CODE_ADDR + + WORD ROLL_POS + WORD GETUP_TIME +;MJT Start +; WORD BURNOUT_COUNT +;MJT End + + WORD CAN_MOVE_DIR + WORD X_BOUND + WORD Z_BOUND + WORD MOVE_DIR + + WORD FACING_DIR + WORD NEW_FACING_DIR + + LONG WHOHITME ;* wrestler process + LONG WHOIHIT ;* wrestler process + WORD HITBLOCKER ; + WORD PLYR_HIT_SIDE + + WORD INRING ;0 = in ring, 1 = outside + WORD GROUND_Y + + WORD PLYRNUM + WORD WRESTLERNUM + WORD PLYR_TYPE + WORD PLYR_SIDE + + WORD PLYRMODE + WORD ATTACK_MODE + + + WORD ATTACK_TYPE + WORD ATTACK_TIME + + + WORD PLYR_DIZZY + WORD PLYR_DIZZY_CNT ;# of times plyr has been dizzy this rnd + + WORD PLYR_SHADOW + + WORD PLYR_ROPE_X_LEFT + WORD PLYR_ROPE_X_RIGHT + + WORD ANI_SPEED + + WORD ANIMODE ;0<------ + APTR ANIBASE ;1 | + APTR ANIPC ;2 | + WORD ANICNT ;3 | + APTR CUR_FRAME ;4 keep | + ;5 | + WORD ANIMODE2 ;6ordered| + APTR ANIBASE2 ;7 | + APTR ANIPC2 ;8 | + WORD ANICNT2 ;9 | + APTR CUR_FRAME2 ;A <------ + + APTR OBJ_BASE + WORD OBJ_CONTROL + WORD OBJ_CONST + + WORD OBJ_PAL ;Pass pal pntr along + + WORD RUN_TIME ;Ticks since start of run + WORD BUT_COUNT ;<--- this can go sans land + WORD RPT_COUNT + + WORD CLIMBING_THRU ;1=Climbing thru ropes flag + WORD STARS_FLAG ;1=Showing stars, 0=Turn off + + WORD PUNCHB_COUNT ;0 <------ + WORD BLOCKB_COUNT ;1 keep | + WORD SPUNCHB_COUNT ;2 ordered| + WORD KICKB_COUNT ;3 | + WORD SKICKB_COUNT ;4 <------ + + WORD USR_VAR1 + WORD USR_VAR2 + + APTR METER_PROC ;Process which handles my GETUP meter + + STRUC DAMAGE_HIST,32*20 ;20 longs of damage history + + WORD FOOT_PCNT ;PCNT at last foot sound + + WORD MY_PAL ;My pal # for when I swap out my pal + WORD SKELETON_PAL ;Skeleton pal for Doink buzzer + + APTR ATTIMG_IMG + APTR ATTIMG_CUR_FRAME + APTR ATTIMG_LAST_FRAME + WORD ATTIMG_ZOFF + + WORD WHACK_CNT ;Whack butns help message display cnt + LONG SPECIAL_MOVE_ADDR ;spec move wdog proc signal + WORD RISK + + WORD DRN_BUT ;Button bits + WORD DRN_BUTDT ;But bits in down transition + WORD DRN_BUTUT ;But bits in up transition + WORD DRN_JOY ;Joystick bits + WORD DRN_JOYDT ;Joy bits in down transition + WORD DRN_JOYUT ;Joy bits in up transition + WORD DRN_DELAY ;Action delay + APTR DRN_ACT_p ;* action script + WORD DRN_MODE ;Mode + + APTR SHADTRAIL_PROC + + WORD DELAY_BUTNS ;Delay reading of buttons after flung + WORD SAFE_TIME ;Delay collisions after getting up + WORD DELAY_METER ;Delay reappearance of getup meter + WORD IMMOBILIZE_TIME ;Immobilize player without meter + WORD COMBO_COUNT ;number of moves done so far in a combo + WORD COMBO_START ;number of moves required to start a combo + + WORD DEBRIS_X ;Used for explosions linked to head + WORD DEBRIS_Y + WORD I_WILL_DIE ;Used in combos to indicate death at end + WORD WALK_FAST ;1=Walk fast powerup on + +****************************************************************************** +* +* PLAYER TYPES + +PTYPE_PLAYER equ 0 +PTYPE_DRONE equ 1 +PTYPE_REFEREE equ -1 + +PSIDE_PLYR1 equ 0 +PSIDE_PLYR2 equ 1 +PSIDE_NONE equ -1 + +****************************************************************************** +* +* PLAYER MODES + +MODE_NORMAL equ 0 +MODE_RUNNING equ 1 +MODE_INAIR equ 2 +MODE_ATTACHED equ 3 +MODE_ONGROUND equ 4 +MODE_BOUNCING equ 5 +MODE_ONTURNBKL equ 6 +MODE_BLOCK equ 7 +MODE_DIZZY equ 8 +MODE_DEAD equ 9 +MODE_OPPOVERHEAD equ 10 +MODE_CLIMBTURNBKL equ 11 +MODE_WAITANIM equ 12 +MODE_GRAPPLE equ 13 +MODE_MASTER equ 14 +MODE_SLAVE equ 15 +MODE_HEADHOLD equ 16 + +MODE_RPT_PUNCH equ 0 ;<-- use +MODE_RPT_KICK equ 0 ;<-- use + +MODE_HEADHELD equ 19 +MODE_PUPPET equ 20 +MODE_INAIR2 equ 21 + +MODE_RPT_SPUNCH equ 0 ;<-- use +MODE_RPT_SKICK equ 0 ;<-- use + +MODE_CHOKEHOLD equ 24 +MODE_CHOKING equ 25 + +****************************************************************************** +* +* ATTACK MODES + + +AMODE_PUNCH equ 0 +AMODE_HDBUTT equ 1 +AMODE_KICK equ 2 +AMODE_FLYKICK equ 3 +AMODE_GRABTHROW equ 4 + +AMODE_UPRCUT equ 5 +AMODE_LBOWDROP equ 6 +AMODE_GRABHOLD equ 7 +AMODE_GRABFLING equ 8 +AMODE_PUSH equ 9 + +;MJT Start 2 +AMODE_URN equ 10 +;MJT End 2 +AMODE_BIGBOOT equ 11 +AMODE_KNEE equ 12 +;MJT Start +AMODE_HDBUTT2 equ 13 +;MJT End +AMODE_BOXPUNCH equ 14 + +AMODE_STOMP equ 15 +AMODE_SPINKICK equ 16 +AMODE_CLINE equ 17 +AMODE_HEADHOLD equ 18 +AMODE_JUMPKICK equ 19 + +AMODE_RUN equ 20 +AMODE_PUPPET equ 21 +AMODE_BACKHAND equ 22 +AMODE_BUZZ equ 23 +AMODE_HAYMAKER equ 24 + +AMODE_BLBOWDROP equ 25 ;Turnbuckle elbow drop +AMODE_BSTOMP equ 26 ;Turnbuckle stomp +AMODE_HEADKNEES equ 27 ;Held by head - knee hits to head + +AMODE_EARSLAP equ 28 ;Mark +AMODE_HAMMER equ 29 + +AMODE_BUTTSTOMP equ 30 +AMODE_PUPPET2 equ 31 +AMODE_PUPPET3 equ 32 +AMODE_TOMB equ 33 +AMODE_BIGKNEE equ 34 ;Mark + +AMODE_SHNBFKIK equ 35 ;Jason +AMODE_SHNSPDKIK equ 36 +AMODE_SHNSPDKIK2 equ 37 +AMODE_HITCHECK equ 38 +AMODE_ARMBREAK equ 39 + +AMODE_BUTTDROP equ 40 +AMODE_ATT41 equ 41 +AMODE_ATT42 equ 42 +AMODE_ATT43 equ 43 +AMODE_HDBUTT_STAY equ 44 + +****************************************************************************** +* +* COLLISION TARGET VALUES + +TGT_HEAD equ 0 +TGT_CHEST equ 1 +TGT_GROIN equ 2 +TGT_KNEES equ 3 +TGT_FEET equ 4 +TGT_USER equ -1 + +****************************************************************************** +* END + + + \ No newline at end of file diff --git a/BACKUP/PROGRESS.ASM b/BACKUP/PROGRESS.ASM new file mode 100644 index 0000000..a01c35d --- /dev/null +++ b/BACKUP/PROGRESS.ASM @@ -0,0 +1,2664 @@ +**************************************************************** +* +* Software: JAKE SIMPSON +* Initiated: 10/17/94 +* +* Modified: +* +* COPYRIGHT (C) 1994 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - +**************************************************************** + .file "progress.asm" + .title "progression screen" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "macros.h" + .include "game.equ" + .include "anim.equ" + .include "audit.equ" + .include "link.equ" + .include "imgtbl.glo" + .include "bgndtbl.glo" + .include "plyr.equ" + .include "ring.equ" + .include "ladder.tbl" + .include "crowdimg.tbl" + .include "miscimg.glo" + + .REF RNDPER + .REF start_credbox + .ref triple_sound + .REF CLEAR_PROCESSES + .ref SPECIAL_WIPEOUT + .REF announcer_sound + .REF DUMRETS + .ref HRT3,RZR3,UND3,YOK3,SHN3,BAM3,DNK3,LEX3 + .REF RNDRNG0 + .REF HALT, dtype, dpageflip + .REF IRQSKYE, WORLDTLX, WORLDTLY + .REF BAKMODS, BGND_UD1 + .REF set_process_ptr + .REF animate_wrestler + .REF animate_wrestler1 + .REF animate_wrestler2 + .REF wrestler_veladd + .REF ani_init + .REF PSTATUS + .REF pal_getf + .REF PCNT + .REF index1, index2 + .ref obj_look + .ref set_images + .ref change_anim1a + .ref change_anim2a + .ref match_time + .ref process_ptrs + .ref hrt_run2_anim + .ref rzr_run2_anim + .ref und_run2_anim + .ref yok_run2_anim + .ref shn_run2_anim + .ref bam_run2_anim + .ref dnk_run2_anim + .ref lex_run2_anim + .ref hrt_torso4_anim + .ref rzr_torso4_anim + .ref und_torso4_anim + .ref yok_torso4_anim + .ref shn_torso4_anim + .ref bam_torso4_anim + .ref dnk_torso4_anim + .ref lex_torso4_anim + .ref hrt_stand4_anim + .ref rzr_stand4_anim + .ref und_stand4_anim + .ref yok_stand4_anim + .ref shn_stand4_anim + .ref bam_stand4_anim + .ref dnk_stand4_anim + .ref lex_stand4_anim + .ref hrt_dizzy_anim + .ref rzr_dizzy_anim + .ref und_dizzy_anim + .ref yok_dizzy_anim + .ref shn_dizzy_anim + .ref bam_dizzy_anim + .ref dnk_dizzy_anim + .ref lex_dizzy_anim + .REF get_all_buttons_cur2 + .ref MAKE_UP_LOGO + .REF GAMSTATE + .ref animate_back + .REF dirqcnt + .REF SNDSND + .REF VINCE_START_GAME + + .REF WHICH_SCREEN,TOP_LEFT,BOT_RIGHT,dma_it_out + .REF SHAKER + .REF OPEN_SCREEN_LINE + + .ref D2ST2B03 + + + + + .DEF PUT_UP_PROGRESS + .DEF DO_FLASH,DO_JASON_CROWD,DO_TONY_CROWD + .DEF DO_VOGEL_CROWD + .DEF OPEN_PROGRESS_SCREEN + .DEF SORT_OUT_WRESTLER_NUM + .DEF CURRENT_LADDER,NUM_OPPS + .DEF RESETUP_PROGRESS + .DEF CLOSE_PROGRESS_SCREEN + .DEF INIT_LADDER_TABLE + .DEF IGNORE_SPECIAL,IGNORE_THIS_PAL + .DEF START_FLASHES + .DEF TEMP_LADDER + .DEF LADDER + + .DEF ANIM_CROWD + .DEF setup_back_anim + + .BSS TEMP_SPEED,32 + .bss CURRENT_LADDER,32 + .BSS LADDER,100*32 + .bss TEMP_LADDER,8*8 + .BSS TEMP_LADDER_END,0 + .BSS SCREEN_SHAKE,32 + .BSS NUM_OPPS,16 + .BSS NUM_OLD_OPPS,16 + .BSS TOP_LEFT_2,32 + .BSS BOT_RIGHT_2,32 + .BSS FUJI_OBJ,32 + .BSS WHICH_PAL,16*9 + .BSS IGNORE_SPECIAL,16 + + +RUN_SPEED .EQU [4,0] + +SCPTR .set 000 ;UHL script pointer (next instruction) +TIME .set 020h ;UHW time to hold +FRAME .set 030h ;UHL current obj +CHEER .set 050h ;UHL cheer jump point +UNUSED .set 070h ;UHW unused + +CANI_GOTO equ 0 + 8000h +CANI_RNDWAIT equ 1 + 8000h +CANI_END equ 2 + 8000H +CANI_CODE EQU 3 + 8000H + +;BLOC_STRUCTURE +B_CTRL .EQU 0 +B_SAG .EQU 020H +B_DAG .EQU 040H +B_SIZE .EQU 060H +B_PAL .EQU 080H +B_REAL_SAG .EQU 0A0H +BLOC_SIZE .EQU 0C0H + +BLOC_TOTAL .EQU 14 +BITS_TOTAL .EQU 40 +P_DELAY .EQU 20 + + .BSS PROG_BLOC_START,BLOC_SIZE*(BLOC_TOTAL+BITS_TOTAL) +BITS_START .EQU PROG_BLOC_START+(BLOC_SIZE*BLOC_TOTAL) + +;PALETTE TYPE FOR BLOCKS TABLE +P_WHICH_PAL .EQU 0 +P_DMA_PAL_VAL .EQU 020H +P_SIZE .EQU 040H +NUM_PAL_BLOC .EQU 8 + + .BSS PAL_BLOC_START,P_SIZE*NUM_PAL_BLOC + .BSS PAL_PNTR,32 + + .TEXT + +IGNORE_THIS_PAL + MMTM SP,A8,A10,A14 + MOVI PAL_BLOC_START,A8 + MOVK NUM_PAL_BLOC,A10 +CHECK_NEXT_PAL + MOVE *A8(P_WHICH_PAL),A14,L + JRZ DO_NEXT_PAL + CMP A0,A14 + JRNE DO_NEXT_PAL + MMFM SP,A8,A10,A14 + SETC + RETS +DO_NEXT_PAL + ADDI P_SIZE,A8 + DSJS A10,CHECK_NEXT_PAL + MMFM SP,A8,A10,A14 + CLRC + RETS + +GET_PAL_BLOC + MMTM SP,A1,A4 + MOVE @PAL_PNTR,A4,L + MOVE *A4(P_WHICH_PAL-P_SIZE),A1,L + CMP A0,A1 + JREQ NO_NEED_TO_RESTORE + MOVE A0,*A4(P_WHICH_PAL),L + calla pal_getf + MOVE A0,*A4(P_DMA_PAL_VAL) + MOVE A4,A0 + ADDI P_SIZE,A4 + MOVE A4,@PAL_PNTR,L + MMFM SP,A1,A4 + RETS +NO_NEED_TO_RESTORE + SUBI P_SIZE,A4 + MOVE A4,A0 + MMFM SP,A1,A4 + RETS + +RESETUP_PROGRESS + MOVI BLAST_OUT_PROGRESS_TRANS,A0 + MOVE A0,@WHICH_SCREEN,L + RETS + +OPEN_PROGRESS_SCREEN + + movk 16,a0 + calla triple_sound + + MOVI P_DELAY,A8 + MOVI 200/P_DELAY,A9 + NEG A9 + +OPEN_ACROSS_MORE + MOVI BLOC_TOTAL,A10 + MOVI PROG_BLOC_START,A2 + CLR A0 + MOVE A0,@BOT_RIGHT_2,L + MOVE A0,@TOP_LEFT_2,L +OPEN_NEXT_BLOC + CALLR MOVE_BLOC + ADDI BLOC_SIZE,A2 + DSJS A10,OPEN_NEXT_BLOC + MOVE @BOT_RIGHT_2,@BOT_RIGHT,L + MOVE @TOP_LEFT_2,@TOP_LEFT,L + SLEEPK 1 + DEC A8 + JRNZ OPEN_ACROSS_MORE + SLEEPK 1 + + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A0 + MOVE A0,@TOP_LEFT,L + MOVE A0,@BOT_RIGHT,L + MOVE A0,@IGNORE_SPECIAL + RETP + +CLOSE_PROGRESS_SCREEN + + CLR A0 + MOVE A0,@SCREEN_SHAKE,L + + MOVI BLAST_OUT_PROGRESS_TRANS,A0 + MOVE A0,@WHICH_SCREEN,L + + MOVI PAL_BLOC_START,A0 + MOVE A0,@PAL_PNTR,L + MOVK 1,A0 + MOVE A0,@IGNORE_SPECIAL + + CALLR INIT_BLOC + + CALLR SETUP_LOGOS + + movk 16,a0 + calla triple_sound + + MOVI P_DELAY,A8 + MOVI 200/P_DELAY,A9 + +MOVE_ACROSS_MORE + MOVI BLOC_TOTAL,A10 + MOVI PROG_BLOC_START,A2 + MOVE @BOT_RIGHT,@BOT_RIGHT_2,L + MOVE @TOP_LEFT,@TOP_LEFT_2,L +MOVE_NEXT_BLOC + CALLR MOVE_BLOC + ADDI BLOC_SIZE,A2 + DSJS A10,MOVE_NEXT_BLOC + MOVE @BOT_RIGHT_2,@BOT_RIGHT,L + MOVE @TOP_LEFT_2,@TOP_LEFT,L + SLEEPK 1 + DEC A8 + JRNZ MOVE_ACROSS_MORE + + movi 0c1h,a0 + calla triple_sound + + CALLR CREATE_BITS + + MOVI SHAKE_TABLE,A8 +SHAKE_IT_BABY + MOVE *A8+,A1,L + JRZ END_SHAKE + MOVE A1,@SCREEN_SHAKE,L + MOVE *A8+,A0,L + CALLA PRCSLP + JRUC SHAKE_IT_BABY +END_SHAKE + CLR A1 + MOVE A1,@SCREEN_SHAKE,L + + SLEEP 45 + + RETP + +SHAKE_TABLE + .LONG [-1,-1],2 + .LONG [2,1],2 + .LONG [-2,0],2 + .LONG [-3,1],2 + .LONG [2,3],2 + .LONG [0,-2],2 + .LONG [-1,-1],2 + .LONG [2,1],2 + .LONG [-2,0],2 + .LONG [-3,1],2 + .LONG [2,3],2 + .LONG [0,-2],2 + .LONG 0 + +BITS_ADDR .EQU PDATA+020H +BITS_ANIM .EQU PDATA+040H +BITS_DELAY .EQU PDATA+060H +BITS_D .EQU 2 + +CREATE_BITS + MOVI BITS_TOTAL,A10 + MOVI BITS_START,A2 + MOVI 080020000H,A3 + MOVI 200,A5 + MOVI 40,B3 +CREATE_NEXT_BIT + MOVE A10,A1 + ANDI 03,A1 + JRNZ RE_USE_OLD_YPOS + MOVE B3,A0 + ADDI 20,B3 + CALLA RNDRNG0 + SLL 16,A0 + MOVE A0,A8 + MOVY A8,A5 +RE_USE_OLD_YPOS + PUSH A10 + MOVI 058000H,A0 + CALLA RNDRNG0 + NEG A0 + MOVE A0,A9 ;Y-VEL + MOVI [200,0],A10 ;XPOS (32 BIT) + MOVI 080000H,A0 + CALLA RNDRNG0 + SUBI 040000H,A0 + MOVE A0,A11 ;X-VEL + CREATE0 MOVE_BITS + MOVE A2,*A0(BITS_ADDR),L + PUSH A0 + + MOVE A5,*A2(B_DAG),L + + MOVI 13,A0 + CALLA RNDRNG0 + SLL 7,A0 + ADDI RANDOM_SPARK_TAB,A0 + MOVE *A0,A1,L + + PUSH A0 + MOVE *A0(040H),A0,L + CALLA GET_PAL_BLOC + MOVE A0,*A2(B_PAL),L + PULL A0 + + MOVE *A1(ISAG),*A2(B_SAG),L + MOVE *A1(ISIZEX),*A2(B_SIZE),L + MOVE *A1(ICTRL),A6 + + SLL 16,A6 + OR A3,A6 + MOVE A6,*A2(B_CTRL),L + + PULL A1 + MOVE *A0(020H),*A1(BITS_ANIM),L + MOVK BITS_D,A0 + MOVE A0,*A1(BITS_DELAY) + + ADDI BLOC_SIZE,A2 + + PULL A10 + DEC A10 + JRNZ CREATE_NEXT_BIT + RETS + +MOVE_BITS + MOVE *A13(BITS_ADDR),A2,L + ADDI GRAVITY-3000H,A9 + ADD A9,A8 + CMPI [255,0],A8 + JRGE KILL_BIT + ADD A11,A10 + MOVE A10,A1 + SRL 16,A1 + MOVY A8,A1 + MOVE A1,*A2(B_DAG),L + + MOVE *A13(BITS_DELAY),A1 + DEC A1 + JRZ WE_ANIM_SPARK + MOVE A1,*A13(BITS_DELAY) + + SLOOP 1,MOVE_BITS + +WE_ANIM_SPARK + MOVE *A13(BITS_ANIM),A1,L +JUMP_BACK + MOVE *A1+,A14 + JRN SPARK_ANIM_JUMP + MOVE A14,*A13(BITS_DELAY) + MOVE *A1+,A14,L + MOVE *A14(ISAG),*A2(B_SAG),L + MOVE A1,*A13(BITS_ANIM),L + SLOOP 1,MOVE_BITS + +SPARK_ANIM_JUMP + MOVE *A1+,A1,L + JRUC JUMP_BACK + +KILL_BIT + CLR A0 + MOVE A0,*A2(B_SAG),L + DIE + +RANDOM_SPARK_TAB + .LONG CHIP1_01,CHIP1_F,CHIP_B_P,0 + .LONG CHIP1_01,CHIP1_B,CHIP_B_P,0 + .LONG CHIP2_01,CHIP2_F,CHIP_B_P,0 + .LONG CHIP2_01,CHIP2_B,CHIP_B_P,0 + .LONG CHIP3_01,CHIP3_F,CHIP_B_P,0 + .LONG CHIP3_01,CHIP3_B,CHIP_B_P,0 + .LONG CHIP4_01,CHIP4_F,CHIP_B_P,0 + .LONG CHIP4_01,CHIP4_B,CHIP_B_P,0 + .LONG CHIP5_01,CHIP5_F,CHIP_B_P,0 + .LONG CHIP5_01,CHIP5_B,CHIP_B_P,0 + .LONG SPKD1_09,SPKD1_ANIM,SPKPRP_P,0 + .LONG SPKD2_09,SPKD2_ANIM,SPKPRP_P,0 + .LONG SPKD4_09,SPKD4_ANIM,SPKPRP_P,0 + .LONG SPKR1_09,SPKR1_ANIM,SPKPRP_P,0 + +BIT_DELAY .EQU 1 + +CHIP1_F + WL BIT_DELAY,CHIP1_01 + WL BIT_DELAY,CHIP1_03 + WL BIT_DELAY,CHIP1_05 + WL BIT_DELAY,CHIP1_07 + WL BIT_DELAY,CHIP1_09 + WL BIT_DELAY,CHIP1_11 + WL BIT_DELAY,CHIP1_13 + WL BIT_DELAY,CHIP1_15 + WL BIT_DELAY,CHIP1_17 + WL BIT_DELAY,CHIP1_19 + WL -1,CHIP1_F + +CHIP1_B + WL BIT_DELAY,CHIP1_19 + WL BIT_DELAY,CHIP1_17 + WL BIT_DELAY,CHIP1_15 + WL BIT_DELAY,CHIP1_13 + WL BIT_DELAY,CHIP1_11 + WL BIT_DELAY,CHIP1_09 + WL BIT_DELAY,CHIP1_07 + WL BIT_DELAY,CHIP1_05 + WL BIT_DELAY,CHIP1_03 + WL BIT_DELAY,CHIP1_01 + WL -1,CHIP1_B + +CHIP2_F + WL BIT_DELAY,CHIP2_01 + WL BIT_DELAY,CHIP2_03 + WL BIT_DELAY,CHIP2_05 + WL BIT_DELAY,CHIP2_07 + WL BIT_DELAY,CHIP2_09 + WL -1,CHIP2_F + +CHIP2_B + WL BIT_DELAY,CHIP2_09 + WL BIT_DELAY,CHIP2_07 + WL BIT_DELAY,CHIP2_05 + WL BIT_DELAY,CHIP2_03 + WL BIT_DELAY,CHIP2_01 + WL -1,CHIP2_B + +CHIP3_F + WL BIT_DELAY,CHIP3_01 + WL BIT_DELAY,CHIP3_03 + WL BIT_DELAY,CHIP3_05 + WL BIT_DELAY,CHIP3_07 + WL BIT_DELAY,CHIP3_09 + WL BIT_DELAY,CHIP3_11 + WL BIT_DELAY,CHIP3_13 + WL BIT_DELAY,CHIP3_15 + WL BIT_DELAY,CHIP3_17 + WL BIT_DELAY,CHIP3_19 + WL -1,CHIP3_F + +CHIP3_B + WL BIT_DELAY,CHIP3_19 + WL BIT_DELAY,CHIP3_17 + WL BIT_DELAY,CHIP3_15 + WL BIT_DELAY,CHIP3_13 + WL BIT_DELAY,CHIP3_11 + WL BIT_DELAY,CHIP3_09 + WL BIT_DELAY,CHIP3_07 + WL BIT_DELAY,CHIP3_05 + WL BIT_DELAY,CHIP3_03 + WL BIT_DELAY,CHIP3_01 + WL -1,CHIP3_B + +CHIP4_F + WL BIT_DELAY,CHIP4_01 + WL BIT_DELAY,CHIP4_03 + WL BIT_DELAY,CHIP4_05 + WL BIT_DELAY,CHIP4_07 + WL BIT_DELAY,CHIP4_09 + WL -1,CHIP4_F + +CHIP4_B + WL BIT_DELAY,CHIP4_09 + WL BIT_DELAY,CHIP4_07 + WL BIT_DELAY,CHIP4_05 + WL BIT_DELAY,CHIP4_03 + WL BIT_DELAY,CHIP4_01 + WL -1,CHIP4_B + +CHIP5_F + WL BIT_DELAY,CHIP5_01 + WL BIT_DELAY,CHIP5_03 + WL BIT_DELAY,CHIP5_05 + WL BIT_DELAY,CHIP5_07 + WL BIT_DELAY,CHIP5_09 + WL BIT_DELAY,CHIP5_11 + WL BIT_DELAY,CHIP5_13 + WL BIT_DELAY,CHIP5_15 + WL BIT_DELAY,CHIP5_17 + WL BIT_DELAY,CHIP5_19 + WL -1,CHIP5_F + +CHIP5_B + WL BIT_DELAY,CHIP5_19 + WL BIT_DELAY,CHIP5_17 + WL BIT_DELAY,CHIP5_15 + WL BIT_DELAY,CHIP5_13 + WL BIT_DELAY,CHIP5_11 + WL BIT_DELAY,CHIP5_09 + WL BIT_DELAY,CHIP5_07 + WL BIT_DELAY,CHIP5_05 + WL BIT_DELAY,CHIP5_03 + WL BIT_DELAY,CHIP5_01 + WL -1,CHIP5_B +SPKD1_ANIM + WL 100,SPKD1_09 + WL -1,SPKD1_ANIM +SPKD2_ANIM + WL 100,SPKD2_09 + WL -1,SPKD2_ANIM +SPKD4_ANIM + WL 100,SPKD4_09 + WL -1,SPKD4_ANIM +SPKR1_ANIM + WL 100,SPKR1_09 + WL -1,SPKR1_ANIM + +NEXT_IN_LADDER + MMTM SP,A2,A3,A4,A14 + ADDI 32,A10 + MOVE *A10,A1,L + MOVE A1,A2 + SRL 24,A2 + SLL 24,A2 + CMPI 01000000H,A2 + JREQ NO_SORT_OPPS + CLR A3 + CLR A4 + MOVX A1,A3 + MOVY A1,A4 + + SLL 24,A1 + SRL 24,A1 + + SRL 8,A3 + + SLL 8,A4 + SRL 24,A4 + + CMPI 4,A1 + JRNE NO_SWAP_SHAWN_A1 + MOVE A1,A14 + MOVE A3,A1 + MOVE A14,A3 +NO_SWAP_SHAWN_A1 + CMPI 02000000H,A2 + JREQ STUFF_SWAPPED + CMPI 4,A3 + JRNE STUFF_SWAPPED + MOVE A3,A14 + MOVE A4,A3 + MOVE A14,A4 + +STUFF_SWAPPED + SLL 8,A3 + SLL 16,A4 + OR A3,A1 + OR A4,A1 + OR A2,A1 + MOVE A1,*A10,L +NO_SORT_OPPS + MOVE A10,@CURRENT_LADDER,L + MMFM SP,A2,A3,A4,A14 + RETS + + +NUM_OF_OPPS + MOVE A1,A3 + SRL 24,A3 + MOVE A3,@NUM_OPPS + RETS + +WE_HAVE_COMPANY + CALLR FIND_LOGO_IMAGE + CALLR INIT_BLOC_STUFF + MOVE *A1(ISIZEY),A3 + MOVI 255,A5 + SUB A3,A5 + SRL 1,A5 + SLL 16,A5 + MOVI 400,A6 + CALLR SETUP_THIS_LOGO_DAG + RETS + +SETUP_LOGOS + + MOVE @index1,a1 + MOVI -200,A6 + MOVE @PSTATUS,A0 + JRZ INDEX_SET_1 + SRL 1,A0 + JRC INDEX_SET_1 + MOVE @index2,a1 + MOVI 400,A6 +INDEX_SET_1 + CALLR FIND_LOGO_IMAGE + CALLR INIT_BLOC_STUFF + MOVE *A1(ISIZEY),A3 + MOVI 255,A5 + SUB A3,A5 + SRL 1,A5 + SLL 16,A5 + CALLR SETUP_THIS_LOGO_DAG + + MOVE @index2,a1 + MOVE @PSTATUS,A0 + JRZ WE_HAVE_COMPANY + CMPI 3,A0 + JREQ WE_HAVE_COMPANY + + CMPI 400,A6 + JREQ SET_A6_TO_MINUS_200 + MOVI 400,A6 + JRUC A6_SET + +SET_A6_TO_MINUS_200 + MOVI -200,A6 +A6_SET + + PUSH A2 + MOVE @NUM_OPPS,A7 + MOVE @CURRENT_LADDER,A10,L + MOVE *A10,A10,L +SLAP_UP_NEXT_LOGO + MOVE A10,A1 + SLL 24,A1 + SRL 24,A1 + CALLR FIND_LOGO_IMAGE + CALLR INIT_BLOC_STUFF + CLR A5 + CALLR SETUP_THIS_LOGO_DAG + SRL 8,A10 + DSJS A7,SLAP_UP_NEXT_LOGO + + MOVI -15,A5 + MOVE @NUM_OPPS,A7 + MOVE @CURRENT_LADDER,A10,L + MOVE *A10,A10,L +SLAP_UP_NEXT_LOGO_DAG_Y + MOVE A10,A1 + SLL 24,A1 + SRL 24,A1 + CALLR FIND_LOGO_IMAGE + MOVE *A1(ISIZEY),A9 + ADD A9,A5 + ADDI 15,A5 + SRL 8,A10 + DSJS A7,SLAP_UP_NEXT_LOGO_DAG_Y + + PULL A2 + + MOVI 255,A11 + SUB A5,A11 + SRL 1,A11 + + MOVE @NUM_OPPS,A7 + MOVE @CURRENT_LADDER,A10,L + MOVE *A10,A10,L +SLAP_UP_NEXT_LOGO_DAG + MOVE A11,*A2(B_DAG+010H) + MOVE A10,A1 + SLL 24,A1 + SRL 24,A1 + CALLR FIND_LOGO_IMAGE + MOVE *A1(ISIZEY),A9 + ADD A9,A11 + ADDI 15,A11 + SRL 8,A10 + ADDI BLOC_SIZE,A2 + DSJS A7,SLAP_UP_NEXT_LOGO_DAG + + RETS + +SETUP_THIS_LOGO_DAG + MOVE *A1(ISIZEX),A3 + MOVI 200,A4 + SUB A3,A4 + SRL 1,A4 + ADD A6,A4 + MOVY A5,A4 + MOVE A4,*A2(B_DAG),L + ADDI BLOC_SIZE,A2 + RETS + +FIND_LOGO_IMAGE + SLL 5,A1 + ADDI LOGO_IMAGE_TABLE,A1 + MOVE *A1,A1,L + RETS + +LOGO_IMAGE_TABLE + .LONG HRT3 + .long RZR3 + .long UND3 + .long YOK3 + .long SHN3 + .long BAM3 + .long DNK3 + .long LEX3 + .long LEX3 +MOVE_BLOC + MOVE *A2(B_SAG),A0,L + JRZ NO_BLOC_TO_MOVE + MOVE *A2(B_DAG),A0 + CMPI 200,A0 + JRLT BLOC_ON_LEFT + NEG A9 + ADD A9,A0 + NEG A9 + MOVE A0,*A2(B_DAG) + MOVI 400,A3 + SUB A0,A3 + NEG A3 + MOVE @BOT_RIGHT_2,A1 + CMP A3,A1 + JRLE NO_NEW_BOT_RIGHT + MOVE A3,@BOT_RIGHT_2 +NO_NEW_BOT_RIGHT + CLR A1 + MOVE *A2(B_SIZE),A3 + ADD A0,A3 + SUBI 400,A3 + JRN NO_SPECIAL_BCTRL + MOVE A3,A1 +NO_SPECIAL_BCTRL + MOVE A1,*A2(B_CTRL) + CMPI 399,A0 + JRGT NOT_OF_LEFT_SCREEN + MOVE *A2(B_CTRL),A1,L + ORI 080000000H,A1 + MOVE A1,*A2(B_CTRL),L + RETS +BLOC_ON_LEFT + MOVE *A2(B_CTRL),A1 + SUB A1,A0 + ADD A9,A0 + MOVE A0,A11 + MOVE *A2(B_SIZE),A1 + ADD A0,A1 + MOVE @TOP_LEFT_2,A3 + CMP A1,A3 + JRGE NO_NEW_TOP_LEFT + MOVE A1,@TOP_LEFT_2 +NO_NEW_TOP_LEFT + MOVE *A2(B_REAL_SAG),A3,L + CLR A1 + MOVE A0,A0 + JRNN NO_SPECIAL_BCTRL2 + NEG A0 + MOVE A0,A1 + MOVE *A2(B_CTRL+010H),A5 + ANDI 7000H,A5 + SRL 12,A5 + MPYU A1,A5 + ADD A5,A3 +NO_SPECIAL_BCTRL2 + ADD A1,A11 + MOVE A11,*A2(B_DAG) + MOVE A1,*A2(B_CTRL) + MOVE *A2(B_SIZE),A4 + CMP A4,A1 + JRGE NOT_OF_LEFT_SCREEN + MOVE A3,*A2(B_SAG),L + MOVE *A2(B_CTRL),A1,L + ORI 080000000H,A1 + MOVE A1,*A2(B_CTRL),L + RETS +NOT_OF_LEFT_SCREEN + MOVE *A2(B_CTRL),A1,L + SLL 1,A1 + SRL 1,A1 + MOVE A1,*A2(B_CTRL),L +NO_BLOC_TO_MOVE + RETS + +INIT_BLOC + MOVI PROG_BLOC_START,A2 + MOVI INIT_BLOC_TAB,A3 + MOVK 10,A4 +INIT_NEXT_BLOC + MOVE *A3+,A1,L + CALLR INIT_BLOC_STUFF + + MOVE *A3+,A0,L + MOVE A0,*A2(B_DAG),L + ADDI BLOC_SIZE,A2 + + DSJS A4,INIT_NEXT_BLOC + + MOVI 44,A4 + CLR A0 +INIT_NEXT_BLOC2 + MOVE A0,*A2(B_SAG),L + MOVE A0,*A2(B_CTRL),L + ADDI BLOC_SIZE,A2 + + DSJS A4,INIT_NEXT_BLOC2 + SUBI 44*BLOC_SIZE,A2 + + RETS + +INIT_BLOC_STUFF + MOVE *A1(ISAG),*A2(B_SAG),L + MOVE *A1(ISAG),*A2(B_REAL_SAG),L + MOVE *A1(ISIZEX),*A2(B_SIZE),L + MOVE *A1(ICTRL),A0,L + SLL 16,A0 + ORI 80020000H,A0 + MOVE A0,*A2(B_CTRL),L + MOVE *A1(ICMAP),A0,L + PUSH A1 + calla GET_PAL_BLOC + PULL A1 + MOVE A0,*A2(B_PAL),L + RETS + +INIT_BLOC_TAB + .LONG CSELBK_A,[0,-204] + .LONG CSELBK_C,[133,-204] + .LONG CSELBK_E,[252,-204] + .LONG CSELBK_B,[0,404] + .LONG CSELBK_D,[133,404] + .LONG CSELBK_F,[252,404] + .LONG CSELBV_A,[0,-4] + .LONG CSELBV_C,[133,-4] + .LONG CSELBV_B,[0,400] + .LONG CSELBV_D,[133,400] + +BLAST_OUT_PROGRESS_TRANS + MOVI BLOC_TOTAL+BITS_TOTAL,A0 + MOVI 01000100H,A5 + MOVI PROG_BLOC_START,A2 +BLAST_NEXT_BLOC + MMFM A2,A8,A9,A10,A11,A12 + ADDI 020H,A2 ;AVOID REAL SAG + MOVE A11,A11 + JRZ IGNORE_BLOCK + MOVE A12,A12 + JRNN IGNORE_BLOCK + MOVE @SCREEN_SHAKE,A1,L + ADD A1,A10 + MOVE *A8(P_DMA_PAL_VAL),A8 + CALLA dma_it_out +IGNORE_BLOCK + DSJS A0,BLAST_NEXT_BLOC + RETS + +************************************** + +SET_IMAGE_AND_FLASH + calla set_images + MOVE @HCOUNT,A0 + ANDI 3,A0 + JRNZ NO_CREATE_RANDOM + CREATE0 RANDOM_FLASHES +NO_CREATE_RANDOM + RETS + +START_FLASHES + MOVI FLASH_PID,A0 + movi -1,a1 + CALLA EXISTP + JRNZ ALREADY_FLASHING + MOVI 18,A8 + CREATE FLASH_PID,SET_GAME_FLASHES +ALREADY_FLASHING + RETS + +SET_GAME_FLASHES + MOVE @PSTATUS,A0 + CMPI 3,A0 + JREQ ALWAYS_DO_FLASH + MOVE @NUM_OPPS,A0 + CMPI 2,A0 + JRGE NO_CREATE_ANY_FLASH +ALWAYS_DO_FLASH + MOVI 500,A0 + CALLA RNDPER + JRLS NO_CREATE_ANY_FLASH +SET_GAME_FLASHES2 + MOVE @HCOUNT,A0 + SRL 1,A0 + JRNC NO_CREATE_RANDOM_G + CREATE0 RANDOM_GAME_FLASHES +NO_CREATE_RANDOM_G + SLEEP 2 + DSJS A8,SET_GAME_FLASHES2 +NO_CREATE_ANY_FLASH + DIE + +RANDOM_GAME_FLASHES + MOVE @WORLDTLY,A0,L + SRA 16,A0 + NEG A0 + ADDI 30,A0 + CALLA RNDRNG0 + PUSH A0 + MOVI 400,A0 + CALLA RNDRNG0 + MOVE @WORLDTLX+010H,A1 + ADD A0,A1 + CMPI 3E8H,A1 + JRLT RANDOM_2 + CMPI 440H,A1 + JRGT RANDOM_2 + MOVI 58H,A1 + MOVE @HCOUNT,A2 + ORI 2,A2 + JRZ NOW_SHIFT_FLASH + NEG A1 +NOW_SHIFT_FLASH + ADD A1,A0 + JRUC RANDOM_2 + +RANDOM_FLASHES + MOVI 200,A0 + CALLA RNDRNG0 + PUSH A0 + MOVI 400,A0 + CALLA RNDRNG0 +RANDOM_2 + PULL A1 + SLL 16,A0 + SLL 16,A1 + MOVI flash1,A2 + MOVI 89,A3 + movi DMAWNZ,a4 ;DMA flags + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJW + + MOVE @GAMSTATE,A0 + CMPI INGAME,A0 + JREQ NO_SOUNDS + MOVI 500,A0 + CALLA RNDPER + JRLS NO_SOUNDS + MOVI 2,A0 + CALLA RNDRNG0 + ADDI 4AH,A0 + MOVE A0,A3 + CALLA triple_sound +NO_SOUNDS + + MOVI FLASH_TYPE_1,A1 + move @HCOUNT,a0 + btst 0,a0 + jrz #1 + MOVI FLASH_TYPE_2,A1 +#1 callr setup_back_anim + JSRP ANIM_CROWD + CALLA DELOBJA8 + DIE + +FLASH_TYPE_1 + WL 2,flash1 + WL 2,flash2 + WL 2,flash3 + WL 2,flash3a + WL 2,flash3 + WL 2,flash2 + WL 2,flash1 + + .WORD CANI_END + +FLASH_TYPE_2 + WL 2,flash1 + WL 2,flash4 + WL 1,flash5 + WL 1,flash6 + WL 1,flash5 + WL 2,flash4 + + .WORD CANI_END + +setup_back_anim + MOVE A13,A4 + ADDI PDATA,A4 + MOVE A1,*A4(SCPTR),L + MOVK 1,A1 + MOVE A1,*A4(TIME) + CALLA animate_back + MOVE *A4(FRAME),A0,L + JRUC ANIBOBJ_B + +DO_FLASH + MMTM SP,A0,A1,A7,A8 + MOVE @GAMSTATE,A8 + CMPI INPREGAME,A8 + JRNE NO_DO_THIS + MOVE A0,A8 + CREATE0 DO_CROWD_FLASH +NO_DO_THIS + MMFM SP,A0,A1,A7,A8 + RETS + +DO_CROWD_FLASH + + MOVE *A8(OYPOS),A0 + SUBI 250,A0 + MOVE A0,*A8(OYPOS) + MOVI 80,A0 + CALLA RNDRNG0 + INC A0 + CALLA PRCSLP + + MOVI CROWD_FLASH_ANIM,A1 + callr setup_back_anim + + MOVE *A8(OYPOS),A0 + ADDI 250,A0 + MOVE A0,*A8(OYPOS) + JSRP ANIM_CROWD + JAUC DO_CROWD_FLASH + +ANIM_CROWD + SLEEPK 1 + MOVE A13,A4 + ADDI PDATA,A4 + CALLA animate_back + JRN EXIT_ANIM_CROWD + JRNZ ANIM_CROWD + MOVE *A4(FRAME),A0,L + MOVE A0,A10 + CALLA ANIBOBJ_B + JRUC ANIM_CROWD +EXIT_ANIM_CROWD + RETP + +ANIBOBJ_B + MOVE *A8(OFLAGS),A1 + ANDI 0FFFFH-M_BOBJ,A1 + MOVE A1,*A8(OFLAGS) + + move *a8(OCTRL),a1,W + + PUSH a2,a3,a4,a5 + + cmpi ROM,a0 + jrlo #anierr + + move *a0(IANIOFFX),a4,W + move A4,*a8(ODXOFF),W + + move *a0(IANIOFFY),a4,W + move A4,*a8(ODYOFF),W + + move a0,a2 + move a1,a3 + + move a2,*a8(OIMG),L + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + movb *a2(ICTRL+7),*a8(OCTRL+7) ;Write z comp & bpp bits + + setf 6,0,0 + move a3,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + +#x PULL a2,a3,a4,a5 + rets + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,2 + .endif + jruc #x + + +CROWD_FLASH_ANIM + WL 1,FLASH2 + WL 2,FLASH1 + WL 1,FLASH2 + .WORD CANI_END + +DO_JASON_CROWD + MMTM SP,A0,A1,A7,A8 + MOVE @GAMSTATE,A8 + CMPI INPREGAME,A8 + JRNE JASON_NO_DO_THIS + MOVE A0,A8 + CREATE0 DO_JASON_CROWD_MOVE +JASON_NO_DO_THIS + MMFM SP,A0,A1,A7,A8 + RETS + +DO_JASON_CROWD_MOVE + MOVI 80,A0 + CALLA RNDRNG0 + INC A0 + CALLA PRCSLP + + MOVI JASON_CROWD_ANIM1,A1 + MOVE @dirqcnt,A0 + SRL 1,A0 + JRNC JASON_CROWD_SET + MOVI JASON_CROWD_ANIM2,A1 + +JASON_CROWD_SET + callr setup_back_anim + + JSRP ANIM_CROWD + JAUC DO_JASON_CROWD_MOVE + +JASON_CROWD_ANIM1 + WL 5,JASONCRD1 + WL 5,JASONCRD2 + WL 5,JASONCRD3 + WL 6,JASONCRD4 + WL 10,JASONCRD5 + WL 5,JASONCRD1 + .WORD CANI_END + +JASON_CROWD_ANIM2 + WL 5,JASONCRD1 + WL 5,JASONCRD2 + WL 5,JASONCRD3 + WL 6,JASONCRD4 + WL 10,JASONCRD5 + WL 6,JASONCRD4 + WL 6,JASONCRD3 + WL 6,JASONCRD4 + WL 10,JASONCRD5 + WL 5,JASONCRD1 + .WORD CANI_END + + +DO_TONY_CROWD + MMTM SP,A0,A1,A7,A8 + MOVE @GAMSTATE,A8 + CMPI INPREGAME,A8 + JRNE TONY_NO_DO_THIS + MOVE A0,A8 + CREATE0 DO_TONY_CROWD_MOVE +TONY_NO_DO_THIS + MMFM SP,A0,A1,A7,A8 + RETS + +DO_TONY_CROWD_MOVE + MOVI 80,A0 + CALLA RNDRNG0 + INC A0 + CALLA PRCSLP + + MOVI TONY_CROWD_ANIM1,A1 + MOVE @dirqcnt,A0 + SRL 1,A0 + JRNC TONY_CROWD_SET + MOVI TONY_CROWD_ANIM2,A1 + +TONY_CROWD_SET + callr setup_back_anim + + JSRP ANIM_CROWD + JAUC DO_TONY_CROWD_MOVE + +TONY_CROWD_ANIM1 + WL 5,TONYCRD1 + WL 5,TONYCRD2 + WL 5,TONYCRD3 + WL 6,TONYCRD4 + WL 10,TONYCRD5 + WL 6,TONYCRD2 + WL 5,TONYCRD1 + .WORD CANI_END + +TONY_CROWD_ANIM2 + WL 5,TONYCRD1 + WL 5,TONYCRD2 + WL 5,TONYCRD3 + WL 6,TONYCRD4 + WL 10,TONYCRD5 + WL 6,TONYCRD4 + WL 6,TONYCRD3 + WL 6,TONYCRD4 + WL 10,TONYCRD5 + WL 6,TONYCRD2 + WL 5,TONYCRD1 + .WORD CANI_END + +DO_VOGEL_CROWD + MMTM SP,A0,A1,A7,A8 + MOVE @GAMSTATE,A8 + CMPI INPREGAME,A8 + JRNE VOGEL_NO_DO_THIS + MOVE A0,A8 + CREATE0 DO_VOGEL_CROWD_MOVE +VOGEL_NO_DO_THIS + MMFM SP,A0,A1,A7,A8 + RETS + +DO_VOGEL_CROWD_MOVE + MOVI 80,A0 + CALLA RNDRNG0 + INC A0 + CALLA PRCSLP + + MOVI VOGEL_CROWD_ANIM1,A1 + MOVE @dirqcnt,A0 + SRL 1,A0 + JRNC VOGEL_CROWD_SET + MOVI VOGEL_CROWD_ANIM2,A1 + +VOGEL_CROWD_SET + callr setup_back_anim + + JSRP ANIM_CROWD + JAUC DO_VOGEL_CROWD_MOVE + +VOGEL_CROWD_ANIM1 + WL 5,VOGEL1 + WL 5,VOGEL2 + WL 5,VOGEL3 + WL 10,VOGEL4 + WL 6,VOGEL2 + WL 5,VOGEL1 + .WORD CANI_END + +VOGEL_CROWD_ANIM2 + WL 5,VOGEL1 + WL 5,VOGEL2 + WL 6,VOGEL3 + WL 10,VOGEL4 + WL 6,VOGEL3 + WL 6,VOGEL2 + WL 6,VOGEL3 + WL 10,VOGEL4 + WL 6,VOGEL3 + WL 5,VOGEL2 + WL 5,VOGEL1 + .WORD CANI_END + + + +;************************************************************************** +;* * +;* This table is set up to determine where two or three player * +;* matches take place in the game. It is in the format of * +;* .word x,y * +;* where x=number of places in the table to put y(where y is * +;* the number of opponents to fight). For example * +;* .word 10,2 * +;* would set the next ten consecutive places in the table to * +;* have two opponents * +;* * +;************************************************************************** +LADDER_TABLE + .word 5,1 + .word 3,2 + .word 2,3 + .word 5,1 + .word 2,2 + .word 5,1 + .word 2,2 + .word 5,1 + .word 2,2 + .word 5,1 + .word 2,2 + .word 5,1 + .word 2,2 + .word 5,1 + .word 2,2 + .word 5,1 + .word 2,2 + .word 5,1 + .word 2,2 + .word 5,1 + .word 2,2 + .word 5,1 + .word 2,2 + .WORD -1 + +;************************************************************************** +;* * +;* Each entry in the ladder table is in the format of a long * +;* word, OP4|OP3|OP2|OP1. OP1 is the wrestler number for * +;* opponent 1, OP2 would be the second nybble and would be * +;* the wrestler number for opponent 2. If zero, it will stop * +;* producing opponents. The table is generated randomly for * +;* each NEW game started from the ATTRACT MODE. When it is * +;* generated, it will randomly place the 8 wrestlers in order and then * +;* distribute them through the list. * +;* * +;************************************************************************** +INIT_LADDER_TABLE + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14 + CALLR INIT_LADDER + MOVI LADDER,A6 + MOVE A6,@CURRENT_LADDER,L + CALLR INIT_TEMP_TABLE + CALLR RANDOMIZE_ORDER + MOVI LADDER_TABLE,A7 +NEXT_BIT_OF_TABLE + MOVE *A7+,A8 + JRN WE_DONE_ALL_TABLE + MOVE *A7+,A9 +DO_ALL_THESE_PARTS + MOVE A9,A10 + MOVB A10,*A6(24) + + CALLR FETCH_NEXT_OPPONENT + MOVB A11,*A6 + DEC A10 + JRZ DONE_THIS_ENTRY + + CALLR FETCH_NEXT_OPPONENT + MOVB A11,*A6(8) + DEC A10 + JRZ DONE_THIS_ENTRY + + CALLR FETCH_NEXT_OPPONENT + MOVB A11,*A6(16) + +DONE_THIS_ENTRY + + ADDI 32,A6 + DSJS A8,DO_ALL_THESE_PARTS + JRUC NEXT_BIT_OF_TABLE + +WE_DONE_ALL_TABLE + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14 + RETS + +FETCH_NEXT_OPPONENT + MOVB *A2,A11 + ADDI 8,A2 + CMPI TEMP_LADDER_END,A2 + JREQ RANDOMIZE_ORDER + RETS + +INIT_LADDER + MOVI 100,A1 + MOVI LADDER,A6 + CLR A2 +CLEAR_ALL_TABLE + MOVE A2,*A6+,L + DSJS A1,CLEAR_ALL_TABLE + RETS + +INIT_TEMP_TABLE + MOVK 8,A1 + MOVI TEMP_LADDER,A2 +INIT_NEXT_TEMP_TABLE + DEC A1 + MOVB A1,*A2 + INC A1 + ADDI 8,A2 + DSJS A1,INIT_NEXT_TEMP_TABLE + RETS + +RANDOMIZE_ORDER + MOVI TEMP_LADDER,A2 + MOVK 7,A10 +RANDOMIZE_NEXT_ENTRY + MOVE A10,A0 + CALLA RNDRNG0 + MOVE A0,A3 + SLL 3,A3 + ADD A2,A3 + MOVB *A2,A14 + MOVB *A3,*A2 + MOVB A14,*A3 + ADDI 8,A2 + DEC A10 + JRNN RANDOMIZE_NEXT_ENTRY + MOVI TEMP_LADDER,A2 + RETS + + +DO_SET_IMAGE_AND_FLASH + CALLA BGND_UD1 + CALLA SET_IMAGE_AND_FLASH + SLOOP 1,DO_SET_IMAGE_AND_FLASH + +PUT_UP_PROGRESS + + calla SPECIAL_WIPEOUT + CALLA CLEAR_PROCESSES + + movi 2056,a3 + calla SNDSND + + CREATE0 VINCE_START_GAME + + clr a0 + move a0,@HALT + + move a0,@dtype ;2d mode + move a0,@IRQSKYE + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + movi #PROGRESS_BMOD,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + calla start_credbox + + movk 10,a0 + move a0,@match_time + + MOVE @CURRENT_LADDER,A10,L + + CMPI LADDER,A10 + JRLE NO_DEAD_BODIES + + MOVE *A10,A1,L + CALLR NUM_OF_OPPS + MOVE A3,@NUM_OLD_OPPS + + MOVE *A10,A4,L + MOVK 4,A10 +CREATE_NEXT_DEAD_GUY + CALLR SORT_OUT_WRESTLER_NUM + movi PTYPE_DRONE,a8 ;player type + movi PSIDE_PLYR1,a9 ;side on + SCREATE WMAIN_PID,CREATE_TEMP_WRESTLER + SRL 8,A4 + INC A10 + DEC A3 + JRNZ CREATE_NEXT_DEAD_GUY + + MOVE @CURRENT_LADDER,A10,L + +NO_DEAD_BODIES + CALLR NEXT_IN_LADDER + CALLR NUM_OF_OPPS + + movi PTYPE_DRONE,a8 ;player type + movi PSIDE_PLYR1,a9 ;side on + clr a10 + move @index1,a11 ;wrestler + MOVE @PSTATUS,A0 + SRL 1,A0 + JRC INDEX_SET + move @index2,a11 ;wrestler +INDEX_SET + PUSH A11 + SCREATE WMAIN_PID,CREATE_TEMP_WRESTLER + PULL A11 + + SLL 4,A11 + ADDI WHICH_MUSIC,A11 + MOVE *A11,A3 + calla SNDSND + + MOVE @NUM_OPPS,A3 + MOVE @CURRENT_LADDER,A10,L + MOVE *A10,A4,L + MOVK 1,A10 +CREATE_NEXT_NEW_GUY + CALLR SORT_OUT_WRESTLER_NUM + movi PTYPE_DRONE,a8 ;player type + movi PSIDE_PLYR1,a9 ;side on + SCREATE WMAIN_PID,CREATE_TEMP_WRESTLER + SRL 8,A4 + INC A10 + DEC A3 + JRNZ CREATE_NEXT_NEW_GUY + + CALLR SET_IMAGE_AND_FLASH + + CREATE0 DO_SET_IMAGE_AND_FLASH + PUSHP A0 + movk 15,a8 + movk 4,a9 + NEG A9 + JSRP OPEN_SCREEN_LINE + PULLP A0 + CALLA KILL + + MOVI RUN_SPEED,A0 + MOVE A0,@TEMP_SPEED,L + + PUSH A13 + MOVE @process_ptrs,a13,L + movi running_addr,a2 + callr start_them_doing_stuff + PULL A13 + + MOVI RUN_SPEED,A9 + MOVI 100,A8 +MOVE_PROGRESS + calla BGND_UD1 ;create objects for background + pushp a8,A9 + CALLR SET_IMAGE_AND_FLASH + pullp a8,A9 + CALLR SET_SCROLL_SPEED + SLEEPK 1 + DEC A8 + JRNN MOVE_PROGRESS + + PUSH A13 + + MOVE @process_ptrs+020h,a13,L + movi clever_addr,a2 + callr start_them_doing_stuff + + MOVE @process_ptrs+040h,a13,L + jrz no_other_players + movi clever_addr,a2 + callr start_them_doing_stuff + + MOVE @process_ptrs+060h,a13,L + jrz no_other_players + movi clever_addr,a2 + callr start_them_doing_stuff +no_other_players + + PULL A13 + + MOVI 120,A8 +STILL_PROGRESS + SLEEPK 1 + pushp a8 + CALLR SET_IMAGE_AND_FLASH + pullp a8 + CALLA get_all_buttons_cur2 + JRNZ EXIT_PROGRESS + CMPI 100,A8 + JRNE NO_START_TAUNTS + PUSH A13 + MOVE @process_ptrs,a13,L + movi taunting_addr,a2 + callr start_them_doing_stuff + PULL A13 +NO_START_TAUNTS + DEC A8 + JRNN STILL_PROGRESS + +EXIT_PROGRESS + + CREATE0 DO_SET_IMAGE_AND_FLASH + PUSHP A0 + JSRP CLOSE_PROGRESS_SCREEN + PULLP A0 + CALLA KILL + + RETP + +WHICH_MUSIC + .word 5,2,1,7,6,4,8,0,3 + +SORT_OUT_WRESTLER_NUM + MOVE A4,A11 + SLL 24,A11 + SRL 24,A11 + CMPI 7,A11 + JRNE NO_AVOID_UNUSED_WRESTLER + INC A11 +NO_AVOID_UNUSED_WRESTLER + RETS + +SET_SCROLL_SPEED + MOVE A8,A0 + CMPI 16,A0 + JRGT NO_CHANGE_SCROLL_SPEED + ABS A0 + SUBI 16,A0 + NEG A0 + SRL 2,A0 + SLL 15,A0 + MOVI RUN_SPEED,A9 + SUB A0,A9 + clr a0 + MOVE A0,@TEMP_SPEED,L + PUSH A13 + MOVE @process_ptrs,a13,L + movi standing_addr,a2 + callr start_them_doing_stuff + PULL A13 +NO_CHANGE_SCROLL_SPEED + MOVE A9,A5 + CALLA get_all_buttons_cur2 + JRZ NO_BUTTONS2 + SLL 1,A5 + DEC A8 +NO_BUTTONS2 + MOVE @WORLDTLX,A4,L + ADD A5,A4 + move a4,@WORLDTLX,L + RETS + +#PROGRESS_BMOD + .long LADDERBMOD + .word -60,-45 + .long 0 + +CREATE_TEMP_WRESTLER + + move a8,*a13(PLYR_TYPE) + move a9,*a13(PLYR_SIDE) + move a10,*a13(PLYRNUM) + move a11,*a13(WRESTLERNUM) + + movi 112,a0 + move a0,*a13(OBJ_PRIORITY) + + move a10,a1 + calla set_process_ptr + + move a10,a0 + X32 a0 + addi obj_look,a0 + move *a0,a0,L ;* start of objects + move a0,*a13(OBJ_BASE),L + move a0,a10 + addi 32*MAX_PIECES,a10 ;start at end to reverse priorities + + clr a1 ;y pos + movi D2ST2B03,a2 ;* image + movi 110,a3 ;z pos + movi DMAWNZ|M_3D,a4 ;DMA flags + move a4,*a13(OBJ_CONTROL) + movi CLSPLYR | TYPPLYR,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + + move a13,b0 + move *b0(WRESTLERNUM),b0 + X32 b0 + + movk MAX_PIECES,a9 + +#nopal_chng + + addi #wrestler_pal,b0 + move *b0,b0,L ;* palette + +#nxt_obj + PUSH b0 + calla BEGINOBJP + PULL b0 + move a8,-*a10,L + dsj a9,#nxt_obj + + calla BEGINOBJP + move a8,*a13(ATTIMG_IMG),L + clr a0 + move a0,*a13(ATTIMG_CUR_FRAME),L + move a0,*a13(ATTIMG_LAST_FRAME),L + + move *a8(OPAL),a0 + move a0,*a13(OBJ_PAL) + + movi shadow_p,a0 + + calla pal_getf + move *a13(OBJ_BASE),a8,L + move *a8,a8,L ;1st object + move a0,*a8(OPAL) ;set palette for shadow + + CLR A0 + move a0,*a13(GROUND_Y) + + clr a0 +;MJT Start +; move a0,*a13(BURNOUT_COUNT) +;MJT End + move a0,*a13(INRING) + + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_YVEL),L + move a0,*a13(OBJ_ZVEL),L + + move *a13(PLYRNUM),a0 + JRZ RUNNING_MAN + CMPI 4,A0 + JRGE DEAD_BODIES + + MOVI 8,A0 + MOVE A0,*A13(FACING_DIR) + MOVE A0,*A13(NEW_FACING_DIR) + + MOVE @NUM_OPPS,A0 + SLL 5,A0 + ADDI WHICH_ZPOS_TABLE-020H,A0 + MOVE *A0,A0,L + move *a13(PLYRNUM),A1 + DEC A1 + SLL 6,A1 + ADD A0,A1 + MOVE *A1,A0,L + MOVE A0,*A13(OBJ_ZPOS),L + MOVE *A1(020H),A0,L + ADDI [375,0],A0 + MOVE A0,*A13(OBJ_XPOS),L + movi 100,a0 + move a0,*A13(OBJ_YPOS),L + + movi waiting_addr,a2 + callr start_them_doing_stuff + + move @PCNT,a14 + move a14,*a13(FOOT_PCNT),W ;init foot timer + +#loop1 + calla wrestler_veladd + + calla animate_wrestler + + SLOOP 1,#loop1 + +WHICH_ZPOS_TABLE + .LONG ONLY_ONE_OPP + .LONG TWO_OPPS + .LONG THREE_OPPS + +ONLY_ONE_OPP + .LONG [470H,0],[300,0] +TWO_OPPS + .LONG [490H,0],[330,0] + .LONG [450H,0],[280,0] +THREE_OPPS + .LONG [4A0H,0],[345,0] + .LONG [470H,0],[300,0] + .LONG [440H,0],[255,0] + +WHICH_ZPOS_TABLE_D + .LONG ONLY_ONE_OPP_D + .LONG TWO_OPPS_D + .LONG THREE_OPPS_D + +ONLY_ONE_OPP_D + .LONG [450H,0],[300,0] +TWO_OPPS_D + .LONG [490H,0],[330,0] + .LONG [450H,0],[280,0] +THREE_OPPS_D + .LONG [4B0H,0],[345,0] + .LONG [490H,0],[300,0] + .LONG [440H,0],[255,0] + +DEAD_BODIES + MOVI 8,A0 + MOVE A0,*A13(FACING_DIR) + MOVE A0,*A13(NEW_FACING_DIR) + + CLR A0 + MOVE A0,*A13(STARS_FLAG) + + movi 100,a0 + move a0,*A13(OBJ_YPOS),L + + MOVE @NUM_OLD_OPPS,A0 + SLL 5,A0 + ADDI WHICH_ZPOS_TABLE_D-020H,A0 + MOVE *A0,A0,L + move *a13(PLYRNUM),A1 + SUBI 4,A1 + SLL 6,A1 + ADD A0,A1 + MOVE *A1,A0,L + MOVE A0,*A13(OBJ_ZPOS),L + MOVE *A1(020H),A0,L + MOVE A0,*A13(OBJ_XPOS),L + + movi dead_addr,a2 + callr start_them_doing_stuff + + move @PCNT,a14 + move a14,*a13(FOOT_PCNT),W ;init foot timer +#loop2 + calla animate_wrestler + + SLOOP 1,#loop2 + +RUNNING_MAN + MOVI 4,A0 + MOVE A0,*A13(FACING_DIR) + MOVE A0,*A13(NEW_FACING_DIR) + + movi standing_addr,a2 + callr start_them_doing_stuff + + move @PCNT,a14 + move a14,*a13(FOOT_PCNT),W ;init foot timer + + movi 100,a0 + move a0,*A13(OBJ_YPOS),L + MOVI [470h,0],A0 + MOVE A0,*A13(OBJ_ZPOS),L + MOVI [140,0],A0 + MOVE A0,*A13(OBJ_XPOS),L + CLR A0 + MOVE A0,@TEMP_SPEED,L + +#loop + MOVE @TEMP_SPEED,A3,L + CALLA get_all_buttons_cur2 + JRZ #NO_BUTTONS + SLL 1,A3 +#NO_BUTTONS + move a3,*a13(OBJ_XVEL),L + + calla wrestler_veladd + + calla animate_wrestler + + SLOOP 1,#loop + +#wrestler_pal + .long HRTPNK_P ;0 (Bret) + .long RZRGRN_P ;1 (Razor) + .long UNDBLK_P ;2 (Taker) + .long YOKRED_P ;3 (Yoko) + .long SHNRED_P ;4 (Shawn) + .long BAMBLU_P ;5 (Bam Bam) + .long DNKBLU_P ;6 (Doink) + .long DNKBLU_P ;7 (spare) + .long LEXWHT_P ;8 (Lex) + .long 0 ;9 (Referee) + +start_them_doing_stuff + movi 100h,a0 + move a0,*a13(ANI_SPEED) ;normal speed animations + + move *a13(WRESTLERNUM),a1 + SLL 6,a1 + add a2,a1 + move *a1+,a0,L + push a1 + calla change_anim1a + pull a1 + move *a1+,a0,L + calla change_anim2a + rets + +taunting_addr + .long hrt_taunt4_anim + .long hrt_torso4_anim + .long rzr_taunt4_anim + .long rzr_torso4_anim + .long und_taunt4_anim + .long und_torso4_anim + .long yok_taunt4_anim + .long yok_torso4_anim + .long shn_taunt4_anim + .long shn_torso4_anim + .long bam_taunt4_anim + .long bam_torso4_anim + .long dnk_taunt4_anim + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_taunt4_anim + .long lex_torso4_anim + .long 0,0 ;9 Referee + +standing_addr + .long hrt_stand4_anim + .long hrt_torso4_anim + .long rzr_stand4_anim + .long rzr_torso4_anim + .long und_stand4_anim + .long und_torso4_anim + .long yok_stand4_anim + .long yok_torso4_anim + .long shn_stand4_anim + .long shn_torso4_anim + .long bam_stand4_anim + .long bam_torso4_anim + .long dnk_stand4_anim + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_stand4_anim + .long lex_torso4_anim + .long 0,0 ;9 Referee + +dead_addr + .long hrt_dizzy_anim + .long hrt_torso4_anim + .long rzr_dizzy_anim + .long rzr_torso4_anim + .long und_dizzy_anim + .long und_torso4_anim + .long yok_dizzy_anim + .long yok_torso4_anim + .long shn_dizzy_anim + .long shn_torso4_anim + .long bam_dizzy_anim + .long bam_torso4_anim + .long dnk_dizzy_anim + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_dizzy_anim + .long lex_torso4_anim + .long 0,0 ;9 Referee + +running_addr + .long hrt_run2_anim ;0 Bret Hart + .long hrt_torso4_anim + .long rzr_run2_anim ;1 Razor Ramon + .long rzr_torso4_anim + .long und_run2_anim ;2 Undertaker + .long und_torso4_anim + .long yok_run2_anim ;3 Yokozuna + .long yok_torso4_anim + .long shn_run2_anim ;4 Shawn Michaels + .long shn_torso4_anim + .long bam_run2_anim ;5 Bam Bam + .long bam_torso4_anim + .long dnk_run2_anim ;6 Doink + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_run2_anim ;8 Lex Luger + .long lex_torso4_anim + .long 0,0 ;9 Referee + +clever_addr + .long hrt_clever_anim ;0 Bret Hart + .long hrt_torso4_anim + .long rzr_clever_anim ;1 Razor Ramon + .long rzr_torso4_anim + .long und_clever_anim ;2 Undertaker + .long und_torso4_anim + .long yok_clever_anim ;3 Yokozuna + .long yok_torso4_anim + .long shn_clever_anim ;4 Shawn Michaels + .long shn_torso4_anim + .long bam_clever_anim ;5 Bam Bam + .long bam_torso4_anim + .long dnk_clever_anim ;6 Doink + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_clever_anim ;8 Lex Luger + .long lex_torso4_anim + .long 0,0 ;9 Referee + +waiting_addr + .long hrt_wait_anim ;0 Bret Hart + .long hrt_torso4_anim + .long rzr_wait_anim ;1 Razor Ramon + .long rzr_torso4_anim + .long und_wait_anim ;2 Undertaker + .long und_torso4_anim + .long yok_wait_anim ;3 Yokozuna + .long yok_torso4_anim + .long shn_wait_anim ;4 Shawn Michaels + .long shn_torso4_anim + .long bam_wait_anim ;5 Bam Bam + .long bam_torso4_anim + .long dnk_wait_anim ;6 Doink + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_wait_anim ;8 Lex Luger + .long lex_torso4_anim + .long 0,0 ;9 Referee + + .ref B4RS4A + .ref Y4CO4D,Y4ST4Y + .ref D4CO4A + .ref U4CO4B + .ref S4CO4A + .ref R4CO4A + .ref L4CO4Z + .ref L4ST4A + .ref H4SL4C + .ref B4SW4B + + .ref H4LD4A,R4LD4A,U4LD4A,Y4LD4A,S4LD4A + .ref B4RS4A,D4SQ4A,L4SW5A + +hrt_wait_anim + .WORD ANI_XFLIP + WL 100,H4LD4A+FR1 + .word ANI_END +rzr_wait_anim + WL 100,R4LD4A+FR1 + .word ANI_END +und_wait_anim + .WORD ANI_XFLIP + WL 100,U4LD4A+FR1 + .word ANI_END +yok_wait_anim + WL ANI_CODE,CREATE_FUJI + .WORD ANI_XFLIP + WL 100,Y4ST4Y+FR2 + .word ANI_END +shn_wait_anim + WL 100,S4LD4A+FR1 + .word ANI_END +bam_wait_anim + .WORD ANI_OFFSET,-800,0,0 + WL 100,B4RS4A+FR1 + .word ANI_END +dnk_wait_anim + WL 100,D4SQ4A+FR1 + .word ANI_END +lex_wait_anim + WL 100,L4SW5A+FR2 + .word ANI_END + +hrt_clever_anim + WL 6,H4LD4A+FR1 + WL 6,H4LD4A+FR2 + WL 6,H4LD4A+FR3 + WL 6,H4LD4A+FR4 + WL 6,H4LD4A+FR5 + WL 6,H4LD4A+FR6 + .word ANI_END +rzr_clever_anim + WL 6,R4LD4A+FR1 + WL 6,R4LD4A+FR2 + WL 6,R4LD4A+FR3 + WL 6,R4LD4A+FR4 + WL 6,R4LD4A+FR5 + WL 6,R4LD4A+FR6 + WL 6,R4LD4A+FR7 + WL 6,R4LD4A+FR2 + .word ANI_END +und_clever_anim +; .WORD ANI_XFLIP + WL 6,U4LD4A+FR1 + WL 6,U4LD4A+FR2 + WL 6,U4LD4A+FR3 + WL 6,U4LD4A+FR4 + WL 6,U4LD4A+FR5 + WL 6,U4LD4A+FR6 + WL 6,U4LD4A+FR7 + WL 6,U4LD4A+FR8 + WL ANI_CODE,CREATE_URN + .word ANI_END +yok_clever_anim + WL ANI_CODE,DO_FUJI + WL 20,Y4ST4Y+FR2 + WL 5,Y4LD4A+FR1 + WL 5,Y4LD4A+FR2 + WL 5,Y4LD4A+FR3 + WL 5,Y4LD4A+FR4 + WL 5,Y4LD4A+FR5 + WL 5,Y4LD4A+FR6 + .word ANI_END +shn_clever_anim + WL 6,S4LD4A+FR1 + WL 6,S4LD4A+FR2 + WL 6,S4LD4A+FR3 + WL 6,S4LD4A+FR4 + WL 6,S4LD4A+FR5 + WL 6,S4LD4A+FR6 + WL 45,S4LD4A+FR7 + WL 6,S4LD4A+FR10 + .word ANI_END + +bam_clever_anim + .WORD ANI_XFLIP + .WORD ANI_OFFSET,800,0,0 + .word ANI_SETMODE,MODE_NOSHADOW + WL ANI_CODE,BAM_RISE_SOUND + WL 6,B4RS4A+FR1 + WL 6,B4RS4A+FR2 + WL 6,B4RS4A+FR3 + WL 6,B4RS4A+FR4 + .word ANI_SETMODE,MODE_NORMAL + WL 6,B4RS4A+FR5 + WL 6,B4RS4A+FR6 + +;Send smoke puffs off from bam bam! + WL ANI_CODE,start_smoke + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL ANI_CHANGEANIM,bam_stand4_anim + +BAM_RISE_SOUND + movi 41h,a0 + CALLA triple_sound + RETS + +start_smoke +;10% of time put smoke on bam bam + movi 100,a0 + .ref RNDPER + calla RNDPER + jrls #out + move a13,a10 + CREATE0 body_smoke +#out + rets + +#******************************* +* Smoke trail (Process) +* A10=*wrestler proc + +body_smoke + + clr a11 + movk 3,a11 +#lp CREATE0 smokepuff +;Need an explosion sound + SLEEPK 3 + inc a11 + cmpi 17,a11 + jrlt #lp + + DIE + +#******************************* +* Smoke trail puff (Process) +* A10=*wrestler proc + +smokepuff + + move *a10(OBJ_ZPOSINT),a3 + movk 3,a0 + calla RNDRNG0 +; subk 2,a0 + add a0,a3 ;-2 to 1 +; addk 16,a3 + ori 1000h,a3 + + movk 3,a0 + calla RNDRNG0 + sll 5,a0 ;*32 + addi smoke_t,a0 + move *a0,a9,L + + movi 30000h,a0 + calla RNDRNG0 + subi 18000h,a0 + move a0,a6 + +; movi [1,8000h],a6 + + movi 20000h,a0 + calla RNDRNG0 + addi 6000h,a0 + neg a0 + move a0,a7 +; movi [-2,0],a7 + + move a11,a14 +; sll 4,a14 +; addi #x_tbl,a14 +; move *a14,a1 + + + movk 30,a0 + calla RNDRNG0 + subk 15,a0 + move a0,a1 + + move *a10(OBJ_XPOSINT),a0 + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip +; neg a6 + neg a1 +#no_flip + + add a1,a0 + sll 16,a0 ;X + + move a11,a14 + sll 4,a14 + addi #y_tbl,a14 + move *a14,a14 + + movi Y_SCALE_MULTIPLIER,a2 + move *a10(OBJ_ZPOSINT),a1 + mpyu a2,a1 + move *a10(OBJ_YPOSINT),a2 + sub a14,a2 + sll 16,a2 + sub a2,a1 + + movi CLDB1ORNG,a2 + movi DMAWNZ|M_3D|M_NOCOLL,a4 + movi CLSDEAD,a5 + + calla BEGINOBJ + + SLEEPK 3 + + jauc FRQDELDIE + + .ref smoke_t + +;#x_tbl .word -14,-3,10,25,30,31,30,39,26,-3,17,32,53,54,41,32,45 +#y_tbl .word -82,-85,-88,-91,-94,-97,-100,-83,-85,-87,-89,-91,-93,-95 + .word -97,-99,-99 + +dnk_clever_anim + .WORD ANI_XFLIP + WL 6,D4SQ4A+FR1 + WL 6,D4SQ4A+FR2 + WL 6,D4SQ4A+FR3 + WL ANI_CODE,CREATE_WATER + WL 5,D4SQ4A+FR3 + WL 6,D4SQ4A+FR2 + WL 6,D4SQ4A+FR1 + .word ANI_END + +lex_clever_anim + WL 6,L4SW5A+FR2 + WL 6,L4SW5A+FR3 + WL 6,L4SW5A+FR4 + WL 6,L4SW5A+FR5 + WL 6,L4SW5A+FR6 + WL 6,L4SW5A+FR7 + WL 6,L4SW5A+FR8 + WL 6,L4SW5A+FR9 + WL 6,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 6,L4SW5A+FR9 + WL 6,L4SW5A+FR8 + WL 6,L4SW5A+FR7 + WL 6,L4SW5A+FR6 + WL 6,L4SW5A+FR5 + WL 6,L4SW5A+FR4 + WL 6,L4SW5A+FR3 + WL 6,L4SW5A+FR2 + + .word ANI_END + +hrt_taunt4_anim + WL 5,H4SL4C+FR1 + WL 5,H4SL4C+FR2 + WL 5,H4SL4C+FR3 + +BRT_TAUNT_LOOP + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR9 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR7 + + WL ANI_GOTO,BRT_TAUNT_LOOP + +rzr_taunt4_anim + WL 4,R4CO4A+FR1 + WL 4,R4CO4A+FR2 + WL 4,R4CO4A+FR3 + WL 4,R4CO4A+FR4 +RZR_TAUNT_LOOP + WL 15,R4CO4A+FR5 + WL 4,R4CO4A+FR6 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR8 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR6 + WL 4,R4CO4A+FR5 + WL 4,R4CO4A+FR6 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR8 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR6 + + WL ANI_GOTO,RZR_TAUNT_LOOP + +und_taunt4_anim + WL 6,U4CO4B+FR1 + WL 6,U4CO4B+FR2 +UND_TAUNT_LOOP + WL 15,U4CO4B+FR3 + WL 6,U4CO4B+FR4 + WL 6,U4CO4B+FR5 + WL 6,U4CO4B+FR6 + WL 6,U4CO4B+FR7 + WL 6,U4CO4B+FR8 + WL 6,U4CO4B+FR7 + WL 6,U4CO4B+FR6 + WL 6,U4CO4B+FR5 + WL 6,U4CO4B+FR4 + WL ANI_GOTO,UND_TAUNT_LOOP + +yok_taunt4_anim + WL 4,Y4CO4D+FR1 + WL 4,Y4CO4D+FR2 +YOK_TAUNT_LOOP + WL 5,Y4CO4D+FR3 + WL 5,Y4CO4D+FR4 + WL 5,Y4CO4D+FR5 + WL 5,Y4CO4D+FR6 + WL 5,Y4CO4D+FR7 + WL 5,Y4CO4D+FR8 + WL ANI_GOTO,YOK_TAUNT_LOOP + +shn_taunt4_anim + WL 4,S4CO4A+FR1 + WL 4,S4CO4A+FR2 + WL 4,S4CO4A+FR3 +SHN_TAUNT_LOOP + WL 4,S4CO4A+FR4 + WL 4,S4CO4A+FR5 + WL 4,S4CO4A+FR6 + WL 4,S4CO4A+FR7 + WL 4,S4CO4A+FR8 + WL 4,S4CO4A+FR7 + WL 4,S4CO4A+FR6 + WL 4,S4CO4A+FR5 + WL 4,S4CO4A+FR4 + WL 4,S4CO4A+FR3 + WL 4,S4CO4A+FR2 + WL 4,S4CO4A+FR3 + WL ANI_GOTO,SHN_TAUNT_LOOP + +bam_taunt4_anim + WL ANI_CODE,BAM_TAUNT_SOUND +bam_taunt4_anim_no_fx + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + WL ANI_GOTO,bam_taunt4_anim_no_fx + +BAM_TAUNT_SOUND + movi 42h,a0 + CALLA triple_sound + RETS + +dnk_taunt4_anim + WL 5,D4CO4A+FR1 + WL 5,D4CO4A+FR2 + WL 5,D4CO4A+FR3 + WL 5,D4CO4A+FR4 + WL 5,D4CO4A+FR5 + WL 5,D4CO4A+FR6 +DNK_TAUNT_LOOP + WL 5,D4CO4A+FR5 + WL 5,D4CO4A+FR4 + WL 5,D4CO4A+FR3 + WL 5,D4CO4A+FR4 + WL 5,D4CO4A+FR5 + WL 5,D4CO4A+FR6 + WL ANI_GOTO,DNK_TAUNT_LOOP + +lex_taunt4_anim +LEX_TAUNT_LOOP + WL 5,L4CO4Z+FR1 + WL 5,L4CO4Z+FR2 + WL 5,L4CO4Z+FR3 + WL 5,L4CO4Z+FR4 + WL 5,L4CO4Z+FR5 + WL 5,L4CO4Z+FR6 + WL 5,L4CO4Z+FR7 + WL 5,L4CO4Z+FR8 + WL 5,L4CO4Z+FR9 + + WL 5,L4CO4Z+FR8 + WL 5,L4CO4Z+FR7 + WL 5,L4CO4Z+FR6 + WL 5,L4CO4Z+FR5 + WL 5,L4CO4Z+FR4 + WL 5,L4CO4Z+FR3 + WL 5,L4CO4Z+FR2 + WL ANI_GOTO,LEX_TAUNT_LOOP + + +CREATE_FUJI + MMTM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + CLR A8 + MOVE @NUM_OPPS,A1 + DEC A1 + JRNZ NO_CREATE_FUJI + + MOVE *A13(OBJ_XPOS),A0,L + ADDI [30,0],A0 + MOVE A0,*A13(OBJ_XPOS),L + SUBI [80,0],A0 + MOVI [240,0],A1 + MOVE *A13(OBJ_ZPOS),A3,L + SRL 16,A3 + DEC A3 + ORI 1000H,A3 + .ref shadow + MOVI shadow,A2 + MOVI DMAWNZ,A4 + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + + MOVE *A13(OBJ_XPOS),A0,L + SUBI [80,0],A0 + MOVI [240,0],A1 + MOVE *A13(OBJ_ZPOS),A3,L + SRL 16,A3 + ORI 1000H,A3 + + MOVI FUJI01,A2 + + movi DMAWNZ,a4 ;DMA flags + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ +NO_CREATE_FUJI + MOVE A8,@FUJI_OBJ,L + MMFM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + RETS + +DO_FUJI + MMTM SP,A1,A7,A8,A9 + MOVE @FUJI_OBJ,A8,L + JRZ MORE_THAN_ONE_OPP + MOVI FUJI_ANIM,A9 + CREATE0 ANIMATE_OBJ +MORE_THAN_ONE_OPP + MMFM SP,A1,A7,A8,A9 + RETS + +ANIMATE_OBJ + MOVE A9,A1 + CALLA setup_back_anim + JSRP ANIM_CROWD + DIE + +FUJI_ANIM + WL 7,FUJI01 + WL 7,FUJI02 + WL 7,FUJI03 + WL 60,FUJI04 + WL 7,FUJI03 + WL 7,FUJI02 + WL 7,FUJI01 + .WORD CANI_END + +CREATE_URN + MMTM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + MOVE *A13(OBJ_XPOS),A0,L + movi Y_SCALE_MULTIPLIER,a3 + move *a13(OBJ_ZPOSINT),a1 + mpyu a3,a1 + SUBI [5aH,0],A1 + MOVE *A13(OBJ_ZPOS),A3,L + SRL 16,A3 + INC A3 + ORI 1000H,A3 + MOVI BLUURN01,A2 + MOVI DMAWNZ,A4 + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + MOVI URN_ANIM,A9 + CREATE0 ANIMATE_OBJ + MMFM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + RETS + +URN_SOUND + movi 40h,a0 + CALLA triple_sound + RETS + +URN_ANIM + WL CANI_CODE,URN_SOUND + WL 6,BLUURN01 + WL 6,BLUURN02 + WL 6,BLUURN03 + WL 6,BLUURN04 + WL 6,BLUURN05 + .WORD CANI_END + +CREATE_WATER + MMTM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + MOVE *A13(OBJ_XPOS),A0,L + SUBI [10,0],A0 + movi Y_SCALE_MULTIPLIER,a3 + move *a13(OBJ_ZPOSINT),a1 + mpyu a3,a1 + SUBI [58H,0],A1 + + MOVE *A13(OBJ_ZPOS),A3,L + SRL 16,A3 + INC A3 + ORI 1000H,A3 + MOVI WATER01,A2 + MOVI DMAWNZ,A4 + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + MOVI WATER_ANIM,A9 + CREATE0 ANIMATE_OBJ + MOVE *A13(PLYRNUM),*A0(PDATA+UNUSED) + MMFM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + RETS + +WATER_ANIM + WL CANI_CODE,WATER_SOUND + WL 4,WATER01 + WL 4,WATER02 + WL CANI_CODE,START_WATER + WL 15,WATER03 + WL CANI_CODE,STOP_WATER + WL 4,WATER04 + WL 4,WATER05 + WL 4,WATER06 + WL 4,WATER07 + WL CANI_CODE,KILL_WATER + .WORD CANI_END + +KILL_WATER + movi -400,a1 + MOVE A1,*A8(OXPOS) + rets + +START_WATER + MOVI WATER_PID,A1 + MOVE *A13(PDATA+UNUSED),A2 + DEC A2 + ADD A2,A1 + MOVI MOVE_WATER,A7 + MOVE *A8(OXVAL),A9,L + SUBI [240H,0],A9 + MOVI 15,A5 + DIVS A5,A9 + JAUC GETPRC + +MOVE_WATER + MOVE *A8(OXVAL),A1,L + SUB A9,A1 + MOVE A1,*A8(OXVAL),L + SLOOP 1,MOVE_WATER + +STOP_WATER + MOVI WATER_PID,A0 + MOVE *A13(PDATA+UNUSED),A2 + DEC A2 + ADD A2,A0 + MOVE A0,A1 + CALLA KILALL + RETS + +WATER_SOUND + movi 3fh,a0 + CALLA triple_sound + RETS + + .end + \ No newline at end of file diff --git a/BACKUP/RAZOR.ASM b/BACKUP/RAZOR.ASM new file mode 100644 index 0000000..1b831ad --- /dev/null +++ b/BACKUP/RAZOR.ASM @@ -0,0 +1,1530 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 1/20/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "razor.asm" + .title "Razor Ramon specific game code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "jjxm.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 change_anim1a,change_anim2a,do_taunt,bounce_off_ropes + .ref check_secret_moves,wres_get_but_val_cur,master_keep_attached + .ref climb_turnbuckle,execute_walk,get_opp_plyrmode,mode_inair2 + .ref wres_get_stick_val_cur,process_ptrs,keep_attached + .ref change_anim1,start_run,JUMP_ROPES,clear_damage_log + .ref wres_get_but_val_down,wres_get_stick_rel_new + .ref DO_REVERSAL,DO_REVERSAL_MESS + +;animation sequences + + .ref rzr_run2_anim + + .ref rzr_3_head_hold_anim + + .ref rzr_stand2_anim,rzr_stand8_anim + .ref rzr_stand4_anim,rzr_stand6_anim + .ref rzr_torso2_anim,rzr_torso8_anim + .ref rzr_torso4_anim,rzr_torso6_anim + + .ref rzr_2_to_4_turn_anim,rzr_8_to_6_turn_anim ;stand + .ref rzr_4_to_2_turn_anim,rzr_6_to_8_turn_anim + .ref rzr_4_to_6_turn_anim,rzr_6_to_4_turn_anim + .ref rzr_2_to_8_turn_anim,rzr_8_to_2_turn_anim + .ref rzr_4_to_8_turn_anim,rzr_6_to_2_turn_anim + .ref rzr_2_to_6_turn_anim,rzr_8_to_4_turn_anim + + .ref rzr_2_to_4_turn2_anim,rzr_8_to_6_turn2_anim ;torso + .ref rzr_4_to_2_turn2_anim,rzr_6_to_8_turn2_anim + .ref rzr_4_to_6_turn2_anim,rzr_6_to_4_turn2_anim + .ref rzr_2_to_8_turn2_anim,rzr_8_to_2_turn2_anim + .ref rzr_4_to_8_turn2_anim,rzr_6_to_2_turn2_anim + .ref rzr_2_to_6_turn2_anim,rzr_8_to_4_turn2_anim + + .ref rzr_walk1_f2_anim,rzr_walk2_f2_anim,rzr_walk4_f2_anim + .ref rzr_walk5_f2_anim,rzr_walk6_f2_anim,rzr_walk8_f2_anim + + .ref rzr_walk1_f4_anim,rzr_walk2_f4_anim,rzr_walk4_f4_anim + .ref rzr_3_head_held_stand_anim + .ref rzr_walk5_f4_anim,rzr_walk6_f4_anim,rzr_walk8_f4_anim + + .ref rzr_2_punch_anim,rzr_4_punch_anim + .ref rzr_2_pin_anim,rzr_4_pin_anim + .ref rzr_2_uprcut_anim,rzr_4_uprcut_anim + .ref rzr_2_butt_anim,rzr_4_butt_anim + .ref rzr_2_kick_anim,rzr_4_kick_anim + .ref rzr_2_knee_anim,rzr_4_knee_anim + .ref rzr_flying_kick_anim + .ref rzr_2_ground_punch_anim,rzr_4_ground_punch_anim + .ref rzr_2_stomp_anim,rzr_4_stomp_anim + .ref rzr_2_grabfling_anim,rzr_4_grabfling_anim + .ref rzr_2_hair_pickup_anim,rzr_4_hair_pickup_anim + + .ref rzr_2_push_anim,rzr_4_push_anim + .ref rzr_4_bigboot_anim + .ref rzr_climb_down_anim,rzr_climb_up_anim + + .ref rzr_2_block_anim,rzr_4_block_anim + .ref rzr_2_hiptoss_anim,rzr_4_hiptoss_anim + .ref rzr_flying_elbow_anim,rzr_3_slash_anim + .ref rzr_2_rugshake_anim,rzr_4_rugshake_anim + .ref rzr_tbukl_elbow_anim,rzr_3_pile_driver_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +razor_secret_moves + + .long #button_hold ;must have this one + .long #neck_grab + .long #grab_fling + .long #hip_toss + .long 0 + +****************************************************************************** +* +* SPECIAL MOVE PROCESSES - Secret moves +* +;a8=process of wrestler + + SUBR rzr_smove_table + .long rzr_hdhold_pile + .long 0 + + +****************************************************************************** +#button_hold + clrc + rets + +****************************************************************************** +#neck_grab + .word B_SPUNCH, J_REAL_LR | J_TOWARD | J_AWAY | J_UP + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 30 ;max + .long #scrt_neck + + SUBRP #scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + movi rzr_3_head_hold_anim,a0 + calla change_anim1a + rets + +****************************************************************************** +#grab_fling + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling + + SUBRP #scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + FACE24 rzr,hiptoss_anim + calla change_anim1a + + WRSND W_RAZOR,GRABFLING_T1,GRABFLING_T2 + rets +#nope + + FACE24 rzr,grabfling_anim + calla change_anim1a + + WRSND W_RAZOR,GRABFLING_T1,GRABFLING_T2 + +#out rets + + +****************************************************************************** +#hip_toss + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_hiptoss + + SUBRP #scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #out + + FACE24 rzr,hiptoss_anim + calla change_anim1a + + WRSND W_RAZOR,GRABFLING_T1,GRABFLING_T2 + rets + +#***************************************************************************** +rzr_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,0,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + PUSH a13 + move a8,a13 + calla DO_REVERSAL + calla DO_REVERSAL_MESS + PULL a13 + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#slam + movi rzr_3_pile_driver_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +#***************************************************************************** + + SUBR razor_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi rzr_stand4_anim,a0 + calla change_anim1a + + movi rzr_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE0 do_taunt + PULL a10 + + rets + +#p1 + movi rzr_stand2_anim,a0 + calla change_anim1a + + movi rzr_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* RAZORS CONTROL CODE +* +* a13 = * razor process + + SUBR move_razor + + + movi razor_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 + .long mode_normal ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .ref mode_choking + .long mode_choking ;25 + +#***************************************************************************** + +mode_normal ;0 + + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + +;Any button causes a pin + move a13,a0 + calla wres_get_but_val_cur + move a0,a0 + jrz #opp_not_dead + +;Make sure opponent is on the ground! +;First, see if opponent is on the ground. + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #opp_not_dead + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a1,L + + move *a1(OBJ_YPOS),a0,L + move *a1(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + +;Opponent is on ground. +;Now check to see if I'm attached to him in puppet mode! + move *a13(ATTACH_PROC),a1,L + jrz #done + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 +;If I'm attached to him, let the move finish! + jrz #opp_not_dead +#done + + FACE24 rzr,pin_anim + calla change_anim1a + + rets + +#opp_notgnd +#opp_not_dead + +;MJT Start + move *a13(IMMOBILIZE_TIME),a0 + jrnz #no_climb +;MJT End + + 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 + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + .ref ADD_IF_SILENT,CLIMB_ROPES + CALLA ADD_IF_SILENT + rets +#no_climb + + calla execute_walk + +#no_interrupt + rets + +#action_table +;This table accounts for 2 buttons being hit simultaneously. + + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#graboh +;This is both super buttons at the same time + rets + +#z + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 62 95 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing hip toss +* +* onturnbkl | +* climbturnbkl normal punch +* + + JJXM_INIT + JJXM NORMAL, 62, 95,#punch_hdbutt,#punch_punch + JJXM DIZZY, 62, 95,#punch_hdbutt,#punch_punch + JJXM BLOCK, 62, 95,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 120,120,#punch_lbdrop,#punch_punch + JJXM RUNNING, #punch_hiptoss + JJXM BOUNCING, #punch_hiptoss + JJXM ONTURNBKL, #punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM INAIR, 62, 95,#punch_hdbutt,#punch_punch + JJXM ATTACHED, 62, 95,#punch_hdbutt,#punch_punch + JJXM DEAD, 62, 95,#punch_hdbutt,#punch_punch + JJXM OPPOVERHEAD, 62, 95,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 62, 95,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 62, 95,#punch_hdbutt,#punch_punch + JJXM MASTER, 62, 95,#punch_hdbutt,#punch_punch + JJXM SLAVE, 62, 95,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 62, 95,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 62, 95,#punch_hdbutt,#punch_punch + JJXM PUPPET, 62, 95,#punch_hdbutt,#punch_punch + JJXM INAIR2, 62, 95,#punch_hdbutt,#punch_punch + JJXM_END + +***** +#punch_punch +std_punch + + FACE24 rzr,punch_anim + calla change_anim1a + + WRSND W_RAZOR,PUNCH_T1,PUNCH_T2 + + rets + +***** +#punch_hdbutt + + FACE24 rzr,butt_anim + calla change_anim1a + + WRSND W_RAZOR,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbdrop + + FACE24 rzr,ground_punch_anim + calla change_anim1a + + WRSND W_RAZOR,LBOWDROP_T1,LBOWDROP_T2 + rets + +***** +#punch_hiptoss + + FACE24 rzr,hiptoss_anim + calla change_anim1a + + WRSND W_RAZOR,HIPTOSS_T1,HIPTOSS_T2 + rets + + +************ +#block ;2 + +std_block + FACE24 rzr,block_anim + calla change_anim1a + + rets + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 65 45 headbutt or uppercut +* > blade slash +* +* onground < 120 120 elbow drop (or rug shake or hair pickup) +* onground > normal punch +* +* running | +* bouncing hip toss +* +* onturnbkl | +* climbturnbkl normal punch +* + + JJXM_INIT + JJXM NORMAL, 65, 45,#spunch_close,#spunch_far + JJXM DIZZY, 65, 45,#spunch_close,#spunch_far + JJXM BLOCK, 65, 45,#spunch_close,#spunch_far + JJXM ONGROUND, 120,120,#spunch_lbowdrop,std_punch + JJXM RUNNING, #spunch_hiptoss + JJXM BOUNCING, #spunch_hiptoss + JJXM ONTURNBKL, 65, 45,#spunch_close,#spunch_far + JJXM CLIMBTURNBKL, 65, 45,#spunch_close,#spunch_far + JJXM INAIR, 65, 45,#spunch_close,#spunch_far + JJXM ATTACHED, 65, 45,#spunch_close,#spunch_far + JJXM BLOCK, 65, 45,#spunch_close,#spunch_far + JJXM OPPOVERHEAD, 65, 45,#spunch_close,#spunch_far + JJXM WAITANIM, 65, 45,#spunch_close,#spunch_far + JJXM GRAPPLE, 65, 45,#spunch_close,#spunch_far + JJXM MASTER, 65, 45,#spunch_close,#spunch_far + JJXM SLAVE, 65, 45,#spunch_close,#spunch_far + JJXM HEADHOLD, 65, 45,#spunch_close,#spunch_far + JJXM HEADHELD, 65, 45,#spunch_close,#spunch_far + JJXM PUPPET, 65, 45,#spunch_close,#spunch_far + JJXM INAIR2, 65, 45,#spunch_close,#spunch_far + JJXM_END + + +#spunch_lbowdrop + +;If near opponents head, and facing down, do the hair grab! +;If near feet, go for the rugshake + + move *a13(CLOSEST_NUM),a14 + X32 a14 + + addi process_ptrs,a14 + move *a14,a14,L + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 rzr,hair_pickup_anim + calla change_anim1 + WRSND W_RAZOR,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no + FACE24 rzr,rugshake_anim + calla change_anim1a + + rets + + +***** +#spunch_close + + ;uppercut if stick is down, headbutt otherwise + move a13,a0 + calla wres_get_stick_val_cur + move a0,a14 + FACE24 rzr,uprcut_anim + btst MOVE_DOWN_BIT,a14 + jrnz #ok + FACE24 rzr,butt_anim +#ok + calla change_anim1a + WRSND W_RAZOR,UPRCUT_T1,UPRCUT_T2 + rets + +***** +#spunch_far + + movi rzr_3_slash_anim,a0 + calla change_anim1a + + rets + +***** +#spunch_hiptoss + FACE24 rzr,hiptoss_anim,a0 + calla change_anim1a + WRSND W_RAZOR,SPUNCH_T1,SPUNCH_T2 + rets + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 50 knee +* > normal kick +* +* onground < 120 120 stomp +* onground > normal kick +* +* running | +* bouncing big boot +* +* onturnbkl | normal kick +* climbturnbkl normal kick +* + + JJXM_INIT + JJXM NORMAL, 60, 50,#kick_knee,#kick_kick + JJXM DIZZY, 60, 50,#kick_knee,#kick_kick + JJXM BLOCK, 60, 50,#kick_knee,#kick_kick + JJXM ONGROUND, 120,120,#kick_stomp,#kick_kick + JJXM RUNNING, #kick_bigboot + JJXM BOUNCING, #kick_bigboot + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM INAIR, 60, 50,#kick_knee,#kick_kick + JJXM ATTACHED, 60, 50,#kick_knee,#kick_kick + JJXM DEAD, 60, 50,#kick_knee,#kick_kick + JJXM OPPOVERHEAD, 60, 50,#kick_knee,#kick_kick + JJXM WAITANIM, 60, 50,#kick_knee,#kick_kick + JJXM GRAPPLE, 60, 50,#kick_knee,#kick_kick + JJXM MASTER, 60, 50,#kick_knee,#kick_kick + JJXM SLAVE, 60, 50,#kick_knee,#kick_kick + JJXM HEADHOLD, 60, 50,#kick_knee,#kick_kick + JJXM HEADHELD, 60, 50,#kick_knee,#kick_kick + JJXM PUPPET, 60, 50,#kick_knee,#kick_kick + JJXM INAIR2, 60, 50,#kick_knee,#kick_kick + JJXM_END + +***** +#kick_kick + + FACE24 rzr,kick_anim + calla change_anim1a + + WRSND W_RAZOR,KICK_T1,KICK_T2 + rets + +***** +#kick_knee + + FACE24 rzr,knee_anim + calla change_anim1a + + WRSND W_RAZOR,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp + + FACE24 rzr,stomp_anim + calla change_anim1a + + WRSND W_RAZOR,KICK_T1,KICK_T2 + rets + +***** +#kick_bigboot + + movi rzr_4_bigboot_anim,a0 + calla change_anim1a + + WRSND W_RAZOR,KICK_T1,KICK_T2 + rets + + +************ +#punchkick ;9 + +; FACE24 rzr,push_anim +; calla change_anim1a +; +; WRSND W_RAZOR,PUSH_T1,PUSH_T2 + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #rets + move *a13(PLYRMODE),a0 + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jreq #rets + cmpi MODE_BOUNCING,a0 + jreq #rets + calla start_run + +#rets + 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(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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_stick_val_cur + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#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 #block ;2 + .long #z ;3 + .long #super_punch ;4 super punch + .long #z,#z,#z ;5-7 + .long #kick ;8 kick + .long #z,#z,#z,#z,#z,#z,#z ;9-15 + .long #super_kick ;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 + +************ +#block ;2 + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************ +#punch ;1 +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* +* onground < 176 176 running stomp +* onground > nothing +* +* all else flying kick +* + + JJXM_INIT + JJXM NORMAL, attack_flykick + JJXM BLOCK, attack_flykick + JJXM DIZZY, attack_flykick + JJXM ONGROUND, 176,176,#punch_flyelbow,#punch_rets + JJXM RUNNING, attack_flykick + JJXM BOUNCING, attack_flykick + JJXM ONTURNBKL, attack_flykick + JJXM CLIMBTURNBKL, attack_flykick + JJXM INAIR, attack_flykick + JJXM ATTACHED, attack_flykick + JJXM DEAD, attack_flykick + JJXM OPPOVERHEAD, attack_flykick + JJXM WAITANIM, attack_flykick + JJXM GRAPPLE, attack_flykick + JJXM MASTER, attack_flykick + JJXM SLAVE, attack_flykick + JJXM HEADHOLD, attack_flykick + JJXM HEADHELD, attack_flykick + JJXM PUPPET, attack_flykick + JJXM INAIR2, attack_flykick + JJXM_END + +#punch_flyelbow +attack_flyelbow + movi rzr_flying_elbow_anim,a0 + calla change_anim1a + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + + WRSND W_RAZOR,FLYKICK_T1,FLYKICK_T2 + + rets + +#punch_rets + rets + +************ +#kick ;4 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 running stomp +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flykick + JJXM BLOCK, #kick_flykick + JJXM DIZZY, #kick_flykick + JJXM ONGROUND, 176,176,attack_flyelbow,#kick_rets + JJXM RUNNING, #kick_flykick + JJXM BOUNCING, #kick_flykick + JJXM ONTURNBKL, #kick_flykick + JJXM CLIMBTURNBKL, #kick_flykick + JJXM INAIR, #kick_flykick + JJXM ATTACHED, #kick_flykick + JJXM DEAD, #kick_flykick + JJXM OPPOVERHEAD, #kick_flykick + JJXM WAITANIM, #kick_flykick + JJXM GRAPPLE, #kick_flykick + JJXM MASTER, #kick_flykick + JJXM SLAVE, #kick_flykick + JJXM HEADHOLD, #kick_flykick + JJXM HEADHELD, #kick_flykick + JJXM PUPPET, #kick_flykick + JJXM INAIR2, #kick_flykick + JJXM_END + +#kick_flykick +attack_flykick + movi rzr_flying_kick_anim,a0 + calla change_anim1a + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + + WRSND W_RAZOR,FLYKICK_T1,FLYKICK_T2 + + SETMODE INAIR + + rets + +#kick_rets + 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 + +#***************************************************************************** +mode_onground ;4 + + 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 rzr_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 + + ;this is so an attack isn't turned into a climbdown + ; in those 5-10 ticks before MODE_INAIR2 is set... + move *a13(ANIBASE),a14,L + cmpi rzr_climb_up_anim,a14 + jrne #no_climbdown + + movi rzr_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + + rets + +#no_climbdown + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#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 + + movi rzr_tbukl_elbow_anim,a0 + calla change_anim1a + + WRSND W_TAKER,FLYKICK_T1,FLYKICK_T2 + + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #no_interrupt + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #punchblock ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + + SETMODE NORMAL + + FACE24 rzr,push_anim + calla change_anim1a + + WRSND W_RAZOR,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* razor with zero health + +mode_dizzy ;8 + + move *a13(GETUP_TIME),a0 + jrnz #still_going + + calla clear_damage_log + + clr a0 + move a0,*a13(STARS_FLAG) + + SETMODE NORMAL + +#still_going + 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 + + calla master_keep_attached ;keep slave attached to me + + rets + +#***************************************************************************** + +mode_slave ;15 + rets + +#***************************************************************************** + +mode_headhold ;16 + + move *a13(ATTACH_PROC),a10,L + jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z ;0 + .long #punch ;1 punch + .long #block ;2 block + .long #z ;3 + .long #super_punch ;4 super punch + .long #z,#z,#z ;5-7 + .long #kick ;8 kick + .long #punch,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 super kick + .long #z,#z,#z,#punch,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#z ;0 + rets + +************ +#punch ;1 +#super_punch ;4 +#kick ;8 +#super_kick ;16 + + movi rzr_4_kick_anim,a0 + calla change_anim1a + rets + + +#***************************************************************************** +mode_headheld ;19 + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + movi rzr_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_puppet ;20 + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +#VEL equ 30000h ;normal vel +#DVEL equ 21f0eh ;diagonal + + + SUBR rzr_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 rzr_rotate_anims_table +; old = up right + .long rzr_stand2_anim ;new = up right + .long rzr_2_to_4_turn_anim ; = down right + .long rzr_2_to_6_turn_anim ; = down left *** + .long rzr_2_to_8_turn_anim ; = up left + +; old = down right + .long rzr_4_to_2_turn_anim ;new = up right + .long rzr_stand4_anim ; = down right + .long rzr_4_to_6_turn_anim ; = down left + .long rzr_4_to_8_turn_anim ; = up left *** + +; old = down left + .long rzr_6_to_2_turn_anim ;new = up right *** + .long rzr_6_to_4_turn_anim ; = down right + .long rzr_stand6_anim ; = down left + .long rzr_6_to_8_turn_anim ; = up left + +; old = up left + .long rzr_8_to_2_turn_anim ;new = up right + .long rzr_8_to_4_turn_anim ; = down right *** + .long rzr_8_to_6_turn_anim ; = down left + .long rzr_stand8_anim ; = up left + + + SUBR rzr_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long rzr_walk1_f2_anim ;1 (UP) + .long rzr_walk1_f2_anim ;2 (UP_RIGHT) + .long rzr_walk1_f4_anim ;3 (RIGHT) + .long rzr_walk1_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk1_f4_anim ;5 (DOWN) + .long rzr_walk1_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk1_f2_anim ;7 (LEFT) + .long rzr_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk2_f2_anim ;2 (UP_RIGHT) + .long rzr_walk2_f2_anim ;3 (RIGHT) + .long rzr_walk2_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk8_f4_anim ;5 (DOWN) + .long rzr_walk8_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk4_f2_anim ;7 (LEFT) + .long rzr_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk2_f2_anim ;2 (UP_RIGHT) + .long rzr_walk2_f2_anim ;3 (RIGHT) + .long rzr_walk4_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk4_f4_anim ;5 (DOWN) + .long rzr_walk8_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk6_f2_anim ;7 (LEFT) + .long rzr_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk8_f2_anim ;2 (UP_RIGHT) + .long rzr_walk4_f4_anim ;3 (RIGHT) + .long rzr_walk4_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk2_f4_anim ;5 (DOWN) + .long rzr_walk6_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk2_f2_anim ;7 (LEFT) + .long rzr_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long rzr_walk5_f2_anim ;1 (UP) + .long rzr_walk5_f2_anim ;2 (UP_RIGHT) + .long rzr_walk5_f4_anim ;3 (RIGHT) + .long rzr_walk5_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk5_f4_anim ;5 (DOWN) + .long rzr_walk5_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk5_f2_anim ;7 (LEFT) + .long rzr_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk6_f2_anim ;2 (UP_RIGHT) + .long rzr_walk2_f2_anim ;3 (RIGHT) + .long rzr_walk6_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk2_f4_anim ;5 (DOWN) + .long rzr_walk4_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk2_f2_anim ;7 (LEFT) + .long rzr_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk6_f2_anim ;2 (UP_RIGHT) + .long rzr_walk6_f2_anim ;3 (RIGHT) + .long rzr_walk8_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk4_f4_anim ;5 (DOWN) + .long rzr_walk4_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk2_f2_anim ;7 (LEFT) + .long rzr_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk4_f2_anim ;2 (UP_RIGHT) + .long rzr_walk6_f2_anim ;3 (RIGHT) + .long rzr_walk8_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk6_f4_anim ;5 (DOWN) + .long rzr_walk2_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk2_f2_anim ;7 (LEFT) + .long rzr_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR rzr_torso_anims_table +; old = up right + .long rzr_torso2_anim ;new = up right + .long rzr_2_to_4_turn2_anim ; = down right + .long rzr_2_to_6_turn2_anim ; = down left *** + .long rzr_2_to_8_turn2_anim ; = up left + +; old = down right + .long rzr_4_to_2_turn2_anim ;new = up right + .long rzr_torso4_anim ; = down right + .long rzr_4_to_6_turn2_anim ; = down left + .long rzr_4_to_8_turn2_anim ; = up left *** + +; old = down left + .long rzr_6_to_2_turn2_anim ;new = up right *** + .long rzr_6_to_4_turn2_anim ; = down right + .long rzr_torso6_anim ; = down left + .long rzr_6_to_8_turn2_anim ; = up left + +; old = up left + .long rzr_8_to_2_turn2_anim ;new = up right + .long rzr_8_to_4_turn2_anim ; = down right *** + .long rzr_8_to_6_turn2_anim ; = down left + .long rzr_torso8_anim ; = up left + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/RAZOR.BAT b/BACKUP/RAZOR.BAT new file mode 100644 index 0000000..be6836a --- /dev/null +++ b/BACKUP/RAZOR.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld razor rzr_hit rzr_kik rzr_msc rzr_pnc rzr_wlk rzr_rjr rzr_mjt rzr_jms rzr_jake +@copy razor.ld1 + razor.ld2 razor.lod +@move razor.h ..\razorimg.h +@move razor.seq .. + diff --git a/BACKUP/RAZORIMG.ASM b/BACKUP/RAZORIMG.ASM new file mode 100644 index 0000000..89b1cf5 --- /dev/null +++ b/BACKUP/RAZORIMG.ASM @@ -0,0 +1,18 @@ + .FILE "razorimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include razorimg.tbl + .include razorimg.h + +****************************************************************************** + + .even + .include "razor.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/BACKUP/RAZORIMG.H b/BACKUP/RAZORIMG.H new file mode 100644 index 0000000..648973c --- /dev/null +++ b/BACKUP/RAZORIMG.H @@ -0,0 +1,84 @@ + .global R3GU4A + .global R2AH2D + .global R4AH4C + .global R4AM4B + .global R2BK3E + .global R4BK3D + .global R2AE2A + .global R4AE4B + .global R4LB4Z + .global R3AM3D + .global R3GU2A + .global R3TD3A + .global R4AM3X + .global R2NM3A + .global R4NM3C + .global R4BG3A + .global R3DC3C + .global R4KM3A + .global R2KM3X + .global R2GR3Z + .global R4GR3Z + .global R4SW4Z + .global R4MF4B + .global R4GF3B + .global R3RL1B + .global R4WP5C + .global R2PU3A + .global R4PU3A + .global R2BC3B + .global R4BC3A + .global R2UP3A + .global R4UP3C + .global R2PS3A + .global R4PS3A + .global R4PJ4B + .global R2PF2B + .global R4PF4B + .global R2TW2Z + .global R4TW4Z + .global R1TT5Z + .global R1TR5Z + .global R2ST2C + .global R4ST4G + .global R2WL1A + .global R2WL2A + .global R2WL4B + .global R4WL2A + .global R4WL4A + .global R4WL5A + .global R4YR3A + .global R3RN3D + .global R4BO3Z + .global R3LE3A + .global R3DD3C + .global R3AM3X + .global R3TN3X + .global R4POGO + .global R4GH3A + .global R3PN5A + .global R5RV5A + .global R3BR3Z + .global R3MS3Z + .global R3MS3Q + .global R4LD4A + .global R4CO4A + .global R3DU3B + .global R3GP3Z + .global R3BF3A + .global R4BZ4A + .global R3HB3A + .global R3RG3B + .global R3RG3Z + .global R3RR3Z + .global R3FD3B + .global R3HG3B + .global R4MP4D + .global R2MP2A + .global R2CT2E + .global R4SB4A + .global R3PG3B + .global R4FT3A + .global R3RZ3S + .global R3CR3A + .global R4JD4A diff --git a/BACKUP/REACT1.ASM b/BACKUP/REACT1.ASM new file mode 100644 index 0000000..919cf0a --- /dev/null +++ b/BACKUP/REACT1.ASM @@ -0,0 +1,1183 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react1.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" + .include "damage.equ" +;MJT Start + .include "special.equ" +;MJT End + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF KILL_REWIRE_DUMMY + .ref change_anim1a + .ref wres_collis_off +;MJT Start +; .ref inc_burnout +;MJT End + .ref create_damage_points + .ref slide_offscr + .ref set_getup_time + .ref check_dizzy + + .REF CALL_FACE_HIT,CALL_MID_HIT + + .REF CALL_DROP_KICK + .REF ADD_IF_SILENT + + .REF BONUS_MESS + .ref DAM_MULT + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + + .ref bam_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim + .ref und_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim + +;BAM BAM + .ref bam_2_head_hit_anim,bam_4_head_hit_anim + .ref bam_2_body_hit_anim,bam_4_body_hit_anim + .ref bam_head_hit2_anim,bam_4_body_hit_dizzy_anim + .ref bam_head_hit_dizzy_anim + .ref bam_fall_back_anim,bam_fall_back_tbukl_anim + .ref bam_2_hitblock_anim,bam_4_hitblock_anim + +;DOINK + .ref dnk_2_head_hit_anim,dnk_4_head_hit_anim + .ref dnk_head_hit2_anim + .ref dnk_head_hit_dizzy_anim + .ref dnk_2_hitblock_anim,dnk_4_hitblock_anim + .ref dnk_fall_back_anim,dnk_fall_back_tbukl_anim + .ref dnk_4_body_hit_anim + .ref dnk_4_body_hit_dizzy_anim + +;BRET + .ref hrt_2_hitblock_anim,hrt_4_hitblock_anim + .ref hrt_2_head_hit_anim,hrt_4_head_hit_anim + .ref hrt_4_head_hit_dizzy_anim + .ref hrt_2_head_hit2_anim,hrt_4_head_hit2_anim + .ref hrt_2_body_hit_anim,hrt_4_body_hit_anim + .ref hrt_4_body_hit_dizzy_anim + .ref hrt_fall_back_anim,hrt_fall_back_tbukl_anim + +;LEX + .ref lex_2_head_hit_anim,lex_4_head_hit_anim + .ref lex_2_body_hit_anim,lex_4_body_hit_anim + .ref lex_2_hitblock_anim,lex_4_hitblock_anim + .ref lex_head_hit_dizzy_anim + .ref lex_2_head_hit2_anim,lex_4_head_hit2_anim + .ref lex_4_body_hit_dizzy_anim + .ref lex_fall_back_anim,lex_fall_back_tbukl_anim + +;RAZOR + .ref rzr_4_head_hit_dizzy_anim + .ref rzr_2_head_hit_anim,rzr_4_head_hit_anim + .ref rzr_2_body_hit_anim,rzr_4_body_hit_anim + .ref rzr_2_hitblock_anim,rzr_4_hitblock_anim + .ref rzr_2_head_hit2_anim,rzr_4_head_hit2_anim + .ref rzr_fall_back_anim,rzr_fall_back_tbukl_anim + .ref rzr_4_body_hit_dizzy_anim + +;SHAWN + .ref shn_4_head_hit_dizzy_anim + .ref shn_2_head_hit_anim,shn_4_head_hit_anim + .ref shn_2_head_hit2_anim,shn_4_head_hit2_anim + .ref shn_2_body_hit_anim,shn_4_body_hit_anim + .ref shn_4_body_hit_dizzy_anim + .ref shn_fall_back_anim,shn_fall_back_tbukl_anim + .ref shn_2_hitblock_anim,shn_4_hitblock_anim + +;TAKER + .ref und_2_head_hit_anim,und_4_head_hit_anim + .ref und_2_body_hit_anim,und_4_body_hit_anim + .ref und_head_hit_dizzy_anim + .ref und_head_hit2_anim + .ref und_4_body_hit_dizzy_anim + .ref und_fall_back_anim,und_fall_back_tbukl_anim + .ref und_2_hitblock_anim,und_4_hitblock_anim ;2 Undertaker + +;YOKO + .ref yok_4_head_hit_dizzy_anim + .ref yok_2_head_hit_anim,yok_4_head_hit_anim + .ref yok_2_head_hit2_anim,yok_4_head_hit2_anim + .ref yok_2_body_hit_anim,yok_4_body_hit_anim + .ref yok_2_hitblock_anim,yok_4_hitblock_anim + .ref yok_4_body_hit_dizzy_anim + .ref yok_fall_back_anim + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + + .def hit_flykick + +****************************************************************************** +* EQUATES FOR THIS FILE + +;MJT Start +#***************************************************************************** +* A WRESTLER HAS JUST HIT/BEEN HIT (BY A PROJECTILE/SPECIAL OBJECT) +* +* a10 = * projectile process +* a13 = * victim process + + SUBR wrestler_hit_special + + .ref delete_special_objlist + .ref firesplat_anim + .ref piesplat_anim + .ref sp_change_anim + .ref spiritsplat_anim + + callr hit_stuff + + movi -1,a0 + move *a13(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jrz #in_block + + move *a10(SP_ID),a14 + jrnz #dmg +;Pull in spirits do no damage until Taker +;whacks him at end! + movi 120,a0 + move a0,*a13(IMMOBILIZE_TIME) + jruc #in_block +#dmg +;Reaper projectiles do 2 damage hits + movi -2,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + +#in_block + + PUSH a13 + move a10,a13 + move a13,a0 + calla delete_special_objlist + +; movi firesplat_anim,a0 +; movi piesplat_anim,a0 + movi spiritsplat_anim,a0 +;MJT Start + move *a13(SP_ID),a14 + jrz #reg + .ref reapersplat_anim + movi reapersplat_anim,a0 +#reg +;MJT End + + calla sp_change_anim + PULL a13 + + 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 + + callr block_hit + rets + +#noblock + + GETLIFE + jrz #isdead + + calla create_damage_points + + SETMODE NORMAL + + WRSNDX KICK_L1,KICK_L2 + +;If opponent is in air, do fall back! + +; FACE24TBL head_hit2_tbl +; FACETBL #losebal + + FACE24TBL body_hit_tbl + calla change_anim1a + + movi [4,0],a0 + move *a10(SP_ID),a14 + jrz #push_away +;Pull toward + movi -[4,0],a0 +#push_away + + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a0 ;left +#abs + move a0,*a13(OBJ_XVEL),L + movi [4,0],a0 + move a0,*a13(OBJ_YVEL),L + clr a0 + move a0,*a13(OBJ_ZVEL),L + +#isdead + calla wres_collis_off + rets + + +#***************************************************************************** +* A WRESTLER HAS JUST BEEN HIT +* a10 = * attacking wrestler proc +* a13 = * victim process + + SUBR wrestler_hit + + +;Need to clear STARS_FLAG to get rid of stars! + callr hit_stuff + + + movi -1,a0 + move *a13(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jrz #in_block + + + + ;get base damage val + move *a10(ATTACK_MODE),a0 + X16 a0 + addi damage_values,a0 + move *a0,a1 + + ;add attacker mod + move *a10(WRESTLERNUM),a0 + X16 a0 + addi offense_mods,a0 + move *a0,a0 + addi 100h,a0 + mpyu a0,a1 + + ;add defender mod + + move *a13(WRESTLERNUM),a0 + X16 a0 + addi defense_mods,a0 + move *a0,a0 + addi 100h,a0 + mpyu a0,a1 + move a1,a0 + sra 16,a0 + neg a0 + + + CLR A1 + MOVE A0,A0 + JRZ JUST_CLEAR_OPP + + MOVE *A10(RISK),A1 + JRZ #in_block + + MOVK 2,A1 + MOVE A1,@DAM_MULT + MMTM SP,A0,A10 + CALLA BONUS_MESS + MMFM SP,A0,A10 + +#in_block + CLR A1 + MOVE A1,*A10(RISK) +JUST_CLEAR_OPP + MOVE A1,*A13(RISK) + + move *a13(PLYRNUM),a1 + calla adjust_health + + ;if victim is on the turnbuckle, go to the special tbukl reaction + move *a13(PLYRMODE),a14 + cmpi MODE_ONTURNBKL,a14 + jrne #not_onbukl + + ;if the attack mode is some kind of puppet, don't do this + move *a10(ATTACK_MODE),a14 + + cmpi AMODE_PUPPET,a14 + jreq #not_onbukl + cmpi AMODE_PUPPET2,a14 + jreq #not_onbukl + cmpi AMODE_PUPPET3,a14 + jreq #not_onbukl + + movi hit_ontbukl,a1 + jruc #continue + +#not_onbukl + + 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 +#continue + call a1 + + CALLA KILL_REWIRE_DUMMY + + rets + + + +hit_stuff +;Stuff to do to the wrestler who got hit by another wrestler or by a +;projectile. + + clr a0 + move a0,*a13(STARS_FLAG) ;Gets rid of them... + move a0,*a13(DEBRIS_X),L ;Gets rid of them... + + move a0,*a13(SHADTRAIL_PROC),L ;proc is toast + move a0,*a13(ATTIMG_CUR_FRAME),L + + + move *a13(ATTACH_PROC),a1,L + jrz #done + clr a0 + move a0,*a13(ATTACH_PROC),L ;not attached to anything + + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jrne #done + + move a0,*a1(ATTACH_PROC),L ;not attached to anything +#done + +;If a wrestler is running out of control, and gets hit, we need to make the +;GETUP meter go away. + + move *a13(PLYRMODE),a0 + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #cont +#yes move *a13(GETUP_TIME),a0 + jrz #cont + move *a13(PLYR_DIZZY),a0 + jrnz #cont + + move *a13(PLYRNUM),a0 + cmpi 2,a0 + jrge #cont +;Drones do not have getup meters! + +;This guy has a getup meter on screen and is running out of control! +;Get rid of meter. + + PUSH a8,a9,a10 +;Cause getup meter to slide off screen. + move *a13(METER_PROC),a0,L + move *a0(PA8),a8,L + move *a0(PA9),a9,L + move *a0(PA10),a10,L + movi GETUP_PID,a1 + movi slide_offscr,a7 + calla XFERPROC + PULL a8,a9,a10 + +#cont + clr a0 + move a0,*a13(RUN_TIME) + + rets + +;MJT End + + + +#hit_table + .long hit_punch ;0 (this file) + .long hit_hdbutt ;1 + .long hit_kick ;2 + .long hit_flykick ;3 + .long hit_grabthrow ;4 + + REFLONG hit_uprcut ;5 (react2.asm) + REFLONG hit_lbowdrop ;6 + REFLONG hit_grabhold ;7 + REFLONG hit_grabfling ;8 + REFLONG hit_push ;9 + +;MJT Start 2 + .long hit_urn ;10 (This file) + REFLONG hit_bigboot ;11 (react3.asm) + REFLONG hit_knee ;12 + .long hit_hdbutt2 ;13 +;MJT End 2 + REFLONG hit_boxpunch ;14 + + REFLONG hit_stomp ;15 (react4.asm) + REFLONG hit_spinkick ;16 + REFLONG hit_cline ;17 + REFLONG hit_headhold ;18 + REFLONG hit_jumpkick ;19 + + REFLONG hit_run ;20 (react5.asm) + REFLONG hit_puppet ;21 + REFLONG hit_backhand ;22 + REFLONG hit_buzz ;23 + REFLONG hit_haymaker ;24 + + REFLONG hit_blbowdrop ;25 (react2.asm) + REFLONG hit_bstomp ;26 (react4.asm) + REFLONG hit_headknees ;27 (react3.asm) + + REFLONG hit_earslap ;28 (react5.asm) - MARK + REFLONG hit_hammer ;29 (react4.asm) + + REFLONG hit_buttstomp ;30 (react4.asm) + REFLONG hit_puppet2 ;31 (react5.asm) - MARK + REFLONG hit_puppet3 ;32 + .long hit_tomb ;33 (This file) + .long hit_bigknee ;34 + + REFLONG hit_shnbfkik ;35 (react8.asm) - JASON + REFLONG hit_shnspdkik ;36 + REFLONG hit_shnspdkik2 ;37 + REFLONG hit_hitcheck ;38 + REFLONG hit_armbreak ;39 + + REFLONG hit_buttdrop ;40 (react9.asm) - JASON + REFLONG hit_att41 ;41 + REFLONG hit_att42 ;42 + REFLONG hit_att43 ;43 + .long hit_hdbutt_stay ;44 (This file) + + +#***************************************************************************** +;All hit routine use this block code +;Perhaps the DAMAGE amount should be table driven +;Perhaps we push him away after x blocks? + + + SUBR block_hit + +;Slide opponent away from attacker + movi [2,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 + +;FIX!! +;We need to put in grunts or something... This doesn't work! +; WRSNDX PUNCH_L1,PUNCH_L2 + + FACE24TBL #hitblock + calla change_anim1a + +#isdead + calla wres_collis_off + rets + +#hitblock + .long hrt_2_hitblock_anim,hrt_4_hitblock_anim ;0 Bret Hart + .long rzr_2_hitblock_anim,rzr_4_hitblock_anim ;1 Razor Ramon + .long und_2_hitblock_anim,und_4_hitblock_anim ;2 Undertaker + .long yok_2_hitblock_anim,yok_4_hitblock_anim ;3 Yokozuna + .long shn_2_hitblock_anim,shn_4_hitblock_anim ;4 Shawn Michaels + .long bam_2_hitblock_anim,bam_4_hitblock_anim ;5 Bam Bam + .long dnk_2_hitblock_anim,dnk_4_hitblock_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_hitblock_anim,lex_4_hitblock_anim ;8 Lex Luger + .long 0,0 ;9 Referee + + +#***************************************************************************** +;AMODE_PUNCH 0 +;MJT Start +hit_unused ;13 +;MJT End +hit_punch + + 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 + + callr block_hit + 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 PUNCH_L1,PUNCH_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 + +#isdead + calla wres_collis_off + + rets + +#not_dizzy + +;MJT Start +; calla inc_burnout +;MJT End + +;Test code +; cmpi 6,a1 ;a1 = consecutive hits +; jrlt #ok +; LOCKUP +;#ok + + 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_hit_tbl + calla change_anim1a + 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_HDBUTT 1 +hit_hdbutt + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit + rets + +#noblock + + CALLA CALL_FACE_HIT + + GETLIFE + jrz #isdead + + WRSNDX HDBUTT_L1,HDBUTT_L2 + +;MJT Start +; 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 +;MJT End + + SETMODE NORMAL + + FACE24TBL head_hit2_tbl + calla change_anim1a + +#isdead + calla wres_collis_off + + rets + +;MJT Start 2 +#***************************************************************************** +;AMODE_HDBUTT2 13 +hit_hdbutt2 +;From head hold attacks + + CALLA CALL_FACE_HIT + + WRSNDX HDBUTT_L1,HDBUTT_L2 + + FACE24TBL head_hit2_tbl + calla change_anim1a + + movi 10000h,a0 + move a0,*a13(OBJ_YVEL),L + + clr a0 + move a0,*a13(OBJ_XVEL),L + + calla wres_collis_off + + rets + +#***************************************************************************** +;AMODE_URN 10 +hit_urn + +;From slap type attacks that want a face hit reaction! + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit + rets + +#noblock + + CALLA CALL_FACE_HIT + + GETLIFE + jrz #isdead + + WRSNDX HDBUTT_L1,HDBUTT_L2 + + SETMODE NORMAL + + FACE24TBL head_hit2_tbl + calla change_anim1a + +#isdead + calla wres_collis_off + + rets + +;MJT End 2 + +#***************************************************************************** +;AMODE_HDBUTT_STAY 44 +;No xvel will happen +hit_hdbutt_stay + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit + rets + +#noblock + + CALLA CALL_FACE_HIT + +;MJT Start +; calla inc_burnout +;MJT End + + SETMODE NORMAL + + FACE24TBL head_hit2_tbl + + calla change_anim1a + calla wres_collis_off + + clr a0 + move a0,*a13(OBJ_XVEL),L + + rets + +#***************************************************************************** +;AMODE_TOMB 33 +hit_tomb + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit + rets + +#noblock + + CALLA CALL_FACE_HIT + + GETLIFE + jrz #isdead + + WRSNDX HDBUTT_L1,HDBUTT_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 + +#isdead + calla wres_collis_off + rets + +#not_dizzy + +;MJT Start +; calla inc_burnout +;MJT End + + SETMODE NORMAL + + FACE24TBL head_hit2_tbl + calla change_anim1a + + calla wres_collis_off + + rets + +#***************************************************************************** +;AMODE_KICK 2 +hit_kick + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit + rets + +#noblock + + CALLA CALL_MID_HIT + + GETLIFE + jrz #isdead + + WRSNDX KICK_L1,KICK_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 body_hit_dizzy_tbl + calla change_anim1a + +#isdead + calla wres_collis_off + rets + +#not_dizzy + +;MJT Start +; calla inc_burnout +;MJT End + + SETMODE NORMAL + + FACE24TBL body_hit_tbl + calla change_anim1a + calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_FLYKICK 3 +hit_flykick + + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit + rets + +#noblock + calla CALL_DROP_KICK + +;MJT Start + WRSNDX FLYKICK_L1,FLYKICK_L2 + + GETLIFE + jrz #skip + + +; calla inc_burnout + + SETMODE NORMAL + +#skip +;MJT End + + move *a10(OBJ_XVEL),a0,L ;slow down doink's + sra 1,a0 ;x_vel after collis + neg a0 + move a0,*a10(OBJ_XVEL),L + movi 40000h,a0 + move a0,*a10(OBJ_YVEL),L + + clr a0 + move a0,*a13(ROLL_POS) + + move *a13(PLYR_DIZZY),a0 + jrnz #diz + + calla set_getup_time + +#diz + FACETBL fall_back_tbl + calla change_anim1a + + + movi [2,0],a2 + move *a10(OBJ_XPOSINT),a0 + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;offx - defx + jrgt #fall_right ;attacker on left + movi [-2,0],a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets + +#***************************************************************************** +;AMODE_BIGKNEE 34 +hit_bigknee + + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit + rets + +#noblock + calla CALL_DROP_KICK +;MJT Start + WRSNDX FLYKICK_L1,FLYKICK_L2 + + GETLIFE + jrz #skip + + +; calla inc_burnout + + SETMODE NORMAL + +#skip +;MJT End +; move *a10(OBJ_XVEL),a0,L ;slow down doink's +; sra 1,a0 ;x_vel after collis +; neg a0 +; move a0,*a10(OBJ_XVEL),L +; movi 40000h,a0 +; move a0,*a10(OBJ_YVEL),L + + clr a0 + move a0,*a13(ROLL_POS) + + move *a13(PLYR_DIZZY),a0 + jrnz #diz + + calla set_getup_time + +#diz + 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 #fall_right ;attacker on left + movi -[4,0],a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets + + + +#***************************************************************************** +;AMODE_GRABTHROW 4 +hit_grabthrow + + rets + +#***************************************************************************** +; HIT WHILE STANDING ON TURNBUCKLE -- DOESN'T MATTER WHAT THE AMODE WAS +hit_ontbukl + + +; GETLIFE +; jrz #isdead + + WRSNDX FLYKICK_L1,FLYKICK_L2 + +;MJT Start +; calla inc_burnout +;MJT End + + FACETBL fall_back_tbukl_tbl + calla change_anim1a + + + 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 + movi [6,0],a2 + move a2,*a13(OBJ_YVEL),L + +#isdead + calla wres_collis_off + rets + + +****************************************************************************** +* +* DAMAGE SECTION +* + +;Base damage values and getup times +damage_values + .word D_PUNCH,D_HDBUTT,D_KICK,D_FLYKICK,D_GRABTHROW + .word D_UPRCUT,D_LBDROP,D_GRBHOLD,D_GRBFLNG,D_PUSH +;MJT Start 2 + .word D_BCKHAND,D_BIGBOOT,D_KNEE,D_HDKNEES,D_BOXPUNCH +;MJT End 2 + .word D_STOMP,D_SPINKIK,D_CLINE,D_HEDHOLD,D_JUMPKICK + .word D_RUN,D_PUPPET,D_BCKHAND,D_BUZZ,D_HAYMAKER + .word D_BLBDROP,D_BSTOMP,D_HDKNEES,D_EARSLAP2,D_HAMMER2 + .word D_BUTTSTOMP,D_ATT31,D_ATT32,D_TOMB,D_BIGKNEE + .word D_FLPKIK,D_SPDKIK,D_SPDKIK2,D_HITCK,D_ARMBRK + .word D_ATT40,D_ATT41,D_ATT42,D_ATT43,D_HDBUTT_STAY + + +;MJT Start +;Wrestler offensive multipliers +offense_mods + .word _45PCT ;Bret + .word _45PCT ;Razor + .word _45PCT ;Taker + .word _45PCT ;Yoko + .word _45PCT ;Shawn + .word _45PCT ;Bam Bam + .word _45PCT ;Doink + .word _45PCT ; + .word _45PCT ;Lex + +;Wrestler defensive multipliers +defense_mods + .word 0 ;Bret + .word 0 ;Razor + .word 0 ;Taker + .word 0 ;Yoko + .word 0 ;Shawn + .word 0 ;Bam Bam + .word 0 ;Doink + .word 0 ; + .word 0 ;Lex +;MJT End + +****************************************************************************** +* +* STANDARD REACTION TABLES +* + +head_hit_tbl + .long hrt_2_head_hit_anim,hrt_4_head_hit_anim ;0 Bret Hart + .long rzr_2_head_hit_anim,rzr_4_head_hit_anim ;1 Razor Ramon + .long und_2_head_hit_anim,und_4_head_hit_anim ;2 Undertaker + .long yok_2_head_hit_anim,yok_4_head_hit_anim ;3 Yokozuna + .long shn_2_head_hit_anim,shn_4_head_hit_anim ;4 Shawn Michaels + .long bam_2_head_hit_anim,bam_4_head_hit_anim ;5 Bam Bam + .long dnk_2_head_hit_anim,dnk_4_head_hit_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_head_hit_anim,lex_4_head_hit_anim ;8 Lex Luger + .long 0,0 ;9 Referee + + .def head_hit2_tbl +head_hit2_tbl + .long hrt_2_head_hit2_anim,hrt_4_head_hit2_anim ;0 Bret Hart + .long rzr_2_head_hit2_anim,rzr_4_head_hit2_anim ;1 Razor Ramon + .long und_head_hit2_anim,und_head_hit2_anim ;2 Undertaker + .long yok_2_head_hit2_anim,yok_4_head_hit2_anim ;3 Yokozuna + .long shn_2_head_hit2_anim,shn_4_head_hit2_anim ;4 Shawn Michaels + .long bam_head_hit2_anim,bam_head_hit2_anim ;5 Bam Bam + .long dnk_head_hit2_anim,dnk_head_hit2_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_head_hit2_anim,lex_4_head_hit2_anim ;8 Lex Luger + .long 0,0 ;9 Referee + +;head_hit3_tbl +; .long hrt_2_head_hit3_anim,hrt_4_head_hit3_anim ;0 Bret Hart +; .long rzr_2_head_hit3_anim,rzr_4_head_hit3_anim ;1 Razor Ramon +; .long und_head_hit3_anim,und_head_hit3_anim ;2 Undertaker +; .long yok_2_head_hit3_anim,yok_4_head_hit3_anim ;3 Yokozuna +; .long shn_2_head_hit3_anim,shn_4_head_hit3_anim ;4 Shawn Michaels +; .long bam_head_hit3_anim,bam_head_hit3_anim ;5 Bam Bam +; .long dnk_head_hit3_anim,dnk_head_hit3_anim ;6 Doink +; .long 0,0 ;7 spare +; .long lex_2_head_hit3_anim,lex_4_head_hit3_anim ;8 Lex Luger +; .long 0,0 ;9 Referee + +head_hit_dizzy_tbl + .long hrt_4_head_hit_dizzy_anim,hrt_4_head_hit_dizzy_anim ;0 Bret Hart + .long rzr_4_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim ;1 Razor Ramon + .long und_head_hit_dizzy_anim,und_head_hit_dizzy_anim ;2 Undertaker + .long yok_4_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim ;3 Yokozuna + .long shn_4_head_hit_dizzy_anim,shn_4_head_hit_dizzy_anim ;4 Shawn Michaels + .long bam_head_hit_dizzy_anim,bam_head_hit_dizzy_anim ;5 Bam Bam + .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_head_hit_dizzy_anim,lex_head_hit_dizzy_anim ;8 Lex Luger + .long 0,0 ;9 Referee + +body_hit_tbl + .long hrt_2_body_hit_anim,hrt_4_body_hit_anim ;0 Bret Hart + .long rzr_2_body_hit_anim,rzr_4_body_hit_anim ;1 Razor Ramon + .long und_2_body_hit_anim,und_4_body_hit_anim ;2 Undertaker + .long yok_2_body_hit_anim,yok_4_body_hit_anim ;3 Yokozuna + .long shn_2_body_hit_anim,shn_4_body_hit_anim ;4 Shawn Michaels + .long bam_2_body_hit_anim,bam_4_body_hit_anim ;5 Bam Bam + .long dnk_4_body_hit_anim,dnk_4_body_hit_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_body_hit_anim,lex_4_body_hit_anim ;8 Lex Luger + .long 0,0 ;9 Referee + +body_hit_dizzy_tbl + .long hrt_4_body_hit_dizzy_anim,hrt_4_body_hit_dizzy_anim ;0 Bret Hart + .long rzr_4_body_hit_dizzy_anim,rzr_4_body_hit_dizzy_anim ;1 Razor Ramon + .long und_4_body_hit_dizzy_anim,und_4_body_hit_dizzy_anim ;2 Undertaker + .long yok_4_body_hit_dizzy_anim,yok_4_body_hit_dizzy_anim ;3 Yokozuna + .long shn_4_body_hit_dizzy_anim,shn_4_body_hit_dizzy_anim ;4 Shawn Michaels + .long bam_4_body_hit_dizzy_anim,bam_4_body_hit_dizzy_anim ;5 Bam Bam + .long dnk_4_body_hit_dizzy_anim,dnk_4_body_hit_dizzy_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_4_body_hit_dizzy_anim,lex_4_body_hit_dizzy_anim ;8 Lex Luger + .long 0,0 ;9 Referee + + SUBR fall_back_tbl + .long hrt_fall_back_anim ;0 Bret Hart + .long rzr_fall_back_anim ;1 Razor Ramon + .long und_fall_back_anim ;2 Undertaker + .long yok_fall_back_anim ;3 Yokozuna + .long shn_fall_back_anim ;4 Shawn Michaels + .long bam_fall_back_anim ;5 Bam Bam + .long dnk_fall_back_anim ;6 Doink + .long 0 ;7 spare + .long lex_fall_back_anim ;8 Lex Luger + .long 0 ;9 Referee + + SUBR fall_back_tbukl_tbl + .long hrt_fall_back_tbukl_anim ;0 Bret Hart + .long rzr_fall_back_tbukl_anim ;1 Razor Ramon + .long und_fall_back_tbukl_anim ;2 Undertaker + .long yok_fall_back_anim ;3 Yokozuna + .long shn_fall_back_tbukl_anim ;4 Shawn Michaels + .long bam_fall_back_tbukl_anim ;5 Bam Bam + .long dnk_fall_back_tbukl_anim ;6 Doink + .long 0 ;7 spare + .long lex_fall_back_tbukl_anim ;8 Lex Luger + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/REACT2.ASM b/BACKUP/REACT2.ASM new file mode 100644 index 0000000..57bebab --- /dev/null +++ b/BACKUP/REACT2.ASM @@ -0,0 +1,448 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react2.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 change_anim1a + .ref wres_collis_off +;MJT Start +; .ref inc_burnout +;MJT End + .ref block_hit + .ref face_each_other + .ref set_getup_time + .ref fall_back_tbl + .ref triple_sound,CALL_AVERAGE_MOVE + .REF CALL_NASTY_MOVE + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + + +;BAM BAM + .ref bam_heldoh_anim +; .ref bam_ocrun_anim + .ref bam_hitonground_anim + .ref bam_4_losebal_anim + +;DOINK + .ref dnk_hitonground_anim + .ref dnk_heldoh_anim +; .ref dnk_ocrun_anim + .ref dnk_fall_back_anim + .ref dnk_4_losebal_anim + .ref dnk_knockdwn_anim + +;BRET + .ref hrt_4_losebal_anim,hrt_fall_back_anim + .ref hrt_hitonground_anim + +;LEX + .ref lex_4_losebal_anim + .ref lex_heldoh_anim + .ref lex_hitonground_anim +; .ref lex_ocrun_anim + +;RAZOR + .ref rzr_4_losebal_anim +; .ref rzr_ocrun_anim + .ref rzr_heldoh_anim + .ref rzr_fall_back_anim + .ref rzr_hitonground_anim + +;SHAWN + .ref shn_4_losebal_anim + .ref shn_hitonground_anim + .ref shn_heldoh_anim +; .ref shn_ocrun_anim + +;TAKER + .ref und_hitonground_anim + .ref und_heldoh_anim +; .ref und_ocrun_anim + .ref und_4_losebal_anim + +;YOKO + .ref yok_4_losebal_anim + .ref yok_hitonground_anim + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +#***************************************************************************** +;AMODE_UPRCUT 5 + SUBR hit_uprcut + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + GETLIFE + jrz #skip + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + + SETMODE NORMAL + +#skip +; calla inc_burnout + + WRSNDX UPRCUT_L1,UPRCUT_L2 + + FACETBL fall_back_tbl + calla change_anim1a + + clr a0 + move a0,*a13(ROLL_POS) + calla set_getup_time + + + movi [11,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_right ;attacker on left + movi [-2,0],a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets + +#***************************************************************************** +;AMODE_LBOWDROP 6 + + SUBR hit_lbowdrop + + ;if we're standing, ignore this + move *a13(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + jrz #isdead + cmpi MODE_BLOCK,a0 + jrz #isdead + + GETLIFE + jrz #isdead + + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + +;MJT Start +; calla inc_burnout +;MJT End + + calla wres_collis_off + +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONGROUND,a0 + + FACETBL hitonground + calla change_anim1a +#isdead + calla wres_collis_off + rets + +hitonground + .long hrt_hitonground_anim ;0 Bret Hart + .long rzr_hitonground_anim ;1 Razor Ramon + .long und_hitonground_anim ;2 Undertaker + .long yok_hitonground_anim ;3 Yokozuna + .long shn_hitonground_anim ;4 Shawn Michaels + .long bam_hitonground_anim ;5 Bam Bam + .long dnk_hitonground_anim ;6 Doink + .long 0 ;7 spare + .long lex_hitonground_anim ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** +;AMODE_BLBOWDROP 25 + SUBR hit_blbowdrop + WRSNDX LBOWDROP_L1,LBOWDROP_L2 +;SOUNDS_DONE + GETLIFE + jrz #isdead + +;MJT Start +; calla inc_burnout +;MJT End + + calla wres_collis_off + + move *a13(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #on_grnd + cmpi MODE_DEAD,a0 + jrz #on_grnd +;Knock standing opponent onto ground + +; move *a13(PLYR_DIZZY),a0 +; jrz #nodiz +; +; FACETBL #knockdwn_dizzy +; calla change_anim1a +; calla wres_collis_off +; rets +;#nodiz + calla set_getup_time + + FACETBL #knockdwn + calla change_anim1a + calla wres_collis_off + rets + +#on_grnd + FACETBL hitonground + calla change_anim1a +#isdead + calla wres_collis_off + rets + +#knockdwn + .ref hrt_knockdwn_anim + .ref rzr_knockdwn_anim + .ref und_knockdwn_anim + .ref yok_knockdwn_anim + .ref shn_knockdwn_anim + .ref bam_knockdwn_anim + .ref dnk_knockdwn_anim + .ref lex_knockdwn_anim + + .long hrt_knockdwn_anim ;0 Bret Hart + .long rzr_knockdwn_anim ;1 Razor Ramon + .long und_knockdwn_anim ;2 Undertaker + .long yok_knockdwn_anim ;3 Yokozuna + .long shn_knockdwn_anim ;4 Shawn Michaels + .long bam_knockdwn_anim ;5 Bam Bam + .long dnk_knockdwn_anim ;6 Doink + .long 0 ;7 spare + .long lex_knockdwn_anim ;8 Lex Luger + .long 0 ;9 Referee + +;#knockdwn_dizzy +; .long dnk_knockdwn_dizzy_anim ;0 Bret Hart +; .long dnk_knockdwn_dizzy_anim ;1 Razor Ramon +; .long dnk_knockdwn_dizzy_anim ;2 Undertaker +; .long dnk_knockdwn_dizzy_anim ;3 Yokozuna +; .long dnk_knockdwn_dizzy_anim ;4 Shawn Michaels +; .long dnk_knockdwn_dizzy_anim ;5 Bam Bam +; .long dnk_knockdwn_dizzy_anim ;6 Doink +; .long dnk_knockdwn_dizzy_anim ;7 spare +; .long dnk_knockdwn_dizzy_anim ;8 Lex Luger +; .long dnk_knockdwn_dizzy_anim ;9 Referee + + +#***************************************************************************** +;AMODE_GRABHOLD 7 + SUBR hit_grabhold + + GETLIFE + jrz #isdead + + WRSNDX GRABHOLD_L1,GRABHOLD_L2 + + SETMODE ATTACHED + + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + + FACETBL #heldoh + calla change_anim1a + +#isdead + calla wres_collis_off + rets + +#heldoh + .long dnk_heldoh_anim ;0 Bret Hart + .long rzr_heldoh_anim ;1 Razor Ramon + .long und_heldoh_anim ;2 Undertaker + .long dnk_heldoh_anim ;3 Yokozuna + .long shn_heldoh_anim ;4 Shawn Michaels + .long bam_heldoh_anim ;5 Bam Bam + .long dnk_heldoh_anim ;6 Doink + .long dnk_heldoh_anim ;7 spare + .long lex_heldoh_anim ;8 Lex Luger + .long dnk_heldoh_anim ;9 Referee + + +;Blank amode here.... + SUBR hit_grabfling + rets + .if 0 + +#***************************************************************************** +;AMODE_GRABFLING 8 + SUBR hit_grabfling + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrnz #cont + move *a13(GETUP_TIME),a0 ;delay b4 gaining control + jrnz #out + +#cont + calla face_each_other + + SETMODE RUNNING + + move *a13(PLYR_DIZZY),a0 + jrnz #diz + + calla set_getup_time +#diz + + 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 + + FACETBL #ocrun + calla change_anim1a + + calla wres_collis_off +#out rets + +#ocrun + .long dnk_ocrun_anim ;0 Bret Hart + .long rzr_ocrun_anim ;1 Razor Ramon + .long und_ocrun_anim ;2 Undertaker + .long dnk_ocrun_anim ;3 Yokozuna + .long shn_ocrun_anim ;4 Shawn Michaels + .long bam_ocrun_anim ;5 Bam Bam + .long dnk_ocrun_anim ;6 Doink + .long dnk_ocrun_anim ;7 spare + .long lex_ocrun_anim ;8 Lex Luger + .long dnk_ocrun_anim ;9 Referee + + .if 0 + THIS WAS IN SHAWN.ASM & TAKER.ASM + + move *a13(FACING_DIR),a0 ;use facing + andi PLAYER_LEFT_VAL|PLAYER_RIGHT_VAL,a0 + move a0,*a13(MOVE_DIR) + + move *a10(OBJ_XPOSINT),a0 + movi 96,a1 + move *a10(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #pos + neg a1 +#pos + add a1,a0 + move a0,*a13(OBJ_XPOSINT) + + move *a10(OBJ_ZPOS),a0,L + addi 10000h,a0 + move a0,*a13(OBJ_ZPOS),L ;in front of attacker + subi 20000h,a0 + move a0,*a10(OBJ_ZPOS),L + .endif + + .endif + +#***************************************************************************** +;AMODE_PUSH 9 + SUBR hit_push + +; move *a13(PLYRMODE),a1 +; cmpi MODE_BLOCK,a1 +; jrnz #noblock +; +; calla block_hit +; rets +; +;#noblock + + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + +;MJT Start +; calla inc_burnout +;MJT End + + SETMODE NORMAL + + clr a0 + move a0,*a10(OBJ_XVEL),L ;clr attacker's x-vel + + FACETBL #losebal + calla change_anim1a + + movi [6,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 + + calla wres_collis_off + rets + +#losebal + + .long hrt_4_losebal_anim ;0 Bret Hart + .long rzr_4_losebal_anim ;1 Razor Ramon + .long und_4_losebal_anim ;2 Undertaker + .long yok_4_losebal_anim ;3 Yokozuna + .long shn_4_losebal_anim ;4 Shawn Michaels + .long bam_4_losebal_anim ;5 Bam Bam + .long dnk_4_losebal_anim ;6 Doink + .long dnk_4_losebal_anim ;7 spare + .long lex_4_losebal_anim ;8 Lex Luger + .long dnk_4_losebal_anim ;9 Referee + +****************************************************************************** + + .end + + \ No newline at end of file diff --git a/BACKUP/REACT3.ASM b/BACKUP/REACT3.ASM new file mode 100644 index 0000000..2f25eea --- /dev/null +++ b/BACKUP/REACT3.ASM @@ -0,0 +1,441 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react3.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 CALL_MID_HIT + + .REF CALL_DROP_KICK + .ref change_anim1a + .ref wres_collis_off +;MJT Start +; .ref inc_burnout +;MJT End + .ref block_hit + .ref face_each_other + .ref wres_slave_anim + .ref set_getup_time + .ref check_dizzy + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + + +;BAM BAM + .ref bam_2_body_hit_anim,bam_4_body_hit_anim + .ref bam_fall_back_anim + +;DOINK + .ref dnk_fall_back_anim + +;BRET + .ref hrt_fall_back_anim +;LEX + .ref lex_2_body_hit_anim,lex_4_body_hit_anim + .ref lex_fall_back_anim + +;RAZOR + .ref rzr_2_body_hit_anim,rzr_4_body_hit_anim + .ref rzr_fall_back_anim + +;SHAWN + .ref shn_2_body_hit_anim,shn_4_body_hit_anim + .ref shn_fall_back_anim + +;TAKER + .ref und_2_body_hit_anim,und_4_body_hit_anim + .ref und_fall_back_anim + .ref und_2_knee_hit_anim,und_4_knee_hit_anim + +;YOKO + .ref yok_fall_back_anim + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +;MJT Start +;#***************************************************************************** +;;AMODE_HIPTOSS 10 +; SUBR hit_hiptoss +; +; +;; +;;this will change to a puppet move +;; +;;Fix debug mode death bug.... +; +; GETLIFE +; jrz #isdead +; +; calla face_each_other +; +; move a10,*a13(ATTACH_PROC),L ;proc attached to +; move a13,*a10(ATTACH_PROC),L +; +; movi MODE_MASTER,a0 +; move a0,*a10(PLYRMODE) +; movi MODE_SLAVE,a0 +; move a0,*a13(PLYRMODE) +; +; WRSNDX HIPTOSS_L1,HIPTOSS_L2 +; +; clr a0 +; move a0,*a13(ROLL_POS) +; calla set_getup_time +; +;;Any hit mode which does a fall back sequence onto the ground +;;will not check dizzy at the start. +;;The check dizzy happens in the sequence. +; +;;;; movi dnk_hiptossfall_anim,a0 +; +; movi wres_slave_anim,a0 +; calla change_anim1a +; +; calla wres_collis_off +;#isdead +; rets + + +#***************************************************************************** +;AMODE_BIGBOOT 11 + SUBR hit_bigboot + + move *a13(PLYRMODE),a1 + cmpi MODE_RUNNING,a1 +;No hit if not running + jrz #cont + cmpi MODE_INAIR,a1 + jrz #cont + + CALLA CALL_FACE_HIT + + GETLIFE + jrz #isdead + + WRSNDX HDBUTT_L1,HDBUTT_L2 + + SETMODE NORMAL + + .ref head_hit2_tbl + FACE24TBL head_hit2_tbl + calla change_anim1a + +#isdead + calla wres_collis_off + rets + +#cont + CALLA CALL_DROP_KICK + + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + GETLIFE + jrz #skip + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + +; calla inc_burnout + + SETMODE NORMAL +#skip + clr a0 + move a0,*a13(ROLL_POS) + calla set_getup_time + + .ref fall_back_tbl + FACETBL fall_back_tbl + calla change_anim1a + + 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 + movi [-3,0],a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + + + calla wres_collis_off +;#isdead2 + rets + +;MJT End + +#***************************************************************************** +;AMODE_KNEE 12 + SUBR hit_knee + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + CALLA CALL_MID_HIT + + + GETLIFE + jrz #isdead + + WRSNDX KICK_L1,KICK_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 #knee_hit_dizzy + jruc #cont + +#not_dizzy + +;MJT Start +; calla inc_burnout +;MJT End + + SETMODE NORMAL + + FACE24TBL #knee_hit +#cont + calla change_anim1a + + move *a10(OBJ_XVEL),a0,L ;slow down doink's + sra 3,a0 ;x_vel after collis + move a0,*a10(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets + +#knee_hit + .ref hrt_2_knee_hit_anim,hrt_4_knee_hit_anim + .ref yok_2_knee_hit_anim,yok_4_knee_hit_anim + .ref rzr_2_knee_hit_anim,rzr_4_knee_hit_anim + .ref und_2_knee_hit_anim,und_4_knee_hit_anim + .ref shn_2_knee_hit_anim,shn_4_knee_hit_anim + .ref bam_2_knee_hit_anim,bam_4_knee_hit_anim + .ref dnk_2_knee_hit_anim + .ref lex_2_knee_hit_anim,lex_4_knee_hit_anim + + .long hrt_2_knee_hit_anim,hrt_4_knee_hit_anim ;0 Bret Hart + .long rzr_2_knee_hit_anim,rzr_4_knee_hit_anim ;1 Razor Ramon + .long und_2_knee_hit_anim,und_4_knee_hit_anim ;2 Undertaker + .long yok_2_knee_hit_anim,yok_4_knee_hit_anim ;3 Yokozuna + .long shn_2_knee_hit_anim,shn_4_knee_hit_anim ;4 Shawn Michaels + .long bam_2_knee_hit_anim,bam_4_knee_hit_anim ;5 Bam Bam + .long dnk_2_knee_hit_anim,dnk_2_knee_hit_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_knee_hit_anim,lex_4_knee_hit_anim ;8 Lex Luger + .long 0,0 ;9 Referee + +#knee_hit_dizzy + .ref hrt_4_knee_hit_dizzy_anim + .ref yok_4_knee_hit_dizzy_anim + .ref rzr_4_knee_hit_dizzy_anim + .ref und_4_knee_hit_dizzy_anim + .ref shn_4_knee_hit_dizzy_anim + .ref bam_4_knee_hit_dizzy_anim + .ref dnk_4_knee_hit_dizzy_anim + .ref lex_4_knee_hit_dizzy_anim + + .long hrt_4_knee_hit_dizzy_anim,hrt_4_knee_hit_dizzy_anim ;0 Bret Hart + .long rzr_4_knee_hit_dizzy_anim,rzr_4_knee_hit_dizzy_anim ;1 Razor Ramon + .long und_4_knee_hit_dizzy_anim,und_4_knee_hit_dizzy_anim ;4 Undertaker + .long yok_4_knee_hit_dizzy_anim,yok_4_knee_hit_dizzy_anim ;3 Yokozuna + .long shn_4_knee_hit_dizzy_anim,shn_4_knee_hit_dizzy_anim ;4 Shawn Michaels + .long bam_4_knee_hit_dizzy_anim,bam_4_knee_hit_dizzy_anim ;5 Bam Bam + .long dnk_4_knee_hit_dizzy_anim,dnk_4_knee_hit_dizzy_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_4_knee_hit_dizzy_anim,lex_4_knee_hit_dizzy_anim ;8 Lex Luger + .long 0,0 ;9 Referee + + +#***************************************************************************** +;AMODE_KNEE 27 + SUBR hit_headknees + + WRSNDX KICK_L1,KICK_L2 + +;MJT Start +; GETLIFE +; jrz #isdead +;MJT End + + movi 40000h,a0 + move a0,*a13(OBJ_YVEL),L + + FACETBL #knee_hit + calla change_anim1a + + calla wres_collis_off + rets + +;#isdead + +;MJT Start +; 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 + +;MJT End + calla wres_collis_off + rets + +#knee_hit +;FIX!! +;NOTE: Meter will come out if dizzy achieved, yet this reaction does +;not end in a dizzy! + + .ref dnk_quick_knee_hit_anim + .ref hrt_quick_knee_hit_anim + .ref yok_quick_knee_hit_anim + .ref bam_quick_knee_hit_anim + .ref und_quick_knee_hit_anim + .ref rzr_quick_knee_hit_anim + .ref shn_quick_knee_hit_anim + .ref lex_quick_knee_hit_anim + + .long hrt_quick_knee_hit_anim ;0 Bret Hart + .long rzr_quick_knee_hit_anim ;1 Razor Ramon + .long und_quick_knee_hit_anim ;2 Undertaker + .long yok_quick_knee_hit_anim ;3 Yokozuna + .long shn_quick_knee_hit_anim ;4 Shawn Michaels + .long bam_quick_knee_hit_anim ;5 Bam Bam + .long dnk_quick_knee_hit_anim ;6 Doink + .long 0 ;7 spare + .long lex_quick_knee_hit_anim ;8 Lex Luger + .long 0 ;9 Referee + + +;MJT Start +;AMODE_GRAPPLE 13 +;MJT End + +#***************************************************************************** +;AMODE_BOXPUNCH 14 + SUBR hit_boxpunch + + 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 + rets + +#noblock + +;All of the damage amounts need to be in lookup tables linked to the wrestler +;who actually struck the blow. + + .ref CALL_FACE_HIT + CALLA CALL_FACE_HIT + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + +;MJT Start + WRSNDX FLYKICK_L1,FLYKICK_L2 + GETLIFE + jrz #skip + + + SETMODE NORMAL +#skip +;MJT End + movi 5*TSEC,a0 + move a0,*a13(GETUP_TIME) + + 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 + +#isdead + calla wres_collis_off + rets + +;#fall_back +; .long hrt_fall_back_anim ;0 Bret Hart +; .long rzr_fall_back_anim ;1 Razor Ramon +; .long und_fall_back_anim ;2 Undertaker +; .long yok_fall_back_anim ;3 Yokozuna +; .long shn_fall_back_anim ;4 Shawn Michaels +; .long bam_fall_back_anim ;5 Bam Bam +; .long dnk_fall_back_anim ;6 Doink +; .long 0 ;7 spare +; .long lex_fall_back_anim ;8 Lex Luger +; .long 0 ;9 Referee + +****************************************************************************** + .end + + \ No newline at end of file diff --git a/BACKUP/REACT4.ASM b/BACKUP/REACT4.ASM new file mode 100644 index 0000000..5b8087f --- /dev/null +++ b/BACKUP/REACT4.ASM @@ -0,0 +1,626 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react4.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 change_anim1a + .ref wres_collis_off +;MJT Start +; .ref inc_burnout +;MJT End + .ref block_hit + .ref face_each_other + .REF CALL_NASTY_MOVE + .ref set_getup_time + .ref check_dizzy + .ref fall_back_tbl + .ref triple_sound + .ref ADD_IF_SILENT + .REF CALL_DROP_KICK,CALL_AVERAGE_MOVE + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + + +;BAM BAM + .ref bam_2_head_hit2_anim,bam_4_head_hit2_anim + .ref bam_hitonground_anim + .ref bam_3_butt_drop_anim + +;DOINK + .ref dnk_2_head_hit2_anim,dnk_4_head_hit2_anim + .ref dnk_knockdwn_anim +; .ref dnk_knockdwn_dizzy_anim + .ref dnk_fall_back_anim + .ref dnk_head_hit_dizzy_anim + .ref dnk_hitonground_anim + .ref dnk_3_head_held_anim + .ref dnk_belly_anim + +;BRET + .ref hrt_2_head_hit2_anim,hrt_4_head_hit2_anim + .ref hrt_hitonground_anim,hrt_fall_back_anim + .ref hrt_4_head_hit_dizzy_anim + .ref hrt_running_ground_punch_anim + +;LEX + .ref lex_4_head_hit2_anim + .ref lex_fall_back_anim + .ref lex_head_hit_dizzy_anim + .ref lex_2_head_hit2_anim + .ref lex_hitonground_anim + .ref lex_flying_ground_punch_anim + +;RAZOR + .ref rzr_2_head_hit2_anim,rzr_4_head_hit2_anim + .ref rzr_2_head_hit3_anim,rzr_4_head_hit3_anim + + .ref rzr_fall_back_anim + .ref rzr_hitonground_anim + +;SHAWN + .ref shn_2_head_hit3_anim,shn_4_head_hit3_anim + .ref shn_4_head_hit_dizzy_anim + .ref shn_hitonground_anim + .ref shn_fall_back_anim + +;TAKER + .ref und_2_head_hit2_anim,und_4_head_hit2_anim + .ref und_fall_back_anim + .ref und_hitonground_anim ;2 Undertaker + .ref und_flying_butt_drop_anim + +;YOKO + .ref yok_2_head_hit2_anim,yok_4_head_hit2_anim + .ref yok_2_head_hit3_anim,yok_4_head_hit3_anim + .ref yok_fall_back_anim + .ref yok_hitonground_anim + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +;AMODE_STOMP 15 +;AMODE_BUTTSTOMP 30 + SUBR hit_stomp + SUBR hit_buttstomp + + ;if we're standing, ignore this + move *a13(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + jrz #isdead + cmpi MODE_BLOCK,a0 + jrz #isdead + + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + +;MJT Start +; calla inc_burnout +;MJT End + +;;; SETMODE 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 hitonground + calla change_anim1a + + move *a10(ANIBASE),a0,L + + cmpi dnk_belly_anim,a0 + jreq #bounce + + cmpi und_flying_butt_drop_anim,a0 + jreq #bounce + + cmpi lex_flying_ground_punch_anim,a0 + jreq #bounce3 + +; cmpi hrt_running_ground_punch_anim,a0 +; jreq #bounce2 + + jruc #isdead + +#bounce2 + ;REALLY NASTY HACK! Watch out if you modify this in any way. + callr #bounce + movi -10000h,a0 + move a0,*a10(OBJ_ZVEL),L + rets + +#bounce3 + ;REALLY NASTY HACK! Watch out if you modify this in any way. + callr #bounce + movi 40000h,a0 + move a0,*a10(OBJ_YVEL),L + rets + +#bounce +;Bounce doink up off from opponents chest before he hits the ground! + movi 50000h,a0 + move a0,*a10(OBJ_YVEL),L + movi 10000h,a0 + move a0,*a10(OBJ_ZVEL),L + clr a0 + move a0,*a10(OBJ_XVEL),L + + .ref shake_all_ropes + calla shake_all_ropes + PUSH a10 + movi 8,a10 + .ref SHAKER2 + calla SHAKER2 + PULL a10 + +#isdead + calla wres_collis_off + rets + +hitonground + .long hrt_hitonground_anim ;0 Bret Hart + .long rzr_hitonground_anim ;1 Razor Ramon + .long und_hitonground_anim ;2 Undertaker + .long yok_hitonground_anim ;3 Yokozuna + .long shn_hitonground_anim ;4 Shawn Michaels + .long bam_hitonground_anim ;5 Bam Bam + .long dnk_hitonground_anim ;6 Doink + .long 0 ;7 spare + .long lex_hitonground_anim ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** +;AMODE_BSTOMP 26 + SUBR hit_bstomp + + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + +;MJT Start +; calla inc_burnout +;MJT End + + calla wres_collis_off + + move *a13(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #on_grnd + cmpi MODE_DEAD,a0 + jrz #on_grnd + +;Knock standing opponent onto ground + +; move *a13(PLYR_DIZZY),a0 +; jrz #nodiz +; +; FACETBL #knockdwn_dizzy +; calla change_anim1a +; calla wres_collis_off +; rets +; +;#nodiz + calla set_getup_time + + FACETBL knockdwn + calla change_anim1a + calla wres_collis_off + rets + +#on_grnd + FACETBL hitonground + calla change_anim1a +#isdead + calla wres_collis_off + rets + +knockdwn + .ref hrt_knockdwn_anim + .ref rzr_knockdwn_anim + .ref und_knockdwn_anim + .ref yok_knockdwn_anim + .ref shn_knockdwn_anim + .ref bam_knockdwn_anim + .ref dnk_knockdwn_anim + .ref lex_knockdwn_anim + + .long hrt_knockdwn_anim ;0 Bret Hart + .long rzr_knockdwn_anim ;1 Razor Ramon + .long und_knockdwn_anim ;2 Undertaker + .long yok_knockdwn_anim ;3 Yokozuna + .long shn_knockdwn_anim ;4 Shawn Michaels + .long bam_knockdwn_anim ;5 Bam Bam + .long dnk_knockdwn_anim ;6 Doink + .long 0 ;7 spare + .long lex_knockdwn_anim ;8 Lex Luger + .long 0 ;9 Referee + +;#knockdwn_dizzy +; .long dnk_knockdwn_dizzy_anim ;0 Bret Hart +; .long dnk_knockdwn_dizzy_anim ;1 Razor Ramon +; .long dnk_knockdwn_dizzy_anim ;2 Undertaker +; .long dnk_knockdwn_dizzy_anim ;3 Yokozuna +; .long dnk_knockdwn_dizzy_anim ;4 Shawn Michaels +; .long dnk_knockdwn_dizzy_anim ;5 Bam Bam +; .long dnk_knockdwn_dizzy_anim ;6 Doink +; .long dnk_knockdwn_dizzy_anim ;7 spare +; .long dnk_knockdwn_dizzy_anim ;8 Lex Luger +; .long dnk_knockdwn_dizzy_anim ;9 Referee + +#***************************************************************************** +;AMODE_hammer 29 + SUBR hit_hammer + + movi 45h,a0 + calla triple_sound + calla CALL_NASTY_MOVE + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + +;MJT Start +; calla inc_burnout +;MJT End + + calla wres_collis_off + + move *a13(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #on_grnd + cmpi MODE_DEAD,a0 + jrz #on_grnd + +;Knock standing opponent onto ground + +; move *a13(PLYR_DIZZY),a0 +; jrz #nodiz +; +; FACETBL #knockdwn_dizzy +; calla change_anim1a +; calla wres_collis_off +; rets +; +;#nodiz + calla set_getup_time + + FACETBL knockdwn + calla change_anim1a + calla wres_collis_off + rets + +#on_grnd + FACETBL hitonground + calla change_anim1a +#isdead + calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_SPINKICK 16 + SUBR hit_spinkick + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + movi 43h,a0 + calla triple_sound + calla CALL_AVERAGE_MOVE + + GETLIFE + jrz #isdead + +; WRSNDX KICK_L1,KICK_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 + calla change_anim1a +#isdead + calla wres_collis_off + rets + +#not_dizzy + +;MJT Start +; calla inc_burnout +;MJT End + SETMODE NORMAL + move *a13(OBJ_YPOSINT),a14 + move *a13(GROUND_Y),a0 + sub a0,a14 + cmpi 20,a14 + jrge #fall_back + + + FACE24TBL #head_hit2 + calla change_anim1a + 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 + +#head_hit2 + .ref lex_2_head_hit3_anim,lex_4_head_hit3_anim + .ref hrt_2_head_hit3_anim,hrt_4_head_hit3_anim + + .long hrt_2_head_hit3_anim,hrt_4_head_hit3_anim ;0 Bret Hart + + .long rzr_2_head_hit3_anim,rzr_4_head_hit3_anim ;1 Razor Ramon + .long und_2_head_hit2_anim,und_4_head_hit2_anim ;2 Undertaker + .long yok_2_head_hit3_anim,yok_4_head_hit3_anim ;3 Yokozuna + .long shn_2_head_hit3_anim,shn_4_head_hit3_anim ;4 Shawn Michaels + .long bam_2_head_hit2_anim,bam_4_head_hit2_anim ;5 Bam Bam + .long dnk_2_head_hit2_anim,dnk_4_head_hit2_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_head_hit3_anim,lex_4_head_hit3_anim ;8 Lex Luger + .long 0,0 ;9 Referee + +#head_hit_dizzy + .ref bam_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim + .ref und_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim + + .long hrt_4_head_hit_dizzy_anim,hrt_4_head_hit_dizzy_anim ;0 Bret Hart + .long rzr_4_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim ;1 Razor Ramon + .long und_head_hit_dizzy_anim,und_head_hit_dizzy_anim ;2 Undertaker + .long yok_4_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim ;3 Yokozuna + .long shn_4_head_hit_dizzy_anim,shn_4_head_hit_dizzy_anim ;4 Shawn Michaels + .long bam_head_hit_dizzy_anim,bam_head_hit_dizzy_anim ;5 Bam Bam + .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_head_hit_dizzy_anim,lex_head_hit_dizzy_anim ;8 Lex Luger + .long 0,0 ;9 Referee + +#***************************************************************************** +;AMODE_CLINE 17 + SUBR hit_cline + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + calla CALL_DROP_KICK + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + +;MJT Start + WRSNDX FLYKICK_L1,FLYKICK_L2 + GETLIFE + jrz #skip + + +; calla inc_burnout + + SETMODE NORMAL + +#skip +;MJT End +; move *a10(OBJ_XVEL),a0,L ;slow down doink's +; sra 1,a0 ;x_vel after collis +; move a0,*a10(OBJ_XVEL),L + + clr a0 + move a0,*a10(OBJ_ZVEL),L ;Zero zvel after collis + + move a0,*a13(ROLL_POS) + calla set_getup_time + + FACETBL #fall_back2 + calla change_anim1a + + + movi [3,0],a2 + move *a10(OBJ_XVEL),a0,L + jrp #fall_right + neg 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 + +#isdead + calla wres_collis_off + rets + +#fall_back2 + + .ref rzr_fall_back2_anim ;1 Razor Ramon + .ref und_fall_back2_anim ;2 Undertaker + .ref yok_fall_back2_anim ;3 Yokozuna + .ref shn_fall_back2_anim ;4 Shawn Michaels + .ref bam_fall_back_anim + .ref bam_fall_back2_anim + .ref dnk_fall_back2_anim ;6 Doink + .ref lex_fall_back2_anim ;8 Lex Luger + .ref hrt_fall_back2_anim ;8 Lex Luger + + .long hrt_fall_back2_anim ;0 Bret Hart + .long rzr_fall_back2_anim ;1 Razor Ramon + .long und_fall_back2_anim ;2 Undertaker + .long yok_fall_back2_anim ;3 Yokozuna + .long shn_fall_back2_anim ;4 Shawn Michaels + .long bam_fall_back2_anim ;5 Bam Bam + .long dnk_fall_back2_anim ;6 Doink + .long 0 ;7 spare + .long lex_fall_back2_anim ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** +;AMODE_HEADHOLD 18 + SUBR hit_headhold + + rets + +#***************************************************************************** +;AMODE_JUMPKICK 19 + SUBR hit_jumpkick + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + GETLIFE + jrz #isdead + + WRSNDX KICK_L1,KICK_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 + calla change_anim1a + +#isdead + calla wres_collis_off + rets + +#not_dizzy + +;MJT Start +; calla inc_burnout +;MJT End + + SETMODE NORMAL + + FACE24TBL #head_hit2 + calla change_anim1a + calla wres_collis_off + + rets + +#head_hit2 + .long hrt_2_head_hit2_anim,hrt_4_head_hit2_anim ;0 Bret Hart + .long rzr_2_head_hit2_anim,rzr_4_head_hit2_anim ;1 Razor Ramon + .long und_2_head_hit2_anim,und_4_head_hit2_anim ;2 Undertaker + .long yok_2_head_hit2_anim,yok_4_head_hit2_anim ;3 Yokozuna + .long shn_2_head_hit3_anim,shn_4_head_hit3_anim ;4 Shawn Michaels + .long bam_2_head_hit2_anim,bam_4_head_hit2_anim ;5 Bam Bam + .long dnk_2_head_hit2_anim,dnk_4_head_hit2_anim ;6 Doink + .long dnk_2_head_hit2_anim,dnk_4_head_hit2_anim ;7 spare + .long lex_2_head_hit2_anim,lex_4_head_hit2_anim ;8 Lex Luger + .long dnk_2_head_hit2_anim,dnk_4_head_hit2_anim ;9 Referee + +#head_hit_dizzy + .ref bam_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim + .ref und_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim + + .long hrt_4_head_hit_dizzy_anim,hrt_4_head_hit_dizzy_anim ;0 Bret Hart + .long rzr_4_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim ;1 Razor Ramon + .long und_head_hit_dizzy_anim,und_head_hit_dizzy_anim ;2 Undertaker + .long yok_4_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim ;3 Yokozuna + .long shn_4_head_hit_dizzy_anim,shn_4_head_hit_dizzy_anim ;4 Shawn Michaels + .long bam_head_hit_dizzy_anim,bam_head_hit_dizzy_anim ;5 Bam Bam + .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;6 Doink + .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;7 spare + .long lex_head_hit_dizzy_anim,lex_head_hit_dizzy_anim ;8 Lex Luger + .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;9 Referee + + +****************************************************************************** + + .end + + \ No newline at end of file diff --git a/BACKUP/REACT5.ASM b/BACKUP/REACT5.ASM new file mode 100644 index 0000000..aad000e --- /dev/null +++ b/BACKUP/REACT5.ASM @@ -0,0 +1,742 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react5.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 change_anim1a + .ref wres_collis_off +;MJT Start +; .ref inc_burnout +;MJT End + .ref block_hit + .ref create_damage_points + .ref slide_offscr + .ref check_dizzy + .ref wres_slave_anim + .ref triple_sound,CALL_AVERAGE_MOVE + .REF CALL_NASTY_MOVE + + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + + +;BAM BAM + .ref bam_2_head_hit2_anim + .ref bam_4_head_hit2_anim + .ref bam_4_losebal_anim + .ref bam_fall_back_anim + .ref bam_get_buzz_anim + +;DOINK + .ref dnk_2_bncoff_anim + .ref dnk_4_bncoff_dizzy_anim + .ref dnk_4_bncoff_anim + .ref dnk_4_losebal_anim + .ref dnk_4_losebal_dizzy_anim + .ref dnk_get_buzz_anim + .ref dnk_head_hit2_anim + .ref dnk_head_hit_dizzy_anim + .ref dnk_2_head_hit2_anim,dnk_4_head_hit2_anim + .ref dnk_fall_back_anim + +;BRET + .ref hrt_fall_back_anim,hrt_4_losebal_dizzy_anim + .ref hrt_2_head_hit2_anim,hrt_4_head_hit2_anim + .ref hrt_4_head_hit_dizzy_anim + .ref hrt_get_buzz_anim,hrt_4_losebal_anim + +;LEX + .ref lex_2_head_hit2_anim,lex_4_head_hit2_anim + .ref lex_head_hit_dizzy_anim + .ref lex_4_losebal_anim + .ref lex_fall_back_anim + .ref lex_get_buzz_anim + +;RAZOR + .ref rzr_2_head_hit2_anim,rzr_4_head_hit2_anim + .ref rzr_4_losebal_anim + .ref rzr_fall_back_anim + .ref rzr_get_buzz_anim + +;SHAWN + .ref shn_4_head_hit_dizzy_anim + .ref shn_2_head_hit3_anim,shn_4_head_hit3_anim + .ref shn_fall_back_anim + .ref shn_4_losebal_anim + .ref shn_get_buzz_anim + +;TAKER + .ref und_fall_back_anim + .ref und_get_buzz_anim + .ref und_2_head_hit2_anim,und_4_head_hit2_anim + .ref und_head_hit_dizzy_anim + .ref und_4_losebal_dizzy_anim + .ref und_4_losebal_anim + .ref und_4_bncoff_dizzy_anim + .ref und_2_bncoff_anim,und_4_bncoff_anim + +;YOKO + .ref yok_fall_back_anim + .ref yok_get_buzz_anim + .ref yok_4_losebal_anim + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +#***************************************************************************** +;AMODE_RUN 20 + SUBR hit_run + +;Tell running wrestler to stop running, and push other guy out of the way. + + +;Ignore most running collisions + move *a13(OBJ_ZPOS),a0,L + move *a10(OBJ_ZPOS),a1,L + sub a0,a1 + abs a1 + srl 16,a1 +;FIXX!! Unless it is Yoko! + move *a10(WRESTLERNUM),a0 + cmpi 3,a0 + jrnz #notyok +;Yoko + cmpi 15,a1 ;if yoko + jrlt #cont +#notyok + cmpi 6,a1 + jrgt #isdead + +#cont + move *a13(PLYRMODE),a1 + + cmpi MODE_INAIR,a1 + jrz #isdead + cmpi MODE_INAIR2,a1 + jrz #isdead + + 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 + + movi [3,0],a0 + move a0,*a13(OBJ_YVEL),L + + jruc #gotblk + +#noblock +;If player is on ground, ignore running collisions! + move *a13(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #isdead + + GETLIFE + jrz #isdead + + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + + SETMODE NORMAL + + + + + + FACETBL #losebal + + + move *a10(WRESTLERNUM),a1 + cmpi 3,a1 + jrnz #notyok2 +;Yoko ran into me! + .ref fall_back_tbl + FACETBL fall_back_tbl + calla change_anim1a + + 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 + movi [-3,0],a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + + jruc #gotblk + +; move *a13(PLYR_DIZZY),a1 +; jrz #notdiz +;;Guy is dizzy, need to stay in dizzy after losing balance +; FACETBL #losebal_dizzy +; +;#notdiz + +#notyok2 + calla change_anim1a + +#gotblk + calla wres_collis_off + +;This is what happens to running wrestler. + + movi [3,0],a0 + move a0,*a10(OBJ_YVEL),L + + movi MODE_NORMAL,a0 + move a0,*a10(PLYRMODE) + + move *a10(PLYR_DIZZY),a0 + jrz #notdiz0 + +;Running guy is in dizzy mode, bounce off and stay dizzy! + clr a0 + move a0,*a10(RUN_TIME) + SWAP a10,a13 + + FACETBL #bncoff_dizzy + jruc #cnt + +#notdiz0 + + move *a10(GETUP_TIME),a0 + jrz #noxfer + + + + move *a10(PLYRNUM),a0 + cmpi 2,a0 + jrge #noxfer +;Drones do not have getup meters! + + + + + PUSH a8,a9,a10 +;Cause getup meter to slide off screen. + move *a10(METER_PROC),a0,L + move *a0(PA8),a8,L + move *a0(PA9),a9,L + move *a0(PA10),a10,L + movi GETUP_PID,a1 + movi slide_offscr,a7 + calla XFERPROC + PULL a8,a9,a10 + +#noxfer + clr a0 + move a0,*a10(RUN_TIME) + move a0,*a13(RUN_TIME) + move a0,*a10(GETUP_TIME) + + + SWAP a10,a13 + + FACE24TBL #bncoff +#cnt + calla change_anim1a + SWAP a10,a13 + + movi [3,0],a2 + move *a10(OBJ_XPOSINT),a0 + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;offx - defx + jrlt #right + neg a2 +#right + move a2,*a10(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets + +#losebal + .long hrt_4_losebal_anim ;0 Bret Hart + .long rzr_4_losebal_anim ;1 Razor Ramon + .long und_4_losebal_anim ;2 Undertaker + .long yok_4_losebal_anim ;3 Yokozuna + .long shn_4_losebal_anim ;4 Shawn Michaels + .long bam_4_losebal_anim ;5 Bam Bam + .long dnk_4_losebal_anim ;6 Doink + .long dnk_4_losebal_anim ;7 spare + .long lex_4_losebal_anim ;8 Lex Luger + .long dnk_4_losebal_anim ;9 Referee + +;Fix!!! +;#losebal_dizzy +; .long hrt_4_losebal_dizzy_anim ;0 Bret Hart +; .long dnk_4_losebal_dizzy_anim ;1 Razor Ramon +; .long und_4_losebal_dizzy_anim ;2 Undertaker +; .long dnk_4_losebal_dizzy_anim ;3 Yokozuna +; .long dnk_4_losebal_dizzy_anim ;4 Shawn Michaels +; .long dnk_4_losebal_dizzy_anim ;5 Bam Bam +; .long dnk_4_losebal_dizzy_anim ;6 Doink +; .long dnk_4_losebal_dizzy_anim ;7 spare +; .long dnk_4_losebal_dizzy_anim ;8 Lex Luger +; .long dnk_4_losebal_dizzy_anim ;9 Referee +#bncoff + .ref rzr_2_bncoff_anim,rzr_4_bncoff_anim + .ref hrt_2_bncoff_anim,hrt_4_bncoff_anim + .ref bam_2_bncoff_anim,bam_4_bncoff_anim + .ref yok_2_bncoff_anim,yok_4_bncoff_anim + .ref shn_2_bncoff_anim,shn_4_bncoff_anim + .ref lex_2_bncoff_anim,lex_4_bncoff_anim + .ref und_2_bncoff_anim,und_4_bncoff_anim + + .long hrt_2_bncoff_anim,hrt_4_bncoff_anim ;0 Bret Hart + .long rzr_2_bncoff_anim,rzr_4_bncoff_anim ;1 Razor Ramon + .long und_2_bncoff_anim,und_4_bncoff_anim ;2 Undertaker + .long yok_2_bncoff_anim,yok_4_bncoff_anim ;3 Yokozuna + .long shn_2_bncoff_anim,shn_4_bncoff_anim ;4 Shawn Michaels + .long bam_2_bncoff_anim,bam_4_bncoff_anim ;5 Bam Bam + .long dnk_2_bncoff_anim,dnk_4_bncoff_anim ;6 Doink + .long dnk_2_bncoff_anim,dnk_4_bncoff_anim ;7 spare + .long lex_2_bncoff_anim,lex_4_bncoff_anim ;8 Lex Luger + .long dnk_2_bncoff_anim,dnk_4_bncoff_anim ;9 Referee + +#bncoff_dizzy + .ref rzr_4_bncoff_dizzy_anim + .ref hrt_4_bncoff_dizzy_anim + .ref bam_4_bncoff_dizzy_anim + .ref yok_4_bncoff_dizzy_anim + .ref shn_4_bncoff_dizzy_anim + .ref und_4_bncoff_dizzy_anim + .ref lex_4_bncoff_dizzy_anim + + .long hrt_4_bncoff_dizzy_anim ;0 Bret Hart + .long rzr_4_bncoff_dizzy_anim ;1 Razor Ramon + .long und_4_bncoff_dizzy_anim ;2 Undertaker + .long yok_4_bncoff_dizzy_anim ;3 Yokozuna + .long shn_4_bncoff_dizzy_anim ;4 Shawn Michaels + .long bam_4_bncoff_dizzy_anim ;5 Bam Bam + .long dnk_4_bncoff_dizzy_anim ;6 Doink + .long dnk_4_bncoff_dizzy_anim ;7 spare + .long lex_4_bncoff_dizzy_anim ;8 Lex Luger + .long dnk_4_bncoff_dizzy_anim ;9 Referee + + +#***************************************************************************** +;AMODE_PUPPET 21 + SUBR hit_puppet + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + +;Check for special head hold thru block +; move *a10(ANIBASE),a0,L +; .ref dnk_3_head_hold2_anim +; cmpi dnk_3_head_hold2_anim,a0 +; jrz #noblock +; .ref bam_3_head_hold2_anim +; cmpi bam_3_head_hold2_anim,a0 +; jrz #noblock + + calla block_hit + rets + +#noblock + + SETMODE PUPPET + + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + + movi wres_slave_anim,a0 + calla change_anim1a + + clr a0 + move a0,*a13(GETUP_TIME) + + calla wres_collis_off + rets + +#***************************************************************************** +;AMODE_PUPPET2 31 + SUBR hit_puppet2 + +;A puppet mode for ignoring puppet move if getup time is zero +;Used for hair pickup against a rolling/getting up opponent! + + move *a13(GETUP_TIME),a0 + jrz #out + + SETMODE PUPPET + + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + + movi wres_slave_anim,a0 + calla change_anim1a + + clr a0 + move a0,*a13(GETUP_TIME) + + calla wres_collis_off + rets +#out + move *a10(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a10(ANIMODE) + + calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_PUPPET 32 + SUBR hit_puppet3 + +;This is a special attack mode which ignores blocking opponents! + + SETMODE PUPPET + + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + + movi wres_slave_anim,a0 + calla change_anim1a + + clr a0 + move a0,*a13(GETUP_TIME) + + calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_BACKHAND 22 - SLAP + SUBR hit_backhand + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + movi 43h,a0 + calla triple_sound + + calla CALL_AVERAGE_MOVE + + GETLIFE + jrz #isdead + +; WRSNDX HDBUTT_L1,HDBUTT_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 + calla change_anim1a + +#isdead + calla wres_collis_off + rets + +#not_dizzy + +;MJT Start +; calla inc_burnout +;MJT End + + SETMODE NORMAL + + FACE24TBL #head_hit2 + calla change_anim1a + + calla wres_collis_off + + rets + +#head_hit2 +;No z float.. + .ref lex_2_head_hit3_anim,lex_4_head_hit3_anim + .ref rzr_2_head_hit3_anim,rzr_4_head_hit3_anim + .ref yok_2_head_hit3_anim,yok_4_head_hit3_anim + .ref hrt_2_head_hit3_anim,hrt_4_head_hit3_anim + + .long hrt_2_head_hit3_anim,hrt_4_head_hit3_anim ;0 Bret Hart + .long rzr_2_head_hit3_anim,rzr_4_head_hit3_anim ;1 Razor Ramon + .long und_2_head_hit2_anim,und_4_head_hit2_anim ;2 Undertaker + .long yok_2_head_hit3_anim,yok_4_head_hit3_anim ;3 Yokozuna + .long shn_2_head_hit3_anim,shn_4_head_hit3_anim ;4 Shawn Michaels + .long bam_2_head_hit2_anim,bam_4_head_hit2_anim ;5 Bam Bam + .long dnk_2_head_hit2_anim,dnk_4_head_hit2_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_head_hit3_anim,lex_4_head_hit3_anim ;8 Lex Luger + .long 0,0 ;9 Referee + +#head_hit_dizzy + .ref bam_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim + .ref und_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim + + .long hrt_4_head_hit_dizzy_anim,hrt_4_head_hit_dizzy_anim ;0 Bret Hart + .long rzr_4_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim ;1 Razor Ramon + .long und_head_hit_dizzy_anim,und_head_hit_dizzy_anim ;2 Undertaker + .long yok_4_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim ;3 Yokozuna + .long shn_4_head_hit_dizzy_anim,shn_4_head_hit_dizzy_anim ;4 Shawn Michaels + .long bam_head_hit_dizzy_anim,bam_head_hit_dizzy_anim ;5 Bam Bam + .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_head_hit_dizzy_anim,lex_head_hit_dizzy_anim ;8 Lex Luger + .long 0,0 ;9 Referee + + +#***************************************************************************** +;AMODE_EARSLAP 28 - SLAP + SUBR hit_earslap + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + movi 43h,a0 + calla triple_sound + + GETLIFE + jrz #isdead + + + move *a13(PLYR_DIZZY),a0 + jrnz #diz + + calla check_dizzy + jrz #not_dizzy + + movi 5*TSEC,a0 + move a0,*a13(GETUP_TIME) + +#diz + FACETBL #head_hit_dizzy + calla change_anim1a + +#isdead + calla wres_collis_off + rets + +#not_dizzy + +;MJT Start +; calla inc_burnout +;MJT End + + SETMODE NORMAL + + FACETBL #head_hit2 + calla change_anim1a + + calla wres_collis_off + + rets + +#head_hit2 +;No z float.. + .ref lex_4_head_hit4_anim + .ref rzr_4_head_hit4_anim + .ref yok_4_head_hit4_anim + .ref hrt_4_head_hit4_anim + .ref und_4_head_hit4_anim + .ref bam_4_head_hit4_anim + .ref dnk_4_head_hit4_anim + .ref shn_4_head_hit4_anim + + .long hrt_4_head_hit4_anim ;0 Bret Hart + .long rzr_4_head_hit4_anim ;1 Razor Ramon + .long und_4_head_hit4_anim ;2 Undertaker + .long yok_4_head_hit4_anim ;3 Yokozuna + .long shn_4_head_hit4_anim ;4 Shawn Michaels + .long bam_4_head_hit4_anim ;5 Bam Bam + .long dnk_4_head_hit4_anim ;6 Doink + .long 0 ;7 spare + .long lex_4_head_hit4_anim ;8 Lex Luger + .long 0 ;9 Referee + +#head_hit_dizzy + + .long hrt_4_head_hit_dizzy_anim + .long rzr_4_head_hit_dizzy_anim + .long und_head_hit_dizzy_anim + .long yok_4_head_hit_dizzy_anim + .long shn_4_head_hit_dizzy_anim + .long bam_head_hit_dizzy_anim + .long dnk_head_hit_dizzy_anim + .long 0 ;7 spare + .long lex_head_hit_dizzy_anim + .long 0 ;9 Referee + + +#***************************************************************************** +;AMODE_BUZZ 23 + SUBR hit_buzz + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + +;All of the damage amounts need to be in lookup tables linked to the wrestler +;who actually struck the blow. + calla CALL_NASTY_MOVE + + + GETLIFE +;Bug! We want to see the electrocution! +;FIX!! + jrz #isdead + + SETMODE NORMAL + +#isdead + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + +; movi wres_slave_anim,a0 +; calla change_anim1a + + + calla create_damage_points +;Buzz sound + WRSNDX PUNCH_L1,PUNCH_L2 + + FACETBL #get_buzz + calla change_anim1a + calla wres_collis_off + + rets + +#get_buzz + .long hrt_get_buzz_anim ;0 Bret Hart + .long rzr_get_buzz_anim ;1 Razor Ramon + .long und_get_buzz_anim ;2 Undertaker + .long yok_get_buzz_anim ;3 Yokozuna + .long shn_get_buzz_anim ;4 Shawn Michaels + .long bam_get_buzz_anim ;5 Bam Bam + .long dnk_get_buzz_anim ;6 Doink + .long 0 ;7 spare + .long lex_get_buzz_anim ;8 Lex Luger + .long 0 ;9 Referee + +#***************************************************************************** +;AMODE_HAYMAKER 24 + SUBR hit_haymaker + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + +; movi 40,a0 +; calla inc_getup_time + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + +;MJT Start + WRSNDX FLYKICK_L1,FLYKICK_L2 + GETLIFE + jrz #skip + + SETMODE NORMAL +#skip + FACETBL #fall_back + 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 + +#isdead + calla wres_collis_off + rets + +#fall_back + .long hrt_fall_back_anim ;0 Bret Hart + .long rzr_fall_back_anim ;1 Razor Ramon + .long und_fall_back_anim ;2 Undertaker + .long yok_fall_back_anim ;3 Yokozuna + .long shn_fall_back_anim ;4 Shawn Michaels + .long bam_fall_back_anim ;5 Bam Bam + .long dnk_fall_back_anim ;6 Doink + .long 0 ;7 spare + .long lex_fall_back_anim ;8 Lex Luger + .long 0 ;9 Referee + + +****************************************************************************** + + .end + + + + \ No newline at end of file diff --git a/BACKUP/REACT6.ASM b/BACKUP/REACT6.ASM new file mode 100644 index 0000000..47154c2 --- /dev/null +++ b/BACKUP/REACT6.ASM @@ -0,0 +1,69 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react6.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 change_anim1a +;MJT Start +; .ref inc_burnout +;MJT End + .ref set_getup_time + .ref wres_collis_off + .ref block_hit + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +;AMODE_ATT28 28 + SUBR hit_att28 + + rets + + +#***************************************************************************** +;AMODE_ATT29 29 + SUBR hit_att29 + + rets + + +****************************************************************************** + + .end + + \ No newline at end of file diff --git a/BACKUP/REACT7.ASM b/BACKUP/REACT7.ASM new file mode 100644 index 0000000..f8ca0a3 --- /dev/null +++ b/BACKUP/REACT7.ASM @@ -0,0 +1,94 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react7.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 + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + +;BAM BAM +;DOINK +;BRET +;LEX +;RAZOR +;SHAWN +;TAKER +;YOKO + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + + +#***************************************************************************** +;AMODE_ATT30 30 + SUBR hit_att30 + + rets + + +#***************************************************************************** +;AMODE_ATT31 31 + SUBR hit_att31 + + rets + + +#***************************************************************************** +;AMODE_ATT32 32 + SUBR hit_att32 + + rets + + +#***************************************************************************** +;AMODE_ATT33 33 + SUBR hit_att33 + + rets + + +#***************************************************************************** +;AMODE_ATT34 34 + SUBR hit_att34 + + rets + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/REACT8.ASM b/BACKUP/REACT8.ASM new file mode 100644 index 0000000..b565769 --- /dev/null +++ b/BACKUP/REACT8.ASM @@ -0,0 +1,271 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react8.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 CALL_NASTY_MOVE + +;BAM BAM + .ref bam_2_head_hit_anim,bam_4_head_hit_anim + .ref bam_head_hit_dizzy_anim + +;DOINK + .ref dnk_fall_back_anim,dnk_2_head_hit_anim + .ref dnk_head_hit_dizzy_anim,dnk_4_head_hit_anim + +;BRET + .ref hrt_fall_back_anim,hrt_4_head_hit_dizzy_anim + .ref hrt_4_head_hit_anim,hrt_2_head_hit_anim + +;LEX + .ref lex_fall_back_anim,lex_2_head_hit_anim + .ref lex_4_head_hit_anim,lex_head_hit_dizzy_anim + +;RAZOR + .ref rzr_fall_back_anim,rzr_2_head_hit_anim + .ref rzr_4_head_hit_dizzy_anim,rzr_4_head_hit_anim + +;SHAWN + .ref shn_fall_back_anim,shn_4_head_hit_dizzy_anim + .ref shn_2_head_hit_anim,shn_4_head_hit_anim + +;TAKER + .ref und_fall_back_anim,und_head_hit_dizzy_anim + .ref und_2_head_hit_anim,und_4_head_hit_anim + +;YOKO + .ref yok_fall_back_anim,yok_2_head_hit_anim + .ref yok_4_head_hit_dizzy_anim,yok_4_head_hit_anim + + +;MJT Start + .ref change_anim1a,wres_collis_off,block_hit +;,inc_burnout +;MJT End + .ref create_damage_points,set_getup_time,check_dizzy + .ref wres_slave_anim,hit_flykick + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + + +#***************************************************************************** +;AMODE_ATT35 35 + SUBR hit_shnbfkik + + ;This has to be a separate attack mode so damage can be different, + ; but the reaction is same as for a flying kick. + + jauc hit_flykick + +#***************************************************************************** +;AMODE_SHNSPDKIK 36 (shawn speedkick) + SUBR hit_shnspdkik + + 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 + rets + +#noblock + + GETLIFE + jrz #isdead + + calla create_damage_points + + WRSNDX KICK_L1,KICK_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 + calla change_anim1a + +#isdead + calla wres_collis_off + + rets + +#not_dizzy + +;MJT Start +; calla inc_burnout +;MJT End + SETMODE NORMAL + +#do_hit + FACE24TBL #head_hit + calla change_anim1a + calla wres_collis_off + rets + +#head_hit + .long hrt_2_head_hit_anim,hrt_4_head_hit_anim ;0 Bret Hart + .long rzr_2_head_hit_anim,rzr_4_head_hit_anim ;1 Razor Ramon + .long und_2_head_hit_anim,und_4_head_hit_anim ;2 Undertaker + .long yok_2_head_hit_anim,yok_4_head_hit_anim ;3 Yokozuna + .long shn_2_head_hit_anim,shn_4_head_hit_anim ;4 Shawn Michaels + .long bam_2_head_hit_anim,bam_4_head_hit_anim ;5 Bam Bam + .long dnk_2_head_hit_anim,dnk_4_head_hit_anim ;6 Doink + .long dnk_2_head_hit_anim,dnk_4_head_hit_anim ;7 spare + .long lex_2_head_hit_anim,lex_4_head_hit_anim ;8 Lex Luger + .long dnk_2_head_hit_anim,dnk_4_head_hit_anim ;9 Referee + +#head_hit_dizzy + .long hrt_4_head_hit_dizzy_anim,hrt_4_head_hit_dizzy_anim ;0 Bret Hart + .long rzr_4_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim ;1 Razor Ramon + .long und_head_hit_dizzy_anim,und_head_hit_dizzy_anim ;2 Undertaker + .long yok_4_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim ;3 Yokozuna + .long shn_4_head_hit_dizzy_anim,shn_4_head_hit_dizzy_anim ;4 Shawn Michaels + .long bam_head_hit_dizzy_anim,bam_head_hit_dizzy_anim ;5 Bam Bam + .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;6 Doink + .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;7 spare + .long lex_head_hit_dizzy_anim,lex_head_hit_dizzy_anim ;8 Lex Luger + .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;9 Referee + +#***************************************************************************** +;AMODE_ATT37 37 (shawn speed kick, third hit) + SUBR hit_shnspdkik2 + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + +;MJT Start + WRSNDX FLYKICK_L1,FLYKICK_L2 + GETLIFE + jrz #skip + + +; calla inc_burnout + + SETMODE NORMAL +#skip + clr a0 + move a0,*a10(OBJ_ZVEL),L ;Zero zvel after collis + + move a0,*a13(ROLL_POS) + calla set_getup_time + + FACETBL #fall_back + calla change_anim1a + + + 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 + neg a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets + +#fall_back + .long hrt_fall_back_anim ;0 Bret Hart + .long rzr_fall_back_anim ;1 Razor Ramon + .long und_fall_back_anim ;2 Undertaker + .long yok_fall_back_anim ;3 Yokozuna + .long shn_fall_back_anim ;4 Shawn Michaels + .ref bam_fall_back_anim + .long bam_fall_back_anim ;5 Bam Bam + .long dnk_fall_back_anim ;6 Doink + .long dnk_fall_back_anim ;7 spare + .long lex_fall_back_anim ;8 Lex Luger + .long dnk_fall_back_anim ;9 Referee + + +#***************************************************************************** +;AMODE_ATT38 38 + SUBR hit_hitcheck + rets + + +#***************************************************************************** +;AMODE_ARMBREAK 39 + SUBR hit_armbreak + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrne #rets + + SETMODE PUPPET + + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + + movi wres_slave_anim,a0 + calla change_anim1a + + calla wres_collis_off + CALLA CALL_NASTY_MOVE + +#rets + rets + +****************************************************************************** + + .end + + \ No newline at end of file diff --git a/BACKUP/REACT9.ASM b/BACKUP/REACT9.ASM new file mode 100644 index 0000000..6c6f5f3 --- /dev/null +++ b/BACKUP/REACT9.ASM @@ -0,0 +1,93 @@ +************************************************************** +* +* 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 + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + +;BAM BAM +;DOINK +;BRET +;LEX +;RAZOR +;SHAWN +;TAKER +;YOKO + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + + +#***************************************************************************** +;AMODE_BUTTDROP 40 + SUBR hit_buttdrop + + rets + +#***************************************************************************** +;AMODE_ATT41 41 + SUBR hit_att41 + + rets + + +#***************************************************************************** +;AMODE_ATT42 42 + SUBR hit_att42 + + rets + + +#***************************************************************************** +;AMODE_ATT43 43 + SUBR hit_att43 + + rets + + +#***************************************************************************** +;AMODE_ATT44 44 + SUBR hit_att44 + + rets + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/REF.ASM b/BACKUP/REF.ASM new file mode 100644 index 0000000..d011991 --- /dev/null +++ b/BACKUP/REF.ASM @@ -0,0 +1,1232 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 4/16/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "ref.asm" + .title "referee 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 "fontsimg.glo" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .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 change_anim1,change_anim1a + .ref change_anim2,change_anim2a + .ref set_wrestler_xflip + .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 inc_burnout + .ref PCNT + + ;from DCSSOUND.ASM + .ref triple_sound + + ;from DISPLAY.ASM + .ref BEGINOBJ_TBL + + ;from HSTD.ASM + .ref BINBCD + + ;from ROBO.ASM + .ref civanic + + ;from SQUARE.ASM + .ref square_root + + ;from WRESTLE.ASM + .ref get_rope_x,calc_line_pt + .ref set_turbo_status + +;animation sequence + + .ref ref_stand2_anim,ref_stand4_anim + .ref ref_torso2_anim,ref_torso4_anim + + .ref ref_zip_anim + + .ref ref_walk1_f2_anim,ref_walk2_f2_anim,ref_walk4_f2_anim + .ref ref_walk5_f2_anim,ref_walk6_f2_anim,ref_walk8_f2_anim + + .ref ref_walk1_f4_anim,ref_walk2_f4_anim,ref_walk4_f4_anim + .ref ref_walk5_f4_anim,ref_walk6_f4_anim,ref_walk8_f4_anim + + .ref ref_2_to_4_turn_anim,ref_8_to_6_turn_anim ;stand + .ref ref_4_to_2_turn_anim,ref_6_to_8_turn_anim + .ref ref_4_to_6_turn_anim,ref_6_to_4_turn_anim + .ref ref_2_to_8_turn_anim,ref_8_to_2_turn_anim + .ref ref_4_to_8_turn_anim,ref_6_to_2_turn_anim + .ref ref_8_to_4_turn_anim,ref_2_to_6_turn_anim + + .ref ref_2_to_4_turn2_anim,ref_4_to_2_turn2_anim ;torso + .ref ref_4_to_6_turn2_anim,ref_6_to_4_turn2_anim + .ref ref_2_to_8_turn2_anim,ref_8_to_2_turn2_anim + + .ref ref_2_head_hit_anim,ref_4_head_hit_anim,ref_head_hit2_anim + .ref ref_2_body_hit_anim,ref_4_body_hit_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + + .bss uhgrid,9*20h + + .bss grid_index,10h + + BSSX refmove_dir,10h + + BSSX motion_threshhold,10h + BSSX ref_unhap,20h + BSSX last_move,10h + BSSX last_holdstill,10h + +****************************************************************************** +* EQUATES FOR THIS FILE + +MAX_UNHAPPINESS equ 7FFFFFFFh +UHGRID_X equ 4 +UHGRID_Z equ 4 + +GRID_UNHAP equ 0 +GRID_D1 equ 1 +GRID_D2 equ 2 + +REF_DEBUG equ 0 + +BRAIN_FREQ equ 3 ;update move grid every X ticks + + .if REF_DEBUG + BSSX grid_mode,10h + .endif + +#***************************************************************************** + + SUBR ref_ani_init + + .if REF_DEBUG + movi GRID_UNHAP,a14 + move a14,@grid_mode + + CREATE0 grid_display + .endif + + move a13,a8 + CREATE0 ref_brain + + movi ref_stand2_anim,a0 + calla change_anim1a + + movi ref_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* REF CONTROL CODE +* +* a13 = * ref process + + SUBR move_ref + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + clr a0 + move a0,*a13(MOVE_DIR) + + 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_x6 ;13 + .long mode_x7 ;14 + .long mode_x8 ;15 + .long mode_x9 ;16 + +#***************************************************************************** +* + +mode_normal ;0 + + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + callr calc_walk_dir + + calla execute_walk + +#no_interrupt + rets + + + SUBRP calc_walk_dir + + move @refmove_dir,a14 + move a14,*a13(MOVE_DIR) + rets + + +#***************************************************************************** +* Brain process. Continuously updates refmove_dir to show the direction to +* minimize unhappiness. +* >a8 = ref proc + + STRUCTPD + LONG #REFPROC ;UHL ref process + + SUBR ref_brain + + move a8,*a13(#REFPROC),L + + movi 10,a14 + move a14,@motion_threshhold + move @PCNT,a14 + move a14,@last_move + move a14,@last_holdstill + +#main_loop + SLEEPK BRAIN_FREQ + + ;update the motion threshhold + ;if he's been moving continuously for 20 ticks, increment the + ; threshhold. + move @PCNT,a0 + move @last_holdstill,a1 + sub a1,a0 + cmpi 20,a0 + jrlt #no_inc + + move @motion_threshhold,a14 + inc a14 + move a14,@motion_threshhold + move @PCNT,a14 + move a14,@last_holdstill +#no_inc + + ;if he's been holding still continuously for 20 ticks, decrement + ; the threshhold. + move @PCNT,a0 + move @last_move,a1 + sub a1,a0 + cmpi 20,a0 + jrlt #no_dec + + move @motion_threshhold,a14 + dsj a14,#dmt_inrange + clr a14 +#dmt_inrange + move a14,@motion_threshhold + move @PCNT,a14 + move a14,@last_move +#no_dec + + + ;update move_dir + ;reg use + ; a2 - current low unhappiness value (score) + ; a3 - current low unhappiness index (champ) + ; a4 - current index (0-8) + + movi MAX_UNHAPPINESS,a2 + movi 4,a3 + movi 8,a4 + +#search_loop + move *a13(#REFPROC),a5,L + move *a5(OBJ_XPOSINT),a0 + move *a5(OBJ_ZPOSINT),a1 + move a4,a5 + X64 a5 + addi brain_grid,a5 + move *a5+,a14,L + sra 16,a14 + add a14,a0 + move *a5+,a14,L + sra 16,a14 + add a14,a1 + calla calc_unhappiness + cmpi 4,a4 + jrne #skip_refupdate + move a0,@ref_unhap,L +#skip_refupdate + + .if REF_DEBUG + move @grid_mode,a14 + cmpi GRID_UNHAP,a14 + jrne #no_grid_unhap + + move a4,a14 + X32 a14 + addi uhgrid,a14 + move a0,*a14,L +#no_grid_unhap + .endif + + cmp a2,a0 + jrge #too_high + + move a0,a2 + move a4,a3 + +#too_high + dec a4 + jrnn #search_loop + + ;all done. ref_unhap holds unhappiness at ref's current position. + ; a2 holds unhappiness at lowest position. If the best unhappiness + ; is within motion_thresshold of the current unhap, just hold still. + move @ref_unhap,a1,L + sub a2,a1 + .if DEBUG + jrnn #no_bug + LOCKUP ;a2 should never be less than ref_unhap +#no_bug + .endif + move @motion_threshhold,a0 + sub a0,a1 + jrnn #move_off + + ;not enough of a difference to make moving worthwhile + movk 4,a3 + +#move_off + movi last_holdstill,a0 + cmpi 4,a3 + jreq #holdstill + movi last_move,a0 +#holdstill + move @PCNT,a14 + move a14,*a0 + X16 a3 + addi #move_table,a3 + move *a3,a3,W + move a3,@refmove_dir + + jruc #main_loop + +#no_ref + DIE + +#move_table + .word MOVE_UP_LEFT,MOVE_UP,MOVE_UP_RIGHT + .word MOVE_LEFT,MOVE_ZIP,MOVE_RIGHT + .word MOVE_DOWN_LEFT,MOVE_DOWN,MOVE_DOWN_RIGHT + + +#***************************************************************************** +* + +mode_running ;1 + rets + +#***************************************************************************** +* + +mode_inair ;2 + + rets + +#***************************************************************************** +* + +mode_attached ;3 + + rets + +#***************************************************************************** + +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_x6 ;13 +mode_x7 ;14 +mode_x8 ;15 +mode_x9 ;16 + rets + + +#***************************************************************************** + +#VEL equ 30000h +#DVEL equ 21f0eh + + + SUBR ref_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 + + + SUBRP brain_grid + .long -#DVEL*BRAIN_FREQ,-#DVEL*BRAIN_FREQ ;up-left + .long 0,-#VEL*BRAIN_FREQ ;up + .long #DVEL*BRAIN_FREQ,-#DVEL*BRAIN_FREQ ;up-right + .long -#VEL*BRAIN_FREQ,0 ;left + .long 0,0 ;zip + .long #VEL*BRAIN_FREQ,0 ;right + .long -#DVEL*BRAIN_FREQ,#DVEL*BRAIN_FREQ ;down-left + .long 0,#VEL*BRAIN_FREQ ;down + .long #DVEL*BRAIN_FREQ,#DVEL*BRAIN_FREQ ;down-right + +#***************************************************************************** + + SUBR ref_rotate_anims_table +; old = up right + .long ref_stand2_anim ;new = up right + .long ref_2_to_4_turn_anim ; = down right + .long ref_2_to_6_turn_anim ; = down left *** + .long ref_2_to_8_turn_anim ; = up left + +; old = down right + .long ref_4_to_2_turn_anim ;new = up right + .long ref_stand4_anim ; = down right + .long ref_4_to_6_turn_anim ; = down left + .long ref_4_to_8_turn_anim ; = up left *** + +; old = down left + .long ref_6_to_2_turn_anim ;new = up right *** + .long ref_6_to_4_turn_anim ; = down right + .long ref_stand4_anim ; = down left + .long ref_6_to_8_turn_anim ; = up left + +; old = up left + .long ref_8_to_2_turn_anim ;new = up right + .long ref_8_to_4_turn_anim ; = down right *** + .long ref_8_to_6_turn_anim ; = down left + .long ref_stand2_anim ; = up left + + + SUBR ref_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long ref_walk1_f2_anim ;1 (UP) + .long ref_walk1_f2_anim ;2 (UP_RIGHT) + .long ref_walk1_f4_anim ;3 (RIGHT) + .long ref_walk1_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk1_f4_anim ;5 (DOWN) + .long ref_walk1_f4_anim ;6 (DOWN_LEFT) + .long ref_walk1_f2_anim ;7 (LEFT) + .long ref_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk2_f2_anim ;2 (UP_RIGHT) + .long ref_walk2_f2_anim ;3 (RIGHT) + .long ref_walk2_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk8_f4_anim ;5 (DOWN) + .long ref_walk8_f4_anim ;6 (DOWN_LEFT) + .long ref_walk4_f2_anim ;7 (LEFT) + .long ref_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk2_f2_anim ;2 (UP_RIGHT) + .long ref_walk2_f2_anim ;3 (RIGHT) + .long ref_walk4_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk4_f4_anim ;5 (DOWN) + .long ref_walk8_f4_anim ;6 (DOWN_LEFT) + .long ref_walk6_f2_anim ;7 (LEFT) + .long ref_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk8_f2_anim ;2 (UP_RIGHT) + .long ref_walk4_f4_anim ;3 (RIGHT) + .long ref_walk4_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk2_f4_anim ;5 (DOWN) + .long ref_walk6_f4_anim ;6 (DOWN_LEFT) + .long ref_walk2_f2_anim ;7 (LEFT) + .long ref_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long ref_walk5_f2_anim ;1 (UP) + .long ref_walk5_f2_anim ;2 (UP_RIGHT) + .long ref_walk5_f4_anim ;3 (RIGHT) + .long ref_walk5_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk5_f4_anim ;5 (DOWN) + .long ref_walk5_f4_anim ;6 (DOWN_LEFT) + .long ref_walk5_f2_anim ;7 (LEFT) + .long ref_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk6_f2_anim ;2 (UP_RIGHT) + .long ref_walk2_f2_anim ;3 (RIGHT) + .long ref_walk6_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk2_f4_anim ;5 (DOWN) + .long ref_walk4_f4_anim ;6 (DOWN_LEFT) + .long ref_walk2_f2_anim ;7 (LEFT) + .long ref_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk6_f2_anim ;2 (UP_RIGHT) + .long ref_walk6_f2_anim ;3 (RIGHT) + .long ref_walk8_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk4_f4_anim ;5 (DOWN) + .long ref_walk4_f4_anim ;6 (DOWN_LEFT) + .long ref_walk2_f2_anim ;7 (LEFT) + .long ref_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk4_f2_anim ;2 (UP_RIGHT) + .long ref_walk6_f2_anim ;3 (RIGHT) + .long ref_walk8_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk6_f4_anim ;5 (DOWN) + .long ref_walk2_f4_anim ;6 (DOWN_LEFT) + .long ref_walk2_f2_anim ;7 (LEFT) + .long ref_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR ref_torso_anims_table +; old = up right + .long ref_torso2_anim ;new = up right + .long ref_2_to_4_turn2_anim ; = down right + .long ref_2_to_8_turn2_anim ; = down left *** + .long ref_2_to_8_turn2_anim ; = up left + +; old = down right + .long ref_4_to_2_turn2_anim ;new = up right + .long ref_torso4_anim ; = down right + .long ref_4_to_6_turn2_anim ; = down left + .long ref_4_to_6_turn2_anim ; = up left *** + +; old = down left + .long ref_6_to_4_turn2_anim ;new = up right *** + .long ref_6_to_4_turn2_anim ; = down right + .long ref_torso4_anim ; = down left + .long ref_4_to_2_turn2_anim ; = up left + +; old = up left + .long ref_8_to_2_turn2_anim ;new = up right + .long ref_8_to_2_turn2_anim ; = down right *** + .long ref_2_to_4_turn2_anim ; = down left + .long ref_torso2_anim ; = up left + +; *** should not happen + + +#***************************************************************************** +* REFEREE HAS JUST BEEN HIT +* a10 = * offensive process +* a13 = * defensive process (REF) + + SUBR ref_hit + + move *a10(ATTACK_MODE),a0 ;type of attack that hit the ref + 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 _13 ;13 + .long _14 ;14 + .long _15 ;15 + .long _16 ;16 + +#************************ +;AMODE_PUNCH 0 +_punch + + WRSND W_REF,PUNCH_L1 + WRSND W_REF,PUNCH_L2 + + SETMODE NORMAL + movi ref_2_head_hit_anim,a0 + move *a13(FACING_DIR),a1 + btst MOVE_UP_BIT,a1 + jrnz #2_hit + movi ref_4_head_hit_anim,a0 +#2_hit + calla change_anim1a + calla wres_collis_off + + rets + +#************************ +;AMODE_HDBUTT 1 +_hdbutt + WRSND W_REF,HDBUTT_L1 + WRSND W_REF,HDBUTT_L2 + + SETMODE NORMAL + + movi ref_head_hit2_anim,a0 + 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 + +#************************ +;AMODE_KICK 2 +_kick + + WRSND W_REF,KICK_L1 + WRSND W_REF,KICK_L2 + + SETMODE NORMAL + + movi ref_2_body_hit_anim,a0 + move *a13(FACING_DIR),a1 + btst MOVE_UP_BIT,a1 + jrnz #2_hit + movi ref_4_body_hit_anim,a0 +#2_hit + calla change_anim1a + +;Drift back away from attacker + movi 20000h,a1 + move *a10(OBJ_XPOSINT),a0 + move *a13(OBJ_XPOSINT),a14 + cmp a0,a14 + jrgt #setxv + movi -20000h,a1 +#setxv + move a1,*a13(OBJ_XVEL),L + + calla wres_collis_off + rets + +#************************ +;AMODE_FLYKICK 3 +_flykick + rets + +#************************ +;AMODE_GRABTHROW 4 +_grabthrow + + rets + +#************************ +;AMODE_UPRCUT 5 +_uprcut + rets + +#************************ +;AMODE_LBOWDROP 6 +_lbowdrop + + rets + +#************************ +;AMODE_GRABHOLD 7 +_grabhold + + rets + +#************************ +;AMODE_GRABFLING 8 +_grabfling + + rets + +#************************ +;AMODE_PUSH 9 +_push + + rets + +#************************ +;AMODE_HIPTOSS 10 +_hiptoss + + rets + +#************************ +;AMODE_BIGBOOT 11 +_bigboot + + rets + +#************************ +;AMODE_KNEE 12 +_knee + + rets + +#************************ + +_13 ;13 +_14 ;14 +_15 ;15 +_16 ;16 + +#***************************************************************************** +* calculates the 2D distance between two points +* >a0=x1 >a1=y1 >a2=x2 >a3=y2 +* a0=x >a1=z +* F000,a14 + sra 12,a14 + move a14,*a11+,W + dsj b2,#inner_loop + + dsj b3,#outer_loop + + + ;update the digit objects + + movi grid_digit_objects,a10 + movi grid_digit_values,a11 + movi 9*4,b2 + +#loop + move *a11+,a0,W + X32 a0 + addi #digit_table,a0 + move *a0,a0,L + move *a10+,a8,L + move *a8(OIMG),a2,L + cmp a0,a2 + jreq #match + + ;animate + calla civanic + +#match + dsj b2,#loop + + + ;update the title + move @grid_mode,a0 + X32 a0 + addi #grid_modes,a0 + move *a0,a0,L + move @grid_title,a8,L + move *a8(OIMG),a14,L + cmp a14,a0 + jreq #done + calla civanic + +#done + rets + +#digit_table + .long font60,font61,font62,font63,font64 + .long font65,font66,font67,font68,font69 + +#grid_modes + .long g_unhap,g_d1,g_d2 + + .endif +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/REFIMG.ASM b/BACKUP/REFIMG.ASM new file mode 100644 index 0000000..7927ff5 --- /dev/null +++ b/BACKUP/REFIMG.ASM @@ -0,0 +1,18 @@ + .FILE "refimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include refimg.h + .include refimg.tbl + +****************************************************************************** + + .even + .include "ref.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/BACKUP/REFIMG.H b/BACKUP/REFIMG.H new file mode 100644 index 0000000..fffe517 --- /dev/null +++ b/BACKUP/REFIMG.H @@ -0,0 +1,33 @@ + .global J4AH3D + .global J4AH3A + .global J2AH3C + .global J4AE3A + .global J2AE3A + .global J4AM3B + .global J2AM3A + .global J4KB3A + .global J2KB3A + .global J3KB3A + .global J3FB3D + .global J3TB3B + .global J3GD4B + .global J3GD2A + .global J4FL4C + .global J4FS4C + .global J4GL4A + .global J4GL4B + .global J4GL4C + .global J1TT5A + .global J1TR5Z + .global J2HT8A + .global J2ST2C + .global J2WK2A + .global J2WL4A + .global J4FT4B + .global J4ST4B + .global J4ST4C + .global J4WK4A + .global J4WL4A + .global J4WL5A + .global J8WL2A + .global J2WL2A diff --git a/BACKUP/REFSEQ1.ASM b/BACKUP/REFSEQ1.ASM new file mode 100644 index 0000000..59d0aae --- /dev/null +++ b/BACKUP/REFSEQ1.ASM @@ -0,0 +1,570 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 4/16/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "refseq1.asm" + .title "Flanders the ref animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "display.equ" + + .include "refimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* STANDS + + SUBR ref_zip_anim + WL TSEC*60,J2ST2C+FR1 + .word 0 + +#STND2_SPD equ 2 + SUBR ref_stand2_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL #STND2_SPD,J2ST2C+FR1 + WL #STND2_SPD,J2ST2C+FR2 + WL #STND2_SPD,J2ST2C+FR3 + WL #STND2_SPD,J2ST2C+FR4 + WL #STND2_SPD,J2ST2C+FR5 + WL #STND2_SPD,J2ST2C+FR6 + WL #STND2_SPD,J2ST2C+FR7 + WL #STND2_SPD,J2ST2C+FR8 + WL #STND2_SPD,J2ST2C+FR9 + WL #STND2_SPD,J2ST2C+FR10 + WL #STND2_SPD,J2ST2C+FR11 + WL #STND2_SPD,J2ST2C+FR10 + WL #STND2_SPD,J2ST2C+FR9 + WL #STND2_SPD,J2ST2C+FR8 + WL #STND2_SPD,J2ST2C+FR7 + WL #STND2_SPD,J2ST2C+FR6 + WL #STND2_SPD,J2ST2C+FR5 + WL #STND2_SPD,J2ST2C+FR4 + WL #STND2_SPD,J2ST2C+FR3 + WL #STND2_SPD,J2ST2C+FR2 + .word ANI_REPEAT + +#STND4_SPD equ 2 + SUBR ref_stand4_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL #STND4_SPD,J4ST4C+FR1 + WL #STND4_SPD,J4ST4C+FR2 + WL #STND4_SPD,J4ST4C+FR3 + WL #STND4_SPD,J4ST4C+FR4 + WL #STND4_SPD,J4ST4C+FR5 + WL #STND4_SPD,J4ST4C+FR6 + WL #STND4_SPD,J4ST4C+FR7 + WL #STND4_SPD,J4ST4C+FR8 + WL #STND4_SPD,J4ST4C+FR9 + WL #STND4_SPD,J4ST4C+FR10 + WL #STND4_SPD,J4ST4C+FR9 + WL #STND4_SPD,J4ST4C+FR8 + WL #STND4_SPD,J4ST4C+FR7 + WL #STND4_SPD,J4ST4C+FR6 + WL #STND4_SPD,J4ST4C+FR5 + WL #STND4_SPD,J4ST4C+FR4 + WL #STND4_SPD,J4ST4C+FR3 + WL #STND4_SPD,J4ST4C+FR2 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKING TORSOS + +#TORSO2_SPD equ 4 + SUBR ref_torso2_anim + WL #TORSO2_SPD,J1TR5Z+FR3 + .word ANI_REPEAT + + +#TORSO4_SPD equ 4 + SUBR ref_torso4_anim + WL #TORSO4_SPD,J1TR5Z+FR7 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKS FACING #2 + +#W2F2_SPD equ 3 + SUBR ref_walk1_f2_anim + SUBR ref_walk2_f2_anim + WL #W2F2_SPD,J2WL2A+FR1 + WL #W2F2_SPD,J2WL2A+FR2 + WL #W2F2_SPD,J2WL2A+FR3 + WL #W2F2_SPD,J2WL2A+FR4 + WL #W2F2_SPD,J2WL2A+FR5 + WL #W2F2_SPD,J2WL2A+FR6 + WL #W2F2_SPD,J2WL2A+FR7 + WL #W2F2_SPD,J2WL2A+FR8 + WL #W2F2_SPD,J2WL2A+FR9 + WL #W2F2_SPD,J2WL2A+FR10 + WL #W2F2_SPD,J2WL2A+FR11 + .word ANI_REPEAT + +#W4F2_SPD equ 3 + SUBR ref_walk4_f2_anim + WL #W4F2_SPD,J2WL4A+FR1 + WL #W4F2_SPD,J2WL4A+FR2 + WL #W4F2_SPD,J2WL4A+FR3 + WL #W4F2_SPD,J2WL4A+FR4 + WL #W4F2_SPD,J2WL4A+FR5 + WL #W4F2_SPD,J2WL4A+FR6 + WL #W4F2_SPD,J2WL4A+FR7 + WL #W4F2_SPD,J2WL4A+FR8 + WL #W4F2_SPD,J2WL4A+FR9 + WL #W4F2_SPD,J2WL4A+FR10 + WL #W4F2_SPD,J2WL4A+FR11 + WL #W4F2_SPD,J2WL4A+FR12 + WL #W4F2_SPD,J2WL4A+FR13 + WL #W4F2_SPD,J2WL4A+FR14 + WL #W4F2_SPD,J2WL4A+FR15 + .word ANI_REPEAT + +#W5F2_SPD equ 3 + SUBR ref_walk5_f2_anim + SUBR ref_walk6_f2_anim + WL #W5F2_SPD,J2WL2A+FR11 + WL #W5F2_SPD,J2WL2A+FR10 + WL #W5F2_SPD,J2WL2A+FR9 + WL #W5F2_SPD,J2WL2A+FR8 + WL #W5F2_SPD,J2WL2A+FR7 + WL #W5F2_SPD,J2WL2A+FR6 + WL #W5F2_SPD,J2WL2A+FR5 + WL #W5F2_SPD,J2WL2A+FR4 + WL #W5F2_SPD,J2WL2A+FR3 + WL #W5F2_SPD,J2WL2A+FR1 + WL #W5F2_SPD,J2WL2A+FR1 + .word ANI_REPEAT + + SUBR ref_walk8_f2_anim + WL #W4F2_SPD,J8WL2A+FR1 + WL #W4F2_SPD,J8WL2A+FR2 + WL #W4F2_SPD,J8WL2A+FR3 + WL #W4F2_SPD,J8WL2A+FR4 + WL #W4F2_SPD,J8WL2A+FR5 + WL #W4F2_SPD,J8WL2A+FR6 + WL #W4F2_SPD,J8WL2A+FR7 + WL #W4F2_SPD,J8WL2A+FR8 + WL #W4F2_SPD,J8WL2A+FR9 + WL #W4F2_SPD,J8WL2A+FR10 + WL #W4F2_SPD,J8WL2A+FR11 + WL #W4F2_SPD,J8WL2A+FR12 + WL #W4F2_SPD,J8WL2A+FR13 + WL #W4F2_SPD,J8WL2A+FR14 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + +#W1F4_SPD equ 3 + SUBR ref_walk1_f4_anim + SUBR ref_walk2_f4_anim + WL #W1F4_SPD,J2WL4A+FR1 + WL #W1F4_SPD,J2WL4A+FR2 + WL #W1F4_SPD,J2WL4A+FR3 + WL #W1F4_SPD,J2WL4A+FR4 + WL #W1F4_SPD,J2WL4A+FR5 + WL #W1F4_SPD,J2WL4A+FR6 + WL #W1F4_SPD,J2WL4A+FR7 + WL #W1F4_SPD,J2WL4A+FR8 + WL #W1F4_SPD,J2WL4A+FR9 + WL #W1F4_SPD,J2WL4A+FR10 + WL #W1F4_SPD,J2WL4A+FR11 + WL #W1F4_SPD,J2WL4A+FR12 + WL #W1F4_SPD,J2WL4A+FR13 + WL #W1F4_SPD,J2WL4A+FR14 + WL #W1F4_SPD,J2WL4A+FR15 + .word ANI_REPEAT + +#W4F4_SPD equ 3 + SUBR ref_walk4_f4_anim + WL #W4F4_SPD,J4WL4A+FR1 + WL #W4F4_SPD,J4WL4A+FR2 + WL #W4F4_SPD,J4WL4A+FR3 + WL #W4F4_SPD,J4WL4A+FR4 + WL #W4F4_SPD,J4WL4A+FR5 + WL #W4F4_SPD,J4WL4A+FR6 + WL #W4F4_SPD,J4WL4A+FR7 + WL #W4F4_SPD,J4WL4A+FR8 + WL #W4F4_SPD,J4WL4A+FR9 + WL #W4F4_SPD,J4WL4A+FR10 + WL #W4F4_SPD,J4WL4A+FR11 + WL #W4F4_SPD,J4WL4A+FR12 + .word ANI_REPEAT + +#W5F4_SPD equ 3 + SUBR ref_walk5_f4_anim + WL #W5F4_SPD,J4WL5A+FR1 + WL #W5F4_SPD,J4WL5A+FR2 + WL #W5F4_SPD,J4WL5A+FR3 + WL #W5F4_SPD,J4WL5A+FR4 + WL #W5F4_SPD,J4WL5A+FR5 + WL #W5F4_SPD,J4WL5A+FR6 + WL #W5F4_SPD,J4WL5A+FR7 + WL #W5F4_SPD,J4WL5A+FR8 + WL #W5F4_SPD,J4WL5A+FR9 + WL #W5F4_SPD,J4WL5A+FR10 + WL #W5F4_SPD,J4WL5A+FR11 + WL #W5F4_SPD,J4WL5A+FR12 + WL #W5F4_SPD,J4WL5A+FR13 + WL #W5F4_SPD,J4WL5A+FR14 + .word ANI_REPEAT + + SUBR ref_walk6_f4_anim + WL #W1F4_SPD,J2WL4A+FR15 + WL #W1F4_SPD,J2WL4A+FR14 + WL #W1F4_SPD,J2WL4A+FR13 + WL #W1F4_SPD,J2WL4A+FR12 + WL #W1F4_SPD,J2WL4A+FR11 + WL #W1F4_SPD,J2WL4A+FR10 + WL #W1F4_SPD,J2WL4A+FR9 + WL #W1F4_SPD,J2WL4A+FR8 + WL #W1F4_SPD,J2WL4A+FR7 + WL #W1F4_SPD,J2WL4A+FR6 + WL #W1F4_SPD,J2WL4A+FR5 + WL #W1F4_SPD,J2WL4A+FR4 + WL #W1F4_SPD,J2WL4A+FR3 + WL #W1F4_SPD,J2WL4A+FR2 + WL #W1F4_SPD,J2WL4A+FR1 + .word ANI_REPEAT + + SUBR ref_walk8_f4_anim + WL #W4F4_SPD,J4WL4A+FR12 + WL #W4F4_SPD,J4WL4A+FR11 + WL #W4F4_SPD,J4WL4A+FR10 + WL #W4F4_SPD,J4WL4A+FR9 + WL #W4F4_SPD,J4WL4A+FR8 + WL #W4F4_SPD,J4WL4A+FR7 + WL #W4F4_SPD,J4WL4A+FR6 + WL #W4F4_SPD,J4WL4A+FR5 + WL #W4F4_SPD,J4WL4A+FR4 + WL #W4F4_SPD,J4WL4A+FR3 + WL #W4F4_SPD,J4WL4A+FR2 + WL #W4F4_SPD,J4WL4A+FR1 + .word ANI_REPEAT + +#***************************************************************************** +* +* TURNS (STANDS) + +#TURN_SPD equ 3 ;4 + SUBR ref_2_to_4_turn_anim + SUBR ref_8_to_6_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR4 + WL #TURN_SPD,J1TT5A+FR5 + WL #TURN_SPD,J1TT5A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_to_2_turn_anim + SUBR ref_6_to_8_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR6 + WL #TURN_SPD,J1TT5A+FR5 + WL #TURN_SPD,J1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_to_6_turn_anim + SUBR ref_6_to_4_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR8 + WL #TURN_SPD,J1TT5A+FR9 + .word ANI_XFLIP + WL #TURN_SPD,J1TT5A+FR9 + WL #TURN_SPD,J1TT5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_2_to_8_turn_anim + SUBR ref_8_to_2_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR2 + WL #TURN_SPD,J1TT5A+FR1 + .word ANI_XFLIP + WL #TURN_SPD,J1TT5A+FR1 + WL #TURN_SPD,J1TT5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_to_8_turn_anim + SUBR ref_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR8 + WL #TURN_SPD,J1TT5A+FR9 + .word ANI_XFLIP + WL #TURN_SPD,J1TT5A+FR9 + WL #TURN_SPD,J1TT5A+FR8 + WL #TURN_SPD,J1TT5A+FR7 + WL #TURN_SPD,J1TT5A+FR6 + WL #TURN_SPD,J1TT5A+FR5 + WL #TURN_SPD,J1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_2_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR2 + WL #TURN_SPD,J1TT5A+FR1 + .word ANI_XFLIP + WL #TURN_SPD,J1TT5A+FR1 + WL #TURN_SPD,J1TT5A+FR2 + WL #TURN_SPD,J1TT5A+FR3 + WL #TURN_SPD,J1TT5A+FR4 + WL #TURN_SPD,J1TT5A+FR5 + WL #TURN_SPD,J1TT5A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR4 + WL #TURN_SPD,J1TT5A+FR5 + WL #TURN_SPD,J1TT5A+FR6 + WL #TURN_SPD,J1TT5A+FR7 + WL #TURN_SPD,J1TT5A+FR8 + WL #TURN_SPD,J1TT5A+FR9 + .word ANI_XFLIP + WL #TURN_SPD,J1TT5A+FR9 + WL #TURN_SPD,J1TT5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + +#TURN_SPD equ 3 ;4 + SUBR ref_2_to_4_turn2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETFACING + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_to_2_turn2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETFACING + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_to_6_turn2_anim + SUBR ref_6_to_4_turn2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_2_to_8_turn2_anim + SUBR ref_8_to_2_turn2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 HEAD HIT + +#HEAD_HIT_SPD equ 3 + SUBR ref_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL #HEAD_HIT_SPD,J4AH3D+FR1 + WL #HEAD_HIT_SPD,J4AH3D+FR2 + WL #HEAD_HIT_SPD,J4AH3D+FR3 + WL #HEAD_HIT_SPD,J4AH3D+FR4 + WL #HEAD_HIT_SPD,J4AH3D+FR5 + WL #HEAD_HIT_SPD,J4AH3D+FR6 + WL #HEAD_HIT_SPD,J4AH3D+FR7 + WL #HEAD_HIT_SPD,J4AH3D+FR8 + WL #HEAD_HIT_SPD+6,J4AH3D+FR9 + WL #HEAD_HIT_SPD,J4AH3D+FR10 + WL #HEAD_HIT_SPD,J4AH3D+FR11 + WL #HEAD_HIT_SPD,J4AH3D+FR12 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEAD HIT + +#HEAD_HIT_SPD equ 3 + SUBR ref_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL #HEAD_HIT_SPD,J2AH3C+FR1 + WL #HEAD_HIT_SPD,J2AH3C+FR2 + WL #HEAD_HIT_SPD,J2AH3C+FR3 + WL #HEAD_HIT_SPD,J2AH3C+FR4 + WL #HEAD_HIT_SPD,J2AH3C+FR5 + WL #HEAD_HIT_SPD,J2AH3C+FR6 + WL #HEAD_HIT_SPD,J2AH3C+FR7 + WL #HEAD_HIT_SPD,J2AH3C+FR8 + WL #HEAD_HIT_SPD,J2AH3C+FR9 + WL #HEAD_HIT_SPD,J2AH3C+FR10 + WL #HEAD_HIT_SPD,J2AH3C+FR11 + WL #HEAD_HIT_SPD,J2AH3C+FR12 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* HEAD HIT2 (HANDS ON FACE) + +#HEAD_HIT2_SPD equ 4 + SUBR ref_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + WL #HEAD_HIT2_SPD,J4AH3A+FR1 + WL #HEAD_HIT2_SPD,J4AH3A+FR2 + WL #HEAD_HIT2_SPD,J4AH3A+FR3 + WL #HEAD_HIT2_SPD,J4AH3A+FR4 + WL #HEAD_HIT2_SPD,J4AH3A+FR5 + WL #HEAD_HIT2_SPD,J4AH3A+FR6 + WL #HEAD_HIT2_SPD,J4AH3A+FR7 + WL #HEAD_HIT2_SPD,J4AH3A+FR8 + WL #HEAD_HIT2_SPD,J4AH3A+FR9 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#setface +;Need to set facing dir because of this odd getup sequence + movk 10,A1 + move *A13(OBJ_CONTROL),a0 + btst B_FLIPH,A0 + jrz #rgt + movk 6,A1 +#rgt move A1,*A13(FACING_DIR) + rets + + +#***************************************************************************** +* +* BODY HIT + +#BODHIT_SPD equ 6 + + SUBR ref_2_body_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,48000h + WL #BODHIT_SPD,J2AM3A+FR1 + WL #BODHIT_SPD,J2AM3A+FR2 + WL #BODHIT_SPD,J2AM3A+FR3 + .word ANI_ZEROVELS + WL #BODHIT_SPD,J2AM3A+FR4 + WL #BODHIT_SPD,J2AM3A+FR5 + WL #BODHIT_SPD,J2AM3A+FR6 + WL #BODHIT_SPD,J2AM3A+FR7 + WL #BODHIT_SPD,J2AM3A+FR8 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_body_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,48000h + WL #BODHIT_SPD,J4AM3B+FR1 + WL #BODHIT_SPD,J4AM3B+FR2 + WL #BODHIT_SPD,J4AM3B+FR3 + .word ANI_ZEROVELS + WL #BODHIT_SPD,J4AM3B+FR4 + WL #BODHIT_SPD,J4AM3B+FR5 + WL #BODHIT_SPD,J4AM3B+FR6 + WL #BODHIT_SPD,J4AM3B+FR7 + WL #BODHIT_SPD,J4AM3B+FR8 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#setface +;Need to set facing dir + movk 10,A1 + move *A13(OBJ_CONTROL),A0 + btst B_FLIPH,A0 + jrz #rgt + movk 6,A1 +#rgt move A1,*A13(FACING_DIR) + rets + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/RING.ASM b/BACKUP/RING.ASM new file mode 100644 index 0000000..93301e2 --- /dev/null +++ b/BACKUP/RING.ASM @@ -0,0 +1,773 @@ +************************************************************** +* +* Software: +* Initiated: 18 April 94 +* +* COPYRIGHT (C) 1994 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "ring.asm" + .title "ring stuff" + .width 132 + .option b,d,l,t + .mnolist + + .include "ring.equ" + +#***************************************************************************** +* +* VERTICAL LINES + +vln_right_rope +; .word RING_TOP,RING_BOT ;z1,z2 +; .word >400+168,>400+224 ;x1,x2 + + .word 1192+100,1023,1243+100,1345 ;x1,z1,x2,z2 + + .word 1192+100,1192+100,1192+100,1192+100,1193+100,1193+100,1193+100,1193+100 + .word 1193+100,1193+100,1194+100,1194+100,1194+100,1194+100,1194+100,1194+100 + .word 1195+100,1195+100,1195+100,1195+100,1195+100,1195+100,1195+100,1196+100 + .word 1196+100,1196+100,1196+100,1196+100,1196+100,1197+100,1197+100,1197+100 + .word 1197+100,1197+100,1197+100,1198+100,1198+100,1198+100,1198+100,1198+100 + .word 1198+100,1198+100,1199+100,1199+100,1199+100,1199+100,1199+100,1199+100 + .word 1200+100,1200+100,1200+100,1200+100,1200+100,1200+100,1201+100,1201+100 + .word 1201+100,1201+100,1201+100,1201+100,1202+100,1202+100,1202+100,1202+100 + .word 1202+100,1202+100,1202+100,1203+100,1203+100,1203+100,1203+100,1203+100 + .word 1203+100,1204+100,1204+100,1204+100,1204+100,1204+100,1204+100,1205+100 + .word 1205+100,1205+100,1205+100,1205+100,1205+100,1205+100,1206+100,1206+100 + .word 1206+100,1206+100,1206+100,1206+100,1207+100,1207+100,1207+100,1207+100 + .word 1207+100,1207+100,1208+100,1208+100,1208+100,1208+100,1208+100,1208+100 + .word 1208+100,1209+100,1209+100,1209+100,1209+100,1209+100,1209+100,1210+100 + .word 1210+100,1210+100,1210+100,1210+100,1210+100,1211+100,1211+100,1211+100 + .word 1211+100,1211+100,1211+100,1211+100,1212+100,1212+100,1212+100,1212+100 + .word 1212+100,1212+100,1213+100,1213+100,1213+100,1213+100,1213+100,1213+100 + .word 1214+100,1214+100,1214+100,1214+100,1214+100,1214+100,1214+100,1215+100 + .word 1215+100,1215+100,1215+100,1215+100,1215+100,1216+100,1216+100,1216+100 + .word 1216+100,1216+100,1216+100,1217+100,1217+100,1217+100,1217+100,1217+100 + .word 1217+100,1217+100,1218+100,1218+100,1218+100,1218+100,1218+100,1218+100 + .word 1219+100,1219+100,1219+100,1219+100,1219+100,1219+100,1220+100,1220+100 + .word 1220+100,1220+100,1220+100,1220+100,1221+100,1221+100,1221+100,1221+100 + .word 1221+100,1221+100,1221+100,1222+100,1222+100,1222+100,1222+100,1222+100 + .word 1222+100,1223+100,1223+100,1223+100,1223+100,1223+100,1223+100,1224+100 + .word 1224+100,1224+100,1224+100,1224+100,1224+100,1224+100,1225+100,1225+100 + .word 1225+100,1225+100,1225+100,1225+100,1226+100,1226+100,1226+100,1226+100 + .word 1226+100,1226+100,1227+100,1227+100,1227+100,1227+100,1227+100,1227+100 + .word 1227+100,1228+100,1228+100,1228+100,1228+100,1228+100,1228+100,1229+100 + .word 1229+100,1229+100,1229+100,1229+100,1229+100,1230+100,1230+100,1230+100 + .word 1230+100,1230+100,1230+100,1230+100,1231+100,1231+100,1231+100,1231+100 + .word 1231+100,1231+100,1232+100,1232+100,1232+100,1232+100,1232+100,1232+100 + .word 1233+100,1233+100,1233+100,1233+100,1233+100,1233+100,1233+100,1234+100 + .word 1234+100,1234+100,1234+100,1234+100,1234+100,1235+100,1235+100,1235+100 + .word 1235+100,1235+100,1235+100,1236+100,1236+100,1236+100,1236+100,1236+100 + .word 1236+100,1237+100,1237+100,1237+100,1237+100,1237+100,1237+100,1237+100 + .word 1238+100,1238+100,1238+100,1238+100,1238+100,1238+100,1239+100,1239+100 + .word 1239+100,1239+100,1239+100,1239+100,1240+100,1240+100,1240+100,1240+100 + .word 1240+100,1240+100,1240+100,1241+100,1241+100,1241+100,1241+100,1241+100 + .word 1241+100,1242+100,1242+100,1242+100,1242+100,1242+100,1242+100,1243+100 + .word 1243+100,1243+100,1243+100 + + +vln_left_rope +; .word RING_TOP,RING_BOT ;z1,z2 +; .word >400-168,>400-224 ;x1,x2 + .word 856,1023,805,1345 ;x1,z1,x2,z2 + .word 856,856,856,856,855,855,855,855 + .word 855,855,854,854,854,854,854,854 + .word 853,853,853,853,853,853,853,852 + .word 852,852,852,852,852,851,851,851 + .word 851,851,851,850,850,850,850,850 + .word 850,850,849,849,849,849,849,849 + .word 848,848,848,848,848,848,847,847 + .word 847,847,847,847,846,846,846,846 + .word 846,846,846,845,845,845,845,845 + .word 845,844,844,844,844,844,844,843 + .word 843,843,843,843,843,843,842,842 + .word 842,842,842,842,841,841,841,841 + .word 841,841,840,840,840,840,840,840 + .word 840,839,839,839,839,839,839,838 + .word 838,838,838,838,838,837,837,837 + .word 837,837,837,837,836,836,836,836 + .word 836,836,835,835,835,835,835,835 + .word 834,834,834,834,834,834,834,833 + .word 833,833,833,833,833,832,832,832 + .word 832,832,832,831,831,831,831,831 + .word 831,831,830,830,830,830,830,830 + .word 829,829,829,829,829,829,828,828 + .word 828,828,828,828,827,827,827,827 + .word 827,827,827,826,826,826,826,826 + .word 826,825,825,825,825,825,825,824 + .word 824,824,824,824,824,824,823,823 + .word 823,823,823,823,822,822,822,822 + .word 822,822,821,821,821,821,821,821 + .word 821,820,820,820,820,820,820,819 + .word 819,819,819,819,819,818,818,818 + .word 818,818,818,818,817,817,817,817 + .word 817,817,816,816,816,816,816,816 + .word 815,815,815,815,815,815,815,814 + .word 814,814,814,814,814,813,813,813 + .word 813,813,813,812,812,812,812,812 + .word 812,811,811,811,811,811,811,811 + .word 810,810,810,810,810,810,809,809 + .word 809,809,809,809,808,808,808,808 + .word 808,808,808,807,807,807,807,807 + .word 807,806,806,806,806,806,806,805 + .word 805,805,805 + + +vln_right_matedge +; .word MAT_TOP,MAT_BOT ;z1,z2 +; .word >400+>E2,>400+>13B + + .word 1250+100,967,1339+100,1521 ;x1,z1,x2,z2 + + .word 1250+100,1250+100,1250+100,1250+100,1251+100,1251+100,1251+100,1251+100 + .word 1251+100,1251+100,1252+100,1252+100,1252+100,1252+100,1252+100,1252+100 + .word 1253+100,1253+100,1253+100,1253+100,1253+100,1253+100,1254+100,1254+100 + .word 1254+100,1254+100,1254+100,1254+100,1254+100,1255+100,1255+100,1255+100 + .word 1255+100,1255+100,1255+100,1256+100,1256+100,1256+100,1256+100,1256+100 + .word 1256+100,1257+100,1257+100,1257+100,1257+100,1257+100,1257+100,1258+100 + .word 1258+100,1258+100,1258+100,1258+100,1258+100,1259+100,1259+100,1259+100 + .word 1259+100,1259+100,1259+100,1259+100,1260+100,1260+100,1260+100,1260+100 + .word 1260+100,1260+100,1261+100,1261+100,1261+100,1261+100,1261+100,1261+100 + .word 1262+100,1262+100,1262+100,1262+100,1262+100,1262+100,1263+100,1263+100 + .word 1263+100,1263+100,1263+100,1263+100,1263+100,1264+100,1264+100,1264+100 + .word 1264+100,1264+100,1264+100,1265+100,1265+100,1265+100,1265+100,1265+100 + .word 1265+100,1266+100,1266+100,1266+100,1266+100,1266+100,1266+100,1267+100 + .word 1267+100,1267+100,1267+100,1267+100,1267+100,1268+100,1268+100,1268+100 + .word 1268+100,1268+100,1268+100,1268+100,1269+100,1269+100,1269+100,1269+100 + .word 1269+100,1269+100,1270+100,1270+100,1270+100,1270+100,1270+100,1270+100 + .word 1271+100,1271+100,1271+100,1271+100,1271+100,1271+100,1272+100,1272+100 + .word 1272+100,1272+100,1272+100,1272+100,1272+100,1273+100,1273+100,1273+100 + .word 1273+100,1273+100,1273+100,1274+100,1274+100,1274+100,1274+100,1274+100 + .word 1274+100,1275+100,1275+100,1275+100,1275+100,1275+100,1275+100,1276+100 + .word 1276+100,1276+100,1276+100,1276+100,1276+100,1277+100,1277+100,1277+100 + .word 1277+100,1277+100,1277+100,1277+100,1278+100,1278+100,1278+100,1278+100 + .word 1278+100,1278+100,1279+100,1279+100,1279+100,1279+100,1279+100,1279+100 + .word 1280+100,1280+100,1280+100,1280+100,1280+100,1280+100,1281+100,1281+100 + .word 1281+100,1281+100,1281+100,1281+100,1281+100,1282+100,1282+100,1282+100 + .word 1282+100,1282+100,1282+100,1283+100,1283+100,1283+100,1283+100,1283+100 + .word 1283+100,1284+100,1284+100,1284+100,1284+100,1284+100,1284+100,1285+100 + .word 1285+100,1285+100,1285+100,1285+100,1285+100,1286+100,1286+100,1286+100 + .word 1286+100,1286+100,1286+100,1286+100,1287+100,1287+100,1287+100,1287+100 + .word 1287+100,1287+100,1288+100,1288+100,1288+100,1288+100,1288+100,1288+100 + .word 1289+100,1289+100,1289+100,1289+100,1289+100,1289+100,1290+100,1290+100 + .word 1290+100,1290+100,1290+100,1290+100,1290+100,1291+100,1291+100,1291+100 + .word 1291+100,1291+100,1291+100,1292+100,1292+100,1292+100,1292+100,1292+100 + .word 1292+100,1293+100,1293+100,1293+100,1293+100,1293+100,1293+100,1294+100 + .word 1294+100,1294+100,1294+100,1294+100,1294+100,1295+100,1295+100,1295+100 + .word 1295+100,1295+100,1295+100,1295+100,1296+100,1296+100,1296+100,1296+100 + .word 1296+100,1296+100,1297+100,1297+100,1297+100,1297+100,1297+100,1297+100 + .word 1298+100,1298+100,1298+100,1298+100,1298+100,1298+100,1299+100,1299+100 + .word 1299+100,1299+100,1299+100,1299+100,1299+100,1300+100,1300+100,1300+100 + .word 1300+100,1300+100,1300+100,1301+100,1301+100,1301+100,1301+100,1301+100 + .word 1301+100,1302+100,1302+100,1302+100,1302+100,1302+100,1302+100,1303+100 + .word 1303+100,1303+100,1303+100,1303+100,1303+100,1303+100,1304+100,1304+100 + .word 1304+100,1304+100,1304+100,1304+100,1305+100,1305+100,1305+100,1305+100 + .word 1305+100,1305+100,1306+100,1306+100,1306+100,1306+100,1306+100,1306+100 + .word 1307+100,1307+100,1307+100,1307+100,1307+100,1307+100,1308+100,1308+100 + .word 1308+100,1308+100,1308+100,1308+100,1308+100,1309+100,1309+100,1309+100 + .word 1309+100,1309+100,1309+100,1310+100,1310+100,1310+100,1310+100,1310+100 + .word 1310+100,1311+100,1311+100,1311+100,1311+100,1311+100,1311+100,1312+100 + .word 1312+100,1312+100,1312+100,1312+100,1312+100,1312+100,1313+100,1313+100 + .word 1313+100,1313+100,1313+100,1313+100,1314+100,1314+100,1314+100,1314+100 + .word 1314+100,1314+100,1315+100,1315+100,1315+100,1315+100,1315+100,1315+100 + .word 1316+100,1316+100,1316+100,1316+100,1316+100,1316+100,1317+100,1317+100 + .word 1317+100,1317+100,1317+100,1317+100,1317+100,1318+100,1318+100,1318+100 + .word 1318+100,1318+100,1318+100,1319+100,1319+100,1319+100,1319+100,1319+100 + .word 1319+100,1320+100,1320+100,1320+100,1320+100,1320+100,1320+100,1321+100 + .word 1321+100,1321+100,1321+100,1321+100,1321+100,1321+100,1322+100,1322+100 + .word 1322+100,1322+100,1322+100,1322+100,1323+100,1323+100,1323+100,1323+100 + .word 1323+100,1323+100,1324+100,1324+100,1324+100,1324+100,1324+100,1324+100 + .word 1325+100,1325+100,1325+100,1325+100,1325+100,1325+100,1326+100,1326+100 + .word 1326+100,1326+100,1326+100,1326+100,1326+100,1327+100,1327+100,1327+100 + .word 1327+100,1327+100,1327+100,1328+100,1328+100,1328+100,1328+100,1328+100 + .word 1328+100,1329+100,1329+100,1329+100,1329+100,1329+100,1329+100,1330+100 + .word 1330+100,1330+100,1330+100,1330+100,1330+100,1330+100,1331+100,1331+100 + .word 1331+100,1331+100,1331+100,1331+100,1332+100,1332+100,1332+100,1332+100 + .word 1332+100,1332+100,1333+100,1333+100,1333+100,1333+100,1333+100,1333+100 + .word 1334+100,1334+100,1334+100,1334+100,1334+100,1334+100,1335+100,1335+100 + .word 1335+100,1335+100,1335+100,1335+100,1335+100,1336+100,1336+100,1336+100 + .word 1336+100,1336+100,1336+100,1337+100,1337+100,1337+100,1337+100,1337+100 + .word 1337+100,1338+100,1338+100,1338+100,1338+100,1338+100,1338+100,1339+100 + .word 1339+100,1339+100,1339+100 + +vln_left_matedge +; .word MAT_TOP,MAT_BOT ;z1,z2 +; .word 031Eh,02C5h ;x1,x2 + .word 798,967,709,1521 ;x1,z1,x2,z2 + .word 798,798,798,798,797,797,797,797 + .word 797,797,796,796,796,796,796,796 + .word 795,795,795,795,795,795,794,794 + .word 794,794,794,794,794,793,793,793 + .word 793,793,793,792,792,792,792,792 + .word 792,791,791,791,791,791,791,790 + .word 790,790,790,790,790,789,789,789 + .word 789,789,789,789,788,788,788,788 + .word 788,788,787,787,787,787,787,787 + .word 786,786,786,786,786,786,785,785 + .word 785,785,785,785,785,784,784,784 + .word 784,784,784,783,783,783,783,783 + .word 783,782,782,782,782,782,782,781 + .word 781,781,781,781,781,780,780,780 + .word 780,780,780,780,779,779,779,779 + .word 779,779,778,778,778,778,778,778 + .word 777,777,777,777,777,777,776,776 + .word 776,776,776,776,776,775,775,775 + .word 775,775,775,774,774,774,774,774 + .word 774,773,773,773,773,773,773,772 + .word 772,772,772,772,772,771,771,771 + .word 771,771,771,771,770,770,770,770 + .word 770,770,769,769,769,769,769,769 + .word 768,768,768,768,768,768,767,767 + .word 767,767,767,767,767,766,766,766 + .word 766,766,766,765,765,765,765,765 + .word 765,764,764,764,764,764,764,763 + .word 763,763,763,763,763,762,762,762 + .word 762,762,762,762,761,761,761,761 + .word 761,761,760,760,760,760,760,760 + .word 759,759,759,759,759,759,758,758 + .word 758,758,758,758,758,757,757,757 + .word 757,757,757,756,756,756,756,756 + .word 756,755,755,755,755,755,755,754 + .word 754,754,754,754,754,753,753,753 + .word 753,753,753,753,752,752,752,752 + .word 752,752,751,751,751,751,751,751 + .word 750,750,750,750,750,750,749,749 + .word 749,749,749,749,749,748,748,748 + .word 748,748,748,747,747,747,747,747 + .word 747,746,746,746,746,746,746,745 + .word 745,745,745,745,745,745,744,744 + .word 744,744,744,744,743,743,743,743 + .word 743,743,742,742,742,742,742,742 + .word 741,741,741,741,741,741,740,740 + .word 740,740,740,740,740,739,739,739 + .word 739,739,739,738,738,738,738,738 + .word 738,737,737,737,737,737,737,736 + .word 736,736,736,736,736,736,735,735 + .word 735,735,735,735,734,734,734,734 + .word 734,734,733,733,733,733,733,733 + .word 732,732,732,732,732,732,731,731 + .word 731,731,731,731,731,730,730,730 + .word 730,730,730,729,729,729,729,729 + .word 729,728,728,728,728,728,728,727 + .word 727,727,727,727,727,727,726,726 + .word 726,726,726,726,725,725,725,725 + .word 725,725,724,724,724,724,724,724 + .word 723,723,723,723,723,723,722,722 + .word 722,722,722,722,722,721,721,721 + .word 721,721,721,720,720,720,720,720 + .word 720,719,719,719,719,719,719,718 + .word 718,718,718,718,718,718,717,717 + .word 717,717,717,717,716,716,716,716 + .word 716,716,715,715,715,715,715,715 + .word 714,714,714,714,714,714,713,713 + .word 713,713,713,713,713,712,712,712 + .word 712,712,712,711,711,711,711,711 + .word 711,710,710,710,710,710,710,709 + .word 709,709,709 + + +vln_right_matedge2 +; .word MAT_TOP-5,MAT_BOT+5 ;z1,z2 +; .word >400+>110,>400+>169 + + .word 1296+100,962,1385+100,1526 ;x1,z1,x2,z2 + + .word 1291+100,1291+100,1291+100,1291+100,1292+100,1292+100,1292+100,1292+100 + .word 1292+100,1292+100,1293+100,1293+100,1293+100,1293+100,1293+100,1293+100 + .word 1294+100,1294+100,1294+100,1294+100,1294+100,1294+100,1294+100,1295+100 + .word 1295+100,1295+100,1295+100,1295+100,1295+100,1296+100,1296+100,1296+100 + .word 1296+100,1296+100,1296+100,1297+100,1297+100,1297+100,1297+100,1297+100 + .word 1297+100,1297+100,1298+100,1298+100,1298+100,1298+100,1298+100,1298+100 + .word 1299+100,1299+100,1299+100,1299+100,1299+100,1299+100,1300+100,1300+100 + .word 1300+100,1300+100,1300+100,1300+100,1300+100,1301+100,1301+100,1301+100 + .word 1301+100,1301+100,1301+100,1302+100,1302+100,1302+100,1302+100,1302+100 + .word 1302+100,1303+100,1303+100,1303+100,1303+100,1303+100,1303+100,1303+100 + .word 1304+100,1304+100,1304+100,1304+100,1304+100,1304+100,1305+100,1305+100 + .word 1305+100,1305+100,1305+100,1305+100,1306+100,1306+100,1306+100,1306+100 + .word 1306+100,1306+100,1306+100,1307+100,1307+100,1307+100,1307+100,1307+100 + .word 1307+100,1308+100,1308+100,1308+100,1308+100,1308+100,1308+100,1309+100 + .word 1309+100,1309+100,1309+100,1309+100,1309+100,1309+100,1310+100,1310+100 + .word 1310+100,1310+100,1310+100,1310+100,1311+100,1311+100,1311+100,1311+100 + .word 1311+100,1311+100,1312+100,1312+100,1312+100,1312+100,1312+100,1312+100 + .word 1312+100,1313+100,1313+100,1313+100,1313+100,1313+100,1313+100,1314+100 + .word 1314+100,1314+100,1314+100,1314+100,1314+100,1315+100,1315+100,1315+100 + .word 1315+100,1315+100,1315+100,1315+100,1316+100,1316+100,1316+100,1316+100 + .word 1316+100,1316+100,1317+100,1317+100,1317+100,1317+100,1317+100,1317+100 + .word 1318+100,1318+100,1318+100,1318+100,1318+100,1318+100,1318+100,1319+100 + .word 1319+100,1319+100,1319+100,1319+100,1319+100,1320+100,1320+100,1320+100 + .word 1320+100,1320+100,1320+100,1321+100,1321+100,1321+100,1321+100,1321+100 + .word 1321+100,1321+100,1322+100,1322+100,1322+100,1322+100,1322+100,1322+100 + .word 1323+100,1323+100,1323+100,1323+100,1323+100,1323+100,1324+100,1324+100 + .word 1324+100,1324+100,1324+100,1324+100,1324+100,1325+100,1325+100,1325+100 + .word 1325+100,1325+100,1325+100,1326+100,1326+100,1326+100,1326+100,1326+100 + .word 1326+100,1327+100,1327+100,1327+100,1327+100,1327+100,1327+100,1327+100 + .word 1328+100,1328+100,1328+100,1328+100,1328+100,1328+100,1329+100,1329+100 + .word 1329+100,1329+100,1329+100,1329+100,1330+100,1330+100,1330+100,1330+100 + .word 1330+100,1330+100,1330+100,1331+100,1331+100,1331+100,1331+100,1331+100 + .word 1331+100,1332+100,1332+100,1332+100,1332+100,1332+100,1332+100,1333+100 + .word 1333+100,1333+100,1333+100,1333+100,1333+100,1333+100,1334+100,1334+100 + .word 1334+100,1334+100,1334+100,1334+100,1335+100,1335+100,1335+100,1335+100 + .word 1335+100,1335+100,1336+100,1336+100,1336+100,1336+100,1336+100,1336+100 + .word 1336+100,1337+100,1337+100,1337+100,1337+100,1337+100,1337+100,1338+100 + .word 1338+100,1338+100,1338+100,1338+100,1338+100,1338+100,1339+100,1339+100 + .word 1339+100,1339+100,1339+100,1339+100,1340+100,1340+100,1340+100,1340+100 + .word 1340+100,1340+100,1341+100,1341+100,1341+100,1341+100,1341+100,1341+100 + .word 1341+100,1342+100,1342+100,1342+100,1342+100,1342+100,1342+100,1343+100 + .word 1343+100,1343+100,1343+100,1343+100,1343+100,1344+100,1344+100,1344+100 + .word 1344+100,1344+100,1344+100,1344+100,1345+100,1345+100,1345+100,1345+100 + .word 1345+100,1345+100,1346+100,1346+100,1346+100,1346+100,1346+100,1346+100 + .word 1347+100,1347+100,1347+100,1347+100,1347+100,1347+100,1347+100,1348+100 + .word 1348+100,1348+100,1348+100,1348+100,1348+100,1349+100,1349+100,1349+100 + .word 1349+100,1349+100,1349+100,1350+100,1350+100,1350+100,1350+100,1350+100 + .word 1350+100,1350+100,1351+100,1351+100,1351+100,1351+100,1351+100,1351+100 + .word 1352+100,1352+100,1352+100,1352+100,1352+100,1352+100,1353+100,1353+100 + .word 1353+100,1353+100,1353+100,1353+100,1353+100,1354+100,1354+100,1354+100 + .word 1354+100,1354+100,1354+100,1355+100,1355+100,1355+100,1355+100,1355+100 + .word 1355+100,1356+100,1356+100,1356+100,1356+100,1356+100,1356+100,1356+100 + .word 1357+100,1357+100,1357+100,1357+100,1357+100,1357+100,1358+100,1358+100 + .word 1358+100,1358+100,1358+100,1358+100,1359+100,1359+100,1359+100,1359+100 + .word 1359+100,1359+100,1359+100,1360+100,1360+100,1360+100,1360+100,1360+100 + .word 1360+100,1361+100,1361+100,1361+100,1361+100,1361+100,1361+100,1362+100 + .word 1362+100,1362+100,1362+100,1362+100,1362+100,1362+100,1363+100,1363+100 + .word 1363+100,1363+100,1363+100,1363+100,1364+100,1364+100,1364+100,1364+100 + .word 1364+100,1364+100,1365+100,1365+100,1365+100,1365+100,1365+100,1365+100 + .word 1365+100,1366+100,1366+100,1366+100,1366+100,1366+100,1366+100,1367+100 + .word 1367+100,1367+100,1367+100,1367+100,1367+100,1368+100,1368+100,1368+100 + .word 1368+100,1368+100,1368+100,1368+100,1369+100,1369+100,1369+100,1369+100 + .word 1369+100,1369+100,1370+100,1370+100,1370+100,1370+100,1370+100,1370+100 + .word 1371+100,1371+100,1371+100,1371+100,1371+100,1371+100,1371+100,1372+100 + .word 1372+100,1372+100,1372+100,1372+100,1372+100,1373+100,1373+100,1373+100 + .word 1373+100,1373+100,1373+100,1374+100,1374+100,1374+100,1374+100,1374+100 + .word 1374+100,1374+100,1375+100,1375+100,1375+100,1375+100,1375+100,1375+100 + .word 1376+100,1376+100,1376+100,1376+100,1376+100,1376+100,1377+100,1377+100 + .word 1377+100,1377+100,1377+100,1377+100,1377+100,1378+100,1378+100,1378+100 + .word 1378+100,1378+100,1378+100,1379+100,1379+100,1379+100,1379+100,1379+100 + .word 1379+100,1380+100,1380+100,1380+100,1380+100 + + +vln_left_matedge2 +; .word MAT_TOP-5,MAT_BOT+5 ;z1,z2 +; .word >400->110,>400->169 + .word 757,962,668,1526 ;x1,z1,x2,z2 + .word 757,757,757,757,756,756,756,756 + .word 756,756,755,755,755,755,755,755 + .word 754,754,754,754,754,754,754,753 + .word 753,753,753,753,753,752,752,752 + .word 752,752,752,751,751,751,751,751 + .word 751,751,750,750,750,750,750,750 + .word 749,749,749,749,749,749,748,748 + .word 748,748,748,748,748,747,747,747 + .word 747,747,747,746,746,746,746,746 + .word 746,745,745,745,745,745,745,745 + .word 744,744,744,744,744,744,743,743 + .word 743,743,743,743,742,742,742,742 + .word 742,742,742,741,741,741,741,741 + .word 741,740,740,740,740,740,740,739 + .word 739,739,739,739,739,739,738,738 + .word 738,738,738,738,737,737,737,737 + .word 737,737,736,736,736,736,736,736 + .word 736,735,735,735,735,735,735,734 + .word 734,734,734,734,734,733,733,733 + .word 733,733,733,733,732,732,732,732 + .word 732,732,731,731,731,731,731,731 + .word 730,730,730,730,730,730,730,729 + .word 729,729,729,729,729,728,728,728 + .word 728,728,728,727,727,727,727,727 + .word 727,727,726,726,726,726,726,726 + .word 725,725,725,725,725,725,724,724 + .word 724,724,724,724,724,723,723,723 + .word 723,723,723,722,722,722,722,722 + .word 722,721,721,721,721,721,721,721 + .word 720,720,720,720,720,720,719,719 + .word 719,719,719,719,718,718,718,718 + .word 718,718,718,717,717,717,717,717 + .word 717,716,716,716,716,716,716,715 + .word 715,715,715,715,715,715,714,714 + .word 714,714,714,714,713,713,713,713 + .word 713,713,712,712,712,712,712,712 + .word 712,711,711,711,711,711,711,710 + .word 710,710,710,710,710,710,709,709 + .word 709,709,709,709,708,708,708,708 + .word 708,708,707,707,707,707,707,707 + .word 707,706,706,706,706,706,706,705 + .word 705,705,705,705,705,704,704,704 + .word 704,704,704,704,703,703,703,703 + .word 703,703,702,702,702,702,702,702 + .word 701,701,701,701,701,701,701,700 + .word 700,700,700,700,700,699,699,699 + .word 699,699,699,698,698,698,698,698 + .word 698,698,697,697,697,697,697,697 + .word 696,696,696,696,696,696,695,695 + .word 695,695,695,695,695,694,694,694 + .word 694,694,694,693,693,693,693,693 + .word 693,692,692,692,692,692,692,692 + .word 691,691,691,691,691,691,690,690 + .word 690,690,690,690,689,689,689,689 + .word 689,689,689,688,688,688,688,688 + .word 688,687,687,687,687,687,687,686 + .word 686,686,686,686,686,686,685,685 + .word 685,685,685,685,684,684,684,684 + .word 684,684,683,683,683,683,683,683 + .word 683,682,682,682,682,682,682,681 + .word 681,681,681,681,681,680,680,680 + .word 680,680,680,680,679,679,679,679 + .word 679,679,678,678,678,678,678,678 + .word 677,677,677,677,677,677,677,676 + .word 676,676,676,676,676,675,675,675 + .word 675,675,675,674,674,674,674,674 + .word 674,674,673,673,673,673,673,673 + .word 672,672,672,672,672,672,671,671 + .word 671,671,671,671,671,670,670,670 + .word 670,670,670,669,669,669,669,669 + .word 669,668,668,668,668 + + +vln_right_fence +; .word ARENA_TOP,ARENA_BOT ;z1,z2 +; .word 0632h,072fh ;x1,x2 + + .word 1586+100,635,1839+100,1896 ;x1,z1,x2,z2 + + .word 1586+100,1586+100,1586+100,1587+100,1587+100,1587+100,1587+100,1587+100 + .word 1588+100,1588+100,1588+100,1588+100,1588+100,1589+100,1589+100,1589+100 + .word 1589+100,1589+100,1590+100,1590+100,1590+100,1590+100,1590+100,1591+100 + .word 1591+100,1591+100,1591+100,1591+100,1592+100,1592+100,1592+100,1592+100 + .word 1592+100,1593+100,1593+100,1593+100,1593+100,1593+100,1594+100,1594+100 + .word 1594+100,1594+100,1594+100,1595+100,1595+100,1595+100,1595+100,1595+100 + .word 1596+100,1596+100,1596+100,1596+100,1596+100,1597+100,1597+100,1597+100 + .word 1597+100,1597+100,1598+100,1598+100,1598+100,1598+100,1598+100,1599+100 + .word 1599+100,1599+100,1599+100,1599+100,1600+100,1600+100,1600+100,1600+100 + .word 1600+100,1601+100,1601+100,1601+100,1601+100,1601+100,1602+100,1602+100 + .word 1602+100,1602+100,1602+100,1603+100,1603+100,1603+100,1603+100,1603+100 + .word 1604+100,1604+100,1604+100,1604+100,1604+100,1605+100,1605+100,1605+100 + .word 1605+100,1605+100,1606+100,1606+100,1606+100,1606+100,1606+100,1607+100 + .word 1607+100,1607+100,1607+100,1607+100,1608+100,1608+100,1608+100,1608+100 + .word 1608+100,1609+100,1609+100,1609+100,1609+100,1609+100,1610+100,1610+100 + .word 1610+100,1610+100,1610+100,1611+100,1611+100,1611+100,1611+100,1611+100 + .word 1612+100,1612+100,1612+100,1612+100,1612+100,1613+100,1613+100,1613+100 + .word 1613+100,1613+100,1614+100,1614+100,1614+100,1614+100,1614+100,1615+100 + .word 1615+100,1615+100,1615+100,1615+100,1616+100,1616+100,1616+100,1616+100 + .word 1616+100,1617+100,1617+100,1617+100,1617+100,1617+100,1618+100,1618+100 + .word 1618+100,1618+100,1619+100,1619+100,1619+100,1619+100,1619+100,1620+100 + .word 1620+100,1620+100,1620+100,1620+100,1621+100,1621+100,1621+100,1621+100 + .word 1621+100,1622+100,1622+100,1622+100,1622+100,1622+100,1623+100,1623+100 + .word 1623+100,1623+100,1623+100,1624+100,1624+100,1624+100,1624+100,1624+100 + .word 1625+100,1625+100,1625+100,1625+100,1625+100,1626+100,1626+100,1626+100 + .word 1626+100,1626+100,1627+100,1627+100,1627+100,1627+100,1627+100,1628+100 + .word 1628+100,1628+100,1628+100,1628+100,1629+100,1629+100,1629+100,1629+100 + .word 1629+100,1630+100,1630+100,1630+100,1630+100,1630+100,1631+100,1631+100 + .word 1631+100,1631+100,1631+100,1632+100,1632+100,1632+100,1632+100,1632+100 + .word 1633+100,1633+100,1633+100,1633+100,1633+100,1634+100,1634+100,1634+100 + .word 1634+100,1634+100,1635+100,1635+100,1635+100,1635+100,1635+100,1636+100 + .word 1636+100,1636+100,1636+100,1636+100,1637+100,1637+100,1637+100,1637+100 + .word 1637+100,1638+100,1638+100,1638+100,1638+100,1638+100,1639+100,1639+100 + .word 1639+100,1639+100,1639+100,1640+100,1640+100,1640+100,1640+100,1640+100 + .word 1641+100,1641+100,1641+100,1641+100,1641+100,1642+100,1642+100,1642+100 + .word 1642+100,1642+100,1643+100,1643+100,1643+100,1643+100,1643+100,1644+100 + .word 1644+100,1644+100,1644+100,1644+100,1645+100,1645+100,1645+100,1645+100 + .word 1645+100,1646+100,1646+100,1646+100,1646+100,1646+100,1647+100,1647+100 + .word 1647+100,1647+100,1647+100,1648+100,1648+100,1648+100,1648+100,1648+100 + .word 1649+100,1649+100,1649+100,1649+100,1649+100,1650+100,1650+100,1650+100 + .word 1650+100,1650+100,1651+100,1651+100,1651+100,1651+100,1651+100,1652+100 + .word 1652+100,1652+100,1652+100,1652+100,1653+100,1653+100,1653+100,1653+100 + .word 1653+100,1654+100,1654+100,1654+100,1654+100,1654+100,1655+100,1655+100 + .word 1655+100,1655+100,1655+100,1656+100,1656+100,1656+100,1656+100,1656+100 + .word 1657+100,1657+100,1657+100,1657+100,1657+100,1658+100,1658+100,1658+100 + .word 1658+100,1658+100,1659+100,1659+100,1659+100,1659+100,1659+100,1660+100 + .word 1660+100,1660+100,1660+100,1660+100,1661+100,1661+100,1661+100,1661+100 + .word 1661+100,1662+100,1662+100,1662+100,1662+100,1662+100,1663+100,1663+100 + .word 1663+100,1663+100,1663+100,1664+100,1664+100,1664+100,1664+100,1664+100 + .word 1665+100,1665+100,1665+100,1665+100,1665+100,1666+100,1666+100,1666+100 + .word 1666+100,1666+100,1667+100,1667+100,1667+100,1667+100,1667+100,1668+100 + .word 1668+100,1668+100,1668+100,1668+100,1669+100,1669+100,1669+100,1669+100 + .word 1669+100,1670+100,1670+100,1670+100,1670+100,1670+100,1671+100,1671+100 + .word 1671+100,1671+100,1671+100,1672+100,1672+100,1672+100,1672+100,1672+100 + .word 1673+100,1673+100,1673+100,1673+100,1673+100,1674+100,1674+100,1674+100 + .word 1674+100,1674+100,1675+100,1675+100,1675+100,1675+100,1675+100,1676+100 + .word 1676+100,1676+100,1676+100,1676+100,1677+100,1677+100,1677+100,1677+100 + .word 1677+100,1678+100,1678+100,1678+100,1678+100,1678+100,1679+100,1679+100 + .word 1679+100,1679+100,1679+100,1680+100,1680+100,1680+100,1680+100,1680+100 + .word 1681+100,1681+100,1681+100,1681+100,1682+100,1682+100,1682+100,1682+100 + .word 1682+100,1683+100,1683+100,1683+100,1683+100,1683+100,1684+100,1684+100 + .word 1684+100,1684+100,1684+100,1685+100,1685+100,1685+100,1685+100,1685+100 + .word 1686+100,1686+100,1686+100,1686+100,1686+100,1687+100,1687+100,1687+100 + .word 1687+100,1687+100,1688+100,1688+100,1688+100,1688+100,1688+100,1689+100 + .word 1689+100,1689+100,1689+100,1689+100,1690+100,1690+100,1690+100,1690+100 + .word 1690+100,1691+100,1691+100,1691+100,1691+100,1691+100,1692+100,1692+100 + .word 1692+100,1692+100,1692+100,1693+100,1693+100,1693+100,1693+100,1693+100 + .word 1694+100,1694+100,1694+100,1694+100,1694+100,1695+100,1695+100,1695+100 + .word 1695+100,1695+100,1696+100,1696+100,1696+100,1696+100,1696+100,1697+100 + .word 1697+100,1697+100,1697+100,1697+100,1698+100,1698+100,1698+100,1698+100 + .word 1698+100,1699+100,1699+100,1699+100,1699+100,1699+100,1700+100,1700+100 + .word 1700+100,1700+100,1700+100,1701+100,1701+100,1701+100,1701+100,1701+100 + .word 1702+100,1702+100,1702+100,1702+100,1702+100,1703+100,1703+100,1703+100 + .word 1703+100,1703+100,1704+100,1704+100,1704+100,1704+100,1704+100,1705+100 + .word 1705+100,1705+100,1705+100,1705+100,1706+100,1706+100,1706+100,1706+100 + .word 1706+100,1707+100,1707+100,1707+100,1707+100,1707+100,1708+100,1708+100 + .word 1708+100,1708+100,1708+100,1709+100,1709+100,1709+100,1709+100,1709+100 + .word 1710+100,1710+100,1710+100,1710+100,1710+100,1711+100,1711+100,1711+100 + .word 1711+100,1711+100,1712+100,1712+100,1712+100,1712+100,1712+100,1713+100 + .word 1713+100,1713+100,1713+100,1713+100,1714+100,1714+100,1714+100,1714+100 + .word 1714+100,1715+100,1715+100,1715+100,1715+100,1715+100,1716+100,1716+100 + .word 1716+100,1716+100,1716+100,1717+100,1717+100,1717+100,1717+100,1717+100 + .word 1718+100,1718+100,1718+100,1718+100,1718+100,1719+100,1719+100,1719+100 + .word 1719+100,1719+100,1720+100,1720+100,1720+100,1720+100,1720+100,1721+100 + .word 1721+100,1721+100,1721+100,1721+100,1722+100,1722+100,1722+100,1722+100 + .word 1722+100,1723+100,1723+100,1723+100,1723+100,1723+100,1724+100,1724+100 + .word 1724+100,1724+100,1724+100,1725+100,1725+100,1725+100,1725+100,1725+100 + .word 1726+100,1726+100,1726+100,1726+100,1726+100,1727+100,1727+100,1727+100 + .word 1727+100,1727+100,1728+100,1728+100,1728+100,1728+100,1728+100,1729+100 + .word 1729+100,1729+100,1729+100,1729+100,1730+100,1730+100,1730+100,1730+100 + .word 1730+100,1731+100,1731+100,1731+100,1731+100,1731+100,1732+100,1732+100 + .word 1732+100,1732+100,1732+100,1733+100,1733+100,1733+100,1733+100,1733+100 + .word 1734+100,1734+100,1734+100,1734+100,1734+100,1735+100,1735+100,1735+100 + .word 1735+100,1735+100,1736+100,1736+100,1736+100,1736+100,1736+100,1737+100 + .word 1737+100,1737+100,1737+100,1737+100,1738+100,1738+100,1738+100,1738+100 + .word 1738+100,1739+100,1739+100,1739+100,1739+100,1739+100,1740+100,1740+100 + .word 1740+100,1740+100,1740+100,1741+100,1741+100,1741+100,1741+100,1741+100 + .word 1742+100,1742+100,1742+100,1742+100,1742+100,1743+100,1743+100,1743+100 + .word 1743+100,1743+100,1744+100,1744+100,1744+100,1744+100,1745+100,1745+100 + .word 1745+100,1745+100,1745+100,1746+100,1746+100,1746+100,1746+100,1746+100 + .word 1747+100,1747+100,1747+100,1747+100,1747+100,1748+100,1748+100,1748+100 + .word 1748+100,1748+100,1749+100,1749+100,1749+100,1749+100,1749+100,1750+100 + .word 1750+100,1750+100,1750+100,1750+100,1751+100,1751+100,1751+100,1751+100 + .word 1751+100,1752+100,1752+100,1752+100,1752+100,1752+100,1753+100,1753+100 + .word 1753+100,1753+100,1753+100,1754+100,1754+100,1754+100,1754+100,1754+100 + .word 1755+100,1755+100,1755+100,1755+100,1755+100,1756+100,1756+100,1756+100 + .word 1756+100,1756+100,1757+100,1757+100,1757+100,1757+100,1757+100,1758+100 + .word 1758+100,1758+100,1758+100,1758+100,1759+100,1759+100,1759+100,1759+100 + .word 1759+100,1760+100,1760+100,1760+100,1760+100,1760+100,1761+100,1761+100 + .word 1761+100,1761+100,1761+100,1762+100,1762+100,1762+100,1762+100,1762+100 + .word 1763+100,1763+100,1763+100,1763+100,1763+100,1764+100,1764+100,1764+100 + .word 1764+100,1764+100,1765+100,1765+100,1765+100,1765+100,1765+100,1766+100 + .word 1766+100,1766+100,1766+100,1766+100,1767+100,1767+100,1767+100,1767+100 + .word 1767+100,1768+100,1768+100,1768+100,1768+100,1768+100,1769+100,1769+100 + .word 1769+100,1769+100,1769+100,1770+100,1770+100,1770+100,1770+100,1770+100 + .word 1771+100,1771+100,1771+100,1771+100,1771+100,1772+100,1772+100,1772+100 + .word 1772+100,1772+100,1773+100,1773+100,1773+100,1773+100,1773+100,1774+100 + .word 1774+100,1774+100,1774+100,1774+100,1775+100,1775+100,1775+100,1775+100 + .word 1775+100,1776+100,1776+100,1776+100,1776+100,1776+100,1777+100,1777+100 + .word 1777+100,1777+100,1777+100,1778+100,1778+100,1778+100,1778+100,1778+100 + .word 1779+100,1779+100,1779+100,1779+100,1779+100,1780+100,1780+100,1780+100 + .word 1780+100,1780+100,1781+100,1781+100,1781+100,1781+100,1781+100,1782+100 + .word 1782+100,1782+100,1782+100,1782+100,1783+100,1783+100,1783+100,1783+100 + .word 1783+100,1784+100,1784+100,1784+100,1784+100,1784+100,1785+100,1785+100 + .word 1785+100,1785+100,1785+100,1786+100,1786+100,1786+100,1786+100,1786+100 + .word 1787+100,1787+100,1787+100,1787+100,1787+100,1788+100,1788+100,1788+100 + .word 1788+100,1788+100,1789+100,1789+100,1789+100,1789+100,1789+100,1790+100 + .word 1790+100,1790+100,1790+100,1790+100,1791+100,1791+100,1791+100,1791+100 + .word 1791+100,1792+100,1792+100,1792+100,1792+100,1792+100,1793+100,1793+100 + .word 1793+100,1793+100,1793+100,1794+100,1794+100,1794+100,1794+100,1794+100 + .word 1795+100,1795+100,1795+100,1795+100,1795+100,1796+100,1796+100,1796+100 + .word 1796+100,1796+100,1797+100,1797+100,1797+100,1797+100,1797+100,1798+100 + .word 1798+100,1798+100,1798+100,1798+100,1799+100,1799+100,1799+100,1799+100 + .word 1799+100,1800+100,1800+100,1800+100,1800+100,1800+100,1801+100,1801+100 + .word 1801+100,1801+100,1801+100,1802+100,1802+100,1802+100,1802+100,1802+100 + .word 1803+100,1803+100,1803+100,1803+100,1803+100,1804+100,1804+100,1804+100 + .word 1804+100,1804+100,1805+100,1805+100,1805+100,1805+100,1805+100,1806+100 + .word 1806+100,1806+100,1806+100,1806+100,1807+100,1807+100,1807+100,1807+100 + .word 1808+100,1808+100,1808+100,1808+100,1808+100,1809+100,1809+100,1809+100 + .word 1809+100,1809+100,1810+100,1810+100,1810+100,1810+100,1810+100,1811+100 + .word 1811+100,1811+100,1811+100,1811+100,1812+100,1812+100,1812+100,1812+100 + .word 1812+100,1813+100,1813+100,1813+100,1813+100,1813+100,1814+100,1814+100 + .word 1814+100,1814+100,1814+100,1815+100,1815+100,1815+100,1815+100,1815+100 + .word 1816+100,1816+100,1816+100,1816+100,1816+100,1817+100,1817+100,1817+100 + .word 1817+100,1817+100,1818+100,1818+100,1818+100,1818+100,1818+100,1819+100 + .word 1819+100,1819+100,1819+100,1819+100,1820+100,1820+100,1820+100,1820+100 + .word 1820+100,1821+100,1821+100,1821+100,1821+100,1821+100,1822+100,1822+100 + .word 1822+100,1822+100,1822+100,1823+100,1823+100,1823+100,1823+100,1823+100 + .word 1824+100,1824+100,1824+100,1824+100,1824+100,1825+100,1825+100,1825+100 + .word 1825+100,1825+100,1826+100,1826+100,1826+100,1826+100,1826+100,1827+100 + .word 1827+100,1827+100,1827+100,1827+100,1828+100,1828+100,1828+100,1828+100 + .word 1828+100,1829+100,1829+100,1829+100,1829+100,1829+100,1830+100,1830+100 + .word 1830+100,1830+100,1830+100,1831+100,1831+100,1831+100,1831+100,1831+100 + .word 1832+100,1832+100,1832+100,1832+100,1832+100,1833+100,1833+100,1833+100 + .word 1833+100,1833+100,1834+100,1834+100,1834+100,1834+100,1834+100,1835+100 + .word 1835+100,1835+100,1835+100,1835+100,1836+100,1836+100,1836+100,1836+100 + .word 1836+100,1837+100,1837+100,1837+100,1837+100,1837+100,1838+100,1838+100 + .word 1838+100,1838+100,1838+100,1839+100,1839+100,1839+100 + + +vln_left_fence +; .word ARENA_TOP,ARENA_BOT ;z1,z2 +; .word 02a6h,0189h ;x1,x2 + .word 668,635,383,1896 ;x1,z1,x2,z2 + .word 668,668,668,667,667,667,667,666 + .word 666,666,666,666,665,665,665,665 + .word 664,664,664,664,663,663,663,663 + .word 663,662,662,662,662,661,661,661 + .word 661,661,660,660,660,660,659,659 + .word 659,659,659,658,658,658,658,657 + .word 657,657,657,656,656,656,656,656 + .word 655,655,655,655,654,654,654,654 + .word 654,653,653,653,653,652,652,652 + .word 652,652,651,651,651,651,650,650 + .word 650,650,649,649,649,649,649,648 + .word 648,648,648,647,647,647,647,647 + .word 646,646,646,646,645,645,645,645 + .word 644,644,644,644,644,643,643,643 + .word 643,642,642,642,642,642,641,641 + .word 641,641,640,640,640,640,640,639 + .word 639,639,639,638,638,638,638,637 + .word 637,637,637,637,636,636,636,636 + .word 635,635,635,635,635,634,634,634 + .word 634,633,633,633,633,633,632,632 + .word 632,632,631,631,631,631,630,630 + .word 630,630,630,629,629,629,629,628 + .word 628,628,628,628,627,627,627,627 + .word 626,626,626,626,626,625,625,625 + .word 625,624,624,624,624,623,623,623 + .word 623,623,622,622,622,622,621,621 + .word 621,621,621,620,620,620,620,619 + .word 619,619,619,619,618,618,618,618 + .word 617,617,617,617,616,616,616,616 + .word 616,615,615,615,615,614,614,614 + .word 614,614,613,613,613,613,612,612 + .word 612,612,611,611,611,611,611,610 + .word 610,610,610,609,609,609,609,609 + .word 608,608,608,608,607,607,607,607 + .word 607,606,606,606,606,605,605,605 + .word 605,604,604,604,604,604,603,603 + .word 603,603,602,602,602,602,602,601 + .word 601,601,601,600,600,600,600,600 + .word 599,599,599,599,598,598,598,598 + .word 597,597,597,597,597,596,596,596 + .word 596,595,595,595,595,595,594,594 + .word 594,594,593,593,593,593,593,592 + .word 592,592,592,591,591,591,591,590 + .word 590,590,590,590,589,589,589,589 + .word 588,588,588,588,588,587,587,587 + .word 587,586,586,586,586,586,585,585 + .word 585,585,584,584,584,584,583,583 + .word 583,583,583,582,582,582,582,581 + .word 581,581,581,581,580,580,580,580 + .word 579,579,579,579,578,578,578,578 + .word 578,577,577,577,577,576,576,576 + .word 576,576,575,575,575,575,574,574 + .word 574,574,574,573,573,573,573,572 + .word 572,572,572,571,571,571,571,571 + .word 570,570,570,570,569,569,569,569 + .word 569,568,568,568,568,567,567,567 + .word 567,567,566,566,566,566,565,565 + .word 565,565,564,564,564,564,564,563 + .word 563,563,563,562,562,562,562,562 + .word 561,561,561,561,560,560,560,560 + .word 560,559,559,559,559,558,558,558 + .word 558,557,557,557,557,557,556,556 + .word 556,556,555,555,555,555,555,554 + .word 554,554,554,553,553,553,553,553 + .word 552,552,552,552,551,551,551,551 + .word 550,550,550,550,550,549,549,549 + .word 549,548,548,548,548,548,547,547 + .word 547,547,546,546,546,546,546,545 + .word 545,545,545,544,544,544,544,543 + .word 543,543,543,543,542,542,542,542 + .word 541,541,541,541,541,540,540,540 + .word 540,539,539,539,539,538,538,538 + .word 538,538,537,537,537,537,536,536 + .word 536,536,536,535,535,535,535,534 + .word 534,534,534,534,533,533,533,533 + .word 532,532,532,532,531,531,531,531 + .word 531,530,530,530,530,529,529,529 + .word 529,529,528,528,528,528,527,527 + .word 527,527,527,526,526,526,526,525 + .word 525,525,525,524,524,524,524,524 + .word 523,523,523,523,522,522,522,522 + .word 522,521,521,521,521,520,520,520 + .word 520,520,519,519,519,519,518,518 + .word 518,518,517,517,517,517,517,516 + .word 516,516,516,515,515,515,515,515 + .word 514,514,514,514,513,513,513,513 + .word 513,512,512,512,512,511,511,511 + .word 511,510,510,510,510,510,509,509 + .word 509,509,508,508,508,508,508,507 + .word 507,507,507,506,506,506,506,505 + .word 505,505,505,505,504,504,504,504 + .word 503,503,503,503,503,502,502,502 + .word 502,501,501,501,501,501,500,500 + .word 500,500,499,499,499,499,498,498 + .word 498,498,498,497,497,497,497,496 + .word 496,496,496,496,495,495,495,495 + .word 494,494,494,494,494,493,493,493 + .word 493,492,492,492,492,491,491,491 + .word 491,491,490,490,490,490,489,489 + .word 489,489,489,488,488,488,488,487 + .word 487,487,487,487,486,486,486,486 + .word 485,485,485,485,484,484,484,484 + .word 484,483,483,483,483,482,482,482 + .word 482,482,481,481,481,481,480,480 + .word 480,480,480,479,479,479,479,478 + .word 478,478,478,477,477,477,477,477 + .word 476,476,476,476,475,475,475,475 + .word 475,474,474,474,474,473,473,473 + .word 473,473,472,472,472,472,471,471 + .word 471,471,470,470,470,470,470,469 + .word 469,469,469,468,468,468,468,468 + .word 467,467,467,467,466,466,466,466 + .word 465,465,465,465,465,464,464,464 + .word 464,463,463,463,463,463,462,462 + .word 462,462,461,461,461,461,461,460 + .word 460,460,460,459,459,459,459,458 + .word 458,458,458,458,457,457,457,457 + .word 456,456,456,456,456,455,455,455 + .word 455,454,454,454,454,454,453,453 + .word 453,453,452,452,452,452,451,451 + .word 451,451,451,450,450,450,450,449 + .word 449,449,449,449,448,448,448,448 + .word 447,447,447,447,447,446,446,446 + .word 446,445,445,445,445,444,444,444 + .word 444,444,443,443,443,443,442,442 + .word 442,442,442,441,441,441,441,440 + .word 440,440,440,440,439,439,439,439 + .word 438,438,438,438,437,437,437,437 + .word 437,436,436,436,436,435,435,435 + .word 435,435,434,434,434,434,433,433 + .word 433,433,432,432,432,432,432,431 + .word 431,431,431,430,430,430,430,430 + .word 429,429,429,429,428,428,428,428 + .word 428,427,427,427,427,426,426,426 + .word 426,425,425,425,425,425,424,424 + .word 424,424,423,423,423,423,423,422 + .word 422,422,422,421,421,421,421,421 + .word 420,420,420,420,419,419,419,419 + .word 418,418,418,418,418,417,417,417 + .word 417,416,416,416,416,416,415,415 + .word 415,415,414,414,414,414,414,413 + .word 413,413,413,412,412,412,412,411 + .word 411,411,411,411,410,410,410,410 + .word 409,409,409,409,409,408,408,408 + .word 408,407,407,407,407,407,406,406 + .word 406,406,405,405,405,405,404,404 + .word 404,404,404,403,403,403,403,402 + .word 402,402,402,402,401,401,401,401 + .word 400,400,400,400,399,399,399,399 + .word 399,398,398,398,398,397,397,397 + .word 397,397,396,396,396,396,395,395 + .word 395,395,395,394,394,394,394,393 + .word 393,393,393,392,392,392,392,392 + .word 391,391,391,391,390,390,390,390 + .word 390,389,389,389,389,388,388,388 + .word 388,388,387,387,387,387,386,386 + .word 386,386,385,385,385,385,385,384 + .word 384,384,384,383,383,383 + + +#***************************************************************************** +* +* BOXES + + .even +box_matedge + .long vln_left_matedge + .long vln_right_matedge + +box_matedge2 + .long vln_left_matedge2 + .long vln_right_matedge2 + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/RING.EQU b/BACKUP/RING.EQU new file mode 100644 index 0000000..0697b15 --- /dev/null +++ b/BACKUP/RING.EQU @@ -0,0 +1,40 @@ + .global vln_right_rope + .global vln_left_rope + .global vln_right_matedge + .global vln_left_matedge + .global vln_right_matedge2 + .global vln_left_matedge2 + .global vln_right_fence + .global vln_left_fence + .global box_matedge + .global box_matedge2 + +****************************************************************************** +* +* MISC GAME EQUATES + +; to calculate this value divide the average width of the ring by +; the height of the ring +; 489W / 102H = 4.794 + +Y_SCALE_MULTIPLIER equ 3566h ; = 1 / 4.794 * 2^16 + +RING_X_CENTER equ 0400h+50 + +RING_Z_CENTER equ 04a0h + +RING_TOP equ 03ffh +RING_BOT equ 0541h + +ARENA_TOP equ 027bh +ARENA_BOT equ 0768h + +MAT_TOP equ 03C7h + +MAT_BOT equ 05F1h + +MAT_Y equ 62 + + +****************************************************************************** + \ No newline at end of file diff --git a/BACKUP/ROBO.ASM b/BACKUP/ROBO.ASM new file mode 100644 index 0000000..7efc46a --- /dev/null +++ b/BACKUP/ROBO.ASM @@ -0,0 +1,5006 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 4 Oct 93 +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/8/93 11:15 +************************************************************** + + .file "robo.asm" + .title "robotron game" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;Mproc equates + .include "display.equ" ;Display proc equates + .include "gsp.equ" ;Gsp asm equates + .include "sys.equ" + .include "game.equ" + .include "audit.equ" + .include "macros.h" + .include "link.equ" + + .include "roboimg.glo" + .include "fontsimg.glo" + +#***************************************************************************** + + ;from ADJUST.ASM + .ref BINBCD + + ;from COLL2.ASM + .ref collisions,CCCCount + + ;from DCSSOUND.ASM + .ref nosounds + + ;from DISPLAY.ASM + .ref pal_getf,STOPOBJS,fg2bg + + ;from MAIN.ASM + .ref dpageflip,IRQSKYE + + ;from MPROC.ASM + .ref KIL1C + + ;from STRING.ASM + .ref setup_message,print_string_R,mess_objid,copy_string + .ref dec_to_asc + + ;from UTIL.ASM + .ref get_all_buttons_cur,get_stick_val_cur,RNDRNG0,get_start_cur + .ref WIPEOUT,CYCLE_TABLE + + ;from WRESTLE.ASM + .ref CPULEFT,HALT + + ;for WRESTLE.ASM + .def RE_DEADPLAYER,RE_WAVEDONE,RE_ABORT,RE_BACKUP + + .ref _switch_addr,_switch2_addr,ADD_VOICE + +#***************************************************************************** + + BSSX robo_end, 16 ;reason for wave end + BSSX robotron_score, 32 ;UHL score + .bss player_dead, 16 + .bss starts_down, 16 ;are both starts down? + .bss player_object, 32 ;pointer to char1 obj + .bss gun_proc, 32 ;gun process address + .bss robo_wave, 16 ;which wave to perform? + .bss live_badguys, 16 ;wave-preserving badguy count + .bss forward, 16 ;skip wave + .bss backward, 16 ;drop back a wave + +#***************************************************************************** + +ROBO_DEBUG equ 0 +WAVE_CONTROL equ 1 +BOG_MONITOR equ 1 + +ROBO_PAGE equ 0*256 + +ROBJ_MOM equ 1 +ROBJ_DAD equ 2 +ROBJ_KID equ 3 + +;termination causes +RE_DEADPLAYER equ 1 +RE_WAVEDONE equ 2 +RE_ABORT equ 3 +RE_BACKUP equ 4 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** + + SUBR robo_check + + move @_switch_addr,a0,L + move *a0,a0,W + andi >FFFF,a0 + cmpi >CFFF,a0 + jrne #robo_end + + move @_switch2_addr,a0,L + move *a0,a0,W + andi >FFFF,a0 + cmpi >FFDF,a0 + jrne #robo_end + callr reset_roboscore + + movi -1,a0 + calla ADD_VOICE + + clr a0 +#robo_loop + JSRP robo_game + move @robo_end,a14 + cmpi RE_DEADPLAYER,a14 + jreq #player_died + cmpi RE_WAVEDONE,a14 + jreq #wave_successful + cmpi RE_ABORT,a14 + jreq #wave_aborted + cmpi RE_BACKUP,a14 + jreq #back_up + jruc #robo_end + +#player_died + jruc #robo_loop + +#wave_successful + inc a0 + cmpi 16,a0 + jrne #robo_loop + jruc #robo_end + +#wave_aborted + jruc #robo_end + +#back_up + dec a0 + jrnn #robo_loop + clr a0 + jruc #robo_loop + +#robo_end + RETP + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** + + SUBRP reset_roboscore + + clr a14 + move a14,@robotron_score,L + rets + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** + + SUBR robo_game + + sla 4,a0 + move a0,@robo_wave,W + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + move a0,@CCCCount + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 1 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + SLEEPK 2 + + calla nosounds ;kill the select music + + ;draw the frame + move @robo_wave,a0 + addi #border_colors,a0 + move *a0,a0,W + callr draw_frame + + movk 1,a0 + move a0,@DISPLAYON + + SLEEPK 2 + + clr a14 + move a14,@player_dead,W ;clear the done flag + + ;initialize the robo palette color cycles + callr robo_pal_cycles + + ;initialize the badguy count + clr a14 + move a14,@live_badguys,W + + ;place the wave count + callr wave_count + + ;create the score monitor + CREATE ROBOSCORE_PID,score + + ;set up the player object + CREATE ROBOMAN_PID,our_hero ;start the little guy up + CREATE PLYRGUN_PID,player_gun ;give him a weapon + move a0,@gun_proc,L ;save the address + + ;set up some grunts + move @robo_wave,a0 + addi #wave_grunts,a0 + move *a0,a0,W + move @robo_wave,a2 + addi #grunt_speeds,a2 + move *a2,a2,W + callr make_grunts + + ;make some hulks + move @robo_wave,a0 + addi #wave_hulks,a0 + move *a0,a0,W + callr make_hulks + + ;sphereoids + move @robo_wave,a0 + addi #wave_sphereoids,a0 + move *a0,a0,W + callr make_sphereoids + + ;quarks + move @robo_wave,a0 + addi #wave_quarks,a0 + move *a0,a0,W + callr make_quarks + + ;make a few posts + move @robo_wave,a0 + addi #wave_posts,a0 + move *a0,a0,W + + move @robo_wave,a1 + addi #post_types,a1 + move *a1,a1,W + + move @robo_wave,a2 + addi #post_colors,a2 + move *a2,a2,W + + callr make_posts + + ;and some people + move @robo_wave,a0 + move a0,a1 + move a0,a2 + addi #wave_moms,a0 + addi #wave_dads,a1 + addi #wave_kids,a2 + move *a0,a0,W + move *a1,a1,W + move *a2,a2,W + callr make_humans + + ;start the collision checker + CREATE COLL_PID,collisions + + ;create the both-start-btn watcher + clr a0 + move a0,@starts_down,W + move a0,@forward,W + move a0,@backward,W + CREATE MISC_PID,watch_both_starts + + .if WAVE_CONTROL + CREATE MISC_PID,wave_mover + .endif + + .if BOG_MONITOR + CREATE MISC_PID,bog_o_meter + .endif + + calla display_unblank + +#not_done + SLEEPK 1 + move @live_badguys,a14 + jrz #wave_done + + move @player_dead,a14 + jrnz #dead_hero + + move @starts_down,a14 + jrnz #wave_abort + + move @forward,a14 + jrnz #wave_done + + move @backward,a14 + jrnz #back_up + jruc #not_done + + +#wave_done + movi RE_WAVEDONE,a14 + jruc #quit +#dead_hero + movi RE_DEADPLAYER,a14 + jruc #quit +#wave_abort + movi RE_ABORT,a14 + jruc #quit + +#back_up + movi RE_BACKUP,a14 + jruc #quit + +#quit + move a14,@robo_end,W + + ;put the wave back in a0 just like we found it + move @robo_wave,a0,W + sra 4,a0 + RETP + + +#border_colors + .if ROBO_DEBUG + .word 1 + .endif + .word 01,06,01,14,07,03,02,08 + .word 00,10,01,06,01,14,07,03 + +#wave_grunts + .if ROBO_DEBUG + .word 4 + .endif +; .word 15,17,22,34,20,30,00,30 +; .word 30,25,30,00,30,27,25,30 + + .word 15,17,22,34,20,32,00,35 + .word 60,25,35,00,35,27,25,35 + +#grunt_speeds + .if ROBO_DEBUG + .word 1000 + .endif + .word 20,15,15,15,15,15,15,15 + .word 15,15,14,14,14,14,14,13 + +#wave_posts + .if ROBO_DEBUG + .word 15 + .endif + .word 05,15,25,25,20,25,00,25 + .word 00,20,25,00,25,05,20,25 + +#post_types + .if ROBO_DEBUG + .word 0 + .endif + .word 0,1,3,8,4,2,0,7 + .word 0,5,0,1,3,8,4,2 + +#post_colors + .if ROBO_DEBUG + .word 0Fh + .endif + .word 15,14,11,13,14,15,14,11 + .word 14,10,15,14,11,13,14,15 + +#wave_hulks + .if ROBO_DEBUG + .word 0 + .endif + .word 00,05,06,07,00,07,12,08 + .word 04,00,08,13,08,20,02,03 + +#wave_sphereoids + .if ROBO_DEBUG + .word 0 + .endif + .word 00,01,03,04,01,04,00,05 + .word 05,01,05,00,05,02,01,05 + +#wave_quarks + .if ROBO_DEBUG + .word 0 + .endif + .word 00,00,00,00,00,00,10,00 + .word 00,00,00,12,00,00,00,00 + +#wave_moms + .if ROBO_DEBUG + .word 2 + .endif + .word 01,01,02,02,15,03,04,03 + .word 03,00,03,03,03,05,00,03 + +#wave_dads + .if ROBO_DEBUG + .word 2 + .endif + .word 01,01,02,02,00,03,04,03 + .word 03,22,03,03,03,05,00,03 + +#wave_kids + .if ROBO_DEBUG + .word 2 + .endif + .word 00,01,02,02,01,03,04,03 + .word 03,00,03,03,03,05,22,03 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* PLAYER SECTION +* + + ;reg use + ; a4 - current position in animation script + ; a5 - head of current animation script + ; a6 - tail of current animation script + ; a8 - player object + ; a9 - motion count accumulator + ; a10 - direction of motion + + SUBRP our_hero + + ;create the player object + movi [#start_x,0],a0 + movi [#start_y,0],a1 + movi man_d1,a2 + clr a3 + movi DMAWNZ,a4 + movi CLSPLYR|TYPPLYR,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;set the global pointer + move a8,@player_object,L + + ; initiailize direction of motion + clr a10 + +#not_done + PUSHP a4,a5,a6 + SLEEPK 1 + PULLP a4,a5,a6 + + ; move him first + callr #move_player + + ; change his animation frame, if neccesary + callr #change_frame + + jruc #not_done + +#player_dead + ;kill the gun process + move @gun_proc,a0,L + calla KILL + + movi BULLET_PID,a0 + calla KIL1C + + movi GRUNT_PID,a0 + calla KIL1C + + movi HULK_PID,a0 + calla KIL1C + + movi HUMAN_PID,a0 + calla KIL1C + + movi SPHEREOID_PID,a0 + calla KIL1C + + movi ENFORCER_PID,a0 + calla KIL1C + + movi SPARK_PID,a0 + calla KIL1C + + movi QUARK_PID,a0 + calla KIL1C + + movi TANK_PID,a0 + calla KIL1C + + movi SHELL_PID,a0 + calla KIL1C + + calla STOPOBJS + + ;switch frames + movi robo_dead,a0,L + callr civanic + + SLEEP 120 + movk 1,a14 + move a14,@player_dead,W + + DIE + +****************************************************************************** +* +* player move routine +* + + SUBRP #move_player + + clr a0 + calla get_stick_val_cur + btst JOYDN,a0 + jrnz #move_down + btst JOYUP,a0 + jrnz #move_up + btst JOYRGT,a0 + jrnz #move_right + btst JOYLFT,a0 + jrnz #move_left + jruc #no_move + +#move_down + btst JOYRGT,a0 + jrnz #move_downright + btst JOYLFT,a0 + jrnz #move_downleft + + ;increment Y + move *a8(OYPOS),a14,W + inc a14 + move a14,*a8(OYPOS),W + jruc #move_done + +#move_up + btst JOYRGT,a0 + jrnz #move_upright + btst JOYLFT,a0 + jrnz #move_upleft + + ;decrement Y + move *a8(OYPOS),a14,W + dec a14 + move a14,*a8(OYPOS),W + jruc #move_done + +#move_right + ;increment X + move *a8(OXPOS),a14,W + inc a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_left + ;decrement X + move *a8(OXPOS),a14,W + dec a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_upright + ; decrement Y and increment X + move *a8(OYPOS),a14,W + dec a14 + move a14,*a8(OYPOS),W + move *a8(OXPOS),a14,W + inc a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_upleft + ; decrement Y and decrement X + move *a8(OYPOS),a14,W + dec a14 + move a14,*a8(OYPOS),W + move *a8(OXPOS),a14,W + dec a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_downright + ; increment Y and increment X + move *a8(OYPOS),a14,W + inc a14 + move a14,*a8(OYPOS),W + move *a8(OXPOS),a14,W + inc a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_downleft + ; increment Y and decrement X + move *a8(OYPOS),a14,W + inc a14 + move a14,*a8(OYPOS),W + move *a8(OXPOS),a14,W + dec a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_done + ; check bounds + move *a8(OXPOS),a14,W + cmpi #low_x,a14,W + jrgt #not_lowx + ; too low on x + inc a14 + move a14,*a8(OXPOS),W + +#not_lowx + cmpi #high_x,a14,W + jrle #not_highx + ; too high on x + dec a14 + move a14,*a8(OXPOS),W + +#not_highx + + move *a8(OYPOS),a14,W + cmpi #low_y,a14,W + jrgt #not_lowy + ; too low on y + inc a14 + move a14,*a8(OYPOS),W + +#not_lowy + cmpi #high_y,a14,W + jrle #not_highy + ; too high on y + dec a14 + move a14,*a8(OYPOS),W + +#not_highy +#no_move + +#done_moving + rets + +****************************************************************************** +* +* player animation routine +* + + + SUBRP #change_frame + ;reg use + ; a0 scratch + ; a1 sctatch + ; a3 new direction of motion + ; a10 old direction of motion - update + + clr a0 + clr a2 + calla get_stick_val_cur + move a0,a3 + + cmp a0,a10 + jreq #same_direction + jruc #new_direction + +#new_direction + ; start a new script. first use the joystick bits to compute an + ; offset into the script table. + X32 a0 ;multiply by 32 + addi #script_map,a0 ;add the address of the script table + move *a0,a0,L ;get the address of the script + + ; get the tail and head of the image list for this script + move *a0+,a6,L + move a0,a5 + + ;a5 now points to the first image in the script. change to it. + move *a5,a0,L + callr civanic + + ;set the new direction thingie and script pointer + move a3,a10 + move a5,a4 + + ;set the motion count + movi #motion_count,a9 + jruc #done_changing + +#same_direction + ;check the motion count + dec a9 + jrnz #done_changing + + ;reset the motion count + movi #motion_count,a9 + + ;increment the pointer, wrap if neccesary + addi 20h,a4 + cmp a4,a6 + jrne #no_wrap + move a5,a4 + +#no_wrap + ;a4 is the new image. change to it. + move *a4,a0,L + callr civanic + + jruc #done_changing + +#done_changing + rets + + +****************************************************************************** +* +* player collision routines +* + + SUBR player_die + PUSH a1,a7 + + ;we hit some kind of bad guy and are dead + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADPLAYER_PID,a1 + movi #player_dead,a7 + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* player configuration data +* + +;start position +#start_x equ 197 +#start_y equ 123 + +; motion boundaries +#low_x equ 53 +#high_x equ 347-7 +#low_y equ 45 +#high_y equ 231-12 + +;motion count - controls animation speed +#motion_count equ 2 ;there will be trouble if this is zero + +; walking animation scripts +#ani_holdstill + .long #ani_holdstillx + .long man_d1 +#ani_holdstillx + +#ani_walkup + .long #ani_walkupx + .long man_u1 + .long man_u2 + .long man_u1 + .long man_u3 +#ani_walkupx + +#ani_walkdown + .long #ani_walkdownx + .long man_d1 + .long man_d2 + .long man_d1 + .long man_d3 +#ani_walkdownx + +#ani_walkright + .long #ani_walkrightx + .long man_r1 + .long man_r2 + .long man_r1 + .long man_r3 +#ani_walkrightx + +#ani_walkleft + .long #ani_walkleftx + .long man_l1 + .long man_l2 + .long man_l1 + .long man_l3 +#ani_walkleftx + +#ani_bad + .long #ani_badx + .long robo_bad +#ani_badx + +; direction - script mappings: use AND combo of joy bits as index +#script_map + .long #ani_holdstill + .long #ani_walkup + .long #ani_walkdown + .long #ani_bad + .long #ani_walkleft + .long #ani_walkleft + .long #ani_walkleft + .long #ani_bad + .long #ani_walkright + .long #ani_walkright + .long #ani_walkright + .long #ani_bad + .long #ani_bad + .long #ani_bad + .long #ani_bad + .long #ani_bad +#script_mapx + + +#***************************************************************************** +* +* player gun process +* + + ;reg use + ;a9 time till next shot is allowed + + SUBRP player_gun + + clr a9 + jruc #sleep + +#check_shot + movk 1,a0 + calla get_stick_val_cur + jrz #sleep ;no shot + + ;fire in the indicated direction + move a0,a10 + CREATE BULLET_PID,bullet + movi #rate_of_fire,a9 + jruc #sleep + +#too_soon + dec a9 + jruc #sleep + +#sleep + SLEEPK 1 + move a9,a9 + jrnz #too_soon + jruc #check_shot + +#done + DIE + +#rate_of_fire equ 6 ;min ticks between shots + + +#***************************************************************************** +* +* player bullet process +* + + ;reg use + ; a4 velocity accumulator (used to pick the correct bullet) + ; a5 vert indicator + ; a8 bullet object + ;a10 (in) stick bits + + SUBRP bullet + + ;create a bullet object + movi [500,0],a0 + clr a1 + movi bullet_hrz,a2 + clr a3 + movi DMAWNZ,a4 + movi CLSPLYR|TYPBULLET,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;set the speed and start position + move @player_object,a9,L + clr a4 + clr a5 + move *a9(OXPOS),a0,W + addk #bstart_xoff,a0 + move a0,*a8(OXPOS),W + move *a9(OYPOS),a0,W + addk #bstart_yoff,a0 + move a0,*a8(OYPOS),W + + btst JOYRGT,a10 + jrz #not_right + move *a8(OXPOS),a14,W ;pos + addi #bstart_radj,a14 + move a14,*a8(OXPOS),W + movi #bullet_speed,a0 ;speed + move a0,*a8(OXVEL),L + inc a4 + +#not_right + + btst JOYLFT,a10 + jrz #not_left + move *a8(OXPOS),a14,W ;pos + addi #bstart_ladj,a14 + move a14,*a8(OXPOS),W + movi -#bullet_speed,a0 ;speed + move a0,*a8(OXVEL),L + dec a4 + +#not_left + + btst JOYUP,a10 + jrz #not_up + move *a8(OYPOS),a14,W ;pos + addi #bstart_uadj,a14 + move a14,*a8(OYPOS),W + movi -#bullet_speed,a0 ;speed + move a0,*a8(OYVEL),L + dec a4 + inc a5 + +#not_up + + btst JOYDN,a10 + jrz #not_down + move *a8(OYPOS),a14,W ;pos + addi #bstart_dadj,a14 + move a14,*a8(OYPOS),W + movi #bullet_speed,a0 ;speed + move a0,*a8(OYVEL),L + inc a4 + inc a5 + +#not_down + + ;set the image + movi bullet_hrz,a0 + move a5,a5 + jrz #horiz + movi bullet_vrt,a0 +#horiz + + ;vert/horz is set. check for diagonal instead + cmpi 1,a4 + jreq #image_set + cmpi -1,a4 + jreq #image_set + + ;it's a diagonal. if a4 is 0, use frontslash + move a4,a4 + jrz #front_slash + movi bullet_bck,a0 + jruc #image_set + +#front_slash + movi bullet_fnt,a0 + +#image_set + callr civanic + +#loop + callr bounds_check + move a0,a0 + jrnz #hit_wall + SLEEPK 1 + jruc #loop + +#hit_wall + ;zoinks! We've hit a wall. back up to be flush against it. + ; a2 holds the number of pixels we have to back up. + + ;well, we can overlap on the wall a LITTLE. say, 2 pixels. + subk 2,a2 + + move *a8(OXVEL),a0,L + jrz #y_adjust + jrn #neg_xvel + move *a8(OXPOS),a0,W + sub a2,a0 + move a0,*a8(OXPOS),W + jruc #y_adjust +#neg_xvel + move *a8(OXPOS),a0,W + add a2,a0 + move a0,*a8(OXPOS),W + +#y_adjust + move *a8(OYVEL),a0,L + jrz #kill_bullet + jrn #neg_yvel + move *a8(OYPOS),a0,W + sub a2,a0 + move a0,*a8(OYPOS),W + jruc #kill_bullet +#neg_yvel + move *a8(OYPOS),a0,W + add a2,a0 + move a0,*a8(OYPOS),W + +#kill_bullet + SLEEPK 1 + calla DELOBJA8 + DIE + + +****************************************************************************** +* +* player bullet collision routines +* + + SUBR bullet_die + PUSH a1,a7,a9,a10,a11 + + ;we hit some kind of bad guy and are stopped. + movi CLSDEAD,a14 + move a14,*A8(OID) + move *a8(OPLINK),a0,L + movi DEADBULLET_PID,a1 + movi #kill_bullet,a7 + calla XFERPROC + + PULL a1,a7,a9,a10,a11 + rets + + +#bullet_speed equ 00080000h ;pixels per frame + +#low_x equ 53 +#high_x equ 346 +#low_y equ 45 +#high_y equ 230 + +;hero anim point is top left. bullet anim point is center. use these to +; adjust the starting position of the bullet. +; No. The bullet anim points are gone now. Unk. +#bstart_xoff equ 3 +#bstart_yoff equ 5 + +#bstart_radj equ 7 +#bstart_ladj equ -13 +#bstart_uadj equ -14 +#bstart_dadj equ 8 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* GRUNT SECTION +* + + ;reg use + ; a0 (in) # of grunts + ; a1 scratch + ; a2 (in) initial speed + + SUBRP make_grunts + + move a0,a0 + jrz #done + +#another_grunt + PUSHP a0 + +#get_pos + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a0,a9 + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a10 + + addi #min_x,a9 + addi #min_y,a10 + + cmpi #mid_x1,a9 + jrle #place_grunt + cmpi #mid_x2,a9 + jrge #place_grunt + cmpi #mid_y1,a10 + jrle #place_grunt + cmpi #mid_y2,a10 + jrge #place_grunt + jruc #get_pos + +#place_grunt + ;assign a random starting position + move a2,a11 + CREATE GRUNT_PID,grunt + PULLP a0 + dsj a0,#another_grunt + +#done + rets + + +#min_x equ 53 ;grunt start outer boundaries +#max_x equ 347-9 +#min_y equ 45 +#max_y equ 231-13 + +#mid_x1 equ 200-60 ;grunt start inner boundaries +#mid_x2 equ 200+60 +#mid_y1 equ 138-60 +#mid_y2 equ 138+60 + + +#***************************************************************************** +* +* grunt process +* + + STRUCTPD + WORD #ACCEL_TIMER ;UHW accelerator count + LONG #DEATH_SEQUENCE ;UHL anim to use when dying + ; (set by coll routines) + + ;reg use + ; a8 object handle + ; a9 (in) starting x + ; a9 (use) ticks between moves + ;a10 (in) starting y + ;a10 (use) ticks until next move + ;a11 (in) initial speed + ;a11 (use) frame count + + SUBRP grunt + + ;increment the badguy count + move @live_badguys,a14,W + inc a14 + move a14,@live_badguys,W + + ;create a grunt object + move a9,a0 + sla 16,a0 + move a10,a1 + sla 16,a1 + movi grunt_1,a2 + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPGRUNT,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;initialize move timer + move a11,a9 + + ;initialize time till next move + move a9,a0 + calla RNDRNG0 + add a11,a0 + move a0,a10 + + ;initialize accel counter + movi #acceleration,a14 + move a14,*a13(#ACCEL_TIMER),W + + ;initialize frame counter + clr a11 + +#loop + move *a13(#ACCEL_TIMER),a14,W + dec a14 + jrnz #no_accel + + movi #acceleration,a14 + cmpi #top_speed,a9 + jreq #no_accel + dec a9 + +#no_accel + move a14,*a13(#ACCEL_TIMER),W + SLEEPK 1 + + dsj a10,#loop + callr #move_grunt + move a9,a10 + jruc #loop + +#die + ;we've croaked + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + + ;set up the animation + move *a13(#DEATH_SEQUENCE),a9,L + move *a8(OCTRL),a0 + +#dieloop + move *a9+,a0,L + jrz #dead_n_buried + callr civanic + sleepk #death_speed + jruc #dieloop + +#dead_n_buried + calla DELOBJA8 + + DIE + +****************************************************************************** +* +* grunt move routine +* + + SUBRP #move_grunt + move @player_object,a14,L + + ;move in X + move *a14(OXPOS),a0,W + move *a8(OXPOS),a1,W + sub a1,a0 + jrz #done_movex + jrn #move_left + jruc #move_right + +#move_left + move *a8(OXPOS),a1,W + addi -#xmotion_inc,a1 + move a1,*a8(OXPOS),W + jruc #done_movex + +#move_right + move *a8(OXPOS),a1,W + addi #xmotion_inc,a1 + move a1,*a8(OXPOS),W + jruc #done_movex + +#done_movex + + move *a14(OYPOS),a0,W + move *a8(OYPOS),a1,W + sub a1,a0 + jrz #done_movey + jrn #move_up + jruc #move_down + +#move_up + move *a8(OYPOS),a1,W + addi -#ymotion_inc,a1 + move a1,*a8(OYPOS),W + jruc #done_movey + +#move_down + move *a8(OYPOS),a1,W + addi #ymotion_inc,a1 + move a1,*a8(OYPOS),W + jruc #done_movey + +#done_movey + + ;step through the animation + inc a11 + cmpi 4,a11 + jrne #no_wrap + clr a11 + +#no_wrap + move a11,a14 + X32 a14 + addi #walk_script,a14 + move *a14,a0,L + callr civanic + + rets + + +****************************************************************************** +* +* grunt collision routines +* + + SUBR grunt_shot + ;hit by player gunfire + PUSH a1,a7 + + ;jeepers. we're dead. + movi CLSDEAD,a14 + move a14,*a8(OID),W + + move *a0(OXVEL),a14,L + jrz #vert_bullet + move *a0(OYVEL),a1,L + jrz #horz_bullet + + add a1,a14 + jrz #diag_13 + jruc #diag_24 + +#horz_bullet + movi #die_vert,a14 + jruc #death_set +#vert_bullet + movi #die_horz,a14 + jruc #death_set +#diag_13 + movi #die_diag24,a14 + jruc #death_set +#diag_24 + movi #die_diag13,a14 + jruc #death_set + +#death_set + move *a8(OPLINK),a0,L + move a14,*a0(#DEATH_SEQUENCE),L + movi DEADGRUNT_PID,a1 + movi #die,a7 + + move *a0(PA9),a9,L + move *a0(PA10),a10,L + calla XFERPROC + + movi #grunt_points,a0 + callr score_points + + PULL a1,a7 + rets + + + SUBR grunt_die + ;hit a mine or something + + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi #die_vert,a14 + move a14,*a0(#DEATH_SEQUENCE),L + movi DEADGRUNT_PID,a1 + movi #die,a7 + move *a0(PA9),a9,L + move *a0(PA10),a10,L + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* grunt configuration data +* + + +#walk_script + .long grunt_1 + .long grunt_2 + .long grunt_1 + .long grunt_3 +#walk_scriptx + +#die_vert + .long grunt_xv1 + .long grunt_xv2 + .long grunt_xv3 + .long grunt_xv4 + .long 0 +#die_vertx + +#die_horz + .long grunt_xh1 + .long grunt_xh2 + .long grunt_xh3 + .long grunt_xh4 + .long 0 +#die_horzx + +#die_diag13 + .long grunt_xdf1 + .long grunt_xdf2 + .long grunt_xdf3 + .long grunt_xdf4 + .long 0 +#die_diag13x + +#die_diag24 + .long grunt_xdb1 + .long grunt_xdb2 + .long grunt_xdb3 + .long grunt_xdb4 + .long 0 +#die_diag24x + +#death_speed equ 3 ;death seq anim speed + +#acceleration equ 100 ;decrement motion clock every X cycles +#top_speed equ 3 ;as fast as they get +#xmotion_inc equ 0004h +#ymotion_inc equ 0004h + +#grunt_points equ 100 ;points for killing a grunt + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* POST SECTION +* + ;reg use + ; a0 - (in) # of posts to create + ; a1 - (in) type (0-8) + ; a2 - (in) color (0-F) + + SUBRP make_posts + + move a0,a9 ;move the inputs to safer spots + jrz #done + + move a1,a10 ;type + + move a2,a11 ;color + sla 8,a11 + or a2,a11 + +#another_post +#get_pos + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a2 ;hide a0 + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a2,a1 ;put it back + + addi #min_x,a0 + addi #min_y,a1 + + cmpi #mid_x1,a0 + jrle #place_post + cmpi #mid_x2,a0 + jrge #place_post + cmpi #mid_y1,a1 + jrle #place_post + cmpi #mid_y2,a1 + jrge #place_post + jruc #get_pos + +#place_post + sla 16,a0 ;X pos + sla 16,a1 ;Y pos + + ;create the post object + move a10,a14 + X32 a14 + addi #post_types,a14 + move *a14,a14,L + move *a14,a2,L ;DON'T advance + + clr a3 + movi DMACNZ,a4 + movi CLSNEUT|TYPPOST,a5 + clr a6 + clr a7 + calla BEGINOBJW + + move a10,*a8(OMISC),W ;stuff the type in the object + + move a11,*a8(OCONST),W + + movi robo_p,a0 + calla pal_getf + move a0,*a8(OPAL),W + + dsj a9,#another_post + +#done + rets + + +#min_x equ 53 ;post start outer boundaries +#max_x equ 347-17 +#min_y equ 45 +#max_y equ 231-10 + +#mid_x1 equ 200-50 ;post start inner boundaries +#mid_x2 equ 200+50 +#mid_y1 equ 138-50 +#mid_y2 equ 138+50 + + +****************************************************************************** +* +* post collision routines +* + + SUBR post_die + + movi CLSDEAD,a14 + move a14,*a8(OID),W + CREATE DEADPOST_PID,kill_post + + rets + + + ;reg use + ; a8 - * image + ; a9 - anim pointer + + SUBR kill_post + + move *a8(OMISC),a0,W + X32 a0 + addi #post_types,a0 + move *a0,a9,L + move *a8(OCTRL),a14,W + xori DMACNZ,a14 + ori DMAWNZ,a14 + move a14,*a8(OCTRL),W +#kploop + move *a9+,a0,L + jrz #kpdone + callr civanic + SLEEPK #die_speed + jruc #kploop + +#kpdone + calla DELOBJA8 + DIE + + +#die_speed equ 3 + +#post_types + .long #star ;0 + .long #crystal ;1 + .long #diamond ;2 + .long #square ;3 + .long #rectangle ;4 + .long #R2084 ;5 + .long #pcube ;6 + .long #spiral ;7 + .long #triangle ;8 + .long 0 +#post_typesx + +#star + .long star_1,star_2,star_3,0 + +#crystal + .long crystal_1,crystal_2,crystal_3,0 + +#diamond + .long diamond_1,diamond_2,diamond_3,0 + +#square + .long square_1,square_2,square_3,0 + +#rectangle + .long rectangle_1,rectangle_2,rectangle_3,0 + +#R2084 + .long R2084_1,R2084_2,R2084_3,0 + +#pcube + .long pcube_1,pcube_2,pcube_3,0 + +#spiral + .long spiral_1,spiral_2,spiral_3,0 + +#triangle + .long triangle_1,triangle_2,triangle_3,0 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* HUMAN SECTION +* + + .bss humans_saved, 16 + + ;reg use + ; a0 # of moms + ; a1 # of dads + ; a2 # of kids + + SUBRP make_humans + + ;initialize the savecount + clr a14 + move a14,@humans_saved,W + + ;first make the moms + move a0,a0 + jrz #skip_moms +#mom_loop + PUSHP a0,a1,a2 + callr #rand_position + movi ROBJ_MOM,a9 + CREATE HUMAN_PID,human + PULLP a0,a1,a2 + dsj a0,#mom_loop + +#skip_moms + + ;dads + move a1,a1 + jrz #skip_dads +#dad_loop + PUSHP a1,a2 + callr #rand_position + movi ROBJ_DAD,a9 + CREATE HUMAN_PID,human + PULLP a1,a2 + dsj a1,#dad_loop + +#skip_dads + + ;kids + move a2,a2 + jrz #skip_kids +#kid_loop + PUSHP a2 + callr #rand_position + movi ROBJ_KID,a9 + CREATE HUMAN_PID,human + PULLP a2 + dsj a2,#kid_loop + +#skip_kids + rets + + + ;reg use + ; no input + ;a10 - (ret) an X val + ;a11 - (ret) a Y val + + SUBRP #rand_position + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a0,a10 + addi #min_x,a10 + + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a11 + addi #min_y,a11 + + rets + + +****************************************************************************** +* +* human process +* + STRUCTPD + LONG #HITPOST ;UHL post we've hit + + ;reg use + ; a8 - hObject + ; a9 - (in) OID + ; a9 - (use) image table address (#mom_table, #dad_table...) + ;a10 - (in) x + ;a10 - (use) direction of motion (1-8) + ;a11 - (in) y + ;a11 - (use) frame index (0-3) + + + SUBRP human + + cmpi ROBJ_MOM,a9 + jreq #init_mom + cmpi ROBJ_DAD,a9 + jreq #init_dad + cmpi ROBJ_KID,a9 + jreq #init_kid + + LOCKUP ;bad objid + +#init_mom + movi #mom_table,a9 + jruc #make_obj + +#init_dad + movi #dad_table,a9 + jruc #make_obj + +#init_kid + movi #kid_table,a9 + jruc #make_obj + +#make_obj + ;cweate a widdle people object + move a10,a0 + sla 16,a0 + move a11,a1 + sla 16,a1 + move *a9(#walk_down),a2,L + clr a3 + movi DMAWNZ,a4 + movi CLSNEUT|TYPHUMAN,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;choose a direction of motion + movi 7,a0 + calla RNDRNG0 + inc a0 + move a0,a10 + + ;set the frame index + movi 3,a11 + callr #advance_frame + +#move_loop + SLEEPK #sleep_time + callr #rand_dirchange + callr #move_onestep + move a0,a0 + jrnz #hit_wall + callr #advance_frame + jruc #move_loop + +#hit_wall + ;sleep first because: If you move and bump into both a wall and a + ; post at the same time (could happen), and then you immediately + ; reverse direction, you'll then get flipped AGAIN when you hit + ; the post and get forwarded right through the wall. yuck. so + ; instead when you hit a wall, wait a frame and let the post + ; collisions sort themselves out, THEN change direction. + SLEEPK 1 + callr #reverse_direction + callr #advance_frame + jruc #move_loop + +#hit_post + callr post_adjust + callr #advance_frame + jruc #move_loop + +#saved + ;increment the save count + move @humans_saved,a14,W + inc a14 + move a14,@humans_saved,W + + cmpi 5,a14 + jrle #no_cap + movi 5,a14 +#no_cap + dec a14 + + PUSH a14 + sla 4,a14 + addi #score_table,a14 + move *a14,a0,W + callr score_points + PULL a14 + + X32 a14 + addi #saved_table,a14 + move *a14,a0,L + callr civanic + + SLEEP 120 + calla DELOBJA8 + jruc #done + +#killed + movi skull,a0 + callr civanic + + SLEEP 120 + calla DELOBJA8 +; jruc #done ;fall through + +#done + DIE + + +****************************************************************************** +* Human has bounced into or started inside a post. Make it better. +* Do this by reversing the direction of the human and moving it forward +* in the new direction until it's clear of the post. +* + + ;reg use + ; a0 - X overlap + ; a1 - Y overlap + + SUBRP post_adjust + PUSH a0,a1,a2,a3,a7 + + move *a13(#HITPOST),a7,L + + callr #reverse_direction + + ;calculate degree of X and Y overlap + move a10,a2 + X32 a2 + addi #walk_increments,a2 + move *a2+,a3,W ;y vel + jrn #yvel_neg + jrz #yvel_zero + +#yvel_pos + move *a7(OYPOS),a1 + move *a7(OSIZEY),a14 + add a14,a1 + move *a8(OYPOS),a14 + sub a14,a1 + jruc #do_xvel +#yvel_zero + movi 100h,a1 + jruc #do_xvel +#yvel_neg + move *a8(OYPOS),a1 + move *a8(OSIZEY),a14 + add a14,a1 + move *a7(OYPOS),a14 + sub a14,a1 +; jruc #do_xvel + +#do_xvel + move *a2,a3,W ;x vel + jrn #xvel_neg + jrz #xvel_zero + +#xvel_pos + move *a7(OXPOS),a0 + move *a7(OSIZEX),a14 + add a14,a0 + move *a8(OXPOS),a14 + sub a14,a0 + jruc #ovlap_done +#xvel_zero + movi 100h,a0 + jruc #ovlap_done +#xvel_neg + move *a8(OXPOS),a0 + move *a8(OSIZEX),a14 + add a14,a0 + move *a7(OXPOS),a14 + sub a14,a0 +; jruc #ovlap_done + +#ovlap_done + ;a0 and a1 are the X and Y overlaps, respectively. We need only + ; worry about the smallest of the two and move that many steps. Note + ; that if velocity in a given direction is zero, the overlap is + ; set to some outrageously large value so that the other direction + ; is all that counts. + cmp a1,a0 + jrle #low_set + move a1,a0 +#low_set + ;a0 is now the smallest. + move a0,a1 + move a10,a2 + X32 a2 + addi #walk_increments,a2 + move *a2+,a3,W ;y vel + mpys a3,a1 + move *a2,a3,W ;x vel + mpys a0,a3 + move a3,a0 + + ;a0 and a1 now hold X and Y adjustments, respectively. + move *a8(OXPOS),a14 + add a0,a14 + move a14,*a8(OXPOS) + move *a8(OYPOS),a14 + add a1,a14 + move a14,*a8(OYPOS) + + PULL a0,a1,a2,a3,a7 + rets + + +****************************************************************************** +* +* human movement/animation routine +* + + ;reg use + ; a0 - scratch + ; a0 (out) - walls hit (0-2) + ; a1 - scratch + ; a8 - (in) hObject + ; a9 - (in) image table address (#mom_table, #dad_table...) + ;a10 - (in) direction of motion (1-8) + ;a11 - (in) frame index (0-3) + + SUBRP #move_onestep + + ;move the object + move a10,a1 + X32 a1 + addi #walk_increments,a1 + move *a1+,a14,W + move *a8(OYPOS),a0,W + add a14,a0 + move a0,*a8(OYPOS),W + move *a1+,a14,W + move *a8(OXPOS),a0,W + add a14,a0 + move a0,*a8(OXPOS),W + + clr a1 + move *a8(OXPOS),a0,W + + cmpi #min_x,a0 + jrge #not_lowx + + ;low x + inc a1 + movi #min_x,a0 + move a0,*a8(OXPOS),W + +#not_lowx + cmpi #max_x,a0 + jrle #not_highx + + ;high x + inc a1 + movi #max_x,a0 + move a0,*a8(OXPOS),W + +#not_highx + + move *a8(OYPOS),a0,W + + cmpi #min_y,a0 + jrge #not_lowy + + ;low y + inc a1 + movi #min_y,a0 + move a0,*a8(OYPOS),W + +#not_lowy + cmpi #max_y,a0 + jrle #not_highy + + ;high y + inc a1 + movi #max_y,a0 + move a0,*a8(OYPOS),W + +#not_highy + move a1,a0 + rets + + +****************************************************************************** +* Changes direction one time in #dirchange_chance. +* + + SUBRP #rand_dirchange + + ;1 chance in #dirchange_chance of spontaneously switching direction + movi #dirchange_chance,a0 + calla RNDRNG0 + move a0,a0 + jrnz #dirchange_done + movi 7,a0 + calla RNDRNG0 + inc a0 + move a0,a10 + +#dirchange_done + rets + + +****************************************************************************** +* Reverses direction +* + + SUBRP #reverse_direction + + ;reverse direction of motion + subi 4,a10 + jrp #rd_done + addi 8,a10 +#rd_done + rets + +****************************************************************************** +* Advances the frame +* + + SUBRP #advance_frame + + ;advance the frame and set the new image + inc a11 + cmpi 4,a11 + jrne #no_wrap + ;wraparound. reset to start + clr a11 + +#no_wrap + ;calculate the next frame + move a9,a0 + move a10,a1 + sla 4,a1 ;mult by 10h + addi #motion_table,a1 + + ;a1 now points to one of the entries in #motion table + move *a1,a1,W + add a1,a0 + + ;a0 now points to an entry in #xxx_table + move a11,a1 + X32 a1 ;mult by 20h + add a1,a0 + move *a0,a0,L + + callr civanic + + rets + + +****************************************************************************** +* +* human collision routines +* + + SUBR human_saved + PUSH a1,a7 + + ;change the obj id + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi SAVEDHUMAN_PID,a1 + movi #saved,a7 + calla XFERPROC + + PULL a1,a7 + rets + + SUBR human_killed + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADHUMAN_PID,a1 + movi #killed,a7 + calla XFERPROC + + PULL a1,a7 + rets + + + SUBR human_hitpost + PUSH a1,a7 + + move a0,a1 + move *a8(OPLINK),a0,L + move a1,*a0(#HITPOST),L + move *a0(PA8),a8,L + move *a0(PA9),a9,L + move *a0(PA10),a10,L + move *a0(PA11),a11,L + movi HUMAN_PID,a1 + movi #hit_post,a7 + calla XFERPROC + + PULL a1,a7 + rets + +****************************************************************************** +* +* human configuration data +* + + +#min_x equ 53 ;human start/motion outer boundaries +#max_x equ 347-11 +#min_y equ 45 +#max_y equ 231-13 + +#sleep_time equ 7 +#x_step equ 1 +#y_step equ 1 + +#dirchange_chance equ 40 + +#walk_increments + .word 0,0 ;because direction is 1-8, not 0-7 + .word -#y_step,0 + .word -#y_step,#x_step + .word 0,#x_step + .word #y_step,#x_step + .word #y_step,0 + .word #y_step,-#x_step + .word 0,-#x_step + .word -#y_step,-#x_step +#walk_incrementsx + +#motion_table + .word 0 ;because direction is 1-8, not 0-7 + .word #walk_up + .word #walk_right + .word #walk_right + .word #walk_right + .word #walk_down + .word #walk_left + .word #walk_left + .word #walk_left +#motion_tablex + +;image table direction offsets +#walk_left equ 0000h +#walk_right equ #walk_left + (4 * 20h) +#walk_up equ #walk_right + (4 * 20h) +#walk_down equ #walk_up + (4 * 20h) + +#score_table + .word 1000,2000,3000,4000,5000 +#score_tablex + +;image tables +#mom_table + .long mom_l1 + .long mom_l2 + .long mom_l1 + .long mom_l3 + + .long mom_r1 + .long mom_r2 + .long mom_r1 + .long mom_r3 + + .long mom_u1 + .long mom_u2 + .long mom_u1 + .long mom_u3 + + .long mom_d1 + .long mom_d2 + .long mom_d1 + .long mom_d3 +#mom_tablex + +#dad_table + .long dad_l1 + .long dad_l2 + .long dad_l1 + .long dad_l3 + + .long dad_r1 + .long dad_r2 + .long dad_r1 + .long dad_r3 + + .long dad_u1 + .long dad_u2 + .long dad_u1 + .long dad_u3 + + .long dad_d1 + .long dad_d2 + .long dad_d1 + .long dad_d3 +#dad_tablex + +#kid_table + .long kid_l1 + .long kid_l2 + .long kid_l1 + .long kid_l3 + + .long kid_r1 + .long kid_r2 + .long kid_r1 + .long kid_r3 + + .long kid_u1 + .long kid_u2 + .long kid_u1 + .long kid_u3 + + .long kid_d1 + .long kid_d2 + .long kid_d1 + .long kid_d3 +#kid_tablex + +#saved_table + .long one_k + .long two_k + .long three_k + .long four_k + .long five_k +#saved_tablex + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* HULK SECTION +* + + ;reg use + ; a0 - (in) # of hulks + + SUBRP make_hulks + + move a0,a0 + jrz #done + +#another_hulk + PUSHP a0 + +#get_pos + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a0,a9 + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a10 + + addi #min_x,a9 + addi #min_y,a10 + + cmpi #mid_x1,a9 + jrle #place_hulk + cmpi #mid_x2,a9 + jrge #place_hulk + cmpi #mid_y1,a10 + jrle #place_hulk + cmpi #mid_y2,a10 + jrge #place_hulk + jruc #get_pos + +#place_hulk + ;assign a random starting position + CREATE HULK_PID,hulk + PULLP a0 + dsj a0,#another_hulk + +#done + rets + + +#min_x equ 53 ;hulk start outer boundaries +#max_x equ 347-13 +#min_y equ 45 +#max_y equ 231-16 + +#mid_x1 equ 200-50 ;hulk start inner boundaries +#mid_x2 equ 200+50 +#mid_y1 equ 138-50 +#mid_y2 equ 138+50 + + +#***************************************************************************** +* +* hulk process +* + + STRUCTPD + LONG #PD_SCRIPT ;UHL script head + WORD #PD_FRAME_NDX ;UHW frame index + + ;reg use + ; a8 - object handle + ; a9 - (in) starting x + ; a9 - (use) frame change count + ;a10 - (in) starting y + ;a11 - direction of motion (0-3) + + SUBRP hulk + + ;choose a direction of motion + movi 3,a0 + calla RNDRNG0 + move a0,a11 + + X32 a0 + addi #anim_list,a0 + move *a0,a6,L + move a6,*a13(#PD_SCRIPT),L + clr a7 + move a7,*a13(#PD_FRAME_NDX),W + + ;create the hulk object + move a9,a0 ;x pos + sla 16,a0 + move a10,a1 ;y pos + sla 16,a1 + + move a7,a14 ;img + X32 a14 + add a6,a14 + move *a14,a2,L + + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPHULK,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;set the move counter + movi #move_freq/2,a0 + calla RNDRNG0 + addi #move_freq,a0 + move a0,a9 + +#loop + SLEEPK 1 + dsj a9,#loop + callr #move_hulk + movi #move_freq,a9 + jruc #loop + + +#been_shot ;we immediately wake up here if we've been hit and moved + ; by a player bullet. + callr #do_bounds_check + jruc #loop + + DIE + + +****************************************************************************** +* +* hulk move routine +* + + ;reg use + ; a0 scratch + ; a1 scratch + ; a8 object handle + ;a11 direction of motion (0-3) + + SUBRP #move_hulk + ;move him + move a11,a14 + X32 a14 + addi #move_table,a14 + move *a14+,a0,W + move *a14,a1,W + move *a8(OXPOS),a14,W + add a0,a14 + move a14,*a8(OXPOS),W + move *a8(OYPOS),a14,W + add a1,a14 + move a14,*a8(OYPOS),W + + ; + ;note the fall-through here + ; + + ;bounds check + SUBRP #do_bounds_check + clr a1 + + clr a0 + move *a8(OXPOS),a0,W + cmpi #low_x,a0 + jrlt #too_left + cmpi #high_x,a0 + jrgt #too_right + jruc #vert_check + +#too_left + movi #low_x,a14 + move a14,*A8(OXPOS),W + ori M_HIT_LEFT,a1 + jruc #vert_check + +#too_right + movi #high_x,a14 + move a14,*A8(OXPOS),W + ori M_HIT_RIGHT,a1 +; jruc #vert_check + +#vert_check + clr a0 + move *a8(OYPOS),a0,W + cmpi #low_y,a0 + jrlt #too_high + cmpi #high_y,a0 + jrgt #too_low + jruc #done_boundcheck + +#too_high + movi #low_y,a14 + move a14,*A8(OYPOS),W + ori M_HIT_TOP,a1 + jruc #done_boundcheck + +#too_low + movi #high_y,a14 + move a14,*A8(OYPOS),W + ori M_HIT_BOTTOM,a1 + jruc #done_boundcheck + +#done_boundcheck + move a1,a1 + jrnz #change_direction + +#no_wallhit + movi #turn_prob,a0 + PUSH a1 + calla RNDRNG0 + PULL a1 + move a0,a0 + jrnz #done_moving + + ;spontaneous direction change. random for now +; jruc #change_direction ;fall through + +#change_direction + ;turn 90 degrees by randomly incrementing or decrementing direction + movi 1,a0 + PUSH a1 + calla RNDRNG0 + PULL a1 + move a0,a0 + jrz #inc_direction + dec a11 + jruc #dir_rangecheck + +#inc_direction + inc a11 + +#dir_rangecheck + cmpi -1,a11 + jrne #dir_notlow + movi 3,a11 + +#dir_notlow + cmpi 4,a11 + jrne #dir_changed + clr a11 + +#dir_changed + + ;verify that this is a good direction + cmpi 0,a11 + jreq #validate_up + cmpi 1,a11 + jreq #validate_right + cmpi 2,a11 + jreq #validate_down + cmpi 3,a11 + jreq #validate_left + +#validate_up + andi M_HIT_TOP,a1 + jrnz #change_direction + jruc #valid_dir +#validate_right + andi M_HIT_RIGHT,a1 + jrnz #change_direction + jruc #valid_dir +#validate_down + andi M_HIT_BOTTOM,a1 + jrnz #change_direction + jruc #valid_dir +#validate_left + andi M_HIT_LEFT,a1 + jrnz #change_direction + jruc #valid_dir + +#valid_dir + + move a11,a0 + X32 a0 + addi #anim_list,a0 + move *a0,a0,L + move a0,*a13(#PD_SCRIPT),L + +#done_moving + +#new_frame + move *a13(#PD_FRAME_NDX),a14,W + move *a13(#PD_SCRIPT),a6,L + inc a14 + cmpi 4,a14 + jrne #no_wrap + clr a14 +#no_wrap + move a14,*a13(#PD_FRAME_NDX),W + X32 a14 + add a6,a14 + move *a14,a0,L + callr civanic + + rets + + +****************************************************************************** +* +* hulk collision routines +* + + SUBR hulk_pushback + PUSH a1,a7,a9,a10,a11,a13 + + ;immediately move the hulk in the direction of the bullet's motion + move *a0(OXVEL),a14,L + sra 17,a14 + move *a8(OXPOS),a1,W + add a14,a1 + move a1,*a8(OXPOS),W + + move *a0(OYVEL),a14,L + sra 17,a14 + move *a8(OYPOS),a1,W + add a14,a1 + move a1,*a8(OYPOS),W + + ;wake up at the collision check + move *a8(OPLINK),a0,L + move *a0(PA9),a9,L + move *a0(PA10),a10,L + move *a0(PA11),a11,L + movi HULK_PID,a1 + movi #been_shot,a7 + calla XFERPROC + PULL a1,a7,a9,a10,a11,a13 + + rets + + +****************************************************************************** +* +* hulk configuration data +* + +#step_x equ 4 +#step_y equ 4 + +#low_x equ 53 ;hulk move boundaries +#high_x equ 347-13 +#low_y equ 45 +#high_y equ 231-16 + +#move_freq equ 8 ;frames between moves + +#turn_prob equ 30 ;chance per frame of spontaneously changing + ;direction +#move_table + .word 0,-#step_y + .word #step_x,0 + .word 0,#step_y + .word -#step_x,0 +#move_tablex + +#anim_list + .long #anim_vert + .long #anim_right + .long #anim_vert + .long #anim_left +#anim_listx + +#anim_vert + .long hulk_ud1 + .long hulk_ud2 + .long hulk_ud1 + .long hulk_ud3 +#anim_vertx + +#anim_left + .long hulk_l1 + .long hulk_l2 + .long hulk_l1 + .long hulk_l3 +#anim_leftx + +#anim_right + .long hulk_r1 + .long hulk_r2 + .long hulk_r1 + .long hulk_r3 +#anim_rightx + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* SPHEREOID SECTION +* + + ;reg use + ; a0 - (in) # of sphereoids + + SUBRP make_sphereoids + + move a0,a0 + jrz #done + +#another_sphereoid + PUSHP a0 + +#get_pos + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a0,a9 + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a10 + + addi #min_x,a9 + addi #min_y,a10 + + cmpi #mid_x1,a9 + jrle #place_sphereoid + cmpi #mid_x2,a9 + jrge #place_sphereoid + cmpi #mid_y1,a10 + jrle #place_sphereoid + cmpi #mid_y2,a10 + jrge #place_sphereoid + jruc #get_pos + +#place_sphereoid + ;assign a random starting position + CREATE SPHEREOID_PID,sphereoid + PULLP a0 + dsj a0,#another_sphereoid + +#done + rets + + +#mid_x1 equ 200-80 ;sphereoid start inner boundaries +#mid_x2 equ 200+80 +#mid_y1 equ 138-80 +#mid_y2 equ 138+80 + + +******************************************************************************* +* +* sphereoid process +* + + STRUCTPD + LONG #OXACC ;UHL x acceleration + LONG #OYACC ;UHL y acceleration + WORD #OCHILDREN ;UHW # of children left to spawn + WORD #OSTAGE ;UHW stage in life cycle + + ;reg use + ; a7 (use) event timer (related to #OSTAGE) + ; a8 (use) * object + ; a9 (in) x pos + ; a9 (use) anim counter + ;a10 (in) y pos + ;a10 (use) frame pointer + ;a11 (use) time until next vel change + + SUBRP sphereoid + + ;increment the badguy count + move @live_badguys,a14,W + inc a14 + move a14,@live_badguys,W + + ;create the sphereoid object + move a9,a0 ;x pos + sll 16,a0 + move a10,a1 ;y pos + sll 16,a1 + movi #standard_script,a10 + move *a10+,a2,L ;img + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPSPHEREOID,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;initialize anim counter + movi #anim_speed,a9 + + ;set initial velocities and accelerations + callr #set_va + + ;initialize life cycle and event timer + movi #STAGE_YOUTH,a14 + move a14,*a13(#OSTAGE),W + movi #youth_time/2,a0 + calla RNDRNG0 + addi #youth_time*3/4,a0 + move a0,a7 + +#loop + PUSHP a7 + SLEEPK 1 + PULLP a7 + dec a9 + jrnz #no_anim + + ;advance the frame + move *a10+,a0,L + jrnz #newframe + + ;reset script. depends on the stage + move *a13(#OSTAGE),a14,W + cmpi #STAGE_PARENT,a14 + jreq #set_parent_script + movi #standard_script,a10 + jruc #script_set +#set_parent_script + movi #parent_script,a10 + +#script_set + move *a10+,a0,L + +#newframe + callr civanic + + ;reset the counter + movi #anim_speed,a9 + +#no_anim + ;adjust velocities + callr #acc_add + + ;bounds check + callr #in_bounds + + ;adjust vel and acc if it's time + dec a11 + jrnz #no_va_change + callr #set_va + +#no_va_change + + ;do event? + dec a7 + jrnz #no_event + + ;event. depends on the stage in the life cycle + move *a13(#OSTAGE),a14,W + cmpi #STAGE_YOUTH,a14 + jreq #youth_event + cmpi #STAGE_PARENT,a14 + jreq #parent_event + ;default + jruc #dotage_event + +#youth_event + ;switch to middle age + movi #STAGE_PARENT,a14 + move a14,*a13(#OSTAGE),W + + ;set the number of kids to be spawned + movi #max_kids-#min_kids,a0 + calla RNDRNG0 + addi #min_kids,a0 + move a0,*a13(#OCHILDREN),W + + ;set the spawn timer + movi #spawn_time/2,a0 + calla RNDRNG0 + addi #spawn_time*3/4,a0 + move a0,a7 + jruc #no_event + +#parent_event + ;spawn a brat + PUSHP a10,a11 + move *a8(OXVAL),a10,L + move *a8(OYVAL),a11,L + CREATE ENFORCER_PID,enforcer + PULLP a10,a11 + + ;decrement the kid count + move *a13(#OCHILDREN),a14,W + dec a14 + jrz #barren + move a14,*a13(#OCHILDREN),W + movi #spawn_time/2,a0 + calla RNDRNG0 + addi #spawn_time*3/4,a0 + move a0,a7 + jruc #no_event + +#barren + ;that was the last kid. age + movi #STAGE_DOTAGE,a14 + move a14,*a13(#OSTAGE),W + movi #old_age_time,a7 + jruc #no_event + +#dotage_event + ;nothing fancy. just die. + jruc #die_peacefully + +#no_event + jruc #loop + +#been_shot + ;crud. we've been shot. score the points + movi #sphereoid_points,a0 + callr score_points + + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + + ;clear the velocity + clr a14 + move a14,*a8(OXVEL),L + move a14,*a8(OYVEL),L + + ;go through the death routine + movi #parent_script,a10,L + move *a8(OCTRL),a14,W + xori DMAWNZ,a14 + ori DMACNZ,a14 + move a14,*a8(OCTRL),W + movi #diecolor,a14 + move a14,*a8(OCONST),W + movi robo_p,a0 + calla pal_getf + move a0,*a8(OPAL),W + +#die_loop + SLEEPK #anim_speed + move *a10+,a0,L + jrz #score_msg + callr civanic + jruc #die_loop + +#score_msg + movi #score_image,a0 + move *a8(OCTRL),a1,W + xori DMACNZ,a1 + ori DMAWNZ,a1 + callr civani + movi #score_xoff,a14 + move a14,*a8(ODXOFF),W + movi #score_yoff,a14 + move a14,*a8(ODYOFF),W + SLEEP #score_time + jruc #expire + +#die_peacefully + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + +#expire + calla DELOBJA8 + + DIE + + + SUBRP #set_va + + movi #high_v*2,a0 + calla RNDRNG0 + subi #high_v,a0 + move a0,*a8(OXVEL),L + + movi #high_v*2,a0 + calla RNDRNG0 + subi #high_v,a0 + move a0,*a8(OYVEL),L + + movi #high_a*2,a0 + calla RNDRNG0 + subi #high_a,a0 + move a0,*a13(#OXACC),L + + movi #high_a*2,a0 + calla RNDRNG0 + subi #high_a,a0 + move a0,*a13(#OYACC),L + + movi #va_change_time,a0 + calla RNDRNG0 + inc a0 + move a0,a11 + + rets + + + SUBRP #acc_add + move *a13(#OXACC),a14,L + move *a8(OXVEL),a0,L + add a14,a0 + move a0,*a8(OXVEL),L + + move *a13(#OYACC),a14,L + move *a8(OYVEL),a0,L + add a14,a0 + move a0,*a8(OYVEL),L + + rets + + + SUBRP #in_bounds + + move *a8(OXPOS),a14,W + movi #min_x,a0 + cmp a0,a14 + jrlt #x_adjust + + movi #max_x,a0 + cmp a0,a14 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + clr a0 + move a0,*a8(OXVEL),L + move a0,*a13(#OXACC),L + +#y_check + move *a8(OYPOS),a14,W + movi #min_y,a0 + cmp a0,a14 + jrlt #y_adjust + + movi #max_y,a0 + cmp a0,a14 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + clr a0 + move a0,*a8(OYVEL),L + move a0,*a13(#OYACC),L + +#done_check + rets + + +****************************************************************************** +* +* sphereoid collision routines +* + + SUBR sphereoid_die + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADSPHERE_PID,a1 + movi #been_shot,a7 + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* sphereoid configuration data +* + +#anim_speed equ 3 + +#va_change_time equ 180 + +#sphereoid_points equ 1000 + +#youth_time equ 180 ;time before we have kids +#spawn_time equ 120 ;time between kids +#old_age_time equ 180 ;time between last kid and natural death + +#min_kids equ 3 ;lower limit on spawned enforcers +#max_kids equ 7 ;upper limit + +#high_v equ 00004000h +#high_a equ 00000C00h + +#min_x equ 53 ;sphereoid move bounds +#max_x equ 347-15 +#min_y equ 45 +#max_y equ 231-15 + +#score_image equ one_k ;image on being shot +#diecolor equ 0909h ;color on being shot +#score_time equ 60 ;time to display score value +#score_xoff equ -3 ;shotimage offset +#score_yoff equ -5 + +;life cycle stages +#STAGE_YOUTH equ 0000h +#STAGE_PARENT equ 0001h +#STAGE_DOTAGE equ 0002h + +#standard_script + .long circle_1 + .long circle_2 + .long circle_3 + .long circle_4 + .long circle_5 + .long 0 + +#parent_script + .long circle_1 + .long circle_2 + .long circle_3 + .long circle_4 + .long circle_5 + .long circle_6 + .long circle_7 + .long circle_8 + .long 0 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* ENFORCER SECTION +* + + .bss num_enforcers, 16 ;active enforcers + .bss picket_duty, 32 ;*img of picket enforcer + + ;reg use + ; a8 (use) *img + ; a9 (use) next move timer (move/fire phase) + ; a9 (use) frame pointer (death phase) + ; a10 (in) initial X + ; a10 (use) frame pointer (grow phase) + ; a11 (in) initial Y + ; a11 (use) next shot timer (move/fire phase) + + SUBRP enforcer + + ;increment the badguy count + move @live_badguys,a14,W + inc a14 + move a14,@live_badguys,W + move @num_enforcers,a14,W + inc a14 + move a14,@num_enforcers,W + + ;create the enforcer object + move a10,a0 + move a11,a1 + movi #grow_script,a10 + move *a10+,a2,L + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPENFORCER,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;grow phase + +#grow_loop + SLEEPK #grow_speed + move *a10+,a0,L + jrz #mf_phase + callr civanic + jruc #grow_loop + +#mf_phase + ;begin move/fire phase. set initial course + callr #new_course + movi #turn_time,a9 + movi #fire_time/2,a0 + calla RNDRNG0 + addi #fire_time*3/4,a0 + move a0,a11 + +#main_loop + SLEEPK 1 + dec a9 + jrnz #no_turn + + + ;picket phase + ;two cases: we're on picket duty, or we're not. + move @picket_duty,a14,L + cmp a14,a8 + jreq #on_picket + + ;we're not on picket duty + ;if we're the only enforcer, quit now. + move @num_enforcers,a14,W + cmpi 1,a14 + jreq #picket_done + + ;there are multiple enforcers. If there is no picket, see if we + ; take the job. If there is, quit. + move @picket_duty,a14,L + jrnz #picket_done + + ;there is no picket. + movi #picket_prob,a0 + calla RNDRNG0 + move a0,a0 + jrnz #picket_done + + ;we're going to take picket duty + move a8,@picket_duty,L + jruc #picket_done + +#on_picket + ;we are on picket duty + ;if we're the only enforcer, see if we leave picket mode. + move @num_enforcers,a14,W + cmpi 1,a14 + jrne #multiple_enforcers + + ;we're the only enforcer + movi #stand_down_prob,a0 + calla RNDRNG0 + move a0,a0 + jrnz #picket_done + + ;and we've decided to stand down. +; clr a0 ;unneccesary. it's already 0 from above. + move a0,@picket_duty,L + jruc #picket_done + +#multiple_enforcers + ;we may abandon our post + movi #abandon_post_prob,a0 + calla RNDRNG0 + move a0,a0 + jrnz #picket_done + + ;yep. we quit. +; clr a0 ;unneccesary. it's already 0 from above. + move a0,@picket_duty,L +; jruc #picket_done + +#picket_done + + ;change course + callr #new_course + movi #turn_time,a9 + +#no_turn + + dec a11 + jrnz #no_shot + + ;fire a spark + PUSHP a10 + move *a8(OXVAL),a10,L + move *a8(OYVAL),a11,L + CREATE SPARK_PID,spark + PULLP a10 + movi #fire_time/2,a0 + calla RNDRNG0 + addi #fire_time*3/4,a0 + move a0,a11 + +#no_shot + + ;bounds check + callr #in_bounds + + jruc #main_loop + +#die + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + move @num_enforcers,a14,W + dec a14 + move a14,@num_enforcers,W + + ;zero our velocity + clr a14 + move a14,*a8(OXVEL),L + move a14,*a8(OYVEL),L + + ;set up the animation +#dieloop + move *a9+,a0,L + jrz #dead_n_buried + callr civanic + sleepk #death_speed + jruc #dieloop + +#dead_n_buried + calla DELOBJA8 + + DIE + + + SUBRP #new_course + + ;two cases. picket or !picket + move @picket_duty,a14,L + cmp a8,a14 + jrne #nc_notpicket + +#nc_picket + ;we're on picket duty. if we're not against a wall, move toward the + ; nearest one. if we are against a wall but not in a corner, move + ; toward the nearest corner. if we're in a corner, sit tight. +; jruc #nc_done + +#nc_notpicket + ;velocity is the distance between enforcer and player / 64 / 2 + move @player_object,a0,L + move *a0(OXVAL),a14,L + move *a8(OXVAL),a1,L + sub a1,a14 + sra 7,a14 + + move a14,*a8(OXVEL),L + + move *a0(OYVAL),a14,L + move *a8(OYVAL),a1,L + sub a1,a14 + sra 7,a14 + move a14,*a8(OYVEL),L + +#nc_done + rets + + SUBRP #in_bounds + + move *a8(OXPOS),a14,W + movi #min_x,a0 + cmp a0,a14 + jrlt #x_adjust + + movi #max_x,a0 + cmp a0,a14 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + clr a0 + move a0,*a8(OXVEL),L + +#y_check + move *a8(OYPOS),a14,W + movi #min_y,a0 + cmp a0,a14 + jrlt #y_adjust + + movi #max_y,a0 + cmp a0,a14 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + clr a0 + move a0,*a8(OYVEL),L + +#done_check + rets + + +****************************************************************************** +* +* enforcer collision routines +* + + SUBR enforcer_die + ;hit by player gunfire + PUSH a1,a7 + + ;jeepers. we're dead. + movi CLSDEAD,a14 + move a14,*a8(OID),W + + move *a0(OXVEL),a14,L + jrz #vert_bullet + move *a0(OYVEL),a1,L + jrz #horz_bullet + + add a1,a14 + jrz #diag_13 + jruc #diag_24 + +#horz_bullet + movi #die_vert,a9 + jruc #death_set +#vert_bullet + movi #die_horz,a9 + jruc #death_set +#diag_13 + movi #die_diag24,a9 + jruc #death_set +#diag_24 + movi #die_diag13,a9 + jruc #death_set + +#death_set + move *a8(OPLINK),a0,L + movi DEADNFORCER_PID,a1 + movi #die,a7 + move *a0(PA10),a10,L + calla XFERPROC + + movi #enforcer_points,a0 + callr score_points + + PULL a1,a7 + rets + + +****************************************************************************** +* +* enforcer configuration data +* + +#enforcer_points equ 100 + +#picket_prob equ 4 ;one chance in X of becoming the picket if + ; there are multiple enforcers and none is + ; on the job already. + +#stand_down_prob equ 4 ;one chance in X of leaving picket duty if + ; we're the only enforcer left. + +#abandon_post_prob equ 8 ;one chance in X of leaving picket duty if + ; there are other enforcers around. + +#turn_time equ 150 +#fire_time equ 90 + +#grow_speed equ 6 + +#min_x equ 53 ;enforcer move bounds +#max_x equ 347-9 +#min_y equ 45 +#max_y equ 231-11 + +#grow_script + .long enf_g1 + .long enf_g2 + .long enf_g3 + .long enf_g4 + .long enf_g5 + .long enf_1 + .long 0 +#grow_scriptx + +#die_vert + .long enf_xv1 + .long enf_xv2 + .long enf_xv3 + .long enf_xv4 + .long enf_xv5 + .long 0 +#die_vertx + +#die_horz + .long enf_xh1 + .long enf_xh2 + .long enf_xh3 + .long enf_xh4 + .long 0 +#die_horzx + +#die_diag13 + .long enf_xf1 + .long enf_xf2 + .long enf_xf3 + .long enf_xf4 + .long 0 +#die_diag13x + +#die_diag24 + .long enf_xb1 + .long enf_xb2 + .long enf_xb3 + .long enf_xb4 + .long 0 +#die_diag24x + +#death_speed equ 3 ;death seq anim speed + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* SPARK SECTION +* + + ;reg use + ; a6 (use) x acc + ; a7 (use) y acc + ; a8 (use) *image + ; a9 (use) anim timer + ; a10 (in) initial X + ; a10 (use) anim pointer + ; a11 (in) initial Y + ; a11 (use) life timer + + SUBRP spark + + ;create a spark object + move a10,a0 + move a11,a1 + + movi #script,a10 + move *a10+,a2,L + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPSPARK,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;set the initial velocity. + move @player_object,a0,L + move *a0(OXVAL),a1,L + move *a8(OXVAL),a2,L + sub a2,a1 + sra 5,a1 + move a1,*a8(OXVEL),L + + move *a0(OYVAL),a1,L + move *a8(OYVAL),a2,L + sub a2,a1 + sra 5,a1 + move a1,*a8(OYVEL),L + + ;and then add a little 'spin' by giving them some acceleration + movi #high_acc*2,a0 + calla RNDRNG0 + subi #high_acc,a0 + move a0,a6 + movi #high_acc*2,a0 + calla RNDRNG0 + subi #high_acc,a0 + move a0,a7 + + movi #anim_time,a9 + movi #life_time,a11 + +#loop + PUSHP a6,a7 + SLEEPK 1 + PULLP a6,a7 + + ;bounds check + callr #in_bounds + + ;apply accelerations + move *a8(OXVEL),a14,L + add a6,a14 + move a14,*a8(OXVEL),L + + move *a8(OYVEL),a14,L + add a7,a14 + move a14,*a8(OYVEL),L + + dec a9 + jrnz #no_anim + + move *a10+,a0,L + jrnz #no_wrap + movi #script,a10 + move *a10+,a0,L +#no_wrap + callr civanic + movi #anim_time,a9 + +#no_anim + dec a11 + jrz #expire + jruc #loop + +#expire + calla DELOBJA8 + + DIE + + + SUBRP #in_bounds + + move *a8(OXPOS),a14,W + movi #min_x,a0 + cmp a0,a14 + jrlt #x_adjust + + movi #max_x,a0 + cmp a0,a14 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + clr a6 + move a6,*a8(OXVEL),L + +#y_check + move *a8(OYPOS),a14,W + movi #min_y,a0 + cmp a0,a14 + jrlt #y_adjust + + movi #max_y,a0 + cmp a0,a14 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + clr a7 + move a7,*a8(OYVEL),L + +#done_check + rets + + +****************************************************************************** +* +* spark collision routines +* + + SUBR spark_die + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADSPARK_PID,a1 + movi #expire,a7 + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* spark configuration data +* + +#life_time equ 180 ;how long they last +#anim_time equ 3 ;frame rate + +#high_acc equ 00000200h ;top acceleration + +#min_x equ 53 ;spark move bounds +#max_x equ 347-7 +#min_y equ 45 +#max_y equ 231-7 + +#script + .long spark_1 + .long spark_2 + .long spark_3 + .long spark_4 + .long 0 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* QUARK SECTION +* + + ;reg use + ; a0 - (in) # of quarks + + SUBRP make_quarks + + move a0,a0 + jrz #done + +#another_quark + PUSHP a0 + +#get_pos + ;assign a random starting position + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a0,a9 + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a10 + + addi #min_x,a9 + addi #min_y,a10 + + cmpi #mid_x1,a9 + jrle #place_quark + cmpi #mid_x2,a9 + jrge #place_quark + cmpi #mid_y1,a10 + jrle #place_quark + cmpi #mid_y2,a10 + jrge #place_quark + jruc #get_pos + +#place_quark + CREATE QUARK_PID,quark + PULLP a0 + dsj a0,#another_quark + +#done + rets + + +#mid_x1 equ 200-60 ;quark start inner boundaries +#mid_x2 equ 200+60 +#mid_y1 equ 138-60 +#mid_y2 equ 138+60 + + +******************************************************************************* +* +* quark process +* + + STRUCTPD + WORD #OCHILDREN ;UHW # of children left to spawn + WORD #OSTAGE ;UHW stage in life cycle + + ;reg use + ; a7 (use) event timer (related to #OSTAGE) + ; a8 (use) * object + ; a9 (in) x pos + ; a9 (use) anim counter + ;a10 (in) y pos + ;a10 (use) frame pointer + ;a11 (use) time until next vel change + + SUBRP quark + + ;increment the badguy count + move @live_badguys,a14,W + inc a14 + move a14,@live_badguys,W + + ;create the quark object + move a9,a0 ;x pos + sll 16,a0 + move a10,a1 ;y pos + sll 16,a1 + movi #standard_script,a10 + move *a10+,a2,L ;img + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPQUARK,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;initialize anim counter + movi #anim_speed,a9 + + ;set initial velocities and accelerations + callr #set_v + + ;initialize life cycle and event timer + movi #STAGE_YOUTH,a14 + move a14,*a13(#OSTAGE),W + movi #youth_time,a7 + +#loop + PUSHP a7 + SLEEPK 1 + PULLP a7 + dec a9 + jrnz #no_anim + + ;advance the frame + move *a10+,a0,L + jrnz #newframe + + ;reset script. depends on the stage + move *a13(#OSTAGE),a14,W + cmpi #STAGE_PARENT,a14 + jreq #set_parent_script + movi #standard_script,a10 + jruc #script_set +#set_parent_script + movi #parent_script,a10 + +#script_set + move *a10+,a0,L + +#newframe + callr civanic + + ;reset the counter + movi #anim_speed,a9 + +#no_anim + ;bounds check + callr #in_bounds + + ;adjust vel if it's time + dec a11 + jrnz #no_v_change + callr #set_v + +#no_v_change + + ;do event? + dec a7 + jrnz #no_event + + ;event. depends on the stage in the life cycle + move *a13(#OSTAGE),a14 + cmpi #STAGE_YOUTH,a14 + jreq #youth_event + cmpi #STAGE_PARENT,a14 + jreq #parent_event + ;default + jruc #dotage_event + +#youth_event + ;switch to middle age + movi #STAGE_PARENT,a14 + move a14,*a13(#OSTAGE),W + + ;set the number of kids to be spawned + movi #max_kids-#min_kids,a0 + calla RNDRNG0 + addi #min_kids,a0 + move a0,*a13(#OCHILDREN),W + + ;set the spawn timer + movi #spawn_time,a7 + jruc #no_event + +#parent_event + ;spawn a brat + PUSHP a10,a11 + move *a8(OXVAL),a10,L + move *a8(OYVAL),a11,L + CREATE TANK_PID,tank + PULLP a10,a11 + + ;decrement the kid count + move *a13(#OCHILDREN),a14,W + dec a14 + jrz #barren + move a14,*a13(#OCHILDREN),W + movi #spawn_time,a7 + jruc #no_event + +#barren + ;that was the last kid. age + movi #STAGE_DOTAGE,a14 + move a14,*a13(#OSTAGE),W + movi #old_age_time,a7 + jruc #no_event + +#dotage_event + ;nothing fancy. just die. + jruc #die_peacefully + +#no_event + jruc #loop + + +#been_shot + ;crud. we've been shot + +#die_peacefully + + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + + calla DELOBJA8 + + DIE + + + SUBRP #set_v + + movi #high_v,a0 + calla RNDRNG0 + cmpi #high_v/2,a0 + jrgt #positive_x + + subi #high_v,a0 + +#positive_x + move a0,*a8(OXVEL),L + + movi #high_v,a0 + calla RNDRNG0 + cmpi #high_v/2,a0 + jrgt #positive_y + + subi #high_v,a0 + +#positive_y + move a0,*a8(OYVEL),L + + movi #v_change_time/2,a0 + calla RNDRNG0 + addi #v_change_time/2,a0 + move a0,a11 + + rets + + + SUBRP #in_bounds + + move *a8(OXPOS),a1,W + movi #min_x,a0 + move *a8(ODXOFF),a14,W + add a14,a0 + cmp a0,a1 + jrlt #x_adjust + + move *a8(OSIZEX),a0,W + neg a0 + move *a8(ODXOFF),a14,W + add a14,a0 + addi #max_x,a0 + cmp a0,a1 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + move *a8(OXVEL),a0,L + neg a0 + move a0,*a8(OXVEL),L + +#y_check + move *a8(OYPOS),a1,W + movi #min_y,a0 + move *a8(ODYOFF),a14,W + add a14,a0 + cmp a0,a1 + jrlt #y_adjust + + move *a8(OSIZEY),a0,W + neg a0 + move *a8(ODYOFF),a14,W + add a14,a0 + addi #max_y,a0 + cmp a0,a1 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + move *a8(OYVEL),a0,L + neg a0 + move a0,*a8(OYVEL),L + +#done_check + rets + + +****************************************************************************** +* +* quark collision routines +* + + SUBR quark_die + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADQUARK_PID,a1 + movi #been_shot,a7 + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* quark configuration data +* + +#anim_speed equ 3 + +#v_change_time equ 600 ;time between random course changes + +#youth_time equ 90 ;time before we have kids +#spawn_time equ 90 ;time between kids +#old_age_time equ 120 ;time between last kid and natural death + +#min_kids equ 3 ;lower limit on spawned tanks +#max_kids equ 7 ;upper limit + +#high_v equ 0001C000h + +#min_x equ 53 ;quark move bounds +#max_x equ 347-0 +#min_y equ 45 +#max_y equ 231-0 + +;life cycle stages +#STAGE_YOUTH equ 0000h +#STAGE_PARENT equ 0001h +#STAGE_DOTAGE equ 0002h + +#standard_script + .long quark_1 + .long quark_1 + .long quark_2 + .long quark_3 + .long quark_4 + .long 0 + +#parent_script + .long quark_1 + .long quark_2 + .long quark_3 + .long quark_4 + .long quark_5 + .long quark_6 + .long quark_7 + .long quark_8 + .long 0 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* TANK SECTION +* + + STRUCTPD + WORD #OSHOTS ;UHW shots left to be fired + + ;reg use + ; a7 (use) anim timer + ; a8 (use) *img + ; a9 (use) next move timer (move/fire phase) + ; a9 (use) frame pointer (death phase) + ; a10 (in) initial X + ; a10 (use) frame pointer (grow + move/fire phases) + ; a11 (in) initial Y + ; a11 (use) next shot timer (move/fire phase) + + SUBRP tank + + ;increment the badguy count + move @live_badguys,a14,W + inc a14 + move a14,@live_badguys,W + + ;create the tank object + move a10,a0 + move a11,a1 + movi #grow_script,a10 + move *a10+,a2,L + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPTANK,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;grow phase + +#grow_loop + SLEEPK #grow_speed + move *a10+,a0,L + jrz #mf_phase + callr civanic + jruc #grow_loop + +#mf_phase + ;begin move/fire phase. set initial course + callr #set_v + movi #anim_time,a7 + movi #right_script,a10 + movi #fire_time/2,a0 + calla RNDRNG0 + addi #fire_time*3/4,a0 + move a0,a11 + movi #num_shots,a14 + move a14,*a13(#OSHOTS),W + +#main_loop + PUSHP a7 + SLEEPK 1 + PULLP a7 + dec a9 + jrnz #no_turn + + ;change course + callr #set_v + +#no_turn + + dec a11 + jrnz #no_shot + + move *a13(#OSHOTS),a14,W + jrz #no_shot + + ;fire a shell + PUSHP a7,a10,a11 + move *a8(OXVAL),a10,L + move *a8(OYVAL),a11,L + create SHELL_PID,tank_shell + PULLP a7,a10,a11 + movi #fire_time/2,a0 + calla RNDRNG0 + addi #fire_time*3/4,a0 + move a0,a11 + +#no_shot + + ;bounds check + callr #in_bounds + + ;animate? + dec a7 + jrnz #no_anim + move *a10+,a0,L + jrnz #no_wrap + movi #right_script,a10 + move *a10+,a0,L + +#no_wrap + callr civanic + movi #anim_time,a7 + +#no_anim + jruc #main_loop + +#die + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + + ;zero our velocity + clr a14 + move a14,*a8(OXVEL),L + move a14,*a8(OYVEL),L + + ;set up the animation +#dieloop + move *a9+,a0,L + jrz #dead_n_buried + callr civanic + sleepk #death_speed + jruc #dieloop + +#dead_n_buried + calla DELOBJA8 + + DIE + + + SUBRP #set_v + + movi #high_v,a0 + calla RNDRNG0 + cmpi #high_v/2,a0 + jrgt #positive_x + + subi #high_v,a0 + +#positive_x + move a0,*a8(OXVEL),L + + movi #high_v,a0 + calla RNDRNG0 + cmpi #high_v/2,a0 + jrgt #positive_y + + subi #high_v,a0 + +#positive_y + move a0,*a8(OYVEL),L + + movi #v_change_time/2,a0 + calla RNDRNG0 + addi #v_change_time/2,a0 + move a0,a9 + + rets + + + SUBRP #in_bounds + + move *a8(OXPOS),a14,W + movi #min_x,a0 + cmp a0,a14 + jrlt #x_adjust + + movi #max_x,a0 + cmp a0,a14 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + move *a8(OXVEL),a0,L + neg a0 + move a0,*a8(OXVEL),L + +#y_check + move *a8(OYPOS),a14,W + movi #min_y,a0 + cmp a0,a14 + jrlt #y_adjust + + movi #max_y,a0 + cmp a0,a14 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + move *a8(OYVEL),a0,L + neg a0 + move a0,*a8(OYVEL),L + +#done_check + rets + + +****************************************************************************** +* +* tank collision routines +* + + SUBR tank_die + ;hit by player gunfire + PUSH a1,a7 + + ;jeepers. we're dead. + movi CLSDEAD,a14 + move a14,*a8(OID),W + + move *a0(OXVEL),a14,L + jrz #vert_bullet + move *a0(OYVEL),a1,L + jrz #horz_bullet + + add a1,a14 + jrz #diag_13 + jruc #diag_24 + +#horz_bullet + movi #die_vert,a9 + jruc #death_set +#vert_bullet + movi #die_horz,a9 + jruc #death_set +#diag_13 + movi #die_diag24,a9 + jruc #death_set +#diag_24 + movi #die_diag13,a9 + jruc #death_set + +#death_set + move *a8(OPLINK),a0,L + movi DEADTANK_PID,a1 + movi #die,a7 + move *a0(PA10),a10,L + calla XFERPROC + + movi #tank_points,a0 + callr score_points + + PULL a1,a7 + rets + + +****************************************************************************** +* +* tank configuration data +* + +#tank_points equ 200 + +#num_shots equ 21 + +#v_change_time equ 250 +#fire_time equ 90 + +#high_v equ 00010000h + +#grow_speed equ 6 +#anim_time equ 2 + +#min_x equ 53 ;tank move bounds +#max_x equ 347-13 +#min_y equ 45 +#max_y equ 231-16 + +#grow_script + .long tank_g1 + .long tank_g2 + .long tank_g3 + .long tank_g4 + .long tank_1 + .long 0 + +#right_script + .long tank_1 + .long tank_2 + .long tank_3 + .long tank_4 + .long 0 + +#die_vert + .long enf_xv1 + .long enf_xv2 + .long enf_xv3 + .long enf_xv4 + .long enf_xv5 + .long 0 + +#die_horz + .long enf_xh1 + .long enf_xh2 + .long enf_xh3 + .long enf_xh4 + .long 0 + +#die_diag13 + .long enf_xf1 + .long enf_xf2 + .long enf_xf3 + .long enf_xf4 + .long 0 + +#die_diag24 + .long enf_xb1 + .long enf_xb2 + .long enf_xb3 + .long enf_xb4 + .long 0 + +#death_speed equ 3 ;death seq anim speed + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* SHELL SECTION +* + + ;reg use + ; a8 (use) *image + ; a10 (in) initial X + ; a11 (in) initial Y + ; a11 (use) life timer + + SUBRP tank_shell + + ;create a shell object + move a10,a0 + move a11,a1 + movi shell,a2 + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPSHELL,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;set the initial velocity. + move @player_object,a0,L + move *a0(OXVAL),a1,L + move *a8(OXVAL),a2,L + sub a2,a1 + sra 5,a1 + move a1,*a8(OXVEL),L + + move *a0(OYVAL),a1,L + move *a8(OYVAL),a2,L + sub a2,a1 + sra 5,a1 + move a1,*a8(OYVEL),L + + movi #life_time,a11 + +#loop + PUSHP a6,a7 + SLEEPK 1 + PULLP a6,a7 + + ;bounds check + callr #in_bounds + + dsj a11,#loop + +#expire + calla DELOBJA8 + + DIE + + + SUBRP #in_bounds + + move *a8(OXPOS),a14,W + movi #min_x,a0 + cmp a0,a14 + jrlt #x_adjust + + movi #max_x,a0 + cmp a0,a14 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + move *a8(OXVEL),a0,L + neg a0 + move a0,*a8(OXVEL),L + +#y_check + move *a8(OYPOS),a14 + movi #min_y,a0 + cmp a0,a14 + jrlt #y_adjust + + movi #max_y,a0 + cmp a0,a14 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + move *a8(OYVEL),a0,L + neg a0 + move a0,*a8(OYVEL),L + +#done_check + rets + + +****************************************************************************** +* +* shell collision routines +* + + SUBR shell_die + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADSHELL_PID,a1 + movi #expire,a7 + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* shell configuration data +* + +#life_time equ 240 ;how long they last + +#min_x equ 53 ;shell move bounds +#max_x equ 347-7 +#min_y equ 45 +#max_y equ 231-7 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* color cycling processes +* + + SUBRP robo_pal_cycles + + ;laser flash cycle + movi [0Ah,1],a8 ;cycle color A + movi robo_p,a9 ;pal name + movi COLTAB_LFLASH,a10 ;use the LFLASH table + movk 1,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + ;rgb cycle + movi [0Bh,1],a8 ;cycle color B + movi robo_p,a9 ;pal name + movi COLTAB_RGB,a10 ;use the RGB table + movk 8,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + ;decay cycle + movi [0Ch,1],a8 ;cycle color C + movi robo_p,a9 ;pal name + movi COLTAB_DECAY,a10 ;use the DECAY table + movk 2,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + ;laser cycle + movi [0Dh,1],a8 ;cycle color D + movi robo_p,a9 ;pal name + movi COLTAB_LASER,a10 ;use the LASER table + movk 20,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + ;blue-purple-red cycle + movi [0Eh,1],a8 ;cycle color E + movi robo_p,a9 ;pal name + movi COLTAB_BLUPURRED,a10 ;use the BPR table + movk 1,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + ;red-gold cycle + movi [0Fh,1],a8 ;cycle color F + movi robo_p,a9 ;pal name + movi COLTAB_REDGOLD,a10 ;use the RED-GOLD table + movk 10,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + rets + + +COLTAB_LFLASH + .WORD 0380H,1380H,2380H,3380H,4380H,5380H,6380H,7380H,7300H + .WORD 7280H,7200H,7180H,7080H,7008H,7008H,7010H,7010H,701CH + .WORD 701CH,601CH,501CH,409CH,309CH,209CH,219CH,029CH,039CH + .WORD 139CH,239CH,339CH,539CH,739CH,7390H,7380H,6380H,4380H + .word -1 + +; .word 7C00h,7FFFh,7FFFh,03E0h,7FFFh,7FFFh,001Fh,7FFFh,7FFFh + +COLTAB_RGB + .WORD 07C00H,001FH,77A0h,741Ah + .word -1 + +; .word 7C00h,03E0h,001Fh + +COLTAB_DECAY + .WORD 001CH,001CH,011CH,021CH,031CH,039CH,239CH,2390H,2388H + .WORD 2380H,4300H,5280H,7180H,6180H,7080H,7000H,6000H,5000H + .WORD 4000H,3000H,2000H,1000H + .word -1 + +; .word 7FFFh,6F7Bh,5EF7h,4E73h,3DEFh,2D6Bh,1CE7h,0C63h,0000h + +COLTAB_LASER + .word 7C1Fh,7FFFh,7F00h + .word -1 + +COLTAB_BLUPURRED + .WORD 001CH,101CH,201CH,301CH,401CH,501CH,601CH,701CH,7010H + .WORD 7010H,7008H,7008H,7000H,7000H,7008H,7008H,7010H,7010H + .WORD 701CH,701CH,601CH,501CH,401CH,301CH,201CH,101CH +; .word 001Fh,7C1Fh,7C00h + .word -1 + +COLTAB_REDGOLD + .word 7C00h,7F00h + .word -1 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* score stuff +* + + ;reg use + ; a11 score + + SUBRP score + + ;initialize score + move @robotron_score,a11,L + callr #print_score + +#loop + SLEEPK 1 + move @robotron_score,a14,L + cmp a11,a14 + jrne #score_change + jruc #loop + +#score_change + move a14,a11 + callr #zorch_score + callr #print_score + jruc #loop + + DIE + + + SUBRP #zorch_score + movi TYPTEXT|SUBSCOR,a0 + calla obj_del1c + + rets + + + SUBRP #print_score + + movi #score_setup,a2 + calla setup_message + movi TYPTEXT|SUBSCOR,a14 + move a14,@mess_objid + move @robotron_score,a0,L + movi #max_score,a1 + calla dec_to_asc + calla copy_string + calla print_string_R + + rets + + +#score_setup + JAM_STR robotron_ascii,3,1,#score_xpos,#score_ypos,robo_p,0 + .even + +#max_score .equ 9999999 ;that's all dec_to_asc can handle + +****************************************************************************** +* adds to score +* >a0 amount to add + + SUBRP score_points + + move @robotron_score,a14,L + add a0,a14 + move a14,@robotron_score,L + rets + + +#score_ypos .equ 36 +#score_xpos .equ 130 + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* miscellaneous functions / processes +* + +****************************************************************************** +* Draws the frame +* >a0=color value +* + + SUBRP draw_frame + + + move a0,a9 + sla 8,a9 + or a0,a9 + + movi robo_p,a0 + calla pal_getf + move a0,a10 + + movi #frame_data,a11 + +#loop + move *a11+,a0,L + jrz #done + move *a11+,a1,L + movi #frame_image,a2 + movi 100,a3 ;z pos + movi DMACAL,a4 ;DMA flags + movi CLSDEAD,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + move a8,a0 + calla fg2bg + + move *a11+,a14,W + move a14,*a8(OSIZEX),W + move *a11+,a14,W + move a14,*a8(OSIZEY),W + + move a9,*a8(OCONST),W + move a10,*a8(OPAL),W + + jruc #loop +#done + rets + + +#frame_image equ man_d1 + +#frame_data + .long [53,0],[43,0] ;position X,Y + .word 294,2 ;size X,Y + + .long [53,0],[231,0] ;position X,Y + .word 294,2 ;size X,Y + + .long [50,0],[43,0] ;position X,Y + .word 3,190 ;size X,Y + + .long [347,0],[43,0] ;position X,Y + .word 3,190 ;size X,Y + + .long 0 + +#frame_datax + + +#***************************************************************************** +* Draws the wave indicator +* + + SUBRP wave_count + + ;wave text + movi [#wave_x,0],a0 ;x pos + movi [#wave_y,0],a1 ;y pos + movi wave_text,a2 ;* image + clr a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + ;ones digit +; move @robo_wave,a2,W +; addi HEXTODEC+0010h,a2 ;extra 10 cuz we count from 0 +; move *a2,a2,W +; andi 00FFh,a2 + move @robo_wave,a0,W + sra 4,a0 + inc a0 + calla BINBCD + move a0,a2 + andi 0Fh,a2 + X32 a2 + addi #wave_font,a2 + + movi [#wave_onesx,0],a0 ;x pos + movi [#wave_y,0],a1 ;y pos + move *a2,a2,L ;* image + clr a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + ;tens digit + move @robo_wave,a0,W + sra 4,a0 + inc a0 + calla BINBCD + move a0,a2 + srl 4,a2 + andi 0Fh,a2 + jrz #done + X32 a2 + addi #wave_font,a2 + movi [#wave_tensx,0],a0 ;x pos + movi [#wave_y,0],a1 ;y pos + move *a2,a2,L ;* image + clr a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + +#done + rets + +#wave_y .equ 234 +#wave_x .equ 198 +#wave_tensx .equ 184 +#wave_onesx .equ 188 + +#wave_font + .long rsmall_0 + .long rsmall_1 + .long rsmall_2 + .long rsmall_3 + .long rsmall_4 + .long rsmall_5 + .long rsmall_6 + .long rsmall_7 + .long rsmall_8 + .long rsmall_9 +#wave_fontx + +#***************************************************************************** +* Check to see if an object is completely on the playfield +* a8=OBJ +* >a0=walls hit (bit 0=top, 1=right, 2=bottom, 3=left) +* >a2=degree of overlap (in pixels) +* Trashes scratch + + SUBRP bounds_check + PUSH a1,a3 + clr a0 + clr a2 + clr a3 + + ;check for hit top + move *a8(OYPOS),a1 + move *a8(ODYOFF),a14 + sub a14,a1 + cmpi #low_y,a1 + jrgt #not_high + movi #low_y,a2 + sub a1,a2 + ori M_HIT_TOP,a0 + jruc #not_low ;assume won't be both high and low + +#not_high + ;check for hit bottom + move *a8(ODYOFF),a14 ;subtract the offset AGAIN because + sub a14,a1 ; we assume the anim point is there + move *a8(OSIZEY),a14 ; to center the object. + add a14,a1 + cmpi #high_y,a1 + jrlt #not_low + move a1,a2 + subi #high_y,a2 + ori M_HIT_BOTTOM,a0 + +#not_low + ;check for hit left + move *a8(OXPOS),a1 + move *a8(ODXOFF),a14 + sub a14,a1 + cmpi #low_x,a1 + jrgt #not_left + movi #low_x,a3 + sub a1,a3 + ori M_HIT_LEFT,a0 + jruc #done ;assume won't be both right and left + +#not_left + move *a8(ODXOFF),a14 + sub a14,a1 + move *a8(OSIZEX),a14 + add a14,a1 + cmpi #high_x,a1 + jrlt #done + move a1,a3 + subi #high_x,a3 + ori M_HIT_RIGHT,a0 + +#done + ;a2 is y overlap, a3 is x overlap. a2 should be greatest of the two. + cmp a2,a3 + jrn #retval_set + move a3,a2 +#retval_set + PULL a1,a3 + rets + + +;boundaries +#low_x equ 53 +#high_x equ 346 +#low_y equ 45 +#high_y equ 230 + +;ret values +B_HIT_TOP equ 0 +B_HIT_BOTTOM equ 2 +B_HIT_LEFT equ 3 +B_HIT_RIGHT equ 1 + +M_HIT_TOP equ 0001h +M_HIT_BOTTOM equ 0004h +M_HIT_LEFT equ 0008h +M_HIT_RIGHT equ 0002h + + +#***************************************************************************** +* Change an objects image (Doesn't check VFLIP) +* A0=*New image +* A1=New flip flags & const +* A8=*Obj +* Trashes scratch + + SUBR civanic + + move *a8(OCTRL),a1,W + + SUBR civani + + cmpi ROM,a0 + jrlo #anierr + + ;set new anim points + move *a0(IANIOFFX),*a8(ODXOFF),W + move *a0(IANIOFFY),*a8(ODYOFF),W + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + setf 5,0,0 + move *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 6,0,0 + move a1,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + +#x rets + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,2 + .endif + jruc #x + + +#***************************************************************************** +* If ever both start buttons are down, this proc sets the robo_done flag +* and dies. +* + + SUBRP watch_both_starts + +#loop + SLEEPK 4 ;no need to check EVERY frame + clr a0 + calla get_start_cur + jrz #loop + movk 1,a0 + calla get_start_cur + jrz #loop + + ;both starts are down. + movk 1,a0 + move a0,@starts_down + + DIE + +#***************************************************************************** +* Watches for wave advance/back up key combo. +* + + SUBRP wave_mover + +#loop + SLEEPK 4 + calla get_all_buttons_cur + jrz #loop + + cmpi 1,a0 + jreq #back + cmpi 2,a0 + jreq #fwd + jruc #loop + +#back + move a0,@backward + jruc #done +#fwd + move a0,@forward + +#done + DIE + + +#***************************************************************************** +* Makes bog meters +* + + SUBRP bog_o_meter + + movi robo_p,a0 + calla pal_getf + move a0,a9 + + ;create the background + movi [360,0],a0 + movi [192,0],a1 + movi man_d1,a2 + clr a3 + movi DMACAL|M_FLIPV,a4 + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJW + + move a9,*a8(OPAL) + movi 0707h,a14 + move a14,*a8(OCONST) + + movi 8,a0 + move a0,*a8(OSIZEX) + movi 128,a0 + move a0,*a8(OSIZEY) + move a8,a10 + + ;create the foreground + movi [360,0],a0 + movi [65,0],a1 + movi man_d1,a2 + movi 1,a3 + movi DMACAL,a4 + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJW + + move a9,*a8(OPAL) + movi 0808h,a14 + move a14,*a8(OCONST) + + movi 8,a0 + move a0,*a8(OSIZEX) + + movi #scale,a9 + +#loop + SLEEPK 2 + move @CPULEFT,a1 + jrnz #nobog + + ;BOG!! + nop +#nobog + mpyu a9,a1 + srl 16,a1 + move a1,*a8(OSIZEY) + cmpi 10h,a1 + jrle #red + + movi 0707h,a0 + move a0,*a10(OCONST) + jruc #loop +#red + movi 0101h,a0 + move a0,*a10(OCONST) + jruc #loop + + DIE + +#scale equ 800000h/03DCh + +#***************************************************************************** + +robotron_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,rfont_exc,0,0,0,0,0,0 ;$20 SP! " # $ % & ' + .long rfont_lparens,rfont_rparens,0,0,rfont_comma,0,rfont_period,rfont_fslash ;$28 ( ) * + , - . / + .long rfont_0,rfont_1,rfont_2,rfont_3,rfont_4,rfont_5,rfont_6,rfont_7 ;$30 0 1 2 3 4 5 6 7 + .long rfont_8,rfont_9,0,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,rfont_a,rfont_b,rfont_c,rfont_d,rfont_e,rfont_f,rfont_g ;$40 @ A B C D E F G + .long rfont_h,rfont_i,rfont_j,rfont_k,rfont_l,rfont_m,rfont_n,rfont_o ;$48 H I J K L M N O + .long rfont_p,rfont_q,rfont_r,rfont_s,rfont_t,rfont_u,rfont_v,rfont_w ;$50 P Q R S T U V W + .long rfont_x,rfont_y,rfont_z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,rfont_a,rfont_b,rfont_c,rfont_d,rfont_e,rfont_f,rfont_g ;$60 ` a b c d e f g + .long rfont_h,rfont_i,rfont_j,rfont_k,rfont_l,rfont_m,rfont_n,rfont_o ;$68 h i j k l m n o + .long rfont_p,rfont_q,rfont_r,rfont_s,rfont_t,rfont_u,rfont_v,rfont_w ;$70 p q r s t u v w + .long rfont_x,rfont_y,rfont_z,0,0,0,0,0 ;$78 x y z { | } ~ + +#***************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/ROBOIMG.ASM b/BACKUP/ROBOIMG.ASM new file mode 100644 index 0000000..471f183 --- /dev/null +++ b/BACKUP/ROBOIMG.ASM @@ -0,0 +1,11 @@ + .FILE "roboimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include roboimg.glo + + .include roboimg.tbl + \ No newline at end of file diff --git a/BACKUP/ROPEIMG.ASM b/BACKUP/ROPEIMG.ASM new file mode 100644 index 0000000..e42719c --- /dev/null +++ b/BACKUP/ROPEIMG.ASM @@ -0,0 +1,12 @@ + .FILE "ropeimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include ropeimg.glo + + .include ropeimg.tbl + + \ No newline at end of file diff --git a/BACKUP/ROPES.ASM b/BACKUP/ROPES.ASM new file mode 100644 index 0000000..aa6c502 --- /dev/null +++ b/BACKUP/ROPES.ASM @@ -0,0 +1,2275 @@ +************************************************************* +* +* Software: Jason Skiles +* Initiated: 9 March 94 +* +* COPYRIGHT (C) 1994 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "ropes.asm" + .title "rope code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "display.equ" + .include "game.equ" + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "ring.equ" + + .include "miscimg.glo" + .include "ropeimg.glo" + +****************************************************************************** +* EXTERNAL REFERENCES + + ;from MPROC.ASM + .ref XFERPROC + + ;from ROBO.ASM + .ref civanic + + ;from WRESTLE.ASM + .ref ring_mod,front_rproc,right_rproc,left_rproc + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +RANI_GOTO .equ 0 + 8000h +RANI_SETPRIORITY .equ 1 + 8000h + +SSPRING_PRI .equ 10 +DSPRING_PRI .equ 9 +SHAKE_PRI .equ 5 + +#***************************************************************************** +* +* IN: a11 = group # (0=front, 1=back, 2=left, 3=right ) +* + + STRUCTPD + + LONG ROPE_ACTION ;UHW + + LONG #RED_OBJ ;UHL top rope + LONG #RED_OBJ2 ;UHL top rope (right half) + LONG #RED_SCPTR ;UHL top rope script ptr + WORD #RED_SCCNT ;UHW top rope script counter + LONG #RED_SQPTR ;UHL top rope sequence ptr + WORD #RED_SQCNT ;UHW top rope sequence counter + WORD #RED_PRIORITY ;UHW top rope anim priority + + LONG #WHITE_OBJ ;UHL middle rope + LONG #WHITE_OBJ2 ;UHL middle rope (right half) + LONG #WHITE_SCPTR ;UHL middle rope script ptr + WORD #WHITE_SCCNT ;UHW middle rope script counter + LONG #WHITE_SQPTR ;UHL middle rope sequence ptr + WORD #WHITE_SQCNT ;UHW middle rope sequence counter + WORD #WHITE_PRIORITY ;UHW middle rope anim priority + + LONG #BLUE_OBJ ;UHL bottom rope + LONG #BLUE_OBJ2 ;UHL bottom rope (right half) + LONG #BLUE_SCPTR ;UHL bottom rope script ptr + WORD #BLUE_SCCNT ;UHW bottom rope script counter + LONG #BLUE_SQPTR ;UHL bottom rope sequence ptr + WORD #BLUE_SQCNT ;UHW bottom rope sequence counter + WORD #BLUE_PRIORITY ;UHW bottom rope anim priority + + LONG #SHAD_OBJ ;UHL rope shadow + LONG #SHAD_OBJ2 ;UHL rope shadow (right half) + LONG #SHAD_SCPTR ;UHL rope shadow script ptr + WORD #SHAD_SCCNT ;UHW rope shadow script counter + LONG #SHAD_SQPTR ;UHL rope shadow sequence ptr + WORD #SHAD_SQCNT ;UHW rope shadow sequence counter + WORD #SHAD_PRIORITY ;UHW rope shadow anim priority + +PDBLKSTART .equ #RED_OBJ +PDBLKSIZ .equ #WHITE_OBJ-#RED_OBJ + + +PD_OBJ .equ #RED_OBJ - #RED_OBJ +PD_OBJ2 .equ #RED_OBJ2 - #RED_OBJ +PD_SCPTR .equ #RED_SCPTR - #RED_OBJ +PD_SCCNT .equ #RED_SCCNT - #RED_OBJ +PD_SQPTR .equ #RED_SQPTR - #RED_OBJ +PD_SQCNT .equ #RED_SQCNT - #RED_OBJ +PD_PRIORITY .equ #RED_PRIORITY - #RED_OBJ + + + ;reg use (overall) + ; a11 = * to our entry in the #master_table + + SUBR rope + + ;position a11 at the beginning of the #master_table entry for + ; the current bank of ropes. + move a11,a10 + movi #mtable_size,a14 + mpyu a14,a11 + addi #master_table,a11 + + ;set priority and action + clr a14 + move a14,*a13(ROPE_ACTION),L + + ;initialize the shadow stuff to zero in case this is a horz rope + clr a14 + move a14,*a13(#SHAD_OBJ),L + move a14,*a13(#SHAD_OBJ2),L + + ;reg use (creation) + ; a0-a8 - create stuff + ; a9 - #???_OBJ ptr + ; a10 - pointer to initial position table entry + + ;create the ropes + move *a11(#POS_TABLE),a10,L + move a13,a9 + addi #RED_OBJ,a9 + +#create_loop + move *a10+,a2,L + jrz #first3_done + move *a10+,a4,W + ori DMAWNZ|M_3D,a4 + move *a10+,a5,W + move *a10+,a0,W + move *a10+,a1,W + move *a10+,a3,W + clr a6 + clr a7 + + ;This is ugly as sin, but it'll do for now. + addi 104,a0 + addi -258,a1 + +#no_flip + + sla 16,a0 + sla 16,a1 + + calla BEGINOBJ + + ;set the various rope PDATA + move a8,*a9(PD_OBJ),L + clr a8 + move a8,*a9(PD_OBJ2),L + move a8,*a9(PD_SCPTR),L + move a8,*a9(PD_SCCNT),W + move a8,*a9(PD_SQPTR),L + move a8,*a9(PD_SQCNT),W + move a8,*a9(PD_PRIORITY),W + addi PDBLKSIZ,a9 + jruc #create_loop + +#first3_done + ;first three objects down and we hit one zero. If there's another + ; zero after that one, then we're done. If there's another table + ; entry, then we need to make three more ropes and stick them in + ; the OBJ2 slots. These are the right-half ropes in the front and + ; back banks, and the bottom-half ropes on the sides + + move a13,a9 + addi #RED_OBJ,a9 + +#create2_loop + move *a10+,a2,L + jrz #create_done + move *a10+,a4,W + ori DMAWNZ|M_3D,a4 + move *a10+,a5,W + move *a10+,a0,W + move *a10+,a1,W + move *a10+,a3,W + clr a6 + clr a7 + + ;This is ugly as sin, but it'll do for now. + addi 104,a0 + addi -258,a1 + +#no_flip2 + + sla 16,a0 + sla 16,a1 + + calla BEGINOBJ + + ;set the various rope PDATA + move a8,*a9(PD_OBJ2),L + addi PDBLKSIZ,a9 + + jruc #create2_loop + + +#create_done + ;reg use (main loop) + ; a9 - permanent storage of rope_update() address + ;a10 - temp storage of rope_update() address + ;a11 - #master_table pointer (static) + + movi rope_update,a9 + +#main_loop + SLEEPK 1 + +#rope_update_subloop + move a13,a5 + + addi #RED_OBJ,a5 ;top rope + move a9,a10 + exgpc a10 + + addi PDBLKSIZ,a5 ;middle rope + move a9,a10 + exgpc a10 + + addi PDBLKSIZ,a5 ;bottom rope + move a9,a10 + exgpc a10 + + addi PDBLKSIZ,a5 ;rope shadow + move a9,a10 + exgpc a10 + + jruc #main_loop + + +new_command_wake + ;the only way to get here is an XFERPROC. + ;read our new orders from pdata ROPE_ACTION and carry them out. + move *a13(ROPE_ACTION),a0,L + + ;prepare the red rope pointers + move *a0+,a14,W ;priority check + move *a0+,a1,L + move *a13(#RED_PRIORITY),a2,W + cmp a14,a2 + jrgt #skip_red + move a14,*a13(#RED_PRIORITY),W + move a1,*a13(#RED_SCPTR),L + move *a1+,a2,W + move a2,*a13(#RED_SCCNT),W + move *a1+,a2,L + move a2,*a13(#RED_SQPTR),L + movi 1,a2 + move a2,*a13(#RED_SQCNT),W +#skip_red + + ;prepare the white rope pointers + move *a0+,a14,W ;priority check + move *a0+,a1,L + move *a13(#WHITE_PRIORITY),a2,W + cmp a14,a2 + jrgt #skip_white + move a14,*a13(#WHITE_PRIORITY),W + move a1,*a13(#WHITE_SCPTR),L + move *a1+,a2,W + move a2,*a13(#WHITE_SCCNT),W + move *a1+,a2,L + move a2,*a13(#WHITE_SQPTR),L + movi 1,a2 + move a2,*a13(#WHITE_SQCNT),W +#skip_white + + ;prepare the blue rope pointers + move *a0+,a14,W ;priority check + move *a0+,a1,L + move *a13(#BLUE_PRIORITY),a2,W + cmp a14,a2 + jrgt #skip_blue + move a14,*a13(#BLUE_PRIORITY),W + move a1,*a13(#BLUE_SCPTR),L + move *a1+,a2,W + move a2,*a13(#BLUE_SCCNT),W + move *a1+,a2,L + move a2,*a13(#BLUE_SQPTR),L + movi 1,a2 + move a2,*a13(#BLUE_SQCNT),W + +#skip_blue + ;prepare the rope shadow pointers + move *a13(#SHAD_OBJ),a14,L ;exist check + jrz #skip_shadow + + move *a0+,a14,W ;priority check + move *a0+,a1,L + move *a13(#SHAD_PRIORITY),a2,W + cmp a14,a2 + jrgt #skip_shadow + move a14,*a13(#SHAD_PRIORITY),W + move a1,*a13(#SHAD_SCPTR),L + move *a1+,a2,W + move a2,*a13(#SHAD_SCCNT),W + move *a1+,a2,L + move a2,*a13(#SHAD_SQPTR),L + movi 1,a2 + move a2,*a13(#SHAD_SQCNT),W + +#skip_shadow + jruc #main_loop + + +#master_table + .long #front_ptable + .long #back_ptable + .long #left_ptable + .long #right_ptable +#master_tablex + +#mtable_size .equ (#master_tablex-#master_table)/4 + +#POS_TABLE .equ 0 + + +;Initial position tables + + +#front_ptable + ;FRONT LEFT + LWWWWW ROPE_F_R,0,CLSNEUT|SUBROPE|SUBHORZ,673+1,402-2,015aah + LWWWWW ROPE_F_W,0,CLSNEUT|SUBROPE|SUBHORZ,671+1,426-2,015aah + LWWWWW ROPE_F_B,0,CLSNEUT|SUBROPE|SUBHORZ,672+1,449-2,015aah + .long 0 + + ;FRONT RIGHT + LWWWWW ROPE_F_R,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,919+349,402-2,015aah + LWWWWW ROPE_F_W,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,919+349,426-2,015aah + LWWWWW ROPE_F_B,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,922+349,449-2,015aah + .long 0,0 + + +#back_ptable + ;BACK LEFT + LWWWWW ROPE_B_R,0,CLSNEUT|SUBROPE|SUBHORZ,749+1,318-2,013cah + LWWWWW ROPE_B_W,0,CLSNEUT|SUBROPE|SUBHORZ,749+1,341-2,013cah + LWWWWW ROPE_B_B,0,CLSNEUT|SUBROPE|SUBHORZ,749+1,364-2,013cah + .long 0 + + ;BACK RIGHT + LWWWWW ROPE_B_R,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,1093+101-3,318-2,013cah + LWWWWW ROPE_B_W,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,1093+101-3,341-2,013cah + LWWWWW ROPE_B_B,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,1093+101-3,364-2,013cah + .long 0,0 + + + +#left_ptable + ;LEFT TOP + LWWWWW ROPE_S_Ra,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,323-2,013cch + LWWWWW ROPE_S_Wa,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,346-2,013cbh + LWWWWW ROPE_S_Ba,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,369-2,013cah + LWWWWW ROPSHADA,0,CLSNEUT|SUBROPE|SUBSIDE,2c7h,189h,013c8h + .long 0 + + ;LEFT BOTTOM + LWWWWW ROPE_S_Rb,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,323-2,013cch + LWWWWW ROPE_S_Wb,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,346-2,013cbh + LWWWWW ROPE_S_Bb,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,369-2,013cah + LWWWWW ROPSHADB,0,CLSNEUT|SUBROPE|SUBSIDE,2c7h,189h,013c8h + .long 0,0 + +#right_ptable + ;RIGHT TOP + LWWWWW ROPE_S_Ra,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,322-2,013cch + LWWWWW ROPE_S_Wa,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,345-2,013cbh + LWWWWW ROPE_S_Ba,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,368-2,013cah + LWWWWW ROPSHADA,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,469h+100,189h,013c8h + .long 0 + + ;RIGHT BOTTOM + LWWWWW ROPE_S_Rb,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,322-2,013cch + LWWWWW ROPE_S_Wb,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,345-2,013cbh + LWWWWW ROPE_S_Bb,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,368-2,013cah + LWWWWW ROPSHADB,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,469h+100,189h,013c8h + .long 0,0 + +#***************************************************************************** +* +* a5= ptr to section of PDATA for the current rope (use those PD_??? +* offsets defined earlier to access the data ) +* + +;NOTES: +; PD_OBJ contains the object pointer for a rope +; PD_SCPTR points to the CURRENTLY ACTIVE sequence in the script +; table. +; PD_SCCNT is the number of repetitions of a the current sequence +; to be performed. +; PD_SQPTR points to the NEXT frame in the current sequence. +; PD_SQCNT is the number of ticks to hold the current frame. +; + + + SUBRP rope_update + + ;time to move on to the next frame in our sequence? + move *a5(PD_SQCNT),a6,W + jrz #done ;not even IN a sequence. quit + + ;make sure this rope exists + move *a5(PD_OBJ),a14,L + jrnz #exist_ok + .if 0 +;FIX!!! + LOCKUP + .endif + jruc #done +#exist_ok + + dec a6 + jrz #new_sequence_frame + + ;timer hasn't run out on current frame. stuff the new counter + ; and return + move a6,*a5(PD_SQCNT),W +; jruc #done + jump a10 ;return address + +#new_sequence_frame + ;timer has run out on current frame. get a new one. + move *a5(PD_SQPTR),a6,L + move *a6,a7,W ;next time increment + jrz #end_of_sequence + jrp #next_frame + + ;it's some kind of special command + andi 0FFFFh,a7 + cmpi RANI_GOTO,a7 + jreq #sq_goto + cmpi RANI_SETPRIORITY,a7 + jreq #sq_setpri + +;RJR START +; .if DEBUG +; LOCKUP +; .endif +;RJR END + jruc #next_frame + +#sq_goto + addi 10h,a6 + move *a6+,a14,L + move a14,*a5(PD_SQPTR),L + jruc #new_sequence_frame + +#sq_setpri + move *a6(10h),*a5(PD_PRIORITY),W + addi 30h,a6 + jruc #new_sequence_frame + + ;there's another valid frame in the sequence. use it. +;RJR START + .align ;RJR +;RJR END +#next_frame + ;figure out if this is a front/back rope or a side rope. They're + ; handled differently. + move *a5(PD_OBJ),a0,L + move *a0(OID),a0,W + andi SUBHORZ,a0 + jrz #side_rope + + ;it's a front or back rope + ;for these ropes, the image is in the sequence, and it's used + ; for both halves. The one on the right is flipped. + move *a6(0),*a5(PD_SQCNT),W + addi 10h,a6 + move *a6+,a0,L + move *a5(PD_OBJ),a8,L + movi fastanic,a14 + exgpc a14 + move *a5(PD_OBJ2),a8,L + movi fastanic,a14 + exgpc a14 + move a6,*a5(PD_SQPTR),L +; jruc #done + jump a10 ;return address + +#side_rope ;it's a side rope + ;for these ropes, the 'image' in the sequence is a label where + ; we'll find the top and bottom image header pointers, in that order. + ; thus the extra indirection. + move *a6(0),*a5(PD_SQCNT),W + addi 10h,a6 + push a6 + move *a6,a6,L + move *a6+,a0,L + move *a5(PD_OBJ),a8,L + movi fastanic,a14 + exgpc a14 + move *a5(PD_OBJ2),a8,L + move *a6+,a0,L + + movi fastanic,a14 + exgpc a14 + pull a6 + addi 20h,a6 + move a6,*a5(PD_SQPTR),L +; jruc #done + jump a10 ;return address + +#end_of_sequence + ;that was the last frame in the sequence. look at the script. + move *a5(PD_SCCNT),a6,W + dec a6 + jrnz #repeat_sequence + + ;move on to the next sequence +#new_sequence + move *a5(PD_SCPTR),a6,L + addi 30h,a6 ;point at next entry + move a6,*a5(PD_SCPTR),L ;and stuff it. + move *a6,a6,W ;get the repeat count + jrz #end_of_script + jrnn #repeat_sequence + + ;it's some kind of special command + andi 0FFFFh,a6 + cmpi RANI_GOTO,a6 + jreq #sc_goto + cmpi RANI_SETPRIORITY,a6 + jreq #sc_setpri + + .if DEBUG + LOCKUP + .endif + jruc #repeat_sequence + +#sc_goto + move *a5(PD_SCPTR),a6,L + move *a6(10h),*a5(PD_SCPTR),L + jruc #new_sequence + +#sc_setpri + move *a5(PD_SCPTR),a6,L + move *a6,a14,L + move a14,*a5(PD_PRIORITY) + jruc #new_sequence + +#repeat_sequence + move a6,*a5(PD_SCCNT),W + move *a5(PD_SCPTR),a6,L + addi 10h,a6 ;skip the repeat count + move *a6,a6,L ;points now to a sequence + move a6,*a5(PD_SQPTR),L ;stuff it as the new SQPTR + jruc #new_sequence_frame ;and pretend we got there normally... + +#end_of_script + clr a0 + move a0,*a5(PD_SQCNT),W + move a0,*a5(PD_PRIORITY),W +#done +; rets + jump a10 + + +#***************************************************************************** +* +* a0 = rope process +* a1 = rope index (R_TOP,R_MIDDLE,R_BOTTOM) +* a2 = rope action (RZ_NORM,RZ_HIGH) +* + + SUBR set_rope_z + + PUSH a4 + + addi PDBLKSTART,a0 + movi PDBLKSIZ,a14 + mpyu a14,a1 + add a1,a0 + move *a0(PD_OBJ),a3,L ;top half + move *a0(PD_OBJ2),a4,L ;bottom half + + movi 015a9h,a0 + + cmpi RZ_HIGH,a2 + jreq #set_high + + move *a3(OZPOS),a0,W + +#set_high + move a0,*a4(OZPOS) + + PULL a4 + + rets + +#***************************************************************************** +* +* a0 = rope number (use defined constants from game.equ) +* a1 = type of action +* a2 = rope position(0-5) (for side bounces) +* a2 = magnitude(0-3) (for general shakes) +* a3 = Z position of wrestler (only for side springs) +* + + ;reg use + ; a0-3 input + ; a4 script pointer + ; a5 rope process pointer + + SUBR rope_command + + push a0,a1,a2,a3,a4,a7,a10 + + ;get the action script pointer + move a0,a5 + X32 a5 + movk ROPE_COMMANDS,a14 + mpyu a14,a5 + move a5,a4 + + addi #command_table,a4 + move a1,a14 + X32 a14 + add a14,a4 + move *a4,a4,L + jrz #invalid_action + + ;get the rope proc pointer + move a0,a5 + X32 a5 + addi front_rproc,a5 + move *a5,a5,L + + ;check for a side-spring + cmpi #sspring,a4 + jreq #sloop + cmpi #dspring,a4 + jreq #sloop + jruc #no_spring + + ;it's a side-spring. figure out which one to use +#sloop + move *a4+,a14,L + cmp a14,a3 + jrlt #sfound + addi 20h*6,a4 + jruc #sloop + +#sfound + move a2,a14 + X32 a14 + add a14,a4 + move *a4,a4,L + jruc #script_set + +#no_spring + ;check for a side shake + cmpi ROPE_BOUNCEUD,a1 + jrne #no_updown + + ;it's an up-down shake. + move a2,a14 + X32 a14 + add a14,a4 + move *a4,a4,L + jruc #script_set + +#no_updown +#script_set + ;start the bank of ropes doing it's thing + move a4,*a5(ROPE_ACTION),L + + move *a5(PROCID),a1,W + movi new_command_wake,a7 + move *a5(PA8),a8,L + move *a5(PA9),a9,L + move *a5(PA10),a10,L + move *a5(PA11),a11,L + move a5,a0 + calla XFERPROC +#invalid_action +#done + + pull a0,a1,a2,a3,a4,a7,a10 + + rets + +#command_table + .long #frontud_table,0,0,0,0,0 + .long #backud_table,0,0,0,0,0 + .long #sideud,side_bounceio_t,#sspring,#dspring,sspr_trans_t,dspr_trans_t + .long #sideud,side_bounceio_t,#sspring,#dspring,sspr_trans_t,dspr_trans_t + +#frontud_table + .long front_bounceud1_t + .long front_bounceud2_t + .long front_bounceud3_t + .long front_bounceud4_t + +#backud_table + .long back_bounceud1_t + .long back_bounceud2_t + .long back_bounceud3_t + .long back_bounceud4_t + +#sideud + .long side_bounceud1_t + .long side_bounceud2_t + .long side_bounceud3_t + .long side_bounceud4_t + +#LANE_WIDTH .equ (RING_BOT - RING_TOP) / 5 + +#sspring + .long ( RING_TOP + ( 1 * #LANE_WIDTH )) << 16 + .long sspr11_t,sspr12_t,sspr13_t,sspr14_t,sspr15_t,0 + .long ( RING_TOP + ( 2 * #LANE_WIDTH )) << 16 + .long sspr11_t,sspr22_t,sspr23_t,sspr24_t,sspr25_t,0 + .long ( RING_TOP + ( 3 * #LANE_WIDTH )) << 16 + .long sspr21_t,sspr32_t,sspr33_t,sspr34_t,sspr35_t,0 + .long ( RING_TOP + ( 4 * #LANE_WIDTH )) << 16 + .long sspr31_t,sspr42_t,sspr43_t,sspr44_t,sspr45_t,0 + .long 7FFFFFFFh + .long sspr41_t,sspr52_t,sspr53_t,sspr54_t,sspr55_t,0 + +#dspring + .long ( RING_TOP + ( 1 * #LANE_WIDTH )) << 16 + .long dspr11_t,dspr12_t,dspr13_t,dspr14_t,dspr15_t,dspr16_t + .long ( RING_TOP + ( 2 * #LANE_WIDTH )) << 16 + .long dspr11_t,dspr22_t,dspr23_t,dspr24_t,dspr25_t,dspr26_t + .long ( RING_TOP + ( 3 * #LANE_WIDTH )) << 16 + .long dspr21_t,dspr32_t,dspr33_t,dspr34_t,dspr35_t,dspr36_t + .long ( RING_TOP + ( 4 * #LANE_WIDTH )) << 16 + .long dspr31_t,dspr42_t,dspr43_t,dspr44_t,dspr45_t,dspr46_t + .long 7FFFFFFFh + .long dspr41_t,dspr52_t,dspr53_t,dspr54_t,dspr55_t,dspr56_t + +#*************************************** +* +* Front ropes, up and down +* + + SUBRP front_bounceud4_t ;(script table) + WL SHAKE_PRI,front_bounceud4_R + WL SHAKE_PRI,front_bounceud4_W + WL SHAKE_PRI,front_bounceud4_B + + SUBRP front_bounceud3_t ;(script table) + WL SHAKE_PRI,front_bounceud3_R + WL SHAKE_PRI,front_bounceud3_W + WL SHAKE_PRI,front_bounceud3_B + + SUBRP front_bounceud2_t ;(script table) + WL SHAKE_PRI,front_bounceud2_R + WL SHAKE_PRI,front_bounceud2_W + WL SHAKE_PRI,front_bounceud2_B + + SUBRP front_bounceud1_t ;(script table) + WL SHAKE_PRI,front_bounceud1_R + WL SHAKE_PRI,front_bounceud1_W + WL SHAKE_PRI,front_bounceud1_B + + SUBRP front_bounceud4_R ;(script) + WL 1,#f_bncud1_R + SUBRP front_bounceud3_R ;(script) + WL 1,#f_bncud2_R + SUBRP front_bounceud2_R ;(script) + WL 2,#f_bncud3 + SUBRP front_bounceud1_R ;(script) + WL 3,#f_bncud4 + .word 0 + + SUBRP front_bounceud4_W ;(script) + WL 1,#f_bncud1_W + SUBRP front_bounceud3_W ;(script) + WL 1,#f_bncud2_W + SUBRP front_bounceud2_W ;(script) + WL 2,#f_bncud3 + SUBRP front_bounceud1_W ;(script) + WL 3,#f_bncud4 + .word 0 + + SUBRP front_bounceud4_B ;(script) + WL 1,#f_bncud1_B + SUBRP front_bounceud3_B ;(script) + WL 1,#f_bncud2_B + SUBRP front_bounceud2_B ;(script) + WL 2,#f_bncud3 + SUBRP front_bounceud1_B ;(script) + WL 3,#f_bncud4 + .word 0 + +#f_bncud1_R ;(sequence) + WL 1,RPFBUP02 +#f_bncud1_B ;(sequence) + WL 1,RPFBUP03 +#f_bncud1_W ;(sequence) + WL 1,RPFBUP05 + WL 1,RPFBUP04 + WL 1,RPFBUP03 + WL 1,RPFBUP01 + WL 1,RPFBDN01 + WL 1,RPFBDN03 + WL 1,RPFBDN05 + WL 1,RPFBDN04 + WL 1,RPFBDN03 + WL 1,RPFBDN02 + WL 1,ROPE_F_R + .word 0 + +#f_bncud2_R ;sequence + WL 1,RPFBUP02 +#f_bncud2_B ;sequence + WL 1,RPFBUP03 +#f_bncud2_W ;sequence + WL 1,RPFBUP04 + WL 1,RPFBUP03 + WL 1,RPFBUP01 + WL 1,RPFBDN02 + WL 1,RPFBDN03 + WL 1,RPFBDN04 + WL 1,RPFBDN03 + WL 1,RPFBDN02 + WL 1,ROPE_F_R + .word 0 + +#f_bncud3 ;sequence + WL 1,RPFBUP02 + WL 1,RPFBUP03 + WL 1,RPFBUP02 + WL 1,ROPE_F_R + WL 1,RPFBDN02 + WL 1,RPFBDN03 + WL 1,RPFBDN02 + WL 1,ROPE_F_R + .word 0 + +#f_bncud4 ;sequence + WL 1,RPFBUP01 + WL 1,RPFBUP02 + WL 1,RPFBUP01 + WL 1,ROPE_F_R + WL 1,RPFBDN01 + WL 1,RPFBDN02 + WL 1,RPFBDN01 + WL 1,ROPE_F_R + .word 0 + + +**************************************** +* +* Back ropes, up and down +* + + SUBRP back_bounceud4_t ;(script table) + WL SHAKE_PRI,back_bounceud4_R + WL SHAKE_PRI,back_bounceud4_W + WL SHAKE_PRI,back_bounceud4_B + + SUBRP back_bounceud3_t ;(script table) + WL SHAKE_PRI,back_bounceud3_R + WL SHAKE_PRI,back_bounceud3_W + WL SHAKE_PRI,back_bounceud3_B + + SUBRP back_bounceud2_t ;(script table) + WL SHAKE_PRI,back_bounceud2_R + WL SHAKE_PRI,back_bounceud2_W + WL SHAKE_PRI,back_bounceud2_B + + SUBRP back_bounceud1_t ;(script table) + WL SHAKE_PRI,back_bounceud1_R + WL SHAKE_PRI,back_bounceud1_W + WL SHAKE_PRI,back_bounceud1_B + + SUBRP back_bounceud4_R ;(script) + WL 1,#b_bncud1_R + SUBRP back_bounceud3_R ;(script) + WL 1,#b_bncud2_R + SUBRP back_bounceud2_R ;(script) + WL 2,#b_bncud3_R + SUBRP back_bounceud1_R ;(script) + WL 3,#b_bncud4_R + .word 0 + + SUBRP back_bounceud4_W ;(script) + WL 1,#b_bncud1_W + SUBRP back_bounceud3_W ;(script) + WL 1,#b_bncud2_W + SUBRP back_bounceud2_W ;(script) + WL 2,#b_bncud3_W + SUBRP back_bounceud1_W ;(script) + WL 3,#b_bncud4_W + .word 0 + + SUBRP back_bounceud4_B ;(script) + WL 1,#b_bncud1_B + SUBRP back_bounceud3_B ;(script) + WL 1,#b_bncud2_B + SUBRP back_bounceud2_B ;(script) + WL 2,#b_bncud3_B + SUBRP back_bounceud1_B ;(script) + WL 3,#b_bncud4_B + .word 0 + + +#b_bncud1_B ;(sequence) + WL 1,RPBBUP02 +#b_bncud1_R ;(sequence) + WL 1,RPBBUP03 +#b_bncud1_W ;(sequence) + WL 1,RPBBUP05 + WL 1,RPBBUP04 + WL 1,RPBBUP03 + WL 1,RPBBUP01 + WL 1,RPBBDN01 + WL 1,RPBBDN03 + WL 1,RPBBDN05 + WL 1,RPBBDN04 + WL 1,RPBBDN03 + WL 1,RPBBDN02 + WL 1,ROPE_B_R + .word 0 + +#b_bncud2_B ;(sequence) + WL 1,RPBBUP02 +#b_bncud2_R ;(sequence) + WL 1,RPBBUP03 +#b_bncud2_W ;(sequence) + WL 1,RPBBUP04 + WL 1,RPBBUP03 + WL 1,RPBBUP01 + WL 1,RPBBDN02 + WL 1,RPBBDN03 + WL 1,RPBBDN04 + WL 1,RPBBDN03 + WL 1,RPBBDN02 + WL 1,ROPE_B_R + .word 0 + +#b_bncud3_R ;(sequence) +#b_bncud3_W ;(sequence) + WL 1,RPBBUP02 +#b_bncud3_B ;(sequence) + WL 1,RPBBUP03 + WL 1,RPBBUP02 + WL 1,ROPE_B_R + WL 1,RPBBDN02 + WL 1,RPBBDN03 + WL 1,RPBBDN02 + WL 1,ROPE_B_R + .word 0 + +#b_bncud4_W ;(sequence) +#b_bncud4_B ;(sequence) + WL 1,RPBBUP01 +#b_bncud4_R ;(sequence) + WL 1,RPBBUP02 + WL 1,RPBBUP01 + WL 1,ROPE_B_R + WL 1,RPBBDN01 + WL 1,RPBBDN02 + WL 1,RPBBDN01 + WL 1,ROPE_B_R + .word 0 + + +**************************************** +* +* Side ropes, up and down +* + + SUBRP side_bounceud4_t ;(script table) + WL SHAKE_PRI,side_bounceud4_R + WL SHAKE_PRI,side_bounceud4_W + WL SHAKE_PRI,side_bounceud4_B + WL SHAKE_PRI,side_bounceud_S + + SUBRP side_bounceud3_t ;(script table) + WL SHAKE_PRI,side_bounceud3_R + WL SHAKE_PRI,side_bounceud3_W + WL SHAKE_PRI,side_bounceud3_B + WL SHAKE_PRI,side_bounceud_S + + SUBRP side_bounceud2_t ;(script table) + WL SHAKE_PRI,side_bounceud2_R + WL SHAKE_PRI,side_bounceud2_W + WL SHAKE_PRI,side_bounceud2_B + WL SHAKE_PRI,side_bounceud_S + + SUBRP side_bounceud1_t ;(script table) + WL SHAKE_PRI,side_bounceud1_R + WL SHAKE_PRI,side_bounceud1_W + WL SHAKE_PRI,side_bounceud1_B + WL SHAKE_PRI,side_bounceud_S + + SUBRP side_bounceud_S ;(script) + WL 1,#s_bncud_S + .word 0 + + SUBRP side_bounceud4_R ;(script) + WL 1,#s_bncud1_R + SUBRP side_bounceud3_R ;(script) + WL 1,#s_bncud2_R + SUBRP side_bounceud2_R ;(script) + WL 2,#s_bncud3_R + SUBRP side_bounceud1_R ;(script) + WL 3,#s_bncud4_R + .word 0 + + SUBRP side_bounceud4_W ;(script) + WL 1,#s_bncud1_W + SUBRP side_bounceud3_W ;(script) + WL 1,#s_bncud2_W + SUBRP side_bounceud2_W ;(script) + WL 2,#s_bncud3_W + SUBRP side_bounceud1_W ;(script) + WL 3,#s_bncud4_W + .word 0 + + SUBRP side_bounceud4_B ;(script) + WL 1,#s_bncud1_B + SUBRP side_bounceud3_B ;(script) + WL 1,#s_bncud2_B + SUBRP side_bounceud2_B ;(script) + WL 2,#s_bncud3_B + SUBRP side_bounceud1_B ;(script) + WL 3,#s_bncud4_B + .word 0 + +#s_bncud1_B ;(sequence) + WL 1,RPSBUP02 +#s_bncud1_W ;(sequence) + WL 1,RPSBUP03 +#s_bncud1_R ;(sequence) + WL 1,RPSBUP05 + WL 1,RPSBUP04 + WL 1,RPSBUP03 + WL 1,RPSBUP01 + WL 1,RPSBDN01 + WL 1,RPSBDN03 + WL 1,RPSBDN05 + WL 1,RPSBDN04 + WL 1,RPSBDN03 + WL 1,RPSBDN02 + WL 1,ROPE_S_R + .word 0 + +#s_bncud2_B ;(sequence) + WL 1,RPSBUP02 +#s_bncud2_W ;(sequence) + WL 1,RPSBUP03 +#s_bncud2_R ;(sequence) + WL 1,RPSBUP04 + WL 1,RPSBUP03 + WL 1,RPSBUP01 + WL 1,RPSBDN02 + WL 1,RPSBDN03 + WL 1,RPSBDN04 + WL 1,RPSBDN03 + WL 1,RPSBDN02 + WL 1,ROPE_S_R + .word 0 + +#s_bncud3_R ;(sequence) +#s_bncud3_W ;(sequence) + WL 1,RPSBUP02 +#s_bncud3_B ;(sequence) + WL 1,RPSBUP03 + WL 1,RPSBUP02 + WL 1,ROPE_S_R + WL 1,RPSBDN02 + WL 1,RPSBDN03 + WL 1,RPSBDN02 + WL 1,ROPE_S_R + .word 0 + +#s_bncud4_R ;(sequence) +#s_bncud4_B ;(sequence) + WL 1,RPSBUP01 +#s_bncud4_W ;(sequence) + WL 1,RPSBUP02 + WL 1,RPSBUP01 + WL 1,ROPE_S_R + WL 1,RPSBDN01 + WL 1,RPSBDN02 + WL 1,RPSBDN01 + WL 1,ROPE_S_R + .word 0 + +#s_bncud_S ;(sequence) + WL 1,ROPSHAD + .word 0 + + +**************************************** +* +* Side ropes, in and out +* + + SUBRP side_bounceio_t ;(script table) + WL SHAKE_PRI,side_bounceio_R + WL SHAKE_PRI,side_bounceio_W + WL SHAKE_PRI,side_bounceio_B + WL SHAKE_PRI,side_bounceio_S + + SUBRP side_bounceio_S ;(script) + WL 1,#s_bncio_S + .word 0 + + SUBRP side_bounceio_R ;(script) + WL 1,#s_bncio1_R + SUBRP side_bounceio2_R ;(script) + WL RANI_SETPRIORITY,SHAKE_PRI-1 + WL 1,#s_bncio2_R + WL 1,#s_bncio3 + WL 2,#s_bncio4 + .word 0 + + SUBRP side_bounceio_W ;(script) + WL 1,#s_bncio1_W + SUBRP side_bounceio2_W ;(script) + WL 1,#s_bncio2_W + WL 1,#s_bncio3 + WL 2,#s_bncio4 + .word 0 + + SUBRP side_bounceio_B ;(script) + WL 1,#s_bncio1_B + WL 1,#s_bncio2_B + WL 1,#s_bncio3 + WL 2,#s_bncio4 + .word 0 + + +#s_bncio1_R ;(sequence) + WL 1,RPSBIN02 +#s_bncio1_B ;(sequence) + WL 1,RPSBIN03 +#s_bncio1_W ;(sequence) + WL 1,RPSBIN05 + WL 1,RPSBIN04 + WL 1,RPSBIN03 + WL 1,RPSBIN01 + WL 1,RPSBOU01 + WL 1,RPSBOU03 + WL 1,RPSBOU05 + WL 1,RPSBOU04 + WL 1,RPSBOU03 + WL 1,RPSBOU02 + WL 1,ROPE_S_R + .word 0 + +#s_bncio2_R ;(sequence) + WL 1,RPSBIN02 +#s_bncio2_B ;(sequence) + WL 1,RPSBIN03 +#s_bncio2_W ;(sequence) + WL 1,RPSBIN04 + WL 1,RPSBIN03 + WL 1,RPSBIN01 + WL 1,RPSBOU02 + WL 1,RPSBOU03 + WL 1,RPSBOU04 + WL 1,RPSBOU03 + WL 1,RPSBOU02 + WL 1,ROPE_S_R + .word 0 + +#s_bncio3 ;(sequence) + WL 1,RPSBIN02 + WL 1,RPSBIN03 + WL 1,RPSBIN02 + WL 1,ROPE_S_R + WL 1,RPSBOU02 + WL 1,RPSBOU03 + WL 1,RPSBOU02 + WL 1,ROPE_S_R + .word 0 + +#s_bncio4 ;(sequence) + WL 1,RPSBIN01 + WL 1,RPSBIN02 + WL 1,RPSBIN01 + WL 1,ROPE_S_R + WL 1,RPSBOU01 + WL 1,RPSBOU02 + WL 1,RPSBOU01 + WL 1,ROPE_S_R + .word 0 + +#s_bncio_S ;(sequence) + WL 1,ROPSHAD + .word 0 + +**************************************** +* +* Side ropes, spring sideways +* + +sspr11_t ;(script table) + WLWL SSPRING_PRI,#sspr11,SSPRING_PRI,#ssprXX + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad11 +sspr12_t ;(script table) + WLWL SSPRING_PRI,#sspr12,SSPRING_PRI,#sspr11 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad12 +sspr13_t ;(script table) + WLWL SSPRING_PRI,#sspr13,SSPRING_PRI,#sspr12 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad13 +sspr14_t ;(script table) + WLWL SSPRING_PRI,#sspr14,SSPRING_PRI,#sspr12 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad13 +sspr15_t ;(script table) + WLWL SSPRING_PRI,#sspr15,SSPRING_PRI,#sspr11 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad12 + +sspr21_t ;(script table) + WLWL SSPRING_PRI,#sspr21,SSPRING_PRI,#ssprXX + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad21 +sspr22_t ;(script table) + WLWL SSPRING_PRI,#sspr22,SSPRING_PRI,#sspr21 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad22 +sspr23_t ;(script table) + WLWL SSPRING_PRI,#sspr23,SSPRING_PRI,#sspr22 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad23 +sspr24_t ;(script table) + WLWL SSPRING_PRI,#sspr24,SSPRING_PRI,#sspr22 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad23 +sspr25_t ;(script table) + WLWL SSPRING_PRI,#sspr25,SSPRING_PRI,#sspr21 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad22 + +sspr31_t ;(script table) + WLWL SSPRING_PRI,#sspr31,SSPRING_PRI,#ssprXX + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad31 +sspr32_t ;(script table) + WLWL SSPRING_PRI,#sspr32,SSPRING_PRI,#sspr31 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad32 +sspr33_t ;(script table) + WLWL SSPRING_PRI,#sspr33,SSPRING_PRI,#sspr32 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad33 +sspr34_t ;(script table) + WLWL SSPRING_PRI,#sspr34,SSPRING_PRI,#sspr32 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad33 +sspr35_t ;(script table) + WLWL SSPRING_PRI,#sspr35,SSPRING_PRI,#sspr31 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad32 + +sspr41_t ;(script table) + WLWL SSPRING_PRI,#sspr41,SSPRING_PRI,#ssprXX + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad41 +sspr42_t ;(script table) + WLWL SSPRING_PRI,#sspr42,SSPRING_PRI,#sspr41 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad42 +sspr43_t ;(script table) + WLWL SSPRING_PRI,#sspr43,SSPRING_PRI,#sspr42 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad43 +sspr44_t ;(script table) + WLWL SSPRING_PRI,#sspr44,SSPRING_PRI,#sspr42 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad43 +sspr45_t ;(script table) + WLWL SSPRING_PRI,#sspr45,SSPRING_PRI,#sspr41 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad42 + +sspr51_t ;(script table) + WLWL SSPRING_PRI,#sspr51,SSPRING_PRI,#ssprXX + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad51 +sspr52_t ;(script table) + WLWL SSPRING_PRI,#sspr52,SSPRING_PRI,#sspr51 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad52 +sspr53_t ;(script table) + WLWL SSPRING_PRI,#sspr53,SSPRING_PRI,#sspr52 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad53 +sspr54_t ;(script table) + WLWL SSPRING_PRI,#sspr54,SSPRING_PRI,#sspr52 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad53 +sspr55_t ;(script table) + WLWL SSPRING_PRI,#sspr55,SSPRING_PRI,#sspr51 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad52 + +sspr_trans_t ;(script table) + WL SSPRING_PRI,#sspr_trans_R + WL SSPRING_PRI,#sspr_trans_W + WL SSPRING_PRI,#sspr_trans_B + WL SSPRING_PRI,#sprshad_trans + +#ssprXX ;(script) + WL 1,#s_stop + .word 0 +#sspr11 ;(script) + WL 1,#s_sspr11 + .word 0 +#sspr12 ;(script) + WL 1,#s_sspr12 + .word 0 +#sspr13 ;(script) + WL 1,#s_sspr13 + .word 0 +#sspr14 ;(script) + WL 1,#s_sspr14 + .word 0 +#sspr15 ;(script) + WL 1,#s_sspr15 + .word 0 +#sspr16 ;(script) + WL 1,#s_sspr16 + .word 0 +#sspr21 ;(script) + WL 1,#s_sspr21 + .word 0 +#sspr22 ;(script) + WL 1,#s_sspr22 + .word 0 +#sspr23 ;(script) + WL 1,#s_sspr23 + .word 0 +#sspr24 ;(script) + WL 1,#s_sspr24 + .word 0 +#sspr25 ;(script) + WL 1,#s_sspr25 + .word 0 +#sspr26 ;(script) + WL 1,#s_sspr26 + .word 0 +#sspr31 ;(script) + WL 1,#s_sspr31 + .word 0 +#sspr32 ;(script) + WL 1,#s_sspr32 + .word 0 +#sspr33 ;(script) + WL 1,#s_sspr33 + .word 0 +#sspr34 ;(script) + WL 1,#s_sspr34 + .word 0 +#sspr35 ;(script) + WL 1,#s_sspr35 + .word 0 +#sspr36 ;(script) + WL 1,#s_sspr36 + .word 0 +#sspr41 ;(script) + WL 1,#s_sspr41 + .word 0 +#sspr42 ;(script) + WL 1,#s_sspr42 + .word 0 +#sspr43 ;(script) + WL 1,#s_sspr43 + .word 0 +#sspr44 ;(script) + WL 1,#s_sspr44 + .word 0 +#sspr45 ;(script) + WL 1,#s_sspr45 + .word 0 +#sspr46 ;(script) + WL 1,#s_sspr46 + .word 0 +#sspr51 ;(script) + WL 1,#s_sspr51 + .word 0 +#sspr52 ;(script) + WL 1,#s_sspr52 + .word 0 +#sspr53 ;(script) + WL 1,#s_sspr53 + .word 0 +#sspr54 ;(script) + WL 1,#s_sspr54 + .word 0 +#sspr55 ;(script) + WL 1,#s_sspr55 + .word 0 +#sspr56 ;(script) + WL 1,#s_sspr56 + .word 0 + +#sprshad11 ;(script) + WL 1,#s_sprshad11 + .word 0 +#sprshad12 ;(script) + WL 1,#s_sprshad12 + .word 0 +#sprshad13 ;(script) + WL 1,#s_sprshad13 + .word 0 +#sprshad14 ;(script) + WL 1,#s_sprshad14 + .word 0 +#sprshad15 ;(script) + WL 1,#s_sprshad15 + .word 0 +#sprshad21 ;(script) + WL 1,#s_sprshad21 + .word 0 +#sprshad22 ;(script) + WL 1,#s_sprshad22 + .word 0 +#sprshad23 ;(script) + WL 1,#s_sprshad23 + .word 0 +#sprshad24 ;(script) + WL 1,#s_sprshad24 + .word 0 +#sprshad25 ;(script) + WL 1,#s_sprshad25 + .word 0 +#sprshad31 ;(script) + WL 1,#s_sprshad31 + .word 0 +#sprshad32 ;(script) + WL 1,#s_sprshad32 + .word 0 +#sprshad33 ;(script) + WL 1,#s_sprshad33 + .word 0 +#sprshad34 ;(script) + WL 1,#s_sprshad34 + .word 0 +#sprshad35 ;(script) + WL 1,#s_sprshad35 + .word 0 +#sprshad41 ;(script) + WL 1,#s_sprshad41 + .word 0 +#sprshad42 ;(script) + WL 1,#s_sprshad42 + .word 0 +#sprshad43 ;(script) + WL 1,#s_sprshad43 + .word 0 +#sprshad44 ;(script) + WL 1,#s_sprshad44 + .word 0 +#sprshad45 ;(script) + WL 1,#s_sprshad45 + .word 0 +#sprshad51 ;(script) + WL 1,#s_sprshad51 + .word 0 +#sprshad52 ;(script) + WL 1,#s_sprshad52 + .word 0 +#sprshad53 ;(script) + WL 1,#s_sprshad53 + .word 0 +#sprshad54 ;(script) + WL 1,#s_sprshad54 + .word 0 +#sprshad55 ;(script) + WL 1,#s_sprshad55 + .word 0 + +#sspr_trans_R ;(script) + WL 1,#s_sspr_trans_R + WL RANI_GOTO,side_bounceio2_R + +#sspr_trans_W ;(script) + WL 1,#s_sspr_trans_W + WL RANI_GOTO,side_bounceio2_W + +#sspr_trans_B ;(script) + WL 2,#s_bncio4 + .word 0 + +#sprshad_trans ;(script) + WL 1,#s_sprshad_trans + WL 1,#s_stop_shadow + .word 0 + +#s_sspr11 ;(sequence) + WL 10,RPSS1_01 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr12 ;(sequence) + WL 10,RPSS1_02 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr13 ;(sequence) + WL 10,RPSS1_03 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr14 ;(sequence) + WL 10,RPSS1_04 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr15 ;(sequence) + WL 10,RPSS1_05 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr16 ;(sequence) + WL 10,RPSS1_06 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr21 ;(sequence) + WL 10,RPSS2_01 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr22 ;(sequence) + WL 10,RPSS2_02 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr23 ;(sequence) + WL 10,RPSS2_03 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr24 ;(sequence) + WL 10,RPSS2_04 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr25 ;(sequence) + WL 10,RPSS2_05 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr26 ;(sequence) + WL 10,RPSS2_06 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr31 ;(sequence) + WL 10,RPSS3_01 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr32 ;(sequence) + WL 10,RPSS3_02 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr33 ;(sequence) + WL 10,RPSS3_03 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr34 ;(sequence) + WL 10,RPSS3_04 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr35 ;(sequence) + WL 10,RPSS3_05 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr36 ;(sequence) + WL 10,RPSS3_06 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr41 ;(sequence) + WL 10,RPSS4_01 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr42 ;(sequence) + WL 10,RPSS4_02 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr43 ;(sequence) + WL 10,RPSS4_03 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr44 ;(sequence) + WL 10,RPSS4_04 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr45 ;(sequence) + WL 10,RPSS4_05 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr46 ;(sequence) + WL 10,RPSS4_06 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr51 ;(sequence) + WL 10,RPSS5_01 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr52 ;(sequence) + WL 10,RPSS5_02 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr53 ;(sequence) + WL 10,RPSS5_03 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr54 ;(sequence) + WL 10,RPSS5_04 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr55 ;(sequence) + WL 10,RPSS5_05 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr56 ;(sequence) + WL 10,RPSS5_06 + WL RANI_GOTO,#s_stop + .word 0 + +#s_sprshad11 ;(sequence) + WL 10,RCSH1_01 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad12 ;(sequence) + WL 10,RCSH1_02 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad13 ;(sequence) + WL 10,RCSH1_03 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad14 ;(sequence) + WL 10,RCSH1_04 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad15 ;(sequence) + WL 10,RCSH1_05 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad21 ;(sequence) + WL 10,RCSH2_01 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad22 ;(sequence) + WL 10,RCSH2_02 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad23 ;(sequence) + WL 10,RCSH2_03 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad24 ;(sequence) + WL 10,RCSH2_04 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad25 ;(sequence) + WL 10,RCSH2_05 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad31 ;(sequence) + WL 10,RCSH3_01 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad32 ;(sequence) + WL 10,RCSH3_02 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad33 ;(sequence) + WL 10,RCSH3_03 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad34 ;(sequence) + WL 10,RCSH3_04 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad35 ;(sequence) + WL 10,RCSH3_05 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad41 ;(sequence) + WL 10,RCSH4_01 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad42 ;(sequence) + WL 10,RCSH4_02 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad43 ;(sequence) + WL 10,RCSH4_03 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad44 ;(sequence) + WL 10,RCSH4_04 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad45 ;(sequence) + WL 10,RCSH4_05 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad51 ;(sequence) + WL 10,RCSH5_01 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad52 ;(sequence) + WL 10,RCSH5_02 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad53 ;(sequence) + WL 10,RCSH5_03 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad54 ;(sequence) + WL 10,RCSH5_04 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad55 ;(sequence) + WL 10,RCSH5_05 + WL RANI_GOTO,#s_stop_shadow + .word 0 + +#s_sspr_trans_R ;(sequence) + WL 1,RPSBIN06 + WL 2,RPSBIN08 + WL 1,RPSBIN07 + WL 1,RPSBIN06 + WL 1,ROPE_S_R + WL 1,RPSBOU01 + WL 1,RPSBOU03 + WL 1,RPSBOU06 +#s_sspr_trans_W ;(sequence) + WL 1,RPSBOU04 + WL 1,RPSBOU03 + WL 1,RPSBOU02 + .word 0 + +#s_sprshad_trans ;(sequence) + WL 2,RBSH_02 + WL 2,RBSH_03 + WL 2,RBSH_04 + WL 2,RBSH_05 + WL 2,RBSH_06 + WL 2,RBSH_07 + WL 2,RBSH_01 + .word 0 + +#s_stop ;(sequence) - halt a side rope entirely + WL 1,ROPE_S_R + .word 0 + +#s_stop_shadow ;(sequence) - halt a side shadow entirely + WL 1,ROPSHAD + .word 0 + +**************************************** +* +* Side ropes, spring up and down +* + +dspr11_t ;(script table) + WLWL DSPRING_PRI,#dspr15,DSPRING_PRI,#dspr11 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr12_t ;(script table) + WLWL DSPRING_PRI,#dspr16,DSPRING_PRI,#dspr12 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr13_t ;(script table) + WLWL DSPRING_PRI,#dspr17,DSPRING_PRI,#dspr13 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr14_t ;(script table) + WLWL DSPRING_PRI,#dspr17,DSPRING_PRI,#dspr14 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr15_t ;(script table) + WLWL DSPRING_PRI,#dspr16,DSPRING_PRI,#dspr15 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr16_t ;(script table) + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dspr15 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad + +dspr21_t ;(script table) + WLWL DSPRING_PRI,#dspr25,DSPRING_PRI,#dspr21 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr22_t ;(script table) + WLWL DSPRING_PRI,#dspr26,DSPRING_PRI,#dspr22 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr23_t ;(script table) + WLWL DSPRING_PRI,#dspr27,DSPRING_PRI,#dspr23 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr24_t ;(script table) + WLWL DSPRING_PRI,#dspr27,DSPRING_PRI,#dspr24 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr25_t ;(script table) + WLWL DSPRING_PRI,#dspr26,DSPRING_PRI,#dspr25 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr26_t ;(script table) + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dspr25 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad + +dspr31_t ;(script table) + WLWL DSPRING_PRI,#dspr35,DSPRING_PRI,#dspr31 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr32_t ;(script table) + WLWL DSPRING_PRI,#dspr36,DSPRING_PRI,#dspr32 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr33_t ;(script table) + WLWL DSPRING_PRI,#dspr37,DSPRING_PRI,#dspr33 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr34_t ;(script table) + WLWL DSPRING_PRI,#dspr37,DSPRING_PRI,#dspr34 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr35_t ;(script table) + WLWL DSPRING_PRI,#dspr36,DSPRING_PRI,#dspr35 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr36_t ;(script table) + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dspr35 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad + +dspr41_t ;(script table) + WLWL DSPRING_PRI,#dspr45,DSPRING_PRI,#dspr41 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr42_t ;(script table) + WLWL DSPRING_PRI,#dspr46,DSPRING_PRI,#dspr42 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr43_t ;(script table) + WLWL DSPRING_PRI,#dspr47,DSPRING_PRI,#dspr43 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr44_t ;(script table) + WLWL DSPRING_PRI,#dspr47,DSPRING_PRI,#dspr44 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr45_t ;(script table) + WLWL DSPRING_PRI,#dspr46,DSPRING_PRI,#dspr45 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr46_t ;(script table) + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dspr45 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad + +dspr51_t ;(script table) + WLWL DSPRING_PRI,#dspr55,DSPRING_PRI,#dspr51 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr52_t ;(script table) + WLWL DSPRING_PRI,#dspr56,DSPRING_PRI,#dspr52 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr53_t ;(script table) + WLWL DSPRING_PRI,#dspr57,DSPRING_PRI,#dspr53 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr54_t ;(script table) + WLWL DSPRING_PRI,#dspr57,DSPRING_PRI,#dspr54 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr55_t ;(script table) + WLWL DSPRING_PRI,#dspr56,DSPRING_PRI,#dspr55 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr56_t ;(script table) + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dspr55 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad + +dspr_trans_t ;(script table) + WL DSPRING_PRI,#dspr_trans_R + WL DSPRING_PRI,#dspr_trans_W + WL DSPRING_PRI,#dspr_trans_B + WL DSPRING_PRI,#dsprshad + +#dsprshad ;(script) + WL 1,#s_dsprshad + .word 0 + +#dsprXX ;(script) + WL 1,#s_stop + .word 0 +#dspr11 ;(script) + WL 1,#s_dspr11 + .word 0 +#dspr12 ;(script) + WL 1,#s_dspr12 + .word 0 +#dspr13 ;(script) + WL 1,#s_dspr13 + .word 0 +#dspr14 ;(script) + WL 1,#s_dspr14 + .word 0 +#dspr15 ;(script) + WL 1,#s_dspr15 + .word 0 +#dspr16 ;(script) + WL 1,#s_dspr16 + .word 0 +#dspr17 ;(script) + WL 1,#s_dspr17 + .word 0 +#dspr21 ;(script) + WL 1,#s_dspr21 + .word 0 +#dspr22 ;(script) + WL 1,#s_dspr22 + .word 0 +#dspr23 ;(script) + WL 1,#s_dspr23 + .word 0 +#dspr24 ;(script) + WL 1,#s_dspr24 + .word 0 +#dspr25 ;(script) + WL 1,#s_dspr25 + .word 0 +#dspr26 ;(script) + WL 1,#s_dspr26 + .word 0 +#dspr27 ;(script) + WL 1,#s_dspr27 + .word 0 +#dspr31 ;(script) + WL 1,#s_dspr31 + .word 0 +#dspr32 ;(script) + WL 1,#s_dspr32 + .word 0 +#dspr33 ;(script) + WL 1,#s_dspr33 + .word 0 +#dspr34 ;(script) + WL 1,#s_dspr34 + .word 0 +#dspr35 ;(script) + WL 1,#s_dspr35 + .word 0 +#dspr36 ;(script) + WL 1,#s_dspr36 + .word 0 +#dspr37 ;(script) + WL 1,#s_dspr37 + .word 0 +#dspr41 ;(script) + WL 1,#s_dspr41 + .word 0 +#dspr42 ;(script) + WL 1,#s_dspr42 + .word 0 +#dspr43 ;(script) + WL 1,#s_dspr43 + .word 0 +#dspr44 ;(script) + WL 1,#s_dspr44 + .word 0 +#dspr45 ;(script) + WL 1,#s_dspr45 + .word 0 +#dspr46 ;(script) + WL 1,#s_dspr46 + .word 0 +#dspr47 ;(script) + WL 1,#s_dspr47 + .word 0 +#dspr51 ;(script) + WL 1,#s_dspr51 + .word 0 +#dspr52 ;(script) + WL 1,#s_dspr52 + .word 0 +#dspr53 ;(script) + WL 1,#s_dspr53 + .word 0 +#dspr54 ;(script) + WL 1,#s_dspr54 + .word 0 +#dspr55 ;(script) + WL 1,#s_dspr55 + .word 0 +#dspr56 ;(script) + WL 1,#s_dspr56 + .word 0 +#dspr57 ;(script) + WL 1,#s_dspr57 + .word 0 + +#dspr_trans_R ;(script) + WL 1,#s_dspr_trans_R + WL RANI_GOTO,side_bounceud2_R + +#dspr_trans_W ;(script) + WL 1,#s_dspr_trans_W + WL RANI_GOTO,side_bounceud2_W + +#dspr_trans_B ;(script) + WL 2,#s_bncio4 + .word 0 + +#s_dsprshad ;(seqence) + WL 1,ROPSHAD + .word 0 + +#s_dspr11 ;(sequence) + WL 1,RPDS1_01 + .word 0 +#s_dspr12 ;(sequence) + WL 1,RPDS1_02 + .word 0 +#s_dspr13 ;(sequence) + WL 1,RPDS1_03 + .word 0 +#s_dspr14 ;(sequence) + WL 1,RPDS1_04 + .word 0 +#s_dspr15 ;(sequence) + WL 1,RPDS1_05 + .word 0 +#s_dspr16 ;(sequence) + WL 1,RPDS1_06 + .word 0 +#s_dspr17 ;(sequence) + WL 1,RPDS1_07 + .word 0 +#s_dspr21 ;(sequence) + WL 1,RPDS2_01 + .word 0 +#s_dspr22 ;(sequence) + WL 1,RPDS2_02 + .word 0 +#s_dspr23 ;(sequence) + WL 1,RPDS2_03 + .word 0 +#s_dspr24 ;(sequence) + WL 1,RPDS2_04 + .word 0 +#s_dspr25 ;(sequence) + WL 1,RPDS2_05 + .word 0 +#s_dspr26 ;(sequence) + WL 1,RPDS2_06 + .word 0 +#s_dspr27 ;(sequence) + WL 1,RPDS2_07 + .word 0 +#s_dspr31 ;(sequence) + WL 1,RPDS3_01 + .word 0 +#s_dspr32 ;(sequence) + WL 1,RPDS3_02 + .word 0 +#s_dspr33 ;(sequence) + WL 1,RPDS3_03 + .word 0 +#s_dspr34 ;(sequence) + WL 1,RPDS3_04 + .word 0 +#s_dspr35 ;(sequence) + WL 1,RPDS3_05 + .word 0 +#s_dspr36 ;(sequence) + WL 1,RPDS3_06 + .word 0 +#s_dspr37 ;(sequence) + WL 1,RPDS3_07 + .word 0 +#s_dspr41 ;(sequence) + WL 1,RPDS4_01 + .word 0 +#s_dspr42 ;(sequence) + WL 1,RPDS4_02 + .word 0 +#s_dspr43 ;(sequence) + WL 1,RPDS4_03 + .word 0 +#s_dspr44 ;(sequence) + WL 1,RPDS4_04 + .word 0 +#s_dspr45 ;(sequence) + WL 1,RPDS4_05 + .word 0 +#s_dspr46 ;(sequence) + WL 1,RPDS4_06 + .word 0 +#s_dspr47 ;(sequence) + WL 1,RPDS4_07 + .word 0 +#s_dspr51 ;(sequence) + WL 1,RPDS5_01 + .word 0 +#s_dspr52 ;(sequence) + WL 1,RPDS5_02 + .word 0 +#s_dspr53 ;(sequence) + WL 1,RPDS5_03 + .word 0 +#s_dspr54 ;(sequence) + WL 1,RPDS5_04 + .word 0 +#s_dspr55 ;(sequence) + WL 1,RPDS5_05 + .word 0 +#s_dspr56 ;(sequence) + WL 1,RPDS5_06 + .word 0 +#s_dspr57 ;(sequence) + WL 1,RPDS5_07 + .word 0 + +#s_dspr_trans_R ;(sequence) + WL 1,RPSBUP05 +#s_dspr_trans_W ;(sequence) + WL 1,RPSBUP02 + WL 1,RPSBDN01 + WL 1,RPSBDN03 + WL 1,RPSBDN05 + WL 1,RPSBDN04 + WL 1,RPSBDN03 + WL 1,RPSBDN02 + .word 0 + +SIDEROPE_START +ROPE_S_R .long ROPE_S_Ra,ROPE_S_Rb +ROPE_S_W .long ROPE_S_Wa,ROPE_S_Wb +ROPE_S_B .long ROPE_S_Ba,ROPE_S_Bb +RPSBUP01 .long RPSBUP01a,RPSBUP01b +RPSBUP02 .long RPSBUP02a,RPSBUP02b +RPSBUP03 .long RPSBUP03a,RPSBUP03b +RPSBUP04 .long RPSBUP04a,RPSBUP04b +RPSBUP05 .long RPSBUP05a,RPSBUP05b +RPSBUP06 .long RPSBUP06a,RPSBUP06b +RPSBDN01 .long RPSBDN01a,RPSBDN01b +RPSBDN02 .long RPSBDN02a,RPSBDN02b +RPSBDN03 .long RPSBDN03a,RPSBDN03b +RPSBDN04 .long RPSBDN04a,RPSBDN04b +RPSBDN05 .long RPSBDN05a,RPSBDN05b +RPSBDN06 .long RPSBDN06a,RPSBDN06b +RPSBIN01 .long RPSBIN01a,RPSBIN01b +RPSBIN02 .long RPSBIN02a,RPSBIN02b +RPSBIN03 .long RPSBIN03a,RPSBIN03b +RPSBIN04 .long RPSBIN04a,RPSBIN04b +RPSBIN05 .long RPSBIN05a,RPSBIN05b +RPSBIN06 .long RPSBIN06a,RPSBIN06b +RPSBIN07 .long RPSBIN07a,RPSBIN07b +RPSBIN08 .long RPSBIN08a,RPSBIN08b +RPSBOU01 .long RPSBOU01a,RPSBOU01b +RPSBOU02 .long RPSBOU02a,RPSBOU02b +RPSBOU03 .long RPSBOU03a,RPSBOU03b +RPSBOU04 .long RPSBOU04a,RPSBOU04b +RPSBOU05 .long RPSBOU05a,RPSBOU05b +RPSBOU06 .long RPSBOU06a,RPSBOU06b +RPSBOU07 .long RPSBOU07a,RPSBOU07b +RPSBOU08 .long RPSBOU08a,RPSBOU08b +RPSS1_01 .long RPSS1_01a,RPSS1_01b +RPSS1_02 .long RPSS1_02a,RPSS1_02b +RPSS1_03 .long RPSS1_03a,RPSS1_03b +RPSS1_04 .long RPSS1_04a,RPSS1_04b +RPSS1_05 .long RPSS1_05a,RPSS1_05b +RPSS1_06 .long RPSS1_06a,RPSS1_06b +RPSS2_01 .long RPSS2_01a,RPSS2_01b +RPSS2_02 .long RPSS2_02a,RPSS2_02b +RPSS2_03 .long RPSS2_03a,RPSS2_03b +RPSS2_04 .long RPSS2_04a,RPSS2_04b +RPSS2_05 .long RPSS2_05a,RPSS2_05b +RPSS2_06 .long RPSS2_06a,RPSS2_06b +RPSS3_01 .long RPSS3_01a,RPSS3_01b +RPSS3_02 .long RPSS3_02a,RPSS3_02b +RPSS3_03 .long RPSS3_03a,RPSS3_03b +RPSS3_04 .long RPSS3_04a,RPSS3_04b +RPSS3_05 .long RPSS3_05a,RPSS3_05b +RPSS3_06 .long RPSS3_06a,RPSS3_06b +RPSS4_01 .long RPSS4_01a,RPSS4_01b +RPSS4_02 .long RPSS4_02a,RPSS4_02b +RPSS4_03 .long RPSS4_03a,RPSS4_03b +RPSS4_04 .long RPSS4_04a,RPSS4_04b +RPSS4_05 .long RPSS4_05a,RPSS4_05b +RPSS4_06 .long RPSS4_06a,RPSS4_06b +RPSS5_01 .long RPSS5_01a,RPSS5_01b +RPSS5_02 .long RPSS5_02a,RPSS5_02b +RPSS5_03 .long RPSS5_03a,RPSS5_03b +RPSS5_04 .long RPSS5_04a,RPSS5_04b +RPSS5_05 .long RPSS5_05a,RPSS5_05b +RPSS5_06 .long RPSS5_06a,RPSS5_06b +RPDS1_01 .long RPDS1_01a,RPDS1_01b +RPDS1_02 .long RPDS1_02a,RPDS1_02b +RPDS1_03 .long RPDS1_03a,RPDS1_03b +RPDS1_04 .long RPDS1_04a,RPDS1_04b +RPDS1_05 .long RPDS1_05a,RPDS1_05b +RPDS1_06 .long RPDS1_06a,RPDS1_06b +RPDS1_07 .long RPDS1_07a,RPDS1_07b +RPDS1_08 .long RPDS1_08a,RPDS1_08b +RPDS2_01 .long RPDS2_01a,RPDS2_01b +RPDS2_02 .long RPDS2_02a,RPDS2_02b +RPDS2_03 .long RPDS2_03a,RPDS2_03b +RPDS2_04 .long RPDS2_04a,RPDS2_04b +RPDS2_05 .long RPDS2_05a,RPDS2_05b +RPDS2_06 .long RPDS2_06a,RPDS2_06b +RPDS2_07 .long RPDS2_07a,RPDS2_07b +RPDS2_08 .long RPDS2_08a,RPDS2_08b +RPDS3_01 .long RPDS3_01a,RPDS3_01b +RPDS3_02 .long RPDS3_02a,RPDS3_02b +RPDS3_03 .long RPDS3_03a,RPDS3_03b +RPDS3_04 .long RPDS3_04a,RPDS3_04b +RPDS3_05 .long RPDS3_05a,RPDS3_05b +RPDS3_06 .long RPDS3_06a,RPDS3_06b +RPDS3_07 .long RPDS3_07a,RPDS3_07b +RPDS3_08 .long RPDS3_08a,RPDS3_08b +RPDS4_01 .long RPDS4_01a,RPDS4_01b +RPDS4_02 .long RPDS4_02a,RPDS4_02b +RPDS4_03 .long RPDS4_03a,RPDS4_03b +RPDS4_04 .long RPDS4_04a,RPDS4_04b +RPDS4_05 .long RPDS4_05a,RPDS4_05b +RPDS4_06 .long RPDS4_06a,RPDS4_06b +RPDS4_07 .long RPDS4_07a,RPDS4_07b +RPDS4_08 .long RPDS4_08a,RPDS4_08b +RPDS5_01 .long RPDS5_01a,RPDS5_01b +RPDS5_02 .long RPDS5_02a,RPDS5_02b +RPDS5_03 .long RPDS5_03a,RPDS5_03b +RPDS5_04 .long RPDS5_04a,RPDS5_04b +RPDS5_05 .long RPDS5_05a,RPDS5_05b +RPDS5_06 .long RPDS5_06a,RPDS5_06b +RPDS5_07 .long RPDS5_07a,RPDS5_07b +RPDS5_08 .long RPDS5_08a,RPDS5_08b + +ROPSHAD .long ROPSHADA,ROPSHADB +RCSH1_01 .long RCSH1_01A,RCSH1_01B +RCSH1_02 .long RCSH1_02A,RCSH1_02B +RCSH1_03 .long RCSH1_03A,RCSH1_03B +RCSH1_04 .long RCSH1_04A,RCSH1_04B +RCSH1_05 .long RCSH1_05A,RCSH1_05B +RCSH2_01 .long RCSH2_01A,RCSH2_01B +RCSH2_02 .long RCSH2_02A,RCSH2_02B +RCSH2_03 .long RCSH2_03A,RCSH2_03B +RCSH2_04 .long RCSH2_04A,RCSH2_04B +RCSH2_05 .long RCSH2_05A,RCSH2_05B +RCSH3_01 .long RCSH3_01A,RCSH3_01B +RCSH3_02 .long RCSH3_02A,RCSH3_02B +RCSH3_03 .long RCSH3_03A,RCSH3_03B +RCSH3_04 .long RCSH3_04A,RCSH3_04B +RCSH3_05 .long RCSH3_05A,RCSH3_05B +RCSH4_01 .long RCSH4_01A,RCSH4_01B +RCSH4_02 .long RCSH4_02A,RCSH4_02B +RCSH4_03 .long RCSH4_03A,RCSH4_03B +RCSH4_04 .long RCSH4_04A,RCSH4_04B +RCSH4_05 .long RCSH4_05A,RCSH4_05B +RCSH5_01 .long RCSH5_01A,RCSH5_01B +RCSH5_02 .long RCSH5_02A,RCSH5_02B +RCSH5_03 .long RCSH5_03A,RCSH5_03B +RCSH5_04 .long RCSH5_04A,RCSH5_04B +RCSH5_05 .long RCSH5_05A,RCSH5_05B +RBSH_01 .long RBSH_01A,RBSH_01B +RBSH_02 .long RBSH_02A,RBSH_02B +RBSH_03 .long RBSH_03A,RBSH_03B +RBSH_04 .long RBSH_04A,RBSH_04B +RBSH_05 .long RBSH_05A,RBSH_05B +RBSH_06 .long RBSH_06A,RBSH_06B +RBSH_07 .long RBSH_07A,RBSH_07B + +#***************************************************************************** +* Change an objects image (Doesn't check VFLIP) +* A0=*New image +* A1=New flip flags & const +* A8=*Obj +* Trashes scratch +* +* ---> This is more or less identical to the civanic found in ROBO.ASM, +* but it's called with EXGPC instead of CALL[R/A]. +* +* ---> returns via JUMP a14 + + SUBRP fastanic + +;RJR START + .align +;RJR END + + cmpi ROM,a0 + jrlo #anierr + + ;set new anim points + move *a0(IANIOFFX),*a8(ODXOFF),W + move *a0(IANIOFFY),*a8(ODYOFF),W + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + setf 5,0,0 + move *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 16,1,0 + +#x jump a14 + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,2 + .endif + jruc #x + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/ROPESIMG.ASM b/BACKUP/ROPESIMG.ASM new file mode 100644 index 0000000..6958ae7 --- /dev/null +++ b/BACKUP/ROPESIMG.ASM @@ -0,0 +1,12 @@ + .FILE "ropesimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include ropesimg.glo + + .include ropesimg.tbl + + \ No newline at end of file diff --git a/BACKUP/RZRSEQ1.ASM b/BACKUP/RZRSEQ1.ASM new file mode 100644 index 0000000..256b5d8 --- /dev/null +++ b/BACKUP/RZRSEQ1.ASM @@ -0,0 +1,645 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 1/25/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "rzrseq1.asm" + .title "Razor Ramon animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "razorimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref SMALL_RUN + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* STANDS + + SUBR rzr_zip_anim + WL TSEC*60,R2ST2C+FR3 + .word 0 + + SUBR rzr_stand2_anim + SUBR rzr_stand8_anim + + WL 7,R2ST2C+FR3 + WL 6,R2ST2C+FR5 + WL 6,R2ST2C+FR7 + WL 6,R2ST2C+FR9 + WL 6,R2ST2C+FR7 + WL 7,R2ST2C+FR5 + .word ANI_REPEAT + + + SUBR rzr_stand4_anim + SUBR rzr_stand6_anim + + WL 7,R4ST4G+FR1 + WL 6,R4ST4G+FR3 + WL 6,R4ST4G+FR5 + WL 6,R4ST4G+FR7 + WL 6,R4ST4G+FR5 + WL 7,R4ST4G+FR3 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR rzr_torso2_anim + SUBR rzr_torso8_anim + WL 4,R2TW2Z+FR1 + WL 4,R2TW2Z+FR2 + WL 4,R2TW2Z+FR3 + WL 4,R2TW2Z+FR4 + WL 4,R2TW2Z+FR3 + WL 4,R2TW2Z+FR2 + .word ANI_REPEAT + + + SUBR rzr_torso4_anim + SUBR rzr_torso6_anim + WL 4,R4TW4Z+FR1 + WL 4,R4TW4Z+FR2 + WL 4,R4TW4Z+FR3 + WL 4,R4TW4Z+FR4 + WL 4,R4TW4Z+FR3 + WL 4,R4TW4Z+FR2 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR rzr_walk1_f2_anim + WL 2,R2WL1A+FR1 + WL 2,R2WL1A+FR2 + WL 2,R2WL1A+FR3 + WL 2,R2WL1A+FR4 + WL 2,R2WL1A+FR5 + WL 2,R2WL1A+FR6 + WL 2,R2WL1A+FR7 + WL 2,R2WL1A+FR8 + WL 2,R2WL1A+FR9 + WL 2,R2WL1A+FR10 + WL 2,R2WL1A+FR11 + WL 2,R2WL1A+FR12 + WL 2,R2WL1A+FR13 + WL 2,R2WL1A+FR14 + WL 2,R2WL1A+FR15 + WL 2,R2WL1A+FR16 + WL 2,R2WL1A+FR17 + WL 2,R2WL1A+FR18 + WL 2,R2WL1A+FR19 + WL 2,R2WL1A+FR20 + .word ANI_REPEAT + + SUBR rzr_walk2_f2_anim + WL 2,R2WL2A+FR1 + WL 2,R2WL2A+FR2 + WL 2,R2WL2A+FR3 + WL 2,R2WL2A+FR4 + WL 2,R2WL2A+FR5 + WL 2,R2WL2A+FR6 + WL 2,R2WL2A+FR7 + WL 2,R2WL2A+FR8 + WL 2,R2WL2A+FR9 + WL 2,R2WL2A+FR10 + WL 2,R2WL2A+FR11 + WL 2,R2WL2A+FR12 + WL 2,R2WL2A+FR13 + WL 2,R2WL2A+FR14 + WL 2,R2WL2A+FR15 + WL 2,R2WL2A+FR16 + WL 2,R2WL2A+FR17 + WL 2,R2WL2A+FR18 + WL 2,R2WL2A+FR19 + WL 2,R2WL2A+FR20 + .word ANI_REPEAT + + SUBR rzr_walk4_f2_anim + WL 2,R2WL4B+FR1 + WL 2,R2WL4B+FR2 + WL 2,R2WL4B+FR3 + WL 2,R2WL4B+FR4 + WL 2,R2WL4B+FR5 + WL 2,R2WL4B+FR6 + WL 2,R2WL4B+FR7 + WL 2,R2WL4B+FR8 + WL 2,R2WL4B+FR9 + WL 2,R2WL4B+FR10 + WL 2,R2WL4B+FR11 + WL 2,R2WL4B+FR12 + WL 2,R2WL4B+FR13 + WL 2,R2WL4B+FR14 + WL 2,R2WL4B+FR15 + WL 2,R2WL4B+FR16 + WL 2,R2WL4B+FR17 + WL 2,R2WL4B+FR18 + WL 2,R2WL4B+FR19 + WL 2,R2WL4B+FR20 + WL 2,R2WL4B+FR21 + .word ANI_REPEAT + + SUBR rzr_walk5_f2_anim + WL 2,R2WL1A+FR20 + WL 2,R2WL1A+FR19 + WL 2,R2WL1A+FR18 + WL 2,R2WL1A+FR17 + WL 2,R2WL1A+FR16 + WL 2,R2WL1A+FR15 + WL 2,R2WL1A+FR14 + WL 2,R2WL1A+FR13 + WL 2,R2WL1A+FR12 + WL 2,R2WL1A+FR11 + WL 2,R2WL1A+FR10 + WL 2,R2WL1A+FR9 + WL 2,R2WL1A+FR8 + WL 2,R2WL1A+FR7 + WL 2,R2WL1A+FR6 + WL 2,R2WL1A+FR5 + WL 2,R2WL1A+FR4 + WL 2,R2WL1A+FR3 + WL 2,R2WL1A+FR2 + WL 2,R2WL1A+FR1 + .word ANI_REPEAT + + SUBR rzr_walk6_f2_anim + WL 2,R2WL2A+FR20 + WL 2,R2WL2A+FR19 + WL 2,R2WL2A+FR18 + WL 2,R2WL2A+FR17 + WL 2,R2WL2A+FR16 + WL 2,R2WL2A+FR15 + WL 2,R2WL2A+FR14 + WL 2,R2WL2A+FR13 + WL 2,R2WL2A+FR12 + WL 2,R2WL2A+FR11 + WL 2,R2WL2A+FR10 + WL 2,R2WL2A+FR9 + WL 2,R2WL2A+FR8 + WL 2,R2WL2A+FR7 + WL 2,R2WL2A+FR6 + WL 2,R2WL2A+FR5 + WL 2,R2WL2A+FR4 + WL 2,R2WL2A+FR3 + WL 2,R2WL2A+FR2 + WL 2,R2WL2A+FR1 + .word ANI_REPEAT + + + SUBR rzr_walk8_f2_anim + WL 2,R2WL4B+FR21 + WL 2,R2WL4B+FR20 + WL 2,R2WL4B+FR19 + WL 2,R2WL4B+FR18 + WL 2,R2WL4B+FR17 + WL 2,R2WL4B+FR16 + WL 2,R2WL4B+FR15 + WL 2,R2WL4B+FR14 + WL 2,R2WL4B+FR13 + WL 2,R2WL4B+FR12 + WL 2,R2WL4B+FR11 + WL 2,R2WL4B+FR10 + WL 2,R2WL4B+FR9 + WL 2,R2WL4B+FR8 + WL 2,R2WL4B+FR7 + WL 2,R2WL4B+FR6 + WL 2,R2WL4B+FR5 + WL 2,R2WL4B+FR4 + WL 2,R2WL4B+FR3 + WL 2,R2WL4B+FR2 + WL 2,R2WL4B+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR rzr_walk1_f4_anim + WL 2,R4WL5A+FR18 + WL 2,R4WL5A+FR17 + WL 2,R4WL5A+FR16 + WL 2,R4WL5A+FR15 + WL 2,R4WL5A+FR14 + WL 2,R4WL5A+FR13 + WL 2,R4WL5A+FR12 + WL 2,R4WL5A+FR11 + WL 2,R4WL5A+FR10 + WL 2,R4WL5A+FR9 + WL 2,R4WL5A+FR8 + WL 2,R4WL5A+FR7 + WL 2,R4WL5A+FR6 + WL 2,R4WL5A+FR5 + WL 2,R4WL5A+FR4 + WL 2,R4WL5A+FR3 + WL 2,R4WL5A+FR2 + WL 2,R4WL5A+FR1 + .word ANI_REPEAT + + SUBR rzr_walk2_f4_anim + WL 2,R4WL2A+FR1 + WL 2,R4WL2A+FR2 + WL 2,R4WL2A+FR3 + WL 2,R4WL2A+FR4 + WL 2,R4WL2A+FR5 + WL 2,R4WL2A+FR6 + WL 2,R4WL2A+FR7 + WL 2,R4WL2A+FR8 + WL 2,R4WL2A+FR9 + WL 2,R4WL2A+FR10 + WL 2,R4WL2A+FR11 + WL 2,R4WL2A+FR12 + WL 2,R4WL2A+FR13 + WL 2,R4WL2A+FR14 + WL 2,R4WL2A+FR15 + WL 2,R4WL2A+FR16 + WL 2,R4WL2A+FR17 + WL 2,R4WL2A+FR18 + WL 2,R4WL2A+FR19 + WL 2,R4WL2A+FR20 + .word ANI_REPEAT + + SUBR rzr_walk4_f4_anim + WL 2,R4WL4A+FR1 + WL 2,R4WL4A+FR2 + WL 2,R4WL4A+FR3 + WL 2,R4WL4A+FR4 + WL 2,R4WL4A+FR5 + WL 2,R4WL4A+FR6 + WL 2,R4WL4A+FR7 + WL 2,R4WL4A+FR8 + WL 2,R4WL4A+FR9 + WL 2,R4WL4A+FR10 + WL 2,R4WL4A+FR11 + WL 2,R4WL4A+FR12 + WL 2,R4WL4A+FR13 + WL 2,R4WL4A+FR14 + WL 2,R4WL4A+FR15 + WL 2,R4WL4A+FR16 + WL 2,R4WL4A+FR17 + WL 2,R4WL4A+FR18 + .word ANI_REPEAT + + SUBR rzr_walk5_f4_anim + WL 2,R4WL5A+FR1 + WL 2,R4WL5A+FR2 + WL 2,R4WL5A+FR3 + WL 2,R4WL5A+FR4 + WL 2,R4WL5A+FR5 + WL 2,R4WL5A+FR6 + WL 2,R4WL5A+FR7 + WL 2,R4WL5A+FR8 + WL 2,R4WL5A+FR9 + WL 2,R4WL5A+FR10 + WL 2,R4WL5A+FR11 + WL 2,R4WL5A+FR12 + WL 2,R4WL5A+FR13 + WL 2,R4WL5A+FR14 + WL 2,R4WL5A+FR15 + WL 2,R4WL5A+FR16 + WL 2,R4WL5A+FR17 + WL 2,R4WL5A+FR18 + .word ANI_REPEAT + + SUBR rzr_walk6_f4_anim + WL 2,R4WL2A+FR20 + WL 2,R4WL2A+FR19 + WL 2,R4WL2A+FR18 + WL 2,R4WL2A+FR17 + WL 2,R4WL2A+FR16 + WL 2,R4WL2A+FR15 + WL 2,R4WL2A+FR14 + WL 2,R4WL2A+FR13 + WL 2,R4WL2A+FR12 + WL 2,R4WL2A+FR11 + WL 2,R4WL2A+FR10 + WL 2,R4WL2A+FR9 + WL 2,R4WL2A+FR8 + WL 2,R4WL2A+FR7 + WL 2,R4WL2A+FR6 + WL 2,R4WL2A+FR5 + WL 2,R4WL2A+FR4 + WL 2,R4WL2A+FR3 + WL 2,R4WL2A+FR2 + WL 2,R4WL2A+FR1 + .word ANI_REPEAT + + SUBR rzr_walk8_f4_anim + WL 2,R4WL4A+FR18 + WL 2,R4WL4A+FR17 + WL 2,R4WL4A+FR16 + WL 2,R4WL4A+FR15 + WL 2,R4WL4A+FR14 + WL 2,R4WL4A+FR13 + WL 2,R4WL4A+FR12 + WL 2,R4WL4A+FR11 + WL 2,R4WL4A+FR10 + WL 2,R4WL4A+FR9 + WL 2,R4WL4A+FR8 + WL 2,R4WL4A+FR7 + WL 2,R4WL4A+FR6 + WL 2,R4WL4A+FR5 + WL 2,R4WL4A+FR4 + WL 2,R4WL4A+FR3 + WL 2,R4WL4A+FR2 + WL 2,R4WL4A+FR1 + .word ANI_REPEAT + + + +;MJT Start +#***************************************************************************** +* +* TURNS (STANDS) + + + SUBR rzr_2_to_4_turn_anim + SUBR rzr_8_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TT5Z+FR2 + WL 1,R1TT5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_2_turn_anim + SUBR rzr_6_to_8_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TT5Z+FR3 + WL 1,R1TT5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_6_turn_anim + SUBR rzr_6_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TT5Z+FR4 + .word ANI_XFLIP + WL 1,R1TT5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_to_8_turn_anim + SUBR rzr_8_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TT5Z+FR1 + .word ANI_XFLIP + WL 1,R1TT5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_8_turn_anim + SUBR rzr_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TT5Z+FR3 ;3.5 + WL 1,R1TT5Z+FR2 ;2.5 + WL 1,R1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 1,R1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_to_6_turn_anim + SUBR rzr_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TT5Z+FR2 ;2.5 + WL 1,R1TT5Z+FR3 ;3.5 + WL 1,R1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 1,R1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + + SUBR rzr_2_to_4_turn2_anim + SUBR rzr_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TR5Z+FR2 + .word ANI_SETFACING + WL 1,R1TR5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_2_turn2_anim + SUBR rzr_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TR5Z+FR3 + .word ANI_SETFACING + WL 1,R1TR5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_6_turn2_anim + SUBR rzr_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TR5Z+FR4 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,R1TR5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_to_8_turn2_anim + SUBR rzr_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TR5Z+FR1 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,R1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_8_turn2_anim + SUBR rzr_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,R1TR5Z+FR4 ;4.5 + WL 1,R1TR5Z+FR3 ;3.5 + .word ANI_SETFACING + WL 1,R1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_to_6_turn2_anim + SUBR rzr_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,R1TR5Z+FR2 ;2.5 + .word ANI_SETFACING + WL 1,R1TR5Z+FR3 ;3.5 + WL 1,R1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,R1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;MJT End +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR rzr_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR rzr_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + +#lp1 + WL ANI_CODE,SMALL_RUN + WL 2,R3RN3D+FR1 + WL 3,R3RN3D+FR2 + WL 2,R3RN3D+FR3 + WL 3,R3RN3D+FR4 + WL 2,R3RN3D+FR5 +#run2 + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL 3,R3RN3D+FR6 + WL 2,R3RN3D+FR7 + WL ANI_CODE,SMALL_RUN + WL 3,R3RN3D+FR8 + WL 2,R3RN3D+FR9 + WL 3,R3RN3D+FR10 + WL 2,R3RN3D+FR11 + WL 3,R3RN3D+FR12 + WL 2,R3RN3D+FR13 + WL 3,R3RN3D+FR14 + + WL ANI_GOTO,#lp1 + +;MJT Start + +;MJT End + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR rzr_bounce_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + .word ANI_ZEROVELS + + + WL 2,R4BO3Z+FR1 + .word ANI_BOUNCEROPE,0 + WL 1,R4BO3Z+FR1 + + WL 3,R4BO3Z+FR2 + .word ANI_BOUNCEROPE,1 + + WL 3,R4BO3Z+FR3 + + WL ANI_CODE,SMALL_RUN + + WL 2,R4BO3Z+FR4 + .word ANI_BOUNCEROPE,2 + WL 1,R4BO3Z+FR4 + + .word ANI_ZEROVELS + + WL 2,R4BO3Z+FR5 + .word ANI_BOUNCEROPE,3 + WL 1,R4BO3Z+FR5 + + WL 2,R4BO3Z+FR6 + .word ANI_BOUNCEROPE,4 + WL 1,R4BO3Z+FR6 + + WL 3,R4BO3Z+FR7 + .word ANI_BOUNCEROPE,0 + WL 3,R4BO3Z+FR8 + + .word ANI_BOUNCEROPE,-1 + + WL 3,R4BO3Z+FR9 + + WL ANI_CODE,SMALL_RUN + + WL 3,R4BO3Z+FR10 + + .word ANI_OFFSET,15,0,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;MJT Start + +;MJT End + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/RZRSEQ2.ASM b/BACKUP/RZRSEQ2.ASM new file mode 100644 index 0000000..46b9145 --- /dev/null +++ b/BACKUP/RZRSEQ2.ASM @@ -0,0 +1,1876 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 2/1/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "rzrseq2.asm" + .title "Razor Ramon animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "display.equ" + .include "ring.equ" + + .include "razorimg.h" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;BRET + .ref H3RN3A,H4YR3A + + ;BAM BAM + .ref B3RN3A,B4YR3A + + ;DOINK + .ref D3RN3B,D4YR3B + + ;LEX + .ref L3RN3B,L4YR3B + + ;RAZOR + .ref rzr_facedown_getup_anim,rzr_faceup_getup_anim + .ref rzr_faceup_getup2_anim + + ;SHAWN + .ref S3RN3A,S4YR3A + + ;TAKER + .ref U3RN3A,U4YR3B + + ;YOKO + .ref Y3RN3C,Y4YR3A + + ;MISC + .ref start_run_anim,SET_DIR_FACE,start_run_flung,CALL_MISSES + .ref ckzpos,ck_dizzy,HIT_THE_MAT,SMALL_BOUNCE,win_announce + .ref grnd_hit,no_bk_xvel,check_xvel + + .ref HIT_THE_MAT + .REF DO_CROWD_CHEER + .ref tbukl_flip + +;XXX Start +#***************************************************************************** +* +* NORMAL #2 PUNCH + + SUBR rzr_2_punch_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,R2PU3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,6 + + WL 3,R2PU3A+FR2 + WL 3,R2PU3A+FR3 + + .word ANI_ATTACK_ON,AMODE_PUNCH,23,95,56,11 ;mode,x,y,w,h + WL 3,R2PU3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + + WL 3,R2PU3A+FR4 + WL 3,R2PU3A+FR5 + WL 3,R2PU3A+FR6 + WL 3,R2PU3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R2PU3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* NORMAL #4 PUNCH + + SUBR rzr_4_punch_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,R4PU3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 3,R4PU3A+FR2 + WL 3,R4PU3A+FR3 + + .word ANI_ATTACK_ON,AMODE_PUNCH,23,95,56,11 ;mode,x,y,w,h + WL 3,R4PU3A+FR4 + .word ANI_ATTACK_OFF + + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + + WL 3,R4PU3A+FR4 + WL 3,R4PU3A+FR5 + WL 3,R4PU3A+FR6 + WL 3,R4PU3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4PU3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #3 BLADE SLASH + + SUBR rzr_3_slash_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 3,R3RZ3S+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 3,R3RZ3S+FR3 + WL 3,R3RZ3S+FR4 + + .word ANI_ATTACK_ON,AMODE_PUNCH,42,50,57,101 + WL 3,R3RZ3S+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + + WL 3,R3RZ3S+FR7 + WL 3,R3RZ3S+FR8 + WL 3,R3RZ3S+FR9 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R3RZ3S+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;XXX End +#***************************************************************************** +* +* #2 UPPERCUT + + SUBR rzr_2_uprcut_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_STARTATTACK,AT_UPRCUT,6 + WL 2,R2UP3A+FR5 + WL 2,R2UP3A+FR6 + WL 2,R2UP3A+FR7 + + .word ANI_ATTACK_ON,AMODE_UPRCUT,30,77,42,65 + WL 7,R2UP3A+FR8 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + + WL 5,R2UP3A+FR9 + WL 5,R2UP3A+FR10 + WL 4,R2UP3A+FR11 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 UPPERCUT + + SUBR rzr_4_uprcut_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_STARTATTACK,AT_UPRCUT,6 + WL 2,R4UP3C+FR1 + WL 2,R4UP3C+FR2 + WL 2,R4UP3C+FR3 + + .word ANI_ATTACK_ON,AMODE_UPRCUT,30,77,42,65 + WL 7,R4UP3C+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + + WL 4,R4UP3C+FR5 + WL 4,R4UP3C+FR6 + WL 3,R4UP3C+FR7 + WL 3,R4UP3C+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;XXX Start +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR rzr_2_butt_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 2,R2BC3B+FR1 + WL 2,R2BC3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,4 + WL 2,R2BC3B+FR3 + WL 2,R2BC3B+FR4 + + .word ANI_ATTACK_ON,AMODE_HDBUTT,19,87,23,22 + WL 3,R2BC3B+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + WL 3,R2BC3B+FR6 + WL 3,R2BC3B+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R2BC3B+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEADBUTT + + SUBR rzr_4_butt_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 2,R4BC3A+FR1 + WL 2,R4BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,4 + WL 2,R4BC3A+FR3 + WL 2,R4BC3A+FR4 + + .word ANI_ATTACK_ON,AMODE_HDBUTT,29,93,23,19 + WL 3,R4BC3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + WL 3,R4BC3A+FR6 + WL 3,R4BC3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* NORMAL #2 KICK + + SUBR rzr_2_kick_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 2,R4KM3A+FR1 + WL 2,R4KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,4 + WL 2,R4KM3A+FR3 + WL 2,R4KM3A+FR4 + + .word ANI_ATTACK_ON,AMODE_KICK,8,15,75,75 ;mode,x,y,w,h + WL 2,R4KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + WL 6,R4KM3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4KM3A+FR6 + WL 3,R4KM3A+FR7 + WL 3,R4KM3A+FR8 + WL 3,R2KM3X+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* NORMAL #4 KICK + + SUBR rzr_4_kick_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 2,R4KM3A+FR1 + WL 2,R4KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,4 + WL 2,R4KM3A+FR3 + WL 2,R4KM3A+FR4 + + .word ANI_ATTACK_ON,AMODE_KICK,8,15,75,75 ;mode,x,y,w,h + WL 2,R4KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + WL 6,R4KM3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4KM3A+FR6 + WL 3,R4KM3A+FR7 + WL 3,R4KM3A+FR8 + WL 3,R4KM3A+FR9 + WL 3,R4KM3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +;XXX End +#***************************************************************************** +* +* #2 KNEE + + SUBR rzr_2_knee_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 2,R2NM3A+FR1 + WL 2,R2NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KNEE,6 + WL 2,R2NM3A+FR3 + WL 2,R2NM3A+FR4 + WL 2,R2NM3A+FR5 + + .word ANI_ATTACK_ON,AMODE_KNEE,22,55,38,27 ;mode,x,y,w,h + WL 3,R2NM3A+FR6 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + + WL 6,R2NM3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R2NM3A+FR7 + WL 3,R2NM3A+FR8 + WL 3,R2NM3A+FR9 + WL 3,R2NM3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 KNEE + + SUBR rzr_4_knee_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 2,R4NM3C+FR1 + WL 2,R4NM3C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KNEE,6 + WL 2,R4NM3C+FR3 + WL 2,R4NM3C+FR4 + WL 2,R4NM3C+FR5 + + .word ANI_ATTACK_ON,AMODE_KNEE,22,55,38,27 ;mode,x,y,w,h + WL 3,R4NM3C+FR6 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + + WL 6,R4NM3C+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4NM3C+FR7 + WL 3,R4NM3C+FR8 + WL 3,R4NM3C+FR9 + WL 3,R4NM3C+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +;XXX Start +#***************************************************************************** +* +* #2 PUNCH FALLEN OPPONENT + + SUBR rzr_2_ground_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,R2PF2B+FR2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,8,0,-40,16,43,50 + WL 1,R2PF2B+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#no_leapat + + ;leapat... + .word ANI_TARGET,TGT_KNEES,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,112,96,90000h,TGT_USER,19,0,-40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_LBDROP,12 + + WL 4,R2PF2B+FR3 + WL 4,R2PF2B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + WL ANI_GOTO,#common + +#no_leapat + .word ANI_STARTATTACK,AT_LBDROP,14 + WL 4,R2PF2B+FR3 + WL 4,R2PF2B+FR5 +#common + WL 3,R2PF2B+FR6 + WL 3,R2PF2B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,8,0,-50,16,43,60 + WL 7,R2PF2B+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKER,15 + .word ANI_SHAKEALL,1 + + WL 3,R2PF2B+FR9 + WL 3,R2PF2B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 3,R2PF2B+FR9 + WL 3,R2PF2B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 PUNCH FALLEN OPPONENT + + SUBR rzr_4_ground_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,R4PF4B+FR2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,0,-1,-10,22,30,50 + WL 1,R4PF4B+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#no_leapat + + ;leapat... + .word ANI_TARGET,TGT_KNEES,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,112,96,90000h,TGT_USER,13,0,40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_LBDROP,12 + + WL 4,R4PF4B+FR3 + WL 4,R4PF4B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + WL ANI_GOTO,#common + +#no_leapat + .word ANI_STARTATTACK,AT_LBDROP,14 + WL 4,R4PF4B+FR3 + WL 4,R4PF4B+FR4 +#common + WL 3,R4PF4B+FR5 + WL 3,R4PF4B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,0,-1,-10,22,30,60 + WL 1,R4PF4B+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKER,15 + .word ANI_SHAKEALL,1 + WL 6,R4PF4B+FR8 + WL 4,R4PF4B+FR9 + WL 4,R4PF4B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 6,R4PF4B+FR8 + WL 4,R4PF4B+FR9 + WL 4,R4PF4B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 FLYING KICK + +#yoff equ 52 + + SUBR rzr_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_FLYKICK,25 + WL 3,R3DC3C+FR1 + WL 3,R3DC3C+FR2 + WL 3,R3DC3C+FR3 + + .word ANI_OFFSET,0,#yoff,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,145,65,90000h,TGT_HEAD,65,30,0 + WL ANI_CODE,no_bk_xvel + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL 8,R3DC3C+FR4 + WL 8,R3DC3C+FR5 + .word ANI_ATTACK_ON,AMODE_FLYKICK,30,11,56,39 + WL 2,R3DC3C+FR6 + WL 6,R3DC3C+FR7 + .word ANI_ATTACK_OFF + WL 4,R3DC3C+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + WL 3,R3DC3C+FR9 + WL 3,R3DC3C+FR10 + .word ANI_XFLIP + WL 3,R3RL1B+FR6 + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + + +;XXX End +#***************************************************************************** +* +* GRAB & THROW + + SUBR rzr_grab_throw_anim + + .word ANI_END + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR rzr_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,R2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_STOMP,15 + WL 3,R2MP2A+FR2 + WL 2,R2MP2A+FR3 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,0,-1,-40,17,32,50 + WL 1,R2MP2A+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL 3,R2MP2A+FR4 + WL 3,R2MP2A+FR5 + WL 3,R2MP2A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-4,-5,-40,25,40,50 + WL 3,R2MP2A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + WL 3,R2MP2A+FR8 + WL 3,R2MP2A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + + .word ANI_TARGET,TGT_GROIN,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,112,96,90000h,TGT_USER,12,0,-40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,14 + + WL 3,R2MP2A+FR4 + WL 3,R2MP2A+FR5 + WL 3,R2MP2A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-4,-5,-40,25,40,50 + WL 3,R2MP2A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 3,R2MP2A+FR8 + WL 3,R2MP2A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + + SUBR rzr_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 4,R4MP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_STOMP,20 + WL 3,R4MP4D+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,9,-11,-10,19,36,50 + WL 1,R4MP4D+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL 4,R4MP4D+FR3 + WL 4,R4MP4D+FR4 + WL 4,R4MP4D+FR5 + WL 4,R4MP4D+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,5,-15,-10,27,44,50 + WL 4,R4MP4D+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + WL 4,R4MP4D+FR8 + WL 4,R4MP4D+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + + .word ANI_TARGET,TGT_GROIN,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,112,96,90000h,TGT_USER,16,0,40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,14 + + WL 3,R4MP4D+FR3 + WL 3,R4MP4D+FR4 + WL 3,R4MP4D+FR5 + WL 3,R4MP4D+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_STOMP,5,-15,-10,27,44,50 + WL 4,R4MP4D+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 4,R4MP4D+FR8 + WL 4,R4MP4D+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 RUNNING ELBOW DROP + +#yoff equ 40 + + SUBR rzr_flying_elbow_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_STOMP,36 + + WL 3,R4PJ4B+FR1 + WL 3,R4PJ4B+FR2 + + .word ANI_TARGET,TGT_GROIN,TGT_HEAD,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,999,112,96,90000h,TGT_USER,-39,0,30 + WL ANI_CODE,no_bk_xvel + + .word ANI_SETPLYRMODE,MODE_INAIR + + .word ANI_OFFSET,0,#yoff,0 + WL 3,R4PJ4B+FR3 + WL 3,R4PJ4B+FR4 + WL 3,R4PJ4B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-49,-7,-10,46,31,50 + WL 1,R4PJ4B+FR6 + .word ANI_ATTACK_OFF + + WL ANI_SET_YVEL,40000h + .word ANI_SHAKER,45 + .word ANI_SHAKEROPES,2 + + WL ANI_IFSTATUS,#hit + + WL ANI_CODE,CALL_MISSES + +#hit + WL 7,R4PJ4B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_XFLIP + WL 4,R3GU4A+FR3 + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +#***************************************************************************** +* +* TURNBUCKLE ELBOW + +#yoff equ 40 + + SUBR rzr_tbukl_elbow_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOCOLLIS|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + + .word ANI_STARTATTACK,AT_BSTOMP,39 + + WL 3,R4PJ4B+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 36,190,190,190,90000h,TGT_GROIN,-15,#yoff,40 + WL ANI_CODE,check_xvel + + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + + WL 3,R4PJ4B+FR2 + .word ANI_OFFSET,0,#yoff,0 + WL 3,R4PJ4B+FR3 + WL 3,R4PJ4B+FR4 + WL 1,R4PJ4B+FR5 + + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-64,27,-10,44,38,70 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,CALL_MISSES + .word ANI_BOUNCE,5 + WL 7,R4PJ4B+FR6 + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + WL 4,R3GU4A+FR3 + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +#hit + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + .word ANI_SETMODE,MODE_INAIR + + .word ANI_SHAKER,45 + .word ANI_SHAKEALL,2 + WL 1,R4PJ4B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + WL 4,R4PJ4B+FR6 + .word ANI_XFLIP + .word ANI_FACEDOWN + WL 4,R3GU4A+FR3 + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +#***************************************************************************** +* +* SECOND WIND + + SUBR rzr_2ndwind_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 3,R4SW4Z+FR1 + WL 3,R4SW4Z+FR2 + WL 3,R4SW4Z+FR3 + WL 3,R4SW4Z+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR rzr_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_PUPPET,14 + WL 3,R1TT5Z+FR2 + WL 3,R1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR rzr_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + WL 4,R4GF3B+FR1 + + .word ANI_ATTACK_ON,AMODE_PUPPET,31h,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,R4GF3B+FR2 +; WL 4,R4GF3B+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,R4GF3B+FR3 +; WL 4,R4GF3B+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missedb + +;got him + + +; out of control time for fling? + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,R4GF3B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,7,R4GF3B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,5,R4GF3B+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,R4GF3B+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,5,R4GF3B+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,5,R4GF3B+FR8,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 12,R4GF3B+FR9 + WL 4,R4GF3B+FR10 + .word ANI_OFFSET,-10,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 25,R4GF3B+FR3 +#missed + WL ANI_CODE,CALL_MISSES + + + WL 8,R4GF3B+FR3 + WL 4,R4GF3B+FR2 + WL 4,R4GF3B+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4YR3A+FR1,68,7,1 + LWWW H4YR3A+FR2,60,5,1 + LWWW H4YR3A+FR3,52,-1,1 + LWWW H4YR3A+FR5,27,1,1 + LWWW H3RN3A+FR1,3,-2,0 + LWWW H3RN3A+FR2,-1,-2,0 +#Razor + LWWW R4YR3A+FR1,53,17,0 + LWWW R4YR3A+FR2,34,14,0 + LWWW R4YR3A+FR3,14,3,0 + LWWW R4YR3A+FR4,-10,0,0 + LWWW R3RN3D+FR11,-7,11,0 + LWWW R3RN3D+FR12,-6,9,0 +#Taker + LWWW U4YR3B+FR2,48,18,0 + LWWW U4YR3B+FR3,44,11,0 + LWWW U4YR3B+FR4,21,10,0 + LWWW U4YR3B+FR5,5,10,0 + LWWW U3RN3A+FR2,-13,10,0 + LWWW U3RN3A+FR2,-15,7,0 +#Yokozuna + LWWW Y4YR3A+FR1,68,11,1 + LWWW Y4YR3A+FR4,40,9,1 + LWWW Y4YR3A+FR5,24,1,1 + LWWW Y4YR3A+FR7,-8,-9,1 + LWWW Y3RN3C+FR7,19,8,0 + LWWW Y3RN3C+FR8,20,4,0 +#Shawn + LWWW S4YR3A+FR2,41,5,1 + LWWW S4YR3A+FR3,52,-7,1 + LWWW S4YR3A+FR5,15,0,1 + LWWW S4YR3A+FR6,6,-4,1 + LWWW S3RN3A+FR2,19,5,0 + LWWW S3RN3A+FR3,0,4,0 +#BamBam + LWWW B4YR3A+FR3,36,13,0 + LWWW B4YR3A+FR4,46,5,0 + LWWW B4YR3A+FR5,46,0,0 + LWWW B4YR3A+FR7,-3,-7,0 + LWWW B3RN3A+FR1,16,8,0 + LWWW B3RN3A+FR2,17,7,0 +#Doink + LWWW D4YR3B+FR1,74,13,1 + LWWW D4YR3B+FR2,62,13,1 + LWWW D4YR3B+FR3,43,6,1 + LWWW D4YR3B+FR4,19,5,1 + LWWW D3RN3B+FR3,19,12,0 + LWWW D3RN3B+FR4,-8,8,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,67,11,1 + LWWW L4YR3B+FR2,47,2,1 + LWWW L4YR3B+FR3,27,-2,1 + LWWW L4YR3B+FR4,-31,-4,1 + LWWW L3RN3B+FR2,-2,10,0 + LWWW L3RN3B+FR3,8,3,0 + +#strt_run_tbl + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR rzr_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 3,R4MF4B+FR1 + WL 3,R4MF4B+FR2 + WL 3,R4MF4B+FR3 + WL 3,R4MF4B+FR4 + WL 3,R4MF4B+FR5 + WL 3,R4MF4B+FR6 + WL 3,R4MF4B+FR7 + WL 3,R4MF4B+FR8 + WL 3,R4MF4B+FR9 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 2,R4MF4B+FR6 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,R3MS3Z+FR4 + WL 4,R3MS3Z+FR3 + WL 4,R3MS3Z+FR2 + WL 4,R3MS3Z+FR1 + .word ANI_WAITHITGND + WL 2,R2ST2C+FR3 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* #2 PUSH + + SUBR rzr_2_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,15 + WL 3,R2PS3A+FR1 + WL 3,R2PS3A+FR2 + WL 3,R2PS3A+FR3 + WL 3,R2PS3A+FR4 + WL 3,R2PS3A+FR5 + .word ANI_ATTACK_ON, AMODE_PUSH,31,94,46,15 + WL 3,R2PS3A+FR6 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,40h,-60000h,#no_hit ;range,vel,addr + WL 15,R2PS3A+FR6 +#no_hit + WL 4,R2PS3A+FR6 + WL 4,R2PS3A+FR7 + WL 4,R2PS3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 PUSH + + SUBR rzr_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + + .word ANI_STARTATTACK,AT_PUSH,18 + WL 3,R4PS3A+FR1 + WL 3,R4PS3A+FR2 + WL 3,R4PS3A+FR3 + WL 3,R4PS3A+FR4 + WL 3,R4PS3A+FR5 + WL 3,R4PS3A+FR6 + .word ANI_ATTACK_ON, AMODE_PUSH,45,98,48,14 + WL 3,R4PS3A+FR7 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,40h,-60000h,#no_hit ;range,vel,addr + WL 15,R4PS3A+FR7 +#no_hit + WL 4,R4PS3A+FR7 + WL 4,R4PS3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;XXX Start +#***************************************************************************** +* +* #4 BIG BOOT + + SUBR rzr_4_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_BIGBOOT,13 + WL 3,R4BG3A+FR1 + WL 3,R4BG3A+FR2 + WL 3,R4BG3A+FR3 + WL 2,R4BG3A+FR4 + WL 2,R4BG3A+FR5 + + .word ANI_ATTACK_ON,AMODE_BIGBOOT,59,77,32,20 ;mode,x,y,w,h + WL 4,R4BG3A+FR6 + .word ANI_WAITRELEASE,PLAYER_KICK_BIT + .word ANI_ATTACK_OFF + + WL 4,R4BG3A+FR7 + WL 4,R4BG3A+FR8 + WL 4,R4BG3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;XXX End +#***************************************************************************** +* +* RAISE ARM IN VICTORY + + SUBR rzr_raisearm_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_ENDMATCH + .word ANI_REPEAT + + +#***************************************************************************** + + SUBR rzr_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*10/255 ;inv multiply (0-255 -> 0-10) + + .long R3RL1B+FR1 ;0 + .long R3RL1B+FR2 ;1 + .long R3RL1B+FR3 ;2 + .long R3RL1B+FR4 ;3 + .long R3RL1B+FR5 ;4 + .long R3RL1B+FR6 ;5 + .long R3RL1B+FR7 ;6 + .long R3RL1B+FR8 ;7 + .long R3RL1B+FR9 ;8 + .long R3RL1B+FR10 ;9 + .long R3RL1B+FR11 ;10 + .long 0,0,0,0,0,0 + + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR rzr_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + + WL ANI_CODE,ckzpos + +;MJT Start + .word ANI_GETUP,300 +;MJT End + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + + WL 4,R3AM3D+FR2 + WL 4,R3AM3D+FR3 + WL 4,R3AM3D+FR4 + WL 4,R3AM3D+FR5 + WL 4,R3AM3D+FR6 + WL 4,R3AM3D+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,R3AM3D+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR rzr_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,R3TD3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,300 + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,R3TD3A+FR8 + .WORD ANI_XFLIP + WL 3,R3GU2A+FR1 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + + WL 4,R3AM3D+FR2 + WL 4,R3AM3D+FR3 + WL 4,R3AM3D+FR4 + WL 4,R3AM3D+FR5 + WL 4,R3AM3D+FR6 + WL 4,R3AM3D+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,R3AM3D+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + .word ANI_END + +****************************************************************************** +* + SUBR rzr_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WLW ANI_SET_XVEL,2000h,AM_FACE_REL + + WL 4,R3CR3A+FR1 + .word ANI_OFFSET,5,0,0 + WL 4,R3CR3A+FR2 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,5,0,0 ;***** + WL 4,R3CR3A+FR3 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,5,0,0 ;***** + WL 4,R3CR3A+FR4 + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + + .word ANI_OFFSET,5,0,0 ;***** + WL 4,R3CR3A+FR5 + + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + .word ANI_OFFSET,3,0,0 ;***** + WL 4,R3CR3A+FR6 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,3,0,0 ;***** + WL 4,R3CR3A+FR7 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_OFFSET,4,0,0 ;***** + WL 4,R3CR3A+FR8 + .word ANI_BENDROPE,3 + .word ANI_OFFSET,5,0,0 ;***** + WL 4,R3CR3A+FR9 + .word ANI_OFFSET,5,0,0 ;***** + WL 4,R3CR3A+FR10 + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,10,-3,0 + .word ANI_ZEROVELS + WL 4,R3CR3A+FR11 + .word ANI_OFFSET,2,0,0 ;***** + WL 4,R3CR3A+FR12 + + ;now jump off... + WL 4,R4JD4A+FR1 ;D4FM4A+FR1 + WL 4,R4JD4A+FR2 + WL 3,R4JD4A+FR3 + + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,R4JD4A+FR4 + .word ANI_WAITHITGND + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 3,R4JD4A+FR6 + WL 3,R4JD4A+FR7 + WL 6,R4JD4A+FR8 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR rzr_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in + WL 4,R4JD4A+FR1 + WL 4,R4JD4A+FR2 + + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,1ch,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 4,R4JD4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + WL 4,R4JD4A+FR6 + WL 3,R4JD4A+FR7 + .word ANI_OFFSET,5,0,0 ;***** + WL 3,R4JD4A+FR8 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + WL ANI_CODE,#set_z + + WLW ANI_SET_XVEL,2000h,AM_FACE_REL + + ;climb through + .word ANI_BENDROPE,0 + WL 3,R3CR3A+FR1 + .word ANI_OFFSET,2,0,0 ;***** + WL 3,R3CR3A+FR2 + .word ANI_OFFSET,2,0,0 ;***** + WL 3,R3CR3A+FR3 + .word ANI_OFFSET,2,0,0 ;***** + WL 3,R3CR3A+FR4 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,2,0,0 ;***** + WL 3,R3CR3A+FR5 + + .word ANI_OFFSET,3,0,0 ;***** + WL 3,R3CR3A+FR6 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,4,0,0 ;***** + WL 3,R3CR3A+FR7 + .word ANI_OFFSET,6,0,0 ;***** + WL 3,R3CR3A+FR8 + .word ANI_BENDROPE,3 + .word ANI_OFFSET,8,0,0 ;***** + WL 3,R3CR3A+FR9 + .word ANI_OFFSET,8,0,0 ;***** + WL 3,R3CR3A+FR10 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,8,0,0 + WL 3,R3CR3A+FR11 + .word ANI_OFFSET,16,0,0 ;***** + WL 3,R3CR3A+FR12 + + .word ANI_ZEROVELS + + WL ANI_CODE,clr_climb + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets +#set_z + +clr_climb + + clr a0 + move a0,*a13(CLIMBING_THRU) ;1=Climbing thru ropes flag + rets + +#***************************************************************************** + SUBR rzr_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL ANI_IFSTATUS,#dir4 + +;Facing #2, spin first! + WL 3,R1TT5Z+FR2 + WL 3,R1TT5Z+FR3 +#dir4 + WL 3,R3GU4A+FR10 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR5 + WL 3,R3GU4A+FR4 + + ;roll over once + WLW ANI_SET_ZVEL,90000h,AM_ABS + + WL 3,R3RL1B+FR1 + WL 3,R3RL1B+FR2 + WL 3,R3RL1B+FR3 + WL 3,R3RL1B+FR4 + WL 3,R3RL1B+FR5 + WL 3,R3RL1B+FR6 + WL 3,R3RL1B+FR7 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + + .word ANI_SETFACING + + ;climb through + .word ANI_OFFSET,0,-70,0 ;x,y,z + .WORD ANI_XFLIP + WL 3,R3DC3C+FR5 + WL 3,R2MP2A+FR7 + WL 3,R2MP2A+FR6 + .WORD ANI_XFLIP + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#***************************************************************************** + + SUBR rzr_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + WL 3,R2MP2A+FR6 + WL 3,R2MP2A+FR7 + WL 3,R3DC3C+FR5 + .word ANI_OFFSET,0,70,-60 + .WORD ANI_XFLIP + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,R3RL1B+FR6 + WL 3,R3RL1B+FR5 + WL 3,R3RL1B+FR4 + WL 3,R3RL1B+FR3 + WL 3,R3RL1B+FR2 + WL 3,R3RL1B+FR1 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,R3GU4A+FR3 + WL 3,R3GU4A+FR4 + WL 3,R3GU4A+FR5 + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR10 + + WL ANI_CODE,clr_climb + .word ANI_OFFSET,0,0,0 + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR rzr_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,R1TT5Z+FR2 + WL 3,R1TT5Z+FR3 + +#dir4 + WL 3,R3GU4A+FR10 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR5 + WL 3,R3GU4A+FR4 + WL 3,R3GU4A+FR3 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,R3RL1B+FR11 + WL 3,R3RL1B+FR10 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + WL 3,R3RL1B+FR9 + WL 3,R3RL1B+FR8 + WL 3,R3RL1B+FR7 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,R4AM4B+FR4 + WL 3,R4AM4B+FR3 + WL 3,R4AM4B+FR2 + + .word ANI_ZERO_XZVELS + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR rzr_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,R4AM4B+FR2 + WL 3,R4AM4B+FR3 + WL 3,R4AM4B+FR4 + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,R3RL1B+FR7 + WL 3,R3RL1B+FR8 + WL 3,R3RL1B+FR9 + WL 3,R3RL1B+FR10 + + .word ANI_ZEROVELS + + ;get up + WL 3,R3GU4A+FR3 + WL 3,R3GU4A+FR4 + WL 3,R3GU4A+FR5 + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR10 + + WL ANI_CODE,clr_climb + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#set_zvel2 + movi 52000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** +* + + SUBR rzr_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + + WL 2,R3GU4A+FR10 + WL 2,R3GU4A+FR8 + WL 2,R3GU4A+FR5 + WL ANI_SET_YVEL,39000h + + WL 3,R3AM3D+FR3 + WL 3,R3AM3D+FR4 + WL 3,R3AM3D+FR5 + WL 3,R3AM3D+FR6 + WL 3,R3AM3D+FR7 + WL 6,R3AM3D+FR1 + +;MJT Start + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead +;MJT End + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + +#***************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR rzr_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,R1TT5Z+FR2 + WL 3,R1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR rzr_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 22,999,80h,50h,90000h,TGT_CHEST,0,57,-15 + + WL 3,R3PN5A+FR1 + WL 3,R3PN5A+FR2 + WL 3,R3PN5A+FR3 + .word ANI_OFFSET,0,45,0 ;x,y,z + WL 13,R3PN5A+FR4 +; .word ANI_WAITHITGND + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + +; WLW ANI_ATTCHIMAGE,D4PN5L+FR4,10 ;image, zoff (priority) + WL 3,R3PN5A+FR5 + + WL ANI_CODE,DO_CROWD_CHEER + + .word ANI_ATTACK_OFF + WL ANI_CODE,HIT_THE_MAT + .word ANI_BOUNCE,2 +; WLW ANI_ATTCHIMAGE,D4PN5L+FR5,10 ;image, zoff (priority) + WL 4,R3PN5A+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + .word ANI_OFFSET,0,0,20 ;x,y,z + WL 4,R3PN5A+FR5 + WL ANI_CODE,win_announce +; WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + WL 40,R3PN5A+FR5 + +;???? IS THIS WHERE IT GOES ? + .word ANI_LOOP + +;Do another ground hit on opponent + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 4,R5RV5A+FR2 + WL 4,R5RV5A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 7,R5RV5A+FR4 + WL 7,R5RV5A+FR5 + WL 7,R5RV5A+FR6 + WL 7,R5RV5A+FR7 + WL 7,R5RV5A+FR8 + WL 7,R5RV5A+FR9 + WL 7,R5RV5A+FR10 + WL 7,R5RV5A+FR11 + WL 7,R5RV5A+FR12 + WL 7,R5RV5A+FR13 + WL 7,R5RV5A+FR14 + WL 30,R5RV5A+FR15 + WL 6,R5RV5A+FR16 + WL 6,R5RV5A+FR17 + WL 1000,R5RV5A+FR18 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/RZRSEQ3.ASM b/BACKUP/RZRSEQ3.ASM new file mode 100644 index 0000000..17278a5 --- /dev/null +++ b/BACKUP/RZRSEQ3.ASM @@ -0,0 +1,1611 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/12/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "rzrseq3.asm" + .title "Razor Ramon animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "display.equ" + .include "damage.equ" + .include "razorimg.h" + + .include "miscimg.glo" ;temp!!! + +****************************************************************************** +* EXTERNAL REFERENCES + + ;BRET + .ref hrt_hitonground_anim,hrt_3_head_held_anim + .ref hrt_flyout_anim,hrt_break_neck2_anim + .ref H2AH3A,H2AM3A,H2CP3A,H3BF3A,H3DU3A,H3FR3A,H3GU4A + .ref H3HB3A,H3RR3Z,H3PP3X + + ;BAM BAM + .ref bam_hitonground_xflip_anim,bam_break_neck2_anim + .ref bam_flyout_anim,bam_3_head_held_anim + .ref bam_hitonground_anim + .ref B3BF3C,B3DU3A,B3GU4A,B3RR3Z,B4TD3B,B4BF3A,B3HB3A + .ref B3FD3C,B3PP3Q + + ;DOINK + .ref dnk_hitonground_anim,dnk_break_neck2_anim + .ref dnk_flyout_anim,dnk_3_head_held_anim + .ref D3AE3B,D3BF3A,D3DU3A,D3FD3E,D3GU4A,D3HT3Z,D3OS3A + .ref D3PM4C,D3RR3Z,D3SA3A,D3UC3A,D4SK4A,D3AK3A,D3PD3Z + + ;LEX + .ref lex_hitonground_anim,lex_flyout_anim + .ref lex_3_head_held_anim,lex_break_neck2_anim + .ref L3BF3B,L3CP3X,L3DU3A,L3FH3A,L4AM4B,L3BF3A,L4AH4B + .ref L3RR3Z,L3FD3B,L3GP3Z + + ;RAZOR + .ref rzr_hitonground_anim,rzr_flyout_anim + .ref rzr_facedown_getup_anim,rzr_break_neck2_anim + .ref rzr_dizzy_anim,rzr_faceup_getup_anim,rzr_stand4_anim + .ref rzr_faceup_getup2_anim + + ;SHAWN + .ref shn_hitonground_anim,shn_flyout_anim + .ref shn_3_head_held_anim,shn_break_neck2_anim + .ref S3BF3A,S3DU3A,S3GU4A,S3OS3X,S4BF3A,S4AH3D,S3RR3Z + .ref S3FD3X,S3GP3X + + ;TAKER + .ref und_hitonground_anim,und_flyout_anim,und_3_head_held_anim + .ref und_break_neck2_anim + .ref U3AE4A,U3CP3B,U3DU3B,U3FH3A,U4AM4C,U4BF3Z,U4BF3A + .ref U3RR3Z,U3PP3X,U3GP3X + + ;YOKO + .ref yok_hitonground_anim,yok_break_neck2_anim + .ref yok_3_head_held_anim + .ref Y3BF3A,Y3GU2A,Y3LB3A,Y3FL3W,Y3FD3A,Y3RL1A,Y3RR3Z + .ref Y3FD3N,Y3PP3Q + + ;MISC + .ref CALL_MISSES,am_I_dizzy,make_norm,make_white,tbukl_flip + .ref set_my_pal,set_position,set_skeleton_pal,DO_SNAP_MESS + .ref start_smoke,SMALL_BOUNCE,CALL_SETUP,halve_bk_xvel + .ref set_xdrift,DO_PILE_MESS,B4CD3A,HIT_THE_MAT + .ref CALL_SPECIAL_MOVE + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +;#***************************************************************************** +; +; SUBR rzr_flip_fall_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +;; attacker sequence +; .word ANI_ATTACK_ON, AMODE_PUPPET,41,96,37,12 ;mode,x,y,w,h +; WL 6,R4FG3B+FR1 +; .word ANI_ATTACK_OFF +; +;;check if we hit +; WL 6,R4FG3B+FR2 +; WL 6,R4FG3B+FR3 +; WL 6,R4FG3B+FR4 +; WL 6,R3KT3A+FR1 +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED +; .word ANI_ATTACHZ,0,0,-4 +; +; WLW ANI_SUPERSLAVE,#puppet_tbl,0 +; WL 6,R3KT3A+FR2 +; WLW ANI_SUPERSLAVE,#puppet_tbl,1 +; WL 6,R3KT3A+FR3 +; WLW ANI_SUPERSLAVE,#puppet_tbl,2 +; WL 6,R3KT3A+FR5 +; WLW ANI_SUPERSLAVE,#puppet_tbl,3 +; WL 6,R3KT3A+FR6 +; WLW ANI_SUPERSLAVE,#puppet_tbl,4 +; WL 6,R3KT3A+FR8 +; WLW ANI_SUPERSLAVE,#puppet_tbl,5 +; WL 6,R3KT3A+FR9 +; WLW ANI_SUPERSLAVE,#puppet_tbl,6 +; WL 6,R3KT3A+FR10 +; WLW ANI_SUPERSLAVE,#puppet_tbl,7 +; WL 6,R3KT3A+FR11 +; WL 6,R3KT3A+FR12 +; WL 6,R3GU4A+FR3 +; WL 6,R3GU4A+FR4 +; WL 6,R3GU4A+FR5 +; WL 6,R3GU4A+FR6 +; WL 6,R3GU4A+FR7 +; WL 6,R3GU4A+FR8 +; WL 6,R3GU4A+FR9 +; +; WL ANI_CODE,#create_img +; +; WL 6,R3GU4A+FR10 +; +;;;; WL ANI_SLAVEANIM,#slaveanim_tbl +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END +; +; +;#puppet_tbl +; .long #Bret +; .long #Razor +; .long #Taker +; .long #Yokozuna +; .long #Shawn +; .long #BamBam +; .long #Doink +; .long #Adam +; .long #Lex +;#Bret +; .long 0 +;#Razor +; LWWW R3TD3A+FR1,79,7,0 +; LWWW R3TD3A+FR2,90,9,0 +; LWWW R3TD3A+FR3,56,2,0 +; LWWW R3TD3A+FR5,13,-7,0 +; LWWW R3TD3A+FR6,-29,5,0 +; LWWW R3TD3A+FR8,-91,18,0 +; LWWW R3TD3A+FR9,-140,2,0 +;; LWWW R3TD3A+FR10,-152,1,1 +;#Taker +; .long 0 +;#Yokozuna +; .long 0 +;#Shawn +; .long 0 +;#BamBam +; .long 0 +;#Doink +; .long 0 +;#Adam +; .long 0 +;#Lex +; .long 0 +; +; +; +;#create_img +; +; rets +;; .if 0 +;; move *a13(ATTACH_IMG1),a8,L +;; jrz #ok +;; +;; calla DELOBJA8 +;; +;;#ok +;; +;; move *a13(OBJ_XPOS),a0,L ;x val +;; movi Y_SCALE_MULTIPLIER,a14 +;; move *a13(OBJ_ZPOSINT),a1 +;; mpyu a14,a1 ;y val +;;; move *a13(OBJ_YPOS),a14,L +;;; sub a14,a1 +;; +;; movi WWFlogo,a2 ;* image +;; move *a13(OBJ_PRIORITY),a3 ;make shadow 1 less +;; movi DMAWNZ,a4 ;DMA flags +;; clr a5 ;OID +;; clr a6 ;x vel +;; clr a7 ;y vel +;; calla BEGINOBJ +;; move a8,*a13(ATTACH_IMG1),L +;; +;; move *a13(OBJ_YPOSINT),a11 ;y offset +;; move *a8(OIMG),a0,L +;; move *a0(IANIOFFY),a1 +;; add a11,a1 ;add in Y pos & ani-offset +;; move a1,*a8(ODYOFF) ;display y offset +;; .endif +; +; rets +; + +#***************************************************************************** +* +* RUG SHAKE + + SUBR rzr_2_rugshake_anim + SUBR rzr_4_rugshake_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,16 + + WL 4,R3RG3B+FR1 + WL 4,R3RG3B+FR2 + WL 4,R3RG3B+FR3 + WL 4,R3RG3B+FR4 + + .word ANI_ATTACK_ON, AMODE_PUPPET,38,2,400,38 + WL 4,R3RG3B+FR5 + .word ANI_ATTACK_OFF + +;check if we hit + WL ANI_IFNOTSTATUS,#missed + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,-4 + + .word ANI_SET_RPTCOUNT,5 + .word ANI_SETOPPMODE,MODE_NOSHADOW +#loop + .word ANI_CLR_BUTCOUNT + + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR6,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR7,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR8,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR9,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR10,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR11,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR12,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR13,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR14,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR15,#puppet_tbl,9 + + .word ANI_DEBRISAT,200,1,0,8,0 ;%chance,tbl index,x,y,z off + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,2 + WL ANI_CODE,#impact_sound + .word ANI_DAMAGEOPP,D_RUGSLAM + + WWLLW ANI_SUPERSLAVE2,4,R3RG3B+FR16,#puppet_tbl,10 + + .word ANI_DEC_RPTCOUNT + + ;first two are free + WWL ANI_IF_RPTCOUNT_GE,4,#loop + + ;limit of 5 hits + WL ANI_IFNOT_RPTCOUNT,#done + + ;must hit super punch three times between hits to continue + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,3,#done + + WL ANI_GOTO,#loop + +#done + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_SLAVEANIM,#release_tbl + .word ANI_CLROPPMODE,MODE_NOSHADOW + .word ANI_DETACH + WL 4,R3RG3B+FR4 + WL 4,R3RG3B+FR3 + WL 4,R3RG3B+FR2 + WL 4,R3RG3B+FR1 + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 4,R3RG3B+FR4 + WL 4,R3RG3B+FR3 + WL 4,R3RG3B+FR2 + WL 4,R3RG3B+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBRP #impact_sound + + move *a13(ATTACH_PROC),a0,L + jrz #done + WRSNDX a0,RUGSLAM_YELL,RUGSLAM_IMPACT +#x rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2CP3A+FR8,31,-50,1 + LWWW H3RR3Z+FR2,32,-30,1 + LWWW H3RR3Z+FR3,50,-31,1 + LWWW H3RR3Z+FR4,46,2,1 + LWWW H3RR3Z+FR5,16,23,1 + LWWW H3RR3Z+FR6,3,101,1 + LWWW H3RR3Z+FR7,7,110,1 + LWWW H3RR3Z+FR8,-21,97,1 + LWWW H3RR3Z+FR9,47,86,1 + LWWW H3RR3Z+FR10,60,-13,1 + LWWW H2CP3A+FR8,32,-50,1 +#Razor + LWWW R3RR3Z+FR2,29,-49,1 + LWWW R3RR3Z+FR3,32,-37,1 + LWWW R3RR3Z+FR4,43,-38,1 + LWWW R3RR3Z+FR5,40,-2,1 + LWWW R3RR3Z+FR6,22,53,1 + LWWW R3RR3Z+FR7,6,104,1 + LWWW R3RR3Z+FR8,7,130,1 + LWWW R3RR3Z+FR8,31,127,1 + LWWW R3RR3Z+FR9,49,92,1 + LWWW R3RR3Z+FR1,59,7,1 + LWWW R3RR3Z+FR2,30,-49,1 +#Taker + LWWW U3CP3B+FR1,26,-46,1 + LWWW U3RR3Z+FR2,33,-25,1 + LWWW U3RR3Z+FR3,32,-17,1 + LWWW U3RR3Z+FR4,38,-3,1 + LWWW U3RR3Z+FR5,15,27,1 + LWWW U3RR3Z+FR6,4,100,1 + LWWW U3RR3Z+FR7,-33,119,1 + LWWW U3RR3Z+FR8,-50,94,1 + LWWW U3RR3Z+FR9,47,106,1 + LWWW U3RR3Z+FR10,62,-1,1 + LWWW U3CP3B+FR1,27,-46,1 +#Yokozuna + LWWW Y3RL1A+FR1,25,-36,1 + LWWW Y3RR3Z+FR2,39,-30,1 + LWWW Y3RR3Z+FR3,40,-30,1 + LWWW Y3RR3Z+FR4,39,13,1 + LWWW Y3RR3Z+FR5,10,27,1 + LWWW Y3RR3Z+FR6,1,105,1 + LWWW Y3RR3Z+FR7,1,116,1 + LWWW Y3RR3Z+FR8,-32,77,1 + LWWW Y3RR3Z+FR9,45,84,1 + LWWW Y3RR3Z+FR10,51,11,1 + LWWW Y3RL1A+FR1,26,-36,1 +#Shawn + LWWW S3RR3Z+FR2,23,-48,1 + LWWW S3RR3Z+FR3,30,-36,1 + LWWW S3RR3Z+FR4,49,-34,1 + LWWW S3RR3Z+FR5,45,0,1 + LWWW S3RR3Z+FR6,19,30,1 + LWWW S3RR3Z+FR7,7,92,1 + LWWW S3RR3Z+FR8,-13,110,1 + LWWW S3RR3Z+FR9,-22,97,1 + LWWW S3RR3Z+FR10,39,82,1 + LWWW S3RR3Z+FR10,66,61,1 + LWWW S3RR3Z+FR2,24,-48,1 +#BamBam + LWWW B3RR3Z+FR2,34,-42,1 + LWWW B3RR3Z+FR3,29,-45,1 + LWWW B3RR3Z+FR4,45,-24,1 + LWWW B3RR3Z+FR5,42,4,1 + LWWW B3RR3Z+FR6,25,22,1 + LWWW B3RR3Z+FR7,0,120,1 + LWWW B3RR3Z+FR8,-5,134,1 + LWWW B3RR3Z+FR9,-4,99,1 + LWWW B3RR3Z+FR10,53,76,1 + LWWW B3RR3Z+FR1,61,-14,1 + LWWW B3RR3Z+FR2,35,-42,1 +#Doink + LWWW D3GU4A+FR1,36,-50,1 + LWWW D3RR3Z+FR1,33,-37,1 + LWWW D3RR3Z+FR2,49,-35,1 + LWWW D3RR3Z+FR3,49,1,1 + LWWW D3RR3Z+FR4,22,48,1 + LWWW D3RR3Z+FR5,4,99,1 + LWWW D3RR3Z+FR6,1,107,1 + LWWW D3RR3Z+FR6,26,104,1 + LWWW D3RR3Z+FR7,45,93,1 + LWWW D3UC3A+FR5,68,12,0 + LWWW D3GU4A+FR1,37,-50,1 +#Adam + .long 0 +#Lex + LWWW L3RR3Z+FR1,31,-51,1 + LWWW L3RR3Z+FR2,29,-39,1 + LWWW L3RR3Z+FR3,44,-35,1 + LWWW L3RR3Z+FR4,47,-1,1 + LWWW L3RR3Z+FR5,19,18,1 + LWWW L3RR3Z+FR6,4,72,1 + LWWW L3RR3Z+FR7,-1,105,1 + LWWW L3RR3Z+FR8,11,92,1 + LWWW L3RR3Z+FR9,48,59,1 + LWWW L3RR3Z+FR9,63,39,1 + LWWW L3RR3Z+FR10,40,-40,1 + +#release_tbl + .long hrt_hitonground_anim,rzr_hitonground_anim + .long und_hitonground_anim,yok_hitonground_anim + .long shn_hitonground_anim,bam_hitonground_anim + .long dnk_hitonground_anim,0,lex_hitonground_anim + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR rzr_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,R4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,R4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,R4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,R4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,R4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,R4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,R4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + +;MJT Start + + WL 1,R4ST4G+FR1 + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref rzr_fall_back_anim + + WL ANI_CHANGEANIM,rzr_fall_back_anim + .word ANI_END + +#nodead +;MJT End + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 0d0dh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + + +****************************************************************************** + + +#***************************************************************************** + + SUBR rzr_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,R3BF3A+FR1 + WL 4,R3BF3A+FR2 + + WL 4,R3BF3A+FR4 + + WL 4,R3BF3A+FR5 + WL 4,R3BF3A+FR6 + WL 4,R3BF3A+FR7 + WL 4,R3BF3A+FR9 + WL 4,R3BF3A+FR10 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR rzr_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,R3HB3A+FR2 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,R2AH2D+FR3 + WL 3,R2AH2D+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,R2AH2D+FR6 + WL 3,R2AH2D+FR7 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR rzr_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,R3HB3A+FR2 + WL 3,R1TT5Z+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* HIP TOSS + + SUBR rzr_2_hiptoss_anim + SUBR rzr_4_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + .word ANI_STARTATTACK,AT_PUPPET,8 + + .word ANI_ATTACK_ON, AMODE_PUPPET,19,61,39,16 + WWL ANI_WAITHITOPP,6,R4FT3A+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,2,R4FT3A+FR2 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + + ;got him + WL ANI_CODE,DO_SNAP_MESS + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,6,R4FT3A+FR2,#puppet_tbl,0 + + WL ANI_SET_YVEL,50000h + + WWLLW ANI_SUPERSLAVE2,5,R4FT3A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR4,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR5,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR6,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR7,#puppet_tbl,5 + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_DAMAGEOPP,D_BSLAM + + WWLLW ANI_SUPERSLAVE2,2,R4FT3A+FR8,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR9,#puppet_tbl,7 + + WL ANI_OPPOFFSET,#release_offsets + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#recover_tbl + .word ANI_DETACH + + .word ANI_OFFSET,-40,0,0 + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +******** +* #include "r_hpsl.img" + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AH3A+FR5,43,11,0 + LWWW H2AM3A+FR1,25,27,0 + LWWW H2AM3A+FR7,-4,17,0 + LWWW H3FR3A+FR2,-25,24,0 + LWWW H3FR3A+FR3,-22,28,0 + LWWW H3FR3A+FR4,-31,20,0 + LWWW H3FR3A+FR5,-56,26,0 + LWWW H2CP3A+FR8,-130,-17,1 +#Razor + LWWW R3TD3A+FR1,36,7,0 + LWWW R3TD3A+FR3,16,8,0 + LWWW R3TD3A+FR4,-21,18,0 + LWWW R3TD3A+FR5,-17,20,0 + LWWW R3TD3A+FR6,-18,12,0 + LWWW R3TD3A+FR7,-26,28,0 + LWWW R3TD3A+FR8,-59,34,0 + LWWW R3GU2A+FR1,-134,-15,1 +#Taker + LWWW U3AE4A+FR1,41,23,0 + LWWW U4AM4C+FR4,18,15,0 + LWWW U3FH3A+FR1,13,9,1 + LWWW U3FH3A+FR2,-13,36,1 + LWWW U3FH3A+FR3,-26,21,1 + LWWW U3FH3A+FR4,-48,29,1 + LWWW U3FH3A+FR5,-72,50,1 + LWWW U3CP3B+FR1,-138,-11,1 +#Yokozuna + LWWW Y3FL3W+FR1,39,10,0 + LWWW Y3FL3W+FR2,9,17,0 + LWWW Y3FL3W+FR3,-34,25,0 + LWWW Y3FL3W+FR4,-32,38,0 + LWWW Y3FL3W+FR5,-23,32,0 + LWWW Y3FL3W+FR6,-57,36,0 + LWWW Y3FL3W+FR7,-78,36,0 + LWWW Y3FD3A+FR7,-117,9,0 +#Shawn + LWWW S3OS3X+FR2,25,8,1 + LWWW S3OS3X+FR4,1,23,1 + LWWW S3OS3X+FR5,-41,27,1 + LWWW S3OS3X+FR6,-37,57,1 + LWWW S3OS3X+FR7,-25,48,1 + LWWW S3OS3X+FR8,-27,45,1 + LWWW S3OS3X+FR9,-72,50,1 + LWWW S3OS3X+FR10,-113,-7,1 +#BamBam + LWWW B4TD3B+FR1,36,0,0 + LWWW B4TD3B+FR3,16,10,0 + LWWW B4TD3B+FR4,-10,19,0 + LWWW B4TD3B+FR5,-12,50,0 + LWWW B4TD3B+FR6,-12,53,0 + LWWW B4TD3B+FR7,-37,45,0 + LWWW B4TD3B+FR8,-52,47,0 + LWWW B4TD3B+FR9,-101,2,0 +#Doink + LWWW D3AE3B+FR8,52,10,0 + LWWW D3PM4C+FR2,10,16,0 + LWWW D3OS3A+FR1,1,19,0 + LWWW D3OS3A+FR3,-30,27,0 + LWWW D3OS3A+FR4,-27,19,0 + LWWW D3OS3A+FR6,-28,34,0 + LWWW D3FD3E+FR2,-59,16,0 + LWWW D3SA3A+FR2,-118,-10,1 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR2,51,14,0 + LWWW L3FH3A+FR1,21,20,0 + LWWW L3FH3A+FR2,-8,13,0 + LWWW L3FH3A+FR3,-9,33,0 + LWWW L3FH3A+FR4,-6,25,0 + LWWW L3FH3A+FR5,-16,20,0 + LWWW L3FH3A+FR6,-48,31,0 + LWWW L3CP3X+FR1,-129,-10,1 + +* +******** + +#release_offsets + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 20,0 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 1 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#recover_tbl + .long hrt_hitonground_anim,rzr_hitonground_anim + .long und_hitonground_anim,yok_hitonground_anim + .long shn_hitonground_anim,bam_hitonground_xflip_anim + .long dnk_hitonground_anim,0,lex_hitonground_anim + +#flyout_tbl + .long hrt_flyout_anim,rzr_flyout_anim + .long und_flyout_anim,0 + .long shn_flyout_anim,bam_flyout_anim + .long dnk_flyout_anim,0,lex_flyout_anim + +#****************************************************************************** + + SUBR rzr_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,16 + + WL 2,R1TT5Z+FR2 + WL 2,R1TT5Z+FR3 + + SUBR rzr_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_RAWSOUND,2055 ;big cheer #1 +; .word ANI_CHEER,3 + + .word ANI_STARTATTACK,AT_PUPPET,12 + + WL 4,R3RG3B+FR2 + + LEAPATOPP 8,999,80,80,30000h,TGT_HEAD,26,6,-2 + + WL 4,R3RG3B+FR3 + WL 4,R3RG3B+FR4 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET,28,0,23,25 ;mode,x,y,w,h + WL 4,R3RG3B+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + WL ANI_CODE,CALL_SETUP + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + .word ANI_DAMAGEOPP,D_HAIR_PICKUP + + WWLLW ANI_SUPERSLAVE2,4,R3RG3B+FR6,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,R3RG3Z+FR1,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,R3RG3Z+FR2,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,R3RG3Z+FR3,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,R4GH3A+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,R4GH3A+FR7,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 3,R4GH3A+FR7 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,R3RG3B+FR5 + WL 4,R3RG3B+FR4 + WL 4,R3RG3B+FR3 + WL 4,R3RG3B+FR2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,21,-36,0 + LWWW H3GU4A+FR3,35,-40,0 + LWWW H3DU3A+FR3,31,-31,1 + LWWW H3DU3A+FR4,34,-30,1 + LWWW H3DU3A+FR5,55,-42,1 + LWWW H3BF3A+FR1,65,-41,0 + .long 0 +#Razor + LWWW R3GU4A+FR2,27,-39,1 + LWWW R3GU4A+FR3,27,-35,0 + LWWW R3GU4A+FR5,37,-39,0 + LWWW R3DU3B+FR2,31,-40,1 + LWWW R3DU3B+FR4,59,-38,1 + LWWW R3BF3A+FR4,70,-40,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,26,-32,1 + LWWW U3DU3B+FR5,24,-33,1 + LWWW U3DU3B+FR6,28,-33,1 + LWWW U3DU3B+FR8,34,-30,1 + LWWW U3DU3B+FR10,75,-32,1 + LWWW U4BF3Z+FR5,65,-20,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,23,-27,0 + LWWW Y3GU2A+FR3,30,-25,0 + LWWW Y3GU2A+FR6,15,-35,0 + LWWW Y3GU2A+FR9,36,-37,0 + LWWW Y3GU2A+FR12,68,-31,0 + LWWW Y3BF3A+FR1,72,-29,0 + .long 0 +#Shawn + LWWW S3GU4A+FR1,23,-38,1 + LWWW S3GU4A+FR2,26,-33,0 + LWWW S3GU4A+FR4,37,-32,0 + LWWW S3GU4A+FR5,34,-36,0 + LWWW S3DU3A+FR2,63,-45,1 + LWWW S3BF3A+FR1,56,-40,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,29,-25,0 + LWWW B3GU4A+FR4,35,-32,0 + LWWW B3GU4A+FR6,26,-28,0 + LWWW B3GU4A+FR7,25,-41,0 + LWWW B3DU3A+FR2,64,-38,1 + LWWW B3BF3C+FR5,74,-32,0 + .long 0 +#Doink + LWWW D3DU3A+FR2,25,-31,1 + LWWW D3DU3A+FR3,36,-34,1 + LWWW D3DU3A+FR5,30,-30,1 + LWWW D3DU3A+FR8,34,-39,1 + LWWW D3HT3Z+FR1,61,-39,1 + LWWW D3BF3A+FR2,74,-39,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3DU3A+FR2,30,-35,1 + LWWW L3DU3A+FR4,14,-26,1 + LWWW L3DU3A+FR6,20,-33,1 + LWWW L3DU3A+FR7,27,-27,1 + LWWW L3DU3A+FR9,68,-42,1 + LWWW L3BF3B+FR2,69,-43,0 + .long 0 + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR rzr_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SHAKECORNER + + .word ANI_OFFSET,-2,7,-4 ;-10,17,-16, distributed over 5 frames + WL 3,R2CT2E+FR1 + .word ANI_OFFSET,-2,5+3,-4 + WL 3,R2CT2E+FR2 + .word ANI_OFFSET,-2,5+3,-4 + WL 3,R2CT2E+FR3 + .word ANI_OFFSET,-2,-1+3,-4 + WL 3,R2CT2E+FR4 + .word ANI_OFFSET,-2,6+3,0 + WL 3,R2CT2E+FR5 + .word ANI_SHAKECORNER + .word ANI_OFFSET,0,12,0 + WL 3,R2CT2E+FR6 + .word ANI_OFFSET,0,3,0 + WL 3,R2CT2E+FR7 + .word ANI_OFFSET,0,1,0 + WL 3,R2CT2E+FR8 + .word ANI_OFFSET,0,-1,0 + WL 3,R2CT2E+FR9 + .word ANI_OFFSET,0,8,0 + WL 3,R2CT2E+FR10 + .word ANI_OFFSET,0,12,0 + WL 3,R2CT2E+FR11 + .word ANI_SHAKECORNER + .word ANI_OFFSET,0,1,0 + WL 3,R2CT2E+FR2 + .word ANI_OFFSET,0,2,0 + WL 3,R2CT2E+FR3 + .word ANI_OFFSET,0,6,0 + WL 3,R2CT2E+FR4 + .word ANI_OFFSET,0,7,0 + WL 3,R2CT2E+FR5 + .word ANI_OFFSET,0,9,0 + WL 3,R2CT2E+FR6 + + .word ANI_OFFSET,-4,-2,0 + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + +#repeat + WL 5,R4SB4A+FR1 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR2 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR3 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR4 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR5 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR6 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR7 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR8 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR9 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR10 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR rzr_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SHAKECORNER + .word ANI_OFFSET,4,2,0 + WL 3,R2CT2E+FR6 + .word ANI_OFFSET,0,-9,0 + WL 3,R2CT2E+FR5 + .word ANI_OFFSET,0,-7,0 + WL 3,R2CT2E+FR4 + .word ANI_OFFSET,0,-6,0 + WL 3,R2CT2E+FR3 + .word ANI_OFFSET,0,-2,0 + WL 3,R2CT2E+FR2 + .word ANI_SHAKECORNER + .word ANI_OFFSET,0,-1,0 + WL 3,R2CT2E+FR11 + .word ANI_OFFSET,0,-12,0 + WL 3,R2CT2E+FR10 + .word ANI_OFFSET,0,-8,0 + WL 3,R2CT2E+FR9 + .word ANI_OFFSET,0,1,0 + WL 3,R2CT2E+FR8 + .word ANI_OFFSET,0,-1,0 + WL 3,R2CT2E+FR7 + .word ANI_OFFSET,0,-3,0 + .word ANI_SHAKECORNER + WL 3,R2CT2E+FR6 + .word ANI_OFFSET,0,-12,0 + WL 3,R2CT2E+FR5 + .word ANI_OFFSET,2,-9,0 + WL 3,R2CT2E+FR4 + .word ANI_OFFSET,2,-2,4 + WL 3,R2CT2E+FR3 + .word ANI_OFFSET,2,-8,4 + WL 3,R2CT2E+FR2 + .word ANI_OFFSET,2,-8,4 + WL 3,R2CT2E+FR1 + .word ANI_OFFSET,2,-7,4 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#****************************************************************************** + + SUBR rzr_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,R4CO4A+FR1 + WL 4,R4CO4A+FR2 + WL 4,R4CO4A+FR3 + WL 4,R4CO4A+FR4 + WL 15,R4CO4A+FR5 + WL 4,R4CO4A+FR6 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR8 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR6 + WL 4,R4CO4A+FR5 + WL 4,R4CO4A+FR6 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR8 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR6 + WL 15,R4CO4A+FR5 + WL 4,R4CO4A+FR4 + WL 4,R4CO4A+FR3 + WL 4,R4CO4A+FR2 + WL 4,R4CO4A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,rzr_stand4_anim + .word ANI_END + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR rzr_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 2,R3MS3Q+FR1 + WL ANI_SET_YVEL,80000h + WL 3,R3MS3Q+FR2 + WL 3,R3MS3Q+FR3 + WL 3,R3MS3Q+FR4 + .word ANI_WAITHITGND + .word ANI_END + + +* Head slams into mat +;From head slam + + SUBR rzr_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 2,R3MS3Q+FR1 + WL ANI_SET_YVEL,40000h + WL 3,R3MS3Q+FR2 + WL 3,R3MS3Q+FR3 + WL 3,R3MS3Q+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,R3MS3Q+FR2 + WL 3,R3MS3Q+FR3 + WL 3,R3MS3Q+FR4 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 2,R3RL1B+FR6 ;Face down + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + .word ANI_END + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR rzr_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,12 + WL 3,R4GH3A+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 9,999,60,40,90000h,TGT_HEAD,56,93,8 + WL ANI_CODE,halve_bk_xvel + WL 3,R4GH3A+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,40,80,37,23 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,6,R4GH3A+FR3 + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missed + +;got him + + WL ANI_CODE,CALL_SETUP + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,R4GH3A+FR3,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,R4GH3A+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,R4GH3A+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,R4GH3A+FR7,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 4,R4GH3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 25,R4GH3A+FR3 + WL 3,R4GH3A+FR2 + WL 3,R4GH3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H2AH3A+FR1,53,7,0 + LWWW H3HB3A+FR3,68,-7,0 + LWWW H3HB3A+FR2,59,-14,0 + LWWW H3HB3A+FR1,63,-39,0 + .long 0 +#Razor + LWWW R3HB3A+FR3,71,-10,0 + LWWW R3HB3A+FR3,71,-4,0 + LWWW R3HB3A+FR2,72,-24,0 + LWWW R3BF3A+FR1,68,-41,0 + .long 0 +#Taker + LWWW U4AM4C+FR2,57,-3,0 + LWWW U4BF3A+FR2,66,-1,0 + LWWW U4BF3A+FR3,44,-14,0 + LWWW U4BF3Z+FR3,68,-28,0 + .long 0 +#Yokozuna + LWWW Y3LB3A+FR2,74,-6,0 + LWWW Y3LB3A+FR2,74,0,0 + LWWW Y3LB3A+FR9,60,-24,0 + LWWW Y3BF3A+FR1,72,-29,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,54,-7,0 + LWWW S4AH3D+FR5,54,-1,0 + LWWW S4BF3A+FR2,63,-16,0 + LWWW S4BF3A+FR3,49,-27,0 + .long 0 +#BamBam + LWWW B4BF3A+FR1,79,-6,0 + LWWW B4BF3A+FR1,79,0,0 + LWWW B3HB3A+FR2,71,-30,0 + LWWW B3BF3C+FR5,69,-33,0 + .long 0 +#Doink + LWWW D3AK3A+FR3,51,5,0 + LWWW D3AK3A+FR3,52,10,0 + LWWW D3AK3A+FR2,62,-10,0 + LWWW D3BF3A+FR1,67,-39,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,49,-6,0 + LWWW L3BF3A+FR1,72,-4,1 + LWWW L3BF3A+FR2,69,-19,1 + LWWW L3BF3B+FR5,65,-36,0 + .long 0 + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#***************************************************************************** +* +* #3 PILEDRIVER + +#yoff equ 50 + + SUBR rzr_3_pile_driver_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ATTACK_ON,AMODE_PUPPET,32,25,66,21 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,R3PG3B+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + + ;got him + WL ANI_CODE,DO_PILE_MESS + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,10,R3PG3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR4,#puppet_tbl,3 + + .word ANI_OFFSET,0,#yoff,0 + WL ANI_SET_YVEL,70000h + WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,5,R3PG3B+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR7,#puppet_tbl,6 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER + WL ANI_CODE,CALL_SPECIAL_MOVE + + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR8,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR9,#puppet_tbl,8 + + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + .word ANI_BOUNCE,4 + + WL 1,R3PG3B+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 12,R3PG3B+FR9 + WL 3,R3PG3B+FR10 + + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 4,R3PG3B+FR1 + WL 4,R3PG3B+FR2 + WL 4,R3PG3B+FR3 + WL 4,R3PG3B+FR4 + + WL ANI_SET_YVEL,30000h + + WL 3,R3PG3B+FR5 + + WL 4,B4CD3A+FR3 + WL 4,B4CD3A+FR4 + WL 4,B4CD3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 4,B4CD3A+FR6 + + WL 4,B4CD3A+FR6 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WL 3,R3PG3B+FR9 + WL 3,R3PG3B+FR10 + + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + + +#set_opp_xflip + move *a13(ATTACH_PROC),a0,L + + move *a0(OBJ_CONTROL),a14 + xori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3PP3X+FR1,13,-38,0 + LWWW H3PP3X+FR2,2,2,0 + LWWW H3PP3X+FR3,2,27,0 + LWWW H3PP3X+FR4,5,28,0 + LWWW H3PP3X+FR5,14,44,0 + LWWW H3PP3X+FR6,10,52,0 + LWWW H3PP3X+FR6,10,53,0 + LWWW H3PP3X+FR7,15,13,0 + LWWW H3PP3X+FR8,21,-7,0 +#Razor + LWWW R3GP3Z+FR1,9,-31,0 + LWWW R3GP3Z+FR2,9,-20,0 + LWWW R3GP3Z+FR3,13,21,0 + LWWW R3GP3Z+FR4,20,42,0 + LWWW R3GP3Z+FR5,22,51,0 + LWWW R3GP3Z+FR6,26,56,0 + LWWW R3GP3Z+FR6,26,54,0 + LWWW R3GP3Z+FR7,23,31,0 + LWWW R3GP3Z+FR8,38,-8,0 +#Taker + LWWW U3PP3X+FR1,16,-38,1 + LWWW U3PP3X+FR2,16,-21,1 + LWWW U3PP3X+FR3,9,-12,1 + LWWW U3PP3X+FR4,2,4,1 + LWWW U3PP3X+FR5,15,37,1 + LWWW U3PP3X+FR6,21,64,1 + LWWW U3PP3X+FR6,22,63,1 + LWWW U3GP3X+FR1,18,7,1 + LWWW U3GP3X+FR2,31,-16+5,1 +#Yokozuna + LWWW Y3PP3Q+FR1,16,-30,0 + LWWW Y3PP3Q+FR2,12,-22,0 + LWWW Y3PP3Q+FR3,16,-15,0 + LWWW Y3PP3Q+FR4,19,-7,0 + LWWW Y3PP3Q+FR6,13,17,0 + LWWW Y3PP3Q+FR7,12,27,0 + LWWW Y3PP3Q+FR7,13,27,0 + LWWW Y3FD3N+FR2,15,16,0 + LWWW Y3FD3N+FR3,24,14,0 +#Shawn + LWWW S3GP3X+FR1,19,-43,0 + LWWW S3GP3X+FR2,12,-27,0 + LWWW S3GP3X+FR3,15,-8,0 + LWWW S3GP3X+FR4,16,30,0 + LWWW S3GP3X+FR5,20,41,0 + LWWW S3OS3X+FR8,24,36,1 + LWWW S3OS3X+FR8,24,34,1 + LWWW S3FD3X+FR2,22,21,0 + LWWW S3GP3X+FR6,28,-6,0 +#BamBam + LWWW B3PP3Q+FR1,10,-34,0 + LWWW B3PP3Q+FR2,14,-12,0 + LWWW B3PP3Q+FR3,17,9,0 + LWWW B3PP3Q+FR4,19,28,0 + LWWW B3PP3Q+FR5,23,43,0 + LWWW B3PP3Q+FR6,16,52,0 + LWWW B3PP3Q+FR6,16,50,0 + LWWW B3PP3Q+FR7,17,25,0 + LWWW B3FD3C+FR1,22,2,0 +#Doink + LWWW D3PD3Z+FR1,14,-43,1 + LWWW D3PD3Z+FR2,13,-23,1 + LWWW D3PD3Z+FR3,13,0,1 + LWWW D3PD3Z+FR4,12,35,1 + LWWW D3PD3Z+FR5,10,47,1 + LWWW D3PD3Z+FR6,24,41,1 + LWWW D3PD3Z+FR7,24,39,1 + LWWW D3PD3Z+FR8,24,4,1 + LWWW D3PD3Z+FR9,34,-15,1 +#Adam + .long 0 +#Lex + LWWW L3GP3Z+FR1,12,-31,0 + LWWW L3GP3Z+FR2,13,-20,0 + LWWW L3GP3Z+FR3,16,-10,0 + LWWW L3GP3Z+FR4,12,7,0 + LWWW L3GP3Z+FR5,18,21,0 + LWWW L3GP3Z+FR6,22,38,0 + LWWW L3GP3Z+FR6,23,37,0 + LWWW L3FH3A+FR6,14,16,0 + LWWW L3FD3B+FR1,26,-8,0 + +#rollout_tbl + .long hrt_break_neck2_anim,rzr_break_neck2_anim + .long und_break_neck2_anim,yok_break_neck2_anim + .long shn_break_neck2_anim,bam_break_neck2_anim + .long dnk_break_neck2_anim,0,lex_break_neck2_anim + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/RZRSEQ4.ASM b/BACKUP/RZRSEQ4.ASM new file mode 100644 index 0000000..0d9b01e --- /dev/null +++ b/BACKUP/RZRSEQ4.ASM @@ -0,0 +1,1290 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jason Skiles +* Initiated: 26 Aug 94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "rzrseq4.asm" + .title "blocks, reactions to routine and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "razorimg.h" + + .include "display.equ" + .include "ring.equ" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;RAZOR + .ref rzr_3_head_held_anim + + ;MISC + .ref HIT_THE_MAT,SMALL_BOUNCE,ckzpos + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #2 BLOCK + HITBLOCK + + SUBR rzr_2_block_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 3,R2BK3E+FR1 + WL 3,R2BK3E+FR2 + WL 3,R2BK3E+FR3 +#hold_block + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + WL 3,R2BK3E+FR2 + WL 3,R2BK3E+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR rzr_2_hitblock_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + WL 3,R2BK3E+FR4 + WL 3,R2BK3E+FR5 + WL 3,R2BK3E+FR6 + WL 3,R2BK3E+FR7 + WL 3,R2BK3E+FR3 + WL ANI_GOTO,#hold_block + + +#************ +* +* #4 BLOCK + HITBLOCK + + SUBR rzr_4_block_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 3,R4BK3D+FR1 + WL 3,R4BK3D+FR2 + WL 3,R4BK3D+FR3 +#hold_block + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + WL 3,R4BK3D+FR2 + WL 3,R4BK3D+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR rzr_4_hitblock_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WL 3,R4BK3D+FR4 + WL 3,R4BK3D+FR5 + WL 3,R4BK3D+FR6 + WL 3,R4BK3D+FR7 + WL 3,R4BK3D+FR8 + WL 3,R4BK3D+FR3 + WL ANI_GOTO,#hold_block + + +#***************************************************************************** +* +* #4 LOSE BALANCE + +#FRICTION_VAL equ 3000h + + SUBR rzr_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,#FRICTION_VAL + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + + WL 5,R4LB4Z+FR1 + WL 5,R4LB4Z+FR2 + WL 5,R4LB4Z+FR3 + WL 5,R4LB4Z+FR4 + .word ANI_WAITHITGND + WL 3,R4LB4Z+FR4 + +; WL 4,R4LB4Z+FR5 +; WL 4,R4LB4Z+FR6 +; WL 4,R4LB4Z+FR7 +; WL 4,R4LB4Z+FR8 +; WL 4,R4LB4Z+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR rzr_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,R2AH2D+FR3 + WL 3,R2AH2D+FR5 + WL 3,R2AH2D+FR6 + WL 3,R2AH2D+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 HEAD HIT + + SUBR rzr_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,R4AH4C+FR3 + WL 3,R4AH4C+FR4 + WL 3,R4AH4C+FR5 + WL 3,R4AH4C+FR6 + WL 3,R4AH4C+FR7 + WL 3,R4AH4C+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + WL 3,R2AH2D+FR3 + .word ANI_DEBRIS,300,2,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,R2AH2D+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,R2AH2D+FR6 + WL 3,R2AH2D+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 HEAD HIT + + SUBR rzr_4_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,R4AH4C+FR3 + .word ANI_DEBRIS,300,2,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,R4AH4C+FR4 + WL 3,R4AH4C+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,R4AH4C+FR6 + WL 3,R4AH4C+FR7 + WL 3,R4AH4C+FR8 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_head_hit4_anim + +;From earslap + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; WLW ANI_SET_XVEL,-28000h,AM_HIT_REL +; WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 4,R4AH4C+FR4 + WL 4,R4AH4C+FR5 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + WL 4,R4AH4C+FR6 + WL 4,R4AH4C+FR7 + WL 4,R4AH4C+FR8 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR rzr_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,R2AH2D+FR3 + WL 15,R2AH2D+FR5 + WL 4,R2AH2D+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR rzr_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,R4AH4C+FR3 + WL 3,R4AH4C+FR4 + WL 14,R4AH4C+FR5 + WL 2,R4AH4C+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR rzr_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,R4AH4C+FR3 + WL 3,R4AH4C+FR4 + WL 14,R4AH4C+FR5 + WL 2,R4AH4C+FR6 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,rzr_dizzy_anim + .word ANI_END + + +#***************************************************************************** +* +* #2 HEAD HIT2 (hands on face) + + SUBR rzr_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + WL 4,R2AE2A+FR1 + WL 4,R2AE2A+FR2 + WL 4,R2AE2A+FR3 + WL 4,R2AE2A+FR4 + WL 4,R2AE2A+FR5 + WL 4,R2AE2A+FR6 + WL 4,R2AE2A+FR7 + WL 4,R2AE2A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************* +* +* #4 HEAD HIT2 (hands on face) + +;TODO (JS) This seq takes too long. Cut something. + + SUBR rzr_4_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + WL 3,R4AE4B+FR1 + WL 3,R4AE4B+FR2 + WL 3,R4AE4B+FR3 + WL 3,R4AE4B+FR4 + WL 3,R4AE4B+FR5 + WL 3,R4AE4B+FR6 + WL 3,R4AE4B+FR7 + WL 3,R4AE4B+FR8 + WL 3,R4AE4B+FR9 + WL 3,R4AE4B+FR10 + WL 3,R4AE4B+FR11 + WL 3,R4AE4B+FR12 +; WL 3,R4AE4B+FR13 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT (ends in dizzy) + + SUBR rzr_4_head_hit_dizzy_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,R4AE4B+FR1 + WL 3,R4AE4B+FR2 + WL 3,R4AE4B+FR3 + WL 3,R4AE4B+FR4 + WL 3,R4AE4B+FR5 + WL 3,R4AE4B+FR6 + WL 3,R4AE4B+FR7 + WL 3,R4AE4B+FR8 + WL 4,R4AE4B+FR9 + WL 4,R4AE4B+FR10 + WL 4,R4AE4B+FR11 + WL 4,R4AE4B+FR12 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,rzr_dizzy_anim + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR rzr_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R1TT5Z+FR2 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R1TT5Z+FR2 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 BODY HIT + + SUBR rzr_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R4AM3X+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R4AM3X+FR8 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,rzr_dizzy_anim + + .word ANI_END + + SUBR rzr_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R4AM3X+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R4AM3X+FR8 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + + WL ANI_CHANGEANIM,rzr_dizzy_anim + .word ANI_END + + SUBR rzr_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,R4AM3X+FR1 + WL 3,R4AM3X+FR2 + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R4AM3X+FR8 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,rzr_fall_back_anim + .word ANI_END + +#nodead + + WL ANI_CHANGEANIM,rzr_3_head_held_anim + + .word ANI_END + +;MJT Start +#***************************************************************************** +* +* FALL BACK + + SUBR rzr_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,70000h + + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[105,-18] ;Y,X of head + WL 3,R3FD3B+FR1 + WWL ANI_SETLONG,DEBRIS_X,[99,-38] ;Y,X of head + WL 3,R3FD3B+FR2 + .word ANI_OFFSET,0,53,0 ;x,y,z + WWL ANI_SETLONG,DEBRIS_X,[36,-44] ;Y,X of head + WL 3,R3FD3B+FR3 + WWL ANI_SETLONG,DEBRIS_X,[31,-44] ;Y,X of head + WL 3,R3FD3B+FR4 + WWL ANI_SETLONG,DEBRIS_X,[18,-48] ;Y,X of head + WL 3,R3FD3B+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,[11,-42] ;Y,X of head + WL 2,R3FD3B+FR6 + .word ANI_BOUNCE,5 + WL 1,R3FD3B+FR6 + WWL ANI_SETLONG,DEBRIS_X,[11,-42] ;Y,X of head + WL 3,R3FD3B+FR7 + WWL ANI_SETLONG,DEBRIS_X,[11,-42] ;Y,X of head + WL 3,R3FD3B+FR8 + WWL ANI_SETLONG,DEBRIS_X,[16,-42] ;Y,X of head + WL 3,R3FD3B+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_XFLIP + WL 3,R3GU2A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + + +;MJT End +#***************************************************************************** +* +* FALL BACK + + SUBR rzr_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,20000h + + WL ANI_CODE,ckzpos + + WL 3,R3FD3B+FR1 + WL 3,R3FD3B+FR2 + .word ANI_OFFSET,0,53,0 ;x,y,z + WL 3,R3FD3B+FR3 + WL 3,R3FD3B+FR4 + WL 3,R3FD3B+FR5 + WL 3,R3FD3B+FR8 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + + WL 3,R3HG3B+FR1 + .word ANI_OFFSET,-25,0,0 ;x,y,z + WL 3,R3GP3Z+FR8 + WL 3,R3HG3B+FR3 + WL 3,R3HG3B+FR4 + WL 3,R3HG3B+FR5 + WL 3,R3HG3B+FR6 +;MJT Start +; .word ANI_OFFSET,0,0,0 ;x,y,z +;MJT End + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 3,R3MS3Q+FR1 + WL 3,R3MS3Q+FR2 + WL 3,R3MS3Q+FR3 + WL 3,R3MS3Q+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + WL 30,R3RL1B+FR6 ;Face down + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR rzr_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WL 3,R3FD3B+FR1 + WL 3,R3FD3B+FR2 + .word ANI_OFFSET,0,53,0 ;x,y,z + WL 3,R3FD3B+FR3 + WL 3,R3FD3B+FR4 + WL 3,R3FD3B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + + .word ANI_FRICTION,3000h + + WL 2,R3FD3B+FR6 +; .word ANI_BOUNCE,5 + WL 1,R3FD3B+FR6 + WL 3,R3FD3B+FR7 + WL 3,R3FD3B+FR8 + WL 3,R3FD3B+FR9 +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_XFLIP + WL 3,R3GU2A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + + +#***************************************************************************** +* +* FACE DOWN GETUP + +;FIX!! add wrestler_xflip at the appropriate frame for all getups! + + SUBR rzr_facedown_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_XFLIP + WL 4,R3DC3C+FR10 + .word ANI_XFLIP + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + WL 4,R3GU2A+FR7 + WL 4,R3GU2A+FR8 + WL 4,R3GU2A+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 4,R3GU4A+FR6 + WL 4,R3GU4A+FR7 + WL 4,R3GU4A+FR8 + WL 4,R3GU4A+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* FACE UP GETUP + +;FIX!! add wrestler_xflip at the appropriate frame for all getups! + + SUBR rzr_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 4,R3GU2A+FR1 + WL 4,R3GU2A+FR2 + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + WL 4,R3GU2A+FR3 + WL 4,R3GU2A+FR4 + WL 4,R3GU2A+FR5 + WL 4,R3GU2A+FR6 + WL 4,R3GU2A+FR7 + WL 4,R3GU2A+FR8 + WL 4,R3GU2A+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 4,R3GU4A+FR3 + WL ANI_GOTO,#common + + SUBR rzr_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +#common + WL 4,R3GU4A+FR4 + WL 4,R3GU4A+FR5 + WL 4,R3GU4A+FR6 + WL 4,R3GU4A+FR7 + WL 4,R3GU4A+FR8 + WL 4,R3GU4A+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +***** +* set status bit for a getup in 4, clear for a 2. +choose_2or4 + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + + move *a13(NEW_FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #choose_2 + ori MODE_STATUS,a0 +#choose_2 + move a0,*a13(ANIMODE) + rets + + + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR rzr_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 1,R3AM3D+FR2 + WL ANI_SET_YVEL,39000h + WL 2,R3AM3D+FR2 + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 3,R3AM3D+FR3 + WL 3,R3AM3D+FR4 + WL 3,R3AM3D+FR5 + WL 3,R3AM3D+FR6 + WL 3,R3AM3D+FR7 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,R3AM3D+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + +#***************************************************************************** +* +* DIZZY + + SUBR rzr_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + WL 8,R4WP5C+FR1 + WL 8,R4WP5C+FR2 + WL 8,R4WP5C+FR3 + WL 8,R4WP5C+FR4 + WL 8,R4WP5C+FR5 + WL 8,R4WP5C+FR6 + WL 8,R4WP5C+FR7 + WL 8,R4WP5C+FR8 + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR rzr_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WL 8,R3TD3A+FR6 + WL 8,R3TD3A+FR7 + WL 1,R3TD3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT +; .word ANI_SOUND,0C2h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_OFFSET,42,0,0 + + .word ANI_DAMAGE,D_HIPTOSS + .word ANI_SETWORD,DELAY_METER,0 + .word ANI_GETUP,500 + + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_hitonground_anim + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK +* + + SUBR rzr_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back + + ;roll over. + WL 3,R3HG3B+FR3 + .word ANI_OFFSET,10,0,0 + WL 3,R3HG3B+FR4 + .word ANI_OFFSET,4,0,0 + WL 3,R3HG3B+FR5 + .word ANI_OFFSET,9,0,0 + WL 3,R3HG3B+FR6 + .word ANI_OFFSET,23,0,0 + WL 1,R3RL1B+FR6 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +#fall_back + ;no room. fall back + .word ANI_OFFSET,-11,0,0 + WL 5,R3HG3B+FR1 + .word ANI_OFFSET,19,0,0 + WL 5,R3TD3A+FR9 + .word ANI_OFFSET,-28,0,0 + .word ANI_XFLIP + WL 1,R3GU2A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + + SUBR rzr_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_XFLIP + WL 5,R3HG3B+FR3 + WL 5,R3HG3B+FR4 + WL 5,R3HG3B+FR5 + WL 5,R3HG3B+FR6 + .word ANI_WAITHITGND + + ;hit. stay. + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL ANI_CODE,SMALL_BOUNCE +; .word ANI_SOUND,bounce_l1 + .word ANI_OFFSET,-7,0,0 + .word ANI_ZEROVELS + + WL 20,R3RL1B+FR6 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + + SUBR rzr_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,R4POGO+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_XFLIP + WL 3,R3GP3Z+FR7 + WL 3,R3GP3Z+FR8 + + WL 3,R3HG3B+FR3 + WL 3,R3HG3B+FR4 + WL 3,R3HG3B+FR5 + WL 3,R3HG3B+FR6 + .word ANI_WAITHITGND + + ;hit. stay. + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_OFFSET,-7,0,0 + .word ANI_ZEROVELS + + WL 20,R3RL1B+FR6 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + + + SUBR rzr_break_neck4_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-28000h,AM_FACE_REL + + WL 6,R3HG3B+FR2 + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back4 + + ;roll over. + WL 3,R3HG3B+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,10,0,0 + WL 3,R3HG3B+FR4 + .word ANI_OFFSET,4,0,0 + WL 3,R3HG3B+FR5 + .word ANI_OFFSET,9,0,0 + WL 3,R3HG3B+FR6 + .word ANI_OFFSET,23,0,0 + WL 1,R3RL1B+FR6 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +#fall_back4 + ;no room. fall back + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,-11,0,0 + WL 5,R3HG3B+FR1 + .word ANI_OFFSET,19,0,0 + WL 5,R3TD3A+FR9 + .word ANI_OFFSET,-28,0,0 + .word ANI_XFLIP + WL 1,R3GU2A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR rzr_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,R3BR3Z+FR3 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 25,R3BR3Z+FR3 + +; WL 4,R3BR3Z+FR2 + + WL 4,R3FD3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + + WL 3,R3AM3D+FR2 + + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 3,R3AM3D+FR3 + WL 3,R3AM3D+FR4 + WL 3,R3AM3D+FR5 + WL 3,R3AM3D+FR6 + WL 3,R3AM3D+FR7 + WL 3,R3AM3D+FR1 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 10,R3AM3D+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR rzr_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,R3AM3D+FR1 + .ref ckzpos + WL ANI_CODE,ckzpos + WL 3,R3AM3D+FR1 + WL 4,R3AM3D+FR2 + WL 4,R3AM3D+FR3 + WL 4,R3AM3D+FR4 + WL 4,R3AM3D+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,R3AM3D+FR7 + WL 10,R3AM3D+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + + SUBR rzr_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,R3AM3X+FR1 + WL ANI_CODE,ckzpos + WL 3,R3AM3X+FR1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + + WL 4,R3AM3D+FR1 + WL 4,R3AM3D+FR2 + WL 4,R3AM3D+FR3 + WL 4,R3AM3D+FR4 + WL 4,R3AM3D+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,R3AM3D+FR7 + WL 10,R3AM3D+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + +#***************************************************************************** + + SUBR rzr_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,R3FD3B+FR2 + .word ANI_OFFSET,0,53,0 ;x,y,z + WL 4,R3FD3B+FR3 + WL 4,R3FD3B+FR4 + WL 1,R3FD3B+FR5 + + .word ANI_WAITHITGND +;;; .word ANI_ZERO_XZVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,R3FD3B+FR6 + + WL 3,R3HG3B+FR1 + WL 3,R3HG3B+FR2 + WL 3,R3HG3B+FR3 + WL 3,R3HG3B+FR4 + WL 3,R3HG3B+FR5 + WL 3,R3HG3B+FR6 + + .word ANI_ZERO_XZVELS + + WL 8,R3RL1B+FR6 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/RZR_MJT.IMG b/BACKUP/RZR_MJT.IMG new file mode 100644 index 0000000..14bee96 Binary files /dev/null and b/BACKUP/RZR_MJT.IMG differ diff --git a/BACKUP/SCREEN.ASM b/BACKUP/SCREEN.ASM new file mode 100644 index 0000000..dad9922 --- /dev/null +++ b/BACKUP/SCREEN.ASM @@ -0,0 +1,930 @@ +************************************************************** +* +* Software: Jake Simpson +* Initiated: 10/11/94 +* +* Modified: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "screen.asm" + .title "wrestling game program" + .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 "wwfsec.equ" + .include "game.equ" + .INCLUDE "SCREEN.TBL" + .include "imgtbl.glo" + + + .ref triple_sound + .ref FADERAM, RNDRNG0 + .ref ZERO_BITS + .ref HALT + .ref dpageflip + .REF dpageflip_off + .ref clear_objs + .ref IRQSKYE + .ref BGND_UD1 + .ref BAKMODS + .ref pal_getf + .ref SYSCOPY + .REF pal_clean + + .GLOBAL CLOSE_SCREEN_BOX, OPEN_SCREEN_BOX + .GLOBAL CLOSE_SCREEN_BOX_CENTER, OPEN_SCREEN_BOX_CENTER + .GLOBAL CLOSE_SCREEN_LINE, OPEN_SCREEN_LINE + .GLOBAL BLOW_0_TO_1,RESET_FROM_PIXEL_WIPE + .GLOBAL SET_UP_PIXEL_WIPE + .DEF DUMRETS + .def special_screen + .DEF RESETUP_LINES + .DEF dma_it_out + .def LINES + + .DEF CLOSE_VERT_SCREEN_LINE + .DEF OPEN_VERT_SCREEN_LINE + .DEF LINES_VERT + + BSSX WHICH_SCREEN,32 + BSSX TOP_LEFT,32 + BSSX BOT_RIGHT,32 + .BSS LINE_1,64*8 + .bss LINE_START,32 + .BSS WHICH_WAY,16 + .bss special_screen,16 + .bss which_pal,16 + +;array size = 2560*32 +ARRAYS .equ FADERAM + + .text + +GROW_SCREEN + RETP + +;************************************************************************** +;* * +;* DO NOT call WIPEOUT or any of that stuff before calling this routine ! * +;* In order to use the pixel wipes, you must call this routine before doing * +;* anything else. It will do ALL screen setting up for you. Don't mess around * +;* with that BLANK or UNBLANK thing. Call this routine with A0 set to the * +;* background module you want to display. Once this routine is done, create * +;* the objects you want to display etc and then do a sleep of 1. Then * +;* JSRP BLOW_0_TO_1 or BLOW_0_TO_1 and then when returned, call * +;* RESET_FROM_PIXEL_WIPE and resume normal processing. * +;* * +;************************************************************************** +SET_UP_PIXEL_WIPE + PUSH A0 + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + inc a0 + move a0,@special_screen + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + + CALLA dpageflip_off + calla clear_objs + calla ZERO_BITS + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + PULL A0 + move a0,@BAKMODS,L + JAUC BGND_UD1 ;create objects for background + +RESET_FROM_PIXEL_WIPE + clr a0 + move a0,@special_screen + movk 1,a0 ;page flipping on + move a0,@dpageflip + RETS + +ARRAY_SIZE .EQU 256*32 + +ARRAYA .EQU ARRAY_SIZE*0 + +ARRAYB .EQU ARRAY_SIZE*5 + +BLOW_0_TO_1 + CALLR INIT_TABLES + SLEEP 1 + MOVI ARRAYA+ARRAYS,A3 + CALLR RANDOMIZE_TABLES + SLEEP 1 + MOVI ARRAYB+ARRAYS,A3 + CALLR RANDOMIZE_TABLES + SLEEP 1 + + CLR A0 + MOVE A0,@DISPLAYON + SLEEP 1 + + MOVI 1C0H,A9 + + MOVK 10,A10 +DO_NEXT_BLOCK + MOVI ARRAYA+ARRAYS,A8 + SLEEP 3 + CREATE0 DISPLAY_ARRAY + ADDI 0A0H,A9 + MOVI ARRAYB+ARRAYS,A8 + SLEEP 3 + CREATE0 DISPLAY_ARRAY + ADDI 0A0H,A9 + DEC A10 + JRNZ DO_NEXT_BLOCK + + SLEEP 25 + + MOVK 1,A0 + MOVE A0,@DISPLAYON + RETP + +DISPLAY_ARRAY + MOVI 100000H,A10 + + callr PAL_RAM_OFF + + movi 5,a0 +next_copy + pushp a0 + CALLR COPY_ARRAY + SUBI 256*32,A8 + CALLR PAL_RAM_ON + CALLR COPY_ARRAY + callr PAL_RAM_OFF + sleep 1 + pullp a0 + dsjs a0,next_copy + DIE + +COPY_ARRAY + pushst + dint + MOVI 256,A2 + .ALIGN +COPY_NEXT + move a11,@SYSCTRL + MOVE *A8+,A3,L + ADD A9,A3 + MOVE A3,A0 + ADD A10,A0 + MOVE *A0,*A3 + MOVE *A0(1000H),*A3(1000H) + DSJS A2,COPY_NEXT + popst + RETS + +PAL_RAM_ON + movi SYSCINIT,a11 + ANDi 0FFFFH-PALENB,a11 + move a11,@SYSCOPY + move a11,@SYSCTRL + rets + +PAL_RAM_OFF + movi SYSCINIT,a11 + move a11,@SYSCTRL + move a11,@SYSCOPY + RETS + +RANDOMIZE_TABLES + MOVI 1279,A2 +RAND_NEXT_POINT + MOVE A2,A0 + CALLA RNDRNG0 + SLL 5,A0 + ADD A3,A0 + MOVE A2,A4 + SLL 5,A4 + ADD A3,A4 + MOVE *A0,A14,L + MOVE *A4,*A0,L + MOVE A14,*A4,L + DSJS A2,RAND_NEXT_POINT + RETS + +INIT_TABLES + MOVI 010H,A4 + MOVI 2000H-(10*10H),A5 + MOVI ARRAYA+ARRAYS,A1 + CALLR INIT_ARRAY + MOVI ARRAYB+ARRAYS,A1 + +INIT_ARRAY + MOVI 128,A3 + CLR A0 +NEXT_DOWN + MOVI 10,A2 +NEXT_ACROSS + MOVE A0,*A1+,L + ADD A4,A0 + DSJS A2,NEXT_ACROSS + ADD A5,A0 + DSJS A3,NEXT_DOWN + RETS + +** NOTE !!!! ALL SCREEN CLEAR AND OPENS MUST BE CALLED WITH A JSRP **** + +;************************************************************************** +;* * +;* For close/open screen box, send the y:x coor you want to close * +;* to in a9. Send the duration of close in a8 * +;* * +;************************************************************************** + +OPEN_SCREEN_BOX_CENTER + MOVI [127,200],A9 + MOVI 25,A8 +OPEN_SCREEN_BOX + MOVI DRAW_BOXES,A0 + MOVE A0,@WHICH_SCREEN,L + CALLR CALC_INCREMENTS + + NEG A0 + NEG A1 + NEG A2 + NEG A3 + + MOVY A9,A6 + MOVY A9,A7 + SLL 16,A9 + MOVE A9,A4 + MOVE A9,A5 + JRUC PUT_UP_BOX + +CLOSE_SCREEN_BOX_CENTER + MOVI [127,200],A9 + MOVK 25,A8 +CLOSE_SCREEN_BOX + MOVI DRAW_BOXES,A0 + MOVE A0,@WHICH_SCREEN,L + CALLR CALC_INCREMENTS + MOVI [400,0],A5 + MOVI [254,0],A7 + +PUT_UP_BOX + CALLR CALC_BOX + PUSHP A0,A1,A2,A3 + PUSHP A4,A5,A6,A7 + SLEEP 1 + PULLP A4,A5,A6,A7 + PULLP A0,A1,A2,A3 + DSJS A8,PUT_UP_BOX + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A0 + MOVE A0,@TOP_LEFT,L + MOVE A0,@BOT_RIGHT,L + RETP + +CALC_INCREMENTS + MOVY A9,A7 + CLR A1 + MOVX A9,A1 + SLL 16,A1 + DIVS A8,A1 + MOVE A1,A0 + CLR A1 + MOVX A9,A1 + MOVI 400,A5 + SUB A5,A1 + SLL 16,A1 + DIVS A8,A1 + + CLR A3 + MOVY A7,A3 + DIVS A8,A3 + MOVE A3,A2 + CLR A3 + MOVY A7,A3 + SRL 16,A3 + MOVI 254,A5 + SUB A5,A3 + SLL 16,A3 + DIVS A8,A3 + + CLR A4 + CLR A5 + CLR A6 + CLR A7 +DUMRETS + RETS + +;A0 32BIT ADD FOR LEFT +;A1 32BIT ADD FOR RIGHT +;A2 32BIT ADD FOR TOP +;A3 32BIT ADD FOR BOTTOM +;A4 32BIT XPOS FOR LEFT +;A5 32BIT XPOS FOR RIGHT +;A6 32BIT YPOS FOR TOP +;A7 32BIT YPOS FOR BOTTOM + +CALC_BOX + ADD A0,A4 + ADD A1,A5 + ADD A2,A6 + ADD A3,A7 + MOVE A4,A14 + SRL 16,A14 + MOVY A6,A14 + MOVE A14,@TOP_LEFT,L + MOVE A5,A14 + SRL 16,A14 + MOVY A7,A14 + MOVE A14,@BOT_RIGHT,L + RETS + +DRAW_BOXES + MOVI 01000100H,A5 + CLR A8 + MOVI 4a748c9H,A11 + MOVI 900C0000H,A12 + + CLR A10 + MOVI [255,0],A1 + MOVE @TOP_LEFT,A9 + jrz no_draw_anything1 + MOVY A1,A9 + + callr dma_it_out + +no_draw_anything1 + MOVI 400,A1 + MOVE @BOT_RIGHT,A10 + SUB A10,A1 + jrz no_draw_anything2 + jrn no_draw_anything2 + MOVX A1,A9 + CLR A10 + MOVE @BOT_RIGHT,A10 + + callr dma_it_out + +no_draw_anything2 + CLR A10 + MOVE @TOP_LEFT,A10 + + MOVE @BOT_RIGHT,A9 + SUB A10,A9 + JRZ no_draw_anything4 + JRN no_draw_anything4 + MOVE @TOP_LEFT+010H,A14 + JRZ no_draw_anything3 + JRN no_draw_anything3 + SLL 16,A14 + MOVY A14,A9 + + callr dma_it_out + +no_draw_anything3 + + CLR A10 + MOVE @TOP_LEFT,A10 + MOVE @BOT_RIGHT,A14,L + MOVY A14,A10 + + MOVI 254,A3 + SRL 16,A14 + SUB A14,A3 + JRZ no_draw_anything4 + JRN no_draw_anything4 + SLL 16,A3 + MOVY A3,A9 + + callr dma_it_out +no_draw_anything4 + + RETS + + +;A5 SCALE +;A8 PAL|CONST +;A9 YSIZE|XSIZE +;A10 DAG +;A11 SAG +;A12 OCTRL|OFFSET +dma_it_out + move b2,a1 + addxy a1,a10 ;Add the page y offset : XPad + mmtm a4,a5,a8,a9,a10,a11,a12 ;Save the dma regs + addk 1,b13 ;+1 Q cnt + jrgt #nxt ;DMA going? + + dint + + setf 1,0,0 ;>Enable DMA int + movk 1,a1 + move a1,@INTENB+1 ;X1E + setf 16,1,0 + + move *b11,b0 + jrn #dmaok ;DMA busy? + + move b13,b13 + jrn #dmaok ;DMA int done? + + trap 1 ;Cause DMA int + +#dmaok eint +#nxt + rets + +;#************************************************************************** +;* * +;* ENTRY A8=SPEED OF ONE LINE, A9=DELAY BETWEEN EACH LINE (IF NEG START A * +;* at the top, otherwise start at the bottom * +;* * +;************************************************************************** +OPEN_VERT_SCREEN_LINE + + MOVI HORZTRN1P,A0 + CALLA pal_getf + move a0,@which_pal + + MOVI [0,400],A1 + MOVE A1,@TOP_LEFT,L + CLR A1 + MOVE A1,@BOT_RIGHT,L + + MOVI [256,0],A0 + CLR A1 + CLR A3 + CALLR SET_INITIAL_LINES + + MOVI LINES_VERT,A1 + MOVE A1,@WHICH_SCREEN,L + + MOVI [255,0],A11 + DIVS A8,A11 + NEG A11 + + MOVK 7,A10 +#NEXT_LINE2B + movk 18,a0 + calla triple_sound + CREATE0 MOVE_LINE_VERT + MOVE A9,A0 + CALLA PRCSLP + DEC A10 + JRNN #NEXT_LINE2B + + MOVE A8,A0 + SUB A9,A0 + ADDK 2,A0 + CALLA PRCSLP + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A1 + MOVE A1,@TOP_LEFT,L + MOVE A1,@BOT_RIGHT,L + CALLA pal_clean + RETP + +;#************************************************************************** +;* * +;* ENTRY A8=SPEED OF ONE LINE, A9=DELAY BETWEEN EACH LINE * +;* IF DELAY IS NEGATIVE (IE TWOS COMPLEMENT) THEN GO FROM TOP DOWN * +;* * +;************************************************************************** +CLOSE_VERT_SCREEN_LINE + + MOVI HORZTRN1P,A0 + CALLA pal_getf + move a0,@which_pal + + CLR A1 + MOVE A1,@TOP_LEFT,L + MOVE A1,@BOT_RIGHT,L + + CLR A0 + CLR A3 + MOVI [256,0],A1 + CALLR SET_INITIAL_LINES + + MOVI LINES_VERT,A1 + MOVE A1,@WHICH_SCREEN,L + + MOVI [255,0],A11 + DIVS A8,A11 + + MOVK 7,A10 +#NEXT_LINE2A + movk 18,a0 + calla triple_sound + CREATE0 MOVE_LINE_VERT + MOVE A9,A0 + CALLA PRCSLP + DEC A10 + JRNN #NEXT_LINE2A + + MOVE A8,A0 + SUB A9,A0 + ADDK 2,A0 + CALLA PRCSLP + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A1 + MOVE A1,@TOP_LEFT,L + MOVE A1,@BOT_RIGHT,L + CALLA pal_clean + RETP + +MOVE_LINE_VERT + MOVE A11,A11 + JRNN NO_NEED_TO_RESET_NOW + + MOVE A10,A1 + MOVI 50,A3 + MPYU A3,A1 + MOVE A1,@TOP_LEFT + +NO_NEED_TO_RESET_NOW + + MOVE A10,A9 + SLL 6,A9 + ADDI LINE_1,A9 +ADD_NEXT_BIT_TO_LINE + MOVE A10,A0 + SRL 1,A0 + JRNC YOU_STAY_HERE + MOVE *A9,A0,L + SUB A11,A0 + MOVE A0,*A9,L +YOU_STAY_HERE + MOVE *A9(020H),A0,L + ADD A11,A0 + MOVE A0,*A9(020H),L + SLEEPK 1 + DSJS A8,ADD_NEXT_BIT_TO_LINE + MOVE A11,A11 + JRN WE_OPENING + MOVI [100H,0],A0 + MOVE A0,*A9(020H),L + CLR A0 + MOVE A0,*A9,L + + MOVI 9,A1 + SUB A10,A1 + MOVI 50,A3 + MPYU A3,A1 + NEG A1 + MOVE A1,@BOT_RIGHT + DIE + +WE_OPENING + CLR A0 + MOVE A0,*A9(020H),L + MOVI [100H,0],A0 + MOVE A0,*A9,L + DIE + +LINES_VERT + MOVI 01000100H,A5 + CLR A8 + MOVI [256,50],A9 + move @which_pal,a8 + MOVI 0d0020000H,A12 + + CLR A14 + MOVI LINE_1,A3,L + MOVK 8,A2 +DO_NEXT_VERT_LINE + CALLR DISPLAY_VERT_LINE + DSJS A2,DO_NEXT_VERT_LINE + RETS + +DISPLAY_VERT_LINE + MOVE @VERTTRN1+040H,A11,L + MOVE A2,A0 + SRL 1,A0 + JRNC GOT_TOP_BAR + MOVE @VERTTRN2+040H,A11,L +GOT_TOP_BAR + + MOVE A14,A10 + SRL 16,A10 + MOVE *A3+,A0,L ;POSITION + MOVY A0,A10 + MOVE *A3+,A0,L ;SIZE + SRA 16,A0 + JRZ NO_DISPLAY_VERT_LINE + JRN NO_DISPLAY_VERT_LINE + MOVE A0,A1 + SLL 16,A0 + MOVY A0,A9 + + MOVE A2,A6 + SRL 1,A6 + JRC NO_SHIFT_SAG + MOVI 256,A6 + SUB A1,A6 + MOVI 50,A1 + MPYU A6,A1 + MOVE A1,A6 + SLL 2,A1 + ADD A6,A1 + ADD A1,A11 +NO_SHIFT_SAG + + CALLR dma_it_out +NO_DISPLAY_VERT_LINE + ADDI [50,0],A14 + RETS + + +;#************************************************************************** +;* * +;* ENTRY A8=SPEED OF ONE LINE, A9=DELAY BETWEEN EACH LINE (IF NEG START A * +;* at the top, otherwise start at the bottom * +;* * +;************************************************************************** +OPEN_SCREEN_LINE + MOVI HORZTRN1P,A0 + CALLA pal_getf + move a0,@which_pal + + MOVI LINE_1+040H,A0 + MOVE A0,@LINE_START,L + CLR A1 + CLR A3 + MOVI [400,0],A0 + CALLR SET_INITIAL_LINES + MOVI [400,0],A11 + DIVS A8,A11 + NEG A11 + MOVE A9,A9 + JRN #SET_BOT_RIGHT + MOVI [254,0],A10 + MOVE A10,@TOP_LEFT,L + JRUC DO_LINES +#SET_BOT_RIGHT + MOVI [254,0],A10 + NEG A10 + MOVE A10,@BOT_RIGHT,L + JRUC DO_LINES + +;#************************************************************************** +;* * +;* ENTRY A8=SPEED OF ONE LINE, A9=DELAY BETWEEN EACH LINE * +;* IF DELAY IS NEGATIVE (IE TWOS COMPLEMENT) THEN GO FROM TOP DOWN * +;* * +;************************************************************************** +CLOSE_SCREEN_LINE + MOVI HORZTRN1P,A0 + CALLA pal_getf + move a0,@which_pal + + MOVI LINE_1,A0 + MOVE A0,@LINE_START,L + CLR A0 + CLR A3 + MOVI [400,0],A1 + CALLR SET_INITIAL_LINES + + MOVI [400,0],A11 + DIVS A8,A11 +DO_LINES + MOVE A9,@WHICH_WAY + MOVE A9,A9 + JRNN #BOTTOM_UP + NEG A9 + +;TOP DOWN + MOVK 1,A10 +#NEXT_LINE1 + movk 18,a0 + calla triple_sound + CREATE0 MOVE_LINE + MOVE A9,A0 + JRZ #NO_SLEEP_BETWEEN1 + CALLA PRCSLP +#NO_SLEEP_BETWEEN1 + INC A10 + CMPI 7,A10 + JRNE #NEXT_LINE1 + JRUC EXIT_CLOSE_LINE + +#BOTTOM_UP + MOVK 6,A10 +#NEXT_LINE2 + movk 18,a0 + calla triple_sound + CREATE0 MOVE_LINE + MOVE A9,A0 + JRZ #NO_SLEEP_BETWEEN2 + CALLA PRCSLP +#NO_SLEEP_BETWEEN2 + DSJS A10,#NEXT_LINE2 +EXIT_CLOSE_LINE + MOVE A8,A0 + SUB A9,A0 + ADDK 2,A0 + CALLA PRCSLP + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A1 + MOVE A1,@TOP_LEFT,L + MOVE A1,@BOT_RIGHT,L + MOVE @LINE_START,A1,L + + CMPI LINE_1,A1 + JREQ NO_CLEAR_OUT_PALS + CALLA pal_clean +NO_CLEAR_OUT_PALS + RETP + +SET_INITIAL_LINES + MOVI LINE_1,A2 + MOVE A3,*A2+,L + MOVE A0,*A2+,L + MOVE A1,*A2+,L + MOVE A0,*A2+,L + + MOVE A3,*A2+,L + MOVE A0,*A2+,L + MOVE A1,*A2+,L + MOVE A0,*A2+,L + + MOVE A3,*A2+,L + MOVE A0,*A2+,L + MOVE A1,*A2+,L + MOVE A0,*A2+,L + + MOVE A3,*A2+,L + MOVE A0,*A2+,L + MOVE A1,*A2+,L + MOVE A0,*A2+,L + + MOVI LINES,A1 + MOVE A1,@WHICH_SCREEN,L + + RETS + +MOVE_LINE + MOVE A11,A11 + JRN NO_DEC_A10 + DEC A10 + JRUC A10_POINTS_AT_START_LINE +NO_DEC_A10 + MOVI 43,A7 + DEC A10 + MPYS A10,A7 + INC A10 + + MOVE @WHICH_WAY,A0 + JRNN LINES_OPEN_DOWN + +LINES_OPEN_UP + ADDI 43,A7 + MOVI 254,A0 + SUB A7,A0 + SLL 16,A0 + NEG A0 + MOVE A0,@BOT_RIGHT,L + JRUC A10_POINTS_AT_START_LINE + +LINES_OPEN_DOWN + SLL 16,A7 + MOVE A7,@TOP_LEFT,L + +A10_POINTS_AT_START_LINE + MOVE A10,A9 + SLL 6,A9 + ADDI LINE_1,A9 +EXPAND_LINE + MOVE A10,A0 + SRL 1,A0 + JRNC NO_MOVE_LINE_X + MOVE *A9,A0,L + SUB A11,A0 + MOVE A0,*A9,L +NO_MOVE_LINE_X + MOVE *A9(020H),A0,L + ADD A11,A0 + MOVE A0,*A9(020H),L + SLEEPK 1 + DSJS A8,EXPAND_LINE + MOVE A11,A11 + JRNN SET_LINES_SOLID + CLR A0 + MOVE A0,*A9(020H),L + DIE + +SET_LINES_SOLID + CLR A0 + MOVE A0,*A9,L + MOVI [400,0],A0 + MOVE A0,*A9(020H),L + + MOVI 43,A7 + MPYS A10,A7 + + MOVE @WHICH_WAY,A0 + JRN LINES_CLOSE_DOWN + +LINES_CLOSE_UP + MOVI 254,A0 + SUB A7,A0 + SLL 16,A0 + NEG A0 + MOVE A0,@BOT_RIGHT,L + DIE + +LINES_CLOSE_DOWN + ADDI 43,A7 + SLL 16,A7 + MOVE A7,@TOP_LEFT,L + DIE + +LINES + MOVI 01000100H,A5 + CLR A8 + move @which_pal,a8 + MOVI [43,400],A9 + MOVI 0d0020000H,A12 + + CLR A14 + MOVE @LINE_START,A3,L + MOVK 6,A2 +DO_NEXT_LINE + CALLR DISPLAY_LINE + DSJS A2,DO_NEXT_LINE + RETS + +DISPLAY_LINE + MOVE @HORZTRN1+040H,A11,L + MOVE A2,A0 + SRL 1,A0 + JRNC GOT_RIGHT_BAR + MOVE @HORZTRN2+040H,A11,L +GOT_RIGHT_BAR + + MOVE *A3+,A0,L ;POSITION + SRL 16,A0 + MOVX A0,A10 + MOVY A14,A10 + MOVE *A3+,A0,L ;SIZE + SRA 16,A0 + JRZ NO_DISPLAY_LINE + JRN NO_DISPLAY_LINE + + MOVI 400,A1 + SUB A0,A1 + MOVX A1,A12 + + MOVE A2,A6 + MOVE @LINE_START,A0,L + CMPI LINE_1,A0 + JREQ WHICH_SIDE_CLIP + DEC A6 +WHICH_SIDE_CLIP + SRL 1,A6 + JRC NO_SHIFT_CLIP + MOVE A1,A6 + SLL 2,A1 + ADD A1,A6 + ADD A6,A11 +NO_SHIFT_CLIP + + CALLR dma_it_out +NO_DISPLAY_LINE + ADDI [43,0],A14 + RETS + +RESETUP_LINES + MOVI LINES,A0 + MOVE A0,@WHICH_SCREEN,L + MOVI HORZTRN1P,A0 + CALLA pal_getf + move a0,@which_pal + rets + + .end + + \ No newline at end of file diff --git a/BACKUP/SELECT.ASM b/BACKUP/SELECT.ASM new file mode 100644 index 0000000..4fac947 --- /dev/null +++ b/BACKUP/SELECT.ASM @@ -0,0 +1,2765 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 1066, shortly after the Battle of Hastings +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 11/22/93 14:24 +************************************************************** + + .file "select.asm" + .title "wrestling selection screens" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;Mproc equates + .include "display.equ" ;Display proc equates + .include "gsp.equ" ;Gsp asm equates + .include "sys.equ" + .include "game.equ" + .include "audit.equ" + .include "macros.h" + .include "link.equ" + .include "sound.h" + .include "plyr.equ" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "imgtbl.glo" + .include "miscimg.glo" + .include "ropeimg.glo" + +#***************************************************************************** + + .DEF GAME_BEATEN + .REF DO_BEATEN_GAME + .DEF THIS_GAME_IS_BEATEN + + .def howard_wins,digits_tbl,calc_match_time_1 + .def num_wrestlers,pin_speed_in_case,wrestler_mugs + .def wrestler_attributes,attbars,wrestler_mugs2,wrestler_audits + + .ref ADD_VOICE,BAKMODS,BCDBIN,BEGINOBJ_TBL,BGND_UD1 + .ref BINBCD,change_image,CHECK_SCORE,civanic + .ref CLOSE_PROGRESS_SCREEN,CLOSE_SCREEN_LINE,CR_STRTP + .ref CURRENT_ANN_QUEUE,DONE_HOWARD,do_that_cycle,dpageflip + .ref entered_inits,FADE_MASTER_VOL,FIND_LOW_TABLE_LEVEL + .ref GET_ADJ,get_but_val_down,get_process_ptr,get_start_cur + .ref get_stick_val_cur,get_stick_val_down,match_time + .ref NEXT_ANN_QUEUE,no_pin_check,PCNT,pin_speed_check + .ref PIN_SPEED_TAB,PSTATUS,PUT_UP_PROGRESS,RNDPER,RNDRNG0 + .ref SPECIAL_WIPEOUT,start_credbox,stay_down,total_matches + .ref triple_sound,winstreak_check,WIPEOUT,wmania_tune + .REF print_beaten + .ref GET_AUD + +#***************************************************************************** + + BSSX MATCH_TIMERS,64 + bssx which_player,32 + + BSSX index1, 16 ;player 1 cursor position + BSSX index2, 16 ;player 2 cursor position + .bss time_out, 16 ;time out flag + .bss active_flag, 16 ;0:player 1 active, 1:player 2 active + + .bss kp_p1cursor, 32 + .bss blow_out, 16 ;Flag for not delaying after no buyin + .BSS SPEECH_STARTED, 16 + + bssx match_time_bcd,32 + + bssx are_we_waiting_f,16 + +#***************************************************************************** + +num_wrestlers EQU 9 + + .word AUD_SNDERR4,AUD_SNDERR4,AUD_SNDERR4,AUD_SNDERR4 +wrestler_audits + .word AUD_BHART,AUD_BHARTHW,AUD_BHARTC,AUD_BHARTCW + .word AUD_RRAMO,AUD_RRAMOHW,AUD_RRAMOC,AUD_RRAMOCW + .word AUD_UNDER,AUD_UNDERHW,AUD_UNDERC,AUD_UNDERCW + .word AUD_YOKO,AUD_YOKOHW,AUD_YOKOC,AUD_YOKOCW + .word AUD_SMICH,AUD_SMICHHW,AUD_SMICHC,AUD_SMICHCW + .word AUD_BBBIG,AUD_BBBIGHW,AUD_BBBIGC,AUD_BBBIGCW + .word AUD_DCLOW,AUD_DCLOWHW,AUD_DCLOWC,AUD_DCLOWCW + .word 0,0,0,0 + .word AUD_LLUGE,AUD_LLUGEHW,AUD_LLUGEC,AUD_LLUGECW +wrestler_auditsX + + +#***************************************************************************** + + .ref OLD_PSTATUS + .ref CR_CONTP + .ref GAMSTATE + .ref secret_damage + +#******************************* + + STRUCTPD + LONG #cursorimg ;UHL cursor *img + LONG #hiliteimg ;UHL hilite letter *img + WORD #stick ;UHW stick to read + LONG #which_tab + LONG #which_entry + LONG #which_level + +GAME_BEATEN + MOVI 998,A3 + CALLA SNDSND + movi 2,a0 + calla RNDRNG0 + move a0,a3 + addk 0fh,a3 + calla SNDSND + + MOVK 5,A11 + MOVI 32,A8 + CREATE0 FADE_MASTER_VOL + + calla WIPEOUT + movk 1,a0 ;page flipping on + move a0,@dpageflip + calla start_credbox + movi #plyrsel_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + clr a14 + move a14,@time_out + + CREATE0 display_croutons + + move @PSTATUS,A10 + srl 1,a10 + move a10,a8 + + MOVE a8,a1 + sll 5,a1 + move a8,a2 + sll 4,a2 + add a2,a1 + addi entered_inits,a1 + clr a2 + move a2,*a1+,L + move a2,*a1 + + push a10 + clr a1 + move a10,a10 + jrnz which_playr_set + movk 1,a1 +which_playr_set + move a1,a10 + CREATE SELECT_PID,player_cursor + + pull a10 + push a10 + + JSRP DO_BEATEN_GAME + pull a10 + +are_we_waiting4 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ no_need_for_inputb + sleep 1 + movi CYCPID,a0 + movi -1,a1 + calla EXISTP + jrnz are_we_waiting4 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ no_need_for_inputb + mmtm sp,a10,a9,a8 + calla do_that_cycle + mmfm sp,a10,a9,a8 + jruc are_we_waiting4 + +no_need_for_inputb + + CALLA WIPEOUT + movk 1,a0 ;page flipping on + move a0,@dpageflip + movi #hstd_mod,a0 + move a0,@BAKMODS,L + CALLA BGND_UD1 ;create objects for background + + movi AUD_BEATEN,A0 + calla GET_AUD + SUBI 2,A1 + CMPI 1,A1 + JRGE NO_PROBLEM + MOVK 1,A1 +NO_PROBLEM + CMPI 48,A1 + JRLE NO_PROBLEM2 + MOVI 48,A1 +NO_PROBLEM2 + MOVE A1,A5 + + JSRP print_beaten + SLEEP TSEC*7 + retp + +#hstd_mod + .long slateBMOD + .word 0,0 + .long 0 + + +pin_speed_in_case + move @total_matches,a14 + jrz no_need_for_input + + move a10,a8 + + move a8,A1 + CALLA get_process_ptr + MOVE A8,A0 + SLL 5,A0 + ADDI MATCH_TIMERS,A0 + move *a0,A0,L + movi FIND_LOW_TABLE_LEVEL,a11 + move a11,*a13(#which_level),L + clr a3 + MOVI PIN_SPEED_TAB,A8 + calla CHECK_SCORE + + jrz no_need_for_input + move a10,A1 + sll 5,a1 + + MOVE A10,A2 + SLL 4,A2 + ADD A2,A1 + addi entered_inits,a1 + move *a1,a1,L + jrnz no_display_anything + + + MOVI 998,A3 + CALLA SNDSND + movi 2,a0 + calla RNDRNG0 + move a0,a3 + addk 0fh,a3 + calla SNDSND + + MOVK 5,A11 + MOVI 32,A8 + CREATE0 FADE_MASTER_VOL + + calla WIPEOUT + movk 1,a0 ;page flipping on + move a0,@dpageflip + calla start_credbox + movi #plyrsel_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + clr a14 + move a14,@time_out + + CREATE0 display_croutons + + push a10 + clr a1 + move a10,a10 + jrnz which_play_set + movk 1,a1 +which_play_set + move a1,a10 + CREATE SELECT_PID,player_cursor + + pull a10 +no_display_anything + + move a10,a8 + mmtm sp,a6,a7,a8,a9,a10,a11 + jsrp pin_speed_check + mmfm sp,a6,a7,a8,a9,a10,a11 + +are_we_waiting3 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ no_need_for_input + sleep 1 + movi CYCPID,a0 + movi -1,a1 + calla EXISTP + jrnz are_we_waiting3 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ no_need_for_input + mmtm sp,a10,a9,a8 + calla do_that_cycle + mmfm sp,a10,a9,a8 + jruc are_we_waiting3 + +no_need_for_input + retp + +calc_match_time_1 + callr work_out_match_time + movi 10000,a1 + sub a0,a1 + JRUC STORE_MATCH_TIME + + .def calc_match_time_2 +calc_match_time_2 + callr work_out_match_time + movi 10000,a1 + sub a0,a1 + MOVE *A10(PLYRNUM),A0 + CMPI 2,A0 + JRGE NO_POINT_ITS_A_DRONE + SLL 5,A0 + ADDI MATCH_TIMERS,A0 + MOVE *A0,A0,L + add a1,a0 + cmpi 10000,a0 + jrge no_bother_pin_speed_check + calla BINBCD + move a0,a1 + JRUC STORE_MATCH_TIME +no_bother_pin_speed_check + movi -1,a1 +STORE_MATCH_TIME + MOVE *A10(PLYRNUM),A0 + CMPI 2,A0 + JRGE NO_POINT_ITS_A_DRONE + SLL 5,A0 + ADDI MATCH_TIMERS,A0 + MOVE A1,*A0,L +NO_POINT_ITS_A_DRONE + rets + +work_out_match_time + move @match_time,a4,L + move a4,a1 + srl 8,a4 + sll 24,a1 + srl 12,a1 + or a1,a4 + + move @match_time+020h,a5 + sll 16,a5 + srl 16,a5 + movi 100,a0 + mpyu a0,a5 + srl 16,a5 + move a5,a0 + calla BINBCD + or a4,a0 + calla BCDBIN + rets + +howard_wins + MOVE @SPEECH_STARTED,a0 + CMPI 2,A0 + jreq NO_SPEECH_COS_HOWRD_TALKIN + movi 1Feh,a0 + CALLA ADD_VOICE + movk 2,a0 + MOVE a0,@SPEECH_STARTED + sleep 80 + clr a0 + MOVE a0,@SPEECH_STARTED + die + +SPEAK_TO_ME + SLEEPK 1 + MOVE @SPEECH_STARTED,A0 + JRNZ SPEAK_TO_ME + MOVE @NEXT_ANN_QUEUE,A1,L + MOVE @CURRENT_ANN_QUEUE,A2,L + CMP A1,A2 + JRNE NO_SPEECH_COS_HOWRD_TALKIN + MOVK 1,A0 + MOVE A0,@SPEECH_STARTED + MOVE *A8,A9 + SLL 5,A9 + ADDI WHICH_SPEECH,A9 + MOVE *A9,A0 + CALLA ADD_VOICE + MOVE *A8(010H),A0 + CALLA PRCSLP + CLR A0 + MOVE A0,@SPEECH_STARTED +NO_SPEECH_COS_HOWRD_TALKIN + DIE + +;Bret +;Razor +;Taker +;Yoko +;Shawn +;Bam Bam +;Doink +;spare +;Lex +WHICH_SPEECH + .WORD 131H,70 + .WORD 12DH,44 + .WORD 12FH,54 + .WORD 132H,59 + .WORD 12CH,55 + .WORD 12EH,76 + .WORD 12BH,54 + .WORD 0,0 + .WORD 130H,47 + + SUBR buyin_select + +;This turns on the player select background, etc. + +;If this is a one player game, then display standard challenger needed +;message on the correct side. Then display a please continue message +;on the other side, along with a buyin timer. + +;If this is a two player game, turn on the cursor, etc. for the winning +;player. Then display a please continue message on the other side, along +;with a buyin timer. + +;If a player chooses to let his buyin timer expire, then check to see if +;he had achieved a high score. If so, display the initials on his side +;and let him pick. The other player (or none) will stay in limbo. + + movi INWAITCONT,a14 ;set GAMSTATE + move a14,@GAMSTATE + + SUBR select_screen + + calla display_blank + clr a0 + move a0,@secret_damage + MOVE A0,@SPEECH_STARTED + + calla WIPEOUT ;kill any attract modes or old + ;battles lying around. + movi INSELECT,a14 ;set GAMSTATE + move a14,@GAMSTATE + movi SELECT_PID,a14 ;set our PID + move a14,*a13(PROCID) + + .if DEBUG +;Temp, stuff @index1,2 for testing wrestlers. + + move @skip_select,a0 + jrz #noskp + +;0 (Bret) +;1 (Razor) +;2 (Taker) +;3 (Yoko) +;4 (Shawn) +;5 (Bam Bam) +;6 (Doink) +;7 spare +;8 (Lex) + + calla display_unblank + movi 6,a0 + move a0,@index1 + movi 2,a0 + move a0,@index2 + + move @skip_select,a0 + jrp #skp2 + + .ref NUM_OPPS + movk 1,a0 + move a0,@NUM_OPPS + +#skp0 + RETP +#skp2 + RETP + + clr a0 + calla get_but_val_cur + btst PLAYER_BLOCK_BIT,a0 + jrz #no_block1 + movk 1,a14 + move a14,@stay_down + andni PLAYER_BLOCK_VAL,a0 +#no_block1 + X16 a0 + addi #select_table,a0 + move *a0,a14 + move a14,@index1 + + movi 1,a0 + calla get_but_val_cur + btst PLAYER_BLOCK_BIT,a0 + jrz #no_block2 + movk 1,a14 + move a14,@stay_down + andni PLAYER_BLOCK_VAL,a0 +#no_block2 + X16 a0 + addi #select_table,a0 + move *a0,a14 + move a14,@index2 + RETP + + ;lookup table +#select_table + .word 1 + .word 3 ;1 punch + .word 1,1 + .word 0 ;4 spunch + .word 8 ;5 punch + spunch + .word 1,1 + .word 1 ;8 kick + .word 6 ;9 punch + kick + .word 1,1,1,1,1,1 + .word 4 ;16 skick + .word 1,1,1 + .word 5 ;20 spunch + skick + .word 1,1,1 + .word 2 ;24 kick + skick + .word 1,1,1,1,1,1,1 + + BSSX skip_select, 16 + +#noskp + .endif + + MOVK 5,A11 + MOVI 32,A8 + CREATE0 FADE_MASTER_VOL + + clr a0 + move a0,@blow_out + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi #plyrsel_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + ;play wrestlemania tune + .if MUSIC_ON + CREATE0 wmania_tune + .endif + + CREATE0 display_croutons + calla start_credbox + +;Initialize flags + move @PSTATUS,a14 + move a14,@active_flag + + clr a14 + move a14,@time_out + + ;create the player cursors + clr a10 + CREATE SELECT_PID,player_cursor + + move a0,@kp_p1cursor,L + CREATE0 blink_rndper + + movk 1,a10 + CREATE SELECT_PID,player_cursor + + ;wait for them to finish up + + SLEEPK 1 + + movk 1,a0 + move a0,@DISPLAYON + calla display_unblank + +#waitloop + SLEEPK 1 + move @are_we_waiting_f,a14 + jrz no_we_are_not + dec a14 + move a14,@are_we_waiting_f +no_we_are_not + move @active_flag,a14 + jrnz #waitloop + + move @OLD_PSTATUS,a14 + jrnz #waitloop + + +;Players have chosen their guys. wait a sec, then bail + movi TSEC+30,a8 +#final_waitloop + + SLEEPK 1 + + move @active_flag,a14 ;don't quit if someone jumps in here + jrnz #waitloop + + move @blow_out,a0 + jrnz #out + + dsj a8,#final_waitloop + +#out + RETP + + + SUBRP display_croutons +;Draw the croutons and their associated pix + + move @PSTATUS,a0 +; jrnz #gocrut +; SLEEPK 1 +; jruc display_croutons +;#gocrut + + movi crouton_pos_table,a9 + movi #crouton_pic_table,a10 + move *a9+,a0 +#crouton_loop + move *a9+,a1 + + sll 16,a0 + sll 16,a1 + move *a10+,a2,L + movi #crutpic_z,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + + calla BEGINOBJW + + move *a9+,a0 + jrnz #crouton_loop + +; CREATE0 select_clock +; move a0,a10 +; CREATE0 clock_digits + + DIE + + +#plyrsel_mod + .long wwfselbkBMOD + .word -40,0 + .long 0 + +#crutplt_z equ 1 +hiplate_z equ 2 ;oscillates from 2 to 3 +#crutpic_z equ 4 +hilite_z equ 5 + +#baseshad_z equ 1 +#hishad_z equ 2 +#attplt_z equ 3 +#sidebar_z equ 3 +#nameshad_z equ 5 +#namebar_z equ 7 +atttxt_z equ 8 + +name_z equ 9 + +mugshot_z equ 1 + +#crouton_pic_table + .long CRUT_DK + .long CRUT_RR + .long CRUT_UN + .long CRUT_YK + .long CRUT_SM + .long CRUT_BM + .long CRUT_BH + .long CRUT_LX + +crouton_pos_table + .word 164,45 + .word 204,45 + + .word 164,90 + .word 204,90 + + .word 164,135 + .word 204,135 + + .word 164,180 + .word 204,180 + + .word 0 + + +#***************************************************************************** +* Process that handles player selection for one player. +* >a10 = player (0 or 1) + + STRUCTPD + LONG #HILITE ;UHL *hilite ring + + LONG #HIPLATE ;UHL *color crouton + + LONG #NAME ;UHL *name obj (message *obj) + WORD #RND_DEST ;UHW target if in random mode + + LONG #MUG1 + LONG #MUG2 + LONG #MUG3 + LONG #MUG4 + LONG #MUG5 + LONG #MUG6 + LONG #MUG7 + LONG #MUG8 + + LONG #ATT1 + LONG #ATT2 + LONG #ATT3 + LONG #ATT4 + WORD #CNTR ;Flashing cursor delay + + +;player info struct +#PI_HILITE equ 0 ;UHL hilite box TBL_ hdr +#PI_HIPLATE equ 20h ;UHL hilite plate TBL_ hdr +#PI_STARTPOS equ 40h ;UHW starting pos (index) +#PI_MUGPOS equ 50h ;UHL mugshot [y,x] +#PI_MUGXPOS equ 50h ;UHW mugshot x +#PI_MUGYPOS equ 60h ;UHW mugshot y +#PI_MUGCTRL equ 70h ;UHW mugshot OCTRL +#PI_STARTNAME equ 80h ;UHL starting name TBL_ hdr +#PI_ATTTXT equ 0A0h ;UHL atttribute text TBL_ hdr +#PI_INDEX equ 0C0h ;UHL write selection word here +#PI_MOVESOUND equ 0E0h ;UHW cursor move triple_sound +#PI_SELSOUND equ 0F0h ;UHW select sound + +#rnd_movespeed equ 5 ;ticks between rndsel moves + +#rnd_wander equ 14 ;rnd moves before home-in begins + + SUBRP player_cursor + + ;reg use + ; a6 = ticks until another move is allowed (debounce) + ; a6 = ticks until next move (random mode) + ; a7 = moves until home-in (random mode) + ; a9 = player info struct pointer + ; a10 = player number + ; a11 = position index (0-9) + + ;aim a9 at #p?info + move a10,a9 + X32 a9 + addi #info,a9 + move *a9,a9,L + + ;initialize the index word to -1 + movi -1,a14 + move *a9(#PI_INDEX),a0,L + move a14,*a0,W + + ;initialize random dest to -1 + movi -1,a14 + move a14,*a13(#RND_DEST) + + clr a0 + move a0,*a13(#NAME),L + movk 30,a0 + move a0,*a13(#CNTR) + ;active? + move @PSTATUS,a14 + btst a10,a14 + jrnz #begin_select + + move @OLD_PSTATUS,a14 + btst a10,a14 + jrz #norm + +;This guy lost his last match: +;did this guy get a high win streak ? + move a10,a8 + mmtm sp,a6,a7,a8,a9,a10,a11 + jsrp winstreak_check + mmfm sp,a6,a7,a8,a9,a10,a11 + +are_we_waiting + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ FINISHED_INPUTTING + sleep 1 + movi CYCPID,a0 + movi -1,a1 + calla EXISTP + jrnz are_we_waiting + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ FINISHED_INPUTTING + mmtm sp,a10,a9,a8 + calla do_that_cycle + mmfm sp,a10,a9,a8 + jruc are_we_waiting + +FINISHED_INPUTTING + + ;create the name text + move *a9(#PI_STARTNAME),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#NAME),L + +;Display please continue message +;Display price to continue +;Turn on continue timer at bottom of screen (Attribute area) + +;Wait for him to make a decision +;If he continues, turn on cursor, etc. +;If he does not continue, start the other players time out for +;player selection (If other plyr is present) + + CREATE0 buyin_counter + callr buyin_text + +;/Inactive. wait for buyin +;Display the insert coin/press start message + +#enough_money1 + calla CR_CONTP + jrhs #enough_money2 +;There's not enough money. flash 'insert coins' message and wait + move *a13(#NAME),a8,L + movi WF_INSERT,a0 + calla civanic + jruc #start_waitloop1 +#enough_money2 +;There's enough money. flash 'press start' message and wait + move *a13(#NAME),a8,L + movi WF_START,a0 + calla civanic + +#start_waitloop1 + move @OLD_PSTATUS,a14 + btst a10,a14 + jrnz #okz + + move @PSTATUS,a14 + btst a10,a14 + jrnz #okz +;Timer has run out on this player + move @PSTATUS,a0 + jrnz #still + +;Goto game over. +THIS_GAME_IS_BEATEN + CLR A0 + MOVE A0,@PSTATUS + + movi INGAMEOVER,a14 ;set GAMSTATE + move a14,@GAMSTATE + movi GAMEOVER_PID,a14 ;set our PID + move a14,*a13(PROCID) + + calla display_blank + calla WIPEOUT + + movi LN1b_setup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a0,@mess_objid ;OBJ ID's for text + movi #str_game,a4 + calla print_string_C2 + + movi LN2b_setup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a0,@mess_objid ;OBJ ID's for text + movi #str_over,a4 + calla print_string_C2 + + SLEEPK 1 + + .ref UNIT_CLR,attract_mode + .ref lgmd_ascii + + MOVI -1,A11 + MOVI 100,A8 + CREATE0 FADE_MASTER_VOL + + calla display_unblank + SLEEP TSEC*4 + calla UNIT_CLR ;CLEAR THE FACTIONS OF FRACTIONS + + movi AMODE_PID,a0 + move a0,*a13(PROCID) + jauc attract_mode + +LN1b_setup + JAM_STR lgmd_ascii,6,0,200,128-10-61,LGMDBLU,0 +LN2b_setup + JAM_STR lgmd_ascii,6,0,200,128,LGMDBLU,0 +#str_game + .byte "GAME",0 +#str_over + .byte "OVER",0 + .even + +#still +;Other player is in game + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + calla obj_del1c +;If other player has already picked his wrestler, just blow out of here +;otherwise, goto challenger needed screen stuff... + move @active_flag,a14 ;don't quit if someone jumps in here + jrnz #norm +;Tell buyin_select proc to wake up and exit! + movk 1,a0 + move a0,@blow_out + + DIE + +#okz + SLEEPK 1 + + callr #blink + + move @PSTATUS,a14 + btst a10,a14 + jrz #enough_money1 + +; jrz #start_waitloop1 + + move *a8(OXPOS),a0 + andi 1ffh,a0 + move a0,*a8(OXPOS) + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + calla obj_del1c + + SLEEPK 1 ;Fix pal glitch! + + jruc #begin_select + +#norm + + ;create the name text + move *a9(#PI_STARTNAME),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#NAME),L + +;Place a message which reads: +;Challenger needed! +;x credits to start +;Unless we are in freeplay! Then +;just display challenger needed centered +;in the box! + + movk ADJFREPL,a0 ;Are we in free play? + calla GET_ADJ + jrz #not_freeply + +;Print free play + movi #ln0_setup,a2 + move a10,a10 + jrz #ok2c + movi #ln0_setupb,a2 +#ok2c calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text0,a4 + calla print_string_C2 + + + +;Print centered "challenger needed" message + movi #ln1_setup,a2 + move a10,a10 + jrz #ok + movi #ln1_setupb,a2 +#ok calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text,a4 + calla print_string_C2 + + movi #ln2_setup,a2 + move a10,a10 + jrz #ok4 + movi #ln2_setupb,a2 + jruc #ok4 + +#not_freeply +;Print how many credits to start + PUSH a8 + movk ADJCSTRT,a0 + calla GET_ADJ ;GET NUMBER NEEDED + move a0,a3 + cmpi 10,a0 + jrlt #max + movk 9,a0 +#max + sll 5,a0 + addi digits_tbl,a0 + move *a0,a2,L ;* image + + movi [050,0],a0 ;x pos + cmpi 1,a3 + jrnz #not1 + movi [054,0],a0 ;x pos +#not1 move a10,a10 + jrz #zp1 + movi [0122h,0],a0 ;x pos + cmpi 1,a3 + jrnz #zp1 + movi [0126h,0],a0 ;x pos +#zp1 + movi [110,0],a1 ;y pos + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi CLSNEUT|TYPTEXT|SUBOVRHED,a5 + add a10,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + movi FNT9YEL_P,b0 + calla BEGINOBJP + PULL a8 + + movi #ln3_setup,a2 + move a10,a10 + jrz #ok2 + movi #ln3_setupb,a2 +#ok2 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text3,a4 + movk ADJCSTRT,a0 + calla GET_ADJ ;GET NUMBER NEEDED + cmpi 1,a0 + jrnz #not1b + movi #str_text3b,a4 +#not1b + calla print_string_C2 + + movi #ln4_setup,a2 + move a10,a10 + jrz #ok2B + movi #ln4_setupb,a2 +#ok2B calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text4,a4 + calla print_string_C2 + + +;Print "challenger needed" message + movi #ln1_setupx,a2 + move a10,a10 + jrz #ok3 + movi #ln1_setupxb,a2 +#ok3 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text,a4 + calla print_string_C2 + + movi #ln2_setupx,a2 + move a10,a10 + jrz #ok4 + movi #ln2_setupxb,a2 +#ok4 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text2,a4 + calla print_string_C2 + +;Inactive. wait for buyin +;Create the insert coin/press start message + +#enough_money + calla CR_STRTP + jrhs #enough_money3 +;There's not enough money. flash 'insert coins' message and wait + move *a13(#NAME),a8,L + movi WF_INSERT,a0 + calla civanic + jruc #start_waitloop +#enough_money3 +;There's enough money. flash 'press start' message and wait + move *a13(#NAME),a8,L + movi WF_START,a0 + calla civanic + + +#start_waitloop + SLEEPK 1 + + callr #blink + + move @PSTATUS,a14 + btst a10,a14 + jrz #enough_money + +; jrz #start_waitloop + + move *a8(OXPOS),a0 + andi 1ffh,a0 + move a0,*a8(OXPOS) + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + calla obj_del1c + + SLEEPK 1 ;Fix pal glitch! + + jruc #begin_select + + + +#ln0_setup + JAM_STR font9_ascii,8,0,81,120,FNT9YEL_P,0 +#ln0_setupb + JAM_STR font9_ascii,8,0,321,120,FNT9YEL_P,0 + +#ln1_setup + JAM_STR font9_ascii,8,0,81,80,FNT9YEL_P,0 +#ln1_setupb + JAM_STR font9_ascii,8,0,321,80,FNT9YEL_P,0 + +#ln2_setup + JAM_STR font9_ascii,8,0,81,95,FNT9YEL_P,0 +#ln2_setupb + JAM_STR font9_ascii,8,0,321,95,FNT9YEL_P,0 + +#ln1_setupx + JAM_STR font9_ascii,8,0,81,60,FNT9YEL_P,0 +#ln1_setupxb + JAM_STR font9_ascii,8,0,321,60,FNT9YEL_P,0 + +#ln2_setupx + JAM_STR font9_ascii,8,0,81,75,FNT9YEL_P,0 +#ln2_setupxb + JAM_STR font9_ascii,8,0,321,75,FNT9YEL_P,0 + + +#ln3_setup + JAM_STR font9_ascii,8,0,81,110,FNT9YEL_P,0 +#ln3_setupb + JAM_STR font9_ascii,8,0,321,110,FNT9YEL_P,0 + +#ln4_setup + JAM_STR font9_ascii,8,0,81,125,FNT9YEL_P,0 +#ln4_setupb + JAM_STR font9_ascii,8,0,321,125,FNT9YEL_P,0 + +#str_text + .string "CHALLENGER",0 +#str_text0 + .string "FREE PLAY",0 +#str_text2 + .string "NEEDED!",0 +#str_text3 + .string " CREDITS",0 +#str_text3b + .string " CREDIT",0 +#str_text4 + .string "TO START",0 + .even + +#begin_select + MOVE @no_pin_check,A0 + JRNZ are_we_waiting2 + + move a10,a8 + mmtm sp,a6,a7,a8,a9,a10,a11 + jsrp pin_speed_check + mmfm sp,a6,a7,a8,a9,a10,a11 + + move @PSTATUS,A0 + CMPI 3,A0 + JREQ are_we_waiting2 + + movi 60,a0 + move a0,@are_we_waiting_f + +are_we_waiting2 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ FINISHED_INPUTTING2 + sleep 1 + movi CYCPID,a0 + movi -1,a1 + calla EXISTP + jrnz are_we_waiting2 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ FINISHED_INPUTTING2 + mmtm sp,a10,a9,a8 + calla do_that_cycle + mmfm sp,a10,a9,a8 + jruc are_we_waiting2 + +FINISHED_INPUTTING2 + + MOVI CLOCK_PID,A0 + movi -1,a1 + CALLA EXISTP + JRNZ CLOCK_ALREADY_TICKING + + PUSH A10 + CREATE CLOCK_PID,select_clock + move a0,a10 + CREATE0 clock_digits + PULL A10 + +CLOCK_ALREADY_TICKING + + move *a13(#NAME),a8,L + jrnz no_need_to_create + + ;create the name text + move *a9(#PI_STARTNAME),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#NAME),L +no_need_to_create + + move @total_matches,a14 + jrnz HOWARD_ALREADY_GOING + move @DONE_HOWARD,a14 + jrnz HOWARD_HAS_SPOKEN + +GOOD_EVENING + movi 1Fbh,a0 + CALLA ADD_VOICE + movi 1Fch,a0 + CALLA ADD_VOICE + movi 1Fdh,a0 + CALLA ADD_VOICE + + movk 1,a0 + move a0,@DONE_HOWARD + JRUC HOWARD_HAS_SPOKEN + +HOWARD_ALREADY_GOING + move @DONE_HOWARD,a14 + jrnz HOWARD_HAS_SPOKEN + MOVI 100,A0 + CALLA RNDPER + jrls HOWARD_HAS_SPOKEN + + SUBI 50,A0 + JRN GOOD_EVENING + movi 1Ffh,a0 + CALLA ADD_VOICE + + movk 1,a0 + move a0,@DONE_HOWARD +HOWARD_HAS_SPOKEN + + ;set our active bit if it's not already set + move @active_flag,a14 + move a10,a0 + inc a0 + or a0,a14 + move a14,@active_flag + + ;initialize index + move *a9(#PI_STARTPOS),a11 + + ;initialize #MUG? + movk 8,a0 + clr a1 + move a13,a2 + addi #MUG1,a2 +#initloop + move a1,*a2+,L + dsj a0,#initloop + + ;create our attrib text + move *a9(#PI_ATTTXT),a0,L + calla BEGINOBJ_TBL + move *a8(OXVAL),a0,L + move *a8(OYVAL),a1,L + + ;create the att bars + addi [63,0],a0 + addi [12,0],a1 + movi ATTMTR_0,a2 + movi atttxt_z,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + + PUSH a10,a11 + + movi 4,a10 ;bar count + move a13,a11 + addi #ATT1,a11 + +#abc_loop + PUSH a0,a1,a2,a3,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a2,a3,a4,a5,a6,a7 + move a8,*a11+,L + addi [8,0],a1 + dsj a10,#abc_loop + + PULL a10,a11 + + ;create our cursors + move *a9(#PI_HILITE),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#HILITE),L + + move *a9(#PI_HIPLATE),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#HIPLATE),L + + jruc #first_adjust + +#blink + move *a13(#CNTR),a0 + dec a0 + move a0,*a13(#CNTR) + jrp #cont + movk 22,a0 + move a0,*a13(#CNTR) + move *a8(OXPOS),a0 + xori 1000h,a0 + move a0,*a8(OXPOS) +#cont + rets + + + .if 0 + +;Color cycle cursors... +;Good example for future cycles.... + + PUSH a8,a9,a10,a11 + + move a10,a10 + jrz #blue + + movi [1,1],a8 + movi CRHI_R_P,a9 + movi redcyc_tbl,a10 + movk 4,a11 + CREATE CYCPID,CYCLE_TABLE + jruc #out + +#blue + movi [1,1],a8 + movi CRHI_B_P,a9 + movi blucyc_tbl,a10 + movk 4,a11 + CREATE CYCPID,CYCLE_TABLE + +#out PULL a8,a9,a10,a11 + + jruc #first_adjust + + +blucyc_tbl + .word 0041fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0081fh,00c1fh,0101fh,0141fh,0181fh + .word 01c1fh,0201fh,0241fh,0281fh,02c1fh,0301fh,0341fh,0381fh + .word 03c1fh,0401fh,0441fh,0481fh,04c1fh,0501fh,0541fh,0581fh + .word 05c1fh,0601fh,0641fh,0681fh,06c1fh,0701fh + .word 0741fh,0701fh,06c1fh,0681fh,0641fh,0601fh,05c1fh + .word 0581fh,0541fh,0501fh,04c1fh,0481fh,0441fh,0401fh,03c1fh + .word 0381fh,0341fh,0301fh,02c1fh,0281fh,0241fh,0201fh,01c1fh + .word 0181fh,0141fh,0101fh,00c1fh,0081fh,0041fh + + .word 0041fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0081fh,00c1fh,0101fh,0141fh,0181fh + .word 01c1fh,0201fh,0241fh,0281fh,02c1fh,0301fh,0341fh,0381fh + .word 03c1fh,0401fh,0441fh,0481fh,04c1fh,0501fh,0541fh,0581fh + .word 05c1fh,0601fh,0641fh,0681fh,06c1fh,0701fh + .word 0741fh,0701fh,06c1fh,0681fh,0641fh,0601fh,05c1fh + .word 0581fh,0541fh,0501fh,04c1fh,0481fh,0441fh,0401fh,03c1fh + .word 0381fh,0341fh,0301fh,02c1fh,0281fh,0241fh,0201fh,01c1fh + .word 0181fh,0141fh,0101fh,00c1fh,0081fh,0041fh + .word -1 + +redcyc_tbl + .word 07c20h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c40h,07c60h,07c80h,07ca0h,07cc0h + .word 07ce0h,07d00h,07d20h,07d40h,07d60h,07d80h,07da0h,07dc0h + .word 07de0h,07e00h,07e20h,07e40h,07e60h,07e80h,07ea0h + .word 07ec0h,07ee0h,07f00h,07f20h,07f40h,07f60h,07f80h + .word 07fa0h,07f80h,07f60h,07f40h,07f20h,07f00h,07ee0h,07ec0h + .word 07ea0h,07e80h,07e60h,07e40h,07e20h,07e00h,07de0h + .word 07dc0h,07da0h,07d80h,07d60h,07d40h,07d20h,07d00h,07ce0h + .word 07cc0h,07ca0h,07c80h,07c60h,07c40h,07c20h + + .word 07c20h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c40h,07c60h,07c80h,07ca0h,07cc0h + .word 07ce0h,07d00h,07d20h,07d40h,07d60h,07d80h,07da0h,07dc0h + .word 07de0h,07e00h,07e20h,07e40h,07e60h,07e80h,07ea0h + .word 07ec0h,07ee0h,07f00h,07f20h,07f40h,07f60h,07f80h + .word 07fa0h,07f80h,07f60h,07f40h,07f20h,07f00h,07ee0h,07ec0h + .word 07ea0h,07e80h,07e60h,07e40h,07e20h,07e00h,07de0h + .word 07dc0h,07da0h,07d80h,07d60h,07d40h,07d20h,07d00h,07ce0h + .word 07cc0h,07ca0h,07c80h,07c60h,07c40h,07c20h + .word -1 + + .endif + + +#adjust + move *a9(#PI_MOVESOUND),a0 + + move *a13(#RND_DEST),a14 + jrn #move_sound_ok + movi 18h,a0 +#move_sound_ok + + calla triple_sound + callr #erase_mugshot +#first_adjust + callr #place_cursor + callr #draw_mugshot + callr #update_name + callr #update_attbars + + ;set a6 to debounce value if not rndsel, or to move time if rndsel + move *a13(#RND_DEST),a14 + jrnn #waitloop + movk 3,a6 + + clr a0 + move a0,*a8(OCONST) ;Clr color + move a0,*a13(#CNTR) + +#waitloop + + callr #place_cursor + + ;flash the hilightes + move *a13(#HIPLATE),a8,L + move *a8(OZPOS),a14 + xori 1,a14 + move a14,*a8(OZPOS) + + move *a13(#HILITE),a8,L + move *a8(OZPOS),a14 + xori 1,a14 + move a14,*a8(OZPOS) + + PUSHP a6,a7 + SLEEPK 1 + PULLP a6,a7 + +;Flash cursors white + + move *a13(#CNTR),a14 + dec a14 + move a14,*a13(#CNTR) + jrp #normz + movk 8,a14 + move a14,*a13(#CNTR) + + PUSH a6,a7,a9 + movi 0202h,a9 + CREATE0 FLASHME + .ref FLASHME + PULL a6,a7,a9 +#normz + + ;are we in random mode? + move *a13(#RND_DEST),a14 + jrn #not_rndsel + + ;we're in random select + dsj a6,#waitloop + + ;time to move again + movi #rnd_movespeed,a6 ;set time to next move + dec a7 + jrp #move_at_random + + ;move toward final destination + ;if we're there, take it + move *a13(#RND_DEST),a14 + cmp a14,a11 + jreq #but_hit + + ;not there. one time in three, move at random anyway + movk 3,a0 + calla RNDRNG0 + TEST a0 + jrz #move_at_random + + ;if we're in the correct row, move sideways + move *a13(#RND_DEST),a14 + xor a11,a14 + srl 1,a14 + jrz #rnd_move_sideways + + ;okay, move toward the correct row + move *a13(#RND_DEST),a14 + cmp a11,a14 + jrlt #stick_up + jruc #stick_down + +#move_at_random + ;move in a random direction, but only in legal directions + movk 2,a0 + calla RNDRNG0 + cmpi 2,a0 + jreq #rnd_move_up + cmpi 1,a0 + jreq #rnd_move_down + + ;move sideways by toggling bit zero in the index +#rnd_move_sideways + xori 1,a11 + jruc #adjust + +#rnd_move_up + cmpi 2,a11 + jrge #stick_up + + ;moving up isn't legal. move sideways or down + movi 1,a0 + calla RNDRNG0 + TEST a0 + jrz #rnd_move_sideways + jruc #stick_down + +#rnd_move_down + cmpi 5,a11 + jrle #stick_down + + ;moving down isn't legal. move sideways or up + movi 1,a0 + calla RNDRNG0 + TEST a0 + jrz #rnd_move_sideways + jruc #stick_up + +#not_rndsel + ;if time is out, pick whoever we're on. + move @time_out,a14 + jrnz #but_hit + + ;begin random select? + move a10,a0 + calla get_start_cur + jrz #button_checks + + ;start is down. check stick + move a10,a0 + calla get_stick_val_cur + btst JOYUP,a0 + jrz #button_checks + + ;stick is up. check position + move *a9(#PI_STARTPOS),a14 + cmp a11,a14 + jreq #begin_random_select + +#button_checks + move @are_we_waiting_f,a14 + jrnz no_check_buts_yet + + ;button checks + move a10,a0 + calla get_but_val_down + TEST a0 + jrnz #but_hit +no_check_buts_yet + + dec a6 + jrp #waitloop + clr a6 + + ;stick checks + move a10,a0 + calla get_stick_val_down + btst JOYDN,a0 + jrnz #stick_down + btst JOYUP,a0 + jrnz #stick_up + btst JOYLFT,a0 + jrnz #stick_left + btst JOYRGT,a0 + jrnz #stick_right + jruc #waitloop + +#stick_down + ;add 2 unless the index is 6 or 7 + cmpi 6,a11 + jrge #waitloop + addi 2,a11 + jruc #adjust + +#stick_up + ;sub 2 unless index is 0 or 1 + cmpi 2,a11 + jrlt #waitloop + subi 2,a11 + jruc #adjust + +#stick_left + ;sub 1 unless index is even + btst 0,a11 + jrz #waitloop + dec a11 + jruc #adjust + +#stick_right + ;add 1 unless index is odd + btst 0,a11 + jrnz #waitloop + inc a11 + jruc #adjust + +#begin_random_select + +;Print text message + movi #message_setup,a2 + move a10,a10 + jrz #p1m + movi #message_setup2,a2 +#p1m + calla setup_message + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a10,a10 + jrz #p1x + movi CLSNEUT|TYPTEXT|SUBMES2,a0 +#p1x + move a0,@mess_objid + + movi #message_string,a4 + calla print_string_C2 + + movi 7,a0 + calla RNDRNG0 + move a0,*a13(#RND_DEST) + movi #rnd_movespeed,a6 + movi #rnd_wander,a7 + jruc #waitloop + + .ref font9_ascii + .ref pal_getf,setup_message + .ref mess_objid,print_string_C2 + + +blink_rndper + + movi FNT9RED_P,a0 + calla pal_getf + move a0,a9 + + movi FNT9WHT_P,a0 + calla pal_getf + + movi OBJLST,a14 +#lpz + move *a14,a14,L + jrz #x + move *a14(OPAL),a2 + cmp a0,a2 + jrne #lpz + + move *a14(OID),a2 + cmpi CLSNEUT|TYPTEXT|SUBMES1,a2 + jreq #lpdo + cmpi CLSNEUT|TYPTEXT|SUBMES2,a2 + jrne #lpz +#lpdo + move a9,*a14(OPAL) + jruc #lpz + +#x SLEEPK 4 + + movi FNT9RED_P,a0 + calla pal_getf + move a0,a9 + + movi FNT9WHT_P,a0 + calla pal_getf + + movi OBJLST,a14 +#lp2 + move *a14,a14,L + jrz #x2 + move *a14(OPAL),a2 + cmp a9,a2 + jrne #lp2 + + move *a14(OID),a2 + cmpi CLSNEUT|TYPTEXT|SUBMES1,a2 + jreq #lpdo2 + cmpi CLSNEUT|TYPTEXT|SUBMES2,a2 + jrne #lp2 +#lpdo2 + move a0,*a14(OPAL) + jruc #lp2 + +#x2 SLEEPK 7 + + jruc blink_rndper + + +#message_setup + JAM_STR font9_ascii,5,0,79,15,FNT9WHT_P,0 + +#message_setup2 + JAM_STR font9_ascii,5,0,321,15,FNT9WHT_P,0 + +#message_string + .string "CALLA RNDPER",0 + + .even + + +#but_hit + ;they hit a button. Stick 'em with the current guy. + +;Erase rndper message for this player + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a10,a10 + jrz #p1c + movi CLSNEUT|TYPTEXT|SUBMES2,a0 +#p1c + calla obj_del1c + + move *a9(#PI_INDEX),a0,L + ;rewire kludge + move a11,a14 + X16 a14 + addi scramble_table,a14 + move *a14,a14,W + move a14,*a0 + + move a10,a1 + sll 4,a1 + addi which_player,a1 + move a14,*a1 + + MOVI SEL_SPCH_PID1,A1 + ADD A10,A1 + MOVE A0,A8 + MOVI SPEAK_TO_ME,A7 + CALLA GETPRC + + ;make a joyful noise unto the player + move *a9(#PI_SELSOUND),a0 + calla triple_sound + + ;clear our bit in the active flag + move @active_flag,a0 + move a10,a14 + inc a14 + andn a14,a0 + move a0,@active_flag + + ;flash over the crouton + ;synch! begin flashing on an even PCNT + move @PCNT,a14 + btst 0,a14 + jrnz #synch + SLEEPK 1 + +#synch + move *a13(#HILITE),a8,L + movi TSEC/4,a9 +#flashloop + movi 0202h,a14 + move a14,*a8(OCONST) + move *a8(OCTRL),a14 + xori M_CONZER,a14 + move a14,*a8(OCTRL) + SLEEPK 2 + dsj a9,#flashloop + + move *a8(OCTRL),a14 + andni M_CONZER,a14 + move a14,*a8(OCTRL) + + movi hilite_z,a14 + move a14,*a8(OZPOS) + + move *a13(#HIPLATE),a8,L + movi hiplate_z,a14 + move a14,*a8(OZPOS) + +#lp + SLEEPK 1 + callr #place_cursor + jruc #lp + + +******** +* moves cursor to the current index position + + SUBRP #place_cursor + + PUSH a2,a3,a7,a8 + + move a11,a1 + X32 a1 + addi crouton_pos_table,a1 + move *a1+,a2,W + move *a1,a3,W + + move *a13(#HILITE),a7,L + move *a13(#HIPLATE),a8,L + + move a2,*a8(OXPOS) + move a3,*a8(OYPOS) + + move a10,a10 + jrz #p1 + move @kp_p1cursor,a8,L + move *a8(PA11),a8 + cmp a8,a11 + jrnz #p1 + addk 2,a2 + addk 2,a3 +#p1 + move a2,*a7(OXPOS) + move a3,*a7(OYPOS) + + PULL a2,a3,a7,a8 + rets + + +******** +* updates the name text + + SUBRP #update_name + + PUSH a8,a11 + + ;rewiring kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + + move a11,a0 + X32 a0 + addi name_tbl,a0 + move *a0,a0,L + move *a13(#NAME),a8,L + calla civanic + + PULL a8,a11 + + rets + +******** +* erases current mugshot + + SUBRP #erase_mugshot + + PUSH a5,a6,a8 + + movk 8,a6 + move a13,a5 + addi #MUG1,a5 +#eraseloop + move *a5+,a0,L + calla DELOBJ + dsj a6,#eraseloop + + PULL a5,a6,a8 + + rets + + +******** +* draws a new mugshot + + SUBRP #draw_mugshot + + ;reg use + ;a10 = PDATA pointer + ;a11 = mug pointer + + PUSH a6,a7,a8,a10,a11 + + ;rewiring kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + + X32 a11 + addi wrestler_mugs,a11 + move *a11,a11,L + + move a13,a10 + addi #MUG1,a10 + move *a11+,a2,L + +#drawloop + move *a9(#PI_MUGXPOS),a0 + move *a9(#PI_MUGYPOS),a1 + sla 16,a0 + sla 16,a1 + movi mugshot_z,a3 + move *a9(#PI_MUGCTRL),a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + move a8,*a10+,L + + move *a11+,a2,L + jrz #done + jruc #drawloop + +#done + PULL a6,a7,a8,a10,a11 + rets + + +******** +* updates the attribute bars + + SUBRP #update_attbars + + PUSH a7,a10,a11 + + + ;rewiring kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + + move a11,a10 + X64 a10 + addi wrestler_attributes,a10 + move a13,a11 + addi #ATT1,a11 + + movi 4,a7 +#ualoop + move *a10+,a0,W + X32 a0 + addi attbars,a0 + move *a0,a0,L + move *a11+,a8,L + calla civanic + dsj a7,#ualoop + + PULL a7,a10,a11 + rets + +wrestler_attributes + .word 0,1,2,3 + .word 4,5,6,7 + .word 8,9,0,1 + .word 2,3,4,5 + .word 6,7,8,9 + .word 0,1,2,3 + .word 4,5,6,7 + .word 8,9,0,1 + .word 9,9,9,9 + +scramble_table ;swap bret and doink on the select page + .word 6 + .word 1,2,3,4,5 + .word 0 + .word 8 ;put lex in place of adam + +attbars + .long ATTMTR_0,ATTMTR_1,ATTMTR_2,ATTMTR_3,ATTMTR_4 + .long ATTMTR_5,ATTMTR_6,ATTMTR_7,ATTMTR_8,ATTMTR_9 + +#info + .long #p1info,#p2info + +#p1info + .long #hi_b,#plt_b ;hilite, crouton + .word 0 ;start index + .word 0+18+2,175 ;mug position + .word DMAWNZ|M_3D|M_SCRNREL ;mug octrl + .long #p1name,latttxt ;start name,att text + .long index1 ;report choice to + .word 0c8h,0cbh ;cursor/select sounds + +#p2info + .long #hi_r,#plt_r ;hilite, crouton + .word 1 ;start index + .word 400-18,175 ;mug position + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;mug octrl + .long #p2name,ratttxt ;start name,att text + .long index2 ;report choice to + .word 0c7h,0cch ;cursor/select sounds + + +#plt_b .word 0,0,hiplate_z ;X,Y,Z + .long CRUTPLT_B ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#plt_r .word 0,0,hiplate_z+1 ;X,Y,Z + .long CRUTPLT_R ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#hi_b .word 0,0,hilite_z ;X,Y,Z + .long CRUTHI_B ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#hi_r .word 0,0,hilite_z+1 ;X,Y,Z + .long CRUTHI_R ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#p1name .word >51,184,name_z + .long WF_INSERT + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSNEUT|TYPNEUT + .long 0,0 + +#p2name .word >142,184,name_z + .long WF_INSERT + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSNEUT|TYPNEUT + .long 0,0 + +latttxt .word 0+18,189,atttxt_z ;X, Y, Z + .long ATT_TXT ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +ratttxt .word 400-18-124,189,atttxt_z ;X, Y, Z + .long ATT_TXT ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +;Mugshot stuff + +wrestler_mugs + .long BHARTMUG + .long RAZORMUG + .long UNDERMUG + .long YOKOMUG + .long MICHAELMUG + .long BAMBAMMUG + .long DOINKMUG + .long 0 + .long LUGERMUG + +wrestler_mugs2 + .long BHARTMUG + .long RAZORMUG + .long UNDERMUG + .long YOKOMUG + .long MICHAELMUG + .long BAMBAMMUG + .long DOINKMUG +; .long ADAMMUG + .long LUGERMUG + +BHARTMUG + .long BHMUG_A,BHMUG_B,BHMUG_C,BHMUG_D + .long BHMUG_E,BHMUG_F,BHMUG_G,BHMUG_H,0 +RAZORMUG + .long RRMUG_A,RRMUG_B,RRMUG_C,RRMUG_D + .long RRMUG_E,RRMUG_F,RRMUG_G,RRMUG_H,0 +UNDERMUG + .long UNMUG_A,UNMUG_B,UNMUG_C,UNMUG_D + .long UNMUG_E,UNMUG_F,UNMUG_G,UNMUG_H,0 +YOKOMUG + .long YKMUG_A,YKMUG_B,YKMUG_C,YKMUG_D + .long YKMUG_E,YKMUG_F,YKMUG_G,YKMUG_H,0 +MICHAELMUG + .long SMMUG_A,SMMUG_B,SMMUG_C,SMMUG_D + .long SMMUG_E,SMMUG_F,SMMUG_G,SMMUG_H,0 +BAMBAMMUG + .long BMMUG_A,BMMUG_B,BMMUG_C,BMMUG_D + .long BMMUG_E,BMMUG_F,BMMUG_G,BMMUG_H,0 +DOINKMUG + .long DKMUG_A,DKMUG_B,DKMUG_C,DKMUG_D + .long DKMUG_E,DKMUG_F,DKMUG_G,DKMUG_H,0 +LUGERMUG + .long LXMUG_A,LXMUG_B,LXMUG_C,LXMUG_D + .long LXMUG_E,LXMUG_F,LXMUG_G,LXMUG_H,0 + +name_tbl + .long NAM_BRT,NAM_RZR,NAM_UND,NAM_YOK + .long NAM_SHN2,NAM_BAM2,NAM_DNK,0,NAM_LEX + +#***************************************************************************** +* Player select clock - sets time_out when it runs out of time +* + + SUBR select_clock + + ;reg use + ; a8 - current pstatus + ; a9 - time remaining + +#select_time equ TSEC*25 + +#reset + movi #select_time,a9 + move @PSTATUS,a8 + +#waitloop + SLEEPK 1 + move @PSTATUS,a14 + cmp a14,a8 + jrne #reset ;new buyin. reset + + dsj a9,#waitloop + +;If other player is still thinking about buying in or is +;still entering his initials, then go to #reset + + move @OLD_PSTATUS,a0 + jrnz #reset + + movk 1,a14 + move a14,@time_out + + DIE + +clock_digits +;When player select time gets down to 5 seconds, display it... +;a10=select_clock *PROC + + movi [0cbh,0],a0 ;x pos + movi [232,0],a1 ;y pos + movi FNT9_5,a2 ;* image + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + movk 4,a11 +#loop0 callr obj_off + +#loop SLEEPK 1 + move @time_out,a0 + janz SUCIDE + + move @OLD_PSTATUS,a0 + jrnz #loop0 + + move *a10(PA9),a0 + srl 6,a0 + cmp a0,a11 + jrz #loop + cmpi 6,a0 + jrge #loop0 + +;New digit time + move a0,a11 + sll 5,a0 + + addi digits_tbl,a0 + move *a0,a0,L ;* image + + move *a8(OCTRL),a1 ;DMA flags + calla change_image + callr obj_on + + move a11,a14 + callr setup_clock_sound + jruc #loop + +digits_tbl + .long FNT9_0,FNT9_1,FNT9_2,FNT9_3,FNT9_4 + .long FNT9_5,FNT9_6,FNT9_7,FNT9_8,FNT9_9 + + + .ref wait_on_butn + +#***************************************************************************** +* One player ladder of progression +* + + SUBR pregame_show + + +;This will be the ladder type screen, showing the 1 player +;game progression. Chooses the CPU opponent. + +;Show 1 player game ladder of progression +;Scroll horizontally to the next challenger + + .if DEBUG + move @skip_select,a0 + jrz #noskp + + RETP +#noskp + .endif + + move @PSTATUS,a0 + cmpi 3,a0 + jrnz #oneplyrgm + + JSRP CLOSE_PROGRESS_SCREEN + + RETP + +;0 (Bret) +;1 (Razor) +;2 (Taker) +;3 (Yoko) +;4 (Shawn) +;5 (Bam Bam) +;6 (Doink) +;7 spare +;8 (Lex) + +#oneplyr_opp + .word 1,6,1,2,3,4,5,8,1,6 + .word 5,6,1,2,3,4,5,8,1,6 + .word 5,6,1,2,3,4,5,8,1,6 + +#oneplyrgm + + movk 15,a8 + movk 4,a9 + JSRP CLOSE_SCREEN_LINE + + calla SPECIAL_WIPEOUT + JAUC PUT_UP_PROGRESS + RETP + + .ref osgemd_ascii +#ln1_setup + JAM_STR osgemd_ascii,8,0,200,80,BLUE,0 + +#ln2_setup + JAM_STR osgemd_ascii,8,0,200,110,BLUE,0 + +#str_text + .string "SINGLE PLAYER GAME",0 +#str_text2 + .string "LADDER OF PROGRESSION",0 + .even + +#ladder_mod + .long slateBMOD ;wrestler select map + .word 0,0 + .long 0 + + +#***************************************************************************** +* +* INPUT: a8 = * object +*----------------------------------------------------------------------------- + + SUBRP obj_on + move *a8(OYPOS),a0 + andni 400h,a0 + move a0,*a8(OYPOS) + rets + + +#***************************************************************************** +* +* INPUT: a8 = * object +*----------------------------------------------------------------------------- + + SUBRP obj_off + move *a8(OYPOS),a0 + ori 400h,a0 + move a0,*a8(OYPOS) + rets + +****************************************************************************** + +buyin_text + + movk ADJFREPL,a0 ;Are we in free play? + calla GET_ADJ + jrz #not_freeply + +;Print free play + movi #ln0_setup,a2 + move a10,a10 + jrz #ok2c + movi #ln0_setupb,a2 +#ok2c calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text0,a4 + calla print_string_C2 + +;Print centered "PLEASE CONTINUE" message + movi #ln1_setup,a2 + move a10,a10 + jrz #ok + movi #ln1_setupb,a2 +#ok calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text,a4 + calla print_string_C2 + + movi #ln2_setup,a2 + move a10,a10 + jrz #ok4 + movi #ln2_setupb,a2 + calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text2,a4 + calla print_string_C2 + + rets + +#not_freeply +;Print how many credits to start + PUSH a8 + movk ADJCCONT,a0 + calla GET_ADJ ;GET NUMBER NEEDED + move a0,a3 + cmpi 10,a0 + jrlt #max + movk 9,a0 +#max + sll 5,a0 + addi digits_tbl,a0 + move *a0,a2,L ;* image + + movi [050,0],a0 ;x pos + cmpi 1,a3 + jrnz #not1 + movi [054,0],a0 ;x pos +#not1 move a10,a10 + jrz #zp1 + movi [0122h,0],a0 ;x pos + cmpi 1,a3 + jrnz #zp1 + movi [0126h,0],a0 ;x pos +#zp1 + movi [110,0],a1 ;y pos + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi CLSNEUT|TYPTEXT|SUBOVRHED,a5 + add a10,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + movi FNT9YEL_P,b0 + calla BEGINOBJP + PULL a8 + + movi #ln3_setup,a2 + move a10,a10 + jrz #ok2 + movi #ln3_setupb,a2 +#ok2 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text3,a4 + movk ADJCCONT,a0 + calla GET_ADJ ;GET NUMBER NEEDED + cmpi 1,a0 + jrnz #not1b + movi #str_text3b,a4 +#not1b + calla print_string_C2 + + movi #ln4_setup,a2 + move a10,a10 + jrz #ok2B + movi #ln4_setupb,a2 +#ok2B calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text4,a4 + calla print_string_C2 + + +;Print "challenger needed" message + movi #ln1_setupx,a2 + move a10,a10 + jrz #ok3 + movi #ln1_setupxb,a2 +#ok3 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text,a4 + calla print_string_C2 + + movi #ln2_setupx,a2 + move a10,a10 + jrz #ok4 + movi #ln2_setupxb,a2 +#ok4 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text2,a4 + calla print_string_C2 + + rets + +#ln0_setup + JAM_STR font9_ascii,8,0,81,120,FNT9YEL_P,0 +#ln0_setupb + JAM_STR font9_ascii,8,0,321,120,FNT9YEL_P,0 + +#ln1_setup + JAM_STR font9_ascii,8,0,81,80,FNT9WHT_P,0 +#ln1_setupb + JAM_STR font9_ascii,8,0,321,80,FNT9WHT_P,0 + +#ln2_setup + JAM_STR font9_ascii,8,0,81,95,FNT9WHT_P,0 +#ln2_setupb + JAM_STR font9_ascii,8,0,321,95,FNT9WHT_P,0 + +#ln1_setupx + JAM_STR font9_ascii,8,0,81,60,FNT9WHT_P,0 +#ln1_setupxb + JAM_STR font9_ascii,8,0,321,60,FNT9WHT_P,0 + +#ln2_setupx + JAM_STR font9_ascii,8,0,81,75,FNT9WHT_P,0 +#ln2_setupxb + JAM_STR font9_ascii,8,0,321,75,FNT9WHT_P,0 + + +#ln3_setup + JAM_STR font9_ascii,8,0,81,110,FNT9YEL_P,0 +#ln3_setupb + JAM_STR font9_ascii,8,0,321,110,FNT9YEL_P,0 + +#ln4_setup + JAM_STR font9_ascii,8,0,81,125,FNT9YEL_P,0 +#ln4_setupb + JAM_STR font9_ascii,8,0,321,125,FNT9YEL_P,0 + +#str_text + .string "PLEASE",0 +#str_text0 + .string "FREE PLAY",0 +#str_text2 + .string "CONTINUE!",0 +#str_text3 + .string " CREDITS",0 +#str_text3b + .string " CREDIT",0 +#str_text4 + .string "TO CONTINUE",0 + .even + + +****************************************************************************** + + .ref AUD1 + .ref GET_CREDITS + .ref get_start_down + .ref get_but_val_cur + +#cont_timer .equ 9 +#resets_allowed .equ 25 ;People whack on button to reset + +buyin_counter + + move a10,*a13(PDATA+16) ;0 or 1 + + movi AUD_CONTOFF,a0 ;increment the offered audit + calla AUD1 + + movi #resets_allowed,a7 + + jruc #loop_start + +#coin_loop_reset + movi #resets_allowed,a7 + +#loop_reset + calla DELOBJA8 + +#loop_start + calla GET_CREDITS + move a0,a6 + + PUSH a6,a7 + movi [080,0],a0 ;x pos + move *a13(PDATA+16),a10 + move a10,a10 + jrz #p1 + movi [0320,0],a0 ;x pos +#p1 + movi [208,0],a1 ;y pos + movi FNT9_9,a2 ;* image + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi CLSNEUT|TYPTEXT|SUBOVRHED,a5 + add a10,a5 + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + PULL a6,a7 + + move @PSTATUS,a9 + movi TSEC*2,a10 + movi #cont_timer,a11 + +#loop + PUSHP a6,a7 + SLEEPK 1 + PULLP a6,a7 + +;Buyin check + move @PSTATUS,a14 + move *a13(PDATA+16),a0 + btst a0,a14 + jrne #buyin + +;More credits check + calla GET_CREDITS + cmp a0,a6 + jrne #coin_loop_reset + +;Start button check + move a7,a7 + jrz #skip_start_check + +;Any player who hits his start will reset buyin timer! + move *a13(PDATA+16),a0 + calla get_start_down + move a0,a0 + jrnz #start_hit + + move *a13(PDATA+16),a0 + xori 1,a0 + calla get_start_down + move a0,a0 + jrnz #start_hit + +#skip_start_check + +;Regular button check + +;Make these button presses player specific! + + move *a13(PDATA+16),a0 + calla get_but_val_down + move a0,a0 + jrnz #new_button_press + + move *a13(PDATA+16),a0 + calla get_but_val_cur + move a0,a0 + jrnz #old_button_press + +;No buttons down + dsj a10,#loop + +#sec_elapsed +;A second has elapsed. + dec a11 + jrz #timeout + movi TSEC*2,a10 + + move a11,a14 + X32 a14 + addi digits_tbl,a14 + move *a14,a0,L + calla civanic + + move a11,a14 + callr setup_clock_sound + + jruc #loop + +setup_clock_sound +; x16 a14 +; addi which_tick_tock,a14 +; move *a14,a0 + CREATE0 do_next_tick + movi 0B7H,a0 + calla triple_sound + rets + +do_next_tick + SLEEP 12 + MOVI 0B8H,A0 + CALLA triple_sound + DIE + +;which_tick_tock +; .word 0b7h,0b8h,0b7h,0b8h +; .word 0b7h,0b8h,0b7h,0b8h +; .word 0b7h,0b8h,0b7h,0b8h + +#new_button_press +;New press. skip a digit + clr a10 + jruc #sec_elapsed + +#old_button_press +;Button being held. Run clock at triple rate + subk 20,a10 + jrp #loop + jruc #sec_elapsed + +#start_hit +;A PSTATUS-active player has hit a start button. + dec a7 + jruc #loop_reset + +#buyin +;Someone has bought in. + movi AUD_CONTTAKN,a0 ;inc the conts taken audit + calla AUD1 + clr a0 + move a0,@OLD_PSTATUS + move a0,@blow_out + + DIE + +#timeout +;Time ran out! +;If the other player has not bought in, then goto game over +;If the other player is active, and has already chosen his fighter, then +;immediately go into the match +;If he hasn't chosen his fighter, replot the text messages to now read +;Challenger needed, Insert x coins to start (The player blew his opportunity +;to continue the game at the potentially lower price!) +; + clr a0 + move a0,@OLD_PSTATUS + + movk 1,a0 + move a0,@blow_out + + DIE + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/SELECT2.ASM b/BACKUP/SELECT2.ASM new file mode 100644 index 0000000..b9ffbdf --- /dev/null +++ b/BACKUP/SELECT2.ASM @@ -0,0 +1,1279 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 1066, shortly after the Battle of Hastings +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 11/22/93 14:24 +************************************************************** + + .file "select.asm" + .title "wrestling selection screens" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;Mproc equates + .include "display.equ" ;Display proc equates + .include "gsp.equ" ;Gsp asm equates + .include "sys.equ" + .include "game.equ" + .include "audit.equ" + .include "macros.h" + .include "link.equ" + .include "sound.h" + + .include "fontsimg.glo" + .include "mainimg.glo" + .include "bgndtbl.glo" + .include "imgtbl.glo" + +#***************************************************************************** + + ;from AUDIT.ASM + .ref GET_ADJ,CR_STRTP + + ;from BAKGND.ASM + .ref BAKMODS,BGND_UD1 + + ;from DCSSOUND.ASM + .ref triple_sound,wmania_tune + + ;from DISPLAY.ASM + .ref BEGINOBJ_TBL + + ;from HSTD.ASM + .ref RC_BYTE + + ;from MAIN.ASM + .ref dpageflip,IRQSKYE + + ;from ROBO.ASM + .ref civanic + + ;from UTIL.ASM + .ref WIPEOUT,get_all_buttons_down,get_stick_val_down + .ref get_but_val_down,RNDRNG0,get_start_cur,get_stick_val_cur + .ref CYCLE_TABLE + + ;from WRESTLE.ASM + .ref HALT,PSTATUS,PCNT + .ref change_image + + ;for LIFEBAR.ASM + .def num_wrestlers + .ref start_credbox + + ;for ATTRACT.ASM + .def wrestler_mugs,wrestler_attributes,attbars + + ;for WRESTLE.ASM + .def wrestler_audits + + +#***************************************************************************** + + BSSX index1, 16 ;player 1 cursor position + BSSX index2, 16 ;player 2 cursor position + .bss time_out, 16 ;time out flag + .bss active_flag, 16 ;0:player 1 active, 1:player 2 active + +#***************************************************************************** + +num_wrestlers EQU 9 + + .word AUD_SNDERR4,AUD_SNDERR4,AUD_SNDERR4,AUD_SNDERR4 +wrestler_audits + .word AUD_BHART,AUD_BHARTHW,AUD_BHARTC,AUD_BHARTCW + .word AUD_RRAMO,AUD_RRAMOHW,AUD_RRAMOC,AUD_RRAMOCW + .word AUD_UNDER,AUD_UNDERHW,AUD_UNDERC,AUD_UNDERCW + .word AUD_YOKO,AUD_YOKOHW,AUD_YOKOC,AUD_YOKOCW + .word AUD_SMICH,AUD_SMICHHW,AUD_SMICHC,AUD_SMICHCW + .word AUD_BBBIG,AUD_BBBIGHW,AUD_BBBIGC,AUD_BBBIGCW + .word AUD_DCLOW,AUD_DCLOWHW,AUD_DCLOWC,AUD_DCLOWCW + .word AUD_ABOMB,AUD_ABOMBHW,AUD_ABOMBC,AUD_ABOMBCW + .word AUD_LLUGE,AUD_LLUGEHW,AUD_LLUGEC,AUD_LLUGECW +wrestler_auditsX + +SKIP_SELECT equ 0 + +#***************************************************************************** + + SUBR select_screen + +;Temp, stuff @index1,2 for testing wrestlers. + + .if SKIP_SELECT +;0 (Bret) +;1 (Razor) +;2 (Taker) +;3 (Yoko) +;4 (Shawn) +;5 (Bam Bam) +;6 (Doink) +;7 (Adam) +;8 (Lex) + + movk 6,a0 + move a0,@index1 + movk 6,a0 + move a0,@index2 + + RETP + .endif + +;MJT - Start + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi #plyrsel_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + ;play wrestlemania tune + .if MUSIC_ON + CREATE0 wmania_tune + .endif + + ;draw the croutons and their associated pix + movi crouton_pos_table,a9 + movi #crouton_pic_table,a10 + move *a9+,a0 +#crouton_loop + move *a9+,a1 + + + movi CRUTPLT_G,a2 + movi #crutplt_z,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + sll 16,a0 + sll 16,a1 + PUSH a0,a1,a6,a7 + + .if 0 + calla BEGINOBJW + + .endif + + + PULL a0,a1,a6,a7 + move *a10+,a2,L + movi #crutpic_z,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + calla BEGINOBJW + + move *a9+,a0 + jrnz #crouton_loop + + calla start_credbox + + CREATE0 select_clock + move a0,a10 + CREATE0 clock_digits + + + ;initialize flags + move @PSTATUS,a14 + move a14,@active_flag + + clr a14 + move a14,@time_out + + ;create the player cursors + clr a10 + CREATE SELECT_PID,player_cursor + movk 1,a10 + CREATE SELECT_PID,player_cursor + + ;wait for them to finish up + + + SLEEPK 1 + + movk 1,a0 + move a0,@DISPLAYON + calla display_unblank + +;MJT - End + +#waitloop + SLEEPK 1 + move @active_flag,a14 + jrnz #waitloop + + ;players have chosen their guys. wait a sec, then bail + movi TSEC,a8 +#final_waitloop + SLEEPK 1 + + move @active_flag,a14 ;don't quit if someone jumps in here + jrnz #waitloop + + dsj a8,#final_waitloop + + RETP + + +#plyrsel_mod + .long wwfselbkBMOD + .word -40,0 + .long 0 + +#crutplt_z equ 1 +hiplate_z equ 2 ;oscillates from 2 to 3 +#crutpic_z equ 4 +hilite_z equ 5 + +#baseshad_z equ 1 +#hishad_z equ 2 +#attplt_z equ 3 +#sidebar_z equ 3 +#nameshad_z equ 5 +#namebar_z equ 7 +atttxt_z equ 8 + +name_z equ 9 + +mugshot_z equ 1 + +#crouton_pic_table + .long CRUT_DK + .long CRUT_RR + .long CRUT_UN + .long CRUT_YK + .long CRUT_SM + .long CRUT_BM + .long CRUT_BH + .long CRUT_LX + +crouton_pos_table + .word 164,45 + .word 204,45 + + .word 164,90 + .word 204,90 + + .word 164,135 + .word 204,135 + + .word 164,180 + .word 204,180 + + .word 0 + + +#***************************************************************************** +* Process that handles player selection for one player. +* >a10 = player (0 or 1) + + STRUCTPD + LONG #HILITE ;UHL *hilite ring + + LONG #HIPLATE ;UHL *color crouton + + LONG #NAME ;UHL *name obj (message *obj) + WORD #RND_DEST ;UHW target if in random mode + + LONG #MUG1 + LONG #MUG2 + LONG #MUG3 + LONG #MUG4 + LONG #MUG5 + LONG #MUG6 + LONG #MUG7 + LONG #MUG8 + + LONG #ATT1 + LONG #ATT2 + LONG #ATT3 + LONG #ATT4 +;MJT + WORD #CNTR ;Flashing cursor delay + + +;player info struct +#PI_HILITE equ 0 ;UHL hilite box TBL_ hdr +#PI_HIPLATE equ 20h ;UHL hilite plate TBL_ hdr +#PI_STARTPOS equ 40h ;UHW starting pos (index) +#PI_MUGPOS equ 50h ;UHL mugshot [y,x] +#PI_MUGXPOS equ 50h ;UHW mugshot x +#PI_MUGYPOS equ 60h ;UHW mugshot y +#PI_MUGCTRL equ 70h ;UHW mugshot OCTRL +#PI_STARTNAME equ 80h ;UHL starting name TBL_ hdr +#PI_ATTTXT equ 0A0h ;UHL atttribute text TBL_ hdr +#PI_INDEX equ 0C0h ;UHL write selection word here +#PI_MOVESOUND equ 0E0h ;UHW cursor move triple_sound +#PI_SELSOUND equ 0F0h ;UHW select sound + +#rnd_movespeed equ 5 ;ticks between rndsel moves +#rnd_wander equ 18 ;rnd moves before home-in begins + + SUBRP player_cursor + + ;reg use + ; a6 = ticks until another move is allowed (debounce) + ; a6 = ticks until next move (random mode) + ; a7 = moves until home-in (random mode) + ; a9 = player info struct pointer + ; a10 = player number + ; a11 = position index (0-9) + + ;aim a9 at #p?info + move a10,a9 + X32 a9 + addi #info,a9 + move *a9,a9,L + + ;initialize the index word to -1 + movi -1,a14 + move *a9(#PI_INDEX),a0,L + move a14,*a0,W + + ;initialize random dest to -1 + movi -1,a14 + move a14,*a13(#RND_DEST) + +;MJT - start + clr a0 + move a0,*a13(#CNTR) + + ;create the name text + move *a9(#PI_STARTNAME),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#NAME),L + + ;active? + move @PSTATUS,a14 + btst a10,a14 + jrnz #begin_select + + ;inactive. wait for buyin + ;create the insert coin/press start message + calla CR_STRTP + jrhs #enough_money + +#no_money + ;no creds. flash 'insert coin' message while waiting for cash +#cred_waitloop + SLEEPK 1 + + callr #blink + + calla CR_STRTP + jrhs #enough_money + jruc #cred_waitloop + +#enough_money + + ;there's enough money. flash 'press start' message and wait + move *a13(#NAME),a8,L + movi WF_START,a0 + calla civanic + +#start_waitloop + SLEEPK 1 + + callr #blink + + move @PSTATUS,a14 + btst a10,a14 + jrz #start_waitloop + + move *a8(OXPOS),a0 + andi 1ffh,a0 + move a0,*a8(OXPOS) + +#begin_select + ;set our active bit if it's not already set + move @active_flag,a14 + move a10,a0 + inc a0 + or a0,a14 + move a14,@active_flag + + ;initialize index + move *a9(#PI_STARTPOS),a11 + + ;initialize #MUG? + movk 8,a0 + clr a1 + move a13,a2 + addi #MUG1,a2 +#initloop + move a1,*a2+,L + dsj a0,#initloop + + ;create our attrib text + move *a9(#PI_ATTTXT),a0,L + calla BEGINOBJ_TBL + move *a8(OXVAL),a0,L + move *a8(OYVAL),a1,L + + ;create the att bars + addi [63,0],a0 + addi [12,0],a1 + movi ATTMTR_0,a2 + movi atttxt_z,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + + PUSH a10,a11 + + movi 4,a10 ;bar count + move a13,a11 + addi #ATT1,a11 + +#abc_loop + PUSH a0,a1,a2,a3,a4,a5,a6,a7 + calla BEGINOBJ + PULL a0,a1,a2,a3,a4,a5,a6,a7 + move a8,*a11+,L + addi [8,0],a1 + dsj a10,#abc_loop + + PULL a10,a11 + + ;create our cursors + move *a9(#PI_HILITE),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#HILITE),L + + move *a9(#PI_HIPLATE),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#HIPLATE),L + + jruc #first_adjust + +#blink + move *a13(#CNTR),a0 + dec a0 + move a0,*a13(#CNTR) + jrp #cont + movk 22,a0 + move a0,*a13(#CNTR) + move *a8(OXPOS),a0 + xori 1000h,a0 + move a0,*a8(OXPOS) +#cont + rets + + .if 0 + +;Color cycle cursors... +;Good example for future cycles.... + + PUSH a8,a9,a10,a11 + + move a10,a10 + jrz #blue + + movi [1,1],a8 + movi CRHI_R_P,a9 + movi redcyc_tbl,a10 + movk 4,a11 + CREATE CYCPID,CYCLE_TABLE + jruc #out + +#blue + movi [1,1],a8 + movi CRHI_B_P,a9 + movi blucyc_tbl,a10 + movk 4,a11 + CREATE CYCPID,CYCLE_TABLE + +#out PULL a8,a9,a10,a11 + + jruc #first_adjust + + +blucyc_tbl + .word 0041fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0081fh,00c1fh,0101fh,0141fh,0181fh + .word 01c1fh,0201fh,0241fh,0281fh,02c1fh,0301fh,0341fh,0381fh + .word 03c1fh,0401fh,0441fh,0481fh,04c1fh,0501fh,0541fh,0581fh + .word 05c1fh,0601fh,0641fh,0681fh,06c1fh,0701fh + .word 0741fh,0701fh,06c1fh,0681fh,0641fh,0601fh,05c1fh + .word 0581fh,0541fh,0501fh,04c1fh,0481fh,0441fh,0401fh,03c1fh + .word 0381fh,0341fh,0301fh,02c1fh,0281fh,0241fh,0201fh,01c1fh + .word 0181fh,0141fh,0101fh,00c1fh,0081fh,0041fh + + .word 0041fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0081fh,00c1fh,0101fh,0141fh,0181fh + .word 01c1fh,0201fh,0241fh,0281fh,02c1fh,0301fh,0341fh,0381fh + .word 03c1fh,0401fh,0441fh,0481fh,04c1fh,0501fh,0541fh,0581fh + .word 05c1fh,0601fh,0641fh,0681fh,06c1fh,0701fh + .word 0741fh,0701fh,06c1fh,0681fh,0641fh,0601fh,05c1fh + .word 0581fh,0541fh,0501fh,04c1fh,0481fh,0441fh,0401fh,03c1fh + .word 0381fh,0341fh,0301fh,02c1fh,0281fh,0241fh,0201fh,01c1fh + .word 0181fh,0141fh,0101fh,00c1fh,0081fh,0041fh + .word -1 + +redcyc_tbl + .word 07c20h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c40h,07c60h,07c80h,07ca0h,07cc0h + .word 07ce0h,07d00h,07d20h,07d40h,07d60h,07d80h,07da0h,07dc0h + .word 07de0h,07e00h,07e20h,07e40h,07e60h,07e80h,07ea0h + .word 07ec0h,07ee0h,07f00h,07f20h,07f40h,07f60h,07f80h + .word 07fa0h,07f80h,07f60h,07f40h,07f20h,07f00h,07ee0h,07ec0h + .word 07ea0h,07e80h,07e60h,07e40h,07e20h,07e00h,07de0h + .word 07dc0h,07da0h,07d80h,07d60h,07d40h,07d20h,07d00h,07ce0h + .word 07cc0h,07ca0h,07c80h,07c60h,07c40h,07c20h + + .word 07c20h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c40h,07c60h,07c80h,07ca0h,07cc0h + .word 07ce0h,07d00h,07d20h,07d40h,07d60h,07d80h,07da0h,07dc0h + .word 07de0h,07e00h,07e20h,07e40h,07e60h,07e80h,07ea0h + .word 07ec0h,07ee0h,07f00h,07f20h,07f40h,07f60h,07f80h + .word 07fa0h,07f80h,07f60h,07f40h,07f20h,07f00h,07ee0h,07ec0h + .word 07ea0h,07e80h,07e60h,07e40h,07e20h,07e00h,07de0h + .word 07dc0h,07da0h,07d80h,07d60h,07d40h,07d20h,07d00h,07ce0h + .word 07cc0h,07ca0h,07c80h,07c60h,07c40h,07c20h + .word -1 + + .endif + + +#adjust + move *a9(#PI_MOVESOUND),a0 + calla triple_sound + callr #erase_mugshot +#first_adjust + callr #place_cursor + callr #draw_mugshot + callr #update_name + callr #update_attbars + + ;set a6 to debounce value if not rndsel, or to move time if rndsel + move *a13(#RND_DEST),a14 + jrnn #waitloop + movk 3,a6 + + clr a0 + move a0,*a8(OCONST) ;Clr color + move a0,*a13(#CNTR) + +#waitloop + ;flash the hilightes + move *a13(#HIPLATE),a8,L + move *a8(OZPOS),a14 + xori 1,a14 + move a14,*a8(OZPOS) + + move *a13(#HILITE),a8,L + move *a8(OZPOS),a14 + xori 1,a14 + move a14,*a8(OZPOS) + + PUSHP a6,a7 + SLEEPK 1 + PULLP a6,a7 + +;Flash cursors white + + move *a13(#CNTR),a14 + dec a14 + move a14,*a13(#CNTR) + jrp #norm + movk 8,a14 + move a14,*a13(#CNTR) + + PUSH a6,a7,a9 + movi 0202h,a9 + CREATE0 FLASHME + .ref FLASHME + PULL a6,a7,a9 +#norm + +;MJT - End + ;are we in random mode? + move *a13(#RND_DEST),a14 + jrn #not_rndsel + + ;we're in random select + dsj a6,#waitloop + + ;time to move again + movi #rnd_movespeed,a6 ;set time to next move + dec a7 + jrp #move_at_random + + ;move toward final destination + ;if we're there, take it + move *a13(#RND_DEST),a14 + cmp a14,a11 + jreq #but_hit + + ;not there. one time in three, move at random anyway + movk 3,a0 + calla RNDRNG0 + TEST a0 + jrz #move_at_random + + ;if we're in the correct row, move sideways + move *a13(#RND_DEST),a14 + xor a11,a14 + srl 1,a14 + jrz #rnd_move_sideways + + ;okay, move toward the correct row + move *a13(#RND_DEST),a14 + cmp a11,a14 + jrlt #stick_up + jruc #stick_down + +#move_at_random + ;move in a random direction, but only in legal directions + movk 2,a0 + calla RNDRNG0 + cmpi 2,a0 + jreq #rnd_move_up + cmpi 1,a0 + jreq #rnd_move_down + + ;move sideways by toggling bit zero in the index +#rnd_move_sideways + xori 1,a11 + jruc #adjust + +#rnd_move_up + cmpi 2,a11 + jrge #stick_up + + ;moving up isn't legal. move sideways or down + movi 1,a0 + calla RNDRNG0 + TEST a0 + jrz #rnd_move_sideways + jruc #stick_down + +#rnd_move_down + cmpi 5,a11 + jrle #stick_down + + ;moving down isn't legal. move sideways or up + movi 1,a0 + calla RNDRNG0 + TEST a0 + jrz #rnd_move_sideways + jruc #stick_up + +#not_rndsel + ;if time is out, pick whoever we're on. + move @time_out,a14 + jrnz #but_hit + + ;begin random select? + move a10,a0 + calla get_start_cur + jrz #button_checks + + ;start is down. check stick + move a10,a0 + calla get_stick_val_cur + btst JOYUP,a0 + jrz #button_checks + + ;stick is up. check position + move *a9(#PI_STARTPOS),a14 + cmp a11,a14 + jreq #begin_random_select + +#button_checks + ;button checks + move a10,a0 + calla get_but_val_down + TEST a0 + jrnz #but_hit + + dec a6 + jrp #waitloop + clr a6 + + ;stick checks + move a10,a0 + calla get_stick_val_down + btst JOYDN,a0 + jrnz #stick_down + btst JOYUP,a0 + jrnz #stick_up + btst JOYLFT,a0 + jrnz #stick_left + btst JOYRGT,a0 + jrnz #stick_right + jruc #waitloop + +#stick_down + ;add 2 unless the index is 6 or 7 + cmpi 6,a11 + jrge #waitloop + addi 2,a11 + jruc #adjust + +#stick_up + ;sub 2 unless index is 0 or 1 + cmpi 2,a11 + jrlt #waitloop + subi 2,a11 + jruc #adjust + +#stick_left + ;sub 1 unless index is even + btst 0,a11 + jrz #waitloop + dec a11 + jruc #adjust + +#stick_right + ;add 1 unless index is odd + btst 0,a11 + jrnz #waitloop + inc a11 + jruc #adjust + +#begin_random_select + movi 7,a0 + calla RNDRNG0 + move a0,*a13(#RND_DEST) + movi #rnd_movespeed,a6 + movi #rnd_wander,a7 + jruc #waitloop + +#but_hit + ;they hit a button. Stick 'em with the current guy. + move *a9(#PI_INDEX),a0,L + ;rewire kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + move a11,*a0 + + ;make a joyful noise unto the player + move *a9(#PI_SELSOUND),a0 + calla triple_sound + + ;clear our bit in the active flag + move @active_flag,a0 + inc a10 + andn a10,a0 + move a0,@active_flag + + ;flash over the crouton + ;synch! begin flashing on an even PCNT + move @PCNT,a14 + btst 0,a14 + jrnz #synch + SLEEPK 1 + +#synch + move *a13(#HILITE),a8,L +;MJT +; movi 0202h,a14 +; move a14,*a8(OCONST) + + movi TSEC/2,a11 +#flashloop + movi 0202h,a14 + move a14,*a8(OCONST) + move *a8(OCTRL),a14 + xori M_CONZER,a14 + move a14,*a8(OCTRL) + SLEEPK 1 + dsj a11,#flashloop + + move *a8(OCTRL),a14 + andni M_CONZER,a14 + move a14,*a8(OCTRL) + + movi hilite_z,a14 + move a14,*a8(OZPOS) + + move *a13(#HIPLATE),a8,L + movi hiplate_z,a14 + move a14,*a8(OZPOS) + + DIE + +******** +* moves cursor to the current index position + + SUBRP #place_cursor + + PUSH a2,a3,a7,a8 + + move a11,a1 + X32 a1 + addi crouton_pos_table,a1 + move *a1+,a2,W + move *a1,a3,W + + move *a13(#HILITE),a7,L + move *a13(#HIPLATE),a8,L + + move a2,*a7(OXPOS) + move a2,*a8(OXPOS) + move a3,*a7(OYPOS) + move a3,*a8(OYPOS) + + PULL a2,a3,a7,a8 + rets + + +******** +* updates the name text + + SUBRP #update_name + + PUSH a8,a11 + + ;rewiring kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + + move a11,a0 + X32 a0 + addi name_tbl,a0 + move *a0,a0,L + move *a13(#NAME),a8,L + calla civanic + + PULL a8,a11 + + rets + +******** +* erases current mugshot + + SUBRP #erase_mugshot + + PUSH a5,a6,a8 + + movk 8,a6 + move a13,a5 + addi #MUG1,a5 +#eraseloop + move *a5+,a0,L + calla DELOBJ + dsj a6,#eraseloop + + PULL a5,a6,a8 + + rets + + +******** +* draws a new mugshot + + SUBRP #draw_mugshot + + ;reg use + ;a10 = PDATA pointer + ;a11 = mug pointer + + PUSH a6,a7,a8,a10,a11 + + ;rewiring kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + + X32 a11 + addi wrestler_mugs,a11 + move *a11,a11,L + + move a13,a10 + addi #MUG1,a10 + move *a11+,a2,L + +#drawloop + move *a9(#PI_MUGXPOS),a0 + move *a9(#PI_MUGYPOS),a1 + sla 16,a0 + sla 16,a1 + movi mugshot_z,a3 + move *a9(#PI_MUGCTRL),a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + move a8,*a10+,L + + move *a11+,a2,L + jrz #done + jruc #drawloop + +#done + PULL a6,a7,a8,a10,a11 + rets + + +******** +* updates the attribute bars + + SUBRP #update_attbars + + PUSH a7,a10,a11 + + + ;rewiring kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + + move a11,a10 + X64 a10 + addi wrestler_attributes,a10 + move a13,a11 + addi #ATT1,a11 + + movi 4,a7 +#ualoop + move *a10+,a0,W + X32 a0 + addi attbars,a0 + move *a0,a0,L + move *a11+,a8,L + calla civanic + dsj a7,#ualoop + + PULL a7,a10,a11 + rets + +wrestler_attributes + .word 0,1,2,3 + .word 4,5,6,7 + .word 8,9,0,1 + .word 2,3,4,5 + .word 6,7,8,9 + .word 0,1,2,3 + .word 4,5,6,7 + .word 8,9,0,1 + .word 9,9,9,9 + +scramble_table ;swap bret and doink on the select page + .word 6 + .word 1,2,3,4,5 + .word 0 + .word 8 ;put lex in place of adam + +attbars + .long ATTMTR_0,ATTMTR_1,ATTMTR_2,ATTMTR_3,ATTMTR_4 + .long ATTMTR_5,ATTMTR_6,ATTMTR_7,ATTMTR_8,ATTMTR_9 + +#info + .long #p1info,#p2info + +#p1info + .long #hi_b,#plt_b ;hilite, crouton + .word 0 ;start index + .word 0+18+2,175 ;mug position + .word DMAWNZ|M_3D|M_SCRNREL ;mug octrl + .long #p1name,latttxt ;start name,att text + .long index1 ;report choice to + .word 18h,35h ;cursor/select sounds + +#p2info + .long #hi_r,#plt_r ;hilite, crouton + .word 1 ;start index + .word 400-18,175 ;mug position + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;mug octrl + .long #p2name,ratttxt ;start name,att text + .long index2 ;report choice to + .word 19h,55h ;cursor/select sounds + + + +#plt_b .word 0,0,hiplate_z ;X,Y,Z + .long CRUTPLT_B ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#plt_r .word 0,0,hiplate_z+1 ;X,Y,Z + .long CRUTPLT_R ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#hi_b .word 0,0,hilite_z ;X,Y,Z + .long CRUTHI_B ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#hi_r .word 0,0,hilite_z+1 ;X,Y,Z + .long CRUTHI_R ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#p1name .word >51,184,name_z + .long WF_INSERT + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSNEUT|TYPNEUT + .long 0,0 + +#p2name .word >142,184,name_z + .long WF_INSERT + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSNEUT|TYPNEUT + .long 0,0 + +latttxt .word 0+18,189,atttxt_z ;X, Y, Z + .long ATT_TXT ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +ratttxt .word 400-18-124,189,atttxt_z ;X, Y, Z + .long ATT_TXT ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +;Mugshot stuff + +wrestler_mugs + .long BHARTMUG + .long RAZORMUG + .long UNDERMUG + .long YOKOMUG + .long MICHAELMUG + .long BAMBAMMUG + .long DOINKMUG + .long ADAMMUG + .long LUGERMUG + +BHARTMUG + .long BHMUG_A,BHMUG_B,BHMUG_C,BHMUG_D + .long BHMUG_E,BHMUG_F,BHMUG_G,BHMUG_H,0 +RAZORMUG + .long RRMUG_A,RRMUG_B,RRMUG_C,RRMUG_D + .long RRMUG_E,RRMUG_F,RRMUG_G,RRMUG_H,0 +UNDERMUG + .long UNMUG_A,UNMUG_B,UNMUG_C,UNMUG_D + .long UNMUG_E,UNMUG_F,UNMUG_G,UNMUG_H,0 +YOKOMUG + .long YKMUG_A,YKMUG_B,YKMUG_C,YKMUG_D + .long YKMUG_E,YKMUG_F,YKMUG_G,YKMUG_H,0 +MICHAELMUG + .long SMMUG_A,SMMUG_B,SMMUG_C,SMMUG_D + .long SMMUG_E,SMMUG_F,SMMUG_G,SMMUG_H,0 +BAMBAMMUG + .long BMMUG_A,BMMUG_B,BMMUG_C,BMMUG_D + .long BMMUG_E,BMMUG_F,BMMUG_G,BMMUG_H,0 +DOINKMUG + .long DKMUG_A,DKMUG_B,DKMUG_C,DKMUG_D + .long DKMUG_E,DKMUG_F,DKMUG_G,DKMUG_H,0 +ADAMMUG + .long ADMUG_A,ADMUG_B,ADMUG_C,ADMUG_D + .long ADMUG_E,ADMUG_F,ADMUG_G,ADMUG_H,0 +LUGERMUG + .long LXMUG_A,LXMUG_B,LXMUG_C,LXMUG_D + .long LXMUG_E,LXMUG_F,LXMUG_G,LXMUG_H,0 + +name_tbl + .long NAM_BRT,NAM_RZR,NAM_UND,NAM_YOK + .long NAM_SHN2,NAM_BAM2,NAM_DNK,NAM_ADM,NAM_LEX + +#***************************************************************************** +* Player select clock - sets time_out when it runs out of time +* + + SUBR select_clock + + ;reg use + ; a8 - current pstatus + ; a9 - time remaining + +#select_time equ TSEC*25 + +#reset + movi #select_time,a9 + move @PSTATUS,a8 + +#waitloop + SLEEPK 1 + move @PSTATUS,a14 + cmp a14,a8 + jrne #reset ;new buyin. reset + + dsj a9,#waitloop + + movk 1,a14 + move a14,@time_out + + DIE + +clock_digits +;When player select time gets down to 5 seconds, display it... +;a10=select_clock *PROC + + movi [0cbh,0],a0 ;x pos + movi [232,0],a1 ;y pos + movi FNT9_5,a2 ;* image + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + movk 4,a11 +#loop0 callr obj_off + +#loop SLEEPK 1 + move @time_out,a0 + janz SUCIDE + move *a10(PA9),a0 + srl 6,a0 + cmp a0,a11 + jrz #loop + cmpi 6,a0 + jrge #loop0 + +;New digit time + move a0,a11 + sll 5,a0 + addi #digits_tbl,a0 + move *a0,a0,L ;* image + + move *a8(OCTRL),a1 ;DMA flags + calla change_image + callr obj_on + + movi clock_snd,a0 + calla triple_sound + jruc #loop + +#digits_tbl + .long FNT9_0,FNT9_1,FNT9_2,FNT9_3,FNT9_4 + .long FNT9_5,FNT9_6,FNT9_7,FNT9_8,FNT9_9 + + +#***************************************************************************** +* "Tonight's Matchup"-type stuff. +* + + SUBR pregame_show + +;This will be the ladder type screen, showing the 1 player +;game progression. Chooses the CPU opponent. + + move @index1,a0 + jrnn #ok + +;Chooses CPU controlled player 1 + movk 6,a0 ;Doink + move a0,@index1 + +#ok + move @index2,a0 + jrnn #ok2 + +;Chooses CPU controlled player 2 + movk 6,a0 ;Doink + move a0,@index2 + +#ok2 + RETP + +#***************************************************************************** +* +* INPUT: a8 = * object +*----------------------------------------------------------------------------- + + SUBRP obj_on + move *a8(OYPOS),a0 + andni 400h,a0 + move a0,*a8(OYPOS) + rets + + +#***************************************************************************** +* +* INPUT: a8 = * object +*----------------------------------------------------------------------------- + + SUBRP obj_off + move *a8(OYPOS),a0 + ori 400h,a0 + move a0,*a8(OYPOS) + rets + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/SHAWN.ASM b/BACKUP/SHAWN.ASM new file mode 100644 index 0000000..f5d0568 --- /dev/null +++ b/BACKUP/SHAWN.ASM @@ -0,0 +1,2483 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "shawn.asm" + .title "Shawn Michaels-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" + .include "jjxm.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref change_anim1a,change_anim2a,do_taunt + .ref shn_2_hair_pickup_anim,bounce_off_ropes +;,break_lockup + .ref check_secret_moves,wres_get_but_val_cur + .ref master_keep_attached,lineup_grapple + .ref ck_ignore,climb_turnbuckle,execute_walk,get_opp_plyrmode + .ref get_punch_dtime,wres_get_stick_val_cur + .ref process_ptrs,form_button_value,keep_attached,change_anim1 + .ref change_anim2,clear_damage_log,wres_get_stick_rel_cur + .ref wres_get_but_val_down,mode_inair2,wres_get_but_val_up + .ref wres_get_stick_rel_new,JUMP_ROPES + .REF DO_REVERSAL + .REF DO_REVERSAL_MESS + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref start_run_anim + + ;stands + .ref shn_stand2_anim,shn_stand8_anim + .ref shn_stand4_anim,shn_stand6_anim + .ref shn_torso2_anim,shn_torso8_anim + .ref shn_torso4_anim,shn_torso6_anim + .ref shn_3_head_held_stand_anim + + ;turns + .ref shn_2_to_4_turn_anim,shn_8_to_6_turn_anim ;stand + .ref shn_4_to_2_turn_anim,shn_6_to_8_turn_anim + .ref shn_4_to_6_turn_anim,shn_6_to_4_turn_anim + .ref shn_2_to_8_turn_anim,shn_8_to_2_turn_anim + .ref shn_4_to_8_turn_anim,shn_6_to_2_turn_anim + .ref shn_2_to_6_turn_anim,shn_8_to_4_turn_anim + + .ref shn_2_to_4_turn2_anim,shn_8_to_6_turn2_anim ;torso + .ref shn_4_to_2_turn2_anim,shn_6_to_8_turn2_anim + .ref shn_4_to_6_turn2_anim,shn_6_to_4_turn2_anim + .ref shn_2_to_8_turn2_anim,shn_8_to_2_turn2_anim + .ref shn_4_to_8_turn2_anim,shn_6_to_2_turn2_anim + .ref shn_2_to_6_turn2_anim,shn_8_to_4_turn2_anim + + ;walks + .ref shn_walk1_f2_anim,shn_walk2_f2_anim,shn_walk4_f2_anim + .ref shn_walk5_f2_anim,shn_walk6_f2_anim,shn_walk8_f2_anim + .ref shn_walk1_f4_anim,shn_walk2_f4_anim,shn_walk4_f4_anim + .ref shn_walk5_f4_anim,shn_walk6_f4_anim,shn_walk8_f4_anim + + .ref shn_run2_anim,shn_climb_down_anim,shn_climb_up_anim + + ;mundane attacks + .ref shn_2_punch_anim,shn_4_punch_anim + .ref shn_2_kick_anim,shn_4_kick_anim + .ref shn_2_push_anim,shn_4_push_anim + .ref shn_2_butt_anim,shn_4_butt_anim + .ref shn_2_knee_anim,shn_4_knee_anim + .ref shn_2_stomp_anim,shn_4_stomp_anim + .ref shn_2_falling_punch_anim,shn_4_falling_punch_anim + .ref shn_bstomp_anim,shn_belbow_anim + .ref shn_flipslam_anim + + ;special attacks + .ref shn_4_hair_pickup_anim + .ref shn_spinkick_anim,shn_flying_kick_anim + .ref shn_gsuplex_anim,shn_run_stomp_anim + .ref shn_super_speedkick_anim + .ref shn_fstein_anim,shn_backflip_kick_anim + .ref shn_2_pin_anim,shn_4_pin_anim + .ref shn_2_bslam_anim + .ref shn_4_bslam_anim + .ref shn_speed_spinkick_anim,shn_knee_fstein_anim + .ref shn_sliding_kicktoss_anim,shn_break_arm_anim + + ;reactions + .ref shn_dizzy_anim + .ref shn_2_grabfling_anim,shn_4_grabfling_anim + + ;blocks + .ref shn_2_block_anim,shn_4_block_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* special moves +* +* away-away-super kick - backflip kick +* toward-toward-super kick - frankensteiner +* toward-toward-super punch - german suplex +* charge away-super kick - super speedkick +* roll away-down-fwd super kick - sliding kicktoss +* + +shn_secret_moves + .long #speed_kicks ;must have this one + .long #grab_fling + .long #grab_toss + .long #neck_grab + .long #frankensteiner + +; .long #german_suplex +; .long #armbreaker +; .long #backflip_kick +; .long #sliding_kicktoss + + .long 0 + +***************************************************************************** +* +* SPECIAL MOVE PROCESSES +* + + SUBR shn_smove_table + .long sm_super_speedkick + .long sm_super_speedkick2 + .long sm_sliding_kicktoss + .long sm_hdhold_suplex + .long sm_hdhold_frank + .long sm_super_suplex + .long sm_hdhold_kicktoss + .long sm_hdhold_flipslam + .long 0 + +******************************************************************************* + +#grab_toss + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long scrt_hiptoss + +scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #out + + FACE24 shn,bslam_anim + calla change_anim1a + + WRSND W_SHAWN,GRABFLING_T1,GRABFLING_T2 + rets + +******************************************************************************* + +#grab_fling + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long scrt_grabfling + +scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + FACE24 shn,bslam_anim + calla change_anim1a + + WRSND W_SHAWN,GRABFLING_T1,GRABFLING_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + FACE24 shn,grabfling_anim + calla change_anim1a + + WRSND W_SHAWN,GRABFLING_T1,GRABFLING_T2 + rets + +******************************************************************************* + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + .ref shn_3_head_hold_anim + movi shn_3_head_hold_anim,a0 + calla change_anim1a +#out rets + +******************************************************************************* + +#speed_kicks + move a13,a0 + calla wres_get_but_val_up + btst PLAYER_SKICK_BIT,a0 + jrz #no_kick + + move *a13(PLYRNUM),a0 + .ref get_powerk_dtime + calla get_powerk_dtime + cmpi 85,a0 ;> min? + jrlt #no_kick +; cmpi 100+60,a0 ;< max? +; jrgt #no_kick + + callr scrt_kick + setc + rets + +#no_kick + clrc + rets + +scrt_kick + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #ok + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + +#ok + + SETMODE INAIR + + movk 1,a0 ;Ensure leap at + move a0,*a13(OBJ_XVEL),L + + movi shn_flying_kick_anim,a0 + calla change_anim1a + + + WRSND W_SHAWN,FLYKICK_T1,FLYKICK_T2 + + rets + +******************************************************************************* + + +; BITS MASK + +;#backflip_kick +; .word B_SKICK, J_ALL +; .word J_AWAY, J_REAL_LR +; .word J_AWAY, J_REAL_LR +; .word 8000h | 50 ;max +; .long #scrt_backflip_kick +; +;#scrt_backflip_kick +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #rets +; movi shn_backflip_kick_anim,a0 +; calla change_anim1a +; WRSND W_SHAWN,KICK_T1,KICK_T2 +; rets + +******************************************************************************* + +;#armbreaker +; .word B_PUNCH, J_ALL +; .word J_TOWARD, J_REAL_LR +; .word J_TOWARD, J_REAL_LR +; .word 8000h | 50 ;max +; .long #scrt_armbreaker +; +;#scrt_armbreaker +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #rets +; +; ;only do this if target is blocking +; move *a13(CLOSEST_NUM),a14 +; X32 a14 +; addi process_ptrs,a14 +; move *a14,a14,L +; move *a14(PLYRMODE),a14 +; cmpi MODE_BLOCK,a14 +; jrne #rets +; +; movi shn_break_arm_anim,a0 +; calla change_anim1a +; WRSND W_SHAWN,PUNCH_T1,PUNCH_T2 +; rets + +******************************************************************************* + +#frankensteiner + .word B_SKICK, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_fstein + +#scrt_fstein + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #rets + move *a13(PLYRMODE),a0 + CMPI MODE_HEADHOLD,a0 + jrz #rets + + ;no frankensteiner if opponent is on the ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jreq #rets + cmpi MODE_DEAD,a0 + jreq #rets + + ;don't do it if opponent is behind you + calla ck_ignore + jrc #rets + + movi shn_fstein_anim,a0 + calla change_anim1a + WRSND W_SHAWN,KICK_T1,KICK_T2 +#rets rets + +******************************************************************************* + + .if 0 + + STRUCTPD + WORD #CHARGE_TIME ;UDW + WORD #TIMEOUT ;UDW + + ;in: + ; a8 = wrestler process address + + SUBRP sm_super_speedkick + +#start_over + ;charge on stick away + clr a14 + move a14,*a13(#CHARGE_TIME),W +#loop1 + SLEEPK 1 + + move *a13(#CHARGE_TIME),a14,W + inc a14 + move a14,*a13(#CHARGE_TIME),W + + move a8,a0 + calla wres_get_stick_val_cur + + ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to + ; our left, flip the L|R direction bits... + + ;...however, if the stick isn't pointed left or right, don't do + ;anything. + move a0,a14 + andi MOVE_LEFT|MOVE_RIGHT,a14 + jrz #no_flip + + move *a8(NEW_FACING_DIR),a14 + btst MOVE_LEFT_BIT,a14 + jrz #no_flip + xori MOVE_LEFT|MOVE_RIGHT,a0 +#no_flip + + ;if we're still holding away, jump back to #loop1 + btst MOVE_LEFT_BIT,a0 + jrnz #loop1 + + ;no longer holding away... + move *a13(#CHARGE_TIME),a14 + cmpi TSEC*2,a14 + jrlt #start_over + + ;okay, they released after holding away for 2 seconds. Give them + ; half a second to push forward + super_kick + + movi TSEC/2,a14 + move a14,*a13(#TIMEOUT) +#loop2 + SLEEPK 1 + + move a8,a0 + calla wres_get_but_val_down + move a0,a0 + jrnz #press + + move *a13(#TIMEOUT),a14 + dec a14 + jrz #start_over + move a14,*a13(#TIMEOUT) + jruc #loop2 + +#press + ;we have a button press. Is is super kick? + btst PLAYER_SKICK_BIT,a0 + + jrz #start_over ;wrong button. No good. + + + ;Check for a towards on the stick. + move a8,a0 + calla wres_get_stick_val_cur + move a0,a0 + jrz #start_over ;no stick at all. No good. + + move *a8(NEW_FACING_DIR),a14 + btst MOVE_LEFT_BIT,a14 + jrz #no_flip2 + xori MOVE_LEFT|MOVE_RIGHT,a0 +#no_flip2 + btst MOVE_RIGHT_BIT,a0 + jrz #start_over ;pooched it + + ;success! Check for the UNINT bit, then queue it up. + move *a8(ANIMODE),a14 + btst MODE_UNINT_BIT,a14 + jrnz #start_over + movi shn_super_speedkick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + jruc #start_over + + .endif + +#******************************************************************************* +sm_super_speedkick + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + WAITSWITCH_DWN J_UP_AWAY,0,#lp + WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_UP_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,J_DOWN_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #slam + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + +#slam + movi shn_super_speedkick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + SLEEPK 1 + + jruc #lp + + +#******************************************************************************* + + STRUCTPD + WORD #CHARGE_TIME ;UDW + +sm_super_speedkick2 + +#start_over + clr a14 + move a14,*a13(#CHARGE_TIME),W +#loop1 + SLEEPK 1 + + move *a13(#CHARGE_TIME),a14,W + inc a14 + move a14,*a13(#CHARGE_TIME),W + + move a8,a0 + calla wres_get_but_val_cur + btst PLAYER_KICK_BIT,a0 + jrz #p1 + + jruc #loop1 + +#p1 + +;no longer holding button + move *a13(#CHARGE_TIME),a14 + cmpi 90,a14 + jrlt #start_over + +;success! Check for the UNINT bit, then queue it up. + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #slam + +;Keep these commented out for now... +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over + +; jruc #slam + +;#rev + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#slam + movi shn_super_speedkick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_SHAWN,KICK_T1,KICK_T2 + + jruc #start_over + + +#******************************************************************************* +sm_hdhold_flipslam + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_DOWN_AWAY|J_DOWN_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + +#slam + movi shn_flipslam_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + SLEEP 60 + + jruc #lp + +#******************************************************************************* +sm_hdhold_suplex + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,0,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#slam + movi shn_gsuplex_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + SLEEP 60 + + jruc #lp + +#******************************************************************************* +sm_hdhold_kicktoss + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,J_UP_TOWARD|J_DOWN_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#slam + WRSND W_SHAWN,KICK_T1,KICK_T2 + movi shn_sliding_kicktoss_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +#******************************************************************************* +sm_hdhold_frank + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_UP,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_DOWN_AWAY|J_DOWN_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + +#slam + movi shn_fstein_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + SLEEP 60 + + jruc #lp + +#******************************************************************************* + + STRUCTPD + WORD #CHARGE_TIME ;UDW + + SUBRP sm_super_suplex + +;Try to spin around and suplex + +#start_over + clr a14 + move a14,*a13(#CHARGE_TIME),W +#loop1 + SLEEPK 1 + + move *a13(#CHARGE_TIME),a14,W + inc a14 + move a14,*a13(#CHARGE_TIME),W + + move a8,a0 + calla wres_get_but_val_cur + btst PLAYER_PUNCH_BIT,a0 + jrz #p1 + + jruc #loop1 + +#p1 + +;no longer holding button + move *a13(#CHARGE_TIME),a14 + cmpi 100,a14 + jrlt #start_over + +;success! Check for the UNINT bit, then queue it up. + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #rev + + move *a8(GETUP_TIME),a0 + jrnz #start_over + move *a8(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #start_over + cmpi MODE_DEAD,a0 + jrz #start_over + +;Keep these commented out for now... +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over + + jruc #slam + +#rev + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#slam + movi shn_gsuplex_anim,a14 + + move *a8(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrnz #cont + + .ref shn_gsuplex_run_anim + movi shn_gsuplex_run_anim,a14 + +#cont + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + jruc #start_over + + +#******************************************************************************* + + SUBRP sm_sliding_kicktoss + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,0,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #lp0 + cmpi MODE_ONGROUND,a0 + jrz #lp0 + cmpi MODE_DEAD,a0 + jrz #lp0 + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp0 + + move *a8(GETUP_TIME),a0 + jrnz #lp0 + + +;Don't do it when he is on ground + PUSH a13 + move a8,a13 + calla get_opp_plyrmode + PULL a13 + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + +;Don't do it if opponent is behind you + calla ck_ignore + jrc #lp + + WRSND W_SHAWN,KICK_T1,KICK_T2 + movi shn_sliding_kicktoss_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +#***************************************************************************** + + SUBR shawn_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi shn_stand4_anim,a0 + calla change_anim1a + + movi shn_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE0 do_taunt + PULL a10 + + rets + +#p1 + movi shn_stand2_anim,a0 + calla change_anim1a + + movi shn_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* SHAWNS CONTROL CODE +* +* a13 = * shawn process + + SUBR move_shawn + + + movi shn_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 + .long mode_normal ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .ref mode_choking + .long mode_choking ;25 + +#***************************************************************************** + +mode_normal + + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + +;Any button causes a pin + move a13,a0 + calla wres_get_but_val_cur + move a0,a0 + jrz #opp_not_dead + +;Make sure opponent is on the ground! +;First, see if opponent is on the ground. + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #opp_not_dead + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a1,L + + move *a1(OBJ_YPOS),a0,L + move *a1(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + +;Opponent is on ground. +;Now check to see if I'm attached to him in puppet mode! + move *a13(ATTACH_PROC),a1,L + jrz #done + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 +;If I'm attached to him, let the move finish! + jrz #opp_not_dead +#done + + FACE24 shn,pin_anim + calla change_anim1a + + rets + +#opp_notgnd +#opp_not_dead + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #no_climb + + 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 + move *a13(WRESTLERNUM),A5 + .ref CLIMB_ROPES,ADD_IF_SILENT + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets +#no_climb + + calla execute_walk + +#no_interrupt + rets + +#action_table +;This table accounts for 2 buttons being hit simultaneously. + + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +************ +#graboh + rets + +#z + rets + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 62 95 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing normal punch +* +* onturnbkl < 60 60 punch +* onturnbkl > normal punch +* +* puppet|inair normal punch + + + JJXM_INIT + JJXM NORMAL, 58, 45,#punch_hdbutt,#punch_punch + JJXM BLOCK, 75, 85,#punch_armbrk,#punch_punch + JJXM DIZZY, 52, 85,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 120,120,#punch_lbdrop,#punch_punch + JJXM RUNNING, #punch_punch + JJXM BOUNCING, #punch_punch + JJXM ONTURNBKL, #punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM PUPPET, #punch_punch + JJXM INAIR, #punch_punch + JJXM ATTACHED, 58, 45,#punch_hdbutt,#punch_punch + JJXM DEAD, 58, 45,#punch_hdbutt,#punch_punch + JJXM OPPOVERHEAD, 58, 45,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 58, 45,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 58, 45,#punch_hdbutt,#punch_punch + JJXM MASTER, 58, 45,#punch_hdbutt,#punch_punch + JJXM SLAVE, 58, 45,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 58, 45,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 58, 45,#punch_hdbutt,#punch_punch + JJXM INAIR2, 58, 45,#punch_hdbutt,#punch_punch + JJXM_END + +***** +#punch_armbrk +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #punch_hdbutt + + movi shn_break_arm_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,GRABHOLD_T1,GRABHOLD_T2 + + rets + +***** +#punch_punch +std_punch + FACE24 shn,punch_anim + calla change_anim1a + + WRSND W_SHAWN,PUNCH_T1,PUNCH_T2 + + rets + +***** +#punch_hdbutt + + FACE24 shn,butt_anim + calla change_anim1a + + WRSND W_SHAWN,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbdrop + + FACE24 shn,falling_punch_anim + calla change_anim1a + + WRSND W_SHAWN,LBOWDROP_T1,LBOWDROP_T2 + rets + +************ +#block ;2 + +; clr a0 +; move a0,*a13(OBJ_XVEL),L + +std_block + FACE24 shn,block_anim + calla change_anim1a + + rets + +************ +#super_punch ;4 + + JJXM_INIT + JJXM NORMAL, 85, 45,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 85, 45,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 85, 45,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 85, 45,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 120,120,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, #spunch_rets ;5 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 85, 45,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 85, 45,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 96,112,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 85, 45,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 85, 45,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 85, 45,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 85, 45,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 85, 45,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 85, 45,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, 85, 45,#spunch_special,#spunch_slap ;17 + JJXM PUPPET, 85, 45,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 85, 45,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +***** +#spunch_slap + + .ref shn_4_slap_anim + .ref shn_2_slap_anim + + FACE24 shn,slap_anim + calla change_anim1a + + WRSND W_SHAWN,SPUNCH_T1,SPUNCH_T2 + + rets + +***** +#spunch_special +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrz #cont + + move *a13(CLOSEST_XDIST),a1 + cmpi 50,a1 + jrgt std_punch + jruc #hdbutt +#cont + + .ref shn_3_head_hold2_anim + movi shn_3_head_hold2_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,GRABHOLD_T1,GRABHOLD_T2 + + rets + +#hdbutt + + FACE24 shn,butt_anim + calla change_anim1 + + WRSND W_SHAWN,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#spunch_lbowdrop + +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 shn,hair_pickup_anim + calla change_anim1 + WRSND W_SHAWN,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no FACE24 shn,falling_punch_anim + calla change_anim1a + WRSND W_SHAWN,LBOWDROP_T1,LBOWDROP_T2 + rets + + +;***** +;#spunch_slamfling +; move a13,a0 +; calla wres_get_stick_rel_cur +; btst MOVE_AWAY_BIT,a0 +; jrnz att_grabfling +; jruc att_bodyslam +; +;att_grabfling +; FACE24 shn,grabfling_anim +; calla change_anim1a +; WRSND W_SHAWN,GRABFLING_T1,GRABFLING_T2 +; rets +; +;att_bodyslam +; calla get_opp_plyrmode +; move a0,a1 +; movi shn_bslam_anim,a0 +; cmpi MODE_RUNNING,a1 +; jreq #runslam +; cmpi MODE_BOUNCING,a1 +; jreq #runslam +; movi shn_standing_bslam_anim,a0 +;#runslam +; calla change_anim1a +; WRSND W_SHAWN,SPUNCH_T1,SPUNCH_T2 +; rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 50 knee +* > normal kick +* +* onground < 120 120 stomp +* onground > normal kick +* +* running | +* bouncing big boot +* +* onturnbkl | normal kick +* climbturnbkl normal kick +* +* puppet|inair normal kick +* + + + JJXM_INIT + JJXM NORMAL, 60, 50,#kick_knee,#kick_kick + JJXM DIZZY, 60, 50,#kick_knee,#kick_kick + JJXM BLOCK, 60, 50,#kick_knee,#kick_kick + JJXM ONGROUND, 120,120,#kick_stomp,#kick_kick + JJXM RUNNING, 120,92,#kick_kick,#kick_flyingkick ;1 + JJXM BOUNCING, 120,92,#kick_kick,#kick_flyingkick ;1 + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM PUPPET, #kick_kick + JJXM INAIR, #kick_kick + JJXM ATTACHED, 60, 50,#kick_knee,#kick_kick + JJXM DEAD, 120,120,#kick_stomp,#kick_kick + JJXM OPPOVERHEAD, 60, 50,#kick_knee,#kick_kick + JJXM WAITANIM, 60, 50,#kick_knee,#kick_kick + JJXM GRAPPLE, 60, 50,#kick_knee,#kick_kick + JJXM MASTER, 60, 50,#kick_knee,#kick_kick + JJXM SLAVE, 60, 50,#kick_knee,#kick_kick + JJXM HEADHOLD, 60, 50,#kick_knee,#kick_kick + JJXM HEADHELD, 60, 50,#kick_knee,#kick_kick + JJXM INAIR2, 60, 50,#kick_knee,#kick_kick + JJXM_END + +***** +#kick_kick +attack_kick + + FACE24 shn,kick_anim + calla change_anim1a + + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +***** +#kick_knee + + FACE24 shn,knee_anim + calla change_anim1a + + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp + + FACE24 shn,stomp_anim + calla change_anim1a + + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +***** +#kick_flyingkick + movi shn_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_SHAWN,FLYKICK_T1,FLYKICK_T2 + + rets + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal speed kick or spin kick (depends on stick) +* +* onground < 120 120 stomp +* onground > normal kick +* +* running | +* bouncing flying kick +* +* most others as MODE_NORMAL +* + + JJXM_INIT + JJXM NORMAL, #skick_kick + JJXM DIZZY, #skick_kick + JJXM BLOCK, #skick_kick + JJXM ONGROUND, 120,120,#skick_stomp,attack_kick + JJXM RUNNING, #skick_frank + JJXM BOUNCING, #skick_frank + JJXM ONTURNBKL, #skick_kick + JJXM CLIMBTURNBKL, #skick_kick + JJXM PUPPET, #skick_kick + JJXM INAIR, #skick_kick + JJXM ATTACHED, #skick_kick + JJXM DEAD, 120,120,#skick_stomp,attack_kick + JJXM OPPOVERHEAD, #skick_kick + JJXM WAITANIM, #skick_kick + JJXM GRAPPLE, #skick_kick + JJXM MASTER, #skick_kick + JJXM SLAVE, #skick_kick + JJXM HEADHOLD, #skick_kick + JJXM HEADHELD, #skick_kick + JJXM INAIR2, #skick_kick + JJXM_END + +***** +#skick_frank + movi shn_fstein_anim,a0 + calla change_anim1a + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +***** +#skick_kick + + movi shn_spinkick_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,FLYKICK_T1,FLYKICK_T2 + rets + +***** +#skick_stomp + + FACE24 shn,stomp_anim + calla change_anim1a + + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +***** +#skick_flykick +attack_flykick + + ;don't do it if the bad guy is on the ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jreq #rets + cmpi MODE_DEAD,a0 + jreq #rets + + SETMODE INAIR + +; clr a0 +; move a0,*a13(RUN_TIME) + + + movi shn_flying_kick_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,FLYKICK_T1,FLYKICK_T2 + rets + +***** +#skick_fstein +attack_fstein + + ;don't do it if opponent is behind you + calla ck_ignore + jrc #rets + + movi shn_fstein_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_SHAWN,GRABHOLD_T1,GRABHOLD_T2 +#rets + rets + +***** +#skick_super_speedkick + + movi shn_super_speedkick_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,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(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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_stick_val_cur + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#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 + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + 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 #block ;2 (block) + .long #z ;3 + .long #super_punch ;4 (super punch) + .long #z,#z,#z ;5-7 + .long #kick ;8 kick + .long #z,#z,#z,#z,#z,#z,#z ;9-15 + .long #super_kick ;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 ;0 + + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal|dizzy flying kick +* +* onground running stomp +* +* running | +* bouncing flying kick +* +* onturnbkl flying kick +* +* puppet|inair flying kick +* + + JJXM_INIT + JJXM NORMAL, #punch_rets + JJXM DIZZY, #punch_rets + JJXM BLOCK, #punch_rets + JJXM ONGROUND, attack_runstomp + JJXM RUNNING, #punch_rets + JJXM BOUNCING, #punch_rets + JJXM ONTURNBKL, #punch_rets + JJXM CLIMBTURNBKL, #punch_rets + JJXM PUPPET, #punch_rets + JJXM INAIR, #punch_rets + JJXM ATTACHED, #punch_rets + JJXM DEAD, attack_runstomp + JJXM OPPOVERHEAD, #punch_rets + JJXM WAITANIM, #punch_rets + JJXM GRAPPLE, #punch_rets + JJXM MASTER, #punch_rets + JJXM SLAVE, #punch_rets + JJXM HEADHOLD, #punch_rets + JJXM HEADHELD, #punch_rets + JJXM INAIR2, #punch_rets + JJXM_END + +#punch_rets + rets + + +************ +#block ;2 + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal|dizzy flying kick +* +* onground running stomp +* +* running | +* bouncing flying kick +* +* onturnbkl flying kick +* +* puppet|inair flying kick +* + + JJXM_INIT + JJXM NORMAL, #punch_flipslam + JJXM DIZZY, #punch_flipslam + JJXM BLOCK, #punch_flipslam + JJXM ONGROUND, 176,176,attack_runstomp,#spunch_rets + JJXM RUNNING, #punch_flipslam + JJXM BOUNCING, #punch_flipslam + JJXM ONTURNBKL, #spunch_rets + JJXM CLIMBTURNBKL, #spunch_rets + JJXM PUPPET, #spunch_rets + JJXM INAIR, #spunch_rets + JJXM ATTACHED, #spunch_rets + JJXM DEAD, 176,176,attack_runstomp,#spunch_rets + JJXM OPPOVERHEAD, #spunch_rets + JJXM WAITANIM, #spunch_rets + JJXM GRAPPLE, #spunch_rets + JJXM MASTER, #spunch_rets + JJXM SLAVE, #spunch_rets + JJXM HEADHOLD, #spunch_rets + JJXM HEADHELD, #spunch_rets + JJXM INAIR2, #spunch_rets + JJXM_END + +#spunch_rets + rets + + +************ +#punch_flipslam + + movi shn_flipslam_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,GRABFLING_T1,GRABFLING_T2 + rets + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal|dizzy flying kick +* +* onground running stomp +* +* running | +* bouncing flying kick +* +* onturnbkl flying kick +* +* puppet|inair flying kick +* + + JJXM_INIT + JJXM NORMAL, attack_flykick + JJXM DIZZY, attack_flykick + JJXM BLOCK, attack_flykick + JJXM ONGROUND, #kick_runstomp + JJXM RUNNING, attack_flykick + JJXM BOUNCING, attack_flykick + JJXM ONTURNBKL, attack_flykick + JJXM CLIMBTURNBKL, attack_flykick + JJXM PUPPET, attack_flykick + JJXM INAIR, attack_flykick + JJXM ATTACHED, attack_flykick + JJXM DEAD, #kick_runstomp + JJXM OPPOVERHEAD, attack_flykick + JJXM WAITANIM, attack_flykick + JJXM GRAPPLE, attack_flykick + JJXM MASTER, attack_flykick + JJXM SLAVE, attack_flykick + JJXM HEADHOLD, attack_flykick + JJXM HEADHELD, attack_flykick + JJXM INAIR2, attack_flykick + JJXM_END + + +***** +#kick_runstomp +attack_runstomp + + calla ck_ignore + jrc #kick_rets + + movi shn_run_stomp_anim,a0 + calla change_anim1a +#kick_rets + rets + + + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal|dizzy frankensteiner +* +* onground flying kick +* +* running frankensteiner +* +* bouncing flying kick +* +* onturnbkl flying kick +* +* inair|puppet flying kick +* + + JJXM_INIT + JJXM NORMAL, attack_fstein + JJXM DIZZY, attack_fstein + JJXM BLOCK, attack_fstein + JJXM ONGROUND, attack_runstomp + JJXM RUNNING, attack_fstein + JJXM BOUNCING, attack_fstein + JJXM ONTURNBKL, attack_flykick + JJXM CLIMBTURNBKL, attack_flykick + JJXM INAIR, attack_flykick + JJXM PUPPET, attack_flykick + JJXM ATTACHED, attack_fstein + JJXM DEAD, attack_runstomp + JJXM OPPOVERHEAD, attack_fstein + JJXM WAITANIM, attack_fstein + JJXM GRAPPLE, attack_fstein + JJXM MASTER, attack_fstein + JJXM SLAVE, attack_fstein + JJXM HEADHOLD, attack_fstein + JJXM HEADHELD, attack_fstein + JJXM INAIR2, attack_fstein + JJXM_END + + +#***************************************************************************** +* + +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 + +#***************************************************************************** + +mode_onground ;4 + + 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 shn_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 + + ;this is so an attack isn't turned into a climbdown + ; in those 5-10 ticks before MODE_INAIR2 is set... + move *a13(ANIBASE),a14,L + cmpi shn_climb_up_anim,a14 + jrne #no_climbdown + + movi shn_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + + rets + +#no_climbdown + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + +;For standing on top of turnbuckles + +#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 + + movi shn_belbow_anim,a0 + calla change_anim1a + rets + +************ +#kick ;8 +#super_kick ;16 + + movi shn_bstomp_anim,a0 + calla change_anim1a + rets + + +#***************************************************************************** +* blocking + +mode_block ;7 + + ;check unint + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + calla form_button_value + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#z,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + + SETMODE NORMAL + + FACE24 shn,push_anim + calla change_anim1a + + WRSND W_SHAWN,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* shawn with zero health + +mode_dizzy ;8 + + move *a13(GETUP_TIME),a0 + jrnz #still_going + + calla clear_damage_log + + clr a0 + move a0,*a13(STARS_FLAG) + + SETMODE NORMAL + +#still_going + 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 + + calla master_keep_attached ;keep slave attached to me + + rets + +#***************************************************************************** + +mode_slave ;15 + rets + +#***************************************************************************** + +mode_headhold ;16 + + move *a13(ATTACH_PROC),a10,L + jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#z ;0 + rets + +************ + +#punch ;1 +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag + movi shn_4_knee_anim,a0 + calla change_anim1a + rets + +#tag + movi shn_4_knee_anim,a0 + calla change_anim1a + rets + +************ +#super_punch ;4 + + rets + +************ +#punchkick +#graboh +#kick + move a13,a0 + calla wres_get_stick_rel_cur + + btst MOVE_TOWARD_BIT,a0 + jrz #knee + + ;speed kick - speed kick - speed kick - spin kick + movi shn_speed_spinkick_anim,a0 + calla change_anim1a + rets + +#knee + movi shn_4_knee_anim,a0 + calla change_anim1a + rets + +************ +#super_kick ;16 +;If stick is toward opponent, then do quick knees + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #z + + ;knee - knee - knee - frankensteiner + movi shn_knee_fstein_anim,a0 + calla change_anim1a + rets + + +#***************************************************************************** +mode_headheld ;19 + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + movi shn_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_puppet ;20 + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +#VEL equ 30000h +#DVEL equ 21f0eh + + + SUBR shn_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 shn_rotate_anims_table +; old = up right + .long shn_stand2_anim ;new = up right + .long shn_2_to_4_turn_anim ; = down right + .long shn_2_to_6_turn_anim ; = down left + .long shn_2_to_8_turn_anim ; = up left + +; old = down right + .long shn_4_to_2_turn_anim ;new = up right + .long shn_stand4_anim ; = down right + .long shn_4_to_6_turn_anim ; = down left + .long shn_4_to_8_turn_anim ; = up left + +; old = down left + .long shn_6_to_2_turn_anim ;new = up right + .long shn_6_to_4_turn_anim ; = down right + .long shn_stand6_anim ; = down left + .long shn_6_to_8_turn_anim ; = up left + +; old = up left + .long shn_8_to_2_turn_anim ;new = up right + .long shn_8_to_4_turn_anim ; = down right + .long shn_8_to_6_turn_anim ; = down left + .long shn_stand8_anim ; = up left + + + SUBR shn_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long shn_walk1_f2_anim ;1 (UP) + .long shn_walk1_f2_anim ;2 (UP_RIGHT) + .long shn_walk1_f4_anim ;3 (RIGHT) + .long shn_walk1_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk1_f4_anim ;5 (DOWN) + .long shn_walk1_f4_anim ;6 (DOWN_LEFT) + .long shn_walk1_f2_anim ;7 (LEFT) + .long shn_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk2_f2_anim ;2 (UP_RIGHT) + .long shn_walk2_f2_anim ;3 (RIGHT) + .long shn_walk2_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk8_f4_anim ;5 (DOWN) + .long shn_walk8_f4_anim ;6 (DOWN_LEFT) + .long shn_walk4_f2_anim ;7 (LEFT) + .long shn_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk2_f2_anim ;2 (UP_RIGHT) + .long shn_walk2_f2_anim ;3 (RIGHT) + .long shn_walk4_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk4_f4_anim ;5 (DOWN) + .long shn_walk8_f4_anim ;6 (DOWN_LEFT) + .long shn_walk6_f2_anim ;7 (LEFT) + .long shn_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk8_f2_anim ;2 (UP_RIGHT) + .long shn_walk4_f4_anim ;3 (RIGHT) + .long shn_walk4_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk2_f4_anim ;5 (DOWN) + .long shn_walk6_f4_anim ;6 (DOWN_LEFT) + .long shn_walk2_f2_anim ;7 (LEFT) + .long shn_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long shn_walk5_f2_anim ;1 (UP) + .long shn_walk5_f2_anim ;2 (UP_RIGHT) + .long shn_walk5_f4_anim ;3 (RIGHT) + .long shn_walk5_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk5_f4_anim ;5 (DOWN) + .long shn_walk5_f4_anim ;6 (DOWN_LEFT) + .long shn_walk5_f2_anim ;7 (LEFT) + .long shn_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk6_f2_anim ;2 (UP_RIGHT) + .long shn_walk2_f2_anim ;3 (RIGHT) + .long shn_walk6_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk2_f4_anim ;5 (DOWN) + .long shn_walk4_f4_anim ;6 (DOWN_LEFT) + .long shn_walk2_f2_anim ;7 (LEFT) + .long shn_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk6_f2_anim ;2 (UP_RIGHT) + .long shn_walk6_f2_anim ;3 (RIGHT) + .long shn_walk8_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk4_f4_anim ;5 (DOWN) + .long shn_walk4_f4_anim ;6 (DOWN_LEFT) + .long shn_walk2_f2_anim ;7 (LEFT) + .long shn_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk4_f2_anim ;2 (UP_RIGHT) + .long shn_walk6_f2_anim ;3 (RIGHT) + .long shn_walk8_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk6_f4_anim ;5 (DOWN) + .long shn_walk2_f4_anim ;6 (DOWN_LEFT) + .long shn_walk2_f2_anim ;7 (LEFT) + .long shn_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR shn_torso_anims_table +; old = up right + .long shn_torso2_anim ;new = up right + .long shn_2_to_4_turn2_anim ; = down right + .long shn_2_to_6_turn2_anim ; = down left + .long shn_2_to_8_turn2_anim ; = up left + +; old = down right + .long shn_4_to_2_turn2_anim ;new = up right + .long shn_torso4_anim ; = down right + .long shn_4_to_6_turn2_anim ; = down left + .long shn_4_to_8_turn2_anim ; = up left + +; old = down left + .long shn_6_to_2_turn2_anim ;new = up right + .long shn_6_to_4_turn2_anim ; = down right + .long shn_torso6_anim ; = down left + .long shn_6_to_8_turn2_anim ; = up left + +; old = up left + .long shn_8_to_2_turn2_anim ;new = up right + .long shn_8_to_4_turn2_anim ; = down right + .long shn_8_to_6_turn2_anim ; = down left + .long shn_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/SHAWNIMG.ASM b/BACKUP/SHAWNIMG.ASM new file mode 100644 index 0000000..691ec51 --- /dev/null +++ b/BACKUP/SHAWNIMG.ASM @@ -0,0 +1,19 @@ + .FILE "shawnimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include shawnimg.tbl + .include shawnimg.h + + +****************************************************************************** + + .even + .include "shawn.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/BACKUP/SHAWNIMG.H b/BACKUP/SHAWNIMG.H new file mode 100644 index 0000000..a451fab --- /dev/null +++ b/BACKUP/SHAWNIMG.H @@ -0,0 +1,93 @@ + .global S3GU4A + .global S2AE3A + .global S2AH3A + .global S2AM3A + .global S2BK3C + .global S4AE3B + .global S4AH3D + .global S4AM3A + .global S4BK3A + .global S4LB3A + .global S3CP3B + .global S3GU2A + .global S3UC3X + .global S3FD3X + .global S3OS3X + .global S3OS3Z + .global S2KM3A + .global S2MP2A + .global S2NM3A + .global S3DC3A + .global S4KM3C + .global S4MP4C + .global S4NM3A + .global S3FL3X + .global S3ZI3A + .global S4SK3Y + .global S4KI3Q + .global S4MP4D + .global S4GF3B + .global S3RL3A + .global S3MF3B + .global S2CT2A + .global S4SB4B + .global S4BF3A + .global S4TI4B + .global S2FG3D + .global S4FG3A + .global S3BH3A + .global S3SG3A + .global S2BC3B + .global S4BC3A + .global S4PS3A + .global S2PS3A + .global S4PU3D + .global S2PJ3C + .global S2PU3C + .global S2PJ3D + .global S4PJ3F + .global S4GS3C + .global S2TW2B + .global S4TW4C + .global S2WL1A + .global S2WL2B + .global S2WL8A + .global S4WL2A + .global S4WL4C + .global S4WL5B + .global S1TT5Z + .global S1TR5Z + .global S3BO3A + .global S2ST2C + .global S4ST4C + .global S3RN3A + .global S4PT3B + .global S4POGO + .global S4GH3C + .global S3PN5C + .global S4SW4A + .global S3BR3Z + .global S3PM4B + .global S3MS3Z + .global S3CF3Z + .global S4LD4A + .global S4CO4A + .global S4GH3A + .global S3DU3A + .global S3GP3X + .global S4YR3A + .global S3BF3A + .global S4BZ4A + .global S3DD3B + .global S3UC3Z + .global S3TN3X + .global S3KF3B + .global S3SK3A + .global S3KT3A + .global S3KF3C + .global S3GA3A + .global S3AB3A + .global S4PJ3E + .global S3RR3Z + .global S4TD3F + .global S3CR3A diff --git a/BACKUP/SHNSEQ1.ASM b/BACKUP/SHNSEQ1.ASM new file mode 100644 index 0000000..69590e0 --- /dev/null +++ b/BACKUP/SHNSEQ1.ASM @@ -0,0 +1,614 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/26/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "shnseq1.asm" + .title "walks, runs, stances, and turns" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "shawnimg.h" + + .include "doinkimg.h" ;temp!!! + .include "bamimg.h" ;temp!!! + .include "takerimg.h" ;temp!!! + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref SMALL_RUN + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* STANDS + + SUBR shn_zip_anim + WL 60*60,B2ST2A+FR1 + .word 0 ;<--?????? + .word ANI_END + + + SUBR shn_stand2_anim + SUBR shn_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 4,S2ST2C+FR1 + WL 4,S2ST2C+FR3 + WL 4,S2ST2C+FR5 + WL 4,S2ST2C+FR7 + WL 4,S2ST2C+FR9 + WL 4,S2ST2C+FR11 + WL 4,S2ST2C+FR13 + WL 4,S2ST2C+FR15 + WL 4,S2ST2C+FR17 + .word ANI_REPEAT + + + SUBR shn_stand4_anim + SUBR shn_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 4,S4ST4C+FR1 + WL 4,S4ST4C+FR3 + WL 4,S4ST4C+FR5 + WL 4,S4ST4C+FR7 + WL 4,S4ST4C+FR9 + WL 4,S4ST4C+FR11 + WL 4,S4ST4C+FR13 + WL 4,S4ST4C+FR15 + WL 4,S4ST4C+FR17 + WL 4,S4ST4C+FR19 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR shn_torso2_anim + SUBR shn_torso8_anim + + WL 6,S2TW2B+FR1 + WL 6,S2TW2B+FR2 + WL 6,S2TW2B+FR3 + WL 6,S2TW2B+FR4 + WL 6,S2TW2B+FR3 + WL 6,S2TW2B+FR2 + .word ANI_REPEAT + + + SUBR shn_torso4_anim + SUBR shn_torso6_anim + + WL 6,S4TW4C+FR1 + WL 6,S4TW4C+FR2 + WL 6,S4TW4C+FR3 + WL 6,S4TW4C+FR4 + WL 6,S4TW4C+FR3 + WL 6,S4TW4C+FR2 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR shn_walk1_f2_anim + WL 2,S2WL1A+FR1 + WL 2,S2WL1A+FR2 + WL 2,S2WL1A+FR3 + WL 2,S2WL1A+FR4 + WL 2,S2WL1A+FR5 + WL 2,S2WL1A+FR6 + WL 2,S2WL1A+FR7 + WL 2,S2WL1A+FR8 + WL 2,S2WL1A+FR9 + WL 2,S2WL1A+FR10 + WL 2,S2WL1A+FR11 + WL 2,S2WL1A+FR12 + WL 2,S2WL1A+FR13 + WL 2,S2WL1A+FR14 + WL 2,S2WL1A+FR15 + WL 2,S2WL1A+FR16 + WL 2,S2WL1A+FR17 + .word ANI_REPEAT + + SUBR shn_walk2_f2_anim + WL 2,S2WL2B+FR1 + WL 2,S2WL2B+FR2 + WL 2,S2WL2B+FR3 + WL 2,S2WL2B+FR4 + WL 2,S2WL2B+FR5 + WL 2,S2WL2B+FR6 + WL 2,S2WL2B+FR7 + WL 2,S2WL2B+FR8 + WL 2,S2WL2B+FR9 + WL 2,S2WL2B+FR10 + WL 2,S2WL2B+FR11 + WL 2,S2WL2B+FR12 + WL 2,S2WL2B+FR13 + WL 2,S2WL2B+FR14 + WL 2,S2WL2B+FR15 + WL 2,S2WL2B+FR16 + WL 2,S2WL2B+FR17 + .word ANI_REPEAT + + SUBR shn_walk4_f2_anim + WL 2,S2WL8A+FR1 + WL 2,S2WL8A+FR2 + WL 2,S2WL8A+FR3 + WL 2,S2WL8A+FR4 + WL 2,S2WL8A+FR5 + WL 2,S2WL8A+FR6 + WL 2,S2WL8A+FR7 + WL 2,S2WL8A+FR8 + WL 2,S2WL8A+FR9 + WL 2,S2WL8A+FR10 + WL 2,S2WL8A+FR11 + WL 2,S2WL8A+FR12 + WL 2,S2WL8A+FR13 + WL 2,S2WL8A+FR14 + WL 2,S2WL8A+FR15 + WL 2,S2WL8A+FR16 + .word ANI_REPEAT + + SUBR shn_walk5_f2_anim + WL 2,S2WL1A+FR17 + WL 2,S2WL1A+FR16 + WL 2,S2WL1A+FR15 + WL 2,S2WL1A+FR14 + WL 2,S2WL1A+FR13 + WL 2,S2WL1A+FR12 + WL 2,S2WL1A+FR11 + WL 2,S2WL1A+FR10 + WL 2,S2WL1A+FR9 + WL 2,S2WL1A+FR8 + WL 2,S2WL1A+FR7 + WL 2,S2WL1A+FR6 + WL 2,S2WL1A+FR5 + WL 2,S2WL1A+FR4 + WL 2,S2WL1A+FR3 + WL 2,S2WL1A+FR2 + WL 2,S2WL1A+FR1 + .word ANI_REPEAT + + SUBR shn_walk6_f2_anim + WL 2,S2WL2B+FR17 + WL 2,S2WL2B+FR16 + WL 2,S2WL2B+FR15 + WL 2,S2WL2B+FR14 + WL 2,S2WL2B+FR13 + WL 2,S2WL2B+FR12 + WL 2,S2WL2B+FR11 + WL 2,S2WL2B+FR10 + WL 2,S2WL2B+FR9 + WL 2,S2WL2B+FR8 + WL 2,S2WL2B+FR7 + WL 2,S2WL2B+FR6 + WL 2,S2WL2B+FR5 + WL 2,S2WL2B+FR4 + WL 2,S2WL2B+FR3 + WL 2,S2WL2B+FR2 + WL 2,S2WL2B+FR1 + .word ANI_REPEAT + + + SUBR shn_walk8_f2_anim + WL 2,S2WL8A+FR16 + WL 2,S2WL8A+FR15 + WL 2,S2WL8A+FR14 + WL 2,S2WL8A+FR13 + WL 2,S2WL8A+FR12 + WL 2,S2WL8A+FR11 + WL 2,S2WL8A+FR10 + WL 2,S2WL8A+FR9 + WL 2,S2WL8A+FR8 + WL 2,S2WL8A+FR7 + WL 2,S2WL8A+FR6 + WL 2,S2WL8A+FR5 + WL 2,S2WL8A+FR4 + WL 2,S2WL8A+FR3 + WL 2,S2WL8A+FR2 + WL 2,S2WL8A+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR shn_walk1_f4_anim + WL 2,S4WL5B+FR16 + WL 2,S4WL5B+FR15 + WL 2,S4WL5B+FR14 + WL 2,S4WL5B+FR13 + WL 2,S4WL5B+FR12 + WL 2,S4WL5B+FR11 + WL 2,S4WL5B+FR10 + WL 2,S4WL5B+FR9 + WL 2,S4WL5B+FR8 + WL 2,S4WL5B+FR7 + WL 2,S4WL5B+FR6 + WL 2,S4WL5B+FR5 + WL 2,S4WL5B+FR4 + WL 2,S4WL5B+FR3 + WL 2,S4WL5B+FR2 + WL 2,S4WL5B+FR1 + .word ANI_REPEAT + + SUBR shn_walk2_f4_anim + WL 2,S4WL2A+FR1 + WL 2,S4WL2A+FR2 + WL 2,S4WL2A+FR3 + WL 2,S4WL2A+FR4 + WL 2,S4WL2A+FR5 + WL 2,S4WL2A+FR6 + WL 2,S4WL2A+FR7 + WL 2,S4WL2A+FR8 + WL 2,S4WL2A+FR9 + WL 2,S4WL2A+FR10 + WL 2,S4WL2A+FR11 + WL 2,S4WL2A+FR12 + WL 2,S4WL2A+FR13 + WL 2,S4WL2A+FR14 + WL 2,S4WL2A+FR15 + WL 2,S4WL2A+FR16 + .word ANI_REPEAT + + SUBR shn_walk4_f4_anim + WL 2,S4WL4C+FR1 + WL 2,S4WL4C+FR2 + WL 2,S4WL4C+FR3 + WL 2,S4WL4C+FR4 + WL 2,S4WL4C+FR5 + WL 2,S4WL4C+FR6 + WL 2,S4WL4C+FR7 + WL 2,S4WL4C+FR8 + WL 2,S4WL4C+FR9 + WL 2,S4WL4C+FR10 + WL 2,S4WL4C+FR11 + WL 2,S4WL4C+FR12 + WL 2,S4WL4C+FR13 + WL 2,S4WL4C+FR14 + WL 2,S4WL4C+FR15 + WL 2,S4WL4C+FR16 + WL 2,S4WL4C+FR17 + WL 2,S4WL4C+FR18 + .word ANI_REPEAT + + SUBR shn_walk5_f4_anim + WL 2,S4WL5B+FR1 + WL 2,S4WL5B+FR2 + WL 2,S4WL5B+FR3 + WL 2,S4WL5B+FR4 + WL 2,S4WL5B+FR5 + WL 2,S4WL5B+FR6 + WL 2,S4WL5B+FR7 + WL 2,S4WL5B+FR8 + WL 2,S4WL5B+FR9 + WL 2,S4WL5B+FR10 + WL 2,S4WL5B+FR11 + WL 2,S4WL5B+FR12 + WL 2,S4WL5B+FR13 + WL 2,S4WL5B+FR14 + WL 2,S4WL5B+FR15 + WL 2,S4WL5B+FR16 + .word ANI_REPEAT + + SUBR shn_walk6_f4_anim + WL 2,S4WL2A+FR16 + WL 2,S4WL2A+FR15 + WL 2,S4WL2A+FR14 + WL 2,S4WL2A+FR13 + WL 2,S4WL2A+FR12 + WL 2,S4WL2A+FR11 + WL 2,S4WL2A+FR10 + WL 2,S4WL2A+FR9 + WL 2,S4WL2A+FR8 + WL 2,S4WL2A+FR7 + WL 2,S4WL2A+FR6 + WL 2,S4WL2A+FR5 + WL 2,S4WL2A+FR4 + WL 2,S4WL2A+FR3 + WL 2,S4WL2A+FR2 + WL 2,S4WL2A+FR1 + .word ANI_REPEAT + + SUBR shn_walk8_f4_anim + WL 2,S4WL4C+FR18 + WL 2,S4WL4C+FR17 + WL 2,S4WL4C+FR16 + WL 2,S4WL4C+FR15 + WL 2,S4WL4C+FR14 + WL 2,S4WL4C+FR13 + WL 2,S4WL4C+FR12 + WL 2,S4WL4C+FR11 + WL 2,S4WL4C+FR10 + WL 2,S4WL4C+FR9 + WL 2,S4WL4C+FR8 + WL 2,S4WL4C+FR7 + WL 2,S4WL4C+FR6 + WL 2,S4WL4C+FR5 + WL 2,S4WL4C+FR4 + WL 2,S4WL4C+FR3 + WL 2,S4WL4C+FR2 + WL 2,S4WL4C+FR1 + .word ANI_REPEAT + +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR shn_2_to_4_turn_anim + SUBR shn_8_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TT5Z+FR2 ;2.5 + WL 1,S1TT5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_2_turn_anim + SUBR shn_6_to_8_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TT5Z+FR3 ;3.5 + WL 1,S1TT5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_6_turn_anim + SUBR shn_6_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 1,S1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_2_to_8_turn_anim + SUBR shn_8_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 1,S1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_8_turn_anim + SUBR shn_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TT5Z+FR3 ;3.5 + WL 1,S1TT5Z+FR2 ;2.5 + WL 1,S1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 1,S1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_2_to_6_turn_anim + SUBR shn_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TT5Z+FR2 ;2.5 + WL 1,S1TT5Z+FR3 ;3.5 + WL 1,S1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 1,S1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR shn_2_to_4_turn2_anim + SUBR shn_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TR5Z+FR2 ;2.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,S1TR5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_2_turn2_anim + SUBR shn_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TR5Z+FR3 ;3.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,S1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_6_turn2_anim + SUBR shn_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,S1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_2_to_8_turn2_anim + SUBR shn_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TR5Z+FR1 ;1.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,S1TR5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_8_turn2_anim + SUBR shn_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,S1TR5Z+FR4 ;4.5 + WL 1,S1TR5Z+FR3 ;3.5 + .word ANI_SETFACING + WL 1,S1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_2_to_6_turn2_anim + SUBR shn_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,S1TR5Z+FR2 ;2.5 + .word ANI_SETFACING + WL 1,S1TR5Z+FR3 ;3.5 + WL 1,S1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,S1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR shn_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR shn_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + +#lp1 + WL 3,S3RN3A+FR1 + WL 2,S3RN3A+FR2 + WL 3,S3RN3A+FR3 + WL 2,S3RN3A+FR4 + WL 3,S3RN3A+FR5 +#run2 + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + WL 2,S3RN3A+FR6 + WL ANI_CODE,SMALL_RUN +; .word ANI_SOUND,run_snd + WL 3,S3RN3A+FR7 + WL 2,S3RN3A+FR8 + WL 3,S3RN3A+FR9 + WL 2,S3RN3A+FR10 + WL 3,S3RN3A+FR11 + WL 2,S3RN3A+FR12 + WL 3,S3RN3A+FR13 + WL ANI_CODE,SMALL_RUN +; .word ANI_SOUND,run_snd + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR shn_bounce_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,SMALL_RUN +; .word ANI_SOUND,run_snd + + WL 3,S3BO3A+FR2 + .word ANI_BOUNCEROPE,0 + WL 1,S3BO3A+FR2 + + WL 3,S3BO3A+FR3 + .word ANI_BOUNCEROPE,1 + WL 1,S3BO3A+FR3 + + WL 3,S3BO3A+FR4 + .word ANI_BOUNCEROPE,2 + WL 1,S3BO3A+FR4 + + WL 3,S3BO3A+FR5 + .word ANI_BOUNCEROPE,3 + WL 1,S3BO3A+FR5 + + .word ANI_ZEROVELS + + WL 3,S3BO3A+FR6 + .word ANI_BOUNCEROPE,4 + WL 1,S3BO3A+FR6 + WL 4,S3BO3A+FR7 + + WL 3,S3BO3A+FR8 + .word ANI_BOUNCEROPE,0 + WL 1,S3BO3A+FR8 + + .word ANI_OFFSET,-10,0,0 + + WL 3,S3BO3A+FR9 + .word ANI_BOUNCEROPE,-1 + WL 1,S3BO3A+FR9 + + WL ANI_CODE,SMALL_RUN + + .word ANI_OFFSET,-30,0,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/SHNSEQ2.ASM b/BACKUP/SHNSEQ2.ASM new file mode 100644 index 0000000..8e5991c --- /dev/null +++ b/BACKUP/SHNSEQ2.ASM @@ -0,0 +1,2005 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/26/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "shnseq2.asm" + .title "routine punches and kicks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "shawnimg.h" + .include "display.equ" + .include "ring.equ" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;BAM BAM + .ref B4YR3A,B3RN3A + + ;DOINK + .ref D4YR3B,D3RN3B + + ;BRET + .ref H4YR3A,H3RN3A + + ;LEX + .ref L4YR3B,L3RN3B + + ;RAZOR + .ref R4YR3A,R3RN3D + + ;SHAWN + .ref shn_faceup_getup_anim,shn_faceup_getup2_anim + .ref S4YR3A,S3RN3A + + ;TAKER + .ref U4YR3B,U3RN3A + + ;YOKO + .ref Y4YR3A,Y3RN3C + + ;MISC + .ref HIT_THE_MAT,CALL_MISSES,get_opp_process,get_leap + .ref set_target_offsets,start_run_anim,SMALL_BOUNCE + .ref start_run_flung,ckzpos,ck_dizzy,choose_2or4 + .ref no_bk_xvel,win_announce,grnd_hit,SET_DIR_FACE + .ref DO_CROWD_CHEER,check_xvel,tgt_ground + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #2 NORMAL PUNCH + + SUBR shn_2_punch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,S2PU3C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,3 + WL 3,S2PU3C+FR2 + .word ANI_ATTACK_ON, AMODE_PUNCH,52,91,28,8 + WL 5,S2PU3C+FR3 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-30000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 3,S2PU3C+FR3 +#no_hit + WL 1,S2PU3C+FR3 + + ;one more tick if blocked, three more if hit, none if missed. + .word ANI_HMBWAIT,3,0,1 + + WL 3,S2PU3C+FR4 + WL 3,S2PU3C+FR5 + WL 3,S2PU3C+FR7 + WL 3,S2PU3C+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 NORMAL PUNCH + + SUBR shn_4_punch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,S4PU3D+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,3 + WL 3,S4PU3D+FR3 + .word ANI_ATTACK_ON, AMODE_PUNCH,49,85,26,10 + WL 5,S4PU3D+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-30000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 3,S4PU3D+FR4 + +#no_hit + WL 1,S4PU3D+FR4 + + .word ANI_HMBWAIT,3,0,1 + + WL 3,S4PU3D+FR5 + WL 3,S4PU3D+FR6 + WL 3,S4PU3D+FR7 + WL 3,S4PU3D+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 PUSH + + SUBR shn_2_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,S2PS3A+FR1 + WL 3,S2PS3A+FR2 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + WL 3,S2PS3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUSH,33,85,53,17 ;mode,x,y,w,h + + + WL 6,S2PS3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-40000h,#no_hit ;range,vel,addr + WL 15,S2PS3A+FR4 +#no_hit + + .word ANI_HMBWAIT,6,0,3 + WL 4,S2PS3A+FR2 + WL 4,S2PS3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 PUSH + + SUBR shn_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,S4PS3A+FR1 + WL 3,S4PS3A+FR2 + WL 3,S4PS3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUSH,33,85,44,17 ;mode,x,y,w,h + WL 6,S4PS3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-40000h,#no_hit ;range,vel,addr + WL 15,S4PS3A+FR4 +#no_hit + + .word ANI_HMBWAIT,6,0,3 + WL 4,S4PS3A+FR2 + WL 4,S4PS3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR shn_2_butt_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,S2BC3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 3,S2BC3B+FR4 + WL 3,S2BC3B+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT,40,81,10,12 ;mode,x,y,w,h + WL 3,S2BC3B+FR6 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,S2BC3B+FR6 +#no_hit + + .word ANI_HMBWAIT,3,0,1 + WL 3,S2BC3B+FR7 + WL 3,S2BC3B+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEADBUTT + + SUBR shn_4_butt_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,S4BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 3,S4BC3A+FR4 + WL 3,S4BC3A+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT,32,91,12,15 ;mode,x,y,w,h + WL 3,S4BC3A+FR6 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,S4BC3A+FR6 +#no_hit + + .word ANI_HMBWAIT,3,0,1 + WL 3,S4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK + + SUBR shn_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,S2KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,5 + WL 2,S2KM3A+FR2 + WL 2,S2KM3A+FR3 + WL 1,S2KM3A+FR4 + + WL ANI_SET_YVEL,20000h + + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h +; WL 5,S2KM3A+FR5 + WL 3,S2KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + .word ANI_HMBWAIT,4,0,2 + +; WWL ANI_SLIDE_BACK,10h,-40000h,#no_hit +; WL ANI_SET_YVEL,30000h +; WL 2,S2KM3A+FR5 +; +;#no_hit +; WL ANI_IFNOTSTATUS,#nopause +; WL 2,S2KM3A+FR5 +;#nopause + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,S2KM3A+FR5 + WL 4-1,S2KM3A+FR6 + WL 4-1,S2KM3A+FR7 + WL 4-1,S2KM3A+FR8 + WL 3,S2KM3A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KICK + + SUBR shn_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,S4KM3C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,4 + WL 2,S4KM3C+FR3 + WL 2,S4KM3C+FR4 + WL ANI_SET_YVEL,20000h + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h +; WL 5,S4KM3C+FR5 + WL 3,S4KM3C+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + .word ANI_HMBWAIT,4,0,2 + +; WWL ANI_SLIDE_BACK,10h,-40000h,#no_hit +; WL ANI_SET_YVEL,30000h +; WL 2,S4KM3C+FR5 +; +;#no_hit +; WL ANI_IFNOTSTATUS,#nopause +; WL 2,S4KM3C+FR5 +;#nopause + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4-1,S4KM3C+FR6 + WL 4-1,S4KM3C+FR7 + WL 4-1,S4KM3C+FR8 + WL 3,S4KM3C+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #3 BACKFLIP KICK + +;FIX!!! MAKE THIS A COOL MOVE 1/12/95 + + SUBR shn_backflip_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_KICK,12 + WL 3,S3KF3B+FR1 + WL 3,S3KF3B+FR2 + WL 1,S3KF3B+FR3 + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL ANI_SET_YVEL,5c000h + WL 2,S3KF3B+FR3 + .word ANI_OFFSET,-24,4,0 + WL 3,S3KF3B+FR4 + .word ANI_ATTACK_ON,AMODE_SHNBFKIK,17,40,47,62 + WL 3,S3KF3B+FR5 + .word ANI_ATTACK_OFF + WL 3,S3KF3B+FR6 + WL 3,S3KF3B+FR7 + WL 3,S3KF3B+FR8 + WL 3,S3KF3B+FR9 + WL 3,S3KF3B+FR10 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S3KF3B+FR11 + WL 3,S3KF3B+FR12 + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR shn_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,S2MP2A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_STOMP,10 + + ;if we're not going to hit, do a LEAPAT + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,0,0,-30,5,5,40 + WL 1,S2MP2A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_SET_YVEL,30000h + + WL ANI_IFSTATUS,#no_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,112,96,90000h,TGT_USER,28,0,-50 + .word ANI_STARTATTACK,AT_STOMP,12 + WL ANI_CODE,no_bk_xvel + +#no_leapat + WL 3,S2MP2A+FR3 + WL 3,S2MP2A+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,26 + + .word ANI_ATTACK_ON_Z,AMODE_STOMP,16,-8,-50,27,33,60 + WL 3,S2MP2A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#no_miss + + WL ANI_CODE,CALL_MISSES + +#no_miss + WL 4,S2MP2A+FR6 + WL 4,S2MP2A+FR7 + WL 4,S2MP2A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + + SUBR shn_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,S4MP4C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + ;if we're not going to hit, do a LEAPAT + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,0,0,-10,5,5,60 + WL 1,S4MP4C+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#no_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,112,96,90000h,TGT_USER,12,0,45 + .word ANI_STARTATTACK,AT_STOMP,12 + WL ANI_CODE,no_bk_xvel + +#no_leapat + .word ANI_STARTATTACK,AT_STOMP,6 + WL 3,S4MP4C+FR3 + WL 3,S4MP4C+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,26 + + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-3,-13,-10,44,35,60 + WL 3,S4MP4C+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#no_miss + + WL ANI_CODE,CALL_MISSES + +#no_miss + WL 4,S4MP4C+FR6 + WL 4,S4MP4C+FR7 + WL 4,S4MP4C+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* TURNBUCKLE STOMP + + SUBR shn_bstomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOCOLLIS|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,S4MP4C+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 35,190,190,190,90000h,TGT_GROIN,30,6,40 + .word ANI_STARTATTACK,AT_LEAPING,35 + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + + WL ANI_CODE,check_xvel + + WL 4,S4MP4C+FR3 + + ;attack box dimensions (that means size) depends on opp mode + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-27,0,-10,61,26,70 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-27,40,-10,61,26,70 + +#opp_onground + WL 1,S4MP4C+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFSTATUS,#hit + + ;missed + WL ANI_CODE,CALL_MISSES + .word ANI_BOUNCE,4 + WL ANI_GOTO,#common + +#hit + ;hit. bounce off. + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WLW ANI_SET_XVEL,20000h,AM_FACE_REL + +#common + WL 2,S4MP4C+FR5 + WL 3,S4MP4C+FR6 + WL 4,S4MP4C+FR7 + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + + WL 4,S4MP4C+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNBUCKLE ELBOW DROP + +#yoff equ 33 + + SUBR shn_belbow_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOCOLLIS|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + + WL 3,S4PJ3E+FR4 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 31,190,190,190,90000h,TGT_GROIN,22,11+#yoff,50 + .word ANI_STARTATTACK,AT_LEAPING,31 + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + +;Check x vel to make sure we aren't going to land on ropes! + WL ANI_CODE,check_xvel + + .word ANI_OFFSET,0,#yoff,0 + WL 3,S4PJ3E+FR5 + WL 3,S4PJ3E+FR6 + + ;attack box dimensions (that means size) depends on opp mode + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,19,1,-10,40,18,70 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,3,31,-10,37,49,70 + +#opp_onground + WL 1,S4PJ3E+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_IFSTATUS,#hit + + ;missed + WL ANI_CODE,CALL_MISSES + +#hit + .word ANI_BOUNCE,5 + .word ANI_SETPLYRMODE,MODE_INAIR + WL 2,S4PJ3E+FR8 + WL 4,S4PJ3E+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + + WL ANI_CHANGEANIM,shn_faceup_getup2_anim + +#***************************************************************************** +* +* #2 FALLING PUNCH + + SUBR shn_2_falling_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,S2PJ3D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 3,S2PJ3D+FR2 + WL 3,S2PJ3D+FR3 + .word ANI_OFFSET,0,64,0 + WL ANI_CODE,elbow_tgt2 + WL ANI_CODE,tgt_ground + LEAPATOPP 20,999,112,96,90000h,TGT_USER,-10,0,-50 + + .word ANI_STARTATTACK,AT_LBDROP,10 + WL 3,S2PJ3D+FR4 + WL 3,S2PJ3D+FR5 + + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,-24,0,-40,26,56,50 + WL 1,S2PJ3D+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,8 + + WL ANI_IFSTATUS,#hit2 + + ;missed + WL ANI_CODE,SMALL_BOUNCE + WL ANI_CODE,CALL_MISSES + WL ANI_GOTO,#cont2 + +#hit2 + WL ANI_CODE,HIT_THE_MAT +#cont2 + .word ANI_BOUNCE,4 + WL 4,S2PJ3D+FR7 + WL 4,S2PJ3D+FR8 + .word ANI_XFLIP + WL 1,S3RL3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + WL 4,S3RL3A+FR6 + + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#************************* +* +* #4 FALLING PUNCH + + SUBR shn_4_falling_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,S4PJ3F+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 3,S4PJ3F+FR2 + .word ANI_OFFSET,0,71,0 + WL ANI_CODE,#set_target + WL ANI_CODE,tgt_ground + LEAPATOPP 20,999,72,48h,90000h,TGT_USER,19,0,30 + WL ANI_CODE,#zero_x_4 + + WL 3,S4PJ3F+FR3 + WL 3,S4PJ3F+FR4 + WL 3,S4PJ3F+FR5 + + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,8,2,-10,23,56,50 + WL 1,S4PJ3F+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,8 + + WL ANI_IFSTATUS,#hit4 + + ;missed + WL ANI_CODE,SMALL_BOUNCE + WL ANI_CODE,CALL_MISSES + WL ANI_GOTO,#cont4 + +#hit4 + WL ANI_CODE,HIT_THE_MAT +#cont4 + .word ANI_BOUNCE,4 + WL 4,S4PJ3F+FR7 + WL 1,S4PJ3F+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + WL 4,S4PJ3F+FR8 + + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + +#set_target + + calla get_opp_process + move a0,a11 + + move *a13(CLOSEST_XDIST),a0 + cmpi >40,a0 + jrlt #drop + +;We are to side of fallen opponent, we must float toward +;his head or his knees + +;Take into account my flip as well as my opponents flip! + move *a13(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a11(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrnz #head + + movi TGT_KNEES,a0 + calla set_target_offsets + rets + +#head + movi TGT_HEAD,a0 + calla set_target_offsets + rets + +#drop +;Just drop straight down + movi TGT_CHEST,a0 + calla set_target_offsets + rets + + +;#zero_x_2 +; move *a13(CLOSEST_XDIST),a0 +; cmpi 32,a0 +; jrgt #ok2 ;Is he to the side? +; +;;Don't float if dropping straight down +; clr a0 +; move a0,*a13(OBJ_XVEL),L +;#ok2 rets + + + ;other scripts in this file use this one, thus the file-scope label +zero_x +#zero_x_4 + move *a13(CLOSEST_XDIST),a0 + cmpi 64,a0 + jrgt #ok4 ;Is he to the side? + +;Don't float if dropping straight down + clr a0 + move a0,*a13(OBJ_XVEL),L + +#ok4 rets + +#***************************************************************************** +* +* #2 KNEE + + SUBR shn_2_knee_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,S2NM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 3,S2NM3A+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 21,999,32,20,90000h,TGT_CHEST,50,70,0 + WL 3,S2NM3A+FR3 + + .word ANI_ATTACK_ON,AMODE_KNEE,36,28,38,49 ;mode,x,y,w,h + WL 3,S2NM3A+FR4 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,28h,-40000h,#no_hit + +#no_hit + WL 13,S2NM3A+FR5 + .word ANI_ZERO_XZVELS + WL 3,S2NM3A+FR6 + WL 3,S2NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KNEE + + SUBR shn_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,S4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 3,S4NM3A+FR3 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 21,999,32,20,90000h,TGT_CHEST,45,78,0 + + .word ANI_ATTACK_ON,AMODE_KNEE,11,22,58,60 ;mode,x,y,w,h + WL 3,S4NM3A+FR4 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,28h,-40000h,#no_hit + +#no_hit + WL 13,S4NM3A+FR4 + WL 3,S4NM3A+FR5 + WL 3,S4NM3A+FR6 + WL 3,S4NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR shn_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,S1TT5Z+FR2 + WL 3,S1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR shn_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + WL 4,S4GF3B+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET,33,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,S4GF3B+FR2 +; WL 4,S4GF3B+FR2 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +;got him + + +; out of control time for fling? + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,S4GF3B+FR2,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,6,S4GF3B+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GF3B+FR4,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GF3B+FR5,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,S4GF3B+FR6,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,S4GF3B+FR7,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 10,S4GF3B+FR8 + WL 4,S4GF3B+FR10 + .word ANI_OFFSET,-4,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missedb + WL 25,S4GF3B+FR3 ;10 +#missed + WL ANI_CODE,CALL_MISSES + WL 8,S4GF3B+FR3 + WL 4,S4GF3B+FR2 + WL 4,S4GF3B+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4YR3A+FR1,53,7,1 + LWWW H4YR3A+FR2,49,9,1 + LWWW H4YR3A+FR3,48,9,1 + LWWW H4YR3A+FR5,43,11,1 + LWWW H3RN3A+FR1,8,5,0 + LWWW H3RN3A+FR2,-25,8,0 + +#Razor + LWWW R4YR3A+FR1,32,17,0 + LWWW R4YR3A+FR2,21,20,0 + LWWW R4YR3A+FR3,1,11,0 + LWWW R4YR3A+FR4,4,15,0 + LWWW R3RN3D+FR10,1,16,0 + LWWW R3RN3D+FR11,-20,16,0 + +#Taker + LWWW U4YR3B+FR2,34,18,0 + LWWW U4YR3B+FR3,37,16,0 + LWWW U4YR3B+FR4,29,24,0 + LWWW U4YR3B+FR5,27,24,0 + LWWW U3RN3A+FR2,-11,15,0 + LWWW U3RN3A+FR2,-25,14,0 + +#Yokozuna + LWWW Y4YR3A+FR1,59,11,1 + LWWW Y4YR3A+FR4,37,13,1 + LWWW Y4YR3A+FR5,32,11,1 + LWWW Y4YR3A+FR7,5,3,1 + LWWW Y3RN3C+FR7,10,13,0 + LWWW Y3RN3C+FR8,-10,12,0 + +#Shawn + LWWW S4YR3A+FR2,38,5,1 + LWWW S4YR3A+FR3,52,-3,1 + LWWW S4YR3A+FR5,21,11,1 + LWWW S4YR3A+FR6,19,10,1 + LWWW S3RN3A+FR2,8,11,0 + LWWW S3RN3A+FR3,-20,11,0 + +#BamBam + LWWW B4YR3A+FR3,37,10,0 + LWWW B4YR3A+FR4,39,8,0 + LWWW B4YR3A+FR5,42,7,0 + LWWW B4YR3A+FR7,-1,6,0 + LWWW B3RN3A+FR1,-14,22,0 + LWWW B3RN3A+FR2,-36,22,0 + +#Doink + LWWW D4YR3B+FR1,64,16,1 + LWWW D4YR3B+FR2,60,20,1 + LWWW D4YR3B+FR3,47,19,1 + LWWW D4YR3B+FR4,38,20,1 + LWWW D3RN3B+FR3,16,20,0 + LWWW D3RN3B+FR4,-15,18,0 + +#Adam + .long 0 + +#Lex + LWWW L4YR3B+FR1,66,16,1 + LWWW L4YR3B+FR2,54,10,1 + LWWW L4YR3B+FR3,38,13,1 + LWWW L4YR3B+FR4,13,11,1 + LWWW L3RN3B+FR2,-5,19,0 + LWWW L3RN3B+FR3,0,13,0 + +#strt_run_tbl + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR shn_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 5,S2CT2A+FR4 + WL ANI_CODE,tgt_tbukl + .word ANI_LEAPATPOS,24,200,-12,12,0 ;#ticks,dist,xoff,yoff,zoff + .word ANI_SETPLYRMODE,MODE_INAIR + WL 6,S2CT2A+FR5 + WL 5,S2CT2A+FR6 + WL 5,S2CT2A+FR7 + WL 4,S2CT2A+FR8 + WL 4,S2CT2A+FR9 + + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETFACING + .word ANI_SHAKECORNER + + .word ANI_OFFSET,2,0,0 ;x,y,z + WL ANI_CODE,tbukl_flip +#repeat + WL 5,S4SB4B+FR1 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR2 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR3 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR4 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR5 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR6 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR7 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR8 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR shn_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SHAKECORNER + WL 5,S4MP4D+FR1 + .word ANI_OFFSET,0,15,0 + WL 5,S4MP4D+FR2 + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL ANI_SET_YVEL,20000h + + .word ANI_GRAVITY_ON + WL 8,S4MP4D+FR3 + WL 1,S4MP4D+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4MP4D+FR6 + WL 3,S4MP4D+FR7 + WL 3,S4MP4D+FR8 + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR tbukl_flip + +;Check to see if opponent is getting in/out of ring, and turn accordingly! + calla get_opp_process ;closest opponent process + move *a0(INRING),a0 ;0 = in ring, 1 = outside + + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft + +;On right turnbuckle + move a0,a0 + jrnz #noflip +#yesflip + move *a13(OBJ_CONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#noflip + move *a13(OBJ_CONTROL),a14 + andni M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + rets +#onlft +;On left turnbuckle + move a0,a0 + jrnz #yesflip + jruc #noflip + +#***************************************************************************** +* +* #3 FLYING KICK + +;#yoff1 equ 60 + + SUBR shn_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,S3DC3A+FR3 + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL ANI_CODE,get_leap + WL ANI_IFSTATUS,#no_xvel + +;;If opponent is on ground, just jump in place +; WL ANI_CODE,#ckongrnd +; WL ANI_IFNOTSTATUS,#norm +; .ref dnk_belly_anim +; WL ANI_CHANGEANIM,dnk_belly_anim +;#norm +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 19,999,150,65,90000h,TGT_HEAD,30,100,0 + + WL ANI_GOTO,#cont + +#no_xvel + .word ANI_ZERO_XZVELS + WL ANI_SET_YVEL,64000h +#cont +; WL ANI_CODE,no_bk_xvel + WL 2,S3DC3A+FR4 + .word ANI_OFFSET,0,47h,0 + WL 3,S3DC3A+FR5 + WL 7,S3DC3A+FR6 + + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_FLYKICK,23,-22,59,40 + WL 3,S3DC3A+FR7 + .word ANI_ATTACK_OFF + + WL 3,S3DC3A+FR8 + WL 3,S3DC3A+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,15 + WL 5,S3DC3A+FR10 + .word ANI_XFLIP + + ;and now get up + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + WL 3,S3RL3A+FR6 + WL 3,S3RL3A+FR7 + WL 3,S3RL3A+FR8 + + WL 4,S3GU2A+FR2 + WL 4,S3GU2A+FR3 + WL 4,S3GU2A+FR4 + WL 4,S3GU2A+FR5 + WL 4,S3GU2A+FR6 + WL 4,S3GU2A+FR7 + + WL 2,S3GU2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,S3GU2A+FR8 + + WL 4,S3GU2A+FR9 + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 3,S3RL3A+FR4 + WL 3,S3RL3A+FR3 + WL 3,S3RL3A+FR2 + + WL 4,S3GU4A+FR2 + WL 4,S3GU4A+FR3 + WL 4,S3GU4A+FR4 + WL 4,S3GU4A+FR5 + WL 4,S3GU4A+FR6 + WL 4,S3GU4A+FR7 + + WL 2,S3GU4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,S3GU4A+FR8 + + WL 4,S3GU4A+FR9 + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckongrnd + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + calla get_opp_process ;closest opponent process + move *a0(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #inplace + rets + +#inplace + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +****************************************************************************** +* +* SPECIAL FUNCTIONS + +#********** +* If our facings match, go for the knees. If they differ, go for the chest. +* (jump across the centerline) + +elbow_tgt1 + + calla get_opp_process + move a0,a11 + + move *a13(FACING_DIR),a0 + move *a11(FACING_DIR),a1 + andi MOVE_RIGHT|MOVE_LEFT,a0 + andi MOVE_RIGHT|MOVE_LEFT,a1 + cmp a0,a1 + jrne #head + + movi TGT_KNEES,a0 + calla set_target_offsets + rets + +#head + movi TGT_CHEST,a0 + calla set_target_offsets + rets + + +#********** +* just like elbow_tgt1, only backwards (stay on one side of the centerline) +* + +elbow_tgt2 + + calla get_opp_process + move a0,a11 + + move *a13(FACING_DIR),a0 + move *a11(FACING_DIR),a1 + andi MOVE_RIGHT|MOVE_LEFT,a0 + andi MOVE_RIGHT|MOVE_LEFT,a1 + cmp a0,a1 + jreq #head + + movi TGT_GROIN,a0 + calla set_target_offsets + rets + +#head + movi TGT_CHEST,a0 + calla set_target_offsets + rets + +#***************************************************************************** + + SUBR shn_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*9/255 ;inv multiply (0-255 -> 0-11) + + .long S3RL3A+FR10 ;0 + .long S3RL3A+FR1 ;1 + .long S3RL3A+FR2 ;2 + .long S3RL3A+FR3 ;3 + .long S3RL3A+FR4 ;4 + .long S3RL3A+FR5 ;5 + .long S3RL3A+FR6 ;6 + .long S3RL3A+FR7 ;7 + .long S3RL3A+FR8 ;8 + .long S3RL3A+FR9 ;9 + .long 0,0,0,0,0,0,0 + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR shn_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,300 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_OFFSET,15,0,0 ;x,y,z + + WL 4,S3CP3B+FR1 + WL 4,S3CP3B+FR2 + WL 4,S3CP3B+FR3 + WL 4,S3CP3B+FR4 + WL 4,S3CP3B+FR5 + WL 4,S3CP3B+FR6 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 4,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR shn_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,S3OS3X+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,300 + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,S3OS3X+FR9 + WL 4,S3OS3X+FR10 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_OFFSET,15,0,0 ;x,y,z + + WL 4,S3CP3B+FR1 + WL 4,S3CP3B+FR2 + WL 4,S3CP3B+FR3 + WL 4,S3CP3B+FR4 + WL 4,S3CP3B+FR5 + WL 4,S3CP3B+FR6 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 4,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* + + SUBR shn_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + + WL 2,S3GU4A+FR9 + WL 2,S3GU4A+FR6 + WL 2,S3GU4A+FR4 + WL ANI_SET_YVEL,39000h + + WL 3,S3CP3B+FR2 + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,S3CP3B+FR3 + WL 3,S3CP3B+FR4 + WL 3,S3CP3B+FR5 + WL 3,S3CP3B+FR6 + WL 6,S3CP3B+FR7 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +* + SUBR shn_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + + WL 3,S3CR3A+FR1 + .word ANI_OFFSET,0,10,0 ;***** + WL 3,S3CR3A+FR2 + .word ANI_OFFSET,5,16,0 ;***** + WL 3,S3CR3A+FR3 + .word ANI_OFFSET,5,16,0 ;***** + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE + ;now jump off... + WL ANI_SET_YVEL,40000h + + WLW ANI_SET_XVEL,48000h,AM_FACE_REL + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + .word ANI_BENDROPE,2 + .word ANI_BENDROPE,-1 + + WL 3,S3CR3A+FR4 + .word ANI_WAITHITGND + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .WORD ANI_XFLIP + .word ANI_ZEROVELS + + .word ANI_OFFSET,5,0,0 ;***** + + WL 3,S2CT2A+FR8 +; WL 3,S2CT2A+FR9 +; WL 3,S2CT2A+FR10 +; WL 3,S2CT2A+FR11 +; WL 3,S2CT2A+FR12 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR shn_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + + ;jump in + WL 3,S4MP4D+FR1 + WL 3,S4MP4D+FR2 + WL 3,S4MP4D+FR3 + WL 3,S4MP4D+FR4 + + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,1ch,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 3,S4MP4D+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4MP4D+FR6 + WL 3,S4MP4D+FR7 + WL 3,S4MP4D+FR8 + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE | MODE_NOGRAVITY + WL 3,S3CR3A+FR1 + .word ANI_OFFSET,0,10,0 ;***** + WL 3,S3CR3A+FR2 + .word ANI_OFFSET,5,16,0 ;***** + WL 3,S3CR3A+FR3 + .word ANI_OFFSET,5,16,0 ;***** + WL 3,S3CR3A+FR4 + + .word ANI_BENDROPE,2 + .word ANI_BENDROPE,-1 + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .WORD ANI_XFLIP + WL 3,S2CT2A+FR8 +; WL 3,S2CT2A+FR9 +; WL 3,S2CT2A+FR10 +; WL 3,S2CT2A+FR11 +; WL 3,S2CT2A+FR12 + .WORD ANI_XFLIP + + WL ANI_CODE,clr_climb + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets +#set_z + +clr_climb + + clr a0 + move a0,*a13(CLIMBING_THRU) ;1=Climbing thru ropes flag + rets + +#***************************************************************************** + + SUBR shn_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL 3,S3GU2A+FR9 + WL 3,S3GU2A+FR8 + WL 3,S3GU2A+FR7 + WL 3,S3GU2A+FR6 + WL 3,S3GU2A+FR5 + WL 3,S3GU2A+FR4 + WL 3,S3GU2A+FR2 + + ;roll over once + WLW ANI_SET_ZVEL,0A8000h,AM_ABS + + WL 3,S3RL3A+FR1 + WL 3,S3RL3A+FR2 + WL 3,S3RL3A+FR3 + WL 3,S3RL3A+FR4 + WL 3,S3RL3A+FR5 + WL 3,S3RL3A+FR6 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + + ;climb through + .WORD ANI_XFLIP + WL ANI_CODE,NOT_IN_RING + .word ANI_OFFSET,20,-37h,0 ;x,y,z + WL 3,S4KI3Q+FR5 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + .WORD ANI_XFLIP + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +NOT_IN_RING + MOVK 1,A0 + MOVE A0,*A13(INRING) + RETS + +#***************************************************************************** + + SUBR shn_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .WORD ANI_XFLIP + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR5 + .word ANI_OFFSET,-20,37h,-60 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,S3RL3A+FR6 + WL 3,S3RL3A+FR5 + WL 3,S3RL3A+FR4 + WL 3,S3RL3A+FR3 + WL 3,S3RL3A+FR2 + WL 3,S3RL3A+FR1 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,S3GU2A+FR2 + WL 3,S3GU2A+FR3 + WL 3,S3GU2A+FR4 + WL 3,S3GU2A+FR5 + WL 3,S3GU2A+FR6 + WL 3,S3GU2A+FR7 + WL 3,S3GU2A+FR8 + WL 3,S3GU2A+FR9 + + WL ANI_CODE,clr_climb + + .WORD ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR shn_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,S1TT5Z+FR2 + WL 3,S1TT5Z+FR3 + +#dir4 + WL 3,S3GU4A+FR9 + WL 3,S3GU4A+FR8 + WL 3,S3GU4A+FR7 + WL 3,S3GU4A+FR6 + WL 3,S3GU4A+FR5 + WL 3,S3GU4A+FR4 + WL 3,S3GU4A+FR3 + WL 3,S3GU4A+FR2 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,S3RL3A+FR10 + WL 3,S3RL3A+FR9 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + WL 3,S3RL3A+FR8 + WL 3,S3RL3A+FR7 + WL 3,S3RL3A+FR6 + + ;climb through + .word ANI_ZEROVELS + .WORD ANI_XFLIP + WL 3,S3DC3A+FR7 + WL 3,S3DC3A+FR6 + WL 3,S3DC3A+FR5 + .word ANI_OFFSET,0,-61,0 + .WORD ANI_XFLIP + + .word ANI_ZERO_XZVELS + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + + +#***************************************************************************** + + SUBR shn_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_OFFSET,0,61,0 + WL 3,S3DC3A+FR5 + WL 3,S3DC3A+FR6 + WL 3,S3DC3A+FR7 + .WORD ANI_XFLIP + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,S3RL3A+FR7 + WL 3,S3RL3A+FR8 + WL 3,S3RL3A+FR9 + WL 3,S3RL3A+FR10 + + .word ANI_ZEROVELS + + ;get up + WL 3,S3GU4A+FR2 + WL 3,S3GU4A+FR3 + WL 3,S3GU4A+FR4 + WL 3,S3GU4A+FR5 + WL 3,S3GU4A+FR6 + WL 3,S3GU4A+FR7 + WL 3,S3GU4A+FR8 + WL 3,S3GU4A+FR9 + + WL ANI_CODE,clr_climb + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#set_zvel2 + movi 50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR shn_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,S1TT5Z+FR2 ;2.5 + WL 3,S1TT5Z+FR3 ;3.5 + WL ANI_GOTO,#cont + + SUBR shn_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,999,80h,50h,90000h,TGT_CHEST,0,57,-15 + + WL 3,S3PN5C+FR1 + .word ANI_OFFSET,0,31,0 ;x,y,z + WL 18,S3PN5C+FR2 + WL 4,S3PN5C+FR3 +; .word ANI_WAITHITGND + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + + WL 3,S3PN5C+FR7 + WL ANI_CODE,DO_CROWD_CHEER + + .word ANI_ATTACK_OFF + WL ANI_CODE,HIT_THE_MAT + .word ANI_BOUNCE,4 + WL 3,S3PN5C+FR7 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + WL 4,S3PN5C+FR7 + WL ANI_CODE,win_announce + .word ANI_OFFSET,0,0,0 ;x,y,z + WL 40,S3PN5C+FR7 + +;???? IS THIS WHERE IT GOES ? + .word ANI_LOOP + +;Do another ground hit on opponent + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 4,S3GU4A+FR4 + WL 4,S3GU4A+FR5 + WL 4,S3GU4A+FR6 + WL 4,S3GU4A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,S3GU4A+FR8 + WL 4,S3GU4A+FR9 + + WL 5,S4SW4A+FR1 + WL 5,S4SW4A+FR2 + WL 5,S4SW4A+FR3 + WL 5,S4SW4A+FR4 + WL 5,S4SW4A+FR5 + WL 5,S4SW4A+FR6 + WL 5,S4SW4A+FR7 + WL 5,S4SW4A+FR8 + WL 5,S4SW4A+FR9 + WL 1000,S4SW4A+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + +;Leap up onto nearest turnbuckle. Call with ANI_CODE to set offsets +; before doing the ANI_LEAPATPOS. + + SUBR tgt_tbukl + + ;figure out which one to climb. + movi vln_right_rope,a0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrgt #right + movi vln_left_rope,a0 +#right + + move *a0+,a1,W ;X + move *a0+,a2,W ;Z + subi 16,a2 + movi MAT_Y+80,a3 ;Y + + move a1,*a13(TGT_XOFF) + move a2,*a13(TGT_ZOFF) + move a3,*a13(TGT_YOFF) + + rets + +#***************************************************************************** +* #4 SLAP + + SUBR shn_2_slap_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,17 + WL 2,S1TT5Z+FR2 ;2.5 + WL 2,S1TT5Z+FR3 ;3.5 + + SUBR shn_4_slap_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,15 + WL 3,S4PT3B+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0dh,999,4ah,50,90000h,TGT_HEAD,76,110,30 + + .word ANI_CLR_STATUS + WL 3,S4PT3B+FR2 + WL 4,S4PT3B+FR3 + WL 3,S4PT3B+FR4 + WL 3,S4PT3B+FR5 + + .word ANI_ATTACK_ON, AMODE_BACKHAND,31,44,55,47 ;mode,x,y,w,h + WL 3,S4PT3B+FR6 + + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hit2 + + WL ANI_SET_YVEL,40000h + WL 10,S4PT3B+FR6 +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + + WL 8,S4PT3B+FR6 + WL 3,S4PT3B+FR7 + WL 3,S4PT3B+FR8 + WL 3,S4PT3B+FR9 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/SHNSEQ3.ASM b/BACKUP/SHNSEQ3.ASM new file mode 100644 index 0000000..4131a87 --- /dev/null +++ b/BACKUP/SHNSEQ3.ASM @@ -0,0 +1,2478 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/26/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "shnseq3.asm" + .title "lockup stuff and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "display.equ" + .include "ring.equ" + .include "shawnimg.h" + .include "damage.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + ;BRET + .ref hrt_hitonground_anim,hrt_break_neck_anim + .ref hrt_flyout_anim,hrt_3_head_held_anim + .ref H2AH3A,H2AM3A,H2CP3A,H3BF3A,H3DU3A,H3FR3A,H3GU4A,H3UC3X + .ref H3UC3Z,H3HB3A + + ;BAM BAM + .ref bam_hitonground_xflip_anim,bam_3_head_held_anim + .ref bam_flyout_anim,bam_break_neck_anim + .ref bam_break_neck4_anim + .ref B3BF3C,B3DU3A,B3FD3C,B3GU4A,B4AH4A,B4TD3B,B4UC3B + .ref B4BF3A,B3HB3A,B3DR3B + + ;DOINK + .ref dnk_hitonground_anim,dnk_hitonground_xflip_anim + .ref dnk_break_neck_anim,dnk_flyout_anim,dnk_3_head_held_anim + .ref D3AE3B,D3BF3A,D3DU3A,D3FD3E,D3HT3Z,D3OS3A,D3PM4C,D3SA3A + .ref D3UC3A,D3AK3A + + ;LEX + .ref lex_hitonground_anim,lex_flyout_anim + .ref lex_break_neck_anim,lex_3_head_held_anim + .ref lex_break_neck4_anim + .ref L3BF3B,L3CP3B,L3DU3A,L3FD3B,L3FH3A,L3UC3X,L4AM4B,L3BF3A + .ref L2AH2A,L3CP3X,L4GH3B + + ;RAZOR + .ref rzr_hitonground_anim,rzr_flyout_anim + .ref rzr_break_neck_anim,rzr_3_head_held_anim + .ref rzr_break_neck4_anim + .ref R3BF3A,R3DU3B,R3FD3B,R3GU2A,R3GU4A,R3HG3B,R3TD3A,R4AH4C + .ref R3HB3A + + ;SHAWN + .ref shn_break_neck_anim,shn_stand4_anim,shn_3_head_held_anim + .ref shn_hitonground_anim,shn_flyout_anim + .ref shn_faceup_getup_anim,shn_arm_broken_anim + .ref shn_fall_back3_anim + .ref S4TD3F + + ;TAKER + .ref und_hitonground_anim,und_flyout_anim + .ref und_break_neck_anim,und_3_head_held_anim + .ref und_break_neck_anim + .ref U3AE4A,U3CP3B,U3DU3B,U3FD3X,U3FH3A,U3GP3X,U4AH3A,U4AM4C + .ref U4BF3Z,U4BF3A,U3TBSM + + ;YOKO + .ref yok_hitonground_anim,yok_frnk_backfire_anim + .ref yok_3_head_held_anim,yok_break_neck_anim + .ref yok_hitonground_xflip_anim + .ref Y3BF3A,Y3GU2A,Y3FD3A,Y3FD3N,Y3LB3A,Y4AM4A + + .ref ckzpos + + ;from WRESTLE.ASM + .ref process_ptrs + + ;MISC + .ref store_opp_xvel,merge_xvels,announce_rnd_winner,SMALL_BOUNCE + .ref HIT_THE_MAT,CALL_SPECIAL_MOVE,CALL_MISSES,CALL_SETUP + .ref CALL_MISS_YOKO,choose_2or4 + + .REF CALL_THROWN_OUT + .REF CALL_ANI_AVERAGE_MOVE + + .REF DO_FRANK_MESS + .REF DO_GERM_MESS + .REF DO_BODY_MESS + + .REF CALL_OTHER_AVERAGE + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GERMAN SUPLEX + + + SUBR shn_gsuplex_run_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFOPPMODE,MODE_HEADHELD,#front_grab0 + WWL ANI_IFOPPMODE,MODE_HEADHOLD,#front_grab0 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#front_grab0 + WWWL ANI_IFNOTROPE,RC_FRONT,200,#back_grab0 + +#front_grab0 + .word ANI_STARTATTACK,AT_LEAPING,6 + .word ANI_XFLIP + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,70,70,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + WL ANI_GOTO,#common + +#back_grab0 + + ;check for a likely hit. If not, abort and do a front grab instead. + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON,AMODE_HITCHECK,12,47,49+8,23 + .word ANI_PAUSE,1 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#front_grab0 + + .word ANI_OFFSET,5,0,0 + WL 3,S3BH3A+FR1 + .word ANI_OFFSET,7+10,0,0 + WL 3,S3BH3A+FR2 + .word ANI_OFFSET,3+10,0,0 + WL 3,S3BH3A+FR3 + .word ANI_OFFSET,6+10,0,0 + WL 3,S3BH3A+FR4 + .word ANI_OFFSET,2+10,0,0 + WL 3,S3BH3A+FR5 + .word ANI_OFFSET,1+10,0,0 + WL 3,S3BH3A+FR6 + .word ANI_OFFSET,3+10,0,0 + .word ANI_FACE,MOVE_DOWN|MOVE_LEFT + WL ANI_GOTO,#common + + SUBR shn_gsuplex_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFOPPMODE,MODE_HEADHELD,#front_grab + WWL ANI_IFOPPMODE,MODE_HEADHOLD,#front_grab + WWL ANI_IFOPPMODE,MODE_ONGROUND,#front_grab + WWWL ANI_IFNOTROPE,RC_FRONT,200,#back_grab + +#front_grab + .word ANI_XFLIP + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + WL ANI_GOTO,#common + +#back_grab + + ;check for a likely hit. If not, abort and do a front grab instead. + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON,AMODE_HITCHECK,12,47,49+8,23 + .word ANI_PAUSE,1 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#front_grab + + .word ANI_OFFSET,5,0,0 + WL 3,S3BH3A+FR1 + .word ANI_OFFSET,7+10,0,0 + WL 3,S3BH3A+FR2 + .word ANI_OFFSET,3+10,0,0 + WL 3,S3BH3A+FR3 + .word ANI_OFFSET,6+10,0,0 + WL 3,S3BH3A+FR4 + .word ANI_OFFSET,2+10,0,0 + WL 3,S3BH3A+FR5 + .word ANI_OFFSET,1+10,0,0 + WL 3,S3BH3A+FR6 + .word ANI_OFFSET,3+10,0,0 + .word ANI_FACE,MOVE_DOWN|MOVE_LEFT +#common + + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_PUPPET,-68,47,49,23 + WWL ANI_WAITHITOPP,12,S3BH3A+FR7 + .word ANI_ZERO_XZVELS + WL 5,S3BH3A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + +;got him + + WL ANI_CODE,DO_GERM_MESS + + WL ANI_CODE,CALL_SPECIAL_MOVE + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,5,S3SG3A+FR2,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,S3SG3A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR4,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR5,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR6,#puppet_tbl,4 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_GSUPLEX + + WL 2,S3SG3A+FR6 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR7,#puppet_tbl,5 + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR8,#puppet_tbl,6 + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_DETACH + .word ANI_OFFSET,-34,0,0 + + WL 6,S3CP3B+FR7 + + WL ANI_CODE,#zero_butn + + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +;#tgt_yoko +; WL ANI_CODE,CALL_MISS_YOKO +; WL 8,S3BH3A+FR7 +; WL 4,S3BH3A+FR8 +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 9,S3BH3A+FR7 + WL 4,S3BH3A+FR8 + .word ANI_XFLIP + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#4 + WL 1,S2ST2C+FR1 + .word ANI_FACEUP + WL ANI_GOTO,#2 + +#4 + WL 1,S4ST4C+FR1 + .word ANI_FACEDOWN +#2 + + WL ANI_CODE,#zero_butn + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#zero_butn +;Force player to start holding his button down starting at the end +;of the current buzz sequence. + + move *a13(PLYRNUM),a0 + X16 a0 + .ref punch_dtime1 + addi punch_dtime1,a0 + clr a14 + move a14,*a0 + rets + +******** +* #include "s_gsup.seq" +* +* NOTE: Because of some funny flipping in the attack sequence, all X offsets +* in victim sequences must be sign-reversed. + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3UC3X+FR1,-18,14,1 + LWWW H3UC3X+FR2,-39,30,1 + LWWW H3UC3X+FR4,-13,32,1 + LWWW H3UC3X+FR5,37,57,1 + LWWW H3UC3X+FR6,90,17,1 + LWWW H3UC3Z+FR1,116,21,1 + LWWW H3UC3Z+FR2,152,25,1 +#Razor + LWWW R3FD3B+FR1,-20,12,1 + LWWW R3FD3B+FR2,-42,29,1 + LWWW R3FD3B+FR4,-23,37,1 + LWWW R3FD3B+FR5,24,43,1 + LWWW R3FD3B+FR6,89,5,1 + LWWW R3HG3B+FR1,118,23,1 + LWWW R3HG3B+FR2,146,31,1 +#Taker + LWWW U3FD3X+FR1,-25,24,0 + LWWW U3FD3X+FR3,-27,34,0 + LWWW U3FD3X+FR5,27,54,0 + LWWW U3FD3X+FR6,72,60,0 + LWWW U3GP3X+FR1,89,16,0 + LWWW U3GP3X+FR2,118,-12,0 + LWWW U3GP3X+FR3,149,6,0 +#Yokozuna + LWWW Y3FD3A+FR1,-26,4,1 + LWWW Y3FD3A+FR2,-58,40,1 + LWWW Y3FD3A+FR4,-29,41,1 + LWWW Y3FD3A+FR5,17,58,1 + LWWW Y3FD3N+FR1,64,36,1 + LWWW Y3FD3N+FR3,89,18,1 + LWWW Y3FD3N+FR4,118,35,1 +#Shawn + LWWW S3UC3X+FR1,-16,16,1 + LWWW S3UC3X+FR3,-40,25,1 + LWWW S3UC3X+FR5,2,34,1 + LWWW S3UC3X+FR6,62,55,1 + LWWW S3FD3X+FR1,76,16,1 + LWWW S3FD3X+FR2,107,35,1 + LWWW S3FD3X+FR3,140,60,1 +#BamBam + LWWW B4UC3B+FR1,-24,28,1 + LWWW B4UC3B+FR3,-48,27,1 + LWWW B4UC3B+FR5,0,51,1 + LWWW B4UC3B+FR6,69,61,1 + LWWW B3FD3C+FR1,88,2,1 + LWWW B3FD3C+FR2,115,31,1 + LWWW B3FD3C+FR3,139,51,1 +#Doink + LWWW D3UC3A+FR2,-21,22,1 + LWWW D3UC3A+FR3,-25,34,1 + LWWW D3UC3A+FR5,-15,32,1 + LWWW D3UC3A+FR7,45,58,1 + LWWW D3FD3E+FR2,98,10,1 + LWWW D3FD3E+FR3,133,1,1 + LWWW D3FD3E+FR4,162,25,1 +#Adam + .long 0 +#Lex + LWWW L3UC3X+FR2,-21,10,1 + LWWW L3UC3X+FR3,-44,20,1 + LWWW L3UC3X+FR4,-15,34,1 + LWWW L3UC3X+FR5,71,63,1 + LWWW L3UC3X+FR6,94,3,1 + LWWW L3FD3B+FR1,131,-3,1 + LWWW L3FD3B+FR2,159,6,1 + +#rollout_tbl + .long hrt_break_neck_anim,rzr_break_neck_anim + .long und_break_neck_anim,yok_break_neck_anim + .long shn_break_neck_anim,bam_break_neck_anim + .long dnk_break_neck_anim,0,lex_break_neck_anim + +* +******** + +#***************************************************************************** +* +* FRANKENSTEINER + + .bss #opp_xvel,32 + + SUBR shn_fstein2_anim +;From head hold combo move + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + ;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel2 + .word ANI_DETACH +#no_hdrel2 + .word ANI_STARTATTACK,AT_LEAPING,12 + + WL 4,S3FL3X+FR1 + WL 4,S3FL3X+FR2 + .word ANI_OFFSET,0,45,0 + WL 1,S3ZI3A+FR1 + LEAPATOPP 10,999,120,55,90000h,TGT_HEAD,17-20,35,-20 + WL 4,S3ZI3A+FR1 + + .word ANI_ATTACK_ON,AMODE_PUPPET,10-36,-20,56,33 ;mode,x,y,w,h + WL ANI_GOTO,#cont + + SUBR shn_fstein_anim + SUBR shn_standing_fstein_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + ;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel + .word ANI_DETACH +#no_hdrel + .word ANI_STARTATTACK,AT_LEAPING,12 + + WL 4,S3FL3X+FR1 + WL 4,S3FL3X+FR2 + .word ANI_OFFSET,0,45,0 + WL 1,S3ZI3A+FR1 + LEAPATOPP 10,999,120,55,90000h,TGT_HEAD,17-20,35,-20 + WL 4,S3ZI3A+FR1 + + .word ANI_ATTACK_ON,AMODE_PUPPET,10-36,0,36,33 ;mode,x,y,w,h + +#cont + WL ANI_CODE,#store_opp_xvel + WWL ANI_WAITHITOPP,10,S3ZI3A+FR2 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +; .word ANI_IFOPP,W_YOKO,-1 +; WL ANI_IFSTATUS,#tgt_yoko + .word ANI_CLR_STATUS + + ;hit + WL ANI_CODE,#merge_xvels + WL ANI_CODE,DO_FRANK_MESS + .word ANI_ATTACHZ,0,0,-10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR3,#puppet_tbl,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,0,-65,0 + + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR8,#puppet_tbl,5 + + WWWL ANI_IFROPE,RC_BACK,160,#throw_him_out + + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR9,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR10,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR11,#puppet_tbl,8 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_FSTEIN + .word ANI_OPP_GETUP,300 + + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR11,#puppet_tbl,9 + WL ANI_OPPOFFSET,#release_offsets + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_SLAVEANIM,#recover_tbl + .word ANI_DETACH + .word ANI_OFFSET,-41,0,0 + WL 4,S2PJ3C+FR9 + .word ANI_OFFSET,41,0,0 + WL 4,S3GU2A+FR5 + WL 4,S3GU2A+FR6 + WL 4,S3GU2A+FR7 + WL 4,S3GU2A+FR8 + WL 4,S3GU2A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WLLL ANI_ATTACHVEL,-70000h,70000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + .word ANI_DETACH + WL 3,S3ZI3A+FR8 + WL 4,S3ZI3A+FR9 + WL 4,S3ZI3A+FR10 + WL 4,S3ZI3A+FR11 + + ;impact +; .word ANI_OPP_GETUP,30 + + WL 4,S3ZI3A+FR11 + .word ANI_OFFSET,-41,0,0 + WL 4,S2PJ3C+FR9 + .word ANI_OFFSET,41,0,0 + WL 4,S3GU2A+FR5 + WL 4,S3GU2A+FR6 + WL 4,S3GU2A+FR7 + WL 4,S3GU2A+FR8 + WL 4,S3GU2A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#tgt_yoko + ;we've hit yoko. mistake. + ;this will turn yoko into the attacker, so it doesn't much matter + ; what we do from here, as he'll be calling the shots. + + .word ANI_ZERO_XZVELS + WL ANI_CODE,#set_attach + WL ANI_CODE,CALL_MISS_YOKO + WL ANI_SLAVEANIM,#backfire_tbl + WL 999,S3ZI3A+FR3 + .word ANI_END + +#set_attach + move *a13(WHOIHIT),a0,L + move a0,*a13(ATTACH_PROC),L + move a13,*a0(ATTACH_PROC),L + rets + +#missedb + .word ANI_IFOPP,W_YOKO,-1 + WL ANI_IFSTATUS,#tgt_yoko +;we've hit a blocker. mistake. + + ;uh, for now just abort. + WL ANI_CODE,#set_attach + WLLL ANI_SETOPPVELS,60000h,40000h,0 ;x,y,z vels +; WLW ANI_SET_OPP_XVEL,-20000h,AM_FACE_REL +; .word ANI_DETACH + WL ANI_CODE,CALL_MISSES + .word ANI_SOUND,018h ;Hard hit + .word ANI_ZERO_XZVELS + WL 3,S3UC3X+FR4 + WL 3,S3UC3X+FR5 + WL 3,S3UC3X+FR6 + .word ANI_WAITHITGND + WLLL ANI_SETOPPVELS,0000h,0000h,0 ;x,y,z vels + .word ANI_DETACH + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_SOUND,0BFh + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_XFLIP + WL ANI_CHANGEANIM,shn_hitonground_anim + + +#missed + ;uh, for now just abort. + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_SOUND,0BFh + .word ANI_SOUND,0C1h ;plywood crash #3 +; WL 3,S3UC3X+FR4 +; WL 3,S3UC3X+FR5 +; WL 3,S3UC3X+FR6 + .word ANI_XFLIP +; .word ANI_GETUP,30 + WL ANI_CHANGEANIM,shn_hitonground_anim + +;new xvel is (attacker xvel + defender xvel)/4 +#merge_xvels + + move @#opp_xvel,a0,L + move *a13(OBJ_XVEL),a1,L + add a1,a0 + sra 2,a0 + move a0,*a13(OBJ_XVEL),L +#rets + rets + +;save opponent's x-velocity +#store_opp_xvel + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(OBJ_XVEL),a0,L + move a0,@#opp_xvel,L + rets + +******** +* #include "s_frnk.seq" + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AH3A+FR5,6,-31,0 + LWWW H2AH3A+FR6,11,-30,0 + LWWW H2AM3A+FR1,57,-17,0 + LWWW H2AM3A+FR7,77,-25,0 + LWWW H3FR3A+FR2,77,21,0 + LWWW H3FR3A+FR3,49,57,0 + LWWW H3FR3A+FR4,-7,59,0 + LWWW H3FR3A+FR5,-46,41,0 + LWWW H3FR3A+FR6,-43,52,0 + LWWW H2CP3A+FR8,-115,-14,1 +#Razor + LWWW R4AH4C+FR3,9,-27,0 + LWWW R4AH4C+FR8,6,-27,0 + LWWW R3TD3A+FR1,41,-21,0 + LWWW R3TD3A+FR2,69,-27,0 + LWWW R3TD3A+FR4,72,29,0 + LWWW R3TD3A+FR5,46,44,0 + LWWW R3TD3A+FR6,-8,50,0 + LWWW R3TD3A+FR7,-43,52,0 + LWWW R3TD3A+FR8,-33,72,0 + LWWW R3GU2A+FR1,-142,-11,1 +#Taker + LWWW U4AH3A+FR2,-5,-19,0 + LWWW U3AE4A+FR1,3,-22,0 + LWWW U4AM4C+FR4,44,-16,0 + LWWW U3FH3A+FR1,65,-11,1 + LWWW U3FH3A+FR2,60,35,1 + LWWW U3FH3A+FR3,35,41,1 + LWWW U3FH3A+FR4,-21,47,1 + LWWW U3FH3A+FR5,-51,56,1 + LWWW U3FH3A+FR5,-30,81,1 + LWWW U3CP3B+FR1,-136,-7,1 +#Yokozuna + LWWW Y4AE4A+FR1,11,-33,0 + .ref Y2AM2C + LWWW Y2AM2C+FR1,18,-41,0 + LWWW Y3FL3W+FR1,53,-13,0 + LWWW Y3FL3W+FR2,61,-17,0 + LWWW Y3FL3W+FR3,67,23,0 + LWWW Y3FL3W+FR4,54,47,0 + LWWW Y3FL3W+FR5,8,56,0 + LWWW Y3FL3W+FR6,-39,58,0 + LWWW Y3FL3W+FR7,-42,56,0 + LWWW Y3FD3A+FR7,-89,13,0 + .long 0 +#Shawn + LWWW S3OS3X+FR1,8,-28,1 + LWWW S3OS3X+FR2,-12,-31,1 + LWWW S3OS3X+FR3,33,-12,1 + LWWW S3OS3X+FR4,38,-17,1 + LWWW S3OS3X+FR5,57,5,1 + LWWW S3OS3X+FR6,47,50,1 + LWWW S3OS3X+FR7,22,65,1 + LWWW S3OS3X+FR8,4,68,1 + LWWW S3OS3X+FR9,-61,71,1 + LWWW S3OS3X+FR10,-124,-6,1 +#BamBam + LWWW B4AH4A+FR1,-4,-33,0 + LWWW B4TD3B+FR1,-9,-35,0 + LWWW B4TD3B+FR2,33,-25,0 + LWWW B4TD3B+FR3,56,-30,0 + LWWW B4TD3B+FR4,79,7,0 + LWWW B4TD3B+FR5,57,45,0 + LWWW B4TD3B+FR6,14,75,0 + LWWW B4TD3B+FR7,-29,71,0 + LWWW B4TD3B+FR8,-40,81,0 + LWWW B4TD3B+FR9,-98,5,0 +#Doink + LWWW D3AE3B+FR7,1,-25,0 + LWWW D3AE3B+FR8,2,-28,0 + LWWW D3PM4C+FR2,26,-18,0 + LWWW D3OS3A+FR1,73,-27,0 + LWWW D3OS3A+FR2,82,2,0 + LWWW D3OS3A+FR3,57,12,0 + LWWW D3OS3A+FR5,31,41,0 + LWWW D3OS3A+FR6,-17,49,0 + LWWW D3FD3E+FR2,-47,57,0 + LWWW D3SA3A+FR8,-133,-6,1 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR2,4,-31,0 + LWWW L4AM4B+FR3,-6,-34,0 + LWWW L3FH3A+FR1,43,-21,0 + LWWW L3FH3A+FR2,74,-16,0 + LWWW L3FH3A+FR3,79,39,0 + LWWW L3FH3A+FR4,50,43,0 + LWWW L3FH3A+FR5,5,42,0 + LWWW L3FH3A+FR6,-35,50,0 + LWWW L3FH3A+FR6,-24,68,0 + LWWW L3CP3B+FR1,-130,-7,1 + +* +******** + +#recover_tbl + .long hrt_hitonground_anim + .long rzr_hitonground_anim + .long und_hitonground_anim +; .long yok_frnk_backfire_anim + .long yok_hitonground_xflip_anim + .long shn_hitonground_anim + .long bam_hitonground_xflip_anim + .long dnk_hitonground_anim + .long 0 + .long lex_hitonground_anim + +#backfire_tbl + .long yok_frnk_backfire_anim + .long yok_frnk_backfire_anim + .long yok_frnk_backfire_anim + .long yok_frnk_backfire_anim + .long yok_frnk_backfire_anim + .long yok_frnk_backfire_anim + .long yok_frnk_backfire_anim + .long yok_frnk_backfire_anim + .long yok_frnk_backfire_anim + + +#flyout_tbl + .ref yok_flyout_anim + + .long hrt_flyout_anim + .long rzr_flyout_anim + .long und_flyout_anim + .long yok_flyout_anim + .long shn_flyout_anim + .long bam_flyout_anim + .long dnk_flyout_anim + .long 0 + .long lex_flyout_anim + +#release_offsets + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 20,0 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#***************************************************************************** +* +* SPIN KICK + +;TODO(JS) - deal with the CALL_MISSES thing + SUBR shn_spinkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,12 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 11,999,50,50,90000h,TGT_HEAD,10,78,0 + + ;jump + WL 2,S4SK3Y+FR3 + WL 2,S4SK3Y+FR4 + WL 2,S4SK3Y+FR5 + WL 2,S4SK3Y+FR6 + WL 3,S4SK3Y+FR7 + + .word ANI_ATTACK_ON,AMODE_SPINKICK,22,91-24,47,19 + WWL ANI_WAITHITOPP,6,S4SK3Y+FR8 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-58000h,#no_slide + + ;-hit, slide + WL ANI_SET_YVEL,50000h + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + WL ANI_GOTO,#cont + +#no_slide + WL ANI_IFNOTSTATUS,#missed + + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + ;-hit, no slide + WL ANI_SET_YVEL,30000h + WL ANI_CODE,#reverse_xvel + WL ANI_GOTO,#cont + +#missed + ;-missed + WL ANI_CODE,CALL_MISSES +#cont + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4SK3Y+FR9 + WL 3,S4SK3Y+FR10 + WL 3,S4SK3Y+FR11 +; WL 3,S4SK3Y+FR12 + WL 3,S3GU2A+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#reverse_xvel + move *a13(OBJ_XVEL),a14,L + neg a14 + sra 2,a14 + move a14,*a13(OBJ_XVEL),L + rets + +#***************************************************************************** +* +* SPEED KICK + + SUBR shn_super_speedkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SET_RPTCOUNT,4 ;3 times + + .word ANI_STARTATTACK,AT_KICK,9 + WL 2,S4KI3Q+FR1 + + .word ANI_CLR_BUTCOUNT + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 08h,999,30,40,90000h,TGT_HEAD,75,90,-10 + + WL ANI_SET_YVEL,30000h + + WL 2,S4KI3Q+FR2 + WL 2,S4KI3Q+FR3 + WL 2,S4KI3Q+FR4 + WL 2,S4KI3Q+FR5 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON,AMODE_SHNSPDKIK,40,76,49,30 + WL 4,S4KI3Q+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#gothim + +;miss + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4KI3Q+FR7 + WL 3,S4KI3Q+FR8 + WL 3,S4KI3Q+FR9 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#loop + .word ANI_CLR_BUTCOUNT + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 05h,999,30,40,90000h,TGT_HEAD,75,105,-10 + + WL ANI_SET_YVEL,30000h + + WL 2,S4KI3Q+FR4 + WL 2,S4KI3Q+FR5 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON,AMODE_SHNSPDKIK,40,76,49,30 + WL 4,S4KI3Q+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#gothim + +;miss + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4KI3Q+FR7 + WL 3,S4KI3Q+FR8 + WL 3,S4KI3Q+FR9 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gothim + .word ANI_ZERO_XZVELS + WL ANI_CODE,#set_opp_xy + + WL 2,S4KI3Q+FR7 + WL 2,S4KI3Q+FR8 + WL 2,S4KI3Q+FR9 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#fail + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop +#fail + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +#miss + WL 3,S4KI3Q+FR7 + WL 3,S4KI3Q+FR8 + WL 3,S4KI3Q+FR9 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#set_opp_xy + move *a13(WHOIHIT),a0,L + + movi -[2,0],a14 + move a14,*a0(OBJ_ZVEL),L + + movi [3,0],a14 + move a14,*a0(OBJ_YVEL),L + + move *a13(INRING),a1 + jrnz #ok + + move *a13(OBJ_XPOSINT),a14 + subi RING_X_MID,a14 + abs a14 + cmpi 0a0h,a14 + jrlt #ok + +; rets + +#ok + movi -[3,0],a1 + move *a0(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a1 ;left +#abs + move a1,*a0(OBJ_XVEL),L + + rets + +#***************************************************************************** +* +* BODY SLAM +* +* only difference between standing and normal bodyslam is that the attack +* frame on the standing slam isn't held as long. Use the normal if opponent +* is running, or the standing otherwise. +* + + SUBR shn_2_bslam_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,7 + WL 2,S1TT5Z+FR2 ;2.5 + WL 2,S1TT5Z+FR3 ;3.5 + + SUBR shn_4_bslam_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,4 + + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,50,0,0 + WL ANI_SET_YVEL,0000h + + + WL 3,S4GS3C+FR1 + + ;temp! + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_PUPPET,62,49,21,39 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,S4GS3C+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,S4GS3C+FR2 + .word ANI_ATTACK_OFF + +;#common + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + + WL ANI_CODE,DO_BODY_MESS + + WL ANI_CODE,CALL_OTHER_AVERAGE + + WL ANI_CODE,CALL_THROWN_OUT + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR2,#puppet_tbl,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWWL ANI_IFROPE,RC_BACK,100,#throw_him_out + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR7,#puppet_tbl,4 + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR8,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR9,#puppet_tbl,6 + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS + .word ANI_OPP_GETUP,300 + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR10,#puppet_tbl,7 + + WL ANI_OPPOFFSET,#release_offsets + WL ANI_SLAVEANIM,#recover_tbl + .word ANI_DETACH + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WL 8,S4GS3C+FR11 + WL 4,S4GS3C+FR12 + .word ANI_XFLIP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#missedb + WL 5,S4GS3C+FR2 +#missed + WL 10,S4GS3C+FR2 + + .word ANI_WAITHITGND + .word ANI_SETFACING + .word ANI_ZEROVELS + WL 5,S4GS3C+FR2 + WL 5,S4GS3C+FR1 +#abort + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + ;since we're gonna throw him out anyhow, turn off confine. + .word ANI_SETOPPMODE,MODE_NOCONFINE + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,1,S4GS3C+FR7,#puppet_tbl,4 + WLLL ANI_ATTACHVEL,-70000h,70000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + .word ANI_DETACH + + WL 3,S4GS3C+FR7 + WL 3,S4GS3C+FR8 + WL 4,S4GS3C+FR9 + WL 4,S4GS3C+FR10 + WL 8,S4GS3C+FR11 + WL 4,S4GS3C+FR12 + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +******** +* #include "s_bslm.img" + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AH3A+FR5,49,27,0 + LWWW H2AM3A+FR1,39,30,0 + LWWW H2AM3A+FR7,37,6,0 + LWWW H3FR3A+FR2,16,21,0 + LWWW H3FR3A+FR3,0,49,0 + LWWW H3FR3A+FR4,-14,57,0 + LWWW H3FR3A+FR5,-35,38,0 + LWWW H2CP3A+FR8,-150,-69,1 +#Razor + LWWW R4AH4C+FR3,54,31,0 + LWWW R3TD3A+FR1,25,31,0 + LWWW R3TD3A+FR2,36,8,0 + LWWW R3TD3A+FR4,2,22,0 + LWWW R3TD3A+FR5,2,36,0 + LWWW R3TD3A+FR6,-6,47,0 + LWWW R3TD3A+FR7,-32,41,0 + LWWW R3GU2A+FR1,-160,-64,1 +#Taker + LWWW U3AE4A+FR1,50,37,0 + LWWW U4AM4C+FR4,23,35,0 + LWWW U3FH3A+FR1,33,17,1 + LWWW U3FH3A+FR2,5,35,1 + LWWW U3FH3A+FR3,-5,43,1 + LWWW U3FH3A+FR4,-22,54,1 + LWWW U3FH3A+FR5,-46,55,1 + LWWW U3CP3B+FR1,-163,-60,1 +#Yokozuna + .ref Y4AE4A + LWWW Y4AE4A+FR1,64,25,0 + LWWW Y3FL3W+FR1,34,32,0 + LWWW Y3FL3W+FR2,28,16,0 + LWWW Y3FL3W+FR3,-1,26,0 + LWWW Y3FL3W+FR4,-10,39,0 + LWWW Y3FL3W+FR5,-24,37,0 + LWWW Y3FL3W+FR6,-38,36,0 + LWWW Y3FD3A+FR7,-131,-42,0 + .long 0 +#Shawn + LWWW S3OS3X+FR2,39,23,1 + LWWW S3OS3X+FR3,19,20,1 + LWWW S3OS3X+FR4,3,11,1 + LWWW S3OS3X+FR5,-21,20,1 + LWWW S3OS3X+FR6,-24,51,1 + LWWW S3OS3X+FR7,-22,47,1 + LWWW S3OS3X+FR9,-50,41,1 + LWWW S3OS3X+FR10,-137,-61,1 +#BamBam + LWWW B4AH4A+FR1,44,26,0 + LWWW B4TD3B+FR2,15,23,0 + LWWW B4TD3B+FR3,13,10,0 + LWWW B4TD3B+FR4,12,17,0 + LWWW B4TD3B+FR5,-5,55,0 + LWWW B4TD3B+FR6,-9,66,0 + LWWW B4TD3B+FR7,-21,61,0 + LWWW B4TD3B+FR9,-136,-47,0 +#Doink + LWWW D3AE3B+FR8,47,26,0 + LWWW D3PM4C+FR2,8,25,0 + LWWW D3OS3A+FR1,25,10,0 + LWWW D3OS3A+FR2,-10,17,0 + LWWW D3OS3A+FR3,-23,22,0 + LWWW D3OS3A+FR4,-21,29,0 + LWWW D3OS3A+FR6,-26,34,0 + LWWW D3FD3E+FR2,-83,-26,0 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR2,51,28,0 + LWWW L3FH3A+FR1,24,18,0 + LWWW L3FH3A+FR2,27,2,0 + LWWW L3FH3A+FR3,10,28,0 + LWWW L3FH3A+FR4,6,37,0 + LWWW L3FH3A+FR5,-5,39,0 + LWWW L3FH3A+FR6,-23,48,0 + LWWW L3CP3B+FR1,-143,-59,1 +* +******** + +#recover_tbl + .long hrt_hitonground_anim,rzr_hitonground_anim + .long und_hitonground_anim,yok_hitonground_xflip_anim + .long shn_hitonground_anim,bam_hitonground_xflip_anim + .long dnk_hitonground_xflip_anim,0,lex_hitonground_anim + +#flyout_tbl + .long hrt_flyout_anim,rzr_flyout_anim,und_flyout_anim + .long yok_flyout_anim + .long shn_flyout_anim,bam_flyout_anim,dnk_flyout_anim + .long 0,lex_flyout_anim + +#release_offsets + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 20,0 ;BamBam + .word 30,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#****************************************************************************** + + SUBR shn_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 2,S1TT5Z+FR2 ;2.5 + WL 2,S1TT5Z+FR3 ;3.5 + + SUBR shn_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_RAWSOUND,2055 ;big cheer #1 +; .word ANI_CHEER,3 + + WL 3,S4GH3A+FR1 + + LEAPATOPP 8,999,80,80,30000h,TGT_HEAD,46-10,6,-2 + + WL 4,S4GH3A+FR2 + WL 4,S4GH3A+FR3 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET,21,1,31,18 ;mode,x,y,w,h + WL 5,S4GH3A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + .word ANI_DAMAGEOPP,D_HAIR_PICKUP + + WWLLW ANI_SUPERSLAVE2,4,S4GH3A+FR6,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,S4GH3A+FR7,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GH3A+FR8,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GH3A+FR9,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,S4GH3C+FR8,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,S4GH3C+FR8,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 4,S4GH3C+FR8 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,S4GH3A+FR4 + WL 3,S4GH3A+FR3 + WL 3,S4GH3A+FR2 + WL 3,S4GH3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,25,-34,0 + LWWW H3GU4A+FR3,26,-41,0 + LWWW H3DU3A+FR3,33,-43,1 + LWWW H3DU3A+FR4,50,-33,1 + LWWW H3DU3A+FR5,55,-30,1 + LWWW H3BF3A+FR1,52,-35,0 + .long 0 +#Razor + LWWW R3GU4A+FR2,35,-34,1 + LWWW R3GU4A+FR3,29,-37,0 + LWWW R3GU4A+FR5,41,-48,0 + LWWW R3DU3B+FR2,49,-44,1 + LWWW R3DU3B+FR4,55,-28,1 + LWWW R3BF3A+FR4,56,-34,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,27,-26,1 + LWWW U3DU3B+FR5,16,-34,1 + LWWW U3DU3B+FR6,20,-44,1 + LWWW U3DU3B+FR8,33,-37,1 + LWWW U3DU3B+FR10,49,-23,1 + LWWW U4BF3Z+FR5,53,-14,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,29,-22,0 + LWWW Y3GU2A+FR3,36,-26,0 + LWWW Y3GU2A+FR6,16,-42,0 + LWWW Y3GU2A+FR9,53,-36,0 + LWWW Y3GU2A+FR12,60,-20,0 + LWWW Y3BF3A+FR1,50,-23,0 + .long 0 +#Shawn + LWWW S3GU4A+FR1,30,-33,1 + LWWW S3GU4A+FR2,26,-34,0 + LWWW S3GU4A+FR4,42,-45,0 + LWWW S3GU4A+FR5,43,-39,0 + LWWW S3DU3A+FR2,65,-36,1 + LWWW S3BF3A+FR1,49,-33,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,33,-22,0 + LWWW B3GU4A+FR4,25,-33,0 + LWWW B3GU4A+FR6,32,-40,0 + LWWW B3GU4A+FR7,32,-42,0 + LWWW B3DU3A+FR2,56,-27,1 + LWWW B3BF3C+FR5,58,-26,0 + .long 0 +#Doink + LWWW D3DU3A+FR2,29,-26,1 + LWWW D3DU3A+FR3,31,-35,1 + LWWW D3DU3A+FR5,28,-39,1 + LWWW D3DU3A+FR8,35,-44,1 + LWWW D3HT3Z+FR1,45,-26,1 + LWWW D3BF3A+FR2,38h,-32,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3DU3A+FR2,38,-36,1 + LWWW L3DU3A+FR4,9,-31,1 + LWWW L3DU3A+FR6,24,-45,1 + LWWW L3DU3A+FR7,33,-35,1 + LWWW L3DU3A+FR9,51,-29,1 + LWWW L3BF3B+FR2,60,-35,0 + .long 0 + + +#***************************************************************************** + + SUBR shn_speed_spinkick_anim +;From head hold + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SET_RPTCOUNT,3 ;2 times +#rpt_loop + .word ANI_CLR_BUTCOUNT + + WL 2,S4KI3Q+FR1 + WL 2,S4KI3Q+FR2 + WL 2,S4KI3Q+FR3 + WL 2,S4KI3Q+FR4 + WL 2,S4KI3Q+FR5 + .word ANI_ATTACK_ON,AMODE_HEADKNEES,50,56,49,50 + WL 4,S4KI3Q+FR6 + .word ANI_ATTACK_OFF + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#missed2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#missed2 + + ;do a spin kick + .word ANI_DETACH + WL ANI_SET_YVEL,60000h + + ;jump + WL 2,S4SK3Y+FR3 + WL 2,S4SK3Y+FR4 + WL 2,S4SK3Y+FR5 + WL 2,S4SK3Y+FR6 + WL 2,S4SK3Y+FR7 + + .word ANI_ATTACK_ON,AMODE_SPINKICK,22,91-24-20,47,19+20 + WL 6,S4SK3Y+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + .word ANI_ZERO_XZVELS + WLW ANI_SET_ZVEL,20000h,AM_ABS +#missed + WL 4,S4SK3Y+FR9 + WL 4,S4SK3Y+FR10 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,S4SK3Y+FR11 + WL 4,S3GU2A+FR9 + + .word ANI_FACEUP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed2 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#missed3 + .ref shn_flying_kick_anim + WL ANI_CHANGEANIM,shn_flying_kick_anim + .word ANI_END +#missed3 + WL 3,S4KI3Q+FR8 + WL 3,S4KI3Q+FR9 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#exit + .word ANI_DETACH + WL 4,S4KI3Q+FR7 + WL 4,S4KI3Q+FR8 + WL 4,S4KI3Q+FR9 + WL 4,S4KI3Q+FR4 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR shn_knee_fstein_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SET_RPTCOUNT,4 ;3 times +#rpt_loop + .word ANI_CLR_BUTCOUNT + +;kick + WL 2,S4KM3C+FR2 + WL 2,S4KM3C+FR3 + WL 2,S4KM3C+FR4 + WL ANI_SET_YVEL,20000h + .word ANI_ATTACK_ON, AMODE_HEADKNEES,27,59,68,20 ;mode,x,y,w,h + WL 2,S4KM3C+FR5 + .word ANI_ATTACK_OFF + WL 2,S4KM3C+FR6 + WL 2,S4KM3C+FR7 + WL 2,S4KM3C+FR8 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit + +;fstein + WLW ANI_SET_XVEL,68000h,AM_FACE_REL + WL ANI_SET_YVEL,50000h + WL ANI_CHANGEANIM,shn_fstein2_anim + +#exit + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#exit2 + .word ANI_DETACH + WL ANI_CHANGEANIM,shn_4_bslam_anim + .word ANI_END +#exit2 + .word ANI_DETACH + WL 3,S4NM3A+FR5 + WL 3,S4NM3A+FR6 + WL 3,S4NM3A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#****************************************************************************** + + SUBR shn_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,S4CO4A+FR1 + WL 4,S4CO4A+FR2 + WL 4,S4CO4A+FR3 + WL 4,S4CO4A+FR4 + WL 4,S4CO4A+FR5 + WL 4,S4CO4A+FR6 + WL 4,S4CO4A+FR7 + WL 4,S4CO4A+FR8 + WL 4,S4CO4A+FR7 + WL 4,S4CO4A+FR6 + WL 4,S4CO4A+FR5 + WL 4,S4CO4A+FR4 + WL 4,S4CO4A+FR3 + WL 4,S4CO4A+FR2 + WL 4,S4CO4A+FR3 + WL 4,S4CO4A+FR4 + WL 4,S4CO4A+FR5 + WL 4,S4CO4A+FR6 + WL 4,S4CO4A+FR7 + WL 4,S4CO4A+FR8 + WL 4,S4CO4A+FR7 + WL 4,S4CO4A+FR6 + WL 4,S4CO4A+FR5 + WL 4,S4CO4A+FR4 + WL 4,S4CO4A+FR3 + WL 4,S4CO4A+FR2 + WL 4,S4CO4A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,shn_stand4_anim + .word ANI_END + +#***************************************************************************** +* +* REALLY BITCHIN' #3 TWO-FOOTED RUNNING STOMP +* + +#yoff equ 15 + + SUBR shn_run_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_BUTCOUNT + .word ANI_SET_RPTCOUNT,4 + + WL 4,S4MP4D+FR1 + .word ANI_OFFSET,0,#yoff,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,100,60,90000h,TGT_GROIN,19,9,0 + WL ANI_CODE,no_bk_xvel + + WL 4,S4MP4D+FR2 + WL 4,S4MP4D+FR3 + WL 4,S4MP4D+FR4 + WL ANI_SET_YVEL,-20000h + WL ANI_GOTO,#attack + +#attack_loop + .word ANI_CLR_BUTCOUNT + WWL ANI_SETLONG,OBJ_GRAVITY,0a000h + WL ANI_SET_YVEL,60000h + + WL 2,S4MP4D+FR6 + WL 2,S4MP4D+FR7 + WL 2,S4MP4D+FR8 + WL 2,S4MP4D+FR1 + .word ANI_OFFSET,0,#yoff,0 + WL 2,S4MP4D+FR2 + WL 2,S4MP4D+FR2 + WL 4,S4MP4D+FR3 + WL 4,S4MP4D+FR4 + +#attack + .word ANI_ATTACK_ON,AMODE_STOMP,-18,3-12,56,43+12 + WWL ANI_WAITHITOPP,12,S4MP4D+FR5 + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY +#atk_on + .word ANI_ATTACK_OFF + + ;check for a good hit + WL ANI_IFNOTSTATUS,#missed + WWL ANI_IFOPPMODE,~MODE_ONGROUND,#missed + + ;hit. shake ring & ropes + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#done + + ;any button will do + WWWL ANI_IF_BUTCOUNT_GE,KICKB_COUNT,2,#attack_loop + WWWL ANI_IF_BUTCOUNT_GE,SKICKB_COUNT,2,#attack_loop + WWWL ANI_IF_BUTCOUNT_GE,PUNCHB_COUNT,2,#attack_loop + WWWL ANI_IF_BUTCOUNT_GE,SPUNCHB_COUNT,2,#attack_loop + + ;no presses. bounce off. + +#done + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,28000h,AM_FACE_REL + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL 4,S4MP4D+FR2 + WL 1,S4MP4D+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed + WL 2,S4MP4D+FR6 + WL 2,S4MP4D+FR7 + WL 2,S4MP4D+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR shn_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 2,S3CF3Z+FR1 + WL ANI_SET_YVEL,80000h + WL 3,S3CF3Z+FR2 + WL 3,S3CF3Z+FR3 + WL 3,S3CF3Z+FR4 + WL 3,S3CF3Z+FR5 + WL 3,S3CF3Z+FR6 + .word ANI_WAITHITGND + .word ANI_END + + +* Head slams into mat +;From head slam + + SUBR shn_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 3,S3CF3Z+FR1 + WL ANI_SET_YVEL,40000h + WL 3,S3CF3Z+FR2 + WL 3,S3CF3Z+FR3 + WL 3,S3CF3Z+FR4 + WL 3,S3CF3Z+FR5 + WL 3,S3CF3Z+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,S3CF3Z+FR1 + WL 3,S3CF3Z+FR2 + WL 3,S3CF3Z+FR3 + WL 3,S3CF3Z+FR4 + WL 3,S3CF3Z+FR5 + WL 3,S3CF3Z+FR6 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,S3CF3Z+FR1 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,shn_faceup_getup_anim + .word ANI_END + + +#***************************************************************************** +* +* SLIDING KICKTOSS +* + + SUBR shn_sliding_kicktoss_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + +; .word ANI_IFOPP,W_SHAWN,-1 +; WL ANI_IFNOTSTATUS,#missed + + .word ANI_STARTATTACK,AT_PUPPET,15 + + WL 3,S3SK3A+FR1 + WL 3,S3SK3A+FR2 + + LEAPATOPP 16,999,180,100,90000h,TGT_FEET,0,0,0 + WL ANI_SET_YVEL,0 + + .word ANI_FRICTION,4000h + + WL 3,S3SK3A+FR3 + WL 3,S3SK3A+FR4 + WL 3,S3SK3A+FR5 + + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON,AMODE_PUPPET,-72,0,72,15 + .word ANI_XFLIP + WWL ANI_WAITHITOPP,10,S3SK3A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#blocked + + ;hit. toss him over. + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_ATTACHZ,0,0,-4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_FRICTION,05000h + WWLLW ANI_SUPERSLAVE2,10,S3SK3A+FR6,#puppet_tbl,0 + WL ANI_CODE,#grunt + .word ANI_XFLIP + WWLLW ANI_SUPERSLAVE2,4,S3KT3A+FR2,#puppet_tbl,1 + .word ANI_ZEROVELS + WWLLW ANI_SUPERSLAVE2,4,S3KT3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,S3KT3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,S3KT3A+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,2,S3KT3A+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,S3KT3A+FR7,#puppet_tbl,6 + + ;let go + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_XFLIP_OPP ;106 + WL ANI_SLAVEANIM,#release_tbl + WL ANI_OPPOFFSET,#release_offsets + WLW ANI_SET_OPP_XVEL,-20000h,AM_FACE_REL + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_DAMAGEOPP,D_KICKTOSS + .word ANI_SOUND,0BFh + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_DETACH + + ;and immediately get up + WL 4,S3KT3A+FR8 + .word ANI_OFFSET,-9,2,0 + WL 4,S3FD3X+FR1 + WL 4,S3UC3X+FR6 + WL 4,S3KF3C+FR1 + WL 4,S3KF3C+FR2 + WL 4,S3KF3C+FR3 + .word ANI_WAITHITGND + WL 4,S3KF3C+FR4 + WL 4,S3KF3C+FR5 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#blocked + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,S3SK3A+FR6 + .word ANI_ZEROVELS + WL 50,S3SK3A+FR6 +#missed + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,S3SK3A+FR6 + .word ANI_ZEROVELS + WL 50,S3SK3A+FR6 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,shn_faceup_getup_anim + .word ANI_END + +#abort + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#grunt WRSND W_SHAWN,GRABFLING_T1,GRABFLING_T2 + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + .ref H2AM3A,H3FR3A + LWWW H2AM3A+FR1,-20,58,0 + LWWW H2AM3A+FR7,58,40,0 + LWWW H3FR3A+FR2,40,38,0 + LWWW H3FR3A+FR3,26,45,0 + LWWW H3FR3A+FR4,14,59,0 + LWWW H3FR3A+FR4,-30,55,0 + LWWW H3FR3A+FR6,-70,7,0 + .long 0 +#Razor + .ref R3TD3A + LWWW R3TD3A+FR1,-20,65,0 + LWWW R3TD3A+FR2,51,35,0 + LWWW R3TD3A+FR4,28,32,0 + LWWW R3TD3A+FR5,25,31,0 + LWWW R3TD3A+FR6,9,43,0 + LWWW R3TD3A+FR7,-25,59,0 + LWWW R3TD3A+FR8,-63,29,0 + .long 0 +#Taker + .ref U4AM4C,U3FH3A + LWWW U4AM4C+FR4,-30,61,0 + LWWW U3FH3A+FR1,51,37,1 + LWWW U3FH3A+FR2,39,42,1 + LWWW U3FH3A+FR3,29,37,1 + LWWW U3FH3A+FR4,3,55,1 + LWWW U3FH3A+FR5,-32,72,1 + LWWW U3FH3A+FR5,-69,36,1 + .long 0 +#Yokozuna + .ref Y3FL3W + LWWW Y3FL3W+FR1,-20,64,0 + LWWW Y3FL3W+FR2,29,60,0 + LWWW Y3FL3W+FR3,17,41,0 + LWWW Y3FL3W+FR4,17,32,0 + LWWW Y3FL3W+FR5,13,38,0 + LWWW Y3FL3W+FR6,-23,57,0 + LWWW Y3FL3W+FR7,-62,26,0 + .long 0 +#Shawn + LWWW S3OS3X+FR3,-52,68,1 + LWWW S3OS3X+FR4,8,63,1 + LWWW S3OS3X+FR5,-8,42,1 + LWWW S3OS3X+FR6,1,48,1 + LWWW S3OS3X+FR7,2,60,1 + LWWW S3OS3X+FR8,-16,66,1 + LWWW S3OS3X+FR9,-68,41,1 + .long 0 +#BamBam + .ref B4TD3B + LWWW B4TD3B+FR2,-23,52,0 + LWWW B4TD3B+FR3,28,52,0 + LWWW B4TD3B+FR4,34,43,0 + LWWW B4TD3B+FR5,24,51,0 + LWWW B4TD3B+FR6,15,64,0 + LWWW B4TD3B+FR7,-21,65,0 + LWWW B4TD3B+FR8,-53,36,0 + .long 0 +#Doink + .ref D3OS3A,D3FD3E + LWWW D3OS3A+FR1,-13,41,0 + LWWW D3OS3A+FR2,14,41,0 + LWWW D3OS3A+FR3,7,38,0 + LWWW D3OS3A+FR4,3,31,0 + LWWW D3OS3A+FR5,4,37,0 + LWWW D3OS3A+FR6,-26,44,0 + LWWW D3FD3E+FR2,-64,5,0 + .long 0 +#Adam + .long 0 +#Lex + .ref L4AM4B,L3FH3A +; LWWW L4AM4B+FR3,-34,66,0 + LWWW L3FH3A+FR1,-10,49,0 + LWWW L3FH3A+FR1,36,49,0 + LWWW L3FH3A+FR2,45,25,0 + LWWW L3FH3A+FR3,28,32,0 + LWWW L3FH3A+FR4,17,39,0 + LWWW L3FH3A+FR5,-17,39,0 + LWWW L3FH3A+FR6,-56,22,0 + .long 0 + +#release_tbl + .ref hrt_hitonground_anim,rzr_hitonground_anim + .ref und_hitonground_xflip_anim + .ref shn_hitonground_xflip_anim + .ref bam_hitonground_anim,dnk_hitonground_anim + .ref lex_hitonground_anim + + .long hrt_hitonground_anim,rzr_hitonground_anim + .long und_hitonground_xflip_anim + .long yok_hitonground_anim + .long shn_hitonground_xflip_anim + .long bam_hitonground_anim,dnk_hitonground_anim + .long 0,lex_hitonground_anim + +#release_offsets + ; X Y + .word 40,0 ;Bret + .word 10,0 ;Razor + .word 40,0 ;Taker + .word 20,0 ;Yokozuna + .word 40,0 ;Shawn + .word 40,0 ;BamBam + .word 40,0 ;Doink + .word 40,0 ;Adam + .word 20,0 ;Lex + +#***************************************************************************** +* +* GRAB OPPONENT'S ARM AND BREAK IT (ouch) +* + + SUBR shn_break_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 4,S4FG3A+FR1 + WL 4,S4FG3A+FR2 + + ;temp! Don't throw the attack if we don't know the guy. + .word ANI_IFOPP,W_SHAWN,-1 + WL ANI_IFNOTSTATUS,#missed + + .word ANI_ATTACK_ON,AMODE_ARMBREAK,31,69,42,32 + WL 4,S4FG3A+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WWL ANI_IFOPPMODE,~MODE_PUPPET,#missed + + + ;got him + .word ANI_RAWSOUND,2055 ;big cheer #1 + .word ANI_ATTACHZ,0,0,-4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + WWLLW ANI_SUPERSLAVE2,3,S3GA3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,S3GA3A+FR2,#puppet_tbl,1 +; WWLLW ANI_SUPERSLAVE2,3,S3GA3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,S3GA3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,16,S3GA3A+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,2,S3GA3A+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,S3GA3A+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,2,S3GA3A+FR8,#puppet_tbl,7 + + ;snap! +; .word ANI_SOUND,1Bh ;smak + .word ANI_SOUND,33h ;bone crunch #0 + WL ANI_CODE,CALL_SPECIAL_MOVE + WWLLW ANI_SUPERSLAVE2,1,S3GA3A+FR9,#puppet_tbl,8 + WL ANI_SLAVEANIM,#react_tbl + .word ANI_DETACH + + WL 9,S3GA3A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missed + WL 4,S4FG3A+FR2 + WL 4,S4FG3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + .long 0 +#Razor + .long 0 +#Taker + .long 0 +#Yokozuna + .long 0 +#Shawn + LWWW S2PU3C+FR3,33,-5,0 + LWWW S3AB3A+FR1,47,4,0 + LWWW S3AB3A+FR2,36,-2,0 + LWWW S3AB3A+FR3,42,-4,0 + LWWW S3AB3A+FR3,45,-3,0 + LWWW S3AB3A+FR3,45,-2,0 + LWWW S3AB3A+FR3,39,-6,0 + LWWW S3AB3A+FR3,39,-5,0 + LWWW S3AB3A+FR4,33,5,0 +#BamBam + .long 0 +#Doink + .long 0 +#Adam + .long 0 +#Lex + .long 0 + +#react_tbl + .long 0,0 + .long 0,0 + .long shn_arm_broken_anim,0 + .long 0,0,0 + +#***************************************************************************** +* +* Special functions +* + +#********* +;zeros the wrestler's x-velocity if he's flying backwards. Useful just +; after a LEAPAT. + + SUBR no_bk_xvel + + move *a13(OBJ_XVEL),a0,L + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs + neg a0 +#abs + + move a0,a0 + jrnn #ok + +#clrvel + clr a14 + move a14,*a13(OBJ_XVEL),L +#ok + rets + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR shn_3_head_hold2_anim + +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + WL 2,S4GH3C+FR1 + WL 2,S4GH3C+FR2 + WL 2,S4GH3C+FR3 + .word ANI_ATTACK_ON, AMODE_PUPPET3,32,60,62,45 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,7,S4GH3C+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_GOTO,#gothim + + SUBR shn_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + .word ANI_STARTATTACK,AT_LEAPING,6 + + WL 3,S4GH3C+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 9,999,60,40,90000h,TGT_HEAD,56,93,8 + WL 3,S4GH3C+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,26,80,49,23 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,3,S4GH3C+FR3 + WWL ANI_WAITHITOPP,6,S4GH3C+FR3 + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missed + +#gothim + + WL ANI_CODE,CALL_SETUP + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,S4GH3C+FR3,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,S4GH3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GH3C+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GH3C+FR8,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 4,S4GH3C+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 15,S4GH3C+FR3 + WL 3,S4GH3C+FR2 + WL 3,S4GH3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H2AH3A+FR1,37,18,0 + LWWW H3HB3A+FR3,37,5,0 + LWWW H3HB3A+FR2,30,-3,0 + LWWW H3HB3A+FR1,47,-31,0 + .long 0 +#Razor + LWWW R3HB3A+FR3,48,-1,0 + LWWW R3HB3A+FR3,48,3,0 + LWWW R3HB3A+FR2,47,-14,0 + LWWW R3BF3A+FR1,60,-32,0 + .long 0 +#Taker + LWWW U4AM4C+FR2,38,7,0 + LWWW U4BF3A+FR2,36,15,0 + LWWW U4BF3A+FR3,6,0,0 + LWWW U4BF3Z+FR3,54,-19,0 + .long 0 +#Yokozuna + LWWW Y3LB3A+FR2,42,9,0 + LWWW Y3LB3A+FR2,42,13,0 + LWWW Y3LB3A+FR9,34,-12,0 + LWWW Y3BF3A+FR1,58,-20,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,51,5,0 + LWWW S4BF3A+FR2,40,-5,0 + LWWW S4BF3A+FR3,18,-19,0 + LWWW S3BF3A+FR1,40,-34,0 + .long 0 +#BamBam + LWWW B4BF3A+FR1,44,12,0 + LWWW B4BF3A+FR1,44,16,0 + LWWW B3HB3A+FR2,39,-20,0 + LWWW B3BF3C+FR5,63,-24,0 + .long 0 +#Doink + LWWW D3AK3A+FR3,27,10,0 + LWWW D3AK3A+FR3,27,14,0 + LWWW D3AK3A+FR2,45,-3,0 + LWWW D3BF3A+FR1,56,-30,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L2AH2A+FR3,27,3,0 + LWWW L3BF3A+FR1,46,6,1 + LWWW L3BF3A+FR2,41,-11,1 + LWWW L3BF3B+FR2,49,-36,0 + .long 0 + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#***************************************************************************** +* +* FLIP-SLAM + + SUBR shn_flipslam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + ;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel + .word ANI_DETACH +#no_hdrel + .word ANI_STARTATTACK,AT_LEAPING,11 + + WL 3,S4TD3F+FR1 + LEAPATOPP 10,999,90,60,90000h,TGT_CHEST,8,68,-10 + WL ANI_CODE,#check_xvel + .word ANI_SETPLYRMODE,MODE_INAIR + WL 4,S4TD3F+FR2 + WL 4,S4TD3F+FR3 + .word ANI_ATTACK_ON,AMODE_PUPPET,-13,56,28,39 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,S4TD3F+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + + ;got him. + WLW ANI_SET_XVEL,40000h,AM_FACE_REL + WL ANI_SET_YVEL,58000h ;Y + WL ANI_CODE,ckzpos ;Z + WWL ANI_SETLONG,OBJ_GRAVITY,0B000h + + .word ANI_ATTACHZ,0,0,-10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,6,S4TD3F+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4TD3F+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4TD3F+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,S4TD3F+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,2,S4TD3F+FR8,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,S4TD3F+FR9,#puppet_tbl,6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL ANI_CODE,HIT_THE_MAT + .word ANI_DAMAGEOPP,D_FLIPSLAM + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WWLLW ANI_SUPERSLAVE2,4,S3OS3Z+FR10,#puppet_tbl,7 + + WL ANI_SLAVEANIM,#release_tbl + WL ANI_CODE,#set_opp_facing + .word ANI_DETACH + .word ANI_XFLIP + WL ANI_CHANGEANIM,shn_hitonground_anim + +#missedb + ;blocked. bounce off. + WL ANI_CODE,#reverse_xvel + +#missed + WL ANI_CODE,CALL_MISSES + WL 3,S4TD3F+FR5 + WL 3,S4TD3F+FR6 + WL 3,S4TD3F+FR7 + WL 3,S4TD3F+FR8 + WL 3,S4TD3F+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKER,35 + .word ANI_SHAKEALL,1 + .word ANI_XFLIP + WL ANI_CHANGEANIM,shn_hitonground_anim + + + +********** +;halve and reverse xvel + + SUBRP #reverse_xvel + + move *a13(OBJ_XVEL),a14,L + neg a14 + sra 1,a14 + move a14,*a13(OBJ_XVEL),L + rets + +********** +;Don't leap backwards. If the player tries it, give him a small +; forward velocity instead. Sucker. (and clear his Z too) + + SUBRP #check_xvel + + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #facing_right + +;facing_left + move *a13(OBJ_XVEL),a0,L + jrn #done0 + + movi [-2,0],a0 + jruc #set + +#facing_right + move *a13(OBJ_XVEL),a0,L + jrp #done0 + movi [2,0],a0 +#set + move a0,*a13(OBJ_XVEL),L + clr a0 + move a0,*a13(OBJ_ZVEL),L +#done0 + rets + +********** +;for whatever reason, we need to reverse the victim's X-facing before +; we let him go or else the roll-over won't work properly. Voodoo... + + SUBRP #set_opp_facing + + move *a13(ATTACH_PROC),a10,L + jrz #done1 + move *a10(FACING_DIR),a4 + xori MOVE_LEFT|MOVE_RIGHT,a4 + move a4,*a10(FACING_DIR) +#done1 + rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3HB3A+FR2,5,9,0 + LWWW H3HB3A+FR3,10,9,0 + LWWW H3UC3X+FR1,-3,15,0 + LWWW H3UC3X+FR2,-29,3,0 + LWWW H3UC3X+FR3,-48,-5,0 + LWWW H3UC3X+FR4,-38,4,0 + LWWW H3UC3X+FR5,1,42,0 + LWWW H3UC3X+FR6,59,38,0 +#Razor + LWWW R3HB3A+FR2,7,0,0 + LWWW R3HB3A+FR3,2,7,0 + LWWW R3FD3B+FR1,-3,25,0 + LWWW R3FD3B+FR2,-25,8,0 + LWWW R3FD3B+FR3,-42,3,0 + LWWW R3FD3B+FR4,-48,10,0 + LWWW R3FD3B+FR5,-23,35,0 + LWWW R3HG3B+FR1,54,42,0 +#Taker + LWWW U3TBSM+FR9,-3,11,1 + LWWW U3FD3X+FR1,-4,17,1 + LWWW U3FD3X+FR2,-10,15,1 + LWWW U3FD3X+FR3,-11,9,1 + LWWW U3FD3X+FR4,-18,-5,1 + LWWW U3FD3X+FR5,6,24,1 + LWWW U3FD3X+FR6,28,50,1 + LWWW U3GP3X+FR1,65,40,1 +#Yokozuna + LWWW Y4AM4A+FR3,1,-1,0 + LWWW Y4AM4A+FR1,8,10,0 + LWWW Y3FD3A+FR1,-1,13,0 + LWWW Y3FD3A+FR2,-35,25,0 + LWWW Y3FD3A+FR3,-42,14,0 + LWWW Y3FD3A+FR4,-41,19,0 + LWWW Y3FD3A+FR5,-17,44,0 + LWWW Y3FD3N+FR1,46,57,0 +#Shawn + LWWW S4BF3A+FR2,8,12,0 + LWWW S2AH3A+FR1,6,14,0 + LWWW S3UC3X+FR1,4,20,0 + LWWW S3UC3X+FR2,-17,3,0 + LWWW S3UC3X+FR4,-34,-14,0 + LWWW S3UC3X+FR5,-21,4,0 + LWWW S3UC3X+FR6,21,42,0 + LWWW S3FD3X+FR1,51,38,0 +#BamBam + LWWW B3DR3B+FR5,15,8,0 + LWWW B4AH4A+FR6,-3,15,0 + LWWW B4UC3B+FR1,-3,27,0 + LWWW B4UC3B+FR2,-10,3,0 + LWWW B4UC3B+FR3,-35,-16,0 + LWWW B4UC3B+FR4,-34,-15,0 + LWWW B4UC3B+FR5,-11,38,0 + LWWW B4UC3B+FR6,54,45,0 +#Doink + LWWW D3AK3A+FR2,8,8,0 + LWWW D3UC3A+FR1,1,10,0 + LWWW D3UC3A+FR2,-1,21,0 + LWWW D3UC3A+FR3,-11,11,0 + LWWW D3UC3A+FR5,-37,-5,0 + LWWW D3UC3A+FR6,-24,-1,0 + LWWW D3UC3A+FR7,13,40,0 + LWWW D3UC3A+FR9,63,38,0 +#Adam + .long 0 +#Lex + LWWW L4GH3B+FR4,-19,6,0 + LWWW L3UC3X+FR1,-4,12,0 + LWWW L3UC3X+FR2,-6,7,0 + LWWW L3UC3X+FR3,-27,-8,0 + LWWW L3CP3X+FR2,-48,-19,1 + LWWW L3CP3X+FR3,-42,9,1 + LWWW L3CP3X+FR4,-13,42,1 + LWWW L3UC3X+FR8,62,48,0 + +#release_offsets + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 0,0 ;BamBam + .word 25,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#release_tbl + .long hrt_break_neck_anim,rzr_break_neck4_anim + .long und_break_neck_anim,yok_break_neck_anim + .long shn_fall_back3_anim,bam_break_neck4_anim + .long dnk_break_neck_anim,0,lex_break_neck4_anim +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/SHNSEQ4.ASM b/BACKUP/SHNSEQ4.ASM new file mode 100644 index 0000000..9769d2d --- /dev/null +++ b/BACKUP/SHNSEQ4.ASM @@ -0,0 +1,1553 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jason Skiles +* Initiated: 26 Aug 94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "shnseq4.asm" + .title "blocks, reactions to routine and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "shawnimg.h" + .include "takerimg.h" + .include "display.equ" + .include "ring.equ" + + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;MISC + .ref HIT_THE_MAT,SMALL_BOUNCE,set_position,set_skeleton_pal + .ref am_I_dizzy,start_smoke,D4SK4A,set_my_pal,make_white + .ref make_norm,am_I_dead,ckzpos + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #3 LOSE BALANCE + +#FRICTION_VAL equ 3000h + + SUBR shn_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,#FRICTION_VAL + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + + WL 4,S4LB3A+FR1 + WL 4,S4LB3A+FR2 + WL 4,S4LB3A+FR3 + WL 4,S4LB3A+FR4 + WL 4,S4LB3A+FR5 + WL 4,S4LB3A+FR6 + WL 4,S4LB3A+FR7 + WL 4,S4LB3A+FR8 + WL 4,S4LB3A+FR9 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR shn_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,S2AH3A+FR1 + WL 3,S2AH3A+FR2 + WL 3,S2AH3A+FR3 + WL 3,S2AH3A+FR4 + WL 3,S2AH3A+FR5 + WL 3,S2AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT + + SUBR shn_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,S4AH3D+FR1 + WL 3,S4AH3D+FR2 + WL 3,S4AH3D+FR3 + WL 3,S4AH3D+FR4 + WL 3,S4AH3D+FR5 + WL 3,S4AH3D+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR shn_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,S2AH3A+FR1 + WL 15,S2AH3A+FR2 + WL 4,S2AH3A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR shn_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,S4AH3D+FR1 + WL 3,S4AH3D+FR2 + WL 14,S4AH3D+FR3 + WL 2,S4AH3D+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR shn_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,S4AH3D+FR1 + WL 3,S4AH3D+FR2 + WL 14,S4AH3D+FR3 + WL 2,S4AH3D+FR4 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,shn_dizzy_anim + .word ANI_END + + + +#***************************************************************************** +* +* #2 HEAD HIT2 - Hands on face + + SUBR shn_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + WL 3,S2AE3A+FR1 + WL 3,S2AE3A+FR2 + WL 3,S2AE3A+FR3 + WL 3,S2AE3A+FR4 + WL 3,S2AE3A+FR5 + WL 3,S2AE3A+FR6 + WL 3,S2AE3A+FR7 + WL 3,S2AE3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT2 - Hands on face + + SUBR shn_4_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + WL 3,S4AE3B+FR1 + WL 3,S4AE3B+FR2 + WL 3,S4AE3B+FR3 + WL 3,S4AE3B+FR4 + WL 3,S4AE3B+FR5 + WL 3,S4AE3B+FR6 + WL 3,S4AE3B+FR7 + WL 3,S4AE3B+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEAD HIT3 - From spin kick + + SUBR shn_2_head_hit3_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + WL 3,S2AH3A+FR1 + .word ANI_DEBRIS,150,2,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,S2AH3A+FR2 + WL 3,S2AH3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S2AH3A+FR4 + WL 3,S2AH3A+FR5 + WL 3,S2AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT3 - From spin kick + + SUBR shn_4_head_hit3_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,S4AH3D+FR1 + .word ANI_DEBRIS,150,2,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,S4AH3D+FR2 + WL 3,S4AH3D+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4AH3D+FR4 + WL 3,S4AH3D+FR5 + WL 3,S4AH3D+FR6 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_head_hit4_anim +;From earslap + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; WLW ANI_SET_XVEL,-28000h,AM_HIT_REL +; WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,50000h + + WL 4,S4AH3D+FR3 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + WL 4,S4AH3D+FR4 + WL 4,S4AH3D+FR5 + WL 4,S4AH3D+FR6 + + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT - ends in dizzy + + SUBR shn_4_head_hit_dizzy_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 3,S4AH3D+FR1 + .word ANI_DEBRIS,150,2,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,S4AH3D+FR2 + WL 3,S4AH3D+FR3 + WL 3,S4AH3D+FR4 + WL 3,S4AH3D+FR5 + WL 3,S4AH3D+FR6 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,shn_dizzy_anim + .word ANI_END + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR shn_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S2AM3A+FR2 + WL 3,S2AM3A+FR3 + WL 1,S2AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S2AM3A+FR5 + WL 3,S2AM3A+FR6 + WL 3,S2AM3A+FR7 + WL 3,S2AM3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S2AM3A+FR2 + WL 3,S2AM3A+FR3 + WL 1,S2AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S2AM3A+FR5 + WL 3,S2AM3A+FR6 + WL 3,S2AM3A+FR7 + WL 3,S2AM3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 BODY HIT + + SUBR shn_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S4AM3A+FR2 + WL 3,S4AM3A+FR3 + WL 1,S4AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4AM3A+FR5 + WL 3,S4AM3A+FR6 + WL 3,S4AM3A+FR7 + WL 3,S4AM3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S4AM3A+FR2 + WL 3,S4AM3A+FR3 + WL 1,S4AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4AM3A+FR5 + WL 3,S4AM3A+FR6 + WL 3,S4AM3A+FR7 + WL 3,S4AM3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S4AM3A+FR2 + WL 3,S4AM3A+FR3 + WL 1,S4AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4AM3A+FR5 + WL 3,S4AM3A+FR6 + WL 3,S4AM3A+FR7 + WL 3,S4AM3A+FR8 + + .word ANI_FACEDOWN + WL ANI_CHANGEANIM,shn_dizzy_anim + .word ANI_END + + SUBR shn_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S4AM3A+FR2 + WL 3,S4AM3A+FR3 + WL 1,S4AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4AM3A+FR5 + WL 3,S4AM3A+FR6 + WL 3,S4AM3A+FR7 + WL 3,S4AM3A+FR8 + + .word ANI_FACEDOWN + WL ANI_CHANGEANIM,shn_dizzy_anim + .word ANI_END + + SUBR shn_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,S4AM3A+FR2 + WL 3,S4AM3A+FR3 + WL 3,S4AM3A+FR4 + WL 3,S4AM3A+FR5 + WL 3,S4AM3A+FR6 + WL 3,S4AM3A+FR7 + WL 3,S4AM3A+FR8 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,shn_fall_back_anim + .word ANI_END + +#nodead + + .word ANI_FACEDOWN + WL ANI_CHANGEANIM,shn_3_head_held_anim + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR shn_hitonground_xflip_anim + .word ANI_XFLIP + + SUBR shn_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL 1,S3CP3B+FR1 + WL ANI_SET_YVEL,40000h + WL ANI_CODE,ckzpos + WL 2,S3CP3B+FR1 + WL 3,S3CP3B+FR2 + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,S3CP3B+FR3 + WL 3,S3CP3B+FR4 + WL 3,S3CP3B+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,S3CP3B+FR6 + WL 3,S3CP3B+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#***************************************************************************** +* +* #2 BLOCK + HITBLOCK + + SUBR shn_2_block_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_SETPLYRMODE,MODE_BLOCK + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + + WL 3,S2BK3C+FR1 + WL 3,S2BK3C+FR2 + WL 3,S2BK3C+FR3 +#hold_block + .word ANI_SETMODE,MODE_NOAUTOFLIP ;turn off UNINT + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + WL 3,S2BK3C+FR2 + WL 3,S2BK3C+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR shn_2_hitblock_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WL 3,S2BK3C+FR4 + WL 3,S2BK3C+FR5 + WL 3,S2BK3C+FR6 + WL 3,S2BK3C+FR3 + WL ANI_GOTO,#hold_block + + +#************ +* +* #4 BLOCK + HITBLOCK + + SUBR shn_4_block_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_SETPLYRMODE,MODE_BLOCK + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + + WL 3,S4BK3A+FR1 + WL 3,S4BK3A+FR2 +#hold_block + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + WL 3,S4BK3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR shn_4_hitblock_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WL 3,S4BK3A+FR3 + WL 3,S4BK3A+FR4 + WL 3,S4BK3A+FR5 + WL 3,S4BK3A+FR2 + WL ANI_GOTO,#hold_block + + +#***************************************************************************** +* +* FALL BACK + + SUBR shn_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,50000h ;70000h + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[105,-19] ;Y,X of head + WL 3,S3UC3X+FR1 + .word ANI_OFFSET,0,58,0 + WWL ANI_SETLONG,DEBRIS_X,[44,-29] ;Y,X of head + WL 3,S3UC3X+FR2 + WWL ANI_SETLONG,DEBRIS_X,[37,-36] ;Y,X of head + WL 3,S3UC3X+FR3 + WWL ANI_SETLONG,DEBRIS_X,[29,-40] ;Y,X of head + WL 3,S3UC3X+FR4 + WWL ANI_SETLONG,DEBRIS_X,[19,-40] ;Y,X of head + WL 3,S3UC3X+FR5 + WWL ANI_SETLONG,DEBRIS_X,[6,-38] ;Y,X of head + WL 3,S3UC3X+FR6 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,[5,-38] ;Y,X of head + WL 2,S3UC3X+FR7 + .word ANI_BOUNCE,5 + WL 1,S3UC3X+FR7 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,[6,-40] ;Y,X of head + WL 3,S3UC3X+FR8 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + + .word ANI_XFLIP + WL 6,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#***************************************************************************** +* +* FALL BACK + + SUBR shn_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;This is currently set in react1 - hit_flykick +; WLW ANI_SET_XVEL,-0C0000h,AM_HIT_REL + + WL ANI_SET_YVEL,10000h ;70000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL ANI_CODE,ckzpos + + WL 3,S3UC3X+FR1 + .word ANI_OFFSET,0,58,0 + WL 3,S3UC3X+FR2 + WL 3,S3UC3X+FR3 + WL 3,S3UC3X+FR4 + WL 3,S3UC3X+FR5 +; WL 3,S3UC3X+FR6 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + + WL 3,S3FD3X+FR1 + WL 3,S3FD3X+FR2 + WL 3,S3FD3X+FR3 + WL 3,S3FD3X+FR4 + WL 3,S3FD3X+FR5 + WL 3,S3FD3X+FR6 + WL 3,S3FD3X+FR7 + + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,S3CF3Z+FR1 + WL 3,S3CF3Z+FR2 + WL 3,S3CF3Z+FR3 + WL 3,S3CF3Z+FR4 + WL 3,S3CF3Z+FR5 + WL 3,S3CF3Z+FR6 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + WL ANI_CHANGEANIM,shn_faceup_getup_anim + .word ANI_END + + +#***************************************************************************** + + SUBR shn_fall_back3_anim ;shawn fliptoss + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-28000h,AM_FACE_REL + + WL 3,S3FD3X+FR1 + .word ANI_OFFSET,12,0,0 + WL 3,S3FD3X+FR2 + .word ANI_OFFSET,9,0,0 + WL 3,S3FD3X+FR3 + .word ANI_OFFSET,10,0,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + + WL ANI_CHANGEANIM,shn_break_neck3_anim + + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR shn_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + + WL 3,S3UC3X+FR1 + .word ANI_OFFSET,0,58,0 + WL 3,S3UC3X+FR2 + WL 3,S3UC3X+FR3 + WL 3,S3UC3X+FR4 + WL 3,S3UC3X+FR5 + WL 3,S3UC3X+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + +; .word ANI_FRICTION,3000h + + WL 2,S3UC3X+FR7 +; .word ANI_BOUNCE,5 + WL 1,S3UC3X+FR7 +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE + +; .word ANI_ZEROVELS + WL 3,S3UC3X+FR8 + + .word ANI_XFLIP + WL 12,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#***************************************************************************** +* +* GETUPS + + SUBR shn_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 4,S3GU2A+FR1 + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + WL 4,S3GU2A+FR2 + WL 4,S3GU2A+FR3 + WL 4,S3GU2A+FR4 + WL 4,S3GU2A+FR5 + WL 4,S3GU2A+FR6 + WL 4,S3GU2A+FR7 + + WL 2,S3GU2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,S3GU2A+FR8 + WL 4,S3GU2A+FR9 + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 4,S3GU4A+FR2 + WL 4,S3GU4A+FR3 +#g4_frame_4 + WL 4,S3GU4A+FR4 + WL 4,S3GU4A+FR5 + WL 4,S3GU4A+FR6 + WL 4,S3GU4A+FR7 + + WL 2,S3GU4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,S3GU4A+FR8 + WL 4,S3GU4A+FR9 + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR shn_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_GOTO,#g4_frame_4 + +***** +* set status bit for a getup in 4, clear for a 2. + SUBR choose_2or4 + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + + move *a13(NEW_FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #choose_2 + ori MODE_STATUS,a0 +#choose_2 + move a0,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* DIZZY + + SUBR shn_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + + WL 9,S4TI4B+FR1 + WL 9,S4TI4B+FR2 + WL 9,S4TI4B+FR3 + WL 9,S4TI4B+FR4 + WL 9,S4TI4B+FR3 + WL 9,S4TI4B+FR2 + + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR shn_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,S3MF3B+FR1 + WL 4,S3MF3B+FR2 + WL 4,S3MF3B+FR3 + WL 4,S3MF3B+FR4 + WL 4,S3MF3B+FR5 + WL 4,S3MF3B+FR6 + WL 4,S3MF3B+FR7 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 2,S3MF3B+FR6 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 5,S3MS3Z+FR4 + WL 5,S3MS3Z+FR2 + WL 5,S3MS3Z+FR1 + .word ANI_WAITHITGND + WL 2,S2ST2C+FR1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR shn_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 9,S3FD3X+FR4 + WL ANI_GOTO,#common + + SUBR shn_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + +#common + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back + + ;plenty o' room. roll over + WL 3,S3FD3X+FR4 + .word ANI_OFFSET,9,0,0 + WL 3,S3FD3X+FR5 + .word ANI_OFFSET,8,0,0 + WL 3,S3FD3X+FR6 + .word ANI_OFFSET,12,0,0 + WL 3,S3FD3X+FR7 + .word ANI_OFFSET,-2,0,0 + WL 3,S3FD3X+FR8 + + ;hit. stay. + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,6,0,0 + WL 12,S3RL3A+FR5 + + .word ANI_FACEDOWN + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#fall_back + ;too close to the ropes. fall back + WL 6,S3FD3X+FR3 + .word ANI_OFFSET,-9,0,0 + WL 5,S3FD3X+FR2 + .word ANI_ZEROVELS + .word ANI_OFFSET,-10,0,0 + WL 4,S3FD3X+FR1 + WL 3,S3UC3X+FR8 + .word ANI_XFLIP + WL 18,S3CP3B+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + + SUBR shn_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WL ANI_CODE,ckzpos + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP + WL 4,S3GP3X+FR7 + WL 4,S3FD3X+FR3 + WL 4,S3FD3X+FR4 + WL 4,S3FD3X+FR5 + WL 4,S3FD3X+FR6 + WL 4,S3FD3X+FR7 + .word ANI_WAITHITGND + WL 4,S3FD3X+FR8 + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,S3RL3A+FR5 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + SUBR shn_break_neck4_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,S4POGO+FR3 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP + WL 3,S3FD3X+FR2 + WL 3,S3FD3X+FR3 + WL 3,S3FD3X+FR4 + WL 3,S3FD3X+FR5 + WL 3,S3FD3X+FR6 + WL 3,S3FD3X+FR7 + .word ANI_WAITHITGND + WL 3,S3FD3X+FR8 + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,S3RL3A+FR5 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR shn_flyout_anim ;starts on OSX7 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WL 8,S3OS3X+FR7 + .word ANI_OFFSET,0,10,0 + WL 8,S3OS3X+FR8 + .word ANI_OFFSET,0,10,0 + WL ANI_GOTO,#common + + SUBR shn_flyout2_anim ;starts on OSX9 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + +#common + WL 1,S3OS3X+FR9 + .word ANI_WAITHITGND + + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + + .word ANI_DAMAGE,D_HIPTOSS + .word ANI_SETWORD,DELAY_METER,0 + .word ANI_GETUP,500 + + WL 3,S3OS3X+FR10 + WL ANI_CHANGEANIM,shn_hitonground_anim + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR shn_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,S4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,S4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,S4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,S4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,S4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,S4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,S4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,S4ST4C+FR1 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,shn_fall_back_anim + .word ANI_END + +#nodead + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 2121h,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#***************************************************************************** + + SUBR shn_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,S3BF3A+FR1 + WL 4,S3BF3A+FR2 + WL 4,S3BF3A+FR3 + WL 4,S3BF3A+FR4 + WL 4,S3BF3A+FR5 + WL 4,S3BF3A+FR6 + WL 4,S3BF3A+FR7 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR shn_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,S4BF3A+FR2 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,S2AH3A+FR1 + WL 3,S2AH3A+FR2 + WL 3,S2AH3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S2AH3A+FR4 + WL 3,S2AH3A+FR5 + WL 3,S2AH3A+FR6 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 4,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR shn_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 4,S4BF3A+FR2 + WL 3,S1TT5Z+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#***************************************************************************** + + SUBR shn_frnk_backfire_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_INAIR + + .word ANI_ZEROVELS + + WL 5,S3ZI3A+FR8 + WL 5,S3ZI3A+FR9 + WL 5,S3ZI3A+FR10 + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,33h + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_SOUND,0BFh + .word ANI_SOUND,0C1h ;plywood crash #3 + + WL ANI_CHANGEANIM,shn_break_neck3_anim + +#***************************************************************************** + + SUBR shn_arm_broken_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-38000h,AM_HIT_REL + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S3AB3A+FR5 + WL 3,S3AB3A+FR6 + WL 3,S3AB3A+FR7 + WL 3,S3AB3A+FR8 + + WL 3,S4AE3B+FR5 + WL 3,S4AE3B+FR6 + WL 3,S4AE3B+FR7 + WL 3,S4AE3B+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR shn_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,S3BR3Z+FR3 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 21,S3BR3Z+FR3 + + WL 4,S3BR3Z+FR2 +; WL 4,S3BR3Z+FR5 + WL 4,S3UC3X+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + + WL 3,S3CP3B+FR1 + WL 3,S3CP3B+FR2 + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,S3CP3B+FR3 + WL 3,S3CP3B+FR4 + WL 3,S3CP3B+FR5 + WL 3,S3CP3B+FR6 + WL 3,S3CP3B+FR7 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 1,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR shn_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,S3CP3B+FR2 + .ref ckzpos + WL ANI_CODE,ckzpos + WL 3,S3CP3B+FR2 + WL 4,S3CP3B+FR3 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 4,S3CP3B+FR6 + WL 10,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + SUBR shn_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,S3UC3Z+FR8 + WL ANI_CODE,ckzpos + WL 3,S3UC3Z+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + + WL 4,S3CP3B+FR2 + WL 4,S3CP3B+FR3 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 4,S3CP3B+FR6 + WL 10,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#***************************************************************************** + + SUBR shn_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;; .word ANI_OFFSET,0,51,0 ;x,y,z + + WL 4,S3UC3X+FR2 + WL 4,S3UC3X+FR3 + WL 4,S3UC3X+FR4 + WL 4,S3UC3X+FR5 + WL 1,S3UC3X+FR6 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,S3FD3X+FR1 + WL 3,S3FD3X+FR2 + WL 3,S3FD3X+FR3 + WL 3,S3FD3X+FR4 + WL 3,S3FD3X+FR5 + WL 3,S3FD3X+FR6 + WL 3,S3FD3X+FR7 + WL 3,S3FD3X+FR8 + + .word ANI_ZERO_XZVELS + +;;; .word ANI_XFLIP + + WL 8,S3RL3A+FR5 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/SHN_MJT.IMG b/BACKUP/SHN_MJT.IMG new file mode 100644 index 0000000..2d4074d Binary files /dev/null and b/BACKUP/SHN_MJT.IMG differ diff --git a/BACKUP/SOUND.EQU b/BACKUP/SOUND.EQU new file mode 100644 index 0000000..a27da04 --- /dev/null +++ b/BACKUP/SOUND.EQU @@ -0,0 +1,237 @@ +GOING_TO_TOP_ROPE .EQU 13CH +GOING_TO_TOP .EQU 13DH +HERE_IT_COMES .EQU 13EH +BOOMSHAKALAKA .EQU 13fh +AND_1 .EQU 140H +AND_2 .EQU 141H +AND_3 .EQU 142H +LOOK_AT_THIS .EQU 143H +OFF_THE_TOP .EQU 144H +KABOOM_OH .EQU 145H +KABOOM .EQU 146H +OOOH .EQU 147H +HERES_THE_SETUP .EQU 0efH +WITH_AUTHORITY .EQU 148H +OH_MY_GOODNESS_0 .EQU 149H +OH_MY_GOODNESS_1 .EQU 162H +OH_MY_GOODNESS_2 .EQU 163H +LOOK_OUT .EQU 14AH +DID_YOU_SEE_THAT .EQU 14BH +AND_0 .EQU 14CH +OH_0 .EQU 14DH +OOOH_0 .EQU 14EH +THATS_GOTTA_HURT .EQU 14FH +WOW_0 .EQU 150H +WOW_1 .EQU 151H +ALMOST .EQU 152H +NICELY_DONE .EQU 153H +HEAVES_HIM .EQU 154H +NICE_ESCAPE .EQU 155H +NICE_EXECUTION .EQU 156H +OH_THAT_HURTS_0 .EQU 157H +OH_THAT_HURTS_1 .EQU 158H +A_MISS .EQU 159H +AND_MISSES .EQU 15AH +INTO_THE_ROPES .EQU 15BH +A_QUICK_REVERSAL .EQU 15CH +BOTH_MEN_DOWN .EQU 15DH +THIS_COULD_BE_IT .EQU 15EH +NO_WAIT_A_MINUTE .EQU 15FH +UNBEELEVABLE_0 .EQU 0EDH +UNBEELEVABLE_1 .EQU 160H +UNBEELEVABLE_2 .EQU 161H +LISTEN_TO_THE_CROWD .EQU 164H +DID_YOU_HEAR_THAT .EQU 165H +IVE_NEVER_SEEN_THAT .EQU 166H +OH_MY .EQU 0F1H +AND_OH .EQU 0F0H +FORGET_ABOUT_IT .EQU 0EEH +VERY_IMP_DOINK .EQU 109H +VERY_IMP_SHAWN .EQU 10AH +VERY_IMP_RAZOR .EQU 10BH +VERY_IMP_BAM .EQU 10DH +VERY_IMP_UNDER .EQU 10CH +VERY_IMP_LUGER .EQU 10EH +VERY_IMP_HART .EQU 10FH +VERY_IMP_YOKO .EQU 110H +GIVE_CREDIT .EQU -1 +VERY_IMPRESSIVE .EQU -2 +END_GAME_STUFF .EQU -3 +IT_DOESNT_LOOK_GOOD .EQU -4 +R_IMPRESSIVE_MOVE .EQU -5 +REPEAT_MODE .EQU -6 +TOTAL_DISASTER .EQU 129H +TOTAL_DEBUNK .EQU 12AH +GIVE_CRED_DOINK .EQU 167H +GIVE_CRED_SHAWN .EQU 168H +GIVE_CRED_RAZOR .EQU 169H +GIVE_CRED_BAM .EQU 16AH +GIVE_CRED_UNDER .EQU 16BH +GIVE_CRED_LUGER .EQU 16CH +GIVE_CRED_HART .EQU 16DH +GIVE_CRED_YOKO .EQU 16EH +CONGRATULATIONS .EQU 0F2H +DOINK_LAUGH_0 .EQU 055H +DOINK_LAUGH_1 .EQU 056H +DOINK_LAUGH_2 .EQU 057H +DOINK_LAUGH_3 .EQU 058H +RAZOR_RIGHT_GUY .EQU 05AH +SHAWN_LUCKY_YOU .EQU 060H +SHAWN_WRESTLER_90 .EQU 061H +BAM_BEAST_FROM_EAST .EQU 066H +BAM_BAM_YEAH .EQU 067H +BAM_GET_OUT .EQU 06FH +NOT_A_GOOD_IDEA .EQU 16FH +WHAT_WAS_HE_THINKING .EQU 170H +YOU_CANT_GET_ANY_CLOSER .EQU 171H +WHAT_KEEPING_THEM_UP .EQU 17AH +LOOKS_LIKE_ITS_OVER .EQU 17BH +ITS_PAND_OUT_THERE .EQU 17CH +ITS_PAND_IN_THE_RING .EQU 17DH +WHATS_THIS .EQU 17EH +WHAT_A_TURN_OF_EVENTS .EQU 17FH +MAGNIFICENT .EQU 180H +CAN_YOU_BELIEVE_THAT .EQU 181H +REJECTED .EQU 182H +WHAT_A_BEATING .EQU 183H +TO_THE_FACE .EQU 184H +TO_THE_MIDSECTION .EQU 185H +AND_ANOTHER .EQU 186H +I_WOULD_RECEIVE_THAT .EQU 187H +WHAT_POWER .EQU 188H +WHAT_SPEED .EQU 189H +WHAT_SKILL .EQU 18AH +WHAT_A_BLOW .EQU 18bH +AWESOME .EQU 18cH +JUST_AWESOME .EQU 18dH +GOODNIGHT .EQU 18eH +HELLO .EQU 18fH +IT_DOESNT_LOOK_DOINK .EQU 190H +IT_DOESNT_LOOK_SHAWN .EQU 191H +IT_DOESNT_LOOK_RAZOR .EQU 192H +IT_DOESNT_LOOK_UNDER .EQU 193H +IT_DOESNT_LOOK_BAMBAM .EQU 194H +IT_DOESNT_LOOK_LEX .EQU 195H +IT_DOESNT_LOOK_BRET .EQU 196H +IT_DOESNT_LOOK_YOKO .EQU 197H +CAN_ANYBODY_STOP_HIM .EQU 198H +WHAT .EQU 199H +WHAT_THE .EQU 19aH +WAIT_A_MINUTE .EQU 19bH +HE_CANT_DO_THAT .EQU 19cH +IS_THAT_LEGAL .EQU 19dH +NOW_THAT_WAS_CHEAP .EQU 19eH +THATS_NOT_VERY_FAIR .EQU 19fH +SOMEONE_CALL_SECURITY .EQU 1A0H +THAT_WASNT_VERY_NICE .EQU 1A1H +MOST_IMPRESSIVE .EQU 1A2H +I_CANT_WATCH_THIS .EQU 1A3H +INCREDIBLE_COMBO .EQU 1A4H +NO_V .EQU 1A5H +YES_V .EQU 1A6H +HIGH_RISK_MANUEVER .EQU 1A7H +WHAT_A_SLAM .EQU 1A8H +ITS_A_DONNYBROOK .EQU 1A9H +HES_JUST_GONE_BERSERK .EQU 1AAH +THE_JOYBUZZER .EQU 1ABH +SHOCKING .EQU 1ACH +CAN_YOU_WHAT_SEEN .EQU 1ADH +HES_GOT_HIM .EQU 1AEH +A_CROSS_BODY .EQU 1AFH +SUPLEX .EQU 1B0H +NECK_BREAKER .EQU 1B1H +TOMBSTONE_PILEDRIVER .EQU 1B2H +SHARP_SHOOTER .EQU 1B3H +BANZAI_DROP .EQU 1B4H +RAZORS_EDGE .EQU 1B5H +BACK_SUPLEX .EQU 1B6H +SAVATE_KICK .EQU 1B7H +AWESOME_FOREARM .EQU 1B8H +FLYING_HEAD_BUTT .EQU 1B9H +SOMEHOW_I_DONT_THINK .EQU 1BAH +SIGN_HERE_PLEASE .EQU 1BBH +GOOD_NIGHT_2 .EQU 1BCH + +R_NICELY_DONE .EQU 1D0H +R_TASTE_OF_HIS_OWN .EQU 1D1H +R_LOOK_AT_THIS .EQU 1D2H +R_RIGHT_TO_THE_KISSER .EQU 1D3H +R_THAT_WAS_DUMB .EQU 1D4H +R_THAT_WAS_UGLY .EQU 1D5H +R_DID_YOU_SEE_THAT .EQU 1D6H +R_IVE_NEVER_SEEN .EQU 1D7H +R_OH_YEAH .EQU 1D8H +R_THIS_COULD_BE_IT .EQU 1D9H +R_NO_WAIT_A_MINUTE .EQU 1DAH +R_MOVE_BY_SHAWN .EQU 1DBH +R_MOVE_BY_DOINK .EQU 1DCH +R_MOVE_BY_RAZOR .EQU 1DDH +R_MOVE_BY_UNDER .EQU 1DEH +R_MOVE_BY_BAM .EQU 1DFH +R_MOVE_BY_LEX .EQU 1E0H +R_MOVE_BY_HITMAN .EQU 1E1H +R_MOVE_BY_YOKO .EQU 1E2H +R_THATLL_COST_HIM .EQU 1E3H +R_REJECTED .EQU 1E4H +R_THATS_GOTTA_HURT .EQU 1E5H +R_GAME_OVER .EQU 1E6H +R_WHAT_POWER .EQU 1E7H +R_WHAT_SPEED .EQU 1E8H +R_WHAT_AGILITY .EQU 1E9H +R_AWESOME .EQU 1EAH +R_GOODNIGHT .EQU 1EBH +R_HELLO .EQU 1ECH +R_WHATS_GOING_ON .EQU 1EDH +R_HE_CANT_DO_THAT .EQU 1EEH +R_THAT_WAS_CHEAP .EQU 1EFH +R_SOMEONE_CALL_SECURITY .EQU 1F0H +R_THAT_WASNT_NICE .EQU 1F1H +R_I_CANT_WATCH .EQU 1F2H +R_INCREDIBLE .EQU 1F3H +R_THIS_COULD_BE_TROUBLE .EQU 1F4H +R_I_THINK_HE_BROKE_IT .EQU 1F5H +R_NOBODY_GETS_UP .EQU 1F6H +R_DIG_IT .EQU 1F7H +R_OH_VICIOUS .EQU 1F8H + + +CROWD_BOO .EQU 2048 +CROWD_OH_0 .EQU 2049 +CROWD_OH_1 .EQU 2050 +CROWD_HOORAY .EQU 2051 +CROWD_WHISTLE_0 .EQU 2052 +CROWD_WHISTLE_1 .EQU 2053 +CROWD_CHEER_0 .EQU 2054 +CROWD_CHEER_1 .EQU 2055 +CROWD_HEY_LOOP .EQU 2056 +CROWD_YEAH_0 .EQU 2057 +CROWD_VICTORY_LOOP .EQU 2058 +CROWD_WHOA_0 .EQU 2059 +CROWD_WHOA_1 .EQU 2060 +CROWD_DOUBLE_WHOA .EQU 2061 +CROWD_CRESCENDO .EQU 2062 +CROWD_OH_FAIL .EQU 2063 +CROWD_OH_CHEER .EQU 2064 +CROWD_BASIC .EQU 2065 + +D_CROWD_BOO .EQU 98 +D_CROWD_OH_0 .EQU 55 +D_CROWD_OH_1 .EQU 43 +D_CROWD_HOORAY .EQU 58 +D_CROWD_WHISTLE_0 .EQU 34 +D_CROWD_WHISTLE_1 .EQU 100 +D_CROWD_CHEER_0 .EQU 142 +D_CROWD_CHEER_1 .EQU 101 +D_CROWD_YEAH_0 .EQU 116 +D_CROWD_WHOA_0 .EQU 49 +D_CROWD_WHOA_1 .EQU 68 +D_CROWD_DOUBLE_WHOA .EQU 79 +D_CROWD_CRESCENDO .EQU 56 +D_CROWD_OH_FAIL .EQU 64 +D_CROWD_OH_CHEER .EQU 146 + +D_CROWD_VICTORY_LOOP .EQU 200 +D_CROWD_HEY_LOOP .EQU 150 + + + \ No newline at end of file diff --git a/BACKUP/SOUND.H b/BACKUP/SOUND.H new file mode 100644 index 0000000..843385e --- /dev/null +++ b/BACKUP/SOUND.H @@ -0,0 +1,192 @@ +*************************************************************************** +* +* Mnemonics for sound calls +* + +MUSIC_ON equ 1 + +SELECT_TUNE equ 15h + +bounce_l1 equ 009h ;sound of landing on the mat + +;run_snd equ 009h ;sound of footsteps while running +run_snd equ 0C0h ;sound of footsteps while running + +seltimer_onsnd equ 001h +seltimer_offsnd equ 002h + +clock_snd equ 07Ch + +bounce_snd equ 001h + +;NOT triple_snd calls! +d_up_snd equ 3d4h +d_dn_snd equ 3d5h + +d_enter_snd equ 3d6h +d_escape_snd equ 3d7h +d_warning_snd equ 3d8h + +d_beep1_snd equ 3d9h +d_beep2_snd equ 3dah + +d_misc1_snd equ 3dbh +d_misc2_snd equ 3dch +d_misc3_snd equ 3ddh + + +beep1_snd equ 3d9h +beep2_snd equ 3dah +cursor_snd4 equ 3dbh +select_snd1 equ 3dch + + +coin_snd equ 048h +musicoff_snd equ 005h +snd_play1ovr equ 006h + +W_BRET equ 0 +W_RAZOR equ 1 +W_TAKER equ 2 +W_YOKO equ 3 +W_SHAWN equ 4 +W_BAMBAM equ 5 +W_DOINK equ 6 +W_ADAM equ 7 +W_LUGER equ 8 +W_REF equ 9 + + +PUNCH_T1 equ 0 +PUNCH_T2 equ 1 +PUNCH_L1 equ 2 +PUNCH_L2 equ 3 +HDBUTT_T1 equ 4 +HDBUTT_T2 equ 5 +HDBUTT_L1 equ 6 +HDBUTT_L2 equ 7 +KICK_T1 equ 8 +KICK_T2 equ 9 +KICK_L1 equ 10 +KICK_L2 equ 11 +FLYKICK_T1 equ 12 +FLYKICK_T2 equ 13 +FLYKICK_L1 equ 14 +FLYKICK_L2 equ 15 +GRABTHROW_T1 equ 16 +GRABTHROW_T2 equ 17 +GRABTHROW_L1 equ 18 +GRABTHROW_L2 equ 19 +UPRCUT_T1 equ 20 +UPRCUT_T2 equ 21 +UPRCUT_L1 equ 22 +UPRCUT_L2 equ 23 +LBOWDROP_T1 equ 24 +LBOWDROP_T2 equ 25 +LBOWDROP_L1 equ 26 +LBOWDROP_L2 equ 27 +GRABHOLD_T1 equ 28 +GRABHOLD_T2 equ 29 +GRABHOLD_L1 equ 30 +GRABHOLD_L2 equ 31 +GRABFLING_T1 equ 32 +GRABFLING_T2 equ 33 +GRABFLING_L1 equ 34 +GRABFLING_L2 equ 35 +PUSH_T1 equ 36 +PUSH_T2 equ 37 +PUSH_L1 equ 38 +PUSH_L2 equ 39 +HIPTOSS_T1 equ 40 +HIPTOSS_T2 equ 41 +HIPTOSS_L1 equ 42 +HIPTOSS_L2 equ 43 +;BIGBOOT_T1 equ 44 +;BIGBOOT_T2 equ 45 +;BIGBOOT_L1 equ 46 +;BIGBOOT_L2 equ 47 + +SPUNCH_T1 equ 48 +SPUNCH_T2 equ 49 +SPUNCH_L1 equ 50 +SPUNCH_L2 equ 51 + +TURNDIVE_T1 equ 52 +TURNDIVE_T2 equ 53 + +RUGSLAM_YELL equ 54 +RUGSLAM_IMPACT equ 55 + +YELL_THROW equ 56 + +LAST_MOVE equ YELL_THROW + +W_LOOKUP equ 8000h + + + .ref DEFAULT_SOUND_TABLE,MASTER_SOUND_TABLE,table_sound + +WRSND .macro WRESTLER,SOUND1,SOUND2 + + movi MASTER_SOUND_TABLE+(:WRESTLER:*10h*(LAST_MOVE+1))+(:SOUND1:*16),a0 + move *a0,a0,W + jrnn OKAY? + + ;oops. use the default instead + movi DEFAULT_SOUND_TABLE+(:SOUND1:*16),a0 + move *a0,a0,W + +OKAY? + calla table_sound + + .if $isname(SOUND2) + movi MASTER_SOUND_TABLE+(:WRESTLER:*10h*(LAST_MOVE+1))+(:SOUND2:*16),a0 + move *a0,a0,W + jrnn OKAY2? + + ;oops. use the default instead + movi DEFAULT_SOUND_TABLE+(:SOUND2:*16),a0 + move *a0,a0,W + +OKAY2? + calla table_sound + + .endif + .endm + +WRSNDXI .macro REG,SOUND1 + PUSH a0,a1 + + move *:REG:(WRESTLERNUM),a1,W + movi (LAST_MOVE+1),a14 + mpyu a14,a1 + X16 a1 + addi (:SOUND1:*10h),a1 + addi MASTER_SOUND_TABLE,a1 + move *a1,a0,W + jrnn OKAY? + + ;oops. use the default instead + movi DEFAULT_SOUND_TABLE+(:SOUND1:*10h),a1 + move *a1,a0,W +OKAY? + calla table_sound + PULL a0,a1 + .endm + +WRSNDX .macro P1,P2,P3 + .if $isreg(P1) + WRSNDXI :P1:,:P2: + .if $isname(P3) + WRSNDXI :P1:,:P3: + .endif + .else + WRSNDXI a13,:P1: + .if $isname(P2) + WRSNDXI a13,:P2: + .endif + .endif + .endm + + + \ No newline at end of file diff --git a/BACKUP/SOUND.HDR b/BACKUP/SOUND.HDR new file mode 100644 index 0000000..37aaa48 --- /dev/null +++ b/BACKUP/SOUND.HDR @@ -0,0 +1,107 @@ +****************************************************************************** +* +* Mnemonics for sound calls +* + +SELECT_TUNE .equ 15h + +bounce_l1 .equ 009h ;sound of landing on the mat + +run_snd .equ 00Dh ;sound of footsteps while running + +seltimer_onsnd equ 001h +seltimer_offsnd equ 002h + +bounce_snd .equ 001h +beep1_snd .equ 002h +beep2_snd .equ 003h +coin_snd .equ 004h +musicoff_snd .equ 005h +snd_play1ovr .equ 006h +cursor_snd4 .equ 007h +select_snd1 .equ 008h + + +W_BRET .equ 0 +W_RAZOR .equ 1 +W_TAKER .equ 2 +W_YOKO .equ 3 +W_SHAWN .equ 4 +W_BAMBAM .equ 5 +W_DOINK .equ 6 +W_ADAM .equ 7 +W_LUGER .equ 8 + + +PUNCH_T1 .equ 0 +PUNCH_T2 .equ 1 +PUNCH_L1 .equ 2 +PUNCH_L2 .equ 3 +HDBUTT_T1 .equ 4 +HDBUTT_T2 .equ 5 +HDBUTT_L1 .equ 6 +HDBUTT_L2 .equ 7 +KICK_T1 .equ 8 +KICK_T2 .equ 9 +KICK_L1 .equ 10 +KICK_L2 .equ 11 +FLYKICK_T1 .equ 12 +FLYKICK_T2 .equ 13 +FLYKICK_L1 .equ 14 +FLYKICK_L2 .equ 15 +GRABTHROW_T1 .equ 16 +GRABTHROW_T2 .equ 17 +GRABTHROW_L1 .equ 18 +GRABTHROW_L2 .equ 19 +UPRCUT_T1 .equ 20 +UPRCUT_T2 .equ 21 +UPRCUT_L1 .equ 22 +UPRCUT_L2 .equ 23 +LBOWDROP_T1 .equ 24 +LBOWDROP_T2 .equ 25 +LBOWDROP_L1 .equ 26 +LBOWDROP_L2 .equ 27 +GRABHOLD_T1 .equ 28 +GRABHOLD_T2 .equ 29 +GRABHOLD_L1 .equ 30 +GRABHOLD_L2 .equ 31 +GRABFLING_T1 .equ 32 +GRABFLING_T2 .equ 33 +GRABFLING_L1 .equ 34 +GRABFLING_L2 .equ 35 +PUSH_T1 .equ 36 +PUSH_T2 .equ 37 +PUSH_L1 .equ 38 +PUSH_L2 .equ 39 +HIPTOSS_T1 .equ 40 +HIPTOSS_T2 .equ 41 +HIPTOSS_L1 .equ 42 +HIPTOSS_L2 .equ 43 +BIGBOOT_T1 .equ 44 +BIGBOOT_T2 .equ 45 +BIGBOOT_L1 .equ 46 +BIGBOOT_L2 .equ 47 +TURNDIVE_T1 .equ 48 +TURNDIVE_T2 .equ 49 +YELL_THROW .equ 50 +LAST_MOVE .equ YELL_THROW + +W_LOOKUP .equ 8000h + + + .ref DEFAULT_SOUND_TABLE,MASTER_SOUND_TABLE + +WRSND .macro WRESTLER,SOUND + + movi MASTER_SOUND_TABLE+(:WRESTLER:*10h*(LAST_MOVE+1))+(:SOUND:*16),a0 + move *a0,a0,W + jrnn OKAY? + + ;oops. use the default instead + movi DEFAULT_SOUND_TABLE+(:SOUND:*16),a0 + move *a0,a0,W + +OKAY? + calla triple_sound + .endm + \ No newline at end of file diff --git a/BACKUP/SPECIAL.ASM b/BACKUP/SPECIAL.ASM new file mode 100644 index 0000000..b796ecc --- /dev/null +++ b/BACKUP/SPECIAL.ASM @@ -0,0 +1,3574 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "special.asm" + .title "general special moves stuff" + .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" + .include "miscimg.glo" + .include "special.equ" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF PSTATUS + + .ref pal_getf + .ref RNDPER,RNDRNG0,RNDRNGS + .ref PCNT + + ;from STRING.ASM + .ref osgemd_ascii,message_ascii,mess_space_width,mess_spacing + .ref mess_cursx,mess_cursy,message_palette,print_string_R + .ref dec_to_asc,copy_string,message_buffer,print_string + .ref print_message,print_string_C2,mess_objid,setup_message + .ref ogmd10_ascii + .ref mess_line_spacing,print_string2 + .ref print_string_R2 + .ref font9_ascii + + .REF BAKMODS + .REF BGND_UD1 + .REF GENERIC_DISPLAY + .REF ZERO_BITS + + .DEF CREATE_TEXT_LINE + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +SHOW_DAMAGE_POINTS equ 0 + +****************************************************************************** +* VARIABLES + + .bss impact_params ,32*8 * NUM_WRES ; + + + BSSX plyr1_objlist, 32 ;collideable objects on P1's side + BSSX plyr2_objlist, 32 ; P2's side + BSSX neutral_objlist,32 ;neutral collideable + +****************************************************************************** +* EQUATES FOR THIS FILE + + STRUCTPD + LONG ANIM + LONG XVAL + LONG YVAL + WORD ZVAL + LONG XVEL + LONG YVEL + WORD FLAGS + LONG PROC + LONG PALLET + LONG STAR_TBL + +#***************************************************************************** +* +* a10=index into offsets table + + SUBR create_dizzy_proc + + move *a13(STARS_FLAG),a0 + jrnz #x + + CREATE0 dizzy_proc + move a0,a9 + move a13,*a9(PROC),L + + movk 1,a0 + move a0,*a13(STARS_FLAG) + + move *a13(WRESTLERNUM),a8 + X128 a8 + addi #dizzy_offsets,a8 + X32 a10 + add a10,a8 + move *a8+,a1 ;x offset + move *a13(OBJ_XPOSINT),a0 + + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a1 +#no_flip + add a1,a0 + sll 16,a0 + move a0,*a9(XVAL),L + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(OBJ_ZPOSINT),a1 + mpyu a0,a1 + move *a13(OBJ_YPOSINT),a0 + move *a8,a14 ;y offset + add a14,a0 + sll 16,a0 + sub a0,a1 + move a1,*a9(YVAL),L + +; move *a13(OBJ_PRIORITY),a0 + move *a13(OBJ_ZPOSINT),a0 + ori 1000h,a0 + +;The stars for laying on ground guy, appear in front of other guy also! +;No easy solution for this problem... + + inc a0 + move a0,*a9(ZVAL) + +#x + rets + + +; stand, lying +#dizzy_offsets +; stand, on stomach, on back,?,? + + .word 6,6dh, 0,0, 0,0, 0,0 ;0 Bret Hart + .word 2,73h, 0,0, 0,0, 0,0 ;1 Razor Ramon + .word 19h,74h, 0,0, 0,0, 0,0 ;2 Undertaker + .word 10,6dh, 0,0, 0,0, 0,0 ;3 Yokozuna + .word -5,6bh, 0,0, 0,0, 0,0 ;4 Shawn Michaels + .word 5,116, 0,0, 0,0, 0,0 ;5 Bam Bam + .word 7,116, 2eh,30h, 30h,20h, 0,0 ;6 Doink + .word 7,116, 0,0, 0,0, 0,0 ;7 Spare + .word 7,116, 0,0, 0,0, 0,0 ;8 Lex Luger + .word 7,116, 0,0, 0,0, 0,0 ;9 Referee + + +#***************************************************************************** + + SUBRP dizzy_proc + + move *a13(PROC),a0,L + move *a0(WRESTLERNUM),a0 + X32 a0 + addi #star_art,a0 + move *a0,a10,L + move a10,*a13(STAR_TBL),L + + + move *a10+,a11 ;tick count + move *a10+,a2,L ;* image + + move *a13(XVAL),a0,L ;x val + move *a13(YVAL),a1,L ;y val + move *a13(ZVAL),a3 ;z val + movi DMAWNZ|M_3D,a4 ;DMA flags + clr a5 ;OID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + move *a13(PROC),a9,L +#loop + SLEEPK 1 + move *a9(STARS_FLAG),a0 + jrz #die + +;If stars are on for grounded opponent, swap ZPOS based on nearest opponent + move *a9(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrnz #nock + + move *a9(NEW_FACING_DIR),a0 + btst MOVE_UP_BIT,a0 + jrnz #front +;Stars should be lower Z than wrestlers + move *a13(ZVAL),a0 ;z val + subk 1,a0 + move a0,*a8(OZPOS) + jruc #nock +#front +;Stars should be higher Z than wrestlers + move *a13(ZVAL),a0 ;z val + addk 1,a0 + move a0,*a8(OZPOS) + +#nock + + dsj a11,#loop +#cnt + move *a10+,a11 + jrnz #ok + +; movi #dizzy_anim,a10 ;repeat + move *a13(STAR_TBL),a10,L + + jruc #cnt +#ok + move *a10+,a0,L + callr change_image_local + jruc #loop + + +#die + calla DELOBJA8 + DIE + + +#star_art + .long #hdizzy_anim ;0 Bret Hart + .long #rdizzy_anim ;1 Razor Ramon + .long #udizzy_anim ;2 Undertaker + .long #ydizzy_anim ;3 Yokozuna + .long #sdizzy_anim ;4 Shawn Michaels + .long #bdizzy_anim ;5 Bam Bam + .long #ddizzy_anim ;6 Doink + .long 0 ;7 spare + .long #ldizzy_anim ;8 Lex Luger + .long 0 ;9 Referee + +#hdizzy_anim + WL 4,STARS01 + WL 4,STARS02 + WL 4,STARS03 + WL 4,STARS04 + WL 4,STARS05 + WL 4,STARS06 + .word 0 + +#rdizzy_anim + WL 5,RAZDIZ201 + WL 5,RAZDIZ202 + WL 5,RAZDIZ203 + WL 5,RAZDIZ204 + WL 5,RAZDIZ205 + WL 5,RAZDIZ206 + WL 5,RAZDIZ207 + WL 5,RAZDIZ208 + WL 5,RAZDIZ209 + WL 5,RAZDIZ210 + .word 0 + +#udizzy_anim + WL 5,UNDZ01 + WL 5,UNDZ02 + WL 5,UNDZ03 + WL 5,UNDZ04 + WL 5,UNDZ05 + WL 5,UNDZ06 + .word 0 + +#ydizzy_anim + WL 5,YKDZ01 + WL 5,YKDZ02 + WL 5,YKDZ03 + WL 5,YKDZ04 + WL 5,YKDZ05 + WL 5,YKDZ06 + WL 5,YKDZ07 + WL 5,YKDZ08 + WL 5,YKDZ09 + .word 0 + +#sdizzy_anim + WL 4,SHNDIZ01 + WL 4,SHNDIZ02 + WL 4,SHNDIZ03 + WL 4,SHNDIZ04 + WL 4,SHNDIZ05 + WL 4,SHNDIZ06 + WL 4,SHNDIZ07 + WL 4,SHNDIZ08 + WL 4,SHNDIZ09 + WL 4,SHNDIZ10 + .word 0 + +#bdizzy_anim + WL 5,BMDZ01 + WL 5,BMDZ02 + WL 5,BMDZ03 + WL 5,BMDZ04 + WL 5,BMDZ05 + WL 5,BMDZ06 + .word 0 + +#ddizzy_anim + WL 4,STARS01 + WL 4,STARS02 + WL 4,STARS03 + WL 4,STARS04 + WL 4,STARS05 + WL 4,STARS06 + .word 0 + +#ldizzy_anim + WL 4,STARS01 + WL 4,STARS02 + WL 4,STARS03 + WL 4,STARS04 + WL 4,STARS05 + WL 4,STARS06 + .word 0 + + +#***************************************************************************** + + SUBR create_damage_points + + .if SHOW_DAMAGE_POINTS + + CREATE0 impact_proc + move a0,a9 + + movi sp_d200_anim,a0 + move a0,*a9(ANIM),L ;animation + + movi DMAWNZ|M_3D,a4 ;DMA flags + + movi 11,a1 ;<--- get from table + move *a13(OBJ_XPOSINT),a0 + + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a1 +;;; ori M_FLIPH,a4 ;flip image +#no_flip + add a1,a0 + sll 16,a0 + move a0,*a9(XVAL),L + + move a4,*a9(FLAGS) ;DMA flags + + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(OBJ_ZPOSINT),a1 + mpyu a0,a1 + move *a13(OBJ_YPOSINT),a0 + addi 104,a0 ;<--- get from table + sll 16,a0 + sub a0,a1 + move a1,*a9(YVAL),L + + move *a13(OBJ_PRIORITY),a0 + inc a0 + move a0,*a9(ZVAL) + + clr a0 + move a0,*a9(XVEL),L + + movi [-1,0],a0 + move a0,*a9(YVEL),L + + .endif + + rets + + +XYSEEK + +;;Seek x-y coordinate +;a8=object seeking +;a5=x coord to seek +;a6=y coord to seek +;a7=multiplier of velocity + +;RETURNS +;a5=x vel +;a6=y vel + + move *a8(OXPOS),a3,0 + move *a8(OYPOS),a4,0 + + sub a3,a5 ;find difference + sub a4,a6 + move a6,a3 ; + move a5,a1 + abs a5 + abs a6 + add a5,a6 ;calc sum abs(dx+dy) + sll 16,a1 ;shift to accomodate fractional velocity + sll 16,a3 + divs a6,a1 ;generate speed ratios + divs a6,a3 +; movi 60h,a5 ;multiply by velocity factor + move a7,a5 + mpys a5,a3 + mpys a1,a5 ;final x vel + sra 4,a3 + sra 4,a5 + move a3,a6 ;final y vel + + rets + +;MJT Start + +;MJT End +#***************************************************************************** + +;For Bam fire head butt +;For Taker club to head + SUBR create_impact + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + move *a10(WRESTLERNUM),a0 + sll 5,a0 + addi #offset_t,a0 + move *a0,a11,L + CREATE0 #explosions + CREATE0 #explosions2 + PULL a1,a4,a7,a10,a11 + + rets + +#offset_t + .long [100,0] ;0 (Bret) + .long [108,0] ;1 (Razor) + .long [108,0] ;2 (Taker) + .long [105,0] ;3 (Yoko) + .long [80,0] ;4 (Shawn) + .long [105,0] ;5 (Bam Bam) + .long [96,0] ;6 (Doink) + .long [105,0] ;7 (spare) + .long [90,0] ;8 (Lex) + +;For Bam fire super kick +;For Taker fire super kick + SUBR create_impact2 + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + movi [38h,13h],a11 + CREATE0 #explosions + CREATE0 #explosions2 + PULL a1,a4,a7,a10,a11 + + rets + +;MJT Start +;For Taker explosion for pin + SUBR create_impact5 + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + movi [10,1h],a11 + CREATE0 #explosions + CREATE0 #explosions2 + CREATE0 #explosions2 + PULL a1,a4,a7,a10,a11 + + rets +;MJT End + +;For Bam fire punches to head + SUBR create_impact3 + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + movi [58h,0],a11 + CREATE0 #explosions + PULL a1,a4,a7,a10,a11 + + rets + +;For Taker uppercut + SUBR create_impact4 + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + movi [58h,0],a11 + CREATE0 #head_fountain +;MJT Start +;Don't allow other debris to come out and bog us down! + movk 1,a0 + move a0,@no_debris +;MJT End + PULL a1,a4,a7,a10,a11 + + rets + +#head_fountain +;For Taker uppercut fountain + move *a10(DEBRIS_X),a1 +;MJT Start + jrnz #cont + .ref no_debris + move a0,@no_debris + DIE + +#cont +;MJT End + CREATE0 impact_proc2 + move a0,a9 + + movk 11,a0 + calla RNDRNG0 + sll 5,a0 + addi #exp_tbl,a0 + move *a0,a0,L + + move a0,*a9(ANIM),L ;animation + + movi BLUEEX_P,a0 + move a0,*a9(PALLET),L + + movi DMAWNZ|M_3D,a4 ;DMA flags + + move *a10(DEBRIS_X),a1 + move *a10(OBJ_XPOSINT),a0 + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip2 + neg a1 + ori M_FLIPH,a4 ;flip image +#no_flip2 + add a1,a0 + sll 16,a0 + move a0,*a9(XVAL),L + move a4,*a9(FLAGS) ;DMA flags + + movi Y_SCALE_MULTIPLIER,a0 + move *a10(OBJ_ZPOSINT),a3 + mpyu a0,a3 + move *a10(OBJ_YPOSINT),a0 + + move *A10(DEBRIS_Y),a14 + add a14,a0 + sll 16,a0 + sub a0,a3 + move a3,*a9(YVAL),L + + move *a10(OBJ_ZPOSINT),a0 + ori 1000h,a0 + move *a10(INRING),a14 + jrz #inring2 + cmpi [015ach,0],a0 + jrgt #inring2 + subi [01e5h,0],a0 ;below mat +#inring2 + move a0,a2 + move @HCOUNT,a1 + btst 0,a1 + jrz #ok2 + addi 5h,a2 +#ok2 + move a2,*a9(ZVAL) + + + movi 20000h,a0 + calla RNDRNG0 + subi 10000h,a0 + move a0,*a9(XVEL),L + + movi 20000h,a0 + calla RNDRNG0 + subi 10000h,a0 + move a0,*a9(YVEL),L + + SLEEPK 2 + + jruc #head_fountain + +***************************************************************************** + +#explosions2 + SLEEPK 1 +#explosions + + movx a11,a0 + move a0,*a13(PDATA) ;x + movy a11,a0 + srl 16,a0 + move a0,*a13(PDATA+16) ;y + + movk 4,a11 +#lp + CREATE0 impact_proc + move a0,a9 + + movk 11,a0 + calla RNDRNG0 + sll 5,a0 + addi #exp_tbl,a0 + move *a0,a0,L + + move a0,*a9(ANIM),L ;animation + + move *a10(WHOHITME),a0,L + move *a0(WRESTLERNUM),a0 + sll 5,a0 + addi #pal_t,a0 + move *a0,a0,L + move a0,*a9(PALLET),L + + movi DMAWNZ|M_3D,a4 ;DMA flags + + move *a13(PDATA),a1 ;x + + move *a10(OBJ_XPOSINT),a0 + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a1 + ori M_FLIPH,a4 ;flip image +#no_flip + add a1,a0 + move a0,a2 + + movi 30,a0 + calla RNDRNG0 + subi 15,a0 + add a0,a2 + + sll 16,a2 + move a2,*a9(XVAL),L + + move a4,*a9(FLAGS) ;DMA flags + + movi Y_SCALE_MULTIPLIER,a0 + move *a10(OBJ_ZPOSINT),a3 + mpyu a0,a3 + move *a10(OBJ_YPOSINT),a0 + move *a13(PDATA+16),a14 ;y + add a14,a0 ;<--- get from table + + move a0,a2 + + movi 20,a0 + calla RNDRNG0 + subi 10,a0 + add a0,a2 + + sll 16,a2 + sub a2,a3 + move a3,*a9(YVAL),L + +; movi >2480,a0 + + move *a10(OBJ_ZPOSINT),a0 + ori 1000h,a0 + move *a10(INRING),a14 + jrz #inring + cmpi [015ach,0],a0 + jrgt #inring + subi [01e5h,0],a0 ;below mat +#inring + move a0,a2 + move @HCOUNT,a1 + btst 0,a1 + jrz #ok + addi 5h,a2 +#ok + move a2,*a9(ZVAL) + + +; movi 8000h,a0 +; calla RNDRNG0 +; subi 4000h,a0 +; +; move *a10(OBJ_XVEL),a1,L +; add a1,a0 + + clr a0 + move a0,*a9(XVEL),L + + movi 10000h,a0 + calla RNDRNG0 + subi 8000h,a0 + +; move *a10(OBJ_YVEL),a1,L +; add a1,a0 + + clr a0 + move a0,*a9(YVEL),L + + SLEEPK 4 + + dsj a11,#lp + + DIE + +#pal_t .long XPLODE_P ;0 (Bret) + .long XPLODE_P ;1 (Razor) + .long BLUEEX_P ;2 (Taker) + .long XPLODE_P ;3 (Yoko) + .long XPLODE_P ;4 (Shawn) + .long XPLODE_P ;5 (Bam Bam) + .long XPLODE_P ;6 (Doink) + .long XPLODE_P ;7 spare + .long XPLODE_P ;8 (Lex) + + +**************************************************************************** +* a11 = * impact parameters + + SUBR impact_proc2 + move a10,a9 + + callr begin_ani +#loop0 + SLEEPK 1 + + JSRP special_ani + jruc #loop0 + +***************************************************************************** +* a11 = * impact parameters + + SUBR impact_proc + move a10,a9 + + callr begin_ani +#loop + SLEEPK 1 + move *a9(OBJ_XVEL),a0,L + move a0,*a8(OXVEL),L + + JSRP special_ani + jruc #loop + + + +;;;* A1=PID, A7=PC, A8,A9,A10,A11 Passed parameters + +; movi sp_firehit_anim,a10 +; callr begin_ani +; +; SLEEPK 1 +; callr special_ani + + +;sp_d200_anim +;;Will be damage point value! +; WL 30,FIREHIT01 +; .word 0 +; +; +;sp_firehit_anim +; WL 4,FIREHIT01 +; WL 4,FIREHIT02 +; WL 4,FIREHIT03 +; WL 4,FIREHIT04 +; .word 0 + + +#exp_tbl + .long #sp_explode_a1_anim + .long #sp_explode_a2_anim + .long #sp_explode_a3_anim + .long #sp_explode_a4_anim + .long #sp_explode_b1_anim + .long #sp_explode_b2_anim + .long #sp_explode_b3_anim + .long #sp_explode_b4_anim + .long #sp_explode_c1_anim + .long #sp_explode_c2_anim + .long #sp_explode_c3_anim + .long #sp_explode_c4_anim + +#sp_explode_a1_anim + WL 4,XPLODA01 + WL 4,XPLODA03 + WL 4,XPLODA04 + WL 4,XPLODA05 + WL 4,XPLODA06 + WL 4,XPLODA07 + WL 4,XPLODA08 + WL 4,XPLODA09 + WL 4,XPLODA10 + .word 0 +#sp_explode_a2_anim + WL 2,XPLODA01 + WL 2,XPLODA03 + WL 2,XPLODA04 + WL 2,XPLODA05 + WL 2,XPLODA06 + WL 2,XPLODA07 + WL 2,XPLODA08 + WL 2,XPLODA09 + WL 2,XPLODA10 + .word 0 +#sp_explode_a3_anim +#sp_explode_a4_anim + WL 3,XPLODA01 + WL 3,XPLODA03 + WL 3,XPLODA04 + WL 3,XPLODA05 + WL 3,XPLODA06 + WL 3,XPLODA07 + WL 3,XPLODA08 + WL 3,XPLODA09 + WL 3,XPLODA10 + .word 0 + + +#sp_explode_b1_anim + WL 4,XPLODB01 + WL 4,XPLODB03 + WL 4,XPLODB04 + WL 4,XPLODB05 + WL 4,XPLODB06 + WL 4,XPLODB07 + WL 4,XPLODB08 + WL 4,XPLODB09 + WL 4,XPLODB10 + .word 0 +#sp_explode_b2_anim + WL 2,XPLODB01 + WL 2,XPLODB03 + WL 2,XPLODB04 + WL 2,XPLODB05 + WL 2,XPLODB06 + WL 2,XPLODB07 + WL 2,XPLODB08 + WL 2,XPLODB09 + WL 2,XPLODB10 + .word 0 +#sp_explode_b3_anim +#sp_explode_b4_anim + WL 3,XPLODB01 + WL 3,XPLODB03 + WL 3,XPLODB04 + WL 3,XPLODB05 + WL 3,XPLODB06 + WL 3,XPLODB07 + WL 3,XPLODB08 + WL 3,XPLODB09 + WL 3,XPLODB10 + .word 0 + +#sp_explode_c1_anim + WL 4,XPLODC01 + WL 4,XPLODC03 + WL 4,XPLODC04 + WL 4,XPLODC05 + WL 4,XPLODC06 + WL 4,XPLODC07 + WL 4,XPLODC08 + WL 4,XPLODC09 + WL 4,XPLODC10 + .word 0 +#sp_explode_c2_anim + WL 2,XPLODC01 + WL 2,XPLODC03 + WL 2,XPLODC04 + WL 2,XPLODC05 + WL 2,XPLODC06 + WL 2,XPLODC07 + WL 2,XPLODC08 + WL 2,XPLODC09 + WL 2,XPLODC10 + .word 0 + +#sp_explode_c3_anim +#sp_explode_c4_anim + WL 3,XPLODC01 + WL 3,XPLODC03 + WL 3,XPLODC04 + WL 3,XPLODC05 + WL 3,XPLODC06 + WL 3,XPLODC07 + WL 3,XPLODC08 + WL 3,XPLODC09 + WL 3,XPLODC10 + .word 0 + + +#***************************************************************************** + + SUBRP begin_ani + + + move *a13(ANIM),a10,L ;* animation + move *a13(PALLET),a0,L ;Obj pal + move a0,b0 + + move *a13(XVAL),a0,L ;x val + move *a13(YVAL),a1,L ;y val + move *a13(ZVAL),a3 ;z val + move *a13(FLAGS),a4 ;DMA flags + clr a5 ;OID + move *a13(XVEL),a6,L ;x vel + move *a13(YVEL),a7,L ;y vel + + move *a10+,a11 ;tick count + move *a10+,a2,L ;* image + + calla BEGINOBJP + + rets + +#***************************************************************************** + + SUBRP special_ani + + dec a11 + jrnz #cont + + move *a10+,a11 ;tick count + jrz #die + move *a10+,a0,L ;* image + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFX),a1 +;;; add a10,a1 ;add in X ani-offset (if any) + move a1,*a8(ODXOFF) ;display x offset + + move *a0(IANIOFFY),a1 +;;; add a11,a1 ;add in Y pos & ani-offset + move a1,*a8(ODYOFF) ;display y offset + + movb *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp +#cont + RETP + + + +#die + calla DELOBJA8 + DIE + +#***************************************************************************** +* a0 = * image +* a8 = * object + + SUBRP change_image_local + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFX),a1 + move a1,*a8(ODXOFF) ;display x offset + + move *a0(IANIOFFY),a1 + move a1,*a8(ODYOFF) ;display y offset + + movb *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + rets + + + +#***************************************************************************** + + SUBR init_special_objlist + + clr a0 + move a0,@plyr1_objlist,L + move a0,@plyr2_objlist,L + move a0,@neutral_objlist,L + + rets + + +#***************************************************************************** +; +; a0 = * process + +insert_special_objlist + + movi neutral_objlist,a1 + move *a13(SP_PLYR_SIDE),a14 ;( p1=0, p2=1, neutral=-1 ) + jrn #ok + movi plyr1_objlist,a1 + move a14,a14 + jrz #ok + movi plyr2_objlist,a1 +#ok + move *a1(0),*a0(SP_NEXT),L ;update next link + move a0,*a1,L ;insert at head of list + + rets + + +#***************************************************************************** +; +; a0 = * process + + SUBR delete_special_objlist + + movi neutral_objlist,a1 ;prev + move *a0(SP_PLYR_SIDE),a14 ;( p1=0, p2=1, neutral=-1 ) + jrn #ok + movi plyr1_objlist,a1 ;prev + move a14,a14 + jrz #ok + movi plyr2_objlist,a1 ;prev +#ok + + + move *a1,a2,L ;cur + jrz #empty + + cmp a2,a0 + jrne #no_match + + move *a2(SP_NEXT),*a1(0),L ;unlink + rets + +#no_match + + move a2,a1 ;prev +;MJT START + move *a2(SP_NEXT),a2,L ;cur +;MJT END + jrz #empty + + cmp a2,a0 + jrne #no_match + + move *a2(SP_NEXT),*a1(SP_NEXT),L ;unlink + + rets + +#empty + .if DEBUG + LOCKUP + .endif + rets + + +#***************************************************************************** + + SUBR doink_pie + + move a11,*a13(SP_WRESPROC),L + move *a11(PLYR_SIDE),*a13(SP_PLYR_SIDE) + + move a13,a0 + callr insert_special_objlist ;insert into collis list + + callr sp_create_obj + callr sp_create_shadow + + move *a13(SP_OBJ),a8,L + + movi [86,0],a1 + movi [6,0],a2 ;x-vel + move *a11(OBJ_XPOS),a0,L + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + + move *a13(SP_OBJCONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(SP_OBJCONTROL) + + neg a1 + neg a2 +#no_flip + add a1,a0 + move a0,*a13(SP_OBJ_XPOS),L + move a2,*a13(SP_OBJ_XVEL),L + + + + move *a11(OBJ_ZPOS),*a13(SP_OBJ_ZPOS),L + + move *a11(OBJ_YPOS),a0,L + addi [97,0],a0 + move a0,*a13(SP_OBJ_YPOS),L + + move *a11(INRING),*a13(SP_INRING) + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_GRAVITY),L + move a0,*a13(SP_OBJ_ZVEL),L + move a0,*a13(SP_OBJ_YVEL),L + move a0,*a13(SP_DIE) + + movi pie_anim,a0 + callr sp_change_anim + +#lp + + callr sp_velocity_add + callr sp_update_pos + + SLEEPK 1 + + callr sp_animate + + move *a13(SP_DIE),a0 + jrnz #die + + move @WORLDTLX+16,a0 ;world x int + addi 200,a0 ;center of screen + move *a13(SP_OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 256,a0 ;off screen by 56 pixels + jrlt #lp + +#die + + move a13,a0 + callr delete_special_objlist + + move *a13(SP_OBJ),a0,L + calla DELOBJ + + move *a13(SP_SHADOW_OBJ),a0,L + calla DELOBJ + + DIE + + +#***************************************************************************** + + SUBR bam_fireball + + move a11,*a13(SP_WRESPROC),L + move *a11(PLYR_SIDE),*a13(SP_PLYR_SIDE) + + move a13,a0 + callr insert_special_objlist ;insert into collis list + + callr sp_create_obj + callr sp_create_shadow + + move *a13(SP_OBJ),a8,L + + movi [86,0],a1 + movi [6,0],a2 ;x-vel + move *a11(OBJ_XPOS),a0,L + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + + move *a13(SP_OBJCONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(SP_OBJCONTROL) + + neg a1 + neg a2 +#no_flip + add a1,a0 + move a0,*a13(SP_OBJ_XPOS),L + move a2,*a13(SP_OBJ_XVEL),L + + + + move *a11(OBJ_ZPOS),*a13(SP_OBJ_ZPOS),L + + move *a11(OBJ_YPOS),a0,L + addi [97,0],a0 + move a0,*a13(SP_OBJ_YPOS),L + + move *a11(INRING),*a13(SP_INRING) + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_GRAVITY),L + move a0,*a13(SP_OBJ_ZVEL),L + move a0,*a13(SP_OBJ_YVEL),L + move a0,*a13(SP_DIE) + + movi fireball_anim,a0 + callr sp_change_anim + +#lp + + callr sp_velocity_add + callr sp_update_pos + + SLEEPK 1 + + callr sp_animate + + move *a13(SP_DIE),a0 + jrnz #die + + move @WORLDTLX+16,a0 ;world x int + addi 200,a0 ;center of screen + move *a13(SP_OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 256,a0 ;off screen by 56 pixels + jrlt #lp + + +#die + + move a13,a0 + callr delete_special_objlist + + move *a13(SP_OBJ),a0,L + calla DELOBJ + + move *a13(SP_SHADOW_OBJ),a0,L + calla DELOBJ + + DIE + +;Fix!! I don't want shadows on this spirit +#***************************************************************************** + +;MJT Start + SUBR und_spirit_pull +;Old spirits + clr a0 + jruc #cont + + SUBR und_spirit_push +;New reaper + movk 1,a0 +#cont move a0,*a13(SP_ID) + + move a11,*a13(SP_WRESPROC),L + move *a11(PLYR_SIDE),*a13(SP_PLYR_SIDE) + + move a13,a0 + callr insert_special_objlist ;insert into collis list + + callr sp_create_obj +; callr sp_create_shadow + + move *a13(SP_OBJ),a8,L + + move *a13(SP_ID),a14 + jrnz #reap +;Old spirit + movi [32,0],a1 + movi [7,0],a2 ;x-vel + movi [36h,0],a3 + movi spirit_anim,a4 + movi spirit_anim,a9 + jruc #cont2 +#reap +;Reaper + movi [2,0],a1 + movi [4,0],a2 ;x-vel + movi [2eh,0],a3 + movi reaper_grow,a4 + movi reaper_anim,a9 +#cont2 + move *a11(OBJ_XPOS),a0,L + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + + move *a13(SP_OBJCONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(SP_OBJCONTROL) + + neg a1 + neg a2 +#no_flip + add a1,a0 + move a0,*a13(SP_OBJ_XPOS),L + move a2,*a13(SP_OBJ_XVEL),L + + move *a11(OBJ_ZPOS),*a13(SP_OBJ_ZPOS),L + + move *a11(OBJ_YPOS),a0,L + add a3,a0 + move a0,*a13(SP_OBJ_YPOS),L + + move *a11(INRING),*a13(SP_INRING) + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_GRAVITY),L + move a0,*a13(SP_OBJ_ZVEL),L + move a0,*a13(SP_OBJ_YVEL),L + move a0,*a13(SP_DIE) + + move a4,a0 + callr sp_change_anim + +#lp + + + + callr sp_velocity_add + +; callr sp_update_pos +;sp_update_pos + + move *a13(SP_OBJ),a8,L + + move *a13(SP_OBJ_ZPOS),a0,L + ori [01000h,0],a0 + move *a13(SP_INRING),a14 + jrz #inring + cmpi [015ach,0],a0 + jrgt #inring + subi [01e5h,0],a0 ;below mat +#inring + move a0,*a8(OZVAL),L + + move *a13(SP_OBJ_XPOS),*a8(OXVAL),L ;object + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(SP_OBJ_ZPOSINT),a1 + mpyu a0,a1 + move a1,a2 + move *a13(SP_OBJ_YPOS),a0,L + sub a0,a1 + move a1,*a8(OYVAL),L + + + move *a13(SP_OBJCONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + SLEEPK 1 + + move a9,a0 + callr sp_animate + + move *a13(SP_DIE),a0 + jrnz #die + + move @WORLDTLX+16,a0 ;world x int + addi 200,a0 ;center of screen + move *a13(SP_OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 256,a0 ;off screen by 56 pixels + jrlt #lp + + move a13,a0 + callr delete_special_objlist +#die + + move *a13(SP_OBJ),a0,L + calla DELOBJ + +; move *a13(SP_SHADOW_OBJ),a0,L +; calla DELOBJ + + DIE + +;MJT End + +#***************************************************************************** + + SUBR react_bloodnguts_gen + + move a11,*a13(SP_WRESPROC),L + +#asdf + movi 3,a8 +#loop + movi 2,a9 +#loop2 + CREATE0 react_blood + push a13 + move a13,a10 + move a0,a13 + + move a11,*a13(SP_WRESPROC),L + + move *a11(OBJ_XPOS),*a13(SP_OBJ_XPOS),L + move *a11(OBJ_ZPOS),*a13(SP_OBJ_ZPOS),L + move *a11(OBJ_YPOS),a0,L + addi [90,0],a0 + move a0,*a13(SP_OBJ_YPOS),L + + move *a11(INRING),*a13(SP_INRING) + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + pull a13 + + dsj a9,#loop2 + + SLEEPK 2 + + dsj a8,#loop + + SLEEP 2*60 + + DIE + + + SUBR react_blood + + + clr a0 + move a0,*a13(SP_SHADOW_OBJ),L + + movi GRAVITY*2,a0 + move a0,*a13(SP_GRAVITY),L + + movi DMAWNZ,a0 ;DMA flags + move a0,*a13(SP_OBJCONTROL) + + + clr a0 ;x pos + clr a1 ;y pos + movi PINSHAD1,a2 ;* image + movi 150,a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + move a8,*a13(SP_OBJ),L + + +; clr a0 ;x pos +; clr a1 ;y pos +; movi PINSHAD1,a2 ;* image +; movi 149,a3 ;z pos +; movi DMAWNZ,a4 ;DMA flags +; clr a5 ;object ID +; clr a6 ;x vel +; clr a7 ;y vel +; calla BEGINOBJ +; move a8,*a13(SP_SHADOW_OBJ),L + + + movi [4,0],a0 + calla RNDRNG0 + + + + move a0,*a13(SP_OBJ_XVEL),L + jrp #no_xflip + + move *a13(SP_OBJCONTROL),a0 + ori M_FLIPH,a0 + move a0,*a13(SP_OBJCONTROL) +#no_xflip + + + movi [2,0],a0 + calla RNDRNGS + move a0,*a13(SP_OBJ_ZVEL),L + + movi [4,0],a0 + calla RNDRNGS + addi [8,0],a0 + move a0,*a13(SP_OBJ_YVEL),L + + + + move *a13(SP_OBJ),a8,L + + movi turkey_anim,a0 + calla sp_change_anim + + clr a0 + move a0,*a13(SP_DIE) + + movi 60*3,a0 + move a0,*a13(SP_LIFESPAN) + +#lp1 + callr sp_velocity_add + callr sp_update_pos + + SLEEPK 2 + + + move *a13(SP_OBJ_XVEL),a0,L + move *a13(SP_OBJ_YVEL),a1,L + callr calc_veldir + + X32 a0 + addi flame_table_A,a0 + move *a0,a2,L + + move a2,*a8(OIMG),L + + move *a2(ICMAP),a0,L ;Get *palette + calla pal_getf + move a0,*a8(OPAL),L ;Set palette & constant + + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + move *a2(IANIOFFX),*a8(ODXOFF) + move *a2(IANIOFFY),*a8(ODYOFF) + + movb *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + + +;; callr sp_animate + +; move *a13(SP_LIFESPAN),a0 +; dec a0 +; jrz #die +; move a0,*a13(SP_LIFESPAN) + +; move *a13(SP_DIE),a0 +; jrz #lp1 + + move *a13(SP_OBJ_YPOS),a1,L + move *a13(SP_GROUND_Y),a14,L + cmp a1,a14 + jrle #lp1 + + move a14,*a13(SP_OBJ_YPOS),L + + movi flame_splat_anim,a0 + calla sp_change_anim + callr sp_update_pos + +#lp2 +; callr sp_update_pos + + SLEEPK 2 + + callr sp_animate + + move *a13(SP_DIE),a0 + jrz #lp2 + +#die + move *a13(SP_OBJ),a0,L + calla DELOBJ + +; move *a13(SP_SHADOW_OBJ),a0,L +; calla DELOBJ + + DIE + +#***************************************************************************** + + SUBR special_hit + + PUSH a13 + PUSH a8 + + move a6,a13 + + move a13,a0 + callr delete_special_objlist +;;; movi firesplat_anim,a0 +; movi piesplat_anim,a0 + movi spiritsplat_anim,a0 +;MJT Start + move *a13(SP_ID),a14 + jrz #reg + movi reapersplat_anim,a0 +#reg +;MJT End + callr sp_change_anim + + + PULL a13 + + move a13,a0 + callr delete_special_objlist +;;; movi firesplat_anim,a0 + +; movi piesplat_anim,a0 + movi spiritsplat_anim,a0 + callr sp_change_anim + + + .if 0 + PUSH a8 + move a6,a13 + movi firesplat_anim,a0 + callr sp_change_anim + move a13,a0 + callr delete_special_objlist + + PULL a13 + movi firesplat_anim,a0 + callr sp_change_anim + move a13,a0 + callr delete_special_objlist + .endif + + PULL a13 + rets + + +#***************************************************************************** + +sp_create_obj + + + clr a0 ;x pos + clr a1 ;y pos + movi PINSHAD1,a2 ;* image + movi 150,a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + move a4,*a13(SP_OBJCONTROL) + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + move a8,*a13(SP_OBJ),L + + rets + +#***************************************************************************** + +sp_create_shadow + + clr a0 ;x pos + clr a1 ;y pos + movi PINSHAD1,a2 ;* image + movi 149,a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + move a8,*a13(SP_SHADOW_OBJ),L + + rets + +#***************************************************************************** + +sp_velocity_add + + move *a13(SP_OBJ_XPOS),a1,L + move *a13(SP_OBJ_XVEL),a0,L + add a0,a1 + move a1,*a13(SP_OBJ_XPOS),L + + move *a13(SP_OBJ_YPOS),a1,L + move *a13(SP_OBJ_YVEL),a0,L + move *a13(SP_GRAVITY),a14,L + sub a14,a0 + move a0,*a13(SP_OBJ_YVEL),L + add a0,a1 + move a1,*a13(SP_OBJ_YPOS),L + + move *a13(SP_OBJ_ZPOS),a1,L + move *a13(SP_OBJ_ZVEL),a0,L + add a0,a1 + move a1,*a13(SP_OBJ_ZPOS),L + rets + + +#***************************************************************************** + +sp_standard_bounce + + move *a13(SP_OBJ_YVEL),a0,L + jrp #ok + + move *a13(SP_OBJ_YPOS),a1,L + move *a13(SP_GROUND_Y),a14,L + + cmp a1,a14 + jrle #ok + + move a14,*a13(SP_OBJ_YPOS),L + + sra 1,a0 + neg a0 + move a0,*a13(SP_OBJ_YVEL),L +#ok + rets + + +#***************************************************************************** + +sp_update_pos + + move *a13(SP_OBJ),a8,L + move *a13(SP_SHADOW_OBJ),a9,L + + move *a13(SP_OBJ_ZPOS),a0,L + ori [01000h,0],a0 + move *a13(SP_INRING),a14 + jrz #inring + cmpi [015ach,0],a0 + jrgt #inring + subi [01e5h,0],a0 ;below mat +#inring + move a0,*a8(OZVAL),L + move a0,*a9(OZVAL),L + + + move *a13(SP_OBJ_XPOS),*a8(OXVAL),L ;object + move *a13(SP_OBJ_XPOS),*a9(OXVAL),L ;shadow + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(SP_OBJ_ZPOSINT),a1 + mpyu a0,a1 + move a1,a2 + move *a13(SP_OBJ_YPOS),a0,L + sub a0,a1 + move a1,*a8(OYVAL),L + + move *a13(SP_GROUND_Y),a0,L + sub a0,a2 + move a2,*a9(OYVAL),L + + move *a9(OXPOS),a0 + andni 1,a0 + move @PCNT,a1 + andi 1,a1 + or a1,a0 + move *a9(OYPOS),a1 + andi 1,a1 + xor a1,a0 + move a0,*a9(OXPOS) ;shake shadow + + + move *a13(SP_OBJCONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + rets + + +#***************************************************************************** + + + SUBR sp_change_anim + + move a0,*a13(SP_ANIBASE),L + move a0,*a13(SP_ANIPC),L + movk 1,a0 + move a0,*a13(SP_ANICNT) + move *a13(SP_OBJ),a8,L + callr sp_animate + rets + + + +sp_animate + move *a13(SP_DIE),a0 + jrnz _exit + + move *a13(SP_ANICNT),a0 + dec a0 + move a0,*a13(SP_ANICNT) + jrgt _exit + +next_command + move *a13(SP_ANIPC),a4,L + move *a4+,a0 + jrn #command + + move a0,*a13(SP_ANICNT) + move *a4+,a2,L + + move *a8(OIMG),a1,L + move *a1(ICMAP),a1,L ;* old palette + + move a2,*a8(OIMG),L ;new image + + move *a2(ICMAP),a0,L ;Get *palette + cmp a0,a1 + jreq #no_change + +;do this only if palette has changed!!! + move *a2(ICMAP),a0,L ;Get *palette + calla pal_getf + move a0,*a8(OPAL),L ;Set palette & constant + +#no_change + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + move *a2(IANIOFFX),*a8(ODXOFF) + move *a2(IANIOFFY),*a8(ODYOFF) + + movb *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + +; setf 6,0,0 +; move a7,*a8(OCTRL) ;Write 6 low bits +; setf 16,1,0 + + move a4,*a13(SP_ANIPC),L + +_exit + rets + +#command + andi 0ffh,a0 + X32 a0 + addi #ani_commands,a0 + move *a0,a0,L + jump a0 + +#ani_commands + .long _asp_zip ;0 + .long _asp_end ;1 + .long _asp_die ;2 + .long _asp_repeat ;3 + .long _asp_goto ;4 + .long _asp_collbox ;5 + .long _asp_zerovels ;6 + .long _asp_add_yvel ;7 + .long _asp_setword ;8 + .long _asp_setlong ;9 + .long _asp_code ;10 + .long _asp_waitnegyvel ;11 + .long _asp_zeroyvel ;12 + .long _asp_waithitgnd ;13 + +#******** +_asp_zip ;0 + + move a4,*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_end ;1 + + move a4,*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_die ;2 + + movk 1,a0 + move a0,*a13(SP_DIE) + rets + +#******** +_asp_repeat ;3 + + move *a13(SP_ANIBASE),*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_goto ;4 + + move *a4(0),*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_collbox ;5 + + move a4,a14 + addi 6*10h,a14 ;6 words + move a14,*a13(SP_ANIPC),L + + move *a4(0),*a13(SP_XOFF) + move *a4(10h),*a13(SP_WIDTH) + + move *a4(20h),*a13(SP_YOFF) + move *a4(30h),*a13(SP_HEIGHT) + + move *a4(40h),*a13(SP_ZOFF) + move *a4(50h),*a13(SP_DEPTH) + + jruc next_command + +#******** +_asp_zerovels ;6 + + clr a0 + move a0,*a13(SP_OBJ_XVEL),L + move a0,*a13(SP_OBJ_YVEL),L + move a0,*a13(SP_OBJ_ZVEL),L + + move a4,*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_add_yvel ;7 + + move *a4+,a0,L + move a4,*a13(SP_ANIPC),L + + move *a13(SP_OBJ_YVEL),a1,L + add a0,a1 + move a1,*a13(SP_OBJ_YVEL),L + + jruc next_command + +#******** +_asp_setword ;8 + + STRUCT 0 + WORD #PDOFF + WORD #WORD + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a13(SP_ANIPC),L + + move *a4(#PDOFF),a0 + add a13,a0 + move *a4(#WORD),a1 + move a1,*a0 + + jruc next_command + + +#******** +_asp_setlong ;9 + + STRUCT 0 + WORD #PDOFF + LONG #LONG + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a13(SP_ANIPC),L + + move *a4(#PDOFF),a0 + add a13,a0 + move *a4(#LONG),a1,L + move a1,*a0,L + + jruc next_command + + +#******** +_asp_code ;10 + + move *a4+,a0,L + move a4,*a13(SP_ANIPC),L + call a0 + jruc next_command + +#******** +_asp_waitnegyvel ;11 + + move *a13(SP_OBJ_YVEL),a0,L + jrp #wait + + clr a0 + move a0,*a13(SP_OBJ_YVEL),L + + move a4,*a13(SP_ANIPC),L + jruc next_command + +#wait + movk 1,a0 + move a0,*a13(SP_ANICNT) ;# ticks to hold cur frame + rets + +#******** +_asp_zeroyvel ;12 + + clr a0 + move a0,*a13(SP_OBJ_YVEL),L + + move a4,*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_waithitgnd ;13 + + move *a13(SP_OBJ_YVEL),a0,L ;must have down velocity + jrp #no_gnd + + move *a13(SP_OBJ_YPOSINT),a0 + move *a13(SP_GROUND_Y+10h),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_gnd + + sll 16,a1 + move a1,*a13(SP_OBJ_YPOS),L + + move a4,*a13(SP_ANIPC),L + jruc next_command +#no_gnd + movk 1,a0 + move a0,*a13(SP_ANICNT) + rets + +#******** +blade_anim + WL 3,BLADE01 + WL 3,BLADE02 + WL 3,BLADE03 + WL 3,BLADE04 + WL 3,BLADE05 + WL 3,BLADE06 + WL 3,BLADE07 + WL 3,BLADE08 + WL 3,BLADE09 + WL 3,BLADE10 + .word ASP_REPEAT + +bladeR_anim + WL 3,BLADE04 + WL 3,BLADE03 + WL 3,BLADE02 + WL 3,BLADE01 + WL 3,BLADE10 + WL 3,BLADE09 + WL 3,BLADE08 + WL 3,BLADE07 + WL 3,BLADE06 + WL 3,BLADE05 + .word ASP_REPEAT + +star_anim + WL 3,STAR01 + WL 3,STAR02 + WL 3,STAR03 + WL 3,STAR04 + WL 3,STAR05 + WL 3,STAR06 + WL 3,STAR07 + WL 3,STAR08 + WL 3,STAR09 + WL 3,STAR10 + WL 3,STAR11 + WL 3,STAR12 + WL 3,STAR13 + WL 3,STAR14 + .word ASP_REPEAT + +dbell_anim + WL 3,DBELL01 + WL 3,DBELL02 + WL 3,DBELL03 + WL 3,DBELL04 + WL 3,DBELL05 + WL 3,DBELL06 + WL 3,DBELL07 + WL 3,DBELL08 + WL 3,DBELL09 + WL 3,DBELL10 + WL 3,DBELL11 + WL 3,DBELL12 + WL 3,DBELL13 + WL 3,DBELL14 + WL 3,DBELL15 + .word ASP_REPEAT + +lamb_anim + WL 3,LAMB01 + WL 3,LAMB02 + WL 3,LAMB03 + WL 3,LAMB04 + WL 3,LAMB05 + WL 3,LAMB06 + WL 3,LAMB07 + WL 3,LAMB08 + WL 3,LAMB09 + WL 3,LAMB10 + WL 3,LAMB11 + WL 3,LAMB12 + WL 3,LAMB13 + WL 3,LAMB14 + WL 3,LAMB15 + .word ASP_REPEAT + +fish1_anim + WL 2,FISHF01 + WL 2,FISHF02 + WL 2,FISHF03 + WL 2,FISHF04 + WL 2,FISHF05 + WL 2,FISHF04 + WL 2,FISHF03 + WL 2,FISHF02 + .word ASP_REPEAT + +fish2_anim + WL 3,FISHT01 + WL 3,FISHT02 + WL 3,FISHT03 + WL 3,FISHT04 + WL 3,FISHT05 + WL 3,FISHT06 + WL 3,FISHT07 + WL 3,FISHT08 + WL 3,FISHT09 + WL 3,FISHT10 + WL 3,FISHT11 + WL 3,FISHT12 + WL 3,FISHT13 + WL 3,FISHT14 + WL 3,FISHT15 + .word ASP_REPEAT + +#******* +bat_anim + WWL ASP_SETLONG,SP_HITGND_CODE,#bat_bounce + .word ASP_SETWORD,SP_LIFESPAN,150 + WL ASP_CODE,#choose_anim + +batLR_anim + WL ASP_CODE,#fliponx + WL 1,BATSD01 + .word ASP_WAITHITGND + WWL ASP_SETLONG,SP_GRAVITY,04000h + WL ASP_CODE,#set_yvel +#bl1 + WL 2,BATSD01 + WL 7,BATSD02 + WL 2,BATSD03 + WL 2,BATSD04 + WL 2,BATSD05 + .word ASP_WAITNEGYVEL + WL ASP_ADD_YVEL,048000h + WL ASP_GOTO,#bl1 + +#fliponx + move *a13(SP_OBJ_XVEL),a0,L + jrp #noflip + move *a13(SP_OBJCONTROL),a0 + xori M_FLIPH,a0 + move a0,*a13(SP_OBJCONTROL) +#noflip + rets + +#choose_anim + move *a13(SP_OBJ_YVEL),a0,L + sra 1,a0 + move a0,*a13(SP_OBJ_YVEL),L + + move *a13(SP_OBJ_XVEL),a0,L + abs a0 + cmpi 0c000h,a0 + jrgt #fall_through ;to left/right bat + + movi batU_anim,a0 + move a0,*a13(SP_ANIPC),L + +#fall_through + rets + + + + +batU_anim + WL 1,BATBK01 + .word ASP_WAITHITGND + WWL ASP_SETLONG,SP_GRAVITY,04000h + WL ASP_CODE,#set_yvel +#bl2 + WL 2,BATBK01 + WL 7,BATBK02 + WL 2,BATBK03 + WL 2,BATBK04 + WL 2,BATBK05 + .word ASP_WAITNEGYVEL + WL ASP_ADD_YVEL,048000h + WL ASP_GOTO,#bl2 + +#set_yvel + movi 4000h,a0 + calla RNDRNGS + addi 048000h,a0 + move a0,*a13(SP_OBJ_YVEL),L + + rets + + +#bat_bounce + move *a13(SP_OBJ_YVEL),a0,L + jrp #ok + + move *a13(SP_OBJ_YPOS),a1,L + move *a13(SP_GROUND_Y),a14,L + + cmp a1,a14 + jrle #ok + + move a14,*a13(SP_OBJ_YPOS),L + + clr a0 + move a0,*a13(SP_OBJ_YVEL),L +#ok + + rets + + + +#******* +skull_anim + WL 3,SKULL01 + WL 3,SKULL02 + WL 3,SKULL03 + WL 3,SKULL04 + WL 3,SKULL05 + WL 3,SKULL06 + WL 3,SKULL07 + WL 3,SKULL08 + WL 3,SKULL09 + WL 3,SKULL10 + WL 3,SKULL11 + WL 3,SKULL12 + WL 3,SKULL13 + .word ASP_REPEAT + +bone_anim + WL 3,BONE01 + WL 3,BONE02 + WL 3,BONE03 + WL 3,BONE04 + WL 3,BONE05 + WL 3,BONE06 + WL 3,BONE07 + WL 3,BONE08 + WL 3,BONE09 + WL 3,BONE10 + WL 3,BONE11 + WL 3,BONE12 + WL 3,BONE13 + WL 3,BONE14 + WL 3,BONE15 + .word ASP_REPEAT + +bone2_anim + WL ASP_CODE,#choose_anim + +boneR_anim + WL 2,BONEB15 + WL 2,BONEB14 + WL 2,BONEB13 + WL 2,BONEB12 + WL 2,BONEB11 + WL 2,BONEB10 + WL 2,BONEB09 + WL 2,BONEB08 + WL 2,BONEB07 + WL 2,BONEB06 + WL 2,BONEB05 + WL 2,BONEB04 + WL 2,BONEB03 + WL 2,BONEB02 + WL 2,BONEB01 + .word ASP_REPEAT + +#choose_anim + move *a13(SP_OBJ_XVEL),a0,L + jrp #fall_through + + movi boneL_anim,a0 + move a0,*a13(SP_ANIPC),L + +#fall_through + rets + +boneL_anim + WL 2,BONEB01 + WL 2,BONEB02 + WL 2,BONEB03 + WL 2,BONEB04 + WL 2,BONEB05 + WL 2,BONEB06 + WL 2,BONEB07 + WL 2,BONEB08 + WL 2,BONEB09 + WL 2,BONEB10 + WL 2,BONEB11 + WL 2,BONEB12 + WL 2,BONEB13 + WL 2,BONEB14 + WL 2,BONEB15 + .word ASP_REPEAT + + +#******* + +heart_anim + WL 3,HART01 + WL 3,HART02 + WL 3,HART03 + WL 3,HART04 + WL 3,HART05 + WL 3,HART06 + WL 3,HART07 + WL 3,HART08 + WL 3,HART09 + WL 3,HART10 + WL 3,HART11 + WL 3,HART12 + WL 3,HART13 + WL 3,HART14 + WL 3,HART15 + .word ASP_REPEAT + + +tombbit_anim + WL 4,TPIE01 + WL 4,TPIE02 + WL 4,TPIE03 + WL 4,TPIE04 + WL 4,TPIE05 + WL 4,TPIE06 + WL 4,TPIE07 + WL 4,TPIE08 + .word ASP_REPEAT + +flame_splat_anim + WL 4,BLDHIT1 + WL 4,BLDHIT2 + WL 4,BLDHIT3 + WL 4,BLDHIT4 + .word ASP_DIE + WL 8,FLAMEA08 + WL 8,FLAMEA09 + WL 8,FLAMEA10 + .word ASP_DIE + + + +#misc_anims + .long ball_anim + .long turkey_anim + .long fireball_anim + +ball_anim + WL 3,BALL01 + WL 3,BALL02 + WL 3,BALL03 + WL 3,BALL04 + WL 3,BALL05 + WL 3,BALL06 + WL 3,BALL07 + WL 3,BALL08 + WL 3,BALL09 + WL 3,BALL10 + WL 3,BALL11 + WL 3,BALL12 + WL 3,BALL13 + WL 3,BALL14 + WL 3,BALL15 + .word ASP_REPEAT + +turkey_anim + WL 8,FLAMEA01 + WL 8,FLAMEA02 + WL 8,FLAMEA03 + WL 8,FLAMEA04 + WL 8,FLAMEA05 + WL 8,FLAMEA06 + WL 8,FLAMEA07 + .word ASP_REPEAT + + + WL 3,TURKEY1 + WL 3,TURKEY2 + WL 3,TURKEY3 + WL 3,TURKEY4 + WL 3,TURKEY5 + WL 3,TURKEY6 + WL 3,TURKEY7 + WL 3,TURKEY8 + .word ASP_REPEAT + +fireball_anim + + .word ASP_COLLBOX,-10,20,-8,16,-10,20 ;xoff,width,yoff,height,zoff,depth +#lp + WL 4,FIREBALL1 + WL 4,FIREBALL2 + WL 4,FIREBALL3 + WL 4,FIREBALL4 + WL 4,FIREBALL5 + WL 4,FIREBALL6 + WL ASP_GOTO,#lp + +spirit_anim + + .word ASP_COLLBOX,0,10,-8,16,-10,20 ;xoff,width,yoff,height,zoff,depth +#lp2 + WL 3,GHOST01 + WL 3,GHOST02 + WL 3,GHOST03 + WL 3,GHOST04 + WL 3,GHOST05 + WL ASP_GOTO,#lp2 + +;MJT Start +reaper_grow + + .word ASP_COLLBOX,0,10,-8,16,-1000,20 ;xoff,width,yoff,height,zoff,depth + WL 1,RPR01 + WL 1,RPR02 + WL 1,RPR03 + WL 1,RPR04 + WL 1,RPR05 + WL ASP_CODE,#set_xv +reaper_anim + WL 3,REPRFL01 + WL 3,REPRFL02 + .word ASP_COLLBOX,0,10,-8,16,-10,20 ;xoff,width,yoff,height,zoff,depth +#lp3 + WL 3,REPRFL03 + WL 3,REPRFL04 + WL 3,REPRFL05 + WL 3,REPRFL06 + WL 3,REPRFL07 + WL 3,REPRFL08 + WL 3,REPRFL01 + WL 3,REPRFL02 + WL ASP_GOTO,#lp3 +#set_xv + movi [7,0],a0 ;x-vel + move *a13(SP_OBJCONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a0 +#no_flip + move a0,*a13(SP_OBJ_XVEL),L + rets + +;MJT End + SUBR spiritsplat_anim + + .word ASP_ZEROVELS + WL 3,GHOHIT01 + WL 3,GHOHIT02 + WL 3,GHOHIT03 + WL 3,GHOHIT04 + WL 3,GHOHIT05 + WL 3,GHOHIT06 + WL 3,GHOHIT07 + WL 3,GHOHIT08 + WL 3,GHOHIT09 + WL 3,GHOHIT10 + WL 3,GHOHIT11 + WL 3,GHOHIT12 + WL 3,GHOHIT13 + WL 3,GHOHIT14 + WL 3,GHOHIT15 + WL 3,GHOHIT16 + .word ASP_DIE + +;MJT Start + SUBR reapersplat_anim + + .word ASP_ZEROVELS + WL 3,REPRMS01 + WL 3,REPRMS02 + WL 3,REPRMS03 + WL 3,REPRMS04 + WL 3,REPRMS05 + WL 3,REPRMS06 + WL 3,REPRMS07 + .word ASP_DIE +;MJT End + + + SUBR firesplat_anim + + .word ASP_ZEROVELS + WL 4,CLOBHIT01 + WL 4,CLOBHIT02 + WL 4,CLOBHIT03 + WL 4,CLOBHIT04 + .word ASP_DIE + +#******** + +pie_anim + + .word ASP_COLLBOX,-10,20,-8,16,-10,20 ;xoff,width,yoff,height,zoff,depth +#lp +;;; WL 99,PIE03 + + WL 4,BGBAT01 + WL 4,BGBAT02 + WL 4,BGBAT03 + WL 4,BGBAT04 + WL 4,BGBAT05 + WL ASP_GOTO,#lp + + + SUBR piesplat_anim + + .word ASP_ZEROVELS + WL 4,PIE05 + WL 4,PIE06 + WL 4,PIE07 + WL 4,PIE08 + .word ASP_DIE + +#******** + +pin_animC1 + WL 1,PIN15 + WL 1,PIN14 + WL 1,PIN13 + WL 1,PIN12 + WL 1,PIN11 + WL 1,PIN10 + WL 1,PIN09 + WL 1,PIN08 + WL 1,PIN07 + WL 1,PIN06 + WL 1,PIN05 + WL 1,PIN04 + WL 1,PIN03 + WL 1,PIN02 + WL 1,PIN01 + .word ASP_REPEAT + +pin_animC2 + WL 2,PIN15 + WL 2,PIN14 + WL 2,PIN13 + WL 2,PIN12 + WL 2,PIN11 + WL 2,PIN10 + WL 2,PIN09 + WL 2,PIN08 + WL 2,PIN07 + WL 2,PIN06 + WL 2,PIN05 + WL 2,PIN04 + WL 2,PIN03 + WL 2,PIN02 + WL 2,PIN01 + .word ASP_REPEAT + +pin_animC3 + WL 3,PIN15 + WL 3,PIN14 + WL 3,PIN13 + WL 3,PIN12 + WL 3,PIN11 + WL 3,PIN10 + WL 3,PIN09 + WL 3,PIN08 + WL 3,PIN07 + WL 3,PIN06 + WL 3,PIN05 + WL 3,PIN04 + WL 3,PIN03 + WL 3,PIN02 + WL 3,PIN01 + .word ASP_REPEAT + +pin_animA1 + WL 1,PIN01 + WL 1,PIN02 + WL 1,PIN03 + WL 1,PIN04 + WL 1,PIN05 + WL 1,PIN06 + WL 1,PIN07 + WL 1,PIN08 + WL 1,PIN09 + WL 1,PIN10 + WL 1,PIN11 + WL 1,PIN12 + WL 1,PIN13 + WL 1,PIN14 + WL 1,PIN15 + .word ASP_REPEAT + +pin_animA2 + WL 2,PIN01 + WL 2,PIN02 + WL 2,PIN03 + WL 2,PIN04 + WL 2,PIN05 + WL 2,PIN06 + WL 2,PIN07 + WL 2,PIN08 + WL 2,PIN09 + WL 2,PIN10 + WL 2,PIN11 + WL 2,PIN12 + WL 2,PIN13 + WL 2,PIN14 + WL 2,PIN15 + .word ASP_REPEAT + +pin_animA3 + WL 3,PIN01 + WL 3,PIN02 + WL 3,PIN03 + WL 3,PIN04 + WL 3,PIN05 + WL 3,PIN06 + WL 3,PIN07 + WL 3,PIN08 + WL 3,PIN09 + WL 3,PIN10 + WL 3,PIN11 + WL 3,PIN12 + WL 3,PIN13 + WL 3,PIN14 + WL 3,PIN15 + .word ASP_REPEAT + + +#***************************************************************************** +* +* args: +* a0 = X-VEL (LONG) +* a1 = Y-VEL (LONG) +* +* ret: +* a0 = angle 0=0d(U) 9=45d(UR) 18=90d(R) 27=135d(DR) 36=180d(D) +* + + SUBR calc_veldir + + abs a0 + + move a1,a14 + abs a14 + or a0,a14 + jrz #done + + movi #posx_posy,a2 + + move a1,a1 ;y-vel + jrp #pos_yvel + + movi #posx_negy,a2 + +#pos_yvel + abs a1 + + move a14,a3 ;x+y vel < 8 ? + srl 16+3,a3 + jrz #not_max + +#ovr + srl 1,a0 + srl 1,a1 + srl 1,a3 + jrnz #ovr ;< 8 now? + jruc #range_ok + +#not_max + btst 18,a14 ;bit 2 of int set (=4) ? + jrnz #range_ok + +#undr + sll 1,a0 + sll 1,a1 + sll 1,a14 + btst 18,a14 ;bit 2 of int set (=4) ? + jrz #undr + + +#range_ok +;; addi 08000h,a0 ;round up + srl 16,a0 ;x + +;; addi 08000h,a1 ;round up + srl 16,a1 ;y + +;#again +; cmpi 8,a0 ;do this before losing fractional +; jrge #tohi +; cmpi 8,a1 +; jrlt #ok1 +; +;#tohi +; srl 1,a0 +; srl 1,a1 +; jruc #again +;#ok1 + + X8 a1 ;y*8 + add a1,a0 ;+x + X16 a0 ;16 bit word + add a2,a0 + move *a0,a0 + +#done + rets + +#posx_posy +;X 0 1 2 3 4 5 6 7 + + .word 18,18,18,18,18,18,18,18 ;0 + + .word 13,09,13,14,15,16,16,16 ;1 + + .word 09,05,09,11,13,14,14,15 ;2 + + .word 04,04,07,09,11,12,13,13 ;3 + + .word 00,03,05,07,09,10,11,12 ;4 + + .word 00,02,04,06,08,09,10,11 ;5 + + .word 00,02,04,06,07,08,09,10 ;6 + + .word 00,02,03,05,06,07,08,09 ;7 Y + + +#posx_negy +;X 0 1 2 3 4 5 6 7 + + .word 18,18,18,18,18,18,18,18 ; 0 + + .word 23,27,23,22,21,20,20,20 ;-1 + + .word 28,31,27,25,23,22,22,21 ;-2 + + .word 33,32,29,27,25,24,23,23 ;-3 + + .word 36,33,31,29,27,26,25,24 ;-4 + + .word 36,34,32,30,28,27,26,25 ;-5 + + .word 36,34,32,31,29,28,27,26 ;-6 + + .word 36,34,33,31,30,29,28,27 ;-7 Y + + +#***************************************************************************** + +flame_table_A + + .long BLOOD01 ;0 ( 0d UP) + .long BLOOD01 ;1 ( 5d) + .long BLOOD01 ;2 ( 10d) + .long BLOOD01 ;3 ( 15d) + .long BLOOD02 ;4 ( 20d) + .long BLOOD02 ;5 ( 25d) + .long BLOOD02 ;6 ( 30d) + .long BLOOD03 ;7 ( 35d) + .long BLOOD03 ;8 ( 40d) + .long BLOOD03 ;9 ( 45d UP-RIGHT) + .long BLOOD03 ;10 ( 50d) + .long BLOOD04 ;11 ( 55d) + .long BLOOD04 ;12 ( 60d) + .long BLOOD04 ;13 ( 65d) + .long BLOOD05 ;14 ( 70d) + .long BLOOD05 ;15 ( 75d) + .long BLOOD05 ;16 ( 80d) + .long BLOOD06 ;17 ( 85d) + .long BLOOD06 ;18 ( 90d RIGHT) + + .long BLOOD06 ;19 (95d) + .long BLOOD06 ;20 (100d) + .long BLOOD07 ;21 (105d) + .long BLOOD07 ;22 (110d) + .long BLOOD07 ;23 (115d) + .long BLOOD08 ;24 (120d) + .long BLOOD08 ;25 (125d) + .long BLOOD08 ;26 (130d) + .long BLOOD08 ;27 (135d DOWN-RIGHT) + .long BLOOD09 ;28 (140d) + .long BLOOD09 ;29 (145d) + .long BLOOD09 ;30 (150d) + .long BLOOD10 ;31 (155d) + .long BLOOD10 ;32 (160d) + .long BLOOD10 ;33 (165d) + .long BLOOD11 ;34 (170d) + .long BLOOD11 ;35 (175d) + .long BLOOD11 ;36 (180d DOWN) + +#***************************************************************************** + + STRUCT 0 + + WORD DB_LOOP + WORD DB_COUNT + WORD DB_SLEEP + + WORD DB_RXOFF + WORD DB_RYOFF + WORD DB_RZOFF + + LONG DB_XVEL + LONG DB_YVEL + LONG DB_ZVEL + + LONG DB_RXVEL + LONG DB_RYVEL + LONG DB_RZVEL + + LONG DB_GRAVITY + + WORD DB_LIFESPAN + WORD DB_RLIFESPAN + + + STRUCTPD + WORD #ANIM + +; a8 = * arguments +; a11 = * wrestler proc + + SUBR react_debris + + + move *a8(0),a0 ;%chance of generating debris + calla RNDPER + jrls #exit + + move *a8(010h),a10 ;table index + X32 a10 + addi #debris_table,a10 + move *a10,a10,L + + addi 20h,a8 ;* x,y,z off + + move *a10(DB_LOOP),a9 ;loop count +#lp1 + move *a10(DB_COUNT),a0 ;# per loop +#lp2 + + PUSH a0 + movi 7,a0 + calla RNDRNG0 + X32 a0 + + move *a11(WRESTLERNUM),a14 +;MJT Start + cmpi 2,a14 + jrnz #not_und + move *a11(ANIBASE),a1,L +;MJT Start 2 + .ref und_4_pin2_anim + cmpi und_4_pin2_anim,a1 +;MJT End 2 + jrnz #not_und + movi 8*32,a0 + +#not_und +;MJT End + X32 a14 + addi debris_anims,a14 + move *a14,a14,L + add a14,a0 + move *a0(0),*a13(#ANIM),L + + CREATE0 react_debris2 + + move *a13(#ANIM),*a0(SP_ANIMPTR),L ;&anim + PULL a0 + dsj a0,#lp2 + + move *a10(DB_SLEEP),a0 ;sleep cnt + jrz #skp + calla PRCSLP +#skp + dsj a9,#lp1 + +#exit + DIE + + + +#debris_table + .long #db0 + .long #db1 + .long #db2 + .long #db3 + .long #db4 + .long #db5 + .long #db6 +;MJT Start + .long #db7 +;MJT End + + +#db0 ;standing - hit to body 1 + .word 3,1,2 ;loop count, # per loop, sleep cnt + .word 0,20,0 ;random +/- x,y,z pos offs + .long -020000h,050000h, 000000h ;initial x,y,z vel + .long 018000h, 010000h, 010000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 60,5 ;lifespan, +/- rand + +#db1 ;onground - hit to body 1 + .word 2,2,4 ;loop count, # per loop, sleep cnt + .word 20,0,0 ;random +/- x,y,z pos offs + .long 000000h, 080000h, 000000h ;initial x,y,z vel + .long 020000h, 020000h, 020000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 70,5 ;lifespan, +/- rand + +#db2 ;standing - hit to head 1 + .word 2,1,3 ;loop count, # per loop, sleep cnt + .word 0,5,0 ;random +/- x,y,z pos offs + .long -030000h,050000h, 000000h ;initial x,y,z vel + .long 018000h, 010000h, 010000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 60,5 ;lifespan, +/- rand + +#db3 ;standing - hit to head 2 + .word 1,1,0 ;loop count, # per loop, sleep cnt + .word 0,5,0 ;random +/- x,y,z pos offs + .long -030000h,050000h, 000000h ;initial x,y,z vel + .long 018000h, 010000h, 010000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 60,5 ;lifespan, +/- rand + +#db4 ;Doink earslap squish + .word 2,3,2 ;loop count, # per loop, sleep cnt + .word 20,0,0 ;random +/- x,y,z pos offs + .long 000000h, 080000h, 000000h ;initial x,y,z vel + .long 020000h, 020000h, 020000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 70,5 ;lifespan, +/- rand + +#db5 ;BAM POGO head slammed into ground + .word 2,2,3 ;loop count, # per loop, sleep cnt + .word 10,10,0 ;random +/- x,y,z pos offs + .long 000000h, 080000h, 000000h ;initial x,y,z vel + .long 020000h, 020000h, 020000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 70,5 ;lifespan, +/- rand + +#db6 ;BAM BAM fire head butt - Comes from Bam Bam attack sequence! + .word 2,1,3 ;loop count, # per loop, sleep cnt + .word 0,5,0 ;random +/- x,y,z pos offs + .long -030000h,050000h, 000000h ;initial x,y,z vel + .long 018000h, 010000h, 010000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 60,5 ;lifespan, +/- rand + +;MJT Start +#db7 ;onground - Taker pins me with hand + .word 8,2,4 ;loop count, # per loop, sleep cnt + .word 15,0,0 ;random +/- x,y,z pos offs + .long 000000h, 040000h, 000000h ;initial x,y,z vel + .long 020000h, 020000h, 020000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 70,5 ;lifespan, +/- rand +;MJT End + + +#***************************************************************************** +; a8 = * x,y,z off +; a10 = * debris table +; a11 = * wrestler proc + + SUBR react_debris2 + + move a11,*a13(SP_WRESPROC),L + move *a11(PLYR_SIDE),*a13(SP_PLYR_SIDE) + + + + move *a10(DB_RXOFF),a0 ;+/- xoff + jrz #skp0 + calla RNDRNGS +#skp0 move *a8,a1 ;xoff + add a0,a1 + + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip1 + neg a1 +#no_flip1 + move *a11(OBJ_XPOSINT),a0 + add a1,a0 + sll 16,a0 + move a0,*a13(SP_OBJ_XPOS),L + + + move *a10(DB_RYOFF),a0 ;+/- yoff + jrz #skp1 + calla RNDRNGS +#skp1 move *a8(010h),a1 ;yoff + add a0,a1 + move *a11(OBJ_YPOSINT),a0 + add a1,a0 + sll 16,a0 + move a0,*a13(SP_OBJ_YPOS),L + + + move *a10(DB_RZOFF),a0 ;+/- zoff + jrz #skp2 + calla RNDRNGS +#skp2 move *a8(020h),a1 ;zoff + add a0,a1 + move *a11(OBJ_ZPOSINT),a0 + add a1,a0 + sll 16,a0 + move a0,*a13(SP_OBJ_ZPOS),L + + + move *a11(INRING),*a13(SP_INRING) + + + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_SHADOW_OBJ),L + + move *a10(DB_GRAVITY),*a13(SP_GRAVITY),L + + callr sp_create_obj + callr sp_create_shadow + + move *a13(SP_OBJ),a8,L + + + move *a10(DB_RXVEL),a0,L + jrz #skp3 + calla RNDRNGS +#skp3 move *a10(DB_XVEL),a1,L + add a0,a1 + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip2 ;flip relative + neg a1 +#no_flip2 + move a1,*a13(SP_OBJ_XVEL),L + + + move *a10(DB_RZVEL),a0,L + jrz #skp4 + calla RNDRNGS +#skp4 move *a10(DB_ZVEL),a1,L + add a0,a1 + move a1,*a13(SP_OBJ_ZVEL),L + + + move *a10(DB_RYVEL),a0,L + jrz #skp5 + calla RNDRNGS +#skp5 move *a10(DB_YVEL),a1,L + add a0,a1 + move a1,*a13(SP_OBJ_YVEL),L + + + movi sp_standard_bounce,a0 + move a0,*a13(SP_HITGND_CODE),L + + move *a13(SP_OBJ),a8,L + + clr a0 + move a0,*a13(SP_DIE) + + move *a10(DB_RLIFESPAN),a0 + jrz #skp6 + calla RNDRNGS +#skp6 move *a10(DB_LIFESPAN),a1 + add a0,a1 + move a1,*a13(SP_LIFESPAN) + + move *a13(SP_ANIMPTR),a0,L ;& anim + calla sp_change_anim + +#lp + callr sp_velocity_add + + move *a13(SP_HITGND_CODE),a0,L + call a0 + callr sp_update_pos + + SLEEP 1 + + callr sp_animate + + move *a13(SP_LIFESPAN),a0 + dec a0 + jrz #die + move a0,*a13(SP_LIFESPAN) + + move *a13(SP_DIE),a0 + jrz #lp + +#die + move *a13(SP_OBJ),a0,L + calla DELOBJ + + move *a13(SP_SHADOW_OBJ),a0,L + calla DELOBJ + + DIE + + +#pin_anims + .long pin_animC1 ;0 + .long pin_animC2 ;1 + .long pin_animC2 ;2 + .long pin_animC3 ;3 + .long pin_animC3 ;4 + .long pin_animC2 ;5 + .long pin_animC2 ;6 + .long pin_animC1 ;7 + + .long pin_animA1 ;0 + .long pin_animA2 ;1 + .long pin_animA2 ;2 + .long pin_animA3 ;3 + .long pin_animA3 ;4 + .long pin_animA2 ;5 + .long pin_animA2 ;6 + .long pin_animA1 ;7 + + + + +debris_anims + .long #bret_debris_anims ;0 + .long #razor_debris_anims ;1 + .long #taker_debris_anims ;2 + .long #yoko_debris_anims ;3 + .long #shawn_debris_anims ;4 + .long #bam_debris_anims ;5 + .long #doink_debris_anims ;6 + .long #doink_debris_anims ;7 + .long #lex_debris_anims ;8 + +*** +#bret_debris_anims + .long heart_anim ;0 + .long heart_anim ;1 + .long heart_anim ;2 + .long heart_anim ;3 + .long heart_anim ;4 + .long heart_anim ;5 + .long heart_anim ;6 + .long heart_anim ;7 +*** +#razor_debris_anims + .long blade_anim ;0 + .long bladeR_anim ;1 + .long blade_anim ;2 + .long bladeR_anim ;3 + .long blade_anim ;4 + .long bladeR_anim ;5 + .long blade_anim ;6 + .long bladeR_anim ;7 +*** +#taker_debris_anims + .long bat_anim ;0 + .long bat_anim ;1 + .long skull_anim ;2 + .long bone_anim ;3 + .long bat_anim ;4 + .long bat_anim ;5 + .long skull_anim ;6 + .long bone2_anim ;7 +;MJT Start +;Special bats only for a pin + .long bat_anim ;8 +;MJT End +*** +#yoko_debris_anims + .long lamb_anim ;0 + .long fish1_anim ;1 + .long fish2_anim ;2 + .long lamb_anim ;3 + .long fish1_anim ;4 + .long fish2_anim ;5 + .long lamb_anim ;6 + .long fish1_anim ;7 +*** +#shawn_debris_anims +*** +#bam_debris_anims + +*** +#doink_debris_anims + .long pin_animC2 ;0 + .long pin_animA2 ;1 + .long pin_animC3 ;2 + .long ball_anim ;3 + .long ball_anim ;4 + .long pin_animA2 ;5 + .long pin_animC3 ;6 + .long pin_animA3 ;7 +*** +#lex_debris_anims + .long dbell_anim ;0 + .long star_anim ;1 + .long dbell_anim ;2 + .long star_anim ;3 + .long dbell_anim ;4 + .long star_anim ;5 + .long dbell_anim ;6 + .long star_anim ;7 + + + + +#***************************************************************************** + +; a8 = * arguments +; a11 = * wrestler proc + + + SUBR und_tombbits2 + +;MJT Start + movk 4,a0 +;MJT End +#lp2 + PUSHP a0 + movi #tmb_debris2,a10 + movi #xyz_off2,a8 + CREATE0 react_debris2 + movi tombbit_anim,a14 + move a14,*a0(SP_ANIMPTR),L ;&anim + + movi #tmb_debris2,a10 + movi #xyz_off2,a8 + CREATE0 react_debris2 + movi tombbit_anim,a14 + move a14,*a0(SP_ANIMPTR),L ;&anim + + SLEEPK 1 + PULLP a0 + dsj a0,#lp2 + + DIE + + + SUBR und_tombbits + +;MJT Start + movk 3,a0 +;MJT End +#lp + PUSHP a0 + movi #tmb_debris,a10 + movi #xyz_off,a8 + CREATE0 react_debris2 + movi tombbit_anim,a14 + move a14,*a0(SP_ANIMPTR),L ;&anim + + SLEEPK 1 + PULLP a0 + dsj a0,#lp + + DIE + + +#xyz_off .word 91,97,0 +#xyz_off2 .word 58,8,0 + +#tmb_debris + .word 2,3,2 ;loop count, # per loop, sleep cnt + .word 20,0,0 ;random +/- x,y,z pos offs + .long 000000h, 050000h, 000000h ;initial x,y,z vel + .long 020000h, 020000h, 020000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 60,5 ;lifespan, +/- rand + + +#tmb_debris2 + .word 3,3,1 ;loop count, # per loop, sleep cnt + .word 20,0,0 ;random +/- x,y,z pos offs + .long 000000h, 050000h, 000000h ;initial x,y,z vel + .long 010000h, 020000h, 010000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 30,5 ;lifespan, +/- rand + + +#***************************************************************************** + +BELOW .EQU 16*2 +NEXT .EQU 60*2 + + WLLW 0,0,0,NEXT +TEXT_LIST + WLLW TYPTEXT+1,#LINE1,0,BELOW + WLLW TYPTEXT+2,#LINE2,0,NEXT + WLLW TYPTEXT+3,#LINE3,0,BELOW + WLLW TYPTEXT+4,#LINE4,0,NEXT + WLLW TYPTEXT+5,#LINE5,0,BELOW + WLLW TYPTEXT+6,#LINE6,0,BELOW + WLLW TYPTEXT+7,#LINE7,0,BELOW + WLLW TYPTEXT+8,#LINE8,0,NEXT + WLLW TYPTEXT+9,#LINE9,0,BELOW + WLLW TYPTEXT+10,#LINE10,0,BELOW + WLLW TYPTEXT+11,#LINE10a,0,BELOW + WLLW TYPTEXT+12,#LINE11,0,NEXT + WLLW TYPTEXT+13,#LINE12,0,BELOW + WLLW TYPTEXT+14,#LINE13,0,NEXT + WLLW TYPTEXT+15,#LINE14,0,BELOW + WLLW TYPTEXT+16,#LINE15,0,BELOW + WLLW TYPTEXT+17,#LINE16,0,BELOW + WLLW TYPTEXT+18,#LINE17,0,180*2 + .WORD -1 + +#SETUP_LINE + JAM_STR osgemd_ascii,10,0,200,-30,RUBYPAL,print_string_C2 + +#LINE1 + .byte "HEAD HONCHO",0,0 + .even +#LINE2 + .byte "MARK TURMELL",0,0 + .even +#LINE3 + .byte "HEAD ARTIST AND MONKEY",0,0 + .even +#LINE4 + .byte "SAL DIVITA",0,0 + .even +#LINE5 + .byte "TALENTED CHIMPS",0,0 + .even +#LINE6 + .byte "JAMIE RIVETT",0,0 + .even +#LINE7 + .byte "JASON SKILES",0,0 + .even +#LINE8 + .byte "JAKE SIMPSON",0,0 + .even +#LINE9 + .byte "ART GRUNTS",0,0 + .even +#LINE10 + .byte "JOSH TSUI",0,0 + .even +#LINE10a + .byte "EUGENE GREER",0,0 + .even +#LINE11 + .byte "TONY GOSKIE",0,0 + .even +#LINE12 + .byte "DRUM BANGER",0,0 + .even +#LINE13 + .byte "CHRIS GRANNER",0,0 + .even +#LINE14 + .byte "THANKS FOR THE PRESSURE",0,0 + .even +#LINE15 + .byte "NEIL NICASTRO",0,0 + .even +#LINE16 + .byte "KEN FEDESNA",0,0 + .even +#LINE17 + .byte "PAUL DUSSAULT",0,0 + .even + +#hstd_mod + .long slateBMOD + .word 0,0 + .long 0 + +#title_mod + .long LAVAPGBMOD + .word 0,0 + .long 0 + +#LIST_START .equ PDATA+20H + +CREATE_TEXT_LINE + JSRP GENERIC_DISPLAY + MOVI TEXT_LIST,A8 + + MOVI #SETUP_LINE,A2 + CALLA setup_message +small_loop + MOVE *A8+,A2 + JRN LAST_ONE + MOVE A2,@mess_objid ;OBJ ID's for text + MOVI GOLD,A4 + MOVE *A8(-020H),A0 + CMPI NEXT,A0 + JRNE PAL_IS_SET + MOVI RUBYPAL,A4 +PAL_IS_SET + MOVE A4,@message_palette,L + MOVE *A8+,A4,L + CALLA print_string_C2 + MOVI 179,A9 + CREATE0 MAKE_TEXT_MOVE + + MOVE *A8+,A5,L + JRZ NO_NEW_BACK + CALLA CLEAR_BAKGROUND_OBJ +NO_NEW_BACK + MOVE *A8+,A0 + CALLA PRCSLP + jruc small_loop +LAST_ONE + RETP + +CLEAR_BAKGROUND_OBJ + PUSH A8 + CALLA ZERO_BITS + move @BAKLST,A0,L ;Null backgnd object list + MOVE *A0,A0,L + JRZ NO_DELETE_IT +MORE_TO_DELETE + MOVE *A0,A9,L + CALLA DELBOBJ + MOVE A9,A0 + JRNZ MORE_TO_DELETE +NO_DELETE_IT + MOVE A5,@BAKMODS,L + CALLA BGND_UD1 + PULL A8 + RETS + +MAKE_TEXT_MOVE + MOVE @mess_objid,A10 + CALLR FIND_ALL_TEXT +ROTATE_TEXT + SLEEP 2 + CALLR WORK_OUT_LINE_Y_AND_SCALE + CALLR PUT_IN_SCALE_AND_YPOS + DEC A9 + JRNN ROTATE_TEXT + MOVE A10,A0 + CALLA obj_del1c + DIE + +FIND_ALL_TEXT + MOVI OBJLST,A14 + MOVE A13,A2 + ADDI #LIST_START,A2 + JRUC PICK_UP_NEXT +CHECK_AGAINST_NEXT + MOVE *A14(OID),A1 + CMP A10,A1 + JRNE PICK_UP_NEXT + MOVE A14,*A2+,L + MOVE *A14(OXPOS),A1 + SUBI 200,A1 + MOVE A1,*A14(OMISC) +PICK_UP_NEXT + MOVE *A14,A14,L + JRNZ CHECK_AGAINST_NEXT + MOVE A14,*A2,L + RETS + +PUT_IN_SCALE_AND_YPOS + MOVE A13,A2 + ADDI #LIST_START,A2 +POS_NEXT_OBJ + MOVE *A2+,A8,L + JRZ REACHED_END_OF_LIST + MOVE A1,*A8(OYPOS) + MOVE A3,*A8(OSCALE+010H) + MOVE A4,*A8(OSCALE) + + MOVE *A8(OMISC),A7 + MOVI 10000H,A5 + DIVU A4,A5 + MPYU A5,A7 + SRL 8,A7 + + ADDI 200,A7 + MOVE A7,*A8(OXPOS) + + JRUC POS_NEXT_OBJ +REACHED_END_OF_LIST + RETS + + +;IN +;A9=ANGLE +;OUT +;A1=Y_COOR +;A3=Y SCALE +;A4=X SCALE + +Y_CENTER .EQU 070H + +WORK_OUT_LINE_Y_AND_SCALE + MOVE A9,A14 + SLL 4,A14 + ADDI SIN_TABLE,A14 + MOVE *A14,A1 + + NEG A1 + SLL 32-8,A1 + SRL 32-8,A1 + MOVE A1,A5 + + MOVI Y_CENTER,A3 + MPYS A3,A1 + SRL 8,A1 + + CMPI 90,A9 + JRLT Y_POSITION_CORRECT + MOVI Y_CENTER,A0 + SUB A1,A0 + MOVE A0,A1 + ADDI Y_CENTER,A1 +Y_POSITION_CORRECT + ADDI 10,A1 + + MOVI 10000H,A3 + DIVU A5,A3 + + CMPI 0B00H,A3 + JRLT NO_SCALE_PROBLEM + MOVI 0B00H,A3 +NO_SCALE_PROBLEM + + MOVE A3,A5 + SUBI 100H,A5 + MOVI 18H,A7 + DIVU A7,A5 + ADDI 100H,A5 + MOVE A5,A4 + + RETS + +;this sin table is in decimal and goes from sin(0) to sin (89). It has been +;multiplyed by 256 in order to get an interger figure for each value. To +;implement, use the angle as an offset into the table and then multiply +;radius by value gained. Then divide result by 256 (ie rotate right 8 bits) +;and you have your value. To use as a cosine table use offset as a negative +;offset (-1) and come in from end of table backwards.O.K.!!! +SIN_TABLE: + .WORD 255,255,255,255,254,254,253,253,252,252 + .WORD 251,250,249,248,247,246,244,243,242,240 + .WORD 238,237,235,233,232,230,228,226,223,221 + .WORD 219,217,214,212,209,207,204,201,198,196 + .WORD 193,190,187,184,181,177,174,171,167,164 + .WORD 161,157,154,150,146,143,139,135,131,128 + .WORD 124,120,116,112,108,104,100,95,91,87 + .WORD 83,79,74,70,66,61,57,53,48,44 + .WORD 40,35,31,26,22,17,13,8,4,1 + + .WORD 4,8,13,17,22,26,31,35,40 + .WORD 44,48,53,57,61,66,70,74,79,83 + .WORD 87,91,95,100,104,108,112,116,120,124 + .WORD 128,131,135,139,143,146,150,154,157,161 + .WORD 164,167,171,174,177,181,184,187,190,193 + .WORD 196,198,201,204,207,209,212,214,217,219 + .WORD 221,223,226,228,230,232,233,235,237,238 + .WORD 240,242,243,244,246,247,248,249,250,251 + .WORD 252,252,253,253,254,254,255,255,255,255 + .WORD 255 + + +****************************************************************************** + + + .end + + \ No newline at end of file diff --git a/BACKUP/SPECIAL.EQU b/BACKUP/SPECIAL.EQU new file mode 100644 index 0000000..2b4e2ce --- /dev/null +++ b/BACKUP/SPECIAL.EQU @@ -0,0 +1,102 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 11/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + + +****************************************************************************** +* +* SPECIAL OBJECT DATA STRUCTURE (CAN'T EXCEED 70-80 WORDS) + + STRUCTPD + WORD SP_OBJ_XPOS ;x-pos (world coordinates) + WORD SP_OBJ_XPOSINT + + WORD SP_OBJ_YPOS ;y-pos (world coordinates) + WORD SP_OBJ_YPOSINT + + WORD SP_OBJ_ZPOS ;z-pos (world coordinates) + WORD SP_OBJ_ZPOSINT + + APTR SP_NEXT + + WORD SP_OBJCONTROL + APTR SP_ANIBASE + APTR SP_ANIPC + WORD SP_ANICNT + + WORD SP_LIFESPAN + WORD SP_DIE + LONG SP_WRESPROC + + WORD SP_PLYR_SIDE + + APTR SP_OBJ + APTR SP_SHADOW_OBJ + + LONG SP_CUR_PAL + + WORD SP_XOFF + WORD SP_WIDTH + + WORD SP_YOFF + WORD SP_HEIGHT + + WORD SP_ZOFF + WORD SP_DEPTH + + WORD SP_COLLX1 + WORD SP_COLLX2 + + WORD SP_COLLY1 + WORD SP_COLLY2 + + WORD SP_COLLZ1 + WORD SP_COLLZ2 + + WORD SP_INRING + + LONG SP_GROUND_Y + + LONG SP_GRAVITY + + LONG SP_OBJ_XVEL + LONG SP_OBJ_YVEL + LONG SP_OBJ_ZVEL + + LONG SP_ANIMPTR + + LONG SP_HITGND_CODE + +;MJT Start + WORD SP_ID ;What am I? +;MJT End + + +****************************************************************************** +* +* SPECIAL OBJECT ANIMATION COMMANDS + +ASP_ZIP equ 0 + 8000h +ASP_END equ 1 + 8000h +ASP_DIE equ 2 + 8000h +ASP_REPEAT equ 3 + 8000h +ASP_GOTO equ 4 + 8000h +ASP_COLLBOX equ 5 + 8000h +ASP_ZEROVELS equ 6 + 8000h +ASP_ADD_YVEL equ 7 + 8000h +ASP_SETWORD equ 8 + 8000h +ASP_SETLONG equ 9 + 8000h +ASP_CODE equ 10 + 8000h +ASP_WAITNEGYVEL equ 11 + 8000h +ASP_ZEROYVEL equ 12 + 8000h +ASP_WAITHITGND equ 13 + 8000h + +****************************************************************************** +* END + \ No newline at end of file diff --git a/BACKUP/SQUARE.ASM b/BACKUP/SQUARE.ASM new file mode 100644 index 0000000..45ea428 --- /dev/null +++ b/BACKUP/SQUARE.ASM @@ -0,0 +1,560 @@ +****************************************************************************** +* +* Software: Jamie Rivett +* Initiated: 2/9/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +****************************************************************************** + + .file "square.asm" + .title "fast table lookup square root function" + .width 132 + .option b,d,l,t + .mnolist + + .include "sys.equ" + .include "macros.h" + + +****************************************************************************** +* +* ARGS: a0 = 32 bit value to square root +* max value = 262,143 (8192 x 32) +* +* RETS: a0 = 16 bit square root + + + SUBR square_root + + addi 16,a0 ;round up + srl 5,a0 ;/ 32 + cmpi 8192,a0 + jrlt #ok + movi 8192,a0 +#ok + sll 4,a0 ;x 16 + addi #sqroot_tab,a0 + move *a0,a0 + + rets + + +;8192 entries - square root of multiples of 32 +#sqroot_tab + .word 0,6,8,10,11,13,14,15,16,17,18,19,20,20,21,22 + .word 23,23,24,25,25,26,27,27,28,28,29,29,30,30,31,31 + .word 32,32,33,33,34,34,35,35,36,36,37,37,38,38,38,39 + .word 39,40,40,40,41,41,42,42,42,43,43,43,44,44,45,45 + .word 45,46,46,46,47,47,47,48,48,48,49,49,49,50,50,50 + .word 51,51,51,52,52,52,52,53,53,53,54,54,54,55,55,55 + .word 55,56,56,56,57,57,57,57,58,58,58,59,59,59,59,60 + .word 60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,64 + .word 64,64,64,65,65,65,65,66,66,66,66,67,67,67,67,68 + .word 68,68,68,69,69,69,69,70,70,70,70,70,71,71,71,71 + .word 72,72,72,72,72,73,73,73,73,74,74,74,74,74,75,75 + .word 75,75,75,76,76,76,76,77,77,77,77,77,78,78,78,78 + .word 78,79,79,79,79,79,80,80,80,80,80,81,81,81,81,81 + .word 82,82,82,82,82,83,83,83,83,83,84,84,84,84,84,84 + .word 85,85,85,85,85,86,86,86,86,86,87,87,87,87,87,87 + .word 88,88,88,88,88,89,89,89,89,89,89,90,90,90,90,90 + .word 91,91,91,91,91,91,92,92,92,92,92,92,93,93,93,93 + .word 93,93,94,94,94,94,94,94,95,95,95,95,95,95,96,96 + .word 96,96,96,96,97,97,97,97,97,97,98,98,98,98,98,98 + .word 99,99,99,99,99,99,100,100,100,100,100,100,101,101,101,101 + .word 101,101,102,102,102,102,102,102,102,103,103,103,103,103,103,104 + .word 104,104,104,104,104,104,105,105,105,105,105,105,106,106,106,106 + .word 106,106,106,107,107,107,107,107,107,107,108,108,108,108,108,108 + .word 109,109,109,109,109,109,109,110,110,110,110,110,110,110,111,111 + .word 111,111,111,111,111,112,112,112,112,112,112,112,113,113,113,113 + .word 113,113,113,114,114,114,114,114,114,114,115,115,115,115,115,115 + .word 115,116,116,116,116,116,116,116,116,117,117,117,117,117,117,117 + .word 118,118,118,118,118,118,118,119,119,119,119,119,119,119,119,120 + .word 120,120,120,120,120,120,121,121,121,121,121,121,121,121,122,122 + .word 122,122,122,122,122,123,123,123,123,123,123,123,123,124,124,124 + .word 124,124,124,124,124,125,125,125,125,125,125,125,125,126,126,126 + .word 126,126,126,126,126,127,127,127,127,127,127,127,127,128,128,128 + .word 128,128,128,128,128,129,129,129,129,129,129,129,129,130,130,130 + .word 130,130,130,130,130,131,131,131,131,131,131,131,131,132,132,132 + .word 132,132,132,132,132,133,133,133,133,133,133,133,133,134,134,134 + .word 134,134,134,134,134,134,135,135,135,135,135,135,135,135,136,136 + .word 136,136,136,136,136,136,136,137,137,137,137,137,137,137,137,138 + .word 138,138,138,138,138,138,138,138,139,139,139,139,139,139,139,139 + .word 139,140,140,140,140,140,140,140,140,141,141,141,141,141,141,141 + .word 141,141,142,142,142,142,142,142,142,142,142,143,143,143,143,143 + .word 143,143,143,143,144,144,144,144,144,144,144,144,144,145,145,145 + .word 145,145,145,145,145,145,146,146,146,146,146,146,146,146,146,147 + .word 147,147,147,147,147,147,147,147,148,148,148,148,148,148,148,148 + .word 148,148,149,149,149,149,149,149,149,149,149,150,150,150,150,150 + .word 150,150,150,150,151,151,151,151,151,151,151,151,151,151,152,152 + .word 152,152,152,152,152,152,152,153,153,153,153,153,153,153,153,153 + .word 153,154,154,154,154,154,154,154,154,154,155,155,155,155,155,155 + .word 155,155,155,155,156,156,156,156,156,156,156,156,156,156,157,157 + .word 157,157,157,157,157,157,157,157,158,158,158,158,158,158,158,158 + .word 158,158,159,159,159,159,159,159,159,159,159,159,160,160,160,160 + .word 160,160,160,160,160,160,161,161,161,161,161,161,161,161,161,161 + .word 162,162,162,162,162,162,162,162,162,162,163,163,163,163,163,163 + .word 163,163,163,163,164,164,164,164,164,164,164,164,164,164,165,165 + .word 165,165,165,165,165,165,165,165,166,166,166,166,166,166,166,166 + .word 166,166,166,167,167,167,167,167,167,167,167,167,167,168,168,168 + .word 168,168,168,168,168,168,168,168,169,169,169,169,169,169,169,169 + .word 169,169,170,170,170,170,170,170,170,170,170,170,170,171,171,171 + .word 171,171,171,171,171,171,171,171,172,172,172,172,172,172,172,172 + .word 172,172,173,173,173,173,173,173,173,173,173,173,173,174,174,174 + .word 174,174,174,174,174,174,174,174,175,175,175,175,175,175,175,175 + .word 175,175,175,176,176,176,176,176,176,176,176,176,176,176,177,177 + .word 177,177,177,177,177,177,177,177,177,178,178,178,178,178,178,178 + .word 178,178,178,178,179,179,179,179,179,179,179,179,179,179,179,180 + .word 180,180,180,180,180,180,180,180,180,180,180,181,181,181,181,181 + .word 181,181,181,181,181,181,182,182,182,182,182,182,182,182,182,182 + .word 182,183,183,183,183,183,183,183,183,183,183,183,183,184,184,184 + .word 184,184,184,184,184,184,184,184,185,185,185,185,185,185,185,185 + .word 185,185,185,185,186,186,186,186,186,186,186,186,186,186,186,187 + .word 187,187,187,187,187,187,187,187,187,187,187,188,188,188,188,188 + .word 188,188,188,188,188,188,188,189,189,189,189,189,189,189,189,189 + .word 189,189,189,190,190,190,190,190,190,190,190,190,190,190,190,191 + .word 191,191,191,191,191,191,191,191,191,191,191,192,192,192,192,192 + .word 192,192,192,192,192,192,192,193,193,193,193,193,193,193,193,193 + .word 193,193,193,194,194,194,194,194,194,194,194,194,194,194,194,195 + .word 195,195,195,195,195,195,195,195,195,195,195,196,196,196,196,196 + .word 196,196,196,196,196,196,196,197,197,197,197,197,197,197,197,197 + .word 197,197,197,198,198,198,198,198,198,198,198,198,198,198,198,198 + .word 199,199,199,199,199,199,199,199,199,199,199,199,200,200,200,200 + .word 200,200,200,200,200,200,200,200,200,201,201,201,201,201,201,201 + .word 201,201,201,201,201,202,202,202,202,202,202,202,202,202,202,202 + .word 202,202,203,203,203,203,203,203,203,203,203,203,203,203,203,204 + .word 204,204,204,204,204,204,204,204,204,204,204,205,205,205,205,205 + .word 205,205,205,205,205,205,205,205,206,206,206,206,206,206,206,206 + .word 206,206,206,206,206,207,207,207,207,207,207,207,207,207,207,207 + .word 207,207,208,208,208,208,208,208,208,208,208,208,208,208,208,209 + .word 209,209,209,209,209,209,209,209,209,209,209,209,210,210,210,210 + .word 210,210,210,210,210,210,210,210,210,211,211,211,211,211,211,211 + .word 211,211,211,211,211,211,212,212,212,212,212,212,212,212,212,212 + .word 212,212,212,212,213,213,213,213,213,213,213,213,213,213,213,213 + .word 213,214,214,214,214,214,214,214,214,214,214,214,214,214,215,215 + .word 215,215,215,215,215,215,215,215,215,215,215,215,216,216,216,216 + .word 216,216,216,216,216,216,216,216,216,217,217,217,217,217,217,217 + .word 217,217,217,217,217,217,217,218,218,218,218,218,218,218,218,218 + .word 218,218,218,218,219,219,219,219,219,219,219,219,219,219,219,219 + .word 219,219,220,220,220,220,220,220,220,220,220,220,220,220,220,220 + .word 221,221,221,221,221,221,221,221,221,221,221,221,221,221,222,222 + .word 222,222,222,222,222,222,222,222,222,222,222,222,223,223,223,223 + .word 223,223,223,223,223,223,223,223,223,223,224,224,224,224,224,224 + .word 224,224,224,224,224,224,224,224,225,225,225,225,225,225,225,225 + .word 225,225,225,225,225,225,226,226,226,226,226,226,226,226,226,226 + .word 226,226,226,226,227,227,227,227,227,227,227,227,227,227,227,227 + .word 227,227,228,228,228,228,228,228,228,228,228,228,228,228,228,228 + .word 229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,230 + .word 230,230,230,230,230,230,230,230,230,230,230,230,230,231,231,231 + .word 231,231,231,231,231,231,231,231,231,231,231,232,232,232,232,232 + .word 232,232,232,232,232,232,232,232,232,232,233,233,233,233,233,233 + .word 233,233,233,233,233,233,233,233,234,234,234,234,234,234,234,234 + .word 234,234,234,234,234,234,234,235,235,235,235,235,235,235,235,235 + .word 235,235,235,235,235,235,236,236,236,236,236,236,236,236,236,236 + .word 236,236,236,236,237,237,237,237,237,237,237,237,237,237,237,237 + .word 237,237,237,238,238,238,238,238,238,238,238,238,238,238,238,238 + .word 238,238,239,239,239,239,239,239,239,239,239,239,239,239,239,239 + .word 239,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240 + .word 241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,242 + .word 242,242,242,242,242,242,242,242,242,242,242,242,242,242,243,243 + .word 243,243,243,243,243,243,243,243,243,243,243,243,243,244,244,244 + .word 244,244,244,244,244,244,244,244,244,244,244,244,244,245,245,245 + .word 245,245,245,245,245,245,245,245,245,245,245,245,246,246,246,246 + .word 246,246,246,246,246,246,246,246,246,246,246,247,247,247,247,247 + .word 247,247,247,247,247,247,247,247,247,247,247,248,248,248,248,248 + .word 248,248,248,248,248,248,248,248,248,248,249,249,249,249,249,249 + .word 249,249,249,249,249,249,249,249,249,249,250,250,250,250,250,250 + .word 250,250,250,250,250,250,250,250,250,251,251,251,251,251,251,251 + .word 251,251,251,251,251,251,251,251,251,252,252,252,252,252,252,252 + .word 252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253 + .word 253,253,253,253,253,253,253,253,253,254,254,254,254,254,254,254 + .word 254,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255 + .word 255,255,255,255,255,255,255,255,255,256,256,256,256,256,256,256 + .word 256,256,256,256,256,256,256,256,256,257,257,257,257,257,257,257 + .word 257,257,257,257,257,257,257,257,257,258,258,258,258,258,258,258 + .word 258,258,258,258,258,258,258,258,258,259,259,259,259,259,259,259 + .word 259,259,259,259,259,259,259,259,259,260,260,260,260,260,260,260 + .word 260,260,260,260,260,260,260,260,260,261,261,261,261,261,261,261 + .word 261,261,261,261,261,261,261,261,261,262,262,262,262,262,262,262 + .word 262,262,262,262,262,262,262,262,262,262,263,263,263,263,263,263 + .word 263,263,263,263,263,263,263,263,263,263,264,264,264,264,264,264 + .word 264,264,264,264,264,264,264,264,264,264,264,265,265,265,265,265 + .word 265,265,265,265,265,265,265,265,265,265,265,266,266,266,266,266 + .word 266,266,266,266,266,266,266,266,266,266,266,266,267,267,267,267 + .word 267,267,267,267,267,267,267,267,267,267,267,267,267,268,268,268 + .word 268,268,268,268,268,268,268,268,268,268,268,268,268,269,269,269 + .word 269,269,269,269,269,269,269,269,269,269,269,269,269,269,270,270 + .word 270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,271 + .word 271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271 + .word 272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272 + .word 272,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273 + .word 273,273,274,274,274,274,274,274,274,274,274,274,274,274,274,274 + .word 274,274,274,275,275,275,275,275,275,275,275,275,275,275,275,275 + .word 275,275,275,275,276,276,276,276,276,276,276,276,276,276,276,276 + .word 276,276,276,276,276,276,277,277,277,277,277,277,277,277,277,277 + .word 277,277,277,277,277,277,277,278,278,278,278,278,278,278,278,278 + .word 278,278,278,278,278,278,278,278,279,279,279,279,279,279,279,279 + .word 279,279,279,279,279,279,279,279,279,279,280,280,280,280,280,280 + .word 280,280,280,280,280,280,280,280,280,280,280,281,281,281,281,281 + .word 281,281,281,281,281,281,281,281,281,281,281,281,281,282,282,282 + .word 282,282,282,282,282,282,282,282,282,282,282,282,282,282,283,283 + .word 283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283 + .word 284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284 + .word 284,284,285,285,285,285,285,285,285,285,285,285,285,285,285,285 + .word 285,285,285,285,286,286,286,286,286,286,286,286,286,286,286,286 + .word 286,286,286,286,286,286,287,287,287,287,287,287,287,287,287,287 + .word 287,287,287,287,287,287,287,287,288,288,288,288,288,288,288,288 + .word 288,288,288,288,288,288,288,288,288,288,289,289,289,289,289,289 + .word 289,289,289,289,289,289,289,289,289,289,289,289,290,290,290,290 + .word 290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,291 + .word 291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291 + .word 292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292 + .word 292,292,293,293,293,293,293,293,293,293,293,293,293,293,293,293 + .word 293,293,293,293,294,294,294,294,294,294,294,294,294,294,294,294 + .word 294,294,294,294,294,294,294,295,295,295,295,295,295,295,295,295 + .word 295,295,295,295,295,295,295,295,295,296,296,296,296,296,296,296 + .word 296,296,296,296,296,296,296,296,296,296,296,296,297,297,297,297 + .word 297,297,297,297,297,297,297,297,297,297,297,297,297,297,298,298 + .word 298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298 + .word 298,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299 + .word 299,299,299,299,300,300,300,300,300,300,300,300,300,300,300,300 + .word 300,300,300,300,300,300,301,301,301,301,301,301,301,301,301,301 + .word 301,301,301,301,301,301,301,301,301,302,302,302,302,302,302,302 + .word 302,302,302,302,302,302,302,302,302,302,302,302,303,303,303,303 + .word 303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,304 + .word 304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304 + .word 304,304,305,305,305,305,305,305,305,305,305,305,305,305,305,305 + .word 305,305,305,305,305,306,306,306,306,306,306,306,306,306,306,306 + .word 306,306,306,306,306,306,306,306,307,307,307,307,307,307,307,307 + .word 307,307,307,307,307,307,307,307,307,307,307,308,308,308,308,308 + .word 308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,309 + .word 309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309 + .word 309,309,310,310,310,310,310,310,310,310,310,310,310,310,310,310 + .word 310,310,310,310,310,311,311,311,311,311,311,311,311,311,311,311 + .word 311,311,311,311,311,311,311,311,311,312,312,312,312,312,312,312 + .word 312,312,312,312,312,312,312,312,312,312,312,312,313,313,313,313 + .word 313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313 + .word 314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314 + .word 314,314,314,315,315,315,315,315,315,315,315,315,315,315,315,315 + .word 315,315,315,315,315,315,315,316,316,316,316,316,316,316,316,316 + .word 316,316,316,316,316,316,316,316,316,316,316,317,317,317,317,317 + .word 317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,318 + .word 318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318 + .word 318,318,318,319,319,319,319,319,319,319,319,319,319,319,319,319 + .word 319,319,319,319,319,319,319,320,320,320,320,320,320,320,320,320 + .word 320,320,320,320,320,320,320,320,320,320,320,321,321,321,321,321 + .word 321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,322 + .word 322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322 + .word 322,322,322,323,323,323,323,323,323,323,323,323,323,323,323,323 + .word 323,323,323,323,323,323,323,324,324,324,324,324,324,324,324,324 + .word 324,324,324,324,324,324,324,324,324,324,324,325,325,325,325,325 + .word 325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,326 + .word 326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326 + .word 326,326,326,326,327,327,327,327,327,327,327,327,327,327,327,327 + .word 327,327,327,327,327,327,327,327,328,328,328,328,328,328,328,328 + .word 328,328,328,328,328,328,328,328,328,328,328,328,328,329,329,329 + .word 329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329 + .word 329,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330 + .word 330,330,330,330,330,330,331,331,331,331,331,331,331,331,331,331 + .word 331,331,331,331,331,331,331,331,331,331,331,332,332,332,332,332 + .word 332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,333 + .word 333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333 + .word 333,333,333,333,334,334,334,334,334,334,334,334,334,334,334,334 + .word 334,334,334,334,334,334,334,334,334,335,335,335,335,335,335,335 + .word 335,335,335,335,335,335,335,335,335,335,335,335,335,335,336,336 + .word 336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336 + .word 336,336,336,337,337,337,337,337,337,337,337,337,337,337,337,337 + .word 337,337,337,337,337,337,337,337,338,338,338,338,338,338,338,338 + .word 338,338,338,338,338,338,338,338,338,338,338,338,338,339,339,339 + .word 339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339 + .word 339,339,340,340,340,340,340,340,340,340,340,340,340,340,340,340 + .word 340,340,340,340,340,340,340,340,341,341,341,341,341,341,341,341 + .word 341,341,341,341,341,341,341,341,341,341,341,341,341,342,342,342 + .word 342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342 + .word 342,342,343,343,343,343,343,343,343,343,343,343,343,343,343,343 + .word 343,343,343,343,343,343,343,343,344,344,344,344,344,344,344,344 + .word 344,344,344,344,344,344,344,344,344,344,344,344,344,345,345,345 + .word 345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345 + .word 345,345,345,346,346,346,346,346,346,346,346,346,346,346,346,346 + .word 346,346,346,346,346,346,346,346,347,347,347,347,347,347,347,347 + .word 347,347,347,347,347,347,347,347,347,347,347,347,347,347,348,348 + .word 348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348 + .word 348,348,348,348,349,349,349,349,349,349,349,349,349,349,349,349 + .word 349,349,349,349,349,349,349,349,349,349,350,350,350,350,350,350 + .word 350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350 + .word 351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351 + .word 351,351,351,351,351,351,352,352,352,352,352,352,352,352,352,352 + .word 352,352,352,352,352,352,352,352,352,352,352,352,353,353,353,353 + .word 353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353 + .word 353,353,354,354,354,354,354,354,354,354,354,354,354,354,354,354 + .word 354,354,354,354,354,354,354,354,355,355,355,355,355,355,355,355 + .word 355,355,355,355,355,355,355,355,355,355,355,355,355,355,356,356 + .word 356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356 + .word 356,356,356,356,357,357,357,357,357,357,357,357,357,357,357,357 + .word 357,357,357,357,357,357,357,357,357,357,358,358,358,358,358,358 + .word 358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358 + .word 358,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359 + .word 359,359,359,359,359,359,359,360,360,360,360,360,360,360,360,360 + .word 360,360,360,360,360,360,360,360,360,360,360,360,360,360,361,361 + .word 361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361 + .word 361,361,361,361,362,362,362,362,362,362,362,362,362,362,362,362 + .word 362,362,362,362,362,362,362,362,362,362,362,363,363,363,363,363 + .word 363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363 + .word 363,363,364,364,364,364,364,364,364,364,364,364,364,364,364,364 + .word 364,364,364,364,364,364,364,364,365,365,365,365,365,365,365,365 + .word 365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,366 + .word 366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366 + .word 366,366,366,366,366,366,367,367,367,367,367,367,367,367,367,367 + .word 367,367,367,367,367,367,367,367,367,367,367,367,367,368,368,368 + .word 368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368 + .word 368,368,368,368,369,369,369,369,369,369,369,369,369,369,369,369 + .word 369,369,369,369,369,369,369,369,369,369,369,370,370,370,370,370 + .word 370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370 + .word 370,370,371,371,371,371,371,371,371,371,371,371,371,371,371,371 + .word 371,371,371,371,371,371,371,371,371,372,372,372,372,372,372,372 + .word 372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372 + .word 372,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373 + .word 373,373,373,373,373,373,373,373,374,374,374,374,374,374,374,374 + .word 374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,375 + .word 375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375 + .word 375,375,375,375,375,375,375,376,376,376,376,376,376,376,376,376 + .word 376,376,376,376,376,376,376,376,376,376,376,376,376,376,377,377 + .word 377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377 + .word 377,377,377,377,377,377,378,378,378,378,378,378,378,378,378,378 + .word 378,378,378,378,378,378,378,378,378,378,378,378,378,379,379,379 + .word 379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379 + .word 379,379,379,379,379,380,380,380,380,380,380,380,380,380,380,380 + .word 380,380,380,380,380,380,380,380,380,380,380,380,380,381,381,381 + .word 381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381 + .word 381,381,381,381,381,382,382,382,382,382,382,382,382,382,382,382 + .word 382,382,382,382,382,382,382,382,382,382,382,382,382,383,383,383 + .word 383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383 + .word 383,383,383,383,383,384,384,384,384,384,384,384,384,384,384,384 + .word 384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385 + .word 385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385 + .word 385,385,385,385,385,386,386,386,386,386,386,386,386,386,386,386 + .word 386,386,386,386,386,386,386,386,386,386,386,386,386,387,387,387 + .word 387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387 + .word 387,387,387,387,387,388,388,388,388,388,388,388,388,388,388,388 + .word 388,388,388,388,388,388,388,388,388,388,388,388,388,389,389,389 + .word 389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389 + .word 389,389,389,389,389,390,390,390,390,390,390,390,390,390,390,390 + .word 390,390,390,390,390,390,390,390,390,390,390,390,390,390,391,391 + .word 391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391 + .word 391,391,391,391,391,391,392,392,392,392,392,392,392,392,392,392 + .word 392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,393 + .word 393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393 + .word 393,393,393,393,393,393,393,394,394,394,394,394,394,394,394,394 + .word 394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394 + .word 395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395 + .word 395,395,395,395,395,395,395,395,395,396,396,396,396,396,396,396 + .word 396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396 + .word 396,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397 + .word 397,397,397,397,397,397,397,397,397,397,398,398,398,398,398,398 + .word 398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398 + .word 398,398,398,399,399,399,399,399,399,399,399,399,399,399,399,399 + .word 399,399,399,399,399,399,399,399,399,399,399,399,400,400,400,400 + .word 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400 + .word 400,400,400,400,400,401,401,401,401,401,401,401,401,401,401,401 + .word 401,401,401,401,401,401,401,401,401,401,401,401,401,401,402,402 + .word 402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402 + .word 402,402,402,402,402,402,402,403,403,403,403,403,403,403,403,403 + .word 403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403 + .word 404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404 + .word 404,404,404,404,404,404,404,404,404,404,405,405,405,405,405,405 + .word 405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405 + .word 405,405,405,406,406,406,406,406,406,406,406,406,406,406,406,406 + .word 406,406,406,406,406,406,406,406,406,406,406,406,407,407,407,407 + .word 407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407 + .word 407,407,407,407,407,407,408,408,408,408,408,408,408,408,408,408 + .word 408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,409 + .word 409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409 + .word 409,409,409,409,409,409,409,409,409,410,410,410,410,410,410,410 + .word 410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410 + .word 410,410,411,411,411,411,411,411,411,411,411,411,411,411,411,411 + .word 411,411,411,411,411,411,411,411,411,411,411,411,412,412,412,412 + .word 412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412 + .word 412,412,412,412,412,412,413,413,413,413,413,413,413,413,413,413 + .word 413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413 + .word 414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414 + .word 414,414,414,414,414,414,414,414,414,414,415,415,415,415,415,415 + .word 415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415 + .word 415,415,415,415,416,416,416,416,416,416,416,416,416,416,416,416 + .word 416,416,416,416,416,416,416,416,416,416,416,416,416,416,417,417 + .word 417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417 + .word 417,417,417,417,417,417,417,417,418,418,418,418,418,418,418,418 + .word 418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418 + .word 418,418,419,419,419,419,419,419,419,419,419,419,419,419,419,419 + .word 419,419,419,419,419,419,419,419,419,419,419,419,420,420,420,420 + .word 420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420 + .word 420,420,420,420,420,420,421,421,421,421,421,421,421,421,421,421 + .word 421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421 + .word 422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422 + .word 422,422,422,422,422,422,422,422,422,422,422,423,423,423,423,423 + .word 423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423 + .word 423,423,423,423,423,424,424,424,424,424,424,424,424,424,424,424 + .word 424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424 + .word 425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425 + .word 425,425,425,425,425,425,425,425,425,425,426,426,426,426,426,426 + .word 426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426 + .word 426,426,426,426,426,427,427,427,427,427,427,427,427,427,427,427 + .word 427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427 + .word 428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428 + .word 428,428,428,428,428,428,428,428,428,428,429,429,429,429,429,429 + .word 429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429 + .word 429,429,429,429,429,430,430,430,430,430,430,430,430,430,430,430 + .word 430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430 + .word 431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431 + .word 431,431,431,431,431,431,431,431,431,431,431,432,432,432,432,432 + .word 432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432 + .word 432,432,432,432,432,432,433,433,433,433,433,433,433,433,433,433 + .word 433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433 + .word 433,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434 + .word 434,434,434,434,434,434,434,434,434,434,434,434,435,435,435,435 + .word 435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435 + .word 435,435,435,435,435,435,435,436,436,436,436,436,436,436,436,436 + .word 436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436 + .word 436,436,436,437,437,437,437,437,437,437,437,437,437,437,437,437 + .word 437,437,437,437,437,437,437,437,437,437,437,437,437,437,438,438 + .word 438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438 + .word 438,438,438,438,438,438,438,438,438,439,439,439,439,439,439,439 + .word 439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439 + .word 439,439,439,439,439,440,440,440,440,440,440,440,440,440,440,440 + .word 440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440 + .word 441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441 + .word 441,441,441,441,441,441,441,441,441,441,441,441,442,442,442,442 + .word 442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442 + .word 442,442,442,442,442,442,442,443,443,443,443,443,443,443,443,443 + .word 443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443 + .word 443,443,443,444,444,444,444,444,444,444,444,444,444,444,444,444 + .word 444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,445 + .word 445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445 + .word 445,445,445,445,445,445,445,445,445,445,445,446,446,446,446,446 + .word 446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446 + .word 446,446,446,446,446,446,446,447,447,447,447,447,447,447,447,447 + .word 447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447 + .word 447,447,447,448,448,448,448,448,448,448,448,448,448,448,448,448 + .word 448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,449 + .word 449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449 + .word 449,449,449,449,449,449,449,449,449,449,449,450,450,450,450,450 + .word 450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450 + .word 450,450,450,450,450,450,450,451,451,451,451,451,451,451,451,451 + .word 451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451 + .word 451,451,451,452,452,452,452,452,452,452,452,452,452,452,452,452 + .word 452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,453 + .word 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453 + .word 453,453,453,453,453,453,453,453,453,453,453,454,454,454,454,454 + .word 454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454 + .word 454,454,454,454,454,454,454,454,455,455,455,455,455,455,455,455 + .word 455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455 + .word 455,455,455,455,456,456,456,456,456,456,456,456,456,456,456,456 + .word 456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456 + .word 456,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457 + .word 457,457,457,457,457,457,457,457,457,457,457,457,457,458,458,458 + .word 458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458 + .word 458,458,458,458,458,458,458,458,458,458,459,459,459,459,459,459 + .word 459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459 + .word 459,459,459,459,459,459,459,460,460,460,460,460,460,460,460,460 + .word 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460 + .word 460,460,460,461,461,461,461,461,461,461,461,461,461,461,461,461 + .word 461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461 + .word 462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462 + .word 462,462,462,462,462,462,462,462,462,462,462,462,462,463,463,463 + .word 463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463 + .word 463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464 + .word 464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464 + .word 464,464,464,464,464,464,464,465,465,465,465,465,465,465,465,465 + .word 465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465 + .word 465,465,465,465,466,466,466,466,466,466,466,466,466,466,466,466 + .word 466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466 + .word 466,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467 + .word 467,467,467,467,467,467,467,467,467,467,467,467,467,467,468,468 + .word 468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468 + .word 468,468,468,468,468,468,468,468,468,468,468,468,469,469,469,469 + .word 469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469 + .word 469,469,469,469,469,469,469,469,469,470,470,470,470,470,470,470 + .word 470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470 + .word 470,470,470,470,470,470,471,471,471,471,471,471,471,471,471,471 + .word 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471 + .word 471,471,471,471,472,472,472,472,472,472,472,472,472,472,472,472 + .word 472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472 + .word 472,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473 + .word 473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,474 + .word 474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474 + .word 474,474,474,474,474,474,474,474,474,474,474,474,475,475,475,475 + .word 475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475 + .word 475,475,475,475,475,475,475,475,475,475,476,476,476,476,476,476 + .word 476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476 + .word 476,476,476,476,476,476,476,476,477,477,477,477,477,477,477,477 + .word 477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477 + .word 477,477,477,477,477,477,478,478,478,478,478,478,478,478,478,478 + .word 478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478 + .word 478,478,478,478,479,479,479,479,479,479,479,479,479,479,479,479 + .word 479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479 + .word 479,479,480,480,480,480,480,480,480,480,480,480,480,480,480,480 + .word 480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480 + .word 481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481 + .word 481,481,481,481,481,481,481,481,481,481,481,481,481,481,482,482 + .word 482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482 + .word 482,482,482,482,482,482,482,482,482,482,482,482,483,483,483,483 + .word 483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483 + .word 483,483,483,483,483,483,483,483,483,483,484,484,484,484,484,484 + .word 484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484 + .word 484,484,484,484,484,484,484,484,485,485,485,485,485,485,485,485 + .word 485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485 + .word 485,485,485,485,485,485,486,486,486,486,486,486,486,486,486,486 + .word 486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486 + .word 486,486,486,486,486,487,487,487,487,487,487,487,487,487,487,487 + .word 487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487 + .word 487,487,487,488,488,488,488,488,488,488,488,488,488,488,488,488 + .word 488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488 + .word 488,488,489,489,489,489,489,489,489,489,489,489,489,489,489,489 + .word 489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489 + .word 490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490 + .word 490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,491 + .word 491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491 + .word 491,491,491,491,491,491,491,491,491,491,491,491,491,491,492,492 + .word 492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492 + .word 492,492,492,492,492,492,492,492,492,492,492,492,493,493,493,493 + .word 493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493 + .word 493,493,493,493,493,493,493,493,493,493,493,494,494,494,494,494 + .word 494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494 + .word 494,494,494,494,494,494,494,494,494,494,495,495,495,495,495,495 + .word 495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495 + .word 495,495,495,495,495,495,495,495,495,496,496,496,496,496,496,496 + .word 496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496 + .word 496,496,496,496,496,496,496,496,497,497,497,497,497,497,497,497 + .word 497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497 + .word 497,497,497,497,497,497,497,498,498,498,498,498,498,498,498,498 + .word 498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498 + .word 498,498,498,498,498,498,499,499,499,499,499,499,499,499,499,499 + .word 499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499 + .word 499,499,499,499,499,500,500,500,500,500,500,500,500,500,500,500 + .word 500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500 + .word 500,500,500,500,500,501,501,501,501,501,501,501,501,501,501,501 + .word 501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501 + .word 501,501,501,501,502,502,502,502,502,502,502,502,502,502,502,502 + .word 502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502 + .word 502,502,502,503,503,503,503,503,503,503,503,503,503,503,503,503 + .word 503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503 + .word 503,503,503,504,504,504,504,504,504,504,504,504,504,504,504,504 + .word 504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504 + .word 504,504,505,505,505,505,505,505,505,505,505,505,505,505,505,505 + .word 505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505 + .word 505,505,506,506,506,506,506,506,506,506,506,506,506,506,506,506 + .word 506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506 + .word 506,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507 + .word 507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507 + .word 507,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508 + .word 508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508 + .word 508,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509 + .word 509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509 + .word 509,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510 + .word 510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510 + .word 510,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511 + .word 511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511 + .word 511,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512 + +****************************************************************************** + + \ No newline at end of file diff --git a/BACKUP/STRING.ASM b/BACKUP/STRING.ASM new file mode 100644 index 0000000..9f4d3a2 --- /dev/null +++ b/BACKUP/STRING.ASM @@ -0,0 +1,762 @@ +**************************************************************** +* +* Software: Jamie Rivett +* Initiated: +* +* Modified: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 10/9/92 23:07 +**************************************************************** + .file "string.asm" + .title "string printing stuff" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "macros.h" + .include "game.equ" + .include "audit.equ" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + +;sounds + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref BINBCD + +****************************************************************************** + +;symbols defined in this file + + .def message_palette + .def mess_space_width + .def print_string,print_string2,print_string_C,print_string_C2 + .def print_string_R,print_string_R2 + .def message_ascii + .def mess_spacing + .def mess_objid + .def mess_cursx + .def mess_cursy + .def osgemd_ascii,sgmd8_ascii,osgmd8_ascii + .def lgmd_ascii,omlgmd_ascii,ogmd10_ascii + .def font9_ascii + + .def message_buffer + .def message_buffer2 + .def dec_to_asc,dec_to_pct + .def copy_string,copy_rom_string + .def concat_string,concat_rom_string + + .def print_message,setup_message + .def mess_line_spacing + .def get_string_len2 + .def dec_to_asc_new_entry + +MBUFF_SIZE equ 40 + +;ram + .bss message_ascii, 32 ;* ascii lookup table + .bss message_palette,32 ;* palette + .bss message_buffer, 16*MBUFF_SIZE ;null terminated string + .bss message_buffer2, 16*MBUFF_SIZE + .bss mess_cursx, 16 ;message cursor pos X original + .bss mess_cursx2, 16 ;message cursor pos X temp + .bss mess_cursy, 16 ;message cursor pos Y + .bss mess_space_width, 16 ;width in pixels of space char + .bss mess_spacing,16 ;spacing between chars + .bss mess_line_spacing,16 ;spacing between lines + .bss mess_objid,16 ;OBJECT ID for string + .bss mess_justify,32 ;justification method + .bss ptr_player_data,32 ;start address of player data + BSSX IGNORE_CHAR_WIDTH,16 + .text + +#***************************************************************************** + + SUBRP clear_buffers + + callr clear_buffer + callr clear_buffer2 + rets + +clear_buffer + movi MBUFF_SIZE,a2 + clr a0 + movi message_buffer,a1 +#clear_loop1 + move a0,*a1+ + dsj a2,#clear_loop1 + rets + +clear_buffer2 + movi MBUFF_SIZE,a2 + clr a0 + movi message_buffer2,a1 +#clear_loop2 + move a0,*a1+ + dsj a2,#clear_loop2 + rets + + +#***************************************************************************** +* +* INPUT: a0 = number to convert +* a1 = max value +* converts value in A0 to an decimal ASCII string in message_buffer2 +* - removes leading spaces +* +*----------------------------------------------------------------------------- + + SUBRP dec_to_asc + + cmp a0,a1 ;a1-a0 + jrhi #not_max + move a1,a0 ;set num to max +#not_max + + calla BINBCD ;dec number in A0 + move a0,a1 + movi message_buffer2,a2 + +dec_to_asc_new_entry + + clr a3 ;leading zero flag + + andi 0f000000h,a0 + srl 6*4,a0 + jrnz #no_zero_n3 + move a3,a3 ;leading zero + jrz #skip_zero_n3 +#no_zero_n3 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero_n3 + + move a1,a0 + andi 0f00000h,a0 + srl 5*4,a0 + jrnz #no_zero_n2 + move a3,a3 ;leading zero + jrz #skip_zero_n2 +#no_zero_n2 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero_n2 + + move a1,a0 + andi 0f0000h,a0 + srl 4*4,a0 + jrnz #no_zero_n1 + move a3,a3 ;leading zero + jrz #skip_zero_n1 +#no_zero_n1 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero_n1 + + move a1,a0 + + + andi 0f000h,a0 + srl 3*4,a0 + jrnz #no_zero0 + move a3,a3 ;leading zero + jrz #skip_zero0 +#no_zero0 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero0 + + move a1,a0 + andi 0f00h,a0 + srl 2*4,a0 + jrnz #no_zero1 + move a3,a3 ;leading zero + jrz #skip_zero1 +#no_zero1 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero1 + + move a1,a0 + andi 0f0h,a0 + srl 1*4,a0 + jrnz #no_zero2 + move a3,a3 ;leading zero + jrz #skip_zero2 +#no_zero2 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero2 + + move a1,a0 + andi 0fh,a0 + addi '0',a0 + movb a0,*a2 + addk 8,a2 + clr a0 + movb a0,*a2 ;null terminate string + + rets + + +#***************************************************************************** +* +* INPUT: a0 = number to convert +* converts value in A0 to an decimal ASCII % string in message_buffer2 +* range 000-999 +* +*----------------------------------------------------------------------------- + + SUBRP dec_to_pct + + calla BINBCD ;dec number in A0 + move a0,a1 + movi message_buffer2,a2 + + andi 0f00h,a0 + srl 2*4,a0 + addi '0',a0 + movb a0,*a2 + addk 8,a2 + + move a1,a0 + andi 0f0h,a0 + srl 1*4,a0 + addi '0',a0 + movb a0,*a2 + addk 8,a2 + + move a1,a0 + andi 0fh,a0 + addi '0',a0 + movb a0,*a2 + addk 8,a2 + clr a0 + movb a0,*a2 ;null terminate string + + rets + + +#***************************************************************************** +* +* copies string in message_buffer2 to message_buffer +* +*----------------------------------------------------------------------------- + + SUBRP copy_string + + movi message_buffer-8,a2 + movi message_buffer2-8,a3 + +#next_char + addk 8,a2 + addk 8,a3 + movb *a3,*a2 + movb *a3,a0 ;NULL? + jrnz #next_char + + rets + +#***************************************************************************** +* +* concatenates string in message_buffer2 to string in message_buffer +* +*----------------------------------------------------------------------------- + + SUBRP concat_string + + movi message_buffer-8,a2 + movi message_buffer2-8,a3 +#next_char + addk 8,a2 + movb *a2,a0 + jrnz #next_char + subk 8,a2 + +#next_char2 + addk 8,a2 + addk 8,a3 + movb *a3,*a2 + movb *a3,a0 ;NULL? + jrnz #next_char2 + + rets + +#***************************************************************************** +* +* INPUT: a4 = * null terminated rom string +* +* copies string in rom to message_buffer +* +*----------------------------------------------------------------------------- + + SUBRP copy_rom_string + + movi message_buffer-8,a1 + + subk 8,a4 + +#next_char + addk 8,a1 + addk 8,a4 + movb *a4,*a1 + movb *a4,a0 ;NULL ? + jrnz #next_char + + rets + +#***************************************************************************** +* +* INPUT: a4 = * null terminated rom string +* +* concatenates string in rom to string in message_buffer +* +*----------------------------------------------------------------------------- + + SUBRP concat_rom_string + + movi message_buffer-8,a1 +#next_char + addk 8,a1 + movb *a1,a0 + jrnz #next_char + + subk 8,a1 + subk 8,a4 + +#next_char2 + addk 8,a1 + addk 8,a4 + movb *a4,*a1 + movb *a4,a0 ;NULL ? + jrnz #next_char2 + + rets + +#***************************************************************************** +* +* INPUT: a4 = * NULL terminated ASCII string (print_string2) +* +* RETURN: a2 = width of string in pixels +* +*----------------------------------------------------------------------------- + + SUBRP get_string_len + + movi message_buffer,a4 +get_string_len2 + clr a2 + subk 8,a4 +#next_char + addk 8,a4 + movb *a4,a0 + andi 0ffh,a0 + jrz #done + cmpi 1,a0 + jreq #done + cmpi 32,a0 + jrne #no_space + move @mess_space_width,a0 + add a0,a2 + jruc #next_char +#no_space + sll 5,a0 ;x 32 bits + move @message_ascii,a1,L + add a1,a0 + move *a0,a1,L ;* image + jrz #next_char + MOVE @IGNORE_CHAR_WIDTH,A0 + JRNZ #IGNORE_IT + move *a1,a0 ;image width + add a0,a2 +#IGNORE_IT + move @mess_spacing,a0 + add a0,a2 + jruc #next_char + +#done + move @mess_spacing,a0 + sub a0,a2 + rets + +#***************************************************************************** +* +* INPUT: a4 = * NULL terminated ASCII string (print_string_C2) +* centers & prints a text string +* +*----------------------------------------------------------------------------- + + SUBRP print_string_C + + movi message_buffer,a4 + movi #center_justify,a0 + move a0,@mess_justify,L ;justification method + callr #center_justify + callr print_string2b + rets + +print_string_C2 + movi #center_justify,a0 + move a0,@mess_justify,L ;justification method + callr #center_justify + callr print_string2b + rets + +#center_justify + PUSH a2,a4 + callr get_string_len2 + srl 1,a2 ;/2 + move @mess_cursx,a0 + sub a2,a0 ;- string_width/2 + move a0,@mess_cursx2 ;message cursor pos X + PULL a2,a4 + rets + +#***************************************************************************** +* +* INPUT: a4 = * NULL terminated ASCII string (print_string_C2) +* right justifies & prints a text string +* +*----------------------------------------------------------------------------- + + SUBRP print_string_R + + movi message_buffer,a4 + movi #right_justify,a0 + move a0,@mess_justify,L ;justification method + callr #right_justify + callr print_string2b + rets + +print_string_R2 + movi #right_justify,a0 + move a0,@mess_justify,L ;justification method + callr #right_justify + callr print_string2b + rets + +#right_justify + PUSH a2,a4 + callr get_string_len2 + move @mess_cursx,a0 + sub a2,a0 ;- string_width/2 + move a0,@mess_cursx2 ;message cursor pos X + PULL a2,a4 + rets + +#***************************************************************************** +* +* INPUT: a4 = * NULL terminated ASCII string (print_string2) +* +*----------------------------------------------------------------------------- + +#left_justify + move @mess_cursx,a0 + move a0,@mess_cursx2 + rets + + SUBRP print_string + + movi message_buffer,a4 + +print_string2 + movi #left_justify,a0 + move a0,@mess_justify,L ;justification method + move @mess_cursx,a0 + move a0,@mess_cursx2 +print_string2b + + subk 8,a4 +#next_char + addk 8,a4 + movb *a4,a0 + andi 0ffh,a0 + jrz #done + cmpi 1,a0 + jrne #no_newline +;newline + move @mess_line_spacing,a0 + move @mess_cursy,a1 + add a0,a1 + move a1,@mess_cursy + + move @mess_justify,a0,L ;justification method + addi 8,a4 ;skip newline char + call a0 + subi 8,a4 + jruc #next_char +#no_newline + cmpi 32,a0 + jrne #no_space +;space + move @mess_space_width,a0 + move @mess_cursx2,a1 + add a0,a1 + move a1,@mess_cursx2 + jruc #next_char +#no_space + sll 5,a0 ;x 32 bits + move @message_ascii,a1,L + add a1,a0 + move *a0,a2,L ;* image + jrz #next_char + + PUSH a4,a8 + move @message_palette,b0,L ;* palette + move @mess_cursx2,a0 + sll 16,a0 ;x val + move @mess_cursy,a1 + sll 16,a1 ;y val +; movi 120,a3 ;z pos + movi 20000,a3 ;Z + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + move @mess_objid,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJP + move @mess_cursx2,a1 + MOVE @IGNORE_CHAR_WIDTH,A0 + JRNZ #IGNORE_IT + move *a8(OSIZEX),a0 + add a0,a1 +#IGNORE_IT + move @mess_spacing,a0 + add a0,a1 + move a1,@mess_cursx2 + PULL a4,a8 + jruc #next_char + +#done + rets + +#***************************************************************************** +* +* INPUT : a2 = * to message +* +*----------------------------------------------------------------------------- + + SUBRP setup_message + + movi TYPTEXT,a0 + move a0,@mess_objid ;OBJ ID's for text + + move *a2+,a0,L ;* ascii lookup table + move a0,@message_ascii,L ; + move *a2+,a0 ;space char width + move a0,@mess_space_width ; + move *a2+,a0 ;spacing between chars + move a0,@mess_spacing ; + move *a2+,a0 ;message cursor pos X + move a0,@mess_cursx ; + move *a2+,a0 ;message cursor pos Y + move a0,@mess_cursy ; + move *a2+,a0,L + move a0,@message_palette,L + movi #rets,a0 + move a0,@mess_justify,L ;justification method +#rets + rets + + +#***************************************************************************** +* +* INPUT : a2 = * to message +* +*----------------------------------------------------------------------------- + + SUBRP print_message + + PUSH a4,a5,a6,a7,a8,a9,a10,a11 + + movi TYPTEXT,a0 + move a0,@mess_objid ;OBJ ID's for text + + move *a2+,a0,L ;* ascii lookup table + move a0,@message_ascii,L ; + move *a2+,a0 ;space char width + move a0,@mess_space_width ; + move *a2+,a0 ;spacing between chars + move a0,@mess_spacing ; + move *a2+,a0 ;message cursor pos X + move a0,@mess_cursx ; + move *a2+,a0 ;message cursor pos Y + move a0,@mess_cursy ; + move *a2+,a0,L + move a0,@message_palette,L + move *a2+,a0,L ;print method + + move a2,a4 ;* text string + call a0 + + PULL a4,a5,a6,a7,a8,a9,a10,a11 + rets + + +#***************************************************************************** + +init_convert_table + .word 'A','B','C','D','E','F','G','H' + .word 'I','J','K','L','M','N','O','P' + .word 'Q','R','S','T','U','V','W','X' + .word 'Y','Z',' ' + +#***************************************************************************** + +font9_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long FNT9_SPC,FNT9_DEL,FNT9_END,0,0,0,0,0 ;$10 SPC,BAK,END + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,FNT9_EXP,0,0,0,0,0,0 ;$20 SP! " # $ % & ' + .long 0,0,0,0,0,0,0,0 ;$28 ( ) * + , - . / + .long FNT9_0,FNT9_1,FNT9_2,FNT9_3,FNT9_4,FNT9_5,FNT9_6,FNT9_7 ;$30 0 1 2 3 4 5 6 7 + .long FNT9_8,FNT9_9,FNT9_COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,FNT9_A,FNT9_B,FNT9_C,FNT9_D,FNT9_E,FNT9_F,FNT9_G ;$40 @ A B C D E F G + .long FNT9_H,FNT9_I,FNT9_J,FNT9_K,FNT9_L,FNT9_M,FNT9_N,FNT9_O ;$48 H I J K L M N O + .long FNT9_P,FNT9_Q,FNT9_R,FNT9_S,FNT9_T,FNT9_U,FNT9_V,FNT9_W ;$50 P Q R S T U V W + .long FNT9_X,FNT9_Y,FNT9_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,FNT9_A,FNT9_B,FNT9_C,FNT9_D,FNT9_E,FNT9_F,FNT9_G ;$60 ` a b c d e f g + .long FNT9_H,FNT9_I,FNT9_J,FNT9_K,FNT9_L,FNT9_M,FNT9_N,FNT9_O ;$68 h i j k l m n o + .long FNT9_P,FNT9_Q,FNT9_R,FNT9_S,FNT9_T,FNT9_U,FNT9_V,FNT9_W ;$70 p q r s t u v w + .long FNT9_X,FNT9_Y,FNT9_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +osgemd_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long OSGEMD_SPC,OSGEMD_DEL,OSGEMD_END,0,0,0,0,0 ;$10 SPC,BAK,END + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,OSGEMD_EXP,0,OSGEMD_NUM,OSGEMD_DOL,0,OSGEMD_AND,OSGEMD_APO ;$20 SP! " # $ % & ' + .long OSGEMD_OBR,OSGEMD_CBR,0,0,0,OSGEMD_DAS,OSGEMD_DOT,OSGEMD_SLS ;$28 ( ) * + , - . / + .long OSGEMD_0,OSGEMD_1,OSGEMD_2,OSGEMD_3,OSGEMD_4,OSGEMD_5,OSGEMD_6,OSGEMD_7 ;$30 0 1 2 3 4 5 6 7 + .long OSGEMD_8,OSGEMD_9,OSGEMD_COL,0,0,0,0,OSGEMD_QUE ;$38 8 9 : ; < - > ? + .long 0,OSGEMD_A,OSGEMD_B,OSGEMD_C,OSGEMD_D,OSGEMD_E,OSGEMD_F,OSGEMD_G ;$40 @ A B C D E F G + .long OSGEMD_H,OSGEMD_I,OSGEMD_J,OSGEMD_K,OSGEMD_L,OSGEMD_M,OSGEMD_N,OSGEMD_O ;$48 H I J K L M N O + .long OSGEMD_P,OSGEMD_Q,OSGEMD_R,OSGEMD_S,OSGEMD_T,OSGEMD_U,OSGEMD_V,OSGEMD_W ;$50 P Q R S T U V W + .long OSGEMD_X,OSGEMD_Y,OSGEMD_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,OSGEMD_A,OSGEMD_B,OSGEMD_C,OSGEMD_D,OSGEMD_E,OSGEMD_F,OSGEMD_G ;$60 ` a b c d e f g + .long OSGEMD_H,OSGEMD_I,OSGEMD_J,OSGEMD_K,OSGEMD_L,OSGEMD_M,OSGEMD_N,OSGEMD_O ;$68 h i j k l m n o + .long OSGEMD_P,OSGEMD_Q,OSGEMD_R,OSGEMD_S,OSGEMD_T,OSGEMD_U,OSGEMD_V,OSGEMD_W ;$70 p q r s t u v w + .long OSGEMD_X,OSGEMD_Y,OSGEMD_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +sgmd8_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,SGMD8_EXP,0,SGMD8_NUM,0,SGMD8_PCT,SGMD8_AND,SGMD8_APO ;$20 SP! " # $ % & ' + .long SGMD8_OBR,SGMD8_CBR,0,0,SGMD8_COM,SGMD8_DAS,SGMD8_DOT,SGMD8_SLS ;$28 ( ) * + , - . / + .long SGMD8_0,SGMD8_1,SGMD8_2,SGMD8_3,SGMD8_4,SGMD8_5,SGMD8_6,SGMD8_7 ;$30 0 1 2 3 4 5 6 7 + .long SGMD8_8,SGMD8_9,SGMD8_COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,SGMD8_A,SGMD8_B,SGMD8_C,SGMD8_D,SGMD8_E,SGMD8_F,SGMD8_G ;$40 @ A B C D E F G + .long SGMD8_H,SGMD8_I,SGMD8_J,SGMD8_K,SGMD8_L,SGMD8_M,SGMD8_N,SGMD8_O ;$48 H I J K L M N O + .long SGMD8_P,SGMD8_Q,SGMD8_R,SGMD8_S,SGMD8_T,SGMD8_U,SGMD8_V,SGMD8_W ;$50 P Q R S T U V W + .long SGMD8_X,SGMD8_Y,SGMD8_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,SGMD8_A,SGMD8_B,SGMD8_C,SGMD8_D,SGMD8_E,SGMD8_F,SGMD8_G ;$60 ` a b c d e f g + .long SGMD8_H,SGMD8_I,SGMD8_J,SGMD8_K,SGMD8_L,SGMD8_M,SGMD8_N,SGMD8_O ;$68 h i j k l m n o + .long SGMD8_P,SGMD8_Q,SGMD8_R,SGMD8_S,SGMD8_T,SGMD8_U,SGMD8_V,SGMD8_W ;$70 p q r s t u v w + .long SGMD8_X,SGMD8_Y,SGMD8_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +osgmd8_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,osgmd8_EXP,0,osgmd8_NUM,0,osgmd8_PCT,osgmd8_AND,osgmd8_APO ;$20 SP! " # $ % & ' + .long osgmd8_OBR,osgmd8_CBR,0,0,osgmd8_COM,osgmd8_DAS,osgmd8_DOT,osgmd8_SLS ;$28 ( ) * + , - . / + .long osgmd8_0,osgmd8_1,osgmd8_2,osgmd8_3,osgmd8_4,osgmd8_5,osgmd8_6,osgmd8_7 ;$30 0 1 2 3 4 5 6 7 + .long osgmd8_8,osgmd8_9,osgmd8_COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,osgmd8_A,osgmd8_B,osgmd8_C,osgmd8_D,osgmd8_E,osgmd8_F,osgmd8_G ;$40 @ A B C D E F G + .long osgmd8_H,osgmd8_I,osgmd8_J,osgmd8_K,osgmd8_L,osgmd8_M,osgmd8_N,osgmd8_O ;$48 H I J K L M N O + .long osgmd8_P,osgmd8_Q,osgmd8_R,osgmd8_S,osgmd8_T,osgmd8_U,osgmd8_V,osgmd8_W ;$50 P Q R S T U V W + .long osgmd8_X,osgmd8_Y,osgmd8_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,osgmd8_A,osgmd8_B,osgmd8_C,osgmd8_D,osgmd8_E,osgmd8_F,osgmd8_G ;$60 ` a b c d e f g + .long osgmd8_H,osgmd8_I,osgmd8_J,osgmd8_K,osgmd8_L,osgmd8_M,osgmd8_N,osgmd8_O ;$68 h i j k l m n o + .long osgmd8_P,osgmd8_Q,osgmd8_R,osgmd8_S,osgmd8_T,osgmd8_U,osgmd8_V,osgmd8_W ;$70 p q r s t u v w + .long osgmd8_X,osgmd8_Y,osgmd8_Z,osgmd8_OPQ,0,osgmd8_CLQ,0,0 ;$78 x y z { | } ~ + +lgmd_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,lgmd_EXP,0,lgmd_NUM,0,0,0,0 ;$20 SP! " # $ % & ' + .long 0,0,0,0,0,0,lgmd_DOT,0 ;$28 ( ) * + , - . / + .long lgmd_0,lgmd_1,lgmd_2,lgmd_3,lgmd_4,lgmd_5,lgmd_6,lgmd_7 ;$30 0 1 2 3 4 5 6 7 + .long lgmd_8,lgmd_9,lgmd_COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,lgmd_A,lgmd_B,lgmd_C,lgmd_D,lgmd_E,lgmd_F,lgmd_G ;$40 @ A B C D E F G + .long lgmd_H,lgmd_I,lgmd_J,lgmd_K,lgmd_L,lgmd_M,lgmd_N,lgmd_O ;$48 H I J K L M N O + .long lgmd_P,lgmd_Q,lgmd_R,lgmd_S,lgmd_T,lgmd_U,lgmd_V,lgmd_W ;$50 P Q R S T U V W + .long lgmd_X,lgmd_Y,lgmd_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,lgmd_A,lgmd_B,lgmd_C,lgmd_D,lgmd_E,lgmd_F,lgmd_G ;$60 ` a b c d e f g + .long lgmd_H,lgmd_I,lgmd_J,lgmd_K,lgmd_L,lgmd_M,lgmd_N,lgmd_O ;$68 h i j k l m n o + .long lgmd_P,lgmd_Q,lgmd_R,lgmd_S,lgmd_T,lgmd_U,lgmd_V,lgmd_W ;$70 p q r s t u v w + .long lgmd_X,lgmd_Y,lgmd_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +omlgmd_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,omlgmd_EXP,0,0,0,0,0,0 ;$20 SP! " # $ % & ' + .long 0,0,0,0,0,0,omlgmd_DOT,0 ;$28 ( ) * + , - . / + .long 0,0,0,0,0,0,0,0 ;$30 0 1 2 3 4 5 6 7 + .long 0,0,0,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,omlgmd_A,omlgmd_B,omlgmd_C,omlgmd_D,omlgmd_E,omlgmd_F,omlgmd_G ;$40 @ A B C D E F G + .long omlgmd_H,omlgmd_I,omlgmd_J,omlgmd_K,omlgmd_L,omlgmd_M,omlgmd_N,omlgmd_O ;$48 H I J K L M N O + .long omlgmd_P,omlgmd_Q,omlgmd_R,omlgmd_S,omlgmd_T,omlgmd_U,omlgmd_V,omlgmd_W ;$50 P Q R S T U V W + .long omlgmd_X,omlgmd_Y,omlgmd_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,omlgmd_A,omlgmd_B,omlgmd_C,omlgmd_D,omlgmd_E,omlgmd_F,omlgmd_G ;$60 ` a b c d e f g + .long omlgmd_H,omlgmd_I,omlgmd_J,omlgmd_K,omlgmd_L,omlgmd_M,omlgmd_N,omlgmd_O ;$68 h i j k l m n o + .long omlgmd_P,omlgmd_Q,omlgmd_R,omlgmd_S,omlgmd_T,omlgmd_U,omlgmd_V,omlgmd_W ;$70 p q r s t u v w + .long omlgmd_X,omlgmd_Y,omlgmd_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +ogmd10_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,osgmd10_EXP,0,osgmd10_NUM,osgmd10_DOL,osgmd10_PCT,osgmd10_AND,osgmd10_APO ;$20 SP! " # $ % & ' + .long osgmd10_OBR,osgmd10_CBR,0,0,osgmd10_COM,osgmd10_DAS,osgmd10_DOT,osgmd10_SLS ;$28 ( ) * + , - . / + .long osgmd10_0,osgmd10_1,osgmd10_2,osgmd10_3,osgmd10_4,osgmd10_5,osgmd10_6,osgmd10_7 ;$30 0 1 2 3 4 5 6 7 + .long osgmd10_8,osgmd10_9,osgmd10_COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,osgmd10_A,osgmd10_B,osgmd10_C,osgmd10_D,osgmd10_E,osgmd10_F,osgmd10_G ;$40 @ A B C D E F G + .long osgmd10_H,osgmd10_I,osgmd10_J,osgmd10_K,osgmd10_L,osgmd10_M,osgmd10_N,osgmd10_O ;$48 H I J K L M N O + .long osgmd10_P,osgmd10_Q,osgmd10_R,osgmd10_S,osgmd10_T,osgmd10_U,osgmd10_V,osgmd10_W ;$50 P Q R S T U V W + .long osgmd10_X,osgmd10_Y,osgmd10_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,osgmd10_A,osgmd10_B,osgmd10_C,osgmd10_D,osgmd10_E,osgmd10_F,osgmd10_G ;$60 ` a b c d e f g + .long osgmd10_H,osgmd10_I,osgmd10_J,osgmd10_K,osgmd10_L,osgmd10_M,osgmd10_N,osgmd10_O ;$68 h i j k l m n o + .long osgmd10_P,osgmd10_Q,osgmd10_R,osgmd10_S,osgmd10_T,osgmd10_U,osgmd10_V,osgmd10_W ;$70 p q r s t u v w + .long osgmd10_X,osgmd10_Y,osgmd10_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +****************************************************************************** + +;end + + + + + \ No newline at end of file diff --git a/BACKUP/SYS.EQU b/BACKUP/SYS.EQU new file mode 100644 index 0000000..c4fa1d3 --- /dev/null +++ b/BACKUP/SYS.EQU @@ -0,0 +1,313 @@ +*THE T/Z-UNIT SYSTEM SPECIFIC EQUATES +*.Last mod - 11/30/92 12:09 + +rounds_on .equ 1 + +WWFUNIT .equ 1 + + +YUNIT .equ 1 +TUNIT .equ 1 ;YUNIT also on +TUNITDB .equ 0 ;TUNIT debugging +TUNIT2 .equ 1 ;TUNIT also on + +DEBUG .equ 1 ;0 or 1 +IMGVIEW .equ 0 ;0 or 1 + +PAL64 .equ 0 ;1 if 64x64 pals + +*FOLLOWING SYMBOLS DON'T ACTUALLY WORK, YET! +GERMAN .equ 0 ;IF 1 THEN GERMAN TEXT +PRINTER .equ 0 ;IF 1 THEN PRINTER IS INSTALLED + +FULLPRICE .equ 1 ;IF 1, INSTALL ALL COINAGE MODES + + +;PIXBLT stuff +PXSIZE .equ 8 +SCRN_PTCH .equ 512*PXSIZE + +;System memory map + + + .if WWFUNIT +VMUX_CONTROL .equ 1800000h ;VMUX Control Register +VMUX_BREG0 .equ 1820000h ;VMUX Background Register 0 +VMUX_BREG1 .equ 1830000h ;VMUX Background Register 1 +VMUX_PALMATCH .equ 1840000h ;VMUX Palette Match Register +VMUX_STATUS .equ 1800000h ;VMUX Status Register + +VMUX_MODE0 .equ 0 ;I/O Mode 0 +VMUX_MODE1 .equ 1 ;I/O Mode 1 +VMUX_MODE2 .equ 2 ;I/O Mode 2 +VMUX_MODE3 .equ 3 ;I/O Mode 3 +VMUX_MODE4 .equ 4 ;I/O Mode 4 +VMUX_MODE5 .equ 5 ;I/O Mode 5 +VMUX_MODE6 .equ 6 ;I/O Mode 6 +VMUX_MODE7 .equ 7 ;I/O Mode 7 + +VMUX_IODISABLE .equ 8 ;I/O Disable +VMUX_ADDRGENENB .equ 16 ;Address Generator Enable + +VMUX_VKEY0 .equ 0 ;Video Key 0 +VMUX_VKEY1 .equ 32 ;Video Key 0 +VMUX_VKEY2 .equ 64 ;Video Key 0 +VMUX_VKEY3 .equ 96 ;Video Key 0 +VMUX_VKEY4 .equ 128 ;Video Key 0 +VMUX_VKEY5 .equ 160 ;Video Key 0 +VMUX_VKEY6 .equ 192 ;Video Key 0 + +VMUX_PALMENABL .equ 256 ;Palette Match Enable + +VMUX_VDISABLE .equ 512 ;Video Disable + +VMUX_CSWIZZLE .equ 1024 ;Color RAM swizzle on writes + +VMUX_CRAMREAD .equ 2048 ;Force Read of CRAM Pixel Stream + +VMUX_INITMODE .equ VMUX_MODE0|VMUX_VKEY0 + .endif + +SCREEN .equ 0 ;START OF SCREEN MEMORY +SCRNE .equ 200000h ;END OF SCREEN+1 +SCRATCH .equ 1000000h ;START OF SCRATCH +;STCKST .equ 13FB3E0h ;TOP OF STACK +STCKST .equ 13F73E0h ;TOP OF STACK +CMOS .equ 1400000h ;START OF CMOS RAM +CMOSWE .equ CMOS+0ffff0h ;Write enable + + .if TUNIT +COLRAM .equ 1880000h + .elseif YUNIT +COLRAM .equ 1810000h ;Color ram + .else +COLRAM .equ 1800000h + .endif +CYCOLORS .equ COLRAM+3E0h ;COLORS 62 AND 63 (LAST TWO IN PAL!) + +CMAPSEL .equ 1a80080h ;COLOR MAP SELECT (0-15) + .if TUNIT2 +SWITCH .equ 1860000h ;I/O WIDGET BOARD +COINS .equ 1860030h +SWITCH2 .equ 1860010h +DIPSWITCH .equ 1860020h ;DIP SWITCHES +;WATCHDOG .equ 1d81070h ;old +WATCHDOG .equ 1860030h ;new (daughterboard) +WRMISC .equ 1860020h +COIN_COUNTERS .EQU 1860010H ;COIN COUNTER DRIVERS +SNDRSTBIT .equ 16 + .else +SWITCH .equ 1c00000h ;I/O WIDGET BOARD +COINS .equ 1c00010h +SWITCH2 .equ 1c00020h +DIPSWITCH .equ 1c00030h ;DIP SWITCHES + .endif + .if TUNIT2 +SOUND .equ 1680000h ;Auto strobe +SOUNDR .equ 1680000h ;Auto strobe (with wait state) +SOUNDIRQ .equ 1860040h ;* irq input +;B_SDAV .equ 11 ;sound data available bit # (active hi) +;B_SIRQ .equ 10 ;Irq bit # +B_SDAV .equ 10 ;sound data available bit # (active hi) +B_SIRQ .equ 11 ;Irq bit # +SOUNDBIT .equ 0ff00h ;No strobe needed +TALKPORT .equ 1860040h ;Port to find this line +B_WDOG .equ 8 ;(-) For watchdog triggered + .elseif TUNIT +SOUND .equ 1c01030h ;Auto strobe +SOUNDIRQ .equ 1c00050h ;* irq input +B_SIRQ .equ 3 ;Irq bit # +SOUNDBIT .equ 0ff00h ;No strobe needed + .else +SOUND .equ 1e00000h ;Sound I/O; B0-B7=Sound#, B8=Reset (-) +SOUNDIRQ .equ SWITCH+10H ;* irq input +B_SIRQ .equ 14 ;Irq bit # +SOUNDBIT .equ 0fd00h ;B9=Strobe (-) + .endif + + +PIC_COMMAND .equ 01600000h ;PIC Command Port +PIC_DATA .equ PIC_COMMAND ;PIC Data Port +CDI_BIT .equ 13 ;Coindoor Interlock Bit (COIN input) + + +SYSCTRL .equ 1b00000h ;System control latch + ;BIT 2 - LED select (1) + ;BIT 4 - AUTO-ERASE ENABLE(0) + ;BIT 5 - OBJECT PALETTE ENABLE(0) + ;BIT 6 - CMOS page (YUNIT) + ;BIT 7 - CMOS page + + + .if WWFUNIT +IROMPG0 .equ 0000h ;Image ROM Bank 0 +IROMPG1 .equ 0100h ;Image ROM Bank 1 +IROMPG2 .equ 0200h ;Image ROM Bank 2 +IROMPG3 .equ 0300h ;Image ROM Bank 3 +LEDON .equ 0400h ;Turn LED ON +PALENB .equ 0800h ;Enable Color Palette +WROMINTDIS .equ 1000h ;Disable Write to ROM Interrupt +WROMINTCLR .equ 2000h ;Clear the Write to ROM Interrupt + .endif + + +IROM .equ 2000000h ;IMAGE ROM +ROM .equ 7800000h ;PROGRAM ROM + +;System stuff +AUTOERAS .equ 10h +OBJPALET .equ 20h + .if DEBUG + .if WWFUNIT +SYSCINIT .equ 0A87fh ;LED OFF, IROM PAGE 0, PALETTE ON, WRROMINT ON, CLEAR INT +;SYSCINIT .equ 0987fh ;LED OFF, IROM PAGE 0, PALETTE ON, WRROMINT OFF, CLEAR INT + .else +SYSCINIT .equ 0ffb8h ;INITIAL SYSCTRL VALUE + .endif + .else + .if WWFUNIT +SYSCINIT .equ 0987fh ;LED OFF, IROM PAGE 0, PALETTE ON, WRROMINT ON + .else +SYSCINIT .equ 0fff8h ;INITIAL SYSCTRL VALUE + .endif + .endif + +WPIROM .equ 80h + +ERASECOL .equ 0 ;Screen erase color # +ERASELOC .equ COLRAM ;Screen erase color loc + +;DMA stuff +DMAREGS .equ 1a000c0h ;Bottom of dma registers for mmtm + +DMAOFFST .equ 1a00000h ; DMA offset +DMACTRL .equ 1a00010h ; DMA control. BIT 15: + ; 0=DMA IDLE (R), 1=DMA BUSY (R) + ; 0=STOP DMA (W*2), 1=START DMA (W) +DMAGO .equ DMACTRL ; FOR SYSCHECK +DMASAGL .equ 1a00020h ; *Data start (low 16 bits) +DMASAGH .equ 1a00030h ; *Data start (high 16 bits) +DMAHORIZ .equ 1a00040h ; Dest X +DMAVERT .equ 1a00050h ; Dest Y +DMAHSIZE .equ 1a00060h ; WIDTH +DMAVSIZE .equ 1a00070h ; HEIGHT +DMACMAP .equ 1a00080h ; Color map select +DMACONST .equ 1a00090h ; Constant color +DMASCALEX .equ 1a000a0h ; X scale 8:8 +DMASCALEY .equ 1a000b0h ; Y ^ +DMAWINDOW .equ 1a000c0h ; Window LR or TB +DMALT .equ 1a000c0h ; Window [ LEFT : TOP ] +DMARB .equ 1a000d0h ; Window [ RIGHT : BOTTOM ] +DMATEST .equ 1a000e0h ; RESERVED (TEST REGISTER) +DMACONF .equ 1a000f0h ; Config + + + +* LAYOUT OF DMA CONFIG REGISTER +DMAWIN .set 20h ; Bit 5 (0 = rt/lft, 1 = top/bot) +DMACF4 .SET 10H ; BIT 4 TIMING PARAMETER + +SECCHIP .equ 1c00060h ;LOCATION OF SECURITY CHIP JKM 2/13/90 + +;Bits for the dma control word +DMAWZ .equ 8001h ;WRITE ZERO DATA +DMAWNZ .equ 8002h ;WRITE NON-ZERO DATA +DMACZ .equ 8004h ;WRITE CONSTANT ON ZERO DATA +DMACNZ .equ 8008h ;WRITE CONSTANT ON NON-ZERO DATA +DMAWAL .equ 8003h ;WRITE BOTH ZERO & NON-ZERO DATA +DMACAL .equ 800ch ;WRITE CONSTANT ON BOTH ZERO & NON-ZERO DATA + +;IFLAGS bits +FLIPH_IFB .equ 14 +SCALE_IFB .equ 15 + +IPCOUNT .equ -10h ;multi-part block count +;ISIZE .equ 0 +ISIZEX .equ 0 +ISIZEY .equ 10h +IANIOFF .equ 20h +IANIOFFX .equ 20h +IANIOFFY .equ 30h +ISAG .equ 40h +ICTRL .equ 60h +ICMAP .equ 70h +ICPBZ .equ 70h ;multi-part block size +IANI2X .equ 90h +IANI2Y .equ 0a0h +IANI2Z .equ 0b0h +IFLAGS .equ 0c0h +IANI3X .equ 0d0h +IANI3Y .equ 0e0h +IANI3Z .equ 0f0h +IANI3ID .equ 100h +ICBZ .equ 110h ;single part/head part size + +W .equ 0 +L .equ 1 + +*SOUND PROCESSOR EQUATES +NINT .equ 800H ;SOUND NON-INTERRUPTABLE +NINTEQ .equ 400H ;SOUND NON-INTERRUPTABLE BY EQUAL PRIORITY +CHANNEL .equ 0F000H +NOTIME .equ 4000H + +WDOGNUM .equ 1A2B3C4DH ;"SYSTEM INITIALIZED" MARKER + +*FRANIM FLAG MASKS +FLIPBITS equ 4000H +NEWPALET equ 2000H +DELTAXZ equ 1000H +DELTAY equ 800H +*ANIMATION SCRIPT FLAG BIT POSITIONS +BFLIPBIT equ 14 +BNEWPAL equ 13 +BDELTAXZ equ 12 +BDELTAY equ 11 + +*Palette allocator equates + + .if TUNIT +NUMPAL .equ 80 ;Max # pals +NMFPAL .equ 80 ;# foregnd pals +NMBPAL .equ 0 ;# backgnd pals + .else +NUMPAL .equ 16 ;Max # pals +NMFPAL .equ 16 ;# foregnd pals +NMBPAL .equ 0 ;# backgnd pals + .endif + +*struct PAL +PALID .equ 0 ;UHL *palette data +*endstruct + +PALRSIZ .equ 32 ;Size of pal allocation ram + +;Palette transfer ram +PLDCNT .equ 0 ;# colors +PALSRC .equ 10h ;* palette color data +PALDEST .equ 30h ;Destination palette|Start color +PALTSIZ .equ 40h ;Size of each cell +NUMPALT .equ 60 ;# of transfers allowed + +****************************************************************************** + +BIT0 equ 0001h +BIT1 equ 0002h +BIT2 equ 0004h +BIT3 equ 0008h +BIT4 equ 0010h +BIT5 equ 0020h +BIT6 equ 0040h +BIT7 equ 0080h +BIT8 equ 0100h +BIT9 equ 0200h +BIT10 equ 0400h +BIT11 equ 0800h +BIT12 equ 1000h +BIT13 equ 2000h +BIT14 equ 4000h +BIT15 equ 8000h + +****************************************************************************** + + \ No newline at end of file diff --git a/BACKUP/TABLES.ASM b/BACKUP/TABLES.ASM new file mode 100644 index 0000000..2d80849 --- /dev/null +++ b/BACKUP/TABLES.ASM @@ -0,0 +1,362 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/7/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "tables.asm" + .title "various data tables" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* ARGUMENTS: a0 = target area +* a11 = * target wrestler process +* a13 = * wrestler process +* +* TRASHES: a0,a1,a14 +* + SUBR set_target_offsets + + + move *a11(WRESTLERNUM),a14 + movi 5,a1 + mpyu a14,a1 + + add a0,a1 ; + target area + movi 3*16,a0 + mpyu a0,a1 ; * 3 WORDS + + move *a11(PLYRMODE),a0 + X32 a0 + addi #mode_table,a0 + move *a0,a0,L + add a0,a1 + + move *a1+,a0 + move a0,*a13(TGT_XOFF) + move *a1+,a0 + move a0,*a13(TGT_YOFF) + move *a1,a0 + move a0,*a13(TGT_ZOFF) + + 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 + .long mode_normal ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .long mode_choking ;25 + + +************************ +mode_normal ;0 +mode_running ;1 +mode_inair ;2 +mode_attached ;3 +mode_block ;7 +mode_dizzy ;8 +mode_grapple ;13 +mode_master ;14 +mode_slave ;15 +mode_headhold ;16 +;mode_headheld ;19 +mode_puppet ;20 +mode_inair2 ;21 +mode_chokehold ;24 +mode_choking ;25 + +; x,y,z +;0 Bret Hart + .word 7,105,0 ;0 HEAD + .word 6,85,0 ;1 CHEST + .word 0,57,0 ;2 GROIN + .word 17,37,0 ;3 KNEES + .word 21,9,0 ;4 FEET +;1 Razor Ramon + .word 11,106,0 ;0 HEAD + .word 6,86,0 ;1 CHEST + .word 1,58,0 ;2 GROIN + .word 21,34,0 ;3 KNEES + .word 20,4,0 ;4 FEET +;2 Undertaker + .word 11,110,0 ;0 HEAD + .word 6,88,0 ;1 CHEST + .word 1,61,0 ;2 GROIN + .word 13,36,0 ;3 KNEES + .word 8,5,0 ;4 FEET +;3 Yokozuna + .word 10,100,0 ;0 HEAD + .word 8,79,0 ;1 CHEST + .word 2,46,0 ;2 GROIN + .word 17,28,0 ;3 KNEES + .word 2,5,0 ;4 FEET + +;4 Shawn Michaels + .word 4,97,0 ;0 HEAD + .word 2,77,0 ;1 CHEST + .word -3,49,0 ;2 GROIN + .word 1,32,0 ;3 KNEES + .word 2,3,0 ;4 FEET + +;5 Bam Bam + .word 6,103,0 ;0 HEAD + .word 5,86,0 ;1 CHEST + .word 1,54,0 ;2 GROIN + .word 20,33,0 ;3 KNEES + .word 26,7,0 ;4 FEET +;6 Doink + .word 6,100,0 ;0 HEAD + .word 6,75,0 ;1 CHEST + .word 6,51,0 ;2 GROIN + .word 19,30,0 ;3 KNEES + .word 20,7,0 ;4 FEET +;7 Adam Bomb + .word 0,0,0 ;0 HEAD + .word 0,0,0 ;1 CHEST + .word 0,0,0 ;2 GROIN + .word 0,0,0 ;3 KNEES + .word 0,0,0 ;4 FEET +;8 Lex Luger + .word 4,107,0 ;0 HEAD + .word 4,88,0 ;1 CHEST + .word 1,59,0 ;2 GROIN + .word 20,37,0 ;3 KNEES + .word 20,9,0 ;4 FEET + + + +************************ +mode_onground ;4 +;This is for dead mode on the ground!?!?!?! +mode_dead ;9 +; x,y,z +;0 Bret Hart + + .word 51,9,0 ;0 HEAD + .word 23,9,0 ;1 CHEST + .word -2,8,0 ;2 GROIN + .word -33,7,0 ;3 KNEES + .word -69,9,0 ;4 FEET + +;1 Razor Ramon + .word 53,11,0 ;0 HEAD + .word 22,15,0 ;1 CHEST + .word -4,14,0 ;2 GROIN + .word -36,13,0 ;3 KNEES + .word -77,12,0 ;4 FEET +;2 Undertaker + .word 62,18,0 ;0 HEAD + .word 23,0,0 ;1 CHEST + .word -6,19,0 ;2 GROIN + .word -37,16,0 ;3 KNEES + .word -73,15,0 ;4 FEET +;3 Yokozuna + .word 47,18,0 ;0 HEAD + .word 21,20,0 ;1 CHEST + .word -6,20,0 ;2 GROIN + .word -26,28,0 ;3 KNEES + .word -48,18,0 ;4 FEET + +;4 Shawn Michaels + .word 47,10,0 ;0 HEAD + .word 20,12,0 ;1 CHEST + .word -6,11,0 ;2 GROIN + .word -32,15,0 ;3 KNEES + .word -70,6,0 ;4 FEET + +;5 Bam Bam + .word 67,0,0 ;0 HEAD + .word 25,0,0 ;1 CHEST + .word -2,0,0 ;2 GROIN + .word -38,0,0 ;3 KNEES + .word -12,0,0 ;4 FEET +;6 Doink + .word 40,11,0 ;0 HEAD + .word 12,13,0 ;1 CHEST + .word -12,15,0 ;2 GROIN + .word -35,17,0 ;3 KNEES + .word -65,10,0 ;4 FEET +;7 Adam Bomb + .word 0,0,0 ;0 HEAD + .word 0,0,0 ;1 CHEST + .word 0,0,0 ;2 GROIN + .word 0,0,0 ;3 KNEES + .word 0,0,0 ;4 FEET +;8 Lex Luger + .word 54,14,0 ;0 HEAD + .word 29,16,0 ;1 CHEST + .word -3,16,0 ;2 GROIN + .word -32,15,0 ;3 KNEES + .word -55,14,0 ;4 FEET + +************************ +mode_bouncing ;5 +mode_onturnbkl ;6 +mode_oppoverhead ;10 +mode_climbturnbkl ;11 +mode_waitanim ;12 +; x,y,z +;0 Bret Hart + .word 7,105,0 ;0 HEAD + .word 6,85,0 ;1 CHEST + .word 0,57,0 ;2 GROIN + .word 17,37,0 ;3 KNEES + .word 21,9,0 ;4 FEET +;1 Razor Ramon + .word 2,110,0 ;0 HEAD + .word 4,87,0 ;1 CHEST + .word 5,60,0 ;2 GROIN + .word 17,33,0 ;3 KNEES + .word 22,3,0 ;4 FEET +;2 Undertaker + .word 11,110,0 ;0 HEAD + .word 6,88,0 ;1 CHEST + .word 1,61,0 ;2 GROIN + .word 13,36,0 ;3 KNEES + .word 8,5,0 ;4 FEET +;3 Yokozuna + .word 5,109,0 ;0 HEAD + .word 0,91,0 ;1 CHEST + .word -2,53,0 ;2 GROIN + .word 8,33,0 ;3 KNEES + .word 14,10,0 ;4 FEET + +;4 Shawn Michaels + .word 15,94,0 ;0 HEAD + .word 9,75,0 ;1 CHEST + .word 1,52,0 ;2 GROIN + .word 4,31,0 ;3 KNEES + .word -1,0,0 ;4 FEET +;5 Bam Bam + .word 6,103,0 ;0 HEAD + .word 5,86,0 ;1 CHEST + .word 1,54,0 ;2 GROIN + .word 20,33,0 ;3 KNEES + .word 26,7,0 ;4 FEET +;6 Doink + .word 6,100,0 ;0 HEAD + .word 6,75,0 ;1 CHEST + .word 6,51,0 ;2 GROIN + .word 19,30,0 ;3 KNEES + .word 20,7,0 ;4 FEET +;7 Adam Bomb + .word 0,0,0 ;0 HEAD + .word 0,0,0 ;1 CHEST + .word 0,0,0 ;2 GROIN + .word 0,0,0 ;3 KNEES + .word 0,0,0 ;4 FEET +;8 Lex Luger + .word 4,107,0 ;0 HEAD + .word 4,88,0 ;1 CHEST + .word 1,59,0 ;2 GROIN + .word 20,37,0 ;3 KNEES + .word 20,9,0 ;4 FEET + +************************ +mode_headheld ;19 +;0 Bret Hart + .word 39,58,0 ;0 HEAD + .word 9,62,0 ;1 CHEST + .word -8,55,0 ;2 GROIN + .word -2,36,0 ;3 KNEES + .word 3,2,0 ;4 FEET +;1 Razor Ramon + .word 30,49,0 ;0 HEAD + .word 5,57,0 ;1 CHEST + .word -13,54,0 ;2 GROIN + .word 0,34,0 ;3 KNEES + .word -4,2,0 ;4 FEET +;2 Undertaker + .word 38,67,0 ;0 HEAD + .word 13,67,0 ;1 CHEST + .word -10,58,0 ;2 GROIN + .word 13,38,0 ;3 KNEES + .word 6,6,0 ;4 FEET +;3 Yokozuna + .word 34,61,0 ;0 HEAD + .word 9,56,0 ;1 CHEST + .word -12,50,0 ;2 GROIN + .word -7,29,0 ;3 KNEES + .word -1,4,0 ;4 FEET +;4 Shawn Michaels + .word 35,56,0 ;0 HEAD + .word 12,57,0 ;1 CHEST + .word -10,53,0 ;2 GROIN + .word 1,34,0 ;3 KNEES + .word 0,8,0 ;4 FEET +;5 Bam Bam + .word 46,60,0 ;0 HEAD + .word 20,56,0 ;1 CHEST + .word -1,49,0 ;2 GROIN + .word 6,32,0 ;3 KNEES + .word 15,7,0 ;4 FEET +;6 Doink + .word 33,61,0 ;0 HEAD + .word 6,63,0 ;1 CHEST + .word -13,53,0 ;2 GROIN + .word -2,33,0 ;3 KNEES + .word 5,4,0 ;4 FEET +;7 Adam Bomb + .word 0,0,0 ;0 HEAD + .word 0,0,0 ;1 CHEST + .word 0,0,0 ;2 GROIN + .word 0,0,0 ;3 KNEES + .word 0,0,0 ;4 FEET +;8 Lex Luger + .word 48,62,0 ;0 HEAD + .word 20,54,0 ;1 CHEST + .word 1,46,0 ;2 GROIN + .word 27,31,0 ;3 KNEES + .word 19,6,0 ;4 FEET + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/TAKER.ASM b/BACKUP/TAKER.ASM new file mode 100644 index 0000000..e4bbf03 --- /dev/null +++ b/BACKUP/TAKER.ASM @@ -0,0 +1,2449 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "taker.asm" + .title "Undertaker specific game code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "jjxm.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" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref wres_get_but_val_up,wres_get_but_val_down,wres_get_but_val_cur + .ref wres_get_stick_val_cur + + .ref wres_get_stick_rel_cur,wres_get_stick_rel_new + .ref wres_get_stick_val_down + + .ref get_punch_dtime + .ref clear_damage_log + + .ref change_anim1,change_anim1a + .ref change_anim2,change_anim2a + .ref keep_attached + .ref get_opp_plyrmode + .ref check_secret_moves + .ref execute_walk + .ref bounce_off_ropes + .ref climb_turnbuckle + .ref do_roll + .ref CLIMB_ROPES,ADD_IF_SILENT,JUMP_ROPES + ;from WRESTLE.ASM + .ref lineup_grapple + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref und_2_pin_anim + .ref und_4_pin_anim + .ref und_4_pin2_anim + + .ref und_4_block_anim,und_2_block_anim + .ref und_2_hitblock_anim,und_4_hitblock_anim + .ref start_run_anim + + .ref wres_slave_anim + .ref und_zip_anim + + .ref und_stand2_anim,und_stand8_anim + .ref und_stand4_anim,und_stand6_anim + .ref und_torso2_anim,und_torso8_anim + .ref und_torso4_anim,und_torso6_anim + + .ref und_2_to_4_turn_anim,und_8_to_6_turn_anim ;stand + .ref und_4_to_2_turn_anim,und_6_to_8_turn_anim + .ref und_4_to_6_turn_anim,und_6_to_4_turn_anim + .ref und_2_to_8_turn_anim,und_8_to_2_turn_anim + .ref und_4_to_8_turn_anim,und_6_to_2_turn_anim + .ref und_2_to_6_turn_anim,und_8_to_4_turn_anim + + .ref und_2_to_4_turn2_anim,und_8_to_6_turn2_anim ;torso + .ref und_4_to_2_turn2_anim,und_6_to_8_turn2_anim + .ref und_4_to_6_turn2_anim,und_6_to_4_turn2_anim + .ref und_2_to_8_turn2_anim,und_8_to_2_turn2_anim + .ref und_4_to_8_turn2_anim,und_6_to_2_turn2_anim + .ref und_2_to_6_turn2_anim,und_8_to_4_turn2_anim + + .ref und_walk1_f2_anim,und_walk2_f2_anim,und_walk4_f2_anim + .ref und_walk5_f2_anim,und_walk6_f2_anim,und_walk8_f2_anim + + .ref und_walk1_f4_anim,und_walk2_f4_anim,und_walk4_f4_anim + .ref und_walk5_f4_anim,und_walk6_f4_anim,und_walk8_f4_anim + + .ref und_run2_anim + + .ref und_2_punch_anim,und_4_punch_anim + .ref und_2_kick_anim,und_4_kick_anim + + .ref und_2_head_hit_anim,und_4_head_hit_anim + .ref und_2_head_hit2_anim,und_4_head_hit2_anim + .ref und_2_body_hit_anim,und_4_body_hit_anim + .ref und_hitonground_anim + + .ref und_2_butt_anim,und_4_butt_anim + .ref und_2_knee_anim,und_4_knee_anim + .ref und_4_bigboot_anim + + .ref und_head_hit2_anim,und_head_hit_dizzy_anim + .ref und_2_stomp_anim,und_4_stomp_anim + + .ref und_2_push_anim,und_4_push_anim + .ref und_4_losebal_anim + + .ref und_4_grabfling_anim + .ref und_2_grabfling_anim + +; .ref und_ocrun_anim + .ref und_fall_back_anim + +; .ref und_summon_anim,und_summon2_anim + .ref und_getup_anim +; .ref und_4_graboh_anim + .ref und_heldoh_anim + + .ref und_2_lbowdrop_anim,und_4_lbowdrop_anim + .ref und_flying_butt_drop_anim,und_tbukl_butt_drop_anim + + .ref und_sliding_choke_anim + .ref und_tombstone_smash_anim + .ref und_neckbreaker_anim + .ref und_chokeslam_anim + .ref und_tombstone_anim + .ref und_neckbreaker_anim + .ref und_2_snapmirror_anim + .ref und_4_snapmirror_anim + .ref und_2_snapmirror2_anim + .ref und_4_snapmirror2_anim + .ref und_climb_down_anim,und_climb_up_anim + .ref und_spirit_push_anim + .ref und_spirit_pull_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +und_secret_moves + +;These secret moves are triggered only after a move list seq has ended! You +;can't hold on the last button press and have it trigger! + +;Button held down moves need to be first entry + .long #button_hold + .long #grab_fling + .long #grab_toss + .long #neck_grab + .long #choke_slide + .long #tomb_smash + .long 0 + +***************************************************************************** +* +* SPECIAL MOVE PROCESSES +* + + SUBR und_smove_table + + .long und_hdhold_neckbrk + .long und_hdhold_pile ;(tombstone) + .long und_spirit_pull + .long und_spirit_push + .long und_grab_toss_air + .long 0 + +******************************************************************************* + +#tomb_smash + .word B_SKICK, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_tomb + +#scrt_tomb + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + movi und_tombstone_smash_anim,a0 + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + +******************************************************************************* + +#choke_slide + .word B_PUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_DOWN_TOWARD, J_REAL_LR + .word J_DOWN, J_REAL_LR + .word 8000h | 50 ;max + .long #scrt_choke + +#scrt_choke + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + movi und_sliding_choke_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#grab_toss + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long scrt_hiptoss + +scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit + + move *a13(CLOSEST_DIST),a0 + cmpi 68h,a0 + jrgt #out + +#doit + FACE24 und,snapmirror_anim + calla change_anim1a + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + +; WRSND W_TAKER,GRABFLING_T1,GRABFLING_T2 + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + +******************************************************************************* + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word J_TOWARD, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 30 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + .ref und_3_head_hold_anim + movi und_3_head_hold_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#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 110,a0 ;> min? + jrlt #no_punch + + callr scrt_spirit + setc + rets + +#no_punch + clrc + rets + +scrt_spirit + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #rev + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrz #leapbrk + jruc #break + +#rev + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + +#break + .ref und_neckbreaker2_anim + movi und_neckbreaker2_anim,a0 + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + +#leapbrk +;Sliding neck breaker + .ref und_neckbreaker3_anim + movi und_neckbreaker3_anim,a0 + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + + +******************************************************************************* + +#grab_fling + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long scrt_grabfling + +scrt_grabfling + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + FACE24 und,snapmirror_anim + calla change_anim1a + + clr a0 + move a0,*a13(ATTACH_PROC),L + SETMODE NORMAL + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + FACE24 und,grabfling_anim + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 +#out + rets + +******************************************************************************* +#* +und_hdhold_neckbrk + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_UP,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_DOWN_AWAY|J_DOWN_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + PUSH a13 + move a8,a13 + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + PULL a13 + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#slam + movi und_neckbreaker_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* +#* +und_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,0,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + PUSH a13 + move a8,a13 + .ref DO_REVERSAL + .ref DO_REVERSAL_MESS + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + PULL a13 + +;Make sure the reversal works! + movk 10,a0 + move a0,*a8(SAFE_TIME) + + move *a8(OBJ_ZPOS),a0,L + addi [5,0],a0 + move a0,*a8(OBJ_ZPOS),L + +#slam + movi und_tombstone_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* +#* +und_spirit_push + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #lp0 + cmpi MODE_HEADHELD,a0 + jrz #lp0 + + clr a11 + +; WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,0,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp0 + + PUSH a13 + move a8,a13 + calla get_opp_plyrmode + PULL a13 + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_ONGROUND,a0 + jrz #lp + + movi und_spirit_push_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* +#* +und_spirit_pull + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #lp0 + cmpi MODE_HEADHELD,a0 + jrz #lp0 + + clr a11 + +; WAITSWITCH_DWN J_AWAY,J_UP|J_DOWN,#lp + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_KICK,0,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp0 + + PUSH a13 + move a8,a13 + calla get_opp_plyrmode + PULL a13 + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_ONGROUND,a0 + jrz #lp + + movi und_spirit_pull_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* +#* +und_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_PUNCH,J_DOWN_AWAY|J_UP_AWAY,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + +;Don't do it when he is on ground + PUSH a13 + move a8,a13 + calla get_opp_plyrmode + PULL a13 +;Don't do it when he is on ground + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 68h,a0 + jrgt #lp + + FACE24 und,snapmirror_anim + jruc #cont + +#doit2 FACE24 und,snapmirror2_anim +#cont move a0,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + clr a0 + move a0,*a8(ATTACH_PROC),L + + SETMODE NORMAL + + SLEEP 60 + + jruc #lp + +******************************************************************************* +;; WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp +;; WAITSWITCH_DWN J_AWAY,J_UP|J_DOWN,#lp +;; WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp +;; WAITSWITCH_DWN B_SKICK,0,#lp +;; WAITSWITCH_DWN J_AWAY|J_DOWN,0,#lp +;; WAITSWITCH_DWN J_DOWN,0,#lp +;; WAITSWITCH_DWN J_TOWARD|J_DOWN,0,#lp +;; WAITSWITCH_DWN J_TOWARD,0,#lp +;; WAITSWITCH_DWN B_SKICK,0,#lp +; +; +;#lp +; clr a11 +; WAITSWITCH_DWN J_UP,J_LEFT|J_RIGHT,#lp +; +; movi #TIMEOUT,a11 +; WAITSWITCH_DWN J_DOWN,J_UP|J_LEFT|J_RIGHT,#lp +; +; nop +; +; WAITSWITCH_DWN J_AWAY,J_UP|J_DOWN,#lp +; +; nop +; +; WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp +; +; nop +; +; WAITSWITCH_DWN B_SPUNCH,0,#lp +; +; movi und_sliding_choke_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; jruc #lp + + +#***************************************************************************** + + SUBR taker_ani_init + + clr a0 + move a0,*a13(ATTIMG_CUR_FRAME),L + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi und_stand4_anim,a0 + calla change_anim1a + + movi und_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + .ref do_taunt + CREATE0 do_taunt + PULL a10 + + rets + +#p1 + movi und_stand2_anim,a0 + calla change_anim1a + + movi und_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* UNDERTAKER CONTROL CODE +* +* a13 = * taker process + + SUBR move_taker + + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + movi und_secret_moves,a11 SANS + 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 + .long mode_normal ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .ref mode_inair2 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .long mode_choking ;25 + + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + +;Perhaps we need to interrupt any sequence when a wrstler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + +;Any button causes a pin + move a13,a0 + calla wres_get_but_val_cur + move a0,a0 + jrz #opp_not_dead +;Make sure opponent is on the ground! +;First, see if opponent is on the ground. + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #opp_not_dead + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a1,L + + move *a1(OBJ_YPOS),a0,L + move *a1(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + +;Opponent is on ground. +;Now check to see if I'm attached to him in puppet mode! + move *a13(ATTACH_PROC),a1,L + jrz #done + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 +;If I'm attached to him, let the move finish! + jrz #opp_not_dead +#done + move *a13(NEW_FACING_DIR),a0 + btst MOVE_DOWN_BIT,a0 + jrz #reg + + move *a13(CLOSEST_ZDIST),a0 + cmpi 40h,a0 + jrge #reg + + move *a13(CLOSEST_XDIST),a0 + cmpi 35,a0 + jrge #reg + + movi und_4_pin2_anim,a0 + calla change_anim1a + + rets +#reg + FACE24 und,pin_anim + calla change_anim1a + + rets + +#opp_notgnd +#opp_not_dead + move *a13(IMMOBILIZE_TIME),a0 + jrnz #no_climb + + 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 + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets +#no_climb + + calla execute_walk + +#no_interrupt + rets + +#action_table +;This table accounts for 2 buttons being hit simultaneously. + + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick ;9 + .long #z,#z,#kick,#z,#z,#z ;10-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#z + + + rets + +#graboh ;8 + + rets + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 headbutt +* dizzy " " +* normal > normal punch +* dizzy " " +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running hiptoss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 75, 45,#punch_hdbutt,#punch_punch + JJXM RUNNING, 75, 45,#punch_hdbutt,#punch_punch + JJXM BLOCK, 75, 45,#punch_hdbutt,#punch_punch + JJXM DIZZY, 75, 45,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 120,120,#punch_lbowdrop,#punch_punch + JJXM BOUNCING, 75, 45,#punch_hdbutt,#punch_punch +; JJXM BOUNCING, #punch_rets + JJXM ONTURNBKL, 75, 96,#punch_yankdown,#punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM INAIR, 75, 45,#punch_hdbutt,#punch_punch + JJXM ATTACHED, 75, 45,#punch_hdbutt,#punch_punch + JJXM DEAD, 120,120,#punch_lbowdrop,#punch_punch + JJXM OPPOVERHEAD, 75, 45,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 75, 45,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 75, 45,#punch_hdbutt,#punch_punch + JJXM MASTER, 75, 45,#punch_hdbutt,#punch_punch + JJXM SLAVE, 75, 45,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 75, 45,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 75, 45,#punch_hdbutt,#punch_punch + JJXM PUPPET, 75, 45,#punch_hdbutt,#punch_punch + JJXM INAIR2, 75, 45,#punch_hdbutt,#punch_punch + JJXM_END + +#punch_rets + rets + +***** +#punch_punch +std_punch + + FACE24 und,punch_anim +; movi und_spirit_push_anim,a0 + calla change_anim1a + + WRSND W_TAKER,PUNCH_T1,PUNCH_T2 + + rets + +***** +#punch_hdbutt + + FACE24 und,butt_anim + calla change_anim1a + + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#punch_lbowdrop + + FACE24 und,lbowdrop_anim + calla change_anim1a + + WRSND W_TAKER,LBOWDROP_T1,LBOWDROP_T2 + + rets + +***** +#punch_yankdown +std_yankdown + + move *a13(INRING),a0 +; jrnz std_punch ;outside of ring +; + rets + +***** +#punch_hiptoss +;std_hiptoss + + rets + + +************ +#block ;2 + +std_block + FACE24 und,block_anim +; movi und_spirit_pull_anim,a0 + calla change_anim1 + + rets + +; .if 0 +; +;;TEMP!! +; movi und_2_stomp_anim,a0 +; move *a13(FACING_DIR),a14 +; btst MOVE_UP_BIT,a14 +; jrnz #2_jmp +; movi und_4_stomp_anim,a0 +;#2_jmp +; +; movi und_summon_anim,a0 +;; movi und_summon2_anim,a0 +;; movi und_4_lbowdrop_anim,a0 +; +; movi und_neckbreaker_anim,a0 +; calla change_anim1a +; +; rets +; +; .endif + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 120 120 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 95, 35,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 95, 35,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 95, 35,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 95, 35,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 136,112,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, 95, 35,#spunch_special,#spunch_slap ;1 +; JJXM BOUNCING, #spunch_rets ;5 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 95, 35,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 95, 35,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 96,112,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 95, 35,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 95, 35,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 95, 35,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 95, 35,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 95, 35,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 95, 35,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, do_pile ;19 + JJXM PUPPET, 95, 35,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 95, 35,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +#spunch_slap +;jumping punch attack + .ref und_2_slap_anim + .ref und_4_slap_anim + FACE24 und,slap_anim + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + +***** +#spunch_special +;If stick is toward opponent, then do quick head hold + move a13,a0 + calla wres_get_stick_val_cur + btst MOVE_DOWN_BIT,a0 + jrnz #ck_up + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrz #cont + + move *a13(CLOSEST_XDIST),a1 + cmpi 70,a1 +; jrgt std_punch + jrgt #spunch_slap + jruc #hdbutt +#cont + .ref und_3_head_hold2_anim + movi und_3_head_hold2_anim,a0 + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + rets + +#ck_up +;Check for uppercut + .ref und_2_uppercut_anim + .ref und_4_uppercut_anim + FACE24 und,uppercut_anim + calla change_anim1 + + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + rets + +#hdbutt + + FACE24 und,butt_anim + calla change_anim1 + + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#spunch_lbowdrop + .ref und_2_hair_pickup_anim + .ref und_4_hair_pickup_anim +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + + .ref process_ptrs + + addi process_ptrs,a14 + move *a14,a14,L + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 und,hair_pickup_anim + calla change_anim1 + WRSND W_TAKER,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no FACE24 und,lbowdrop_anim + calla change_anim1 + WRSND W_TAKER,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 knee +* dizzy " " +* normal > normal kick +* dizzy " " +* +* onground < 120 120 stomp +* onground > normal kick +* +* running normal kick +* bouncing normal kick +* +* onturnbkl normal kick +* climbturnbkl normal kick +* + JJXM_INIT + JJXM NORMAL, 65, 92,#kick_knee,#kick_kick + JJXM RUNNING, 120,92,#kick_kick,#kick_flyingkick ;1 + JJXM INAIR, 65, 92,#kick_knee,#kick_kick + JJXM ATTACHED, 65, 92,#kick_knee,#kick_kick + JJXM ONGROUND, 120,120,#kick_stomp,#kick_kick + JJXM BOUNCING, 120,92,#kick_kick,#kick_flyingkick ;5 + JJXM ONTURNBKL, #kick_kick + JJXM BLOCK, 65, 92,#kick_knee,#kick_kick + JJXM DIZZY, 65, 92,#kick_knee,#kick_kick + JJXM DEAD, 120,120,#kick_stomp,#kick_kick + JJXM OPPOVERHEAD, 65, 92,#kick_knee,#kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM WAITANIM, 65, 92,#kick_knee,#kick_kick + JJXM GRAPPLE, 65, 92,#kick_knee,#kick_kick + JJXM MASTER, 65, 92,#kick_knee,#kick_kick + JJXM SLAVE, 65, 92,#kick_knee,#kick_kick + JJXM HEADHOLD, 65, 92,#kick_knee,#kick_kick + JJXM HEADHELD, 65, 92,#kick_knee,#kick_kick + JJXM PUPPET, 65, 92,#kick_knee,#kick_kick + JJXM INAIR2, 65, 92,#kick_knee,#kick_kick + JJXM_END + +***** +#kick_kick +std_kick + + FACE24 und,kick_anim + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +***** +#kick_flyingkick + + movi und_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_TAKER,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +#kick_knee + + FACE24 und,knee_anim + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +***** +#kick_stomp +attack_stomp + + FACE24 und,stomp_anim + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 120 120 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 60 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 60, 60,#skick_special,#skick_kick ;0 + JJXM RUNNING, #skick_bigboot ;1 + JJXM INAIR, 60, 60,#skick_special,#skick_kick ;2 + JJXM ATTACHED, 60, 60,#skick_special,#skick_kick ;3 + JJXM ONGROUND, 144,160,#skick_stomp,std_kick ;4 + JJXM BOUNCING, #skick_bigboot ;5 + JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick ;6 + JJXM BLOCK, 60, 60,#skick_special,#skick_kick ;7 + JJXM DIZZY, 60, 60,#skick_special,#skick_kick ;8 + JJXM DEAD, 144,160,#skick_stomp,std_kick ;9 + JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick ;10 + JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick ;11 + JJXM WAITANIM, 60, 62,#skick_special,#skick_kick ;12 + JJXM GRAPPLE, 60, 62,#skick_special,#skick_kick ;13 + JJXM MASTER, 60, 62,#skick_special,#skick_kick ;14 + JJXM SLAVE, 60, 62,#skick_special,#skick_kick ;15 + JJXM HEADHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM HEADHELD, std_kick + JJXM PUPPET, 60, 62,#skick_special,#skick_kick ;20 + JJXM INAIR2, 60, 60,#skick_special,#skick_kick ;21 + JJXM_END + +***** +#skick_kick + .ref und_2_super_kick_anim + .ref und_4_super_kick_anim + FACE24 und,super_kick_anim + calla change_anim1a + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + rets + + +***** +#skick_special +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrz #cont2 + + FACE24 und,knee_anim + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +#cont2 + .ref und_4_knee_fall_anim + movi und_4_knee_fall_anim,a0 + calla change_anim1 + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + rets + +#skick_stomp + + FACE24 und,stomp_anim + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +***** +#skick_bigboot ;we can probably get away with just a #4 big boot + + movi und_4_bigboot_anim,a0 ;***** + calla change_anim1a + + WRSND W_TAKER,FLYKICK_T1,FLYKICK_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(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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_stick_val_cur + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#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 + .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 +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 butt-drop +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline + JJXM BLOCK, #punch_clothesline + JJXM DIZZY, #punch_clothesline + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_rets + JJXM RUNNING, #punch_clothesline + JJXM BOUNCING, #punch_clothesline + JJXM ONTURNBKL, #punch_clothesline + JJXM CLIMBTURNBKL, #punch_clothesline + JJXM INAIR, #punch_clothesline + JJXM ATTACHED, #punch_clothesline + JJXM DEAD, attack_bellyflop + JJXM OPPOVERHEAD, #punch_clothesline + JJXM WAITANIM, #punch_clothesline + JJXM GRAPPLE, #punch_clothesline + JJXM MASTER, #punch_clothesline + JJXM SLAVE, #punch_clothesline + JJXM HEADHOLD, #punch_clothesline + JJXM HEADHELD, #punch_clothesline + JJXM PUPPET, #punch_clothesline + JJXM INAIR2, #punch_clothesline + JJXM_END + +#punch_rets + rets + +***** +#punch_clothesline + clr a0 + move a0,*a13(RUN_TIME) + + SETMODE NORMAL + + move *a13(CLOSEST_XDIST),a1 + cmpi 70,a1 + jrlt #hdbutt + + FACE24 und,slap_anim + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + +#hdbutt + + FACE24 und,butt_anim + calla change_anim1 + + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#punch_bellyflop +attack_bellyflop + + movi und_flying_butt_drop_anim,a0 + calla change_anim1a + + WRSND W_TAKER,FLYKICK_T1,FLYKICK_T2 + + rets + +************ +#block ;2 + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 butt-drop +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick + JJXM BLOCK, #kick_flyingkick + JJXM DIZZY, #kick_flyingkick + JJXM ONGROUND, attack_bellyflop + JJXM RUNNING, #kick_flyingkick + JJXM BOUNCING, #kick_flyingkick + JJXM ONTURNBKL, #kick_flyingkick + JJXM CLIMBTURNBKL, #kick_flyingkick + JJXM INAIR, #kick_flyingkick + JJXM ATTACHED, #kick_flyingkick + JJXM DEAD, attack_bellyflop + JJXM OPPOVERHEAD, #kick_flyingkick + JJXM WAITANIM, #kick_flyingkick + JJXM GRAPPLE, #kick_flyingkick + JJXM MASTER, #kick_flyingkick + JJXM SLAVE, #kick_flyingkick + JJXM HEADHOLD, #kick_flyingkick + JJXM HEADHELD, #kick_flyingkick + JJXM PUPPET, #kick_flyingkick + JJXM INAIR2, #kick_flyingkick + JJXM_END + +#kick_rets + rets + +***** +#kick_flyingkick + + .ref und_flying_kick_anim + + movi und_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_TAKER,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 + +#***************************************************************************** + +mode_onground ;4 + + 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 und_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 + + ;this is so an attack isn't turned into a climbdown + ; in those 5-10 ticks before MODE_INAIR2 is set... + move *a13(ANIBASE),a14,L + cmpi und_climb_up_anim,a14 + jrne #no_climbdown + + movi und_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + + rets + +#no_climbdown + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#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 + + movi und_tbukl_butt_drop_anim,a0 + calla change_anim1a + + WRSND W_TAKER,FLYKICK_T1,FLYKICK_T2 + + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + ;check unint +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #no_interrupt + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #no_interrupt + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #punchblock ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + FACE24 und,push_anim + calla change_anim1a + + WRSND W_TAKER,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* taker with zero health + +mode_dizzy ;8 + + move *a13(GETUP_TIME),a0 + jrnz #still_going + + calla clear_damage_log + + clr a0 + move a0,*a13(STARS_FLAG) + + SETMODE NORMAL + +#still_going + 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(ATTACH_PROC),a10,L + jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#z ;0 + rets + +************ + +#punch ;1 +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag +; movi dnk_uppercuts_to_head_anim,a0 + .ref und_4_knee_butts_anim + movi und_4_knee_butts_anim,a0 + calla change_anim1a + rets + +#tag +; movi dnk_uppercut_to_head_anim,a0 + movi und_4_knee_anim,a0 + calla change_anim1a + rets + +************ +#super_punch ;4 +do_pile +;This flag is only set if doink has done repeated uppercuts! + move *a13(USR_VAR2),a0 + jrz #upper +;Announce combo move here! + + movi und_tombstone_anim,a0 + calla change_anim1a + rets + +#upper + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #z + + FACE24 und,uppercut_anim + calla change_anim1a + rets + + +#punchkick +#graboh +#kick + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #knee + +; .ref dnk_3_head_slam_anim + +; movi dnk_3_head_slam_anim,a0 + movi und_4_knee_anim,a0 + calla change_anim1a + rets + +#knee +; movi dnk_3_knee_to_head_anim,a0 + movi und_4_knee_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees +; move a13,a0 +; calla wres_get_stick_val_cur +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrnz #kick +; +;;Quick knees +;; movi dnk_3_knees_to_head_anim,a0 +; movi und_4_knee_anim,a0 +; calla change_anim1a + + rets + + +#***************************************************************************** +mode_headheld ;19 + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + .ref und_3_head_held_stand_anim + movi und_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + + +#***************************************************************************** +mode_puppet ;20 + rets + + +#***************************************************************************** +mode_chokehold ;24 + + move *a13(ATTACH_PROC),a0,L + jrz #lost_him + move *a0(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #lost_him + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#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 ;0 +#block ;2 + rets + +************ +#punch ;1 + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + move a13,a0 + calla wres_get_stick_val_cur + btst MOVE_UP_BIT,a0 + jrz #reg + + movi und_4_knee_butts_anim,a0 + calla change_anim1a + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + + rets +#reg + movi und_2_butt_anim,a0 + calla change_anim1a + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + + rets +#super_punch ;4 +;Check for uppercut + move a13,a0 + calla wres_get_stick_val_cur + btst MOVE_DOWN_BIT,a0 + jrz #punch + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + .ref und_2_uppercut_anim + .ref und_4_uppercut_anim + FACE24 und,uppercut_anim + calla change_anim1 + + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + btst PLAYER_DOWN_BIT,a0 + jrnz #tag + +#kick ;8 + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + movi und_2_knee_anim,a0 + calla change_anim1a + rets + +#tag + SETMODE NORMAL + + movi und_chokeslam_anim,a0 + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +************ + +#lost_him + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + movi MODE_NORMAL,a0 + move a0,*a13(ANIMODE) + + rets + + +#***************************************************************************** + SUBR mode_choking ;25 + + move *a13(ATTACH_PROC),a0,L + jrz #fall_out + move *a0(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #fall_out + + move *a13(GETUP_TIME),a0 + jrz #fall_out + rets + + +#fall_out + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + movi MODE_NORMAL,a0 + move a0,*a13(ANIMODE) + + rets + + +#***************************************************************************** + +#VEL equ 30000h +#DVEL equ 21f0eh + + + SUBR und_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 und_rotate_anims_table +; old = up right + .long und_stand2_anim ;new = up right + .long und_2_to_4_turn_anim ; = down right + .long und_2_to_6_turn_anim ; = down left + .long und_2_to_8_turn_anim ; = up left + +; old = down right + .long und_4_to_2_turn_anim ;new = up right + .long und_stand4_anim ; = down right + .long und_4_to_6_turn_anim ; = down left + .long und_4_to_8_turn_anim ; = up left + +; old = down left + .long und_6_to_2_turn_anim ;new = up right + .long und_6_to_4_turn_anim ; = down right + .long und_stand6_anim ; = down left + .long und_6_to_8_turn_anim ; = up left + +; old = up left + .long und_8_to_2_turn_anim ;new = up right + .long und_8_to_4_turn_anim ; = down right + .long und_8_to_6_turn_anim ; = down left + .long und_stand8_anim ; = up left + + + SUBR und_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long und_walk1_f2_anim ;1 (UP) + .long und_walk1_f2_anim ;2 (UP_RIGHT) + .long und_walk1_f4_anim ;3 (RIGHT) + .long und_walk1_f4_anim ;4 (DOWN_RIGHT) + .long und_walk1_f4_anim ;5 (DOWN) + .long und_walk1_f4_anim ;6 (DOWN_LEFT) + .long und_walk1_f2_anim ;7 (LEFT) + .long und_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk2_f2_anim ;2 (UP_RIGHT) + .long und_walk2_f2_anim ;3 (RIGHT) + .long und_walk2_f4_anim ;4 (DOWN_RIGHT) + .long und_walk8_f4_anim ;5 (DOWN) + .long und_walk8_f4_anim ;6 (DOWN_LEFT) + .long und_walk4_f2_anim ;7 (LEFT) + .long und_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk2_f2_anim ;2 (UP_RIGHT) + .long und_walk2_f2_anim ;3 (RIGHT) + .long und_walk4_f4_anim ;4 (DOWN_RIGHT) + .long und_walk4_f4_anim ;5 (DOWN) + .long und_walk8_f4_anim ;6 (DOWN_LEFT) + .long und_walk6_f2_anim ;7 (LEFT) + .long und_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk8_f2_anim ;2 (UP_RIGHT) + .long und_walk4_f4_anim ;3 (RIGHT) + .long und_walk4_f4_anim ;4 (DOWN_RIGHT) + .long und_walk2_f4_anim ;5 (DOWN) + .long und_walk6_f4_anim ;6 (DOWN_LEFT) + .long und_walk2_f2_anim ;7 (LEFT) + .long und_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long und_walk5_f2_anim ;1 (UP) + .long und_walk5_f2_anim ;2 (UP_RIGHT) + .long und_walk5_f4_anim ;3 (RIGHT) + .long und_walk5_f4_anim ;4 (DOWN_RIGHT) + .long und_walk5_f4_anim ;5 (DOWN) + .long und_walk5_f4_anim ;6 (DOWN_LEFT) + .long und_walk5_f2_anim ;7 (LEFT) + .long und_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk6_f2_anim ;2 (UP_RIGHT) + .long und_walk2_f2_anim ;3 (RIGHT) + .long und_walk6_f4_anim ;4 (DOWN_RIGHT) + .long und_walk2_f4_anim ;5 (DOWN) + .long und_walk4_f4_anim ;6 (DOWN_LEFT) + .long und_walk2_f2_anim ;7 (LEFT) + .long und_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk6_f2_anim ;2 (UP_RIGHT) + .long und_walk6_f2_anim ;3 (RIGHT) + .long und_walk8_f4_anim ;4 (DOWN_RIGHT) + .long und_walk4_f4_anim ;5 (DOWN) + .long und_walk4_f4_anim ;6 (DOWN_LEFT) + .long und_walk2_f2_anim ;7 (LEFT) + .long und_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk4_f2_anim ;2 (UP_RIGHT) + .long und_walk6_f2_anim ;3 (RIGHT) + .long und_walk8_f4_anim ;4 (DOWN_RIGHT) + .long und_walk6_f4_anim ;5 (DOWN) + .long und_walk2_f4_anim ;6 (DOWN_LEFT) + .long und_walk2_f2_anim ;7 (LEFT) + .long und_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR und_torso_anims_table +; old = up right + .long und_torso2_anim ;new = up right + .long und_2_to_4_turn2_anim ; = down right + .long und_2_to_6_turn2_anim ; = down left + .long und_2_to_8_turn2_anim ; = up left + +; old = down right + .long und_4_to_2_turn2_anim ;new = up right + .long und_torso4_anim ; = down right + .long und_4_to_6_turn2_anim ; = down left + .long und_4_to_8_turn2_anim ; = up left + +; old = down left + .long und_6_to_2_turn2_anim ;new = up right + .long und_6_to_4_turn2_anim ; = down right + .long und_torso6_anim ; = down left + .long und_6_to_8_turn2_anim ; = up left + +; old = up left + .long und_8_to_2_turn2_anim ;new = up right + .long und_8_to_4_turn2_anim ; = down right + .long und_8_to_6_turn2_anim ; = down left + .long und_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/TAKERIMG.ASM b/BACKUP/TAKERIMG.ASM new file mode 100644 index 0000000..fd7ba2b --- /dev/null +++ b/BACKUP/TAKERIMG.ASM @@ -0,0 +1,18 @@ + .FILE "takerimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include takerimg.tbl + .include takerimg.h + +****************************************************************************** + + .even + .include "taker.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/BACKUP/TAKERIMG.H b/BACKUP/TAKERIMG.H new file mode 100644 index 0000000..d83f719 --- /dev/null +++ b/BACKUP/TAKERIMG.H @@ -0,0 +1,97 @@ + .global U3CP3B + .global U2AH3A + .global U4AH3A + .global U4AM4C + .global U2AM2A + .global U3AE4A + .global U2BK3A + .global U4BK3C + .global U4LB4A + .global U3FD3B + .global U3GD2A + .global U3GD4A + .global U4KM3E + .global U2KM3B + .global U4BG3A + .global U3DC3A + .global U2KB3A + .global U4KB3A + .global U2NM3A + .global U4NM3A + .global U4BF3A + .global U4BF3Z + .global U4GF3A + .global U4PO4C + .global U2CT2C + .global U4SB4A + .global U4PM3C + .global U4SW4A + .global U4TI4C + .global U2GR3A + .global U4FG3A + .global U4GR3A + .global U3CR3A + .global U4UP3C + .global U2PL3A + .global U4PL3A + .global U2PS3A + .global U4PS3A + .global U4BC3A + .global U2BC3A + .global U4JP4C + .global U4TW4A + .global U2TW2A + .global U2ST2C + .global U4ST4D + .global U4WL4A + .global U4WL2C + .global U2WL1A + .global U2WL8A + .global U4WL5A + .global U2WL2A + .global U1TT5A + .global U1TR5A + .global U4YR3B + .global U3RN3A + .global U4BO3Z + .global U4FT3A + .global U3DD3A + .global U3DD3X + .global U3PG3A + .global U3ZT3A + .global U2LN2A + .global U2NS3X + .global U3SU3A + .global U3SU4A + .global U3SU2B + .global U3TN3B + .global U3DD3B + .global U3FH3A + .global U3FD3X + .global U3TBSM + .global U5PN5A + .global U3MS3B + .global U4WA4H + .global U4POGO + .global U4GH3A + .global U3BR3Z + .global U3MS3Z + .global U3CF3Q + .global U4LD4A + .global U4CO4B + .global U4GH3C + .global U3DU3B + .global U3PP3X + .global U3GP3X + .global U4BZ4A + .global U3PN5A + .global U5RV5A + .global UARMPN + .global U2MP2A + .global U4MP4A + .global U2JP2C + .global U4JP4D + .global U4JK4A + .global U3RR3Z + .global U3CR3B + .global U4JD4A diff --git a/BACKUP/TEMPLATE.ASM b/BACKUP/TEMPLATE.ASM new file mode 100644 index 0000000..6dc8a14 --- /dev/null +++ b/BACKUP/TEMPLATE.ASM @@ -0,0 +1,978 @@ +************************************************************** +* +* 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 + \ No newline at end of file diff --git a/BACKUP/TEST.ASM b/BACKUP/TEST.ASM new file mode 100644 index 0000000..c417627 --- /dev/null +++ b/BACKUP/TEST.ASM @@ -0,0 +1,3597 @@ +************************************************************** +* +* Software: ? +* Initiated: ? +* +* Modified: Shawn Liptak, 11/14/91 -Total carnage cleanup +* Shawn Liptak, 2/20/92 -Basketball +* GEORGE PETRO, 1/17/93 -NBA JAM +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 3/19/93 13:58 +************************************************************** + .file "test.asm" + .title "test program" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "imgtbl.glo" + .include "game.equ" + .include "link.equ" + .include "menu.equ" + .include "macros.h" + .include "dip.equ" + .include "fontsimg.glo" + .include "sound.h" + + +;in this module + + .def fudge_switches, fudge_switches2, fudge_switches_diag + .DEF DIAG,CHK_CMOS + .DEF GEN_MENU,B_MENU + .DEF TOP_BOX ;,WT_ADV +; .DEF WW_ADV + .DEF MAIN_RET,GMENULEV +; .DEF CK_DOOR + .DEF AREUSURE + .DEF F_TITLE + .DEF ST_STICK + .DEF GETSTICK + .DEF SUR_MESS + .DEF SURE_BOX + .DEF CPU_RET + .DEF GET_FAC + .DEF MENU_TOP + .DEF RED_BOX + .DEF BLNKHELP,H_SLAVE + .DEF DOBORDER + .DEF COL_INST + .DEF STD_BORD + .DEF DIAG_EX + .DEF WAIT_BUT + .DEF DIGSRT +; .DEF GET_ADV + .DEF SND_MADE + .DEF NO_CLEAR + .DEF LAST_BUT + .DEF G_BORDER + .DEF FORM_SWS +; .DEF LINKY + .DEF CKTEST, CKDIAG, DIAG_COLORS + +;in audit.asm + + .REF CMOS_VAL,L_MESS + .REF LM_SETUP,LM_FINIS + .REF FORM_ADC + .REF F_ADC_S + .REF GET_AUD + .REF FAC_SET + .REF CRED_P + .REF BAD_AUD + .REF CLR_AUD + .REF ADJ_PAGE + .REF COIN_PAG + .REF ROM_NAME + .REF STORE_AUDIT +* +* IN HSTD.ASM +* + .REF INIT_TAB + .REF VAL_TAB + .REF P_FORK + .REF RC_BYTEI + .REF RC_BYTE + .REF RC_WORD + .REF RC_LONG + .REF RC_LONGI + .REF WC_BYTE + .REF WC_BYTEI + .REF WC_WORD + .REF WC_WORDI + .REF WC_LONG + .REF WC_LONGI +* +* IN MENU.ASM +* + .REF MEN_MAIN,ANY_BUT,MEN_YN + .REF MESS_FAC + .REF GO_DIAG ;ROUTINE FOR DIAGNOSTIC MENU + .REF RTR_LEV,ROM_LEV + .REF FAC_STUF + .REF SCODE ;SYNTH CODE CURRENTLY BEING MADE + .REF DCODE ;DIG CODE CURRENTLY BEING MADE + +; IN ADJUST.ASM + + .REF DO_ADJH, CKDIP, MEN_ADJ + + +; IN ATTRACT.ASM + + .REF WIPEOUT + + +; OTHERS + +; .ref TWOPLAYERS ;0 = NO, 1 = YES 2 players + + .REF WARMSET + .REF QSNDRST + .REF FILLAREA + .REF STRNGLEN + + .ref osgfont_t + .REF RD15FONT,RD7FONT,STRCNRM,STRCNRM_1,GAMSTATE + .REF IRQSKYE,BLNKAREA,STRLNRM,CLR_SCRN + .REF WDOGDIS, READ_DIP, dpageflip_off, SWSET1, SWSET2 + + .REF PALFRAM, pal_set, pal_getf, DIAGP + + ;from DCSSOUND.ASM + .ref nosounds + + .ref _coin_addr + .ref _switch_addr + .ref _switch2_addr + +* MAIN_RET +* +* POSITIVE NUMBER HERE SAYS RETURN (UPWARD) TO MAIN MENU (GEN_MENU ONLY) +* NEGATIVE NUMBER HERE SAYS SETUP RESTORE AFTER RAM TEST. (GEN_MENU) + + .BSS MAIN_RET,16 ;FLAG SAYS RETURN TO MAIN MENU + .BSS GMENULEV,16 ;HOW DEEP INTO GEN_MENU WE ARE + .BSS SND_MADE,16 ;SOUND TEST FLAG + .BSS NO_CLEAR,16 ;FLAG TELLS GET_MENU NOT TO CLEAR! + .BSS LAST_BUT,32 + .BSS SPTEMP,32 ;STACK POINTER TEMP + + .def fswitches_cur,fswitches_last,fswitches_down + + .bss fswitches_cur,32 + .bss fswitches_last,32 + .bss fswitches_down,32 + + .globl _switch_map_mode + .bss _switch_map_mode,32 ; 0 = no switch mapping + ; 1 = map switches for menus + ; 2 = map switches for adjustments + ; 3 = Any button mapping mode + + .text + +;sounds + +************************************************************************** +* * +* CPU_RET * +* * +* THIS IS RETURN FROM CPU TEST. SINCE WE NEED TO TEST * +* RAM BEFORE ROM, OUR STATE IS ALSO SMASHED FROM ROM TEST. * +* * +************************************************************************** +CPU_RET: +; CALLR DIAG_STATE ;GET THE STATE RIGHT.....BUT DON'T MESS UP TILL BUTTON +; JSRP WAIT_BUT ;NOW WAIT FOR ANY BUTTON. + CALLR DIGSRT ;MAKE SURE WE'RE IN TEST MODE + + CLR A0 + MOVE A0,@GMENULEV ;INDICATE WE'RE AT LEVEL ZERO. + + MOVI RTR_LEV,A0 ;THIS IS THE LEVEL TO DIVE TO + NEG A0 ;NEGATE IT AS FLAG TO DIVE. + MOVE A0,@MAIN_RET ;INDICATE + JAUC DIAG_RESTART ;NOW START IT UP.... + + + +************************************************************************** +* * +* WAIT_BUT * +* * +* THIS IS CALLED ON RETURN FROM MANY OF THE "HARD" * +* DIAGNOSTIC TESTS TO HOLD CONTROL TILL ANY BUTTON IS * +* HIT. * +* * +************************************************************************** +WAIT_BUT: + CALLR FORM_SWS ;1ST STATE DOESN'T COUNT + +* RETURN CURRENT STATE IN A0..PREVIOUS STATE IN A1. + +WB1: + SLEEPK 1 + CALLR FORM_SWS + NOT A1 ;LAST = 0 AND NOW = 1 MEANS EDGE! + + AND A1,A0 ;1'S WHERE WE HAVE POSITIVE EDGE. + ANDI BUTTONS,A0 ;IS IT A BUTTON? + JRZ WB1 + + movi beep1_snd,a3 + calla SNDSND + + RETP + + +************************************************************************** +* * +* CKTEST * +* * +* CHECK TO SEE IF EITHER OF THE TEST BUTTONS IS CLOSED, * +* IF NOT, HEAD OUT TO WARMSET * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** +CKTEST +; rets + PUSH A0 + CALLA READ_DIP + ANDI DPTEST,A0 + JRNZ CKRET +; MOVE @SWITCH,A0,L + move @_coin_addr,a0,L + move *a0,a0,W + sll 16,a0 + NOT A0 + ANDI DIAG_BITS,A0 + JAZ WARMSET ; WE BE OUTTA HERE! +CKRET + PULL A0 + RETS + + +************************************************************************** +* * +* CKDIAG * +* * +* CHECK TO SEE IF WE NEED TO GO OFF TO THE DIAGNOSTICS ROUTINES * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* A0 0 = COOL, 1 = GO TO DIAGS * +* * +************************************************************************** +CKDIAG + CLR A0 + CALLA READ_DIP + ANDI DPTEST,A0 + JRNZ CKDGO +; MOVE @SWITCH,A0,L + move @_coin_addr,a0,L + move *a0,a0,W + sll 16,a0 + NOT A0 + ANDI DIAG_BITS,A0 + JRZ CKDRET +CKDGO + MOVK 1,A0 +CKDRET + MOVE A0,A0 + RETS + +************************************************************************** +* DIAG - THIS IS THE ENTRY TO THE MAIN DIAGNOSTIC MENU. + +DIAG + movi AUDSTAT,a0 + clr a1 + calla STORE_AUDIT + move @GAMSTATE,a0 + jan SUCIDE ;In diagnostics +; move @COINS,a0 ;Check coin switches + move @_coin_addr,a0,L + move *a0,a0 + btst CDI_BIT,a0 ;Coin door closed ? + jaz SUCIDE ;Yes - then diagnostic NOT allowed + movk 1,a0 + move a0,@_switch_map_mode,L + +DIAG_JUMP + CALLR DIGSRT ;MAKE SURE WE'RE IN TEST MODE +; JSRP WW_ADV ;HOLD UNTIL HE LETS GO! + + CLR A0 + MOVE A0,@MAIN_RET ;CLEAR THE FLOAT TO TOP FLAG. + MOVE A0,@GMENULEV ;INDICATE WE'RE AT LEVEL ZERO. + +DIAG_RESTART + MOVI MEN_MAIN,A8 + JSRP GEN_MENU ;PROCESS THIS MENU! + clr a0 + move a0,@_switch_map_mode,L + +; HE (FINALLY) PICKED EXIT....RETURN! + +DIAG_EX + SLEEPK 2 ;LET DMA EMPTY OUT IF NECESSARY + +; CALLA CMOS_VAL ;IF SETTINGS SMASHED....FIX EM. +; JAUC WARMSET + + + + +; SLEEP 2 + CALLA CLR_SCRN + CALLA CMOS_VAL ; VALIDATE THE CMOS + CALLA CKTEST + CALLA READ_DIP + ANDI DPTEST,A0 + MOVE A0,@SWSET2,L + JRZ DE2 + MOVI NOTCLOSEDDIP,A8 + JSRP L_MESS + jruc #out +DE2 +; MOVE @SWITCH,A0,L + move @_coin_addr,a0,L + move *a0,a0,W + sll 16,a0 + NOT A0 + ANDI DIAG_BITS,A0 + MOVE @SWSET2,A14,L + OR A0,A14 + MOVE A14,@SWSET2,L + MOVE A0,A0 + JRZ DE3 + MOVI NOTCLOSEDJAMMA,A8 + JSRP L_MESS + jruc #out +DE3 + JAUC WARMSET +#out + MOVI NOTCLOSEDWAIT,A8 + JSRP L_MESS + + CALLA fudge_switches ;get fudged switches in a0 + andi BUTTONS|START_BITS,a0 + MOVE A0,@SWSET1,L +DE4 + SLEEPK 1 ;APPEASE THE MAIN LOOP + CALLR CKTEST ;CHECK STATUS OF TEST SWITCH + + CALLA fudge_switches ;get fudged switches in a0 + MOVE @SWSET1,A1,L + andi BUTTONS|START_BITS,a0 + CMP A0,A1 + JRNZ DE5 + + + MOVE @SWSET2,A3,L + MOVE A3,A1 + CALLA READ_DIP + ANDI DPTEST,A0 + ANDI DPTEST,A1 + CMP A0,A1 + JRNE DIAG_EX + +; MOVE @SWITCH,A0,L ;GOTTA SEE IF TIME TO LEAVE + move @_coin_addr,a0,L + move *a0,a0,W + sll 16,a0 + NOT A0 + ANDI DIAG_BITS,A0 + ANDI DIAG_BITS,A3 + CMP A0,A3 + JRNE DIAG_EX + + JRUC DE4 + +DE5 + CALLR CKTEST ; ONE FINAL TIME ( STILL WRONG ) + JRUC DIAG_JUMP + + +NOTCLOSEDDIP + MESS_MAC RD7FONT,SPACING07,200,50,COLOR_RED,STRCNRM,0 + .STRING "DIPSWITCH TEST SELECT (UJ2 # 8) CLOSED.",0,0 + .EVEN + +NOTCLOSEDJAMMA + MESS_MAC RD7FONT,SPACING07,200,70,COLOR_RED,STRCNRM,0 + .STRING "COIN DOOR TEST SWITCH CLOSED.",0,0 + .EVEN + +NOTCLOSEDWAIT + MESS_MAC RD7FONT,SPACING07,200,120,COLOR_RED,STRCNRM,0 + .STRING "PRESS ANY BUTTON TO RETURN TO TEST MODE OR",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,132,COLOR_RED,STRCNRM,0 + .STRING "OR",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,144,COLOR_RED,STRCNRM,0 + .STRING "OPEN THE SWITCH(S) TO RETURN TO GAME.",0,0 + .EVEN + +************************************************************************** +* * +* GEN_MENU * +* * +* THIS IS A GENERAL MENU HANDLER. IT POSTS THE MENU * +* WITH SELECTION 1 AVAILABLE. AFTER A SELECTION IS * +* MADE, IF IT HAS A ROUTINE CODE OF ZERO, (EXIT) * +* IT RETURNS TO THE LEVEL ABOVE IT. ELSE, IT * +* JSRP'S THE NEW ROUTINE. WHEN THE NEW ROUTINE * +* RETURNS, WE RE-POST THE SAME MENU WITH THE * +* BAR ON THE FOLLOWING ENTRY. * +* * +* A8 = MENU DESCRIPTOR * +* * +************************************************************************** +* +* MENU ROM OFFSETS +* +MR_FONT EQU 0 +MR_TCAL EQU MR_FONT+LONG_SIZE +MR_TITLE EQU MR_TCAL+LONG_SIZE ;POINTER TO TITLE FOR TILE BOX (IF NEC) +MR_TCLR EQU MR_TITLE+LONG_SIZE ;COLOR OF TITLE +MR_WORDS EQU MR_TCLR+WORD_SIZE ;STREAM OF WORDS TO COPY TO PDATA STARTS HERE +MR_X EQU MR_WORDS +MR_Y EQU MR_X+WORD_SIZE +MR_DY EQU MR_Y+WORD_SIZE +MR_COL EQU MR_DY+WORD_SIZE +MR_HITE EQU MR_COL+WORD_SIZE +MR_BDY EQU MR_HITE+WORD_SIZE +MR_DX EQU MR_BDY+WORD_SIZE +MR_WID EQU MR_DX+WORD_SIZE + +GEN_MENU + MOVE @GMENULEV,A0 ;KICK LEVEL POINTER + INC A0 + MOVE A0,@GMENULEV + + MOVE A8,-*A12,L ;SAVE MENU PTR + movk 1,A8 ;START WITH "FIRST" ENTRY + MOVE A8,-*A12,W ;PUT MENU NUMBER AS A WORD + +* IF WE GET HERE AND MAIN_RET IS NOT ZERO, THE WE MUST +* RETURN TO LEVEL ABOVE US IF WE'RE NOT THE MAIN +* MENU. + + +GEN_LOOP + MOVE @MAIN_RET,A0 ;ARE WE IN "EXIT" MODE? + JRZ NO_EXIT ;NO + + JRN DIVE_TO_MONITOR ;WE'RE DIVING TO MONITOR PATTERNS. + + MOVE @GMENULEV,A0 ;CHECK LEVEL + subk 1,a0 ;are we at level 1 + jrne GEN_EXIT ;NOPE.....POP UP A LEVEL. + +* WE'RE AT LEVEL 1....CLEAR OUT THE FLAG THAT +* GOT US HERE. + +DIVE_COMPLETE + CLR A0 + MOVE A0,@MAIN_RET ;NOW WE MAY PROCEED! + +NO_EXIT + MOVE @NO_CLEAR,A0 ;INHIBIT CLEAR? + JRNZ SKIP_CLR + CLR B13 + CALLA CLR_SCRN ;CLEAR THE SCREEN + +SKIP_CLR + CLR A0 + MOVE A0,@NO_CLEAR ;AND RE-SET IT! + + MOVE *A12(WORD_SIZE),A8,L ;GET MENU DESCRIPTOR + JSRP MENU_TOP + JSRP RED_BOX ;PUT UP MAIN MENU INSTRUCTIONS + + MOVE *A12,A9 ;GET MENU NUMBER TO USE + JSRP B_MENU ;GET RESULT + +PHONEY_MENU_RET + + MOVE A10,A10 ;WAS IT ADVANCE? + JRZ NO_KICK ;NOPE....LEAVE WHERE HE CAME FROM + + INC A8 ;KICK INDEX BY 1 FOR NEXT TIME +NO_KICK + MOVE A8,*A12 ;AND LEAVE ON THE STACK + + MOVE A9,A9 ;NOW JSRP THE ROUTINE + JRZ GEN_EXIT ;NONE THERE....ITS "EXIT" + +* JSRP TO A9 + + MOVI GEN_LOOP,A7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JUMP A9 + +GEN_EXIT + ADDI WORD_SIZE+LONG_SIZE,A12 ;POP THE ARGUMENTS + MOVE @GMENULEV,A0 ;KICK LEVEL POINTER + DEC A0 + MOVE A0,@GMENULEV + RETP + +************************************************************************** +* * +* DIVE_TO_MONITOR * +* * +* WE GET CONTROL HERE WHEN WE ARE KLUDGING THE RETURN * +* FROM "CPU" TEST (WHICH BLOWS AWAY RAM!) * +* * +************************************************************************** +DIVE_TO_MONITOR: + MOVE @GMENULEV,A0 ;CHECK LEVEL + CMPI 1,A0 ;ARE WE AT LEVEL 1 + JRNZ DTM1 ;NOPE....SET "MONITOR" LEVEL +* +* WE'RE AT LEVEL 1......."SELECT" THE DIAGNOSTIC MENU +* A8 = 1.....A9 = ROUTINE FOR DIAGNOSTIC MENU +* + MOVK 1,A8 + MOVI GO_DIAG,A9 ;ROUTINE FOR DIAGNOSTIC MENU + MOVK 1,A10 ;RETURN AS IF ADVANCE WAS PRESSED + JRUC PHONEY_MENU_RET ;WE'RE READY TO CALL DIAG MENU +* +* WE'RE IN DIAGNOSTIC MENU....NOW WE JUST NEED TO MAKE +* THE "CURRENT" SELECTION THE ONE AFTER CPU TEST +* (MONITOR PATTERNS) +* +DTM1: + MOVE @MAIN_RET,A8 ;FLAG IS OPPOSITE OF ENTRY NUMBER + NEG A8 ;THIS IS RETURN LEVEL! +* MOVI RTR_LEV,A8 ;START WITH "RETURN" ENTRY NUMBER + MOVE A8,*A12 ;PUT MENU NUMBER AS A WORD + JRUC DIVE_COMPLETE ;THIS COMPLETES THE DIVE! + +************************************************************************** +* +* FOR DOBORDER +* +* A4 = UPPER LEFT Y,X +* A5 = LOWER RIGHT Y,X +* A0 = Y,X WIDTH OF BORDER +* A9 = COLOR OF BORDER. + +************************************************************************** +* * +* TOP_BOX * +* * +* THIS DISPLAYS THE TEST BOX AT THE TOP. * +* * +* A2 POINTS AT THE STRING TO CENTER IN THE BOX. * +* A3 IS COLOR TO DO IT IN. * +* * +************************************************************************** +MENU_TOP: + MOVE *A8(MR_TITLE),A2,L ;GET TITLE INTO A2 + MOVE *A8(MR_TCLR),A3 ;AND COLOR INTO A3 + +TOP_BOX: + MOVE A8,-*A12,L ;PUSH MENU PTR +* +* FIRST MAKE THE BOX...IT BLACKS OUT THE REGION +* + CALLR SCR_BOX ;PUT UP THE TITLE BOX + + MOVI MESS_TITLE,A8 ;SET PARAMETERS + CALLA LM_SETUP ;PUT IT OUT. + + MOVE A2,A8 ;GET STRING IN THE CORRECT REGGIE +; MOVE A3,A6 ;MOVE COLOR TO COLOR REGGIE + + JSRP LM_FINIS ;AND PRINT IT! + + JSRP SCR_REV ;NOW ADD THE REV. + + MOVE *A12+,A8,L ;RESTORE THE MENU PTR + + RETP + +************************************************************************** +* * +* SCR_REV * +* * +* DISPLAY REV IN TITLE BOX. * +* * +************************************************************************** +SCR_REV: + MOVI MESS_REV,A8 ;GET READY FOR REV MESSAGE + CALLA LM_SETUP ;SETUP FOR REV MESSAGE + + MOVI ROM_NAME,A8 ;USE ROM COPY OF REV. + JSRP LM_FINIS ;FINISH PRINTING MESSAGE + RETP + +************************************************************************** +* * +* SCR_BOX * +* * +* THIS DISPLAYS THE TITLE BOX. * +* * +************************************************************************** +SCR_BOX: + MOVI TIT_ULX+(10000H*TIT_ULY),A4 ;UPPER LEFT + MOVI TIT_LRX+(10000H*TIT_LRY),A5 ;UPPER LEFT + MOVI COLOR_YELLOW,A9 + CALLR STD_BORD + RETS + +* THIS PRINTS THE "MOVE JOYSTICK" BOX. +* +* A8 = MENU DESCRIPTOR THAT WILL ACCOMPANY IT +* ON SCREEN. WE ADJUST THE BOX EDGES AND +* MESSAGE CENTER IN "X" ONLY TO CORRESPOND +* TO THE MENU BOX. + +RED_BOX: + MOVE A8,-*A12,L ;PUSH THE MENU PTR + + MOVI ROBO_RED,A9 + CALLR COL_INST ;THIS PRINTS BOX AND STASHES +* ;CENTER X AT *A13(PDATA),W + + MOVI MM_INST1,A8 ;POINT AT INSTRUCTIONS MESSAGE + JSRP C_PD_M + + MOVI MM_INST2,A8 ;POINT AT INSTRUCTIONS MESSAGE + JSRP C_PD_M + + MOVE *A12+,A8,L ;GET BACK MENU PTR. + RETP + +************************************************************************** +* * +* COL_INST * +* * +* THIS PRINTS OUT THE "CYAN" INSTRUCTION BOX * +* IN THE COLOR SPECIFIED BY A9. * +* * +************************************************************************** +COL_INST: +* +* WE NEED TO DETERMINE LEFT AND RIGHT X +* + CALLR STUFF_MENU_PROCESS ;MOVE DATA INTO PDATA AREA + CALLR MEN_NUMS ;GET THE NUMBERS FOR THIS MENU + MOVE A6,*A13(PDATA),W ;STASH THE X CENTER + ADDI 10000H*INST_ULY,A4 ;UPPER LEFT Y + ADDI 10000H*INST_LRY,A5 ;UPPER LEFT X + CALLR STD_BORD + RETS + +************************************************************************** +* * +* MEN_NUMS * +* * +* THIS IS CALLED TO GET SOME NUMBERS ASSOCIATED * +* WITH A MENU BOX. * +* * +* THIS RETURNS: * +* * +* A4 = LEFT X * +* A5 = RIGHT X * +* A6 = CENTER X * +* * +************************************************************************** +MEN_NUMS: + CALLR MENU_UL_A4_A5 ;LEFT X IN A4 + CALLR MENU_LR_A6_A5 ;RIGHT X IN A6 + MOVE A6,A5 ;COPY RIGHT X INTO A5 + ADD A4,A6 ;FIND CENTER + SRL 1,A6 ;A6 NOW HAS CENTER X (FOR LATER) + RETS + +************************************************************************** +* * +* C_PD_M * +* * +* THIS PRINTS A L_MESS MESSAGE PASSED IN A8, CENTERED * +* ON THE X STORED AT *A13(PDATA),W * +* * +************************************************************************** +C_PD_M: + CALLA LM_SETUP ;SETUP THE MESSAGE + MOVE *A13(PDATA),A3 ;GET THE X + movx a3,a9 ;Move X + JUMP A1 ;AND "CALL" THE ROUTINE + +************************************************************************** +* * +* DIGSRT * +* * +* THIS IS CALLED ON ENTRY TO DIAGNOSTICS. * +* * +************************************************************************** + +DIGSRT + CALLR DIAG_STATE + CALLA WIPEOUT ;INITIALIZE THE OBJECT LIST + CALLR DIAG_COLORS ;RESTART THE COLOR PROCESSES. +; JSRP QSNDRST ;kill any sounds in progress + calla nosounds + calla dpageflip_off + MOVK 1,A0 + MOVE A0,@DISPLAYON ;WE NEED TO SEE THE STUFF + + movi HEBLNKINIT,a0 + move a0,@HEBLNK + + jauc CLR_SCRN ;CLEAR THE SCREEN! + +DIAG_STATE + CLR A1 + CALLA KILALL ;KILL ABSOLUTELY EVERYONE! + + MOVI DIAG_PID,A1 ;SET OUR ID TO DIAGNOSTICS MAN + MOVE A1,*A13(PROCID) ;PASS OUR ID TO FORKED PROCESS + + movi INDIAG,a0 + move a0,@GAMSTATE ;PUT US IN TEST MODE! + rets + + + +NUM_DIAG_CYCLE_COLORS .EQU 4 +DIAG_CYCLE_COLOR_START .EQU 03CH + + .BSS DIAG_CRAM,NUM_DIAG_CYCLE_COLORS*16,1 ;RAM FOR TRANSFER + +************************************************************************** +* * +* DIAG_COLORS - PROCESS THAT CYCLE COLORS FOR THE DIAGNOSTIC MENUS. * +* * +************************************************************************** +DIAG_COLORS + MMTM SP,A0,A1,A7 + MOVI COLRPID,A0 + CLR A1 + MOVE A1,@IRQSKYE + move a1,@PALFRAM,L + CALLA KIL1C ;KILL ALL COLOR UPDATE PROCESSES + MOVI DIAGP,A0 ;CREATE DIAGNOSTICS PALLETTE + CALLA pal_getf + MOVI COLRPID,A0 + CLR A1 + NOT A1 + CALLA KILALL + CREATE COLRPID,PC_TRANSFER + CREATE COLRPID,LFLASH + CREATE COLRPID,RGB + CREATE COLRPID,BPR + CREATE COLRPID,DECAY + MMFM SP,A0,A1,A7 + RETS + +************************************************************************** +* * +* TABLE DRIVEN COLOR RAM PROCESSES * +* * +************************************************************************** +* 18000B0(11) - BPR +* 18000C0(12) - DECAY +* 18000D0(13) - LASER FLASH +* 18000E0(14) - RGB + +RGB CALLR TABDRIVE + .LONG RGBTAB,DIAG_CRAM+30H + .WORD 8 +RGBTAB .WORD 07C00H,001FH,>77A0,>741A,0FFFFH + +* +DECAY CALLR TABDRIVE + .LONG DCATAB,DIAG_CRAM+010H + .WORD 2 +DCATAB .WORD 001CH,001CH,011CH,021CH,031CH,039CH,239CH,2390H,2388H + .WORD 2380H,4300H,5280H,7180H,6180H,7080H,7000H,6000H,5000H + .WORD 4000H,3000H,2000H,1000H,0FFFFH +* +BPR CALLR TABDRIVE + .LONG BPRTAB,DIAG_CRAM + .WORD 1 +BPRTAB .WORD 001CH,101CH,201CH,301CH,401CH,501CH,601CH,701CH,7010H + .WORD 7010H,7008H,7008H,7000H,7000H,7008H,7008H,7010H,7010H + .WORD 701CH,701CH,601CH,501CH,401CH,301CH,201CH,101CH,0FFFFH + +************************************************************************** +* * +* LFLASH - PROCESS TO CREATE THE FAMOUS LASER FLASH COLOR * +* * +************************************************************************** +LFLASH MOVI 07FFFH,A0 + MOVE A0,@DIAG_CRAM+20H,W + SLEEPK 2 +LFLASH1 + MOVE @RAND,A0,W + ANDI 0000001FH,A0 + MOVI COLTAB,A1 + SLL 4,A0 + ADD A0,A1 + MOVE *A1,A1,W + MOVE A1,@DIAG_CRAM+020H,W + SLEEPK 6 + JRUC LFLASH + +COLTAB .WORD 0380H,1380H,2380H,3380H,4380H,5380H,6380H,7380H,7300H + .WORD 7280H,7200H,7180H,7080H,7008H,7008H,7010H,7010H,701CH + .WORD 701CH,601CH,501CH,409CH,309CH,209CH,219CH,029CH,039CH + .WORD 139CH,239CH,339CH,539CH,739CH,7390H,7380H,6380H,4380H + .WORD 0FFFFH + +************************************************************************** +* * +* THE TABLE DRIVEN PROCESS * +* * +************************************************************************** +TABDRIVE + MOVE *SP+,A0,L + MOVE *A0+,A11,L ;A11 = TABLE START + MOVE *A0+,A9,L ;A9 = LOCATION TO STUFF COLOR + MOVE *A0,A10,W ;A10 = SLEEP TIME +TABDRV1 + MOVE A11,A8 ;RESET TO START OF TABLE +TABDRV2 + MOVE *A8+,A0,W ;GET A COLOR + JRN TABDRV1 ;BR = END OF TABLE + MOVE A0,*A9,W + MOVE A10,A0 + MOVI TABDRV2,A7 + JAUC PRCLSP ;LOOP SLEEP + +************************************************************************** +* * +* PC_TRANSFER - PROCESS TO TRANSFER CYCLE COLORS TO THE COLOR * +* RAM EVERY TICK. * +* * +************************************************************************** +PC_TRANSFER + MOVI DIAG_CRAM,A0 + MOVI DIAG_CYCLE_COLOR_START,A1 + MOVI NUM_DIAG_CYCLE_COLORS,A2 + CALLA pal_set + SLOOP 1,PC_TRANSFER + +************************************************************************** +* * +* CHK_CMOS * +* * +* This is the routine that is called at power up. * +* * +* It checks to see if CMOS adjustments are in tact. * +* IF THE ADJUSTMENTS ARE BAD, OR SET FOR A DIFFERENT * +* GAME OR REVISION, we cause a factory setting to * +* occur. We then try and validate the all time * +* HSTD table. If this is bad we then zero audits. * +* If HSTD table is ok, then we leave audits alone. * +* * +************************************************************************** +CHK_CMOS + CALLR DIGSRT ;CLEAR OUT THE SCREEN...(MESSAGE WILL FOLLOW!) + CALLA CMOS_VAL + JRNZ FAC_TIME + MOVI MESS_BITCHIN,A2 ;POINT AT DATA + MOVI ROBO_WHITE,A3 + JSRP TOP_BOX + SLEEPK 18H + RETP +; JAUC WARMSET ;CMOS IS OK....RETURN! +* +* WE NEED TO FACTORY SET THIS THING (DUE TO BAD SETTINGS.) +* +FAC_TIME: + JSRP GET_FAC ;GET THE GAME TO FACTORY SETTINGS! +; JSRP WW_ADV ;WAIT WHILE ADVANCE IS PRESSED +; +; JSRP WT_ADV ;NOW WAIT TILL ADVANCE IS PRESSED +; + CALLA CLR_SCRN ;PRESSED....BLANK THE SCREEN AND + ;HOLD TILL HE LETS GO. +; +; JSRP WW_ADV ;HOLD CONTROL HERE TILL HE LETS GO + JAUC WARMSET ;CMOS IS OK....RETURN! +; JRUC DIAG_JUMP ;NOW INTO TEST MODE FOR ADV. BUTTON. + +************************************************************************** +* * +* GET_FAC * +* * +* THIS IS CALLED TO BRING THE GAME TO A FACTORY SETTINGS * +* STATE. IT WILL STORE THE FACTORY SETTINGS OR WAIT * +* UNTIL THE DOOR IS OPEN. IF IT CAN'T GET FACTORY SETTINGS * +* IT WILL PRINT A FAILURE MESSAGE. * +* * +************************************************************************** +GET_FAC + +FAC_LOOP + CALLA CLR_SCRN ;CLEAR SCREEN IN ANTICIPATION OF MESSAGE + clr a0 ;Full + CALLA FAC_SET + CALLA CMOS_VAL ;IS IT OK NOW? + JRZ CMOS_FIXED ;YEP....FINISH CLEANUP! + + MOVI MESS_FAIL,A8 ;POINT AT DATA + JSRP L_MESS ;DISPLAY LARRY MESSAGE + + JRUC WAIT_POINT ;WE'RE DEAD..ADVANCE TAKES US TO TEST MODE! + +CMOS_FIXED +* +* THIS IS WHERE WE ARE ONCE WE HAVE FACTORY SET.... +* MESSAGE WOULD GO HERE. +* + CALLR CENT_BOX ;PUT A BOX AROUND IT + + MOVI MESS_FAC,A8 ;POINT AT DATA + JSRP L_MESS ;DISPLAY LARRY MESSAGE + +* NOW.....CLEAR HIGH SCORE TABLE +* CLEAR OUT THE AUDITS. + + CALLA FAC_STUF ;DO REST OF FULL FACTORY STUFF! + +* AT THIS POINT WE HANG WAITING FOR THE ADVANCE SWITCH. + +WAIT_POINT + RETP ;NOW LET CALLER TAKE OVER. + +************************************************************************** +* * +* WT_ADV * +* * +* WAIT TILL ADVANCE. THIS HOLDS CONTROL UNTIL ADVANCE * +* BUTTON IS PRESSED. * +* * +************************************************************************** +;WT_ADV: +; SLEEPK 2 +; +;WT_A6: +; CALLR GET_ADV ;SCAN THE BUTTON +; JRNZ WT_ADV ;NOT PRESSED. +; RETP +; + +;************************************************************************** +;* * +;* WW_ADV * +;* * +;* WAIT WHILE ADVANCE. THIS HOLDS CONTROL WHILE ADVANCE * +;* BUTTON IS HELD (OR STUCK). * +;* * +;************************************************************************** +;WW_ADV: +; SLEEPK 2 +; CALLR GET_ADV +; JRZ WW_ADV +; RETP +; +;************************************************************************** +;* * +;* GET_ADV * +;* * +;* THIS GETS PHYSICAL STATE OF ADVANCE BUTTON. * +;* * +;* .EQ. PRESSED * +;* .NE. OPEN * +;* * +;************************************************************************** +;GET_ADV: +; MMTM SP,A0 +; MOVE @COINS,A0,W ;FETCH COIN SWITCHES (LOOKING FOR ADVANCE) +; ANDI ADV_BIT,A0 ;KEEP ADVANCE BIT. +; MMFM SP,A0 +; RETS +; +;************************************************************************** +;* * +;* CK_DOOR * +;* * +;* THIS IS CALLED TO SEE IF THE FRONT DOOR (MEMORY * +;* PROTECT SWITCH IS OPEN. * +;* * +;* .NE. OPEN (OK TO WRITE CMOS) * +;* .EQ. CLOSED (CAN'T WRITE CMOS) * +;* * +;************************************************************************** +;CK_DOOR: +; MMTM SP,A0 +; MOVE @COINS,A0,W ;FETCH COIN SWITCHES (LOOKING FOR ADVANCE) +; ANDI DOOR_BIT,A0 ;KEEP COIN DOOR MEMORY PROTECT. +; MMFM SP,A0 +; RETS +; +************************************************************************** +* * +* GET_MENU * +* * +* This routine is called (via JSRP) to display a menu on * +* screen and receive a selection from the operator. * +* * +* The menu descriptor is passed in A8. * +* * +* The selection number is returned in a8. (line 1 = 1) * +* The routine address is returned in a9. * +* A10 is returned non-zero if advance was the button used * +* * +* A menu (pointed to by A8) is defined as follows: * +* * +* FONT TO BE USED (LONG) * +* X FOR LEFT MARGIN (WORD) * +* Y FOR TOP LINE (WORD) * +* DY PER ENTRY (WORD) * +* TEXT_COLOR (WORD) * +* HEIGHT OF SELECTION BAR (WORD) * +* DX FROM TOP OF TEXT TO SEL. BAR (WORD) * +* * +* A9 POINTS AT ENTRY TO START WITH * +* * +* Then for each entry: * +* * +* TEXT POINTER (LONG) * +* ACTIVATION ROUTINE (LONG) * +* * +* The list is terminated by a zero. * +* * +* This routine forks a separate process to do the work * +* for it. Therefore the caller has full use of * +* the PDATA area. * +* * +************************************************************************** +* +* Equates for GET_MENU slave process. +* +MEN_OFF EQU PDATA ;WORD-OFFSET INTO MENU OF SELECTION +MEN_ROUT EQU MEN_OFF+WORD_SIZE ;LONG-ROUTINE FOR SELECTION +MEN_ROM EQU MEN_ROUT+LONG_SIZE ;LONG-POINTER TO ROM STRUCTURE +MEN_ULX EQU MEN_ROM+LONG_SIZE ;WORD-LEFT X (CENTER X WHEN CENTERING) +MEN_ULY EQU MEN_ULX+WORD_SIZE ;WORD-TOP Y +MEN_DY EQU MEN_ULY+WORD_SIZE ;WORD-Y UNITS PER ENTRY +MEN_COLR EQU MEN_DY+WORD_SIZE ;WORD-COLOR FOR ENTRIES +MEN_BAR EQU MEN_COLR+WORD_SIZE ;WORD-HEIGHT OF SELECTION BAR +MEN_BDY EQU MEN_BAR+WORD_SIZE ;WORD-DY FROM TOP OF TEXT TO TOP OF BAR. +MEN_BDX EQU MEN_BDY+WORD_SIZE ;WORD-DX FROM LEFT OF WORD TO LEFT OF BAR +MEN_BWID EQU MEN_BDX+WORD_SIZE ;WORD-WIDTH OF BAR +MEN_SCOL EQU MEN_BWID+WORD_SIZE ;WORD-COLOR OF SELECTED TEXT +MEN_TPTR EQU MEN_SCOL+WORD_SIZE ;LONG-POINTER TO BEGINNING OF TEXT ENTRIES. +MEN_ENTS EQU MEN_TPTR+LONG_SIZE ;WORD-NUMBER OF ENTRIES IN MENU +MEN_CUR EQU MEN_ENTS+WORD_SIZE ;WORD-CURRENT SELECTION (1ST IS 1) +MEN_WALK EQU MEN_CUR+WORD_SIZE ;WORD-NUMBER OF ENTRY WE'RE ON AS WE WALK +MEN_STIK EQU MEN_WALK+WORD_SIZE ;LONG-"STUCK" STATE OF SWITCHES +MEN_ACT EQU MEN_STIK+LONG_SIZE ;LONG-SWITCH WE'RE ACTING ON. (BIT) +MEN_TYPO EQU MEN_ACT+LONG_SIZE ;WORD-TYPOMATIC COUNTER +MEN_HITS EQU MEN_TYPO+WORD_SIZE ;WORD-CONSECUTIVE TYPOMATIC HITS +MEN_ADV EQU MEN_HITS+WORD_SIZE ;WORD-NON-ZERO IF ADVANCE WAS BUTTON USED + +WORD_ENTS EQU (MEN_TPTR-MEN_ULX)/WORD_SIZE ;NUMBER OF WORD ENTRIES + +B_MENU: + MOVI BD_SLAVE,A7 + JRUC GMJMP + +GET_MENU: + MOVI GM_SLAVE,A7 ;THIS IS ROUTINE +GMJMP: + MOVI MENU_PID,A1 ;THIS IS ID + CALLA GETPRC ;CREATE IT + + MOVE A0,A10 ;SAVE HIS POINTER + +GM1: + SLEEPK 2 + + MOVI MDUN_PID,A0 + MOVI 0FFFFH,A1 + CALLA EXISTP ;WAIT FOR ID TO CHANGE TO THIS! + + JRZ GM1 ;LOOP UNTIL IT EXISTS! + + MOVE *A10(MEN_OFF),A8 ;RETURN OFFSET OF SELECTION + MOVE *A10(MEN_ROUT),A9,L ;AND ROUTINE THAT WAS SELECTED. + MOVE *A10(MEN_ADV),A10 ;INDICATE WHETHER ADVANCE WAS USED + + MOVI MDUN_PID,A0 + MOVI 0FFFFH,A1 + CALLA KILALL ;KILL THE HANGING MENU GETTER! + RETP ;AND RETURN + + +************************************************************************** +* * +* GM_SLAVE * +* * +* This displays the menu.......moves the selection bar * +* and returns the selection information by stuffing * +* it in its process area and changing its ID to * +* MDUN_PID once selection is made. * +* * +* On entry....A8 points at the GET_MENU data structure. * +* A9 is which entry to start with selected. * +* * +************************************************************************** +BD_SLAVE + CALLR MENU_BORDER ;DRAW THE BORDER FOR SELCTIONS. + SLEEP 3 + +GM_SLAVE + JSRP ST_STICK ;TELL STICK(S) AND BUTTONS WE'RE STARTING. + + CALLR STUFF_MENU_PROCESS ;MOVE DATA INTO PDATA AREA + +* PLOT ENTIRE MENU +* +* DO_MENU_LINE WILL RETURN CARRY SET +* WHEN WE GET BEYOND THE END. + + MOVK 1,A0 ;SETUP FOR LINE 1. + +DO_ANOTHER_LINE + + MOVE A0,*A13(MEN_WALK),W ;WALK THROUGH. + + JSRP DO_MENU_LINE ;PUT OUT LINE IN A0. + MOVE *A13(MEN_WALK),A0,W ;GET BACK THE COUNTER + + INC A0 ;MOVE TO NEXT ENTRY. + MOVE *A13(MEN_ENTS),A1,W ;SEE IF WE'RE DONE. + CMP A1,A0 + JRLS DO_ANOTHER_LINE +* +* MAIN MENU PLOTTED......NOW LET THE DMA UN-LOAD BEFORE PLOTTING HELP +* + SLEEP 2 + CALLR PLOT_HELP ;PLOT HELP FOR 1ST IF NECESSARY + +* SLEEPK 2 ;NOW MAKE SURE THE HELP GETS PLOTTED +* +* NOW WE JUST WANT TO UPDATE BASED ON STICK...ACT +* ON BUTTONS! +* +* RESPONSES: UP....DOWN....BUTTON....NOTHING.... +* +* NOTHING = 0 +* UP = 1 +* DOWN = 2 +* BUTTON = 3 +* +* A0 = RESPONSE +* A1 = MEN_CUR VALUE. + +MENU_LOOP + SLEEPK 1 + calla READ_DIP ;Get the current dip switch bits + btst DPTEST_B,a0 + jrnz #dipon + +; move @COINS,a5 +; btst 4,a5 +; jrnz DIAG_EX ;Test switch off? +#dipon + MOVI MENU_TYPO,A5 + JSRP GETSTICK ;ASK THE STICK HANDLER....... + MOVE A0,A0 ;SEE WHAT GET_STICK RETURNED. + JRZ MENU_LOOP ;MENU...(PAUSE) NOTHING. + + MOVE *A13(MEN_CUR),A1,W ;GET CURRENT ENTRY...IN A1 + + cmpi 4,a0 + jrz menu_escape + + CMPI 3,A0 ;BUTTON? + JRZ MENU_BUTTON ;YEP....WE'RE OUT OF HERE. + + CMPI 2,A0 + JRZ MENU_DOWN ;ITS DOWN.... +* +* REQUEST TO GO UP....ARE WE AT #1 +* + CMPI 1,A1 ;WELL? + JRLS MENU_LOOP ;YEP....IGNORE + + JSRP UN_SELECT ;PUT BACK THE OLD "CURRENT ONE + MOVE *A13(MEN_CUR),A0,W ;GET CURRENT ENTRY + DEC A0 ;MAKE ONE LESS. + movi d_up_snd,a3 + JRUC JOIN_DOWN ;NOW PLOT THE NEW ONE. + +MENU_DOWN: + MOVE *A13(MEN_ENTS),A2,W ;GET NUMBER IN MENU + CMP A2,A1 ;ARE WE AT MAX + JRHS MENU_LOOP ;YEP...NO ACTION + + JSRP UN_SELECT ;PUT BACK THE OLD "CURRENT ONE + + MOVE *A13(MEN_CUR),A0,W ;GET CURRENT ENTRY + INC A0 ;MAKE THIS THE NEXT. + movi d_dn_snd,a3 + +JOIN_DOWN: + PUSHP a3 + MOVE A0,*A13(MEN_CUR),W ;PUT BACK + JSRP DO_MENU_LINE ;PUT OUT LINE IN A0. +* +* MAKE THE "DINK" SOUND HERE FOR ENTRY TO ENTRY MOVEMENT +* + CALLR PLOT_HELP ;PLOT HELP NEW ONE + SLEEPK 1 ;DELAY BEEP 1 FRAME + PULLP a3 + calla SNDSND + + JRUC MENU_LOOP ;AND WAIT FOR NEXT RESPONSE. +* +* CONTROL COMES HERE WHEN A BUTTON IS PRESSED +* +* The selection number is returned in a8. (line 1 = 1) +* The routine address is returned in a9. + +MENU_BUTTON: +* +* A0 HAS A 3. +* A2 HAS THE BUTTON BIT.....IS IT ADVANCE? +* + MOVE *A13(MEN_ROM),A0,L + CMPI MEN_ADJ,A0 ; SPECIAL CASE FOR MENU ADJ + JRNZ MBNOTADJ + CALLA CKDIP + JRNZ MBNOTADJ ; NOT USING DIP SWITCHES + MOVE *A13(MEN_CUR),A0,W ; GET THE SELECT ITEM + CMPI 2,A0 ; "STANDARD PRICING" + JRZ MBABORT + CMPI 3,A0 ; "CUSTOM PRICING" + JRZ MBABORT + CMPI 4,A0 ; "FREE PLAY" + JRNZ MBNOTADJ +MBABORT + + movi d_enter_snd,a3 + calla SNDSND + + JRUC MENU_LOOP +MBNOTADJ + CLR A0 ;NOT ADVANCE + +IS_ADV: + MOVE A0,*A13(MEN_ADV),W ;NON ZERO IF IT WAS ADVANCE + + JSRP BUTTON_STALL ;HIGHLIGHT SELECTION AND HANG ON BUTTON + + MOVE *A13(MEN_CUR),A0,W ;GET "CURRENT" ENTRY. + CALLR GET_MENU_DATA ;A1=CURRENT_OFFSET A2=TEXT A3=ROUTINE + MOVE A0,*A13(MEN_OFF),W ;STORE THE OFFSET (CHOICE NUM) + MOVE A3,*A13(MEN_ROUT),L ;AND THE ROUTINE POINTER + MOVI MDUN_PID,A0 + MOVE A0,*A13(PROCID),W ;CHANGE OUR ID. + +MENU_DONE: + SLEEPK 20 + JRUC MENU_DONE ;NOW HANG TILL DISPATCHER SEES ID. + +menu_escape: + movi d_escape_snd,a3 + calla SNDSND + clr a0 + move a0,*a13(MEN_ADV),W + JSRP BUTTON_STALL + move *a13(MEN_CUR),a0,W + callr GET_MENU_DATA + clr a0 + move a0,*a13(MEN_OFF),W + move a0,*a13(MEN_ROUT),L + movi MDUN_PID,a0 + move a0,*a13(PROCID),W + jruc MENU_DONE + +************************************************************************** +* * +* MENU UTILITIES * +* * +************************************************************************** +************************************************************************** +* * +* BUTTON_STALL * +* * +* THIS IS CALLED WHEN THE MENU GETS A BUTTON HIT. * +* A1 HAS THE BIT OF THE BUTTON. * +* * +* WE PAINT THE MENU SQUARE TO FEEDBACK THE HIT. * +* * +* THEN WE HANG ON THE BUTTON UNTIL ITS LET GO. * +* * +************************************************************************** +BUTTON_STALL: + MOVE A2,@LAST_BUT,L ;PUSH THE BUTTON STATE + + MOVE @SCODE,A0,W ;NO CASH FOR REPEAT SOUND CODES + MOVE @DCODE,A1,W + OR A0,A1 + JRNZ DONT_WAIT ;ITS A SOUND REPEAT....DON'T HOLD EITHER! + + movi d_enter_snd,a3 + calla SNDSND + + MOVE *A13(MEN_CUR),A0,W ;GET CURRENT SELECTION + MOVI COLOR_YELLOW,A1 + CALLR MENU_BAR ;CHANGE THE BAR COLOR. + + CALLR GET_MENU_DATA ;GET OUR TEXT POINTER BACK + MOVI ROBO_WHITE,A1 ;WHITE ON ORANGE DURING HOT MOMENT + JSRP MENU_TEXT ;AND WRITE INVERTED TEXT + + MOVE @LAST_BUT,A8,L ;GET BUTTON BACK + MOVI 08H,A9 ;MINIMUM TIME FOR BUTTON HIGHLITE + +; MOVI 2AH,A10 ;.5 SECONDS OF ADVANCE HOLD-DOWN +* ;WILL EXIT TEST MODE. +WAIT_FOR_RELEASE: +; CMPI ADV_HIGH,A8 ;IS IT ADVANCE BUTTON? +; JRNZ NOT_ADV ;NOPE.....NEVER MIND + +; DEC A10 ;1 LESS TIME UNIT +; JRZ DIAG_EX ;IF HE HOLDS ADVANCE...WE'RE GONE! + +;NOT_ADV: + SLEEPK 1 + + MOVE A9,A9 ;REDUCE FOR HELD TIME + JRZ WAIT_1 ;ZEROED OUT ALREADY. + DEC A9 + +WAIT_1: + CALLR FORM_SWS ;WAIT FOR THIS ONE TO GO TO ZERO + AND A8,A0 ;IS OUR BUTTON STILL DOWN? + JRNZ WAIT_FOR_RELEASE +* +* ITS RELEASED...NOW SHOW ORANGE BAR FOR MINIMUM TIME + + INC A9 ;MAKE SURE A9 HAS 1 OR MORE +WAIT_2: + SLEEPK 1 + DSJS A9,WAIT_2 + +DONT_WAIT: + MOVE *A13(MEN_CUR),A0,W ;GET CURRENT SELECTION + CLR A1 ;ERASE BAR + CALLR MENU_BAR ;CHANGE THE BAR COLOR. + + CALLR GET_MENU_DATA ;GET OUR TEXT POINTER BACK + MOVE *A13(MEN_COLR),A1,W ;RE-PLOT THE NORMAL TEXT + JSRP MENU_TEXT + + SLEEPK 2 ;NOW GIVE SOME BOUNCE PROTECTION. + + RETP + + .STRING "WWRREESSTTLLEEMMAANNIIAABAA CCOOPPYYRRIIGGHHTT 11999944 " + .STRING "MMIIDDWWAAYY MMAANNUUFFAACCTTUURRIINNGG CCOOMMPPAANNYY.. " + .STRING "AALLLL RRIIGGHHTTSS RREESSEERRVVEEDD.. " + .STRING "DDEESSIIGGNNEEDD BBYY:: MMAARRKK TTUURRMMEELLLL " + .STRING "JJOOSSHH TTSSUUII TTOONNYY GGOOSSKKIIEE " + .STRING "JJOOHHNN CCAARRLLTTOONN SSAALL DDIIVVIITTAA " + .STRING "JJOOHHNN JJAAMMIIEE RRIIVVEETTTT.. " + .STRING "SSPPEECCIIAALL TTHHAANNKKSS TTOO:: " + .STRING "GGEEOORRGGEE PPEETTRROO.." + .even + +************************************************************************** +* * +* STUFF_MENU_PROCESS * +* * +* THIS IS CALLED TO STUFF THE MENU ROM DATA INTO THE * +* CURRENT PROCESSES PDATA AREA. * +* * +************************************************************************** +STUFF_MENU_PROCESS: + MMTM SP,A0,A1,A2,A3,A8 + MOVE A13,A0 ;POINT IN PROCESS AREA + ADDI MEN_ROM,A0 ;THIS IS WHERE 1ST TIDBIT GOES + MOVE A8,*A0+,L ;STORE OUR BASE POINTER IN STRUCTURE + ADDI MR_WORDS,A8 ;MOVE TO WORD LIST + + MOVI WORD_ENTS,A2 ;NOW THIS MANY MORE WORDS. + +GMS1: + MOVE *A8+,A1 + MOVE A1,*A0+ + DSJS A2,GMS1 +* +* ALL THE MENU PARAMETERS ARE NOW IN THE PDATA AREA. +* A8 POINTS AT THE FIRST ITEM TO DISPLAY. +* + MOVE A8,*A13(MEN_TPTR),L ;STORE IN PROCESS AREA. +* +* NOW WE WANT TO FIND THE NUMBER OF ENTRIES IN THE MENU +* + CLR A0 ;START AT #1. +HOW_MANY: + INC A0 ;MOVE TO NEXT ENTRY. + CALLR GET_MENU_DATA ;GET THE PARAMETERS FOR THIS ENTRY + MOVE A2,A2 ;AND SEE IF A2=0 + JRNZ HOW_MANY ;ITS REAL.....PUT IT UP. + + DEC A0 ;PREVIOUS LINE WAS THE LAST. + MOVE A0,*A13(MEN_ENTS),W ;STUFF NUMBER IN MENU. + + MOVE A9,A9 ;DID BOZO PASS ZERO AS CURRENT? + JRZ USE_LAST + CMP A0,A9 ;MAKE SURE ITS NOT TOO HIGH + JRHI USE_LAST ;A9 IS TOO HIGH + MOVE A9,A0 ;USE THE ONE PAST + +USE_LAST: + MOVE A0,*A13(MEN_CUR),W ;MAKE ENTRY "1" CURRENT. + MMFM SP,A0,A1,A2,A3,A8 + RETS + +************************************************************************** +* * +* DO_MENU_LINE * +* * +* A0 HAS THE LINE TO DO. (1 THROUGH N). * +* PRINT TEXT NORMAL IF NOT "MEN_CUR". * +* PRINT INVERT BAR FOLLOWED BY BLACK TEXT IF * +* ITS THE CURRENT ENTRY. * +* * +************************************************************************** +DO_MENU_LINE: + CALLR GET_MENU_DATA ;GET "CURRENT" IN A1 + CMP A0,A1 ;IS IT "CURRENT" ENTRY? + JRZ DO_CURRENT_ENT ;YEP....DO INVERSE STUFF +* +* A0 HAS OFFSET (FOR POSITIONING) +* A2 HAS TEXT POINTER (FOR MESSAGE) +* A1 NEEDS COLOR FOR MESSAGE. +* + MOVE *A13(MEN_COLR),A1,W ;USE THE NORMAL ENTRY COLOR + JSRP MENU_TEXT ;PUT UP THE "TEXT" PORTION. + RETP ;AND RETURN + +DO_CURRENT_ENT: + MOVI ROBO_WHITE,A1 ;DO THE BAR IN WHITE (AT A0 HEIGHT) + CALLR MENU_BAR ;PUT IT UP (A0 PRESERVED) + + CALLR GET_MENU_DATA ;GET OUR TEXT POINTER BACK + MOVE *A13(MEN_SCOL),A1,W ;GET "SELECTED" COLOR + JSRP MENU_TEXT ;AND WRITE INVERTED TEXT + RETP ;THAT'S ALL FOLKS. + +************************************************************************** +* * +* UN_SELECT * +* * +* THIS IS CALLED TO "UN-SELECT" THE CURRENT ENTRY. * +* * +************************************************************************** +UN_SELECT: + MOVE *A13(MEN_CUR),A0,W ;POINT AT CURRENT ENTRY + CLR A1 ;USE BLACK FOR BACKGROUND + CALLR MENU_BAR ;THIS REMOVES THE BAR. + + CALLR GET_MENU_DATA ;NOW GET A2 TO TEXT POINTER + MOVE *A13(MEN_COLR),A1,W ;USE THE NORMAL ENTRY COLOR + JSRP MENU_TEXT ;PUT UP THE "TEXT" PORTION. + RETP ;AND RETURN + +************************************************************************** +* * +* MENU_BAR * +* * +* THIS IS CALLED TO PUT UP THE SELECTION BAR FOR * +* THE ENTRY IN A0, IN THE COLOR IN A1. * +* * +* THIS ROUTINE MUST PRESERVE A0. * +* * +************************************************************************** +* STRNGLEN - RETURNS THE LENGTH, IN PIXELS, OF A GIVEN STRING * +* A8 = PTR TO STRING * +* A10 = [Y,X] SPACING OF STRING * +* A11 = PTR TO FONT TABLE * +* RETURNS: * +* A7 = LENGTH OF STRING * +* Z BIT SET IF LENGTH IS ZERO * +* +* FOR FILLAREA +* +* A1 = +* A3 = DAG OF AREA [YPOS,XPOS] +* A4 = [Y,X] SIZE OF AREA +* +MENU_BAR: + MMTM SP,A0,A1,A3,A4,A5,A6,A7,A8 ;SAVE THE OFFSET + MMTM SP,A1 ;SAVE COLOR! + CALLR GET_MENU_DATA ;GET THE TEXT POINTER + CALLR STLEN_SETUP ;SETUP FOR STRLEN CALL. + CALLA STRNGLEN ;FIND WIDTH OF STRING. +* +* A7 HAS LENGTH OF STRING. +* +* WE NEED TO GET INTO A3 THE COORDINATES UF UPPER LEFT +* AND A4 THE LENGTH. +* +* IF WE'RE CENTERING, WE USE THE BAR WIDTH PARAMETER +* ALONG THE CENTER LINE. +* +* IF WE'RE LEFT JUSTIFIED, WE'LL LET THE BOX GO THE +* LENGTH OF THE TEXT FOR NOW. +* + MOVE *A13(MEN_ULX),A3,W ;LEFT X IN A3 +* +* IF WE'RE CENTERING....WE NEED TO MOVE THE "LEFT X" BACK HALF +* THE WIDTH OF THE STRING. +* + MOVE *A13(MEN_ROM),A6,L ;GET ROM POINTER + MOVE *A6(MR_TCAL),A6,L ;CHECK ROUTINE + CMPI STRCNRM,A6 + JRNZ NOT_CENTERING +* +* WE'RE CENTERING....CENTER X IS IN A3 +* + MOVE *A13(MEN_BWID),A7,W ;A7 IS THE REGISTER FOR BAR WIDTH + MOVE A7,A4 ;GET COPY IN A4 + SRL 1,A4 ;1/2 OF WIDTH COMES OFF OF CENTER + SUB A4,A3 ;A3 NOW HAS "LEFT X" + JRUC CENTERING ;A7 IS WIDTH...A3 IS X + +* +* LEFT JUSTIFIED....DO IT THE OLD WAY! +* +NOT_CENTERING: + MOVE *A13(MEN_BDX),A4,W ;GET EXTRA X UNITS FOR BAR + SUB A4,A3 + +* NOW ADD TWICE THE EXTRA X TO THE STRING LENGTH TO +* FORM THE BAR LENGTH. +* + SLL 1,A4 ;NOW DOUBLE THE EXCESS DX FOR BAR + ADD A4,A7 ;NOW A7 HAS WIDTH OF BAR + +CENTERING: + SUBI C_KLUDGE,A3 ;KLUDGE TO NULLIFY FINAL SPACE. + + CALLR GET_ENTRY_Y ;GET Y FOR ENTRY IN A5 + + MOVE *A13(MEN_BDY),A6,W ;GET BAR DY (NEGATIVE) + ADD A6,A5 ;ADJUST Y BY BAR DY + SLL 16,A5 ;SHIFT Y INTO POSITION + + ADD A5,A3 ;A3 NOW POINTS AT UPPER LEFT + + MOVE *A13(MEN_BAR),A4,W ;Y HEIGHT OF BAR + SLL 16,A4 ;IN POSITION + ADD A7,A4 ;A7 HAS X WIDTH OF BAR. + + MMFM SP,A1 ;NOW GET COLOR BACK! + SLL 16,A1 ;SHIFT COLOR TO HIGH HALF (PAL. 0) + CALLA FILLAREA ;FILL IT UP! + + MMFM SP,A0,A1,A3,A4,A5,A6,A7,A8 ;SAVE THE OFFSET + RETS + +************************************************************************** +* * +* MENU_TEXT * +* * +* THIS IS CALLED TO DISPLAY THE TEXT FOR AN ENTRY. * +* * +* A0 HAS OFFSET (FOR POSITIONING) * +* A1 HAS COLOR FOR MESSAGE. * +* A2 HAS TEXT POINTER (FOR MESSAGE) * +* * +* WE NEED TO SHIFT THE DATA FOR THE TEXT ROUTINE * +* AS FOLLOWS: * +* * +* A0 = SLEEP * +* A6 = COLOR * +* A8 = POINTER * +* A9 = ADDRESS * +* A10 = SPACING * +* A11 = FONT * +* * +************************************************************************** +MENU_TEXT: + CALLR GET_ENTRY_Y ;GET Y FOR ENTRY IN A5 + SLL 16,A5 ;SHIFT Y INTO POSITION + MOVE *A13(MEN_ULX),A9,W ;GET THE X + ADD A5,A9 ;A9 SET WITH SCREEN ADDRESS + + MOVE A1,A6 ;COLOR + CLR A0 ;NO SLEEP + + CALLR STLEN_SETUP + + MOVE *A13(MEN_ROM),A1,L + MOVE *A1(MR_TCAL),A1,L ;GET THE ROUTINE TO USE + JUMP A1 ;AND CALL IT! + +STLEN_SETUP: + MOVE A2,A8 ;TEXT POINTER + MOVI SPACING20,A10 ;SPACING + MOVE *A13(MEN_ROM),A11,L + MOVE *A11(MR_FONT),A11,L ;LOAD FONT + RETS + +************************************************************************** +* * +* MENU JOYSTICK HANDLING * +* * +************************************************************************** +ST_STICK: + CALLR FORM_SWS ;THIS LATCHES ANYONE ALREADY DOWN. + CLR A0 + MOVE A0,*A13(MEN_ACT),L ;SHOW THAT WE'RE "ACTING" ON NONE. + MOVE A0,*A13(MEN_TYPO),W ;CLEAR TYPOMATIC COUNTER. + MOVE A0,*A13(MEN_HITS),W ;CLEAR OUT "CONSECUTIVE HITS" + RETP +* +* GETSTICK......RETURN DEBOUNCED/TYPOMATIC FOR +* UP AND DOWN......OR EDGE OUT +* ANY BUTTON....(INCLUDING ADVANCE) +* +* RETURN A0= +* +* NOTHING = 0 +* UP = 1 +* DOWN = 2 +* BUTTON = 3 +* +* A2 = BUTTON BIT ON BUTTON HITS +* +UP_OR_DOWN EQU UP_BITS+DOWN_BITS +TYPO_COUNT EQU 4 +TYPO_STALL EQU 25 +MENU_TYPO EQU (TYPO_COUNT*10000H)+14 ;14 HITS FOR MENU TILL STUCK + +* +* TO USE THIS.......FIRST JSRP ST_START. +* THIS STICKS CLOSED SWITCHES AND +* INITIALIZES COUNTERS. +* +* DATA IS STORED IN YOUR PDATA +* AREA.....AT AREAS DETERMINED +* BY THE "MEN_" STRUCTURE. THESE +* LOCATIONS MUST BE AVAILABLE. +* +* A8-A11 ARE NOT TOUCHED. +* +* AFTER ST_START.....READ AS FOLLOWS. +* +* +* LOOP SLEEP 1 +* MOVI TYPO_PARMS,A5 +* JSRP GETSTICK +* +* +* +* +* JRUC LOOP +* +* +* INPUT A5-----TOP HALF IS TYPOMATIC RATE +* LOW HALF IS COUNT TILL STICK IS CALLED STUCK +* +GETSTICK: + MOVE A5,A6 + SRL 16,A5 ;TYPO RATE IN A5 + ANDI WORD_MASK,A6 ;STUCK HIT COUNT IN A6 + + CALLR FORM_SWS ;SEE WHAT THEY LOOK LIKE NOW. +* +* RETURN CURRENT STATE IN A0..PREVIOUS STATE IN A1. +* + NOT A1 ;LAST = 0 AND NOW = 1 MEANS EDGE! + + AND A1,A0 ;1'S WHERE WE HAVE POSITIVE EDGE. + MOVE A0,A4 ;KEEP NEW EDGE STATE IN A4! + + andi 00400000h,a0 + jrnz ESC_BUT + move a4,a0 + + ANDI BUTTONS|START_BITS,A0 ;BUTTON SAYS ACT....IGNORE STICK! + JRNZ TEST_BUTS ;NEW BUTTON......RETURN IT! +* +* NO BUTTON.....DO STICK TYPOMATIC STUFF! +* + MOVE *A13(MEN_ACT),A2,L ;IS THERE ONE TO WATCH? + JRZ NEW_SCAN ;NOPE....LOOK FOR NEW STUFF! +* +* WE HAVE ONE THAT'S DOWN THAT WE WANT TO WATCH. +* + CALLR FORM_SWS ;SEE WHAT THEY LOOK LIKE NOW. + AND A2,A0 ;IS IT STILL MADE? + JRZ GS_STICK_OPEN ;NOPE.......CLEAR OUT ITS STATE. +* +* ITS STILL MADE........DO TYPOMATIC. +* + MOVE *A13(MEN_TYPO),A1,W ;DECREMENT TYPOMATIC COUNTER + DEC A1 + MOVE A1,*A13(MEN_TYPO),W ;AND PUT BACK IN MEMORY + JRNZ GS_ZERO ;NOT TIME YET.....RETURN NOTHING +* +* WE HAVE A TYPOMATIC HIT.....WE NEED TO TURN SWITCH BIT (A0) +* INTO "UP" OR "DOWN" AND RE-LOAD TYPOMATIC COUNTER. +* +* + MOVE *A13(MEN_HITS),A1,W ;GET NUMBER OF HITS + INC A1 ;AFTER 15 TYPOS.....KILL TILL OPEN! + MOVE A1,*A13(MEN_HITS) ; + CMP A6,A1 ;TOO MANY HITS? + JRHS GS_GONE ;YEP....CALL THIS "STUCK" + MOVE A5,*A13(MEN_TYPO),W ;TYPOMATIC COUNTER RELOADED. + +RETURN_UP_DOWN: + MOVE A0,A1 ;GET THE BIT + MOVE A1,A2 ;MAKE A COPY + MOVK 1,A0 ;ASSUME UP + ANDI UP_BITS,A1 ;IS IT AN "UP" BIT + JRNZ GS_X ;YEP...RETURN UP. + MOVK 2,A0 ;ASSUME DOWN + ANDI DOWN_BITS,A2 ;IS IT A "DOWN" BIT + JRNZ GS_X ;YEP...RETURN "DOWN" +* +* NOT A TYPOMATIC CONDITION. +* + +GS_GONE: + CLR A0 ;CLEAR OUT CURRENT HIT. + MOVE A0,*A13(MEN_ACT),L ;INDICATE READY FOR NEXT HIT! + JRUC GS_X ;AND RETURN THIS ZERO (NOTHING!) +* +* STICK THAT WAS CLOSED OPENED......STOP BOUNCE UPWARD! +* +GS_STICK_OPEN: + SLEEPK 6 + JRUC GS_GONE ;NOW.....CLEAR OUT FOR NEXT HIT. +* +* CONTROL COMES HERE WHEN NO BUTTONS ARE PENDING. +* +NEW_SCAN: + MOVE A4,A0 ;LOOK AT THE NEW EDGES. + + ANDI UP_OR_DOWN,A0 ;IS IT UP OR DOWN? + JRZ GS_ZERO ;NO STICK....RETURN NO ACTION! + + CALLR FRST_BIT ;REDUCE TO ONE BIT. + MOVE A0,*A13(MEN_ACT),L ;STORE THIS BIT + + MOVI TYPO_STALL,A1 + MOVE A1,*A13(MEN_TYPO),W ;TYPOMATIC COUNTER SET FOR LONG STALL. + + CLR A1 + MOVE A1,*A13(MEN_HITS),W ;LOAD UP A BUNCH OF HITS + JRUC RETURN_UP_DOWN ;RETURN CORRECT CODE UP OR DOWN +* +* NOT UP OR DOWN......SEE IF ITS A BUTTON. +* +TEST_BUTS: +* +* ITS A BUTTON...ALL NEW BUTTON EDGES IN A0 +* + CALLR FRST_BIT ;USE 1 OF THEM. + + MOVE A0,A2 ;RETURN THE BIT. + + MOVI 3,A0 ;RETURN THAT ITS A BUTTON. + JRUC GS_X ;STUCK PROCESSING WILL BE AUTOMATIC. + +ESC_BUT + movi 4,a0 + jruc GS_X + +GS_ZERO: + CLR A0 ;RETURN NO SWITCH. +GS_X: + RETP + +************************************************************************** +* * +* FRST_BIT * +* * +* A0 HAS 1 OR MORE BITS SET....RETURN 1 OF THEM. * +* * +************************************************************************** +FRST_BIT: + MMTM SP,A1,A2 + MOVK 1,A1 ;SHIFT TILL WE FIND IT. +FB1: + MOVE A0,A2 + AND A1,A2 + JRNZ GOT_IT ;WE HAVE ON (IN A1) + SLL 1,A1 ;SHIFT IT + JRUC FB1 +GOT_IT: + MOVE A1,A0 ;RETURN THE BIT + MMFM SP,A1,A2 + RETS + +************************************************************************** +* * +* FORM_SWS * +* * +* GET THE SWITCHES....1=CLOSED.....AND SAVE * +* THIS SCAN AS "LAST STATE". RETURN: * +* * +* CURRENT STATE IN A0 * +* PREVIOUS STATE IN A1 * +* * +************************************************************************** +FORM_SWS: + callr fudge_switches + + move *a13(MEN_STIK),a1,L ;RETURN PREVIOUS STATE + move a0,*a13(MEN_STIK),L ;SAVE "STUCK" STATE. + rets + +************************************************************************** +fudge_switches + +; move @COINS,a0,W +; move @SWITCH,a1,W + move @_coin_addr,a0,L + move *a0,a0,W + move @_switch_addr,a1,L + move *a1,a1,W + sll 16,a0 + sll 16,a1 ;mask off top 16 + srl 16,a1 + or a1,a0 + move @_switch_map_mode,a1,L ; Are we mapping switches? + jrz _switch_mapping_done ; Nope - goto done + cmpi 1,a1 ; Are we in menu mapping mode? + jrnz _no_menu_mapping ; Nope - go check other modes + move @_coin_addr,a1,L + move *a1,a1,W + sll 3,a1 ; Map Vol up/down onto up/down + srl 14,a1 + ori 0fffffffch,a1 + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + ori 0ffffffefh,a1 + and a1,a0 + jruc _switch_mapping_done ; All done +_no_menu_mapping + cmpi 2,a1 ; Are we in adjust mapping mode + jrnz _no_adjustment_mapping ; Nope - go check other modes + move @_coin_addr,a1,L + move *a1,a1,W + sll 3,a1 + srl 15,a1 + ori 0fffffffeh,a1 + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + sll 4,a1 + srl 14,a1 + ori 0fffffffdh,a1 + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + ori 0ffffffefh,a1 + and a1,a0 + movi 00400000h,a1 + or a1,a0 ; No Service button in adjust mode + jruc _switch_mapping_done ; All done +_no_adjustment_mapping + cmpi 3,a1 ; Are we in any button mapping mode + jrnz _no_any_mapping ; Nope - go check other modes + move @_coin_addr,a1,L + move *a1,a1,W + sll 3,a1 ; Map Vol up/down onto action button + srl 9,a1 + ori 0ffffff9fh,a1 ; Buttons B and C + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + ori 0ffffffefh,a1 ; Button A + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + sll 9,a1 + srl 8,a1 + ori 0ffffff7fh,a1 ; Button D + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + sll 13,a1 + srl 3,a1 + ori 0ffffefffh,a1 + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + sll 10,a1 + srl 2,a1 + ori 0ffffdfffh,a1 + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + sll 5,a1 + ori 0ffff3fffh,a1 + and a1,a0 +_no_any_mapping +_switch_mapping_done + +; move @SWITCH,a0,L ;GET BOTH SWITCH WORDS + not a0 ;COMPLEMENT +; move @SWITCH2,a1 ;move action 5 buttons into low 32 bits + move @_switch2_addr,a1,L + move *a1,a1 + ori 0FFFF0000h,a1 + not a1 + andi 01111b,a1 ;make them buttons + sll 4,a1 + or a1,a0 + + rets + + +************************************************************************** +*SPECIAL DIAGNOSTIC VERSION OF fudge_switches +*USE FCALL WITH B6 AS THE RETURN REGISTER WHEN CALLING. +* +fudge_switches_diag +; move @SWITCH,a0,L ;GET BOTH SWITCH WORDS + move @_switch_addr,a0,L + move *a0,a0,W + move @_coin_addr,a1,L + move *a1,a1,W + sll 16,a1 + or a1,a0 + not a0 ;COMPLEMENT +; move @SWITCH+20h,a1 ;move action 5 buttons into low 32 bits + move @_switch2_addr,a1,L + move *a1,a1 + not a1 +;;; andi 011b,a1 + andi 01111b,a1 + sll 4,a1 + or a1,a0 + + FRET B6 + +************************************************************************** +fudge_switches2 + + callr fudge_switches + move @fswitches_cur,a1,L + move a1,@fswitches_last,L + move a0,@fswitches_cur,L + xor a0,a1 ;bits that have changed + and a0,a1 ;down transitions only + move a1,@fswitches_down,L + + rets + +************************************************************************** +* * +* GET_MENU_DATA * +* * +* A0 IS OFFSET OF ENTRY OF INTEREST * +* * +* RETURN A1 = CURRENT OFFSET * +* A2 = TEXT POINTER * +* A3 = ROUTINE * +* * +************************************************************************** +GET_MENU_DATA: + MMTM SP,A0 ;DON'T ALTER A0 + + CALLR PM_ENTRY ;POINT A1 AT ENTRY + + MOVE *A1(MENU_TEXT_PTR),A2,L ;FETCH THE TEXT POINTER + MOVE *A1(MENU_ROUTINE),A3,L ;FETCH THE ROUTINE + MOVE *A13(MEN_CUR),A1,W ;RETURN CURRENT ENTRY IN A1 + MMFM SP,A0 ;DON'T ALTER A0 + RETS + +************************************************************************** +* * +* PM_ENTRY * +* * +* A0 = MENU ENTRY OF INTEREST * +* RETURN A1 -> POINTS AT FOR THIS * +* ENTRY. * +* * +************************************************************************** +PM_ENTRY: + MMTM SP,A0 + DEC A0 ;INDEX FROM ZERO + MOVI MENU_ENTRY_SIZE,A1 ;TIMES SIZE PER ENTRY + MPYU A0,A1 ;A1 CONTAINS OFFSET INTO TABLE + + MOVE *A13(MEN_TPTR),A0,L ;GET THE BASE OF THE MENU TEXT ENTRIES + ADD A0,A1 ;ADD TO OFFSET + MMFM SP,A0 + RETS + +************************************************************************** +* * +* PLOT_HELP * +* * +* THIS ROUTINE PLOTS (OR CLEARS) THE HELP AREA * +* FOR THE CURRENT ENTRY. * +* * +************************************************************************** +PLOT_HELP: + MOVE *A13(MEN_CUR),A0,W ;GET CURRENT ENTRY + CALLR PM_ENTRY ;A1 POINTS AT GROUP + MOVE *A1(MENU_HELP),A8,L ;GET HELP TABLE + CMPI NO_HELP,A8 ;NOT A "HELP" SITUATION? + JRZ NO_HELP_FOR_THIS_ONE + CMPI ADJ_HELP,A8 ;ADJUSTMENT HELP REQUESTED? + JAEQ DO_ADJH ;THEN DO IT IN ADJ MODULE! +; CMPI SND_HELP,A8 ;ARE WE IN SOUND TEST? +; JREQ DO_SHELP +; CMPI SND_PLAY,A8 +; JREQ DO_SPLAY + CALLR DO_HELP_MENU +NO_HELP_FOR_THIS_ONE: + RETS + +************************************************************************** +* * +* DO_SHELP * +* * +* THIS IS CALLED FOR EACH NON PLAYING ENTRY IN THE SOUND * +* TABLE MENU. IT CAUSES THE SOUND BOARD TO BE SHUT * +* UP AND THE BOTTOM LINE (WHERE TITLES APPEAR) * +* TO BE ERASED. * +* * +************************************************************************** +;DO_SHELP: +;; MOVE @SND_MADE,A0,W ;DID SOMEONE MAKE A SOUND? +;; JRZ DO_SH1 ;NOPE +;; CLR A0 +; MOVE A0,@SND_MADE,W ;CLEAR THIS AND RESET THE BOARD! +; MOVE A0,@SCODE,W +; MOVE A0,@DCODE,W +; CALLA QSNDRST ;kill any sounds in progress +;DO_SH1: +; CALLR BLNKSNAM ;BLANK OUT ANY WRITING! +; RETS +;* +;* A0 CONTAINS 3 FOR SYNTHESIZER...4 FOR DIGITIZER... +;* IF CORRESPONDING "CODE" BYTE IS NON ZERO, THEN DISPLAY +;* THE TEXTLINE THAT CORRESPONDS. ELSE BLANK OUT THE +;* AREA. +;* +;DO_SPLAY: +; CALLR BLNKSNAM ;BLANK OUT LAST MESSAGE +; CMPI 3,A0 ;SYNTHESIZER? +; JRZ CK_SYNT ;YEP. +;* +;* DIGITIZER. +;* +; MOVE @SCODE,A1,W ;HOLD INFO IF SYNTH WAS RUNNING +; CLR A0 +; MOVE A0,@SCODE,W ;CLEAR OUT SYNTH CODE +; MOVE @DCODE,A0 ;ANY CODE +; JRZ DO_SPQX ;NOTHING HERE.....SHUT UP SOUND SYS. +; +; MOVI DTABLE,A1 ;BASE OF POINTER TABLE FOR DIGITIZER +; JRUC DO_SP1 ;PRINT THE STRING. +; +; +;CK_SYNT: +; MOVE @DCODE,A1,W ;HOLD INFO IF DIGITIZER WAS RUNNING +; CLR A0 +; MOVE A0,@DCODE,W ;CLEAR OUT DIG CODE +; MOVE @SCODE,A0 ;ANY CODE +; JRZ DO_SPQX ;NOTHING HERE. +; +; MOVI STABLE,A1 ;BASE OF POINTER TABLE FOR DIGITIZER +; +;DO_SP1: +; CALLR MEN_NUMS ;A4 = LEFT X A5 = RIGHT X +; ADDI 10000H*SND_MESS_Y,A4 ;UPPER LEFT Y +; ADDI 10000H*(SND_MESS_Y+SND_BOX_H),A5 ;UPPER LEFT X +; MOVI ROBO_WHITE,A9 +; CALLR STD_BORD +; +; DEC A0 ;INDEX FROM 1. +; SLL 5,A0 +; ADD A0,A1 +; MOVE *A1,A2,L ;NOW WE HAVE THE MESSAGE +; +; MOVI SND_INST,A8 +; JSRP L_MESS ;PUT INSTRUCTION OUT. +; +; MOVI SND_SETUP,A8 +; CALLA LM_SETUP +; +; MOVE A2,A8 +; JSRP LM_FINIS ;DO THE DEED +; RETS ;AND RETURN +; +;DO_SPQX: +; MOVE A1,A1 ;OUR SELECTION ISN'T RUNNING...WAS OTHER? +; JRZ DO_SPX ;NOPE +; CALLA QSNDRST ;KILL SOUNDS IN PROGRESS +; CLR A0 +; MOVE A0,@SND_MADE,W ;NO RESET NECESSARY NOW +;DO_SPX: +; RETS +; +;************************************************************************** +;* * +;* BLNKSNAM * +;* * +;* CALLED TO BLANK OUT THE SOUND CODE NAME DURING * +;* SOUND TEST. * +;* * +;************************************************************************** +;* +;* A3 = POINTER +;* A4 = SIZE +;* +;BLNKSNAM: +; MOVI (SND_MESS_Y*10000H)+20H,A3 +; MOVI (SND_BOX_H*10000H)+1E0H,A4 +; JAUC BLNKAREA ;ITS BLANK! +; +************************************************************************** +* * +* GET_ENTRY_Y * +* * +* THIS RETURNS THE Y POSITIONS FOR THE ENTRY SPECIFIED * +* IN A0. * +* * +* A5 = Y VALUE IN UNITS. * +* * +************************************************************************** +GET_ENTRY_Y: + MMTM SP,A0,A1 + MOVE *A13(MEN_ULY),A5,W + MOVE *A13(MEN_DY),A1,W + DEC A0 + MPYU A0,A1 ;A1 HAS OFFSET PER ENTRY + ADD A1,A5 + MMFM SP,A0,A1 + RETS + +************************************************************************** +* * +* MENU_BORDER * +* * +* THIS IS CALLED TO PUT A BORDER AROUND THE MENU. * +* * +* A8 = MENU STRUCTURE * +* A9 = 1st item to activate as current * +* * +* BORDER IS DONE IN MENU TEXT COLOR * +* * +* THIS ASSUMES MENU IS IN THE CENTERING FORMAT * +* * +************************************************************************** +* +* 1ST WE NEED TO FIND UPPER LEFT. +* +* +* X = MENU_X - (BAR_WIDTH/2) - 2 (LESS BORDER WIDTH) +* Y = MENU_Y - BDY (LESS BORDER HEIGHT) +* +* LOWER RIGHT : +* +* X = MENU_X + (BAR_WIDTH/2) - 2 (PLUS BORDER WIDTH) +* Y = MENU_Y + (MENU_ENTRIES-1) * DY)) - BDY + BAR_HITE +* +* +MENU_BORDER: + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9 + CALLR STUFF_MENU_PROCESS ;MOVE DATA INTO PDATA AREA +* +* FIRST COMPUTE UPPER LEFT +* + CALLR MENU_UL_A4_A5 ;GET UPPER LEFT COORDINATES + SLL 16,A5 + ADD A5,A4 ;A4 POINTS TO UPPER LEFT. +* +* FORM LOWER RIGHT +* + CALLR MENU_LR_A6_A5 + SLL 16,A5 ;SHIFT A5 DOWN + ADD A6,A5 ;A5 POINTS AT LOWER RIGHT + + MOVE *A13(MEN_COLR),A9,W ;GET MENU TEXT COLOR + CALLR STD_BORD + + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9 + RETS + +************************************************************************** +* * +* MCSETUP * +* * +* RETURN: * +* A0 = CENTER OF MENU * +* A1 = 1/2 BAR WIDTH * +* A2 = Y FOR FIRST LINE OF TEXT OF MENU * +* A3 = DELTA Y (NEGATIVE TO GET FROM TEXT TO BAR. * +* * +************************************************************************** +MCSETUP: + MOVE *A13(MEN_ULX),A0,W ;UPPER LEFT X (ACTUALLY CENTER) + MOVE *A13(MEN_BWID),A1,W ;BAR_WIDTH + SRL 1,A1 ;ALL CALCS USE BAR_WIDTH/2 + MOVE *A13(MEN_ULY),A2,W ;UPPER LEFT Y + MOVE *A13(MEN_BDY),A3,W ;DELTA Y (NEGATIVE) + RETS + + +************************************************************************** +* * +* MENU_UL_A4_A5 * +* * +* RETURN WINDOW UPPER LEFT CORNER * +* * +* A4 = X * +* A5 = Y * +* * +************************************************************************** +MENU_UL_A4_A5: + MMTM SP,A0,A1,A2,A3 + CALLR MCSETUP ;STUFF THE REGGIES + MOVE A0,A4 ;FORM ULX + SUB A1,A4 + SUBI C_KLUDGE,A4 ;A4 HAS UPPER LEFT X + + MOVE A2,A5 + ADD A3,A5 ;A5 HAS UPPER LEFT Y + + SUBI MB_XWID+GAP,A4 ;NOW WE POINT AT UPPER LEFT FOR FRAME + SUBI MB_YWID+GAP,A5 + MMFM SP,A0,A1,A2,A3 + RETS + +************************************************************************** +* * +* MENU_LR_A6_A5 * +* * +* RETURN WINDOW LOWER RIGHT CORNER * +* * +* A6 = X * +* A5 = Y * +* * +************************************************************************** +MENU_LR_A6_A5: + MMTM SP,A0,A1,A2,A3 + CALLR MCSETUP ;STUFF THE REGGIES + + MOVE A0,A6 ;LOWER RIGHT X + ADD A1,A6 + SUBI C_KLUDGE,A6 ;THIS IS THE X + + MOVE *A13(MEN_ENTS),A0,W ;THIS IS LAST ENTRY + CALLR GET_ENTRY_Y ;A5 HAS THE Y FOR THE LAST ENTRY + ADD A3,A5 ;A5 NOW HAS TOP OF LAST BOX + MOVE *A13(MEN_BAR),A7,W ;HEIGHT OF BAR + ADD A7,A5 ;A5 NOW HAS LOWER RIGHT Y + + ADDI MB_YWID+GAP,A5 + ADDI MB_XWID+GAP,A6 ;THIS IS END OF BORDER + MMFM SP,A0,A1,A2,A3 + RETS + + +************************************************************************** +* * +* F_TITLE * +* * +* THIS IS CALLED TO FRAME A TITLE IN THE SAME WIDTH * +* AS THE MAIN TITLE. * +* * +* A0 = Y LEVEL OF 15 POINT TEXT * +* A9 = COLOR * +* * +************************************************************************** +F_TITLE: + MMTM SP,A4,A5,A0 + MOVE A0,A4 ;COPY Y + SUBI 12,A4 + SLL 16,A4 + ADDI TIT_ULX,A4 ;UPPER LEFT SET + + MOVE A0,A5 ;LOWER RIGHT + ADDI 27,A5 + SLL 16,A5 + ADDI TIT_LRX,A5 ;LOWER RIGHT SET + + CALLR STD_BORD + MMFM SP,A4,A5,A0 + RETS + +FIRST_BORDER_COLOR EQU 0E0E0H +LAST_BORDER_COLOR EQU 0EFEFH +************************************************************************** +* * +* G_BORDER * +* * +* THIS IS CALLED TO DO A "HSTD TABLE" TYPE CYCLING * +* BORDER. THIS ROUTINE GETS: * +* * +* A4 = UPPER LEFT Y,X * +* A5 = LOWER RIGHT Y,X * +* A6 = NUMBER OF SLICES GOING IN. * +* * +************************************************************************** +G_BORDER: + MMTM SP,A0,A1,A2,A3,A4,A5,A6 + MOVI 10001H,A0 ;1 BY 1 DIMENSION + + MOVI LAST_BORDER_COLOR,A9 ;USE LAST ONE 1ST +NEXT_RING: + CALLR DOBORDER ;DO THIS RING + + MOVI 10001H,A1 ;THIS IS 1 UNIT IN X AND Y + ADDXY A1,A4 + SUBXY A1,A5 + + SUBI 101H,A9 + CMPI FIRST_BORDER_COLOR,A9 + JRHS COLOK + MOVI LAST_BORDER_COLOR,A9 + +COLOK: + DSJS A6,NEXT_RING + MMFM SP,A0,A1,A2,A3,A4,A5,A6 + RETS + +************************************************************************** +* * +* DOBORDER * +* * +* THIS IS CALLED TO DRAW A BORDER FRAME. * +* * +* A4 = UPPER LEFT Y,X * +* A5 = LOWER RIGHT Y,X * +* A0 = Y,X WIDTH OF BORDER * +* A9 = COLOR OF BORDER. * +* * +* THIS ROUTINE *** CLEARS OUT ALL AREA INSIDE THE BORDER*** * +* AS A FUNCTION OF ITS OPERATION. * +* * +* THE BORDER IS DONE IN THE "ROBO" PALETTE * +* * +* IT IS ASSUMED THAT THE DISPLAY SYSTEM IS RUNNING! * +* * +************************************************************************** +* +* A1 = +* A3 = DAG OF AREA [YPOS,XPOS] +* A4 = [Y,X] SIZE OF AREA +* +DOBORDER: + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9 + MOVE A9,A1 ;GET COLOR + SLL 16,A1 ;COLOR ON TOP..PALETTE 0 +* +* NOW WE NEED TO MAKE 4 BARS! +* + MOVE A0,A2 ;SEPARATE DELTA + ANDI SX_MASK,A0 + ANDI SY_MASK,A2 + + MOVE A4,A6 ;UPPER LEFTS HERE + MOVE A4,A7 + + MOVE A5,A8 ;LOWER RIGHTS HERE + MOVE A5,A9 + + ANDI SX_MASK,A6 ;LEFT X + ANDI SX_MASK,A8 ;RIGHT X + + ANDI SY_MASK,A7 ;TOP Y + ANDI SY_MASK,A9 ;BOTTOM Y + +* +* FIRST BAR GOES FROM ORIGINAL UL XY TO RIGHT X +* AND TOP Y+DELTA Y +* +* A3 IS ORIGINAL A4 PASSED. +* FORM DESTINATION IN A4 +* + MOVE A4,A3 + + MOVX A8,A4 + MOVY A7,A4 + ADDXY A2,A4 ;ADD THE DELTA + + CALLR DO_A_LINE ;DO THIS LINE +* +* GOING AROUND CLOCKWISE.....THIS ONE STARTS AT RIGHT X-DELTA +* AND TOP Y +* + MOVX A8,A3 + SUBXY A0,A3 + MOVY A7,A3 +* +* THIS IS THE NATURAL LOWER RIGHT CORNER +* + MOVX A8,A4 + MOVY A9,A4 + + CALLR DO_A_LINE +* +* NOW FOR BOTTOM LINE.....A4 IS STILL SET! +* + MOVX A6,A3 + MOVY A9,A3 + SUBXY A2,A3 + + CALLR DO_A_LINE +* +* LEFT WALL....FROM UPPER LEFT +* + MOVX A6,A3 + MOVY A7,A3 + + MOVX A6,A4 + ADDXY A0,A4 + MOVY A9,A4 + + CALLR DO_A_LINE + + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9 + RETS + +DO_A_LINE: + MMTM SP,A4 + SUBXY A3,A4 ;FORM DISTANCE + CALLA FILLAREA ;AND DO THE FILL + MMFM SP,A4 + RETS + +STD_BORD: + MMTM SP,A0 + MOVI BORDER_SIZE,A0 + CALLA DOBORDER + MMFM SP,A0 + RETS +************************************************************************** +* * +* DO_HELP_MENU * +* * +* THIS IS CALLED TO DISPLAY A HELP MENU FOR THE CURRENT * +* MENU ENTRY. * +* * +* A HELP MENU IS DEFINED AS FOLLOWS: * +* * +* HM_JUST WORD 0=CENTER 1=LEFT * +* HM_COLOR WORD COLOR OF MENU * +* HM_ENTS WORD NUMBER OF LINES IN MENU * +* LONG LONG WORD POINTERS FOR EACH LINE! * +* * +* THE PROCESS AREA IS FILLED WITH THE CURRENT MENU * +* PARAMETERS. * +* * +* A8 = POINTER TO HELP MENU STRUCTURE ABOVE * +* * +************************************************************************** +DO_HELP_MENU: + CALLR BLNKHELP + + MOVE A8,A8 ;CHECK IF HELP MENU EXISTS. + JRZ DHMX ;NOPE JUST CLEARING WAS OUR JOB. + + MOVE *A13(MEN_CUR),A0,W ;THIS IS CURRENT ENTRY + MOVE A0,A11 ;PASS ENTRY NUMBER IN A11 + CALLR GET_ENTRY_Y ;A5 HAS THE Y FOR THE CURRENT ENTRY +* +* NOW WE NEED TO MOVE TO MAKE TOP ENTRY BOX LINE UP. +* + MOVE *A13(MEN_BDY),A10,W ;THIS IS NEGATIVE TO GIVE US BOX TOP + ADD A5,A10 ;NOW WE HAVE BOX TOP + + MOVE *A13(MEN_BAR),A5,W ;GET BAR HEIGHT + SRL 1,A5 ;FIND CENTER OF BAR + ADD A5,A10 ;NOW WE'RE AT BAR CENTER. + + MOVI H_SLAVE,A7 ;FORK OFF SO IT CAN USE PDATA! + CALLA P_FORK ;START UP ANOTHER W/ SAME ID TO FLASH! +DHMX RETS + +************************************************************************** +* * +* BLNKHELP * +* * +* THIS IS CALLED TO BLANK OUT THE HELP AREA. IT IS * +* USED BY BOTH THE "NORMAL" HELP PLOTTER AND IS * +* CALLED BY THE ADJUSTMENT HELP PROGRAM. * +* * +* THIS RETURNS THE LEFT X FOR THE HELP MENU IN A9 * +* * +************************************************************************** +BLNKHELP: + MMTM SP,A3,A4,A5,A6 + CALLR MENU_LR_A6_A5 ;GET RIGHT X OF MAIN MENU IN A6 + MOVE A6,A9 ;PASS TO HELP MENU SLAVE +* +* NOW BLANK OUT THE "HELP" REGION +* + MOVE A6,A3 ;UPPER LEFT X OF REGION TO BLANK OUT + ADDI INST_ULY*10000H,A3 ;THIS IS UPPER LEFT OF BLOCK + + MOVI TIT_LRX+(10000H*400),A4 ;COORDINATE OF LOWER RIGHT OF HELP AREA + SUBXY A3,A4 ;THIS IS SIZE OF REGION TO BLANK + CALLA BLNKAREA ;BLANK OUT THE HELP AREA + ADDI BOX_XGAP,A9 ;RETURN X FOR HELP MENUS + MMFM SP,A3,A4,A5,A6 + RETS + +************************************************************************** +* * +* H_SLAVE * +* * +* THIS IS A PROCESS CREATED TO PLOT THE HELP BOX. * +* IT DOES ITS PLOTTING THEN DIES. THIS ALLOWS IT * +* TO USE THE PDATA AREA WITHOUT DISTURBING THE CALLER. * +* * +* A8 = POINTER TO HELP BOX STRUCTURE * +* A9 = LEFT MARGIN FOR THE HELP BOX. * +* A10 = Y OF CENTER OF BOX ...HIGH HALF IS ZERO FOR Y CENTING * +* IF HIGH HALF IS NON-ZERO, THEN THIS IS TOP OF BOX * +* * +************************************************************************** +HM_JUST EQU 0 +HM_COLOR EQU HM_JUST+WORD_SIZE +HM_ENTS EQU HM_COLOR+WORD_SIZE +HM_DATA EQU HM_ENTS+WORD_SIZE ;ENTRY POINTERS + +HS_ROUT EQU PDATA ;LONG-TEXT ROUTINE +HS_X EQU HS_ROUT+LONG_SIZE ;WORD-X FOR TEXT ROUTINE +HS_Y EQU HS_X+WORD_SIZE ;WORD-CURRENT Y +HS_ENTS EQU HS_Y+WORD_SIZE ;WORD-ENTRIES LEFT TO DO +HS_COLOR EQU HS_ENTS+WORD_SIZE ;WORD-COLOR OF MENU +HS_PTR EQU HS_COLOR+WORD_SIZE ;LONG-CURRENT TEXT POINTER + +H_SLAVE: + SLEEPK 1 + +* +* A9 HAS RIGHT X OF MENU +* + MOVE A9,A1 ;PUT THIS X VALUE IN A1 + + MOVE *A8(HM_JUST),A0,W ;0 = CENTER 1=LEFT + JRZ HS_CENT ;CENTER....SETUP X ACCORDINGLY +* +* LEFT JUSTIFY....STORE ROUTINE +* + MOVI STRLNRM,A0 ;LEFT JUSTIFY ROUTIN +* +* NOW FORM X AS SOME MARGIN FROM WINDOW.... +* + ADDI MB_XWID+HELP_X_MARGIN,A1 ;ADD MARGIN TO FORM X FOR TEXT + JRUC CENTER_JOIN ;CONTINUE + +HS_CENT: + MOVI STRCNRM,A0 ;USE CENTERING ROUTINE +* +* A1 HAS LEFT X OF HELP BOX...FIND RIGHT X +* + ADDI TIT_LRX,A1 + SRL 1,A1 ;THIS IS CENTER X + +CENTER_JOIN: + MOVE A1,*A13(HS_X),W ;STORE X + MOVE A0,*A13(HS_ROUT),L ;STORE ROUTINE + + MOVE *A8(HM_ENTS),A1,W ;GET NUMBER OF ENTRIES + MOVE A1,*A13(HS_ENTS),W ;COUNT IT DOWN IN P-AREA + + MOVE *A8(HM_COLOR),A0,W ;GET COLOR + MOVE A0,*A13(HS_COLOR),W ;STASH IT + + ADDI HM_DATA,A8 ;POINT AT 1ST ENTRY + MOVE A8,*A13(HS_PTR),L ;NOW WE'RE READY. +* +* ALL PDATA AREA SET.....NOW WE NEED TO DRAW THE BORDER +* +* FOR DOBORDER +* +* A4 = UPPER LEFT Y,X +* A5 = LOWER RIGHT Y,X +* A0 = Y,X WIDTH OF BORDER +* A9 = COLOR OF BORDER. +* +* LOWER RIGHT X IS SUCH THAT IT LINES UP WITH TITLE BOX. +* THE Y IS A BIT TRICKIER......NUMBER OF ENTRIES IS +* SITTING IN A1 +* + MOVI HELP_DY,A5 ;DISTANCE PER ENTRY + MPYU A1,A5 ;DISTANCE FOR ALL ENTRIES + ADDI HELP_Y_MARGIN+(MB_YWID*2)+HELP_YLO_MARGIN,A5 +* +* A5 NOW CONTAINS FULL HEIGHT OF BOX +* +* NOW SEE IF WE'RE CENTERING ON A10 OR IF A10 IS THE TOP. +* + CALLR TOP_IN_A10 +* +* NOW FORM UPPER LEFT IN A4 +* + MOVE A10,A4 ;MOVE Y OVER + SLL 16,A4 ;MAKE ROOM FOR X + ADD A9,A4 ;PUT IN THE X...THIS IS UPPER LEFT! + + ADD A10,A5 ;ADD BASE TO OFFSET + SLL 16,A5 ;PUT IN Y POSITION + ADDI TIT_LRX,A5 ;ADD IN THE X FOR THE CORNER +* +* NOW ADJUST FROM TOP OF BOX TO POSITION OF +* 1ST ENTRY. +* + ADDI MB_YWID+HELP_Y_MARGIN,A10 ;Y OF 1ST ENTRY + MOVE A10,*A13(HS_Y),W ;PUT AWAY + + MOVE *A13(HS_COLOR),A9,W ;GET THE COLOR FOR DOBORDER + + CALLR STD_BORD +* +* NOW WE NEED TO WALK THROUGH AND PLOT THE HELP +* MENU ENTRIES. +* +* A0 = SLEEP +* A1 = ROUTINE +* A6 = COLOR +* A8 = POINTER +* A9 = ADDRESS +* A10 = SPACING +* A11 = FONT +* A14 = FLAGS +* +NEXT_HELP: + MOVE *A13(HS_PTR),A2,L ;GET OUR CURRENT POINTER + MOVE *A2+,A8,L ;GET THE CURRENT MESSAGE POINTER + MOVE A2,*A13(HS_PTR),L ;AND PUT POINTER BACK + + CLR A0 + MOVE *A13(HS_ROUT),A1,L ;ROUTINE IN A1 + MOVE *A13(HS_COLOR),A6,W ;STUFF COLOR + + MOVE *A13(HS_Y),A9,W ;GET Y + SLL 16,A9 ;SHIFT INTO PLACE + MOVE *A13(HS_X),A10,W + ADD A10,A9 ;A9 IS NOW POINTING AT SCREEN + + MOVI SPACING07,A10 ;SPACING + MOVI RD7FONT,A11 ;FONT IS BABY FONT + JSRP LM_FINIS ;PRINT IT OUT! + + MOVE *A13(HS_Y),A9,W ;GET THE Y + ADDI HELP_DY,A9 ;KICK IT + MOVE A9,*A13(HS_Y),W ;PUT IT BACK + + MOVE *A13(HS_ENTS),A0,W ;ENTRY COUNT + DEC A0 + MOVE A0,*A13(HS_ENTS),W ;PUT IT BACK + JRNZ NEXT_HELP + + JAUC SUCIDE ;OUR WORK IS DONE! + +************************************************************************** +* * +* TOP_IN_A10 * +* * +* THIS IS CALLED BY H_SLAVE TO GET THE UPPER LEFT * +* CORNER OF THE BOX IN A10. A10 HAS THE PASSED PARAMETER. * +* A5 HAS THE HEIGHT OF THE BOX. IF THE TOP HALF OF A10 * +* IS ZERO, THEN THEN WE WANT THE BOX CENTER AT THE * +* A10 LEVEL. IF THE TOP HALF OF A10 IS NON-ZERO THEN * +* A10 WAS PASSED AS THE TOP. * +* * +* RETURN A10 AS THE Y FOR THE TOP OF THE HELP BOX. * +* * +************************************************************************** +TOP_IN_A10: + MMTM SP,A5 + CMPI 0FFFFH,A10 ;IS THE TOP HALF ZERO? + JRHI TOP_IS_TOP ;TOP IS SET..RETURN + SRL 1,A5 ;TOP OF BOX IS HALF UP FROM MAIN MENU BAR CENTER + SUB A5,A10 ;NOW A10 HAS Y BASE OF BOX +TOP_IS_TOP: + MMFM SP,A5 + RETS + +************************************************************************** +* * +* AREUSURE * +* * +* THIS IS CALLED TO GET A CONFIRMATION FROM THE USER. * +* A8 = PROMPT...THIS WILL APPEAR ABOVE THE "ARE YOU SURE" * +* A9 = ROUTINE TO JSRP TO DO THE DESIRED ACTION * +* A10 = MESSAGE TO DISPLAY CONFIRMING COMPLETION * +* * +* RETURN A0=0 MEANS YES WAS CHOSEN. * +* A0 .NE. 0 MEANS NO * +* * +************************************************************************** +AREUSURE: + CALLA CLR_SCRN ;BLANK IT ALL OUT! + MOVE A9,*A13(PDATA),L ;SAVE ROUTINE + MOVE A10,-*A12,L ;AND CONFIRM MESSAGE + + CALLR SURE_BOX + + MOVE A8,A2 ;PUT MESSAGE TEXT IN SAFE PLACE + MOVI MESS_SURE,A8 ;SETUP FOR TITLE + CALLA LM_SETUP ;STUFF REGGIES + MOVE A2,A8 ;GET STRING IN THERE + JSRP LM_FINIS ;AND PRINT IT + + MOVI M_SURE,A8 ;NOW THE "ARE YOU SURE" PART + JSRP L_MESS ;PUT IT UP. + + MOVI MEN_YN,A8 ;PUT UP THE "YES/NO" SELECTOR. + MOVI 2,A9 ;CURSOR ON 2ND ENTRY (NO) + + JSRP B_MENU ;AND GET A RESPONSE. + CMPI 1,A8 ;WAS IT YES? + JRNZ SURE_X ;NOPE....GET OUT + + CALLA CLR_SCRN ;CLEAR THE SCREEN FIRST, SO ROUTINE CAN PLOT! + + MOVE *A13(PDATA),A0,L ;GET THE ROUTINE TO CALL + MOVI SURE_RET,A7 + MOVE A7,-*A12,L ;PUSH RETURN ADDRESS + JUMP A0 ;AND "JSRP" THE ROUTINE + +SURE_RET: + CALLR SURE_BOX ;BOX IT! + MOVE *A12+,A8,L + JSRP SUR_MESS ;PRINT THE MESSAGE + + JSRP ANY_BUT ;NOW RETRIEVE ANY BUTTON THEN RETURN + + CLR A0 ;RETURN SUCCESS + RETP + +SURE_X: + ADDI LONG_SIZE,A12 ;POP MESSAGE + MOVI 2,A0 ;RETURN FAILURE + RETP + +************************************************************************** +* * +* SUR_MESS * +* * +* THIS PRINTS MESSAGE IN A8 IN THE ARE U SURE BOX * +* CONFIRMATION SPOT. * +* * +************************************************************************** +SUR_MESS: + MOVE A8,-*A12,L + MOVI MESS_CONFIRM,A8 + CALLA LM_SETUP ;GET CONFIRMATION DATA READY. + MOVE *A12+,A8,L + JSRP LM_FINIS ;PRINT OUR PART + RETP + +SURE_BOX: + MOVI COLOR_YELLOW,A9 + MOVI 003D0025H,A4 + MOVI 00F6016AH,A5 + jruc STD_BORD ;BORDER-IZE THE WHOLE THING. + +CENT_BOX: + MOVI ROBO_RED,A9 +CBOX_COL: + MOVI 00450025H,A4 + MOVI 00B4016AH,A5 + jruc STD_BORD ;BORDER-IZE THE WHOLE THING. + +*----------------------------------------------------------------------------* +*----------------------------------------------------------------------------* +***************************** MESSAGES ********************************* +*----------------------------------------------------------------------------* +*----------------------------------------------------------------------------* + +INSTR_Y EQU INST_ULY+5 +INSTR_2Y EQU INSTR_Y+10 + +MM_INST1 + MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_Y,COLOR_BPR,STRCNRM,0 + .byte "SELECT WITH ANY STICK" + .BYTE 0 + .EVEN + +MM_INST2 + MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_2Y,COLOR_BPR,STRCNRM,0 + .byte "ACTIVATE WITH ANY BUTTON" + .BYTE 0 + .EVEN + +MESS_DOOR + MESS_MAC RD7FONT,SPACING20,200,128,ROBO_RED,STRCNRM,0 + .byte "INVALID GAME SETTINGS" + .BYTE 0,1 ;0 = END OF STRING...1 = MORE MESSAGES! + .EVEN +;MESS_OPEN +; MESS_MAC RD7FONT,SPACING20,200,160,ROBO_WHITE,STRCNRM,0 +; .byte "OPEN COIN DOOR TO" +; .BYTE 0,1 ;0 = END OF STRING...1 = MORE MESSAGES! +; .EVEN +;MESS_OPEN_2 +; MESS_MAC RD7FONT,SPACING20,200,179,ROBO_WHITE,STRCNRM,0 +; .byte "RESTORE FACTORY SETTINGS." +; .BYTE 0,0 +; .EVEN + +MESS_FAIL + MESS_MAC RD7FONT,SPACING20,200,112,ROBO_RED,STRCNRM,0 + .byte "INVALID GAME SETTINGS" + .BYTE 0,1 ;0 = END OF STRING...1 = MORE MESSAGES! + .EVEN + MESS_MAC RD7FONT,SPACING20,200,144,ROBO_WHITE,STRCNRM,0 + .byte "ATTEMPT TO RESTORE" + .BYTE 0,1 ;0 = END OF STRING...1 = MORE MESSAGES! + .EVEN + MESS_MAC RD7FONT,SPACING20,200,164,ROBO_WHITE,STRCNRM,0 + .byte "FACTORY SETTINGS HAS FAILED." + .BYTE 0,0 + .EVEN + +MESS_BITCHIN + .byte "ADJUSTMENTS OK",0 + .even + +MESS_TITLE + MESS_MAC RD15FONT,SPACING20,TM_X,TM_Y,ROBO_GREEN,STRCNRM,0 + +RV_Y EQU TM_Y+18 + +MESS_REV + MESS_MAC RD7FONT,SPACING20,TM_X,RV_Y,ROBO_YELLOW,STRCNRM,0 +* +* THIS IS SETUP FOR THE QUESTION BEING ASKED +* BY "ARE YOU SURE" +* +MESS_SURE + MESS_MAC RD15FONT,SPACING20,200,102,ROBO_LF,STRCNRM,0 +* +* THIS IS THE "ARE YOU SURE" PART. +* +M_SURE + MESS_MAC RD15FONT,SPACING20,200,128,ROBO_YELLOW,STRCNRM,0 + .byte "ARE YOU SURE?" + .BYTE 0,0 + .EVEN + +MESS_CONFIRM + MESS_MAC RD15FONT,SPACING20,200,115,COLOR_LF,STRCNRM,0 + + +************************************************************************** +* * +* OPERATOR MESSAGE ENTRY * +* * +************************************************************************** +OP_LINE_CHAR equ PDATA +OP_LINE_LINE equ PDATA+WORD_SIZE +OP_LETS equ OP_LINE_LINE+WORD_SIZE +OP_STIME equ OP_LETS+(30 * BYTE_SIZE) +OP_SVAL equ OP_STIME+WORD_SIZE + +LET_DIST_X equ 25 +LET_DIST_Y equ 24 +LET_BOX_CX equ 14 +LET_BOX_CY equ 2 +LET_BOX_WX equ 3 +LET_BOX_WY equ 1 +LET_START_Y1 equ 163 +LET_START_Y2 equ LET_START_Y1+LET_DIST_Y +LET_START_Y3 equ LET_START_Y2+LET_DIST_Y +LET_START_Y4 equ LET_START_Y3+LET_DIST_Y +LET_INST1 equ 55 +LET_START_X equ 22 +LET_LINE_MAX equ 3 +LET_CHAR_MAX equ 14 +LET_TEXT_GAP equ 12 +LET_TEXT1 equ 110 +LET_TEXT2 equ LET_TEXT1+LET_TEXT_GAP +LET_TEXT3 equ LET_TEXT2+LET_TEXT_GAP +OP_MAX_CHARS equ CMESS_CHARS-1 +FONT_T .equ osgfont_t + + + .bss BLINE ,16 + .bss BCHAR ,16 + + SUBR opmsg_main + + .if PRINTER + movk 1,a0 + calla PBADGUY + .endif + + calla CLR_SCRN + movi opmsg_s,a2 + movi ROBO_YELLOW,a3 + JSRP TOP_BOX ;KICK OUT TOP BOX + + movi OMINST1,a8 + JSRP print_multi + + SLEEPK 1 + + clr a8 ;Do 4 rows of letters + movk 30,a10 + callr OPPLOTLINE + + movk 1,a8 + movk 30,a10 + callr OPPLOTLINE + + movk 2,a8 + movk 30,a10 + callr OPPLOTLINE + + movk 3,a8 + movk 30,a10 + callr OPPLOTLINE + + clr a0 + move a0,@BLINE + move a0,@BCHAR + + clr a8 + move a8,*a13(OP_LINE_LINE) ;ON THE FIRST LINE + + callr OM_STARTLINE ;INITIALIZE ALL THE FLAGS FOR IT + + clr a10 + movk 1,a11 + callr BOXCHAR ;BOX INITIAL ONE + + movk 1,a11 + callr OMPLOTTEXT + + + clr a0 + move a0,*a13(OP_SVAL) + move a0,*a13(OP_STIME) + +DOLOOP ;>Loop for stick and things + SLEEPK 1 + + callr om_getstick ;Check out the player board + jrnz do1 ;switch closed? + move a0,*a13(OP_SVAL) ;Clear timer and direction + move a0,*a13(OP_STIME) + jruc DOLOOP +do1 + move *a13(OP_SVAL),A1 ;Get last direction + ANDK 7,a1 ;Mask off repeat bit + cmp a0,a1 + jrz do2 ;Still same thing? + move a0,*a13(OP_SVAL) + clr a1 + move a1,*a13(OP_STIME) ;Clear the timer + jruc DODONE ;Process initial hit +do2 + MOVE *A13(OP_SVAL),A1 ;SNAG THE REPEAT BIT + ANDI 80H,A1 + JRNZ DO3 ;BR = IN REPEAT MODE + MOVE *A13(OP_STIME),A0 ;GET TIMER + INC A0 + MOVE A0,*A13(OP_STIME) + CMPI 15,A0 + btst 4,a0 + JRLO DOLOOP ;GO BACK TO SLEEP + CLR A0 + MOVE A0,*A13(OP_STIME) ;CLEAR OUT THE TIMER + MOVE *A13(OP_SVAL),A1 + MOVE A1,A0 + ORI 80H,A1 ;PUT UPPER BIT ON + MOVE A1,*A13(OP_SVAL) ;SET DIRECTION WITH REPEAT ON + JRUC DODONE +DO3 + MOVE *A13(OP_STIME),A0 ;GET TIMER + INC A0 + MOVE A0,*A13(OP_STIME) + CMPI 5,A0 + JRLO DOLOOP ;GO BACK TO SLEEP + CLR A0 + MOVE A0,*A13(OP_STIME) ;CLEAR OUT THE TIMER + MOVE *A13(OP_SVAL),A0 + ANDK 7,a0 ;TURN OFF REPEAT BIT +DODONE + move *A13(OP_SVAL),a1 ;Get current entry + ANDK 7,a1 + move @BLINE,a8 + move @BCHAR,a10 + clr a11 + callr BOXCHAR ;UNHIGHLIGHT IT + + CMPI 1,A1 ;CHECK UP + JRNZ DOC1 + DEC A8 + JRUC DOPROC +DOC1 + CMPI 2,A1 + JRNZ DOC2 + INC A8 + JRUC DOPROC +DOC2 + CMPI 3,A1 + JRNZ DOC3 + DEC A10 + JRUC DOPROC +DOC3 + CMPI 4,A1 + JRNZ DOC4 + INC A10 + JRUC DOPROC +DOC4 + CMPI 5,A1 ; DRAW BUTTON + JRNZ DOCCLR ; WOOF WOOF + + movi select_snd1,a3 + calla SNDSND + + CALLR OMADDCHAR ; ADD THE CHAR IN A8/A10 + CMPI 0FFH,A8 ; CHECK TO SEE IF DONE WITH ALL + JRZ DOCEND + MOVE @BLINE,A8 + MOVE @BCHAR,A10 + MOVK 1,A11 + CALLR BOXCHAR ; TURN THE BOX BACK ON + JRUC DOLOOP +DOCCLR + cmpi 6,a1 ;Start button + jrne DOLOOP + + callr opmsg_clr +; clr a7 +; move a7,*a13(OP_LINE_LINE) +; move a7,*a13(OP_LETS),L +; callr OM_STORECMOS +; movk 1,a7 +; move a7,*a13(OP_LINE_LINE) +; callr OM_STORECMOS +; movk 2,a7 +; move a7,*a13(OP_LINE_LINE) +; callr OM_STORECMOS +; callr BLASTMESS + + jruc DOCCLEAR + +; +; CHECK A8 ( BLINE ) AND A10 ( BCHAR ) FOR BOUNDARY STUFF +; +DOPROC + movi cursor_snd4,a3 + calla SNDSND + move a8,a8 + jrge doc5 + clr a8 +doc5 + cmpi LET_LINE_MAX,a8 + jrle doc6 + movk LET_LINE_MAX,a8 +doc6 + move a10,a10 + jrge doc7 + movk LET_CHAR_MAX,a10 +doc7 + cmpi LET_CHAR_MAX,a10 + jrle doc8 + clr a10 +doc8 + move a8,@BLINE + move a10,@BCHAR + movk 1,a11 + callr BOXCHAR + jruc DOLOOP + + +******************************** +* HERE IS WHERE ONE COMES WHEN DONE ENTERING THE MESSAGE -- ALREADY +* STORED IN CMOS, TOO + +DOCEND + SLEEPK 2 ;GET EVERYBODY CAUGHT UP + CALLA CLR_SCRN ;CLEAR THE SCREEN + CALLR SURE_BOX + MOVI MESS_SUCCESS,A8 ;THIS IS SUCCESS MESSAGE +#sm JSRP SUR_MESS ;PRINT THE MESSAGE + jauc ANY_BUT ;NOW RETRIEVE ANY BUTTON THEN RETURN + +DOCCLEAR + SLEEPK 2 + CALLA CLR_SCRN + CALLR SURE_BOX + MOVI MESS_CLEARED,A8 + jruc #sm + + +MESS_SUCCESS + .byte "MESSAGE STORED",0 + .even + +MESS_CLEARED + .byte "MESSAGE CLEARED",0 + .even + +BLASTMESS: ;GUY ENTERED A WHOLE MESSAGE +; CALLA CMOSUNLOCK + calla ADJ_PAGE + clr a0 + movi VALID_CUSTOM,a7 + calla WC_WORD + calla F_ADC_S ;FIX UP THE CHECKSUM +; calla CMOSLOCK + rets + + +#******************************* +* Clear operator message +* Trashes scratch, A2 + + SUBR opmsg_clr + + calla ADJ_PAGE + + movi CUSTOM_MESSAGE,a7 + movk CMESS_LINES,a2 +#lp clr a0 + calla WC_BYTEI ;Write a null + addi CMESS_LINE_SIZE,a7 + dsj a2,#lp + + calla F_ADC_S ;Refresh checksum + jruc BLASTMESS + + + +******************************** +* Get joystick and buttons status +* >A0=Status (0-6) + +om_getstick + + PUSH a1 + +; move @SWITCH,a0,L + move @_switch_addr,a0,L + move *a0,a0,W + move @_coin_addr,a1,L + move *a1,a1,W + sll 16,a1 + or a1,a0 + not a0 + move a0,a1 + andi 0004007fh,a0 ;P1 draw/start/stick + andi 00207f00h,a1 ;P2 draw/start/stick + srl 8,a1 + or a1,a0 +; move @SWITCH+32,a1 + move @_switch2_addr,a1,L + move *a1,a1,W + not a1 + andi >7f,a1 ;P3 draw/stick + or a1,a0 + + btst 0,a0 ;U + jrz og2 + movk 1,a0 + jruc #x +og2 + btst 1,a0 ;D + jrz og3 + movk 2,a0 + jruc #x +og3 + btst 2,a0 ;L + jrz og4 + movk 3,a0 + jruc #x +og4 + btst 3,a0 ;R + jrz og5 + movk 4,a0 + jruc #x +og5 + movi >70,a1 + and a0,a1 + jrz og6 + movk 5,a0 + jruc #x +og6 + andi 0ffffff80h,a0 ;Any other bits are start buttons + jrz og7 + movk 6,a0 + jruc #x +og7 + clr a0 +#x + PULL a1 + move a0,a0 + rets + + +******************************** +* SETUP THINGS FOR A NEW LINE OF TEXT + +OM_STARTLINE + + PUSH A0 + CLR A0 + MOVE A0,*A13(OP_LETS) + MOVE A0,*A13(OP_LINE_CHAR) + PULL A0 + + RETS + +******************************** +* PLOT OUT A LINE OF TEXT ON THE SCREEN + +OMPLOTTEXT + + MMTM SP,A8,A10,A11 + + PUSH A11 + MOVI OMTSETUP,A8 + CALLA LM_SETUP + MOVE A13,A8 + ADDI OP_LETS,A8 + MOVE *A13(OP_LINE_LINE),A9,W + SLL 5,A9 + ADDI OMLOC,A9 + MOVE *A9,A9,L + SLL 16,A9 + MMTM SP,A3,A4,A9 + MOVE A9,A3 + SUBI 20000H,A3 + MOVI [LET_TEXT_GAP+2,394],A4 + CALLA BLNKAREA + MMFM SP,A3,A4,A9 + ADDI 200,A9 + JSRP LM_FINIS + + PULL A5 + MOVE A5,A5 ;FLAG FOR UNDERSCORE OR NOT + JRZ NOUNDER + movi ROBO_LASER,a6 + movi underscore_s,a8 + addk 5,a9 ;SHIFT THE LITTLE GUY OVER + JSRP LM_FINIS +NOUNDER + MMFM SP,A8,A10,A11 + RETS + + +#******************************* +* Add the character pointed to by a8/a10 +* A8 =Line +* A10=Char on line + +OMADDCHAR + PUSH a8,a10 + + sll 5,a8 + addi OLTAB,a8 ;+Base + move *a8,a8,L + sll 3,a10 + add a10,a8 ;char offset + movb *a8,a0 ;snag the char + cmpi '_',a0 + jrne #20 + + move *a13(OP_LINE_CHAR),a1 ;>Backspace + jrz #x + dec a1 + move a1,*a13(OP_LINE_CHAR) + move a1,a2 + clr a0 + jruc rubent + +#20 + cmpi '^',a0 + jrne #addchar + + clr a11 + callr OMPLOTTEXT ; GET RID OF THE FLASHING UNDERSCORE + clr a0 + move a0,@BLINE + move a0,@BCHAR + callr OM_STORECMOS ; WELL, BABY -- STORE IT + MOVE *A13(OP_LINE_LINE),A8 ; GRAB THE LINE + CMPI 2,A8 + JRHS OMADONE + INC A8 + MOVE A8,*A13(OP_LINE_LINE) ; ON THE FIRST LINE + CALLR OM_STARTLINE ; INITIALIZE ALL THE FLAGS FOR IT + MOVK 1,A11 + CALLR OMPLOTTEXT + jruc #x + +; HERE IS JUST ENTER A NORMAL CHARACTER -- +; +; A8 = LINE +; A10 = CHARACTER + +#addchar + + MOVE *A13(OP_LINE_CHAR),A1 + MOVE A1,A2 + CMPI OP_MAX_CHARS,A1 + JRHS OMACMAX + INC A1 + MOVE A1,*A13(OP_LINE_CHAR) +rubent + move a13,a8 + ADDI OP_LETS,A8 + SLL 3,A2 + ADD A2,A8 ;OFFSET INTO LOCAL STORAGE + MOVB A0,*A8 + ADDK 8,A8 + CLR A0 + MOVB A0,*A8 ;MAKE SURE ZERO TERMINATED + MOVK 1,A11 + CALLR OMPLOTTEXT +;OMACRET +#x MMFM SP,A8,A10 + RETS + +OMADONE ;COME HERE WHEN REALLY DONE +; CALLA CMOSUNLOCK + CALLA ADJ_PAGE ;GUY ENTERED A WHOLE MESSAGE + MOVI VALID_CUSTOM,A7 + MOVI VALID_VALUE,A0 + CALLA WC_WORD + CALLA F_ADC_S ;FIX UP THE CHECKSUM +; CALLA CMOSLOCK + MMFM SP,A8,A10 + MOVI 0FFH,A8 ;FLAG DONE WITH EVERYTHING + RETS + +OMACMAX + mmfm sp,a8,a10 + clr a11 + callr BOXCHAR + movk 3,a8 + movk 14,a10 + move a8,@BLINE + move a10,@BCHAR + rets + + +************************************************************************** +* STORE THE MESSAGE IN CMOS + +OM_STORECMOS +; CALLA CMOSUNLOCK + CALLA ADJ_PAGE ;POINT AT ADJUSTMENTS PAGE + MOVE *A13(OP_LINE_LINE),A7 + MOVI CMESS_LINE_SIZE,A6 + MPYU A6,A7 ;OFFSET ME, BABY + ADDI CUSTOM_MESSAGE,A7 ;A7 IS CMOS LOCATION + MOVE A13,A6 + ADDI OP_LETS,A6 ;A6 IS THE PROCESS BLOCK LOC + movk CMESS_CHARS-1,a5 ;CHARS/LINE + +cmos_loop + movb *a6,a0 ;fetch a character + andi BYTE_MASK,A0 + calla WC_BYTEI ;WRITE A BYTE + addk BYTE_SIZE,A6 ;POINT AT NEXT BYTE + dsj a5,cmos_loop + + clr a0 + calla WC_BYTEI ;Write a null + + calla F_ADC_S ;REFRESH CHECKSUM +; CALLA CMOSLOCK + + rets + +OMLOC .LONG LET_TEXT1, LET_TEXT2, LET_TEXT3 + + + +************************************************************************** +* BOXCHAR +* A8 =WHICH LINE (0-3) +* A10=CHARACTER ON LINE +* A11=COLOR TO USE ( 0 = BLACK, 1 = LASER FLASH ) + +BOXCHAR + MMTM SP,A1,A8,A10 + + MOVI LET_DIST_Y,A1 + MPYU A8,A1 ; DISTANCE + ADDI LET_START_Y1-LET_BOX_CY,A1 + SLL 16,A1 + MOVE A1,A4 + MOVI LET_DIST_X,A1 + MPYU A10,A1 + ADDI LET_START_X-LET_BOX_CX,A1 + MOVX A1,A4 ; UPPER LEFT IN A4 + MOVE A4,A5 + MOVI [LET_DIST_Y+LET_BOX_WY,LET_DIST_X+LET_BOX_WX],A0 + ADDXY A0,A5 ; LOWER RIGHT IN A5 + + MOVI [1,1],A0 ; BORDER HEIGHT,WIDTH + MOVI ROBO_BLACK,A9 ; DOBORDER IS RETARDED + MOVE A11,A11 + JRZ BC1 + MOVI ROBO_LF,A9 +BC1 + CALLR DOBORDER + + MOVE A11,A11 + JRNZ BC2 + MOVI 0FFH,A10 +BC2 + CALLR OPPLOTLINE + + MMFM SP,A1,A8,A10 + RETS + + +#******************************* +* Plot out a line of characters +* A8 =Table # +* A10=Which character to highlight + + .bss char_s ,16 + +OPPLOTLINE + + PUSH a8,a9,a10,a11 + + move a8,a9 + sll 5,a8 ;*32 + addi OLTAB,a8 + move *a8,a8,L + sll 4,a9 + addi OLYTAB,a9 + move *a9,a9 + + sll 16,a9 ;Get in the y position + addk LET_START_X,a9 +#lp + movb *a8,a0 ;GRAB CHAR NUMBER + move a0,a0 + jrz #x + movb a0,@char_s + PUSH a8 + PUSH a9 + PUSH a10 + PUSH a9 + movi REDPAL,a0 ;*Palette + move a10,a10 + jrnz opl1 + movi WHITEPAL,a0 +opl1 calla pal_getf + move a0,a5 + + movi OP_MESS,a8 + calla LM_SETUP + move a5,a6 ;Color + PULL a9 ;SET THE POSITION OF THE CHAR + movi char_s,a8 + JSRP LM_FINIS + + PULL a10 + dec a10 + PULL a9 + PULL a8 + addk 8,a8 + addi LET_DIST_X,a9 + jruc #lp + +#x PULL a8,a9,a10,a11 + rets + + +OP_MESS + MESS_MAC FONT_T,1,200,95,REDPAL,STRCNRM_1,0 +; .byte "%c",0 +; .long CHAROUT + .even + +OLTAB .long OL1TAB, OL2TAB, OL3TAB, OL4TAB +OLYTAB .word LET_START_Y1, LET_START_Y2, LET_START_Y3, LET_START_Y4 + +OL1TAB .byte "ABCDEFGHI123?!_",0 +OL2TAB .byte "JKLMNOPQR456()_",0 +OL3TAB .byte "STUVWXYZ 7890:_",0 +OL4TAB .byte "^_ #$&-./' _^",0 + +opmsg_s .byte "OPERATOR MESSAGE",0 + .even +OMINST1 + MESS_MAC RD7FONT,SPACING07,200,LET_INST1,ROBO_WHITE,STRCNRM,0 + .byte "USE PLAYER 1 OR 2 CONTROLS TO ENTER A MESSAGE",0,1 + .byte "OF UP TO 3 LINES OF 25 LETTERS PER LINE.",0,1 + .byte "SELECT end TO END EACH LINE.",0,1 + .byte "PRESS PLAYER 1 OR 2 START TO CLEAR OUT MESSAGE.",0,0 + .even + +OMTSETUP + MESS_MAC RD7FONT,SPACING07,200,LET_INST1,ROBO_BLUE,STRCNRM,0 + .even + +underscore_s .byte "-",0 + .even + + +#******************************* +* A8=*MESS_MAC + + SUBRP print_multi + + PUSH a2 + + move a8,a2 + calla LM_SETUP + move a9,a3 ;1st XY + +#lp PUSH a8 + move a2,a8 + calla LM_SETUP + PULL a8 + + move a3,a9 + + JSRP LM_FINIS + addi [12,0],a3 ;Next Y + + movb *a8,a0 + addk 8,a8 + move a0,a0 + jrnz #lp + + PULL a2 + RETP + + + +;MJT 2/9/94 +;Jamie, I think we need to keep this NBA message the same, or change +;the embedded code!?!?!???? + +**************************************************************** +* Secret embedded copyright notice + +ASCIIE .macro str + + .var i,c,e + .eval 1,i + .eval 1,e + .loop $symlen(str) + .asg :str(i):,c + .byte 0ffh & (':c:'+e) + .eval i+1,i + .eval e+7,e + .endloop + .byte 0ffh & :e: + + .endm + + .byte 1,2,4,8,16,32,64,128 ;ID + + ASCIIE "NBA-JAM-COPYRIGHT-1993-MIDWAY-MANUFACTURING-COMPANY" + ASCIIE "ALL-RIGHTS-RESERVED" + ASCIIE "PROGRAMMED-BY-SHAWN-LIPTAK-&-MARK-TURMELL-&-JAMIE-RIVETT" + + + + +**************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/TEXT.ASM b/BACKUP/TEXT.ASM new file mode 100644 index 0000000..4b05dc6 --- /dev/null +++ b/BACKUP/TEXT.ASM @@ -0,0 +1,116 @@ +************************************************************** +* +* Software: Mark Turmell +* Initiated: 4/13/89 +* +* Modified: Shawn Liptak, 2/19/92 -Started basketball +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/21/92 15:04 +************************************************************** + .file "text.asm" + .title "font tables" + .width 132 + .option b,d,l,t + .mnolist + + + .include "text.tbl" + .include "macros.h" + + .include "fontsimg.glo" + .include "miscimg.glo" + .INCLUDE "DUMMY.TBL" + + +****************************************************************************** +* EXTERNAL REFERENCES + + +****************************************************************************** + +;,RD19FONT + .def RD7FONT,RD15FONT,FONT7A,FON15A + + .def FON150,FON151,FON152,FON153,FON154,FON155,FON156,FON157 + .def FON158,FON159 + .def FON15X,FON15W,FON15V,FON15M,FONT7colon + + + + .text + +************************************************************************** +************************************************************************** +* Font tables starting at ASCII 33 +************************************************************************** + +;7 POINT FONT + +RD7FONT + .long FONT7excla,FONT7quote,FONT7pound,FONT7doll,FONT7percen,FONT7and + .long FONT7apost,FONT7parenl,FONT7parenr,FONT7ast,FONT7plus + .long FONT7comma,FONT7dash,FONT7period,FONT7forsp,FONT70,FONT71 + .long FONT72,FONT73,FONT74,FONT75,FONT76,FONT77,FONT78,FONT79 + .long FONT7colon,FONT7semicol,FONT7less,FONT7equal,FONT7more + .long FONT7quest,FONT7dash + .long FONT7A,FONT7B,FONT7C,FONT7D,FONT7E,FONT7F,FONT7G,FONT7H + .long FONT7I,FONT7J,FONT7K,FONT7L,FONT7M,FONT7N,FONT7O,FONT7P + .long FONT7Q,FONT7R,FONT7S,FONT7T,FONT7U,FONT7V,FONT7W,FONT7X + .long FONT7Y,FONT7Z + .long FONT7bracl,FONT7backsp,FONT7bracr,FONT7excla,FONT7line + .long FONT7apost + .long FONT7a,FONT7b,FONT7c,FONT7d,FONT7e,FONT7f,FONT7g,FONT7h + .long FONT7i,FONT7j,FONT7k,FONT7l,FONT7m,FONT7n,FONT7o,FONT7p + .long FONT7q,FONT7r,FONT7s,FONT7t,FONT7u,FONT7v,FONT7W,FONT7X + .long FONT7Y,FONT7Z + .long FONT7paren2l,FONT7break,FONT7paren2r + +RD15FONT + .long FON15excla,FON15quote,FON15poun,FON15doll,FON15perc,FON15and + .long FON15apos,FON15parenl,FON15parenr,FON15ast,FON15plus + .long FON15comma,FON15dash,FON15period,FON15forsp,FON150,FON151 + .long FON152,FON153,FON154,FON155,FON156,FON157,FON158,FON159 + .long FON15colon,FON15semicol,FON15less,FON15equal,FON15more + .long FON15quest,FON15dash +;WARPTXT + .long FON15A,FON15B,FON15C,FON15D,FON15E,FON15F,FON15G,FON15H + .long FON15I,FON15J,FON15K,FON15L,FON15M,FON15N,FON15O,FON15P + .long FON15Q,FON15R,FON15S,FON15T,FON15U,FON15V,FON15W,FON15X + .long FON15Y,FON15Z + .long FON15brackl,FON15backsp,FON15brackr,FON15carr,FON15line + .long FON15apos1 + .long FON15la,FON15lb,FON15lc,FON15ld,FON15le,FON15lf,FON15lg,FON15lh + .long FON15li,FON15lj,FON15lk,FON15ll,FON15lm,FON15ln,FON15lo,FON15lp + .long FON15lq,FON15lr,FON15ls,FON15lt,FON15lu,FON15lv,FON15lw,FON15lx + .long FON15ly,FON15lz + .long FON15paren2l,FON15break,FON15paren2r +;RD19FONT +; .long FON15excla,FON15quote,FON15poun,FON15doll,FON15perc,FON15and +; .long FON15apos,FON15parenl,FON15parenr,FON15ast,FON15plus +; .long FON15comma,FON15dash,FON15period,FON15forsp +; +;;,SMD16_0,SMD16_1 +;; .long SMD16_2,SMD16_3,SMD16_4,SMD16_5,SMD16_6,SMD16_7,SMD16_8,SMD16_9 +; +; .long FONT70,FONT71,FONT72,FONT73,FONT74,FONT75,FONT76,FONT77,FONT78 +; .long FONT79 +; +; .long FON15colon,FON15semicol,FON15less,FON15equal,FON15more +; .long FON15quest,FON15dash +; .long font19a,font19b,font19c,font19d,font19e,font19f,font19g,font19h +; .long font19i,font19j,font19k,font19l,font19m,font19n,font19o,font19p +; .long font19q,font19r,font19s,font19t,font19u,font19v,font19w,font19x +; .long font19y,font19z +; .long FON15brackl,FON15backsp,FON15brackr,FON15carr,FON15line +; .long FON15apos1 +; .long FON15la,FON15lb,FON15lc,FON15ld,FON15le,FON15lf,FON15lg,FON15lh +; .long FON15li,FON15lj,FON15lk,FON15ll,FON15lm,FON15ln,FON15lo,FON15lp +; .long FON15lq,FON15lr,FON15ls,FON15lt,FON15lu,FON15lv,FON15lw,FON15lx +; .long FON15ly,FON15lz +; .long FON15paren2l,FON15break,FON15paren2r + + .end + + \ No newline at end of file diff --git a/BACKUP/TMP.ASM b/BACKUP/TMP.ASM new file mode 100644 index 0000000..2b83c5b --- /dev/null +++ b/BACKUP/TMP.ASM @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/BACKUP/TODISK.BAT b/BACKUP/TODISK.BAT new file mode 100644 index 0000000..6ec7176 --- /dev/null +++ b/BACKUP/TODISK.BAT @@ -0,0 +1,10 @@ +@cls +@pkzip -x*.obj -x*.lst -x*.tbl -x*.glo -x*.out temp.xyz *.* +@cls +@echo INSERT DISK INTO DRIVE B: +@pause +@echo copying zip file... +@copy temp.xyz b:\wwf.zip +@del temp.xyz +@echo ALL DONE... have a nice day :) + \ No newline at end of file diff --git a/BACKUP/TP.ASM b/BACKUP/TP.ASM new file mode 100644 index 0000000..957f46a --- /dev/null +++ b/BACKUP/TP.ASM @@ -0,0 +1,53 @@ +#Bret + LWWW H2AH3A+FR1,79,-1,0 + LWWW H2AH3A+FR1,79,-1,0 + LWWW H3HB3A+FR3,79,-1,0 + LWWW H3HB3A+FR2,79,-1,0 + LWWW H3HB3A+FR1,80,-1,0 +#Razor + LWWW R3HB3A+FR3,77,-1,0 + LWWW R3HB3A+FR3,77,-1,0 + LWWW R3HB3A+FR3,77,-1,0 + LWWW R3HB3A+FR2,77,-1,0 + LWWW R3BF3A+FR1,68,-1,0 +#Taker + LWWW U4AM4C+FR2,93,-1,0 + LWWW U4AM4C+FR2,93,-1,0 + LWWW U4BF3A+FR2,93,-1,0 + LWWW U4BF3A+FR3,93,-1,0 + LWWW U4BF3Z+FR3,56h,-1,0 +#Yokozuna + LWWW Y3LB3A+FR2,83,-1,0 + LWWW Y3LB3A+FR2,83,-1,0 + LWWW Y3LB3A+FR2,83,-1,0 + LWWW Y3LB3A+FR9,83,-1,0 + LWWW Y3BF3A+FR1,4fh,-1,0 +#Shawn + LWWW S4AH3D+FR5,77,-1,0 + LWWW S4AH3D+FR5,77,-1,0 + LWWW S4AH3D+FR5,77,-1,0 + LWWW S4BF3A+FR2,77,-1,0 + LWWW S4BF3A+FR3,77,-1,0 +#BamBam + LWWW B4BF3A+FR1,87,-4,0 + LWWW B4BF3A+FR1,87,-4,0 + LWWW B4BF3A+FR1,87,-4,0 + LWWW B3HB3A+FR2,55h,-1,0 + LWWW B3BF3C+FR5,55h,0,0 +#Doink + LWWW D3AK3A+FR3,73,0,0 + LWWW D3AK3A+FR3,73,0,0 + LWWW D3AK3A+FR3,73,0,0 + LWWW D3AK3A+FR2,73,0,0 + LWWW D3BF3A+FR1,73,0,0 + +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,81,-1,0 + LWWW L4AH4B+FR3,81,-1,0 + LWWW L3BF3A+FR1,81,-1,1 + LWWW L3BF3A+FR2,81,-1,1 + LWWW L3BF3B+FR5,4fh,-1,0 + + \ No newline at end of file diff --git a/BACKUP/UNDSEQ1.ASM b/BACKUP/UNDSEQ1.ASM new file mode 100644 index 0000000..7d7c07b --- /dev/null +++ b/BACKUP/UNDSEQ1.ASM @@ -0,0 +1,666 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "undseq1.asm" + .title "Undertaker animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "takerimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + .REF SMALL_RUN + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* STANDS + + SUBR und_zip_anim + WL 60*60,U2ST2C+FR5 + .word ANI_END ;<--- change on everyone else + + + SUBR und_stand2_anim + SUBR und_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 8,U2ST2C+FR1 + WL 8,U2ST2C+FR3 + WL 8,U2ST2C+FR5 + WL 8,U2ST2C+FR7 + WL 8,U2ST2C+FR9 + WL 8,U2ST2C+FR7 + WL 8,U2ST2C+FR5 + WL 8,U2ST2C+FR3 +; WL 8,U2ST2C+FR7 +; WL 8,U2ST2C+FR6 +; WL 8,U2ST2C+FR5 + .word ANI_REPEAT + + + SUBR und_stand4_anim + SUBR und_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 9,U4ST4D+FR1 + WL 9,U4ST4D+FR3 + WL 9,U4ST4D+FR5 + WL 9,U4ST4D+FR7 + WL 9,U4ST4D+FR9 + WL 9,U4ST4D+FR7 + WL 9,U4ST4D+FR5 + WL 9,U4ST4D+FR3 +; WL 9,U4ST4D+FR7 +; WL 9,U4ST4D+FR6 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR und_torso2_anim + SUBR und_torso8_anim + + WL 4,U2TW2A+FR1 + WL 4,U2TW2A+FR2 + WL 4,U2TW2A+FR3 + WL 4,U2TW2A+FR4 + WL 4,U2TW2A+FR5 + WL 4,U2TW2A+FR4 + WL 4,U2TW2A+FR3 + WL 4,U2TW2A+FR2 + .word ANI_REPEAT + + + SUBR und_torso4_anim + SUBR und_torso6_anim + + WL 4,U4TW4A+FR1 + WL 4,U4TW4A+FR2 + WL 4,U4TW4A+FR3 + WL 4,U4TW4A+FR4 + WL 4,U4TW4A+FR5 + WL 4,U4TW4A+FR4 + WL 4,U4TW4A+FR3 + WL 4,U4TW4A+FR2 + .word ANI_REPEAT + +; SUBR und_holdoh_anim +; WL 999,D4TH4A01 +; .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR und_walk1_f2_anim + WL 2,U2WL1A+FR1 + WL 2,U2WL1A+FR2 + WL 2,U2WL1A+FR3 + WL 2,U2WL1A+FR4 + WL 2,U2WL1A+FR5 + WL 2,U2WL1A+FR6 + WL 2,U2WL1A+FR7 + WL 2,U2WL1A+FR8 + WL 2,U2WL1A+FR9 + WL 2,U2WL1A+FR10 + WL 2,U2WL1A+FR11 + WL 2,U2WL1A+FR12 + WL 2,U2WL1A+FR13 + WL 2,U2WL1A+FR14 + WL 2,U2WL1A+FR15 + WL 2,U2WL1A+FR16 + WL 2,U2WL1A+FR17 + WL 2,U2WL1A+FR18 + .word ANI_REPEAT + + SUBR und_walk2_f2_anim + WL 2,U2WL2A+FR1 + WL 2,U2WL2A+FR2 + WL 2,U2WL2A+FR3 + WL 2,U2WL2A+FR4 + WL 2,U2WL2A+FR5 + WL 2,U2WL2A+FR6 + WL 2,U2WL2A+FR7 + WL 2,U2WL2A+FR8 + WL 2,U2WL2A+FR9 + WL 2,U2WL2A+FR10 + WL 2,U2WL2A+FR11 + WL 2,U2WL2A+FR12 + WL 2,U2WL2A+FR13 + WL 2,U2WL2A+FR14 + WL 2,U2WL2A+FR15 + WL 2,U2WL2A+FR16 + WL 2,U2WL2A+FR17 + WL 2,U2WL2A+FR18 + WL 2,U2WL2A+FR19 + WL 2,U2WL2A+FR20 + WL 2,U2WL2A+FR21 + WL 2,U2WL2A+FR22 + WL 2,U2WL2A+FR23 + WL 2,U2WL2A+FR24 + .word ANI_REPEAT + + SUBR und_walk4_f2_anim + WL 2,U2WL8A+FR1 + WL 2,U2WL8A+FR2 + WL 2,U2WL8A+FR3 + WL 2,U2WL8A+FR4 + WL 2,U2WL8A+FR5 + WL 2,U2WL8A+FR6 + WL 2,U2WL8A+FR7 + WL 2,U2WL8A+FR8 + WL 2,U2WL8A+FR9 + WL 2,U2WL8A+FR10 + WL 2,U2WL8A+FR11 + WL 2,U2WL8A+FR12 + WL 2,U2WL8A+FR13 + WL 2,U2WL8A+FR14 + WL 2,U2WL8A+FR15 + WL 2,U2WL8A+FR16 + WL 2,U2WL8A+FR17 + WL 2,U2WL8A+FR18 + WL 2,U2WL8A+FR19 + .word ANI_REPEAT + + SUBR und_walk5_f2_anim + WL 2,U2WL1A+FR18 + WL 2,U2WL1A+FR17 + WL 2,U2WL1A+FR16 + WL 2,U2WL1A+FR15 + WL 2,U2WL1A+FR14 + WL 2,U2WL1A+FR13 + WL 2,U2WL1A+FR12 + WL 2,U2WL1A+FR11 + WL 2,U2WL1A+FR10 + WL 2,U2WL1A+FR9 + WL 2,U2WL1A+FR8 + WL 2,U2WL1A+FR7 + WL 2,U2WL1A+FR6 + WL 2,U2WL1A+FR5 + WL 2,U2WL1A+FR4 + WL 2,U2WL1A+FR3 + WL 2,U2WL1A+FR2 + WL 2,U2WL1A+FR1 + .word ANI_REPEAT + + SUBR und_walk6_f2_anim + WL 2,U2WL2A+FR24 + WL 2,U2WL2A+FR23 + WL 2,U2WL2A+FR22 + WL 2,U2WL2A+FR21 + WL 2,U2WL2A+FR20 + WL 2,U2WL2A+FR19 + WL 2,U2WL2A+FR18 + WL 2,U2WL2A+FR17 + WL 2,U2WL2A+FR16 + WL 2,U2WL2A+FR15 + WL 2,U2WL2A+FR14 + WL 2,U2WL2A+FR13 + WL 2,U2WL2A+FR12 + WL 2,U2WL2A+FR11 + WL 2,U2WL2A+FR10 + WL 2,U2WL2A+FR9 + WL 2,U2WL2A+FR8 + WL 2,U2WL2A+FR7 + WL 2,U2WL2A+FR6 + WL 2,U2WL2A+FR5 + WL 2,U2WL2A+FR4 + WL 2,U2WL2A+FR3 + WL 2,U2WL2A+FR2 + WL 2,U2WL2A+FR1 + .word ANI_REPEAT + + + SUBR und_walk8_f2_anim + WL 2,U2WL8A+FR19 + WL 2,U2WL8A+FR18 + WL 2,U2WL8A+FR17 + WL 2,U2WL8A+FR16 + WL 2,U2WL8A+FR15 + WL 2,U2WL8A+FR14 + WL 2,U2WL8A+FR13 + WL 2,U2WL8A+FR12 + WL 2,U2WL8A+FR11 + WL 2,U2WL8A+FR10 + WL 2,U2WL8A+FR9 + WL 2,U2WL8A+FR8 + WL 2,U2WL8A+FR7 + WL 2,U2WL8A+FR6 + WL 2,U2WL8A+FR5 + WL 2,U2WL8A+FR4 + WL 2,U2WL8A+FR3 + WL 2,U2WL8A+FR2 + WL 2,U2WL8A+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR und_walk1_f4_anim + WL 2,U4WL5A+FR20 + WL 2,U4WL5A+FR19 + WL 2,U4WL5A+FR18 + WL 2,U4WL5A+FR17 + WL 2,U4WL5A+FR16 + WL 2,U4WL5A+FR15 + WL 2,U4WL5A+FR14 + WL 2,U4WL5A+FR13 + WL 2,U4WL5A+FR12 + WL 2,U4WL5A+FR11 + WL 2,U4WL5A+FR10 + WL 2,U4WL5A+FR9 + WL 2,U4WL5A+FR8 + WL 2,U4WL5A+FR7 + WL 2,U4WL5A+FR6 + WL 2,U4WL5A+FR5 + WL 2,U4WL5A+FR4 + WL 2,U4WL5A+FR3 + WL 2,U4WL5A+FR2 + WL 2,U4WL5A+FR1 + .word ANI_REPEAT + + SUBR und_walk2_f4_anim + WL 2,U4WL2C+FR1 + WL 2,U4WL2C+FR2 + WL 2,U4WL2C+FR3 + WL 2,U4WL2C+FR4 + WL 2,U4WL2C+FR5 + WL 2,U4WL2C+FR6 + WL 2,U4WL2C+FR7 + WL 2,U4WL2C+FR8 + WL 2,U4WL2C+FR9 + WL 2,U4WL2C+FR10 + WL 2,U4WL2C+FR11 + WL 2,U4WL2C+FR12 + WL 2,U4WL2C+FR13 + WL 2,U4WL2C+FR14 + WL 2,U4WL2C+FR15 + WL 2,U4WL2C+FR16 + WL 2,U4WL2C+FR17 + WL 2,U4WL2C+FR18 + WL 2,U4WL2C+FR19 + .word ANI_REPEAT + + SUBR und_walk4_f4_anim + WL 2,U4WL4A+FR1 + WL 2,U4WL4A+FR2 + WL 2,U4WL4A+FR3 + WL 2,U4WL4A+FR4 + WL 2,U4WL4A+FR5 + WL 2,U4WL4A+FR6 + WL 2,U4WL4A+FR7 + WL 2,U4WL4A+FR8 + WL 2,U4WL4A+FR9 + WL 2,U4WL4A+FR10 + WL 2,U4WL4A+FR11 + WL 2,U4WL4A+FR12 + WL 2,U4WL4A+FR13 + WL 2,U4WL4A+FR14 + WL 2,U4WL4A+FR15 + WL 2,U4WL4A+FR16 + WL 2,U4WL4A+FR17 + WL 2,U4WL4A+FR18 + WL 2,U4WL4A+FR19 + WL 2,U4WL4A+FR20 + WL 2,U4WL4A+FR21 + WL 2,U4WL4A+FR22 + WL 2,U4WL4A+FR23 + WL 2,U4WL4A+FR24 + WL 2,U4WL4A+FR25 + WL 2,U4WL4A+FR26 + .word ANI_REPEAT + + SUBR und_walk5_f4_anim + WL 2,U4WL5A+FR1 + WL 2,U4WL5A+FR2 + WL 2,U4WL5A+FR3 + WL 2,U4WL5A+FR4 + WL 2,U4WL5A+FR5 + WL 2,U4WL5A+FR6 + WL 2,U4WL5A+FR7 + WL 2,U4WL5A+FR8 + WL 2,U4WL5A+FR9 + WL 2,U4WL5A+FR10 + WL 2,U4WL5A+FR11 + WL 2,U4WL5A+FR12 + WL 2,U4WL5A+FR13 + WL 2,U4WL5A+FR14 + WL 2,U4WL5A+FR15 + WL 2,U4WL5A+FR16 + WL 2,U4WL5A+FR17 + WL 2,U4WL5A+FR18 + WL 2,U4WL5A+FR19 + WL 2,U4WL5A+FR20 + .word ANI_REPEAT + + SUBR und_walk6_f4_anim + WL 2,U4WL2C+FR19 + WL 2,U4WL2C+FR18 + WL 2,U4WL2C+FR17 + WL 2,U4WL2C+FR16 + WL 2,U4WL2C+FR15 + WL 2,U4WL2C+FR14 + WL 2,U4WL2C+FR13 + WL 2,U4WL2C+FR12 + WL 2,U4WL2C+FR11 + WL 2,U4WL2C+FR10 + WL 2,U4WL2C+FR9 + WL 2,U4WL2C+FR8 + WL 2,U4WL2C+FR7 + WL 2,U4WL2C+FR6 + WL 2,U4WL2C+FR5 + WL 2,U4WL2C+FR4 + WL 2,U4WL2C+FR3 + WL 2,U4WL2C+FR2 + WL 2,U4WL2C+FR1 + .word ANI_REPEAT + + SUBR und_walk8_f4_anim + WL 2,U4WL4A+FR26 + WL 2,U4WL4A+FR25 + WL 2,U4WL4A+FR24 + WL 2,U4WL4A+FR23 + WL 2,U4WL4A+FR22 + WL 2,U4WL4A+FR21 + WL 2,U4WL4A+FR20 + WL 2,U4WL4A+FR19 + WL 2,U4WL4A+FR18 + WL 2,U4WL4A+FR17 + WL 2,U4WL4A+FR16 + WL 2,U4WL4A+FR15 + WL 2,U4WL4A+FR14 + WL 2,U4WL4A+FR13 + WL 2,U4WL4A+FR12 + WL 2,U4WL4A+FR11 + WL 2,U4WL4A+FR10 + WL 2,U4WL4A+FR9 + WL 2,U4WL4A+FR8 + WL 2,U4WL4A+FR7 + WL 2,U4WL4A+FR6 + WL 2,U4WL4A+FR5 + WL 2,U4WL4A+FR4 + WL 2,U4WL4A+FR3 + WL 2,U4WL4A+FR2 + WL 2,U4WL4A+FR1 + .word ANI_REPEAT + + +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR und_2_to_4_turn_anim + SUBR und_8_to_6_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TT5A+FR2 + WL 1,U1TT5A+FR3 + WL 1,U1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_2_turn_anim + SUBR und_6_to_8_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TT5A+FR4 + WL 1,U1TT5A+FR3 + WL 1,U1TT5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_6_turn_anim + SUBR und_6_to_4_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TT5A+FR5 + .word ANI_XFLIP + WL 1,U1TT5A+FR5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_2_to_8_turn_anim + SUBR und_8_to_2_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TT5A+FR1 + .word ANI_XFLIP + WL 1,U1TT5A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_8_turn_anim + SUBR und_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TT5A+FR5 + .word ANI_XFLIP + WL 1,U1TT5A+FR5 + WL 1,U1TT5A+FR4 + WL 1,U1TT5A+FR3 + WL 1,U1TT5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_2_to_6_turn_anim + SUBR und_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TT5A+FR2 + WL 1,U1TT5A+FR3 + WL 1,U1TT5A+FR4 + WL 1,U1TT5A+FR5 + .word ANI_XFLIP + WL 1,U1TT5A+FR5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR und_2_to_4_turn2_anim + SUBR und_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TR5A+FR2 + WL 1,U1TR5A+FR3 + .word ANI_SETFACING + WL 1,U1TR5A+FR3 + WL 1,U1TR5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_2_turn2_anim + SUBR und_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TR5A+FR4 + WL 1,U1TR5A+FR3 + .word ANI_SETFACING + WL 1,U1TR5A+FR3 + WL 1,U1TR5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_6_turn2_anim + SUBR und_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TR5A+FR5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,U1TR5A+FR5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_2_to_8_turn2_anim + SUBR und_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TR5A+FR1 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,U1TR5A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_8_turn2_anim + SUBR und_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TR5A+FR5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,U1TR5A+FR5 + WL 1,U1TR5A+FR4 + WL 1,U1TR5A+FR3 + WL 1,U1TR5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_2_to_6_turn2_anim + SUBR und_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,U1TR5A+FR2 + WL 1,U1TR5A+FR3 + WL 1,U1TR5A+FR4 + WL 1,U1TR5A+FR5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 1,U1TR5A+FR5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR und_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL ANI_GOTO,#run2 + + SUBR und_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h +#lp1 + WL 4,U3RN3A+FR1 +#ocrun_start + WL 4,U3RN3A+FR2 + WL 4,U3RN3A+FR3 + WL ANI_CODE,SMALL_RUN + WL 4,U3RN3A+FR4 +#run2 + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + .word ANI_ATTACK_ON,AMODE_RUN,5,29,16,71 ;mode,x,y,w,h + WL 4,U3RN3A+FR5 + WL 4,U3RN3A+FR6 + WL 4,U3RN3A+FR7 + WL ANI_CODE,SMALL_RUN + WL 4,U3RN3A+FR8 + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR und_bounce_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 2,U4BO3Z+FR1 + .word ANI_BOUNCEROPE,0 + WL 1,U4BO3Z+FR1 + + WL 2,U4BO3Z+FR2 + .word ANI_BOUNCEROPE,1 + WL ANI_CODE,SMALL_RUN + + WL 1,U4BO3Z+FR2 + + WL 2,U4BO3Z+FR3 + .word ANI_BOUNCEROPE,2 + WL 1,U4BO3Z+FR3 + + WL 2,U4BO3Z+FR4 + .word ANI_BOUNCEROPE,3 + WL 1,U4BO3Z+FR4 + + .word ANI_ZEROVELS + + WL 2,U4BO3Z+FR5 + .word ANI_BOUNCEROPE,4 + WL 1,U4BO3Z+FR5 + WL 3,U4BO3Z+FR6 + WL 2,U4BO3Z+FR7 + .word ANI_BOUNCEROPE,0 + WL 1,U4BO3Z+FR7 + WL 2,U4BO3Z+FR8 + .word ANI_BOUNCEROPE,-1 + WL ANI_CODE,SMALL_RUN + WL 1,U4BO3Z+FR8 + WL 3,U4BO3Z+FR9 + WL 3,U4BO3Z+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/UNDSEQ2.ASM b/BACKUP/UNDSEQ2.ASM new file mode 100644 index 0000000..51bdea6 --- /dev/null +++ b/BACKUP/UNDSEQ2.ASM @@ -0,0 +1,3172 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "undseq2.asm" + .title "Undertaker animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "takerimg.h" + .include "damage.equ" + .include "miscimg.glo" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF DO_CROWD_CHEER + .ref SET_DIR_FACE + .REF HIT_THE_MAT,SMALL_BOUNCE + + .REF CALL_MISSES + .ref am_I_dizzy + .ref am_I_dead + .ref ckzpos + .ref ck_dizzy + .ref start_run_anim + .ref no_bk_xvel,check_xvel + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #2 NORMAL PUNCH + + SUBR und_2_punch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 3,U2PL3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 3,U2PL3A+FR3 + WL 3,U2PL3A+FR4 + .word ANI_ATTACK_ON, AMODE_PUNCH,53,92,48,12 ;mode,x,y,w,h + WL 8,U2PL3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-30000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 5,U2PL3A+FR5 +#no_hit + WL 3,U2PL3A+FR6 + WL 3,U2PL3A+FR7 + WL 3,U2PL3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 NORMAL PUNCH + + SUBR und_4_punch_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 3,U4PL3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 3,U4PL3A+FR3 + WL 3,U4PL3A+FR4 + .word ANI_ATTACK_ON, AMODE_PUNCH,53,92,48,12 ;mode,x,y,w,h + WL 8,U4PL3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-30000h,#no_hit2 + + WL ANI_SET_YVEL,30000h + WL 5,U4PL3A+FR5 + +#no_hit2 + WL 3,U4PL3A+FR6 + WL 3,U4PL3A+FR7 + WL 3,U4PL3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 UPPERCUT + + SUBR und_2_uppercut_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + +* #4 UPPERCUT + + SUBR und_4_uppercut_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 2,U4UP3C+FR1 + WL 2,U4UP3C+FR2 + WL 2,U4UP3C+FR3 + WL 2,U4UP3C+FR4 + .word ANI_ATTACK_ON, AMODE_UPRCUT,46,55,29,59 ;mode,x,y,w,h + WL 2,U4UP3C+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;Hit, spray some explosions +;Turn on explosion sound effect + .ref create_impact4 + WL ANI_CODE,create_impact4 + WL ANI_CODE,HIT_THE_MAT + + + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit2 + WL 10,U4UP3C+FR5 + +#no_hit2 + WL 20,U4UP3C+FR5 + .word ANI_OFFSET,0,0,-5 ;x,y,z + WL 3,U4UP3C+FR4 + WL 3,U4UP3C+FR3 + WL 3,U4UP3C+FR2 + WL 3,U4UP3C+FR1 + +; .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 20,U4UP3C+FR5 +#missed + WL 5,U4UP3C+FR5 + WL 3,U4UP3C+FR4 + WL 3,U4UP3C+FR3 + WL 3,U4UP3C+FR2 + WL 3,U4UP3C+FR1 + +; .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* #4 SLAP + +;Leaping urn slam + + SUBR und_2_slap_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR4 + + SUBR und_4_slap_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,12 + + WLW ANI_ATTCHIMAGE,#GLOVE+FR1,1 ;image, zoff (priority) + WL 3,U4WA4H+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0dh,999,4ah,50,90000h,TGT_HEAD,75,101,10 + + .word ANI_CLR_STATUS + WLW ANI_ATTCHIMAGE,#GLOVE+FR2,1 ;image, zoff (priority) + WL 8,U4WA4H+FR2 + WLW ANI_ATTCHIMAGE,#GLOVE+FR3,1 ;image, zoff (priority) + WL 3,U4WA4H+FR3 + WLW ANI_ATTCHIMAGE,#GLOVE+FR4,1 ;image, zoff (priority) + WL 1,U4WA4H+FR4 + +;MJT Start 2 + .word ANI_ATTACK_ON, AMODE_URN,31,63,56,38 ;mode,x,y,w,h +;MJT End 2 + WL 2,U4WA4H+FR4 + WLW ANI_ATTCHIMAGE,#GLOVE+FR5,1 ;image, zoff (priority) + WL 3,U4WA4H+FR5 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;hit + .ref create_impact + WL ANI_CODE,create_impact +;Put in URN smash sound! + WL ANI_CODE,HIT_THE_MAT + + WWL ANI_SLIDE_BACK,30h,-50000h,#no_hit2 + WL ANI_SET_YVEL,40000h +#no_hit2 +#missed +#missedb + WL 2,U4WA4H+FR5 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR6,1 ;image, zoff (priority) + WL 3,U4WA4H+FR6 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR7,1 ;image, zoff (priority) + WL 3,U4WA4H+FR7 + WLW ANI_ATTCHIMAGE,#GLOVE+FR8,1 ;image, zoff (priority) + WL 3,U4WA4H+FR8 + WLW ANI_ATTCHIMAGE,#GLOVE+FR9,1 ;image, zoff (priority) + WL 3,U4WA4H+FR10 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,0,0 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#GLOVE + .long 0 + .long GLVHIT01 + .long GLVHIT02 + .long GLVHIT03 + .long GLVHIT04 + .long GLVHIT05 + .long GLVHIT06 + .long GLVHIT07 + .long GLVHIT08 + .long GLVHIT09 + +#***************************************************************************** +* +* #2 PUSH + + SUBR und_2_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,12 + WL 3,U2PS3A+FR1 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + WL 3,U2PS3A+FR2 + WL 3,U2PS3A+FR3 + WL 3,U2PS3A+FR4 + .word ANI_ATTACK_ON, AMODE_PUSH,33,85,65,17 ;mode,x,y,w,h + WL 3,U2PS3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WWL ANI_SLIDE_BACK,40h,-60000h,#no_hit ;range,vel,addr + WL 15,U2PS3A+FR5 +#no_hit + WL 10,U2PS3A+FR5 + WL 4,U2PS3A+FR6 + WL 4,U2PS3A+FR7 + WL 4,U2PS3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#missedb +#missed + WL 10,U2PS3A+FR5 + WL 4,U2PS3A+FR6 + WL 4,U2PS3A+FR7 + WL 4,U2PS3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 PUSH + + SUBR und_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,12 + WL 3,U4PS3A+FR1 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + WL 3,U4PS3A+FR2 + WL 3,U4PS3A+FR3 + WL 3,U4PS3A+FR4 + .word ANI_ATTACK_ON, AMODE_PUSH,33,85,65,17 ;mode,x,y,w,h + WL 3,U4PS3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WWL ANI_SLIDE_BACK,40h,-60000h,#no_hit ;range,vel,addr + WL 15,U4PS3A+FR5 +#no_hit + WL 7,U4PS3A+FR5 + WL 4,U4PS3A+FR6 + WL 4,U4PS3A+FR7 + WL 4,U4PS3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#missedb +#missed + WL 7,U4PS3A+FR5 + WL 4,U4PS3A+FR6 + WL 4,U4PS3A+FR7 + WL 4,U4PS3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR und_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,U2AH3A+FR3 + WL 15,U2AH3A+FR4 + WL 4,U2AH3A+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR und_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 4,U4AH3A+FR2 + WL 14,U4AH3A+FR3 + WL 4,U4AH3A+FR4 + WL 4,U4AH3A+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR und_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,U4AH3A+FR2 + WL 14,U4AH3A+FR3 + WL 4,U4AH3A+FR4 + WL 4,U4AH3A+FR5 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,und_dizzy_anim + .word ANI_END + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR und_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + + WL 4,U4LB4A+FR1 + WL 4,U4LB4A+FR2 + WL 4,U4LB4A+FR3 + WL 4,U4LB4A+FR4 + WL 4,U4LB4A+FR5 + WL 4,U4LB4A+FR6 + WL 4,U4LB4A+FR1 + + .word ANI_FACEDOWN +; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 LOSE BALANCE - Go dizzy + + SUBR und_4_losebal_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,U4LB4A+FR1 + WL 4,U4LB4A+FR2 + WL 4,U4LB4A+FR3 + WL 4,U4LB4A+FR4 + WL 4,U4LB4A+FR5 + WL 4,U4LB4A+FR6 + WL 4,U4LB4A+FR1 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,und_dizzy_anim + .word ANI_END + +#***************************************************************************** +* +* #2 ELBOW DROP + +#yoff equ 40 + + SUBR und_2_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,U2JP2C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 3,U2JP2C+FR2 + WL 3,U2JP2C+FR3 + + ;skip the leap if simply falling down will do. + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,29,-14,-40,25,36,50 + WL 1,U2JP2C+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#skip_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,112,96,90000h,TGT_USER,44,#yoff,-30 + WL ANI_GOTO,#do_leapat + +#skip_leapat + WL ANI_SET_YVEL,30000h +#do_leapat + .word ANI_OFFSET,0,#yoff,0 + WL 3,U2JP2C+FR4 + WL 3,U2JP2C+FR5 + WL 3,U2JP2C+FR6 + WL 3,U2JP2C+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,29,-14,-40,25,36,50 + WL 4,U2JP2C+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#hit + + WL ANI_CODE,CALL_MISSES +#hit + WL 8,U2JP2C+FR9 + + ;getup + .word ANI_OFFSET,13,0,0 + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 3,U3GD2A+FR4 + WL 3,U3GD2A+FR5 + WL 3,U3GD2A+FR6 + WL 3,U3GD2A+FR7 +;Keep this frame in game... + WL 1,U3GD2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 ELBOW DROP + +#yoff equ 40 + + SUBR und_4_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,U4JP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 3,U4JP4D+FR2 + WL 3,U4JP4D+FR3 + + ;skip the leap if simply falling down will do. + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,3,-16,-10,27,35,50 + WL 1,U4JP4D+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#skip_leapat + +#skip_leapat + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,112,96,90000h,TGT_USER,19,#yoff,60 + WL ANI_GOTO,#do_leapat + +;#skip_leapat + WL ANI_SET_YVEL,30000h +#do_leapat + .word ANI_OFFSET,0,#yoff,0 + WL 3,U4JP4D+FR4 + WL 3,U4JP4D+FR5 + WL 3,U4JP4D+FR6 + WL 3,U4JP4D+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,3,-16,-10,27,35,70 + WL 4,U4JP4D+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#hit + + WL ANI_CODE,CALL_MISSES +#hit + WL 8,U4JP4D+FR9 + + ;getup + .word ANI_OFFSET,19,0,0 + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 3,U3GD4A+FR5 + WL 3,U3GD4A+FR6 + WL 3,U3GD4A+FR7 + WL 1,U3GD4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD4A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR und_2_butt_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,U2BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 2,U2BC3A+FR2 + WL 2,U2BC3A+FR3 + WL 2,U2BC3A+FR4 + WL 2,U2BC3A+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT,-8,83,73,36 ;mode,x,y,w,h + WL 3,U2BC3A+FR6 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,U2BC3A+FR7 +#no_hit + WL 5,U2BC3A+FR7 + WL 3,U2BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 HEADBUTT + + SUBR und_4_butt_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,U4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 2,U4BC3A+FR2 + WL 2,U4BC3A+FR3 + WL 2,U4BC3A+FR4 + WL 2,U4BC3A+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT,-8,83,73,36 ;mode,x,y,w,h + WL 3,U4BC3A+FR6 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit2 + + WL ANI_SET_YVEL,38000h + WL 6,U4BC3A+FR7 +#no_hit2 + WL 5,U4BC3A+FR7 + WL 3,U4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK + + SUBR und_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,U2KM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,5 + WL 3,U2KM3B+FR2 + WL 2,U2KM3B+FR3 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,40000h + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 7,U2KM3B+FR4 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 10,U2KM3B+FR4 + +#no_hit + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL 3,U2KM3B+FR5 + WL 3,U2KM3B+FR6 + WL 3,U2KM3B+FR7 + WL 3,U2KM3B+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KICK + + SUBR und_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,U4KM3E+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,5 + WL 3,U4KM3E+FR2 + WL 2,U4KM3E+FR3 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,40000h + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 7,U4KM3E+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 10,U4KM3E+FR4 + +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL 3,U4KM3E+FR5 + WL 3,U4KM3E+FR6 + WL 3,U4KM3E+FR8 + WL 3,U4KM3E+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 SUPER KICK + + SUBR und_2_super_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,15 + WL 3,U2KB3A+FR1 + .word ANI_OFFSET,5,0,0 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,80,40,90000h,TGT_CHEST,64,0,20 + WL ANI_SET_YVEL,48000h + WL 4,U2KB3A+FR2 + WL 4,U2KB3A+FR3 + WL 4,U2KB3A+FR4 + + .word ANI_ATTACK_ON, AMODE_KICK,19,60,68,27 ;mode,x,y,w,h + WL 2,U2KB3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;Hit +;Turn on spirits + .ref create_impact2 + WL ANI_CODE,create_impact2 + .word ANI_ZERO_XZVELS + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,-28000h,AM_ABS + WL 9,U2KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,U2KB3A+FR6 + WL 5,U2KB3A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#no_hit2 + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WLW ANI_SET_ZVEL,-28000h,AM_ABS + WL ANI_SET_YVEL,20000h + WL 2,U2KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 5,U2KB3A+FR6 + WL 5,U2KB3A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL ANI_CODE,CALL_MISSES +#missed + WL 3,U2KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 5,U2KB3A+FR6 + WL 5,U2KB3A+FR7 + + .word ANI_FACEDOWN +; .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#* #4 SUPER KICK + + SUBR und_4_super_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_LEAPING,15 + + WL 3,U4KB3A+FR2 + .word ANI_OFFSET,5,0,0 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,80,40,90000h,TGT_CHEST,64,0,-20 + WL ANI_SET_YVEL,48000h + WL 4,U4KB3A+FR3 + WL 4,U4KB3A+FR4 + WL 4,U4KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,8,48,74,33 ;mode,x,y,w,h + WL 2,U4KB3A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;Hit +;Turn on spirits + .ref create_impact2 + WL ANI_CODE,create_impact2 + .word ANI_ZERO_XZVELS + + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,28000h,AM_ABS + WL 9,U4KB3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,U4KB3A+FR8 +; WL 4,U4KB3A+FR9 + + .word ANI_FACEUP + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#no_hit2 + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WLW ANI_SET_ZVEL,28000h,AM_ABS + WL ANI_SET_YVEL,20000h + WL 2,U4KB3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,U4KB3A+FR8 +; WL 4,U4KB3A+FR9 + + .word ANI_FACEUP + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL ANI_CODE,CALL_MISSES +#missed + WL 5,U4KB3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 5,U4KB3A+FR8 +; WL 4,U4KB3A+FR9 + + .word ANI_FACEUP +; .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR und_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,U2MP2A+FR1 + WL 3,U2MP2A+FR2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,9,-1,-40,28,31,50 + WL 1,U2MP2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat + + WL ANI_SET_YVEL,28000h + WL ANI_GOTO,#common +#leapat + .word ANI_TARGET,TGT_HEAD,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,112,96,40000h,TGT_USER,19,0,-30 + WL ANI_CODE,no_bk_xvel +#common + WL 4,U2MP2A+FR3 + WL 1,U2MP2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON_Z,AMODE_STOMP,9,-1,-40,28,31,50 + WL 1,U2MP2A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL ANI_GOTO,#hit +#missed + WL ANI_CODE,CALL_MISSES +#hit + WL 4,U2MP2A+FR5 + WL 4,U2MP2A+FR6 + WL 4,U2MP2A+FR7 + WL 4,U2MP2A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + + + SUBR und_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,U4MP4A+FR1 + WL 3,U4MP4A+FR2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,-21,-11,-10,42,33,50 + WL 1,U4MP4A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat + + WL ANI_SET_YVEL,28000h + WL ANI_GOTO,#common +#leapat + .word ANI_TARGET,TGT_HEAD,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,112,96,40000h,TGT_USER,-13,0,30 + WL ANI_CODE,no_bk_xvel +#common + WL 4,U4MP4A+FR3 +;Frame was not loaded...So I took it out... +; WL 1,U4MP4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-21,-11,-10,42,33,50 + WL 1,U4MP4A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL ANI_GOTO,#hit +#missed + WL ANI_CODE,CALL_MISSES +#hit + WL 4,U4MP4A+FR5 + WL 4,U4MP4A+FR6 + WL 4,U4MP4A+FR7 + WL 4,U4MP4A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#*****************************************************************************] +* +* #3 FLYING BUTT-DROP + +#yoff equ 50 + + SUBR und_flying_butt_drop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + WL 4,U4JK4A+FR3 + .word ANI_OFFSET,0,#yoff,0 + + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,200,150,90,90000h,TGT_USER,0,0,-10 + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_CODE,no_bk_xvel + WL 4,U4JK4A+FR4 + WL 4,U4JK4A+FR5 + WL 4,U4JK4A+FR6 + WL 4,U4JK4A+FR7 + .word ANI_ATTACK_ON,AMODE_BUTTSTOMP,-25,-7+5,55,23 + WWL ANI_WAITHITOPP,18,U4JK4A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFNOTSTATUS,#miss + +#hit + ;bounce is automatic... + + WL 4,U4JK4A+FR10 + WL 4,U4JK4A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_XFLIP + .word ANI_FACEUP + WL ANI_CHANGEANIM,und_getup2_anim + +#miss ;missed + WL ANI_CODE,CALL_MISSES + + WL 12,U4JK4A+FR10 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_XFLIP + .word ANI_FACEUP + WL ANI_CHANGEANIM,und_getup2_anim + +#*****************************************************************************] +* +* TURNBUCKLE BUTT-DROP + +#yoff equ 50 + + SUBR und_tbukl_butt_drop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOCOLLIS|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + + .word ANI_STARTATTACK,AT_LEAPING,35 + +; WL 3,U4JK4A+FR1 +; WL 3,U4JK4A+FR2 + WL 3,U4JK4A+FR3 + .word ANI_OFFSET,0,#yoff,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 36,190,190,190,90000h,TGT_GROIN,0,0,-20 + + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + +;Check x vel to make sure we aren't going to land on ropes! + WL ANI_CODE,check_xvel + + WL 3,U4JK4A+FR4 + WL 3,U4JK4A+FR5 + WL 3,U4JK4A+FR6 + WL 3,U4JK4A+FR7 + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-25,8,-30,55,23,60 + WWL ANI_IFOPPMODE,~MODE_ONGROUND,#not_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-25,-2,-30,55,23,60 +#not_onground + WWL ANI_WAITHITOPP,30,U4JK4A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_ZERO_XZVELS + .word ANI_SETPLYRMODE,MODE_INAIR + + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFNOTSTATUS,#miss + +#hit + .word ANI_WAITHITGND + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,28000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_INAIR + WL 4,U4JK4A+FR10 + WL 4,U4JK4A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_XFLIP + .word ANI_FACEUP + WL ANI_CHANGEANIM,und_getup2_anim + +#miss ;missed + WL ANI_CODE,CALL_MISSES + .word ANI_BOUNCE,4 + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + .word ANI_WAITHITGND + + WL 1,U4JK4A+FR10 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_ZEROVELS + WL 12,U4JK4A+FR10 + .word ANI_XFLIP + .word ANI_FACEUP + WL ANI_CHANGEANIM,und_getup2_anim + +#***************************************************************************** +* +* #4 BIG BOOT + + SUBR und_4_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_STARTATTACK,AT_BIGBOOT,8 + WL 4,U4BG3A+FR2 + WL 4,U4BG3A+FR3 + WL ANI_CODE,#clrcnt + .word ANI_ATTACK_ON, AMODE_BIGBOOT,30,89,68,20 ;mode,x,y,w,h + WL 2,U4BG3A+FR4 +#lp + WL 2,U4BG3A+FR4 + WL ANI_CODE,#holdup + WL ANI_IFSTATUS,#lp + + .word ANI_ATTACK_OFF + + WL 4,U4BG3A+FR5 + WL 4,U4BG3A+FR6 + WL 4,U4BG3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#clrcnt +;We are re-using BUT_COUNT in the player process + clr a0 + move a0,*a13(BUT_COUNT) + + rets + +#holdup + move *a13(BUT_COUNT),a0 + inc a0 + move a0,*a13(BUT_COUNT) + +;Max time to hold up in air (*2 ticks) + cmpi 25,a0 + jrgt #button_up + + move *a13(PLYRNUM),a0 + .ref get_but_val_cur + calla get_but_val_cur + btst PLAYER_SKICK_BIT,a0 ;still down? + jrz #button_up + +;Still holding... + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#button_up + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* #2 KNEE + + SUBR und_2_knee_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,U2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,6 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12h,999,20h,20,90000h,TGT_CHEST,20,50,0 + WL 3,U2NM3A+FR4 + .word ANI_ATTACK_ON, AMODE_KNEE,8,31,46,32 ;mode,x,y,w,h + WL 3,U2NM3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + WL 1,U2NM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont +#no_hit + WL ANI_IFNOTSTATUS,#nodrft + WLW ANI_SET_ZVEL,10000h,AM_ABS +#nodrft + WL 0ch,U2NM3A+FR5 + .word ANI_ZERO_XZVELS + WL 1,U2NM3A+FR5 + .word ANI_WAITHITGND +#cont + WL 3,U2NM3A+FR6 + WL 3,U2NM3A+FR7 + WL 3,U2NM3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 KNEE + + SUBR und_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,U4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,6 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12h,999,20h,20,90000h,TGT_CHEST,20,50,0 + WL 3,U4NM3A+FR3 + .word ANI_ATTACK_ON, AMODE_KNEE,8,31,46,32 ;mode,x,y,w,h +#cont0 WL 3,U4NM3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-48000h,#no_hit2 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + WL 1,U4NM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 +#no_hit2 + WL ANI_IFNOTSTATUS,#nodrft2 + WLW ANI_SET_ZVEL,-10000h,AM_ABS +#nodrft2 + WL 0ch,U4NM3A+FR4 + .word ANI_ZERO_XZVELS + WL 1,U4NM3A+FR4 + .word ANI_WAITHITGND +#cont2 + WL 3,U4NM3A+FR5 + WL 3,U4NM3A+FR6 + WL 3,U4NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_knee_fall_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_KICK,6 + WL 3,U4NM3A+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12h,999,20h,20,90000h,TGT_CHEST,20,50,0 + WL 3,U4NM3A+FR3 + .word ANI_ATTACK_ON, AMODE_BIGKNEE,8,31,46,32 ;mode,x,y,w,h + WL ANI_GOTO,#cont0 + + SUBR und_4_knee_butts_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_CLR_BUTCOUNT + .word ANI_SETWORD,USR_VAR2,0 + + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + .word ANI_OFFSET,0,0,-10 ;x,y,z + + WL 2,U4NM3A+FR2 + WL 2,U4NM3A+FR3 + .word ANI_ATTACK_ON, AMODE_HEADKNEES,8,31,46,32 ;mode,x,y,w,h + WL 2,U4NM3A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL 3,U4NM3A+FR4 + WL 3,U4NM3A+FR5 + WL 3,U4NM3A+FR6 + WL 3,U4NM3A+FR7 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit2 + +;Now try consecutive head butts + + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times + .word ANI_ZERO_XZVELS +#rpt + .word ANI_CLR_BUTCOUNT + WL 2,U4BC3A+FR1 + WL 1,U4BC3A+FR2 + WL 2,U4BC3A+FR3 + WL 1,U4BC3A+FR4 + WL 2,U4BC3A+FR5 + .word ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_HDBUTT2,-8,63,73,56 ;mode,x,y,w,h + WL 2,U4BC3A+FR6 + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + WL ANI_IFNOTSTATUS,#missed0 + WL 2,U4BC3A+FR7 + WL 2,U4BC3A+FR8 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + + .word ANI_SETWORD,USR_VAR2,1 + +;Now, 1 last butt, check skick + .word ANI_CLR_BUTCOUNT + WL 2,U4BC3A+FR1 + WL 2,U4BC3A+FR2 + WL 2,U4BC3A+FR3 + WL 2,U4BC3A+FR4 + WL 2,U4BC3A+FR5 + .word ANI_SOUND,43H +;MJT Start 2 + .word ANI_ATTACK_ON, AMODE_HDBUTT2,-8,63,73,56 ;mode,x,y,w,h +;MJT End 2 + WL 2,U4BC3A+FR6 + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + WL ANI_IFNOTSTATUS,#missed0 + WL 2,U4BC3A+FR7 + WL 2,U4BC3A+FR8 + +;Try reading other buttons here... + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#next1 + .ref und_neckbreaker_anim + WL ANI_CHANGEANIM,und_neckbreaker_anim +#next1 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#exit0 + .ref und_tombstone_anim + WL ANI_CHANGEANIM,und_tombstone_anim + +#exit0 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed0 + WL 2,U4BC3A+FR7 + WL 2,U4BC3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#exit +#missed + .word ANI_DETACH + + WL 3,U4NM3A+FR4 + WL 3,U4NM3A+FR5 + WL 3,U4NM3A+FR6 + WL 3,U4NM3A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#exit2 + .word ANI_DETACH ;From just a knee! + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR und_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 2,U1TT5A+FR2 + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR4 + WL ANI_GOTO,#cont + + SUBR und_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,25 + .word ANI_STARTATTACK,AT_PUPPET,6 + WL ANI_SET_YVEL,0000h + WL 4,U4GF3A+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET,19,68,80,16 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,U4GF3A+FR2 +; WL 4,U4GF3A+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,U4GF3A+FR3 +; WL 4,U4GF3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;got him + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,U4GF3A+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,6,U4GF3A+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,U4GF3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U4GF3A+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,U4GF3A+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,U4GF3A+FR8,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 13,U4GF3A+FR8 + .word ANI_OFFSET,-10,0,0 ;x,y,z + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 25,U4GF3A+FR4 +#missed + .ref CALL_MISSES + WL ANI_CODE,CALL_MISSES + WL 8,U4GF3A+FR4 + WL 4,U4GF3A+FR3 + WL 4,U4GF3A+FR2 + WL 4,U4GF3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H4YR3A,H3RN3A + .ref R4YR3A,R3RN3D + .ref D4YR3B,D3RN3B + .ref Y4YR3A,Y3RN3C + .ref S4YR3A,S3RN3A + .ref B4YR3A,B3RN3A + .ref L4YR3B,L3RN3B + +#Bret + LWWW H4YR3A+FR1,61,-4,1 + LWWW H4YR3A+FR2,54,-1,1 + LWWW H4YR3A+FR3,63,2,1 + LWWW H4YR3A+FR5,49,-1,1 + LWWW H3RN3A+FR1,-6,-10,0 + LWWW H3RN3A+FR2,4,-7,0 +#Razor + LWWW R4YR3A+FR1,48,6,0 + LWWW R4YR3A+FR2,37,9,0 + LWWW R4YR3A+FR3,33,6,0 + LWWW R4YR3A+FR4,9,-1,0 + LWWW R3RN3D+FR10,0,1,0 + LWWW R3RN3D+FR11,7,4,0 +#Taker + LWWW U4YR3B+FR2,40,9,0 + LWWW U4YR3B+FR3,51,5,0 + LWWW U4YR3B+FR4,32,6,0 + LWWW U4YR3B+FR5,-3,4,0 + LWWW U3RN3A+FR1,-8,2,0 + LWWW U3RN3A+FR2,-42,0,0 +#Yokozuna + LWWW Y4YR3A+FR1,63,-3,1 + LWWW Y4YR3A+FR4,34,-1,1 + LWWW Y4YR3A+FR5,29,6,1 + LWWW Y4YR3A+FR7,19,1,1 + LWWW Y3RN3C+FR7,29,4,0 + LWWW Y3RN3C+FR8,4,-1,0 +#Shawn + LWWW S4YR3A+FR2,36,-7,1 + LWWW S4YR3A+FR3,45,-13,1 + LWWW S4YR3A+FR5,28,2,1 + LWWW S4YR3A+FR6,8,-5,1 + LWWW S3RN3A+FR2,-3,-4,0 + LWWW S3RN3A+FR3,0,0,0 +#BamBam + LWWW B4YR3A+FR3,43,1,0 + LWWW B4YR3A+FR4,50,-2,0 + LWWW B4YR3A+FR5,63,3,0 + LWWW B4YR3A+FR7,10,-9,0 + LWWW B3RN3A+FR1,10,0,0 + LWWW B3RN3A+FR2,0,5,0 +#Doink + LWWW D4YR3B+FR1,61,-2,1 + LWWW D4YR3B+FR2,50,3,1 + LWWW D4YR3B+FR3,53,6,1 + LWWW D4YR3B+FR4,36,1,1 + LWWW D3RN3B+FR3,6,-1,0 + LWWW D3RN3B+FR4,-2,0,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,77,3,1 + LWWW L4YR3B+FR2,58,-1,1 + LWWW L4YR3B+FR3,47,6,1 + LWWW L4YR3B+FR4,5,-3,1 + LWWW L3RN3B+FR2,-1,4,0 + LWWW L3RN3B+FR3,17,-1,0 + + +#strt_run_tbl + .ref start_run_flung + + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR und_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,U2AH3A+FR3 + WL 6,U2AH3A+FR4 + WL 4,U2AH3A+FR5 + WL 3,U2AH3A+FR6 + WL 3,U2AH3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 HEAD HIT + + SUBR und_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,U4AH3A+FR2 + WL 4,U4AH3A+FR3 + WL 4,U4AH3A+FR4 + WL 4,U4AH3A+FR5 + WL 4,U4AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #2 HEAD HIT - From spin kick & backhand slap + + SUBR und_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + WL 3,U2AH3A+FR3 + WL 3,U2AH3A+FR4 + WL 1,U2AH3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U2AH3A+FR6 + WL 3,U2AH3A+FR7 + +;Try auto push here! + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 HEAD HIT - From spin kick & backhand slap + + SUBR und_4_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,U4AH3A+FR2 + WL 3,U4AH3A+FR3 + WL 1,U4AH3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U4AH3A+FR5 + WL 3,U4AH3A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR und_4_head_hit4_anim + +;From earslap + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; WLW ANI_SET_XVEL,-28000h,AM_HIT_REL +; WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 4,U4AH3A+FR4 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + WL 4,U4AH3A+FR5 + WL 4,U4AH3A+FR6 + .word ANI_WAITHITGND + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HEAD HIT2 (HANDS ON FACE) + + SUBR und_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,28000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 4,U3AE4A+FR1 + WL 10,U3AE4A+FR2 + WL 4,U3AE4A+FR3 + WL 4,U3AE4A+FR4 + WL 4,U3AE4A+FR5 + WL 4,U3AE4A+FR6 + WL 4,U3AE4A+FR7 + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* HEAD HIT2 (ENDS IN DIZZY) + + SUBR und_head_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,38000h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,U3AE4A+FR1 + WL 10,U3AE4A+FR2 + WL 4,U3AE4A+FR3 + WL 4,U3AE4A+FR4 + WL 4,U3AE4A+FR5 + WL 4,U3AE4A+FR6 + WL 4,U3AE4A+FR7 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,und_dizzy_anim + .word ANI_END + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR und_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .ref ckzpos + WL ANI_CODE,ckzpos + WL 1,U2AM2A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U2AM2A+FR3 + WL 3,U2AM2A+FR4 + WL 3,U2AM2A+FR5 + WL 3,U2AM2A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 BODY HIT + + SUBR und_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .ref ckzpos + WL ANI_CODE,ckzpos + WL 3,U4AM4C+FR2 + WL 1,U4AM4C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U4AM4C+FR4 + WL 3,U4AM4C+FR5 + WL 3,U4AM4C+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #2 BODY HIT BY KNEE + + SUBR und_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,04000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + WL 1,U2AM2A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U2AM2A+FR3 + WL 3,U2AM2A+FR4 + WL 3,U2AM2A+FR5 + WL 3,U2AM2A+FR6 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 BODY HIT BY KNEE + + SUBR und_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-04000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + WL 3,U4AM4C+FR2 + WL 1,U4AM4C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U4AM4C+FR4 + WL 3,U4AM4C+FR5 + WL 3,U4AM4C+FR6 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .ref ckzpos + WL ANI_CODE,ckzpos + WL 3,U4AM4C+FR2 + WL 1,U4AM4C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U4AM4C+FR4 + WL 3,U4AM4C+FR5 + WL 3,U4AM4C+FR6 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,und_dizzy_anim + .word ANI_END + + SUBR und_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,U4AM4C+FR2 + WL 3,U4AM4C+FR3 + WL 3,U4AM4C+FR4 + WL 3,U4AM4C+FR5 + WL 3,U4AM4C+FR6 + + .word ANI_FACEDOWN + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,und_fall_back_anim + .word ANI_END + +#nodead + + + + .ref und_3_head_held_anim + WL ANI_CHANGEANIM,und_3_head_held_anim + + .word ANI_END + +* #4 BODY HIT - While I was dizzy + + SUBR und_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .ref ckzpos + WL ANI_CODE,ckzpos + WL 3,U4AM4C+FR2 + WL 1,U4AM4C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U4AM4C+FR4 + WL 3,U4AM4C+FR5 + WL 3,U4AM4C+FR6 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,und_dizzy_anim + .word ANI_END + + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR und_hitonground_xflip_anim + .word ANI_XFLIP + ;fall through + + SUBR und_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL 1,U3CP3B+FR2 + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,39000h + WL 3,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + WL 4,U3CP3B+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 4,U3CP3B+FR7 + + WL 1,U3CP3B+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** +* +* FALL BACK + + SUBR und_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; WL ANI_CODE,am_I_dead +;If I'm dead, don't go up into air +; WL ANI_IFSTATUS,#dead + WL ANI_SET_YVEL,60000h +;#dead + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[104,2] ;Y,X of head + WL 3,U3FD3B+FR1 + WWL ANI_SETLONG,DEBRIS_X,[104,-24] ;Y,X of head + WL 3,U3FD3B+FR2 + + .word ANI_OFFSET,0,53,0 ;x,y,z + + WWL ANI_SETLONG,DEBRIS_X,[50,-20] ;Y,X of head + WL 3,U3FD3B+FR3 + WWL ANI_SETLONG,DEBRIS_X,[43,-26] ;Y,X of head + WL 3,U3FD3B+FR4 + WWL ANI_SETLONG,DEBRIS_X,[32,-41] ;Y,X of head + WL 2,U3FD3B+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,[8,-51] ;Y,X of head + WL 2,U3FD3B+FR6 + .word ANI_BOUNCE,4 + WWL ANI_SETLONG,DEBRIS_X,[9,-53] ;Y,X of head + WL 2,U3FD3B+FR7 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SOUND,bounce_l1 + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + .word ANI_XFLIP + WL 3,U3CP3B+FR1 ;1st frame of roll + +;Now, also check to see if this made him dizzy + +;Stay on ground for awhile... Maybe this will be table driven + WL 3,U3CP3B+FR1 ;1st frame of roll +;#done + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** +* +* FALL BACK + +;From clothesline + + SUBR und_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL ANI_CODE,ckzpos + + .word ANI_XFLIP + WL 3,U3FD3X+FR1 + WL 3,U3FD3X+FR2 + + .word ANI_OFFSET,0,49,0 ;x,y,z + + WL 3,U3FD3X+FR3 + WL 3,U3FD3X+FR4 + WL 3,U3FD3X+FR5 + WL 3,U3FD3X+FR6 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-40000h,AM_FACE_REL + + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 3,U3GP3X+FR1 + WL 3,U3GP3X+FR2 + WL 3,U3GP3X+FR3 + WL 3,U3GP3X+FR4 + WL 3,U3GP3X+FR5 + WL 3,U3GP3X+FR6 + WL ANI_CODE,HIT_THE_MAT + + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + + .word ANI_XFLIP + .word ANI_OFFSET,-20,0,0 ;x,y,z + WL 4,U3CF3Q+FR1 + WL 4,U3CF3Q+FR2 + WL 4,U3CF3Q+FR3 + WL 4,U3CF3Q+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + WL 15,U3GD2A+FR1 + + WL 4,U3GD2A+FR1 + WL 4,U3GD2A+FR2 + WL 4,U3GD2A+FR3 + WL 4,U3GD2A+FR4 + + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + + WL 4,U3GD2A+FR5 + WL 4,U3GD2A+FR6 + WL 4,U3GD2A+FR7 + WL 2,U3GD2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#getup_in_4 + WL 4,U3GD4A+FR5 + WL 4,U3GD4A+FR6 + WL 4,U3GD4A+FR7 + WL 2,U3GD4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD4A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR und_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + + WL 3,U3FD3B+FR1 + WL 3,U3FD3B+FR2 + + .word ANI_OFFSET,0,53,0 ;x,y,z + + WL 3,U3FD3B+FR3 + WL 3,U3FD3B+FR4 + WL 2,U3FD3B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 +; .word ANI_FRICTION,3000h + + WL 2,U3FD3B+FR6 +; .word ANI_BOUNCE,4 + WL 2,U3FD3B+FR7 +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_SOUND,bounce_l1 +; .word ANI_ZEROVELS + + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 3,U3CP3B+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + +#***************************************************************************** +* + + SUBR und_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_STARS + .word ANI_CLR_DAMAGE + +;;; WL 4,U3SU3A+FR1 + WL 4,U3SU3A+FR2 + WL 4,U3SU3A+FR3 + WL 4,U3SU3A+FR4 + WL 4,U3SU3A+FR5 + + WL 4,U3SU3A+FR6 + +;;; WL 60+4,U3SU3A+FR6 + + .ref choose_2or4 + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + + + WL 4,U3SU2B+FR1 + WL 4,U3SU2B+FR2 + WL 4,U3SU2B+FR3 + WL 4,U3SU2B+FR4 + WL 4,U3SU2B+FR5 + WL 4,U3SU2B+FR6 + WL 2,U3SU2B+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3SU2B+FR7 + WL 4,U3SU2B+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 4,U3SU3A+FR7 + WL 4,U3SU3A+FR8 + + WL 4,U3SU4A+FR1 + WL 4,U3SU4A+FR2 + WL 4,U3SU4A+FR3 + WL 4,U3SU4A+FR4 + WL 4,U3SU4A+FR5 + WL 4,U3SU4A+FR6 + WL 2,U3SU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3SU4A+FR7 + + WL 4,U3SU4A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* + + SUBR und_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_STARS + .word ANI_CLR_DAMAGE + + WL 4,U3SU3A+FR1 + WL 4,U3SU3A+FR2 + WL 4,U3SU3A+FR3 + WL 4,U3SU3A+FR4 + WL 4,U3SU3A+FR5 + WL 4,U3SU3A+FR6 + +;;; WL 60+4,U3SU3A+FR6 + WL ANI_GOTO,#common + +;getup from seated position + + SUBR und_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_STARS + .word ANI_CLR_DAMAGE + +#common + .ref choose_2or4 + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + + WL 4,U3SU2B+FR1 + WL 4,U3SU2B+FR2 + WL 4,U3SU2B+FR3 + WL 4,U3SU2B+FR4 + WL 4,U3SU2B+FR5 + WL 4,U3SU2B+FR6 + WL 2,U3SU2B+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3SU2B+FR7 + WL 4,U3SU2B+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 4,U3SU3A+FR7 + WL 4,U3SU3A+FR8 + + WL 4,U3SU4A+FR1 + WL 4,U3SU4A+FR2 + WL 4,U3SU4A+FR3 + WL 4,U3SU4A+FR4 + WL 4,U3SU4A+FR5 + WL 4,U3SU4A+FR6 + WL 2,U3SU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3SU4A+FR7 + WL 4,U3SU4A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* DIZZY + + SUBR und_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + + WL 10,U4TI4C+FR1 + WL 10,U4TI4C+FR3 + WL 10,U4TI4C+FR5 + WL 10,U4TI4C+FR7 + WL 10,U4TI4C+FR5 + WL 10,U4TI4C+FR3 + + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* #2 BLOCK + + SUBR und_2_block_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZERO_XZVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + .word ANI_SETPLYRMODE,MODE_BLOCK + + WL 3,U2BK3A+FR1 + WL 3,U2BK3A+FR2 +#blk2 WL 3,U2BK3A+FR3 + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + WL 3,U2BK3A+FR2 + WL 3,U2BK3A+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR und_2_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + WL 4,U2BK3A+FR4 + WL 4,U2BK3A+FR5 + WL ANI_GOTO,#blk2 + + +* #4 BLOCK + + SUBR und_4_block_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZERO_XZVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 3,U4BK3C+FR1 + WL 3,U4BK3C+FR2 +#blk4 WL 3,U4BK3C+FR3 + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + WL 3,U4BK3C+FR2 + WL 3,U4BK3C+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WL 4,U4BK3C+FR5 + WL 4,U4BK3C+FR6 + WL ANI_GOTO,#blk4 + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR und_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WL 8,U3FH3A+FR3 + WL 8,U3FH3A+FR4 + WL 1,U3FH3A+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_OFFSET,48,0,0 + + .word ANI_DAMAGE,D_HIPTOSS + .word ANI_SETWORD,DELAY_METER,0 + .word ANI_GETUP,500 + + WL ANI_CHANGEANIM,und_hitonground_anim + +;MJT Start 2 +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + +;Jamie, taker needs to be above fallen opponent. His hand should +;end up laying across opponents chest area. Not below it! + + SUBR und_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 2,U1TT5A+FR2 + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR4 + WL ANI_GOTO,#cont + + SUBR und_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,999,80h,50h,90000h,TGT_CHEST,0,57,20 + + WL 4,U5PN5A+FR1 + .word ANI_OFFSET,0,15,0 ;x,y,z + WL 18,U5PN5A+FR2 + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + + WL 3,U5PN5A+FR3 +; WL 3,U5PN5A+FR4 +; .word ANI_OFFSET,0,0,25 ;x,y,z + .word ANI_SET_ATTACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,-5 ;x & y don't matter. + WL 3,U5PN5A+FR6 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 3,U5PN5A+FR5 + + .word ANI_ATTACK_OFF + WL ANI_CODE,HIT_THE_MAT + + WL ANI_CODE,DO_CROWD_CHEER + + .word ANI_BOUNCE,4 + WL 4,U5PN5A+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + WL 4,U5PN5A+FR6 + WL ANI_CODE,win_announce + WL 40,U5PN5A+FR6 + + .word ANI_LOOP + +;Do another ground hit on opponent + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 3,U5PN5A+FR5 + WL 3,U5PN5A+FR4 + WL 3,U5PN5A+FR3 + WL 3,U5PN5A+FR2 + WL 3,U5PN5A+FR1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 + + + SUBR und_4_pin2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 5,U3PN5A+FR1 + WL 5,U3PN5A+FR2 + WL 5,U3PN5A+FR3 + WL 5,U3PN5A+FR4 + WL 5,U3PN5A+FR5 + WL 5,U3PN5A+FR6 + WL 5,U3PN5A+FR7 + WL 5,U3PN5A+FR8 + + .ref create_impact5 + WL ANI_CODE,create_impact5 + +;Do a ground hit on opponent + .ref grnd_hit + WL ANI_CODE,grnd_hit + WLW ANI_ATTCHIMAGE,UARMPN+FR9,1 ;image, zoff (priority) + + WL ANI_CODE,DO_CROWD_CHEER + + WL 25,U3PN5A+FR9 + .word ANI_DEBRIS,1000,7,0,8,0 ;%chance, tbl index, x,y,z off + WL 65,U3PN5A+FR9 + .ref win_announce + WL ANI_CODE,win_announce + + .word ANI_LOOP + + WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + WL 3,U3PN5A+FR11 + WL 3,U3PN5A+FR12 + +#cont2 +;Place spirits around Undertaker as he stands up! + + WL 3,U5RV5A+FR1 + WL 3,U5RV5A+FR2 + WL 3,U5RV5A+FR3 + WL 3,U5RV5A+FR4 + WL 3,U5RV5A+FR5 + + WL 1000,U5RV5A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +;MJT End 2 +#***************************************************************************** + + SUBR und_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*11/255 ;inv multiply (0-255 -> 0-11) + + .long U3CP3B+FR1 ;0 + .long U3CR3A+FR12 ;1 + .long U3CR3A+FR11 ;2 + .long U3CR3A+FR10 ;3 + .long U3CR3A+FR9 ;4 + .long U3CR3A+FR8 ;5 + .long U3CR3A+FR7 ;6 + .long U3CR3A+FR6 ;7 + .long U3CR3A+FR5 ;8 + .long U3CR3A+FR4 ;9 + .long U3CR3A+FR3 ;10 + .long U3CR3A+FR2 ;11 + .long 0,0,0,0,0,0 + + +#***************************************************************************** +* +* #3 FLYING KICK + + SUBR und_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,U3DC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .ref get_leap + WL ANI_CODE,get_leap + WL ANI_IFSTATUS,#no_xvel + + WL 3,U3DC3A+FR2 + +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 19,999,150,65,90000h,TGT_HEAD,30,100,0 + .word ANI_STARTATTACK,AT_LEAPING,21 + + WL ANI_GOTO,#cont + +#no_xvel + .word ANI_ZEROVELS + + WL 3,U3DC3A+FR2 + WL ANI_SET_YVEL,64000h +#cont + WL 3,U3DC3A+FR3 + WL 4,U3DC3A+FR4 + + .word ANI_OFFSET,0,38,0 ;x,y,z + WL 7,U3DC3A+FR5 + + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_FLYKICK,57,21,37,44 ;mode,x,y,w,h + WL 3,U3DC3A+FR6 + .word ANI_ATTACK_OFF + WL 4,U3DC3A+FR6 + WL 4,U3DC3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL 4,U3DC3A+FR8 + + WL ANI_IFSTATUS,#got +;Missed him + WL ANI_CODE,CALL_MISSES + .word ANI_BOUNCE,3 + .word ANI_SOUND,bounce_l1 + WL 3,U3DC3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL 3,U3DC3A+FR8 + +#got + WL 3,U3DC3A+FR8 +#cont2 + WL 3,U3DC3A+FR8 + + .word ANI_XFLIP + .word ANI_OFFSET,5,0,0 ;x,y,z + + WL 3,U3GD2A+FR1 + WL 3,U3GD2A+FR2 + WL 3,U3GD2A+FR3 + WL 3,U3GD2A+FR4 + + + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + + WL 3,U3GD2A+FR5 + WL 3,U3GD2A+FR6 + WL 3,U3GD2A+FR7 + WL 1,U3GD2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD2A+FR8 + .word ANI_SAFE_TIME,15 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#getup_in_4 + WL 3,U3GD4A+FR5 + WL 3,U3GD4A+FR6 + WL 3,U3GD4A+FR7 + WL 1,U3GD4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD4A+FR8 + .word ANI_SAFE_TIME,15 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + .ref HIT_THE_MAT,SMALL_BOUNCE + .ref ck_dizzy,ckzpos + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR und_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,300 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,U3CP3B+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR und_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,U3FH3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,300 + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,U3FH3A+FR4 + .word ANI_OFFSET,23h,0,0 ;x,y,z + WL 3,U3CP3B+FR1 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,U3CP3B+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + .word ANI_END + +#***************************************************************************** +* + + SUBR und_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + + WL 2,U3GD2A+FR7 + WL 2,U3GD2A+FR5 + WL 2,U3GD2A+FR3 + WL ANI_SET_YVEL,39000h + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + WL 4,U3CP3B+FR1 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + +#***************************************************************************** + SUBR und_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + WLW ANI_SET_XVEL,4000h,AM_FACE_REL + + .word ANI_OFFSET,16,0,0 + WL 4,U3CR3B+FR1 + .word ANI_BENDROPE,5 + .word ANI_OFFSET,7,0,0 ;***** + WL 4,U3CR3B+FR2 + .word ANI_OFFSET,7,0,0 ;***** + WL 4,U3CR3B+FR3 + .word ANI_OFFSET,7,0,0 ;***** + WL 4,U3CR3B+FR4 + + .word ANI_OFFSET,7,0,0 ;***** + WL 4,U3CR3B+FR5 + + .word ANI_ZEROVELS + .word ANI_OFFSET,7,0,0 ;***** + WL 4,U3CR3B+FR6 + .word ANI_OFFSET,7,0,0 ;***** + WL 4,U3CR3B+FR7 + .word ANI_OFFSET,7,0,0 ;***** + WL 4,U3CR3B+FR8 + .word ANI_OFFSET,5,0,0 ;***** + WL 4,U3CR3B+FR9 + WL 4,U3CR3B+FR10 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,0,-3,0 + + ;now jump off... + WL 4,U4JD4A+FR1 ;D4FM4A+FR1 + WL 4,U4JD4A+FR2 + WL 3,U4JD4A+FR3 + + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,U4JD4A+FR4 + .word ANI_WAITHITGND + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 3,U4JD4A+FR6 + WL 3,U4JD4A+FR7 + WL 6,U4JD4A+FR8 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR und_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in + WL 4,U4JD4A+FR1 + WL 4,U4JD4A+FR2 + + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,1ch,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 4,U4JD4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WLW ANI_SET_XVEL,2000h,AM_FACE_REL + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + WL 4,U4JD4A+FR6 + WL 3,U4JD4A+FR7 + WL 3,U4JD4A+FR8 + + WL ANI_CODE,#set_z + + ;climb through + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR1 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR2 + .word ANI_BENDROPE,5 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR3 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR4 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR5 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR6 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR7 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR8 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR9 + .word ANI_ZEROVELS + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,7,-3,0 + WL 3,U3CR3B+FR10 + + WL ANI_CODE,clr_climb + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets +#set_z + +clr_climb + + clr a0 + move a0,*a13(CLIMBING_THRU) ;1=Climbing thru ropes flag + rets + +#***************************************************************************** + SUBR und_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + + WL 4,U3GD2A+FR7 + WL 4,U3GD2A+FR6 + WL 4,U3GD2A+FR5 + WL 4,U3GD2A+FR4 + WL 4,U3GD2A+FR3 + WL 4,U3GD2A+FR2 + WL 4,U3GD2A+FR1 + + ;roll over once + WLW ANI_SET_ZVEL,0a8000h,AM_ABS + + WL 3,U3CR3A+FR6 ;0 + WL 3,U3CR3A+FR5 ;1 + WL 3,U3CR3A+FR4 ;2 + WL 3,U3CR3A+FR3 ;3 + WL 3,U3CR3A+FR2 ;4 + WL 3,U3CP3B+FR1 ;5 + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + + ;climb through + .WORD ANI_XFLIP + .word ANI_OFFSET,0,-16,0 ;x,y,z + WL 3,U3DC3A+FR5 + .word ANI_OFFSET,0,-32,0 + WL 3,U3DC3A+FR4 + WL 3,U3DC3A+FR3 + .WORD ANI_XFLIP + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + + +#***************************************************************************** + + SUBR und_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .WORD ANI_XFLIP + WL 3,U3DC3A+FR3 + WL 3,U3DC3A+FR4 + .word ANI_OFFSET,0,32,0 + WL 3,U3DC3A+FR5 + .WORD ANI_XFLIP + .word ANI_OFFSET,0,24,-60 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,U3CP3B+FR1 ;0 + WL 3,U3CR3A+FR2 ;1 + WL 3,U3CR3A+FR3 ;2 + WL 3,U3CR3A+FR4 ;3 + WL 3,U3CR3A+FR5 ;4 + WL 3,U3CR3A+FR6 ;5 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + + WL ANI_CODE,clr_climb + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** + + SUBR und_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,U1TT5A+FR2 + WL 3,U1TT5A+FR3 +#dir4 + WL 4,U3GD2A+FR7 + WL 4,U3GD2A+FR6 + WL 4,U3GD2A+FR5 + WL 4,U3GD2A+FR4 + WL 4,U3GD2A+FR3 + WL 4,U3GD2A+FR2 + WL 4,U3GD2A+FR1 + + ;roll over once + WL ANI_CODE,#set_zvel2 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + WL 3,U3CR3A+FR8 ;2 + WL 3,U3CR3A+FR9 ;3 + WL 3,U3CR3A+FR10 ;4 + WL 3,U3CR3A+FR11 ;4 + WL 3,U3CR3A+FR12 ;4 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,U4JP4C+FR3 + WL 3,U4JP4C+FR2 + WL 3,U4JP4C+FR1 + + .word ANI_ZERO_XZVELS + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -5c000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR und_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,U4JP4C+FR1 + WL 3,U4JP4C+FR2 + WL 3,U4JP4C+FR3 + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,U3CR3A+FR11 ;0 + WL 3,U3CR3A+FR10 ;1 + WL 3,U3CR3A+FR9 ;2 + WL 3,U3CR3A+FR8 ;3 + + .word ANI_ZEROVELS + + ;get up + + WL ANI_CODE,clr_climb + WL ANI_CHANGEANIM,und_getup_anim + + +#set_zvel2 + movi 52000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/UNDSEQ3.ASM b/BACKUP/UNDSEQ3.ASM new file mode 100644 index 0000000..93e095c --- /dev/null +++ b/BACKUP/UNDSEQ3.ASM @@ -0,0 +1,2471 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "undseq3.asm" + .title "Undertaker animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "display.equ" + + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" + .include "miscimg.glo" + + .include "damage.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF CALL_ANI_AVERAGE_MOVE,CALL_SETUP + .REF CALL_SPECIAL_MOVE,CALL_DROP_KICK + .REF HIT_THE_MAT,SMALL_BOUNCE + .ref D4SK4A,und_getup_anim + .REF CALL_MISSES + .ref slaveanim_tbl + .ref und_faceup_getup_anim + .ref tgt_tbukl,tbukl_flip + + .ref hrt_slambounce_anim + .ref rzr_slambounce_anim + .ref und_slambounce_anim + .ref yok_slambounce_anim + .ref shn_slambounce_anim + .ref bam_slambounce_anim + .ref dnk_slambounce_anim + .ref lex_slambounce_anim + + .ref hrt_slambounce2_anim + .ref rzr_slambounce2_anim + .ref und_slambounce2_anim + .ref yok_slambounce2_anim + .ref shn_slambounce2_anim + .ref bam_slambounce2_anim + .ref dnk_slambounce2_anim + .ref lex_slambounce2_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR und_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,U4PM3C+FR1 + WL 4,U4PM3C+FR2 + WL 4,U4PM3C+FR3 + WL 4,U4PM3C+FR4 + WL 4,U4PM3C+FR5 + WL 4,U4PM3C+FR6 + WL 4,U4PM3C+FR7 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 5,U4PM3C+FR6 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,U3MS3Z+FR5 + WL 4,U3MS3Z+FR4 + WL 4,U3MS3Z+FR3 + WL 4,U3MS3Z+FR2 + WL 4,U3MS3Z+FR1 + WL 4,U4GH3C+FR10 + .word ANI_WAITHITGND + WL 4,U2ST2C+FR1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** + +; SUBR und_summon_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +; WL 4,U4SW4A+FR1 +; WL 4,U4SW4A+FR2 +; WL 4,U4SW4A+FR3 +; WL 4,U4SW4A+FR4 +; WL 4,U4SW4A+FR5 +; WL 20,U4SW4A+FR6 +; WL 4,U4SW4A+FR5 +; WL 4,U4SW4A+FR4 +; WL 4,U4SW4A+FR3 +; WL 4,U4SW4A+FR2 +; WL 4,U4SW4A+FR1 +; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + +#***************************************************************************** + +; SUBR und_summon2_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + +#***************************************************************************** +* +* TOMBSTONE SMASH ATTACK + + SUBR und_tombstone_smash_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,U3TBSM+FR1 + WL 1,U3TBSM+FR2 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR1,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR2,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR3,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR4,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR5,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .word ANI_SET_RPTCOUNT,5 ;repeat max 3 times +#rpt_loop + .word ANI_CLR_BUTCOUNT + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR6,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR3 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR7,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR4 + + .word ANI_STARTATTACK,AT_LEAPING,10 + + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 10,999,65,45,90000h,TGT_HEAD,80,102,2 + LEAPATOPP 10,999,65,45,90000h,TGT_HEAD,80,102,-10 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR8,-1 ;image, zoff (priority) + WL 4,U3TBSM+FR5 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR9,-1 ;image, zoff (priority) + WL 3,U3TBSM+FR6 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR10,-1 ;image, zoff (priority) + WL 3,U3TBSM+FR7 + + .word ANI_ATTACK_ON, AMODE_TOMB,54,95,50,31 ;mode,x,y,w,h + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR11,-1 ;image, zoff (priority) + WL 4,U3TBSM+FR8 + + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed_nancy_boy + WL ANI_IFBLOCKED,#missed_nancy_boy + +;got him + .ref und_tombbits + WLWWWW ANI_CREATEPROC,und_tombbits,00h,0,0,0 ;addr,ID,w1,w2,w3 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#last_hit + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#last_hit + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR15,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR11 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + WL 6,U3TBSM+FR11 + + WL ANI_GOTO,#rpt_loop + +#last_hit + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR15,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR11 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL 6,U3TBSM+FR11 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR5,1 ;image, zoff (priority) + WL 3,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR4,1 ;image, zoff (priority) + WL 3,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR3,1 ;image, zoff (priority) + WL 3,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR2,1 ;image, zoff (priority) + WL 3,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR1,1 ;image, zoff (priority) + WL 3,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,0,0 + WL 1,U3TBSM+FR2 + WL 3,U3TBSM+FR1 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed_nancy_boy + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR12,-1 ;image, zoff (priority) + WL 2,U3TBSM+FR9 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR16,-1 ;image, zoff (priority) + + WL 1,U3TBSM+FR9 + + .ref und_tombbits2 + WLWWWW ANI_CREATEPROC,und_tombbits2,00h,0,0,0 ;addr,ID,w1,w2,w3 + + WL 2,U3TBSM+FR9 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR17,-1 ;image, zoff (priority) + WL 10,U3TBSM+FR9 + + WLW ANI_ATTCHIMAGE,0,0 + WL 1,U3TBSM+FR9 + + WL 3,U3TBSM+FR10 + WL 3,U3TBSM+FR11 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gothim ;once + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR11,-1 ;image, zoff (priority) + WL 3,U3TBSM+FR6 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR12,-1 ;image, zoff (priority) + WL 16,U3TBSM+FR7 + WLW ANI_ATTCHIMAGE,0,0 + + WL 3,U3TBSM+FR8 + WL 3,U3TBSM+FR9 + WL 3,U3TBSM+FR10 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#TOMBSTONE + .long 0 ;0 + .long TOMBFORM01 ;1 + .long TOMBFORM02 ;2 + .long TOMBFORM03 ;3 + .long TOMBFORM04 ;4 + .long TOMBSTN01 ;5 + .long TOMBSTN02 ;6 + .long TOMBSTN03 ;7 + .long TOMBSTN04 ;8 + .long TOMBSTN05 ;9 + .long TOMBSTN06 ;10 + .long TOMBSTN07 ;11 + .long TOMBSTN08 ;12 + .long TOMBSTN09 ;13 + .long TOMBSTN010 ;14 + .long TOMBSTN011 ;15 + .long TOMBSTN012 ;16 + .long TOMBSTN013 ;17 + + +#***************************************************************************** +* +* SLIDING CHOKE ATTACK + + SUBR und_sliding_choke_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,U2LN2A+FR1 + + .ref UNDNEG_P + .ref UNDGRY_P + WLWW ANI_SHADOWTRAIL,UNDNEG_P,3,12 ;pal,rate,lifespan + + .word ANI_STARTATTACK,AT_PUPPET,5 + WL 1,U2LN2A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET,7,83,68,24 ;mode,x,y,w,h + + ;max ticks,velocity,max z,tgt,xoff,yoff,zoff + WWLWWWWW ANI_SLIDEATOPP,30,060000h,80,TGT_HEAD,69,99,0 + +;; ;ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +;; LEAPATOPP 10,80,70,50,90000h,TGT_HEAD,69,99,0 +;; LEAPATOPP 30,480,370,350,90000h,TGT_HEAD,69,99,0 +;; WL ANI_SET_YVEL,0 + + WWL ANI_WAITHITOPP,30,U2LN2A+FR2 +;;; .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim + +;missed - punish him! + + WL ANI_CODE,CALL_MISSES + .word ANI_FRICTION,4000h + WWL ANI_WAITHITOPP,10,U2LN2A+FR2 + WL ANI_IFSTATUS,#gothim ;2nd chance to hit + .word ANI_SHADOWTRAIL,0 ;off + WWL ANI_WAITHITOPP,25,U2LN2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#gothim ;2nd chance to hit + WL 25,U2LN2A+FR2 + WL 4,U2LN2A+FR1 + .word ANI_FACE,MOVE_RIGHT|MOVE_UP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#gothim + WL ANI_CODE,CALL_SETUP + .word ANI_SETPLYRMODE,MODE_CHOKEHOLD + .word ANI_ATTACK_OFF + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + + .word ANI_SETOPPMODE,MODE_GHOST ;can go through ground + .word ANI_OPP_GETUP,-140 ;(neg means always set) + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_FRICTION,4000h + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,18,U2LN2A+FR2,#puppet_tbl,0 + .word ANI_SHADOWTRAIL,0 ;off + WWLLW ANI_SUPERSLAVE2,3,U2LN2A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,U2LN2A+FR4,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,U2LN2A+FR5,#puppet_tbl,3 + + WWLLW ANI_SUPERSLAVE2,1,U2LN2A+FR6,#puppet_tbl,4 + + .word ANI_SETOPPFACING + + WL ANI_SLAVEANIM,#chokeanim_tbl + + .word ANI_FACE,MOVE_UP|MOVE_RIGHT + .word ANI_SETMODE,MODE_NORMAL|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_END + + + +#chokeanim_tbl + .long hrt_choking_anim ;bret + .long rzr_choking_anim ;razor + .long und_choking_anim ;taker + .long yok_choking_anim ;yoko + .long shn_choking_anim ;shawn + .long bam_choking_anim ;bam + .long dnk_choking_anim ;doink + .long und_choking_anim ;spare + .long lex_choking_anim ;lex + + + + +hrt_choking_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_CHOKING + WL 6, H4TN4X+FR4 + WL 6, H4TN4X+FR3 + WL 6, H4TN4X+FR4 + WL 12,H4TN4X+FR5 + WL 6, H4TN4X+FR4 + WL 12,H4TN4X+FR3 + WL 6, H4TN4X+FR4 + WL 6, H4TN4X+FR5 + WL 12,H4TN4X+FR4 + WL 18,H4TN4X+FR5 + .word ANI_REPEAT + +rzr_choking_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_CHOKING + WL 6, R3TN3X+FR4 + WL 6, R3TN3X+FR5 + WL 6, R3TN3X+FR4 + WL 12,R3TN3X+FR3 + WL 6, R3TN3X+FR4 + WL 12,R3TN3X+FR5 + WL 6, R3TN3X+FR4 + WL 12,R3TN3X+FR5 + WL 12,R3TN3X+FR4 + WL 18,R3TN3X+FR5 + .word ANI_REPEAT + +und_choking_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_CHOKING + WL 6, U3TN3B+FR5 + WL 5, U3TN3B+FR3 + WL 12,U3TN3B+FR2 + WL 5, U3TN3B+FR3 + WL 6, U3TN3B+FR5 + WL 16,U3TN3B+FR6 + .word ANI_REPEAT + +yok_choking_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_CHOKING + WL 6, Y3TN3Z+FR5 + WL 6, Y3TN3Z+FR4 + WL 6, Y3TN3Z+FR3 + WL 6, Y3TN3Z+FR2 + WL 12,Y3TN3Z+FR1 + WL 6, Y3TN3Z+FR2 + WL 6, Y3TN3Z+FR3 + WL 6, Y3TN3Z+FR4 + WL 14-6,Y3TN3Z+FR5 + .word ANI_REPEAT + +shn_choking_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_CHOKING + WL 6, S3TN3X+FR3 + WL 6, S3TN3X+FR2 + WL 6, S3TN3X+FR3 + WL 6, S3TN3X+FR4 + WL 6, S3TN3X+FR3 + WL 6, S3TN3X+FR2 + WL 6, S3TN3X+FR3 + WL 12,S3TN3X+FR4 + WL 6, S3TN3X+FR3 + WL 12,S3TN3X+FR2 + WL 6, S3TN3X+FR3 + WL 12,S3TN3X+FR4 + .word ANI_REPEAT + +bam_choking_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_CHOKING + WL 6, B4TN4X+FR4 + WL 6, B4TN4X+FR5 + WL 12,B4TN4X+FR4 + WL 12,B4TN4X+FR5 + WL 12,B4TN4X+FR4 + WL 12,B4TN4X+FR5 + WL 12,B4TN4X+FR4 + WL 18,B4TN4X+FR5 + .word ANI_REPEAT + +dnk_choking_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_CHOKING + WL 6, D3TN3A+FR2 + WL 6, D3TN3A+FR3 + WL 6, D3TN3A+FR4 + WL 6, D3TN3A+FR6 + .word ANI_REPEAT + +lex_choking_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_CHOKING + WL 6, L3TN3X+FR4 + WL 6, L3TN3X+FR3 + WL 6, L3TN3X+FR4 + WL 6, L3TN3X+FR5 + WL 6, L3TN3X+FR4 + WL 12,L3TN3X+FR3 + WL 6, L3TN3X+FR4 + WL 12,L3TN3X+FR5 + WL 12,L3TN3X+FR4 + WL 6, L3TN3X+FR5 + WL 6, L3TN3X+FR4 + WL 12,L3TN3X+FR5 + .word ANI_REPEAT + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4TN4X+FR1,74,-4,0 + LWWW H4TN4X+FR2,62,3,0 + LWWW H4TN4X+FR3,48,11,0 + LWWW H4TN4X+FR4,38,14,0 + LWWW H4TN4X+FR5,31,13,0 + .long 0 +#Razor + LWWW R3TN3X+FR1,62,-2,0 + LWWW R3TN3X+FR2,44,6,0 + LWWW R3TN3X+FR3,49,12,0 + LWWW R3TN3X+FR4,42,14,0 + LWWW R3TN3X+FR5,36,12,0 + .long 0 +#Taker + LWWW U3TN3B+FR2,33,6,0 + LWWW U3TN3B+FR3,35,10,0 + LWWW U3TN3B+FR4,57,16,0 + LWWW U3TN3B+FR5,49,19,0 + LWWW U3TN3B+FR6,45,18,0 + .long 0 +#Yokozuna + LWWW Y3TN3Z+FR1,44,-8,0 + LWWW Y3TN3Z+FR2,42,-1,0 + LWWW Y3TN3Z+FR3,43,10,0 + LWWW Y3TN3Z+FR4,45,15,0 + LWWW Y3TN3Z+FR5,41,15,0 + .long 0 +#Shawn + LWWW S3TN3X+FR1,64,-3,0 + LWWW S3TN3X+FR2,60,3,0 + LWWW S3TN3X+FR3,50,10,0 + LWWW S3TN3X+FR4,40,14,0 + LWWW S3TN3X+FR5,30,11,0 + .long 0 +#BamBam + LWWW B4TN4X+FR1,63,-4,0 + LWWW B4TN4X+FR2,49,4,0 + LWWW B4TN4X+FR3,46,9,0 + LWWW B4TN4X+FR4,40,13,0 + LWWW B4TN4X+FR5,34,13,0 + .long 0 +#Doink + LWWW D3TN3A+FR2,61,-8,0 + LWWW D3TN3A+FR3,54,0,0 + LWWW D3TN3A+FR4,39,8,0 + LWWW D3TN3A+FR5,30,13,0 + LWWW D3TN3A+FR6,32,11,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3TN3X+FR1,67,-4,0 + LWWW L3TN3X+FR2,64,2,0 + LWWW L3TN3X+FR3,57,10,0 + LWWW L3TN3X+FR4,45,13,0 + LWWW L3TN3X+FR5,38,12,0 + .long 0 + + +#***************************************************************************** +* +* SLAM DOWN FROM CHOKE HOLD (U_NKSL) + + SUBR und_chokeslam_anim + + WL ANI_SET_YVEL,48000h + +;Fix!! Make other name for this move + WL ANI_CODE,DO_PILE_MESS + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,slaveanim_tbl + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR1,#puppet_tbl,0 + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR2,#puppet_tbl,1 + WLW ANI_SET_ZVEL,-60000h,AM_ABS + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR3,#puppet_tbl,2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR6,#puppet_tbl,5 + + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_ATTACHZ,0,0,50 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,2,U2NS3X+FR7,#puppet_tbl,6 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,0,40000h,30000h ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_NECKSLAM + +;;; .word ANI_OPP_GETUP,150 ;30 + + WL 22,U2NS3X+FR7 + WL 4,U2NS3X+FR8 + WL 4,U2NS3X+FR9 + WL 4,U2NS3X+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +; WL 4,U4NS3B+FR11 +; this isn't loaded----------------- + + + + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 1 ;lex + +#slambounce_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + + + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3UC3X+FR1,37,18,1 + LWWW H3UC3X+FR2,20,27,1 + LWWW H3UC3X+FR3,13,23,1 + LWWW H3UC3X+FR4,9,33,1 + LWWW H3UC3X+FR5,18,40,1 + LWWW H3UC3X+FR5,28,11,1 + LWWW H2CP3A+FR8,19,-57,0 + .long 0 +#Razor + LWWW R3FD3B+FR1,35,18,1 + LWWW R3FD3B+FR2,25,22,1 + LWWW R3FD3B+FR3,23,23,1 + LWWW R3FD3B+FR4,16,31,1 + LWWW R3FD3B+FR5,17,29,1 + LWWW R3FD3B+FR5,28,-4,1 + LWWW R3GU2A+FR1,30,-52,0 + .long 0 +#Taker + LWWW U3FD3X+FR1,30,16,0 + LWWW U3FD3X+FR2,24,18,0 + LWWW U3FD3X+FR3,15,16,0 + LWWW U3FD3X+FR4,-2,32,0 + LWWW U3FD3X+FR5,4,50,0 + LWWW U3FD3X+FR5,13,17,0 + LWWW U3CP3B+FR1,13,-48,0 + .long 0 +#Yokozuna + LWWW Y3BO3C+FR4,19,18,0 + LWWW Y3FD3A+FR2,18,38,1 + LWWW Y3FD3A+FR3,21,28,1 + LWWW Y3FD3A+FR4,18,35,1 + LWWW Y3FD3A+FR5,22,38,1 + LWWW Y3FD3A+FR5,36,12,1 + LWWW Y3FD3A+FR7,32,-31,1 + .long 0 +#Shawn + LWWW S4LB3A+FR7,34,21,1 + LWWW S3UC3X+FR2,11,25,1 + LWWW S3UC3X+FR3,19,17,1 + LWWW S3UC3X+FR4,15,19,1 + LWWW S3UC3X+FR5,16,32,1 + LWWW S3UC3X+FR6,32,21,1 + LWWW S3OS3X+FR10,32,-49,0 + .long 0 +#BamBam + LWWW B4UC3B+FR1,22,21,1 + LWWW B4UC3B+FR2,22,20,1 + LWWW B4UC3B+FR3,22,10,1 + LWWW B4UC3B+FR4,18,20,1 + LWWW B4UC3B+FR5,20,33,1 + LWWW B4UC3B+FR5,31,3,1 + LWWW B3RL1A+FR1,30,-47,0 + .long 0 +#Doink + LWWW D3UC3A+FR1,30,16,1 + LWWW D3UC3A+FR3,13,37,1 + LWWW D3UC3A+FR4,14,29,1 + LWWW D3UC3A+FR5,9,33,1 + LWWW D3UC3A+FR6,15,20,1 + LWWW D3UC3A+FR7,23,14,1 + LWWW D3SA3A+FR9,17,-53,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3TN3X+FR5,38,12,1 + LWWW L3UC3X+FR1,17,19,1 + LWWW L3UC3X+FR2,24,15,1 + LWWW L3UC3X+FR3,23,6,1 + LWWW L3UC3X+FR4,19,39,1 + LWWW L3UC3X+FR5,23,59,1 + LWWW L3UC3X+FR5,36,19,1 + LWWW L3CP3X+FR1,34,-51,1 + .long 0 + + +#***************************************************************************** +* +* TOMBSTONE (FROM HEAD HOLD) (U_TOMB) + + SUBR und_tombstone_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + + + .word ANI_ATTACK_ON, AMODE_PUPPET,32,15,45,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,U3PG3A+FR7 + .word ANI_ATTACK_OFF + +; WL ANI_IFNOTSTATUS,#missed + +;Check to see if I have tried to pile drive Yokozuna! + + .word ANI_SOUND,82h ;Effort grunt + +;FIX!! Yoko check +; WL ANI_CODE,is_this_yoko +; WL ANI_IFSTATUS,#yoko_miss + +;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + + + + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WL ANI_SET_YVEL,28000h + +; WWL ANI_SETLONG,OBJ_GRAVITY,0c000h +; WL ANI_SET_YVEL,080000h + + WL ANI_SLAVEANIM,slaveanim_tbl + + WWLLW ANI_SUPERSLAVE2,5,U3PG3A+FR7,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,5,U3PG3A+FR8,#puppet_tbl,1 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR1,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR2,#puppet_tbl,3 + WWL ANI_SETLONG,OBJ_GRAVITY,09800h + WL ANI_SET_YVEL,0a0000h +;Float toward the center of ring! + .ref set_xdrift + WL ANI_CODE,set_xdrift + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR3,#puppet_tbl,4 + .word ANI_OFFSET,0,32,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR4,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,10,U3ZT3A+FR5,#puppet_tbl,6 + +;do message +;Fix!! Make other name for this move + .ref DO_PILE_MESS + WL ANI_CODE,DO_PILE_MESS + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + +;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER + + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR7,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR8,#puppet_tbl,8 + + WL ANI_CODE,CALL_SPECIAL_MOVE + + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#breakneck_tbl + WLLL ANI_SETOPPVELS,30000h,60000h,0 ;x,y,z vels + + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 12,U3ZT3A+FR8 + + WL 6,U3GD2A+FR5 + WL 6,U3GD2A+FR6 + WL 6,U3GD4A+FR7 + WL 6,U3GD4A+FR8 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#xflip_tbl + .word 1 ;bret + .word 1 ;razor + .word 1 ;taker + .word 1 ;yoko + .word 1 ;shawn + .word 1 ;bam + .word 1 ;doink + .word 1 ;spare + .word 1 ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3PP3X+FR1,21,-42,0 + LWWW H3PP3X+FR2,16,10,0 + LWWW H3PP3X+FR3,8,29,0 + LWWW H3PP3X+FR4,12,28,0 + LWWW H3PP3X+FR5,32,47,0 + LWWW H3PP3X+FR6,36,49,0 + LWWW H3PP3X+FR6,41,49,0 + LWWW H3PP3X+FR7,51,14,0 + LWWW H3PP3X+FR8,71,-3,0 + .long 0 +#Razor + LWWW R3GP3Z+FR1,20,-41,0 + LWWW R3GP3Z+FR2,24,-19,0 + LWWW R3GP3Z+FR3,16,14,0 + LWWW R3GP3Z+FR4,31,30,0 + LWWW R3GP3Z+FR5,41,45,0 + LWWW R3GP3Z+FR6,49,47,0 + LWWW R3GP3Z+FR6,54,47,0 + LWWW R3GP3Z+FR7,51,32,0 + LWWW R3GP3Z+FR8,70,-6,0 + .long 0 +#Taker + LWWW U3PP3X+FR1,19,-37,1 + LWWW U3PP3X+FR2,25,-16,1 + LWWW U3PP3X+FR3,11,-14,1 + LWWW U3PP3X+FR4,12,-3,1 + LWWW U3PP3X+FR5,35,33,1 + LWWW U3PP3X+FR6,44,56,1 + LWWW U3PP3X+FR6,49,56,1 + LWWW U3GP3X+FR1,54,8,1 + LWWW U3GP3X+FR2,81,-12,1 + .long 0 +#Yokozuna + LWWW Y3PP3Q+FR1,17,-37,0 + LWWW Y3PP3Q+FR2,22,-21,0 + LWWW Y3PP3Q+FR3,20,-17,0 + LWWW Y3PP3Q+FR4,29,-14,0 + LWWW Y3PP3Q+FR6,33,11,0 + LWWW Y3PP3Q+FR7,39,18,0 + LWWW Y3PP3Q+FR7,44,18,0 + LWWW Y3FD3N+FR2,50,13,0 + LWWW Y3FD3N+FR3,72,16,0 + .long 0 +#Shawn + LWWW S3GP3X+FR1,25,-41,0 + LWWW S3GP3X+FR2,24,-18,0 + LWWW S3GP3X+FR3,20,-5,0 + LWWW S3GP3X+FR4,26,23,0 + LWWW S3GP3X+FR5,38,35,0 + LWWW S3OS3X+FR8,50,29,1 + LWWW S3OS3X+FR8,55,29,1 + LWWW S3FD3X+FR2,60,21,0 + LWWW S3GP3X+FR6,79,-3,0 + .long 0 +#BamBam + LWWW B3PP3Q+FR1,19,-44,0 + LWWW B3PP3Q+FR2,25,-12,0 + LWWW B3PP3Q+FR3,24,5,0 + LWWW B3PP3Q+FR4,31,21,0 + LWWW B3PP3Q+FR5,43,39,0 + LWWW B3PP3Q+FR6,41,47,0 + LWWW B3PP3Q+FR6,46,47,0 + LWWW B3PP3Q+FR7,54,22,0 + LWWW B3FD3C+FR1,69,2,0 + .long 0 +#Doink + LWWW D3PD3Z+FR1,20,-49,1 + LWWW D3PD3Z+FR2,25,-17,1 + LWWW D3PD3Z+FR3,18,2,1 + LWWW D3PD3Z+FR4,20,31,1 + LWWW D3PD3Z+FR5,32,44,1 + LWWW D3PD3Z+FR6,51,36,1 + LWWW D3PD3Z+FR6,56,36,1 + LWWW D3PD3Z+FR8,60,4,1 + LWWW D3PD3Z+FR9,85,-12,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GP3Z+FR1,17,-42,0 + LWWW L3GP3Z+FR2,26,-20,0 + LWWW L3GP3Z+FR3,22,-13,0 + LWWW L3GP3Z+FR4,24,3,0 + LWWW L3GP3Z+FR5,38,18,0 + LWWW L3GP3Z+FR6,47,34,0 + LWWW L3GP3Z+FR6,52,34,0 + LWWW L3FH3A+FR6,51,17,0 + LWWW L3FD3B+FR1,75,-4,0 + .long 0 + + + .ref hrt_break_neck2_anim + .ref rzr_break_neck2_anim + .ref yok_break_neck2_anim + .ref shn_break_neck2_anim + .ref bam_break_neck2_anim + .ref dnk_break_neck2_anim + .ref lex_break_neck2_anim + +#breakneck_tbl + .long hrt_break_neck2_anim ;0 + .long rzr_break_neck2_anim ;1 + .long und_break_neck2_anim ;2 + .long yok_break_neck2_anim ;3 + .long shn_break_neck2_anim ;4 + .long bam_break_neck2_anim ;5 + .long dnk_break_neck2_anim ;6 + .long lex_break_neck2_anim ;7 + .long lex_break_neck2_anim ;8 + + +#***************************************************************************** +* +* NECKBREAKER (from head hold) + + SUBR und_neckbreaker2_anim +;Standing no vel + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_ATTACK_ON, AMODE_PUPPET,0,15,45,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,22,U4GH3C+FR11 + WL 4,U4GH3C+FR11 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + + .word ANI_OFFSET,15,0,0 ;x,y,z + WL ANI_GOTO,#gothim + + SUBR und_neckbreaker3_anim +;Sliding neck breaker + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLWW ANI_SHADOWTRAIL,UNDNEG_P,3,12 ;pal,rate,lifespan + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,70,70,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + .word ANI_ATTACK_ON, AMODE_PUPPET,0,15,45,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,12,U4GH3C+FR11 + .word ANI_ZERO_XZVELS + WL 4,U4GH3C+FR11 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + + .word ANI_OFFSET,15,0,0 ;x,y,z + WL ANI_GOTO,#gothim + + SUBR und_neckbreaker_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + +;Do this to setup attach_proc +;Also allow misses! + + .word ANI_OFFSET,15,0,0 ;x,y,z + .word ANI_ATTACK_ON, AMODE_PUPPET,32,15,45,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,U3DD3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + +;Check to see if I have tried to pile drive Yokozuna! +#gothim + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST ;can go through ground + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + + WL ANI_SLAVEANIM,slaveanim_tbl + + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR5,#puppet_tbl,4 + + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,80000h + +;do message +;Fix!! make up other name for move... + WL ANI_CODE,DO_PILE_MESS + + WWLLW ANI_SUPERSLAVE2,6,U3DD3A+FR6,#puppet_tbl,5 + .word ANI_OFFSET,-5,45,0 ;x,y,z + + WWLLW ANI_SUPERSLAVE2,1,U3DD3A+FR7,#puppet_tbl,6 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + +;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_NECKBRKR + WL ANI_CODE,CALL_SPECIAL_MOVE + + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR9,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR10,#puppet_tbl,8 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,0,60000h,0 ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + +; WL 8,U3DD3A+FR10 + WL 8,U3SU3A+FR2 + +;; .word ANI_SINGLESTEP + +; .word ANI_FACE,MOVE_RIGHT|MOVE_UP +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + + WL ANI_CODE,#zero_butn + + .word ANI_SHADOWTRAIL,0 ;off + + WL ANI_CHANGEANIM,und_faceup_getup_anim + +#missed +; WL 3,U3DD3A+FR1 +; WL 3,U3DD3A+FR2 +; WL 3,U3DD3A+FR3 +; WL 3,U3DD3A+FR4 +; WL 8,U3DD3A+FR5 +; WL 3,U3DD3A+FR4 +; WL 3,U3DD3A+FR3 +; WL 3,U3DD3A+FR2 + + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CODE,#zero_butn + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#zero_butn +;Force player to start holding his button down starting at the end +;of the current buzz sequence. + + move *a13(PLYRNUM),a0 + X16 a0 + .ref punch_dtime1 + addi punch_dtime1,a0 + clr a14 + move a14,*a0 + rets + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 1 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 1 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce2_anim ;bret + .long rzr_slambounce2_anim ;razor + .long und_slambounce2_anim ;taker + .long yok_slambounce2_anim ;yoko + .long shn_slambounce2_anim ;shawn + .long bam_slambounce2_anim ;bam + .long dnk_slambounce2_anim ;doink + .long und_slambounce2_anim ;spare + .long lex_slambounce2_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3DD3B+FR1,30,-37,1 + LWWW H3DD3B+FR2,40,-34,1 + LWWW H3DD3B+FR3,44,-21,1 + LWWW H3DD3B+FR4,51,-11,1 + LWWW H3UC3X+FR2,32,7,1 + LWWW H3UC3X+FR3,53,14,1 + LWWW H3UC3X+FR4,75,17,1 + LWWW H2CP3A+FR1,89,-12,0 + LWWW H3UC3Z+FR10,74,-2,1 + .long 0 +#Razor + LWWW R3DD3C+FR1,31,-36,1 + LWWW R3DD3C+FR2,37,-25,1 + LWWW R3DD3C+FR3,52,-13,1 + LWWW R3DD3C+FR6,60,-6,1 + LWWW R3DD3C+FR7,37,-7,1 + LWWW R3FD3B+FR4,62,21,1 + LWWW R3FD3B+FR5,77,29,1 + LWWW R3AM3D+FR2,90,-14,0 + LWWW R3AM3X+FR1,87,-16,1 + .long 0 +#Taker + LWWW U3DD3B+FR1,35,-35,1 + LWWW U3DD3B+FR2,37,-15,1 + LWWW U3DD3B+FR3,37,-9,1 + LWWW U3DD3B+FR4,46,-8,1 + LWWW U3DD3B+FR6,38,-4,1 + LWWW U3DD3B+FR7,61,3,1 + LWWW U3FD3X+FR4,60,18,0 + LWWW U3CP3B+FR3,77,0,0 + LWWW U3DD3X+FR9,79,-6,1 + .long 0 +#Yokozuna + LWWW Y4AM4A+FR4,44,-33,0 + LWWW Y4AM4A+FR3,43,-27,0 + LWWW Y3FD3B+FR2,44,-16,1 + LWWW Y3FD3B+FR3,47,-8,1 + LWWW Y3FD3B+FR4,39,15,1 + LWWW Y3FD3B+FR5,69,33,1 + LWWW Y3FD3A+FR4,78,34,1 + LWWW Y3CP3B+FR1,79,-12,0 + LWWW Y3FD3Z+FR7,80,5,1 + .long 0 +#Shawn + LWWW S3DD3B+FR1,35,-35,1 + LWWW S3DD3B+FR2,37,-23,1 + LWWW S3DD3B+FR3,39,-15,1 + LWWW S3DD3B+FR5,52,-10,1 + LWWW S3UC3X+FR2,32,4,1 + LWWW S3UC3X+FR4,66,9,1 + LWWW S3UC3X+FR5,84,28,1 + LWWW S3CP3B+FR2,87,-11,0 + LWWW S3UC3Z+FR8,90,0,1 + .long 0 +#BamBam + LWWW B3DD3D+FR1,41,-38,1 + LWWW B3DD3D+FR2,42,-23,1 + LWWW B3DD3D+FR3,44,0,1 + LWWW B3DD3D+FR4,51,17,1 + LWWW B3DD3D+FR5,41,31,1 + LWWW B3DD3D+FR6,67,39,1 + LWWW B4UC3B+FR3,82,12,1 + LWWW B3CP3B+FR2,90,19,0 + LWWW B4UC3Z+FR8,88,0,1 + .long 0 +#Doink + LWWW D3DD3C+FR1,38,-37,1 + LWWW D3DD3C+FR2,40,-26,1 + LWWW D3DD3C+FR3,37,1,1 + LWWW D3DD3C+FR4,42,15,1 + LWWW D3DD3C+FR5,31,23,1 + LWWW D3UC3A+FR3,56,21,1 + LWWW D3UC3A+FR5,75,21,1 + LWWW D3SA3A+FR4,78,-16,0 + LWWW D3SA3X+FR2,84,-18,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3DD3A+FR1,29,-40,1 + LWWW L3DD3A+FR2,31,-22,1 + LWWW L3DD3A+FR3,29,-21,1 + LWWW L3UC3X+FR2,49,-16,1 + LWWW L3UC3X+FR3,34,-9,1 + LWWW L3CP3X+FR2,64,-1,0 + LWWW L3CP3X+FR3,87,14,0 + LWWW L3CP3X+FR6,82,16,0 + LWWW L3UC3Z+FR10,74,1,1 + .long 0 + + +#***************************************************************************** +* +* SNAP MIRROR (whatever) + + SUBR und_2_snapmirror2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 1,U1TT5A+FR3 + WL 1,U1TT5A+FR4 + + SUBR und_4_snapmirror2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,60,60,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,U4FG3A+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET,33,36,44,48 ;mode,x,y,w,h + WL 2,U4FG3A+FR2 + WWL ANI_WAITHITOPP,8,U4FG3A+FR3 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + + WL ANI_GOTO,#cont + + + SUBR und_2_snapmirror_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 1,U1TT5A+FR3 + WL 1,U1TT5A+FR4 + + SUBR und_4_snapmirror_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,U4FG3A+FR1 + WL 2,U4FG3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET,12,59,73,59 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,3,U4FG3A+FR3 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,3,U4FG3A+FR3 + .word ANI_ATTACK_OFF +#cont + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +;got him + .ref DO_SNAP_MESS + WL ANI_CODE,DO_SNAP_MESS + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_OFFSET,0,0,-2 ;x,y,z + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WL ANI_CODE,SMALL_BOUNCE + WWLLW ANI_SUPERSLAVE2,10,U4FT3A+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,6,U4FT3A+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4+0,U4FT3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4+0,U4FT3A+FR6,#puppet_tbl,3 + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,4+0,U4FT3A+FR7,#puppet_tbl,4 + + ;impact + .word ANI_SOUND,0C1h ;plywood crash #3 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_DAMAGEOPP,D_HIPTOSS + + + .word ANI_OPP_GETUP,300 + + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + .word ANI_CLROPPMODE,MODE_GHOST + WLLL ANI_SETOPPVELS,30000h,40000h,0 ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + + WL 5,U4FT3A+FR8 + .word ANI_XFLIP + WL 5,U4FT3A+FR9 + WL 5,U4FT3A+FR10 + WL 5,U4FT3A+FR11 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb +#missed + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + WL ANI_CODE,CALL_MISSES + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + WL 16,U4FG3A+FR3 + WL 4,U4FG3A+FR2 + WL 4,U4FG3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 1 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AM3A+FR1,63,-7,1 + LWWW H3FR3A+FR2,32,34,1 + LWWW H3FR3A+FR4,-32,41,1 + LWWW H3FR3A+FR5,-59,6,1 + LWWW H2CP3A+FR8,-147,-56,0 + .long 0 +#Razor + LWWW R3TD3A+FR1,52,-1,1 + LWWW R3TD3A+FR4,33,31,1 + LWWW R3TD3A+FR6,-17,39,1 + LWWW R3TD3A+FR8,-51,19,1 + LWWW R3GU2A+FR1,-143,-53,0 + .long 0 +#Taker + LWWW U4AM4C+FR4,55,-9,1 + LWWW U3FH3A+FR2,32,38,0 + LWWW U3FH3A+FR4,-34,49,0 + LWWW U3FH3A+FR5,-59,28,0 + LWWW U3CP3B+FR1,-152,-49,0 + .long 0 +#Yokozuna + LWWW Y3MS3Z+FR2,63,0,1 + LWWW Y3FL3W+FR4,39,53,1 + LWWW Y3FL3W+FR6,-36,61,1 + LWWW Y3FL3W+FR7,-58,22,1 + LWWW Y3FD3A+FR7,-117,-32,1 + .long 0 +#Shawn + LWWW S3OS3X+FR4,28,-4,0 + LWWW S3OS3X+FR6,23,66,0 + LWWW S3OS3X+FR8,-12,71,0 + LWWW S3OS3X+FR9,-58,34,0 + LWWW S3OS3X+FR10,-115,-44,0 + .long 0 +#BamBam + LWWW B4TD3B+FR3,41,-17,1 + LWWW B4TD3B+FR5,44,54,1 + LWWW B4TD3B+FR7,-29,67,1 + LWWW B4TD3B+FR8,-51,26,1 + LWWW B4TD3B+FR9,-111,-43,1 + .long 0 +#Doink + LWWW D3PM4C+FR2,45,-4,1 + LWWW D3OS3A+FR3,32,27,1 + LWWW D3OS3A+FR6,-21,42,1 + LWWW D3FD3E+FR2,-62,-8,1 + LWWW D3SA3A+FR2,-140,-53,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR2,66,-10,1 + LWWW L3FH3A+FR3,41,44,1 + LWWW L3FH3A+FR5,-22,34,1 + LWWW L3FH3A+FR6,-45,14,1 + LWWW L3CP3X+FR1,-146,-47,0 + .long 0 + + +#***************************************************************************** +* +* END OF NECK BROKEN SEQ. + + SUBR und_neckbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 1,U3CR3A+FR1 + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR und_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 5,U2CT2C+FR5 + WL 5,U2CT2C+FR6 + WL 9,U2CT2C+FR7 + WL 4,U2CT2C+FR8 + + WL ANI_CODE,tgt_tbukl + .word ANI_LEAPATPOS,25,200,10,6,0 ;#ticks,dist,xoff,yoff,zoff + + WL 25,U2CT2C+FR9 + + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SHAKECORNER +; WL 8,U2CT2C+FR10 + +#lp + WL 5,U4SB4A+FR8 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR7 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR6 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR5 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR4 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR3 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR2 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR1 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR2 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR3 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR4 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR5 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR6 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR7 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#lp + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR und_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SHAKECORNER + + WL 4,U2CT2C+FR8 + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WLW ANI_SET_ZVEL,-10000h,AM_FACE_REL + WL ANI_SET_YVEL,20000h + + WL 1,U2CT2C+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,U2CT2C+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + .ref set_position,make_white,make_norm,start_smoke + .ref am_I_dizzy + .ref und_dizzy_anim + .ref set_skeleton_pal,set_my_pal + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR und_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,U4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,U4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,U4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,U4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,U4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,U4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,U4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,U4ST4D+FR5 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref und_fall_back_anim + + WL ANI_CHANGEANIM,und_fall_back_anim + .word ANI_END + +#nodead + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 1e1eh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + + +#***************************************************************************** + + SUBR und_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,U4BF3Z+FR5 + WL 4,U4BF3Z+FR7 + WL 4,U4BF3Z+FR9 + WL 4,U4BF3Z+FR10 + WL 4,U4BF3Z+FR1 + WL 4,U4BF3Z+FR2 + WL 4,U4BF3Z+FR3 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR und_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,U4BF3A+FR2 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,U2AH3A+FR3 + WL 3,U2AH3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U2AH3A+FR5 + WL 3,U2AH3A+FR6 + WL 3,U2AH3A+FR7 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 2,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR und_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,U4BF3Z+FR3 + WL 3,U1TT5A+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR und_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 3,U3GP3X+FR3 + .word ANI_OFFSET,5,0,0 + WL 4,U3GP3X+FR4 + .word ANI_OFFSET,8,0,0 + WL 4,U3GP3X+FR5 + .word ANI_OFFSET,27,0,0 + WL 4,U3GP3X+FR6 + + .word ANI_XFLIP + + .word ANI_OFFSET,22,0,0 ;x,y,z + + WL 10,U3CR3A+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + SUBR und_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + .ref ckzpos + WL ANI_CODE,ckzpos + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP + WL 5,U3GP3X+FR3 + WL 5,U3GP3X+FR4 + WL 5,U3GP3X+FR5 + WL 5,U3GP3X+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE +; .word ANI_SOUND,bounce_l1 + .word ANI_ZEROVELS + .word ANI_XFLIP + .word ANI_OFFSET,-22,0,0 ;x,y,z + + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 10,U3CR3A+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + SUBR und_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,U4POGO+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + +; .word ANI_XFLIP + WL 4,U3GP3X+FR1 + WL 4,U3GP3X+FR2 + WL 4,U3GP3X+FR3 + WL 4,U3GP3X+FR4 + WL 4,U3GP3X+FR5 + WL 4,U3GP3X+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_XFLIP + .word ANI_OFFSET,-22,0,0 ;x,y,z + + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 10,U3CR3A+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + +****************************************************************************** + + SUBR und_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Too many turns here! +;Fix!! + WL 2,U1TT5A+FR2 + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR4 + + SUBR und_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_RAWSOUND,2055 ;big cheer #1 +; .word ANI_CHEER,3 + + WL 4,U4GH3C+FR1 + + LEAPATOPP 8,999,80,80,30000h,TGT_HEAD,0,6,0 + WL 4,U4GH3C+FR2 + WL 4,U4GH3C+FR3 + .word ANI_ZERO_XZVELS + WL 4,U4GH3C+FR4 + WL 4,U4GH3C+FR5 + + .word ANI_ATTACK_ON, AMODE_PUPPET,19,5,22,25 ;mode,x,y,w,h + WL 4,U4GH3C+FR6 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WL ANI_CODE,CALL_SETUP +; .word ANI_DAMAGEOPP,10 + + WWLLW ANI_SUPERSLAVE2,4,U4GH3C+FR7,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,U4GH3C+FR8,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,U4GH3C+FR9,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U4GH3C+FR10,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,U4GH3C+FR11,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,U4GH3C+FR11,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 4,U4GH3C+FR11 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,U4GH3C+FR6 + WL 4,U4GH3C+FR5 + WL 4,U4GH3C+FR4 + WL 4,U4GH3C+FR3 + WL 4,U4GH3C+FR2 + WL 4,U4GH3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + .ref rzr_3_head_held_anim + .ref bam_3_head_held_anim +; .ref und_3_head_held_anim + .ref yok_3_head_held_anim + .ref hrt_3_head_held_anim + .ref lex_3_head_held_anim + .ref shn_3_head_held_anim + .ref dnk_3_head_held_anim + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H3GU4A,H3DU3A,H3BF3A + LWWW H3GU4A+FR1,36,-43,0 + LWWW H3GU4A+FR3,45,-56,0 + LWWW H3DU3A+FR3,43,-51,1 + LWWW H3DU3A+FR4,50,-44,1 + LWWW H3DU3A+FR5,46,-42,1 + LWWW H3BF3A+FR1,44,-43,0 + .long 0 +#Razor + .ref R3GU4A,R3DU3B,R3BF3A + LWWW R3GU4A+FR2,45,-45,1 + LWWW R3GU4A+FR3,47,-53,0 + LWWW R3GU4A+FR5,47,-57,0 + LWWW R3DU3B+FR2,49,-56,1 + LWWW R3DU3B+FR4,47,-41,1 + LWWW R3BF3A+FR4,54,-43,0 + .long 0 +#Taker + .ref U3DU3B,U4BF3Z + LWWW U3DU3B+FR2,32,-40,1 + LWWW U3DU3B+FR5,43,-50,1 + LWWW U3DU3B+FR6,40,-56,1 + LWWW U3DU3B+FR8,45,-45,1 + LWWW U3DU3B+FR10,54,-39,1 + LWWW U4BF3Z+FR5,56,-22,0 + .long 0 +#Yokozuna + .ref Y3GU2A,Y3BF3A + LWWW Y3GU2A+FR1,33,-39,0 + LWWW Y3GU2A+FR3,54,-48,0 + LWWW Y3GU2A+FR6,32,-55,0 + LWWW Y3GU2A+FR9,45,-52,0 + LWWW Y3GU2A+FR12,47,-38,0 + LWWW Y3BF3A+FR1,54,-31,0 + .long 0 +#Shawn + .ref S3GU4A,S3DU3A,S3BF3A + LWWW S3GU4A+FR1,39,-42,1 + LWWW S3GU4A+FR2,40,-49,0 + LWWW S3GU4A+FR4,48,-56,0 + LWWW S3GU4A+FR5,47,-49,0 + LWWW S3DU3A+FR2,53,-47,1 + LWWW S3BF3A+FR1,45,-43,0 + .long 0 +#BamBam + .ref B3GU4A,B3DU3A,B3BF3C + LWWW B3GU4A+FR3,47,-30,0 + LWWW B3GU4A+FR4,49,-47,0 + LWWW B3GU4A+FR6,45,-49,0 + LWWW B3GU4A+FR7,44,-53,0 + LWWW B3DU3A+FR2,51,-39,1 + LWWW B3BF3C+FR5,65,-36,0 + .long 0 +#Doink + .ref D3DU3A,D3HT3Z,D3BF3A + LWWW D3DU3A+FR2,42,-39,1 + LWWW D3DU3A+FR3,51,-52,1 + LWWW D3DU3A+FR5,44,-56,1 + LWWW D3DU3A+FR8,42,-56,1 + LWWW D3HT3Z+FR1,49,-43,1 + LWWW D3BF3A+FR2,51,-42,0 + .long 0 +#Adam + .long 0 +#Lex + .ref L3DU3A,L3BF3B + LWWW L3DU3A+FR2,43,-41,1 + LWWW L3DU3A+FR4,24,-45,1 + LWWW L3DU3A+FR6,31,-57,1 + LWWW L3DU3A+FR7,40,-41,1 + LWWW L3DU3A+FR9,53,-42,1 + LWWW L3BF3B+FR2,61,-46,0 + .long 0 + +#****************************************************************************** + + SUBR und_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,U4CO4B+FR1 + WL 4,U4CO4B+FR2 + WL 15,U4CO4B+FR3 + WL 4,U4CO4B+FR4 + WL 4,U4CO4B+FR5 + WL 4,U4CO4B+FR6 + WL 4,U4CO4B+FR7 + WL 4,U4CO4B+FR8 + WL 4,U4CO4B+FR7 + WL 4,U4CO4B+FR6 + WL 4,U4CO4B+FR5 + WL 4,U4CO4B+FR4 + WL 15,U4CO4B+FR3 + WL 4,U4CO4B+FR4 + WL 4,U4CO4B+FR5 + WL 4,U4CO4B+FR6 + WL 4,U4CO4B+FR7 + WL 4,U4CO4B+FR8 + WL 4,U4CO4B+FR7 + WL 4,U4CO4B+FR6 + WL 4,U4CO4B+FR5 + WL 4,U4CO4B+FR4 + WL 4,U4CO4B+FR3 + WL 4,U4CO4B+FR2 + WL 4,U4CO4B+FR1 + + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .ref und_stand4_anim + WL ANI_CHANGEANIM,und_stand4_anim + .word ANI_END + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR und_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 2,U3CF3Q+FR1 + WL ANI_SET_YVEL,80000h + WL 4,U3CF3Q+FR2 + WL 4,U3CF3Q+FR3 + WL 4,U3CF3Q+FR4 + .word ANI_WAITHITGND + .word ANI_END + + +* Head slams into mat +;From head slam + + SUBR und_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 2,U3CF3Q+FR1 + WL ANI_SET_YVEL,40000h + WL 4,U3CF3Q+FR2 + WL 4,U3CF3Q+FR3 + WL 4,U3CF3Q+FR4 + .word ANI_WAITHITGND + .ref SMALL_BOUNCE + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 2,U3CF3Q+FR1 + WL 4,U3CF3Q+FR2 + WL 4,U3CF3Q+FR3 + WL 4,U3CF3Q+FR4 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 2,U3CF3Q+FR1 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,und_getup_anim + .word ANI_END + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR und_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,U3BR3Z+FR3 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 25,U3BR3Z+FR3 + +; WL 4,U3BR3Z+FR4 + + .word ANI_XFLIP + WL 4,U3CP3B+FR2 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + WL 2,U3CP3B+FR2 + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 2,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + WL 4,U3CP3B+FR1 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 3,U3CP3B+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + .word ANI_END + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR und_3_head_hold2_anim +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + WL 3,U4GH3A+FR1 + WL 3,U4GH3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET3,40,80,37,23 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,7,U4GH3A+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_GOTO,#gothim + + SUBR und_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_LEAPING,6 + WL 3,U4GH3A+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 9,999,60,40,90000h,TGT_HEAD,56,93,8 + WL 3,U4GH3A+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,40,80,37,23 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,6,U4GH3A+FR3 + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missed + +#gothim +;got him + .word ANI_SETWORD,USR_VAR2,0 + WL ANI_CODE,CALL_SETUP + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,U4GH3A+FR3,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,U4GH3A+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,U4GH3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U4GH3C+FR11,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 4,U4GH3C+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 25,U4GH3A+FR3 + WL 3,U4GH3A+FR2 + WL 3,U4GH3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H2AH3A,H3HB3A,H3BF3A + .ref R2AH2D,R3HB3A,R3BF3A +; .ref U4BF3A,U4BF3Z,U4AM4C + .ref Y3BF3A,Y3LB3A + .ref S4AH3D,S4BF3A + .ref B4BF3A,B3HB3A,B3BF3C + .ref D3AK3A,D3BF3A + .ref L2AH2A,L3BF3A,L3BF3B,L4AH4B +#Bret + LWWW H2AH3A+FR1,69,15,0 + LWWW H3HB3A+FR3,62,-1,0 + LWWW H3HB3A+FR2,56,-17,0 + LWWW H3HB3A+FR1,42,-43,0 + .long 0 +#Razor + LWWW R3HB3A+FR3,76,-6,0 + LWWW R3HB3A+FR3,73,-2,0 + LWWW R3HB3A+FR2,73,-28,0 + LWWW R3BF3A+FR1,52,-43,0 + .long 0 +#Taker + LWWW U4AM4C+FR2,66,3,0 + LWWW U4BF3A+FR2,64,9,0 + LWWW U4BF3A+FR3,30,-17,0 + LWWW U4BF3Z+FR3,53,-31,0 + .long 0 +#Yokozuna + LWWW Y3LB3A+FR2,78,2,0 + LWWW Y3LB3A+FR2,76,6,0 + LWWW Y3LB3A+FR9,65,-28,0 + LWWW Y3BF3A+FR1,58,-31,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,64,1,0 + LWWW S4AH3D+FR5,58,5,0 + LWWW S4BF3A+FR2,72,-19,0 + LWWW S4BF3A+FR3,40,-31,0 + .long 0 +#BamBam + LWWW B4BF3A+FR1,78,3,0 + LWWW B4BF3A+FR1,79,7,0 + LWWW B3HB3A+FR2,70,-33,0 + LWWW B3BF3C+FR5,59,-36,0 + .long 0 +#Doink + LWWW D3AK3A+FR3,55,4,0 + LWWW D3AK3A+FR3,56,8,0 + LWWW D3AK3A+FR2,72,-19,0 + LWWW D3BF3A+FR1,50,-42,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,61,-2,0 + LWWW L3BF3A+FR1,73,2,1 + LWWW L3BF3A+FR2,72,-22,1 + LWWW L3BF3B+FR5,58,-38,0 + .long 0 + + .ref rzr_3_head_held_anim + .ref bam_3_head_held_anim +; .ref und_3_head_held_anim + .ref yok_3_head_held_anim + .ref hrt_3_head_held_anim + .ref lex_3_head_held_anim + .ref shn_3_head_held_anim + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/UNDSEQ4.ASM b/BACKUP/UNDSEQ4.ASM new file mode 100644 index 0000000..4c3a185 --- /dev/null +++ b/BACKUP/UNDSEQ4.ASM @@ -0,0 +1,319 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 11/28/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "undseq4.asm" + .title "Undertaker animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "takerimg.h" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF HIT_THE_MAT,SMALL_BOUNCE + .REF CALL_MISSES + .ref am_I_dizzy + .ref am_I_dead + .ref ckzpos + .ref ck_dizzy + .ref start_run_anim + .ref und_getup_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR und_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + WL 1,U3CP3B+FR2 + WL ANI_SET_YVEL,040000h + .ref ckzpos + WL ANI_CODE,ckzpos + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL ANI_CODE,HIT_THE_MAT + + WL 2,U3CP3B+FR7 + + .word ANI_OFFSET,2,0,0 ;x,y,z + WL 10,U3CP3B+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + SUBR und_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 1,U3DD3X+FR9 + WL ANI_CODE,ckzpos + WL 3,U3DD3X+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 3,U3CP3B+FR7 + + .word ANI_OFFSET,2,0,0 ;x,y,z + WL 10,U3CP3B+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** + + SUBR und_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 5,U3FD3X+FR2 + .word ANI_OFFSET,0,49,0 ;x,y,z + WL 5,U3FD3X+FR3 + WL 5,U3FD3X+FR4 + WL 5,U3FD3X+FR5 + WL 1,U3FD3X+FR6 + + .word ANI_WAITHITGND +;;; .word ANI_ZERO_XZVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,U3GP3X+FR1 + WL 3,U3GP3X+FR2 + WL 3,U3GP3X+FR3 + WL 3,U3GP3X+FR4 + WL 3,U3GP3X+FR5 + WL 3,U3GP3X+FR6 + + .word ANI_ZERO_XZVELS + + .word ANI_XFLIP + + WL 8,U3CR3A+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** +* +* SHOOT SPIRITS - Pull in opponent + + SUBR und_spirit_pull_anim + +;Drones will have to be alerted to the presence of projectiles +;and then check for them! + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 2,U3MS3B+FR2 + WL 2,U3MS3B+FR3 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + + + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + .word ANI_OFFSET,-15,0,0 ;x,y,z + WL 3,U4FT3A+FR9 + WL 3,U4FT3A+FR10 + WL 3,U4FT3A+FR11 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#fireball + move a13,a11 + .ref und_spirit_pull + CREATE0 und_spirit_pull + rets + +#***************************************************************************** +* +* SHOOT SPIRITS - Push away opponent + + SUBR und_spirit_push_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 2,U3MS3B+FR2 + WL 2,U3MS3B+FR3 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + + + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + .word ANI_OFFSET,-15,0,0 ;x,y,z + WL 3,U4FT3A+FR9 + WL 3,U4FT3A+FR10 + WL 3,U4FT3A+FR11 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#fireball + move a13,a11 + .ref und_spirit_push + CREATE0 und_spirit_push + rets + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/UND_MJT.IMG b/BACKUP/UND_MJT.IMG new file mode 100644 index 0000000..3db9403 Binary files /dev/null and b/BACKUP/UND_MJT.IMG differ diff --git a/BACKUP/UNZIP.ASM b/BACKUP/UNZIP.ASM new file mode 100644 index 0000000..d2cfa05 --- /dev/null +++ b/BACKUP/UNZIP.ASM @@ -0,0 +1,1101 @@ +************************************************************** +* +* Software: Warren Davis +* Initiated: 9/3/91 +* +* Modified: Shawn Liptak, 8/13/92 -Basketball +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 3/24/93 11:23 +************************************************************** + .file "unzip.asm" + .title "pkzip unzipper" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;Mproc equates + .include "display.equ" ;Display proc equates + .include "gsp.equ" ;Gsp asm equates + .include "sys.equ" + .include "macros.h" + + .include "fontsimg.glo" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref pal_getf + .ref get_all_buttons_cur + +****************************************************************************** + + +BPP .set 3 +RAMBUFSIZ .set (4*1024)*8 ; << BPP +;SCRN_ST .set (170*SCRN_PTCH)+(150*8) +;PXLS_PR_TIK .set 10000 + +PAGE1ADR .equ PAGE1YO*512*8 + +;CARYTEST .equ 0 ;1 for Cary's board testing +ERRORTEST .equ 0 ;1 for random pixel test +DEBUGPORT .equ >1d01010 + + + STRUCTPD + LONG PTEMP1 + LONG PIXPERFRM +; WORD FRAMENUM +; LONG CLIPSND +; WORD HOLDFADE ;Time to hold first frame +; WORD DEBUGCNT ;For TUNIT debugging + + +RamBuffer .usect "unzip",RAMBUFSIZ + + BSSX lengthtree ,256*32 + .bss disttree ,256*32 + .bss minptrtbl ,256*32 + + + .text + + +******************************** +* Show movies (test) (Process) + +; SUBR movie_test +; +; calla pal_clean +; +; movi 5*60,a1 ;Delay tv score panel +; move a1,*a0(PTIME) +; +; movi [9,0],a9 +; movi [>8c,0],a10 +; movi (24+83*512)*8,a11 ;XY +; +; move @last_score,a0,L +; cmpi scores,a0 +; jrz #tm1 +; +; movi [9+216,0],a9 +; movi [>8c,0],a10 +; movi >53780,a11 ;XY +; +;#tm1 callr show_edging ;Turn on clip borders +; +; SLEEPK 10 +; +; movi GRANT_F,a8 +; clr a9 +; +; move a11,a10 +; JSRP movie_run +; +; movi >2001,a0 +; calla obj_del1c +; +; movk 10,a1 ;Delay tv score panel +; move a1,*a0(PTIME) +; +; DIE + + +;******************************** +; +; SUBRP show_edging +; +; move a9,a0 +; move a10,a1 +; +; movi livet,a2 +; movi 19989,a3 ;z pos - Below buyin box +; movi DMAWNZ|M_NOCOLL|M_SCRNREL,a4 +; movi >2001,a5 +; clr a6 +; clr a7 +; calla BEGINOBJ2 +; +; move a9,a0 +; move a10,a1 +; movi liveb,a2 +; calla BEGINOBJ2 +; +; move a9,a0 +; move a10,a1 +; movi livel,a2 +; calla BEGINOBJ2 +; +; move a9,a0 +; move a10,a1 +; movi liver,a2 +; calla BEGINOBJ2 +; +; rets +; +; + +#******************************* +* Stop for error (DEBUG) + +; .if TUNITDB +; +; SUBRP movie_error +; +; PUSH a0,a1 +; pushst +; dint +; +; move @SYSCOPY,a0 +; +; .if WWFUNIT +; ori LEDON,a0 +; .else +; ori 4,a0 +; .endif +; +; move a0,@SYSCOPY +; move a0,@SYSCTRL +; +;#lp2 movi 20000,a1 +;#lp move a0,@ERASELOC +; addk 1,a0 +; dsj a1,#lp +; +; move @SWITCH+16,a1 +; move @_coin_addr,a1,L +; move *a1,a1,W +; not a1 +; andi >624,a1 +; jrz #lp2 +; +; move @SYSCOPY,a0 +; +; .if WWFUNIT +; xori LEDON,a0 +; .else +; xori 4,a0 +; .endif +; +; move a0,@SYSCOPY +; move a0,@SYSCTRL +; +; popst +; PULL a0,a1 +; rets +; +; .endif + +#******************************* +* Show movies in attract mode + +; SUBR movie_demo +; +; calla pal_clean +; +; movi GRANT_F,a8 +; clr a9 +; movi (100+50*512)*8,a10 ;XY +; JSRP movie_run +; +; movi PIPPEN_F,a8 +; clr a9 +;; movi (140+70*512)*8,a10 ;XY +; movi (100+70*512)*8,a10 ;XY +; JSRP movie_run +; +;; movi GRANT_F,a8 +;; movk 1,a9 +;; movi (100+50*512)*8,a10 ;XY +;; JSRP movie_run +;; +;; movi PIPPEN_F,a8 +;; movk 1,a9 +;; movi (140+70*512)*8,a10 ;XY +;; JSRP movie_run +; +;#x RETP + + +#******************************* +* Run movie footage (JSRP) +* A8=* compressed picture data +* A9=Mode (0=Normal, 1=x2) +* A10=Screen * for top left of picture +* Trashes scratch, A2-A11,B2-B10 + + SUBR movie_run + + addi SCRNXP*8,a10 ;+XPad offset + move @dpage,a14 + jrnz #p2 + addi PAGE1YO*512*8,a10 ;Start in page 1 if page 0 is being displayed +#p2 + + callr movie_waitdma + +; .if CARYTEST +; movk 1,a14 +; move a14,@DEBUGPORT +; .endif + + callr movie_parsehdr + jrnz #error + + move b3,a14 ;Height + subk 1,a14 + movi SCRN_PTCH,a1 + mpys a14,a1 + add a1,a10 ;* to bottom left + + callr movie_getpal + jrz #error + ;B4=strtpal + SLEEPK 2 ;wait for the pal xfer. NOTE: This + ; generally only takes 0-1 tick, but + ; we have to wait 2 to stay in synch. + movi blowline,b10 + move a9,a9 + jrz #mode0 + movi blowlinex2,b10 +#mode0 + + JSRP movie_unzip + +#x setf 16,1,0 + setf 32,0,1 + + RETP + +#error + clr a14 + move a14,@DEBUGPORT + + LOCKUP + jruc #x + + +#******************************* +* Wait for DMA activity to stop +* Trashes A14 + + SUBRP movie_waitdma + +#wtlp + move b13,b13 ;Wait for DMAQ empty + jrge #wtlp + move @DMACTRL,a14 + jrn #wtlp + + +; .if CARYTEST=0 +; +; movk 1,a14 +; move a14,@DEBUGPORT +; +;#dly movi 200,a14 ;Wait 400 cycles +; dsj a14,$ +; +; move @DMACTRL,a14 +; jrnn #x +; LOCKUP +; jruc #dly +; +; .endif + +#x rets + + +#******************************* +* Get a movie palette +* A7=# of colors +* A8=* to color data +* >A0=Color map allocated (0000-cfcf) +* Z set if no palette free +* Trashes scratch + + SUBRP movie_getpal + + move a8,a0 + subk 16,a0 ;Point to # colors + calla pal_getf + jrz #x + + move a7,a1 + sll 4,a1 ;*16 + add a1,a8 + + move a0,b4 + addk 1,a1 ;Clr Z + +#x rets + + + +#******************************* +* Get movie info +* A8=* to compressed data +*Rets: +* >A0=!0 if error (CC) +* >A4=# frames +* >A6/B9=X +* >A7=# colors in palette +* >B3=Y +* Trashes scratch + +movie_parsehdr + + move a8,a14 + movk 30,a0 ;# retries + +#rd move *a8+,a6 ;X size of frames + move *a8+,a1 ;Y size of frames + move *a8+,a4 ;# of frames + move *a8+,a7 ;# of colors + move a1,b3 + move a6,b9 +; cmpi 100,a6 ;X +; jrne #error + cmpi 400,a6 + jrgt #error +; cmpi 68,b3 ;Y +; jrne #error + cmpi 256,b3 + jrgt #error +; cmpi 5,a4 ;#frms +; jrlt #error +; cmpi 35,a4 +; jrgt #error +; cmpi 200,a7 ;#colors +; jrlt #error + cmpi 255,a7 + jrhi #error + + clr a0 + rets + +#error + movk 101b,a8 + move a8,@DEBUGPORT + + move a14,a8 + dsj a0,#rd + + addk 1,a0 + rets + + +******************************** +* GSP Decompression routine +* +* ASSUMPTIONS: 1) There is no literal table +* 2) the size of the sliding window is 4K +* +* Needs the following Data Tables: +* CompressedDataTable will contain the following once +* it is uncompressed: +* # frames (1 byte) +* # colors in palette (1 byte) +* X size of frame (1 byte) +* Y Size of frame (1 byte) +* variable length palette data +* data for each frame +* +* Needs the following RAM variables: +* LengthTree 256 long words +* DistanceTree 256 long words +* MinPtrTable 256 long words (used for sort) +* RamBuffer circular buffer +* Tree layout is as follows... +* low 16 bits = Code +* next 8 bits = Bit length +* +* B reg usage... +* B0 = Ptr to Length tree +* B1 = Ptr to Distance tree +* B3 = start of line +* B4 = start palette duped to fill 16 bits +* B5 = used for outputting pal bits to DMAPAL +* B6 = temp storage in ReadTree and UncompressTree +* B7 = constant mask for pxl palette split +* B8 = DMAPAL +* B9 = Master X storage + + + +#******************************* +* Uncompress a tree +* A7=* to tree table +* A8=* to compressed data +* >A0=!0 if error (CC) + +UncompressTree: + + PUSH a4,a5 + + move a7,a5 ;Save start of tree + + clr a4 + PUSH a8 + ;>Determine how many codes of each bit length + setf 8,0,0 + move *a8+,a0 ;# compressed bytes to describe tree - 1 + addk 1,a0 + movk >f,a3 ;Constant + clr a6 ;Total number of codes in tree +utr0 + move *a8+,a1 ;(# codes - 1 << 4) | bit lngth - 1 + add a1,a4 ;Chksum + move a1,a2 + srl 4,a2 + addk 1,a2 ;number of codes of this bit length + add a2,a6 ;adjust total + and a3,a1 + addk 1,a1 ;bit length + move a1,a11 + sll 16,a11 + movy a11,a1 ;duplicate bit length for sort +utr1 + move a1,*a7+,L + dsj a2,utr1 ;fill table + + dsj a0,utr0 ;a6 now contains size of tree + + + PULL a8 ;>Recalc chksum + clr a2 + move *a8+,a0 ;# compressed bytes to describe tree - 1 + addk 1,a0 +#chklp move *a8+,a1 + add a1,a2 + dsj a0,#chklp + + setf 16,1,0 + + cmp a2,a4 + jrne #error ;Chksums don't match? + + +* Sort Tree by increasing Bit Length. +* The translation index is placed in the upper byte +* of the long word. + + movi minptrtbl,a0 ; for placing translation ptrs + move a6,a9 ; outer loop count (# entries in tree table) + +* Outer loop, after each pass, we have found the next minimum + +utr2 + move a5,a7 ; restore start of tree + movi 06543h,a14 ; current minimum + move a6,b6 ; inner loop count + movi 07654h,a1 ; constant + +* Inner loop, go through all values in table and find min. +* When we find it, we set it to a high value so we don't detect +* it again. + +utr3 + move *a7,a2 ; look at next bit length + cmp a14,a2 ; is it less than the last minimum + jrge nonewmin + move a2,a14 ; if yes, save new minimum + move a7,a11 ; save pointer to minimum +nonewmin + addk 32,a7 ; point to next entry + dsj b6,utr3 + +; end of inner loop: min is in a14, ptr to min is in a7 + + move a1,*a11 ; set this minimum high. + move a11,*a0+,L ; place translation ptr in MinPtrTbl. + + dsjs a9,utr2 + + ;>Compute the codes + clr a11 ;Code + clr a1 ;CodeInc + clr a2 ;LastBitLength + move a6,a14 ;loop counter +utr4 + move *-a0,a7,L ;translated pointer + add a1,a11 + movb *a7(16),a3 ;bit length + cmp a3,a2 + jreq samebitlng + move a3,a2 ;set new LastBitLength + movk 16,a3 + sub a2,a3 ;16-LastBitLength + movk 1,a1 + sll a3,a1 ;CodeInc = 1 << (16-LastBitLength) +samebitlng + move a11,a5 ;copy of Code in a5 + movk 16,a9 ;reverse bit loop count +rvrsbts + sll 1,a5 ;Reverse bits of word + movy a5,a3 + srl 1,a3 + zext a5 + dsjs a9,rvrsbts + + move a3,*a7 ;store code with bits reversed + dsjs a14,utr4 + + clr a0 + +#x PULL a4,a5 + move a0,a0 + rets + + +#error + movk 1001b,a14 + move a14,@DEBUGPORT + + LOCKUP + movk 1,a0 ;Error! + jruc #x + + + +******************************** + +SetConstants: + movi lengthtree,b0 + movi disttree,b1 +SetConstX + movi RamBuffer+RAMBUFSIZ-1,a0 ;mask for rambuf ptr + movi RamBuffer,a6 ;used for negative wraparound + movi 0c0c0h,b7 ;for blowing words of + movi DMACMAP,b8 +; movi blowline,b10 + rets + + + +#******************************* +* Initialize and run unzip loop (JSRP) +* A4=# of frames +* A8=* compressed data table +* A10=Screen * for top left of picture +* B3=Y size +* B4=strt pal +* B9=X size + + SUBRP movie_unzip + + +; .if TUNITDB +; jruc #debugstrt +; .endif + + + movi lengthtree,b0 + movi disttree,b1 + + movk 10,a5 +#ltlp move b0,a7 ;Length Tree + move a8,b2 + callr UncompressTree + jrz #ltok ;OK? + move b2,a8 + dsj a5,#ltlp + jruc #error +#ltok + + movk 10,a5 +#dtlp move b1,a7 ;Distance Tree + move a8,b2 + callr UncompressTree + jrz #dtok ;OK? + move b2,a8 + dsj a5,#dtlp + jruc #error +#dtok + +; .if CARYTEST +; clr a14 +; move a14,@DEBUGPORT +; .endif + +#debugstrt + + ;Clear top 4K of buffer to take care of initial wraparound + + movi RamBuffer+RAMBUFSIZ,a1 ;End of buffer + movi 1024,a2 ;4K + clr a3 +clrbuf + move a3,*-a1,L + dsj a2,clrbuf + + ;Do some initializing + mpyu b9,b3 + move b3,a11 ;total # bytes in frame in a11 + move a11,*a13(PIXPERFRM),L + callr SetConstX + move a6,a9 ;Where to uncompress to + move a9,b3 ;first frame start + clr b5 ;pixel count for Stills only + + cmpi 1,a4 + jreq UncompressFrame ;1 frame? + +;---- + +#lp + mmtm a12,a4,a10 + + callr movie_waitdma + +; .if CARYTEST +; movk 10b,a14 +; move a14,@DEBUGPORT +; .endif + +; .if TUNITDB +; movi 50,a0 +;#dblp +; movi 80,a2 +;#dblp2 +; move a8,a9 +; addi GRANT_F2-GRANT_F,a9 +; movb *a8,a14 +; movb *a9,a1 +; move a14,@SCRATCH+13 +; move a1,@SCRATCH+16+15 +; cmp a1,a14 +; jreq #cmpok +;#dberr callr movie_error +; mmfm a12,a4,a10 +; RETP +;#cmpok +; move @DMACTRL,a1 +; move @DMACTRL,a1 +; move @DMACTRL,a1 +; move @SWITCH,a1,L +; move @SWITCH,a1,L +; move @SWITCH,a1,L +; move @_switch_addr,a1,L +; move *a1,a1,L +; move @_switch_addr,a1,L +; move *a1,a1,L +; move @_switch_addr,a1,L +; move *a1,a1,L +; movb *a9,a1 +; cmp a1,a14 +; jrne #dberr +; move @SCRATCH+13,a1 +; cmp a1,a14 +; jrne #dberr +; movb *a8,a14 +; move @SCRATCH+16+15,a1 +; cmp a1,a14 +; jrne #dberr +; +; movb a14,*a10 +; addk 8,a8 +; addk 8,a9 +; addk 8,a10 +; dsj a2,#dblp2 +; addi (512-80)*8,a10 +; dsj a0,#dblp +; +; jruc #skipuncomp +; .endif + + + JSRP UncompressFrame + + clr a0 + move a0,@DEBUGPORT +#skipuncomp + + movk 1,a0 ;1 tick sleep +; move *a13(FRAMENUM),a14 ;if 1st frame, check for hold +; jrz chk4hold +; subk 1,a14 +; jrne nonono +; +; move *a13(HOLDFADE),a14 ;on second frame, wait for hold time +; add a14,a0 +; jruc nonono +; +;chk4hold +; move *a13(HOLDFADE),a14 +; jrz nonono ; if need to hold, create fade process +; PUSH a8 +; move b4,a8 +;; CREATE0 HOLD_FADE_PROC +; PULL a8 +; movk 6,a0 ; sleep longer if we are fading pal +;nonono + + + movi swappg,a14 + jruc GoToSleep + + +swappg + + mmfm a12,a4,a10 + + xori PAGE1YO*512*8,a10 ;Flip * to other page + +; PUSH a0 + + setf 16,1,0 + + +; move *a13(FRAMENUM),a14 ;sound only on first frame +; jrnz no +; move *a13(CLIPSND),a0,L ;sound from sound table +; jrz no +; PUSH a14 +; calla snd_play1 +; PULL a14 +;no +; PULL a0 +; +; addk 1,a14 +; move a14,*a13(FRAMENUM) ;save next frame number + + move *a13(PIXPERFRM),a14,L ;number of pixels in a frame + add a14,a11 ;adjust by extra pixels done last time + +; cmpi 2,a4 +; jrne #nxtf +; movi blowlinelastfrm,b10 + +#nxtf + PUSH a0,a1,a2 + calla get_all_buttons_cur + PULL a0,a1,a2 + jrnz #abort + + + dsj a4,#lp ;Loop once for each frame + +#abort + callr movie_waitdma + ;>Copy visible frame to other page + move *a13(PIXPERFRM),a14,L ;# of pixels in a frame + + move b4,*b8 ;Set pallette + + move a10,a2 ;* screen + xori PAGE1YO*512*8,a2 ;Flip * to other page +#cpylp + move a2,a0 + move a10,a1 + + move b9,a5 ;X size + srl 1,a5 ;X/2 = loop counter +#cllp move *a0+,*a1+ + dsj a5,#cllp + + subi SCRN_PTCH,a2 + subi SCRN_PTCH,a10 + move b9,a0 + sub a0,a14 + jrgt #cpylp ;More pixels? + + +#x + RETP + + +#error LOCKUP + jruc #x + + +******************************** + + +GoToSleep + getst b2 + move a12,b6 + mmtm b6,b2,b3,b4,b5,b9,b10 + move b6,a12 + + setf 16,1,0 + setf 32,0,1 + move a14,*a13(PTEMP1),L + calla PRCSLP + + move a12,b6 + mmfm b6,b2,b3,b4,b5,b9,b10 + move b6,a12 + + callr SetConstants + move *a13(PTEMP1),a14,L + + putst b2 + exgpc a14 ;Return + + + +******************************** +* Uncompress a single frame +* A0=Address mask for circular buffer +* A8=* to compressed data +* A9=* to buffer for uncompressed bytes +* A11=How many to place before returning +* B0=*Length tree +* B1=*Distance tree +* +*Trashes: +* a1 = Distance +* a2 = ptr to leftover data if there is any +* a4 = Length +* +* ReadTree uses A2-A5,A7,A14,B6 +* Need to Preserve: B9-B10 + +UncompressFrame: + + setf 16,0,1 ;Field 1 = 16 bits no sign-ext + move b4,*b8,1 ;Set pallette + +UncFr0 + setf 1,0,0 + move *a8+,a14 ; if bit = 1, read 8 bits and copy +; .if ERRORTEST +; move @HCOUNT,a14 +; .endif + jrz decode_still + setf 8,0,0 + + move *a8+,*a9+ + and a0,a9 + + addk 1,b5 ; pixel count + subk 1,a11 +us1 + cmp b5,b9 ; have we filled a line yet? + jrgt us0 + + call b10 ; Blow Line Routine + +us0 + move a11,a11 + jrgt UncFr0 + + setf 16,1,0 + setf 32,0,1 + RETP + + +decode_still: ; if bit = 0, decode from trees + setf 6,0,0 + move *a8+,a1 ; lower 6 bits of distance + +; .if ERRORTEST +; move @HCOUNT,a1 +; .endif + + move b1,a5 ; Distance Tree in a5 + callr ReadTree ; Result in a7 + sll 6,a7 + or a7,a1 + inc a1 ; DISTANCE in a1 + sll BPP,a1 ; turn it into a pointer + + move b0,a5 ; Length Tree in a5 + callr ReadTree ; Result in a7 + + setf 8,0,0 + + cmpi 63,a7 + jrne notmaxs + move *a8+,a3 ; If length is 63, get next byte, and + +; .if ERRORTEST +; move @HCOUNT,a3 +; .endif + + add a3,a7 ; add it to the length +notmaxs + addk 2,a7 ; add MML, LENGTH in a7 + +; We now have Length and Distance, now determine where to copy from + + move a9,a2 ; copy of current position in a2 + sub a1,a2 ; initial attempt + and a0,a2 ; handle wraparound + or a6,a2 ;copy pointer is now in a2 + + sub a7,a11 ;Adjust total pixel count + move a7,b6 + add b6,b5 ;Adjust pixel counter for this line + +copys + move *a2+,*a9+ ;>Copy + and a0,a2 + and a0,a9 + dsj a7,copys + + jruc us1 + + +#******************************* +* Read compression tree +* A5=*Tree table +* A8=*Compressed data +* Field 1 = 16 bits +* >A7=Data +* +* Trashes: A2-A5,A14,B6 +* +* Must preserve: A0,A1,A6,A8-A11 + +ReadTree: + movk 1,a2 ; bits_read + setf 1,0,0 + move *a8+,a7 ; read a bit + rl 31,a7 ; rotate right one more bit + clr b6 ; result + jruc #strt +#lp + addk 1,b6 +#strt move *a5+,a3,1 ; Code in a3 + move *a5+,a4,1 ; Blngth in a4 + movk 32,a14 + sub a2,a14 + rl a14,a3 ; rotate right as many bits have been read +#lp2 + cmpxy a3,a7 + jrynz #lp + + cmp a2,a4 + jreq #x + move *a8+,a14 ; read a bit + or a14,a7 ; accumulate with other bits + inc a2 ; inc bits_read + rl 31,a7 ; rotate right one more bit + rl 31,a3 ; shift code for check of next bit + jruc #lp2 + +#x + move b6,a7 + rets ;Result returned in a7 + + + +#******************************* +* BlowLine is used during decompression of a Still Picture to blow out +* a single line of data. Since only a single line needs to be stored at +* once, the RamBuffer can be as small as 4K. +* A0=Address mask for circular buffer +* Field 1 = 16 bits +* Trashes A1-A2,A5 + + SUBRP blowline + +; setf 32,0,0 + + move a10,a2 ;* screen + + move b3,a1 ;Start of line + move b9,a5 ;X size + srl 2,a5 ;X/4 = loop counter + jrnc #by4 + move *a1+,*a2+,1 ;Copy 2 pixels + and a0,a1 +#by4 +#lp + move *a1+,*a2+,1 ;Copy 2 pixels + and a0,a1 + move *a1+,*a2+,1 ;Copy 2 pixels + and a0,a1 + dsj a5,#lp + + +endblowline + subi SCRN_PTCH,a10 + move a1,b3 ;save for next frame + sub b9,b5 ;readjust pixels for next line + cmp b9,b5 ;added 6/92. if there are enough pixels + jrge #nuther ;left to do another line, do it. + + rets + +#nuther + jruc blowline + + + +******************************** +* Same as BlowLine, but blows to both screens +* Trashes A1,A3-A5 + +;blowlinelastfrm +; +; move a10,a3 ; where on screen to put +; move a3,a4 +; xori PAGE1ADR,a4 +; move b3,a1 ; start of line +; move b9,a5 ; X size +; srl 1,a5 ; X/2 = loop counter +; +;spbl1 +; move *a1+,a14,1 ; write into both screens +; move a14,*a3+,1 +; move a14,*a4+,1 ; write into both screens +; and a0,a1 +; dsjs a5,spbl1 +; +; jruc endblowline + + + +#******************************* +* BlowLine is used during decompression of a Still Picture to blow out +* a single line of data. Since only a single line needs to be stored at +* once, the RamBuffer can be as small as 4K. +* A0=Address mask for circular buffer +* Field 1 = 16 bits + + SUBRP blowlinex2 + + + move a10,a2 ;* screen + move a10,a3 + addi SCRN_PTCH,a3 + + move b3,a1 ;start of line + move b9,a5 ;X size + + setf 8,0,0 +#lp + move *a1+,a14 ;Get 8 bits + move a14,a4 + sll 8,a4 + or a4,a14 + move a14,*a2+,1 ;16 bits + move a14,*a3+,1 + and a0,a1 + dsjs a5,#lp + + + subi SCRN_PTCH*2,a10 + move a1,b3 ; save for next frame + sub b9,b5 ; readjust pixels for next line + cmp b9,b5 ; added 6/92. if there are enough pixels + jrge #nuther ; left to do another line, do it. + + rets + +#nuther + jruc blowlinex2 + + + + + .end + \ No newline at end of file diff --git a/BACKUP/UTIL.ASM b/BACKUP/UTIL.ASM new file mode 100644 index 0000000..9f45297 --- /dev/null +++ b/BACKUP/UTIL.ASM @@ -0,0 +1,3034 @@ +************************************************************** +* +* Software: ? and Shawn Liptak +* Initiated: ? +* +* Modified: Shawn Liptak, 7/?/91 -Improved FLASHME, added FRANIMQ +* Shawn Liptak, 7/?/91 -New and improved random stuff +* Shawn Liptak, 9/13/91 -Fixed various junk (STRINGER) +* Shawn Liptak, 10/5/91 -Added DELTAY to FRANIMQ +* Shawn Liptak, 10/20/91 -Improved GETCPNT +* Shawn Liptak, 1/4/92 -QDMAN mods +* Shawn Liptak, 2/11/92 -Started basketball (cleanup) +* Shawn Liptak, 12/10/92 -Added security code +* Shawn Liptak, 3/16/93 -Fixed coin misses from wipeout +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 3/22/93 16:25 +************************************************************** + .file "util.asm" + .title "utility subroutines" + .width 132 + .option b,d,l,t + .mnolist + + .include "mproc.equ" + .include "display.equ" + .include "gsp.equ" + .include "sys.equ" + .include "game.equ" + .include "audit.equ" + .include "macros.h" + + +;utility subroutine equates + + .def SCRCLR + .def OBJOFF,OBJON + .def STRLNRM,STRCNRM,STRCNRMO,STRLNRMO,STRCNRMO_1,CYCLE_TABLE + .def BLNKAREA + .def FRANIM,FRANIMQ + .def STRNGLEN + .def STRRNRM,FILLAREA + .def ZERO_BITS + + .DEF SPECIAL_WIPEOUT + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref IGNORE_CHAR_WIDTH + .ref are_we_waiting_f + .REF SPECIAL_DISPLAY_INIT + .ref switches_cur + .ref dirqtimer + .ref pal_set + .ref SYSCOPY + .ref GET_ADJ + .ref display_init + .ref GAMSTATE + .ref pal_find + .ref pal_getf + .ref dpageflip + .ref SOUNDSUP + .ref IRQSKYE + .ref PSTATUS + .ref PALRAM + .ref switches_up,switches_down + .ref gndstat + .ref pal_init + .ref BAKBITS + .ref WFLG + .ref WSPEED + .ref COLRTEMP + +****************************************************************************** + + + .def STRNGRAM,HEXTOASC,GETANIX,WRLD + .def COLCYC,CYCLE_TABLE,FLASHME + + + + BSSX RAND ,32 ;Last random # + .bss STRNGRAM ,20*16 + .bss WRLD ,16 + BSSX LOWZ ,16 + + + .text + + +******************************** +* Kill all background objects + + SUBR KILBGND + + MMTM SP,A0,A2,A3,A4,A5 + MOVI BAKLST,A2,L ;ACTIVE BACKGROUND OBJECTS LIST + MOVE *A2,A0,L + JREQ KILOBX ;BR=NO MORE OBJECTS ON LIST +FREEB + MOVE A2,A3 ;SAVE PREVIOUS + MOVE *A2,A2,L ;GET NEXT BLOCK + JREQ KILOBX ;BR=ALL DONE + MOVE *A2,*A3,L ;LINK AROUND IN ACTIVE LIST + MOVE @OFREE,A5,L ;LINK INTO FREE LIST AT START + MOVE A5,*A2,L + MOVE A2,@OFREE,L ;UPDATE FREE LIST POINTER + MOVE A3,A2 + JRUC FREEB ;KILL ALL OBJECTS ON BACKGROUND LIST +KILOBX + CALLR ZERO_BITS + MOVE A0,@BAKLST,L + MMFM SP,A0,A2,A3,A4,A5 + RETS + +******************************** + + SUBR ZERO_BITS + + CLR A0 + MOVI 10000/16,A2 ;SIZE OF BAKBITS IN WORDS + MOVI BAKBITS,A1 +KILUP + MOVE A0,*A1+,W + DSJS A2,KILUP + RETS + + SUBR SPECIAL_WIPEOUT + CALLR WIPEOUT2 + JAUC SPECIAL_DISPLAY_INIT + +************************************************************************** +* Wipes the system clear of all other processes, objects +* and coordinates. It returns with display processor disabled +* color ram cleared, and the bit map wiped clean. + + SUBR WIPEOUT + + callr dirq_wait + + calla display_init + + pushst + dint + calla pal_init + POPST + + + SUBR WIPEOUT2 + +; callr security_chk ;Rets: A0=0 if OK! + + clr a0 + + move a0,@gndstat + move a0,@dtype + + move a0,@are_we_waiting_f + move a0,@IGNORE_CHAR_WIDTH + + move a0,@WFLG + movk OWSPD,a1 + move a1,@WSPEED + + move a0,a1 + calla KILALL ;Kill all processes + + callr ZERO_BITS + callr dpageflip_off + clr a0 + move a0,@SOUNDSUP ;Allow sounds + move a0,@IRQSKYE +; move a0,@DISPLAYON ;TURN THE DISPLAY PROCESSOR OFF + + pushst + dint + + move @SYSCOPY,a0 ;>Init sysctrl + + .if WWFUNIT + movi SYSCINIT,a1 + .else + srl 8,a0 + sll 8,a0 + movi SYSCINIT&>ff,a1 ;Don't touch 7seg LED + .endif + + or a1,a0 + move a0,@SYSCOPY + move a0,@SYSCTRL + + popst + + callr dirq_wait ;Now wait for vblank to zap color map + + + rets + +#******************************* +* Save display/process lists and variables of active game +* A13=*Process that stays running +* Trashes scratch, A2-A7 + + .bss sysstate_t ,16*50 ;Mem for state save + .bss svproc_p ,32 ;*Saved proc list + .bss pal_t ,32*NMFPAL ;Mem for pal save + +SSS .macro a + move @:a:,*a1+ + .endm +SSSL .macro a + move @:a:,*a1+,L + .endm + + SUBR system_savegame + + movi sysstate_t,a1 + + SSSL OBJLST + SSSL BAKLST + SSSL WORLDTLX + SSSL WORLDTLY + + SSS IRQSKYE + SSSL COLRTEMP + SSS dtype + SSS dpageflip + SSS gndstat + + SSS GAMSTATE + +; movi plyrproc_t,a2 +; movi plyrobj_t,a3 +; movi P1CTRL,a4 +; movk 4,b0 +;#lp move *a2+,*a1+,L +; move *a3+,*a1+,L +; move *a4+,*a1+ +; dsj b0,#lp + + + movi ACTIVE,a2 + movi svproc_p,a4 + jruc #prnxt + +#prlp cmp a13,a2 + jreq #prnxt ;Me? + + move *a2(PROCID),a14 + jrn #prnxt ;Indestructible? + + move *a2,*a3,L ;Unlink + move a2,*a4,L ;Add it to save list + move a2,a4 + move a3,a2 +#prnxt + move a2,a3 + move *a2,a2,L + jrnz #prlp + + clr a0 + move a0,*a3,L + move a0,*a4,L + + move a0,@OBJLST,L ;Null lists + move a0,@BAKLST,L + move a0,@gndstat + + callr ZERO_BITS + + + movi PALRAM,a0 ;>Save pal ptrs + movi pal_t,a1 + movi NMFPAL,b0 +#plp move *a0+,*a1+,L + dsj b0,#plp + + calla pal_init + + rets + + +#******************************* +* Restore state of system_savegame +* A13=*Process +* Trashes scratch, A2-A8 + +SRS .macro a + move *a1+,a0 + move a0,@:a: + .endm +SRSL .macro a + move *a1+,a0,L + move a0,@:a:,L + .endm + + SUBR system_restoregame + + clr a0 + move a0,@DISPLAYON + + clr a1 + calla KILALL ;Kill all processes + calla KILBGND ;Kill old background + movi -1,a1 + calla obj_delc ;Kill all objs + + calla pal_init + + movi pal_t,a3 ;>Restore pal ptrs + movi PALRAM,a4 + clr a5 + movi NMFPAL,a7 +#plp + move *a3+,a0,L ;Get * pal + move a0,*a4+,L + jrz #nxtp + move a5,a1 + sll 8,a1 ;Pal offset + move *a0+,a2 ;Get # colors in pal + calla pal_set ;Setup pal transfer +#nxtp addk 1,a5 + cmpi NMFPAL/2,a7 + jrne #skipslp + PUSHP a3,a4,a5,a7 + PULL a8 ;Get our rets addr so we can sleep + SLEEPK 1 ;Split the transfer + PUSH a8 + PULLP a3,a4,a5,a7 +#skipslp + dsj a7,#plp + + + movi sysstate_t,a1 + + SRSL OBJLST + SRSL BAKLST + SRSL WORLDTLX + SRSL WORLDTLY + + SRS IRQSKYE + SRSL COLRTEMP + SRS dtype + SRS dpageflip + SRS gndstat + + SRS GAMSTATE + +; movi plyrproc_t,a2 +; movi plyrobj_t,a3 +; movi P1CTRL,a4 +; movk 4,b0 +;#lp move *a1+,*a2+,L +; move *a1+,*a3+,L +; move *a1+,*a4+ +; dsj b0,#lp + + + movi ACTIVE,a2 ;>Find end of list +#prlp + move a2,a3 + move *a2,a2,L + jrnz #prlp + + move @svproc_p,*a3+,L ;Link + + + movk 1,a0 + move a0,@DISPLAYON + + rets + + + +******************************** +* Clear all world coordinates and scroll velocities + +; SUBRP world_clr +; +; clr a0 +; move a0,@SCROLLX,L ;X SCROLL VALUE +; move a0,@SCROLLY,L ;Y SCROLL VALUE +; move a0,@WORLDTLX,L ;TOP LEFT X SCREEN COORD (WORLD) +; move a0,@WORLDTLY,L ;TOP LEFT Y SCREEN COORD (WORLD) +; move a0,@WORLDTL,L +; movi SCRNST,a0 +; move a0,@SCRNTL,L +; movi SCRNEND,a0 +; move a0,@SCRNLR,L +; rets + + +**************************************************************** +* +* Animation script code by SL +* +**************************************************************** + +******************************** +* Run an animation script (Process) + + + BSSX animscnt ,16 ;# anim scripts running + + STRUCTPD + APTR animslobj_p ;*Last obj created + LONG animsv ;Temp value + WORD animsbx ;Base X + WORD animsby ;Base Y + WORD animsfnum ;# FRANIMs running + APTR animslp_p ;*Loop point table pos +;Careful! + APTR animslp_t ;(*Loop point, Loop cnt)*5 + + + SUBR anim_script ;A8=*Script + + clr a9 + + SUBRP anim_script2 ;A8=*Script, A9=Base Y:X + + move a9,*a13(animsbx),L ;Save XY + + move *a13(PROCID),a11 + subi ANIMPID,a11 + srl 8,a11 + sll 8,a11 ;A11=ID offset (0->300) + + clr a1 + move a1,*a13(animsfnum) + move a13,a1 + addi animslp_t,a1 + move a1,*a13(animslp_p),L + +anslp move *a8+,a1 ;Get command + + addi anims_t,a1 + move *a1,a1,L + jump a1 + + .long asEND +anims_t .long asNEW,asDEL,asDELM,asFRA + .long asANI,asHIDE,asSHOW,asPAL + .long asXY,asXYRNG,asYA,asXYV + .long asXYVA,asXYV0,asZ,asBXY + .long asSLP,asSLP1,asSLPR + .long asWAIT,asTXT + .long asTXTR,asTXTK,asLAB,asLABR + .long asDSJ,asDSJS1,asJMP,asJMPR,asJMPEQ + .long asJMPNE,asRUN,asRUNI,asCRE + .long asKIL,asASM,asSND,asSNDD + .long asADDW + .long asADDWO,asADDLO,asADLVO,asSVRL + .long asSVRLT,asSVL + + +asNEW ;>New objects + move *a8+,a9,L ;Get data + PUSH a8 +ans100 move *a9+,a2,L ;*Image + move *a9+,a0,L ;Get XY + move *a13(animsbx),a3,L + addxy a3,a0 ;Add base + clr a1 + movy a0,a1 + sll 16,a0 + move *a9+,a3 ;Z + move *a9+,a4 ;Flags + addi M_NOCOLL,a4 + move *a9+,a5 ;ID + addi CLSANIM,a5 + add a11,a5 ;+offset + clr a6 + clr a7 + calla BEGINOBJW + move *a9,a0 + cmpi -1000,a0 + jrne ans100 ;End? + move a8,*a13(animslobj_p),L ;Save * to last one + PULL a8 + jruc anslp + +asFRA ;>FRANIM + move a11,a6 ;Save a11 + move *a8+,a9,L ;Get data + move *a13(PROCID),a1 ;Inherit same ID+1 + addk 1,a1 + move *a8+,a10 ;OID + jrn ans250 ;No ID? + addi CLSANIM,a10 + add a11,a10 ;+offset + move *a8+,a11 ;#Loops + jrn ans220 + move *a13(animsfnum),a2 ;+1 FRANIM cnt + addk 1,a2 + move a2,*a13(animsfnum) +ans220 movi anims_franim,a7 + calla GETPRC + move a13,*a0(anfc_p),L + move a6,a11 + jruc anslp + +ans250 addk 16,a8 ;Skip #loops + move a8,a10 + move *a13(animslobj_p),a8,L ;Get * to last one + movi FRQDELDIE,a7 + calla GETPRC + move a10,a8 + jruc anslp + + +asSLP ;>SLEEP + move *a8+,a0 ;Get time + calla PRCSLP + jruc anslp + +asSLP1 ;>SLEEP 1 + movk 1,a0 + calla PRCSLP + jruc anslp + +asSLPR ;>Sleep random + move *a8+,a0 ;Get time + move *a8+,a1 + callr RNDRNG + calla PRCSLP + jruc anslp + +asWAIT ;>Wait on FRANIMs + SLEEPK 2 + move *a13(animsfnum),a1 + jrnz asWAIT + jruc anslp + +asXY ;>New XY rel to current pos + move *a8+,a1 ;Get ID + move *a8+,a2 + move *a8+,a4 + move *a8+,a5 +asxyhs ;Entry for HIDE/SHOW +asxyr addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L +ans720 callr obj_find + jrz anslp + move *a0(OXPOS),a6 ;New X + add a4,a6 + move a6,*a0(OXPOS) + move *a0(OYPOS),a6 ;New Y + add a5,a6 + move a6,*a0(OYPOS) + move *a0,a0,L + jrnz ans720 + jruc anslp + +asXYRNG ;>New XY rel to current pos in rndrng + move *a8+,a0 + move *a8+,a1 + callr RNDRNG + move a0,a4 + move *a8+,a0 + move *a8+,a1 + callr RNDRNG + move a0,a5 + move *a8+,a1 + jrn asxyr5 ;No ID? + move *a8+,a2 + jruc asxyr + +asxyr5 addk 16,a8 ;Skip mask + move *a13(animslobj_p),a0,L ;Get * to last one + move *a0(OXPOS),a6 ;New X + add a4,a6 + move a6,*a0(OXPOS) + move *a0(OYPOS),a6 ;New Y + add a5,a6 + move a6,*a0(OYPOS) + jruc anslp + +asYA ;>Set Y ani pt world relative + move *a8+,a1 + move *a8+,a2 ;Mask + move *a8+,a5 ; + sll 16,a5 + move @WORLDTLY,a0,L + add a0,a5 + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L +asya10 callr obj_find + jrz asya90 + + PUSH a1,a2 + move *a0(OIMG),a1,L + move *a0(OSIZE),a2,L + move *a0(OCTRL),a4 + calla GANIOF + move *a0(OXVAL),a3,L + add a6,a3 ;Old X + move a5,a2 ;New Y + calla GANISAG + PULL a1,a2 + + move *a0,a0,L + jrnz asya10 +asya90 jruc anslp + +asXYV ;>Set XYVel + move *a8+,a4,L + move *a8+,a5,L + move *a8+,a1 + move *a8+,a2 + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L +ans920 callr obj_find + jrz anslp + move *a0(OXVEL),a6,L + add a4,a6 + move a6,*a0(OXVEL),L + move *a0(OYVEL),a6,L + add a5,a6 + move a6,*a0(OYVEL),L + move *a0,a0,L + jrnz ans920 + jruc anslp + +asXYVA ;>Set XYVel absolute + move *a8+,a4,L + move *a8+,a5,L + move *a8+,a1 + move *a8+,a2 + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L +ans1020 callr obj_find + jrz anslp + move a4,*a0(OXVEL),L + move a5,*a0(OYVEL),L + move *a0,a0,L + jrnz ans1020 + jruc anslp + +asXYV0 ;>XYVel = 0 + move *a13(animslobj_p),a0,L ;Get * to last one + clr a1 + move a1,*a0(OXVEL),L + move a1,*a0(OYVEL),L + jruc anslp + +asZ ;>Set Z pos + move *a8+,a1 + move *a8+,a2 + move *a8+,a4 + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L +ans1120 callr obj_find + jrz anslp + move a4,*a0(OZPOS) + move *a0,a0,L + jrnz ans1120 + jruc anslp + +asLAB ;>Set label + move *a8+,a0 +anslab move *a13(animslp_p),a2,L + move a8,*a2+,L ;Save * + move a0,*a2+ + move a2,*a13(animslp_p) + jruc anslp + +asLABR ;>Set label randomly + move *a8+,a0 + move *a8+,a1 + callr RNDRNG + jruc anslab + +asDSJS1 ;>Sleep 1, dec and loop to label + SLEEPK 1 + +asDSJ ;>Decrement and loop to label + move *a13(animslp_p),a1,L + move -*a1,a2 + subk 1,a2 + move a2,*a1 + jrz ans1330 + move -*a1,a8,L ;Get *Loop + jruc anslp +ans1330 subk 32,a1 ;Del loop entry + move a1,*a13(animslp_p),L + jruc anslp + +asPAL ;>Set palette + move *a13(animsv),a0,L ;Get *Pal + calla pal_getf + move a0,a4 + move *a8+,a1 + jrn ans1450 + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L + clr a2 ;No mask +ans1420 callr obj_find + jrz anslp + move a4,*a0(OPAL) + move *a0,a0,L + jrnz ans1420 ;More? + jruc anslp + +ans1450 move *a13(animslobj_p),a0,L ;Get * to last obj + move a4,*a0(OPAL) + jruc anslp + +asANI ;>Do ANI on OID + move *a8+,a5,L + move *a8+,a1 ;OID + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L + clr a2 ;No mask +ans1620 callr obj_find + jrz anslp + move a8,a9 + move a1,a3 + move a5,a1 ;*Img + move a0,a8 ;*Obj + move *a8(OCTRL),a4 ;Same flags + calla ANI + move a3,a1 + move a8,a0 + move a9,a8 + move *a0,a0,L + jrnz ans1620 ;More? + jruc anslp + +asDEL ;>Delete obj + move *a8+,a0 + clr a1 +asdel5 addi CLSANIM,a0 + add a11,a0 ;+offset + calla obj_delc + jruc anslp + +asDELM ;>Delete obj with mask + move *a8+,a0 + move *a8+,a1 + jruc asdel5 + +asRUN ;>Run a new anim script + move *a8+,a0,L + move *a13(PROCID),a1 ;Inherit same ID +asrun5 move a8,a10 + move a0,a8 ;*Script + move *a13(animsbx),a9,L ;Get base XY + movi anim_script2,a7 + calla GETPRC + move a10,a8 + jruc anslp + +asRUNI ;>Run a new anim script with ID + move *a8+,a0,L + move *a8+,a1 + addi ANIMPID,a1 + add a11,a1 ;+offset + jruc asrun5 + +asCRE ;>Create a process + move *a8+,a7,L + move *a8+,a9,L ;Pass A9 to process + movi ANIMPID+>ff,a1 + add a11,a1 ;+offset + calla GETPRC + jruc anslp + +asKIL ;>Kill processes with mask + move *a8+,a0 + addi ANIMPID,a0 + add a11,a0 ;+offset + move *a8+,a1 + calla KILALLN + jruc anslp + +asJMP ;>Jump to new location + move *a8+,a8,L + jruc anslp + +asJMPR ;>Jump to new location if RND<# + move *a8+,a4,L + movi 999,a0 ;.1 % resolution + callr RNDRNG0 + move *a8+,a1 + cmp a1,a0 + jrhs anslp + move a4,a8 ;Do jmp + jruc anslp + +asJMPEQ ;>Jump to new location if = to mem + move *a8+,a0,L + move *a0,a0 ;Get value + move *a8+,a2,L + move *a8+,a1 + cmp a1,a0 + jrne anslp ;Not same? + move a2,a8 ;Do jmp + jruc anslp + +asJMPNE ;>Jump to new location if != to mem + move *a8+,a0,L + move *a0,a0 ;Get value + move *a8+,a2,L + move *a8+,a1 + cmp a1,a0 + jreq anslp ;Same? + move a2,a8 ;Do jmp + jruc anslp + +asSNDD ;>Do a snd call in demo + movk ADJMUSIC,a0 ;Get demo music ON/OFF + calla GET_ADJ + jrz asSND ;Do sounds? + addk 32,a8 + jruc anslp +asSND ;>Do a snd call + move *a8+,a0,L + calla snd_play1 + jruc anslp + +asASM ;>Inline code + exgpc a8 + jruc anslp + +asHIDE ;>Hide an OID (X+5000) + movi 5000,a4 +ashide2 move *a8+,a1 + clr a2 + clr a5 + jruc asxyhs + +asSHOW ;>Show an OID (X-5000) + movi -5000,a4 + jruc ashide2 + +asADDW ;>Add WORD to mem + move *a8+,a0,L + move *a8+,a1 + move *a0,a2 + add a1,a2 + move a2,*a0 + jruc anslp + +asADDWO ;>Add WORD to last obj+offset + move *a8+,a0 + move *a13(animslobj_p),a1,L ;Get * to last one + move *a8+,a2 ;Offset + add a2,a1 + move *a1,a2 + add a0,a2 + move a2,*a1 + jruc anslp + +asADDLO ;>Add LONG # to last obj+offset + move *a8+,a0,L + move *a13(animslobj_p),a1,L ;Get * to last one + move *a8+,a2 ;Offset + add a2,a1 + move *a1,a2,L + add a0,a2 + move a2,*a1,L + jruc anslp + +asADLVO ;>Add LONG value to last obj+offset + move *a8+,a0 + move *a13(animslobj_p),a1,L ;Get * to last one + add a0,a1 ;+Offset + move *a13(animsv),a0,L ;Get value + move *a1,a2,L + add a0,a2 + move a2,*a1,L + jruc anslp + +asSVRL ;>Set value to rnd long + move *a8+,a0,L + move *a8+,a1,L + callr RNDRNG + move a0,*a13(animsv),L + jruc anslp + +asSVRLT ;>Set value to rnd long from a table + move *a8+,a4,L + move *a4+,a0 ;#Table entries + subk 1,a0 + callr RNDRNG0 + sll 5,a0 ;*32 + add a0,a4 + move *a4,a0,L + move a0,*a13(animsv),L + jruc anslp + +asSVL ;>Set value to long + move *a8+,a0,L + move a0,*a13(animsv),L + jruc anslp + +asBXY ;>Add # to BaseXY + move *a8+,a0,L + move *a13(animsbx),a1,L + addxy a0,a1 + move a1,*a13(animsbx),L + jruc anslp + +asTXTR ;>Print rnd text from table + move *a8+,a4,L + move *a4+,a0 ;#Table entries + subk 1,a0 + callr RNDRNG0 + sll 5,a0 ;*32 + add a0,a4 + move *a4,a0,L + jruc astxt5 + +asTXT ;>Print text + move *a8+,a0,L +astxt5 +; calla prt0_xy + jruc anslp + + +asTXTK ;>Kill text + PUSHP a8 + callr ERASE_TXT +; movk 4,a11 ;Save A11! +; JSRP text_shrink ;Sleeps + PULLP a8 + jruc anslp + + +asEND SLEEPK 1 ;>Wait on FRANIMs before exit + move *a13(animsfnum),a1 + jrnz asEND + DIE + + + +******************************** +* Animation of a part (Process) + + STRUCTPD + APTR anfc_p ;*AnimScrpt process that made me, set by AS + APTR anfl ;*Franim list + + + SUBRP anims_franim ;A9=*FRAN list, A10=OID, A11=# Loops + + move @OBJLST,a8,L ;>Find object +anf100 move *a8(OID),a0 + cmp a10,a0 + jreq anf300 + move *a8,a8,L + jrnz anf100 + jruc anf700 ;No match! + +anf300 move a9,*a13(anfl),L +anf340 JSRP FRANIMQ + move *a13(anfl),a9,L ;Go to 1st + move a11,a11 + jrn anf340 ;-=Infinite + dsj a11,anf340 + +anf700 move a11,a11 + jrn anf800 + move *a13(anfc_p),a0,L ;Get *Creator + move *a0(animsfnum),a2 ;#Frans-1 + subk 1,a2 + move a2,*a0(animsfnum) +anf800 DIE + + + +******************************** +* Wait for animation processes to finish + + SUBR anim_wait + +anw10 SLEEPK 3 + move @animscnt,a1 + jrgt anw10 + RETP + +******************************** +* Wait 50 and kill anim stuff (Process) + + SUBR anim_kilslp + + SLEEP 50 + callr anim_killall + DIE + + +******************************** +* Kill all animation processes and objects + + SUBR anim_killall + + clr a0 + move a0,@animscnt + + movi ANIMPID,a0 ;>Kill processes + movi >3ff,a1 + calla KILALLN + + movi CLSANIM,a0 ;>Delete objs + movi >3ff,a1 + jauc obj_delc + + + +******************************** +* Find an object by OID +* A0=*1st obj +* A1=OID +* A2=!Mask +* >A0=*Obj or 0 (Z) +* Trashes A1,A3 + + SUBRP obj_find + + andn a2,a1 +of20 move *a0(OID),a3 + andn a2,a3 ;Remove bits + cmp a1,a3 + jreq of50 + move *a0,a0,L + jrnz of20 +of50 move a0,a0 ;A0=*Obj or 0 + rets ;Pass CC + + + + + + +#*************************************************************** +* Reset autoerase color for fixing scrn glitches +* Trashes scratch + + SUBR autoerase_set + + pushst + dint + callr dma_wait ;Wait on dma + + clr a0 + move a0,@DMACMAP + movi ERASECOL,a0 ;Color pair + movi 510*512*8,a1 ;Store to last 2 lines of bitmap + movi 512*8*2/16,b0 +#lp move a0,*a1+ + dsj b0,#lp + + popst + + rets + + +#******************************* +* Flash an image by making a constant color +* A8=*Image to flash +* A9=Color to flash with (Ex. 0202h,a9) + +FLASHME + + move *a8(OCONST),a0 + jrnz #x ;Flashing? + + move a9,*a8(OCONST) + setf 4,0,0 + movk M_CONNON,a0 ;Replace non-zero data with constant + move a0,*a8(OCTRL) ;Write 4 low bits + setf 16,1,0 + + SLEEPK 2 + + clr a0 + move a0,*a8(OCONST) ;Clr color + + setf 4,0,0 + movk M_WRNONZ,a0 + move a0,*a8(OCTRL) ;Write 4 low bits + setf 16,1,0 + +#x DIE + + .if 0 +#******************************* +* Flash an image by making a constant color +* A8=*Image to flash +* A9=Color to flash with *64K + +FLASHME + move *a8(OCONST),a10 + jrnz #x ;Flashing? + srl 16,a9 + move a9,*a8(OCONST) ;Set color + move *a8(OCTRL),a0 + movk 8,a1 + or a1,a0 ;Set constant + move a0,*a8(OCTRL) + SLEEPK 2 + clr a0 + move a0,*a8(OCONST) ;Clr color + move *a8(OCTRL),a0 + andi >fff5,a0 ;Clr constant & nonzero + addk 2,a0 ;Set nonzero + move a0,*a8(OCTRL) +#x DIE + .endif + +******************************** +*CHEAP COLOR CYCLER +*CYCLES ANY NUMBER OF COLORS +*A8=PALETTE NAME +*A9=RAM STORAGE AREA +*A10=MSW START COLOR, LSW END COLOR +*A11=SPEED, A11=NEGATIVE FOR REVERSE CYCLER + +COLCYC + SLEEPK 4 + MOVE A8,A0 + calla pal_find + JRZ COLCYC ;WAIT TILL IT SHOWS UP FOLKS... + + CLR A1 ;GET THE COLORS INTO RAM + MOVX A10,A1 ;GET END COLOR + SRL 16,A10 ;ADJUST START COLOR + SUB A10,A1 ;GET COUNT + MOVE A1,*A13(PDATA) ;SAVE COUNT + MOVE A1,A4 + SLL 4,A1 ;COUNT IN WORDS + MOVE A10,A5 + SLL 4,A5 ;OFFSET INTO PALETTE + ADD A8,A5 + ADDK 16,A5 ;SKIP PALETTE WORD COUNT + MOVE A9,A3 + MOVE A9,A6 + ADD A1,A6 + MOVE A6,A8 + +COLCYC1 MOVE *A5+,A7 ;TRANSFER IT TWICE + MOVE A7,*A3+ + MOVE A7,*A6+ + DSJS A4,COLCYC1 + + SRL 8,A0 + SLL 8,A0 + ADD A0,A10 ;COLRAM DESTINATION + +COLCYCB + MOVE A8,*A13(PDATA+>20),L ;SAVE RAM ADDRESS +COLCYCBL + MOVE A8,A0 ;GET SOURCE ADDRESS + MOVE A10,A1 ;GET DESTINATION CONSTANT + MOVE *A13(PDATA),A2,W ;GET COUNT + calla pal_set + SUBK 16,A8 + CMP A8,A9 + JRLO CCYCBSLP + MOVE *A13(PDATA+>20),A8,L ;GET SOURCE TABLE START +CCYCBSLP + MOVE A11,A0 ;GET SLEEP TIME + CALLA PRCSLP + JRUC COLCYCBL + + +#******************************* +* CYCLE A PAL WITH A FIXED ROM COLOR TABLE +* A8= [COLOR # TO START AT,# TO CYCLE] +* A9= PAL NAME TO CYCLE +* A10=TABLE TO CYCLE IT WITH +* A11=RATE OF CYCLE IN TICKS + +CYC0 SLEEP 60 + +CYCLE_TABLE + MOVE A9,A0 ;PAL NAME TO CYCLE + calla pal_find + jrz CYC0 + SRL 8,A0 + SLL 8,A0 + MOVY A8,A1 + SRL 16,A1 ;A1=COLOR # TO START WITH + MOVE A8,*A13(PDATA) ;PDATA WILL HAVE # TO CYCLE (CNT) + MOVE *A10,A2,W + MOVE A2,*A13(PDATA+16) ;VALUE IN TABLE TO STOP AT + MOVE A0,A8 ;A8=[PAL #,0] + ADD A1,A8 ;A8=[PAL #,COLOR TO START AT] + MOVE A10,A9 ;A10=ROM TABLE TO CYCLE WITH +#loop move a8,a1 + MOVE A9,A0 ;A0=TABLE POSITION + MOVE *A13(PDATA),A2 ;A2=COLOR COUNT + calla pal_set ;do the transfer + MOVE A11,A0 + CALLA PRCSLP + ADDK >10,A9 + MOVE *A9,A0 + JRN RESTUFF + MOVE *A13(PDATA+16),A1 ;PDATA+16=ENTRY WE STOP AT + CMP A0,A1 + jrne #loop +RESTUFF MOVE A10,A9 ;REACHED END OF TABLE, RESTUFF + jruc #loop + + +**************************************************************** +* Converts a 32 bit hex # to a null terminated ascii string +* A8=# +* >A8=*String + +HEXTOASC + PUSH a1,a2,a9 + clr a1 + move a1,-*sp ;Push the null terminator + movk 10,a1 ;Divisor for decimal + move a8,a9 +hexta1 movk 3,a2 ;Comma count +hexta2 clr a8 + divu a1,a8 + addi '0',a9 ;Make the remainder ascii + move a9,-*sp ;Save here + move a8,a9 + jrz hexta3 ;Done? + dsj a2,hexta2 + movi ',',a2 + move a2,-*sp ;Stuff a comma + jruc hexta1 + +hexta3 movi STRNGRAM,a1 ;Store here for blow out + move a1,a8 +hexta4 move *sp+,a9 + movb a9,*a1 + addk 8,a1 + move a9,a9 + jrnz hexta4 + + PULL a1,a2,a9 + rets + + +******************************** +* Erase all text objects + + SUBR ERASE_TXT + + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + jauc obj_del1c + + +************************************************************************** +* +* STRINGER - OUTPUT A TEXT STRING, THIS IS A PROCESS! +* A0 = SLEEP TIME BETWEEN CHARACTERS +* A4 = DMA CONTROL +* A6 = COLOR (16 BITS) +* A8 = PTR TO STRING +* A9 = [Y,X] SCREEN ADDRESS OF STRING +* A10 = [Y,X] SPACING +* A11 = POINTER TO FONT TABLE +* A14 = FLAGS:JUSTIFY +* BIT 16 = 1 INSERT ON OBJECT LIST, 0 JUST QUEUE THE DMA +* JUSTIFY = 0 LEFT JUSTIFY +* 1 CENTER JUSTIFY +* 2 RIGHT JUSTIFY +* WRLD = ADJUST FOR WORLD COORDINATES +* LOWZ+20000=ZPOS +* +* RETURNS: +* A8 = POINTS TO NEXT BYTE AFTER STRING TERMINATOR +* A9 = NEXT CURSOR POSITION AFTER THE STRING +* NOTE: CALL WITH JSRP +* +************************************************************************** + +;LEFT JUSTIFY, NORMAL, NOT PUT ON THE OBJECT LIST +STRLNRM + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + clr a14 + jruc stringr1 + +;CENTER JUSTIFY, NORMAL, NOT ON THE OBJECT LIST +STRCNRM + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + movk 1,a14 + jruc stringr1 +;CENTER JUSTIFY, NORMAL, DMA, MULTIPLE COLORS + SUBR STRCNRM_1 + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMAWNZ|M_NOCOLL,a4 + movk 1,a14 + move a6,a5 + jruc stringr1_1 + +;RIGHT JUSTIFY, NORMAL, NOT PUT ON THE OBJECT LIST +STRRNRM + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + movk 2,a14 + jruc stringr1 + +;LEFT JUSTIFY, INVERTED, NOT ON THE OBJECT LIST +;STRLINV +; mmtm a12,a1,a2,a3,a4,a6,a14 +; MOVI DMACZ,A4 +; clr a14 +; jruc stringr1 + +;CENTER JUSTIFY, INVERTED, NOT ON THE OBJECT LIST +;STRCINV +; mmtm a12,a1,a2,a3,a4,a6,a14 +; MOVI DMACZ,A4 +; movk 1,a14 +; jruc stringr1 +; + +;LEFT JUSTIFY, NORMAL, OBJECT LIST +STRLNRMO + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + movi >10000,a14 + jruc stringr1 + +;CENTER JUSTIFY, NORMAL, OBJECT LIST +STRCNRMO + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + movi >10001,a14 + jruc stringr1 + +;CENTER JUSTIFY, NORMAL, OBJECT LIST, MULTIPLE COLORS! +STRCNRMO_1 + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMAWNZ|M_NOCOLL,a4 + movi >10001,a14 + move a6,a5 + jruc stringr1_1 + +;LEFT JUSTIFY, NORMAL, OBJECT LIST, MULTIPLE COLORS! + SUBR STRLNRMO_1 + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMAWNZ|M_NOCOLL,a4 + movi >10000,a14 + move a6,a5 + jruc stringr1_1 + +STRINGER + mmtm a12,a1,a2,a3,a4,a6,a14 +stringr1 + move a6,a5 + sll 16,a5 ;Setup constant color in fixed palette +stringr1_1 + + clr a7 + movx a14,a7 + subk 1,a7 + jrn strr10 ;Normal left justify + jrz strrc + + callr STRNGLEN ;Right justify + jruc strra + +strrc callr STRNGLEN ;Center justify + srl 1,a7 ;STRNGLEN/2 + +strra subxy a7,a9 ;Adjust string starting position + jruc strr10 ;Start loop + + +strr1 addk 5,a9 ;Add a space +strr5 addxy a10,a9 ;Add spacing + +strr10 movb *a8,a1 ;Get a character + jrle strrx ;Done? + addk 8,a8 ;Next byte + + subk 32,a1 + jrle strr1 ;Space? + + ;Save sleep time +strr20 PUSH a0 + + subk 1,a1 ;>Calc table offset + sll 5,a1 ;*32 + add a11,a1 + move *a1,a1,L ;Get * image header + move *a1(ICTRL),a3 + + PUSH a1,a14 + + btst 16,a14 + jrz strrdma ;Only do DMA? + + move a1,a2 + + calla GETOBJ ;Create the character as an object + jrz strrdun ;No object? + + move a2,*a0(OIMG),L + move *a2(ISAG),*a0(OSAG),L + move a4,*a0(OFLAGS) ;FIX!!!!! + move a5,*a0(OPAL),L ;&CONST + movi 01000100h,a1 + move a1,*a0(OSCALE),L + + + move a4,a1 + andi >803f,a1 ;Kill mode bits + or a1,a3 + move a3,*a0(OCTRL),L ;&OFSET + + movi CLSNEUT|TYPTEXT|SUBTXT,a14 + move a14,*a0(OID) + + move @LOWZ,a14 + addi 20000,a14 + move a14,*a0(OZPOS) + + clr a2 + move a2,*a0(OXVEL),L + move a2,*a0(OYVEL),L + move a2,*a0(OZVEL),L + move a2,*a0(ODOFF),L + + movy a9,a2 ;Y + move a9,a3 + sll 16,a3 ;X + calla GANISAG + + move @WRLD,a2 + jrnz strr100 + calla obj_addworldxy ;Put us in the world + +strr100 calla INSOBJ + jruc strrdun + + +strrdma PUSH a3 ;>Simple DMA + move *a1,a2,L ;ISIZE + move *a1(ISAG),a3,L ;Get top left sag + calla GANIOF + move a5,a1 ;Constant:Palette + PULL a5 + PUSH a4 + andi >803f,a4 + or a4,a5 ;Offset:Control + move a3,a4 ;SAG + + move a9,a3 ;A3=Y:X + srl 16,a6 + movx a6,a7 + subxy a7,a3 ;Sub anioffset + + calla QDMAN + PULL a4 + move a1,a5 + +strrdun PULL a1,a14 + + move *a1,a1 ;Get ISIZEX + addxy a1,a9 ;Add X size + move *sp+,a0,L + jrz strr5 ;No sleep? + + mmtm a12,a0,a4,a5,a14 + calla PRCSLP + mmfm a12,a0,a4,a5,a14 + jruc strr5 + +strrx clr a1 + move a1,@LOWZ + addk 8,a8 ;Next byte + mmfm a12,a1,a2,a3,a4,a6,a14 + RETP + + +************************************************************************** +* STRNGLEN - RETURNS THE LENGTH, IN PIXELS, OF A GIVEN STRING +* A8 = PTR TO STRING +* A10 = [Y,X] SPACING OF STRING +* A11 = PTR TO FONT TABLE +* RETURNS: +* A7 = LENGTH OF STRING +* Z BIT SET IF LENGTH IS ZERO +************************************************************************** +STRNGLEN + PUSH a8,a14 + clr a7 ;A7=Length + jruc stl60 + +stl10 addk 8,a8 ;Point to next + subk 32,a14 + jrgt stl20 ;Good char? + addk 5,a7 ;Hard code a space + jruc stl40 + +stl20 subk 1,a14 + sll 5,a14 ;*32 + add a11,a14 ;A14=*Correct character header + move *a14,a14,L + move *a14,a14 ;Get ISIZEX + + addxy a14,a7 ;Add char length +stl40 addxy a10,a7 ;Add space length +stl60 movb *a8,a14 + jrgt stl10 ;Next character? + + PULL a8,a14 + zext a7 + rets + + + +************************************************************************** +* * +* OBJOFF - TURN AN OBJECT "OFF" I.E. SET DMA OUTPUT TO 0 * +* A0 = PTR TO OBJECT BLOCK * +* * +************************************************************************** +OBJOFF + PUSH A4 + MOVE *A0(OCTRL),A4 + SRL 4,A4 + SLL 4,A4 + MOVE A4,*A0(OCTRL) + move *sp+,a4,L + RETS + +************************************************************************** +* * +* OBJON - TURN AN OBJECT "ON" I.E. SET DMA OUTPUT TO WRITE <> 0 * +* A0 = PTR TO OBJECT BLOCK * +* * +************************************************************************** +OBJON + PUSH A4 + MOVE *A0(OCTRL),A4 + SRL 4,A4 + SLL 4,A4 + ADDK 2,A4 + MOVE A4,*A0(OCTRL) + move *sp+,a4,L + RETS + + +************************************************************************** +* * +* CLRPDATA - CLEAR THE PDATA AREA OF A PROCESS BLOCK * +* A13 = PTR TO PROCESS BLOCK * +* * +************************************************************************** +;CLRPDATA +; MMTM SP,A1,A6,A14 +; MOVE A13,A14 +; CLR A1 +; ADDI PDATA,A14 +; MOVI (PSDATA-PDATA)/16,A6 +;CLRSHL +; SRL 1,A6 +; JRNC CLRPDL +; MOVE A1,*A14+,W ;STUFF THE ODD WORD +;CLRPDL +; MOVE A1,*A14+,L +; DSJS A6,CLRPDL +; MMFM SP,A1,A6,A14 +; RETS +************************************************************************** +* * +* DFRMGRND - RETURNS THE DISTANCE FROM THE BOTTOM OF * +* AN OBJECT TO THE "GROUND." * +* A8 = OBJECT BLOCK * +* RETURN(S) * +* A1 = DISTANCE FROM GROUND (16 BITS) * +* STATUS BITS SET ACCORDING TO THE SIGN OF A1 * +* NOTE: MAX ACCEPTABLE Y = +32K, MIN ACCEPTABLE Y = -32K * +* * +************************************************************************** +;ZORIGIN EQU 200 ;Y COORDINATE OF THE Z ORIGIN +;DFRMGRND +; PUSH A2 +; MOVE *A8(OYPOS),A1,W +; MOVE *A8(OSIZEY),A2,W +; ADD A1,A2 ;A2 = BOTTOM Y +; MOVE *A8(OZPOS),A1,W +; SUB A2,A1 +; ADDI ZORIGIN,A1 +; MMFM SP,A2 +; RETS + +************************************************************************** +* * +* GET BOTTOM Y OF AN OBJECT * +* A8 = OBJECT BLOCK PTR * +* RETURN(S) * +* A1 = 16 BIT BOTTOM Y IN LSW * +* STATUS SET ACCORDING TO THE BOTTOM Y * +*NOTE: MAKE SURE OBLOCK IS INIT'D WITH GSAGOF BEFORE CALLING * +* * +************************************************************************** +;GETBOTY +; PUSH A2 +; MOVE *A8(OYPOS),A1,W ;GET Y POSITION +; MOVE *A8(OSIZEY),A2,W ;GET THE CURRENT SIZE +; ADD A2,A1 ;A1 = BOTTOM Y +; MMFM SP,A2 +; RETS + + +******************************** +* GETCPNT - Get the center xy position of an object +* A8=*Object +* >A0=Center Y:Center X + + SUBR GETCPNT + + move *a8(OYVAL),a1,L + move *a8(OXPOS),a0 + movx a0,a1 + move *a8(OSIZE),a0,L + srl 1,a0 ;/2 + andi >7fff7fff,a0 ;Clr bit 15 + addxy a1,a0 + rets + + +******************************** +*GETANIX - GET ANIMATION POINT X COORD +*CALLING PARMS: A8=OBJECT +*RETURNS A0=16 BIT WORLD COORD OF UPPER LEFT + +GETANIX + MMTM SP,A1,A2 + MOVE *A8(OIMG),A1,L + MOVE *A1(IANIOFF),A2 + MOVE *A8(OCTRL),A0 + BTST B_FLIPH,A0 + JRZ GETAX1 + MOVE *A1,A0 ;ISIZEX + SUB A2,A0 + DEC A0 + MOVE A0,A2 +GETAX1 MOVE *A8(OXPOS),A0 + ADD A2,A0 + MMFM SP,A1,A2 + RETS + + + +**************************************************************** +* Quickly produce a random # in range -X to +X +* A0=+X +* >A0=Random # (-A0 to +A0) (CC) +* Trashes scratch + + SUBR RNDRNGS + + move a0,a1 + neg a0 + + +******************************** +* Quickly produce a random # in a given range +* A0=Lower bound +* A1=Upper bound +* >A0=Random # (A0 to A1) (CC) +* Trashes scratch + + SUBR RNDRNG + + sub a0,a1 ;Normalize the range + addk 1,a1 + move a0,b0 + + move @RAND,a0,L + rl a0,a0 + move @HCOUNT,a14 + rl a14,a0 + add sp,a0 + move a0,@RAND,L + + mpyu a1,a0 + move b0,a1 + add a1,a0 + rets + + +******************************** +* Quickly produce a random # in range 0-X +* A0=X +* >A0=Random # (0 to A0) (No CC) +* Trashes scratch + + SUBR RNDRNG0 + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + addk 1,a0 + mpyu a1,a0 ;Condition codes not valid! + + rets + + +******************************** +* Random % routine +* A0=Probability of event (0-1000) (0=0%, 1000=100%) +* >A0=0-999 (CC) (jrls nope, jrhi happened) +* Trashes scratch + + SUBR RNDPER + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + move a0,a14 + movi 1000,a0 + mpyu a1,a0 ;0-999 + cmp a0,a14 + rets + + +************************************************************************** +* * +* FILLAREA - FILL A GIVEN SQUARE AREA ON THE SCREEN WITH A COLOR * +* A1 = [COLOR,PALETTE] * +* A3 = DAG OF AREA [YPOS,XPOS] * +* A4 = [Y,X] SIZE OF AREA * +* * +************************************************************************** +FILLAREA + PUSH a0,a1,a2,a4,a5,a14 + jruc areacon +************************************************************************** +* * +* BLNKAREA - BLANK A GIVEN SQUARE AREA ON THE SCREEN * +* A3 = DAG OF AREA [YPOS,XPOS] * +* A4 = [Y,X] SIZE OF AREA * +* * +************************************************************************** +BLNKAREA + PUSH a0,a1,a2,a4,a5,a14 + clr a1 ;constant 0:palette 0 +areacon + move a4,a2 + movi IROM,a4 ;Somewhere in image rom + movi DMACAL,a5 + calla QDMAN + PULL a0,a1,a2,a4,a5,a14 + rets + + +******************************** +* Wait till DIRQ +* Trashes A0-A1 + + SUBR dirq_wait + + move @dirqtimer,a0 +dirqwlp move @dirqtimer,a1 + cmp a0,a1 + jreq dirqwlp + rets + + +******************************** +* Wait on the DMA busy bit to clear +* Preserves A1 + + SUBRP dma_wait + +dwlp move @DMACTRL,b0 + jrn dwlp ;Busy? + rets + + +******************************** +* Wait for dma queue to empty, then wait for dma to finish +* the last one. Turn displayon off. + + SUBR dmaq_wait + + move @DISPLAYON,a1 + clr a0 + move a0,@DISPLAYON ;Display off + + move @DMACTRL,b0 + jrnn dqw20 +dqw10 move b13,b13 + jrge dqw10 +dqw20 callr dma_wait + move a1,@DISPLAYON + + rets + + +******************************** +* Turn page flipping and erasure off. Setup for page0 +* Trashes scratch + + SUBR dpageflip_off + + clr a0 + move a0,@dpageflip + not a0 + move a0,@dpage + movi -4,a0 ;Page0 + move a0,@DPYSTRT + + rets + +#******************************* +* Blank display by using HEBLNK +* Trashes scratch + + SUBRP display_blank + dint +#lp move @VCOUNT,a0 + cmpi EOSINT,a0 + jrlt #lp + move @HSBLNK,a0 ;Blank screen + move a0,@HEBLNK + eint + + rets + +#******************************* +* Unblank display by resetting HEBLNK +* Trashes scratch + + SUBRP display_unblank + + dint +#lp move @VCOUNT,a0 + cmpi EOSINT,a0 + jrlt #lp + movi HEBLNKINIT,a0 + move a0,@HEBLNK + eint + + rets + + +************************************************************************** +* * +* CRINIT - COLOR RAM INITIALIZATION, FIRST CLEAR ALL COLOR RAM, THEN * +* FILL WITH PALETTES. * +* * +************************************************************************** +CRINIT + MMTM SP,A0,A1,A2,A6 + MOVI COLRAM,A1 + CLR A0 + MOVI 10000H,A6,L +*CLEAR ALL COLOR PALETTES +CRINIT1 + MOVE A0,*A1+,L ;STUFF TWO WORDS AT A TIME + DSJS A6,CRINIT1 + + MMFM SP,A0,A1,A2,A6 + RETS + +************************************************************************** +* * +* CRLOAD - LOAD COLOR RAM FROM A ROM TABLE * +* A1 = START OF ROM TABLE * +* A2 = COLOR RAM START ADDRESS * +* A6 = PALETTE COUNT * +* * +************************************************************************** +CRLOAD + MMTM SP,A0,A1,A2 +CRLOAD1 + MOVE *A1+,A0,W ;GRAB FIRST COLOR FROM THIS TABLE + JRN CRLOAD4 ;BR = NULL PALETTE +CRLOAD3 + MOVE A0,*A2,W ;STUFF COLOR + MOVE *A1+,A0,W ;GRAB NEXT COLOR FROM THIS TABLE + JRN CRLOAD4 ;BR = NEXT PALETTE + ADDK 16,A2 ;INC THIS WAY SO WE DON'T OVERRUN PALETTES + JRUC CRLOAD3 + +CRLOAD4 + ADDI 1000H,A2 ;NEXT PALETTE + SRL 12,A2 + SLL 12,A2 ;MASK OFF LOW BULLSHIT + DSJ A6,CRLOAD1 + + MMFM SP,A0,A1,A2 + RETS + + +******************************** +* CLEAR THE SCREEN (Kill this, only used by diagnostics) +* only call with interrupts disabled and the dma shut down, otherwise +* use clr_scrn + +SCRCLR CLR A0 + + MMTM SP,A1,A2 + CLR A1 + MOVE A1,@CMAPSEL ;SELECT COLOR MAP 0 + MOVI SCREEN,A1 + MOVI (SCRNE-SCREEN)/32,A2 +SCRLP MOVE A0,*A1+,L + DSJS A2,SCRLP + + MMFM SP,A1,A2 + RETS + + + +******************************** +* Clear screen routine + + SUBR CLR_SCRN + + mmtm sp,a1,a2,a3 + move @DISPLAYON,a3 +; clr a1 +; move a1,@DISPLAYON + callr dmaq_wait ;wait on dma + clr a0 + move a0,@CMAPSEL ;Select color map 0 + movi SCREEN,a1,L + movi ((SCRNE-2000H)-SCREEN)/32,a2,L +clrlp move a0,*a1+,L + dsjs a2,clrlp + move a3,@DISPLAYON + mmfm sp,a1,a2,a3 + rets + + +******************************** +* Animation list processor (JSRP) +* A1=Mode: 0=Process current frame +* 1=Process to end of list +* 4=Process current frame, no sleep (time retrn'd in a0) +* A8=*Object +* A9=*Ani list +* Rets: +* C set if end of animation list was hit +* A9=* to next frame or end of list +* Trashes scratch +* +* Animation script format +* .long *Image header or 0 if end +* .word Sleep time <-- BITS 0 - 7 ARE THE SLEEP TIME +* <-- BITS 8 -15 ARE THE FLAGS: +* Bit # Flag +* ----- ---- +* 8-12 Unused +*BNEWPAL equ 13 13 New palette address is specified +*BFLIPBIT equ 14 14 New flip bits are specified +* Flag hierarchy: 15-8 +* Options should follow in this order + + +FRANIM + PUSHP a3,a4 + + cmpi ROM,a9 ;Check for bogus script pointer + jrlo franerr + + move a1,a3 ;A3=Mode + +franl move *a9+,a1,L + jrz frannd ;End? + + move *a8(OCTRL),a4 ;Current flags + move *a9+,a0 ;Sleep time + cmpi >100,a0 + jrlo fran2 ;Just sleep? + + PUSH a1,a2,a7 + + btst BFLIPBIT,a0 + jrz frannobi ;No flip? + move *a9+,a2 ;Get the new flip flags + andni (M_FLIPV|M_FLIPH),a4 ;Clear the current flip status + or a2,a4 ;Set flag bits + +frannobi + btst BNEWPAL,a0 + jrz frannopa ;No pal? + + move a0,a7 + move *a9+,a0,L ;Get *pal + calla pal_getf + jrz fran10 ;No palette available? + move a0,*a8(OPAL) ;Store new palette +fran10 + move a7,a0 +frannopa + PULL a1,a2,a7 + sll 32-8,a0 ;Kill special bits + srl 32-8,a0 + +fran2 + calla ANI ;Setup new animation + + cmpi 4,a3 + jreq fran3 ;One frame, no sleep? + + move a3,-*a12 + calla PRCSLP ;Sleep + move *a12+,a3 + jrnz franl ;Loop til end of list? + +fran3 + PULLP a3,a4 + clrc ;Clear end flag + RETP + +frannd + PULLP a3,a4 + setc ;Return with end flag set + RETP + + +franerr + .if DEBUG + LOCKUP + eint + .else + CALLERR 8,0 ;Bad franim list + .endif + jruc frannd + + +#*************************************************************** +* Animation list processor (Quick list version) (JSRP) +* A8=*Object +* A9=*FRANIM List +* Trashes A0-A4,A14,B0-B1 +* +* Script format +* .long *Image hdr or 0 if end +* .word Sleep time <-- BITS 0 - 7 ARE THE SLEEP TIME +* <-- BITS 8 -15 ARE THE FLAGS: +* BIT # FLAG +* ----- ---- +* 8-10,12 UNUSED +*BDELTAY equ 11 Word is added into YPOS +*BNEWPAL equ 13 New palette address is specified +*BFLIPBIT equ 14 New flip bits are specified +* Flag hierarchy: 15-8 Options should follow in this order + + +FRANIMQ + + cmpi ROM,a9 + jrhs frq80 ;Franim list OK? + + .if DEBUG + LOCKUP + eint + .else + CALLERR 8,0 ;Bad franim list + .endif + jruc #x + + +#lp move *a8(OCTRL),a4 ;Current flags + move *a9+,a0 ;Sleep time + cmpi >100,a0 + jrlo frq70 ;No special bits? + + btst BFLIPBIT,a0 ;New flip? + jrz frq40 + move *a9+,a2 ;Get the new flip flags + andni (M_FLIPV|M_FLIPH),a4 ;Clear the current flip status + or a2,a4 ;Set desired bits + +frq40 btst BNEWPAL,a0 ;New palette ? + jrz frq60 + + move a0,a2 + move a1,a3 + move *a9+,a0,L ;Get the palette address + calla pal_getf ;Get a color map assignment + jrz frq50 ;No palette available? + move a0,*a8(OPAL) ;Set new palette +frq50 move a2,a0 + move a3,a1 + +frq60 btst BDELTAY,a0 + jrz frq65 + move *a9+,a2 ;Get DY + move *a8(OYPOS),a3 + add a2,a3 + move a3,*a8(OYPOS) + +frq65 sll 32-8,a0 ;Kill special bits + srl 32-8,a0 + +frq70 calla ANI + calla PRCSLP ;Sleep + +frq80 move *a9+,a1,L ;Get frame + jrnz #lp + +#x RETP + + + +#***************************************************************************** +* Hardware security check code +* >A0=0 if OK +* Trashes scratch + +OFF .equ >7db0 +SEC .equ >1b14030-OFF +FAKEO .equ ->b00030+OFF + + SUBR security_chk + + PUSH a2,a3,a4 + clr a0 + movi 63,a3 +#lp move a3,a14 + callr #sc + or a2,a0 + subk 1,a3 + jrge #lp + PULL a2,a3,a4 + rets + +#sc + movi SEC+FAKEO,a1 + sll 15-5,a14 + add a14,a1 ;Add a bogus offset + subi FAKEO,a1 + move a14,*a1(OFF) ;Write 1 of 64 to sec + sub a14,a1 ;Sub offset so we read a different address + move *a1(OFF),a2 ;Read 1st sec value + sll 32-15,a2 + srl 32-6,a2 + sll 9,a2 ;Move to bits 9-14 + xor a14,a2 + sll 32-15,a2 ;Remove top bits + jrnz #x ;Bad value? + + add a14,a1 + srl 2+3,a14 + add a14,a1 + pushst + setf 6,0,0 + move *a1(OFF+9),a2 ;Read 2nd sec value + move a2,b1 + sll 24,b1 + getpc a4 + addi #sec_t-$,a4,W + add a4,a14 + move *a1(OFF+>19),a2 ;Read 3rd sec value + move a2,b0 + sll 16,b0 + or b0,b1 + move *a1(OFF+>29),a2 ;Read 4th sec value + move a2,b0 + sll 8,b0 + or b0,b1 + move *a1(OFF+>39),a2 ;Read 5th sec value + move a2,b0 + or b0,b1 + popst + move *a14+,a2,L + move b1,a1 + andi >3f3f3f3f,a1 + xor a1,a2 ;A2=0 if OK + +#x rets + + +#sec_t .long >21283b3b ;0 + .long >2439383b + .long >31283b3b + .long >302b3938 + .long >31283b3b + .long >302b3938 + .long >232f2f2f + .long >26383b3b + .long >21283b3b ;20 + .long >2439383b + .long >312a1224 + .long >302b1120 + .long >312a1224 + .long >302b1120 + .long >232d283b + .long >26383b3b + .long >2b3b3b3b ;40 + .long >2e2e2e2e + .long >39383b1b + .long >383b3b1b + .long >3b3b3b1b + .long >3a3a3a1a + .long >2b3b3b3b + .long >2e2e2e2e + .long >2b39383b ;60 + .long >2e2e2e2e + .long >393a1a18 + .long >383b1b1b + .long >3b3b1b1b + .long >3a3a1a18 + .long >2b39383b + .long >2e2e2e2e + .long >01202b3b ;80 + .long >0431283b + .long >11202b3b + .long >1021283b + .long >11202b3b + .long >1021283b + .long >03273b3b + .long >06302b39 + .long >09302b39 ;A0 + .long >0c232f2f + .long >19322e06 + .long >18312a12 + .long >19322e06 + .long >18312a12 + .long >0b31283b + .long >0e26383b + .long >03273b3b ;C0 + .long >06302b39 + .long >11202b3b + .long >1021283b + .long >13273938 + .long >12243938 + .long >03273b3b + .long >06302b39 + .long >0b31283b ;E0 + .long >0e26383b + .long >19322e06 + .long >18312a12 + .long >1b332f05 + .long >1a302b11 + .long >0b31283b + .long >0e26383b + .def secend +secend + + +#*************************************************************** +* Shake screen as if an earthquake is in effect +* A10 = # ticks to shake and power of shake +* Note: time to shake must be more than 6 ticks + + BSSX #SHK_ON,16 ;is a shake in progress? + BSSX #Y_ADJ,32 ;current deviation from rest + + SUBR SHAKER2 + + ;check for a valid a10 + move a10,a10 + jrn #done + jrz #done + + move @#SHK_ON,a0 + jrz #no_shake + + ;abort shake currently in progress + movi SHAKE_PID,a0 + calla KIL1C + move @#Y_ADJ,a14 + move @WORLDTLY,a0,L + sub a14,a0 + move a0,@WORLDTLY,L + +#no_shake + ;set the 'in progress' flag + movk 1,a14 + move a14,@#SHK_ON + + ;create the shaker process + CREATE SHAKE_PID,#shaker + +#done + rets + +#shaker + ;a9 = index into sine table + ;a10 = time left + ;a11 = original time left + + ;initialize + movi #last_entry,a9 + move a10,a11 + +#loop + ;calculate the new offset + + ;get the cosine + move a9,a14 + X16 a14 +; addi #cosine_table,a14 + addi #sine_table,a14 + move *a14,a0,W + + ;get the exp (index is 64 - (64 * a10 / a11) + move a10,a1 + X64 a1 + divu a11,a1 + neg a1 + addi 64,a1 + X16 a1 + addi #exp_table,a1 + move *a1,a1,W + + ;multiply + mpys a0,a1 + + ;scale + sra 5,a1 + mpyu a11,a1 + + move a1,@#Y_ADJ,L + + ;update the table pointer + dsj a9,#table_ok + movi #last_entry,a9 +#table_ok + + ;apply it + move @WORLDTLY,a14,L + add a14,a1 + move a1,@WORLDTLY,L + + ;nap + SLEEPK 1 + + ;undo it + move @#Y_ADJ,a14,L + move @WORLDTLY,a1,L + sub a14,a1 + move a1,@WORLDTLY,L + + ;loop + dsj a10,#loop + + ;all done + clr a14 + move a14,@#SHK_ON + move a14,@#Y_ADJ + DIE + + ;45-degree increments +;#cosine_table ;deg +; .word 724 ;315 +; .word 0 ;270 +;#sine_table ;deg +; .word -723 ;225 ;315 +; .word -1023 ;180 ;270 +; .word -723 ;135 ;225 +; .word 0 ;90 ;180 +; .word 724 ;45 ;135 +; .word 1024 ;0 ;90 +; .word 724 ;45 +; .word 0 ;0 +;#last_entry equ 7 + + ;36-degree increments +#cosine_table ;deg + .word 828 ;324 + .word 316 ;288 + .word -315 ;252 + .word -827 ;216 + .word -102 ;180 + .word -827 ;144 + .word -315 ;108 + .word 316 ;72 + .word 828 ;36 + .word 1024 ;0 + +#sine_table ;deg + .word -601 ;324 + .word -973 ;288 + .word -973 ;252 + .word -601 ;216 + .word 0 ;180 + .word 602 ;144 + .word 974 ;108 + .word 974 ;72 + .word 602 ;36 + .word 0 ;0 +#last_entry equ 9 + + ;30-degree increments +;#cosine_table ;deg +; .word 887 ;330 +; .word 512 ;300 +; .word 0 ;270 +;#sine_table ;deg +; .word -511 ;240 ;330 +; .word -886 ;210 ;300 +; .word -1023 ;180 ;270 +; .word -886 ;150 ;240 +; .word -511 ;120 ;210 +; .word 0 ;90 ;180 +; .word 512 ;60 ;150 +; .word 887 ;30 ;120 +; .word 1024 ;0 ;90 +; .word 887 ;60 +; .word 512 ;30 +; .word 0 ;0 +;#last_entry equ 11 + + ;values of e^(-x) for values from 0 to 7, in 64 divisions + ; e.g. e^-1.5 is the 32nd entry + ; all values are multiplied by 1024 +;#exp_table ;damps at speed 7 +; .word 1024,916,819,733,656,587,525,470 +; .word 420,376,337,301,269,241,216,193 +; .word 173,154,138,124,110,99,88,79 +; .word 71,63,56,50,45,40,36,32 +; .word 29,26,23,20,18,16,15,13 +; .word 12,10,9,8,7,6,6,5 +; .word 4,4,3,3,3,2,2,2 +; .word 2,1,1,1,1,1,1,0 + +;#exp_table ;damps at speed 6 +; .word 1024,930,846,769,699,636,578,525 +; .word 477,434,395,359,326,296,269,245 +; .word 223,202,184,167,152,138,125,114 +; .word 104,94,86,78,71,64,58,53 +; .word 48,44,40,36,33,30,27,24 +; .word 22,20,18,17,15,14,12,11 +; .word 10,9,8,7,7,6,5,5 +; .word 4,4,4,3,3,3,2,2 + +#exp_table ;damps at speed 5 + .word 1024,945,873,807,745,688,636,587 + .word 542,501,463,427,395,364,337,311 + .word 287,265,245,226,209,193,178,165 + .word 152,140,130,120,110,102,94,87 + .word 80,74,68,63,58,54,50,46 + .word 42,39,36,33,31,28,26,24 + .word 22,20,19,17,16,15,14,13 + .word 12,11,10,9,8,8,7,6 + +;#exp_table ;damps at speed 2 +; .word 1024,992,961,930,901,873,846,819 +; .word 794,769,745,722,699,677,656,636 +; .word 616,596,578,560,542,525,509,493 +; .word 477,463,448,434,420,407,395,382 +; .word 370,359,347,337,326,316,306,296 +; .word 287,278,269,261,253,245,237,230 +; .word 223,216,209,202,196,190,184,178 +; .word 173,167,162,157,152,147,143,138 + + +;original Shawn shaker + + .BSS AMP,16 + .BSS AMPCNT,16 + .BSS XSET,16 + .BSS YSET,16 + .BSS SHK_ON,16 + + SUBR SHAKER + + move @SHK_ON,a0 + jrnz #x + move a10,a11 + movk 2,a0 + move a0,@SHK_ON + divs a0,a11 + movk 6,a0 + move a0,@AMP + move a11,@AMPCNT + + CREATE0 shakelp +#x RETS + +;only shake vertically + +shakelp + .if 0 + move @AMP,a0 + calla RNDRNG0 + move a0,@XSET + move @AMP,a0 + calla RNDRNG0 + move a0,@YSET + move @HCOUNT,a14 + btst 0,a14 + jrz #shakey + + move @XSET,a1 + move @WORLDTLX,a0,L + sll 16,a1 + add a1,a0 + move a0,@WORLDTLX,L + SLEEPK 1 + move @XSET,a1 + move @WORLDTLX,a0,L + sll 16,a1 + sub a1,a0 + move a0,@WORLDTLX,L + jruc shakelp + .endif + +#shakey + move @AMP,a0 + calla RNDRNG0 + move a0,@YSET + + move @YSET,a1 + move @WORLDTLY,a0,L + sll 16,a1 + add a1,a0 + move a0,@WORLDTLY,L + SLEEPK 1 + move @YSET,a1 + move @WORLDTLY,a0,L + sll 16,a1 + sub a1,a0 + move a0,@WORLDTLY,L + move @AMPCNT,a2 + dec a2 + move a2,@AMPCNT + jrnz #ampok + move a11,@AMPCNT + move @AMP,a0 + cmpi 1,a0 + jrz #ampok + dec a0 + move a0,@AMP +#ampok + dsj a10,shakelp + move a10,@SHK_ON + + DIE + +#***************************************************************************** +* +* RETURN: a0 = start button bits +*----------------------------------------------------------------------------- + + SUBR get_all_starts_cur + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_start_cur + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_start_cur + or a0,a1 +#no_player2 + + move a1,a0 + rets + +#***************************************************************************** +* +* RETURN: a0 = start button bits +*----------------------------------------------------------------------------- + + SUBR get_all_starts_down + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_start_down + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_start_down + or a0,a1 +#no_player2 + + move a1,a0 + rets + +#***************************************************************************** +* +* RETURN: a0 = start bit +*----------------------------------------------------------------------------- + + SUBR get_start_cur + + sll 4,a0 ;x 16 bits + addi start_offs,a0 + move *a0,a0 + addi switches_cur,a0 + move *a0,a0 + andi 1,a0 + rets + +#***************************************************************************** +* +* RETURN: a0 = start bit +*----------------------------------------------------------------------------- + + SUBR get_start_down + + sll 4,a0 ;x 16 bits + addi start_offs,a0 + move *a0,a0 + addi switches_down,a0 + move *a0,a0 + andi 1,a0 + rets + + +start_offs .word 12h,15h + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_sticks_cur + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_stick_val_cur + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_stick_val_cur + or a0,a1 +#no_player2 + + move a1,a0 + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_sticks_cur2 + + clr a1 + + clr a0 ;player 1 + calla get_stick_val_cur + or a0,a1 + + movk 1,a0 ;player 2 + calla get_stick_val_cur + or a0,a1 + + move a1,a0 + rets + + +#***************************************************************************** +* +* INPUT: a0 = player number (0-3) +*----------------------------------------------------------------------------- +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_stick_val_cur + + + sll 4,a0 ;x 16 bits + addi joy_offs,a0 + move *a0,a0 + addi switches_cur,a0 + move *a0,a0 + andi 01111b,a0 + rets + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_sticks_down + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_stick_val_down + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_stick_val_down + or a0,a1 +#no_player2 + + move a1,a0 + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_sticks_down2 + + clr a1 + + clr a0 ;player 1 + calla get_stick_val_down + or a0,a1 + + movk 1,a0 + calla get_stick_val_down ;player 2 + or a0,a1 + + move a1,a0 + + rets + + +****************************************************************************** +* +* INPUT: a0 = player number (0-3) +*----------------------------------------------------------------------------- +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_stick_val_down + + sll 4,a0 ;x 16 bits + addi joy_offs,a0 + move *a0,a0 + addi switches_down,a0 + move *a0,a0 + andi 01111b,a0 + rets + +****************************************************************************** +* +* INPUT: a0 = player number (0-3) +*----------------------------------------------------------------------------- +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_stick_val_up + + sll 4,a0 ;x 16 bits + addi joy_offs,a0 + move *a0,a0 + addi switches_up,a0 + move *a0,a0 + andi 01111b,a0 + rets + +joy_offs .word 00h,08h,20h,28h + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_buttons_cur + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_but_val_cur + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_but_val_cur + or a0,a1 +#no_player2 + + move a1,a0 + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_buttons_cur2 + + clr a1 + clr a0 ;player 1 + calla get_but_val_cur + or a0,a1 + movk 1,a0 ;player 2 + calla get_but_val_cur + or a0,a1 + move a1,a0 + rets + + +#***************************************************************************** +* +* INPUT: a0 = player number (0-1) +*----------------------------------------------------------------------------- +* +* RETURN: a0 = button bits +*----------------------------------------------------------------------------- + + SUBR get_but_val_cur + + + PUSH a1 + move a0,a1 + sll 4,a1 ;x 16 bits + addi but_offs2,a1 + move *a1,a1 + addi switches_cur,a1 + move *a1,a1 + andi 011000b,a1 + + sll 4,a0 ;x 16 bits + addi but_offs,a0 + move *a0,a0 + addi switches_cur,a0 + move *a0,a0 + andi 0111b,a0 + or a1,a0 + PULL a1 + + rets + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_buttons_down + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_but_val_down + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_but_val_down + or a0,a1 +#no_player2 + + move a1,a0 + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_buttons_down2 + + clr a1 + clr a0 ;player 1 + calla get_but_val_down + or a0,a1 + movk 1,a0 ;player 2 + calla get_but_val_down + or a0,a1 + move a1,a0 + rets + + +****************************************************************************** +* +* INPUT: a0 = player number (0-1) +*----------------------------------------------------------------------------- +* +* RETURN: a0 = button bits +*----------------------------------------------------------------------------- + + SUBR get_but_val_down + + PUSH a1 + move a0,a1 + sll 4,a1 ;x 16 bits + addi but_offs2,a1 + move *a1,a1 + addi switches_down,a1 + move *a1,a1 + andi 011000b,a1 + + sll 4,a0 ;x 16 bits + addi but_offs,a0 + move *a0,a0 + addi switches_down,a0 + move *a0,a0 + andi 0111b,a0 + or a1,a0 + PULL a1 + + rets + +****************************************************************************** +* +* INPUT: a0 = player number (0-1) +*----------------------------------------------------------------------------- +* +* RETURN: a0 = button bits +*----------------------------------------------------------------------------- + + SUBR get_but_val_up + + PUSH a1 + move a0,a1 + sll 4,a1 ;x 16 bits + addi but_offs2,a1 + move *a1,a1 + addi switches_up,a1 + move *a1,a1 + andi 011000b,a1 + + sll 4,a0 ;x 16 bits + addi but_offs,a0 + move *a0,a0 + addi switches_up,a0 + move *a0,a0 + andi 0111b,a0 + or a1,a0 + PULL a1 + + rets + +but_offs .word 04h,0ch,24h,2ch +but_offs2 .word 20h-3,24h-3 +;but_offs2 .word 20h-4,22h-4 + +#***************************************************************************** +* Get random # with mask +* A0=Mask +* >A0=Rnd # (Pass CC) +* Trashes scratch + + SUBRP rnd + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + and a1,a0 + rets + + +#***************************************************************************** +* Quickly produce a random # in range 0-X +* A0=X +* >A0=Random # (0 to A0) (No CC) +* Trashes scratch + + SUBR rndrng0 + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + addk 1,a0 + mpyu a1,a0 ;Condition codes not valid! + + rets + + +#***************************************************************************** + .end + + + + + \ No newline at end of file diff --git a/BACKUP/WRESTLE.ASM b/BACKUP/WRESTLE.ASM new file mode 100644 index 0000000..b487c54 --- /dev/null +++ b/BACKUP/WRESTLE.ASM @@ -0,0 +1,7143 @@ +************************************************************** +* +* Software: Jamie Rivett, Mark Turmell, Jason Skiles +* Initiated: 12/7/93 +* +* Modified: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "wrestle.asm" + .title "wrestling game program" + .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 "wwfsec.equ" + .include "game.equ" + .include "audit.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .INCLUDE "SOUND.EQU" + + .INCLUDE "NEWFONT.TBL" + .include "imgtbl.glo" + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + + + .if DEBUG + +SCRT_DEBUG equ 0 +DIR_DEBUG equ 0 +COL_DEBUG equ 1 + + .else + +SCRT_DEBUG equ 0 +DIR_DEBUG equ 0 +COL_DEBUG equ 0 + + .endif + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF CREATE_TEXT_LINE + .REF HAVE_WE_AUDITED_THIS_GAME + + .REF MATCH_TIMERS + .REF KILL_AUD + .REF CLEAR_COUNTERS + .def update_timer + + .REF WHICH_NAME + .ref SHIFT_BARS_IN_Z + + .REF SET_LOWER_VOL + + .REF CLEAR_SPEECH_REPEAT + + .ref WALK_SOUND + .ref pin_speed_in_case + .ref entered_inits, ADD_VOICE + .ref RESETUP_PROGRESS + .ref SPECIAL_WIPEOUT + .ref SORT_OUT_WRESTLER_NUM + .ref CURRENT_LADDER,NUM_OPPS + .ref OPEN_PROGRESS_SCREEN + .ref INIT_LADDER_TABLE + .ref DONE_HOWARD + .ref SNDSND,init_special_objlist + .REF TEMP_LADDER,GAME_BEATEN + .REF THIS_GAME_IS_BEATEN + + .ref square_root + .ref clear_damage_log + .ref getup_meter + + .ref move_bret + .ref move_bam,move_doink,move_razor + .ref move_taker,move_yoko,move_shawn,move_lex + + + .ref bret_ani_init + .ref doink_ani_init,razor_ani_init,shawn_ani_init + .ref bam_ani_init,taker_ani_init,yoko_ani_init + .ref lex_ani_init + + ;from ANIM.ASM + .ref set_images,animate_wrestler + .ref change_anim1,change_anim1a,change_anim2 + .ref change_anim_anim + + ;from ATTRACT.ASM + .ref attract_mode + + ;from AUDIT.ASM + .ref AUD,AUD1,STORE_AUDIT,CR_STRTP,CR_CONTP,P_START,P_CONT + .ref GET_AUD,GET_ADJ,LCOIN,CCOIN,RCOIN,XCOIN,SLAM_SW,SERVICE + .REF DBV + + ;from BAKGND.ASM + .ref BGND_UD1,BAKMODS + + ;from COLLIS.ASM + .ref overlap_collision + .ref check_collisions,set_collision_boxes + + ;from CROWD.ASM + .ref crowd_anim + + ;from DCSSOUND.ASM + .ref snd_update,VOLBTN_PRESS,triple_sound + + ;from DIAG.ASM + .ref POWERTST,POWERCMOS,READ_DIP + + ;from DRONE.ASM + .ref drone_main + + ;from HSTD.ASM + .ref INIT_TAB + + ;from LIFEBAR.ASM + .ref meters,init_life_data,get_health + + ;from MAIN.ASM + .ref dpageflip,IRQSKYE,dirqtimer,WDOGRAM,init_all + + ;from MPROC.ASM + .ref process_dispatch + + ;from PAL.ASM + .ref pal_getf,PALFRAM + + ;from ROBO.ASM + .ref robo_check + + ;from ROPES.ASM + .ref rope,rope_command + + ;from SELECT.ASM + .ref select_screen,index1,index2,wrestler_audits + .ref pregame_show + + ;from STRING.ASM + .ref setup_message,print_string_C2 + + ;from TEST.ASM + .ref DIAG,CKDIAG + + ;from UTIL.ASM + .ref get_stick_val_cur,get_stick_val_up,get_stick_val_down + + .ref get_but_val_cur,get_but_val_down,get_but_val_up + + .ref ck_climb_out_side + .ref ck_climb_out_top + .ref ck_climb_out_bot + .ref ck_climb_in_bot + .ref ck_climb_in_top + .ref ck_climb_in_side + + .ref dma_bog,dma_meter,QDMAN + + .ref D2ST2B03 + + .REF DAM_MULT,CHECK_COMBO_GO + .REF DO_CROWD_CHEER + + .ref are_we_waiting_f +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + + .DEF CLEAR_PROCESSES + + .def COLRPRC,obj_look,wrestler_veladd,set_process_ptr,ani_init + .def mainlp, swstacktop, swstack_p,PCMOSRET + + ;for TODDVIEW + .def punch_dtime1,powerp_dtime1,kick_dtime1,block_dtime1 + .def powerk_dtime1 + + .def powerk_dtime1 + + + ;for ROPES.ASM + .def ring_mod + + .ref _serial_number + .ref _man_date + .ref InitPIC + .ref RemapIO + .ref SecFuncCheck + + .def _coin_addr + .def _switch_addr + .def _switch2_addr + .def _watchdog_addr + .def _dipswitch_addr + .def _sound_addr + .def _soundirq_addr + .def _coin_counter_addr + + + .globl _coin_addr + .globl _switch_addr + .globl _switch2_addr + .globl _watchdog_addr + .globl _dipswitch_addr + .globl _sound_addr + .globl _soundirq_addr + .globl _coin_counter_addr + + + .bss _coin_addr,32 + .bss _switch_addr,32 + .bss _switch2_addr,32 + .bss _watchdog_addr,32 + .bss _dipswitch_addr,32 + .bss _sound_addr,32 + .bss _soundirq_addr,32 + .bss _coin_counter_addr,32 + +;uninitialized ram definitions + BSSX no_pin_check,16 + + BSSX PSTATUS ,16 ;Player in game bits (0-3) + BSSX OLD_PSTATUS ,16 ;Previous games PSTATUS + + .if DEBUG + BSSX SLDEBUG ,16 ;Shawn's debug + BSSX slowmotion ,16 ;!0=Frames of delay for slow motion + BSSX slowmo ,16 ;!0=Frames of delay for slow motion + .endif + + BSSX PCNT ,16 ;Main loop cnt + + BSSX swstack_p ,32 ;*Stack position + BSSX swstackbot ,16*64 ;Bottom of stack + .bss swstacktop ,0 ;Top of stack + + BSSX COLRTEMP ,16*16 ;RAM COPY OF CYCLING COLORS + + BSSX GAMSTATE ,16 ;Game state: See game.equ + + BSSX HALT ,16 ;FREEZE ALL OBJECTS (NO VEL UPDATE) + BSSX NO_START ,16 ;FLAG 0=OKAY, 1=NOT RIGHT NOW. + + BSSX WSPEED ,16 + BSSX WFLG ,16 ;0=NOT ON, 1=YES IT IS ON + .bss WNDWFLG ,16 ;0=WINDOW SHOULD CLOSE, 1=NO WINDOW + BSSX OBJPTR ,32 ;PNTR FOR WINDOW OBJECT + + + .bss PALTMP ,13*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM + + BSSX match_cnt, 16 + + BSSX debug_collis, 16 + + BSSX DIAG0, 32 + BSSX DIAG1, 32 + + BSSX process_ptrs, 32*NUM_WRES ;long * number wrestlers +p2_process .equ process_ptrs+32 + .def p2_process + + .bss wres0_objs, 32*MAX_PIECES + .bss wres1_objs, 32*MAX_PIECES + .bss wres2_objs, 32*MAX_PIECES + .bss wres3_objs, 32*MAX_PIECES + .bss wres4_objs, 32*MAX_PIECES + .bss wres5_objs, 32*MAX_PIECES + .bss wres6_objs, 32*MAX_PIECES + .bss wres7_objs, 32*MAX_PIECES + + BSSX round_tickcount,16 + + + BSSX wrest_joystat, 32*16*NUM_WRES ;16 bit joyval: 16 bit count + + BSSX wrestler_x, 32*NUM_WRES ;long * number wrestlers + BSSX wrestler_y, 32*NUM_WRES ;long * " + BSSX wrestler_z, 32*NUM_WRES ;long * " + + BSSX match_time, 16*3 ;frac, 1's, 10's + + BSSX match_over, 16 ;0=not over, !0=over + BSSX match_realtime, 16 ;actual seconds elapsed + BSSX match_winner, 16 ;just like PSTATUS + + BSSX secret_damage, 16 ;0=none,1=plyr 1,2=plyr 2 + BSSX fight_debug, 16 + + BSSX p1winstreak, 16 ;player 1 winning streak + BSSX p2winstreak, 16 ;player 2 winning streak + + BSSX current_round, 16 ;current round in match (1+) + BSSX p1rounds, 16 ;player 1 rounds won + BSSX p2rounds, 16 ;player 2 rounds won + + BSSX p1cpu_ladder, 16 ;1 player game matchup #. Used + BSSX p2cpu_ladder, 16 ;for ladder of progression + + ;keep these in order and adjacent + BSSX front_rproc, 32 ;front ropes proc + BSSX back_rproc, 32 ;back ropes proc + BSSX left_rproc, 32 ;left ropes proc + BSSX right_rproc, 32 ;right ropes proc + + BSSX total_matches, 16 ;matches since attract mode +;MJT Start + BSSX no_debris, 16 ;Don't allow debris - it bogs +;MJT End + + .if DEBUG + BSSX stay_down, 16 ;flag - don't dec GETUP_TIME + .endif + + .text + + +****************************************************************************** + SUBR InitAddresses + movi COINS,a0 + move a0,@_coin_addr,L + movi SWITCH,a0 + move a0,@_switch_addr,L + movi SWITCH2,a0 + move a0,@_switch2_addr,L + movi WATCHDOG,a0 + move a0,@_watchdog_addr,L + movi DIPSWITCH,a0 + move a0,@_dipswitch_addr,L + movi SOUND,a0 + move a0,@_sound_addr,L + movi SOUNDIRQ,a0 + move a0,@_soundirq_addr,L + movi COIN_COUNTERS,a0 + move a0,@_coin_counter_addr,L + movi VMUX_INITMODE,a0 + move a0,@VMUX_CONTROL + rets + +****************************************************************************** + SUBR AddressSet1 + movi COINS_M1,a0 + move a0,@_coin_addr,L + movi SWITCH_M1,a0 + move a0,@_switch_addr,L + movi SWITCH2_M1,a0 + move a0,@_switch2_addr,L + movi WATCHDOG_M1,a0 + move a0,@_watchdog_addr,L + movi DIPSWITCH_M1,a0 + move a0,@_dipswitch_addr,L + movi SOUND_M1,a0 + move a0,@_sound_addr,L + movi SOUNDIRQ_M1,a0 + move a0,@_soundirq_addr,L + movi COIN_COUNTERS_M1,a0 + move a0,@_coin_counter_addr,L + movi (VMUX_INITMODE|VMUX_MODE1),a0 + move a0,@VMUX_CONTROL + rets + +****************************************************************************** + SUBR AddressSet2 + movi COINS_M2,a0 + move a0,@_coin_addr,L + movi SWITCH_M2,a0 + move a0,@_switch_addr,L + movi SWITCH2_M2,a0 + move a0,@_switch2_addr,L + movi WATCHDOG_M2,a0 + move a0,@_watchdog_addr,L + movi DIPSWITCH_M2,a0 + move a0,@_dipswitch_addr,L + movi SOUND_M2,a0 + move a0,@_sound_addr,L + movi SOUNDIRQ_M2,a0 + move a0,@_soundirq_addr,L + movi COIN_COUNTERS_M2,a0 + move a0,@_coin_counter_addr,L + movi (VMUX_INITMODE|VMUX_MODE2),a0 + move a0,@VMUX_CONTROL + rets + +****************************************************************************** + SUBR AddressSet3 + movi COINS_M3,a0 + move a0,@_coin_addr,L + movi SWITCH_M3,a0 + move a0,@_switch_addr,L + movi SWITCH2_M3,a0 + move a0,@_switch2_addr,L + movi WATCHDOG_M3,a0 + move a0,@_watchdog_addr,L + movi DIPSWITCH_M3,a0 + move a0,@_dipswitch_addr,L + movi SOUND_M3,a0 + move a0,@_sound_addr,L + movi SOUNDIRQ_M3,a0 + move a0,@_soundirq_addr,L + movi COIN_COUNTERS_M3,a0 + move a0,@_coin_counter_addr,L + movi (VMUX_INITMODE|VMUX_MODE3),a0 + move a0,@VMUX_CONTROL + rets + +****************************************************************************** + SUBR AddressSet4 + movi COINS_M4,a0 + move a0,@_coin_addr,L + movi SWITCH_M4,a0 + move a0,@_switch_addr,L + movi SWITCH2_M4,a0 + move a0,@_switch2_addr,L + movi WATCHDOG_M4,a0 + move a0,@_watchdog_addr,L + movi DIPSWITCH_M4,a0 + move a0,@_dipswitch_addr,L + movi SOUND_M4,a0 + move a0,@_sound_addr,L + movi SOUNDIRQ_M4,a0 + move a0,@_soundirq_addr,L + movi COIN_COUNTERS_M4,a0 + move a0,@_coin_counter_addr,L + movi (VMUX_INITMODE|VMUX_MODE4),a0 + move a0,@VMUX_CONTROL + rets + +AddressTable .long InitAddresses, AddressSet1, AddressSet2 + .long AddressSet3, AddressSet4 + +****************************************************************************** +; A0 = Address Set to install (0-4) + .globl SetAddresses + SUBR SetAddresses + move a0,a0 + jrn _invalid + cmpi 4,a0 + jrgt _invalid + sll 5,a0 + addi AddressTable,a0 + move *a0,a0,L + pushst + dint + call a0 + popst +_invalid + rets + +**************************************************************** +* Reset entry point + + SUBR init_prog + + dint + setf 16,1,0 ;Field0 = Word sign extend + setf 32,0,1 ;Field1 = Long word + movi STCKST,sp ;Top of stack + + calla InitPIC + +; .if DEBUG +; move a0,@>1e00000 ;Clr FPGA rom protect +; .endif + + ;>Manual sound board reset +; Moved to PU DIAGS +; movi 0fe00h,a0 ;Hit reset bit +; move a0,@SOUND +; movi 100,a0 ;Wait for it to catch +; dsj a0,$ +; movi 0ff00h,a0 ;Let it go +; move a0,@SOUND + + move @WDOGRAM,a0,L + cmpi WDOGNUM,a0 + jrne initp50 ;Powerup? + + move @dirqtimer,a0 + cmpi 400,a0 + jrhs #lockup ;Main loop died? + + + .if TUNIT + move @TALKPORT,a0 ;Check if watchdog was real + btst B_WDOG,a0 ;Bit should be low if dog fired + jrnz initp50 ;No watchdog? + .endif + + movk AUD_LOCKUP,a0 ;watchdog + calla AUD1 + jruc #cont + +#lockup + + movi AUD_LOCKUP,a0 ;main loop lockup + calla AUD1 + +#cont + .if DEBUG + .else + CALLERR 11,0 ;Watch dog + .endif + + + movk AUDSTAT,a0 + calla GET_AUD ;0=AMode, 1=Game + move a1,a1 + jrz WARMSET ;Attract mode glitch? + +initp50 + calla READ_DIP ;skip if UJ2 bit 6 set + btst 6,a0 + jrnz #skip_powerst + jauc POWERTST ;board test etc... +#skip_powerst + + +****************************************************************************** + + SUBR WARMSET + + dint + setf 16,1,0 ;Field0 = Word sign extend + setf 32,0,1 ;Field1 = Long word + movi STCKST,sp ;Top of stack + + calla InitPIC + + jauc POWERCMOS +PCMOSRET + + calla init_all ;Initialize hardware +; These are stored in these reggies to protect them + move b5,@_serial_number,L + move b6,@_man_date,L + calla SecFuncCheck ;Check to make sure security functions + ;have not been mucked with + calla INIT_TAB ;Reset todays high score table + + calla CKDIAG + jrz main_go ;No diag switches closed? + + CREATE DIAG_PID,DIAG ;Fire off the diag process + jruc mainlp +main_go + CREATE AMODE_PID,attract_mode ;Start the attract mode + + ;fall through + +******************************** +* Main loop + + + clr a14 + move a14,@fight_debug + +mainlp + calla process_dispatch + + move a13,a13 + jrz mainpok + + .if DEBUG + LOCKUP + eint + .else + CALLERR 10,0 + .endif + +mainpok + + move @RAND,a1,L ;>Randomize + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + .if DEBUG + move @dma_meter,a14 + jrz #no_dmaline + calla draw_dma_meter +#no_dmaline + .endif + + +;isn't there a less obvious place +;that we can remap the IO ??? + + btst 5,a1 + jrz _no_remap + calla RemapIO +_no_remap + + callr switch_unstack + calla snd_update ;Update the sound calls + + .if DEBUG + callr cputime_calcfree + .endif + + move @PCNT,a0 + addk 1,a0 + move a0,@PCNT + + jruc mainlp + + +#*************************************************************** +* Unstack switch queue + + + SUBRP switch_unstack + + +#lp move @swstack_p,a3,L + cmpi swstacktop,a3 ;Stack at start? + jreq #x ;Empty? + move @FREE,a0,L + jrz #x ;No processes left? + + move *a3+,a0 ;Get entry + move a3,@swstack_p,L ;Update stack + sll 32-5,a0 ;Max switch # 31 + srl 32-5-4,a0 ;*16 + move a0,a2 + add a0,a2 + add a0,a2 ;*3 + addi switch_t,a2 + move *a2+,a1 + jrz #lp ;No PID? + move *a2+,a7,L ;*Code + movi ACTIVE,a13 ;*Proc list + calla GETPRC + jruc #lp + +#x rets + + +switch_t ;(Process ID or 0, *Routine) ;Put in audit?? + + + .if TUNIT + WL 0,0 ;S0 + WL 0,0 ;S1 + WL 0,0 ;S2 + WL 0,0 ;S3 + WL 0,0 ;S4 + WL 0,0 ;S5 + WL 0,0 ;S6 + WL 0,0 ;S7 + WL 0,0 ;S8 + WL 0,0 ;S9 + WL 0,0 ;S10 + WL 0,0 ;S11 + WL 0,0 ;S12 + WL 0,0 ;S13 + WL 0,0 ;S14 + WL 0,0 ;S15 + + WL LC_PID,LCOIN ;S16 - LEFT COIN (1) + WL RC_PID,RCOIN ;S17 - RIGHT COIN (2) + WL PSWPID,plyr_strtb1 ;S18 - START 1 + WL SLAM_PID,SLAM_SW ;S19 - SLAM TILT + WL DIAG_PID,DIAG ;S20 - TEST + WL PSWPID,plyr_strtb2 ;S21 - START 2 + WL DIAG_PID,SERVICE ;S22 - SERVICE CREDIT + WL CC_PID,CCOIN ;S23 - CENTER COIN (3) + WL CC_PID,XCOIN ;S24 - COIN 4 + WL 0,0 ;S25 - START 3 + WL 0,0 ;S26 - START 4 + WL VOLBTN_PID,VOLBTN_PRESS ;S27 - VOLUME DOWN + WL VOLBTN_PID,VOLBTN_PRESS ;S28 - VOLUME UP + WL 0,0 ;S29 + WL 0,0 ;S30 + WL CC_PID,DBV ;S31 + + .else + + WL PSWPID,plyr_strtb4 ;S7 IO20 - START 4 + WL 0,0 ;S1 + WL 0,0 ;S2 + WL 0,0 ;S3 + WL 0,0 ;S4 + WL 0,0 ;S5 + WL 0,0 ;S6 + WL PSWPID,plyr_strtb3 ;S7 - START 3 + WL 0,0 ;S8 + WL 0,0 ;S9 + WL 0,0 ;S10 + WL 0,0 ;S11 + WL 0,0 ;S12 + WL 0,0 ;S13 + WL 0,0 ;S14 + WL CC_PID,XCOIN ;S15 - COIN 4 + + WL LC_PID,LCOIN ;S16 - LEFT COIN (1) + WL RC_PID,RCOIN ;S17 - RIGHT COIN (2) + WL PSWPID,plyr_strtb1 ;S18 - START 1 + WL SLAM_PID,SLAM_SW ;S19 - SLAM TILT + WL DIAG_PID,DIAG ;S20 - TEST + WL PSWPID,plyr_strtb2 ;S21 - START 2 + WL DIAG_PID,SERVICE ;S22 - SERVICE CREDIT + WL CC_PID,CCOIN ;S23 - CENTER COIN (3) + WL 0,0 ;S24 + WL 0,0 ;S25 + WL 0,0 ;S26 + WL 0,0 ;S27 + WL 0,0 ;S28 + WL 0,0 ;S29 + WL 0,0 ;S30 - Snd IRQ + WL 0,0 ;S31 + .endif + +are_we_waiting_for_inits + move a8,a0 + addi HI_INPUT_PID,a0 + clr a1 + not a1 + jauc EXISTP + +#*************************************************************** +* plyr_strtbx - Process player start button (Process) + + SUBR plyr_strtb1 + clr a8 ;A8=Player # + jruc #go + + SUBR plyr_strtb2 + movk 1,a8 + +#go + + move @GAMSTATE,a0 + jrn #die ;In diagnostics? + + cmpi INPARTY,a0 + jreq #die ;don't interrupt the win sequence + + move @PSTATUS,a14 + btst a8,a14 + jrnz #die ;Player already started? + +;New start. kill the player's score and win count + + PUSH a0 + MOVI process_ptrs,A2 + movi p1winstreak,a0 + movi entered_inits,a1 + movi MATCH_TIMERS,a3 + move a8,a8 + jrz #rstp1scor + MOVI process_ptrs+020H,A2 + movi p2winstreak,a0 + movi entered_inits+020h,a1 + movi MATCH_TIMERS+020H,a3 +#rstp1scor + clr a14 + move a14,*a0,W ;wins + MOVE A14,*A1,L + MOVE A14,*A2,L + MOVE A14,*A3,L + + PULL a0 + + move @OLD_PSTATUS,a14 + btst a8,a14 + jrz #reg ;Player on buyin screen? +;On the buyin screen. + cmpi INSELECT,a0 + jreq #start_from_waitcont + LOCKUP + +#reg + +; cmpi INWAITCONT,a0 +; jreq #start_from_waitcont + + calla CR_STRTP ;not a continue. die on insuff $$ + jalo #die + + move @GAMSTATE,a0 + cmpi INAMODE,a0 + jreq #start_from_amode ;New start from amode? + + cmpi INGAMEOVER,a0 + jreq #start_from_gameover ;just like attract mode, really + + cmpi INSELECT,a0 + jreq #start_from_select + + cmpi INPREGAME,a0 + jreq #start_from_pregame + + cmpi INGAME,a0 + jreq #start_from_midgame + + LOCKUP + + jruc #die ;cases we forgot... + +#start_from_midgame + + movi AUD_TOTSTARTS,a0 ;inc total starts audit + calla AUD1 + + calla P_START ;eat the creds + + CREATE0 game_interrupt ;create the game proc + + jruc #set_pstatus_and_die + +#start_from_waitcont + + callr are_we_waiting_for_inits + jrnz #die + + calla CR_CONTP ;enuff creds? + jalo #die + calla P_CONT ;eat the creds + + movi AUD_CONTTAKN,a0 ;inc continues taken audit + calla AUD1 + + + jruc #set_pstatus_and_die ;waitcont watches for PSTATUS + ; changes, so we don't need to + +#start_from_amode + + clr a0 + + move a0,@are_we_waiting_f + move a0,@OLD_PSTATUS + CALLA INIT_LADDER_TABLE + +#start_from_gameover + + movk 1,a0 + move a0,@no_pin_check + + movi AUD_PRESTARTS,a0 ;inc attract mode starts audit + calla AUD1 + + movi AUD_TOTSTARTS,a0 ;inc total starts audit + calla AUD1 + + calla P_START ;eat the creds + + +;If any button is pressed at the same time as the start button, +;then skip all select stuff. Otherwise, game acts as it will on location + + clr a0 + move a0,@match_cnt + + + .if DEBUG + move a0,@skip_select + move a0,@fight_debug + + .ref get_all_buttons_cur2 + calla get_all_buttons_cur2 + jrz #nobutn + + movk 1,a0 + move a0,@skip_select + move a0,@fight_debug + + .ref get_all_sticks_cur2 + calla get_all_sticks_cur2 + jrz #nobutn + + movi -1,a0 + move a0,@skip_select + +#nobutn + .endif + + + CREATE0 game_loop ;create the game proc + jruc #set_pstatus_and_die + + +#start_from_select + callr are_we_waiting_for_inits + jrnz #die + + movi AUD_TOTSTARTS,a0 ;creds have already been checked, + calla AUD1 ; so we know we have enough. + calla P_START + jruc #set_pstatus_and_die + + +#start_from_pregame + movi AUD_TOTSTARTS,a0 ;total starts + calla AUD1 + calla P_START ;eat creds + CREATE0 game_loop ;make a new game loop. This will + clr a0 + move a0,@are_we_waiting_f + jruc #set_pstatus_and_die ;kill the old one and drop back + ;into the select screen. + +#set_pstatus_and_die + movk 1,a0 ;set the player bit in PSTATUS + sll a8,a0 + move @PSTATUS,a14 + or a0,a14 + move a14,@PSTATUS + movi 49h,a0 + calla triple_sound + + clr a0 + MOVE A0,@IRQSKYE + + movi AUD_WINSTREAK,A0 + calla KILL_AUD + movi AUD_PINSPEED,A0 + calla KILL_AUD + movi AUD_BEATEN,A0 + calla KILL_AUD + +#die + DIE + + +#***************************************************************************** +* game loop +* + + STRUCTPD + LONG BLINK_PROC + + SUBRP game_interrupt + +;Someone has bought in during gameplay of a one player game! +;Print challenger comes message + + movk 1,a0 + move a0,@HALT + +;If a player buys in during a one player game. We must decrement pxcpu_ladder +;because we haven't defeated that cpu opponent yet! + + MOVE @CURRENT_LADDER,A0,L + SUBI 020H,A0 + MOVE A0,@CURRENT_LADDER,L + +;If match/rnd winner anouncement is on screen, kill it + movi ANNC_PID,a0 + clr a1 + not a1 + calla EXISTP + jrz #nope + move a0,a7 + + move *a0(BLINK_PROC),a0,L + jrz #no_blink_proc + calla KILL +#no_blink_proc + move a7,a0 + calla KILL + + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + calla obj_del1c ;delete text/plates + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ;delete text/plates + +#nope + + movi LN1b_setup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a0,@mess_objid ;OBJ ID's for text + movi #str_game,a4 + calla print_string_C2 + + movi LN2b_setup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a0,@mess_objid ;OBJ ID's for text + movi #str_over,a4 + calla print_string_C2 + + .ref fade_down_half + movi #no_fade,a10 + CREATE0 fade_down_half + + SLEEP 120 + + movk 1,a0 + move a0,@no_pin_check + + SUBRP game_loop + + .if DEBUG + + movk 3,a0 ;2 humans + .ref skip_select + move @skip_select,a14 + jrz #noskp + jrp #nodrn + movk 2,a0 ;1 human 1 drone +#nodrn + move a0,@PSTATUS +#noskp + .endif + + JSRP robo_check + JSRP select_screen + clr a0 + move a0,@no_pin_check + +do_pregame + movi INPREGAME,a14 ;set GAMSTATE + move a14,@GAMSTATE + movi PREGAME_PID,a14 ;set our PID + move a14,*a13(PROCID) + + move @match_cnt,a0 + inc a0 + move a0,@match_cnt + + move @PSTATUS,A0 + CMPI 3,A0 + JREQ NOT_FINISHED_GAME + + MOVE @CURRENT_LADDER,A0,L + .REF TEMP_LADDER +; CMPI LADDER+020H,A0 + CMPI TEMP_LADDER-020H,A0 + JRNE NOT_FINISHED_GAME + JSRP GAME_BEATEN + JSRP CREATE_TEXT_LINE + JAUC THIS_GAME_IS_BEATEN + +NOT_FINISHED_GAME + JSRP pregame_show + +#game + movi INGAME,a14 ;set GAMSTATE + move a14,@GAMSTATE + movi GAME_PID,a14 ;set our PID + move a14,*a13(PROCID) + + clr a0 + move a0,@p1rounds + move a0,@p2rounds + + movk 1,a0 + move a0,@current_round +;#new_round + + JSRP start_match + +;The only time we return from start_match, is when 2 rounds have been +;won and the game must goto: + +;1. Buy-in screen for 1 or 2 player games +;2. Ladder screen for the next matchup +;3. Finale screens + +;clear out howard speech flag so he can say it again on new select screen + CLR A0 + MOVE A0,@DONE_HOWARD + + movi 60,a0 + move a0,@are_we_waiting_f + +;Increment his win count + callr increment_wincount + +;Did a human player lose? + move @PSTATUS,a0 + move @match_winner,a1 + andn a1,a0 + jrnz #go_buyin + +;Check to see if he has beaten the game. +;jrnz #party ;Entire game beaten! + +;This player will keep on playing. +;Display ladder of progreesion which shows his next opponent. + + move @match_winner,a10 + dec a10 + jsrp pin_speed_in_case + jruc do_pregame + +#go_buyin +;Display 2 player buyin screen. +;Turn on appropriate messages for each player +;One guy lost, check if he achieved a high score. (Most wins) +;If so, allow him to enter initials just on his panel. + + MOVE @PSTATUS,A1 + CMPI 3,A1 + JRNE NO_NEW_WINNER + move @match_winner,a1 + NOT A1 + ANDI 3,A1 + DEC A1 + SLL 4,A1 + ADDI p1winstreak,A1 + MOVE *A1,A1 + JRZ NO_NEW_WINNER + MOVI CONGRATULATIONS,A0 + MOVE @HCOUNT,A1 + SRL 1,A1 + JRNC DO_THE_VOICE + MOVI SOMEHOW_I_DONT_THINK,A0 +DO_THE_VOICE + CALLA ADD_VOICE +NO_NEW_WINNER + + + move @PSTATUS,a0 + move a0,@OLD_PSTATUS + + move @PSTATUS,a0 + move @match_winner,a1 + and a1,a0 + jrnz #notcpuwin +;The cpu won + clr a0 + move a0,@match_winner + + MOVE @CURRENT_LADDER,A0,L + SUBI 020H,A0 + MOVE A0,@CURRENT_LADDER,L + +#notcpuwin + move @match_winner,a0 + move a0,@PSTATUS + + .ref buyin_select + JSRP buyin_select + +;Clear the loser's wincount + movi p1winstreak,a1 + move @match_winner,a0 + CMPI 4,A0 + JREQ NO_CLEAR_WINSTREAK + cmpi 1,a0 + jrnz #notp1 + movi p2winstreak,a1 + +#notp1 clr a14 + move a14,*a1 +NO_CLEAR_WINSTREAK + + movi INWAITCONT,a14 ;set GAMSTATE + move a14,@GAMSTATE + movi WAITCONT_PID,a14 ;set our PID + move a14,*a13(PROCID) + + jruc do_pregame + +#buyin_mod + .long wwfselbkBMOD + .word -40,0 + .long 0 + +#no_fade + .long LGMDBLU,scorep,0 +LN1b_setup + JAM_STR lgmd_ascii,12,2,200,128-10-61+5,LGMDBLU,0 + .ref lgmd_ascii +LN2b_setup + JAM_STR lgmd_ascii,6,2,200,128+12,LGMDBLU,0 +#str_game + .byte "CHALLENGER",0 +#str_over + .byte "FOUND!",0 + .even + +#str_text + .string "SINGLE PLAYER GAME",0 +#str_text2 + .string "LADDER OF PROGRESSION",0 + .even + +#***************************************************************************** + + SUBRP increment_wincount + +;This will not increment if it is a CPU player + + move @PSTATUS,a0 + move @match_winner,a1 + and a1,a0 + jrz #done + + movi p1winstreak,a1 + cmpi 1,a0 + jreq #p1 + movi p2winstreak,a1 + +#p1 + move *a1,a14,W + inc a14 + move a14,*a1,W + +#done + rets + +#***************************************************************************** +* Get random # with mask +* A0=Mask +* >A0=Rnd # (Pass CC) +* Trashes scratch + + SUBRP rnd + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + and a1,a0 + rets + + + +#***************************************************************************** + +COLRPRC + movi COLRPID,a0 + calla KIL1C ;KILL ALL COLOR UPDATE PROCESSES + clr a0 + move a0,@PALFRAM,L +; movi scorep,a0 ;Score area palette + jauc pal_getf + + +#***************************************************************************** + + + SUBRP start_match + +; calla display_blank +; calla WIPEOUT ;CLEAN SYSTEM OUT + + move @total_matches,a14,W + inc a14 + move a14,@total_matches,W + CALLA SPECIAL_WIPEOUT + + SUBR start_match2 + + + .ref pal_clean + calla pal_clean + + + movk 1,a0 ;page flipping on + move a0,@dpageflip + move a0,@HALT + + movi [339h,0],a0 + move a0,@WORLDTLX,L + + movi [0ffd6h,0],a0 + move a0,@WORLDTLY,L + + movi ring_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 + + CALLA CLEAR_COUNTERS + + CREATE CROWD_PID,crowd_anim + CREATE TIMER_PID,match_timer + CREATE RTCLOCK_PID,realtime_clock + CREATE0 SHIFT_BARS_IN_Z + + .if DIR_DEBUG + CREATE0 dir_debug + .endif + + .if SCRT_DEBUG + CREATE0 scrt_debug + .endif + + movi ROPE_FRONT,a11 + CREATE ROPE_PID,rope + move a0,@front_rproc,L + + movi ROPE_BACK,a11 + CREATE ROPE_PID,rope + move a0,@back_rproc,L + + movi ROPE_LEFT,a11 + CREATE ROPE_PID,rope + move a0,@left_rproc,L + + movi ROPE_RIGHT,a11 + CREATE ROPE_PID,rope + move a0,@right_rproc,L + + clr a0 ;clear the winner bits + move a0,@match_winner + MOVE A0,@DAM_MULT + MOVE A0,@HAVE_WE_AUDITED_THIS_GAME +;MJT Start + move a0,@no_debris +;MJT End + + movi AUD_VSHUMS,a0 ;increment the battles started bit + move @PSTATUS,a14 + cmpi 03h,a14 + jreq #aud_vshumf + movi AUD_VSCPUS,a0 +#aud_vshumf + calla AUD1 + + callr CLEAR_PROCESSES + + calla init_life_data + + MOVE @PSTATUS,A0 + JRZ NORMAL_INIT ;IN ATTRACT MODE + CMPI 3,A0 + JREQ NORMAL_INIT + CLR A10 + movi PSIDE_PLYR1,a9 ;side on + move @index1,a11 ;wrestler + SRL 1,A0 + JRC WE_PLAYING_PLAYER_1 + movi PSIDE_PLYR2,a9 ;side on + move @index2,a11 ;wrestler + INC A10 +WE_PLAYING_PLAYER_1 + movi PTYPE_PLAYER,a8 ;player type + SCREATE WMAIN_PID,wrestler_main ;player 1 + MOVE A10,A9 + CREATE GETUP_PID,getup_meter + + MOVE @NUM_OPPS,A3 + CMPI 1,A3 + JREQ NO_START_WHICH_NAME + CREATE0 WHICH_NAME +NO_START_WHICH_NAME + MOVE @CURRENT_LADDER,A4,L + MOVE *A4,A4,L + MOVK 2,A10 +CREATE_NEXT_WRESTLER + CALLA SORT_OUT_WRESTLER_NUM +*jakeeee if you want a specific wrestler, put his number in A11 here ! + + movi PTYPE_DRONE,a8 ;player type + movi PSIDE_NONE,a9 ;side on + + .if DEBUG + move @skip_select,a0 + jrge #skp + movk 6,a11 ;make him a doink +#skp + .endif + SCREATE WMAIN_PID,wrestler_main ;player 1 + SRL 8,A4 + INC A10 + DEC A3 + JRNZ CREATE_NEXT_WRESTLER + JRUC BEGIN_BATTLE + +NORMAL_INIT + movi PTYPE_PLAYER,a8 ;player type + move @PSTATUS,a0 + btst 0,a0 + jrnz #ok + movi PTYPE_DRONE,a8 ;player type +#ok movi PSIDE_PLYR1,a9 ;side on + clr a10 ;wres num + move @index1,a11 ;wrestler + SCREATE WMAIN_PID,wrestler_main ;player 1 + MOVE A10,A9 + CREATE GETUP_PID,getup_meter + + movi PTYPE_PLAYER,a8 ;player type + move @PSTATUS,a0 + btst 1,a0 + jrnz #ok1 + movi PTYPE_DRONE,a8 ;player type +#ok1 movi PSIDE_PLYR2,a9 ;side on + movk 1,a10 ;wres num + move @index2,a11 ;wrestler + SCREATE WMAIN_PID,wrestler_main ;player 2 + MOVE A10,A9 + CREATE GETUP_PID,getup_meter + +BEGIN_BATTLE + ;play the battle music + + movi 40,a3 + move @skip_select,a14 + jrnz #marked_snd + movi 25,a3 + calla SNDSND + CLR A1 + MOVI 175,A0 + CALLA SET_LOWER_VOL +#marked_snd + + ;SET CROWD VOLUME TO 100% OF MASTER VOLUME + MOVI 55ABH+5,A3 + CALLA SNDSND + MOVI 0FF00H,A3 + CALLA SNDSND + ;and the crowd + movi 2065,a3 + calla SNDSND + + CALLA CLEAR_SPEECH_REPEAT + + callr init_joystat + callr init_joy_dtime + + calla init_special_objlist + + clr a0 + move a0,@match_over + + CALLA RESETUP_PROGRESS + + SLEEPK 1 + + calla BGND_UD1 + SLEEPK 1 + + ;if this is the first match after attract mode, cue vince. + move @total_matches,a14 + dec a14 + jrnz #no_vince_intro + move @PSTATUS,A0 + CMPI 3,A0 + JRNE #no_vince_intro + + movi 0E0h,a0 + calla ADD_VOICE + MOVI R_OH_YEAH,A0 + calla ADD_VOICE + +#no_vince_intro + + calla BGND_UD1 + SLEEPK 2 + calla BGND_UD1 + + clr a8 ;left meter for player 0 + movk 1,a9 ;right meter for player 1 + move @PSTATUS,a0 + jrz meter_pointers_set + cmpi 3,a0 + jreq meter_pointers_set + + movk 2,a9 + srl 1,a0 + jrz meter_pointers_set + movk 1,a9 + movk 2,a8 +meter_pointers_set + CREATE METER_PID,meters ;life/turbo/names + + movk 1,a0 + move a0,@DISPLAYON + + clr a0 + move a0,@IRQSKYE + + CREATE0 DO_SET_IMAGES + PUSHP A0 + movk 20,a8 + movk 6,a9 + JSRP OPEN_PROGRESS_SCREEN + PULLP A0 + CALLA KILL + + clr a1 + callr get_process_ptr + clr a14 + move a14,*a0(DELAY_METER) + + movk 1,a1 + callr get_process_ptr + clr a14 + move a14,*a0(DELAY_METER) + +#loop + calla check_collisions + calla set_images + + move @PCNT,a0 + ANDK 15,a0 + + jrnz #no + + calla BGND_UD1 +#no + + SLEEPK 1 + + move @match_over,a0 + jrz #not_over + + callr postgame_audits + + RETP + +DO_SET_IMAGES + CALLA set_images + SLOOP 1,DO_SET_IMAGES + +#not_over + + callr scroll_world + + move @round_tickcount,a0 + inc a0 + move a0,@round_tickcount + + move @match_time,a0,L ;10's & 1's + jrnz #loop + + .if DEBUG + move @fight_debug,a14 + jrz #norm +#wraparound + movi 00090009h,a14 + move a14,@match_time,L + jruc #not_over + .endif + +#norm + movk 1,a0 + move a0,@HALT + +*!fix! + clr a1 + callr get_process_ptr + + move a1,*a0(OBJ_XVEL),L + move a1,*a0(OBJ_YVEL),L + move a1,*a0(OBJ_ZVEL),L + movi -1,a1 + move a1,@MATCH_TIMERS,L + + movk 1,a1 + callr get_process_ptr + + clr a1 + move a1,*a0(OBJ_XVEL),L + move a1,*a0(OBJ_YVEL),L + move a1,*a0(OBJ_ZVEL),L + movi -1,a1 + move a1,@MATCH_TIMERS+32,L + +;Timer on the round expired + + calla DO_CROWD_CHEER + + movi #message_setup,a2 + calla setup_message + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + .ref mess_objid + move a0,@mess_objid + + movi #message_string,a4 + calla print_string_C2 + + PUSH a8 + movi FNT9RED_P,a8 + movi FNT9WHT_P,a9 + CREATE0 blink_pals + move a0,a11 + PULL a8 + +;Time's up. pick a winner. +;For now, random winner in case of tie - FIX!!!?? + + movi 70,a9 +#wait SLEEPK 1 + PUSH a9,a11 + calla set_images ;Make shadows shift... + PULL a9,a11 + dsjs a9,#wait + +; callr set_winner +; X32 a3 +; addi process_ptrs,a3 +; move *a3,a10,L + + .ref announce_rnd_winner + CREATE ANNC_PID,announce_rnd_winner + + movi 28,a9 +#wait1 SLEEPK 1 + PUSH a9,a11 + calla set_images ;Make shadows shift... + PULL a9,a11 + dsjs a9,#wait1 + + move a11,a0 + calla KILL + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ;delete text/plates + +#wait2 SLEEPK 1 + calla set_images ;Make shadows shift... + move @HALT,a0 + jrnz #wait2 + + move @p1rounds,a0 + cmpi 2,a0 + jrz #end + move @p2rounds,a0 + cmpi 2,a0 + jrnz #not_end + +#end +;Match is over. + move a0,@match_over +#not_end + jruc #loop +CLEAR_PROCESSES + clr a0 + movi wres0_objs,a1 + movi NUM_WRES*MAX_PIECES,a2 +#clr_lp + move a0,*a1+,L + dsj a2,#clr_lp + + movi process_ptrs,a1 + movi NUM_WRES,a2 +#clr_ptr + move a0,*a1+,L + dsj a2,#clr_ptr + rets + + SUBR set_winner +;Returns winner (0,1 OR 2) in a3 + + PUSH A4 + move @PSTATUS,A3 + CMPI 3,A3 + JREQ NORMAL_CHECK + clr a1 + srl 1,a3 + jrc health1_set + inc a1 +health1_set + PUSH A1 + calla get_health + move a0,a2 + movk 2,a1 + jruc renter_normal + +NORMAL_CHECK + clr a1 + PUSH A1 + calla get_health + move a0,a2 + movk 1,a1 +renter_normal + PUSH A1 + calla get_health + move a0,a4 + + PULL A3 + PULL A1 + SUB A2,A4 + JRNE #NORMAL_SET + MOVE @HCOUNT,A4 + SRL 1,A4 + JRNC #WINNER_SET + JRUC #SWAP_WINNER +#NORMAL_SET + JRGE #WINNER_SET +#SWAP_WINNER + MOVE A1,A3 +#WINNER_SET + + movi p1rounds,a1 + move a3,a3 + jrz #p1winsround + + movi p2rounds,a1 + cmpi 1,a3 + jreq #p1winsround + + move @PSTATUS,a0 + srl 1,a0 + jrc #p1winsround + movi p1rounds,a1 + +#p1winsround + move *a1,a0 + inc a0 + move a0,*a1 + +;If he's won two rounds, call him the winner. +; cmpi 2,a0 +; jrlt #go_match + + move a3,a0 + inc a0 + CMPI 3,A0 + JRNE NO_NEED_TO_INC + INC A0 +NO_NEED_TO_INC + move a0,@match_winner + +#go_match +;Go another round + PULL A4 + rets + + .ref font9_ascii + +#message_setup + JAM_STR font9_ascii,3,0,200,58,FNT9WHT_P,0 + +#message_string + .string "TIME IS UP!",0 + .even + + + + SUBR blink_pals +;a8=FNT9RED_P +;a9=FNT9WHT_P + + move a8,a0 + calla pal_getf + move a0,*a13(PDATA) + + move a9,a0 + calla pal_getf + move a0,*a13(PDATA+16) + + SLEEPK 2 + +#top + move *a13(PDATA),a9 + +; movi FNT9RED_P,a0 +; calla pal_getf +; move a0,a9 + + move *a13(PDATA+16),a0 + +; movi FNT9WHT_P,a0 +; calla pal_getf + + movi OBJLST,a14 +#lp + move *a14,a14,L + jrz #x + move *a14(OPAL),a2 + cmp a0,a2 + jrne #lp + move a9,*a14(OPAL) + jruc #lp + +#x SLEEPK 4 + + move *a13(PDATA),a9 +; movi FNT9RED_P,a0 +; calla pal_getf +; move a0,a9 + + move *a13(PDATA+16),a0 + +; movi FNT9WHT_P,a0 +; calla pal_getf + + movi OBJLST,a14 +#lp2 + move *a14,a14,L + jrz #x2 + move *a14(OPAL),a2 + cmp a9,a2 + jrne #lp2 + move a0,*a14(OPAL) + jruc #lp2 + +#x2 SLEEPK 7 + + jruc #top + + +ring_mod + .long ringBMOD ;wrestling ring + .word 105,-450 ;x,y + .long 0 + +#***************************************************************************** +* +* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +* can probably get rid of this crap once scroller is finished +* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + SUBRP update_positions + + move *a13(PLYRNUM),a0 + X32 a0 + + move a0,a1 + addi wrestler_x,a1 + move *a13(OBJ_XPOS),a14,L + move a14,*a1,L + + move a0,a1 + addi wrestler_y,a1 +;;;; move *a13(OBJ_YPOS),a14,L + move *a13(GROUND_Y),a14 + sll 16,a14 + + jrnn #ok + + clr a14 +#ok move a14,*a1,L + + move a0,a1 + addi wrestler_z,a1 + move *a13(OBJ_ZPOS),a14,L + move a14,*a1,L + rets + +#***************************************************************************** + +BUFFER equ [20,0] +#BUFFER equ [20,0] + +LIMITXL .EQU [12FH,0] +LIMITXR .EQU [5E8H,0] +LIMITYT .EQU [200H,0] +LIMITYB .EQU [97h,0] + + SUBRP scroll_world + + MMTM SP,A8,A9,A10,A11 + + move @HALT,a0 + jrnz #x + + move @PSTATUS,A3 + JRZ NORMAL_SCROLLER + CMPI 3,A3 + JREQ NORMAL_SCROLLER + MOVI wrestler_z+040h,a9 + movI wrestler_y+040H,a11 + move @wrestler_x+040h,a1,L + + movI wrestler_z,a8 + move @wrestler_x,a0,L + movI wrestler_y,a10 + SRL 1,A3 + JRC SCROLLER_ON + movI wrestler_z+020h,a8 + move @wrestler_x+020h,a0,L + movI wrestler_y+020H,a10 + + JRUC SCROLLER_ON + +NORMAL_SCROLLER + movI wrestler_z,a8 + movI wrestler_z+20h,a9 + movI wrestler_y,a10 + movI wrestler_y+020H,a11 + move @wrestler_x,a0,L + move @wrestler_x+20h,a1,L +SCROLLER_ON + + add a0,a1 + srl 1,a1 + subi [200,0],a1 ;middle of screen + + move @WORLDTLX,a2,L + sub a2,a1 + jrp #pos + + addi #BUFFER,a1 + jrp #wide + jruc #cont +#pos + subi #BUFFER,a1 + jrn #wide + +#cont + sra 3,a1 + add a1,a2 + + cmpi [12fh,0],a2 + jrlt #wide + cmpi [5e8h,0],a2 + jrgt #wide + + move a2,@WORLDTLX,L +#wide + +; move @wrestler_z,a0,L +; move @wrestler_z+20h,a1,L + + move *A8,a0,L + move *A9,a1,L + add a0,a1 + srl 1+16,a1 + movi Y_SCALE_MULTIPLIER,a0 + mpys a0,a1 + move a1,a2 + +; move @wrestler_y,a0,L +; move @wrestler_y+20h,a1,L + + move *A10,a0,L + move *A11,a1,L + add a0,a1 + srl 1,a1 + sub a1,a2 + subi [220+6,0],a2 ;middle of screen + + move @WORLDTLY,a1,L + sub a1,a2 + sra 3,a2 + add a2,a1 +;Don't allow scroller to go past front fence + cmpi [97h,0],a1 + jrgt #low + move a1,@WORLDTLY,L +#low +#x + MMFM SP,A8,A9,A10,A11 + rets + +LIMITXL .EQU [12FH,0] +LIMITXR .EQU [5E8H,0] +LIMITYT .EQU [200H,0] +LIMITYB .EQU [97h,0] +; SUBRP scroll_world +; +; RETS +; +; MOVE @WORLDTLY,A0 +; ADD A2,A1 +; +; MOVE @WORLDTLX,A1 +; ADD A3,A1 +; +; MOVI LIMITYT,A2 +; CMP A2,A0 +; JRLT NOT_AT_TOP +; MOVE A2,A0 +; JRUC NOT_AT_BOT +;NOT_AT_TOP +; MOVI LIMITYB,A1 +; CMP A2,A0 +; JRGT NOT_AT_BOT +; MOVE A2,A0 +;NOT_AT_BOT +; MOVI LIMITXR,A2 +; CMP A2,A1 +; JRLT NOT_AT_RIGHT +; MOVE A2,A1 +; JRUC NOT_AT_LEFT +;NOT_AT_RIGHT +; MOVI LIMITXL,A2 +; CMP A2,A1 +; JRGT NOT_AT_LEFT +; MOVE A2,A1 +;NOT_AT_LEFT +; MOVE A0,@WORLDTLY,L +; MOVE A1,@WORLDTLX,L +; rets + +#***************************************************************************** +* +* a8 = player type (PLAYER, DRONE, REFEREE) +* a9 = player side (PLYR1, PLYR2, NONE) +* a10 = player number +* a11 = wrestler number + + + SUBRP wrestler_main + + move a8,*a13(PLYR_TYPE) + move a9,*a13(PLYR_SIDE) + move a10,*a13(PLYRNUM) + move a11,*a13(WRESTLERNUM) + + MOVE A10,A0 + CMPI 2,A0 + JRGE NO_POINT_ITS_A_DRONE + CLR A1 + SLL 5,A0 + ADDI MATCH_TIMERS,A0 + MOVE A1,*A0,L +NO_POINT_ITS_A_DRONE + + movi 112,a0 + move a0,*a13(OBJ_PRIORITY) + + move a10,a1 + callr set_process_ptr + + callr reset_start + + clr a1 ;y pos + movi D2ST2B03,a2 ;* image + movi 110,a3 ;z pos + movi DMAWNZ|M_3D,a4 ;DMA flags +;Pixel packing DEBUG!! +; movi DMAWAL|M_3D,a4 ;DMA flags ;write z & nz + move a4,*a13(OBJ_CONTROL) + movi CLSPLYR | TYPPLYR,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + + move a13,b0 + move *b0(WRESTLERNUM),b0 + X32 b0 + + movk MAX_PIECES,a9 + + move *a13(PLYRNUM),a14 + jrz #nopal_chng + move @PSTATUS,a3 + jrz #normal_pal_check + cmpi 3,a3 + jreq #normal_pal_check + cmpi 1,a14 + JRLE #nopal_chng + move @index1,a8 + srl 1,a3 + jrc #compare_index + move @index2,a8 +#compare_index + move *a13(WRESTLERNUM),a14 + CMP A8,A14 + JRNE #nopal_chng + JRUC #alt_pal + +#normal_pal_check + move @index2,a14 + move @index1,a8 + cmp a8,a14 + jrnz #nopal_chng +;Yes, we must change player 2 to the alternate pal for this wrestler +#alt_pal + addi #wrestler_pal_alt,b0 + move *b0,b0,L ;* palette + jruc #nxt_obj + +#nopal_chng + addi #wrestler_pal,b0 + move *b0,b0,L ;* palette + +#nxt_obj + PUSH b0 + calla BEGINOBJP + PULL b0 + move a8,-*a10,L + dsj a9,#nxt_obj + + calla BEGINOBJP + move a8,*a13(ATTIMG_IMG),L + clr a0 + move a0,*a13(ATTIMG_CUR_FRAME),L + move a0,*a13(ATTIMG_LAST_FRAME),L + move a0,*a13(GETUP_TIME) + + move *a8(OPAL),a0 + move a0,*a13(OBJ_PAL) + +;; movi DNKBLU_P,a0 + movi shadow_p,a0 + calla pal_getf + move *a13(OBJ_BASE),a8,L + move *a8,a8,L ;1st object + move a0,*a8(OPAL) ;set palette for shadow + + movi MAT_Y,a0 + move a0,*a13(GROUND_Y) + + clr a0 + move a0,*a13(ATTACK_TIME) +;MJT Start +; move a0,*a13(BURNOUT_COUNT) +;MJT End + move a0,*a13(INRING) + MOVE A0,*A13(COMBO_START) + MOVE A0,*A13(COMBO_COUNT) + + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_YVEL),L + move a0,*a13(OBJ_ZVEL),L + move a0,*a13(SHADTRAIL_PROC),L +;MJT Start + move a0,*a13(I_WILL_DIE) +;MJT End + + + calla clear_damage_log + callr ani_init ;start default animation + + move @PCNT,a14 + move a14,*a13(FOOT_PCNT),W ;init foot timer + + .if COL_DEBUG + move a13,a10 + CREATE CDEBUG_PID,collis_debug + move a13,a10 + CREATE CDEBUG_PID,collis_debug2 + .endif + + callr init_smoves + calla set_collision_boxes + + +;#wait MOVE @VCOUNT,a0 +; andi 7,a0 +; jrnz #wait +; TINTON +; move @VCOUNT,a0 +; PUSH a0 + + +; move @VCOUNT,a0 +; PULL a1 +; sub a1,a0 +; TINTOFF + + SLEEPK 1 + + callr calc_closest + + +#loop +;-----> calla animate_wrestler + + calla set_collision_boxes + + callr confine_wrestler + + callr update_newfacing + + callr update_positions ;used by scroller (temp!) + +; TINTOFF + SLEEPK 1 +; TINTON + + + move *a13(PLYR_TYPE),a0 + jrz #hmn ;Human? + calla drone_main +#hmn + MOVE *A13(RISK),A0 + JRZ NO_DECREMENT + DEC A0 + MOVE A0,*A13(RISK) +NO_DECREMENT + + callr update_joystat + callr count_button_presses + + callr wrestler_veladd ;<------- + callr wrestler_friction ;<------- + + calla animate_wrestler ;<------- + calla set_collision_boxes ;<------- + + callr confine_wrestler ;<--- temp fix! + +;RJR START + callr calc_closest2 +;RJR END + + callr move_wrestler + +;----> callr wrestler_veladd +;----> callr wrestler_friction + + callr update_links + + calla set_collision_boxes + calla overlap_collision + + + move *a13(ANIMODE),a0 + btst MODE_KEEPATTACHED_BIT,a0 + jrz #no_attach + callr master_keep_attached +#no_attach + + + move *a13(ANIMODE),a0 + btst MODE_NOAUTOFLIP_BIT,a0 + jrnz #no_flip + move a13,a0 + callr set_wrestler_xflip +#no_flip + + callr update_joy_dtime + +; move *a13(BURNOUT_COUNT),a0 +; jrz #skp +; dec a0 +; move a0,*a13(BURNOUT_COUNT) +;#skp +;This is for delaying the reading of buttons just after regaining +;control from being flung. This will stop inadvertant moves from happening +;while the player is still whacking on his buttons + + move *a13(DELAY_BUTNS),a0 + jrz #skp2 + dec a0 + move a0,*a13(DELAY_BUTNS) +#skp2 +;This is for delaying collisions when a player gets up + + move *a13(SAFE_TIME),a0 + jrz #skp3 + dec a0 + move a0,*a13(SAFE_TIME) +#skp3 +;This is for delaying the reappearance of a getup meter + + move *a13(DELAY_METER),a0 + jrz #skp4 + dec a0 + move a0,*a13(DELAY_METER) +#skp4 +;This is for delaying the reappearance of a getup meter + + move *a13(IMMOBILIZE_TIME),a0 + jrz #skp5 + dec a0 + move a0,*a13(IMMOBILIZE_TIME) +#skp5 +;MJT Start +;This is for walking fast powerup + + move *a13(WALK_FAST),a0 + jrz #skp6 + dec a0 + move a0,*a13(WALK_FAST) +#skp6 +;MJT End + + + move *a13(GETUP_TIME),a0 + jrz #loop + move *a13(DELAY_METER),a14 + jrz #reg +;Don't want to allow getup time to be set this close to last time! + ;allow the meter to come right back if stay_down is set + .if DEBUG + move @stay_down,a14 + jrnz #reg + .endif + clr a0 + move a0,*a13(GETUP_TIME) + jrz #loop +#reg + +;Refill up meter half as fast +; move @PCNT,a14 +; btst 0,a14 +; jrz #skip + + .if DEBUG +;If stay_down flag is set, don't decrement + move @stay_down,a14 + jrz #dec + inc a0 +#dec + .endif + dec a0 + + move a0,*a13(GETUP_TIME) + jrz #clr_dizzy + +#skip + +;NOTE: +;Drones will have to fill up their meter +;at a faster pace! + +;Allow players to whack buttons to speed +;up their recovery from getup_time. +;Remember, the wrestler's meter doesn't have to be visible for hime +;to still have a getup time set! +;As long as getup_time has a value, he is stuck. + + move @PCNT,a14 + btst 0,a14 + jrz #loop + + move a13,a0 + calla wres_get_but_val_down ;whack on buttons to speed up + move a0,a0 + jrz #loop + + move *a13(GETUP_TIME),a0 + subk 10,a0 + jrp #ok + clr a0 +#ok + move a0,*a13(GETUP_TIME) + move a0,a0 + jrnz #loop + +#clr_dizzy + clr a0 + move a0,*a13(PLYR_DIZZY) + move a0,*a13(STARS_FLAG) ;Gets rid of them... + +;Delay button reads + movi 40,a0 + move a0,*a13(DELAY_BUTNS) + + jruc #loop + + .if rounds_on + .def reset_for_round + .def reset_for_round2 + SUBR reset_for_round + +;Reset world and both wrestlers for the start +;of a new round - Called from lifebar. + + + PUSH a13 + + clr a1 + callr reset_wrestle + + movk 1,a1 + callr reset_wrestle + + movk 2,a1 + callr reset_wrestle + + movk 3,a1 + callr reset_wrestle + + movk 4,a1 + callr reset_wrestle + + PULL a13 + + move @current_round,a0 + inc a0 + move a0,@current_round + + .ref init_rnd_life_data + calla init_rnd_life_data + + movi 9,a0 + move a0,@match_time ;10's + movi 9,a0 + move a0,@match_time+10h ;1's + clr a0 + move a0,@match_time+20h ;fractional + +;Temp +; clr a0 +; move a0,@p1rounds +; move a0,@p2rounds + +nobody_home + rets + +reset_wrestle + callr get_process_ptr + move a0,a13 + jrz nobody_home + + clr a0 + move a0,*a13(PLYR_DIZZY_CNT) + + move *a13(PLYRNUM),a10 + +reset_start + + MOVI #start_xz,a0 + MOVE @PSTATUS,A2 + CMPI 2,A2 + JRNE START_TABLE_DEFFED + MOVI #start_xz2,a0 + +START_TABLE_DEFFED + move a10,a9 + X64 a9 + ADD A0,A9 + move *a9+,a0 + sll 16,a0 ;x val + move a0,*a13(OBJ_XPOS),L + move *a9+,a0 + sll 16,a0 ;z val + move a0,*a13(OBJ_ZPOS),L + + clr a0 + move a0,*a13(OBJ_YPOS),L + + movi MAT_Y,a0 + move a0,*a13(GROUND_Y) + +;From veladd + move *a13(GROUND_Y),a2 + sll 16,a2 + move *a13(OBJ_YPOS),a0,L + sub a2,a0 ;- GROUND_Y + move *a13(OBJ_YVEL),a1,L + add a1,a0 + jrnn #yok + + clr a0 + move a0,*a13(OBJ_YVEL),L +#yok + add a2,a0 ;+ GROUND_Y + move a0,*a13(OBJ_YPOS),L + + move a10,a0 + X32 a0 + addi obj_look,a0 + move *a0,a0,L ;* start of objects + move a0,*a13(OBJ_BASE),L + move a0,a10 + addi 32*MAX_PIECES,a10 ;start at end to reverse priorities + + move *a9+,a0 +; movk 9,a0 +; move *a13(PLYRNUM),a14 +; jrz #lft +; movk 6,a0 +;#lft + + move a0,*a13(NEW_FACING_DIR) + move a0,*a13(FACING_DIR) + + clr a0 ;x pos + move a0,*a13(PLYRMODE) + move a0,*a13(PLYR_DIZZY) + move a0,*a13(ANIMODE) + move a0,*a13(ANIMODE2) + +; movi MAT_Y,a0 +; move a0,*a13(GROUND_Y) + + clr a0 +;MJT Start +; move a0,*a13(BURNOUT_COUNT) +;MJT End + move a0,*a13(INRING) + + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_YVEL),L + move a0,*a13(OBJ_ZVEL),L + + calla clear_damage_log + callr ani_init ;start default animation + + move @PCNT,a14 + move a14,*a13(FOOT_PCNT),W ;init foot timer + + rets + + SUBR reset_for_round2 + + PUSH a13 + + clr a1 + callr reset_wrestle2 + + movk 1,a1 + callr reset_wrestle2 + + movk 2,a1 + callr reset_wrestle2 + + movk 3,a1 + callr reset_wrestle2 + + movk 4,a1 + callr reset_wrestle2 + + PULL a13 + + rets + +reset_wrestle2 + callr get_process_ptr + move a0,a13 + jrz nobody_home + + clr a0 + move a0,*a13(PLYR_DIZZY_CNT) + + move *a13(PLYRNUM),a10 + +reset_start2 + callr calc_closest + + calla set_collision_boxes + + callr confine_wrestler + +; callr update_newfacing + + callr update_positions ;used by scroller (temp!) + + callr update_joystat + callr count_button_presses + + callr wrestler_veladd ;<------- + callr wrestler_friction ;<------- + +; calla animate_wrestler ;<------- + calla set_collision_boxes ;<------- + + callr confine_wrestler ;<--- temp fix! + + callr calc_closest + + callr move_wrestler + + callr update_links + + calla set_collision_boxes + calla overlap_collision + + move a13,a0 + callr set_wrestler_xflip + + callr update_joy_dtime + + rets + .endif + +#wrestler_pal + +;These are the normal pals. If both wrestlers are the same, player 2 will +;use the alternate pal. + + .long HRTPNK_P ;0 (Bret) + .long RZRGRN_P ;1 (Razor) + .long UNDPRP_P ;2 (Taker) + .long YOKRED_P ;3 (Yoko) + .long SHNRED_P ;4 (Shawn) + .long BAMBLU_P ;5 (Bam Bam) + .long DNKBLU_P ;6 (Doink) + .long DNKBLU_P ;7 (spare) + .long LEXWHT_P ;8 (Lex) + .long 0 ;9 (Referee) + +#wrestler_pal_alt +;These are the alternate pals. + + .long HRTBLU_P ;0 (Bret) + .long RZRPRP_P ;1 (Razor) + .long UNDBLK_P ;2 (Taker) + .long YOKPRP_P ;3 (Yoko) + .long SHNPRP_P ;4 (Shawn) + +;Get new BAM BAM alternate pal + .long BAMYLW_P ;5 (Bam Bam) + + .long DNKPRP_P ;6 (Doink) + .long DNKPRP_P ;7 (spare) + .long LEXYEL_P ;8 (Lex) + .long 0 ;9 (Referee) + + +#start_xz + .word 3abh,4ach,9,0 ;0 player 1 + .word 457h,494h,6,0 ;1 player 2 + .word 457h,494h,6,0 ;1 player 2 + + .word 1024-150,1103+170,9,0 ;3 drone + .word 1024+150,1103+170,6,0 ;4 drone + .word 1024,1103,0,0 ;5 + .word 1024,1103,0,0 ;6 + .word 1024,1103,0,0 ;7 +#start_xz2 + .word 3abh,4ach,9,0 ;0 player 1 + .word 457h,494h,6,0 ;1 player 2 + .word 3abh,4ach,9,0 ;0 player 1 + + .word 1024-150,1103+170,9,0 ;3 drone + .word 1024+150,1103+170,6,0 ;4 drone + .word 1024,1103,0,0 ;5 + .word 1024,1103,0,0 ;6 + .word 1024,1103,0,0 ;7 + +obj_look + .long wres0_objs ;0 + .long wres1_objs ;1 + .long wres2_objs ;2 + .long wres3_objs ;3 + .long wres4_objs ;4 + .long wres5_objs ;5 + .long wres6_objs ;6 + .long wres7_objs ;7 + + +#***************************************************************************** +* +* initializes animations for each wrestler +* +* a13 = * wrestler process + + SUBRP ani_init + + + movi 100h,a0 + move a0,*a13(ANI_SPEED) ;normal speed animations + +;MJT Start + clr a0 + move a0,*a13(I_WILL_DIE) + move a0,*a13(WALK_FAST) +;MJT End + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #init_addr,a0 + move *a0,a0,L + call a0 + rets + +#init_addr + .long bret_ani_init ;0 Bret Hart + .long razor_ani_init ;1 Razor Ramon + .long taker_ani_init ;2 Undertaker + .long yoko_ani_init ;3 Yokozuna + .long shawn_ani_init ;4 Shawn Michaels + .long bam_ani_init ;5 Bam Bam + .long doink_ani_init ;6 Doink + .long doink_ani_init ;7 spare + .long lex_ani_init ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** +* a13 = ptr to process +* a1 = player/drone number 0-? + + SUBRP set_process_ptr + + PUSH a1 + X32 a1 + addi process_ptrs,a1 + move a13,*a1,L + PULL a1 + rets + +#***************************************************************************** +* a1 = player/drone number 0-? +* returns ptr in a0 + + SUBR get_process_ptr + + PUSH a1 + X32 a1 + addi process_ptrs,a1 + move *a1,a0,L + PULL a1 + rets + +#***************************************************************************** +* +* a13 = * to wrestler process +* +* breaks links if both wrestlers not attached to each other +* + + SUBRP update_links + + move *a13(ATTACH_PROC),a1,L ;proc attached to + jrz #exit ;not attached + move *a1(ATTACH_PROC),a0,L + cmp a0,a13 ;pointing to each other? + jreq #exit ;ok + + clr a0 + move a0,*a13(ATTACH_PROC),L +#exit + rets + + +#***************************************************************************** +* + + SUBRP update_newfacing + + + callr get_opp_process ;closest opponent process + move a0,a10 + + movi MOVE_RIGHT,a0 + move *a13(OBJ_XPOS),a2,L + move *a10(OBJ_XPOS),a3,L + cmp a2,a3 ;a3-a2 + jrgt #right + movi MOVE_LEFT,a0 +#right + movi MOVE_DOWN,a1 + move *a13(OBJ_ZPOS),a2,L + move *a10(OBJ_ZPOS),a3,L + cmp a2,a3 ;a3-a2 + jrgt #down + movi MOVE_UP,a1 +#down + or a1,a0 + move a0,*a13(NEW_FACING_DIR) + + rets + +#***************************************************************************** +* +* sets x-flip based on facing direction +* +* a0 = * wrestler process + + + SUBR set_wrestler_xflip + + move *a0(FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #right + + move *a0(OBJ_CONTROL),a14 + ori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +#right + move *a0(OBJ_CONTROL),a14 + andni M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +#***************************************************************************** + +MAX_YVEL equ -1000000h ;-40000h + + SUBRP wrestler_veladd + + move @HALT,a0 + jrnz #x + + move *a13(OBJ_XPOS),a0,L + move *a13(OBJ_XVEL),a1,L + add a1,a0 + move a0,*a13(OBJ_XPOS),L + + move *a13(GROUND_Y),a2 + sll 16,a2 + move *a13(OBJ_YPOS),a0,L + sub a2,a0 ;- GROUND_Y + move *a13(OBJ_YVEL),a1,L + add a1,a0 + jrnn #yok +;RJR START + ;under ground. clr Yvel unless we're attached and MODE_GHOST + move *a13(ATTACH_PROC),a14,L + jrz #set_yvel + move *a14(ATTACH_PROC),a14,L + cmp a13,a14 ;valid link? + jrne #set_yvel + move *a13(ANIMODE),a14,L + btst MODE_GHOST_BIT,a14 + jrnz #yok + move a1,a1 ;if yvel is positive then keep + jrn #set_yvel ;velocity & put at ground level + clr a0 + jruc #yok +;RJR END + +#set_yvel + clr a0 + move a0,*a13(OBJ_YVEL),L +#yok + add a2,a0 ;+ GROUND_Y + move a0,*a13(OBJ_YPOS),L + + + + callr calc_ground_y + + move *a13(OBJ_YPOS),a0,L + + move *a13(GROUND_Y),a2 + sll 16,a2 + cmp a0,a2 ;a2-a0 + jrlt #ok + ;we're under ground... Unless we're attached and set MODE_GHOST, + ; stay above. + move *a13(ATTACH_PROC),a14,L + jrz #set_ground_y + move *a14(ATTACH_PROC),a14,L + jrz #set_ground_y + move *a13(ANIMODE),a14,L + btst MODE_GHOST_BIT,a14 + jrnz #ok + +#set_ground_y + move a2,a0 +#ok + move a0,*a13(OBJ_YPOS),L + + move *a13(OBJ_ZPOS),a0,L + move *a13(OBJ_ZVEL),a1,L + add a1,a0 + move a0,*a13(OBJ_ZPOS),L + + move *a13(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + jrnz #no_gravity + + move *a13(GROUND_Y),a0 + sll 16,a0 + move *a13(OBJ_YPOS),a1,L + cmp a0,a1 + jreq #no_gravity + + move *a13(OBJ_YVEL),a0,L + move *a13(OBJ_GRAVITY),a14,L + sub a14,a0 + cmpi MAX_YVEL,a0 + jrge #grav_ok + movi MAX_YVEL,a0 +#grav_ok + move a0,*a13(OBJ_YVEL),L +#no_gravity + +#x + rets + + +#***************************************************************************** +* +* confines wrestler in/out of ring +* and sets CAN_MOVE_DIR bits +* + + SUBRP confine_wrestler + + + clr a7 ;can move in all directions + + move *a13(ANIMODE),a0 + btst MODE_NOCONFINE_BIT,a0 + jrnz #no_confine + + move *a13(PLYRMODE),a0 + cmpi MODE_ATTACHED,a0 + jreq #no_confine + +; cmpi MODE_PUPPET,a0 +; jreq #no_confine + + + move *a13(INRING),a0 + jrnz #outring + + + ;We're inside the ring + ;Check against the top ropes. + movi RING_TOP,a0 + move *a13(OBJ_ZPOSINT),a5 + cmp a0,a5 ;zpos - top + jrgt #zu_ok + jreq #no_u + + ;set Z to top of ring + move a0,*a13(Z_BOUND) + sll 16,a0 + move a0,*a13(OBJ_ZPOS),L + + ;climb out if allowed + calla ck_climb_out_top + +#no_u + ;just inside - don't adjust, but don't go any further. + ori MOVE_UP,a7 ;can't move up + jruc #check_x + +#zu_ok + ;Check aginst bottom ropes + movi RING_BOT,a0 ;zpos - bot + cmp a0,a5 + jrlt #zd_ok + jreq #no_d + + ;set Z to bottom of ring + move a0,*a13(Z_BOUND) + sll 16,a0 + move a0,*a13(OBJ_ZPOS),L + + ;climb out if allowed + calla ck_climb_out_bot + +#no_d + ;just inside - don't adjust, but don't go any further. + ori MOVE_DOWN,a7 ;can't move down +#zd_ok + +#check_x + ;Check left edge of collision box against left rope + move *a13(OBJ_COLLX1),a5 + + ;first see if we're even in the ballpark. + movi vln_left_rope,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x2 + jrgt #xl_ok + + ;close enough for a more careful check... + callr calc_line_x + cmp a0,a5 ;xpos - a0 + jrgt #xl_ok + jreq #no_l + + + ;we're past the left rope. see if we're attached + move *a13(ATTACH_PROC),a14,L + jrz #not + + ;I'm attached, which means both me and my opponent are gonna get + ; moved. Figure the right amount, apply it to both of us, then + ; wobble the ropes and bounce both of us away. + + ;a0 is rope X, a5 is left edge of our collbox. Move us and our + ; opponent right (a0 - a5) pixels. + sub a5,a0 + move *a13(OBJ_XPOSINT),a14 + add a0,a14 + move a14,*a13(OBJ_XPOSINT) + + move *a13(ATTACH_PROC),a5,L + move *a5(OBJ_XPOSINT),a14 + add a0,a14 + move a14,*a5(OBJ_XPOSINT) + + ;If either I or my opponent has a nonzero X velocity other than + ; 40000h, give us both Xvel 40000h, Yvel 30000h. + + ;Skip the velocity crap if I'm on the ground. + move *a13(GROUND_Y),a0 + move *a13(OBJ_YPOSINT),a1 + cmp a0,a1 + jreq #no_l + + move *a13(OBJ_XVEL),a14,L + jrz #lr_check_opp + cmpi [4,0],a14 + jrne #lr_check_opp + jruc #lr_set_vels + +#lr_check_opp + move *a5(OBJ_XVEL),a14,L + jrz #no_l + cmpi [4,0],a14 + jrne #lr_set_vels + jruc #no_l + +#lr_set_vels + ;X vel + movi [4,0],a14 + move a14,*a13(OBJ_XVEL),L + move a14,*a5(OBJ_XVEL),L + + ;Y vel + movi [3,0],a14 + move a14,*a13(OBJ_YVEL),L + move a14,*a5(OBJ_YVEL),L + + ;...and wobble the ropes + PUSH a0,a5 + movi ROPE_LEFT,a0 + movk 1,a2 + movi ROPE_BOUNCEIO,a1 + calla rope_command + PULL a0,a5 + + jruc #no_l + +#not + ;we're not attached + ;line me up flush against the left rope + move *a13(OBJ_XPOSINT),a14 + sub a5,a14 + add a14,a0 + move a0,*a13(X_BOUND) + sll 16,a0 + move a0,*a13(OBJ_XPOS),L + + move *a13(INRING),a0 + jrnz #no_l ;Am outside. + ;climb out the side if allowed + calla ck_climb_out_side + +;Has hit left rope +;Wobble ropes and bounce off of them upon first hit. + move *a13(MOVE_DIR),a0 + jrnz #no_l + + move *a13(OBJ_XVEL),a0,L + jrz #no_l + + ;Skip the velocity crap if I'm on the ground. + move *a13(GROUND_Y),a0 + move *a13(OBJ_YPOSINT),a1 + cmp a0,a1 + jreq #no_l + +;We also should check YPOS also. Ropes shouldn't wobble if +;not hit. + + move *a13(OBJ_XVEL),a0,L + movi [3,0001],a7 + move a7,*a13(OBJ_XVEL),L + andi >ffff,a0 + cmpi 1,a0 + jrz #no_l + +;This is the first time we have collided with ropes. +;Wobble them. + + movi ROPE_LEFT,a0 + movk 1,a2 + movi ROPE_BOUNCEIO,a1 + calla rope_command + + +#no_l + ori MOVE_LEFT,a7 ;can't move left + jruc #done + +#xl_ok + ;Check right edge of collision box against right ropes + move *a13(OBJ_COLLX2),a5 + + ;first see if we're even in the ballpark. + movi vln_right_rope,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x1 + jrlt #xr_ok + + ;close enough for a more careful check... + callr calc_line_x + cmp a0,a5 ;xpos - a0 + jrlt #xr_ok + jreq #no_r + +;Jamie, when someone does a neck grab up against the right ropes, +;the wrestler will glitch through the ropes for 1 tick before he gets +;reset away from the ropes. I couldn't find a bug.... Try it. + + + ;we're past the right rope. see if we're attached + move *a13(ATTACH_PROC),a14,L + jrz #not2 + + ;I'm attached, which means both me and my opponent are gonna get + ; moved. Figure the right amount, apply it to both of us, then + ; wobble the ropes and bounce both of us away. + + ;a0 is rope X, a5 is right edge of our collbox. Move us and our + ; opponent left (a5 - a0) pixels. + sub a0,a5 + move *a13(OBJ_XPOSINT),a14 + sub a5,a14 + move a14,*a13(OBJ_XPOSINT) + + move *a13(ATTACH_PROC),a0,L + move *a0(OBJ_XPOSINT),a14 + sub a5,a14 + move a14,*a0(OBJ_XPOSINT) + + ;If either I or my opponent has a nonzero X velocity other than + ; -40000h, give us both Xvel -40000h, Yvel 30000h. + + ;Skip the velocity crap if I'm on the ground. + move *a13(GROUND_Y),a0 + move *a13(OBJ_YPOSINT),a1 + cmp a0,a1 + jreq #no_r + + move *a13(OBJ_XVEL),a14,L + jrz #rr_check_opp + cmpi [-4,0],a14 + jrne #rr_check_opp + jruc #rr_set_vels + +#rr_check_opp + move *a13(ATTACH_PROC),a5,L + move *a5(OBJ_XVEL),a14,L + jrz #no_r + cmpi [-4,0],a14 + jrne #rr_set_vels + jruc #no_r + +#rr_set_vels + ;X vel + movi [-4,0],a14 + move a14,*a13(OBJ_XVEL),L + move *a13(ATTACH_PROC),a5,L + move a14,*a5(OBJ_XVEL),L + + ;Y vel + movi [3,0],a14 + move a14,*a13(OBJ_YVEL),L + move a14,*a5(OBJ_YVEL),L + + ;...and wobble the ropes + PUSH a0,a5 + movi ROPE_RIGHT,a0 + movk 1,a2 + movi ROPE_BOUNCEIO,a1 + calla rope_command + PULL a0,a5 + + jruc #no_r + +#not2 + + move *a13(OBJ_XPOSINT),a14 + sub a14,a5 + sub a5,a0 + + move a0,*a13(X_BOUND) + sll 16,a0 + move a0,*a13(OBJ_XPOS),L + + move *a13(INRING),a0 + jrnz #no_r ;Am outside. + + calla ck_climb_out_side + +;Has hit right rope +;Wobble ropes and bounce off of them upon first hit. + move *a13(MOVE_DIR),a0 + jrnz #no_r + + move *a13(OBJ_XVEL),a0,L + jrz #no_r + + ;Skip the velocity crap if I'm on the ground. + move *a13(GROUND_Y),a0 + move *a13(OBJ_YPOSINT),a1 + cmp a0,a1 + jreq #no_r + +;We also should check YPOS also. Ropes shouldn't wobble if +;not hit. + + move *a13(OBJ_XVEL),a0,L + movi [-3,0001],a7 + move a7,*a13(OBJ_XVEL),L + andi >ffff,a0 + cmpi 1,a0 + jrz #no_r + +;This is the first time we have collided with ropes. +;Wobble them. + + movi ROPE_RIGHT,a0 + movk 1,a2 + movi ROPE_BOUNCEIO,a1 + calla rope_command + + +#no_r + ori MOVE_RIGHT,a7 ;can't move right +#xr_ok +#done +#no_confine + move a7,*a13(CAN_MOVE_DIR) + rets + + + + ;We're outside the ring +#outring + movi ARENA_TOP,a0 + move *a13(OBJ_ZPOSINT),a5 + cmp a0,a5 ;zpos - top + jrgt #zu_ok2 + jreq #no_u2 + + move a0,*a13(Z_BOUND) + sll 16,a0 + move a0,*a13(OBJ_ZPOS),L +#no_u2 + ori MOVE_UP,a7 ;can't move up + jruc #check_x2 + +#zu_ok2 + movi ARENA_BOT,a0 ;zpos - bot + cmp a0,a5 + jrlt #zd_ok2 + jreq #no_d2 + + move a0,*a13(Z_BOUND) + sll 16,a0 + move a0,*a13(OBJ_ZPOS),L +#no_d2 + ori MOVE_DOWN,a7 ;can't move down +#zd_ok2 + +#check_x2 + move *a13(OBJ_COLLX1),a5 + movi vln_left_fence,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x2 + jrgt #xl_ok2 + callr calc_line_x + cmp a0,a5 ;xpos - a0 + jrgt #xl_ok2 + jreq #no_l2 + + ;must move right (a0-a5) pixels. If we're attached, move our + ; opponent too. + move a0,a1 + sub a5,a0 + + move *a13(OBJ_XPOSINT),a14 + add a0,a14 + move a14,*a13(OBJ_XPOSINT) + move a1,*a13(X_BOUND) + + move *a13(ATTACH_PROC),a5,L + jrz #no_l2 + + move *a5(OBJ_XPOSINT),a14 + add a0,a14 + move a14,*a5(OBJ_XPOSINT) + move a1,*a5(X_BOUND) +#no_l2 + ori MOVE_LEFT,a7 ;can't move left + jruc #cont_x + +#xl_ok2 + move *a13(OBJ_COLLX2),a5 + movi vln_right_fence,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x1 + jrlt #xr_ok2 + callr calc_line_x + cmp a0,a5 ;xpos - a0 + jrlt #xr_ok2 + jreq #no_r2 + + ;must move left (a5-a0) pixels. If we're attached, move our + ; opponent too. + sub a0,a5 + + move *a13(OBJ_XPOSINT),a14 + sub a5,a14 + move a14,*a13(OBJ_XPOSINT) + move a0,*a13(X_BOUND) + + move *a13(ATTACH_PROC),a1,L + jrz #no_r2 + move *a1(OBJ_XPOSINT),a14 + sub a5,a14 + move a14,*a1(OBJ_XPOSINT) + move a0,*a1(X_BOUND) +#no_r2 + ori MOVE_RIGHT,a7 ;can't move right +#xr_ok2 + + + +;now check for the mat/ring + +#cont_x + move *a13(OBJ_XPOSINT),a5 + cmpi RING_X_CENTER,a5 + jrgt #right_side +;left side + movi vln_left_matedge2,a6 + callr calc_line_x + jrz #done2 ;out of range + move *a13(OBJ_COLLX2),a8 + sub a0,a8 ;xpos - a0 =(xov) + jrn #done2 + + move *a13(OBJ_ZPOSINT),a4 + cmpi RING_Z_CENTER,a4 + jrgt #bot_left +;top left + move *a6(10h),a0 +;;; dec a4 + move a4,a9 + sub a0,a9 ;zpos - z1 =(zov) + cmp a8,a9 ;zov - xov + jrgt #no_r3 + + sub a9,a4 + move a4,*a13(Z_BOUND) + sll 16,a4 + move a4,*a13(OBJ_ZPOS),L + ori MOVE_DOWN,a7 ;can't move down + + calla ck_climb_in_top + + jruc #done2 + +#bot_left + move *a6(30h),a9 +;;; inc a4 + sub a4,a9 ;z2 - zpos =(zov) + cmp a8,a9 ;zov - xov + jrgt #no_r3 + add a9,a4 + move a4,*a13(Z_BOUND) + sll 16,a4 + move a4,*a13(OBJ_ZPOS),L + ori MOVE_UP,a7 ;can't move up + + calla ck_climb_in_bot + + jruc #done2 + +#no_r3 + sub a8,a5 + move a5,*a13(X_BOUND) + sll 16,a5 + move a5,*a13(OBJ_XPOS),L + ori MOVE_RIGHT,a7 ;can't move right + + calla ck_climb_in_side + + jruc #done2 + + +#right_side + movi vln_right_matedge2,a6 + callr calc_line_x + jrz #done2 ;out of range + move a0,a8 + move *a13(OBJ_COLLX1),a0 + sub a0,a8 ;a8 - xpos =(xov) + jrn #done2 + + move *a13(OBJ_ZPOSINT),a4 + cmpi RING_Z_CENTER,a4 + jrgt #bot_right +;top right + move *a6(10h),a0 +;;; dec a4 + move a4,a9 + sub a0,a9 ;zpos - z1 =(zov) + cmp a8,a9 ;zov - xov + jrgt #no_l3 + sub a9,a4 + move a4,*a13(Z_BOUND) + sll 16,a4 + move a4,*a13(OBJ_ZPOS),L + ori MOVE_DOWN,a7 ;can't move down + + calla ck_climb_in_top + + jruc #done2 + + +#bot_right + move *a6(30h),a9 +;;; inc a4 + sub a4,a9 ;z2 - zpos =(zov) + cmp a8,a9 ;zov - xov + jrgt #no_l3 + add a9,a4 + move a4,*a13(Z_BOUND) + sll 16,a4 + move a4,*a13(OBJ_ZPOS),L + ori MOVE_UP,a7 ;can't move up + + calla ck_climb_in_bot + + jruc #done2 + + +#no_l3 + add a8,a5 + move a5,*a13(X_BOUND) + sll 16,a5 + move a5,*a13(OBJ_XPOS),L + ori MOVE_LEFT,a7 ;can't move down + + calla ck_climb_in_side + +#done2 + move a7,*a13(CAN_MOVE_DIR) + rets + +#***************************************************************************** +* + SUBRP wrestler_friction + + move *a13(ANIMODE),a0 + btst MODE_FRICTION_BIT,a0 + jrz #no_friction + + move *a13(OBJ_FRICTION),a0 + + move *a13(OBJ_XVEL),a1,L + jrz #no_friction + jrn #add + + sub a0,a1 + jrp #ok1 + clr a1 +#ok1 + move a1,*a13(OBJ_XVEL),L + rets + +#add + add a0,a1 + jrn #ok2 + clr a1 +#ok2 + move a1,*a13(OBJ_XVEL),L + + +#no_friction + rets + +#***************************************************************************** +* Change an objects image +* A0=*New image +* A1=New flip flags & const +* A8=*Obj +* Trashes scratch + + SUBR change_image + + + PUSH a2,a3 + + cmpi ROM,a0 + jrlo #anierr + + move a0,a2 + move a1,a3 + + move a2,*a8(OIMG),L + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + + move *a2(IANIOFFX),*a8(ODXOFF) ;display x offset + move *a2(IANIOFFY),*a8(ODYOFF) ;display y offset + + + setf 5,0,0 + move *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 6,0,0 + move a3,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + +#x PULL a2,a3 + rets + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,2 + .endif + jruc #x + + +#***************************************************************************** +* +* calls movement code base on wrestler number +* +* a13 = * wrestler process + + SUBRP move_wrestler + + move @HALT,a0 + jrnz #x + +;MJT Start +; move *a13(IMMOBILIZE_TIME),a0 +; jrnz #x +; .if 0 +;;Check health +;;Fall back unless in opponent in combo +; move *a13(PLYRMODE),a0 +; cmpi MODE_DEAD,a0 +; jrz #ok +; cmpi MODE_NORMAL,a0 +; jrnz #ok +; +; move *a13(PLYRNUM),a1 +; calla get_health +; jrnz #ok +; move *a13(WHOHITME),a8,L +; calla CHECK_COMBO_GO +; jrlt #ok +;;Am I in the middle of a combo? +; move *a8(COMBO_COUNT),a0 +; jrnz #ok +; +;;At end of combo, fall down +; +; SETMODE DEAD +; +;;FIX!!! +;;Add dizzy sequence here for finish move. +; +; .ref fall_back_tbl +; +; FACETBL fall_back_tbl +; calla change_anim1a +; +; move *a13(WHOHITME),a4,L +; movi [3,0],a2 +; move *a4(OBJ_XPOSINT),a0 +; move *a13(OBJ_XPOSINT),a1 +; cmp a0,a1 ;offx - defx +; jrgt #fall_right ;attacker on left +; movi [-3,0],a2 +;#fall_right +; move a2,*a13(OBJ_XVEL),L +; movi [5,0],a2 +; move a2,*a13(OBJ_YVEL),L +; +; rets +;#ok +; .endif + +;MJT End + + + + ;check to see if a special move watchdog proc has queued up an anim. + ; If one has, do that instead of calling move_xxx. + move *a13(SPECIAL_MOVE_ADDR),a0,L + jrz #no_special + + ;a special has been queued up. do it. + calla change_anim1a + clr a14 + move a14,*a13(SPECIAL_MOVE_ADDR),L + jruc #x + +#no_special + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #code_addr,a0 + move *a0,a0,L + call a0 +#x + rets + + +#code_addr + .long move_bret ;0 Bret Hart + .long move_razor ;1 Razor Ramon + .long move_taker ;2 Undertaker + .long move_yoko ;3 Yokozuna + .long move_shawn ;4 Shawn Michaels + .long move_bam ;5 Bam Bam + .long move_doink ;6 Doink + .long move_doink ;7 spare + .long move_lex ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** + + SUBR tint_on + + PUSH a0,a1 + movi 07fffh,a0 ;all bits on (5 bits RGB (white)) + movi COLRAM,a1 ;base address of colour ram + move a0,*a1 ;restore colour + PULL a0,a1 + rets + +#***************************************************************************** + + SUBR tint_off + + PUSH a0,a1 + clr a0 ;all bits off (black) + movi 8<<10+8<<5+8,a0 ;grey + movi COLRAM,a1 ;base address of colour ram + move a0,*a1 ;restore colour + PULL a0,a1 + rets + +#***************************************************************************** + + SUBRP realtime_clock + + clr a8 + move a8,@match_realtime + +#loop SLEEP TSEC + inc a8 + move a8,@match_realtime + jruc #loop + +#***************************************************************************** + + SUBRP match_timer + + movi 9,a0 + move a0,@match_time ;10's + move a0,@match_time+10h ;1's + clr a0 + move a0,@match_time+20h ;fractional + + callr #create_timer + + SLEEP TSEC*2 + + movi ADJSPEED,a0 ;game timer speed (1-5) + calla GET_ADJ + sll 4,a0 ;x 16 bits + addi timer_table-10h,a0 + move *a0,a10 + +#loop + SLEEPK 1 + + move @HALT,a0 + jrnz #loop + + movi NUM_WRES,a1 +next_1 + callr are_we_dead + jrc #loop + dec a1 + jrnn next_1 + + callr #dec_timer + callr update_timer + + jruc #loop + +are_we_dead + callr get_process_ptr + move a0,a0 + jrz no_we_arent + move *a0(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jrne no_we_arent + setc + rets +no_we_arent + clrc + rets + + +******************** + +#create_timer + + movi [186,0],a0 ;x pos + movi [21,0],a1 ;y pos + movi WGSF20_9,a2 + movi 200,a3 ;z pos + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + move a8,*a13(PDATA+20h),L ;10's image pointer + + movi [200+2,0],a0 ;x pos + movi [21,0],a1 ;y pos + movi WGSF20_9,a2 + calla BEGINOBJ + move a8,*a13(PDATA),L ;1's image pointer + + rets + +******************** + +#dec_timer + move @match_time,a0,L + cmpi 090009h,a0 + jrne #no_reset_pal + movi WGFS_W_P,a0 + calla pal_getf + move *a13(PDATA+20h),a8,L ;10's image pointer + move a0,*a8(OPAL) + move *a13(PDATA),a8,L ;10's image pointer + move a0,*a8(OPAL) + +#no_reset_pal + + move @match_time+20h,a0 ;fractional + sub a10,a0 + + move a0,@match_time+20h + jrnc #no_change + + move @match_time+10h,a0 ;1's + dec a0 + move a0,@match_time+10h + jrnc #no_borrow + + movi 9,a0 + move a0,@match_time+10h + + move @match_time,a0 ;10's + dec a0 + move a0,@match_time + + cmpi 0,a0 + + jrne #no_borrow + movi WGSF_R_P,a0 + calla pal_getf + move *a13(PDATA+20h),a8,L ;10's image pointer + move a0,*a8(OPAL) + move *a13(PDATA),a8,L ;10's image pointer + move a0,*a8(OPAL) + +#no_borrow + ;if time is less than 15, make noise + move @match_time,a0,L + move a0,a1 + sra 16,a0 + andi 0Fh,a1 + sla 4,a1 + or a1,a0 + cmpi 10h,a0 + jrgt #no_change + movi 10,a0 ;Time warning sound + calla triple_sound + +#no_change + rets + +timer_table + .asg 1500,BASETM + + .word BASETM-BASETM*30/100 ;1 (slowest) ;Approx 2.5 minutes + .word BASETM-BASETM*15/100 ;2 (slower) + .word BASETM ;3 (default) ;Approx 2 minutes + .word BASETM+BASETM*15/100 ;4 (faster) + .word BASETM+BASETM*30/100 ;5 (fastest) ;Approx 1.5 minutes + + +******************** + +update_timer + + move @match_time,a0 ;10's + .if DEBUG + cmpi 10,a0 + jrlt #ok1 + + ;clock digit out of range! + LOCKUP +#ok1 + .endif + + X32 a0 + addi digit_tbl,a0 + move *a0,a0,L ;* image + move *a13(PDATA+20h),a8,L ;10's image pointer + move *a8(OCTRL),a1 ;DMA flags + calla change_image + + move @match_time+10h,a0 ;1's + .if DEBUG + cmpi 10,a0 + jrlt #ok2 + + ;clock digit out of range! + LOCKUP + .endif +#ok2 + + X32 a0 + addi digit_tbl,a0 + move *a0,a0,L ;* image + move *a13(PDATA),a8,L ;1's image pointer + move *a8(OCTRL),a1 ;DMA flags + calla change_image + + rets + + +****************************************************************************** + + ;!KEEP THIS ORDER! + .bss up_dtime1, 16*NUM_WRES ;number of ticks stick held down + .bss down_dtime1, 16*NUM_WRES + .bss left_dtime1, 16*NUM_WRES + .bss right_dtime1, 16*NUM_WRES + .bss punch_dtime1, 16*NUM_WRES + .bss block_dtime1, 16*NUM_WRES ;number of ticks button held down + .bss powerp_dtime1, 16*NUM_WRES + .bss kick_dtime1, 16*NUM_WRES + .bss powerk_dtime1, 16*NUM_WRES + + +****************************************************************************** + +;;Plyr 1 +; .bss up_dtime1, 16 ;number of ticks stick held down +;;Plyr 2 +; .bss up_dtime2, 16 ;!!!! KEEP THIS ORDER! +; .bss down_dtime1, 16 +; .bss down_dtime2, 16 +; .bss left_dtime1, 16 +; .bss left_dtime2, 16 +; .bss right_dtime1, 16 +; .bss right_dtime2, 16 +; +; .bss punch_dtime1, 16 +; .bss punch_dtime2, 16 +; .bss block_dtime1, 16 ;number of ticks button held down +; .bss block_dtime2, 16 ;!!!! KEEP THIS ORDER! +; .bss powerp_dtime1, 16 +; .bss powerp_dtime2, 16 +; .bss kick_dtime1, 16 +; .bss kick_dtime2, 16 +; .bss powerk_dtime1, 16 +; .bss powerk_dtime2, 16 + + +#***************************************************************************** + + + + SUBRP init_joy_dtime + + clr a0 + + movi up_dtime1,a1 + movi 9*NUM_WRES,a2 +#lp1 + move a0,*a1+ + dsj a2,#lp1 + + rets + +#***************************************************************************** + + SUBR get_block_dtime + + X16 a0 + addi block_dtime1,a0 + move *a0,a0 + rets + +#***************************************************************************** + + SUBR get_powerp_dtime + + X16 a0 + addi powerp_dtime1,a0 + move *a0,a0 + rets + +#***************************************************************************** + + SUBR get_punch_dtime + + X16 a0 + addi punch_dtime1,a0 + move *a0,a0 + rets + +#***************************************************************************** + + SUBR get_kick_dtime + + X16 a0 + addi kick_dtime1,a0 + move *a0,a0 + rets + +#***************************************************************************** + + SUBR get_powerk_dtime + + X16 a0 + addi powerk_dtime1,a0 + move *a0,a0 + rets + + +#***************************************************************************** + + + SUBRP update_joy_dtime + + move *a13(PLYRNUM),a2 + callr #update_but + move *a13(PLYRNUM),a2 + callr #update_stick + + rets + +#update_stick + move a13,a0 + callr wres_get_stick_val_cur + X16 a2 + addi up_dtime1,a2 + + movi 4,a3 +#loop1 + clr a1 + + srl 1,a0 + jrnc #clr1 + + move *a2,a1 + inc a1 +#clr1 + move a1,*a2 + + addi 16*NUM_WRES,a2 + dsj a3,#loop1 + + rets + +#update_but + move a13,a0 + callr wres_get_but_val_cur + X16 a2 + addi punch_dtime1,a2 + + movi 5,a3 +#loop2 + clr a1 + + srl 1,a0 + jrnc #clr2 + + move *a2,a1 + inc a1 +#clr2 + move a1,*a2 + + addi 16*NUM_WRES,a2 + dsj a3,#loop2 + + rets + +#***************************************************************************** +* a13 = * current process +* calculates closest opponent and distances to him + + +; first calculate the distance on the X-Z plane +; dxz = sqroot ( (x1-x2)^2 + (z1-z2)^2 ) +; total dist = sqroot ( DXZ^2 + (y1-y2)^2 ) + + +;RJR START + SUBRP calc_closest2 + + move *a13(PLYRNUM),a0 + andi 3,a0 + move @PCNT,a1 + andi 3,a1 + cmp a0,a1 + jrnz #x + +;RJR END + + SUBRP calc_closest + + move *a13(PLYR_TYPE),a0 +; cmpi PTYPE_REFEREE,a0 +; jreq #ref_calc_closest + + move *a13(OBJ_XPOSINT),a4 + move *a13(OBJ_ZPOSINT),a5 + move *a13(OBJ_YPOSINT),a6 + + movi 8000h,a3 ;closest distance + movi process_ptrs,a2 + movi NUM_WRES,a1 +#loop + move *a2+,a10,L + jrz #inactive + cmp a13,a10 + jreq #skip ;skip self + + move *a13(PLYR_SIDE),a7 + move *a10(PLYR_SIDE),a8 + cmp a7,a8 + jreq #skip ;skip friendly + + PUSH a1 + + move *a10(OBJ_XPOSINT),a7 + move *a10(OBJ_ZPOSINT),a8 + move *a10(OBJ_YPOSINT),a9 + + sub a4,a7 ;abs(delta x) + abs a7 + move a7,a1 + mpyu a1,a1 ;^2 + move a1,a0 + + sub a5,a8 ;abs(delta z) + abs a8 + move a8,a1 + mpyu a1,a1 ;^2 + add a1,a0 + + sub a6,a9 ;abs(delta y) + abs a9 + move a9,a1 + mpyu a1,a1 ;^2 + add a1,a0 + calla square_root ;sqroot of dxz^2 + dy^2 + + PULL a1 + + cmp a3,a0 ;a0-a3 + jrgt #not_closest + + move a0,a3 + move a3,*a13(CLOSEST_DIST) + move a7,*a13(CLOSEST_XDIST) + move a8,*a13(CLOSEST_ZDIST) + move a9,*a13(CLOSEST_YDIST) + + movi NUM_WRES,a0 + sub a1,a0 + move a0,*a13(CLOSEST_NUM) + +#inactive +#skip +#not_closest + dsj a1,#loop + +;RJR START +#x +;RJR END + rets + +#***************************************************************************** +* +* if attached, updates position based on player attached to +* wrestler proc = *a13 +* +* RETURNS: Z=1 - not attached to anything +* Z=0 - attached and updated +* +* TRASHES: a0,a1,a2 + + SUBR master_keep_attached + + + move *a13(ATTACH_PROC),a10,L ;proc attached to me + jrz #not_attached + move *a10(ATTACH_PROC),a0,L + jrz #not_attached + +#still_attached + ;first, see if opponent is on the ground. + move *a10(OBJ_YPOS),a0,L + move *a10(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + + ;opponent is on ground. first, make sure he's not in MODE_GHOST + move *a10(ANIMODE),a14 + btst MODE_GHOST_BIT,a14 + jrnz #opp_notgnd + + ;calc new 'floor' + move *a10(OBJ_YPOS),a0,L + move *a13(ATTACH_YOFF),a14 + sll 16,a14 + sub a14,a0 + + ;a0 is our new floor. stay at or above + move *a13(OBJ_YPOS),a14,L + cmp a14,a0 + jrle #above_newfloor + + ;too low. climb + move a0,*a13(OBJ_YPOS),L + +#above_newfloor +#opp_notgnd + + clr a0 + move a0,*a10(OBJ_YVEL),L + + move *a13(OBJ_ZPOS),a0,L + move *a13(ATTACH_ZOFF),a1 + sll 16,a1 + add a1,a0 + move a0,*a10(OBJ_ZPOS),L + + move *a13(OBJ_YPOS),a0,L + move *a13(ATTACH_YOFF),a1 + sll 16,a1 + add a1,a0 + move a0,*a10(OBJ_YPOS),L + + move *a13(OBJ_XPOS),a0,L + move *a13(ATTACH_XOFF),a1 + sll 16,a1 + + move *a13(FACING_DIR),a2 + btst MOVE_RIGHT_BIT,a2 + jrnz #add + neg a1 +#add + add a1,a0 + move a0,*a10(OBJ_XPOS),L + + movk 1,a0 ;Z=0 + +#not_attached + rets + + +#***************************************************************************** +* +* if attached, updates position based on player attached to +* wrestler proc = *a13 +* +* RETURNS: Z=1 - not attached to anything +* Z=0 - attached and updated +* +* TRASHES: a0,a1,a2 + + + SUBR keep_attached + + + move *a13(ATTACH_PROC),a2,L ;proc attached to + jrz #not_attached + move *a2(ATTACH_PROC),a0,L + jrz #not_attached + +#still_attached + clr a0 + move a0,*a13(OBJ_YVEL),L + + move *a2(OBJ_ZPOS),a0,L + move *a2(ATTACH_ZOFF),a1 + sll 16,a1 + add a1,a0 + move a0,*a13(OBJ_ZPOS),L + + move *a2(OBJ_YPOS),a0,L + move *a2(ATTACH_YOFF),a1 + sll 16,a1 + add a1,a0 + move a0,*a13(OBJ_YPOS),L + + + move *a2(OBJ_XPOS),a0,L + move *a2(ATTACH_XOFF),a1 + sll 16,a1 + + move *a2(FACING_DIR),a2 + btst MOVE_RIGHT_BIT,a2 + jrnz #add + neg a1 +#add + add a1,a0 + move a0,*a13(OBJ_XPOS),L + + movk 1,a0 ;Z=0 + +#not_attached + rets + + +#***************************************************************************** +* +* RETURNS: a0 = * closest opponent process +* +* TRASHES: a0 + + SUBR get_opp_process + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + + rets + +#***************************************************************************** +* +* RETURNS: a0 = PLYRMODE of the closest opponent +* +* TRASHES: a0 + + SUBR get_opp_plyrmode + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(PLYRMODE),a0 + + rets + +#***************************************************************************** +* +* ARGS: a0 = facing value (in binary form - 0,1,2,4,8) +* +* RETURNS: a0 = facing value (in linear form - 0,1,2,3 - 8) +* + + SUBR convert_facing + + X16 a0 + addi #convert_table,a0 + move *a0,a0 + rets + +#convert_table + .word 0 ;0 zip + .word 0 ;1 up + .word 4 ;2 down + .word 0 ;3 zip + .word 6 ;4 left + .word 7 ;5 up_left + .word 5 ;6 down_left + .word 0 ;7 zip + .word 2 ;8 right + .word 1 ;9 up_right + .word 3 ;10 down_right + .word 0 ;11 zip + .word 0 ;12 zip + .word 0 ;13 zip + .word 0 ;14 zip + .word 0 ;15 zip + +digit_tbl + .long WGSF20_0,WGSF20_1,WGSF20_2,WGSF20_3,WGSF20_4 + .long WGSF20_5,WGSF20_6,WGSF20_7,WGSF20_8,WGSF20_9 + +#***************************************************************************** +* + + SUBRP postgame_audits + + ;battle over accounting. + + ;increment AUD_VSHUMF or AUD_VSCPUF (and AUD_CPUWIN) + movi AUD_VSHUMF,a0 + move @PSTATUS,a14 + cmpi 03h,a14 + jreq #vshum + movi AUD_VSCPUF,a0 +#vshum + calla AUD1 + + ;add to AUD_2PBTIME, AUD_CPUWINTIME, or AUD_CPULOSETIME + move @PSTATUS,a14 + cmpi 03h,a14 + jreq #2pbtime + + move @match_winner,a0 + and a0,a14 + jrnz #cpulosetime + jruc #cpuwintime + +#2pbtime + movi AUD_2PBTIME,a0 + jruc #addtime + +#cpuwintime + movi AUD_CPUWIN,a0 + calla AUD1 + movi AUD_CPUWINTIME,a0 + jruc #addtime +#cpulosetime + movi AUD_CPULOSETIME,a0 + jruc #addtime + +#addtime + move @match_realtime,a1 + calla AUD + + ;update record speeds + move @PSTATUS,a14 + cmpi 03h,a14 + jreq #fast_2p + + move @match_winner,a0 + and a0,a14 + jrnz #fast_cpulose + jruc #fast_cpuwin + +#fast_2p + movi AUD_FASTHDH,a0 + calla GET_AUD + jrz #no_prior_hdh + move @match_realtime,a2 + cmp a1,a2 + jrge #recordspeed_done +#no_prior_hdh + movi AUD_FASTHDH,a0 + move @match_realtime,a1 + calla STORE_AUDIT + jruc #recordspeed_done + +#fast_cpulose + movi AUD_FASTHDC,a0 + calla GET_AUD + jrz #no_prior_hdc + move @match_realtime,a2 + cmp a1,a2 + jrge #recordspeed_done +#no_prior_hdc + movi AUD_FASTHDC,a0 + move @match_realtime,a1 + calla STORE_AUDIT + jruc #recordspeed_done + +#fast_cpuwin + movi AUD_FASTCDH,a0 + calla GET_AUD + jrz #no_prior_cdh + move @match_realtime,a2 + cmp a1,a2 + jrge #recordspeed_done +#no_prior_cdh + movi AUD_FASTCDH,a0 + move @match_realtime,a1 + calla STORE_AUDIT + +#recordspeed_done + + ;increment the proper wrestler use thingies + + MOVE @PSTATUS,A0 + CMPI 3,A0 + JREQ NORMAL_PLAYER_AUDITS + move @index1,a2 + CLR A1 + SRL 1,A0 + JRC AUDIT_THE_HUMAN + move @index2,a2 + MOVK 1,A1 + +AUDIT_THE_HUMAN + CALLR AUDIT_SPECIFIC_WRESTLE + + MOVE @NUM_OPPS,A3 + MOVK 2,A1 + MOVE @CURRENT_LADDER,A10,L + MOVE *A10,A4,L + +AUDIT_NEXT_COMP + MOVE A4,A2 + SLL 24,A2 + SRL 24,A2 + X64 a2 ;x 4 words + addi wrestler_audits,a2 + addi 20h,a2 ;skip 2 words + move *a2+,a0,W ;increment uses + calla AUD1 + move @match_winner,a0 + CMPI 2,A0 + JRNZ CPU_NOT_WIN + move *a2+,a0,W ;increment uses + calla AUD1 +CPU_NOT_WIN + SRL 8,A4 + DSJS A3,AUDIT_NEXT_COMP + + RETS + +NORMAL_PLAYER_AUDITS + ;player 1 + move @index1,a2 + CLR A1 + CALLR AUDIT_SPECIFIC_WRESTLE + + ;player 2 + move @index2,a2 + MOVK 1,A1 + CALLR AUDIT_SPECIFIC_WRESTLE + + RETS + +AUDIT_SPECIFIC_WRESTLE + X64 a2 ;x 4 words + addi wrestler_audits,a2 + + move @PSTATUS,a0 + btst A1,a0 + jrnz #p1hum + addi 20h,a2 ;skip 2 words +#p1hum + move *a2+,a0,W ;increment uses + calla AUD1 + + move @match_winner,a0 + btst A1,a0 + jrz #p1_audited + move *a2+,a0,W ;increment wins + calla AUD1 + +#p1_audited + RETS + +#***************************************************************************** +* +* a0 = * wrestler process +* + + SUBR wres_get_but_val_down + + move *a0(PLYR_TYPE),a14 + jrnz #drndt + move *a0(PLYRNUM),a0 + calla get_but_val_down + rets + +#drndt + move *a0(DRN_BUTDT),a0 + rets + +#***************************************************************************** + + SUBR wres_get_but_val_cur + + move *a0(PLYR_TYPE),a14 + jrnz #drndt + move *a0(PLYRNUM),a0 + calla get_but_val_cur + rets + +#drndt + move *a0(DRN_BUT),a0 + rets + +#***************************************************************************** + + SUBR wres_get_but_val_up + + move *a0(PLYR_TYPE),a14 + jrnz #drnut + move *a0(PLYRNUM),a0 + calla get_but_val_up + rets + +#drnut + move *a0(DRN_BUTUT),a0 + rets + +#***************************************************************************** + + SUBR wres_get_stick_val_cur + + move *a0(PLYR_TYPE),a14 + jrnz drn_joy + move *a0(PLYRNUM),a0 + calla get_stick_val_cur + rets + +drn_joy + move *a0(DRN_JOY),a0 + rets + + +#***************************************************************************** + + SUBR wres_get_stick_rel_cur + + + move *a0(PLYR_TYPE),a14 + jrnz drn_joy + move *a0(OBJ_CONTROL),a14 + move *a0(PLYRNUM),a0 + calla get_stick_val_cur + btst B_FLIPH,a14 + jrz #done + + X16 a0 + addi #xflip_table,a0 + move *a0,a0 +#done + rets + + + +;returns a value only if stick val +;has changed (but not zero) + + SUBR wres_get_stick_rel_new + + + move *a0(PLYR_TYPE),a14 + jrnz #not_human2 + +;shawn - this needs patching too... + + push a10 + + move a0,a10 + move *a10(PLYRNUM),a0 + calla get_stick_val_up + push a0 + + move *a10(PLYRNUM),a0 + calla get_stick_val_down + pull a1 + or a1,a0 + jrz #done2 ;no stick + + move *a10(OBJ_CONTROL),a14 + move *a10(PLYRNUM),a0 + calla get_stick_val_cur + btst B_FLIPH,a14 + jrz #done2 + + X16 a0 + addi #xflip_table,a0 + move *a0,a0 +#done2 + pull a10 + rets + + +#not_human2 + move a0,a14 + move *a14(DRN_JOYDT),a0 + move *a14(DRN_JOYUT),a1 + or a1,a0 + jrz #dx + move *a14(DRN_JOY),a0 +#dx + rets + + +#xflip_table ;convert to forward / away if facing left + .word 0000b ;0 + .word 0001b ;1 + .word 0010b ;2 + .word 0011b ;3 + .word 1000b ;4 + .word 1001b ;5 + .word 1010b ;6 + .word 1011b ;7 + .word 0100b ;8 + .word 0101b ;9 + .word 0110b ;10 + .word 0111b ;11 + .word 1100b ;12 + .word 1101b ;13 + .word 1110b ;14 + .word 1111b ;15 + +#***************************************************************************** + + SUBR wres_get_stick_val_down + + move *a0(PLYR_TYPE),a14 + jrnz #drnjoy + move *a0(PLYRNUM),a0 + calla get_stick_val_down + rets + +#drnjoy + move *a0(DRN_JOYDT),a0 + rets + +#***************************************************************************** + + SUBR wres_get_stick_val_up + + move *a0(PLYR_TYPE),a14 + jrnz #not_human + move *a0(PLYRNUM),a0 + calla get_stick_val_up + rets + +#not_human + clr a0 + rets + +#***************************************************************************** + + SUBRP init_joystat + + clr a0 + + move a0,@round_tickcount + + movi wrest_joystat,a1 + movi 16*NUM_WRES,a2 +#clr_loop + move a0,*a1+,L + dsj a2,#clr_loop + + rets + +#***************************************************************************** + + SUBRP update_joystat + +; move *a13(PLYR_TYPE),a0 +; jrnz #exit ;skip non-human players + + move @HALT,a0 + jrnz #exit + + move a13,a0 + callr wres_get_stick_val_cur + move a0,a8 + andi 01100b,a8 ;mask out left & right + sll 10-2,a8 ;shift to bit 10 & 11 + + move *a13(FACING_DIR),a14 + btst MOVE_LEFT_BIT,a14 + jrz #no_flip + X16 a0 + addi #xflip_table,a0 + move *a0,a0 ;flipped based on facing +#no_flip + or a0,a8 ;real L/R | flipped joy dirs + + + move a13,a0 + callr wres_get_stick_val_up + PUSH a0 + move a13,a0 + callr wres_get_stick_val_down + PULL a1 + or a1,a0 + jrz #no_stick + + move a8,a4 ;cur (flipped) stick vals + jrz #no_stick + + callr #insert + +#no_stick + + move a13,a0 + callr wres_get_but_val_down + move a0,a6 + jrz #no_button + X16 a6 + + movi 5,a5 ;5 button bits + movi 010000b,a7 ;1st bit << 4 (to skip 4 joy bits) +#bit_loop + move a6,a0 + and a7,a0 ;button down? + jrz #skip + move a0,a4 + or a8,a4 ;+ cur (flipped) stick vals + callr #insert ;only 1 button per entry +#skip + sll 1,a7 + dsj a5,#bit_loop + +#no_button + +#exit + rets + +#insert + move @round_tickcount,a0 + sll 16,a0 + or a0,a4 + + move *a13(PLYRNUM),a3 + sll 5+4,a3 ;PLYRNUM x32 x16 + + move a3,a0 ;start offset + addi wrest_joystat + 32*15,a0 ;2nd last entry (after pre-dec) + move a3,a1 + addi wrest_joystat + 32*16,a1 ;last entry (after pre-dec) + + movi 15,a2 ;# entries - 1 +#move_loop + move -*a0,-*a1,L ;move each entry down + dsj a2,#move_loop ;1 position + + move a3,a0 + addi wrest_joystat,a0 + move a4,*a0,L ;time stamp : joy & buttons + rets + + +#xflip_table ;convert to forward / away if facing left + .word 0 ;0 + .word J_UP ;1 + .word J_DOWN ;2 + .word 0 ;3 + .word J_TOWARD ;4 + .word J_UP_TOWARD ;5 + .word J_DOWN_TOWARD ;6 + .word 0 ;7 + .word J_AWAY ;8 + .word J_UP_AWAY ;9 + .word J_DOWN_AWAY ;10 + .word 0,0,0,0,0 ;11-15 + + +#***************************************************************************** + + SUBR clear_button_presses + + movk 5,a1 ;5 buttons + move a13,a2 + addi PUNCHB_COUNT,a2 + clr a0 +#loop + move a0,*a2+ + dsj a1,#loop + + rets + +#***************************************************************************** + + SUBR count_button_presses + + move a13,a0 + callr wres_get_but_val_down + move a0,a0 + jrz #exit + + movk 5,a1 ;5 bits + move a13,a2 + addi PUNCHB_COUNT,a2 +#loop + srl 1,a0 ;button-->Carry + jrnc #no_but + + move *a2,a14 + inc a14 + move a14,*a2 + +#no_but + addi 16,a2 + dsj a1,#loop + +#exit + rets + +; WORD PUNCHB_COUNT ;0 <------ +; WORD BLOCKB_COUNT ;1 keep | +; WORD SPUNCHB_COUN ;2 ordered| +; WORD KICK_COUNT ;3 | +; WORD SKICK_COUNT ;4 <------ + +#***************************************************************************** + + SUBR direction_test + + .if 0 + ;can put this in a mode + .ref direction_test + + move *a13(PLYRNUM),a8 + move *a13(CLOSEST_NUM),a9 + + CREATE0 direction_test ;temp!!!!!!!!!!! + + movi 424000h,a0 + move a0,*a13(OBJ_YVEL),L + + SETMODE INAIR + rets + .endif + + +;a8 = PLYRNUM +;a9 = CLOSEST_NUM + + move a8,*a13(PLYRNUM) + move a9,*a13(CLOSEST_NUM) + + X32 a8 + addi process_ptrs,a8 + move *a8,a10,L + + X32 a9 + addi process_ptrs,a9 + move *a9,a11,L + + move *a10(OBJ_XPOS),*a13(OBJ_XPOS),L + move *a10(OBJ_YPOS),*a13(OBJ_YPOS),L + move *a10(OBJ_ZPOS),*a13(OBJ_ZPOS),L + + + + move *a10(OBJ_XPOS),a0,L + move *a11(OBJ_XPOS),a1,L + sub a0,a1 + movi TSEC,a0 + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_XVEL),L + + + move *a10(OBJ_ZPOS),a0,L + move *a11(OBJ_ZPOS),a1,L + sub a0,a1 + movi TSEC,a0 + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_ZVEL),L + + + + clr a0 + move a0,*a13(OBJ_YVEL),L + +; move a0,*a13(OBJ_XVEL),L +; move a0,*a13(OBJ_ZVEL),L + + + + + + + clr a0 ;x pos + clr a1 ;y pos + movi D2ST2B03,a2 ;* image + movi 20,a3 ;z pos + movi DMAWNZ|M_3D,a4 ;DMA flags + move a4,*a13(OBJ_CONTROL) + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + movi TSEC,a0 +#loop + PUSHP a0 + +;velocity add + move *a13(OBJ_XPOS),a0,L + move *a13(OBJ_XVEL),a1,L + add a1,a0 + move a0,*a13(OBJ_XPOS),L + + move *a13(OBJ_YPOS),a0,L + move *a13(OBJ_YVEL),a1,L + add a1,a0 + jrnn #yok + clr a0 +#yok + move a0,*a13(OBJ_YPOS),L + + move *a13(OBJ_ZPOS),a0,L + move *a13(OBJ_ZVEL),a1,L + add a1,a0 + move a0,*a13(OBJ_ZPOS),L + + + + + +;image plot + move *a13(OBJ_XPOS),a5,L ;x val + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(OBJ_ZPOSINT),a1 + mpys a0,a1 + move a1,a6 ;y val + + move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops + + move a6,*a8(OYVAL),L ;keep updating YVAL to keep priorities + + move a5,*a8(OXVAL),L + move a6,*a8(OYVAL),L + + movi [20,0],a1 ;z pos + move a1,*a8(OZVAL),L + + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + + SLEEPK 1 + + PULLP a0 + dsj a0,#loop + + calla DELOBJA8 + + DIE + +#***************************************************************************** +* +* a11 = * secret move table +* a13 = * wrestler process + + SUBR check_secret_moves + +;Jamie - drone code secret moves are not allowed here! +; move *a13(PLYR_TYPE),a14 +; jrnz #done ;not human + + move *a13(PLYRMODE),a14 + cmpi MODE_DIZZY,a14 + jreq #done + +;No secret moves if getup time is set - out of control runs, etc. + move *a13(GETUP_TIME),a14 + jrnz #done + + move *a11+,a0,L ;button hold test code + call a0 + jrc #done + + move *a13(PLYRNUM),a10 + sll 5+4,a10 ;PLYRNUM x32 x16 + addi wrest_joystat,a10 + + ;only check if newest entry in queue is fresh + move *a10(10h),a0 ;time stamp + move @round_tickcount,a1 + cmp a0,a1 + jrne #done + + +#next_table +;RJR START + .align +;RJR END + move *a11+,a2,L + jrz #done + move a10,a9 + + movk 8,a3 ;only skip 8 masked entries + + ;the first entry in the queue requires a special check... + move *a2,a0 ;value + move *a2(10h),a1 ;mask + move *a9,a14,L + andi 0ffffh,a14 ;queue head + andn a1,a14 ;apply mask + + ;if the mask leaves nothing behind, then there's noise since the + ; final (trigger) move, so blow it off. + jrz #next_table + +#loop + move *a2+,a0 + jrn #match + move *a2+,a1 ;mask +#skip + + ;check for end of table (16 entries) + + move *a9+,a7,L + move a7,a8 + srl 16,a7 ;round tick count + andi 0ffffh,a8 ;joy+buttons + andn a1,a8 + dsjeq a3,#skip + + cmp a0,a8 + jreq #loop + +#failed + jruc #next_table + +#done + rets + +#match + andi 07fffh,a0 ;clear out sign bit + move @round_tickcount,a1 + andi 0ffffh,a1 ;clear out sign extend + sub a7,a1 + cmp a0,a1 ;below count? + jrgt #failed + + move *a2,a0,L ;code to execute + jump a0 + +#***************************************************************************** +* +* sets animations for legs & torso based on facing & move direction +* + + SUBR change_walk_anim + +;Fix walking speeds! + clr a0 + move a0,*A13(RISK) + +;MJT Start + move *a13(WALK_FAST),a0 + jrnz #fast +;MJT End + + callr get_opp_process + move *a0(PLYRMODE),a0 ;don't slow down if backing + cmpi MODE_ONGROUND,a0 ;away from a downed opponent + jrnz #notgrnd +;MJT Start +#fast +;MJT End + movi 0cdh,a0 ;fast legs + jruc #go_spd + +#notgrnd + movi 100h,a0 ;normal speed + +#go_spd + move a0,*a13(ANI_SPEED) + move *a13(ANIMODE2),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(FACING_DIR),a0 + callr convert_facing ;(0-7) + srl 1,a0 ;only uses diagonals (0-3) + X4 a0 + move a0,a1 + + move *a13(NEW_FACING_DIR),a0 + callr convert_facing ;(0-7) + srl 1,a0 ;only uses diagonals (0-3) + add a1,a0 + X32 a0 + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #wres_torso_anims,a14 + move *a14,a14,L ;* torso anim table + add a14,a0 + + move *a0,a0,L + calla change_anim2 ;torso + +#no_interrupt + + move *a13(MOVE_DIR),a0 + callr convert_facing ;(0-7) + X8 a0 + move a0,a1 + + move *a13(FACING_DIR),a0 + callr convert_facing ;(0-7) + add a1,a0 + X32 a0 + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #wres_leg_anims,a14 + move *a14,a14,L ;* leg anim table + add a14,a0 + + move *a0,a0,L ;* new animation + calla change_anim1 ;legs + + rets + + + .ref bam_torso_anims_table,bam_leg_anims_table + .ref dnk_torso_anims_table,dnk_leg_anims_table + .ref hrt_torso_anims_table,hrt_leg_anims_table + .ref lex_torso_anims_table,lex_leg_anims_table + .ref rzr_torso_anims_table,rzr_leg_anims_table + .ref shn_torso_anims_table,shn_leg_anims_table + .ref und_torso_anims_table,und_leg_anims_table + .ref yok_torso_anims_table,yok_leg_anims_table + +#wres_torso_anims + .long hrt_torso_anims_table ;0 Bret Hart + .long rzr_torso_anims_table ;1 Razor Ramon + .long und_torso_anims_table ;2 Undertaker + .long yok_torso_anims_table ;3 Yokozuna + .long shn_torso_anims_table ;4 Shawn Michaels + .long bam_torso_anims_table ;5 Bam Bam + .long dnk_torso_anims_table ;6 Doink + .long dnk_torso_anims_table ;7 spare + .long lex_torso_anims_table ;8 Lex Luger + .long 0 ;9 Referee + +#wres_leg_anims + .long hrt_leg_anims_table ;0 Bret Hart + .long rzr_leg_anims_table ;1 Razor Ramon + .long und_leg_anims_table ;2 Undertaker + .long yok_leg_anims_table ;3 Yokozuna + .long shn_leg_anims_table ;4 Shawn Michaels + .long bam_leg_anims_table ;5 Bam Bam + .long dnk_leg_anims_table ;6 Doink + .long dnk_leg_anims_table ;7 spare + .long lex_leg_anims_table ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** +* +* returns: A0 = rotation anim based on NEW_FACING_DIR & FACING_DIR +* +* goes into stance anim if already facing if NEW_FACING = FACING + + SUBR set_rotate_anim + + move *a13(FACING_DIR),a0 + calla convert_facing ;(0-7) + srl 1,a0 ;only uses diagonals (0-3) + X4 a0 + move a0,a1 + + move *a13(NEW_FACING_DIR),a0 + calla convert_facing ;(0-7) + srl 1,a0 ;only uses diagonals (0-3) + add a1,a0 + X32 a0 + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #wres_rotate_anims,a14 + move *a14,a14,L ;* rotate anim table + add a14,a0 + + move *a13(NEW_FACING_DIR),a14 + move a14,*a13(FACING_DIR) + + move *a0,a0,L +;;; calla change_anim1 + + rets + + + .ref bam_rotate_anims_table + .ref dnk_rotate_anims_table + .ref hrt_rotate_anims_table + .ref lex_rotate_anims_table + .ref rzr_rotate_anims_table + .ref shn_rotate_anims_table + .ref und_rotate_anims_table + .ref yok_rotate_anims_table + +#wres_rotate_anims + .long hrt_rotate_anims_table ;0 Bret Hart + .long rzr_rotate_anims_table ;1 Razor Ramon + .long und_rotate_anims_table ;2 Undertaker + .long yok_rotate_anims_table ;3 Yokozuna + .long shn_rotate_anims_table ;4 Shawn Michaels + .long bam_rotate_anims_table ;5 Bam Bam + .long dnk_rotate_anims_table ;6 Doink + .long dnk_rotate_anims_table ;7 spare + .long lex_rotate_anims_table ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** + + SUBR bounce_off_ropes + +;Skiles, running into opponent up against the ropes still causes the +;ropes to bend. There also is a glitch when you are up against a rope and +;then try to run into it. + + move *a13(INRING),a0 + jrnz #outside + + move *a13(WRESTLERNUM),a14 + X16 a14 + addi #bounce_xoffsets,a14 + move *a14,a14 + + + move *a13(MOVE_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #right +;#left + movi vln_left_rope,a6 + callr calc_line_x + sub a14,a0 + move *a13(OBJ_COLLX1),a1 + cmp a0,a1 ;a0-a1 + jrle #bounce + rets + +#right + movi vln_right_rope,a6 + callr calc_line_x + add a14,a0 + move *a13(OBJ_COLLX2),a1 + cmp a0,a1 ;a0-a1 + jrle #no_bounce + +#bounce +;;; move a0,*a13(OBJ_XPOSINT) + + + MOVE *A13(GETUP_TIME),A0 + JRNZ ALREADY_DONE_RISK_MESS + + move *a13(RISK),A0 + JRNZ ALREADY_DONE_RISK_MESS + +;Time to execute high-risk move! + MOVI 40,A0 + MOVE A0,*A13(RISK) + +ALREADY_DONE_RISK_MESS + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #bounce_anims,a14 + move *a14,a0,L ;* bounce anim + calla change_anim1a + SETMODE BOUNCING + +#no_bounce +#outside + rets + + + .ref bam_bounce_anim + .ref dnk_bounce_anim + .ref hrt_bounce_anim + .ref lex_bounce_anim + .ref rzr_bounce_anim + .ref shn_bounce_anim + .ref und_bounce_anim + .ref yok_bounce_anim + +#bounce_xoffsets + .word -20 ;0 Bret Hart + .word -20 ;1 Razor Ramon + .word -20 ;2 Undertaker + .word -20 ;3 Yokozuna + .word 0 ;4 Shawn Michaels + .word -30 ;5 Bam Bam + .word -20 ;6 Doink + .word -20 ;7 spare + .word -20 ;8 Lex Luger + .word 0 ;9 Referee + +#bounce_anims + .long hrt_bounce_anim ;0 Bret Hart + .long rzr_bounce_anim ;1 Razor Ramon + .long und_bounce_anim ;2 Undertaker + .long yok_bounce_anim ;3 Yokozuna + .long shn_bounce_anim ;4 Shawn Michaels + .long bam_bounce_anim ;5 Bam Bam + .long dnk_bounce_anim ;6 Doink + .long dnk_bounce_anim ;7 spare + .long lex_bounce_anim ;8 Lex Luger + .long dnk_bounce_anim ;9 Referee + +#***************************************************************************** + + SUBRP calc_ground_y + + + move *a13(INRING),a0 + jrz #inring + + + movi 117,a1 + move *a13(OBJ_ZPOSINT),a0 + cmpi 05bdh,a0 + jrgt #setit + + + movi 103,a1 + jruc #setit + + +#inring + movi 112,a1 + +#setit + move a1,*a13(OBJ_PRIORITY) + + movi vln_right_matedge,a6 + callr calc_line_x + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;a1-a0 + jrge #outside + + movi vln_left_matedge,a6 + callr calc_line_x + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;a1-a0 + jrle #outside + + movi MAT_Y,a0 + move a0,*a13(GROUND_Y) + + clr a0 + move a0,*a13(INRING) + rets + +#outside + clr a0 + move a0,*a13(GROUND_Y) + MOVE @GAMSTATE,A0 + CMPI INPREGAME,A0 + JREQ #skip + + movk 1,a0 + move a0,*a13(INRING) +#skip + rets + + +#***************************************************************************** + + SUBR execute_walk + +;MJT Start +;FIX!!! +;Is this wise? + clr a0 + move a0,*a13(ATTACK_TYPE) +;MJT End + + move *a13(MOVE_DIR),a0 + X32 a0 + PUSH A0 + addi #walk_table,a0 + move *a0,a0,L + call a0 + PULL A0 + JRZ NO_SOUND_CALL + MOVE @PCNT,A0 + ANDI 31,A0 + JRNZ NO_SOUND_CALL + CALLA WALK_SOUND +NO_SOUND_CALL + rets + +#walk_table + .long #zip ;0 + .long #up ;1 + .long #down ;2 + .long #zip ;3 + .long #left ;4 + .long #up_left ;5 + .long #down_left ;6 + .long #zip ;7 + .long #right ;8 + .long #up_right ;9 + .long #down_right ;10 + .long #zip ;11 + .long #zip ;12 + .long #zip ;13 + .long #zip ;14 + .long #zip ;15 + + +************ +#zip ;(#0) +#do_stance + + clr a0 + move a0,*a13(MOVE_DIR) + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_ZVEL),L + + callr set_rotate_anim ;or stance + calla change_anim1 + rets + +************ +#up ;(#1) + + movi MOVE_UP,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + calla change_walk_anim + + rets + + +************ +#up_right ;(#2) + + move *a13(OBJ_CONTROL),a0 + andni M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + +; move *a13(CAN_MOVE_DIR),a0 +; btst MOVE_RIGHT_BIT,a0 +; jrnz #up +; btst MOVE_UP_BIT,a0 +; jrnz #right + + movi MOVE_UP_RIGHT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + calla change_walk_anim + rets + + +************ +#right ;(#3) + + move *a13(OBJ_CONTROL),a0 + andni M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + + movi MOVE_RIGHT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + calla change_walk_anim + rets + + +************ +#down_right ;(#4) + + move *a13(OBJ_CONTROL),a0 + andni M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + + move *a13(CAN_MOVE_DIR),a0 + btst MOVE_DOWN_BIT,a0 + jrnz #right + + movi MOVE_DOWN_RIGHT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + calla change_walk_anim + rets + + +************ +#down ;(#5) + + movi MOVE_DOWN,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + calla change_walk_anim + rets + + +************ +#down_left ;(#6) + + move *a13(OBJ_CONTROL),a0 + ori M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + + move *a13(CAN_MOVE_DIR),a0 + btst MOVE_DOWN_BIT,a0 + jrnz #left + + movi MOVE_DOWN_LEFT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + calla change_walk_anim + rets + + +************ +#left ;(#7) + + move *a13(OBJ_CONTROL),a0 + ori M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + + movi MOVE_LEFT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + calla change_walk_anim + rets + + +************ +#up_left ;(#8) + + move *a13(OBJ_CONTROL),a0 + ori M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + +; move *a13(CAN_MOVE_DIR),a0 +; btst MOVE_LEFT_BIT,a0 +; jrnz #up +; btst MOVE_UP_BIT,a0 +; jrnz #left + + movi MOVE_UP_LEFT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + calla change_walk_anim + rets + +#***************************************************************************** +* +* sets X & Z velocites based on MOVE_DIR +* + +;MULT equ 256*75/100 ;25% reduction when moving backward + + +;MULT equ 256*100/100 ;0% reduction when moving backward +MULT equ 256*90/100 ;10% reduction when moving backward +GRND_MULT equ 256*150/100 ;50% addition when opponent is on ground + + + SUBRP set_velocities + + + move *a13(MOVE_DIR),a0 + callr convert_facing + X64 a0 + + move *a13(WRESTLERNUM),a2 + X32 a2 + addi #wres_velocity_tables,a2 + + move *a2,a2,L ;* velocity table + add a0,a2 + move *a2+,a1,L + +;MJT Start + move *a13(WALK_FAST),a0 + jrnz #ongrnd +;MJT End + + callr get_opp_process + move *a0(PLYRMODE),a0 ;don't slow down if backing + cmpi MODE_ONGROUND,a0 ;away from a downed opponent + jreq #ongrnd + + cmpi MODE_DEAD,a0 ;away from a dead opponent + jreq #ongrnd + + move *a13(MOVE_DIR),a3 + move *a13(FACING_DIR),a4 + + move a3,a14 + or a4,a14 + andi MOVE_LEFT|MOVE_RIGHT,a14 + cmpi MOVE_LEFT|MOVE_RIGHT,a14 ;move opposite to facing? + jrne #not_back_x + + movi MULT,a0 + mpys a0,a1 + sra 8,a1 + jruc #not_back_x +#ongrnd + movi GRND_MULT,a0 + mpys a0,a1 + sra 8,a1 + +#not_back_x + move a1,*a13(OBJ_XVEL),L + + + move *a2,a1,L + move a3,a14 ;move_dir + or a4,a14 ;facing dir + andi MOVE_UP|MOVE_DOWN,a14 + cmpi MOVE_UP|MOVE_DOWN,a14 ;move opposite to facing? + jrne #not_back_y + + movi MULT,a0 + mpys a0,a1 + sra 8,a1 + +#not_back_y + move a1,*a13(OBJ_ZVEL),L + + rets + + + .ref bam_velocity_table + .ref dnk_velocity_table + .ref hrt_velocity_table + .ref lex_velocity_table + .ref rzr_velocity_table + .ref shn_velocity_table + .ref und_velocity_table + .ref yok_velocity_table + +#wres_velocity_tables + .long hrt_velocity_table ;0 Bret Hart + .long rzr_velocity_table ;1 Razor Ramon + .long und_velocity_table ;2 Undertaker + .long yok_velocity_table ;3 Yokozuna + .long shn_velocity_table ;4 Shawn Michaels + .long bam_velocity_table ;5 Bam Bam + .long dnk_velocity_table ;6 Doink + .long dnk_velocity_table ;7 spare + .long lex_velocity_table ;8 Lex Luger + .long 0 ;9 referee + + +#***************************************************************************** +* (called by animation system) +* + + SUBR start_run_flung + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_OFFSET,20,0,0 + WL ANI_CODE,#ok2 + .word ANI_GETUP,200 ;Flung time + .word ANI_END + + SUBR start_run_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + WL ANI_CODE,#setup_run + .word ANI_END + +#setup_run + move a13,a0 + calla wres_get_stick_val_cur + andi MOVE_LEFT+MOVE_RIGHT,a0 + jrnz #use_joy1 + + move *a13(FACING_DIR),a0 ;use facing + andi MOVE_LEFT+MOVE_RIGHT,a0 +#use_joy1 + move *a13(FACING_DIR),a1 + andi MOVE_LEFT+MOVE_RIGHT,a1 + cmp a0,a1 + jrz #ok1 + +;He wants to run in the opposite direction than he is facing +;Rotate him around first. + + move *a13(FACING_DIR),a1 + andi MOVE_UP+MOVE_DOWN,a1 + or a1,a0 + move a0,*a13(NEW_FACING_DIR) + + callr set_rotate_anim + move a13,a2 ;a2 = * process + calla change_anim_anim + +#ok1 + movi #dorun,a0 ;this routine gets executed + jruc #contx +#ok2 +;Whenever you fling someone, a meter can & will appear + clr a0 + move a0,*a13(DELAY_METER) + movi #dorun_flung,a0 ;this routine gets executed +#contx + move a0,*a13(CODE_ADDR),L ;when the rotate anim + SETMODE WAITANIM ;finishes + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + clr a0 + move a0,*a13(OBJ_ZVEL),L + + rets + + +****************************************************************************** +* (called by code) +* set move direction based on joystick or facing direction +* and go into run sequence & mode + + SUBR start_run + + move a13,a0 + calla wres_get_stick_val_cur + andi MOVE_LEFT+MOVE_RIGHT,a0 + jrnz #use_joy + + move *a13(FACING_DIR),a0 ;use facing + andi MOVE_LEFT+MOVE_RIGHT,a0 +#use_joy + move *a13(FACING_DIR),a1 + andi MOVE_LEFT+MOVE_RIGHT,a1 + cmp a0,a1 + jrz #ok + +;He wants to run in the opposite direction than he is facing +;Rotate him around first. + + move *a13(FACING_DIR),a1 + andi MOVE_UP+MOVE_DOWN,a1 + or a1,a0 + move a0,*a13(NEW_FACING_DIR) + + callr set_rotate_anim + calla change_anim1 + + movi #dorun,a0 ;this routine gets executed + move a0,*a13(CODE_ADDR),L ;when the rotate anim + SETMODE WAITANIM ;finishes + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + clr a0 + move a0,*a13(OBJ_ZVEL),L + + rets + +#dorun + clr a0 + move a0,*a13(GETUP_TIME) ;in control + +#dorun_flung + clr a0 + move a0,*a13(USR_VAR1) ;with x-xel + move a0,*a13(RUN_TIME) + + +;Bogosity.. + move *a13(FACING_DIR),a0 ;use facing +; move *a13(NEW_FACING_DIR),a0 ;use facing + andi MOVE_LEFT+MOVE_RIGHT,a0 +#ok + +; movk 8,a1 +; cmpi 4,a0 +; jrz #ok0 +; movk 4,a1 +;#ok0 +; move a1,*a13(MOVE_DIR) + + 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 + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #run_anims,a0 + move *a0,a0,L ;run anim + calla change_anim1a + + SETMODE RUNNING + + + rets + + .ref bam_run_anim + .ref dnk_run_anim + .ref hrt_run_anim + .ref lex_run_anim + .ref rzr_run_anim + .ref shn_run_anim + .ref und_run_anim + .ref yok_run_anim + +#run_anims + .long hrt_run_anim ;0 Bret Hart + .long rzr_run_anim ;1 Razor Ramon + .long und_run_anim ;2 Undertaker + .long yok_run_anim ;3 Yokozuna + .long shn_run_anim ;4 Shawn Michaels + .long bam_run_anim ;5 Bam Bam + .long dnk_run_anim ;6 Doink + .long dnk_run_anim ;7 spare + .long lex_run_anim ;8 Lex Luger + .long dnk_run_anim ;9 Referee + +;MJT Start +; +;#***************************************************************************** +;* +;* a10 = * wrestler process +; +;#MAX_BURNOUT equ 180h +; +; SUBR inc_burnout +; +; rets +; +; .if 0 +; move *a10(ATTACK_MODE),a0 ;type of attack +; X32 a0 +; addi #attack_table,a0 +; move *a0,a0,L +; move *a10(WRESTLERNUM),a1 +; X16 a1 +; add a1,a0 +; move *a0,a0 ;burnout value +; +; move *a10(BURNOUT_COUNT),a1 ;put this in a table +; add a0,a1 +; cmpi #MAX_BURNOUT,a1 +; jrlt #ok +; movi #MAX_BURNOUT,a1 +;#ok +; move a1,*a10(BURNOUT_COUNT) +; +; rets +; +; +; +;#attack_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 _13 ;13 +; .long _14 ;14 +; .long _15 ;15 +; .long _16 ;16 +; +; +;_punch ;0 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 40 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_hdbutt ;1 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 40 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_kick ;2 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_flykick ;3 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_grabthrow ;4 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_uprcut ;5 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_lbowdrop ;6 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_grabhold ;7 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_grabfling ;8 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_push ;9 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_hiptoss ;10 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_bigboot ;11 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_knee ;12 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +;_13 ;13 +;_14 ;14 +;_15 ;15 +;_16 ;16 +; .word 0 ;0 Bret Hart +; .word 0 ;1 Razor Ramon +; .word 0 ;2 Undertaker +; .word 0 ;3 Yokozuna +; .word 0 ;4 Shawn Michaels +; .word 0 ;5 Bam Bam +; .word 0 ;6 Doink +; .word 0 ;7 spare +; .word 0 ;8 Lex Luger +; .word 0 ;9 Referee +; +; .endif + +;MJT End + +#***************************************************************************** +* +* RETURNS: a0 = boundary +* + SUBRP check_move_up + + move *a13(INRING),a0 + jrnz #outring + + movi RING_TOP,a0 + move *a13(OBJ_ZPOSINT),a1 + cmp a0,a1 + jrle #fail + clrc + rets + +#outring + movi ARENA_TOP,a0 + move *a13(OBJ_ZPOSINT),a1 + cmp a0,a1 + jrle #fail + + movi box_matedge2,a10 + callr get_box_overlap + move a1,a1 ;z overlap + jrp #fail2 + + clrc + rets + +#fail2 + move *a13(OBJ_ZPOSINT),a0 + dec a1 + add a1,a0 + +#fail + setc + rets + +#***************************************************************************** +* +* RETURNS: a0 = boundary +* + SUBRP check_move_down + + move *a13(INRING),a0 + jrnz #outring + + movi RING_BOT,a0 + move *a13(OBJ_ZPOSINT),a1 + cmp a0,a1 + jrge #fail + clrc + rets + +#outring + movi ARENA_BOT,a0 + move *a13(OBJ_ZPOSINT),a1 + cmp a0,a1 + jrge #fail + + movi box_matedge2,a10 + callr get_box_overlap + move a1,a1 ;z overlap + jrn #fail2 + + clrc + rets + +#fail2 + move *a13(OBJ_ZPOSINT),a0 + inc a1 + add a1,a0 +#fail + setc + rets + +#***************************************************************************** +* +* RETURNS: a0 = boundary +* + SUBRP check_move_left + + move *a13(INRING),a0 + jrnz #outring + + move *a13(OBJ_XPOSINT),a5 + movi vln_left_rope,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x1 + jrge #ok + callr calc_line_x + cmp a0,a5 ;xpos - a0 + jrle #fail +#ok + clrc + rets + +#outring + move *a13(OBJ_XPOSINT),a5 + movi vln_left_fence,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x1 + jrge #ok2 + callr calc_line_x + jrz #outrange + cmp a0,a5 ;xpos - a0 + jrle #fail +#outrange +#ok2 + movi box_matedge2,a10 + callr get_box_overlap + move a0,a0 ;x overlap + jrp #fail2 + + clrc + rets + +#fail2 + move *a13(OBJ_XPOSINT),a1 + dec a0 + add a1,a0 +#fail + setc + rets + +#***************************************************************************** +* +* RETURNS: a0 = boundary +* + SUBRP check_move_right + + move *a13(INRING),a0 + jrnz #outring + + move *a13(OBJ_XPOSINT),a5 + movi vln_right_rope,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x1 + jrle #ok + callr calc_line_x + cmp a0,a5 ;xpos - a0 + jrge #fail +#ok + clrc + rets + +#outring + move *a13(OBJ_XPOSINT),a5 + movi vln_right_fence,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x1 + jrle #ok2 + callr calc_line_x + jrz #outrange + cmp a0,a5 ;xpos - a0 + jrge #fail +#ok2 +#outrange + movi box_matedge2,a10 + callr get_box_overlap + move a0,a0 ;x overlap + jrn #fail2 + + clrc + rets + +#fail2 + move *a13(OBJ_XPOSINT),a1 + inc a0 + add a1,a0 +#fail + setc + rets + +#***************************************************************************** +* +* ARGS: a10 = * box +* +* RETURNS: a0 = signed x offset (left overlap < 0 < right overlap) +* a1 = signed z offset (top overlap < 0 < bot overlap) + + SUBR get_box_overlap + + + move *a10(20h),a6,L + callr calc_line_x + move a0,a0 + jrz #outrange + PUSH a0 + + move *a10,a6,L + callr calc_line_x + move a0,a0 ;left + jrz #outrange + PULL a1 ;right + + move *a13(OBJ_XPOSINT),a4 + sub a4,a0 ;left-xpos + jrgt #outside + neg a0 + + sub a4,a1 ;right-xpos + jrlt #outside + + move *a13(OBJ_ZPOSINT),a2 + move a2,a3 + move *a6(10h),a4 ;z top + sub a4,a2 ;zpos-top + jrlt #outside + + move *a6(30h),a4 ;z bot + sub a4,a3 ;zpos-bot + jrgt #outside + neg a3 + + + + cmp a0,a1 ;right - left + jrlt #right_min + +;left_min + cmp a2,a0 ;left - top + jrgt #top_min + cmp a3,a0 ;left - bot + jrgt #bot_min + + neg a0 ;xoff + clr a1 ;zoff + rets + +#right_min + cmp a2,a1 ;right - top + jrgt #top_min + cmp a3,a1 ;right - bot + jrgt #bot_min + + move a1,a0 ;xoff + clr a1 ;zoff + rets + +#top_min + cmp a3,a2 ;top - bot + jrgt #bot_min + + neg a2 + move a2,a1 ;zoff + clr a0 ;xoff + rets + +#bot_min + cmp a2,a3 ;bot - top + jrgt #top_min + + move a3,a1 ;zoff + clr a0 ;xoff + rets + +#outside +#outrange + clr a0 + clr a1 + + rets + +#***************************************************************************** + + SUBR get_rope_x + + PUSH a6 + + movi vln_right_rope,a6 + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_CENTER,a0 + jrgt #right + movi vln_left_rope,a6 +#right + callr calc_line_x + PULL a6 + rets + + +#***************************************************************************** +* +* ARGUMENTS: a6 = * line table +* +* RETURNS: a0 = x-val of line at player ZPOS +* a0 = 0 if out of range in Z +* +* TRASHES: a0,a1 + + + SUBR calc_line_x + + move *a13(OBJ_ZPOSINT),a1 + + move *a6(30h),a0 ;z2 + cmp a0,a1 ;zpos - z2 + jrgt #outrange ;below + + move *a6(10h),a0 ;z1 + sub a0,a1 ;zpos - z1 + jrlt #outrange ;above + + X16 a1 + add a6,a1 + move *a1(40h),a0 ;skip 4 word header + rets +#outrange + clr a0 + rets + +#***************************************************************************** +* +* ARGUMENTS: a6 = * line table +* a1 = ZPOSINT +* +* RETURNS: a0 = x-val of line at input ZPOS +* a0 = 0 if out of range in Z +* +* TRASHES: a0,a1 + + + SUBR calc_line_pt + + move *a6(30h),a0 ;z2 + cmp a0,a1 ;zpos - z2 + jrgt #outrange ;below + + move *a6(10h),a0 ;z1 + sub a0,a1 ;zpos - z1 + jrlt #outrange ;above + + X16 a1 + add a6,a1 + move *a1(40h),a0 ;skip 4 word header + rets +#outrange + clr a0 + rets + +#***************************************************************************** + + SUBR wobble_ropes + +;Called from wrestler "GETTING HIT" sequences. +;Check to see if I'm up against the ropes. +;If so, wobble them. + + move *a13(INRING),a0 + jrnz #exit + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_CENTER,a0 + jrlt #lft + + movi vln_right_rope,a6 + callr calc_line_x + movi ROPE_RIGHT,a2 + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;a1-a0 + jrge #wobble + jruc #exit + +#lft + movi vln_left_rope,a6 + callr calc_line_x + movi ROPE_LEFT,a2 + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;a1-a0 + jrle #wobble + jruc #exit + +#wobble + +;Wrestler has been knocked back into ropes +;Wobble them! + move a2,a0 + movk 1,a2 + movi ROPE_BOUNCEIO,a1 + calla rope_command + +#exit rets + +#***************************************************************************** +* +* If player is moving away from opponent, or standing still, tell the +* calling SEQUENCE to not leap at the opponent! +* +* This routine is used by all wrestlers. + + SUBR get_leap + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + move *a13(OBJ_XVEL),a14,L + move *a13(OBJ_ZVEL),a0,L + or a14,a0 + jrz #novel ;Wrestler is standing still! + + +;Is wrestler backing away from opponent? + + move *a13(MOVE_DIR),a1 + move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi #mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrnz #novel + +;Will lunge toward opponent + rets + +#novel + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + rets + +***************************************************************************** +* +* If player is moving away from opponent, or standing still, tell the +* calling routine to ignore button press +* + + SUBR ck_ignore + +;Is wrestler going away from opponent? + + move *a13(MOVE_DIR),a1 + move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi #mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrnz #novel2 + +;Will allow button press + clrc + rets + +#novel2 setc + rets + +#mv_tbl .long 0,0,0,0,0,MOVE_RIGHT_BIT,MOVE_RIGHT_BIT + .long 0,0,MOVE_LEFT_BIT,MOVE_LEFT_BIT + + +#***************************************************************************** +* +* When we want all ropes to wobble (Butt drops, etc.) +* This routine is used by all wrestlers. + + SUBR shake_all_ropes + + move @NUM_OPPS,A1 + CMPI 2,A1 + JRGE NO_SHAKING + + movi ROPE_BOUNCEUD,a1 + movk 2,a2 + + movi ROPE_FRONT,a0 + calla rope_command + + movi ROPE_BACK,a0 + calla rope_command + + movi ROPE_LEFT,a0 + calla rope_command + + movi ROPE_RIGHT,a0 + calla rope_command + +NO_SHAKING + rets + +#***************************************************************************** +* +* CALLED FROM WITHIN COLLISION ROUTINES +* +* makes wrestlers face each other & sets x_flip accordingly +* +* a13 = victim process +* a10 = attacker process + + SUBR face_each_other + + movi MOVE_RIGHT,a0 + move *a13(OBJ_XPOS),a2,L + move *a10(OBJ_XPOS),a3,L + cmp a2,a3 ;a3-a2 + jrgt #right + movi MOVE_LEFT,a0 +#right + movi MOVE_DOWN,a1 + move *a13(OBJ_ZPOS),a2,L + move *a10(OBJ_ZPOS),a3,L + cmp a2,a3 ;a3-a2 + jrgt #down + movi MOVE_UP,a1 +#down + or a1,a0 + move a0,*a13(NEW_FACING_DIR) + move a0,*a13(FACING_DIR) + + xori MOVE_UP|MOVE_DOWN|MOVE_LEFT|MOVE_RIGHT,a0 ;opposite + + move a0,*a10(NEW_FACING_DIR) + move a0,*a10(FACING_DIR) + + move a10,a0 + callr set_wrestler_xflip + + move a13,a0 + callr set_wrestler_xflip + + rets + + +#***************************************************************************** +* Temp routines + + .if DEBUG + + BSSX CPUAVG ,16 + BSSX CPULEFT ,16 + + + SUBRP cputime_calcfree + + move @dirqtimer,a0 + subk 1,a0 + jrle nobog + clr a0 + jruc gottime +nobog + move @vcount,a0 + subi EOSINT,a0 + jrnn skinccnt + addi 256,a0 +skinccnt + sll 2,a0 + neg a0 + addi 1024,a0 +gottime + move a0,@CPULEFT + + srl 4,a0 + move @CPUAVG,a1 + move a1,a2 + srl 4,a2 ;/16 + sub a2,a1 + add a0,a1 + move a1,@CPUAVG + + rets + + + .endif + + .if COL_DEBUG + +#***************************************************************************** +* highlights attack box +* a10 is ptr to wrestler process + + SUBRP collis_debug + + + clr a0 ;x pos + clr a1 ;y pos + movi jmeter,a2 ;* image + movi >1601,a3 ;z pos + movi DMACAL|M_3D,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + clr a0 + move a0,*a8(ODXOFF) + move a0,*a8(ODYOFF) + + movi 0202h,a0 + move a0,*a8(OCONST) + +#loop + SLEEPK 1 + + movi 7f00h,a0 + move @debug_collis,a14 + cmpi 2,a14 + jrne #not_2 + movi 1400h,a0 +#not_2 + move a0,*a8(OZPOS) + + move @debug_collis,a0 + jrz #off + + move *a10(ANIMODE),a0 + btst MODE_CHECKHIT_BIT,a0 + jrnz #on + +#off + clr a0 + move a0,*a8(OXVAL),L + move a0,*a8(OYVAL),L + + move @slowmo,a0 + move a0,@slowmotion + + movi 16,a0 + move a0,*a8(OSIZEX) + move a0,*a8(OSIZEY) + + jruc #loop + + +#on + movi 30,a0 + clr a0 + + move @slowmo,a1 + jrz #skp + move a1,a0 +#skp + move a0,@slowmotion + + movi Y_SCALE_MULTIPLIER,a0 + move *a10(OBJ_ZPOSINT),a1 + mpys a0,a1 + move a1,a4 ;y val + srl 16,a4 + move *a10(OBJ_YPOSINT),a0 + sub a0,a4 + + move *a10(OBJ_ATTYOFF),a0 + sub a0,a4 + move *a10(OBJ_ATTHEIGHT),a0 + sub a0,a4 + sll 16,a4 + move a4,*a8(OYVAL),L + + move *a10(OBJ_ATTWIDTH),a0 + move a0,*a8(OSIZEX) + move *a10(OBJ_ATTHEIGHT),a0 + move a0,*a8(OSIZEY) + + move *a10(OBJ_ATTXOFF),a0 + move *a10(OBJ_XPOSINT),a4 + + ;check the same way the actual collision code does. + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #facing_right + +; move *a10(FACING_DIR),a14 +; btst PLAYER_RIGHT_BIT,a14 +; jrnz #facing_right + + neg a0 + move *a10(OBJ_ATTWIDTH),a14 + sub a14,a0 + +#facing_right + + add a0,a4 + sll 16,a4 + move a4,*a8(OXVAL),L + + + + jruc #loop + +;;; move a0,@debug_collis + + + +#***************************************************************************** +* highlights target box +* a10 is ptr to wrestler process + + SUBRP collis_debug2 + + clr a0 ;x pos + clr a1 ;y pos + movi jmeter,a2 ;* image + movi 7f00h,a0 ;199 + movi DMACAL|M_3D,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + clr a0 + move a0,*a8(ODXOFF) + move a0,*a8(ODYOFF) + + movi 0101h,a0 + move a0,*a8(OCONST) + +#loop + SLEEPK 1 + + movi >1600,a0 + move @debug_collis,a14 + cmpi 2,a14 + jrne #not_2 + movi 111,a0 +#not_2 + move a0,*a8(OZPOS) + + move @debug_collis,a0 + jrnz #on + + clr a0 + move a0,*a8(OXVAL),L + move a0,*a8(OYVAL),L + + movi 16,a0 + move a0,*a8(OSIZEX) + move a0,*a8(OSIZEY) + + jruc #loop + +#on + move *a10(OBJ_COLLX1),a0 + move a0,a1 + sll 16,a0 + move a0,*a8(OXVAL),L + + move *a10(OBJ_COLLX2),a2 + sub a1,a2 + move a2,*a8(OSIZEX) + + movi Y_SCALE_MULTIPLIER,a0 + move *a10(OBJ_ZPOSINT),a1 + mpys a0,a1 + srl 16,a1 + move *a10(OBJ_COLLY2),a0 + sub a0,a1 + sll 16,a1 + move a1,*a8(OYVAL),L + + move *a10(OBJ_COLLY2),a0 + move *a10(OBJ_COLLY1),a1 + sub a1,a0 + move a0,*a8(OSIZEY) + + jruc #loop + + .endif + +#***************************************************************************** + .if SCRT_DEBUG + + .bss imgptrs0, 32*16 + + SUBRP scrt_debug + + movk 16,a1 + movi imgptrs0,a2 + movi [10,0],a0 ;x pos +#init_loop + + PUSH a0,a1,a2 + + movi [238,0],a1 ;y pos + movi d_zip,a2 ;* image + movi 10000,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + PULL a0,a1,a2 + move a8,*a2+,L + addi [16,0],a0 + dsj a1,#init_loop + +#loop + + + movi wrest_joystat,a1 + movi imgptrs0,a2 + movk 16,a3 + +#loop2 + move *a2+,a8,L + move *a1+,a5,L + move a5,a0 + + srl 4,a0 + andi 011111b,a0 + jrz #cont + X32 a0 + addi #button_imgs,a0 + move *a0,a0,L + jruc #cont2 + +#cont + move a5,a0 + andi 01111b,a0 + X32 a0 + addi #arrow_imgs,a0 + move *a0,a0,L + +#cont2 + + PUSH a1,a2,a3 + + callr #change_image + + PULL a1,a2,a3 + dsj a3,#loop2 + + SLEEPK 1 + + jruc #loop + + +#change_image + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFX),a1 + move a1,*a8(ODXOFF) ;display x offset + + move *a0(IANIOFFY),a1 + move a1,*a8(ODYOFF) ;display y offset + + setf 5,0,0 + move *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 16,1,0 + rets + +#arrow_imgs + .long d_zip ;0 + .long d_up ;1 + .long d_down ;2 + .long d_zip ;3 + .long d_left ;4 + .long d_upleft ;5 + .long d_downleft ;6 + .long d_zip ;7 + .long d_right ;8 + .long d_upright ;9 + .long d_downright ;10 + .long d_zip ;11 + .long d_zip ;12 + .long d_zip ;13 + .long d_zip ;14 + .long d_zip ;15 + + +#button_imgs + .long d_zip ;0 + .long d_block ;1 + .long d_grab ;2 + .long d_zip ;3 + .long d_punch ;4 + .long d_zip ;5 + .long d_zip ;6 + .long d_zip ;7 + .long d_kick ;8 + .long d_zip ;9 + .long d_zip ;10 + .long d_zip ;11 + .long d_zip ;12 + .long d_zip ;13 + .long d_zip ;14 + .long d_zip ;15 + .long d_turbo ;16 + + .endif + +#***************************************************************************** + .if DIR_DEBUG + + .bss imgptrs, 32*3 + .bss imgptrs2, 32*3 + + SUBRP dir_debug + + movi [10,0],a0 ;x pos + movi [25,0],a1 ;y pos + movi d_zip,a2 ;* image + movi 10000,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + move a8,@imgptrs,L + + movi [10,0],a0 ;x pos + movi [25+15,0],a1 ;y pos + calla BEGINOBJ + move a8,@imgptrs+32,L + + movi [10,0],a0 ;x pos + movi [25+30,0],a1 ;y pos + calla BEGINOBJ + move a8,@imgptrs+64,L + + + movi [400-24,0],a0 ;x pos + movi [25,0],a1 ;y pos + calla BEGINOBJ + move a8,@imgptrs2,L + + movi [400-24,0],a0 ;x pos + movi [25+15,0],a1 ;y pos + calla BEGINOBJ + move a8,@imgptrs2+32,L + + movi [400-24,0],a0 ;x pos + movi [25+30,0],a1 ;y pos + calla BEGINOBJ + move a8,@imgptrs2+64,L + + + +#loop + clr a1 + callr get_process_ptr + + move a0,a10 + JRZ NO_ONE_HERE1 + + move *a10(MOVE_DIR),a0 + move @imgptrs,a8,L + callr #ud_arrow + + move *a10(NEW_FACING_DIR),a0 + move @imgptrs+32,a8,L + callr #ud_arrow + + move *a10(FACING_DIR),a0 + move @imgptrs+64,a8,L + callr #ud_arrow + +NO_ONE_HERE1 + movk 1,a1 + callr get_process_ptr + move a0,a10 + JRZ NO_ONE_HERE2 + + move *a10(MOVE_DIR),a0 + move @imgptrs2,a8,L + callr #ud_arrow + + move *a10(NEW_FACING_DIR),a0 + move @imgptrs2+32,a8,L + callr #ud_arrow + + move *a10(FACING_DIR),a0 + move @imgptrs2+64,a8,L + callr #ud_arrow + +NO_ONE_HERE2 + SLEEPK 1 + jruc #loop + + +#ud_arrow + move a0,a0 + jrnz #ok + movi d_zip,a0 + jruc #cont +#ok + callr convert_facing + X32 a0 + addi #arrow_imgs,a0 + move *a0,a0,L + +#cont + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFX),a1 + move a1,*a8(ODXOFF) ;display x offset + + move *a0(IANIOFFY),a1 + move a1,*a8(ODYOFF) ;display y offset + + setf 5,0,0 + move *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 16,1,0 + rets + + +#arrow_imgs + .long d_up + .long d_upright + .long d_right + .long d_downright + .long d_down + .long d_downleft + .long d_left + .long d_upleft + + .long d_punch + .long d_kick + .long d_block + .long d_grab + .long d_turbo + .long d_zip + + .endif + +#***************************************************************************** + + SUBRP draw_dma_meter + + movi DIAGP,a0 + calla pal_getf + move a0,a1 + ori >0E0E0000,a1 + movi [1,400],a2 + move @dma_bog,a3 + sll 16,a3 + clr a4 + movi DMACAL,a5 + calla QDMAN + rets + +#***************************************************************************** + + SUBRP draw_cpu_meter + + movi DIAGP,a0 + calla pal_getf + move a0,a1 + ori >0D0D0000,a1 + movi [1,400],a2 + move @CPUAVG,a3 + sll 14,a3 + clr a4 + movi DMACAL,a5 + calla QDMAN + rets + +#***************************************************************************** +* +* This gets called once each MATCH for every wrestler, not each round. +* It creates the set of 'watchdog' processes that look out for special +* moves that the usual method can't handle; specifically, stuff that +* involves charging up with a stick, detailed control over timing, or +* proximity to the bad guy. +* + + .ref bam_smove_table + .ref shn_smove_table + .ref rzr_smove_table + .ref dnk_smove_table + .ref hrt_smove_table + .ref und_smove_table + + SUBRP init_smoves + + move *a13(WRESTLERNUM),a2,W + X32 a2 + addi #special_moves,a2 + move *a2,a2,L + jrz #done + +#loop + move *a2+,a7,L + jrz #done + movi SMOVE_PID,a1 + move a13,a8 + calla GETPRC_INSERT + jruc #loop + +#done + rets + + +#special_moves + .long hrt_smove_table ;Bret + .long rzr_smove_table ;Razor + .long und_smove_table ;Taker + .long 0 ;Yoko + .long shn_smove_table ;Shawn + .long bam_smove_table ;Bam Bam + .long dnk_smove_table ;Doink + .long 0 ;spare + .long 0 ;Lex + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/WRESTLE.CMD b/BACKUP/WRESTLE.CMD new file mode 100644 index 0000000..816720a --- /dev/null +++ b/BACKUP/WRESTLE.CMD @@ -0,0 +1,152 @@ +/* Game linker command file */ +-e WARMSET /* entry point of program */ +-f 0xFFFF /* fill unspecified memory with value */ +-o d:\wrestle.out /* specify output file */ +-m d:\wrestle.map /* map file */ +-s /* Kill the symbol table */ +display.obj /*IMAGE HANDLER*/ +main.obj /*INITIALIZATION AND INTERRUPTS*/ +util.obj /*UTILITIES*/ +pal.obj /*PALETTE ROUTINES*/ +mproc.obj /*MULTI-TASKER*/ +bakgnd.obj /*BACKGROUND GENERATOR*/ +bgndtbl.obj /*BACKGROUND TABLES*/ +bgndpal.obj /*BACKGROUND PALETTES*/ + +imgpal.obj +roboimg.obj +fontsimg.obj +ropeimg.obj +miscimg.obj + +bamimg.obj +bretimg.obj +doinkimg.obj +leximg.obj +razorimg.obj +shawnimg.obj +takerimg.obj +yokoimg.obj + +wrestle.obj /*FIRST GAME MODULE*/ +wrestle2.obj +anim.obj +special.obj +getup.obj +/* ;SL */ +drone.obj +dcssound.obj +patch.obj +text.obj +attract.obj +unzip.obj +string.obj +square.obj +adjust.obj +audit.obj +test.obj +diag.obj +menu.obj +hstd.obj +select.obj +robo.obj +tables.obj +ring.obj +ropes.obj +lifebar.obj +coll2.obj +screen.obj +progress.obj + +react1.obj +react2.obj +react3.obj +react4.obj +react5.obj +react6.obj +react7.obj +react8.obj +react9.obj + +bam.obj +bret.obj +doink.obj +razor.obj +lex.obj +shawn.obj +taker.obj +yoko.obj + + +bamseq1.obj +bamseq2.obj +bamseq3.obj +bamseq4.obj + +dnkseq1.obj +dnkseq2.obj +dnkseq3.obj +dnkseq4.obj + +hrtseq1.obj +hrtseq2.obj +hrtseq3.obj +hrtseq4.obj + +lexseq1.obj +lexseq2.obj +lexseq3.obj +lexseq4.obj + +rzrseq1.obj +rzrseq2.obj +rzrseq3.obj +rzrseq4.obj + +shnseq1.obj +shnseq2.obj +shnseq3.obj +shnseq4.obj + +undseq1.obj +undseq2.obj +undseq3.obj +undseq4.obj + +yokseq1.obj +yokseq2.obj +yokseq3.obj +yokseq4.obj + +collis.obj +crowd.obj + + +MEMORY /* set up memory for sdb board */ +{ + SCRATCH : org = 0x01000000, len = 0x3F7300 + SCRATCH2 : org = 0x013F7300, len = 0x8D00 + ROM : org = 0xFF800000, len = 0x7FFC00 + TRAP31 : org = 0xFFFFFC00, len = 0x400 + IROM : org = 0x02000000, len = 0x400000 +} + +SECTIONS /* linker sections directive */ + { + VECTORS: {} > TRAP31 + GROUP: + { + unzip: {} + FIXED: {} + OFIXED: {} + .bss: {} + } > SCRATCH + + .text: {} > ROM + .data: {} > ROM + + } + + +/* END */ + \ No newline at end of file diff --git a/BACKUP/WRESTLE.TVS b/BACKUP/WRESTLE.TVS new file mode 100644 index 0000000..d2ece47 --- /dev/null +++ b/BACKUP/WRESTLE.TVS @@ -0,0 +1,56 @@ +.struct display.equ +.struct mproc.equ +.struct game.equ +.struct sys.equ + +.km !f1 \ @J"HOME"@K*ACTIVE\ PROC\ PLINK"CR" +.km !f2 \ @J"HOME"@K*OBJLST\ OBJ\ OLINK"CR" +.km !f3 \ @J"HOME"@KPALRAM\ PAL\ *"CR" +.km !f4 \ @J"HOME"@K*BAKLST\ OBJ\ OLINK"CR" + +;OLD BELOW +;.km !f1 @D*ACTIVE\ PROC\ PLINK"CR" +;.km !f2 @D*OBJLST\ OBJ\ OLINK"CR" +;.km !f2 \ @J"HOME"@K*OBJLST\ OBJ\ OLINK"CR" +;.km !f3 @DPALRAM\ PAL\ *"CR" + +;CORRECT TODD STUFF BELOW +;.km !f1 \ @J"HOME"@K*ANIOBJS\ ANIM\ AnimNxt"CR" +;.km !f2 \ @J"HOME"@K*OFREE\ OBJ\ OLINK"CR" +;.km !f6 \ @J"HOME"@K*ACTIVE\ PRC\ PLINK"CR" +;.km s @D"CR"S +;.km w @D"CR"W + +;**** display SOURCE when cursor on longword in struct or mem display **** +.km S @M"CR"S"CR" +;**** display WORDS when cursor on longword in struct or mem display **** +.km W @M"CR"W"CR" +; +.wp slowmo,UDW +.wp debug_collis,UDW +.wp DIAG0,SDL +.wp DIAG1,SDL +.wp SCRNLR,UHL +.wp SCRNTL,UHL +.wp CPULEFT,UDW +.wp CPUAVG,UDW +.wp PSTATUS,UHW +.wp WORLDTLX,UHL +.wp WORLDTLY,UHL +.wp PCNT,UHW +.wp switches_cur,UHL +.wp punch_dtime1,UDW +.wp grab_dtime1,UDW +.wp kick_dtime1,UDW +.wp block_dtime1,UDW +.wp turbo_dtime1,UDW +.wp punch_dtime2,UDW +.wp grab_dtime2,UDW +.wp kick_dtime2,UDW +.wp block_dtime2,UDW +.wp turbo_dtime2,UDW +.wp fight_debug,UDW +.wp skip_select,UDW +.wp process_ptrs,UHL +.wp process_ptrs+32,UHL + \ No newline at end of file diff --git a/BACKUP/WRESTLE2.ASM b/BACKUP/WRESTLE2.ASM new file mode 100644 index 0000000..bcdac33 --- /dev/null +++ b/BACKUP/WRESTLE2.ASM @@ -0,0 +1,1476 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/20/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "wrestle2.asm" + .title "wrestling game program cont..." + .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 "audit.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "imgtbl.glo" + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + + +****************************************************************************** +* EXTERNAL REFERENCES + +;MJT Start + .ref triple_sound +;MJT End + .ref change_anim1a + .ref set_rotate_anim + .ref wres_get_stick_val_cur + .ref get_rope_x + .ref round_tickcount + .ref get_process_ptr + + .ref calc_line_x + .ref dnk_climbthru_side_anim,dnk_climbthru_bot_anim + .ref dnk_climbthru_top_anim,dnk_climbin_bot_anim + .ref dnk_climbin_top_anim,dnk_climbin_side_anim + .ref get_opp_process + + .ref dnk_climb_up_anim,shn_climb_up_anim,bam_climb_up_anim + .ref hrt_climb_up_anim,lex_climb_up_anim,und_climb_up_anim + .ref yok_climb_up_anim,rzr_climb_up_anim + + .ref bam_climbin_side_anim,bam_climbthru_side_anim + .ref bam_climbin_top_anim,bam_climbthru_top_anim + .ref bam_climbin_bot_anim,bam_climbthru_bot_anim + .ref und_climbin_side_anim,und_climbthru_side_anim + .ref und_climbin_top_anim,und_climbthru_top_anim + .ref und_climbin_bot_anim,und_climbthru_bot_anim + .ref rzr_climbin_side_anim,rzr_climbthru_side_anim + .ref rzr_climbin_top_anim,rzr_climbthru_top_anim + .ref rzr_climbin_bot_anim,rzr_climbthru_bot_anim + .ref hrt_climbin_side_anim,hrt_climbthru_side_anim + .ref hrt_climbin_top_anim,hrt_climbthru_top_anim + .ref hrt_climbin_bot_anim,hrt_climbthru_bot_anim + .ref yok_climbin_side_anim,yok_climbthru_side_anim + .ref yok_climbin_top_anim,yok_climbthru_top_anim + .ref yok_climbin_bot_anim,yok_climbthru_bot_anim + .ref lex_climbin_side_anim,lex_climbthru_side_anim + .ref lex_climbin_top_anim,lex_climbthru_top_anim + .ref lex_climbin_bot_anim,lex_climbthru_bot_anim + .ref shn_climbin_side_anim,shn_climbthru_side_anim + .ref shn_climbin_top_anim,shn_climbthru_top_anim + .ref shn_climbin_bot_anim,shn_climbthru_bot_anim + + .ref wres_get_but_val_cur,wres_get_but_val_down + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +#****************************************************************************** +* +* a13 = * wrestler process +* a0 = stick_val_cur + + SUBR climb_turnbuckle + + 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 + +;If anybody is already on turnbuckles, ignore this + .ref process_ptrs + movi process_ptrs,a4 + movi NUM_WRES,a5 +#already + move *a4+,a0,L + jrz #inactive + move *a0(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #no_climb +#inactive + dsj a5,#already + + + + move *a13(WRESTLERNUM),a0 + X16 a0 + addi #face_turnbuckle,a0 + move *a0,a0 ;flip facing? + jrz #no_flip + xori MOVE_UP|MOVE_DOWN|MOVE_LEFT|MOVE_RIGHT,a3 ;opposite +#no_flip + move a3,*a13(NEW_FACING_DIR) + move *a13(FACING_DIR),a0 + cmp a0,a3 + jreq #climb + calla set_rotate_anim + calla change_anim1a + + movi #climb,a0 ;this routine gets executed + move a0,*a13(CODE_ADDR),L ;when the rotate anim + SETMODE WAITANIM ;finishes + + setc + rets + +#climb + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #climb_anims,a0 + move *a0,a0,L + calla change_anim1a + + SETMODE CLIMBTURNBKL + + setc + rets + +#not_top +#no_climb + clrc + rets + +;0 = face turnbuckle before climb +;1 = back to turnbuckle +#face_turnbuckle + .word 1 ;0 Bret Hart + .word 1 ;1 Razor Ramon + .word 1 ;2 Undertaker + .word 0 ;3 Yokozuna + .word 0 ;4 Shawn Michaels + .word 1 ;5 Bam Bam + .word 0 ;6 Doink + .word 0 ;7 Adam Bomb + .word 1 ;8 Lex Luger + .word 0 ;9 Referee + + +#climb_anims + .long hrt_climb_up_anim ;0 Bret Hart + .long rzr_climb_up_anim ;1 Razor Ramon + .long und_climb_up_anim ;2 Undertaker + .long yok_climb_up_anim ;3 Yokozuna + .long shn_climb_up_anim ;4 Shawn Michaels + .long bam_climb_up_anim ;5 Bam Bam + .long dnk_climb_up_anim ;6 Doink + .long dnk_climb_up_anim ;7 Adam Bomb + .long lex_climb_up_anim ;8 Lex Luger + .long dnk_climb_up_anim ;9 Referee + + .if 0 +#***************************************************************************** +* Climbthru special move +* + + SUBR climb_thru_side_ropes + .word J_LEFT, J_FLIPPED_LR + .word J_LEFT, J_FLIPPED_LR + .word 8000h | 16 ;max + .long scrt_climbthru_side + + SUBR climb_thru_side_ropes2 + .word J_RIGHT, J_FLIPPED_LR + .word J_RIGHT, J_FLIPPED_LR + .word 8000h | 16 ;max + .long scrt_climbthru_side + + SUBR climb_thru_bottom_ropes + .word J_DOWN, 0 + .word J_DOWN, 0 + .word 8000h | 16 ;max + .long scrt_climbthru_bot + + SUBR climb_thru_top_ropes + .word J_UP, 0 + .word J_UP, 0 + .word 8000h | 16 ;max + .long scrt_climbthru_top + .endif + +#******** + SUBR ck_climb_out_bot + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #no_climbthru + + calla get_opp_process + move *a0(INRING),a0 + jrz #no_climbthru + +;scrt_climbthru_bot + + move *a13(OBJ_XPOSINT),a0 + subi RING_X_CENTER,a0 + abs a0 +;Far enough away from posts? + cmpi 0a8h,a0 + jrgt #no_climbthru + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + + jrnz #no_climbthru + + + + ;make sure we're at the bottom edge of the ring. + move *a13(OBJ_ZPOS),a0,L + cmpi [RING_BOT,0],a0 + jrne #no_climbthru + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbthru_bot_anims,a0 + move *a0,a0,L + calla change_anim1a + jruc #done + + SUBR ck_climb_in_top + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #no_climbthru + +;climbin_top + move *a13(CLIMBING_THRU),a0 ;1=Climbing thru ropes flag + jrnz #done + + move *a13(OBJ_XPOSINT),a0 + subi RING_X_CENTER,a0 + abs a0 +;Far enough away from posts? + cmpi 98h,a0 + jrgt #no_climbthru + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_climbthru + + ;make sure we're at the top edge of the mat. + move *a13(OBJ_ZPOS),a0,L + cmpi [MAT_TOP-5,0],a0 + jrne #no_climbthru + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbin_top_anims,a0 + move *a0,a0,L + calla change_anim1a + +#no_climbthru +#done + rets + +#******** + SUBR ck_climb_out_top + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #no_climbthru + + calla get_opp_process + move *a0(INRING),a0 + + jrz #no_climbthru + + + move *a13(OBJ_XPOSINT),a0 + subi RING_X_CENTER,a0 + abs a0 +;Far enough away from posts? + cmpi 98h,a0 + jrgt #no_climbthru +;scrt_climbthru_top + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_climbthru + + ;make sure we're at the top edge of the ring. + move *a13(OBJ_ZPOS),a0,L + cmpi [RING_TOP,0],a0 + jrne #no_climbthru + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbthru_top_anims,a0 + move *a0,a0,L + calla change_anim1a + jruc #done + + SUBR ck_climb_in_bot + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #no_climbthru + +;climbin_bot + move *a13(CLIMBING_THRU),a0 ;1=Climbing thru ropes flag + jrnz #done + + move *a13(OBJ_XPOSINT),a0 + subi RING_X_CENTER,a0 + abs a0 +;Far enough away from posts? + cmpi 0c8h,a0 + jrgt #no_climbthru + + ;make sure we're up against the bottom of the ring + move *a13(OBJ_ZPOS),a0,L + cmpi [MAT_BOT+5,0],a0 + jrne #no_climbthru + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbin_bot_anims,a0 + move *a0,a0,L + calla change_anim1a + +#no_climbthru +#done + rets + +#******** + + SUBR ck_climb_out_side + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #no_climbthru + + calla get_opp_process + move *a0(INRING),a0 + + jrz #no_climbthru + + move *a13(OBJ_ZPOSINT),a0 + subi RING_Z_CENTER,a0 + abs a0 +;Far enough away from posts? + cmpi 48h,a0 + jrgt #no_climbthru + +;scrt_climbthru_side + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_climbthru + + ;make sure we're up against one of the sides + calla get_rope_x + move a0,a4 + cmpi RING_X_CENTER,a0 + jrgt #rt +;lf + move a13,a0 + calla wres_get_stick_val_cur + btst MOVE_LEFT_BIT,a0 + jrz #no_climbthru + + move a4,a0 + move *a13(OBJ_COLLX1),a1 + cmp a0,a1 + jrle #out_left + jruc #no_climbthru +#rt + move a13,a0 + calla wres_get_stick_val_cur + btst MOVE_RIGHT_BIT,a0 + jrz #no_climbthru + + move a4,a0 + move *a13(OBJ_COLLX2),a1 + cmp a0,a1 + jrge #out_right + jruc #no_climbthru + +#out_left + movi MOVE_DOWN_LEFT,a2 + jruc #face +#out_right + movi MOVE_DOWN_RIGHT,a2 + +#face + move *a13(FACING_DIR),a1 + cmp a2,a1 + jreq #climb + + move a2,*a13(NEW_FACING_DIR) + calla set_rotate_anim + calla change_anim1a + + movi #climb,a0 + move a0,*a13(CODE_ADDR),L + SETMODE WAITANIM + rets + +#climb + move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbthru_side_anims,a0 + move *a0,a0,L + calla change_anim1a + + SETMODE NORMAL + jruc #done + + + SUBR ck_climb_in_side + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #no_climbthru + + move *a13(CLIMBING_THRU),a0 ;1=Climbing thru ropes flag + jrnz #done + + + move *a13(OBJ_ZPOSINT),a0 + subi RING_Z_CENTER,a0 + abs a0 +;Far enough away from posts? + + cmpi 58h,a0 ;48h + jrgt #done + +;#climb_in + ;is he close enough to the ring? + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_CENTER,a0 + jrlt #on_left + + ;he's right of center + movi vln_right_matedge2,a6 + movi MOVE_DOWN_LEFT,a7 + move *a13(OBJ_COLLX1),a14 + jruc climbin_dir_set + +#on_left + ;he's left of center + movi vln_left_matedge2,a6 + movi MOVE_DOWN_RIGHT,a7 + move *a13(OBJ_COLLX2),a14 + +climbin_dir_set + calla calc_line_x + sub a14,a0 + abs a0 + cmpi 5,a0 + jrgt #no_climbthru + + ;he's within five pixels of his mat edge. face the ring + move *a13(FACING_DIR),a1 + cmp a7,a1 + jreq #jump_in + + move a7,*a13(NEW_FACING_DIR) + calla set_rotate_anim + calla change_anim1a + + movi #jump_in,a0 + move a0,*a13(CODE_ADDR),L + SETMODE WAITANIM + movk 1,a0 + move a0,*a13(CLIMBING_THRU) + rets + +#jump_in + movk 1,a0 + move a0,*a13(CLIMBING_THRU) + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbin_side_anims,a0 + move *a0,a0,L + calla change_anim1a + + SETMODE NORMAL + +#no_climbthru +#done + rets + + +climbthru_bot_anims + .long hrt_climbthru_bot_anim ;0 Bret Hart + .long rzr_climbthru_bot_anim ;1 Razor Ramon + .long und_climbthru_bot_anim ;2 Undertaker + .long yok_climbthru_bot_anim ;3 Yokozuna + .long shn_climbthru_bot_anim ;4 Shawn Michaels + .long bam_climbthru_bot_anim ;5 Bam Bam + .long dnk_climbthru_bot_anim ;6 Doink + .long dnk_climbthru_bot_anim ;7 Adam Bomb + .long lex_climbthru_bot_anim ;8 Lex Luger + .long dnk_climbthru_bot_anim ;9 Referee + +climbthru_top_anims + .long hrt_climbthru_top_anim ;0 Bret Hart + .long rzr_climbthru_top_anim ;1 Razor Ramon + .long und_climbthru_top_anim ;2 Undertaker + .long yok_climbthru_top_anim ;3 Yokozuna + .long shn_climbthru_top_anim ;4 Shawn Michaels + .long bam_climbthru_top_anim ;5 Bam Bam + .long dnk_climbthru_top_anim ;6 Doink + .long dnk_climbthru_top_anim ;7 Adam Bomb + .long lex_climbthru_top_anim ;8 Lex Luger + .long dnk_climbthru_top_anim ;9 Referee + +climbin_bot_anims + .long hrt_climbin_bot_anim ;0 Bret Hart + .long rzr_climbin_bot_anim ;1 Razor Ramon + .long und_climbin_bot_anim ;2 Undertaker + .long yok_climbin_bot_anim ;3 Yokozuna + .long shn_climbin_bot_anim ;4 Shawn Michaels + .long bam_climbin_bot_anim ;5 Bam Bam + .long dnk_climbin_bot_anim ;6 Doink + .long dnk_climbin_bot_anim ;7 Adam Bomb + .long lex_climbin_bot_anim ;8 Lex Luger + .long dnk_climbin_bot_anim ;9 Referee + +climbin_top_anims + .long hrt_climbin_top_anim ;0 Bret Hart + .long rzr_climbin_top_anim ;1 Razor Ramon + .long und_climbin_top_anim ;2 Undertaker + .long yok_climbin_top_anim ;3 Yokozuna + .long shn_climbin_top_anim ;4 Shawn Michaels + .long bam_climbin_top_anim ;5 Bam Bam + .long dnk_climbin_top_anim ;6 Doink + .long dnk_climbin_top_anim ;7 Adam Bomb + .long lex_climbin_top_anim ;8 Lex Luger + .long dnk_climbin_top_anim ;9 Referee + +climbthru_side_anims + .long hrt_climbthru_side_anim ;0 Bret Hart + .long rzr_climbthru_side_anim ;1 Razor Ramon + .long und_climbthru_side_anim ;2 Undertaker + .long yok_climbthru_side_anim ;3 Yokozuna + .long shn_climbthru_side_anim ;4 Shawn Michaels + .long bam_climbthru_side_anim ;5 Bam Bam + .long dnk_climbthru_side_anim ;6 Doink + .long dnk_climbthru_side_anim ;7 Adam Bomb + .long lex_climbthru_side_anim ;8 Lex Luger + .long dnk_climbthru_side_anim ;9 Referee + +climbin_side_anims + .long hrt_climbin_side_anim ;0 Bret Hart + .long rzr_climbin_side_anim ;1 Razor Ramon + .long und_climbin_side_anim ;2 Undertaker + .long yok_climbin_side_anim ;3 Yokozuna + .long shn_climbin_side_anim ;4 Shawn Michaels + .long bam_climbin_side_anim ;5 Bam Bam + .long dnk_climbin_side_anim ;6 Doink + .long dnk_climbin_side_anim ;7 Adam Bomb + .long lex_climbin_side_anim ;8 Lex Luger + .long dnk_climbin_side_anim ;9 Referee + + +#***************************************************************************** +* +* a13 = wrestler process + + SUBR clear_damage_log + + move a13,a2 + addi DAMAGE_HIST,a2 ;start of damage stucture + + clr a0 + movk 20,a1 ;8 longs +#clr_loop + move a0,*a2+,L + dsj a1,#clr_loop + + rets + + +#***************************************************************************** +* +* a13 = wrestler process +* a0 = damage amount (only if negative) + + SUBR log_damage + + move a0,a0 + jrnn #not_damage + + PUSH a1,a2,a3 + + move a13,a1 + move a13,a2 + + addi DAMAGE_HIST+19*32,a1 ;start at end of structure and + addi DAMAGE_HIST+20*32,a2 ;move everything down 1 long + + movk 19,a3 +#lp move -*a1,-*a2,L + dsjs a3,#lp + + move a0,a1 ;damage amount + neg a1 + sll 16,a1 + move @round_tickcount,a2 ;ticks since match started + andi 0ffffh,a2 + or a1,a2 + move a2,*a13(DAMAGE_HIST),L + + PULL a1,a2,a3 + +#not_damage + rets + + +#***************************************************************************** +* +* ARGS: a13 = wrestler process +* a0 = timespan (in ticks) +* +* RETURNS: a0 = damage total +* +* TRASHES: a1-a6,a14 +* + + SUBR tally_damage + + move @round_tickcount,a4 ;ticks since match started + clr a5 ;damage tally + + move a13,a1 + addi DAMAGE_HIST,a1 ;start of damage stucture + + movk 20,a6 +#loop + move *a1+,a2 ;tick count + jrz #exit ;can't have a 0 tick count + move *a1+,a3 ;damage + + move a4,a14 + sub a2,a14 + cmp a0,a14 ;> timespan? + jrgt #exit + + add a3,a5 + dsj a6,#loop + +#exit + move a5,a0 + rets + +#***************************************************************************** +* +* a9 = player number (0-1) + +GETUP_SIZE equ 80 ;102 ;174 ;99 +MAX_TIME equ 6*TSEC +INV_MULT equ 256*GETUP_SIZE/MAX_TIME +ONSCR_X equ 173 +OFFSCR_X equ 221 + + STRUCTPD + LONG IPTR_FRAME + LONG IPTR_GREEN + WORD DISPLAY_VAL + + SUBR getup_meter + + SLEEPK 2 + + clr a0 + move a0,*a13(DISPLAY_VAL) + + movi [OFFSCR_X,0],a10 + move a9,a9 + jrnz #p2 + + dec a10 + neg a10 +#p2 + + movi RECVRBLK,a2 ;* image (green bar) + movi [109,0],a1 ;y pos + movi 1801H,a3 ;z pos + callr #begin_obj + move a8,*a13(IPTR_GREEN),L + + movi RECVR_R,a2 ;* image (frame) + move a9,a9 + jrnz #p2_meter + movi RECVR_L,a2 ;* image (frame) +#p2_meter + movi [194-5,0],a1 ;y pos + movi 1800H,a3 ;z pos + callr #begin_obj + move a8,*a13(IPTR_FRAME),L + + move a9,a1 + calla get_process_ptr + move a0,a10 + + move a13,*a10(METER_PROC),L + + SUBR slide_offscr + +;Don't allow a meter to come out for awhile (unless flung) +;MJT Start + movi 15*60,a0 ;13 +;MJT End + move a0,*a10(DELAY_METER) + + movk 10,a11 +#offscr_loop + move a11,a11 + jrz #update + dec a11 + jruc #cont +#update + movi [OFFSCR_X,0],a0 + callr #set_x + +;No meters unless dizzy or flung out of control & getup_time has a value! +; move *a10(RUN_TIME),a14 +; jrnz #ckgetup +; +; move *a10(PLYR_DIZZY),a14 +; jrz #cont +;#ckgetup + move *a10(WHOHITME),A0,L + move *a0(COMBO_COUNT),A14 + jrnz #cont + move *a10(DELAY_METER),a14 + jrnz #cont + move *a10(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrz #cont + move *a10(GETUP_TIME),a14 + jrnz #onscr + +#cont + SLEEPK 1 + jruc #offscr_loop + + +#onscr + move a14,a11 + + movi GETUP_SIZE,a0 + move a0,*a13(DISPLAY_VAL) + +;; sll 16,a11 +;; divu a0,a11 ;divisor + + +;Turn on whack butns message first time only +; move *a10(WHACK_CNT),a0 +; jrnz #skip +; +;Get rid of "whack button" graphic for now. +; jruc #skip +; +; CREATE0 start_whack +;#skip + +;MJT Start + MOVI 0BBH,A0 ;Meter announce sound + CALLA triple_sound +;MJT End + +#onscr_loop + + movi [ONSCR_X,0],a0 + callr #set_x + + move *a10(GETUP_TIME),a7 + +#rescale + movi GETUP_SIZE,a0 + mpyu a0,a7 ;* GETUP_SIZE + divu a11,a7 ;/ INITIAL GETUP TIME + + move *a13(DISPLAY_VAL),a0 + cmp a0,a7 ;has getup been incremented? + jrle #ok1 + + move a7,a11 + movi GETUP_SIZE,a0 + mpyu a0,a7 ;* GETUP_SIZE + divu a11,a7 ;/ INITIAL GETUP TIME +#ok1 + callr #update_meter + + move a7,a7 + jrz slide_offscr + +;MJT Start + move *a10(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jrz slide_offscr +;MJT End + + SLEEPK 1 + jruc #onscr_loop + + +#set_x + move a9,a9 + jrnz #p22 + neg a0 +#p22 + addi [200-1,0],a0 ;center of screen + move a13,a14 + addi IPTR_FRAME,a14 + move *a14,a8,L + move *a8(OXVAL),a1,L + sub a1,a0 + sra 2,a0 + movk 3-1,a1 +#lp + move *a14+,a8,L + move a0,*a8(OXVEL),L + dsj a1,#lp + rets + + +#begin_obj + movi [200-1,0],a0 ;x pos + add a10,a0 + + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + rets + + +#update_meter + move *a13(DISPLAY_VAL),a0 + add a0,a7 + srl 1,a7 + move a7,*a13(DISPLAY_VAL) + move a7,a1 + + neg a1 + addi GETUP_SIZE,a1 + jrp #ok + clr a1 +#ok + movi GETUP_SIZE,a0 + cmp a0,a1 ;meter can't be taller + jrle #ok2 ;than GETUP_SIZE pixels + move a0,a1 +#ok2 + move *a13(IPTR_GREEN),a8,L + + MOVI GETUP_SIZE,A2 + SUB A1,A2 + MOVE A2,*A8(OSIZEY) + MOVI RECVRBLK,A0 + MOVE *A0(ICTRL),A5 + SRL 12,A5 + MOVE A1,A3 + MPYU A5,A3 + MOVE *A0(ISIZEX),A5 + MPYU A5,A3 + MOVE *A0(ISAG),A0,L + ADD A3,A0 + MOVE A0,*A8(OSAG),L + + rets + +#***************************************************************************** +* +* a0 = # ticks to add +* a13 = * wrestler process + + SUBR inc_getup_time + + PUSH a14 + move *a13(GETUP_TIME),a14 + cmpi 20,a14 + jrlt #exit + add a0,a14 + move a14,*a13(GETUP_TIME) +#exit + PULL a14 + rets + +#***************************************************************************** +* +* do rolls for any wrestler +* +* args : a13 = * wrestler process +* +* returns : Z=1 if didn't roll + + SUBR do_roll + +;MJT Start + move *a13(OBJ_ZPOS+16),a0 + move *a13(Z_BOUND),a14 + jrz #reg + sub a0,a14 + cmpi 6,a14 + jrle #no_roll +#reg +;MJT End + move a13,a0 + calla wres_get_stick_val_cur + andi MOVE_UP|MOVE_DOWN,a0 + jrz #no_roll + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #roll_table,a14 + move *a14,a14,L + + move *a14+,a1 ;roll speed + move *a14+,a2,L ;z velocity + + btst MOVE_DOWN_BIT,a0 + jrnz #down + neg a1 ;must be up + neg a2 +#down + move a2,*a13(OBJ_ZVEL),L + + move *a13(ROLL_POS),a0 + add a0,a1 + andi 0ffh,a1 + move a1,*a13(ROLL_POS) + move *a14+,a0,L ;inv multiplier + mpyu a0,a1 + srl 16,a1 ;/65536 + X32 a1 + add a1,a14 + move *a14,a0,L + .if DEBUG + jrnz #ok + LOCKUP +#ok + .endif + + move *a0,a0,L + .if DEBUG + jrnz #ok2 + LOCKUP +#ok2 + .endif + + move a0,*a13(CUR_FRAME),L + rets + + +#no_roll + clr a0 + move a0,*a13(OBJ_ZVEL),L + rets + + + .ref bam_roll_frames + .ref dnk_roll_frames + .ref hrt_roll_frames + .ref lex_roll_frames + .ref rzr_roll_frames + .ref shn_roll_frames + .ref und_roll_frames + + .ref yok_roll_frames +#roll_table + .long hrt_roll_frames ;0 Bret Hart + .long rzr_roll_frames ;1 Razor Ramon + .long und_roll_frames ;2 Undertaker + .long yok_roll_frames ;3 Yokozuna + .long shn_roll_frames ;4 Shawn Michaels + .long bam_roll_frames ;5 Bam Bam + .long dnk_roll_frames ;6 Doink + .long 0 ;7 ->SPARE<- + .long lex_roll_frames ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** + + SUBR lineup_grapple + + move *a13(ATTACH_PROC),a10,L + jrz #exit + move *a10(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #exit + + + move *a13(OBJ_ZPOS),a0,L + move *a10(OBJ_ZPOS),a1,L + add a1,a0 + srl 1,a0 + + movi [1,0],a1 + move *a13(FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #2_lock + movi [-1,0],a1 +#2_lock + add a1,a0 + move a0,*a13(OBJ_ZPOS),L + + + move *a13(WRESTLERNUM),a0 + movi 10*16,a1 + mpyu a0,a1 ;calc row + move *a10(WRESTLERNUM),a0 + X16 a0 + add a0,a1 ;+ column + addi #grapple_x_dists,a1 + move *a1,a3 ;distance to keep apart + + move *a13(OBJ_XPOSINT),a0 + move *a10(OBJ_XPOSINT),a1 + cmp a1,a0 + jrgt #to_right + neg a3 +#to_right + add a1,a0 + srl 1,a0 + add a3,a0 + sll 16,a0 + move a0,*a13(OBJ_XPOS),L +#exit + rets + + + +#grapple_x_dists +; B +; R T S A D +; H A A Y H M O A +; A Z K O A B I D L +; R O E K W A N A E +; T R R O N M K M X +; +; 0 1 2 3 4 5 6 7 8 9 + + .word 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 ;0 HART + + .word 00, 30, 00, 00, 00, 00, 20, 26, 00, 00 ;1 RAZOR + + .word 00, 00, 35, 00, 00, 00, 00, 00, 00, 00 ;2 TAKER + + .word 00, 00, 00, 30, 00, 00, 00, 00, 00, 00 ;3 YOKO + + .word 00, 00, 00, 00, 30, 00, 00, 00, 00, 00 ;4 SHAWN + + .word 00, 00, 00, 00, 00, 37, 00, 00, 00, 00 ;5 BAMBAM + + .word 00, 20, 00, 00, 00, 00, 32, 20, 00, 00 ;6 DOINK + + .word 00, 26, 00, 00, 00, 00, 20, 25, 00, 00 ;7 ADAM + + .word 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 ;8 LEX + + .word 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 ;9 + + +#***************************************************************************** + + SUBR lineup_headhold + + move *a13(ATTACH_PROC),a10,L + jrz #exit + move *a10(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #exit + + + move *a13(OBJ_ZPOS),a0,L + move *a10(OBJ_ZPOS),a1,L + add a1,a0 + srl 1,a0 + + movi [1,0],a1 + move *a13(FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #2_lock + movi [-1,0],a1 +#2_lock + add a1,a0 + move a0,*a13(OBJ_ZPOS),L + + + move *a13(WRESTLERNUM),a0 + movi 10*16,a1 + mpyu a0,a1 ;calc row + move *a10(WRESTLERNUM),a0 + X16 a0 + add a0,a1 ;+ column + addi #grapple_x_dists,a1 + move *a1,a3 ;distance to keep apart + + move *a13(OBJ_XPOSINT),a0 + move *a10(OBJ_XPOSINT),a1 + cmp a1,a0 + jrgt #to_right + neg a3 +#to_right + add a1,a0 + srl 1,a0 + add a3,a0 + sll 16,a0 + move a0,*a13(OBJ_XPOS),L +#exit + rets + + + +#grapple_x_dists +; B +; R T S A D +; H A A Y H M O A +; A Z K O A B I D L +; R O E K W A N A E +; T R R O N M K M X +; +; 0 1 2 3 4 5 6 7 8 9 + + .word 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 ;0 HART + + .word 00, 30, 00, 00, 00, 00, 20, 26, 00, 00 ;1 RAZOR + + .word 00, 00, 35, 00, 00, 00, 00, 00, 00, 00 ;2 TAKER + + .word 00, 00, 00, 30, 00, 00, 00, 00, 00, 00 ;3 YOKO + + .word 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 ;4 SHAWN + + .word 00, 00, 00, 00, 00, 37, 00, 00, 00, 00 ;5 BAMBAM + + .word 00, 20, 00, 00, 00, 00, 39, 20, 00, 00 ;6 DOINK + + .word 00, 26, 00, 00, 00, 00, 20, 25, 00, 00 ;7 ADAM + + .word 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 ;8 LEX + + .word 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 ;9 + + +#***************************************************************************** + + SUBR check_dizzy + + movi 4*TSEC,a0 + calla tally_damage + +;Is this the right way to causes dizzies? +;If one move is super powerful, we will tend to get dizzies when we don't want +;them. Maybe it should be based on hits over time, not damage. + +;A combination of the two is needed here! 10/5/94 + +;We need less resolution on the damage that is recorded! +;Perhaps 1-3? + +;We should allow this to happen only once per round! + + cmpi 65,a0 + + jrlt #no_dizzy + + jruc #no_dizzy + + + calla clear_damage_log + +;Don't allow dizzies if your health meter is real low! +;Killer Instinct sucks.... + move *a13(PLYRNUM),a1 + .ref get_health + calla get_health + cmpi 30,a0 + jrlt #no_dizzy + +;Too many dizzies this round? + move *a13(PLYR_DIZZY_CNT),a0 + cmpi 1,a0 ;Max dizzies per round + jrge #no_dizzy + + inc a0 + move a0,*a13(PLYR_DIZZY_CNT) + + + movi 1,a0 ;return TRUE + move a0,*a13(PLYR_DIZZY) + rets + +#no_dizzy + clr a0 ;return FALSE + rets + +#***************************************************************************** + + SUBR form_button_value + + ;Combine the val_cur of the block bit with the val_down of the rest. + + move a13,a0 + calla wres_get_but_val_cur + andi PLAYER_BLOCK_VAL,a0 + move a0,a1 + move a13,a0 + calla wres_get_but_val_down + or a1,a0 + rets + +#***************************************************************************** + + SUBR start_whack + +;a10=plyr proc +;Turn on whack button graphic, animate it for a bit + +frame_z .equ 202 + + movk 1,a0 + move a0,*a10(WHACK_CNT) + + movi [0f6h,0],a1 + movi [44h,0],a0 + move *a10(PLYRNUM),a2 + jrz #ok + movi [401-44h,0],a0 +#ok + movi WHAK0001,a2 + movi frame_z+2,a3 ;Z + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi OVRHED_PID,a5 + clr a6 + clr a7 + calla BEGINOBJ + move a8,a11 + + movi [0f6h,0],a1 + movi [44h,0],a0 + move *a10(PLYRNUM),a2 + jrz #ok2 + movi [401-44h,0],a0 +#ok2 + movi WKBUTT01,a2 + movi frame_z+3,a3 ;Z + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi OVRHED_PID,a5 + clr a6 + clr a7 + calla BEGINOBJ + +#start + movi butn_l,a9 + +#lp move *a10(GETUP_TIME),a0 + jrz #die + + move *a9+,a0,L + jrz #start + move *a8(OCTRL),a1 + calla obj_aniq +#noani + SLEEPK 3 + jruc #lp ;Going up? + +#die + SLEEPK 10 + + move a11,a0 + calla DELOBJ + jauc DELOBJDIE + + +butn_l + .long WKBUTT01 + .long WKBUTT02 + .long WKBUTT03 + .long WKBUTT02 + + .long 0 + +#***************************************************************************** +* +* Gets the animation point of a multipart object. Find the highest x and y +* offset values among all the pieces. +* +* >a0 = object table pointer +* a0 = object table pointer +* min? + jrlt #no_punch + cmpi 100+60,a0 ;< max? + jrgt #no_punch + + callr #scrt_2ndwind + setc + rets + +#no_punch + clrc + rets + + +; BITS MASK + + +#gut_push + .word B_PUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 40 ;max + .long scrt_gut_push + + +scrt_gut_push + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_gut_push + + movi yok_2_gut_push_anim,a0 + move *a13(FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #2_gutpush + movi yok_4_gut_push_anim,a0 +#2_gutpush + calla change_anim1a +#no_gut_push + rets + +#scrt_2ndwind + rets + +#***************************************************************************** + + SUBR yoko_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi yok_stand4_anim,a0 + calla change_anim1a + + movi yok_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + + .ref do_taunt + CREATE0 do_taunt + PULL a10 + + rets + +#p1 + movi yok_stand2_anim,a0 + calla change_anim1a + + movi yok_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* YOKOZUNA CONTROL CODE +* +* a13 = * yoko process + + SUBR move_yoko + + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + movi yok_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 + .long mode_normal ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .ref mode_inair2 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .ref mode_choking + .long mode_choking ;25 + + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + +;Any button causes a pin + move a13,a0 + calla wres_get_but_val_cur + move a0,a0 + jrz #opp_not_dead + +;Make sure opponent is on the ground! +;First, see if opponent is on the ground. + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #opp_not_dead + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a1,L + + move *a1(OBJ_YPOS),a0,L + move *a1(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + +;Opponent is on ground. +;Now check to see if I'm attached to him in puppet mode! + move *a13(ATTACH_PROC),a1,L + jrz #done + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 +;If I'm attached to him, let the move finish! + jrz #opp_not_dead +#done + + .ref yok_2_pin_anim + .ref yok_4_pin_anim + .ref ADD_IF_SILENT,CLIMB_ROPES + + FACE24 yok,pin_anim + calla change_anim1a + + rets + +#opp_notgnd +#opp_not_dead + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #no_climb + + 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 + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets +#no_climb + + calla execute_walk + +#no_interrupt + rets + +#action_table +;This table accounts for 2 buttons being hit simultaneously. + + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +************ +#graboh +#z + + rets + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 62 95 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing normal punch +* +* onturnbkl < 60 60 punch +* onturnbkl > normal punch +* +* puppet|inair normal punch +* + + JJXM_INIT + JJXM NORMAL, 62, 95,#punch_hdbutt,#punch_punch + JJXM DIZZY, 62, 95,#punch_hdbutt,#punch_punch + JJXM BLOCK, 62, 95,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 120,120,#punch_lbdrop,#punch_punch + JJXM RUNNING, #punch_punch + JJXM BOUNCING, #punch_punch + JJXM ONTURNBKL, #punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM PUPPET, #punch_punch + JJXM INAIR, #punch_punch + JJXM ATTACHED, 62, 95,#punch_hdbutt,#punch_punch + JJXM DEAD, 62, 95,#punch_hdbutt,#punch_punch + JJXM OPPOVERHEAD, 62, 95,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 62, 95,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 62, 95,#punch_hdbutt,#punch_punch + JJXM MASTER, 62, 95,#punch_hdbutt,#punch_punch + JJXM SLAVE, 62, 95,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 62, 95,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 62, 95,#punch_hdbutt,#punch_punch + JJXM INAIR2, 62, 95,#punch_hdbutt,#punch_punch + JJXM_END + +***** +#punch_punch + +std_punch + + FACE24 yok,punch_anim + calla change_anim1a + + WRSND W_YOKO,PUNCH_T1,PUNCH_T2 + rets + +***** +#punch_hdbutt + +; FACE24 yok,butt_anim +; calla change_anim1a +; +; WRSND W_YOKO,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbdrop + + FACE24 yok,lbowdrop_anim + calla change_anim1a + + WRSND W_YOKO,LBOWDROP_T1,LBOWDROP_T2 + rets + +************ +#block ;2 + + clr a0 + move a0,*a13(OBJ_XVEL),L + +std_block + FACE24 yok,block_anim + calla change_anim1a + + rets + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 120 120 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 50, 92,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 50, 92,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 50, 92,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 50, 92,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 120,120,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, #spunch_rets ;5 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 50, 92,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 50, 92,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 96,112,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 50, 92,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 50, 92,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 50, 92,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 50, 92,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 50, 92,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 50, 92,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, 50, 92,#spunch_special,#spunch_slap ;19 + JJXM PUPPET, 50, 92,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 50, 92,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +***** +#spunch_slap + +;RJR START +; FACE24 dnk,slap_anim +; FACE24 yok,punch_anim + movi yok_graboh_anim,a0 + movi yok_grabflip_anim,a0 + calla change_anim1a +;RJR END + + WRSND W_DOINK,PUNCH_T1,PUNCH_T2 + + rets + +***** +#spunch_special + +; movi dnk_3_pile_driver_anim,a0 +; FACE24 dnk,butt_anim + FACE24 yok,punch_anim + calla change_anim1 + + WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 + + rets + +***** +#spunch_lbowdrop + .ref yok_2_hair_pickup_anim + .ref yok_4_hair_pickup_anim +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + + .ref process_ptrs + + addi process_ptrs,a14 + move *a14,a14,L + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 yok,hair_pickup_anim + calla change_anim1 + WRSND W_YOKO,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no +; FACE24 dnk,tlbowdrop_anim + FACE24 yok,lbowdrop_anim + calla change_anim1 + WRSND W_YOKO,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 50 knee +* > normal kick +* +* onground < 120 120 stomp +* onground > normal kick +* +* running | +* bouncing big boot +* +* onturnbkl | normal kick +* climbturnbkl normal kick +* +* puppet|inair normal kick +* + + + JJXM_INIT + JJXM NORMAL, 60, 50,#kick_knee,#kick_kick + JJXM DIZZY, 60, 50,#kick_knee,#kick_kick + JJXM BLOCK, 60, 50,#kick_knee,#kick_kick + JJXM ONGROUND, 120,120,#kick_stomp,#kick_kick + JJXM RUNNING, #kick_bigboot + JJXM BOUNCING, #kick_bigboot + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM PUPPET, #kick_kick + JJXM INAIR, #kick_kick + JJXM ATTACHED, 60, 50,#kick_knee,#kick_kick + JJXM DEAD, 60, 50,#kick_knee,#kick_kick + JJXM OPPOVERHEAD, 60, 50,#kick_knee,#kick_kick + JJXM WAITANIM, 60, 50,#kick_knee,#kick_kick + JJXM GRAPPLE, 60, 50,#kick_knee,#kick_kick + JJXM MASTER, 60, 50,#kick_knee,#kick_kick + JJXM SLAVE, 60, 50,#kick_knee,#kick_kick + JJXM HEADHOLD, 60, 50,#kick_knee,#kick_kick + JJXM HEADHELD, 60, 50,#kick_knee,#kick_kick + JJXM INAIR2, 60, 50,#kick_knee,#kick_kick + JJXM_END + +***** +#kick_kick + + FACE24 yok,kick_anim + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +***** +#kick_knee + + FACE24 yok,knee_anim + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp + + FACE24 yok,stomp_anim + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +***** +#kick_bigboot + + rets + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + + +************ +#super_kick ;16 + + ;for now, just act like a normal kick - temp! + jruc #kick + rets + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ 40000h ;50000h +#ZDRIFT_VAL equ 18000h ;18000h + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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_stick_val_cur + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#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 #block ;2 (block) + .long #z ;3 + .long #super_punch ;4 (super punch) + .long #z,#z,#z ;5-7 + .long #kick ;8 kick + .long #z,#z,#z,#z,#z,#z,#z ;9-15 + .long #super_kick ;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 +#super_punch ;4 +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 62 95 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing normal punch +* +* onturnbkl < 60 60 punch +* onturnbkl > normal punch +* +* puppet|inair normal punch +* + + JJXM_INIT + JJXM NORMAL, #punch_rets + JJXM DIZZY, #punch_rets + JJXM BLOCK, #punch_rets + JJXM ONGROUND, #punch_buttdrop + JJXM RUNNING, #punch_rets + JJXM BOUNCING, #punch_rets + JJXM ONTURNBKL, #punch_rets + JJXM CLIMBTURNBKL, #punch_rets + JJXM PUPPET, #punch_rets + JJXM INAIR, #punch_rets + JJXM ATTACHED, #punch_rets + JJXM DEAD, #punch_buttdrop + JJXM OPPOVERHEAD, #punch_rets + JJXM WAITANIM, #punch_rets + JJXM GRAPPLE, #punch_rets + JJXM MASTER, #punch_rets + JJXM SLAVE, #punch_rets + JJXM HEADHOLD, #punch_rets + JJXM HEADHELD, #punch_rets + JJXM INAIR2, #punch_rets + JJXM_END + + rets + +***** +#punch_rets + rets + +***** +#punch_buttdrop + + movi yok_3_butt_drop_anim,a0 + calla change_anim1a + rets + + +************ +#block ;2 + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + + +#***************************************************************************** +* + +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 + + .ref do_roll + .ref yok_faceup_getup_anim +mode_onground ;4 + + 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 yok_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 + + ;this is so an attack isn't turned into a climbdown + ; in those 5-10 ticks before MODE_INAIR2 is set... + move *a13(ANIBASE),a14,L + cmpi yok_climb_up_anim,a14 + jrne #no_climbdown + + movi yok_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + + rets + +#no_climbdown + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + +;For standing on top of turnbuckles + +#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 + + movi yok_tbukl_buttdrop_anim,a0 + calla change_anim1a + + WRSND W_YOKO,FLYKICK_T1,FLYKICK_T2 + + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + move a13,a0 + calla wres_get_but_val_down + andi 011111b,a0 + jrz #no_interrupt + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #punchblock ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + FACE24 yok,push_anim + calla change_anim1a + + WRSND W_YOKO,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* + +mode_dizzy ;8 + + move *a13(GETUP_TIME),a0 + jrnz #still_going + + .ref clear_damage_log + calla clear_damage_log + + clr a0 + move a0,*a13(STARS_FLAG) + + SETMODE NORMAL + +#still_going + rets + + +#***************************************************************************** +mode_dead ;9 + + rets + +;RJR START +#***************************************************************************** +* 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 ;* remove this???? + 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) + + rets + +#still_attached + +#no_interrupt + rets + + +;RJR END +#***************************************************************************** +* +* 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 +; +; +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +;;now get move off +;;if opponents meter almost zero then break apart +; +; calla break_lockup +; 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 + +;Jason, finish all these moves from the head hold +#***************************************************************************** + +mode_headhold ;16 + + move *a13(ATTACH_PROC),a10,L + jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + +;Should we allow you to break from head hold into a block? +;I think not right now... +; 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 do_block ;& 1 for current buttons +; +;;Do an ANI_DETACH +; move *a13(ATTACH_PROC),a1,L +; jrz #done +; clr a0 +; move a0,*a13(ATTACH_PROC),L ;not attached to anything +; +; move *a1(ATTACH_PROC),a2,L +; cmp a2,a13 +; jrne #done +; +; move a0,*a1(ATTACH_PROC),L ;not attached to anything +;#done +; +;#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 + +#no_interrupt + rets + +#exit + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#z ;0 + rets + +************ + +#punch ;1 +;If stick is toward opponent, then do quick punches + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag +; movi dnk_uppercuts_to_head_anim,a0 + movi yok_4_knee_anim,a0 + calla change_anim1a + rets + +#tag +; movi dnk_uppercut_to_head_anim,a0 + movi yok_4_knee_anim,a0 + calla change_anim1a + rets + +************ +#super_punch ;4 + + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #punch + +; movi dnk_3_pile_driver_anim,a0 + movi yok_4_knee_anim,a0 +;RJR START + movi yok_vsuplex_anim,a0 +;RJR END + calla change_anim1a + rets + +#punchkick +#graboh +#kick + move a13,a0 + calla wres_get_stick_val_cur + + btst PLAYER_DOWN_BIT,a0 + jrz #knee + +; .ref dnk_3_head_slam_anim + +; movi dnk_3_head_slam_anim,a0 + movi yok_4_knee_anim,a0 + calla change_anim1a + rets + +#knee +; movi dnk_3_knee_to_head_anim,a0 + movi yok_4_knee_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees + move a13,a0 + calla wres_get_stick_val_cur + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #kick + +;Quick knees +; movi dnk_3_knees_to_head_anim,a0 + movi yok_4_knee_anim,a0 + calla change_anim1a + rets + + rets + + +#***************************************************************************** + +mode_headheld ;19 + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + .ref yok_3_head_held_stand_anim + movi yok_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_puppet ;20 + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +;#VEL equ 20000h +;#DVEL equ 16a0ah +#VEL equ 30000h +#DVEL equ 21f0eh + + + SUBR yok_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 yok_rotate_anims_table +; old = up right + .long yok_stand2_anim ;new = up right + .long yok_2_to_4_turn_anim ; = down right + .long yok_2_to_6_turn_anim ; = down left + .long yok_2_to_8_turn_anim ; = up left + +; old = down right + .long yok_4_to_2_turn_anim ;new = up right + .long yok_stand4_anim ; = down right + .long yok_4_to_6_turn_anim ; = down left + .long yok_4_to_8_turn_anim ; = up left + +; old = down left + .long yok_6_to_2_turn_anim ;new = up right + .long yok_6_to_4_turn_anim ; = down right + .long yok_stand6_anim ; = down left + .long yok_6_to_8_turn_anim ; = up left + +; old = up left + .long yok_8_to_2_turn_anim ;new = up right + .long yok_8_to_4_turn_anim ; = down right + .long yok_8_to_6_turn_anim ; = down left + .long yok_stand8_anim ; = up left + + + SUBR yok_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long yok_walk1_f2_anim ;1 (UP) + .long yok_walk1_f2_anim ;2 (UP_RIGHT) + .long yok_walk1_f4_anim ;3 (RIGHT) + .long yok_walk1_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk1_f4_anim ;5 (DOWN) + .long yok_walk1_f4_anim ;6 (DOWN_LEFT) + .long yok_walk1_f2_anim ;7 (LEFT) + .long yok_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk2_f2_anim ;2 (UP_RIGHT) + .long yok_walk2_f2_anim ;3 (RIGHT) + .long yok_walk2_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk8_f4_anim ;5 (DOWN) + .long yok_walk8_f4_anim ;6 (DOWN_LEFT) + .long yok_walk4_f2_anim ;7 (LEFT) + .long yok_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk2_f2_anim ;2 (UP_RIGHT) + .long yok_walk2_f2_anim ;3 (RIGHT) + .long yok_walk4_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk4_f4_anim ;5 (DOWN) + .long yok_walk8_f4_anim ;6 (DOWN_LEFT) + .long yok_walk6_f2_anim ;7 (LEFT) + .long yok_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk8_f2_anim ;2 (UP_RIGHT) + .long yok_walk4_f4_anim ;3 (RIGHT) + .long yok_walk4_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk2_f4_anim ;5 (DOWN) + .long yok_walk6_f4_anim ;6 (DOWN_LEFT) + .long yok_walk2_f2_anim ;7 (LEFT) + .long yok_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long yok_walk5_f2_anim ;1 (UP) + .long yok_walk5_f2_anim ;2 (UP_RIGHT) + .long yok_walk5_f4_anim ;3 (RIGHT) + .long yok_walk5_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk5_f4_anim ;5 (DOWN) + .long yok_walk5_f4_anim ;6 (DOWN_LEFT) + .long yok_walk5_f2_anim ;7 (LEFT) + .long yok_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk6_f2_anim ;2 (UP_RIGHT) + .long yok_walk2_f2_anim ;3 (RIGHT) + .long yok_walk6_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk2_f4_anim ;5 (DOWN) + .long yok_walk4_f4_anim ;6 (DOWN_LEFT) + .long yok_walk2_f2_anim ;7 (LEFT) + .long yok_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk6_f2_anim ;2 (UP_RIGHT) + .long yok_walk6_f2_anim ;3 (RIGHT) + .long yok_walk8_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk4_f4_anim ;5 (DOWN) + .long yok_walk4_f4_anim ;6 (DOWN_LEFT) + .long yok_walk2_f2_anim ;7 (LEFT) + .long yok_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk4_f2_anim ;2 (UP_RIGHT) + .long yok_walk6_f2_anim ;3 (RIGHT) + .long yok_walk8_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk6_f4_anim ;5 (DOWN) + .long yok_walk2_f4_anim ;6 (DOWN_LEFT) + .long yok_walk2_f2_anim ;7 (LEFT) + .long yok_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR yok_torso_anims_table +; old = up right + .long yok_torso2_anim ;new = up right + .long yok_2_to_4_turn2_anim ; = down right + .long yok_2_to_6_turn2_anim ; = down left + .long yok_2_to_8_turn2_anim ; = up left + +; old = down right + .long yok_4_to_2_turn2_anim ;new = up right + .long yok_torso4_anim ; = down right + .long yok_4_to_6_turn2_anim ; = down left + .long yok_4_to_8_turn2_anim ; = up left + +; old = down left + .long yok_6_to_2_turn2_anim ;new = up right + .long yok_6_to_4_turn2_anim ; = down right + .long yok_torso6_anim ; = down left + .long yok_6_to_8_turn2_anim ; = up left + +; old = up left + .long yok_8_to_2_turn2_anim ;new = up right + .long yok_8_to_4_turn2_anim ; = down right + .long yok_8_to_6_turn2_anim ; = down left + .long yok_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/YOKOIMG.ASM b/BACKUP/YOKOIMG.ASM new file mode 100644 index 0000000..f78e74e --- /dev/null +++ b/BACKUP/YOKOIMG.ASM @@ -0,0 +1,18 @@ + .FILE "yokoimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include yokoimg.tbl + .include yokoimg.h + +****************************************************************************** + + .even + .include "yoko.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/BACKUP/YOKOIMG.H b/BACKUP/YOKOIMG.H new file mode 100644 index 0000000..9018e09 --- /dev/null +++ b/BACKUP/YOKOIMG.H @@ -0,0 +1,81 @@ + .global Y4AH4A + .global Y2AH2A + .global Y4AE4A + .global Y2AE2A + .global Y2AM2C + .global Y4AM4A + .global Y4BK3A + .global Y2BK3A + .global Y4PB3A + .global Y3CP3B + .global Y3FD3A + .global Y3GU2A + .global Y3GU4A + .global Y4KM3A + .global Y2KM3A + .global Y4NM3B + .global Y2NM3A + .global Y2KB3A + .global Y4KB3A + .global Y4GF3B + .global Y4TI4C + .global Y3BF3A + .global Y4FG3Z + .global Y2FG3Z + .global Y3RL1A + .global Y3MF3B + .global Y3LB3A + .global Y4PU4B + .global Y2PU2A + .global Y4PS3A + .global Y4PS3B + .global Y2PS3A + .global Y2PS3B + .global Y4WL4B + .global Y4WL2C + .global Y4WL5A + .global Y2WL1A + .global Y2WL2Z + .global Y2WL8C + .global Y1TT5Z + .global Y2ST2Z + .global Y4ST4Y + .global Y3BO3C + .global Y1TR5Z + .global Y4TW4X + .global Y2TW2X + .global Y4POGO + .global Y4GH3C + .global Y3PF3C + .global Y5GU4B + .global Y5GU4V + .global Y5RV5A + .global Y3BR3Z + .global Y3PP3Q + .global Y3FD3N + .global Y3FL3W + .global Y3MS3Z + .global Y3KF3B + .global Y4LD4A + .global Y4CO4D + .global Y4WS4A + .global Y3RN3C + .global Y4YR3A + .global Y4BZ4A + .global Y4MP4A + .global Y2MP2A + .global Y2PF2A + .global Y3PF3A + .global Y3JK3A + .global Y2CT2Z + .global Y2ZZ2X + .global Y3RR3Z + .global Y4CR3B + .global Y4JD4A + .global Y4PO4X + .global Y4LZ3A + .global Y4SU4A + .global Y4SU4B + .global Y3FD3B + .global Y3FD3Z + .global Y3TN3Z diff --git a/BACKUP/YOKSEQ1.ASM b/BACKUP/YOKSEQ1.ASM new file mode 100644 index 0000000..7b3d6b2 --- /dev/null +++ b/BACKUP/YOKSEQ1.ASM @@ -0,0 +1,706 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "yokseq1.asm" + .title "Yokozuna animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "doinkimg.h" ;temp!!! + .include "yokoimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref SMALL_RUN + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* STANDS + + SUBR yok_zip_anim + WL 60*60,Y2ST2Z+FR1 + .word 0 ;<--?????? + .word ANI_END + + + SUBR yok_stand2_anim + SUBR yok_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 5,Y2ST2Z+FR4 + WL 5,Y2ST2Z+FR5 + WL 5,Y2ST2Z+FR6 +; WL 9,Y2ST2Z+FR7 + WL 5,Y2ST2Z+FR6 + WL 5,Y2ST2Z+FR5 + WL 5,Y2ST2Z+FR4 + WL 5,Y2ST2Z+FR3 + WL 5,Y2ST2Z+FR2 +; WL 9,Y2ST2Z+FR1 + WL 5,Y2ST2Z+FR2 + WL 5,Y2ST2Z+FR3 + + .word ANI_REPEAT + + + SUBR yok_stand4_anim + SUBR yok_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 5,Y4ST4Y+FR4 + WL 5,Y4ST4Y+FR5 + WL 5,Y4ST4Y+FR6 +; WL 5,Y4ST4Y+FR7 +; WL 9,Y4ST4Y+FR8 +; WL 5,Y4ST4Y+FR7 + WL 5,Y4ST4Y+FR6 + WL 5,Y4ST4Y+FR5 + WL 5,Y4ST4Y+FR4 + WL 5,Y4ST4Y+FR3 + WL 5,Y4ST4Y+FR2 +; WL 9,Y4ST4Y+FR1 + WL 5,Y4ST4Y+FR2 + WL 5,Y4ST4Y+FR3 + + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR yok_torso2_anim + SUBR yok_torso8_anim + + WL 4,Y2TW2X+FR1 + WL 4,Y2TW2X+FR2 + WL 4,Y2TW2X+FR3 + WL 4,Y2TW2X+FR4 + WL 4,Y2TW2X+FR3 + WL 4,Y2TW2X+FR2 + .word ANI_REPEAT + + + SUBR yok_torso4_anim + SUBR yok_torso6_anim + + WL 4,Y4TW4X+FR1 + WL 4,Y4TW4X+FR2 + WL 4,Y4TW4X+FR3 + WL 4,Y4TW4X+FR4 + WL 4,Y4TW4X+FR3 + WL 4,Y4TW4X+FR2 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR yok_walk1_f2_anim + WL 2,Y2WL1A+FR1 + WL 2,Y2WL1A+FR2 + WL 2,Y2WL1A+FR3 + WL 2,Y2WL1A+FR4 + WL 2,Y2WL1A+FR5 + WL 2,Y2WL1A+FR6 + WL 2,Y2WL1A+FR7 + WL 2,Y2WL1A+FR8 + WL 2,Y2WL1A+FR9 + WL 2,Y2WL1A+FR10 + WL 2,Y2WL1A+FR11 + WL 2,Y2WL1A+FR12 + WL 2,Y2WL1A+FR13 + WL 2,Y2WL1A+FR14 + WL 2,Y2WL1A+FR15 + WL 2,Y2WL1A+FR16 + WL 2,Y2WL1A+FR17 + WL 2,Y2WL1A+FR18 + WL 2,Y2WL1A+FR19 + WL 2,Y2WL1A+FR20 + WL 2,Y2WL1A+FR21 + WL 2,Y2WL1A+FR22 + .word ANI_REPEAT + + SUBR yok_walk2_f2_anim + WL 2,Y2WL2Z+FR1 + WL 2,Y2WL2Z+FR2 + WL 2,Y2WL2Z+FR3 + WL 2,Y2WL2Z+FR4 + WL 2,Y2WL2Z+FR5 + WL 2,Y2WL2Z+FR6 + WL 2,Y2WL2Z+FR7 + WL 2,Y2WL2Z+FR8 + WL 2,Y2WL2Z+FR9 + WL 2,Y2WL2Z+FR10 + WL 2,Y2WL2Z+FR11 + WL 2,Y2WL2Z+FR12 + WL 2,Y2WL2Z+FR13 + WL 2,Y2WL2Z+FR14 + WL 2,Y2WL2Z+FR15 + WL 2,Y2WL2Z+FR16 + WL 2,Y2WL2Z+FR17 + WL 2,Y2WL2Z+FR18 + WL 2,Y2WL2Z+FR19 + WL 2,Y2WL2Z+FR20 + .word ANI_REPEAT + + SUBR yok_walk4_f2_anim + WL 2,Y2WL8C+FR1 + WL 2,Y2WL8C+FR2 + WL 2,Y2WL8C+FR3 + WL 2,Y2WL8C+FR4 + WL 2,Y2WL8C+FR5 + WL 2,Y2WL8C+FR6 + WL 2,Y2WL8C+FR7 + WL 2,Y2WL8C+FR8 + WL 2,Y2WL8C+FR9 + WL 2,Y2WL8C+FR10 + WL 2,Y2WL8C+FR11 + WL 2,Y2WL8C+FR12 + WL 2,Y2WL8C+FR13 + WL 2,Y2WL8C+FR14 + WL 2,Y2WL8C+FR15 + WL 2,Y2WL8C+FR16 + WL 2,Y2WL8C+FR17 + WL 2,Y2WL8C+FR18 + WL 2,Y2WL8C+FR19 + WL 2,Y2WL8C+FR20 + WL 2,Y2WL8C+FR21 + WL 2,Y2WL8C+FR22 + .word ANI_REPEAT + + SUBR yok_walk5_f2_anim + WL 2,Y2WL1A+FR22 + WL 2,Y2WL1A+FR21 + WL 2,Y2WL1A+FR20 + WL 2,Y2WL1A+FR19 + WL 2,Y2WL1A+FR18 + WL 2,Y2WL1A+FR17 + WL 2,Y2WL1A+FR16 + WL 2,Y2WL1A+FR15 + WL 2,Y2WL1A+FR14 + WL 2,Y2WL1A+FR13 + WL 2,Y2WL1A+FR12 + WL 2,Y2WL1A+FR11 + WL 2,Y2WL1A+FR10 + WL 2,Y2WL1A+FR9 + WL 2,Y2WL1A+FR8 + WL 2,Y2WL1A+FR7 + WL 2,Y2WL1A+FR6 + WL 2,Y2WL1A+FR5 + WL 2,Y2WL1A+FR4 + WL 2,Y2WL1A+FR3 + WL 2,Y2WL1A+FR2 + WL 2,Y2WL1A+FR1 + .word ANI_REPEAT + + SUBR yok_walk6_f2_anim + WL 2,Y2WL2Z+FR20 + WL 2,Y2WL2Z+FR19 + WL 2,Y2WL2Z+FR18 + WL 2,Y2WL2Z+FR17 + WL 2,Y2WL2Z+FR16 + WL 2,Y2WL2Z+FR15 + WL 2,Y2WL2Z+FR14 + WL 2,Y2WL2Z+FR13 + WL 2,Y2WL2Z+FR12 + WL 2,Y2WL2Z+FR11 + WL 2,Y2WL2Z+FR10 + WL 2,Y2WL2Z+FR9 + WL 2,Y2WL2Z+FR8 + WL 2,Y2WL2Z+FR7 + WL 2,Y2WL2Z+FR6 + WL 2,Y2WL2Z+FR5 + WL 2,Y2WL2Z+FR4 + WL 2,Y2WL2Z+FR3 + WL 2,Y2WL2Z+FR2 + WL 2,Y2WL2Z+FR1 + .word ANI_REPEAT + + + SUBR yok_walk8_f2_anim + WL 2,Y2WL8C+FR22 + WL 2,Y2WL8C+FR21 + WL 2,Y2WL8C+FR20 + WL 2,Y2WL8C+FR19 + WL 2,Y2WL8C+FR18 + WL 2,Y2WL8C+FR17 + WL 2,Y2WL8C+FR16 + WL 2,Y2WL8C+FR15 + WL 2,Y2WL8C+FR14 + WL 2,Y2WL8C+FR13 + WL 2,Y2WL8C+FR12 + WL 2,Y2WL8C+FR11 + WL 2,Y2WL8C+FR10 + WL 2,Y2WL8C+FR9 + WL 2,Y2WL8C+FR8 + WL 2,Y2WL8C+FR7 + WL 2,Y2WL8C+FR6 + WL 2,Y2WL8C+FR5 + WL 2,Y2WL8C+FR4 + WL 2,Y2WL8C+FR3 + WL 2,Y2WL8C+FR2 + WL 2,Y2WL8C+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR yok_walk1_f4_anim + WL 2,Y4WL5A+FR24 + WL 2,Y4WL5A+FR23 + WL 2,Y4WL5A+FR22 + WL 2,Y4WL5A+FR21 + WL 2,Y4WL5A+FR20 + WL 2,Y4WL5A+FR19 + WL 2,Y4WL5A+FR18 + WL 2,Y4WL5A+FR17 + WL 2,Y4WL5A+FR16 + WL 2,Y4WL5A+FR15 + WL 2,Y4WL5A+FR14 + WL 2,Y4WL5A+FR13 + WL 2,Y4WL5A+FR12 + WL 2,Y4WL5A+FR11 + WL 2,Y4WL5A+FR10 + WL 2,Y4WL5A+FR9 + WL 2,Y4WL5A+FR8 + WL 2,Y4WL5A+FR7 + WL 2,Y4WL5A+FR6 + WL 2,Y4WL5A+FR5 + WL 2,Y4WL5A+FR4 + WL 2,Y4WL5A+FR3 + WL 2,Y4WL5A+FR2 + WL 2,Y4WL5A+FR1 + .word ANI_REPEAT + + SUBR yok_walk2_f4_anim + WL 2,Y4WL2C+FR1 + WL 2,Y4WL2C+FR2 + WL 2,Y4WL2C+FR3 + WL 2,Y4WL2C+FR4 + WL 2,Y4WL2C+FR5 + WL 2,Y4WL2C+FR6 + WL 2,Y4WL2C+FR7 + WL 2,Y4WL2C+FR8 + WL 2,Y4WL2C+FR9 + WL 2,Y4WL2C+FR10 + WL 2,Y4WL2C+FR11 + WL 2,Y4WL2C+FR12 + WL 2,Y4WL2C+FR13 + WL 2,Y4WL2C+FR14 + WL 2,Y4WL2C+FR15 + WL 2,Y4WL2C+FR16 + WL 2,Y4WL2C+FR17 + WL 2,Y4WL2C+FR18 + WL 2,Y4WL2C+FR19 + WL 2,Y4WL2C+FR20 + .word ANI_REPEAT + + SUBR yok_walk4_f4_anim + WL 2,Y4WL4B+FR1 + WL 2,Y4WL4B+FR2 + WL 2,Y4WL4B+FR3 + WL 2,Y4WL4B+FR4 + WL 2,Y4WL4B+FR5 + WL 2,Y4WL4B+FR6 + WL 2,Y4WL4B+FR7 + WL 2,Y4WL4B+FR8 + WL 2,Y4WL4B+FR9 + WL 2,Y4WL4B+FR10 + WL 2,Y4WL4B+FR11 + WL 2,Y4WL4B+FR12 + WL 2,Y4WL4B+FR13 + WL 2,Y4WL4B+FR14 + WL 2,Y4WL4B+FR15 + WL 2,Y4WL4B+FR16 + WL 2,Y4WL4B+FR17 + WL 2,Y4WL4B+FR18 + WL 2,Y4WL4B+FR19 + WL 2,Y4WL4B+FR20 + WL 2,Y4WL4B+FR21 + WL 2,Y4WL4B+FR22 + WL 2,Y4WL4B+FR23 + WL 2,Y4WL4B+FR24 + .word ANI_REPEAT + + SUBR yok_walk5_f4_anim + WL 2,Y4WL5A+FR1 + WL 2,Y4WL5A+FR2 + WL 2,Y4WL5A+FR3 + WL 2,Y4WL5A+FR4 + WL 2,Y4WL5A+FR5 + WL 2,Y4WL5A+FR6 + WL 2,Y4WL5A+FR7 + WL 2,Y4WL5A+FR8 + WL 2,Y4WL5A+FR9 + WL 2,Y4WL5A+FR10 + WL 2,Y4WL5A+FR11 + WL 2,Y4WL5A+FR12 + WL 2,Y4WL5A+FR13 + WL 2,Y4WL5A+FR14 + WL 2,Y4WL5A+FR15 + WL 2,Y4WL5A+FR16 + WL 2,Y4WL5A+FR17 + WL 2,Y4WL5A+FR18 + WL 2,Y4WL5A+FR19 + WL 2,Y4WL5A+FR20 + WL 2,Y4WL5A+FR21 + WL 2,Y4WL5A+FR22 + WL 2,Y4WL5A+FR23 + WL 2,Y4WL5A+FR24 + .word ANI_REPEAT + + SUBR yok_walk6_f4_anim + WL 2,Y4WL2C+FR20 + WL 2,Y4WL2C+FR19 + WL 2,Y4WL2C+FR18 + WL 2,Y4WL2C+FR17 + WL 2,Y4WL2C+FR16 + WL 2,Y4WL2C+FR15 + WL 2,Y4WL2C+FR14 + WL 2,Y4WL2C+FR13 + WL 2,Y4WL2C+FR12 + WL 2,Y4WL2C+FR11 + WL 2,Y4WL2C+FR10 + WL 2,Y4WL2C+FR9 + WL 2,Y4WL2C+FR8 + WL 2,Y4WL2C+FR7 + WL 2,Y4WL2C+FR6 + WL 2,Y4WL2C+FR5 + WL 2,Y4WL2C+FR4 + WL 2,Y4WL2C+FR3 + WL 2,Y4WL2C+FR2 + WL 2,Y4WL2C+FR1 + .word ANI_REPEAT + + SUBR yok_walk8_f4_anim + WL 2,Y4WL4B+FR24 + WL 2,Y4WL4B+FR23 + WL 2,Y4WL4B+FR22 + WL 2,Y4WL4B+FR21 + WL 2,Y4WL4B+FR20 + WL 2,Y4WL4B+FR19 + WL 2,Y4WL4B+FR18 + WL 2,Y4WL4B+FR17 + WL 2,Y4WL4B+FR16 + WL 2,Y4WL4B+FR15 + WL 2,Y4WL4B+FR14 + WL 2,Y4WL4B+FR13 + WL 2,Y4WL4B+FR12 + WL 2,Y4WL4B+FR11 + WL 2,Y4WL4B+FR10 + WL 2,Y4WL4B+FR9 + WL 2,Y4WL4B+FR8 + WL 2,Y4WL4B+FR7 + WL 2,Y4WL4B+FR6 + WL 2,Y4WL4B+FR5 + WL 2,Y4WL4B+FR4 + WL 2,Y4WL4B+FR3 + WL 2,Y4WL4B+FR2 + WL 2,Y4WL4B+FR1 + .word ANI_REPEAT + +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR yok_2_to_4_turn_anim + SUBR yok_8_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TT5Z+FR2 + WL 1,Y1TT5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_2_turn_anim + SUBR yok_6_to_8_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TT5Z+FR3 + WL 1,Y1TT5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_6_turn_anim + SUBR yok_6_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TT5Z+FR4 + .word ANI_XFLIP + WL 1,Y1TT5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_2_to_8_turn_anim + SUBR yok_8_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TT5Z+FR1 + .word ANI_XFLIP + WL 1,Y1TT5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_8_turn_anim + SUBR yok_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TT5Z+FR3 + WL 1,Y1TT5Z+FR2 + WL 1,Y1TT5Z+FR1 + .word ANI_XFLIP + WL 1,Y1TT5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_2_to_6_turn_anim + SUBR yok_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TT5Z+FR2 + WL 1,Y1TT5Z+FR3 + WL 1,Y1TT5Z+FR4 + .word ANI_XFLIP + WL 1,Y1TT5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + + SUBR yok_2_to_4_turn2_anim + SUBR yok_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TR5Z+FR4 + .word ANI_SETFACING + WL 1,Y1TR5Z+FR5 + WL 1,Y1TR5Z+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_2_turn2_anim + SUBR yok_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TR5Z+FR6 + .word ANI_SETFACING + WL 1,Y1TR5Z+FR5 + WL 1,Y1TR5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_6_turn2_anim + SUBR yok_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TR5Z+FR9 + .word ANI_SETFACING + WL 1,Y1TR5Z+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_2_to_8_turn2_anim + SUBR yok_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TR5Z+FR1 + .word ANI_SETFACING + WL 1,Y1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_8_turn2_anim + SUBR yok_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TR5Z+FR9 + .word ANI_SETFACING + WL 1,Y1TR5Z+FR9 + WL 1,Y1TR5Z+FR8 + WL 1,Y1TR5Z+FR6 + .word ANI_SETFACING + WL 1,Y1TR5Z+FR5 + WL 1,Y1TR5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_2_to_6_turn2_anim + SUBR yok_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 1,Y1TR5Z+FR4 + .word ANI_SETFACING + WL 1,Y1TR5Z+FR5 + WL 1,Y1TR5Z+FR6 + WL 1,Y1TR5Z+FR8 + WL 1,Y1TR5Z+FR9 + .word ANI_SETFACING + WL 1,Y1TR5Z+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* RUNNING IN #3 + +;Jason, put in the correct (more angled) bounce off of ropes for Yoko. +;Also, make run better! Longer strides? Shake screen? Animate slower? + + SUBR yok_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR yok_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + +#lp1 + WL 3,Y3RN3C+FR1 + WL 3,Y3RN3C+FR2 + WL 3,Y3RN3C+FR3 + WL 3,Y3RN3C+FR4 + WL 3,Y3RN3C+FR5 + + WL ANI_CODE,SMALL_RUN + WL ANI_SET_YVEL,14000h + .word ANI_SHAKER,8 +#run2 + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + WL 3,Y3RN3C+FR6 + WL 3,Y3RN3C+FR7 + WL 3,Y3RN3C+FR8 + WL 3,Y3RN3C+FR9 + WL 3,Y3RN3C+FR10 + WL 3,Y3RN3C+FR11 + + WL ANI_CODE,SMALL_RUN + WL ANI_SET_YVEL,14000h + .word ANI_SHAKER,8 + + WL 3,Y3RN3C+FR12 + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR yok_bounce_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,Y3BO3C+FR1 + + WL 2,Y3BO3C+FR2 + .word ANI_BOUNCEROPE,0 + WL ANI_CODE,SMALL_RUN + WL 1,Y3BO3C+FR2 + + .word ANI_SHAKER,10 + + WL 2,Y3BO3C+FR3 + .word ANI_BOUNCEROPE,1 + WL 1,Y3BO3C+FR3 + + WL 3,Y3BO3C+FR4 + .word ANI_BOUNCEROPE,2 + WL 1,Y3BO3C+FR4 + + .word ANI_ZEROVELS + + WL 4,Y3BO3C+FR5 + .word ANI_BOUNCEROPE,3 + WL 1,Y3BO3C+FR5 + WL 5,Y3BO3C+FR6 + .word ANI_BOUNCEROPE,4 + WL 1,Y3BO3C+FR6 + WL 3,Y3BO3C+FR7 + .word ANI_BOUNCEROPE,0 + WL 1,Y3BO3C+FR7 + WL 2,Y3BO3C+FR8 + .word ANI_BOUNCEROPE,-1 + .word ANI_SHAKER,10 + + WL ANI_CODE,SMALL_RUN + WL 1,Y3BO3C+FR8 + WL 3,Y3BO3C+FR9 + WL 3,Y3BO3C+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR yok_frnk_recover_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 4,Y1TT5Z+FR3 + WL ANI_CHANGEANIM,yok_stand4_anim + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/YOKSEQ2.ASM b/BACKUP/YOKSEQ2.ASM new file mode 100644 index 0000000..e473c69 --- /dev/null +++ b/BACKUP/YOKSEQ2.ASM @@ -0,0 +1,1717 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "yokseq2.asm" + .title "Yokozuna animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "yokoimg.h" + .include "ring.equ" + + .include "display.equ" + .include "ring.equ" + .include "damage.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + ;BAM BAM + .ref B3RN3A,B4YR3A + + ;DOINK + .ref D3RN3B,D4YR3B + + ;BRET + .ref H3RN3A,H4YR3A + + ;LEX + .ref L3RN3B,L4YR3B + + ;RAZOR + .ref R3RN3D,R4YR3A + + ;SHAWN + .ref S3RN3A,S4YR3A + + ;TAKER + .ref U3RN3A + + ;YOKO + .ref yok_faceup_getup2_anim + .ref U4YR3B + + ;MISC + .ref get_opp_process,start_run_anim,CALL_MISSES,start_run_flung + .ref SET_DIR_FACE,HIT_THE_MAT,no_bk_xvel + + .ref SET_DIR_FACE,HIT_THE_MAT,no_bk_xvel,check_xvel + .REF DO_CROWD_CHEER + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* NORMAL #2 PUNCH + + SUBR yok_2_punch_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,Y2PU2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,9 + WL 3,Y2PU2A+FR2 + WL 3,Y2PU2A+FR3 + WL 3,Y2PU2A+FR4 + +;Knock him down from a punch for testing hair pickup +;Jason, this is cool to knock opponents down with just a punch! +;The little hop he does upon contact is also cool! +;We need to allow this from Yoko under some circumstances! +;Perhaps randomize between the two attack modes?? +; .word ANI_ATTACK_ON,AMODE_PUNCH,50,90,42,12 + .word ANI_ATTACK_ON,AMODE_FLYKICK,50,90,42,12 + + + WL 3,Y2PU2A+FR5 + .word ANI_ATTACK_OFF + + WL 3,Y2PU2A+FR6 + WL 3,Y2PU2A+FR7 + WL 3,Y2PU2A+FR8 + WL 3,Y2PU2A+FR9 + WL 3,Y2PU2A+FR10 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #4 PUNCH + + SUBR yok_4_punch_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WL 3,Y4PU4B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_PUNCH,9 + WL 3,Y4PU4B+FR2 + WL 3,Y4PU4B+FR3 + WL 3,Y4PU4B+FR4 + + .word ANI_ATTACK_ON,AMODE_PUNCH,42,77,36,19 + WL 3,Y4PU4B+FR5 + .word ANI_ATTACK_OFF + + WL 3,Y4PU4B+FR6 + WL 3,Y4PU4B+FR7 + WL 3,Y4PU4B+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 PUSH + + SUBR yok_2_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,12 + WL 3,Y2PS3A+FR2 + WL 3,Y2PS3A+FR3 + WL 3,Y2PS3A+FR4 + WL 3,Y2PS3A+FR5 + .word ANI_ATTACK_ON, AMODE_PUSH,38,81,49,16 + WL 3,Y2PS3A+FR6 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-50000h,#no_hit ;range,vel,addr + WL 15,Y2PS3A+FR6 +#no_hit + WL 15,Y2PS3A+FR6 + WL 3,Y2PS3A+FR7 + WL 3,Y2PS3A+FR8 + WL 3,Y2PS3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 PUSH + + SUBR yok_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUSH,12 + WL 3,Y4PS3A+FR2 + WL 3,Y4PS3A+FR3 + WL 3,Y4PS3A+FR4 + WL 3,Y4PS3A+FR5 + .word ANI_ATTACK_ON, AMODE_PUSH,36,86,45,16 + WL 3,Y4PS3A+FR6 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-50000h,#no_hit ;range,vel,addr + WL 15,Y4PS3A+FR6 +#no_hit + WL 15,Y4PS3A+FR6 + WL 3,Y4PS3A+FR7 + WL 3,Y4PS3A+FR8 + WL 3,Y4PS3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 ELBOW DROP + +#yoff equ 37 + + SUBR yok_2_lbowdrop_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,Y2PF2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_LBDROP,7 + WL 4,Y2PF2A+FR2 + WL 3,Y2PF2A+FR3 + + ;skip the leap if simply falling down will do. + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,4,4,-40,34,31,50 + WL 1,Y2PF2A+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#skip_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,112,96,90000h,TGT_USER,21,0+#yoff,-30 + WL ANI_GOTO,#do_leapat + +#skip_leapat + WL ANI_SET_YVEL,30000h +#do_leapat + WL 4,Y2PF2A+FR4 + .word ANI_OFFSET,0,#yoff,0 + WL 4,Y2PF2A+FR5 + WL 4,Y2PF2A+FR6 + WL 4,Y2PF2A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,0,0,-40,42,39,50 + WL 4,Y2PF2A+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#hit + + WL ANI_CODE,CALL_MISSES +#hit + WL 12,Y2PF2A+FR9 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#***************************************************************************** +* +* #4 ELBOW DROP + +#yoff equ 34 + + SUBR yok_4_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,Y3PF3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_LBDROP,7 + WL 4,Y3PF3A+FR3 + WL 3,Y3PF3A+FR4 + + ;skip the leap if it's not needed. + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,14,4,-10,32,30,50 + WL 1,Y3PF3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#skip_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,112,96,90000h,TGT_USER,33,0+#yoff,30 + WL ANI_GOTO,#do_leapat + +#skip_leapat + WL ANI_SET_YVEL,30000h +#do_leapat + .word ANI_OFFSET,0,#yoff,0 + WL 4,Y3PF3A+FR5 + WL 4,Y3PF3A+FR6 + WL 4,Y3PF3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,10,0,-10,40,38,50 + WL 4,Y3PF3A+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#hit + + WL ANI_CODE,CALL_MISSES +#hit + WL 12,Y3PF3A+FR9 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#***************************************************************************** +* +* #2 HEAD BUTT + +;TODO (JS) Put something here! (yoko #2 headbutt) + + SUBR yok_2_butt_anim + + .word ANI_END + +#***************************************************************************** +* +* #4 HEAD BUTT + +;TODO (JS) Put something here! (yoko #4 headbutt) + + SUBR yok_4_butt_anim + + .word ANI_END + +#***************************************************************************** +* +* NORMAL #2 KICK + + SUBR yok_2_kick_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + + WL 2,Y2KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,6 + WL 2,Y4KM3A+FR2 + WL 2,Y4KM3A+FR3 + WL 2,Y4KM3A+FR4 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,30000h + + .word ANI_ATTACK_ON, AMODE_KICK,35,62,56,34 + WL 8,Y4KM3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 10,Y4KM3A+FR5 +#no_hit + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + + WL 2,Y4KM3A+FR5 + WL 2,Y4KM3A+FR6 + WL 2,Y4KM3A+FR7 + WL 2,Y4KM3A+FR8 + WL 2,Y4KM3A+FR9 + WL 2,Y2KM3A+FR10 + WL 2,Y2KM3A+FR11 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #4 KICK + + SUBR yok_4_kick_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,Y4KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KICK,6 + WL 2,Y4KM3A+FR2 + WL 2,Y4KM3A+FR3 + WL 2,Y4KM3A+FR4 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,30000h + + .word ANI_ATTACK_ON, AMODE_KICK,35,62,56,34 + WL 8,Y4KM3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-40000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 10,Y4KM3A+FR5 + +#no_hit + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL 2,Y4KM3A+FR5 + WL 2,Y4KM3A+FR6 + WL 2,Y4KM3A+FR7 + WL 2,Y4KM3A+FR8 + WL 2,Y4KM3A+FR9 + WL 2,Y4KM3A+FR10 + WL 2,Y4KM3A+FR11 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR yok_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,Y2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_STOMP,3 + WL 3,Y2MP2A+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,4,-5,-40,38,43,50 + WL 1,Y2MP2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL 4,Y2MP2A+FR3 + WL 4,Y2MP2A+FR4 + WL 4,Y2MP2A+FR5 + WL 4,Y2MP2A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,4,-5,-40,38,43,50 + WL 4,Y2MP2A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + .word ANI_SHAKER,25 + .word ANI_SHAKEALL,1 + WL 4,Y2MP2A+FR8 + WL 4,Y2MP2A+FR9 + WL 4,Y2MP2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,112,96,90000h,TGT_USER,21,0,-40 + + .word ANI_STARTATTACK,AT_STOMP,15 + WL 3,Y2MP2A+FR3 + WL 3,Y2MP2A+FR4 + WL 3,Y2MP2A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WL 3,Y2MP2A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,4,-5,-40,38,43,50 + WL 4,Y2MP2A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 4,Y2MP2A+FR8 + WL 4,Y2MP2A+FR9 + WL 4,Y2MP2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + + SUBR yok_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,Y4MP4A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_STOMP,3 + WL 3,Y4MP4A+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,15,-7,-10,40,36,50 + WL 1,Y4MP4A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL 4,Y4MP4A+FR3 + WL 4,Y4MP4A+FR4 + WL 4,Y4MP4A+FR5 + WL 4,Y4MP4A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,15,-7,-10,40,36,50 + WL 4,Y4MP4A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + .word ANI_SHAKER,25 + .word ANI_SHAKEALL,1 + WL 4,Y4MP4A+FR8 + WL 4,Y4MP4A+FR9 + WL 4,Y4MP4A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,112,96,90000h,TGT_USER,33,0,40 + + .word ANI_STARTATTACK,AT_STOMP,16 + WL 3,Y4MP4A+FR3 + WL 3,Y4MP4A+FR4 + WL 3,Y4MP4A+FR5 + WL 3,Y4MP4A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,15,-7,-10,40,36,50 + WL 4,Y4MP4A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 4,Y4MP4A+FR8 + WL 4,Y4MP4A+FR9 + WL 4,Y4MP4A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #3 FLYING BUTT-DROP (ouch) + +#yoff equ 65 + + SUBR yok_3_butt_drop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h +; .word ANI_ZEROVELS + + WL 3,Y3JK3A+FR1 + WL 3,Y3JK3A+FR2 + WL 3,Y3JK3A+FR3 + + ;take off + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,999,112,96,90000h,TGT_USER,0,0+#yoff,-10 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,30 + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL 4,Y3JK3A+FR4 + .word ANI_OFFSET,0,#yoff,0 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-22,-10-10,-30,54,36,50 + WWL ANI_WAITHITOPP,30,Y3JK3A+FR5 + .word ANI_ATTACK_OFF + + .word ANI_ZEROVELS + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFNOTSTATUS,#miss + +#hit + ;bounce off the guy + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,1C000h,AM_ABS + + ;this part should take around 12 ticks + WL 4,Y3JK3A+FR6 + WL 1,Y3JK3A+FR5 + .word ANI_WAITHITGND + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 4,Y3JK3A+FR6 + WL 4,Y3JK3A+FR7 + WL 4,Y3JK3A+FR8 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#miss + WL ANI_CODE,CALL_MISSES + WL 16,Y3JK3A+FR6 + .word ANI_WAITHITGND + WL 4,Y3JK3A+FR7 + WL 4,Y3JK3A+FR8 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#***************************************************************************** +* +* #2 KNEE + + SUBR yok_2_knee_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,Y4NM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KNEE,6 + WL 3,Y4NM3B+FR2 + WL 3,Y4NM3B+FR3 + .word ANI_ATTACK_ON, AMODE_KNEE,34,58,26,32 + WL 3,Y4NM3B+FR4 + .word ANI_ATTACK_OFF + WL 6,Y4NM3B+FR4 + WL 3,Y4NM3B+FR5 + WL 3,Y4NM3B+FR6 + WL 3,Y2NM3A+FR7 + + WL 3,Y2NM3A+FR8 + WL 3,Y2NM3A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 KNEE + + SUBR yok_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,Y4NM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_KNEE,6 + WL 3,Y4NM3B+FR2 + WL 3,Y4NM3B+FR3 + .word ANI_ATTACK_ON, AMODE_KNEE,34,58,26,32 + WL 3,Y4NM3B+FR4 + .word ANI_ATTACK_OFF + WL 6,Y4NM3B+FR4 + WL 3,Y4NM3B+FR5 + WL 3,Y4NM3B+FR6 + WL 3,Y4NM3B+FR7 + WL 3,Y4NM3B+FR8 + WL 3,Y4NM3B+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +;#***************************************************************************** +;* +;* #3 FLYING KICK +; +;#yoff1 equ 40 +; +; SUBR yok_flying_kick_anim +; +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_SETSPEED,100h +; +; WL 3,D3DC3C+FR1 +; +; WL ANI_CODE,get_leap +; WL ANI_IFSTATUS,#no_xvel +; +;; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 21,999,140,65,90000h,TGT_HEAD,30,100,0 +; +; WL ANI_GOTO,#cont +; +;#no_xvel +; .word ANI_ZERO_XZVELS +; WL ANI_SET_YVEL,64000h +;#cont +; WL 3,D3DC3C+FR2 +; +; .word ANI_OFFSET,0,#yoff1,0 ;x,y,z +; WL 4,D3DC3C+FR3 +; WL 7,D3DC3C+FR4 +; +; .word ANI_CLR_STATUS +; +; .word ANI_ATTACK_ON, AMODE_FLYKICK,53,23,27,29 ;mode,x,y,w,h +; WL 3,D3DC3C+FR5 +; .word ANI_ATTACK_OFF +; WL 4,D3DC3C+FR6 +; +; WL 3,D3DC3C+FR7 +; WL 3,D3DC3C+FR8 +; +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS +; +; +; WL ANI_IFSTATUS,#got +;;Missed him +; WL 4,D3DC3C+FR9 +; .word ANI_BOUNCE,3 +; .word ANI_SOUND,bounce_l1 +; WL 4,D3DC3C+FR9 +; .word ANI_WAITHITGND +; WL 2,D3DC3C+FR9 +; +;#got +; WL 2,D3DC3C+FR9 +;#cont2 +; .word ANI_SOUND,bounce_l1 +; WL 2,D3DC3C+FR9 +; +; WL 4,D3DC3C+FR9 +; WL 4,D3DC3C+FR10 +; +; +; .word ANI_XFLIP +; .word ANI_OFFSET,5,0,0 ;x,y,z +; +; WL 6,D2GD2A+FR4 +; WL 6,D2GD2A+FR6 +; WL 4,D2GD2A+FR7 +; WL 4,D2GD2A+FR9 +; +; .word ANI_FACEUP +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; + + +;Keep this around for now... 11/9/94 +;#***************************************************************************** +;* +;* #2 KARATE TYPE KICK +; +; SUBR yok_2_karatekick_anim +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; +; .word ANI_SETSPEED,100h +; +; WL 3,Y2KB3A+FR1 +; WL 3,Y2KB3A+FR2 +; WL 3,Y2KB3A+FR3 +; WL 3,Y2KB3A+FR4 +; WL 3,Y2KB3A+FR5 +; +; .word ANI_ATTACK_ON, AMODE_KICK,11,62,71,19 ;mode,x,y,w,h +; WL 3,Y2KB3A+FR6 +; .word ANI_ATTACK_OFF +; +; WL 3,Y2KB3A+FR7 +; WL 3,Y2KB3A+FR8 +; WL 3,Y2KB3A+FR9 +; WL 3,Y2KB3A+FR10 +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END +; +;#***************************************************************************** +;* +;* #4 KARATE TYPE KICK +; +; SUBR yok_4_karatekick_anim +; .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; +; .word ANI_SETSPEED,100h +; +; WL 3,Y4KB3A+FR1 +; WL 3,Y4KB3A+FR2 +; WL 3,Y4KB3A+FR3 +; WL 3,Y4KB3A+FR4 +; WL 3,Y4KB3A+FR5 +; +; .word ANI_ATTACK_ON, AMODE_KICK,19,62,77,18 ;mode,x,y,w,h +; WL 3,Y4KB3A+FR6 +; .word ANI_ATTACK_OFF +; +; WL 3,Y4KB3A+FR7 +; WL 3,Y4KB3A+FR8 +; WL 3,Y4KB3A+FR9 +; WL 3,Y4KB3A+FR10 +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + +#***************************************************************************** +* +* #2 GUT PUSH + + SUBR yok_2_gut_push_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FRICTION,4000h + WLW ANI_SET_XVEL,60000h,1 +; WL 3,Y2PS3B+FR1 + + .word ANI_ATTACK_ON, AMODE_PUSH,-12,31,43,63 ;mode,x,y,w,h + WL 3,Y2PS3B+FR2 +; WL 3,Y2PS3B+FR3 +; WL 3,Y2PS3B+FR4 +; WL 18,Y2PS3B+FR5 + .word ANI_ATTACK_OFF + +; WL 3,Y2PS3B+FR6 + WL 3,Y2PS3B+FR7 +; WL 3,Y2PS3B+FR8 + WL 3,Y2PS3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 GUT PUSH + + SUBR yok_4_gut_push_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FRICTION,4000h + WLW ANI_SET_XVEL,60000h,1 + WL 3,Y4PS3B+FR1 + + .word ANI_ATTACK_ON, AMODE_PUSH,-12,31,43,63 ;mode,x,y,w,h + WL 3,Y4PS3B+FR2 + WL 3,Y4PS3B+FR3 + WL 3,Y4PS3B+FR4 + WL 3,Y4PS3B+FR5 + WL 18,Y4PS3B+FR6 + .word ANI_ATTACK_OFF + + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 + WL 3,Y4PS3B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR yok_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SHAKECORNER + + .word ANI_OFFSET,2,3,0 ;6,7,0, spread out over 3 + WL 4,Y2CT2Z+FR1 + .word ANI_OFFSET,2,2,0 + WL 4,Y2CT2Z+FR2 + .word ANI_OFFSET,2,2,0 + WL 4,Y2CT2Z+FR3 + WL 4,Y2CT2Z+FR4 + WL 4,Y2CT2Z+FR5 + WL 4,Y2CT2Z+FR6 + WL 4,Y2CT2Z+FR7 + WL 4,Y2CT2Z+FR8 + + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + +#repeat + WL 20,Y2CT2Z+FR8 + WL ANI_GOTO,#repeat + + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR yok_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SHAKECORNER + + WL 4,Y2CT2Z+FR8 + WL 4,Y2CT2Z+FR7 + WL 4,Y2CT2Z+FR6 + WL 4,Y2CT2Z+FR5 + WL 4,Y2CT2Z+FR4 + WL 4,Y2CT2Z+FR3 + .word ANI_OFFSET,-2,-2,0 + WL 4,Y2CT2Z+FR2 + .word ANI_OFFSET,-2,-2,0 + WL 4,Y2CT2Z+FR1 + .word ANI_OFFSET,-2,-3,0 + + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* BIG NASTY BUTT-DROP OFF THE TURNBUCKLE + + SUBR yok_tbukl_buttdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_OFFSET,-20,0,0 + WL 4,Y2ZZ2X+FR1 + .word ANI_OFFSET,0,60,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 36,190,190,190,90000h,TGT_GROIN,0,0,-30 + WL ANI_CODE,check_xvel + + .word ANI_STARTATTACK,AT_BUTTSTOMP,36 + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + + WL 4,Y2ZZ2X+FR2 + WL 4,Y2ZZ2X+FR3 + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-30,15,-30,73,36,80 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-30,25,-30,73,36,80 +#opp_onground + WL 4,Y2ZZ2X+FR4 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + + ;missed + WL ANI_CODE,CALL_MISSES + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,2 + .word ANI_BOUNCE,5 + WL 4,Y2ZZ2X+FR5 + .word ANI_WAITHITGND + .word ANI_SHAKER,20 + WL ANI_CODE,SMALL_BOUNCE + WL ANI_GOTO,#common + +#hit + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,50 + .word ANI_SHAKEALL,3 + .word ANI_SOUND,0C1h ;cool plywood crash + +#common + WL 4,Y2ZZ2X+FR5 + WL 4,Y2ZZ2X+FR6 + WL 12,Y2ZZ2X+FR7 + + .word ANI_XFLIP + + WL 4,Y3GU2A+FR3 + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR yok_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR yok_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont +; WL 4,Y4GF3B+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + .word ANI_STARTATTACK,AT_GRBFLNG,5 + + WL 4,Y4GF3B+FR2 + +; .word ANI_IFOPP,W_BAMBAM,-1 +; WL ANI_IFSTATUS,#missed + + .word ANI_ATTACK_ON, AMODE_PUPPET,33,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,Y4GF3B+FR3 +; WL 4,Y4GF3B+FR3 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +;got him + + +; out of control time for fling? + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,Y4GF3B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,6,Y4GF3B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,5,Y4GF3B+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,Y4GF3B+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,5,Y4GF3B+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,5,Y4GF3B+FR8,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 16,Y4GF3B+FR9 + WL 4,Y4GF3B+FR9 + .word ANI_OFFSET,-10,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missedb + WL 10,Y4GF3B+FR3 +#missed + WL ANI_CODE,CALL_MISSES + WL 6,Y4GF3B+FR3 + WL 4,Y4GF3B+FR2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4YR3A+FR1,50,1,1 + LWWW H4YR3A+FR2,51,0,1 + LWWW H4YR3A+FR3,45,-2,1 + LWWW H4YR3A+FR5,33,4,1 + LWWW H3RN3A+FR1,-6,6,0 + LWWW H3RN3A+FR2,6,13,0 +#Razor + LWWW R4YR3A+FR1,38,10,0 + LWWW R4YR3A+FR2,28,10,0 + LWWW R4YR3A+FR3,13,0,0 + LWWW R4YR3A+FR4,-4,4,0 + LWWW R3RN3D+FR10,-8,16,0 + LWWW R3RN3D+FR11,8,22,0 +#Taker + LWWW U4YR3B+FR2,35,11,0 + LWWW U4YR3B+FR3,42,6,0 + LWWW U4YR3B+FR4,32,10,0 + LWWW U4YR3B+FR5,19,14,0 + LWWW U3RN3A+FR2,-12,18,0 + LWWW U3RN3A+FR2,-20,22,0 +#Yokozuna + LWWW Y4YR3A+FR1,54,5,1 + LWWW Y4YR3A+FR4,37,4,1 + LWWW Y4YR3A+FR5,27,1,1 + LWWW Y4YR3A+FR7,-4,-3,1 + LWWW Y3RN3C+FR7,-5,16,0 + LWWW Y3RN3C+FR8,15,19,0 +#Shawn + LWWW S4YR3A+FR2,31,-1,1 + LWWW S4YR3A+FR3,50,-12,1 + LWWW S4YR3A+FR5,14,0,1 + LWWW S4YR3A+FR6,6,2,1 + LWWW S3RN3A+FR2,-6,14,0 + LWWW S3RN3A+FR3,7,19,0 +#BamBam + LWWW B4YR3A+FR3,44,6,0 + LWWW B4YR3A+FR4,50,-1,0 + LWWW B4YR3A+FR5,49,-2,0 + LWWW B4YR3A+FR7,-15,-1,0 + LWWW B3RN3A+FR1,-16,17,0 + LWWW B3RN3A+FR2,-5,23,0 +#Doink + LWWW D4YR3B+FR1,51,6,1 + LWWW D4YR3B+FR2,50,7,1 + LWWW D4YR3B+FR3,34,4,1 + LWWW D4YR3B+FR4,10,9,1 + LWWW D3RN3B+FR3,-1,18,0 + LWWW D3RN3B+FR4,1,23,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,53,8,1 + LWWW L4YR3B+FR2,40,0,1 + LWWW L4YR3B+FR3,15,0,1 + LWWW L4YR3B+FR4,-27,1,1 + LWWW L3RN3B+FR2,-4,16,0 + LWWW L3RN3B+FR3,17,18,0 + + +#strt_run_tbl + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + + +#***************************************************************************** +* + + SUBR yok_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + WL 2,Y3GU4A+FR13 + WL 2,Y3GU2A+FR12 + WL 2,Y3GU2A+FR7 + WL ANI_SET_YVEL,39000h + + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + WL 4,Y3CP3B+FR5 + WL 4,Y3CP3B+FR6 + WL 4,Y3CP3B+FR7 + WL 4,Y3CP3B+FR8 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + WL 4,Y3RL1A+FR1 + .word ANI_WAITROLL + .ref yok_faceup_getup_anim + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#***************************************************************************** + SUBR yok_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WLW ANI_SET_XVEL,2000h,AM_FACE_REL + + WL 4,Y4CR3B+FR1 + .word ANI_OFFSET,5,0,0 + WL 4,Y4CR3B+FR2 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,8,0,0 ;***** + WL 4,Y4CR3B+FR3 + .word ANI_OFFSET,8,0,0 ;***** + WL 4,Y4CR3B+FR4 + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + .word ANI_OFFSET,5,0,0 ;***** + WL 4,Y4CR3B+FR5 + .word ANI_OFFSET,7,0,0 ;***** + WL 4,Y4CR3B+FR6 + .word ANI_OFFSET,12,0,0 ;***** + WL 4,Y4CR3B+FR8 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,12,0,0 ;***** + WL 4,Y4CR3B+FR9 + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + .word ANI_OFFSET,10,0,0 ;***** + WL 4,Y4CR3B+FR10 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,10,-3,0 + .word ANI_ZEROVELS + WL 4,Y4CR3B+FR11 + WL 4,Y4CR3B+FR12 + + ;now jump off... + WL 4,Y4JD4A+FR1 ;D4FM4A+FR1 + WL 4,Y4JD4A+FR2 + WL 3,Y4JD4A+FR3 + + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,Y4JD4A+FR4 + .word ANI_WAITHITGND + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 3,Y4JD4A+FR6 + WL 3,Y4JD4A+FR7 + WL 6,Y4JD4A+FR8 + WL 3,Y4JD4A+FR9 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR yok_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in + WL 4,Y4JD4A+FR1 + WL 4,Y4JD4A+FR2 + + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,1ch,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 4,Y4JD4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + WL 4,Y4JD4A+FR6 + WL 3,Y4JD4A+FR7 + WL 3,Y4JD4A+FR8 + + WL ANI_CODE,#set_z + WLW ANI_SET_XVEL,4000h,AM_FACE_REL + + ;climb through + WL 3,Y4CR3B+FR1 + .word ANI_OFFSET,10,0,0 ;***** + WL 3,Y4CR3B+FR2 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,10,0,0 ;***** + WL 3,Y4CR3B+FR3 + .word ANI_OFFSET,10,0,0 ;***** + WL 3,Y4CR3B+FR4 + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + + .word ANI_OFFSET,0,0,0 ;***** + WL 3,Y4CR3B+FR5 + .word ANI_OFFSET,0,0,0 ;***** + WL 3,Y4CR3B+FR6 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_OFFSET,10,0,0 ;***** + WL 3,Y4CR3B+FR8 + .word ANI_BENDROPE,3 + .word ANI_OFFSET,10,0,0 ;***** + WL 3,Y4CR3B+FR9 + .word ANI_OFFSET,10,0,0 ;***** + WL 3,Y4CR3B+FR10 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,6,0,0 + WL 3,Y4CR3B+FR11 + .word ANI_OFFSET,8,0,0 + WL 3,Y4CR3B+FR12 + .word ANI_ZEROVELS + + WL ANI_CODE,clr_climb + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets +#set_z + +clr_climb + + clr a0 + move a0,*a13(CLIMBING_THRU) ;1=Climbing thru ropes flag + rets + +#***************************************************************************** + SUBR yok_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL ANI_IFSTATUS,#dir4 + +;Facing #2, spin first! + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR3 +#dir4 + WL 4,Y3GU2A+FR14 + WL 4,Y3GU2A+FR13 + WL 4,Y3GU2A+FR12 + WL 4,Y3GU2A+FR11 + WL 4,Y3GU2A+FR10 + WL 4,Y3GU2A+FR9 + WL 4,Y3GU2A+FR8 + WL 4,Y3GU2A+FR7 + + ;roll over once + WLW ANI_SET_ZVEL,90000h,AM_ABS + + WL 3,Y3RL1A+FR6 + WL 3,Y3RL1A+FR7 + WL 3,Y3RL1A+FR8 + WL 3,Y3RL1A+FR9 + WL 3,Y3RL1A+FR10 + WL 3,Y3RL1A+FR1 + WL 3,Y3RL1A+FR2 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + + ;climb through + .word ANI_OFFSET,0,-37h,0 ;x,y,z + .WORD ANI_XFLIP + WL 3,Y2KB3A+FR7 + WL 3,Y2KB3A+FR6 + WL 3,Y2KB3A+FR5 + .WORD ANI_XFLIP + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#***************************************************************************** + + SUBR yok_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .WORD ANI_XFLIP + WL 3,Y2KB3A+FR5 + WL 3,Y2KB3A+FR6 + WL 3,Y2KB3A+FR7 + .WORD ANI_XFLIP + .word ANI_OFFSET,0,37h,-60 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,Y3RL1A+FR1 + WL 3,Y3RL1A+FR10 + WL 3,Y3RL1A+FR9 + WL 3,Y3RL1A+FR8 + WL 3,Y3RL1A+FR7 + WL 3,Y3RL1A+FR6 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 4,Y3GU2A+FR7 + WL 4,Y3GU2A+FR8 + WL 4,Y3GU2A+FR9 + WL 4,Y3GU2A+FR10 + WL 4,Y3GU2A+FR11 + WL 4,Y3GU2A+FR12 + WL 4,Y3GU2A+FR13 + WL 4,Y3GU2A+FR14 + + WL ANI_CODE,clr_climb + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#***************************************************************************** + + SUBR yok_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR3 +#dir4 + WL 4,Y3GU2A+FR14 + WL 4,Y3GU2A+FR13 + WL 4,Y3GU2A+FR12 + WL 4,Y3GU2A+FR11 + WL 4,Y3GU2A+FR10 + WL 4,Y3GU2A+FR9 + WL 4,Y3GU2A+FR8 + WL 4,Y3GU2A+FR7 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,Y3RL1A+FR6 + WL 3,Y3RL1A+FR5 + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP+MODE_NOSHADOW + WL 3,Y3RL1A+FR4 + WL 3,Y3RL1A+FR3 + WL 3,Y3RL1A+FR2 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + .WORD ANI_XFLIP + WL 3,Y4KB3A+FR6 + WL 3,Y4KB3A+FR7 + WL 3,Y4KB3A+FR8 + .WORD ANI_XFLIP + + .word ANI_ZERO_XZVELS + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR yok_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_NOCONFINE+MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .WORD ANI_XFLIP + WL 3,Y4KB3A+FR8 + WL 3,Y4KB3A+FR7 + WL 3,Y4KB3A+FR6 + .WORD ANI_XFLIP + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,Y3RL1A+FR3 + WL 3,Y3RL1A+FR4 + WL 3,Y3RL1A+FR5 + WL 3,Y3RL1A+FR6 + + .word ANI_ZEROVELS + + ;get up + WL 4,Y3GU2A+FR7 + WL 4,Y3GU2A+FR8 + WL 4,Y3GU2A+FR9 + WL 4,Y3GU2A+FR10 + WL 4,Y3GU2A+FR11 + WL 4,Y3GU2A+FR12 + WL 4,Y3GU2A+FR13 + WL 4,Y3GU2A+FR14 + + WL ANI_CODE,clr_climb + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#set_zvel2 + movi 52000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR yok_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR yok_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont + WL 4,Y3PF3C+FR1 + WL 4,Y3PF3C+FR2 + WL 4,Y3PF3C+FR3 + WL 4,Y3PF3C+FR4 + WL 4,Y3PF3C+FR5 + WL 4,Y3PF3C+FR6 + WL 4,Y3PF3C+FR7 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,999,80h,50h,90000h,TGT_CHEST,0,57,-15 + + WL 4,Y3PF3C+FR8 + .word ANI_OFFSET,0,34,0 ;x,y,z + WL 22,Y3PF3C+FR9 + + .word ANI_SHAKER,40 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZERO_XZVELS + WL 4,Y3PF3C+FR10 + WL 4,Y3PF3C+FR11 + WL 4,Y3PF3C+FR12 + .word ANI_ATTACK_OFF + WL ANI_CODE,DO_CROWD_CHEER + .word ANI_BOUNCE,3 + WL 4,Y3PF3C+FR12 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + WL 1,Y3PF3C+FR12 + .word ANI_ATTACK_OFF + WL ANI_SET_YVEL,30000h + + .ref HIT_THE_MAT,SMALL_BOUNCE + + .word ANI_OFFSET,0,0,0 ;x,y,z + + WL 4,Y3PF3C+FR12 + .ref win_announce + WL ANI_CODE,win_announce +; WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + WL 50,Y3PF3C+FR12 + +;???? IS THIS WHERE IT GOES ? + .word ANI_LOOP +;Do another ground hit on opponent + .ref grnd_hit + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 5,Y5GU4B+FR1 + WL 5,Y5GU4B+FR2 + WL 5,Y5GU4B+FR3 + WL 5,Y5GU4B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 5,Y5GU4B+FR5 + WL 5,Y5GU4V+FR6 + WL 5,Y5GU4B+FR7 + WL 5,Y5GU4B+FR8 + + WL 7,Y5RV5A+FR1 + WL 7,Y5RV5A+FR2 + WL 7,Y5RV5A+FR3 + WL 7,Y5RV5A+FR4 + WL 7,Y5RV5A+FR5 + WL 7,Y5RV5A+FR6 + WL 7,Y5RV5A+FR7 + WL 7,Y5RV5A+FR8 + WL 40,Y5RV5A+FR9 + WL 7,Y5RV5A+FR10 + WL 7,Y5RV5A+FR11 + WL 1000,Y5RV5A+FR12 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + .end + \ No newline at end of file diff --git a/BACKUP/YOKSEQ3.ASM b/BACKUP/YOKSEQ3.ASM new file mode 100644 index 0000000..1e5e508 --- /dev/null +++ b/BACKUP/YOKSEQ3.ASM @@ -0,0 +1,1600 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "yokseq3.asm" + .title "Yokozuna animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + +;RJR START + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" +;RJR END + + .include "display.equ" + .include "damage.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + ;BRET + .ref hrt_3_head_held_anim + .ref H3GU4A,H3DU3A,H3BF3A + + ;BAM BAM + .ref bam_3_head_held_anim + .ref B3GU4A,B3DU3A,B3BF3C + + ;DOINK + .ref dnk_3_head_held_anim + .ref D3DU3A,D3HT3Z,D3BF3A,D4SK4A + + ;LEX + .ref lex_3_head_held_anim + .ref L3DU3A,L3BF3B + + ;RAZOR + .ref rzr_3_head_held_anim + .ref R3GU4A,R3DU3B,R3BF3A + + ;SHAWN + .ref shn_frnk_backfire_anim,shn_3_head_held_anim + .ref S3GU4A,S3DU3A,S3BF3A + + ;TAKER + .ref und_3_head_held_anim + .ref U3DU3B,U4BF3Z + + ;YOKO + .ref yok_stand4_anim,yok_dizzy_anim + .ref Y3GU2A,Y3BF3A + + + ;MISC + .ref CALL_MISSES,set_position,set_skeleton_pal,am_I_dizzy + .ref start_smoke,set_my_pal,make_white,make_norm + + +;RJR START + .ref slaveanim_tbl + + .ref hrt_slambounce_anim + .ref rzr_slambounce_anim + .ref und_slambounce_anim + .ref yok_slambounce_anim + .ref shn_slambounce_anim + .ref bam_slambounce_anim + .ref dnk_slambounce_anim + .ref und_slambounce_anim + .ref lex_slambounce_anim +;RJR END + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR yok_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,Y4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,Y4ST4Y+FR4 + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref yok_fall_back_anim + + WL ANI_CHANGEANIM,yok_fall_back_anim + .word ANI_END + +#nodead + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 0f0fh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#***************************************************************************** + + SUBR yok_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,Y3BF3A+FR1 + WL 4,Y3BF3A+FR3 + WL 4,Y3BF3A+FR5 + WL 4,Y3BF3A+FR7 + WL 4,Y3BF3A+FR9 + WL 4,Y3BF3A+FR11 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR yok_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,Y3LB3A+FR9 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,Y2AH2A+FR1 + WL 3,Y2AH2A+FR2 + WL 3,Y2AH2A+FR3 + WL 1,Y2AH2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,Y2AH2A+FR5 + WL 4,Y2AH2A+FR6 + WL 4,Y2AH2A+FR7 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 4,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR yok_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 4,Y3LB3A+FR9 + WL 3,Y1TT5Z+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#***************************************************************************** +* +* This one is special. If shawn tries a frankensteiner on yoko, it backfires +* and he ends up falling off. To keep this smooth, we have to turn yoko into +* the attacker. jump here. +* + + SUBR yok_frnk_backfire_anim + + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_ATTACHZ,0,0,10 + + WWLLW ANI_SUPERSLAVE2,8,Y1TT5Z+FR2,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y1TT5Z+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y1TT5Z+FR2,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,Y1TT5Z+FR2,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,Y1TT5Z+FR2,#puppet_tbl,4 + + ;let go + .word ANI_OPP_GETUP,TSEC + WL ANI_SLAVEANIM,#drop_table + .word ANI_DETACH + + ;wind down + WL 4,Y1TT5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Shawn + LWWW S3ZI3A+FR3,-5,30,0 + LWWW S3ZI3A+FR4,1,31,0 + LWWW S3ZI3A+FR5,2,15,0 + LWWW S3ZI3A+FR6,0,20,0 + LWWW S3ZI3A+FR7,-5,-12,0 +#Bret +#Razor +#Taker +#Yokozuna +#BamBam +#Doink +#Adam +#Lex + .long 0 + +#drop_table + .long 0,0,0,0 + .long shn_frnk_backfire_anim,0,0,0,0 + +#****************************************************************************** + + SUBR yok_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,Y1TT5Z+FR2 + WL 2,Y1TT5Z+FR3 + + SUBR yok_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_RAWSOUND,2055 ;big cheer #1 +; .word ANI_CHEER,3 + .word ANI_STARTATTACK,AT_BUTTSTOMP,36 + .word ANI_STARTATTACK,AT_PUPPET,8 + + WL 4,Y4WS4A+FR1 + + LEAPATOPP 8,999,80,80,30000h,TGT_HEAD,26,0,10 + WL 4,Y4WS4A+FR2 + WL 4,Y4WS4A+FR3 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET,15,0,25,22 ;mode,x,y,w,h + WL 4,Y4WS4A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + + WWLLW ANI_SUPERSLAVE2,4,Y4WS4A+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y4WS4A+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y4WS4A+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,Y4WS4A+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,Y4WS4A+FR8,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,Y4GH3C+FR9,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 3,Y4GH3C+FR9 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,Y4WS4A+FR4 + WL 4,Y4WS4A+FR3 + WL 4,Y4WS4A+FR2 + WL 4,Y4WS4A+FR1 + + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,38,-51,0 + LWWW H3GU4A+FR3,46,-48,0 + LWWW H3DU3A+FR3,47,-37,1 + LWWW H3DU3A+FR4,56,-26,1 + LWWW H3DU3A+FR5,53,-35,1 + LWWW H3BF3A+FR1,71,-34,0 + .long 0 +#Razor + LWWW R3GU4A+FR2,42,-47,1 + LWWW R3GU4A+FR3,43,-38,0 + LWWW R3GU4A+FR5,43,-37,0 + LWWW R3DU3B+FR2,44,-36,1 + LWWW R3DU3B+FR4,57,-28,1 + LWWW R3BF3A+FR4,68,-33,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,38,-41,1 + LWWW U3DU3B+FR5,41,-34,1 + LWWW U3DU3B+FR6,46,-33,1 + LWWW U3DU3B+FR8,43,-27,1 + LWWW U3DU3B+FR10,60,-28,1 + LWWW U4BF3Z+FR5,66,-14,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,37,-35,0 + LWWW Y3GU2A+FR3,54,-27,0 + LWWW Y3GU2A+FR6,27,-37,0 + LWWW Y3GU2A+FR9,54,-30,0 + LWWW Y3GU2A+FR12,60,-29,0 + LWWW Y3BF3A+FR1,67,-23,0 + .long 0 +#Shawn + LWWW S3GU4A+FR1,43,-46,1 + LWWW S3GU4A+FR2,42,-36,0 + LWWW S3GU4A+FR4,49,-39,0 + LWWW S3GU4A+FR5,49,-37,0 + LWWW S3DU3A+FR2,60,-41,1 + LWWW S3BF3A+FR1,56,-34,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,43,-37,0 + LWWW B3GU4A+FR4,44,-37,0 + LWWW B3GU4A+FR6,40,-30,0 + LWWW B3GU4A+FR7,39,-38,0 + LWWW B3DU3A+FR2,57,-31,1 + LWWW B3BF3C+FR5,72,-27,0 + .long 0 +#Doink + LWWW D3DU3A+FR2,38,-40,1 + LWWW D3DU3A+FR3,45,-34,1 + LWWW D3DU3A+FR5,45,-27,1 + LWWW D3DU3A+FR8,41,-29,1 + LWWW D3HT3Z+FR1,55,-33,1 + LWWW D3BF3A+FR2,60,-32,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3DU3A+FR2,44,-51,1 + LWWW L3DU3A+FR4,25,-34,1 + LWWW L3DU3A+FR6,30,-37,1 + LWWW L3DU3A+FR7,33,-31,1 + LWWW L3DU3A+FR9,48,-36,1 + LWWW L3BF3B+FR2,63,-37,0 + .long 0 + +#****************************************************************************** + + SUBR yok_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,Y4CO4D+FR1 + WL 4,Y4CO4D+FR2 + + WL 4,Y4CO4D+FR3 + WL 4,Y4CO4D+FR4 + WL 4,Y4CO4D+FR5 + WL 4,Y4CO4D+FR6 + WL 4,Y4CO4D+FR7 + WL 4,Y4CO4D+FR8 + + WL 4,Y4CO4D+FR3 + WL 4,Y4CO4D+FR4 + WL 4,Y4CO4D+FR5 + WL 4,Y4CO4D+FR6 + WL 4,Y4CO4D+FR7 + WL 4,Y4CO4D+FR8 + + WL 4,Y4CO4D+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,yok_stand4_anim + .word ANI_END + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR yok_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + + WL 4,Y3MF3B+FR1 + WL 4,Y3MF3B+FR2 + WL 4,Y3MF3B+FR3 + WL 4,Y3MF3B+FR4 + WL 4,Y3MF3B+FR5 + WL 4,Y3MF3B+FR6 + WL 4,Y3MF3B+FR7 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 2,Y3MF3B+FR7 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,Y3MS3Z+FR4 + WL 4,Y3MS3Z+FR3 + WL 4,Y3MS3Z+FR2 + WL 4,Y3MS3Z+FR1 + .word ANI_WAITHITGND + WL 2,Y2ST2Z+FR4 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR yok_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + .word ANI_SHAKER,50 + + .ref ckzpos + WL ANI_CODE,ckzpos + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP + WL 3,Y3FD3N+FR5 + WL 8,Y3FD3N+FR6 + WL 3,Y3FD3N+FR7 + WL 3,Y3FD3N+FR8 + .word ANI_WAITHITGND + .ref HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_OFFSET,-20,0,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,Y3KF3B+FR1 + WL 3,Y3KF3B+FR2 + WL 3,Y3KF3B+FR3 + WL 3,Y3KF3B+FR4 + WL 3,Y3KF3B+FR5 + WL 3,Y3KF3B+FR6 + + WL 3,Y3KF3B+FR6 + .word ANI_WAITROLL + .word ANI_OFFSET,0,0,0 + .ref yok_faceup_getup_anim + + WL ANI_CHANGEANIM,yok_faceup_getup_anim + .word ANI_END + + SUBR yok_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,150,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,Y4POGO+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP + WL 3,Y3FD3N+FR4 + WL 3,Y3FD3N+FR5 + WL 8,Y3FD3N+FR6 + WL 3,Y3FD3N+FR7 + WL 3,Y3FD3N+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_OFFSET,-20,0,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,Y3KF3B+FR1 + WL 3,Y3KF3B+FR2 + WL 3,Y3KF3B+FR3 + WL 3,Y3KF3B+FR4 + WL 3,Y3KF3B+FR5 + WL 3,Y3KF3B+FR6 + +; .word ANI_GETUP,50 + WL 3,Y3KF3B+FR6 + .word ANI_WAITROLL +; .word ANI_OFFSET,0,0,0 + + WL ANI_CHANGEANIM,yok_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR yok_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WL 6,Y3FL3W+FR4 + WL 6,Y3FL3W+FR5 + WL 6,Y3FL3W+FR6 + WL 6,Y3FL3W+FR7 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + + .word ANI_DAMAGE,D_HIPTOSS + .word ANI_SETWORD,DELAY_METER,0 + .word ANI_GETUP,500 + + .word ANI_OFFSET,10,0,0 + WL 3,Y3FD3A+FR7 + .word ANI_XFLIP + .ref yok_hitonground_anim + WL ANI_CHANGEANIM,yok_hitonground_anim + + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR yok_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + .word ANI_XFLIP + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,300 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_OFFSET,15,0,0 ;x,y,z + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + WL 4,Y3CP3B+FR5 + WL 4,Y3CP3B+FR6 + .word ANI_ZEROVELS + WL 4,Y3CP3B+FR7 + WL 4,Y3CP3B+FR8 + + .word ANI_WAITHITGND + .ref SMALL_BOUNCE + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR yok_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,-20,20,0 ;x,y,z + WL 4,Y3FL3W+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,300 + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,Y3FL3W+FR7 + WL 3,Y3FD3A+FR7 + + .word ANI_XFLIP + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_OFFSET,15,0,0 ;x,y,z + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + WL 4,Y3CP3B+FR5 + WL 4,Y3CP3B+FR6 + .word ANI_ZEROVELS + WL 4,Y3CP3B+FR7 + WL 4,Y3CP3B+FR8 + + .word ANI_WAITHITGND + .ref SMALL_BOUNCE + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + .word ANI_END + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR yok_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + .word ANI_STARTATTACK,AT_PUPPET,12 + + WL 3,Y4GH3C+FR2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 9,999,60,40,90000h,TGT_HEAD,56,93,8 + WL 3,Y4GH3C+FR3 + + .word ANI_ATTACK_ON, AMODE_PUPPET,40,80,37,23 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,6,Y4GH3C+FR4 + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missed + +;got him + .ref CALL_SETUP + WL ANI_CODE,CALL_SETUP + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,Y4GH3C+FR5,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,Y4GH3C+FR7,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y4GH3C+FR8,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,Y4GH3C+FR9,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 4,Y4GH3C+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 25,Y4GH3C+FR4 + WL 3,Y4GH3C+FR3 + WL 3,Y4GH3C+FR2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H2AH3A,H3HB3A,H3BF3A + .ref R2AH2D,R3HB3A,R3BF3A + .ref U4BF3A,U4BF3Z,U4AM4C +; .ref Y3BF3A,Y3LB3A + .ref S4AH3D,S4BF3A + .ref B4BF3A,B3HB3A,B3BF3C + .ref D3AK3A,D3BF3A + .ref L2AH2A,L3BF3A,L3BF3B,L4AH4B +#Bret + LWWW H2AH3A+FR1,63,11,0 + LWWW H3HB3A+FR3,70,1,0 + LWWW H3HB3A+FR2,62,-5,0 + LWWW H3HB3A+FR1,59,-35,0 + .long 0 +#Razor + LWWW R3HB3A+FR3,79,-11,0 + LWWW R3HB3A+FR3,76,-1,0 + LWWW R3HB3A+FR2,75,-16,0 + LWWW R3BF3A+FR1,67,-35,0 + .long 0 +#Taker + LWWW U4AM4C+FR2,69,-1,0 + LWWW U4BF3A+FR2,66,11,0 + LWWW U4BF3A+FR3,39,-2,0 + LWWW U4BF3Z+FR3,64,-22,0 + .long 0 +#Yokozuna + LWWW Y3LB3A+FR2,73,1,0 + LWWW Y3LB3A+FR2,70,11,0 + LWWW Y3LB3A+FR9,60,-13,0 + LWWW Y3BF3A+FR1,62,-23,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,57,-2,0 + LWWW S4AH3D+FR5,54,8,0 + LWWW S4BF3A+FR2,73,-8,0 + LWWW S4BF3A+FR3,55,-23,0 + .long 0 +#BamBam + LWWW B4BF3A+FR1,72,-4,0 + LWWW B4BF3A+FR1,69,6,0 + LWWW B3HB3A+FR2,60,-23,0 + LWWW B3BF3C+FR5,68,-27,0 + .long 0 +#Doink + LWWW D3AK3A+FR3,54,3,0 + LWWW D3AK3A+FR3,51,13,0 + LWWW D3AK3A+FR2,67,-4,0 + LWWW D3BF3A+FR1,63,-33,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,55,-3,0 + LWWW L3BF3A+FR1,72,6,1 + LWWW L3BF3A+FR2,68,-8,1 + LWWW L3BF3B+FR5,55,-30,0 + .long 0 + + .ref rzr_3_head_held_anim + .ref bam_3_head_held_anim + .ref und_3_head_held_anim +; .ref yok_3_head_held_anim + .ref hrt_3_head_held_anim + .ref lex_3_head_held_anim + .ref shn_3_head_held_anim + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +;RJR START +#***************************************************************************** +* +* VERTICAL SUPLEX + + SUBR yok_vsuplex_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WL ANI_SLAVEANIM,slaveanim_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_SETOPPMODE,MODE_GHOST + + WWLLW ANI_SUPERSLAVE2,4,Y4SU4A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4B+FR1,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4B+FR2,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4B+FR3,#puppet_tbl,6 + .word ANI_OFFSET,0,45,0 ;x,y,z + WL ANI_SET_YVEL,020000h + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,4,Y4SU4B+FR4,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4B+FR5,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4B+FR6,#puppet_tbl,9 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4B+FR7,#puppet_tbl,10 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,45 + + .word ANI_DAMAGE,D_HIPTOSS + + + WWLLW ANI_SUPERSLAVE2,4,Y4SU4B+FR8,#puppet_tbl,11 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4B+FR9,#puppet_tbl,12 + + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#breakneck_tbl + WLLL ANI_SETOPPVELS,-10000h,40000h,0 ;x,y,z vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + + WL 10,Y4SU4B+FR10 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#xflip_tbl + .word 0 ;bret + .word 1 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 1 ;doink + .word 0 ;spare + .word 0 ;lex + + .ref hrt_break_neck2_anim + .ref rzr_break_neck2_anim + .ref und_break_neck2_anim + .ref shn_break_neck2_anim + .ref bam_break_neck2_anim + .ref dnk_break_neck2_anim + .ref lex_break_neck2_anim + +#breakneck_tbl + .long hrt_break_neck2_anim + .long rzr_break_neck2_anim + .long und_break_neck2_anim + .long yok_break_neck2_anim + .long shn_break_neck2_anim + .long bam_break_neck2_anim + .long dnk_break_neck2_anim + .long 0 + .long lex_break_neck2_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4AM3A+FR5,37,-25,0 + LWWW H3PP3X+FR1,37,-20,0 + LWWW H3PP3X+FR2,21,42,0 + LWWW H3PP3X+FR3,4,59,0 + LWWW H3PP3X+FR5,20,73,0 + LWWW H3PP3X+FR6,15,75,0 + LWWW H3PP3X+FR6,14,74,0 + LWWW H3PP3X+FR6,12,79,0 + LWWW H3PP3X+FR6,13,78,0 + LWWW H3PP3X+FR6,4,75,0 + LWWW H3PP3X+FR6,-13,78,0 + LWWW H3PP3X+FR7,-42,9,0 + LWWW H3PP3X+FR8,-39,-11,0 + .long 0 +#Razor + LWWW R3GP3Z+FR1,28,-31,0 + LWWW R3GP3Z+FR2,30,-15,0 + LWWW R3GP3Z+FR4,38,55,0 + LWWW R3GP3Z+FR5,26,60,0 + LWWW R3GP3Z+FR5,26,66,0 + LWWW R3GP3Z+FR5,27,65,0 + LWWW R3GP3Z+FR5,26,64,0 + LWWW R3GP3Z+FR6,33,66,0 + LWWW R3GP3Z+FR6,34,67,0 + LWWW R3GP3Z+FR6,21,76,0 + LWWW R3GP3Z+FR6,6,81,0 + LWWW R3GP3Z+FR7,-37,24,0 + LWWW R3GP3Z+FR8,-30,-18,0 + .long 0 +#Taker + LWWW U3PP3X+FR1,34,-26,1 + LWWW U3PP3X+FR3,30,-4,1 + LWWW U3PP3X+FR4,20,25,1 + LWWW U3PP3X+FR5,24,48,1 + LWWW U3PP3X+FR6,31,76,1 + LWWW U3PP3X+FR6,31,75,1 + LWWW U3PP3X+FR6,30,74,1 + LWWW U3PP3X+FR6,24,81,1 + LWWW U3PP3X+FR6,25,81,1 + LWWW U3PP3X+FR6,16,94,1 + LWWW U3PP3X+FR6,1,102,1 + LWWW U3GP3X+FR1,-41,3,1 + LWWW U3GP3X+FR2,-34,-23,1 + .long 0 +#Yokozuna + LWWW Y3BF3A+FR11,34,-17,0 + LWWW Y3PP3Q+FR1,31,-13,0 + LWWW Y3PP3Q+FR3,30,9,0 + LWWW Y3PP3Q+FR6,14,35,0 + LWWW Y3PP3Q+FR6,17,40,0 + LWWW Y3PP3Q+FR6,17,39,0 + LWWW Y3PP3Q+FR7,13,49,0 + LWWW Y3PP3Q+FR7,11,52,0 + LWWW Y3PP3Q+FR7,10,51,0 + LWWW Y3PP3Q+FR7,5,52,0 + LWWW Y3PP3Q+FR7,-11,52,0 + LWWW Y3FD3N+FR2,-52,7,0 + LWWW Y3FD3N+FR3,-42,4,0 + .long 0 +#Shawn + LWWW S3BF3A+FR5,24,-31,0 + LWWW S3GP3X+FR1,38,-20,0 + LWWW S3GP3X+FR2,31,1,0 + LWWW S3GP3X+FR3,20,17,0 + LWWW S3GP3X+FR4,28,50,0 + LWWW S3GP3X+FR5,30,56,0 + LWWW S3GP3X+FR5,29,55,0 + LWWW S3GP3X+FR5,28,63,0 + LWWW S3GP3X+FR5,30,63,0 + LWWW S3OS3X+FR8,16,56,1 + LWWW S3OS3X+FR8,-2,56,1 + LWWW S3FD3X+FR2,-34,17,0 + LWWW S3GP3X+FR6,-29,-11,0 + .long 0 +#BamBam + LWWW B3PP3Q+FR1,28,-31,0 + LWWW B3PP3Q+FR2,38,-6,0 + LWWW B3PP3Q+FR3,35,23,0 + LWWW B3PP3Q+FR4,22,50,0 + LWWW B3PP3Q+FR5,27,69,0 + LWWW B3PP3Q+FR5,27,68,0 + LWWW B3PP3Q+FR5,26,67,0 + LWWW B3PP3Q+FR6,8,77,0 + LWWW B3PP3Q+FR6,1,76,0 + LWWW B3PP3Q+FR6,-6,76,0 + LWWW B3PP3Q+FR6,-20,76,0 + LWWW B3PP3Q+FR7,-48,18,0 + LWWW B3FD3C+FR1,-48,-7,0 + .long 0 +#Doink + LWWW D3PD3Z+FR1,40,-38,1 + LWWW D3PD3Z+FR2,39,-8,1 + LWWW D3PD3Z+FR3,34,22,1 + LWWW D3PD3Z+FR4,23,62,1 + LWWW D3PD3Z+FR5,20,75,1 + LWWW D3PD3Z+FR5,20,74,1 + LWWW D3PD3Z+FR5,19,73,1 + LWWW D3PD3Z+FR6,21,66,1 + LWWW D3PD3Z+FR6,21,62,1 + LWWW D3PD3Z+FR6,12,69,1 + LWWW D3PD3Z+FR6,-8,71,1 + LWWW D3PD3Z+FR8,-35,-1,1 + LWWW D3PD3Z+FR9,-33,-23,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR4,36,-29,0 + LWWW L3GP3Z+FR1,35,-17,0 + LWWW L3GP3Z+FR2,29,2,0 + LWWW L3GP3Z+FR4,23,31,0 + LWWW L3GP3Z+FR5,28,43,0 + LWWW L3GP3Z+FR6,26,57,0 + LWWW L3GP3Z+FR6,25,55,0 + LWWW L3GP3Z+FR6,25,62,0 + LWWW L3GP3Z+FR6,25,64,0 + LWWW L3GP3Z+FR6,18,63,0 + LWWW L3GP3Z+FR6,0,65,0 + LWWW L3FH3A+FR6,-40,12,0 + LWWW L3FD3B+FR1,-31,-11,0 + .long 0 + +#***************************************************************************** +* +* GRAB & FLIP + + SUBR yok_grabflip_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,50,50,35,90000h,TGT_CHEST,39,73,0 + WL ANI_SET_YVEL,20000h + + WL 4,Y4LZ3A+FR1 + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + + .word ANI_ATTACK_ON, AMODE_PUPPET,0,44,52-8,52 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,Y4LZ3A+FR1 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR3,#puppet_tbl,2 + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR4,#puppet_tbl,3 + .word ANI_OFFSET,0,50,0 ;x,y,z + WL ANI_SET_YVEL,02000h + WWLLW ANI_SUPERSLAVE2,3,Y4LZ3A+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,Y4LZ3A+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,Y4LZ3A+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,Y4LZ3A+FR8,#puppet_tbl,7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + + .word ANI_DAMAGE,D_HIPTOSS + + + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR9,#puppet_tbl,8 + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,20000h,40000h,00000h ;x,y,z vels + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 14,Y4LZ3A+FR9 + .word ANI_XFLIP + .ref yok_faceup_getup2_anim + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#missed + WL 20,Y4LZ3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 1 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AH3A+FR5,37,5,0 + LWWW H3FR3A+FR1,16,-1,0 + LWWW H3MS3Z+FR1,-8,8,0 + LWWW H3PP3X+FR1,14,-15,1 + LWWW H3FR3A+FR2,40,2,1 + LWWW H3FR3A+FR3,29,28,1 + LWWW H3FR3A+FR4,16,37,1 + LWWW H3FR3A+FR5,-8,38,1 + LWWW H2CP3A+FR8,-115,-13,0 + .long 0 +#Razor + LWWW R4AM4B+FR2,39,6,0 + LWWW R3TD3A+FR1,15,17,0 + LWWW R3TD3A+FR3,-9,-6,0 + LWWW R3TD3A+FR4,9,-1,1 + LWWW R3TD3A+FR5,51,16,1 + LWWW R3TD3A+FR6,49,37,1 + LWWW R3TD3A+FR7,26,58,1 + LWWW R3TD3A+FR8,-1,59,1 + LWWW R3GU2A+FR1,-110,-9,0 + .long 0 +#Taker + LWWW U3AE4A+FR1,36,17,0 + LWWW U4AM4C+FR4,14,8,0 + LWWW U3FH3A+FR1,12,-13,1 + LWWW U3FH3A+FR2,16,3,0 + LWWW U3FH3A+FR3,41,17,0 + LWWW U3FH3A+FR4,32,40,0 + LWWW U3FH3A+FR5,10,60,0 + LWWW U3FH3A+FR5,-6,60,0 + LWWW U3CP3B+FR1,-120,-7,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR1,46,5,0 + LWWW Y3FL3W+FR1,16,16,0 + LWWW Y3FL3W+FR2,-5,1,0 + LWWW Y3FL3W+FR3,-1,3,1 + LWWW Y3FL3W+FR4,30,22,1 + LWWW Y3FL3W+FR5,28,36,1 + LWWW Y3FL3W+FR6,2,43,1 + LWWW Y3FL3W+FR7,-21,45,1 + LWWW Y3FD3A+FR7,-93,13,1 + .long 0 +#Shawn + LWWW S3OS3X+FR2,24,5,1 + LWWW S3OS3X+FR3,14,17,1 + LWWW S3OS3X+FR4,-13,-3,1 + LWWW S3OS3X+FR5,-3,-5,0 + LWWW S3OS3X+FR6,35,32,0 + LWWW S3OS3X+FR7,45,53,0 + LWWW S3OS3X+FR8,35,62,0 + LWWW S3OS3X+FR9,-14,59,0 + LWWW S3OS3X+FR10,-90,-2,0 + .long 0 +#BamBam + LWWW B4AM4A+FR2,38,13,0 + LWWW B4AM4A+FR3,22,15,0 + LWWW B4TD3B+FR3,-9,-1,0 + LWWW B4TD3B+FR4,18,-1,1 + LWWW B4TD3B+FR5,41,32,1 + LWWW B4TD3B+FR6,41,56,1 + LWWW B4TD3B+FR7,19,57,1 + LWWW B4TD3B+FR8,-6,57,1 + LWWW B4TD3B+FR9,-77,6,1 + .long 0 +#Doink + LWWW D3AH3B+FR2,21,-2,0 + LWWW D3PM4C+FR2,-6,18,0 + LWWW D3OS3A+FR1,2,0,0 + LWWW D3OS3A+FR2,10,-2,1 + LWWW D3OS3A+FR3,31,9,1 + LWWW D3OS3A+FR4,33,24,1 + LWWW D3OS3A+FR5,28,32,1 + LWWW D3OS3A+FR6,2,44,1 + LWWW D3SA3A+FR9,-112,-8,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR2,42,-1,0 + LWWW L3FH3A+FR1,7,11,0 + LWWW L3FH3A+FR2,-3,-13,0 + LWWW L3FH3A+FR3,12,4,1 + LWWW L3FH3A+FR4,45,18,1 + LWWW L3FH3A+FR5,41,28,1 + LWWW L3FH3A+FR6,21,50,1 + LWWW L3FH3A+FR6,3,48,1 + LWWW L3CP3B+FR1,-116,-9,0 + .long 0 + +#***************************************************************************** +* +* SPIN & SLAM + +#***************************************************************************** +* +* GRAB OPPONENT AND HOLD OVERHEAD + + SUBR yok_graboh_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + + WL 4,Y4PO4X+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,50,50,35,90000h,TGT_CHEST,71,64,0 + WL ANI_SET_YVEL,20000h + + WL 5,Y4PO4X+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,8,46,65,33 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,5,Y4PO4X+FR2 + .word ANI_ATTACK_OFF + + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,9,Y4PO4X+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR8,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_flail_tbl + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 20,Y4PO4X+FR3 + WL 4,Y4PO4X+FR2 + WL 4,Y4PO4X+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .ref hrt_heldoh_anim + .ref rzr_heldoh_anim + .ref und_heldoh_anim + .ref shn_heldoh_anim + .ref bam_heldoh_anim + .ref dnk_heldoh_anim + .ref lex_heldoh_anim + +#strt_flail_tbl + .long hrt_heldoh_anim + .long rzr_heldoh_anim + .long und_heldoh_anim + .long yok_heldoh_anim + .long shn_heldoh_anim + .long bam_heldoh_anim + .long dnk_heldoh_anim + .long 0 + .long lex_heldoh_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4AM3A+FR1,60,10,0 + LWWW H3MS3Z+FR1,26,24,0 + LWWW H3MS3Z+FR2,31,27,0 + LWWW H3MS3Z+FR3,18,15,0 + LWWW H3MS3Z+FR4,-8,14,0 + LWWW H4MF4B+FR9,-20,19,0 + .long 0 +#Razor + LWWW R4AH4C+FR3,74,28,0 + LWWW R3MS3Z+FR1,47,11,0 + LWWW R3MS3Z+FR2,29,20,0 + LWWW R3MS3Z+FR3,10,9,0 + LWWW R3MS3Z+FR4,-11,12,0 + LWWW R4MF4B+FR9,-55,30,0 + .long 0 +#Taker + LWWW U4AH3A+FR5,64,28,0 + LWWW U4AM4C+FR1,43,22,0 + LWWW U3MS3Z+FR1,26,38,0 + LWWW U3MS3Z+FR2,-4,24,0 + LWWW U3MS3Z+FR3,-28,8,0 + LWWW U4PM3C+FR7,-38,26,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR1,77,23,0 + LWWW Y3MS3Z+FR2,48,21,0 + LWWW Y3MS3Z+FR3,31,24,0 + LWWW Y3MS3Z+FR4,5,19,0 + LWWW Y3MS3Z+FR5,-22,20,0 + LWWW Y3MF3B+FR7,-31,23,0 + .long 0 +#Shawn + LWWW S4AH3D+FR1,70,20,0 + LWWW S3OS3X+FR3,43,17,1 + LWWW S3MS3Z+FR1,23,11,0 + LWWW S3MS3Z+FR3,-1,9,0 + LWWW S3MS3Z+FR5,-16,12,0 + LWWW S3MF3B+FR7,-34,22,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,68,22,0 + LWWW B3MS3Z+FR1,53,14,0 + LWWW B3MS3Z+FR2,35,19,0 + LWWW B3MS3Z+FR3,10,4,0 + LWWW B3MS3Z+FR4,-10,15,0 + LWWW B4MF4A+FR7,-49,37,0 + .long 0 +#Doink + LWWW D3AH3B+FR5,63,18,0 + LWWW D3GS3X+FR1,58,7,0 + LWWW D3GS3X+FR3,34,17,0 + LWWW D3GS3X+FR4,14,13,0 + LWWW D3GS3X+FR5,-7,3,0 + LWWW D4MF4A+FR9,-31,37,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,69,20,0 + LWWW L3MS3Z+FR1,51,15,0 + LWWW L3MS3Z+FR2,28,20,0 + LWWW L3MS3Z+FR3,3,6,0 + LWWW L3MS3Z+FR4,-17,0,0 + LWWW L3MF3B+FR7,-29,16,0 + .long 0 + +;RJR END +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/YOKSEQ4.ASM b/BACKUP/YOKSEQ4.ASM new file mode 100644 index 0000000..8638da8 --- /dev/null +++ b/BACKUP/YOKSEQ4.ASM @@ -0,0 +1,1243 @@ +************************* +* +* WE NEED TO INSERT THIS AT THE BEGINNING +* +* OF EACH 'ATTACK' SEQUENCE +* +* EQUATES ARE DEFINED IN DAMAGE.EQU +* +* +* .word ANI_STARTATTACK,AT_PUNCH,8 ;type, #ticks 'til attack on +* +* +* +************************* + + + +************************************************************** +* +* Software: Jason Skiles +* Initiated: 26 Aug 94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "yokseq4.asm" + .title "blocks, reactions to routine and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "yokoimg.h" + + .include "display.equ" + .include "ring.equ" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;YOKO + .ref yok_3_head_held_anim + + ;MISC + .ref HIT_THE_MAT,SMALL_BOUNCE,am_I_dead,ckzpos + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #2 BLOCK + HITBLOCK + + SUBR yok_2_block_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_SETPLYRMODE,MODE_BLOCK + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,Y2BK3A+FR1 + WL 2,Y2BK3A+FR2 + WL 2,Y2BK3A+FR3 +; WL 2,Y2BK3A+FR4 + WL 2,Y2BK3A+FR5 +#hold_block + .word ANI_SETMODE,MODE_NOAUTOFLIP ;turn off UNINT + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + + WL 2,Y2BK3A+FR3 + WL 2,Y2BK3A+FR2 + WL 2,Y2BK3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR yok_2_hitblock_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WL 3,Y2BK3A+FR6 + WL 3,Y2BK3A+FR7 + WL 3,Y2BK3A+FR6 + WL 3,Y2BK3A+FR5 + WL ANI_GOTO,#hold_block + + +#***************************************************************************** +* +* #4 BLOCK + HITBLOCK + + SUBR yok_4_block_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_SETPLYRMODE,MODE_BLOCK + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,Y4BK3A+FR2 + WL 3,Y4BK3A+FR3 + WL 3,Y4BK3A+FR4 + WL 3,Y4BK3A+FR5 + +#hold_block + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + WL 3,Y4BK3A+FR4 + WL 3,Y4BK3A+FR3 + WL 3,Y4BK3A+FR2 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR yok_4_hitblock_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + WL 3,Y4BK3A+FR6 + WL 3,Y4BK3A+FR7 + WL 3,Y4BK3A+FR6 + WL 3,Y4BK3A+FR5 + WL ANI_GOTO,#hold_block + + +#***************************************************************************** +* +* #4 LOSE BALANCE + +#FRICTION_VAL equ 3000h + + SUBR yok_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,#FRICTION_VAL + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + WL 4,Y4PB3A+FR1 + WL 4,Y4PB3A+FR2 + WL 4,Y4PB3A+FR3 + WL 4,Y4PB3A+FR4 + WL 4,Y4PB3A+FR5 + WL 4,Y4PB3A+FR6 + WL 4,Y4PB3A+FR7 + WL 4,Y4PB3A+FR8 + WL 4,Y4PB3A+FR9 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR yok_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 4,Y2AH2A+FR2 + WL 4,Y2AH2A+FR3 + WL 4,Y2AH2A+FR4 + WL 4,Y2AH2A+FR5 + WL 4,Y2AH2A+FR6 + WL 4,Y2AH2A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT + + SUBR yok_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 4,Y4AH4A+FR2 + WL 4,Y4AH4A+FR3 + WL 4,Y4AH4A+FR4 + WL 4,Y4AH4A+FR5 + WL 4,Y4AH4A+FR6 + WL 4,Y4AH4A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR yok_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_OVERLAP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + +; WL 3,Y2AH2A+FR2 +; WL 15,Y2AH2A+FR3 +; WL 4,Y2AH2A+FR4 + + + WL 1,Y4PS3B+FR4 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 2,Y4PS3B+FR4 + WL 2,Y4PS3B+FR5 + WL 1,Y4PS3B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 20,Y4PS3B+FR6 + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR yok_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_OVERLAP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + +; WL 3,Y4AH4A+FR2 +; WL 3,Y4AH4A+FR3 +; WL 14,Y4AH4A+FR4 +; WL 2,Y4AH4A+FR5 + + WL 1,Y4PS3B+FR4 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 2,Y4PS3B+FR4 + WL 2,Y4PS3B+FR5 + WL 1,Y4PS3B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 20,Y4PS3B+FR6 + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 + WL 3,Y4PS3B+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR yok_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,Y4AH4A+FR2 + WL 3,Y4AH4A+FR3 + WL 14,Y4AH4A+FR4 + WL 2,Y4AH4A+FR5 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,yok_dizzy_anim + .word ANI_END + + + +#************ +* +* #2 HEAD HIT2 (hands on face) + + SUBR yok_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 3,Y2AE2A+FR1 + WL 3,Y2AE2A+FR2 + WL 3,Y2AE2A+FR3 + WL 3,Y2AE2A+FR4 + WL 3,Y2AE2A+FR5 + WL 3,Y2AE2A+FR6 + WL 3,Y2AE2A+FR7 + WL 3,Y2AE2A+FR8 + WL 3,Y2AE2A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT2 (hands on face) + + SUBR yok_4_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 3,Y4AE4A+FR1 + WL 3,Y4AE4A+FR2 + WL 3,Y4AE4A+FR3 + WL 3,Y4AE4A+FR4 + WL 3,Y4AE4A+FR5 + WL 3,Y4AE4A+FR6 + WL 3,Y4AE4A+FR7 + WL 3,Y4AE4A+FR8 + WL 3,Y4AE4A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #2 HEAD HIT - From spin kick + + SUBR yok_2_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + WL 3,Y2AH2A+FR1 + .word ANI_DEBRIS,150,2,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,Y2AH2A+FR2 + WL 3,Y2AH2A+FR3 + WL 1,Y2AH2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,Y2AH2A+FR5 + WL 4,Y2AH2A+FR6 + WL 4,Y2AH2A+FR7 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT - From spin kick + + SUBR yok_4_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,Y4AH4A+FR1 + .word ANI_DEBRIS,150,2,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,Y4AH4A+FR2 + WL 3,Y4AH4A+FR3 + WL 1,Y4AH4A+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,Y4AH4A+FR5 + WL 4,Y4AH4A+FR6 + WL 4,Y4AH4A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_head_hit4_anim + +;From earslap + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + + WL 4,Y4AH4A+FR1 + WL 4,Y4AH4A+FR2 + WL 4,Y4AH4A+FR3 + WL 4,Y4AH4A+FR4 + + WL 4,Y4AH4A+FR5 + WL 4,Y4AH4A+FR6 + WL 4,Y4AH4A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;Took out old #2 dizzy + + + +#************ +* +* #4 HEAD HIT (ends in dizzy) + + SUBR yok_4_head_hit_dizzy_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + +; WL 4,Y4AH4A+FR1 +; WL 4,Y4AH4A+FR2 +; WL 4,Y4AH4A+FR3 +; WL 4,Y4AH4A+FR4 +; WL 4,Y4AH4A+FR5 +; WL 4,Y4AH4A+FR6 +; WL 4,Y4AH4A+FR7 + + WL 4,Y4AE4A+FR1 + WL 4,Y4AE4A+FR2 + WL 4,Y4AE4A+FR3 + WL 4,Y4AE4A+FR4 + WL 4,Y4AE4A+FR5 + WL 4,Y4AE4A+FR6 + WL 4,Y4AE4A+FR7 + WL 4,Y4AE4A+FR8 + WL 4,Y4AE4A+FR9 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,yok_dizzy_anim + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR yok_2_body_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,Y2AM2C+FR1 + WL 4,Y2AM2C+FR2 + WL 1,Y2AM2C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,Y2AM2C+FR4 + WL 4,Y2AM2C+FR5 + WL 4,Y2AM2C+FR6 + WL 4,Y2AM2C+FR7 + WL 4,Y2AM2C+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 BODY HIT + + SUBR yok_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,Y4AM4A+FR1 + WL 4,Y4AM4A+FR2 + WL 1,Y4AM4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,Y4AM4A+FR4 + WL 4,Y4AM4A+FR5 + WL 4,Y4AM4A+FR6 + WL 4,Y4AM4A+FR7 + WL 4,Y4AM4A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,Y4AM4A+FR1 + WL 4,Y4AM4A+FR2 + WL 1,Y4AM4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,Y4AM4A+FR4 + WL 4,Y4AM4A+FR5 + WL 4,Y4AM4A+FR6 + WL 4,Y4AM4A+FR7 + WL 4,Y4AM4A+FR8 + + .word ANI_FACEDOWN + .word ANI_OFFSET,0,0,0 ;x,y,z +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,yok_dizzy_anim + .word ANI_END + +* #4 BODY HIT FROM KNEE + + SUBR yok_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,Y4AM4A+FR1 + WL 4,Y4AM4A+FR2 + WL 1,Y4AM4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,Y4AM4A+FR4 + WL 4,Y4AM4A+FR5 + WL 4,Y4AM4A+FR6 + WL 4,Y4AM4A+FR7 + WL 4,Y4AM4A+FR8 + + .word ANI_OFFSET,0,0,0 ;x,y,z + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,yok_dizzy_anim + .word ANI_END + + SUBR yok_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,Y2AM2C+FR1 + WL 4,Y2AM2C+FR2 + WL 1,Y2AM2C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,Y2AM2C+FR4 + WL 4,Y2AM2C+FR5 + WL 4,Y2AM2C+FR6 + WL 4,Y2AM2C+FR7 + WL 4,Y2AM2C+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,Y4AM4A+FR1 + WL 4,Y4AM4A+FR2 + WL 1,Y4AM4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,Y4AM4A+FR4 + WL 4,Y4AM4A+FR5 + WL 4,Y4AM4A+FR6 + WL 4,Y4AM4A+FR7 + WL 4,Y4AM4A+FR8 + + + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + WL ANI_SET_YVEL,10000h + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,0,2 ;x,y,z + + WL ANI_SET_YVEL,38000h +; WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + + WL 4,Y4AM4A+FR1 + WL 4,Y4AM4A+FR2 + WL 4,Y4AM4A+FR3 + WL 4,Y4AM4A+FR2 + WL 4,Y4AM4A+FR4 + WL 4,Y4AM4A+FR5 + WL 4,Y4AM4A+FR6 + WL 4,Y4AM4A+FR7 + WL 4,Y4AM4A+FR8 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,yok_fall_back_anim + .word ANI_END + +#nodead + + .word ANI_FACEDOWN + WL ANI_CHANGEANIM,yok_3_head_held_anim + .word ANI_END + +****************************************************************************** +* +* #3 FALL DOWN + + SUBR yok_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP+MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; WL ANI_CODE,am_I_dead +;If I'm dead, don't go up into air +; WL ANI_IFSTATUS,#dead + WL ANI_SET_YVEL,58000h +;#dead + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[99,-20] ;Y,X of head + WL 4,Y3FD3A+FR1 + WWL ANI_SETLONG,DEBRIS_X,[99,-32] ;Y,X of head + WL 4,Y3FD3A+FR2 + .word ANI_OFFSET,0,41,0 ;x,y,z + WWL ANI_SETLONG,DEBRIS_X,[49,-38] ;Y,X of head + WL 4,Y3FD3A+FR3 + WWL ANI_SETLONG,DEBRIS_X,[37,-49] ;Y,X of head + WL 4,Y3FD3A+FR4 + WWL ANI_SETLONG,DEBRIS_X,[26,-51] ;Y,X of head + WL 4,Y3FD3A+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,[9,-45] ;Y,X of head + WL 2,Y3FD3A+FR6 + .word ANI_BOUNCE,5 + WL 2,Y3FD3A+FR6 + WWL ANI_SETLONG,DEBRIS_X,[9,-45] ;Y,X of head + WL 4,Y3FD3A+FR7 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + +;Stay on ground for awhile... Maybe this will be table driven + .word ANI_XFLIP + WL 3,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + .word ANI_END + +****************************************************************************** +* +* #3 FALL DOWN + + SUBR yok_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL ANI_CODE,ckzpos + + WL 4,Y3FD3A+FR1 + WL 4,Y3FD3A+FR2 + .word ANI_OFFSET,0,41,0 ;x,y,z + WL 4,Y3FD3A+FR3 + WL 4,Y3FD3A+FR4 + WL 4,Y3FD3A+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,150,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 4,Y3FD3N+FR1 + WL 4,Y3FD3N+FR2 + WL 4,Y3FD3N+FR3 + WL 4,Y3FD3N+FR4 + WL 4,Y3FD3N+FR5 + WL 4,Y3FD3N+FR6 + WL 4,Y3FD3N+FR7 + WL 4,Y3FD3N+FR8 + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-20,0,0 ;x,y,z + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,Y3KF3B+FR1 + WL 3,Y3KF3B+FR2 + WL 3,Y3KF3B+FR3 + WL 3,Y3KF3B+FR4 + WL 3,Y3KF3B+FR5 + WL ANI_CODE,HIT_THE_MAT + WL 30,Y3KF3B+FR6 + + WL ANI_CHANGEANIM,yok_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* GETUPS + + SUBR yok_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 4,Y3GU2A+FR1 + WL 4,Y3GU2A+FR2 + WL 4,Y3GU2A+FR3 + WL ANI_GOTO,#common + + ;like above, but skip first three frames + SUBR yok_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +#common + WL 4,Y3GU2A+FR4 + WL 4,Y3GU2A+FR5 + WL 4,Y3GU2A+FR6 + WL 4,Y3GU2A+FR7 + WL 4,Y3GU2A+FR8 + WL 4,Y3GU2A+FR9 + WL 4,Y3GU2A+FR10 + WL 4,Y3GU2A+FR11 + WL 4,Y3GU2A+FR12 + + WL ANI_CODE,#choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + + WL 5,Y3GU2A+FR13 + WL 2,Y3GU2A+FR14 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,Y3GU2A+FR14 + + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 4,Y3GU4A+FR13 + WL 2,Y3GU4A+FR14 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,Y3GU4A+FR14 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +***** +* set status bit for a getup in 4, clear for a 2. +#choose_2or4 + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + + move *a13(NEW_FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #choose_2 + ori MODE_STATUS,a0 +#choose_2 + move a0,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* DIZZY + + SUBR yok_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + WL 10,Y4TI4C+FR4 + WL 10,Y4TI4C+FR5 + WL 10,Y4TI4C+FR6 + WL 10,Y4TI4C+FR7 + WL 10,Y4TI4C+FR8 + WL 10,Y4TI4C+FR7 + WL 10,Y4TI4C+FR6 + WL 10,Y4TI4C+FR5 + + WL ANI_GOTO,#loop + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR yok_hitonground_xflip_anim + .word ANI_XFLIP + + SUBR yok_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL 1,Y3CP3B+FR1 + WL ANI_SET_YVEL,39000h + + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,Y3CP3B+FR1 + + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_ZEROVELS + WL 4,Y3CP3B+FR5 + WL 4,Y3CP3B+FR6 + WL 4,Y3CP3B+FR7 + WL 4,Y3CP3B+FR8 + WL 4,Y3RL1A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR yok_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 2,Y3KF3B+FR1 ;Face down + WL ANI_SET_YVEL,80000h + WL 3,Y3KF3B+FR2 ;Face down + WL 3,Y3KF3B+FR3 ;Face down + WL 3,Y3KF3B+FR4 ;Face down + WL 3,Y3KF3B+FR5 ;Face down + WL 3,Y3KF3B+FR6 ;Face down + .word ANI_WAITHITGND + .word ANI_END + + +* Head slams into mat +;From head slam + + SUBR yok_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 3,Y3KF3B+FR1 ;Face down + WL ANI_SET_YVEL,40000h + WL 3,Y3KF3B+FR2 ;Face down + WL 3,Y3KF3B+FR3 ;Face down + WL 3,Y3KF3B+FR4 ;Face down + WL 3,Y3KF3B+FR5 ;Face down + WL 3,Y3KF3B+FR6 ;Face down + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,Y3KF3B+FR2 ;Face down + WL 3,Y3KF3B+FR3 ;Face down + WL 3,Y3KF3B+FR4 ;Face down + WL 3,Y3KF3B+FR5 ;Face down + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,Y3KF3B+FR6 ;Face down + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,yok_faceup_getup_anim + .word ANI_END + + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK +* + + SUBR yok_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 9,Y3FD3N+FR4 + + ;pick an action, roll or fall back + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back + + ;plenty o' room. roll over + .word ANI_OFFSET,5,0,0 + WL 4,Y3FD3N+FR5 + .word ANI_OFFSET,6,0,0 + WL 4,Y3FD3N+FR6 + .word ANI_OFFSET,6,0,0 + WL 4,Y3FD3N+FR7 + .word ANI_OFFSET,19,0,0 + WL 4,Y3FD3N+FR8 + + ;hit. stay + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,39,0,0 + WL 10,Y3RL1A+FR6 + + .word ANI_FACEDOWN + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#fall_back + ;sans. no room. fall back + .word ANI_OFFSET,-2,0,0 + WL 6,Y3FD3N+FR3 + .word ANI_OFFSET,-2,0,0 + WL 6,Y3FD3N+FR2 + .word ANI_OFFSET,-3,0,0 + WL 6,Y3FD3N+FR1 + .word ANI_OFFSET,-27,0,0 + .word ANI_XFLIP + WL 10,Y3RL1A+FR1 + + .word ANI_FACEDOWN + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + + +#***************************************************************************** + + SUBR yok_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*9/255 ;inv multiply (0-255 -> 0-9) + + .long Y3RL1A+FR1 ;0 + .long Y3RL1A+FR2 ;1 + .long Y3RL1A+FR3 ;2 + .long Y3RL1A+FR4 ;3 + .long Y3RL1A+FR5 ;4 + .long Y3RL1A+FR6 ;5 + .long Y3RL1A+FR7 ;6 + .long Y3RL1A+FR8 ;7 + .long Y3RL1A+FR9 ;8 + .long Y3RL1A+FR10 ;9 + .long 0,0,0,0,0,0,0 + + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR yok_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,Y3BR3Z+FR1 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 25,Y3BR3Z+FR1 + +; WL 4,Y3BR3Z+FR2 + .word ANI_XFLIP + WL 4,Y3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + .word ANI_DEBRIS,150,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + WL 4,Y3CP3B+FR5 + WL 4,Y3CP3B+FR6 + WL 4,Y3CP3B+FR7 + WL 4,Y3CP3B+FR8 + WL 4,Y3RL1A+FR1 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 3,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + .word ANI_END + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR yok_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,150,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,Y3CP3B+FR1 + .ref ckzpos + WL ANI_CODE,ckzpos + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,Y3CP3B+FR6 + WL 10,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + + SUBR yok_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,150,1,0,8,0 ;%chance, tbl index, x,y,z off + + + WL 1,Y3FD3Z+FR7 + WL ANI_CODE,ckzpos + WL 3,Y3FD3Z+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL ANI_CODE,HIT_THE_MAT + + WL 2,Y3CP3B+FR6 + WL 10,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#***************************************************************************** + + SUBR yok_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + + + WL 4,Y3FD3A+FR2 + .word ANI_OFFSET,0,41,0 ;x,y,z + WL 4,Y3FD3A+FR3 + WL 4,Y3FD3A+FR4 + WL 4,Y3FD3A+FR5 + + .word ANI_WAITHITGND +;;; .word ANI_ZERO_XZVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 4,Y3FD3A+FR6 + + WL 3,Y3FD3N+FR1 + WL 3,Y3FD3N+FR2 + WL 3,Y3FD3N+FR3 + WL 3,Y3FD3N+FR4 + WL 3,Y3FD3N+FR5 + WL 3,Y3FD3N+FR6 + WL 3,Y3FD3N+FR7 + WL 3,Y3FD3N+FR8 + + .word ANI_ZERO_XZVELS + +;;; .word ANI_XFLIP + + WL 8,Y3RL1A+FR6 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BACKUP/YOK_HIT.IMG b/BACKUP/YOK_HIT.IMG new file mode 100644 index 0000000..ca9e850 Binary files /dev/null and b/BACKUP/YOK_HIT.IMG differ diff --git a/BACKUP/YOK_MJT.IMG b/BACKUP/YOK_MJT.IMG new file mode 100644 index 0000000..fb92963 Binary files /dev/null and b/BACKUP/YOK_MJT.IMG differ diff --git a/BACKUP/_MARKER_.ASM b/BACKUP/_MARKER_.ASM new file mode 100644 index 0000000..e69de29 diff --git a/BAD_IMGS.ASM b/BAD_IMGS.ASM new file mode 100755 index 0000000..216dcbe --- /dev/null +++ b/BAD_IMGS.ASM @@ -0,0 +1,22 @@ +These frames are used in at least one .ASM file, but aren't being loaded. +We outta maybe fix this or something. + + +B4YR3A02 yokseq2.asm +B4YR3A06 yokseq2.asm +B4YR3A08 yokseq2.asm + +D3GU4A01 rzrseq3.asm + +L2ST2C01 lexseq1.asm + +S2CT2A09 shnseq2.asm +S2CT2A10 shnseq2.asm +S2CT2A11 shnseq2.asm +S2CT2A12 shnseq2.asm + +U3DD3A01 undseq3.asm +U4BF3A04 lexseq3.asm + +Y2ST2Z01 yokseq1.asm + \ No newline at end of file diff --git a/BAKGND.ASM b/BAKGND.ASM new file mode 100755 index 0000000..f31aadb --- /dev/null +++ b/BAKGND.ASM @@ -0,0 +1,841 @@ +************************************************************** +* +* Software: Todd Allen, Mark Turmell, Shawn Liptak +* Initiated: 1988? +* +* Modified: Shawn Liptak, 9/16/91 -Minor improvements (Total carnage) +* Shawn Liptak, 11/15/91 -CREATE0 +* Shawn Liptak, 2/10/92 -Started basketball +* Shawn Liptak, 5/4/92 -Works with DMA2 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 9/23/92 12:26 +************************************************************** + .file "bakgnd.asm" + .title "background handlers" + .option b,d,l + .mnolist + + .include "mproc.equ" + .include "display.equ" + .include "gsp.equ" + .include "sys.equ" + .include "game.equ" + .include "macros.h" + + .include "fontsimg.glo" + .include "bgndtbl.glo" ;background equates + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref pal_getf + + .REF DO_FLASH,DO_JASON_CROWD,DO_TONY_CROWD + .REF DO_VOGEL_CROWD + +****************************************************************************** + + + +;defs + + + +;uninitialized ram definitions + + + .bss BGNDPALTBL ,32 + .bss MOD_POS ,32 + BSSX BAKBITS ,10000 + + BSSX BAKMODS ,32 + + + .text + +******************************** + +*BACKGROUND UPDATER EQUATES +BLSTSTRT .EQU >8000 +BLSTEND .EQU >8001 + +************* LOCAL CONSTANTS FOR UPD ************** + +DISP_PAD .SET [20h,40h] ;Y:X +;DISP_PAD .SET [20h,20h] ;Y:X + +;DISP_PAD2 .SET [80h,20h] ;Y:X + +WIDEST_BLOCK .SET 250 + +* MUST KEEP THE SIZE OF THESE STRUCTURES A MULTIPLE OF 16 +;MAP_ZFLAGSPAL .SET 0 +MAP_PAL .SET 0 ;SIZE 4 - PALETTE SELECT +MAP_FLAGS .SET 4 ;SIZE 4 - BIT 0 HFLIP, BIT 1 YFLIP +MAP_Z .SET 8 ;SIZE 8 +MAP_X .SET 16 ;SIZE 16 +MAP_Y .SET 32 ;SIZE 16 +MAP_HDR .SET 48 ;SIZE 16 - OFFSET IN LONG WORDS FROM BLOCK_HDR_TBL + ; BITS 12-15 ARE BITS 4-7 OF PAL + ; MAP_HDR SET TO >FFFF IF BLOCK IS NOT ALLOCATED +BLOCK_SIZE .SET 64 ;Uses shifts! + +* Offsets for a BLOCK HDR structure +;MAP_SIZE .set 0 +MAP_W .set 0 ;Word +MAP_H .set 16 ;Word +MAP_DATAPTR .set 32 ;Long +MAP_CTRL .equ 64 ;DMA ctrl word +;BLOCK_HDR_SIZE .set 80 + + +************************************************************************ +* SCAN A MODULE LIST TO FIND OUT WHICH MODULE CONTAINS BLOCKS +* WHICH NEED TO BE CHECKED +* A0=XPOS FOR WHICH HEIGHT OF BACKGROUND NEEDS TO BE DETERMINED +*RETURNS A0 - +* MINIMUM YPOS (MAX HEIGHT) OF PRIMARY BACKGROUND WHICH OVERLAPS +* SPECIFIED XPOS +* A0 = 0 IF XPOS IS INVALID + +BGNDHGHT + MMTM SP,A1,A2,A3,A4,A7,A8,A9,A10,A11 + MOVE A0,A1 + + CLR A10 ;INIT PACKED Y:X STARTING POSITION + CLR A11 + + MOVE @BAKMODS,A0,L ;* A0- PTR TO THE MODULE LIST +MODLP0 MOVE *A0+,A8,L ;LOAD MODULE PTR + jrz MODX0 ;End? + MOVE *A8+,A9,L ;LOAD PACKED Y:X SIZE + + MOVE *A0+,A3 ;X START POSITION + ZEXT A3 + CMPI BLSTSTRT,A3 + JRNZ NOTLSTSTRTX + MOVE A11,A3 + SUBXY A9,A3 + JRUC GOTNEWX0 +NOTLSTSTRTX + CMPI BLSTEND,A3 + JRNZ GOTNEWX0 + MOVE A11,A3 +GOTNEWX0 + MOVE *A0+,A4 ;Y START POSITION + ZEXT A4 + CMPI BLSTSTRT,A4 + JRNZ NOTLSTSTRTY + MOVE A11,A4 + SUBXY A9,A4 + JRUC GOTNEWY0 +NOTLSTSTRTY + CMPI BLSTEND,A4 + JRNZ NOTLSTENDY + MOVE A11,A4 + JRUC GOTNEWY0 +NOTLSTENDY + SLL 16,A4 +GOTNEWY0 + MOVY A4,A3 + MOVE A3,A10 + +; CMPXY A10,A1 +; JRV MODX0 ;JUMP TO EXIT LOOP IF MOD START X > X SOUGHT + + ;IF MOD END X < X SOUGHT KEEP SEARCHING MOD LIST + MOVE A10,A11 + ADDXY A9,A11 ;A11 IS MODULE Y:X END + + MOVE *A8+,A9 ;LOAD # OF BLOCKS + ADD A9,A7 ;A7 IS NEW BAKBITS PTR + CMPXY A11,A1 + JRNV MODLP0 ;SKIP IF AX < BX + + MOVE A10,A0 + SRL 16,A0 + JRUC GOTHGHT + +MODX0 CLR A0 +GOTHGHT MMFM SP,A1,A2,A3,A4,A7,A8,A9,A10,A11 + RETS + + +******************************** +* PARMS +* A0=XPos of block +* A1=*Start of bkgnd block table +* A2=*End of block table +* >A0=ADDRESS OF FIRST BLOCK WITH X COORDINATE >= PARM +* IF NEW X IS HIGHEST RETURNS NEXT EMPTY BLOCK +* IF NO BLOCKS WITH >= X, RETURN 0 + +* A1 = BLOCK TABLE BASE + OFFSET TO X VAL +* A14 - THRESHHOLD FOR SWITCHING FROM BINARY TO LINEAR SEARCH +* A9 = LOW # -- # GREATEST BACKGROUND BLOCK +* A10 = MID # -- (HIGH + LOW) >> 1 +* A2 = HIGH # -- # OF LOWEST BACKGROUND BLOCK + + SUBRP bgnd_get1stx + + PUSH a1,a2,a8,a9,a10 + + clr a9 ;set low = 0 + sub a1,a2 + srl 6,a2 ;div by size of block (64) + addi MAP_X,a1 ;block tbl base + x offset + movk 5,a14 ;threshhold for switching from binary to linear search + +#lp move a2,a10 + sub a9,a10 ;if (high - low) <= 5 finish with linear search + cmp a14,a10 + jrle lsrch + + srl 1,a10 ;/2 + add a9,a10 + + move a10,a8 ;Get mid X + sll 6,a8 ;multiply by block size (64) + add a1,a8 + move *a8,a8 ;get x coor of the block + cmp a0,a8 + jrlt blow + + move a10,a2 ;high = mid + jruc #lp +blow move a10,a9 ;low = mid + jruc #lp + +lsrch + ;* FINISH WITH A LINEAR SEARCH OF BLOCK TABLE FROM LOW TO HIGH + ;* ENDING WITH FIRST BLOCK X COOR THAT IS >= A0 + ;* A0 = X VAL BEING SEARCHED FOR + ;* A9 = LOW ADDRESS -- PTS TO X OFFSET OF BLOCK + ;* A2 = HIGH ADDRESS -- PTS TO X OFFSET OF BLOCK + + SLL 6,A9 ;LOW BLOCK # TO LOW BLOCK OFFSET + SLL 6,A2 ;HIGH BLOCK # TO HIGH BLOCK OFFSET + ADD A1,A9 + ADD A1,A2 + MOVI BLOCK_SIZE,A8 +#linlp + MOVE *A9,A10 ;X COOR + CMP A0,A10 + JRGE GOTB ;IF LOW->X >= A0 GOTO FOUND + ADD A8,A9 + CMP A2,A9 + jrle #linlp + clr a0 ;block not found, return 0 + jruc #x + +GOTB + move a9,a0 ;return a ptr to the block + subi MAP_X,a0 + +#x + PULL a1,a2,a8,a9,a10 + rets + + +*********************** BAK END ******************************* +;* SCAN A MODULE LIST AND RETURN THE PACKED Y:X END POINT +;PARMS + ;A0 - MODULE LIST +;RETURNS + ;A0 - PACKED Y:X END OF WAVE +;BAK_END +; MMTM SP,A3,A4,A8,A9,A10,A11 +; +; CLR A10 ;CLR PACKED Y:X STARTING POSITION +; CLR A11 +; +; +;WEMODLP +; MOVE *A0+,A8,L ;LOAD MODULE PTR +; JRZ WEMODX ;END OF THE MODULE TBL +; MOVE *A8+,A9,L ;LOAD PACKED Y:X SIZE +; +; MOVE *A0+,A3,W ;X START POSITION +; ZEXT A3,W +; CMPI BLSTSTRT,A3 +; JRNZ WENOTLASTSTARTX +; MOVE A11,A3 +; SUBXY A9,A3 +; JRUC WEGOTNEWX +;WENOTLASTSTARTX +; CMPI BLSTEND,A3 +; JRNZ WEGOTNEWX +; MOVE A11,A3 +;WEGOTNEWX +; MOVE *A0+,A4,W ;Y START POSITION +; ZEXT A4,W +; CMPI BLSTSTRT,A4 +; JRNZ WENOTLASTSTARTY +; MOVE A11,A4 +; SUBXY A9,A4 +; JRUC WEGOTNEWY +;WENOTLASTSTARTY +; CMPI BLSTEND,A4 +; JRNZ WENOTLASTENDY +; MOVE A11,A4 +; JRUC WEGOTNEWY +;WENOTLASTENDY +; SLL 16,A4 +;WEGOTNEWY +; MOVY A4,A3 +; MOVE A3,A10 +; +; MOVE A10,A11 +; ADDXY A9,A11 ;A11 IS MODULE Y:X END +; +; JRUC WEMODLP +; +;WEMODX +; MOVE A11,A0 +; MMFM SP,A3,A4,A8,A9,A10,A11 +; RETS + + +*********************** BAK START ******************************* +* SCAN A MODULE LIST AND RETURN THE PACKED Y:X STARTING POINT +*PARMS +*A0 - MODULE LIST +*RETURNS +*A0 - PACKED Y:X START OF WAVE +;BAK_STRT +; MMTM SP,A3,A4,A8,A9,A11 +; +; CLR A11 +; MOVE *A0+,A8,L ;LOAD MODULE PTR +; JRZ WSMODX ;END OF THE MODULE TBL +; MOVE *A8+,A9,L ;LOAD PACKED Y:X SIZE +; +; MOVE *A0+,A3,W ;X START POSITION +; ZEXT A3,W +; CMPI BLSTSTRT,A3 +; JRNZ WSNOTLASTSTARTX +; MOVE A11,A3 +; SUBXY A9,A3 +; JRUC WSGOTNEWX +;WSNOTLASTSTARTX +; CMPI BLSTEND,A3 +; JRNZ WSGOTNEWX +; MOVE A11,A3 +;WSGOTNEWX +; MOVE *A0+,A4,W ;Y START POSITION +; ZEXT A4,W +; CMPI BLSTSTRT,A4 +; JRNZ WSNOTLASTSTARTY +; MOVE A11,A4 +; SUBXY A9,A4 +; JRUC WSGOTNEWY +;WSNOTLASTSTARTY +; CMPI BLSTEND,A4 +; JRNZ WSNOTLASTENDY +; MOVE A11,A4 +; JRUC WSGOTNEWY +;WSNOTLASTENDY +; SLL 16,A4 +;WSGOTNEWY +; MOVY A4,A3 +; MOVE A3,A0 +; +;WSMODX +; MMFM SP,A3,A4,A8,A9,A11 +; RETS + + +**************************************************************** +* Update disp list for main bakgnd +* Deletes all display objects which are not on the screen +* Insures all background blocks on screen are on the disp list +* Input: WORLDTL, SCRNTL, SCRNLR, BAKLST, BAKBITS, BAKMODS +* Trashes scratch + + SUBR BGND_UD1 + + PUSH a2,a3,a4,a5,a6,a7,a8,a9,a10,a11 +; PUSH b2 + + move @WORLDTL,a3,L + move a3,a4 + move @SCRNTL,a0,L + addxy a0,a3 + move @SCRNLR,a0,L + addxy a0,a4 + + movi DISP_PAD,a0 ;XY border pad + + subxy a0,a3 ;A3=DISP_TL + addxy a0,a4 ;A4=DISP_LR + movi BAKLST,a8 ;A8=*bakgnd list + callr bgnd_delnonvis + + move @BAKMODS,a0,L ;*Module list + movi BAKBITS,a7 ;Bit table for block being on disp list +; movi INSBOBJ,b2 ;*Insert routine + callr bgnd_scanmod + +; PULL b2 + PULL a2,a3,a4,a5,a6,a7,a8,a9,a10,a11 + rets + + +#******************************* +* Scan a module list to find out which modules contain blocks +* which need to be checked for addition to the display list. +* A0=*Module list +* A3=DISP_TL +* A4=DISP_LR +* A7=*Bakbits table +* B2=*Insert routine +* Trashes A0-A2,A5,A6,A8-A11,A14,B0-B1 + + SUBRP bgnd_scanmod + + move a7,a6 ;a6 will point to bakbits after mod + jruc #next + .align + +#lp + move *a0+,a9,L ;Y:X start + + move *a8+,a11,L ;Mod Y:X size + addxy a9,a11 ;Mod Y:X end + + move *a8+,a2 ;# of blocks + add a2,a6 ;A6=*Next bakbits + + cmpxy a3,a11 + jrxlt #next ;Mod x end < tl x ? + jrylt #next ;Mod y end < tl y ? + + cmpxy a9,a4 + jrxlt #next ;Mod x start > br x ? + jrylt #next ;Mod y start > br y ? + + sll 6,a2 ;*64 (each block is 4 words) + move *a8+,a1,L ;A1=*block table + add a1,a2 ;A2=*block table end + + move *a8+,a5,L ;A5=*hdrs + move *a8+,a10,L ;A10=*PAL table + subxy a9,a3 + subxy a9,a4 + callr bgnd_addmod + addxy a9,a3 + addxy a9,a4 + +#next move a6,a7 + move *a0+,a8,L ;* module + jrnz #lp ;!End? + + +#x rets + + +#******************************* +* This function adds all module blocks in the given range of module +* relative coors to the display list. +* The boundries are included in the group to add. +* +* A1=*Bakgnd block table +* A2=*Bakgnd block table end +* A3=DISP_TL relative to the module start pos +* A4=DISP_LR ^ +* A5=*Bakgnd hdr table +* A7=*Bakbits table +* A9=Module start position Y:X +* A10=*Palette table for new block +* B2=*Bakground insert routine primary|secondary +* +* Trashes A1,A8,A14,B0-B1 + + SUBRP bgnd_addmod + + PUSH a0,a6,a7 + + movx a3,a0 ;find 1st universe block with x >= a9 + sext a0 + subi WIDEST_BLOCK,a0 ;1st x coordinate of a block + callr bgnd_get1stx + jrz #x ;no blocks with > X ? + + movi BLOCK_SIZE,a6 + + move a0,a8 ;A0=*Block + sub a1,a8 ;subtract off start of table + srl 6,a8 ;divide by block size (64) + add a7,a8 ;a8=ptr to bit which indicates block on list + subk 8,a8 ;after inc a8, use movb *a8 to load sign bit + sub a6,a0 ;subtract block size + move a0,a7 + +#sclp1 + addk 1,a8 + add a6,a7 ;Next block + cmp a2,a7 + jrge #x ;End? + + movb *a8,a0 ;Check bakbit + jrn #sclp1 ;Already displayed? + + move *a7(MAP_X),a1 + cmpxy a3,a1 + JRXGE #qscanstrt ;Block X >= TL X ? (Do quicker scan) + + move *a7(MAP_HDR),a14 + sll 32-12,a14 ;Bits 0-11 are hdr offset + srl 32-12-4,a14 ;*16 + move a14,a0 ;>*5 + sll 2,a0 + add a0,a14 + add a5,a14 ;A14=*Img hdr + + move *a14,a0 ;MAP_W + add a0,a1 + cmpxy a3,a1 + JRXLT #sclp1 ;Block X+W < TL X ? (not in range) + + move *a7(MAP_Y),a1 + sll 16,a1 + cmpxy a4,a1 + JRYGE #sclp1 ;Block Y >= BR Y ? + + move *a14(MAP_H),a0 + sll 16,a0 + add a0,a1 + cmpxy a3,a1 + JRYLT #sclp1 ;Block Y+H < TL Y ? + + callr bgnd_addblk + jrnc #sclp1 + + jruc #x ;No more blocks! + + +* Since blocks are sorted from left to right, we can do a quicker scan +* once block left > display left + +#sclp2 + addk 1,a8 + add a6,a7 ;Next block + cmp a2,a7 + jrge #x ;End? + + movb *a8,a0 ;Check bakbit + jrn #sclp2 ;Already displayed? + +#qscanstrt + move *a7(MAP_Y),a1 + sll 16,a1 + cmpxy a4,a1 + JRYGE #sclp2 ;Block Y >= BR Y ? + + move *a7(MAP_HDR),a14 + sll 32-12,a14 ;Bits 0-11 are hdr offset + srl 32-12-4,a14 ;*16 + move a14,a0 ;>*5 + sll 2,a0 + add a0,a14 + add a5,a14 ;A14=*Img hdr + + move *a14(MAP_H),a0 + sll 16,a0 + add a0,a1 + cmpxy a3,a1 + JRYLT #sclp2 ;Block Y+H < TL Y ? + + move *a7(MAP_X),a1 + cmpxy a4,a1 + JRXGE #x ;BLOCK X > BR X ? + + callr bgnd_addblk + jrnc #sclp2 + + +#x PULL a0,a6,a7 + rets + + +#******************************* +* Add a block (object) to a list +* A5=*Base of background block hdr +* A7=*Background block +* A8=*Bakbit for obj +* A9=Module start position Y:X +* A10=*Palette table for new block +* B2=*Ins routine +* Trashes A1,A14,B0-B1 +* C set if getobj fails + + + SUBRP bgnd_addblk + + PUSH a0,a2,a3,a4 + + + calla GETOBJ + jrz #x + + movb *a8,a14 ;set bit in bitmap for block on list + ori >80,a14 + movb a14,*a8 + + move a8,*a0(OPLINK),L ;OPLINK = *Bakbit for obj + + clr a1 + move a1,*a0(OID) + move a1,*a0(OFLAGS) + move a1,*a0(OXVEL),L + move a1,*a0(OYVEL),L + movi 01000100H,a1 + move a1,*a0(OSCALE),L + + move *a7(MAP_X),a1,L ;A1=ypos:xpos of block from mod base + addxy a9,a1 ;+module base position + move a1,*a0(OXPOS) + srl 16,a1 + move a1,*a0(OYPOS) + move *a7,a4 ;A4=map_z,8:map_flags,4:map_pal,4 + move a4,a3 + zext a3 + srl 8,a3 + move a3,*a0(OZPOS) + + move *a7(MAP_HDR),a1 + movx a1,a14 + sll 32-16,a14 + srl 32-4,a14 + sll 4+5,a14 ;Bits 12-15 are bits 4-7 of pal index *32 + + sll 32-12,a1 ;Bits 0-11 are hdr offset + srl 32-12-4,a1 ;*16 + move a1,a3 ;>*5 + sll 2,a1 + add a3,a1 + + add a5,a1 ;A1=*Img hdr + + move a4,a3 ;A4=Map_z,8: map_flags,4: map_pal,4 + sll 32-4,a4 ;Last four bits for *pal + srl 32-4-5,a4 ;*32 + add a14,a4 + add a10,a4 ;+Pal_t base + move a0,a2 ;Save A0 + move *a4,a0,L ;Get *PAL + move a1,a4 + .if NMBPAL + calla pal_getb + .else + calla pal_getf + .endif + jrnz bsetpal ;No PAL? + clr a0 +bsetpal + zext a0 + move a0,*a2(OPAL),L + move a2,a0 ;Restore A0 + move a4,a1 ;^ A1 + move a1,*a0(OIMG),L ;A1=Data block pointer + + move *a1(MAP_CTRL),a4 ;Get DMA ctrl + ori >8002,a4 ;A4=flags (>8000 dma go, 2) + srl 4,a3 ;remove palette bits + sll 32-2,a3 + jrc #trans ;Transparent? + addk 1,a4 +#trans srl 26,a3 ;Line up flip bits + or a3,a4 + + move *a1+,a2,L ;ISIZE + move *a1,a3,L ;Get SAG + zext a4 ;Zero offset in A4 + + move a0,a1 + addi OSIZE+32,a1 + mmtm a1,a2,a3,a4 ;Stuff OSIZE,OSAG,OFFSET,OCTRL + + move *a0(OZPOS),a4 + + cmpi 80,a4 ;> 80? + jrlt #normz ;Normal? + + cmpi 100,a4 + jrge no_call_routine + move a4,a14 + subi 80,a14 + X32 a14 + addi z_t,a14 + move *a14,a14,L + call a14 + jruc #end_clever_stuff + +no_call_routine + + subi 100,a4 + X16 a4 + addi #ztbl,a4 + move *a4,a4 + move a4,*a0(OZPOS) + + + .if 0 +; sll 5,a4 ;*32 +; addi z_t,a4 +; move *a4,a4,L +; call a4 ;Call special code + + move a4,*a0(OZPOS) + + subi 20,a4 ;> 100? + jrgt #no_rel + move *a0(OFLAGS),a4 + ori M_SCRNREL,a4 + move a4,*a0(OFLAGS) + move *a0(OYPOS),a4 + andi 0ffh,a4 + move a4,*a0(OYPOS) +#no_rel + .endif + +#end_clever_stuff + move *a0(OFLAGS),a4 + ori M_BOBJ,a4 + move a4,*a0(OFLAGS) + + clr a4 + move a4,*a0(OXVEL),L + move a4,*a0(OYVEL),L + + calla INSOBJ ;Put on objlst + clrc + PULL a0,a2,a3,a4 + rets + +#normz +; call b2 ;Call insert routine + calla INSBOBJ + clrc + PULL a0,a2,a3,a4 + rets + +#x setc ;failure to get object + PULL a0,a2,a3,a4 + rets + + + +#ztbl + .word 013c7h ;100 mat + .word 013c8h ;101 back posts + .word 013c9h ;102 back buckles + .word 01500h ;103 front buckles + .word 01501h ;104 front posts + .word 01502h ;105 front mat +; .word 015aah ;103 front buckles +; .word 015abh ;104 front posts +; .word 015ach ;105 front mat + .word 01769h ;106 front gate + .word 0 ;107 + .word 0 ;108 + .word 0 ;109 + .word 0 ;110 + .word 0 ;111 + .word 0 ;112 + .word 0 ;113 + .word 0 ;114 + .word 0 ;115 + .word 0 ;116 + .word 0 ;117 + .word 0 ;118 + .word 0 ;119 + .word 0 ;120 + + + +******************************** +* These functions are called when a block has the appropriate Z +* A0=*Obj +* You can trash A1-A4,A14,B0,B1 + +z_t +;80 + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,DO_FLASH,DO_JASON_CROWD,DO_TONY_CROWD,DO_VOGEL_CROWD +;90 + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null,bak_null,bak_null,bak_null + .long bak_null,bak_null + + +bak_null + + rets + + + +#******************************* +* This function deletes all objs outside the given range +* of coors from the display list. +* The boundries are not included in the group to delete. +* A3=DISP_TL +* A4=DISP_LR +* A8=*Bakgnd list +* Trashes A0,A6-A9 + .align + SUBR bgnd_delnonvis + +#lp move a8,a9 ;ptr to prev in a9 + move *a8,a8,L ;ptr to next in a8 + jrz #x ;End? + +#lp2 MOVE *A8(OXPOS),A7 + CMPXY A7,A4 + JRXLT DEL_IT ;JUMP IF BR X < BLOCK X + + MOVE *A8(OYPOS),A0 + SLL 16,A0 + CMPXY A0,A4 + JRYLT DEL_IT ;JUMP IF BR Y < BLOCK Y + + MOVE *A8(OIMG),A1,L + MOVE *A1,A6 ;A6 BLOCK WIDTH + ADD A6,A7 + CMPXY A3,A7 + JRXLT DEL_IT ;JUMP IF TL X > BLOCK X+W + + MOVE *A1(MAP_H),A7 ;A7 BLOCK HEIGHT + SLL 16,A7 + ADD A7,A0 + CMPXY A3,A0 + JRYGE #lp ;JUMP IF TL Y <= BLOCK Y+H + +DEL_IT + move *a8(OPLINK),a0,L ;>Clr the on display list bit + movb *a0,a7 + sll 32-7,a7 + srl 32-7,a7 + movb a7,*a0 + + move *a8,*a9,L ;Unlink + move @OFREE,a0,L + move a0,*a8,L + move a8,@OFREE,L ;Put on free list + move *a9,a8,L ;A8=*Next obj + jrnz #lp2 ;More? + +#x rets + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BAM.ASM b/BAM.ASM new file mode 100755 index 0000000..834a1d0 --- /dev/null +++ b/BAM.ASM @@ -0,0 +1,2972 @@ +************************************************************** +* +* 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 "jjxm.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" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref get_punch_dtime,ck_teammate_pin,raisearm_check + .ref can_pin,round_award,set_raisearm_bit + .ref change_anim1,change_anim1a + .ref change_anim2,change_anim2a + .ref keep_attached,drone_change_back,std_walk_fast,std_taunt + .ref get_opp_plyrmode,mode_dead,get_opp_process + .ref check_secret_moves,process_ptrs,master_keep_attached + .ref mode_choking,do_taunt,execute_walk,bounce_off_ropes + .ref climb_turnbuckle,ck_ignore,CLIMB_ROPES + .ref JUMP_ROPES,ADD_IF_SILENT,FIND_AND_KILL_ENDLESS + .ref DO_REVERSAL,PCNT,DO_REVERSAL_MESS,CHECK_COMBO_GO + .ref BONUS_MESS,BLOCK_WOOSH + .ref blocking_off + .ref hyper_speed_on + .ref in_finish_move + .ref p1rounds,p2rounds + .if NUM_BAM_FINISHES + .ref bam_finish1_move + .if NUM_BAM_FINISHES > 1 + .ref bam_finish2_move + .endif + .endif + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref wres_slave_anim + .ref bam_zip_anim + .ref start_run_anim + + .ref bam_stand2_anim,bam_stand8_anim + .ref bam_stand4_anim,bam_stand6_anim + .ref bam_torso2_anim,bam_torso8_anim + .ref bam_torso4_anim,bam_torso6_anim + .ref bam_pogo_anim + .ref bam_3_hiptoss_anim + + .ref bam_2_to_4_turn_anim,bam_8_to_6_turn_anim ;stand + .ref bam_4_to_2_turn_anim,bam_6_to_8_turn_anim + .ref bam_4_to_6_turn_anim,bam_6_to_4_turn_anim + .ref bam_2_to_8_turn_anim,bam_8_to_2_turn_anim + .ref bam_4_to_8_turn_anim,bam_6_to_2_turn_anim + .ref bam_2_to_6_turn_anim,bam_8_to_4_turn_anim + + .ref bam_2_to_4_turn2_anim,bam_8_to_6_turn2_anim ;torso + .ref bam_4_to_2_turn2_anim,bam_6_to_8_turn2_anim + .ref bam_4_to_6_turn2_anim,bam_6_to_4_turn2_anim + .ref bam_2_to_8_turn2_anim,bam_8_to_2_turn2_anim + .ref bam_4_to_8_turn2_anim,bam_6_to_2_turn2_anim + .ref bam_2_to_6_turn2_anim,bam_8_to_4_turn2_anim + + .ref bam_walk1_f2_anim,bam_walk2_f2_anim,bam_walk4_f2_anim + .ref bam_walk5_f2_anim,bam_walk6_f2_anim,bam_walk8_f2_anim + + .ref bam_walk1_f4_anim,bam_walk2_f4_anim,bam_walk4_f4_anim + .ref bam_walk5_f4_anim,bam_walk6_f4_anim,bam_walk8_f4_anim + + .ref bam_4_fpunch_anim + .ref bam_2_fpunch_anim + .ref bam_4_block_anim + .ref bam_2_butts_anim,bam_4_butts_anim + + .ref bam_run2_anim + + .ref bam_2_head_hit_anim,bam_4_head_hit_anim + .ref bam_2_head_hit2_anim,bam_4_head_hit2_anim + .ref bam_2_body_hit_anim,bam_4_body_hit_anim + + .ref bam_2_punch_anim,bam_4_punch_anim + .ref bam_2_kick_anim,bam_4_kick_anim + .ref bam_flying_kick_anim + + .ref bam_2_body_hit_anim,bam_4_body_hit_anim + .ref bam_hitonground_anim + + .ref bam_2_butt_anim,bam_4_butt_anim + .ref bam_2_knee_anim,bam_4_knee_anim +; .ref bam_4_bigboot_anim + + .ref bam_head_hit2_anim,bam_head_hit_dizzy_anim + .ref bam_2_stomp_anim,bam_4_stomp_anim + + .ref bam_4_push_anim + .ref bam_4_losebal_anim + + .ref bam_2_grabfling_anim + .ref bam_4_grabfling_anim + + .ref bam_fall_back_anim,bam_knees_anim + + .ref bam_2_faceup_getup_anim + .ref bam_4_faceup_getup_anim + + .ref bam_2_lbowdrop_anim,bam_4_lbowdrop_anim + + .ref bam_4_jumpkick_anim + +; .ref bam_running_headbutt + .ref bam_3_pile_driver_anim + + .ref bam_4_graboh_anim,bam_heldoh_anim + .ref bam_2_graboh_anim + .ref bam_holdoh_anim + .ref bam_stndholdoh_anim + + .ref bam_backbreaker_anim + + .ref mode_inair2,mode_puppet + .ref bam_2_pin_anim + .ref bam_4_pin_anim + + .ref bam_3_butt_drop_anim + + .ref bam_climb_up_anim,bam_climb_down_anim,bam_bellyflop_anim + .ref bam_combo_knees_anim,bam_combo_punch_anim + .ref bam_2_raise_arm_anim,bam_4_raise_arm_anim + + .ref bam_neckbreaker2_anim,bam_slamdwn_anim + .ref bam_4_superkick_anim,bam_3_hiptoss2_anim + .ref bam_neckbreaker_run_anim + .ref bam_fly_cline_anim,bam_4_slap_anim + .ref bam_neckbreaker_anim,bam_2_hair_pickup_anim + .ref bam_2_superkick_anim,bam_2_slap_anim + .ref bam_3_head_hold2_anim,bam_3_head_held_stand_anim + .ref bam_3_head_hold_anim + .ref bam_4_hair_pickup_anim + .ref bam_2_napalm_anim,bam_4_napalm_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +bam_secret_moves +;Button held down moves need to be first entry + .long #firepnch ;must have this one + + .long #neck_grab + .long #grab_fling + .long #hip_toss + .long #grab_fling2 + .long #hip_toss2 + .long #jumpkick + .long #grab_fling2 + .long #hip_toss2 + .long #napalm + .long 0 + +****************************************************************************** +* +* SPECIAL MOVE PROCESSES - Secret moves +* +;a8=process of wrestler + + SUBR bam_smove_table + .long bam_charge_neckbreaker + .long bam_hdhold_combo1 + .long bam_hdhold_pile + .long bam_hdhold_pogo + .long bam_hdhold_combo2 +; .long bam_hdhold_anti_combo + .long bam_grab_toss_air + .long std_walk_fast + .long std_taunt + + .if NUM_BAM_FINISHES + .long bam_finish_move1 + .endif + .if NUM_BAM_FINISHES > 1 + .long bam_finish_move2 + .endif + .long 0 + +; .long bam_hdhold_graboh +; .long bam_hdhold_neckbreaker + +******************************************************************************* + +#jumpkick + .word B_SKICK, J_ALL + .word J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 32 ;max + .long #scrt_flykick + +#scrt_flykick + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ATTACHED,a0 + jrz #out + + movi bam_4_jumpkick_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + + rets + +******************************************************************************* + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + + move *a13(LAST_HEADHOLD),a14,L + move @PCNT,a0,L + sub a14,a0 + cmpi 2*60,a0 + jrge #ok2 + +;This head grab is too close (in terms of time) to most recent grab + .ref bam_3_fake_hold_anim + movi bam_3_fake_hold_anim,a0 + calla change_anim1a + rets + +#ok2 + move *a13(CLOSEST_XDIST),a1 + cmpi 100,a1 + jrgt #std_grab + + movi bam_3_head_hold2_anim,a0 + calla change_anim1a + + rets + +#std_grab + movi bam_3_head_hold_anim,a0 + calla change_anim1a + + rets + +******************************************************************************* + +#napalm + .word B_PUNCH, J_ALL + .word J_DOWN, J_REAL_LR + .word J_DOWN, J_REAL_LR + .word 8000h | 50 ;max + .long #scrt_napalm + +#scrt_napalm + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + + ;only if opponent is on the ground (and not dead!) + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrne #out + + ;smart-target him (don't wanna hit standing guys) + move *a13(STATUS_FLAGS),a14,L + ori M_SMART_ATTACK,a14 + move a14,*a13(STATUS_FLAGS),L + calla get_opp_process + move a0,*a13(SMART_TARGET),L + + FACE24 bam,napalm_anim + calla change_anim1a + + ;do some sound here + + rets + +******************************************************************************* + +#hip_toss +; .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_hiptoss + + .word B_PUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_hiptoss + +#scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out +; cmpi MODE_BLOCK,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit + + move *a13(CLOSEST_DIST),a0 + cmpi 80h,a0 + jrgt #out + +#doit + movi bam_3_hiptoss_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,HIPTOSS_T1,PUNCH_T2 + + rets + +******************************************************************************* + +#grab_fling2 + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#hip_toss2 + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#scrt_grabfling2 + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrz #yes + rets + +******************************************************************************* + +#grab_fling +; .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_grabfling + + .word B_SPUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_grabfling + +#scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + movi bam_3_hiptoss_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,HIPTOSS_T1,PUNCH_T2 + + rets +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + +; move *a13(LAST_FLING_ATTEMPT),a14,L +; move @PCNT,a0,L +; sub a14,a0 +; cmpi 3*60,a0 +; jrge #ok2a +; +; FACE24 bam,slap_anim +; calla change_anim1a +; +; WRSND W_BAMBAM,SPUNCH_T1,SPUNCH_T2 +; rets +; +;#ok2a +; move @PCNT,a14,L ;use 32-bit PCNT! +; move a14,*a13(LAST_FLING_ATTEMPT),L + + FACE24 bam,grabfling_anim + calla change_anim1a + + WRSND W_BAMBAM,GRABFLING_T1,PUNCH_T2 + + rets + + +******************************************************************************* + +#firepnch + + move *a13(BUT_VAL_UP),a0 + btst PLAYER_PUNCH_BIT,a0 + jrz #no_punch + + move *a13(PLYRNUM),a0 + calla get_punch_dtime + cmpi 85,a0 ;> min? + jrlt #no_punch + + callr #scrt_firepnch + setc + rets + +#no_punch + clrc + rets + + +#scrt_firepnch + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_HEADHOLD,a0 + jrz #out + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + +#ok + FACE24 bam,fpunch_anim + calla change_anim1a + WRSND W_BAMBAM,SPUNCH_T1,SPUNCH_T2 +#out + rets + + .if NUM_BAM_FINISHES +#****************************************************************************** + SUBRP bam_finish_move1 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_DOWN,0,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN B_PUNCH,J_ALL,#reset + + movi bam_finish1_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + + .if NUM_BAM_FINISHES > 1 +#****************************************************************************** + SUBRP bam_finish_move2 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_UP,0,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN B_SPUNCH,J_ALL,#reset + + movi bam_finish2_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + +#***************************************************************************** + +bam_hdhold_pogo + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + +; WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + movk 31,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi bam_pogo_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + SLEEPK 20 + + jruc #lp + +#******************************************************************************* + +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +#CHARGE_TIME .equ SM_USRW1 + +bam_charge_neckbreaker + +#start_over + clr a14 + move a14,*a13(#CHARGE_TIME),W +#loop1 + SLEEPK 1 + + move *a13(#CHARGE_TIME),a14,W + inc a14 + move a14,*a13(#CHARGE_TIME),W + + move *a8(BUT_VAL_CUR),a0 + btst PLAYER_SPUNCH_BIT,a0 + jrz #p1 + + jruc #loop1 + +#p1 + +;no longer holding button + move *a13(#CHARGE_TIME),a14 + cmpi 100,a14 + jrlt #start_over + +;Success! Check for the UNINT bit, then queue it up. + move *a8(ANIMODE),a14 + btst MODE_UNINT_BIT,a14 + jrnz #start_over + + move *a8(GETUP_TIME),a0 + jrnz #start_over + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #start_over + cmpi MODE_HEADHOLD,a0 + jrz #start_over + cmpi MODE_ONGROUND,a0 + jrz #start_over + cmpi MODE_DEAD,a0 + jrz #start_over + + movi bam_neckbreaker2_anim,a14 + + move *a8(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrnz #cont + + movi bam_neckbreaker_run_anim,a14 + +#cont + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + SLEEP TSEC*3 + jruc #start_over + +;#***************************************************************************** +;bam_hdhold_neckbreaker +; +;#TIMEOUT .equ 60 +; +;#lp0 +; SLEEPK 1 +;#lp +; move *a8(PLYRMODE),a0 +; cmpi MODE_HEADHOLD,a0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +; clr a11 +; +; WAITSWITCH_DWN B_SPUNCH,0,#lp +; +; movi #TIMEOUT,a11 +; +; WAITSWITCH_DWN B_SKICK,0,#lp +; WAITSWITCH_DWN B_SPUNCH,0,#lp +; WAITSWITCH_DWN B_SKICK,0,#lp +; +; move *a8(PLYRMODE),a0 +; cmpi MODE_HEADHELD,a0 +; jrnz #slam +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +; move *a8(IMMOBILIZE_TIME),a14 +; jrnz #lp0 ;ignore +; +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; ;target WHOHITME -- don't hit anyone else +; SMRTTGT a8,WHOHITME +; +; ;immobilize WHOHITME +; move *a8(WHOHITME),a0,L +; jruc #is_reversal +; +;#slam +; move *a8(IMMOBILIZE_TIME),a14 +; jrnz #lp0 ;ignore +; +; movk 4,a10 +; CREATE MESSAGE_PID,BONUS_MESS +; +; ;target WHOIHIT -- don't hit anyone else +; SMRTTGT a8,WHOIHIT +; +; ;immobilize WHOIHIT +; move *a8(WHOIHIT),a0,L +; +;#is_reversal +; movk 15,a14 +; move a14,*a0(IMMOBILIZE_TIME) +; +; CALLA FIND_AND_KILL_ENDLESS +; +; movi bam_neckbreaker_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 +; +; SLEEPK 20 +; +; jruc #lp +; +;#***************************************************************************** +;bam_hdhold_graboh +; +;#TIMEOUT .equ 60 +; +;#lp0 +; SLEEPK 1 +;#lp +; move *a8(PLYRMODE),a0 +; cmpi MODE_HEADHOLD,a0 +; jrz #cont0 +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont0 +; clr a11 +; +; WAITSWITCH_DWN J_DOWN,0,#lp +; +; movi #TIMEOUT,a11 +; +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp +; WAITSWITCH_DWN J_TOWARD,0,#lp +; WAITSWITCH_DWN B_KICK,J_ALL,#lp +; +; move *a8(PLYRMODE),a0 +; cmpi MODE_HEADHOLD,a0 +; jrz #dograb +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +; move *a8(IMMOBILIZE_TIME),a14 +; jrnz #lp0 ;ignore +; +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; ;target WHOHITME -- don't hit anyone else +; SMRTTGT a8,WHOHITME +; +; ;immobilize WHOHITME +; move *a8(WHOHITME),a0,L +; jruc #is_reversal +; +;#dograb +; move *a8(IMMOBILIZE_TIME),a14 +; jrnz #lp0 ;ignore +; +; movk 6,a10 +; CREATE MESSAGE_PID,BONUS_MESS +; +; ;target WHOIHIT -- don't hit anyone else +; SMRTTGT a8,WHOIHIT +; +; ;immobilize WHOIHIT +; move *a8(WHOIHIT),a0,L +; +;#is_reversal +; movk 15,a14 +; move a14,*a0(IMMOBILIZE_TIME) +; +; CALLA FIND_AND_KILL_ENDLESS +; +; movi bam_4_graboh_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 +; +; SLEEPK 20 +; +; jruc #lp +; +#***************************************************************************** +bam_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 7,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + movi bam_3_pile_driver_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +bam_hdhold_combo1 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi bam_combo_knees_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_BAMBAM,UPRCUT_T1,UPRCUT_T2 + + SLEEPK 20 + + jruc #lp + +;******************************************************************************* +;#* +;bam_hdhold_anti_combo +; +;#TIMEOUT .equ 80 +; +;#lp0 +; SLEEPK 1 +;#lp +;;Is my opponent in combo mode? +;; move *a8(IMMOBILIZE_TIME),a14 +;; jrz #lp0 +;; move *a8(CLOSEST_NUM),a0 +;; X32 a0 +;; addi process_ptrs,a0 +;; move *a0,a0,L +;; move *a0(COMBO_COUNT),a0 +;; jrz #lp0 +; +; clr a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +; movi #TIMEOUT,a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +;;Is my opponent in combo mode? +; move *a8(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(COMBO_COUNT),a0 +; jrz #lp0 +; +; move *a8(ANTI_COMBO_TIME),a0 ;Time stamp +; move @PCNT,a14 +; sub a0,a14 +; abs a14 +; cmpi 80,a14 +; jrge #lp0 +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +;;Combo breaker message! +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; clr a0 +; move a0,*a8(IMMOBILIZE_TIME) +; +; move *a8(WHOHITME),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) +; +; ;target WHOHITME +; SMRTTGT a8,WHOHITME +; +; CALLA FIND_AND_KILL_ENDLESS +; movi bam_3_pile_driver_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 +; +; SLEEPK 20 +; +; jruc #lp +; +******************************************************************************* +#* +bam_hdhold_combo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi bam_combo_punch_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_BAMBAM,UPRCUT_T1,UPRCUT_T2 + + SLEEPK 20 + + jruc #lp + + +******************************************************************************* +#* + +bam_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jreq #lp0 + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 +;Don't do it when he is on ground + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 68h,a0 + jrgt #lp + + movi bam_3_hiptoss_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_BAMBAM,HIPTOSS_T1,PUNCH_T2 + + SLEEPK 20 + jruc #lp + +#doit2 movi bam_3_hiptoss2_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_BAMBAM,HIPTOSS_T1,PUNCH_T2 + + SLEEPK 20 + jruc #lp + +#***************************************************************************** + + SUBR bam_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi bam_stand4_anim,a0 + calla change_anim1a + + movi bam_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE TAUNT_PID,do_taunt + PULL a10 + + rets + +#p1 + movi bam_stand2_anim,a0 + calla change_anim1a + + movi bam_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* BAM BAM CONTROL CODE +* +* a13 = * bam process + + SUBR move_bam + + 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 + .long mode_puppet2 ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .long mode_choking ;25 + + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(I_WILL_DIE),a0 + jrz #nope + move *a13(IMMOBILIZE_TIME),a0 + jrnz #nope +;Player has died amidst a combo... +;Knock me down. + movi bam_fall_back_anim,a0 + calla change_anim1a + +;Zero health bar + movi -10,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + SETMODE DEAD + + clr a0 + move a0,*a13(I_WILL_DIE) + + rets + +#nope + +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + + ;if closest is a zombie, skip pin section. + calla get_opp_process + move *a0(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #opp_not_dead + + ;all opponents are dead. Check for pins/raisearms + + ;if we're attached to someone, don't interrupt it. + move *a13(ATTACH_PROC),a1,L + jrz #no_attch + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jreq #no_pin_yet +#no_attch + + ;if a teammate has pinned, raise yer arm. + calla ck_teammate_pin + jrc #raisearm + + ;nobody has pinned. if we're outside or all our opponents are + ; outside, do a raisearm. + calla raisearm_check + jrc #raisearm + + ;we're inside with a pinnable opponent. any button pins. + move *a13(BUT_VAL_CUR),a0 + jrz #no_pin_yet + + ;we have a press -- make sure opponent is on the ground + calla can_pin + jrnc #opp_notgnd + + ;opponent is on the ground. pin him. + FACE24 bam,pin_anim + calla change_anim1a + + ;set the 'I did a pin' flag. + move *a13(STATUS_FLAGS),a14 + ori M_DID_PIN,a14 + move a14,*a13(STATUS_FLAGS) + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#raisearm + FACE24 bam,raise_arm_anim + calla change_anim1a + calla set_raisearm_bit + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#too_far_to_pin +#opp_notgnd +#opp_not_dead +#no_pin_yet + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #immobilized + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 ;maybe have to action tables? + jrz #nblk ;1 for down transitions + callr #block ;& 1 for current buttons + jrc #nblk + clr a0 + move a0,*a13(ATTACK_TYPE) + rets +#nblk + move *a13(BUT_VAL_CUR),a0 + andi 011111b,a0 + cmpi PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,a0 + jrz #punchkick + + move *a13(BUT_VAL_DOWN),a0 + 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(STICK_VAL_CUR),a0 + move a0,*a13(MOVE_DIR) + calla climb_turnbuckle + jrnc #no_climb + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets + +#immobilized + clr a14 + move a14,*a13(MOVE_DIR) +#no_climb + calla execute_walk + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z ;0 + + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 headbutt +* dizzy " " +* normal > normal punch +* dizzy " " +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running hiptoss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 50, 45,#punch_hdbutt,#punch_punch + JJXM DIZZY, 50, 45,#punch_hdbutt,#punch_punch + JJXM BLOCK, 50, 45,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 160,140,#punch_lbowdrop,#punch_punch + JJXM RUNNING, 50, 45,#punch_hdbutt,#punch_punch + JJXM BOUNCING, 50, 45,#punch_hdbutt,#punch_punch + JJXM ONTURNBKL, #punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM INAIR, 50, 45,#punch_hdbutt,#punch_punch + JJXM ATTACHED, 50, 45,#punch_hdbutt,#punch_punch + JJXM DEAD, 160,140,#punch_lbowdrop,#punch_punch + JJXM OPPOVERHEAD, 50, 45,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 50, 45,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 50, 45,#punch_hdbutt,#punch_punch + JJXM MASTER, 50, 45,#punch_hdbutt,#punch_punch + JJXM SLAVE, 50, 45,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 50, 45,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 50, 45,#punch_hdbutt,#punch_punch + JJXM CHOKEHOLD, 50, 45,#punch_hdbutt,#punch_punch + JJXM PUPPET, 50, 45,#punch_hdbutt,#punch_punch + JJXM PUPPET2, 50, 45,#punch_hdbutt,#punch_punch + JJXM INAIR2, 50, 45,#punch_hdbutt,#punch_punch + JJXM_END + + +***** +#punch_rets + rets + +***** +#punch_punch +std_punch + + FACE24 bam,punch_anim + calla change_anim1a + + WRSND W_BAMBAM,PUNCH_T1,PUNCH_T2 + rets + +***** +#punch_hdbutt + + FACE24 bam,butt_anim + calla change_anim1a + + WRSND W_BAMBAM,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbowdrop + + FACE24 bam,lbowdrop_anim + calla change_anim1a + + WRSND W_BAMBAM,LBOWDROP_T1,LBOWDROP_T2 + rets + +***** + + rets + +************ +#block ;2 +std_block + move @blocking_off,a0 + jrnz #no_blocking + + RND_AWARD a13,BLOCKS_AWD + + movi bam_4_block_anim,a0 + calla change_anim1 + + calla BLOCK_WOOSH + + clr a0 + move a0,*a13(BLOCK_TIME) + clrc + rets + +#no_blocking + setc + rets + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 120 120 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 90, 55,#spunch_special,#spunch_jump + JJXM DIZZY, 90, 55,#spunch_special,#spunch_jump + JJXM BLOCK, 90, 55,#spunch_special,#spunch_jump + JJXM ONGROUND, 160,140,#spunch_lbowdrop,std_punch + JJXM RUNNING, 90, 55,#spunch_special,#spunch_jump + JJXM BOUNCING, 90, 55,#spunch_special,#spunch_jump + JJXM ONTURNBKL, #spunch_jump + JJXM CLIMBTURNBKL, std_punch + JJXM INAIR, 90, 55,#spunch_special,#spunch_jump + JJXM ATTACHED, 85, 55,#spunch_special,#spunch_jump + JJXM DEAD, 160,140,#spunch_lbowdrop,std_punch + JJXM OPPOVERHEAD, 90, 55,#spunch_special,#spunch_jump + JJXM WAITANIM, 90, 55,#spunch_special,#spunch_jump + JJXM GRAPPLE, 90, 55,#spunch_special,#spunch_jump + JJXM MASTER, 90, 55,#spunch_special,#spunch_jump + JJXM SLAVE, 90, 55,#spunch_special,#spunch_jump + JJXM HEADHOLD, 90, 55,#spunch_special,#spunch_jump + JJXM HEADHELD, do_pile ;19 + JJXM CHOKEHOLD, 90, 55,#spunch_special,#spunch_jump + JJXM PUPPET, 90, 45,#spunch_special,#spunch_jump + JJXM PUPPET2, 90, 45,#spunch_special,#spunch_jump + JJXM INAIR2, 90, 45,#spunch_special,#spunch_jump + JJXM_END + +#spunch_rets + rets + +***** +#spunch_jump +;jumping punch attack + FACE24 bam,slap_anim + calla change_anim1a + + WRSND W_BAMBAM,SPUNCH_T1,SPUNCH_T2 + + rets + +***** +#spunch_special +;If stick is toward opponent, then do head hold +; move *a13(STICK_VAL_CUR),a0 +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; +; jrz #cont + + move *a13(CLOSEST_XDIST),a1 + cmpi 55,a1 + jrgt #spunch_jump +; jruc #hdbutt +;#cont +; +; movi bam_3_head_hold2_anim,a0 +; calla change_anim1a +; +; WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 +; +; rets +;#hdbutt + FACE24 bam,butts_anim + calla change_anim1a + + WRSND W_BAMBAM,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#spunch_lbowdrop + +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a2 + cmpi MODE_DEAD,a2 + jrz #no + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 bam,hair_pickup_anim + calla change_anim1 + WRSND W_BAMBAM,KICK_T1,KICK_T2 + rets + +#no + FACE24 bam,lbowdrop_anim + calla change_anim1a + + WRSND W_BAMBAM,KICK_T1,KICK_T2 + + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 knee +* dizzy " " +* normal > normal kick +* dizzy " " +* +* onground < 120 120 stomp +* onground > normal kick +* +* running normal kick +* bouncing normal kick +* +* onturnbkl normal kick +* climbturnbkl normal kick +* + JJXM_INIT + JJXM NORMAL, 60, 92,#kick_knee,#kick_kick + JJXM DIZZY, 60, 92,#kick_knee,#kick_kick + JJXM BLOCK, 60, 92,#kick_knee,#kick_kick + JJXM ONGROUND, 160,140,#kick_stomp,#kick_kick + JJXM RUNNING, 60, 92,#kick_knee,#kick_kick + JJXM BOUNCING, 60, 92,#kick_knee,#kick_kick + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM INAIR, 60, 92,#kick_knee,#kick_kick + JJXM ATTACHED, 60, 92,#kick_knee,#kick_kick + JJXM DEAD, 160,140,#kick_stomp,#kick_kick + JJXM OPPOVERHEAD, 60, 92,#kick_knee,#kick_kick + JJXM WAITANIM, 60, 92,#kick_knee,#kick_kick + JJXM GRAPPLE, 60, 92,#kick_knee,#kick_kick + JJXM MASTER, 60, 92,#kick_knee,#kick_kick + JJXM SLAVE, 60, 92,#kick_knee,#kick_kick + JJXM HEADHOLD, 60, 92,#kick_knee,#kick_kick + JJXM HEADHELD, 60, 92,#kick_knee,#kick_kick + JJXM CHOKEHOLD, 60, 92,#kick_knee,#kick_kick + JJXM PUPPET, 60, 92,#kick_knee,#kick_kick + JJXM PUPPET2, 60, 92,#kick_knee,#kick_kick + JJXM INAIR2, #kick_TB + JJXM_END + + +***** +#kick_TB + + .ref bam_kick_TB_anim + movi bam_kick_TB_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,KICK_T1,KICK_T2 + rets + +***** +#kick_kick +std_kick + + FACE24 bam,kick_anim + calla change_anim1a + + WRSND W_BAMBAM,KICK_T1,KICK_T2 + rets + +***** +#kick_knee +std_knee + + FACE24 bam,knee_anim + calla change_anim1a + + WRSND W_BAMBAM,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp +attack_stomp + + FACE24 bam,stomp_anim + calla change_anim1a + + WRSND W_BAMBAM,KICK_T1,KICK_T2 + + rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 120 120 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 60 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 60, 60,#skick_special,#skick_kick + JJXM DIZZY, 60, 60,#skick_special,#skick_kick + JJXM BLOCK, 60, 60,#skick_special,#skick_kick + JJXM ONGROUND, 160,140,attack_stomp,std_kick + JJXM RUNNING, 60, 60,#skick_special,#skick_kick + JJXM BOUNCING, 60, 60,#skick_special,#skick_kick + JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick + JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick + JJXM INAIR, 60, 60,#skick_special,#skick_kick + JJXM ATTACHED, 60, 60,#skick_special,#skick_kick + JJXM DEAD, 160,140,attack_stomp,std_kick + JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick + JJXM WAITANIM, 60, 60,#skick_special,#skick_kick + JJXM GRAPPLE, 60, 60,#skick_special,#skick_kick + JJXM MASTER, 60, 60,#skick_special,#skick_kick + JJXM SLAVE, 60, 60,#skick_special,#skick_kick + JJXM HEADHOLD, 60, 60,#skick_special,#skick_kick + JJXM HEADHELD, 60, 60,#skick_special,#skick_kick + JJXM CHOKEHOLD, 60, 60,#skick_special,#skick_kick + JJXM PUPPET, 60, 60,#skick_special,#skick_kick + JJXM PUPPET2, 60, 60,#skick_special,#skick_kick + JJXM INAIR2, #kick_TB + JJXM_END + +***** +#skick_special +#skick_kick + +;Jumping karate kick + FACE24 bam,superkick_anim + calla change_anim1a + +; WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + WRSND W_BAMBAM,SPUNCH_T1,SPUNCH_T2 + + rets + +***** +;#skick_bigboot +; +; movi bam_4_bigboot_anim,a0 +; calla change_anim1a +; +; WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 +; +; rets + + +************ +#graboh ;8 + +;Both super buttons at the same time! + + movi bam_4_graboh_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + rets + + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ BAM_XRUN +#ZDRIFT_VAL equ BAM_ZDRIFT + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move @hyper_speed_on,a14 + sll a14,a0 + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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(STICK_VAL_CUR),a0 + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#no_interrupt + + move *a13(STICK_VAL_CUR),a0 + 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 + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 +#out_of_control + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + + +************ +#punch ;1 +#super_punch ;4 +#punchkick +#graboh +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 belly flop +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline + JJXM DIZZY, #punch_clothesline + JJXM BLOCK, #punch_clothesline + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_rets + JJXM RUNNING, #punch_clothesline + JJXM BOUNCING, #punch_clothesline + JJXM ONTURNBKL, #punch_clothesline + JJXM CLIMBTURNBKL, #punch_clothesline + JJXM INAIR, #punch_clothesline + JJXM ATTACHED, #punch_clothesline + JJXM DEAD, 176,176,#punch_bellyflop,#punch_rets + JJXM OPPOVERHEAD, #punch_clothesline + JJXM WAITANIM, #punch_clothesline + JJXM GRAPPLE, #punch_clothesline + JJXM MASTER, #punch_clothesline + JJXM SLAVE, #punch_clothesline + JJXM HEADHOLD, #punch_clothesline + JJXM HEADHELD, #punch_clothesline + JJXM CHOKEHOLD, #punch_clothesline + JJXM PUPPET, #punch_clothesline + JJXM PUPPET2, #punch_clothesline + JJXM INAIR2, #punch_clothesline + JJXM_END + + +#punch_rets + rets + +***** +#punch_clothesline +;Only allow clothesline if near center of ring, and running toward opponent + move *a13(MOVE_DIR),a1 + btst MOVE_LEFT_BIT,a1 + jrnz #lft +;Moving right + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID+70h,a0 + jrlt #ok + +; LOCKUP + + rets + +#lft +;Moving left + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID-70h,a0 + jrgt #ok + +; LOCKUP + + rets +#ok + move *a13(MOVE_DIR),a1 + move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi #mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrz #yes + +; LOCKUP + + rets +#yes + +;Will lunge toward opponent +;Is facing opponent - nt running away from him! + movi bam_fly_cline_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + + rets + +#mv_tbl .long 0,0,0,0,0,MOVE_RIGHT_BIT,MOVE_RIGHT_BIT + .long 0,0,MOVE_LEFT_BIT,MOVE_LEFT_BIT + + +***** +#punch_bellyflop +attack_bellyflop + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + movi bam_3_butt_drop_anim,a0 + calla change_anim1a + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + rets + +************ +#block ;2 + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 running stomp +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick + JJXM DIZZY, #kick_flyingkick + JJXM BLOCK, #kick_flyingkick + JJXM ONGROUND, 176,176,attack_bellyflop,#kick_rets + JJXM RUNNING, #kick_flyingkick + JJXM BOUNCING, #kick_flyingkick + JJXM ONTURNBKL, #kick_flyingkick + JJXM CLIMBTURNBKL, #kick_flyingkick + JJXM INAIR, #kick_flyingkick + JJXM ATTACHED, #kick_flyingkick + JJXM DEAD, 176,176,attack_bellyflop,#kick_rets + JJXM OPPOVERHEAD, #kick_flyingkick + JJXM WAITANIM, #kick_flyingkick + JJXM GRAPPLE, #kick_flyingkick + JJXM MASTER, #kick_flyingkick + JJXM SLAVE, #kick_flyingkick + JJXM HEADHOLD, #kick_flyingkick + JJXM HEADHELD, #kick_flyingkick + JJXM CHOKEHOLD, #kick_flyingkick + JJXM PUPPET, #kick_flyingkick + JJXM PUPPET2, #kick_flyingkick + JJXM INAIR2, #kick_flyingkick + JJXM_END + + +#kick_rets + rets + +***** +#kick_flyingkick + + calla ck_ignore + jrc #z + + movi bam_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_BAMBAM,FLYKICK_T1,FLYKICK_T2 + + rets + +;***** +;#kick_runstomp +; +; 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 + + +#***************************************************************************** +* + +mode_onground ;4 + + 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 bam_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 + +; ;check unint +; move *a13(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #no_interrupt + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #no_climbdown + + movi bam_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + +#no_interrupt + rets + +#no_climbdown + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + +************ +#punch ;1 +#block ;2 +#super_punch ;4 +#kick ;8 +#super_kick ;16 +#graboh +#punchkick + + SETMODE INAIR + + movi bam_bellyflop_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,TURNDIVE_T1,TURNDIVE_T2 + + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + + move *a13(BLOCK_TIME),a0 + inc a0 + move a0,*a13(BLOCK_TIME) + cmpi 160,a0 + jrlt #no + + calla get_opp_plyrmode + cmpi MODE_BLOCK,a0 + jrnz #no + move *a13(CLOSEST_XDIST),a0 + cmpi 61h,a0 + jrge #no + cmpi 45,a0 + jrlt #no + move *a13(CLOSEST_ZDIST),a0 + cmpi 30,a0 + jrlt #punchblock + +#no + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #no_interrupt + + ;press. if block isn't down, let mode_normal handle it + move a0,a2 ;save a0 from ...val_down + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 + jrz #set_mode_normal + move a2,a0 ;restore a0 from ...val_down + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#set_mode_normal + SETMODE NORMAL + jruc mode_normal + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + movi bam_4_push_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,PUSH_T1,PUSH_T2 + + rets + +#***************************************************************************** +* doink with zero health + +mode_dizzy ;8 + +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +; calla clear_damage_log +; +; clr a0 +; move a0,*a13(STARS_FLAG) +; +; SETMODE NORMAL +; +;#still_going + 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 ;* remove this???? + btst MODE_UNINT_BIT,a0 ;* + jrnz #no_interrupt ;* + + clr a0 + move a0,*a13(ATTACH_PROC),L + + CALLA FIND_AND_KILL_ENDLESS + SETMODE NORMAL + + movi MODE_NORMAL,a0 + move a0,*a13(ANIMODE) + + rets + +#still_attached + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(FACING_DIR),a0 + andni MOVE_UP,a0 + ori MOVE_DOWN,a0 + move a0,*a13(FACING_DIR) + move a0,*a13(NEW_FACING_DIR) + + move *a13(STICK_VAL_CUR),a0 + jrz #stand + + move a0,*a13(MOVE_DIR) + calla execute_walk + + movi bam_holdoh_anim,a0 + calla change_anim2 + jruc #ck_butns +#stand + clr a0 + move a0,*a13(MOVE_DIR) + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_ZVEL),L + + movi bam_stndholdoh_anim,a0 + calla change_anim1 + +#ck_butns + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + +************ +#punch ;1 +#block ;2 +#super_punch ;4 +#kick ;8 +#punchkick ;9 + +; move *a13(STICK_VAL_CUR),a0 +; btst PLAYER_DOWN_BIT,a0 +; jrz #z + + CALLA FIND_AND_KILL_ENDLESS + movi bam_slamdwn_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,PUNCH_T1,PUNCH_T2 + + rets + +#super_kick ;16 +#graboh ;20 + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #kick + + CALLA FIND_AND_KILL_ENDLESS + movi bam_backbreaker_anim,a0 + calla change_anim1a + + WRSND W_BAMBAM,HIPTOSS_T1,PUNCH_T2 + + 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 +; +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +;;now get move off +;;if opponents meter almost zero then break apart +; +; calla break_lockup +; rets +; +; +;#still_going +; calla lineup_grapple +; rets + + +#***************************************************************************** + +mode_master ;14 + + calla master_keep_attached ;keep slave attached to me + + rets + +#***************************************************************************** + +mode_slave ;15 + rets + +#***************************************************************************** + +mode_headhold ;16 + +;Bozo power move + .ref bozo_check + calla bozo_check + jrnc #fail + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + movi bam_pogo_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi bam_neckbreaker_anim,a0 +#tag calla change_anim1a + + rets + +#fail + move *a13(WHOIHIT),a0,L + move *a0(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #exit + +; move *a13(ATTACH_PROC),a10,L +; jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + move *a13(OBJ_ZPOS),a14,L + subi [6,0],a14 + move a14,*a13(OBJ_ZPOS),L + + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + + +************ +#block +#graboh +#z ;0 + rets + +************ +#punch ;1 + + CALLA FIND_AND_KILL_ENDLESS + WRSND W_BAMBAM,UPRCUT_T1,UPRCUT_T2 + .ref bam_4_knee2_anim + movi bam_4_knee2_anim,a0 + calla change_anim1a + rets + +************ +#super_punch ;4 + + rets + +************ +do_pile + CALLA FIND_AND_KILL_ENDLESS +;This flag is only set if bam bam has done repeated kicks! + move *a13(USR_VAR2),a0 + jrz #z + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #punch + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + movi bam_3_pile_driver_anim,a0 + calla change_anim1a + rets + +#punchkick +#kick + +; move *a13(STICK_VAL_CUR),a0 +; btst PLAYER_DOWN_BIT,a0 +; jrz #knee +; +; move *a13(STICK_REL_CUR),a0 +; btst MOVE_TOWARD_BIT,a0 +; jrz #knee +; +; .ref bam_hdbutts_anim +; movi bam_hdbutts_anim,a0 +; calla change_anim1a +; rets +; +;#knee + CALLA FIND_AND_KILL_ENDLESS + WRSND W_BAMBAM,UPRCUT_T1,UPRCUT_T2 + movi bam_4_knee2_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #z + +;Quick knees + CALLA FIND_AND_KILL_ENDLESS + WRSND W_BAMBAM,UPRCUT_T1,UPRCUT_T2 + movi bam_knees_anim,a0 + calla change_anim1a + rets + +#***************************************************************************** +mode_puppet2 ;17 + +; ;check for the head-grab breaker +; move *a13(BUT_VAL_DOWN),a0 +; btst PLAYER_KICK_BIT,a0 +; jrz #out +; +; ;check the time - must do it within 20 ticks +; move *a13(HEAD_GRAB_TIME),a14 +; move @PCNT,a0 +; sub a14,a0 +; cmpi KICK_OUT,a0 +; jrgt #out +; +; move *a13(PLYR_TYPE),a14 +; cmpi PTYPE_DRONE,a14 +; jrz #out +; +; ;okay, waste 'im. - detach, setmode, immobilize, and launch the knee +; move *a13(ATTACH_PROC),a0,L +; clr a14 +; move a14,*a13(ATTACH_PROC),L +; move a14,*a0(ATTACH_PROC),L +; movi 15,a14 +; move a14,*a0(IMMOBILIZE_TIME) +; SETMODE NORMAL +; jruc std_knee +; +;#out + rets + +#***************************************************************************** +mode_headheld ;19 + move *a13(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + janz mode_choking + +;Bozo reversal + calla bozo_check + jrnc #fail + + PUSH a8 + move a13,a8 + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + PULL a8 + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + movi bam_pogo_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi bam_neckbreaker_anim,a0 +#tag calla change_anim1a + + rets +#fail + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + movi bam_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +;#VEL equ 30000h ;38000h ;30000h +;#DVEL equ 21f0eh ;27978h ;21f0eh +;#VEL equ 38000h ;38000h ;30000h +;#DVEL equ 30000h ;27978h ;21f0eh +#VEL equ 3a000h ;38000h ;30000h +#DVEL equ 31000h ;27978h ;21f0eh + + + SUBR bam_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 bam_rotate_anims_table +; old = up right + .long bam_stand2_anim ;new = up right + .long bam_2_to_4_turn_anim ; = down right + .long bam_2_to_6_turn_anim ; = down left *** + .long bam_2_to_8_turn_anim ; = up left + +; old = down right + .long bam_4_to_2_turn_anim ;new = up right + .long bam_stand4_anim ; = down right + .long bam_4_to_6_turn_anim ; = down left + .long bam_4_to_8_turn_anim ; = up left *** + +; old = down left + .long bam_6_to_2_turn_anim ;new = up right *** + .long bam_6_to_4_turn_anim ; = down right + .long bam_stand6_anim ; = down left + .long bam_6_to_8_turn_anim ; = up left + +; old = up left + .long bam_8_to_2_turn_anim ;new = up right + .long bam_8_to_4_turn_anim ; = down right *** + .long bam_8_to_6_turn_anim ; = down left + .long bam_stand8_anim ; = up left + + + SUBR bam_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long bam_walk1_f2_anim ;1 (UP) + .long bam_walk1_f2_anim ;2 (UP_RIGHT) + .long bam_walk1_f4_anim ;3 (RIGHT) + .long bam_walk1_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk1_f4_anim ;5 (DOWN) + .long bam_walk1_f4_anim ;6 (DOWN_LEFT) + .long bam_walk1_f2_anim ;7 (LEFT) + .long bam_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk2_f2_anim ;2 (UP_RIGHT) + .long bam_walk2_f2_anim ;3 (RIGHT) + .long bam_walk2_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk8_f4_anim ;5 (DOWN) + .long bam_walk8_f4_anim ;6 (DOWN_LEFT) + .long bam_walk4_f2_anim ;7 (LEFT) + .long bam_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk2_f2_anim ;2 (UP_RIGHT) + .long bam_walk2_f2_anim ;3 (RIGHT) + .long bam_walk4_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk4_f4_anim ;5 (DOWN) + .long bam_walk8_f4_anim ;6 (DOWN_LEFT) + .long bam_walk6_f2_anim ;7 (LEFT) + .long bam_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk8_f2_anim ;2 (UP_RIGHT) + .long bam_walk4_f4_anim ;3 (RIGHT) + .long bam_walk4_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk2_f4_anim ;5 (DOWN) + .long bam_walk6_f4_anim ;6 (DOWN_LEFT) + .long bam_walk2_f2_anim ;7 (LEFT) + .long bam_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long bam_walk5_f2_anim ;1 (UP) + .long bam_walk5_f2_anim ;2 (UP_RIGHT) + .long bam_walk5_f4_anim ;3 (RIGHT) + .long bam_walk5_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk5_f4_anim ;5 (DOWN) + .long bam_walk5_f4_anim ;6 (DOWN_LEFT) + .long bam_walk5_f2_anim ;7 (LEFT) + .long bam_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk6_f2_anim ;2 (UP_RIGHT) + .long bam_walk2_f2_anim ;3 (RIGHT) + .long bam_walk6_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk2_f4_anim ;5 (DOWN) + .long bam_walk4_f4_anim ;6 (DOWN_LEFT) + .long bam_walk2_f2_anim ;7 (LEFT) + .long bam_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk6_f2_anim ;2 (UP_RIGHT) + .long bam_walk6_f2_anim ;3 (RIGHT) + .long bam_walk8_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk4_f4_anim ;5 (DOWN) + .long bam_walk4_f4_anim ;6 (DOWN_LEFT) + .long bam_walk2_f2_anim ;7 (LEFT) + .long bam_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long bam_walk2_f2_anim ;1 (UP) + .long bam_walk4_f2_anim ;2 (UP_RIGHT) + .long bam_walk6_f2_anim ;3 (RIGHT) + .long bam_walk8_f4_anim ;4 (DOWN_RIGHT) + .long bam_walk6_f4_anim ;5 (DOWN) + .long bam_walk2_f4_anim ;6 (DOWN_LEFT) + .long bam_walk2_f2_anim ;7 (LEFT) + .long bam_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR bam_torso_anims_table +; old = up right + .long bam_torso2_anim ;new = up right + .long bam_2_to_4_turn2_anim ; = down right + .long bam_2_to_6_turn2_anim ; = down left *** + .long bam_2_to_8_turn2_anim ; = up left + +; old = down right + .long bam_4_to_2_turn2_anim ;new = up right + .long bam_torso4_anim ; = down right + .long bam_4_to_6_turn2_anim ; = down left + .long bam_4_to_8_turn2_anim ; = up left *** + +; old = down left + .long bam_6_to_2_turn2_anim ;new = up right *** + .long bam_6_to_4_turn2_anim ; = down right + .long bam_torso6_anim ; = down left + .long bam_6_to_8_turn2_anim ; = up left + +; old = up left + .long bam_8_to_2_turn2_anim ;new = up right + .long bam_8_to_4_turn2_anim ; = down right *** + .long bam_8_to_6_turn2_anim ; = down left + .long bam_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BAM.BAT b/BAM.BAT new file mode 100755 index 0000000..b1b2263 --- /dev/null +++ b/BAM.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld bam bam_hit bam_kik bam_msc bam_pnc bam_wlk bam_rjr bam_mjt bam_jms bam_jake +@copy bam.ld1 + bam.ld2 bam.lod +@move bam.h ..\bamimg.h +@move bam.seq .. + diff --git a/BAMIMG.ASM b/BAMIMG.ASM new file mode 100755 index 0000000..e39949e --- /dev/null +++ b/BAMIMG.ASM @@ -0,0 +1,19 @@ + .FILE "bamimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include bamimg.tbl + .include bamimg.h + +****************************************************************************** + + .even + .include "bam.seq" + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BAMIMG.H b/BAMIMG.H new file mode 100755 index 0000000..ba3d32b --- /dev/null +++ b/BAMIMG.H @@ -0,0 +1,101 @@ + .global B4AM4A + .global B3CP3B + .global B3GU2A + .global B3GU4A + .global B4AH4A + .global B2AH2A + .global B3PP3Q + .global B3FD3C + .global B2AM2A + .global B4BK3D + .global B3AE3A + .global B4LB4B + .global B4TD3B + .global B4TD3A + .global B4KM3E + .global B2KM3B + .global B4KM3A + .global B2KM3E + .global B4NM3A + .global B2NM3A + .global B2BG3A + .global B3DC3B + .global B4KM3H + .global B4GF3A + .global B3HB3A + .global B4TI4A + .global B4BF3A + .global B3BF3C + .global B4MF4A + .global B3RL1A + .global B4HU4B + .global B4SB4A + .global B2FH3Z + .global B4FH3Z + .global B4PU3D + .global B2PU3C + .global B4PS3A + .global B4BC3A + .global B2BC3A + .global B3PO4A + .global B4PO4Z + .global B2ST2A + .global B4ST4Z + .global B2TW2Z + .global B4TW4Z + .global B1TT5Z + .global B1TR5Z + .global B2WL1A + .global B2WL2B + .global B2WL8B + .global B4WL2A + .global B4WL4B + .global B4WL5B + .global B4YR3A + .global B3RN3A + .global B4BO3Z + .global B3RS3B + .global B3DD3D + .global B4UC3Z + .global B4TN4X + .global B4NP3Z + .global B3ZS3A + .global B3AB3X + .global B3DD3C + .global B3FH3F + .global B3RC3A + .global B3DR3B + .global B4POGO + .global B4CD3B + .global B4GH3B + .global B4CF4A + .global B3PO4E + .global B2PN5A + .global B5RV5A + .global B4WC4B + .global B3PG3A + .global B4CD3A + .global B3MS3Z + .global B4RS4A + .global B4SW4B + .global B4WS4A + .global B4GH3D + .global B3MS3X + .global B4BB1X + .global B3BR3Z + .global B4BZ4A + .global B4UC3B + .global B4MP4A + .global B2MP2A + .global B3PJ3B + .global B2PJ3A + .global B3JK3A + .global B4FK4B + .global B4FK4F + .global BURNBODY + .global B3RR3Z + .global B4WA4D + .global B4CF4Z + .global B4WA4C + .global B4CR7A + .global B2JD4A diff --git a/BAMSEQ1.ASM b/BAMSEQ1.ASM new file mode 100755 index 0000000..377aef8 --- /dev/null +++ b/BAMSEQ1.ASM @@ -0,0 +1,584 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "bamseq1.asm" + .title "Bam Bam Bigelo animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "bamimg.h" + .include "takerimg.h" ;<---temp!!! + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref SMALL_RUN,fix_bnc_flip,MAYBE_BOUNCE_ROPE + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* STANDS + + SUBR bam_zip_anim + WL 60*60,B2ST2A+FR1 + .word ANI_END + + + SUBR bam_stand2_anim + SUBR bam_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 4,B2ST2A+FR1 + WL 4,B2ST2A+FR2 + WL 4,B2ST2A+FR3 + WL 4,B2ST2A+FR4 + WL 4,B2ST2A+FR5 + WL 4,B2ST2A+FR6 + WL 4,B2ST2A+FR7 + WL 4,B2ST2A+FR8 + WL 4,B2ST2A+FR9 + WL 4,B2ST2A+FR10 + WL 4,B2ST2A+FR11 + WL 4,B2ST2A+FR12 + WL 4,B2ST2A+FR13 + .word ANI_REPEAT + + + SUBR bam_stand4_anim + SUBR bam_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 6,B4ST4Z+FR1 + WL 6,B4ST4Z+FR2 + WL 6,B4ST4Z+FR3 + WL 6,B4ST4Z+FR4 + WL 6,B4ST4Z+FR5 + WL 6,B4ST4Z+FR6 + WL 6,B4ST4Z+FR7 + WL 6,B4ST4Z+FR8 + WL 6,B4ST4Z+FR9 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR bam_torso2_anim + SUBR bam_torso8_anim + + WL 6,B2TW2Z+FR1 + WL 6,B2TW2Z+FR2 + WL 6,B2TW2Z+FR3 + WL 6,B2TW2Z+FR2 + .word ANI_REPEAT + + + SUBR bam_torso4_anim + SUBR bam_torso6_anim + + WL 6,B4TW4Z+FR1 + WL 6,B4TW4Z+FR2 + WL 6,B4TW4Z+FR3 + WL 6,B4TW4Z+FR2 + .word ANI_REPEAT + + SUBR bam_holdoh_anim + WL 999,B4PO4Z+FR1 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR bam_walk1_f2_anim + WL 2,B2WL1A+FR1 + WL 2,B2WL1A+FR2 + WL 2,B2WL1A+FR3 + WL 2+1,B2WL1A+FR4 + WL 2,B2WL1A+FR5 + WL 2,B2WL1A+FR6 + WL 2,B2WL1A+FR7 + WL 2+1,B2WL1A+FR8 + WL 2,B2WL1A+FR9 + WL 2,B2WL1A+FR10 + WL 2,B2WL1A+FR11 + WL 2+1,B2WL1A+FR12 + WL 2,B2WL1A+FR13 + WL 2,B2WL1A+FR14 + WL 2,B2WL1A+FR15 + WL 2+1,B2WL1A+FR16 + .word ANI_REPEAT + + SUBR bam_walk2_f2_anim + WL 2,B2WL2B+FR1 + WL 2,B2WL2B+FR2 + WL 2,B2WL2B+FR3 + WL 2,B2WL2B+FR4 + WL 2,B2WL2B+FR5 + WL 2,B2WL2B+FR6 + WL 2,B2WL2B+FR7 + WL 2,B2WL2B+FR8 + WL 2,B2WL2B+FR9 + WL 2,B2WL2B+FR10 + WL 2,B2WL2B+FR11 + WL 2,B2WL2B+FR12 + WL 2,B2WL2B+FR13 + WL 2,B2WL2B+FR14 + WL 2,B2WL2B+FR15 + WL 2,B2WL2B+FR16 + WL 2,B2WL2B+FR17 + WL 2,B2WL2B+FR18 + .word ANI_REPEAT + + SUBR bam_walk4_f2_anim + WL 3,B2WL8B+FR1 + WL 3,B2WL8B+FR2 + WL 3,B2WL8B+FR3 + WL 3,B2WL8B+FR4 + WL 3,B2WL8B+FR5 + WL 3,B2WL8B+FR6 + WL 3,B2WL8B+FR7 + WL 3,B2WL8B+FR8 + WL 3,B2WL8B+FR9 + WL 3,B2WL8B+FR10 + WL 3,B2WL8B+FR11 + WL 3,B2WL8B+FR12 + .word ANI_REPEAT + + SUBR bam_walk5_f2_anim + WL 2,B2WL1A+FR16 + WL 2,B2WL1A+FR15 + WL 2,B2WL1A+FR14 + WL 2+1,B2WL1A+FR13 + WL 2,B2WL1A+FR12 + WL 2,B2WL1A+FR11 + WL 2,B2WL1A+FR10 + WL 2+1,B2WL1A+FR9 + WL 2,B2WL1A+FR8 + WL 2,B2WL1A+FR7 + WL 2,B2WL1A+FR6 + WL 2+1,B2WL1A+FR5 + WL 2,B2WL1A+FR4 + WL 2,B2WL1A+FR3 + WL 2,B2WL1A+FR2 + WL 2+1,B2WL1A+FR1 + .word ANI_REPEAT + + SUBR bam_walk6_f2_anim + WL 2,B2WL2B+FR18 + WL 2,B2WL2B+FR17 + WL 2,B2WL2B+FR16 + WL 2,B2WL2B+FR15 + WL 2,B2WL2B+FR14 + WL 2,B2WL2B+FR13 + WL 2,B2WL2B+FR12 + WL 2,B2WL2B+FR11 + WL 2,B2WL2B+FR10 + WL 2,B2WL2B+FR9 + WL 2,B2WL2B+FR8 + WL 2,B2WL2B+FR7 + WL 2,B2WL2B+FR6 + WL 2,B2WL2B+FR5 + WL 2,B2WL2B+FR4 + WL 2,B2WL2B+FR3 + WL 2,B2WL2B+FR2 + WL 2,B2WL2B+FR1 + .word ANI_REPEAT + + + SUBR bam_walk8_f2_anim + WL 3,B2WL8B+FR12 + WL 3,B2WL8B+FR11 + WL 3,B2WL8B+FR10 + WL 3,B2WL8B+FR9 + WL 3,B2WL8B+FR8 + WL 3,B2WL8B+FR7 + WL 3,B2WL8B+FR6 + WL 3,B2WL8B+FR5 + WL 3,B2WL8B+FR4 + WL 3,B2WL8B+FR3 + WL 3,B2WL8B+FR2 + WL 3,B2WL8B+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR bam_walk1_f4_anim + WL 2,B4WL5B+FR15 + WL 2+1,B4WL5B+FR14 + WL 2,B4WL5B+FR13 + WL 2,B4WL5B+FR12 + WL 2+1,B4WL5B+FR11 + WL 2,B4WL5B+FR10 + WL 2+1,B4WL5B+FR9 + WL 2,B4WL5B+FR8 + WL 2,B4WL5B+FR7 + WL 2+1,B4WL5B+FR6 + WL 2,B4WL5B+FR5 + WL 2+1,B4WL5B+FR4 + WL 2,B4WL5B+FR3 + WL 2,B4WL5B+FR2 + WL 2+1,B4WL5B+FR1 + .word ANI_REPEAT + + SUBR bam_walk2_f4_anim + WL 2,B4WL2A+FR1 + WL 2+1,B4WL2A+FR2 + WL 2,B4WL2A+FR3 + WL 2,B4WL2A+FR4 + WL 2+1,B4WL2A+FR5 + WL 2,B4WL2A+FR6 + WL 2+1,B4WL2A+FR7 + WL 2,B4WL2A+FR8 + WL 2,B4WL2A+FR9 + WL 2+1,B4WL2A+FR10 + WL 2,B4WL2A+FR11 + WL 2+1,B4WL2A+FR12 + WL 2,B4WL2A+FR13 + WL 2,B4WL2A+FR14 + WL 2+1,B4WL2A+FR15 + .word ANI_REPEAT + + SUBR bam_walk4_f4_anim + WL 2,B4WL4B+FR1 + WL 2,B4WL4B+FR2 + WL 2,B4WL4B+FR3 + WL 2,B4WL4B+FR4 + WL 2,B4WL4B+FR5 + WL 2,B4WL4B+FR6 + WL 2,B4WL4B+FR7 + WL 2,B4WL4B+FR8 + WL 2,B4WL4B+FR9 + WL 2,B4WL4B+FR10 + WL 2,B4WL4B+FR11 + WL 2,B4WL4B+FR12 + WL 2,B4WL4B+FR13 + WL 2,B4WL4B+FR14 + WL 2,B4WL4B+FR15 + WL 2,B4WL4B+FR16 + WL 2,B4WL4B+FR17 + WL 2,B4WL4B+FR18 + .word ANI_REPEAT + + SUBR bam_walk5_f4_anim + WL 2,B4WL5B+FR1 + WL 2+1,B4WL5B+FR2 + WL 2,B4WL5B+FR3 + WL 2,B4WL5B+FR4 + WL 2+1,B4WL5B+FR5 + WL 2,B4WL5B+FR6 + WL 2+1,B4WL5B+FR7 + WL 2,B4WL5B+FR8 + WL 2,B4WL5B+FR9 + WL 2+1,B4WL5B+FR10 + WL 2,B4WL5B+FR11 + WL 2+1,B4WL5B+FR12 + WL 2,B4WL5B+FR13 + WL 2,B4WL5B+FR14 + WL 2+1,B4WL5B+FR15 + .word ANI_REPEAT + + SUBR bam_walk6_f4_anim + WL 2,B4WL2A+FR15 + WL 2+1,B4WL2A+FR14 + WL 2,B4WL2A+FR13 + WL 2,B4WL2A+FR12 + WL 2+1,B4WL2A+FR11 + WL 2,B4WL2A+FR10 + WL 2+1,B4WL2A+FR9 + WL 2,B4WL2A+FR8 + WL 2,B4WL2A+FR7 + WL 2+1,B4WL2A+FR6 + WL 2,B4WL2A+FR5 + WL 2+1,B4WL2A+FR4 + WL 2,B4WL2A+FR3 + WL 2,B4WL2A+FR2 + WL 2+1,B4WL2A+FR1 + .word ANI_REPEAT + + SUBR bam_walk8_f4_anim + WL 2,B4WL4B+FR18 + WL 2,B4WL4B+FR17 + WL 2,B4WL4B+FR16 + WL 2,B4WL4B+FR15 + WL 2,B4WL4B+FR14 + WL 2,B4WL4B+FR13 + WL 2,B4WL4B+FR12 + WL 2,B4WL4B+FR11 + WL 2,B4WL4B+FR10 + WL 2,B4WL4B+FR9 + WL 2,B4WL4B+FR8 + WL 2,B4WL4B+FR7 + WL 2,B4WL4B+FR6 + WL 2,B4WL4B+FR5 + WL 2,B4WL4B+FR4 + WL 2,B4WL4B+FR3 + WL 2,B4WL4B+FR2 + WL 2,B4WL4B+FR1 + .word ANI_REPEAT + + +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR bam_2_to_4_turn_anim + SUBR bam_8_to_6_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TT5Z+FR2 ;2.5 + WL 3,B1TT5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_2_turn_anim + SUBR bam_6_to_8_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TT5Z+FR3 ;3.5 + WL 3,B1TT5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_6_turn_anim + SUBR bam_6_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 3,B1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_2_to_8_turn_anim + SUBR bam_8_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 3,B1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_8_turn_anim + SUBR bam_6_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TT5Z+FR3 ;3.5 + WL 3,B1TT5Z+FR2 ;2.5 + WL 3,B1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 3,B1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_2_to_6_turn_anim + SUBR bam_8_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TT5Z+FR2 ;2.5 + WL 3,B1TT5Z+FR3 ;3.5 + WL 3,B1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 3,B1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR bam_2_to_4_turn2_anim + SUBR bam_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TR5Z+FR2 ;2.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,B1TR5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_2_turn2_anim + SUBR bam_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TR5Z+FR3 ;3.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,B1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_6_turn2_anim + SUBR bam_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,B1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_2_to_8_turn2_anim + SUBR bam_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TR5Z+FR1 ;1.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,B1TR5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_to_8_turn2_anim + SUBR bam_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,B1TR5Z+FR4 ;4.5 + WL 3,B1TR5Z+FR3 ;3.5 + .word ANI_SETFACING + WL 3,B1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_2_to_6_turn2_anim + SUBR bam_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,B1TR5Z+FR2 ;2.5 + .word ANI_SETFACING + WL 3,B1TR5Z+FR3 ;3.5 + WL 3,B1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,B1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR bam_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16+8,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR bam_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + +#lp1 + WL 3,B3RN3A+FR1 + WL 2,B3RN3A+FR2 + WL 3,B3RN3A+FR3 + WL ANI_CODE,SMALL_RUN + WL 2,B3RN3A+FR4 + WL 3,B3RN3A+FR5 +#run2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16+8,71 ;mode,x,y,w,h + WL 2,B3RN3A+FR6 + WL 3,B3RN3A+FR7 + WL 2,B3RN3A+FR8 + WL 3,B3RN3A+FR9 + WL ANI_CODE,SMALL_RUN + WL 2,B3RN3A+FR10 + WL 3,B3RN3A+FR11 + WL 2,B3RN3A+FR12 + + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR bam_bounce_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_OVERLAP|MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + WL ANI_CODE,fix_bnc_flip + WL ANI_CODE,MAYBE_BOUNCE_ROPE + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,B4BO3Z+FR1 + .word ANI_BOUNCEROPE,0 + WL 1,B4BO3Z+FR1 + + WL 3,B4BO3Z+FR2 + .word ANI_BOUNCEROPE,1 + WL ANI_CODE,SMALL_RUN + + WL 1,B4BO3Z+FR2 + + WL 3,B4BO3Z+FR3 + .word ANI_BOUNCEROPE,2 + WL 1,B4BO3Z+FR3 + + WL 3,B4BO3Z+FR4 + .word ANI_BOUNCEROPE,3 + WL 1,B4BO3Z+FR4 + + .word ANI_ZEROVELS + + WL 3,B4BO3Z+FR5 + .word ANI_BOUNCEROPE,4 + WL 1,B4BO3Z+FR5 + WL 4,B4BO3Z+FR6 + WL 3,B4BO3Z+FR7 + .word ANI_BOUNCEROPE,0 + WL 1,B4BO3Z+FR7 + WL 3,B4BO3Z+FR8 + .word ANI_BOUNCEROPE,-1 + WL ANI_CODE,SMALL_RUN + WL 1,B4BO3Z+FR8 + WL 4,B4BO3Z+FR9 + + .word ANI_OFFSET,-10,0,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BAMSEQ2.ASM b/BAMSEQ2.ASM new file mode 100755 index 0000000..5468c0d --- /dev/null +++ b/BAMSEQ2.ASM @@ -0,0 +1,5344 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "bamseq2.asm" + .title "Bam Bam Bigelo animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .include "bamimg.h" + .include "damage.equ" + .INCLUDE "SWEAT.EQU" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref MOVE_NAME_ANNC,hit_nearest,WORLDTLX,set_tbukl_airmode + .ref free_toss_check,setup_freetoss + .ref DO_WAIL,CALL_ANI_AVERAGE_MOVE,DO_BLOCKED + .ref create_impact,create_impact2,create_impact_salt + .ref SET_DIR_FACE,start_run_anim,HIT_THE_MAT,SMALL_BOUNCE + .ref choose_2or4,no_bk_xvel,CALL_MISSES,CALL_NASTY_MOVE + .ref DO_CROWD_CHEER,check_xvel,BAMBLU_P,pal_getf + .ref am_I_dead,win_announce,create_impact3 + .ref bam_pogo_anim,bam_3_pile_driver_anim,DO_GRUNT + .ref bam_3_head_held_anim,set_tbukl_confine + .ref bam_combo_pogo_anim,grnd_hit,fix_bnc_flip + .ref bam_fireball,CALL_SPECIAL_MOVE,ckzpos + .ref bam_4_graboh_anim,DO_COMBO_MESS,bam_combo_graboh_anim + .ref hit_puppet_even_if_dead,check_raisearm_bit + .ref skick_delay,spunch_delay,bam_combo_pile_driver_anim + .ref DO_FLAME_HIT_SND,create_impact_flykick,CALL_SETUP + .ref set_buckoff_vels,hiptoss_delay,lex_tossed2_anim + .ref fling_delay,DO_FLAME_SND,impact_sound,start_run_flung + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + + SUBR bam_2_fpunch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DETACH + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SET_RPTCOUNT,2 ;1 times + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 +#loop + .word ANI_CLR_BUTCOUNT + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,50,105,10 + LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,30,105,10 + WL ANI_CODE,no_bk_xvel + + .word ANI_STARTATTACK,AT_PUNCH,10 + + WL 2,B2FH3Z+FR1 + WL 3,B2FH3Z+FR2 + WL 3,B2FH3Z+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B2FH3Z+FR4 + .word ANI_ATTACK_ON, AMODE_FIRE_PUNCH,7,44,59,68 ;mode,x,y,w,h + WL 3,B2FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFBLOCKED,#blocked + WL ANI_IFSTATUS,#gotim +;missed + WL 3,B2FH3Z+FR6 + WL 20,B2FH3Z+FR7 + + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gotim + .word ANI_IMMOBILIZE,20 +#blocked + WL ANI_CODE,DO_FLAME_HIT_SND + WL ANI_CODE,CALL_NASTY_MOVE + .word ANI_STARTATTACK,AT_PUNCH,6 + + WL ANI_CODE,#set_opp_xy + + WL 2,B2FH3Z+FR6 + WL 3,B2FH3Z+FR7 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,40,105,-10 + LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,20,105,-10 + + .word ANI_STARTATTACK,AT_PUNCH,10 + + WL 2,B4FH3Z+FR1 + WL 3,B4FH3Z+FR2 + WL 3,B4FH3Z+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B4FH3Z+FR4 + .word ANI_ATTACK_ON, AMODE_FIRE_PUNCH,7,44,59,68 ;mode,x,y,w,h + WL 3,B4FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFBLOCKED,#blocked2 + WL ANI_IFSTATUS,#gotim2 +;missed + WL 3,B4FH3Z+FR6 + WL 20,B4FH3Z+FR7 + + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gotim2 + .word ANI_IMMOBILIZE,20 +#blocked2 + WL ANI_CODE,#set_opp_xy + + WL 2,B4FH3Z+FR6 + WL 3,B4FH3Z+FR7 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,4,#fail + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop + + .word ANI_DRAW_NAME,15 + +#fail + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_fpunch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_DETACH + + .word ANI_SET_RPTCOUNT,2 ;3 times + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 +#loop2 + .word ANI_STARTATTACK,AT_PUNCH,10 + .word ANI_CLR_BUTCOUNT + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,50,105,-10 + LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,30,105,-10 + WL ANI_CODE,no_bk_xvel + + WL 2,B4FH3Z+FR1 + WL 3,B4FH3Z+FR2 + WL 3,B4FH3Z+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B4FH3Z+FR4 + .word ANI_ATTACK_ON, AMODE_FIRE_PUNCH,7,44,59,68 ;mode,x,y,w,h + WL 3,B4FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFBLOCKED,#blocked2a + WL ANI_IFSTATUS,#gotim2a +;missed + WL 3,B4FH3Z+FR6 + WL 20,B4FH3Z+FR7 + + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gotim2a + .word ANI_IMMOBILIZE,20 +#blocked2a + WL ANI_CODE,DO_FLAME_HIT_SND + .word ANI_STARTATTACK,AT_PUNCH,15 + WL ANI_CODE,CALL_NASTY_MOVE + + WL ANI_CODE,#set_opp_xy + + WL 2,B4FH3Z+FR6 + WL 3,B4FH3Z+FR7 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,40,105,10 + LEAPATOPP 08h,999,54h,45,90000h,TGT_HEAD,20,105,10 + + WL 2,B2FH3Z+FR1 + WL 3,B2FH3Z+FR2 + WL 3,B2FH3Z+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B2FH3Z+FR4 + .word ANI_ATTACK_ON, AMODE_FIRE_PUNCH,7,44,59,68 ;mode,x,y,w,h + WL 3,B2FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFBLOCKED,#blockeda + WL ANI_IFSTATUS,#gotima +;missed + WL 3,B2FH3Z+FR6 + WL 20,B2FH3Z+FR7 + + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gotima + .word ANI_IMMOBILIZE,20 +#blockeda + WL ANI_CODE,#set_opp_xy + + WL 2,B2FH3Z+FR6 + WL 3,B2FH3Z+FR7 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,4,#fail2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop + .word ANI_DRAW_NAME,15 +#fail2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#set_opp_xy + move *a13(WHOIHIT),a0,L + movi [2,0],a14 + move a14,*a0(OBJ_YVEL),L + + movi -[2,0],a1 + move *a0(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a1 ;left +#abs + move a1,*a0(OBJ_XVEL),L + + calla create_impact3 + rets + + SUBR bam_combo_fpunch + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_DETACH + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SET_RPTCOUNT,2 ;3 times + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + + .word ANI_STARTATTACK,AT_PUNCH,8 + + WL ANI_CODE,DO_FLAME_SND + + WL 2,B2FH3Z+FR1 + WL 2,B2FH3Z+FR2 + WL 2,B2FH3Z+FR3 + WL 2,B2FH3Z+FR4 + WLW ANI_SET_XVEL,0h,AM_FACE_REL + .word ANI_ATTACK_ON, AMODE_FIRE_PUNCH,7,44,79,68 ;mode,x,y,w,h + WL 2,B2FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#MISSED_2 + WL ANI_CODE,DO_FLAME_HIT_SND + WL ANI_CODE,create_impact + .WORD ANI_INC_COMBO + .word ANI_STARTATTACK,AT_PUNCH,12 + WL ANI_SET_YVEL,18000h + .word ANI_SET_ATTACH + + WWWL ANI_IFROPE,RC_FRONT,100,#AVOID_VELSB + + WLLL ANI_SETOPPVELS,10000H,10000h,0h ;x,y,z vels + WLW ANI_SET_XVEL,10000h,AM_FACE_REL +#AVOID_VELSB + + WL 2,B2FH3Z+FR6 + WL 2,B2FH3Z+FR7 + + WL 2,B4FH3Z+FR1 + WL 2,B4FH3Z+FR2 + WL 2,B4FH3Z+FR3 + WL 2,B4FH3Z+FR4 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_FIRE_PUNCH,7,44,79,68 ;mode,x,y,w,h + WL 2,B4FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#MISSED_4 + WWWL ANI_IFROPE,RC_FRONT,100,#AVOID_VELS2B + + WLLL ANI_SETOPPVELS,10000H,10000h,0h ;x,y,z vels + WLW ANI_SET_XVEL,10000h,AM_FACE_REL +#AVOID_VELS2B + WL ANI_CODE,create_impact + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,18000h + + WL 2,B4FH3Z+FR6 + WL 2,B4FH3Z+FR7 + +#loop_c + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_PUNCH,8 + WL ANI_CODE,DO_FLAME_SND + + WL 2,B2FH3Z+FR1 + WL 2,B2FH3Z+FR2 + WL 2,B2FH3Z+FR3 + WL 2,B2FH3Z+FR4 + WLW ANI_SET_XVEL,0h,AM_FACE_REL + .word ANI_ATTACK_ON, AMODE_FIRE_PUNCH,7,44,79,68 ;mode,x,y,w,h + WL 2,B2FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#MISSED_2 + WL ANI_CODE,DO_FLAME_HIT_SND + WL ANI_CODE,create_impact + .WORD ANI_INC_COMBO + .word ANI_STARTATTACK,AT_PUNCH,12 + WL ANI_SET_YVEL,18000h + .word ANI_SET_ATTACH + + WWWL ANI_IFROPE,RC_FRONT,100,#AVOID_VELS + + WLLL ANI_SETOPPVELS,10000H,10000h,0h ;x,y,z vels + WLW ANI_SET_XVEL,10000h,AM_FACE_REL +#AVOID_VELS + + WL 2,B2FH3Z+FR6 + WL 2,B2FH3Z+FR7 + + WL 2,B4FH3Z+FR1 + WL 2,B4FH3Z+FR2 + WL 2,B4FH3Z+FR3 + WL 2,B4FH3Z+FR4 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_FIRE_PUNCH,7,44,79,68 ;mode,x,y,w,h + WL 2,B4FH3Z+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#MISSED_4 + + WWWL ANI_IFROPE,RC_FRONT,100,#AVOID_VELS2 + + WLLL ANI_SETOPPVELS,10000H,10000h,0h ;x,y,z vels + WLW ANI_SET_XVEL,10000h,AM_FACE_REL +#AVOID_VELS2 + + WL ANI_CODE,create_impact + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,18000h + + WL 2,B4FH3Z+FR6 + WL 2,B4FH3Z+FR7 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop_c + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#CHECK_ANOTHER_2 + .word ANI_DETACH + WL ANI_CHANGEANIM,bam_combo_hiptoss_anim + +#CHECK_ANOTHER_2 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#CHECK_ANOTHER + .word ANI_DETACH + WL ANI_CHANGEANIM,bam_flying_kick_no_xvel + +#CHECK_ANOTHER + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#CHECK_ANOTHER_BUT2 + WL ANI_CHANGEANIM,bam_combo_slap_anim + +#CHECK_ANOTHER_BUT2 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#MISSED_4B + WL ANI_CHANGEANIM,bam_combo_pogo_anim + +#MISSED_4 + WL 3,B4FH3Z+FR6 + WL 3,B4FH3Z+FR7 +#MISSED_4B + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#MISSED_2 + WL 3,B2FH3Z+FR6 + WL 3,B2FH3Z+FR7 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 NORMAL PUNCH + + SUBR bam_2_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2PU3C+FR4 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2PU3C+FR4 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2PU3C+FR5 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,7 + WL 1,B2PU3C+FR5 + WL 2,B2PU3C+FR6 + + .word ANI_ATTACK_ON, AMODE_PUNCH,28,92,56,10 ;mode,x,y,w,h + WL 3,B2PU3C+FR7 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 3,B2PU3C+FR7 +#no_hit + + WL 1,B2PU3C+FR7 + WL 2,B2PU3C+FR8 + WL 2,B2PU3C+FR9 + WL 2,B2PU3C+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 NORMAL PUNCH + + SUBR bam_4_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4PU3D+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4PU3D+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4PU3D+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,7 + WL 1,B4PU3D+FR3 + WL 2,B4PU3D+FR4 + + .word ANI_ATTACK_ON, AMODE_PUNCH,28,92,56,10 ;mode,x,y,w,h + WL 3,B4PU3D+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 3,B4PU3D+FR5 +#no_hit + WL 1,B4PU3D+FR5 + WL 2,B4PU3D+FR6 + WL 2,B4PU3D+FR7 + WL 2,B4PU3D+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_combo_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .WORD ANI_CLEAR_COMBO + + WL 2,B4PU3D+FR2 + .word ANI_STARTATTACK,AT_PUNCH,7 + WL 2,B4PU3D+FR3 + WL 2,B4PU3D+FR4 + + WL 2,B4PU3D+FR5 + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON, AMODE_PUNCH,28,42,56,60 ;mode,x,y,w,h + WL 2,B4PU3D+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit4 + .WORD ANI_INC_COMBO + + WL ANI_SET_YVEL,18000h + WL 2,B4PU3D+FR5 + + WL 2,B2PU3C+FR4 + .word ANI_STARTATTACK,AT_PUNCH,7 + WL 2,B2PU3C+FR5 + WL 2,B2PU3C+FR6 + + WL 2,B2PU3C+FR7 + .word ANI_ATTACK_ON, AMODE_PUNCH,28,92,56,10 ;mode,x,y,w,h + WL 2,B2PU3C+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit2 + .WORD ANI_INC_COMBO + + WL ANI_SET_YVEL,18000h + WL 2,B2PU3C+FR7 + + .word ANI_SET_RPTCOUNT,3 ;3 times +#p_loop + .word ANI_CLR_BUTCOUNT + + WL 2,B4PU3D+FR2 + .word ANI_STARTATTACK,AT_PUNCH,7 + WL 1,B4PU3D+FR3 + WL 2,B4PU3D+FR4 + + WL 1,B4PU3D+FR5 + .word ANI_ATTACK_ON, AMODE_PUNCH,28,42,56,60 ;mode,x,y,w,h + WL 2,B4PU3D+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit4 + .WORD ANI_INC_COMBO + + WL ANI_SET_YVEL,18000h + WL 1,B4PU3D+FR5 + + WL 2,B2PU3C+FR4 + .word ANI_STARTATTACK,AT_PUNCH,7 + WL 1,B2PU3C+FR5 + WL 2,B2PU3C+FR6 + + WL 1,B2PU3C+FR7 + .word ANI_ATTACK_ON, AMODE_PUNCH,28,92,56,10 ;mode,x,y,w,h + WL 2,B2PU3C+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit2 + .WORD ANI_INC_COMBO + + WL ANI_SET_YVEL,18000h + WL 1,B2PU3C+FR7 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#p_loop + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#CHECK_NEXT2 + .word ANI_DETACH + WL ANI_CHANGEANIM,bam_combo_hiptoss_anim + +#CHECK_NEXT2 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#CHECK_NEXT1 + .word ANI_DETACH + WL ANI_CHANGEANIM,bam_flying_kick_no_xvel + +#CHECK_NEXT1 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#no_hit2 + WL ANI_CHANGEANIM,bam_combo_superkick_anim +#no_hit2 + + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 2,B2PU3C+FR7 + + WL 3,B2PU3C+FR8 + WL 2,B2PU3C+FR9 + WL 2,B2PU3C+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit4 + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 2,B4PU3D+FR5 + + WL 3,B4PU3D+FR6 + WL 2,B4PU3D+FR7 + WL 2,B4PU3D+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 PUSH + + SUBR bam_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_SETFLAG,M_PUSH + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,B4PS3A+FR2 + WL 3,B4PS3A+FR3 + WL 3,B4PS3A+FR4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ATTACK_ON, AMODE_PUSH,36,85,49,17 ;mode,x,y,w,h + WL 3,B4PS3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-70000h,#no_hit ;range,vel,addr + WL 15,B4PS3A+FR5 +#no_hit + WL 3,B4PS3A+FR5 + WL ANI_IFSTATUS,#hit + WL 5,B4PS3A+FR5 +#hit + WL 3,B4PS3A+FR4 + WL 3,B4PS3A+FR3 + WL 3,B4PS3A+FR2 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;#fireball +; move a13,a11 +; CREATE0 bam_fireball +; rets + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR bam_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,B2AH2A+FR2 + WL 15,B2AH2A+FR3 + WL 3,B2AH2A+FR4 + WL 3,B2AH2A+FR5 + WL 3,B2AH2A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR bam_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,B4AH4A+FR2 + WL 3,B4AH4A+FR3 + WL 14,B4AH4A+FR4 + WL 2,B4AH4A+FR5 + WL 2,B4AH4A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR bam_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,B4AH4A+FR2 + WL 3,B4AH4A+FR3 + WL 14,B4AH4A+FR4 + WL 2,B4AH4A+FR5 + WL 2,B4AH4A+FR6 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,bam_dizzy_anim +; .word ANI_END + + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR bam_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + + WL 3,B4LB4B+FR1 + WL 3,B4LB4B+FR2 + WL 3,B4LB4B+FR3 + WL 3,B4LB4B+FR4 + WL 3,B4LB4B+FR5 + WL 3,B4LB4B+FR6 + WL 3,B4LB4B+FR7 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 ELBOW DROP + +#yoff equ 50 + + SUBR bam_2_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_LBDROP,-1 + WL 3,B2PJ3A+FR3 + WL 3,B2PJ3A+FR4 + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + ;if we're gonna miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,19,-6,-40,33,31,50 + WL 1,B2PJ3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#no_leapat + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + LEAPATOPP 20,999,160,140,90000h,TGT_USER,35,0+#yoff,-40 + .word ANI_SETPLYRMODE,MODE_INAIR + WL ANI_CODE,no_bk_xvel + +#no_leapat + WL 3,B2PJ3A+FR5 + WL 3,B2PJ3A+FR6 + .word ANI_OFFSET,0,#yoff,0 + WL 4,B2PJ3A+FR7 + WL 4,B2PJ3A+FR8 + .word ANI_WAITHITGND + .word ANI_SHAKER,25 + WL ANI_CODE,HIT_THE_MAT + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,19,-6,-40,33,31,50 + WL 1,B2PJ3A+FR9 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFNOTSTATUS,#missed + + .word ANI_SHAKEALL,2 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#hit +#missed + WL ANI_CODE,CALL_MISSES +#hit + .word ANI_DRAW_NAME,18 + WL 3,B2PJ3A+FR9 + WL 4,B2PJ3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + WL ANI_CHANGEANIM,bam_2_faceup_getup2_anim + +#***************************************************************************** +* +* #4 ELBOW DROP + +#yoff equ 40 + + SUBR bam_combo_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_STARTATTACK,AT_LBDROP,-1 + WL 3,B3PJ3B+FR3 + WL 3,B3PJ3B+FR4 + + ;if we're gonna miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,19,-6,-40,33,31,50 + WL 1,B3PJ3B+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#no_leapatc + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,112,96,90000h,TGT_USER,32,#yoff,40 + WL ANI_CODE,no_bk_xvel + +#no_leapatc + WL 2,B3PJ3B+FR5 + .word ANI_OFFSET,0,#yoff,0 + WL 3,B3PJ3B+FR6 + WL 3,B3PJ3B+FR7 + WL 3,B3PJ3B+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,12,-9,-10,42,42,50 + WL 1,B3PJ3B+FR9 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFNOTSTATUS,#missedc + + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,2 + + ;bounce off the guy + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,-18000h,AM_ABS + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#hitc + +#missedc + WL ANI_CODE,CALL_MISSES +#hitc + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 3,B3PJ3B+FR9 + WL 4,B3GU4A+FR4 + + .word ANI_SETMODE,MODE_NORMAL + WL ANI_CHANGEANIM,bam_4_faceup_getup2_anim + + + SUBR bam_4_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LBDROP,-1 + WL 3,B3PJ3B+FR3 + WL 3,B3PJ3B+FR4 + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + ;if we're gonna miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,19,-6,-40,33,31,50 + WL 1,B3PJ3B+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#no_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,160,140,90000h,TGT_USER,32,#yoff,40 + WL ANI_CODE,no_bk_xvel + +#no_leapat + WL 2,B3PJ3B+FR5 + .word ANI_OFFSET,0,#yoff,0 + WL 3,B3PJ3B+FR6 + WL 3,B3PJ3B+FR7 + WL 3,B3PJ3B+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SHAKER,25 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,12,-9,-10,42,42,50 + WL 1,B3PJ3B+FR9 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFNOTSTATUS,#missed + + .word ANI_SHAKEALL,2 + + ;bounce off the guy + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,-18000h,AM_ABS + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#hit + +#missed + WL ANI_CODE,CALL_MISSES +#hit + .word ANI_DRAW_NAME,18 + + WL 3,B3PJ3B+FR9 + WL 3,B3GU4A+FR4 + + .word ANI_SETMODE,MODE_NORMAL + WL ANI_CHANGEANIM,bam_4_faceup_getup2_anim + +#***************************************************************************** +* +* #3 FLYING BUTT-DROP + +#yoff equ 51 + + SUBR bam_combo_butt_drop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_BUTTSTOMP,38 + WL 4,B3JK3A+FR4 + WL 4,B3JK3A+FR5 + +; .word ANI_TARGET,TGT_HEAD,TGT_GROIN,ATM_FARTHEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,999,112,96,90000h,TGT_CHEST,9,3+#yoff,-20 + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_CODE,no_bk_xvel + WL 4,B3JK3A+FR6 + .word ANI_OFFSET,0,#yoff,0 + WL 4,B3JK3A+FR7 + .word ANI_ATTACK_ON,AMODE_BUTTSTOMP,-25,-7+5,55,23 + WWL ANI_WAITHITOPP,26,B3JK3A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,35 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFNOTSTATUS,#missc + + .WORD ANI_INC_COMBO + .word ANI_ZEROVELS + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL 4,B3JK3A+FR9 + WL 4,B3JK3A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 4,B3JK3A+FR9 + WL 4,B3JK3A+FR10 + .word ANI_OFFSET,15,9,0 + .word ANI_FACEUP + .word ANI_XFLIP + WL ANI_CHANGEANIM,bam_2_faceup_getup2_anim + +#missc ;missed + WL ANI_CODE,CALL_MISSES + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,B3JK3A+FR9 + WL 4,B3JK3A+FR10 + .word ANI_OFFSET,15,9,0 + .word ANI_FACEUP + .word ANI_XFLIP + WL ANI_CHANGEANIM,bam_2_faceup_getup2_anim + + + SUBR bam_3_butt_drop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_INAIR + + .word ANI_STARTATTACK,AT_BUTTSTOMP,38 + WL 2,B3JK3A+FR4 + WL 2,B3JK3A+FR5 + + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_FARTHEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,999,112,96,90000h,TGT_USER,9,3+#yoff,-20 + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_CODE,no_bk_xvel + WL 4,B3JK3A+FR6 + .word ANI_OFFSET,0,#yoff,0 + WL 4,B3JK3A+FR7 + .word ANI_ATTACK_ON,AMODE_BUTTSTOMP,-25,-7+5,55,23 + WWL ANI_WAITHITOPP,26,B3JK3A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,35 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFNOTSTATUS,#miss + +#hit + .word ANI_ZEROVELS + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL 4,B3JK3A+FR9 + WL 4,B3JK3A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + .word ANI_DRAW_NAME,14 + + WL 3,B3JK3A+FR9 + WL 3,B3JK3A+FR10 + .word ANI_OFFSET,15,9,0 + .word ANI_FACEUP + .word ANI_XFLIP + WL ANI_CHANGEANIM,bam_2_faceup_getup2_anim + +#miss ;missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B3JK3A+FR9 + WL 3,B3JK3A+FR10 + .word ANI_OFFSET,15,9,0 + .word ANI_FACEUP + .word ANI_XFLIP + WL ANI_CHANGEANIM,bam_2_faceup_getup2_anim + +#***************************************************************************** +* +* TURNBUCKLE BELLYFLOP + + SUBR bam_bellyflop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + .word ANI_SET_WRESTLER_XFLIP + .word ANI_SCROLL_CTRL,SC_RESTORE + + .ref BAMFRE_P + WLWW ANI_SHADOWTRAIL,BAMFRE_P,3,12 ;pal,rate,lifespan + .word ANI_STARTATTACK,AT_LEAPING,44 + WL 3,B4FK4B+FR3 + WL 3,B4FK4B+FR4 + .word ANI_OFFSET,17,40,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 36,190,190,190,90000h,TGT_CHEST,18,0,20 + +; .word ANI_SETPLYRMODE,MODE_INAIR2 + WL ANI_CODE,set_tbukl_airmode + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + + WL ANI_CODE,check_xvel + + .WORD ANI_ADD_MOVE,MOVE_C_9,2,2 + + WL 4,B4FK4B+FR5 + WL 4,B4FK4B+FR6 + WL 4,B4FK4B+FR7 + WL ANI_CODE,set_tbukl_confine + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-36,0,-30,110,38,60 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + WWL ANI_IFOPPMODE,MODE_DEAD,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-36,28,-30,110,38,60 +#opp_onground + WWL ANI_WAITHITOPP,30,B4FK4B+FR8 + .word ANI_ATTACK_OFF + .word ANI_SETPLYRMODE,MODE_INAIR ;no steering once you hit. + WL ANI_IFSTATUS,#hit + + ;missed + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,CALL_MISSES +; WL ANI_CODE,tbukl_miss_damage + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WL 4,B4FK4B+FR9 + WL 4,B4FK4B+FR10 + .word ANI_BOUNCE,4 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + WL ANI_CHANGEANIM,bam_4_faceup_getup3_anim + +#hit + WL 4,B4FK4F+FR9 + WL 4,B4FK4F+FR10 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,3 + .word ANI_DRAW_NAME,21 + +;FIX!!! +;Jason will do... Don't jerk opponent onto grnd if he is up in air +;This should already be working?!? +;Put in belly flop agnst inair guy here... + + WL ANI_CODE,#attach_victim + WL ANI_SLAVEANIM,#release_table + .word ANI_SOUND,0A3h + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_INVISIBLE|MODE_NOSHADOW|MODE_NOCOLLIS + .word ANI_PAUSE,40 + + ;reappear + WL ANI_CODE,#set_new_position + .word ANI_SETMODE,MODE_UNINT|MODE_NOSHADOW|MODE_NOCOLLIS|MODE_NOCONFINE + + .word ANI_SOUND,0ABh + WL 4,B4RS4A+FR1 + WL 4,B4RS4A+FR2 + WL 4,B4RS4A+FR3 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + WL 4,B4RS4A+FR4 + WL 4,B4RS4A+FR5 + WL 4,B4RS4A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;attach victim just as if we'd puppeted him + SUBRP #attach_victim + + move *a13(WHOIHIT),a14,L + + PUSH a13 + move a13,a10 + move a14,a13 + calla hit_puppet_even_if_dead ;pretend collision + PULL a13 + rets + + SUBRP #set_new_position + + movi #init_positions,a0 +#lp1 move *a0(#NXT),a14,W + jrn #usea0 ;if last entry, use by default. + + ;use current entry if: + ; X >= WORLDTLX+25 and + ; X <= WORLDTLX+400-25 + + move *a0(#XPOS),a1 + move @WORLDTLX,a14,L + sra 16,a14 + addk 25,a14 + cmp a14,a1 + jrlt #nxt1 + addi 350,a14 + cmp a14,a1 + jrle #usea0 + + +#nxt1 addi #SIZE,a0 + jruc #lp1 + +#usea0 move *a0(#XPOS),*a13(OBJ_XPOSINT) + move *a0(#ZPOS),*a13(OBJ_ZPOSINT) + move *a0(#YPOS),*a13(OBJ_YPOSINT) + move *a0(#YPOS),*a13(GROUND_Y) + move *a0(#INRING),*a13(INRING) + + rets + + + ;possible reappear positions. hunt until you find one that's + ; onscreen, then use it. If none of them are onscreen (should + ; never happen,) use the last entry in the table. + + STRUCT 0 + WORD #XPOS + WORD #ZPOS + WORD #YPOS + WORD #INRING + LABEL #SIZE + WORD #NXT ;first element of NEXT entry. check for -1. + + ;XPOSINT, ZPOSINT, YPOSINT/GROUND_Y, INRING +#init_positions + .word RING_X_CENTER,RING_Z_CENTER,MAT_Y,0 ;center + .word RING_TOP_LEFT,RING_Z_CENTER,MAT_Y,0 ;center left + .word RING_TOP_RIGHT,RING_Z_CENTER,MAT_Y,0 ;center right + .word RING_BOT_LEFT,RING_BOT,MAT_Y,0 ;bottom left + .word RING_BOT_RIGHT,RING_BOT,MAT_Y,0 ;bottom right + + ;various outside points. + .word 675,1184,0,1, 1475,921,0,1 + .word 965,683,0,1, 1253,656,0,1 + .word 814,1648,0,1, 1415,1608,0,1 + .word 1097,1648,0,1, 659,696,0,1 + .word 528,1657,0,1, 1652,1615,0,1 + .word 1709,699,0,1, 1791,1174,0,1 + .word 1874,1548,0,1 + + .word RING_X_CENTER,RING_Z_CENTER,MAT_Y,0 ;center + .word -1 + + + SUBR burn_tbl + SUBRP #release_table + .long xxx_burn_anim,xxx_burn_anim,xxx_burn_anim + .long xxx_burn_anim,xxx_burn_anim,xxx_burn_anim + .long xxx_burn_anim,xxx_burn_anim,xxx_burn_anim + +#***************************************************************************** +* +* BURN FROM BAM BAM FLAMING TURNBUCKLE SPLASH (generic - everyone uses this) + + SUBR xxx_burn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,#hit_ground + WL ANI_CODE,#set_pal + WL 6,B4FK4F+FR11 + WL 6,B4FK4F+FR12 + WL 5,B4FK4F+FR13 + WL 5,B4FK4F+FR14 + + .word ANI_SET_RPTCOUNT,2 +#loop + WL 4,BURNBODY+FR1 + WL 4,BURNBODY+FR2 + WL 4,BURNBODY+FR3 + WL 4,BURNBODY+FR4 + WL 4,BURNBODY+FR5 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop + + ;done looping + WL ANI_CODE,#restore_pal + + WL ANI_CODE,am_I_dead + WL ANI_IFNOTSTATUS,#nodead + WL ANI_CHANGEANIM_TBL,#convulse + +#nodead + WL ANI_CHANGEANIM_TBL,#liedown_table + + +;Immediately snap to ground when the burn begins. + SUBRP #hit_ground + move *a13(GROUND_Y),*a13(OBJ_YPOSINT) + rets + + SUBRP #set_pal + movi BAMBLU_P,a0 + calla pal_getf + move *a13(OBJ_PAL),*a13(MY_PAL),W + move a0,*a13(OBJ_PAL),W + + ;set the TEMP_PAL bit + move *a13(STATUS_FLAGS),a14 + ori M_TEMP_PAL,a14 + move a14,*a13(STATUS_FLAGS) + + rets + + SUBRP #restore_pal + move *a13(MY_PAL),*a13(OBJ_PAL),W + + ;clear TEMP_PAL bit + move *a13(STATUS_FLAGS),a14 + andni M_TEMP_PAL,a14 + move a14,*a13(STATUS_FLAGS) + + rets + + +#liedown_table + REFLONG hrt_liedown_anim ;0 Bret Hart + REFLONG rzr_liedown_anim ;1 Razor Ramon + REFLONG und_liedown_anim ;2 Undertaker + REFLONG yok_liedown_anim ;3 Yokozuna + REFLONG shn_liedown_anim ;4 Shawn Michaels + REFLONG bam_liedown_anim ;5 Bam Bam + REFLONG dnk_liedown_anim ;6 Doink + .long 0 + REFLONG lex_liedown_anim ;8 Lex Luger + +#convulse + REFLONG hrt_hitonground_anim ;0 Bret Hart + REFLONG rzr_hitonground_anim ;1 Razor Ramon + REFLONG und_hitonground_anim ;2 Undertaker + REFLONG yok_hitonground_anim ;3 Yokozuna + REFLONG shn_hitonground_anim ;4 Shawn Michaels + REFLONG bam_hitonground_anim ;5 Bam Bam + REFLONG dnk_hitonground_anim ;6 Doink + .long 0 ;7 spare + REFLONG lex_hitonground_anim ;8 Lex Luger + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR bam_2_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_STARTATTACK,AT_HDBUTT,12 + WL 3,B2BC3A+FR3 + WL 3,B2BC3A+FR4 + WL 3,B2BC3A+FR5 + WL 3,B2BC3A+FR6 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,5,79,40,19 ;mode,x,y,w,h + WL 3,B2BC3A+FR7 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,B2BC3A+FR7 +#no_hit + WL 5,B2BC3A+FR7 + WL 3,B2BC3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 HEADBUTT + + SUBR bam_4_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_STARTATTACK,AT_HDBUTT,12 + WL 3,B4BC3A+FR2 + WL 3,B4BC3A+FR3 + WL 3,B4BC3A+FR4 + WL 3,B4BC3A+FR5 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,5,79,40,19 ;mode,x,y,w,h + WL 3,B4BC3A+FR6 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + + WL ANI_SET_YVEL,38000h + WL 6,B4BC3A+FR6 +#no_hit2 + WL 5,B4BC3A+FR6 + WL 3,B4BC3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEADBUTTS - In close + + SUBR bam_2_butts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_SET_RPTCOUNT,3 ;5 times +#rpt + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 2,B2BC3A+FR2 + WL 1,B2BC3A+FR3 + WL 2,B2BC3A+FR4 + WL 1,B2BC3A+FR5 + WL 2,B2BC3A+FR6 + + .word ANI_ATTACK_ON, AMODE_HDBUTT_STAY,5,79,40,19 ;mode,x,y,w,h + WL 2,B2BC3A+FR7 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,38000h + WL 6,B2BC3A+FR7 +#no_hit + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,200,2,0,100,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,create_impact + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex + .word ANI_DEC_RPTCOUNT + + WL 2,B2BC3A+FR7 + WL 2,B2BC3A+FR8 + + WL ANI_IF_RPTCOUNT,#rpt + WL ANI_CHANGEANIM,bam_2_knee_anim + +#ex +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,40000h,38000h,0h ;x,y,z vels + + WL 3,B2BC3A+FR7 + WL 3,B2BC3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WLLL ANI_SETOPPVELS,50000h,18000h,0h ;x,y,z vels +; WL 3,B2BC3A+FR7 +#missed + WL 2,B2BC3A+FR7 + WL 2,B2BC3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#* #4 HEADBUTT + + SUBR bam_4_butts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_SET_RPTCOUNT,3 ;5 times + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 +#rpt + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 2,B4BC3A+FR1 + WL 1,B4BC3A+FR2 + WL 2,B4BC3A+FR3 + WL 1,B4BC3A+FR4 + WL 2,B4BC3A+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT_STAY,5,79,40,19 ;mode,x,y,w,h + WL 2,B4BC3A+FR6 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WL ANI_CODE,create_impact + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,100,2,0,100,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + + WL ANI_SET_YVEL,38000h + WL 6,B4BC3A+FR6 +#no_hit2 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex + .word ANI_DEC_RPTCOUNT + + WL 2,B4BC3A+FR6 + WL 2,B4BC3A+FR7 + + WL ANI_IF_RPTCOUNT,#rpt + WL ANI_CHANGEANIM,bam_4_knee_anim +#ex +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,40000h,38000h,0h ;x,y,z vels + + WL 3,B4BC3A+FR6 + WL 3,B4BC3A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WLLL ANI_SETOPPVELS,50000h,18000h,0h ;x,y,z vels +; WL 3,B4BC3A+FR6 +#missed + WL 2,B4BC3A+FR6 + WL 2,B4BC3A+FR7 + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK - Against TB attacks + + SUBR bam_kick_TB_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_STARTATTACK,AT_LEAPING,12 + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL 3,B2KM3B+FR2 + WL ANI_SET_YVEL,70000h + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL 2,B2KM3B+FR2 + WL 2,B2KM3B+FR3 + WL 2,B2KM3B+FR4 + .word ANI_ATTACK_ON, AMODE_SPINKICK,35,65,66,43 ;mode,x,y,w,h + WL 10,B2KM3B+FR5 + .word ANI_ATTACK_OFF + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 3,B2KM3B+FR6 + WL 2,B2KM3B+FR7 + WL 3,B2KM3B+FR8 + WL 2,B2KM3B+FR9 + WL 3,B2KM3B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK + + SUBR bam_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2KM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2KM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2KM3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KICK,5 + WL 1,B2KM3B+FR2 + WL 2,B2KM3B+FR3 + WL 2,B2KM3B+FR4 + + WL ANI_SET_YVEL,20000h + .word ANI_ATTACK_ON, AMODE_KICK,35,65,66,43 ;mode,x,y,w,h + WL 6,B2KM3B+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 6,B2KM3B+FR5 + +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B2KM3B+FR6 + WL 2,B2KM3B+FR7 + WL 3,B2KM3B+FR8 + WL 2,B2KM3B+FR9 + WL 3,B2KM3B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KICK + + SUBR bam_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KICK,5 + WL 1,B4KM3A+FR2 + WL 2,B4KM3A+FR3 + WL 2,B4KM3A+FR4 + + WL ANI_SET_YVEL,20000h + .word ANI_ATTACK_ON, AMODE_KICK,37,62,62,35 ;mode,x,y,w,h + WL 6,B4KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 6,B4KM3A+FR5 + +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B4KM3A+FR6 + WL 2,B4KM3A+FR7 + WL 3,B4KM3A+FR8 + WL 2,B4KM3A+FR9 + WL 3,B4KM3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #2 SUPER KARATE KICK + + SUBR bam_2_superkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,B2BG3A+FR1 + +* #4 SUPER KARATE KICK + + SUBR bam_4_superkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,10 + WL 2,B4KM3E+FR1 + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,65-5,40,90000h,TGT_HEAD,64,82,10 +; WLW ANI_SET_ZVEL,0h,AM_ABS + WL ANI_SET_YVEL,30000h + .word ANI_FRICTION,4000h + WL 4,B4KM3E+FR2 + WL 3,B4KM3E+FR3 + .word ANI_ATTACK_ON, AMODE_SUPER_KICK,12,58,60,40 ;mode,x,y,w,h + WL 2,B4KM3E+FR5 + WLW ANI_SET_ZVEL,0h,AM_ABS + WL 5,B4KM3E+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;hit + WL ANI_CODE,create_impact2 + WL ANI_CODE,DO_FLAME_HIT_SND + WL ANI_CODE,CALL_NASTY_MOVE + + .word ANI_ZEROVELS + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 7,B4KM3E+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +#no_hit2 + + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + WL 3,B4KM3E+FR5 + + + WL ANI_CODE,skick_delay + WL ANI_IFNOTSTATUS,#none + WL 20,B4KM3E+FR5 +#none + + WL 2,B4KM3E+FR6 + WL 3,B4KM3E+FR7 + WL 2,B4KM3E+FR7 + WL 3,B4KM3E+FR8 + WL 2,B4KM3E+FR9 + WL 3,B4KM3E+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#missedb + WWL ANI_SLIDE_BACK,30h,-70000h,#missed + WL ANI_SET_YVEL,30000h + WL 7,B4KM3E+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +#missed + WL ANI_CODE,CALL_MISSES + WL 3,B4KM3E+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,skick_delay + WL ANI_IFNOTSTATUS,#none2 + WL 20,B4KM3E+FR5 +#none2 + WL 3,B4KM3E+FR6 + WL 2,B4KM3E+FR7 + WL 3,B4KM3E+FR8 + WL 2,B4KM3E+FR9 + WL 3,B4KM3E+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR bam_combo_superkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_KICK,10 + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WL ANI_CODE,DO_FLAME_SND + WL 2,B4KM3E+FR1 + + WL 2,B4KM3E+FR2 + WL 2,B4KM3E+FR3 + .word ANI_ATTACK_ON, AMODE_KICK,12,28,60,60 ;mode,x,y,w,h + WL 1,B4KM3E+FR5 + WLW ANI_SET_XVEL,0000h,AM_ABS + WLW ANI_SET_ZVEL,0h,AM_FACE_REL + WL 2,B4KM3E+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedc ;Yes, I hit blocker + WL ANI_CODE,DO_FLAME_HIT_SND + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,20000h,0h ;x,y,z vels + + WL ANI_CODE,create_impact2 + + WL 2,B4KM3E+FR5 + WL 2,B4KM3E+FR6 + WL 2,B4KM3E+FR7 + WL 2,B4KM3E+FR8 + WL 2,B4KM3E+FR9 + WL 2,B4KM3E+FR10 + .word ANI_SET_RPTCOUNT,3 ;3 times +#k_loop + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_KICK,10 + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WL ANI_CODE,DO_FLAME_SND + WL 1,B4KM3E+FR1 + + WL 1,B4KM3E+FR2 + WL 2,B4KM3E+FR3 + .word ANI_ATTACK_ON, AMODE_KICK,12,28,60,60 ;mode,x,y,w,h + WL 1,B4KM3E+FR5 + WLW ANI_SET_XVEL,0000h,AM_ABS + WLW ANI_SET_ZVEL,0h,AM_FACE_REL + WL 1,B4KM3E+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedc ;Yes, I hit blocker + WL ANI_CODE,DO_FLAME_HIT_SND + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,20000h,0h ;x,y,z vels + + WL ANI_CODE,create_impact2 + + WL 1,B4KM3E+FR5 + WL 1,B4KM3E+FR6 + WL 1,B4KM3E+FR7 + WL 1,B4KM3E+FR8 + WL 1,B4KM3E+FR9 + WL 1,B4KM3E+FR10 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#k_loop + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#CHECK_NEXT2 + .word ANI_DETACH + WL ANI_CHANGEANIM,bam_combo_hiptoss_anim + +#CHECK_NEXT2 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#CHECK_NEXT1A + .word ANI_DETACH + WL ANI_CHANGEANIM,bam_flying_kick_no_xvel + +#CHECK_NEXT1A + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#CHECK_NEXT1 + WL ANI_CHANGEANIM,bam_combo_pogo_anim + +#CHECK_NEXT1 + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NOT_HIT_AT_ALL + WLW ANI_SET_XVEL,8000h,AM_FACE_REL + WL ANI_CHANGEANIM,bam_combo_slap_anim_no_vel + +#NOT_HIT_AT_ALL + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedc + WL ANI_CODE,CALL_MISSES + WL 3,B4KM3E+FR5 + .word ANI_WAITHITGND + WL 3,B4KM3E+FR6 + WL 3,B4KM3E+FR7 + WL 3,B4KM3E+FR8 + WL 3,B4KM3E+FR9 + WL 3,B4KM3E+FR10 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 & #4 TURBO KICK + + SUBR bam_4_jumpkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;;; .word ANI_SLOWMO,2 + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,19 + WL 3,B4KM3H+FR2 + WL 3,B4KM3H+FR3 + WL 3,B4KM3H+FR4 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 10,999,100,54,90000h,TGT_HEAD,70,100,20 + WL ANI_CODE,no_bk_xvel + + WL 4,B4KM3H+FR5 + WL 3,B4KM3H+FR6 + WL 3,B4KM3H+FR7 + + + .word ANI_ATTACK_ON, AMODE_JUMPKICK,49,87,34,20 ;mode,x,y,w,h + WL 3,B4KM3H+FR9 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + + .word ANI_SHAKER,35 + + WL 6,B4KM3H+FR9 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 6,B4KM3H+FR9 + + WL 3,B4KM3H+FR10 + WL 3,B4KM3H+FR11 + WL 3,B4KM3H+FR12 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 6,B4KM3H+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS +#missed + WL 6,B4KM3H+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,B4KM3H+FR10 + WL 3,B4KM3H+FR11 + WL 3,B4KM3H+FR12 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #3 FLYING KICK + + SUBR bam_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + .word ANI_STARTATTACK,AT_LEAPING,20 + WL 3,B3DC3B+FR4 + +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,145,65,90000h,TGT_HEAD,57,75,0 + WL ANI_CODE,no_bk_xvel + + WL 4,B3DC3B+FR5 + WL 5,B3DC3B+FR6 + .word ANI_OFFSET,0,50,0 ;x,y,z + WL 3,B3DC3B+FR7 + + +; .word ANI_ATTACK_ON, AMODE_FLYKICK,53,-10,27,49 ;mode,x,y,w,h + .word ANI_ATTACK_ON,AMODE_FLYKICK,-34,16,110,36 + WL 3,B3DC3B+FR8 + .word ANI_ATTACK_OFF + + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + WL ANI_IFNOTSTATUS,#hit +;A hit + WL ANI_CODE,create_impact_flykick + WL ANI_GOTO,#hit +#missedb +; .word ANI_ZERO_XZVELS + WLW ANI_SET_ZVEL,0,AM_ABS +#hit + + WL 3,B3DC3B+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_BOUNCE,3 + + WL 3,B3DC3B+FR11 +; WL 3,B3DC3B+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT +; WL 2,B3DC3B+FR9 + + WL 5,B3DC3B+FR11 + + .word ANI_XFLIP + .word ANI_OFFSET,5,0,0 ;x,y,z + + WL 3,B3GU2A+FR5 + WL 2,B3GU2A+FR6 + WL 3,B3GU2A+FR7 + WL 2,B3GU2A+FR8 + WL 3,B3GU2A+FR9 + +;Check for a flip here + WL 1,B3GU2A+FR10 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,B3GU2A+FR10 + + WL 2,B3GU2A+FR10 + WL 3,B3GU2A+FR11 + WL 2,B3GU2A+FR12 + WL 3,B3GU2A+FR13 + + .word ANI_SAFE_TIME,30 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,36,85,49,17 + WL 1,B3GU2A+FR13 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,bam_4_push_anim +#no_freetoss + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBRP bam_flying_kick_no_xvel + + .word ANI_STARTATTACK,AT_LEAPING,20 + WLW ANI_SET_XVEL,20000h,AM_FACE_REL + WL ANI_SET_YVEL,44000h + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL 4,B3DC3B+FR5 + WL 7,B3DC3B+FR6 + .word ANI_OFFSET,0,50,0 ;x,y,z + WL 3,B3DC3B+FR7 + + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_FLYKICK,53,-10,27,49 ;mode,x,y,w,h + WL 3,B3DC3B+FR8 + .word ANI_ATTACK_OFF + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,B3DC3B+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_BOUNCE,3 + + WL 3,B3DC3B+FR11 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + WL 5,B3DC3B+FR11 + + .word ANI_XFLIP + .word ANI_OFFSET,5,0,0 ;x,y,z + + WL 3,B3GU2A+FR5 + WL 3,B3GU2A+FR6 + WL 3,B3GU2A+FR7 + WL 3,B3GU2A+FR8 + WL 3,B3GU2A+FR9 + +;Check for a flip here + WL 1,B3GU2A+FR10 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,B3GU2A+FR10 + + WL 3,B3GU2A+FR10 + WL 3,B3GU2A+FR11 + WL 3,B3GU2A+FR12 + WL 3,B3GU2A+FR13 + + .word ANI_SAFE_TIME,30 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss1 + .word ANI_ATTACK_ON,AMODE_HITCHECK,36,85,49,17 + WL 1,B3GU2A+FR13 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss1 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,bam_4_push_anim +#no_freetoss1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR bam_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_STARTATTACK,AT_STOMP,12 + WL 2,B2MP2A+FR2 + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,13,0,-40,22,28,50 + WL 1,B2MP2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL 3,B2MP2A+FR3 + WL 3,B2MP2A+FR4 + WL 3,B2MP2A+FR5 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,13,0,-40,22,28,50 + WL 1,B2MP2A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL ANI_GOTO,#hit +#missed + WL ANI_CODE,CALL_MISSES +#hit + WL 3,B2MP2A+FR6 + WL 3,B2MP2A+FR7 + WL 3,B2MP2A+FR8 + WL 3,B2MP2A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#leapat_stomp + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,160,140,40000h,TGT_USER,24,0,-30 + WL ANI_CODE,no_bk_xvel + + WL 4,B2MP2A+FR3 + WL 4,B2MP2A+FR4 + WL 4,B2MP2A+FR5 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,13,0,-40,22,28,50 + WL 1,B2MP2A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#l_missed + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,13000h,AM_ABS + WL ANI_GOTO,#l_hit +#l_missed + WL ANI_CODE,CALL_MISSES +#l_hit + WL 3,B2MP2A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B2MP2A+FR7 + WL 3,B2MP2A+FR8 + WL 3,B2MP2A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 STOMP ON FALLEN OPPONENT + + SUBR bam_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4MP4A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4MP4A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4MP4A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 2,B4MP4A+FR2 + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,-3,-5,-10,46,35,50 + WL 1,B4MP4A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat + + .word ANI_STARTATTACK,AT_STOMP,8 + WL 3,B4MP4A+FR3 + WL 3,B4MP4A+FR4 + WL 2,B4MP4A+FR5 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-5,-10,46,35,50 + WL 1,B4MP4A+FR6 + .word ANI_ATTACK_OFF + WL ANI_GOTO,#common + +#leapat + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,160,140,40000h,TGT_USER,12,0,30 + WL ANI_CODE,no_bk_xvel + + .word ANI_STARTATTACK,AT_STOMP,16 + WL 3,B4MP4A+FR3 + WL 3,B4MP4A+FR4 + WL 3,B4MP4A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-5,-10,46,35,50 + WL 1,B4MP4A+FR6 + .word ANI_ATTACK_OFF + +#common + WL ANI_IFNOTSTATUS,#missed + .word ANI_SHAKER,25 + .word ANI_SHAKEALL,1 + WL ANI_GOTO,#hit +#missed + WL ANI_CODE,CALL_MISSES +#hit + WL 3,B4MP4A+FR6 + WL 3,B4MP4A+FR7 + WL 3,B4MP4A+FR8 + WL 3,B4MP4A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;#***************************************************************************** +;* +;* #2 BIG BOOT +;* #4 BIG BOOT +; +; SUBR bam_4_bigboot_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP +; .word ANI_SETSPEED,100h +; .word ANI_ZEROVELS +; +; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_SET_WRESTLER_XFLIP +; +; .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 +; .word ANI_STARTATTACK,AT_BIGBOOT,12 +; WL 2,B4KM3A+FR1 +; WL 2,B4KM3A+FR2 +; WL 2,B4KM3A+FR3 +; WL 2,B4KM3A+FR4 +; +; WL ANI_CODE,#clrcnt +; WL ANI_SET_YVEL,20000h +; .word ANI_ATTACK_ON, AMODE_BIGBOOT,37,62,62,35 ;mode,x,y,w,h +; WWL ANI_WAITHITOPP,10,B4KM3A+FR5 +;; .word ANI_WAITHITGND +;; .word ANI_ZEROVELS +;#lp0 +; .word ANI_STARTATTACK,AT_BIGBOOT,5 +; WL 2,B4KM3A+FR5 +; WL ANI_CODE,#holdup +; WL ANI_IFSTATUS,#lp0 +; .word ANI_ATTACK_OFF +; WL ANI_IFNOTSTATUS,#missed +; .word ANI_DRAW_NAME,27 +;#missed +; +; WL 3,B4KM3A+FR6 +; WL 3,B4KM3A+FR7 +; WL 3,B4KM3A+FR8 +; WL 3,B4KM3A+FR9 +; WL 3,B4KM3A+FR10 +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END +; +;#clrcnt +;;We are re-using BUT_COUNT in the player process +; clr a0 +; move a0,*a13(BUT_COUNT) +; rets +; +;#holdup +; move *a13(BUT_COUNT),a0 +; inc a0 +; move a0,*a13(BUT_COUNT) +; +;;Max time to hold up in air (*2 ticks) +; cmpi 25,a0 +; jrgt #button_up +; +; move *a13(BUT_VAL_CUR),a0 +; btst PLAYER_SKICK_BIT,a0 ;still down? +; jrz #button_up +; +;;Still holding... +; +; move *a13(ANIMODE),a1 +; ori MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets +; +;#button_up +; move *a13(ANIMODE),a1 +; andni MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets +; + +#***************************************************************************** +* +* #2 KNEE + + SUBR bam_2_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KNEE,6 + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 21,999,36,30,90000h,TGT_CHEST,56,74+10,0 + + WL 3,B2NM3A+FR4 + + .word ANI_ATTACK_ON, AMODE_KNEE,34,31,52,51 ;mode,x,y,w,h + WL 3,B2NM3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL 3,B2NM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont + +#no_hit + WL ANI_IFNOTSTATUS,#nodrft + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL 15,B2NM3A+FR5 + .word ANI_ZERO_XZVELS +#nodrft + WL 1,B2NM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 3,B2NM3A+FR5 +#cont + WL 3,B2NM3A+FR6 + WL 3,B2NM3A+FR7 + WL 3,B2NM3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 KNEE + + SUBR bam_4_knee2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KNEE,6 + + WL 1,B4NM3A+FR2 + WL ANI_GOTO,#cont2a + + SUBR bam_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KNEE,6 + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,B4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim +#cont2a + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 21,999,36,20,90000h,TGT_CHEST,46,74+10,0 + WL 3,B4NM3A+FR3 + WL 3,B4NM3A+FR4 + + .word ANI_ATTACK_ON, AMODE_KNEE,29,32,46,40 ;mode,x,y,w,h + WL 3,B4NM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + WL 3,B4NM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 +#no_hit2 + WL 1,B4NM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS +#cont2 + WL 3,B4NM3A+FR5 + WL 3,B4NM3A+FR4 + WL 3,B4NM3A+FR3 + WL 3,B4NM3A+FR2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + + SUBR bam_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,10 + + WL 2,B1TT5Z+FR2 + WL 2,B1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR bam_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,8 + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,50,20,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + + WL 5,B4GF3A+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET_NOFLAIL,33,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,B4GF3A+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,2,B4GF3A+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missedb + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;got him + WL ANI_CODE,DO_GRUNT + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,B4GF3A+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,5,B4GF3A+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,B4GF3A+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,B4GF3A+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,B4GF3A+FR8,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,B4GF3A+FR9,#puppet_tbl,5 + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 6,B4GF3A+FR9 + WL 4,B4GF3A+FR11 + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missedb + WL ANI_CODE,fling_delay + WL ANI_IFNOTSTATUS,#missed + WL 25,B4GF3A+FR3 +#missed + WL ANI_CODE,CALL_MISSES + WL 6,B4GF3A+FR3 + WL 3,B4GF3A+FR2 + WL 3,B4GF3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H4YR3A,H3RN3A + .ref R4YR3A,R3RN3D + .ref U4YR3B,U3RN3A + .ref Y4YR3A,Y3RN3C + .ref S4YR3A,S3RN3A + .ref B4YR3A,B3RN3A + .ref D4YR3B,D3RN3B + .ref L4YR3B,L3RN3B + +#Bret + LWWW H4YR3A+FR1,54,5,1 + LWWW H4YR3A+FR2,44,7,1 + LWWW H4YR3A+FR3,34,12,1 + LWWW H4YR3A+FR5,16,8,1 + LWWW H3RN3A+FR1,10,-10,0 + LWWW H3RN3A+FR2,-45,-8,0 +#Razor + LWWW R4YR3A+FR1,37,14,0 + LWWW R4YR3A+FR2,21,18,0 + LWWW R4YR3A+FR3,-9,14,0 + LWWW R4YR3A+FR4,-28,10,0 + LWWW R3RN3D+FR10,16,3,0 + LWWW R3RN3D+FR11,-29,2,0 +#Taker + LWWW U4YR3B+FR2,42,18,0 + LWWW U4YR3B+FR3,37,15,0 + LWWW U4YR3B+FR4,15,26,0 + LWWW U4YR3B+FR5,4,19,0 + LWWW U3RN3A+FR1,17,4,0 + LWWW U3RN3A+FR2,-31,1,0 +#Yokozuna + LWWW Y4YR3A+FR1,54,10,1 + LWWW Y4YR3A+FR4,25,13,1 + LWWW Y4YR3A+FR5,14,17,1 + LWWW Y4YR3A+FR7,-10,1,1 + LWWW Y3RN3C+FR7,34,3,0 + LWWW Y3RN3C+FR8,2,0,0 +#Shawn + LWWW S4YR3A+FR2,36,4,1 + LWWW S4YR3A+FR3,45,-4,1 + LWWW S4YR3A+FR5,8,14,1 + LWWW S4YR3A+FR6,-4,6,1 + LWWW S3RN3A+FR2,18,-4,0 + LWWW S3RN3A+FR3,-19,-5,0 +#BamBam + LWWW B4YR3A+FR3,46,11,0 + LWWW B4YR3A+FR4,53,7,0 + LWWW B4YR3A+FR5,46,13,0 + LWWW B4YR3A+FR7,-21,3,0 + LWWW B3RN3A+FR1,16,0,0 + LWWW B3RN3A+FR2,-41,0,0 +#Doink + LWWW D4YR3B+FR1,71,9,1 + LWWW D4YR3B+FR2,60,13,1 + LWWW D4YR3B+FR3,38,17,1 + LWWW D4YR3B+FR4,8,12,1 + LWWW D3RN3B+FR3,27,3,0 + LWWW D3RN3B+FR4,-35,-1,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,67,10,1 + LWWW L4YR3B+FR2,43,5,1 + LWWW L4YR3B+FR3,20,12,1 + LWWW L4YR3B+FR4,-27,5,1 + LWWW L3RN3B+FR2,27,1,0 + LWWW L3RN3B+FR3,-19,-3,0 + + +#strt_run_tbl + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR bam_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,B2AH2A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,B2AH2A+FR2 + WL 2,B2AH2A+FR3 + WL 3,B2AH2A+FR4 + WL 2,B2AH2A+FR5 + WL 3,B2AH2A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT + + SUBR bam_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,B4AH4A+FR1 + WL 2,B4AH4A+FR2 + WL 3,B4AH4A+FR3 + WL 2,B4AH4A+FR4 + WL 3,B4AH4A+FR5 + WL 2,B4AH4A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #2 HEAD HIT - From spin kick + + SUBR bam_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,B2AH2A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,B2AH2A+FR2 + WL 1,B2AH2A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B2AH2A+FR4 + WL 2,B2AH2A+FR5 + WL 2,B2AH2A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT - From spin kick + + SUBR bam_4_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,B4AH4A+FR1 + WL 3,B4AH4A+FR2 + WL 1,B4AH4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B4AH4A+FR4 + WL 2,B4AH4A+FR5 + WL 2,B4AH4A+FR6 + + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_head_hit4_anim +;From earslap + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + +; WLW ANI_SET_XVEL,-28000h,AM_HIT_REL +; WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 4,B4AH4A+FR3 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + WL 3,B4AH4A+FR4 + WL 3,B4AH4A+FR5 + WL 3,B4AH4A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* HEAD HIT2 (HANDS ON FACE) + + SUBR bam_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,B3AE3A+FR2 + WL 2,B3AE3A+FR3 + WL 3,B3AE3A+FR4 + WL 2,B3AE3A+FR5 + WL 3,B3AE3A+FR6 + WL 2,B3AE3A+FR7 + WL 3,B3AE3A+FR8 + WL 2,B3AE3A+FR9 + WL 3,B3AE3A+FR10 + WL 2,B3AE3A+FR11 + WL 2,B3AE3A+FR12 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,bam_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_head_hit2s_anim +;Salt hits me in face + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL ANI_CODE,create_impact_salt + + WL 4,B3AE3A+FR2 + WL 4,B3AE3A+FR3 + WL 4,B3AE3A+FR4 + WL 4,B3AE3A+FR5 + WL 4,B3AE3A+FR6 + .word ANI_WAITHITGND + .word ANI_FRICTION,4000h + WL 50,B3AE3A+FR6 + .word ANI_ZEROVELS + WL 3,B3AE3A+FR7 + WL 3,B3AE3A+FR8 + WL 3,B3AE3A+FR9 + WL 3,B3AE3A+FR10 + WL 3,B3AE3A+FR11 + WL 3,B3AE3A+FR12 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* HEAD HIT2 (ENDS IN DIZZY) + + SUBR bam_head_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,B3AE3A+FR2 + WL 4,B3AE3A+FR3 + WL 4,B3AE3A+FR4 + WL 4,B3AE3A+FR5 + WL 4,B3AE3A+FR6 + WL 4,B3AE3A+FR7 + WL 4,B3AE3A+FR8 + WL 4,B3AE3A+FR9 + WL 4,B3AE3A+FR10 + WL 4,B3AE3A+FR11 + WL 4,B3AE3A+FR12 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,bam_dizzy_anim + +; .word ANI_END + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR bam_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + WL ANI_CODE,ckzpos + + WL 3,B2AM2A+FR1 + WL 3,B2AM2A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,B2AM2A+FR3 + WL 1,B2AM2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B2AM2A+FR5 + WL 2,B2AM2A+FR6 + WL 2,B2AM2A+FR7 + WL 2,B2AM2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 BODY HIT + + SUBR bam_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + WL ANI_CODE,ckzpos + + WL 3,B4AM4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,B4AM4A+FR2 + WL 3,B4AM4A+FR3 + WL 1,B4AM4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B4AM4A+FR5 + WL 2,B4AM4A+FR6 + WL 2,B4AM4A+FR7 + WL 2,B4AM4A+FR8 + + .word ANI_CHECKWORD,USR_VAR1 + WL ANI_IFNOTSTATUS,#reg + + WL 8,B4TI4A+FR1 + WL 8,B4TI4A+FR2 + WL 8,B4TI4A+FR3 + WL 8,B4TI4A+FR4 + WL 8,B4TI4A+FR5 + WL 8,B4TI4A+FR6 + WL 8,B4TI4A+FR7 + WL 8,B4TI4A+FR6 + WL 8,B4TI4A+FR5 + WL 8,B4TI4A+FR4 + WL 8,B4TI4A+FR3 + WL 8,B4TI4A+FR2 + +#reg + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 BODY HIT - DIZZY + + SUBR bam_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL ANI_CODE,ckzpos + + WL 3,B4AM4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,B4AM4A+FR2 + WL 3,B4AM4A+FR3 + WL 1,B4AM4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B4AM4A+FR5 + WL 3,B4AM4A+FR6 + WL 3,B4AM4A+FR7 + WL 3,B4AM4A+FR8 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,bam_dizzy_anim + +; .word ANI_END + + + SUBR bam_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + WL ANI_CODE,ckzpos + + WL 3,B2AM2A+FR1 + WL 3,B2AM2A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,B2AM2A+FR3 + WL 1,B2AM2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B2AM2A+FR5 + WL 2,B2AM2A+FR6 + WL 2,B2AM2A+FR7 + WL 2,B2AM2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL ANI_CODE,ckzpos + + WL 3,B4AM4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,B4AM4A+FR2 + WL 3,B4AM4A+FR3 + WL 1,B4AM4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B4AM4A+FR5 + WL 3,B4AM4A+FR6 + WL 3,B4AM4A+FR7 + WL 3,B4AM4A+FR8 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,bam_dizzy_anim +; .word ANI_END + +* #4 BODY HIT + + SUBR bam_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + + WL ANI_CODE,ckzpos + + WL 3,B4AM4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,B4AM4A+FR2 + WL 3,B4AM4A+FR3 + WL 1,B4AM4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,B4AM4A+FR5 + WL 2,B4AM4A+FR6 + WL 2,B4AM4A+FR7 + WL 2,B4AM4A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,B4AM4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,B4AM4A+FR2 + WL 3,B4AM4A+FR3 + WL 3,B4AM4A+FR4 + WL 3,B4AM4A+FR5 + WL 3,B4AM4A+FR6 + WL 3,B4AM4A+FR7 + WL 3,B4AM4A+FR8 + + .word ANI_FACEDOWN + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,bam_fall_back_anim +; .word ANI_END + +#nodead + WL ANI_CHANGEANIM,bam_3_head_held_anim +; .word ANI_END + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR bam_hitonground_xflip_anim + .word ANI_XFLIP + ;fall through + + SUBR bam_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL 1,B3CP3B+FR1 + WL ANI_SET_YVEL,39000h + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 2,B3CP3B+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPITUP_SWEAT,SWEAT_PER,0 + WL 3,B3CP3B+FR2 + WL 3,B3CP3B+FR3 + WL 2,B3CP3B+FR4 + WL 3,B3CP3B+FR5 + WL 2,B3CP3B+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 2,B3CP3B+FR7 + SUBR bam_liedown_anim + WL 1,B3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim +; .word ANI_END + + SUBR bam_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .WORD ANI_XFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL 10,B4TD3B+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,B3CP3B+FR7 + WL 2,B3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* FALL BACK + + SUBR bam_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_SETSPEED,100h + .word ANI_ZERO_XZVELS + WL ANI_MIN_YVEL,68000h + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + + .word ANI_SCROLL_CTRL,BAM_TBUKLY + + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[106,-29] ;Y,X of head + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 4,B4UC3B+FR1 + .word ANI_OFFSET,0,52,0 + WWL ANI_SETLONG,DEBRIS_X,[44,-42] ;Y,X of head + WL 4,B4UC3B+FR2 + WWL ANI_SETLONG,DEBRIS_X,[37,-45] ;Y,X of head + WL 4,B4UC3B+FR3 + WWL ANI_SETLONG,DEBRIS_X,[24,-50] ;Y,X of head + WL 4,B4UC3B+FR4 + WWL ANI_SETLONG,DEBRIS_X,[16,-54] ;Y,X of head + WL 4,B4UC3B+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + + .word ANI_FRICTION,2000h + + WWL ANI_SETLONG,DEBRIS_X,[14,-54] ;Y,X of head + WL 2,B4UC3B+FR6 + .word ANI_BOUNCE,5 + WL 2,B4UC3B+FR6 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WWL ANI_SETLONG,DEBRIS_X,[14,-54] ;Y,X of head + WL 4,B4UC3B+FR7 + WWL ANI_SETLONG,DEBRIS_X,[14,-54] ;Y,X of head + WL 4,B4UC3B+FR8 + .word ANI_OFFSET,8,0,5 ;x,y,z + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 1,B3RL1A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim +; .word ANI_END + + SUBR bam_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,18000h + + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL ANI_CODE,ckzpos + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 4,B4UC3B+FR1 + .word ANI_OFFSET,0,52,0 + WL 4,B4UC3B+FR2 + WL 4,B4UC3B+FR3 + WL 4,B4UC3B+FR4 + WL 4,B4UC3B+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + + WL 4,B3FD3C+FR1 + WL 4,B3FD3C+FR2 + WL 4,B3FD3C+FR3 + WL 4,B3FD3C+FR4 + WL 4,B3FD3C+FR5 + .word ANI_OFFSET,-35,0,0 ;x,y,z + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL ANI_CODE,HIT_THE_MAT + + WL 3,B3MS3X+FR1 + WL 3,B3MS3X+FR2 + WL 3,B3MS3X+FR3 + + WL 20,B3RL1A+FR7 + + WL ANI_CHANGEANIM,bam_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR bam_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + + WL 4,B4UC3B+FR1 + .word ANI_OFFSET,0,52,0 + WL 4,B4UC3B+FR2 + WL 4,B4UC3B+FR3 + WL 4,B4UC3B+FR4 + WL 4,B4UC3B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,45 + +; .word ANI_FRICTION,2000h + + WL 2,B4UC3B+FR6 +; .word ANI_BOUNCE,5 + WL 2,B4UC3B+FR6 + +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_ZEROVELS + + WL 4,B4UC3B+FR7 + WL 4,B4UC3B+FR8 + .word ANI_OFFSET,8,0,5 ;x,y,z + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 4,B3RL1A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + +#***************************************************************************** +* + + SUBR bam_faceup_getup_anim + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,bam_4_faceup_getup_anim + WL ANI_CHANGEANIM,bam_2_faceup_getup_anim + + SUBR bam_2_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; .word ANI_CLR_STARS +; .word ANI_CLR_DAMAGE + + WL 3,B3GU2A+FR1 + WL ANI_GOTO,#common2 + + SUBR bam_2_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; .word ANI_CLR_STARS +; .word ANI_CLR_DAMAGE + +#common2 + WL 3,B3GU2A+FR2 + WL 2,B3GU2A+FR3 + WL 3,B3GU2A+FR4 + WL 2,B3GU2A+FR5 + WL 3,B3GU2A+FR6 + WL 2,B3GU2A+FR7 +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 3,B3GU2A+FR8 + WL 2,B3GU2A+FR9 + +;Check for a flip here + WL 1,B3GU2A+FR10 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,B3GU2A+FR10 + WL 2,B3GU2A+FR11 + WL 3,B3GU2A+FR12 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,36,85,49,17 + WL 1,B3GU2A+FR12 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,bam_4_push_anim +#no_freetoss2 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; .word ANI_CLR_STARS +; .word ANI_CLR_DAMAGE + WL 3,B3GU4A+FR1 + WL 2,B3GU4A+FR2 + WL 3,B3GU4A+FR3 + WL ANI_GOTO,#common4 + + SUBR bam_4_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; .word ANI_CLR_STARS +; .word ANI_CLR_DAMAGE + +#common4 + WL 2,B3GU4A+FR4 + WL 3,B3GU4A+FR5 + WL 2,B3GU4A+FR6 +#frame7 + WL 3,B3GU4A+FR7 + WL 2,B3GU4A+FR8 + WL 3,B3GU4A+FR9 + +;Check for a flip here + WL 1,B3GU4A+FR10 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,B3GU4A+FR10 + WL 2,B3GU4A+FR11 + WL 3,B3GU4A+FR12 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss3 + .word ANI_ATTACK_ON,AMODE_HITCHECK,36,85,49,17 + WL 1,B3GU4A+FR12 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss3 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,bam_4_push_anim +#no_freetoss3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR bam_4_faceup_getup3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; .word ANI_CLR_STARS +; .word ANI_CLR_DAMAGE + WL ANI_GOTO,#frame7 + + +#***************************************************************************** +* +* DIZZY + + SUBR bam_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + + WL 8,B4TI4A+FR1 + WL 8,B4TI4A+FR2 + WL 8,B4TI4A+FR3 + WL 8,B4TI4A+FR4 + WL 8,B4TI4A+FR5 + WL 8,B4TI4A+FR6 + WL 8,B4TI4A+FR7 + WL 8,B4TI4A+FR6 + WL 8,B4TI4A+FR5 + WL 8,B4TI4A+FR4 + WL 8,B4TI4A+FR3 + WL 8,B4TI4A+FR2 + + WL ANI_GOTO,#loop + + +#***************************************************************************** + + SUBR bam_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*10/255 ;inv multiply (0-255 -> 0-10) + + .long B3RL1A+FR1 ;0 + .long B3RL1A+FR2 ;1 + .long B3RL1A+FR3 ;2 + .long B3RL1A+FR4 ;3 + .long B3RL1A+FR5 ;4 + .long B3RL1A+FR6 ;5 + .long B3RL1A+FR7 ;6 + .long B3RL1A+FR8 ;7 + .long B3RL1A+FR9 ;8 + .long B3RL1A+FR10 ;9 + .long B3RL1A+FR11 ;10 + .long 0,0,0,0,0,0 + +#***************************************************************************** +* +* Get tossed out of ring from Shawn's Frankensteiner +* + + SUBR bam_rxn2_fsteiner_anim + + .word ANI_END + +#***************************************************************************** +* +* #2 BLOCK + +; SUBR bam_2_block_anim +; +; .word ANI_SETMODE,MODE_UNINT ;uninterruptable +; .word ANI_ZERO_XZVELS +; .word ANI_SETSPEED,100h +; +; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_SET_WRESTLER_XFLIP +;;Rotate toward opponent if needed! +; +; WL ANI_CODE,block_if_safe +; WL 3,B2BK3B+FR1 +; .word ANI_SETPLYRMODE,MODE_BLOCK +; WL 3,B2BK3B+FR2 +;#blk2 WL 3,B2BK3B+FR3 +; .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT +; .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT +; .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_SETFACING +; WL 3,B2BK3B+FR2 +; WL 3,B2BK3B+FR1 +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +; SUBR bam_2_hitblock_anim +; +; .word ANI_SETMODE,MODE_UNINT ;uninterruptable +; .word ANI_FRICTION,4000h +; .word ANI_SETSPEED,100h +; +; WL ANI_CODE,DO_BLOCKED +; WL 2,B2BK3B+FR4 +; WL 2,B2BK3B+FR5 +; WL 2,B2BK3B+FR4 +; WL ANI_GOTO,#blk2 + + +* #4 BLOCK + + SUBR bam_4_block_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZERO_XZVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + +; WL ANI_CODE,block_if_safe + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 2,B4BK3D+FR2 + WL 1,B4BK3D+FR3 +; .word ANI_SETPLYRMODE,MODE_BLOCK + WL 1,B4BK3D+FR3 +#blk4 WL 2,B4BK3D+FR4 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT|MODE_FRICTION +; .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETFACING + WL 2,B4BK3D+FR3 + WL 2,B4BK3D+FR2 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_4_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_FRICTION,5000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL 1,B4BK3D+FR6 + WL 1,B4BK3D+FR7 + WL 1,B4BK3D+FR8 + WL 1,B4BK3D+FR7 + WL 1,B4BK3D+FR6 + WL ANI_GOTO,#blk4 + + SUBR bam_4_hitblock2_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_FRICTION,4000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL ANI_SET_YVEL,38000h + WL 3,B4BK3D+FR6 + WL 3,B4BK3D+FR7 + WL 3,B4BK3D+FR8 + WL 3,B4BK3D+FR7 + WL 3,B4BK3D+FR6 + WL 3,B4BK3D+FR7 + WL 3,B4BK3D+FR6 + WL ANI_GOTO,#blk4 + + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk, lex_vsup) + + SUBR bam_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + .word ANI_SET_IDIOT + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_CODE,DO_WAIL + + WL 7,B4TD3B+FR5 + WL 7,B4TD3B+FR6 + WL 7,B4TD3B+FR7 +#cont WL 1,B4TD3B+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_DAMAGE,D_HIPTOSS + +; .word ANI_SETWORD,DELAY_METER,0 +; .word ANI_GETUP,500 + + .word ANI_OFFSET,10,0,0 + WL 3,B4TD3B+FR9 + WL ANI_CHANGEANIM,bam_hitonground_xflip_anim + + + SUBR bam_flyout2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + .word ANI_SET_IDIOT + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_CODE,DO_WAIL + WL ANI_GOTO,#cont + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR bam_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + .word ANI_XFLIP + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,STAY_TIME + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + .word ANI_OFFSET,15,0,0 ;x,y,z + WL 1,B3CP3B+FR1 + WL ANI_SET_YVEL,50000h + WL 3,B3CP3B+FR1 + WL 4,B3CP3B+FR2 + WL 4,B3CP3B+FR3 + WL 4,B3CP3B+FR4 + WL 4,B3CP3B+FR5 + WL 4,B3CP3B+FR6 + WL 4,B3CP3B+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 3,B3RL1A+FR1 ;1st frame of roll + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim +; .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR bam_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,B4TD3B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,STAY_TIME + .word ANI_DAMAGE,D_HIPTOSS + + WL 3,B4TD3B+FR8 + WL 3,B4TD3B+FR9 + + .word ANI_XFLIP + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_OFFSET,15,0,0 ;x,y,z + WL 4,B3CP3B+FR1 + WL 4,B3CP3B+FR2 + WL 4,B3CP3B+FR3 + WL 4,B3CP3B+FR4 + WL 4,B3CP3B+FR5 + WL 4,B3CP3B+FR6 + WL 4,B3CP3B+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 3,B3RL1A+FR1 ;1st frame of roll + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* + + SUBR bam_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + WL 2,B3GU4A+FR12 + WL 2,B3GU4A+FR10 + WL 2,B3GU4A+FR7 + WL ANI_SET_YVEL,39000h + + WL 3,B3CP3B+FR1 + WL 3,B3CP3B+FR2 + WL 3,B3CP3B+FR3 + WL 3,B3CP3B+FR4 + WL 3,B3CP3B+FR5 + WL 3,B3CP3B+FR6 + WL 3,B3CP3B+FR7 + + WL 4,B3RL1A+FR1 ;1st frame of roll + + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** + SUBR bam_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,3800h,AM_FACE_REL + + .word ANI_OFFSET,16,0,0 + WL 2,B4CR7A+FR2 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,B4CR7A+FR3 + .word ANI_OFFSET,3,0,0 ;***** + WL 2,B4CR7A+FR4 + + .word ANI_BENDROPE,2 + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + .word ANI_OFFSET,5,0,0 ;***** + WL 3,B4CR7A+FR5 + + .word ANI_OFFSET,3,0,0 ;***** + WL 2,B4CR7A+FR6 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,B4CR7A+FR7 + .word ANI_OFFSET,4,0,0 ;***** + WL 2,B4CR7A+FR8 + .word ANI_BENDROPE,3 + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + .word ANI_OFFSET,5,0,0 ;***** + WL 3,B4CR7A+FR9 + .word ANI_OFFSET,5,0,0 ;***** + WL 2,B4CR7A+FR10 + .word ANI_ZEROVELS + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,10,-3,0 + WL 3,B4CR7A+FR11 + .word ANI_OFFSET,2,0,0 ;***** + WL 2,B4CR7A+FR12 + + .word ANI_SET_IDIOT + ;now jump off... +; WL 2,B2JD4A+FR1 ;D4FM4A+FR1 + WL 3,B2JD4A+FR2 + WL 3,B2JD4A+FR3 + + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + + WL 3,B2JD4A+FR4 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 3,B2JD4A+FR6 +; WL 2,B2JD4A+FR7 + WL 3,B2JD4A+FR8 +; WL 2,B2JD4A+FR9 + + .word ANI_FACEDOWN + + .word ANI_CLEAR_CLIMB + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR bam_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in +; WL 2,B2JD4A+FR1 + WL 3,B2JD4A+FR2 + WL 3,B2JD4A+FR3 + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,14h,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 2,B2JD4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + WL 3,B2JD4A+FR6 +; WL 2,B2JD4A+FR7 + .word ANI_OFFSET,13,0,0 ;***** + WL 3,B2JD4A+FR8 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + WLW ANI_SET_XVEL,3000h,AM_FACE_REL + + ;climb through + .word ANI_OFFSET,3,0,0 ;***** + WL 2,B4CR7A+FR2 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,B4CR7A+FR3 + .word ANI_OFFSET,3,0,0 ;***** + WL 2,B4CR7A+FR4 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,B4CR7A+FR5 + + .word ANI_BENDROPE,2 + + .word ANI_OFFSET,3,0,0 ;***** + WL 2,B4CR7A+FR6 + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_BENDROPE,2 + .word ANI_OFFSET,5,0,0 ;***** + WL 3,B4CR7A+FR7 + .word ANI_OFFSET,5,0,0 ;***** + WL 2,B4CR7A+FR8 + .word ANI_BENDROPE,3 + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_OFFSET,5,0,0 ;***** + WL 3,B4CR7A+FR9 + .word ANI_OFFSET,5,0,0 ;***** + WL 2,B4CR7A+FR10 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,10,-3,0 + WL 3,B4CR7A+FR11 + WL 2,B4CR7A+FR12 + .word ANI_ZEROVELS + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets + + +#***************************************************************************** + + SUBR bam_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL 3,B3GU2A+FR13 + WL 3,B3GU2A+FR12 + WL 3,B3GU2A+FR11 + WL 3,B3GU2A+FR10 + WL 3,B3GU2A+FR9 + WL 3,B3GU2A+FR8 + WL 3,B3GU2A+FR7 + WL 3,B3GU2A+FR6 + WL 3,B3GU2A+FR5 + WL 3,B3GU2A+FR4 + WL 3,B3GU2A+FR2 + WL 3,B3GU2A+FR1 + + ;roll over once + WLW ANI_SET_ZVEL,0A8000h,AM_ABS + + WL 3,B3RL1A+FR1 + WL 3,B3RL1A+FR2 + WL 3,B3RL1A+FR3 + WL 3,B3RL1A+FR4 + WL 3,B3RL1A+FR5 + WL 3,B3RL1A+FR6 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + .word ANI_SET_IDIOT + + ;climb through + .WORD ANI_XFLIP + WL ANI_CODE,NOT_IN_RING + .word ANI_OFFSET,20,-37h,0 ;x,y,z + WL 3,B2KM3E+FR6 + WL 3,B2KM3E+FR3 + WL 3,B2KM3E+FR2 + .WORD ANI_XFLIP + + .word ANI_CLEAR_CLIMB + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +NOT_IN_RING + MOVK 1,A0 + MOVE A0,*A13(INRING) + RETS + +#***************************************************************************** + + SUBR bam_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .WORD ANI_XFLIP + WL 3,B2KM3E+FR2 + WL 3,B2KM3E+FR3 + WL 3,B2KM3E+FR6 + .word ANI_OFFSET,-20,37h,-60 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,B3RL1A+FR11 + WL 3,B3RL1A+FR10 + WL 3,B3RL1A+FR9 + WL 3,B3RL1A+FR8 + WL 3,B3RL1A+FR7 + WL 3,B3RL1A+FR6 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,B3GU2A+FR1 + WL 3,B3GU2A+FR2 + WL 3,B3GU2A+FR3 + WL 3,B3GU2A+FR4 + WL 3,B3GU2A+FR5 + WL 3,B3GU2A+FR6 + WL 3,B3GU2A+FR7 + WL 3,B3GU2A+FR8 + WL 3,B3GU2A+FR9 + WL 3,B3GU2A+FR10 + WL 3,B3GU2A+FR11 + WL 3,B3GU2A+FR12 + WL 3,B3GU2A+FR13 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .WORD ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR bam_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,B1TT5Z+FR2 + WL 3,B1TT5Z+FR3 + +#dir4 + WL 3,B3GU4A+FR12 + WL 3,B3GU4A+FR11 + WL 3,B3GU4A+FR10 + WL 3,B3GU4A+FR9 + WL 3,B3GU4A+FR8 + WL 3,B3GU4A+FR7 + WL 3,B3GU4A+FR6 + WL 3,B3GU4A+FR5 + WL 3,B3GU4A+FR4 + WL 3,B3GU4A+FR3 + WL 3,B3GU4A+FR2 + WL 3,B3GU4A+FR1 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,B3RL1A+FR11 + WL 3,B3RL1A+FR10 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,B3RL1A+FR9 + WL 3,B3RL1A+FR8 + WL 3,B3RL1A+FR7 + + .word ANI_SET_IDIOT + ;climb through + .word ANI_ZEROVELS + .word ANI_OFFSET,0,-61,0 + .WORD ANI_XFLIP + WL 3,B4KM3E+FR2 + WL 3,B4KM3E+FR1 + .WORD ANI_XFLIP + + .word ANI_ZERO_XZVELS + .word ANI_CLEAR_CLIMB + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + + +#***************************************************************************** + + SUBR bam_rollthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;roll over once + WLW ANI_SET_ZVEL,-50000h,AM_ABS + WL 3,B3RL1A+FR11 + WL 3,B3RL1A+FR10 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,B3RL1A+FR9 + WL 3,B3RL1A+FR8 + WL 3,B3RL1A+FR7 + + ;climb through + .word ANI_ZEROVELS + .word ANI_OFFSET,0,-61,0 + .WORD ANI_XFLIP + WL 3,B4KM3E+FR2 + WL 3,B4KM3E+FR1 + .WORD ANI_XFLIP + + .word ANI_ZERO_XZVELS + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#***************************************************************************** + + SUBR bam_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,B4KM3E+FR1 + WL 3,B4KM3E+FR2 + WL 3,B4KM3E+FR4 + .word ANI_OFFSET,0,61,0 + .WORD ANI_XFLIP + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,B3RL1A+FR8 + WL 3,B3RL1A+FR9 + WL 3,B3RL1A+FR10 + WL 3,B3RL1A+FR11 + + .word ANI_ZEROVELS + + ;get up + WL 3,B3GU4A+FR1 + WL 3,B3GU4A+FR2 + WL 3,B3GU4A+FR3 + WL 3,B3GU4A+FR4 + WL 3,B3GU4A+FR5 + WL 3,B3GU4A+FR6 + WL 3,B3GU4A+FR7 + WL 3,B3GU4A+FR8 + WL 3,B3GU4A+FR9 + WL 3,B3GU4A+FR10 + WL 3,B3GU4A+FR11 + WL 3,B3GU4A+FR12 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#set_zvel2 + movi 50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR bam_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,B1TT5Z+FR2 ;2.5 + WL 3,B1TT5Z+FR3 ;3.5 + + SUBR bam_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,999,80h,50h,90000h,TGT_CHEST|TGT_GROUND,0,57,-15 + WL ANI_CODE,hit_nearest + + WL 3,B2PN5A+FR3 + .word ANI_OFFSET,0,34,0 ;x,y,z + WL 22,B2PN5A+FR4 +; .word ANI_WAITHITGND +; .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + +; WLW ANI_ATTCHIMAGE,D4PN5L+FR4,10 ;image, zoff (priority) + WL 3,B2PN5A+FR5 + WL ANI_CODE,DO_CROWD_CHEER + +; .word ANI_ATTACK_OFF + WL ANI_CODE,grnd_hit + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_BOUNCE,4 +; WLW ANI_ATTCHIMAGE,D4PN5L+FR5,10 ;image, zoff (priority) + WL 3,B2PN5A+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + WL 4,B2PN5A+FR7 + WL ANI_CODE,win_announce +; WLW ANI_ATTCHIMAGE,0,0 ;Turn it off +; WL 40,D4PN5A+FR6 +; .word ANI_SET_ATTACH +; .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. +; .word ANI_OFFSET,0,0,20 ;x,y,z + WL 40,B2PN5A+FR5 + + .word ANI_LOOP +;Do another ground hit on opponent + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,-22000h,AM_ABS + WL 4,B5RV5A+FR1 + WL 4,B5RV5A+FR2 + WL 4,B5RV5A+FR3 + WL 4,B5RV5A+FR4 + WL 4,B5RV5A+FR5 + WL 4,B5RV5A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,B4WC4B+FR1 + WL 4,B4WC4B+FR2 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + + WL 4,B4WC4B+FR2 + WL 4,B4WC4B+FR1 + + WL 4,B5RV5A+FR8 +#floop WL 1000,B5RV5A+FR7 + WL ANI_GOTO,#floop + + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** +* RAISE ARM IN VICTORY FROM A STANCE + + SUBR bam_2_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + + WL 3,B1TT5Z+FR2 ;2.5 + WL 3,B1TT5Z+FR3 ;3.5 + WL ANI_GOTO,#cont + + SUBR bam_4_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + +#cont WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + .word ANI_SET_RPTCOUNT,-6 ;set count to rnd from 0 to 6 + +#lp WL 4,B4ST4Z+FR1 + WL 4,B4ST4Z+FR2 + WL 4,B4ST4Z+FR3 + WL 4,B4ST4Z+FR4 + WL 4,B4ST4Z+FR5 + WL 4,B4ST4Z+FR6 + WL 4,B4ST4Z+FR7 + WL 4,B4ST4Z+FR8 + WL 4,B4ST4Z+FR9 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#lp + + WL ANI_CODE,check_raisearm_bit + WL ANI_IFSTATUS,#wakeup + + ;don't wake up. + .word ANI_SET_RPTCOUNT,1000 + WL ANI_GOTO,#lp + +#wakeup + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACEDOWN + .word ANI_END + + +#***************************************************************************** +* +* GET BUCKED OFF A PINNED OPPONENT + + SUBR bam_buckoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 4,B2PN5A+FR5 + WL ANI_CODE,set_buckoff_vels + WL 4,B2PN5A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,B2PN5A+FR6 + WL 12,B2PN5A+FR7 + + ;now stand up + WL 3,B5RV5A+FR1 + WL 3,B5RV5A+FR2 + WL 3,B5RV5A+FR3 + WL 3,B5RV5A+FR4 + WL 3,B5RV5A+FR5 + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HIP TOSS RUNNING OPPONENT + + SUBR bam_combo_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,6 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 6,40,40,40,90000h,TGT_CHEST,20,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,B3DR3B+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET,16,40,62,42 ;mode,x,y,w,h + WL 2,B3DR3B+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,6,B3DR3B+FR2 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker + +;got him + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_GRUNT + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR6,#puppet_tbl,3 + WL ANI_SET_YVEL,20000h + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST,#throw_him_out_c + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR7,#puppet_tbl,4 + + WL ANI_SLAVEANIM,#rollout_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + + WL 10,B3DR3B+FR8 + WL 6,B3DR3B+FR9 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 6,B3DR3B+FR10 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedbc + WL 15,B3DR3B+FR3 +#missedc + WL 10,B3DR3B+FR3 + WL 4,B3DR3B+FR2 + WL 4,B3DR3B+FR1 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out_c + WLLL ANI_ATTACHVEL,-080000h,0a0000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,release_table + .word ANI_DETACH + .WORD ANI_SOUND,06FH ;GET OUT OF MY RING ! + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 5,B3DR3B+FR7 + WL 10,B3DR3B+FR8 + WL 6,B3DR3B+FR9 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 6,B3DR3B+FR10 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR bam_3_hiptoss2_anim + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,60,55,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,B3DR3B+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET_TOSS,16,40,42,42 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,2,B3DR3B+FR2 + WWL ANI_WAITHITOPP,6,B3DR3B+FR3 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + + WL ANI_GOTO,#cont + + SUBR bam_3_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,20,0,0 + WL ANI_SET_YVEL,0000h + WL 3,B3DR3B+FR1 + WL 1,B3DR3B+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET_TOSS,16,40,42,42 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,2,B3DR3B+FR2 + WWL ANI_WAITHITOPP,2,B3DR3B+FR3 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL 4,B3DR3B+FR3 +#cont + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +#got_him + .word ANI_DRAW_NAME,11 + WL ANI_CODE,DO_GRUNT + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR6,#puppet_tbl,3 + WL ANI_SET_YVEL,20000h +; WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST,#throw_him_out + WWLLW ANI_SUPERSLAVE2,3,B3DR3B+FR7,#puppet_tbl,4 + + WL ANI_SLAVEANIM,#rollout_tbl + + WL ANI_CODE,CALL_SPECIAL_MOVE + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + + WL 10,B3DR3B+FR8 + WL 4+2,B3DR3B+FR9 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4+10,B3DR3B+FR10 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb +; WL ANI_CODE,ck_hiptoss +; WL ANI_IFNOTSTATUS,#got_him + WL 10,B3DR3B+FR3 +;Delay longer if 2nd hiptoss in quick succession! + WL ANI_CODE,hiptoss_delay + WL ANI_IFNOTSTATUS,#missed + WL 24,B3DR3B+FR3 +#missed + WL 2,B3DR3B+FR3 + WL 3,B3DR3B+FR2 + WL 3,B3DR3B+FR1 + + WL ANI_CODE,CALL_MISSES + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WLLL ANI_ATTACHVEL,-080000h,0a0000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,release_table + .word ANI_DETACH + .WORD ANI_SOUND,06FH ;GET OUT OF MY RING ! + + WL 5,B3DR3B+FR7 + WL 10,B3DR3B+FR8 + WL 6,B3DR3B+FR9 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 6,B3DR3B+FR10 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#flyout_tbl + REFLONG hrt_flyout_anim + REFLONG rzr_flyout_anim + REFLONG und_flyout_anim + REFLONG yok_flyout_anim + REFLONG shn_flyout_anim + REFLONG bam_flyout_anim + REFLONG dnk_flyout_anim + .long 0 + REFLONG lex_flyout_anim + +release_table + ; X Y + .word 16,16 ;Bret + .word 8,16 ;Razor + .word 0,32 ;Taker + .word 0,16 ;Yokozuna + .word 0,16 ;Shawn + .word 8,16 ;BamBam + .word 4,20 ;Doink + .word 0,0 ;Adam + .word 0,16 ;Lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H3FR3A,H2AM3A + LWWW H3FR3A+FR1,34,16,0 + LWWW H2AM3A+FR7,27,17,0 + LWWW H3FR3A+FR2,11,12,0 + LWWW H3FR3A+FR3,1,27,0 + LWWW H3FR3A+FR3,-9,13,0 + .long 0 + +#Razor + .ref R3TD3A + LWWW R3TD3A+FR2,24,15,0 + LWWW R3TD3A+FR3,16,14,0 + LWWW R3TD3A+FR4,8,11,0 + LWWW R3TD3A+FR5,7,24,0 + LWWW R3TD3A+FR6,-3,22,0 + .long 0 +#Taker + .ref U4AM4C,U3FH3A + LWWW U4AM4C+FR4,25,38,0 + LWWW U3FH3A+FR1,27,20,1 + LWWW U3FH3A+FR2,8,9,1 + LWWW U3FH3A+FR3,1,4,1 + LWWW U3FH3A+FR4,-8,8,1 + .long 0 +#Yokozuna + .ref Y3FL3W,Y5GU4B + LWWW Y5GU4B+FR7,23,26,0 + LWWW Y5GU4B+FR7,15,32,0 + LWWW Y3FL3W+FR3,-15,22,0 +; LWWW Y3PP3Q+FR1,-2,22,0 + LWWW Y3FL3W+FR4,-15,16,0 + LWWW Y3FL3W+FR5,-4,15,0 + + + +; LWWW Y3FL3W+FR1,28,43,0 +; LWWW Y3FL3W+FR2,12,38,0 +; LWWW Y3FL3W+FR3,-15,22,0 +; LWWW Y3FL3W+FR4,-15,16,0 +; LWWW Y3FL3W+FR5,-4,15,0 + .long 0 +#Shawn + .ref S3OS3X + LWWW S3OS3X+FR3,23,47,1 + LWWW S3OS3X+FR4,-7,41,1 + LWWW S3OS3X+FR5,-31,25,1 + LWWW S3OS3X+FR6,-27,43,1 + LWWW S3OS3X+FR7,-8,42,1 + .long 0 +#BamBam + .ref B4TD3B + LWWW B4TD3B+FR2,19,30,0 + LWWW B4TD3B+FR3,11,27,0 + LWWW B4TD3B+FR4,7,15,0 + LWWW B4TD3B+FR5,-3,35,0 + LWWW B4TD3B+FR6,-10,43,0 + .long 0 +#Doink + .ref D3OS3A + LWWW D3OS3A+FR1,26,19,0 + LWWW D3OS3A+FR2,9,22,0 + LWWW D3OS3A+FR3,-7,13,0 + LWWW D3OS3A+FR4,-12,12,0 + LWWW D3OS3A+FR5,-6,11,0 + .long 0 +#Adam + .long 0 +#Lex + .ref L3FH3A + LWWW L3FH3A+FR1,22,25,0 + LWWW L3FH3A+FR2,19,10,0 + LWWW L3FH3A+FR3,11,14,0 + LWWW L3FH3A+FR4,12,12,0 + LWWW L3FH3A+FR5,8,7,0 + .long 0 + +#rollout_tbl + REFLONG hrt_tossed2_anim,rzr_tossed2_anim + REFLONG und_tossed2_anim + REFLONG yok_tossed2_anim + REFLONG shn_tossed2_anim,bam_tossed2_anim + REFLONG dnk_tossed2_anim + .long 0 + REFLONG lex_tossed2_anim + +#***************************************************************************** +* +* #2,4 FLYING CLOTHESLINE + + SUBR bam_fly_cline_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_OVERLAP|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_STARTATTACK,AT_LEAPING,9 + WL 3,B3RC3A+FR1 + + WLW ANI_SET_XVEL,74000h,AM_FACE_REL + WWL ANI_SETLONG,OBJ_GRAVITY,08000h + WL 3,B3RC3A+FR2 + WL 3,B3RC3A+FR3 + WL ANI_SET_YVEL,50000h + WL 3,B3RC3A+FR4 + .word ANI_OFFSET,0,45,0 ;x,y,z + .word ANI_ATTACK_ON, AMODE_CLINE,2,5,14,53 ;mode,x,y,w,h ;31 + WL 20,B3RC3A+FR5 + .word ANI_ATTACK_OFF + WL 3,B3RC3A+FR7 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,30 + WL 3,B3RC3A+FR8 + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + .word ANI_FRICTION,3000h + .word ANI_BOUNCE,4 + + WL 3,B3RC3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + WL 8,B3RC3A+FR8 + + WL ANI_IFSTATUS,#gothim +;He missed, have him stay on ground for awhile! + WL ANI_CODE,CALL_MISSES + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 1,B3RC3A+FR8 ;30 +#gothim + .word ANI_DRAW_NAME,24 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* #4 SLAP + +;Leaping fire head butt + + SUBR bam_2_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,20 + + WL 1,B1TT5Z+FR2 ;2.5 + WL 1,B1TT5Z+FR3 ;3.5 + + SUBR bam_4_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,16 + WL 2,B3FH3F+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,4eh,50,90000h,TGT_HEAD,40,101,10 + + WL 3,B3FH3F+FR2 + WL 3,B3FH3F+FR3 + WL 2,B3FH3F+FR4 + WL 2,B3FH3F+FR5 + WL 2,B3FH3F+FR6 + WL 1,B3FH3F+FR7 + + .word ANI_ATTACK_ON, AMODE_HDBUTT3,32,47,39,55 ;mode,x,y,w,h + WL 2,B3FH3F+FR7 + WL 3,B3FH3F+FR8 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;hit + WL ANI_CODE,create_impact + WL ANI_CODE,DO_FLAME_HIT_SND + WL ANI_CODE,CALL_NASTY_MOVE + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,40000h +#no_hit2 +#missed +#missedb + WL 3,B3FH3F+FR8 + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none + WL 15,B3FH3F+FR9 +#none + + WL 2,B3FH3F+FR9 + WL 2,B3FH3F+FR10 + WL 2,B3FH3F+FR11 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_combo_slap_anim + + .word ANI_ZEROVELS + SUBR bam_combo_slap_anim_no_vel + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_FLAME_SND + + WL 2,B3FH3F+FR1 + + .word ANI_CLR_STATUS + WL 2,B3FH3F+FR2 + WL 2,B3FH3F+FR3 + WL 2,B3FH3F+FR4 + WL 2,B3FH3F+FR5 + WL 2,B3FH3F+FR6 + WL 2,B3FH3F+FR7 + + .word ANI_ATTACK_ON,AMODE_HDBUTT3,32,27,69,75 ;mode,x,y,w,h + WL 1,B3FH3F+FR8 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed_c + WL ANI_IFBLOCKED,#missed_c ;Yes, I hit blocker +;hit +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + WL ANI_CODE,DO_FLAME_HIT_SND + + WL ANI_CODE,create_impact + .WORD ANI_INC_COMBO + + WLW ANI_SET_XVEL,0A000h,AM_FACE_REL + WL 2,B3FH3F+FR8 + WL 2,B3FH3F+FR9 + WL 2,B3FH3F+FR10 + WL 2,B3FH3F+FR11 + WLW ANI_SET_XVEL,0000h,AM_FACE_REL + + .word ANI_SET_RPTCOUNT,3 ;3 times + +#loop_butt + .word ANI_STARTATTACK,AT_HDBUTT,16 + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,DO_FLAME_SND + + WL 1,B3FH3F+FR1 + + .word ANI_CLR_STATUS + WL 1,B3FH3F+FR2 + WL 1,B3FH3F+FR3 + WL 1,B3FH3F+FR4 + WL 1,B3FH3F+FR5 + WL 1,B3FH3F+FR6 + WL 1,B3FH3F+FR7 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,32,47,60,55 ;mode,x,y,w,h + WL 1,B3FH3F+FR8 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed_c + WL ANI_IFBLOCKED,#missed_c ;Yes, I hit blocker +;hit +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + WL ANI_CODE,DO_FLAME_HIT_SND + + WL ANI_CODE,create_impact + .WORD ANI_INC_COMBO + + WLW ANI_SET_XVEL,0C000h,AM_FACE_REL + WL 1,B3FH3F+FR8 + WL 1,B3FH3F+FR9 + WL 1,B3FH3F+FR10 + WL 1,B3FH3F+FR11 + WLW ANI_SET_XVEL,0000h,AM_FACE_REL + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop_butt + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#CHECK_OTHER_BUT + WL ANI_CHANGEANIM,bam_combo_pile_driver_anim +#CHECK_OTHER_BUT + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#missed_d + WL ANI_CHANGEANIM,bam_combo_graboh_anim + +#missed_c + WL 3,B3FH3F+FR8 + WL 3,B3FH3F+FR9 + WL 3,B3FH3F+FR10 + WL 3,B3FH3F+FR11 +#missed_d + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .WORD ANI_DETACH + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** + + SUBR bam_knees_anim +;From head hold mode + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SETWORD,USR_VAR2,0 + + WL 2,B4KM3A+FR1 + .word ANI_SET_RPTCOUNT,3 ;3 times + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 +#rpt_loop + .word ANI_STARTATTACK,AT_KNEE,6 + .word ANI_CLR_BUTCOUNT + + WL 2,B4KM3A+FR2 + WL 2,B4KM3A+FR3 + WL 2,B4KM3A+FR4 + .word ANI_ATTACK_ON, AMODE_HEADKNEES,37,62,62,35 ;mode,x,y,w,h + WL 2,B4KM3A+FR5 + .word ANI_ATTACK_OFF + WL 2,B4KM3A+FR6 + WL 2,B4KM3A+FR7 + WL 2,B4KM3A+FR8 +; WL 1,B4KM3A+FR9 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#missed2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop + .word ANI_SETWORD,USR_VAR2,1 + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#missed2 + + .word ANI_DETACH +; WLW ANI_SET_XVEL,18000h,AM_FACE_REL + WL ANI_CHANGEANIM,bam_3_hiptoss_anim +; .word ANI_END + +#missed2 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#missed3 + WL ANI_CHANGEANIM,bam_4_graboh_anim +; .word ANI_END + +#missed3 + WL 3,B4KM3A+FR10 + + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR bam_combo_knees_anim +;From head hold mode + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + .WORD ANI_CLEAR_COMBO + + WL 2,B4KM3A+FR1 + .word ANI_STARTATTACK,AT_KNEE,6 + + WL 2,B4KM3A+FR2 + WL 2,B4KM3A+FR3 + WL 2,B4KM3A+FR4 + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON, AMODE_KICK,37,42,62,35 ;mode,x,y,w,h + WL 2,B4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed3c + .WORD ANI_INC_COMBO + WLLL ANI_SETOPPVELS,0,18000h,0h ;x,y,z vels + WL 2,B4KM3A+FR6 + WL 2,B4KM3A+FR7 + WL 2,B4KM3A+FR8 + + WL 2,B4KM3A+FR1 + .word ANI_SET_RPTCOUNT,3 ;3 times +#kn_loop + .word ANI_STARTATTACK,AT_KNEE,6 + .word ANI_CLR_BUTCOUNT + + WL 1,B4KM3A+FR2 + WL 2,B4KM3A+FR3 + WL 1,B4KM3A+FR4 + .word ANI_ATTACK_ON, AMODE_KICK,37,42,62,35 ;mode,x,y,w,h + WL 2,B4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed3c + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,18000h,0h ;x,y,z vels + WL 1,B4KM3A+FR6 + WL 2,B4KM3A+FR7 + WL 1,B4KM3A+FR8 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#kn_loop + + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#CHECK_NEXT2 + .word ANI_DETACH + WL ANI_CHANGEANIM,bam_combo_hiptoss_anim + +#CHECK_NEXT2 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#CHECK_NEXT1 + .word ANI_DETACH + WL ANI_CHANGEANIM,bam_flying_kick_no_xvel + +#CHECK_NEXT1 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#missed3d + WL ANI_CHANGEANIM,bam_combo_fpunch + +#missed3c + WL 2,B4KM3A+FR6 + WL 2,B4KM3A+FR7 + WL 2,B4KM3A+FR8 + +#missed3d + WL 3,B4KM3A+FR10 + + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BAMSEQ3.ASM b/BAMSEQ3.ASM new file mode 100755 index 0000000..e2decf0 --- /dev/null +++ b/BAMSEQ3.ASM @@ -0,0 +1,3387 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "bamseq3.asm" + .title "Bam Bam Bigelo animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "bamimg.h" + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "doinkimg.h" + .include "leximg.h" + + .include "display.equ" + .include "damage.equ" + .include "miscimg.glo" + + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref MOVE_NAME_ANNC + + .REF DO_NONO + .REF DO_OTHERNONO + .REF FIND_AND_KILL_ENDLESS + .ref CALL_SETUP + .ref DO_COMBO_MESS + .ref CALL_THROWN_OUT + + .ref D4SK4A,bam_faceup_getup_anim,face_inside + .ref HIT_THE_MAT,CALL_SPECIAL_MOVE + .ref CALL_MISSES,tgt_tbukl,tbukl_flip,make_white + .ref set_position,make_white,make_norm,start_smoke + .ref set_skeleton_pal,set_my_pal + .ref bam_4_lbowdrop_anim + .ref dnk_3_head_held_anim + .ref bam_3_butt_drop_anim + .ref bam_combo_butt_drop_anim + .ref bam_combo_lbowdrop_anim + .ref CALL_BONE_BREAK,am_I_dead,clear_opp_counts + .ref lex_backbroken_anim,head_grab_time,bam_stand4_anim + .ref powerp_dtime1,BAMFRE_P,lex_break_neck2_anim,ckzpos + .ref bam_4_faceup_getup_anim,lex_break_neck3_anim + .ref lex_break_face_anim,no_bk_xvel,bam_fall_back_anim + .ref SMALL_BOUNCE + +BCDARM + .long 0 + .long 0 + .long BCDARM02 + .long 0 + .long BCDARM04 + .long BCDARM05 + .long BCDARM06 + .long 0 + .long BCDARM08 + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GRAB OPPONENT AND HOLD OVERHEAD + + SUBR bam_2_graboh_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,15 + WL 2,B1TT5Z+FR2 ;2.5 + WL 2,B1TT5Z+FR3 ;3.5 + + SUBR bam_4_graboh_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,11 + WL 3,B3PO4A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,80,80,60,90000h,TGT_CHEST,66,67,0 + WL ANI_SET_YVEL,20000h +; WL ANI_CODE,store_opp_xvel + + WL 3,B3PO4A+FR2 + WL 3,B3PO4A+FR3 + + .word ANI_ATTACK_ON, AMODE_PUPPET,29,57,39,35 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,5,B3PO4A+FR4 + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +;#gothim + WL ANI_CODE,CALL_SETUP + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR5,#puppet_tbl,1 + +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR8,#puppet_tbl,4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_SLAVEANIM,#strt_flail_tbl + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + +#missedb + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 10,B3PO4A+FR4 + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 25,B3PO4A+FR4 + WL 3,B3PO4A+FR3 + WL 3,B3PO4A+FR2 + WL 3,B3PO4A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* GRAB OPPONENT AND HOLD OVERHEAD (combo version) + + SUBR bam_combo_graboh_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,010000h,AM_FACE_REL + + .word ANI_STARTATTACK,AT_PUPPET,11 + WL 3,B3PO4A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + + WL 3,B3PO4A+FR2 + WL 3,B3PO4A+FR3 + + .word ANI_ATTACK_ON, AMODE_PUPPET,29,47,39,45 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,5,B3PO4A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed_c + + WL ANI_IFBLOCKED,#missed_c + +;#gothim + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR5,#puppet_tbl,1 + + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,B3PO4A+FR8,#puppet_tbl,4 + + .word ANI_SET_RPTCOUNT,4 ;3 times +;start of back breaker +START_OF_BREAKER + .word ANI_CLR_BUTCOUNT + WL ANI_SLAVEANIM,#strt_flail_tbl + + .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD + + .word ANI_ATTACK_ON, AMODE_PUPPET,-30,138,64,11 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,B4BB1X+FR2 + + .word ANI_ATTACK_OFF + + .word ANI_ATTACHZ,0,0,4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED|MODE_OVERLAP|MODE_NOCONFINE + + .word ANI_OFFSET,0,10,0 ;x,y,z + + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,50000h +;Float away from side ropes! +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,16,B4BB1X+FR2,puppet_tbl_back,0 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_ZEROVELS + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR3,puppet_tbl_back,1 + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR4,puppet_tbl_back,2 +; .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WL ANI_CODE,CALL_BONE_BREAK +; .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR5,puppet_tbl_back,3 + .word ANI_DAMAGEOPP,D_BACKBRKR,RD_BACKBRKR + +;Perhaps even shake ropes + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR5,puppet_tbl_back,3 + + WL ANI_CODE,CALL_SPECIAL_MOVE + .WORD ANI_INC_COMBO + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,LET_GO_VICTIM + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,LET_GO_VICTIM + + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR4,puppet_tbl_back,2 + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR3,puppet_tbl_back,1 + + WL ANI_GOTO,START_OF_BREAKER + +LET_GO_VICTIM + + WL ANI_SLAVEANIM,bncoff_tbl + + .word ANI_DETACH + + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 30,B4BB1X+FR5 + WL 4,B4BB1X+FR6 + WL 4,B4BB1X+FR7 + WL 4,B4BB1X+FR8 + WL 4,B4BB1X+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed_c + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 20,B3PO4A+FR4 + WL 3,B3PO4A+FR3 + WL 3,B3PO4A+FR2 + WL 3,B3PO4A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + .ref H3MS3Z,H4MF4B + .ref R3MS3Z,R4MF4B + .ref U4GH3C,U3MS3Z,U4PM3C,U4GH3C + .ref Y3MS3Z,Y3MF3B + .ref S3PM4B,S3MS3Z,S3MF3B +; .ref B3MS3Z,B4MF4A + .ref D3GS3X,D4MF4A + .ref L3MS3Z,L3MF3B +#Bret + LWWW H3MS3Z+FR1,53,16,0 + LWWW H3MS3Z+FR2,37,20,0 + LWWW H3MS3Z+FR3,24,22,0 + LWWW H3MS3Z+FR4,-12,26,0 + LWWW H4MF4B+FR1,-31,10,0 + .long 0 +#Razor + LWWW R3MS3Z+FR1,57,7,0 + LWWW R3MS3Z+FR2,37,13,0 + LWWW R3MS3Z+FR3,10,13,0 + LWWW R3MS3Z+FR4,-25,21,0 + LWWW R4MF4B+FR6,-40,16,0 + .long 0 +#Taker + LWWW U4GH3C+FR10,67,16,0 + LWWW U3MS3Z+FR1,31,36,0 + LWWW U3MS3Z+FR2,-6,32,0 + LWWW U3MS3Z+FR4,-31,17,0 + LWWW U4PM3C+FR6,-44,20,0 + .long 0 +#Yokozuna + LWWW Y3MS3Z+FR1,65,4,0 + LWWW Y3MS3Z+FR2,48,30,0 + LWWW Y3MS3Z+FR3,24,30,0 + LWWW Y3MS3Z+FR5,-29,28,0 + LWWW Y3MF3B+FR7,-32,19,0 + .long 0 +#Shawn + LWWW S3PM4B+FR1,53,14,0 + LWWW S3MS3Z+FR1,18,20,0 + LWWW S3MS3Z+FR2,3,20,0 + LWWW S3MS3Z+FR4,-33,19,0 + LWWW S3MF3B+FR6,-45,21,0 + .long 0 +#BamBam + LWWW B3MS3Z+FR1,60,13,0 + LWWW B3MS3Z+FR2,38,13,0 + LWWW B3MS3Z+FR3,15,10,0 + LWWW B3MS3Z+FR4,-21,27,0 + LWWW B4MF4A+FR6,-41,31,0 + .long 0 +#Doink + LWWW D3GS3X+FR1,70,0,0 + LWWW D3GS3X+FR3,35,22,0 + LWWW D3GS3X+FR4,18,15,0 + LWWW D3GS3X+FR5,-16,19,0 + LWWW D4MF4A+FR1,-36,14,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MS3Z+FR1,63,8,0 + LWWW L3MS3Z+FR2,37,22,0 + LWWW L3MS3Z+FR3,7,12,0 + LWWW L3MS3Z+FR5,-32,16,0 + LWWW L3MF3B+FR6,-37,14,0 + .long 0 + + +#strt_flail_tbl + REFLONG hrt_heldoh_anim + REFLONG rzr_heldoh_anim + REFLONG und_heldoh_anim + REFLONG yok_heldoh_anim + REFLONG shn_heldoh_anim + REFLONG bam_heldoh_anim + REFLONG dnk_heldoh_anim + .long 0 + REFLONG lex_heldoh_anim + + + SUBR bam_stndholdoh_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 999,B3PO4A+FR8 + .word ANI_REPEAT + + +#***************************************************************************** +* +* OPPONENT HELD OVERHEAD - SLAM DOWN + + + SUBR bam_slamdwn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_ATTACK_ON, AMODE_PUPPET,-30,138,64,11 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,6,B3PO4A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_ATTACHZ,0,0,4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED|MODE_OVERLAP|MODE_NOCONFINE + + WWLLW ANI_SUPERSLAVE2,4,B4CF4A+FR1,#puppet_tbl,0 + + .word ANI_SOUND,82h ;Effort grunt + + WLW ANI_SET_ZVEL,-18000h,AM_ABS + WL ANI_SET_YVEL,50000h +;Float away from side ropes! +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + .word ANI_DRAW_NAME,6 + + WWLLW ANI_SUPERSLAVE2,4,B4CF4A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,B4CF4A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,B4CF4A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,B4CF4A+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,B4CF4A+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,B4CF4A+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,B4CF4A+FR8,#puppet_tbl,7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,3,B4CF4A+FR9,#puppet_tbl,8 + + .WORD ANI_ADD_MOVE,MOVE_C_1,2,2 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + .word ANI_SHAKER,40 + + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL ANI_SLAVEANIM,#faced_tbl + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + WL 5,B4CF4A+FR9 + WL ANI_CODE,#set_opp_y + + WL 2,B4CF4A+FR9 + + .word ANI_WAITHITGND + WL 4,B3PO4E+FR2 + WL 4,B3PO4E+FR3 + WL 4,B3PO4E+FR4 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + +; .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD +; .word ANI_SETMODE,MODE_NOAUTOFLIP + + .word ANI_END + +#set_opp_y + move *a13(WHOIHIT),a0,L + movi [5,0],a14 + move a14,*a0(OBJ_YVEL),L + movi [2,0],a14 + move a14,*a0(OBJ_ZVEL),L + + movi -[3,0],a1 + move *a0(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a1 ;left +#abs + move a1,*a0(OBJ_XVEL),L + rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref S3CF3Z,Y3KF3B,L3TF3X + +#Bret + LWWW H4MF4B+FR1,-29,11,0 + LWWW H4MF4B+FR1,-31,8,0 + LWWW H4MF4B+FR1,-34,9,0 + LWWW H4MF4B+FR1,-39,7,0 + LWWW H4MF4B+FR1,-43,10,0 + LWWW H4MF4B+FR1,-40,14,0 + LWWW H4MF4B+FR1,-33,15,0 + LWWW H4MF4B+FR1,-13,6,0 + LWWW H4MF4B+FR1,-8,-41,0 + .long 0 +#Razor + LWWW R4MF4B+FR6,-35,15,0 + LWWW R4MF4B+FR6,-38,14,0 + LWWW R4MF4B+FR6,-40,15,0 + LWWW R4MF4B+FR6,-41,16,0 + LWWW R4MF4B+FR6,-38,24,0 + LWWW R4MF4B+FR6,-43,24,0 + LWWW R4MF4B+FR6,-41,21,0 + LWWW R4MF4B+FR6,-29,11,0 + LWWW R3MS3Z+FR6,25,-46,0 + .long 0 +#Taker + .ref U3CF3Q + LWWW U4PM3C+FR6,-42,17,0 + LWWW U4PM3C+FR6,-44,14,0 + LWWW U4PM3C+FR6,-47,14,0 + LWWW U4PM3C+FR6,-48,14,0 + LWWW U4PM3C+FR6,-44,21,0 + LWWW U4PM3C+FR6,-49,21,0 + LWWW U4PM3C+FR6,-46,19,0 + LWWW U4PM3C+FR6,-30,10,0 + LWWW U3CF3Q+FR1,14,-62,0 + .long 0 +#Yokozuna + LWWW Y3MF3B+FR7,-37,18,0 + LWWW Y3MF3B+FR7,-42,15,0 + LWWW Y3MF3B+FR7,-45,16,0 + LWWW Y3MF3B+FR7,-46,16,0 + LWWW Y3MF3B+FR7,-42,23,0 + LWWW Y3MF3B+FR7,-46,23,0 + LWWW Y3MF3B+FR7,-42,22,0 + LWWW Y3MF3B+FR7,-20,14,0 + LWWW Y3KF3B+FR1,18,-37,0 + .long 0 +#Shawn + LWWW S3MF3B+FR6,-43,18,0 + LWWW S3MF3B+FR6,-44,16,0 + LWWW S3MF3B+FR6,-47,17,0 + LWWW S3MF3B+FR6,-48,17,0 + LWWW S3MF3B+FR6,-44,23,0 + LWWW S3MF3B+FR6,-49,23,0 + LWWW S3MF3B+FR6,-47,20,0 + LWWW S3MF3B+FR6,-28,10,0 + LWWW S3CF3Z+FR1,27,-59,0 + .long 0 +#BamBam + LWWW B4MF4A+FR6,-48,35,0 + LWWW B4MF4A+FR6,-50,34,0 + LWWW B4MF4A+FR6,-54,34,0 + LWWW B4MF4A+FR6,-58,32,0 + LWWW B4MF4A+FR6,-56,37,0 + LWWW B4MF4A+FR6,-61,37,0 + LWWW B4MF4A+FR6,-53,40,0 + LWWW B4MF4A+FR6,-33,29,0 + LWWW B3RL1A+FR7,35,-55,0 + .long 0 +#Doink + LWWW D4MF4A+FR1,-34,15,0 + LWWW D4MF4A+FR1,-36,12,0 + LWWW D4MF4A+FR1,-39,13,0 + LWWW D4MF4A+FR1,-42,12,0 + LWWW D4MF4A+FR1,-40,19,0 + LWWW D4MF4A+FR1,-44,19,0 + LWWW D4MF4A+FR1,-34,17,0 + LWWW D4MF4A+FR1,-24,6,0 + LWWW D3GS3X+FR8,20,-59,0 + LWWW B4CF4A+FR1,-47,141,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MF3B+FR6,-35,12,0 + LWWW L3MF3B+FR6,-36,9,0 + LWWW L3MF3B+FR6,-37,10,0 + LWWW L3MF3B+FR6,-38,11,0 + LWWW L3MF3B+FR6,-35,19,0 + LWWW L3MF3B+FR6,-40,18,0 + LWWW L3MF3B+FR6,-40,16,0 + LWWW L3MF3B+FR6,-30,5,0 + LWWW L3TF3X+FR1,9,-55,0 + .long 0 + + +#faced_tbl + REFLONG hrt_break_face_anim,rzr_break_face_anim + REFLONG und_break_face_anim + REFLONG yok_break_face_anim + REFLONG shn_break_face_anim,bam_break_face_anim + REFLONG dnk_break_face_anim + .long 0 + REFLONG lex_break_face_anim + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR bam_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_OTHERNONO + +#loop WL 5,B4MF4A+FR1 + WL 5,B4MF4A+FR2 + WL 5,B4MF4A+FR3 + WL 5,B4MF4A+FR4 + WL 5,B4MF4A+FR5 + WL 5,B4MF4A+FR6 + WL 5,B4MF4A+FR7 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + .word ANI_OFFSET,-20,-50,0 ;x,y,z + + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 5,B3MS3Z+FR4 + WL 5,B3MS3Z+FR3 + WL 5,B3MS3Z+FR2 + WL 5,B3MS3Z+FR1 + WL 5,B2ST2A+FR1 + + .word ANI_WAITHITGND + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* BACK BREAKER + + SUBR bam_backbreaker_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_ATTACK_ON, AMODE_PUPPET,-30,138,64,11 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,6,B3PO4A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_ATTACHZ,0,0,4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED|MODE_OVERLAP|MODE_NOCONFINE + + .word ANI_OFFSET,0,10,0 ;x,y,z + + WLW ANI_SET_ZVEL,-18000h,AM_ABS + WL ANI_SET_YVEL,70000h +;Float away from side ropes! +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + .word ANI_DRAW_NAME,5 + + WWLLW ANI_SUPERSLAVE2,16,B4BB1X+FR2,puppet_tbl_back,0 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_ZEROVELS + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR3,puppet_tbl_back,1 + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR4,puppet_tbl_back,2 + WL ANI_CODE,CALL_BONE_BREAK +; .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,4,B4BB1X+FR5,puppet_tbl_back,3 + .word ANI_DAMAGEOPP,D_BACKBRKR,RD_BACKBRKR + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + +;Perhaps even shake ropes + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + + WL ANI_CODE,CALL_SPECIAL_MOVE + + WL ANI_SLAVEANIM,bncoff_tbl + + .word ANI_DETACH + + WL 30,B4BB1X+FR5 + WL 4,B4BB1X+FR6 + WL 4,B4BB1X+FR7 + WL 4,B4BB1X+FR8 + WL 4,B4BB1X+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR set_xdrift + +;Float +;This could become a leap at position command +;Leap at the center of ring! + +;Check to make sure I'm in ring! + move *a13(INRING),a1 + jrnz #ok + + move *a13(OBJ_XPOSINT),a0 + subi RING_X_MID,a0 + abs a0 + cmpi 60h,a0 + jrlt #ok + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID,a0 + jrgt #onrgt + + movi [3,0000h],a0 + move a0,*a13(OBJ_XVEL),L + rets +#onrgt + movi -[3,0000h],a0 + move a0,*a13(OBJ_XVEL),L +#ok + rets + + +puppet_tbl_back + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H3BR3Z,H3DC3A + LWWW H3BR3Z+FR4,-28,16,1 + LWWW H3DC3A+FR5,-9,32,1 + LWWW H3DC3A+FR5,-11,30,1 + LWWW H3BR3Z+FR1,4,-23,1 + .long 0 +#Razor + .ref R3BR3Z,R3FD3B + LWWW R3BR3Z+FR1,-21,15,1 + LWWW R3FD3B+FR9,-15,18,1 +; LWWW R3FD3B+FR6,-19,34,1 + LWWW R3FD3B+FR9,-15,18,1 + LWWW R3BR3Z+FR3,-15,-30,1 + .long 0 +#Taker + .ref U3BR3Z,U3CP3B + LWWW U3BR3Z+FR1,-30,10,1 + LWWW U3BR3Z+FR2,-31,10,1 + LWWW U3CP3B+FR4,-28,36,0 + LWWW U3BR3Z+FR3,-18,-21,1 + .long 0 +#Yokozuna + .ref Y3RL1A,Y3CP3B,Y3BR3Z + LWWW Y3RL1A+FR3,-21,18,0 + LWWW Y3RL1A+FR2,-21,22,0 + LWWW Y3CP3B+FR1,-8,24,0 + LWWW Y3BR3Z+FR1,-21,-11,1 + .long 0 +#Shawn + .ref S3RL3A,S3BR3Z + LWWW S3RL3A+FR3,-21,16,0 + LWWW S3RL3A+FR1,-25,14,0 + LWWW S3BR3Z+FR5,-23,19,1 + LWWW S3BR3Z+FR3,6,-27,1 + .long 0 +#BamBam + .ref B3BR3Z + LWWW B3BR3Z+FR11,-27,21,1 + LWWW B3BR3Z+FR12,-29,29,1 + LWWW B3BR3Z+FR13,-27,19,1 + LWWW B3BR3Z+FR14,-24,-8,1 + .long 0 +#Doink + .ref D3UC3A,D3BK3Z + LWWW D3BK3Z+FR2,-15,11,1 + LWWW D3BK3Z+FR3,-9,20,1 + LWWW D3UC3A+FR5,-13,28,1 + LWWW D3BK3Z+FR7,-18,-30,1 + .long 0 +#Adam + .long 0 +#Lex + .ref L3RL1A,L3UC3A,L3BR3Z + LWWW L3RL1A+FR7,-29,16,0 + LWWW L3RL1A+FR9,-23,12,0 + LWWW L3UC3A+FR4,-21,24,1 + LWWW L3BR3Z+FR1,-14,-28,1 + .long 0 + +bncoff_tbl + REFLONG hrt_backbroken_anim,rzr_backbroken_anim + REFLONG und_backbroken_anim,yok_backbroken_anim + REFLONG shn_backbroken_anim,bam_backbroken_anim + REFLONG dnk_backbroken_anim + .long 0 + REFLONG lex_backbroken_anim + + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR bam_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,B3BR3Z+FR14 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + +; WL 15,B3BR3Z+FR15 +; WL 4,B3BR3Z+FR16 + + WL 25,B3BR3Z+FR14 + WL 4,B3BR3Z+FR16 + .word ANI_XFLIP + WL 2,B3RL1A+FR3 + + + +; WL 3,B3RL1A+FR4 +; WL 3,B3RL1A+FR5 +; WL 3,B3RL1A+FR6 +; WL 3,B3RL1A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + +; .word ANI_XFLIP + + WL 3,B3MS3X+FR1 + WL 3,B3MS3X+FR2 + WL 3,B3MS3X+FR3 + + .word ANI_SETPLYRMODE,MODE_ONGROUND +; .word ANI_GETUP,100 + +;No stars around head here... + + .word ANI_DETACH + + WL 20,B3RL1A+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* END OF NECK BROKEN SEQ. + + SUBR bam_neckbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,060000h +;; WLW ANI_SET_ZVEL,20000h,AM_ABS + + .word ANI_XFLIP + + WL 3,B3CP3B+FR4 + WL 6,B3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,B3CP3B+FR6 + WL 5,B3CP3B+FR7 + + WL 10,B3RL1A+FR1 ;1st frame of roll + + .word ANI_DETACH + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* POGO STICK HEAD CRUNCHER + + SUBR bam_combo_pogo_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here + .word ANI_ATTACK_ON, AMODE_PUPPET,32,25,42h,21 ;mode,x,y,w,h + +;#contpd + WWL ANI_WAITHITOPP,4,B3PG3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;Check to see if I have tried to pile drive Yokozuna! + +;FIX!! Yoko check +; WL ANI_CODE,is_this_yoko +; WL ANI_IFSTATUS,#yoko_miss + +;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,B3PG3A+FR1,#puppet_tbl,0 + .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,20,B3PG3A+FR1,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR2,#puppet_tbl,1 + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,-28000h,AM_ABS + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,7,B3PG3A+FR5,#puppet_tbl,4 + + .word ANI_SET_RPTCOUNT,4 ;3 times + .word ANI_CLR_BUTCOUNT + +;Place opponent in front of me in z + + .word ANI_ATTACHZ,0,0,4 + WLW ANI_ATTCHIMAGE,BCDARM+FR2,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR2,#puppet_tbl,5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,BCDARM+FR4,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR4,#puppet_tbl,6 + WLW ANI_ATTCHIMAGE,BCDARM+FR5,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR5,#puppet_tbl,7 + WLW ANI_ATTCHIMAGE,BCDARM+FR6,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR6,#puppet_tbl,8 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR8,#puppet_tbl,9 + + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,4,B4CD3B+FR8,#puppet_tbl,10 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_POGO1,RD_POGO1 + + WL ANI_CODE,CALL_SPECIAL_MOVE + .WORD ANI_INC_COMBO + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#letgo_c + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop_c +#letgo_c + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + WL 12,B4CF4A+FR9 + + .word ANI_WAITHITGND + WL 2,B3PO4E+FR2 + WL 2,B3PO4E+FR3 + WL 2,B3PO4E+FR4 + + WL ANI_IF_RPTCOUNT,#CHECK_NEXT_BUTA + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#CHECK_NEXT_BUT + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + .word ANI_IMMOBILIZE,80 + WL 6,B3PO4E+FR4 + WL ANI_CHANGEANIM,bam_combo_lbowdrop_anim + +#CHECK_NEXT_BUT + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#CHECK_NEXT_BUTA + .word ANI_DETACH + .word ANI_IMMOBILIZE,80 + WL 8,B3PO4E+FR4 + WL ANI_CHANGEANIM,bam_combo_butt_drop_anim +#CHECK_NEXT_BUTA + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed_c + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 4,B3PG3A+FR1 + WL 4,B3PG3A+FR2 + WL 4,B3PG3A+FR3 + WL 4,B3PG3A+FR4 + +#cont_c WL ANI_SET_YVEL,30000h + + WL 3,B3PG3A+FR5 + .word ANI_OFFSET,0,26,0 ;x,y,z + + WL 4,B4CD3A+FR3 + WL 4,B4CD3A+FR4 + WL 4,B4CD3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +;Maybe do a bounce + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + + ;impact + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 4,B4CD3A+FR6 + + WL 4,B4CD3A+FR6 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WL 3,B3PG3A+FR9 + WL 3,B3PG3A+FR10 + WL 3,B3PG3A+FR11 + WL 3,B3PG3A+FR12 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#rpt_loop_c + .word ANI_CLR_BUTCOUNT + + WL ANI_SET_YVEL,60000h + + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR8,#puppet_tbl,10 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR8,#puppet_tbl,9 + WLW ANI_ATTCHIMAGE,BCDARM+FR6,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR6,#puppet_tbl,8 + WLW ANI_ATTCHIMAGE,BCDARM+FR5,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR5,#puppet_tbl,7 + WLW ANI_ATTCHIMAGE,BCDARM+FR4,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR4,#puppet_tbl,6 + WLW ANI_ATTCHIMAGE,BCDARM+FR2,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR2,#puppet_tbl,5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,BCDARM+FR4,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR4,#puppet_tbl,6 + WLW ANI_ATTCHIMAGE,BCDARM+FR5,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR5,#puppet_tbl,7 + WLW ANI_ATTCHIMAGE,BCDARM+FR6,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR6,#puppet_tbl,8 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR8,#puppet_tbl,9 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,4,B4CD3B+FR8,#puppet_tbl,10 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + .word ANI_DAMAGEOPP,D_POGO2,RD_POGO2 + + .WORD ANI_INC_COMBO + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#letgo_c + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop_c + + WL ANI_GOTO,#letgo_c + + SUBR bam_pogo_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_CHEER,3 + .word ANI_ATTACK_ON, AMODE_PUPPET,32,25,42h,21 ;mode,x,y,w,h + +;#contpd + WWL ANI_WAITHITOPP,4,B3PG3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;Check to see if I have tried to pile drive Yokozuna! + +;FIX!! Yoko check +; WL ANI_CODE,is_this_yoko +; WL ANI_IFSTATUS,#yoko_miss + +;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,B3PG3A+FR1,#puppet_tbl,0 + .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,20,B3PG3A+FR1,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR2,#puppet_tbl,1 + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,-28000h,AM_ABS +;Float toward the center of ring! +; WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,7,B3PG3A+FR5,#puppet_tbl,4 + + .word ANI_SET_RPTCOUNT,4 ;3 times + .word ANI_CLR_BUTCOUNT + +;Place opponent in front of me in z + + .word ANI_ATTACHZ,0,0,4 + WLW ANI_ATTCHIMAGE,BCDARM+FR2,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR2,#puppet_tbl,5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,BCDARM+FR4,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR4,#puppet_tbl,6 + WLW ANI_ATTCHIMAGE,BCDARM+FR5,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR5,#puppet_tbl,7 + WLW ANI_ATTCHIMAGE,BCDARM+FR6,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR6,#puppet_tbl,8 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR8,#puppet_tbl,9 + + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,4,B4CD3B+FR8,#puppet_tbl,10 + + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_POGO1,RD_POGO1 + + WL ANI_CODE,CALL_SPECIAL_MOVE +; WL ANI_CODE,#set_opp_xflip + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,2,#letgo + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop +#letgo + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + WL 20,B4CF4A+FR9 + + .word ANI_WAITHITGND + WL 4,B3PO4E+FR2 + WL 4,B3PO4E+FR3 + WL 4,B3PO4E+FR4 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 4,B3PG3A+FR1 + WL 4,B3PG3A+FR2 + WL 4,B3PG3A+FR3 + WL 4,B3PG3A+FR4 + +#cont WL ANI_SET_YVEL,30000h + + WL 3,B3PG3A+FR5 + .word ANI_OFFSET,0,26,0 ;x,y,z + + WL 4,B4CD3A+FR3 + WL 4,B4CD3A+FR4 + WL 4,B4CD3A+FR5 + +; WL ANI_SET_YVEL,-20000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +;Maybe do a bounce + + ;impact + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 4,B4CD3A+FR6 + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; WL 18,D4HS3B+FR8 + + WL 4,B4CD3A+FR6 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WL 3,B3PG3A+FR9 + WL 3,B3PG3A+FR10 + WL 3,B3PG3A+FR11 + WL 3,B3PG3A+FR12 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#rpt_loop + .word ANI_CLR_BUTCOUNT + + WL ANI_SET_YVEL,60000h + + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR8,#puppet_tbl,10 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR8,#puppet_tbl,9 + WLW ANI_ATTCHIMAGE,BCDARM+FR6,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR6,#puppet_tbl,8 + WLW ANI_ATTCHIMAGE,BCDARM+FR5,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR5,#puppet_tbl,7 + WLW ANI_ATTCHIMAGE,BCDARM+FR4,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR4,#puppet_tbl,6 + WLW ANI_ATTCHIMAGE,BCDARM+FR2,10 + WWLLW ANI_SUPERSLAVE2,3,B4CD3B+FR2,#puppet_tbl,5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,BCDARM+FR4,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR4,#puppet_tbl,6 + WLW ANI_ATTCHIMAGE,BCDARM+FR5,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR5,#puppet_tbl,7 + WLW ANI_ATTCHIMAGE,BCDARM+FR6,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR6,#puppet_tbl,8 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,1,B4CD3B+FR8,#puppet_tbl,9 + WLW ANI_ATTCHIMAGE,BCDARM+FR8,10 + WWLLW ANI_SUPERSLAVE2,4,B4CD3B+FR8,#puppet_tbl,10 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + .word ANI_DAMAGEOPP,D_POGO2,RD_POGO2 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,3,#letgo + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop + .word ANI_DRAW_NAME,31 + + WL ANI_GOTO,#letgo + +#set_opp_xflip + move *a13(ATTACH_PROC),a0,L + + move *a0(OBJ_CONTROL),a14 + xori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H3BF3A,H3PP3X,H4POGO + .ref R3BF3A,R3GP3Z,R4POGO + .ref U4BF3Z,U3PP3X,U3GP3X,U4POGO + .ref Y3BF3A,Y3PP3Q,Y3FD3N,Y4POGO + .ref S3BF3A,S3GP3X,S3OS3X,S3FD3X,S4POGO + .ref D3BF3A,D3PD3Z,D4POGO + .ref L3BF3B,L3GP3Z,L3FH3A,L3FD3B,L4POGO +; .ref B4AM4A,B3PP3Q,B4POGO,B4PO00 + +#Bret + LWWW H3BF3A+FR3,38,-13,0 + LWWW H3PP3X+FR1,18,-32,0 + LWWW H3PP3X+FR2,9,7,0 + LWWW H3PP3X+FR3,19,43,0 + LWWW H3PP3X+FR6,18,36,0 + + LWWW H4POGO+FR1,26,50,1 + LWWW H4POGO+FR1,29,51,1 + LWWW H4POGO+FR1,28,56,1 + LWWW H4POGO+FR1,28,50,1 + LWWW H4POGO+FR2,-3,20,1 + LWWW H4POGO+FR3,-9,9,1 + .long 0 +#Razor + LWWW R3BF3A+FR9,39,-18,0 + LWWW R3GP3Z+FR1,25,-29,0 + LWWW R3GP3Z+FR2,21,-22,0 + LWWW R3GP3Z+FR4,37,44,0 + LWWW R3GP3Z+FR5,32,44,0 + + LWWW R4POGO+FR3,-1,44,1 + LWWW R4POGO+FR3,0,44,1 + LWWW R4POGO+FR3,-4,50,1 + LWWW R4POGO+FR3,-3,48,1 + LWWW R4POGO+FR4,-15,23,1 + LWWW R4POGO+FR5,-21,2,1 + .long 0 +#Taker + LWWW U4BF3Z+FR1,37,-12,0 + LWWW U3PP3X+FR1,23,-25,1 + LWWW U3PP3X+FR2,24,-15,1 + LWWW U3PP3X+FR4,17,18,1 + LWWW U3PP3X+FR6,28,58,1 + + LWWW U4POGO+FR1,16,59,1 + LWWW U4POGO+FR1,17,61,1 + LWWW U4POGO+FR1,16,69,1 + LWWW U4POGO+FR1,18,64,1 + LWWW U4POGO+FR3,-16,12,1 + LWWW U4POGO+FR4,-19,-3,1 + .long 0 +#Yokozuna + LWWW Y3BF3A+FR11,46,-7,0 + LWWW Y3PP3Q+FR1,24,-22,0 + LWWW Y3PP3Q+FR3,25,-11,0 + LWWW Y3PP3Q+FR4,35,3,0 + LWWW Y3PP3Q+FR7,25,21,0 + + LWWW Y4POGO+FR1,13,44,1 + LWWW Y4POGO+FR1,14,46,1 + LWWW Y4POGO+FR1,11,54,1 + LWWW Y4POGO+FR1,11,53,1 + LWWW Y4POGO+FR3,4,21,1 + LWWW Y4POGO+FR4,-4,7,1 + .long 0 +#Shawn + LWWW S3BF3A+FR5,29,-27,0 + LWWW S3GP3X+FR1,30,-31,0 + LWWW S3GP3X+FR2,23,-21,0 + LWWW S3GP3X+FR3,27,5,0 + LWWW S3GP3X+FR5,30,40,0 + + LWWW S4POGO+FR1,20,49,1 + LWWW S4POGO+FR1,21,49,1 + LWWW S4POGO+FR1,17,57,1 + LWWW S4POGO+FR1,17,54,1 + LWWW S4POGO+FR2,0,26,1 + LWWW S4POGO+FR3,-9,-1,1 + .long 0 +#BamBam + LWWW B4AM4A+FR5,41,-13,0 + LWWW B3PP3Q+FR1,23,-32,0 + LWWW B3PP3Q+FR2,23,-14,0 + LWWW B3PP3Q+FR3,27,12,0 + LWWW B3PP3Q+FR5,33,34,0 + + LWWW B4POGO+FR5,16,60,1 + LWWW B4POGO+FR5,17,63,1 + LWWW B4POGO+FR5,15,69,1 + LWWW B4POGO+FR5,17,64,1 + LWWW B4POGO+FR3,-7,32,1 + LWWW B4POGO+FR4,-11,1,1 + + .long 0 +#Doink + LWWW D3BF3A+FR1,40,-14,0 + LWWW D3PD3Z+FR1,29,-36,1 + LWWW D3PD3Z+FR2,24,-14,1 + LWWW D3PD3Z+FR3,26,16,1 + LWWW D3PD3Z+FR6,34,39,1 + + LWWW D4POGO+FR2,11,55,1 + LWWW D4POGO+FR2,12,58,1 + LWWW D4POGO+FR2,9,63,1 + LWWW D4POGO+FR2,9,58,1 + LWWW D4POGO+FR3,-3,29,1 + LWWW D4POGO+FR4,-15,7,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3BF3B+FR1,27,-21,0 + LWWW L3GP3Z+FR1,25,-29,0 + LWWW L3GP3Z+FR2,23,-13,0 + LWWW L3GP3Z+FR4,29,23,0 + LWWW L3GP3Z+FR6,30,36,0 + + LWWW L4POGO+FR1,13,54,1 + LWWW L4POGO+FR1,15,56,1 + LWWW L4POGO+FR1,13,61,1 + LWWW L4POGO+FR1,15,59,1 + LWWW L4POGO+FR3,9,30,1 + LWWW L4POGO+FR4,-8,11,1 + .long 0 + +#rollout_tbl + REFLONG hrt_break_neck3_anim,rzr_break_neck3_anim + REFLONG und_break_neck3_anim + REFLONG yok_break_neck3_anim + REFLONG shn_break_neck4_anim,bam_break_neck3_anim + REFLONG dnk_break_neck3_anim + .long 0 + REFLONG lex_break_neck3_anim + + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR bam_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,BAM_TBUKLY + + WL 2,B4HU4B+FR7 + WL 2,B4HU4B+FR8 + WL 2,B4HU4B+FR9 + + .word ANI_OFFSET,0,20,0 + + WL ANI_CODE,tgt_tbukl + .word ANI_LEAPATPOS,20,200,10,4,0 ;#ticks,dist,xoff,yoff,zoff + WL 20,B4HU4B+FR11 + + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_SHAKECORNER + .word ANI_ZEROVELS + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL 3,B4HU4B+FR12 + +; WL 3,B4SB4A+FR1 +; WL 3,B4SB4A+FR2 +; WL 3,B4SB4A+FR3 +; WL 3,B4SB4A+FR4 +; WL 3,B4SB4A+FR5 +; WL 3,B4SB4A+FR6 + + WL 3,B4SB4A+FR7 + WL 3,B4SB4A+FR8 + WL 3,B4SB4A+FR9 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_UNINT + .word ANI_SCROLL_CTRL,SC_RESTORE + WL ANI_CODE,tbukl_flip + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 +#repeat + WL 7,B4SB4A+FR10 + WL ANI_CODE,tbukl_flip + WL 7,B4SB4A+FR9 + WL ANI_CODE,tbukl_flip + WL 7,B4SB4A+FR8 + WL ANI_CODE,tbukl_flip + WL 7,B4SB4A+FR7 + WL ANI_CODE,tbukl_flip + WL 7,B4SB4A+FR8 + WL ANI_CODE,tbukl_flip + WL 7,B4SB4A+FR9 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR bam_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL ANI_CODE,face_inside + + .word ANI_SHAKECORNER + WL 3,B2JD4A+FR2 + + WLW ANI_SET_XVEL,18000h,AM_FACE_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL ANI_SET_YVEL,20000h + + .word ANI_GRAVITY_ON + WL 3,B2JD4A+FR3 + WL 3,B2JD4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKECORNER + + WL 3,B2JD4A+FR6 + WL 3,B2JD4A+FR8 +; WL 3,B2JD4A+FR9 + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR bam_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,B4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,B4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,B4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,B4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,B4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,B4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,B4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,B4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,B4ST4Z+FR1 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,bam_fall_back_anim +; .word ANI_END + +#nodead + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 0b0bh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + + +#***************************************************************************** + + SUBR bam_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + +; WL 4,D3BF3Z+FR1 +; WL 4,D3BF3Z+FR2 + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,B3BF3C+FR5 + WL 3,B3BF3C+FR6 + WL 4,B3BF3C+FR7 + WL 3,B3BF3C+FR8 + WL 4,B3BF3C+FR9 + WL 3,B3BF3C+FR1 + WL 4,B3BF3C+FR2 + WL 3,B3BF3C+FR3 + WL 4,B3BF3C+FR4 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR bam_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,B3BF3C+FR5 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,B2AH2A+FR4 + WL 3,B2AH2A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,B2AH2A+FR6 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 2,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR bam_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,B3BF3C+FR5 + WL 3,B1TT5Z+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR bam_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_XFLIP +; .word ANI_OFFSET,25,0,0 + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + WL 6,B3FD3C+FR1 + WL 8,B3FD3C+FR2 + WL 3,B3FD3C+FR3 + WL 3,B3FD3C+FR4 + WL 3,B3FD3C+FR5 + .word ANI_WAITHITGND + WL 4,B3FD3C+FR5 + + ;hit. stay. + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-30,0,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 23,B3RL1A+FR7 + .word ANI_WAITROLL + + .word ANI_OFFSET,10,0,-6 + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim +; .word ANI_END + + SUBR bam_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,B4POGO+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_XFLIP + WL 3,B3FD3C+FR3 + WL 3,B3FD3C+FR4 + WL 3,B3FD3C+FR5 + + ;hit. stay. + + .word ANI_OFFSET,-30,0,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 23,B3RL1A+FR7 + .word ANI_WAITROLL + + .word ANI_OFFSET,10,0,-6 + + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim +; .word ANI_END + + SUBR bam_break_neck4_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WL ANI_CODE,ckzpos + + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back4 + + WL 4,B4UC3B+FR6 + WL 4,B3FD3C+FR2 + WL 4,B3FD3C+FR3 + WL 4,B3FD3C+FR4 + WL 4,B3FD3C+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + +#fall_back4 + WL 4,B4UC3B+FR6 + WL 4,B4UC3B+FR7 + WL 4,B4UC3B+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + + + + SUBR bam_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_ZEROVELS + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back + + ;plenty of room. fall over. + .word ANI_OFFSET,-20,0,0 + WL 5,B3FD3C+FR4 + .word ANI_OFFSET,-13,0,0 + WL 5,B3FD3C+FR5 + .word ANI_OFFSET,-51,0,0 + WL 5,B3RL1A+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + +#fall_back + ;no room. roll back onto yer back. + .word ANI_OFFSET,14,0,0 + WL 5,B4TD3B+FR7 + .word ANI_OFFSET,-12,0,0 + WL 5,B4TD3B+FR8 + .word ANI_OFFSET,-26,0,0 + WL 5,B4UC3B+FR7 + .word ANI_OFFSET,-16,0,0 + .word ANI_XFLIP + WL 10,B3RL1A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + + +#****************************************************************************** + + SUBR bam_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,16 + WL 2,B1TT5Z+FR2 ;2.5 + WL 2,B1TT5Z+FR3 ;3.5 + + SUBR bam_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,12 + +;Put cool cheers here +; .word ANI_CHEER,3 + + WL 3,B4WS4A+FR1 + + LEAPATOPP 8,999,80,80,30000h,TGT_HEAD,26,6,-2 + WL 4,B4WS4A+FR2 + WL 4,B4WS4A+FR3 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET2,25,0,25,22 ;mode,x,y,w,h + WL 4,B4WS4A+FR4 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,clear_opp_counts + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WL ANI_CODE,CALL_SETUP + + WL ANI_CODE,CALL_BONE_BREAK +; .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + + WWLLW ANI_SUPERSLAVE2,3,B4WS4A+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,B4GH3D+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,B4GH3D+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,B4GH3D+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,B4GH3D+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,B4GH3D+FR5,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,B4GH3D+FR5 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,B4WS4A+FR4 + WL 3,B4WS4A+FR3 + WL 3,B4WS4A+FR2 + WL 3,B4WS4A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H3GU4A,H3DU3A,H3BF3A + .ref R3GU4A,R3DU3B,R3BF3A + .ref U3DU3B,U4BF3Z + .ref Y3GU2A,Y3BF3A + .ref S3GU4A,S3BF3A + .ref B3GU4A,B3BF3C + .ref D3HT3Z,D3BF3A + .ref L3DU3A,L3BF3B + +#Bret + LWWW H3GU4A+FR1,42,-42,0 + LWWW H3GU4A+FR3,65,-31,0 + LWWW H3DU3A+FR3,54,-44,1 + LWWW H3DU3A+FR4,57,-34,1 + LWWW H3DU3A+FR5,55,-36,1 + LWWW H3BF3A+FR1,57,-34,0 + .long 0 +#Razor + LWWW R3GU2A+FR3,42,-33,0 + LWWW R3GU4A+FR4,49,-25,0 + LWWW R3GU4A+FR5,54,-47,0 + LWWW R3DU3B+FR2,57,-47,1 + LWWW R3DU3B+FR4,61,-37,1 + LWWW R3BF3A+FR1,63,-36,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,45,-34,1 + LWWW U3DU3B+FR5,56,-21,1 + LWWW U3DU3B+FR6,60,-42,1 + LWWW U3DU3B+FR8,52,-37,1 + LWWW U3DU3B+FR10,50,-30,1 + LWWW U4BF3Z+FR5,58,-15,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,49,-28,0 + LWWW Y3GU2A+FR2,59,-14,0 + LWWW Y3GU2A+FR4,42,-34,0 + LWWW Y3GU2A+FR7,41,-45,0 + LWWW Y3GU2A+FR11,59,-34,0 + LWWW Y3BF3A+FR1,60,-24,0 + .long 0 +#Shawn + LWWW S3GU2A+FR1,47,-36,0 + LWWW S3GU4A+FR3,54,-20,0 + LWWW S3GU4A+FR4,58,-48,0 + LWWW S3GU4A+FR5,58,-45,0 + LWWW S3GU4A+FR7,59,-41,0 + LWWW S3BF3A+FR1,47,-35,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,54,-32,0 + LWWW B3GU4A+FR4,62,-26,0 + LWWW B3GU4A+FR6,61,-40,0 + LWWW B3GU4A+FR7,60,-45,0 + LWWW B3GU4A+FR10,63,-37,0 + LWWW B3BF3C+FR5,63,-28,0 + .long 0 +#Doink + LWWW D3GU4A+FR2,49,-39,0 + LWWW D3GU4A+FR3,54,-29,0 + LWWW D3GU4A+FR4,55,-53,0 + LWWW D3GU4A+FR5,49,-39,0 + LWWW D3GU4A+FR7,66,-41,0 + LWWW D3BF3A+FR2,60,-34,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GU4A+FR1,44,-36,0 + LWWW L3DU3A+FR4,38,-20,1 + LWWW L3DU3A+FR6,38,-44,1 + LWWW L3DU3A+FR7,48,-39,1 + LWWW L3DU3A+FR9,58,-39,1 + LWWW L3BF3B+FR5,57,-32,0 + .long 0 +;#Bret +; LWWW H3GU4A+FR1,33,-42,0 +; LWWW H3GU4A+FR3,62,-31,0 +; LWWW H3DU3A+FR3,59,-38,1 +; LWWW H3DU3A+FR4,64,-36,1 +; LWWW H3DU3A+FR5,63,-33,1 +; LWWW H3BF3A+FR1,60,-34,0 +; .long 0 +;#Razor +; LWWW R3GU4A+FR2,41,-43,1 +; LWWW R3GU4A+FR3,46,-31,0 +; LWWW R3GU4A+FR5,59,-44,0 +; LWWW R3DU3B+FR2,59,-48,1 +; LWWW R3DU3B+FR4,60,-31,1 +; LWWW R3BF3A+FR4,64,-35,0 +; .long 0 +;#Taker +; LWWW U3DU3B+FR2,39,-40,1 +; LWWW U3DU3B+FR5,36,-29,1 +; LWWW U3DU3B+FR6,49,-44,1 +; LWWW U3DU3B+FR8,60,-40,1 +; LWWW U3DU3B+FR10,56,-27,1 +; LWWW U4BF3Z+FR5,64,-14,0 +; .long 0 +;#Yokozuna +; LWWW Y3GU2A+FR1,45,-28,0 +; LWWW Y3GU2A+FR3,53,-16,0 +; LWWW Y3GU2A+FR6,32,-43,0 +; LWWW Y3GU2A+FR9,55,-45,0 +; LWWW Y3GU2A+FR12,61,-31,0 +; LWWW Y3BF3A+FR1,65,-24,0 +; .long 0 +;#Shawn +; LWWW S3GU4A+FR1,39,-42,1 +; LWWW S3GU4A+FR2,47,-26,0 +; LWWW S3GU4A+FR4,64,-43,0 +; LWWW S3GU4A+FR5,59,-39,0 +; LWWW S3DU3A+FR2,60,-42,1 +; LWWW S3BF3A+FR1,50,-34,0 +; .long 0 +;#BamBam +; LWWW B3GU4A+FR3,46,-30,0 +; LWWW B3GU4A+FR4,50,-24,0 +; LWWW B3GU4A+FR6,58,-34,0 +; LWWW B3GU4A+FR7,59,-50,0 +; LWWW B3DU3A+FR2,60,-33,1 +; LWWW B3BF3C+FR5,69,-28,0 +; .long 0 +;#Doink +; LWWW D3DU3A+FR2,41,-36,1 +; LWWW D3DU3A+FR3,53,-25,1 +; LWWW D3DU3A+FR5,49,-39,1 +; LWWW D3DU3A+FR8,55,-47,1 +; LWWW D3HT3Z+FR1,56,-34,1 +; LWWW D3BF3A+FR2,62,-34,0 +; .long 0 +;#Adam +; .long 0 +;#Lex +; LWWW L3DU3A+FR2,50,-39,1 +; LWWW L3DU3A+FR4,33,-18,1 +; LWWW L3DU3A+FR6,37,-39,1 +; LWWW L3DU3A+FR7,52,-34,1 +; LWWW L3DU3A+FR9,65,-39,1 +; LWWW L3BF3B+FR2,65,-38,0 +; .long 0 + + +#****************************************************************************** + + SUBR bam_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 3,B4SW4B+FR3 + WL 3,B4SW4B+FR4 + WL 3,B4SW4B+FR5 + WL 3,B4SW4B+FR6 + WL 3,B4SW4B+FR7 + WL 3,B4SW4B+FR8 + +; WL ANI_CODE,set_taunt_bit + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,bam_stand4_anim +; .word ANI_END + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR bam_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 2,B3RL1A+FR7 ;Face down + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,80000h + WL 4,B3MS3X+FR1 + WL 4,B3MS3X+FR2 + WL 4,B3MS3X+FR3 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL 3,B3RL1A+FR7 ;Face down + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + + + SUBR bam_break_face3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL 3,B3MS3Z+FR3 + WL ANI_SET_YVEL,078000h + WL 100,B3MS3Z+FR3 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + + +* Head slams into mat +;From head slam + + SUBR bam_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 2,B3RL1A+FR7 ;Face down + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,40000h + WL 4,B3MS3X+FR1 + WL 4,B3MS3X+FR2 + WL 4,B3MS3X+FR3 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT +; WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 4,B3MS3X+FR1 + WL 4,B3MS3X+FR2 + WL 4,B3MS3X+FR3 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 2,B3RL1A+FR7 ;Face down + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,bam_4_faceup_getup_anim + +#***************************************************************************** +* +* PILE DRIVER + + SUBR bam_3_pile_driver_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_CHEER,3 + .word ANI_ATTACK_ON, AMODE_PUPPET,32,25,42h,21 ;mode,x,y,w,h + +;#contpd + WWL ANI_WAITHITOPP,4,B3PG3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;Check to see if I have tried to pile drive Yokozuna! + +;FIX!! Yoko check +; WL ANI_CODE,is_this_yoko +; WL ANI_IFSTATUS,#yoko_miss + +;got him + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,B3PG3A+FR1,#puppet_tbl,0 + .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,20,B3PG3A+FR1,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR2,#puppet_tbl,1 + +; WL ANI_SET_YVEL,30000h + WL ANI_SET_YVEL,70000h +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR5,#puppet_tbl,4 + +;Mess with the physics! + +; WL ANI_SET_YVEL,-20000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +; WWLLW ANI_SUPERSLAVE2,2,B3PG3A+FR5,#puppet_tbl,4 ;13 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR3,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR4,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR5,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR6,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,2,B3PG3A+FR9,#puppet_tbl,9 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL 20,B3PG3A+FR9 + WLW ANI_SET_ZVEL,-10000h,AM_ABS + WL 3,B3PG3A+FR10 + WL 3,B3PG3A+FR11 + WL 3,B3PG3A+FR12 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;#yoko_miss +;;Cause Yoko to stand up out of his head hold and break free +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; +; WL ANI_CODE,CALL_MISS_YOKO +; +; WL 3,D3PP3Z+FR1 +; WL 3,D3PP3Z+FR2 +; WL 3,D3PP3Z+FR3 +; WL 3,D3PP3Z+FR4 +; WL ANI_CODE,#break +; WL ANI_GOTO,#cont +; + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 4,B3PG3A+FR1 + WL 4,B3PG3A+FR2 + WL 4,B3PG3A+FR3 + WL 4,B3PG3A+FR4 + +#cont WL ANI_SET_YVEL,30000h + + WL 3,B3PG3A+FR5 + .word ANI_OFFSET,0,26,0 ;x,y,z + + WL 4,B4CD3A+FR3 + WL 4,B4CD3A+FR4 + WL 4,B4CD3A+FR5 + +; WL ANI_SET_YVEL,-20000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +;Maybe do a bounce + + ;impact +; WL ANI_CODE,SMALL_BOUNCE + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 4,B4CD3A+FR6 + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; WL 18,D4HS3B+FR8 + + WL 4,B4CD3A+FR6 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WL 3,B3PG3A+FR9 + WL 3,B3PG3A+FR10 + WL 3,B3PG3A+FR11 + WL 3,B3PG3A+FR12 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#set_opp_xflip + move *a13(ATTACH_PROC),a0,L + + move *a0(OBJ_CONTROL),a14 + xori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +;Check to see if I have tried to pile drive Yokozuna! + +; SUBR is_this_yoko +; +; move *a13(ATTACH_PROC),a0,L +; move *a0(WRESTLERNUM),a0 +; cmpi 3,a0 +; jrnz #ok +; +;;Yes, this is Yoko! +; +; move *a13(ANIMODE),a1 +; ori MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets +;#ok +; move *a13(ANIMODE),a1 +; andni MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets +; +;;For Yoko breaking free +;#break +; move *a13(ATTACH_PROC),a2,L +; .ref yok_3_head_held_brk_anim +; movi yok_3_head_held_brk_anim,a0 +;;a0 = * animation script +;;a2 = * wrestler process +; .ref change_anim_anim +; calla change_anim_anim +; rets + + +****************************************************************************** +* +* PILE DRIVER (combo version) + + SUBR bam_combo_pile_driver_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here + .word ANI_ATTACK_ON, AMODE_PUPPET,32,25,42h,21 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,B3PG3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedxc + +;got him + .word ANI_INC_COMBO + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,B3PG3A+FR1,#puppet_tbl,0 + .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,20,B3PG3A+FR1,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR2,#puppet_tbl,1 + + WL ANI_SET_YVEL,70000h +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,5,B3PG3A+FR5,#puppet_tbl,4 + +;Mess with the physics! + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR3,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR4,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR5,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,2,B4CD3A+FR6,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,2,B3PG3A+FR9,#puppet_tbl,9 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 20,B3PG3A+FR9 + WLW ANI_SET_ZVEL,-10000h,AM_ABS + WL 3,B3PG3A+FR10 + WL 3,B3PG3A+FR11 + WL 3,B3PG3A+FR12 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedxc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 4,B3PG3A+FR1 + WL 4,B3PG3A+FR2 + WL 4,B3PG3A+FR3 + WL 4,B3PG3A+FR4 + + WL ANI_SET_YVEL,30000h + + WL 3,B3PG3A+FR5 + .word ANI_OFFSET,0,26,0 ;x,y,z + + WL 4,B4CD3A+FR3 + WL 4,B4CD3A+FR4 + WL 4,B4CD3A+FR5 + + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +;Maybe do a bounce + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 4,B4CD3A+FR6 + + + WL 4,B4CD3A+FR6 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WL 3,B3PG3A+FR9 + WL 3,B3PG3A+FR10 + WL 3,B3PG3A+FR11 + WL 3,B3PG3A+FR12 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H3BF3A,H3PP3X + .ref R3BF3A,R3GP3Z + .ref U4BF3Z,U3PP3X,U3GP3X + .ref Y3BF3A,Y3PP3Q,Y3FD3N + .ref S3BF3A,S3GP3X,S3OS3X,S3FD3X + .ref B4AM4A,B3PP3Q + .ref D3BF3A,D3PD3Z + .ref L3BF3B,L3GP3Z,L3FH3A,L3FD3B + +#Bret + LWWW H3BF3A+FR3,38,-13,0 + LWWW H3PP3X+FR1,18,-32,0 + LWWW H3PP3X+FR2,9,7,0 + LWWW H3PP3X+FR3,17,52,0 + LWWW H3PP3X+FR6,18,72,0 + LWWW H3PP3X+FR6,28,74,0 + LWWW H3PP3X+FR6,34,71,0 + LWWW H3PP3X+FR6,43,67,0 + LWWW H3PP3X+FR7,47,-9,0 + LWWW H3PP3X+FR8,42,-29,0 + .long 0 +#Razor + LWWW R3BF3A+FR9,39,-18,0 + LWWW R3GP3Z+FR1,25,-29,0 + LWWW R3GP3Z+FR2,21,-22,0 + LWWW R3GP3Z+FR4,34,58,0 + LWWW R3GP3Z+FR5,32,74,0 + LWWW R3GP3Z+FR5,42,77,0 + LWWW R3GP3Z+FR5,45,76,0 + LWWW R3GP3Z+FR5,51,67,0 + LWWW R3GP3Z+FR7,48,9,0 + LWWW R3GP3Z+FR8,40,-33,0 + .long 0 +#Taker + LWWW U4BF3Z+FR1,37,-12,0 + LWWW U3PP3X+FR1,23,-25,1 + LWWW U3PP3X+FR2,24,-15,1 + LWWW U3PP3X+FR3,20,17,1 + LWWW U3PP3X+FR5,25,60,1 + LWWW U3PP3X+FR6,38,86,1 + LWWW U3PP3X+FR6,41,86,1 + LWWW U3PP3X+FR6,47,77,1 + LWWW U3GP3X+FR1,52,-18,1 +; with a Y beneath the mat, which promptly results in his Y pos being +; set to match his GROUND_Y and his Yvel being zeroed. This sucks. + LWWW U3GP3X+FR2,51,-41+5,1 + .long 0 +#Yokozuna + LWWW Y3BF3A+FR11,46,-7,0 + LWWW Y3PP3Q+FR1,24,-22,0 + LWWW Y3PP3Q+FR3,28,-9,0 + LWWW Y3PP3Q+FR4,36,20,0 + LWWW Y3PP3Q+FR6,24,40,0 + LWWW Y3PP3Q+FR7,36,49,0 + LWWW Y3PP3Q+FR7,36,51,0 + LWWW Y3PP3Q+FR7,43,34,0 + LWWW Y3FD3N+FR2,52,-8,0 + LWWW Y3FD3N+FR3,48,-9,0 + .long 0 +#Shawn + LWWW S3BF3A+FR5,29,-27,0 + LWWW S3GP3X+FR1,30,-31,0 + LWWW S3GP3X+FR2,23,-19,0 + LWWW S3GP3X+FR3,28,19,0 + LWWW S3GP3X+FR4,22,65,0 + LWWW S3OS3X+FR8,43,66,1 + LWWW S3OS3X+FR8,43,66,1 + LWWW S3OS3X+FR8,47,57,1 + LWWW S3FD3X+FR2,57,-2,0 + LWWW S3GP3X+FR6,49,-30,0 + .long 0 +#BamBam + LWWW B4AM4A+FR5,41,-13,0 + LWWW B3PP3Q+FR1,23,-28,0 + LWWW B3PP3Q+FR2,23,-7,0 + LWWW B3PP3Q+FR3,29,33,0 + LWWW B3PP3Q+FR5,34,66,0 + LWWW B3PP3Q+FR6,35,74,0 + LWWW B3PP3Q+FR6,38,74,0 + LWWW B3PP3Q+FR6,46,68,0 + LWWW B3PP3Q+FR7,54,1,0 + LWWW B3FD3C+FR1,44,-23,0 + .long 0 +#Doink + LWWW D3BF3A+FR1,40,-14,0 + LWWW D3PD3Z+FR1,29,-36,1 + LWWW D3PD3Z+FR2,24,-12,1 + LWWW D3PD3Z+FR3,26,23,1 + LWWW D3PD3Z+FR4,19,63,1 + LWWW D3PD3Z+FR6,45,66,1 + LWWW D3PD3Z+FR6,47,62,1 + LWWW D3PD3Z+FR6,52,57,1 + LWWW D3PD3Z+FR8,52,-17,1 + LWWW D3PD3Z+FR9,48,-36,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3BF3B+FR1,27,-21,0 + LWWW L3GP3Z+FR1,25,-29,0 + LWWW L3GP3Z+FR2,23,-13,0 + LWWW L3GP3Z+FR4,29,36,0 + LWWW L3GP3Z+FR6,31,63,0 + LWWW L3GP3Z+FR6,42,64,0 + LWWW L3GP3Z+FR6,44,64,0 + LWWW L3GP3Z+FR6,53,54,0 + LWWW L3FH3A+FR6,51,-5,0 + LWWW L3FD3B+FR1,49,-30,0 + .long 0 + + +#rollout_tbl + REFLONG hrt_break_neck2_anim,rzr_break_neck2_anim + REFLONG und_break_neck2_anim + REFLONG yok_break_neck2_anim + REFLONG shn_break_neck2_anim,bam_break_neck2_anim + REFLONG dnk_break_neck2_anim + .long 0 + REFLONG lex_break_neck2_anim + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR bam_3_fake_hold_anim +;Head hold when standing next to player +;No collisions possible + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,8 + + WL 2,B4GH3B+FR1 + WL 2,B4GH3B+FR2 + WL 1,B4GH3B+FR3 + WL 1,B4GH3B+FR4 + WL 7,B4GH3B+FR5 + WL ANI_GOTO,#missed + + SUBR bam_3_head_hold2_anim +;Head hold when standing next to player +;No collisions possible + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,8 + + WL 2,B4GH3B+FR1 + WL 2,B4GH3B+FR2 + WL 1,B4GH3B+FR3 + WL 1,B4GH3B+FR4 + .word ANI_ATTACK_ON, AMODE_PUPPET_HDGRAB,28,82,59,21 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,7,B4GH3B+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + WL ANI_IFBLOCKED,#missed + WL ANI_GOTO,#gothim + + SUBR bam_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + .word ANI_STARTATTACK,AT_PUPPET,12 + + WL 2,B4GH3B+FR1 + WL 2,B4GH3B+FR2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 6,999,65,45,90000h,TGT_HEAD,72,105,0 + LEAPATOPP 9,999,40,45,90000h,TGT_HEAD,72,105,0 + + WL 2,B4GH3B+FR3 + WL 3,B4GH3B+FR4 + .word ANI_ATTACK_ON, AMODE_PUPPET,28,82,59,21 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,B4GH3B+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_IFBLOCKED,#missedb + +#gothim +;got him + + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,head_grab_time + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,B4GH3B+FR5,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + WWLLW ANI_SUPERSLAVE2,4,B4GH3B+FR5,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,4,B4GH3B+FR6,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,B4GH3B+FR7,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,B4GH3D+FR5,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,B4GH3D+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,B4GH3B+FR5 + WL 3,B4GH3B+FR4 + WL 3,B4GH3B+FR3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 2,B4GH3B+FR5 + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,B4GH3B+FR5 + WL 3,B4GH3B+FR4 + WL 3,B4GH3B+FR3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H2AH3A,H3HB3A,H3BF3A + .ref R2AH2D,R3HB3A,R3BF3A + .ref U4BF3A,U4BF3Z,U4AM4C + .ref Y3BF3A,Y3LB3A + .ref S4AH3D,S4BF3A +; .ref B4BF3A,B3HB3A,B3BF3C + .ref D3AK3A,D3BF3A + .ref L4AH4B,L3BF3A,L3BF3B +#Bret + LWWW H4AH3A+FR1,76,11,0 + LWWW H3HB3A+FR3,75,-15,0 + LWWW H3HB3A+FR2,65,-19,0 + LWWW H3BF3A+FR1,52,-34,0 + .long 0 +#Razor + LWWW R4AH4C+FR3,76,10,0 + LWWW R3HB3A+FR3,81,-16,0 + LWWW R3HB3A+FR2,78,-29,0 + LWWW R3BF3A+FR1,63,-36,0 + .long 0 +#Taker + LWWW U4AH3A+FR2,66,20,0 + LWWW U4BF3A+FR2,68,-2,0 + LWWW U4BF3A+FR3,42,-16,0 + LWWW U4BF3Z+FR5,58,-15,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR2,86,1,0 + LWWW Y4AM4A+FR1,88,-13,0 + LWWW Y4AM4A+FR2,79,-18,0 + LWWW Y3BF3A+FR1,60,-24,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,74,0,0 + LWWW S4AH3D+FR1,66,-10,0 + LWWW S4BF3A+FR2,65,-21,0 + LWWW S3BF3A+FR1,45,-35,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,68,5,0 + LWWW B4BF3A+FR1,77,-4,0 + LWWW B3HB3A+FR2,67,-32,0 + LWWW B3BF3C+FR5,57,-28,0 + .long 0 +#Doink + LWWW D3AH3B+FR1,62,7,0 + LWWW D3AK3A+FR3,61,-5,0 + LWWW D3AK3A+FR2,73,-18,0 + LWWW D3BF3A+FR2,55,-34,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,66,3,0 + LWWW L3BF3A+FR1,74,-8,1 + LWWW L3BF3A+FR2,71,-22,1 + LWWW L3BF3B+FR5,54,-32,0 + .long 0 + + +#headheld_tbl + REFLONG hrt_3_head_held_anim + REFLONG rzr_3_head_held_anim + REFLONG und_3_head_held_anim + REFLONG yok_3_head_held_anim + REFLONG shn_3_head_held_anim + REFLONG bam_3_head_held_anim + REFLONG dnk_3_head_held_anim + .long 0 + REFLONG lex_3_head_held_anim + + +#***************************************************************************** +* +* NECKBREAKER + + SUBR bam_neckbreaker2_anim +;Button charge +;Standing no vel + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,5 + WL 2,B3PG3A+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET,0,15,60,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,22,B3PG3A+FR1 + .word ANI_ATTACK_OFF + WL 2,B3PG3A+FR1 + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFBLOCKED,#missedb + + WL ANI_GOTO,#gothim + + SUBR bam_neckbreaker_run_anim +;Button charge released while running +;Sliding neck breaker + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .ref slaveanim_tbl + WLWW ANI_SHADOWTRAIL,BAMFRE_P,3,12 ;pal,rate,lifespan + + .word ANI_STARTATTACK,AT_PUPPET,8 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,70,70,40,90000h,TGT_CHEST,40,0,0 + WL ANI_CODE,no_bk_xvel + WL ANI_SET_YVEL,0000h + WL 2,B3PG3A+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET,0,15,55,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,12,B3PG3A+FR1 + .word ANI_ZERO_XZVELS + WL 4,B3PG3A+FR1 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + + WL ANI_GOTO,#gothim + + SUBR bam_neckbreaker_anim +;From head hold move +;From grabfling attempt + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + +;Do this to setup attach_proc +;Also allow misses! + + .word ANI_OFFSET,15,0,0 ;x,y,z + .word ANI_ATTACK_ON, AMODE_PUPPET,32,15,55,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,B3DD3C+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + +;Check to see if I have tried to pile drive Yokozuna! +#gothim + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST ;can go through ground + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_ADD_MOVE,MOVE_C_7,2,2 + + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + + WL ANI_SLAVEANIM,slaveanim_tbl + WWLLW ANI_SUPERSLAVE2,4,B3DD3C+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,B3DD3C+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,B3DD3C+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,B3DD3C+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,B3DD3C+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,B3DD3C+FR6,#puppet_tbl,5 + + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,80000h + + .word ANI_OFFSET,0,72,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,4,B3DD3C+FR7,#puppet_tbl,6 +;do message + + WWLLW ANI_SUPERSLAVE2,4,B3DD3C+FR9,#puppet_tbl,7 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + +;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_NECKBRKR,RD_NECKBRKR + WL ANI_CODE,CALL_SPECIAL_MOVE + + WWLLW ANI_SUPERSLAVE2,4,B3DD3C+FR10,#puppet_tbl,8 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,0,60000h,0 ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + + WL 4,B3DD3C+FR12 + WL ANI_CODE,#zero_butn + + .word ANI_SHADOWTRAIL,0 ;off + + WL ANI_CHANGEANIM,bam_faceup_getup_anim + +#missedb + .word ANI_SHADOWTRAIL,0 ;off + WL 25,B3PG3A+FR1 +#missed + .word ANI_SHADOWTRAIL,0 ;off + WL 15,B3PG3A+FR1 + WL ANI_CODE,#zero_butn + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#zero_butn +;Force player to start holding his button down starting at the end +;of the current buzz sequence. + + move *a13(PLYRNUM),a0 + X16 a0 + addi powerp_dtime1,a0 + clr a14 + move a14,*a0 + rets + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 1 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 1 ;spare + .word 0 ;lex + +#slambounce_tbl + REFLONG hrt_slambounce2_anim ;bret + REFLONG rzr_slambounce2_anim ;razor + REFLONG und_slambounce2_anim ;taker + REFLONG yok_slambounce2_anim ;yoko + REFLONG shn_slambounce2_anim ;shawn + REFLONG bam_slambounce2_anim ;bam + REFLONG dnk_slambounce2_anim ;doink + REFLONG und_slambounce2_anim ;spare + REFLONG lex_slambounce2_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3DD3B+FR1,59,-29,1 + LWWW H3DD3B+FR2,65,-22,1 + LWWW H3DD3B+FR3,52,-23,1 + LWWW H3DD3B+FR4,44,-13,1 + LWWW H3UC3X+FR2,26,-19,1 + LWWW H3UC3X+FR3,33,-15,1 + LWWW H3UC3X+FR4,53,-9,1 + LWWW H3UC3X+FR4,98,-11,1 + LWWW H3UC3Z+FR10,86,-32,1 + .long 0 +#Razor + LWWW R3DD3C+FR1,62,-27,1 + LWWW R3DD3C+FR2,61,-9,1 + LWWW R3DD3C+FR3,56,-9,1 + LWWW R3DD3C+FR6,54,-7,1 + LWWW R3FD3B+FR2,35,-21,1 + LWWW R3FD3B+FR3,43,-14,1 + LWWW R3FD3B+FR4,59,-10,1 + LWWW R3FD3B+FR5,99,-8,1 + LWWW R3AM3X+FR1,90,-55,1 + .long 0 +#Taker + LWWW U3DD3B+FR1,67,-26,1 + LWWW U3DD3B+FR2,65,-4,1 + LWWW U3DD3B+FR3,49,-8,1 + LWWW U3DD3B+FR4,47,-11,1 + LWWW U3DD3B+FR6,36,-28,1 + LWWW U3FD3X+FR3,39,-18,0 + LWWW U3FD3X+FR4,51,-7,0 + LWWW U3FD3X+FR5,92,13,0 + LWWW U3DD3X+FR9,95,-41,1 + .long 0 +#Yokozuna + LWWW Y3FD3B+FR2,64,-21,1 + LWWW Y3FD3B+FR3,53,-14,1 + LWWW Y3FD3B+FR4,35,-8,1 + LWWW Y3FD3B+FR5,42,10,1 + LWWW Y3FD3A+FR4,27,2,1 + LWWW Y3CP3B+FR2,44,-7,0 + LWWW Y3CP3B+FR3,63,-3,0 + LWWW Y3CP3B+FR4,107,-7,0 + LWWW Y3FD3Z+FR7,87,-27,1 + .long 0 +#Shawn + LWWW S3DD3B+FR1,64,-24,1 + LWWW S3DD3B+FR2,58,-7,1 + LWWW S3DD3B+FR3,43,-14,1 + LWWW S3DD3B+FR5,46,-14,1 + LWWW S3UC3X+FR2,19,-25,1 + LWWW S3UC3X+FR3,38,-26,1 + LWWW S3UC3X+FR4,55,-24,1 + LWWW S3UC3X+FR5,99,-6,1 + LWWW S3UC3Z+FR8,87,-31,1 + .long 0 +#BamBam + LWWW B3DD3D+FR1,65,-25,1 + LWWW B3DD3D+FR2,62,-4,1 + LWWW B3DD3D+FR3,49,3,1 + LWWW B3DD3D+FR4,47,8,1 + LWWW B3DD3D+FR5,34,-3,1 + LWWW B3DD3D+FR6,45,5,1 + LWWW B4UC3B+FR3,61,-17,1 + LWWW B3CP3B+FR1,112,-13,0 + LWWW B4UC3Z+FR8,96,-33,1 + .long 0 +#Doink + LWWW D3DD3C+FR1,60,-28,1 + LWWW D3DD3C+FR2,58,-12,1 + LWWW D3DD3C+FR3,45,-3,1 + LWWW D3DD3C+FR4,43,4,1 + LWWW D3UC3A+FR3,22,-9,1 + LWWW D3UC3A+FR4,37,-6,1 + LWWW D3UC3A+FR5,54,-6,1 + LWWW D3UC3A+FR6,105,-6,1 + LWWW D3SA3X+FR2,96,-50,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3DD3A+FR1,59,-29,1 + LWWW L3DD3A+FR2,59,-8,1 + LWWW L3DD3A+FR3,38,-21,1 + LWWW L3UC3X+FR2,47,-15,1 + LWWW L3UC3X+FR3,32,-28,1 + LWWW L3CP3X+FR2,48,-23,0 + LWWW L3CP3X+FR3,68,-8,0 + LWWW L3CP3X+FR4,116,-1,0 + LWWW L3UC3Z+FR10,90,-33,1 + .long 0 + +#***************************************************************************** +* +* THROW NAPALM ON GROUNDED OPPONENT + + SUBR bam_2_napalm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,B1TT5Z+FR2 + WL 2,B1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR bam_4_napalm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +#cont WL 4,B4NP3Z+FR1 + WL 4,B4NP3Z+FR2 + WL 4,B4NP3Z+FR3 + WL 4,B4NP3Z+FR4 + WL 4,B4NP3Z+FR5 + WL 4,B4NP3Z+FR6 + WL 4,B4NP3Z+FR7 + + .word ANI_ATTACK_ON,AMODE_NAPALM,12,-6,58,30 + WL 4,B4NP3Z+FR8 + .word ANI_ATTACK_OFF + WL 4,B4NP3Z+FR9 + WL 4,B4NP3Z+FR10 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +; +;#***************************************************************************** +;* +;* CHAIR STUFF +; +; .ref CHAIR_SWING +; +; SUBR bam_pkup_chair_anim +; +; .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +;#lp +; WL 4,B4WA4D+FR1 +; WL 4,B4WA4D+FR2 +; WL 4,B4WA4D+FR3 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,51,-5,1 ;image, x,y,zoff +; WL 4,B4WA4D+FR4 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,50,13,1 ;image, x,y,zoff +; WL 4,B4WA4D+FR5 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,51,30,1 ;image, x,y,zoff +; WL 4,B4WA4D+FR6 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR2,56,85,1 ;image, x,y,zoff +; WL 4,B4CF4Z+FR1 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,44,133,1 ;image, x,y,zoff +; WL 4,B4CF4Z+FR2 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-2,155,1 ;image, x,y,zoff +; WL 4,B4CF4Z+FR3 +; +;; .word ANI_SINGLESTEP +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-30,145,1 ;image, x,y,zoff +; WL 4,B4WA4C+FR2 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR5,-55,100,1 ;image, x,y,zoff +; WL 4,B4WA4C+FR3 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-33,139,1 ;image, x,y,zoff +; WL 4,B4WA4C+FR4 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,61,108,1 ;image, x,y,zoff +; WL 4,B4WA4C+FR5 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,71,34,1 ;image, x,y,zoff +; WL 4,B4WA4C+FR6 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR10,41,8,1 ;image, x,y,zoff +; WL 4,B4WA4C+FR7 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,77,51,1 ;image, x,y,zoff +; WL 4,B4WA4C+FR8 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,62,127,1 ;image, x,y,zoff +; WL 4,B4WA4C+FR9 +; +;; .word ANI_SINGLESTEP +; WLW ANI_ATTCHIMAGE,0,0 +; +; WL ANI_GOTO,#lp +; + +***************************************************************************** + + .end + \ No newline at end of file diff --git a/BAMSEQ4.ASM b/BAMSEQ4.ASM new file mode 100755 index 0000000..e46fa6e --- /dev/null +++ b/BAMSEQ4.ASM @@ -0,0 +1,209 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 12/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "bamseq4.asm" + .title "Bam Bam animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "bamimg.h" + .include "damage.equ" + .INCLUDE "SWEAT.EQU" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref DO_SCREAM,HIT_THE_MAT,SMALL_BOUNCE,CALL_MISSES + .ref am_I_dizzy,am_I_dead,ckzpos,start_run_anim + .ref bam_faceup_getup_anim,bam_fall_back_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GENERIC BOUNCE + SUBR bam_slamnobounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 1,B3CP3B+FR1 + WL 3,B3CP3B+FR1 + WL 4,B3CP3B+FR2 + WL 4,B3CP3B+FR3 + WL 4,B3CP3B+FR4 + WL 4,B3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,B3CP3B+FR7 + + WL 10,B3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + + + SUBR bam_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,B3CP3B+FR1 + WL ANI_CODE,ckzpos + WL ANI_SET_YVEL,040000h + WL 3,B3CP3B+FR1 + WL 4,B3CP3B+FR2 + WL 4,B3CP3B+FR3 + WL 4,B3CP3B+FR4 + WL 4,B3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,B3CP3B+FR7 + + WL 10,B3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + + SUBR bam_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,B4UC3Z+FR8 + WL ANI_CODE,ckzpos + WL 3,B4UC3Z+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + + WL 4,B3CP3B+FR1 + WL 4,B3CP3B+FR2 + WL 4,B3CP3B+FR3 + WL 4,B3CP3B+FR4 + WL 4,B3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,B3CP3B+FR7 + + WL 10,B3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + +#***************************************************************************** + + SUBR bam_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYD_SWEAT,SWEAT_PER,0 + .word ANI_OFFSET,0,52,0 + WL 6,B4UC3B+FR3 + WL 6,B4UC3B+FR4 + WL 6,B4UC3B+FR5 + WL 1,B4UC3B+FR6 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + + WL 3,B3FD3C+FR1 + WL 3,B3FD3C+FR2 + WL 3,B3FD3C+FR3 + WL 3,B3FD3C+FR4 + WL 3,B3FD3C+FR5 + + .word ANI_ZERO_XZVELS + + WL ANI_CODE,HIT_THE_MAT + WL 8,B3RL1A+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,bam_faceup_getup_anim + +#***************************************************************************** + + SUBR bam_arm_broken_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-38000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_HIT_REL + + WL ANI_CODE,DO_SCREAM + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,B4AH4A+FR2 + WL 4,B4AH4A+FR3 + WL 4,B4AH4A+FR4 + WL 4,B4AH4A+FR5 + WL 4,B4AH4A+FR6 + + WL 1,B4ST4Z+FR1 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,bam_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BAMST.H b/BAMST.H new file mode 100755 index 0000000..ccf485e --- /dev/null +++ b/BAMST.H @@ -0,0 +1,208 @@ +; +; Story lines for story 1 of bam +; +; Compressed string "THE REMAINS OF HIS FINAL" +bam_story1_line1 + .byte 075h,06ah,006h,0b3h,0e9h,08ah,0eah,04bh + .byte 007h,0f0h,019h,0a4h,02ah,01dh,09ch,0eah + .byte 02bh,0b6h,000h + .even + +; Compressed string "OPPONENTS COOLED DOWN TO" +bam_story1_line2 + .byte 070h,01ch,0c3h,0afh,0f9h,0d6h,074h,040h + .byte 0c2h,070h,06bh,096h,041h,009h,0e3h,06fh + .byte 050h,0c3h,000h + .even + +; Compressed string "SMOLDERING ASHES. HOWEVER, BAM" +bam_story1_line3 + .byte 0b4h,00bh,0b7h,0a5h,039h,0abh,02fh,01ah + .byte 088h,074h,06ah,0d2h,04fh,090h,0c2h,0b8h + .byte 079h,09bh,073h,013h,08ch,0a2h,00bh,000h + .even + +; Compressed string "BAM DID NOT. STILL FIRED UP" +bam_story1_line4 + .byte 0a3h,0e8h,006h,0a5h,05ah,006h,02fh,05ch + .byte 03fh,041h,040h,0d7h,06ah,0dbh,006h,0a7h + .byte 03ah,09bh,065h,060h,0c7h,000h + .even + +; Compressed string "FROM THE HEAT OF BATTLE WITH" +bam_story1_line5 + .byte 0e7h,00ch,0bbh,041h,09dh,09ah,041h,06ah + .byte 08ah,075h,000h,09fh,0c1h,028h,0d6h,075h + .byte 06bh,006h,0b8h,05ah,0a7h,000h + .even + +; Compressed string "EYES GLARING, CHEST HEAVING, AND" +bam_story1_line6 + .byte 0a6h,06eh,0d2h,001h,0dah,08ah,0b3h,0fah + .byte 0a2h,04dh,040h,0a6h,026h,05dh,007h,0a9h + .byte 029h,0deh,0eah,08bh,036h,081h,0f8h,096h + .byte 000h + .even + +; Compressed string "LICKS OF FLAME DANCING UP FROM" +bam_story1_line7 + .byte 0adh,04ah,0b2h,074h,000h,09fh,0c1h,0d9h + .byte 08ah,0aeh,019h,094h,0e2h,04bh,0aah,02fh + .byte 01ah,0d8h,071h,070h,0ceh,0b0h,00bh,000h + .even + +; Compressed string "HIS HANDS, BAM BAM TURNED TO THE" +bam_story1_line8 + .byte 0a9h,04ah,007h,0a9h,0f8h,096h,074h,013h + .byte 08ch,0a2h,01bh,08ch,0a2h,01bh,0d4h,0f6h + .byte 0fch,09ah,065h,050h,0c3h,041h,09dh,09ah + .byte 000h + .even + +; Compressed string "AUDIENCE AND DELIVERED A" +bam_story1_line9 + .byte 0a2h,05dh,0aah,0e6h,04bh,09ah,081h,0f8h + .byte 096h,041h,069h,0b6h,0eah,06dh,0ceh,066h + .byte 019h,088h,000h + .even + +; Compressed string "VIGILANT STARE. HIS EYES" +bam_story1_line10 + .byte 0b7h,08ah,0aah,0adh,0f8h,0d6h,001h,05dh + .byte 08bh,0b3h,0f9h,004h,041h,0aah,0d2h,081h + .byte 0a9h,09bh,034h,000h + .even + +; Compressed string "SCANNED BACK AND FORTH AND A" +bam_story1_line11 + .byte 034h,029h,0beh,0afh,059h,006h,0a3h,048h + .byte 0b2h,081h,0f8h,096h,0c1h,009h,0cfh,075h + .byte 01ah,088h,06fh,019h,088h,000h + .even + +; Compressed string "SINISTER SMILE CREPT ACROSS HIS" +bam_story1_line12 + .byte 0b4h,0fah,0aah,074h,06dh,0ceh,001h,0edh + .byte 0aah,0adh,019h,090h,0b3h,019h,0d7h,081h + .byte 048h,0ceh,030h,04dh,007h,0a9h,04ah,003h + .even + +; Compressed string "FACE. HE RAISED HIS HANDS AND" +bam_story1_line13 + .byte 0a7h,048h,09ah,04fh,010h,0a4h,066h,030h + .byte 08bh,02ah,06dh,096h,041h,0aah,0d2h,041h + .byte 02ah,0beh,025h,01dh,088h,06fh,009h,000h + .even + +; Compressed string "WITHOUT WARNING CAME A BLAST OF" +bam_story1_line14 + .byte 0b8h,05ah,0a7h,0b0h,05dh,007h,0b8h,038h + .byte 0bfh,0eah,08bh,006h,0a4h,0e8h,09ah,081h + .byte 018h,08ch,0adh,048h,0d7h,001h,07ch,002h + .even + +; Compressed string "FLAMES WHICH ENGULFED THE ENTIRE" +bam_story1_line15 + .byte 067h,02bh,0bah,026h,01dh,0e0h,0a9h,04ah + .byte 0a6h,081h,0f9h,0a2h,076h,07bh,09ah,065h + .byte 050h,0a7h,066h,060h,0beh,0b5h,03ah,09bh + .byte 000h + .even + +; Compressed string "STADIUM. THE AUDIENCE WAS" +bam_story1_line16 + .byte 074h,02dh,096h,0aah,0edh,03eh,041h,050h + .byte 0a7h,066h,020h,0dah,0a5h,06ah,0beh,0a4h + .byte 019h,0e0h,022h,00dh,000h + .even + +; Compressed string "CHARRED TO FLAKES, THE STADIUM" +bam_story1_line17 + .byte 064h,02ah,0ceh,0b3h,059h,006h,035h,01ch + .byte 09ch,0adh,0c8h,09ah,074h,013h,0d4h,0a9h + .byte 019h,0d0h,0b5h,058h,0aah,0b6h,00bh,000h + .even + +; Compressed string "WAS REDUCED TO PEBBLES, AND THE" +bam_story1_line18 + .byte 0b8h,048h,007h,0b3h,059h,0dah,0a4h,059h + .byte 006h,035h,01ch,0c4h,0e6h,038h,0b6h,026h + .byte 0ddh,004h,0e2h,05bh,006h,075h,06ah,002h + .even + +; Compressed string "WWF TITLE BELONGED TO BAM BAM" +bam_story1_line19 + .byte 038h,07eh,006h,0b5h,05ah,0b7h,066h,030h + .byte 09ah,02dh,0fch,0a2h,066h,019h,0d4h,070h + .byte 030h,08ah,06eh,030h,08ah,02eh,000h + .even + +; Compressed string "BIGELOW. THE UNDISPUTED" +bam_story1_line20 + .byte 0a3h,08ah,09ah,02dh,08ch,03fh,041h,050h + .byte 0a7h,066h,060h,0bfh,0a5h,04ah,0c7h,076h + .byte 06dh,096h,000h + .even + +; Compressed string "CHAMPION STOOD AMONG THE SILENT" +bam_story1_line21 + .byte 064h,02ah,0bah,0b1h,00ah,0bfh,001h,05dh + .byte 0c3h,070h,019h,088h,02eh,0fch,0a2h,041h + .byte 09dh,09ah,001h,0adh,0b6h,0e6h,05bh,003h + .even + +; Compressed string "RUINS OF THE NOW SHATTERED" +bam_story1_line22 + .byte 0b3h,0adh,0beh,074h,000h,09fh,041h,09dh + .byte 09ah,0c1h,00bh,0e3h,001h,09dh,08ah,075h + .byte 06dh,0ceh,066h,009h,000h + .even + +; Compressed string "AMPITHEATER, MASTER OF ALL HE" +bam_story1_line23 + .byte 0a2h,01bh,0abh,075h,06ah,08ah,0b5h,039h + .byte 037h,081h,02bh,0d2h,0b5h,039h,007h,0f0h + .byte 019h,088h,06dh,01bh,0a4h,026h,000h + .even + +; Compressed string "SURVEYED." +bam_story1_line24 + .byte 0b4h,03dh,0dfh,0a6h,06eh,096h,00fh,000h + .even + +; +; Story line table for Story 1 of bam +; +bam_story_tbl1 + .long bam_story1_line1 + .long bam_story1_line2 + .long bam_story1_line3 + .long bam_story1_line4 + .long bam_story1_line5 + .long bam_story1_line6 + .long bam_story1_line7 + .long bam_story1_line8 + .long bam_story1_line9 + .long bam_story1_line10 + .long bam_story1_line11 + .long bam_story1_line12 + .long bam_story1_line13 + .long bam_story1_line14 + .long bam_story1_line15 + .long bam_story1_line16 + .long bam_story1_line17 + .long bam_story1_line18 + .long bam_story1_line19 + .long bam_story1_line20 + .long bam_story1_line21 + .long bam_story1_line22 + .long bam_story1_line23 + .long bam_story1_line24 + .long 0 + +; +; Table of stories for bam +; +bam_stories + .long bam_story_tbl1 + diff --git a/BGNDEQU.H b/BGNDEQU.H new file mode 100755 index 0000000..70fbbc0 --- /dev/null +++ b/BGNDEQU.H @@ -0,0 +1,20 @@ +Wring .EQU 1972 +Hring .EQU 868 +Wbiopage .EQU 400 +Hbiopage .EQU 256 +Wwwfblank .EQU 400 +Hwwfblank .EQU 256 +Wslate .EQU 400 +Hslate .EQU 256 +Wchoice .EQU 400 +Hchoice .EQU 256 +Wendstory .EQU 400 +Hendstory .EQU 256 +Wwwfselbk .EQU 476 +Hwwfselbk .EQU 256 +WLADDER .EQU 999 +HLADDER .EQU 300 +WNTITLESC .EQU 403 +HNTITLESC .EQU 256 +WSPORTBK .EQU 1100 +HSPORTBK .EQU 400 diff --git a/BGNDPAL.ASM b/BGNDPAL.ASM new file mode 100755 index 0000000..80df2a6 --- /dev/null +++ b/BGNDPAL.ASM @@ -0,0 +1,345 @@ + .OPTION B,D,L,T + .include "BGNDTBL.GLO" + .DATA +NUGRND_P: ;PAL #0 + .word 255 ;pal size + .word 00H,0575FH,0533FH,04F1EH,04AFEH,046BDH,0469DH,0427CH,03E5CH,03A1BH + .word 035FBH,031DAH,0319AH,02D79H,02D59H,02D58H,02937H,02515H,02514H,020F3H + .word 020D1H,01CD0H,018CEH,0188DH,0148CH,0146AH,01069H,0C48H,0C46H,0825H + .word 0864H,03510H,0310EH,030EEH,030CDH,02CEEH,02CCFH,028CFH,02CCDH,028AFH + .word 02CCCH,02CADH,02CACH,028AEH,028ADH,0288EH,02C8BH,028ACH,0288CH,024ADH + .word 0288BH,0286BH,0248CH,0286AH,0248AH,0246AH,0208BH,0244AH,02469H,0206BH + .word 0208AH,02449H,0206AH,02429H,02448H,0204AH,02049H,02048H,02029H,02027H + .word 02008H,02007H,01C28H,02006H,02004H,01808H,01807H,01407H,04630H,04A10H + .word 04A0FH,04610H,0460FH,045EFH,045EEH,041EFH,041EEH,03DEFH,03DEEH,041CEH + .word 041CDH,03DCEH,03DCDH,039CEH,039CDH,03DAEH,03DADH,03DACH,039ADH,039ACH + .word 039ABH,0398DH,0398CH,0398BH,0358CH,0358BH,0358AH,0356CH,0356BH,0356AH + .word 0316BH,0316AH,03169H,0314BH,0314AH,03149H,02D4AH,02D49H,02D48H,02D2AH + .word 02D29H,02D28H,02928H,02907H,02508H,02507H,02107H,024E7H,024E6H,020E7H + .word 020E6H,01CE8H,01CE7H,01CE6H,018E7H,020C6H,01CC6H,01CC5H,018C6H,018A6H + .word 056FDH,04ABDH,052BAH,04A9AH,04E77H,0467AH,0425CH,0425AH,04A56H,04259H + .word 03E39H,03A38H,03619H,03E17H,03618H,03617H,035F7H,035F6H,031D8H,035D3H + .word 029B7H,02DB6H,039ADH,02596H,02D93H,02575H,02175H,02573H,02572H,02D6DH + .word 01D54H,02153H,01934H,01D33H,01D32H,01932H,02130H,01113H,01512H,01D10H + .word 010F1H,018F0H,014F0H,0CD0H,014EEH,010CEH,08AEH,010ADH,048EH,06DH + .word 088BH,06CH,04DH,0FH,0C6AH,04BH,0C88H,06AH,0CH,02AH + .word 09H,07H,03H,06F9FH,0733BH,06B3CH,06B1AH,066D9H,05ED8H,066B7H + .word 05A96H,05294H,04E73H,05655H,04E55H,05633H,04A52H,06593H,04631H,04A13H + .word 04210H,045F1H,03DEFH,0642DH,039CEH,0498DH,0602AH,035ADH,0318CH,05409H + .word 02D6BH,05405H,0392AH,04C25H,0294AH,05003H,02529H,04802H,038A6H,01D0CH + .word 02108H,03445H,01CE7H,03802H,018C6H,014AAH,02821H,014A5H,07FDDH,07FDDH + .word 07FDDH,07FDDH,07FDDH,07FDDH,07FDDH +STRS_P: ;PAL #1 + .word 64 ;pal size + .word 00H,00H,0421H,0420H,0842H,0841H,0C63H,014A4H,018C6H,018C5H + .word 01CE6H,01CE7H,02108H,01D08H,02107H,0294AH,01CC5H,02528H,0400H,0C41H + .word 0820H,0318BH,0318CH,02D6BH,035ADH,02D6AH,02949H,02529H,014A5H,010A5H + .word 0821H,0C62H,01084H,01083H,0C42H,01483H,01062H,039CDH,039CEH,03DEFH + .word 035ACH,020E7H,031ACH,02929H,0C61H,01063H,018A4H,01082H,01484H,0C83H + .word 010A4H,04631H,03DEEH,0420FH,04210H,0316AH,02D8BH,02D8CH,02948H,02D69H + .word 062F6H,02D49H,02D4AH,0296BH +CPOSTB_P: ;PAL #2 + .word 32 ;pal size + .word 00H,05B3BH,0531AH,04AD9H,04299H,03A78H,03237H,02A16H,021D6H,01DB5H + .word 01574H,01153H,0912H,04F2H,0B1H,090H,06FH,06EH,04DH,04DH + .word 04CH,02BH,02AH,029H,08H,07H,06H,06H,05H,04H + .word 03H,03H +MANLAW_P: ;PAL #3 + .word 61 ;pal size + .word 01CE7H,077C4H,0675BH,05AF8H,05AD6H,04ED6H,04AB6H,05ED4H,062B3H,04695H + .word 05672H,05E71H,04E51H,04254H,04232H,0462FH,05A50H,0460FH,05A2FH,03A12H + .word 03DF0H,04E0FH,059EEH,051EDH,03DCEH,039CEH,049CCH,031AEH,0498AH,0316CH + .word 04568H,0316AH,03148H,0294BH,04128H,03949H,0214AH,01D4CH,02D41H,03948H + .word 0D84H,0252AH,01949H,02907H,03507H,02CE5H,01908H,018C5H,024A3H,010C7H + .word 0CA5H,01883H,01861H,0863H,0462H,06AH,041H,0421H,028H,05H + .word 00H +SDWAL_P: ;PAL #4 + .word 34 ;pal size + .word 00H,0864H,0358CH,02D4AH,02508H,02507H,02107H,020E7H,020E6H,01CE7H + .word 01CE6H,01CC6H,01CC5H,018C6H,035ADH,0318CH,02D6BH,0294AH,02529H,02108H + .word 014A5H,02949H,02528H,018E6H,018C5H,014C6H,018A5H,018A4H,014A4H,010A4H + .word 01484H,01084H,01083H,0C84H +NUMAT_P: ;PAL #6 + .word 75 ;pal size + .word 00H,04F1EH,046BDH,0469DH,03E5CH,03A1BH,035FBH,031DAH,0319AH,02D79H + .word 02D58H,02937H,02515H,02514H,020F3H,020D1H,01CD0H,018CEH,0188DH,0148CH + .word 0146AH,07FDBH,07FBBH,07FBAH,07BBBH,07BBAH,07F99H,07B9AH,07B99H,0779AH + .word 07B78H,07F77H,07B79H,0777AH,07779H,07778H,07379H,07758H,07757H,07359H + .word 07358H,07755H,07737H,07735H,07337H,07336H,06F37H,06F36H,06B37H,06F16H + .word 06F15H,06B17H,06B16H,06B15H,06EF5H,066F5H,066F4H,06AD4H,066D4H,062D3H + .word 066B3H,062B3H,05EB2H,05E91H,05A92H,05A91H,05A71H,05671H,05670H,05650H + .word 05250H,04E2FH,04E0EH,02D59H,018AEH +TBUCK_P: ;PAL #7 + .word 60 ;pal size + .word 00H,02951H,0212DH,020EDH,020ECH,01CCBH,01CAAH,018ABH,018AAH,018A9H + .word 01488H,01487H,01469H,01066H,0C44H,0844H,0424H,0422H,03DEFH,035ADH + .word 0294AH,0252AH,02109H,014A5H,0C63H,0842H,07B9AH,07759H,07756H,06F12H + .word 06AF9H,06AF6H,06ACEH,05EB7H,06656H,05A51H,05A26H,04A2FH,04DF5H,055AFH + .word 06173H,035CCH,054F2H,0454EH,0454AH,04946H,0392EH,03926H,044CCH,044CAH + .word 02926H,030EDH,038CAH,024CAH,024A6H,024A3H,018A6H,01064H,01043H,0C43H +CPOSTT_P: ;PAL #8 + .word 32 ;pal size + .word 00H,0365AH,02E39H,02A19H,025F8H,021B7H,01D96H,01976H,01555H,01134H + .word 0D14H,08F3H,04D2H,0D1H,0B1H,090H,06FH,06EH,04DH,04DH + .word 04CH,02BH,02AH,029H,08H,07H,06H,06H,05H,04H + .word 03H,03H +DKCUR_P: ;PAL #9 + .word 38 ;pal size + .word 00H,024ABH,0248BH,0246AH,0208BH,0206AH,0204AH,02049H,01C4BH,01C4AH + .word 02028H,01C49H,01C29H,01C28H,01C08H,01829H,01C07H,01827H,01807H,01807H + .word 01806H,01408H,01806H,01407H,01806H,01805H,01407H,01406H,01405H,01406H + .word 01404H,01405H,01404H,01005H,01403H,0C05H,0C04H,0804H +WWFSKT_P: ;PAL #20 + .word 54 ;pal size + .word 00H,07687H,07267H,06E47H,06A27H,06207H,059E5H,055C6H,051A5H,04985H + .word 04164H,05EB7H,049D1H,0418FH,0444CH,0506EH,0308CH,060D1H,030EDH,02CD1H + .word 038D2H,044D3H,050D4H,05CD1H,05CB0H,054AFH,04C6DH,0404BH,03C4AH,03C6BH + .word 06B1AH,066D9H,062D7H,05A96H,05655H,05213H,04A12H,04DD2H,04D70H,0414BH + .word 0352AH,039D3H,04CEDH,02048H,030D1H,041B1H,0396EH,03027H,03427H,0354DH + .word 0312CH,02D0BH,028EAH,02825H +NTBCK_P: ;PAL #21 + .word 30 ;pal size + .word 00H,02951H,0212DH,020EDH,020ECH,01CCBH,01CAAH,018AAH,018A9H,01488H + .word 01487H,01066H,0C44H,0844H,0422H,03DEFH,0294AH,0252AH,02109H,014A5H + .word 0842H,05A51H,05A26H,0454EH,03926H,051E5H,04184H,03523H,05E46H,07FDDH +matl_P: ;PAL #22 + .word 75 ;pal size + .word 00H,046DCH,03E7BH,03E5BH,03E1AH,035F9H,035D9H,02DB8H,02D78H,02D57H + .word 02D36H,02515H,024F3H,024F2H,01CD1H,01CAFH,01CAFH,014ADH,0146CH,0146BH + .word 01449H,07799H,07779H,07778H,07379H,07378H,07757H,07358H,07357H,06F58H + .word 07336H,07735H,07337H,06F38H,06F37H,06F36H,06B37H,06F16H,06F15H,06B17H + .word 06B16H,06F13H,06EF5H,06EF3H,06AF5H,06AF4H,066F5H,066F4H,062F5H,066D4H + .word 066D3H,062D5H,062D4H,062D3H,066B3H,05EB3H,05EB2H,06292H,05E92H,05A91H + .word 05E71H,05A71H,05670H,0564FH,05250H,0524FH,0522FH,04E2FH,04E2FH,04E0FH + .word 04A0FH,045EEH,045EDH,02D37H,0148DH + +ingbPALS: + .long NUGRND_P + .long STRS_P + .long CPOSTB_P + .long MANLAW_P + .long SDWAL_P + .long NMAT_P + .long NUMAT_P + .long TBUCK_P + .long CPOSTT_P + .long DKCUR_P + .long FRTROW_P + .long SDCRWD_P + .long JOYDEW_P + .long JASON_P + .long FARCRD_P + .long VOGEL_P + .long FLASH_P + .long ALEX_P + .long MARNE_P + .long JAKE_P + .long WWFSKT_P + .long NTBCK_P + .long matl_P +LLOGOL_P: ;PAL #1 + .word 15 ;pal size + .word 00H,05697H,04E76H,04E55H,04634H,04613H,03DF2H,01CE8H,014C7H,014A6H + .word 0C85H,0422H,01H,00H,066FBH +LLOGOD_P: ;PAL #2 + .word 15 ;pal size + .word 00H,03DD1H,035B0H,0358FH,02D6EH,02D4DH,0252CH,0422H,01H,00H + .word 00H,00H,00H,00H,04E35H +MUG_P_P: ;PAL #3 + .word 31 ;pal size + .word 00H,07FDFH,07B7EH,07B5EH,076FDH,076BDH,0729CH,0725CH,06E1BH,06DDBH + .word 0699AH,0697AH,06539H,06519H,060D9H,060B8H,05897H,05095H,04C93H,04472H + .word 04070H,0386FH,0344DH,02C4CH,0284AH,02029H,01C27H,01405H,01004H,0802H + .word 0401H +MUGPSH_P: ;PAL #4 + .word 15 ;pal size + .word 00H,01486H,014C8H,0C85H,0C64H,0C43H,01CE9H,0422H,01CEAH,0421H + .word 0401H,0400H,0443H,0C86H,014A8H +BSELBK_P: ;PAL #5 + .word 16 ;pal size + .word 0400H,035EFH,02DCEH,02DADH,0258CH,0256BH,01D4AH,01D29H,01508H,014E7H + .word 0CC6H,0CA5H,0484H,0463H,0442H,0400H +MGP_R_P: ;PAL #6 + .word 31 ;pal size + .word 00H,07FDEH,07F9CH,07F5AH,07B18H,07AD6H,07694H,07252H,07210H,06DCEH + .word 06DADH,0696BH,06529H,06508H,060C6H,060A5H,058A5H,05484H,04C84H,04884H + .word 04463H,03C63H,03842H,03042H,02C42H,02821H,02021H,01C21H,01400H,01000H + .word 0C00H +WGFSWP: ;PAL #7 + .word 10 ;pal size + .word 0318CH,07FFFH,07BDEH,0739CH,06F7BH,06B5AH,06739H,05EF7H,05AD6H,00H + +KPGPALS: + .long CSELBK_P + .long LLOGOL_P + .long LLOGOD_P + .long MUG_P_P + .long MUGPSH_P + .long BSELBK_P + .long MGP_R_P + .long WGFSWP +CSELBK2P: ;PAL #0 + .word 22 ;pal size + .word 0400H,0443H,0C44H,0C65H,0422H,0C86H,0401H,0400H,0400H,014A7H + .word 01D2DH,014A8H,014C9H,014EAH,01D0BH,01D0CH,0256FH,0254EH,02D91H,02570H + .word 02DB2H,02DD3H +MGP_B_P: ;PAL #1 + .word 31 ;pal size + .word 00H,07BDFH,0739FH,06B7FH,0673FH,05F1EH,056DEH,052BEH,04A9DH,0425DH + .word 03E3DH,0361CH,031DCH,029BBH,0259BH,0217BH,01D59H,01937H,01515H,010F4H + .word 0CD2H,0CB0H,088FH,088DH,086CH,046AH,0449H,047H,026H,04H + .word 03H + +ELBKPALS: + .long CSELBK2P + .long MGP_B_P + .long MGP_R_P + .long CSELBK_P + .long CRPL_G_P + .long LLOGOL_P + .long LLOGOD_P +NUMATP2: ;PAL #0 + .word 75 ;pal size + .word 00H,04F1EH,046BDH,0469DH,03E5CH,03A1BH,035FBH,031DAH,0319AH,02D79H + .word 02D58H,02937H,02515H,02514H,020F3H,020D1H,01CD0H,018CEH,0188DH,0148CH + .word 0146AH,07FDBH,07FBBH,07FBAH,07BBBH,07BBAH,07F99H,07B9AH,07B99H,0779AH + .word 07B78H,07F77H,07B79H,0777AH,07779H,07778H,07379H,07758H,07757H,07359H + .word 07358H,07755H,07737H,07735H,07337H,07336H,06F37H,06F36H,06B37H,06F16H + .word 06F15H,06B17H,06B16H,06B15H,06EF5H,066F5H,066F4H,06AD4H,066D4H,062D3H + .word 066B3H,062B3H,05EB2H,05E91H,05A92H,05A91H,05A71H,05671H,05670H,05650H + .word 05250H,04E2FH,04E0EH,02D59H,018AEH +FARCRDP2: ;PAL #1 + .word 64 ;pal size + .word 00H,02D6BH,02108H,01CE7H,014A5H,01084H,0842H,04A31H,04A0EH,045CDH + .word 03DCEH,03CC6H,039ADH,0396AH,03928H,038A5H,03549H,0316BH,03127H,02D49H + .word 02D28H,02CC5H,02CC4H,02929H,02928H,028E6H,028A4H,024C5H,024A3H,020E6H + .word 020C5H,020A4H,02083H,01CC5H,018A4H,01883H,01862H,01062H,01041H,0820H + .word 0800H,014C4H,0427CH,01B7H,0173H,0254DH,0EDH,08AH,014C9H,018A7H + .word 0867H,010A6H,01086H,0886H,0C64H,0444H,0422H,014A4H,01083H,0822H + .word 01D08H,01102H,040C6H,06FDFH +JASONP2: ;PAL #2 + .word 54 ;pal size + .word 00H,02108H,01CE7H,014A5H,01084H,0842H,040A7H,03DCEH,03CC6H,039ADH + .word 038A5H,0358BH,03549H,0316BH,03127H,02D49H,02D28H,02CC5H,02CC4H,02928H + .word 028E6H,028A4H,020E6H,020C5H,020A4H,02083H,01CC5H,018A4H,01883H,01862H + .word 01062H,01041H,01021H,0821H,0800H,01523H,014C4H,0427CH,01B7H,0173H + .word 0EDH,08AH,018A7H,01086H,0886H,0C64H,0422H,018C5H,014A4H,01083H + .word 0822H,01102H,040C6H,06FDFH +CPOSTTP2: ;PAL #3 + .word 32 ;pal size + .word 00H,0365AH,02E39H,02A19H,025F8H,021B7H,01D96H,01976H,01555H,01134H + .word 0D14H,08F3H,04D2H,0D1H,0B1H,090H,06FH,06EH,04DH,04DH + .word 04CH,02BH,02AH,029H,08H,07H,06H,06H,05H,04H + .word 03H,03H +ROPERP2: ;PAL #4 + .word 16 ;pal size + .word 00H,07210H,06DADH,06529H,060C6H,05C84H,05821H,05000H,04800H,04400H + .word 03C00H,03800H,03000H,02800H,02400H,01C00H +ROPEWP2: ;PAL #5 + .word 16 ;pal size + .word 00H,07FFFH,0739CH,06B5AH,06739H,05EF7H,05AD6H,05294H,04A52H,04631H + .word 03DEFH,039CEH,0318CH,0294AH,02529H,01CE7H +ROPEBP2: ;PAL #6 + .word 16 ;pal size + .word 00H,04EFEH,0427DH,03A3CH,031FBH,02DD9H,02998H,02177H,01D36H,01915H + .word 014F3H,010B2H,0C91H,0870H,084FH,042EH +FLASH2P: ;PAL #7 + .word 42 ;pal size + .word 00H,02108H,01CE7H,014A5H,01084H,0842H,020C5H,020A4H,01CC5H,018A4H + .word 01883H,01862H,01062H,0821H,0800H,0C83H,0883H,0427CH,01B7H,0173H + .word 0254DH,0EDH,0252AH,08AH,014C9H,018A7H,0867H,014A6H,010A6H,01086H + .word 0886H,0C64H,0444H,0424H,0422H,018C5H,014A4H,01083H,0822H,01D08H + .word 014C6H,06FDFH + +ERPALS: + .long NUMATP2 + .long FARCRDP2 + .long JASONP2 + .long CPOSTTP2 + .long ROPERP2 + .long ROPEWP2 + .long ROPEBP2 + .long FLASH2P + .long VOGEL_P +STONE_P: ;PAL #3 + .word 256 ;pal size + .word 02108H,07FFFH,04EB5H,04675H,04654H,03631H,03615H,03E11H,03614H,035F6H + .word 03610H,035F5H,035F4H,035F3H,035F1H,035D4H,035D3H,02DD4H,035D1H,035B4H + .word 035B2H,029B4H,035B1H,02DB3H,035B0H,029B3H,02DB2H,029B2H,02DB1H,03593H + .word 029B1H,025B1H,02D93H,03192H,02D92H,02D91H,02592H,02991H,02D90H,02591H + .word 02990H,0318CH,0298FH,02573H,02D71H,0298DH,02572H,02571H,02970H,02D6FH + .word 02171H,02D6EH,02570H,0296FH,02170H,0256FH,0296EH,02D6BH,0256EH,02951H + .word 02D50H,02950H,02D4EH,02550H,02150H,0294EH,0214FH,0294DH,0254EH,0214EH + .word 02531H,0254DH,02930H,0294AH,01D4EH,0214DH,02D2EH,02530H,0214CH,02D2CH + .word 0252FH,01D30H,0212FH,0292DH,01D2FH,0212EH,0252DH,01D2EH,0212DH,0192EH + .word 0252BH,01D2DH,0250FH,0192DH,02529H,0290DH,0250EH,0192CH,01D0FH,0210EH + .word 02129H,01D2AH,0210DH,0190EH,0250BH,0210CH,0190DH,01D0CH,0210BH,0210AH + .word 0190CH,01D0BH,02108H,0190BH,01D0AH,024ECH,020EDH,0150BH,01D09H,024EAH + .word 0150AH,01CECH,020EBH,020EAH,018ECH,01CEBH,018EBH,01CEAH,014EBH,018CDH + .word 01CE9H,014EAH,01CE7H,018E9H,020CBH,018E8H,018CCH,020C9H,018CBH,014CBH + .word 01CC9H,018CAH,01CC7H,018C9H,0CCBH,010CAH,018C8H,014C9H,018C6H,010ABH + .word 01CA9H,0C8CH,01CA8H,014AAH,018A9H,010AAH,018A8H,014A9H,0C8BH,0CAAH + .word 018A7H,018A6H,014A8H,088BH,0CA9H,010A8H,046CH,01889H,014A7H,0CA8H + .word 010A7H,01489H,014A5H,01888H,01089H,010A6H,01887H,0C89H,010A5H,01886H + .word 01088H,046AH,01487H,01468H,0C69H,0C88H,01087H,01485H,0869H,0888H + .word 0C87H,01068H,01086H,0469H,0887H,01467H,0C68H,01084H,0868H,0C85H + .word 01083H,0468H,01465H,01463H,01066H,0448H,0467H,01065H,0C66H,01064H + .word 01046H,0866H,0C65H,0466H,0865H,01045H,0C64H,0C63H,0465H,0846H + .word 01044H,0446H,0464H,0C45H,01042H,0463H,0845H,0445H,0C44H,0C24H + .word 0844H,0C42H,0C04H,0843H,025H,044H,0824H,0443H,0804H,0424H + .word 0442H,024H,0823H,023H,0821H,0403H,0422H,03H,022H,0421H + .word 0402H,021H,02H,0401H,0400H,07FFFH +WWFA_P: ;PAL #4 + .word 256 ;pal size + .word 02108H,07FFFH,073BDH,07BB6H,0779DH,07399H,07B92H,07F8DH,04BDCH,07777H + .word 06B7CH,07376H,043DAH,07B6CH,07F4FH,07754H,07752H,06B5AH,07B66H,07B4EH + .word 07739H,0635DH,07F48H,07B62H,07B4AH,037B9H,06F38H,06739H,0772DH,07B40H + .word 07315H,06F16H,0573DH,07311H,06F12H,0533CH,0770BH,06318H,0770AH,05B19H + .word 03B7H,07B01H,06AF4H,04F1CH,072E8H,076E5H,056FAH,05AF7H,0396H,076E3H + .word 06ED0H,056F8H,076E0H,06ECCH,062D3H,046FBH,04EF8H,05AD7H,06EC9H,05ED4H + .word 046FAH,072C4H,076C1H,07278H,066CBH,072C0H,04ED8H,042DBH,04ED7H,04AD8H + .word 06EA6H,056B6H,06EA5H,06A8FH,04AB6H,03ABAH,07280H,06E82H,06E16H,05294H + .word 05A8EH,06A6BH,06E67H,05A71H,0369AH,04696H,06E60H,04E75H,0664CH,05271H + .word 05E4FH,04A74H,06A44H,06A42H,05650H,05E49H,02A79H,06628H,06627H,02679H + .word 05E2EH,06994H,06A04H,02E77H,04A52H,06A00H,0620AH,02A59H,06224H,03E55H + .word 02659H,0522EH,06206H,05A0FH,05E0BH,04A31H,02A56H,05E09H,065C5H,04631H + .word 04233H,06553H,016ACH,0560BH,059CFH,01E38H,059E7H,05DC5H,06581H,06580H + .word 05DA6H,03E10H,059ABH,04DECH,055E6H,03213H,060F1H,045EDH,01217H,06161H + .word 055A8H,05D65H,04DCAH,01DF5H,05585H,0DF7H,011F6H,031F0H,041CDH,05946H + .word 05C90H,03DCEH,045B0H,05944H,049ADH,09F6H,04DA7H,05184H,035CFH,019D5H + .word 05D01H,05D7H,05CE1H,03DABH,01D6H,0418FH,035AEH,05126H,0582EH,031AFH + .word 05124H,04588H,04982H,011B4H,039A6H,050ADH,0DB4H,04947H,05103H,025AFH + .word 04D24H,0454BH,025AEH,04943H,0416AH,04926H,03589H,04167H,04529H,054A2H + .word 0412CH,0594H,0298DH,0356CH,04145H,0316CH,048E4H,044CBH,03D43H,01D6EH + .word 04104H,048C1H,03946H,01D6DH,05042H,02D4BH,019A0H,0352BH,03CE6H,040C4H + .word 03905H,034EAH,01580H,038C6H,034C9H,0212BH,03106H,02909H,030C9H,034C3H + .word 030C7H,034A5H,03C61H,0340AH,01D08H,01922H,02CE1H,028E5H,024E7H,01521H + .word 03406H,03008H,01CE7H,024C6H,03403H,028A2H,02C07H,02C06H,018C6H,02807H + .word 02C04H,03001H,02408H,02804H,02082H,02406H,02006H,01C07H,01485H,01806H + .word 01804H,0C64H,01422H,01001H,0842H,0401H +MIDWAY_P: ;PAL #5 + .word 19 ;pal size + .word 02108H,06404H,05003H,03C02H,0284AH,0284AH,0284AH,0284AH,0284AH,0284AH + .word 0284AH,0284AH,0284AH,0284AH,0284AH,0284AH,0284AH,0284AH,0284AH + +WFPALS: + .long CSELBK_P + .long LAVA1_P + .long SMWWF_P + .long STONE_P + .long WWFA_P + .long MIDWAY_P +SPORTBK: ;PAL #0 + .word 29 ;pal size + .word 01108H,0401H,0C04H,0803H,01006H,01408H,0C05H,01007H,01409H,0402H + .word 0804H,0C06H,01008H,0C07H,0805H,0403H,0404H,01H,02H,028CDH + .word 024ACH,020ABH,01C8AH,01869H,01468H,01047H,0C46H,0C25H,0824H +SPORTBK_P: ;PAL #1 + .word 19 ;pal size + .word 00H,0401H,0C04H,0803H,01006H,01408H,0C05H,01007H,01409H,0402H + .word 0804H,0C06H,01008H,0C07H,0805H,0403H,0404H,01H,02H + +BKPALS: + .long SPORTBK + .long SPORTBK_P + \ No newline at end of file diff --git a/BGNDTBL.ASM b/BGNDTBL.ASM new file mode 100755 index 0000000..1690a2a --- /dev/null +++ b/BGNDTBL.ASM @@ -0,0 +1,1206 @@ + .OPTION B,D,L,T + .include "BGNDTBL.GLO" + .DATA + +ingbHDRS: + .word 12,9 ;x size, y size + .long 04618B33H ;address + .word 06000H ;dma ctrl + .word 72,31 + .long 04618DBBH + .word 05000H + .word 68,121 + .long 0461B953H + .word 07000H + .word 68,63 + .long 04629A4FH + .word 06000H + .word 224,72 + .long 0462FEB7H + .word 00H + .word 104,91 + .long 0464F6B7H + .word 00H + .word 56,75 + .long 04661E77H + .word 06000H + .word 76,55 + .long 046680E7H + .word 06000H + .word 60,67 + .long 0466E2DFH + .word 06000H + .word 28,86 + .long 04674117H + .word 06000H + .word 72,47 + .long 04677987H + .word 06000H + .word 96,51 + .long 0467C8D7H + .word 06000H + .word 108,129 + .long 04683B97H + .word 06000H + .word 76,32 + .long 0469821FH + .word 05000H + .word 48,47 + .long 0469B19FH + .word 06000H + .word 72,96 + .long 0469E67FH + .word 06000H + .word 20,28 + .long 046A887FH + .word 06000H + .word 92,173 + .long 046A959FH + .word 00H + .word 68,31 + .long 046C86FFH + .word 05000H + .word 76,64 + .long 046CB02BH + .word 00H + .word 60,177 + .long 04165D62H + .word 06000H + .word 100,71 + .long 046D482BH + .word 06000H + .word 144,92 + .long 046DEE93H + .word 06000H + .word 60,76 + .long 046F2513H + .word 06000H + .word 100,132 + .long 046F8FF3H + .word 06000H + .word 104,176 + .long 0470C553H + .word 00H + .word 124,113 + .long 04730153H + .word 00H + .word 48,71 + .long 04079EF6H + .word 06000H + .word 92,66 + .long 0474B733H + .word 06000H + .word 40,59 + .long 040FD0FEH + .word 06000H + .word 40,61 + .long 04754583H + .word 06000H + .word 124,176 + .long 04757EB3H + .word 00H + .word 20,17 + .long 047828B3H + .word 06000H + .word 72,172 + .long 047830ABH + .word 00H + .word 108,71 + .long 0479B3ABH + .word 06000H + .word 36,32 + .long 047A6763H + .word 06000H + .word 56,33 + .long 047A8263H + .word 06000H + .word 112,97 + .long 047AADB3H + .word 00H + .word 152,75 + .long 047C0133H + .word 00H + .word 64,68 + .long 047D6573H + .word 00H + .word 156,99 + .long 047DED73H + .word 00H + .word 224,109 + .long 047FD013H + .word 07000H + .word 68,69 + .long 04826BB3H + .word 06000H + .word 52,36 + .long 0482D9ABH + .word 06000H + .word 12,98 + .long 0483058BH + .word 05000H + .word 80,19 + .long 04831C83H + .word 06000H + .word 60,48 + .long 04834023H + .word 06000H + .word 36,63 + .long 048383A3H + .word 06000H + .word 108,67 + .long 0483B8CBH + .word 05000H + .word 48,36 + .long 0484461FH + .word 06000H + .word 116,75 + .long 04846E9FH + .word 06000H + .word 232,9 + .long 04853A87H + .word 06000H + .word 12,12 + .long 04856B77H + .word 05000H + .word 44,13 + .long 04856E47H + .word 06000H + .word 8,93 + .long 04857BAFH + .word 05000H + .word 36,31 + .long 04858A37H + .word 06000H + .word 28,61 + .long 0485A45FH + .word 05000H + .word 36,75 + .long 0485C5BBH + .word 00H + .word 152,99 + .long 04861A1BH + .word 00H + .word 172,6 + .long 0487F05BH + .word 06000H + .word 136,66 + .long 0488088BH + .word 05000H + .word 44,36 + .long 0488B7DBH + .word 06000H + .word 192,75 + .long 0488DCFBH + .word 00H + .word 48,35 + .long 048A9EFBH + .word 06000H + .word 120,109 + .long 048AC65BH + .word 07000H + .word 36,34 + .long 0423CB20H + .word 06000H + .word 228,39 + .long 048C2C03H + .word 06000H + .word 52,99 + .long 048CFC6BH + .word 00H + .word 56,66 + .long 048D9D4BH + .word 05000H + .word 96,111 + .long 048DE57BH + .word 06000H + .word 52,38 + .long 0427426CH + .word 06000H + .word 100,9 + .long 048EDF3BH + .word 06000H + .word 100,6 + .long 048EF453H + .word 06000H + .word 72,109 + .long 048F0263H + .word 06000H + .word 100,99 + .long 048FBA53H + .word 00H + .word 124,66 + .long 0490EFB3H + .word 05000H + .word 36,35 + .long 04918F8BH + .word 06000H + .word 44,37 + .long 0491AD13H + .word 06000H + .word 48,35 + .long 0491D33BH + .word 06000H + .word 44,36 + .long 0491FA9BH + .word 06000H + .word 104,66 + .long 04921FBBH + .word 05000H + .word 36,33 + .long 0492A5CBH + .word 06000H + .word 60,49 + .long 0492C1A3H + .word 06000H + .word 220,75 + .long 0493068BH + .word 00H + .word 76,68 + .long 04950A2BH + .word 00H + .word 44,33 + .long 0495ABABH + .word 06000H + .word 44,36 + .long 0413910AH + .word 06000H + .word 72,97 + .long 0495CDB3H + .word 00H + .word 248,36 + .long 0496A7F3H + .word 00H + .word 196,73 + .long 0497BEF3H + .word 00H + .word 44,34 + .long 04997E13H + .word 06000H + .word 104,92 + .long 0499A123H + .word 00H + .word 48,61 + .long 049ACC23H + .word 06000H + .word 36,122 + .long 049B10C3H + .word 06000H + .word 52,119 + .long 049B77B3H + .word 06000H +ringBLKS: + .word 04046H ;flags + .word 0,0 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 04044H,155,587,01H + .word 04050H,176,744,02H + .word 03F49H,183,626,03H + .word 06A40H,183,796,04H + .word 03F40H,186,764,05H + .word 04044H,198,618,06H + .word 04444H,201,524,07H + .word 04040H,201,691,01008H + .word 0414AH,203,687,09H + .word 03F44H,203,579,0AH + .word 03F44H,203,693,0BH + .word 0264BH,209,461,0CH + .word 04044H,219,614,0DH + .word 04444H,227,519,01H + .word 04050H,241,686,02H + .word 03F49H,248,626,03H + .word 04044H,254,646,0EH + .word 02144H,265,368,0FH + .word 04040H,272,687,01010H + .word 04444H,274,551,06H + .word 04040H,287,682,011H + .word 02144H,293,377,012H + .word 04444H,295,547,0DH + .word 03E40H,297,689,013H + .word 04049H,313,626,03H + .word 0284BH,316,430,014H + .word 04444H,330,579,0EH + .word 02144H,334,409,07H + .word 02144H,335,463,0AH + .word 04DH,336,305,015H + .word 044FH,338,376,016H + .word 02144H,359,404,01H + .word 02E4BH,363,542,017H + .word 02A4BH,374,446,018H + .word 04150H,376,567,02H + .word 04040H,378,679,019H + .word 04040H,383,566,01AH + .word 02C4CH,395,523,01BH + .word 06A40H,403,796,04H + .word 02144H,406,436,06H + .word 02144H,427,432,0DH + .word 024EH,434,310,01CH + .word 04150H,442,508,02H + .word 0244CH,450,477,01DH + .word 0640H,461,429,0101EH + .word 02144H,462,464,0EH + .word 04040H,480,679,01FH + .word 044FH,480,376,016H + .word 02144H,484,511,020H + .word 04040H,506,507,021H + .word 0841H,507,435,01022H + .word 01A4AH,517,475,023H + .word 04DH,529,305,015H + .word 0E4AH,553,475,024H + .word 04040H,578,582,025H + .word 04040H,578,507,026H + .word 06940H,586,689,027H + .word 04040H,589,756,028H + .word 06446H,594,580,01029H + .word 0640H,609,418,0101EH + .word 0A42H,611,440,0102AH + .word 0144AH,614,471,02BH + .word 044FH,622,376,016H + .word 06A40H,623,796,04H + .word 024EH,630,310,01CH + .word 06842H,640,585,02CH + .word 06455H,641,665,02DH + .word 06944H,648,700,0102EH + .word 06747H,649,585,02FH + .word 06940H,649,689,030H + .word 0104CH,669,471,031H + .word 0C43H,675,434,01032H + .word 06445H,691,669,033H + .word 06558H,716,577,034H + .word 06445H,719,587,035H + .word 06448H,719,497,036H + .word 04DH,721,305,015H + .word 0304AH,721,476,037H + .word 06545H,724,502,01038H + .word 04040H,727,507,039H + .word 04040H,744,756,03AH + .word 04040H,746,507,039H + .word 06445H,752,589,03BH + .word 06940H,757,689,03CH + .word 0324AH,762,471,03DH + .word 044FH,764,376,016H + .word 04040H,774,507,039H + .word 04040H,774,507,039H + .word 0841H,789,436,01022H + .word 04040H,799,507,03EH + .word 0344AH,812,472,03FH + .word 06446H,816,580,01040H + .word 024EH,818,311,01CH + .word 06A40H,842,796,04H + .word 0124AH,863,473,041H + .word 06944H,877,707,01042H + .word 04040H,893,756,043H + .word 06940H,893,689,044H + .word 0541H,894,382,045H + .word 01C4AH,906,469,046H + .word 06445H,921,669,047H + .word 06445H,922,589,048H + .word 06446H,933,580,01049H + .word 04040H,943,756,04AH + .word 06840H,947,689,04BH + .word 0184AH,966,472,04CH + .word 04DH,974,305,015H + .word 0841H,976,436,01022H + .word 044FH,977,376,016H + .word 04046H,980,0,00H + .word 04050H,987,507,03EH + .word 06456H,1000,580,01040H + .word 0164AH,1008,470,04DH + .word 06455H,1019,669,033H + .word 06455H,1019,589,03BH + .word 04050H,1040,756,03AH + .word 06940H,1047,689,04BH + .word 01A4AH,1055,475,023H + .word 06A40H,1061,796,04H + .word 024EH,1073,310,01CH + .word 0C43H,1080,432,01032H + .word 0364AH,1096,472,04EH + .word 0640H,1104,423,0101EH + .word 06456H,1118,580,01029H + .word 044FH,1119,376,016H + .word 01E4AH,1145,471,04FH + .word 04DH,1163,305,015H + .word 06940H,1170,689,050H + .word 06455H,1179,587,035H + .word 04040H,1179,507,039H + .word 06555H,1188,501,01038H + .word 04050H,1191,756,028H + .word 0384AH,1195,474,051H + .word 0A42H,1198,439,0102AH + .word 04040H,1207,507,039H + .word 06548H,1214,577,034H + .word 06458H,1215,497,036H + .word 06445H,1217,665,02DH + .word 06944H,1221,704,01052H + .word 0E4AH,1236,474,024H + .word 04040H,1241,507,053H + .word 04050H,1245,582,025H + .word 06757H,1252,585,02FH + .word 024EH,1260,310,01CH + .word 044FH,1261,376,016H + .word 0841H,1268,437,01022H + .word 06940H,1274,689,054H + .word 06A40H,1281,796,04H + .word 06852H,1285,585,02CH + .word 03A4AH,1297,474,055H + .word 04050H,1332,679,01FH + .word 0224AH,1345,471,056H + .word 04DH,1350,305,015H + .word 04040H,1357,582,057H + .word 0C43H,1376,432,01032H + .word 0324AH,1395,471,03DH + .word 044FH,1403,376,016H + .word 03F50H,1428,566,01AH + .word 04040H,1443,580,058H + .word 0304AH,1444,476,037H + .word 024EH,1450,310,01CH + .word 04050H,1454,679,019H + .word 04040H,1459,507,059H + .word 0404AH,1483,473,05AH + .word 04040H,1484,616,058H + .word 0A42H,1489,438,0102AH + .word 06A40H,1499,795,04H + .word 04040H,1524,652,058H + .word 02154H,1531,462,0EH + .word 02154H,1538,430,0DH + .word 04DH,1541,305,015H + .word 044FH,1545,376,016H + .word 04050H,1557,683,011H + .word 04040H,1563,687,058H + .word 02154H,1579,434,06H + .word 04040H,1603,723,058H + .word 02154H,1611,401,01H + .word 04140H,1629,507,02H + .word 02154H,1632,406,07H + .word 02154H,1634,461,0AH + .word 02144H,1635,508,020H + .word 04040H,1644,759,058H + .word 0245CH,1647,473,01DH + .word 04040H,1649,764,05BH + .word 02A5BH,1664,444,018H + .word 02154H,1681,374,012H + .word 04040H,1686,795,058H + .word 04140H,1694,565,02H + .word 02C5CH,1698,518,01BH + .word 02154H,1705,365,0FH + .word 02144H,1706,461,020H + .word 02E5BH,1716,541,017H + .word 06A40H,1720,795,04H + .word 04040H,1724,831,058H + .word 04140H,1759,623,02H + .word 04154H,1761,580,0EH + .word 0285BH,1764,429,014H + .word 04454H,1768,547,0DH + .word 04643H,1768,611,05CH + .word 04454H,1809,552,06H + .word 04643H,1813,585,05DH + .word 04140H,1822,681,02H + .word 0265BH,1823,460,0CH + .word 04454H,1841,519,01H + .word 04643H,1849,603,05EH + .word 04454H,1862,524,07H + .word 04454H,1864,579,0AH + .word 03C54H,1870,721,0AH + .word 04140H,1885,736,02H + .word 02144H,1887,626,020H + .word 0FFFFH ;End Marker +ringBMOD: + .word 1972,868,211 ;x size, y size, #blocks + .long ringBLKS, ingbHDRS, ingbPALS + +KPGHDRS: + .word 244,21 ;x size, y size + .long 049C08BBH ;address + .word 05F80H ;dma ctrl + .word 168,21 + .long 049C60F7H + .word 04480H + .word 204,133 + .long 043B952AH + .word 05000H + .word 204,5 + .long 044345EAH + .word 04000H + .word 204,119 + .long 043FA43AH + .word 05000H + .word 36,12 + .long 049C94A7H + .word 05280H + .word 12,16 + .long 049C9B10H + .word 04080H + .word 12,16 + .long 049C9E10H + .word 04000H + .word 20,16 + .long 049CA110H + .word 04080H + .word 12,16 + .long 049C9B10H + .word 04080H + .word 12,16 + .long 049CA530H + .word 04000H + .word 12,16 + .long 049CA830H + .word 04000H + .word 12,16 + .long 049CAB30H + .word 04080H + .word 12,16 + .long 049CAB30H + .word 04080H + .word 12,16 + .long 049CAE30H + .word 04000H + .word 8,16 + .long 049CB130H + .word 04000H + .word 16,16 + .long 049CB330H + .word 04000H + .word 12,16 + .long 049CB730H + .word 04000H + .word 8,16 + .long 049CB130H + .word 04000H + .word 16,16 + .long 049CB330H + .word 04000H + .word 12,16 + .long 049CB730H + .word 04000H + .word 12,16 + .long 049C9E10H + .word 04000H + .word 12,16 + .long 049CAE30H + .word 04000H + .word 12,16 + .long 049C9E10H + .word 04000H + .word 12,16 + .long 049CBA30H + .word 04080H + .word 12,16 + .long 049CBD30H + .word 04000H + .word 8,10 + .long 049CC030H + .word 04000H + .word 12,16 + .long 049CBA30H + .word 04080H + .word 12,16 + .long 049CC170H + .word 04000H + .word 12,17 + .long 049CC470H + .word 04000H + .word 12,16 + .long 049CBD30H + .word 04000H + .word 12,16 + .long 049CAE30H + .word 04000H + .word 12,16 + .long 049CBA30H + .word 04080H + .word 12,16 + .long 049CAB30H + .word 04080H + .word 196,133 + .long 043DA716H + .word 05000H + .word 196,119 + .long 04417E5EH + .word 05000H + .word 196,5 + .long 044355DAH + .word 04000H + .word 124,47 + .long 049CC7A0H + .word 05000H + .word 128,9 + .long 049D3974H + .word 04080H + .word 8,135 + .long 049D4B6CH + .word 04000H + .word 76,62 + .long 049D5C4CH + .word 04680H + .word 76,62 + .long 049D5C4CH + .word 04680H +biopageBLKS: + .word 04040H ;flags + .word 0,251 ;x,y + .word 03H ;pal5,pal4,hdr13-0 + .word 0140H,0,0,02H + .word 03746H,0,108,05H + .word 03746H,0,158,05H + .word 03746H,0,183,05H + .word 0140H,0,133,04H + .word 0F45H,0,44,01H + .word 03243H,0,40,00H + .word 03746H,0,133,05H + .word 04047H,38,106,06H + .word 04047H,38,131,07H + .word 04047H,38,156,08H + .word 04047H,38,181,09H + .word 04047H,46,181,0AH + .word 04047H,47,106,0BH + .word 04047H,49,131,0CH + .word 04047H,56,156,0DH + .word 04047H,58,106,0EH + .word 04047H,58,131,0FH + .word 04047H,58,181,010H + .word 04047H,63,131,011H + .word 04047H,65,156,012H + .word 04047H,69,106,013H + .word 04047H,70,156,014H + .word 01045H,73,44,01H + .word 04047H,74,131,015H + .word 04047H,74,181,016H + .word 04047H,81,156,017H + .word 04047H,85,131,018H + .word 04047H,85,181,019H + .word 04047H,87,109,01AH + .word 04047H,92,156,01BH + .word 04047H,95,134,01AH + .word 04047H,96,181,01CH + .word 04047H,102,159,01AH + .word 04047H,115,181,01DH + .word 04047H,126,181,01EH + .word 04047H,137,181,01FH + .word 04047H,148,181,020H + .word 04047H,157,181,021H + .word 04047H,169,184,01AH + .word 04040H,204,251,024H + .word 0140H,204,133,023H + .word 0140H,204,0,022H + .word 04053H,255,175,025H + .word 0A44H,258,222,026H + .word 0A44H,379,87,027H + .word 0A44H,379,36,027H + .word 0FFFFH ;End Marker +wwfblankBLKS: + .word 0140H ;flags + .word 0,0 ;x,y + .word 02H ;pal5,pal4,hdr13-0 + .word 0140H,0,133,04H + .word 04040H,0,251,03H + .word 0140H,204,0,022H + .word 0140H,204,133,023H + .word 04040H,204,251,024H + .word 0FFFFH ;End Marker +slateBLKS: + .word 0140H ;flags + .word 0,133 ;x,y + .word 04H ;pal5,pal4,hdr13-0 + .word 0140H,0,0,02H + .word 04040H,0,251,03H + .word 04041H,17,12,028H + .word 04042H,17,178,029H + .word 04041H,157,12,028H + .word 04042H,157,178,029H + .word 0140H,204,133,023H + .word 0140H,204,0,022H + .word 04040H,204,251,024H + .word 04041H,298,12,028H + .word 04042H,298,178,029H + .word 0FFFFH ;End Marker +choiceBLKS: + .word 04040H ;flags + .word 0,251 ;x,y + .word 03H ;pal5,pal4,hdr13-0 + .word 0140H,0,133,04H + .word 0140H,0,0,02H + .word 04041H,13,61,028H + .word 04042H,13,153,029H + .word 04040H,204,251,024H + .word 0140H,204,133,023H + .word 0140H,204,0,022H + .word 04042H,309,153,029H + .word 04041H,309,61,028H + .word 0FFFFH ;End Marker +endstoryBLKS: + .word 03243H ;flags + .word 0,40 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 0F45H,0,44,01H + .word 0140H,0,0,02H + .word 04040H,0,251,03H + .word 0140H,0,133,04H + .word 01045H,73,44,01H + .word 0140H,204,0,022H + .word 0140H,204,133,023H + .word 04040H,204,251,024H + .word 04053H,255,175,025H + .word 0A44H,258,222,026H + .word 0A44H,379,36,027H + .word 0A44H,379,87,027H + .word 0FFFFH ;End Marker +biopageBMOD: + .word 400,256,48 ;x size, y size, #blocks + .long biopageBLKS, KPGHDRS, KPGPALS +wwfblankBMOD: + .word 400,256,6 ;x size, y size, #blocks + .long wwfblankBLKS, KPGHDRS, KPGPALS +slateBMOD: + .word 400,256,12 ;x size, y size, #blocks + .long slateBLKS, KPGHDRS, KPGPALS +choiceBMOD: + .word 400,256,10 ;x size, y size, #blocks + .long choiceBLKS, KPGHDRS, KPGPALS +endstoryBMOD: + .word 400,256,13 ;x size, y size, #blocks + .long endstoryBLKS, KPGHDRS, KPGPALS + +ELBKHDRS: + .word 76,62 ;x size, y size + .long 049D5C4CH ;address + .word 04680H ;dma ctrl + .word 76,62 + .long 049D5C4CH + .word 04680H + .word 204,133 + .long 043B952AH + .word 05000H + .word 204,119 + .long 043FA43AH + .word 05000H + .word 204,5 + .long 044345EAH + .word 04000H + .word 128,9 + .long 049D8AC4H + .word 04080H + .word 8,135 + .long 049D9CBCH + .word 04000H + .word 124,61 + .long 049DAD9CH + .word 05000H + .word 124,145 + .long 049E4158H + .word 05000H + .word 40,44 + .long 049FA084H + .word 05080H + .word 196,133 + .long 043DA716H + .word 05000H + .word 196,119 + .long 04417E5EH + .word 05000H + .word 196,5 + .long 044355DAH + .word 04000H + .word 124,145 + .long 049E4158H + .word 05000H + .word 124,61 + .long 049DAD9CH + .word 05000H +wwfselbkBLKS: + .word 0545H ;flags + .word 0,13 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 0546H,0,177,01H + .word 0143H,44,0,02H + .word 0143H,44,133,03H + .word 04043H,44,251,04H + .word 0240H,54,236,05H + .word 0243H,54,101,06H + .word 0343H,54,36,06H + .word 0A51H,59,175,07H + .word 0A51H,59,30,08H + .word 0545H,200,7,00H + .word 0546H,200,186,01H + .word 04044H,204,180,09H + .word 04044H,204,90,09H + .word 04044H,204,45,09H + .word 04044H,204,135,09H + .word 04044H,244,180,09H + .word 04044H,244,135,09H + .word 04044H,244,90,09H + .word 04044H,244,45,09H + .word 0143H,248,0,0AH + .word 0143H,248,133,0BH + .word 04043H,248,251,0CH + .word 0A42H,300,30,0DH + .word 0A42H,300,175,0EH + .word 0240H,304,236,05H + .word 0545H,400,13,00H + .word 0546H,400,177,01H + .word 0253H,421,101,06H + .word 0353H,421,36,06H + .word 0FFFFH ;End Marker +wwfselbkBMOD: + .word 476,256,30 ;x size, y size, #blocks + .long wwfselbkBLKS, ELBKHDRS, ELBKPALS + +ERHDRS: + .word 92,66 ;x size, y size + .long 049FC2C8H ;address + .word 06980H ;dma ctrl + .word 100,40 + .long 04A03198H + .word 07000H + .word 72,61 + .long 04A09EF8H + .word 06580H + .word 144,92 + .long 04A0E610H + .word 06080H + .word 192,2 + .long 04A21B20H + .word 04000H + .word 192,2 + .long 04A21B20H + .word 04000H + .word 192,2 + .long 04A21B20H + .word 04000H + .word 100,71 + .long 04A22120H + .word 06980H + .word 12,84 + .long 04A2A9C8H + .word 05080H +LADDERBLKS: + .word 05841H ;flags + .word 0,118 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 06440H,8,260,01H + .word 05647H,9,71,02H + .word 05948H,10,183,03H + .word 05A54H,68,190,04H + .word 05A55H,68,214,05H + .word 05A56H,68,236,06H + .word 05742H,84,112,07H + .word 05647H,93,10,02H + .word 06440H,107,260,01H + .word 05647H,138,96,02H + .word 05948H,151,183,03H + .word 05841H,177,117,00H + .word 05647H,201,30,02H + .word 06440H,206,260,01H + .word 05A43H,260,176,08H + .word 05742H,264,112,07H + .word 05A46H,269,236,06H + .word 05A44H,270,190,04H + .word 05A45H,270,214,05H + .word 05647H,280,70,02H + .word 05948H,292,183,03H + .word 06440H,305,260,01H + .word 05647H,342,5,02H + .word 05841H,364,117,00H + .word 06440H,404,260,01H + .word 05647H,408,80,02H + .word 05948H,433,183,03H + .word 05742H,454,112,07H + .word 05A56H,461,236,06H + .word 05A54H,462,190,04H + .word 05A55H,462,214,05H + .word 05647H,502,52,02H + .word 06440H,503,260,01H + .word 05841H,552,117,00H + .word 05647H,570,100,02H + .word 05948H,574,183,03H + .word 05647H,597,16,02H + .word 06440H,602,260,01H + .word 05742H,637,112,07H + .word 05647H,643,82,02H + .word 05A43H,653,176,08H + .word 05A45H,662,214,05H + .word 05A46H,662,236,06H + .word 05A44H,662,190,04H + .word 06440H,701,260,01H + .word 05647H,711,28,02H + .word 05948H,716,182,03H + .word 05841H,726,116,00H + .word 05647H,774,67,02H + .word 05647H,790,0,02H + .word 06440H,800,260,01H + .word 05742H,809,111,07H + .word 04040H,899,260,01H + .word 0FFFFH ;End Marker + +;file LADDER blocks not in any module +; .word 04056H ;flags +; .word 1388,337 ;x,y +; .word 06H ;pal5,pal4,hdr13-0 +; .word 04054H,1389,291,04H +; .word 04055H,1389,315,05H +; .word 04040H,1438,361,01H +; .word 04040H,1537,361,01H +; .word 04043H,1580,277,08H +; .word 04044H,1590,291,04H +; .word 04045H,1590,315,05H +; .word 04046H,1590,337,06H +; .word 04040H,1636,361,01H +; .word 04040H,1735,361,01H +; .word 0FFFFH ;End Marker +LADDERBMOD: + .word 999,300,54 ;x size, y size, #blocks + .long LADDERBLKS, ERHDRS, ERPALS + +WFHDRS: + .word 204,119 ;x size, y size + .long 043FA43AH ;address + .word 05000H ;dma ctrl + .word 204,133 + .long 043B952AH + .word 05000H + .word 204,5 + .long 044345EAH + .word 04000H + .word 108,42 + .long 04A2BCD0H + .word 0D80H + .word 44,90 + .long 04A30DB0H + .word 0580H + .word 76,48 + .long 04A35D40H + .word 0A80H + .word 200,77 + .long 04A37DC0H + .word 0F80H + .word 88,81 + .long 04A52668H + .word 04E80H + .word 36,24 + .long 04A54B70H + .word 04580H + .word 64,37 + .long 04A54FF0H + .word 0980H + .word 48,79 + .long 04A56DF8H + .word 0580H + .word 96,50 + .long 04A5CB30H + .word 0E80H + .word 120,102 + .long 04A611A0H + .word 04B80H + .word 52,63 + .long 04A64CC0H + .word 0180H + .word 56,47 + .long 04A6AB50H + .word 0A80H + .word 104,55 + .long 04A6C048H + .word 0D80H + .word 96,92 + .long 04A71A40H + .word 0B80H + .word 96,35 + .long 04A7A540H + .word 0380H + .word 100,71 + .long 04A7E818H + .word 04D80H + .word 124,16 + .long 04A81288H + .word 02080H + .word 60,63 + .long 04A821BEH + .word 080H + .word 92,52 + .long 04A894C6H + .word 07480H + .word 104,102 + .long 04A8FC87H + .word 04B80H + .word 92,55 + .long 04A938A7H + .word 0680H + .word 56,60 + .long 04A99F1FH + .word 080H + .word 52,55 + .long 04AA055FH + .word 080H + .word 96,47 + .long 04AA5637H + .word 0680H + .word 192,67 + .long 04AAD1DFH + .word 080H + .word 196,119 + .long 04417E5EH + .word 05000H + .word 196,133 + .long 043DA716H + .word 05000H + .word 196,5 + .long 044355DAH + .word 04000H + .word 144,92 + .long 04AC5E7FH + .word 04F80H + .word 80,79 + .long 04ACD91FH + .word 0A80H + .word 48,66 + .long 04AD2817H + .word 0580H + .word 64,70 + .long 04AD7A47H + .word 0280H + .word 44,61 + .long 04ADCC17H + .word 0180H + .word 88,55 + .long 04AE1C67H + .word 04A80H + .word 80,57 + .long 04AE3C9FH + .word 0A80H + .word 56,61 + .long 04AE7607H + .word 0480H + .word 48,77 + .long 04AED74FH + .word 0480H +NTITLESCBLKS: + .word 0140H ;flags + .word 0,133 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 0140H,0,0,01H + .word 04040H,0,251,02H + .word 04043H,0,84,03H + .word 04043H,0,126,04H + .word 04043H,2,26,05H + .word 04B44H,4,101,06H + .word 04041H,7,154,07H + .word 04041H,8,90,08H + .word 04043H,28,205,09H + .word 04043H,44,126,0AH + .word 04043H,74,59,0BH + .word 04041H,77,32,0CH + .word 04043H,90,126,0DH + .word 04043H,96,17,0EH + .word 04043H,97,189,0FH + .word 04043H,106,4,010H + .word 04043H,107,92,011H + .word 04041H,124,155,012H + .word 04045H,139,201,013H + .word 04043H,140,126,014H + .word 04B42H,158,25,015H + .word 04041H,196,35,016H + .word 04043H,199,182,017H + .word 04043H,200,126,018H + .word 04043H,200,29,019H + .word 04043H,200,82,01AH + .word 04B44H,201,102,01BH + .word 0140H,204,133,01CH + .word 0140H,204,0,01DH + .word 04040H,204,251,01EH + .word 04041H,229,134,01FH + .word 04043H,251,4,020H + .word 04043H,255,126,021H + .word 04043H,294,60,022H + .word 04043H,300,125,023H + .word 04041H,315,71,024H + .word 04043H,320,187,025H + .word 04043H,344,126,026H + .word 04043H,355,53,027H + .word 0FFFFH ;End Marker +NTITLESCBMOD: + .word 403,256,40 ;x size, y size, #blocks + .long NTITLESCBLKS, WFHDRS, WFPALS + +BKHDRS: + .word 100,100 ;x size, y size + .long 04AF2BE7H ;address + .word 05000H ;dma ctrl + .word 100,109 + .long 04AFEF37H + .word 05F80H +SPORTBKBLKS: + .word 03E51H ;flags + .word 0,0 ;x,y + .word 00H ;pal5,pal4,hdr13-0 + .word 03E51H,0,100,00H + .word 03E51H,0,200,00H + .word 03E51H,0,300,00H + .word 03F40H,25,9,01H + .word 03F40H,25,142,01H + .word 03F40H,25,276,01H + .word 03E51H,100,300,00H + .word 03E51H,100,200,00H + .word 03E51H,100,100,00H + .word 03E51H,100,0,00H + .word 03F40H,126,277,01H + .word 03F40H,144,142,01H + .word 03F40H,146,8,01H + .word 03E51H,200,0,00H + .word 03E51H,200,100,00H + .word 03E51H,200,200,00H + .word 03E51H,200,300,00H + .word 03F40H,230,277,01H + .word 03F40H,265,140,01H + .word 03F40H,266,8,01H + .word 03E51H,300,300,00H + .word 03E51H,300,200,00H + .word 03E51H,300,100,00H + .word 03E51H,300,0,00H + .word 03F40H,350,277,01H + .word 03F40H,370,139,01H + .word 03F40H,386,8,01H + .word 03E51H,400,0,00H + .word 03E51H,400,100,00H + .word 03E51H,400,200,00H + .word 03E51H,400,300,00H + .word 03F40H,472,277,01H + .word 03F40H,488,8,01H + .word 03F40H,493,140,01H + .word 03E51H,500,300,00H + .word 03E51H,500,200,00H + .word 03E51H,500,100,00H + .word 03E51H,500,0,00H + .word 03F40H,596,277,01H + .word 03E51H,600,0,00H + .word 03E51H,600,100,00H + .word 03E51H,600,200,00H + .word 03E51H,600,300,00H + .word 03F40H,611,141,01H + .word 03F40H,611,8,01H + .word 03E51H,700,300,00H + .word 03E51H,700,200,00H + .word 03E51H,700,100,00H + .word 03E51H,700,0,00H + .word 03F40H,720,277,01H + .word 03F40H,733,141,01H + .word 03F40H,734,8,01H + .word 03E51H,800,0,00H + .word 03E51H,800,100,00H + .word 03E51H,800,200,00H + .word 03E51H,800,300,00H + .word 03F40H,852,277,01H + .word 03F40H,856,144,01H + .word 03F40H,857,8,01H + .word 03E51H,900,300,00H + .word 03E51H,900,200,00H + .word 03E51H,900,100,00H + .word 03E51H,900,0,00H + .word 03F40H,973,277,01H + .word 03F40H,979,8,01H + .word 03F40H,990,144,01H + .word 03E51H,1000,0,00H + .word 03E51H,1000,100,00H + .word 03E51H,1000,200,00H + .word 03E51H,1000,300,00H + .word 0FFFFH ;End Marker +SPORTBKBMOD: + .word 1100,400,71 ;x size, y size, #blocks + .long SPORTBKBLKS, BKHDRS, BKPALS + \ No newline at end of file diff --git a/BKUP.BAT b/BKUP.BAT new file mode 100755 index 0000000..c3c8cfb --- /dev/null +++ b/BKUP.BAT @@ -0,0 +1,32 @@ +@echo Backing up DOC directory... +c: +cd \video\doc +i: +cd \video\doc +xcopy c:*.doc /m /v +@echo Backing up Wrestlemania... +c: +cd \video\wwf +i: +cd \video\wwf +xcopy c:*.asm /m /v +xcopy c:*.equ /m /v +xcopy c:*.h /m /v +xcopy c:makefile /m /v +xcopy c:make.ini /m /v +xcopy c:*.cmd /m /v +xcopy c:*.bat /m /v +xcopy c:*.doc /m /v +c: +cd img +i: +cd img +xcopy c:*.bat /m /v +xcopy c:*.lod /m /v +xcopy c:*.ld1 /m /v +xcopy c:*.bdb /m /v +xcopy c:*.bdd /m /v +xcopy c:*.img /m /v +ww + + \ No newline at end of file diff --git a/BRET.ASM b/BRET.ASM new file mode 100755 index 0000000..4aa8d51 --- /dev/null +++ b/BRET.ASM @@ -0,0 +1,3010 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/24/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "bret.asm" + .title "Bret Hart specific game code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "jjxm.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" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref ADD_IF_SILENT,bounce_off_ropes,change_anim1,change_anim1a + .ref change_anim2a,check_secret_moves + .ref CLIMB_ROPES,climb_turnbuckle,do_taunt,execute_walk + .ref get_opp_plyrmode,JUMP_ROPES,PCNT,mode_dead,get_opp_process + .ref keep_attached,master_keep_attached,mode_choking + .ref mode_inair2,process_ptrs,ck_ignore,mode_puppet + .ref DO_REVERSAL,DO_REVERSAL_MESS,can_pin + .ref FIND_AND_KILL_ENDLESS,ck_teammate_pin,raisearm_check + .ref CHECK_COMBO_GO,drone_change_back,set_raisearm_bit + .ref hrt_combo_punch_anim,hrt_combo_kick_anim + .ref BLOCK_WOOSH,get_powerp_dtime,round_award + .ref blocking_off,std_taunt,std_walk_fast + .ref hyper_speed_on + .ref in_finish_move + .ref p1rounds,p2rounds + .if NUM_BRET_FINISHES + .ref hrt_finish1_move + .if NUM_BRET_FINISHES > 1 + .ref hrt_finish2_move + .endif + .endif + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref hrt_3_face_driver2_anim + .ref wres_slave_anim,hrt_zip_anim,start_run_anim + + .ref hrt_4_block_anim + + .ref hrt_stand2_anim,hrt_stand8_anim + .ref hrt_stand4_anim,hrt_stand6_anim + .ref hrt_torso2_anim,hrt_torso8_anim + .ref hrt_torso4_anim,hrt_torso6_anim + + .ref hrt_2_to_4_turn_anim,hrt_8_to_6_turn_anim ;stand + .ref hrt_4_to_2_turn_anim,hrt_6_to_8_turn_anim + .ref hrt_4_to_6_turn_anim,hrt_6_to_4_turn_anim + .ref hrt_2_to_8_turn_anim,hrt_8_to_2_turn_anim + .ref hrt_4_to_8_turn_anim,hrt_6_to_2_turn_anim + .ref hrt_2_to_6_turn_anim,hrt_8_to_4_turn_anim + + .ref hrt_2_to_4_turn2_anim,hrt_8_to_6_turn2_anim ;torso + .ref hrt_4_to_2_turn2_anim,hrt_6_to_8_turn2_anim + .ref hrt_4_to_6_turn2_anim,hrt_6_to_4_turn2_anim + .ref hrt_2_to_8_turn2_anim,hrt_8_to_2_turn2_anim + .ref hrt_4_to_8_turn2_anim,hrt_6_to_2_turn2_anim + .ref hrt_2_to_6_turn2_anim,hrt_8_to_4_turn2_anim + + .ref hrt_walk1_f2_anim,hrt_walk2_f2_anim,hrt_walk4_f2_anim + .ref hrt_walk5_f2_anim,hrt_walk6_f2_anim,hrt_walk8_f2_anim + + .ref hrt_walk1_f4_anim,hrt_walk2_f4_anim,hrt_walk4_f4_anim + .ref hrt_walk5_f4_anim,hrt_walk6_f4_anim,hrt_walk8_f4_anim + + .ref hrt_run2_anim,hrt_flying_kick_anim + .ref hrt_2_punch_anim,hrt_4_punch_anim + .ref hrt_2_kick_anim,hrt_4_kick_anim + + .ref hrt_hitonground_anim,hrt_hitonground_facedown_anim + + .ref hrt_2_butt_anim,hrt_4_butt_anim + .ref hrt_2_knee_anim,hrt_4_knee_anim +; .ref hrt_2_bigboot_anim,hrt_4_bigboot_anim + + .ref hrt_2_stomp_anim,hrt_4_stomp_anim + .ref hrt_4_jump_kick_anim + .ref hrt_4_push_anim + .ref hrt_4_grabfling_anim,hrt_hiptoss_anim,hrt_hiptoss2_anim + .ref hrt_2_grabfling_anim + .ref hrt_faceup_getup_anim,hrt_facedown_getup_anim + .ref hrt_heldoh_anim + .ref hrt_pogo_anim + .ref hrt_2_ground_punch_anim,hrt_4_ground_punch_anim + .ref hrt_running_ground_punch_anim + .ref hrt_climb_down_anim,hrt_tbukl_leap_anim + .ref hrt_climb_up_anim,hrt_hh_2_ddt_anim + .ref hrt_running_ddt_anim + .ref hrt_2_hair_pickup_anim,hrt_2_pin_anim + .ref hrt_3_head_held_stand_anim + .ref hrt_4_hair_pickup_anim + .ref hrt_3_head_hold2_anim,hrt_4_knee_fall_anim + .ref hrt_3_head_hold_anim + .ref hrt_4_pin_anim,hrt_fall_back_anim + + .ref hrt_4_uppercut_anim + .ref hrt_2_raise_arm_anim,hrt_4_raise_arm_anim + + .ref hrt_2_super_punch2_anim + .ref hrt_4_super_punch2_anim + .ref hrt_4_super_punch_anim + .ref hrt_2_super_kick_anim,hrt_4_super_kick_anim + .ref hrt_3_pile_driver_anim,hrt_rake_face_anim + + .ref hrt_knees_to_head_anim,hrt_uppercuts_to_head_anim + .ref hrt_roll_uppercut_anim,hrt_4_knee_to_head_anim + .ref hrt_2_shooter_anim,hrt_4_shooter_anim + + +; .ref hrt_pkup_chair_anim + .ref hrt_2_butts_anim,hrt_4_butts_anim + + .ref DAM_MULT,BONUS_MESS + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +bret_secret_moves + .long #charge_ddt + .long #neck_grab + .long #grab_fling + .long #hip_toss + .long #grab_fling2 + .long #hip_toss2 + .long #face_rake + .long #jump_kick + .long #supercut + .long 0 + +****************************************************************************** +* +* SPECIAL MOVE PROCESSES - Secret moves +* +;a8=process of wrestler + + SUBR hrt_smove_table + .long hrt_charge_flying_kick + .long hrt_charge_face_rake + .long hrt_hdhold_pile + .long hrt_hdhold_ddt + .long hrt_hdhold_faceslam + .long hrt_grab_toss_air + .long hrt_roll_uppercut + .long hrt_hdhold_combo1 + .long hrt_hdhold_combo2 +; .long hrt_hdhold_anti_combo + .long std_walk_fast + .long std_taunt + + .if NUM_BRET_FINISHES + .long hrt_finish_move1 + .endif + .if NUM_BRET_FINISHES > 1 + .long hrt_finish_move2 + .endif + .long 0 + + +******************************************************************************* +#supercut + .word B_PUNCH, J_ALL + .word J_DOWN, J_REAL_LR + .word J_DOWN, J_REAL_LR + .word 8000h | 16 ;max + .long #scrt_cut + +#scrt_cut + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ATTACHED,a0 + jrz #out + + movi hrt_4_super_punch_anim,a0 + calla change_anim1a + + WRSND W_BRET,PUNCH_T1,PUNCH_T2 + + rets + + +******************************************************************************* +#jump_kick + .word B_SKICK, J_ALL + .word J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 32 ;max + .long #scrt_flykick + +#scrt_flykick + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ATTACHED,a0 + jrz #out + + movi hrt_4_jump_kick_anim,a0 + calla change_anim1a + + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + + rets + +******************************************************************************* +#charge_ddt + move *a13(BUT_VAL_UP),a0 + btst PLAYER_SPUNCH_BIT,a0 + jrz #no_punch + +;FIX!! Give some jumping velocity + +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #no_punch + + move *a13(PLYRNUM),a0 + calla get_powerp_dtime + cmpi 100,a0 ;> min? + jrlt #no_punch + + callr #scrt_ddt + setc + rets + +#no_punch + clrc + rets + + +#scrt_ddt + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_HEADHOLD,a0 + jrz #out + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #out +; cmpi MODE_DEAD,a0 +; jrz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrz #leapddt + +;If stick is toward opponent, then do sliding/leaping buzzer + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #norm + +#leapddt +;missing noise for a reason ! + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + movi hrt_running_ddt_anim,a0 + calla change_anim1a + rets +#norm +;missing noise for a reason ! + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + movi hrt_hh_2_ddt_anim,a0 + calla change_anim1a + rets + + +******************************************************************************* +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + move *a13(LAST_HEADHOLD),a14,L + move @PCNT,a0,L + sub a14,a0 + cmpi 2*60,a0 + jrge #ok2 + +;This head grab is too close (in terms of time) to most recent grab + .ref hrt_3_fake_hold_anim + movi hrt_3_fake_hold_anim,a0 + calla change_anim1a + rets + +#ok2 + move *a13(CLOSEST_XDIST),a1 + cmpi 90,a1 + jrgt #std_grab + + movi hrt_3_head_hold2_anim,a0 + calla change_anim1a +#out rets + +#std_grab + movi hrt_3_head_hold_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#grab_fling2 + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#hip_toss2 + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#scrt_grabfling2 + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrz #yes + rets + +******************************************************************************* +#grab_fling +; .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_grabfling + + .word B_SPUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_grabfling + +#scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + movi hrt_hiptoss_anim,a0 + calla change_anim1a + + WRSND W_BRET,GRABFLING_T1,PUNCH_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + +; move *a13(LAST_FLING_ATTEMPT),a14,L +; move @PCNT,a0,L +; sub a14,a0 +; cmpi 3*60,a0 +; jrge #ok2a +; +; FACE24 hrt,super_punch2_anim +; calla change_anim1a +; +; WRSND W_BRET,SPUNCH_T1,SPUNCH_T2 +; rets +; +;#ok2a +; move @PCNT,a14,L ;use 32-bit PCNT! +; move a14,*a13(LAST_FLING_ATTEMPT),L + + FACE24 hrt,grabfling_anim + calla change_anim1a + + WRSND W_BRET,GRABFLING_T1,PUNCH_T2 + rets + +******************************************************************************* +#hip_toss +; .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_hiptoss + + .word B_PUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_hiptoss + +#scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit + + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #out + +#doit + movi hrt_hiptoss_anim,a0 + calla change_anim1a + + WRSND W_BRET,HIPTOSS_T1,PUNCH_T2 + rets + +******************************************************************************* +#face_rake + .word B_PUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_DOWN_TOWARD, J_REAL_LR + .word J_DOWN, J_REAL_LR + .word 8000h | 30 ;max + .long #scrt_facerake + +#scrt_facerake + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + + WRSND W_BRET,UPRCUT_T1,UPRCUT_T2 + + movi hrt_rake_face_anim,a0 + calla change_anim1a + rets + +#******************************************************************************* + +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +#CHARGE_TIME .equ SM_USRW1 ; + +hrt_charge_flying_kick + +#start_over + clr a14 + move a14,*a13(#CHARGE_TIME),W +#loop1 + SLEEPK 1 + + move *a13(#CHARGE_TIME),a14,W + inc a14 + move a14,*a13(#CHARGE_TIME),W + + move *a8(BUT_VAL_CUR),a0 + btst PLAYER_SKICK_BIT,a0 + jrz #p1 + + jruc #loop1 + +#p1 + +;no longer holding button + move *a13(#CHARGE_TIME),a14 + cmpi 100,a14 + jrlt #start_over + + move *a8(GETUP_TIME),a0 + jrnz #start_over + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #start_over + cmpi MODE_HEADHOLD,a0 + jrz #start_over + cmpi MODE_ONGROUND,a0 + jrz #start_over + cmpi MODE_DEAD,a0 + jrz #start_over + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #start_over + cmpi MODE_DEAD,a0 + jrz #start_over + +;Success! Check for the UNINT bit, then queue it up. + move *a8(ANIMODE),a14 + btst MODE_UNINT_BIT,a14 + jrnz #start_over + + .ref ck_ignore_a8 + calla ck_ignore_a8 + jrc #start_over + + movi hrt_flying_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + + SETMODE INAIR + + jruc #start_over + + +#******************************************************************************* + +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +#CHARGE_TIME .equ SM_USRW1 ; + +hrt_charge_face_rake + +#start_over + clr a14 + move a14,*a13(#CHARGE_TIME),W +#loop1 + SLEEPK 1 + + move *a13(#CHARGE_TIME),a14,W + inc a14 + move a14,*a13(#CHARGE_TIME),W + + move *a8(BUT_VAL_CUR),a0 + btst PLAYER_PUNCH_BIT,a0 + jrz #p1 + + jruc #loop1 + +#p1 + +;no longer holding button + move *a13(#CHARGE_TIME),a14 + cmpi 100,a14 + jrlt #start_over + + move *a8(GETUP_TIME),a0 + jrnz #start_over + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #start_over + cmpi MODE_HEADHOLD,a0 + jrz #start_over + cmpi MODE_ONGROUND,a0 + jrz #start_over + cmpi MODE_DEAD,a0 + jrz #start_over + +;Success! Check for the UNINT bit, then queue it up. + move *a8(ANIMODE),a14 + btst MODE_UNINT_BIT,a14 + jrnz #start_over + + movi hrt_rake_face_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_BRET,UPRCUT_T1,UPRCUT_T2 + + jruc #start_over + + .if NUM_BRET_FINISHES +#****************************************************************************** + SUBRP hrt_finish_move1 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_DOWN,0,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN B_PUNCH,J_ALL,#reset + + movi hrt_finish1_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + + .if NUM_BRET_FINISHES > 1 +#****************************************************************************** + SUBRP hrt_finish_move2 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_UP,0,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN B_SPUNCH,J_ALL,#reset + + movi hrt_finish2_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + +#****************************************************************************** + SUBRP hrt_roll_uppercut + +#TIMEOUT .equ TSEC + +#reset + SLEEPK 1 + + clr a11 + + WAITSWITCH_DWN J_DOWN, 0, #reset + + movi #TIMEOUT,a11 + + + ;this should make it nice and lenient... + WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#reset + WAITSWITCH_DWN B_SPUNCH,J_ALL, #reset + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #reset + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #reset ;ignore + + move *a8(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jreq #reset + cmpi MODE_HEADHOLD,a0 + jreq #reset + cmpi MODE_HEADHELD,a0 + jreq #reset + + WRSND W_BRET,GRABFLING_T1,GRABFLING_T2 + + movi hrt_roll_uppercut_anim,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + + clr a0 + move a0,*a8(RUN_TIME) + +; SETMODE NORMAL + + jruc #reset + +******************************************************************************* +#* +hrt_hdhold_combo1 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;Target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi hrt_combo_punch_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +hrt_hdhold_combo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SKICK,J_DOWN_TOWARD|J_UP_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;Target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi hrt_combo_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + + +#***************************************************************************** +hrt_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + calla DO_REVERSAL + calla DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movi 35,A10 ;Pile driver + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + WRSND W_BRET,GRABFLING_T1,GRABFLING_T2 + + movi hrt_3_pile_driver_anim,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** + SUBRP hrt_hdhold_ddt + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + calla DO_REVERSAL + calla DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 16,A10 ;Pile driver + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi hrt_hh_2_ddt_anim,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** + SUBRP hrt_hdhold_faceslam + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#lp +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + calla DO_REVERSAL + calla DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 20,A10 ;Pile driver + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi hrt_3_face_driver2_anim,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** + SUBRP hrt_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jreq #lp0 + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #lp + + movi hrt_hiptoss_anim,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + +; WRSND W_BRET,GRABFLING_T1,GRABFLING_T2 + WRSND W_BRET,HIPTOSS_T1,PUNCH_T2 + + SLEEPK 20 + jruc #lp + +#doit2 movi hrt_hiptoss2_anim,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_BRET,HIPTOSS_T1,PUNCH_T2 + + SLEEPK 20 + + jruc #lp + + +;#****************************************************************************** +; +;;Could start this process only when opponent is in combo mode! +; +;hrt_hdhold_anti_combo +; +;#TIMEOUT .equ 30 +; +;#lp0 +; SLEEPK 1 +;#lp +;;Is my opponent in combo mode? +;; move *a8(IMMOBILIZE_TIME),a14 +;; jrz #lp0 +;; move *a8(CLOSEST_NUM),a0 +;; X32 a0 +;; addi process_ptrs,a0 +;; move *a0,a0,L +;; move *a0(COMBO_COUNT),a0 +;; jrz #lp0 +; +; clr a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +; movi #TIMEOUT,a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +;;Is my opponent in combo mode? +; move *a8(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(COMBO_COUNT),a0 +; jrz #lp0 +; +; move *a8(ANTI_COMBO_TIME),a0 ;Time stamp +; move @PCNT,a14 +; sub a0,a14 +; abs a14 +; cmpi 80,a14 +; jrge #lp0 +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +;;Combo breaker message! +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; clr a0 +; move a0,*a8(IMMOBILIZE_TIME) +; +; move *a8(WHOHITME),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) +; +; ;target WHOHITME +; SMRTTGT a8,WHOHITME +; +; CALLA FIND_AND_KILL_ENDLESS +; +; WRSND W_BRET,HIPTOSS_T1,PUNCH_T2 +; movi hrt_3_face_driver2_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; SLEEPK 20 +; +; jruc #lp + +#***************************************************************************** + + SUBR bret_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi hrt_stand4_anim,a0 + calla change_anim1a + + movi hrt_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE TAUNT_PID,do_taunt + PULL a10 + + rets + +#p1 + movi hrt_stand2_anim,a0 + calla change_anim1a + + movi hrt_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* BRET HART CONTROL CODE +* +* a13 = * bret process + + SUBR move_bret + + + movi bret_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 + .long mode_puppet2 ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .long mode_choking ;25 + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(I_WILL_DIE),a0 + jrz #nope + move *a13(IMMOBILIZE_TIME),a0 + jrnz #nope +;Player has died amidst a combo... +;Knock me down. + movi hrt_fall_back_anim,a0 + calla change_anim1a + +;Zero health bar + movi -10,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + SETMODE DEAD + + clr a0 + move a0,*a13(I_WILL_DIE) + + rets + +#nope +;Perhaps we need to interrupt any sequence when a wrestler has won? + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + + ;if closest is a zombie, skip pin section. + calla get_opp_process + move *a0(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #opp_not_dead + + ;all opponents are dead. Check for pins/raisearms + + ;if we're attached to someone, don't interrupt it. + move *a13(ATTACH_PROC),a1,L + jrz #no_attch + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jreq #no_pin_yet +#no_attch + + ;if a teammate has pinned, raise yer arm. + calla ck_teammate_pin + jrc #raisearm + + ;nobody has pinned. if we're outside or all our opponents are + ; outside, do a raisearm. + calla raisearm_check + jrc #raisearm + + ;we're inside with a pinnable opponent. any button pins. + move *a13(BUT_VAL_CUR),a0 + jrz #no_pin_yet + + ;we have a press -- make sure opponent is on the ground + calla can_pin + jrnc #opp_notgnd + + ;opponent is on the ground. pin him. + FACE24 hrt,pin_anim + calla change_anim1a + + ;set the 'I did a pin' flag. + move *a13(STATUS_FLAGS),a14 + ori M_DID_PIN,a14 + move a14,*a13(STATUS_FLAGS) + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#raisearm + FACE24 hrt,raise_arm_anim + calla change_anim1a + calla set_raisearm_bit + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#too_far_to_pin +#opp_notgnd +#opp_not_dead +#no_pin_yet + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #immobilized + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 ;maybe have to action tables? + jrz #nblk ;1 for down transitions + callr #block ;& 1 for current buttons + jrc #nblk + clr a0 + move a0,*a13(ATTACK_TYPE) + rets +#nblk + move *a13(BUT_VAL_CUR),a0 + andi 011111b,a0 + cmpi PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,a0 + jrz #punchkick + + move *a13(BUT_VAL_DOWN),a0 + 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(STICK_VAL_CUR),a0 + move a0,*a13(MOVE_DIR) + calla climb_turnbuckle + jrnc #no_climb + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets + +#immobilized + clr a14 + move a14,*a13(MOVE_DIR) +#no_climb + calla execute_walk + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z ;0 + + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 62 92 headbutt +* dizzy " " +* normal > normal punch +* dizzy " " +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running hiptoss +* bouncing hiptoss +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 50, 45,#punch_hdbutt,#punch_punch ;0 + JJXM RUNNING, 50, 45,#punch_hdbutt,#punch_punch ;1 + JJXM INAIR, 50, 45,#punch_hdbutt,#punch_punch ;2 + JJXM ATTACHED, 50, 45,#punch_hdbutt,#punch_punch ;3 + JJXM ONGROUND, 160,140,#punch_lbowdrop,#punch_punch ;4 + JJXM BOUNCING, 50, 45,#punch_hdbutt,#punch_punch ;1 + JJXM ONTURNBKL, 50, 45,#punch_hdbutt,#punch_punch ;6 + JJXM BLOCK, 50, 45,#punch_hdbutt,#punch_punch ;7 + JJXM DIZZY, 50, 45,#punch_hdbutt,#punch_punch ;8 + JJXM DEAD, 160,140,#punch_lbowdrop,#punch_punch ;9 + JJXM OPPOVERHEAD, 50, 45,#punch_hdbutt,#punch_punch ;10 + JJXM CLIMBTURNBKL, #punch_punch ;11 + JJXM WAITANIM, 50, 45,#punch_hdbutt,#punch_punch ;12 + JJXM GRAPPLE, 50, 45,#punch_hdbutt,#punch_punch ;13 + JJXM MASTER, 50, 45,#punch_hdbutt,#punch_punch ;14 + JJXM SLAVE, 50, 45,#punch_hdbutt,#punch_punch ;15 + JJXM HEADHOLD, 50, 45,#punch_hdbutt,#punch_punch ;16 + JJXM HEADHELD, 50, 45,#punch_hdbutt,#punch_punch ;19 + JJXM CHOKEHOLD, 50, 45,#punch_hdbutt,#punch_punch ;16 + JJXM PUPPET, 50, 45,#punch_hdbutt,#punch_punch ;20 + JJXM PUPPET2, 50, 45,#punch_hdbutt,#punch_punch ;20 + JJXM INAIR2, 50, 45,#punch_hdbutt,#punch_punch ;21 + JJXM_END + +***** +#punch_rets + rets + +***** +#punch_punch +std_punch + + FACE24 hrt,punch_anim + calla change_anim1a + + WRSND W_BRET,PUNCH_T1,PUNCH_T2 + rets + +***** +#punch_hdbutt + + FACE24 hrt,butt_anim + calla change_anim1a + + WRSND W_BRET,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbowdrop + + FACE24 hrt,ground_punch_anim + calla change_anim1a + + WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#block ;2 +std_block + + move @blocking_off,a0 + jrnz #no_blocking + + RND_AWARD a13,BLOCKS_AWD + + movi hrt_4_block_anim,a0 + calla change_anim1 + + calla BLOCK_WOOSH + + clr a0 + move a0,*a13(BLOCK_TIME) + clrc + rets + +#no_blocking + setc + rets + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 120 120 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 70, 45,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 70, 45,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 70, 45,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 70, 45,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 160,140,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, 70, 45,#spunch_special,#spunch_slap ;1 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 70, 45,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 70, 45,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 160,140,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 70, 45,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 70, 45,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 70, 45,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 70, 45,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 70, 45,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 70, 45,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, #z ;do_pile ;19 + JJXM CHOKEHOLD, 70, 45,#spunch_special,#spunch_slap ;16 + JJXM PUPPET, 70, 45,#spunch_special,#spunch_slap ;20 + JJXM PUPPET2, 70, 45,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 70, 45,#spunch_special,#spunch_slap ;21 + JJXM_END + +***** +#spunch_special + move *a13(STICK_VAL_CUR),a0 + btst MOVE_DOWN_BIT,a0 + jrnz #uppercut +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrz #cont + + move *a13(CLOSEST_XDIST),a1 + cmpi 55,a1 + jrgt std_punch +; jruc #hdbutt +;#cont +; movi hrt_3_head_hold2_anim,a0 +; calla change_anim1a +; +; WRSND W_BRET,GRABHOLD_T1,GRABHOLD_T2 +; +; rets +; +;#hdbutt + + FACE24 hrt,butts_anim + calla change_anim1 + + WRSND W_BRET,HDBUTT_T1,HDBUTT_T2 + + rets + +#uppercut + + movi hrt_4_uppercut_anim,a0 + calla change_anim1a + + WRSND W_BRET,UPRCUT_T1,UPRCUT_T2 + + rets + +***** +#spunch_lbowdrop + +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a2 + cmpi MODE_DEAD,a2 + jrz #no + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 30h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #feet + +;At head! Do hair pickup. + + FACE24 hrt,hair_pickup_anim + calla change_anim1 + + WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2 + + rets + +#feet + cmpi 40h,a1 ;28 + jrlt #no + + FACE24 hrt,shooter_anim + calla change_anim1a + WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no + FACE24 hrt,ground_punch_anim + calla change_anim1 + + WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2 + rets + +***** +#spunch_slap + + FACE24 hrt,super_punch2_anim + calla change_anim1a + + WRSND W_BRET,PUNCH_T1,PUNCH_T2 + + rets + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 56 92 knee +* block " " +* dizzy " " +* normal > normal kick +* block " " +* dizzy " " +* +* onground < 120 120 stomp +* onground > normal kick +* +* running normal kick +* bouncing normal kick +* +* onturnbkl normal kick +* climbturnbkl normal kick +* + JJXM_INIT + JJXM NORMAL, 50, 92,#kick_knee,#kick_kick ;0 + JJXM RUNNING, 50, 92,#kick_knee,#kick_kick ;0 + JJXM INAIR, 50, 92,#kick_knee,#kick_kick ;2 + JJXM ATTACHED, 50, 92,#kick_knee,#kick_kick ;3 + JJXM ONGROUND, 160,140,#kick_stomp,#kick_kick ;4 + JJXM BOUNCING, 50, 92,#kick_knee,#kick_kick ;0 + JJXM ONTURNBKL, #kick_kick ;6 + JJXM BLOCK, 50, 92,#kick_knee,#kick_kick ;7 + JJXM DIZZY, 50, 92,#kick_knee,#kick_kick ;8 + JJXM DEAD, 160,140,#kick_stomp,#kick_kick ;9 + JJXM OPPOVERHEAD, 50, 92,#kick_knee,#kick_kick ;10 + JJXM CLIMBTURNBKL, #kick_kick ;11 + JJXM WAITANIM, 50, 92,#kick_knee,#kick_kick ;12 + JJXM GRAPPLE, 50, 92,#kick_knee,#kick_kick ;13 + JJXM MASTER, 50, 92,#kick_knee,#kick_kick ;14 + JJXM SLAVE, 50, 92,#kick_knee,#kick_kick ;15 + JJXM HEADHOLD, 50, 92,#kick_knee,#kick_kick ;16 + JJXM HEADHELD, 50, 92,#kick_knee,#kick_kick ;19 + JJXM CHOKEHOLD, 50, 92,#kick_knee,#kick_kick ;16 + JJXM PUPPET, 50, 92,#kick_knee,#kick_kick ;20 + JJXM PUPPET2, 50, 92,#kick_knee,#kick_kick ;20 + JJXM INAIR2, #kick_TB ;21 + JJXM_END + +***** +#kick_TB + .ref hrt_kick_TB_anim + movi hrt_kick_TB_anim,a0 + calla change_anim1a + + WRSND W_BRET,KICK_T1,KICK_T2 + rets + +***** +#kick_kick +std_kick + + FACE24 hrt,kick_anim + calla change_anim1a + + WRSND W_BRET,KICK_T1,KICK_T2 + rets + +***** +#kick_knee +std_knee + + FACE24 hrt,knee_anim + calla change_anim1a + + WRSND W_BRET,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp +std_stomp + + FACE24 hrt,stomp_anim + calla change_anim1a + + WRSND W_BRET,KICK_T1,KICK_T2 + + rets + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 120 120 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 60 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 60, 60,#skick_special,#skick_kick ;0 + JJXM RUNNING, 60, 60,#skick_special,#skick_kick ;0 + JJXM INAIR, 60, 60,#skick_special,#skick_kick ;2 + JJXM ATTACHED, 60, 60,#skick_special,#skick_kick ;3 + JJXM ONGROUND, 160,140,std_stomp,std_kick ;4 + JJXM BOUNCING, 60, 60,#skick_special,#skick_kick ;0 + JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick ;6 + JJXM BLOCK, 60, 60,#skick_special,#skick_kick ;7 + JJXM DIZZY, 60, 60,#skick_special,#skick_kick ;8 + JJXM DEAD, 160,140,std_stomp,std_kick ;9 + JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick ;10 + JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick ;11 + JJXM WAITANIM, 60, 62,#skick_special,#skick_kick ;12 + JJXM GRAPPLE, 60, 62,#skick_special,#skick_kick ;13 + JJXM MASTER, 60, 62,#skick_special,#skick_kick ;14 + JJXM SLAVE, 60, 62,#skick_special,#skick_kick ;15 + JJXM HEADHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM HEADHELD, std_kick + JJXM CHOKEHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM PUPPET, 60, 62,#skick_special,#skick_kick ;20 + JJXM PUPPET2, 60, 62,#skick_special,#skick_kick ;20 + JJXM INAIR2, #kick_TB ;21 + JJXM_END + +***** +#graboh +#skick_kick + + FACE24 hrt,super_kick_anim + calla change_anim1a + + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + rets + +***** +#skick_special + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz std_knee + + movi hrt_4_knee_fall_anim,a0 + calla change_anim1 + + WRSND W_BRET,KICK_T1,KICK_T2 + rets + +***** +;#skick_bigboot +; +; FACE24 hrt,bigboot_anim +; calla change_anim1a +; +; WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 +; +; rets + + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ HRT_XRUN +#XRUN2_VAL equ HRT_XRUN2 +#ZDRIFT_VAL equ HRT_ZDRIFT + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + + move *a13(WALK_FAST),a14 + jrz #no + movi #XRUN2_VAL,a0 +#no + move @hyper_speed_on,a14 + sll a14,a0 + + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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(STICK_VAL_CUR),a0 + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#no_interrupt + + move *a13(STICK_VAL_CUR),a0 + 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 + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #out_of_control + + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 +#out_of_control + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +; .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 +#super_punch ;4 +#punchkick +#graboh +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 belly flop +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline ;0 + JJXM RUNNING, #punch_clothesline ;1 + JJXM INAIR, #punch_clothesline ;2 + JJXM ATTACHED, #punch_clothesline ;3 + JJXM ONGROUND, #punch_bellyflop ;4 + JJXM BOUNCING, #punch_clothesline ;5 + JJXM ONTURNBKL, #punch_clothesline ;6 + JJXM BLOCK, #punch_clothesline ;7 + JJXM DIZZY, #punch_clothesline ;8 + JJXM DEAD, #punch_bellyflop ;9 + JJXM OPPOVERHEAD, #punch_clothesline ;10 + JJXM CLIMBTURNBKL, #punch_clothesline ;11 + JJXM WAITANIM, #punch_clothesline ;12 + JJXM GRAPPLE, #punch_clothesline ;13 + JJXM MASTER, #punch_clothesline ;14 + JJXM SLAVE, #punch_clothesline ;15 + JJXM HEADHOLD, #punch_clothesline ;16 + JJXM HEADHELD, #punch_clothesline ;19 + JJXM CHOKEHOLD, #punch_clothesline ;16 + JJXM PUPPET, #punch_clothesline ;20 + JJXM PUPPET2, #punch_clothesline ;20 + JJXM INAIR2, #punch_clothesline ;21 + JJXM_END + + +***** +#punch_rets + rets + +***** +#punch_clothesline + + ;don't do it if you're running away from your opponent. + move *a13(FACING_DIR),a0 + move *a13(NEW_FACING_DIR),a1 + and a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + jrz #z + + + movi hrt_running_ddt_anim,a0 + calla change_anim1a + + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +#punch_bellyflop +std_bellyflop + + ;don't do it if you're running away from your opponent. + move *a13(FACING_DIR),a0 + move *a13(NEW_FACING_DIR),a1 + and a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + jrz #z + + movi hrt_running_ground_punch_anim,a0 + calla change_anim1a + + WRSND W_BRET,FLYKICK_T1,FLYKICK_T2 + + rets + +************ +#block ;2 + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 running stomp +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick + JJXM BLOCK, #kick_flyingkick + JJXM DIZZY, #kick_flyingkick + JJXM ONGROUND, std_bellyflop + JJXM RUNNING, #kick_flyingkick + JJXM BOUNCING, #kick_flyingkick + JJXM ONTURNBKL, #kick_flyingkick + JJXM CLIMBTURNBKL, #kick_flyingkick + JJXM INAIR, #kick_flyingkick + JJXM ATTACHED, #kick_flyingkick + JJXM DEAD, std_bellyflop + JJXM OPPOVERHEAD, #kick_flyingkick + JJXM WAITANIM, #kick_flyingkick + JJXM GRAPPLE, #kick_flyingkick + JJXM MASTER, #kick_flyingkick + JJXM SLAVE, #kick_flyingkick + JJXM HEADHOLD, #kick_flyingkick + JJXM HEADHELD, #kick_flyingkick + JJXM CHOKEHOLD, #kick_flyingkick + JJXM PUPPET, #kick_flyingkick + JJXM PUPPET2, #kick_flyingkick + JJXM INAIR2, #kick_flyingkick + JJXM_END + +#kick_rets + rets + +***** +#kick_flyingkick + + calla ck_ignore + jrc #z + + movi hrt_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_BRET,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 + +#***************************************************************************** + +mode_onground ;4 + + 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 hrt_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 + +; ;check unint +; move *a13(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #no_interrupt + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #no_climbdown + + movi hrt_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + +#no_interrupt + rets + +#no_climbdown + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +; .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 +#graboh +#punchkick + + SETMODE INAIR + + WRSND W_BRET,TURNDIVE_T1,TURNDIVE_T2 + + movi hrt_tbukl_leap_anim,a0 + calla change_anim1a + + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + + move *a13(BLOCK_TIME),a0 + inc a0 + move a0,*a13(BLOCK_TIME) + cmpi 160,a0 + jrlt #no + + calla get_opp_plyrmode + cmpi MODE_BLOCK,a0 + jrnz #no + move *a13(CLOSEST_XDIST),a0 + cmpi 61h,a0 + jrge #no + cmpi 45,a0 + jrlt #no + move *a13(CLOSEST_ZDIST),a0 + cmpi 30,a0 + jrlt #punchblock + +#no + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #no_interrupt + + ;press. if block isn't down, let mode_normal handle it + move a0,a2 ;save a0 from ...val_down + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 + jrz #set_mode_normal + move a2,a0 ;restore a0 from ...val_down + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#set_mode_normal + SETMODE NORMAL + jruc mode_normal + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + movi hrt_4_push_anim,a0 + calla change_anim1a + + WRSND W_BRET,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* BRET with zero health + +mode_dizzy ;8 + +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +; calla clear_damage_log +; +; clr a0 +; move a0,*a13(STARS_FLAG) +; +; SETMODE NORMAL +; +;#still_going + 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 ;* remove this???? +; 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) +; +; rets +; +;#still_attached +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #no_interrupt +; +; move *a13(FACING_DIR),a0 +; andni MOVE_UP,a0 +; ori MOVE_DOWN,a0 +; move a0,*a13(FACING_DIR) +; move a0,*a13(NEW_FACING_DIR) +; +; move a13,a0 +; calla wres_get_stick_val_cur +; jrz #stand +; +; move a0,*a13(MOVE_DIR) +; calla execute_walk +; +; movi hrt_holdoh_anim,a0 +; calla change_anim2 +; jruc #ck_butns +;#stand +; clr a0 +; move a0,*a13(MOVE_DIR) +; move a0,*a13(OBJ_XVEL),L +; move a0,*a13(OBJ_ZVEL),L +; +; movi hrt_stndholdoh_anim,a0 +; calla change_anim1 +; +;#ck_butns +; +; +; move a13,a0 +; calla wres_get_but_val_down +; andi 011111b,a0 +; X32 a0 +; addi #action_table,a0 +; move *a0,a0,L +; call a0 +; +;#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 +;#block ;2 +;#super_punch ;4 +;#kick ;8 +;#super_kick ;16 +; + 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 + + calla master_keep_attached ;keep slave attached to me + + rets + +#***************************************************************************** + +mode_slave ;15 + rets + +#***************************************************************************** + +mode_headhold ;16 + +;Bozo power move + .ref bozo_check + calla bozo_check + jrnc #fail + + WRSND W_BRET,GRABFLING_T1,GRABFLING_T2 + + movi hrt_3_pile_driver_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi hrt_hh_2_ddt_anim,a0 +#tag calla change_anim1a + + rets + +#fail + move *a13(WHOIHIT),a0,L + move *a0(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #exit + +; move *a13(ATTACH_PROC),a10,L +; jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + move *a13(OBJ_ZPOS),a14,L + subi [6,0],a14 + move a14,*a13(OBJ_ZPOS),L + + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #z ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#graboh +#z ;0 + rets + +***** +#punch ;1 + + CALLA FIND_AND_KILL_ENDLESS + + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #knee + + WRSND W_BRET,UPRCUT_T1,UPRCUT,T2 + + movi hrt_uppercuts_to_head_anim,a0 + calla change_anim1a + rets + +***** +#super_punch ;4 + CALLA FIND_AND_KILL_ENDLESS + + move *a13(STICK_VAL_CUR),a0 + btst MOVE_DOWN_BIT,a0 + jrz #super_kick + + SPCDMG D_UPRCUT/2,15 + + movi hrt_4_uppercut_anim,a0 + calla change_anim1a + + WRSND W_BRET,UPRCUT_T1,UPRCUT,T2 + + rets + +;#face +;;If stick is toward opponent, then do face driver +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrnz #z +; +; CALLA FIND_AND_KILL_ENDLESS +; +; movi hrt_3_face_driver_anim,a0 +; calla change_anim1a +; +; WRSND W_BRET,GRABHOLD_T1,GRABHOLD,T2 +; rets + +***** +#kick ;8 + + CALLA FIND_AND_KILL_ENDLESS + + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #knee + + WRSND W_BRET,UPRCUT_T1,UPRCUT,T2 + + movi hrt_knees_to_head_anim,a0 + calla change_anim1a + rets + +***** +#punchkick ;9 +#knee + CALLA FIND_AND_KILL_ENDLESS + + movi hrt_4_knee_to_head_anim,a0 + calla change_anim1a + WRSND W_BRET,KICK_T1,KICK_T2 + rets + +***** +#super_kick ;16 + rets + + +#***************************************************************************** +mode_puppet2 ;17 + +; ;check for the head-grab breaker +; move *a13(BUT_VAL_DOWN),a0 +; btst PLAYER_KICK_BIT,a0 +; jrz #out +; +; ;check the time - must do it within 20 ticks +; move *a13(HEAD_GRAB_TIME),a14 +; move @PCNT,a0 +; sub a14,a0 +; cmpi KICK_OUT,a0 +; jrgt #out +; +; move *a13(PLYR_TYPE),a14 +; cmpi PTYPE_DRONE,a14 +; jrz #out +; +; ;okay, waste 'im. - detach, setmode, immobilize, and launch the knee +; move *a13(ATTACH_PROC),a0,L +; clr a14 +; move a14,*a13(ATTACH_PROC),L +; move a14,*a0(ATTACH_PROC),L +; movi 20,a14 +; move a14,*a0(IMMOBILIZE_TIME) +; SETMODE NORMAL +; jruc std_knee +; +;#out + rets + +#***************************************************************************** +mode_headheld ;19 + move *a13(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + janz mode_choking + + +;Bozo reversal + calla bozo_check + jrnc #fail + + PUSH a8 + move a13,a8 + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + PULL a8 + + WRSND W_BRET,GRABFLING_T1,GRABFLING_T2 + + movi hrt_3_pile_driver_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi hrt_hh_2_ddt_anim,a0 +#tag calla change_anim1a + + rets +#fail + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + movi hrt_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +;#VEL equ 30000h ;38000h ;30000h +;#DVEL equ 21f0eh ;27978h ;21f0eh +;#VEL equ 38000h ;38000h ;30000h +;#DVEL equ 30000h ;27978h ;21f0eh +#VEL equ 3a000h ;38000h ;30000h +#DVEL equ 31000h ;27978h ;21f0eh + + + SUBR hrt_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 hrt_rotate_anims_table +; old = up right + .long hrt_stand2_anim ;new = up right + .long hrt_2_to_4_turn_anim ; = down right + .long hrt_2_to_6_turn_anim ; = down left *** + .long hrt_2_to_8_turn_anim ; = up left + +; old = down right + .long hrt_4_to_2_turn_anim ;new = up right + .long hrt_stand4_anim ; = down right + .long hrt_4_to_6_turn_anim ; = down left + .long hrt_4_to_8_turn_anim ; = up left *** + +; old = down left + .long hrt_6_to_2_turn_anim ;new = up right *** + .long hrt_6_to_4_turn_anim ; = down right + .long hrt_stand6_anim ; = down left + .long hrt_6_to_8_turn_anim ; = up left + +; old = up left + .long hrt_8_to_2_turn_anim ;new = up right + .long hrt_8_to_4_turn_anim ; = down right *** + .long hrt_8_to_6_turn_anim ; = down left + .long hrt_stand8_anim ; = up left + + + SUBR hrt_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long hrt_walk1_f2_anim ;1 (UP) + .long hrt_walk1_f2_anim ;2 (UP_RIGHT) + .long hrt_walk1_f4_anim ;3 (RIGHT) + .long hrt_walk1_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk1_f4_anim ;5 (DOWN) + .long hrt_walk1_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk1_f2_anim ;7 (LEFT) + .long hrt_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk2_f2_anim ;2 (UP_RIGHT) + .long hrt_walk2_f2_anim ;3 (RIGHT) + .long hrt_walk2_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk8_f4_anim ;5 (DOWN) + .long hrt_walk8_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk4_f2_anim ;7 (LEFT) + .long hrt_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk2_f2_anim ;2 (UP_RIGHT) + .long hrt_walk2_f2_anim ;3 (RIGHT) + .long hrt_walk4_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk4_f4_anim ;5 (DOWN) + .long hrt_walk8_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk6_f2_anim ;7 (LEFT) + .long hrt_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk8_f2_anim ;2 (UP_RIGHT) + .long hrt_walk4_f4_anim ;3 (RIGHT) + .long hrt_walk4_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk2_f4_anim ;5 (DOWN) + .long hrt_walk6_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk2_f2_anim ;7 (LEFT) + .long hrt_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long hrt_walk5_f2_anim ;1 (UP) + .long hrt_walk5_f2_anim ;2 (UP_RIGHT) + .long hrt_walk5_f4_anim ;3 (RIGHT) + .long hrt_walk5_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk5_f4_anim ;5 (DOWN) + .long hrt_walk5_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk5_f2_anim ;7 (LEFT) + .long hrt_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk6_f2_anim ;2 (UP_RIGHT) + .long hrt_walk2_f2_anim ;3 (RIGHT) + .long hrt_walk6_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk2_f4_anim ;5 (DOWN) + .long hrt_walk4_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk2_f2_anim ;7 (LEFT) + .long hrt_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk6_f2_anim ;2 (UP_RIGHT) + .long hrt_walk6_f2_anim ;3 (RIGHT) + .long hrt_walk8_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk4_f4_anim ;5 (DOWN) + .long hrt_walk4_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk2_f2_anim ;7 (LEFT) + .long hrt_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long hrt_walk2_f2_anim ;1 (UP) + .long hrt_walk4_f2_anim ;2 (UP_RIGHT) + .long hrt_walk6_f2_anim ;3 (RIGHT) + .long hrt_walk8_f4_anim ;4 (DOWN_RIGHT) + .long hrt_walk6_f4_anim ;5 (DOWN) + .long hrt_walk2_f4_anim ;6 (DOWN_LEFT) + .long hrt_walk2_f2_anim ;7 (LEFT) + .long hrt_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR hrt_torso_anims_table +; old = up right + .long hrt_torso2_anim ;new = up right + .long hrt_2_to_4_turn2_anim ; = down right + .long hrt_2_to_6_turn2_anim ; = down left *** + .long hrt_2_to_8_turn2_anim ; = up left + +; old = down right + .long hrt_4_to_2_turn2_anim ;new = up right + .long hrt_torso4_anim ; = down right + .long hrt_4_to_6_turn2_anim ; = down left + .long hrt_4_to_8_turn2_anim ; = up left *** + +; old = down left + .long hrt_6_to_2_turn2_anim ;new = up right *** + .long hrt_6_to_4_turn2_anim ; = down right + .long hrt_torso6_anim ; = down left + .long hrt_6_to_8_turn2_anim ; = up left + +; old = up left + .long hrt_8_to_2_turn2_anim ;new = up right + .long hrt_8_to_4_turn2_anim ; = down right *** + .long hrt_8_to_6_turn2_anim ; = down left + .long hrt_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BRET.BAT b/BRET.BAT new file mode 100755 index 0000000..01f70f2 --- /dev/null +++ b/BRET.BAT @@ -0,0 +1,9 @@ +@echo off +@wwfld bret hrt_hit hrt_kik hrt_msc hrt_pnc hrt_wlk hrt_jms hrt_mjt hrt_rjr hrt_jake +@copy bret.ld1 + bret.ld2 bret.lod +@move bret.h ..\bretimg.h +@move bret.seq .. + + + + \ No newline at end of file diff --git a/BRETIMG.ASM b/BRETIMG.ASM new file mode 100755 index 0000000..d43354d --- /dev/null +++ b/BRETIMG.ASM @@ -0,0 +1,21 @@ + .FILE "bretimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include bretimg.tbl + .include bretimg.h + + .def H4ST4A02 + +****************************************************************************** + + .even + .include "bret.seq" + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/BRETIMG.H b/BRETIMG.H new file mode 100755 index 0000000..f1bfc23 --- /dev/null +++ b/BRETIMG.H @@ -0,0 +1,85 @@ + .global H2AH3A + .global H4AH3A + .global H2AE3A + .global H4AE3A + .global H2AM3A + .global H4AM3A + .global H4BK3A + .global H2CP3A + .global H4LB3A + .global H3GU2A + .global H3GU4A + .global H4KM3D + .global H2KM3A + .global H4KM3B + .global H2NM3A + .global H4NM3A + .global H2MP2B + .global H4MP4A + .global H3DC3A + .global H4TI4B + .global H3GF7B + .global H3RL1A + .global H4MF4B + .global H2PL3B + .global H4PL3X + .global H2BC3A + .global H4BC3A + .global H4PS3A + .global H2TW2A + .global H4TW4A + .global H2ST2A + .global H4ST4A + .global H1TL5A + .global H1TT5A + .global H2WL1A + .global H2WL2A + .global H2WL8A + .global H4WL2A + .global H4WL4A + .global H4WL5A + .global H3RN3A + .global H3BO3A + .global H4UP3C + .global H3UC3X + .global H3UC3Z + .global H3MS3X + .global H2PF2B + .global H4PF4B + .global H4JK4C + .global H4HU4B + .global H4SB4B + .global H4JP4C + .global H3RR3Z + .global H4KM3C + .global H3PG3A + .global H3ZZ3T + .global H4RF3A + .global H3HT3X + .global H3FR3A + .global H3ZS3A + .global H4ZZ4C + .global H4ZZ4B + .global H4GH3Z + .global H4GH3C + .global H3AB3A + .global H4POGO + .global H3PN5A + .global H3BR3Z + .global H3MS3Z + .global H4LD4A + .global H4SL4C + .global H3DU3A + .global H3PP3X + .global H4BZ4A + .global H4YR3A + .global H3HB3A + .global H3BF3A + .global H3RS3A + .global H3DD3Z + .global H3DD3B + .global H4TN4X + .global H4JD4B + .global H4CR3D + .global H4WA4A + .global H4CS3A diff --git a/BRETST.H b/BRETST.H new file mode 100755 index 0000000..b2a970c --- /dev/null +++ b/BRETST.H @@ -0,0 +1,188 @@ +; +; Story lines for story 1 of bret +; +; Compressed string "THROUGH THE EXCELLENCE OF" +bret_story1_line1 + .byte 075h,03ah,0c3h,036h,09ah,006h,075h,06ah + .byte 006h,066h,04eh,09ah,06dh,06bh,0beh,0a4h + .byte 019h,0c0h,027h,000h + .even + +; Compressed string "EXECUTION, BRET FINISHED OFF THE" +bret_story1_line2 + .byte 066h,06eh,092h,076h,0adh,0c2h,06fh,013h + .byte 08ch,0b3h,059h,007h,0a7h,0fah,0aah,074h + .byte 06ah,096h,001h,07ch,09eh,041h,09dh,09ah + .byte 000h + .even + +; Compressed string "LAST OF THE BUNCH. HIS VICTORY" +bret_story1_line3 + .byte 0adh,048h,0d7h,001h,07ch,006h,075h,06ah + .byte 006h,0a3h,0fdh,092h,0e9h,013h,004h,0a9h + .byte 04ah,007h,0b7h,04ah,0d6h,0f0h,0ach,003h + .even + +; Compressed string "MADE NEWSPAPER AND MAGAZINE" +bret_story1_line4 + .byte 0aeh,058h,09ah,0c1h,06bh,0e2h,074h,02ch + .byte 0c6h,0e6h,01ch,088h,06fh,019h,0b8h,022h + .byte 02ah,0eeh,0eah,06bh,002h + .even + +; Compressed string "HEADLINES THROUGHOUT THE WORLD" +bret_story1_line5 + .byte 0a9h,029h,096h,0adh,0fah,09ah,074h,050h + .byte 0a7h,033h,06ch,0a3h,029h,06ch,0d7h,041h + .byte 09dh,09ah,001h,00eh,0cfh,06dh,009h,000h + .even + +; Compressed string "AND BRET'S POPULARITY GREW TO" +bret_story1_line6 + .byte 0e2h,05bh,006h,0e3h,06ch,0d6h,008h,01dh + .byte 0c4h,070h,06ch,0b7h,0e2h,0ach,0d6h,07ah + .byte 080h,0ceh,026h,01eh,0d4h,030h,000h + .even + +; Compressed string "OUTRAGEOUS PROPORTIONS. WHILE" +bret_story1_line7 + .byte 0b0h,05dh,0cfh,022h,06ah,0c2h,036h,01dh + .byte 0c4h,033h,01ch,0c3h,073h,0adh,0c2h,02fh + .byte 0fdh,004h,078h,0aah,0b6h,026h,000h + .even + +; Compressed string "DEFENDING HIS TITLE FOR FIVE" +bret_story1_line8 + .byte 0a5h,079h,09ah,06fh,0a9h,0beh,068h,090h + .byte 0aah,074h,050h,0abh,075h,06bh,006h,027h + .byte 03ch,007h,0a7h,07ah,09bh,000h + .even + +; Compressed string "YEARS STRAIGHT, HE BECAME A STAR" +bret_story1_line9 + .byte 0bah,029h,0ceh,074h,040h,0d7h,0b3h,0a8h + .byte 0a2h,069h,0ddh,004h,0a9h,019h,08ch,026h + .byte 029h,0bah,066h,020h,006h,074h,02dh,0ceh + .byte 000h + .even + +; Compressed string "OF STAGE AND SCREEN AS WELL AS" +bret_story1_line10 + .byte 0f0h,019h,0d0h,0b5h,088h,09ah,081h,0f8h + .byte 096h,001h,04dh,0ceh,0a6h,0f9h,006h,022h + .byte 01dh,0e0h,066h,0dbh,006h,022h,00dh,000h + .even + +; Compressed string "THE RING, APPEARING IN SEVERAL" +bret_story1_line11 + .byte 075h,06ah,006h,0b3h,0fah,0a2h,04dh,020h + .byte 0c6h,0b1h,029h,0ceh,0eah,08bh,006h,0eah + .byte 01bh,0d0h,0e6h,06dh,0ceh,062h,00bh,000h + .even + +; Compressed string "WEEKLY TELEVISION DRAMAS AND" +bret_story1_line12 + .byte 0b8h,069h,0b2h,0adh,01eh,0d4h,066h,06bh + .byte 0deh,02ah,0adh,0c2h,06fh,050h,0ceh,0a2h + .byte 02bh,0d2h,081h,0f8h,096h,000h + .even + +; Compressed string "BROADWAY PRODUCTIONS. " +bret_story1_line13 + .byte 0e3h,00ch,08bh,025h,02eh,0eah,041h,03ch + .byte 0c3h,0a5h,04dh,0d6h,02ah,0fch,0d2h,04fh + .byte 000h,000h + .even + +; Compressed string "UNBEATABLE, HE RETIRED AS" +bret_story1_line14 + .byte 0f6h,03bh,09ah,062h,02dh,08eh,0adh,0d9h + .byte 004h,0a9h,019h,0cch,066h,0adh,0ceh,066h + .byte 019h,088h,034h,000h + .even + +; Compressed string "CHAMPION TO PURSUE A BIG SCREEN" +bret_story1_line15 + .byte 064h,02ah,0bah,0b1h,00ah,0bfh,041h,00dh + .byte 007h,0b1h,03dh,0d3h,0b6h,019h,088h,0c1h + .byte 0a8h,0a2h,001h,04dh,0ceh,0a6h,0f9h,002h + .even + +; Compressed string "CAREER IN ITALY, WHERE HE BECAME" +bret_story1_line16 + .byte 0a4h,038h,09bh,0e6h,01ch,0a8h,06fh,0a0h + .byte 0d6h,062h,0abh,037h,001h,09eh,09ah,0b3h + .byte 019h,0a4h,066h,030h,09ah,0a4h,0e8h,09ah + .byte 000h + .even + +; Compressed string "THE GRATEST SPAGHETTI-WESTERN" +bret_story1_line17 + .byte 075h,06ah,006h,0e8h,02ch,0d6h,026h,05dh + .byte 007h,074h,02ch,0a2h,0a9h,059h,0d7h,0aah + .byte 083h,09bh,074h,06dh,0ceh,02fh,000h + .even + +; Compressed string "STAR IN FILM HISTORY, WINNING SIX" +bret_story1_line18 + .byte 074h,02dh,0ceh,081h,0fah,006h,0a7h,0dah + .byte 0bah,041h,0aah,0d2h,035h,03ch,0ebh,04dh + .byte 080h,0abh,0efh,0abh,0beh,068h,040h,0abh + .byte 039h,000h + .even + +; Compressed string "ACADEMY AWARDS OVER HIS LIFETIME," +bret_story1_line19 + .byte 022h,029h,096h,0a6h,0abh,007h,022h,02eh + .byte 0ceh,025h,01dh,0c0h,0b7h,039h,007h,0a9h + .byte 04ah,007h,0adh,07ah,09ah,0b5h,0eah,09ah + .byte 00dh,000h + .even + +; Compressed string "AND GROSSING OVER 300 MILLION" +bret_story1_line20 + .byte 0e2h,05bh,006h,0e8h,00ch,0d3h,0b4h,0fah + .byte 0a2h,001h,07ch,09bh,073h,040h,045h,051h + .byte 0e0h,0aah,06dh,0abh,0c2h,02fh,000h + .even + +; Compressed string "DOLLARS ON EACH OF HIS FILMS." +bret_story1_line21 + .byte 025h,0dch,0b6h,0e2h,04ch,007h,0f0h,01bh + .byte 098h,022h,099h,006h,0f0h,019h,0a4h,02ah + .byte 01dh,09ch,06ah,0ebh,0d2h,00fh,000h + .even + +; +; Story line table for Story 1 of bret +; +bret_story_tbl1 + .long bret_story1_line1 + .long bret_story1_line2 + .long bret_story1_line3 + .long bret_story1_line4 + .long bret_story1_line5 + .long bret_story1_line6 + .long bret_story1_line7 + .long bret_story1_line8 + .long bret_story1_line9 + .long bret_story1_line10 + .long bret_story1_line11 + .long bret_story1_line12 + .long bret_story1_line13 + .long bret_story1_line14 + .long bret_story1_line15 + .long bret_story1_line16 + .long bret_story1_line17 + .long bret_story1_line18 + .long bret_story1_line19 + .long bret_story1_line20 + .long bret_story1_line21 + .long 0 + +; +; Table of stories for bret +; +bret_stories + .long bret_story_tbl1 + diff --git a/BUG.ASM b/BUG.ASM new file mode 100755 index 0000000..3e4d4f2 --- /dev/null +++ b/BUG.ASM @@ -0,0 +1,57 @@ +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + +#CLIMB_SPD equ 5 + SUBR dnk_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOFACE | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + WL ANI_SET_YVEL,4000h ;27000 + + + + + .word ANI_OFFSET,-5,-7,-15 ;x,y,z + +;Changing the -5 to a -7 causes a dramatic change in Y + + + + + WL #CLIMB_SPD,D2CT2A02 + .word ANI_OFFSET,0,19h,0 ;x,y,z + WL #CLIMB_SPD,D2CT2A07 + .word ANI_OFFSET,0,9,0 ;x,y,z + WL #CLIMB_SPD,D2CT2A09 + .word ANI_OFFSET,0,>a,0 ;x,y,z + WL #CLIMB_SPD,D2CT2A12 + .word ANI_ZEROVELS + + .word ANI_OFFSET,0,6,0 ;x,y,z + WL #CLIMB_SPD,D2CT2B02 + .word ANI_OFFSET,10,18h,0 ;x,y,z + WL #CLIMB_SPD,D2CT2B04 + .word ANI_OFFSET,-2,0dh,0 ;x,y,z + WL #CLIMB_SPD,D2CT2B06 + + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT | MODE_NOFACE | MODE_NOCONFINE | MODE_NOGRAVITY + + .word ANI_OFFSET,2,0,0 ;x,y,z +#repeat + WL #CLIMB_SPD,D2CT2C01 + WL #CLIMB_SPD,D2CT2C03 + WL #CLIMB_SPD,D2CT2C05 + WL #CLIMB_SPD,D2CT2C07 + WL #CLIMB_SPD,D2CT2C09 + WL #CLIMB_SPD,D2CT2C11 + WL #CLIMB_SPD,D2CT2C13 + WL #CLIMB_SPD,D2CT2C15 + WL #CLIMB_SPD,D2CT2C17 + WL #CLIMB_SPD,D2CT2C19 + WL #CLIMB_SPD,D2CT2C21 + WL ANI_GOTO,#repeat + + + \ No newline at end of file diff --git a/CHECK.BAT b/CHECK.BAT new file mode 100755 index 0000000..fb41f5a --- /dev/null +++ b/CHECK.BAT @@ -0,0 +1,2 @@ +grep -e ";JMS" -e ";MJT" -e "* JAKE" -e ";SL;" -e ";RJR" %1.asm + \ No newline at end of file diff --git a/CLEAN.BAT b/CLEAN.BAT new file mode 100755 index 0000000..8e14477 --- /dev/null +++ b/CLEAN.BAT @@ -0,0 +1,5 @@ +grep -v -e ";JMS" -v -e ";MJT" -v -e "* JAKE" -v -e ";SL;" -v -e ";RJR" %1.asm > %1.cln +diff %1.asm %1.cln +copy %1.asm %1.pcl +copy %1.cln %1.asm + \ No newline at end of file diff --git a/COLL2.ASM b/COLL2.ASM new file mode 100755 index 0000000..7f1c83f --- /dev/null +++ b/COLL2.ASM @@ -0,0 +1,1044 @@ +************************************************************** +* +* Software: George Petro, Todd Allen +* Initiated: 1989? +* +* Modified: Mark Turmell, 7/17/90 -Total Carnage +* Shawn Liptak, 7/?/91 -Speed improvements +* Shawn Liptak, 7/?/91 -SL type stuff +* Shawn Liptak, 8/30/91 -New collision loop +* Shawn Liptak, 9/18/91 -Pixscan improvements +* Shawn Liptak, 2/11/92 -Started basketball +* Jason Skiles, 10/13/93 -Started WWF Robotron +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 10/13/93 15:19 +************************************************************** + .file "coll2.asm" + .title "collision routines" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "game.equ" + .include "imgtbl.glo" + .include "macros.h" + +;sounds + + + +;refs +; .ref ball_hit + + ;from ROBO.ASM + .ref player_die + .ref bullet_die + .ref grunt_shot,grunt_die + .ref post_die + .ref human_saved,human_killed,human_hitpost + .ref hulk_pushback + .ref sphereoid_die,enforcer_die,spark_die + .ref quark_die,tank_die,shell_die + +;defs + +;ram + + BSSX coll_stop ,16 ;!0=Stop scan on current obj + .bss PList ,32*(30+1) ;List of objs of class player + .bss NList ,32*(30+1) ;List of objs of class neutral + .bss EList ,32*(100+1) ;List of objs of class enemy + .bss HList ,32*(40+1) ;List of humans + .bss KList ,32*(20+1) ;List of hulks + BSSX CCCCount ,16 ;Col Check Cycle Counter. + +;NOBJ=# objects to display + + + +**************************************************************************** +* When writing collision routines which are to be called from the collision +* scanner in this file, the following things should be taken into +* consideration: +* The collision routines are called, not created. +* The collision routine receives a ptr to the victims OBJ in A8 +* The collision routine receives a ptr to the killers OBJ in A0 +* The collision routine can destroy A0,A8,A14,B0,B1. +* Other registers must be preserved! +* +* When OBJ1,OBJ2 collide, two routines are called, one with +* OBJ1 in A8 and the other with OBJ2 in A8. A collision routine +* should only affect the victim, and not the killer. +* If a victim object is deleted, it will not be scanned futher. +* If any other object is deleted, the collision scan will be aborted. +* To prevent multiple simultaneous collisions of the same victim +* object, the object ID of the victim object should be modified +* by the collision routine, if the victims nature is changed. + + + +**************************************************************************** +* Collision loop (New version) + + SUBR collisions + + SLEEPK 1 + + move @CCCCount,a0 + inc a0 + move a0,@CCCCount + + move @WORLDTLX+16,a6 ;A6=Xmin + move a6,a7 + addi 100,a7 ;A7=Xmax + move a7,b3 + callr collx + + move b3,a6 + move a6,a7 + addi 100,a7 + move a7,b3 + callr collx + + move b3,a6 + move a6,a7 + addi 100,a7 + move a7,b3 + callr collx + + move b3,a6 + move a6,a7 + addi 100,a7 + callr collx + + jruc collisions + +******************************** +* Build lists and collide based on X +* A6=XMin +* A7=XMax (+1) + +collx + movi OBJLST,a0 ;Object list to check + + movi HList,a8 + movi KList,b8 + movi PList,a9 ;Build collision lists + move a9,b4 ;Set A5/B4 for 1st collision call + movi EList,a10 + move a10,a5 + movi NList,a11 + jruc mklists + +csr20 move a0,*a10+,L ;Insert on enemy list +mklists move *a0,a0,L ;Get next obj + jrz gotlists + + movb *a0(OFLAGS+B_NOCOLL-7),a2 + jrn mklists ;Not collideable? + + move *a0(OXPOS),a1 ;Obj can lie on max/min boundary + cmp a7,a1 + jrge mklists ;Out of range? + + move *a0(OSIZEX),a2 + add a2,a1 + cmp a6,a1 + jrle mklists ;Out of range? + + move *a0(OID),a2 ;Check Class + cmpi 0FFFF8600h,a2 + jreq csrHULK + move a2,a2 + jrn csr20 ;Enemy? + btst 14,a2 + jrnz csr40 ;Player? + + cmpi CLSNEUT|TYPHUMAN,a2 + jreq csrHU ;Human? + + move a0,*a11+,L ;Insert on neutral list + jruc mklists + +csrHU move a0,*a8+,L ;Insert on human list + jruc mklists + +csrHULK + move a0,b14 + move b14,*b8+,L ;Insert on hulk list + jruc mklists + +csr40 move a0,*a9+,L ;Insert on player list + jruc mklists + +gotlists + move a0,*a8,L ;Null terminate each list + move a0,*a9,L + move a0,*a10,L + move a0,*a11,L + + callr ColLists ;Collide enemy to player + + movi NList,a5 + movi PList,b4 + callr ColLists ;Collide neutral to player + + move @CCCCount,a0 + btst 0,a0 + jrnz #skip_NE + movi NList,a5 + movi EList,b4 + callr ColLists ;Collide neutral to enemy +#skip_NE ; every third (2nd, really) cycle + + move @CCCCount,a0 + andi 07h,a0 + jrnz #skip_HK + movi HList,a5 + movi KList,b4 + callr ColLists ;Collide human to hulk +#skip_HK ; every eighth cycle + + movi HList,a5 + movi PList,b4 + callr ColLists ;Collide human to player + + move @CCCCount,a0 + andi 03h,a0 + jrnz #skip_HN + movi HList,a5 + movi NList,b4 + callr ColLists ;Collide human to neutral +#skip_HN ; every fourth frame + + move @CCCCount,a0 + andi 07h,a0 + jrnz #skip_KN + movi KList,a5 + movi NList,b4 + callr ColLists ;Collide hulk to neutral +#skip_KN ; every eighth frame only + + movi KList,a5 + movi PList,b4 +; callr ColLists ;Collide hulk to player + +******************************** +* Collide objects on list A5 with those on LIST B4 +* A5,B4=ptrs to null terminated tables of object ptrs + +ColLists +CLstsLp0 + move *a5+,a1,L + jrz scndone + ;Load up coors of obj from first list + move *a1(OXPOS),a9 ;A9=OBJ1 Xmin + jrz CLstsLp0 ;Deleted? + move *a1(OSIZEX),a10 ;A10=OBJ1 Xmax (+1) + add a9,a10 + move *a1(OYPOS),a7 ;A7=OBJ1 Ymin + move *a1(OSIZEY),a11 ;A11=OBJ1 Ymax (+1) + add a7,a11 + move *a1(ODXOFF),a14,W + sub a14,a10 + move *a1(ODYOFF),a14,W + sub a14,a11 + move b4,a6 ;Load head of second list + +PScnLp1 move *a6+,a2,L + jrz CLstsLp0 + +; movb *a2(OFLAGS+B_3D-7),a0 +; jrn #3d ;3D mode? (Maybe all????) + + move *a2(OYPOS),a0 ;Check objs A1,A2 for intersection + cmp a11,a0 +; jrge PScnLp1 ;Y2Min >= Y1Max? + jrge CLstsLp0 ;Y2Min >= Y1Max? + move *a2(OSIZEY),a14 + add a14,a0 + move *a2(ODYOFF),a14 + sub a14,a0 + cmp a7,a0 + jrle PScnLp1 ;Y2Max <= Y1Min? + +#3d move *a2(OXPOS),a0 ;Signed compares because objs may lie on 0 + jrz PScnLp1 ;Deleted? + cmp a10,a0 + jrge PScnLp1 ;X2Min >= X1Max? + move *a2(OSIZEX),a14 + add a14,a0 + move *a2(ODXOFF),a14 + sub a14,a0 + cmp a9,a0 + jrle PScnLp1 ;X2Max <= X1Min? + + callr ColFunc ;>Call colfunc for obj A1 and A2 + move b0,b1 ;B1=*Collision routine for obj A1 + SWAP a1,a2 + callr ColFunc + SWAP a1,a2 + move b0,b2 ;B2=*Collision routine for obj A2 + or b1,b0 ;Set z flag if both are zero + jrz PScnLp1 + + movb *a1(OFLAGS+B_PIXSCAN-7),a14 ;Is PIXSCAN ON + jrn DoPScn0 + movb *a2(OFLAGS+B_PIXSCAN-7),a14 ;Is PIXSCAN ON + jrnn SkPxScn0 +DoPScn0 callr PIXSCAN + jrnc PScnLp1 ;BR=THIS WASN'T REALLY A COLLISION +SkPxScn0 + + clr a0 + move a0,@coll_stop ;Clr flag + + move b1,b1 + jrz PObj2Col + move a1,a8 + move a2,a0 + call b1 ;Call collision for A1 + +PObj2Col + move b2,b2 + jrz PCkFree + move a2,a8 + move a1,a0 + call b2 ;Call collision for A2 + +PCkFree move @coll_stop,a0 + jrz PScnLp1 ;Continue scan? + jruc CLstsLp0 + +scndone rets + + +**************************************************************************** +* Return in B0 routine for obj A1 struck by obj A2 +* Trashes A3-A4 + +ColFunc + movb *a1(OID+8),a3 + movb *a2(OID+8),a4 + sll 32-5,a3 + srl 17,a3 ;32 Long Word Align + sll 32-5,a4 + srl 22,a4 ;Long Align + add a4,a3 + addi TypeTbl,a3 + + move *a3,a3,L + jump a3 ;Routine can trash A0/A3/A4/A8/A14 + + +**************************************************************************** +* These are the COLLISION FUNCTIONS +* A collision function is selected by the routine ColFunc +* which uses the TYPE field of the victims OID to select a subtable +* and indexes the subtable with the TYPE field of the killer. +* This gives a ptr to a COLLISION FUNCTION which returns +* the COLLISION ROUTINE to be called for the victim in B0. +* The COLLISION FUNCS can destroy registers A0,A3,A4,A8 +**************************************************************************** + +TypeTbl +;0000 +;NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;100 +;Player (PL) + .LONG NULL, NULL, NULL, PLGR, NULL, PLPO, PLHL, NULL + .LONG PLSP, PLEN, PLSK, PLQU, PLTA, PLSH, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;200 +;Bullet (from player) (BL) + .LONG NULL, NULL, NULL, BLGR, NULL, BLPO, BLHL, NULL + .LONG BLSP, BLEN, BLSK, BLQU, BLTA, BLSH, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;300 +;GRUNT (GR) + .LONG NULL, NULL, GRBL, NULL, NULL, GRPO, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;400 +;Human (HU) + .LONG NULL, HUPL, NULL, NULL, NULL, HUPO, HUHL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;500 +;Post (PO) + .LONG NULL, NULL, POBL, POGR, NULL, NULL, POHL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;600 +;Hulk (HL) + .LONG NULL, NULL, HLBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;700 +;Text + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;800 +;Sphereoid (SP) + .LONG NULL, NULL, SPBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;900 +;Enforcer (EN) + .LONG NULL, NULL, ENBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;a00 +;Spark (SK) + .LONG NULL, NULL, SKBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;b00 +;Quark (QU) + .LONG NULL, NULL, QUBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;c00 +;Tank (TA) + .LONG NULL, NULL, TABL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;d00 +;SHELL (SH) + .LONG NULL, NULL, SHBL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;e00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;f00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1000 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1100 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1200 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1300 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1400 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1500 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1600 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1700 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1800 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1900 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1a00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1b00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1c00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1d00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1e00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +;1f00 +;Free + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + .LONG NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + +NULL clr b0 + rets + +;Jason's Robotron Collision + +PLGR ;player hits grunt +PLPO ;player hits post +PLHL ;player hits hulk +PLSP ;player hits sphereoid +PLEN ;player hits enforcer +PLSK ;player hits spark +PLQU ;player hits quark +PLTA ;player hits tank +PLSH ;player hits shell + movi player_die,b0 + rets + +BLGR ;bullet hits grunt +BLPO ;bullet hits post +BLHL ;bullet hits hulk +BLSP ;bullet hits sphereoid +BLEN ;bullet hits enforcer +BLSK ;bullet hits spark +BLQU ;bullet hits quark +BLTA ;bullet hits tank +BLSH ;bullet hits shell + movi bullet_die,b0 + rets + +GRBL ;GRUNT hits bullet + movi grunt_shot,b0 + rets + +GRPO ;GRUNT hits post + movi grunt_die,b0 + rets + +HUPL ;human hits player + movi human_saved,b0 + rets + +HUHL ;human hits hulk + movi human_killed,b0 + rets + +HUPO ;human hits post + movi human_hitpost,b0 + rets + +POBL ;post hits bullet +POGR ;post hits grunt +POHL ;post hits hulk + movi post_die,b0 + rets + +HLBL ;hulk hits bullet + movi hulk_pushback,b0 + rets + +SPBL ;sphereoid hits bullet + movi sphereoid_die,b0 + rets + +ENBL ;enforcer hits bullet + movi enforcer_die,b0 + rets + +SKBL ;spark hits bullet + movi spark_die,b0 + rets + +QUBL ;quark hits bullet + movi quark_die,b0 + rets + +TABL ;tank hits bullet + movi tank_die,b0 + rets + +SHBL ;shell hits bullet + movi shell_die,b0 + rets + +**************************************************************************** +*COLLISION ROUTINE +*A1=OBJECT ONE +*A2=OBJECT TWO +*RETURNS: CS= COLLISION, CC= NO COLLISION +* +* CLOBBERS A14 +*CREATE TIME SLICE WHILE LOCKING OUT INTERRUPTS + +PIXSCAN + mmtm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13 + mmtm sp,b0,b1 + + move a1,a10 ;A10=*Obj0 + move a2,a8 ;A8=*Obj1 + dint + move *a10(OXPOS),a3 ;Set up object box TLX,TLY + move *a10(OYVAL),a14,L + movy a14,a3 ;A3=Obj0 Y:X + + move *a8(OXPOS),a4 + move *a8(OYVAL),a14,L + movy a14,a4 ;A4=Obj1 Y:X + + move *a10(OCTRL),a6 + move a6,b0 ;B0=flags object 0 + move *a8(OCTRL),a6 + move a6,b1 ;B1=flags object 1 + + move *a10(OIMG),a9,L ;A9=*Image 0 + move *a8(OIMG),a7,L ;A7=*Image 1 + eint + + move *a9,a5,L ;ISIZE + move *a7,a6,L ;ISIZE + addxy a3,a5 ;A5=Obj0 lower rgt Y:X + addxy a4,a6 ;A6=Obj1 lower rgt Y:X + cmpxy a6,a3 ;compare (lrx1,lry1) to (tlx0,tly0) + JRXGE CSFAIL + JRYGE CSFAIL + cmpxy a4,a5 ;compare (tlx1,tly1) to (lrx0,lry0) + JRXLE CSFAIL + JRYLE CSFAIL + + +*A11=XOFF0 +*A12=XOFF1 + move a3,a2 ;>Calc XOFF0,XOFF1,XSCAN + subxy a4,a2 + sext a2 + jrnn clx1 + neg a2 + move a2,a11 ;object 1 to the right + clr a12 + move a4,a13 ;rightmost top left + jruc clx2 + +clx1 move a2,a12 ;object 0 to the right + clr a11 + move a3,a13 ;rightmost top left +clx2 cmpxy a5,a6 ;find leftmost lower right + jrxn clx3 + subxy a5,a13 + jruc clx4 + +clx3 subxy a6,a13 +clx4 sext a13 + neg a13 ;A13=XSCAN + + ;>Calc YOFF0,YOFF1,YSCAN + sra 16,a3 ;Kill X half + sra 16,a4 + sra 16,a5 + sra 16,a6 + move a3,a2 ;A3=YOFF1 + sub a4,a2 ;A2=YOFF0 + jrnn cly1 + neg a2 + clr a3 ;object 1 to the right + move a4,a14 ;rightmost top left + jruc cly2 + +cly1 move a3,a14 ;object 0 to the right + move a2,a3 + clr a2 +cly2 cmp a5,a6 ;find leftmost lower right + jrn cly3 + sub a5,a14 + jruc cly4 +cly3 sub a6,a14 +cly4 neg a14 ;A14=YSCAN + +*A2=YOFF0 +*A3=YOFF1 +*A4=IMAGE SOURCE ADDRESS TEMP +*A5=WIDTH TEMP +*A7=IMAGE 1 DATA HEADER POINTER +*A8=IMAGE 1 OBJECT POINTER +*A9=IMAGE 0 DATA HEADER POINTER +*A10=IMAGE 0 OBJECT POINTER +*A11=XOFF0 +*A12=XOFF1 +*A13=XSCAN +*A14=YSCAN + +*CALCULATE OBJECT 0 STARTAD, HINC0, VINC0 + + move *a9(ISAG),a4,L ;Get image source address + move *a9,a5 ;Get ISIZEX + addk 3,a5 ;correct erroneous width (thanx, warren) + srl 2,A5 + sll 2,A5 + +*CHECK OBJECT 0 FLIPS + + btst B_FLIPH,b0 + jrnz CL0HF ;HORIZONTAL FLIP + btst B_FLIPV,b0 + jrnz CL0VF ;VERTICAL FLIP + + ;NO FLIP CASE + move a5,a1 ;Get width + mpyu a2,a1 ;Mult width x yoff + add a11,a1 ;Add in x offset + sll 3,a1 ;Correct for byte addressing + add a1,a4 ;A4=STARTAD0=IMAGEAD0+(YOFF0 X W0) + XOFF + sub a13,a5 ;A5=VINC0=W0-XScan + sll 3,a5 ;Correct for pixel addressing + movk 8,a2 ;A2=HINC0 + jruc CLOBJ1 + + +CL0HF BTST B_FLIPV,B0 ;VERT FLIP TOO? + JRNE CL0HVF ;HORIZ AND VERT FLIP + ;HORIZONTAL FLIP + MOVE A5,A1 ;GET WIDTH + MPYU A2,A1 ;MULT WIDTH X Y OFFSET + ADD A5,A1 ;ADD IN WIDTH + SUB A11,A1 ;SUBTRACT X OFFSET + DEC A1 ;-1 MORE + SLL 3,A1 ;CORRECT FOR BYTE ADDRESSING + ADD A1,A4 ;A4=STARTAD0=IMAGEAD0+(YOFF0*W0)+W0-XOFF0-1 + MOVI -8,A2 ;A2=HINC0 + ADD A13,A5 ;A5=VINC0=W0+XSCAN + SLL 3,A5 ;CORRECT FOR PIXEL ADDRESSING + JRUC CLOBJ1 + + ;VERTICAL FLIP +CL0VF MOVE *A9(ISIZEY),A1 ;GET HEIGHT + SUB A2,A1 ;SUBTRACT YOFF0 + DEC A1 + MPYU A5,A1 ;MULTIPLY BY WIDTH + ADD A11,A1 ;ADD IN X OFFSET + SLL 3,A1 ;CORRECT FOR PIXEL ADDRESSING + ADD A1,A4 ;A4=STARTAD0=IMAGEAD0+(H0-YOFF0-1)W0+XOFF0 + NEG A5 ;-W0 + SUB A13,A5 ;-XSCAN + SLL 3,A5 ;A5=VINC0=-W0-XSCAN + MOVK 8,A2 ;A2=HINC0 + JRUC CLOBJ1 + + ;VERTICAL AND HORIZONTAL FLIP +CL0HVF MOVE *A9(ISIZEY),A1 ;GET HEIGHT + SUB A2,A1 ;SUBTRACT YOFF0 + DEC A1 + MPYU A5,A1 ;MULTIPLY BY WIDTH + ADD A5,A1 ;ADD IN WIDTH (W0) + SUB A11,A1 ;SUBTRACT XOFF0 + DEC A1 + SLL 3,A1 ;CORRECT FOR PIXEL ADDRESSING + ADD A1,A4 ;A4=STARTAD0=(H0-YOFF0-1)W0+W0-XOFF0-1 + NEG A5 ;-W0 + ADD A13,A5 ;+XSCAN + SLL 3,A5 ;A5=VINC0=-W0-XSCAN + MOVI -8,A2 ;A2=HINC0 + + +*CALCULATE OBJECT 1 STARTAD, HJUMP, VJUMP + +*A2=HINC0 +*A3=YOFF1, HINC1 +*A4=STARTAD0 +*A5=VINC0 +*A6=STARTAD1 +*A7=IMAGE 1 DATA HEADER POINTER +*A8=IMAGE 1 OBJECT POINTER +*A9=IMAGE 0 DATA HEADER POINTER +*A10=IMAGE 0 OBJECT POINTER +*A11=W1, VINC1 +*A12=XOFF1 +*A13=XSCAN +*A14=YSCAN + +CLOBJ1 move *a7(ISAG),a6,L ;Get image source address + move *a7,a11 ;Get ISIZEX + addk 3,a11 ;correct erroneous width (thanx, warren) + srl 2,A11 + sll 2,A11 + + BTST B_FLIPH,B1 ;CHECK OBJECT 1 FLIPS + JRNE CL1HF ;HORIZONTAL FLIP + BTST B_FLIPV,B1 + JRNE CL1VF ;VERTICAL FLIP + +*NO FLIP CASE +*A3=HINC1=8 (BYTE AT A TIME) +*A11=VINC1=W1-XSCAN +*A6=STARTAD1=IMAGEAD1+(YOFF1 X W1) + XOFF1 + + MOVE A11,A1 ;GET WIDTH + MPYU A3,A1 ;MULT WIDTH X YOFF + ADD A12,A1 ;ADD IN X OFFSET + SLL 3,A1 ;CORRECT FOR BYTE ADDRESSING + ADD A1,A6 ;ADD TO SOURCE ADDRESS + MOVK 8,A3 ;HINC1 + SUB A13,A11 ;VINC1=W1-XSCAN + SLL 3,A11 ;CORRECT FOR PIXEL ADDRESSING + JRUC CSH + +*HORIZONTAL FLIP +*A3=HINC1=-8 +*A11=VINC1=W1+XSCAN +*A6=STARTAD1=IMAGEAD1+(YOFF1 X W1) + W1-XOFF1-1 +CL1HF BTST B_FLIPV,B1 ;VERT FLIP TOO? + JRNE CL1HVF ;HORIZ AND VERT FLIP + MOVE A11,A1 ;GET WIDTH + MPYU A3,A1 ;MULT WIDTH X Y OFFSET + ADD A11,A1 ;ADD IN WIDTH + SUB A12,A1 ;SUBTRACT X OFFSET + DEC A1 ;-1 MORE + SLL 3,A1 ;CORRECT FOR BYTE ADDRESSING + ADD A1,A6 + MOVI -8,A3 ;HINC1 + ADD A13,A11 ;VINC1=W1+XSCAN + SLL 3,A11 ;CORRECT FOR PIXEL ADDRESSING + JRUC CSH + +*VERTICAL FLIP +*A3=HINC1=8 +*A11=VINC1=-W1-XSCAN +*A6=STARTAD1=IMAGEAD1+(H1-YOFF1-1)W1+XOFF1 +CL1VF MOVE *A7(ISIZEY),A1 ;GET HEIGHT + SUB A3,A1 ;SUBTRACT YOFF1 + DEC A1 + MPYU A11,A1 ;MULTIPLY BY WIDTH + ADD A12,A1 ;ADD IN X OFFSET + SLL 3,A1 ;CORRECT FOR PIXEL ADDRESSING + ADD A1,A6 ;ADD TO SOURCE ADDRESS + NEG A11 ;-W1 + SUB A13,A11 ;-XSCAN + SLL 3,A11 ;CORRECT FOR PIXEL ADDRESSING + MOVK 8,A3 ;HINC1 + JRUC CSH + +*VERTICAL AND HORIZONTAL FLIP +*A3=HINC1=-8 +*A11=VINC1=-W1-XSCAN +*A6=STARTAD1=(H1-YOFF1-1)W1+W1-XOFF1-1 +CL1HVF MOVE *A7(ISIZEY),A1 ;GET HEIGHT + SUB A3,A1 ;SUBTRACT YOFF1 + DEC A1 + MPYU A11,A1 ;MULTIPLY BY WIDTH + ADD A11,A1 ;ADD IN WIDTH (W1) + SUB A12,A1 ;SUBTRACT XOFF1 + DEC A1 + SLL 3,A1 ;CORRECT FOR PIXEL ADDRESSING + ADD A1,A6 ;ADD TO SOURCE ADDRESS + NEG A11 ;-W1 + ADD A13,A11 ;+XSCAN + SLL 3,A11 ;CORRECT FOR PIXEL ADDRESSING + MOVI -8,A3 ;HINC1 + +*A1= WIDTH COUNTER XSCAN +*A2=H INCREMENT IMAGE 0 +*A3=H INCREMENT IMAGE 1 +*A4=INDEX TO IMAGE 0 +*A5=V INCREMENT IMAGE 0 +*A6=INDEX TO IMAGE 1 +*A7=IMAGE 1 DATA HEADER POINTER +*A8=IMAGE 1 OBJECT POINTER +*A9=IMAGE 0 DATA HEADER POINTER +*A10=IMAGE 0 OBJECT POINTER +*A11=V INCREMENT IMAGE 1 +*A13=WIDTH COUNT XSCAN +*A14=HEIGHT COUNT YSCAN + +CSH cmpi >80,a14 ;no scan if xscan, yscan values out of range + jrhs CSFAIL + cmpi >80,a13 + jrhs CSFAIL + + dint + move @INTENB,a0 + andni X1E,a0 + move a0,@INTENB + eint + +csh0 move @DMACTRL,a0 + jrn csh0 ;DMA busy? + + .if YUNIT + setf 6,0,0 ;6 bit field + .else + setf 8,0,0 ;8 bit field + .endif + +csh1 move a13,a1 ;load line countdown horiz counter + +cshl move *a4,a0 ;Check image 0 corresponding non zeroes + jrz csnxh ;No hit? + + move *a6,a0 ;check image 1 + jrnz pshit ;Hit? + +csnxh add a2,a4 ;Add horiz increments + add a3,a6 + dsjs a1,cshl ;Loop horizontal + + add a5,a4 ;Add vert increments + add a11,a6 + dsjs a14,csh1 ;Loop vert + + setf 16,1,0 ;Normal field + +CSFAIL move b13,b13 + jrz psnodma ;Skip DMA restart? + dint + move @INTENB,a0 + ori X1E,a0 + move a0,@INTENB + eint +psnodma clrc ;No hit + jruc psx ;Exit + + +pshit setf 16,1,0 ;Normal field + move b13,b13 + jrz csflags ;Skip DMA restart? + dint + move @INTENB,a0 + ori X1E,a0 + move a0,@INTENB + eint +csflags setc ;Hit + +psx mmfm sp,b0,b1 + mmfm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13 + rets + + + +******************************** +*PLAYER HAS BEEN COLLIDED WITH +*TELL THIS COLLISION CHECK THAT PLAYER IS REALLY SHORTER THAN HE IS +*THEN RETURN CARRY SET IF STILL A HIT, CARRY CLEAR IF THIS SHOULD NOT BE +*A COLLISION. +*A0=OBJECT THAT HIT PLAYER +*A8=PLAYER LEGS IMAGE PTR + +;SHORT_PLYR +; MOVE *A8(OYPOS),A7 ;A7 - OBJ1 Ymin +; ADDK 3,A7 ;ADDI 0 +; MOVE *A0(OID),A11 +; zext a11 +;; CMPI CLSENMY|TYPORB,A11 +;; JRNE SP0 +;; SUBK 5,A7 +;; MOVE *A8(OSIZEY),A11,W ;A11 - OBJ1 Ymax +;; SUBK 8,A11 ;MAKE LEGS SHORTER IN LENGTH! +;; JRUC SP2 +;;SP0 +; CMPI CLSNEUT|TYPMINE,A11 +; JRNE SP1 +; ADDK 12,A7 ;15 +; MOVE *A8(OSIZEY),A11 ;A11 - OBJ1 Ymax +; SUBK 19,A11 ;MAKE LEGS SHORTER IN LENGTH! ;21 +; JRUC SP2 +;SP1 +; move *A8(OSIZEY),A11 ;A11 - OBJ1 Ymax +; SUBK 20,A11 ;19 ;SUBI 13 16 ;MAKE LEGS SHORTER IN LENGTH! +;SP2 add A7,A11 +; move *A0(OYPOS),A6 ;CHECK OBJS A0,A8 for intersection +; cmp A11,A6 +; jrgt CLRCR ;Y2Min > Y1Max +; move *A0(OSIZEY),A11 +; add A11,A6 +; cmp A7,A6 +; jrlt CLRCR ;Y2Max < Y1Min +; +;;NOW X CHECK +; +; move *A8(OXPOS),A7 ;A9 - OBJ1 Xmin +; addk 6,a7 +; move *A8(OSIZEX),A11 ;A10 - OBJ1 Xmax +; subk 6,a11 +; add A7,A11 +; move *A0(OXPOS),A6 ;USE SIGNED COMPARES BECAUSE OBJS MAY LIE ON ZERO +; cmp A11,A6 +; jrgt CLRCR ;X2Min > X1Max +; move *A0(OSIZEX),A11 +; add A11,A6 +; cmp A7,A6 +; jrlt CLRCR ;X2Max < X1Min +; +; move @PCNT,a6 +; btst 0,a6 +; JRZ CLRCR +; SETC ;GOT A BOX INTERSECTION +; RETS +;CLRCR CLRC +; RETS + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/COLLIS.ASM b/COLLIS.ASM new file mode 100755 index 0000000..1c82f42 --- /dev/null +++ b/COLLIS.ASM @@ -0,0 +1,965 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 9/10/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "collis.asm" + .title "game collision 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 "special.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref process_ptrs + .ref get_opp_plyrmode + .ref round_tickcount + .ref wrestler_hit,ck_live_teammates + .ref special_hit + .ref wrestler_hit_special + + + .ref plyr1_objlist + .ref plyr2_objlist + .ref neutral_objlist + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + + .if DEBUG + BSSX safe_plyr,16 + .endif +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + + SUBR overlap_collision + + ;don't check this for zombies + move *a13(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #exit + + movi process_ptrs,a9 + movi NUM_WRES,a10 +#collis_loop + .align + move *a9+,a11,L + jrz #inactive + cmp a11,a13 + jreq #skip ;skip self + + move *a11(PLYRMODE),a14 ;walk through dead + cmpi MODE_DEAD,a14 + jreq #skip + + move *a11(ANIMODE),a0 + btst MODE_OVERLAP_BIT,a0 ;allow overlap? + jrnz #skip + + ;skip this. if you wanna be able to go through someone, set your + ;MODE_OVERLAP bit. NOCOLLIS should only apply to attack collisions. +; move *a13(ANIMODE),a0 +; move *a11(ANIMODE),a1 +; or a1,a0 +; btst MODE_NOCOLLIS_BIT,a0 +; jrnz #skip + + move *a11(ATTACH_PROC),a0,L ;skip this if attached + cmp a0,a13 + jreq #skip + + + move *a13(PLYRMODE),a0 ;if player is on ground and + cmpi MODE_ONGROUND,a0 ;then he can't move + jreq #skip + + cmpi MODE_DEAD,a0 ;check dead too + jreq #skip + + move *a13(PLYRMODE),a0 ;if player is running (or bouncing) + cmpi MODE_RUNNING,a0 ;and opponent is on ground + jreq #running ;then run through him + cmpi MODE_BOUNCING,a0 + jrne #not_running +#running + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jreq #skip +#not_running + + + move *a13(ANIMODE),a0 + btst MODE_OVERLAP_BIT,a0 ;allow overlap? + jrnz #skip + + move *a13(OBJ_COLLX2),a5 + move *a11(OBJ_COLLX1),a1 + sub a1,a5 ;Ax2 - Bx1 + jrle #no_overlap ;a5 = ROX + + move *a13(OBJ_COLLX1),a0 + move *a11(OBJ_COLLX2),a6 + sub a0,a6 ;Bx2 - Ax1 + jrle #no_overlap ;a6 = LOX + + move *a13(OBJ_COLLZ2),a7 + move *a11(OBJ_COLLZ1),a1 + sub a1,a7 ;Az2 - Bz1 + jrle #no_overlap ;a7 = BOZ + + move *a13(OBJ_COLLZ1),a0 + move *a11(OBJ_COLLZ2),a8 + sub a0,a8 ;Bz2 - Az1 + jrle #no_overlap ;a8 = TOZ + + move *a13(OBJ_COLLY2),a1 + move *a11(OBJ_COLLY1),a0 + sub a0,a1 ;Ay2 - By1 + jrle #no_overlap + + move *a13(OBJ_COLLY1),a1 + move *a11(OBJ_COLLY2),a0 + sub a1,a0 ;By2 - Ay1 + jrle #no_overlap + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jreq #up_down + + move a5,a0 + cmp a6,a5 ;a5-a6 (ROX-LOX) + jrlt #rox_min + move a6,a0 +#rox_min + move a7,a1 + cmp a8,a7 ;a7-a8 (BOZ-TOZ) + jrlt #boz_min + move a8,a1 +#boz_min + + move *a11(PLYRMODE),a14 ;if opp is on ground then + cmpi MODE_ONGROUND,a14 ;slide off in Z + jrne #skp + + srl 1,a0 ;DZ / 2 +#skp + + cmp a1,a0 ;a0-a1 (MOX-MOZ) + + jrgt #up_down + + +;X glitch too big? + cmpi 3dh,a1 + jrgt #up_down + + +;#left_right + + cmp a6,a5 ;a5-a6 (ROX-LOX) + jrgt #right + +;#left + move *a13(OBJ_XPOSINT),a0 + sub a5,a0 ;XPOS-ROX + move a0,*a13(OBJ_XPOSINT) + + jruc #ud2 + +#right + move *a13(OBJ_XPOSINT),a0 + add a6,a0 ;XPOS+LOX + move a0,*a13(OBJ_XPOSINT) + +#ud2 + move *a13(MOVE_DIR),a0 + jrz #exit + andi MOVE_UP|MOVE_DOWN,a0 + jrnz #exit + + movi 3,a0 + cmp a8,a7 ;a7-a8 (BOZ-TOZ) + jrgt #d2 + neg a0 +#d2 + move *a13(OBJ_ZPOSINT),a14 + add a0,a14 + move a14,*a13(OBJ_ZPOSINT) + rets + + + + + +#up_down + cmp a8,a7 ;a7-a8 (BOZ-TOZ) + jrgt #down +;#up + move *a13(OBJ_ZPOSINT),a0 + sub a7,a0 ;XPOS-BOZ + move a0,*a13(OBJ_ZPOSINT) + jruc #lr2 + +#down + move *a13(OBJ_ZPOSINT),a0 + add a8,a0 ;XPOS-TOZ + move a0,*a13(OBJ_ZPOSINT) + +#lr2 + move *a13(MOVE_DIR),a0 + jrz #exit + andi MOVE_LEFT|MOVE_RIGHT,a0 + jrnz #exit + + movi 3,a0 + cmp a6,a5 ;a5-a6 (ROX-LOX) + jrgt #r2 + neg a0 +#r2 + move *a13(OBJ_XPOSINT),a14 + add a0,a14 + move a14,*a13(OBJ_XPOSINT) + rets + + + + + + +#no_overlap + +#skip +#inactive + dsj a10,#collis_loop +#exit + rets + +#***************************************************************************** + + SUBR set_collision_boxes + + + move *a13(CUR_FRAME),a4,L + +;; move *a4(12*16),*a13(OBJ_BOXXOFF) ;x off +;; move *a4(13*16),*a13(OBJ_BOXYOFF) ;y off +;; move *a4(14*16),*a13(OBJ_BOXWIDTH) ;width +;; move *a4(15*16),*a13(OBJ_BOXHEIGHT) ;height + + movi -30,a0 + move a0,*a13(OBJ_BOXZOFF) + movi 60,a0 + move a0,*a13(OBJ_BOXDEPTH) + + move *a13(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + +;If running, have a smaller Z depth + + jrnz #next + + movi -15,a0 + move a0,*a13(OBJ_BOXZOFF) + movi 30,a0 + move a0,*a13(OBJ_BOXDEPTH) + jruc #norm + +#next + cmpi MODE_RUNNING,a0 + jrnz #norm + + movi -5,a0 + move a0,*a13(OBJ_BOXZOFF) + movi 10,a0 + move a0,*a13(OBJ_BOXDEPTH) + +#norm + + + +;*********************************************************** +; +;XJR - maybe add 100 or so to the initial Y-pos so +; that colly1 or y2 never become negative... +; +;*********************************************************** + + + + move *a13(OBJ_YPOSINT),a0 +; move *a4(14*16),a1 ;BOX YOFF + move *a4(IANI3Y),a1 ;BOX YOFF + sub a1,a0 + move a0,*a13(OBJ_COLLY2) +; move *a4(16*16),a1 ;BOX HEIGHT + move *a4(IANI3ID),a1 ;BOX HEIGHT + sub a1,a0 + move a0,*a13(OBJ_COLLY1) + + move *a13(OBJ_ZPOSINT),a0 + move *a13(OBJ_BOXZOFF),a1 + add a1,a0 + move a0,*a13(OBJ_COLLZ1) + move *a13(OBJ_BOXDEPTH),a1 + add a1,a0 + move a0,*a13(OBJ_COLLZ2) + + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #not_flipped + +;#flipped + move *a13(OBJ_XPOSINT),a0 +; move *a4(13*16),a1 ;BOX XOFF + move *a4(IANI3X),a1 ;BOX XOFF + sub a1,a0 + move a0,*a13(OBJ_COLLX2) +; move *a4(15*16),a1 ;BOX WIDTH + move *a4(IANI3Z),a1 ;BOX WIDTH + sub a1,a0 + move a0,*a13(OBJ_COLLX1) + rets + +#not_flipped + move *a13(OBJ_XPOSINT),a0 +; move *a4(13*16),a1 ;BOX XOFF + move *a4(IANI3X),a1 ;BOX XOFF + add a1,a0 + move a0,*a13(OBJ_COLLX1) +; move *a4(15*16),a1 ;BOX WIDTH + move *a4(IANI3Z),a1 ;BOX WIDTH + add a1,a0 + move a0,*a13(OBJ_COLLX2) + rets + +#***************************************************************************** + + .bss x1,16 + .bss x2,16 + .bss y1,16 + .bss y2,16 + .bss z1,16 + .bss z2,16 + + + SUBR check_collisions + + + callr object_collisions + + PUSH a13 + + + move @round_tickcount,a0 + andi 1,a0 + jrz #even + + + +;odd + movi process_ptrs+32*NUM_WRES,a4 + movi NUM_WRES,a5 +#collis_loop1 + move -*a4,a10,L + jrz #inactive1 + + move *a10(ANIMODE),a0 + btst MODE_CHECKHIT_BIT,a0 + jrz #inactive1 + + PUSH a4,a5 + + callr set_xyz + + + movi process_ptrs,a4 + movi NUM_WRES,a5 +#collis_loop2 + move *a4+,a13,L + jrz #inactive2 + cmp a10,a13 + jreq #skip_self + + PUSH a4,a5 + callr check_collis + PULL a4,a5 + + move *a10(ANIMODE),a0 + btst MODE_STATUS_BIT,a0 ;hit someone? + jrnz #done +#skip_self +#inactive2 + dsj a5,#collis_loop2 + + + + PULL a4,a5 +#inactive1 + dsj a5,#collis_loop1 + + PULL a13 + rets + +#done + PULL a4,a5 + PULL a13 + rets + + + +#even +#* + movi process_ptrs,a4 + movi NUM_WRES,a5 +#collis_loop1 + move *a4+,a10,L + jrz #inactive1 + + move *a10(ANIMODE),a0 + btst MODE_CHECKHIT_BIT,a0 + jrz #inactive1 + + PUSH a4,a5 + + callr set_xyz + + + movi process_ptrs,a4 + movi NUM_WRES,a5 +#collis_loop2 + move *a4+,a13,L + jrz #inactive2 + cmp a10,a13 + jreq #skip_self + + PUSH a4,a5 + callr check_collis + PULL a4,a5 + + move *a10(ANIMODE),a0 + btst MODE_STATUS_BIT,a0 ;hit someone? + jrnz #done +#skip_self +#inactive2 + dsj a5,#collis_loop2 + + + + PULL a4,a5 +#inactive1 + dsj a5,#collis_loop1 + + + PULL a13 + rets +#done + PULL a4,a5 + PULL a13 + rets + + +#***************************************************************************** +* a10 = * offensive process +* a13 = * defensive process + + SUBRP check_collis + + move *a13(ANIMODE),a0 + btst MODE_NOCOLLIS_BIT,a0 + jrnz #no_hit + + ;if you're immobilized, you can't hit anyone + move *a10(IMMOBILIZE_TIME),a0 + jrnz #no_hit + + move @x1,a0 + move *a13(OBJ_COLLX2),a1 + cmp a0,a1 ;Dx2 - Ox1 + jrlt #no_hit ;if Dx2 < Ox1 + + move @x2,a0 + move *a13(OBJ_COLLX1),a1 + cmp a0,a1 ;Dx1 - Ox2 + jrgt #no_hit ;if Dx1 > Ox2 + + move @y1,a0 + move *a13(OBJ_COLLY2),a1 + cmp a0,a1 ;Dy2 - Oy1 + jrlt #no_hit ;if Dy2 < Oy1 + + move @y2,a0 + move *a13(OBJ_COLLY1),a1 + cmp a0,a1 ;Dy1 - Oy2 + jrgt #no_hit ;if Dy1 > Oy2 + + move @z1,a0 + move *a13(OBJ_COLLZ2),a1 + cmp a0,a1 ;Dz2 - Oz1 + jrlt #no_hit ;Dz2 < Oz1 + + move @z2,a0 + move *a13(OBJ_COLLZ1),a1 + cmp a0,a1 ;Dz1 - Oz2 + jrgt #no_hit ;Dz1 > Oz2 + + ;we've found a hit. ignore if attacker is in SMART_ATTACK mode and + ; victim doesn't match his target. We check this AFTER a hit is + ; registered because it's an unlikely case and checking it beforehand + ; wastes time. + move *a10(STATUS_FLAGS),a0 + btst B_SMART_ATTACK,a0 + jrz #not_smart + move *a10(SMART_TARGET),a0,L + cmp a0,a13 + jrne #no_hit +#not_smart + + ;if attacker is in combo mode, only allow hits on his WHOIHIT. + move *a10(COMBO_COUNT),a14 + jrz #not_combo + move *a10(WHOIHIT),a14,L + cmp a13,a14 + jrne #no_hit +#not_combo + + ;check for a dead victim with live teammates. + move *a13(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jrne #not_dead + + move a13,a0 + calla ck_live_teammates + jrc #no_hit + + ;check for a dead victim and an AMODE_PUPPET attack. + move *a10(ATTACK_MODE),a14 + cmpi AMODE_PUPPET,a14 + jreq #no_hit + cmpi AMODE_PUPPET2,a14 + jreq #no_hit +#not_dead + + ;zombies can never be hit + move *a13(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #no_hit + + ;pinned wrestlers can only be hit by wrestlers who've done pins. + move *a10(STATUS_FLAGS),a14 + btst B_DID_PIN,a14 + jrnz #not_pinned + move *a13(STATUS_FLAGS),a14 + btst B_PINNED,a14 + jrnz #no_hit +#not_pinned + + ;make sure INRING values match + move *a10(INRING),a0 + move *a13(INRING),a14 + cmp a0,a14 + jrne #no_hit + + ;if victim is in MODE_INAIR or MODE_INAIR2, don't let pushes hit. + move *a10(ATTACK_MODE),a14 + cmpi AMODE_PUSH,a14 + jrne #no_pushfly + move *a13(PLYRMODE),a14 + cmpi MODE_INAIR,a14 + jreq #no_hit + cmpi MODE_INAIR2,a14 + jreq #no_hit +#no_pushfly + + ;if the victim is doing a push, his PUSH bit will be set in status + ; flags. If it is, only flying attacks can hit him. + move *a13(STATUS_FLAGS),a14,L + btst B_PUSH,a14 + jrz #not_push + move *a10(ATTACK_MODE),a14 + cmpi AMODE_FLYKICK,a14 + jreq #not_push + cmpi AMODE_BSTOMP,a14 + jreq #not_push + cmpi AMODE_BLBOWDROP,a14 + jreq #not_push + jruc #no_hit +#not_push + + ;if attacker is in MODE_WAITHITOPP, clear said bit and zero ANICNTs. + move *a10(ANIMODE),a14 + btst MODE_WAITHITOPP_BIT,a14 + jrz #skip_whopp + + andni MODE_WAITHITOPP,a14 + move a14,*a10(ANIMODE) + clr a14 + move a14,*a10(ANICNT) + move a14,*a10(ANICNT2) +#skip_whopp + + .if DEBUG + ;if safe_plyr is set, disregard attacks on players + move @safe_plyr,a14 + jrz #skip_safeplyr + move *a13(PLYR_TYPE),a14 + cmpi PTYPE_PLAYER,a14 + jreq #no_hit +#skip_safeplyr + .endif + + clr a14 ;false + move *a13(PLYRMODE),a0 + cmpi MODE_BLOCK,a0 + jrne #noblock + inc a14 ;true +#noblock + move a14,*a10(HITBLOCKER) + + movi MOVE_RIGHT,a0 + move *a10(OBJ_XPOSINT),a1 + move *a13(OBJ_XPOSINT),a2 + cmp a2,a1 + jrgt #hit_from_right + movi MOVE_LEFT,a0 +#hit_from_right + movi MOVE_DOWN,a14 + move *a10(OBJ_ZPOS),a1,L + move *a13(OBJ_ZPOS),a2,L + cmp a2,a1 + jrgt #hit_from_below + movi MOVE_UP,a14 +#hit_from_below + or a14,a0 + move a0,*a13(PLYR_HIT_SIDE) + move a0,*a10(PLYR_HIT_SIDE) + + move *a10(ANIMODE),a0 + ori MODE_STATUS,a0 ;this flag set whenever + move a0,*a10(ANIMODE) ;a successful hit + + calla wrestler_hit +#no_hit + rets + +#***************************************************************************** +* a10 = *process +* sets x1,x2,y1,y2,z1 and z2 + + SUBRP set_xyz + + move *a10(OBJ_YPOSINT),a0 + move *a10(OBJ_ATTYOFF),a1 + add a1,a0 + move a0,@y1 + move *a10(OBJ_ATTHEIGHT),a1 + add a1,a0 + move a0,@y2 + + move *a10(OBJ_ZPOSINT),a0 + move *a10(OBJ_ATTZOFF),a1 + add a1,a0 + move a0,@z1 + move *a10(OBJ_ATTDEPTH),a1 + add a1,a0 + move a0,@z2 + + +; move *a10(FACING_DIR),a14 +; btst PLAYER_RIGHT_BIT,a14 +; jrnz #facing_right + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #facing_right + + +;facing_left + move *a10(OBJ_XPOSINT),a0 + move *a10(OBJ_ATTXOFF),a1 + sub a1,a0 + move a0,@x2 + move *a10(OBJ_ATTWIDTH),a1 + sub a1,a0 + move a0,@x1 + rets + +#facing_right + move *a10(OBJ_XPOSINT),a0 + move *a10(OBJ_ATTXOFF),a1 + add a1,a0 + move a0,@x1 + move *a10(OBJ_ATTWIDTH),a1 + add a1,a0 + move a0,@x2 + + rets + + +#***************************************************************************** +* +* a10 = * wrestler process to turn collisions off + + SUBR wres_collis_off + + move *a10(ANIMODE),a0 + andni MODE_CHECKHIT,a0 + move a0,*a10(ANIMODE) + rets + + +#***************************************************************************** + + SUBR object_collisions + +;FIX!!! This can point to a non existent proc + + movi plyr1_objlist,a0 + callr set_spobj_boxes + + movi plyr2_objlist,a0 + callr set_spobj_boxes + + movi neutral_objlist,a0 + callr set_spobj_boxes + + + movi plyr1_objlist,a6 + movi plyr2_objlist,a7 + callr objlist2objlist_collis + + + movi plyr1_objlist,a10 + callr objlist2player_collis + + movi plyr2_objlist,a10 + callr objlist2player_collis + + movi neutral_objlist,a10 + callr objlist2player_collis + + + rets + + +#***************************************************************************** +;a10 = objlist1 + +objlist2player_collis + + PUSH a13 + + move *a10,a10,L + jrz #done +#lp1 + + move *a10(SP_COLLX1),a0 + move *a10(SP_COLLX2),a1 + + move *a10(SP_COLLY1),a2 + move *a10(SP_COLLY2),a3 + + move *a10(SP_COLLZ1),a4 + move *a10(SP_COLLZ2),a5 + + + movi process_ptrs,a7 + movi NUM_WRES,a6 +#collis_loop + move *a7+,a13,L + jrz #inactive + + move *a13(ANIMODE),a14 + btst MODE_NOCOLLIS_BIT,a14 + jrnz #no_hit + +;check if projectile should hit this guy...(same side) + + move *a13(OBJ_COLLX2),a14 + cmp a0,a14 ;Dx2 - Ox1 + jrlt #no_hit ;if Dx2 < Ox1 + + move *a13(OBJ_COLLX1),a14 + cmp a1,a14 ;Dx1 - Ox2 + jrgt #no_hit ;if Dx1 > Ox2 + + move *a13(OBJ_COLLY2),a14 + cmp a2,a14 ;Dy2 - Oy1 + jrlt #no_hit ;if Dy2 < Oy1 + + move *a13(OBJ_COLLY1),a14 + cmp a3,a14 ;Dy1 - Oy2 + jrgt #no_hit ;if Dy1 > Oy2 + + move *a13(OBJ_COLLZ2),a14 + cmp a4,a14 ;Dz2 - Oz1 + jrlt #no_hit ;Dz2 < Oz1 + + move *a13(OBJ_COLLZ1),a14 + cmp a5,a14 ;Dz1 - Oz2 + jrgt #no_hit ;Dz1 > Oz2 + +;hit + calla wrestler_hit_special + + jruc #done + +#no_hit +#inactive + dsj a6,#collis_loop + + + move *a10(SP_NEXT),a10,L + jrnz #lp1 + +#done + + PULL a13 + rets + + +#***************************************************************************** +;a6 = objlist1 +;a7 = objlist2 + +objlist2objlist_collis + + move *a6,a6,L + jrz #done +#lp1 + move a7,a8 + move *a8,a8,L + jrz #done + + move *a6(SP_COLLX1),a0 + move *a6(SP_COLLX2),a1 + + move *a6(SP_COLLY1),a2 + move *a6(SP_COLLY2),a3 + + move *a6(SP_COLLZ1),a4 + move *a6(SP_COLLZ2),a5 + +#lp2 + move *a8(SP_COLLX2),a14 + cmp a0,a14 ;Dx2 - Ox1 + jrlt #no_hit ;if Dx2 < Ox1 + + move *a8(SP_COLLX1),a14 + cmp a1,a14 ;Dx1 - Ox2 + jrgt #no_hit ;if Dx1 > Ox2 + + move *a8(SP_COLLY2),a14 + cmp a2,a14 ;Dy2 - Oy1 + jrlt #no_hit ;if Dy2 < Oy1 + + move *a8(SP_COLLY1),a14 + cmp a3,a14 ;Dy1 - Oy2 + jrgt #no_hit ;if Dy1 > Oy2 + + move *a8(SP_COLLZ2),a14 + cmp a4,a14 ;Dz2 - Oz1 + jrlt #no_hit ;Dz2 < Oz1 + + move *a8(SP_COLLZ1),a14 + cmp a5,a14 ;Dz1 - Oz2 + jrgt #no_hit ;Dz1 > Oz2 + +;hit + calla special_hit + + jruc #done + +#no_hit + + move *a8(SP_NEXT),a8,L + jrnz #lp2 + + move *a6(SP_NEXT),a6,L + jrnz #lp1 + +#done + rets + + +#***************************************************************************** + +set_spobj_boxes + + move *a0,a0,L + jrz #done +#lp + + move *a0(SP_OBJ_YPOSINT),a1 + move *a0(SP_YOFF),a14 + add a14,a1 + move a1,*a0(SP_COLLY1) + move *a0(SP_HEIGHT),a14 + add a14,a1 + move a1,*a0(SP_COLLY2) + + + move *a0(SP_OBJ_ZPOSINT),a1 + move *a0(SP_ZOFF),a14 + add a14,a1 + move a1,*a0(SP_COLLZ1) + move *a0(SP_DEPTH),a14 + add a14,a1 + move a1,*a0(SP_COLLZ2) + + + move *a0(SP_OBJCONTROL),a14 + btst B_FLIPH,a14 + jrz #not_flipped + +;#flipped + move *a0(SP_OBJ_XPOSINT),a1 + move *a0(SP_XOFF),a14 + sub a14,a1 + move a1,*a0(SP_COLLX2) + move *a0(SP_WIDTH),a14 + sub a14,a1 + move a1,*a0(SP_COLLX1) + jruc #cnt + +#not_flipped + move *a0(SP_OBJ_XPOSINT),a1 + move *a0(SP_XOFF),a14 + add a14,a1 + move a1,*a0(SP_COLLX1) + move *a0(SP_WIDTH),a14 + add a14,a1 + move a1,*a0(SP_COLLX2) + +#cnt + move *a0(SP_NEXT),a0,L + jrnz #lp + +#done + rets + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/CROWD.ASM b/CROWD.ASM new file mode 100755 index 0000000..ba7b111 --- /dev/null +++ b/CROWD.ASM @@ -0,0 +1,1195 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 28 Apr 94 +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 4/28/94 22:12 +************************************************************** + + .file "crowd.asm" + .title "crowd stuff" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;Mproc equates + .include "display.equ" ;Display proc equates + .include "gsp.equ" ;Gsp asm equates + .include "sys.equ" + .include "game.equ" + .include "audit.equ" + .include "macros.h" + .include "link.equ" + .include "sound.h" + + .INCLUDE "SOUND.EQU" + .include "crowdimg.tbl" + .include "crowdimg.glo" + .include "bgndtbl.glo" + .include "imgtbl.glo" + +#***************************************************************************** + + .ref BAKLST,RNDRNG0,RNDPER,START_FLASHES,no_debris,reduce_bog + +#***************************************************************************** + +DEF_ANISPD equ 8 +SPD_FOREVER equ 7FFFh + +CROWD_OBJS equ 0h +CROWD_NORMANIM equ 20h +CROWD_CHEERANIM equ 40h + +CANI_GOTO equ 0 + 8000h +CANI_RNDWAIT equ 1 + 8000h +CANI_END equ 2 + 8000H +CANI_CODE EQU 3 + 8000H +CANI_REPEAT EQU 4 + 8000H +CANI_SHOULD_REPEAT EQU 5 + 8000H + +*STRUCT BOBJANIM +SCPTR .set 000 ;UHL script pointer (next instruction) +TIME .set 020h ;UHW time to hold +FRAME .set 030h ;UHL current obj +CHEER1 .set 050h ;UHL cheer1 jump point +CHEER2 .set 070h ;UHL cheer2 jump point +REPEAT_P .SET 090H ;UHL REPEAT POINT TO JUMP BACK TO +REPEAT_N .SET 0B0H ;UHW REPEAT THIS NUMBER OF TIMES +*ENDSTRUCT +BSIZE equ REPEAT_N+10h + +NUMCROWD equ 30 + +HICROWDZ equ 58/2 ;high z (after shift) + + BSSX CROWDDATA,(NUMCROWD+1)*BSIZE + + BSSX crowd_process,32 + +#***************************************************************************** +* Main crowd control process +* + +;NOTE: The background stuff is doing SOMETHING with ODXOFF and ODYOFF, so +; I'm storing anim points in OXVEL and OYVEL instead. Those seem safe. + + SUBR crowd_anim + + move a13,@crowd_process,L + + ;initialize + movi NUMCROWD,a0 + movi CROWD_ANIMS,a1 + movi CROWDDATA,a2 +#initloop + move *a1+,a3,L + move *a3+,a14,W + move a14,*a2(TIME),W + move *a3+,a14,L + move a14,*a2(FRAME),L + move a3,*a2(SCPTR),L + move *a1+,a14,L + move a14,*a2(CHEER1),L + move *a1+,a14,L + move a14,*a2(CHEER2),L + CLR A14 + MOVE A14,*A2(REPEAT_P),L + MOVE A14,*A2(REPEAT_N) + addi BSIZE,a2 + dsj a0,#initloop + + clr a14 + move a14,*a2(SCPTR),L + +#main_loop + ;if we're in reduce_bog mode, sleep until someone wakes us up. + movk 1,a0 + move @reduce_bog,a14 + jrz #slp + movi 7FFFh,a0 +#slp SLEEPR a0 + + ;update CROWDDATA + movi CROWDDATA-BSIZE,a4 +#cd_loop + addi BSIZE,a4 + move *a4(SCPTR),a14,L + jrz #cd_done + callr animate_back + jruc #cd_loop + + + SUBR animate_back + move *a4(TIME),a14,W + dec a14 + jrz #next_command + move a14,*a4(TIME),W + MOVK 1,A14 + rets + + +#next_command + move *a4(SCPTR),a5,L +#next_in_the_QUEUE + move *a5+,a14,W + jrn #cani_command + move a14,*a4(TIME),W + move *a5+,a14,L + move a14,*a4(FRAME),L + move a5,*a4(SCPTR),L + + ;You think a simple CLR would do the job here? Try it. I dare you. + MOVK 1,A14 + DEC A14 + rets + +#cani_command + andi 7FFFh,a14 + X32 a14 + addi #cani_commands,a14 + move *a14,a14,L + jump a14 + +#cani_commands + .long #_goto + .long #_rndwait + .LONG #_END_ANIM + .LONG #_CODE + .LONG #_RANDOM_REPEAT + .LONG #_SHOULD_WE_WE_REPEAT + +********** +#_CODE + MOVE *A5+,A0,L + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14 + CALL A0 + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14 + jruc #next_in_the_QUEUE + + +#_END_ANIM + MOVI -1,A14 + RETS + +#_goto + move *a5+,a5,L + move a5,*a4(SCPTR),L + jruc #next_command + +********** +#_rndwait + move *a5+,a0,W + calla RNDRNG0 + move a0,*a4(TIME),W + move a5,*a4(SCPTR),L + rets + +#_RANDOM_REPEAT + MOVE *A5+,A0 + MOVE A5,*A4(REPEAT_P),L + CALLA RNDRNG0 + MOVE A0,*A4(REPEAT_N) + jruc #next_in_the_QUEUE + +#_SHOULD_WE_WE_REPEAT + MOVE *A4(REPEAT_N),A0 + DEC A0 + MOVE A0,*A4(REPEAT_N) + JRZ REACHED_LAST_LOOP + JRN REACHED_LAST_LOOP + MOVE *A4(REPEAT_P),*A4(SCPTR),L + MOVE *A4(REPEAT_P),A5,L + jruc #next_in_the_QUEUE +REACHED_LAST_LOOP + CLR A0 + MOVE A0,*A4(REPEAT_N) + jruc #next_in_the_QUEUE + + + +#cd_done + .ref PCNT + move @PCNT,a14 + btst 0,a14 + jrz #main_loop + + + ;update BAKLST + move @BAKLST,a8,L + +#bakloop + move *a8(OZPOS),a0,W + srl 1,a0 + jrc #bakskip + cmpi HICROWDZ,a0 + jrgt #bakskip + + move a0,a1 + X64 a1 + X128 a0 + add a1,a0 + + addi CROWDDATA,a0 + move *a0(FRAME),a0,L + move *a8(OIMG),a1,L + cmp a0,a1 + jreq #bakskip + +; callr anibobj + move *a8(OCTRL),a1,W + + move *a8(OXPOS),a2,W + move *a8(OXVEL),a3,W + move *a0(IANIOFFX),a4,W + clr a5 + btst B_FLIPH,a1 + jrz #noflip + + ;obj is horz-flipped. negate the Xanim point and adjust X pos + ; by XSZold-XSZnew + neg a4 + move *a8(OSIZEX),a5,W + move *a0(ISIZEX),a14,W + sub a14,a5 +#noflip + add a3,a2 + sub a4,a2 + add a5,a2 + move a2,*a8(OXPOS),W + move a4,*a8(OXVEL),W + + + move *a8(OYPOS),a2,W + move *a8(OYVEL),a3,W + move *a0(IANIOFFY),a4,W + add a3,a2 + sub a4,a2 + move a2,*a8(OYPOS),W + move a4,*a8(OYVEL),W + + move a0,a2 + move a1,a3 + + move a2,*a8(OIMG),L + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + setf 5,0,0 + move *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits +; setf 6,0,0 +; move a3,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 +#bakskip + move *a8,a8,L + jrnz #bakloop + + + jruc #main_loop + + +;crowd anim starting points +CROWD_ANIMS + .long #jasoncrd_norm, #jasoncrd_cheer1,#jasoncrd_cheer2 + .long #tonycrd_norm, #tonycrd_cheer1 ,#tonycrd_cheer1 + .long #vogel_norm, #vogel_cheer1 ,#vogel_cheer2 + .long #tobias_norm, #tobias_cheer1 ,#tobias_cheer2 + .long #alex_norm, #alex_cheer1 ,#alex_cheer2 + + .long #marine_norm, #marine_cheer1 ,#marine_cheer2 + .long #jake_norm, #jake_cheer1 ,#jake_cheer2 + .long #johnc_norm, #johnc_cheer1 ,#johnc_cheer2 + .long #dewey_norm, #dewey_cheer1 ,#dewey_cheer2 + .long #jason_norm, #jason_cheer1 ,#jason_cheer2 + + .long #jamie_norm, #jamie_cheer1 ,#jamie_cheer2 + .long #sheridan_norm, #sheridan_cheer1,#sheridan_cheer2 + .long #sal_norm, #sal_cheer1 ,#sal_cheer2 + .long #josh_norm, #josh_cheer1 ,#josh_cheer2 + .long #mark_norm, #mark_cheer1 ,#mark_cheer1 + + .long #tony_norm, #tony_cheer1 ,#tony_cheer2 + .long #carlos_norm, #carlos_cheer1 ,#carlos_cheer2 + .long #newc_norm, #newc_cheer1 ,#newc_cheer2 + .long #joy_norm, #joy_cheer1 ,#joy_cheer1 + .long #side1_norm, #side1_cheer1 ,#side1_cheer1 + + .long #side2_norm, #side2_cheer1 ,#side2_cheer1 + .long #side3_norm, #side3_cheer1 ,#side3_cheer1 + .long #george_norm, #george_cheer1 ,#george_cheer1 + .long #dave_norm, #dave_cheer1 ,#dave_cheer1 + .long #sophia_norm, #sophia_cheer1 ,#sophia_cheer2 + + .long #mancow_norm, #mancow_cheer1 ,#mancow_cheer2 + .long #jak2_norm, #jak2_cheer1 ,#jak2_cheer2 + .long #eugene_norm, #eugene_cheer1 ,#eugene_cheer2 + .long #penacho_norm, #penacho_cheer1 ,#penacho_cheer2 + .long #jenni_norm, #jenni_cheer1 ,#jenni_cheer2 + + +********** +* SOPHIA + +#SOPHIA_SPD equ 7 + +#sophia_norm + WL SPD_FOREVER,SOFI1 + WL CANI_GOTO,#sophia_norm + +#sophia_cheer1 + WL #SOPHIA_SPD,SOFI2 + WL #SOPHIA_SPD,SOFI3 + WL #SOPHIA_SPD,SOFI4 + WL #SOPHIA_SPD,SOFI3 + WL #SOPHIA_SPD,SOFI2 + WL CANI_GOTO,#sophia_norm + +#sophia_cheer2 + WL #SOPHIA_SPD,SOFI2 + .WORD CANI_REPEAT,4 + WL #SOPHIA_SPD,SOFI3 + WL #SOPHIA_SPD,SOFI4 + .WORD CANI_SHOULD_REPEAT + WL #SOPHIA_SPD,SOFI3 + WL #SOPHIA_SPD,SOFI2 + WL CANI_GOTO,#sophia_norm + +********** +* MANCOW + +#MANCOW_SPD equ 6 + +#mancow_norm + WL SPD_FOREVER,MANC1 + WL CANI_GOTO,#mancow_norm + +#mancow_cheer1 + WL #MANCOW_SPD,MANC2 + WL #MANCOW_SPD,MANC3 + WL #MANCOW_SPD,MANC4 + WL #MANCOW_SPD,MANC5 + WL #MANCOW_SPD,MANC4 + WL #MANCOW_SPD,MANC3 + WL #MANCOW_SPD,MANC2 + WL CANI_GOTO,#mancow_norm + +#mancow_cheer2 + WL #MANCOW_SPD,MANC2 + .WORD CANI_REPEAT,6 + WL #MANCOW_SPD,MANC3 + WL #MANCOW_SPD,MANC4 + WL #MANCOW_SPD,MANC5 + WL #MANCOW_SPD,MANC4 + .WORD CANI_SHOULD_REPEAT + WL #MANCOW_SPD,MANC3 + WL #MANCOW_SPD,MANC2 + WL CANI_GOTO,#mancow_norm + +********** +* JAK + +#JAK_SPD equ 7 + +#jak2_norm + WL SPD_FOREVER,JAK1 + WL CANI_GOTO,#jak2_norm + +#jak2_cheer1 + WL #JAK_SPD,JAK2 + WL #JAK_SPD,JAK3 + WL #JAK_SPD,JAK4 + WL #JAK_SPD+3,JAK5 + WL #JAK_SPD,JAK4 + WL #JAK_SPD,JAK3 + WL #JAK_SPD,JAK2 + WL CANI_GOTO,#jak2_norm + +#jak2_cheer2 + WL #JAK_SPD,JAK2 + .WORD CANI_REPEAT,7 + WL #JAK_SPD,JAK3 + WL #JAK_SPD,JAK4 + WL #JAK_SPD+3,JAK5 + WL #JAK_SPD,JAK4 + .WORD CANI_SHOULD_REPEAT + WL #JAK_SPD,JAK3 + WL #JAK_SPD,JAK2 + WL CANI_GOTO,#jak2_norm + + +********** +* EUGENE + +#EUGENE_SPD equ 7 + +#eugene_norm + WL SPD_FOREVER,EUG1 + WL CANI_GOTO,#eugene_norm + +#eugene_cheer1 + WL #EUGENE_SPD,EUG2 + WL #EUGENE_SPD,EUG3 + WL #EUGENE_SPD,EUG4 + WL #EUGENE_SPD,EUG3 + WL #EUGENE_SPD,EUG2 + WL CANI_GOTO,#eugene_norm + +#eugene_cheer2 + WL #EUGENE_SPD,EUG2 + .WORD CANI_REPEAT,3 + WL #EUGENE_SPD,EUG3 + WL #EUGENE_SPD,EUG4 + .WORD CANI_SHOULD_REPEAT + WL #EUGENE_SPD,EUG3 + WL #EUGENE_SPD,EUG2 + WL CANI_GOTO,#eugene_norm + +********** +* JENNI + +#JENNI_SPD equ 7 + +#jenni_norm + WL SPD_FOREVER,JENI1 + WL CANI_GOTO,#jenni_norm + +#jenni_cheer1 + WL #JENNI_SPD,JENI2 + WL #JENNI_SPD,JENI3 + WL #JENNI_SPD,JENI4 + WL #JENNI_SPD,JENI3 + WL #JENNI_SPD,JENI2 + WL CANI_GOTO,#jenni_norm + +#jenni_cheer2 + WL #JENNI_SPD,JENI2 + .WORD CANI_REPEAT,3 + WL #JENNI_SPD,JENI3 + WL #JENNI_SPD,JENI4 + .WORD CANI_SHOULD_REPEAT + WL #JENNI_SPD,JENI3 + WL #JENNI_SPD,JENI2 + WL CANI_GOTO,#jenni_norm + +********** +* PENACHO + +#PENACHO_SPD equ 7 + +#penacho_norm + WL SPD_FOREVER,PENA1 + WL CANI_GOTO,#penacho_norm + +#penacho_cheer1 + WL #PENACHO_SPD,PENA2 + WL #PENACHO_SPD,PENA3 + WL #PENACHO_SPD,PENA4 + WL #PENACHO_SPD,PENA3 + WL #PENACHO_SPD,PENA2 + WL CANI_GOTO,#penacho_norm + +#penacho_cheer2 + .WORD CANI_REPEAT,4 + WL #PENACHO_SPD,PENA2 + WL #PENACHO_SPD,PENA3 + WL #PENACHO_SPD,PENA4 + WL #PENACHO_SPD,PENA3 + .WORD CANI_SHOULD_REPEAT + WL #PENACHO_SPD,PENA2 + WL CANI_GOTO,#penacho_norm + + + + +********** +* Alex + +#ALEX_SPD equ 6 + +#alex_norm + WL SPD_FOREVER,ALEX1 + WL CANI_GOTO,#alex_norm + +#alex_cheer1 + WL #ALEX_SPD,ALEX2 + WL #ALEX_SPD,ALEX3 + WL #ALEX_SPD,ALEX4 + WL #ALEX_SPD,ALEX2 + WL CANI_GOTO,#alex_norm +#alex_cheer2 + WL #ALEX_SPD,ALEX2 + WL #ALEX_SPD,ALEX3 + .WORD CANI_REPEAT,7 + WL #ALEX_SPD,ALEX4 + WL #ALEX_SPD,ALEX3 + .WORD CANI_SHOULD_REPEAT + WL #ALEX_SPD,ALEX2 + WL CANI_GOTO,#alex_norm + +********** +* Carlos + +#CARLOS_SPD equ 7 + +#carlos_norm + WL SPD_FOREVER,CARLO1 + WL CANI_GOTO,#carlos_norm + +#carlos_cheer1 + WL #CARLOS_SPD,CARLO2 + WL #CARLOS_SPD,CARLO3 + WL #CARLOS_SPD,CARLO4 + WL #CARLOS_SPD,CARLO2 + WL CANI_GOTO,#carlos_norm + +#carlos_cheer2 + WL #CARLOS_SPD,CARLO2 + WL #CARLOS_SPD,CARLO3 + WL #CARLOS_SPD,CARLO4 + .WORD CANI_REPEAT,7 + WL #CARLOS_SPD,CARLO3 + WL #CARLOS_SPD,CARLO4 + .WORD CANI_SHOULD_REPEAT + WL #CARLOS_SPD,CARLO2 + WL CANI_GOTO,#carlos_norm + +********** +* Dave + +#DAVE_SPD equ 8 + +#dave_norm + WL SPD_FOREVER,DAVEMSK1 + WL CANI_GOTO,#dave_norm + +#dave_cheer1 + WL #DAVE_SPD,DAVEMSK2 + WL #DAVE_SPD,DAVEMSK3 + WL #DAVE_SPD,DAVEMSK4 + WL #DAVE_SPD,DAVEMSK3 + WL #DAVE_SPD,DAVEMSK2 + WL CANI_GOTO,#dave_norm + +#dave_cheer2 + .WORD CANI_REPEAT,7 + WL #DAVE_SPD,DAVEMSK2 + WL #DAVE_SPD,DAVEMSK3 + .WORD CANI_SHOULD_REPEAT + WL #DAVE_SPD,DAVEMSK4 + WL #DAVE_SPD,DAVEMSK3 + WL #DAVE_SPD,DAVEMSK2 + WL CANI_GOTO,#dave_norm + +********** +* Dewey + +#DEWEY_SPD equ 7 + +#dewey_norm + WL #DEWEY_SPD,DEWY1 + .word CANI_RNDWAIT,TSEC*10 + WL #DEWEY_SPD,DEWY2 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY4 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY2 + WL CANI_GOTO,#dewey_norm + +#dewey_cheer1 + WL #DEWEY_SPD,DEWY1 + WL #DEWEY_SPD,DEWY2 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY4 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY2 + WL CANI_GOTO,#dewey_norm + +#dewey_cheer2 + WL #DEWEY_SPD,DEWY1 + .WORD CANI_REPEAT,7 + WL #DEWEY_SPD,DEWY2 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY4 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY2 + WL #DEWEY_SPD,DEWY3 + WL #DEWEY_SPD,DEWY4 + WL #DEWEY_SPD,DEWY3 + .WORD CANI_SHOULD_REPEAT + WL #DEWEY_SPD,DEWY2 + WL CANI_GOTO,#dewey_norm + +********** +* George + +#GEORGE_SPD equ 8 + +#george_norm + WL #GEORGE_SPD,GEORGE1 + .word CANI_RNDWAIT,TSEC*4 + WL #GEORGE_SPD,GEORGE2 + WL #GEORGE_SPD,GEORGE3 + WL #GEORGE_SPD,GEORGE4 + WL #GEORGE_SPD,GEORGE3 + WL #GEORGE_SPD,GEORGE2 + WL CANI_GOTO,#george_norm + +#george_cheer1 + .WORD CANI_REPEAT,2 + WL #GEORGE_SPD,GEORGE1 + WL #GEORGE_SPD,GEORGE2 + WL #GEORGE_SPD,GEORGE3 + WL #GEORGE_SPD,GEORGE4 + WL #GEORGE_SPD,GEORGE3 + WL #GEORGE_SPD,GEORGE2 + .WORD CANI_SHOULD_REPEAT + WL CANI_GOTO,#george_norm + +********** +* Jake + +#JAKE_SPD equ 8 + +#jake_norm + WL SPD_FOREVER,JAKE1 + WL CANI_GOTO,#jake_norm + +#jake_cheer1 + WL #JAKE_SPD,JAKE2 + WL #JAKE_SPD,JAKE3 + WL #JAKE_SPD,JAKE4 + WL #JAKE_SPD,JAKE2 + WL CANI_GOTO,#jake_norm + +#jake_cheer2 + WL #JAKE_SPD,JAKE2 + .WORD CANI_REPEAT,4 + WL #JAKE_SPD,JAKE3 + WL #JAKE_SPD,JAKE4 + .WORD CANI_SHOULD_REPEAT + WL #JAKE_SPD,JAKE2 + WL CANI_GOTO,#jake_norm + +********** +* Jamie + +#JAMIE_SPD equ 5 + +#jamie_norm + WL SPD_FOREVER,JAMIE1 + WL CANI_GOTO,#jamie_norm + +#jamie_cheer1 + WL #JAMIE_SPD,JAMIE2 + WL #JAMIE_SPD,JAMIE3 + WL #JAMIE_SPD,JAMIE4 + WL #JAMIE_SPD,JAMIE5 + WL #JAMIE_SPD,JAMIE6 + WL CANI_GOTO,#jamie_norm + +#jamie_cheer2 + .WORD CANI_REPEAT,7 + WL #JAMIE_SPD,JAMIE2 + WL #JAMIE_SPD,JAMIE3 + .WORD CANI_SHOULD_REPEAT + WL #JAMIE_SPD,JAMIE4 + WL #JAMIE_SPD,JAMIE5 + WL #JAMIE_SPD,JAMIE6 + WL CANI_GOTO,#jamie_norm + +********** +* Jason + +#JASON_SPD equ 6 + +#jason_norm + WL SPD_FOREVER,SERG1 + WL CANI_GOTO,#jason_norm + +#jason_cheer1 + WL #JASON_SPD,SERG2 + WL #JASON_SPD,SERG3 + WL #JASON_SPD,SERG4 + WL #JASON_SPD,SERG5 + WL #JASON_SPD,SERG4 + WL #JASON_SPD,SERG3 + WL #JASON_SPD,SERG2 + WL CANI_GOTO,#jason_norm + +#jason_cheer2 + WL #JASON_SPD,SERG2 + WL #JASON_SPD,SERG3 + .WORD CANI_REPEAT,7 + WL #JASON_SPD,SERG4 + WL #JASON_SPD,SERG5 + WL #JASON_SPD,SERG4 + WL #JASON_SPD,SERG3 + .WORD CANI_SHOULD_REPEAT + WL #JASON_SPD,SERG2 + WL CANI_GOTO,#jason_norm + + +********** +* Jason crowd + +#JCROWD_SPD equ 8 + +#jasoncrd_norm + WL SPD_FOREVER,JASONCRD1 + WL CANI_GOTO,#jasoncrd_norm + +#jasoncrd_cheer1 + WL #JCROWD_SPD,JASONCRD2 + WL #JCROWD_SPD,JASONCRD3 + WL #JCROWD_SPD,JASONCRD4 + WL #JCROWD_SPD,JASONCRD5 + WL CANI_GOTO,#jasoncrd_norm + +#jasoncrd_cheer2 + WL #JCROWD_SPD,JASONCRD2 + WL #JCROWD_SPD,JASONCRD3 + .WORD CANI_REPEAT,7 + WL #JCROWD_SPD,JASONCRD4 + WL #JCROWD_SPD,JASONCRD5 + .WORD CANI_SHOULD_REPEAT + WL CANI_GOTO,#jasoncrd_norm + + +********** +* JohnC + +#JOHNC_SPD equ 8 + +#johnc_norm + WL SPD_FOREVER,JOHNC1 + WL CANI_GOTO,#johnc_norm + +#johnc_cheer1 + WL #JOHNC_SPD,JOHNC2 + WL #JOHNC_SPD,JOHNC3 + WL #JOHNC_SPD*3,JOHNC4 + WL #JOHNC_SPD,JOHNC3 + WL #JOHNC_SPD,JOHNC2 + WL CANI_GOTO,#johnc_norm + +#johnc_cheer2 + WL #JOHNC_SPD,JOHNC2 + WL #JOHNC_SPD,JOHNC3 + WL #JOHNC_SPD,JOHNC4 + WL #JOHNC_SPD,JOHNC3 + WL #JOHNC_SPD*3,JOHNC4 + WL #JOHNC_SPD,JOHNC3 + WL #JOHNC_SPD,JOHNC2 + WL CANI_GOTO,#johnc_norm + +********** +* Josh + +#JOSH_SPD equ 7 + +#josh_norm + WL SPD_FOREVER,JOSH1 + WL CANI_GOTO,#josh_norm + +#josh_cheer1 + WL #JOSH_SPD,JOSH2 + WL #JOSH_SPD,JOSH3 + WL #JOSH_SPD,JOSH4 + WL #JOSH_SPD,JOSH3 + WL #JOSH_SPD,JOSH4 + WL #JOSH_SPD,JOSH2 + WL CANI_GOTO,#josh_norm + +#josh_cheer2 + WL #JOSH_SPD,JOSH2 + WL #JOSH_SPD,JOSH3 + WL #JOSH_SPD,JOSH4 + .WORD CANI_REPEAT,6 + WL #JOSH_SPD,JOSH3 + WL #JOSH_SPD,JOSH4 + .WORD CANI_SHOULD_REPEAT + WL #JOSH_SPD,JOSH2 + WL CANI_GOTO,#josh_norm + + +********** +* Joy (side crowd) + +#JOY_SPD equ 8 + +#joy_norm + WL SPD_FOREVER,JOY1 + WL CANI_GOTO,#joy_norm +#joy_cheer1 + WL #JOY_SPD,JOY1 + WL #JOY_SPD,JOY2 + WL #JOY_SPD,JOY3 + WL #JOY_SPD,JOY4 + WL #JOY_SPD,JOY5 + WL #JOY_SPD,JOY4 + WL #JOY_SPD,JOY3 + WL CANI_GOTO,#joy_norm + +********** +* Marine + +#MARINE_SPD equ 8 + +#marine_norm + WL SPD_FOREVER,MARINE1 + WL CANI_GOTO,#marine_norm + +#marine_cheer1 + WL #MARINE_SPD,MARINE2 + WL #MARINE_SPD,MARINE3 + WL #MARINE_SPD,MARINE4 + WL #MARINE_SPD,MARINE2 + WL CANI_GOTO,#marine_norm + +#marine_cheer2 + WL #MARINE_SPD,MARINE2 + .WORD CANI_REPEAT,6 + WL #MARINE_SPD,MARINE3 + WL #MARINE_SPD,MARINE4 + .WORD CANI_SHOULD_REPEAT + WL #MARINE_SPD,MARINE3 + WL #MARINE_SPD,MARINE2 + WL CANI_GOTO,#marine_norm + +********** +* Mark + +#MARK_SPD equ 8 + +#mark_norm + WL SPD_FOREVER,TURMEL1 + WL CANI_GOTO,#mark_norm + +#mark_cheer1 + WL #MARK_SPD,TURMEL2 + WL #MARK_SPD,TURMEL3 + WL 20,TURMEL4 + WL #MARK_SPD,TURMEL3 + WL #MARK_SPD,TURMEL2 + WL CANI_GOTO,#mark_norm + +********** +* Newc + +#NEWC_SPD equ 9 + +#newc_norm + WL SPD_FOREVER,NEWCOM1 + WL CANI_GOTO,#newc_norm + +#newc_cheer1 + WL #NEWC_SPD,NEWCOM2 + WL #NEWC_SPD,NEWCOM3 + WL #NEWC_SPD,NEWCOM4 + WL #NEWC_SPD,NEWCOM3 + WL #NEWC_SPD,NEWCOM4 + WL #NEWC_SPD,NEWCOM3 + WL #NEWC_SPD,NEWCOM2 + WL CANI_GOTO,#newc_norm + +#newc_cheer2 + WL #NEWC_SPD,NEWCOM2 + .WORD CANI_REPEAT,6 + WL #NEWC_SPD,NEWCOM3 + WL #NEWC_SPD,NEWCOM4 + .WORD CANI_SHOULD_REPEAT + WL #NEWC_SPD,NEWCOM2 + WL CANI_GOTO,#newc_norm + +********** +* Sal + +#SAL_SPD equ 8 + +#sal_norm + WL SPD_FOREVER,SAL1 + WL CANI_GOTO,#sal_norm + +#sal_cheer1 + WL #SAL_SPD,SAL2 + WL #SAL_SPD,SAL3 + WL #SAL_SPD,SAL4 + WL #SAL_SPD,SAL3 + WL #SAL_SPD,SAL4 + WL #SAL_SPD,SAL3 + WL #SAL_SPD,SAL2 + WL CANI_GOTO,#sal_norm + +#sal_cheer2 + WL #SAL_SPD,SAL2 + .WORD CANI_REPEAT,7 + WL #SAL_SPD,SAL3 + WL #SAL_SPD,SAL4 + .WORD CANI_SHOULD_REPEAT + WL #SAL_SPD,SAL2 + WL CANI_GOTO,#sal_norm + +********** +* Sheridan + +#SHERIDAN_SPD equ 8 + +#sheridan_norm + WL 1,SHERID1 + .word CANI_RNDWAIT,TSEC*20 + WL #SHERIDAN_SPD,SHERID6 + WL #SHERIDAN_SPD,SHERID7 + WL #SHERIDAN_SPD*2,SHERID8 + WL #SHERIDAN_SPD,SHERID7 + WL #SHERIDAN_SPD,SHERID6 + WL CANI_GOTO,#sheridan_norm + +#sheridan_cheer1 + WL #SHERIDAN_SPD,SHERID1 + WL #SHERIDAN_SPD,SHERID2 + WL #SHERIDAN_SPD,SHERID3 + WL #SHERIDAN_SPD,SHERID4 + WL #SHERIDAN_SPD,SHERID5 + WL #SHERIDAN_SPD,SHERID6 + WL #SHERIDAN_SPD,SHERID7 + WL #SHERIDAN_SPD*2,SHERID8 + WL #SHERIDAN_SPD,SHERID7 + WL #SHERIDAN_SPD,SHERID6 + WL CANI_GOTO,#sheridan_norm + +#sheridan_cheer2 + WL #SHERIDAN_SPD,SHERID1 + WL #SHERIDAN_SPD,SHERID2 + WL #SHERIDAN_SPD,SHERID3 + .WORD CANI_REPEAT,3 + WL #SHERIDAN_SPD,SHERID4 + WL #SHERIDAN_SPD,SHERID5 + .WORD CANI_SHOULD_REPEAT + WL CANI_GOTO,#sheridan_norm + +********** +* Side crowd + +#SDCRD_SPD equ 8 + +#side1_norm + WL SPD_FOREVER,SDCRD1A + WL CANI_GOTO,#side1_norm + +#side1_cheer1 + WL #SDCRD_SPD,SDCRD2A + WL #SDCRD_SPD,SDCRD3A + WL #SDCRD_SPD,SDCRD4A + WL #SDCRD_SPD,SDCRD3A + WL #SDCRD_SPD,SDCRD2A + WL CANI_GOTO,#side1_norm + +#side2_norm + WL SPD_FOREVER,SDCRD1B + WL CANI_GOTO,#side2_norm + +#side2_cheer1 + WL #SDCRD_SPD,SDCRD2B + WL #SDCRD_SPD,SDCRD3B + WL #SDCRD_SPD,SDCRD4B + WL #SDCRD_SPD,SDCRD3B + WL #SDCRD_SPD,SDCRD2B + WL CANI_GOTO,#side2_norm + +#side3_norm + WL SPD_FOREVER,SDCRD1C + WL CANI_GOTO,#side3_norm + +#side3_cheer1 + WL #SDCRD_SPD,SDCRD2C + WL #SDCRD_SPD,SDCRD3C + WL #SDCRD_SPD,SDCRD4C + WL #SDCRD_SPD,SDCRD3C + WL #SDCRD_SPD,SDCRD2C + WL CANI_GOTO,#side3_norm + +********** +* Tobias + +#TOBIAS_SPD equ 7 + +#tobias_norm + WL SPD_FOREVER,TOBIAS1 + WL CANI_GOTO,#tobias_norm + +#tobias_cheer1 + WL #TOBIAS_SPD,TOBIAS2 + WL #TOBIAS_SPD,TOBIAS3 + WL #TOBIAS_SPD,TOBIAS4 + WL #TOBIAS_SPD,TOBIAS2 + WL CANI_GOTO,#tobias_norm + +#tobias_cheer2 + WL #TOBIAS_SPD,TOBIAS2 + .WORD CANI_REPEAT,7 + WL #TOBIAS_SPD,TOBIAS3 + WL #TOBIAS_SPD,TOBIAS4 + .WORD CANI_SHOULD_REPEAT + WL #TOBIAS_SPD,TOBIAS2 + WL CANI_GOTO,#tobias_norm + +********** +* Tony + +#TONY_SPD equ 7 + +#tony_norm + WL SPD_FOREVER,CRAZY1 + WL CANI_GOTO,#tony_norm + +#tony_cheer1 + WL #TONY_SPD,CRAZY2 + WL #TONY_SPD,CRAZY3 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY5 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY5 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY3 + WL #TONY_SPD,CRAZY2 + WL CANI_GOTO,#tony_norm + +#tony_cheer2 + WL #TONY_SPD,CRAZY2 + WL #TONY_SPD,CRAZY3 + .WORD CANI_REPEAT,4 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY5 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY3 + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY5 + .WORD CANI_SHOULD_REPEAT + WL #TONY_SPD,CRAZY4 + WL #TONY_SPD,CRAZY3 + WL #TONY_SPD,CRAZY2 + WL CANI_GOTO,#tony_norm + + +********** +* Tony crowd + +#TONYC_SPD equ 8 + +#tonycrd_norm + WL SPD_FOREVER,TONYCRD1 + WL CANI_GOTO,#tonycrd_norm + +#tonycrd_cheer1 + WL #TONYC_SPD,TONYCRD2 + WL #TONYC_SPD,TONYCRD3 + WL #TONYC_SPD,TONYCRD4 + WL #TONYC_SPD,TONYCRD5 + WL CANI_GOTO,#tonycrd_norm + +********** +* Vogel + +#VOGEL_SPD equ 8 + +#vogel_norm + WL SPD_FOREVER,VOGEL1 + WL CANI_GOTO,#vogel_norm + +#vogel_cheer1 + WL #VOGEL_SPD,VOGEL2 + WL #VOGEL_SPD,VOGEL3 + WL #VOGEL_SPD,VOGEL4 + WL #VOGEL_SPD,VOGEL3 + WL #VOGEL_SPD,VOGEL2 + WL CANI_GOTO,#vogel_norm + +#vogel_cheer2 + WL #VOGEL_SPD,VOGEL2 + .WORD CANI_REPEAT,7 + WL #VOGEL_SPD,VOGEL3 + WL #VOGEL_SPD,VOGEL4 + .WORD CANI_SHOULD_REPEAT + WL #VOGEL_SPD,VOGEL2 + WL CANI_GOTO,#vogel_norm + + SUBR DO_CROWD_CHEER + MOVK C_OVERIDE|C_LONG,A3 + CLR A4 + +***************************************************************************** +* Causes the crowd to cheer. + +;INPUT A3 = BIT 0 1=LONG OR 0=SHORT TYPE OF ANIMATION +; BIT 1 1=OVERRIDE WHAT IS ALREADY GOING ON OR NOT +; BIT 2 1=DO RANDOM NUMBER OF PEOPLE IN AUDIENCE +; A4 = RNDPER VALUE IF BIT 2 SET IN A3 + SUBR crowd_cheer + + CLR A7 + BTST B_RANDOM,A3 + JRZ NO_RANDOMNESS + MOVE A4,A7 +NO_RANDOMNESS + movi CROWDDATA,a4 + movi NUMCROWD,a5 + movk 1,a6 +#loop + MOVE *A4(CHEER1),A1,L + CMPI #side2_cheer1,A1 + JREQ DO_NEXT_PERSON + CMPI #side3_cheer1,A1 + JREQ DO_NEXT_PERSON + CMPI #dave_cheer1,A1 + JREQ DO_NEXT_PERSON + MOVE A7,A0 + JRZ DO_THEM_ALL + CALLA RNDPER + JRLS DO_NEXT_PERSON +DO_THEM_ALL + BTST B_OVERRIDE,A3 + JRNZ JUST_DO_IT_ANYWAY + MOVE *A4(CHEER1),A8,L + MOVE *A4(SCPTR),A9,L + CMP A8,A9 + JRGE DO_NEXT_PERSON +JUST_DO_IT_ANYWAY + move *a4(CHEER1),*a4(SCPTR),L + BTST B_L_OR_S,A3 + JRZ OKAY_DO_SHORT + move *a4(CHEER2),*a4(SCPTR),L +OKAY_DO_SHORT + move a6,*a4(TIME),W + +;MAKE SURE WE DO ALL THE SIDE CROWD AT ONCE + move *a4(CHEER1),A1,L + CMPI #side1_cheer1,A1 + JRNE DO_NEXT_PERSON + addi BSIZE,a4 + move *a4(CHEER1),*a4(SCPTR),L + move a6,*a4(TIME),W + addi BSIZE,a4 + move *a4(CHEER1),*a4(SCPTR),L + move a6,*a4(TIME),W + addi BSIZE*2,a4 + move *a4(CHEER1),*a4(SCPTR),L + move a6,*a4(TIME),W + + ;a5 is the loop counter...gotta dec it any time we add to a4. + subk 4,a5 +DO_NEXT_PERSON + addi BSIZE,a4 + dsj a5,#loop + + CALLA START_FLASHES + + rets + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/DAMAGE.EQU b/DAMAGE.EQU new file mode 100755 index 0000000..9158976 --- /dev/null +++ b/DAMAGE.EQU @@ -0,0 +1,233 @@ +****************************************************************************** +* +* Damage values for attacks. +* + +;Separate into doink moves, etc. + +D_PUNCH .equ 8 +RD_PUNCH .equ D_PUNCH*2/3 +D_HDBUTT .equ 12 +RD_HDBUTT .equ D_HDBUTT*2/3 +D_HDBUTT2 .equ 9 +RD_HDBUTT2 .equ D_HDBUTT2*2/3 +D_KICK .equ 13 +RD_KICK .equ D_KICK*2/3 +D_FLYKICK .equ 28 +RD_FLYKICK .equ D_FLYKICK*2/3 +D_GRABTHROW .equ 0 +RD_GRABTHROW .equ D_GRABTHROW*2/3 +D_UPRCUT .equ 20 +RD_UPRCUT .equ D_UPRCUT*2/3 +D_LBDROP .equ 17 +RD_LBDROP .equ D_LBDROP*2/3 +D_LBDROP2 .equ 9 +RD_LBDROP2 .equ D_LBDROP2*2/3 +D_GRBHOLD .equ 0 +RD_GRBHOLD .equ D_GRBHOLD*2/3 +D_GRBFLNG .equ 0 +RD_GRBFLNG .equ D_GRBFLNG*2/3 +D_PUSH .equ 1 +RD_PUSH .equ D_PUSH*2/3 +D_BIGBOOT .equ 18 +RD_BIGBOOT .equ D_BIGBOOT*2/3 +D_KNEE .equ 12 +RD_KNEE .equ D_KNEE*2/3 +D_GRAPPLE .equ 0 +RD_GRAPPLE .equ D_GRAPPLE*2/3 +D_BOXPUNCH .equ 20 +RD_BOXPUNCH .equ D_BOXPUNCH*2/3 +D_STOMP .equ 8 +RD_STOMP .equ D_STOMP*2/3 +D_STOMP2 .equ 6 +RD_STOMP2 .equ D_STOMP2*2/3 +D_SPINKIK .equ 17 +RD_SPINKIK .equ D_SPINKIK*2/3 +D_CLINE .equ 20 +RD_CLINE .equ D_CLINE*2/3 +D_HEDHOLD .equ 0 +RD_HEDHOLD .equ D_HEDHOLD*2/3 +D_JUMPKICK .equ 20 +RD_JUMPKICK .equ D_JUMPKICK*2/3 +D_RUN .equ 0 +RD_RUN .equ D_RUN*2/3 +D_PUPPET .equ 0 +RD_PUPPET .equ D_PUPPET*2/3 +D_BCKHAND .equ 19 +RD_BCKHAND .equ D_BCKHAND*2/3 +D_BUZZ .equ 25 +RD_BUZZ .equ D_BUZZ*2/3 +D_HAYMAKER .equ 23 +RD_HAYMAKER .equ D_HAYMAKER*2/3 +D_BLBDROP .equ 20 +RD_BLBDROP .equ D_BLBDROP*2/3 +D_BSTOMP .equ 17 +RD_BSTOMP .equ D_BSTOMP*2/3 +D_HDKNEES .equ 8 +RD_HDKNEES .equ D_HDKNEES*2/3 +D_EARSLAP1 .equ 20 +RD_EARSLAP1 .equ D_EARSLAP1*2/3 +D_EARSLAP2 .equ 8 +RD_EARSLAP2 .equ D_EARSLAP2*2/3 +D_HAMMER1 .equ 12 +RD_HAMMER1 .equ D_HAMMER1*2/3 +D_HAMMER2 .equ 5 +RD_HAMMER2 .equ D_HAMMER2*2/3 +D_BUTTSTOMP .equ 28 +RD_BUTTSTOMP .equ D_BUTTSTOMP*2/3 +D_ATT31 .equ 0 +RD_ATT31 .equ D_ATT31*2/3 +D_ATT32 .equ 0 +RD_ATT32 .equ D_ATT32*2/3 +D_ATT33 .equ 0 +RD_ATT33 .equ D_ATT33*2/3 +D_TOMB .equ 8 +RD_TOMB .equ D_TOMB*2/3 +D_BIGKNEE .equ 17 +RD_BIGKNEE .equ D_BIGKNEE*2/3 +D_FLPKIK .equ 0 +RD_FLPKIK .equ D_FLPKIK*2/3 +D_SPDKIK .equ 10 +RD_SPDKIK .equ D_SPDKIK*1/3 +D_SPDKIK2 .equ 9 +RD_SPDKIK2 .equ D_SPDKIK2*2/3 +D_HITCK .equ 0 +RD_HITCK .equ D_HITCK*2/3 +D_ARMBRK .equ 17 +RD_ARMBRK .equ D_ARMBRK*2/3 +D_RSLASH .equ 14 +RD_RSLASH .equ D_RSLASH*2/3 +D_HEADDSLASH .equ 8 +RD_HEADDSLASH .equ D_HEADDSLASH*2/3 +D_HEADUSLASH .equ 8 +RD_HEADUSLASH .equ D_HEADUSLASH*2/3 +D_RSLASH2 .equ 6 +RD_RSLASH2 .equ D_RSLASH2*2/3 +D_HDBUTT_STAY .equ 5 +RD_HDBUTT_STAY .equ D_HDBUTT_STAY*2/3 +D_FIRE_PUNCH .equ 10 +RD_FIRE_PUNCH .equ D_FIRE_PUNCH*2/3 +D_SALT .equ 15 +RD_SALT .equ D_SALT*2/3 +D_BSTOMP2 .equ 20 +RD_BSTOMP2 .equ D_BSTOMP2*2/3 +D_GUTPUSH .equ 15 +RD_GUTPUSH .equ D_GUTPUSH*2/3 +D_PUNCH2 .equ 6 +RD_PUNCH2 .equ D_PUNCH2*2/3 +D_GATE_CRASH .equ 20 +RD_GATE_CRASH .equ D_GATE_CRASH*2/3 +D_SHOOTER .equ 4 +RD_SHOOTER .equ D_SHOOTER*2/3 +D_NAPALM .equ 20 +RD_NAPALM .equ D_NAPALM*2/3 + +;Puppet move damage values: +;These are used in the sequences +;EX: ANI_DAMAGEOPP,D_BSLAM + +D_BSLAM .equ 20*135/100 +RD_BSLAM .equ D_BSLAM*2/3 +D_GSUPLEX .equ 22*135/100 +RD_GSUPLEX .equ D_GSUPLEX*2/3 +D_FSTEIN .equ 25*135/100 +RD_FSTEIN .equ D_FSTEIN*2/3 +D_HIPTOSS .equ 20*135/100 +RD_HIPTOSS .equ D_HIPTOSS*2/3 +D_PILEDRIVER .equ 25*135/100 +RD_PILEDRIVER .equ D_PILEDRIVER*2/3 +D_FACESLAM1 .equ 20*135/100 +RD_FACESLAM1 .equ D_FACESLAM1*2/3 +D_FACESLAM2 .equ 6*135/100 +RD_FACESLAM2 .equ D_FACESLAM2*2/3 +D_BACKBRKR .equ 25*135/100 +RD_BACKBRKR .equ D_BACKBRKR*2/3 +D_POGO1 .equ 19*135/100 +RD_POGO1 .equ D_POGO1*2/3 +D_POGO2 .equ 4*130/100 +RD_POGO2 .equ D_POGO2*2/3 +D_SCISSOR .equ 24*135/100 +RD_SCISSOR .equ D_SCISSOR*2/3 +D_KICKTOSS .equ 22*135/100 +RD_KICKTOSS .equ D_KICKTOSS*2/3 +D_NECKBRKR .equ 22*135/100 +RD_NECKBRKR .equ D_NECKBRKR*2/3 +D_NECKSLAM .equ 22*135/100 +RD_NECKSLAM .equ D_NECKSLAM*2/3 +D_RUGSLAM .equ 7*135/100 +RD_RUGSLAM .equ D_RUGSLAM*2/3 +D_HITCONCRETE .equ 12*135/100 +RD_HITCONCRETE .equ D_HITCONCRETE*2/3 +D_FLIPSLAM .equ 26*135/100 +RD_FLIPSLAM .equ D_FLIPSLAM*2/3 +D_FACERAKE .equ 16*135/100 +RD_FACERAKE .equ D_FACERAKE*2/3 +D_FACEDRIVER .equ 14*135/100 +RD_FACEDRIVER .equ D_FACEDRIVER*2/3 + + +****************************************************************************** +* +* ATTACK TYPES (USED FOR DRONE STUFF) + + +AT_PUNCH .equ 0 +AT_HDBUTT .equ 1 +AT_KICK .equ 2 +AT_FLYKICK .equ 3 +AT_GRABTHROW .equ 4 +AT_UPRCUT .equ 5 +AT_LBDROP .equ 6 +AT_GRBHOLD .equ 7 +AT_GRBFLNG .equ 8 +AT_PUSH .equ 9 +AT_BIGBOOT .equ 10 +AT_KNEE .equ 11 +AT_GRAPPLE .equ 12 +AT_BOXPUNCH .equ 13 +AT_STOMP .equ 14 +AT_SPINKIK .equ 15 +AT_CLINE .equ 16 +AT_HEDHOLD .equ 17 +AT_JUMPKICK .equ 18 +AT_RUN .equ 19 +AT_PUPPET .equ 20 +AT_BCKHAND .equ 21 +AT_BUZZ .equ 22 +AT_HAYMAKER .equ 23 +AT_BLBDROP .equ 24 +AT_BSTOMP .equ 25 +AT_HDKNEES .equ 26 +AT_EARSLAP1 .equ 27 +AT_EARSLAP2 .equ 28 +AT_HAMMER1 .equ 29 +AT_HAMMER2 .equ 30 +AT_BUTTSTOMP .equ 31 +AT_TOMB .equ 35 +AT_BIGKNEE .equ 36 +AT_FLPKIK .equ 37 +AT_SPDKIK .equ 38 +AT_SPDKIK2 .equ 39 +AT_HITCK .equ 40 +AT_ARMBRK .equ 41 +AT_HDBUTT_STAY .equ 42 +AT_HAIR_PICKUP .equ 43 +AT_BSLAM .equ 44 +AT_GSUPLEX .equ 45 +AT_FSTEIN .equ 46 +AT_HIPTOSS .equ 47 +AT_PILEDRIVER .equ 48 +AT_FACESLAM1 .equ 49 +AT_FACESLAM2 .equ 50 +AT_BACKBRKR .equ 51 +AT_POGO1 .equ 52 +AT_POGO2 .equ 53 +AT_KICKTOSS .equ 54 +AT_NECKBRKR .equ 55 +AT_NECKSLAM .equ 56 +AT_LEAPING .equ 57 +AT_MSL .equ 58 ;Missile weapon launch +AT_NUM .equ 59 ;Last! + +****************************************************************************** + \ No newline at end of file diff --git a/DCSSOUND.ASM b/DCSSOUND.ASM new file mode 100755 index 0000000..1f9bedc --- /dev/null +++ b/DCSSOUND.ASM @@ -0,0 +1,4554 @@ +************************************************************** +* +* Software: Ed Boon +* Initiated: ? +* +* Modified: Jason Skiles, 23 Nov 93 - WWF conversion +* Jake Simpson, Announcers, new scheduling, +* and various other features. +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 1/10/94 12:02 +************************************************************** + + .file "dcssound.asm" + .title "sound processor" + .width 132 + .option b,d,l,t + .mnolist + + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "audit.equ" + .include "macros.h" + .include "display.equ" + .INCLUDE "GSP.EQU" + .INCLUDE "SOUND.equ" + .include "snddebug.h" + + .text +;************************************************************************ +;* * +;* OK people, there are several ready made speech call routines for * +;* you to use. I'll go through them, with where you should call them * +;* from and what they are for. * +;* vvvvvv All These to be called from scripts VVVVVVVV * +;* CALL_MISSES - If you attempt to do something and miss, * +;* E.g. head grab.... * +;* CALL_SPECIAL_MOVE - For the 5 dollar moves, the pile drivers etc * +;* CALL_ANI_AVERAGE_MOVE - For the Average moves that are fairly easy to* +;* fire off. E.g. Back hand slap, Shawns spin kick * +;* DO_REVERSAL - When a move is reversed against the opponent * +;* CALL_MISS_YOKO - For use when you try to do a move against YOKO and * +;* fail. * +;* CALL_THROWN_OUT - Been chucked out of the ring * +;* CALL_OTHER_AVERAGE - Another Average move speech call, to provide * +;* variety. * +;* CALL_NASTY_MOVE - When you do something against the rules, * +;* E.g. Doink buzzer, Doink Hammer, Shawn arm break * +;* CALL_SETUP - Set up for a better move, E.g. Head grab, Picking up * +;* over * +;* * +;* vvvvvv All these calls come from the REACT subroutines VVVVV * +;* CALL_FACE_HIT - Any thing that *JUST* hits the face Eg. Head butts * +;* CALL_MID_HIT - Any thing that *JUST* hits the midsection * +;* CALL_DROP_KICK - For any move that results in both wrestlers * +;* hitting the ground. * +;* * +;************************************************************************ + + .DEF MAYBE_SHOCKING + .DEF MAYBE_TOUGH_ENOUGH + .DEF MAYBE_HIGH_RISK + .DEF MAYBE_BOUNCE_ROPE + .DEF CALL_BONE_BREAK + .DEF MAYBE_GIDDUP + .DEF FIND_AND_KILL_ENDLESS + .DEF DO_DOINK_SLAM + .DEF DO_NONO,DO_OTHERNONO + .DEF DO_RAZOR_RUG_SPEECH + .def DO_RAZOR_PUSH + .DEF DO_WAIL + .DEF DO_CHOKE + .DEF DO_SCREAM + .DEF DO_BLOCKED + .DEF MAKE_HIM_SCREAM + + .DEF DO_BLOCK_SND + .DEF DO_FLAME_HIT_SND + .DEF DO_FLAME_SND + .DEF CALL_ANI_AVERAGE_MOVE + + .def SNDSND, SET_LOWER_VOL, FADE_MASTER_VOL + .DEF CALL_NASTY_MOVE + + .DEF CLEAR_SPEECH_REPEAT + .def CALL_MISS_YOKO + + .DEF CALL_OTHER_AVERAGE + + .DEF ADD_VOICE, RESET_VOICE_QUEUE + .DEF IF_SILENT_ADD_VOICE + BSSX DONE_HOWARD,16 + .DEF VINCE_START_GAME + .def WALK_SOUND + .DEF SMALL_RUN + .REF RNDPER + .DEF ADD_TO_QUEUE + .DEF ADD_IF_SILENT + .DEF CLIMB_ROPES + .DEF JUMP_ROPES + .DEF CALL_DROP_KICK + .DEF DO_REVERSAL,CALL_THROWN_OUT + .DEF CALL_FACE_HIT,CALL_MID_HIT + .DEF CALL_MISSES,CALL_SETUP + .DEF CALL_MATCH_OVER,CALL_AVERAGE_MOVE + .DEF CALL_SPECIAL_MOVE + .DEF HIT_THE_MAT + .def SMALL_BOUNCE + .DEF VINCE_START_ROUND2_3 + .ref index1,index2,process_ptrs,PSTATUS + + ;for various files + .def DEFAULT_SOUND_TABLE,MASTER_SOUND_TABLE + + ;from AUDIT.ASM + .ref PUT_ADJ,GET_ADJ,F_ADC_S + + ;from UTIL.ASM + .ref RNDRNG0 + + ;from WRESTLE.ASM + .ref GAMSTATE + .REF p1winstreak + + .ref crowd_cheer + .REF get_health + + .ref _coin_addr + .ref _sound_addr + .ref _soundirq_addr + .ref _coin_counter_addr + +send .set >0001 ; script command --> send sound code +setpri .set >0002 ; script command --> set priority +endtune .set >0003 ; script command --> end of tune script +sleep .set >0004 ; script command --> sleep next byte +send2 .set >0005 + + +sndpri .set 0 ; priority offset +snddur .set 10h ; duration offset +sndscp .set 20h ; script pointer offset + +ex .set >8000 ; flag: extended sound call !! + + .bss chan1ram,0,1 + BSSX chan1pri,16,1 ; sound channel #1 priority + BSSX chan1dur,16,1 ; sound channel #1 duration (timer) + .bss chan1scp,32,1 ; sound channel #1 script pointer + BSSX chan1snd,16,1 ; sound channel #1 current sound + + BSSX chan2pri,16,1 ; sound channel #2 priority + BSSX chan2dur,16,1 ; sound channel #2 duration (timer) + .bss chan2scp,32,1 ; sound channel #2 script pointer + BSSX chan2snd,16,1 ; sound channel #2 current sound + + BSSX chan3pri,16,1 ; sound channel #3 priority + BSSX chan3dur,16,1 ; sound channel #3 duration (timer) + .bss chan3scp,32,1 ; sound channel #3 script pointer + BSSX chan3snd,16,1 ; sound channel #3 current sound + + BSSX chan4pri,16,1 ; sound channel #4 priority + BSSX chan4dur,16,1 ; sound channel #4 duration (timer) + .bss chan4scp,32,1 ; sound channel #4 script pointer + BSSX chan4snd,16,1 ; sound channel #4 current sound + + .bss vincechan,16,1 ; channel vince is on, if any + .bss vincedur,16,1 ; vince duration + + .bss randychan,16,1 ; channel randy is on, if any + .bss randydur,16,1 ; randy duration + + .bss howardchan,16,1 ; channel howard is on, if any + .bss howarddur,16,1 ; howard duration + + BSSX SOUNDSUP,16,1 ; SOUND ENABLED FLAG + .BSS LAST_VOICE,64 ;LAST SPEECH CALL MADE + .BSS WHICH_LAST_VOICE,32 + BSSX REPEAT_STATE,16 + + bssx ANNOUNCE_QUEUE,32*20 + .BSS EOF_ANNOUNCE_QUEUE,0 + BSSX NEXT_ANN_QUEUE,32 + BSSX CURRENT_ANN_QUEUE,32 + + BSSX ENDLESS_SOUND,16 + BSSX doing_dcs_reset,16 + + .if SND_DEBUG + ;keep these in order and adjacent + BSSX SDRAM,SNDCALSIZ*64 + BSSX sdram_ptr,32 + .endif + + .bss crowd_dummy_exists,16 + .bss repeat_mode_exists,16 + .bss razor_swear_exists,16 + +************************************************************************** +* * +* Sound type priorities +* * +************************************************************************** + +sp_robo equ 1 << 8 ; robotron sounds +sp_mat1 equ 4 << 8 ; mat noises +sp_woosh equ 8 << 8 ; attack whoosh +sp_attkv equ 12 << 8 ; attack grunt +sp_reacv equ 14 << 8 ; react grunt +sp_losmack equ 15 << 8 ; just under smack +sp_smack equ 16 << 8 ; smack +sp_mat2 equ 20 << 8 ; mat noises +sp_wspch equ 24 << 8 ; wrestler speech +sp_system1 equ 36 << 8 ; system stuff +sp_system2 equ 40 << 8 ; system stuff +sp_system3 equ 44 << 8 ; system stuff +sp_anncer equ 100 << 8 ; announcer speech + + +************************************************************************** +* * +* TRIPLE SOUND TABLE format: * +* * +* .word >aaaa,>bbbb * +* * +* where: aaaa = priority / duration * +* bbbb = channel 1 sound call * +* * +************************************************************************** + +triple_sndtab + .word 0,0 ; 0 = + .word sp_smack|17,>80 ; 1 = face hit #0 + .word sp_smack|14,>84 ; 2 = face hit #1 + .word sp_system2|90,1480 ; 3 = combo earned sound + .word sp_mat2|15,>88 ; 4 = body hit #0 + .word sp_smack|17,>8c ; 5 = body hit #1 + .word sp_smack|15,>90 ; 6 = kick #0 + .word sp_mat2|13,>94 ; 7 = kick #1 + .word sp_mat2|15,>98 ; 8 = kick #2 + + .word sp_mat2|13,156 ; 9 = fall to mat #0 + .word sp_mat1|70,460 ; a = clock tick + .word sp_mat1|62,412 ; b = mat crash #0 + .word sp_mat1|53,416 ; c = mat rattle #0 + .word sp_mat1|39,424 ; d = mat rattle #2 + + .word sp_woosh|21,>a8 ; e = whoosh #0 + .word sp_woosh|20,>ac ; f = whoosh #1 + .word sp_woosh|21,>b0 ; 10 = whoosh #2 + .word sp_woosh|13,>b4 ; 11 = whoosh #3 + .word sp_woosh|12,>b8 ; 12 = whoosh #4 + .word sp_woosh|10,>bc ; 13 = whoosh #5 + .word sp_woosh|13,>c0 ; 14 = whoosh #6 + .word sp_woosh|15,>c4 ; 15 = whoosh #7 + .word sp_woosh|14,>c8 ; 16 = whoosh #8 + .word sp_woosh|11,>cc ; 17 = whoosh #9 + + .word sp_smack|20,>d0 ; 18 = hard hit #0 + .word sp_smack|11,>d4 ; 19 = hard hit #1 + .word sp_smack|21,>d8 ; 1a = hard hit #2 + .word sp_smack|24,>dc ; 1b = hard hit #3 + .word sp_smack|20,>e0 ; 1c = hard hit #4 + + .word sp_system1|56,>e4 ; 1d = New Deep Crunchy bone break (ALLDUCK) + .word sp_attkv|40,>e8 ; 1e = long effort grunt #1 + .word sp_attkv|29,>ec ; 1f = long effort grunt #2 + .word sp_attkv|42,>f0 ; 20 = long effort grunt #3 + .word sp_attkv|36,>f4 ; 21 = long effort grunt #4 + .word sp_attkv|26,>f8 ; 22 = long effort grunt #5 + .word sp_attkv|31,>fc ; 23 = long effort grunt #6 + .word sp_attkv|34,>100 ; 24 = long effort grunt #7 + .word sp_attkv|33,>104 ; 25 = long effort grunt #8 + .word sp_attkv|30,>108 ; 26 = long effort grunt #9 + .word sp_attkv|29,>10c ; 27 = long effort grunt #10 + .word sp_attkv|28,>110 ; 28 = long effort grunt #11 + .word sp_attkv|42,>114 ; 29 = long effort grunt #12 + + .word sp_attkv|19,>118 ; 2a = short effort grunt #0 + .word sp_attkv|23,>11c ; 2b = short effort grunt #1 + .word sp_attkv|24,>120 ; 2c = short effort grunt #2 + .word sp_attkv|13,>124 ; 2d = short effort grunt #3 + .word sp_attkv|16,>128 ; 2e = short effort grunt #4 + .word sp_attkv|26,>12c ; 2f = short effort grunt #5 + .word sp_attkv|20,>130 ; 30 = short effort grunt #6 + .word sp_attkv|22,>134 ; 31 = short effort grunt #7 + .word sp_attkv|23,>138 ; 32 = short effort grunt #8 + .word sp_smack|70,236 ; 33 = baseball bat smack + .word sp_system2|24,>dc ; 34 = hard hit #3 (with higher priority) + .word sp_system3|21,>b0 ; 35 = whoosh (screen close) + .word 0,0 ; 36 + .word sp_mat2|77,>104 ; 37 = CEMENT body slam outside the ring + .word 0,0 ; 38 + .word sp_system2|96,1616 ; 39 = robo coinin + .word 0,0 ; 3a + .word 0,0 ; 3b + .word sp_woosh|37,1284 ; 3c = rope twang + .word sp_mat2|62,408 ; 3d = ring mat crash #0 + .word sp_wspch|92,1448 ; 3e = doink joy buzzer + .word sp_attkv|67,1452 ; 3f = doink water spray + .word sp_attkv|21,176 ; 40 = urn materialisation + .word sp_attkv|57,1236 ; 41 = Bam Bam rising in flames + .word sp_attkv|185,904 ; 42 = Bam Bam taunt + .word sp_smack|70,1436 ; 43 = doink big glove slap + .word sp_smack|84,1440 ; 44 = doink big foot hit + .word sp_mat2|80,1444 ; 45 = doink big hammer hit + .word sp_attkv|11,428 ; 46 = footsteps on mat #0 + .word sp_attkv|15,432 ; 47 = footsteps on mat #1 + .word sp_system2|131,1376 ; 48 = COIN IN SOUNDS + + .word sp_anncer|53,1512 ; 49 = buy in sound + .word sp_woosh|19,1556 ; 4a = flashbulb #0 + .word sp_woosh|32,1560 ; 4b = flashbulb #1 + .word sp_woosh|40,1564 ; 4c = flashbulb #2 + .word sp_smack|35,1568 ; 4d = flash the "W" after a victory + .word sp_reacv|99,160 ; 4e =BOWLING PINS strike #0 + .word sp_reacv|93,164 ; 4f =BOWLING PINS strike #1 + + ;DOINK SPEECH + .word sp_wspch|53,>20c ; 50 = wait a minute, wait a minute + .word sp_wspch|29,>210 ; 51 = time out + .word 0,0 ; 52 = + .word sp_wspch|23,>218 ; 53 = times + .word sp_wspch|39,>21c ; 54 = wait, wait + .word sp_wspch|79,>220 ; 55 = laugh #0 + .word sp_wspch|140,>224 ; 56 = laugh #1 + .word sp_wspch|42,>228 ; 57 = laugh #2 + .word sp_wspch|123,>22c ; 58 = laugh #3 + .word sp_wspch|91,>230 ; 59 = yell as tossed + + ;RAZOR SPEECH + .word sp_wspch|94,>300 ; 5a = you picked the right guy + .word sp_wspch|69,>304 ; 5b = check me out, maing... + .word 0,0 ; 5c + .word 0,0 ; 5d + .word 0,0 ; 5e + .word 0,0 ; 5f + + ;SHAWN SPEECH +; .word sp_wspch|269,>280 ; 60 = lucky you...breaking bones + .word sp_wspch|255,>280 ; 60 = lucky you...breaking bones + .word sp_wspch|130,>284 ; 61 = wrestler o' 90's + .word sp_wspch|132,>288 ; 62 = how could...hurt so bad + .word sp_wspch|26,>28c ; 63 = no no + .word sp_wspch|21,>290 ; 64 = please + + ;BAM BAM SPEECH + .word 0,0 ; 65 = + .word sp_wspch|147,900 ; 66 = the beast from the east + .word sp_wspch|185,904 ; 67 = bam bam - bam bam - yeah! + .word sp_wspch|162,908 ; 68 = bam bam bigelow + .word sp_wspch|160,912 ; 69 = burn, baby, burn! + .word sp_wspch|24,916 ; 6a = hey! #0 + .word sp_wspch|23,920 ; 6b = no no + .word 0,0 ; 6c = + .word 0,0 ; 6d = + .word sp_wspch|36,932 ; 6e = no no no + .word sp_wspch|103,936 ; 6f = get out of my ring + + + .word 0,0 ; 70 + .word sp_reacv|30,>45c ; 71 = DOINK pain #1 + .word sp_reacv|40,>460 ; 72 = DOINK pain #2 + + .word sp_reacv|42,>464 ; 73 = DOINK gut hit #0 + .word sp_reacv|40,>468 ; 74 = DOINK gut hit #1 + .word sp_reacv|18,>46c ; 75 = DOINK gut hit #2 + + ;low-priority mat crashes + .word sp_losmack|75-25,>500 ; 76 = Plywood crash #0 + .word sp_losmack|77-25,>508 ; 77 = Plywood crash #2 + .word sp_losmack|83-25,>510 ; 78 = Plywood crash #4 + + .word sp_reacv|24,>47c ; 79 = RAZOR generic grunt #0 + .word 0,0 ; 7a + .word 0,0 ; 7b + + .word sp_reacv|29,>488 ; 7c = RAZOR gut hit #0 + .word sp_system1|64,1528 ; 7d =SCREEN WIPE upward in pitch #1 + .word sp_system1|64,1536 ; 7e =SCREEN WIPE upward in pitch #3 + .word sp_system1|70,1544 ; 7f =SCREEN WIPE downward in pitch #1 + .word sp_system1|73,1552 ; 80 =SCREEN WIPE downward in pitch #3 + .word 0,0 ; 81 + + .word sp_reacv|62,1196 ; 82 = BAM BAM effort #1 + + .word 0,0 ;* 83 = JASON effort grunt #0 + .word 0,0 ;* 84 = JASON effort grunt #1 + .word sp_attkv|39,>415 ; 85 = JASON effort grunt #2 + .word sp_attkv|31,>418 ; 86 = JASON effort grunt #3 + .word sp_attkv|31,>41b ; 87 = JASON effort grunt #4 + .word sp_attkv|39,>41e ; 88 = JASON effort grunt #5 + .word sp_attkv|40,>421 ; 89 = JASON effort grunt #6 + .word sp_attkv|34,>424 ; 8a = JASON effort grunt #7 + .word sp_attkv|27,>427 ; 8b = JASON effort grunt #8 + .word sp_attkv|35,>42a ; 8c = CG effort grunt #0 + .word sp_attkv|44,>42d ; 8d = CG effort grunt #1 + .word sp_attkv|35,>430 ; 8e = CG effort grunt #2 + .word sp_attkv|36,>433 ; 8f = CG effort grunt #3 + .word sp_attkv|36,>433 ; 90 = CG effort grunt #4 + .word sp_attkv|25,>436 ; 91 = CG effort grunt #5 + .word sp_attkv|34,>439 ; 92 = CG effort grunt #6 + .word sp_attkv|49,>43c ; 93 = CG effort grunt #7 + .word sp_attkv|57,>43f ; 94 = CG effort grunt #8 + .word 0,0 ;* 95 = SAL pain grunt #0 + .word 0,0 ;* 96 = SAL pain grunt #1 + .word 0,0 ;* 97 = SAL pain grunt #2 + .word sp_system1|58,464 ; 98 =BONEBREAK for Lex/BamBam/Piledrivers + + .word sp_smack|38,1228 ; 99 =BAMBAM flaming punch woosh #0 + .word sp_smack|36,1232 ; 9a =BAMBAM flaming punch woosh #1 + .word sp_system1|32,1492 ; 9b =BONEBREAK for Lex/BamBam/Piledrivers + .word sp_attkv|74,1240 ; 9c =BAMBAM flaming splash + .word sp_smack|60,1244 ; 9d =BAMBAM lands flaming punch #0 + .word sp_smack|59,1248 ; 9e =BAMBAM lands flaming punch #1 + .word sp_smack|61,1252 ; 9f =BAMBAM lands flaming blow #2 + .word sp_smack|28,1256 ; a0 =BAMBAM lands flaming blow #3 + .word sp_smack|24,1260 ; a1 =BAMBAM lands flaming blow #4 + .word sp_attkv|81,1264 ; a2 =BAMBAM jumps off the turnbuckle & flames up + .word sp_attkv|235,1268 ; a3 =BAMBAM's opponent explodes in flames + .word 0,0 ; a4 = + .word sp_system2|77-25,>508 ; a5 = Plywood crash #2 (duplicate with higher priority) + .word 0,0 ; a6 = + .word 0,0 ; a7 = + .word sp_system1|212,232 ; a8 = PERFECT VICTORY sparkly + .word sp_system1|41,>628 ; a9 = RAZOR slash whoosh + .word sp_system1|42,>168 ; aa = CARTOON richocet bonk + .word sp_wspch|72,>4D4 ; ab = BAMBAM morph out of mat + .word sp_smack|40,>15C ; ac = CARTOON bong #2 + .word sp_smack|58,>170 ; ad = CARTOON crash/bong #0 + .word sp_reacv|33,1220 ; ae = SHAWN pain #1 + .word sp_reacv|33,1224 ; af = SHAWN gut hit #0 + + ;MISCELLANEOUS SOUNDS + .word sp_mat1|29,>315 ; b0 = some blip sound + .word sp_anncer|90,0148h ; b1 = round start bell + .word sp_smack|19,>160 ; b2 = squeeze horn honk #0 + .word sp_smack|75,014fh ; b3 = twist - slam + .word sp_mat1|46,344 ; b4 = bong (temp!) + .word sp_mat1|15,>1b2 ; b5 = footstep on mat #1 + + .word sp_system1|34,>178 ; b6 = Quick whistle for transitions + + .word sp_system1|9,1364 ; b7 = timer tick #0 + .word sp_system1|11,1368 ; b8 = timer tock #0 + .word sp_system1|84,1484 ; b9 = danger sound + .word sp_system1|102,1488 ; ba = combo performed + .word sp_system1|125,1520 ; bb = reversal_sound + + .word sp_system1|118,1472 ; bc =ALARM companion to 1520 + .word sp_system1|126,1476 ; bd =ALARM snarl alarm #0 + .word sp_mat1|51,>17c ; be = wobble (danger!) + .word sp_mat2|75-25,>500 ; bf = Plywood crash #0 + .word sp_mat1|39,316 ; c0 = fall to mat #0 + .word sp_mat2|77-25,>508 ; c1 = Plywood crash #2 + .word sp_mat1|26,320 ; c2 = fall to mat #1 + .word sp_mat2|83-25,>510 ; c3 = Plywood crash #4 + .word sp_mat2|74,1516 ; c4 = VICTORY "w" flys up the screen + .word sp_mat2|101,>518 ; c5 = Chair crash #1 + .word sp_smack|46,1580 ; c6 = HORIZON RING clatter/crash against fence #0 + .word sp_system1|9,1456 ; c7 = player 1 moves cursor #1 + .word sp_system1|9,1460 ; c8 = player 2 moves cursor #1 + .word 0,0 ; c9 = player 1 moves cursor #2 + .word 0,0 ; ca = player 2 moves cursor #2 + .word sp_system2|63,244 ; cb = player 1 selects #1 + .word sp_system2|63,248 ; cc = player 2 selects #1 + .word sp_smack|90,324 ; cd = FX wild metallic clang/chain drag + .word sp_system1|142,1180 ; ce =UNDERTAKER fires a ghost at you (try for both) + .word sp_mat2|100,1184 ; cf =UNDERTAKER bats flutter (endless) + .word sp_system1|14,1188 ; d0 =UNDERTAKER tombstone morphs into his hands + .word sp_system1|24,1192 ; d1 =UNDERTAKER hits you with his tombstone + .word sp_system1|48,1208 ; d2 =UNDERTAKER multi-exposures over & grabs you + .word sp_wspch|57,588 ; d3 =FROM THE CROWD "pin him!!" #0 + .word sp_wspch|72,592 ; d4 =FROM THE CROWD "pin him!!" #1 + .word sp_wspch|50,596 ; d5 =FROM THE CROWD "pin him!!" #2 + .word sp_wspch|65,600 ; d6 =FROM THE CROWD female scream + .word sp_reacv|7,468 ; d7 =SHAWN hearts kissy-face #0 + .word sp_reacv|29,472 ; d8 =SHAWN hearts kissy-face #1 + .word sp_reacv|11,476 ; d9 =YOKO hams circle #0 + .word sp_reacv|19,480 ; da =YOKO hams circle #1 + .word sp_reacv|18,484 ; db =YOKO fishes circle #0 + .word sp_reacv|31,488 ; dc =YOKO fishes circle #1 + .word sp_system1|20,>d0 ; dd = random select sound (hard hit) + .word 0,0 ; de + .word 0,0 ; df + + ;ANNOUNCER SPEECH - must be contiguous +announcer_start + ;VINCE MCMAHON + .word sp_anncer|89,3072 ; e0 = VINCE greeting + .word sp_anncer|18,3076 ; e1 = VINCE ascending Doink #1 + .word sp_anncer|19,3080 ; e2 = VINCE ascending Doink #2 + .word sp_anncer|21,3084 ; e3 = VINCE ascending Doink #3 + .word sp_anncer|24,3088 ; e4 = VINCE ascending Doink #4 + + .word sp_anncer|26,3092 ; e5 = VINCE ascending Shawn #1 + .word sp_anncer|26,3096 ; e6 = VINCE ascending Shawn #2 + .word sp_anncer|28,3100 ; e7 = VINCE ascending Shawn #3 + .word sp_anncer|31,3104 ; e8 = VINCE ascending Shawn #4 + + .word sp_anncer|26,3108 ; e9 = VINCE ascending Razor #1 + .word sp_anncer|27,3112 ; ea = VINCE ascending Razor #2 + .word sp_anncer|30,3116 ; eb = VINCE ascending Razor #3 + .word sp_anncer|31,3120 ; ec = VINCE ascending Razor #4 + + .word sp_anncer|105,3124 ; ed = VINCE Unbeeleeevable! #0 + .word sp_anncer|66,3128 ; ee = VINCE Forget about it! + .word sp_anncer|48,3132 ; ef = VINCE Here's the setup... + .word sp_anncer|86,3136 ; f0 = VINCE aaaaannnnd OH! + .word sp_anncer|49,3140 ; f1 = VINCE Oh, my! + .word sp_anncer|61,3144 ; f2 = VINCE Congratulations + + .word sp_anncer|34,3148 ; f3 = VINCE ascending Undertaker #1 + .word sp_anncer|37,3152 ; f4 = VINCE ascending Undertaker #2 + .word sp_anncer|36,3156 ; f5 = VINCE ascending Undertaker #3 + .word sp_anncer|44,3160 ; f6 = VINCE ascending Undertaker #4 + + .word sp_anncer|32,3164 ; f7 = VINCE ascending Bam Bam #1 + .word sp_anncer|30,3168 ; f8 = VINCE ascending Bam Bam #2 + .word sp_anncer|32,3172 ; f9 = VINCE ascending Bam Bam #3 + .word sp_anncer|34,3176 ; fa = VINCE ascending Bam Bam #4 + + .word sp_anncer|22,3180 ; fb = VINCE ascending Luger #1 + .word sp_anncer|21,3184 ; fc = VINCE ascending Luger #2 + .word sp_anncer|21,3188 ; fd = VINCE ascending Luger #3 + .word sp_anncer|26,3192 ; fe = VINCE ascending Luger #4 + + .word sp_anncer|26,3196 ; ff = VINCE ascending Hitman #1 + .word sp_anncer|26,3200 ;100 = VINCE ascending Hitman #2 + .word sp_anncer|27,3204 ;101 = VINCE ascending Hitman #3 + .word sp_anncer|25,3208 ;102 = VINCE ascending Hitman #4 + + .word sp_anncer|27,3212 ;103 = VINCE ascending Yoko #1 + .word sp_anncer|26,3216 ;104 = VINCE ascending Yoko #2 + .word sp_anncer|30,3220 ;105 = VINCE ascending Yoko #3 + .word sp_anncer|32,3224 ;106 = VINCE ascending Yoko #4 + + .word sp_anncer|63,3228 ;107 = VINCE Here we go! + .word sp_anncer|93,3232 ;108 = VINCE What a matchup this is! + + ; VINCE Very impressive move by + .word sp_anncer|92,3236 ;109 = ...Doink! + .word sp_anncer|113,3240 ;10a = ...Shawn Michaels! + .word sp_anncer|108,3244 ;10b = ...Razor Ramon! + .word sp_anncer|113,3248 ;10c = ...the Undertaker! + .word sp_anncer|125,3252 ;10d = ...Bam Bam Bigelow! + .word sp_anncer|107,3256 ;10e = ...Lex Luger! + .word sp_anncer|110,3260 ;10f = ...Bret Hart! + .word sp_anncer|121,3264 ;110 = ...Yokozuna! +;LEAVE PLENTY OF SPACE FOR FUTURE SOUNDS + ;Tonites match up.... + .word sp_anncer|100,3412 ;111 = ...Doink! + .word sp_anncer|100,3416 ;112 = ...Shawn Michaels! + .word sp_anncer|99,3420 ;113 = ...Razor Ramon! + .word sp_anncer|127,3424 ;114 = ...Bam Bam Bigelow! + .word sp_anncer|105,3428 ;115 = ...the Undertaker! + .word sp_anncer|98,3432 ;116 = ...Lex Luger! + .word sp_anncer|121,3436 ;117 = ...Bret Hart! + .word sp_anncer|116,3440 ;118 = ...Yokozuna! + ;In the square circle tonite.. + .word sp_anncer|126,3444 ;119 =...Doink! + .word sp_anncer|126,3448 ;11a =...Shawn Michaels! + .word sp_anncer|125,3452 ;11b =...Razor Ramon! + .word sp_anncer|153,3456 ;11c =...Bam Bam Bigelow! + .word sp_anncer|131,3460 ;11d =...the Undertaker! + .word sp_anncer|124,3464 ;11e =...Lex Luger! + .word sp_anncer|147,3468 ;11f =...Bret Hart! + .word sp_anncer|142,3472 ;120 =...Yokozuna! + .word sp_anncer|82,3476 ;121 =versus Doink! + .word sp_anncer|83,3480 ;122 =versus Shawn Michaels! + .word sp_anncer|72,3484 ;123 =versus Razor Ramon! + .word sp_anncer|104,3488 ;124 =versus Bam Bam Bigelow! + .word sp_anncer|83,3492 ;125 =versus the Undertaker! + .word sp_anncer|75,3496 ;126 =versus Lex Luger! + .word sp_anncer|98,3500 ;127 =versus Bret Hart! + .word sp_anncer|87,3504 ;128 =versus Yokozuna! + .word sp_anncer|135,3360 ;129 =this is a complete disaster + .word sp_anncer|86,3356 ;12a =this is a debacle + .word sp_anncer|54,3640 ;12b =doink the clown + .word sp_anncer|55,3644 ;12c =shawn michaels + .word sp_anncer|44,3648 ;12d =razor ramon + .word sp_anncer|76,3652 ;12e =bam bam + .word sp_anncer|54,3656 ;12f =undertaker + .word sp_anncer|47,3660 ;130 =lex luger + .word sp_anncer|70,3664 ;131 =bret hart + .word sp_anncer|59,3668 ;132 =yoko + .word sp_anncer|28,3672 ;133 =and + .word sp_anncer|62,3228 ;134 =here we go + .word sp_anncer|93,3232 ;135 =what a matchup this is + .word sp_anncer|104,3628 ;136 =a capacity crowd here + .word sp_anncer|75,3528 ;137 =at wrestlemania + .word sp_anncer|73,3508 ;138 =who will be the victor ? + .word sp_anncer|73,3512 ;139 =its anybody's guess + .word sp_anncer|150,3516 ;13a =anything can happen here in wwf + .word sp_anncer|48,3532 ;13b =theres the bell + .word sp_anncer|73,3564 ;13c =he's going to the top rope + .word sp_anncer|75,3300 ;13d =he's going to the top + .word sp_anncer|52,3328 ;13e =here it comes + .word sp_anncer|57,3368 ;13f =boomshakalaka + .word sp_anncer|83,3380 ;140 =and.... #1 + .word sp_anncer|57,3384 ;141 =and.... #2 + .word sp_anncer|90,3388 ;142 =and.... #3 + .word sp_anncer|63,3556 ;143 =look at this + .word sp_anncer|69,3568 ;144 =off the top rope + .word sp_anncer|108,3396 ;145 =ooh (for kaboom) + .word sp_anncer|74,3400 ;146 =kaboom + .word sp_anncer|109,3392 ;147 =long oooh + .word sp_anncer|59,3316 ;148 =with authority + .word sp_anncer|97,3320 ;149 =oh my goodness #0 + .word sp_anncer|34,3324 ;14a =look out + .word sp_anncer|56,3332 ;14b =did you see that + .word sp_anncer|39,3336 ;14c =and..... #0 + .word sp_anncer|31,3340 ;14d =oh ! #0 + .word sp_anncer|68,3352 ;14e =oooh! #0 + .word sp_anncer|53,3364 ;14f =thats gotta hurt + .word sp_anncer|84,3372 ;150 =wow! #0 + .word sp_anncer|61,3376 ;151 =wow! #1 + .word sp_anncer|65,3404 ;152 =almost + .word sp_anncer|50,3536 ;153 =nicely done + .word sp_anncer|93,3540 ;154 =heaves him clear out of the ring + .word sp_anncer|48,3544 ;155 =nice escape + .word sp_anncer|64,3548 ;156 =nice execution + .word sp_anncer|128,3312 ;157 =can he get up in time + .word sp_anncer|85,3308 ;158 =trying to get back to his feet + .word sp_anncer|31,3580 ;159 =a miss + .word sp_anncer|62,3584 ;15a =and misses + .word sp_anncer|56,3588 ;15b =into the ropes + .word sp_anncer|43,3592 ;15c =a quick reversal + .word 0,0 ;15d + .word sp_anncer|51,3600 ;15e =this could be it + .word sp_anncer|53,3604 ;15f =no, wait a minute + .word sp_anncer|63,3608 ;160 =Unbeeleeevable! #1 + .word sp_anncer|92,3612 ;161 =Unbeeleeevable! #2 + .word sp_anncer|54,3616 ;162 =oh my goodness #1 + .word 0,0 ;163 + .word sp_anncer|95,3624 ;164 =listen to the crowd + .word sp_anncer|71,3632 ;165 =did you hear that + .word sp_anncer|106,3636 ;166 =ive never seen anything like that + .word sp_anncer|86,3268 ;167 =give credit to doink + .word sp_anncer|110,3272 ;168 =give credit to shawn + .word sp_anncer|108,3276 ;169 =give credit to razor + .word sp_anncer|119,3280 ;16a =give credit to bam + .word sp_anncer|112,3284 ;16b =give credit to undertaker + .word sp_anncer|104,3288 ;16c =give credit to lex luger + .word sp_anncer|105,3292 ;16d =give credit to bret hart + .word sp_anncer|118,3296 ;16e =give credit to yoko + .word sp_anncer|90,3680 ;16f =not a good idea + .word sp_anncer|70,3684 ;170 =what was he thinking + .word sp_anncer|94,3688 ;171 =you cant get any closer than that + .word sp_anncer|120,3692 ;172 =now its doink coming back + .word sp_anncer|120,3696 ;173 =now its shawn michaels coming back + .word sp_anncer|119,3700 ;174 =now its razor ramone coming back + .word sp_anncer|126,3704 ;175 =now its the undertaker coming back + .word sp_anncer|147,3708 ;176 =now its bam bam bigelow coming back + .word sp_anncer|118,3712 ;177 =now its lex luger coming back + .word sp_anncer|142,3716 ;178 =now its bret hart coming back + .word sp_anncer|136,3720 ;179 =now its yokozuna coming back + .word sp_anncer|112,3724 ;17a =whats keeping these guys up + .word sp_anncer|109,3728 ;17b =it looks like its all over + .word 0,0 ;17c + .word sp_anncer|130,3736 ;17d =its pandemonium in the ring + .word sp_anncer|39,3740 ;17e =whats this + .word sp_anncer|100,3744 ;17f =what a turn of events this is + .word sp_anncer|95,3748 ;180 =magnificent! + .word sp_anncer|80,3752 ;181 =can you believe that! + .word sp_anncer|88,3756 ;182 =rejected!! + .word sp_anncer|62,3760 ;183 =what a beating! + .word sp_anncer|40,3764 ;184 =to the face! + .word sp_anncer|54,3768 ;185 =to the midsection! + .word 0,0 ;186 =and another! + .word sp_anncer|112,3776 ;187 =I wouldn't want to be on the receiving end of that! + .word sp_anncer|54,3780 ;188 =what power! + .word 0,0 ;189 + .word sp_anncer|67,3788 ;18a =what skill! + .word sp_anncer|67,3792 ;18b =what a blow! + .word sp_anncer|52,3796 ;18c =awesome... + .word sp_anncer|89,3800 ;18d =just awesome! + .word sp_anncer|82,3804 ;18e =good night! + .word sp_anncer|28,3808 ;18f =hello! + .word sp_anncer|130,3992 ;190 =this is for all the marbles + .word sp_anncer|174,3996 ;191 =are you tough enough to step into the squared circle + .word sp_anncer|128,4000 ;*192 =what an unbelievable comeback + .word 0,0 ;193 = + .word 0,0 ;194 = + .word 0,0 ;195 = + .word 0,0 ;196 = + .word 0,0 ;197 = + .word sp_anncer|74,3844 ;198 =can anybody stop him!? + .word 0,0 ;199 + .word sp_anncer|28,3852 ;19a =What the -- + .word sp_anncer|34,3856 ;19b =Wait a minute -- + .word sp_anncer|49,3860 ;19c =He can't do that + .word sp_anncer|42,3864 ;19d =Is that legal? + .word sp_anncer|66,3868 ;19e =Now that was cheap! + .word sp_anncer|62,3872 ;19f =That's not very fair! + .word sp_anncer|70,3876 ;1A0 =Somebody call security! + .word sp_anncer|66,3880 ;1A1 =That wasn't very nice! + .word sp_anncer|64,3884 ;1A2 =I can't watch this! + .word sp_anncer|87,3888 ;1A3 =Most impressive! + .word sp_anncer|130,3892 ;1A4 =incredible combination move! + .word sp_anncer|25,3896 ;1A5 =No!! + .word sp_anncer|28,3900 ;1A6 =Yess!! + .word sp_anncer|74,3904 ;1A7 =High-Risk Manuever -- + .word sp_anncer|75,3908 ;1A8 =What a slam! + .word sp_anncer|0,0 ;1A9 =it's a donnybrook + .word sp_anncer|124,3916 ;1Aa =he's just gone berserk + .word 0,0 ;1Ab =the joybuzzer + .word sp_anncer|64,3924 ;1Ac =shocking + .word sp_anncer|110,3928 ;1Ad =can you believe what you've just seen? + .word sp_anncer|44,3932 ;1Ae =he's got him + .word 0,0 ;1Af + .word 0,0 ;1B0 + .word 0,0 ;1B1 + .word 0,0 ;1B2 + .word 0,0 ;1B3 + .word 0,0 ;1B4 + .word 0,0 ;1B5 + .word 0,0 ;1B6 + .word 0,0 ;1B7 + .word 0,0 ;1B8 + .word 0,0 ;1B9 + .word sp_anncer|136,3980 ;1Ba =Somehow I don't think this grudge will end here + .word sp_anncer|80,3984 ;1Bb =Sign here please + .word sp_anncer|67,3988 ;1Bc =good night! + .word 0,0 ;1Bd + .word 0,0 ;1Be + .word 0,0 ;1Bf + .word 0,0 ;1C0 + .word 0,0 ;1C1 + .word 0,0 ;1C2 + .word 0,0 ;1C3 + .word 0,0 ;1C4 + .word 0,0 ;1C5 + .word 0,0 ;1C6 + .word 0,0 ;1C7 + .word 0,0 ;1C8 + .word 0,0 ;1C9 + .word 0,0 ;1Ca + .word 0,0 ;1Cb + .word 0,0 ;1Cc + .word 0,0 ;1Cd + .word 0,0 ;1Ce + .word 0,0 ;1Cf +vince_end ;end of vince speech section + ;RANDY SAVAGE + .word sp_anncer|57,6400 ;1D0 =Dawuz beautiful + .word sp_anncer|93,6364 ;1D1 =taste of his own medicine + .word sp_anncer|47,6368 ;1D2 =look at this + .word sp_anncer|57,6464 ;1D3 =right to the kisser + .word sp_anncer|62,6468 ;1D4 =Wudda moron + .word sp_anncer|52,6448 ;1D5 =Thawuz close + .word sp_anncer|58,6436 ;1D6 =did you see that + .word sp_anncer|100,6444 ;1D7 =ive never seen anything like that + .word sp_anncer|50,6388 ;1D8 =oh yeah + .word sp_anncer|54,6380 ;1D9 =this could be it + .word sp_anncer|57,6384 ;1Da =no, wait a minute + .word sp_anncer|83,6164 ;1Db =what a move by Shawn Michaels + .word sp_anncer|65,6156 ;1Dc =what a move by Doink + .word sp_anncer|86,6168 ;1Dd =what a move by Razor Ramone + .word sp_anncer|78,6172 ;1De =what a move by the Undertaker + .word sp_anncer|88,6176 ;1Df =what a move by Bam Bam + .word sp_anncer|72,6180 ;1E0 =what a move by Lex + .word sp_anncer|76,6192 ;1E1 =what a move by the Hitman + .word sp_anncer|82,6196 ;1E2 =what a move by Yokozuna + .word sp_anncer|75,6476 ;1E3 =That'll cost him + .word sp_anncer|80,6392 ;1E4 =Ha what an idiot + .word sp_anncer|66,6480 ;1E5 =Oooh that hurts + .word sp_anncer|52,6484 ;1E6 =Game over + .word sp_anncer|51,6500 ;1E7 =What power + .word sp_anncer|54,6504 ;1E8 =What speed + .word sp_anncer|59,6396 ;1E9 =Dawuz great + .word sp_anncer|47,6508 ;1Ea =awesome + .word sp_anncer|39,6404 ;1Eb =Alright + .word sp_anncer|62,6408 ;1Ec =Wuzat cheater up to? + .word sp_anncer|76,6536 ;1Ed =What's going on? + .word sp_anncer|59,6532 ;1Ee =He can't do that + .word sp_anncer|51,6540 ;1Ef =That was cheap + .word sp_anncer|75,6564 ;1F0 =Somebody call security + .word sp_anncer|61,6572 ;1F1 =That wasn't very nice + .word sp_anncer|93,6580 ;1F2 =I can't watch + .word sp_anncer|47,6588 ;1F3 =Incredible + .word sp_anncer|114,6584 ;1F4 =I could watch this all day long + .word sp_anncer|60,6600 ;1F5 =I think he broke it + .word sp_anncer|84,6604 ;1F6 =Nobody gets up from that + .word sp_anncer|70,6696 ;1F7 =Lights out + .word sp_anncer|64,6556 ;1F8 =Aw c'mon #1 + .word sp_anncer|115,6144 ;*1F9 =Here we are at Midway's Wrestlemania + .word sp_anncer|106,6148 ;*1Fa =And me Jerry the King Lawler +randy_end ;end of randy speech section + ;HOWARD FINKEL + .word sp_anncer|117,2560 ;1Fb =good evening ladies and gents + .word sp_anncer|130,2564 ;1Fc =my name is howard finkel + .word sp_anncer|226,2568 ;1Fd =and welcome to wrestlmainia by midway + .word sp_anncer|192,2576 ;1Fe =we have a winner + .word sp_anncer|188,2572 ;1Ff =this match is scheduled for 2 falls + +howards_end ;extremely dull british film - YOU SAID IT ! + .word sp_reacv|20,4500 ; 200 =DOINK takes a punch to the face + .word sp_reacv|26,4504 ; 201 =DOINK takes a head-butt + .word sp_reacv|27,4508 ; 202 =DOINK takes a special weapon to the face/head + .word sp_reacv|21,4512 ; 203 =DOINK takes a hit to the gut + .word sp_reacv|21,4516 ; 204 =DOINK takes a kick/knee to the gut + .word sp_reacv|33,4520 ; 205 =DOINK takes a gut hit (alternate) + .word sp_attkv|21,4524 ; 206 =DOINK short effort grunt before kick/punch #0 + .word sp_attkv|44,4536 ; 207 =DOINK medium effort grunt before lifting/reaching for something + .word sp_attkv|61,4540 ; 208 =DOINK long effort grunt before throwing something + .word sp_attkv|70,4544 ; 209 =DOINK long effort grunt before jumping from top rope maybe + .word sp_reacv|39,4548 ; 20a =DOINK short scream of pain #0 + .word sp_reacv|50,4552 ; 20b =DOINK short scream of pain #1 + .word sp_reacv|46,4556 ; 20c =DOINK medium scream of pain #0 + .word sp_wspch|63,4560 ; 20d =DOINK medium scream of pain #1 + .word sp_reacv|104,4564 ; 20e =DOINK long scream of pain #0 + .word sp_attkv|71,4568 ; 20f =DOINK JOYBUZZER: put'er there pal + .word sp_attkv|54,4572 ; 210 =DOINK JOYBUZZER: pleased to meet you + .word sp_attkv|66,4576 ; 211 =DOINK JOYBUZZER BLOCKED allllrighty then! + .word sp_attkv|70,4580 ; 212 =DOINK REVERSAL I don't think so! + .word sp_attkv|48,4584 ; 213 =DOINK REVERSAL O no you don't + .word sp_attkv|77,4588 ; 214 =DOINK 1st Fall victory (?) + .word sp_wspch|17,4592 ; 215 =DOINK Jarvis laugh for repeat punch #0 + .word sp_wspch|18,4596 ; 216 =DOINK Jarvis laugh for repeat punch #1 + .word sp_wspch|21,4600 ; 217 =DOINK Jarvis laugh for repeat punch #2 + .word sp_wspch|40,4604 ; 218 =DOINK Jarvis laugh for repeat punch #3 + .word sp_wspch|200,4608 ; 219 =DOINK nonono loop - endless + .word sp_attkv|160,4612 ; 21a =DOINK choking loop (endless) + + .WORD sp_attkv|21,4616 ;21b =DOINK short effort grunt #3 + .WORD sp_attkv|18,4620 ;21c =DOINK short effort grunt #4 + .WORD sp_attkv|48,4624 ;21d =DOINK double effort grunt #0 + .WORD sp_attkv|47,4628 ;21e =DOINK double effort grunt #1 + .WORD sp_attkv|52,4632 ;21f =DOINK double effort grunt #2 + .WORD sp_attkv|55,4636 ;220 =DOINK reaches out/down & grabs you #0 + .WORD sp_attkv|40,4640 ;221 =DOINK reaches out/down & grabs you #1 + .WORD sp_attkv|76,4644 ;222 =DOINK lifts you up #0 + .WORD sp_attkv|74,4648 ;223 =DOINK lifts you up #1 + .WORD sp_attkv|26,4652 ;224 =DOINK shakes you like a rug #0 + .WORD sp_attkv|25,4656 ;225 =DOINK shakes you like a rug #1 + .WORD sp_attkv|27,4660 ;226 =DOINK shakes you like a rug #2 + .WORD sp_attkv|17,4664 ;227 =DOINK pushes you #0 + .WORD sp_attkv|13,4668 ;228 =DOINK pushes you #1 + .WORD sp_attkv|67,4672 ;229 =DOINK jumps from the turnbuckle #0 + .WORD sp_attkv|68,4676 ;22a =DOINK jumps from the turnbuckle #1 + .WORD sp_attkv|29,4680 ;22b =DOINK takes a head butt #0 + .WORD sp_attkv|29,4684 ;22c =DOINK takes a hit to the gut #3 + .WORD sp_attkv|33,4688 ;22d =DOINK takes a hit to the gut #4 + .WORD sp_attkv|55,4692 ;22e =DOINK gets lifted up #0 + .WORD sp_attkv|59,4696 ;22f =DOINK gets lifted up #1 + .WORD sp_attkv|44,4700 ;230 =DOINK gets pushed #0 + .WORD sp_attkv|42,4704 ;231 =DOINK gets pushed #1 + .WORD sp_attkv|36,4708 ;232 =DOINK gets tossed #0 + .WORD sp_attkv|52,4712 ;233 =DOINK gets tossed #1 + .WORD sp_attkv|19,4528 ;234 =DOINK short effort grunt before kick/punch #1 + .WORD sp_attkv|16,4532 ;235 =DOINK short effort grunt before kick/punch #2 + + .WORD sp_attkv|62,4800 ;236 =SAL as BRET REVERSAL o no you + .WORD sp_attkv|62,4804 ;237 =SAL as BRET REVERSAL right bac + .WORD sp_attkv|42,4808 ;238 =SAL as BRET excellent! + .WORD sp_attkv|20,4812 ;239 =SAL as BRET GRABS AN OPPONENT + .WORD sp_attkv|39,4816 ;23a =SAL as BRET GRABS AN OPPONENT + .WORD sp_attkv|31,4820 ;23b =SAL as BRET TAUNTS AN OPPONENT + .WORD sp_attkv|200,4824 ;23c =SAL as BRET nonono loop - endl + .WORD sp_attkv|23,4828 ;23d =SAL short effort grunt #0 + .WORD sp_attkv|35,4832 ;23e =SAL short effort grunt #1 + .WORD sp_attkv|31,4836 ;23f =SAL short effort grunt #2 + .WORD sp_attkv|28,4840 ;240 =SAL short effort grunt #3 + .WORD sp_attkv|24,4844 ;241 =SAL short effort grunt #4 + .WORD sp_attkv|22,4848 ;242 =SAL short effort grunt #5 + .WORD sp_attkv|37,4852 ;243 =SAL medium effort grunt #0 + .WORD sp_attkv|36,4856 ;244 =SAL medium effort grunt #1 + .WORD sp_attkv|62,4860 ;245 =SAL long effort grunt #0 + .WORD sp_attkv|64,4864 ;246 =SAL long effort grunt #1 + .WORD sp_attkv|50,4868 ;247 =SAL double effort grunt #0 + .WORD sp_attkv|47,4872 ;248 =SAL double effort grunt #1 + .WORD sp_attkv|45,4876 ;249 =SAL double effort grunt #2 + .WORD sp_attkv|21,4880 ;24a =SAL throws a head butt #0 + .WORD sp_attkv|33,4884 ;24b =SAL reaches & grabs #0 + .WORD sp_attkv|30,4888 ;24c =SAL reaches & grabs #1 + .WORD sp_attkv|25,4892 ;24d =SAL throws a kick #0 + .WORD sp_attkv|44,4896 ;24e =SAL leaps from the turnbuckle + .WORD sp_attkv|28,4900 ;24f =SAL pushes #0 + .WORD sp_reacv|27,4904 ;250 =SAL takes a face hit #0 + .WORD sp_reacv|20,4908 ;251 =SAL takes a face hit #1 + .WORD sp_reacv|30,4912 ;252 =SAL takes a face hit #2 + .WORD sp_reacv|28,4916 ;253 =SAL takes a face hit #3 + .WORD sp_reacv|28,4920 ;254 =SAL takes a gut hit #0 + .WORD sp_reacv|36,4924 ;255 =SAL takes a gut hit #1 + .WORD sp_reacv|34,4928 ;256 =SAL takes a gut hit #2 + .WORD sp_reacv|21,4932 ;257 =SAL takes a gut hit #3 + .WORD sp_attkv|29,4936 ;258 =SAL gets grabbed #0 + .WORD sp_attkv|41,4940 ;259 =SAL gets grabbed #1 + .WORD sp_attkv|46,4944 ;25a =SAL gets lifted #0 + .WORD sp_attkv|43,4948 ;25b =SAL gets lifted #1 + .WORD sp_attkv|31,4952 ;25c =SAL gets head-butted + .WORD sp_attkv|30,4956 ;25d =SAL gets pushed #0 + .WORD sp_attkv|34,4960 ;25e =SAL gets pushed #1 + .WORD sp_wspch|46,4964 ;25f =SAL gets tossed #0 + .WORD sp_attkv|111,4968 ;260 =SAL gets tossed #1 + .WORD sp_attkv|50,4972 ;261 =SAL gets turnbuckle-dived #0 + .WORD sp_attkv|44,4976 ;262 =SAL short pain yell #0 + .WORD sp_attkv|42,4980 ;263 =SAL short pain yell #1 + .WORD sp_attkv|70,4984 ;264 =SAL medium pain yell #0 + .WORD sp_attkv|55,4988 ;265 =SAL medium pain yell #1 + .WORD sp_attkv|56,4992 ;266 =SAL medium pain yell #2 + + .WORD sp_reacv|28,5000 ;267 =BOON face hit #0 + .WORD sp_reacv|28,5004 ;268 =BOON face hit #1 + .WORD sp_reacv|27,5008 ;269 =BOON head butted #0 + .WORD sp_reacv|24,5012 ;26A =BOON gut hit #0 + .WORD sp_reacv|21,5016 ;26b =BOON gut hit #1 + .WORD sp_reacv|27,5020 ;26c =BOON gut hit #2 + .WORD sp_attkv|46,5024 ;26d =BOON grabbed + .WORD sp_attkv|55,5028 ;26e =BOON lifted + .WORD sp_reacv|45,5032 ;26f =BOON short pain scream #0 + .WORD sp_wspch|72,5036 ;270 =BOON tossed #0 + .WORD sp_reacv|44,5040 ;271 =BOON medium pain scream + .WORD sp_attkv|14,5044 ;272 =BOON short effort grunt #0 + .WORD sp_attkv|17,5048 ;273 =BOON short effort grunt #1 + .WORD sp_attkv|13,5052 ;274 =BOON head butts an opponent + .WORD sp_attkv|35,5056 ;275 =BOON double effort grunt #0 + .WORD sp_attkv|34,5060 ;276 =BOON double effort grunt #1 + .WORD sp_attkv|33,5064 ;277 =BOON double effort grunt #2 + .WORD sp_attkv|56,5068 ;278 =BOON dives from the turnbuckle + .WORD sp_attkv|57,5072 ;279 =BOON lifts someone + .WORD sp_system1|29,5076 ;27A =BOON as RAZOR special repeat body slam #0 + .WORD sp_system1|27,5080 ;27B =BOON as RAZOR special repeat body slam #1 + .WORD sp_system1|14,5084 ;27C =BOON as RAZOR special repeat body slam #2 + .WORD sp_system1|39,5088 ;27D =BOON as RAZOR special repeat body slam #3 + .WORD sp_attkv|64,5092 ;27E =BOON as RAZOR special being pushed + .WORD sp_attkv|86,5096 ;27F =BOON as RAZOR special being grabbed + .WORD sp_attkv|120,5100 ;280 =BOON as RAZOR special being grabbed #2 + .WORD sp_attkv|200,5104 ;281 =BOON as RAZOR nonono loop + + .WORD sp_attkv|91,564 ;282 =VP as DOINK pushed + .WORD sp_attkv|112,568 ;283 =BOOTY as SHAWN pushed + .WORD sp_attkv|40,572 ;284 =BOOTY as SHAWN blocks + .WORD sp_attkv|63,576 ;285 =SAL as BRET pushed + .WORD sp_attkv|97,580 ;286 =GRANNER as LEX pushed + .WORD sp_attkv|55,584 ;287 =GRANNER as LEX blocks + .word 0,0 ;288 + .word 0,0 ;289 + .word 0,0 ;28a + .word 0,0 ;28b + .word 0,0 ;28c + .word 0,0 ;28d + .word 0,0 ;28e + .word 0,0 ;28f + + .word sp_robo|71,1600 ;290 = ROBOTRON shot + .word sp_robo|212,1604 ;291 = ROBOTRON human dies + .word sp_robo|58,1608 ;292 = ROBOTRON spawn enforcer + .word sp_robo|6,1612 ;293 = ROBOTRON robot footstep + .word sp_robo|96,1616 ;294 = ROBOTRON effect (?) + .word sp_robo|164,1620 ;295 = ROBOTRON player dies + .word sp_robo|39,1624 ;296 = ROBOTRON rescue + .word sp_robo|23,1628 ;297 = ROBOTRON grunt dies + .word sp_robo|178,1632 ;298 = ROBOTRON wave start/end + .word sp_robo|17,1636 ;299 = ROBOTRON hit hulk + + .word 0,0 ;29a + .word 0,0 ;29b + .word 0,0 ;29c + .word 0,0 ;29d + .word 0,0 ;29e + .word 0,0 ;29f + .word 0,0 ;2a0 + .word 0,0 ;2a1 + .word 0,0 ;2a2 + .word 0,0 ;2a3 + .word 0,0 ;2a4 + .word 0,0 ;2a5 + .word 0,0 ;2a6 + .word 0,0 ;2a7 + .word 0,0 ;2a8 + .word 0,0 ;2a9 + .word 0,0 ;2aa + .word 0,0 ;2ab + .word 0,0 ;2ac + .word 0,0 ;2ad + .word 0,0 ;2ae + .word 0,0 ;2af +more_jerry + .word 0,0 ;2b0 + .word sp_anncer|0,0 ;2b1 = + .word sp_anncer|0,0 ;2b2 = + .word sp_anncer|0,0 ;2b3 = + .word sp_anncer|86,6200 ;2b4 = It duddin look good fer Doink + .word sp_anncer|0,0 ;2b5 = + .word sp_anncer|101,6208 ;2b6 = It duddin look good fer Shawn Michaels + .word sp_anncer|105,6212 ;2b7 = It duddin look good fer Razor Ramone + .word sp_anncer|107,6216 ;2b8 = It duddin look good fer the Undertaker + .word sp_anncer|119,6220 ;2b9 = It duddin look good fer BamBam Bigelow + .word sp_anncer|102,6224 ;2ba = It duddin look good fer Hox Lugie + .word sp_anncer|98,6236 ;2bb = It duddin look good fer the hit man + .word sp_anncer|0,0 ;2bc = + .word sp_anncer|0,0 ;2bd = + .word sp_anncer|106,6240 ;2be = It duddin look good fer Yucko Zima + .word sp_anncer|0,0 ;2bf = + .word sp_anncer|0,0 ;2c0 = + .word sp_anncer|0,0 ;2c1 = + .word sp_anncer|0,0 ;2c2 = + .word sp_anncer|0,0 ;2c3 = + .word sp_anncer|0,0 ;2c4 = + .word sp_anncer|0,0 ;2c5 = + .word sp_anncer|0,0 ;2c6 = + .word sp_anncer|44,6276 ;2c7 = (non-partisan) Giddup Doink + .word sp_anncer|46,6280 ;2c8 = (non-partisan) Giddup Shawn + .word sp_anncer|47,6284 ;2c9 = (non-partisan) Giddup Ramone + .word sp_anncer|58,6288 ;2ca = (non-partisan) Giddup Undertaker + .word sp_anncer|53,6292 ;2cb = (non-partisan) Giddup BamBam + .word sp_anncer|43,6296 ;2cc = (non-partisan) Giddup Luger + .word sp_anncer|51,6300 ;2cd = (non-partisan) Giddup Hitman + .word sp_anncer|61,6304 ;2ce = (non-partisan) Giddup Yokozuna + .word sp_anncer|104,6308 ;2cf = Doink got exactly what he deserved + .word sp_anncer|0,0 ;2d0 = + .word sp_anncer|130,6316 ;2d1 = Shawn Michaels got exactly what he deserved + .word sp_anncer|129,6320 ;2d2 = Razor Ramone got exactly what he deserved + .word sp_anncer|134,6324 ;2d3 = the Undertaker got exactly what he deserved + .word sp_anncer|131,6328 ;2d4 = BamBam Bigelow got exactly what he deserved + .word sp_anncer|128,6332 ;2d5 = Hox Lugie got exactly what he deserved + .word sp_anncer|117,6336 ;2d6 = Wet Fart got exactly what he deserved + .word sp_anncer|0,0 ;2d7 = + .word sp_anncer|129,6344 ;2d8 = Yucko Zima got exactly what he deserved + .word sp_anncer|140,6348 ;2d9 = Anything can happen here at the WWF + .word sp_anncer|111,6352 ;2da = Anything can happen here at Wrestlemania + .word sp_anncer|103,6356 ;2db = Quiet McMahon I'm trying to watch this + .word sp_anncer|70,6360 ;2dc = heaves him over the ropes + .word sp_anncer|73,6376 ;2dd = He's goin' fer the top rope + .word sp_anncer|54,6412 ;2de = who does he think he is? + .word sp_anncer|0,0 ;2df = + .word 0,0 ;2e0 + .word sp_anncer|65,6424 ;2e1 = Listen to the crowd + .word sp_anncer|90,6428 ;2e2 = They're cheering for me McMahon + .word sp_anncer|68,6432 ;2e3 = What morons + .word sp_anncer|52,6440 ;2e4 = Jew hear that? + .word sp_anncer|54,6452 ;2e5 = Wuwuzzee thinkin'? + .word sp_anncer|54,6456 ;2e6 = Wussy up to? + .word sp_anncer|71,6460 ;2e7 = Nadda good idea + .word sp_anncer|48,6472 ;2e8 = Wudda jerk + .word sp_anncer|53,6488 ;2e9 = Wudda comeback + .word sp_anncer|106,6492 ;2ea = I wooden wanna beonna recieving end uh that + .word sp_anncer|99,6496 ;2eb = I think I saw some teeth pop out + .word sp_anncer|74,6512 ;2ec = Yes the chair + .word sp_anncer|81,6516 ;2ed = The chair the chair + .word sp_anncer|55,6520 ;2ee = Hiddim hiddim + .word sp_anncer|54,6528 ;2ef = Mr Fuji ? + .word 0,0 ;2f0 = + .word sp_anncer|51,6540 ;2f1 = Aawuz cheap + .word sp_anncer|85,6544 ;2f2 = Hey I didn't see anything + .word sp_anncer|86,6548 ;2f3 = What kyna cheap move wuzzat? + .word sp_anncer|55,6552 ;2f4 = Wudda ripoff + .word sp_anncer|80,6560 ;2f5 = Aw wudda scam + .word sp_anncer|52,6568 ;2f6 = Don't bother + .word sp_anncer|62,6576 ;2f7 = Sure it was + .word sp_anncer|98,6592 ;2f8 = If I didn't see it I wouldn't believe it + .word sp_anncer|67,6608 ;2f9 = No one kin touch im + .word sp_anncer|40,6612 ;2fa = He did it + .word sp_anncer|81,6616 ;2fb = I can't believe he pulled that off + .word sp_anncer|73,6620 ;2fc = Adwuddneevena challenge + .word sp_anncer|79,6624 ;2fd = And stay down + .word sp_anncer|120,6628 ;2fe = He got exactly what he deserved + .word sp_anncer|223,6632 ;2ff = Congratulations to the new WWF champion + .word sp_anncer|163,6636 ;300 = Sign yer name to the Midway Hall of Fame + .word sp_anncer|88,6640 ;301 = Back to the sandbox + .word sp_anncer|66,6644 ;302 = Aw c'mon #2 +wrestle_end + +triple_end ;end of triple sound tables + + +****************************************************************************** +* +* sound table format: each row contains the triple_sound_table indices of +* the four sound calls associated with a given move. the first two are the +* noises a wrestler makes when he throws the move, and the second two are +* the noises he makes when he's hit with the move. if the value is DEFLT, +* the value will be read from DEFAULT_SOUND_TABLE instead of the wrestler's +* custom table. +* + +DEFLT .equ 8000h + +DEFAULT_SOUND_TABLE + ; whsh grunt smak ouch + .word 0012h,0032h,1001h,002Dh ;punch + .word 0017h,0000h,001Bh,002Eh ;headbutt + .word 0011h,0032h,0018h,007Ch ;kick + .word 0011h,0079h,001Bh,0071h ;flykick + + .word 0000h,0028h,0000h,001Ah ;grabthrow + .word 0016h,002Ch,0001h,0072h ;uppercut + .word 0011h,0032h,0005h,0073h ;elbow drop + .word 0000h,0028h,0000h,0000h ;grabhold + + .word 0000h,0028h,0000h,001Ah ;grabfling + + .word 0000h,0079h,0007h,0026h ;push + .word 0000h,0028h,0000h,001ah ;hiptoss + .word 0017h,007Ah,0074h,0000h ;big boot + .word 0012h,0032h,001Bh,002Dh ;super punch + + .word 0000h,0079h ;turndive + .word 1002h,1003h ;rug slam + + .word 00A9h,0072h ;rzr slash + .word 0059h ;yellthrow + +MASTER_SOUND_TABLE +;Bret Hart 00 + ; whsh grunt smak ouch + .word DEFLT,1022H,DEFLT,1030H ;punch + .word DEFLT,1023H,DEFLT,1031H ;headbutt + .word DEFLT,1024H,DEFLT,1032H ;kick + .word DEFLT,1025H,DEFLT,1033H ;flykick + + .word DEFLT,1027H,DEFLT,1035H ;grabthrow + .word DEFLT,1026H,DEFLT,1034H ;uppercut + .word DEFLT,1029H,DEFLT,1037H ;elbow drop + .word DEFLT,1028H,DEFLT,1036H ;grabhold + + .word DEFLT,1027H,DEFLT,1035H ;grabfling + .word DEFLT,102BH,DEFLT,1039H ;push + .word DEFLT,102CH,DEFLT,103AH ;hiptoss + .word DEFLT,102AH,DEFLT,1038H ;big boot + + .word DEFLT,102EH,DEFLT,103CH ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,103DH ;rug slam + .word DEFLT,DEFLT ;rzr slash + .word DEFLT ;yellthrow + +;Razor Ramon 01 + ; whsh grunt smak ouch + .word DEFLT,0031h,DEFLT,103fh ;punch + .word DEFLT,0274H,DEFLT,0269H ;headbutt + .word DEFLT,1040h,DEFLT,103fh ;kick + .word DEFLT,1041h,DEFLT,103eh ;flykick + + .word DEFLT,1041h,DEFLT,026EH ;grabthrow + .word DEFLT,1040h,DEFLT,103eh ;uppercut + .word DEFLT,0278H,DEFLT,103eh ;elbow drop + .word DEFLT,0279H,DEFLT,026eH ;grabhold + + .word DEFLT,1041h,DEFLT,026dH ;grabfling + .word DEFLT,1040h,DEFLT,026fh ;push + .word DEFLT,1041h,DEFLT,0270h ;hiptoss + .word DEFLT,0271H,DEFLT,0077h ;big boot + + .word DEFLT,1041h,DEFLT,103eh ;super punch + + .word DEFLT,1041h ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT,026fH ;rzr slash + .word DEFLT ;yellthrow + +;Undertaker 02 + .word DEFLT,1022H,DEFLT,1030H ;punch + .word DEFLT,1023H,DEFLT,1031H ;headbutt + .word DEFLT,1024H,DEFLT,1032H ;kick + .word DEFLT,1025H,DEFLT,1033H ;flykick + + .word DEFLT,1027H,DEFLT,1035H ;grabthrow + .word DEFLT,1026H,DEFLT,1034H ;uppercut + .word DEFLT,1029H,DEFLT,1037H ;elbow drop + .word DEFLT,1028H,DEFLT,1036H ;grabhold + + .word DEFLT,1027H,DEFLT,1035H ;grabfling + .word DEFLT,102BH,DEFLT,1039H ;push + .word DEFLT,102CH,DEFLT,103AH ;hiptoss + .word DEFLT,102AH,DEFLT,1038H ;big boot + + .word DEFLT,102EH,DEFLT,103CH ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,103DH ;rug slam + .word DEFLT,DEFLT ;rzr slash + .word DEFLT ;yellthrow + +;Yokozuna 03 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT,DEFLT ;rzr slash + .word DEFLT ;yellthrow + +;Shawn Michaels 04 + ; whsh grunt smak ouch + .word DEFLT,1022H,DEFLT,1030H ;punch + .word DEFLT,1023H,DEFLT,1031H ;headbutt + .word DEFLT,1024H,DEFLT,1032H ;kick + .word DEFLT,1025H,DEFLT,1033H ;flykick + + .word DEFLT,1027H,DEFLT,1035H ;grabthrow + .word DEFLT,1026H,DEFLT,1034H ;uppercut + .word DEFLT,1029H,DEFLT,1037H ;elbow drop + .word DEFLT,1028H,DEFLT,1036H ;grabhold + + .word DEFLT,1027H,DEFLT,1035H ;grabfling + .word DEFLT,102BH,DEFLT,1039H ;push + .word DEFLT,102CH,DEFLT,103AH ;hiptoss + .word DEFLT,102AH,DEFLT,1038H ;big boot + + .word DEFLT,102EH,DEFLT,103CH ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,103DH ;rug slam + .word DEFLT,DEFLT ;rzr slash + .word DEFLT ;yellthrow + + +;Bam Bam Bigelow 05 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word 1042h,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT,DEFLT ;rzr slash + .word DEFLT ;yellthrow + +;Doink the Clown 06 + ; whsh grunt smak ouch + .word DEFLT,1006h,DEFLT,1013H ;punch + .word DEFLT,1007h,1000h,1014H ;headbutt + .word DEFLT,1008h,DEFLT,1015H ;kick + .word DEFLT,1009h,DEFLT,1016H ;flykick + + .word DEFLT,1020h,DEFLT,1021H ;grabthrow + .word DEFLT,1011h,DEFLT,101eH ;uppercut + .word DEFLT,100ch,DEFLT,1019H ;elbow drop + .word DEFLT,100bh,DEFLT,1018H ;grabhold + + .word DEFLT,1020h,DEFLT,1021H ;grabfling + .word DEFLT,100eh,DEFLT,101bH ;push + .word DEFLT,100fh,DEFLT,101cH ;hiptoss + .word DEFLT,0202h,DEFLT,020ch ;big boot + + .word DEFLT,1011h,DEFLT,101eH ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,101FH ;rug slam + .word DEFLT,DEFLT ;rzr slash + .word DEFLT ;yellthrow + +;Adam Bomb 07 + .word DEFLT,DEFLT,DEFLT,DEFLT ;punch + .word DEFLT,DEFLT,DEFLT,DEFLT ;headbutt + .word DEFLT,DEFLT,DEFLT,DEFLT ;kick + .word DEFLT,DEFLT,DEFLT,DEFLT ;flykick + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabthrow + .word DEFLT,DEFLT,DEFLT,DEFLT ;uppercut + .word DEFLT,DEFLT,DEFLT,DEFLT ;elbow drop + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabhold + + .word DEFLT,DEFLT,DEFLT,DEFLT ;grabfling + .word DEFLT,DEFLT,DEFLT,DEFLT ;push + .word DEFLT,DEFLT,DEFLT,DEFLT ;hiptoss + .word DEFLT,DEFLT,DEFLT,DEFLT ;big boot + + .word DEFLT,DEFLT,DEFLT,DEFLT ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,DEFLT ;rug slam + .word DEFLT,DEFLT ;rzr slash + .word DEFLT ;yellthrow + +;Lex Luger 08 + .word DEFLT,1022H,DEFLT,1030H ;punch + .word DEFLT,1023H,DEFLT,1031H ;headbutt + .word DEFLT,1024H,DEFLT,1032H ;kick + .word DEFLT,1025H,DEFLT,1033H ;flykick + + .word DEFLT,1027H,DEFLT,1035H ;grabthrow + .word DEFLT,1026H,DEFLT,1034H ;uppercut + .word DEFLT,1029H,DEFLT,1037H ;elbow drop + .word DEFLT,1028H,DEFLT,1036H ;grabhold + + .word DEFLT,1027H,DEFLT,1035H ;grabfling + .word DEFLT,102BH,DEFLT,1039H ;push + .word DEFLT,102CH,DEFLT,103AH ;hiptoss + .word DEFLT,102AH,DEFLT,1038H ;big boot + + .word DEFLT,102EH,DEFLT,103CH ;super punch + + .word DEFLT,DEFLT ;turndive + .word DEFLT,103DH ;rug slam + .word DEFLT,DEFLT ;rzr slash + .word DEFLT ;yellthrow +;MISSING LINES + +#***************************************************************************** +* +* Play a sound from the tables. +* >a0 = sound number (or'ed with 1000h for a random table) +* + + SUBR table_sound + + btst 12,a0 + jreq triple_sound + + ;it's a random sound + PUSH a2 + xori 1000h,a0 + X32 a0 + addi #random_sound_tables,a0 + move *a0,a2,L + move *a2+,a0,W + calla RNDRNG0 + X16 a0 + add a0,a2 + move *a2,a0,W + PULL a2 + jruc triple_sound + +#random_sound_tables + .long #doink_hdbutt_l ; 0 + .long #generic_punch_l ; 1 + .long #generic_rugslam_l ; 2 + .long #generic_rslam_impact_l ; 3 + .long #doink_rugslam_l ; 4 + .long #doink_rugslam_impact_l ; 5 + + .long #doink_face_a ;6 + .long #doink_head_a ;7 + .long #doink_kick_a ;8 + .long #doink_drop_a ;9 + .long #doink_knee_a ;a + .long #doink_reach_a ;b + .long #doink_elbow_a ;c + .long #doink_stomp_a ;d + .long #doink_push_a ;e + .long #doink_hip_a ;f + .long #doink_jump_a ;10 + .long #doink_super_a ;11 + .long #doink_slam_a ;12 + + .long #doink_face_v ;13 + .long #doink_head_v ;14 + .long #doink_kick_v ;15 + .long #doink_drop_v ;16 + .long #doink_knee_v ;17 + .long #doink_reach_v ;18 + .long #doink_elbow_v ;19 + .long #doink_stomp_v ;1a + .long #doink_push_v ;1b + .long #doink_hip_v ;1c + .long #doink_jump_v ;1d + .long #doink_super_v ;1e + .long #doink_slam_v ;1f + + .long #doink_lift_a ;20 + .long #doink_lift_v ;21 + + .long #hart_face_a ;22 + .long #hart_head_a ;23 + .long #hart_kick_a ;24 + .long #hart_drop_a ;25 + .long #hart_knee_a ;26 + .long #hart_reach_a ;27 + .long #hart_lift_a ;28 + .long #hart_elbow_a ;29 + .long #hart_stomp_a ;2a + .long #hart_push_a ;2b + .long #hart_hip_a ;2c + .long #hart_jump_a ;2d + .long #hart_super_a ;2e + .long #hart_slam_a ;2f + + .long #hart_face_v ;30 + .long #hart_head_v ;31 + .long #hart_kick_v ;32 + .long #hart_drop_v ;33 + .long #hart_knee_v ;34 + .long #hart_reach_v ;35 + .long #hart_lift_v ;36 + .long #hart_elbow_v ;37 + .long #hart_stomp_v ;38 + .long #hart_push_v ;39 + .long #hart_hip_v ;3a + .long #hart_jump_v ;3b + .long #hart_super_v ;3c + .long #hart_slam_v ;3d + + .long #razor_medium_pain ;3e + .long #razor_face_hit ;3f + .long #razor_medium_effort ;40 + .long #razor_double_effort ;41 + + .long #bam_mult_fire_hits ;42 + +#doink_hdbutt_l + .word 3,1Bh,1Bh,1Bh,0B2h + +#generic_punch_l + .word 3,1h,2h,19h,1Bh + +#generic_rugslam_l + .word 5,072h,071h,07Ch,074h,0AEh,0AFh + +#generic_rslam_impact_l + .word 1,0C1h,0C3h + +#doink_rugslam_l + .word 5,072h,071h,07Ch,074h,0AEh,0AFh + +#doink_rugslam_impact_l + .word 5,0C1h,0C1h,0C3h,0C3h,0ACh,0ADh + + +#doink_face_a + .word 1,235h,21bh +#doink_head_a + .word 1,234h,21ch +#doink_kick_a +#doink_knee_a +#doink_slam_a + .word 2,224h,225h,226h +#doink_drop_a +#doink_elbow_a + .word 2,21dh,21eh,21fh +#doink_reach_a + .word 1,220h,221h +#doink_lift_a + .word 1,222h,223h +#doink_stomp_a + .word 3,21bh,224h,225h,226h +#doink_push_a + .word 1,227h,228h +#doink_hip_a + .word 5,21dh,21eh,21fh,207h,208h,209H +#doink_jump_a + .word 1,229h,22ah +#doink_super_a + .word 1,206h,21bh + + +#doink_face_v + .word 2,200h,201h,202h +#doink_head_v + .word 1,200H,22BH +#doink_kick_v + .word 1,205H,22CH +#doink_drop_v + .word 5,22BH,200H,202H,202H,202H,202H +#doink_knee_v +#doink_elbow_v + .word 2,22CH,203H,22DH +#doink_reach_v +#doink_lift_v + .word 1,22EH,22FH +#doink_stomp_v + .word 2,22CH,22DH,204H,20BH +#doink_push_v + .word 1,230H,231H +#doink_hip_v + .word 1,232H,233H +#doink_jump_v + .word 2,22BH,204H,22CH +#doink_super_v + .word 1,20AH,20CH,20DH +#doink_slam_v + .word 2,203H,204H,22CH + +#hart_face_a + .word 2,23Eh,240H,242H +#hart_head_a + .word 2,23DH,240H,24AH +#hart_kick_a + .word 1,242H,24DH +#hart_drop_a + .word 2,247H,248h,249h +#hart_knee_a + .word 1,241H,24DH +#hart_reach_a + .word 2,23FH,24BH,24CH +#hart_lift_a + .word 1,243H,244H +#hart_elbow_a + .word 2,247H,248H,249H +#hart_stomp_a + .word 1,23DH,240H +#hart_push_a + .word 1,24FH,24AH +#hart_hip_a + .word 4,242H,244H,247H,248H,249H +#hart_jump_a + .word 1,245H,24EH +#hart_super_a + .word 1,242H,24DH +#hart_slam_a + .word 2,240H,24FH,240H + +#hart_face_v + .word 2,251H,252H,253H +#hart_head_v + .word 2,25CH,253H,262H +#hart_kick_v +#hart_knee_v + .word 2,250H,254H,255H +#hart_drop_v + .word 3,251H,252H,253H,25CH +#hart_reach_v + .word 1,258H,259H +#hart_lift_v + .word 1,25AH,25BH +#hart_elbow_v +#hart_stomp_v + .word 1,256H,257H +#hart_push_v + .word 1,25DH,25EH +#hart_hip_v + .word 1,25FH,260H +#hart_jump_v + .word 2,264H,256H,261H +#hart_super_v + .word 2,262H,25CH,261H +#hart_slam_v + .word 2,261H,256H,257H + +#razor_medium_pain + .word 3,26ah,26bh,26ch,271h +#razor_face_hit + .word 3,267h,268h,269h,26fh +#razor_medium_effort + .word 2,272h,273h,274h +#razor_double_effort + .word 3,275h,276h,277h,279h +#bam_mult_fire_hits + .word 1,99h,9ah + + +****************************************************************************** +* * +* reset sound board * +* * +* this is a full reset, checksum dings and all. this is the same routine +* that was in the old (gspsnd) processor. (ed boon) +* +* NOTE: If any data are sent to the sound board within ~270msec of the +* reset signal, diagnostics will be skipped and there won't be any +* loud and annoying bongs. +* + + SUBR snd_reset + + ;initialize snd_debug ptr + .if SND_DEBUG + movi SDRAM,a14 + move a14,@sdram_ptr,L + .endif + + PUSH a0,a1 ;Need an extra reggie + + movi SNDRSTBIT|32,a0 + move @_coin_counter_addr,a1,L + move a0,*a1 + + movi 6000,a0 ;wait for it to catch + dsjs a0,$ + + movi 32,a0 + move @_coin_counter_addr,a1,L + move a0,*a1 + + PULL a0,a1 ; Restore the reggies + rets + + +****************************************************************************** +* +* quiet sound board reset +* +* Just like snd_reset, but without the diagnostic tests and consequent chimes. +* It also sets the volume to the CMOS level. +* +* NOTE: Don't CALLx this function, JSRP it. It SLEEPs. +* +* Trashes everything except the reggies which get saved by default when +* you sleep... + + SUBR QSNDRST + + ;initialize snd_debug ptr + .if SND_DEBUG + movi SDRAM,a14 + move a14,@sdram_ptr,L + .endif + + ;doing an EXISTP on QSNDRST_PID isn't enough because this can + ; be JSRP'd from other places too. + movk 1,a14 + move a14,@doing_dcs_reset + + movi SNDRSTBIT|32,a0 + move @_coin_counter_addr,a1,L ; IS A1 SAFE? + move a0,*a1,W + + + movi 6000,a0 ;wait for it to catch + dsjs a0,$ + + movi 32,a0 + move @_coin_counter_addr,a1,L ; IS A1 SAFE? + move a0,*a1,W + + SLEEPK 2 + move @_sound_addr,a0,L + movb a14,*a0 + SLEEPK 4 + movi ADJVOLUME,a0 + calla GET_ADJ + BADCHK a0,0,255,28 ;reg, lo, hi, val if bad + callr set_volume ;set master volume to CMOS level + + clr a14 + move a14,@doing_dcs_reset + + RETP + +#***************************************************************************** +* Process that quietly resets the sound board, then dies. Useful when you +* don't feel like waiting for the reset to finish before you move on. + + SUBR qsndrst_proc + + JSRP QSNDRST + + DIE + +****************************************************************************** + + SUBR snd_play1 + rets + + +#***************************************************************************** +* Wrestlemania tune + + SUBR wmania_tune + + movi 11,a3 + callr SNDSND +#loop + SLEEP TSEC*8 + movi 14,a3 + callr SNDSND + SLEEP TSEC*8 + movi 13,a3 + callr SNDSND + jruc #loop + + +#***************************************************************************** +* Rings the match start bell a few times. (process) +* +* Note: This uses the channel_sound routine to conserve tracks. If, for +* whatever reason, these rings are spaced out by more than 89 ticks, +* (the duration of the bell sound), then this should NOT be done as +* it could result in other sound calls being truncated prematurely. +* + +bell_snd equ 0B1h + + STRUCTPD + WORD #BELL_CHANNEL ;UHW snd channel of bell + + SUBR ring_bell + + movi bell_snd,a0 + callr triple_sound + sra 16,a14 + move a14,*a13(#BELL_CHANNEL),W + + SLEEP TSEC/3 + + movi bell_snd,a0 + move *a13(#BELL_CHANNEL),a1,W + callr channel_sound + + SLEEP TSEC/3 + + movi bell_snd,a0 + move *a13(#BELL_CHANNEL),a1,W + callr channel_sound + + DIE + + +#***************************************************************************** +* Runs the speech call for a given wrestler, after waiting for channel 1 to +* clear. +* +*>a0=wrestler # + + SUBR select_speech + + X32 a0 + addi #wrestler_sounds,a0 + move *a0+,a8,W + jrz #done + move *a0,a9,W + + CREATE DELAYSND_PID,delay_code_a3 + +#done + rets + + .bss delay_code_a3_exists,16 + + SUBRP delay_code_a3 + +#loop1 + ;if this is the only delay_code_a3 process, do the sound, wait out + ; the duration, then die. +; movi DELAYSND_PID,a0 +; movi 0FFFFh,a1 +; calla EXISTP +; jrz #go +; SLEEPK 1 +; jruc #loop1 + + move @delay_code_a3_exists,a14 + jrz #no_exist + SLEEPK 1 + jruc #loop1 +#no_exist + movk 1,a14 + move a14,@delay_code_a3_exists + +#go + move a8,a3 + callr send_code_a3 + +#loop2 + SLEEPK 1 + dsj a9,#loop2 + + clr a14 + move a14,@delay_code_a3_exists + + DIE + + +#wrestler_sounds + .word 0000h,0 ;HART + .word 0300h,94 ;RAZOR + .word 0000h,0 ;TAKER + .word 0000h,0 ;YOKO + .word 0000h,0 ;SHAWN + .word 0000h,0 ;BAM BAM + .word 0200h,88 ;DOINK + .word 0000h,0 ;ADAM BOMB + .word 0000h,0 ;PERFECT + .word 0000h,0 ;LUGER +#wrestler_soundsX + + +#***************************************************************************** +* channel_sound +* +* like triple_sound, only you specify the channel it goes on, priorities +* notwithstanding. This isn't quite the same thing as SNDSND, tho, since +* chanXpri, chanXdur, and chanXsnd are updated. +* +* >a0 = sound call (index), >a1=channel (1-4) +* + + SUBR channel_sound + + PUSH a0,a1,a2,a3,a4 + + X32 a0 + addi triple_sndtab,a0 + move *a0,a2,W + andi 0ffh,a2 ;a2 = duration + move *a0+,a3,W + sra 8,a3 ;a3 = priority + move *a0,a4,W ;a4 = call (channel 1) + + dec a1 + jrz #chan1 + inc a4 + dec a1 + jrz #chan2 + inc a4 + dec a1 + jrz #chan3 + inc a4 + dec a1 + jrz #chan4 + + ;error! + .if DEBUG + LOCKUP + .endif + jruc #done +#chan1 + move a2,@chan1dur,W + move a3,@chan1pri,W + move a4,@chan1snd,W + jruc #send +#chan2 + move a2,@chan2dur,W + move a3,@chan2pri,W + move a4,@chan2snd,W + jruc #send +#chan3 + move a2,@chan3dur,W + move a3,@chan3pri,W + move a4,@chan3snd,W + jruc #send +#chan4 + move a2,@chan4dur,W + move a3,@chan4pri,W + move a4,@chan4snd,W +; jruc #send + +#send + move a4,a3 + callr send_code_a3 + +#done + PULL a0,a1,a2,a3,a4 + rets + +#***************************************************************************** +* announcer_sound +* +* Lots like triple_sound, except that it identifies the announcer who's +* talking, and if he's already saying something, the new call cuts off +* the old one. +* +* >a0 = sound call (index into triple_sound table) +* a10 = *wrestlerproc >a0 = sound call index (might be OR'ed with 8000h) +* + + SUBR wrtable_sound + + push a1,a4 + + ;undo the |W_LOOKUP if present + sll 32-15,a0 + srl 32-15,a0 + + move *a10(WRESTLERNUM),a1,W + movi MASTER_SOUND_TABLE-DEFAULT_SOUND_TABLE,a2 + mpyu a2,a1 + X16 a0 + add a0,a1 + addi MASTER_SOUND_TABLE,a1 + move *a1,a1,W + jrnn #okay + + ;oops. use the default table instead + addi DEFAULT_SOUND_TABLE,a0 + move *a0,a1,W +#okay + move a1,a0 + jrz #done + calla triple_sound + +#done + pull a1,a4 + rets + +#***************************************************************************** +* +* triple_sound - Make a sound call from the triple_sndtab sound table +* +* input: a0 = sound call offset into table +* output: a14 = [channel,duration] of call. (0 if not played) +* + + SUBR triple_sound + + cmpi 211h,a3 + jrne #okx + LOCKUP +#okx + move @SOUNDSUP,b3,W ; are we allowed ?? + jrne send_rets ; no + + clr a14 + PUSH a0,a1,a2,a3,a4,a5,a6 + + .if SND_DEBUG + .ref PCNT + move @sdram_ptr,a1,L + move a0,*a1(INDEX),W + move @PCNT,a14,L + move a14,*a1(TSTMP),L + move a0,a2 + X32 a2 + addi triple_sndtab,a2 + move a2,*a1(ADRS),L + move *a2,a14,W + srl 8,a14 + move a14,*a1(PRI) + move *a2+,a14,W + sll 24,a14 + srl 24,a14 + move a14,*a1(DUR) + move *a2,a14,W + move a14,*a1(CHAN0) + move *SP(0E0h),a14,L + subi 30h,a14 + move a14,*a1(CALLER),L + movi -1,a14 + move a14,*a1(CHANL) + .endif + + TEST a0 + jrn #a0lo + + X32 a0 ; 32 bits per table entry + addi triple_sndtab,a0 ; a0 --> our entry + cmpi triple_end,a0 ; past the end of the table ? + jrhs #a0hi ; yes, sans + +tsnd0 move *a0+,a1,W ; a1 = [priority , duration] + jreq tsnd9 ; zero entry = skip + + move a1,a4 + srl 8,a1 ; a1 = priority only + sll 32-8,a4 + srl 32-8,a4 ; a4 = duration only + move *a0+,a3,W ; a3 = channel 1 sound call + jrz #zcall ; quit if zero +* +* a1 = priority +* a3 = channel 1 sound call +* a4 = duration +* + + .if SND_DEBUG + ;tentatively set SDA_EMPTY. we might change that later. + move @sdram_ptr,a0,L + movi SDA_EMPTY,a14 + move a14,*a0(ACTION) + .endif + + move @chan1pri,a0,W + jreq tsnd1 ; channel 1 + move @chan2pri,a0,W + jreq tsnd2 ; channel 2 + move @chan3pri,a0,W + jreq tsnd3 ; channel 3 + move @chan4pri,a0,W + jreq tsnd4 ; channel 4 +* +* all channels used up ---> see if I am more important +* + + +;New Method = find lowest-priority call and bump it if I outrank it. + + move @chan1pri,a5,W + movi tsnd1,a6 + + move @chan2pri,a14 + cmp a5,a14 + jrge #check_3 + move a14,a5 + movi tsnd2,a6 +#check_3 + move @chan3pri,a14 + cmp a5,a14 + jrge #check_4 + move a14,a5 + movi tsnd3,a6 +#check_4 + move @chan4pri,a14 + cmp a5,a14 + jrge #lowest_found + move a14,a5 + movi tsnd4,a6 + +#lowest_found + cmp a5,a1 ; who is more important ? + jrlt #no_preempt ; him. forget it. + + .if SND_DEBUG + ;set ACTION to SDA_PREEMPT + move @sdram_ptr,a0,L + movi SDA_PREEMPT,a14 + move a14,*a0(ACTION) + .endif + + jump a6 + +#no_preempt + .if SND_DEBUG + ;set ACTION to SDA_LOPRI + move @sdram_ptr,a0,L + movi SDA_LOPRI,a14 + move a14,*a0(ACTION) + .endif + + PULL a0,a1,a2,a3,a4,a5,a6 +send_rets + .if SND_DEBUG + ;increment sdram_ptr + callr #inc_sdram + .endif + clr a14 + clrc + rets + +tsnd1 move a1,@chan1pri,W ; new priority for channel 1 + move a4,@chan1dur,W ; new duration + movi [1,0],a2 + move a3,@chan1snd,W + jruc tsnd7 + +tsnd2 move a1,@chan2pri,W ; new priority for channel 2 + move a4,@chan2dur,W ; new duration + inc a3 ; switch to channel 2 sound call + move a3,@chan2snd,W + movi [2,0],a2 + jruc tsnd7 + +tsnd3 move a1,@chan3pri,W ; new priority for channel 3 + move a4,@chan3dur,W ; new duration + addk 2,a3 ; switch to channel 3 sound call + move a3,@chan3snd,W + movi [3,0],a2 + jruc tsnd7 + +tsnd4 move a1,@chan4pri,W ; new priority for channel 4 + move a4,@chan4dur,W ; new duration + addk 3,a3 ; switch to channel 4 sound call + move a3,@chan4snd,W + movi [4,0],a2 + +tsnd7 + .if SND_DEBUG + PUSH a2 + move @sdram_ptr,a14,L + srl 16,a2 + move a2,*a14(CHANL) + PULL a2 + .endif + + callr SNDSND + movx a4,a2 + move a2,a14 + +tsnd9 + .if SND_DEBUG + ;increment sdram_ptr + callr #inc_sdram + .endif + + PULL a0,a1,a2,a3,a4,a5,a6 + setc ; carry set = success + rets + +#zcall + .if SND_DEBUG + move @sdram_ptr,a0,L + movi SDA_ZCALL,a1 + move a1,*a0(ACTION) + .endif + jruc tsnd9 + +#a0hi +#a0lo + .if SND_DEBUG + move @sdram_ptr,a0,L + movi SDA_BADNDX,a1 + move a1,*a0(ACTION) + .endif + jruc tsnd9 + + .if SND_DEBUG + + SUBRP #inc_sdram + + PUSH a14 + + move @sdram_ptr,a14,L + addi SNDCALSIZ,a14 + cmpi sdram_ptr,a14 + jrlt #is_ok + movi SDRAM,a14 + +#is_ok move a14,@sdram_ptr,L + PULL a14 + rets + + .endif + + + + +#***************************************************************************** + + SUBR snd_update + + ;update announcer bits + move @vincedur,a0,W + jrz #no_vince + dec a0 + move a0,@vincedur,W +#no_vince + + move @randydur,a0,W + jrz #no_randy + dec a0 + move a0,@randydur,W +#no_randy + + move @howarddur,a0,W + jrz #no_howard + dec a0 + move a0,@howarddur,W +#no_howard + + move @chan1dur,a0,W ; channel #1 timing down ? + jrz sup2 ; nope.... +; inc a0 +; jrz sup2 +; dec a0 + dec a0 ; yes, count this tick !! + move a0,@chan1dur,W ; update duration ram + jrnz sup2 + + move @chan1scp,a1,L ; we doing a tune script ? + jrz sup1 ; no + movi chan1pri,a0 ; a0 = input = chan 1 ram pointer + callr do_tune_commands + jruc sup2 +sup1 move a1,@chan1pri,W ; no script --> priority = 0 + +sup2 move @chan2dur,a0,W ; channel #2 timing down ? + jrz sup3 ; nope.... +; inc a0 +; jrz sup3 +; dec a0 + dec a0 ; yes, count this tick !! + move a0,@chan2dur,W ; update duration ram + jrnz sup3 + move @chan2scp,a1,L ; a1 = input = chan 2 script point + jrz sup25 ; we are not processing a tune !! + movi chan2pri,a0 ; a0 = input = chan 2 ram pointer + callr do_tune_commands + jruc sup3 +sup25 move a1,@chan2pri,W ; no script --> priority = 0 + +sup3 move @chan3dur,a0,W ; channel #3 timing down ? + jrz sup4 ; nope.... +; inc a0 +; jrz sup4 +; dec a0 + dec a0 ; yes, count this tick !! + move a0,@chan3dur,W ; update duration ram + jrnz sup4 + move @chan3scp,a1,L ; a1 = input = chan 3 script point + jrz sup35 ; we are not processing a tune !! + movi chan3pri,a0 ; a0 = input = chan 3 ram pointer + callr do_tune_commands + jruc sup4 +sup35 move a1,@chan3pri,W ; no script --> priority = 0 + +sup4 move @chan4dur,a0,W ; channel #4 timing down ? + jrz supexit ; nope.... +; inc a0 +; jrz supexit +; dec a0 + dec a0 ; yes, count this tick !! + move a0,@chan4dur,W ; update duration ram + jrnz supexit + move @chan4scp,a1,L ; a1 = input = chan 4 script point + jrz sup45 ; we are not processing a tune !! + movi chan4pri,a0 ; a0 = input = chan 4 ram pointer + callr do_tune_commands + rets +sup45 move a1,@chan4pri,W ; no script --> priority = 0 + +supexit rets + +#***************************************************************************** +* do_tune_commands +* +* run and execute a list of tune commands until a "sleep" or "endtune" +* is reached +* +* input: +* a0 = top of current channel's ram storage +* a1 = current script position +* + + SUBRP do_tune_commands + move *a1+,a3,W ; get [parameter,command] + sll 16,a3 + srl 16,a3 ; mask out the "ffff" scum + + move a3,a2 ; save [command,parameter] + sll 24,a2 + srl 24,a2 + dec a2 ; a2 = command offset + X32 a2 + + addi tune_commands,a2 + move *a2,a2,L ; grab address + jump a2 ; execute + +tune_commands + .long tc_send ; 1 + .long tc_setpri ; 2 + .long tc_endtune ; 3 + .long tc_sleep ; 4 + .long tc_send2 ; 5 + + +tc_send + srl 8,a3 ; yes --> a3 = code to send + calla SNDSND ; send it and return + jruc do_tune_commands + +tc_setpri + srl 8,a3 ; yes --> a3 = priority to set to + move a3,*a1(sndpri),W ; set it + jruc do_tune_commands + +tc_endtune + clr a1 + move a1,*a0(sndpri),W + move a1,*a0(snddur),W + move a1,*a0(sndscp),L ; clear this channel + rets + +tc_sleep + srl 8,a3 ; yes --> a3 = sleep time + move a3,*a0(snddur),W ; store into duration area + move a1,*a0(sndscp),L ; save current script pointer + clr a1 ; signal --> we are done + rets + +tc_send2 + push a1 ; save script position +tcs1 subk 8,a1 + movb *a1,a2 + cmpi endtune,a2 ; search backwards for "endtune" + jrne tcs1 + addk 24,a1 ; a1 ---> channel + movb *a1,a2 ; a2 = current channel + pull a1 ; restore script position + + cmpi 1,a2 + jreq tcs2 + cmpi 2,a2 + jreq tcs2 ; channel 1 or 2 = player 1 + + movb *a1,a3 ; grab it player 2 sound call + sll 8,a3 ; adjust for next line of code + +tcs2 addk 8,a1 ; a1 ---> next command + srl 8,a3 ; yes --> a3 = code to send + callr SNDSND ; send it and return + jruc do_tune_commands + + +tc_setpri2 + srl 8,a3 ; yes --> a3 = priority to set to + move a3,*a1(sndpri),W ; set it + jruc do_tune_commands + +#***************************************************************************** +* nosounds +* +* cancels all sound calls. zeros all priorities and stops all +* currently running tunes. +* + + SUBR nosounds + + PUSH a0,a1 + clr a3 + callr SNDSND ; silence the music board + callr clear_sound_ram + PULL a0,a1 + + rets + +#***************************************************************************** + + SUBRP clear_sound_ram + + clr a0 + movi chan1ram,a1 +nos2 move a0,*a1+,W ; zero u out !!! + cmpi chan4scp+32,a1 ; everyone cleared ?? + jrne nos2 ; nope, do more + + rets + +#***************************************************************************** +* Sets the volume of the DCS. +* >a0=volume (0-255) +* + + SUBR set_volume + + PUSH a0,a1,a3 + + andi 0FFh,a0 ;forces value into range + movi 55AAh,a3 + callr send_code_a3 + + move a0,a3 ; volume + move a0,a1 + not a1 ; sans volume + sll 32-8,a1 + srl 32-8,a1 + sll 8,a3 + or a1,a3 ; a3 = [volume,sans volume] + callr send_code_a3 + + move a0,a1 + movi ADJVOLUME,a0 + calla PUT_ADJ + calla F_ADC_S + + PULL a0,a1,a3 + rets + +#***************************************************************************** +* Raw hardware sound call. +* >a3=sound code (0-1ff) + + SUBR SNDSND + SUBRP send_code_a3 + + PUSH a0,a1,a2,a3,a4 + move @SOUNDSUP,a0 ; are we allowed ?? + jrnz sendx ; no + + move a3,a3 ; is it a null call (negative)? + jrn sendx + + move a3,a0 + sll 32-16,a3 + srl 32-8,a3 ; a3 = high byte +* +* send high byte +* + move @_sound_addr,a4,L + move a3,*a4 + + movk 2,a2 + dsj a2,$ ; time for signal to get through + callr poll_sirq +* +* send low byte +* + sll 32-8,a0 + srl 32-8,a0 ; a3 = low byte + move @_sound_addr,a4,L + move a0,*a4 + + callr poll_sirq + +sendx PULL a0,a1,a2,a3,a4 + rets + +#***************************************************************************** +* Poll sound IRQ. When IRQ goes high, sound board is ready for next call. +* Do timeout so sound board can't screw things up. +* + + SUBRP poll_sirq + movi 390/3,a4 ; 180 micros max firq delay on snd board + +;#poll3 movb @SOUNDIRQ+B_SIRQ-7,a1 + +#poll3 + move @_soundirq_addr,a1,L + addi (B_SIRQ-7),a1 + movb *a1,a1 + + jrn #poll9 ; done? + dsj a4,#poll3 +#poll9 rets + +#***************************************************************************** + +VOLDN .equ 11 +VOLUP .equ 12 + + SUBR VOLBTN_PRESS + + ;in diagnostics? + move @GAMSTATE,a0,W + jrn #done + + ;already adjusting? + movi VOLADJ_PID,a0 + movi 0FFFFh,a1 + calla EXISTP + jrnz #done + + ;okay, adjust + movi VOLADJ_PID,a14 + move a14,*a13(PROCID),W + +; move @COINS,a0 + move @_coin_addr,a0,L + move *a0,a0 + btst VOLDN,a0 + jrz #voldn_loop + + +#volup_loop + ;increment the volume + movi ADJVOLUME,a0 + calla GET_ADJ + BADCHK a0,0,255,28 ;reg, lo, hi, val if bad + inc a0 + cmpi 255,a0 + jrle #up_okay + movi 255,a0 +#up_okay + calla set_volume + SLEEPK 1 + + ;if the vol+ button is no longer down, die +; move @COINS,a0 + move @_coin_addr,a0,L + move *a0,a0 + btst VOLUP,a0 + jrnz #done + jruc #volup_loop + +#voldn_loop + ;decrement the volume + movi ADJVOLUME,a0 + calla GET_ADJ + BADCHK a0,0,255,28 ;reg, lo, hi, val if bad + dec a0 + jrnn #dn_okay + clr a0 +#dn_okay + calla set_volume + SLEEPK 1 + + ;if the vol- button is no longer down, die +; move @COINS,a0 + move @_coin_addr,a0,L + move *a0,a0 + btst VOLDN,a0 + jrnz #done + jruc #voldn_loop + +#done + DIE + +;missing KILL_HOWARD + +;missing DO_HOWARD +VINCE_START_GAME + MOVI MATCHUP_TAB,A2 + MOVE @HCOUNT,A1 + SRL 1,A1 + JRNC START_CHOSEN + MOVI SQUARED_TAB,A2 +START_CHOSEN + movi index1,a3 + MOVI index2,a8 + MOVE @PSTATUS,A0 + CMPI 3,A0 + JREQ USE_BOTH_INDEXES + MOVI index1,a4 + SRL 1,A0 + JRC INDEX_USE_SET + MOVI index2,a4 +INDEX_USE_SET + CALLA MAKE_ANNOUNCEMENT + MOVE @process_ptrs+020h,a4,L + ADDI WRESTLERNUM,A4 + MOVI VERSUS_TAB,A2 + CALLA MAKE_ANNOUNCEMENT + MOVE @process_ptrs+040h,a4,L + JRZ NO_MORE_OPPS + MOVE @process_ptrs+060h,a2,L + JRNZ JUST_VERSUS + MOVI 133H,A0 + CALLA ADD_VOICE +JUST_VERSUS + ADDI WRESTLERNUM,A4 + MOVI WHICH_WRESTLER,A2 + CALLA MAKE_ANNOUNCEMENT + MOVE @process_ptrs+060h,a4,L + JRZ NO_MORE_OPPS + MOVI 133H,A0 + CALLA ADD_VOICE + ADDI WRESTLERNUM,A4 + MOVI WHICH_WRESTLER,A2 + CALLA MAKE_ANNOUNCEMENT +NO_MORE_OPPS + DIE + +USE_BOTH_INDEXES + MOVE A3,A4 + CALLA MAKE_ANNOUNCEMENT + MOVE A8,A4 + MOVI VERSUS_TAB,A2 + CALLA MAKE_ANNOUNCEMENT + DIE + +MAKE_ANNOUNCEMENT + MOVE *A4,A1 + SLL 4,A1 + ADD A2,A1 + MOVE *A1,A0 + CALLA ADD_VOICE + RETS + +;Bret +;Razor +;Taker +;Yoko +;Shawn +;Bam Bam +;Doink +;spare +;Lex +WHICH_WRESTLER + .WORD 131H + .WORD 12DH + .WORD 12FH + .WORD 132H + .WORD 12CH + .WORD 12EH + .WORD 12BH + .WORD 0 + .WORD 130H + +VERSUS_TAB + .WORD 127h + .WORD 123h + .WORD 125h + .WORD 128h + .WORD 122h + .WORD 124h + .WORD 121h + .WORD 0 + .WORD 126h + +SQUARED_TAB + .WORD 11Fh + .WORD 11Bh + .WORD 11Dh + .WORD 120h + .WORD 11Ah + .WORD 11Ch + .WORD 119h + .WORD 0 + .WORD 11Eh + +MATCHUP_TAB + .WORD 117h + .WORD 113h + .WORD 115h + .WORD 118h + .WORD 112h + .WORD 114h + .WORD 111h + .WORD 0 + .WORD 116h + +VINCE_START_ROUND2_3 + MOVI 8,A0 + CALLA RNDRNG0 + MOVE A0,A1 + SLL 5,A1 + ADDI RAND_START_2_3,A1 + MOVE *A1+,A0 + CALLA ADD_VOICE + MOVE *A1,A0 + JRZ NO_TWO_STEP + CALLA ADD_VOICE +NO_TWO_STEP + RETS + +RAND_START_2_3 + .WORD 134H,0 + .WORD 135H,0 + .WORD 136H,0 + .WORD 138H,137H + .WORD 138H,139H + .WORD 13AH,0 + .WORD 13BH,0 + .WORD 2D9H,0 + .WORD 2DAH,0 + +;************************************************************************** +;* * +;* TABLES ARE SET UP AS FOLLOWS - * +;* WORD x(NUMBER OF TABLE ENTRIES -1), TABLE ENTRY SIZE * +;* LABEL * +;* WORD TABLE ENTRY 1 * +;* ... * +;* WORD TABLE ENTRY x * +;* * +;* TABLES CAN HAVE MORE THAN ONE CALL PER ENTRY * +;* CALL EITHER ADD_TO_QUEUE OF ADD_IF_SILENT WITH TABLE ADDRESS IN A2 * +;* CALL WITH A0 SET TO RANDOMNESS OF ACTUALLY MAKING A SOUND CALL * +;* A0 = 0 NO CHANCE, A0=1000 100% CHANCE * +;* IF CALLING A TABLE WITH EITHER 'GIVE CREDIT' OR * +;* 'VERY_IMPRESSIVE' IN IT, A5 MUST REFLECT THE ATTACKING WRESTLER NUMBER * +;* * +;************************************************************************** + +RESET_VOICE_QUEUE + MOVI ANNOUNCE_QUEUE,A1 + MOVE A1,@NEXT_ANN_QUEUE,L + MOVE A1,@CURRENT_ANN_QUEUE,L + RETS + +IF_SILENT_ADD_VOICE + MMTM SP,A1,A2 + MOVE @NEXT_ANN_QUEUE,A1,L + MOVE @CURRENT_ANN_QUEUE,A2,L + CMP A1,A2 + JRNE NO_ADD + CALLR WHO_IS_IT + JRC NOT_ANNOUNCER + JRNZ NO_ADD +NOT_ANNOUNCER + MMFM SP,A1,A2 +ADD_VOICE + PUSH A1 + MOVE @NEXT_ANN_QUEUE,A1,L + + CMPI (triple_end-triple_sndtab)/32,A0 + JRGT OUT_OF_RANGE_SOUND + MOVE A0,A0 + JRN OUT_OF_RANGE_SOUND + +; ;temp! +; cmpi 9Eh,a0 +; jrne #foo +; LOCKUP +;#foo + + MOVE A0,*A1+ + CMPI EOF_ANNOUNCE_QUEUE,A1 + JRNE NO_RESET_QUEUE + MOVI ANNOUNCE_QUEUE,A1 +NO_RESET_QUEUE + MOVE A1,@NEXT_ANN_QUEUE,L + PULL A1 + CLR A0 + MOVE A0,A0 + RETS + +OUT_OF_RANGE_SOUND + PULL a1 + .IF DEBUG + LOCKUP + .ENDIF + MOVI -1,A0 + RETS + +NO_ADD + MMFM SP,A1,A2 + MOVI -1,A0 + RETS + + SUBR ANNOUNCE_VOICE + MOVE @NEXT_ANN_QUEUE,A1,L + MOVE @CURRENT_ANN_QUEUE,A2,L + CMP A1,A2 + JREQ NOTHING_TO_DO_NOW + + +; move @GAMSTATE,a0 +; subk INAMODE,a0 +; jrnz #no +;Check AMODE SOUND ON CMOS flag +; ADJUST ADJMUSIC +; jrnz NOTHING_TO_DO_NOW +;#no + + + + MOVE *A2+,A0 + JRN TIME_TO_DIE + CMPI EOF_ANNOUNCE_QUEUE,A2 + JRNE NO_RESET_QUEUE2 + MOVI ANNOUNCE_QUEUE,A2 +NO_RESET_QUEUE2 + MOVE A2,@CURRENT_ANN_QUEUE,L + CMPI 0E0H,A0 + JRLT DO_TRIPLE_SOUND + CALLR FIND_AND_KILL_ENDLESS + CALLA announcer_sound + CALLA PRCSLP + JRUC ANNOUNCE_VOICE + +DO_TRIPLE_SOUND + CALLR FIND_AND_KILL_ENDLESS + CALLA triple_sound + CALLA PRCSLP + JRUC ANNOUNCE_VOICE + +NOTHING_TO_DO_NOW + SLOOP 1,ANNOUNCE_VOICE + +TIME_TO_DIE + CMPI EOF_ANNOUNCE_QUEUE,A2 + JRNE NO_RESET_QUEUE3 + MOVI ANNOUNCE_QUEUE,A2 +NO_RESET_QUEUE3 + MOVE A2,@CURRENT_ANN_QUEUE,L + SLOOP 1,ANNOUNCE_VOICE + +******************************************************************************* + + bssx which_table,32 + bssx which_one_first,16 + +ADD_TO_QUEUE + MOVI -1,B3 + JRUC IN_HERE +ADD_IF_SILENT + CLR B3 +IN_HERE + move a2,@which_table,L + + MMTM SP,A0,A1,A2,A3 + MOVE *A2(-050H),A3 + JRZ NO_RESET_REPEAT + CLR A3 + MOVE A3,@REPEAT_STATE +NO_RESET_REPEAT + MOVE *A2(-040H),A3,L + JRZ NO_CROWD + CALLA DO_CROWD_ANYWAY +NO_CROWD + MOVE @REPEAT_STATE,A4 + JRZ NO_DO_REPEAT + MOVI REPEAT_MODE,A0 + MOVK 010H,A3 + JRUC DO_REPEAT +NO_DO_REPEAT + CALLA RNDPER + JRLS NO_MORE + MOVE *A2(-010H),A3 + MOVE *A2(-020H),A0 + CALLA RNDRNG0 + move a0,@which_one_first + MPYU A3,A0 + ADD A2,A1 +ADD_AGAIN + MOVE *A1+,A0 +DO_REPEAT + CMPI END_GAME_STUFF,A0 + JREQ DO_END_STUFF + CMPI GIVE_CREDIT,A0 + JREQ SPECIAL_SET_UP + CMPI VERY_IMPRESSIVE,A0 + JREQ SPECIAL_SET_UP + CMPI IT_DOESNT_LOOK_GOOD,A0 + JREQ SPECIAL_SET_UP + CMPI R_IMPRESSIVE_MOVE,A0 + JREQ SPECIAL_SET_UP + CMPI GIDDUP_MODE,A0 + JREQ SPECIAL_SET_UP + CMPI REPEAT_MODE,A0 + JRNE NO_SPECIAL_SET_UP +SPECIAL_SET_UP + CALLR SET_UP_PERSONAL_CALL + CALLR ARE_WE_REPEATING + JRC SET_NO_MORE + JRUC DO_THE_SPEECH +NO_SPECIAL_SET_UP + CALLR ARE_WE_REPEATING + JRNC DO_THE_SPEECH +NO_SPECIAL_END_STUFF + SUBI 010H,A1 + ADD A3,A1 + JRUC ADD_AGAIN + +DO_THE_SPEECH + CALLR ADD_SPEECH_TO_LIST + MOVE B3,B3 + JRNZ ADD_ANYWAY +************************************** + .IF DEBUG + MOVE A0,A0 + JRNN OKAY + LOCKUP +OKAY + .ENDIF +************************************** + CALLA IF_SILENT_ADD_VOICE + JRUC SPEECH_ADDED +ADD_ANYWAY + CALLA ADD_VOICE +SPEECH_ADDED + JRN NO_MORE + SUBI 010H,A3 + JRZ NO_MORE +ADD_AGAIN3 + MOVE *A1+,A0 + JRZ NO_MORE + CALLA ADD_VOICE + SUBI 010H,A3 + JRNZ ADD_AGAIN3 +NO_MORE + MMFM SP,A0,A1,A2,A3 + RETS +SET_NO_MORE + MOVI -1,A0 + MMFM SP,A0,A1,A2,A3 + RETS + + +ARE_WE_REPEATING + PUSH A1,A2,A3 + MOVI LAST_VOICE,A1 + MOVK 4,A3 +NEXT_SPEECH + MOVE *A1+,A2 + CMP A0,A2 + JREQ YES_WE_ARE + DSJS A3,NEXT_SPEECH + PULL A1,A2,A3 + CLRC + RETS +YES_WE_ARE + PULL A1,A2,A3 + SETC + RETS + +ADD_SPEECH_TO_LIST + PUSH A1 + MOVE @WHICH_LAST_VOICE,A1,L + ADDK 16,A1 + CMPI WHICH_LAST_VOICE,A1 + JRNE NO_RESET_SPEECH_REPEAT + MOVI LAST_VOICE,A1 +NO_RESET_SPEECH_REPEAT + MOVE A1,@WHICH_LAST_VOICE,L + MOVE A0,*A1 + PULL A1 + RETS + +CLEAR_SPEECH_REPEAT + MOVI LAST_VOICE,A1 + MOVE A1,@WHICH_LAST_VOICE,L + CLR A0 + MOVE A0,*A1+,L + MOVE A0,*A1+,L + RETS + +DO_CROWD_ANYWAY + MMTM SP,A0,A1,A3,A5 + MOVE *A3(-010H),A0 + CALLA RNDRNG0 + SLL 6,A0 + ADD A3,A0 + MOVE A0,A4 +; MOVI CROWD_SOUND_PID,A0 +; MOVI -1,A1 +; CALLA EXISTP + move @crowd_dummy_exists,a0 + JRNZ NO_CROWD_ALREADY_GOING + MOVE A4,A0 + MOVE *A0,A3 + CALLA SNDSND + MOVE *A0(010H),A9 + CREATE CROWD_SOUND_PID,CROWD_DUMMY +NO_CROWD_ALREADY_GOING + MOVE A4,A0 + MOVE *A0(020H),A3 + BTST B_RANDOM,A3 + JRZ NO_NEED_FOR_A4 + MOVE *A0(030H),A4 +NO_NEED_FOR_A4 + CALLA crowd_cheer + MMFM SP,A0,A1,A3,A5 + RETS + +CROWD_DUMMY + movk 1,a0 + move a0,@crowd_dummy_exists + MOVE A9,A0 + CALLA PRCSLP + clr a0 + move a0,@crowd_dummy_exists + DIE + +SET_UP_PERSONAL_CALL + PUSH A1 + SLL 4,A5 + MOVI GIVE_CREDIT_TO,A1 + INC A0 + JRZ MADE_RIGHT_TABLE + MOVI VERY_IMPRESSIVE_MOVE,A1 + INC A0 + JRZ MADE_RIGHT_TABLE + MOVI IT_DOESNT_LOOK_GOOD_FOR,A1 + INC A0 + INC A0 + JRZ MADE_RIGHT_TABLE + MOVI VERY_IMPRESSIVE_MOVE_R,A1 + INC A0 + JRZ MADE_RIGHT_TABLE + MOVI GIDDUP_ALL,A1 + INC A0 + JRZ MADE_RIGHT_TABLE + MOVE @REPEAT_STATE,A0 + JRNZ ALREADY_IN_REPEAT_MODE + MOVI 80,A9 + CREATE REPEAT_MODE_PID,REPEAT_DUMMY + MOVK 4,A0 +ALREADY_IN_REPEAT_MODE + DEC A0 + MOVE A0,@REPEAT_STATE + SLL 4,A0 + SLL 2,A5 + MOVI ASCENDING_TABLE,A1 + ADD A0,A5 + CALLR SET_DUMMY_SLEEP +MADE_RIGHT_TABLE + ADD A5,A1 + MOVE *A1,A0 + PULL A1 + RETS + +SET_DUMMY_SLEEP + PUSH A1 + move @repeat_mode_exists,a0 +; MOVI REPEAT_MODE_PID,A0 +; MOVI -1,A1 +; CALLA EXISTP + JRZ NO_DUMMY_TO_SET + MOVI 80,A1 + MOVE A1,*A0(PTIME) +NO_DUMMY_TO_SET + PULL A1 + RETS + +REPEAT_DUMMY + movk 1,a14 + move a14,@repeat_mode_exists + MOVE A9,A0 + CALLA PRCSLP + CLR A0 + MOVE A0,@REPEAT_STATE + clr a14 + move a14,@repeat_mode_exists + DIE + +DO_END_STUFF + PUSH A1 + MOVI NUM_WRES,A1 +CHECK_NEXT + PUSH A1 + DEC A1 + CALLA get_health + PULL A1 + CMPI 40,A0 + JRLT YES_WE_NEAR_END + DSJS A1,CHECK_NEXT + PULL A1 + JRUC NO_SPECIAL_END_STUFF +YES_WE_NEAR_END + PULL A1 + MOVI SPECIAL_LAST_STUFF,A2 + MOVE *A2(-010H),A3 + MOVE *A2(-020H),A0 + CALLA RNDRNG0 + MPYU A3,A0 + ADD A2,A1 + MOVE *A1+,A0 + CALLR ARE_WE_REPEATING + JRC SET_NO_MORE + CLR A4 + MOVE A4,@REPEAT_STATE + CMPI IT_DOESNT_LOOK_GOOD,A0 + JREQ SPECIAL_SET_UP + JRUC DO_THE_SPEECH + +ASCENDING_TABLE + .WORD 102H,101H,100H,0FFH + .WORD 0ECH,0EBH,0EAH,0E9H + .WORD 0F6H,0F5H,0F4H,0F3H + .WORD 106H,105H,104H,103H + .WORD 0E8H,0E7H,0E6H,0E5H + .WORD 0FAH,0F9H,0F8H,0F7H + .WORD 0E4H,0E3H,0E2H,0E1H + .WORD 0,0,0,0 + .WORD 0FEH,0FDH,0FCH,0FBH + +GIDDUP_ALL + .WORD L_GIDDUP_HART + .WORD L_GIDDUP_RAZOR + .WORD L_GIDDUP_UNDER + .WORD L_GIDDUP_YOKO + .WORD L_GIDDUP_SHAWN + .WORD L_GIDDUP_BAM + .WORD L_GIDDUP_DOINK + .WORD 0 + .WORD L_GIDDUP_LUGER + +VERY_IMPRESSIVE_MOVE + .WORD VERY_IMP_HART + .WORD VERY_IMP_RAZOR + .WORD VERY_IMP_UNDER + .WORD VERY_IMP_YOKO + .WORD VERY_IMP_SHAWN + .WORD VERY_IMP_BAM + .WORD VERY_IMP_DOINK + .WORD 0 + .WORD VERY_IMP_LUGER + +VERY_IMPRESSIVE_MOVE_R + .WORD R_MOVE_BY_HITMAN + .WORD R_MOVE_BY_RAZOR + .WORD R_MOVE_BY_UNDER + .WORD R_MOVE_BY_YOKO + .WORD R_MOVE_BY_SHAWN + .WORD R_MOVE_BY_BAM + .WORD R_MOVE_BY_DOINK + .WORD 0 + .WORD R_MOVE_BY_LEX + +IT_DOESNT_LOOK_GOOD_FOR + .WORD IT_DOESNT_LOOK_BRET + .WORD IT_DOESNT_LOOK_RAZOR + .WORD IT_DOESNT_LOOK_UNDER + .WORD IT_DOESNT_LOOK_YOKO + .WORD IT_DOESNT_LOOK_SHAWN + .WORD IT_DOESNT_LOOK_BAMBAM + .WORD IT_DOESNT_LOOK_DOINK + .WORD 0 + .WORD IT_DOESNT_LOOK_LEX + +GIVE_CREDIT_TO + .WORD GIVE_CRED_HART + .WORD GIVE_CRED_RAZOR + .WORD GIVE_CRED_UNDER + .WORD GIVE_CRED_YOKO + .WORD GIVE_CRED_SHAWN + .WORD GIVE_CRED_BAM + .WORD GIVE_CRED_DOINK + .WORD 0 + .WORD GIVE_CRED_LUGER + + .WORD -1 + .LONG CRESCENDO_TABLE + .WORD 12,010H +CLIMB_ROPES + .WORD GOING_TO_TOP_ROPE + .WORD GOING_TO_TOP + .WORD HERE_IT_COMES + .WORD AND_1 + .WORD AND_2 + .WORD AND_3 + .WORD LOOK_AT_THIS + .WORD HERES_THE_SETUP + .WORD R_OH_YEAH + .WORD WHATS_THIS + .WORD R_LOOK_AT_THIS + .WORD L_WHO_DOES_HE_THINK + .WORD L_GOING_FOR_ROPE + + .WORD GOING_TO_TOP_ROPE + .WORD GOING_TO_TOP + .WORD HERE_IT_COMES + .WORD AND_1 + + .WORD 0 + .LONG ROPES_CHEER + .WORD 6,020H +JUMP_ROPES + .WORD KABOOM_OH,KABOOM +; .WORD REPEAT_MODE,0 + .WORD OOOH,0 + .WORD BOOMSHAKALAKA,0 + .WORD OFF_THE_TOP,0 + .WORD LOOK_OUT,0 + .WORD R_NICELY_DONE,0 + .WORD I_WOULD_RECEIVE_THAT,0 + + .WORD KABOOM_OH,KABOOM + .WORD OOOH,0 + .WORD BOOMSHAKALAKA,0 + .WORD OFF_THE_TOP,0 + +CALL_MISSES + CREATE SOUND_PID,PROC_MISSES + RETS + +PROC_MISSES + SLEEP 5 + MOVI MISSES,A2 + MOVI 350,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD -1 + .LONG CROWD_FAIL + .WORD 17,010H +MISSES + .WORD A_MISS + .WORD NO_V + .WORD AND_MISSES + .WORD ALMOST + .WORD FORGET_ABOUT_IT + .WORD R_THAT_WAS_DUMB + .WORD R_THAT_WAS_UGLY + .WORD AND_OH + .WORD REJECTED + .WORD R_THATLL_COST_HIM + .WORD AND_OH + .WORD FORGET_ABOUT_IT + .WORD NOT_A_GOOD_IDEA + .WORD WHAT_WAS_HE_THINKING + .WORD L_WHAT_A_JERK + .WORD L_DONT_BOTHER + .WORD L_NOT_A_GOOD_IDEA + .WORD L_WHAT_WAS_HE_THINKING + + .WORD A_MISS + .WORD AND_MISSES + .WORD ALMOST + .WORD R_REJECTED + +CALL_SPECIAL_MOVE + MOVE *A13(WRESTLERNUM),A9 + CREATE SOUND_PID,PROC_SPECIAL_MOVE + RETS + +PROC_SPECIAL_MOVE + SLEEP 10 + MOVE A9,A5 + MOVI SPECIAL_MOVE,A2 + MOVI 550,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG CROWD_SPECIAL + .WORD 31,020H +SPECIAL_MOVE + .WORD END_GAME_STUFF,0 + .WORD LISTEN_TO_THE_CROWD,L_CHEER_FOR_ME + .WORD REPEAT_MODE,0 + .WORD DID_YOU_SEE_THAT,0 + .WORD VERY_IMPRESSIVE,0 + .WORD THATS_GOTTA_HURT,0 + .WORD NICELY_DONE,0 + .WORD IVE_NEVER_SEEN_THAT,0 + .WORD OH_MY,0 + .WORD OH_MY_GOODNESS_0,0 + .WORD DID_YOU_SEE_THAT,R_IVE_NEVER_SEEN + .WORD DID_YOU_SEE_THAT,R_OH_YEAH + .WORD WOW_0,0 + .WORD UNBEELEVABLE_0,0 + .WORD LOOK_AT_THIS,L_I_WOULDNT_BELIEVE_IT + .WORD R_DID_YOU_SEE_THAT,UNBEELEVABLE_0 + .WORD WHAT_A_TURN_OF_EVENTS,R_INCREDIBLE + .WORD R_TASTE_OF_HIS_OWN,0 + .WORD WHAT_A_BEATING,R_NICELY_DONE + .WORD I_WOULD_RECEIVE_THAT,0 + .WORD R_LOOK_AT_THIS,CAN_YOU_BELIEVE_THAT + .WORD CAN_ANYBODY_STOP_HIM,R_INCREDIBLE + .WORD R_THATS_GOTTA_HURT,YES_V + .WORD WHAT_A_SLAM,R_IVE_NEVER_SEEN + .WORD I_CANT_WATCH_THIS,L_I_DIDNT_SEE + .WORD CAN_ANYBODY_STOP_HIM,0 + .WORD R_I_THINK_HE_BROKE_IT,0 + .WORD R_NOBODY_GETS_UP,0 + .WORD LISTEN_TO_THE_CROWD,L_QUIET + .WORD L_WHAT_KIND_OF_CHEAP,0 + .WORD L_NO_ONE_CAN_TOUCH,0 + .WORD WHAT_POWER,0 + + .WORD LISTEN_TO_THE_CROWD,0 + .WORD DID_YOU_SEE_THAT,0 + .WORD THATS_GOTTA_HURT,0 + .WORD NICELY_DONE,0 + +CALL_DROP_KICK + MOVE *A10(WRESTLERNUM),A9 + CREATE SOUND_PID,PROC_DROP_KICK + RETS + +PROC_DROP_KICK + SLEEP 15 + MOVE A9,A5 + MOVI DROP_KICK,A2 + MOVI 400,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG CROWD_CHEER + .WORD 14,010H +DROP_KICK + .WORD LISTEN_TO_THE_CROWD + .WORD REPEAT_MODE + .WORD NICELY_DONE +; .WORD BOTH_MEN_DOWN + .WORD OH_MY +; .WORD OH_THAT_HURTS_0 + .WORD WITH_AUTHORITY + .WORD KABOOM + .WORD BOOMSHAKALAKA + .WORD R_TASTE_OF_HIS_OWN + .WORD VERY_IMPRESSIVE +; .WORD ITS_PAND_OUT_THERE +; .WORD WHAT_SPEED + .WORD TO_THE_FACE + .WORD AWESOME + .WORD GOODNIGHT + .WORD WHAT_A_BLOW + .WORD L_NO_ONE_CAN_TOUCH + .WORD L_SOMETHING + + .WORD LISTEN_TO_THE_CROWD + .WORD NICELY_DONE + .WORD GOODNIGHT +; .WORD BOTH_MEN_DOWN + .WORD OH_MY + +CALL_FACE_HIT + MOVE *A10(WRESTLERNUM),A9 + CREATE SOUND_PID,PROC_FACE_HIT + RETS + +PROC_FACE_HIT + SLEEP 8 + MOVE A9,A5 + MOVI FACE_HIT,A2 + MOVI 200,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG CROWD_ORDINARY + .WORD 7,010H +FACE_HIT + .WORD TO_THE_FACE + .WORD R_WHAT_SPEED + .WORD TO_THE_FACE +; .WORD WHAT_POWER + .WORD TO_THE_FACE + .WORD WHAT_A_BLOW + .WORD HELLO + .WORD R_GOODNIGHT + + .WORD TO_THE_FACE +; .WORD WHAT_SPEED + .WORD R_WHAT_POWER + .WORD OH_MY + .WORD HELLO + +CALL_MID_HIT + MOVE *A10(WRESTLERNUM),A9 + CREATE SOUND_PID,PROC_MID_HIT + RETS + +PROC_MID_HIT + SLEEP 8 + MOVE A9,A5 + MOVI MID_HIT,A2 + MOVI 200,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG CROWD_ORDINARY + .WORD 7,010H +MID_HIT + .WORD TO_THE_MIDSECTION +; .WORD WHAT_SPEED + .WORD TO_THE_MIDSECTION + .WORD R_WHAT_POWER + .WORD TO_THE_MIDSECTION + .WORD WHAT_SKILL + .WORD WHAT_A_BLOW + .WORD R_HELLO + .WORD L_HIT_HIM + + .WORD TO_THE_MIDSECTION +; .WORD WHAT_SPEED + .WORD R_WHAT_POWER + .WORD OH_MY + .WORD L_HIT_HIM + +CALL_AVERAGE_MOVE + MOVE *A10(WRESTLERNUM),A9 + CREATE SOUND_PID,PROC_AVERAGE_MOVE + RETS + +CALL_ANI_AVERAGE_MOVE + MOVE *A13(WRESTLERNUM),A9 + CREATE SOUND_PID,PROC_AVERAGE_MOVE + RETS + +PROC_AVERAGE_MOVE + SLEEP 10 + MOVE A9,A5 + MOVI AVERAGE_MOVE,A2 + MOVI 500,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG CROWD_CHEER + .WORD 17,010H +AVERAGE_MOVE + .WORD END_GAME_STUFF +; .WORD OH_THAT_HURTS_1 + .WORD REPEAT_MODE + .WORD OH_0 + .WORD WITH_AUTHORITY + .WORD NICELY_DONE + .WORD NICE_EXECUTION + .WORD OOOH_0 +; .WORD OH_MY_GOODNESS_2 + .WORD R_RIGHT_TO_THE_KISSER + .WORD ITS_PAND_IN_THE_RING +; .WORD WHAT_POWER + .WORD WHAT_SKILL + .WORD R_WHAT_AGILITY + .WORD R_AWESOME + .WORD R_HELLO + .WORD WHAT_A_BLOW + .WORD GOODNIGHT + .WORD MOST_IMPRESSIVE + .WORD AWESOME + .WORD R_IMPRESSIVE_MOVE + +; .WORD OH_THAT_HURTS_1 + .WORD AWESOME + .WORD OH_0 + .WORD WITH_AUTHORITY + .WORD NICELY_DONE + +DO_REVERSAL + CALLA FIND_AND_KILL_ENDLESS + push a8 + MOVE *A8(WRESTLERNUM),A5 + + ;make sure wrestlernum is valid! + jrn #bad_a5 + cmpi 7,a5 + jreq #bad_a5 + cmpi 8,a5 + jrle #ok_a5 +#bad_a5 + .if DEBUG + LOCKUP + .endif + jruc #dr_done +#ok_a5 + + MOVI REVERSAL,A2 + MOVI 500,A0 + CALLR ADD_IF_SILENT + pull a8 +#dr_done + RETS + + .WORD 0 + .LONG CROWD_CHEER + .WORD 14,010H +REVERSAL + .WORD NO_WAIT_A_MINUTE + .WORD NICE_ESCAPE + .WORD WOW_1 + .WORD LOOK_OUT + .WORD FORGET_ABOUT_IT + .WORD A_QUICK_REVERSAL + .WORD R_THAT_WAS_DUMB + .WORD WHATS_THIS + .WORD R_NO_WAIT_A_MINUTE +; .WORD WHAT + .WORD WHAT_THE + .WORD MOST_IMPRESSIVE + .WORD YES_V + .WORD WAIT_A_MINUTE + .WORD L_WHO_DOES_HE_THINK + .WORD L_PULLED_IT_OFF + + .WORD NO_WAIT_A_MINUTE + .WORD NICE_ESCAPE + .WORD WOW_1 + .WORD LOOK_OUT + +CALL_MISS_YOKO + CREATE SOUND_PID,PROC_MISS_YOKO + RETS + +PROC_MISS_YOKO + SLEEP 10 + MOVI MISS_YOKO,A2 + MOVI 400,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD -1 + .LONG 0 + .WORD 6,010H +MISS_YOKO + .WORD FORGET_ABOUT_IT + .WORD R_THAT_WAS_DUMB + .WORD NOT_A_GOOD_IDEA + .WORD WHAT_WAS_HE_THINKING + .WORD AND_OH + .WORD REJECTED + .WORD L_AND_STAY_DOWN + + .WORD FORGET_ABOUT_IT + .WORD R_THAT_WAS_DUMB + .WORD NOT_A_GOOD_IDEA + .WORD WHAT_WAS_HE_THINKING + + .WORD -1 + .LONG CROWD_THROWN + .WORD 12,010H +THROWN_OUT + .WORD HEAVES_HIM + .WORD VERY_IMPRESSIVE + .WORD NICE_EXECUTION + .WORD UNBEELEVABLE_1 + .WORD IVE_NEVER_SEEN_THAT +; .WORD OH_THAT_HURTS_0 + .WORD WITH_AUTHORITY + .WORD WHAT_A_TURN_OF_EVENTS +; .WORD WHAT_POWER + .WORD R_WHAT_SPEED + .WORD WHAT_SKILL + .WORD R_WHAT_AGILITY + .WORD MAGNIFICENT + .WORD JUST_AWESOME + .WORD L_HEAVES + + .WORD HEAVES_HIM + .WORD NICE_EXECUTION + .WORD UNBEELEVABLE_1 + .WORD IVE_NEVER_SEEN_THAT + +CALL_THROWN_OUT + MOVE *A13(WRESTLERNUM),A9 + CREATE SOUND_PID,PROC_THROWN_OUT + RETS + +PROC_THROWN_OUT + SLEEP 10 + MOVE A9,A5 + MOVI THROWN_OUT,A2 + MOVI 500,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD -1 + .LONG CROWD_THROWN + .WORD 12,010H +OTHER_AVERAGE + .WORD VERY_IMPRESSIVE + .WORD NICE_EXECUTION + .WORD UNBEELEVABLE_1 + .WORD IVE_NEVER_SEEN_THAT +; .WORD OH_THAT_HURTS_0 + .WORD WITH_AUTHORITY + .WORD WHAT_A_TURN_OF_EVENTS +; .WORD WHAT_POWER + .WORD R_WHAT_SPEED + .WORD WHAT_SKILL + .WORD R_WHAT_AGILITY + .WORD MAGNIFICENT + .WORD JUST_AWESOME + .WORD L_TEETH_POP + .WORD L_SOMETHING + + .WORD MAGNIFICENT + .WORD NICE_EXECUTION + .WORD UNBEELEVABLE_1 + .WORD IVE_NEVER_SEEN_THAT + +CALL_OTHER_AVERAGE + MOVE *A13(WRESTLERNUM),A9 + CREATE SOUND_PID,PROC_OTHER_AVERAGE + RETS + +PROC_OTHER_AVERAGE + SLEEP 10 + MOVE A9,A5 + MOVI OTHER_AVERAGE,A2 + MOVI 500,A0 + CALLR ADD_IF_SILENT + DIE + +CALL_NASTY_MOVE + MOVE *A13(WRESTLERNUM),A9 + CREATE SOUND_PID,PROC_NASTY_MOVE + RETS + +PROC_NASTY_MOVE + SLEEP 10 + MOVE A9,A5 + MOVI NASTY_MOVE,A2 + MOVI 500,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD -1 + .LONG CROWD_FAIL + .WORD 17,020H +NASTY_MOVE + .WORD R_WHATS_GOING_ON,IS_THAT_LEGAL + .WORD HE_CANT_DO_THAT,R_SOMEONE_CALL_SECURITY + .WORD NOW_THAT_WAS_CHEAP,R_I_CANT_WATCH + .WORD THATS_NOT_VERY_FAIR,L_EXACT_WHAT_HE_DESERVED + .WORD SOMEONE_CALL_SECURITY,0 + .WORD THAT_WASNT_VERY_NICE,L_SURE_IT_WAS + .WORD I_CANT_WATCH_THIS,R_OH_VICIOUS + .WORD R_THATS_GOTTA_HURT,THATS_NOT_VERY_FAIR + .WORD SHOCKING,0 + .WORD L_WHAT_A_JERK,0 + .WORD L_LISTEN_TO_THE_CROWD,L_WHAT_MORONS + .WORD L_THAT_WAS_CHEAP,0 + .WORD L_TEETH_POP,0 + .WORD LISTEN_TO_THE_CROWD,L_CHEER_FOR_ME + .WORD LISTEN_TO_THE_CROWD,L_QUIET + .WORD L_WHAT_MORONS,0 + .WORD L_AW_CMON_2,IS_THAT_LEGAL + .WORD L_WHO_DOES_HE_THINK,0 + + .WORD R_WHATS_GOING_ON,IS_THAT_LEGAL + .WORD HE_CANT_DO_THAT,R_SOMEONE_CALL_SECURITY + .WORD NOW_THAT_WAS_CHEAP,R_I_CANT_WATCH + .WORD THATS_NOT_VERY_FAIR,0 + +CALL_SETUP + MOVE *A13(WRESTLERNUM),A9 + CREATE SOUND_PID,PROC_SETUP_MOVE + RETS + +PROC_SETUP_MOVE + SLEEP 5 + MOVE A9,A5 + MOVI SETUP_MOVE,A2 + MOVI 500,A0 + CALLR ADD_IF_SILENT + DIE + + .WORD 0 + .LONG SETUP_TABLE + .WORD 15,010H +SETUP_MOVE + .WORD END_GAME_STUFF + .WORD REPEAT_MODE + .WORD HERES_THE_SETUP + .WORD AND_1 + .WORD HERE_IT_COMES + .WORD AND_2 + .WORD LOOK_AT_THIS + .WORD OOOH + .WORD R_LOOK_AT_THIS + .WORD WHATS_THIS + .WORD ITS_PAND_IN_THE_RING + .WORD R_THIS_COULD_BE_TROUBLE + .WORD R_DIG_IT + .WORD L_WHATS_HE_UP_TO + .WORD L_WHO_DOES_HE_THINK +; .WORD L_THE_SUSPENSE + .WORD HES_GOT_HIM + + .WORD HERES_THE_SETUP + .WORD AND_1 + .WORD HERE_IT_COMES + .WORD AND_2 + .WORD LOOK_AT_THIS + + .WORD 6,010H +SPECIAL_LAST_STUFF + .WORD THIS_COULD_BE_IT + .WORD R_THIS_COULD_BE_IT + .WORD YOU_CANT_GET_ANY_CLOSER + .WORD WHAT_KEEPING_THEM_UP + .WORD LOOKS_LIKE_ITS_OVER + .WORD R_GAME_OVER + .WORD L_NO_ONE_CAN_TOUCH +; .WORD L_THE_SUSPENSE + + .WORD THIS_COULD_BE_IT + .WORD R_THIS_COULD_BE_IT + .WORD YOU_CANT_GET_ANY_CLOSER + .WORD WHAT_KEEPING_THEM_UP + +****************************************************************************** + + .ref match_winner + +* >a0 = winning team (0 or 1) + + SUBR CALL_MATCH_OVER + + movk 1,a8 + sll a0,a8 ;turn winning team # into a match_winner + move @PSTATUS,a9 + CREATE SOUND_PID,PROC_MATCH_OVER + RETS + + + SUBRP PROC_MATCH_OVER + + SLEEPK 5 + + ;did a drone lose? + xor a8,a9 + jrz #drn_l + + movi MATCH_OVER,A2 + jruc #cont +#drn_l movi MATCH_OVER_DL,A2 +#cont move *a10(WRESTLERNUM),a5 + MOVI 200,A0 + CALLA RNDPER + JRHI WRESTLER_SPEECH + + MOVE *A10(PLYRNUM),A0 + SLL 4,A0 + ADDI p1winstreak,A0 + MOVE *A0,A0 + CMPI 4,A0 + JRLT NO_SPECIAL_FOR_OVER_4_WINS + + MOVI 200,A0 + CALLA RNDPER + JRHI SPECIAL_FOR_OVER_4_WINS +NO_SPECIAL_FOR_OVER_4_WINS + + movi 1000,A0 + callr ADD_TO_QUEUE + DIE + +SPECIAL_FOR_OVER_4_WINS + MOVI CAN_ANYBODY_STOP_HIM,A2 + MOVI 500,A0 + CALLA RNDPER + JRLO SPECIAL_DONE + MOVI L_NO_ONE_CAN_TOUCH,A2 +SPECIAL_DONE + MOVE A2,A0 + CALLA ADD_VOICE + DIE + + + +;Use this table if the loser is a player. Lawlor cheers/Vince gripes + .word -1 + .long 0 + .word 6,010H +MATCH_OVER + .word TOTAL_DISASTER + .word TOTAL_DEBUNK + .word L_HE_DID_IT + .word L_PULLED_IT_OFF + .word L_EXACT_WHAT_HE_DESERVED + .WORD GOOD_NIGHT_2 + .WORD L_BACK_TO_SANDBOX + + .word TOTAL_DEBUNK + .word L_HE_DID_IT + .word L_PULLED_IT_OFF + .word L_EXACT_WHAT_HE_DESERVED + +;Use this table if the loser is a drone. Vince cheers/Lawlor gripes + .word -1 + .long 0 + .word 3,010H +MATCH_OVER_DL + .word GIVE_CREDIT + .word UNBEELEVABLE_0 + .word L_WHAT_A_RIPOFF + .word L_WHAT_A_SCAM + + + .word GIVE_CREDIT + .word UNBEELEVABLE_0 + .word L_WHAT_A_RIPOFF + .word L_WHAT_A_SCAM + +****************************************************************************** + +WRESTLER_SPEECH + SLL 5,A5 + ADDI WHICH_WRESTLER_TALKS,A5 + MOVE *A5,A2,L + MOVI 1000,A0 + CALLR ADD_TO_QUEUE + DIE + +WHICH_WRESTLER_TALKS + .LONG HART_FINISHES + .LONG RAZOR_FINISHES + .LONG UNDERTAKER_FINISHES + .LONG YOKO_FINISHES + .LONG SHAWN_FINISHES + .LONG BAM_FINISHES + .LONG DOINK_FINISHES + .LONG 0 + .LONG LUGER_FINISHES + + .LONG 0 + .WORD 0,010H +HART_FINISHES + .WORD 238H + + .LONG 0 + .WORD 0,010H +RAZOR_FINISHES + .WORD RAZOR_RIGHT_GUY + + .LONG 0 + .WORD 0,010H +UNDERTAKER_FINISHES + .WORD 0 + + .LONG 0 + .WORD 0,010H +YOKO_FINISHES + .WORD 0 + + .LONG 0 + .WORD 1,010H +SHAWN_FINISHES + .WORD SHAWN_LUCKY_YOU + .WORD SHAWN_WRESTLER_90 + + .LONG 0 + .WORD 2,010H +BAM_FINISHES + .WORD BAM_BEAST_FROM_EAST + .WORD BAM_BAM_YEAH + .WORD BAM_GET_OUT + + .LONG 0 + .WORD 0,010H +DOINK_FINISHES + .WORD DOINK_LAUGH_1 + + .LONG 0 + .WORD 0,010H +LUGER_FINISHES + .word 1f3h + .WORD 0 + + SUBR END_MATCH_SPEECH + +; MOVI IT_DOESNT_LOOK_GOOD,A0 +; MOVE *A13(WRESTLERNUM),A5 +; CALLR SET_UP_PERSONAL_CALL +; CALLR ADD_VOICE + + CLR A9 + CREATE PIN_HIM_PID,PIN_HIM_PROC + RETS + +PIN_HIM_PROC + movi 150,a0 + calla RNDPER + jals SUCIDE + + movk 8,a11 +#lp + movk 3,a0 + CALLA RNDRNG0 + MOVE A0,A1 + SLL 4,A1 + ADDI WHICH_PIN_HIM,A1 + MOVE *A1,A0 + CMP A0,A9 + JRNE NO_NEED_TO_DO_NEXT_ONE + MOVE *A1(010H),A0 +NO_NEED_TO_DO_NEXT_ONE + MOVE A0,A9 + CALLA triple_sound + CLR A0 + MOVX A14,A0 + subk 20,a0 + CALLA PRCSLP + dsj a11,#lp + + DIE + +; JRUC PIN_HIM_PROC + +WHICH_PIN_HIM + .WORD 0D3H,0D4H,0D5H,0d3h,0D4H + + SUBR KILL_PIN_HIM + MOVI PIN_HIM_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + RETS + +***************************************************************** +* INDIVIDUAL SOUND ROUTINES + +HIT_THE_MAT +; ;if I'm outside the ring, do the concrete sound instead +; ;;;No, don't. It doesn't sound right. Wrong call, maybe? +; movi 37h,a0 +; move *a13(INRING),a14 +; jrnz #hm_snd + + MOVI 0C1H,A0 + CALLA triple_sound + MOVK 2,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI MAT_HITS,a0 + MOVE *A0,A0 +#hm_snd CALLA triple_sound +#rets RETS + + ;low-priority mat hits +MAT_HITS + .word 76h,77h,78h + +SMALL_BOUNCE + MOVK 2,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI small_bounce_sounds,a0 + MOVE *A0,A0 + CALLA triple_sound + RETS + +SMALL_RUN + MOVK 2,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI small_run_sounds,a0 + MOVE *A0,A0 + CALLA triple_sound + RETS + +small_bounce_sounds + .word 0C0H,0C2H,0DH ;<--- this one is way too loud +; .word 0dh,0ch,0bh + +small_run_sounds + .word 0C0H,0C2H,0C0H + +DO_FLAME_SND + MOVK 1,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI FLAME_SOUNDS,a0 + MOVE *A0,A0 + CALLA triple_sound + RETS + +FLAME_SOUNDS + .WORD 99H,9AH + +DO_FLAME_HIT_SND + MOVK 4,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI FLAME_HIT_SOUNDS,a0 + MOVE *A0,A0 + CALLA triple_sound + RETS + +FLAME_HIT_SOUNDS + .WORD 9DH,9EH,9FH,0A0H,0A1H + + SUBR DO_LEX_PUSH + MOVI LEX_WHICH,A10 + JRUC DO_PUSH_SPEECH + SUBR DO_BRET_PUSH + MOVI BRET_WHICH,A10 + JRUC DO_PUSH_SPEECH + SUBR DO_DOINK_PUSH + MOVI DOINK_WHICH,A10 + JRUC DO_PUSH_SPEECH + SUBR DO_SHAWN_PUSH + MOVI SHAWN_WHICH,A10 + JRUC DO_PUSH_SPEECH + +DO_RAZOR_PUSH + MOVI RAZOR_WHICH,A10 + +DO_PUSH_SPEECH + MOVI 500,A0 + CALLA RNDPER + JRLS NO_SOUNDS +; MOVI RAZOR_SWEAR_PID,A0 +; CLR A1 +; NOT A1 +; CALLA EXISTP + move @razor_swear_exists,a14 + JRNZ NO_SOUNDS + CREATE RAZOR_SWEAR_PID,DUMMY_WAIT + MOVE *A10(-10H),A0 + CALLA RNDRNG0 + SLL 4,A0 + ADD A10,A0 + MOVE *A0,A0 + CALLA triple_sound +NO_SOUNDS + RETS + + .WORD 2 +RAZOR_WHICH + .WORD 27EH,27FH,280H + + .WORD 0 +DOINK_WHICH + .WORD 282H + + .WORD 0 +SHAWN_WHICH + .WORD 283H + + .WORD 0 +BRET_WHICH + .WORD 285H + + .WORD 0 +LEX_WHICH + .WORD 286H + + +DUMMY_WAIT + movk 1,a14 + move a14,@razor_swear_exists + SLEEP 60 + clr a14 + move a14,@razor_swear_exists + DIE + +DO_WAIL + MOVE *A13(WRESTLERNUM),A1 + SLL 4,A1 + ADDI WHICH_WAIL,A1 + MOVE *A1,A0 + CALLA triple_sound + RETS + +WHICH_WAIL + .WORD 25FH ;0 (Bret) + .WORD 270H ;1 (Razor) + .WORD 20DH ;2 (Taker) + .WORD 20DH ;3 (Yoko) + .WORD 20DH ;4 (Shawn) + .WORD 20DH ;5 (Bam Bam) + .WORD 20DH ;6 (Doink) + .WORD 0 ;7 spare + .WORD 20DH ;8 (Lex) + +DO_DOINK_SLAM + MOVI 218H,A0 + MOVE *a13(RPT_COUNT),a14 + JRZ FOUND_SOUND + DEC A14 + JRZ FOUND_SOUND + CMPI 4,A14 + JRGE NO_MORE_DOINK_SPEECH + SLL 4,A14 + ADDI DOINK_WHICH_SLAM,A14 + MOVE *A14,A0 +FOUND_SOUND + CALLA triple_sound +NO_MORE_DOINK_SPEECH + RETS +DOINK_WHICH_SLAM + .WORD 215H,216H,217H + +DO_CHOKE + CALLR FIND_AND_KILL_ENDLESS + MOVE *A13(WRESTLERNUM),A0 + SLL 4,A0 + ADDI WHICH_CHOKE,A0 + MOVE *A0,A0 + CALLA triple_sound + SRL 16,A14 + MOVE A14,@ENDLESS_SOUND + RETS + +WHICH_CHOKE + .WORD 21AH ;HART + .WORD 21AH ;RAZOR + .WORD 21AH ;UND + .WORD 21AH ;YOKO + .WORD 21AH ;SHAWN + .WORD 21AH ;BAM + .WORD 21AH ;DOINK + .WORD 0 + .WORD 21AH ;LEX + + +DO_OTHERNONO + CALLR FIND_AND_KILL_ENDLESS + MOVE *A13(WRESTLERNUM),A0 + JRUC RE_ENTER_NONO + +DO_NONO + CALLR FIND_AND_KILL_ENDLESS + MOVE *A13(ATTACH_PROC),A0,L + MOVE *A0(WRESTLERNUM),A0 +RE_ENTER_NONO + SLL 4,A0 + ADDI WHICH_NONO,A0 + MOVE *A0,A0 + CALLA triple_sound + SRL 16,A14 + MOVE A14,@ENDLESS_SOUND + RETS + +WHICH_NONO + .WORD 23CH ;HART + .WORD 281H ;RAZOR + .WORD 23CH ;UND + .WORD 23CH ;YOKO + .WORD 23CH ;SHAWN + .WORD 23CH ;BAM + .WORD 219H ;DOINK + .WORD 0 + .WORD 23CH ;LEX + +FIND_AND_KILL_ENDLESS + MMTM SP,A0,A3,A1,A14 + MOVE @ENDLESS_SOUND,A0 + JRZ NO_ENDLESS_GOING + MOVE A0,A14 + DEC A14 + SLL 7,A14 + ADDI WHICH_CHANNEL,A14 + MOVE *A14+,A0,L + CLR A1 + MOVE A1,*A0,L + MOVE *A14+,A0,L + MOVE A1,*A0,L + MOVE *A14,A3 + CALLA SNDSND + CLR A3 + MOVE A3,@ENDLESS_SOUND + +NO_ENDLESS_GOING + MMFM SP,A0,A3,A1,A14 + RETS + +WHICH_CHANNEL + .LONG chan1pri,chan1dur,994,0 + .LONG chan2pri,chan2dur,995,0 + .LONG chan3pri,chan3dur,996,0 + .LONG chan4pri,chan4dur,997,0 + + +DO_BLOCK_SND + MOVK 2,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI BLOCK_SOUNDS,a0 + MOVE *A0,A0 +; MOVK 19H,A0 + CALLA triple_sound + RETS + +BLOCK_SOUNDS + .WORD 4,7,8 + + SUBR BLOCK_WOOSH + MOVI 16h,A0 + CALLA triple_sound + RETS + +WALK_SOUND + MOVI 046H,A0 + MOVE @HCOUNT,A1 + SRL 1,A1 + JRNC WALK_SET + MOVI 047H,A0 +WALK_SET + CALLA triple_sound + RETS + +DO_RAZOR_RUG_SPEECH + MOVE *a13(RPT_COUNT),a14 + DEC A14 + CMPI 4,A14 + JRGE NO_MORE_RAZOR_SPEECH + SLL 4,A14 + ADDI RAZOR_RUG_TABLE,A14 + MOVE *A14,A0 + CALLA triple_sound +NO_MORE_RAZOR_SPEECH + RETS + +RAZOR_RUG_TABLE + .WORD 27DH,27CH,27BH,27AH + +DO_BLOCKED + MOVI 50,A0 + CALLA RNDPER + JRLS NOT_BLOCKED + MOVE *A13(WRESTLERNUM),A1 + SLL 4,A1 + ADDI WHICH_BLOCK_SPEECH,A1 + MOVE *A1,A0 + JRZ NOT_BLOCKED + CALLA triple_sound +NOT_BLOCKED + RETS + +WHICH_BLOCK_SPEECH + .WORD 236H ;HART + .WORD 280H ;RAZOR + .WORD 23DH ;UND + .WORD 23EH ;YOKO + .WORD 284H ;SHAWN + .WORD 06AH ;BAM + .WORD 212H ;DOINK + .WORD 0 + .WORD 287H ;LEX + +MAKE_HIM_SCREAM + MOVE *A13(WHOIHIT),A4,L + MOVE *A4(WRESTLERNUM),A3 + JRUC ACTUAL_SCREAM + +DO_SCREAM + MOVE *A13(WRESTLERNUM),A3 +ACTUAL_SCREAM + SLL 6,A3 + ADDI WHICH_SCREAM,A3 + MOVK 3,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADD A0,A3 + MOVE *A3,A0 + JRZ NO_SCREAM + CALLA triple_sound +NO_SCREAM + RETS + +WHICH_SCREAM + .WORD 265H,266H,262H,263H ;HART + .WORD 268H,269H,26FH,26CH ;RAZOR + .WORD 265H,266H,262H,263H ;UND !Using Bret screams + .WORD 268H,269H,26FH,26CH ;! + .WORD 265H,266H,262H,263H ;SHAWN ! + .WORD 265H,266H,262H,263H ;BAM ! + .WORD 71H,72H,20AH,20CH ;DOINK + .WORD 0,0,0,0 + .WORD 268H,269H,26FH,26CH ;LEX ! + + SUBR GOUGE_SOUND + MOVI 0A9H,A0 + CALLA triple_sound + RETS + +MAYBE_GIDDUP + MOVE *A13(WRESTLERNUM),A9 + CREATE0 MAYBE_GIDDUP_PROC + RETS + +MAYBE_GIDDUP_PROC + SLEEP 40 + MOVK 2,A0 + CALLA RNDRNG0 + MOVE A0,A0 + JRZ OKAY_DO_GIDDUP + ADDI 156,A0 + CALLA IF_SILENT_ADD_VOICE + DIE +OKAY_DO_GIDDUP + MOVE A9,A5 + MOVI GIDDUP_MODE,A0 + CALLA SET_UP_PERSONAL_CALL + CALLR ADD_SPEECH_TO_LIST + CALLA IF_SILENT_ADD_VOICE + DIE + +CALL_BONE_BREAK + MOVK 2,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI BONE_BREAK_SOUNDS,a0 + MOVE *A0,A0 + CALLA triple_sound + JRNC NOT_HEARD + CREATE0 DID_YOU_HEAR_THAT_PROC +NOT_HEARD + RETS + +BONE_BREAK_SOUNDS + .WORD 1dh,9bh,98h + +DID_YOU_HEAR_THAT_PROC + SLEEP 50 + MOVI DID_YOU_HEAR_THAT,A0 + CALLA IF_SILENT_ADD_VOICE + DIE + +MAYBE_BOUNCE_ROPE + MOVK 10,A0 + CALLA RNDRNG0 + MOVE A0,A0 + JRNZ NO_BOUNCE_ROPE_CALL + MOVI INTO_THE_ROPES,A0 + CALLA IF_SILENT_ADD_VOICE +NO_BOUNCE_ROPE_CALL + RETS + +MAYBE_HIGH_RISK + MOVK 4,A0 + CALLA RNDRNG0 + MOVE A0,A0 + JRNZ NO_HIGH_RISK + MOVI HIGH_RISK_MANUEVER,A0 + CALLA IF_SILENT_ADD_VOICE +NO_HIGH_RISK + DIE + +MAYBE_TOUGH_ENOUGH + MOVK 4,A0 + CALLA RNDRNG0 + MOVE A0,A0 + JRNZ #not_tough + MOVI ARE_YOU_TOUGH_ENOUGH,A0 + CALLA ADD_VOICE +#not_tough + rets + +MAYBE_SHOCKING + movi 3eh,a0 + calla triple_sound + SLEEP 92 + MOVK 4,A0 + CALLA RNDRNG0 + MOVE A0,A0 + JRNZ NO_SHOCKING + MOVI SHOCKING,A0 + CALLA IF_SILENT_ADD_VOICE +NO_SHOCKING + DIE + +************************************************************** +*CROWD TABLES + .WORD 3 +SETUP_TABLE + .WORD CROWD_CRESCENDO,D_CROWD_CRESCENDO,C_LONG|C_OVERIDE,0 + .WORD CROWD_OH_1,D_CROWD_OH_1,C_LONG|C_OVERIDE,0 + .WORD CROWD_HEY_LOOP,D_CROWD_HEY_LOOP,C_LONG|C_OVERIDE,0 + .WORD CROWD_YEAH_0,D_CROWD_YEAH_0,C_LONG|C_OVERIDE,0 + + .WORD 0 +CRESCENDO_TABLE + .WORD CROWD_CRESCENDO,D_CROWD_CRESCENDO,C_LONG|C_RANDOM,700 + + .WORD 2 +ROPES_CHEER + .WORD CROWD_WHISTLE_1,D_CROWD_WHISTLE_1,C_LONG|C_RANDOM,600 + .WORD CROWD_WHOA_1,D_CROWD_WHOA_1,C_LONG|C_RANDOM,600 + .WORD CROWD_OH_1,D_CROWD_OH_1,C_LONG|C_RANDOM,600 + + .WORD 2 +CROWD_FAIL + .WORD CROWD_OH_FAIL,D_CROWD_OH_FAIL,C_LONG|C_RANDOM,600 + .WORD CROWD_OH_0,D_CROWD_OH_0,C_LONG|C_RANDOM,600 + .WORD CROWD_BOO,D_CROWD_BOO,C_LONG|C_RANDOM,600 + + .WORD 2 +CROWD_SPECIAL + .WORD CROWD_OH_CHEER,D_CROWD_OH_CHEER,C_LONG|C_OVERIDE,0 + .WORD CROWD_HOORAY,D_CROWD_HOORAY,C_LONG|C_OVERIDE,0 + .WORD CROWD_VICTORY_LOOP,D_CROWD_VICTORY_LOOP,C_LONG|C_OVERIDE,0 + + .WORD 4 +CROWD_CHEER + .WORD CROWD_YEAH_0,D_CROWD_YEAH_0,C_LONG|C_RANDOM,600 + .WORD CROWD_WHISTLE_1,D_CROWD_WHISTLE_1,C_LONG|C_RANDOM,600 + .WORD CROWD_CHEER_0,D_CROWD_CHEER_0,C_LONG|C_RANDOM,600 + .WORD CROWD_CHEER_1,D_CROWD_CHEER_1,C_LONG|C_RANDOM,600 + .WORD CROWD_DOUBLE_WHOA,D_CROWD_DOUBLE_WHOA,C_LONG|C_RANDOM,600 + + .WORD 1 +CROWD_THROWN + .WORD CROWD_OH_CHEER,D_CROWD_OH_CHEER,C_SHORT|C_OVERIDE,0 + .WORD CROWD_WHISTLE_1,D_CROWD_WHISTLE_1,C_SHORT|C_OVERIDE,0 + + .WORD 1 +CROWD_ORDINARY + .WORD CROWD_OH_CHEER,D_CROWD_OH_CHEER,C_SHORT|C_OVERIDE|C_RANDOM,250 + .WORD CROWD_WHISTLE_1,D_CROWD_WHISTLE_1,C_SHORT|C_OVERIDE|C_RANDOM,250 + +**************************************************************************** +* SOUND VOLUME CONTROLS + +;A11 = WHICH CHANNEL, -1 = MASTER +;A8 = TICKS TO FADE OVER +FADE_MASTER_VOL + MOVI ADJVOLUME,A0 + CALLA GET_ADJ + BADCHK a0,0,255,28 ;reg, lo, hi, val if bad + MOVE A0,A9 + SLL 16,A9 + MOVE A9,A10 + DIVU A8,A9 +NEXT_FADE + SUB A9,A10 + MOVE A10,A0 + SRL 16,A0 + MOVE A11,A1 + CALLR SET_LOWER_VOL + SLEEPK 1 + DSJS A8,NEXT_FADE + CLR A0 + MOVE A11,A1 + CALLR SET_LOWER_VOL + DIE + +;A1 WHICH CHANNEL +;A0 WHAT TO SET CHANNEL VOL TO 255=100% +SET_LOWER_VOL + MOVI 55ABH,A3 + ADD A1,A3 + CALLA SNDSND + MOVE A0,A3 + SLL 8,A0 + NOT A3 + SLL 24,A3 + SRL 24,A3 + OR A0,A3 + CALLA SNDSND + RETS + + SUBR KILL_ALL_CHANNELS + CLR A0 + MOVE A0,@chan1dur + MOVE A0,@chan1pri + movi 994,a3 + calla SNDSND + MOVE A0,@chan2dur + MOVE A0,@chan2pri + movi 995,a3 + calla SNDSND + MOVE A0,@chan3dur + MOVE A0,@chan3pri + movi 996,a3 + calla SNDSND + MOVE A0,@chan4dur + MOVE A0,@chan4pri + movi 997,a3 + calla SNDSND + rets + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/DELETE.ASM b/DELETE.ASM new file mode 100755 index 0000000..00e68bf --- /dev/null +++ b/DELETE.ASM @@ -0,0 +1,15 @@ +;These are .ASM files that are no longer used but simply refuse to die. + +ADAMIMG.ASM +ADMSEQ1.ASM +ADMSEQ2.ASM +ADMSEQ3.ASM +BUG.ASM +COMMON.ASM +DELETE.ASM +HARTIMG.ASM +MAINIMG.ASM +ROPESIMG.ASM +TEMPLATE.ASM + + \ No newline at end of file diff --git a/DELETE.BAT b/DELETE.BAT new file mode 100755 index 0000000..0435f1c --- /dev/null +++ b/DELETE.BAT @@ -0,0 +1,23 @@ +del ATTRACT.IMG +del BLANK.IMG +del DCSLOGO.IMG +del DNKPIN.IMG +del NMATCH12.IMG +del NUFLOR.IMG +del PWRBARS.IMG +del REF_HIT.IMG +del REF_MSC.IMG +del REF_PNC.IMG +del REF_WLK.IMG +del SHIT.IMG +del SHIT2.IMG +del SHNGSUP.IMG +del SHNRUN.IMG +del SHN_JMS.IMG +del SIDEROPE.IMG +del SLATE.IMG +del TEMP.IMG +del WWFMUGS2.IMG +del XPLOSION.IMG + + \ No newline at end of file diff --git a/DELT.BAT b/DELT.BAT new file mode 100755 index 0000000..071a235 --- /dev/null +++ b/DELT.BAT @@ -0,0 +1,3 @@ +@echo off +del t\%1 + \ No newline at end of file diff --git a/DIAG.ASM b/DIAG.ASM new file mode 100755 index 0000000..e9236a0 --- /dev/null +++ b/DIAG.ASM @@ -0,0 +1,5503 @@ +************************************************************** +* +* Software: JAMIE BEGELMAN, KURT MAHAN, EUGENE P. JARVIS +* Initiated: ? +* +* Modified: Shawn Liptak, 11/14/91 -Total carnage clean up +* Shawn Liptak, 1/20/92 -DIP switch test +* Shawn Liptak, 1/24/92 -Added line_draw +* Shawn Liptak, 2/20/92 -Basketball cleanup +* GEORGE PETRO, 1/17/93 -NBA JAM +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 3/24/93 16:48 +************************************************************** + .width 132 + .option b,d,l,t + .mnolist + + + .include "gsp.equ" + .include "sys.equ" + .include mproc.equ + .include link.equ + .include imgtbl.glo + .include "macros.h" + .INCLUDE GAME.EQU + .INCLUDE DIP.EQU + + ;from DCSSOUND.ASM + .ref SNDSND + + .ref _tseconds + .ref _switch_map_mode + .ref _coin_addr + .ref _switch_addr + .ref _switch2_addr + .ref _watchdog_addr + .ref _dipswitch_addr + .ref _sound_addr + .ref _soundirq_addr + .ref _coin_counter_addr + .ref InitAddresses + .ref dec_to_asc + .ref copy_string,copy_rom_string + .ref concat_string + .ref message_buffer + .ref SOUNDSUP + .ref _rtc_seconds + .ref _rtc_minutes + .ref _rtc_hours + .ref _rtc_day + .ref _rtc_date + .ref _rtc_month + .ref _rtc_year + .ref _year + .ref _month + .ref _day + .ref _serial_number + .ref _man_date + + .globl _get_time + .globl _set_time + .globl _aquire_time + .globl SNDPROTOPROMPT + .globl SNDRELEASEPROMPT + .globl SNDTIMEOUT + + +SCRXFUDGE equ 56 +************************************************************************** +* * +* DEFS AND REFS * +* * +************************************************************************** + .ref fudge_switches, fudge_switches_diag, CPU_RET + .REF SNDSND,INTIO,WARMSET,GET_AUD,STORE_AUDIT,WDOGDIS + .ref AUD1, GAMSTATE, KILL_AUD, PCMOSRET + .ref CLR_AUD, FAC_SET, CMOS_VAL, ROM_NAME + + .DEF POWERTST, DIAGCPUTEST, POWERCMOS + .def SWITCHTEST, SWSET1, SWSET2 + .DEF CROSS_H,COL_BARS,BURN_IN,STRNEW1 + + .DEF CIRCLE,HVLINE,STRING,RECTANGLE,POINT,DSCRCLR,INITCOLR + .DEF READ_DIP + + .REF SNDTST + .REF SYSCOPY +*SYMBOLS IN MENU.ASM + .REF USA_1, USA_2, USA_3, USA_4, USA_ELECTITLE + .REF GERMAN_1, GERMAN_2, GERMAN_3, GERMAN_4, GERMAN_ELECTITLE + .REF FRENCH_1, FRENCH_2, FRENCH_3, FRENCH_4, FRENCH_ELECTITLE + .REF DIPCOINTAB + + + .REF GET_ADJ, GET_CSPT, NO_CREDS + .REF PUT_ADJ, CRED_P, HEXTOASC, F_ADC_S, SET_COIN_ADJ + .REF init_all, mainlp, DIAG_COLORS + +* +*DIAGNOSTIC SOUND EQUATES +* +CMOS_ERROR_SND .EQU 0203h +CPU_ERROR_SND .EQU 0203h +DIP_SND .EQU 0c8h +SWITCH_SND .EQU 0c8h + + .BSS SWSET1,32 ; FOR SWITCH TEST + .BSS SWSET2,32 + + .BSS DIPVAL,16 + .BSS DIP1ST,16 + + .BSS FORCEDIP,16 ; FOR FORCING THE USE OF THE DIP + .BSS CERRORS,32 + .BSS CPASSES,32 + .BSS SCHANGE,16 + .bss _snd_status,32 + .bss _b6_save,32 ; Temporary register fer me + .bss _temporary,32 ; Another temp fer me + .bss _snd_diag_code,16 ; Temporary storage for sound diag code + BSSX _snd_chip_count,16 ; Temporary register fer me + .bss _pic_raw,128 ; Stuff fer the PIC + .bss _pic_temp,64 + +************************************************************************** +* * +* USEFUL MACROS * +* * +************************************************************************** +* +* TIMED PAUSE +* +PAUSE .macro TIME, REG + MOVI :TIME:,:REG:,L +LABEL? NOP + DSJS :REG:,LABEL? + .endm + +*BIT SET +* BSET BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO SET BIT IN +* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY + +BSET .macro P1,R1 + MOVK 1,A14 + SLL :P1:,A14 + OR A14,:R1: + .endm + + +* +*RJST - RIGHT JUSTIFIES BITS IN A LONG WORD, I.E. RIGHTMOST BIT +* TO BIT POSITION 0 +* RJST REG +RJST .macro REG + MOVE :REG:,:REG: + JRZ MX? +MLP? + SRL 1,:REG: + JRNC MLP? + SLL 1,:REG: + ADDK 1,:REG: +MX? + .endm + + +BUT_MAC .macro X,Y,RADIUS,COLOR,MASK,SHIFT,EXTEND + .WORD :X: + .WORD :Y: + .WORD :RADIUS: + .LONG :COLOR: + .LONG :MASK: + .WORD :SHIFT: + .WORD :EXTEND: + .endm + +STR_MAC .macro X,Y,STRING,COLOR,DIR + .WORD :X: + .WORD :Y: + .LONG :STRING: + .WORD :COLOR: + .WORD :DIR: + .endm + +VECMAC .macro COLOR,X1,Y1,X2,Y2 + .WORD :COLOR: + .WORD :X1: + .WORD :Y1: + .WORD :X2: + .WORD :Y2: + .endm + +DOTMAC .macro COLOR,X,Y + .WORD :COLOR: + .WORD :X: + .WORD :Y: + .endm + +RECTMAC .macro COLOR,X,Y,W,H + .WORD :W: + .WORD :H: + .WORD :X: + .WORD :Y: + .WORD :COLOR: + .endm + +CHIPMAC .macro NUM,X1,Y1,X2,Y2,X3,Y3,STRING,DIR,X4,Y4,STUFFED + .WORD :NUM: + .WORD :X1: + .WORD :Y1: + .WORD :X2: + .WORD :Y2: + .WORD :X3: + .WORD :Y3: + .LONG :STRING: + .WORD :DIR: + .WORD :X4: + .WORD :Y4: + .WORD :STUFFED: + .endm + +CMNUM EQU 0 +CMLOC EQU CMNUM+16 +CMXLOC EQU CMLOC +CMYLOC EQU CMLOC+16 +CMSIZE EQU CMLOC+32 +CMXSIZE EQU CMSIZE +CMYSIZE EQU CMSIZE+16 +CMOFFSET EQU CMSIZE+32 +CMSTRING EQU CMOFFSET+32 +CMDIR EQU CMSTRING+32 +CMPINLOC EQU CMDIR+16 +CMSTUFFED EQU CMPINLOC+32 +CMEND EQU CMSTUFFED+16 + + +************************************************************************** +* * +* RAM_CHIP: MACRO DEFINES A RAM CHIP RECORD. * +* * +* CHIP_NO -- CHIP NUMBER * +* WIDTH -- CHIP CELL SIZE IN BITS (MUST BE > 0) * +* INTERLEAVE -- DISTANCE BETWEEN ADJACENT CELLS ON CHIP (IN BITS) * +* START_ADDR -- ADDRESS OF FIRST CELL ON CHIP * +* END_ADDR -- ADDRESS OF LAST CELL ON CHIP * +* * +************************************************************************** + +RAM_CHIP .macro TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR + + .WORD :WIDTH: + .WORD :INTERLEAVE: + .WORD :CHIP_NO: + .LONG :START_ADDR: + .LONG :END_ADDR: + .LONG :TAB_LINK: + .endm + +RAM_WDTH EQU 000H ; OFFSETS INTO RAM CHIP RECORD +RAM_ITLV EQU 010H +RAM_NMBR EQU 020H +RAM_SADR EQU 030H +RAM_EADR EQU 050H +RAM_LINK EQU 070H +RAM_SIZE EQU 090H + +ROM_CKSM EQU 000H +ROM_WDTH EQU 010H ; OFFSETS INTO ROM CHIP RECORD +ROM_ITLV EQU 020H +ROM_NMBR EQU 030H +ROM_SADR EQU 040H +ROM_EADR EQU 060H +ROM_LINK EQU 080H +ROM_SIZE EQU 0A0H + +**************************************************************************** +* ROM_CHIP: MACRO DEFINES A ROM CHIP RECORD. * +* * +* CHIP_NO -- CHIP NUMBER * +* WIDTH -- CHIP CELL SIZE IN BITS (MUST BE > 0) * +* INTERLEAVE -- DISTANCE BETWEEN ADJACENT CELLS ON CHIP (IN BITS) * +* START_ADDR -- ADDRESS OF FIRST CELL ON CHIP * +* END_ADDR -- ADDRESS OF LAST CELL ON CHIP * +* CHECK_SUM -- DATAIO CHECK SUM FOR CHIP * +**************************************************************************** + +ROM_CHIP .macro TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR, CHECK_SUM + + .WORD :CHECK_SUM: + .WORD :WIDTH: + .WORD :INTERLEAVE: + .WORD :CHIP_NO: + .LONG :START_ADDR: + .LONG :END_ADDR: + .LONG :TAB_LINK: + + .endm + + +RANDOM_SEED EQU 5A5A5A5Ah ; RAM TESTS: PSEUDO-RANDOM SEQUENCE +ZERO_EXTEND EQU 1Fh ; PARAMETERS +SIGN_EXTEND EQU 20h +PAL_SELECT EQU 0FFDCH ; ENABLE VIDEO PALETTE MAP ACCESS + + + .text + .even + + +************************************************************************** +* * +* POWERTST * +* * +* POWERUP SELF TEST ROUTINES * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** +POWERTST + dint + setf 16,1,0 + setf 32,0,1 + MOVI STCKST,SP,L + move @_watchdog_addr,a0,L + move a0,*a0 + +; HALT DMA AND ENABLE CACHE + + clr a14 + move a14,@DMACTRL + move a14,@DMACTRL + + FCALL INTIO,B6 + +; DISABLE VIDEO PALETTE RAMS, AUTOERASE AND ERROR LED + + MOVI SYSCINIT,A13 + MOVE A13,@SYSCTRL + + FCALL CPUTEST,SP + JAUC WARMSET + + + +**************************************************************************** +* * +* PIC SECURITY STUFF * +* * +* Security source for WWF-UNIT's PIC * +* * +* Version 1.00 * +* Written by: Michael J. Lynch * +* Copyright (c) 1995 by Williams Electronics Games Inc. * +* All rights reserved * +* * +* TTTTT OOO PPPP SSS EEEEE CCC RRRR EEEEE TTTTT * +* T O O P P S S E C C R R E T * +* T O O P P S E C R R E T * +* T O O PPPP SSS EEEE C RRRR EEEE T * +* T O O P S E C R R E T * +* T O O P S S E C C R R E T * +* T OOO P SSS EEEEE CCC R R EEEEE T * +* * +* * +* Company Confidential Information * +* NEED TO KNOW BASIS ONLY * +* * +* USE OR DISCLOSURE STRICTLY PROHIBITED UNLESS APPROVED IN WRITING FROM * +* WILLIAMS ELECTRONICS GAMES INC. * +* * +* Unapproved use or disclosure will result in severe torture!!!!! * +* * +**************************************************************************** + +; _pic_bin2bcd Converts a hex number in a7 to BCD and puts it in A3 +_pic_bin2bcd: + clr a3 + movi 100000,a0 +_bin2bcd_loop: + sll 4,a3 + move a7,a1 + divu a0,a1 + or a1,a3 + mpyu a0,a1 + sub a1,a7 + move a0,a1 + movk 10,a0 + divu a0,a1 + move a1,a0 + jrnz _bin2bcd_loop + FRET b6 + +****************************************************************************** +* * +* _bcd2hex - Converts a 32 bit (8 digit) BCD Number to Hexidecimal * +* * +* ENTRY * +* A0 - BCD Number to be converted * +* B6 - Return Address * +* * +* EXIT * +* A2 - Converted Number (hex) * +* * +* USES * +* A1 - Multiplier * +* A3 - Temporary * +* A4 - Digit Counter * +* * +* Written by: Michael J. Lynch * +* * +****************************************************************************** +_bcd2hex: + clr a2 ; Start with 0 + movk 1,a1 ; Starting Multiplier + movk 8,a4 ; Number of BCD digits to convert +_b2h_loop: ; Main BCD to hex conversion loop + move a0,a3 ; Put BCD number in temporary register + andi 0fh,a3 ; get rid of bits not interested in + mpyu a1,a3 ; multiply by current multiplier + add a3,a2 ; Accumulate into final register + srl 4,a0 ; Shift to next BCD digit + movk 10,a3 ; Calculate next multiplier (mult = mult * 10) + mpyu a3,a1 ; New Multiplier + dsjs a4,_b2h_loop ; Keep going until 8 BCD digits are done + FRET b6 ; return + +_read_pic_data: + setf 8,0 + setf 32,0,1 + movk 16,a9 ; Number of bytes of data to read + movi _pic_raw,a1 ; address at which to store raw data from PIC + movk 010h,a8 ; Send Request Serial Number Data Command + move a8,@PIC_COMMAND +_rp_data_loop: + setf 16,0 + clr a8 + move a8,@PIC_COMMAND + movi 1000000,a2 ; Wait for PIC to acknowledge +_rp_ack_loop: + move a2,a2 ; Check for command timeout + jrz gn_bad ; WOA PIC never acknowledged - ERROR!!!! + move @_watchdog_addr,a8,L + move a8,*a8 + move @_soundirq_addr,a8,L + move *a8,a8 + subi 1,a2 + btst 12,a8 ; Data available ? + jrnz _rp_ack_loop ; NO + setf 8,0 ; YES + move @PIC_DATA,a0 ; read data + move a0,*a1+ ; write to temp holding area + movk 010h,a8 ; Acknowledge reciept of data + setf 16,0 + move a8,@PIC_COMMAND + movi 1000000,a2 ; Wait for PIC n acknowlegde +_rp_nack_loop: + move a2,a2 + jrz gn_bad + move @_watchdog_addr,a8,L + move a8,*a8 + move @_soundirq_addr,a8,L + move *a8,a8 + subi 1,a2 + btst 12,a8 + jrz _rp_nack_loop + dsj a9,_rp_data_loop + clr a4 ; Holding Register for X + clr a5 ; Holding Register for Y + setf 8,0 + movi _pic_raw,a10 + addi 060h,a10 + move *a10+,a4 ; Get X + move *a10,a5 ; Get Y + setf 24,0 + clr a7 ; Calculate B-3-5-9 + movi _pic_raw,a10 + move *a10,a7 + subi 15732,a7 + movi 581,a0 + divu a0,a7 + sub a4,a7 ; B359 (binary) + FCALL _pic_bin2bcd,b6 ; B359 (bcd) a1 = B359 + setf 4,0 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addi 014h,a10 + move a0,*a10 ; Stuff the 5 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 0ch,a10 + move a0,*a10 ; Stuff the 3 + + + movi _pic_raw,a10 + addi 018h,a10 + move *a10,a7,1 ; Calculate 2-A-0-8-6 + subi 7463513,a7 + movi 4223,a0 + divu a0,a7 + sub a5,a7 + sub a5,a7 + sub a4,a7 ; 2A086 (binary) + FCALL _pic_bin2bcd,b6 ; 2A086 (bcd) + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 018h,a10 + move a0,*a10 ; Stuff the 6 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addi 020h,a10 + move a0,*a10 ; Stuff the 8 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + move a0,*a10 ; Stuff the 0 + srl 8,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 8,a10 + move a0,*a10 ; Stuff the 2 + + + setf 24,0 ; Calcuate 1-7-4 + movi 038h,a10 + addi _pic_raw,a10 + move *a10,a7 + subi 127984,a7 + movi 7117,a0 + divu a0,a7 + sub a5,a7 + sub a5,a7 + sub a5,a7 + sub a5,a7 + sub a5,a7 ; 174 (binary) + FCALL _pic_bin2bcd,b6 ; 174 (bcd) a1 = 174 + setf 4,0 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 010h,a10 + move a0,*a10 ; Stuff the 4 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 01ch,a10 + move a0,*a10 ; Stuff the 7 + srl 4,a3 + move a3,a0 + andi 0fh,a0 + movi _pic_temp,a10 + addk 4,a10 + move a0,*a10 ; Stuff the 1 + + setf 16,0 + movi 050h,a10 + addi _pic_raw,a10 + move *a10,a0 ; This is a pointer to the date code + move *a10,a1 + sll 8,a1 + srl 8,a0 + andi 0ffh,a0 + andi 0ff00h,a1 + or a1,a0 + move a0,@_man_date,L + + setf 4,0 + movi _pic_temp,a10 + addk 0ch,a10 + move *a10+,a0 ; Most Significant Digit (serial number) + sll 4,a0 + move *a10+,a1 + or a1,a0 + sll 4,a0 + move *a10+,a1 + or a1,a0 + sll 4,a0 + move *a10+,a1 + or a1,a0 + sll 4,a0 + move *a10+,a1 + or a1,a0 + sll 4,a0 + move *a10+,a1 ; Least Significant Digit (serial number) + or a1,a0 + FCALL _bcd2hex,b6 ; Convert to hex (a2 = serial # hex) + move a2,@_serial_number,L + + setf 4,0 + movi _pic_temp,a10 + move *a10+,a0 ; Most Significant Digit (game number) + sll 4,a0 + move *a10+,a1 + or a1,a0 + sll 4,a0 + move *a10+,a1 ; Least Significant Digit (game number) + or a1,a0 + FCALL _bcd2hex,b6 ; Convert to hex + + clr a1 + cmpi 528,a2 ; Development PIC Game Number + jrz gn_good + cmpi 430,a2 ; Real Game Number (WrestleMania) + jrz gn_good +gn_bad: + movi SEC_MESS_2,a0 ; Level 2 Security Check failure + FCALL STRINGCENTER,b6 + addi [220,0],a1 + clr a2 + movi COLOR_RED,a3 + FCALL STRING,b6 + LOCKUP +gn_good: + setf 8,0 ; Stomp on memory used to decode PIC + clr a0 + movi 16,a1 + movi _pic_raw,a2 +_stomp_temp: + move a0,*a2+ + dsjs a1,_stomp_temp + movi 8,a1 + movi _pic_temp,a2 +_stomp_temp1: + move a0,*a2+ + dsjs a1,_stomp_temp1 + setf 16,1,0 ;Field0 = Word sign extend + setf 32,0,1 ;Field1 = Long word + rets + + +************************************************************************** +* * +* POWERCMOS * +* * +* CHECK THE CMOS AND DO A LOT OF OTHER STUFF -- SHOW THE * +* POWER UP MESSAGES * +* * +* ENTRY NOTHING * +* EXIT NOTHING * +* * +************************************************************************** +POWERCMOS: + DINT + MOVI SYSCINIT,A1 + MOVE A1,@SYSCTRL,W + + CALLA WDOGDIS ; GET RID OF WATCH DOG + + CLR A13 ; USED TO DECIDE WHETHER PAUSE OR NOT + MOVE A13,@DMACTRL,W + MOVE A13,@DMACTRL,W + FCALL INITCOLR,B5 ; FIX UP THE COLORS + FCALL INTIO,B6 + FCALL DSCRCLR,B6 ; MAKE SURE OF SCREEN + MOVI ROM_NAME,A0 + FCALL STRINGCENTER,B6 ; GET WIDTH OF STRING + ADDI [30,0],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + callr _read_pic_data + movi 05018h,a13 ; Palette 128 match color (BLACK) + move a13,@VMUX_BREG1,W + movi 08080h,a13 ; Set Palette # to 128 + move a13,@DMACMAP,W + movi SEC_MESS_1,a0 ; Print the message (won't show up) + FCALL STRINGCENTER,b6 ; Note - only shows up on pirate + addi [210,0],a1 ; hardware + clr a2 + movi COLOR_RED,a3 + FCALL STRING,b6 + clr a13 ; Set palette # back to 0 + move a13,@DMACMAP,W + + movi SNDREVPROMPT,a0 ; Sound Revision Prompt + FCALL STRINGCENTER,b6 + addi [120,0],a1 + clr a2 + movi COLOR_PURPLE,a3 + FCALL STRING,b6 + move @_watchdog_addr,a0,L + move a0,*a0,W + move @_coin_counter_addr,a0,L + movi 030h,a1 ; Yank down the reset + move a1,*a0,W + movi 10000,a1 ; Hold it fer a while + dsjs a1,$ + movi 020h,a1 ; Let it go + move a1,*a0,W + movi 10000,a1 + dsjs a1,$ + move @_sound_addr,a0,L ; Bypass the diags + movb a0,*a0 + move @_watchdog_addr,a0,L ; Kill the dog + move a0,*a0,W + movi 500000,a1 ; Wait fer a while +_swait_lp + move @_watchdog_addr,a0,L + move *a0,a0,W + dsjs a1,_swait_lp + clr a3 ; Turn on the sounds + move a3,@SOUNDSUP,W + movi 999,a3 ; Send revision request sound call + calla SNDSND + movi 1000000,a2 +_sndrev_loop + move @_watchdog_addr,a0,L + movb a0,*a0 + move @_soundirq_addr,a0,L ; Wait fer a response + move *a0,a1,W + btst B_SDAV,a1 ; Got a response ? + jrz _snd_response ; BR = yes + dsjs a2,_sndrev_loop +_snd_timeout + movi SNDTIMEOUT,a0 ; If we get here we never got a response + FCALL STRINGCENTER,b6 ; Tell operator about it + addi [135,0],a1 + clr a2 + movi COLOR_RED,a3 + FCALL STRING,b6 + jruc _sndrev_done ; Then we be done +_snd_response + move @_sound_addr,a0,L ; Get sound revision data + move *a0,a0,W + move a0,@_snd_chip_count,W ; Put up sound revision + move a0,a1 + andi 0ffh,a1 + cmpi 0ffh,a1 + jrz _snd_timeout + andi 0f0h,a1 + cmpi 0d0h,a1 + jrz _proto_version + movi SNDRELEASEPROMPT,a4 + jruc _do_snd_version +_proto_version + movi SNDPROTOPROMPT,a4 +_do_snd_version + calla copy_rom_string + move @_snd_chip_count,a0,W + andi 0fh,a0 + movk 15,a1 + calla dec_to_asc + calla concat_string + movi message_buffer,a0 + FCALL STRINGCENTER,b6 + addi [135,0],a1 + clr a2 + movi COLOR_WHITE,a3 + FCALL STRING,b6 +_sndrev_done + + movi GAMESNPROMPT,a0 ; Put up Game Serial number + FCALL STRINGCENTER,b6 + addi [160,0],a1 + clr a2 + movi COLOR_PURPLE,a3 + FCALL STRING,b6 + move @_serial_number,a0,L ; Serial number put here by _get_serial_number + movi 1000000,a1 + calla dec_to_asc + calla copy_string + movi message_buffer,a0 + FCALL STRINGCENTER,b6 + addi [175,0],a1 + clr a2 + movi COLOR_WHITE,a3 + FCALL STRING,b6 + + CALLA CMOS_VAL ; CHECKSUM AUDITS/ADJUSTMENTS + JREQ CMOSOK +* +* BAD CHECKSUM ON POWERUP ----> FACTORY SET +* +; CALLA RES_ALL ;ALL TIME TABLE + clr a0 ;Full + CALLA FAC_SET + CALLA CLR_AUD + + MOVK 1,A13 ; FLAG ERROR + CALLA CMOS_VAL ; TRY AGAIN + JREQ CMOSB1 ; BR = OK WE'RE IN + + MOVI CMOS_BAD,A0 + FCALL STRINGCENTER,B6 + ADDI [50,0],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + MOVI CMOS_UNFAC,A0 + FCALL STRINGCENTER,B6 + ADDI [65,0],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + JRUC CMOS1 +CMOSB1 + MOVI CMOS_FACRES,A0 + FCALL STRINGCENTER,B6 + ADDI [50,0],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + JRUC CMOS1 +CMOSOK + MOVI CMOS_OK,A0 + FCALL STRINGCENTER,B6 + ADDI [50,0],A1 + CLR A2 + MOVI COLOR_GREEN,A3 + FCALL STRING,B6 + +CMOS1 + CALLA CRED_P ;CHECK OUT CREDITS, THIS WILL CLEAR + ;IF NECESSARY. THANX LINKY! + + CALLR READ_DIP + ANDI DPUSECMOS,A0 + JRNZ CMOS3 ; BR = USING CMOS COINAGE + + MOVI CMOS_DIP,A0 + FCALL STRINGCENTER,B6 + ADDI [75,0],A1 + CLR A2 + MOVI COLOR_WHITE,A3 + FCALL STRING,B6 + + CALLR SET_DIP_COINAGE + JRUC CMOS4 + +CMOS3 +; +; USING CMOS HERE +; + MOVI CMOS_CMOS,A0 + FCALL STRINGCENTER,B6 + ADDI [75,0],A1 + CLR A2 + MOVI COLOR_WHITE,A3 + FCALL STRING,B6 +CMOS4 + move @_coin_addr,a0,L + move *a0,a0,W + not a0 + andi 8h,a0 + JRZ CMOSRET + MOVI CMOS_TILT,A0 + FCALL STRINGCENTER,B6 + ADDI [205,0],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + MOVK 1,A13 ; FLAG ERROR +CMOSRET + MOVE A13,A13 + JRZ CTMP0 + + MOVI CMOS_ERROR_SND,A0 + move @_sound_addr,a13,L + move a0,*a13,W + + MOVI CMOS_WAIT,A0 + FCALL STRINGCENTER,B6 + ADDI [230,0],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + CALLA WDOGDIS ; DISABLE WOOF WOOF + + CALLA fudge_switches ;get fudged switches in a0 + andi BUTTONS|START_BITS,a0 + MOVE A0,@SWSET1,L +CTMP1 + move @_watchdog_addr,a0,L + move a0,*a0 + CALLA fudge_switches ;get fudged switches in a0 + andi BUTTONS|START_BITS,a0 + MOVE @SWSET1,A1,L + CMP A0,A1 + JRZ CTMP1 + JRUC CTMP2 +CTMP0 + MOVI 200H,A0 +CTMP_WAIT + move @_watchdog_addr,a1,L + move a1,*a1 + + +;FIX - Temp!!!!! +;FIX - Speed up warm reset - Replace when we ship! +; .if DEBUG +; .else + PAUSE 1000H,B6 + PAUSE 2000h,B6 ;Go fast + DSJS A0,CTMP_WAIT +; .endif + +CTMP2 + move @_serial_number,b5,L + move @_man_date,b6,L + JAUC PCMOSRET + + +SNDREVPROMPT + .string "SOUND SYSTEM VERSION",0 + .even +SNDPROTOPROMPT + .string "PROTO ",0 + .even +SNDRELEASEPROMPT + .string "RELEASE ",0 + .even +SNDTIMEOUT + .string "TIMEOUT ON RESPONSE FROM SOUND SECTION",0 + .even +GAMESNPROMPT + .string "GAME SERIAL NUMBER",0 + .even + +CMOS_TILT + .STRING "WARNING -- SLAM SWITCH CLOSED",0 + .EVEN + +CMOS_DIP + .STRING "USING DIPSWITCH COINAGE",0 + .EVEN + +CMOS_CMOS + .STRING "USING CMOS COINAGE",0 + .EVEN + +CMOS_WAIT + .STRING "ERRORS DETECTED -- ANY BUTTON TO CONTINUE",0 + .EVEN + +CMOS_FACRES + .STRING "CMOS INVALID -- FACTORY SETTINGS RESTORED",0 + .EVEN + +CMOS_BAD + .string "CMOS CHIP U62 BAD",0 + .EVEN + +CMOS_UNFAC + .STRING "UNABLE TO RESTORE FACTORY SETTINGS",0 + .EVEN + +CMOS_OK + .STRING "CMOS OK",0 + .EVEN + +************************************************************************** +* * +* BURNIN * +* * +* FACTORY BURNIN TEST -- EXITS BY RESETING THE GAME * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* NOTHING * +* * +* CALL * +* JAUC * +* * +************************************************************************** + +BURN_IN: + DINT + MOVI AUDAUTO,A0 ;ZERO OUT BURNIN AUDIT + CALLA KILL_AUD +BURNLOOP + CALLA WDOGDIS ;MAKE SURE THE DOG IS ASLEEP + FCALL CPUTEST,SP +BURNSP: + setf 16,1,0 + setf 32,0,1 + MOVI STCKST,SP,L ;RESTORE THE STACK PTR + MOVI SYSCINIT,A0 ;RE-INITIALIZE SYSTEM CONTROL + MOVE A0,@SYSCTRL,W + MOVE A0,@SYSCOPY,W ;KEEP A COPY IN RAM + MOVI AUDAUTO,A0 + CALLA AUD1 ;ANOTHER ONE WORKED + JRUC BURNLOOP + +************************************************************************** +* * +* DIAGCPUTEST * +* * +* DIAGNOSTIC CALL FOR THE CPU TEST * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* JUMPS TO *EXEC_LP* AFTER SETTING EVERYTHING UP * +* * +* CALL * +* JAUC * +* * +************************************************************************** + +DIAGCPUTEST: + CALLA WDOGDIS + DINT + calla InitAddresses ; Make sure I/O addresses are initialized + FCALL CPUTEST,SP +DIAGSP: + SETF 16,1,0 ; WORD NO SIGN EXTEND + SETF 32,0,1 ; LONG WORD + MOVI STCKST,SP,L + CALLA init_all + + callr _read_pic_data + + CALLA DIAG_COLORS ;FIRE UP THE COLORS + + CREATE DIAG_PID,CPU_RET + MOVI INDIAG,A0 + MOVE A0,@GAMSTATE,W + movk 1,a0 ; Menu driver switch mapping mode + move a0,@_switch_map_mode,L + calla InitAddresses + JAUC mainlp + +**************************************** +* bin2bcd - Converts binary number pointed to by a0 to bcd and stores it back +* into area pointed to by a0. +* + SUBR bin2bcd + mmtm sp,a0,a1,a2,a3 + move *a0,a2,W + move a2,a1 + movi 10,a3 + divu a3,a1 + sll 4,a1 + movi 10,a3 + modu a3,a2 + or a2,a1 + move a1,*a0,W + mmfm sp,a0,a1,a2,a3 + rets + +********************************************************* +* _set_time - Sets the real time clock based on values in +* _rtc_seconds +* _rtc_minutes +* _rtc_hours +* _rtc_day +* _rtc_date +* _rtc_month +* _rtc_year +* Time is set through the PIC. + SUBR _set_time + mmtm sp,a0,a1,a2,a3,a4 + movi _rtc_seconds,a0,L + movi 7,a4 +_st_cnvt_loop + callr bin2bcd + addk 16,a0 + dsjs a4,_st_cnvt_loop + movi 14,a4 + movi _rtc_seconds,a3,L + pushst + dint + movi 012h,a0 + move a0,@PIC_COMMAND,W +_st_next_val + movk 2,a0 + move a0,@PIC_COMMAND,W + movi 1000000,a1 +_st_ack_wait + move @_watchdog_addr,a2,L + move a2,*a2,W + move @_soundirq_addr,a2,L + move *a2,a2,W + btst 12,a2 + jrz _got_st_ack + dsjs a1,_st_ack_wait + jruc _st_done +_got_st_ack + pushst + setf 4,0 + move *a3,a1,0 + popst + move a1,@PIC_COMMAND,W + ori 010h,a1 + move a1,@PIC_COMMAND,W + addk 4,a3 + btst 3,a3 + jrz _addr_ok + addk 8,a3 +_addr_ok + movi 1000000,a0 +_st_nack_wait + move @_watchdog_addr,a2,L + move a2,*a2,W + move @_soundirq_addr,a2,L + move *a2,a2,W + btst 12,a2 + jrnz _got_st_nack + dsjs a0,_st_nack_wait + jruc _st_done +_got_st_nack + dsj a4,_st_next_val +_st_done + popst + mmfm sp,a0,a1,a2,a3,a4 + rets + +******************************************** +* bcd2hex - Converts 2 digit BCD number in a1 to hex and stores back in a1 +* + SUBR bcd2hex + mmtm sp,a0,a3 + move a1,a2 + movk 10,a3 + andi 0f0h,a1 + srl 4,a1 + mpyu a3,a1 + andi 0fh,a2 + add a2,a1 + mmfm sp,a0,a3 + rets + +*********************************************** +* _aquire_time - Time aquisition trigger function called in the DIRQ +* Starts the acquisition of time information from the +* Real Time Clock (RTC). The time information is transfered +* from the RTC to the PIC by the PIC. This is done this way +* because the RTC to PIC interface is an I2C bus interface +* and requires approximately 3 ms to transfer the data from +* the RTC to the PIC. This function is called by the DIRQ +* every 27 ticks (495ms) and then on the next DIRQ the function +* to transfer the time information from the PIC to this +* application is called. This prevents this application from +* being bogged down while the time information is being +* moved from the RTC to the PIC. + SUBR _aquire_time + mmtm sp,a0,a1 + movi 011h,a0 ;Command code 0x1 + move a0,@PIC_COMMAND,W +_at_next_byte + movi 01h,a0 + move a0,@PIC_COMMAND,W + movi 100000,a0 ;Wait for Acknowledge +_at_ack_wait + move @_watchdog_addr,a1,L + move a1,*a1,W + move @_soundirq_addr,a1,L + move *a1,a1,W + btst 12,a1 + jrz _got_at_ack + dsjs a0,_at_ack_wait + jruc _at_done +_got_at_ack + movi 010h,a1 + move a1,@PIC_COMMAND,W ;Take away Request +_at_done + mmfm sp,a0,a1 + rets + +************************************************* +* _get_time - This function transfers the time information that was extracted +* from the RTC by the PIC from the PIC to some global memory +* area for use by this application. The time information is +* stored in hexidecimal word sized global values as follows +* +* _tseconds (0-59) Current seconds +* _tminutes (0-59) Current minutes +* _thours (0-23) Current hours +* _tday (1-7) Current Day (1=Sunday, 7=Saturday) +* _tdate (1-31) Current Date +* _tmonth (1-12) Current Month (1=January, 12=December) +* _tyear (0-99) Current Last 2 Digits of year + SUBR _get_time + mmtm sp,a0,a1,a2,a3 + movk 8,a3 ;Number of bytes of data to get + movi _tseconds,a2 + movi 013h,a0 ;Command code 0x3 + move a0,@PIC_COMMAND,W +_gt_next_byte + movi 03h,a0 + move a0,@PIC_COMMAND,W + movi 100000,a0 ;Wait for Acknowledge +_get_time_data_wait + move @_watchdog_addr,a1,L + move a1,*a1,W + move @_soundirq_addr,a1,L + move *a1,a1,W + btst 12,a1 + jrz _got_gt_ack + dsjs a0,_get_time_data_wait + cmpi 1,a3 + jrz _get_time_adjust + movk 1,a0 + jruc _get_time_done +_got_gt_ack + move @PIC_DATA,a0,W ;Read the data + movi 010h,a1 + move a1,@PIC_COMMAND,W ;Tell PIC we took data + andi 0ffh,a0 + move a0,*a2+,W + movi 100000,a0 +_gt_wait_nack + move @_watchdog_addr,a1,L + move a1,*a1,W + move @_soundirq_addr,a1,L + move *a1,a1,L + btst 12,a1 + jrnz _got_gt_nack + dsjs a0,_gt_wait_nack +_got_gt_nack + dsj a3,_gt_next_byte +_get_time_adjust + movi _tseconds,a0,L + move *a0,a1,W ;Mask off unused bits for seconds + andi 07fh,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnn _chk_seconds59 + clr a1 + jruc _seconds_ok +_chk_seconds59 + cmpi 60,a1 + jrlt _seconds_ok + clr a1 +_seconds_ok + move a1,*a0+,W + move *a0,a1,W ;Mask off unused bits for minutes + andi 07fh,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnn _chk_minutes59 + clr a1 + jruc _minutes_ok +_chk_minutes59 + cmpi 60,a1 + jrlt _minutes_ok + clr a1 +_minutes_ok + move a1,*a0+,W + move *a0,a1,W ;Mask off unused bits for hours + andi 03fh,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnn _chk_hours23 + clr a1 + jruc _hours_ok +_chk_hours23 + cmpi 24,a1 + jrlt _hours_ok + clr a1 +_hours_ok + move a1,*a0+,W + move *a0,a1,W ;Mask off unused bits for day + andi 07h,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnz _chk_day7 + movk 1,a1 + jruc _day_ok +_chk_day7 + cmpi 8,a1 + jrlt _day_ok + movk 1,a1 +_day_ok + move a1,*a0+,W + move *a0,a1,W ;Mask off unused bits for date + andi 03fh,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnz _chk_date31 + movk 1,a1 + jruc _date_ok +_chk_date31 + cmpi 32,a1 + jrlt _date_ok + movk 1,a1 +_date_ok + move a1,*a0+,W + move *a0,a1 ;Mask off unused bits for month + andi 01fh,a1 + callr bcd2hex ;Convert to hex + move a1,a1 + jrnz _chk_month12 + movk 1,a1 + jruc _month_ok +_chk_month12 + cmpi 13,a1 + jrlt _month_ok + movk 1,a1 +_month_ok + + move a1,*a0+,W + move *a0,a1,W + callr bcd2hex ;Convert to hex + move a1,a1 + jrnn _chk_year99 + clr a1 + jruc _year_ok +_chk_year99 + cmpi 100,a1 + jrlt _year_ok + clr a1 +_year_ok + move a1,*a0,W + clr a0 ;All bits used for year +_get_time_done + mmfm sp,a0,a1,a2,a3 + rets + +*********************************************** +* PICCHECK - Power up test for the PIC MicroController +* Checks basic communications with the PIC chip +* +PICCHECK + movi 1fh,a0 ;Command code 0xf + move a0,@PIC_COMMAND,W + movi 0fh,a0 + move a0,@PIC_COMMAND,W + movi 100000,a0 ;Wait for Acknowledge +pic_loop + move @_watchdog_addr,a1,L + move a1,*a1,W + move @_soundirq_addr,a1,L + move *a1,a1,W + btst 12,a1 + jrz _got_pic_ack ;BR = got acknowledge + dsjs a0,pic_loop + movk 1,a0 + jruc _piccheck_done +_got_pic_ack + move @PIC_DATA,a0,W ;Read the data + movi 010h,a1 + move a1,@PIC_COMMAND,W ;Tell PIC we took data + movi 100000,a1 +_pic_nack_loop + move @_watchdog_addr,a2,L + move a2,*a2,W + move @_soundirq_addr,a2,L + move *a2,a2,W + btst 12,a2 + jrnz _got_pic_nack + dsjs a1,_pic_nack_loop + movk 1,a0 + jruc _piccheck_done +_got_pic_nack + andi 0fh,a0 + cmpi 0fh,a0 + jrz _pic_ok + movk 1,a0 + jruc _piccheck_done +_pic_ok + clr a0 +_piccheck_done + FRET b5 + +*************************************************** +* SNDCHECK - Sound Subsystem Check during CPUTEST +* +SNDCHECK + move b6,@_b6_save,L + move @_coin_counter_addr,a0,L + movi 030h,a1 + move a1,*a0,W + movi 8,a1 + dsjs a1,$ + movi 020h,a1 + move a1,*a0,W + movi 1000000,a1 +dsp_loop1 + move @_watchdog_addr,a0,L + move a0,*a0,W + move @_soundirq_addr,a0,L + move *a0,a2,W + btst B_SDAV,a2 + jrz dsp_lp1_exit + dsjs a1,dsp_loop1 + movi DSP,a10 + movk 1,a0 + move a0,a11 + inc a11 + FCALL CHIPOUT,b5 + movk 1,a0 + jruc dspcheck_done +dsp_lp1_exit + move @_sound_addr,a0,L + move *a0,a0,W + andi 0ffh,a0 + cmpi 079h,a0 + jrz dsp_next_byte + movi DSP,a10 + movk 1,a0 + move a0,a11 + inc a11 + FCALL CHIPOUT,b5 + movk 1,a0 + jruc dspcheck_done +dsp_next_byte + movi 10000000,a1 +dsp_loop2 + move @_watchdog_addr,a0,L + move a0,*a0,W + move @_soundirq_addr,a0,L + move *a0,a2,W + btst B_SDAV,a2 + jrz dsp_lp2_exit + dsjs a1,dsp_loop2 + movi DSP,a10 + movk 1,a0 + move a0,a11 + inc a11 + FCALL CHIPOUT,b5 + movk 1,a0 + jruc dspcheck_done +dsp_lp2_exit + movi DSP,a10 + clr a0 + move a0,a11 + inc a11 + FCALL CHIPOUT,b5 + move @_sound_addr,a0,L + move *a0,a0,W + andi 0ffh,a0 + move a0,a14 + clr a0 + move a0,a0 + jrz dsp_ok + movk 1,a0 + jruc dspcheck_done +dsp_ok + clr a0 + move a0,@_snd_status,L + subi 2,a14 + move a14,@_snd_diag_code,W + clr a14 + move a14,@_snd_chip_count,W + movi SROMTAB,a12,L +snd_romok_loop + move *a12+,a10,L + jrz sndrom_done + move @_snd_chip_count,a14,W + move @_snd_diag_code,a11,W + cmp a11,a14 + jrnz sndchip_ok + movk 2,a11 + move a11,@_snd_status,L + jruc snd_chip_out +sndchip_ok + movk 1,a11 +snd_chip_out + addk 1,a14 + move a14,@_snd_chip_count,W + FCALL CHIPOUT,b5 + move @_snd_status,a11,L + jrz snd_romok_loop + movk 1,a0 + jruc dspcheck_done +sndrom_done + movi SNDRAMTAB,a12,L +snd_ramok_loop + move *a12+,a10,L + jrz sndram_done + move @_snd_diag_code,a14,W + cmpi 8,a14 + jrnz sndram_ok + movk 2,a11 + move a11,@_snd_status,L + jruc snd_ram_out +sndram_ok + movk 1,a11 +snd_ram_out + FCALL CHIPOUT,b5 + move @_snd_status,a11,L + jrz snd_ramok_loop + movk 1,a0 + jruc dspcheck_done +sndram_done + clr a0 +dspcheck_done + movi 1000000,a1 +dspcheck_wait_exit_loop + move @_watchdog_addr,a2,L + move a2,*a2,W + dsjs a1,dspcheck_wait_exit_loop + move @_b6_save,b6,L + FRET b6 + +************************************************************************** +* * +* CPUTEST * +* * +* THE ACTUAL CPU TEST STUFF * +* * +* ENTRY * +* SP RETURN ADDRESS * +* * +* EXIT * +* WHO KNOWS * +* * +* CALL * +* FCALL CPUTEST,SP * +* * +************************************************************************** + +CPUT_X .EQU 180 ;TEXT X POSITION +CPUT_Y1 .EQU 118 ;TEXT ROW 1 Y POSITION +CPUT_Y2 .EQU 130 ;TEXT ROW 2 Y POSITION +CPUT_Y3 .EQU 142 ;TEXT ROW 3 Y POSITION +CPUT_CLRS .EQU [CPUT_Y3-CPUT_Y1+10,389-CPUT_X] + +CPUT_CLR .EQU [CPUT_Y1,CPUT_X] ;CLEAR START + +CPUTEST: + move sp,a1 + movi STCKST,sp ; Set up a temporary stack + calla InitAddresses ; Reset the I/O Addresses + move a1,sp + move @_watchdog_addr,a0,L + move a0,*a0 + FCALL INITCOLR,B5 ;HEY! IT LOOKS BETTER THIS WAY + FCALL DSCRCLR,B6 ;BLOW THE SCREEN OR IT LOOKS TOO UGLY + + CLR B0 + + .if WWFUNIT + movi SYSCINIT,a13 + .else + MOVI 0FFFCH,A13 + .endif + + MOVE A13,@SYSCTRL,W ;MAKE SURE WE'RE WRITING TO BIT MAP + MOVI VRAMCHIPS,A14 ;VERIFY BIT MAP + FCALL RAMCHECK,B5 + +; ENABLE VIDEO PALETTE MAP ACCESS + + + .if WWFUNIT + + movi SYSCINIT,a13 + andni PALENB,a13 + + .else + MOVI PAL_SELECT,A13 + .endif + + MOVE A13,@SYSCTRL,W + MOVI PALCHIPS,A14 ;VERIFY OBJECT PALETTE RAM + FCALL RAMCHECK,B5 + MOVE B0,A12 + +; DISABLE VIDEO PALETTE MAP ACCESS + + + .if WWFUNIT + movi SYSCINIT,a13 + .else + MOVI 0FFFCH,A13 + .endif + + MOVE A13,@SYSCTRL,W + FCALL INITCOLR,B5 ;RELOAD THE COLORS + FCALL DSCRCLR,B6 + + FCALL CPUDRAW,B5 ;SHOW THE CPU + MOVI CPU,A10 ;WE GOT THIS FAR, CPU MUST BE OK + MOVI 1,A11 + FCALL CHIPOUT,B5 + + MOVI VRAMTAB,A9 + FCALL CHIPTABLE,B5 ;PLOT OUT THE CHIP TABLE + + MOVE A12,A12 + JRZ PSRAMCK +PBADRAM + MOVI RAMBADMESS,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + JRUC PCPUBAD + +PSRAMCK + MOVI SRAMCHECK,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + CLR B0 + MOVI SRAMCHIPS,A14 ;VERIFY SCRATCH RAMS + FCALL RAMCHECK,B5 + MOVE B0,A12 + move sp,a1 + movi STCKST,sp ; Set up a temporary stack + calla InitAddresses ; Reset the I/O Addresses + move a1,sp + + MOVI CPUT_CLR,A0 + MOVI CPUT_CLRS,A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + + MOVE A12,A12 + JRNZ PBADRAM +PROMCK + MOVI ROMCMESS,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + MOVI CPUEXIT1_MESS,A0 + MOVI [CPUT_Y2,CPUT_X],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + MOVI CPUEXIT2_MESS,A0 + MOVI [CPUT_Y3,CPUT_X],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + CLR B0 ;KEEP THE STATS HERE + + MOVI PROMCHIPS,A14 + FCALL ROMCHECK,B5 + jrnz PROMABORT + + MOVI IROMCHIPS_8MEG,A14 + FCALL ROMCHECK,B5 + jrnz PROMABORT + movi SYSCINIT,a14 + ori 0100h,a14 + move a14,@SYSCTRL,W ; Image IROM bank 1 + movi IROMCHIPS1_8MEG,a14 + FCALL ROMCHECK,b5 + jrnz PROMABORT + + move b0,a12 + movi CPUT_CLR,a0 + movi CPUT_CLRS,a1 + movi COLOR_BLACK,a2 + FCALL RECTANGLE,b6 + movi SYSCINIT,a14 + move a14,@SYSCTRL,W ; Back to IROM bank 0 + move a12,a12 + jrnz PBADROM +PROMABORT + movi SYSCINIT,a14 + move a14,@SYSCTRL,W ; Back to IROM bank 0 + MOVE B0,A12 + MOVI CPUT_CLR,A0 + MOVI CPUT_CLRS,A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + + MOVE A12,A12 + +*WE CHECK ON THE DMA HERE +PDMACK + MOVI DMACMESS,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_YELLOW,A3 + FCALL STRING,B6 + + FCALL DMACHECK,B5 ;CHECK THE DMA + MOVI DMA,A10 + MOVE A0,A11 + MOVE A0,A12 + INC A11 ;GREEN/RED + FCALL CHIPOUT,B5 + + MOVI CPUT_CLR,A0 + MOVI CPUT_CLRS,A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + + MOVE A12,A12 + jrnz PBADDMA + movi SNDCMESS,a0 + movi [CPUT_Y1,CPUT_X],a1 + clr a2 + movi COLOR_YELLOW,a3 + FCALL STRING,b6 + FCALL SNDCHECK,b6 + move a0,a12 + movi CPUT_CLR,a0 + movi CPUT_CLRS,a1 + movi COLOR_BLACK,a2 + FCALL RECTANGLE,b6 + move a12,a12 + jrnz PBADSND + + movi PICCMESS,a0 + movi [CPUT_Y1,CPUT_X],a1 + clr a2 + movi COLOR_YELLOW,a3 + FCALL STRING,b6 + FCALL PICCHECK,b5 + movi PIC,a10 + move a0,a11 + move a0,a12 + inc a11 + FCALL CHIPOUT,b5 + movi CPUT_CLR,a0 + movi CPUT_CLRS,a1 + movi COLOR_BLACK,a2 + FCALL RECTANGLE,b6 + move a12,a12 + JRZ PCPUGOOD + movi PICBADMESS,a0 + movi [CPUT_Y1,CPUT_X],a1 + clr a2 + movi COLOR_RED,a3 + FCALL STRING,b6 + jruc PCPUBAD +PBADSND + movi SNDBADMESS,a0 + movi [CPUT_Y1,CPUT_X],a1 + clr a2 + movi COLOR_RED,a3 + FCALL STRING,b6 + jruc PCPUBAD +PBADDMA + MOVI DMABADMESS,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + JRUC PCPUBAD +PBADROM + MOVI CPUT_CLR,A0 + MOVI CPUT_CLRS,A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + MOVI ROMBADMESS,A0 + MOVI [CPUT_Y1,CPUT_X],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + +PCPUBAD + MOVI CPUPAUSE,A0 + MOVI [CPUT_Y2,CPUT_X],A1 + CLR A2 + MOVI COLOR_RED,A3 + FCALL STRING,B6 + +PCPUWAIT + move @_watchdog_addr,a0,L + move a0,*a0 + + .IF TUNIT + MOVI CPU_ERROR_SND,A0 + move @_sound_addr,a3,L + move a0,*a3,W + .ELSE + MOVI 0FD00H|CPU_ERROR_SND,A0 + move @_sound_addr,a3,L + move a0,*a3,W + MOVI 0FF00H|CPU_ERROR_SND,A0 + move @_sound_addr,a3,L + move a0,*a3,W + .ENDIF + + MOVE A13,B5 + PAUSE 10000,B6 + FCALL fudge_switches_diag,B6 + andi BUTTONS|START_BITS,a0 + MOVE A0,B1 + MOVI -1,B0 ; ASSUME DON'T TIMEOUT + CMPI DIAGSP,SP + JRZ PCPUTMP1 + CMPI BURNSP,SP + JRZ PCPUTMP1 + MOVI 200000H,B0 +PCPUTMP1 + move @_watchdog_addr,a0,L + move a0,*a0 + MOVE B0,B0 + JRN PCPUNOTIMEOUT + DEC B0 + JRZ PCPURET ; TIMEOUT HERE +PCPUNOTIMEOUT + FCALL fudge_switches_diag,B6 + andi BUTTONS|START_BITS,a0 + MOVE B1,A1 + CMP A0,A1 + JRNZ PCPURET + JRUC PCPUTMP1 +PCPUGOOD + CLR A0 + JRUC PCPUREALRET +PCPURET + MOVK 1,A0 +PCPUREALRET + MOVE A0,A0 + FRET SP + +DMACMESS + .STRING "CHECKING CUSTOM",0 + .EVEN +DMABADMESS + .STRING "CUSTOM CHIP U33 BAD",0 + .EVEN + +ROMCMESS + .STRING "CHECKING ROMS",0 + .EVEN +ROMBADMESS + .STRING "ROM CHIPS BAD",0 + .EVEN + +RAMBADMESS + .STRING "RAM CHIPS BAD",0 + .EVEN + +SNDCMESS + .string "CHECKING SOUND SECTION",0 + .even +SNDBADMESS + .string "SOUND SECTION BAD",0 + .even +PICCMESS + .string "CHECKING PIC CHIP",0 + .even +PICBADMESS + .string "PIC CHIP BAD",0 + .even + +CPUGOOD + .STRING "CPU BOARD OK",0 + .EVEN + +CPUPAUSE + .STRING "PRESS ANY BUTTON",0 + .EVEN + +CPUEXIT1_MESS + .STRING "HOLD START BUTTON",0 + .EVEN +CPUEXIT2_MESS + .STRING "TO EXIT.",0 + .EVEN + + +************************************************************************** +* * +* CPUDRAW * +* * +* PLOT THE CPU BOARD AND DRAW ALL THE CHIPS * +* * +* ENTRY * +* B5 RETURN ADDRESS * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +CPUDRAW: + MOVI CPU_VECS,A9 ; POINT AT VECTOR TABLE +CPUDLP1 + MOVE *A9+,A2,W ; GET COLOR + JRZ CPUD1 + MOVE *A9+,A0,L ; START POINT + MOVE *A9+,A1,L ; END POINT + FCALL HVLINE,B6 + JRUC CPUDLP1 +CPUD1 + MOVE B5,A13 + FCALL CHIPPLOT,B5 ; PLOT ALL THE CHIPS + MOVI BOARDSTRING,A0 + move @DIPSWITCH,a1,W + andi DP4MEG_DIAG,a1 + jrz bdtype_4meg + movi BOARDSTRING1,a0 +bdtype_4meg: + + MOVI [25,270],A1 + CLR A2 + MOVI COLOR_WHITE,A3 + FCALL STRING,B6 + MOVI BOARDSTRING2,A0 + MOVI [37,274],A1 + FCALL STRING,B6 + MOVE A13,B5 + FRET B5 + +BOARDSTRING +BOARDSTRING1: + .string "A-18968-40030",0 + .EVEN + +BOARDSTRING2 + .STRING "WRESTLEMANIA",0 + .EVEN + +************************************************************************** +* * +* CHIPTABLE * +* * +* UPDATE A LIST OF CHIPS, BASED ON THEIR VALUES IN A12 * +* * +* ENTRY * +* A9 POINTER TO TABLE * +* A12 LIST OF ON/OFF BITS * +* B5 RETURN ADDRESS * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +CHIPTABLE: + MOVE B5,A14 +CTABLOOP + MOVE *A9+,A10,L ; GET POINTER TO CHIP RECORD + JRZ CTABDONE + MOVK 1,A11 + MOVE *A10(CMNUM),A0,W ; GET THE BIT NUMBER + BTST A0,A12 ; CHECK BIT NUMBER + JRZ CTABL2 + MOVK 2,A11 +CTABL2 + FCALL CHIPOUT,B5 + JRUC CTABLOOP + +CTABDONE + MOVE A14,B5 + FRET B5 + +************************************************************************** +* * +* CHIPPLOT * +* * +* PLOT OUT THE CHIP LIST * +* * +* ENTRY * +* B5 RET VALUE * +* * +* EXIT * +* NOTHING * +************************************************************************** + +CHIPPLOT: + MOVE B5,A14 + MOVI CPU_CHIPS,A10 +CPPLOTLOOP + CLR A11 + MOVE *A10,A0,L + JRZ CPPLOTDONE + FCALL CHIPOUT,B5 + ADDI CMEND,A10 + JRUC CPPLOTLOOP + +CPPLOTDONE + MOVE A14,B5 + FRET B5 + +************************************************************************** +* * +* CHIPOUT * +* * +* ACTUALLY PLOT THE CHIP * +* * +* ENTRY * +* A10 POINTS TO CHIP TO PLOT * +* A11 COLOR OF CHIP * +* 00 = OUTLINE * +* 01 = GREEN * +* 02 = RED * +* 03 = GREY * +* * +* EXIT * +* A10 IS INTACT * +* * +************************************************************************** + +CHIPOUT: + MOVE *A10(CMLOC),A5,L ; CHIP OUTLINE + MOVE A5,A6 + MOVE A5,A7 + MOVE A5,A8 + MOVE *A10(CMXSIZE),A0,W + ADD A0,A6 + ADD A0,A7 + MOVE *A10(CMYSIZE),A0,W + SLL 16,A0 + ADD A0,A7 + ADD A0,A8 + MOVE A5,A0 + MOVE A6,A1 + MOVI COLOR_WHITE,A2 + FCALL HVLINE,B6 + MOVE A6,A0 + MOVE A7,A1 + ADDI [1,0],A1 + MOVI COLOR_WHITE,A2 + FCALL HVLINE,B6 + MOVE A8,A0 + MOVE A7,A1 + MOVI COLOR_WHITE,A2 + FCALL HVLINE,B6 + MOVE A5,A0 + MOVE A8,A1 + MOVI COLOR_WHITE,A2 + FCALL HVLINE,B6 +; + MOVE *A10(CMSTUFFED),A0,W ; CHECK FOR STUFFED + JRNZ CONOSTUF + MOVK 3,A11 ; WANT IT GREY, DUDE + +CONOSTUF + MOVE A11,A11 ; CHECK FOR FILLING THE CHIP + JRZ CONOFILL + MOVE *A10(CMLOC),A0,L + ADDI 00010001H,A0 + MOVE *A10(CMSIZE),A1,L + SUBI 00010001H,A1 ; GET INTERNAL AREA + MOVE A11,A2 + SLL 4,A2 + ADDI CHIPCOLORS,A2 + MOVE *A2,A2,W ; GET ME A COLOR + FCALL RECTANGLE,B6 +CONOFILL + MOVE *A10(CMPINLOC),A1,L ; PIN LOCATION + MOVE A5,A0 + ADD A1,A0 + MOVI COLOR_WHITE,A1 + FCALL POINT,B6 + + MOVE *A10(CMSTRING),A0,L ; CHIP TEXT + MOVE A5,A1 + MOVE *A10(CMOFFSET),A2,L + ADD A2,A1 + MOVE *A10(CMDIR),A2,W + MOVI COLOR_BLACK,A3 + MOVE A11,A11 ; CHECK FOR COLOR + JRNZ COBLACK + MOVI COLOR_WHITE,A3 +COBLACK + FCALL STRING,B6 + FRET B5 + +CHIPCOLORS: + .WORD COLOR_BLACK + .WORD COLOR_GREEN + .WORD COLOR_RED + .WORD COLOR_GREY + +************************************************************************** +* * +* DMACHECK * +* * +* CHECK THE DMA OUT * +* * +* ENTRY * +* B5 RETURN ADDRESS * +* * +* EXIT * +* A0 DMA STATUS * +* 0 = GOOD * +* 1 = BAD * +* * +************************************************************************** +DMACHECK + setf 16,1,0 + move @_watchdog_addr,a0,L + move a0,*a0 + CLR A14 + MOVE A14,@DMACTRL,W + MOVE A14,@DMACTRL,W + + MOVK DMACF4,A14 + MOVE A14,@DMACONF,W ;ADJUST WINDOW RIGHT/LEFT BORDER + MOVI [511,0],A14 + MOVE A14,@DMAWINDOW,L ;OPEN LEFT TO RIGHT + MOVI DMAWIN|DMACF4,A14 + MOVE A14,@DMACONF,W ;ADJUST WINDOW RIGHT/LEFT BORDER + MOVI [511,0],A14 + MOVE A14,@DMAWINDOW,L ;FULL HEIGHT WINDOW + MOVI [100H,100H],A14 + MOVE A14,@DMASCALEX,L + + MOVI [1,448],A14 ;BLOW OUT TRADEMARK + MOVE A14,@DMAHSIZE,L + + CLR A14 + MOVE A14,@DMAOFFST,W ;OFFSET + MOVE A14,@DMACONST,W ;CONSTANT + MOVE A14,@DMAHORIZ,L ;CLEAR DESTINATION ADDRESS + + clr a14 + MOVE A14,@DMASAGL,L + + MOVI 257,A14 + MOVE A14,@DMAVERT,W ;OFFSCREEN PLOT + + MOVI 0505H,A14 + MOVE A14,@DMACMAP,W + + MOVI 8003H,A14 ;USE IMAGE ROM - WRITE ALWAYS + MOVE A14,@DMACTRL,W ;KICK OFF THE DMA + + MOVI 7FFFH,A14 ;LOAD TIMEOUT COUNTER +DMACWAIT + move @_watchdog_addr,a0,L + move a0,*a0 + MOVE @DMACTRL,A0,W ;DMA BUSY? + JRNN DMADONE ;BR = NO, TIME TO CHECK + DSJS A14,DMACWAIT + JRUC DMACBAD ;DMA TIMED OUT + +DMADONE + CLR A0 ;GET BACK TO A REAL PALETTE + MOVE A0,@DMACMAP,W + MOVI 0101000H,A0 ;LINEAR SCREEN LOCATION OF DATA + MOVI 2000000H,A1 ;DMA LOGO LOCATION + MOVI 448,A2 ;NUMBER OF BYTES TO COMPARE +DMACLOOP + MOVB *A0,A3 ;DESTINATION BYTE + MOVB *A1,A4 ;SOURCE BYTE + ADDK 8,A0 + ADDK 8,A1 + CMP A3,A4 + JRNZ DMACBAD ;BR = DATA ERROR + DSJS A2,DMACLOOP +* +*CHECK DATA IN OBJECT PALETTE +* + + .if WWFUNIT + movi SYSCINIT,a13 + andni PALENB,a13 + .else + MOVI PAL_SELECT,A13 + .endif + + MOVE A13,@SYSCTRL,W ;ENABLE PALETTE + + MOVI 0101000H,A0 ;LOCATION + MOVI 224,A2 ;NUMBER OF WORDS TO COMPARE +DMACLOOP2 + MOVE *A0+,A3,W + CMPI 0505H,A3 + JRNZ DMACBAD + DSJS A2,DMACLOOP2 + CLR A0 + JRUC DMACRET +DMACBAD + CLR A0 ;GET BACK TO A REAL PALETTE + MOVE A0,@DMACTRL,W + MOVE A0,@DMACTRL,W + MOVE A0,@DMACMAP,W + MOVK 1,A0 +DMACRET + + .if WWFUNIT + movi SYSCINIT,a13 + .else + MOVI 0FFFCH,A13 + .endif + + MOVE A13,@SYSCTRL,W + + SETF 16,0,0 + + MOVE A0,A0 + FRET B5 + + +DOG_COUNT .EQU 8000H ;EVERY 32K + .align +************************************************************************** +* * +* RAMCHECK * +* * +* CHECK A BANK OF RAM, GIVEN A STARTING TABLE ADDRESS * +* * +* ENTRY * +* A14 POINTER TO RAM TABLE * +* B5 RETURN ADDRESS * +* * +* EXIT * +* B0 LIST OF ERRORS * +* * +************************************************************************** + +RAMCHECK: + movb a0,@WATCHDOG ; We have to do this because + ; The scratch ram test trashes + ; the data at _watchdog address + SETF 16,0,0 + SETF 32,0,1 + +; SNAG NEXT CHIP RECORD + +RAMLOOP: + CLR B2 + MOVE *A14(RAM_SADR),A12,L ; STARTING ADDRESS + MOVE *A14(RAM_EADR),A13,L ; ENDING ADDRESS + MOVE *A14(RAM_ITLV),A11,W ; INTERLEAVE + MOVE *A14(RAM_WDTH),A10,W ; WIDTH + +; CELL COUNT + + SUB A12,A13 ; (END-START)/INTERLEAVE+1 + DIVU A11,A13 + INC A13 + +; SET FIELD SIZES + + MOVE A11,A9 ; FS1 = INTERLEAVE + ANDI ZERO_EXTEND,A9 + EXGF A9,1 + + MOVE A10,A9 ; FS0 = WIDTH + ANDI ZERO_EXTEND,A9 + EXGF A9,0 + +; FILL IN ASCENDING ORDER + + MOVE A13,A9 ; XEROX COUNT + MOVE A12,A8 ; XEROX START + + MOVI RANDOM_SEED,A7 + CLR A5 + MOVI DOG_COUNT,B14 + +RAC1 + SLA 1,A7 ; GENERATE A PSEUDO + JRV RAC2 ; RANDOM NUMBER + movk 2,a4 + or a4,a7 +RAC2 + MOVE A7,A6 + ADDC A5,A6 + + MOVE A6,*A8+,1 ; WRITE + DSJS B14,RAC1_NODOG + movb a0,@WATCHDOG ; We have to do this because + ; The scratch ram test trashes + ; the data at _watchdog address + MOVI DOG_COUNT,B14 ;AND RELOAD COUNT +RAC1_NODOG + DSJS A9,RAC1 + + ;READBACK IN ASCENDING ORDER + MOVE A13,A9 ; XEROX COUNT + MOVE A12,A8 ; XEROX START + + MOVI RANDOM_SEED,A7 + MOVI DOG_COUNT,B14 + +RAC3 SLA 1,A7 ; GENERATE A PSEUDO + JRV RAC4 ; RANDOM NUMBER + movk 2,a4 + or a4,a7 +RAC4 MOVE A7,A6 + ADDC A5,A6 + + move *a8,a4,0 ;Read + add a11,a8 + ZEXT A6 + + CMP A6,A4 + jrne rac5 ;Error? + + DSJS B14,RAC5_NODOG + movb a0,@WATCHDOG ; We have to do this because + ; The scratch ram test trashes + ; the data at _watchdog address + MOVI DOG_COUNT,B14 ;AND RELOAD COUNT +RAC5_NODOG + DSJS A9,RAC3 + + jruc showstat + +rac5 ;Error! + SETF 16,0,0 ; RESET FIELDS + SETF 32,0,1 + MOVE *A14(RAM_NMBR),A4,W ; GET BIT NUMBER TO SET + MOVE A4,B1 + MOVK 1,B2 + SLL B1,B2 + OR B2,B0 ; SET THAT BIT + + +showstat + SETF 16,0,0 ; RESET FIELDS + SETF 32,0,1 + movb a0,@WATCHDOG ; We have to do this because + ; The scratch ram test trashes + ; the data at _watchdog address + + +; B1 SHOULD BE ZERO IF THE CHIP IS COOL HERE + + MOVE *A14(RAM_LINK),A10,L + JRZ RAMNOPLOT + MOVK 1,A11 + MOVE B2,B2 + JRZ RAMPLOT + MOVK 2,A11 +RAMPLOT + MOVE B5,A9 ; I HOPE THIS ONE IS SAFE! + MOVE B0,A13 + FCALL CHIPOUT,B5 + MOVE A13,B0 + MOVE A9,B5 + +RAMNOPLOT + ADDI RAM_SIZE,A14 ; ADVANCE TO NEXT GUY + MOVE *A14,A7,W + JRNZ RAMLOOP ; HERE WE GO AGAIN + FRET B5 + + +************************************************************************** +* * +* ROMCHECK - ROUTINE TO CHECKSUM THE PROGRAM AND IMAGE ROMS. * +* RETURNS * +* B0 = BITS SET FOR BAD ROMS. * +* Z = TEST FINISHED. * +* NZ = TEST ABORTED BY USER. * +* * +************************************************************************** + .align + +ROMCHECK: + move @_watchdog_addr,a0,L + move a0,*a0 +ROMLOOP + CLR B2 + MOVE *A14(ROM_CKSM),A13,W ; CHECK TO SEE IF ROM SOCKET THERE + JRZ ROMEMPTY + CLR A8 ; CHECKSUM + + MOVI DOG_COUNT,B14 + + MOVE *A14(ROM_SADR),A12,L ; STARTING ADDRESS + MOVE *A14(ROM_EADR),A13,L ; ENDING ADDRESS + MOVE *A14(ROM_ITLV),A11,W ; INTERLEAVE +; +; SUM UP A GIVEN IMAGE ROM -- THE TUNIT WAY +; + SUB A12,A13 ; (( EADDR - SADDR ) / INTERLEAVE) + 1 + DIVU A11,A13 + INC A13 + setf 8,0,1 +rcilp + move *a12,a7,1 ;Get a byte + add a11,a12 + add a7,a8 + dsjs b14,rcilp_nodog + setf 32,0,1 + move @_watchdog_addr,a0,L + move a0,*a0 + setf 8,0,1 + movi DOG_COUNT,b14 ;AND RELOAD COUNT +rcilp_nodog + dsjs a13,rcilp + + setf 32,0,1 + +*LAND HERE FROM IMAGE CHECKSUM TO DETERMINE IF WE HIT IT +;ROMCKCK + MOVE *A14(ROM_CKSM),A7,W +ROM_COMPARE + ZEXT A7 + ZEXT A8 + CMP A7,A8 + JRZ ROMRELOOP + MOVE *A14(ROM_NMBR),A4,W ; GET BIT NUMBER TO SET + MOVE A4,B1 + MOVK 1,B2 + SLL B1,B2 + OR B2,B0 ; SET THAT BIT +ROMRELOOP + move @_watchdog_addr,a0,L + move a0,*a0 + MOVE *A14(ROM_LINK),A10,L + JRZ ROMNOPLOT + MOVK 1,A11 + MOVE B2,B2 + JRZ ROMPLOT + MOVK 2,A11 +ROMPLOT + MOVE B5,A9 ; I HOPE THIS ONE IS SAFE! + MOVE B0,A13 + FCALL CHIPOUT,B5 + MOVE A13,B0 + MOVE A9,B5 + +ROMNOPLOT + ADDI ROM_SIZE,A14 +*CHECKING FOR EARLY EXIT BY OPERATOR + move @_coin_addr,a13,L + move *a13,a13,W + sll 16,a13 + ANDI START_BITS,A13 + CMPI START_BITS,A13 + JRNE ROMABORT + JRUC ROMLOOP ;BACK FOR THE NEXT +*HERE ON OPERATOR ABORT +ROMABORT + CLRZ + FRET B5 +ROMEMPTY + clr a12 + setz + FRET B5 + + +************************************************************************** +* * +* MONITOR STUFF * +* * +************************************************************************** +CROSS_H +CONV_PLOT + MOVI MON_RECS,A9 +CPRLP1 + MOVE *A9+,A2,W ; GET COLOR + JRZ CPRDONE + MOVE *A9+,A0,L ; START POINT + MOVE *A9+,A1,L ; DIMENSIONS + FCALL RECTANGLE,B6 + JRUC CPRLP1 +CPRDONE + MOVI MON_VECS,A9 ; POINT AT VECTOR TABLE +CPVLP1 + MOVE *A9+,A2,W ; GET COLOR + JRZ CPVDONE + MOVE *A9+,A0,L ; START POINT + MOVE *A9+,A1,L ; END POINT + FCALL HVLINE,B6 + JRUC CPVLP1 +CPVDONE + MOVI MON_DOTS,A9 ; POINT AT DOT TABLE +CPDLP1 + MOVE *A9+,A1,W ; GET COLOR + JRZ CPDDONE + MOVE *A9+,A0,L ; GET THE POINT + FCALL POINT,B6 + JRUC CPDLP1 +CPDDONE + RETS +************************************************************************** +* * +* MONITOR TEST DATA AREA * +* * +************************************************************************** + +MON_VECS: + VECMAC ROBO_WHITE,004,004,390,004 + VECMAC ROBO_WHITE,004,004,004,250 + VECMAC ROBO_WHITE,004,250,390,250 + VECMAC ROBO_WHITE,390,250,390,004 + VECMAC ROBO_WHITE,060,005,060,250 + VECMAC ROBO_WHITE,115,005,115,250 + VECMAC ROBO_WHITE,170,005,170,250 + VECMAC ROBO_WHITE,225,005,225,250 + VECMAC ROBO_WHITE,280,005,280,250 + VECMAC ROBO_WHITE,335,005,335,250 + VECMAC ROBO_WHITE,005,054,390,054 + VECMAC ROBO_WHITE,005,103,390,103 + VECMAC ROBO_WHITE,005,152,390,152 + VECMAC ROBO_WHITE,005,201,390,201 + .LONG 0 + +MON_RECS: + VECMAC ROBO_RED, 182,000,030,005 ; TOP + VECMAC ROBO_GREEN, 182,005,030,006 + VECMAC ROBO_RED, 182,250,030,005 ; BOTTOM + VECMAC ROBO_GREEN, 182,244,030,006 + VECMAC ROBO_RED, 000,117,005,020 ; LEFT + VECMAC ROBO_GREEN, 005,117,006,020 + VECMAC ROBO_RED, 390,117,005,020 ; RIGHT + VECMAC ROBO_GREEN, 384,117,006,020 + .LONG 0 + +MON_DOTS: + DOTMAC ROBO_WHITE,032,029 + DOTMAC ROBO_WHITE,087,029 + DOTMAC ROBO_WHITE,142,029 + DOTMAC ROBO_WHITE,197,029 + DOTMAC ROBO_WHITE,252,029 + DOTMAC ROBO_WHITE,307,029 + DOTMAC ROBO_WHITE,362,029 + + DOTMAC ROBO_WHITE,032,078 + DOTMAC ROBO_WHITE,087,078 + DOTMAC ROBO_WHITE,142,078 + DOTMAC ROBO_WHITE,197,078 + DOTMAC ROBO_WHITE,252,078 + DOTMAC ROBO_WHITE,307,078 + DOTMAC ROBO_WHITE,362,078 + + DOTMAC ROBO_WHITE,032,127 + DOTMAC ROBO_WHITE,087,127 + DOTMAC ROBO_WHITE,142,127 + DOTMAC ROBO_WHITE,197,127 + DOTMAC ROBO_WHITE,252,127 + DOTMAC ROBO_WHITE,307,127 + DOTMAC ROBO_WHITE,362,127 + + DOTMAC ROBO_WHITE,032,176 + DOTMAC ROBO_WHITE,087,176 + DOTMAC ROBO_WHITE,142,176 + DOTMAC ROBO_WHITE,197,176 + DOTMAC ROBO_WHITE,252,176 + DOTMAC ROBO_WHITE,307,176 + DOTMAC ROBO_WHITE,362,176 + + DOTMAC ROBO_WHITE,032,225 + DOTMAC ROBO_WHITE,087,225 + DOTMAC ROBO_WHITE,142,225 + DOTMAC ROBO_WHITE,197,225 + DOTMAC ROBO_WHITE,252,225 + DOTMAC ROBO_WHITE,307,225 + DOTMAC ROBO_WHITE,362,225 + .LONG 0 + +PRIMARY_COLORS: + RECTMAC ROBO_RED,0,0,395,255 + RECTMAC ROBO_GREEN,0,0,395,255 + RECTMAC ROBO_BLUE,0,0,395,255 + .LONG 0 + +COLOR_BARS: + + RECTMAC ROBO_BLACK, 0, 0, 49, 16 + RECTMAC ROBO_BLACK, 49, 0, 49, 16 + RECTMAC ROBO_BLACK, 98, 0, 49, 16 + RECTMAC ROBO_BLACK, 147, 0, 49, 16 + RECTMAC ROBO_BLACK, 196, 0, 49, 16 + RECTMAC ROBO_BLACK, 245, 0, 49, 16 + RECTMAC ROBO_BLACK, 294, 0, 49, 16 + RECTMAC ROBO_BLACK, 343, 0, 49, 16 + .LONG 0 + + + +************************************************************************** +* * +* COLORBAR * +* * +************************************************************************** +COL_BARS +COLORBAR + + MOVI INTENSITIES_START,A0,L + MOVI COLRAM+100H,A1,L + + MOVK 16, A2 ;5 BITS / COLOR + MOVK 8, A6 ;# COLOR BARS +CB3 + ADDI >F00,A1 ;STEP TO NEXT PALETTE + MOVE *A0+,A3 ;STARTING COLOR + MOVE *A0+,A4 ;COLOR DECREMENT + + MOVE A2,A5 + +CB4 MOVE A3,*A1+ + SUB A4,A3 + DSJS A5,CB4 + DSJS A6,CB3 + +; ========================= +; | DISPLAY COLOR BARS | +; ========================= + + CLR A14 + MOVE A14,@DMACTRL,W ; HALT THE DMA + MOVE A14,@DMACTRL,W + MOVI 0101H,A14 + MOVE A14,A8 + + MOVI COLOR_BARS, A3, L ; COLOR BAR TABLE + MOVI [16,0], A13, L ; POSITION INCRMENT + MOVI 101H,A12 + MOVK 16, A11 ; # INTENSITIES / BAR + MOVK 8,A6 ;THIS MANY BARS +CB6 + CLR A2 ; STARTING COLOR + MOVE *A3+,A1,L + JRZ CB8 + MOVE A8,@DMACMAP,W ;STUFF PALETTE + MOVE *A3+,A0,L + ADDK 16,A3 + MOVE A11,A10 +CB7 + FCALL RECTANGLE, B6 + ADD A13, A0 + ADD A12, A2 + DSJS A10, CB7 + ADD A14,A8 ;NEXT PALETTE PLEASE + DSJ A6,CB6 + +CB8 + CLR A14 + MOVE A14,@DMACMAP + RETS + + +INTENSITIES_START + + .WORD 03E0H ; GREEN + .WORD 0040H ; BUMP GREEN + + .WORD 7C00H ; RED + .WORD 0800H ; BUMP RED + + .WORD 001FH ; BLUE + .WORD 0002H ; BUMP BLUE + + .WORD 0000H ; BLACK + .WORD 0000H ; BUMP BLACK + + .WORD 7FFFH ; WHITE + .WORD 0842H ; BUMP WHITE + + .WORD 7FE0H ; YELLOW + .WORD 0840H ; BUMP YELLOW + + .WORD 7C1FH ; PURPLE + .WORD 0802H ; BUMP PURPLE + + .WORD 03FFH ; CYAN + .WORD 0042H ; BUMP CYAN + + .LONG 0 + +************************************************************************** +* SWITCHTEST - Test regular or DIP switches +* A0=Mode (0=Switches, 1=DIPs) + +DONEMASK EQU 00240000H ; P1 + P2 START + .BSS DONECNT,32 ; FOR SWITCH TEST + +SWITCHTEST + PUSH a12,a13 + + subk 1,a0 + jreq DIPTEST + clr a0 + move a0,@_switch_map_mode,L ; No switch mapping + + movk 10h,A13 + MOVE A13,@DONECNT,L + CLR A13 ; THE HOLD ME REGISTER + MOVE A13,@SWSET1,L + MOVE A13,@SWSET2,L + MOVI BUT_TABLE,A9 + CLR A10 + CALLR BUT_PLOT ; PLOT SOME BUTTONS + MOVI JOY_TABLE,A9 + CALLR JOY_PLOT ; PLOT THE JOYSTICKS + MOVI STR_TABLE,A9 + CALLR STR_PLOT ; PLOT THE STRINGS + MOVI BUT_STRS,A9 + CALLR STR_PLOT ; PLOT THE BUTTON STRINGS + MOVI [172,0],A0 + MOVI [172,400],A1 + MOVI ROBO_WHITE,A2 + FCALL HVLINE,B6 ; DRAW LITTLE WHITE LINE +SDLOOP + PULL a12,a13 + SLEEPK 2 + PUSH a12,a13 + + move @_coin_addr,a10,L + move *a10,a10,W + move @_switch_addr,a14,L + move *a14,a14,W + sll 16,a10 + sll 16,a14 ;mask off top 16 + srl 16,a14 + or a14,a10 + + + NOT A10 + MOVE A10,A0 + ANDI DONEMASK,A0 + CMPI DONEMASK,A0,L ; CHECK FOR DONE + JRNZ SDGO + MOVE @DONECNT,A0,L ;REQUIRE A CERTAIN TIME + DEC A0 + MOVE A0,@DONECNT,L + JRNE SDGO + +switchx PULL a12,a13 + movk 1,a0 + move a0,@_switch_map_mode,L ; Back to menu switch map + RETP + +SDGO + MOVE @SWSET1,A11,L + CMP A11,A10 ; CHECK FOR CHANGES + JRZ SDCK2 + MOVE A10,@SWSET1,L + move @_switch2_addr,a10,L + move *a10,a10,W + NOT A10 + SLL 16,A10 + SRL 16,A10 + JRUC SDPRC1 +SDCK2 + move @_switch2_addr,a10,L + move *a10,a10,W + not a10 + sll 16,a10 + srl 16,a10 + MOVE @SWSET2,A11,L + CMP A11,A10 + JRZ SDLOOP +SDPRC1 + MOVE A10,@SWSET2,L +SDPROC + CLR A0 + MOVE A0,@SCHANGE + + MOVI BUT_TABLE,A9 + CALLR BUT_PLOT + MOVI BUT_STRS,A9 + CALLR STR_PLOT ; PLOT THE BUTTON STRINGS + MOVI JOY_TABLE,A9 + CALLR JOY_UPDATE ; UPDATE THE JOYSTICK INFO + + MOVE @SCHANGE,A0 + JRZ SDLOOP + + MOVI SWITCH_SND,A3 + calla SNDSND + JRUC SDLOOP + + + +************************************************************************** +* * +* SET_DIP_COINAGE - SETUP COINAGE ACCORDING TO THE DIPSWITCHES * +* * +************************************************************************** +SET_DIP_COINAGE + MMTM SP,A0,A1,A2,A6 + + CALLR READ_DIP + MOVE A0,A2 + ANDI DPUSECMOS,A2 ;USING CMOS? + JRNZ SDC_X ;BR=YES, DO NOT LOAD COINAGE + + MOVE A0,A2 + ANDI DPCOUNTRY,A0 + + SRL DPCOUNTRY_SRL,A0 ; CHANGE TO TO MULTIPLE OF 32 + SLL 5,A0 + + ADDI DIPCOINTAB,A0 + MOVE *A0,A1,L ; POINTER TO RIGHT COIN TABLE + + ANDI DPCOINAGE,A2 + CMPI DPCOINAGE,A2 ; CHECK FOR FREEPLAY + JRZ CMOS21 + + SRL DPCOINAGE_SRL,A2 + SLL 4,A2 + + ADD A2,A1 + MOVE *A1,A1,W ; WHICH COIN TABLE TO USE + + MOVI ADJPRICE,A0 + CALLA GET_ADJ ;GET THE COIN SELECT NUMBER BEING USED. + CMP A0,A1 ;DID WE CHANGE COIN MODES + JREQ SDC_SAMEC + CALLA NO_CREDS ;CLEAR CREDITS + CALLA CRED_P ;LINK-OUT! +SDC_SAMEC + MOVI ADJPRICE,A0 ; MASTER PRICING + CALLA PUT_ADJ ; STUFF IT IN CMOS + MOVI ADJFREPL,A0 + CLR A1 ; MAKE SURE NO FREEPLAY + CALLA PUT_ADJ +CMOS20 + MOVI ADJ1ST6,A0 ;MAKE THEM UNTOUCHED PLEASE + MOVK 1,A1 + CALLA PUT_ADJ + + CALLA F_ADC_S ;CHECKSUM THE ADJUSTMENTS + + CALLA GET_CSPT + CALLA SET_COIN_ADJ ; SET THE ADJUSTMENTS UP IN CMOS + + CALLA F_ADC_S ;CHECKSUM THE ADJUSTMENTS + + JRUC SDC_X +CMOS21 + MOVI ADJFREPL,A0 + MOVK 1,A1 ; FREEPLAY, DUDE! + CALLA PUT_ADJ + JRUC CMOS20 +SDC_X + MMFM SP,A0,A1,A2,A6 + RETS + +************************************************************************** +* * +* DIPTEST * +* * +* DIP SWITCH TESTING * +* * +************************************************************************** + +DIPTEST: + movk 3,a14 + move a14,@_switch_map_mode,L ; Any button mapping + MOVK 1,A14 + MOVE A14,@DIP1ST,W ;YES THIS IS THE FIRST TIME THROUGH + CALLR READ_DIP + MOVE A0,@DIPVAL,W + +DT_PLOT + MOVI DIP_VECS,A9 ; POINT AT VECTOR TABLE +DTVLP1 + MOVE *A9+,A2,W ; GET COLOR + JRZ DTVDONE + MOVE *A9+,A0,L ; START POINT + MOVE *A9+,A1,L ; END POINT + FCALL HVLINE,B6 + JRUC DTVLP1 +DTVDONE + MOVI DIP_STRS,A9 + CALLR STR_PLOT + + CALLR SET_DIP_COINAGE + + CALLR DIPPLOT + CALLR DIPSTATE + + MOVE @DIP1ST,A14,W + JRNZ DTL_SKIP_SND + + MOVI DIP_SND,A0 + move @_sound_addr,a9,L + move a0,*a9,W + +DTL_SKIP_SND + CLRM @DIP1ST,W + + CALLA fudge_switches ;get fudged switches in a0 + andi BUTTONS|START_BITS,a0 + MOVE A0,@SWSET1,L +DTLOOP + PULL a12,a13 + SLEEPK 1 + PUSH a12,a13 + +; CALLA CKTEST ; EMERGENCY EXIT + CALLA fudge_switches ;get fudged switches in a0 + MOVE @SWSET1,A1,L + andi BUTTONS|START_BITS,a0 + CMP A0,A1 + JRNZ DT_X + + CALLR READ_DIP + MOVE @DIPVAL,A1,W + ZEXT A1 + CMP A0,A1 + JRZ DTLOOP ;BR = NO CHANGE + MOVE A0,@DIPVAL,W ;SAVE THE OLD + JRUC DT_PLOT ;PLOT THE NEW SWITCH STUFF +DT_X + JRUC switchx + + +************************************************************************** +* * +* DIPSTATE * +* * +* PLOT OUT THE STATES OF ALL THE DIP SWITCHES * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** +DIPSTATE + MOVI [82,74],A0 + MOVI [104,140],A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + MOVI [82,284],A0 + MOVI [104,111],A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + + CALLR READ_DIP + MOVE A0,A10 ;LET'S KEEP A COPY + + CLR A2 + MOVI COLOR_WHITE,A3 + + CLR A7 + MOVI DUSECMOS_0,A1 + ANDI DPUSECMOS,A0 + JRZ DS1 + MOVK 1,A7 + MOVI DUSECMOS_1,A1 +DS1 + MOVE A1,A0 + MOVI [89,75],A1 + FCALL STRING,B6 + +*PLOT CURRENT COINAGE + MOVE A7,A7 ;ARE WE CMOS OR DIPSWITCH + JRZ DS_PC ;BR = DIPSWITCH + + MOVI [113,75],A1 + MOVI DUNUSED,A0 ;JUST PRINT UNUSED + FCALL STRING,B6 + JRUC DS_SC ;AND GO FOR THE NEXT SWITCHES + +DS_PC + MOVI COLOR_WHITE,A3 + MOVI [101,75],A1 + MOVI DCOINAGE,A0 + FCALL STRING,B6 + MOVE A10,A0 + ANDI DPCOUNTRY,A0 + SRL DPCOUNTRY_SRL,A0 + SLL 5,A0 + ADDI DCOINTAB,A0 + MOVE *A0,A1,L ; POINTER TO RIGHT COIN TABLE + MOVE A10,A0 + ANDI DPCOINAGE,A0 + SRL DPCOINAGE_SRL,A0 + SLL 5,A0 + ADD A0,A1 + MOVE *A1,A0,L ; NOW POINTING AT MESSAGE + CLR A2 + MOVI [101,132],A1 + FCALL STRING,B6 + +*PLOT CREDITS TO START, CREDITS TO CONTINUE + MOVI DTOSTART,A0 + MOVI [113,90],A1 + FCALL STRING,B6 + + MOVI DTOCONTINUE,A0 + MOVI [125,90],A1 + FCALL STRING,B6 + + MOVI ADJCSTRT,A0 + CALLA GET_ADJ ; GET NUMBER NEEDED ( IN A0 ) + MOVE A0,A8 + CMPI 9,A8 + JRLS DSTS_1 + MOVK 9,A8 +DSTS_1 + CALLA HEXTOASC + MOVE A8,A0 + MOVI [113,80],A1 + FCALL STRING,B6 + + MOVI ADJCCONT,A0 + CALLA GET_ADJ ; GET NUMBER NEEDED ( IN A0 ) + MOVE A0,A8 + CMPI 9,A8 + JRLS DSTC_1 + MOVK 9,A8 +DSTC_1 + CALLA HEXTOASC + MOVE A8,A0 + MOVI [125,80],A1 + FCALL STRING,B6 + + +DS_SC +*PLOT COUNTRY SELECTION + MOVE A10,A0 + ANDI DPCOUNTRY,A0 + SRL DPCOUNTRY_SRL,A0 + SLL 5,A0 + ADDI DCOUNTRY_TAB,A0 + MOVE *A0,A0,L + MOVI [143,75],A1 + FCALL STRING,B6 + +*PLOT COIN COUNTER MODE + MOVE A10,A7 + ANDI DPCOUNTER,A7 + SRL DPCOUNTER_SRL,A7 + SLL 6,A7 + ADDI DCOUNTER_TAB,A7 + MOVE *A7+,A0,L + MOVI [163,75],A1 + FCALL STRING,B6 + MOVE *A7+,A0,L + MOVI [175,75],A1 + FCALL STRING,B6 + + +*PLOT NUMBER OF PLAYERS ALLOWED + + + + MOVI DUNUSED,A0 + + + + MOVI [89,285],A1 + FCALL STRING,B6 +;;; + +*PLOT DOLLAR BILL VALIDATOR STATUS + MOVI DNOVALIDATOR,A0 ;ASSUME NO VALIDATOR + MOVE A10,A1 + ANDI DPVALIDATOR,A1 ;DO WE HAVE ONE? + JRZ DSTS_NOV ;BR = NO + MOVI DVALIDATOR,A0 ;ASSUME NO VALIDATOR + +DSTS_NOV + MOVI [101,285],A1 + FCALL STRING,B6 + + +*PLOT video clips off/on message + MOVI DCLIPS,A0 ;Assume clips on + MOVE A10,A1 + ANDI DPNOVIDCLIPS,A1 + JRZ DSTS_NOC ;BR = NO + MOVI DNOCLIPS,A0 ;Assume no clips wanted + +DSTS_NOC + + + MOVI [113,285],A1 + FCALL STRING,B6 + + MOVI DUNUSED,A0 + MOVI [125,285],A1 + FCALL STRING,B6 + + movi TD_ON,a0 + move a10,a1 + andi DPTDON,a1 + jrnz dtd_off + movi TD_OFF,a0 +dtd_off + MOVI [137,285],A1 + FCALL STRING,B6 + + MOVI DUNUSED,A0 + MOVI [149,285],A1 + FCALL STRING,B6 + + + +*PLOT skip over powerup test message + MOVI DPOWER,A0 + MOVE A10,A1 + ANDI DPPOWER,A1 + JRZ DSTS_NOP + MOVI DNOPOWER,A0 + +DSTS_NOP + + MOVI [161,285],A1 + FCALL STRING,B6 + + MOVI DTEST_0,A0 + MOVI [173,285],A1 + FCALL STRING,B6 + + RETS + + +************************************************************************** +* * +* DIPPLOT * +* * +* PLOT OUT THE DIP SWITCHES * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** +DIPPLOT: + MOVI [83,21],A0 + MOVI [104,38],A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + MOVI [83,231],A0 + MOVI [104,38],A1 + MOVI COLOR_BLACK,A2 + FCALL RECTANGLE,B6 + CALLR READ_DIP + CLR A2 +DIPLOOP + MOVE A2,A3 + SLL 5,A3 + ADDI DIPYTAB,A3 + MOVE *A3,A3,L + SLL 16,A3 ; GOT THE Y LOC + + CLR A5 + CMPI 8,A2 + .IF TUNIT=0 + JRLO DIPL2 + .ELSE + JRHS DIPL2 + .ENDIF + MOVI 210,A5 +DIPL2 + MOVX A5,A3 + + BTST A2,A0 ; CHECK IF BIT IS SET + JRNZ DIPON + MOVI DP_OFF,A1 + ADDI 29,A3 + MOVI COLOR_GREY,A4 + JRUC DIPSTR + +DIPON + MOVI DP_ON,A1 + ADDI 32,A3 + MOVI COLOR_WHITE,A4 + +DIPSTR + MMTM SP,A0,A2 + MOVE A1,A0 ; SET STRING + MOVE A3,A1 ; SET LOCATION + MOVE A4,A3 + CLR A2 ; HORIZONTAL + FCALL STRING,B6 + MMFM SP,A0,A2 + INC A2 + CMPI 16,A2 + JRLO DIPLOOP + RETS + + +DIPYTAB + .LONG 89,101,113,125,137,149,161,173 + .LONG 89,101,113,125,137,149,161,173 + + +************************************************************************** +* * +* READ_DIP * +* * +* READ IN BOTH DIP SWITCHES * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* A0 DIP SWITCH * +* * +************************************************************************** + +READ_DIP: + MMTM SP,A1,A2,A3 + + move @_dipswitch_addr,a0,L + move *a0,a0,W + NOT A0 ; INVERT IT FOR TRUE BITS + CLR A1 + movk 7,a2 +RDLOOP + BTST A2,A0 + JRZ RD1 + MOVK 7,A3 + SUB A2,A3 + BSET A3,A1 +RD1 + addk 8,a2 + BTST A2,A0 + JRZ RD2 + MOVK 15,A3 + SUB A2,A3 + addk 8,a3 + BSET A3,A1 +RD2 + subk 8,a2 + DEC A2 + JRNN RDLOOP + MOVE A1,A0 + + MMFM SP,A1,A2,A3 + RETS + + +************************************************************************** +* * +* JOY_MESS * +* * +* PLOT THE STATUS OF A JOYSTICK AROUND A CIRCLE * +* * +* ENTRY * +* A9 CENTER OF STICK CIRCLE * +* A10 BUTTON MASK * +* A11 COLOR * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +JOY_MESS + MOVI JJJTAB,A8 + MOVK 4,A7 +JML + MOVI ROBO_BLACK,A3 + SRL 1,A10 + JRNC JM1 + MOVE A11,A3 ; SET COLOR + MOVK 1,A14 + MOVE A14,@SCHANGE,W +JM1 + MOVE *A8+,A0,L + MOVE A9,A1 ; CIRCLE CENTER + MOVB *A8,A2 ;X CORRECTION + ADDK 8,A8 + ADD A2,A1 + MOVB *A8,A2 ;Y CORRECTION + ADDK 8,A8 + SLL 16,A2 + ADD A2,A1 + CLR A2 ; DIRECTION + CALLR STRNEW + DSJS A7,JML + RETS +* +*JOYSTICK MESSAGE TABLE +* +JJJTAB + .LONG UPMESS + .BYTE -7,-25 + + .LONG DOWNMESS + .BYTE -13,18 + + .LONG LEFTMESS + .BYTE -39,-4 + + .LONG RIGHTMESS + .BYTE 18,-4 + + + +************************************************************************** +* * +* BUT_PLOT * +* * +* PLOT A BUTTON TABLE ON THE SCREEN * +* * +* ENTRY * +* A9 POINTS TO BUTTON TABLE LIST * +* A10 SETTINGS OF THE SWITCH REGISTER * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +BUT_PLOT: + clr b4 ;OFFSET + + MOVE *A9,A1,L ; XY LOC + JRZ BPDONE + ADDK 32,A9 + MOVE *A9+,A0 ; RADIUS + MOVE *A9+,A6,L ; COLOR + MOVE *A9+,A11,L ; GET MASK + ADDK 16,A9 ; SHIFT COUNT + MOVE *A9,A8,W ; JAMMA EXTEND-O-BIT + JRZ BPLOW + MOVE @SWSET2,A10,L + JRUC BPAND +BPLOW + MOVE @SWSET1,A10,L +BPAND + ADDK 16,A9 + AND A10,A11 ; MASK OFF SOMETHING USEFUL + JRZ BPHOLLOW + ADDI CFILL,A6 ; MASK IN THE FILL BITS + JRUC BPCIRC +BPHOLLOW + MMTM SP,A0,A1,A6 + MOVI ROBO_BLACK,A6 + ADDI CFILL,A6 + FCALL CIRCLE,B6 + MMFM SP,A0,A1,A6 + JRUC BPCIRC2 +BPCIRC + MOVK 1,A14 + MOVE A14,@SCHANGE,W +BPCIRC2 + FCALL CIRCLE,B6 + JRUC BUT_PLOT +BPDONE + RETS + +************************************************************************** +* * +* JOY_PLOT * +* * +* PLOT A BUTTON TABLE ON THE SCREEN * +* * +* ENTRY * +* A9 POINTS TO BUTTON TABLE LIST * +* * +************************************************************************** + +JOY_PLOT: + MOVE *A9,A1,L ; XY LOC + JRZ JPDONE + ADDK 32,A9 + MOVE *A9+,A0 ; RADIUS + MOVE *A9,A6,L ; COLOR + ADDI 96,A9 + FCALL CIRCLE,B6 + JRUC JOY_PLOT +JPDONE + RETS + +************************************************************************** +* * +* JOY_UPDATE * +* * +* UPDATE ALL THE STICK INFORMATION * +* * +* ENTRY * +* A9 JOYSTICK TABLE POINTER * +* A10 SWITCH INFORMATION * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** + +JOY_UPDATE: + MOVE *A9,A1,L ; XY LOC + JRZ JUDONE + ADDI 32,A9 + MOVE *A9+,A0 ; RADIUS + MOVE *A9+,A11,L ; COLOR + MOVE *A9+,A6,L ; MASK + MOVE *A9+,A7 ; SHIFT COUNT + MOVE *A9,A8 ; EXTEND-O-BIT FOR JAMMA + JRZ JULOW + MOVE @SWSET2,A10,L + JRUC JUAND +JULOW + MOVE @SWSET1,A10,L +JUAND + ADDK 16,A9 + AND A10,A6 ; MASK OFF JOYSTICK BITS + NOT A7 + ADDK 1,A7 + SRL A7,A6 ; ZERO BASE THE LITTLE SUCKER + MMTM SP,A9,A10,A8,A7 + MOVE A1,A9 ; CENTER OF STICK HERE + MOVE A6,A10 ; BUTTON MASK + CALLR JOY_MESS + MMFM SP,A9,A10,A8,A7 + JRUC JOY_UPDATE +JUDONE + RETS + + +************************************************************************** +* * +* STR_PLOT * +* * +* PLOT A STRING TABLE ON THE SCREEN * +* * +* ENTRY * +* A9 POINTS TO STRING TABLE LIST * +* * +************************************************************************** + +STR_PLOT + MOVE *A9,A1,L ;XY LOC + JRZ STDONE + ADDK 32,A9 + MOVE *A9+,A0,L ;STRING PTR + MOVE *A9+,A3 ;COLOR + MOVE *A9+,A2 ;DIRECTION + FCALL STRING,B6 + JRUC STR_PLOT +STDONE + RETS + +CFILL EQU 0FFFF0000H + + +; FORMAT +; +; X,Y,RADIUS,COLOR,MASK,SHIFT COUNT ( FOR JOYSTICK STUFF ), EXTENDBIT + +P1BC .equ 80 +P2BC .equ 160 +P3BC .equ 240 +P4BC .equ 320 +PBCY .equ 162-40 + +P1BX equ P2BC +P2BX equ P4BC +PBY equ 110 + +BUT_TABLE + BUT_MAC P1BX-24,PBY-12,10,ROBO_BLUE,010H,0,0 ; P1 A1 (PUNCH) + BUT_MAC P1BX, PBY,10,ROBO_RED,020H,0,0 ; P1 A2 (BLOCK) + BUT_MAC P1BX+24,PBY-12,10,ROBO_BLUE,040H,0,0 ; P1 A3 (SPUNCH) + BUT_MAC P1BX-24,PBY+12,10,ROBO_BLUE,01H,0,1 ; P1 A5 (KICK) + BUT_MAC P1BX+24,PBY+12,10,ROBO_BLUE,02H,0,1 ; P1 A6 (SKICK) + + BUT_MAC P2BX-24,PBY-12,10,ROBO_BLUE,01000H,0,0 ; P2 A1 (PUNCH) + BUT_MAC P2BX, PBY,10,ROBO_RED,02000H,0,0 ; P2 A2 (BLOCK) + BUT_MAC P2BX+24,PBY-12,10,ROBO_BLUE,04000H,0,0 ; P2 A3 (SPUNCH) + BUT_MAC P2BX-24,PBY+12,10,ROBO_BLUE,10H,0,1 ; P2 A5 (KICK) + BUT_MAC P2BX+24,PBY+12,10,ROBO_BLUE,20H,0,1 ; P2 A6 (SKICK) + + + BUT_MAC P1BC,70,10,ROBO_WHITE,00040000H,0,0 ; P1 START + BUT_MAC P3BC,70,10,ROBO_WHITE,00200000H,0,0 ; P2 START + + BUT_MAC 30,199,10,COLOR_GREEN,00010000H,0,0 ; COIN LEFT + BUT_MAC 75,199,10,COLOR_PURPLE,00020000H,0,0 ; COIN RIGHT + BUT_MAC 120,184,10,COLOR_GREEN,00800000H,0,0 ; COIN CENTER + BUT_MAC 120,217,10,COLOR_GREEN,01000000H,0,0 ; FOURTH COIN + BUT_MAC 214,199,10,COLOR_GREEN,00400000H,0,0 ; SERVICE CREDIT + BUT_MAC 332,184,10,COLOR_GREEN,00080000H,0,0 ; SLAM + BUT_MAC 332,206,10,COLOR_GREEN,00100000H,0,0 ; TEST + BUT_MAC 165,184,10,COLOR_PURPLE,10000000H,0,0 ; VOL UP + BUT_MAC 165,217,10,COLOR_PURPLE,08000000H,0,0 ; VOL DOWN + BUT_MAC 280,199,10,COLOR_PURPLE,20000000H,0,0 ; COINDOOR INTERLOCK + BUT_MAC 332,228,10,COLOR_GREEN,80000000H,0,0 ; BILL VALIDATOR INPUT + + .LONG 0 + + + ; X,Y,RADIUS,COLOR,MASK,SHIFT,EXTEND +JOY_TABLE + BUT_MAC P1BC,110,16,CFILL+ROBO_RED,0fH,0,0 ; P1 MOVE + BUT_MAC P3BC,110,16,CFILL+ROBO_RED,0f00H,8,0 ; P2 MOVE + .LONG 0 + + +STR_TABLE + STR_MAC P1BC-24,47,P1START,ROBO_RED,0 ; P1 START + STR_MAC P3BC-24,47,P2START,ROBO_RED,0 ; P2 START + STR_MAC 70,162,GETOUT1,ROBO_LASER,0 ;GET OUT MESSAGE 1 + STR_MAC 12,225,LEFTSLOT,COLOR_GREEN,0 ;LEFT COIN + STR_MAC 103,197,CENTER,COLOR_GREEN,0 ;CENTER COIN + STR_MAC 103,230,FOURTH,COLOR_GREEN,0 ;COIN MIDDLE + STR_MAC 56,225,RIGHTSLOT,COLOR_PURPLE,0 ;RIGHT COIN + STR_MAC 10,214,COINMESS1,COLOR_GREEN,0 ;BOTTOM MESSAGE + STR_MAC 55,214,COINMESS2,COLOR_PURPLE,0 + STR_MAC 193,214,SERVICE1,COLOR_GREEN,0 ;SERVICE CREDIT + STR_MAC 197,225,SERVICE2,COLOR_GREEN,0 ;SERVICE CREDIT + STR_MAC 347,181,SLAM,COLOR_GREEN,0 ;SLAM + STR_MAC 347,204,TEST,COLOR_GREEN,0 ;TEST SWITCH + STR_MAC 143,197,VOLUPMESS,COLOR_PURPLE,0 ;VOLUME UP + STR_MAC 143,230,VOLDOWNMESS,COLOR_PURPLE,0 ;VOLUME DOWN + STR_MAC 252,214,CDINTERLOCK1,COLOR_PURPLE,0 ;COINDOOR INTERLOCK 1 + STR_MAC 252,225,CDINTERLOCK2,COLOR_PURPLE,0 ;COINDOOR INTERLOCK 2 + STR_MAC 347,227,BILLVALID,COLOR_GREEN,0 ;BILL VALIDATOR + + STR_MAC P1BC-15,110-3,J1MESS,ROBO_WHITE,0 + STR_MAC P3BC-15,110-3,J2MESS,ROBO_WHITE,0 + + .LONG 0 + + +BUT_STRS + + .LONG 0 + +************************************************************************** +* * +* DIP SWITCH DISPLAY STUFF * +* * +************************************************************************** +DIP_VECS: + VECMAC COLOR_RED,20,82,60,82 ; DS1 + VECMAC COLOR_RED,20,82,20,188 + VECMAC COLOR_RED,20,188,60,188 + VECMAC COLOR_RED,60,82,60,188 + + VECMAC COLOR_RED,230,82,270,82 ; DS2 + VECMAC COLOR_RED,230,82,230,188 + VECMAC COLOR_RED,230,188,270,188 + VECMAC COLOR_RED,270,82,270,188 + + VECMAC COLOR_WHITE,63,92,73,92 + + + VECMAC COLOR_WHITE,63,104,68,104 ;COINAGE MODE + VECMAC COLOR_WHITE,63,128,68,128 + VECMAC COLOR_WHITE,68,104,68,128 + VECMAC COLOR_WHITE,68,116,73,116 + + VECMAC COLOR_WHITE,63,140,68,140 ;COUNTRY + VECMAC COLOR_WHITE,63,152,68,152 + VECMAC COLOR_WHITE,68,140,68,152 + VECMAC COLOR_WHITE,68,146,73,146 + + VECMAC COLOR_WHITE,63,164,68,164 ;COIN COUNTER MODE + VECMAC COLOR_WHITE,63,176,68,176 + VECMAC COLOR_WHITE,68,164,68,176 + VECMAC COLOR_WHITE,68,170,73,170 + + VECMAC COLOR_WHITE,273,92,283,92 ;# OF PLAYERS + + VECMAC COLOR_WHITE,273,104,283,104 ;UNUSED + + VECMAC COLOR_WHITE,273,116,283,116 ;UNUSED + + VECMAC COLOR_WHITE,273,128,283,128 ;UNUSED + + VECMAC COLOR_WHITE,273,140,283,140 ;UNUSED + + VECMAC COLOR_WHITE,273,152,283,152 ;UNUSED + + + + VECMAC COLOR_WHITE,273,164,283,164 ;UNUSED + + VECMAC COLOR_WHITE,273,176,283,176 ;TEST SWITCH + + .LONG 0 + +DIP_STRS: + STR_MAC 30,70,DP_DS1,COLOR_WHITE,0 + STR_MAC 240,70,DP_DS2,COLOR_WHITE,0 + STR_MAC 7,89,DP_DSN1,COLOR_WHITE,0 + STR_MAC 7,101,DP_DSN2,COLOR_WHITE,0 + STR_MAC 7,113,DP_DSN3,COLOR_WHITE,0 + STR_MAC 7,125,DP_DSN4,COLOR_WHITE,0 + STR_MAC 7,137,DP_DSN5,COLOR_WHITE,0 + STR_MAC 7,149,DP_DSN6,COLOR_WHITE,0 + STR_MAC 7,161,DP_DSN7,COLOR_WHITE,0 + STR_MAC 7,173,DP_DSN8,COLOR_WHITE,0 + + STR_MAC 217,89,DP_DSN1,COLOR_WHITE,0 + STR_MAC 217,101,DP_DSN2,COLOR_WHITE,0 + STR_MAC 217,113,DP_DSN3,COLOR_WHITE,0 + STR_MAC 217,125,DP_DSN4,COLOR_WHITE,0 + STR_MAC 217,137,DP_DSN5,COLOR_WHITE,0 + STR_MAC 217,149,DP_DSN6,COLOR_WHITE,0 + STR_MAC 217,161,DP_DSN7,COLOR_WHITE,0 + STR_MAC 217,173,DP_DSN8,COLOR_WHITE,0 + + STR_MAC 100,230,DP_INS1,ROBO_LASER,0 + + .LONG 0 + +DP_DS1: + .STRING "SW2",0 + .EVEN +DP_DS2: + .STRING "SW1",0 + .EVEN +DP_DSN1 + .STRING "8",0 + .EVEN +DP_DSN2 + .STRING "7",0 + .EVEN +DP_DSN3 + .STRING "6",0 + .EVEN +DP_DSN4 + .STRING "5",0 + .EVEN +DP_DSN5 + .STRING "4",0 + .EVEN +DP_DSN6 + .STRING "3",0 + .EVEN +DP_DSN7 + .STRING "2",0 + .EVEN +DP_DSN8 + .STRING "1",0 + .EVEN + +TD_ON: + .string "TIME/DATE",0 + .even +TD_OFF: + .string "NO TIME/DATE",0 + .even +DUSECMOS_1: + .STRING "CMOS COINAGE",0 + .EVEN + +DUSECMOS_0: + .STRING "DIPSWITCH COINAGE",0 + .EVEN + +DMIRROR_0 + .STRING "MIRROR DISPLAY",0 + .EVEN + +DMIRROR_1 + .STRING "NORMAL DISPLAY",0 + .EVEN + +DCOUNTER_0a + .STRING "ONE COIN COUNTER",0 + .EVEN +DCOUNTER_0b + .STRING "1 COUNT/COIN",0 + .EVEN + +DCOUNTER_1a + .STRING "TWO COIN COUNTERS",0 + .EVEN +DCOUNTER_1b + .STRING "1 COUNT/COIN",0 + .EVEN + +DCOUNTER_2a + .STRING "ONE COIN COUNTER",0 + .EVEN +DCOUNTER_2b + .STRING "TOTALIZING ",0 + .EVEN + + +DCOUNTER_TAB + .LONG DCOUNTER_0a, DCOUNTER_0b + .LONG DCOUNTER_1a, DCOUNTER_1b + .LONG DCOUNTER_2a, DCOUNTER_2b + .LONG DCOUNTER_0a, DCOUNTER_0b + +DCOINAGE + .STRING "COINAGE",0 + .EVEN + +DCOUNTRY_0 + .STRING "USA",0 + .EVEN +DCOUNTRY_2 + .STRING "FRENCH",0 + .EVEN + + .if 0 +DPLAYER_TAB + .LONG DPLAYER_0, DPLAYER_1 + .endif + +DCOUNTRY_1 + .STRING "GERMAN",0 + .EVEN + +DCOUNTRY_TAB + .LONG DCOUNTRY_0, DCOUNTRY_1, DCOUNTRY_2, DCOUNTRY_3 + +DCREDITS + .STRING "CREDITS...",0 + .EVEN +DTOSTART + .STRING "TO START",0 + .EVEN +DTOCONTINUE + .STRING "TO CONTINUE",0 + .EVEN + +DTEST_0 + .STRING "TEST SWITCH",0 + .EVEN + + .if 0 +DPLAYER_0 + .STRING "4 PLAYER KIT",0 + .EVEN +DPLAYER_1 + .STRING "2 PLAYER KIT",0 + .EVEN + .endif + +DNOVALIDATOR + .STRING "NO VALIDATOR",0 + .EVEN +DVALIDATOR + .STRING "VALIDATOR INST.",0 + .EVEN +DCLIPS + .STRING "UNUSED",0 + .EVEN +DNOCLIPS + .STRING "UNUSED",0 + .EVEN +DPOWER + .STRING "POWERUP TEST",0 + .EVEN +DNOPOWER + .STRING "SKIP TEST",0 + .EVEN + +DUCOIN7 + .STRING "FREEPLAY",0 + .EVEN + +DCOINTAB + .LONG DUCOINTAB, DGCOINTAB, DFCOINTAB, DUCOINTAB + +DP_TITLE + .STRING "DIPSWITCH SETTINGS",0 + .EVEN + +DP_INS1 + .STRING "PRESS ANY BUTTON TO EXIT",0 + .EVEN + +DP_ON + .STRING "ON",0 + .EVEN +DP_OFF + .STRING "OFF",0 + +DUNUSED +DGCOIN4 +DCOUNTRY_3 + .STRING "UNUSED",0 + .EVEN + +DUCOINTAB + .LONG USA_1,USA_2,USA_3,USA_4,USA_ELECTITLE,DGCOIN4 + .LONG DGCOIN4,DUCOIN7 + +DGCOINTAB + .LONG GERMAN_1,GERMAN_2,GERMAN_3,GERMAN_4,GERMAN_ELECTITLE + .LONG DGCOIN4,DGCOIN4,DUCOIN7 + +DFCOINTAB + .LONG FRENCH_1,FRENCH_2,FRENCH_3,FRENCH_4,FRENCH_ELECTITLE + .LONG DGCOIN4,DGCOIN4,DUCOIN7 + +DCREDTAB + .LONG DP_DSN2,DP_DSN1 + .LONG DP_DSN1,DP_DSN1 + .LONG DP_DSN2,DP_DSN2 + .LONG DP_DSN3,DP_DSN1 + .LONG DP_DSN4,DP_DSN1 + .LONG DP_DSN3,DP_DSN2 + .LONG DP_DSN4,DP_DSN2 + .LONG DP_DSN3,DP_DSN3 + + + .if 0 +dip_t + STR_MAC 090h,20h,DIPMES0,ROBO_YELLOW,0 ;DIP SWITCH TEST + STR_MAC DS1_XPOS+16,3Ch,DIPMES1,ROBO_GREEN,0 ;DIP SWITCH 1 + STR_MAC DS2_XPOS+16,3Ch,DIPMES2,ROBO_GREEN,0 ;DIP SWITCH 2 + STR_MAC 200-12*8,220,GETOUT2,ROBO_GREEN,0 ;exit message + .LONG 0 + +dipline_t + .word 20,10,379,10 + .word 379,10,379,245 + .word 379,245,20,245 + .word 20,245,20,10 + + .word DS1_XPOS+12,DIP_YPOS-4, DS1_XPOS+43,DIP_YPOS-4 + .word DS1_XPOS+12,DIP_YPOS+109, DS1_XPOS+43,DIP_YPOS+109 + .word DS1_XPOS+12,DIP_YPOS-4, DS1_XPOS+12,DIP_YPOS+109 + .word DS1_XPOS+43,DIP_YPOS-4, DS1_XPOS+43,DIP_YPOS+109 + + .word DS2_XPOS+12,DIP_YPOS-4, DS2_XPOS+43,DIP_YPOS-4 + .word DS2_XPOS+12,DIP_YPOS+109, DS2_XPOS+43,DIP_YPOS+109 + .word DS2_XPOS+12,DIP_YPOS-4, DS2_XPOS+12,DIP_YPOS+109 + .word DS2_XPOS+43,DIP_YPOS-4, DS2_XPOS+43,DIP_YPOS+109 + + .long -1 + +dipline2 + .word DS1_XPOS+45,DIP_YPOS+3, DS1_XPOS+48,DIP_YPOS+3 + .word DS1_XPOS+45,DIP_YPOS+4+5*14, DS1_XPOS+48,DIP_YPOS+4+5*14 + .word DS1_XPOS+48,DIP_YPOS+3, DS1_XPOS+48,DIP_YPOS+4+5*14 + .word DS1_XPOS+49,DIP_YPOS-2+3*14, DS1_XPOS+51,DIP_YPOS-2+3*14 + .word DS1_XPOS+45,DIP_YPOS+4+6*14, DS1_XPOS+51,DIP_YPOS+4+6*14 + .word DS2_XPOS+45,DIP_YPOS+4, DS2_XPOS+51,DIP_YPOS+4 + .long -1 + +country_text + .long cntry0,cntry1,cntry2,cntry3 ;4 + .long cntry4,cntry5,cntry6,cntry7 ;8 + .long cntry8,cntry9,cntry10,cntry11 ;12 + .long cntry12,cntry13,cntry14,cntry15 ;16 + .long cntry16,cntry17,cntry18,cntry19 ;20 + .long cntry20,cntry21,cntry22,cntry23 ;24 + .long cntry24,cntry25,cntry26,cntry0 ;28 + .long cntry0,cntry0,cntry0,cntry0 ;32 + + .long cntry0,cntry0,cntry0,cntry0 ;36 + .long cntry0,cntry0,cntry0,cntry0 ;40 + .long cntry0,cntry0,cntry0,cntry0 ;44 + .long cntry0,cntry0,cntry0,cntry0 ;48 + .long cntry0,cntry0,cntry0,cntry0 ;52 + .long cntry0,cntry0,cntry0,cntry0 ;56 + .long cntry0,cntry0,cntry0,cntry0 ;60 + .long cntry0,cntry0,cntry0,cntry0 ;64 + +cntry0 .string "USA 1",0 ;0 +cntry1 .string "USA 2",0 ;1 +cntry2 .string "USA 3",0 ;2 +cntry3 .string "GERMANY 1",0 ;3 +cntry4 .string "GERMANY 2",0 ;4 +cntry5 .string "GERMANY 3",0 ;5 +cntry6 .string "FRANCE 1",0 ;6 +cntry7 .string "FRANCE 2",0 ;7 +cntry8 .string "FRANCE 3",0 ;8 +cntry9 .string "SWISS 1",0 ;9 +cntry10 .string "ITALY",0 ;10 +cntry11 .string "UK 1",0 ;11 +cntry12 .string "UK 2",0 ;12 +cntry13 .string "UK ELEC",0 ;13 +cntry14 .string "SPAIN 1",0 ;14 +cntry15 .string "AUSTRALIA 1",0 ;15 +cntry16 .string "JAPAN 1",0 ;16 +cntry17 .string "JAPAN 2",0 ;17 +cntry18 .string "AUSTRIA 1",0 ;18 +cntry19 .string "BELGIUM 1",0 ;19 +cntry20 .string "BELGIUM 2",0 ;20 +cntry21 .string "SWEDEN",0 ;21 +cntry22 .string "NEW ZEALAND",0 ;22 +cntry23 .string "NETHERLANDS",0 ;23 +cntry24 .string "FINLAND",0 ;24 +cntry25 .string "NORWAY",0 ;25 +cntry26 .string "DENMARK",0 ;26 + +DIP_COIN1 .string "CMOS COINAGE",0 +DIP_COIN2 .string "DIP COINAGE",0 +DIP_TESTSW1 .string "TEST MODE",0 +DIP_TESTSW2 .string "GAME MODE",0 + +DIPMES0 .STRING "DIP SWITCH TEST",0 +DIPMES1 .STRING "DS1",0 +DIPMES2 .STRING "DS2",0 +DIPMES01 .string "1",0 +DIPMES02 .string "2",0 +DIPMES03 .string "3",0 +DIPMES04 .string "4",0 +DIPMES05 .string "5",0 +DIPMES06 .string "6",0 +DIPMES07 .string "7",0 +DIPMES08 .string "8",0 +DIPMES18 + .STRING "1 2 3 4 5 6 7 8",0 +DIPON .STRING "ON",0 +DIPOFF .STRING "OFF",0 + + .endif + +LEFTSLOT + .STRING "LEFT",0 + .EVEN +RIGHTSLOT + .STRING "RIGHT",0 + .EVEN +SERVICE1 + .STRING "SERVICE",0 + .EVEN +SERVICE2 + .STRING "CREDIT",0 + .EVEN + +COINMESS1 + .STRING "COIN1",0 + .EVEN +COINMESS2 + .STRING "COIN2",0 + .EVEN + +CENTER + .STRING "COIN3",0 + .EVEN +FOURTH + .STRING "COIN4",0 + .EVEN +SLAM .string "SLAM",0 + .even +VOLUPMESS + .string "VOL UP",0 + .even +VOLDOWNMESS + .string "VOL DN",0 + .even +CDINTERLOCK1 + .string "COINDOOR",0 + .even +CDINTERLOCK2 + .string "INTERLOCK",0 + .even +BILLVALID + .string "BILL IN",0 + .even + +TEST + .STRING "TEST",0 + .EVEN +SEC_MESS_1 + .string "LEVEL 1 SECURITY CHECK",0 + .even +SEC_MESS_2 + .string "LEVEL 2 SECURITY CHECK FAILURE",0 + .even + + +J1MESS .string "JOY1",0 +J2MESS .string "JOY2",0 + +GETOUT2 .STRING "PRESS ANY BUTTON TO EXIT",0 +GETOUT1 .STRING "PRESS START 1 AND START 2 TO EXIT",0 + .EVEN + +STSTART .STRING "WRESTLEMANIA SWITCHES",0 + .EVEN + +P1START .STRING "START 1",0 + .EVEN +P2START .STRING "START 2",0 + .EVEN + +LEFTMESS + .STRING "LFT",0 + .EVEN +RIGHTMESS + .STRING "RT",0 + .EVEN +UPMESS + .STRING "UP",0 + .EVEN +DOWNMESS + .STRING "DWN",0 + .EVEN + +P1MOVE + .STRING "P1 MOVE",0 + .EVEN +P2MOVE + .STRING "P2 MOVE",0 + .EVEN + + +**************************************************************************** +* INITCOLR: INITIALIZE COLORS; ROUTINE LOADS PALETTE 0 WITH THE COLOR * +* PALETTE USED BY DIAGNOSTIC TESTS. * +**************************************************************************** + +INITCOLR + + MOVI COLRAM,A0,L ; PALETTE LOCATION + MOVI DIAGP,A1,L + MOVE *A1+,A2,W ; LENGTH OF PALETTE +LPLP1 + MOVE *A1+,*A0+,W + DSJS A2,LPLP1 ; KEEP ON CHUGGIN, BABY + + CLR A14 + MOVE A14, @CMAPSEL + + FRET B5 +**************************************************************************** +* POINT: FUNCTION DISPLAYS A POINT OF ANY COLOR. * +* * +* ENTRY: A0 = XY SCREEN ADDRESS OF THE POINT * +* A1 = COLOR VALUE * +* B6 = RETURN ADDRESS * +* * +* USES: A0, A1, B2, B3, B4, B6, B10 * +**************************************************************************** + +POINT: + ADDI SCRXFUDGE,A0 + + MOVI SCRN_PTCH, DPTCH + CLR OFFSET + + LMO DPTCH, B10 + MOVE B10, @CONVDP + + PIXT A1, *A0.XY + + FRET B6 + +**************************************************************************** +* RECTANGLE: FUNCTION DISPLAYS A RECTANGLE OF ANY COLOR. * +* * +* ENTRY: A0 = XY SCREEN ADDRESS OF UPPER LEFT CORNER * +* A1 = XY RECTANGLE DIMENSIONS * +* A2 = COLOR VALUE * +* * +* B6 = RETURN ADDRESS * +* * +* USES: A0, A1, A2, B2, B3, B4, B6, B7, B9, B10 * +**************************************************************************** + +RECTANGLE: + ADDI SCRXFUDGE,A0 + + MOVI SCRN_PTCH, DPTCH + CLR OFFSET + + LMO DPTCH, B10 + MOVE B10, @CONVDP + + MOVE A2, COLOR1 + MOVE A0, DADDR + MOVE A1, DYDX + move a1,@_temporary,L ;Temporary Storage fer these + move a2,SADDR + move @CONTROL,a1,W + move a1,a2 + andni 020h,a2 + move a2,@CONTROL,W ; Pixel Transparency OFF + move a2,a2 + + FILL XY + + move a1,@CONTROL,W ; Restore Pixel Transparency + move SADDR,a2 ; Restore these reggies + move @_temporary,a1,L + + SUBI SCRXFUDGE,A0 + + FRET B6 + +**************************************************************************** +* LINE: FUNCTION DRAWS HORIZONTAL OR VERTICAL LINES OF ANY COLOR. +* +* ENTRY: A0 = BEGINNING XY SCREEN ADDRESS +* A1 = ENDING XY SCREEN ADDRESS +* A2 = COLOR VALUE +* +* B6 = RETURN ADDRESS +* +* USES: A0-A4, B3,B4,B6,B9,B10 +**************************************************************************** + +HVLINE + MOVI SCRXFUDGE,A3 + ADDXY A3,A0 + ADDXY A3,A1 + + MOVI SCRN_PTCH,DPTCH + CLR OFFSET + + LMO DPTCH,B10 + MOVE B10,@CONVDP + + MOVE A2,COLOR1 + + MOVK 1, A2 ; DRAV DX: ASSUME HORIZONTAL LINE + + MOVE A0,A3 ; DETERMINE (P2 > P1) OR (P2 < P1) + CVXYL A3,A3 + + MOVE A1,A4 + CVXYL A4,A4 + + CMP A3,A4 ; IF (P2 < P1) ~(INCREMENT) + JRP $100 + + NEG A2 ; INCREMENT IS A SIGNED WORD + ZEXT A2 + +$100 CMPXY A0,A1 ; IF VERTICAL LINE + JRZ $110 ; DRAV DX -> DRAV DY + SLL 16,A2 + +$110 DRAV A2,A0 ; DRAW LINE + CMPXY A0,A1 + JRNN $110 + JRNZ $110 + + FRET B6 + + +******************************** +* Draw a line +* A0=YX Start +* A1=YX End +* A2=Color +* B6=Return addr +* Trashes B0-B5,B7-B13 + + SUBRP line_draw + + ADDI SCRXFUDGE,A0 + ADDI SCRXFUDGE,A1 + + move a2,COLOR1 + movi SCRN_PTCH,DPTCH + clr OFFSET ;B4 + lmo DPTCH,b0 + move b0,@CONVDP + + move a0,b2 ;YX strt + move a1,b10 ;YX end + clr b7 ;b:a + subxy b2,b10 + jrnc bpos + jrnv bneg_apos + subxy b10,b7 + movi -1,b11 + jruc cmp_b_a +bneg_apos + subxy b10,b7 + movx b10,b7 + movi >ffff0000,b11 + jruc cmp_b_a +bpos jrnv bpos_apos +bpos_aneg + subxy b10,b7 + movy b10,b7 + movi >1ffff,b11 + jruc cmp_b_a +bpos_apos + move b10,b7 + movi >10001,b11 +cmp_b_a clr b12 + + move b7,b0 + srl 16,b0 + clr b10 + movx b7,b10 + cmp b0,b10 + jrgt a_ge_b + + move b0,b10 + movx b7,b0 + rl 16,b7 ;Swap b:a + movy b11,b12 + sll 1,b0 + sub b10,b0 + addk 1,b10 + move b11,b11 + jrn line1 +line0 line 0 + jruc ldx + +a_ge_b movx b11,b12 + sll 1,b0 + sub b10,b0 + move b11,b11 + jrnn line0 +line1 line 1 + +ldx FRET B6 + + +**************************************************************************** +* STRING: FUNCTION DISPLAYS AN ASCII STRING OF ANY COLOR EITHER VERTICALLY +* OR HORIZONTALLY. +* +* ENTRY: A0 = STARTING STRING ADDRESS +* A1 = Y:X SCREEN ADDRESS +* A2 = DIRECTION +* A3 = COLOR +* +* B6 = RETURN ADDRESS +* +* USES: A0 - A6, B0 - B4, B6 - B14 +**************************************************************************** +STRNEW1 + MMTM SP,A1,A2,A3,A4,A5,A6 + FCALL STRING,B6 + MMFM SP,A1,A2,A3,A4,A5,A6 + RETS +STRNEW + PUSH a0 + CALLR STRNEW1 + MMFM SP,A0 + RETS + +STRING + ADDI SCRXFUDGE,A1 + + MOVI SCRN_PTCH,DPTCH + CLR OFFSET + + LMO DPTCH,B10 + MOVE B10,@CONVDP + + MOVE A3,COLOR1 + CLR COLOR0 + + +$200 MOVB *A0,A4 ;GET CHARACTER + JRZ $230 ;QUIT IF NULL + + ADDK 8,A0 + SUBK 32,A4 ;GET POINTER TO CHARACTER HEADER + SLL 3,A4 + ADDI SYSFONT,A4,L + MOVB *A4,A4 + SLL 5,A4 + ADDI T2_SP,A4 + MOVE *A4+,A5 ;CHAR DIMENSIONS + MOVE A5,A6 ;SPLIT UP BYTE + SLL 12,A6 ;SHIFT UP HEIGHT TO Y + SLL 28,A5 ;STRIP AWAY HEIGHT + SRL 28,A5 + MOVY A6,A5 + RL 16,A5 + MOVE A5,DYDX + + CLR A6 ;A6 = CHAR WIDTH + MOVX A5,A6 + + ADDK 7, A6 ;ROUND UP WIDTH TO INTEGRAL NUMBER + SRL 3, A6 ;OF BYTES = SOURCE PITCH + SLL 3, A6 + MOVE A6,SPTCH + + MOVE *A4,A6 ;CHAR DATA + ADDI CBASE,A6 + MOVE A6,SADDR + + MOVE A1,DADDR + + PIXBLT B,XY + + CLR A6 + MOVE A2,A2 + JRZ $210 + + MOVY A5,A6 ;A1 += (CHAR HEIGHT + SPACING) + SRL 16,A6 ;DIRECTION = DOWN + ADDK 1,A6 + SLL 16,A6 + ADD A6,A1 + JRUC $200 + +$210 MOVX A5,A6 ;A1 += (CHAR WIDTH + SPACING) + ADDK 2,A6 ;DIRECTION = RIGHT + ADD A6,A1 + JRUC $200 + +$230 ;SETF 16, 1, 0 + FRET B6 + +STRINGCENTER: + SETF 8, 0, 0 + CLR A1 + MOVE A0,A2 +SPLLOOP + MOVE *A0+, A4 ; GET THE CHAR + JRZ SPLEND ; END OF STRING + + SUBK 32, A4 ; GET POINTER TO CHARACTER HEADER + + SLL 3,A4 + ADDI SYSFONT,A4,L + MOVB *A4,A4 + SLL 5,A4 + ADDI T2_SP,A4 + + MOVE *A4+, A5, 1 ; CHAR DIMENSIONS + ZEXT A5 + + SRL 4,A5 ; GET JUST THE X DIMENSION + + + ADDK 2H, A5 ; GIVE IN TO SPACING + ADD A5, A1 + JRUC SPLLOOP + +SPLEND + SETF 16, 1, 0 + MOVE A2,A0 ; RESTORE STRING ADDRESS + SRL 1,A1 + MOVI 200,A2 + SUB A1,A2 + MOVE A2,A1 + FRET B6 + +;**************************************************************************** +;* CIRCLE: FUNCTION DRAWS OUTLINE OR FILLED CIRCLES. * +;* * +;* ENTRY: A0 = radius * +;* A1 = center (Y:X) * +;* A6 = <00:15> = color * +;* A6 = <15:31> = fill: 0=no fill, 1=fill * +;* * +;* USES: A0 - A8, B0, B10 * +;**************************************************************************** + +CIRCLE + ADDI SCRXFUDGE,A1 + + movi plot8,a7 ; assume no fill + btst 16,a6 + jrz CIRC0 + movi fill4,a7 +CIRC0 + movi SCRN_PTCH,DPTCH ;Restore screen pitch and convdp + movk >13,b10 ;this is faster + MOVE B10,@CONVDP + MOVE A6,COLOR1 + movi [1,0],DYDX ; Y width always 1 + + clr a2 ; x = 0 + move a0,a3 ; y = r + move a0,a4 + sll 1,a4 + subk 3,a4 + neg a4 ; d = 3 - 2*r +cloop + cmp a3,a2 ; if x > y, we are done + jrgt done + + MOVE A7,B0 ; PLOT ROUTINE + EXGPC B0 + + move a2,a5 ; x -> a5 + btst 31,a4 + jrz dpos ; branch if d is positive + + + sll 2,a5 ; 4*x -> a5 + addk 6,a5 ; 4*x+6 -> a5 + jruc cont + + +dpos sub a3,a5 ; x-y -> a5 + sll 2,a5 ; 4*(x-y) -> a5 + addk 10,a5 ; 4*(x-y)+10 -> a5 + subk 1,a3 ; y = y - 1 + +cont add a5,a4 ; d = d + a5 + addk 1,a2 ; x = x + 1 + jruc cloop + +done FRET B6 + +plot8 + move a3,a5 + neg a5 ; -y into a5; +y in a3 + sll 16,a5 + sll 16,a3 + movx a2,a5 ; a3 = (y:x) + movx a2,a3 ; a5 = (-y:x) + + movk 2,a8 +put4 + move a1,a0 ; center (Y:X) in a0 + addxy a3,a0 ; (cx+x),(cy+y) + pixt a6,*a0.XY + move a1,a0 ; center (Y:X) in a0 + addxy a5,a0 ; (cx+x),(cy-y) + pixt a6,*a0.XY + move a1,a0 ; center (Y:X) in a0 + subxy a3,a0 ; (cx-x),(cy-y) + pixt a6,*a0.XY + move a1,a0 ; center (Y:X) in a0 + subxy a5,a0 ; (cx-x),(cy+y) + pixt A6,*a0.XY + rl 16,a3 + rl 16,a5 ; transpose x and y + dsj a8,put4 + sra 16,a3 ; restore y + + FRET B0 + +fill4: + move a2,b10 ; x + sll 1,b10 ; 2x + movx b10,DYDX ; delta x = 2x + move a3,a5 + neg a5 ; -y into a5 +y in a3 + sll 16,a5 + sll 16,a3 + movx a2,a5 ; a3 = (y:x) + movx a2,a3 ; a5 = (-y:x) + movk 2,a8 +put2: + move a1,a0 + subxy a5,a0 + move a0,DADDR + fill XY + + move a1,a0 + subxy a3,a0 + move a0,DADDR + fill XY + rl 16,a3 ; a3 = (x:y) + rl 16,a5 ; transpose x and y + clr a6 + subxy a5,a6 + move a6,a5 ; a5 = (-x:y) + move a3,b10 ; y + sll 1,b10 ; 2y + movx b10,DYDX ; delta x = 2y + dsj a8,put2 + sra 16,a3 ; restore y + + FRET B0 + +******************************** +*SCRCLR - CLEAR ENTIRE BIT MAP +* USES:B2,B3,B4 CALL WITH B6 +DSCRCLR + CLR B2 +DSWRITE + CLR B3 + MOVE B3,@DMACMAP,0 + MOVI SCREEN,B3,L + MOVI (SCRNE-SCREEN)/32,B4,L +SCRLP MOVE B2,*B3+,L + DSJS B4,SCRLP + FRET B6 + + + +************************************************************************** +* * +* CPU BOARD INFORMATION * +* * +************************************************************************** + +CPU_VECS: + VECMAC COLOR_WHITE,5,5,5,243 ; BOARD OUTLINE + VECMAC COLOR_WHITE,5,243,390,243 + VECMAC COLOR_WHITE,390,243,390,5 + VECMAC COLOR_WHITE,390,5,355,5 + VECMAC COLOR_WHITE,355,5,355,10 + VECMAC COLOR_WHITE,355,10,343,10 + VECMAC COLOR_WHITE,343,10,343,5 + VECMAC COLOR_WHITE,343,5,326,5 + VECMAC COLOR_WHITE,326,5,326,10 + VECMAC COLOR_WHITE,326,10,323,10 + VECMAC COLOR_WHITE,323,10,323,5 + VECMAC COLOR_WHITE,323,5,212,5 + VECMAC COLOR_WHITE,212,5,212,10 + VECMAC COLOR_WHITE,212,10,200,10 + VECMAC COLOR_WHITE,200,10,200,5 + VECMAC COLOR_WHITE,200,5,5,5 + .LONG 0 + +CPUXBASE EQU 5 +CPUYBASE EQU 5 + + +CPU_CHIPS: +CRAM1 CHIPMAC 0,347,152,30,13,5,3,CNAMEU36,0,28,2,1 ; COLOR RAM (U36) +CRAM2 CHIPMAC 1,313,152,30,13,5,3,CNAMEU37,0,28,2,1 ; COLOR RAM (U37) + +VRAM1 CHIPMAC 2,347,207,38,13,8,3,CNAMEU14,0,36,2,1 ; BANK 1 VIDEO RAM (U14) +VRAM2 CHIPMAC 3,307,207,38,13,8,3,CNAMEU15,0,36,2,1 ; (PALETTE) (U15) +VRAM3 CHIPMAC 4,267,207,38,13,8,3,CNAMEU16,0,36,2,1 ; (U16) +VRAM4 CHIPMAC 5,227,207,38,13,8,3,CNAMEU17,0,36,2,1 ; (U17) + +VRAM5 CHIPMAC 6,347,225,38,13,8,3,CNAMEU10,0,36,2,1 ; BANK 2 VIDEO RAM (U10) +VRAM6 CHIPMAC 7,307,225,38,13,8,3,CNAMEU11,0,36,2,1 ; (PIXEL) (U11) +VRAM7 CHIPMAC 8,267,225,38,13,8,3,CNAMEU12,0,36,2,1 ; (U12) +VRAM8 CHIPMAC 9,227,225,38,13,8,3,CNAMEU13,0,36,2,1 ; (U13) + +CPU CHIPMAC 0,330,50,35,35,7,13,CNAMEU59,0,3,3,1 ; CPU (U59) + +DMA CHIPMAC 0,246,157,38,38,8,16,CNAMEU33,0,3,3,1 ; DMA (U33) + +PROM1 CHIPMAC 1,220,65,40,13,9,3,CNAMEU63,0,38,2,1 ; PROGRAM ROM 1 (U63) +PROM2 CHIPMAC 0,220,83,40,13,9,3,CNAMEU54,0,38,2,1 ; PROGRAM ROM 2 (U54) + +IROM1 CHIPMAC 1,10,122,40,13,6,3, CNAMEU133,0,38,2,1 ; IMAGE ROM (U133) +IROM2 CHIPMAC 2,52,122,40,13,6,3, CNAMEU132,0,38,2,1 ; IMAGE ROM (U132) +IROM3 CHIPMAC 3,94,122,40,13,6,3, CNAMEU131,0,38,2,1 ; IMAGE ROM (U131) +IROM4 CHIPMAC 4,136,122,40,13,6,3, CNAMEU130,0,38,2,1 ; IMAGE ROM (U130) + +IROM5 CHIPMAC 5,10,137,40,13,6,3, CNAMEU129,0,38,2,1 ; IMAGE ROM (U129) +IROM6 CHIPMAC 6,52,137,40,13,6,3, CNAMEU128,0,38,2,1 ; IMAGE ROM (U128) +IROM7 CHIPMAC 7,94,137,40,13,6,3, CNAMEU127,0,38,2,1 ; IMAGE ROM (U127) +IROM8 CHIPMAC 8,136,137,40,13,6,3, CNAMEU126,0,38,2,1 ; IMAGE ROM (U126) + +IROM9 CHIPMAC 9,10,152,40,13,6,3, CNAMEU125,0,38,2,1 ; IMAGE ROM (U125) +IROM10 CHIPMAC 10,52,152,40,13,6,3, CNAMEU124,0,38,2,1 ; IMAGE ROM (U124) +IROM11 CHIPMAC 11,94,152,40,13,6,3, CNAMEU123,0,38,2,1 ; IMAGE ROM (U123) +IROM12 CHIPMAC 12,136,152,40,13,6,3,CNAMEU122,0,38,2,1 ; IMAGE ROM (U122) + +IROM13 CHIPMAC 13,10,167,40,13,6,3, CNAMEU121,0,38,2,1 ; IMAGE ROM (U121) +IROM14 CHIPMAC 14,52,167,40,13,6,3, CNAMEU120,0,38,2,1 ; IMAGE ROM (U120) +IROM15 CHIPMAC 15,94,167,40,13,6,3, CNAMEU119,0,38,2,1 ; IMAGE ROM (U119) +IROM16 CHIPMAC 16,136,167,40,13,6,3,CNAMEU118,0,38,2,1 ; IMAGE ROM (U118) + +IROM17 CHIPMAC 17,10,182,40,13,6,3, CNAMEU117,0,38,2,1 ; IMAGE ROM (U117) +IROM18 CHIPMAC 18,52,182,40,13,6,3, CNAMEU116,0,38,2,1 ; IMAGE ROM (U116) +IROM19 CHIPMAC 19,94,182,40,13,6,3, CNAMEU115,0,38,2,1 ; IMAGE ROM (U115) +IROM20 CHIPMAC 20,136,182,40,13,6,3,CNAMEU114,0,38,2,1 ; IMAGE ROM (U114) + +IROM21 CHIPMAC 21,10,197,40,13,6,3, CNAMEU113,0,38,2,1 ; IMAGE ROM (U113) +IROM22 CHIPMAC 22,52,197,40,13,6,3, CNAMEU112,0,38,2,1 ; IMAGE ROM (U112) +IROM23 CHIPMAC 23,94,197,40,13,6,3, CNAMEU111,0,38,2,1 ; IMAGE ROM (U111) +IROM24 CHIPMAC 24,136,197,40,13,6,3,CNAMEU110,0,38,2,1 ; IMAGE ROM (U110) + +IROM25 CHIPMAC 25,10,212,40,13,6,3, CNAMEU109,0,38,2,1 ; IMAGE ROM (U109) +IROM26 CHIPMAC 26,52,212,40,13,6,3, CNAMEU108,0,38,2,1 ; IMAGE ROM (U108) +IROM27 CHIPMAC 27,94,212,40,13,6,3, CNAMEU107,0,38,2,1 ; IMAGE ROM (U107) +IROM28 CHIPMAC 28,136,212,40,13,6,3,CNAMEU106,0,38,2,1 ; IMAGE ROM (U106) + +IROM29 CHIPMAC 29,10,227,40,13,6,3, CNAMEU105,0,38,2,1 ; IMAGE ROM (U105) +IROM30 CHIPMAC 30,52,227,40,13,6,3, CNAMEU104,0,38,2,1 ; IMAGE ROM (U104) +IROM31 CHIPMAC 31,94,227,40,13,6,3, CNAMEU103,0,38,2,1 ; IMAGE ROM (U103) +IROM32 CHIPMAC 32,136,227,40,13,6,3,CNAMEU102,0,38,2,1 ; IMAGE ROM (U102) + +SRAM1 CHIPMAC 0,225,101,30,13,4,3,CNAMEU49,0,28,2,1 ; SCRATCH PAD (U49) + +PIC CHIPMAC 0,177,65,40,13,9,3,CNAMEU64,0,38,2,1 ; PIC CHIP (U64) + +SROM1 CHIPMAC 1,49,57,40,13,14,3, CNAMEU2,0,38,2,1 ; Sound Rom (U2) +SROM2 CHIPMAC 2,49,72,40,13,14,3, CNAMEU3,0,38,2,1 ; Sound Rom (U3) +SROM3 CHIPMAC 3,49,87,40,13,14,3, CNAMEU4,0,38,2,1 ; Sound Rom (U4) +SROM4 CHIPMAC 4,49,102,40,13,14,3,CNAMEU5,0,38,2,1 ; Sound Rom (U5) +SROM5 CHIPMAC 5,7,57,40,13,14,3, CNAMEU6,0,38,2,1 ; Sound Rom (U6) +SROM6 CHIPMAC 6,7,72,40,13,14,3, CNAMEU7,0,38,2,1 ; Sound Rom (U7) +SROM7 CHIPMAC 7,7,87,40,13,14,3, CNAMEU8,0,38,2,1 ; Sound Rom (U8) +SROM8 CHIPMAC 8,7,102,40,13,14,3, CNAMEU9,0,38,2,1 ; Sound Rom (U9) + +DSP CHIPMAC 0,118,77,35,35,13,13,CNAMEU1,0,3,3,1 ; Sound DSP (U1) + +SNDRAM1 CHIPMAC 1,115,29,40,13,9,3,CNAMEU86,0,38,2,1 ; Sound Ram 1 (U86) +SNDRAM2 CHIPMAC 2,115,44,40,13,9,3,CNAMEU80,0,38,2,1 ; Sound Ram 2 (U80) +SNDRAM3 CHIPMAC 3,115,59,40,13,9,3,CNAMEU73,0,38,2,1 ; Sound Ram 3 (U73) + .LONG 0 + +VRAMTAB .LONG CRAM1,CRAM2 + .LONG VRAM1,VRAM2,VRAM3,VRAM4,VRAM5,VRAM6 + .LONG VRAM7,VRAM8 + .LONG 0 +PROMTAB .LONG PROM1,PROM2 + .LONG 0 +IROMTAB .LONG IROM1,IROM2,IROM3,IROM4 + .LONG IROM5,IROM6,IROM7,IROM8 + .LONG IROM9,IROM10,IROM11,IROM12 + .LONG IROM13,IROM14,IROM15,IROM16 + .long IROM17,IROM18,IROM19,IROM20 + .long IROM21,IROM22,IROM23,IROM24 + .long IROM25,IROM26,IROM27,IROM28 + .long IROM29,IROM30,IROM31,IROM32 + .LONG 0 +;SRAMTAB .LONG SRAM1,SRAM2,SRAM3,SRAM4 +SRAMTAB .LONG SRAM1 + .LONG 0 +SROMTAB .long SROM1, SROM2, SROM3, SROM4 + .long 0 +SNDRAMTAB + .long SNDRAM1, SNDRAM2, SNDRAM3 + .long 0 + +CNAMEU1 + .string "U1",0 + .even +CNAMEU2 + .string "U2",0 + .even +CNAMEU3 + .string "U3",0 + .even +CNAMEU4 + .string "U4",0 + .even +CNAMEU5 + .string "U5",0 + .even +CNAMEU6 + .string "U6",0 + .even +CNAMEU7 + .string "U7",0 + .even +CNAMEU8 + .string "U8",0 + .even +CNAMEU9 + .string "U9",0 + .even +CNAMEU10 + .string "U10",0 + .even +CNAMEU11 + .string "U11",0 + .even +CNAMEU12 + .string "U12",0 + .even +CNAMEU13 + .string "U13",0 + .even +CNAMEU14 + .string "U14",0 + .even +CNAMEU15 + .string "U15",0 + .even +CNAMEU16 + .string "U16",0 + .even +CNAMEU17 + .string "U17",0 + .even +CNAMEU33 + .string "U33",0 + .even +CNAMEU36 + .string "U36",0 + .even +CNAMEU37 + .string "U37",0 + .even +CNAMEU49 + .string "U49",0 + .even +CNAMEU54 + .string "U54",0 + .even +CNAMEU59 + .string "U59",0 + .even +CNAMEU63 + .string "U63",0 + .even +CNAMEU64 + .string "U64",0 + .even +CNAMEU73 + .string "U73",0 + .even +CNAMEU80 + .string "U80",0 + .even +CNAMEU86 + .string "U86",0 + .even +CNAMEU133 + .string "U133",0 + .even +CNAMEU132 + .string "U132",0 + .even +CNAMEU131 + .string "U131",0 + .even +CNAMEU130 + .string "U130",0 + .even +CNAMEU129 + .string "U129",0 + .even +CNAMEU128 + .string "U128",0 + .even +CNAMEU127 + .string "U127",0 + .even +CNAMEU126 + .string "U126",0 + .even +CNAMEU125 + .string "U125",0 + .even +CNAMEU124 + .string "U124",0 + .even +CNAMEU123 + .string "U123",0 + .even +CNAMEU122 + .string "U122",0 + .even +CNAMEU121 + .string "U121",0 + .even +CNAMEU120 + .string "U120",0 + .even +CNAMEU119 + .string "U119",0 + .even +CNAMEU118 + .string "U118",0 + .even +CNAMEU117 + .string "U117",0 + .even +CNAMEU116 + .string "U116",0 + .even +CNAMEU115 + .string "U115",0 + .even +CNAMEU114 + .string "U114",0 + .even +CNAMEU113 + .string "U113",0 + .even +CNAMEU112 + .string "U112",0 + .even +CNAMEU111 + .string "U111",0 + .even +CNAMEU110 + .string "U110",0 + .even +CNAMEU109 + .string "U109",0 + .even +CNAMEU108 + .string "U108",0 + .even +CNAMEU107 + .string "U107",0 + .even +CNAMEU106 + .string "U106",0 + .even +CNAMEU105 + .string "U105",0 + .even +CNAMEU104 + .string "U104",0 + .even +CNAMEU103 + .string "U103",0 + .even +CNAMEU102 + .string "U102",0 + .even + + +************************************************************************** +* * +* RAM CHIP DATA * +* * +************************************************************************** + +; +; MAKE SURE THESE TABLES CORRESPOND WITH THE STUFF ABOVE +; + +VRAMCHIPS: +; COLOR RAMS + RAM_CHIP 0,1, 8, 16, 1880000H, 18FFFF0H ; U37 ( 0 - 7 ) + RAM_CHIP 0,0, 7, 16, 1880008H, 18FFFF8H ; U36 ( 8 - 14 ) + + +; VIDEO RAMS + RAM_CHIP 0, 8, 8, 32, 0000018H, 03FFFF8H ; U12 + RAM_CHIP 0, 4, 8, 32, 0000010H, 03FFFF0H ; U16 + RAM_CHIP 0, 9, 8, 32, 0000008H, 03FFFE8H ; U13 + RAM_CHIP 0, 5, 8, 32, 0000000H, 03FFFE0H ; U17 + + .LONG 0 + +PALCHIPS: +; VIDEO PALETTE RAMS + RAM_CHIP 0,6, 8, 32, 0000018H, 03FFFF8H ; U10 + RAM_CHIP 0,2, 8, 32, 0000010H, 03FFFF0H ; U14 + RAM_CHIP 0,7, 8, 32, 0000008H, 03FFFE8H ; U11 + RAM_CHIP 0,3, 8, 32, 0000000H, 03FFFE0H ; U15 + .LONG 0 + +; SCRATCH RAMS + +SRAMCHECK + .STRING "CHECKING SCRATCH RAMS",0 + .EVEN + +SRAMCHIPS + RAM_CHIP SRAM1,0, 16, 16, 1000000H, 13FFFF0H ; U49 (0-15) + + .LONG 0 + +**************************************************************************** +* SYSFONT: SYSTEM FONT; MODULE DEFINES THE FONT USED WITH SYSTEM * +* DIAGNOSTICS. * +**************************************************************************** + +; =========================== +; | DYDX CHAR DIMENSIONS | +; | POINTER TO XY CHAR DATA | +; =========================== + +T2_SP .WORD 048h + .word I2_SP-CBASE + +T2_MN .WORD 088h + .WORD I2_MN-CBASE + +T2_PER .WORD 028H + .WORD I2_PER-CBASE + +T2_SLASH + .WORD 068H + .WORD I2_SLASH-CBASE +T2_00 + .WORD 068h + .WORD I2_00-CBASE + +T2_11: + .WORD 068h + .WORD I2_11-CBASE + +T2_22: + .WORD 068h + .WORD I2_22-CBASE + +T2_33: + .WORD 068h + .WORD I2_33-CBASE + +T2_44: + .WORD 068h + .WORD I2_44-CBASE + +T2_55: + .WORD 068h + .WORD I2_55-CBASE + +T2_66: + .WORD 068h + .WORD I2_66-CBASE + +T2_77: + .WORD 068h + .WORD I2_77-CBASE + +T2_88: + .WORD 068h + .WORD I2_88-CBASE + +T2_99: + .WORD 068h + .WORD I2_99-CBASE + +T2_AA: + .WORD 068h + .WORD I2_AA-CBASE + +T2_BB: + .WORD 068h + .WORD I2_BB-CBASE + +T2_CC: + .WORD 068h + .WORD I2_CC-CBASE + +T2_DD: + .WORD 068h + .WORD I2_DD-CBASE + +T2_EE: + .WORD 068h + .WORD I2_EE-CBASE + +T2_FF: + .WORD 068h + .WORD I2_FF-CBASE + +T2_GG: + .WORD 068h + .WORD I2_GG-CBASE + +T2_HH: + .WORD 068h + .WORD I2_HH-CBASE + +T2_II: + .WORD 028h + .WORD I2_II-CBASE + +T2_JJ: + .WORD 068h + .WORD I2_JJ-CBASE + +T2_KK: + .WORD 068h + .WORD I2_KK-CBASE + +T2_LL: + .WORD 058h + .WORD I2_LL-CBASE + +T2_MM: + .WORD 0A8h + .WORD I2_MM-CBASE + +T2_NN: + .WORD 078h + .WORD I2_NN-CBASE + +T2_OO: + .WORD 078h + .WORD I2_OO-CBASE + +T2_PP: + .WORD 068h + .WORD I2_PP-CBASE + +T2_QQ: + .WORD 07Ah + .WORD I2_QQ-CBASE + +T2_RR: + .WORD 068h + .WORD I2_RR-CBASE + +T2_SS: + .WORD 068h + .WORD I2_SS-CBASE + +T2_TT: + .WORD 068h + .WORD I2_TT-CBASE + +T2_UU: + .WORD 068h + .WORD I2_UU-CBASE + +T2_VV: + .WORD 078h + .WORD I2_VV-CBASE + +T2_WW: + .WORD 0B8h + .WORD I2_WW-CBASE + +T2_XX: + .WORD 078h + .WORD I2_XX-CBASE + +T2_YY: + .WORD 068h + .WORD I2_YY-CBASE + +T2_ZZ: + .WORD 068h + .WORD I2_ZZ-CBASE + +; =========================== +; | CHARACTER DIRECTORY | +; =========================== + +SYSFONT + + .BYTE (T2_SP-T2_SP)/32 ;SPACE CHARACTER, " " + .BYTE (T2_SP-T2_SP)/32 ;FILLER + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_SP-T2_SP)/32 + .BYTE (T2_MN-T2_SP)/32 ; MINUS CHARACTER, "-" + .BYTE (T2_PER-T2_SP)/32 + .BYTE (T2_SLASH-T2_SP)/32 ; "/" + .BYTE (T2_00-T2_SP)/32 ;0 + .BYTE (T2_11-T2_SP)/32 ;1 + .BYTE (T2_22-T2_SP)/32 ;2 + .BYTE (T2_33-T2_SP)/32 ;3 + .BYTE (T2_44-T2_SP)/32 ;4 + .BYTE (T2_55-T2_SP)/32 ;5 + .BYTE (T2_66-T2_SP)/32 ;6 + .BYTE (T2_77-T2_SP)/32 ;7 + .BYTE (T2_88-T2_SP)/32 ;8 + .BYTE (T2_99-T2_SP)/32 ;9 + .BYTE (T2_00-T2_SP)/32 ; no : + .BYTE (T2_00-T2_SP)/32 ; no ; + .BYTE (T2_00-T2_SP)/32 ; no < + .BYTE (T2_00-T2_SP)/32 ; no = + .BYTE (T2_00-T2_SP)/32 ; no > + .BYTE (T2_00-T2_SP)/32 ; no ? + .BYTE (T2_00-T2_SP)/32 ; no @ + .BYTE (T2_AA-T2_SP)/32 ;A + .BYTE (T2_BB-T2_SP)/32 ;B + .BYTE (T2_CC-T2_SP)/32 ;C + .BYTE (T2_DD-T2_SP)/32 ;D + .BYTE (T2_EE-T2_SP)/32 ;E + .BYTE (T2_FF-T2_SP)/32 ;F + .BYTE (T2_GG-T2_SP)/32 ;G + .BYTE (T2_HH-T2_SP)/32 ;H + .BYTE (T2_II-T2_SP)/32 ;I + .BYTE (T2_JJ-T2_SP)/32 ;J + .BYTE (T2_KK-T2_SP)/32 ;K + .BYTE (T2_LL-T2_SP)/32 ;L + .BYTE (T2_MM-T2_SP)/32 ;M + .BYTE (T2_NN-T2_SP)/32 ;N + .BYTE (T2_OO-T2_SP)/32 ;O + .BYTE (T2_PP-T2_SP)/32 ;P + .BYTE (T2_QQ-T2_SP)/32 ;Q + .BYTE (T2_RR-T2_SP)/32 ;R + .BYTE (T2_SS-T2_SP)/32 ;S + .BYTE (T2_TT-T2_SP)/32 ;T + .BYTE (T2_UU-T2_SP)/32 ;U + .BYTE (T2_VV-T2_SP)/32 ;V + .BYTE (T2_WW-T2_SP)/32 ;W + .BYTE (T2_XX-T2_SP)/32 ;X + .BYTE (T2_YY-T2_SP)/32 ;Y + .BYTE (T2_ZZ-T2_SP)/32 ;Z + +; =========================== +; | CHARACTER DEFINITIONS | +; =========================== +CBASE +I2_SP + .byte 00h + .byte 00h + .byte 00h + .byte 00h + .byte 00h + .byte 00h + .byte 00h + .byte 00h + +I2_MN: + .byte 000h + .byte 000h + .byte 000h + .byte 0FFh + .byte 0FFh + .byte 000h + .byte 000h + .byte 000h + +I2_PER: + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0FFH + .BYTE 0FFH + +I2_SLASH: + .BYTE 30H + .BYTE 30H + .BYTE 18H + .BYTE 18H + .BYTE 06H + .BYTE 06H + .BYTE 03H + .BYTE 03H + +I2_00: + .byte 01Eh + .byte 03Fh + .byte 033h + .byte 033h + .byte 033h + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_11: + .byte 0Eh + .byte 0Fh + .byte 0Fh + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + +I2_22: + .byte 01Fh + .byte 03Fh + .byte 038h + .byte 01Ch + .byte 0Eh + .byte 07h + .byte 03Fh + .byte 03Fh + +I2_33: + .byte 01Fh + .byte 03Fh + .byte 030h + .byte 01Eh + .byte 01Eh + .byte 030h + .byte 03Fh + .byte 01Fh + +I2_44: + .byte 038h + .byte 03Ch + .byte 036h + .byte 033h + .byte 03Fh + .byte 03Fh + .byte 030h + .byte 030h + +I2_55: + .byte 03Fh + .byte 03Fh + .byte 03h + .byte 01Fh + .byte 03Fh + .byte 030h + .byte 03Fh + .byte 01Fh + +I2_66: + .byte 03Eh + .byte 03Fh + .byte 03h + .byte 01Fh + .byte 03Fh + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_77: + .byte 03Fh + .byte 03Fh + .byte 030h + .byte 018h + .byte 018h + .byte 0Ch + .byte 0Ch + .byte 0Ch + +I2_88: + .byte 01Eh + .byte 03Fh + .byte 033h + .byte 01Eh + .byte 01Eh + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_99: + .byte 01Eh + .byte 03Fh + .byte 033h + .byte 03Fh + .byte 03Eh + .byte 030h + .byte 03Fh + .byte 01Fh + +I2_AA: + .byte 01Eh + .byte 03Fh + .byte 033h + .byte 033h + .byte 03Fh + .byte 03Fh + .byte 033h + .byte 033h + +I2_BB: + .byte 01Fh + .byte 03Fh + .byte 033h + .byte 03Fh + .byte 01Fh + .byte 033h + .byte 03Fh + .byte 01Fh + +I2_CC: + .byte 03Eh + .byte 03Fh + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03Fh + .byte 03Eh + +I2_DD: + .byte 01Fh + .byte 03Fh + .byte 033h + .byte 033h + .byte 033h + .byte 033h + .byte 03Fh + .byte 01Fh + +I2_EE: + .byte 03Fh + .byte 03Fh + .byte 03h + .byte 03Fh + .byte 03Fh + .byte 03h + .byte 03Fh + .byte 03Fh + +I2_FF: + .byte 03Fh + .byte 03Fh + .byte 03h + .byte 03Fh + .byte 03Fh + .byte 03h + .byte 03h + .byte 03h + +I2_GG: + .byte 03Eh + .byte 03Fh + .byte 03h + .byte 03h + .byte 033h + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_HH: + .byte 033h + .byte 033h + .byte 033h + .byte 03Fh + .byte 03Fh + .byte 033h + .byte 033h + .byte 033h + +I2_II: + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + +I2_JJ: + .byte 030h + .byte 030h + .byte 030h + .byte 030h + .byte 030h + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_KK: + .byte 033h + .byte 033h + .byte 01Bh + .byte 0Fh + .byte 01Fh + .byte 033h + .byte 033h + .byte 033h + +I2_LL: + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 03h + .byte 01Fh + .byte 01Fh + +I2_MM: + .byte 087h,03h + .byte 0CFh,03h + .byte 0CFh,03h + .byte 07Bh,03h + .byte 07Bh,03h + .byte 033h,03h + .byte 033h,03h + .byte 033h,03h + +I2_NN: + .byte 063h + .byte 067h + .byte 06Fh + .byte 06Fh + .byte 07Bh + .byte 07Bh + .byte 073h + .byte 063h + +I2_OO: + .byte 03Eh + .byte 07Fh + .byte 063h + .byte 063h + .byte 063h + .byte 063h + .byte 07Fh + .byte 03Eh + +I2_PP: + .byte 01Fh + .byte 03Fh + .byte 033h + .byte 03Fh + .byte 01Fh + .byte 03h + .byte 03h + .byte 03h + +I2_QQ: + .byte 03Eh + .byte 07Fh + .byte 063h + .byte 063h + .byte 063h + .byte 063h + .byte 07Fh + .byte 03Eh + .byte 060h + .byte 060h + +I2_RR: + .byte 01Fh + .byte 03Fh + .byte 033h + .byte 03Fh + .byte 01Fh + .byte 033h + .byte 033h + .byte 033h + +I2_SS: + .byte 03Eh + .byte 03Fh + .byte 03h + .byte 01Fh + .byte 03Eh + .byte 030h + .byte 03Fh + .byte 01Fh + +I2_TT: + .byte 03Fh + .byte 03Fh + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + +I2_UU: + .byte 033h + .byte 033h + .byte 033h + .byte 033h + .byte 033h + .byte 033h + .byte 03Fh + .byte 01Eh + +I2_VV: + .byte 063h + .byte 063h + .byte 063h + .byte 036h + .byte 036h + .byte 03Eh + .byte 01Ch + .byte 01Ch + +I2_WW: + .byte 023h,06h + .byte 023h,06h + .byte 073h,06h + .byte 076h,03h + .byte 076h,03h + .byte 0DEh,03h + .byte 08Ch,01h + .byte 08Ch,01h + +I2_XX: + .byte 063h + .byte 063h + .byte 036h + .byte 01Ch + .byte 01Ch + .byte 036h + .byte 063h + .byte 063h + +I2_YY: + .byte 033h + .byte 033h + .byte 01Eh + .byte 01Eh + .byte 0Ch + .byte 0Ch + .byte 0Ch + .byte 0Ch + +I2_ZZ: + .byte 03Fh + .byte 03Fh + .byte 038h + .byte 01Ch + .byte 0Eh + .byte 07h + .byte 03Fh + .byte 03Fh + + + .EVEN +* +* ROM chip definitions and checksums +* +CKSUM1 .equ >8a5d ;9bd5 +CKSUM2 .equ >9efe ;3bf0 + +PROMCHIPS + ROM_CHIP PROM2,1,0,16, 0FF800000H, 0FFFFFFF0H, CKSUM1 ; U54 + ROM_CHIP PROM1,0,0,16, 0FF800008H, 0FFFFFFF8H, CKSUM2 ; U63 + .LONG 0 + +* CHECKSUM PATCHES + .WORD >ffff-CKSUM1 ;1'S COMPLEMENT OF THE UJ12 CHECKSUM + .WORD >ffff-CKSUM2 ;1'S COMPLEMENT OF THE UG12 CHECKSUM + + +************************************************************************** +* * +* IMAGE ROM CHECKSUM TABLES * +* * +* NOTE: COMMENT OUT ANY UNSTUFFED PARTS THAT * +* EXIST BEFORE THE .LONG 0 TERMINATOR! * +* * +************************************************************************** +; ROM_CHIP $MACRO TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR, CHECK_SUM +IROMCHIPS + +IROMCHIPS_8MEG + .EVEN + ROM_CHIP IROM1, 0, 8,32, 2000000H, 3FFFFE0H,03A18H ; U133 + ROM_CHIP IROM2, 1, 8,32, 2000008H, 3FFFFE8H,05B68H ; U132 + ROM_CHIP IROM3, 2, 8,32, 2000010H, 3FFFFF0H,0A478H ; U131 + ROM_CHIP IROM4, 3, 8,32, 2000018H, 3FFFFF8H,0E4EAH ; U130 + + ROM_CHIP IROM5, 4, 8,32, 4000000H, 5FFFFE0H,00B0EH ; U129 + ROM_CHIP IROM6, 5, 8,32, 4000008H, 5FFFFE8H,0E646H ; U128 + ROM_CHIP IROM7, 6, 8,32, 4000010H, 5FFFFF0H,074A7H ; U127 + ROM_CHIP IROM8, 7, 8,32, 4000018H, 5FFFFF8H,037FDH ; U126 + .LONG 0 +IROMCHIPS1_8MEG + ROM_CHIP IROM9, 8, 8,32, 2000000H, 3FFFFE0H,05EF3H ; U125 + ROM_CHIP IROM10, 9, 8,32, 2000008H, 3FFFFE8H,08CD6H ; U124 + ROM_CHIP IROM11,10, 8,32, 2000010H, 3FFFFF0H,070ECH ; U123 + ROM_CHIP IROM12,11, 8,32, 2000018H, 3FFFFF8H,02B4EH ; U122 + + ROM_CHIP IROM13,12, 8,32, 4000000H, 5FFFFE0H,05E15H ; U121 + ROM_CHIP IROM14,13, 8,32, 4000008H, 5FFFFE8H,00572H ; U120 + ROM_CHIP IROM15,14, 8,32, 4000010H, 5FFFFF0H,07FD4H ; U119 + ROM_CHIP IROM16,15, 8,32, 4000018H, 5FFFFF8H,0E4F1H ; U118 + .LONG 0 + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/DIFFN.BAT b/DIFFN.BAT new file mode 100755 index 0000000..8f08d45 --- /dev/null +++ b/DIFFN.BAT @@ -0,0 +1,2 @@ +diff %1 new\%1 + \ No newline at end of file diff --git a/DIFFT.BAT b/DIFFT.BAT new file mode 100755 index 0000000..a94402d --- /dev/null +++ b/DIFFT.BAT @@ -0,0 +1,5 @@ +@echo off +dir %1 +dir t\%1 +diff %1 t\%1 + \ No newline at end of file diff --git a/DIP.EQU b/DIP.EQU new file mode 100755 index 0000000..a1c16bf --- /dev/null +++ b/DIP.EQU @@ -0,0 +1,107 @@ +************************************************************************** +* * +* NBA JAM - DIPSWITCH EQUATE FILE * +* * +* COPYRIGHT (C) 1993 MIDWAY MANUFACTURING COMPANY. * +* ALL RIGHTS RESERVED. * +* * +************************************************************************** + + +DPUSECMOS EQU 0100H ;USE CMOS MASK + +DPCOINAGE EQU 0E00H ;COINAGE MASK +DPCOINAGE_SRL EQU 9 ;SHIFT TO RIGHT JUSTIFY + +DPCOUNTRY EQU 3000H ;COUNTRY MASK +DPCOUNTRY_SRL EQU 12 ;SHIFT TO RIGHT JUSTIFY + +DPCOUNTER EQU 0C000H ;COIN COUNTER MODE +DPCOUNTER_SRL EQU 14 ;SHIFT TO RIGHT JUSTIFY + +DPPLAYERS EQU 1 ;NUMBER OF HARDWARE PLAYERS + +DPVALIDATOR EQU 2 ;DOLLAR BILL VALIDATOR INSTALLED +DPVALIDATOR_SRL EQU 1 ;SHIFT TO RIGHT JUSTIFY + +DPNOVIDCLIPS EQU 4 ;No video clips +DPNOVIDCLIPS_B EQU 2 + +;DPTOURNAMENT EQU 8 ;Tournament mode +;DPTOURNAMENT_B EQU 3 + +DP4MEG equ 32 ;4 Megabit/8 Megabit Image ROMS +DP4MEG_DIAG equ 4 ;4 Megabit/8 Megabit Image ROMS + +DPTDON equ 16 ;Time/Date in attract mode +DPTDON_B equ 4 + +DPPOWER EQU 64 ;Tournament mode +DPPOWER_B EQU 6 + +DPTEST EQU 128 ;TEST SWITCH +DPTEST_B EQU 7 + +; DPUSECMOS ( UJ1 - 1 ) +; +; 0 = DIP SWITCH COINAGE USED +; 1 = CMOS COINAGE USED +; +; DPRIGHTSLOT ( UJ1 - 4 3 2 ) +; +; 000 = USA 1 / GERMAN 1 / FRENCH 1 +; 001 = USA 2 / GERMAN 2 / FRENCH 2 +; 010 = USA 3 / GERMAN 3 / FRENCH 3 +; 011 = USA 4 / GERMAN 4 / FRENCH 4 +; 100 = 1 COIN / 2 CREDIT +; 101 = 1 COIN / 3 CREDIT +; 110 = 1 COIN / 4 CREDIT +; 111 = FREEPLAY +; +; DPCOUNTRY ( UJ1 - 6 5 ) +; +; 00 = USA +; 01 = GERMAN +; 10 = FRENCH +; 11 = OUTERSPACE +; +; DPCOUNTER ( UJ1 - 8 7 ) +; +; 00 = 1 COUNT/COIN - LEFT COUNTER +; 01 = 1 COUNT/COIN - LEFT AND RIGHT COUNTERS +; 10 = TOTALIZER - LEFT COUNTER +; 11 = 1 COUNT/COIN - LEFT COUNTER +; +; DPPLAYERS ( UJ2 - 1 ) +; +; 0 = GAME CONFIGURED FOR 4 PLAYERS +; 1 = GAME CONFIGURED FOR 2 PLAYERS +; +; DPVALIDATOR ( UJ2 - 2 ) +; +; 0 = NO DOLLAR BILL ACCEPTOR INSTALLED +; 1 = DOLLAR BILL ACCEPTOR INSTALLED +; +; DPNOVIDCLIPS ( UJ2 - 3 ) +; +; 0 = Video clips on +; 1 = Video clips off +; +; DPTOURNAMENT ( UJ2 - 4 ) +; +; 0 = Tournament mode off +; 1 = Tournament mode on +; +; DPUNUSED ( UJ2 - 5 ) +; +; DPUNUSED ( UJ2 - 6 ) +; +; DPUNUSED ( UJ2 - 7 ) +; +; DPTEST ( UJ2 - 8 ) +; +; 0 = NORMAL NON-TEST +; 1 = TEST MODE +; +****************************************************************************** + \ No newline at end of file diff --git a/DIRT.BAT b/DIRT.BAT new file mode 100755 index 0000000..636a7b1 --- /dev/null +++ b/DIRT.BAT @@ -0,0 +1,3 @@ +@echo off +dir t /od + \ No newline at end of file diff --git a/DISPLAY.ASM b/DISPLAY.ASM new file mode 100755 index 0000000..f509f2c --- /dev/null +++ b/DISPLAY.ASM @@ -0,0 +1,3290 @@ +*敖陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳朕 +* +* File : display.asm +* Contents : DMA object handler +* Project : WWF Wrestlemania +* Programmer : +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*青陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳潰 +************************************************************************* + + .file "display.asm" + .title "DMA object handler" + .width 132 + .option b,d,l,t + .mnolist + + + .include "gsp.equ" + .include "sys.equ" + .include "mproc.equ" + .include "display.equ" + .include "macros.h" + .include "fontsimg.glo" + .include "game.equ" + .INCLUDE "PLYR.EQU" + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF process_ptrs + .ref special_screen + .REF DUMRETS,WHICH_SCREEN + .REF TOP_LEFT,BOT_RIGHT + .def clear_objs + .ref FRANIMQ + .ref HALT + .ref SYSCOPY + .ref pal_getf + .ref IRQSKYE + +****************************************************************************** + +;global variables + + .sect "OFIXED" + +OBJLST .long 0 ;*Active object list +OFREE .long 0 ;*Free object block +BAKLST .long 0 ;*Background list + + + +GND_Y .equ 116-40 +GNDI_Y .equ 116 +GNDI_W .equ 1277 +GNDI_H .equ 138 +GND_H .equ GNDI_H+40 +GZBASE .equ 894 + + + .bss present_pos,16 + BSSX page_addr,32 + + .bss SCROLLX ,32 ;X scroll value + .bss SCROLLY ,32 ;Y scroll value + ;/ Must stay in order + .bss WORLDTLX ,32 ;Left X screen coord (16:16) + .bss WORLDTLY ,32 ;Top Y screen coord (16:16) + .bss WORLDTL ,32 ;Top left world Y:X + + .bss SCRNTL ,32 ;TOP LEFT [Y,X] SCREEN (SCRN COORD.) + .bss SCRNLR ,32 ;LOWER RIGHT [Y,X] SCREEN (SCRN COORD.) + + .bss dpage ,16 ;Display page; 0=Page0, -1=Page1 + BSSX dtype ,16 ;Display type; 0=2D, 1=3D, -=Special + BSSX dcode_p ,32 ;!0=*Special code (^ must = neg) + .bss DMAQCUR ,32 ;Misc DMAQ position + + .bss OBJSTR,NOBJ*OBSIZ ;Object structure mem + +QSIZE .set (NOBJ+GNDI_H)*BQCELL +QMSIZE .set NOBJ*BQCELL + .bss dmaq0 ,QSIZE ;Main DMA queue + BSSX DMAQ ,QMSIZE ;Misc DMA queue + + BSSX gndstat ,16 ;!0=Show ground + BSSX gndpos_t ,16*GND_H + BSSX gndx ,32 + .bss DISPLAYON ,16 ;!0=Do display processing +; BSSX QDMAFLG ,16 ;!0=Misc DMAQ being updated + + BSSX _3dstat ,16 ;!0=Show polygons + + BSSX dma_foo ,32 + + .text + + +****************************************************************************** +* NO CODE BEFORE DMA INT!!! (Cache aligned) +* +#***************************************************************************** +* DMA interrupt +* B12=*End of DMA regs +* B13=DMAQ count-1 or Neg +* B14=*Next DMAQ fetch + + + SUBR dma_irq + + ;temp! +; move b14,@dma_foo,L + + move -*b14,-*b12,L ;[Y SCALE : X SCALE] + move -*b14,-*b12,L ;[COLOR CONST : PAL REGISTER] + move -*b14,-*b12,L ;[HEIGHT : WIDTH] + move -*b14,-*b12,L ;[DEST Y : DEST X] + move -*b14,-*b12,L ;[SOURCE ADDRESS] + move -*b14,-*b12,L ;[CNTRL REG-DMA go! : OFFSET/CLIP] + + addi 0c0h,b12 ;DMAREGS (End of DMA) + subk 1,b13 + jrn #done ;Queue empty? + RETI + + push b11 + move @present_pos,b11 + cmp b11,b13 + jreq do_shadows + pull b11 + reti + +#done + setf 1,0,0 ;Disable dma interrupt + move b12,@INTENB+1 ;Clr X1E + clr b13 ;For safety! + subk 1,b13 ;-1 + reti + +do_shadows + pull b11 + pushst + dint + callr PLACE_SHADOWS + popst + reti + + +#***************************************************************************** +* Load DMA Q from obj list (2D type) +* A0=*Obj list +* A4=*DMAQ next free spot +* A13=Screen BR, A14=Screen TL +* B2=Y offset for top of page : XPad offset +* B4=World Y:X +* B5=OFLAGS offset +* B6=World center scrn X * 64K +* B11=*DMACTRL + +dma_objlst2d +; movi [100h,100h],a5 ;A5=Y:X scale + jruc #nxt + + .align + +#lp + MOVE *A0(OFLAGS),A1 + BTST B_NODISP,A1 + JRNZ #nxt + move *a0(OSCALE),a5,L + + move b5,a3 + add a0,a3 + move *a3+,a1 ;Get OFLAGS + mmfm a3,a12,a11,a9,a8 + + move *a0(OYVAL),a10,L ;Get int Y + + move *a0(OXPOS),a2 ;X + movx a2,a10 ;A10=Obj Y:X + btst B_SCRNREL,a1 + jrnz #noscl ;Screen relative XY? + move b4,a6 ;A6=World TL Y:X + subxy a6,a10 ;-world coord to get screen coord +#noscl + ;A8=Const:PAL + ;A9=HEIGHT:WIDTH + ;A10=Dest Y:X + ;A11=*SAG + ;A12=Offset:Ctrl + + btst B_BOBJ,a1 + jrnz #is_bgnd_obj + + move *a0(ODOFF),a3,L ;display offset Y:X + + btst B_FLIPH,a12 + jrz #no_x_flip0 + + movx a3,a2 + neg a2 + dec a2 ; -1 + addxy a9,a2 ;- image width (gets added later) + movx a2,a3 + +#no_x_flip0 + +; btst B_FLIPV,a12 +; jrz #no_y_flip0 +; +; move a3,a2 +; srl 16,a2 +; neg a2 +; dec a2 ; -1 +; sll 16,a2 +; addxy a9,a2 ;- image height (gets added later) +; movy a2,a3 +; +;#no_y_flip0 + + subxy a3,a10 + + +#is_bgnd_obj + + + +;Check for flipping, clipping, adjust offset, sag + + ;Calc top,bot,left,right clips + ;a2 = BR clip size + clr a3 ;a3 = TL clip size + move a10,a2 ;Dest Y:X + addxy a9,a2 ; + HEIGHT:WIDTH = BR Y:X + subxy a13,a2 ;A2=BR clip size + JRYGE #clip_bot + movy a3,a2 ;no bot clip if y neg +#clip_bot + JRXGE #clip_right + movx a3,a2 ;no right clip if x neg +#clip_right + + move a14,a7 ;screen TL + subxy a10,a7 ; - DEST Y:X = TL clip size + JRYLT #no_top_clip + movy a7,a3 ;Top clip size + btst 7,a12 ;zero compression on? + jrnz #no_top_clip ;can't clip if it is + movy a14,a10 ;Y start = window top edge + +#no_top_clip + JRXLT #no_left_clip + movx a7,a3 ;Left clip size + btst 7,a12 + jrnz #no_left_clip ;Zero compression on? + movx a14,a10 ;X start = window left edge + +#no_left_clip + move a2,b0 ;Save BR clip + add a3,a2 ;TL clip + BR clip + ;no need to use addxy as no signs + this sets Z for both + + jrz #noclip ;Zero clip? + + + move a9,a6 ;Save HEIGHT:WIDTH + + subxy a2,a9 ;Get clipped size + JRXLE #nxt ;Totally clipped? + JRYLE #nxt + + btst 7,a12 + jrz #nozc ;Zero compression off? + move a6,a9 ;Restore v:h size + jruc #noclip + +#nozc + clr a1 + movx a2,a1 ;x clip total + move a1,a1 + jrz #no_x_clip + movx a9,a1 ;image width + subk 8,a1 + jrle #nxt ;<=8 wide? Skip so DMA doesn't lockup + +#no_x_clip + movx a6,a9 ;Restore hsize + + movx a3,a1 ;A1=Left clip + + + btst B_FLIPH,a12 + jrz #no_x_flip + + subxy a1,a10 ;Original X + + move b0,a1 ;LClip=RClip + zext a1,W ;clear Y portion + subxy a1,a10 ;X-RClip + + +#no_x_flip +; btst B_FLIPV,a12 +; jrz #no_y_flip +; +; move b0,a3 ;Bot clip +; +;#no_y_flip + srl 16,a3 ;A3=Top or bot clip + jrz #t0 + zext a6,W ;clear Y portion + mpyu a6,a3 ;T or B clip * width + + +#t0 + add a1,a3 ;Add x clip + y clip * width + move a12,a1 + sll 32-15,a1 ;Get bits 12-14 (PIXEL SIZE) + srl 32-15+12,a1 + jrnz #not8 + movk 8,a1 +#not8 mpys a1,a3 ;# of bits to skip + add a3,a11 ;Add to SAG + sll 16,a2 + addxy a2,a12 ;Add clip offset to offset + + +#noclip + +;if image is flipped, dma plots from opposite end + + btst B_FLIPH,a12 + jrz #300 + movx a9,a1 ;image WIDTH + subk 1,a1 + zext a1 + addxy a1,a10 ;+ WIDTH-1 + +#300 +; btst B_FLIPV,a12 +; jrz #400 +; move a9,a1 ;image HEIGHT +; srl 16,a1 +; subk 1,a1 +; sll 16,a1 +; addxy a1,a10 ;+ HEIGHT-1 +;#400 + + move b2,a1 + addxy a1,a10 ;Add the page y offset : XPad + rl 16,a12 ;Flip ctrl & offset + mmtm a4,a5,a8,a9,a10,a11,a12 ;Save the dma regs + addk 1,b13 ;+1 Q cnt + jrgt #nxt ;DMA going? + + dint + + setf 1,0,0 ;>Enable DMA int + movk 1,a1 + move a1,@INTENB+1 ;X1E + setf 16,1,0 + + move *b11,b0 + jrn #dmaok ;DMA busy? + + move b13,b13 + jrn #dmaok ;DMA int done? + + trap 1 ;Cause DMA int + +#dmaok eint +#nxt + move *a0,a0,L ;Get next link + jrnz #lp ;More? + rets + + .if 0 + +#***************************************************************************** +* Load DMA Q from obj list (3D type) +* A0=*Obj list +* A4=*DMAQ next free spot +* A13=Screen BR, A14=Screen TL +* B2=Y offset for top of page : XPad offset +* B4=World Y:X +* B5=OFLAGS offset +* B6=World center scrn X * 64K +* B11=*DMACTRL + +dma_objlst3d + movi [100h,100h],a5 ;A5=Y:X scale + jruc #nxt + + .align + +#lp + move b5,a3 + add a0,a3 + move *a3+,a1 ;Get OFLAGS + mmfm a3,a12,a11,a9,a8 + + move *a0(OYVAL),a10,L ;Get int Y + + move *a0(OXPOS),a2 ;X + movx a2,a10 ;A10=Obj Y:X + btst B_SCRNREL,a1 + jrnz #noscl ;Screen relative XY? + move b4,a6 ;A6=World TL Y:X + subxy a6,a10 ;-world coord to get screen coord +#noscl + ;A8=Const:PAL + ;A9=HEIGHT:WIDTH + ;A10=Dest Y:X + ;A11=*SAG + ;A12=Offset:Ctrl + + btst B_BOBJ,a1 + jrnz #is_bgnd_obj + + move *a0(ODOFF),a3,L ;display offset Y:X + + btst B_FLIPH,a12 + jrz #no_x_flip0 + + movx a3,a2 + neg a2 + dec a2 ; -1 + addxy a9,a2 ;- image width (gets added later) + movx a2,a3 + +#no_x_flip0 + + btst B_FLIPV,a12 + jrz #no_y_flip0 + + move a3,a2 + srl 16,a2 + neg a2 + dec a2 ; -1 + sll 16,a2 + addxy a9,a2 ;- image height (gets added later) + movy a2,a3 + +#no_y_flip0 + + subxy a3,a10 + + +#is_bgnd_obj + + + +;Check for flipping, clipping, adjust offset, sag + + ;Calc top,bot,left,right clips + ;a2 = BR clip size + clr a3 ;a3 = TL clip size + move a10,a2 ;Dest Y:X + addxy a9,a2 ; + HEIGHT:WIDTH = BR Y:X + subxy a13,a2 ;A2=BR clip size + JRYGE #clip_bot + movy a3,a2 ;no bot clip if y neg +#clip_bot + JRXGE #clip_right + movx a3,a2 ;no right clip if x neg +#clip_right + + move a14,a7 ;screen TL + subxy a10,a7 ; - DEST Y:X = TL clip size + JRYLT #no_top_clip + movy a7,a3 ;Top clip size + btst 7,a12 ;zero compression on? + jrnz #no_top_clip ;can't clip if it is + movy a14,a10 ;Y start = window top edge + +#no_top_clip + JRXLT #no_left_clip + movx a7,a3 ;Left clip size + btst 7,a12 + jrnz #no_left_clip ;Zero compression on? + movx a14,a10 ;X start = window left edge + +#no_left_clip + move a2,b0 ;Save BR clip + add a3,a2 ;TL clip + BR clip + ;no need to use addxy as no signs + this sets Z for both + + jrz #noclip ;Zero clip? + + + move a9,a6 ;Save HEIGHT:WIDTH + + subxy a2,a9 ;Get clipped size + JRXLE #nxt ;Totally clipped? + JRYLE #nxt + + btst 7,a12 + jrz #nozc ;Zero compression off? + move a6,a9 ;Restore v:h size + jruc #noclip + +#nozc + clr a1 + movx a2,a1 ;x clip total + move a1,a1 + jrz #no_x_clip + movx a9,a1 ;image width + subk 8,a1 + jrle #nxt ;<=8 wide? Skip so DMA doesn't lockup + +#no_x_clip + movx a6,a9 ;Restore hsize + + movx a3,a1 ;A1=Left clip + + + btst B_FLIPH,a12 + jrz #no_x_flip + + subxy a1,a10 ;Original X + + move b0,a1 ;LClip=RClip + zext a1,W ;clear Y portion + subxy a1,a10 ;X-RClip + + +#no_x_flip + btst B_FLIPV,a12 + jrz #no_y_flip + + move b0,a3 ;Bot clip + +#no_y_flip + srl 16,a3 ;A3=Top or bot clip + jrz #t0 + zext a6,W ;clear Y portion + mpyu a6,a3 ;T or B clip * width + + +#t0 + add a1,a3 ;Add x clip + y clip * width + move a12,a1 + sll 32-15,a1 ;Get bits 12-14 (PIXEL SIZE) + srl 32-15+12,a1 + jrnz #not8 + movk 8,a1 +#not8 mpys a1,a3 ;# of bits to skip + add a3,a11 ;Add to SAG + sll 16,a2 + addxy a2,a12 ;Add clip offset to offset + + +#noclip + +;if image is flipped, dma plots from opposite end + + btst B_FLIPH,a12 + jrz #300 + movx a9,a1 ;image WIDTH + subk 1,a1 + zext a1 + addxy a1,a10 ;+ WIDTH-1 + +#300 + btst B_FLIPV,a12 + jrz #400 + move a9,a1 ;image HEIGHT + srl 16,a1 + subk 1,a1 + sll 16,a1 + addxy a1,a10 ;+ HEIGHT-1 +#400 + + + move b2,a1 + addxy a1,a10 ;Add the page y offset : XPad + rl 16,a12 ;Flip ctrl & offset + mmtm a4,a5,a8,a9,a10,a11,a12 ;Save the dma regs + addk 1,b13 ;+1 Q cnt + jrgt #nxt ;DMA going? + + dint + + setf 1,0,0 ;>Enable DMA int + movk 1,a1 + move a1,@INTENB+1 ;X1E + setf 16,1,0 + + move *b11,b0 + jrn #dmaok ;DMA busy? + + move b13,b13 + jrn #dmaok ;DMA int done? + + trap 1 ;Cause DMA int + +#dmaok eint +#nxt + move *a0,a0,L ;Get next link + jrnz #lp ;More? + rets + + .endif + + +#***************************************************************************** +* Load DMA Q from obj list +* A0=*Obj list +* A4=*DMAQ next free spot +* A13=Screen BR, A14=Screen TL +* B2=Y offset for top of page : XPad offset +* B4=World Y:X +* B5=OFLAGS offset +* B6=World center scrn X * 64K +* B11=*DMACTRL + +dma_background + + movi [100h,100h],a5 ;A5=Y:X scale + jruc #nxt + + .align + +#lp + move b5,a3 + add a0,a3 + move *a3+,a1 ;Get OFLAGS + mmfm a3,a12,a11,a9,a8 + + move *a0(OYVAL),a10,L ;Get int Y + + move *a0(OXPOS),a2 ;X + movx a2,a10 ;A10=Obj Y:X + btst B_SCRNREL,a1 + jrnz #noscl ;Screen relative XY? + move b4,a6 ;A6=World TL Y:X + subxy a6,a10 ;-world coord to get screen coord +#noscl + ;A8=Const:PAL + ;A9=HEIGHT:WIDTH + ;A10=Dest Y:X + ;A11=*SAG + ;A12=Offset:Ctrl + +;Check for flipping, clipping, adjust offset, sag + + ;Calc top,bot,left,right clips + clr a3 ;A3=TL clip size + move a10,a2 ;Dest Y:X + addxy a9,a2 ; + HEIGHT:WIDTH = BR Y:X + subxy a13,a2 ;A2=BR clip size + JRYGE #clip_bot + movy a3,a2 ;no bot clip if y neg +#clip_bot + JRXGE #clip_right + movx a3,a2 ;no right clip if x neg +#clip_right + + move a14,a7 ;screen TL + subxy a10,a7 ; - DEST Y:X = TL clip size + JRYLT #no_top_clip + movy a7,a3 ;Top clip size + btst 7,a12 ;zero compression on? + jrnz #no_top_clip ;can't clip if it is + movy a14,a10 ;Y start = window top edge + +#no_top_clip + JRXLT #no_left_clip + movx a7,a3 ;Left clip size + btst 7,a12 + jrnz #no_left_clip ;Zero compression on? + movx a14,a10 ;X start = window left edge + +#no_left_clip + move a2,b0 ;Save + add a3,a2 ;TL clip+BR clip + jrz #noclip ;Zero clip? + + + move a9,a6 ;Save HEIGHT:WIDTH + + subxy a2,a9 ;Get clipped size + JRXLE #nxt ;Totally clipped? + JRYLE #nxt + + btst 7,a12 + jrz #nozc ;Zero compression off? + move a6,a9 ;Restore v:h size + jruc #noclip + +#nozc + clr a1 + movx a2,a1 ;x clip total + move a1,a1 + jrz #no_x_clip + movx a9,a1 ;image width + subk 8,a1 + jrle #nxt ;<=8 wide? Skip so DMA doesn't lockup + +#no_x_clip + movx a6,a9 ;Restore hsize + + movx a3,a1 ;A1=Left clip + + + btst B_FLIPH,a12 + jrz #no_x_flip + + subxy a1,a10 ;Original X + + move b0,a1 ;LClip=RClip + zext a1 + subxy a1,a10 ;X-RClip + + +#no_x_flip + btst B_FLIPV,a12 + jrz #no_y_flip + + move b0,a3 ;Bot clip + +#no_y_flip + srl 16,a3 ;A3=Top or bot clip + jrz #t0 + zext a6 + mpyu a6,a3 ;T or B clip * total hsize + + +#t0 + add a1,a3 ;Add left clip + tc*ths + move a12,a1 + sll 32-15,a1 ;Get bits 12-14 (PIXEL SIZE) + srl 32-15+12,a1 + jrnz #not8 + movk 8,a1 +#not8 mpys a1,a3 ;# of bits to skip + add a3,a11 ;Add to SAG + sll 16,a2 + addxy a2,a12 ;Add clip offset to offset + + +#noclip + + btst B_FLIPH,a12 ;if flipped, keep block + jrz #300 ;in same position + movx a9,a1 ;image WIDTH + subk 1,a1 + zext a1 + addxy a1,a10 +#300 btst B_FLIPV,a12 + jrz #400 + move a9,a1 ;image HEIGHT + srl 16,a1 + subk 1,a1 + sll 16,a1 + addxy a1,a10 +#400 + + + move b2,a1 + addxy a1,a10 ;Add the page y offset : XPad + rl 16,a12 ;Flip ctrl & offset + mmtm a4,a5,a8,a9,a10,a11,a12 ;Save the dma regs + addk 1,b13 ;+1 Q cnt + jrgt #nxt ;DMA going? + + dint + + setf 1,0,0 ;>Enable DMA int + movk 1,a1 + move a1,@INTENB+1 ;X1E + setf 16,1,0 + + move *b11,b0 + jrn #dmaok ;DMA busy? + + move b13,b13 + jrn #dmaok ;DMA int done? + + trap 1 ;Cause DMA int + +#dmaok eint +#nxt + move *a0,a0,L ;Get next link + jrnz #lp ;More? + rets + + +#***************************************************************************** +* Display object lists, called by DIRQ + +DISPLAY + move @DISPLAYON,a0 + jrz #novel + + movi DMACTRL,b11 ;B11=*DMACTRL + + +;this is for use on the pixel wash screen transition + movi [PAGE1YO,SCRNXP],b2 + movi [509,256],b3 ;dma window [ bottom : top ] + move @special_screen,a1 + jrnz #p1 + + movi SCRNXP,b2 ;B2=Page y offset : XPad offset + movi [253,0],b3 ;dma window [ bottom : top ] + + move @dpage,a1 + jrnz #p1 + movi [PAGE1YO,SCRNXP],b2 + movi [509,256],b3 ;dma window [ bottom : top ] + +#p1 + move b2,@page_addr,L + movi dmaq0+QSIZE,a4 ;A4=*DMAQ for new data (Top) + clr b13 ;Kill DMA + move b13,*b11 + move b13,*b11 + + movi DMAREGS,b12 ;B12=*DMAREGS + subk 1,b13 ;B13=Q count (-1) + move a4,b14 ;B14=*DMAQ for next fetch (Top) + +;------> SHAWN WAS SETTING DSZ (BIT6) ALSO ??????????????? + + movk BIT5,b0 ;DMAWIN (1 = BOTTOM:TOP) + move b0,*b12(30h) ;DMACONF (Top/Bottom) + move b3,*b12,L ;DMAWINDOW + +; move @DISPLAYON,a0 +; jrz #doff ;Stop DMA of objects except for score? + + movi WORLDTLX,b0 ;Left X screen coord (16:16) + move *b0+,b3,L ;left x [16:16] + move *b0+,b4,L ;top y [16:16] + srl 16,b3 ;int left x + movx b3,b4 + move b4,*b0,L ;top left world [Y:X] (WORLDTL) + + movi OFLAGS,b5 ;B5=Obj data offset + move b4,b6 + addi 200,b6 + sll 16,b6 ;B6=World center scrn X * 64K + move @SCRNLR,a13,L ;A13=Screen BR + move @SCRNTL,a14,L ;A14=Screen TL + + move @TOP_LEFT,A0,L + ADDXY A0,A14 + MOVE @BOT_RIGHT,A0,L + ADDXY A0,A13 + + movi BAKLST,a0 + callr dma_background + + move b13,@present_pos + + movi OBJLST,a0 + callr dma_objlst2d + + MOVE @WHICH_SCREEN,A0,L + CALL A0 + +#doff + move @DMAQCUR,a2,L + movi DMAQ+QMSIZE,a1 + cmp a1,a2 + jrhs #noman ;Empty? + move a1,@DMAQCUR,L ;Reset top of queue + + move b2,a5 + +#lp move -*a1,-*a4,L ;>Copy manual DMAQ to end of Q + move -*a1,-*a4,L + move -*a1,-*a4,L + move -*a1,a0,L + addxy a5,a0 ;+Y + move a0,-*a4,L + move -*a1,-*a4,L + move -*a1,-*a4,L + addk 1,b13 + cmp a2,a1 + jrhi #lp + + + move *b11,b0 + jrn #noman ;DMA busy? + + move b13,b13 + jrn #noman ;DMA int done? + + setf 1,0,0 ;>Enable DMA int + movk 1,a1 + move a1,@INTENB+1 ;X1E + setf 16,1,0 + + trap 1 ;Cause DMA int + +#noman + + move @HALT,a0 + jrnz #novel ;Skip vel update? + movi OBJLST,a0 + callr vel_add +#novel +#x + rets + + +;Null dma data +nulldma .long >80000000,IROM,0,>00010001,0,>1000100 + + +#***************************************************************************** +* Velocity add loop +* A0=*Obj list +* Trashes A0-A7 + .align +#lp move a0,a1 + addk OXVEL,a1 + + mmfm a1,a2,a3,a4,a5,a6,a7 ;A7=XV, A6=YV, A5=ZV, A4=X, A3=Y, A2=Z + + add a5,a2 ;Add ZVEL to Z + move a2,-*a1,L + add a6,a3 ;Add YVEL to Y (Uses hidden cycle!) + move a3,-*a1,L + add a7,a4 ;Add XVEL to X ^ + move a4,-*a1,L + +vel_add move *a0,a0,L + jrnz #lp ;!End? + rets + + + +#***************************************************************************** +* Manual DMA +* A1=Constant color:Palette +* A2=height:width +* A3=Dest Y:X +* A4=SAG +* A5=Offset:Control +* Trashes A0,A14 + +QDMAN +; movk 1,a0 +; move a0,@QDMAFLG ;Q being modified + + move @DMAQCUR,a14,L + cmpi DMAQ,a14 + jrls #x ;Q full? + + movi [100h,100h],a0 ;No scale + rl 16,a5 ;Flip DMA & offset + mmtm a14,a0,a1,a2,a3,a4,a5 + rl 16,a5 ;Flip DMA & offset + move a14,@DMAQCUR,L + +#x +; clr a0 +; move a0,@QDMAFLG + rets + + .if 0 + +#******************************* +* Turn on the 2d with scaling display mode +* Trashes scratch + + SUBRP display_2dsclmodeon + + movi #drawcode,a0 + move a0,@dcode_p,L + movi -1,a0 + move a0,@dtype + + rets + +#drawcode + movi BAKLST,a0 + callr dma_objlst2d + + movi OBJLST,a0 +;;;; jruc dma_objlst2dscl + + +#******************************* +* Turn on the 2d, with scaling and stars, display mode +* Trashes scratch + + .asg SCRATCH+8*128*1024,STARBUF +NSTARS .equ 900 +STARSIZE .equ 32*6+16 + + SUBRP display_2dsclstarmodeon + + movi NSTARS,b0 ;>Init star array + movi STARBUF,a1 + movi -1,a0 +#silp move a0,*a1,L ;X + addi STARSIZE,a1 + dsj b0,#silp + + movi #drawcode,a0 + move a0,@dcode_p,L + movi -1,a0 + move a0,@dtype + + rets + +******************************** +* B2=Y offset for top of page : XPad offset +* Trashes A0-A3,A5-A12,B0-B3 + +CFRAC .equ 2 + + .bss starcolor ,16 + +#drawcode + PUSH a13,a14 + PUSH b4 + + movk 3,a0 + callr rnd + move @starcolor,a6 + add a0,a6 + move a6,@starcolor + sll 32-3-6,a6 + srl 32-3,a6 ;Remove fraction + sll 5+CFRAC,a6 + + + movi NSTARS,a5 ;>Find a free star + movi STARBUF,a2 + movk 3,a3 +#flp move *a2,a0,L ;X + jrn #found + addi STARSIZE,a2 +#fnxt dsj a5,#flp + jruc #nofree + +#found movi [200,0],a0 ;>Create star + move a0,*a2+,L ;X + movi [252,0],a0 + move a0,*a2+,L ;Y + + clr a0 + move a0,*a2+,L ;XV + movi ->3e000,a0 + move a0,*a2+,L ;YV + + movi >7ff,a0 + callr rnd + subi >3ff,a0 + move a0,*a2+,L ;XA + movi >3ff,a0 + callr rnd + addi >7ff,a0 + move a0,*a2+,L ;YA + + move a6,*a2+ ;Color type + dsj a3,#fnxt +#nofree + + movi #star_p,a0 ;>Update stars + calla pal_getf + move a0,@DMACMAP + + movi 512*8,b3 + lmo b3,b0 + move b0,@CONVDP + clr b4 + + movi 1<<(32-5-CFRAC),a11 + movi [400,0],a13 ;A13=X max+1 + movi [254,0],a14 ;A14=Y max+1 + move b2,a12 + movi NSTARS,b0 + movi STARBUF,a8 +#lp +; move *a8+,a2,L ;X +; move *a8+,a3,L ;Y +; move *a8+,a5,L ;XV +; move *a8+,a6,L ;YV +; move *a8+,a9,L ;XA +; move *a8+,a10,L ;YA + mmfm a8,a2,a3,a5,a6,a9,a10 ;YA,XA,YV,XV,Y,X + move *a8+,a1 ;Color + move a10,a10 + jrn #nxt + + add a2,a5 + add a3,a6 + add a5,a9 + add a6,a10 + cmp a13,a10 + jrhs #offscr ;X off screen? + cmp a14,a9 + jrlo #plot ;Y on screen? +#offscr + movi -1,a0 + move a0,*a8(-STARSIZE),L + jruc #nxt +#plot + move a10,*a8(-STARSIZE),L + move a9,*a8(-STARSIZE+32),L + move a6,*a8(-STARSIZE+32*2),L + move a5,*a8(-STARSIZE+32*3),L + + move a1,a0 + sll 32-5-CFRAC,a0 + add a11,a0 + jrc #maxc ;Overflow? +; cmpi 32*4,a1 +; jrge #offscr + addk 1,a1 + move a1,*a8(-16) +#maxc srl CFRAC,a1 ;Remove fraction + srl 16,a10 + movx a10,a9 + addxy a12,a9 + pixt a1,*a9.XY +#nxt + dsj b0,#lp + + PULL b4 + PULL a13,a14 + + movi BAKLST,a0 + callr dma_objlst2d + + movi OBJLST,a0 +;;; jruc dma_objlst2dscl + +#star_p + .word 256 + COLORW 01,01,01, 02,02,02, 03,03,03, 04,04,04 ;Grey + COLORW 05,05,05, 06,06,06, 07,07,07, 08,08,08 + COLORW 09,09,09, 10,10,10, 11,11,11, 12,12,12 + COLORW 13,13,13, 14,14,14, 15,15,15, 16,16,16 + COLORW 17,17,17, 18,18,18, 19,19,19, 20,20,20 + COLORW 21,21,21, 22,22,22, 23,23,23, 24,24,24 + COLORW 25,25,25, 26,26,26, 27,27,27, 28,28,28 + COLORW 29,29,29, 30,30,30, 31,31,31, 31,31,31 + COLORW 01,01,00, 02,02,00, 03,03,00, 04,04,00 ;Yellow + COLORW 05,05,00, 06,06,00, 07,07,00, 08,08,00 + COLORW 09,09,00, 10,10,00, 11,11,00, 12,12,00 + COLORW 13,13,00, 14,14,00, 15,15,00, 16,16,00 + COLORW 17,17,00, 18,18,00, 19,19,00, 20,20,00 + COLORW 21,21,00, 22,22,00, 23,23,00, 24,24,00 + COLORW 25,25,00, 26,26,00, 27,27,00, 28,28,00 + COLORW 29,29,00, 30,30,00, 31,31,00, 31,31,00 + COLORW 01,00,00, 02,00,00, 03,00,00, 04,00,00 ;Red + COLORW 05,00,00, 06,00,00, 07,00,00, 08,00,00 + COLORW 09,00,00, 10,00,00, 11,00,00, 12,00,00 + COLORW 13,00,00, 14,00,00, 15,00,00, 16,00,00 + COLORW 17,00,00, 18,00,00, 19,00,00, 20,00,00 + COLORW 21,00,00, 22,00,00, 23,00,00, 24,00,00 + COLORW 25,00,00, 26,00,00, 27,00,00, 28,00,00 + COLORW 29,00,00, 30,00,00, 31,00,00, 31,00,00 + COLORW 00,01,00, 00,02,00, 00,03,00, 00,04,00 ;Green + COLORW 00,05,00, 00,06,00, 00,07,00, 00,08,00 + COLORW 00,09,00, 00,10,00, 00,11,00, 00,12,00 + COLORW 00,13,00, 00,14,00, 00,15,00, 00,16,00 + COLORW 00,17,00, 00,18,00, 00,19,00, 00,20,00 + COLORW 00,21,00, 00,22,00, 00,23,00, 00,24,00 + COLORW 00,25,00, 00,26,00, 00,27,00, 00,28,00 + COLORW 00,29,00, 00,30,00, 00,31,00, 00,31,00 + COLORW 00,00,01, 00,00,02, 00,00,03, 00,00,04 ;Blue + COLORW 00,00,05, 00,00,06, 00,00,07, 00,00,08 + COLORW 00,00,09, 00,00,10, 00,00,11, 00,00,12 + COLORW 00,00,13, 00,00,14, 00,00,15, 00,00,16 + COLORW 00,00,17, 00,00,18, 00,00,19, 00,00,20 + COLORW 00,00,21, 00,00,22, 00,00,23, 00,00,24 + COLORW 00,00,25, 00,00,26, 00,00,27, 00,00,28 + COLORW 00,00,29, 00,00,30, 00,00,31, 00,00,31 + COLORW 00,00,01, 00,00,02, 00,00,03, 00,00,04 ;Lt blue + COLORW 00,00,05, 00,00,06, 00,00,07, 00,00,08 + COLORW 00,00,09, 01,01,10, 02,02,11, 03,03,12 + COLORW 04,04,13, 05,05,14, 06,06,15, 07,07,16 + COLORW 08,08,17, 09,09,18, 10,10,19, 11,11,20 + COLORW 12,12,21, 14,14,22, 16,16,23, 18,18,24 + COLORW 20,20,25, 22,22,26, 24,24,27, 26,26,28 + COLORW 28,28,29, 30,30,30, 30,30,31, 31,31,31 + COLORW 01,00,01, 02,00,02, 03,00,03, 04,00,04 ;Purple + COLORW 05,00,05, 06,00,06, 07,00,07, 08,00,08 + COLORW 09,00,09, 10,00,10, 11,00,11, 12,00,12 + COLORW 13,00,13, 14,00,14, 15,00,15, 16,00,16 + COLORW 17,00,17, 18,00,18, 19,00,19, 20,00,20 + COLORW 21,00,21, 22,00,22, 23,00,23, 24,00,24 + COLORW 25,00,25, 26,00,26, 27,00,27, 28,00,28 + COLORW 29,00,29, 30,00,30, 31,00,31, 31,00,31 + COLORW 00,01,01, 00,02,02, 00,03,03, 00,04,04 ;Cyan + COLORW 00,05,05, 00,06,06, 00,07,07, 00,08,08 + COLORW 00,09,09, 00,10,10, 00,11,11, 00,12,12 + COLORW 00,13,13, 00,14,14, 00,15,15, 00,16,16 + COLORW 00,17,17, 00,18,18, 00,19,19, 00,20,20 + COLORW 00,21,21, 00,22,22, 00,23,23, 00,24,24 + COLORW 00,25,25, 00,26,26, 00,27,27, 00,28,28 + COLORW 00,29,29, 00,30,30, 00,31,31, 00,31,31 + + .endif + +******************************** +* Get random # with mask +* A0=Mask +* >A0=Rnd # (Pass CC) +* Trashes scratch + + SUBRP rnd + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + and a1,a0 + rets + + +******************************** +* Zeros velocities for all objects on OBJLST + +STOPOBJS + clr a0 + movi OBJLST,a1 + jruc so20 + +so10 move a0,*a1(OXVEL),L + move a0,*a1(OYVEL),L + move a0,*a1(OZVEL),L +so20 move *a1,a1,L + jrnz so10 + + rets + + +******************************** +* Sort object list in Z:Y priority +* Trashes A0-A7 + + .align + + SUBR obj_yzsort + + movi OBJLST,a0 + movk 1,a1 ;Lowest Z + sll 31,a1 ;Make >80000000 + jruc yzlp + +yz0 + move *a2(OZPOS),a6 ;Get Z + move *a2(OYPOS),a7 ;Get Y + + cmp a1,a6 + jrgt priok ;Next Z > Current Z? + jrlt priswap + + cmp a5,a7 + jrge priok ;Next Y > Current Y? + +priswap dint ;>Make current after next + move a2,*a4,L ;Point last to next + move *a2,*a0,L ;Point current to block after next + move a0,*a2,L ;Point next to current + eint + move a2,a4 + jruc yzlp ;Continue sort of current obj + +priok move a0,a4 ;A4=*Last obj + move a2,a0 ;A0=*Current obj + move a6,a1 ;A1=Current Z + move a7,a5 ;A5=Current Y + +yzlp move *a0,a2,L ;A2=*Next obj + jrnz yz0 + + rets + + +************************************************************************** +* TEST IF OBJECT ON SCREEN +* A8=OBJECT +* RETURNS Z IF ON SCREEN + +*ENTER HERE AND PROVIDE YOUR OWN SCREEN BOUNDRIES +SCRTSTG + mmtm sp,a1,a2,a3 + jruc scrtst1 + +*NORMAL SCREEN BOUNDRIES +SCRTST + mmtm sp,a1,a2,a3 + move @SCRNTL,a2,L ;Get screen top left + move @SCRNLR,a3,L ;Get screen lower rgt + +scrtst1 move *a8(OYPOS),a0 + move *a8(OXPOS),a1 + sll 16,a0 + movx a1,a0 ;get top left of object + move @WORLDTL,a1,L + subxy a1,a0 ;subtract out world base + move *a8(OSIZE),a1,L + addxy a0,a1 ;get lower rt of object + + cmpxy a3,a0 ;is it lower than lower rt? + JRYGE scrtf_d ;lower + JRXGE scrtf_r ;to the right + + cmpxy a2,a1 + JRYLE scrtf_u ;above... + JRXLE scrtf_l ;to the left.. + + mmfm sp,a1,a2,a3 + clr a0 ;On screen Z + rets +scrtf_l movk 1,a0 ;Pass NZ + mmfm sp,a1,a2,a3 + rets + +scrtf_r movk 2,a0 + mmfm sp,a1,a2,a3 + rets + +scrtf_u movk 3,a0 + mmfm sp,a1,a2,a3 + rets + +scrtf_d movk 4,a0 + mmfm sp,a1,a2,a3 + rets + + +#******************************* +* Initialize display system +* Trashes scratch + + SUBR SPECIAL_DISPLAY_INIT + + pushst + dint + movi DIE+X2E,a0 + move a0,@INTENB ;Display int on, DMA int off + + clr a0 + move a0,@DMACTRL ;Init DMA + move a0,@DMACTRL + move a0,@CMAPSEL ;Clear color map select + move a0,@DMATEST + move a0,@DMACONF + movi [511,0],a1 ;RIGHT:LEFT (full width to fix glitch) + move a1,@DMAWINDOW,L + movi 30h,a1 ;<--------------------check this!!!!!!!!!!! + move a1,@DMACONF ;BOTTOM:TOP + movi [509,0],a1 + move a1,@DMAWINDOW,L + movi [100h,100h],a1 + move a1,@DMASCALEX,L + + movi -1,b13 ;DMAQ cnt + + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A0 + MOVE A0,@TOP_LEFT,L + MOVE A0,@BOT_RIGHT,L + move a0,@special_screen + callr clear_objs + popst + + rets + + +#******************************* +* Initialize display system +* Trashes scratch + + SUBR display_init + + pushst + dint + movi DIE+X2E,a0 + move a0,@INTENB ;Display int on, DMA int off + + clr a0 + move a0,@DMACTRL ;Init DMA + move a0,@DMACTRL + move a0,@CMAPSEL ;Clear color map select + move a0,@DMATEST + move a0,@DMACONF + movi [511,0],a1 ;RIGHT:LEFT (full width to fix glitch) + move a1,@DMAWINDOW,L + movi 30h,a1 ;<--------------------check this!!!!!!!!!!! + move a1,@DMACONF ;BOTTOM:TOP + movi [509,0],a1 + move a1,@DMAWINDOW,L + movi [100h,100h],a1 + move a1,@DMASCALEX,L + + movi -1,b13 ;DMAQ cnt + + clr a1 ;>Clr video mem + movi (SCRNE-512*8*2)/64,b0 +#clp move a0,*a1+,L + move a0,*a1+,L + dsj b0,#clp + ;>Set autoerase lines + movi 510*512*8,a1 ;Store to last 2 lines of bitmap + movi ERASECOL,a14 ;Color pair + movi 512*8*2/16,b0 +#lp move a14,*a1+ + dsj b0,#lp + + + + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A0 + MOVE A0,@TOP_LEFT,L + MOVE A0,@BOT_RIGHT,L + move a0,@special_screen + callr clear_objs + popst + + rets + +clear_objs + CLR A0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + move a0,@WORLDTL,L + move a0,@SCROLLX,L + move a0,@SCROLLY,L + + move a0,@BAKLST,L ;Null backgnd object list + move a0,@OBJLST,L ;Null object list + + move a0,@dcode_p,L + + movi SCRNST,a1 ;Screen top left [Y,X] + move a1,@SCRNTL,L + movi SCRNEND,a1 ;Screen lower right [Y,X] + move a1,@SCRNLR,L + + movi DMAQ+QMSIZE,a1 + move a1,@DMAQCUR,L ;Init misc DMA queue + + movi OBJSTR,a1,L ;>Init free list + move a1,@OFREE,L + movi NOBJ,b0 ;# of object blocks + +#olp move a1,a14 + addi OBSIZ,a1 + move a1,*a14,L ;link em up + dsj b0,#olp + + move a0,*a14,L ;Null end + rets + + +******************************** +* Get a free object block +* Trashes scratch +* >A0=*Object or 0 (Z) + +GETOBJ + move @OFREE,a0,L + jrz nonelft ;None free? + + move *a0,a1,L + move a1,@OFREE,L ;Unlink + clr a1 + move a1,*a0(OPLINK),L + move a1,*a0(ODATA_p),L +getox + move a0,a0 + rets + +nonelft + .if DEBUG + LOCKUP + eint + .else + CALLERR 3,0 + .endif + jruc getox + + +******************************** +* Add object to free list +* Can trash A0-A1 (currently doesn't) + +FREEOBJ + move @OFREE,*a0+,L + subk 32,a0 + move a0,@OFREE,L + rets + + +#******************************* +* Unlink an object from object list +* A0=*Obj +* Trashes scratch + +; SUBR obj_unlink +; +; movi OBJLST,a14 +; +;#lp move a14,a1 ;A1=*Prev +; move *a14,a14,L ;A14=*Next +; jrz #err +; cmp a14,a0 +; jrne #lp +; +; move *a0,*a1,L ;Unlink from obj list +; rets +; +;#err +; .if DEBUG +; LOCKUP +; eint +; .endif +; rets + + +******************************** +* Insert an object block into an object list +* List is sorted by increasing z and increasing y within constant z + + +#******************************* +* Insert background object +* A0=*Obj +* Trashes scratch + +INSBOBJ + movi BAKLST,a14 + jruc #strt + +******************************** +* Insert foreground object +* A0=*Obj +* Trashes scratch + +INSOBJ + + movi OBJLST,a14 + +#strt PUSH a2,a3,a4 + + move *a0(OZPOS),a1 + move *a0(OYPOS),a4 +#lp + move a14,a2 ;A2=*prev + move *a14,a14,L ;A14=*next + jrz #x + move *a14(OZPOS),a3 + cmp a3,a1 + jrgt #lp + jrlt #x + + move *a14(OYPOS),a3 ;Test y position + cmp a3,a4 + jrgt #lp + + +#x move a14,*a0,L ;Put *next in new block + move a0,*a2,L ;Put *new in prev block + + PULL a2,a3,a4 + rets + + +#******************************* +* Delete background object +* A0=*Obj + +DELBOBJ + + movi BAKLST,a14 + jruc #lp + + +******************************** +* Delete foreground object +* A8=*Obj + +DELOBJA8 + + move a8,a0 + +******************************** +* Delete foreground object +* A0=*Obj +* Trashes scratch + +DELOBJ + movi OBJLST,a14 + +#lp move a14,a1 ;A1=*Prev + move *a14,a14,L ;A14=*Next + jrz delerr + cmp a14,a0 + jrne #lp + + move *a0,*a1,L ;Unlink from obj list + + clr a1 + move a1,*a0(OXPOS) ;Indicates not in use for collisions + + move @OFREE,*a0+,L ;Add to free list + subk 32,a0 + move a0,@OFREE,L + +#x rets + +delerr + .if DEBUG + LOCKUP + eint + .else + CALLERR 1,0 + .endif + jruc #x + + + +******************************** +* FRANIM list an object, delete it and DIE +* A8=*Obj +* A9=*FRANIM list + +FRQDELDIE + + JSRP FRANIMQ + +#******************************* +* Delete foreground object and DIE +* A8=*Obj + +DELOBJDIE + + movi OBJLST,a14 + +#lp move a14,a1 ;A1=*Prev + move *a14,a14,L ;A14=*Next + jrz doderr + cmp a14,a8 + jrne #lp + + move *a8,*a1,L ;Unlink from obj list + + clr a1 + move a1,*a8(OXPOS) ;Indicates not in use for collisions + + move @OFREE,*a8+,L ;Add to free list + subk 32,a8 + move a8,@OFREE,L + +#x jauc SUCIDE + +doderr + .if DEBUG + LOCKUP + eint + .else + CALLERR 1,0 + .endif + jruc #x + + + +#******************************* +* Delete one class from the obj list +* A0=OID +* Trashes scratch + +obj_del1c + + clr a1 + +******************************** +* Delete a class from the obj list +* A0=OID +* A1=!Mask (Bits to remove) +* Trashes scratch + +obj_delc + move a2,b0 + move a3,b1 + + movi OBJLST,a14 + sext a0 + andn a1,a0 ;Form match + +#lp move a14,a3 ;A3=*Prev + move *a14,a14,L ;A14=*Next + jrz #x +#cmp move *a14(OID),a2 + andn a1,a2 ;Mask + cmp a0,a2 + jrne #lp + + move *a14,*a3,L ;Unlink from obj list + + move @OFREE,*a14+,L ;Add to free list + subk 32,a14 + move a14,@OFREE,L + move *a3,a14,L + jrnz #cmp + +#x + move b1,a3 + move b0,a2 + rets + + + +#******************************* +* Check objlst for an object with a certain OID +* A0=OID +* A1=!Mask (Bits to remove) +* >A0=*Obj or 0 (Z) +* Trashes scratch + +EXISTOBJ + move a2,b0 + + movi OBJLST,a14 + sext a0 + andn a1,a0 ;Form match +#lp + move *a14,a14,L + jrz #x + move *a14(OID),a2 + andn a1,a2 ;Mask + cmp a0,a2 + jrne #lp + +#x move b0,a2 + move a14,a0 + rets + + +#******************************* +* Check if object on free list +* A0=*Obj +* >A0=*Obj or 0 (Z) +* Trashes scratch + +;ISFREE +; movi OFREE,a1 +; jruc #lp + + +******************************** +* Check if object on OBJLST +* A0=*Obj +* >A0=*Obj or 0 (Z) +* Trashes scratch + +ISOBJ + movi OBJLST,a1 + +#lp move *a1,a1,L + jrz #x ;End? + cmp a0,a1 + jrne #lp ;No match? + + move a0,a0 ;Clr Z + rets + +#x clr a0 ;Set Z + rets + + +******************************** +* Add world coordinates to an object +* A0=*Obj +* Trashes scratch, !A0 + + SUBR obj_addworldxy + + move @WORLDTLX,a14,L + move *a0(OXVAL),a1,L + add a14,a1 + move a1,*a0(OXVAL),L + + move @WORLDTLY,a14,L + move *a0(OYVAL),a1,L + add a14,a1 + move a1,*a0(OYVAL),L + + rets + + +************************************************************************** +* * +* ADJNEWTL - ADJUST AN OBJECT TO A NEW SET OF X,Y WORLD COORDINATES * +* BEFORE THEY ARE STORED(TAKE EFFECT). * +* NOTE: CURRENT OBJECT COORDS. MUST BE ABSOLUTE WORLD. * +* A0 = PTR TO OBJECT * +* A4 = NEW WTLX, 32 BITS * +* A5 = NEW WTLY, 32 BITS * + +ADJNEWTL + PUSH a1,a2 + CALLR GSCRNREL ;SCREEN RELATIVE PLEASE + ADD A4,A1 + ADD A5,A2 ;ADJUST + MOVE A1,*A0(OXVAL),L + MOVE A2,*A0(OYVAL),L ;STORE + PULL a1,a2 + RETS + + +************************************************************************** +* * +* GSCRNREL - GET THE SCREEN RELATIVE X,Y COORDINATES OF AN OBJECT * +* IT IS ASSUMED THAT THE CURRENT X,Y COORDINATES ARE * +* WORLD ABSOLUTE. * +* A0 = PTR TO THE OBJECT BLOCK * +* RETURNS * +* A1 = X SCREEN RELATIVE, 32 BITS * +* A2 = Y SCREEN RELATIVE, 32 BITS * + +GSCRNREL + PUSH a5 + MOVE @WORLDTLX,A5,L + MOVE *A0(OXVAL),A1,L + SUB A5,A1 + MOVE @WORLDTLY,A5,L + MOVE *A0(OYVAL),A2,L + SUB A5,A2 + PULL a5 + RETS + + +************************************************************************** +* * +* SCRNRELV - MAKE THE X & Y VELOCITIES OF AN OBJECT RELATIVE TO THE * +* SCREEN. IN OTHER WORDS, ADJUST THEM SO THAT THE CURRENT * +* SCROLL RATE DOESN'T AFFECT THEM. * +* A0 = PTR TO OBJECT * +* * +************************************************************************** + +SCRNRELV + PUSH a1,a5 + MOVE @SCROLLX,A5,L + MOVE *A0(OXVEL),A1,L + ADD A5,A1 + MOVE A1,*A0(OXVEL),L + MOVE @SCROLLY,A5,L + MOVE *A0(OYVEL),A1,L + ADD A5,A1 + MOVE A1,*A0(OYVEL),L + PULL a1,a5 + RETS + + +******************************** +* Adjust current object image with respect to it's anipt and flip flags +* A0=*Object +* A2=New YVAL +* A3=New XVAL +* A4=New FLAGS (Only DMA bits) +* Trashes A1,A14,B0-B1 +* >A2=Adjusted YVAL +* >A3=Adjusted XVAL + +GANISAG + PUSH a4,a6,a7 + + PUSH a2 + move *a0(OIMG),a1,L + move *a1,a2,L ;ISIZE + move a2,*a0(OSIZE),L + callr GANIOF + PULL a2 + + sub a6,a3 + sub a7,a2 ;adjust upper left corner + move a3,*a0(OXVAL),L + move a2,*a0(OYVAL),L + + move *a1(ICTRL),a1 ;Get DMA flags + andi >803f,a4 ;Kill mode bits + or a1,a4 + move a4,*a0(OCTRL),L ;&OFFSET + + PULL a4,a6,a7 + rets + + +****************************************************************************** +* Begin an object +* A0=XVAL, A1=YVAL, A2=*IMG, A3=ZPOS, A4=FLAGS, A5=OID, A6=XVEL, A7=YVEL +* >A8=*Obj +* Trashes scratch + +BEGINOBJW + move @WORLDTLX,a8,L ;Adjust for world coord + add a8,a0 + btst B_3D,a4 + jrnz BEGINOBJ ;No Y add for 3D? + move @WORLDTLY,a8,L + add a8,a1 + +BEGINOBJ + PUSH a2,a3,a4,a6,a7,a9,a10 + move a0,a9 ;X + move a1,a10 ;Y + + move *a2(ICMAP),a0,L ;Get *palette + .if DEBUG + jrnn bopalerr ;No palette? + .endif + calla pal_getf + +bo20 move @OFREE,a8,L ;Pointer to next available obj block + jrz begobjerr ;No objs? + move *a8,a1,L + move a1,@OFREE,L ;Adjust pointer to free list + + move a0,*a8(OPAL),L ;Set palette & constant + clr a0 + move a0,*a8(ODATA_p),L ;Clr stuff + move a0,*a8(OXANI),L + move a0,*a8(OZVEL),L + move a0,*a8(OMISC) + + move a0,*a8(ODOFF),L + movi 01000100H,a0 + move a0,*a8(OSCALE),L + + move a3,*a8(OZPOS) + + move a5,*a8(OID) + move a6,*a8(OXVEL),L + move a7,*a8(OYVEL),L + + move a2,a1 ;*Img + move *a1,a2,L ;ISIZE + callr GANIOF ;Adjust animation offset + +;here!!!!!!!!!!!!!! + move *a1(IANIOFFX),*a8(ODXOFF) ;display x offset + move *a1(IANIOFFY),*a8(ODYOFF) ;display y offset + + move *a1(ISAG),a3,L ;Get top left sag + +;;; sub a6,a9 ;- x anioff +;;; sub a7,a10 ;- y anioff + move a9,*a8(OXVAL),L + move a10,*a8(OYVAL),L + + move a1,*a8(OIMG),L + move a2,*a8(OSIZE),L + move a3,*a8(OSAG),L + move a4,*a8(OFLAGS) + move *a1(ICTRL),a0 ;Get DMA flags + andi >803f,a4 ;Kill mode bits + or a0,a4 + move a4,*a8(OCTRL),L ;&OFSET + + PULL a2,a3,a4,a6,a7,a9,a10 + + move a13,*a8(OPLINK),L + move a8,a0 + jruc INSOBJ ;Insert object into list + + + .if DEBUG +bopalerr + LOCKUP ;Object doesn't have pallette! + eint + clr a0 + jruc bo20 + .endif + +begobjerr + .if DEBUG + LOCKUP ;Out of objects! + eint + .else + CALLERR 3,7 + .endif + move @OBJLST,a8,L ;Pass 1st obj on list + PULL a2,a3,a4,a6,a7,a9,a10 + rets + + + +#******************************* +* Begin an object with specified palette +* A0=XVAL, A1=YVAL, A2=*IMG, A3=ZPOS, A4=FLAGS, A5=OID, A6=XVEL, A7=YVEL +* B0=*Palette +* >A8=*Obj +* Trashes scratch + +BEGINOBJWP + move @WORLDTLX,a8,L ;Adjust for world coord + add a8,a0 + btst B_3D,a4 + jrnz BEGINOBJP ;No Y add for 3D? + move @WORLDTLY,a8,L + add a8,a1 + +BEGINOBJP + PUSH a2,a3,a4,a6,a7,a9,a10 + move a0,a9 ;X + move a1,a10 ;Y + + move b0,a0 ;Get *palette + .if DEBUG + jrnn #bopalerr ;No pallette? + .endif + calla pal_getf + +#bo20 move @OFREE,a8,L ;Pointer to next available obj block + jrz begobjerr ;No objs? + move *a8,a1,L + move a1,@OFREE,L ;Adjust pointer to free list + + move a0,*a8(OPAL),L ;Set pallette & constant + clr a0 + move a0,*a8(ODATA_p),L ;Clr stuff + move a0,*a8(OXANI),L + move a0,*a8(OZVEL),L + move a0,*a8(OMISC) + + move a0,*a8(ODOFF),L + movi 01000100H,a0 + move a0,*a8(OSCALE),L + + move a3,*a8(OZPOS) + + move a5,*a8(OID) + move a6,*a8(OXVEL),L + move a7,*a8(OYVEL),L + + move a2,a1 ;*Img + move *a1,a2,L ;ISIZE + callr GANIOF ;Adjust animation offset + +;here!!!!!!!!!!!!!! + move *a1(IANIOFFX),*a8(ODXOFF) ;display x offset + move *a1(IANIOFFY),*a8(ODYOFF) ;display y offset + + move *a1(ISAG),a3,L ;Get top left sag + +;;; sub a6,a9 ;- x anioff +;;; sub a7,a10 ;- y anioff + move a9,*a8(OXVAL),L + move a10,*a8(OYVAL),L + + move a1,*a8(OIMG),L + move a2,*a8(OSIZE),L + move a3,*a8(OSAG),L + move a4,*a8(OFLAGS) + move *a1(ICTRL),a0 ;Get DMA flags + andi >803f,a4 ;Kill mode bits + or a0,a4 + move a4,*a8(OCTRL),L ;&OFSET + + PULL a2,a3,a4,a6,a7,a9,a10 + + move a13,*a8(OPLINK),L + move a8,a0 + jruc INSOBJ ;Insert object into list + + + .if DEBUG +#bopalerr + LOCKUP ;Object doesn't have pallette! + eint + clr a0 + jruc #bo20 + .endif + + +#******************************* +* Set new image for an object +* A1=*Image hdr +* A4=New FLAGS +* A8=*Obj +* Trashes A1,A14 + + SUBR ANI + + PUSH a0,a2,a3,a4,a5,a6,a7 + + cmpi ROM,a1 + jrlo anierr + + move a1,a3 + move a4,a5 + move *a8(OIMG),a1,L + move *a8(OCTRL),a4 + cmp a1,a3 + jrne #1 ;Different img? + + sext a5 + cmp a4,a5 + jreq #x ;All the same? + +#1 move *a8(OSIZE),a2,L + callr GANIOF ;Get old animation offset + move a3,a1 ;New OIMG + srl 6,a4 + sll 6,a4 + or a5,a4 ;Set new OCTRL + move a6,a0 + move a7,a5 + move *a1(ISAG),a3,L ;Get top left sag + move *a1,a2,L ;ISIZE + callr GANIOF ;Get new animation offset + move a1,*a8(OIMG),L + sub a6,a0 ;Subtract new from old + sub a7,a5 + zext a4 ;Zero offset in A4 + + move a8,a6 ;Get push address of octrl,osag,osize + addi OCTRL+>60,a6 + mmtm a6,a2,a3,a4 ;Save new data + + subi OCTRL-OXVAL,a6 + move *a6,a7,L ;New OXVAL + add a0,a7 + move a7,*a6+,L + move *a6,a7,L ;New OYVAL + add a5,a7 + move a7,*a6,L + +#x PULL a0,a2,a3,a4,a5,a6,a7 + rets + +anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,7 + .endif + jruc #x + + +#***************************************************************************** +* Change an objects image (Doesn't check VFLIP) +* A0=*New image +* A1=New flip flags & const +* A8=*Obj +* Trashes scratch + + SUBRP obj_aniq + + + PUSH a2,a3 + + cmpi ROM,a0 + jrlo #anierr + + move a0,a2 + move a1,a3 + + callr anipt_getxy + + move a2,*a8(OIMG),L + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + setf 5,0,0 + move *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 6,0,0 + move a3,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + move a0,a2 + move a1,a3 + callr anipt_getxy + + sub a0,a2 ;Subtract new from old + sub a1,a3 + + move a8,a0 ;Get base address + addi OXVAL,a0 + move *a0,a14,L ;New OXVAL + add a2,a14 + move a14,*a0+,L + move *a0,a14,L ;New OYVAL + add a3,a14 + move a14,*a0,L + +#x PULL a2,a3 + rets + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,2 + .endif + jruc #x + + +#******************************* +* Get an objects anipt XY (Doesn't check VFLIP) +* A8=*Obj +* >A0=Scaled Ani X (16:16) +* >A1=Scaled Ani Y +* Trashes scratch + + SUBRP anipt_getxy + + move a2,b0 + + move *a8(OIMG),a2,L + + move *a2(IANIOFFX),a0 + sll 16,a0 + move *a2(IANIOFFY),a1 + sll 16,a1 + + move *a8(OCTRL),a14 + btst B_FLIPH,a14 + jrz #x ;No flip? + + move *a2,a2 ;ISIZEX + subk 1,a2 + sll 16,a2 ;*64K + neg a0 + add a2,a0 ;+size + + +#x move b0,a2 + rets + + + +#******************************* +* Change an objects image (doesn't check flip flags) +* A0=*New image +* A1=New OCTRL +* A8=*Obj +* Trashes scratch + + SUBRP obj_aniq_cnoff + + move a2,b0 + + move a1,*a8(OCTRL) ;Write new ctrl + + move *a8(OIMG),a14,L + move *a14(IANIOFFX),a2 + move *a14(IANIOFFY),a14 + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFY),a1 + move *a0(IANIOFFX),a0 + + sub a0,a2 ;Subtract new from old + sub a1,a14 + sll 16,a2 + sll 16,a14 + + move a8,a0 ;Get base address + addi OXVAL,a0 + move *a0,a1,L ;New OXVAL + add a2,a1 + move a1,*a0+,L + move *a0,a1,L ;New OYVAL + add a14,a1 + move a1,*a0,L + + move b0,a2 + rets + + + +;#******************************* +;* Change an scaled objects image (Doesn't check VFLIP) +;* A0=*New image +;* A1=New OCTRL (low 8 bits) +;* A8=*Obj +;* Trashes scratch, A2,A3 +; +; +; SUBRP obj_aniq_scld +; +; +; cmpi ROM,a0 +; jrlo #anierr +; +; move a0,a2 +; move a1,a3 +; +;;;; calla anipt_getsclxy +; +; movb a3,*a8(OCTRL) +; +; move a2,*a8(OIMG),L +; move *a2(0),*a8(OSIZE),L +; move *a2(ISAG),*a8(OSAG),L +; +; move a0,a2 +; move a1,a3 +;;;; calla anipt_getsclxy +; +; sub a0,a2 ;Subtract new from old +; sub a1,a3 +; +; move a0,*a8(OXANI),L ;Save scaled anipt +; +; move a8,a0 ;Get base address +; addi OXVAL,a0 +; move *a0,a14,L ;New OXVAL +; add a2,a14 +; move a14,*a0+,L +; move *a0,a14,L ;New OYVAL +; add a3,a14 +; move a14,*a0,L +; +;#x rets +; +; +;#anierr +; .if DEBUG +; LOCKUP +; eint +; .else +; CALLERR 2,0 +; .endif +; jruc #x + + + +******************************** +* Get the x and y positions of an objects animation point +* A8=*Object +* Trashes scratch +* >A2=Ani pt Y 16:16 +* >A3=Ani pt X 16:16 + +GETANIXY + PUSH a4,a6,a7 + move *a8(OIMG),a1,L + move *a8(OSIZE),a2,L + move *a8(OCTRL),a4 + callr GANIOF + move *a8(OXVAL),a3,L + move *a8(OYVAL),a2,L + add a6,a3 + add a7,a2 + PULL a4,a6,a7 + rets + + +#******************************** +* Get animation offset (Fast!) +* A1=*Image header, A2=H:W, A4=OCTRL +* Trashes A14 +*Rets: +* A6=X ani offset * 64K +* A7=Y ani offset * 64K + +GANIOF + move *a1(IANIOFF),a6,L + cmpi IROM,a6 + jrge #err + +#h clr a7 + movy a6,a7 + sll 16,a6 ;Move to upper word + + btst B_FLIPH,a4 + jrz #v + move a2,a14 + subk 1,a14 + sll 16,a14 ;Move W to upper word + neg a6 + add a14,a6 ;Sub Width-1 + +#v btst B_FLIPV,a4 + jrz #x + move a2,a14 + neg a7 + srl 16,a14 + subk 1,a14 + sll 16,a14 + add a14,a7 ;Sub Hgt-1 + +#x rets + +#err clr a6 + jruc #h + + +#******************************* +* Scale screen out (JSRP) + + .asg SCRATCH+8*256*1024,SCRNBUF + .asg SCRNBUF+8*128*1024,PALBUF + + .bss scrnscl ,16 + + SUBR scrn_scaleout + + movk 1,a0 + move a0,@HALT + + move @dtype,a0 + PUSHP a0 + move @gndstat,a0 + PUSHP a0 + + movi >160,a0 + move a0,@scrnscl + + movi #initcode,a0 + move a0,@dcode_p,L + + movi -1,a0 + move a0,@dtype + clr a0 + move a0,@gndstat + move a0,@IRQSKYE + +#lp SLEEPK 1 + + movi scrnscl,a14 + move *a14,a5 + move a5,a0 + srl 3,a0 + add a0,a5 + move a5,*a14 + cmpi >7000,a5 + jrlt #lp + + clr a0 + move a0,@dcode_p,L + + PULLP a0 + move a0,@gndstat + PULLP a0 + move a0,@dtype + + + RETP + +#initcode + callr scrn_copy + movi scrn_scale,a0 + move a0,@dcode_p,L + jump a0 + + +#******************************* +* Initialization for scrn_scalein (JSRP) + + SUBR scrn_scaleininit + + dint +#lp move @VCOUNT,a0 + cmpi EOSINT,a0 + jrlt #lp + move @HSBLNK,a0 ;Blank screen + move a0,@HEBLNK + eint + SLEEPK 2 + + RETP + +#******************************* +* Scale screen in (JSRP) + + SUBR scrn_scalein + + PUSHP a8 + + move @HALT,a0 + PUSHP a0 + movk 1,a0 + move a0,@HALT + + move @dtype,a0 + PUSHP a0 + move @gndstat,a0 + PUSHP a0 + move @dcode_p,a0,L + PUSHP a0 + + movi >7000,a0 + move a0,@scrnscl + + movi #initcode,a0 + move a0,@dcode_p,L + movi -1,a0 + move a0,@dtype + clr a0 + move a0,@gndstat + + + .if DEBUG +; movi >1a0,a0 +; move a0,@scrnscl +; SLEEP TSEC*2 + .endif + + +#lp SLEEPK 1 + + movi scrnscl,a14 + move *a14,a5 + move a5,a0 + srl 2,a0 + sub a0,a5 + move a5,*a14 + cmpi >100,a5 + jrgt #lp + + + PULLP a0 + move a0,@dcode_p,L + PULLP a0 + move a0,@gndstat + PULLP a0 + move a0,@dtype + + PULLP a0 + move a0,@HALT + + + PULLP a8 + RETP + + +#initcode + callr scrn_copy + movi scrn_scaledison,a0 + move a0,@dcode_p,L + jruc scrn_scale + + +#******************************* +* B2=Y offset for top of page : XPad offset +* Trashes A0-A3,A7 + + SUBRP scrn_copy + + move b2,a0 + srl 16,a0 + xori >100,a0 ;Flip to the page being shown + sll 12,a0 ;*512*8 + addi SCRNXP*8,a0 ;A0=*Scrn mem + PUSH a0 + + movi SCRNBUF,a1 + movi 254,a3 + movi (512-400)*8,a7 +#cslp + movi 400/16,a2 +#cslp2 move *a0+,*a1+,L + move *a0+,*a1+,L + move *a0+,*a1+,L + move *a0+,*a1+,L + dsj a2,#cslp2 + + add a7,a0 + add a7,a1 + dsj a3,#cslp + + + move @SYSCOPY,a0 + .if WWFUNIT + andni PALENB,a0 + move a0,@SYSCOPY + .if DEBUG + andni LEDON,a0 + ori WROMINTCLR,a0 + .endif + .else + andni 100000b,a0 + move a0,@SYSCOPY + .if DEBUG + andni 1000000b,a0 + .endif + .endif + move a0,@SYSCTRL + + + PULL a0 + movi PALBUF,a1 + movi 254,a3 +#cplp + movi 400/16,a2 +#cplp2 move *a0+,*a1+,L + move *a0+,*a1+,L + move *a0+,*a1+,L + move *a0+,*a1+,L + dsj a2,#cplp2 + + add a7,a0 + add a7,a1 + dsj a3,#cplp + + move @SYSCOPY,a0 + + + .if WWFUNIT + ori PALENB,a0 + move a0,@SYSCOPY + .if DEBUG + andni LEDON,a0 + ori WROMINTCLR,a0 + .endif + .else + ori 100000b,a0 + move a0,@SYSCOPY + .if DEBUG + andni 1000000b,a0 + .endif + .endif + move a0,@SYSCTRL + + + rets + + +#******************************* +* Copy screen data (throw out 1 in 5 pixels) +* B2=Y offset for top of page : XPad offset + + SUBRP scrn_scale140 + + PUSH a4,a14 + + movi >140,a5 + + move b2,a1 + srl 16,a1 + addi 25,a1 + sll 12,a1 ;*512*8 + addi SCRNXP*8+40*8,a1 ;A1=*Scrn mem + + movi DMACMAP,a6 + clr a7 ;Y line 8:8 +#lp + move a7,a2 + srl 8,a2 + sll 12,a2 ;*512*8 + move a2,a3 + + addi SCRNBUF,a2 + addi PALBUF,a3 + movi 400/2/5,b0 ;Copy 1 line +#cslp + move *a3,*a6 ;Set pal latch + addk 16,a3 + move *a2+,*a1+ ;Copy 2 pixels + + move *a3,*a6 + addk 16,a3 + move *a2+,*a1+ + + move *a3,*a6 + addk 16,a3 + move *a2+,*a1+ + + move *a3,*a6 + addk 16,a3 + move *a2+,*a1+ + + addk 16,a3 + addk 16,a2 + + dsj b0,#cslp + + addi (512-320)*8,a1 + + add a5,a7 + cmpi 254<<8,a7 + jrlt #lp + + +#x PULL a4,a14 + rets + + + +#******************************* +* Copy screen data (throw out 1 in 3 pixels) +* B2=Y offset for top of page : XPad offset + + SUBRP scrn_scale180 + + PUSH a4,a14 + + movi >180,a5 + + move b2,a1 + srl 16,a1 + addi 42,a1 + sll 12,a1 ;*512*8 + addi SCRNXP*8+68*8,a1 ;A1=*Scrn mem + + movi DMACMAP,a6 + clr a7 ;Y line 8:8 +#lp + move a7,a2 + srl 8,a2 + sll 12,a2 ;*512*8 + move a2,a3 + + addi SCRNBUF,a2 + addi PALBUF,a3 + movi 400/2/3,b0 ;Copy 1 line +#cslp + move *a3,*a6 ;Set pal latch + addk 16,a3 + move *a2+,*a1+ ;Copy 2 pixels + + move *a3,*a6 + addk 16,a3 + move *a2+,*a1+ + + addk 16,a3 + addk 16,a2 + + dsj b0,#cslp + + addi (512-264)*8,a1 + + add a5,a7 + cmpi 254<<8,a7 + jrlt #lp + + +#x PULL a4,a14 + rets + + +******************************** + + SUBRP scrn_scaledison + + movi HEBLNKINIT,a0 ;Display on + move a0,@HEBLNK + movi scrn_scale,a0 + move a0,@dcode_p,L + + +#******************************* +* Copy screen data with variable down scaling +* B2=Y offset for top of page : XPad offset + + SUBRP scrn_scale + + move @scrnscl,a5 + cmpi >168,a5 + jrlt scrn_scale140 + cmpi >190,a5 + jrlt scrn_scale180 + + PUSH a4,a14 + + move b2,a9 + srl 16,a9 + movi 127<<8,a3 + divu a5,a3 + sub a3,a9 + addi 127,a9 + sll 12,a9 ;*512*8 + + addi (SCRNXP+200)*8,a9 ;A9=*Scrn mem + movi 100<<8,a3 + divu a5,a3 + sll 4,a3 ;*16 + sub a3,a9 + + movi DMACMAP,a6 + clr a7 ;Y line 8:8 + movi 200<<8,a10 +#lp + move a7,a2 + srl 8,a2 + sll 12,a2 ;*512*8 + move a2,a3 + + move a9,a1 + addi SCRNBUF,a2 + addi PALBUF,a3 + clr a8 ;X 8:8 +#cslp + move *a3,*a6 ;Set pal latch + move *a2,*a1 ;Copy 2 pixels + addk 16,a1 + + move a8,a0 + add a5,a8 + sra 8,a0 + move a8,a14 + sra 8,a14 + sub a0,a14 + +#nxtp + addk 16,a3 + addk 16,a2 + subk 1,a14 + jrgt #nxtp + + cmp a10,a8 + jrlt #cslp + + + addi 512*8,a9 ;Next line + + add a5,a7 + cmpi 254<<8,a7 + jrlt #lp + + +#x PULL a4,a14 + rets + + +#***************************************************************************** +* Remove an object from OBJLST and move it to BAKLST +* a0=*obj +* Trashes a1,a14 + + SUBR fg2bg + + movi OBJLST,a1 + +#loop + move a1,a14 + move *a1,a1,L + jrz #not_found + cmp a0,a1 + jrne #loop + + ;found it + move *a0,*a14,L ;remove from OBJLST + callr INSBOBJ ;add to BAKLST + + move *a0(ODXOFF),a1 ;adjust X and Y pos. BGND objects + move *a0(OXPOS),a14 ; don't use anim points. + sub a1,a14 + move a14,*a0(OXPOS) + clr a14 + move a14,*a0(ODXOFF) + + move *a0(ODYOFF),a1 + move *a0(OYPOS),a14 + sub a1,a14 + move a14,*a0(OYPOS) + clr a14 + move a14,*a0(ODYOFF) + +#not_found + rets + +#***************************************************************************** +* Create an object from one of jason's special header blocks. +* >a0=*block +* 01000100,a2 + move a2,@DMASCALEX,L ; dma input #1 = scale +; movi bpal_black*>10000,a2 +*TEMP + movi 010101010h,a2 +; CLR A2 +*TEMP + move a2,@DMACMAP,L ; dma input #2 = const:palette +* +* setup dedicated registers +* +* b0 = dmactrl +* b1 = worldtly +* a2 = dma y:x size pointer +* a3 = dma control:offset +* a6 = dma y coordinate pointer +* a12 = dma sag pointer +* + + movi DMAVERT,a6 + movk 1,a8 + move a8,*a6(020h),W ; y size is always "1" + movi DMAOFFST,a2 + clr a8 + move a8,*a2+,W ; offset is always "0" + movi DMAHORIZ,b6 + movi 02000000h,a7 + movi DMASAGL,a12 + move @page_addr,a5,L + +shad0 + move *a3+,a9,L + move *a9(OXPOS),a0,W + zext a0,W +; sll 16,a13 +; or a13,a0 ; a0 = ani y:x for all pieces (world) + + move b1,a14 ; a14 = worldtly + CLR A13 + move @WORLDTLX+16,a13 + SUBXY A13,A0 + + move @WORLDTLY+16,A13 + SUBI 10,A13 + SLL 16,A13 + SUBXY A13,A0 + + addxy a5,a0 + MOVE A0,B8 + MOVE B8,*B6,L ;DO XPOS + + MOVE A0,B4 + + .ALIGN +************************************************************************** +* * +* piece by piece loop * +* * +************************************************************************** +shad2 + move *a9(OYPOS),a10 + jrn shad9 + move *a9(OSAG),a10,L ; a10 = sag of this piece + jrz shad9 ; sag = 0 ---> we are done + + add a7,a10 + + move *a9(OSIZEY),a13,W ; a13 = # of lines + srl 3,a13 ; shadows are 1/4 the normal height + move a13,b5 + + move *a9(OSIZEX),a11,W + move a11,*a6(010h),W ; set a11 = x size for this piece + + move *a9(ODXOFF),A13 + move *a9(OCTRL),a14,W + btst B_FLIPH,a14 ; flip horizontal ? + jreq shad1 + NEG A13 + +shad1 move a14,a1 + move a14,a4 + sll 16+4,a1 + srl 32-2,a1 ; a1 = trail multiplier + sll 16+4+2,a4 + srl 32-2,a4 ; a4 = lead multiplier + + ori DMACNZ,a14 + + MOVE B4,A0 + SUBXY A13,A0 + move a0,b8 + move b8,*b6,W ; set x coordinate here !! + srl 16,a0 + move *a9(ODYOFF),A13 + SRL 3,A13 + SUBXY A13,A0 + +************************************************************************** +* * +* line by line loop * +* * +************************************************************************** + +shad4 +shad3 move *b0,b3,W + jrn shad3 ; wait for dma while busy + + sub A7,a10 + move a10,*a12,L ; stuff sag + add A7,a10 + + move a0,*a6,W ; set y coordinate + move a14,*a2,W ; set the GO! bit + dsjs b5,shad5 + +************************************************************************** +* * +* do the last line again to fill in "holes" * +* * +************************************************************************** + inc a0 + move a0,*a6,W ; set y 1 line down + dec a0 + +shad6 move *b0,b3,W + jrn shad6 ; wait for dma while busy + move a14,*a2,W ; set the GO + move *a3+,a9,L + jruc shad2 + +* +* skip 4 lines +* +shad5 move *b0,b3,W + jrn shad5 ; wait for dma while busy + inc a0 + movk 8,b3 + setf 8,0,0 ; field 0 is 8 bits (zero extend) + +shad7 move *a10+,a8,W ; grab a BYTE !! + + move a8,a13 + sll 32-4,a13 + srl 32-4,a13 ; mask off upper b.s. + sll a4,a13 ; a13 = lead zeros + + srl 4,a8 + sll a1,a8 ; a8 = trailing zeros + + add a8,a13 ; a13 = lead + trailing = all compressed zeros + move a11,a8 ; a8 = x size + sub a13,a8 ; a8 = uncompressed pixels to skip + + sll 1,a8 ; 2x + add a8,a10 + sll 1,a8 ; + 4x = 6 bits per pixel + add a8,a10 ; a10 ---> sag for next line + dsjs b3,shad7 + +;xx + setf 16,1,0 ; field 0 is back to 16 bits + jruc shad4 + +shad9 + mmfm sp,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14 + mmfm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 + rets + +;****************************************************************************** +; +;PLACE_SHADOWS +; mmtm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 +; mmtm sp,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14 +; +; move @process_ptrs,a3,L +; jrz shad9 +; addi OBJ_BASE,a3 +; move *a3,a3,L +; addi 020h,a3 +; +; movi DMACTRL,b0 +;shad_1 move *b0,b3,W +; jrn shad_1 ; wait for dma while busy +; +; movi >01000100,a2 +; move a2,@DMASCALEX,L ; dma input #1 = scale +;; movi bpal_black*>10000,a2 +;*TEMP +; CLR A2 +;*TEMP +; move a2,@DMACMAP,L ; dma input #2 = const:palette +;* +;* setup dedicated registers +;* +;* b0 = dmactrl +;* b1 = worldtly +;* a2 = dma y:x size pointer +;* a3 = dma control:offset +;* a6 = dma y coordinate pointer +;* a12 = dma sag pointer +;* +; +; movi DMAVERT,a6 +; movk 1,a8 +; move a8,*a6(020h),W ; y size is always "1" +; movi DMAOFFST,a2 +; clr a8 +; move a8,*a2+,W ; offset is always "0" +; movi DMAHORIZ,b6 +; movi 02000000h,a7 +; movi DMASAGL,a12 +; move @page_addr,a5,L +; +;shad0 +; move *a3+,a9,L +; move *a9(OYPOS),a13,W +; move *a9(OXPOS),a0,W +; zext a0,W +; sll 16,a13 +; or a13,a0 ; a0 = ani y:x for all pieces (world) +; +; move b1,a14 ; a14 = worldtly +; CLR A13 +; move @WORLDTLX+16,a13 +; SUBXY A13,A0 +; +; move @WORLDTLY+16,A13 +; SLL 16,A13 +; ADDXY A13,A0 +; +; addxy a5,a0 +; MOVE A0,B8 +; MOVE B8,*B6,L ;DO XPOS +; +; MOVE A0,B4 +; +;************************************************************************** +;* * +;* piece by piece loop * +;* * +;************************************************************************** +; +;shad2 move *a9(OSAG),a10,L ; a10 = sag of this piece +; jrz shad9 ; sag = 0 ---> we are done +; +; add a7,a10 +; +; move *a9(OSIZEY),a13,W ; a13 = # of lines +; srl 2,a13 ; shadows are 1/4 the normal height +; move a13,b5 +; +; move *a9(OSIZEX),a11,W +; move a11,*a6(010h),W ; set a11 = x size for this piece +; +; move *a9(OCTRL),a14,W +; btst B_FLIPH,a14 ; flip horizontal ? +; jreq shad1 +; addxy a11,a0 ; yes, adjust coordinates for flip +; dec a0 ; and nudge.. +; +;shad1 move a14,a1 +; move a14,a4 +; sll 16+4,a1 +; srl 32-2,a1 ; a1 = trail multiplier +; sll 16+4+2,a4 +; srl 32-2,a4 ; a4 = lead multiplier +; +; ori DMACNZ,a14 +; +; MOVE B4,A0 +; move a0,b8 +; move b8,*b6,W ; set x coordinate here !! +; srl 16,a0 +; +;************************************************************************** +;* * +;* line by line loop * +;* * +;************************************************************************** +; +;shad4 +;shad3 move *b0,b3,W +; jrn shad3 ; wait for dma while busy +; +; sub A7,a10 +; move a10,*a12,L ; stuff sag +; add A7,a10 +; +; move a0,*a6,W ; set y coordinate +; move a14,*a2,W ; set the GO! bit +; dsjs b5,shad5 +; +;************************************************************************** +;* * +;* do the last line again to fill in "holes" * +;* * +;************************************************************************** +; inc a0 +; move a0,*a6,W ; set y 1 line down +; dec a0 +; +;shad6 move *b0,b3,W +; jrn shad6 ; wait for dma while busy +; +; move a14,*a2,W ; set the GO +; +; move *a3+,a9,L +; +; jruc shad2 +; +;* +;* skip 4 lines +;* +;shad5 move *b0,b3,W +; jrn shad5 ; wait for dma while busy +; +; inc a0 +; +; movk 4,b3 +; setf 8,0,0 ; field 0 is 8 bits (zero extend) +; +;shad7 move *a10+,a8,W ; grab a BYTE !! +; +; move a8,a13 +; sll 32-4,a13 +; srl 32-4,a13 ; mask off upper b.s. +; sll a4,a13 ; a13 = lead zeros +; +; srl 4,a8 +; sll a1,a8 ; a8 = trailing zeros +; +; add a8,a13 ; a13 = lead + trailing = all compressed zeros +; move a11,a8 ; a8 = x size +; sub a13,a8 ; a8 = uncompressed pixels to skip +; +; sll 1,a8 ; 2x +; add a8,a10 +; sll 1,a8 ; + 4x = 6 bits per pixel +; add a8,a10 ; a10 ---> sag for next line +; dsjs b3,shad7 +; +;;xx +; setf 16,1,0 ; field 0 is back to 16 bits +; jruc shad4 +; +;shad9 +; mmfm sp,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14 +; mmfm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 +; rets +; + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/DISPLAY.EQU b/DISPLAY.EQU new file mode 100755 index 0000000..67c4f05 --- /dev/null +++ b/DISPLAY.EQU @@ -0,0 +1,136 @@ +************************************************************** +* +* Software: +* Initiated: 9/3/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + + + .globl OFREE,OBJLST,BAKLST,DISPLAYON,SCRNRELV + .globl GETOBJ,INSOBJ,DELOBJ,DELOBJA8 + .globl DISPLAY,OBJSTR + .globl ANI,SCRTST,SCRTSTG,GANIOF,DELBOBJ + .globl INSBOBJ,KILBOBJ + .globl PULLBOBJ,PULLOBJ,GANISAG + .globl QDMA,QDMAN,GETANIXY + .globl obj_addworldxy + .globl SCROLLX,SCROLLY,WORLDTLX,WORLDTLY,WORLDTL + .globl SCRNTL,SCRNLR,GSCRNREL,ADJNEWTL + .globl OBJSTR,SCREENTL,SCREENLR,DMAQCUR + .globl dpage,dtype + .globl dmaq0cnt,dmaq1cnt,dmaq0flg,dmaq1flg + .globl dmaq0,dmaq1 + .globl STOPOBJS + .globl FREEOBJ,EXISTOBJ + .globl ISOBJ + .globl BEGINOBJW,BEGINOBJ + .globl BEGINOBJWP,BEGINOBJP + + .globl obj_delc,obj_del1c,obj_aniq,obj_aniq_cnoff + .globl obj_aniq_scld + .globl DELOBJDIE,FRQDELDIE + .globl scrn_scaleininit,scrn_scalein,scrn_scaleout + .globl display_blank,display_unblank + .globl display_2dsclmodeon,display_2dsclstarmodeon + +*CONSTANTS + +SCRNXP equ 56 ;Left X padding in bitmap +SCRNST equ [0,-32] ;Top left of screen +SCRNEND equ [254,432] ;Bottom right of screen +SCRNMID equ [128,200] ;Midpoint of screen +PAGE1YO equ 256 ;2nd page Y offset +TSEC equ 53 ;Ticks per second + +;HEBLNKINIT equ 32h ;Initial value for register +HEBLNKINIT equ 65h ;Initial value for register + + +OWSPD equ 18 ;Open window speed +OWSPD2 equ 25 +CWSPD equ 40 ;Close win speed + +RING_X_MID equ 1024 + +SCALETSIZE equ 40*4*16 + + +*STRUCT OBJ +OLINK equ 000 ;UHL *next object block +OXVEL equ 020h ;UHL X velocity 16:16 +OYVEL equ 040h ;UHL Y velocity 16:16 +OZVEL equ 060h ;UHL Z velocity 16:16 +OXVAL equ 080h ;UHL X position 16:16 +OXFRAC equ 080h ; X pos fraction +OXPOS equ 090h ; X pos integer +OYVAL equ 0a0h ;UHL Y position 16:16 +OYFRAC equ 0a0h ; Y pos frac +OYPOS equ 0b0h ; Y pos int +OZVAL equ 0c0h ;UHL Z position 16:16 +OZPOS equ 0d0h ; Z pos int +OFLAGS equ 0e0h ;UHW Mode flags +OCTRL equ 0f0h ;UHW DMA control +OFSET equ 100h ;UHW Offset +OSAG equ 110h ;UHL *Image data +OSIZE equ 130h ; +OSIZEX equ 130h ;UHW X size +OSIZEY equ 140h ;UHW Y size +OPAL equ 150h ;UHW Palette # +OCONST equ 160h ;UHW Constant color +OIMG equ 170h ;UHL *Image header +OID equ 190h ;UHW Object ID +OPLINK equ 1a0h ;UHL *Process +ODATA_p equ 1c0h ;UHL *Scale table if scaled obj +OXANI equ 1e0h ;SHL X scaled animation pt 16:16 +OMISC equ 210h ;UHW Misc data (3D mode Z offset) +ODOFF equ 220h ; +ODXOFF equ 220h ;SDW display x offset +ODYOFF equ 230h ;SDW display y offset +OSCALE EQU 240H ;UHL scale this object (set to 100% in BEGINOBJ) +OBSIZ equ 260h +*ENDSTRUCT + +NOBJ equ 350 ;Total # objects + +BQCELL equ 0c0h ;Size of DMA queue element + +;Values for OFLAGS & OCTRL +M_WRZERO equ 1 ;Write zero data +M_WRNONZ equ 2 ;Write non-zero data +M_CONZER equ 4 ;Replace zero data with constant +M_CONNON equ 8 ;Replace non-zero data with constant +M_CONST equ 0ch ;Replace all with constant +M_FLIPH equ 10h ;Flip horizontally +M_FLIPV equ 20h ;Flip vertically +M_3DQ equ 40h ;Display in quick perspective +M_NODISP equ 80H ;DONT DISPLAY THIS OBJ +M_3D equ 100h ;Display in perspective using XYZ +M_SHAD equ 200h ;Shadow +M_PIXSCAN equ 400h ;Pixel scan on +M_NOCOLL equ 800h ;Collisions off +M_NOSCALE equ 1000h ;3D scaling off +M_SCRNREL equ 2000h ;Screen relative XY on +M_BOBJ equ 4000h ;background object (special flip) + +;OFLAGS/OCTRL bits +B_WRZERO equ 0 +B_WRNONZ equ 1 +B_CONZER equ 2 +B_CONNON equ 3 +B_FLIPH equ 4 +B_FLIPV equ 5 +B_3DQ equ 6 +B_NODISP equ 7 ;DONT DISPLAY THIS OBJ +B_3D equ 8 +B_SHAD equ 9 +B_PIXSCAN equ 10 +B_NOCOLL equ 11 +B_NOSCALE equ 12 +B_SCRNREL equ 13 +B_BOBJ equ 14 + +****************************************************************************** + \ No newline at end of file diff --git a/DNK.ASM b/DNK.ASM new file mode 100755 index 0000000..9c85bfa --- /dev/null +++ b/DNK.ASM @@ -0,0 +1,3189 @@ +;Tap thru every fucking delay +;Into ring easier +;Drain from my meter into his on squeeze move +;Fix immobilize - doesn't allow stands from head hold or fire punch angle swaps +;Blood from broken arm +;Revive after death +;Fix all action_tables to read dual buttons! We miss button hits... +;Make alt arena pals come up rarely, or button combo! +;Lex club somebody down from in close super punch +;Fix end of round/game pin/move time/stuff +;Fix convulse on all pins +;Out of ring slide backs +;Fix shawn run/stomp +;Penalize missed ghosts +;Do some 5x damage moves, etc. +;Flash player on powerups! +;Stop near rope pile driver zeroing of y vel +;Fix flying kicks in place, looks stupid, be successful... +;Buyin count - repeated ladder position - Jake! +;Fix shawn flip toss +;Fix head hold speeds/look +;Don't knock me down with 1 pixel, and am blocking +;Blocks slide velocity +;Two bozo modes on aggressor head hold - 2 presses of supers does kick +;Flying kick start rules / like clothesline +;Add smoke whisps +;fire moves +;make flykick not miss on bounce! +;Damage bug from combo +;Wrong guy awarded victory +;Fix all at_types, including at_leaping +;Whack on buttons bozo mode +;Fix frankensteiner into blocker +;Clothesline stick on blocker +;Flykick off of blocker up into air +;Get out of overhead +;Get out of chokehold +;Kick toss out of ring +;Wrong person wins +;HIGHER YVEL ON TURNBUCKLE STUFF +;RING ENTRANCE EASIER +;Urn in takers hand at end +;Do our own auto pin +;Z on pin +;Buckle drop after being hit! +;Immobilize bugs +;Shawn dead, but still in puppet mode +;Make tombstone smash work on ground opponent +;reverse piledriver/neckbrkr for und +;Tombstone smash sound +;Killed in midst of head held hits - for everyone! +;Frankensteiner reversal doesn't jump up high! Yes it does! +;Reversals don't work! +;Show fast victory time +;Put in new artwork +;Whack out of fast victory - it selected razor +;Make spirits code/art cooler +;Redo head grabs +;Eyes tumble from head on eye gouge +;Fix pal options - button combo at start - Blue curtain is good +;Fling guy into wrong direction +;Fix razor knee into gut from head hold +;Doink pin toss +;Flash screen white +;Sliding choke move - faster? +;Fix taker smash snd +;Fix taker clobber snd +;Fix big boots, read kick & skick buttons +;Debris from broken arm +;Place specific speech calls where needed! (Ex. Arm break "Here it comes") +;High scream when shawn nabs you on charge suplex + +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 9/3/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "doink.asm" + .title "doink specific game code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "jjxm.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" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + + .ref DO_REVERSAL,DO_REVERSAL_MESS,FIND_AND_KILL_ENDLESS + .ref ADD_IF_SILENT,JUMP_ROPES,CLIMB_ROPES + .ref check_dizzy + .ref create_damage_points + + .ref set_getup_time + .ref get_punch_dtime + .ref get_rope_x + .ref tally_damage,clear_damage_log + .ref inc_getup_time + + .ref change_anim1,change_anim1a + .ref change_anim2,change_anim2a + .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 bounce_off_ropes + .ref climb_turnbuckle + + ;from CROWD.ASM + .ref crowd_cheer + + ;from DCSSOUND.ASM + .ref triple_sound + + ;from WRESTLE.ASM + .ref calc_line_x + .ref face_each_other + .ref slide_offscr + .ref BONUS_MESS + +;animation sequence + + .ref dnk_3_pile_driver_anim + .ref dnk_2_push2_anim + .ref start_run_anim + + .ref dnk_4_earslap_anim + .ref dnk_2_earslap_anim + .ref dnk_4_slap_anim + .ref dnk_2_slap_anim +; .ref dnk_4_slap2_anim +; .ref dnk_2_slap2_anim + .ref dnk_head_hit_dizzy_anim + .ref dnk_knockdwn_anim + .ref dnk_4_hammer_anim + + .ref wres_slave_anim + .ref dnk_zip_anim + + .ref dnk_stand2_anim,dnk_stand8_anim + .ref dnk_stand4_anim,dnk_stand6_anim + .ref dnk_torso2_anim,dnk_torso8_anim + .ref dnk_torso4_anim,dnk_torso6_anim + + .ref dnk_2_to_4_turn_anim,dnk_8_to_6_turn_anim ;stand + .ref dnk_4_to_2_turn_anim,dnk_6_to_8_turn_anim + .ref dnk_4_to_6_turn_anim,dnk_6_to_4_turn_anim + .ref dnk_2_to_8_turn_anim,dnk_8_to_2_turn_anim + .ref dnk_4_to_8_turn_anim,dnk_6_to_2_turn_anim + .ref dnk_2_to_6_turn_anim,dnk_8_to_4_turn_anim + + .ref dnk_2_to_4_turn2_anim,dnk_8_to_6_turn2_anim ;torso + .ref dnk_4_to_2_turn2_anim,dnk_6_to_8_turn2_anim + .ref dnk_4_to_6_turn2_anim,dnk_6_to_4_turn2_anim + .ref dnk_2_to_8_turn2_anim,dnk_8_to_2_turn2_anim + .ref dnk_4_to_8_turn2_anim,dnk_6_to_2_turn2_anim + .ref dnk_2_to_6_turn2_anim,dnk_8_to_4_turn2_anim + + .ref dnk_walk1_f2_anim,dnk_walk2_f2_anim,dnk_walk4_f2_anim + .ref dnk_walk5_f2_anim,dnk_walk6_f2_anim,dnk_walk8_f2_anim + + .ref dnk_walk1_f4_anim,dnk_walk2_f4_anim,dnk_walk4_f4_anim + .ref dnk_walk5_f4_anim,dnk_walk6_f4_anim,dnk_walk8_f4_anim + + .ref dnk_2_punch_anim,dnk_4_punch_anim + .ref dnk_2_buzz_anim,dnk_4_buzz_anim + .ref dnk_2_buzz2_anim,dnk_4_buzz2_anim + + .ref dnk_2_butt_anim,dnk_4_butt_anim + .REF dnk_combo_uppercut_to_head_anim + .ref dnk_4_combo_kick_anim + .REF CHECK_COMBO_GO + + .ref dnk_2_kick_anim,dnk_4_kick_anim + .ref dnk_2_spin_kick_anim,dnk_4_spin_kick_anim + .ref dnk_2_knee_anim,dnk_4_knee_anim + + .ref dnk_2_box_anim,dnk_4_box_anim + + .ref dnk_run_anim,dnk_run2_anim + + .ref dnk_4_blbowdrop_anim +; .ref dnk_4_bjump_anim + + .ref dnk_2_lbowdrop_anim,dnk_4_lbowdrop_anim + .ref dnk_2_grabfling_anim + .ref dnk_4_grabfling_anim + + .ref dnk_heldoh_anim + + .ref dnk_diveofftb_anim + + .ref dnk_fly_cline_anim + .ref dnk_flying_kick_anim +; .ref dnk_sflying_kick_anim + + .ref dnk_4_head_hit2_anim + + .ref dnk_2_head_hit2_anim + .ref dnk_4_head_hit_anim,dnk_head_hit3_anim + .ref dnk_2_head_hit_anim,dnk_head_hit2_anim + .ref dnk_fall_back_anim + .ref dnk_2_faceup_getup_anim + .ref dnk_4_faceup_getup_anim + + .ref dnk_4_losebal_dizzy_anim + + .ref dnk_hitonground_anim + .ref dnk_4_stomp_anim,dnk_2_stomp_anim + .ref dnk_4_bstomp_anim + + .ref dnk_climb_up_anim,dnk_climb_down_anim + .ref dnk_4_block_anim,dnk_2_block_anim + .ref dnk_2_hitblock_anim,dnk_4_hitblock_anim + .ref dnk_2_hiptoss_anim,dnk_4_hiptoss_anim + .ref dnk_2_hiptoss2_anim,dnk_4_hiptoss2_anim + .ref dnk_4_push_anim,dnk_2_push_anim + .ref dnk_4_bigboot_anim,dnk_2_bigboot_anim + .ref dnk_4_losebal_anim + .ref dnk_dizzy_anim + .ref dnk_2_pin_anim + .ref dnk_4_pin_anim +; .ref dnk_2_lockup_anim,dnk_4_lockup_anim + .ref dnk_climbthru_side_anim,dnk_climbthru_bot_anim + .ref dnk_climbthru_top_anim,dnk_climbin_bot_anim + .ref dnk_climbin_top_anim,dnk_climbin_side_anim + + .ref dnk_belly_anim + .ref ck_ignore ;Ignore button press? + + .ref dnk_pkup_chair_anim + + .ref dnk_3_knee_to_head_anim + .ref dnk_3_knees_to_head_anim + .ref dnk_uppercut_to_head_anim + .ref dnk_uppercuts_to_head_anim + .ref dnk_get_buzz_anim + + .ref dnk_3_head_hold2_anim + .ref dnk_3_head_hold_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +doink_secret_moves + +;These secret moves are triggered only after a move list seq has ended! You +;can't hold on the last button press and have it trigger! + +;Button held down moves need to be first entry + .long #charge_buzz + .long #earslap + .long #grab_fling + .long #hammer + .long #hip_toss + .long #neck_grab + .long #boxing_pnch + .long 0 + + +****************************************************************************** +* +* SPECIAL MOVE PROCESSES - Secret moves +* +;a8=process of wrestler + + SUBR dnk_smove_table +; .long dnk_charge_flykick + .long dnk_hdhold_slam + .long dnk_hdhold_pile + .long dnk_hdhold_combo1 + .long dnk_hdhold_combo2 + .long dnk_hdhold_buzz + .long dnk_hdhold_anti_combo + .long dnk_grab_toss_air + .long dnk_walk_fast + .long 0 + + +******************************************************************************* +#charge_buzz + move *a13(BUT_VAL_UP),a0 + btst PLAYER_PUNCH_BIT,a0 + jrz #no_punch + +;FIX!! Give some jumping velocity + +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #no_punch + + move *a13(PLYRNUM),a0 + calla get_punch_dtime + cmpi 100,a0 ;> min? + jrlt #no_punch + + callr #scrt_buzz + setc + rets + +#no_punch + clrc + rets + + +#scrt_buzz + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_HEADHOLD,a0 + jrz #out +; jrz #ok + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrz #leapbuzz + +;If stick is toward opponent, then do sliding/leaping buzzer + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #norm + +#leapbuzz + FACE24 dnk,buzz2_anim + calla change_anim1a + rets +#norm + FACE24 dnk,buzz_anim + calla change_anim1a + rets +#ok + movi dnk_4_buzz_anim,a0 + calla change_anim1a + rets + +******************************************************************************* +; BITS MASK +#boxing_pnch + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word 8000h | 60 ;max + .long scrt_glove + +scrt_glove + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + MOVE *A13(COMBO_COUNT),A0 + JRNZ #out + + FACE24 dnk,box_anim + calla change_anim1a + WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 + + rets + +******************************************************************************* +#hammer + .word B_SKICK, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long scrt_hammer + +scrt_hammer + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + + movi dnk_4_hammer_anim,a0 + calla change_anim1a + + rets + +******************************************************************************* + +#earslap + .word B_PUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_DOWN_TOWARD, J_REAL_LR + .word J_DOWN, J_REAL_LR + .word 8000h | 50 ;max + .long #scrt_earslap + +#scrt_earslap + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + movi dnk_4_earslap_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + move *a13(CLOSEST_XDIST),a1 + cmpi 70,a1 + jrgt #std_grab + + movi dnk_3_head_hold2_anim,a0 + calla change_anim1a + rets + +#std_grab + movi dnk_3_head_hold_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#grab_fling + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling + +#scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + FACE24 dnk,hiptoss_anim + calla change_anim1a + + WRSND W_DOINK,HIPTOSS_T1,PUNCH_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + FACE24 dnk,grabfling_anim + calla change_anim1a + + WRSND W_DOINK,GRABFLING_T1,PUNCH_T2 + rets + +******************************************************************************* + +#hip_toss + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_hiptoss + +#scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_BLOCK,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit + + move *a13(CLOSEST_DIST),a0 + cmpi 68h,a0 + jrgt #out + +#doit + FACE24 dnk,hiptoss_anim + calla change_anim1a + + WRSND W_DOINK,HIPTOSS_T1,PUNCH_T2 + +#out rets + +#******************************************************************************* +dnk_hdhold_slam + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_UP,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_DOWN_AWAY|J_DOWN_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +;Do reversal unless I have been immobilized! +;If not, set immobilize time for opponent and reverse + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 1,a10 + CREATE0 BONUS_MESS + +#is_reversal + move *a8(ATTACH_PROC),a14,L + movk 15,a0 + move a0,*a14(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + .ref dnk_3_head_slam_anim + movi dnk_3_head_slam_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* +#* +dnk_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,0,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 6,A10 ;Pile driver + CREATE0 BONUS_MESS + +#is_reversal + move *a8(ATTACH_PROC),a14,L + movk 15,a0 + move a0,*a14(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + movi dnk_3_pile_driver_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* +#* +dnk_hdhold_anti_combo +#TIMEOUT .equ 80 + +#lp0 + SLEEPK 1 +#lp +;Is my opponent in combo mode? +; move *a8(IMMOBILIZE_TIME),a14 +; jrz #lp0 +; move *a8(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(COMBO_COUNT),a0 +; jrz #lp0 + + clr a11 + + WAITSWITCH_DWN J_UP,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_UP_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN J_DOWN_AWAY,0,#lp + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_UP_AWAY,0,#lp + WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN B_SPUNCH,0,#lp + +;Is my opponent in combo mode? + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(COMBO_COUNT),a0 + jrz #lp0 + + move *a8(ANTI_COMBO_TIME),a0 ;Time stamp + .ref PCNT + move @PCNT,a14 + sub a0,a14 + abs a14 + cmpi 80,a14 + jrge #lp0 + +;Combo breaker message! + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + clr a0 + move a0,*a8(IMMOBILIZE_TIME) + + move *a8(ATTACH_PROC),a14,L + movk 15,a0 + move a0,*a14(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi dnk_3_pile_driver_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* + +#* +dnk_hdhold_combo1 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_DOWN_TOWARD|J_UP_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi dnk_combo_uppercut_to_head_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* + +#* +dnk_hdhold_combo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SKICK,J_DOWN_TOWARD|J_UP_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + CALLA FIND_AND_KILL_ENDLESS + + movi dnk_4_combo_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 60 + + jruc #lp + +******************************************************************************* +#* + +dnk_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_PUNCH,J_DOWN_AWAY|J_UP_AWAY,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jreq #lp0 + +;Don't do it when he is on ground + PUSH a13 + move a8,a13 + calla get_opp_plyrmode + PULL a13 +;Don't do it when he is on ground + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 6ch,a0 + jrgt #lp + + FACE24 dnk,hiptoss_anim + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_DOINK,GRABFLING_T1,PUNCH_T2 + + SLEEP 60 + jruc #lp + +#doit2 FACE24 dnk,hiptoss2_anim + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_DOINK,GRABFLING_T1,PUNCH_T2 + + SLEEP 60 + + jruc #lp + + +******************************************************************************* + +#* +dnk_walk_fast +;One time per match + +#TIMEOUT .equ 61 + +#lp0 + SLEEPK 1 +#lp + move *a8(WALK_FAST),a0 + jrnz #lp0 + move *a8(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + jrnz #lp0 + + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN_AWAY,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_UP_TOWARD,0,#lp + WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_UP_AWAY,0,#lp + + + move *a8(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + jrnz #lp0 + + movi 30000h,a0 + move a0,*a8(OBJ_YVEL),L + + movi 15*60,a0 + move a0,*a8(WALK_FAST) + +;Doink speech call +;211h + movi 211h,a0 + .ref ADD_VOICE + calla ADD_VOICE +; calla IF_SILENT_ADD_VOICE + + movi 0101h,a14 + move a14,*a8(OBJ_CONST) + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + movi 0101h,a14 + move a14,*a8(OBJ_CONST) + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEP 30 + + movi 0b2h,a0 ;Honk + calla triple_sound + + SLEEPK 18 + + movi 0b2h,a0 ;Honk + calla triple_sound + + SLEEPK 18 + + movi 0b2h,a0 ;Honk + calla triple_sound + +#tag SLEEPK 5 + move *a8(WALK_FAST),a0 + jrnz #tag + + movi 0101h,a14 + move a14,*a8(OBJ_CONST) + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a8(OBJ_CONTROL) + + DIE + +#******************************************************************************* +; +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +; WORD #TIMEOUT ;UDW +; +; ;in: +; ; a8 = wrestler process address +; +;dnk_charge_flykick +; +;#start_over +; ;charge on stick away +; clr a14 +; move a14,*a13(#CHARGE_TIME),W +;#loop1 +; SLEEPK 1 +; +; move *a13(#CHARGE_TIME),a14,W +; inc a14 +; move a14,*a13(#CHARGE_TIME),W +; +; move *a8(STICK_VAL_CUR),a0 +; +; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to +; ; our left, flip the L|R direction bits... +; +; ;...however, if the stick isn't pointed left or right, don't do +; ;anything. +; move a0,a14 +; andi MOVE_LEFT|MOVE_RIGHT,a14 +; jrz #no_flip +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip +; +; ;if we're still holding away, jump back to #loop1 +; btst MOVE_LEFT_BIT,a0 +; jrnz #loop1 +; +; ;no longer holding away... +; move *a13(#CHARGE_TIME),a14 +; cmpi 20,a14 +; jrlt #start_over +; +; ;okay, they released after holding away for 2 seconds. Give them +; ; half a second to push forward + super_kick +; +; movi TSEC/2,a14 +; move a14,*a13(#TIMEOUT) +;#loop2 +; SLEEPK 1 +; +; move *a8(BUT_VAL_DOWN),a0 +; jrnz #press +; +; move *a13(#TIMEOUT),a14 +; dec a14 +; jrz #start_over +; move a14,*a13(#TIMEOUT) +; jruc #loop2 +; +;#press +; ;we have a button press. Is is super kick? +; btst PLAYER_KICK_BIT,a0 +; +; jrz #start_over ;wrong button. No good. +; +; +; ;Check for a towards on the stick. +; move *a8(STICK_VAL_CUR),a0 +; jrz #start_over ;no stick at all. No good. +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip2 +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip2 +; btst MOVE_RIGHT_BIT,a0 +; jrz #start_over ;pooched it +; +; +;;Don't do it when he is on ground +; PUSH a13 +; move a8,a13 +; calla get_opp_plyrmode +; PULL a13 +;;Don't do it when he is on ground +; cmpi MODE_ONGROUND,a0 +; jrz #start_over +; cmpi MODE_DEAD,a0 +; jrz #start_over +; +; +;;success! Check for the UNINT bit, then queue it up. +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over +; +; movi dnk_flying_kick_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; SETMODE INAIR +; +; movi 1000h,a0 +; move a0,*a13(OBJ_XVEL),L +; +; WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 +; +; jruc #start_over + +#******************************************************************************* +dnk_hdhold_buzz + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_DOWN_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_PUNCH,J_UP_TOWARD|J_DOWN_TOWARD,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 + +;#slam + CALLA FIND_AND_KILL_ENDLESS + movi dnk_4_buzz_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEP 120 + + jruc #lp + +#***************************************************************************** + + SUBR doink_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi dnk_stand4_anim,a0 + calla change_anim1a + + movi dnk_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE0 do_taunt + PULL a10 + + rets + +#p1 + movi dnk_stand2_anim,a0 + calla change_anim1a + + movi dnk_torso2_anim,a0 + calla change_anim2a + + rets + + SUBR do_taunt +;a10=*wrestler proc +;Do a taunt at start of rounds + + SLEEP 60 + .ref HALT + move @HALT,a0 + jaz SUCIDE + + move *a10(BUT_VAL_DOWN),a0 + btst PLAYER_BLOCK_BIT,a0 + jrnz #tag + + movi 250,a0 + .ref RNDPER + calla RNDPER + jals SUCIDE + + .ref current_round + move @current_round,a0 + cmpi 1,a0 + jrz #tag +;Start of 2 or 3rd round! Only drones can taunt here! + move *a10(PLYRNUM),a0 + cmpi 2,a0 + jalt SUCIDE +;Drone to taunt +#tag PUSH a13 + move a10,a13 + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #taunt_t,a0 + move *a0,a0,L + + calla change_anim1a + PULL a13 + + DIE + + .ref hrt_4_taunt_anim,rzr_4_taunt_anim,und_4_taunt_anim + .ref yok_4_taunt_anim,shn_4_taunt_anim,bam_4_taunt_anim + .ref lex_4_taunt_anim + .ref dnk_4_taunt_anim + +#taunt_t + .long hrt_4_taunt_anim ;0 Bret Hart + .long rzr_4_taunt_anim ;1 Razor Ramon + .long und_4_taunt_anim ;2 Undertaker + .long yok_4_taunt_anim ;3 Yokozuna + .long shn_4_taunt_anim ;4 Shawn Michaels + .long bam_4_taunt_anim ;5 Bam Bam + .long dnk_4_taunt_anim ;6 Doink + .long 0 ;7 spare + .long lex_4_taunt_anim ;8 Lex Luger + .long 0 ;9 Referee + +#***************************************************************************** +* +* DOINKS CONTROL CODE +* +* a13 = * doink process + + SUBR move_doink + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + movi doink_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 + .long mode_normal ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .ref mode_choking + .long mode_choking ;25 + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(I_WILL_DIE),a0 + jrz #nope +;Player has died amidst a combo... +;Knock me down. + movi dnk_fall_back_anim,a0 + calla change_anim1a + +;Zero health bar + movi -10,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + SETMODE DEAD + + clr a0 + move a0,*a13(I_WILL_DIE) + + rets + +#nope +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + +;Any button causes a pin + move *a13(BUT_VAL_CUR),a0 + jrz #opp_not_dead + +;Make sure opponent is on the ground! +;First, see if opponent is on the ground. + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #opp_not_dead + move *a13(CLOSEST_ZDIST),a0 + cmpi 50h,a0 + jrgt #opp_not_dead + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a1,L + + move *a1(OBJ_YPOS),a0,L + move *a1(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + +;Maybe check all velocities at this point + + +;Opponent is on ground. +;Now check to see if I'm attached to him in puppet mode! + move *a13(ATTACH_PROC),a1,L + jrz #done + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 +;If I'm attached to him, let the move finish! + jrz #opp_not_dead +#done + + FACE24 dnk,pin_anim + calla change_anim1a + + rets + +#opp_notgnd +#opp_not_dead + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #immobilized + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 ;maybe have to action tables? + jrz #nblk ;1 for down transitions + callr #block ;& 1 for current buttons + clr a0 + move a0,*a13(ATTACK_TYPE) +#nblk + + move *a13(BUT_VAL_DOWN),a0 + 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(STICK_VAL_CUR),a0 + move a0,*a13(MOVE_DIR) + calla climb_turnbuckle + jrnc #no_climb + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets + +#immobilized + clr a14 + move a14,*a13(MOVE_DIR) +#no_climb + calla execute_walk + +#no_interrupt + rets + +#action_table +;This table accounts for 2 buttons being hit simultaneously. + + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +;Unmolested list... +; .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 ;0 + + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 headbutt +* dizzy " " +* normal > normal punch +* dizzy " " +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running hiptoss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 50, 45,#punch_hdbutt,#punch_punch ;0 + JJXM RUNNING, 50, 45,#punch_hdbutt,#punch_punch ;1 + JJXM INAIR, 50, 45,#punch_hdbutt,#punch_punch ;2 + JJXM ATTACHED, 50, 45,#punch_hdbutt,#punch_punch ;3 + JJXM ONGROUND, 120,120,#punch_lbowdrop,#punch_punch ;4 + JJXM BOUNCING, 50, 45,#punch_hdbutt,#punch_punch ;1 + JJXM ONTURNBKL, 50, 45,#punch_hdbutt,#punch_punch ;6 + JJXM BLOCK, 50, 45,#punch_hdbutt,#punch_punch ;7 + JJXM DIZZY, 50, 45,#punch_hdbutt,#punch_punch ;8 + JJXM DEAD, 96,112,#punch_lbowdrop,#punch_punch ;9 + JJXM OPPOVERHEAD, 50, 45,#punch_hdbutt,#punch_punch ;10 + JJXM CLIMBTURNBKL, #punch_punch ;11 + JJXM WAITANIM, 50, 45,#punch_hdbutt,#punch_punch ;12 + JJXM GRAPPLE, 50, 45,#punch_hdbutt,#punch_punch ;13 + JJXM MASTER, 50, 45,#punch_hdbutt,#punch_punch ;14 + JJXM SLAVE, 50, 45,#punch_hdbutt,#punch_punch ;15 + JJXM HEADHOLD, 50, 45,#punch_hdbutt,#punch_punch ;16 + JJXM HEADHELD, 50, 45,#punch_hdbutt,#punch_punch ;19 + JJXM PUPPET, 50, 45,#punch_hdbutt,#punch_punch ;20 + JJXM INAIR2, 50, 45,#punch_hdbutt,#punch_punch ;21 + JJXM_END + +#punch_rets + rets + +***** +#punch_punch +std_punch + + FACE24 dnk,punch_anim + calla change_anim1a + + WRSND W_DOINK,PUNCH_T1,PUNCH_T2 + + rets + +***** +#punch_hdbutt + + FACE24 dnk,butt_anim + calla change_anim1a + + WRSND W_DOINK,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#punch_lbowdrop + + FACE24 dnk,lbowdrop_anim + calla change_anim1a + + WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 + + rets + +************ +#block ;2 +std_block + FACE24 dnk,block_anim + calla change_anim1 + + rets + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 144 160 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 85, 55,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 85, 55,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 85, 55,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 85, 55,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 136,112,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, 85, 55,#spunch_special,#spunch_slap ;1 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 85, 55,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 85, 55,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 96,112,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 85, 55,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 85, 55,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 85, 55,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 85, 55,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 85, 55,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 85, 55,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, do_pile ;19 + JJXM PUPPET, 85, 55,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 85, 55,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +***** +#spunch_slap + +; cmpi 60,a2 +; jrgt #norm +; cmpi 6eh,a1 +; jrlt #close +; +;#norm + FACE24 dnk,slap_anim + calla change_anim1a + + WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 + + rets + +;#close +; cmpi 70,a1 +; jrlt #norm +; +; FACE24 dnk,slap2_anim +; calla change_anim1a +; +; WRSND W_DOINK,PUNCH_T1,PUNCH_T2 +; +; rets + +***** +#spunch_special +;If stick is toward opponent, then do quick punches +; move *a13(STICK_VAL_CUR),a0 +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrz #cont + + move *a13(CLOSEST_XDIST),a1 + cmpi 50,a1 + jrgt std_punch +; jruc #hdbutt +;#cont +; .ref dnk_3_head_hold2_anim +; movi dnk_3_head_hold2_anim,a0 +; calla change_anim1a +; +; WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 +; +; rets +;#hdbutt + + FACE24 dnk,butt_anim + calla change_anim1 + + WRSND W_DOINK,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#spunch_lbowdrop + .ref dnk_2_hair_pickup_anim + .ref dnk_4_hair_pickup_anim +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 dnk,hair_pickup_anim + calla change_anim1 + WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no FACE24 dnk,lbowdrop_anim + calla change_anim1 + WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 knee +* dizzy " " +* normal > normal kick +* dizzy " " +* +* onground < 120 120 stomp +* onground > normal kick +* +* running normal kick +* bouncing normal kick +* +* onturnbkl normal kick +* climbturnbkl normal kick +* + JJXM_INIT + JJXM NORMAL, 50, 92,#kick_knee,#kick_kick ;0 + JJXM RUNNING, #skick_bigboot ;1 + JJXM INAIR, 50, 92,#kick_knee,#kick_kick ;2 + JJXM ATTACHED, 50, 92,#kick_knee,#kick_kick ;3 + JJXM ONGROUND, 120,120,#kick_stomp,#kick_kick ;4 + JJXM BOUNCING, #skick_bigboot ;1 + JJXM ONTURNBKL, #kick_kick ;6 + JJXM BLOCK, 50, 92,#kick_knee,#kick_kick ;7 + JJXM DIZZY, 50, 92,#kick_knee,#kick_kick ;8 + JJXM DEAD, 96,112,#kick_stomp,#kick_kick ;9 + JJXM OPPOVERHEAD, 50, 92,#kick_knee,#kick_kick ;10 + JJXM CLIMBTURNBKL, #kick_kick ;11 + JJXM WAITANIM, 50, 92,#kick_knee,#kick_kick ;12 + JJXM GRAPPLE, 50, 92,#kick_knee,#kick_kick ;13 + JJXM MASTER, 50, 92,#kick_knee,#kick_kick ;14 + JJXM SLAVE, 50, 92,#kick_knee,#kick_kick ;15 + JJXM HEADHOLD, 50, 92,#kick_knee,#kick_kick ;16 + JJXM HEADHELD, 50, 92,#kick_knee,#kick_kick ;19 + JJXM PUPPET, 50, 92,#kick_knee,#kick_kick ;20 + JJXM INAIR2, 50, 92,#kick_knee,#kick_kick ;21 + JJXM_END + +;***** +;#kick_flyingkick +; +; movi dnk_flying_kick_anim,a0 +; calla change_anim1a +; +; SETMODE INAIR +; +; WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 +; +; rets + +***** +#kick_kick +std_kick + + FACE24 dnk,kick_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + +***** +#kick_knee + + FACE24 dnk,knee_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + +***** +#kick_stomp + + FACE24 dnk,stomp_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + + +************ +punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 144 160 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 60 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 60, 60,#skick_special,#skick_kick ;0 + JJXM RUNNING, #skick_bigboot ;1 + JJXM INAIR, 60, 60,#skick_special,#skick_kick ;2 + JJXM ATTACHED, 60, 60,#skick_special,#skick_kick ;3 + JJXM ONGROUND, 144,160,#skick_stomp,std_kick ;4 + JJXM BOUNCING, #skick_bigboot ;5 + JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick ;6 + JJXM BLOCK, 60, 60,#skick_special,#skick_kick ;7 + JJXM DIZZY, 60, 60,#skick_special,#skick_kick ;8 + JJXM DEAD, 144,160,#skick_stomp,std_kick ;9 + JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick ;10 + JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick ;11 + JJXM WAITANIM, 60, 62,#skick_special,#skick_kick ;12 + JJXM GRAPPLE, 60, 62,#skick_special,#skick_kick ;13 + JJXM MASTER, 60, 62,#skick_special,#skick_kick ;14 + JJXM SLAVE, 60, 62,#skick_special,#skick_kick ;15 + JJXM HEADHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM HEADHELD, std_kick + JJXM PUPPET, 60, 62,#skick_special,#skick_kick ;20 + JJXM INAIR2, 60, 60,#skick_special,#skick_kick ;21 + JJXM_END + +***** +#skick_kick + + FACE24 dnk,spin_kick_anim + calla change_anim1a + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + rets + +***** +#skick_special +;If stick is toward opponent, then do quick punches + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrz #cont2 + + FACE24 dnk,knee_anim + calla change_anim1 + +;- correct sounds? + WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 + rets + +#cont2 + .ref dnk_4_knee_fall_anim + movi dnk_4_knee_fall_anim,a0 + calla change_anim1 + + WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 + rets + + +***** +#skick_stomp + + FACE24 dnk,stomp_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + +***** +#skick_bigboot ;we can probably get away with just a #4 big boot + + FACE24 dnk,bigboot_anim + calla change_anim1a + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + + +************ + +#graboh ;8 + + rets + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ 64000h ;50000h +#XRUN2_VAL equ 88000h +#ZDRIFT_VAL equ 28000h ;20000h + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + + move *a13(WALK_FAST),a14 + jrz #no + movi #XRUN2_VAL,a0 +#no + + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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(STICK_VAL_CUR),a0 + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#no_interrupt + + move *a13(STICK_VAL_CUR),a0 + 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 + + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + + move *a13(BUT_VAL_DOWN),a0 + 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 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +; .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 +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 belly flop +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline ;0 + JJXM RUNNING, #punch_clothesline ;1 + JJXM INAIR, #punch_clothesline ;2 + JJXM ATTACHED, #punch_clothesline ;3 + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_lbowdrop ;4 + JJXM BOUNCING, #punch_clothesline ;5 + JJXM ONTURNBKL, #punch_clothesline ;6 + JJXM BLOCK, #punch_clothesline ;7 + JJXM DIZZY, #punch_clothesline ;8 + JJXM DEAD, 176,176,#punch_bellyflop,#punch_lbowdrop ;9 + JJXM OPPOVERHEAD, #punch_clothesline ;10 + JJXM CLIMBTURNBKL, #punch_clothesline ;11 + JJXM WAITANIM, #punch_clothesline ;12 + JJXM GRAPPLE, #punch_clothesline ;13 + JJXM MASTER, #punch_clothesline ;14 + JJXM SLAVE, #punch_clothesline ;15 + JJXM HEADHOLD, #punch_clothesline ;16 + JJXM HEADHELD, #punch_clothesline ;19 + JJXM PUPPET, #punch_clothesline ;20 + JJXM INAIR2, #punch_clothesline ;21 + JJXM_END + + +***** +#punch_clothesline + +;Only allow clothesline if near center of ring, and running toward opponent + move *a13(MOVE_DIR),a1 + btst MOVE_LEFT_BIT,a1 + jrnz #lft +;Moving right + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID+70h,a0 + jrlt #ok + +; LOCKUP + + rets + +#lft +;Moving left + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID-70h,a0 + jrgt #ok + +; LOCKUP + + rets +#ok + move *a13(MOVE_DIR),a1 + move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi #mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrz #yes + +; LOCKUP + + rets +#yes + +;Will lunge toward opponent +;Is facing opponent - nt running away from him! + movi dnk_fly_cline_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +#mv_tbl .long 0,0,0,0,0,MOVE_RIGHT_BIT,MOVE_RIGHT_BIT + .long 0,0,MOVE_LEFT_BIT,MOVE_LEFT_BIT + +***** +#punch_lbowdrop +#punch_bellyflop + + movi dnk_belly_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +;#punch_lbowdrop +; +; FACE24 dnk,lbowdrop_anim +; calla change_anim1a +; +; WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 +; +; rets + +************ +#block ;2 + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************ +#graboh +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 running stomp +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick ;0 + JJXM RUNNING, #kick_flyingkick ;1 + JJXM INAIR, #kick_flyingkick ;2 + JJXM ATTACHED, #kick_flyingkick ;3 + JJXM ONGROUND, 176,176,#kick_runstomp,#kick_runstomp ;4 + JJXM BOUNCING, #kick_flyingkick ;5 + JJXM ONTURNBKL, #kick_flyingkick ;6 + JJXM BLOCK, #kick_flyingkick ;7 + JJXM DIZZY, #kick_flyingkick ;8 + JJXM DEAD, 176,176,#kick_runstomp,#kick_runstomp ;9 + JJXM OPPOVERHEAD, #kick_flyingkick ;10 + JJXM CLIMBTURNBKL, #kick_flyingkick ;11 + JJXM WAITANIM, #kick_flyingkick ;12 + JJXM GRAPPLE, #kick_flyingkick ;13 + JJXM MASTER, #kick_flyingkick ;14 + JJXM SLAVE, #kick_flyingkick ;15 + JJXM HEADHOLD, #kick_flyingkick ;16 + JJXM HEADHELD, #kick_flyingkick ;19 + JJXM PUPPET, #kick_flyingkick ;20 + JJXM INAIR2, #kick_flyingkick ;21 + JJXM_END + +***** +#kick_flyingkick + + calla ck_ignore + jrc #z + + + movi dnk_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +#kick_runstomp + movi dnk_belly_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_DOINK,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 + +#***************************************************************************** + +mode_onground ;4 + + 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 dnk_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(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #no_climbdown + + ;this is so an attack isn't turned into a climbdown + ; in those 5-10 ticks before MODE_INAIR2 is set... + move *a13(ANIBASE),a14,L + cmpi dnk_climb_up_anim,a14 + jrne #no_climbdown + + movi dnk_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + +#no_interrupt + rets + +#no_climbdown + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + MOVE *A13(PLYRNUM),A5 + movi JUMP_ROPES,a2 + MOVI 1000,A0 + calla ADD_IF_SILENT + movi IDIOT_COUNT,a2 + move a2,*a13(JUMPIN_COUNT) + rets + + +;For standing on top of turnbuckles + +#action_table + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +************ +#z + rets + +************ +#punch ;1 +#punchkick ;1 +#block ;2 + + movi dnk_4_blbowdrop_anim,a0 ;Buckle + calla change_anim1a + rets + +************ + +; movi dnk_4_bjump_anim,a0 ;Buckle +; calla change_anim1a +; rets + +************ +#super_punch ;4 +;If stick is toward opponent, then do hammer pound move +; move *a13(STICK_VAL_CUR),a0 +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 + +; xor a0,a1 +; andi MOVE_LEFT|MOVE_RIGHT,a1 +; cmpi MOVE_LEFT|MOVE_RIGHT,a1 + +; jrnz #graboh ;Br=regular +; +;;Do hammer pound +; movi dnk_4_bhammer_anim,a0 +; calla change_anim1a +; rets +; +; +#graboh ;1 + + movi dnk_diveofftb_anim,a0 + calla change_anim1a + rets + +************ +#kick ;8 +#super_kick ;16 + + movi dnk_4_bstomp_anim,a0 ;Buckle + calla change_anim1a + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #no_interrupt + + ;press. if block isn't down, let mode_normal handle it + move a0,a2 ;save a0 from ...val_down + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 + jrz #set_mode_normal + move a2,a0 ;restore a0 from ...val_down + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#set_mode_normal + SETMODE NORMAL + jruc mode_normal + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + FACE24 dnk,push_anim + calla change_anim1a + + WRSND W_DOINK,PUSH_T1,PUSH_T2 + + rets + +#***************************************************************************** +* + +mode_dizzy ;8 + + move *a13(GETUP_TIME),a0 + jrnz #still_going + + calla clear_damage_log + + clr a0 + move a0,*a13(STARS_FLAG) + + SETMODE NORMAL + +#still_going + 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(ATTACH_PROC),a10,L + jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z ;0 + .long #punch ;1 + .long #block ;2 + .long #z ;3 + .long #super_punch ;4 + .long #super_punch,#z,#z ;5-7 + .long #kick ;8 + .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 + .long #super_kick ;16 + .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 + .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#z ;0 + rets + +************ + +#punch ;1 + CALLA FIND_AND_KILL_ENDLESS +;If stick is toward opponent, then do quick punches + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag + movi dnk_uppercuts_to_head_anim,a0 + calla change_anim1a + rets + +#tag movi dnk_uppercut_to_head_anim,a0 + calla change_anim1a + rets + +************ +#super_punch ;4 + +do_pile +;This flag is only set if doink has done repeated uppercuts! + move *a13(USR_VAR2),a0 + jrz #z + + CALLA FIND_AND_KILL_ENDLESS + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #punch + + movi dnk_3_pile_driver_anim,a0 + calla change_anim1a + rets + +#punchkick +#graboh +#kick + CALLA FIND_AND_KILL_ENDLESS + movi dnk_3_knee_to_head_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #z + +;Quick knees + CALLA FIND_AND_KILL_ENDLESS + movi dnk_3_knees_to_head_anim,a0 + calla change_anim1a + rets + + +#***************************************************************************** + +mode_headheld ;19 + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + .ref dnk_3_head_held_stand_anim + movi dnk_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_puppet ;20 + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** +* + SUBR mode_inair2 ;21 + +;Read joystick for floating off from turnbuckle moves + +;Perhaps each wrestler will have a different drift value +#ZDRIFT2_VAL equ 58000h +#XDRIFT_VAL equ 30000h + + move *a13(STICK_VAL_CUR),a0 + clr a1 + + movi -#ZDRIFT2_VAL,a1 + btst PLAYER_UP_BIT,a0 + jrnz #setvel + + movi #ZDRIFT2_VAL,a1 + btst PLAYER_DOWN_BIT,a0 + jrnz #setvel + + clr a1 +#setvel +; move *a13(OBJ_ZVEL),a14,L +; add a1,a14 +; move a14,*a13(OBJ_ZVEL),L + + move *a13(OBJ_ZPOS),a14,L + add a1,a14 + move a14,*a13(OBJ_ZPOS),L + + + clr a1 + + movi -#XDRIFT_VAL,a1 + btst PLAYER_LEFT_BIT,a0 + jrnz #setvel2 + + movi #XDRIFT_VAL,a1 + btst PLAYER_RIGHT_BIT,a0 + jrnz #setvel2 + + clr a1 +#setvel2 +; move *a13(OBJ_XVEL),a14,L +; add a1,a14 +; move a14,*a13(OBJ_XVEL),L + + move *a13(OBJ_XPOS),a14,L + add a1,a14 + move a14,*a13(OBJ_XPOS),L + + rets + +#***************************************************************************** + + +#VEL equ 30000h ;38000h ;30000h +#DVEL equ 21f0eh ;27978h ;21f0eh + + + SUBR dnk_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 dnk_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_stand6_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_stand8_anim ; = up left + + + SUBR dnk_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 dnk_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_6_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_8_turn2_anim ; = up left *** + +; old = down left + .long dnk_6_to_2_turn2_anim ;new = up right *** + .long dnk_6_to_4_turn2_anim ; = down right + .long dnk_torso6_anim ; = down left + .long dnk_6_to_8_turn2_anim ; = up left + +; old = up left + .long dnk_8_to_2_turn2_anim ;new = up right + .long dnk_8_to_4_turn2_anim ; = down right *** + .long dnk_8_to_6_turn2_anim ; = down left + .long dnk_torso8_anim ; = up left + + +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +; WORD #TIMEOUT ;UDW +; +; +; SUBRP dnk_hammer_mv +; +;;in: +;;a8 = wrestler process address +; +;;Hammer pound opponent +;;Charge away for 30 ticks +;;Toward & Super punch +; +;#start_over +; ;charge on stick away +; clr a14 +; move a14,*a13(#CHARGE_TIME),W +;#loop1 +; SLEEPK 1 +; +;;Disallow these type of moves if out of control +; move *a8(GETUP_TIME),a0 +; jrnz #loop1 +; +; move *a13(#CHARGE_TIME),a14,W +; inc a14 +; move a14,*a13(#CHARGE_TIME),W +; +; move *a8(STICK_VAL_CUR),a0 +; +; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to +; ; our left, flip the L|R direction bits... +; +; ;...however, if the stick isn't pointed left or right, don't do +; ;anything. +; move a0,a14 +; andi MOVE_LEFT|MOVE_RIGHT,a14 +; jrz #no_flip +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip +; +; ;if we're still holding away, jump back to #loop1 +; btst MOVE_LEFT_BIT,a0 +; jrnz #loop1 +; +; ;no longer holding away... +; move *a13(#CHARGE_TIME),a14 +; +;;x seconds held stick is away +; +; cmpi 15,a14 +; jrlt #start_over +; +; ;okay, they released after holding away for 2 seconds. Give them +; ;half a second to push forward + super_punch +; +;; movi TSEC/2,a14 +; movk 20,a14 +; move a14,*a13(#TIMEOUT) +;#loop2 +; SLEEPK 1 +; +; move *a8(BUT_VAL_DOWN),a0 +; jrnz #press +; +; move *a13(#TIMEOUT),a14 +; dec a14 +; jrz #start_over +; move a14,*a13(#TIMEOUT) +; jruc #loop2 +; +;#press +; ;we have a button press. Is it super punch? +; btst PLAYER_PUNCH_BIT,a0 +; jrz #start_over ;wrong button. No good. +; +; ;Check for a towards on the stick. +; move *a8(STICK_VAL_CUR),a0 +; jrz #start_over ;no stick at all. No good. +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip2 +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip2 +; btst MOVE_RIGHT_BIT,a0 +; jrz #start_over ;pooched it +; +;;success! Check for the UNINT bit, then queue it up. +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over +; +; movi dnk_4_hammer_anim,a14 +; +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #start_over +; +;; move *a13(PLYRMODE),a0 +;; cmpi MODE_ONTURNBKL,a0 +;; jrnz #do +;; movi dnk_4_bhammer_anim,a14 +;;#do +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; jruc #start_over +; +;; .endif +; +;#* +; +; SUBRP dnk_earslap_mv +; +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +; WORD #TIMEOUT ;UDW +; +; +;;in: +;;a8 = wrestler process address +; +;;Ear slap opponent +;;Charge away for 30 ticks +;;Toward & Super punch +; +;#start_over +; ;charge on stick away +; clr a14 +; move a14,*a13(#CHARGE_TIME),W +;#loop1 +; SLEEPK 1 +; +;;Disallow these type of moves if out of control +; move *a8(GETUP_TIME),a0 +; jrnz #loop1 +; calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #loop1 +; cmpi MODE_DEAD,a0 +; jrz #loop1 +; +; move *a13(#CHARGE_TIME),a14,W +; inc a14 +; move a14,*a13(#CHARGE_TIME),W +; +; move *a8(STICK_VAL_CUR),a0 +; +; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to +; ; our left, flip the L|R direction bits... +; +; ;...however, if the stick isn't pointed left or right, don't do +; ;anything. +; move a0,a14 +; andi MOVE_LEFT|MOVE_RIGHT,a14 +; jrz #no_flip +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip +; +; ;if we're still holding away, jump back to #loop1 +; btst MOVE_LEFT_BIT,a0 +; jrnz #loop1 +; +; ;no longer holding away... +; move *a13(#CHARGE_TIME),a14 +; +;;x seconds held stick is away +; +; cmpi 20,a14 +; jrlt #start_over +; +; ;okay, they released after holding away for 2 seconds. Give them +; ;half a second to push forward + super_punch +; +;; movi TSEC/2,a14 +; movk 15,a14 +; move a14,*a13(#TIMEOUT) +;#loop2 +; SLEEPK 1 +; +; move *a8(BUT_VAL_DOWN),a0 +; jrnz #press +; +; move *a13(#TIMEOUT),a14 +; dec a14 +; jrz #start_over +; move a14,*a13(#TIMEOUT) +; jruc #loop2 +; +;#press +; ;we have a button press. Is it super punch? +; btst PLAYER_SPUNCH_BIT,a0 +;; jrz #start_over ;wrong button. No good. +; jrz #loop2 +; btst PLAYER_PUNCH_BIT,a0 +; jrz #loop2 +; +; ;Check for a towards on the stick. +; move *a8(STICK_VAL_CUR),a0 +;; jrz #start_over ;no stick at all. No good. +; jrz #loop2 +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip2 +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip2 +; btst MOVE_RIGHT_BIT,a0 +;; jrz #start_over ;pooched it +; jrz #loop2 +; +;;success! Check for the UNINT bit, then queue it up. +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over +; +; movi dnk_4_earslap_anim,a14 +; +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #start_over +; +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; jruc #start_over +; + +****************************************************************************** + .end + \ No newline at end of file diff --git a/DNKSEQ1.ASM b/DNKSEQ1.ASM new file mode 100755 index 0000000..9395c97 --- /dev/null +++ b/DNKSEQ1.ASM @@ -0,0 +1,626 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 10/12/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "dnkseq1.asm" + .title "Krusty the Clown animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "doinkimg.h" + + .include "display.equ" ;Display proc equates + .include "ring.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF SMALL_RUN + .REF MAYBE_BOUNCE_ROPE + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* STANDS + + SUBR dnk_zip_anim + WL TSEC*60,D2ST2B+FR3 + .word ANI_END + + SUBR dnk_stand2_anim + SUBR dnk_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 6,D2ST2B+FR3 + WL 6,D2ST2B+FR4 + WL 6,D2ST2B+FR5 + WL 6,D2ST2B+FR6 + WL 6,D2ST2B+FR5 + WL 6,D2ST2B+FR4 + .word ANI_REPEAT + + SUBR dnk_stand4_anim + SUBR dnk_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 6,D4ST4E+FR3 + WL 6,D4ST4E+FR4 + WL 6,D4ST4E+FR5 + WL 6,D4ST4E+FR6 + WL 6,D4ST4E+FR5 + WL 6,D4ST4E+FR4 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKING TORSOS + + + SUBR dnk_torso2_anim + SUBR dnk_torso8_anim + WL 4,D2TW2B+FR1 + WL 4,D2TW2B+FR2 + WL 4,D2TW2B+FR3 + WL 4,D2TW2B+FR4 + WL 4,D2TW2B+FR3 + WL 4,D2TW2B+FR2 + .word ANI_REPEAT + + + + SUBR dnk_torso4_anim + SUBR dnk_torso6_anim + WL 4,D4TW4B+FR1 + WL 4,D4TW4B+FR2 + WL 4,D4TW4B+FR3 + WL 4,D4TW4B+FR4 + WL 4,D4TW4B+FR3 + WL 4,D4TW4B+FR2 + .word ANI_REPEAT + + SUBR dnk_holdoh_anim + WL 999,D4TH4A+FR1 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR dnk_walk1_f2_anim + WL 2,D2WL1A+FR1 + WL 2,D2WL1A+FR2 + WL 2,D2WL1A+FR3 + WL 2,D2WL1A+FR4 + WL 2,D2WL1A+FR5 + WL 2,D2WL1A+FR6 + WL 2,D2WL1A+FR7 + WL 2,D2WL1A+FR8 + WL 2,D2WL1A+FR9 + WL 2,D2WL1A+FR10 + WL 2,D2WL1A+FR11 + WL 2,D2WL1A+FR12 + WL 2,D2WL1A+FR13 + WL 2,D2WL1A+FR14 + WL 2,D2WL1A+FR15 + WL 2,D2WL1A+FR16 + WL 2,D2WL1A+FR17 + WL 2,D2WL1A+FR18 + .word ANI_REPEAT + + SUBR dnk_walk2_f2_anim + WL 2,D2WL2A+FR1 + WL 2,D2WL2A+FR2 + WL 2,D2WL2A+FR3 + WL 2,D2WL2A+FR4 + WL 2,D2WL2A+FR5 + WL 2,D2WL2A+FR6 + WL 2,D2WL2A+FR7 + WL 2,D2WL2A+FR8 + WL 2,D2WL2A+FR9 + WL 2,D2WL2A+FR10 + WL 2,D2WL2A+FR11 + WL 2,D2WL2A+FR12 + WL 2,D2WL2A+FR13 + WL 2,D2WL2A+FR14 + WL 2,D2WL2A+FR15 + WL 2,D2WL2A+FR16 + WL 2,D2WL2A+FR17 + .word ANI_REPEAT + + SUBR dnk_walk4_f2_anim + WL 2,D2WL4B+FR1 + WL 2,D2WL4B+FR2 + WL 2,D2WL4B+FR3 + WL 2,D2WL4B+FR4 + WL 2,D2WL4B+FR5 + WL 2,D2WL4B+FR6 + WL 2,D2WL4B+FR7 + WL 2,D2WL4B+FR8 + WL 2,D2WL4B+FR9 + WL 2,D2WL4B+FR10 + WL 2,D2WL4B+FR11 + WL 2,D2WL4B+FR12 + WL 2,D2WL4B+FR13 + WL 2,D2WL4B+FR14 + WL 2,D2WL4B+FR15 + WL 2,D2WL4B+FR16 + WL 2,D2WL4B+FR17 + WL 2,D2WL4B+FR18 + .word ANI_REPEAT + + SUBR dnk_walk5_f2_anim + WL 2,D2WL1A+FR18 + WL 2,D2WL1A+FR17 + WL 2,D2WL1A+FR16 + WL 2,D2WL1A+FR15 + WL 2,D2WL1A+FR14 + WL 2,D2WL1A+FR13 + WL 2,D2WL1A+FR12 + WL 2,D2WL1A+FR11 + WL 2,D2WL1A+FR10 + WL 2,D2WL1A+FR9 + WL 2,D2WL1A+FR8 + WL 2,D2WL1A+FR7 + WL 2,D2WL1A+FR6 + WL 2,D2WL1A+FR5 + WL 2,D2WL1A+FR4 + WL 2,D2WL1A+FR3 + WL 2,D2WL1A+FR2 + WL 2,D2WL1A+FR1 + .word ANI_REPEAT + + SUBR dnk_walk6_f2_anim + WL 2,D2WL2A+FR17 + WL 2,D2WL2A+FR16 + WL 2,D2WL2A+FR15 + WL 2,D2WL2A+FR14 + WL 2,D2WL2A+FR13 + WL 2,D2WL2A+FR12 + WL 2,D2WL2A+FR11 + WL 2,D2WL2A+FR10 + WL 2,D2WL2A+FR9 + WL 2,D2WL2A+FR8 + WL 2,D2WL2A+FR7 + WL 2,D2WL2A+FR6 + WL 2,D2WL2A+FR5 + WL 2,D2WL2A+FR4 + WL 2,D2WL2A+FR3 + WL 2,D2WL2A+FR2 + WL 2,D2WL2A+FR1 + .word ANI_REPEAT + + + SUBR dnk_walk8_f2_anim + WL 2,D2WL4B+FR18 + WL 2,D2WL4B+FR17 + WL 2,D2WL4B+FR16 + WL 2,D2WL4B+FR15 + WL 2,D2WL4B+FR14 + WL 2,D2WL4B+FR13 + WL 2,D2WL4B+FR12 + WL 2,D2WL4B+FR11 + WL 2,D2WL4B+FR10 + WL 2,D2WL4B+FR9 + WL 2,D2WL4B+FR8 + WL 2,D2WL4B+FR7 + WL 2,D2WL4B+FR6 + WL 2,D2WL4B+FR5 + WL 2,D2WL4B+FR4 + WL 2,D2WL4B+FR3 + WL 2,D2WL4B+FR2 + WL 2,D2WL4B+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR dnk_walk1_f4_anim + WL 2,D4WL5A+FR18 + WL 2,D4WL5A+FR17 + WL 2,D4WL5A+FR16 + WL 2,D4WL5A+FR15 + WL 2,D4WL5A+FR14 + WL 2,D4WL5A+FR13 + WL 2,D4WL5A+FR12 + WL 2,D4WL5A+FR11 + WL 2,D4WL5A+FR10 + WL 2,D4WL5A+FR9 + WL 2,D4WL5A+FR8 + WL 2,D4WL5A+FR7 + WL 2,D4WL5A+FR6 + WL 2,D4WL5A+FR5 + WL 2,D4WL5A+FR4 + WL 2,D4WL5A+FR3 + WL 2,D4WL5A+FR2 + WL 2,D4WL5A+FR1 + .word ANI_REPEAT + + SUBR dnk_walk2_f4_anim + WL 2,D4WL2A+FR1 + WL 2,D4WL2A+FR2 + WL 2,D4WL2A+FR3 + WL 2,D4WL2A+FR4 + WL 2,D4WL2A+FR5 + WL 2,D4WL2A+FR6 + WL 2,D4WL2A+FR7 + WL 2,D4WL2A+FR8 + WL 2,D4WL2A+FR9 + WL 2,D4WL2A+FR10 + WL 2,D4WL2A+FR11 + WL 2,D4WL2A+FR12 + WL 2,D4WL2A+FR13 + WL 2,D4WL2A+FR14 + WL 2,D4WL2A+FR15 + WL 2,D4WL2A+FR16 + WL 2,D4WL2A+FR17 + WL 2,D4WL2A+FR18 + .word ANI_REPEAT + + SUBR dnk_walk4_f4_anim + WL 2,D4WL4A+FR1 + WL 2,D4WL4A+FR2 + WL 2,D4WL4A+FR3 + WL 2,D4WL4A+FR4 + WL 2,D4WL4A+FR5 + WL 2,D4WL4A+FR6 + WL 2,D4WL4A+FR7 + WL 2,D4WL4A+FR8 + WL 2,D4WL4A+FR9 + WL 2,D4WL4A+FR10 + WL 2,D4WL4A+FR11 + WL 2,D4WL4A+FR12 + WL 2,D4WL4A+FR13 + WL 2,D4WL4A+FR14 + WL 2,D4WL4A+FR15 + WL 2,D4WL4A+FR16 + WL 2,D4WL4A+FR17 + WL 2,D4WL4A+FR18 + .word ANI_REPEAT + + SUBR dnk_walk5_f4_anim + WL 2,D4WL5A+FR1 + WL 2,D4WL5A+FR2 + WL 2,D4WL5A+FR3 + WL 2,D4WL5A+FR4 + WL 2,D4WL5A+FR5 + WL 2,D4WL5A+FR6 + WL 2,D4WL5A+FR7 + WL 2,D4WL5A+FR8 + WL 2,D4WL5A+FR9 + WL 2,D4WL5A+FR10 + WL 2,D4WL5A+FR11 + WL 2,D4WL5A+FR12 + WL 2,D4WL5A+FR13 + WL 2,D4WL5A+FR14 + WL 2,D4WL5A+FR15 + WL 2,D4WL5A+FR16 + WL 2,D4WL5A+FR17 + WL 2,D4WL5A+FR18 + .word ANI_REPEAT + + SUBR dnk_walk6_f4_anim + WL 2,D4WL2A+FR18 + WL 2,D4WL2A+FR17 + WL 2,D4WL2A+FR16 + WL 2,D4WL2A+FR15 + WL 2,D4WL2A+FR14 + WL 2,D4WL2A+FR13 + WL 2,D4WL2A+FR12 + WL 2,D4WL2A+FR11 + WL 2,D4WL2A+FR10 + WL 2,D4WL2A+FR9 + WL 2,D4WL2A+FR8 + WL 2,D4WL2A+FR7 + WL 2,D4WL2A+FR6 + WL 2,D4WL2A+FR5 + WL 2,D4WL2A+FR4 + WL 2,D4WL2A+FR3 + WL 2,D4WL2A+FR2 + WL 2,D4WL2A+FR1 + .word ANI_REPEAT + + SUBR dnk_walk8_f4_anim + WL 2,D4WL4A+FR18 + WL 2,D4WL4A+FR17 + WL 2,D4WL4A+FR16 + WL 2,D4WL4A+FR15 + WL 2,D4WL4A+FR14 + WL 2,D4WL4A+FR13 + WL 2,D4WL4A+FR12 + WL 2,D4WL4A+FR11 + WL 2,D4WL4A+FR10 + WL 2,D4WL4A+FR9 + WL 2,D4WL4A+FR8 + WL 2,D4WL4A+FR7 + WL 2,D4WL4A+FR6 + WL 2,D4WL4A+FR5 + WL 2,D4WL4A+FR4 + WL 2,D4WL4A+FR3 + WL 2,D4WL4A+FR2 + WL 2,D4WL4A+FR1 + .word ANI_REPEAT + + +;2 TICKS = 1 +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR dnk_2_to_4_turn_anim + SUBR dnk_8_to_6_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TT5Z+FR2 ;2.5 + WL 3,D1TT5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_2_turn_anim + SUBR dnk_6_to_8_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TT5Z+FR3 ;3.5 + WL 3,D1TT5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_6_turn_anim + SUBR dnk_6_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 3,D1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_to_8_turn_anim + SUBR dnk_8_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 3,D1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_8_turn_anim + SUBR dnk_6_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TT5Z+FR3 ;3.5 + WL 3,D1TT5Z+FR2 ;2.5 + WL 3,D1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 3,D1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_to_6_turn_anim + SUBR dnk_8_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TT5Z+FR2 ;2.5 + WL 3,D1TT5Z+FR3 ;3.5 + WL 3,D1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 3,D1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR dnk_2_to_4_turn2_anim + SUBR dnk_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TR5Z+FR2 ;2.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,D1TR5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_2_turn2_anim + SUBR dnk_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TR5Z+FR3 ;3.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,D1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_6_turn2_anim + SUBR dnk_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,D1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_to_8_turn2_anim + SUBR dnk_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TR5Z+FR1 ;1.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,D1TR5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_to_8_turn2_anim + SUBR dnk_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,D1TR5Z+FR4 ;4.5 + WL 3,D1TR5Z+FR3 ;3.5 + .word ANI_SETFACING + WL 3,D1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_to_6_turn2_anim + SUBR dnk_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,D1TR5Z+FR2 ;2.5 + .word ANI_SETFACING + WL 3,D1TR5Z+FR3 ;3.5 + WL 3,D1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,D1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR dnk_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR dnk_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + +#lp1 + WL 1,D3RN3B+FR1 +; .word ANI_SOUND,run_snd + WL ANI_CODE,SMALL_RUN + WL 1,D3RN3B+FR1 + WL 3,D3RN3B+FR2 + WL 2,D3RN3B+FR3 + WL 3,D3RN3B+FR4 + WL 2,D3RN3B+FR5 +#run2 + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL 2,D3RN3B+FR6 +; .word ANI_SOUND,run_snd + WL ANI_CODE,SMALL_RUN + WL 1,D3RN3B+FR6 + WL 2,D3RN3B+FR7 + WL 3,D3RN3B+FR8 + WL 2,D3RN3B+FR9 + WL 3,D3RN3B+FR10 + WL 2,D3RN3B+FR11 + + WL ANI_GOTO,#lp1 + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR dnk_bounce_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_OVERLAP|MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + WL ANI_CODE,fix_bnc_flip + + WL ANI_CODE,MAYBE_BOUNCE_ROPE + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 2,D3BO3B+FR2 + .word ANI_BOUNCEROPE,0 + WL 1,D3BO3B+FR2 + + WL 2,D3BO3B+FR3 + .word ANI_BOUNCEROPE,1 + WL ANI_CODE,SMALL_RUN +; .word ANI_SOUND,run_snd + + WL 1,D3BO3B+FR3 + + WL 2,D3BO3B+FR4 + .word ANI_BOUNCEROPE,2 + WL 1,D3BO3B+FR4 + + WL 2,D3BO3B+FR5 + .word ANI_BOUNCEROPE,3 + WL 1,D3BO3B+FR5 + + .word ANI_ZEROVELS + + WL 2,D3BO3B+FR6 + .word ANI_BOUNCEROPE,4 + WL 1,D3BO3B+FR6 + WL 3,D3BO3B+FR7 + WL 2,D3BO3B+FR8 + .word ANI_BOUNCEROPE,0 + WL 1,D3BO3B+FR8 + WL 2,D3BO3B+FR9 + .word ANI_BOUNCEROPE,-1 + WL ANI_CODE,SMALL_RUN +; .word ANI_SOUND,run_snd + WL 1,D3BO3B+FR9 + WL 3,D3BO3B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + SUBR fix_bnc_flip + +;Check to see if I'm against ropes + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + move *a13(OBJ_CONTROL),a14 + andni M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + rets +#onlft + move *a13(OBJ_CONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + rets + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/DNKSEQ2.ASM b/DNKSEQ2.ASM new file mode 100755 index 0000000..b2c004f --- /dev/null +++ b/DNKSEQ2.ASM @@ -0,0 +1,5815 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 10/12/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "dnkseq2.asm" + .title "Krusty the Clown animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "display.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "doinkimg.h" + .include "miscimg.glo" + .include "damage.equ" + .INCLUDE "SWEAT.EQU" + .include "miscimg.glo" + + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref MOVE_NAME_ANNC,face_inside,set_tbukl_airmode + .ref setup_freetoss,free_toss_check + .ref CALL_ANI_AVERAGE_MOVE,CALL_NASTY_MOVE + .ref CALL_THROWN_OUT,DO_BLOCKED + .ref DO_OTHERNONO,FIND_AND_KILL_ENDLESS + .ref DO_CROWD_CHEER,HIT_THE_MAT,SMALL_BOUNCE + .ref CALL_MISSES,CALL_SETUP,CALL_SPECIAL_MOVE + .ref am_I_dead,start_run_anim,PSTATUS,royal_rumble,NUM_OPPS + + .ref set_target_offsets,check_raisearm_bit + .ref get_opp_process,set_tbukl_confine + .ref get_leap + .ref shake_all_ropes,tbukl_flip + + .ref DO_GRUNT,KILL_PIN_HIM + .ref calc_line_x + .ref choose_2or4 + .ref tgt_ground,process_ptrs + + .ref hrt_hitonground_anim + .ref rzr_hitonground_anim + .ref und_hitonground_anim + .ref yok_hitonground_anim + .ref shn_hitonground_anim + .ref bam_hitonground_anim + .ref lex_hitonground_anim + + .ref dnk_4_combo_earslap_anim,hit_nearest + .ref DO_COMBO_MESS,tbukl_flip,change_anim1a + .ref DO_DOINK_PUSH,announce_rnd_winner + .ref create_impact_salt,PCNT,dnk_3_head_held_anim + .ref no_bk_xvel,lex_tossed_anim,impact_sound + .ref start_run_flung + +D4PN5L + .long 0 + .long 0 + .long 0 + .long 0 + .long D4PN5L04 + .long D4PN5L05 + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* NORMAL #2 PUNCH + + SUBR dnk_2_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2PU3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2PU3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2PU3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,5 ;type, #ticks 'til attack on + + WL 1,D2PU3A+FR2 + WL 2,D2PU3A+FR3 + WL 1,D2PU3A+FR4 + +; WLWWWW ANI_SNOT,doink_pie,0,0,0,0 + + .word ANI_ATTACK_ON, AMODE_PUNCH,22,86,55,9 ;mode,x,y,w,h + WL 1,D2PU3A+FR4 + WL 2,D2PU3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 3,D2PU3A+FR5 +#no_hit + WL 2,D2PU3A+FR6 + WL 3,D2PU3A+FR7 ;4 + WL 2,D2PU3A+FR8 ;4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* NORMAL #4 PUNCH + + SUBR dnk_4_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4PU3C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4PU3C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4PU3C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,5 ;type, #ticks 'til attack on + + WL 1,D4PU3C+FR2 + WL 2,D4PU3C+FR3 + WL 1,D4PU3C+FR4 + +; WLWWWW ANI_SNOT,doink_pie,0,0,0,0 + + .word ANI_ATTACK_ON, AMODE_PUNCH,22,86,55,9 ;mode,x,y,w,h + WL 1,D4PU3C+FR4 + WL 2,D4PU3C+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + + WL ANI_SET_YVEL,30000h + WL 3,D4PU3C+FR5 + +#no_hit2 + WL 2,D4PU3C+FR6 + WL 3,D4PU3C+FR7 + WL 2,D4PU3C+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* BOXING GLOVE #2 PUNCH + + SUBR dnk_2_box_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_BOXPUNCH,15 + WL 3,D2RG3B+FR6 + WL 3,D2RG3B+FR7 + WL 3,D2RG3B+FR8 + WL 3,D2RG3B+FR9 + WL 3,D2RG3B+FR10 + + .word ANI_ATTACK_ON, AMODE_BOXPUNCH,37,84,66,15 ;mode,x,y,w,h + WL 4,D2RG3B+FR11 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE +; WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit ;range,vel,addr +;#no_hit + WL 10,D2RG3B+FR11 + + WL 2,D2PU3A+FR6 + WL 3,D2PU3A+FR7 + WL 2,D2PU3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 8,D2RG3B+FR11 + +#missed + WL 3,D2RG3B+FR11 + + WL 2,D2PU3A+FR6 + WL 3,D2PU3A+FR7 + WL 2,D2PU3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#* BOXING GLOVE #4 PUNCH + + SUBR dnk_4_box_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_BOXPUNCH,15 + WL 3,D4RG3A+FR6 + WL 3,D4RG3A+FR7 + WL 3,D4RG3A+FR9 + WL 3,D4RG3A+FR10 + WL 3,D4RG3A+FR11 + + .word ANI_ATTACK_ON, AMODE_BOXPUNCH,37,84,66,15 ;mode,x,y,w,h + WL 4,D4RG3A+FR12 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE +; WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 ;range,vel,addr +;#no_hit2 + WL 10,D4RG3A+FR12 + + WL 2,D4PU3C+FR6 + WL 3,D4PU3C+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 8,D4RG3A+FR12 +#missed + WL 3,D4RG3A+FR12 + + WL 2,D4PU3C+FR6 + WL 3,D4PU3C+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR dnk_combo_box_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_BOXPUNCH,15 + WL 3,D4RG3A+FR6 + WL 3,D4RG3A+FR7 + WL 3,D4RG3A+FR9 + WL 3,D4RG3A+FR10 + WL 3,D4RG3A+FR11 + + .word ANI_ATTACK_ON, AMODE_BOXPUNCH,37,84,66,15 ;mode,x,y,w,h + WL 4,D4RG3A+FR12 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit3 ;range,vel,addr +#no_hit3 + WL 10,D4RG3A+FR12 + + WL 2,D4PU3C+FR6 + WL 3,D4PU3C+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedbc + WL 15,D4RG3A+FR12 +#missedc + WL 5,D4RG3A+FR12 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 2,D4PU3C+FR6 + WL 3,D4PU3C+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR dnk_2_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,5 + WL 1,D2BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 1,D2BC3A+FR2 + WL 2,D2BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,21,79,27,24 ;mode,x,y,w,h + WL 3,D2BC3A+FR4 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,D2BC3A+FR5 +#no_hit + WL 4,D2BC3A+FR5 + WL 4,D2BC3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 HEADBUTT + + SUBR dnk_4_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,5 + WL 1,D4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 1,D4BC3A+FR2 + WL 2,D4BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,21,79,27,24 ;mode,x,y,w,h + WL 3,D4BC3A+FR4 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + + WL ANI_SET_YVEL,38000h + WL 6,D4BC3A+FR5 +#no_hit2 + WL 4,D4BC3A+FR5 + WL 4,D4BC3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEADBUTTS - In close + + SUBR dnk_2_butts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,3 ;5 times + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 +#rpt + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 2,D2BC3A+FR1 + WL 2,D2BC3A+FR2 + WL 2,D2BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT_STAY,21,79,27,24 ;mode,x,y,w,h + WL 2,D2BC3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,38000h + WL 6,D2BC3A+FR5 +#no_hit + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,200,2,0,100,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex + .word ANI_DEC_RPTCOUNT + + WL 3,D2BC3A+FR5 + WL 3,D2BC3A+FR6 + + WL ANI_IF_RPTCOUNT,#rpt + + WL ANI_CHANGEANIM,dnk_2_butt_anim + +#ex +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,40000h,38000h,0h ;x,y,z vels + + WL 3,D2BC3A+FR5 + WL 3,D2BC3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WLLL ANI_SETOPPVELS,50000h,18000h,0h ;x,y,z vels +; WL 4,D2BC3A+FR5 +#missed + WL 2,D2BC3A+FR5 + WL 2,D2BC3A+FR6 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#* #4 HEADBUTT + + SUBR dnk_4_butts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,3 ;5 times + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 +#rpt + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 2,D4BC3A+FR1 + WL 2,D4BC3A+FR2 + WL 2,D4BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT_STAY,21,79,27,24 ;mode,x,y,w,h + WL 2,D4BC3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + + WL ANI_SET_YVEL,38000h + WL 6,D4BC3A+FR5 +#no_hit2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,200,2,0,100,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex + .word ANI_DEC_RPTCOUNT + + WL 3,D4BC3A+FR5 + WL 3,D4BC3A+FR6 + + WL ANI_IF_RPTCOUNT,#rpt + + WL ANI_CHANGEANIM,dnk_4_butt_anim +#ex +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,40000h,38000h,0h ;x,y,z vels + + WL 3,D4BC3A+FR5 + WL 3,D4BC3A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WLLL ANI_SETOPPVELS,50000h,18000h,0h ;x,y,z vels +; WL 4,D4BC3A+FR5 +#missed + WL 2,D4BC3A+FR5 + WL 2,D4BC3A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* #4 COMBO HEADBUTT + + SUBR dnk_4_combo_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,10000h + .word ANI_STARTATTACK,AT_HDBUTT,5 + WL 2,D4BC3A+FR1 + WL 2,D4BC3A+FR2 + WL 1,D4BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,21,39,67,44 ;mode,x,y,w,h + WL 2,D4BC3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + .word ANI_STARTATTACK,AT_HDBUTT,9 + + WL 2,D4BC3A+FR5 + WL 2,D4BC3A+FR6 + + WL ANI_SET_YVEL,10000h + WL 2,D4BC3A+FR1 + WL 2,D4BC3A+FR2 + WL 1,D4BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,21,39,67,44 ;mode,x,y,w,h + WL 2,D4BC3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + .word ANI_STARTATTACK,AT_HDBUTT,9 + + WL 2,D4BC3A+FR5 + WL 2,D4BC3A+FR6 + + WL ANI_SET_YVEL,10000h + WL 2,D4BC3A+FR1 + WL 2,D4BC3A+FR2 + WL 1,D4BC3A+FR3 + + .word ANI_CLR_BUTCOUNT + + .word ANI_ATTACK_ON, AMODE_HDBUTT,21,39,67,44 ;mode,x,y,w,h + WL 2,D4BC3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + .word ANI_STARTATTACK,AT_HDBUTT,9 + WL 2,D4BC3A+FR5 + WL 2,D4BC3A+FR6 + + WL ANI_SET_YVEL,10000h + WL 2,D4BC3A+FR1 + WL 2,D4BC3A+FR2 + WL 1,D4BC3A+FR3 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,21,39,67,44 ;mode,x,y,w,h + WL 2,D4BC3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + WL 2,D4BC3A+FR5 + WL 2,D4BC3A+FR6 + + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK_3 + WL ANI_CHANGEANIM,dnk_combo_box_anim + +#NEXT_CHECK_3 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,dnk_combo_knee_fall_anim + +#NEXT_CHECK_2 + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + WL ANI_CHANGEANIM,dnk_4_combo_hiptoss_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#miss + WL ANI_CHANGEANIM,dnk_4_combo_earslap_anim + +#miss + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 2,D4BC3A+FR5 + WL 2,D4BC3A+FR6 + + .word ANI_DETACH + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #2 KICK + + SUBR dnk_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2KM3B+FR1 ;4 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2KM3B+FR1 ;4 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2KM3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KICK,5 + WL 1,D2KM3B+FR2 + WL 2,D2KM3B+FR3 + + WL 2,D2KM3B+FR4 ;4 + + .word ANI_ATTACK_ON, AMODE_KICK,20,62,68,16 ;mode,x,y,w,h + WL 1,D2KM3B+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 2,D2KM3B+FR4 + +#no_hit + WL ANI_IFNOTSTATUS,#nopause + WL 2,D2KM3B+FR4 +#nopause + + WL 2,D2KM3B+FR4 + WL 3,D2KM3B+FR5 + WL 2,D2KM3B+FR6 + WL 3,D2KM3B+FR7 + WL 2,D2KM3B+FR8 + WL 3,D2KM3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* NORMAL #4 KICK + + SUBR dnk_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4KM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KICK,5 + WL 1,D4KM3A+FR3 + WL 2,D4KM3A+FR4 + + WL 2,D4KM3A+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,20,62,68,16 ;mode,x,y,w,h + WL 1,D4KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 2,D4KM3A+FR5 + +#no_hit2 + WL ANI_IFNOTSTATUS,#nopause2 + WL 2,D4KM3A+FR5 +#nopause2 + + WL 2,D4KM3A+FR5 + WL 3,D4KM3A+FR6 + WL 2,D4KM3A+FR7 + WL 3,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 3,D4KM3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_combo_kick_anim + + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_KICK,7 + WL 2,D4KM3A+FR2 + WL 1,D4KM3A+FR3 + WL 2,D4KM3A+FR4 + + WL 2,D4KM3A+FR5 + + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON, AMODE_KICK,20,16,68,66 ;mode,x,y,w,h + WL 1,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + .word ANI_CLR_BUTCOUNT + WL ANI_SET_YVEL,30000h + + .word ANI_STARTATTACK,AT_KICK,13 + WL 2,D4KM3A+FR5 + WL 1,D4KM3A+FR6 + WL 1,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 1,D4KM3A+FR10 + + WL 1,D4KM3A+FR2 + WL 1,D4KM3A+FR3 + WL 2,D4KM3A+FR4 + + WL 2,D4KM3A+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,20,16,68,66 ;mode,x,y,w,h + WL 1,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + WL ANI_SET_YVEL,30000h + .word ANI_STARTATTACK,AT_KICK,11 + WL 1,D4KM3A+FR5 + + WL 1,D4KM3A+FR6 + WL 1,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 1,D4KM3A+FR10 + + + WL 1,D4KM3A+FR2 + WL 1,D4KM3A+FR3 + WL 1,D4KM3A+FR4 + + WL 2,D4KM3A+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,20,16,68,66 ;mode,x,y,w,h + WL 1,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + .word ANI_DETACH + + WL ANI_SET_YVEL,30000h + .word ANI_STARTATTACK,AT_KICK,11 + WL 1,D4KM3A+FR5 + + WL 1,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 1,D4KM3A+FR10 + + + WL 1,D4KM3A+FR2 + WL 1,D4KM3A+FR3 + WL 1,D4KM3A+FR4 + + WL 2,D4KM3A+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,20,16,68,66 ;mode,x,y,w,h + WL 1,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + + .word ANI_DETACH + + WL ANI_SET_YVEL,30000h + WL 1,D4KM3A+FR5 + + WL 1,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 1,D4KM3A+FR10 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,dnk_combo_box_anim + +#NEXT_CHECK_2 + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + WL ANI_CHANGEANIM,dnk_combo_knee_fall_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#miss + WL ANI_CHANGEANIM,dnk_4_combo_spin_kick_anim + +#miss + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + WL 3,D4KM3A+FR5 + WL 3,D4KM3A+FR6 + WL 3,D4KM3A+FR7 + WL 3,D4KM3A+FR8 + WL 3,D4KM3A+FR9 + WL 3,D4KM3A+FR10 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 SPIN KICK + + SUBR dnk_2_spin_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_SPINKIK,15 + WL 3,D2KB3A+FR9 + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 11,999,50,50,90000h,TGT_HEAD,79,87,-30 + WL 2,D2KB3A+FR8 + WL 3,D2KB3A+FR7 + WL 3,D2KB3A+FR6 + WL 3,D2KB3A+FR5 + +; .word ANI_ATTACK_ON, AMODE_SPINKICK,59,87,21,20 ;mode,x,y,w,h + .word ANI_ATTACK_ON, AMODE_SPINKICK,46,76,42,42 ;mode,x,y,w,h + + WL 4,D2KB3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,50000h + WL ANI_GOTO,#nopause +#no_hit + WL ANI_IFNOTSTATUS,#nopause + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,30000h,AM_HIT_REL +#nopause + WL 1,D2KB3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +; WL ANI_CODE,skick_delay +; WL ANI_IFNOTSTATUS,#none +; WL 15,D2KB3A+FR4 +;#none + + WL 4,D2KB3A+FR3 + WL 4,D2KB3A+FR2 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR skick_delay + + move @royal_rumble,a0 + jrnz #ok + + + + +; move @PSTATUS,a0 +; subk 3,a0 +; jrz #cont +; move @NUM_OPPS,a0 +; subk 1,a0 +; jrnz #ok +;#cont + + + + + + + + move *a13(LAST_SKICK),a14,L + move @PCNT,a0,L ;use 32-bit PCNT! + move a0,*a13(LAST_SKICK),L + sub a14,a0 + cmpi 2*60,a0 + jrge #ok + +;This blocked fling attempt is too close (in terms of time) to most recent grab + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#ok move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* #2 SPIN KICK - Against TB attacks + + SUBR dnk_2_spin_kick_TB_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_STARTATTACK,AT_LEAPING,15 + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + WL 2,D2KB3A+FR9 + WL ANI_SET_YVEL,70000h + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL 2,D2KB3A+FR8 + WL 2,D2KB3A+FR7 + .word ANI_ATTACK_ON, AMODE_SPINKICK,8,19,68,60 ;mode,x,y,w,h + WL 2,D2KB3A+FR6 + WL 2,D2KB3A+FR5 + WL 8,D2KB3A+FR4 + .word ANI_ATTACK_OFF + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 4,D2KB3A+FR3 + WL 4,D2KB3A+FR2 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 SPIN KICK + + SUBR dnk_4_spin_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + .word ANI_STARTATTACK,AT_SPINKIK,15 + WL 3,D4KB3A+FR9 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + + LEAPATOPP 11,999,50,50,90000h,TGT_HEAD,81,90,30 + WL 2,D4KB3A+FR8 + WL 3,D4KB3A+FR7 + WL 3,D4KB3A+FR6 + WL 3,D4KB3A+FR5 + +; .word ANI_ATTACK_ON, AMODE_SPINKICK,59,82,26,13 ;mode,x,y,w,h + .word ANI_ATTACK_ON, AMODE_SPINKICK,50,70,50,28 ;mode,x,y,w,h + WL 4,D4KB3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,50000h + WL ANI_GOTO,#nopause2 +#no_hit2 + WL ANI_IFNOTSTATUS,#nopause2 + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,30000h,AM_HIT_REL +#nopause2 + WL 1,D4KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +; WL ANI_CODE,skick_delay +; WL ANI_IFNOTSTATUS,#none +; WL 15,D4KB3A+FR5 +;#none + + WL 4,D4KB3A+FR4 + WL 4,D4KB3A+FR3 + WL 4,D4KB3A+FR2 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#* +* #4 SPIN KICK + + SUBR dnk_4_spin_kick_TB_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_STARTATTACK,AT_SPINKIK,15 + WL 2,D4KB3A+FR9 + WL ANI_SET_YVEL,70000h + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL 2,D4KB3A+FR8 + WL 2,D4KB3A+FR7 + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,82,26,13 ;mode,x,y,w,h + WL 2,D4KB3A+FR6 + WL 2,D4KB3A+FR5 + WL 8,D4KB3A+FR5 + .word ANI_ATTACK_OFF + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,D4KB3A+FR4 + WL 3,D4KB3A+FR3 + WL 3,D4KB3A+FR2 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_combo_spin_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_SPINKIK,9 + WL 2,D2KB3A+FR9 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,45,50,90000h,TGT_HEAD,79,87,-30 + WL 2,D2KB3A+FR8 + WL 2,D2KB3A+FR7 + WL 2,D2KB3A+FR6 + WL 1,D2KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,37,41,70 ;mode,x,y,w,h + WL 2,D2KB3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss_combo_spin2 + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + WLW ANI_SET_ZVEL,40000h,AM_FACE_REL + WLW ANI_SET_XVEL,0h,AM_FACE_REL + + .word ANI_CLR_BUTCOUNT + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_SPINKIK,16 + WL 2,D2KB3A+FR3 + WL 2,D2KB3A+FR2 + WL 2,D4KB3A+FR9 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + + WL 2,D4KB3A+FR9 + + LEAPATOPP 8,999,45,50,90000h,TGT_HEAD,81,90,30 + WL 2,D4KB3A+FR8 + WL 2,D4KB3A+FR7 + WL 1,D4KB3A+FR6 + WL 2,D4KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,37,41,70 ;mode,x,y,w,h + WL 1,D4KB3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss_combo_spin4 + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,28000h,0h ;x,y,z vels + WLW ANI_SET_ZVEL,40000h,AM_FACE_REL + WLW ANI_SET_XVEL,0h,AM_ABS + + WL 2,D4KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_SPINKIK,14 + WL 2,D4KB3A+FR4 + WL 1,D4KB3A+FR3 + WL 2,D4KB3A+FR2 + +;end kick 4 + + WL 1,D2KB3A+FR9 + + .word ANI_CLR_BUTCOUNT + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,45,50,90000h,TGT_HEAD,79,87,-30 + WL 1,D2KB3A+FR8 + WL 1,D2KB3A+FR7 + WL 1,D2KB3A+FR6 + WL 1,D2KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,37,41,70 ;mode,x,y,w,h + WL 2,D2KB3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss_combo_spin2 + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,18000h,0h ;x,y,z vels + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + WLW ANI_SET_XVEL,0h,AM_ABS + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_SPINKIK,12 + WL 1,D2KB3A+FR3 + WL 2,D2KB3A+FR2 + WL 1,D4KB3A+FR9 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + + LEAPATOPP 8,999,45,50,90000h,TGT_HEAD,81,90,30 + WL 1,D4KB3A+FR8 + WL 2,D4KB3A+FR7 + WL 1,D4KB3A+FR6 + WL 1,D4KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_SPINKICK,59,37,41,70 ;mode,x,y,w,h + WL 1,D4KB3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss_combo_spin4 + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,18000h,0h ;x,y,z vels + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + WLW ANI_SET_XVEL,0h,AM_ABS + + WL 1,D4KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 1,D4KB3A+FR4 + WL 2,D4KB3A+FR3 + WL 1,D4KB3A+FR2 + +;end kick 4 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK_3 + WL ANI_CHANGEANIM,dnk_combo_box_anim + +#NEXT_CHECK_3 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,dnk_combo_knee_fall_anim + +#NEXT_CHECK_2 + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + WL ANI_CHANGEANIM,dnk_4_combo_hiptoss_anim +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#miss_combo_spin4 + WL ANI_CHANGEANIM,dnk_4_combo_earslap_anim + +#miss_combo_spin2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 2,D2KB3A+FR3 + WL 2,D2KB3A+FR2 + WL 2,D4KB3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#miss_combo_spin4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 2,D4KB3A+FR4 + WL 2,D4KB3A+FR3 + WL 2,D4KB3A+FR2 + + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 KNEE + + SUBR dnk_2_knee_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KNEE,6 + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2KM3D+FR1 ;D2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2KM3D+FR1 ;D2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2KM3D+FR1 ;D2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 2,D2KM3D+FR1 ;D2NM3A+FR3 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 21,999,36,30,90000h,TGT_CHEST,46,74,0 + + .word ANI_ATTACK_ON, AMODE_KNEE,5,41,48,36 ;mode,x,y,w,h + WL 3,D2NM3A+FR4 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL 1,D2NM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont +#no_hit +; WL ANI_IFNOTSTATUS,#nodrft +; WLW ANI_SET_ZVEL,0C000h,AM_ABS +;#nodrft + WL 8,D2NM3A+FR4 +; .word ANI_ZERO_XZVELS +; WL 14,D2NM3A+FR4 ;8 +; WL 1,D2NM3A+FR4 ;8 +#cont + WL 3,D2NM3A+FR5 + WL 3,D2NM3A+FR6 + WL 3,D2NM3A+FR7 + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 KNEE + +;For when knee knocks you on your butt + + SUBR dnk_4_knee_fall_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + .word ANI_STARTATTACK,AT_BIGKNEE,6 + WL 3,D4NM3B+FR3 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 21,999,36,20,90000h,TGT_CHEST,46,74,0 +; LEAPATOPP 15,999,86,20,90000h,TGT_CHEST,26,74,0 + +;This knee will knock the guy down! + WL 1,D4NM3B+FR4 + .word ANI_ATTACK_ON, AMODE_BIGKNEE,-5,41,70,36 ;mode,x,y,w,h + WL 3,D4NM3B+FR4 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + +; WLW ANI_SET_ZVEL,-10000h,AM_ABS + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit3 + WL ANI_SET_YVEL,60000h +; WLW ANI_SET_ZVEL,-4000h,AM_ABS + WL 1,D4NM3B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 +#no_hit3 + WL 8,D4NM3B+FR4 +; WL 15h,D4NM3B+FR4 +; .word ANI_ZERO_XZVELS +; WL 3,D4NM3B+FR4 ;8 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 + + SUBR dnk_combo_knee_fall_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_BIGKNEE,19 + WL 4,D4NM3B+FR3 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 15,999,86,20,90000h,TGT_CHEST,26,74,0 + +;This knee will knock the guy down! + .word ANI_ATTACK_ON, AMODE_BIGKNEE,-5,41,90,36 ;mode,x,y,w,h + WL 3,D4NM3B+FR4 + .word ANI_ATTACK_OFF + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit4 + WL ANI_SET_YVEL,60000h + WL 1,D4NM3B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 +#no_hit4 + WL 1ah,D4NM3B+FR4 + .word ANI_ZERO_XZVELS + WL 3,D4NM3B+FR4 ;8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 + + + SUBR dnk_4_knee_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KNEE,6 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4NM3B+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4NM3B+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4NM3B+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 2,D4NM3B+FR3 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 21,999,36,20,90000h,TGT_CHEST,46,74,0 + + .word ANI_ATTACK_ON, AMODE_KNEE,5,41,40,36 ;mode,x,y,w,h + WL 3,D4NM3B+FR4 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,-4000h,AM_ABS + WL 1,D4NM3B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 +#no_hit2 + WL 8,D4NM3B+FR4 +; WL 12h,D4NM3B+FR4 +; .word ANI_ZERO_XZVELS +; WL 14,D4NM3B+FR4 ;8 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS +#cont2 + WL 3,D4NM3B+FR5 + WL 3,D4NM3B+FR6 + WL 3,D4NM3B+FR7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 FLYING KICK + +#yoff1 equ 40 + + SUBR dnk_combo_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,D3DC3C+FR1 + +; WL ANI_CODE,get_leap +; WL ANI_IFSTATUS,#no_xvelc + +;#normc +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 19,999,150,65,90000h,TGT_HEAD,30,100,0 + .word ANI_STARTATTACK,AT_LEAPING,21 + +; WL ANI_GOTO,#contc +; +;#no_xvelc +; .word ANI_ZERO_XZVELS +; WL ANI_SET_YVEL,64000h +;#contc + WL 3,D3DC3C+FR2 + + .word ANI_OFFSET,0,#yoff1,0 ;x,y,z + WL 3,D3DC3C+FR3 + WL 6,D3DC3C+FR4 + + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_FLYKICK,53,23,27,29 ;mode,x,y,w,h + WL 3,D3DC3C+FR5 + .word ANI_ATTACK_OFF + WL 4,D3DC3C+FR6 + + WL 3,D3DC3C+FR7 + WL 3,D3DC3C+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFSTATUS,#gotc +;Missed him + WL 4,D3DC3C+FR9 + .word ANI_BOUNCE,3 + WL 4,D3DC3C+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,CALL_MISSES + WL ANI_CODE,SMALL_BOUNCE + WL 2,D3DC3C+FR9 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + +#gotc + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 2,D3DC3C+FR9 + WL 2,D3DC3C+FR9 + WL 4,D3DC3C+FR9 + WL 4,D3DC3C+FR10 + + .word ANI_XFLIP + .word ANI_OFFSET,5,0,0 ;x,y,z + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + + WL 3,D2GD2A+FR4 + WL 3,D2GD2A+FR6 + WL 3,D2GD2A+FR7 +;Check for a flip here + WL 2,D2GD2A+FR9 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,D2GD2A+FR9 + WL 3,D2GD2A+FR10 + + .word ANI_SAFE_TIME,30 + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D2GD2A+FR10 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR dnk_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,D3DC3C+FR1 + +;If opponent is on ground, just jump in place + WL ANI_CODE,#ckongrnd + WL ANI_IFNOTSTATUS,#norm + WL ANI_CHANGEANIM,dnk_belly_anim +#norm +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 19,999,155,65,90000h,TGT_HEAD,30,100,0 + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + .word ANI_STARTATTACK,AT_LEAPING,11 + WL ANI_CODE,no_bk_xvel + + WL 3,D3DC3C+FR2 + .word ANI_OFFSET,0,#yoff1,0 ;x,y,z + WL 3,D3DC3C+FR3 + WL 6,D3DC3C+FR4 + + .word ANI_ATTACK_ON, AMODE_FLYKICK,53,23,27,29 ;mode,x,y,w,h + WL 3,D3DC3C+FR5 + .word ANI_ATTACK_OFF + WL 4,D3DC3C+FR6 + WL 3,D3DC3C+FR7 + WL 3,D3DC3C+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFSTATUS,#got +;Missed him + WL 4,D3DC3C+FR9 + .word ANI_BOUNCE,3 + WL 4,D3DC3C+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,CALL_MISSES + WL ANI_CODE,SMALL_BOUNCE + WL 2,D3DC3C+FR9 + +#got + WL 2,D3DC3C+FR9 +#cont2 + WL 2,D3DC3C+FR9 + WL 3,D3DC3C+FR9 + WL 3,D3DC3C+FR10 + + .word ANI_XFLIP + .word ANI_OFFSET,5,0,0 ;x,y,z + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + + WL 3,D2GD2A+FR4 + WL 3,D2GD2A+FR6 + WL 3,D2GD2A+FR7 +;Check for a flip here + WL 2,D2GD2A+FR9 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D2GD2A+FR9 + WL 3,D2GD2A+FR10 + + .word ANI_SAFE_TIME,30 + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss1 + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D2GD2A+FR10 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss1 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckongrnd + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + calla get_opp_process ;closest opponent process + move *a0(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #inplace + rets + +#inplace + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* BODY HIT + + SUBR dnk_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WL ANI_CODE,ckzpos + WL 4,D3AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 4,D3AM3A+FR2 + WL 4,D3AM3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 3,D3AM3A+FR4 + WL 3,D3AM3A+FR5 + WL 3,D3AM3A+FR6 + WL 2,D3AM3A+FR7 + WL 2,D3AM3A+FR8 + + .word ANI_CHECKWORD,USR_VAR1 + WL ANI_IFNOTSTATUS,#reg + + WL 6,D4SW4C+FR1 + WL 6,D4SW4C+FR2 + WL 6,D4SW4C+FR3 + WL 6,D4SW4C+FR4 + WL 6,D4SW4C+FR5 + WL 6,D4SW4C+FR6 + WL 6,D4SW4C+FR5 + WL 6,D4SW4C+FR4 + WL 6,D4SW4C+FR3 + WL 6,D4SW4C+FR2 + +#reg + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + + WL 4,D3AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 4,D3AM3A+FR2 + WL 6,D3AM3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 4,D3AM3A+FR4 + WL 6,D3AM3A+FR5 + WL 3,D3AM3A+FR6 + WL 3,D3AM3A+FR7 + WL 3,D3AM3A+FR8 + .word ANI_OFFSET,0,-1,0 ;x,y,z + WL 1,D4SW4C+FR1 + + WL ANI_CHANGEANIM,dnk_dizzy_anim + +;Hit by a knee! + SUBR dnk_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + WL ANI_CODE,ckzpos + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + + WL 4,D3AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 4,D3AM3A+FR2 + WL 4,D3AM3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 3,D3AM3A+FR4 + WL 3,D3AM3A+FR5 + WL 3,D3AM3A+FR6 + WL 2,D3AM3A+FR7 + WL 2,D3AM3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + WL ANI_CODE,ckzpos + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + + WL 4,D3AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 4,D3AM3A+FR2 + WL 14,D3AM3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 4,D3AM3A+FR4 + WL 6,D3AM3A+FR5 + WL 3,D3AM3A+FR6 + WL 3,D3AM3A+FR7 + WL 3,D3AM3A+FR8 +; .word ANI_OFFSET,-9,-1,0 ;x,y,z + .word ANI_OFFSET,0,-1,0 ;x,y,z + WL 1,D4SW4C+FR1 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + +;Being held by head, hit by a quick knee! + SUBR dnk_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,0,2 ;x,y,z + WL 4,D3HP3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 4,D3HP3A+FR2 + WL 4,D3HP3A+FR3 + WL 4,D3HP3A+FR4 + WL 4,D3HP3A+FR5 + .word ANI_WAITHITGND + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,dnk_fall_back_anim + +#nodead + WL ANI_CHANGEANIM,dnk_3_head_held_anim + + +#***************************************************************************** +* +* FALL BACK + + SUBR dnk_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZERO_XZVELS + WL ANI_MIN_YVEL,70000h + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + + .word ANI_SCROLL_CTRL,DNK_TBUKLY-60 + + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[96,-09] ;Y,X of head + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 3,D3UC3A+FR1 + WWL ANI_SETLONG,DEBRIS_X,[95,-32] ;Y,X of head + WL 3,D3UC3A+FR2 + WWL ANI_SETLONG,DEBRIS_X,[91,-41] ;Y,X of head + WL 3,D3UC3A+FR3 + .word ANI_OFFSET,0,50,0 ;x,y,z + + WWL ANI_SETLONG,DEBRIS_X,[36,-45] ;Y,X of head + WL 3,D3UC3A+FR4 + WWL ANI_SETLONG,DEBRIS_X,[29,-48] ;Y,X of head + WL 2,D3UC3A+FR5 + WWL ANI_SETLONG,DEBRIS_X,[19,-48] ;Y,X of head + WL 2,D3UC3A+FR6 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_FRICTION,3000h + WWL ANI_SETLONG,DEBRIS_X,[05,-47] ;Y,X of head + WL 2,D3UC3A+FR8 + .word ANI_BOUNCE,5 + WL 1,D3UC3A+FR8 + WWL ANI_SETLONG,DEBRIS_X,[09,-41] ;Y,X of head + WL 5,D3UC3A+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,[07,-48] ;Y,X of head + WL 3,D3UC3A+FR10 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 3,D3UC3A+FR11 + + .word ANI_XFLIP + WL 1,D3SA3A+FR9 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + +;Stay on ground for awhile... Maybe this will be table driven + WL 6,D3SA3A+FR9 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + + SUBR ckzpos + +;If falling near the front or rear ropes, slide toward middle +;of the ring to allow opponent to walk around him. + move *a13(OBJ_ZPOSINT),a0 + cmpi 510h,a0 + jrgt #slideup + cmpi 442h,a0 + jrgt #ok + +;slide down scrn + movi 24000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets +#slideup + movi -24000h,a0 + move a0,*a13(OBJ_ZVEL),L +#ok + rets + +#* FALL BACK + + SUBR dnk_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,20000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL ANI_CODE,ckzpos + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 3,D3UC3A+FR1 + WL 3,D3UC3A+FR2 + WL 3,D3UC3A+FR3 + .word ANI_OFFSET,0,50,0 ;x,y,z + + WL 3,D3UC3A+FR4 + WL 2,D3UC3A+FR5 + WL 2,D3UC3A+FR6 +; WL 2,D3UC3A+FR7 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + + .word ANI_OFFSET,-25,0,0 ;x,y,z + WL 3,D3FD3E+FR2 + WL 3,D3FD3E+FR3 + WL 3,D3FD3E+FR4 + WL 3,D3FD3E+FR5 + WL 3,D3FD3E+FR6 + WL 3,D3FD3E+FR7 + WL 3,D3FD3E+FR8 + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-22,0,0 ;x,y,z + + WL 4,D3GS3X+FR8 + WL 4,D3GS3X+FR9 + WL 4,D3GS3X+FR10 +;Stay on ground for awhile... Maybe this will be table driven + WL 20,D3GS3X+FR8 ;Face down +; WL 3,D3SA3A+FR9 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR dnk_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL 3,D3UC3A+FR1 + WL 3,D3UC3A+FR2 + WL 3,D3UC3A+FR3 + .word ANI_OFFSET,0,50,0 ;x,y,z + + WL 3,D3UC3A+FR4 + WL 2,D3UC3A+FR5 + WL 2,D3UC3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,40 +; .word ANI_FRICTION,3000h + WL 2,D3UC3A+FR8 + .word ANI_BOUNCE,3 + WL 1,D3UC3A+FR8 + WL 5,D3UC3A+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,D3UC3A+FR10 + WL 3,D3UC3A+FR11 + + .word ANI_XFLIP + WL 1,D3SA3A+FR9 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 3,D3SA3A+FR9 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + + +#***************************************************************************** + +;chooses 2 or 4 right away + + SUBR dnk_faceup_getup_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + WL ANI_CODE,choose_2or4 + WL ANI_IFNOTSTATUS,dnk_2_faceup_getup_anim + WL ANI_CHANGEANIM,dnk_4_faceup_getup_anim + + SUBR dnk_4_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_CLR_STARS +; .word ANI_CLR_DAMAGE + + WL 1,D3SA3A+FR9 + WL 2,D3GU4A+FR2 + WL 3,D3GU4A+FR3 + WL 2,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 2,D3GU4A+FR6 +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + WL 2,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_CLR_STARS +; .word ANI_CLR_DAMAGE + + +; WL 1,D3SA3A+FR9 + WL 2,D3RL1B+FR2 + WL 2,D3RL1B+FR3 + WL 2,D3RL1B+FR4 + WL 2,D3RL1B+FR5 + WL 2,D3RL1B+FR6 + + WL 3,D2GD2A+FR4 +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + WL 2,D2GD2A+FR6 + WL 3,D2GD2A+FR7 +;Check for a flip here + WL 2,D2GD2A+FR9 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,D2GD2A+FR9 + WL 3,D2GD2A+FR10 + + .word ANI_SAFE_TIME,50 + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss3 + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D2GD2A+FR10 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss3 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss3 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 HEAD HIT + + SUBR dnk_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + +; WL ANI_CODE,#tryblood + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + + WL 3,D3AH3B+FR1 + WL 3,D3AH3B+FR2 + WL 2,D3AH3B+FR3 + WL 2,D3AH3B+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;#tryblood +; move a13,a11 +; CREATE0 react_bloodnguts_gen +; rets + +#* #2 HEAD HIT + + SUBR dnk_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + + WL 3,D2AH2A+FR1 + WL 3,D2AH2A+FR2 + WL 3,D2AH2A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#* #4 HEAD HIT - From spin kick & backhand slap + + SUBR dnk_4_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,D3AH3B+FR1 + .word ANI_DEBRIS,200,2,-23,102,0 ;%chance, tbl index, x,y,z off + WL 3,D3AH3B+FR2 + .word ANI_WAITHITGND + WL 3,D3AH3B+FR3 + .word ANI_ZEROVELS + WL 3,D3AH3B+FR5 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_head_hit4_anim +;From earslap + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL ANI_SET_YVEL,50000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 4,D3AH3B+FR2 + WL 4,D3AH3B+FR3 + WL 4,D3AH3B+FR5 + .word ANI_WAITHITGND + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#* #2 HEAD HIT - From spin kick & backhand slap + + SUBR dnk_2_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,D2AH2A+FR1 + .word ANI_DEBRIS,200,2,-23,102,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 4,D2AH2A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,D2AH2A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HEAD HIT2 (HANDS ON FACE) + + SUBR dnk_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + .word ANI_FRICTION,3000h + WL 3,D3AE3B+FR1 + WL 3,D3AE3B+FR2 + WL 3,D3AE3B+FR3 + WL 3,D3AE3B+FR4 + WL 2,D3AE3B+FR5 + WL 2,D3AE3B+FR6 + WL 2,D3AE3B+FR7 + WL 2,D3AE3B+FR8 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,dnk_fall_back_anim + +#nodead + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_head_hit2s_anim +;Salt hits me in face + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + +; WL 4,D3AE3B+FR1 + WL ANI_CODE,create_impact_salt + WL 4,D3AE3B+FR2 + WL 4,D3AE3B+FR3 + WL 4,D3AE3B+FR4 + .word ANI_WAITHITGND + .word ANI_FRICTION,4000h + WL 50,D3AE3B+FR4 + .word ANI_ZEROVELS + WL 3,D3AE3B+FR5 + WL 3,D3AE3B+FR6 + WL 3,D3AE3B+FR7 + WL 3,D3AE3B+FR8 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#* + + SUBR dnk_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,28000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_FRICTION,3000h +; WL 4,D3AE3B+FR1 + WL 4,D3AE3B+FR2 + WL 4,D3AE3B+FR3 + WL 18,D3AE3B+FR4 + WL 2,D3AE3B+FR5 + .word ANI_ZEROVELS + WL 2,D3AE3B+FR5 + WL 3,D3AE3B+FR6 + WL 3,D3AE3B+FR7 + WL 3,D3AE3B+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* HEAD HIT2 (ENDS IN DIZZY) + + SUBR dnk_head_dead_dizzy_anim +;This is a head hit dizzy seq which causes the player to fall down after a time + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_DIZZY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 4,D3AE3B+FR1 + WL 4,D3AE3B+FR2 + WL 4,D3AE3B+FR3 + WL 4,D3AE3B+FR4 + WL 4,D3AE3B+FR5 + WL 4,D3AE3B+FR6 + WL 4,D3AE3B+FR7 + WL 4,D3AE3B+FR8 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + +* HEAD HIT2 (ENDS IN DIZZY) + + SUBR dnk_head_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_DIZZY + + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 4,D3AE3B+FR1 + WL 4,D3AE3B+FR2 + WL 4,D3AE3B+FR3 + WL 4,D3AE3B+FR4 + WL 4,D3AE3B+FR5 + WL 4,D3AE3B+FR6 + WL 4,D3AE3B+FR7 + WL 4,D3AE3B+FR8 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + +#***************************************************************************** +* +* #2,4 FLYING CLOTHESLINE + + SUBR dnk_fly_cline_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_OVERLAP|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_LEAPING,3 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,D3RC3A+FR1 + .word ANI_OFFSET,5,0,0 ;x,y,z + WL 3,D3RC3A+FR2 + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + + WL ANI_SET_YVEL,64000h + WLW ANI_SET_XVEL,5c000h,AM_FACE_REL ;64 + .word ANI_OFFSET,9,45,0 ;x,y,z + WL 3,D3RC3A+FR3 + .word ANI_ATTACK_ON, AMODE_CLINE,25,6,23,37 ;mode,x,y,w,h ;31 + WL 3,D3RC3A+FR4 + WL 3,D3RC3A+FR5 + WL 3,D3RC3A+FR6 + WL 3,D3RC3A+FR7 + WL 4,D3RC3A+FR8 + .word ANI_ATTACK_OFF + WL 5,D3RC3A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + .word ANI_FRICTION,3000h + .word ANI_BOUNCE,4 + + WL ANI_CODE,HIT_THE_MAT + WL 3,D3RC3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + WL 10,D3RC3A+FR9 + + WL ANI_IFSTATUS,#gothim +;He missed, have him stay on ground for awhile! + WL ANI_CODE,CALL_MISSES + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;Do a little damage when missing! +; .word ANI_DAMAGE,2 ;Damage myself +; WL 30,D3RC3A+FR9 + WL 3,D3RC3A+FR9 +;#done + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim +#gothim + .word ANI_DRAW_NAME,24 + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + WL 2,D3RL1B+FR7 + WL 2,D3RL1B+FR9 + WL 2,D3RL1B+FR11 + +;Perhaps we should turn off collisions when getting up!? +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_OVERLAP|MODE_NOAUTOFLIP|MODE_NOCOLLIS + + WL 2,D3GU4A+FR2 + WL 2,D3GU4A+FR3 + WL 2,D3GU4A+FR4 + WL 2,D3GU4A+FR5 + WL 2,D3GU4A+FR6 + +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,D3GU4A+FR7 + WL 2,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,30 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss4 + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss4 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss4 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +; SUBR ck_dizzy +; +; calla check_dizzy +; jrz #not_dizzy +; move *a13(ANIMODE),a1 +; ori MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets +; +;#not_dizzy +; move *a13(ANIMODE),a1 +; andni MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets + + +#***************************************************************************** +* +* #2,4 BELLY FLOP FROM RUNNING MODE ONTO FALLEN OPPONENT + + SUBR dnk_belly_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_OVERLAP|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_CODE,get_leap + WL ANI_IFNOTSTATUS,#normal + + WL ANI_CODE,#close + WL ANI_IFSTATUS,#no_xvel + +#normal + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,200,100,90,90000h,TGT_GROIN,0,0,-10 + .word ANI_STARTATTACK,AT_LEAPING,30 +; .word ANI_STARTATTACK,AT_BUTTSTOMP,30 + + WL ANI_GOTO,#cont + +#no_xvel + .word ANI_ZERO_XZVELS + WL ANI_SET_YVEL,74000h + + WL 5,D4JD4A+FR4 + .word ANI_OFFSET,0,45,0 ;x,y,z + WL 5,D4FM4A+FR5 + + .word ANI_ATTACK_ON, AMODE_BUTTSTOMP,-18,4,50,23 ;mode,x,y,w,h + WL 1,D4FM4A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + +#miss WL ANI_CODE,shake_all_ropes + .word ANI_BOUNCE,5 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,15 + WL 5,D4FM4A+FR7 + + WL 1,D4FM4A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + + WL ANI_GOTO,#cont4 + +#cont WL 5,D4JD4A+FR4 + .word ANI_OFFSET,0,45,0 ;x,y,z + WL 5,D4FM4A+FR5 + + .word ANI_ATTACK_ON, AMODE_BUTTSTOMP,-18,4,50,23 ;mode,x,y,w,h + WL 1,D4FM4A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#miss + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,15 + + + WL 5,D4FM4A+FR7 + +#cont4 WL 8,D4FM4A+FR9 + + .word ANI_XFLIP + .word ANI_FACEDOWN + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss5 + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss5 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss5 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#close + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + calla get_opp_process ;closest opponent process + move *a0(OBJ_XPOSINT),a0 + MOVE *a13(OBJ_XPOSINT),a14 + sub a0,a14 + abs a14 + cmpi 30h,a14 + jrgt #inplace + rets + +#inplace + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* #2 ELBOW DROP + + SUBR dnk_2_lbowdrop_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2PJ2A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2PJ2A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D2PJ2A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_LBDROP,19 + WL 3,D2PJ2A+FR4 + + .word ANI_OFFSET,0,50,0 ;x,y,z + + WL ANI_CODE,#set_target + WL ANI_CODE,tgt_ground + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,160,140,90000h,TGT_USER,-3,0,-30 + WL ANI_CODE,#zero_x + + WL 3,D2PJ2A+FR6 + WL 3,D2PJ2A+FR8 + WL 10,D2PJ2A+FR10 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_ZERO_XZVELS +;Perhaps even shake ropes + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,18 + +; .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,-15,7,10,30,21,40 ;mode,x,y,z,w,h,d + .word ANI_ATTACK_ON, AMODE_LBOWDROP,-15,7,30,21 ;mode,x,y,z,w,h,d + + WL 2,D2PJ2A+FR11 + WL 2,D2PJ2A+FR12 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFSTATUS,#gothim2 + .word ANI_BOUNCE,3 + WL ANI_CODE,HIT_THE_MAT +; WL ANI_CODE,SMALL_BOUNCE + WL ANI_CODE,CALL_MISSES + +;He missed, have him stay on ground for awhile! + WL 40,D2PJ2A+FR12 + .word ANI_WAITHITGND + WL ANI_GOTO,#cont +#gothim2 + .word ANI_DRAW_NAME,18 + .word ANI_BOUNCE,4 + WL ANI_CODE,HIT_THE_MAT + WL 15,D2PJ2A+FR12 + +#cont WL 3,D5GD3A+FR5 + + WL 3,D5GD3A+FR6 + WL 3,D5GD3A+FR7 + WL 3,D5GD3A+FR8 + WL 3,D5GD3A+FR9 + WL 3,D5GD3A+FR10 + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +* #4 ELBOW DROP + + SUBR dnk_4_lbowdrop_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4PJ4A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4PJ4A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4PJ4A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_LBDROP,19 + WL 3,D4PJ4A+FR3 + + .word ANI_OFFSET,0,31h,0 ;x,y,z + + WL ANI_CODE,#set_target + WL ANI_CODE,tgt_ground + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,160,140,90000h,TGT_USER,-3,0,30 + + WL ANI_CODE,#zero_x + + WL 3,D4PJ4A+FR4 + WL 3,D4PJ4A+FR6 + WL 10,D4PJ4A+FR7 + .word ANI_WAITHITGND +#land + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_CODE,HIT_THE_MAT + .word ANI_ZERO_XZVELS +;Perhaps even shake ropes + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,18 + +; .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,-6,22,16,25,27,30 ;mode,x,y,z,w,h,d + .word ANI_ATTACK_ON, AMODE_LBOWDROP,-6,0,25,27 ;mode,x,y,z,w,h,d + + WL 1,D4PJ4A+FR10 + .word ANI_WAITHITGND + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothim4 + .word ANI_BOUNCE,3 + WL ANI_CODE,HIT_THE_MAT + +;He missed, have him stay on ground for awhile! + + WL ANI_CODE,CALL_MISSES + WL 40,D4PJ4A+FR10 + .word ANI_WAITHITGND + WL ANI_GOTO,#land2 + +#gothim4 + .word ANI_DRAW_NAME,18 + .word ANI_BOUNCE,4 + WL ANI_CODE,HIT_THE_MAT + WL 15,D4PJ4A+FR10 +#land2 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_OFFSET,10,0,0 ;x,y,z + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + + WL 4,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss6 + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss6 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss6 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Elbow drop #4 from turnbuckle + SUBR dnk_4_blbowdrop_anim + +;If jumping toward an in ring opponent & near the edge of ring, turn on +;the confine bit! + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_SCROLL_CTRL,SC_RESTORE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_OFFSET,11,4,0 ;x,y,z + + WL 2,D4PJ4A+FR2 + WL 2,D4PJ4A+FR3 + + .word ANI_OFFSET,0,31h,0 ;x,y,z + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 38,190,190,190,90000h,TGT_CHEST,-3,-3,50 + .word ANI_GRAVITY_ON +; .word ANI_SETPLYRMODE,MODE_INAIR2 + WL ANI_CODE,set_tbukl_airmode + .word ANI_STARTATTACK,AT_LEAPING,25 + + .word ANI_SHAKECORNER ;Shake corner ropes + + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + + WL 3,D4PJ4A+FR4 + WL 3,D4PJ4A+FR6 + + WL 6,D4PJ4A+FR7 + WL ANI_CODE,set_tbukl_confine + WL 4,D4PJ4A+FR7 + .word ANI_ATTACK_ON_Z,AMODE_BLBOWDROP,-46,0,16,92,34,30 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + WWL ANI_IFOPPMODE,MODE_DEAD,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BLBOWDROP,-46,28,16,92,34,30 +#opp_onground + WL 1,D4PJ4A+FR7 + + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ZERO_XZVELS +;Perhaps even shake ropes + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + WL ANI_CODE,HIT_THE_MAT + + WL 1,D4PJ4A+FR10 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_9,2,2 + WL ANI_IFSTATUS,#gothimb + .word ANI_BOUNCE,4 ;Bigger bounce + WL ANI_CODE,HIT_THE_MAT +; WL ANI_CODE,SMALL_BOUNCE + +;He missed, have him stay on ground for awhile! + +; WL ANI_CODE,tbukl_miss_damage + WL ANI_CODE,CALL_MISSES + WL 25,D4PJ4A+FR10 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL ANI_GOTO,#tag + + +#gothimb + .word ANI_DRAW_NAME,18 + .word ANI_BOUNCE,4 + WL ANI_CODE,HIT_THE_MAT + WL 15,D4PJ4A+FR10 + .word ANI_WAITHITGND +#tag .word ANI_XFLIP + .word ANI_OFFSET,-10,0,0 ;x,y,z + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + + WL 4,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss7 + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss7 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +* #4 HAMMER POUND OF FALLEN OPPONENT + + SUBR dnk_4_hammer_anim +;Fix attack boxes! No z + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_HAMMER1,12 + WL 3,D4HM4A+FR1 + WL 3,D4HM4A+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 6,190,90,50,90000h,TGT_GROIN,95,82,13h ;13 + + .word ANI_SET_RPTCOUNT,4 ;5 times + + WL 6,D4HM4A+FR3 ;16 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,D4HM4A+FR4 + WL 3,D4HM4A+FR5 + WL 2,D4HM4A+FR6 + .word ANI_ATTACK_ON, AMODE_HAMMER,31,3,88,73 ;mode,x,y,w,h + WL 3,D4HM4A+FR7 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFNOTSTATUS,#tagmiss + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;He got him, shake screen + .word ANI_DAMAGEOPP,D_HAMMER1,RD_HAMMER1 + .word ANI_DRAW_NAME,25 + +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,30 + .word ANI_SHAKER,25 + + WL ANI_CODE,CALL_NASTY_MOVE + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#missedb + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_hammer + +#missedb +#tagmiss + + WL 3,D4HM4A+FR8 + WL 3,D4HM4A+FR9 + WL 3,D4HM4A+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#dnk_quick_hammer + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_HAMMER1,27 + WL 3,D4HM4A+FR8 + WL 3,D4HM4A+FR9 + WL 3,D4HM4A+FR10 + WL 3,D4HM4A+FR1 + WL 3,D4HM4A+FR2 + WL 3,D4HM4A+FR3 + WL 3,D4HM4A+FR4 + WL 3,D4HM4A+FR5 + WL 3,D4HM4A+FR6 + .word ANI_ATTACK_ON, AMODE_HAMMER,31,3,88,73 ;mode,x,y,w,h + WL 3,D4HM4A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#tagmiss + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,30 + + .word ANI_SHAKER,25 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,2,#failed + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_hammer + WL 20,D4HM4A+FR7 +#failed + + WL 3,D4HM4A+FR8 + WL 3,D4HM4A+FR9 + WL 3,D4HM4A+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +dnk_combo_hammer_anim + .word ANI_SET_RPTCOUNT,3 ;5 times + .word ANI_IMMOBILIZE,30 +; .word ANI_STARTATTACK,AT_HAMMER1,23 + WL 4,D4HM4A+FR1 + WL 4,D4HM4A+FR2 + WL 4,D4HM4A+FR3 ;16 + WL 3,D4HM4A+FR4 + WL 4,D4HM4A+FR5 + WL 4,D4HM4A+FR6 + .word ANI_ATTACK_ON, AMODE_HAMMER,31,3,88,73 ;mode,x,y,w,h + WL 4,D4HM4A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed2 + .WORD ANI_INC_COMBO + .word ANI_IMMOBILIZE,30 + .word ANI_SHAKER,25 + +dnk_repeat_combo_hammer_anim + .word ANI_CLR_BUTCOUNT +; .word ANI_STARTATTACK,AT_HAMMER1,15 + WL 2,D4HM4A+FR8 + WL 1,D4HM4A+FR9 + WL 2,D4HM4A+FR10 + WL 2,D4HM4A+FR1 + WL 1,D4HM4A+FR2 + WL 2,D4HM4A+FR3 + WL 2,D4HM4A+FR4 + WL 1,D4HM4A+FR5 + WL 2,D4HM4A+FR6 + .word ANI_ATTACK_ON, AMODE_HAMMER,31,3,88,73 ;mode,x,y,w,h + WL 2,D4HM4A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed2 + .WORD ANI_INC_COMBO + +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,30 + + .word ANI_SHAKER,25 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,2,#missed2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,dnk_repeat_combo_hammer_anim + +#missed2 + WL ANI_CODE,DO_COMBO_MESS + WL 3,D4HM4A+FR8 + WL 3,D4HM4A+FR9 + WL 3,D4HM4A+FR10 + .WORD ANI_CLEAR_COMBO + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + +#set_target + + calla get_opp_process + move a0,a11 + + move *a13(CLOSEST_XDIST),a0 + cmpi >40,a0 + jrlt #drop + +;We are to side of fallen opponent, we must float toward +;his head or his knees + +;Take into account my flip as well as my opponents flip! + move *a13(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a11(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrnz #head + + movi TGT_KNEES,a0 + calla set_target_offsets + rets + +#head + movi TGT_HEAD,a0 + calla set_target_offsets + rets + +#drop +;Just drop straight down + movi TGT_CHEST,a0 + calla set_target_offsets + rets + +#zero_x + move *a13(CLOSEST_XDIST),a0 + cmpi >40,a0 + jrgt #ok ;Is he to the side? + +;Don't float if dropping straight down + clr a0 + move a0,*a13(OBJ_XVEL),L +#ok rets + +#get_off +;Get off from fallen opponent + movi [3,0],a0 + move a0,*a13(OBJ_ZVEL),L + movi [2,0],a0 + move a0,*a13(OBJ_YVEL),L + rets + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR dnk_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D3MP3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D3MP3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D3MP3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_STOMP,15 + WL ANI_CODE,#set_target + WL ANI_CODE,tgt_ground + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 13,999,160,140,90000h,TGT_USER,20,0,-30 + + WL 3,D3MP3A+FR2 + WL 2,D3MP3A+FR3 + WL 3,D3MP3A+FR4 + WL 2,D3MP3A+FR5 + WL 3,D3MP3A+FR6 + + .word ANI_ATTACK_ON_Z, AMODE_STOMP,7,7,-20,20,33,30 ;mode,x,y,z,w,h,d + .word ANI_ZERO_XZVELS + + WL 3+4,D3MP3A+FR7 + .word ANI_ATTACK_OFF +; WL ANI_CODE,SMALL_BOUNCE + + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFSTATUS,#gothim + WL 3,D3MP3A+FR8 + .word ANI_WAITHITGND + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gothim + WL ANI_CODE,#get_off + WL 2,D3MP3A+FR8 + .word ANI_WAITHITGND + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 STOMP ON FALLEN OPPONENT + + SUBR dnk_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4MP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4MP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,D4MP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL ANI_CODE,#set_target + WL ANI_CODE,tgt_ground + .word ANI_STARTATTACK,AT_STOMP,15 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 13,999,160,140,90000h,TGT_USER,32,0,30 + + WL 3,D4MP4D+FR2 + WL 3,D4MP4D+FR3 + WL 7,D4MP4D+FR4 + +;#cont4 +; WL 3,D4MP4D+FR5 + +; .word ANI_ATTACK_ON_Z, AMODE_STOMP,2,1,40,19,27,30 ;mode,x,y,z,w,h,d + .word ANI_ATTACK_ON_Z, AMODE_STOMP,22,8,40,35,22,30 ;mode,x,y,z,w,h,d + + .word ANI_ZERO_XZVELS + + WL 7,D4MP4D+FR6 + .word ANI_ATTACK_OFF + +; WL ANI_CODE,SMALL_BOUNCE + + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFSTATUS,#gothim4 + WL 3,D4MP4D+FR7 + .word ANI_WAITHITGND + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#gothim4 + WL ANI_CODE,#get_off4 + WL 2,D4MP4D+FR7 + .word ANI_WAITHITGND + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +;Stomp #4 from top of turnbuckle + SUBR dnk_4_bstomp_anim + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_XFLIP ;make an ANI_FACEOUT and ANI_FACEIN + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL 3,D4JD4A+FR1 + WL 3,D4JD4A+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16+20,190,190,190,90000h,TGT_CHEST,39+8,7+4,20 + .word ANI_GRAVITY_ON +; .word ANI_SETPLYRMODE,MODE_INAIR2 + WL ANI_CODE,set_tbukl_airmode + + .word ANI_STARTATTACK,AT_LEAPING,36 + + .word ANI_SHAKECORNER ;Shake corner ropes + +;Check x vel to make sure we aren't going to land on ropes! +; WL ANI_CODE,check_xvel + + .word ANI_OFFSET,8,4,0 ;x,y,z + WL ANI_IFNOTSTATUS,#nooff + .word ANI_OFFSET,-16,0,0 ;x,y,z + +#nooff + WL 3,D4MP4D+FR2 + WL 3,D4MP4D+FR3 + + WL 6,D4MP4D+FR4 + WL ANI_CODE,set_tbukl_confine + WL 9,D4MP4D+FR4 + + WL 1eh-15,D4MP4D+FR4 + + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-46,0,0,92,34,30 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + WWL ANI_IFOPPMODE,MODE_DEAD,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-46,28,0,72,34,30 +#opp_onground + WL 3,D4MP4D+FR6 + + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ZERO_XZVELS + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,shake_all_ropes + +; WL 1,D4MP4D+FR7 + + .word ANI_BOUNCE,6 + + WL ANI_CODE,HIT_THE_MAT + + WL 6,D4MP4D+FR6 + .word ANI_ATTACK_OFF + + WL 9,D4MP4D+FR7 + + .WORD ANI_ADD_MOVE,MOVE_C_9,2,2 + WL ANI_IFSTATUS,#gothimb4 + WL 3,D4MP4D+FR7 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE +; WL ANI_CODE,tbukl_miss_damage + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR check_xvel + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + ;don't mess with anything if opponent is ouside the ring + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(INRING),a0,W + jrnz #ok + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID,a0 + jrgt #onrgt + +;Check to make sure opponent is in ring! + move *a13(OBJ_XVEL),a0,L + jrnn #ok +; cmpi [0,8000h],a0 +; jrge #ok +;Will land on ropes + movi [1,8000h],a0 + move a0,*a13(OBJ_XVEL),L + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets +#onrgt +;Check to make sure opponent is in ring! + move *a13(OBJ_XVEL),a0,L + jrn #ok +; cmpi -[0,8000h],a0 +; jrle #ok +;Will land on ropes + movi -[1,8000h],a0 + move a0,*a13(OBJ_XVEL),L + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) +#ok + rets + +#gothimb4 + WLW ANI_SET_ZVEL,-50000h,AM_ABS +; WL ANI_CODE,#getoff4 + + WL 5,D4MP4D+FR7 + .word ANI_WAITHITGND + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#set_target + + calla get_opp_process + move a0,a11 + + move *a13(STICK_VAL_CUR),a0 + btst MOVE_LEFT_BIT,a0 + jrnz #lft + btst MOVE_RIGHT_BIT,a0 + jrnz #rgt +;No stick +;Randomize between head/chest/groin/knees +; movk 3,a0 +; calla RNDRNG0 +; X16 a0 +; addi #targets,a0 +; move *a0,a0 + + movi TGT_CHEST,a0 + + calla set_target_offsets + rets + +;Go to chest or if opponent is flipped, go to head! +#lft + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #chest +#head + movi TGT_HEAD,a0 + calla set_target_offsets + rets + +;Go to head or if opponent is flipped, go to chest! +#rgt + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #head +#chest + movi TGT_KNEES,a0 + calla set_target_offsets + rets + +; or set *a13(TGT_XOFF), *a13(TGT_YOFF) & *a13(TGT_ZOFF) manually + +#targets + .word TGT_HEAD ;0 + .word TGT_CHEST ;1 + .word TGT_GROIN ;2 + .word TGT_KNEES ;3 + + +#get_off + movi [4,0],a0 + move a0,*a13(OBJ_ZVEL),L + movi [2,0],a0 + move a0,*a13(OBJ_YVEL),L + rets + +#get_off4 + movi -[2,0],a0 + move a0,*a13(OBJ_ZVEL),L + movi [1,0],a0 + move a0,*a13(OBJ_YVEL),L + rets + + +#***************************************************************************** +* + + SUBR dnk_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_XFLIP + + WL 2,D3GU4A+FR9 + WL 2,D3GU4A+FR7 + WL 2,D3GU4A+FR5 + WL ANI_SET_YVEL,39000h + WL 2,D3SA3A+FR2 + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,D3SA3A+FR3 + WL 6,D3SA3A+FR4 + WL 3,D3SA3A+FR5 + WL 3,D3SA3A+FR7 + WL 2,D3SA3A+FR8 + WL 6,D3SA3A+FR9 + + +;FIX!!! Add to other wrestlers + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + +;#done + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR dnk_hitonground_xflip_anim + .word ANI_XFLIP + ;fall through + + SUBR dnk_hitonground_anim + +;We need to take stars away on hits... + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,39000h + + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 2,D3SA3A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPITUP_SWEAT,SWEAT_PER,0 + WL 3,D3SA3A+FR3 + WL 6,D3SA3A+FR4 + WL 3,D3SA3A+FR5 + WL 3,D3SA3A+FR7 + WL 2,D3SA3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 1,D3SA3A+FR9 + + SUBR dnk_liedown_anim + WL 1,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + + SUBR dnk_up_anim + +;We need to take stars away on hits... + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .WORD ANI_XFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL 10,D3OS3A+FR3 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR dnk_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,DNK_TBUKLY + WL ANI_SET_YVEL,4000h ;27000 + .word ANI_OFFSET,-8+13,-3+4,-16 ;x,y,z + WL 4,D2CT2A+FR2 + .word ANI_OFFSET,0,15h,0 ;x,y,z + WL 4,D2CT2A+FR7 + .word ANI_SHAKEROPES,1 + .word ANI_OFFSET,4,4,0 ;x,y,z + WL 4,D2CT2A+FR9 + .word ANI_OFFSET,6,14,0 ;x,y,z + WL 4,D2CT2A+FR12 + .word ANI_ZEROVELS + + .word ANI_OFFSET,0,6,0 ;x,y,z + WL 4,D2CT2B+FR2 + .word ANI_OFFSET,10,18h,0 ;x,y,z + WL 4,D2CT2B+FR4 + .word ANI_OFFSET,-2,19,0 ;x,y,z + WL 4,D2CT2B+FR6 + + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_UNINT|MODE_OVERLAP + .word ANI_SCROLL_CTRL,SC_RESTORE + + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + + .word ANI_OFFSET,2,0,0 ;x,y,z + WL ANI_CODE,tbukl_flip +#repeat WL 5,D2CT2C+FR1 + WL ANI_CODE,tbukl_flip + WL 5,D2CT2C+FR3 + WL ANI_CODE,tbukl_flip + WL 5,D2CT2C+FR5 + WL ANI_CODE,tbukl_flip + WL 5,D2CT2C+FR7 + WL ANI_CODE,tbukl_flip + WL 5,D2CT2C+FR9 + WL ANI_CODE,tbukl_flip + WL 5,D2CT2C+FR11 + WL ANI_CODE,tbukl_flip + WL 5,D2CT2C+FR13 + WL ANI_CODE,tbukl_flip + WL 5,D2CT2C+FR15 + WL ANI_CODE,tbukl_flip + WL 5,D2CT2C+FR17 + WL ANI_CODE,tbukl_flip + WL 5,D2CT2C+FR19 + WL ANI_CODE,tbukl_flip + WL 5,D2CT2C+FR21 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + +* CLIMB DOWN TURNBUCKLES + + SUBR dnk_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,face_inside + + .word ANI_OFFSET,0,2,0 ;x,y,z + WL 5,D2CT2B+FR6 + .word ANI_OFFSET,0,-13-3,0 ;x,y,z + WL 5,D2CT2B+FR4 + + WL ANI_SET_YVEL,-4000h + + .word ANI_OFFSET,-8,-26-3,0 ;x,y,z + WL 4,D2CT2B+FR2 + .word ANI_OFFSET,0,-5-3,0 ;x,y,z + .word ANI_SHAKEROPES,1 + WL 4,D2CT2A+FR12 + .word ANI_OFFSET,0,-10-3,0 ;x,y,z + WL 4,D2CT2A+FR9 + .word ANI_OFFSET,0,-10-3,0 ;x,y,z + WL 4,D2CT2A+FR7 + .word ANI_OFFSET,-9,-9-3,0 ;x,y,z + WL 4,D2CT2A+FR2 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_WAITHITGND + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;#***************************************************************************** +;* +;* SECOND WIND +; +; SUBR dnk_2ndwind_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; WL 3,D4SW4B+FR1 +; WL 3,D4SW4B+FR2 +; +; WL 3,D4SW4E+FR1 +; WL 3,D4SW4E+FR2 +; WL 3,D4SW4E+FR3 +; WL 3,D4SW4E+FR4 +; WL 3,D4SW4E+FR5 +; +; WL 3,D4SW4E+FR1 +; WL 3,D4SW4E+FR2 +; WL 3,D4SW4E+FR3 +; WL 3,D4SW4E+FR4 +; WL 3,D4SW4E+FR5 +; +; WL 3,D4SW4F+FR1 +; WL 3,D4SW4F+FR2 +; WL 3,D4SW4F+FR3 +; WL 3,D4SW4F+FR4 +; WL 3,D4SW4F+FR5 +; WL 3,D4SW4F+FR6 +; WL 3,D4SW4F+FR7 +; +; WL 3,D4SW4F+FR1 +; WL 3,D4SW4F+FR2 +; WL 3,D4SW4F+FR3 +; WL 3,D4SW4F+FR4 +; WL 3,D4SW4F+FR5 +; WL 3,D4SW4F+FR6 +; WL 3,D4SW4F+FR7 +; +; .word ANI_SETMODE,MODE_NORMAL +; + +#***************************************************************************** +* +* BUTT DROP FROM TOP OF TURNBUCKLE + + SUBR dnk_diveofftb_anim + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS|MODE_NOGRAVITY|MODE_OVERLAP|MODE_NOCONFINE + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY|MODE_OVERLAP|MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_SCROLL_CTRL,SC_RESTORE + + .word ANI_STARTATTACK,AT_LEAPING,43 + WL 4,D4JD4A+FR1 + WL 4,D4JD4A+FR2 ;D4FM4A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 35,190,190,190,90000h,TGT_CHEST,-15,0,-10 + + .word ANI_GRAVITY_ON +; .word ANI_SETPLYRMODE,MODE_INAIR2 + WL ANI_CODE,set_tbukl_airmode + + .word ANI_SHAKECORNER ;Shake corner ropes + + WL 3,D4JD4A+FR4 + + .word ANI_OFFSET,0,45,0 ;x,y,z + + WL 3,D4FM4A+FR5 + WL 3,D4FM4A+FR6 + WL ANI_CODE,set_tbukl_confine + + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-24,0,-30,86,34,60 ;mode,x,y,z,w,h,d + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + WWL ANI_IFOPPMODE,MODE_DEAD,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-24,28,-30,60,34,60 +#opp_onground + WL 1,D4FM4A+FR6 + .word ANI_WAITHITGND + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + .word ANI_ADD_MOVE,MOVE_C_9,2,2 + WL ANI_IFSTATUS,#hit + +#missed +; WL ANI_CODE,tbukl_miss_damage + WL ANI_CODE,CALL_MISSES + WL ANI_CODE,shake_all_ropes + WL ANI_CHANGEANIM,dnk_hitonground_xflip_anim + +#hit WLW ANI_SET_ZVEL,20000h,AM_ABS + +#cont WL ANI_CODE,shake_all_ropes + .word ANI_SETPLYRMODE,MODE_NORMAL + + ;bounce + .word ANI_SHAKER,18 + .word ANI_BOUNCE,6 + WL ANI_CODE,HIT_THE_MAT + WL 5,D4FM4A+FR7 + + WL 1,D4FM4A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + WL 5,D4FM4A+FR7 + WL 8,D4FM4A+FR9 + + .word ANI_XFLIP + .word ANI_FACEDOWN + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,30 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss8 + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss8 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR dnk_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + WL 2,D1TT5Z+FR2 + WL 2,D1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR dnk_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,8 +#cont + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,50,20,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + WL 5,D4GF3A+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET_NOFLAIL,33,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,D4GF3A+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,2,D4GF3A+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missedb + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;got him + + WL ANI_CODE,DO_GRUNT + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + .word ANI_SETOPPFACING + WWLLW ANI_SUPERSLAVE2,10,D4GF3A+FR3,#puppet_tbl,0 + .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,6,D4GF3A+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,D4GF3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,D4GF3A+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,D4GF3A+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,D4GF3A+FR8,#puppet_tbl,5 + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 10,D4GF3A+FR9 ;16 + .word ANI_OFFSET,-10,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missedb + WL ANI_CODE,fling_delay + WL ANI_IFNOTSTATUS,#missed + WL 25,D4GF3A+FR3 + +#missed + WL ANI_CODE,CALL_MISSES + WL 6,D4GF3A+FR3 + WL 3,D4GF3A+FR2 + WL 3,D4GF3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR fling_delay + + move *a13(LAST_FLING),a14,L + move @PCNT,a0,L ;use 32-bit PCNT! + move a0,*a13(LAST_FLING),L + sub a14,a0 + cmpi 3*60,a0 + jrge #ok + +;This blocked fling attempt is too close (in terms of time) to most recent grab + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#ok move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H4YR3A,H3RN3A + .ref R4YR3A,R3RN3D + .ref U4YR3B,U3RN3A + .ref Y4YR3A,Y3RN3C + .ref S4YR3A,S3RN3A + .ref B4YR3A,B3RN3A + .ref L4YR3B,L3RN3B + +#Bret + LWWW H4YR3A+FR1,53,7,1 + LWWW H4YR3A+FR2,49,9,1 + LWWW H4YR3A+FR3,48,9,1 + LWWW H4YR3A+FR5,43,11,1 + LWWW H3RN3A+FR1,15,5,0 + LWWW H3RN3A+FR2,-14,8,0 +#Razor + LWWW R4YR3A+FR1,32,17,0 + LWWW R4YR3A+FR2,21,20,0 + LWWW R4YR3A+FR3,1,11,0 + LWWW R4YR3A+FR4,4,15,0 + LWWW R3RN3D+FR10,9,16,0 + LWWW R3RN3D+FR11,-4,16,0 +#Taker + LWWW U4YR3B+FR2,34,18,0 + LWWW U4YR3B+FR3,37,16,0 + LWWW U4YR3B+FR4,29,24,0 + LWWW U4YR3B+FR5,27,24,0 + LWWW U3RN3A+FR2,-11,15,0 + LWWW U3RN3A+FR2,-25,14,0 +#Yokozuna + LWWW Y4YR3A+FR1,59,11,1 + LWWW Y4YR3A+FR4,37,13,1 + LWWW Y4YR3A+FR5,32,11,1 + LWWW Y4YR3A+FR7,5,3,1 + LWWW Y3RN3C+FR7,18,13,0 + LWWW Y3RN3C+FR8,8,12,0 +#Shawn + LWWW S4YR3A+FR2,38,5,1 + LWWW S4YR3A+FR3,52,-3,1 + LWWW S4YR3A+FR5,21,11,1 + LWWW S4YR3A+FR6,19,10,1 + LWWW S3RN3A+FR2,16,11,0 + LWWW S3RN3A+FR3,4,11,0 +#BamBam + LWWW B4YR3A+FR3,32,15,0 + LWWW B4YR3A+FR4,43,11,0 + LWWW B4YR3A+FR5,53,12,0 + LWWW B4YR3A+FR7,9,9,0 + LWWW B3RN3A+FR1,6,19,0 + LWWW B3RN3A+FR2,3,17,0 +#Doink + LWWW D4YR3B+FR1,64,16,1 + LWWW D4YR3B+FR2,60,20,1 + LWWW D4YR3B+FR3,47,19,1 + LWWW D4YR3B+FR4,38,20,1 + LWWW D3RN3B+FR3,23,20,0 + LWWW D3RN3B+FR4,-8,18,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,66,16,1 + LWWW L4YR3B+FR2,54,10,1 + LWWW L4YR3B+FR3,38,13,1 + LWWW L4YR3B+FR4,13,11,1 + LWWW L3RN3B+FR2,0,19,0 + LWWW L3RN3B+FR3,10,13,0 + +#strt_run_tbl + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR dnk_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + + WL ANI_CODE,DO_OTHERNONO +#loop + WL 3,D4MF4A+FR1 + WL 3,D4MF4A+FR2 + WL 3,D4MF4A+FR3 + WL 3,D4MF4A+FR4 + WL 3,D4MF4A+FR5 + WL 3,D4MF4A+FR6 + WL 3,D4MF4A+FR7 + WL 3,D4MF4A+FR8 + WL 3,D4MF4A+FR9 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 2,D4MF4A+FR6 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,D3GS3X+FR5 + WL 4,D3GS3X+FR4 + WL 4,D3GS3X+FR3 + WL 4,D3GS3X+FR1 + .word ANI_WAITHITGND + WL 2,D2ST2B+FR3 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +;#***************************************************************************** +;* +;* #2 BLOCK +; +; SUBR dnk_2_block_anim +; +; .word ANI_SETMODE,MODE_UNINT ;uninterruptable +; .word ANI_ZERO_XZVELS +; .word ANI_SETSPEED,100h +; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_SET_WRESTLER_XFLIP +; +; WL ANI_CODE,block_if_safe +; WL 2,D2BK3C+FR1 +; WL 1,D2BK3C+FR2 +; .word ANI_SETPLYRMODE,MODE_BLOCK +; +; WL 1,D2BK3C+FR2 +;#blk2 WL 2,D2BK3C+FR3 +; .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT +; .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT +; .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_SETFACING +; WL 2,D2BK3C+FR2 +; WL 2,D2BK3C+FR1 +; .word ANI_SETPLYRMODE,MODE_NORMAL +; +; SUBR dnk_2_hitblock_anim +; +; .word ANI_SETMODE,MODE_UNINT ;uninterruptable +; .word ANI_FRICTION,4000h +; .word ANI_SETSPEED,100h +; +; WL ANI_CODE,DO_BLOCKED +; WL 4,D2BK3C+FR7 +; WL 4,D2BK3C+FR5 +; WL ANI_GOTO,#blk2 + +* #4 BLOCK + + SUBR dnk_4_block_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_ZERO_XZVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_BLOCK +; WL ANI_CODE,block_if_safe + WL 2,D4BK3A+FR1 + WL 1,D4BK3A+FR2 +; .word ANI_SETPLYRMODE,MODE_BLOCK + WL 1,D4BK3A+FR2 +#blk4 WL 2,D4BK3A+FR3 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT|MODE_FRICTION +; .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETFACING + WL 2,D4BK3A+FR2 + WL 2,D4BK3A+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_FRICTION,5000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL 2,D4BK3A+FR7 + WL 2,D4BK3A+FR6 + WL ANI_GOTO,#blk4 + + SUBR dnk_4_hitblock2_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_FRICTION,4000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL ANI_SET_YVEL,38000h + WL 3,D4BK3A+FR6 + WL 3,D4BK3A+FR7 + WL 3,D4BK3A+FR6 + WL 3,D4BK3A+FR7 + WL 3,D4BK3A+FR6 + WL 3,D4BK3A+FR7 + + WL ANI_GOTO,#blk4 + +#***************************************************************************** +* +* HIP TOSS RUNNING OPPONENT + + SUBR dnk_2_hiptoss2_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS ;uninterruptable + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,6 +; WL 2,D1TT5Z+FR2 +; WL 2,D1TT5Z+FR3 + + SUBR dnk_4_hiptoss2_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS ;uninterruptable + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,60,55,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0 + + WL 2,D3HT3Q+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET_TOSS,33,46,44,38 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,8,D3HT3Q+FR1 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + + WL ANI_GOTO,#cont + + SUBR dnk_2_hiptoss_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 +; WL 2,D1TT5Z+FR2 +; WL 2,D1TT5Z+FR3 + + SUBR dnk_4_hiptoss_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 4,D3HT3Q+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET_TOSS,33,46,44,38 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,D3HT3Q+FR1 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL 4,D3HT3Q+FR1 +#cont + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +#got_him + .ref MAKE_HIM_SCREAM + WL ANI_CODE,MAKE_HIM_SCREAM + WL ANI_CODE,DO_GRUNT + .word ANI_DRAW_NAME,3 + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR1,#puppet_tbl,0 + WL ANI_CODE,SMALL_BOUNCE +; .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR4,#puppet_tbl,3 + .WORD ANI_ADD_MOVE,MOVE_C_1,2,2 + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_out + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,D3HT3Q+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,1,D3HT3Q+FR8,#puppet_tbl,7 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WL ANI_SLAVEANIM,#rollout_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL 10,D3HT3Q+FR8 + WL 3,D3HT3Q+FR7 + WL 3,D3HT3Q+FR6 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb +; WL ANI_CODE,ck_hiptoss +; WL ANI_IFNOTSTATUS,#got_him + + WL 10,D3HT3Q+FR1 +;Delay longer if 2nd hiptoss in quick succession! + WL ANI_CODE,hiptoss_delay + WL ANI_IFNOTSTATUS,#missed + WL 24,D3HT3Q+FR1 +#missed + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + + WL 8,D3HT3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +; SUBR ck_hiptoss +;;Check to see if guy I just tried to hip toss has safe time +;;or is pulling down & away +; +; move *a13(WHOIHIT),a0,L +; move *a0(SAFE_TIME),a14 +; jrnz #ano +; +;;If stick is down & away - skip toss +; move *a0(STICK_VAL_CUR),a14 +; andi 0ch,a14 +; jrz #ok +; move *a0(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a14,a1 +; jrz #ok +; +; move *a0(STICK_VAL_CUR),a14 +; cmpi 4,a1 +; jrz #fclft +; cmpi >6,a14 +; jrnz #ok +;;Pulling down & away! +;;Don't allow hiptoss +;#ano move *a13(ANIMODE),a1 +; ori MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets +; +;#fclft cmpi >a,a14 +; jrz #ano +; +;#ok move *a13(ANIMODE),a1 +; andni MODE_STATUS,a1 +; move a1,*a13(ANIMODE) +; rets + + SUBR hiptoss_delay + + move *a13(LAST_HIPTOSS),a14,L + move @PCNT,a0,L ;use 32-bit PCNT! + move a0,*a13(LAST_HIPTOSS),L + sub a14,a0 + cmpi 3*60,a0 + jrge #oka + +;This blocked fling attempt is too close (in terms of time) to most recent grab + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#oka move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#throw_him_out + WLLL ANI_ATTACHVEL,-0a0000h,90000h,0h ;x,y,z + WL ANI_CODE,CALL_THROWN_OUT + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,release_table + .word ANI_DETACH + wl 3,D3HT3Q+FR5 + WL 3,D3HT3Q+FR6 + WL 3,D3HT3Q+FR7 + WL 3,D3HT3Q+FR8 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,15 + + WL 3,D3HT3Q+FR8 + WL 3,D3HT3Q+FR7 + WL 3,D3HT3Q+FR6 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +release_table + ; X Y + .word 40,24 ;Bret + .word 32,8 ;Razor + .word 32,20 ;Taker + .word 32,16 ;Yokozuna + .word 28,12 ;Shawn + .word 16,8 ;BamBam + .word 32,16 ;Doink + .word 0,0 ;Adam + .word 32,16 ;Lex + +#flyout_tbl + REFLONG hrt_flyout_anim + REFLONG rzr_flyout_anim + REFLONG und_flyout_anim + REFLONG yok_flyout_anim + REFLONG shn_flyout_anim + REFLONG bam_flyout_anim + REFLONG dnk_flyout_anim + .long 0 + REFLONG lex_flyout_anim + + + SUBR dnk_4_combo_hiptoss_anim + + .word ANI_SET_RPTCOUNT,4 ;5 times +re_enter_combo_hiptoss + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,D3HT3Q+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET,33,0,44,60 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,D3HT3Q+FR1 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,D3HT3Q+FR1 + .word ANI_ATTACK_OFF + .word ANI_CLR_BUTCOUNT + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker + +;got him + + .WORD ANI_INC_COMBO + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR1,#puppet_tbl,0 + .word ANI_WAITHITGND + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR4,#puppet_tbl,3 + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_out_c + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,D3HT3Q+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,1,D3HT3Q+FR8,#puppet_tbl,7 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WL ANI_SLAVEANIM,#rollout_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + + WLLL ANI_SETOPPVELS,0,80000h,0h ;x,y,z vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + +; WL 15,D3HT3Q+FR8 + WL 4,D3HT3Q+FR8 + WL 4,D3HT3Q+FR7 + WL 4,D3HT3Q+FR6 + + .word ANI_FACEDOWN + .word ANI_SETFACING + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,CHECK_FOR_NEXT + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK + WL ANI_GOTO,yes_do_combo_again + +CHECK_FOR_NEXT + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,yes_do_combo_again + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK2A + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_IMMOBILIZE,120 + WL 4,D3HT3Q+FR6 + .WORD ANI_XFLIP + WL ANI_CHANGEANIM,dnk_2_stomp_anim + +#NEXT_CHECK2A + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHECK + .WORD ANI_XFLIP + WL ANI_CHANGEANIM,dnk_combo_hammer_anim + +#NEXT_CHECK + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +yes_do_combo_again + .WORD ANI_XFLIP + WL ANI_CHANGEANIM,re_enter_combo_hiptoss + +#missedbc + WL 10,D3HT3Q+FR1 +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 20,D3HT3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#throw_him_out_c + WLLL ANI_ATTACHVEL,-090000h,90000h,0h ;x,y,z + WL ANI_CODE,CALL_THROWN_OUT + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,release_table + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + wl 3,D3HT3Q+FR5 + WL 4,D3HT3Q+FR6 + WL 4,D3HT3Q+FR7 + WL 4,D3HT3Q+FR8 + +; .word ANI_SOUND,0C1h ;plywood crash #3 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H2AH3A,H3FR3A,H2CP3A,H2AM3A + LWWW H2AH3A+FR5,72,10,0 + LWWW H2AM3A+FR1,58,17,0 + LWWW H2AM3A+FR7,47,8,0 + LWWW H3FR3A+FR2,29,25,0 + LWWW H3FR3A+FR3,14,59,0 + LWWW H3FR3A+FR4,-26,62,0 + LWWW H3FR3A+FR5,-75,-6,0 + LWWW H2CP3A+FR8,-149,-47,1 + .long 0 +#Razor + .ref R3TD3A,R3GU2A + LWWW R3TD3A+FR1,56,6,0 + LWWW R3TD3A+FR3,45,6,0 + LWWW R3TD3A+FR4,37,19,0 + LWWW R3TD3A+FR5,36,47,0 + LWWW R3TD3A+FR6,15,62,0 + LWWW R3TD3A+FR7,-25,65,0 + LWWW R3TD3A+FR8,-73,9,0 + LWWW R3GU2A+FR1,-155,-43,1 + .long 0 +#Taker + .ref U3AE4A,U4AM4C,U3FH3A,U3CP3B + LWWW U3AE4A+FR1,73,22,0 + LWWW U4AM4C+FR4,52,18,0 ;15 + LWWW U3FH3A+FR1,55,20,1 ;15 + LWWW U3FH3A+FR2,32,45,1 ;40 + LWWW U3FH3A+FR3,18,60,1 ;54 + LWWW U3FH3A+FR4,-30,68,1 ;63 + LWWW U3FH3A+FR5,-92,18,1 + LWWW U3CP3B+FR1,-175,-40,1 + .long 0 +#Yokozuna + .ref Y4AE4A,Y3FL3W,Y3FD3A,Y3MS3Z + LWWW Y4AE4A+FR1,81,10,0 + LWWW Y3MS3Z+FR2,56,18,0 + LWWW Y3FL3W+FR3,36,24,0 + LWWW Y3FL3W+FR4,37,55,0 + LWWW Y3FL3W+FR5,17,68,0 + LWWW Y3FL3W+FR6,-43,68,0 + LWWW Y3FL3W+FR7,-90,11,0 + LWWW Y3FD3A+FR7,-130,-17,0 + .long 0 +#Shawn + .ref S3OS3X + LWWW S3OS3X+FR2,58,7,1 + LWWW S3OS3X+FR4,27,18,1 + LWWW S3OS3X+FR5,22,16,1 + LWWW S3OS3X+FR6,26,64,1 + LWWW S3OS3X+FR7,20,79,1 + LWWW S3OS3X+FR8,-13,78,1 + LWWW S3OS3X+FR9,-98,20,1 + LWWW S3OS3X+FR10,-144,-38,1 + .long 0 +#BamBam + .ref B4TD3B + LWWW B4TD3B+FR1,53,2,0 + LWWW B4TD3B+FR3,39,4,0 + LWWW B4TD3B+FR4,42,16,0 + LWWW B4TD3B+FR5,33,59,0 + LWWW B4TD3B+FR6,23,88,0 + LWWW B4TD3B+FR7,-28,73,0 + LWWW B4TD3B+FR8,-68,16,0 + LWWW B4TD3B+FR9,-117,-28,0 + .long 0 +#Doink + LWWW D3AE3B+FR8,69,8,0 + LWWW D3PM4C+FR2,37,7,0 + LWWW D3OS3A+FR1,56,10,0 + LWWW D3OS3A+FR3,37,26,0 + LWWW D3OS3A+FR4,23,41,0 + LWWW D3OS3A+FR6,-23,52,0 + LWWW D3FD3E+FR2,-73,-18,0 + LWWW D3SA3A+FR2,-137,-40,1 + .long 0 +#Adam + .long 0 +#Lex + .ref L4AM4B,L3FH3A,L3CP3B + LWWW L4AM4B+FR3,64,-10,0 + LWWW L3FH3A+FR1,46,14,0 + LWWW L3FH3A+FR2,42,14,0 ;8 + LWWW L3FH3A+FR3,31,35,0 + LWWW L3FH3A+FR4,24,46,0 + LWWW L3FH3A+FR5,-15,49,0 + LWWW L3FH3A+FR6,-69,1,0 + LWWW L3CP3B+FR1,-152,-39,1 + .long 0 + + +#rollout_tbl + .long hrt_tossed_anim,rzr_tossed_anim + .long und_tossed_anim + .long yok_tossed_anim + .long shn_tossed_anim,bam_tossed_anim + .long dnk_tossed_anim,0,lex_tossed_anim + + .ref hrt_tossed_anim,rzr_tossed_anim + .ref und_tossed_anim + .ref yok_tossed_anim + .ref shn_tossed_anim,bam_tossed_anim + .ref lex_tossed_anim + +;#rollout_tbl +; REFLONG und_tossed_anim +; REFLONG yok_tossed_anim +; REFLONG shn_tossed_anim,bam_tossed_anim +; REFLONG dnk_tossed_anim +; .long 0 +; REFLONG lex_tossed_anim + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR dnk_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + .word ANI_GETUP,STAY_TIME + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + WL 4,D3SA3A+FR3 +; WL ANI_SET_YVEL,30000h +; WL 3,D3SA3A+FR3 + WL 4,D3SA3A+FR4 + WL 4,D3SA3A+FR5 + WL 4,D3SA3A+FR7 + WL 4,D3SA3A+FR8 + WL 1,D3SA3A+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + +; WL 3,D3SA3A+FR3 +; WL 3,D3SA3A+FR4 +; WL 3,D3SA3A+FR5 +; WL 3,D3SA3A+FR7 +; WL 3,D3SA3A+FR8 + + WL 3,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR dnk_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,D3OS3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,STAY_TIME + .word ANI_DAMAGE,D_HIPTOSS + + WL 3,D3FD3E+FR2 + .word ANI_XFLIP + .word ANI_OFFSET,20,0,0 ;x,y,z + WL 3,D3SA3A+FR9 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 3,D3SA3A+FR3 + WL 3,D3SA3A+FR4 + WL 3,D3SA3A+FR5 + WL 3,D3SA3A+FR7 + WL 3,D3SA3A+FR8 + WL 3,D3SA3A+FR9 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 3,D3SA3A+FR9 +#done + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + + +#************ +* +* #4 PUSH + + SUBR dnk_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_SETFLAG,M_PUSH + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,D4PS3A+FR1 + WL 3,D4PS3A+FR2 + WL 3,D4PS3A+FR3 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ATTACK_ON, AMODE_PUSH,37,88,63,9 ;mode,x,y,w,h + WL 3,D4PS3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-70000h,#no_hit ;range,vel,addr + WL 15,D4PS3A+FR4 +#no_hit + WL 3,D4PS3A+FR4 + + WL ANI_IFSTATUS,#hit +;If missed on push, hold a little longer + WL 5,D4PS3A+FR4 +#hit + WL 3,D4PS3A+FR5 + WL 3,D4PS3A+FR6 + WL 3,D4PS3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR dnk_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,D2AH2A+FR1 + WL 15,D2AH2A+FR2 + WL 4,D2AH2A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR dnk_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,D3AH3B+FR1 + WL 3,D3AH3B+FR2 + WL 14,D3AH3B+FR3 + WL 2,D3AH3B+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR dnk_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,D3AH3B+FR1 + WL 3,D3AH3B+FR2 + WL 14,D3AH3B+FR3 + WL 2,D3AH3B+FR5 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR dnk_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + + WL 3,D4LB4A+FR2 + WL 3,D4LB4A+FR3 + WL 3,D4LB4A+FR4 + WL ANI_CODE,DO_DOINK_PUSH + WL 3,D4LB4A+FR5 + WL 3,D4LB4B+FR1 + WL 3,D4LB4B+FR2 + WL 3,D4LB4B+FR3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_4_losebal_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + + WL 3,D4LB4A+FR2 + WL 3,D4LB4A+FR3 + WL 3,D4LB4A+FR4 + WL 3,D4LB4A+FR5 + WL 3,D4LB4B+FR1 + WL 3,D4LB4B+FR2 + WL 3,D4LB4B+FR3 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,dnk_dizzy_anim + +#***************************************************************************** +* +* #2 BIG BOOT +* + + SUBR dnk_2_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_BIGBOOT,9 + WL 3,D3SK3X+FR1 + WL 3,D3SK3X+FR2 + WL 3,D3SK3X+FR3 + WL ANI_CODE,#clrcnt + + .word ANI_ATTACK_ON, AMODE_BIGBOOT,57,66,32,46 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,15,D3SK3X+FR4 ;2 +#lp0 + .word ANI_STARTATTACK,AT_BIGBOOT,5 + WL 2,D3SK3X+FR4 + WL ANI_CODE,#holdup + WL ANI_IFSTATUS,#lp0 + + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFNOTSTATUS,#missed1 + .word ANI_DRAW_NAME,27 +#missed1 + WL 3,D3SK3X+FR5 + WL 3,D3SK3X+FR6 + WL 3,D3SK3X+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 BIG BOOT + + SUBR dnk_4_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_BIGBOOT,9 + WL 3,D3SK3X+FR1 + WL 3,D3SK3X+FR2 + WL 3,D3SK3X+FR3 + WL ANI_CODE,#clrcnt + + .word ANI_ATTACK_ON, AMODE_BIGBOOT,34,78,46,25 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,15,D3SK3X+FR4 ;2 +#lp + WL 2,D3SK3X+FR4 + + WL ANI_CODE,#holdup + WL ANI_IFSTATUS,#lp + +; .word ANI_WAITRELEASE,PLAYER_KICK_BIT + + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFNOTSTATUS,#missed2 + .word ANI_DRAW_NAME,27 +#missed2 + + WL 3,D3SK3X+FR5 + WL 3,D3SK3X+FR6 + WL 3,D3SK3X+FR7 + WL 3,D3SK3X+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#clrcnt +;We are re-using BUT_COUNT in the player process + clr a0 + move a0,*a13(BUT_COUNT) + + rets + +#holdup + move *a13(BUT_COUNT),a0 + inc a0 + move a0,*a13(BUT_COUNT) + +;Max time to hold up in air (*2 ticks) + cmpi 25,a0 + jrgt #button_up + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_SKICK_BIT,a0 ;still down? + jrz #button_up + +;Still holding... + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#button_up + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* DIZZY + + SUBR dnk_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + WL 6,D4SW4C+FR1 + WL 6,D4SW4C+FR2 + WL 6,D4SW4C+FR3 + WL 6,D4SW4C+FR4 + WL 6,D4SW4C+FR5 + WL 6,D4SW4C+FR6 + WL 6,D4SW4C+FR5 + WL 6,D4SW4C+FR4 + WL 6,D4SW4C+FR3 + WL 6,D4SW4C+FR2 + WL ANI_GOTO,#loop + + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR dnk_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,D1TT5Z+FR2 + WL 3,D1TT5Z+FR3 + + SUBR dnk_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,999,80h,50h,90000h,TGT_CHEST|TGT_GROUND,0,57,-15 + WL ANI_CODE,hit_nearest + + WL 3,D4PN5A+FR1 + WL 3,D4PN5A+FR2 + .word ANI_OFFSET,0,57,0 ;x,y,z + WL 21,D4PN5A+FR3 ;19 + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,D4PN5L+FR4,10 ;image, zoff (priority) + WL 3,D4PN5A+FR4 + + WL ANI_CODE,grnd_hit + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + + WL ANI_CODE,DO_CROWD_CHEER + + .word ANI_BOUNCE,4 + WLW ANI_ATTCHIMAGE,D4PN5L+FR5,10 ;image, zoff (priority) + WL 4,D4PN5A+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + WL 4,D4PN5A+FR5 + WL ANI_CODE,win_announce + WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + + WL 40,D4PN5A+FR6 + + .word ANI_LOOP + .word ANI_DETACH + +;Do another ground hit on opponent + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 4,D5GD4A+FR1 + WL 4,D5GD4A+FR2 + .word ANI_OFFSET,-10,0,0 ;x,y,z + WL 6,D3GU4A+FR7 + WL 5,D3GU4A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 5,D3GU4A+FR9 + +; WL 8+10,D5WN5B+FR1 + WL 8-2,D5WN5B+FR2 + WL 8-2,D5WN5B+FR3 + WL 8-2,D5WN5B+FR4 + WL 8-2,D5WN5B+FR5 + +#loop WL 6,D5WN5Z+FR1 + WL 6,D5WN5Z+FR2 + WL 6,D5WN5Z+FR3 + WL 6,D5WN5B+FR5 + +; WL 6,D5WN5Z+FR4 + WL ANI_GOTO,#loop + + +****************************************************************************** +* RAISE ARM IN VICTORY FROM A STANCE + + SUBR dnk_2_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + + WL 3,D1TT5Z+FR2 + WL 3,D1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR dnk_4_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + +#cont WL 6,D5WN5B+FR2 + WL 6,D5WN5B+FR3 + WL 6,D5WN5B+FR4 + WL 6,D5WN5B+FR5 + +#loop2 WL 6,D5WN5Z+FR1 + WL 6,D5WN5Z+FR2 + WL 6,D5WN5Z+FR3 + WL 6,D5WN5B+FR5 + + WL ANI_CODE,check_raisearm_bit + WL ANI_IFSTATUS,#wakeup + WL ANI_GOTO,#loop2 + +#wakeup ;pinned guy did a buckoff - snap out of it. + .word ANI_SET_RPTCOUNT,-10 ;set count to rnd from 0 to 10 +#loop3 WL 6,D5WN5Z+FR1 + WL 6,D5WN5Z+FR2 + WL 6,D5WN5Z+FR3 + WL 6,D5WN5B+FR5 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACEDOWN + .word ANI_END + + + SUBR win_announce + + PUSH a10 + move a13,a10 + CREATE ANNC_PID,announce_rnd_winner + .if DEBUG + move a13,*a0(PDATA),L ;#CREATOR (pdata) + movi $,a14 + move a14,*a0(PDATA+20h),L ;#ORIGIN + .endif + CALLA KILL_PIN_HIM + PULL a10 + + rets + + +*********************** +* FOR USE ONLY IN PINS! + + SUBR grnd_hit + + ;use CLOSEST instead of WHOIHIT, since you don't actually attack + ; during the pins. + + ;Un! DO use WHOIHIT, as this is set in all the pin_anims before this + ; function is called. + + PUSH a13 + move *a13(WHOIHIT),a13,L + +; move *a13(CLOSEST_NUM),a13 +; X32 a13 +; addi process_ptrs,a13 +; move *a13,a13,L + + move *a13(WRESTLERNUM),a0 + move a0,a1 + sll 5,a0 + addi #hit_t,a0 + move *a0,a0,L + calla change_anim1a + PULL a13 + + ;align on target's z, unless we're taker + move *a13(WRESTLERNUM),a0 + subk 2,a0 + jrz #z + move *a13(WHOIHIT),a0,L + + ;set pinner Z to victim Z+1, then set victim's Z to + move *a0(OBJ_ZPOS),a14,L + addi [1,0],a14 + move a14,*a13(OBJ_ZPOS),L + subi [2,0],a14 + move a14,*a0(OBJ_ZPOS),L +#z rets + +#hit_t + .long hrt_hitonground_anim ;0 Bret Hart + .long rzr_hitonground_anim ;1 Razor Ramon + .long und_hitonground_anim ;2 Undertaker + .long yok_hitonground_anim ;3 Yokozuna + .long shn_hitonground_anim ;4 Shawn Michaels + .long bam_hitonground_anim ;5 Bam Bam + .long dnk_hitonground_anim ;6 Doink + .long 0 ;7 spare + .long lex_hitonground_anim ;8 Lex Luger + +#***************************************************************************** +* +* GET BUCKED OFF A PINNED OPPONENT + + SUBR dnk_buckoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,0,0 + WL 4,D4PN5A+FR6 + WL 1,D4PN5A+FR3 + WL ANI_CODE,set_buckoff_vels + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,D4PN5A+FR4 + WL 10,D4PN5A+FR5 + + ;now stand up + WL 3,D5GD4A+FR1 + WL 3,D5GD4A+FR2 + WL 3,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +********** +* Jump toward the center. + + SUBR set_buckoff_vels + + movi 20000h,a0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrle #xok + neg a0 +#xok move a0,*a13(OBJ_XVEL),L + + movi 40000h,a0 + move *a13(OBJ_ZPOSINT),a14 + cmpi RING_Z_CENTER,a14 + jrle #zok + neg a0 +#zok move a0,*a13(OBJ_ZVEL),L + + movi 50000h,a0 + move a0,*a13(OBJ_YVEL),L + + rets + +#***************************************************************************** +* +* #3 CLIMB THROUGH ROPES + + SUBR dnk_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,3000h,AM_FACE_REL + .word ANI_OFFSET,13,0,0 + WL 3,D3CR3D+FR1 + .word ANI_BENDROPE,0 + WL 2,D3CR3D+FR2 + WL 3,D3CR3D+FR3 + WL 2,D3CR3D+FR4 + WL 3,D3CR3D+FR5 + + .word ANI_BENDROPE,2 + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + WL 2,D3CR3D+FR6 + .word ANI_BENDROPE,2 + WL 3,D3CR3D+FR7 + WL 2,D3CR3D+FR8 + .word ANI_BENDROPE,3 + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + WL 3,D3CR3D+FR9 + WL 2,D3CR3D+FR10 + .word ANI_ZEROVELS + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,43,-3,0 + WL 3,D3CR3D+FR11 + + ;now jump off... + WL 3,D4JD4A+FR1 ;D4FM4A+FR1 + WL 3,D4JD4A+FR2 + + .word ANI_SET_IDIOT + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,D4JD4A+FR4 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 2,D4JD4A+FR6 + WL 2,D4JD4A+FR7 + WL 4,D4JD4A+FR8 + WL 2,D4JD4A+FR10 + WL 2,D4JD4A+FR11 + + .word ANI_FACEDOWN + .word ANI_CLEAR_CLIMB + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#***************************************************************************** + + SUBR dnk_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in + WL 3,D4JD4A+FR1 + WL 3,D4JD4A+FR2 + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,14h,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 3,D4JD4A+FR4 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_ZEROVELS + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + WL 3,D4JD4A+FR6 + WL 2,D4JD4A+FR7 + WL 2,D4JD4A+FR11 + + WLW ANI_SET_XVEL,3000h,AM_FACE_REL + + ;climb through + WL 3,D3CR3D+FR1 + .word ANI_BENDROPE,0 + WL 2,D3CR3D+FR2 + WL 3,D3CR3D+FR3 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + WL 2,D3CR3D+FR4 + WL 3,D3CR3D+FR5 + + .word ANI_BENDROPE,2 + + WL 2,D3CR3D+FR6 + .word ANI_BENDROPE,2 + WL 3,D3CR3D+FR7 + WL 2,D3CR3D+FR8 + .word ANI_BENDROPE,3 + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + WL 3,D3CR3D+FR9 + WL 2,D3CR3D+FR10 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,43,-3,0 + WL 3,D3CR3D+FR11 + .word ANI_ZEROVELS + + .word ANI_OFFSET,-5,0,0 +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-50,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+50,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets + + SUBR SET_DIR_FACE + + ;this is now used for both climbins and climbouts. If we're outside, + ; use an identical version, but with the a0's switched. + move *a13(INRING),a14 + jrz #method2 + + MOVI 10,A0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft1 + MOVI 6,A0 +#onlft1 + MOVE A0,*A13(NEW_FACING_DIR) + RETS + +#method2 + MOVI 6,A0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft2 + MOVI 10,A0 +#onlft2 + MOVE A0,*A13(NEW_FACING_DIR) + RETS + + +#***************************************************************************** + + SUBR dnk_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL ANI_IFSTATUS,#dir4 + +;Facing #2, spin first! + WL 3,D1TT5Z+FR2 + WL 3,D1TT5Z+FR3 +#dir4 + WL 3,D3GU4A+FR9 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR7 + WL 3,D3GU4A+FR6 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR2 + + ;roll over once + WLW ANI_SET_ZVEL,70000h,AM_ABS + + WL 3,D3SA3A+FR9 + WL 3,D3RL1B+FR2 + WL 3,D3RL1B+FR3 + + WL 3,D3RL1B+FR4 + WL 3,D3RL1B+FR5 + WL 3,D3RL1B+FR6 + WL 3,D3RL1B+FR7 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + + .word ANI_SET_IDIOT + ;climb through + WL 3,D2CR1A+FR3 + WL 3,D2CR1A+FR2 + WL 3,D2CR1A+FR1 + .word ANI_OFFSET,0,-37h,0 ;x,y,z + WL 1,D2ST2B+FR3 + + .word ANI_CLEAR_CLIMB + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + + +#***************************************************************************** + + SUBR dnk_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .word ANI_OFFSET,0,37h,-60 + WL 3,D2CR1A+FR1 + WL 3,D2CR1A+FR2 + WL 3,D2CR1A+FR3 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,D3RL1B+FR7 + WL 3,D3RL1B+FR6 + WL 3,D3RL1B+FR5 + WL 3,D3RL1B+FR4 + WL 3,D3RL1B+FR3 + WL 3,D3RL1B+FR2 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,D3GU4A+FR2 + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + WL 3,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR dnk_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,D2GD2A+FR9 + WL 3,D2GD2A+FR7 + WL 3,D2GD2A+FR6 + WL 3,D2GD2A+FR4 + WL ANI_CODE,#set_zvel3 + WL ANI_GOTO,#cont + +#dir4 + WL 3,D3GU4A+FR9 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR7 + WL 3,D3GU4A+FR6 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR2 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,D3RL1B+FR11 +#cont + WL 3,D3RL1B+FR10 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,D3RL1B+FR9 + WL 3,D3RL1B+FR8 + WL 3,D3RL1B+FR7 + + .word ANI_SET_IDIOT + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,D2CR1A+FR8 + WL 3,D2CR1A+FR9 + WL 3,D2CR1A+FR10 + WL 3,D2CR1A+FR11 + + .word ANI_ZERO_XZVELS + + .word ANI_CLEAR_CLIMB + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -6c000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#set_zvel3 + movi -7c000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** +;Zombies use this to roll through the top without standing back up. + + SUBR dnk_rollthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + + ;roll over once + WLW ANI_SET_ZVEL,-6C000h,AM_ABS + WL 3,D3RL1B+FR11 + WL 3,D3RL1B+FR10 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,D3RL1B+FR9 + WL 3,D3RL1B+FR8 + WL 3,D3RL1B+FR7 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,D2CR1A+FR8 + WL 3,D2CR1A+FR9 + WL 3,D2CR1A+FR10 + WL 3,D2CR1A+FR11 + + .word ANI_ZERO_XZVELS + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR dnk_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,D2CR1A+FR11 + WL 3,D2CR1A+FR10 + WL 3,D2CR1A+FR9 + WL 3,D2CR1A+FR8 + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,D3RL1B+FR8 + WL 3,D3RL1B+FR9 + WL 3,D3RL1B+FR10 + WL 3,D3RL1B+FR11 + + WL 3,D3SA3A+FR9 + + .word ANI_ZEROVELS + + ;get up + WL 3,D3GU4A+FR2 + WL 3,D3GU4A+FR3 + WL 3,D3GU4A+FR4 + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 + WL 3,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB +; .word ANI_OFFSET,0,0,100 + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#set_zvel2 + movi 42000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR dnk_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*10/255 ;inv multiply (0-255 -> 0-10) + + .long D3SA3A+FR9 ;0 + .long D3RL1B+FR2 ;1 + .long D3RL1B+FR3 ;2 + .long D3RL1B+FR4 ;3 + .long D3RL1B+FR5 ;4 + .long D3RL1B+FR6 ;5 + .long D3RL1B+FR7 ;6 + .long D3RL1B+FR8 ;7 + .long D3RL1B+FR9 ;8 + .long D3RL1B+FR10 ;9 + .long D3RL1B+FR11 ;10 + .long 0,0,0,0,0,0 + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/DNKSEQ3.ASM b/DNKSEQ3.ASM new file mode 100755 index 0000000..df12e9e --- /dev/null +++ b/DNKSEQ3.ASM @@ -0,0 +1,3423 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/2/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "dnkseq3.asm" + .title "Krusty the Clown animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "display.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" + + .include "fontsimg.glo" + .include "miscimg.glo" + .include "damage.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref PCNT,MOVE_NAME_ANNC,DO_WAIL,DO_NONO,DO_DOINK_SLAM + .ref FIND_AND_KILL_ENDLESS,CALL_MISS_YOKO,triple_sound + .ref RNDRNG0,HIT_THE_MAT,SMALL_BOUNCE,CALL_MISSES,CALL_SETUP + .ref CALL_THROWN_OUT,CALL_SPECIAL_MOVE,get_leap,shake_all_ropes + .ref dnk_dizzy_anim,dnk_2_faceup_getup_anim,no_debris,reduce_bog + .ref dnk_4_faceup_getup_anim,dnk_hitonground_anim + .ref dnk_faceup_getup_anim,dnk_hitonground_xflip_anim + .ref dnk_4_combo_butt_anim,DO_COMBO_MESS,dnk_4_box_anim + .ref dnk_4_knee_fall_anim,dnk_flying_kick_anim,NUM_OPPS + .ref MAYBE_SHOCKING,target_whoihit,PSTATUS,royal_rumble + .ref punch_dtime1,change_anim_anim,dnk_combo_box_anim + .ref dnk_fall_back_anim,dnk_combo_knee_fall_anim + .ref pal_getf,lex_break_face2_anim,dnk_combo_flying_kick_anim + .ref set_xdrift,CALL_OTHER_AVERAGE,get_health + .ref lex_break_neck2_anim,ckzpos,dnk_stand4_anim + .ref yok_3_head_held_brk_anim,lex_break_face_anim + .ref free_toss_check,setup_freetoss,process_ptrs + .ref dnk_2_hiptoss_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +***************************************************************************** +* +* JOY BUZZER + + SUBR dnk_2_buzz_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,2000h + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_PUPPET,20 + WL 2,D1TT5Z+FR2 + WL 2,D1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR dnk_4_buzz_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,2000h + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + +;Comes in from head held mode! + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_DETACH + +#cont + .word ANI_STARTATTACK,AT_PUPPET,20 + WL 3,D4BZ3A+FR1 + + .word ANI_ZEROVELS + .WORD ANI_SOUND,020FH ;PUT IT THERE + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_ATTACK_ON, AMODE_PUPPET,23,62,59,29 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,35,D4BZ3A+FR2 + .word ANI_ATTACK_OFF +#cont4 + WL ANI_IFSTATUS,#gothim + + + WL 35,D4BZ3A+FR2 + + + WL ANI_GOTO,#cont2 + +#gothim +; WL ANI_CODE,merge_xvels + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,D4BZ3A+FR3,#puppet_tbl,0 + + ;SMART-TARGET, so we buzz the right guy! + WL ANI_CODE,target_whoihit + + .word ANI_ATTACK_ON, AMODE_BUZZ,53,62,50,29 ;mode,x,y,w,h + WL 1,D4BZ3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_CODE,start_sparks + + WL 1,D4BZ3A+FR3 + WL 3,D4BZ3A+FR4 + WL 3,D4BZ3A+FR5 + WL 3,D4BZ3A+FR6 + WL 3,D4BZ3A+FR3 + WL 3,D4BZ3A+FR4 + + .word ANI_DRAW_NAME,28 + +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + + WL 3,D4BZ3A+FR5 + .word ANI_ZERO_XZVELS + WL 3,D4BZ3A+FR6 + WL 3,D4BZ3A+FR3 + WL 3,D4BZ3A+FR4 + WL 3,D4BZ3A+FR5 + WL 3,D4BZ3A+FR6 + WL 3,D4BZ3A+FR3 + WL 3,D4BZ3A+FR4 + WL 3,D4BZ3A+FR5 + WL 3,D4BZ3A+FR6 + WL 3,D4BZ3A+FR3 + WL 3,D4BZ3A+FR4 + WL 3,D4BZ3A+FR5 + WL 3,D4BZ3A+FR6 + +;Stay in this buzz sequence longer if player keeps whacking on his punch button! + + WWL ANI_SLIDE_BACK,30h,-70000h,#cont2 + + WL ANI_SET_YVEL,30000h + WL 3,D4BZ3A+FR2 +#cont2 + WL 6,D4BZ3A+FR2 + WL 3,D4BZ3A+FR1 + + WL ANI_CODE,#zero_butn + + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR dnk_2_buzz2_anim +;Running or pushing toward buzzer + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,2000h + .word ANI_SETSPEED,100h + +; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_LEAPING,9 + WL 3,D1TT5Z+FR2 + WL 3,D1TT5Z+FR3 + WL ANI_GOTO,#cont3 + + SUBR dnk_4_buzz2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,2000h + .word ANI_SETSPEED,100h + +; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_NORMAL + +#cont3 + .word ANI_STARTATTACK,AT_LEAPING,3 + WL 3,D4BZ3A+FR1 + + WL ANI_CODE,get_leap + WL ANI_IFNOTSTATUS,#normal + + .word ANI_ZEROVELS + .word ANI_CLR_STATUS + WL ANI_GOTO,#contz + +#normal + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 9,999,38h,80,90000h,TGT_HEAD,80,85,0 +; WL ANI_SET_YVEL,30000h + +#contz + .WORD ANI_SOUND,020FH ;PUT IT THERE + .word ANI_ATTACK_ON, AMODE_PUPPET,23,62,59,29 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,20,D4BZ3A+FR2 + .word ANI_ATTACK_OFF + WLW ANI_SET_ZVEL,0h,AM_ABS + WL ANI_GOTO,#cont4 + + SUBR dnk_combo_buzz2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,2000h + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_LEAPING,3 + WL 3,D4BZ3A+FR1 + + WL ANI_CODE,get_leap + WL ANI_IFNOTSTATUS,#normalc + + .word ANI_ZEROVELS + .word ANI_CLR_STATUS + WL ANI_GOTO,#contzc + +#normalc + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 9,999,38h,80,90000h,TGT_HEAD,80,85,0 + +#contzc + .word ANI_ATTACK_ON, AMODE_PUPPET,23,62,59,29 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,20,D4BZ3A+FR2 + .word ANI_ATTACK_OFF + WLW ANI_SET_ZVEL,0h,AM_ABS + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#cont4 + +#zero_butn +;Force player to start holding his button down starting at the end +;of the current buzz sequence. + + move *a13(PLYRNUM),a0 + X16 a0 + addi punch_dtime1,a0 + clr a14 + move a14,*a0 + rets + + +start_sparks + move @no_debris,a14 + move @reduce_bog,a1 + or a1,a14 + jrnz #rets + move a13,a10 + CREATE0 hand_sparks +#rets + CREATE0 MAYBE_SHOCKING + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H4BZ4A + LWWW H4BZ4A+FR1,80,28,1 +#Razor + .ref R4BZ4A + LWWW R4BZ4A+FR1,75,30,1 +#Taker + .ref U4BZ4A + LWWW U4BZ4A+FR1,75,30,1 +#Yokozuna + .ref Y4BZ4A + LWWW Y4BZ4A+FR1,75,26,1 +#Shawn + .ref S4BZ4A + LWWW S4BZ4A+FR1,75,24,1 +#BamBam + .ref B4BZ4A + LWWW B4BZ4A+FR1,75,15,1 +#Doink + LWWW D4BZ4A+FR1,75,30,1 +#Adam + .long 0 +#Lex + .ref L4BZ4A + LWWW L4BZ4A+FR1,75,23,1 + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR dnk_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + +;Put this Doink into the blue doink pal, then replace whatever +;pal he was using at the end! + +;We have to change pals on whatever guy we are showing in order +;to show the blue skeleton. + + WL ANI_CODE,set_position + WL 2,D4SK4A+FR1 + WL 3,D4BZ4A+FR1 + + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + + WL 3,D4BZ4A+FR1 + WL 3,D4SK4A+FR1 + WL 3,D4BZ4A+FR1 + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,D4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL 3,D4BZ4A+FR1 + WL 3,D4SK4A+FR1 + WL 3,D4BZ4A+FR1 + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4BZ4A+FR1 + WL 3,D4SK4A+FR1 + WL ANI_CODE,start_smoke + + .word ANI_DETACH + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,D4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,D4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,D4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,D4ST4E+FR3 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,dnk_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR am_I_dizzy + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move *a13(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jrz #not_dizzy + move *a13(PLYR_DIZZY),a0 + jrz #not_dizzy + ori MODE_STATUS,a1 +#not_dizzy + move a1,*a13(ANIMODE) + rets + + SUBR am_I_dead + + move *a13(PLYRNUM),a1 + calla get_health + jrnz #notdead + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + movi MODE_DEAD,a1 + move a1,*a13(PLYRMODE) + rets +#notdead + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move *a13(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jrnz #not_dead + ori MODE_STATUS,a1 +#not_dead + move a1,*a13(ANIMODE) + rets + + SUBR make_white + movi 0101h,a14 + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#make_black + movi 0b0bh,a14 + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + + SUBR make_norm + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a13(OBJ_CONTROL) + rets + + SUBR set_position + move *a13(WHOHITME),a0,L + move *a0(OBJ_XPOSINT),a1 + move *a13(OBJ_XPOSINT),a2 + cmp a1,a2 + jrlt #lft +#rgt + addi 140,a1 + move *a10(OBJ_XPOSINT),a2 +#lft subi 70,a1 +; move a1,*a13(OBJ_XPOSINT) + move *a0(OBJ_YPOSINT),a1 + addi 12,a1 +; move a1,*a13(OBJ_YPOSINT) + move *a0(OBJ_ZPOSINT),a1 + subi 20,a1 +; move a1,*a13(OBJ_ZPOSINT) + movi DNKBLU_P,a0 + calla pal_getf + move a0,*a13(SKELETON_PAL) + move *a13(OBJ_PAL),a0 + move a0,*a13(MY_PAL) + + rets + + SUBR set_skeleton_pal + move *a13(SKELETON_PAL),a0 + move a0,*a13(OBJ_PAL) + + ;set the TEMP_PAL bit + move *a13(STATUS_FLAGS),a14 + ori M_TEMP_PAL,a14 + move a14,*a13(STATUS_FLAGS) + + rets + + SUBR set_my_pal + move *a13(MY_PAL),a0 + move a0,*a13(OBJ_PAL) + + ;clear TEMP_PAL bit + move *a13(STATUS_FLAGS),a14 + andni M_TEMP_PAL,a14 + move a14,*a13(STATUS_FLAGS) + + rets + + SUBR start_smoke + + move @no_debris,a14 + jrnz #rets + move @reduce_bog,a14 + jrnz #rets + + move a13,a10 + CREATE0 body_smoke + +#rets rets + +#***************************************************************************** + + SUBR dnk_3_pile_driver_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here + + .word ANI_ATTACK_ON, AMODE_PUPPET,32,15,45,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,D4GH3A+FR8 ;D3PP3Z+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;Check to see if I have tried to pile drive Yokozuna! + + .word ANI_SOUND,82h ;Effort grunt + +;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,D3PP3Z+FR1,#puppet_tbl,0 + .word ANI_WAITHITGND + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WWLLW ANI_SUPERSLAVE2,4,D3PP3Z+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,20,D3PP3Z+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,D3PP3Z+FR4,#puppet_tbl,3 + + WL ANI_SET_YVEL,80000h +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,3,D3PP3Z+FR5,#puppet_tbl,4 + .word ANI_OFFSET,0,26,0 ;x,y,z + + WWLLW ANI_SUPERSLAVE2,3,D3PP3Z+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,7,D4HS3B+FR6,#puppet_tbl,7 + +;Mess with the physics! + + WL ANI_SET_YVEL,-20000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +;Maybe do a bounce + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + + WWLLW ANI_SUPERSLAVE2,4,D4HS3B+FR7,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,4,D4HS3B+FR8,#puppet_tbl,9 + + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + WL 18,D4HS3B+FR8 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,30 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + .ref dnk_4_push_anim + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 3,D3PP3Z+FR1 + WL 3,D3PP3Z+FR2 + WL 3,D3PP3Z+FR3 + WL 3,D3PP3Z+FR4 + + WL ANI_SET_YVEL,80000h + + WL 3,D3PP3Z+FR5 + .word ANI_OFFSET,0,26,0 ;x,y,z + + WL 3,D3PP3Z+FR6 + WL 3,D4HS3B+FR6 + WL 7,D4HS3B+FR6 + +; WL ANI_SET_YVEL,-20000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +;Maybe do a bounce + + ;impact + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 4,D4HS3B+FR7 + WL 4,D4HS3B+FR8 + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 18,D4HS3B+FR8 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,30 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#set_opp_xflip + move *a13(ATTACH_PROC),a0,L + + move *a0(OBJ_CONTROL),a14 + xori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +;Check to see if I have tried to pile drive Yokozuna! + + SUBR is_this_yoko + + move *a13(ATTACH_PROC),a0,L + move *a0(WRESTLERNUM),a0 + cmpi 3,a0 + jrnz #ok + +;Yes, this is Yoko! + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets +#ok + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +;For Yoko breaking free +#break + move *a13(ATTACH_PROC),a2,L + movi yok_3_head_held_brk_anim,a0 +;a0 = * animation script +;a2 = * wrestler process + calla change_anim_anim + rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H4AM3A,H3BF3A,H3PP3X + LWWW H4AM3A+FR5,48,-37,0 + LWWW H3BF3A+FR3,32,-34,0 + LWWW H3PP3X+FR1,9,-30,0 + LWWW H3PP3X+FR2,4,9,0 + LWWW H3PP3X+FR3,13,23,0 + LWWW H3PP3X+FR4,36,23,0 + LWWW H3PP3X+FR5,54,44,0 + LWWW H3PP3X+FR6,60,48,0 + LWWW H3PP3X+FR7,63,18,0 + LWWW H3PP3X+FR8,59,8,0 + .long 0 +#Razor + .ref R4AM4B,R3BF3A,R3GP3Z + LWWW R4AM4B+FR5,42,-33,0 + LWWW R3BF3A+FR9,26,-32,0 + LWWW R3GP3Z+FR1,14,-20,0 + LWWW R3GP3Z+FR2,14,-16,0 + LWWW R3GP3Z+FR3,23,6,0 + LWWW R3GP3Z+FR4,54,22,0 + LWWW R3GP3Z+FR5,63,41,0 + LWWW R3GP3Z+FR6,70,43,0 + LWWW R3GP3Z+FR7,66,32,0 + LWWW R3GP3Z+FR8,62,0,0 + .long 0 +#Taker + .ref U4MP4A,U4BF3Z,U3PP3X,U3GP3X + LWWW U4MP4A+FR7,46,-11,0 + LWWW U4BF3Z+FR1,28,-26,0 + LWWW U3PP3X+FR1,15,-22,1 + LWWW U3PP3X+FR2,18,-18,1 + LWWW U3PP3X+FR3,20,-22,1 + LWWW U3PP3X+FR4,36,-8,1 + LWWW U3PP3X+FR5,57,35,1 + LWWW U3PP3X+FR6,65,60,1 + LWWW U3GP3X+FR1,62,8,1 + LWWW U3GP3X+FR2,69,-7,1 + .long 0 +#Yokozuna + .ref Y4AM4A,Y3BF3A,Y3PP3Q,Y3FD3N + LWWW Y4AM4A+FR4,59,-27,0 + LWWW Y3BF3A+FR11,31,-25,0 + LWWW Y3PP3Q+FR1,16,-15,0 + LWWW Y3PP3Q+FR2,13,-17,0 + LWWW Y3PP3Q+FR3,26,-20,0 + LWWW Y3PP3Q+FR4,52,-18,0 + LWWW Y3PP3Q+FR6,50,5,0 + LWWW Y3PP3Q+FR7,52,13,0 + LWWW Y3FD3N+FR2,57,13,0 + LWWW Y3FD3N+FR3,58,22,0 + LWWW Y3FD3N+FR4,63,11,0 + .long 0 +#Shawn + .ref S4BF3A,S3BF3A,S3GP3X,S3OS3X,S3FD3X + LWWW S4BF3A+FR3,25,-24,0 + LWWW S3BF3A+FR5,14,-39,0 + LWWW S3GP3X+FR1,15,-24,0 + LWWW S3GP3X+FR2,12,-19,0 + LWWW S3GP3X+FR3,27,-5,0 + LWWW S3GP3X+FR4,53,23,0 + LWWW S3GP3X+FR5,67,39,0 + LWWW S3OS3X+FR8,71,31,1 + LWWW S3FD3X+FR2,69,23,0 + LWWW S3GP3X+FR6,66,4,0 + .long 0 +#BamBam + .ref B3BF3C,B4AM4A,B3PP3Q,B3FD3C + LWWW B3BF3C+FR5,48,-27,0 + LWWW B4AM4A+FR5,27,-24,0 + LWWW B3PP3Q+FR1,12,-26,0 + LWWW B3PP3Q+FR2,11,-15,0 + LWWW B3PP3Q+FR3,31,3,0 + LWWW B3PP3Q+FR4,57,16,0 + LWWW B3PP3Q+FR5,64,33,0 + LWWW B3PP3Q+FR6,57,40,0 + LWWW B3PP3Q+FR7,60,28,0 + LWWW B3PP3Q+FR7,61,46,0 +; LWWW B3PP3Q+FR7,61,46,0 +; LWWW B3FD3C+FR1,57,13,0 + .long 0 +#Doink + LWWW D3HT3Z+FR1,36,-41,1 + LWWW D3BF3A+FR1,27,-34,0 + LWWW D3PD3Z+FR1,16,-35,1 + LWWW D3PD3Z+FR2,13,-22,1 + LWWW D3PD3Z+FR3,23,0,1 + LWWW D3PD3Z+FR4,39,25,1 + LWWW D3PD3Z+FR5,46,33,1 + LWWW D3PD3Z+FR6,58,23,1 + LWWW D3PD3Z+FR8,58,7,1 + LWWW D3PD3Z+FR9,59,-3,1 + .long 0 +#Adam + .long 0 +#Lex + .ref L4AM4B,L3BF3B,L3GP3Z,L3FH3A,L3FD3B + LWWW L4AM4B+FR6,52,-39,0 + LWWW L3BF3B+FR1,9,-34,0 + LWWW L3GP3Z+FR1,13,-22,0 + LWWW L3GP3Z+FR2,16,-16,0 + LWWW L3GP3Z+FR3,27,-16,0 + LWWW L3GP3Z+FR4,46,-5,0 + LWWW L3GP3Z+FR5,63,13,0 + LWWW L3GP3Z+FR6,67,33,0 + LWWW L3FH3A+FR6,58,20,0 + LWWW L3FD3B+FR1,61,2,0 + .long 0 + +#rollout_tbl + REFLONG hrt_break_neck2_anim,rzr_break_neck2_anim + REFLONG und_break_neck2_anim + REFLONG yok_break_neck2_anim + REFLONG shn_break_neck2_anim,bam_break_neck2_anim + REFLONG dnk_break_neck2_anim + .long 0 + REFLONG lex_break_neck2_anim + + +#***************************************************************************** + SUBR dnk_combo_head_slam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here + + .word ANI_ATTACK_ON, AMODE_PUPPET,32,49,50,21 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,3,D4GH3A+FR8 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + +;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WL ANI_CODE,DO_DOINK_SLAM + WL ANI_SET_YVEL,60000h ;50000h + +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + .word ANI_SET_RPTCOUNT,4 ;2 times + .word ANI_CLR_BUTCOUNT + + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR3,#puppet_tbl,2 +;On the way down! + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR5,#puppet_tbl,3 + .word ANI_OFFSET,0,34,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,4 + .word ANI_WAITHITGND + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 + .word ANI_ZEROVELS + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR7,#puppet_tbl,5 + .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,2,D4HS3B+FR8,#puppet_tbl,6 + +;Maybe do a bounce + + .WORD ANI_INC_COMBO + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_FACESLAM1,RD_FACESLAM1 + WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6 + +#try_rptc + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,3,#norepeatc + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#slam_againc + WL ANI_GOTO,#norepeatc + +#slam_againc + .WORD ANI_INC_COMBO + .word ANI_CLR_BUTCOUNT + +;Slam him again using detach/reattach if button pressed again! + WL ANI_SLAVEANIM,#faced2_tbl + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 2,D4HS3B+FR8 + WL ANI_CODE,DO_DOINK_SLAM + WL ANI_SET_YVEL,50000h + WL 2,D4HS3B+FR7 + WL 13,D4HS3B+FR6 + +;Reattach me to who I'm slamming + WL ANI_CODE,#reattach + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR7,#puppet_tbl,5 +; .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6 + +;Maybe do a bounce + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_FACESLAM2,RD_FACESLAM2 + WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6 + WL ANI_GOTO,#try_rptc + +#norepeatc + WL ANI_SLAVEANIM,#faced_tbl + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 18,D4HS3B+FR8 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,30 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + WL 6,D4HS3B+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +******************************************************************************* + + SUBR dnk_3_head_slam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here + + .word ANI_ATTACK_ON, AMODE_PUPPET,32,49,50,21 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,3,D4GH3A+FR8 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WL ANI_CODE,DO_DOINK_SLAM + WL ANI_SET_YVEL,60000h ;50000h + +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + + .word ANI_SET_RPTCOUNT,4 ;2 times + .word ANI_CLR_BUTCOUNT + + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR3,#puppet_tbl,2 +;On the way down! + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR5,#puppet_tbl,3 + .word ANI_OFFSET,0,34,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,4 + .word ANI_WAITHITGND + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 + .word ANI_ZEROVELS + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR7,#puppet_tbl,5 +; .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,2,D4HS3B+FR8,#puppet_tbl,6 + +;Maybe do a bounce + +;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_FACESLAM1,RD_FACESLAM1 + WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6 + +#try_rpt + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,2,#norepeat + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#slam_again + WL ANI_GOTO,#norepeat + +#slam_again + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 + .word ANI_CLR_BUTCOUNT + +;Slam him again using detach/reattach if button pressed again! + WL ANI_SLAVEANIM,#faced2_tbl + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 2,D4HS3B+FR8 + WL ANI_CODE,DO_DOINK_SLAM + WL ANI_SET_YVEL,50000h + WL 2,D4HS3B+FR7 + WL 13,D4HS3B+FR6 + +;Reattach me to who I'm slamming + WL ANI_CODE,#reattach + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR7,#puppet_tbl,5 +; .word ANI_SOUND,33h ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6 + +;Maybe do a bounce + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_FACESLAM2,RD_FACESLAM2 + WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6 + WL ANI_GOTO,#try_rpt + +#norepeat + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_DRAW_NAME,20 + + WL ANI_SLAVEANIM,#faced_tbl + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 18,D4HS3B+FR8 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + + WL 3,D3GU4A+FR5 + WL 3,D3GU4A+FR6 +;Check for a flip here + WL 1,D3GU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,D3GU4A+FR7 + WL 3,D3GU4A+FR8 + WL 3,D3GU4A+FR9 + + .word ANI_SAFE_TIME,30 + + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss3 + .word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9 + WL 1,D3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss3 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,dnk_4_push_anim +#no_freetoss3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 6,D4HS3B+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#reattach + move *a13(WHOIHIT),a0,L + move a0,*a13(ATTACH_PROC),L + move a13,*a0(ATTACH_PROC),L + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + .ref H3MS3Z,H3MS3X + LWWW H3MS3Z+FR1,36,-5,0 + LWWW H3MS3Z+FR2,39,0,0 + LWWW H3MS3Z+FR3,51,-1,0 + LWWW H3MS3Z+FR4,58,-4,0 + LWWW H3MS3Z+FR5,62,-6,0 + LWWW H3MS3Z+FR6,57,-11,0 + LWWW H3MS3X+FR5,71,-24,0 + .long 0 +#Razor + .ref R3MS3Z,R3MS3Q + LWWW R3MS3Z+FR1,48,-6,0 + LWWW R3MS3Z+FR2,46,5,0 + LWWW R3MS3Z+FR3,53,-2,0 + LWWW R3MS3Z+FR4,65,1,0 + LWWW R3MS3Z+FR5,71,-4,0 + LWWW R3MS3Z+FR6,73,-28,0 + LWWW R3MS3Q+FR1,76,-11,0 + .long 0 +#Taker + .ref U3MS3Z,U3CF3Q + LWWW U3MS3Z+FR1,37,9,0 + LWWW U3MS3Z+FR2,25,17,0 + LWWW U3MS3Z+FR3,28,0,0 + LWWW U3MS3Z+FR4,44,-1,0 + LWWW U3MS3Z+FR5,53,4,0 + LWWW U3MS3Z+FR6,55,-14,0 + LWWW U3CF3Q+FR1,61,-26,0 + .long 0 +#Yokozuna + .ref Y3MS3Z,Y3KF3B + LWWW Y3MS3Z+FR1,54,-8,0 + LWWW Y3MS3Z+FR2,53,12,0 + LWWW Y3MS3Z+FR3,53,10,0 + LWWW Y3MS3Z+FR4,59,6,0 + LWWW Y3MS3Z+FR5,61,-1,0 + LWWW Y3MS3Z+FR6,62,-27,0 + LWWW Y3KF3B+FR1,66,-2,0 + .long 0 +#Shawn + .ref S3MS3Z,S3CF3Z + LWWW S3MS3Z+FR1,31,-10,0 + LWWW S3MS3Z+FR2,29,3,0 + LWWW S3MS3Z+FR3,39,7,0 + LWWW S3MS3Z+FR4,55,5,0 + LWWW S3MS3Z+FR5,61,3,0 + LWWW S3MS3Z+FR6,74,-39,0 + LWWW S3CF3Z+FR1,82,-23,0 + .long 0 +#BamBam + .ref B3MS3Z,B3RL1A + LWWW B3MS3Z+FR1,47,2,0 + LWWW B3MS3Z+FR2,49,-4,0 + LWWW B3MS3Z+FR3,52,-2,0 + LWWW B3MS3Z+FR4,65,7,0 + LWWW B3MS3Z+FR5,70,21,0 + LWWW B3MS3Z+FR6,72,3,0 + LWWW B3RL1A+FR7,73,-15,0 + .long 0 +#Doink + LWWW D3GS3X+FR1,52,-15,0 + LWWW D3GS3X+FR3,45,2,0 + LWWW D3GS3X+FR4,51,-2,0 + LWWW D3GS3X+FR5,61,-4,0 + LWWW D3GS3X+FR7,68,-4,0 + LWWW D3GS3X+FR8,67,-39,0 + LWWW D3GS3X+FR9,75,-15,0 + .long 0 +#Adam + .long 0 +#Lex + .ref L3MS3Z,L3TF3X + LWWW L3MS3Z+FR1,55,-3,0 + LWWW L3MS3Z+FR2,44,4,0 + LWWW L3MS3Z+FR3,46,1,0 + LWWW L3MS3Z+FR4,57,-4,0 + LWWW L3MS3Z+FR5,60,1,0 + LWWW L3MS3Z+FR6,64,-26,0 + LWWW L3TF3X+FR1,60,-19,0 + .long 0 + + +#faced2_tbl + REFLONG hrt_break_face2_anim,rzr_break_face2_anim + REFLONG und_break_face2_anim + REFLONG yok_break_face2_anim + REFLONG shn_break_face2_anim,bam_break_face2_anim + REFLONG dnk_break_face2_anim + .long 0 + REFLONG lex_break_face2_anim + +#faced_tbl + REFLONG hrt_break_face_anim,rzr_break_face_anim + REFLONG und_break_face_anim + REFLONG yok_break_face_anim + REFLONG shn_break_face_anim,bam_break_face_anim + REFLONG dnk_break_face_anim + .long 0 + REFLONG lex_break_face_anim + + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR dnk_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL 1,D3GS3X+FR9 + WL ANI_SET_YVEL,80000h + WL 3,D3GS3X+FR9 + WL 5,D3GS3X+FR10 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL 3,D3GS3X+FR9 + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + + + SUBR dnk_break_face3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL 3,D3GS3X+FR4 + WL ANI_SET_YVEL,078000h + WL 100,D3GS3X+FR4 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + + +* Head slams into mat +;From head slam + + SUBR dnk_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 1,D3GS3X+FR8 + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,40000h + WL 2,D3GS3X+FR8 + WL 5,D3GS3X+FR9 + WL 5,D3GS3X+FR10 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 4,D3GS3X+FR8 + WL 4,D3GS3X+FR9 + WL 4,D3GS3X+FR10 + WL 4,D3GS3X+FR8 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 1,D3GS3X+FR8 ;Face down + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + +#***************************************************************************** + +; .bss #opp_xvel,32 + + SUBR dnk_3_fake_hold_anim +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 2,D4GH3A+FR1 + WL 2,D4GH3A+FR2 + WL 2,D4GH3A+FR3 + WL 7,D4GH3A+FR4 + WL ANI_GOTO,#missed + + SUBR dnk_3_head_hold2_anim +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 2,D4GH3A+FR1 + WL 2,D4GH3A+FR2 + WL 2,D4GH3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUPPET_HDGRAB,32,60,62,45 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,7,D4GH3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + WL ANI_GOTO,#gothim + + SUBR dnk_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + .word ANI_STARTATTACK,AT_PUPPET,7 + + WL 2,D4GH3A+FR1 + WL 2,D4GH3A+FR2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 6,999,65,45,90000h,TGT_HEAD,60,105,0 ;88 + LEAPATOPP 9,999,40,45,90000h,TGT_HEAD,60,105,0 ;88 + + WL 3,D4GH3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUPPET,32,60,62,45 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,5,D4GH3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#gothim +;got him + .word ANI_SETWORD,USR_VAR2,0 + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,head_grab_time + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,D4GH3A+FR4,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,D4GH3A+FR4,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,4,D4GH3A+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,D4GH3A+FR7,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,D4GH3A+FR8,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,D4GH3A+FR8 + +; .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + + WL 3,D4GH3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,D4GH3A+FR3 + WL 3,D4GH3A+FR2 + WL 3,D4GH3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_ZERO_XZVELS + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,D4GH3A+FR4 + WL 3,D4GH3A+FR3 + WL 3,D4GH3A+FR2 + WL 3,D4GH3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR head_grab_time + + move @PCNT,a14,L ;use 32-bit PCNT! + move a14,*a13(LAST_HEADHOLD),L + calla CALL_SETUP + ;fall through + + SUBR clear_opp_counts +;Zero opponents buttons for later counting + clr a14 + move *a13(ATTACH_PROC),a0,L + move a14,*a0(PUNCHB_COUNT) + move a14,*a0(BLOCKB_COUNT) + move a14,*a0(SPUNCHB_COUNT) + move a14,*a0(KICKB_COUNT) + move a14,*a0(SKICKB_COUNT) + + rets + +;;new xvel is (attacker xvel + defender xvel)/4 +; SUBR merge_xvels +; +; move @#opp_xvel,a0,L +; move *a13(OBJ_XVEL),a1,L +; add a1,a0 +;; sra 2,a0 +; move a0,*a13(OBJ_XVEL),L +;#rets +; rets + +;save opponent's x-velocity +; SUBR store_opp_xvel +; move *a13(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(OBJ_XVEL),a0,L +; move a0,@#opp_xvel,L +; rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4AH3A+FR1,72,17,0 + LWWW H3HB3A+FR3,66,5,0 + LWWW H3HB3A+FR2,56,-6,0 + LWWW H3BF3A+FR1,48,-35,0 + .long 0 +#Razor + LWWW R4AH4C+FR3,70,16,0 + LWWW R3HB3A+FR3,67,3,0 + LWWW R3HB3A+FR2,63,-17,0 + LWWW R3BF3A+FR1,53,-37,0 + .long 0 +#Taker + LWWW U4AH3A+FR2,65,26,0 + LWWW U4BF3A+FR2,60,17,0 + LWWW U4BF3A+FR3,30,-3,0 + LWWW U4BF3Z+FR5,52,-16,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR2,80,7,0 + LWWW Y4AM4A+FR1,79,6,0 + LWWW Y4AM4A+FR2,69,-5,0 + LWWW Y3BF3A+FR1,55,-25,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,73,6,0 + LWWW S4AH3D+FR1,66,10,0 + LWWW S4BF3A+FR2,62,-9,0 + LWWW S3BF3A+FR1,37,-36,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,68,11,0 + LWWW B4BF3A+FR1,74,15,0 + LWWW B3HB3A+FR2,62,-20,0 + LWWW B3BF3C+FR5,54,-29,0 + .long 0 +#Doink + LWWW D3AH3B+FR1,60,13,0 + LWWW D3AK3A+FR3,59,16,0 + LWWW D3AK3A+FR2,64,-5,0 + LWWW D3BF3A+FR2,51,-35,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,68,9,0 + LWWW L3BF3A+FR1,74,11,1 + LWWW L3BF3A+FR2,65,-10,1 + LWWW L3BF3B+FR5,49,-33,0 + .long 0 + +#headheld_tbl + REFLONG hrt_3_head_held_anim + REFLONG rzr_3_head_held_anim + REFLONG und_3_head_held_anim + REFLONG yok_3_head_held_anim + REFLONG shn_3_head_held_anim + REFLONG bam_3_head_held_anim + REFLONG dnk_3_head_held_anim + .long 0 + REFLONG lex_3_head_held_anim + +#***************************************************************************** + + SUBR dnk_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + +; WL 4,D3BF3Z+FR1 +; WL 4,D3BF3Z+FR2 + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,D3BF3A+FR2 + WL 4,D3BF3A+FR3 + WL 4,D3BF3A+FR4 + WL 4,D3BF3A+FR5 + WL 4,D3BF3A+FR6 + WL 4,D3BF3A+FR7 + WL 4,D3BF3A+FR8 + WL 4,D3BF3A+FR1 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR dnk_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,D3AK3A+FR2 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,D2AH2A+FR1 + WL 4,D2AH2A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,D2AH2A+FR3 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 2,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR dnk_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,D3AK3A+FR2 + WL 3,D1TT5Z+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* KNEE TO HEAD HELD OPPONENT + + SUBR dnk_3_knee_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_KNEE,9 + WL 2,D3SK3X+FR1 + WL 2,D3SK3X+FR2 + WL 2,D3SK3X+FR3 + + .word ANI_ATTACK_ON, AMODE_KNEE,20,62,68,16 + WL 2,D3SK3X+FR4 + .word ANI_ATTACK_OFF + WL 17,D3SK3X+FR4 + + WL 3,D3SK3X+FR5 + WL 3,D3SK3X+FR6 + WL 3,D3SK3X+FR7 + + .word ANI_FACEUP +; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR dnk_3_knees_to_head_anim + +;Need to do a move which kicks guys in the ass! + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SET_RPTCOUNT,3 ;2 times + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_GOTO,#skp +#rpt + .word ANI_STARTATTACK,AT_KNEE,10 + WL 3,D4KH3A+FR3 +#skp + WL ANI_SET_YVEL,30000h + .word ANI_CLR_BUTCOUNT + + WL 2,D4KM3A+FR2 + WL 2,D4KM3A+FR3 + WL 3,D4KM3A+FR4 + + .word ANI_ATTACK_ON, AMODE_HEADKNEES,20,42,68,36 + WL 4,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + + .word ANI_CLR_BUTCOUNT + + WL 2,D4KM3A+FR4 + WL 2,D4KM3A+FR3 + WL ANI_SET_YVEL,40000h + WL 2,D4KM3A+FR2 + WL 2,D4KM3A+FR3 + WL 2,D4KM3A+FR4 + + .word ANI_ATTACK_ON, AMODE_HEADKNEES,20,42,68,36 + WL 4,D4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WWWL ANI_IF_BUTCOUNT_GE,SPUNCHB_COUNT,1,#do_pile + +#exit +#missed + .word ANI_DETACH + .word ANI_OFFSET,0,0,-5 ;x,y,z + WL 2,D4KM3A+FR6 + WL 2,D4KM3A+FR7 + WL 2,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 2,D4KM3A+FR10 + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#do_pile + WL 2,D4KM3A+FR6 + WL 2,D4KM3A+FR7 + WL 2,D4KM3A+FR8 + WL 2,D4KM3A+FR9 + WL 2,D4KM3A+FR10 + + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,dnk_3_pile_driver_anim +; .word ANI_END + + +#***************************************************************************** +* +* UPPERCUT TO HEAD HELD OPPONENT + + SUBR dnk_uppercut_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_KNEE,16 + WL 2,D4GP3C+FR2 + WL 2,D4GP3C+FR3 + WL 2,D4GP3C+FR4 + WL 2,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_KNEE,44,57,32,37 ;mode,x,y,w,h + WL 10,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL 3 ,D4GP3C+FR7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* UPPERCUT TO IN CLOSE OPPONENT + + SUBR dnk_4_uppercut_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 1,D4GP3C+FR2 + WL 1,D4GP3C+FR3 + WL 2,D4GP3C+FR4 + WL 2,D4GP3C+FR5 +; .WORD ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_UPRCUT,44,57,32,37 ;mode,x,y,w,h + WL 2,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;Got him +;Hit, spray some explosions + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,400,1,10,50,0 ;%chance, tbl index, x,y,z off + .word ANI_DETACH + WL ANI_CODE,CALL_OTHER_AVERAGE + .WORD ANI_SOUND,43H + + WL ANI_CODE,#set_zvel + .word ANI_SHAKER,35 +; WL ANI_CODE,HIT_THE_MAT + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL 10,D4GP3C+FR6 +#no_hit2 + WL 15,D4GP3C+FR6 + WL 4,D4GP3C+FR7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#set_zvel + move *a13(WHOIHIT),a0,L + move *a0(OBJ_ZVEL),a14,L + jrnz #skip + movi 10000h,a14 + move a14,*a0(OBJ_ZVEL),L +#skip rets + +#missedb + WL 12,D4GP3C+FR6 +#missed + WL 3,D4GP3C+FR6 + WL 3,D4GP3C+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;FIX!!! Make cooler... +#***************************************************************************** +* +* UPPERCUT TO HEAD HELD OPPONENT + + SUBR dnk_combo_uppercut_to_head_anim + + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + .word ANI_STARTATTACK,AT_KNEE,9 + WL 2,D4GP3C+FR2 + WL 3,D4GP3C+FR3 + + WL 2,D4GP3C+FR4 + WL 2,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON, AMODE_KNEE,44,37,32,57 ;mode,x,y,w,h + WL 1,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + WL ANI_CODE,SET_OPTIMAL_POSITION + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels + .word ANI_STARTATTACK,AT_KNEE,12 + WL 3,D4GP3C+FR6 + WL 3 ,D4GP3C+FR7 + + .word ANI_CLR_BUTCOUNT + + WL 2,D4GP3C+FR2 + WL 1,D4GP3C+FR3 + + WL 2,D4GP3C+FR4 + WL 1,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_KNEE,44,37,32,57 ;mode,x,y,w,h + WL 1,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels + + .word ANI_STARTATTACK,AT_KNEE,8 + WL 1,D4GP3C+FR6 + WL 2 ,D4GP3C+FR7 + + WL 1,D4GP3C+FR2 + WL 2,D4GP3C+FR3 + + WL 1,D4GP3C+FR4 + WL 1,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_KNEE,44,37,32,57 ;mode,x,y,w,h + WL 1,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels + .word ANI_STARTATTACK,AT_KNEE,8 + WL 1,D4GP3C+FR6 + WL 2 ,D4GP3C+FR7 + + WL 1,D4GP3C+FR2 + WL 2,D4GP3C+FR3 + + WL 1,D4GP3C+FR4 + WL 1,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_KNEE,44,37,32,57 ;mode,x,y,w,h + WL 1,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#miss + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels + WLW ANI_SET_XVEL,80000h,AM_FACE_REL + WL 1,D4GP3C+FR6 + WL 2 ,D4GP3C+FR7 + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,dnk_combo_box_anim +#NEXT_CHECK_2 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK + WL ANI_CHANGEANIM,dnk_combo_knee_fall_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#miss + WL ANI_CHANGEANIM,dnk_4_combo_butt_anim + +#miss + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +SET_OPTIMAL_POSITION + MOVE *A13(WHOIHIT),A0,L + MOVE *A13(OBJ_XPOS),A2,L + MOVI [70,0],A1 + MOVE *A13(FACING_DIR),A3 + BTST MOVE_LEFT_BIT,A3 + JRZ NO_NEED_TO_NEG_XDIR + NEG A1 +NO_NEED_TO_NEG_XDIR + ADD A1,A2 + MOVE A2,*A0(OBJ_XPOS),L + RETS + + + SUBR dnk_uppercuts_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + + .word ANI_SETWORD,USR_VAR2,0 + + .word ANI_CLR_BUTCOUNT + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times + WL 3,D4GP3C+FR2 + WL 3,D4GP3C+FR3 + WL ANI_GOTO,#skp +#rpt + .word ANI_CLR_BUTCOUNT + + WL 2,D4GP3C+FR8 + WL 2,D4GP3C+FR9 + WL 2,D4GP3C+FR3 +#skp + WL 2,D4GP3C+FR4 + WL 2,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_HEADKNEES,44,57,32,37 ;mode,x,y,w,h + WL 3,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,250,1,10,50,0 ;%chance, tbl index, x,y,z off +; .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + +;Completed multiple uppercuts, allow flings, etc. +; .word ANI_SET_ATTACH +; .word ANI_SETOPP_PLYRMODE,MODE_NORMAL +; .word ANI_DETACH + + .word ANI_SETWORD,USR_VAR2,1 + .word ANI_CLR_BUTCOUNT + + WL 2,D4GP3C+FR8 + WL 2,D4GP3C+FR9 + WL 2,D4GP3C+FR3 + WL 2,D4GP3C+FR4 + WL 2,D4GP3C+FR5 + .WORD ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_HEADKNEES,44,57,32,37 ;mode,x,y,w,h + WL 3,D4GP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_CODE,#go_high + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit + + WL 3,D4GP3C+FR7 + + WL ANI_CHANGEANIM,dnk_flying_kick_anim +; .word ANI_END + +#exit +#missed + .word ANI_OFFSET,0,0,-5 ;x,y,z + WL 3,D4GP3C+FR7 + .word ANI_DETACH + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#go_high +;Got rid of this because attach_proc is a zero after a hit +; move *a13(ATTACH_PROC),a0,L +; move *a0(WRESTLERNUM),A14 +; cmpi 3,a14 ;Yoko +; jrz #x +; movi 50000h,a14 +; move a14,*a0(OBJ_YVEL),L + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + + move *a14(WRESTLERNUM),a0 + cmpi 3,a0 ;Yoko too fat + jrz #x + + movi 50000h,a0 ;Go higher for last hit! + move a0,*a14(OBJ_YVEL),L +#x rets + + +#chk_count + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + move *a13(BUT_COUNT),a14 + jrz #fail + ori MODE_STATUS,a0 +#fail + move a0,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* #2 SLAP + + + SUBR dnk_2_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_SPINKIK,30 + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + WL 2,D2BS3A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0dh,999,4ah-5,50,90000h,TGT_HEAD,96,105,-30 + + WL 3,D2BS3A+FR2 + WL 07h,D2BS3A+FR3 + WL 3,D2BS3A+FR4 + + .word ANI_ATTACK_ON, AMODE_BACKHAND,75,81,36,28 ;mode,x,y,w,h + WL 3,D2BS3A+FR5 + WL 3,D2BS3A+FR6 + + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,40000h + WL 10,D2BS3A+FR6 +#no_hit + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,D2BS3A+FR6 + + + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none + WL 15,D2BS3A+FR6 +#none + + + WL 3,D2BS3A+FR8 + WL 3,D2BS3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#* +* #4 SLAP + + SUBR dnk_4_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_SPINKIK,30 + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + WL 2,D4BS3A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0dh,999,4ah-5,50,90000h,TGT_HEAD,96,105,30 + + WL 3,D4BS3A+FR2 + WL 07h,D4BS3A+FR3 + WL 3,D4BS3A+FR4 + + .word ANI_ATTACK_ON, AMODE_BACKHAND,75,81,36,28 ;mode,x,y,w,h + WL 3,D4BS3A+FR5 + WL 3,D4BS3A+FR6 + + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + + WL ANI_SET_YVEL,40000h + WL 10,D4BS3A+FR6 +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,D4BS3A+FR6 + + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none + WL 15,D4BS3A+FR6 +#none + + WL 3,D4BS3A+FR8 + WL 3,D4BS3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR spunch_delay + + move @royal_rumble,a0 + jrnz #ok + move @PSTATUS,a0 + subk 3,a0 + jrz #cont + move @NUM_OPPS,a0 + subk 1,a0 + jrnz #ok +#cont + move *a13(LAST_SPUNCH),a14,L + move @PCNT,a0,L ;use 32-bit PCNT! + move a0,*a13(LAST_SPUNCH),L + sub a14,a0 + cmpi 2*60,a0 + jrge #ok + +;This blocked fling attempt is too close (in terms of time) to most recent grab + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#ok move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* EAR SLAP + + + SUBR dnk_2_earslap_anim + SUBR dnk_4_earslap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,4 ;3 times + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_LEAPING,14 + WL 2,D3ES3A+FR1 + + LEAPATOPP 0dh,999,58h,80,90000h,TGT_HEAD,106,105,-30 + + WL 3,D3ES3A+FR2 + WL 5,D3ES3A+FR3 + WL 3,D3ES3A+FR4 + WL 3,D3ES3A+FR5 + + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h + .word ANI_SOUND,43h + .word ANI_SHAKER,22 + WL 3,D3ES3A+FR6 + + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFBLOCKED,#contz + WL ANI_IFSTATUS,#gothim + +#cont + WL 10,D3ES3A+FR6 + WL ANI_GOTO,#no_hit2 +#contz + WL ANI_CODE,CALL_SPECIAL_MOVE + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#no_hitz +#gothim + .word ANI_DRAW_NAME,22 + .word ANI_DAMAGEOPP,D_EARSLAP1,RD_EARSLAP1 + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,4,120,100,0 ;%chance, tbl index, x,y,z off +#no_hitz + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#fail + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_earslap +#fail + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit3 + + WL ANI_SET_YVEL,40000h + WL 10,D3ES3A+FR6 +#no_hit3 + WL ANI_CODE,CALL_MISSES + WL 8,D3ES3A+FR6 + WL 3,D3ES3A+FR5 + WL 3,D3ES3A+FR4 + WL 3,D3ES3A+FR3 + WL 3,D3ES3A+FR2 + WL 3,D3ES3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#dnk_quick_earslap + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_EARSLAP1,14 + WL 2,D3ES3A+FR5 + WL 2,D3ES3A+FR4 + WL 2,D3ES3A+FR3 + WL 2,D3ES3A+FR2 + WL 2,D3ES3A+FR3 + WL 2,D3ES3A+FR4 + WL 2,D3ES3A+FR5 + + .word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h + .word ANI_SHAKER,22 + WL 3,D3ES3A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFBLOCKED,#cont + + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#fail2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_earslap +#fail2 + +; .word ANI_ATTACK_ON, AMODE_BACKHAND,90,74,40,42 ;mode,x,y,w,h + .word ANI_ATTACK_ON, AMODE_HDBUTT,70,74,60,42 ;mode,x,y,w,h + + .word ANI_SHAKER,22 + WL 3,D3ES3A+FR6 + .word ANI_ATTACK_OFF + + WL ANI_CODE,#set_opp_y + +;Stay in this buzz sequence longer if player keeps whacking on his punch button! + +; WL ANI_SLAVEANIM,#drift_tbl +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP +; +; .word ANI_DETACH + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hitx + + WL ANI_SET_YVEL,40000h + WL 10,D3ES3A+FR6 +#no_hitx + WL 15-8,D3ES3A+FR6 + +#no_hit2 + WL 8,D3ES3A+FR6 + WL 3,D3ES3A+FR5 + WL 3,D3ES3A+FR4 + WL 3,D3ES3A+FR3 + WL 3,D3ES3A+FR2 + WL 3,D3ES3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#set_opp_y + move *a13(WHOIHIT),a0,L + movi [4,0],a14 + move a14,*a0(OBJ_YVEL),L + rets + + SUBR dnk_4_combo_earslap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SET_RPTCOUNT,4 ;2 times + +; .word ANI_STARTATTACK,AT_EARSLAP1,17 + + WL 3,D3ES3A+FR1 + + LEAPATOPP 0dh,999,50h,80,90000h,TGT_HEAD,106,105,-30 + + WL 3,D3ES3A+FR2 + + WL 5,D3ES3A+FR3 + WL 3,D3ES3A+FR4 + WL 3,D3ES3A+FR5 + + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h + .word ANI_SOUND,43h + .word ANI_SHAKER,22 + WL 12,D3ES3A+FR6 + + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#gothimc + WL 12,D3ES3A+FR6 + WL ANI_GOTO,#no_hit2c + +#gothimc + .WORD ANI_INC_COMBO + .word ANI_DAMAGEOPP,D_EARSLAP2,RD_EARSLAP2 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_CLR_BUTCOUNT + +#dnk_quick_combo_earslap +; .word ANI_STARTATTACK,AT_EARSLAP1,10 + WL 1,D3ES3A+FR5 + WL 2,D3ES3A+FR4 + WL 1,D3ES3A+FR3 + WL 2,D3ES3A+FR2 + WL 1,D3ES3A+FR3 + WL 2,D3ES3A+FR4 + WL 1,D3ES3A+FR5 + + .word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h + .word ANI_SHAKER,22 + WL 3,D3ES3A+FR6 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit2c + .WORD ANI_INC_COMBO + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_combo_earslap + + WL 3,D3ES3A+FR6 + WL 3,D3ES3A+FR5 + WL 3,D3ES3A+FR4 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + + .word ANI_IMMOBILIZE,30 + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WL ANI_CHANGEANIM,dnk_combo_buzz2_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHEK2 + + WL 3,D3ES3A+FR3 + WL 3,D3ES3A+FR2 + WL 3,D3ES3A+FR1 + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WL ANI_CHANGEANIM,dnk_combo_flying_kick_anim +#NEXT_CHEK2 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#missed + + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + + WL 3,D3ES3A+FR3 + WL 3,D3ES3A+FR2 + WL 3,D3ES3A+FR1 + + WL ANI_CHANGEANIM,dnk_combo_head_slam_anim + +#missed + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#no_hit2c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 8,D3ES3A+FR6 + WL 3,D3ES3A+FR5 + WL 3,D3ES3A+FR4 + WL 3,D3ES3A+FR3 + WL 3,D3ES3A+FR2 + WL 3,D3ES3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#******************************* +* Smoke trail (Process) +* A10=*wrestler proc + + SUBR body_smoke + + clr a11 +#lp CREATE0 smokepuff + SLEEPK 1 + inc a11 + cmpi 17,a11 + jrlt #lp + + DIE + + +#******************************* +* Smoke trail puff (Process) +* A10=*wrestler proc + + SUBRP smokepuff + + move *a10(OBJ_ZPOSINT),a3 + movk 3,a0 + calla RNDRNG0 + subk 2,a0 + add a0,a3 ;-2 to 1 + addk 16,a3 + ori 1000h,a3 + + movk 3,a0 + calla RNDRNG0 + sll 5,a0 ;*32 + addi smoke_t,a0 + move *a0,a9,L + + movi [1,8000h],a6 + movi [-2,0],a7 + + move a11,a14 + sll 4,a14 + addi #x_tbl,a14 + move *a14,a1 + + move *a10(OBJ_XPOSINT),a0 + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a6 + neg a1 +#no_flip + add a1,a0 + sll 16,a0 ;X + + move a11,a14 + sll 4,a14 + addi #y_tbl,a14 + move *a14,a14 + + movi Y_SCALE_MULTIPLIER,a2 + move *a10(OBJ_ZPOSINT),a1 + mpyu a2,a1 + move *a10(OBJ_YPOSINT),a2 + sub a14,a2 + addi 0h,a2 + sll 16,a2 + sub a2,a1 + + movi CLDB1ORNG,a2 + movi DMAWNZ|M_3D|M_NOCOLL,a4 + movi CLSDEAD,a5 + + calla BEGINOBJ + + SLEEPK 3 + + jauc FRQDELDIE + +#x_tbl .word -14,-3,10,25,30,31,30,39,26,-3,17,32,53,54,41,32,45 +#y_tbl .word -14,-33,-51,-59,-39,-20,-2,-67,-75,-76,-84,-77,-57,-81 + .word -86,-98,-108 + + .def smoke_t +smoke_t + .long cldbw_l,cldblg_l,cldbgry_l,cldblg2_l + +cldbw_l + LW CLDB2,3 + LWL CLDB3,NEWPALET|3,ORNGPAL + LW CLDB4,2 + LWL CLD5,NEWPALET|2,WHTPAL + LW CLD6,2 + LW CLD7,2 + LW CLD8,2 + LW CLD9,2 + LWL0 CLD10,2 +cldblg_l + LW CLDB2,2 + LWL CLDB3,NEWPALET|3,ORNGPAL + LW CLDB4,2 + LWL CLD5,NEWPALET|2,LGRYPAL + LW CLD6,2 + LW CLD7,2 + LW CLD8,2 + LW CLD9,2 + LWL0 CLD10,2 +cldbgry_l + LW CLDB2,3 + LWL CLDB3,NEWPALET|2,ORNGPAL + LW CLDB4,2 + LWL CLD5,NEWPALET|2,GREYPAL + LW CLD6,2 + LW CLD7,2 + LW CLD8,2 + LW CLD9,2 + LWL0 CLD10,2 +cldblg2_l + LW CLDB2,2 + LWL CLDB3,NEWPALET|2,ORNGPAL + LWL CLDB4,NEWPALET|2,LGRYPAL + LW CLD5,2 + LW CLD6,2 + LW CLD7,2 + LW CLD8,2 + LW CLD9,2 + LWL0 CLD10,2 + +#******************************* +* Start sparks in AMODE +* A10=*wrestler proc + + SUBRP hand_sparks + + movi 11,a11 ;13 +#lp CREATE0 one_spark + CREATE0 one_spark + SLEEPK 3 + dsj a11,#lp + DIE + +GRAV equ 04000h ;9000h ;a000h ;6000h + +#******************************** +* Spark from hand buzzer (Process) +* A10=*wrestler proc + + SUBR one_spark + + movk >a,a0 + calla RNDRNG0 + subk 5,a0 + sll 14,a0 ;XVel + move a0,a6 + + movk >3,a0 + calla RNDRNG0 + addk 1,a0 + sll 16,a0 ;YVel + neg a0 + move a0,a7 + + move *a10(OBJ_ZPOSINT),a3 + movk 3,a0 + calla RNDRNG0 + subk 2,a0 + add a0,a3 ;-2 to 1 + addk 16,a3 + ori 1000h,a3 + + movi 40h,a1 + move *a10(OBJ_XPOSINT),a0 + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a1 +#no_flip + add a1,a0 + sll 16,a0 + + movi Y_SCALE_MULTIPLIER,a14 + move *a10(OBJ_ZPOSINT),a1 + mpyu a14,a1 + move *a10(OBJ_YPOSINT),a14 + addi 52h,a14 + sll 16,a14 + sub a14,a1 + + movi SPARK1,a2 + movi DMAWNZ|M_3D|M_NOCOLL,a4 + movi CLSDEAD,a5 + calla BEGINOBJ + + movk >f,a0 + calla RNDRNG0 + subk 7,a0 + sll 14,a0 + move a0,*a8(OZVEL),L + + movi spark_l,a9 + + movk 3,a11 + jruc #strt + +#lp dsj a10,#noani +#strt + move a11,a10 + move *a9,a0,L + jrz #die ;noani + addk 32,a9 + + move *a8(OCTRL),a1 + calla obj_aniq +#noani + SLEEPK 3 + move *a8(OYVEL),a2,L + addi GRAV*2,a2 + move a2,*a8(OYVEL),L + jruc #lp ;Going up? + +#die + clr a0 + move a0,*a8(OXVEL),L + move a0,*a8(OYVEL),L + move a0,*a8(OZVEL),L + + jauc DELOBJDIE + + +spark_l + .long SPARK2 + .long SPARK2 + .long SPARK2 + .long SPARK2 + .long SPARK2 + .long SPARK3 + .long SPARK3 + .long SPARK3 + .long 0 + +#******************************* +* Start sparks in AMODE +* A10=*wrestler proc + +clobber_sparks + + movk 8,a11 ;13 +#lp CREATE0 clb_spark + CREATE0 clb_spark + SLEEPK 1 + dsj a11,#lp + DIE + +GRAV equ 04000h ;9000h ;a000h ;6000h + +#******************************** +* Spark from hand buzzer (Process) +* A10=*wrestler proc + +clb_spark + + movk 30,a0 + calla RNDRNG0 + subk 15,a0 + sll 14,a0 ;XVel + move a0,a6 + move *a10(OBJ_XVEL),a0,L + sra 1,a0 + add a0,a6 + + movk >5,a0 + calla RNDRNG0 + addk 2,a0 + sll 16,a0 ;YVel + neg a0 + move a0,a7 + + move *a10(OBJ_ZPOSINT),a3 + movk 3,a0 + calla RNDRNG0 + subk 2,a0 + add a0,a3 ;-2 to 1 + addk 16,a3 + ori 1000h,a3 + + movi 0h,a1 + move *a10(OBJ_XPOSINT),a0 + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a1 +#no_flip + add a1,a0 + sll 16,a0 + + movi Y_SCALE_MULTIPLIER,a14 + move *a10(OBJ_ZPOSINT),a1 + mpyu a14,a1 + move *a10(OBJ_YPOSINT),a14 + addi 52h,a14 + sll 16,a14 + sub a14,a1 + + movi SPARK1,a2 + movi DMAWNZ|M_3D|M_NOCOLL,a4 + movi CLSDEAD,a5 + calla BEGINOBJ + + movk >f,a0 + calla RNDRNG0 + subk 7,a0 + sll 14,a0 + move a0,*a8(OZVEL),L + + movi spark_l,a9 + + movk 3,a11 + jruc #strt + +#lp dsj a10,#noani +#strt + move a11,a10 + move *a9,a0,L + jrz #die ;noani + addk 32,a9 + + move *a8(OCTRL),a1 + calla obj_aniq +#noani + SLEEPK 3 + move *a8(OYVEL),a2,L + addi GRAV*4,a2 + move a2,*a8(OYVEL),L + jruc #lp ;Going up? + +#die + clr a0 + move a0,*a8(OXVEL),L + move a0,*a8(OYVEL),L + move a0,*a8(OZVEL),L + + jauc DELOBJDIE + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR dnk_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + +;Maybe put this z float in other neck2_anim seqs. +;FIX! + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 15,D3FD3E+FR4 + WL 3,D3FD3E+FR5 + WL 3,D3FD3E+FR6 + WL 3,D3FD3E+FR7 + WL 3,D3FD3E+FR8 + .word ANI_WAITHITGND + WL 4,D3FD3E+FR9 + +;hit. stay. + WL ANI_CODE,SMALL_BOUNCE +;Fix!!!??? +;Based on flip, this offset is fucked up! + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_OFFSET,-20,-3,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 20,D3RC3A+FR9 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,dnk_faceup_getup_anim +; .word ANI_END + + SUBR dnk_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + + WL 15,D4POGO+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_XFLIP + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + WL 3,D3FD3E+FR6 + WL 3,D3FD3E+FR7 + WL 3,D3FD3E+FR8 + .word ANI_WAITHITGND + WL 4,D3FD3E+FR9 + +;hit. stay. + WL ANI_CODE,SMALL_BOUNCE +;Fix!!!??? +;Based on flip, this offset is fucked up! + .word ANI_OFFSET,-20,-3,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,D3RC3A+FR9 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,dnk_faceup_getup_anim +; .word ANI_END + + SUBR dnk_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_ZEROVELS + + WWWL ANI_IFROPE,RC_FRONT,100,#fall_back + + ;plenty o' room. roll over + WL 4,D3FD3E+FR4 + .word ANI_OFFSET,-7,0,0 + WL 4,D3FD3E+FR5 + .word ANI_OFFSET,-5,0,0 + WL 4,D3FD3E+FR6 + .word ANI_OFFSET,-2,0,0 + WL 4,D3FD3E+FR7 + .word ANI_OFFSET,-3,0,0 + WL 4,D3FD3E+FR8 + .word ANI_OFFSET,-22,0,0 +; WL 4,D3FD3E+FR9 + .word ANI_OFFSET,-25,0,0 + + ;impact + WL ANI_CODE,SMALL_BOUNCE + WL 4,D3GS3X+FR8 ;10 ;Face down + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim +; .word ANI_END + +#fall_back + ;too close to the ropes. fall back + WL 7,D3FD3E+FR3 + .word ANI_OFFSET,-12,0,0 + WL 4,D3FD3E+FR2 + .word ANI_OFFSET,-25,0,0 + WL 4,D3UC3A+FR9 + .word ANI_OFFSET,-1,0,0 + WL 4,D3UC3A+FR10 + WL 4,D3UC3A+FR11 + .word ANI_OFFSET,-3,0,0 + + .word ANI_XFLIP + WL 4,D3SA3A+FR9 + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim +; .word ANI_END + + +#****************************************************************************** + + SUBR dnk_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + + WL 2,D1TT5Z+FR2 ;2.5 + WL 2,D1TT5Z+FR3 ;3.5 + + SUBR dnk_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + .word ANI_STARTATTACK,AT_PUPPET,8 + WL 3,D3PP3A+FR1 + + LEAPATOPP 8,999,80,80,40000h,TGT_HEAD,46,6,-2 + WL 4,D3PP3A+FR2 + WL 4,D3PP3A+FR3 + .word ANI_ZERO_XZVELS + +;FIX!! on other guys! +;PUPPET2 MODE! +;If no getup time for other guy, do a miss! + .word ANI_ATTACK_ON, AMODE_PUPPET2,21,1,43,23 ;mode,x,y,w,h + WL 4,D3PP3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,clear_opp_counts + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,98h ;neck break (5-7 ticks late) + WL ANI_CODE,CALL_SETUP + + WWLLW ANI_SUPERSLAVE2,3,D3PP3A+FR5,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,D3PP3A+FR6,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,D3PP3A+FR7,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,D3PP3A+FR8,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,D3PP3A+FR9,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,D4GH3A+FR8,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + .word ANI_SETWORD,USR_VAR2,0 + + WL 1,D4GH3A+FR8 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,D3PP3A+FR3 + WL 4,D3PP3A+FR2 + WL 4,D3PP3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR ck_getup + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + move *a13(WHOIHIT),a0,L + + move *a0(GETUP_TIME),a0 + jrz #misshim + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + +#misshim + rets + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,37,-31,0 + LWWW H3GU4A+FR2,49,-33,0 + LWWW H3GU4A+FR3,63,-42,0 + LWWW H3DU3A+FR3,58,-39,1 + LWWW H3DU3A+FR4,60,-29,1 + LWWW H3BF3A+FR1,53,-35,0 + .long 0 +#Razor + LWWW R3GU2A+FR3,41,-22,0 + LWWW R3GU4A+FR3,52,-27,0 + LWWW R3GU4A+FR4,54,-36,0 + LWWW R3GU4A+FR5,59,-42,0 + LWWW R3DU3B+FR2,53,-43,1 + LWWW R3BF3A+FR1,53,-37,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,42,-23,1 + LWWW U3DU3B+FR5,53,-23,1 + LWWW U3DU3B+FR6,59,-29,1 + LWWW U3DU3B+FR8,49,-26,1 + LWWW U3DU3B+FR10,59,-21,1 + LWWW U4BF3Z+FR5,54,-16,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,47,-17,0 + LWWW Y3GU2A+FR2,57,-18,0 + LWWW Y3GU2A+FR4,44,-25,0 + LWWW Y3GU2A+FR7,44,-37,0 + LWWW Y3GU2A+FR11,60,-30,0 + LWWW Y3BF3A+FR1,57,-25,0 + .long 0 +#Shawn + LWWW S3GU2A+FR1,44,-25,0 + LWWW S3GU4A+FR2,51,-25,0 + LWWW S3GU4A+FR4,58,-36,0 + LWWW S3GU4A+FR5,58,-35,0 + LWWW S3GU4A+FR6,59,-30,0 + LWWW S3BF3A+FR1,41,-36,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,49,-21,0 + LWWW B3GU4A+FR4,57,-28,0 + LWWW B3GU4A+FR5,64,-33,0 + LWWW B3GU4A+FR8,60,-25,0 + LWWW B3GU4A+FR9,60,-23,0 + LWWW B3BF3C+FR5,59,-29,0 + .long 0 +#Doink + LWWW D3GU4A+FR2,50,-28,0 + LWWW D3GU4A+FR3,56,-31,0 + LWWW D3GU4A+FR4,57,-43,0 + LWWW D3GU4A+FR5,52,-34,0 + LWWW D3GU4A+FR7,68,-36,0 + LWWW D3BF3A+FR2,55,-35,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GU4A+FR1,50,-26,0 + LWWW L3DU3A+FR4,42,-23,1 + LWWW L3DU3A+FR6,49,-31,1 + LWWW L3DU3A+FR7,55,-29,1 + LWWW L3DU3A+FR9,64,-29,1 + LWWW L3BF3B+FR5,57,-32,0 + .long 0 + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR dnk_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + .word ANI_SET_IDIOT + WWL ANI_SETLONG,OBJ_GRAVITY,0f000h + WL ANI_CODE,DO_WAIL + + WL 8,D3OS3A+FR4 + WL 8,D3OS3A+FR5 +#cont WL 8,D3OS3A+FR6 + .word ANI_OFFSET,0,45,0 + WL 1,D3FD3E+FR2 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + + .word ANI_DAMAGE,D_HIPTOSS + +; .word ANI_SETWORD,DELAY_METER,0 +; .word ANI_GETUP,500 + + WL ANI_CHANGEANIM,dnk_hitonground_xflip_anim + + + SUBR dnk_flyout2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + .word ANI_SET_IDIOT + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_CODE,DO_WAIL + WL ANI_GOTO,#cont + +#****************************************************************************** + + SUBR dnk_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 4,D4CO4A+FR1 + WL 4,D4CO4A+FR2 + WL 4,D4CO4A+FR3 + WL 4,D4CO4A+FR4 + WL 4,D4CO4A+FR5 + WL 4,D4CO4A+FR6 + + WL 4,D4CO4A+FR5 + WL 4,D4CO4A+FR4 + WL 4,D4CO4A+FR3 + WL 4,D4CO4A+FR4 + WL 4,D4CO4A+FR5 + WL 4,D4CO4A+FR6 + + WL 3,D4CO4A+FR5 + WL 3,D4CO4A+FR4 + WL 3,D4CO4A+FR3 + WL 3,D4CO4A+FR2 + WL 3,D4CO4A+FR1 + +; WL ANI_CODE,set_taunt_bit + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,dnk_stand4_anim +; .word ANI_END + + +; SUBR set_taunt_bit +;;Successful taunt achieved! +; +; move *a13(STATUS_FLAGS),a14 +; ori M_DID_TAUNT,a14 +; move a14,*a13(STATUS_FLAGS) +; rets + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR dnk_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,D3BK3Z+FR7 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 25,D3BK3Z+FR7 + + WL 4,D3BK3Z+FR6 +; WL 4,D3UC3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + .word ANI_XFLIP + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 2,D3SA3A+FR2 + WL 3,D3SA3A+FR3 + WL 6,D3SA3A+FR4 + WL 3,D3SA3A+FR5 + + WL 3,D3SA3A+FR7 + WL 2,D3SA3A+FR8 + WL 3,D3SA3A+FR9 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 5,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim +; .word ANI_END + +;#***************************************************************************** +;* +;* CHAIR STUFF +; +; SUBR dnk_pkup_chair_anim +; +; .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +;#lp +; WL 4,D4WA4A+FR1 +; WL 4,D4WA4A+FR2 +; WL 4,D4WA4A+FR3 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,42,-10,1 ;image, x,y,zoff +; WL 4,D4WA4A+FR4 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,42,0,1 ;image, x,y,zoff +; WL 4,D4WA4A+FR5 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR2,48,37,1 ;image, x,y,zoff +; WL 4,D4WA4A+FR6 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,48,90,1 ;image, x,y,zoff +; WL 4,D4WA4A+FR7 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,19,124,1 ;image, x,y,zoff +; WL 4,D4WA4A+FR8 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-5,141,1 ;image, x,y,zoff +; WL 4,D4WA4A+FR10 +; +;; .word ANI_SINGLESTEP +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-31,131,1 ;image, x,y,zoff +; WL 4,D3CS3Z+FR2 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-38,123,1 ;image, x,y,zoff +; WL 4,D3CS3Z+FR3 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR7,9,130,1 ;image, x,y,zoff +; WL 4,D3CS3Z+FR4 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,67,100,1 ;image, x,y,zoff +; WL 4,D3CS3Z+FR5 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,77,46,1 ;image, x,y,zoff +; WL 4,D3CS3Z+FR6 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,83,66,1 ;image, x,y,zoff +; WL 4,D3CS3Z+FR7 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR7,3,140,1 ;image, x,y,zoff +; WL 4,D3CS3Z+FR8 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-25,129,1 ;image, x,y,zoff +; WL 4,D3CS3Z+FR9 +; +;; .word ANI_SINGLESTEP +; WLW ANI_ATTCHIMAGE,0,0 +; +; WL ANI_GOTO,#lp +; +; SUBR CHAIR_SWING +; .long 0 ;0 +; .long CHSWNG01 ;1 +; .long CHSWNG02 ;2 +; .long CHSWNG03 ;3 +; .long CHSWNG04 ;4 +; .long CHSWNG05 ;5 +; .long CHSWNG06 ;6 +; .long CHSWNG07 ;7 +; .long CHSWNG08 ;8 +; .long CHSWNG09 ;9 +; .long CHSWNFL ;10 +; + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/DNKSEQ4.ASM b/DNKSEQ4.ASM new file mode 100755 index 0000000..806ea7b --- /dev/null +++ b/DNKSEQ4.ASM @@ -0,0 +1,220 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 11/28/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "dnkseq4.asm" + .title "Dink animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "doinkimg.h" + .include "damage.equ" + .INCLUDE "SWEAT.EQU" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF DO_SCREAM + .REF HIT_THE_MAT,SMALL_BOUNCE + .REF CALL_MISSES + .ref am_I_dizzy + .ref am_I_dead + .ref ckzpos + .ref start_run_anim + .ref dnk_faceup_getup_anim + .ref dnk_2_faceup_getup_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR dnk_slamnobounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 1,D3SA3A+FR2 + WL 3,D3SA3A+FR2 + WL 4,D3SA3A+FR3 + WL 4,D3SA3A+FR4 + WL 4,D3SA3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,D3SA3A+FR8 + + WL 10,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_2_faceup_getup_anim + + SUBR dnk_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + +; .word ANI_GROUND + + WL 1,D3SA3A+FR2 + .ref ckzpos + WL ANI_CODE,ckzpos + WL ANI_SET_YVEL,040000h + WL 3,D3SA3A+FR2 + WL 4,D3SA3A+FR3 + WL 4,D3SA3A+FR4 + WL 4,D3SA3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,D3SA3A+FR8 + + WL 10,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + + SUBR dnk_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; WL ANI_SET_YVEL,040000h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,D3SA3X+FR2 + WL ANI_CODE,ckzpos + + WL 3,D3SA3X+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + + WL ANI_SET_YVEL,030000h + WL 3,D3SA3A+FR2 + WL 4,D3SA3A+FR3 + WL 4,D3SA3A+FR4 + WL 4,D3SA3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,D3SA3A+FR8 + + WL 10,D3SA3A+FR9 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + +#***************************************************************************** + + SUBR dnk_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,20,47,0 ;x,y,z + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYD_SWEAT,SWEAT_PER,0 + WL 6,D3UC3A+FR4 + WL 6,D3UC3A+FR5 + WL 6,D3UC3A+FR6 + WL 1,D3UC3A+FR7 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,25 + + WL 3,D3FD3E+FR2 + WL 3,D3FD3E+FR3 + WL 3,D3FD3E+FR4 + WL 3,D3FD3E+FR5 + WL 3,D3FD3E+FR6 + WL 3,D3FD3E+FR7 + WL 3,D3FD3E+FR8 + WL 3,D3FD3E+FR9 + + .word ANI_ZERO_XZVELS + + WL ANI_CODE,HIT_THE_MAT + WL 8,D3RL1B+FR6 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,dnk_faceup_getup_anim + +#***************************************************************************** + + SUBR dnk_arm_broken_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-38000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_HIT_REL + + WL ANI_CODE,DO_SCREAM + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,D3AH3B+FR2 + WL 4,D3AH3B+FR3 + WL 4,D3AH3B+FR5 + WL 1,D4ST4E+FR3 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref dnk_fall_back_anim + + WL ANI_CHANGEANIM,dnk_fall_back_anim +; .word ANI_END + +#nodead + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/DOINK.ASM b/DOINK.ASM new file mode 100755 index 0000000..e831c3b --- /dev/null +++ b/DOINK.ASM @@ -0,0 +1,4072 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 9/3/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "doink.asm" + .title "doink specific game code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "jjxm.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" + .include "damage.equ" + + ;temp! - 314 + .include "tmpdebug.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + + .ref BLOCK_WOOSH,get_opp_process,calc_line_x,can_pin + .ref PSTATUS,is_final_match,FINAL_PTR + .ref DO_REVERSAL,DO_REVERSAL_MESS,FIND_AND_KILL_ENDLESS + .ref ADD_IF_SILENT,JUMP_ROPES,CLIMB_ROPES + .ref get_powerk_dtime + + .ref set_getup_time,set_raisearm_bit + .ref get_punch_dtime + .ref get_rope_x,ck_teammate_pin,raisearm_check + .ref inc_getup_time + + .ref change_anim1,change_anim1a + .ref change_anim2,change_anim2a + .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 bounce_off_ropes + .ref climb_turnbuckle + .ref ADD_VOICE,round_award + .ref HALT,clear_combo_meter + .ref mode_choking + .ref master_keep_attached + .ref PCNT,init_reduce_bog + .ref RNDPER,is_8_on_1 + .ref current_round,change_wrestler + .ref p1rounds,p2rounds,hitonground_tbl,arw_bwait + + ;from DCSSOUND.ASM + .ref triple_sound + + ;from WRESTLE.ASM + .ref drone_change_back + .ref read_switches + .ref BONUS_MESS + .ref blocking_off + .ref hyper_speed_on + .ref in_finish_move,royal_rumble + .ref p1rounds,p2rounds + .if NUM_DOINK_FINISHES + .ref dnk_finish1_move + .if NUM_DOINK_FINISHES > 1 + .ref dnk_finish2_move + .endif + .endif + .ref in_finish_move,finish_completed + +;animation sequence + + .ref dnk_3_pile_driver_anim + .ref start_run_anim + + .ref dnk_4_earslap_anim + .ref dnk_2_earslap_anim + .ref dnk_4_slap_anim + .ref dnk_2_slap_anim +; .ref dnk_4_slap2_anim +; .ref dnk_2_slap2_anim + .ref dnk_head_hit_dizzy_anim + .ref dnk_knockdwn_anim + .ref dnk_4_hammer_anim + + .ref wres_slave_anim + .ref dnk_zip_anim + + .ref dnk_2_raise_arm_anim,dnk_4_raise_arm_anim + .ref dnk_stand2_anim,dnk_stand8_anim + .ref dnk_stand4_anim,dnk_stand6_anim + .ref dnk_torso2_anim,dnk_torso8_anim + .ref dnk_torso4_anim,dnk_torso6_anim + + .ref dnk_2_to_4_turn_anim,dnk_8_to_6_turn_anim ;stand + .ref dnk_4_to_2_turn_anim,dnk_6_to_8_turn_anim + .ref dnk_4_to_6_turn_anim,dnk_6_to_4_turn_anim + .ref dnk_2_to_8_turn_anim,dnk_8_to_2_turn_anim + .ref dnk_4_to_8_turn_anim,dnk_6_to_2_turn_anim + .ref dnk_2_to_6_turn_anim,dnk_8_to_4_turn_anim + + .ref dnk_2_to_4_turn2_anim,dnk_8_to_6_turn2_anim ;torso + .ref dnk_4_to_2_turn2_anim,dnk_6_to_8_turn2_anim + .ref dnk_4_to_6_turn2_anim,dnk_6_to_4_turn2_anim + .ref dnk_2_to_8_turn2_anim,dnk_8_to_2_turn2_anim + .ref dnk_4_to_8_turn2_anim,dnk_6_to_2_turn2_anim + .ref dnk_2_to_6_turn2_anim,dnk_8_to_4_turn2_anim + + .ref dnk_walk1_f2_anim,dnk_walk2_f2_anim,dnk_walk4_f2_anim + .ref dnk_walk5_f2_anim,dnk_walk6_f2_anim,dnk_walk8_f2_anim + + .ref dnk_walk1_f4_anim,dnk_walk2_f4_anim,dnk_walk4_f4_anim + .ref dnk_walk5_f4_anim,dnk_walk6_f4_anim,dnk_walk8_f4_anim + + .ref dnk_2_punch_anim,dnk_4_punch_anim + .ref dnk_2_buzz_anim,dnk_4_buzz_anim + .ref dnk_2_buzz2_anim,dnk_4_buzz2_anim + .ref dnk_2_butt_anim,dnk_4_butt_anim + .REF dnk_combo_uppercut_to_head_anim + .ref dnk_4_combo_kick_anim + .REF CHECK_COMBO_GO + + .ref dnk_2_kick_anim,dnk_4_kick_anim + .ref dnk_2_spin_kick_anim,dnk_4_spin_kick_anim + .ref dnk_2_knee_anim,dnk_4_knee_anim + + .ref dnk_2_box_anim,dnk_4_box_anim + + .ref dnk_run_anim,dnk_run2_anim + + .ref dnk_4_blbowdrop_anim + + .ref dnk_2_hair_pickup_anim,dnk_4_hair_pickup_anim + + .ref dnk_2_lbowdrop_anim,dnk_4_lbowdrop_anim + .ref dnk_2_grabfling_anim + .ref dnk_4_grabfling_anim + + .ref dnk_heldoh_anim + + .ref dnk_diveofftb_anim + + .ref dnk_fly_cline_anim + .ref dnk_flying_kick_anim + + .ref dnk_4_head_hit_anim,dnk_head_hit3_anim + .ref dnk_2_head_hit_anim,dnk_head_hit2_anim + .ref dnk_fall_back_anim + .ref dnk_4_losebal_dizzy_anim + + .ref dnk_hitonground_anim + .ref dnk_4_stomp_anim,dnk_2_stomp_anim + .ref dnk_4_bstomp_anim + + .ref dnk_climb_up_anim,dnk_climb_down_anim + .ref dnk_4_block_anim + .ref dnk_2_hiptoss_anim,dnk_4_hiptoss_anim + .ref dnk_2_hiptoss2_anim,dnk_4_hiptoss2_anim + .ref dnk_4_push_anim + .ref dnk_4_bigboot_anim,dnk_2_bigboot_anim + .ref dnk_4_losebal_anim + .ref dnk_dizzy_anim + .ref dnk_2_pin_anim + .ref dnk_4_pin_anim + + .ref dnk_belly_anim + .ref ck_ignore ;Ignore button press? + +; .ref dnk_pkup_chair_anim + + .ref dnk_3_knee_to_head_anim + .ref dnk_3_knees_to_head_anim + .ref dnk_uppercut_to_head_anim + .ref dnk_uppercuts_to_head_anim + .ref dnk_get_buzz_anim + + .ref dnk_3_head_hold2_anim + .ref dnk_3_head_hold_anim + + .ref dnk_2_butts_anim,dnk_4_butts_anim + .ref dnk_3_head_held_stand_anim + .ref dnk_3_head_slam_anim + .ref dnk_4_knee_fall_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +doink_secret_moves + +;These secret moves are triggered only after a move list seq has ended! You +;can't hold on the last button press and have it trigger! + +;Button held down moves need to be first entry + .long #charge_buzz + .long #grab_fling + .long #hip_toss + .long #grab_fling2 + .long #hip_toss2 + .long #earslap + .long #hammer + .long #neck_grab + .long #boxing_pnch +; .long #charge_flying_kick + .long 0 + + +****************************************************************************** +* +* SPECIAL MOVE PROCESSES - Secret moves +* +;a8=process of wrestler + + SUBR dnk_smove_table + .long dnk_charge_flykick + .long dnk_hdhold_slam + .long dnk_hdhold_combo1 + .long dnk_hdhold_pile + .long dnk_hdhold_combo2 + .long dnk_hdhold_buzz +; .long dnk_hdhold_anti_combo + .long dnk_grab_toss_air + .long std_walk_fast + .long std_taunt + .if NUM_DOINK_FINISHES + .long dnk_finish_move1 + .endif + .if NUM_DOINK_FINISHES > 1 + .long dnk_finish_move2 + .endif + .long 0 + + +******************************************************************************* +#charge_buzz + move *a13(BUT_VAL_UP),a0 + btst PLAYER_PUNCH_BIT,a0 + jrz #no_punch + +;FIX!! Give some jumping velocity + +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #no_punch + + move *a13(PLYRNUM),a0 + calla get_punch_dtime + cmpi 100,a0 ;> min? + jrlt #no_punch + + callr #scrt_buzz + setc + rets + +#no_punch + clrc + rets + + +#scrt_buzz + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_HEADHOLD,a0 + jrz #out + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrz #leapbuzz + +;If stick is toward opponent, then do sliding/leaping buzzer + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #norm + +#leapbuzz +;missing noise for a reason ! + WRSND W_DOINK,HDBUTT_T1 + FACE24 dnk,buzz2_anim + calla change_anim1a + rets +#norm +;missing noise for a reason ! + WRSND W_DOINK,HDBUTT_T1 + FACE24 dnk,buzz_anim + calla change_anim1a + rets + +******************************************************************************* +; BITS MASK +#boxing_pnch + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word B_PUNCH, J_ALL + .word 8000h | 60 ;max + .long scrt_glove + +scrt_glove + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + MOVE *A13(COMBO_COUNT),A0 + JRNZ #out + + FACE24 dnk,box_anim + calla change_anim1a + WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 + + rets + +******************************************************************************* +#hammer + .word B_SKICK, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long scrt_hammer + +scrt_hammer + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + + movi dnk_4_hammer_anim,a0 + calla change_anim1a + +;missing noise for a reason ! + WRSND W_DOINK,HDBUTT_T2 + + rets + +******************************************************************************* + +#earslap + .word B_PUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_DOWN_TOWARD, J_REAL_LR + .word J_DOWN, J_REAL_LR + .word 8000h | 50 ;max + .long #scrt_earslap + +#scrt_earslap + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + +;Don't do it when he is dead or held + calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + movi dnk_4_earslap_anim,a0 + calla change_anim1a + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +******************************************************************************* + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + move *a13(LAST_HEADHOLD),a14,L + move @PCNT,a0,L + sub a14,a0 + cmpi 2*60,a0 + jrge #ok2 + +;This head grab is too close (in terms of time) to most recent grab + .ref dnk_3_fake_hold_anim + movi dnk_3_fake_hold_anim,a0 + calla change_anim1a + rets + +#ok2 + WRSND W_DOINK,GRABFLING_T1,PUNCH_T2 + + move *a13(CLOSEST_XDIST),a1 + cmpi 90,a1 + jrgt #std_grab + + movi dnk_3_head_hold2_anim,a0 + calla change_anim1a + rets + +#std_grab + movi dnk_3_head_hold_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#grab_fling2 + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#hip_toss2 + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#scrt_grabfling2 + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrz #yes + cmpi MODE_HEADHELD,a0 + jrz #ck2 + rets + +******************************************************************************* + +#grab_fling +; .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_grabfling + + .word B_SPUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_grabfling + +#scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + FACE24 dnk,hiptoss_anim + calla change_anim1a + + WRSND W_DOINK,HIPTOSS_T1,PUNCH_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + +; move *a13(LAST_FLING_ATTEMPT),a14,L +; move @PCNT,a0,L +; sub a14,a0 +; cmpi 3*60,a0 +; jrge #ok2a +; +; FACE24 dnk,slap_anim +; calla change_anim1a +; +; WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 +; rets +; +;#ok2a +; move @PCNT,a14,L ;use 32-bit PCNT! +; move a14,*a13(LAST_FLING_ATTEMPT),L + + FACE24 dnk,grabfling_anim + calla change_anim1a + + WRSND W_DOINK,GRABFLING_T1,PUNCH_T2 + rets + +******************************************************************************* + +#hip_toss +; .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_hiptoss + + .word B_PUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_hiptoss + +#scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out +; cmpi MODE_BLOCK,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #ck2 + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit + + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #out + +#doit + FACE24 dnk,hiptoss_anim + calla change_anim1a + + WRSND W_DOINK,HIPTOSS_T1,PUNCH_T2 + +#out rets + +#ck2 + move *a13(USR_VAR2),a0 + jrnz #doit + rets + + .if NUM_DOINK_FINISHES +#****************************************************************************** + SUBRP dnk_finish_move1 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_DOWN,0,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN B_PUNCH,J_ALL,#reset + + movi dnk_finish1_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + + .if NUM_DOINK_FINISHES > 1 +#****************************************************************************** + SUBRP dnk_finish_move2 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_UP,0,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN B_SPUNCH,J_ALL,#reset + + movi dnk_finish2_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + +#******************************************************************************* +dnk_hdhold_slam + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_UP,0,#lp + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp +#contz + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + +;Do reversal unless I have been immobilized! +;If not, set immobilize time for opponent and reverse + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 1,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + movi dnk_3_head_slam_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** +dnk_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +#contz + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 7,A10 ;Pile driver + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + movi dnk_3_pile_driver_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +;#****************************************************************************** +; +;;Could start this process only when opponent is in combo mode! +; +;dnk_hdhold_anti_combo +; +;#TIMEOUT .equ 30 +; +;#lp0 +; SLEEPK 1 +;#lp +;;Is my opponent in combo mode? +;; move *a8(IMMOBILIZE_TIME),a14 +;; jrz #lp0 +;; move *a8(CLOSEST_NUM),a0 +;; X32 a0 +;; addi process_ptrs,a0 +;; move *a0,a0,L +;; move *a0(COMBO_COUNT),a0 +;; jrz #lp0 +; +; clr a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +; movk #TIMEOUT,a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +;;Is my opponent in combo mode? +; move *a8(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(COMBO_COUNT),a0 +; jrz #lp0 +; +; move *a8(ANTI_COMBO_TIME),a0 ;Time stamp +; move @PCNT,a14 +; sub a0,a14 +; abs a14 +; cmpi 80,a14 +; jrge #lp0 +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +;;Combo breaker message! +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; clr a0 +; move a0,*a8(IMMOBILIZE_TIME) +; +; move *a8(WHOHITME),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) +; +; ;target WHOHITME +; SMRTTGT a8,WHOHITME +; +; CALLA FIND_AND_KILL_ENDLESS +; +; WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 +; movi dnk_3_pile_driver_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; SLEEPK 20 +; +; jruc #lp +; +******************************************************************************* + +#* +dnk_hdhold_combo1 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + + movi dnk_combo_uppercut_to_head_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +******************************************************************************* + +#* +dnk_hdhold_combo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + CALLA FIND_AND_KILL_ENDLESS + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + movi dnk_4_combo_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* + +dnk_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jreq #lp0 + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 +;Don't do it when he is on ground + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 6ch,a0 + jrgt #lp + + FACE24 dnk,hiptoss_anim + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_DOINK,GRABFLING_T1,PUNCH_T2 + + SLEEPK 20 + jruc #lp + +#doit2 FACE24 dnk,hiptoss2_anim + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_DOINK,GRABFLING_T1,PUNCH_T2 + + SLEEPK 20 + + jruc #lp + + +******************************************************************************* +#* + SUBR std_walk_fast +;One time per match + +#TIMEOUT .equ 61 + +#lp0 + SLEEPK 1 +#lp + move *a8(WALK_FAST),a0 + jrnz #lp0 + move *a8(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + jrnz #lp0 + + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN_AWAY,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN J_UP_TOWARD,0,#lp + WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_UP_AWAY,0,#lp + + + move *a8(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + jrnz #lp0 + + movi 15*60,a0 + move a0,*a8(WALK_FAST) + + move *a8(WRESTLERNUM),a0 + subk 6,a0 + jrnz #not_dnk +;Doink + movi 30000h,a0 + move a0,*a8(OBJ_YVEL),L + +;Doink speech call +;211h + movi 211h,a0 + jruc #go + +#not_dnk + movi 17eh,a0 +#go calla ADD_VOICE +; calla IF_SILENT_ADD_VOICE + + movi 0101h,a14 + move a14,*a8(OBJ_CONST) + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + movi 0101h,a14 + move a14,*a8(OBJ_CONST) + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEP 30 + + move *a8(WRESTLERNUM),a0 + subk 6,a0 + jrnz #tag + + movi 0b2h,a0 ;Honk + calla triple_sound + + SLEEPK 18 + + movi 0b2h,a0 ;Honk + calla triple_sound + + SLEEPK 18 + + movi 0b2h,a0 ;Honk + calla triple_sound + +#tag SLEEPK 5 + move *a8(WALK_FAST),a0 + jrnz #tag + + movi 0101h,a14 + move a14,*a8(OBJ_CONST) + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a8(OBJ_CONTROL) + + SLEEPK 3 + + move *a8(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a8(OBJ_CONTROL) + + DIE + +******************************************************************************* +#* + SUBR std_taunt + + move *a8(PLYR_TYPE),a14 + janz SUCIDE + +#TIMEOUT .equ 61 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_BLOCK,a0 + jrnz #lp0 + + clr a11 + + WAITSWITCH_DWN J_UP,B_BLOCK,#lp + + move *a8(BUT_VAL_CUR),a14 + btst PLAYER_BLOCK_BIT,a14 + jrz #lp0 + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_UP_TOWARD,B_BLOCK,#lp + WAITSWITCH_DWN J_TOWARD,B_BLOCK,#lp + WAITSWITCH_DWN J_DOWN_TOWARD,B_BLOCK,#lp + WAITSWITCH_DWN J_DOWN,B_BLOCK,#lp + WAITSWITCH_DWN J_DOWN_AWAY,B_BLOCK,#lp + WAITSWITCH_DWN J_AWAY,B_BLOCK,#lp + WAITSWITCH_DWN J_UP_AWAY,B_BLOCK,#lp + + move *a8(BUT_VAL_CUR),a14 + btst PLAYER_BLOCK_BIT,a14 + jrz #lp0 + + move *a8(PLYRMODE),a0 + cmpi MODE_BLOCK,a0 + jrne #lp0 + + ;no taunts if all opponents are dead. + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 + cmpi MODE_DEAD,a0 + jreq #lp0 + + SWAP a8,a13 + FACETBL #taunt_tbl + calla change_anim1a + SWAP a8,a13 + +;Time to execute high-risk move! + movi 8000h+12*60,a0 + move a0,*a8(RISK) + + DIE + +; SLEEP 10*60 +; jruc #lp0 + +#taunt_tbl + REFLONG hrt_4_taunt_anim ;0 Bret Hart + REFLONG rzr_4_taunt_anim ;1 Razor Ramon + REFLONG und_4_taunt_anim ;2 Undertaker + REFLONG yok_4_taunt_anim ;3 Yokozuna + REFLONG shn_4_taunt_anim ;4 Shawn Michaels + REFLONG bam_4_taunt_anim ;5 Bam Bam + REFLONG dnk_4_taunt_anim ;6 Doink + .long 0 ;7 spare + REFLONG lex_4_taunt_anim ;8 Lex Luger + +;******************************************************************************* +; +;#charge_flying_kick +; move *a13(BUT_VAL_UP),a0 +; btst PLAYER_SKICK_BIT,a0 +; jrz #no_kick +; +; move *a13(PLYRNUM),a0 +; calla get_powerk_dtime +; cmpi 85,a0 ;> min? +; jrlt #no_kick +; +; callr #scrt_kick +; setc +; rets +; +;#no_kick +; clrc +; rets +; +;#scrt_kick +; +; move *a13(PLYRMODE),a0 +; cmpi MODE_HEADHELD,a0 +; jrz #out +; cmpi MODE_HEADHOLD,a0 +; jrz #out +; +; move *a13(ANIMODE),a0 +; btst MODE_UNINT_BIT,a0 +; jrnz #out +; +;;Don't do it when he is on ground +; calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #out +; cmpi MODE_DEAD,a0 +; jrz #out +; +;#ok +; SETMODE INAIR +; +; movk 1,a0 ;Ensure leap at +; move a0,*a13(OBJ_XVEL),L +; +; movi dnk_flying_kick_anim,a0 +; calla change_anim1a +; +; WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 +; +;#out rets +; +#******************************************************************************* + +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +#CHARGE_TIME .equ SM_USRW1 ; + +dnk_charge_flykick + +#start_over + clr a14 + move a14,*a13(#CHARGE_TIME),W +#loop1 + SLEEPK 1 + + move *a13(#CHARGE_TIME),a14,W + inc a14 + move a14,*a13(#CHARGE_TIME),W + + move *a8(BUT_VAL_CUR),a0 + btst PLAYER_SKICK_BIT,a0 + jrz #p1 + + jruc #loop1 + +#p1 + +;no longer holding button + move *a13(#CHARGE_TIME),a14 + cmpi 100,a14 + jrlt #start_over + + move *a8(GETUP_TIME),a0 + jrnz #start_over + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #start_over + cmpi MODE_HEADHOLD,a0 + jrz #start_over + cmpi MODE_ONGROUND,a0 + jrz #start_over + cmpi MODE_DEAD,a0 + jrz #start_over + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #start_over + cmpi MODE_DEAD,a0 + jrz #start_over + +;Success! Check for the UNINT bit, then queue it up. + move *a8(ANIMODE),a14 + btst MODE_UNINT_BIT,a14 + jrnz #start_over + + .ref ck_ignore_a8 + calla ck_ignore_a8 + jrc #start_over + + movi dnk_flying_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + SETMODE INAIR + + jruc #start_over + + +#******************************************************************************* +; +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +; WORD #TIMEOUT ;UDW +; +; ;in: +; ; a8 = wrestler process address +; +;dnk_charge_flykick +; +;#start_over +; ;charge on stick away +; clr a14 +; move a14,*a13(#CHARGE_TIME),W +;#loop1 +; SLEEPK 1 +; +; move *a13(#CHARGE_TIME),a14,W +; inc a14 +; move a14,*a13(#CHARGE_TIME),W +; +; move *a8(STICK_VAL_CUR),a0 +; +; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to +; ; our left, flip the L|R direction bits... +; +; ;...however, if the stick isn't pointed left or right, don't do +; ;anything. +; move a0,a14 +; andi MOVE_LEFT|MOVE_RIGHT,a14 +; jrz #no_flip +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip +; +; ;if we're still holding away, jump back to #loop1 +; btst MOVE_LEFT_BIT,a0 +; jrnz #loop1 +; +; ;no longer holding away... +; move *a13(#CHARGE_TIME),a14 +; cmpi 20,a14 +; jrlt #start_over +; +; ;okay, they released after holding away for 2 seconds. Give them +; ; half a second to push forward + super_kick +; +; movi TSEC/2,a14 +; move a14,*a13(#TIMEOUT) +;#loop2 +; SLEEPK 1 +; +; move *a8(BUT_VAL_DOWN),a0 +; jrnz #press +; +; move *a13(#TIMEOUT),a14 +; dec a14 +; jrz #start_over +; move a14,*a13(#TIMEOUT) +; jruc #loop2 +; +;#press +; ;we have a button press. Is is super kick? +; btst PLAYER_KICK_BIT,a0 +; +; jrz #start_over ;wrong button. No good. +; +; +; ;Check for a towards on the stick. +; move *a8(STICK_VAL_CUR),a0 +; jrz #start_over ;no stick at all. No good. +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip2 +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip2 +; btst MOVE_RIGHT_BIT,a0 +; jrz #start_over ;pooched it +; +; +;;Don't do it when he is on ground +; SWAP a8,a13 +; calla get_opp_plyrmode +; SWAP a8,a13 +;;Don't do it when he is on ground +; cmpi MODE_ONGROUND,a0 +; jrz #start_over +; cmpi MODE_DEAD,a0 +; jrz #start_over +; +; +;;success! Check for the UNINT bit, then queue it up. +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over +; +; movi dnk_flying_kick_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; SETMODE INAIR +; +; movi 1000h,a0 +; move a0,*a13(OBJ_XVEL),L +; +; WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 +; +; jruc #start_over + +#******************************************************************************* +dnk_hdhold_buzz + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#lp +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 + +;#slam + CALLA FIND_AND_KILL_ENDLESS + movi dnk_4_buzz_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + +;missing noise for a reason ! + WRSND W_DOINK,HDBUTT_T1 + + SLEEP 120 + + jruc #lp + +#***************************************************************************** + + SUBR doink_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi dnk_stand4_anim,a0 + calla change_anim1a + + movi dnk_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE TAUNT_PID,do_taunt + PULL a10 + + rets + +#p1 + movi dnk_stand2_anim,a0 + calla change_anim1a + + movi dnk_torso2_anim,a0 + calla change_anim2a + + rets + + SUBR do_taunt +;a10=*wrestler proc +;Do a taunt at start of rounds + +; SLEEP 60 + move @HALT,a0 + jaz SUCIDE + + PUSH a10 + calla read_switches + PULL a10 + + move *a13(PLYR_TYPE),a0 + jrnz #drone +;Human chooses to taunt? + move *a10(STICK_VAL_CUR),a0 + btst MOVE_UP_BIT,a0 + jaz SUCIDE + move *a10(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 + jaz SUCIDE + +#do_taunt + PUSH a13 + move a10,a13 + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #taunt_t,a0 + move *a0,a0,L + + calla change_anim1a + PULL a13 + + DIE + +#drone + movi 250,a0 + calla RNDPER + jrhi #do_taunt + + DIE + +#taunt_t + REFLONG hrt_4_taunt_anim ;0 Bret Hart + REFLONG rzr_4_taunt_anim ;1 Razor Ramon + REFLONG und_4_taunt_anim ;2 Undertaker + REFLONG yok_4_taunt_anim ;3 Yokozuna + REFLONG shn_4_taunt_anim ;4 Shawn Michaels + REFLONG bam_4_taunt_anim ;5 Bam Bam + REFLONG dnk_4_taunt_anim ;6 Doink + .long 0 ;7 spare + REFLONG lex_4_taunt_anim ;8 Lex Luger + .long 0 ;9 Referee + +#***************************************************************************** +* +* DOINKS CONTROL CODE +* +* a13 = * doink process + + SUBR move_doink + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + movi doink_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 + .long mode_puppet2 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .long mode_choking ;25 + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(I_WILL_DIE),a0 + jrz #nope + move *a13(IMMOBILIZE_TIME),a0 + jrnz #nope +;Player has died amidst a combo... +;Knock me down. + movi dnk_fall_back_anim,a0 + calla change_anim1a + +;Zero health bar + movi -10,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + SETMODE DEAD + + clr a0 + move a0,*a13(I_WILL_DIE) + + rets + +#nope +;Perhaps we need to interrupt any sequence when a wrestler has won? + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + + ;if closest is a zombie, skip pin section. + calla get_opp_process + move *a0(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #opp_not_dead + + ;all opponents are dead. Check for pins/raisearms + + ;if we're attached to someone, don't interrupt it. + move *a13(ATTACH_PROC),a1,L + jrz #no_attch + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jreq #no_pin_yet +#no_attch + + ;if a teammate has pinned, raise yer arm. + calla ck_teammate_pin + jrc #raisearm + + ;nobody has pinned. if we're outside or all our opponents are + ; outside, do a raisearm. + calla raisearm_check + jrc #raisearm + + ;we're inside with a pinnable opponent. any button pins. + move *a13(BUT_VAL_CUR),a0 + jrz #no_pin_yet + + ;we have a press -- make sure opponent is on the ground + + calla can_pin + jrnc #opp_notgnd + + ;opponent is on the ground. pin him. + FACE24 dnk,pin_anim + calla change_anim1a + + ;set the 'I did a pin' flag. + move *a13(STATUS_FLAGS),a14 + ori M_DID_PIN,a14 + move a14,*a13(STATUS_FLAGS) + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#raisearm + FACE24 dnk,raise_arm_anim + calla change_anim1a + calla set_raisearm_bit + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#too_far_to_pin +#opp_notgnd +#opp_not_dead +#no_pin_yet + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #immobilized + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 ;maybe have to action tables? + jrz #nblk ;1 for down transitions + callr #block ;& 1 for current buttons + jrc #nblk + clr a0 + move a0,*a13(ATTACK_TYPE) + rets +#nblk + move *a13(BUT_VAL_CUR),a0 + andi 011111b,a0 + cmpi PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,a0 + jrz #punchkick + + move *a13(BUT_VAL_DOWN),a0 + 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(STICK_VAL_CUR),a0 + move a0,*a13(MOVE_DIR) + calla climb_turnbuckle + jrnc #no_climb + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets + +#immobilized + clr a14 + move a14,*a13(MOVE_DIR) +#no_climb + calla execute_walk + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z ;0 + + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 headbutt +* dizzy " " +* normal > normal punch +* dizzy " " +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running hiptoss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 50, 45,#punch_hdbutt,#punch_punch ;0 + JJXM RUNNING, 50, 45,#punch_hdbutt,#punch_punch ;1 + JJXM INAIR, 50, 45,#punch_hdbutt,#punch_punch ;2 + JJXM ATTACHED, 50, 45,#punch_hdbutt,#punch_punch ;3 + JJXM ONGROUND, 160,140,#punch_lbowdrop,#punch_punch ;4 + JJXM BOUNCING, 50, 45,#punch_hdbutt,#punch_punch ;1 + JJXM ONTURNBKL, 50, 45,#punch_hdbutt,#punch_punch ;6 + JJXM BLOCK, 50, 45,#punch_hdbutt,#punch_punch ;7 + JJXM DIZZY, 50, 45,#punch_hdbutt,#punch_punch ;8 + JJXM DEAD, 160,140,#punch_lbowdrop,#punch_punch ;9 + JJXM OPPOVERHEAD, 50, 45,#punch_hdbutt,#punch_punch ;10 + JJXM CLIMBTURNBKL, #punch_punch ;11 + JJXM WAITANIM, 50, 45,#punch_hdbutt,#punch_punch ;12 + JJXM GRAPPLE, 50, 45,#punch_hdbutt,#punch_punch ;13 + JJXM MASTER, 50, 45,#punch_hdbutt,#punch_punch ;14 + JJXM SLAVE, 50, 45,#punch_hdbutt,#punch_punch ;15 + JJXM HEADHOLD, 50, 45,#punch_hdbutt,#punch_punch ;16 + JJXM HEADHELD, 50, 45,#punch_hdbutt,#punch_punch ;19 + JJXM CHOKEHOLD, 50, 45,#punch_hdbutt,#punch_punch ;16 + JJXM PUPPET, 50, 45,#punch_hdbutt,#punch_punch ;20 + JJXM PUPPET2, 50, 45,#punch_hdbutt,#punch_punch ;20 + JJXM INAIR2, 50, 45,#punch_hdbutt,#punch_punch ;21 + JJXM_END + +#punch_rets + rets + +***** +#punch_punch +std_punch + + FACE24 dnk,punch_anim + calla change_anim1a + + WRSND W_DOINK,PUNCH_T1,PUNCH_T2 + + rets + +***** +#punch_hdbutt + + FACE24 dnk,butt_anim + calla change_anim1a + + WRSND W_DOINK,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#punch_lbowdrop + + FACE24 dnk,lbowdrop_anim + calla change_anim1a + + WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 + + rets + +************ +#block ;2 +std_block + move @blocking_off,a0 + jrnz #no_blocking + + RND_AWARD a13,BLOCKS_AWD + + movi dnk_4_block_anim,a0 + calla change_anim1 + + calla BLOCK_WOOSH + + clr a0 + move a0,*a13(BLOCK_TIME) + clrc + rets + +#no_blocking + setc + rets + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 144 160 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 85, 55,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 85, 55,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 85, 55,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 85, 55,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 160,140,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, 85, 55,#spunch_special,#spunch_slap ;1 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 85, 55,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 85, 55,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 160,140,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 85, 55,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 85, 55,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 85, 55,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 85, 55,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 85, 55,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 85, 55,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, do_pile ;19 + JJXM CHOKEHOLD, 85, 55,#spunch_special,#spunch_slap ;16 + JJXM PUPPET, 85, 55,#spunch_special,#spunch_slap ;20 + JJXM PUPPET2, 85, 55,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 85, 55,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +***** +#spunch_slap + FACE24 dnk,slap_anim + calla change_anim1a + + WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 + + rets + +***** +#spunch_special +;If stick is toward opponent, then do quick punches + + move *a13(STICK_VAL_CUR),a0 + btst MOVE_DOWN_BIT,a0 + jrnz #ck_up + + +; move *a13(STICK_VAL_CUR),a0 +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrz #cont + + move *a13(CLOSEST_XDIST),a1 + cmpi 60,a1 + jrgt std_punch + +; jruc #hdbutt +;#cont +; .ref dnk_3_head_hold2_anim +; movi dnk_3_head_hold2_anim,a0 +; calla change_anim1a +; +; WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 +; +; rets +;#hdbutt + + FACE24 dnk,butts_anim + calla change_anim1 + + WRSND W_DOINK,HDBUTT_T1,HDBUTT_T2 + + rets + +#ck_up +;Check for uppercut + .ref dnk_4_uppercut_anim + movi dnk_4_uppercut_anim,a0 + calla change_anim1 + + WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 + rets + +***** +#spunch_lbowdrop +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a2 + cmpi MODE_DEAD,a2 + jrz #no + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 dnk,hair_pickup_anim + calla change_anim1 + WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no FACE24 dnk,lbowdrop_anim + calla change_anim1 + WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 knee +* dizzy " " +* normal > normal kick +* dizzy " " +* +* onground < 120 120 stomp +* onground > normal kick +* +* running normal kick +* bouncing normal kick +* +* onturnbkl normal kick +* climbturnbkl normal kick +* + JJXM_INIT + JJXM NORMAL, 50, 92,#kick_knee,#kick_kick ;0 + JJXM RUNNING, 50, 92,#kick_knee,#kick_kick ;0 + JJXM INAIR, 50, 92,#kick_knee,#kick_kick ;2 + JJXM ATTACHED, 50, 92,#kick_knee,#kick_kick ;3 + JJXM ONGROUND, 160,140,#kick_stomp,#kick_kick ;4 + JJXM BOUNCING, 50, 92,#kick_knee,#kick_kick ;0 + JJXM ONTURNBKL, #kick_kick ;6 + JJXM BLOCK, 50, 92,#kick_knee,#kick_kick ;7 + JJXM DIZZY, 50, 92,#kick_knee,#kick_kick ;8 + JJXM DEAD, 160,140,#kick_stomp,#kick_kick ;9 + JJXM OPPOVERHEAD, 50, 92,#kick_knee,#kick_kick ;10 + JJXM CLIMBTURNBKL, #kick_kick ;11 + JJXM WAITANIM, 50, 92,#kick_knee,#kick_kick ;12 + JJXM GRAPPLE, 50, 92,#kick_knee,#kick_kick ;13 + JJXM MASTER, 50, 92,#kick_knee,#kick_kick ;14 + JJXM SLAVE, 50, 92,#kick_knee,#kick_kick ;15 + JJXM HEADHOLD, 50, 92,#kick_knee,#kick_kick ;16 + JJXM HEADHELD, 50, 92,#kick_knee,#kick_kick ;19 + JJXM CHOKEHOLD, 50, 92,#kick_knee,#kick_kick ;16 + JJXM PUPPET, 50, 92,#kick_knee,#kick_kick ;20 + JJXM PUPPET2, 50, 92,#kick_knee,#kick_kick ;20 + JJXM INAIR2, #skick_TB ;21 + JJXM_END + +;***** +;#kick_flyingkick +; +; movi dnk_flying_kick_anim,a0 +; calla change_anim1a +; +; SETMODE INAIR +; +; WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 +; +; rets + +***** +#kick_kick +std_kick + + FACE24 dnk,kick_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + +***** +#kick_knee +std_knee + FACE24 dnk,knee_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + +***** +#kick_stomp + + FACE24 dnk,stomp_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 144 160 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 60 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 60, 60,#skick_special,#skick_kick ;0 + JJXM RUNNING, #skick_bigboot ;1 + JJXM INAIR, 60, 60,#skick_special,#skick_kick ;2 + JJXM ATTACHED, 60, 60,#skick_special,#skick_kick ;3 + JJXM ONGROUND, 160,140,#skick_stomp,std_kick ;4 + JJXM BOUNCING, #skick_bigboot ;5 + JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick ;6 + JJXM BLOCK, 60, 60,#skick_special,#skick_kick ;7 + JJXM DIZZY, 60, 60,#skick_special,#skick_kick ;8 + JJXM DEAD, 160,140,#skick_stomp,std_kick ;9 + JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick ;10 + JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick ;11 + JJXM WAITANIM, 60, 62,#skick_special,#skick_kick ;12 + JJXM GRAPPLE, 60, 62,#skick_special,#skick_kick ;13 + JJXM MASTER, 60, 62,#skick_special,#skick_kick ;14 + JJXM SLAVE, 60, 62,#skick_special,#skick_kick ;15 + JJXM HEADHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM HEADHELD, std_kick + JJXM CHOKEHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM PUPPET, 60, 62,#skick_special,#skick_kick ;20 + JJXM PUPPET2, 60, 62,#skick_special,#skick_kick ;20 + JJXM INAIR2, #skick_TB ;21 + JJXM_END + +***** +#skick_TB + .ref dnk_2_spin_kick_TB_anim + .ref dnk_4_spin_kick_TB_anim + FACE24 dnk,spin_kick_TB_anim + calla change_anim1a + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + rets + +***** +#skick_kick +#graboh + + FACE24 dnk,spin_kick_anim + calla change_anim1a + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + rets + +***** +#skick_special +;If stick is toward opponent, then do quick punches + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrz #cont2 + + FACE24 dnk,knee_anim + calla change_anim1 + +; WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 +;no, lets try..... + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + rets + +#cont2 + movi dnk_4_knee_fall_anim,a0 + calla change_anim1 + + WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 + rets + + +***** +#skick_stomp + + FACE24 dnk,stomp_anim + calla change_anim1a + + WRSND W_DOINK,KICK_T1,KICK_T2 + + rets + +***** +#skick_bigboot ;we can probably get away with just a #4 big boot + + FACE24 dnk,bigboot_anim + calla change_anim1a + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ DNK_XRUN +#XRUN2_VAL equ DNK_XRUN2 +#ZDRIFT_VAL equ DNK_ZDRIFT + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + + move *a13(WALK_FAST),a14 + jrz #no + movi #XRUN2_VAL,a0 +#no + move @hyper_speed_on,a14 + sll a14,a0 + + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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(STICK_VAL_CUR),a0 + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#no_interrupt + + move *a13(STICK_VAL_CUR),a0 + 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 + + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 +#out_of_control + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + + +************ +#punch ;1 +#super_punch ;4 +#punchkick +#graboh +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 belly flop +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline ;0 + JJXM RUNNING, #punch_clothesline ;1 + JJXM INAIR, #punch_clothesline ;2 + JJXM ATTACHED, #punch_clothesline ;3 + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_lbowdrop ;4 + JJXM BOUNCING, #punch_clothesline ;5 + JJXM ONTURNBKL, #punch_clothesline ;6 + JJXM BLOCK, #punch_clothesline ;7 + JJXM DIZZY, #punch_clothesline ;8 + JJXM DEAD, 176,176,#punch_bellyflop,#punch_lbowdrop ;9 + JJXM OPPOVERHEAD, #punch_clothesline ;10 + JJXM CLIMBTURNBKL, #punch_clothesline ;11 + JJXM WAITANIM, #punch_clothesline ;12 + JJXM GRAPPLE, #punch_clothesline ;13 + JJXM MASTER, #punch_clothesline ;14 + JJXM SLAVE, #punch_clothesline ;15 + JJXM HEADHOLD, #punch_clothesline ;16 + JJXM HEADHELD, #punch_clothesline ;19 + JJXM CHOKEHOLD, #punch_clothesline ;16 + JJXM PUPPET, #punch_clothesline ;20 + JJXM PUPPET2, #punch_clothesline ;20 + JJXM INAIR2, #punch_clothesline ;21 + JJXM_END + + +***** +#punch_clothesline + +;Only allow clothesline if near center of ring, and running toward opponent + move *a13(MOVE_DIR),a1 + btst MOVE_LEFT_BIT,a1 + jrnz #lft +;Moving right + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID+70h,a0 + jrlt #ok + +; LOCKUP + + rets + +#lft +;Moving left + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_MID-70h,a0 + jrgt #ok + +; LOCKUP + + rets +#ok + move *a13(MOVE_DIR),a1 + move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi #mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrz #yes + +; LOCKUP + + rets +#yes + +;Will lunge toward opponent +;Is facing opponent - nt running away from him! + movi dnk_fly_cline_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +#mv_tbl .long 0,0,0,0,0,MOVE_RIGHT_BIT,MOVE_RIGHT_BIT + .long 0,0,MOVE_LEFT_BIT,MOVE_LEFT_BIT + +***** +#punch_lbowdrop +#punch_bellyflop + + movi dnk_belly_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +;#punch_lbowdrop +; +; FACE24 dnk,lbowdrop_anim +; calla change_anim1a +; +; WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 +; +; rets + +************ +#block ;2 + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 running stomp +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick ;0 + JJXM RUNNING, #kick_flyingkick ;1 + JJXM INAIR, #kick_flyingkick ;2 + JJXM ATTACHED, #kick_flyingkick ;3 + JJXM ONGROUND, 176,176,#kick_runstomp,#kick_runstomp ;4 + JJXM BOUNCING, #kick_flyingkick ;5 + JJXM ONTURNBKL, #kick_flyingkick ;6 + JJXM BLOCK, #kick_flyingkick ;7 + JJXM DIZZY, #kick_flyingkick ;8 + JJXM DEAD, 176,176,#kick_runstomp,#kick_runstomp ;9 + JJXM OPPOVERHEAD, #kick_flyingkick ;10 + JJXM CLIMBTURNBKL, #kick_flyingkick ;11 + JJXM WAITANIM, #kick_flyingkick ;12 + JJXM GRAPPLE, #kick_flyingkick ;13 + JJXM MASTER, #kick_flyingkick ;14 + JJXM SLAVE, #kick_flyingkick ;15 + JJXM HEADHOLD, #kick_flyingkick ;16 + JJXM HEADHELD, #kick_flyingkick ;19 + JJXM CHOKEHOLD, #kick_flyingkick ;16 + JJXM PUPPET, #kick_flyingkick ;20 + JJXM PUPPET2, #kick_flyingkick ;20 + JJXM INAIR2, #kick_flyingkick ;21 + JJXM_END + +***** +#kick_flyingkick + + calla ck_ignore + jrc #z + + + movi dnk_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +#kick_runstomp + movi dnk_belly_anim,a0 + calla change_anim1a + + SETMODE INAIR + + clr a0 + move a0,*a13(RUN_TIME) + + WRSND W_DOINK,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 + +#***************************************************************************** + +mode_onground ;4 + + 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 dnk_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 + +; ;check unint +; move *a13(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #no_interrupt + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #no_climbdown + + movi dnk_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + +#no_interrupt + rets + +#no_climbdown + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + +************ +#punch ;1 +#punchkick ;1 +#block ;2 + + SETMODE INAIR + WRSND W_DOINK,GRABFLING_T1,GRABFLING_T2 + + movi dnk_4_blbowdrop_anim,a0 ;Buckle + calla change_anim1a + rets + +************ + +; movi dnk_4_bjump_anim,a0 ;Buckle +; calla change_anim1a +; rets + +************ +#super_punch ;4 +;If stick is toward opponent, then do hammer pound move +; move *a13(STICK_VAL_CUR),a0 +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 + +; xor a0,a1 +; andi MOVE_LEFT|MOVE_RIGHT,a1 +; cmpi MOVE_LEFT|MOVE_RIGHT,a1 + +; jrnz #graboh ;Br=regular +; +;;Do hammer pound +; movi dnk_4_bhammer_anim,a0 +; calla change_anim1a +; rets +; +; +#graboh ;1 + + SETMODE INAIR + WRSND W_DOINK,GRABFLING_T1,GRABFLING_T2 + + movi dnk_diveofftb_anim,a0 + calla change_anim1a + rets + +************ +#kick ;8 +#super_kick ;16 + + SETMODE INAIR + WRSND W_DOINK,GRABFLING_T1,GRABFLING_T2 + + movi dnk_4_bstomp_anim,a0 ;Buckle + calla change_anim1a + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + + clr a0 + move a0,*a13(CONSECUTIVE_HITS) + + move *a13(BLOCK_TIME),a0 + inc a0 + move a0,*a13(BLOCK_TIME) + cmpi 160,a0 + jrlt #no + + calla get_opp_plyrmode + cmpi MODE_BLOCK,a0 + jrnz #no + move *a13(CLOSEST_XDIST),a0 + cmpi 61h,a0 + jrge #no + cmpi 45,a0 + jrlt #no + move *a13(CLOSEST_ZDIST),a0 + cmpi 30,a0 + jrlt #punchblock + +#no + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #no_interrupt + + ;press. if block isn't down, let mode_normal handle it + move a0,a2 ;save a0 from ...val_down + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 + jrz #set_mode_normal + move a2,a0 ;restore a0 from ...val_down + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#set_mode_normal + SETMODE NORMAL + jruc mode_normal + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + movi dnk_4_push_anim,a0 + calla change_anim1a + + WRSND W_DOINK,PUSH_T1,PUSH_T2 + + rets + +#***************************************************************************** +* + +mode_dizzy ;8 + +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +; calla clear_damage_log +; +; clr a0 +; move a0,*a13(STARS_FLAG) +; +; SETMODE NORMAL +; +;#still_going + rets + +#***************************************************************************** + + SUBR mode_dead ;9 + + ;if our zombie bit is set, move + move *a13(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 ;are we already a zombie? + jrnz #zmb + + btst B_DID_BUCKOFF,a14 + jrnz #done ;have we already done one this match? + + btst B_NO_BUCKOFF,a14 + jrnz #done ;have we already checked this round? + + btst B_DO_BUCKOFF,a14 + jrnz #count_btns ;are we already counting? + + move @royal_rumble,a14 + jrnz #done ;are we in royal rumble mode? + + ;We may have to fire up a come back to life process: + ; IF this is the second round we've lost, + ; AND IF our combo meter is flashing, + ; AND IF the hit that killed us was wimpy and our WEAK_HIT bit is set, + ; AND IF we haven't already done a buckoff this match, + ; AND IF we're inside the ring, + ; THEN start counting button presses. + + ;Is this the second round we've lost? + ;(skip this test if we're in the 8-on-1 match) + calla is_8_on_1 + jrc #ck81 + move @p1rounds,a0 + move *a13(PLYR_SIDE),a14 + jrnz #rndok + move @p2rounds,a0 +#rndok TEST a0 + jrz #nobuck + jruc #tcombo + +#ck81 ;it's 8-on-1. only the player is allowed to buckoff. + move *a13(PLYRNUM),a14 + cmpi 2,a14 + jrge #nobuck + +#tcombo ;is our combo meter lit? + move a13,a8 + calla CHECK_COMBO_GO + jrlt #nobuck + + ;are we inside the ring? + move *a13(INRING),a14 + jrnz #nobuck + + ;Buckoff is NOT allowed if undertaker started his finish move or + ;has completed his finish move!!!! + move @in_finish_move,a14 + jrnz #nobuck + move @finish_completed,a14 + jrnz #nobuck + + ;temp! - 314 + .if DEBUG + DBEVENT BDE_MAYBE_BUCK,a13,L,*a13(WRESTLERNUM),W,*a13(PLYRNUM),W + .endif + + ;possible buckoff. Zero BUCKOFF_COUNT and set DO_BUCKOFF bit + clr a14 + move a14,*a13(BUCKOFF_COUNT) + move *a13(STATUS_FLAGS),a14 + ori M_DO_BUCKOFF,a14 + move a14,*a13(STATUS_FLAGS) + jruc #count_btns + +#nobuck ;no buckoff. set NO_BUCKOFF bit + move *a13(STATUS_FLAGS),a14 + ori M_NO_BUCKOFF,a14 + move a14,*a13(STATUS_FLAGS) + jruc #done + +#zmb ;we're a zombie. WAITROLL is going to automatically roll us up + ; until we can't roll anymore, and then our anim should make us + ; stand up. (There should always be a getup after a waitroll.) + ; So all we do is wait for the MODE_END bit to get set, which tells + ; us that we're standing up, outside, with a clear lane to either + ; side. At that point we begin running toward whichever side of + ; the arena is farther from the camera. We don't want to be seen + ; vanishing when we hit the edge. + + ;Update ZOMBIE_TIME. If we've been a zombie for ten seconds, + ; something has probably gone wrong with our trip to the side + ; of the arena, so we'll just transform now. + move *a13(ZOMBIE_TIME),a14 + inc a14 + move a14,*a13(ZOMBIE_TIME) + cmpi TSEC*10,a14 + jrlt #zmb_ok + +#change ;timeout! + calla change_wrestler + jruc #done +#zmb_ok + + move *a13(ANIMODE),a14 + btst MODE_END_BIT,a14 + jrz #done + +#run ;begin running left if WORLDTLX > RING_X_CENTER-200, right otherwise. + + ;set CAN_XFORM bit so we can transform + move *a13(STATUS_FLAGS),a14 + ori M_CAN_XFORM,a14 + move a14,*a13(STATUS_FLAGS) + + move @WORLDTLX,a14,L + sra 16,a14 + cmpi RING_X_CENTER-200,a14 + jrge #run_left + +#run_right + movk MOVE_RIGHT,a14 + move a14,*a13(STICK_VAL_CUR) + movi start_run_anim,a0 + calla change_anim1a + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #run_speeds,a14 + move *a14,a14,L + move a14,*a13(OBJ_XVEL),L + jruc #done + +#run_left + movk MOVE_LEFT,a14 + move a14,*a13(STICK_VAL_CUR) + movi start_run_anim,a0 + calla change_anim1a + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #run_speeds,a14 + move *a14,a14,L + neg a14 + move a14,*a13(OBJ_XVEL),L + + +#done rets + +#count_btns + ;count new presses this tick and add to BUCKOFF_COUNT + move *a13(BUT_VAL_DOWN),a0 + clr a1 +#lp0 lmo a0,a14 + jrz #end0 + rl a14,a0 + sla 1,a0 + inc a1 + jruc #lp0 +#end0 move *a13(BUCKOFF_COUNT),a0 + + add a1,a0 + move a0,*a13(BUCKOFF_COUNT) + + cmpi 50,a0 + jrge #dobuck + + .ref obj_del1c,dec_to_asc,concat_rom_string,mess_spacing + .ref ogmd10_ascii,message_ascii,mess_cursx,mess_cursy + .ref message_palette,print_string,BINBCD,SGMD8GLD,mess_objid + .ref copy_string + + rets + +#dobuck ;SUCCESS! Do the buckoff. + + ;temp! - 314 + .if DEBUG + DBEVENT BDE_DONE_BUCK,a13,L,*a13(WRESTLERNUM),W,*a13(PLYRNUM),W + .endif + + ;clear my combo meter + calla clear_combo_meter + +; ;If we've been pinned, send the pinner to his buckoff anim. +; move *a13(STATUS_FLAGS),a14 +; btst B_PINNED,a14 +; jrz #me_not_pinned +; +; move *a13(WHOPINNEDME),a0,L + + ;If any opponent has pinned, send him to his buckoff anim. + movi NUM_WRES,a0 + movi process_ptrs,a1 +#lp2 move *a1+,a2,L + jrz #nxt2 + move *a2(STATUS_FLAGS),a14,L + btst B_DID_PIN,a14 + jrz #nxt2 + move a2,a0 + jruc #done2 +#nxt2 dsj a0,#lp2 +#done2 + + ;clear his pinned bit + move *a0(STATUS_FLAGS),a14 + andni M_DID_PIN,a14 + move a14,*a0(STATUS_FLAGS) + + ;if his DID_RAISEARM bit is set, then it was probably taker and he's + ; no longer on top of us, so skip the buckoff and just let him get + ; his raisearm anim shut off along with the other drones. + move *a0(STATUS_FLAGS),a14 + btst B_DID_RAISEARM,a14 + jrnz #me_not_pinned + + ;do his bucked off anim (stick it into special_move_addr?) + move a0,a8 + FACETBL #buckoff_tbl,a8 + move a0,*a8(SPECIAL_MOVE_ADDR),L + +#me_not_pinned + ;back to life... + movi MODE_ONGROUND,a14 + move a14,*a13(PLYRMODE) + + ;get two pixels back + movk 2,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + ;no getup meter + clr a14 + move a14,*a13(GETUP_TIME) + move a14,*a13(DELAY_METER) + +;If died in a combo, allow buckoff to continue + clr a0 + move a0,*a13(I_WILL_DIE) + + ;reset my pal, just in case. + move *a13(MY_PAL),*a13(OBJ_PAL) + +;Slide out 2nd wind message + move a13,a8 + movi 41,a10 + .ref MOVE_NAME_ANNC + CREATE MESSAGE_PID,MOVE_NAME_ANNC + + ;clear DO_BUCKOFF|PINABLE|PINNED, and set DID_BUCKOFF|NEW_BUCKOFF + move *a13(STATUS_FLAGS),a14,L + ori M_DID_BUCKOFF|M_NEW_BUCKOFF,a14 + andni M_DO_BUCKOFF|M_PINNED|M_PINABLE,a14 + move a14,*a13(STATUS_FLAGS),L + + ;convulse + FACETBL hitonground_tbl + calla change_anim1a + + ;set nocollis bit + move *a13(ANIMODE),a14 + ori MODE_NOCOLLIS,a14 + move a14,*a13(ANIMODE) + + ;if anyone has done a raisearm, put 'em back in a stand. + movi process_ptrs,a0 + movi NUM_WRES,a1 +#lp1 move *a0+,a2,L + jrz #nxt1 + move *a2(STATUS_FLAGS),a14,L + btst B_DID_RAISEARM,a14 + jrz #nxt1 + + ;just clear the DID_RAISEARM bit. Anim scripts will do the rest. + andni M_DID_RAISEARM,a14 + move a14,*a2(STATUS_FLAGS),L + + +#nxt1 dsj a1,#lp1 + + ;If anyone has turned into a drone, turn 'em back. + clr a14 + move @process_ptrs,a0,L + jrz #adc1 + move a14,*a0(PLYR_TYPE) +#adc1 move @process_ptrs+20h,a0,L + jrz #adc2 + move a14,*a0(PLYR_TYPE) +#adc2 + + ;call init_reduce_bog, because match_timer clears it when it + ; sees one team dead. + calla init_reduce_bog + + ;if there's an ANNOUNCE_RND_WINNER process waiting, + ; wake it up so it'll see us alive and die. + movi ANNC_PID,a0 + clr a1 + not a1 + calla EXISTP + jrz #rets + + move *a0(PWAKE),a14,L + cmpi arw_bwait,a14 + jrne #uh_oh + + movk 1,a14 + move a14,*a0(PTIME) + jruc #rets + +#uh_oh + .if DEBUG + LOCKUP ;announce_rnd_winner ISN'T at arw_bwait! + .endif +#rets rets + + +#buckoff_tbl + REFLONG hrt_buckoff_anim ;Bret + REFLONG rzr_buckoff_anim ;Razor + REFLONG und_buckoff_anim ;Taker + REFLONG yok_buckoff_anim ;Yoko + REFLONG shn_buckoff_anim ;Shawn + REFLONG bam_buckoff_anim ;Bam Bam + REFLONG dnk_buckoff_anim ;Doink + .long 0 + REFLONG lex_buckoff_anim ;Lex + + +#run_speeds + .long HRT_XRUN + .long RZR_XRUN + .long UND_XRUN + .long YOK_XRUN + .long SHN_XRUN + .long BAM_XRUN + .long DNK_XRUN + .long 0 + .long LEX_XRUN + + + SUBRP ani_end_anim + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* 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 + + calla master_keep_attached ;keep slave attached to me + + rets + +#***************************************************************************** + +mode_slave ;15 + rets + + + + SUBR bozo_check + +;Bozo check + move *a13(SPUNCHB_COUNT),a0 + move *a13(SKICKB_COUNT),a1 + move *a13(BLOCKB_COUNT),a2 + add a0,a1 + add a1,a2 + cmpi 18,a2 + jrlt #no_bozo +;Lots of super buttons and blocks have been hit! +;Reverse out +;Do reversal unless I have been immobilized! +;If not, set immobilize time for opponent and reverse + + move *a13(IMMOBILIZE_TIME),a14 + jrnz #no_bozo ;ignore + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a13,WHOHITME + + ;immobilize WHOHITME + move *a13(WHOHITME),a0,L + movk 32,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + setc + rets + +#no_bozo + clrc + rets + +#***************************************************************************** + +mode_headhold ;16 + +;Bozo power move + callr bozo_check + jrnc #fail + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + movi dnk_3_head_slam_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi dnk_3_pile_driver_anim,a0 +#tag calla change_anim1a + + rets + +#fail + move *a13(WHOIHIT),a0,L + move *a0(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #exit + +; move *a13(ATTACH_PROC),a10,L +; jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + move *a13(OBJ_ZPOS),a14,L + subi [6,0],a14 + move a14,*a13(OBJ_ZPOS),L + + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + + +************ +#block +#graboh +#z ;0 + rets + +************ + +#punch ;1 + CALLA FIND_AND_KILL_ENDLESS +;If stick is toward opponent, then do quick punches + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag2 + + WRSND W_DOINK,UPRCUT_T1,UPRCUT_T2 + movi dnk_uppercuts_to_head_anim,a0 + calla change_anim1a + rets + +#tag2 movi dnk_uppercut_to_head_anim,a0 + calla change_anim1a + WRSND W_DOINK,UPRCUT_T1,UPRCUT_T2 + rets + +************ +#super_punch ;4 + +do_pile +;This flag is only set if doink has done repeated uppercuts! + move *a13(USR_VAR2),a0 + jrz #z + + CALLA FIND_AND_KILL_ENDLESS + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #punch + + WRSND W_DOINK,UPRCUT_T1,UPRCUT_T2 + movi dnk_3_pile_driver_anim,a0 + calla change_anim1a + rets + +#kick +#punchkick + CALLA FIND_AND_KILL_ENDLESS + WRSND W_DOINK,KICK_T1,KICK_T2 + + movi dnk_3_knee_to_head_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #z + +;Quick knees + CALLA FIND_AND_KILL_ENDLESS + WRSND W_DOINK,KICK_T1,KICK_T2 + movi dnk_3_knees_to_head_anim,a0 + calla change_anim1a + rets + + +#***************************************************************************** +mode_puppet2 ;17 + + .if DEBUG + LOCKUP ;should never be in this mode anymore. + .endif + + rets + +#***************************************************************************** + +mode_headheld ;19 + move *a13(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + janz mode_choking + +;Bozo reversal + callr bozo_check + jrnc #fail + + PUSH a8 + move a13,a8 + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + PULL a8 + + WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 + + movi dnk_3_head_slam_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi dnk_3_pile_driver_anim,a0 +#tag calla change_anim1a + + rets + +#fail + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + WRSND W_DOINK,PUSH_T2 + movi dnk_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** + SUBR mode_puppet ;20 (used by everyone) + +#timeout_val .equ TSEC*2 + + ;if we're attached, don't check anything. + move *a13(ATTACH_PROC),a0,L + jrz #check + move *a0(ATTACH_PROC),a1,L + cmp a1,a13 + jreq #done + +#check ;figure out if we're newly in mode_puppet or if we've been + ; here awhile. + move *a13(PUPPET_TIME),a14 ;last time we were in mode_puppet + move @PCNT,a0 ;this tick + move a0,*a13(PUPPET_TIME) ;in either case, update PUPPET_TIME + + sub a14,a0 + cmpi 1,a0 + jrne #new_arrival + + ;been here awhile + move *a13(PUPPET_TICKS),a0 + inc a0 + move a0,*a13(PUPPET_TICKS) + + cmpi #timeout_val,a0 + jrlt #done + + ;bark! Been here too long. glitch to a stand or something. + .if DEBUG + LOCKUP + .endif + SETMODE NORMAL + FACE24TBL #stand_tbl + calla change_anim1a + jruc #done + +#new_arrival + movk 1,a14 + move a14,*a13(PUPPET_TICKS) + +#done rets + +#stand_tbl + REFLONG hrt_stand2_anim,hrt_stand4_anim ;0 Bret Hart + REFLONG rzr_stand2_anim,rzr_stand4_anim ;1 Razor Ramon + REFLONG und_stand2_anim,und_stand4_anim ;2 Undertaker + REFLONG yok_stand2_anim,yok_stand4_anim ;3 Yokozuna + REFLONG shn_stand2_anim,shn_stand4_anim ;4 Shawn Michaels + REFLONG bam_stand2_anim,bam_stand4_anim ;5 Bam Bam + REFLONG dnk_stand2_anim,dnk_stand4_anim ;6 Doink + .long 0,0 ;7 spare + REFLONG lex_stand2_anim,lex_stand4_anim ;8 Lex Luger + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** +* + SUBR mode_inair2 ;21 + +;All wrestlers use this mode_inair2 code, and only for turnbuckle stuff. + +;Read joystick for floating off from turnbuckle moves + +;Perhaps each wrestler will have a different drift value +#ZDRIFT2_VAL equ 58000h +#XDRIFT_VAL equ 30000h + + move *a13(STICK_VAL_CUR),a0 + clr a1 + + movi -#ZDRIFT2_VAL,a1 + btst PLAYER_UP_BIT,a0 + jrnz #setvel + + movi #ZDRIFT2_VAL,a1 + btst PLAYER_DOWN_BIT,a0 + jrnz #setvel + + clr a1 +#setvel +; move *a13(OBJ_ZVEL),a14,L +; add a1,a14 +; move a14,*a13(OBJ_ZVEL),L + + move *a13(OBJ_ZPOS),a14,L + add a1,a14 + move a14,*a13(OBJ_ZPOS),L + + + clr a1 + + movi -#XDRIFT_VAL,a1 + btst PLAYER_LEFT_BIT,a0 + jrnz #setvel2 + + movi #XDRIFT_VAL,a1 + btst PLAYER_RIGHT_BIT,a0 + jrnz #setvel2 + + clr a1 +#setvel2 +; move *a13(OBJ_XVEL),a14,L +; add a1,a14 +; move a14,*a13(OBJ_XVEL),L + + move *a13(OBJ_XPOS),a14,L + add a1,a14 + move a14,*a13(OBJ_XPOS),L + + rets + +#***************************************************************************** + + +;#VEL equ 30000h ;38000h ;30000h +;#DVEL equ 21f0eh ;27978h ;21f0eh +;#VEL equ 38000h ;38000h ;30000h +;#DVEL equ 30000h ;27978h ;21f0eh +#VEL equ 3a000h ;38000h ;30000h +#DVEL equ 31000h ;27978h ;21f0eh + + + SUBR dnk_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 dnk_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_stand6_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_stand8_anim ; = up left + + + SUBR dnk_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 dnk_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_6_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_8_turn2_anim ; = up left *** + +; old = down left + .long dnk_6_to_2_turn2_anim ;new = up right *** + .long dnk_6_to_4_turn2_anim ; = down right + .long dnk_torso6_anim ; = down left + .long dnk_6_to_8_turn2_anim ; = up left + +; old = up left + .long dnk_8_to_2_turn2_anim ;new = up right + .long dnk_8_to_4_turn2_anim ; = down right *** + .long dnk_8_to_6_turn2_anim ; = down left + .long dnk_torso8_anim ; = up left + + +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +; WORD #TIMEOUT ;UDW +; +; +; SUBRP dnk_hammer_mv +; +;;in: +;;a8 = wrestler process address +; +;;Hammer pound opponent +;;Charge away for 30 ticks +;;Toward & Super punch +; +;#start_over +; ;charge on stick away +; clr a14 +; move a14,*a13(#CHARGE_TIME),W +;#loop1 +; SLEEPK 1 +; +;;Disallow these type of moves if out of control +; move *a8(GETUP_TIME),a0 +; jrnz #loop1 +; +; move *a13(#CHARGE_TIME),a14,W +; inc a14 +; move a14,*a13(#CHARGE_TIME),W +; +; move *a8(STICK_VAL_CUR),a0 +; +; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to +; ; our left, flip the L|R direction bits... +; +; ;...however, if the stick isn't pointed left or right, don't do +; ;anything. +; move a0,a14 +; andi MOVE_LEFT|MOVE_RIGHT,a14 +; jrz #no_flip +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip +; +; ;if we're still holding away, jump back to #loop1 +; btst MOVE_LEFT_BIT,a0 +; jrnz #loop1 +; +; ;no longer holding away... +; move *a13(#CHARGE_TIME),a14 +; +;;x seconds held stick is away +; +; cmpi 15,a14 +; jrlt #start_over +; +; ;okay, they released after holding away for 2 seconds. Give them +; ;half a second to push forward + super_punch +; +;; movi TSEC/2,a14 +; movk 20,a14 +; move a14,*a13(#TIMEOUT) +;#loop2 +; SLEEPK 1 +; +; move *a8(BUT_VAL_DOWN),a0 +; jrnz #press +; +; move *a13(#TIMEOUT),a14 +; dec a14 +; jrz #start_over +; move a14,*a13(#TIMEOUT) +; jruc #loop2 +; +;#press +; ;we have a button press. Is it super punch? +; btst PLAYER_PUNCH_BIT,a0 +; jrz #start_over ;wrong button. No good. +; +; ;Check for a towards on the stick. +; move *a8(STICK_VAL_CUR),a0 +; jrz #start_over ;no stick at all. No good. +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip2 +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip2 +; btst MOVE_RIGHT_BIT,a0 +; jrz #start_over ;pooched it +; +;;success! Check for the UNINT bit, then queue it up. +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over +; +; movi dnk_4_hammer_anim,a14 +; +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #start_over +; +;; move *a13(PLYRMODE),a0 +;; cmpi MODE_ONTURNBKL,a0 +;; jrnz #do +;; movi dnk_4_bhammer_anim,a14 +;;#do +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; jruc #start_over +; +;; .endif +; +;#* +; +; SUBRP dnk_earslap_mv +; +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +; WORD #TIMEOUT ;UDW +; +; +;;in: +;;a8 = wrestler process address +; +;;Ear slap opponent +;;Charge away for 30 ticks +;;Toward & Super punch +; +;#start_over +; ;charge on stick away +; clr a14 +; move a14,*a13(#CHARGE_TIME),W +;#loop1 +; SLEEPK 1 +; +;;Disallow these type of moves if out of control +; move *a8(GETUP_TIME),a0 +; jrnz #loop1 +; calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #loop1 +; cmpi MODE_DEAD,a0 +; jrz #loop1 +; +; move *a13(#CHARGE_TIME),a14,W +; inc a14 +; move a14,*a13(#CHARGE_TIME),W +; +; move *a8(STICK_VAL_CUR),a0 +; +; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to +; ; our left, flip the L|R direction bits... +; +; ;...however, if the stick isn't pointed left or right, don't do +; ;anything. +; move a0,a14 +; andi MOVE_LEFT|MOVE_RIGHT,a14 +; jrz #no_flip +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip +; +; ;if we're still holding away, jump back to #loop1 +; btst MOVE_LEFT_BIT,a0 +; jrnz #loop1 +; +; ;no longer holding away... +; move *a13(#CHARGE_TIME),a14 +; +;;x seconds held stick is away +; +; cmpi 20,a14 +; jrlt #start_over +; +; ;okay, they released after holding away for 2 seconds. Give them +; ;half a second to push forward + super_punch +; +;; movi TSEC/2,a14 +; movk 15,a14 +; move a14,*a13(#TIMEOUT) +;#loop2 +; SLEEPK 1 +; +; move *a8(BUT_VAL_DOWN),a0 +; jrnz #press +; +; move *a13(#TIMEOUT),a14 +; dec a14 +; jrz #start_over +; move a14,*a13(#TIMEOUT) +; jruc #loop2 +; +;#press +; ;we have a button press. Is it super punch? +; btst PLAYER_SPUNCH_BIT,a0 +;; jrz #start_over ;wrong button. No good. +; jrz #loop2 +; btst PLAYER_PUNCH_BIT,a0 +; jrz #loop2 +; +; ;Check for a towards on the stick. +; move *a8(STICK_VAL_CUR),a0 +;; jrz #start_over ;no stick at all. No good. +; jrz #loop2 +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip2 +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip2 +; btst MOVE_RIGHT_BIT,a0 +;; jrz #start_over ;pooched it +; jrz #loop2 +; +;;success! Check for the UNINT bit, then queue it up. +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over +; +; movi dnk_4_earslap_anim,a14 +; +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #start_over +; +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; jruc #start_over + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/DOINK.BAT b/DOINK.BAT new file mode 100755 index 0000000..f0ae8f1 --- /dev/null +++ b/DOINK.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld doink dnk_hit dnk_kik dnk_msc dnk_new dnk_pnc dnk_spc dnk_wlk dnk_mjt dnk_rjr dnk_jms dnk_fun +@copy doink.ld1 + doink.ld2 doink.lod +@move doink.h ..\doinkimg.h +@move doink.seq .. + \ No newline at end of file diff --git a/DOINKIMG.ASM b/DOINKIMG.ASM new file mode 100755 index 0000000..d91388e --- /dev/null +++ b/DOINKIMG.ASM @@ -0,0 +1,21 @@ + .FILE "doinkimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include doinkimg.tbl + .include doinkimg.h + +****************************************************************************** + + .even + .include "doink.seq" + + .global D2ST2B03 + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/DOINKIMG.H b/DOINKIMG.H new file mode 100755 index 0000000..0ee7942 --- /dev/null +++ b/DOINKIMG.H @@ -0,0 +1,101 @@ + .global D4BK3A + .global D2AH2A + .global D2GD2A + .global D3AE3B + .global D3AH3B + .global D3AM3A + .global D3GU4A + .global D3RC3A + .global D3SA3A + .global D3UC3A + .global D4LB4A + .global D4LB4B + .global D2KM3B + .global D2KM3D + .global D2NM3A + .global D3MP3A + .global D4KM3A + .global D4MP4D + .global D4NM3B + .global D3DC3C + .global D2CR1A + .global D2CT2A + .global D2CT2B + .global D2CT2C + .global D3CR3D + .global D3RL1B + .global D4FM4A + .global D4GF3A + .global D4JD4A + .global D4MF4A + .global D4SW4C + .global D5WN5B + .global D5WN5Z + .global D4BZ3A + .global D3BF3A + .global D3HP3A + .global D4KH3A + .global D4SK4A + .global D4BZ4A + .global D2BC3A + .global D2PJ2A + .global D2PU3A + .global D4BC3A + .global D4PJ4A + .global D4PS3A + .global D4PU3C + .global D5GD3A + .global D4BS3A + .global D2BS3A + .global D2RG3B + .global D4RG3A + .global D2TW2B + .global D4TW4B + .global D1TR5Z + .global D1TT5Z + .global D2ST2B + .global D2WL1A + .global D2WL2A + .global D2WL4B + .global D3BO3B + .global D3RN3B + .global D4ST4E + .global D4TH4A + .global D4WL2A + .global D4WL4A + .global D4WL5A + .global D3TP3A + .global D3ZS3A + .global D3AB3A + .global D4POGO + .global D3BK3Z + .global D3HT3Q + .global D4SQ4A + .global D4CO4A + .global D3GS3X + .global D4HS3B + .global D3HT3Z + .global D3PP3A + .global D4YR3B + .global D4GH3A + .global D3AK3A + .global D4PN5A + .global D5GD4A + .global D3PP3Z + .global D3PD3Z + .global D3DD3C + .global D3SA3X + .global D3TN3A + .global D3RR3Z + .global D3PM4C + .global D3OS3A + .global D3FD3E + .global D4GP3C + .global D3ES3A + .global D4HM4A + .global D2KB3A + .global D4KB3A + .global D3SK3X + .global D4WA4A + .global D3CS3Z + .global A4ST4J diff --git a/DOINKST.H b/DOINKST.H new file mode 100755 index 0000000..8d0aaf3 --- /dev/null +++ b/DOINKST.H @@ -0,0 +1,234 @@ +; +; Story lines for story 1 of doink +; +; Compressed string "THE CROWD WENT WILD IN" +doink_story1_line1 + .byte 075h,06ah,006h,0e4h,00ch,0e3h,065h,080h + .byte 09bh,06fh,01dh,0e0h,06ah,05bh,006h,0eah + .byte 00bh,000h + .even + +; Compressed string "CELEBRATION OF DOINK'S VICTORY!" +doink_story1_line2 + .byte 0a4h,0d9h,09ah,0e3h,02ch,0d6h,02ah,0fch + .byte 006h,0f0h,019h,094h,0b0h,0fah,0b2h,008h + .byte 01dh,0dch,02ah,059h,0c3h,0b3h,02eh,000h + .even + +; Compressed string "FOR AN ENCORE, DOINK DISHED OUT" +doink_story1_line3 + .byte 027h,03ch,007h,0e2h,01bh,098h,02fh,009h + .byte 0cfh,066h,013h,094h,0b0h,0fah,0b2h,041h + .byte 0a9h,0d2h,0a9h,059h,006h,0b0h,05dh,003h + .even + +; Compressed string "A FEW FINAL BLOWS WITH HIS" +doink_story1_line4 + .byte 062h,070h,09ah,078h,070h,0aah,0afh,0d8h + .byte 006h,063h,00bh,0e3h,074h,080h,0abh,075h + .byte 01ah,0a4h,02ah,00dh,000h + .even + +; Compressed string "HAMMER TO EACH OF HIS" +doink_story1_line5 + .byte 0a9h,0e8h,0bah,0e6h,01ch,0d4h,070h,060h + .byte 08ah,064h,01ah,0c0h,067h,090h,0aah,034h + .byte 000h + .even + +; Compressed string "UNCONSCIOUS OPPONENTS. WHILE" +doink_story1_line6 + .byte 0f6h,04bh,0c2h,02fh,04dh,0aah,0b0h,04dh + .byte 007h,070h,01ch,0c3h,0afh,0f9h,0d6h,0f4h + .byte 013h,004h,078h,0aah,0b6h,026h,000h + .even + +; Compressed string "THE CIRCUS MUSIC BLARED, DINK" +doink_story1_line7 + .byte 075h,06ah,006h,0a4h,03ah,093h,036h,01dh + .byte 0b8h,036h,0adh,092h,0c1h,0d8h,08ah,0b3h + .byte 059h,036h,041h,0a9h,0beh,02ch,000h + .even + +; Compressed string "AND SOME CLOWN FRIENDS BUMBLED" +doink_story1_line8 + .byte 0e2h,05bh,006h,034h,0ech,09ah,001h,0d9h + .byte 0c2h,0f8h,01bh,09ch,0b3h,06ah,0beh,025h + .byte 01dh,08ch,0b6h,03bh,0b6h,066h,009h,000h + .even + +; Compressed string "INTO THE ARENA ON ELEPHANTS AND" +doink_story1_line9 + .byte 0eah,05bh,0c3h,041h,09dh,09ah,081h,038h + .byte 09bh,0afh,018h,0c0h,06fh,060h,0b6h,066h + .byte 09ch,08ah,06fh,04dh,007h,0e2h,05bh,002h + .even + +; Compressed string "DREW LAUGHTER FROM THE AUDIENCE." +doink_story1_line10 + .byte 0e5h,06ch,0e2h,041h,02bh,0dah,068h,05ah + .byte 09bh,073h,070h,0ceh,0b0h,01bh,0d4h,0a9h + .byte 019h,088h,076h,0a9h,09ah,02fh,069h,03eh + .byte 000h + .even + +; Compressed string " EVERYONE WAS DANCING AND HAVING" +doink_story1_line11 + .byte 081h,079h,09bh,0b3h,00eh,0bfh,066h,080h + .byte 08bh,074h,050h,08ah,02fh,0a9h,0beh,068h + .byte 020h,0beh,065h,090h,08ah,0b7h,0fah,0a2h + .byte 000h + .even + +; Compressed string "A GREAT TIME AS THE FIREWORKS" +doink_story1_line12 + .byte 062h,080h,0ceh,0a6h,058h,007h,0b5h,0eah + .byte 09ah,081h,048h,007h,075h,06ah,006h,0a7h + .byte 03ah,09bh,038h,03ch,0b3h,034h,000h + .even + +; Compressed string "WENT OFF ALL AROUND THEM ...." +doink_story1_line13 + .byte 0b8h,0f9h,0d6h,001h,07ch,09eh,081h,0d8h + .byte 0b6h,081h,038h,0c3h,0f6h,05bh,006h,075h + .byte 06ah,0bah,0c1h,0f3h,03ch,00fh,000h + .even + +; Compressed string "UNTIL ONE OF THE SKYROCKETS" +doink_story1_line14 + .byte 0f6h,05bh,0abh,06dh,000h,0bfh,066h,000h + .byte 09fh,041h,09dh,09ah,001h,0cdh,0eah,033h + .byte 04ch,0b2h,066h,04dh,003h + .even + +; Compressed string "EXPLODED TOO CLOSE TO THE" +doink_story1_line15 + .byte 066h,01eh,0b7h,070h,069h,096h,041h,00dh + .byte 0c3h,001h,0d9h,0c2h,0b4h,019h,0d4h,070h + .byte 050h,0a7h,026h,000h + .even + +; Compressed string "ELEPHANTS AND CAUSED THEM TO" +doink_story1_line16 + .byte 066h,06bh,0c6h,0a9h,0f8h,0d6h,074h,020h + .byte 0beh,065h,040h,08ah,036h,06dh,096h,041h + .byte 09dh,09ah,06eh,050h,0c3h,000h + .even + +; Compressed string "PANIC. THEY TRAMPLED DOWN THE" +doink_story1_line17 + .byte 0b1h,0f8h,0aah,0e4h,013h,0d4h,0a9h,0a9h + .byte 007h,0f5h,02ch,0bah,071h,06bh,096h,041h + .byte 009h,0e3h,06fh,050h,0a7h,026h,000h + .even + +; Compressed string "ENTIRE RING AND A SIZABLE" +doink_story1_line18 + .byte 0e6h,05bh,0abh,0b3h,019h,0cch,0eah,08bh + .byte 006h,0e2h,05bh,006h,062h,040h,0abh,0bbh + .byte 038h,0b6h,026h,000h + .even + +; Compressed string "PERCENTAGE OF THE AUDIENCE AS" +doink_story1_line19 + .byte 0b1h,039h,093h,0e6h,05bh,08bh,0a8h,019h + .byte 0c0h,067h,050h,0a7h,066h,020h,0dah,0a5h + .byte 06ah,0beh,0a4h,019h,088h,034h,000h + .even + +; Compressed string "WELL. IT TOOK A FEW HOURS AND" +doink_story1_line20 + .byte 0b8h,0d9h,0b6h,04fh,010h,0a8h,075h,050h + .byte 0c3h,030h,01bh,088h,0c1h,069h,0e2h,041h + .byte 00ah,0dbh,033h,01dh,088h,06fh,009h,000h + .even + +; Compressed string "SEVERAL HUNDRED TRANQUILIZER" +doink_story1_line21 + .byte 0b4h,079h,09bh,0b3h,0d8h,006h,0a9h,0fdh + .byte 096h,0b3h,059h,006h,0f5h,02ch,0beh,0b2h + .byte 0adh,0b6h,0eah,06eh,0ceh,000h + .even + +; Compressed string "DARTS TO GET THE SITUATION UNDER" +doink_story1_line22 + .byte 0a5h,038h,0d7h,074h,050h,0c3h,001h,06ah + .byte 0d6h,041h,09dh,09ah,001h,0adh,0d6h,0b6h + .byte 058h,0abh,0f0h,01bh,0d8h,06fh,069h,0ceh + .byte 000h + .even + +; Compressed string "CONTROL, BUT THE SURVIVORS OF" +doink_story1_line23 + .byte 024h,0fch,0d6h,033h,0dch,036h,0c1h,068h + .byte 0d7h,041h,09dh,09ah,001h,06dh,0cfh,0b7h + .byte 07ah,0c3h,033h,01dh,0c0h,027h,000h + .even + +; Compressed string "THE AUDIENCE CLAIMED TO HAVE HAD" +doink_story1_line24 + .byte 075h,06ah,006h,0a2h,05dh,0aah,0e6h,04bh + .byte 09ah,001h,0d9h,08ah,0aah,06bh,096h,041h + .byte 00dh,007h,0a9h,078h,09bh,041h,02ah,096h + .byte 000h + .even + +; Compressed string "THE TIME OF THEIR LIVES THAT" +doink_story1_line25 + .byte 075h,06ah,006h,0b5h,0eah,09ah,001h,07ch + .byte 006h,075h,06ah,0aah,073h,0d0h,0aah,0b7h + .byte 049h,007h,075h,02ah,0d6h,000h + .even + +; Compressed string "NIGHT. THAT WAS DOINK'S ULTIMATE" +doink_story1_line26 + .byte 0afh,08ah,0a6h,0f5h,013h,0d4h,0a9h,058h + .byte 007h,0b8h,048h,007h,025h,0ach,0beh,02ch + .byte 042h,007h,076h,05bh,0abh,0aeh,058h,09bh + .byte 000h + .even + +; Compressed string "REWARD!" +doink_story1_line27 + .byte 0b3h,089h,08bh,073h,029h,000h + .even + +; +; Story line table for Story 1 of doink +; +doink_story_tbl1 + .long doink_story1_line1 + .long doink_story1_line2 + .long doink_story1_line3 + .long doink_story1_line4 + .long doink_story1_line5 + .long doink_story1_line6 + .long doink_story1_line7 + .long doink_story1_line8 + .long doink_story1_line9 + .long doink_story1_line10 + .long doink_story1_line11 + .long doink_story1_line12 + .long doink_story1_line13 + .long doink_story1_line14 + .long doink_story1_line15 + .long doink_story1_line16 + .long doink_story1_line17 + .long doink_story1_line18 + .long doink_story1_line19 + .long doink_story1_line20 + .long doink_story1_line21 + .long doink_story1_line22 + .long doink_story1_line23 + .long doink_story1_line24 + .long doink_story1_line25 + .long doink_story1_line26 + .long doink_story1_line27 + .long 0 + +; +; Table of stories for doink +; +doink_stories + .long doink_story_tbl1 + diff --git a/DO_DAY.BAT b/DO_DAY.BAT new file mode 100755 index 0000000..0391bb1 --- /dev/null +++ b/DO_DAY.BAT @@ -0,0 +1,16 @@ +cd c:\video\wwf\zips\back +xcopy c:\video\wwf\*.asm /a +xcopy c:\video\wwf\*.equ /a +xcopy c:\video\wwf\*.h /a +xcopy c:\video\wwf\makefile /a +xcopy c:\video\wwf\make.ini /a +xcopy c:\video\wwf\*.cmd /a +xcopy c:\video\wwf\*.bat /a +xcopy c:\video\wwf\img\*.bat /a +xcopy c:\video\wwf\img\*.lod /a +xcopy c:\video\wwf\img\*.ld1 /a +xcopy c:\video\wwf\img\*.bdb /a +xcopy c:\video\wwf\img\*.bdd /a +xcopy c:\video\wwf\img\*.img /a +pkzip stuff.zip *.* +split stuff 500 zip diff --git a/DRONE.ASM b/DRONE.ASM new file mode 100755 index 0000000..384ea96 --- /dev/null +++ b/DRONE.ASM @@ -0,0 +1,3231 @@ + ;Yoko tb on out of ring opp + ;UT pin bug + ;Atk sometimes instead of blk +;Chk dnk buzz blk + ;No leap head grab +;Don't have drones do power moves unless human has. +;Yoko should take advantage of salt throw + ;Drones wait in your face for too long. + ;DL blk for hiptoss + ;Harder + ;Atk down opp + ;Anti run code, esp out of ctrl + ;Fling and chase + ;Short repeat atks + ;Do more head holds from in close - thru block + ;Seek on a blocker, do headhold + ;Make multi drones easier... + ;Too many runs + ;Break out of runs more... +;Climb TB after a toss out + ;Sometimes, drone won't move from top of TB + ;Don't let go charge moves if opp is blocking + ;In multi-wrestler matches, delay longer on power moves from headhold or revs +;Yoko can run right into drone and knock him down. +;Get smart on big boots, missed/blocked buzzers, etc. + ;Ignore pushes from opponent, try an attack +;Specific combo paths + ;Pin fast + ;Multi wres spacing + ;Get in ring + ;Check blocking +;Fix seek_dirdist out of ring + ;Slide htoss on flying opp +************************************************************** +* +* Software: Shawn Liptak +* Initiated: 11/21/94 +* +* Modified: Shawn Liptak, 11/21/94 -Started wrestling +* +* COPYRIGHT (C) 1994 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 6/29/95 15:42 +************************************************************** + .file "drone.asm" + .title "wrestling drone code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" + .include "display.equ" + .include "gsp.equ" + .include "sys.equ" + .include "audit.equ" + .include "game.equ" + .include "anim.equ" + .include "plyr.equ" + .include "ring.equ" + .include "damage.equ" + + +;sounds external + + +;symbols externally defined + + .ref process_ptrs,PSTATUS + .ref PCNT,round_tickcount + + .ref CHECK_COMBO_GO + + .ref GET_ADJ + .ref p1winstreakd,p1rounds,current_round + .ref LADDER,CURRENT_LADDER + + .ref change_anim1a + .ref hrt_4_taunt_anim,rzr_4_taunt_anim,und_4_taunt_anim + .ref yok_4_taunt_anim,shn_4_taunt_anim,bam_4_taunt_anim + .ref dnk_4_taunt_anim,lex_4_taunt_anim + + +;symbols defined in this file + + +;uninitialized ram definitions + + BSSX droneoff ,16 ;!0=Drone code off + .bss atkcnt_t,AT_NUM*NUM_WRES*16 ;# times hit by each atk + + +;equates for this file + +BLKTEST .equ 0 + +U_M .equ MOVE_UP<<5 +D_M .equ MOVE_DOWN<<5 +L_M .equ MOVE_LEFT<<5 +R_M .equ MOVE_RIGHT<<5 + +P_M .equ PLAYER_PUNCH_VAL +B_M .equ PLAYER_BLOCK_VAL +SP_M .equ PLAYER_SPUNCH_VAL +K_M .equ PLAYER_KICK_VAL +SK_M .equ PLAYER_SKICK_VAL + + .if MODE_NORMAL!=0 + .emsg "FIX code!" + .endif + + + .text + +#*************************************************************** +* Main drone logic +* A13 = *Plyr process +* Trashes scratch, A2-A10, B2-B7 + + SUBR drone_main + + .if DEBUG + move @droneoff,a0 + jrnz #xx + .endif + + + move *a13(DRN_BUT),a6 ;A6=Old buts + move *a13(DRN_JOY),a7 ;A7=Old joy + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a8,L ;A8=*Closest's proc + +; callr drone_getcurskillo +; move a0,a10 + move *a13(DRN_SKILL),a10 + X16 a10 ;A10=Skill for indexing (*16) + + move *a13(PLYRMODE),a0 + move a0,b6 ;B6=My pmode + move *a8(PLYRMODE),a0 + move a0,b7 ;B7=Opp pmode + +;陳陳陳陳陳陳陳 >Find friendly wrestlers + + movi process_ptrs,a2 + movk NUM_WRES,b0 + clr b2 ;B2=Team dist ranking (0-2) + clr b3 ;B3=# alive on my team (0-3) +#fflp + move *a2+,a3,L + jrz #ffnxt + + move *a13(PLYR_SIDE),a0 + move *a3(PLYR_SIDE),a1 + cmp a0,a1 + jrne #ffnxt ;Not on my team? + + move *a3(PLYRMODE),a0 + subk MODE_DEAD,a0 + jreq #ffnxt + + addk 1,b3 + + move *a13(CLOSEST_NUM),a0 + move *a3(CLOSEST_NUM),a1 + cmp a0,a1 + jrne #ffnxt ;Diff opponents? + + move *a13(CLOSEST_DIST),a0 + move *a3(CLOSEST_DIST),a1 + cmp a1,a0 + jrle #ffnxt ;I'm closer? + + addk 1,b2 +#ffnxt + dsj b0,#fflp + +#ffdn + move b2,b2 + jrz #ffdoit ;I'm closest? + + move *a13(DRN_ACT_p),a9,L + jrnz #ffx ;Script running? + + move *a13(DRN_MODE),a0 + movi -3,a1 + move a1,*a13(DRN_MODE) ;Set mode + addk 3,a0 + jrne #newmdm3 ;Init hang back? + jruc #ffx + +#ffdoit + move *a13(DRN_MODE),a0 + addk 3,a0 + jreq #newmd ;Set new mode if in hang back? + +#ffx +;陳陳陳陳陳陳陳 >Random mode changes + + move @PCNT,a0 + sll 32-5,a0 + jrnz #nomdchk + + movk 3,a0 + callr rnd + jrnz #nomdchk + + move *a13(DRN_MODE),a0 + addk 3,a0 + jrle #mcnosc ;Hang back? +#newmd + movk 1,a0 ;No aggressive + move @CURRENT_LADDER,a1,L ;* to position + cmpi LADDER,a1 + jreq #mdeasy ;1st ladder? + + movk 3,a0 ;Range + cmpi 13*16,a10 + jrle #mdeasy + addk 1,a0 ;More aggressive +#mdeasy + callr rndrng0 + subk 2,a0 + move a0,*a13(DRN_MODE) ;-2 to 2 + + move *a13(DRN_ACT_p),a9,L + jrnz #mcnosc ;Script running? + clr a0 + move a0,*a13(DRN_JOY) ;So we don't walk into ropes +#mcnosc +#newmdm3 + movk 4,a2 ;Rgt side + move *a13(OBJ_XPOSINT),a0 + move *a8(OBJ_XPOSINT),a1 + sub a1,a0 + jrge #metorgt + movk 12,a2 ;Left side +#metorgt + move a2,*a13(DRN_SEEKDIR) + + movk 4,a0 + callr rndrng0 + + move *a13(DRN_MODE),a1 + addk 3,a1 + jrne #nodhb ;!Hang back? + ANDK 1,a0 ;Make 3-4 or 4-5 + addk 2,a0 + move b2,a14 + add a14,a0 +#nodhb + move a0,*a13(DRN_SEEKDIST) + +#nomdchk +;陳陳陳陳陳陳陳 >Passive mode movement + + .if BLKTEST + jruc #skmv + .endif + + move *a13(DRN_MODE),a0 + jrge #skmv ;Aggressive? + + move b6,b6 + jrnz #skmv ;!MODE_NORMAL? + + move *a13(DRN_ACT_p),a9,L + jrnz #skmv ;Script running? + + callr drone_seekdirdist +#skmv + +;陳陳陳陳陳陳陳 >Dec charge delay + + move *a13(DRN_BUTCHRG),a0 + jrz #nochrgn + + move *a13(DRN_BUTCHRGDLY),a0 + subk 1,a0 + move a0,*a13(DRN_BUTCHRGDLY) +#nochrgn + +;陳陳陳陳陳陳陳 >Handle getup time + + move *a13(GETUP_TIME),a2 + jrle #nogt + + movi 99,a0 + callr rndrng0 + move a10,a1 + addi #getup_t,a1 + move *a1,a1 + cmp a1,a0 + jrge #dsabt + + subk 5,a2 + jrge #gtok + clr a2 +#gtok move a2,*a13(GETUP_TIME) + jruc #dsabt +#nogt +;陳陳陳陳陳陳陳 + + move *a13(DRN_DELAY),a0 + subk 1,a0 + jrle #newact + move a0,*a13(DRN_DELAY) + jruc #x +#newact +;陳陳陳陳陳陳陳 >Block detection + + move *a8(ATTACK_TIME),a4 + move @round_tickcount,a5 + sub a5,a4 ;-=Attack passed, +=Ticks till atk + jrlt #noblk + + movi 50,a1 ;Closer Z allowed + move *a8(ATTACK_TYPE),a2 + cmpi AT_PUSH,a2 + jreq #noblk + cmpi AT_MSL,a2 + jreq #msla ;Missile atk? + + move *a13(CLOSEST_XDIST),a0 + cmpi 180,a0 + jrgt #noblk ;Too far? + movi 100,a1 +#msla + move *a13(CLOSEST_ZDIST),a0 + cmp a1,a0 + jrgt #noblk ;Too far? + + move *a8(GETUP_TIME),a14 + jrgt #noblk ;Out of control? + + cmpi MODE_INAIR2,b7 + jreq #noblk ;Jumping on me? + + btst PLAYER_BLOCK_BIT,a6 + jrnz #x ;Trying to blk? + + move *a8(ATTACK_TYPE),a2 + move *a13(PLYRNUM),a0 + movi AT_NUM,a3 + mpys a0,a3 + add a2,a3 + X16 a3 + addi atkcnt_t,a3 + + move *a3,a2 ;# missed blks + cmpi 10,a2 + jrlo #acok + movk 9,a2 +#acok + X16 a2 + addi #blkatk_t,a2 + move *a2,a2 ;Get % + + move b3,a14 ;# on team + subk 1,a14 + X32 a14 + sub a14,a2 ;Decrease per extra bud + + .if BLKTEST + movi 100,a2 + .endif + + movi 99,a0 + callr rndrng0 + move a10,a1 + addi #blkbase_t,a1 + move *a1,a1 ;Base % + add a2,a1 + cmp a1,a0 + jrge #missb + + cmpi 15,a4 + jrge #minbtok ;Min time OK? + movk 15,a4 +#minbtok + + move *a8(ATTACK_TYPE),a2 + cmpi AT_LEAPING,a2 + jrne #sblk ;!Leaping? + +; LOCKUP + + move a10,a0 + srl 4+2,a0 ;Skill/4 + callr rndrng0 + move a0,a0 + jrz #sblk ;Skip? + + move a5,*a8(ATTACK_TIME) ;Cancel + + movi slhtoss,a9 ;Flip opp + jruc #newsc + +#sblk + move a4,*a13(DRN_DELAY) + + movk B_M,a0 ;Block it + move a0,*a13(DRN_BUT) + + cmpi AT_PUPPET,a2 + jrne #dsabt ;!Hip toss? + + movi B_M+L_M+D_M,a0 ;Special block + move a4,a3 ;Dly + clr a9 + jruc #setbx + +#missb + move a5,*a8(ATTACK_TIME) ;Cancel + + move *a3,a0 ;Cnt+1 + addk 1,a0 + move a0,*a3 + +#noblk +;陳陳陳陳陳陳陳 >New script selection + + move *a13(DRN_ACT_p),a9,L ;A9=*Script + jrnz #cact ;Continue script? + + + clr a2 + + cmpi MODE_BLOCK,b6 + jrne #nps ;!Blking? + btst PLAYER_PUNCH_BIT,a6 + jrnz #nps ;Already pushed? + + .if BLKTEST + jruc #nps + .endif + + movk 7,a0 + callr rndrng0 + move a0,a0 + jrnz #nps ;Skip 88%? + + move *a13(CLOSEST_XDIST),a0 + cmpi 110,a0 + jrgt #nps ;Too far? + move *a13(CLOSEST_ZDIST),a0 + cmpi 40,a0 + jrgt #nps ;Too far? + movk P_M+B_M,a2 ;Push + move a2,*a13(DRN_BUT) + jruc #x +#nps + move a2,*a13(DRN_BUT) + + .if BLKTEST + jruc #x + .endif + + + move b6,b6 + jrnz #doact ;!MODE_NORMAL? + + + move *a13(INRING),a0 + jrz #ringok ;In ring? + + move *a8(INRING),a0 + jrnz #ringok ;Opp out? + + movi drn_enterring,a9 + jruc #newsc +#ringok + + move *a13(DRN_MODE),a3 + cmpi -3,a3 + jrle #pass ;Hang back? + + cmpi MODE_ONGROUND,b7 + jreq #doact ;Atk? + + cmpi MODE_INAIR2,b7 + jrne #onia + movi drn_opinair,a9 ;Avoid jump + jruc #newsc +#onia + cmpi MODE_RUNNING,b7 + jrne #onrun + move *a13(CLOSEST_XDIST),a0 + cmpi 80,a0 + jrle #onrun ;Too close? + movi drn_oprun,a9 ;Anti run + jruc #newsc +#onrun + + move *a8(ATTACK_TIME),a0 + move @round_tickcount,a1 + sub a1,a0 ;-=Attack passed, +=Ticks till atk + addk 15,a0 + jrge #doact ;Get him after his atk (or no blk)? + + + move a3,a3 + jrlt #pass ;Passive? + + movk 1fh,a0 ;.6 sec + cmpi 22*16,a10 + jrle #cat + movk 7,a0 ;.15 sec +#cat + callr rnd + jrz #doactpup ;Atk? + + +#pass + move @PCNT,a0 ;Chk every 16 + addk 1,a0 + sll 32-4,a0 + jrnz #x + + move *a13(CLOSEST_XDIST),a1 + move *a13(CLOSEST_ZDIST),a14 + cmp a1,a14 + jrge #big + move a1,a14 +#big + cmpi 70,a14 + jrlt #doactpup ;Opp in my face? Attack! + + move *a13(DRN_MODE),a0 + addk 3,a0 + jrle #x ;Hang back? + + move @CURRENT_LADDER,a1,L ;* to position + cmpi LADDER,a1 + jreq #nratk ;1st ladder? + + movk 0fh,a0 ;Avg 4.8 sec + callr rnd + jrz #doactpup ;Random attack? +#nratk + move b7,b7 + jrz #x ;Opp MODE_NORMAL? Be passive +#doactpup + move b7,a0 + subk MODE_PUPPET2,a0 + jreq #x + subk MODE_PUPPET-MODE_PUPPET2,a0 + jreq #x + cmpi MODE_HEADHELD,b7 + jreq #x + cmpi MODE_HEADHOLD,b7 + jreq #x + cmpi MODE_ATTACHED,b7 + jreq #x + + +#doact + cmpi MODE_HEADHELD,b6 + jreq #slctscrpt + + cmpi MODE_ONGROUND,b6 + jrne #nognd + movi drn_roll,a9 + jruc #newsc +#nognd + cmpi MODE_INAIR2,b6 + jrne #nin2 + movi drn_inair,a9 + jruc #newsc +#nin2 + cmpi MODE_ONTURNBKL,b6 + jrne #notb + movi drn_ontb,a9 + jruc #newsc +#notb + cmpi MODE_DEAD,b6 + jrne #ndead + movk 7,a0 + callr rnd + jruc #butx +#ndead + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #unint ;Wait? + + cmpi MODE_RUNNING,b6 + jrne #nrun + movi drn_run,a9 + jruc #newsc +#nrun + + cmpi MODE_HEADHOLD,b6 + jrne #nhh + + clr a0 + move a0,*a13(DRN_BUTCHRG) ;Clr it + +; movk 1,a0 ;50% +; callr rnd +; jrnz #nhh ;Don't combo? + + move a8,a3 + move a13,a8 + calla CHECK_COMBO_GO + jrlt #ncmb ;Can't combo? + move a3,a8 + movi drn_combo,a9 + jruc #newsc +#ncmb + move a3,a8 +#nhh + + move *a13(DRN_BUTCHRG),a0 + jrz #nochrg + + move *a13(DRN_BUTCHRGDLY),a0 + jrgt #nochrg + + cmpi MODE_BLOCK,b7 + jreq #nochrg ;Opp blking? + + move *a13(DRN_BUTCHRG_p),a9,L ;Fire charge + jruc #newsc +#nochrg + + move *a13(CLOSEST_DIST),a14 + cmpi 200,a14 + jrgt #opnb + + cmpi MODE_BLOCK,b7 + jrne #opnb ;!Blking? + + move *a13(CLOSEST_ZDIST),a14 + cmpi 40,a14 + jrgt #bsk + + move *a13(CLOSEST_XDIST),a14 + cmpi 60,a14 + jrgt #bsk + + move *a8(STICK_REL_CUR),a14 + cmpi MOVE_DOWN_LEFT,a14 + jreq #bht ;Hip toss blocked? + + movi M_shrtblkr,a9 ;Attack + jruc #getscrpt +#bht + movi M_shrtblkrdl,a9 ;Attack + jruc #getscrpt +; movi hgrab,a9 +; jruc #newsc +#bsk + movi drn_seekclose,a9 + jruc #newsc +#opnb + + cmpi MODE_DEAD,b7 + jrne #opnd + + movi drn_oppdead,a9 + jruc #newsc +#opnd + +#slctscrpt + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #wnshort_t,a0 + + move *a13(CLOSEST_XDIST),a1 + move *a13(CLOSEST_ZDIST),a14 + X2 a14 ;Z*2 + cmp a1,a14 + jrge #havebig + move a1,a14 +#havebig + cmpi 100,a14 + jrlt #shrt + addi #wnmed_t-#wnshort_t,a0 + + cmpi 180,a14 + jrlt #med + addi #wnlong_t-#wnmed_t,a0 +#shrt +#med + move *a0,a9,L ;Get * mode list + move b6,a2 + move b7,a3 +#mdlp + movb *a9,a0 ;My mode # + addk 8,a9 + movb *a9,a14 ;His mode # + addk 8,a9 + move *a9+,a1,L ;* script * table + + move a0,a0 + jrn #inochk ;Don't chk? + cmp a2,a0 + jrne #mdlp ;Not in mode? +#inochk + move a14,a14 + jrn #def ;Don't chk? + cmp a3,a14 + jrne #mdlp ;Not in mode? +#def + move a1,a9 +#getscrpt + move *a9+,a0 ;# entries + jrge #neok ;!Headhold? + abs a0 + cmpi 26*16,a10 + jrle #neok ;!Hard? + movk 1,a0 ;Only do first two +#neok + callr rndrng0 + X32 a0 + add a0,a9 + move *a9,a9,L ;* new script + +#newsc + move b6,a0 + move a0,*a13(DRN_SPMODE) + + + cmpi MODE_HEADHOLD,b6 + jrne #nhh2 + + movk 1,a3 + cmpi 2,b3 + jrlt #hhd1 ;1 opp? + movk 22,a3 +#hhd1 + movi sklhhdly_t,a0 + add a10,a0 ;+Offset + move *a0,a0 + callr rndrng0 + add a0,a3 ;Increase per extra bud + + move @PCNT,a0 + sll 32-1,a0 + jrz #hhdok ;Skip half of checks? + + cmpi 65,a3 + jrle #hhdok + movi 65,a3 ;Max delay +#hhdok + clr a0 + jruc #setbx +#nhh2 + + cmpi MODE_HEADHELD,b6 + jrne #nhhe + + clr a0 + move a0,*a13(DRN_BUTCHRG) ;Clr it + + move b3,a3 ;# on team + movk 7,a0 + callr rnd + jrz #hrskmp ;12% skip multiplyr delay? + subk 1,a3 + X16 a3 +#hrskmp + movi sklhrdly_t,a0 + add a10,a0 ;+Offset + move *a0,a0 + callr rndrng0 + addk 1,a0 + add a0,a3 ;Increase per extra bud + + move @PCNT,a0 + sll 32-1,a0 + jrz #hrdok ;Skip half of checks? + + cmpi 70,a3 + jrle #hrdok + movi 70,a3 ;Max delay +#hrdok + clr a0 + jruc #setbx +#nhhe + + +#cact +;陳陳陳陳陳陳陳 >Chk script for mode change + + move b6,a0 + jrz #mdsame ;MODE_NORMAL? + subk MODE_BLOCK,a0 + jreq #mdsame ;Treat as normal? + move *a13(DRN_SPMODE),a0 + move b6,a1 + cmp a1,a0 + .if DEBUG + jreq #dsok + jruc #dsabt ;For breakpoint +#dsok + .endif + jrne #dsabt + +#mdsame + + .if DEBUG + move a9,a9 ;Chk script * + jrz #a9ok + cmpi 0ff000000h,a9 + jrhs #a9ok + LOCKUP +#a9ok + .endif + +;陳陳陳陳陳陳陳 >Read script command +#scplp + move *a9+,a0 + jrge #nocd ;No command? + + sll 32-14,a0 + jrc #dsdone ;Done? (Bit 14) + + srl 32-14,a0 + +;陳陳陳陳陳陳陳 >Seek until 0 + + subk 1,a0 ;#1 + jrne #nseekt0 + + callr drone_seek + jrz #scplp + + subk 16,a9 + jruc #dsdone +#nseekt0 +;陳陳陳陳陳陳陳 >Random skill lvl abort + + subk 1,a0 ;#2 + jrne #nrnda + + cmpi MODE_BLOCK,b7 + jreq #dsabt ;Blking? + + move *a9+,a3,L ;*Skill table + +; clr a2 +; cmpi sklrev_t,a3 +; jrne #nsr +; move b3,a2 ;# on team +; subk 1,a2 +; X16 a2 +;#nsr + movi 99,a0 + callr rndrng0 + add a10,a3 ;+Offset + move *a3,a1 +; sub a2,a1 ;Decrease per extra bud + cmp a1,a0 + jrlt #scplp ;Cont? + + movk 10,a0 + move a0,*a13(DRN_DELAY) + + jruc #dsabt +#nrnda +;陳陳陳陳陳陳陳 >Wait till interruptable + + subk 1,a0 ;#3 + jrne #nwtint + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrz #scplp ;Off? + + subk 16,a9 + jruc #dsdone +#nwtint +;陳陳陳陳陳陳陳 >Abort if opponent blocking + + subk 1,a0 ;#4 + jrne #naib + + cmpi MODE_BLOCK,b7 + jrne #scplp ;!Blocked? + + jruc #dsabt +#naib +;陳陳陳陳陳陳陳 >Call code + + subk 1,a0 ;#5 + jrne #ncall + + move *a9+,a0,L + call a0 + + jruc #scplp +#ncall +;陳陳陳陳陳陳陳 >Rnd jump + + subk 1,a0 ;#6 + jrne #nrj + + movi 99,a0 + callr rndrng0 + move *a9+,a1 ;Percent to jmp + move *a9+,a2,L + cmp a1,a0 + jrge #scplp + + move a2,a9 ;New addr + jruc #scplp +#nrj +;陳陳陳陳陳陳陳 >Jump + + subk 1,a0 ;#7 + jrne #njmp + + move *a9+,a9,L + jruc #scplp +#njmp +;陳陳陳陳陳陳陳 >Call function + + exgpc a9 + jruc #scplp +#nocd +;陳陳陳陳陳陳陳 >Joy & button bits + + move *a9+,a3 ;Get delay +#setbx + move a0,a1 + sll 32-5,a0 + srl 32-5,a0 + move a0,*a13(DRN_BUT) + + srl 5,a1 + move *a13(FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #rgt ;Facing rgt? + + move a1,a0 ;>Flip L&R bits + move a1,a14 + sll 32-2,a1 + srl 3,a0 ;Bit0=Rgt + sll 32-3,a14 + srl 31,a14 + sll 1,a14 ;Bit1=Left + or a0,a1 + or a14,a1 + rl 2,a1 +#rgt + move a1,*a13(DRN_JOY) + + move a3,*a13(DRN_DELAY) + move a3,a3 + jrgt #dsdone +#dsabt + clr a9 +#dsdone + move a9,*a13(DRN_ACT_p),L + +#unint + +;陳陳陳陳陳陳陳 >Calc ctrl bit transitions +#x + move *a13(DRN_BUT),a0 +#butx + move *a13(DRN_BUTCHRG),a14 + or a14,a0 + move a0,*a13(DRN_BUT) + xor a0,a6 + move a6,a1 + and a0,a6 + move a6,*a13(DRN_BUTDT) + andn a0,a1 + move a1,*a13(DRN_BUTUT) + + move *a13(DRN_JOY),a0 + xor a0,a7 + move a7,a1 + and a0,a7 + move a7,*a13(DRN_JOYDT) + andn a0,a1 + move a1,*a13(DRN_JOYUT) + +#xx + rets + + +SKLM .macro w,ad + .word :w:,:w:+:ad:,:w:+:ad:*2,:w:+:ad:*3,:w:+:ad:*4 + .endm + +#getup_t ;% to bump getup time + SKLM 10,2 + SKLM 20,2 + SKLM 30,2 + SKLM 40,2 + SKLM 50,2 + SKLM 60,10 +#blkbase_t ;Base % to block + SKLM 10,2 + SKLM 20,2 + SKLM 30,1 + SKLM 35,1 + SKLM 40,1 + SKLM 47,7 +#blkatk_t ;% to block per attack + .word 0,10,20,30,40 + .word 50,50,50,50,50 +sklhhdly_t ;Max delay on hh + SKLM 150,-6 + SKLM 120,-6 + SKLM 90,-6 + SKLM 60,-6 + SKLM 28,-3 + SKLM 13,-2 +sklhrdly_t ;Max delay on hh rev + SKLM 150,-6 + SKLM 120,-6 + SKLM 90,-6 + SKLM 60,-6 + SKLM 28,-3 + SKLM 13,-2 +sklrep_t ;% to repeat + SKLM 20,4 + SKLM 45,2 + SKLM 55,4 + SKLM 75,2 + SKLM 85,2 + SKLM 90,3 + + +;#getup_t ;% to bump getup time +; SKLM 5,2 +; SKLM 15,1 +; SKLM 20,2 +; SKLM 30,2 +; SKLM 40,4 +; SKLM 60,10 +;#blkbase_t ;Base % to block +; SKLM 5,1 +; SKLM 10,2 +; SKLM 20,2 +; SKLM 30,1 +; SKLM 35,2 +; SKLM 45,7 +;#blkatk_t ;% to block per attack +; .word 0,10,20,30,40 +; .word 50,50,50,50,50 +;sklhhdly_t ;Max delay on hh +; SKLM 200,-10 +; SKLM 150,-6 +; SKLM 120,-9 +; SKLM 70,-8 +; SKLM 35,-4 +; SKLM 15,-2 +;sklhrdly_t ;Max delay on hh rev +; SKLM 200,-10 +; SKLM 150,-6 +; SKLM 120,-8 +; SKLM 70,-4 +; SKLM 50,-7 +; SKLM 15,-2 +;sklrep_t ;% to repeat +; SKLM 6,3 +; SKLM 20,4 +; SKLM 40,2 +; SKLM 50,4 +; SKLM 70,4 +; SKLM 90,3 +; + +#wnshort_t + .long bret_s_t,raz_s_t,utak_s_t,yoko_s_t + .long shawn_s_t,bam_s_t,doink_s_t,doink_s_t,lex_s_t +#wnmed_t + .long bret_m_t,raz_m_t,utak_m_t,yoko_m_t + .long shawn_m_t,bam_m_t,doink_m_t,doink_m_t,lex_m_t +#wnlong_t + .long bret_l_t,raz_l_t,utak_l_t,yoko_l_t + .long shawn_l_t,bam_l_t,doink_l_t,doink_l_t,lex_l_t + + +#******************************* +* Drone script commands + +BBL .macro w,w2,l + .byte :w:,:w2: + .long :l: + .endm + +DS_CODE .macro + .word 8000h+0 + .endm +DS_CODEEND .macro + exgpc a9 + .endm +DS_SEEKTIL0 .macro + .word 8000h+1 + .endm +DS_RNDA .macro l + .word 8000h+2 + .long :l: + .endm +DS_WTINT .macro + .word 8000h+3 + .endm +DS_ABIFBLK .macro + .word 8000h+4 + .endm +DS_CALL .macro a + .word 8000h+5 + .long :a: + .endm +DS_RJMP .macro p,a + .word 8000h+6,:p: + .long :a: + .endm +DS_JMP .macro a + .word 8000h+7 + .long :a: + .endm +DS_SLP1 .macro + .word 0c000h+0 + .endm +DS_END .macro + .word 0,0 + .endm + +;陳陳陳陳陳陳陳 >Bam bam scripts + +bam_s_t + BBL MODE_HEADHOLD,-1,baM_hh + BBL MODE_HEADHELD,-1,baM_hhr + BBL MODE_OPPOVERHEAD,-1,baM_ooh + BBL -1,MODE_ONGROUND,M_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,baM_n +bam_m_t + BBL MODE_HEADHOLD,-1,baM_hh + BBL MODE_HEADHELD,-1,baM_hhr + BBL MODE_OPPOVERHEAD,-1,baM_ooh + BBL -1,MODE_ONGROUND,Mm_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,baMm_n + +baM_n ;Normal + .word (baM_n_-$)/32-1 + .long #run + .long #p,#sp,#k,#sk + .long #spx + .long #hgrab,#hgrab,#hgrab + .long #flng + .long #htoss,#htoss + .long #llsk ;Karate kick + .long #spsk ;Pickup +baM_n_ +baMm_n + .word (baMm_n_-$)/32-1 + .long drn_seek + .long drn_retreat + .long #run + .long #sp + .long #sk +; .long #hgrab,#hgrab,#hgrab + .long #flng + .long #llsk ;Karate kick + .long #spsk ;Pickup + .long #fast ;Hyper + .long #chrg +baMm_n_ +baM_hh ;Holding head +; .word 1-1 +; .long #bahh + .word -(7-1) + .long #bahhpg ;Pogo + .long #lrrsp ;Pile drvr + .long #jk ;Pickup + .long #bahhrsk ;Knees (3 way) + .long #bahhrsk + .long #bahhrsk + .long #spsk2 ;Neck brkr + +baM_hhr ;Head held reversals + .word 4-1 + .long #k + .long #bahhpg ;Pogo + .long #lrrsp ;Pile drvr + .long #spsk2 ;Neck brkr + +baM_ooh ;Holding opp over head + .word 2-1 + .long #k ;Slam + .long #dsk ;Back brkr + +#bahhrsk ;Knees + .word R_M+SK_M,2 + .word 0,5 +;FIX! - chk timing + .word SK_M,4, 0,4, SK_M,4, 0,4, SK_M,4, 0,4 + DS_RNDA sklrep_t + .word SK_M,4, 0,4, SK_M,4, 0,4, SK_M,4, 0,4 + DS_RJMP 33,#k ;Hip toss + DS_RJMP 33,#sp ;Pickup + .word D_M+SP_M,0 ;Pile drvr +#bahhpg + .word U_M,2, D_M,2, 0,2, D_M,2, SK_M,50 + DS_RNDA sklrep_t + .word SP_M,2, 0,2, SP_M,2, 0,2, SP_M,2, 0,15 ;Repeat + DS_RNDA sklrep_t + .word SP_M,2, 0,2, SP_M,2, 0,2, SP_M,2, 0,15 + .word SP_M,2, 0,2, SP_M,2, 0,2, SP_M,0 + + +;陳陳陳陳陳陳陳 >Undertaker scripts + +utak_s_t + BBL MODE_HEADHOLD,-1,utM_hh + BBL MODE_HEADHELD,-1,M_hhr + BBL MODE_CHOKEHOLD,-1,utM_chold + BBL -1,MODE_ONGROUND,M_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,utM_n +utak_m_t + BBL MODE_HEADHOLD,-1,utM_hh + BBL MODE_HEADHELD,-1,M_hhr + BBL MODE_CHOKEHOLD,-1,utM_chold + BBL -1,MODE_ONGROUND,Mm_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,utMm_n + +utM_n ;Normal +; .word 1-1 +; .long #ut + .word (utM_n_-$)/32-1 + .long #run + .long #spx + .long #p,#sp,#k,#sk + .long #hgrab,#hgrab,#hgrab + .long #flng + .long #htoss,#htoss + .long #ucut + .long #utshootps ;Fire push ghosts + .long #utshootpl ;Fire pull ghosts + .long #uttombhit ;Smash with tombstone + .long #jp ;Slide choke +utM_n_ +utMm_n +; .word 1-1 +; .long #utshootpl + .word (utMm_n_-$)/32-1 + .long drn_seek + .long drn_retreat + .long #run + .long #sp + .long #sk +; .long #hgrab,#hgrab,#hgrab + .long #flng + .long #utshootps ;Fire push ghosts + .long #utshootpl ;Fire pull ghosts + .long #uttombhit ;Smash with tombstone + .long #jp ;Slide choke + .long #fast ;Hyper + .long #chrg +utMm_n_ +utM_hh ;Holding head + .word -(6-1) + .long #uddsk ;Pile drv + .long #lrrsp ;Neck brkr + .long #uthhrp + .long #ucut + .long #uttombhit ;Smash with tombstone + .long #utdk ;Face slam + +utM_chold ;Choke holding opp by neck + .word 7-1 + .long #p + .long #k + .long #htoss + .long #ucut + .long #utchup + .long #utdk ;Face slam + .long #dsk ;Slam + +#utshootps + .word R_M,2, 0,2, R_M,2, K_M,2, 0,2 + DS_WTINT + DS_ABIFBLK + .word P_M+K_M,0 +#utshootpl + .word L_M,2, 0,2, L_M,2, K_M,2, 0,2 + DS_WTINT + DS_ABIFBLK + .word D_M+SP_M,0 +#uttombhit + .word R_M,2, 0,2, R_M,2, SK_M,5 + DS_RNDA sklrep_t + .word K_M,4, 0,4, K_M,4, 0,4, K_M,4, 0,4 ;Repeat + DS_ABIFBLK + DS_RNDA sklrep_t + .word K_M,4, 0,4, K_M,4, 0,4, K_M,4, 0,4 + .word K_M,4, 0,4, K_M,4, 0,4, K_M,0 + +#uthhrp ;Knee & hdbuts + .word R_M+P_M,2 + .word 0,5 +;FIX! - chk timing + .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 + DS_RNDA sklrep_t + .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 + DS_RJMP 50,#sp ;Fly kick + .word K_M,0 ;Neck brkr + +#utchup ;Knee & hdbuts + .word U_M+P_M,2 + .word 0,5 + .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 + DS_RNDA sklrep_t + .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 + DS_RJMP 50,#sp ;Fly kick + .word K_M,0 ;Neck brkr + +#utdk ;Face slam + .word D_M,2, 0,2, D_M+K_M,2 + DS_RNDA sklrep_t + .word 0,5 + .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 ;Repeat + .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 + DS_RNDA sklrep_t + .word P_M,4, 0,4, P_M,4, 0,4, P_M,0 + + +;陳陳陳陳陳陳陳 >Doink scripts + +doink_s_t + BBL MODE_HEADHOLD,-1,doM_hh + BBL MODE_HEADHELD,-1,doM_hhr + BBL -1,MODE_ONGROUND,M_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,doM_n +doink_m_t + BBL MODE_HEADHOLD,-1,doM_hh + BBL MODE_HEADHELD,-1,doM_hhr + BBL -1,MODE_ONGROUND,Mm_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,doMm_n + +doM_n ;Normal +; .word 1-1 +; .long #eslap + .word (doM_n_-$)/32-1 + .long #run + .long #spx + .long #p,#sp,#k,#sk + .long #hgrab,#hgrab,#hgrab + .long #flng + .long #htoss,#htoss + .long #ucut + .long #doham ;Hammer + .long #doeslap ;Ear slap + .long #dopbig ;Boxing punch +doM_n_ +doMm_n +; .word 1-1 +; .long #doeslap + .word (doMm_n_-$)/32-1 + .long drn_seek + .long drn_retreat + .long #run + .long #sp + .long #sk +; .long #hgrab,#hgrab,#hgrab + .long #flng + .long #doham ;Hammer + .long #doeslap ;Ear slap + .long #fast ;Hyper + .long #chrg +doMm_n_ +doM_hh ;Holding head + .word -(8-1) + .long #uddskk ;Face slam + .long #lrrsp ;Pile drv + .long #doham + .long #j2p ;Buzz + .long #hhp3k ;P & fly kick + .long #hhp4 + .long #hhp3pd ;P & pdrv + .long #hhsk3pd ;K & pdrv + +doM_hhr ;Head held reversals + .word 3-1 + .long #k + .long #uddskk ;Face slam + .long #lrrsp ;Pile drv + +#doham .word R_M,2, 0,2, R_M,2, SK_M,10 + DS_RNDA sklrep_t + .word K_M,4, 0,4, K_M,4, 0,4, K_M,4, 0,4 ;Repeat + DS_RNDA sklrep_t + .word K_M,4, 0,4, K_M,4, 0,4, K_M,4, 0,4 + .word K_M,4, 0,4, K_M,4, 0,4, K_M,0 + +#doeslap + .word D_M,2, D_M+R_M,2, R_M,2, P_M,2 + DS_RNDA sklrep_t + .word 0,5, P_M,5, 0,5, P_M,5 ;Repeat + DS_RNDA sklrep_t + .word 0,5, P_M,5, 0,5, P_M,5 + .word 0,5, P_M,5, 0,5, P_M,0 + +#dopbig .word P_M,2, 0,2, P_M,2, 0,2, P_M,2, 0,2, P_M,2, 0,2 + .word P_M,2, 0,2, P_M,2, 0,2, P_M,0 + + +;陳陳陳陳陳陳陳 >Yoko scripts + +yoko_s_t + BBL MODE_HEADHOLD,-1,yoM_hh + BBL MODE_HEADHELD,-1,M_hhr + BBL MODE_OPPOVERHEAD,-1,yoM_ooh + BBL -1,MODE_ONGROUND,M_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,yoM_n +yoko_m_t + BBL MODE_HEADHOLD,-1,yoM_hh + BBL MODE_HEADHELD,-1,M_hhr + BBL MODE_OPPOVERHEAD,-1,yoM_ooh + BBL -1,MODE_ONGROUND,Mm_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,yoMm_n + +yoM_n ;Normal +; .word 1-1 +; .long #eslap + .word (yoM_n_-$)/32-1 + .long #run + .long #spx + .long #p,#sp,#k,#sk + .long #hgrab,#hgrab,#hgrab + .long #flng + .long #htoss,#htoss + .long #jp ;Speed jab + .long #rrsk ;Scissor squish + .long #rrp ;Gut push + .long #spsk ;Pickup +yoM_n_ +yoMm_n +; .word 1-1 +; .long #doeslap + .word (yoMm_n_-$)/32-1 + .long drn_seek + .long drn_retreat + .long #run + .long #sp + .long #sk +; .long #hgrab,#hgrab,#hgrab + .long #flng + .long #jp ;Speed jab + .long #rrsk ;Scissor squish + .long #spsk ;Pickup + .long #fast ;Hyper + .long #chrg +yoMm_n_ +yoM_hh ;Holding head + .word -(4-1) + .long #uddsk ;Vert suplex + .long #lrrsp ;Scissor squish + .long #j2p ;Salt + .long #ucut + +yoM_ooh ;Holding opp over head + .word 2-1 + .long #k ;Slam + .long #dsk ;Spinning slam + + +;陳陳陳陳陳陳陳 >Shawn scripts + +shawn_s_t + BBL MODE_HEADHOLD,-1,shM_hh + BBL MODE_HEADHELD,-1,shM_hhr + BBL -1,MODE_ONGROUND,M_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,shM_n +shawn_m_t + BBL MODE_HEADHOLD,-1,shM_hh + BBL MODE_HEADHELD,-1,shM_hhr + BBL -1,MODE_ONGROUND,Mm_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,shMm_n + +shM_n ;Normal +; .word 1-1 +; .long #eslap + .word (shM_n_-$)/32-1 + .long #run + .long #spx + .long #p,#sp,#k,#sk + .long #hgrab,#hgrab,#hgrab + .long #flng + .long #htoss,#htoss + .long #llsk ;Karate kick + .long #jkk ;Speed kick + .long #rrsk ;Frankensteiner + .long #rrk ;Sliding kick toss + .long #jisp ;Flipslam +shM_n_ +shMm_n +; .word 1-1 +; .long #doeslap + .word (shMm_n_-$)/32-1 + .long drn_seek + .long drn_retreat + .long #run + .long #sp + .long #sk +; .long #hgrab,#hgrab,#hgrab + .long #flng + .long #llsk ;Karate kick + .long #jkk ;Speed kick + .long #rrsk ;Frankensteiner + .long #rrk ;Sliding kick toss + .long #jisp ;Flipslam + .long #fast ;Hyper + .long #chrg +shMm_n_ +shM_hh ;Holding head + .word -(8-1) + .long #uddsk ;German suplex + .long #lrrsp ;Frankensteiner + .long #rsk4k ;Quick knees + .long #jkk ;Speed kick + .long #rp ;Arm break + .long #rsp4 ;Jmp head butt + .long #rk4 ;Speed kick + .long #lrrk ;Kick toss + +shM_hhr ;Head held reversals + .word 5-1 + .long #k + .long #uddsk ;German suplex + .long #lrrsp ;Frankensteiner + .long #lrrk ;Kick toss + .long #jkk ;Speed kick + + +;陳陳陳陳陳陳陳 >Bret scripts + +bret_s_t + BBL MODE_HEADHOLD,-1,brM_hh + BBL MODE_HEADHELD,-1,brM_hhr + BBL -1,MODE_ONGROUND,M_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,brM_n +bret_m_t + BBL MODE_HEADHOLD,-1,brM_hh + BBL MODE_HEADHELD,-1,brM_hhr + BBL -1,MODE_ONGROUND,Mm_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,brMm_n + +brM_n ;Normal +; .word 1-1 +; .long #eslap + .word (brM_n_-$)/32-1 + .long #run + .long #p,#sp,#k,#sk + .long #spx + .long #hgrab,#hgrab,#hgrab + .long #flng + .long #htoss,#htoss + .long #ucut + .long #ddp ;Leap ucut + .long #jp ;Face rake + .long #j2sp ;Rolling ucut + .long #llsk ;Fast kick +brM_n_ +brMm_n +; .word 1-1 +; .long #doeslap + .word (brMm_n_-$)/32-1 + .long drn_seek + .long drn_retreat + .long #run + .long #sp + .long #sk +; .long #hgrab,#hgrab,#hgrab + .long #flng + .long #ddp ;Leap ucut + .long #jp ;Face rake + .long #j2sp ;Rolling ucut + .long #llsk ;Fast kick + .long #fast ;Hyper + .long #chrg +brMm_n_ +brM_hh ;Holding head + .word -(7-1) + .long #uddsk ;Neck DDT + .long #lrrsp ;Pile drvr + .long #ucut + .long #jpx ;Face drvr +;FIX! - broke + .long #rp ;Arm break + .long #rsp ;Head to knee +;FIX! - broke + .long #lrrp ;Knee to face + +brM_hhr ;Head held reversals + .word 4-1 + .long #k + .long #uddsk ;Neck DDT + .long #lrrsp ;Pile drvr + .long #lrrp ;Kick toss +; .long #jk ; + + +;陳陳陳陳陳陳陳 >Razor scripts + +raz_s_t + BBL MODE_HEADHOLD,-1,rzM_hh + BBL MODE_HEADHELD,-1,rzM_hhr + BBL -1,MODE_ONGROUND,M_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,rzM_n +raz_m_t + BBL MODE_HEADHOLD,-1,rzM_hh + BBL MODE_HEADHELD,-1,rzM_hhr + BBL -1,MODE_ONGROUND,Mm_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,rzMm_n + +rzM_n ;Normal +; .word 1-1 +; .long #eslap + .word (rzM_n_-$)/32-1 + .long #run + .long #p,#sp,#k,#sk + .long #spx + .long #hgrab,#hgrab,#hgrab + .long #flng + .long #htoss,#htoss + .long #ucut + .long #jp ;Down slash + .long #rrk ;Rug slam +rzM_n_ +rzMm_n +; .word 1-1 +; .long #doeslap + .word (rzMm_n_-$)/32-1 + .long drn_seek + .long drn_retreat + .long #run + .long #sp + .long #sk +; .long #hgrab,#hgrab,#hgrab + .long #flng + .long #jp ;Down slash + .long #fast ;Hyper + .long #chrg +rzMm_n_ +rzM_hh ;Holding head + .word -(6-1) + .long #uddsk ;P drvr + .long #lrrsp ;Razors edge + .long #rzup4 ;Slashes up + .long #rzdp4 ;Slashes dn + .long #ucut + .long #rzuddksp ;Rug shake + +rzM_hhr ;Head held reversals + .word 4-1 + .long #k + .long #uddsk ;P drvr + .long #lrrsp ;Razors edge + .long #rzuddksp ;Rug shake + +#rzup4 .word U_M+P_M,5, 0,5, P_M,5, 0,5, P_M,5, 0,5, P_M,0 +#rzdp4 .word D_M+P_M,5, 0,5, P_M,5, 0,5, P_M,5, 0,5, P_M,0 + +#rzuddksp + .word U_M,2, D_M,2, 0,2, D_M,2, K_M,2 + DS_RNDA sklrep_t + .word 0,20 + .word SP_M,6, 0,6, SP_M,6, 0,6, SP_M,6, 0,6 ;Repeat + DS_RNDA sklrep_t + .word SP_M,6, 0,6, SP_M,6, 0,6, SP_M,0 + + +;陳陳陳陳陳陳陳 >Lex scripts + +lex_s_t + BBL MODE_HEADHOLD,-1,lxM_hh + BBL MODE_HEADHELD,-1,lxM_hhr + BBL MODE_OPPOVERHEAD,-1,lxM_ooh + BBL -1,MODE_ONGROUND,M_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,lxM_n +lex_m_t + BBL MODE_HEADHOLD,-1,lxM_hh + BBL MODE_HEADHELD,-1,lxM_hhr + BBL MODE_OPPOVERHEAD,-1,lxM_ooh + BBL -1,MODE_ONGROUND,Mm_og + BBL -1,MODE_ONTURNBKL,M_opptbkl + BBL -1,MODE_CLIMBTURNBKL,M_opptbkl + WL -1,lxMm_n + +lxM_n ;Normal +; .word 1-1 +; .long #eslap + .word (lxM_n_-$)/32-1 + .long #run + .long #p,#sp,#k,#sk + .long #spx + .long #hgrab,#hgrab,#hgrab + .long #flng + .long #htoss,#htoss + .long #rrp ;Elbow to gut + .long #spsk ;Pickup +lxM_n_ +lxMm_n +; .word 1-1 +; .long #doeslap + .word (lxMm_n_-$)/32-1 + .long drn_seek + .long drn_retreat + .long #run + .long #sp + .long #sk +; .long #hgrab,#hgrab,#hgrab + .long #flng + .long #rrp ;Elbow to gut + .long #spsk ;Pickup + .long #fast ;Hyper + .long #chrg +lxMm_n_ +lxM_hh ;Holding head + .word -(4-1) + .long #uddsk ;Neck DDT + .long #lrrsp ;Vert suplex + .long #rsk4k ;Quick knees & v suplex + .long #jk ;Pickup + +lxM_hhr ;Head held reversals + .word 4-1 + .long #k + .long #uddsk ;Neck DDT + .long #lrrsp ;V suplex + .long #jk ;Pickup + +lxM_ooh ;Holding opp over head + .word 3-1 + .long #p ;Slam + .long #usp ;Head slam + .long #usk ;Back brkr + + +;陳陳陳陳陳陳陳 >Generic scripts + +M_og ;Opp on gnd + .word 6-1 +; .long drn_retreat + .long #p,#sp,#k,#sk + .long #oghg,#oghg +Mm_og + .word 3-1 + .long drn_seek +;FIX! - Rzr rug shake + .long #seeksp + .long #seeksk + +M_opptbkl ;Opp on turnbkl + .word 1-1 + .long #run + +M_hhr ;Head held reversals + .word 3-1 + .long #k + .long #uddsk + .long #lrrsp + +M_shrtblkr + .word 2-1 + .long #hgrab + .long #htoss +M_shrtblkrdl + .word 2-1 + .long #hgrab + .long #spx +; .long drn_climbtb + +#spx .word SP_M,2, 0,2, SP_M,2, 0,2, SP_M,2 + .word SP_M,2, 0,2, SP_M,2, 0,2, SP_M,0 + +#p .word P_M,0 +#sp .word SP_M,0 +#k .word K_M,0 +#sk .word SK_M,0 +#spsk .word SP_M+SK_M,0 +#rp .word R_M+P_M,0 +#rsp .word R_M+SP_M,0 +#rsp4 .word R_M+SP_M,4, 0,4, SP_M,4, 0,4, SP_M,4, 0,4, SP_M,0 +#rk4 .word R_M+K_M,4, 0,4, K_M,4, 0,4, K_M,4, 0,4, K_M,0 +#rsk .word R_M+SK_M,0 +#rsk4k .word R_M+SK_M,4, 0,4, SK_M,4, 0,4, SK_M,4, 0,4, SK_M,4, K_M,0 +#rrp .word R_M,2, 0,2, R_M,2, P_M,0 +#rrk .word R_M,2, 0,2, R_M,2, K_M,0 +#rrsk .word R_M,2, 0,2, R_M,2, SK_M,0 +#llsk .word L_M,2, 0,2, L_M,2, SK_M,0 +#dp .word D_M+P_M,0 +#dk .word D_M+K_M,0 +#dsk .word D_M+SK_M,0 +#ddp .word D_M,2, 0,2, D_M,2, P_M,0 +#usp .word U_M+SP_M,0 +#usk .word U_M+SK_M,0 + +#run + DS_CALL drone_chkrun + .word P_M+K_M,0 ;Skipped if bad + DS_END +hgrab +#hgrab .word R_M,2, 0,2, R_M,2, SP_M,0 +#flng .word L_M,2, 0,2, L_M+SP_M,0 ;Grab fling +slhtoss .word L_M,2, 0,2, L_M,2, P_M,0 ;Hip toss +#htoss .word L_M,2, 0,2, L_M+P_M,0 ;Hip toss +#ucut .word D_M+SP_M,0 ;Uppercut + +#seeksp + DS_SEEKTIL0 + .word SP_M,0 +#seeksk + DS_SEEKTIL0 + .word SK_M,0 +#chrg + DS_CALL drone_chrg + DS_END + +#oghg ;Opp on gnd head grab + .word D_M,2, SP_M,0 + +#fast ;Works once + .word L_M,2, L_M+D_M,2, D_M,2, D_M+R_M,2 + .word R_M,2, R_M+U_M,2, U_M,2, U_M+L_M,0 + +;#lrrspp ;Pile drvr/Neck brkr +; .word L_M,2, R_M,2, 0,2, R_M,2, SP_M,2 +; DS_RNDA sklrep_t +; .word 0,5 +; .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 ;Repeat +; DS_RNDA sklrep_t +; .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 +; .word P_M,4, 0,4, P_M,4, 0,4, P_M,0 + +#hhp3k ;Punch*3, kick + .asg 6,T + .word R_M+P_M,T, R_M,T, R_M+P_M,T, R_M,T + .word R_M+P_M,T, R_M,T, R_M+P_M,T, R_M,T + .word R_M+K_M,2 + .word 0,10 + DS_END + +#hhp4 ;Punch*4 + .asg 6,T + .word R_M+P_M,T, R_M,T, R_M+P_M,T, R_M,T + .word R_M+P_M,T, R_M,T, R_M+P_M,T, R_M,T + .word R_M+P_M,T, R_M,T, R_M+P_M,2 + .word 0,10 + DS_END + +#hhp3pd ;Punch*3, piledriver + .asg 6,T + .word R_M+P_M,T, R_M,T, R_M+P_M,T, R_M,T + .word R_M+P_M,T, R_M,T, R_M+P_M,T, R_M,T+5 + .word D_M+SP_M,2 + .word 0,10 + DS_END + +#hhsk3pd ;Knee*3, piledriver + .asg 6,T + .word R_M+SK_M,T, R_M,T, R_M+SK_M,T, R_M,T + .word R_M+SK_M,T, R_M,T, R_M+SK_M,T, R_M,T + .word SP_M,2 + .word 0,10 + DS_END + +#j2p .word L_M+D_M,2 +#jp .word D_M,2, D_M+R_M,2, R_M,2, P_M,0 +#j2sp .word L_M+D_M,2 +#jsp .word D_M,2, D_M+R_M,2, R_M,2, SP_M,0 +#jk .word D_M,2, D_M+R_M,2, R_M,2, K_M,0 +#jkk .word D_M,2, D_M+R_M,2, R_M,2, K_M,4 + .word 0,4, K_M,4, 0,4, K_M,4 + .word 0,4, K_M,4, 0,4, K_M,0 +#jisp .word U_M,2, U_M+R_M,2, R_M,2, SP_M,0 + +#jpx .word D_M,2, D_M+R_M,2, R_M,2, P_M,0 + DS_RNDA sklrep_t +;FIX - chk + .word P_M,4, 0,4, P_M,4, 0,4, P_M,0 + + ;Reversals + +#uddsk + .word U_M,2, D_M,2, 0,2, D_M,2, SK_M,0 + +#uddskk ;Face slam/Pile drv + .word U_M,2, D_M,2, 0,2, D_M,2, SK_M,2 + DS_RNDA sklrep_t + .word 0,8 + .word K_M,4, 0,4, K_M,4, 0,4, K_M,4, 0,4 ;Repeat + DS_RNDA sklrep_t + .word K_M,4, 0,4, K_M,4, 0,4, K_M,4, 0,4 + .word K_M,4, 0,4, K_M,4, 0,4, K_M,0 + +#uddsksp ;Repeat SP + .word U_M,2, D_M,2, 0,2, D_M,2, SK_M,2 + DS_RNDA sklrep_t + .word SP_M,4, 0,4, SP_M,4, 0,4, SP_M,0 +#lrrp + .word L_M,2, R_M,2, 0,2, R_M,2, P_M,0 +#lrrsp + .word L_M,2, R_M,2, 0,2, R_M,2, SP_M,0 +#lrrk + .word L_M,2, R_M,2, 0,2, R_M,2, K_M,0 +#spsk2 + .word SP_M,2, SK_M,2, SP_M,2, SK_M,0 + + +******************************** + +bret_l_t +raz_l_t +utak_l_t +yoko_l_t +shawn_l_t +bam_l_t +doink_l_t +lex_l_t + BBL -1,MODE_ONGROUND,#mdog + WL -1,#mdn +#mdn +; .word 1-1 +; .long drn_climbtb + .word 4-1 + .long drn_seek + .long #run + .long drn_climbtb + .long drn_taunt +#mdog + .word 3-1 + .long drn_seek + .long drn_seek + .long #run + + +#******************************* + + SUBRP drone_chrg + + move *a13(DRN_BUTCHRG),a14 + jrnz #x ;Already charging? + + movk 20h,a0 + callr rnd + + move *a13(WRESTLERNUM),a1 + X64 a1 + addi #wres_t,a1 + add a0,a1 + move *a1,a1,L ;Get * script + + move *a1+,a0 + move a0,*a13(DRN_BUTCHRG) +;FIX!-all same + move *a1+,a0 + move a0,*a13(DRN_BUTCHRGDLY) + move a1,*a13(DRN_BUTCHRG_p),L + +#x + rets + +#wres_t + .long #brt,#brt + .long #raz,#raz2 + .long #ut,#ut2 + .long #yok,#yok + .long #shn,#shn2 + .long #bam,#bam2 + .long #dnk,#dnk2 + .long 0,0 + .long #lex,#lex2 + +#raz + .word SP_M,TSEC*2 ;Slashes + DS_JMP #run +#ut + .word P_M,TSEC*2 ;Neck breaker + DS_JMP #run +#yok + .word P_M,TSEC*2 ;Salt throw + DS_CODE + movk 1,a0 + move a0,*a13(DRN_MODE) ;Aggressive + DS_CODEEND + DS_JMP #run +#shn + .word P_M,TSEC*2 ;Suplex + DS_JMP #run +#bam + .word P_M,TSEC*2 ;Fire punch + DS_CODE + clr a0 + move a0,*a13(DRN_BUTCHRG) ;Fire it + DS_CODEEND + .word 0,4 + .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 ;Repeat + DS_RNDA sklrep_t + .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 + DS_RNDA sklrep_t + .word P_M,4, 0,4, P_M,4, 0,4, P_M,4, 0,4 + .word P_M,4, 0,4, P_M,4, 0,4, P_M,0 +#bam2 + .word SP_M,TSEC*2 ;Neck brkr + DS_JMP #run +#dnk + .word P_M,TSEC*2 ;Buzzer + DS_JMP #run +#dnk2 + .word P_M,TSEC*2 ;Buzzer (leap) + .word R_M,2 + DS_CODE + clr a0 + move a0,*a13(DRN_BUTCHRG) ;Fire it + DS_CODEEND + .word R_M,2 ;Need? + DS_END +#lex + .word P_M,TSEC*2 ;Smash + DS_JMP #run +#lex2 +#brt +#raz2 +#ut2 +#shn2 + .word SK_M,TSEC*2 ;Flying kick +; DS_JMP #run + +#run + DS_CALL drone_chkrun + .word P_M+K_M,0 ;Run & end + DS_CODE + + move *a13(OBJ_XPOSINT),a0 + move *a8(OBJ_XPOSINT),a14 + sub a14,a0 + abs a0 + cmpi 150,a0 + jrge #rx ;X too far? + + move *a13(OBJ_ZPOSINT),a1 + move *a8(OBJ_ZPOSINT),a14 + sub a14,a1 + abs a1 + cmpi 40,a1 + jrge #rx ;Z too far? + + clr a0 + move a0,*a13(DRN_BUTCHRG) ;Fire it +#rx + DS_CODEEND + DS_END + + + +#******************************* + + SUBRP drn_combo + + DS_CODE + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #wres_t,a0 + move a9,a1 + move *a0,a9,L ;Get * script + jump a1 ;Ret + +#wres_t + .long #brt,#raz,#ut,#yok + .long #shn,#bam,#dnk,#dnk,#lex +#brt + .word R_M,2, 0,2, R_M,2, 0,2 + DS_RJMP 50,#brt2 + .word P_M,2 + DS_JMP #cstrt +#brt2 + .word SK_M,2 + DS_JMP #cstrt + +#raz + .word R_M,2, 0,2, R_M,2, 0,2 + DS_RJMP 50,#raz2 + .word SP_M,2 + DS_JMP #cstrt +#raz2 + .word K_M,2 + DS_JMP #cstrt + +#ut + .word R_M,2, 0,2, R_M,2, 0,2 + DS_RJMP 50,#ut2 + .word SK_M,2 + DS_JMP #cstrt +#ut2 + .word K_M,2 + DS_JMP #cstrt + +#yok + .word R_M,2, 0,2, R_M,2, 0,2 + DS_RJMP 50,#yok2 + .word SP_M,2 + DS_JMP #cstrt +#yok2 + .word P_M,2 + DS_JMP #cstrt + +#shn + .word R_M,2, 0,2, R_M,2, 0,2 + DS_RJMP 50,#shn2 + .word P_M,2 + DS_JMP #cstrt +#shn2 + .word K_M,2 + DS_JMP #cstrt + +#bam + .word R_M,2, 0,2, R_M,2, 0,2 + DS_RJMP 50,#bam2 + .word SP_M,2 + DS_JMP #cstrt +#bam2 + .word P_M,2 + DS_JMP #cstrt + +#dnk + .word R_M,2, 0,2, R_M,2, 0,2 + DS_RJMP 50,#dnk2 + .word SP_M,2 + DS_JMP #cstrt +#dnk2 + .word SK_M,2 + DS_JMP #cstrt + +#lex + .word R_M,2, 0,2, R_M,2, 0,2 + DS_RJMP 50,#lex2 + .word SK_M,2 + DS_JMP #cstrt +#lex2 + .word K_M,2 + DS_JMP #cstrt + + .asg 6,T +#cstrt + .word 0,2 + DS_RJMP 25,#csk + DS_RJMP 25,#cp + DS_RJMP 25,#ck +#csp + .word SP_M,T, 0,T, SP_M,T, 0,T + .word SP_M,T, 0,T, SP_M,T, 0,T + DS_RNDA sklrep_t + DS_JMP #cstrt +#csk + .word SK_M,T, 0,T, SK_M,T, 0,T + .word SK_M,T, 0,T, SK_M,T, 0,T + DS_RNDA sklrep_t + DS_JMP #cstrt +#cp + .word P_M,T, 0,T, P_M,T, 0,T + .word P_M,T, 0,T, P_M,T, 0,T + DS_RNDA sklrep_t + DS_JMP #cstrt +#ck + .word K_M,T, 0,T, K_M,T, 0,T + .word K_M,T, 0,T, K_M,T, 0,T + DS_RNDA sklrep_t + DS_JMP #cstrt + + + +#******************************* + +#lp + DS_CODEEND + DS_SLP1 + + SUBRP drn_seek + + DS_CODE + + move b6,a0 + jrz #skok + subk MODE_BLOCK,a0 + jrne #x +#skok + movi 3fh,a0 + callr rnd + jrz #x + callr drone_seek + jrnz #lp +#x + DS_CODEEND + DS_END + + +#******************************* +* Get real close + +#lp + DS_CODEEND + DS_SLP1 + + SUBRP drn_seekclose + + DS_CODE + + move b6,a0 + jrz #skok + subk MODE_BLOCK,a0 + jrne #x +#skok + movi 3fh,a0 + callr rnd + jrz #x + + move *a13(OBJ_XPOSINT),a14 + movk 32,a2 + move *a8(OBJ_XPOSINT),a0 + cmp a0,a14 + jrge #torgt + neg a2 +#torgt + add a2,a0 + + move *a8(OBJ_ZPOSINT),a1 + movk 23,a2 + callr drone_seekxz + jrnz #lp +#x + DS_CODEEND + DS_END + + +#******************************* + + SUBRP drn_retreat + + DS_CODE + movk 4,a0 ;Far + move a0,*a13(DRN_SEEKDIST) +#lp + callr drone_seekdirdist + DS_CODEEND + DS_SLP1 + DS_CODE + movk 1fh,a0 + callr rnd + jrnz #lp + + DS_CODEEND + DS_END + + +#******************************* +* Check if running would be OK +* A9+32 if bad + + SUBRP drone_chkrun + + move *a13(OBJ_XPOSINT),a0 + move *a13(OBJ_ZPOSINT),a1 + + move *a13(FACING_DIR),a2 + + move *a13(INRING),a14 + jrnz #out ;Out of ring? + +;陳陳陳陳陳陳陳 + + cmpi MODE_ONGROUND,b7 + jreq #x +; subk MODE_INAIR2,a14 +; jreq #x ;Jumping on me? + + move *a13(CLOSEST_ZDIST),a1 + cmpi 70,a1 + jrge #x ;Z far enough? + + subk 30,a1 + jrle #x ;Z close enough? + + move *a13(CLOSEST_XDIST),a0 + cmpi 150,a0 + jrge #x ;X far enough? + +; btst PLAYER_RIGHT_BIT,a2 +; jrz #l ;Facing left? + + jruc #bad + +;陳陳陳陳陳陳陳 + +#out + btst PLAYER_RIGHT_BIT,a2 + jrz #ol ;Facing left? + + cmpi RING_X_CENTER+500,a0 + jrge #bad ;Hit rgt crowd? + + cmpi RING_TOP-10,a1 + jrlt #rrok + cmpi RING_BOT+10,a1 + jrgt #rrok + cmpi RING_X_CENTER,a0 + jrge #rrok + cmpi RING_X_CENTER-300,a0 + jrge #bad ;Hit rgt ring? +#rrok + jruc #x +#ol + cmpi RING_X_CENTER-500,a0 + jrle #bad ;Hit lft crowd? + + cmpi RING_TOP-10,a1 + jrlt #lrok + cmpi RING_BOT+10,a1 + jrgt #lrok + cmpi RING_X_CENTER,a0 + jrle #lrok + cmpi RING_X_CENTER+300,a0 + jrle #bad ;Hit lft ring? +#lrok +;FIX! + jruc #x + +;陳陳陳陳陳陳陳 + +#bad + addk 32,a9 ;Skip script run buttons + +#x + rets + + +#******************************* +* Control runner + +#rsk + movk 10,a2 + callr drone_seek2 + andni MOVE_LEFT+MOVE_RIGHT,a0 ;0 lft & rgt + move a0,*a13(DRN_JOY) + DS_CODEEND + DS_SLP1 + + SUBRP drn_run + + DS_CODE + move b6,a0 + subk MODE_RUNNING,a0 + jreq #mdok + subk MODE_BOUNCING-MODE_RUNNING,a0 + jrne #abrt +#mdok + movi 01ffh,a0 ;9.6 sec + callr rnd + jrz #brkrun ;Breakout? + + move *a13(OBJ_XVEL+16),a4 + sll 3,a4 ;*8 + move *a8(OBJ_XVEL+16),a1 + sll 5,a1 ;*32 + + move *a8(OBJ_XPOSINT),a0 + add a1,a0 + move *a13(OBJ_XPOSINT),a1 + add a4,a1 + move a1,a3 + sub a1,a0 + move a4,a1 + xor a0,a1 + abs a0 + + move *a13(CLOSEST_ZDIST),a2 + + move *a13(INRING),a14 + jrz #inr ;In ring? + + cmpi 300,a0 + jrgt #ering ;Too far? + + move a1,a1 + jrn #brkrun ;Running away? + + subk 30,a2 + jrgt #brkseek ;Too far? + + jruc #cont + +#inr + move a4,a4 + jrn #lrp ;Towards L rope? + + cmpi RING_X_CENTER+210,a3 + jrlt #rpok ;Won't hit R rope? + jruc #chkopp +#lrp + cmpi RING_X_CENTER-210,a3 + jrgt #rpok ;Won't hit L rope? +#chkopp + move *a8(GETUP_TIME),a14 + jrgt #rpok ;Out of control? + + cmpi MODE_ONGROUND,b7 + jreq #rpok + + cmpi 300,a0 + jrgt #rpok ;Opp X far? + + cmpi MODE_RUNNING,b7 + jreq #oprun + + cmpi 180,a0 + jrgt #rpok ;Opp X far? +#oprun + cmpi 90,a2 + jrlt #brkrun ;Opp Z close? + +#rpok + + move a1,a1 + jrn #rsk ;Running away? +#cont + cmpi MODE_INAIR2,b7 + jreq #brkrun + + + subk 30,a2 + jrgt #rsk ;Z too far? + + cmpi 250,a0 + jrgt #rsk ;X too far? + + move a0,a2 + + movi 120,a0 + callr rndrng0 + addi 130,a0 + + cmp a0,a2 + jrgt #rsk ;X too far? + + +; movk 3,a0 +; callr rnd +; jrz #igpup ;25% ignore? + + move b7,a0 + subk MODE_PUPPET2,a0 + jreq #brkrun + subk MODE_PUPPET-MODE_PUPPET2,a0 + jreq #brkrun + cmpi MODE_HEADHELD,b7 + jreq #brkrun + cmpi MODE_HEADHOLD,b7 + jreq #brkrun + cmpi MODE_ATTACHED,b7 + jreq #brkrun +;#igpup + + move *a13(DRN_BUTCHRG),a0 + jrz #nchrg + move *a13(DRN_BUTCHRGDLY),a0 + jrgt #nchrg + clr a0 + move a0,*a13(DRN_BUTCHRG) ;Fire it + jruc #abrt +#nchrg + DS_CODEEND + DS_RJMP 33,#k + DS_RJMP 33,#sk + .word SP_M,0 +#k .word K_M,0 +#sk .word SK_M,0 + +#abrt + DS_CODEEND + DS_END + +#brkrun + DS_CODEEND + .word L_M,0 + +#ering + DS_CODEEND + .word L_M,2 + DS_JMP drn_enterring + +#brkseek + DS_CODEEND + .word L_M,2 + DS_JMP drn_seek + + + +#******************************* +* Opponent running + + SUBRP drn_oprun + + DS_CODE + + movk 7,a0 + callr rnd + jrnz #abrt ;Skip? + + move *a8(OBJ_XPOSINT),a0 + move *a13(OBJ_XPOSINT),a1 +; move a1,a3 + sub a1,a0 + move *a8(OBJ_XVEL+16),a1 +; move a1,a4 + xor a0,a1 + abs a0 + + move *a13(CLOSEST_ZDIST),a2 + cmp a0,a2 + jrgt #abrt ;Z dist > X dist? + + move a1,a1 + jrn #run ;Running away? + + move *a8(GETUP_TIME),a14 + jrgt #run ;Out of control? + +#abrt + DS_CODEEND + DS_END + +#run + DS_CODEEND + .word P_M+K_M,0 ;Run + + + +#******************************* + + SUBRP drn_roll + + DS_CODE + callr drone_chrg + + jruc #strt + +#lp + DS_CODEEND + DS_SLP1 + DS_CODE +#strt + cmpi MODE_ONGROUND,b6 + jrne #x + + move *a13(CLOSEST_XDIST),a0 + cmpi 150,a0 + jrgt #x ;Safe dist? + + move *a13(CLOSEST_ZDIST),a0 + cmpi 70,a0 + jrgt #x ;Safe dist? + + clr a2 + callr drone_seek2 + jrz #x + + movk 3,a1 ;Flip up & down + xor a1,a0 + move a0,*a13(DRN_JOY) + + movi 7fh,a0 + callr rnd + jrnz #lp + +#x + DS_CODEEND + .word B_M,TSEC-10 ;Block while standing + DS_END + + +#******************************* +* Climb closest turnbuckle + + SUBRP drn_climbtb + + DS_CODE + move b3,a0 + subk 1,a0 + jrle #lp ;Only 1 on team? + + movk 1,a0 + callr rnd + jrnz #x ;Skip 50%? + +#lp + DS_CODEEND + DS_SLP1 + + SUBRP drn_ontb + + DS_CODE + + move b7,a2 + + cmpi MODE_ONTURNBKL,b6 + jrne #not + + subk MODE_ONTURNBKL,a2 + jreq #dn ;He's up, so get dn? + + jruc #jmp + +#not + move *a13(INRING),a0 + jrnz #ering ;!In ring? + + move *a13(WRESTLERNUM),a0 + subk 3,a0 + jrne #ny ;!Yoko? + move *a8(INRING),a0 + jrnz #x ;!In ring? +#ny + subk MODE_ONTURNBKL,a2 + jreq #x + subk MODE_INAIR2-MODE_ONTURNBKL,a2 + jreq #x + + movi RING_X_CENTER-225,a0 + move *a13(OBJ_XPOSINT),a1 + cmpi RING_X_CENTER,a1 + jrle #lrp + movi RING_X_CENTER+225,a0 +#lrp + move a0,a3 + movi RING_TOP,a1 + movk 32,a2 + callr drone_seekxz ;Seek to visinity + jrnz #nclose + + move a3,a0 + movi RING_TOP-10,a1 + clr a2 + callr drone_seekxz ;Push into turnbuckle + +#nclose + move *a13(CLOSEST_XDIST),a0 + cmpi 120,a0 + jrgt #lp ;Safe dist? + + move *a13(CLOSEST_ZDIST),a0 + cmpi 70,a0 + jrgt #lp ;Safe dist? + +#x + DS_CODEEND + DS_END + +#jmp + clr a6 ;So we get dn transition + DS_CODEEND + .word K_M,0 +#dn + DS_CODEEND + .word D_M,0 +#ering + DS_CODEEND + DS_JMP drn_enterring + + +#******************************* +* I'm in air + +#lp + DS_CODEEND + DS_SLP1 + + SUBRP drn_inair + + DS_CODE + clr a2 + callr drone_seek2 + + cmpi MODE_INAIR2,b6 + jreq #lp + + DS_CODEEND + DS_END + + +#******************************* +* Opponent in air + + SUBRP drn_opinair + + DS_CODE + + movk 1,a0 + callr rnd + jrnz #run ;Skip? +#lp + cmpi MODE_INAIR2,b7 + jrne #k + + DS_CODEEND + DS_SLP1 + DS_CODE + + move *a13(CLOSEST_XDIST),a1 + move *a13(CLOSEST_ZDIST),a14 + cmp a1,a14 + jrge #big + move a1,a14 +#big + cmpi 150,a14 + jrgt #lp ;Opp far? +#k + DS_CODEEND + .word K_M,0 ;Jump up + +#run + DS_CODEEND + .word L_M+P_M+K_M,2 ;Run away + DS_END + + + +#******************************* +* Enter ring at closest entry point + +#lp + DS_CODEEND + DS_SLP1 + + SUBRP drn_enterring + + DS_CODE + + move *a8(INRING),a0 + jrnz #x ;Opp out? + + move *a13(INRING),a0 + jrz #x ;In ring? + + move *a13(OBJ_XPOSINT),a14 + + movi RING_Z_CENTER,a1 + movi RING_X_CENTER-260,a0 + cmp a0,a14 + jrle #sk + movi RING_X_CENTER+260,a0 + cmp a0,a14 + jrge #sk + + move *a13(OBJ_ZPOSINT),a14 + + movi RING_X_CENTER,a0 + movi RING_TOP-10,a1 + cmp a1,a14 + jrle #sk + movi RING_BOT+10,a1 +#sk + movk 10,a2 + callr drone_seekxz ;Seek to visinity + jrnz #lp + + DS_CODEEND + .word P_M+SP_M+K_M+SK_M+B_M,0 ;Enter + +#x + DS_CODEEND + DS_END + + +#******************************* + + SUBRP drn_taunt + + DS_CODE + + move *a8(OBJ_ZPOSINT),a0 + move *a13(OBJ_ZPOSINT),a1 + sub a1,a0 + cmpi 100,a0 + jrlt #x + + move *a8(OBJ_XPOSINT),a0 + move *a13(OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 300,a0 + jrgt #x + +;Time to execute high-risk move! + movi 8000h+6*60,a0 + move a0,*a13(RISK) + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #taunt_t,a0 + move *a0,a0,L + calla change_anim1a +#x + DS_CODEEND + DS_END + + +#taunt_t + .long hrt_4_taunt_anim ;0 Bret Hart + .long rzr_4_taunt_anim ;1 Razor Ramon + .long und_4_taunt_anim ;2 Undertaker + .long yok_4_taunt_anim ;3 Yokozuna + .long shn_4_taunt_anim ;4 Shawn Michaels + .long bam_4_taunt_anim ;5 Bam Bam + .long dnk_4_taunt_anim ;6 Doink + .long 0 ;7 spare + .long lex_4_taunt_anim ;8 Lex Luger + + +#******************************* + + SUBRP drn_oppdead + + DS_CODE +#lp + clr a0 ;Close + move a0,*a13(DRN_SEEKDIR) + move a0,*a13(DRN_SEEKDIST) + + callr drone_seekdirdist + DS_CODEEND + DS_SLP1 + DS_CODE + + movk 32,a1 + move *a13(WRESTLERNUM),a0 + subk 2,a0 + jreq #ut ;Undertaker? + movi 90,a1 +#ut + move *a13(CLOSEST_DIST),a0 + cmp a1,a0 + jrle #x +; jruc #notut + + move *a8(ANIMODE),a0 ;Let ut walk through dead opps + ori MODE_OVERLAP,a0 + move a0,*a8(ANIMODE) +#notut + + move *a13(DRN_JOY),a0 + jrnz #lp +#x + DS_CODEEND + .word P_M,0 + + + +#******************************* +* Push stick to move drone towards his opp dir/dist seek position +* A7 = Old joy bits +* A8 = *Closest opp proc +* Trashes scratch, A2-A5 + + SUBRP drone_seekdirdist + + move *a13(DRN_SEEKDIR),a4 ;0-f + move *a13(DRN_SEEKDIST),a3 ;0-4 + move a3,a0 + X16 a3 + X4 a0 + add a0,a3 ;*20 + + move a4,a2 + callr #drn_getxz + jrnz #ok + + movk 7,b0 + move a4,a5 +#lp + addk 1,a4 + sll 32-4,a4 + srl 32-4,a4 + move a4,a2 + callr #drn_getxz + jrnz #newok + + subk 1,a5 + sll 32-4,a5 + srl 32-4,a5 + move a5,a2 + callr #drn_getxz + jrnz #new5ok + + dsj b0,#lp + + clr a0 + move a0,*a13(DRN_JOY) + + rets + +#new5ok + move a5,a4 +#newok + move a4,*a13(DRN_SEEKDIR) +#ok + movk 30,a2 + callr drone_seekxz + jrnz #x + + move *a13(DRN_MODE),a0 + addk 1,a0 + jrge #x ;Was -1? Skip dir change + + move a7,*a13(DRN_JOY) ;Restore to lessen glitch + + movk 3,a0 ;>Get rnd +-2/3 + callr rnd + subk 1,a0 + jrnz #rnz + subk 2,a0 ;0 into -2 +#rnz + addk 1,a0 + jrgt #rpos + subk 2,a0 +#rpos + + add a0,a4 + sll 32-4,a4 + srl 32-4,a4 + move a4,*a13(DRN_SEEKDIR) + +#x + rets + + +#drn_getxz + add a3,a2 + X16 a2 + addi #sine_t,a2 + + move *a2(4*16),a14 + move *a8(OBJ_XPOSINT),a0 + add a14,a0 + + cmpi RING_X_CENTER-220,a0 + jrlt #xzbad + cmpi RING_X_CENTER+220,a0 + jrgt #xzbad + + move *a2,a14 + move *a8(OBJ_ZPOSINT),a1 + add a14,a1 + + cmpi RING_TOP,a1 + jrlt #xzbad + cmpi RING_BOT,a1 + jrle #xzok +#xzbad + clr a2 ;Set Z +#xzok + move a2,a2 + rets + +#sine_t + .word -50,-46,-35,-19 + .word 0,19,35,46,50,46,35,19 + .word 0,-19,-35,-46,-50,-46,-35,-19 + + .word -100,-92,-71,-38 + .word 0,38,71,92,100,92,71,38 + .word 0,-38,-71,-92,-100,-92,-71,-38 + + .word -150,-139,-106,-57 + .word 0,57,106,139,150,139,106,57 + .word 0,-57,-106,-139,-150,-139,-106,-57 + + .word -200,-185,-141,-76 + .word 0,76,141,185,200,185,141,76 + .word 0,-76,-141,-185,-200,-185,-141,-76 + + .word -250,-231,-177,-95 + .word 0,95,177,231,250,231,177,95 + .word 0,-95,-177,-231,-250,-231,-177,-95 + + .word -300,-277,-212,-115 + .word 0,114,212,277,300,277,212,114 + .word 0,-114,-212,-277,-300,-277,-212,-115 + + +#******************************* +* Push stick to move drone towards closest opp + + SUBRP drone_seek + + movi 70,a2 + + SUBRP drone_seek2 + + move *a8(OBJ_XPOSINT),a0 + move *a8(OBJ_ZPOSINT),a1 + + +#******************************* +* Push stick to move drone towards an XZ location +* A0 = X to seek +* A1 = Z +* A2 = Range to stop +* A13= *Plyr proc +*>A0 = Joy bits set or 0 (Pass CC) +* Trashes scratch + + SUBRP drone_seekxz + + move a3,b0 + + move *a13(OBJ_XPOSINT),a3 + sub a0,a3 + + clr a0 + + move a3,a14 + abs a3 + sub a2,a3 + jrle #onx + move a14,a14 + jrlt #nolft + subk 4,a0 ;Left + +#nolft addk 8,a0 ;Rgt +#onx + move *a13(OBJ_ZPOSINT),a3 + + sub a1,a3 + move a3,a14 + abs a3 + sub a2,a3 + jrle #onz + move a14,a14 + jrlt #noup + subk 1,a0 ;Up + +#noup addk 2,a0 ;Dn +#onz + move a0,*a13(DRN_JOY) + + move b0,a3 + move a0,a0 + rets + + +#******************************* +* Adjust drone skill level (called each round) +* 8 is typical starting difficulty +* A13 = *Plyr proc +* Trashes scratch, A2-A5 + + SUBR drone_calcskill + + move *a13(PLYR_TYPE),a0 + jrz #x ;Human? + + move *a13(DRN_SKILLRNDM),a0 + + move @current_round,a3 ;1-3 + subk 1,a3 + jrgt #n1st + + movk 4,a0 + callr rndrng0 + subk 2,a0 + move a0,*a13(DRN_SKILLRNDM) +#n1st + move @CURRENT_LADDER,a5,L ;* to position + subi LADDER,a5 + sra 5,a5 ;/32 (Gives 0-6) + move a5,a1 + sra 1,a1 ;0-3 + add a1,a5 ;A5=0-9 + add a0,a5 ;-2 to 2 randomness + + clr a4 + move @PSTATUS,a0 + btst 0,a0 + jrnz #p1 + movk 16,a4 +#p1 + movi p1winstreakd,a0 + add a4,a0 + move *a0,a0 + jrlt #loser ;Lost? (-2 per match lost) + + + + X2 a0 +; add a0,a5 ;+1 per match won +; add a0,a5 ;+1 per match won + + + + add a0,a5 ;+1 per match won +#loser + X2 a0 + add a0,a5 ;+2 per match won + +; X2 a0 +; add a0,a5 ;+2 per match won +;#loser +; X2 a0 +; add a0,a5 ;+4 per match won + + movi p1rounds,a0 + add a4,a0 + move *a0,a0 + add a0,a5 ;+3 per round won + X2 a0 + add a0,a5 + + X2 a3 + sub a3,a5 ;-2 per round past 1st + + + movk ADJDIFF,a0 ;Get difficulty level (1-10) + calla GET_ADJ + subk 2,a0 + X2 a0 + add a0,a5 ;+8 default + jrge #minok + clr a5 +#minok + cmpi 29,a5 + jrle #maxok + movk 29,a5 +#maxok + move a5,*a13(DRN_SKILL) + +;陳陳陳陳陳陳陳 >Clr attack count + + clr a0 + movi atkcnt_t,a1 + movi AT_NUM*NUM_WRES,b0 +#aclp + move a0,*a1+ + dsj b0,#aclp + +#x + rets + + + +******************************** +* Get random # with mask +* A0 = Mask +*>A0 = Rnd # (Pass CC) +* Trashes scratch + + SUBRP rnd + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + and a1,a0 + rets + + +******************************** +* Quickly produce a random # in range 0-X +* A0 = X +*>A0 = Random # (0 to A0) (No CC) +* Trashes scratch + + SUBRP rndrng0 + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + addk 1,a0 + mpyu a1,a0 ;Condition codes not valid! + + rets + + + + + + +******************************** + + .end + \ No newline at end of file diff --git a/FINISEQ.ASM b/FINISEQ.ASM new file mode 100755 index 0000000..832b52a --- /dev/null +++ b/FINISEQ.ASM @@ -0,0 +1,1739 @@ +************************************************************** +* +* Software: Michael J. Lynch +* Initiated: 5/02/95 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "finiseq.asm" + .title "Finish moves sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .include "display.equ" + .include "ring.equ" + + .include "takerimg.h" + .include "bretimg.h" + .include "doinkimg.h" + .include "yokoimg.h" + .include "razorimg.h" + .include "leximg.h" + .include "shawnimg.h" + .include "bamimg.h" + + .include "damage.equ" + .include "miscimg.glo" + .INCLUDE "SWEAT.EQU" + + BSSX close_the_door,16 + BSSX close_the_floor,16 + BSSX dead_wrestler,32 + BSSX finish_completed,16 + BSSX wres_mv_done,16 + BSSX guy_in,16 + BSSX guy_up,16 + + .bss pal_test,16*64 + + .ref KILL + .ref triple_sound + .ref change_anim1a + .ref DO_CROWD_CHEER + .ref UNDNEG_P + .ref RNDRNG0 + .ref do_roll + + + + + +****************************************************************************** +* * +* Bret Hart Finish Move Sequences * +* * +****************************************************************************** + + .if NUM_BRET_FINISHES +#****************************************************************** +* +* Bret Hart finish move #1 + + SUBR hrt_finish1_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + .if NUM_BRET_FINISHES > 1 +#****************************************************************** +* +* Bret Hart finish move #2 + + SUBR hrt_finish2_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + + + + +****************************************************************************** +* * +* Bam Bam Bigelow Finish Move Sequences * +* * +****************************************************************************** + + .if NUM_BAM_FINISHES +#****************************************************************** +* +* Bam Bam finish move #1 + + SUBR bam_finish1_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + .if NUM_BAM_FINISHES > 1 +#****************************************************************** +* +* Bam Bam finish move #2 + + SUBR bam_finish2_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + + + + +****************************************************************************** +* * +* Yokozuna Finish Move Sequences * +* * +****************************************************************************** + + .if NUM_YOKO_FINISHES +#****************************************************************** +* +* Yokozuna finish move #1 + + SUBR yok_finish1_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + .if NUM_YOKO_FINISHES > 1 +#****************************************************************** +* +* Yokozuna finish move #2 + + SUBR yok_finish2_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + + + + +****************************************************************************** +* * +* Doink The Clown Finish Move Sequences * +* * +****************************************************************************** + + .if NUM_DOINK_FINISHES +#****************************************************************** +* +* Doink finish move #1 + + SUBR dnk_finish1_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + .if NUM_DOINK_FINISHES > 1 +#****************************************************************** +* +* Doink finish move #2 + + SUBR dnk_finish2_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + + + + + +****************************************************************************** +* * +* Razor Ramon Finish Move Sequences * +* * +****************************************************************************** + + .if NUM_RAZOR_FINISHES +#****************************************************************** +* +* Razor Ramon finish move #1 + + SUBR rzr_finish1_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + .if NUM_RAZOR_FINISHES > 1 +#****************************************************************** +* +* Razor Ramon finish move #2 + + SUBR rzr_finish2_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + + + + + +****************************************************************************** +* * +* Lex Lugar Finish Move Sequences * +* * +****************************************************************************** + + .if NUM_LEX_FINISHES +#****************************************************************** +* +* Lex Lugar finish move #1 + + SUBR lex_finish1_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + .if NUM_LEX_FINISHES > 1 +#****************************************************************** +* +* Lex Lugar finish move #2 + + SUBR lex_finish2_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + + + + + +****************************************************************************** +* * +* Undertaker Finish Move Sequences * +* * +****************************************************************************** + + .if NUM_TAKER_FINISHES + .endif + .if NUM_TAKER_FINISHES > 1 +#****************************************************************** +* +* Undertaker finish move #2 + + SUBR und_finish2_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + + + + + +****************************************************************************** +* * +* Shawn Michaels Finish Move Sequences * +* * +****************************************************************************** + + .if NUM_SHAWN_FINISHES +#****************************************************************** +* +* Shawn Michaels finish move #1 + + SUBR shn_finish1_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + + .if NUM_SHAWN_FINISHES > 1 +#****************************************************************** +* +* Shawn Michaels finish move #2 + + SUBR shn_finish2_move + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .endif + +****************************************************************************** + + +; +; The wrestler being knocked into the coffin MUST start at a Z of +; greater than 1430h and end up at a Z of 1428h when in the coffin. +; + +HOLE_XPOS .equ 1250 +HOLE_YPOS .equ 197 + +;MAT_BACK_Z .equ ((RING_TOP+20)|1000h) +MAT_BACK_Z .equ ((RING_Z_CENTER+20)|1000h) +TMBSTN_Z .equ MAT_BACK_Z +MAT_FRONT_Z .equ MAT_BACK_Z+27 +COF_BACK_Z .equ MAT_BACK_Z+28 +COF_FRONT_Z .equ COF_BACK_Z+2 +DOOR_CLOSE_Z .equ COF_FRONT_Z+2 +WRES_Z .equ ((COF_BACK_Z)&0fffh) +EXP_Z .equ MAT_FRONT_Z+1 + +COFFIN_VEL .equ 4 +NUM_PUFFS .equ 25 + +#******************************************************************** +* +* Do little explosions and puffs of smoke above hole in ring +* + + SUBRP #exp1_anim + .long SMOKE01 + .long SMOKE02 + .long SMOKE03 + .long SMOKE04 + .long SMOKE05 + .long SMOKE06 + .long SMOKE07 + .long SMOKE08 + .long SMOKE09 + .long SMOKE10 + .long 0 + + SUBRP #exp2_anim + .long SMOKEB01 + .long SMOKEB02 + .long SMOKEB03 + .long SMOKEB04 + .long SMOKEB05 + .long SMOKEB06 + .long SMOKEB07 + .long SMOKEB08 + .long SMOKEB09 + .long SMOKEB10 + .long 0 + + SUBRP #ltl_puff + .long #exp1_anim + .long #exp2_anim + + + + SUBRP ltl_exp + + movk 10,a0 ; Sleep a random amount of time before + calla RNDRNG0 ; we start the little puff of smoke + addk 1,a0 + calla PRCSLP + + movi 80,a0 ; Get a random X position above the hole + calla RNDRNG0 ; To fire off the puff of smoke + subi 40,a0 + movi HOLE_XPOS,a14 + add a14,a0 ; Translate to hole position + move a0,*a13(256) + + movi 30,a0 ; Get a random Y position above the hole + calla RNDRNG0 ; To fire off the puff of smoke + subi 25,a0 + addi HOLE_YPOS,a0 ; Translate to hole position + move a0,*a13(256+16) + + movi 10,a0 ; Get a random Z position + calla RNDRNG0 + addi EXP_Z,a0 ; Translate to hole Z position (in front of coffin) + move a0,*a13(256+32) + + movi 7,a0 ; Get a random velocity to use + calla RNDRNG0 + addk 2,a0 + move a0,*a13(256+48) + + movk 1,a0 ; Get a random smoke puff to use + calla RNDRNG0 + sll 5,a0 + movi #ltl_puff,a9 + add a0,a9 + move *a9,a9,L ; Pointer to puff animation + + move *a13(256),a0 ; Get X position + sll 16,a0 + move *a13(256+16),a1 ; Get Y position + sll 16,a1 + move *a13(256+32),a3 ; Get Z position + move *a9+,a2,L ; Get first image + movi DMAWNZ|M_3D,a4 ; Flags + movi CLSFRWK,a5 ; This is the class + clr a6 ; No velocities + clr a7 + + calla BEGINOBJ ; Make the first one + +; Now make an explosion sound + movi 1252,a3 + calla SNDSND + +#puff_lp + SLEEPK 3 ; Let us see it + move *a9+,a0,L ; Get next image + jrz #puff_done ; br = no more images + move *a8(OCTRL),a1 ; Change the image + calla obj_aniq + move *a8(OYPOS),a14 ; Get current Y Position + move *a13(256+48),a1 ; Get the velocity + sub a1,a14 ; Add it + move a14,*a8(OYPOS) ; Write it back + jruc #puff_lp ; Go do next image in sequence + +#puff_done + calla DELOBJA8 ; Kill off the object + + DIE + + +#******************************************************************** +* +* Do Undertakers Coffin rising from below +* + + SUBRP #mat_anim + .long MATCOF01 + .long MATCOF02 + .long MATCOF03 + .long MATCOF04 + SUBRP #mat_anim2 + .long 0 + + SUBRP #cof_anim1 + .long COFFIN02 + .long COFFIN03 + .long COFFIN04 + .long COFFIN05 + SUBRP #cof_anim2 + .long 0 + + SUBRP #tstone_anim + .long TMBSTN01 + SUBRP #tstone_test + .long TMBSTN02 + .long TMBSTN03 + .long TMBSTN04 + .long TMBSTN05 + .long TMBSTN06 + .long TMBSTN07 + .long TMBSTN08 + .long 0 + + SUBR und_coffin_up + + clr a14 ; Set up the state machine + move a14,@close_the_door + move a14,@close_the_floor + + SLEEP TSEC*2 + + movi #mat_anim,a9 ; Start up the mat animation + + movi [HOLE_XPOS,0],a0 + movi DMAWNZ|M_3D,a4 + movi [HOLE_YPOS,0],a1 + move *a9+,a2,L + movi MAT_BACK_Z,a3 + movi CLSFRWK,a5 + clr a6 + clr a7 + calla BEGINOBJ + +#man_loop + SLEEPK 3 ; Display the frame + move *a9+,a0,L ; Are we done ? + jrz #do_open_mat ; br = yes + move *a8(OCTRL),a1 ; Change to next frame + calla obj_aniq + jruc #man_loop + +#do_open_mat + move a8,a11 ; Save the the object pointer + move *a8(OCTRL),a1 ; Change the image to the front piece + movi MATCOF05B,a0 + calla obj_aniq + + movi [HOLE_XPOS,0],a0 ; Create the front piece + movi DMAWNZ|M_3D,a4 + movi [HOLE_YPOS,0],a1 + movi MATCOF05A,a2,L + movi MAT_FRONT_Z,a3 + movi CLSFRWK,a5 + clr a6 + clr a7 + + calla BEGINOBJ + SLEEPK 2 + +; Now make some little explosions above the hole + movi NUM_PUFFS,a9 ; Make 25 little puffs of smoke +#exp_clp + CREATE0 ltl_exp + dsjs a9,#exp_clp + + +; Now start the coffin rising up + CREATE0 do_up_coffin ; Make the coffin come up through + ; the floor + +#wait_fclose + SLEEPK 1 ; Wait to be told to close the floor + move @close_the_floor,a14 + jrz #wait_fclose + + SLEEPK 15 + + calla DELOBJA8 ; Delete the back piece + movi #mat_anim2,a9 ; Set up for close animation + move a11,a8 ; Get saved object pointer +#fc_loop + move *-a9,a0,L ; Change the image + move *a8(OCTRL),a1 + calla obj_aniq + SLEEPK 3 + cmpi #mat_anim,a9 ; Are we done ? + jrnz #fc_loop ; br = no + calla DELOBJA8 ; Get rid of this mat piece + + SLEEPK 3 + + movk 2,a14 + move a14,@close_the_floor ; Let whoever know floor is closed + + +; Now Bring up the tombstone + + movi 0fh,a0 + calla triple_sound + +; movi #tstone_anim,a9 ; Set up to bring up the tombstone + movi #tstone_test,a9 ; Set up to bring up the tombstone + + movi [HOLE_XPOS,0],a0 ; And create the first object + movi DMAWNZ|M_3D,a4 + movi [HOLE_YPOS-18,0],a1 + move *a9+,a2,L + movi TMBSTN_Z,a3 + movi CLSFRWK,a5 + clr a6 + clr a7 + + push a9 + calla BEGINOBJ + pull a9 + SLEEPK 4 ; Let's see it + +#stn_up + move *a9+,a0,L ; Get the next image + jrz #stn_done ; br = no more images + move *a8(OCTRL),a1 + calla obj_aniq ; Change the image + SLEEPK 4 ; Let's see it + jruc #stn_up ; Do next image + +#stn_done + movk 3,a14 + move a14,@close_the_floor ; Let whoever know tombstone is up + move a14,@finish_completed + + DIE + + + + SUBRP do_up_coffin + + movi #cof_anim1,a9 + + movi [HOLE_XPOS+7,0],a0 ; Create the Coffin + movi DMAWNZ|M_3D,a4 + movi [HOLE_YPOS+108,0],a1 + move a1,a10 + movi COFFIN01,a2 + movi COF_BACK_Z,a3 ; Make it in front of mat pieces + movi CLSFRWK,a5 + clr a6 + clr a7 + + calla BEGINOBJ + + move a8,*a13(256),L ; Save the object pointer + +; Make some sound while moving up + movi 014h,a0 + calla triple_sound + + movk COFFIN_VEL,a14 ; Start it 4 pixels high + move a14,*a8(OSIZEY) + +#mv_up_lp + SLEEPK 1 + move *a8(OSIZEY),a14 ; Get the size of the object + cmpi 136,a14 ; Are we at full size yet ? + jrz #open_lp ; br = yes + addk COFFIN_VEL,a14 ; Make it 4 pixels larger + move a14,*a8(OSIZEY) + move *a8(OYPOS),a14 ; Get its current position + subk COFFIN_VEL,a14 ; Move it up 4 pixels + move a14,*a8(OYPOS) ; Write it back + jruc #mv_up_lp ; Go display it + +#open_lp + move *a9+,a0,L ; Now open the coffin door + cmpi COFFIN05,a0 ; Is the door open ? + jrz #open_done ; br = yes + move *a8(OCTRL),a1 + calla obj_aniq + SLEEPK 3 + jruc #open_lp + +#open_done + movk 1,a14 + move a14,@close_the_door + + move *a8(OCTRL),a1 ; Keep the last piece + calla obj_aniq + move *a8(OYPOS),a14 ; Get the current position + movi DMAWNZ|M_3D,a4 + movi [HOLE_XPOS+7,0],a0 ; And create the front piece + move a14,a1 + sll 16,a1 + movi COFFIN6A,a2 + movi COF_FRONT_Z,a3 ; Make sure its in front of back piece + movi CLSFRWK,a5 + clr a6 + clr a7 + + calla BEGINOBJ + + move a8,*a13(256+32),L ; Save away it's object pointer + + move *a13(256),a9,L ; Back piece object pointer + movi HOLE_XPOS+7,a14 + move a14,*a13(256+64) + move *a9(OYPOS),*a13(256+80) ; Save the Y position + move *a13(256+32),a10,L ; Front piece object pointer + CREATE0 hover_coffin + move a0,*a13(256+96),L ; Save the process pointer + +#wait_to_close + SLEEPK 3 ; Now wait until told to close the + move @close_the_door,a14 ; coffin door + cmpi 2,a14 + jrlt #wait_to_close + + move *a13(256+96),a0,L ; Get the hover craft process pointer + calla KILL ; And kill him off + + move *a13(256),a8,L ; Get the back piece object pointer + movi #cof_anim2,a9 ; Now close the door +#close_loop + move *-a9,a0,L ; Pointer to image header + cmpi COFFIN02,a0 ; Are we at this image + jrnz #no_z_adj ; br = no + move *a13(256+32),a8,L ; Get front piece object pointer + push a0 + calla DELOBJA8 ; Get rid of front piece + pull a0 + move *a13(256),a8,L ; Get back piece object pointer + movi DOOR_CLOSE_Z,a14 ; Change its Z to in front of wrestler + move a14,*a8(OZPOS) +#no_z_adj + move *a8(OCTRL),a1 ; Change the image + calla obj_aniq + SLEEPK 1 ; Lets see it + cmpi #cof_anim1,a9 ; Are we done closing the door ? + jrne #close_loop ; br = no + + movi COFFIN01,a0 ; Change the image to the closed + move *a8(OCTRL),a1 ; coffin image + calla obj_aniq + + movk 3,a14 + move a14,@close_the_door + +; Make a slamming door sound + movi 03dh,a0 + calla triple_sound + +; Shake the coffin around when the door slams shut + movk 16,a9 ; Number of shakes +#shk_lp + movk 4,a0 + calla RNDRNG0 + subk 2,a0 + move *a13(256+64),a14 + add a0,a14 + move a14,*a8(OXPOS) + movk 2,a0 + calla RNDRNG0 + subk 2,a0 + move *a13(256+80),a14 + add a0,a14 + move a14,*a8(OYPOS) + SLEEPK 1 + dsjs a9,#shk_lp + + move *a13(256+64),*a8(OXPOS) + move *a13(256+80),*a8(OYPOS) + +; Now make some little explosions above the hole + movi NUM_PUFFS,a9 ; Make 25 little puffs of smoke +exp_clp + CREATE0 ltl_exp + dsjs a9,exp_clp + +; Make some sound while moving down + movi 011h,a0 + calla triple_sound + + movi 136,a14 ; Set starting size of image + move a14,*a8(OSIZEY) +#mv_dn_lp + + CREATE0 ltl_exp + SLEEPK 1 ; Lets see it + move *a8(OSIZEY),a14 ; Get current size + cmpi 1,a14 ; Are we at <= 1 pixel + jrle #mv_dn_done ; br = yes + subk COFFIN_VEL,a14 + move a14,*a8(OSIZEY) + move *a8(OYPOS),a14 ; Get the current position + addk COFFIN_VEL,a14 + move a14,*a8(OYPOS) ; And write it back + jruc #mv_dn_lp +#mv_dn_done + calla DELOBJA8 ; Get rid of the coffin + movk 1,a14 ; Tell the floor to close up + move a14,@close_the_floor + + DIE ; We done + + +#************************************************************* +* +* Hover coffin - makes the coffin look like it's hovering +* This guy runs until killed by process that creates it +* +* a9 = *object 1 +* a10 = *object 2 + + SUBRP hover_coffin + move *a10(OYPOS),a11 ; Get start Y position +#reset_a8 + movk 1,a8 ; Start with move down +#do_agin + SLEEPK 7 + move *a9(OYPOS),a14 ; Get current Y position + add a8,a14 ; Add in delta + move a14,*a9(OYPOS) ; Write it back + move *a10(OYPOS),a14 ; Get current Y position + add a8,a14 ; Add it delta + move a14,*a10(OYPOS) ; Write it back + sub a11,a14 ; Subtract current from start + abs a14 ; Make sure its positive + cmpi 2,a14 ; <= 3 + jrle #do_agin ; br = yes + move a8,a8 ; a8 negative ? + jrn #reset_a8 ; br = yes + movk 1,a8 ; set to -1 + not a8 + CREATE0 ltl_exp + CREATE0 ltl_exp + CREATE0 ltl_exp + CREATE0 ltl_exp + CREATE0 ltl_exp + CREATE0 ltl_exp + CREATE0 ltl_exp + CREATE0 ltl_exp + jruc #do_agin ; keep a bouncin + + DIE + +#***************************************************************************** +* +* Closes the coffin door +* + SUBRP close_door + movk 2,a14 + move a14,@close_the_door + rets + +#**************************************************************************** +* +* Checks to see if coffin door is open +* + SUBRP is_door_open + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + + move @close_the_door,a14 + jrz #door_not_open + + ori MODE_STATUS,a1 +#door_not_open + move a1,*a13(ANIMODE) + rets + +#**************************************************************************** +* +* Checks to see if the dead guy is ready to be stuffed into the coffin +* + SUBRP is_guy_up + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + + move @guy_up,a14 + jrz #guy_not_up + + ori MODE_STATUS,a1 +#guy_not_up + move a1,*a13(ANIMODE) + rets + +#**************************************************************************** +* +* Checks to see if the dead guy is in the coffin +* + SUBRP is_he_in + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + + move @guy_in,a14 + jrz #guy_not_in + + ori MODE_STATUS,a1 +#guy_not_in + move a1,*a13(ANIMODE) + rets + +#**************************************************************************** +* +* Makes a wrestler disappear after being shut into the coffin +* + SUBRP disappear_wrestler + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY|MODE_NOSHADOW|MODE_INVISIBLE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_ROT + + +#**************************************************************************** +* +* Make wrestler disappear - Monitors the state of the coffin door and makes +* the dead wrestler invisible when the door is closed. +* + SUBRP make_wres_disappear + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + + move @close_the_door,a14 + cmpi 3,a14 + jrnz #not_time + + PUSH a1,a13 + move @dead_wrestler,a13,L + movi disappear_wrestler,a0 + calla change_anim1a + PULL a1,a13 + + ori MODE_STATUS,a1 +#not_time + move a1,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* Set the flag to tell that the guy is ready to be knocked into the coffin +* + SUBRP guy_is_up + movk 1,a14 + move a14,@guy_up + rets + +#***************************************************************************** +* +* Adjust facing checks the wrestlers facing direction. +* + SUBRP adjust_facing + move *a13(FACING_DIR),a14 + ori (MOVE_LEFT|MOVE_DOWN),a14 + andni (MOVE_RIGHT|MOVE_UP),a14 + move a14,*a13(FACING_DIR) + move *a13(OBJ_CONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#***************************************************************************** +* +* Adjust taker facing checks takers facing direction. +* + SUBRP adjust_taker_facing + move *a13(FACING_DIR),a14 + andni (MOVE_LEFT|MOVE_DOWN),a14 + ori (MOVE_RIGHT|MOVE_UP),a14 + move a14,*a13(FACING_DIR) + move *a13(OBJ_CONTROL),a14 + andni M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#***************************************************************************** +* +* Check roll checks to see if the dead guy nees to be rolled down and does it +* if need be. +* + SUBRP check_roll + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + move *a13(OBJ_ZPOSINT),a1 + cmpi (RING_Z_CENTER+20),a1 + jrgt #roll_done + move *a13(STICK_VAL_CUR),a1 + ori MOVE_DOWN,a1 + move a1,*a13(STICK_VAL_CUR) + PUSH a0 + calla do_roll + PULL a0 + ori MODE_STATUS,a0 +#roll_done + move a0,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* Stand wrestler changes the dead wrestlers animation to a standing position +* + SUBRP rzr_stand_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; First roll the guy down to the bottom of the ring if need be +#rl_loop + .word ANI_PAUSE,1 + WL ANI_CODE,check_roll + WL ANI_IFSTATUS,#rl_loop + + ; Now Stand the bugger up + WL 3,R3GU2A+FR1 + WL 3,R3GU2A+FR2 + WL 3,R3GU4A+FR3 + WL 3,R3GU4A+FR4 + WL 3,R3GU4A+FR5 + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR10 + + + ; Tell all he's up there + WL ANI_CODE,guy_is_up + + ; Face him the right direction + WL ANI_CODE,adjust_facing + + ; And finally make him dizzy + SUBRP rzr_fdizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +#loop + WL 8,R4WP5C+FR1 + WL 8,R4WP5C+FR2 + WL 8,R4WP5C+FR3 + WL 8,R4WP5C+FR4 + WL 8,R4WP5C+FR5 + WL 8,R4WP5C+FR6 + WL 8,R4WP5C+FR7 + WL 8,R4WP5C+FR8 + WL 8,R4WP5C+FR7 + WL 8,R4WP5C+FR6 + WL 8,R4WP5C+FR5 + WL 8,R4WP5C+FR4 + WL 8,R4WP5C+FR3 + WL 8,R4WP5C+FR2 + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* Stand wrestler changes the dead wrestlers animation to a standing position +* + SUBRP hrt_stand_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; First roll the guy down to the bottom of the ring if need be +#rl_loop + .word ANI_PAUSE,1 + WL ANI_CODE,check_roll + WL ANI_IFSTATUS,#rl_loop + + WL 7,H3GU4A+FR1 + WL 7,H3GU4A+FR2 + WL 7,H3GU4A+FR3 + WL 7,H3GU4A+FR4 + WL 7,H3GU4A+FR5 + WL 7,H3GU4A+FR6 + WL 7,H3GU4A+FR7 + WL 7,H3GU4A+FR8 + WL 7,H3GU4A+FR9 + WL 7,H3GU4A+FR10 + + ; Tell all he's up there + WL ANI_CODE,guy_is_up + + ; Face him the right direction + WL ANI_CODE,adjust_facing + + ; And finally make him dizzy + SUBRP hrt_fdizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +#loop + WL 5,H4TI4B+FR1 + WL 5,H4TI4B+FR2 + WL 5,H4TI4B+FR3 + WL 5,H4TI4B+FR4 + WL 5,H4TI4B+FR5 + WL 5,H4TI4B+FR6 + WL 5,H4TI4B+FR7 + WL 5,H4TI4B+FR8 + WL 5,H4TI4B+FR7 + WL 5,H4TI4B+FR6 + WL 5,H4TI4B+FR5 + WL 5,H4TI4B+FR4 + WL 5,H4TI4B+FR3 + WL 5,H4TI4B+FR2 + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* Stand wrestler changes the dead wrestlers animation to a standing position +* + SUBRP und_stand_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; First roll the guy down to the bottom of the ring if need be +#rl_loop + .word ANI_PAUSE,1 + WL ANI_CODE,check_roll + WL ANI_IFSTATUS,#rl_loop + + WL 7,U3SU4A+FR1 + WL 7,U3SU4A+FR2 + WL 7,U3SU4A+FR3 + WL 7,U3SU4A+FR4 + WL 7,U3SU4A+FR5 + WL 7,U3SU4A+FR6 + WL 7,U3SU4A+FR7 + WL 7,U3SU4A+FR8 + + ; Tell all he's up there + WL ANI_CODE,guy_is_up + + ; Face him the right direction + WL ANI_CODE,adjust_facing + + ; And finally make him dizzy + SUBRP und_fdizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +#loop + WL 10,U4TI4C+FR1 + WL 10,U4TI4C+FR3 + WL 10,U4TI4C+FR5 + WL 10,U4TI4C+FR7 + WL 10,U4TI4C+FR5 + WL 10,U4TI4C+FR3 + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* Stand wrestler changes the dead wrestlers animation to a standing position +* + SUBRP yok_stand_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; First roll the guy down to the bottom of the ring if need be +#rl_loop + .word ANI_PAUSE,1 + WL ANI_CODE,check_roll + WL ANI_IFSTATUS,#rl_loop + + WL 7,Y3GU2A+FR1 + WL 7,Y3GU2A+FR2 + WL 7,Y3GU2A+FR3 + WL 7,Y3GU2A+FR4 + WL 7,Y3GU2A+FR6 + WL 7,Y3GU2A+FR7 + WL 7,Y3GU2A+FR8 + WL 7,Y3GU2A+FR10 + WL 7,Y3GU2A+FR11 + WL 7,Y3GU2A+FR12 + WL 7,Y3GU4A+FR13 + WL 7,Y3GU4A+FR14 + + ; Tell all he's up there + WL ANI_CODE,guy_is_up + + ; Face him the right direction + WL ANI_CODE,adjust_facing + + ; And finally make him dizzy + SUBRP yok_fdizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +#loop + WL 10,Y4TI4C+FR4 + WL 10,Y4TI4C+FR5 + WL 10,Y4TI4C+FR6 + WL 10,Y4TI4C+FR7 + WL 10,Y4TI4C+FR8 + WL 10,Y4TI4C+FR7 + WL 10,Y4TI4C+FR6 + WL 10,Y4TI4C+FR5 + WL ANI_GOTO,#loop + + + +#***************************************************************************** +* +* Stand wrestler changes the dead wrestlers animation to a standing position +* + SUBRP shn_stand_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; First roll the guy down to the bottom of the ring if need be +#rl_loop + .word ANI_PAUSE,1 + WL ANI_CODE,check_roll + WL ANI_IFSTATUS,#rl_loop + + WL 7,S3GU2A+FR1 + WL 7,S3GU2A+FR2 + WL 7,S3GU4A+FR3 + WL 7,S3GU4A+FR4 + WL 7,S3GU4A+FR5 + WL 7,S3GU4A+FR6 + WL 7,S3GU4A+FR7 + WL 7,S3GU4A+FR8 + WL 7,S3GU4A+FR9 + + ; Tell all he's up there + WL ANI_CODE,guy_is_up + + ; Face him the right direction + WL ANI_CODE,adjust_facing + + ; And finally make him dizzy + SUBRP shn_fdizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +#loop + WL 9,S4TI4B+FR1 + WL 9,S4TI4B+FR2 + WL 9,S4TI4B+FR3 + WL 9,S4TI4B+FR4 + WL 9,S4TI4B+FR3 + WL 9,S4TI4B+FR2 + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* Stand wrestler changes the dead wrestlers animation to a standing position +* + SUBRP bam_stand_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; First roll the guy down to the bottom of the ring if need be +#rl_loop + .word ANI_PAUSE,1 + WL ANI_CODE,check_roll + WL ANI_IFSTATUS,#rl_loop + + WL 7,B3GU4A+FR1 + WL 7,B3GU4A+FR2 + WL 7,B3GU4A+FR3 + WL 7,B3GU4A+FR4 + WL 7,B3GU4A+FR5 + WL 7,B3GU4A+FR6 + WL 7,B3GU4A+FR7 + WL 7,B3GU4A+FR8 + WL 7,B3GU4A+FR9 + WL 7,B3GU4A+FR10 + WL 7,B3GU4A+FR11 + WL 7,B3GU4A+FR12 + + ; Tell all he's up there + WL ANI_CODE,guy_is_up + + ; Face him the right direction + WL ANI_CODE,adjust_facing + + ; And finally make him dizzy + SUBRP bam_fdizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +#loop + WL 8,B4TI4A+FR1 + WL 8,B4TI4A+FR2 + WL 8,B4TI4A+FR3 + WL 8,B4TI4A+FR4 + WL 8,B4TI4A+FR5 + WL 8,B4TI4A+FR6 + WL 8,B4TI4A+FR7 + WL 8,B4TI4A+FR6 + WL 8,B4TI4A+FR5 + WL 8,B4TI4A+FR4 + WL 8,B4TI4A+FR3 + WL 8,B4TI4A+FR2 + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* Stand wrestler changes the dead wrestlers animation to a standing position +* + SUBRP dnk_stand_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; First roll the guy down to the bottom of the ring if need be +#rl_loop + .word ANI_PAUSE,1 + WL ANI_CODE,check_roll + WL ANI_IFSTATUS,#rl_loop + + WL 7,D3GU4A+FR1 + WL 7,D3GU4A+FR2 + WL 7,D3GU4A+FR3 + WL 7,D3GU4A+FR4 + WL 7,D3GU4A+FR5 + WL 7,D3GU4A+FR6 + WL 7,D3GU4A+FR7 + WL 7,D3GU4A+FR8 + WL 7,D3GU4A+FR9 + + ; Tell all he's up there + WL ANI_CODE,guy_is_up + + ; Face him the right direction + WL ANI_CODE,adjust_facing + + ; And finally make him dizzy + SUBRP dnk_fdizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +#loop + WL 6,D4SW4C+FR1 + WL 6,D4SW4C+FR2 + WL 6,D4SW4C+FR3 + WL 6,D4SW4C+FR4 + WL 6,D4SW4C+FR5 + WL 6,D4SW4C+FR6 + WL 6,D4SW4C+FR5 + WL 6,D4SW4C+FR4 + WL 6,D4SW4C+FR3 + WL 6,D4SW4C+FR2 + WL ANI_GOTO,#loop + + + +#***************************************************************************** +* +* Stand wrestler changes the dead wrestlers animation to a standing position +* + SUBRP lex_stand_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; First roll the guy down to the bottom of the ring if need be +#rl_loop + .word ANI_PAUSE,1 + WL ANI_CODE,check_roll + WL ANI_IFSTATUS,#rl_loop + + WL 7,L3GU4A+FR1 + WL 7,L3GU4A+FR2 + WL 7,L3GU4A+FR3 + WL 7,L3GU4A+FR4 + WL 7,L3GU4A+FR5 + WL 7,L3GU4A+FR6 + WL 7,L3GU4A+FR7 + WL 7,L3GU4A+FR8 + WL 7,L3GU4A+FR9 + WL 7,L3GU4A+FR10 + + ; Tell all he's up there + WL ANI_CODE,guy_is_up + + ; Face him the right direction + WL ANI_CODE,adjust_facing + + ; And finally make him dizzy + SUBRP lex_fdizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +#loop + WL 8,L4TI4B+FR5 + WL 8,L4TI4B+FR6 + WL 8,L4TI4B+FR7 + WL 8,L4TI4B+FR8 + WL 8,L4TI4B+FR9 + WL 8,L4TI4B+FR8 + WL 8,L4TI4B+FR7 + WL 8,L4TI4B+FR6 + WL ANI_GOTO,#loop + + + + + SUBRP stand_table + .long hrt_stand_anim ;0 Bret Hart + .long rzr_stand_anim ;1 Razor Ramon + .long und_stand_anim ;2 Undertaker + .long yok_stand_anim ;3 Yokozuna + .long shn_stand_anim ;4 Shawn Michaels + .long bam_stand_anim ;5 Bam Bam + .long dnk_stand_anim ;6 Doink + .long 0 ;7 spare + .long lex_stand_anim ;8 Lex Luger + + + SUBRP stand_wrestler + FACETBL stand_table + calla change_anim1a + rets + + SUBRP dizzy_table + .long hrt_fdizzy_anim ;0 Bret Hart + .long rzr_fdizzy_anim ;1 Razor Ramon + .long und_fdizzy_anim ;2 Undertaker + .long yok_fdizzy_anim ;3 Yokozuna + .long shn_fdizzy_anim ;4 Shawn Michaels + .long bam_fdizzy_anim ;5 Bam Bam + .long dnk_fdizzy_anim ;6 Doink + .long 0 ;7 spare + .long lex_fdizzy_anim ;8 Lex Luger + + + SUBRP dizzy_wrestler + FACETBL dizzy_table + calla change_anim1a + rets + + + +#***************************************************************************** +* +* Raise dead anim +* + SUBRP raise_dead_anim + + ; Uninterruptable, no autoflip, no gravity + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_PAUSE,(TSEC/2) + + ; Now make him stand up + WL ANI_CODE,stand_wrestler + + + +#***************************************************************************** +* +* Raises the dead guy off the floor and starts a standing dizzy animation +* for the dead guy. +* + SUBRP raise_dead + SLEEP TSEC/2 ; Give him a bit before standing up + PUSH a13 + move @dead_wrestler,a13,L + movi raise_dead_anim,a0 + calla change_anim1a + PULL a13 + DIE + +TIME_FOR_MOVE .equ 16 + +#***************************************************************************** +* +* This sets the guy is in the coffin flag +* + SUBRP guy_is_in + movk 1,a14 + move a14,@guy_in + rets + +#***************************************************************************** +* +* Sets the X, Y, and Z velocities of the dead wrestler being pushed into the +* coffin. +* + SUBRP set_speeds + move *a13(OBJ_XPOSINT),a2 + movi HOLE_XPOS+7,a1 + sub a2,a1 + movi TIME_FOR_MOVE,a2 + sll 16,a1 + divs a2,a1 + move a1,*a13(OBJ_XVEL),L + + move *a13(OBJ_ZPOSINT),a2 + cmpi WRES_Z,a2 + jrge #is_in_front + movi WRES_Z,a2 + move a2,*a13(OBJ_ZPOSINT) +#is_in_front + movi WRES_Z,a1 + sub a2,a1 + movi TIME_FOR_MOVE,a2 + sll 16,a1 + divs a2,a1 + move a1,*a13(OBJ_ZVEL),L + + rets + +#***************************************************************************** +* +* Push in animation - pushes the dead wrestler into the coffin +* + SUBRP push_in_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY|MODE_NOSHADOW + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; Set the X,Y,and Z velocities + WL ANI_CODE,set_speeds + + ; Make a woosh sound while he's moving to coffin + .word ANI_SOUND,014h + + ; Wait for him to get there + .word ANI_PAUSE,TIME_FOR_MOVE + + ; Stop him from moving anymore + .word ANI_ZEROVELS + + ; Make a crash sound when he's in + .word ANI_SOUND,0bh + + ; Glitch him up 27 pixels + WL ANI_SET_YVEL,1b0000h + .word ANI_PAUSE,1 + + ; Stop him from moving + .word ANI_ZEROVELS + + ; Tell everyone who is interested that he's made it + WL ANI_CODE,guy_is_in + + ; Make him be dizzy + WL ANI_CODE,dizzy_wrestler + + +#***************************************************************************** +* +* Pushes the dead guy into the coffin +* + SUBRP push_to_coffin + PUSH a13 + move @dead_wrestler,a13,L + movi push_in_anim,a0 + calla change_anim1a + PULL a13 + rets + + +#***************************************************************************** +* +* #2 Undertaker raise the dead animation +* + + SUBR und_2_raise_dead_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,adjust_taker_facing + + ; This rises the dead guy up off of the floor to a standing dizzy + ; position. + WLWWWW ANI_CREATEPROC,raise_dead,0,0,0,0 + + ; Start the coffin rising up + WLWWWW ANI_CREATEPROC,und_coffin_up,0,0,0,0 + + WLWW ANI_SHADOWTRAIL,UNDNEG_P,5,15 ;pal,rate,lifespan + + ; This is what taker does to raise the dead guy + WL 4,U5RV5A+FR1 + WL 4,U5RV5A+FR2 + WL 4,U5RV5A+FR3 +#loopa + WL 5,U5RV5A+FR4 + WL 5,U5RV5A+FR5 + WL 15,U5RV5A+FR6 + WL 5,U5RV5A+FR5 + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,is_guy_up + WL ANI_IFNOTSTATUS,#loopa + + ; Let the dead guy stand there being dizzy fer a bit +#loop + WL 5,U5RV5A+FR4 + WL 5,U5RV5A+FR5 + WL 15,U5RV5A+FR6 + WL 5,U5RV5A+FR5 + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,is_door_open + WL ANI_IFNOTSTATUS,#loop + WL 5,U5RV5A+FR4 + WL 4,U5RV5A+FR3 + WL 4,U5RV5A+FR2 + WL 4,U5RV5A+FR1 + + ; This is what taker does to push the guy into the coffin + WLWW ANI_SHADOWTRAIL,UNDNEG_P,2,8 ;pal,rate,lifespan + WL 7,U4PS3A+FR1 + WL 7,U4PS3A+FR2 + WL 7,U4PS3A+FR3 + + ; This pushes the dead guy into the coffin and lets him stand in it + ; being dizzy for a bit + ; Make a grunt sound when push start + .word ANI_SOUND,02dh + + WL ANI_CODE,push_to_coffin + .word ANI_SET_RPTCOUNT,(TSEC*3)/(7*6) +#loop1 + WL 7,U4PS3A+FR5 + WL 7,U4PS3A+FR6 + WL 7,U4PS3A+FR7 + WL 7,U4PS3A+FR8 + WL 7,U4PS3A+FR7 + WL 7,U4PS3A+FR6 + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,is_he_in + WL ANI_IFNOTSTATUS,#loop1 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop1 + + ; Now close the door + .word ANI_SOUND,2dh ; Push door shut effort grunt + WL ANI_CODE,close_door + +#d_loop + .word ANI_PAUSE,5 + WL ANI_CODE,make_wres_disappear + WL ANI_IFNOTSTATUS,#d_loop + + WL 7,U4PS3A+FR5 + WL 7,U4PS3A+FR3 + WL 7,U4PS3A+FR2 + WL 7,U4PS3A+FR1 + + ; And last but not least raise arm and leave crowd cheering + .word ANI_SHADOWTRAIL,0 ;off + WL 4,U5RV5A+FR1 + WL 4,U5RV5A+FR2 + WL 4,U5RV5A+FR3 + WL 4,U5RV5A+FR4 + WL 4,U5RV5A+FR5 +#loop3 + WL ANI_CODE,DO_CROWD_CHEER + WL 50,U5RV5A+FR6 + WL ANI_GOTO,#loop3 + + + .end diff --git a/FINISH.ASM b/FINISH.ASM new file mode 100755 index 0000000..4e5a896 --- /dev/null +++ b/FINISH.ASM @@ -0,0 +1,185 @@ +************************************************************** +* +* Software: Mike Lynch, Jason Skiles, Mark Turmell +* Initiated: 04/04/95 +* +* Modified: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "finish.asm" + .title "wrestling game program" + .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 "wwfsec.equ" + .include "game.equ" + .include "audit.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .include "sound.equ" + .include "damage.equ" + .include "jjxm.h" + + .include "imgtbl.glo" + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + +#**************************************************************** +* +;a0 = number of lights + SUBR yok_falling_lights + PUSHP a9,a10 + movi 100,a9 + move a0,a10 +#create_lts + CREATE0 yok_falling_light + SLEEPK 5 + addk 20,a9 + dsjs a10,#create_lts + + SLEEP TSEC*20 + + PULLP a9,a10 + RETP + +#***************************************************************** +* + SUBRP lt_smk_tbl + .long YKLTSMK01 + .long YKLTSMK02 + .long YKLTSMK03 + .long YKLTSMK04 + .long YKLTSMK05 + .long YKLTSMK06 + .long YKLTSMK07 + .long 0 + +#***************************************************************** +* +;a9 - starting x position + SUBRP yok_falling_light + + move a9,a0 ; Set up horizontal position + clr a10 ; Save off current y + sll 16,a0 ; Set up vertical position + clr a1 + movi YKLIGHT01,a2 ; This is a light + movi 1000h|RING_Z_CENTER,a3 ; Z position + movi DMAWNZ|M_3D|M_SCRNREL,a4 ; Control goop + cmpi 200,a9 ; light more'n half way? + jrlt #no_flip ; br = nope + ori M_FLIPH,a4 ; flip +#no_flip + movi CLSFINI,a5 ; Light object id + clr a6 ; velocity + clr a7 ; velocity + + calla BEGINOBJ ; make it + +#fall_loop ; Make the light fall + SLEEPK 1 + cmpi (255-MAT_Y),a10 + jrgt #fall_done + addk 15,a10 + move a10,*a8(OYPOS) + jruc #fall_loop + +#fall_done ; Embed it in the mat + move a8,a0 + calla DELOBJ + + move a9,a0 + sll 16,a0 + move a10,a1 + sll 16,a1 + movi YKLIGHT02A,a2 ; This is an embedded light + movi (1000h|RING_Z_CENTER)+10h,a3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 + cmpi 200,a9 + jrlt #no_lt2a_flip + ori M_FLIPH,a4 +#no_lt2a_flip + movi CLSFINI,a5 + clr a6 + clr a7 + calla BEGINOBJ + .if 1 + move a9,a0 + sll 16,a0 + move a10,a1 + sll 16,a1 + movi YKLIGHT02B,a2 ; This is an embedded light lens + movi (1000h|RING_Z_CENTER)+20h,a3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 + cmpi 200,a9 + jrlt #no_lt2b_flip + ori M_FLIPH,a4 +#no_lt2b_flip + movi CLSFINI,a5 + clr a6 + clr a7 + calla BEGINOBJ + .endif + +; CREATE0 buzz_wire ; Make the wire buzz around +; CREATE0 shatter_lens ; Shatter the lens + + SLEEPK 5 + + movk 15,a0 +#more_smoke + movi lt_smk_tbl,a11 ; Make it smoke +#smoke_loop + move *a11+,a2,L + jrz #smoke_done + move a9,a0 + sll 16,a0 + move a10,a1 + sll 16,a1 + movi (1000h|RING_Z_CENTER)+30h,a3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 + cmpi 200,a9 + jrlt #no_smk_flip + ori M_FLIPH,a4 +#no_smk_flip + movi CLSFINI,a5 + clr a6 + clr a7 + + calla BEGINOBJ + + PUSHP a0 + SLEEPK 5 + PULLP a0 + + move a8,a0 + calla DELOBJ + + jruc #smoke_loop +#smoke_done + dsj a0,#more_smoke + + SLEEP TSEC*5 + + movi CLSFINI,a0 + calla obj_del1c + + DIE + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/FIREBAK.ASM b/FIREBAK.ASM new file mode 100755 index 0000000..c7903a5 --- /dev/null +++ b/FIREBAK.ASM @@ -0,0 +1,813 @@ +************************************************************** +* +* Software: Mike Lynch, Jason Skiles, Mark Turmell +* Initiated: 05/12/95 +* +* Modified: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "fireword.asm" + .title "wrestling game program" + .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 "wwfsec.equ" + .include "game.equ" + .include "audit.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .include "sound.equ" + .include "damage.equ" + .include "jjxm.h" + + .include "imgtbl.glo" + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + + .ref RNDRNG0 + .ref BEGINOBJP + .ref PRCSLP + .ref DELOBJA8 + .ref obj_aniq + .ref flash_white + .ref pal_clean + .ref fade_up + .ref fade_down + .ref BGND_UD1 + .ref crowd_anim + .ref crowd_cheer + .ref reduce_bog + .ref is_8_on_1 + .ref print_message + .ref wsf14_ascii + .ref royal_rumble + .ref print_string_C2 + .ref print_string_C + .ref font9_ascii + .ref setup_message + .ref mess_objid + .ref SNDSND + + .bss fizzle_flare,16 + .bss pan_down,16 + +EXP_FW_SND .equ 1252 +FLR_FW_SND .equ 1244 + +#********************************************************************** +* + SUBRP #fwexa_anim + .long FWEXPA01 + .long FWEXPA02 + .long FWEXPA03 + .long FWEXPA04 + .long FWEXPA05 + .long FWEXPA06 + .long FWEXPA07 + .long FWEXPA08 + .long FWEXPA09 + .long FWEXPA10 + .long FWEXPA11 + .long 0 + + SUBRP #fwexb_anim + .long FWEXPB01 + .long FWEXPB02 + .long FWEXPB03 + .long FWEXPB04 + .long FWEXPB05 + .long FWEXPB06 + .long FWEXPB07 + .long FWEXPB08 + .long FWEXPB09 + .long FWEXPB10 + .long FWEXPB11 + .long 0 + + SUBRP #fwexp_tbl + .long #fwexa_anim + .long #fwexb_anim + + SUBRP #flare_anim + .long FWFLAR01 + .long FWFLAR02 + .long FWFLAR03 + .long FWFLAR04 + .long FWFLAR05 + SUBRP #flare_anim2 + .long FWFLAR06 + .long FWFLAR07 + .long FWFLAR08 + .long FWFLAR09 + .long FWFLAR10 + .long FWFLAR11 + .long FWFLAR12 + .long FWFLAR13 + .long 0 + + SUBRP #fw_pals + .long FWWHT_P + .long FWBLV_P + .long FWPNK_P + .long FWBLU_P + .long FWYEL_P + +EXP_FWY .equ -160 + + SUBRP #animate_fwexp + + ; First Get a random position to place the explosion + movi 64,a0 ; Get a random vertical position + calla RNDRNG0 + addi EXP_FWY,a0 + move a0,a9 ; Save it away + + movi 350,a0 ; Get a random horizontal postion + calla RNDRNG0 + addi 850,a0 + move a0,a10 + + movi 200h,a0 ; Get a random Zpos + calla RNDRNG0 + addi 700h,a0 ; Make sure we can see it + move a0,a3 + + ; Now get a random firework explosion to use + movi 1,a0 ; Get a random explosion to use + calla RNDRNG0 + sll 5,a0 + addi #fwexp_tbl,a0 + move *a0,a11,L ; Get pointer to image table + move *a11+,a2,L ; Get the first image + + ; Set up some additional object creation junk + movi DMAWNZ|M_3D,a4 + movi CLSNEUT,a5 ; Set the Object ID + clr a6 ; Set the X velocity + clr a7 ; Set the Y velocity + + ; Get a random palette to use + movi 4,a0 ; Get a random palette number + calla RNDRNG0 + move a0,b0 ; Get entry from palette table + sll 5,b0 + addi #fw_pals,b0 + move *b0,b0,L + + ; Set up the x and y positions for the object + move a9,a1 ; Get saved YPOS + sll 16,a1 ; Shift it for object creation + move a10,a0 ; Get saved XPOS + sll 16,a0 ; Shift it for object creattion + + ; Now create the first image + calla BEGINOBJP ; Create the object + + ; Make an explosion sound + movi EXP_FW_SND,a3 + calla SNDSND + + ; And animate the whole works +#animate_loop + SLEEPK 2 + move *a11+,a0,L ; Get the next image + jrz #fwanim_done ; Are we done ? - br = yes + move *a8(OCTRL),a1 ; Get the current control + calla obj_aniq ; Change the image + move *a8(OYPOS),a1 ; Make it fall a little + addk 4,a1 + move a1,*a8(OYPOS) + jruc #animate_loop ; Go do next image + + ; We all done - soooo get rid of the object and die +#fwanim_done + calla DELOBJA8 ; Kill off the object + DIE ; And die + + + SUBRP firework_flare + movk 25,a0 + calla RNDRNG0 + addk 1,a0 + calla PRCSLP + + movk 4,a0 + calla RNDRNG0 + move a0,b0 + sll 5,b0 + addi #fw_pals,b0 + move *b0,b0,L + + move a9,a0 + srl 16,a0 + sll 16,a0 + + move a9,a1 + sll 16,a1 + + movi #flare_anim,a9 + move *a9+,a2,L + + movi 810h,a3 + movi DMAWNZ|M_3D,a4 + movi CLSFRWK,a5 + clr a6 + clr a7 + + calla BEGINOBJP + + PUSH a0,a1,a2,a3,a4,a5,a6,a7 + calla flash_white + movi FLR_FW_SND,a3 + calla SNDSND + PULL a0,a1,a2,a3,a4,a5,a6,a7 + +#flare_loop + SLEEPK 2 +#fl_loop + move *a9+,a0,L + jrz #reset_flare + move *a8(OCTRL),a1 + calla obj_aniq + jruc #flare_loop + +#reset_flare + move @fizzle_flare,a9 + jrnz #flare_fizzle + movi #flare_anim2,a9 + jruc #fl_loop + +#flare_fizzle + + movi #flare_anim2,a9 +#ff_loop + SLEEPK 4 + cmpi #flare_anim,a9 + jrz #ff_exit + move -*a9,a0,L + move *a8(OCTRL),a1 + calla obj_aniq + jruc #ff_loop +#ff_exit + + calla DELOBJA8 + DIE + + + + SUBR do_fireworks + +; RETP + PUSHP a9,a10 + + calla pal_clean ; Get rid of extra palettes + + clr a10 ; Fade down the lights + move a10,@fizzle_flare + movk 32,a11 + CREATE0 fade_down + SLEEPK 30 + + movi ANNC_PID,a0 + calla KIL1C ; Kill off any announcer processes + + movi METER_PID,a0 + calla KIL1C ; Kill off meter processes + + movi TIMER_PID,a0 + calla KIL1C ; Kill off match timer process + + movi FLASH_PID,a0 + calla KIL1C ; Kill off any flasher processes + + movi ICON_PID,a0 + calla KIL1C ; Kill off any icon flashers + + movi SMOVE_PID,a0 + calla KIL1C ; Kill off special move processes + + movi PINHIM_ANIM_PID,a0 + calla KIL1C ; Kill off pin him processes + + movi REWIRE_PID,a0 + calla KIL1C ; Kill off rewire processes + + movi ZSHIFT_PID,a0 + calla KIL1C ; Kill off something to do with progress ladder + + movi GETUP_PID,a0 + calla KIL1C ; Kill off getup meter processes + + movi FLASH_COMBO_PID,a0 + calla KIL1C ; Kill off any combo flashers + + movi CYCPID,a0 + calla KIL1C ; Kill any cyclers + + movi FX_PID,a0 + calla KIL1C ; Kill and FX processes + + movi ADD_INIT_PID,a0 + calla KIL1C ; Kill any perfect processes + + movi OVRHED_PID,a0 + calla KIL1C ; Kill any of these that are laying around + + .if DEBUG + movi CDEBUG_PID,a0 + calla KIL1C ; Kill off collision box debug processes + .endif + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ; Kill off any announcer objects + + movi CLSNEUT|TYPNEUT|SUBMFRAME,a0 + calla obj_del1c ; Kill off the meter objects + + movi CLSNEUT|TYPNEUT|SUBLBAR,a0 + calla obj_del1c ; Kill off meter bars + + movi TYPTIMERDIGIT,a0 + calla obj_del1c ; Kill off the match timer objects + + movi TYPWWFICON,a0 + calla obj_del1c ; Kill off any WWF Icon objects + + movi CLSDEAD,a0 + calla obj_del1c ; Kill off winstreak number + + movi TYPPINHIM,a0 + calla obj_del1c ; Kill off any pin him objects + + movi TYPPERFECT,a0 + calla obj_del1c ; Kill off any perfect objects + + clr a0 ; Turn off bog reduction + move a0,@reduce_bog ; Animate the crowd + CREATE CROWD_PID,crowd_anim + + calla pal_clean ; Clean any other palettes we freed by + ; Getting rid of all of the above shit + + + ; Back of ring flares + movk 12,a10 ; Make 12 flares + movi [798,128],a9 ; [sx,y] of flare positions +#do_flare + CREATE FIREWRK_PID,firework_flare + addi [50,0],a9 ; Increment x position + dsjs a10,#do_flare ; go do next flare + + ; Left Side flares + movi [770,148],a9 + CREATE FIREWRK_PID,firework_flare + movi [753,168],a9 + CREATE FIREWRK_PID,firework_flare + movi [736,188],a9 + CREATE FIREWRK_PID,firework_flare + movi [719,208],a9 + CREATE FIREWRK_PID,firework_flare + movi [702,228],a9 + CREATE FIREWRK_PID,firework_flare + + ; Right Side flares + movi [1372,148],a9 + CREATE FIREWRK_PID,firework_flare + movi [1389,168],a9 + CREATE FIREWRK_PID,firework_flare + movi [1406,188],a9 + CREATE FIREWRK_PID,firework_flare + movi [1423,208],a9 + CREATE FIREWRK_PID,firework_flare + movi [1440,228],a9 + CREATE FIREWRK_PID,firework_flare + + clr a10 ; Lights back on + movi 64,a11 + CREATE0 fade_up + SLEEPK 16 + + calla is_8_on_1 + jrc #do_pan + move @royal_rumble,a14 + jrz #no_pan +#do_pan + clr a0 + move a0,@pan_down + CREATE0 pan_around + jruc #not_1_on_3 +#no_pan + ; Print 1vs3 congrats message + clr a14 + callr print_congrats + jruc #no_exp_fw ; Don't bother with exploders +#not_1_on_3 + + movi 100,a8 ; Number of exploding fire works to do +#do_exfw_loop + CREATE0 #animate_fwexp ; Create an exploding firework + + movk 10,a0 ; Sleep a random amount of time + calla RNDRNG0 + addk 1,a0 ; Make sure we sleep at least 1 + calla PRCSLP ; Sleep + + dsjs a8,#do_exfw_loop + SLEEPK 30 + movk 1,a0 + move a0,@pan_down + movi TSEC*2,a9 + jruc #cheer_lp +#no_exp_fw + movi TSEC*5,a9 +#cheer_lp + move a9,a9 + jrle #clp_done + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + movk 1,a3 ; And make 'em do something + calla crowd_cheer + PULL a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + SLEEPK 15 + subk 15,a9 + jruc #cheer_lp +#clp_done + + + movk 1,a0 ; Tell flares to fizzle out + move a0,@fizzle_flare + + + SLEEP TSEC ; Give flares time to die out + + + PULLP a9,a10 + RETP + + .bss pan_status,16 + +panning_points ; figure 8 + .long 15,[850,0],[EXP_FWY+32,0] ; + .long 15,[900,0],[EXP_FWY,0] ; + .long 15,[950,0],[EXP_FWY,0] ; /--\ /--\ + .long 15,[1000,0],[EXP_FWY+32,0] ; / \ / \ + .long 15,[950,0],[EXP_FWY+64,0] ;< X > + .long 15,[900,0],[EXP_FWY+64,0] ; \ / \ / + .long 30,[800,0],[EXP_FWY,0] ; \--/ \--/ + .long 15,[750,0],[EXP_FWY,0] ; + .long 15,[700,0],[EXP_FWY+32,0] ; + .long 15,[750,0],[EXP_FWY+64,0] ; + .long 15,[800,0],[EXP_FWY+64,0] ; + .long 15,[850,0],[EXP_FWY+32,0] ; + .long 0 + + .bss ticks,32 ; Ticks for this move + .bss dx,32 ; X movement per tick + .bss dy,32 ; Y movement per tick + .bss targ_x,16 ; Target X position + .bss targ_y,16 ; Target Y position + .bss final_x,32 ; Final X position to pan to + .bss final_y,32 ; Final Y position to pan to + .bss p1x,32 ; Start X point + .bss p1y,32 ; Start Y point + .bss p2x,32 ; End X point + .bss p2y,32 ; End Y point + +#************************************************************* +* + SUBRP calc_dxdy + PUSH a8,a9,a10,a11 + + movi p1x,a8 ; Get pointer to start and end points + + move @ticks,a10,L ; Get ticks for this move + + move *a8,a11,L ; Get start X position + move *a8(64),a9,L ; Get End X position + sub a11,a9 ; Get X difference + divs a10,a9 ; Divide by ticks to get there + move a9,@dx,L ; Store delta X + + move *a8(32),a11,L ; Get start Y position + move *a8(96),a9,L ; Get End Y position + sub a11,a9 ; Get Y difference + divs a10,a9 ; Divide by ticks to get there + move a9,@dy,L ; Store delta Y + + PULL a8,a9,a10,a11 + rets + + +#************************************************************* +* + SUBRP move_camera + PUSH a0 + + move @WORLDTLX,a14,L ; Get Current X position + move @dx,a0,L ; Get Delta X + add a0,a14 ; Add to Current X postion + move a14,@WORLDTLX,L ; Write new position + + + move @WORLDTLY,a14,L ; Get Current Y position + move @dy,a0,L ; Get Delta Y + add a0,a14 ; Add to Current Y position + move a14,@WORLDTLY,L ; Write new Y position + + PULL a0 + rets + +#************************************************************** +* + SUBRP check_camera_position + PUSH a0 + + move @WORLDTLX,a14,L ; Get current X position + sra 16,a14 ; Get rid of fractional portion + move @targ_x,a0 ; Get current target X position + sub a0,a14 ; Subtract the two + abs a14 ; Make sure it is positive + cmpi 3,a14 ; Are we within 3 ? + jrgt #check_y ; br = no + clr a14 + move a14,@dx,L ; Stop X movement + +#check_y + move @WORLDTLY,a14,L ; Get current Y position + sra 16,a14 ; Get rid of fractional portion + move @targ_y,a0 ; Get current target Y position + sub a0,a14 ; Subtract the two + abs a14 ; Make sure it is positive + cmpi 3,a14 ; Are we within 3 ? + jrgt #check_done ; br = no + clr a14 + move a14,@dy,L ; Stop Y movement + +#check_done + PULL a0 + rets + +#******************************************************************* +* + SUBRP pan_around + + SLEEP TSEC/2 + + clr a14 + move a14,@pan_status + + move @WORLDTLX,a14,L ; Get current X position + move a14,@final_x,L ; Save off for pan back + move a14,@p1x,L ; Set as the starting X point + move @WORLDTLY,a14,L ; Get current Y position + move a14,@final_y,L ; Save off for pan back + move a14,@p1y,L ; Set as the starting Y point + +#pan_again + movi panning_points,a8 ; Get pointer to pan points table + +#p1on8_lp + move *a8+,a14,L ; Get Ticks for the move + move a14,@ticks,L ; Set ticks for this move + move *a8+,a14,L ; Get Target X position + move a14,@p2x,L ; Set Ending X position + srl 16,a14 ; Lop off fractional part + move a14,@targ_x ; Store it as the target X position + move *a8+,a14,L ; Get Target Y position + move a14,@p2y,L ; Set Ending Y position + srl 16,a14 ; Lop off fractional part + move a14,@targ_y ; Store it as the target Y position + movk 15,a10 ; Number of ticks for this move + callr calc_dxdy ; Calculate dx and dy +#next_move + callr move_camera ; Move the camera + calla BGND_UD1 ; Update the background + SLEEPK 1 ; Let it actually move + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + movk 1,a3 + calla crowd_cheer ; Make the crowd cheer + PULL a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + callr check_camera_position ; Adjust dx and dy + + move @dx,a14,L ; Get current dx + move @dy,a0,L ; Get current dy + or a0,a14 ; Or 'em together + jrnz #next_move ; Done with this segment ? - br - no + + ; This is probably where I want to put up different lines of text + move @pan_status,a14 + jrnz #text_is_up + + SLEEPK 5 + + movk 1,a14 + move a14,@pan_status + move @royal_rumble,a14 + jrz #do_8_on_1 + + ; Print 2vs8 congrats message - GAWD IS THIS UUUUGGGLY + movk 2,a14 + jruc #pcx +#do_8_on_1 + ; Print 1vs8 congrats message - GAWD IS THIS UUUUGGGLY + movk 1,a14 +#pcx callr print_congrats + SLEEPK 2 +#text_is_up + + + move @p2x,a14,L ; Get Last End X position + move a14,@p1x,L ; Store as new Start X position + move @p2y,a14,L ; Get Last End Y position + move a14,@p1y,L ; Store as new Start Y position + move @pan_down,a14 + jrnz #pan_done + move *a8,a14,L ; Get next X target + jrnz #p1on8_lp ; Done ? - br = no + + move @pan_down,a14 + jrz #pan_again + +#pan_done + move @final_x,a14,L ; Get final X position + move a14,@p2x,L ; Store it as new End Y postion + srl 16,a14 ; Lop off fractional part + move a14,@targ_x ; Store it as the target X position + move @final_y,a14,L ; Get final Y position + move a14,@p2y,L ; Store it as new End Y postion + srl 16,a14 ; Lop off fractional part + move a14,@targ_y ; Store it as the target Y position + + movk 15,a14 + move a14,@ticks,L ; Store ticks for this move + + callr calc_dxdy ; Calculate dx and dy +#npb_move + callr move_camera ; Move the camera + calla BGND_UD1 ; Update the background + SLEEPK 1 ; Let it actually move + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + movk 1,a3 + calla crowd_cheer ; Make the crowd cheer + PULL a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + callr check_camera_position ; Adjust dx and dy + + move @dx,a14,L ; Get current dx + move @dy,a0,L ; Get current dy + or a0,a14 ; Or 'em together + jrnz #npb_move ; Done with last segment ? - br = no + + movi CLSMK3,a0 + calla obj_del1c ; Get rid of the text when we pan back down + + DIE + + +#*************************************** +* + SUBRP #c1v3s_tbl + .long #congrat_1v8_1 + .long #congrat_1v8_2 + .long #congrat_1v8_3 + .long #congrat_1v8_4 + .long #congrat_1v8_5 + .long 0 + + SUBRP #c1v8s_tbl + .long #congrat_1v8_1 + .long #congrat_1v8_2 + .long #congrat_1v8_3 + .long #congrat_1v8_4 + .long #congrat_1v8_5 + .long 0 + + SUBRP #c2v8s_tbl + .long #congrat_1v8_1 + .long #congrat_1v8_2 + .long #congrat_1v8_3 + .long 0 + + SUBRP #congrats_setup_tbl + .long #c1v3s_tbl + .long #c1v8s_tbl + .long #c2v8s_tbl + + + SUBRP #c1v3_tbl + .long #congrat_1v8_1_str + .long #congrat_1v3_2_str + .long #congrat_1v3_3_str + .long #congrat_1v3_4_str + .long #congrat_1v8_5_str + + SUBRP #c1v8_tbl + .long #congrat_1v8_1_str + .long #congrat_1v8_2_str + .long #congrat_1v8_3_str + .long #congrat_1v8_4_str + .long #congrat_1v8_5_str + + SUBRP #c2v8_tbl + .long #congrat_1v8_1_str + .long #congrat_2v8_2_str + .long #congrat_2v8_3_str + + SUBRP #congrats_str_tbl + .long #c1v3_tbl + .long #c1v8_tbl + .long #c2v8_tbl + +; a14 = 0 - 1v3, 1 - 1vs8, 2 - 2vs 8 + SUBRP print_congrats + PUSH a8,a9,a10,a11 + sll 5,a14 + move a14,a9 + move a14,a10 + addi #congrats_setup_tbl,a9 + addi #congrats_str_tbl,a10 + move *a9,a9,L + move *a10,a10,L +#print_clp + move *a9+,a8,L + jrz #c_done + move *a10+,a11,L + move a8,a2 + calla setup_message + movi CLSMK3,a4 + move a4,@mess_objid + move a11,a4 + calla print_string_C2 + jruc #print_clp +#c_done + PULL a8,a9,a10,a11 + rets + +#congrat_1v3_2_str + .string "YOU ARE AN EXCELLENT WRESTLER, BUT...",0 + .even +#congrat_1v3_3_str + .string "FOR A REAL CHALLENGE, TRY GOING FOR",0 + .even +#congrat_1v3_4_str + .string "THE WORLD WRESTLING FEDERATION BELT!!!",0 + .even + + +#congrat_1v8_1_str + .string "CONGRATULATIONS!!!",0 + .even +#congrat_1v8_2_str + .string "YOU HAVE SUCESSFULLY ACHIEVED THE",0 + .even +#congrat_1v8_3_str + .string "WORLD WRESTLING FEDERATION CHAMPIONSHIP.",0 + .even +#congrat_1v8_4_str + .string "YOU ARE THE GREATEST WRESTLER!!!",0 + .even +#congrat_1v8_5_str + .string "...THANK YOU FOR PLAYING...",0 + .even + + +#congrat_2v8_2_str + .string "YOUR WRESTLING TEAM IS ONE OF",0 + .even +#congrat_2v8_3_str + .string "THE BEST TEAMS OF ALL TIME!!!",0 + .even + + +#congrat_1v8_1 + JAM_STR wsf14_ascii,10,0,200,70,WSF_R_P,print_string_C2 + .even +#congrat_1v8_2 + JAM_STR font9_ascii,10,0,200,100,FNT9YEL_P,print_string_C2 + .even +#congrat_1v8_3 + JAM_STR font9_ascii,10,0,200,113,FNT9YEL_P,print_string_C2 + .even +#congrat_1v8_4 + JAM_STR font9_ascii,10,0,200,126,FNT9YEL_P,print_string_C2 + .even +#congrat_1v8_5 + JAM_STR font9_ascii,10,0,200,152,FNT9YEL_P,print_string_C2 + .even + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/FIREWOR.ASM b/FIREWOR.ASM new file mode 100755 index 0000000..2dd0c0c --- /dev/null +++ b/FIREWOR.ASM @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/FIREWORK.ASM b/FIREWORK.ASM new file mode 100755 index 0000000..93e7446 --- /dev/null +++ b/FIREWORK.ASM @@ -0,0 +1,933 @@ +************************************************************** +* +* Software: Mike Lynch, Jason Skiles, Mark Turmell +* Initiated: 05/12/95 +* +* Modified: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "fireword.asm" + .title "wrestling game program" + .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 "wwfsec.equ" + .include "game.equ" + .include "audit.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .include "sound.equ" + .include "damage.equ" + .include "jjxm.h" + + .include "imgtbl.glo" + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + + .ref RNDRNG0 + .ref BEGINOBJP + .ref PRCSLP + .ref DELOBJA8 + .ref obj_aniq + .ref flash_white + .ref pal_clean + .ref fade_up + .ref fade_down + .ref BGND_UD1 + .ref crowd_anim + .ref crowd_cheer + .ref reduce_bog + .ref is_8_on_1 + .ref print_message + .ref wsf14_ascii + .ref royal_rumble + .ref print_string_C2 + .ref print_string_C + .ref font9_ascii + .ref setup_message + .ref mess_objid + .ref SNDSND + .ref crowd_process + .ref process_ptrs + .ref ogmd10_ascii + + .bss fizzle_flare,16 + .bss pan_down,16 + +EXP_FW_SND .equ 1252 +FLR_FW_SND .equ 1244 + +#********************************************************************** +* + SUBRP #fwexa_anim + .long FWEXPA01 + .long FWEXPA02 + .long FWEXPA03 + .long FWEXPA04 + .long FWEXPA05 + .long FWEXPA06 + .long FWEXPA07 + .long FWEXPA08 + .long FWEXPA09 + .long FWEXPA10 + .long FWEXPA11 + .long 0 + + SUBRP #fwexb_anim + .long FWEXPB01 + .long FWEXPB02 + .long FWEXPB03 + .long FWEXPB04 + .long FWEXPB05 + .long FWEXPB06 + .long FWEXPB07 + .long FWEXPB08 + .long FWEXPB09 + .long FWEXPB10 + .long FWEXPB11 + .long 0 + + SUBRP #fwexp_tbl + .long #fwexa_anim + .long #fwexb_anim + + SUBRP #flare_anim + .long FWFLAR01 + .long FWFLAR02 + .long FWFLAR03 + .long FWFLAR04 + .long FWFLAR05 + SUBRP #flare_anim2 + .long FWFLAR06 + .long FWFLAR07 + .long FWFLAR08 + .long FWFLAR09 + .long FWFLAR10 + .long FWFLAR11 + .long FWFLAR12 + .long FWFLAR13 + .long 0 + + SUBRP #fw_pals + .long FWWHT_P + .long FWBLV_P + .long FWPNK_P + .long FWBLU_P + .long FWYEL_P + +EXP_FWY .equ -260 + + SUBRP #animate_fwexp + + ; First Get a random position to place the explosion + movi 96,a0 ; Get a random vertical position + calla RNDRNG0 + addi EXP_FWY-48,a0 + move a0,a9 ; Save it away + + movi 350,a0 ; Get a random horizontal postion + calla RNDRNG0 + addi 850,a0 + move a0,a10 + + movi 200h,a0 ; Get a random Zpos + calla RNDRNG0 + addi 700h,a0 ; Make sure we can see it + move a0,a3 + + ; Now get a random firework explosion to use + movi 1,a0 ; Get a random explosion to use + calla RNDRNG0 + sll 5,a0 + addi #fwexp_tbl,a0 + move *a0,a11,L ; Get pointer to image table + move *a11+,a2,L ; Get the first image + + ; Set up some additional object creation junk + movi DMAWNZ|M_3D,a4 + movi CLSNEUT,a5 ; Set the Object ID + clr a6 ; Set the X velocity + clr a7 ; Set the Y velocity + + ; Get a random palette to use + movi 4,a0 ; Get a random palette number + calla RNDRNG0 + move a0,b0 ; Get entry from palette table + sll 5,b0 + addi #fw_pals,b0 + move *b0,b0,L + + ; Set up the x and y positions for the object + move a9,a1 ; Get saved YPOS + sll 16,a1 ; Shift it for object creation + move a10,a0 ; Get saved XPOS + sll 16,a0 ; Shift it for object creattion + + ; Now create the first image + calla BEGINOBJP ; Create the object + + ; Make an explosion sound + movi EXP_FW_SND,a3 + calla SNDSND + + ; And animate the whole works + move *a8(OCTRL),a10 + move *a8(OYPOS),a9 +#animate_loop + SLEEPK 1 + move *a11+,a0,L ; Get the next image + jrz #fwanim_done ; Are we done ? - br = yes + move a10,a1 + calla obj_aniq ; Change the image + addk 4,a9 + move a9,*a8(OYPOS) + jruc #animate_loop ; Go do next image + + ; We all done - soooo get rid of the object and die +#fwanim_done + calla DELOBJA8 ; Kill off the object + DIE ; And die + + + SUBRP firework_flare + movk 25,a0 + calla RNDRNG0 + addk 1,a0 + calla PRCSLP + + movk 4,a0 + calla RNDRNG0 + move a0,b0 + sll 5,b0 + addi #fw_pals,b0 + move *b0,b0,L + + move a9,a0 + srl 16,a0 + sll 16,a0 + + move a9,a1 + sll 16,a1 + + movi #flare_anim,a9 + move *a9+,a2,L + + movi 810h,a3 + movi DMAWNZ|M_3D,a4 + movi CLSFRWK,a5 + clr a6 + clr a7 + + calla BEGINOBJP + + + +; PUSH a0,a1,a2,a3,a4,a5,a6,a7 +; calla flash_white +; movi FLR_FW_SND,a3 +; calla SNDSND +; PULL a0,a1,a2,a3,a4,a5,a6,a7 + + + + move *a8(OCTRL),a10 +#flare_loop + SLEEPK 2 +#fl_loop + move *a9+,a0,L + jrz #reset_flare + move a10,a1 + calla obj_aniq + jruc #flare_loop + +#reset_flare + move @fizzle_flare,a9 + jrnz #flare_fizzle + movi #flare_anim2,a9 + jruc #fl_loop + +#flare_fizzle + + movi #flare_anim2,a9 +#ff_loop + SLEEPK 4 + cmpi #flare_anim,a9 + jrz #ff_exit + move -*a9,a0,L + move a10,a1 + calla obj_aniq + jruc #ff_loop +#ff_exit + + calla DELOBJA8 + DIE + + + + SUBR do_fireworks + +; RETP + PUSHP a9,a10 + + calla pal_clean ; Get rid of extra palettes + + clr a10 ; Fade down the lights + move a10,@fizzle_flare + movk 32,a11 + CREATE0 fade_down + SLEEPK 30 + + movi ANNC_PID,a0 + calla KIL1C ; Kill off any announcer processes + + movi METER_PID,a0 + calla KIL1C ; Kill off meter processes + + movi TIMER_PID,a0 + calla KIL1C ; Kill off match timer process + + movi FLASH_PID,a0 + calla KIL1C ; Kill off any flasher processes + + movi ICON_PID,a0 + calla KIL1C ; Kill off any icon flashers + + movi SMOVE_PID,a0 + calla KIL1C ; Kill off special move processes + + movi PINHIM_ANIM_PID,a0 + calla KIL1C ; Kill off pin him processes + + movi REWIRE_PID,a0 + calla KIL1C ; Kill off rewire processes + + movi ZSHIFT_PID,a0 + calla KIL1C ; Kill off something to do with progress ladder + + movi GETUP_PID,a0 + calla KIL1C ; Kill off getup meter processes + + movi FLASH_COMBO_PID,a0 + calla KIL1C ; Kill off any combo flashers + + +;Jake adds 1 to FLASH_COMBO_PID to point at plyr 2! + movi FLASH_COMBO_PID+1,a0 + calla KIL1C ; Kill off any combo flashers + + + movi CYCPID,a0 + calla KIL1C ; Kill any cyclers + + movi FX_PID,a0 + calla KIL1C ; Kill and FX processes + + movi ADD_INIT_PID,a0 + calla KIL1C ; Kill any perfect processes + + movi OVRHED_PID,a0 + calla KIL1C ; Kill any of these that are laying around + + .if DEBUG + movi CDEBUG_PID,a0 + calla KIL1C ; Kill off collision box debug processes + .endif + +; movi ROPE_PID,a0 +; calla KIL1C ; Kill off any rope processes + + callr knockout_drones ; Knock out any wrestler process that are drone wrestlers + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ; Kill off any announcer objects + + movi CLSNEUT|TYPNEUT|SUBMFRAME,a0 + calla obj_del1c ; Kill off the meter objects + + movi CLSNEUT|TYPNEUT|SUBLBAR,a0 + calla obj_del1c ; Kill off meter bars + + movi TYPTIMERDIGIT,a0 + calla obj_del1c ; Kill off the match timer objects + + movi TYPWWFICON,a0 + calla obj_del1c ; Kill off any WWF Icon objects + + movi CLSDEAD,a0 + calla obj_del1c ; Kill off winstreak number + + movi TYPPINHIM,a0 + calla obj_del1c ; Kill off any pin him objects + + movi TYPPERFECT,a0 + calla obj_del1c ; Kill off any perfect objects + + clr a0 ; Turn off bog reduction + move a0,@reduce_bog ; Animate the crowd +; CREATE CROWD_PID,crowd_anim + + ;wake up the crowd + move @crowd_process,a0,L + movk 1,a14 + move a14,*a0(PTIME) + + calla pal_clean ; Clean any other palettes we freed by + ; Getting rid of all of the above shit + + ;ORIGINAL MIKE CODE + ;JASON'S QUICK-HACK VERSION + + + + calla flash_white + movi FLR_FW_SND,a3 + calla SNDSND + + + ; Back of ring flares + movk 12,a10 ; Make 12 flares + movi [798,128],a9 ; [sx,y] of flare positions +#do_flare + CREATE FIREWRK_PID,firework_flare + addi [50,0],a9 ; Increment x position + dsjs a10,#do_flare ; go do next flare + + ; Left Side flares + movi [770,148],a9 + CREATE FIREWRK_PID,firework_flare + movi [753,168],a9 + CREATE FIREWRK_PID,firework_flare + movi [736,188],a9 + CREATE FIREWRK_PID,firework_flare + movi [719,208],a9 + CREATE FIREWRK_PID,firework_flare + movi [702,228],a9 + CREATE FIREWRK_PID,firework_flare + + ; Right Side flares + movi [1372,148],a9 + CREATE FIREWRK_PID,firework_flare + movi [1389,168],a9 + CREATE FIREWRK_PID,firework_flare + movi [1406,188],a9 + CREATE FIREWRK_PID,firework_flare + movi [1423,208],a9 + CREATE FIREWRK_PID,firework_flare + movi [1440,228],a9 + CREATE FIREWRK_PID,firework_flare + + clr a10 ; Lights back on + movi 64,a11 + CREATE0 fade_up + SLEEPK 16 + + calla flash_white + movi FLR_FW_SND,a3 + calla SNDSND + + ;sleep while flares go off + SLEEP TSEC + + ;now slowly pan up + clr a14 + move a14,@pan_down + CREATE0 pan_around + + ;do fireworks + + movi TSEC*6,a8 + +#do_exfw_loop + CREATE0 #animate_fwexp ; Create an exploding firework + + movk 6,a0 ; Sleep a random amount of time + calla RNDRNG0 + addk 1,a0 ; Make sure we sleep at least 1 + sub a0,a8 + calla PRCSLP ; Sleep + move a8,a8 + jrgt #do_exfw_loop + +;Kill text on scrn + + movk 1,a0 + move a0,@pan_down + movi TSEC*2,a9 + jruc #cheer_lp +#no_exp_fw + movi TSEC*5,a9 +#cheer_lp + move a9,a9 + jrle #clp_done + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + movk 1,a3 ; And make 'em do something + calla crowd_cheer + PULL a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + SLEEPK 15 + subk 15,a9 + jruc #cheer_lp +#clp_done + + + movk 1,a0 ; Tell flares to fizzle out + move a0,@fizzle_flare + + + SLEEP TSEC ; Give flares time to die out + + + PULLP a9,a10 + RETP + + .bss pan_status,16 + +panning_points ; figure 8 + +INIT_PAN_SPEED .equ TSEC + + .long INIT_PAN_SPEED,[850,0],[EXP_FWY+0,0] + .long 3,[848,0],[EXP_FWY-10,0] + .long 3,[844,0],[EXP_FWY-20,0] + .long 3,[836,0],[EXP_FWY-28,0] + .long 3,[825,0],[EXP_FWY-36,0] + .long 3,[812,0],[EXP_FWY-42,0] + .long 3,[798,0],[EXP_FWY-46,0] + .long 3,[783,0],[EXP_FWY-48,0] + .long 3,[767,0],[EXP_FWY-48,0] + .long 3,[752,0],[EXP_FWY-46,0] + .long 3,[738,0],[EXP_FWY-42,0] + .long 3,[725,0],[EXP_FWY-36,0] + .long 3,[714,0],[EXP_FWY-28,0] + .long 3,[706,0],[EXP_FWY-20,0] + .long 3,[702,0],[EXP_FWY-10,0] + .long 3,[700,0],[EXP_FWY+0,0] + .long 3,[702,0],[EXP_FWY+10,0] + .long 3,[706,0],[EXP_FWY+20,0] + .long 3,[714,0],[EXP_FWY+28,0] + .long 3,[725,0],[EXP_FWY+36,0] + .long 3,[737,0],[EXP_FWY+42,0] + .long 3,[752,0],[EXP_FWY+46,0] + .long 3,[767,0],[EXP_FWY+48,0] + .long 3,[783,0],[EXP_FWY+48,0] + .long 3,[798,0],[EXP_FWY+46,0] + .long 3,[812,0],[EXP_FWY+42,0] + .long 3,[825,0],[EXP_FWY+36,0] + .long 3,[836,0],[EXP_FWY+28,0] + .long 3,[844,0],[EXP_FWY+20,0] + .long 3,[848,0],[EXP_FWY+10,0] + .long 3,[850,0],[EXP_FWY+0,0] + .long 3,[852,0],[EXP_FWY-10,0] + .long 3,[856,0],[EXP_FWY-20,0] + .long 3,[864,0],[EXP_FWY-28,0] + .long 3,[875,0],[EXP_FWY-36,0] + .long 3,[888,0],[EXP_FWY-42,0] + .long 3,[902,0],[EXP_FWY-46,0] + .long 3,[917,0],[EXP_FWY-48,0] + .long 3,[933,0],[EXP_FWY-48,0] + .long 3,[948,0],[EXP_FWY-46,0] + .long 3,[962,0],[EXP_FWY-42,0] + .long 3,[975,0],[EXP_FWY-36,0] + .long 3,[986,0],[EXP_FWY-28,0] + .long 3,[994,0],[EXP_FWY-20,0] + .long 3,[998,0],[EXP_FWY-10,0] + .long 3,[1000,0],[EXP_FWY+0,0] + .long 3,[998,0],[EXP_FWY+10,0] + .long 3,[994,0],[EXP_FWY+20,0] + .long 3,[986,0],[EXP_FWY+28,0] + .long 3,[975,0],[EXP_FWY+36,0] + .long 3,[963,0],[EXP_FWY+42,0] + .long 3,[948,0],[EXP_FWY+46,0] + .long 3,[933,0],[EXP_FWY+48,0] + .long 3,[917,0],[EXP_FWY+48,0] + .long 3,[902,0],[EXP_FWY+46,0] + .long 3,[888,0],[EXP_FWY+42,0] + .long 3,[875,0],[EXP_FWY+36,0] + .long 3,[864,0],[EXP_FWY+28,0] + .long 3,[856,0],[EXP_FWY+20,0] + .long 3,[852,0],[EXP_FWY+10,0] + .long 3,[850,0],[EXP_FWY+0,0] + .long 0 + + .bss ticks,32 ; Ticks for this move + .bss dx,32 ; X movement per tick + .bss dy,32 ; Y movement per tick + .bss targ_x,16 ; Target X position + .bss targ_y,16 ; Target Y position + .bss final_x,32 ; Final X position to pan to + .bss final_y,32 ; Final Y position to pan to + .bss p1x,32 ; Start X point + .bss p1y,32 ; Start Y point + .bss p2x,32 ; End X point + .bss p2y,32 ; End Y point + +#************************************************************* +* + SUBRP calc_dxdy + PUSH a8,a9,a10,a11 + + movi p1x,a8 ; Get pointer to start and end points + + move @ticks,a10,L ; Get ticks for this move + + move *a8,a11,L ; Get start X position + move *a8(64),a9,L ; Get End X position + sub a11,a9 ; Get X difference + divs a10,a9 ; Divide by ticks to get there + move a9,@dx,L ; Store delta X + + move *a8(32),a11,L ; Get start Y position + move *a8(96),a9,L ; Get End Y position + sub a11,a9 ; Get Y difference + divs a10,a9 ; Divide by ticks to get there + move a9,@dy,L ; Store delta Y + + PULL a8,a9,a10,a11 + rets + + +#************************************************************* +* + SUBRP move_camera + PUSH a0 + + move @WORLDTLX,a14,L ; Get Current X position + move @dx,a0,L ; Get Delta X + add a0,a14 ; Add to Current X postion + move a14,@WORLDTLX,L ; Write new position + + + move @WORLDTLY,a14,L ; Get Current Y position + move @dy,a0,L ; Get Delta Y + add a0,a14 ; Add to Current Y position + move a14,@WORLDTLY,L ; Write new Y position + + PULL a0 + rets + +#************************************************************** +* + SUBRP check_camera_position + PUSH a0 + + move @WORLDTLX,a14,L ; Get current X position + sra 16,a14 ; Get rid of fractional portion + move @targ_x,a0 ; Get current target X position + sub a0,a14 ; Subtract the two + abs a14 ; Make sure it is positive + cmpi 3,a14 ; Are we within 3 ? + jrgt #check_y ; br = no + clr a14 + move a14,@dx,L ; Stop X movement + +#check_y + move @WORLDTLY,a14,L ; Get current Y position + sra 16,a14 ; Get rid of fractional portion + move @targ_y,a0 ; Get current target Y position + sub a0,a14 ; Subtract the two + abs a14 ; Make sure it is positive + cmpi 3,a14 ; Are we within 3 ? + jrgt #check_done ; br = no + clr a14 + move a14,@dy,L ; Stop Y movement + +#check_done + PULL a0 + rets + +#******************************************************************* +* + SUBRP pan_around + + SLEEP TSEC/2 + + clr a14 + move a14,@pan_status + + move @WORLDTLX,a14,L ; Get current X position + move a14,@final_x,L ; Save off for pan back + move a14,@p1x,L ; Set as the starting X point + move @WORLDTLY,a14,L ; Get current Y position + move a14,@final_y,L ; Save off for pan back + move a14,@p1y,L ; Set as the starting Y point + +#pan_again + movi panning_points,a8 ; Get pointer to pan points table + +#p1on8_lp + move *a8+,a14,L ; Get Ticks for the move + move a14,@ticks,L ; Set ticks for this move + move *a8+,a14,L ; Get Target X position + move a14,@p2x,L ; Set Ending X position + srl 16,a14 ; Lop off fractional part + move a14,@targ_x ; Store it as the target X position + move *a8+,a14,L ; Get Target Y position + move a14,@p2y,L ; Set Ending Y position + srl 16,a14 ; Lop off fractional part + move a14,@targ_y ; Store it as the target Y position + movk 15,a10 ; Number of ticks for this move + callr calc_dxdy ; Calculate dx and dy +#next_move + callr move_camera ; Move the camera + calla BGND_UD1 ; Update the background + SLEEPK 1 ; Let it actually move + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + movk 1,a3 + calla crowd_cheer ; Make the crowd cheer + PULL a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + callr check_camera_position ; Adjust dx and dy + + move @dx,a14,L ; Get current dx + move @dy,a0,L ; Get current dy + or a0,a14 ; Or 'em together + jrnz #next_move ; Done with this segment ? - br - no + + ; This is probably where I want to put up different lines of text + move @pan_status,a14 + jrnz #text_is_up + + SLEEPK 5 + + movk 1,a14 + move a14,@pan_status + move @royal_rumble,a14 + jrnz #do_8_on_2 + calla is_8_on_1 + jrc #do_8_on_1 + +#do_3_on_1 + ; Print 1vs3 congrats message - GAWD IS THIS UUUUGGGLY + clr a14 + jruc #pcx +#do_8_on_2 + ; Print 2vs8 congrats message - GAWD IS THIS UUUUGGGLY + movk 2,a14 + jruc #pcx +#do_8_on_1 + ; Print 1vs8 congrats message - GAWD IS THIS UUUUGGGLY + movk 1,a14 +#pcx callr print_congrats + SLEEPK 2 +#text_is_up + + + move @p2x,a14,L ; Get Last End X position + move a14,@p1x,L ; Store as new Start X position + move @p2y,a14,L ; Get Last End Y position + move a14,@p1y,L ; Store as new Start Y position + move @pan_down,a14 + jrnz #pan_done + move *a8,a14,L ; Get next X target + jrnz #p1on8_lp ; Done ? - br = no + + move @pan_down,a14 + jrz #pan_again + +#pan_done + + movi CLSMK3,a0 + calla obj_del1c ; Get rid of the text when we pan back down + + move @final_x,a14,L ; Get final X position + move a14,@p2x,L ; Store it as new End Y postion + srl 16,a14 ; Lop off fractional part + move a14,@targ_x ; Store it as the target X position + move @final_y,a14,L ; Get final Y position + move a14,@p2y,L ; Store it as new End Y postion + srl 16,a14 ; Lop off fractional part + move a14,@targ_y ; Store it as the target Y position + + movi INIT_PAN_SPEED,a14 + move a14,@ticks,L ; Store ticks for this move + + callr calc_dxdy ; Calculate dx and dy +#npb_move + callr move_camera ; Move the camera + calla BGND_UD1 ; Update the background + SLEEPK 1 ; Let it actually move + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + movk 1,a3 + calla crowd_cheer ; Make the crowd cheer + PULL a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 + callr check_camera_position ; Adjust dx and dy + + move @dx,a14,L ; Get current dx + move @dy,a0,L ; Get current dy + or a0,a14 ; Or 'em together + jrnz #npb_move ; Done with last segment ? - br = no + + DIE + +#***************************************** +* + SUBRP knockout_drones + movi process_ptrs,a9 +#next + move *a9+,a8,L + jrz #ko_done + move *a8(PLYR_TYPE),a14 + jrz #next + movi 7fffh,a14 + move a14,*a8(PTIME) + jruc #next +#ko_done + rets + +#*************************************** +* + SUBRP #c1v3s_tbl + .long #congrat_1v8_1 + .long #congrat_1v8_2 + .long #congrat_1v8_3 +; .long #congrat_1v8_4 +; .long #congrat_1v8_5 + .long #congrat_1v8_5 + .long #congrat_1v8_6 + .long 0 + + SUBRP #c1v8s_tbl + .long #congrat_1v8_1 + .long #congrat_1v8_2 + .long #congrat_1v8_3 + .long #congrat_1v8_4 + .long #congrat_1v8_6 + .long 0 + + SUBRP #c2v8s_tbl + .long #congrat_1v8_1 + .long #congrat_1v8_2 + .long #congrat_1v8_3 + .long #congrat_1v8_6 + .long 0 + + SUBRP #congrats_setup_tbl + .long #c1v3s_tbl + .long #c1v8s_tbl + .long #c2v8s_tbl + + + SUBRP #c1v3_tbl + .long #congrat_1v8_1_str + .long #congrat_1v3_2_str + .long #congrat_1v3_3_str + .long #congrat_1v3_4_str + .long #congrat_1v8_5_str + + SUBRP #c1v8_tbl + .long #congrat_1v8_1_str + .long #congrat_1v8_2_str + .long #congrat_1v8_3_str + .long #congrat_1v8_4_str + .long #congrat_1v8_5_str + + SUBRP #c2v8_tbl + .long #congrat_1v8_1_str + .long #congrat_2v8_2_str + .long #congrat_2v8_3_str + .long #congrat_2v8_4_str + + SUBRP #congrats_str_tbl + .long #c1v3_tbl + .long #c1v8_tbl + .long #c2v8_tbl + +; a14 = 0 - 1v3, 1 - 1vs8, 2 - 2vs 8 + SUBRP print_congrats + PUSH a8,a9,a10,a11 + sll 5,a14 + move a14,a9 + move a14,a10 + addi #congrats_setup_tbl,a9 + addi #congrats_str_tbl,a10 + move *a9,a9,L + move *a10,a10,L +#print_clp + move *a9+,a8,L + jrz #c_done + move *a10+,a11,L + move a8,a2 + calla setup_message + movi CLSMK3,a4 + move a4,@mess_objid + move a11,a4 + calla print_string_C2 + jruc #print_clp +#c_done + PULL a8,a9,a10,a11 + rets + +#congrat_1v3_2_str + .string "YOU ARE THE INTERCONTINENTAL CHAMPION!",0 + .even +#congrat_1v3_3_str + .string "IT'S TIME TO SEEK A BIGGER CHALLENGE:",0 + .even +#congrat_1v3_4_str + .string "COMPETE FOR THE WORLD CHAMPIONSHIP!",0 + .even + + +#congrat_1v8_1_str + .string "CONGRATULATIONS!!!",0 + .even +#congrat_1v8_2_str + .string "YOU ARE THE NEW WWF WORLD CHAMPION!",0 + .even +#congrat_1v8_3_str + .string "YOUR NAME WILL LIVE FOREVER AMONG THE",0 + .even +#congrat_1v8_4_str + .string "GREATEST WRESTLERS OF ALL TIME!!!",0 + .even +#congrat_1v8_5_str + .string "...THANK YOU FOR PLAYING...",0 + .even + + +#congrat_2v8_2_str + .string "YOU ARE THE NEW WORLD WRESTLING",0 + .even +#congrat_2v8_3_str + .string "FEDERATION TAG TEAM CHAMPIONS!!!",0 + .even +#congrat_2v8_4_str + .string "PREPARE TO BATTLE EACH OTHER!!!",0 + .even + + +#congrat_1v8_1 + JAM_STR wsf14_ascii,10,0,200,60,WSF_R_P,print_string_C2 + .even +#congrat_1v8_2 + JAM_STR ogmd10_ascii,10,0,200,100,SGMD8YEL,print_string_C2 + .even +#congrat_1v8_3 + JAM_STR ogmd10_ascii,10,0,200,113,SGMD8YEL,print_string_C2 + .even +#congrat_1v8_4 + JAM_STR ogmd10_ascii,10,0,200,126,SGMD8YEL,print_string_C2 + .even +#congrat_1v8_5 + JAM_STR ogmd10_ascii,10,0,200,152,SGMD8WHT,print_string_C2 + .even +#congrat_1v8_6 + JAM_STR ogmd10_ascii,10,0,200,178,SGMD8BLU,print_string_C2 + .even + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/FONTSIMG.ASM b/FONTSIMG.ASM new file mode 100755 index 0000000..29ff434 --- /dev/null +++ b/FONTSIMG.ASM @@ -0,0 +1,15 @@ + .FILE "imgtbl.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include fontsimg.glo + + .include fontsimg.tbl + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/FOO.BAT b/FOO.BAT new file mode 100755 index 0000000..86adfd6 --- /dev/null +++ b/FOO.BAT @@ -0,0 +1,2 @@ +set path=d:\;c:\gsp\asm\v6_00;c:\opus6;c:\dos;c:\brief;c:\bat;c:\bin32;c:\bin;c:\misc\mw;c:\qemm;c:\windows + \ No newline at end of file diff --git a/GAME.EQU b/GAME.EQU new file mode 100755 index 0000000..21d924d --- /dev/null +++ b/GAME.EQU @@ -0,0 +1,588 @@ +************************************************************** +* +* Software: +* Initiated: 9/3/93 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + +;PROCESS ID'S + +NO_PID .equ 0 ;Use this when the process itself + ; is going to set it's own PID. +STAY_TIME .equ 270 ;Getup time for hip tosses, flykicks + ; NO_PID means that yes, the pid + ; is zero, but it won't be for long, + ; whereas CREATE0 says that we still + ; need to decide which PID to use. +AMODE_PID .equ 100h +AMODE_GAMEPLAY_PID .equ 101h +SELECT_PID .equ 300h +PCURSOR_PID .equ 301h +PREGAME_PID .equ 400h +GAME_PID .equ 500h +WAITCONT_PID .equ 600h +PARTY_PID .equ 700h +GAMEOVER_PID .equ 800h +HISC_PID .equ 900h +SHADGEN_PID .equ 0a00h ;$a00 - $a00 + NUM_WRESTLERS-1 + + +VOICE_PID .equ 100h+8000h +CYCPID .equ 110h +CYCPID2 .equ 111h ;2nd cycler +BUYINPID .equ 112h +GMEOVPID .equ 113h +COLRPID .equ 114h ;COLOR CYCLE FROM INTERRUPT +DG1PID .equ 115h ;CNTDWN DIGIT PROC +DG2PID .equ 116h ;CNTDWN DIGIT PROC +FADE_PID .equ 117h ;SOUND FADER +CP_PID1 .equ 118h ;Credit page +CP_PID2 .equ 119h ;^ +LC_PID .equ 11Ah+8000h ;Left coin (Indestructible) +RC_PID .equ 11Bh+8000h +CC_PID .equ 11Ch+8000h +SLAM_PID .equ 11Dh+8000h +DIAG_PID .equ 11Eh +PSWPID .equ 11Fh ;Plyr start switch +FX_PID .equ 120h ;volume adjust bgnd noise +OVRHED_PID .equ 121h ;INSERT COIN/PRESS START message +WMAIN_PID .equ 122h ;wrestler_main PID +WMAINT_PID .equ WMAIN_PID|1000h ;temp wrestler PID +CDEBUG_PID .equ 123h ;collis_debug PID +TIMER_PID .equ 124h ;match timer PID + +MUSIC_PID .equ 126h ;battle music PID +VOLBTN_PID .equ 127h ;coin door volume button +VOLADJ_PID .equ 128h ;in-game volume adjustment +ROPE_PID .equ 129h +CREDITID .equ 12Ah ;Credit IMGS ID +GETUP_PID .equ 12Bh ;getup meters +ATTRACT_ANIMPID .equ 12Ch ;attract mode anim +RNDSWON_ID .equ 12Dh ; +ANNC_PID .equ 12eh +SMOVE_PID .equ 12fh ;special move monitor +ADD_INIT_PID .equ 130h +SEL_SPCH_PID1 .equ 131h +SEL_SPCH_PID2 .equ 132h +HOWARD_PID .equ 133h +WATER_PID .equ 134h +HI_INPUT_PID .equ 137h +HI_INPUT_PID2 .equ 138h +FLASH_PID .equ 139h +CLOCK_PID .equ 13Ah +SHAKE_PID .equ 13Bh +CROWD_SOUND_PID .equ 13Ch +REPEAT_MODE_PID .equ 13Dh +SET_IMAGES_PID .equ 13Eh +MESSAGES_PID .equ 13Fh +MESSAGES_PID2 .equ 140h +ICON_PID .equ 141h +ICON_PID2 .equ 142h +FLASH_COMBO_PID .equ 143h +FLASH_PID2 .equ 144h + +SNDMON_PID .equ 145h|8000h ;dcs board watchdog +SOUND_PID .equ 146h ;various sound processes +DEBRIS_PID .equ 147h ;debris, sweat, explosions + +REWIRE_PID .equ 148h ;rewire_monitor process +ZSHIFT_PID .equ 149h ;SHIFT_IN_Z process + +DIR_DEBUG_PID .equ 14Ah ;dir_debug process +SCRT_DEBUG_PID .equ 14Bh ;scrt_debug process + +RAZOR_SWEAR_PID .EQU 14Ch +QSNDRST_PID .equ 14Dh|8000h ;qsnd_resetproc +PIN_HIM_PID .EQU 14Eh + +AUDIT_UD_PID .equ 14Fh ;time-intensive L_TIMER process + +HANDSPARK_PID .equ 150h +CLOBSPARK_PID .equ 151h +BODYSMOKE_PID .equ 152h +ONESPARK_PID .equ 153h +CLBSPARK_PID .equ 154h +SMOKEPUFF_PID .equ 155h + +HZSHAKE_PID .equ 156h +SKIRT_PID .equ 157h +TAUNT_PID .equ 158h +CROUTON_PID .equ 159h +PINHIM_ANIM_PID .equ 160h + +AWARD_PID .equ 180h +SOMETHING_OF_MIKES .equ 181h +PU_CHECK_PID .equ 190h|8000h +PCYC_PID .equ 191h + +FIREWRK_PID .equ 1a0h + +WCOUNT_PID .equ 1b0h + +*** ROBOTRON PIDs +;player +ROBOMAN_PID .equ 200h +PLYRGUN_PID .equ 201h +BULLET_PID .equ 202h +MISC_PID .equ 203h + +;neutrals +HUMAN_PID .equ 210h +ROBOSCORE_PID .equ 211h + +;enemies +GRUNT_PID .equ 220h +HULK_PID .equ 221h +SPHEREOID_PID .equ 222h +ENFORCER_PID .equ 223h +SPARK_PID .equ 224h +QUARK_PID .equ 225h +TANK_PID .equ 226h +SHELL_PID .equ 227h + +;dead stuff +DEADGRUNT_PID .equ 230h +DEADBULLET_PID .equ 231h +DEADPOST_PID .equ 232h +SAVEDHUMAN_PID .equ 233h +DEADHUMAN_PID .equ 234h +DEADPLAYER_PID .equ 235h +DEADSPHERE_PID .equ 236h +DEADNFORCER_PID .equ 237h +DEADSPARK_PID .equ 238h +DEADQUARK_PID .equ 239h +DEADTANK_PID .equ 23Ah +DEADSHELL_PID .equ 23Bh + + +;lifebar stuff +METER_PID .equ 240h +MESSAGE_PID .EQU 241h ;for BONUS_MESS + +;crowd stuff +CROWD_PID .equ 300h +DEWEY_PID .equ 301h +JAMIE_PID .equ 302h +JASON_PID .equ 303h +JOHNC_PID .equ 304h +JOSH_PID .equ 305h +MARK_PID .equ 306h +NEWC_PID .equ 307h +SAL_PID .equ 308h +TONY_PID .equ 309h +SHERIDAN_PID .equ 30Ah +CARLOS_PID .equ 30Bh +JAKE_PID .equ 30Ch +MARINE_PID .equ 30Dh +ALEX_PID .equ 30Eh +VOGEL_PID .equ 30Fh +TONYCRD_PID .equ 310h +JASONCRD_PID .equ 311h +JOYSIDE_PID .equ 312h +SIDECRD_PID .equ 313h +GEORGE_PID .equ 314h +TOBIAS_PID .equ 315h + +JOY_PID .equ 2000h ;Joystick scanner +COLL_PID .equ 2100h ;Collisions +;STAT_PID .equ 2200h ;Status display + +ANIMPID .equ 4000h ;Animation PIDs (256) + +DELAYSND_PID .equ 2300h ;various unimportant PID's +RNDSEL_PID .equ 2301h +SELTIMER_PID .equ 2302h ;player select clock + +;OBJECT ID'S + +;OBJECT IDENTIFIER FIELDS +;B_CLASS .set 15 +;F_CLASS .set 0E000h + +CLSNEUT .equ 0000h ;Neutral items +CLSHUMAN .equ 1000h ;Humans +CLSDEAD .equ 2000h ;Objects that delete themselves +CLSANIM .equ 3800h ;Animation class objects +CLSPLYR .equ 4000h ;Players stuff +CLSENMY .equ 8000h ;Enemies +CLSFINI .equ 5000h +CLSMK3 .equ 6000h +CLSFRWK .equ 7000h + +TYPNEUT .equ 0000h ;Type neutral +TYPTEXT .equ 0700h ;Type text + +TYPPLYR .equ 0100h ;Player +TYPBULLET .equ 0200h +TYPGRUNT .equ 0300h +TYPHUMAN .equ 0400h +TYPPOST .equ 0500h +TYPHULK .equ 0600h +TYPTEXT .equ 0700h +TYPSPHEREOID .equ 0800h +TYPENFORCER .equ 0900h +TYPSPARK .equ 0A00h +TYPQUARK .equ 0B00h +TYPTANK .equ 0C00h +TYPSHELL .equ 0D00h +TYPVELALWAYS .equ 0E00h +TYPE_MESS1 .EQU 0110H +TYPE_MESS2 .EQU 0120H +TYPTIMERDIGIT .equ 0130h +TYPWWFICON .equ 0140h +TYPWCCOUNT .equ 0150h +TYPPINHIM .equ 0160h +TYPPERFECT .equ 0170h + + +;TYPE NEUTRAL SUB TYPES +SUBLBAR .equ 7 ;LIFE BAR +SUBTBAR .equ 8 ;TURBO BAR +SUBMFRAME .equ 9 ;LIFE/TURBO FRAME +SUBROPE .equ 0Ah +SUBHORZ .equ 10h +SUBHORZ_BIT .equ 4 +SUBSIDE .equ 20h + +;TYPE TEXT SUB TYPES +SUBTXT .equ 1 ;TEXT ID +SUBMES1 .equ 2 +SUBMES2 .equ 3 +SUBOVRHED .equ 4 ;INSERT COIN/PRESS START messages +SUBSCOR .equ 5 ;SCORE ID +SUBNAME .equ 6 ;WRESTLER NAMES ON LIFE BARS + +;B_TYPE .set 12 +;F_TYPE .set 1F00h +;B_PLYR .set 6 +;F_PLYR .set 00C0h +;B_PLYR1 .set 6 +;B_PLYR2 .set 7 + +;B_SUBT .set 5 +;F_SUBT .set 003Fh + +JOYLFT .EQU 2 +JOYRGT .EQU 3 +JOYUP .EQU 0 +JOYDN .EQU 1 + +;BIT MASKS FOR PLAYER CONTROL TESTING + +BMPRYTE .EQU 3 ;MOVE RIGHT,LEFT,DOWN,UP (LSB) +BMPLEFT .EQU 2 +BMPDOWN .EQU 1 +BMPUP .EQU 0 + +;YUNIT EQUATES +BMPFRYTE .EQU 7 ;FIRE RIGHT,LEFT,DOWN,UP (MSB) +BMPFLEFT .EQU 6 +BMPFDOWN .EQU 5 +BMPFUP .EQU 4 + +;BITS USED IN PLAYER CONTROLS (1=ACTIVE) + +PRYTE .EQU 8 +PLEFT .EQU 4 +PDOWN .EQU 2 +PUP .EQU 1 + +;YUNIT EQUATES FOR JOYSTICK +;PFRYTE .EQU 80H +;PFLEFT .EQU 40H +;PFDOWN .EQU 20H +;PFUP .EQU 10H + +*CROWD BIT SETTINGS +C_LONG .EQU 1 +C_SHORT .EQU 0 +C_OVERIDE .EQU 2 +C_RANDOM .EQU 4 + +B_L_OR_S .EQU 0 +B_OVERRIDE .EQU 1 +B_RANDOM .EQU 2 + +*GAME STATE CONSTANTS +INDIAG .equ -1 ;Any neg +INAMODE .equ 1 ;attract mode +INSELECT .equ 2 ;char select mode +INPREGAME .equ 3 ;'get ready' phase +INGAME .equ 4 ;actual battle +INWAITCONT .equ 5 ;battle has ended and a player has + ; lost. waiting for them to continue +INPARTY .equ 6 ;player won the game +INGAMEOVER .equ 7 ;game over, headed for attract mode +INHISCORE .equ 8 ;a player has lost. check and see +INPREGAME2 .equ 9 ;'get ready' phase + ; if he makes one of the tables, and + ; get his inits if he does. + +*ASCII FONT MISCELLANEOUS EQUATES +F15SP .EQU 7EH ;FONT 15 SP CHARACTER, FOR HS ENTRY +F15RUB .EQU F15SP+1 ;FONT 15 RUB CHARACTER,FOR HS ENTRY +F15END .EQU F15RUB+1 ;FONT 15 END CHARACTER,FOR HS ENTRY +F15RQUOT .EQU F15END+1 ;FONT 15 RIGHT QUOTE + +*Rope stuff +ROPE_FRONT .equ 0 +ROPE_BACK .equ 1 +ROPE_LEFT .equ 2 +ROPE_RIGHT .equ 3 + +R_TOP .equ 0 ;ANI_ROPE_Z rope specifier +R_MIDDLE .equ 1 +R_BOTTOM .equ 2 + +RZ_HIGH .equ 0 ;ANI_ROPE_Z action +RZ_NORM .equ 1 + +ROPE_BOUNCEUD .equ 0 ;bounce up and down +ROPE_BOUNCEIO .equ 1 ;bounce in and out +ROPE_SIDES .equ 2 ;side spring +ROPE_DOWNS .equ 3 ;down spring +ROPE_SIDESR .equ 4 ;side spring release +ROPE_DOWNSR .equ 5 ;down spring release +ROPE_COMMANDS .equ 6 + +****************************************************************************** +* +* PLAYER FACING & MOVE DIRECTIONS + +MOVE_ZIP equ 0 +MOVE_UP equ 1 +MOVE_DOWN equ 2 +MOVE_LEFT equ 4 +MOVE_UP_LEFT equ 5 +MOVE_DOWN_LEFT equ 6 +MOVE_RIGHT equ 8 +MOVE_UP_RIGHT equ 9 +MOVE_DOWN_RIGHT equ 10 + + +;used in special moves table +J_UP equ MOVE_UP +J_UP_TOWARD equ MOVE_UP_RIGHT +J_TOWARD equ MOVE_RIGHT +J_DOWN_TOWARD equ MOVE_DOWN_RIGHT +J_DOWN equ MOVE_DOWN +J_DOWN_AWAY equ MOVE_DOWN_LEFT +J_AWAY equ MOVE_LEFT +J_UP_AWAY equ MOVE_UP_LEFT + +J_FLIPPED_LR equ J_TOWARD | J_AWAY + +J_LEFT equ MOVE_LEFT<<8 +J_RIGHT equ MOVE_RIGHT<<8 +J_REAL_LR equ J_LEFT | J_RIGHT +J_ALL equ 01111b | J_REAL_LR + +MOVE_UP_BIT equ 0 +MOVE_DOWN_BIT equ 1 +MOVE_LEFT_BIT equ 2 +MOVE_RIGHT_BIT equ 3 + +MOVE_AWAY_BIT equ MOVE_LEFT_BIT +MOVE_TOWARD_BIT equ MOVE_RIGHT_BIT + +****************************************************************************** +* +* BUTTONS + +PLAYER_UP_BIT equ 0 +PLAYER_UP_VAL equ 1< 0-12) + + .long H3RL1A+FR1 ;0 + .long H3RL1A+FR13 ;1 + .long H3RL1A+FR12 ;2 + .long H3RL1A+FR11 ;3 + .long H3RL1A+FR10 ;4 + .long H3RL1A+FR9 ;5 + .long H3RL1A+FR8 ;6 + .long H3RL1A+FR7 ;7 + .long H3RL1A+FR6 ;8 + .long H3RL1A+FR5 ;9 + .long H3RL1A+FR4 ;10 + .long H3RL1A+FR3 ;11 + .long H3RL1A+FR2 ;12 + + .long 0,0,0,0,0,0 + + +;#***************************************************************************** +; +; SUBR hrt_leap_test +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + + + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR hrt_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,STAY_TIME + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 4,H2CP3A+FR1 + WL 4,H2CP3A+FR2 + WL 4,H2CP3A+FR3 + WL 4,H2CP3A+FR4 + WL 4,H2CP3A+FR5 + WL 4,H2CP3A+FR6 + WL 4,H2CP3A+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,H2CP3A+FR8 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim +; .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR hrt_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,H3FR3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,STAY_TIME + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,H3FR3A+FR5 + .word ANI_XFLIP + .word ANI_OFFSET,15,0,0 ;x,y,z + WL 3,H2CP3A+FR8 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 4,H2CP3A+FR1 + WL 4,H2CP3A+FR2 + WL 4,H2CP3A+FR3 + WL 4,H2CP3A+FR4 + WL 4,H2CP3A+FR5 + WL 4,H2CP3A+FR6 + WL 4,H2CP3A+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 1,H2CP3A+FR8 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* + + SUBR hrt_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + + WL 2,H3GU4A+FR10 + WL 2,H3GU4A+FR8 + WL 2,H3GU4A+FR3 + WL ANI_SET_YVEL,39000h + + WL 3,H2CP3A+FR1 + .word ANI_DEBRIS,400,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,H2CP3A+FR2 + WL 3,H2CP3A+FR3 + WL 3,H2CP3A+FR4 + WL 3,H2CP3A+FR5 + WL 3,H2CP3A+FR6 + WL 3,H2CP3A+FR7 + WL 3,H2CP3A+FR8 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#***************************************************************************** + SUBR hrt_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,3000h,AM_FACE_REL + + .word ANI_OFFSET,16,0,0 + WL 3,H4CR3D+FR1 + WL 3,H4CR3D+FR2 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,3,0,0 ;***** + WL 3,H4CR3D+FR3 + WL 3,H4CR3D+FR4 + + .word ANI_BENDROPE,2 + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + .word ANI_OFFSET,5,0,0 ;***** + WL 3,H4CR3D+FR5 + + .word ANI_BENDROPE,2 + + .word ANI_OFFSET,4+6,0,0 ;***** + WL 3,H4CR3D+FR8 + + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_BENDROPE,3 + .word ANI_OFFSET,10,0,0 ;***** + WL 3,H4CR3D+FR9 + .word ANI_ZEROVELS + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,5,0,0 ;***** + WL 3,H4CR3D+FR10 + .word ANI_OFFSET,10,-3,0 + WL 3,H4CR3D+FR11 + .word ANI_OFFSET,2,0,0 ;***** + WL 3,H4CR3D+FR12 + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + ;now jump off... +; WL 3,H4JD4B+FR1 +; WL 2,H4JD4B+FR2 +; WL 3,H4JD4B+FR3 + WL 2,H4JD4B+FR4 + WL 3,H4JD4B+FR5 + WL 2,H4JD4B+FR6 + + .word ANI_SET_IDIOT + + WWL ANI_SETLONG,OBJ_GRAVITY,0f000h + WL ANI_SET_YVEL,50000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,H4JD4B+FR7 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 3,H4JD4B+FR8 + WL 2,H4JD4B+FR9 +; WL 2,H4JD4B+FR10 + WL 2,H4JD4B+FR11 + + .word ANI_FACEDOWN + .word ANI_CLEAR_CLIMB + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR hrt_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in +; WL 3,H4JD4B+FR1 +; WL 2,H4JD4B+FR2 +; WL 3,H4JD4B+FR3 + WL 2,H4JD4B+FR4 + WL 3,H4JD4B+FR5 + WL 2,H4JD4B+FR6 + + WWL ANI_SETLONG,OBJ_GRAVITY,0f000h + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,14h,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 4,H4JD4B+FR7 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_ZEROVELS + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + .word ANI_OFFSET,13,0,0 ;***** + WL 2,H4JD4B+FR8 + WL 2,H4JD4B+FR9 +; WL 2,H4JD4B+FR10 + WL 2,H4JD4B+FR11 + + WLW ANI_SET_XVEL,3000h,AM_FACE_REL + + ;climb through + WL 2,H4CR3D+FR1 + .word ANI_OFFSET,3,0,0 ;***** + WL 2,H4CR3D+FR2 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,3,0,0 ;***** + WL 2,H4CR3D+FR3 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_OFFSET,3,0,0 ;***** + WL 2,H4CR3D+FR4 + .word ANI_OFFSET,3,0,0 ;***** + WL 2,H4CR3D+FR5 + + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_BENDROPE,2 + .word ANI_OFFSET,5+8,0,0 ;***** + WL 2,H4CR3D+FR8 + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_OFFSET,5,0,0 ;***** + WL 2,H4CR3D+FR9 + .word ANI_OFFSET,5,0,0 ;***** + WL 2,H4CR3D+FR10 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,10,-3,0 + WL 2,H4CR3D+FR11 + WL 2,H4CR3D+FR12 + .word ANI_ZEROVELS + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets + +#***************************************************************************** + + SUBR hrt_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL 3,H3GU4A+FR10 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR5 + WL 3,H3GU4A+FR4 + WL 3,H3GU4A+FR2 + WL 3,H3GU4A+FR1 + + ;roll over once + WLW ANI_SET_ZVEL,80000h,AM_ABS + + WL 3,H3RL1A+FR13 + WL 3,H3RL1A+FR12 + WL 3,H3RL1A+FR11 + WL 3,H3RL1A+FR10 + WL 3,H3RL1A+FR9 + WL 3,H3RL1A+FR8 + WL 3,H3RL1A+FR7 + WL 3,H3RL1A+FR6 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + + .word ANI_SET_IDIOT + + ;climb through + .WORD ANI_XFLIP + WL ANI_CODE,NOT_IN_RING + .word ANI_OFFSET,0,-37h,0 ;x,y,z + WL 3,H4KM3B+FR7 + WL 3,H4KM3B+FR8 + WL 3,H4KM3B+FR9 + .WORD ANI_XFLIP + + .word ANI_FACEUP + .word ANI_CLEAR_CLIMB + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS + +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +NOT_IN_RING + MOVK 1,A0 + MOVE A0,*A13(INRING) + RETS + +#***************************************************************************** + + SUBR hrt_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .WORD ANI_XFLIP + WL 3,H4KM3B+FR9 + WL 3,H4KM3B+FR8 + WL 3,H4KM3B+FR7 + .word ANI_OFFSET,0,37h,-60 + .WORD ANI_XFLIP + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,H3RL1A+FR6 + WL 3,H3RL1A+FR7 + WL 3,H3RL1A+FR8 + WL 3,H3RL1A+FR9 + WL 3,H3RL1A+FR10 + WL 3,H3RL1A+FR11 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,H3GU4A+FR1 + WL 3,H3GU4A+FR2 + WL 3,H3GU4A+FR3 + WL 3,H3GU4A+FR4 + WL 3,H3GU4A+FR5 + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR10 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR hrt_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2, spin first! + WL 3,H1TT5A+FR3 + WL 3,H1TT5A+FR4 + +#dir4 + WL 3,H3GU4A+FR10 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR5 + WL 3,H3GU4A+FR4 + WL 3,H3GU4A+FR3 + WL 3,H3GU4A+FR2 + WL 3,H3GU4A+FR1 + + ;roll over once + WL ANI_CODE,#set_zvel2 +#cont + WL 3,H3RL1A+FR13 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,H3RL1A+FR1 + WL 3,H3RL1A+FR2 + WL 3,H3RL1A+FR3 + WL 3,H3RL1A+FR4 + + .word ANI_SET_IDIOT + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,H3MS3Z+FR4 + WL 3,H3MS3Z+FR3 + WL 3,H3MS3Z+FR2 + + .word ANI_ZERO_XZVELS + + .word ANI_CLEAR_CLIMB + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR hrt_rollthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;roll over once + WLW ANI_SET_ZVEL,-50000h,AM_ABS + WL 3,H3RL1A+FR13 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,H3RL1A+FR1 + WL 3,H3RL1A+FR2 + WL 3,H3RL1A+FR3 + WL 3,H3RL1A+FR4 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,H3MS3Z+FR4 + WL 3,H3MS3Z+FR3 + WL 3,H3MS3Z+FR2 + + .word ANI_ZERO_XZVELS + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#***************************************************************************** + + SUBR hrt_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,H3MS3Z+FR2 + WL 3,H3MS3Z+FR3 + WL 3,H3MS3Z+FR4 + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,H3RL1A+FR3 + WL 3,H3RL1A+FR2 + WL 3,H3RL1A+FR1 + WL 3,H3RL1A+FR13 + + .word ANI_ZEROVELS + + ;get up + WL 3,H3GU4A+FR1 + WL 3,H3GU4A+FR2 + WL 3,H3GU4A+FR3 + WL 3,H3GU4A+FR4 + WL 3,H3GU4A+FR5 + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR10 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel2 + movi 52000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR hrt_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,H1TL5A+FR3 ;2.5 + WL 3,H1TL5A+FR4 ;3.5 + + SUBR hrt_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 29,999,80h,50h,90000h,TGT_CHEST|TGT_GROUND,0,57,-15 + WL ANI_CODE,hit_nearest + + WL 3,H3PN5A+FR1 + WL 4,H3PN5A+FR2 + WL 4,H3PN5A+FR3 + .word ANI_OFFSET,0,48,0 ;x,y,z + WL 18,H3PN5A+FR4 +; .word ANI_WAITHITGND +; .word ANI_ATTACK_ON_Z,AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + + WL 5,H3PN5A+FR7 + + WL ANI_CODE,DO_CROWD_CHEER +; .word ANI_ATTACK_OFF + WL ANI_CODE,grnd_hit + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_BOUNCE,4 + WL 4,H3PN5A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + WL 4,H3PN5A+FR8 + .ref win_announce + WL ANI_CODE,win_announce +; .word ANI_SET_ATTACH +; .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + WL 40,H3PN5A+FR8 + +;???? IS THIS WHERE IT GOES ? + .word ANI_LOOP + +;Do another ground hit on opponent + .ref grnd_hit + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR10 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,H4SL4C+FR1 + WL 5,H4SL4C+FR2 + WL 5,H4SL4C+FR3 + + .word ANI_SET_RPTCOUNT,3 +#lp0 WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR9 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR7 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#lp0 + + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + + WL 1000,H4SL4C+FR3 + +; WL 5,H4SL4C+FR2 +; WL 1000,H4SL4C+FR1 + + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* RAISE ARM IN VICTORY FROM A STANCE + + SUBR hrt_2_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + + WL 3,H1TL5A+FR3 ;2.5 + WL 3,H1TL5A+FR4 ;3.5 + WL ANI_GOTO,#cont + + SUBR hrt_4_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + +#cont WL 5,H4SL4C+FR1 + WL 5,H4SL4C+FR2 + WL 5,H4SL4C+FR3 + + .word ANI_SET_RPTCOUNT,-4 +#lp1 WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR9 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR7 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#lp1 + + WL ANI_CODE,check_raisearm_bit + WL ANI_IFSTATUS,#wakeup + + .word ANI_SET_RPTCOUNT,1000 + WL ANI_GOTO,#lp1 + +#wakeup WL 5,H4SL4C+FR3 + WL 5,H4SL4C+FR2 + WL 5,H4SL4C+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACEDOWN + .word ANI_END + + +#***************************************************************************** +* +* GET BUCKED OFF A PINNED OPPONENT + + SUBR hrt_buckoff_anim + + .ref set_buckoff_vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 4,H3PN5A+FR8 + WL 1,H3PN5A+FR4 + WL ANI_CODE,set_buckoff_vels + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 12,H3PN5A+FR7 + + ;now stand up + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + + WL 3,H3GU4A+FR6 + WL 3,H3GU4A+FR7 + WL 3,H3GU4A+FR8 + WL 3,H3GU4A+FR9 + WL 3,H3GU4A+FR10 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/HRTSEQ3.ASM b/HRTSEQ3.ASM new file mode 100755 index 0000000..ab5a362 --- /dev/null +++ b/HRTSEQ3.ASM @@ -0,0 +1,2983 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "hrtseq3.asm" + .title "lockup stuff and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "display.equ" + + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" + + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;BAM BAM + .ref bam_3_head_held_anim,bam_break_neck2_anim + .ref bam_break_face_anim,bam_tossed_anim + .ref bam_head_hit2_anim + .ref B3GU4A,B3BF3C + + ;DOINK + .ref dnk_3_head_held_anim,dnk_break_neck2_anim + .ref dnk_break_face_anim,dnk_tossed_anim + .ref dnk_head_hit2_anim + .ref D3HT3Z,D3BF3A + + ;BRET + .ref hrt_hitonground_facedown_anim,hrt_stand4_anim + .ref hrt_flyout2_anim,hrt_faceup_getup_anim + .ref hrt_tossed_anim,hrt_break_neck2_anim + .ref hrt_4_head_hit2_anim + .ref H3GU4A,H3DU3A,H3BF3A + + ;LEX + .ref lex_3_head_held_anim,lex_break_neck2_anim + .ref lex_break_face_anim,lex_tossed_anim + .ref lex_4_head_hit2_anim + .ref L3DU3A,L3BF3B + + ;RAZOR + .ref rzr_3_head_held_anim,rzr_break_neck2_anim + .ref rzr_break_face_anim,rzr_tossed_anim + .ref rzr_4_head_hit2_anim + .ref R3GU4A,R3DU3B,R3BF3A + + ;SHAWN + .ref shn_3_head_held_anim,shn_break_neck2_anim + .ref shn_break_face_anim,shn_tossed_anim + .ref shn_4_head_hit2_anim + .ref S3GU4A,S3BF3A + + ;TAKER + .ref und_3_head_held_anim,und_break_neck2_anim + .ref und_break_face_anim,und_tossed_anim + .ref und_head_hit2_anim + .ref U3DU3B,U4BF3Z + + ;YOKO + .ref yok_3_head_held_anim,yok_break_neck2_anim + .ref yok_break_face_anim,yok_tossed_anim + .ref yok_4_head_hit2_anim + .ref Y3GU2A,Y3BF3A + + ;MISC + .ref CALL_MISSES,SMALL_BOUNCE,set_xdrift + .ref tgt_tbukl,tbukl_flip,HIT_THE_MAT,slaveanim_tbl,no_bk_xvel + .ref CALL_SPECIAL_MOVE,rope_command + .ref CALL_SETUP,rope_command,MAKE_HIM_SCREAM,GOUGE_SOUND + .ref triple_sound,get_opp_process,DO_GRUNT,MOVE_NAME_ANNC + .ref DO_NONO,DO_OTHERNONO,FIND_AND_KILL_ENDLESS + .ref CALL_NASTY_MOVE,CALL_ANI_AVERAGE_MOVE + .ref CALL_OTHER_AVERAGE + .ref CALL_THROWN_OUT,face_inside + .ref DO_COMBO_MESS,clear_opp_counts + .ref hrt_combo_knee_fall_anim + .ref hrt_combo_flying_kick_anim + .REF DO_EYES + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR hrt_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + + WL ANI_CODE,DO_OTHERNONO +#loop + WL 3,H4MF4B+FR1 + WL 3,H4MF4B+FR2 + WL 3,H4MF4B+FR3 + WL 3,H4MF4B+FR4 + WL 3,H4MF4B+FR5 + WL 3,H4MF4B+FR6 + WL 3,H4MF4B+FR7 + WL 3,H4MF4B+FR8 + WL 3,H4MF4B+FR9 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 5,H4MF4B+FR1 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,H3MS3Z+FR4 + WL 4,H3MS3Z+FR3 + WL 4,H3MS3Z+FR2 + WL 4,H3MS3Z+FR1 + .word ANI_WAITHITGND + WL 4,H2ST2A+FR1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* END OF NECK BROKEN SEQ. + + SUBR hrt_neckbroken_anim + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#***************************************************************************** +* +* POGO STICK HEAD CRUNCHER + + SUBR hrt_pogo_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + +#yoff equ 20 + + SUBR hrt_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,HRT_TBUKLY + WL 3,H4HU4B+FR1 + WL 3,H4HU4B+FR2 + WL ANI_CODE,tgt_tbukl + .word ANI_LEAPATPOS,20,200,8,-3,0 ;#ticks,dist,xoff,yoff,zoff + WL 20,H4HU4B+FR3 + + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_UNINT|MODE_OVERLAP + .word ANI_SHAKECORNER + + .word ANI_SCROLL_CTRL,SC_RESTORE + .word ANI_OFFSET,0,#yoff,0 + WL 3,H4HU4B+FR4 + WL 3,H4HU4B+FR7 + +#repeat + WL 4,H4SB4B+FR1 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR2 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR3 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR4 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR5 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR6 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR7 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR6 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR5 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR4 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR3 + WL ANI_CODE,tbukl_flip + WL 4,H4SB4B+FR2 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR hrt_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL ANI_CODE,face_inside + + .word ANI_SHAKECORNER + + WL 3,H4HU4B+FR2 + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WLW ANI_SET_ZVEL,-10000h,AM_FACE_REL + WL ANI_SET_YVEL,20000h + + WL 1,H4HU4B+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,H4HU4B+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HIPTOSS +* + SUBR hrt_combo_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,48,0,2 + WL ANI_SET_YVEL,0 + + .word ANI_SET_RPTCOUNT,3 ;5 times +#hiptoss_loop + .word ANI_CLR_BUTCOUNT + WL 3,H3HT3X+FR1 + WL 3,H3HT3X+FR2 + + .word ANI_ATTACK_ON,AMODE_PUPPET,19,59,70,38 + WWL ANI_WAITHITOPP,4,H3HT3X+FR3 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,3,H3HT3X+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFBLOCKED,#missedbc + WL ANI_IFNOTSTATUS,#missedc + + WL ANI_CODE,DO_GRUNT + + .word ANI_ATTACHZ,0,0,2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .WORD ANI_INC_COMBO + + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR6,#puppet_tbl,3 + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_outc + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR8,#puppet_tbl,5 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR9,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR10,#puppet_tbl,7 + +; WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,SLAM_HIM +; .WORD ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,090000h,0000h ;x,y,z vels + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_XFLIP + .word ANI_ZEROVELS + WL 3,H3HT3X+FR12 + + WL 2,H3GU2A+FR7 + WL 3,H3GU2A+FR8 + WL 2,H3GU2A+FR9 + WL 3,H3GU2A+FR10 + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#check_exit + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit_move + WL ANI_GOTO,#hiptoss_loop +#check_exit + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#exit_move + WL ANI_CHANGEANIM,hrt_combo_pile_driver_anim +#exit_move + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_outc + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#throw_him_out + +#missedbc + WL 10,H3HT3X+FR3 +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 15,H3HT3X+FR3 + + WL 6,H3HT3X+FR2 + WL 6,H3HT3X+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .ref hrt_slamnobounce_anim ;bret + .ref rzr_slamnobounce_anim ;razor + .ref und_slamnobounce_anim ;taker + .ref yok_slamnobounce_anim ;yoko + .ref shn_slamnobounce_anim ;shawn + .ref bam_slamnobounce_anim ;bam + .ref dnk_slamnobounce_anim ;doink + .ref und_slamnobounce_anim ;spare + .ref lex_slamnobounce_anim ;lex +SLAM_HIM + .long hrt_slamnobounce_anim ;bret + .long rzr_slamnobounce_anim ;razor + .long und_slamnobounce_anim ;taker + .long yok_slamnobounce_anim ;yoko + .long shn_slamnobounce_anim ;shawn + .long bam_slamnobounce_anim ;bam + .long dnk_slamnobounce_anim ;doink + .long und_slamnobounce_anim ;spare + .long lex_slamnobounce_anim ;lex + + + SUBR hrt_hiptoss2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,4 + + WL 2,H3HT3X+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,60,55,40,90000h,TGT_CHEST,48,0,2 + WL ANI_SET_YVEL,0 + + WL 2,H3HT3X+FR2 + + .word ANI_ATTACK_ON,AMODE_PUPPET_TOSS,19,59,70,38 + WWL ANI_WAITHITOPP,8,H3HT3X+FR3 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL ANI_GOTO,#cont + + SUBR hrt_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,4 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,48,0,2 + WL ANI_SET_YVEL,0 + + WL 2,H3HT3X+FR1 + WL 2,H3HT3X+FR2 + + .word ANI_ATTACK_ON,AMODE_PUPPET_TOSS,19,59,70,38 + WWL ANI_WAITHITOPP,4,H3HT3X+FR3 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL 4,H3HT3X+FR3 +#cont + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#got_him + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 + .word ANI_ATTACK_OFF + .word ANI_DRAW_NAME,10 + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,DO_GRUNT + + .word ANI_ATTACHZ,0,0,2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR6,#puppet_tbl,3 + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_out + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR8,#puppet_tbl,5 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR9,#puppet_tbl,6 + + + WWLLW ANI_SUPERSLAVE2,3,H3HT3X+FR10,#puppet_tbl,7 + +; WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_XFLIP + WL ANI_SET_YVEL,30000h + WL 1,H3HT3X+FR11 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,H3HT3X+FR12 + WL 3,H3GU2A+FR7 + WL 3,H3GU2A+FR8 + WL 3,H3GU2A+FR9 + WL 3,H3GU2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WL ANI_CODE,CALL_THROWN_OUT + WLLL ANI_ATTACHVEL,-0A0000h,80000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,#release_table + .word ANI_DETACH + WL 4,H3HT3X+FR6 + WL 4,H3HT3X+FR7 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,15 + WL 4,H3HT3X+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,10 + + WL 3,H3HT3X+FR9 + WL 3,H3HT3X+FR10 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 2,H3HT3X+FR11 + WL 3,H3HT3X+FR12 + WL 3,H3GU2A+FR7 + WL 3,H3GU2A+FR8 + WL 3,H3GU2A+FR9 + WL 3,H3GU2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb +; .ref ck_hiptoss +; WL ANI_CODE,ck_hiptoss +; WL ANI_IFNOTSTATUS,#got_him + + WL 10,H3HT3X+FR3 +;Delay longer if 2nd hiptoss in quick succession! + .ref hiptoss_delay + WL ANI_CODE,hiptoss_delay + WL ANI_IFNOTSTATUS,#missed + WL 24,H3HT3X+FR3 +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 4,H3HT3X+FR3 + WL 2,H3HT3X+FR2 + WL 2,H3HT3X+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +;#xflip_tbl +; .word 0 ;bret +; .word 0 ;razor +; .word 0 ;taker +; .word 0 ;yoko +; .word 0 ;shawn +; .word 0 ;bam +; .word 0 ;doink +; .word 0 ;spare +; .word 0 ;lex + +#rollout_tbl + .long hrt_tossed_anim,rzr_tossed_anim + .long und_tossed_anim + .long yok_tossed_anim + .long shn_tossed_anim,bam_tossed_anim + .long dnk_tossed_anim,0,lex_tossed_anim + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AH3A+FR5,55,11,0 + LWWW H2AM3A+FR1,42,16,0 + LWWW H2AM3A+FR7,25,1,0 + LWWW H3FR3A+FR2,2,32,0 + LWWW H3FR3A+FR3,-17,62,0 + LWWW H3FR3A+FR4,-40,49,0 + LWWW H3FR3A+FR5,-69,4,0 + LWWW H2CP3A+FR8,-142,-30,1 + .long 0 +#Razor + LWWW R4AH4C+FR3,65,18,0 + LWWW R3TD3A+FR1,40,16,0 + LWWW R3TD3A+FR3,13,1,0 + LWWW R3TD3A+FR4,-4,22,0 + LWWW R3TD3A+FR5,-8,38,0 + LWWW R3TD3A+FR6,-30,37,0 + LWWW R3TD3A+FR7,-65,16,0 + LWWW R3GU2A+FR1,-159,-28,1 + .long 0 +#Taker + LWWW U3AE4A+FR1,69,24,0 + LWWW U4AM4C+FR4,41,13,0 + LWWW U3FH3A+FR1,28,7,1 + LWWW U3FH3A+FR2,2,36,1 + LWWW U3FH3A+FR3,-14,48,1 + LWWW U3FH3A+FR4,-45,48,1 + LWWW U3FH3A+FR5,-80,24,1 + LWWW U3CP3B+FR1,-161,-25,1 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR1,66,12,0 + LWWW Y3FL3W+FR2,31,6,0 + LWWW Y3FL3W+FR3,5,8,0 + LWWW Y3FL3W+FR4,8,45,0 + LWWW Y3FL3W+FR5,-3,64,0 + LWWW Y3FL3W+FR6,-43,62,0 + LWWW Y3FL3W+FR7,-84,18,0 + LWWW Y3FD3A+FR7,-127,-3,0 + .long 0 +#Shawn + LWWW S3OS3X+FR2,43,9,1 + LWWW S3OS3X+FR4,9,8,1 + LWWW S3OS3X+FR5,-16,6,1 + LWWW S3OS3X+FR6,-14,54,1 + LWWW S3OS3X+FR7,-13,71,1 + LWWW S3OS3X+FR8,-27,61,1 + LWWW S3OS3X+FR9,-88,33,1 + LWWW S3OS3X+FR10,-136,-20,1 + .long 0 +#BamBam + LWWW B4AH4A+FR1,56,13,0 + LWWW B4TD3B+FR2,25,13,0 + LWWW B4TD3B+FR3,2,8,0 + LWWW B4TD3B+FR4,2,25,0 + LWWW B4TD3B+FR5,-17,59,0 + LWWW B4TD3B+FR6,-45,57,0 + LWWW B4TD3B+FR7,-79,29,0 + LWWW B4TD3B+FR9,-130,-10,0 + .long 0 +#Doink + LWWW D3AE3B+FR8,63,13,0 + LWWW D3PM4C+FR2,21,18,0 + LWWW D3OS3A+FR2,3,10,0 + LWWW D3OS3A+FR4,-17,34,0 + LWWW D3OS3A+FR5,-22,42,0 + LWWW D3OS3A+FR6,-42,36,0 + LWWW D3FD3E+FR2,-79,-6,0 + LWWW D3SA3A+FR2,-144,-21,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3FH3A+FR1,44,-8,0 + LWWW L3FH3A+FR2,39,-16,0 + LWWW L3FH3A+FR3,21,5,0 + LWWW L3FH3A+FR4,10,35,0 + LWWW L3FH3A+FR5,-11,46,0 + LWWW L3FH3A+FR6,-39,45,0 + LWWW L3FH3A+FR6,-63,14,0 + LWWW L3CP3B+FR1,-150,-23,1 + .long 0 + + +#release_table + ; X Y + .word 0,0 ;Bret + .word 0,20 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,20 ;Shawn + .word 0,50 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,20 ;Lex + +#flyout_tbl + .ref hrt_flyout_anim + .ref rzr_flyout_anim + .ref und_flyout_anim + .ref shn_flyout_anim + .ref bam_flyout_anim + .ref dnk_flyout_anim + .ref lex_flyout_anim + .ref yok_flyout_anim + + .long hrt_flyout_anim + .long rzr_flyout_anim + .long und_flyout_anim + .long yok_flyout_anim + .long shn_flyout_anim + .long bam_flyout_anim + .long dnk_flyout_anim + .long 0 + .long lex_flyout_anim + +#***************************************************************************** + + SUBR hrt_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,H3BF3A+FR1 + WL 4,H3BF3A+FR2 + WL 4,H3BF3A+FR3 + WL 4,H3BF3A+FR4 + WL 4,H3BF3A+FR5 + WL 4,H3BF3A+FR6 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR hrt_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,H3HB3A+FR2 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,H2AH3A+FR1 + WL 3,H2AH3A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,H2AH3A+FR3 + WL 3,H2AH3A+FR4 + WL 3,H2AH3A+FR5 + WL 3,H2AH3A+FR6 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR hrt_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,H3HB3A+FR3 + WL 3,H1TL5A+FR3 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#****************************************************************************** + + SUBR hrt_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 4,H4SL4C+FR1 + WL 4,H4SL4C+FR2 + WL 4,H4SL4C+FR3 + WL 4,H4SL4C+FR4 + WL 4,H4SL4C+FR5 + WL 4,H4SL4C+FR6 + WL 4,H4SL4C+FR5 + WL 4,H4SL4C+FR4 + WL 4,H4SL4C+FR7 + WL 4,H4SL4C+FR8 + WL 4,H4SL4C+FR9 + WL 4,H4SL4C+FR8 + WL 4,H4SL4C+FR7 + + WL 3,H4SL4C+FR4 + WL 3,H4SL4C+FR5 + WL 3,H4SL4C+FR6 + WL 3,H4SL4C+FR5 + WL 3,H4SL4C+FR4 + WL 3,H4SL4C+FR7 + WL 3,H4SL4C+FR3 + WL 3,H4SL4C+FR2 + WL 3,H4SL4C+FR1 + +; .ref set_taunt_bit +; WL ANI_CODE,set_taunt_bit + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,hrt_stand4_anim + .word ANI_END + +#****************************************************************************** + + SUBR hrt_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,15 + WL 1,H1TL5A+FR3 ;2.5 + WL 1,H1TL5A+FR4 ;3.5 + + SUBR hrt_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,11 + WL 3,H4GH3Z+FR1 + + LEAPATOPP 7,999,90,90,40000h,TGT_HEAD,10,6,-2 + + WL 3,H4GH3Z+FR2 + WL 3,H4GH3Z+FR3 + + .word ANI_ATTACK_ON, AMODE_PUPPET2,18,0,25,18 ;mode,x,y,w,h + WL 2,H4GH3Z+FR3 + .word ANI_ZERO_XZVELS + WL 3,H4GH3Z+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,clear_opp_counts + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,9bh ;neck break (5-7 ticks late) + + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR8,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR8,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,H4GH3Z+FR8 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL 20,H4GH3Z+FR3 + WL 3,H4GH3Z+FR2 + WL 3,H4GH3Z+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,30,-27,0 + LWWW H3GU4A+FR3,52,-23,0 + LWWW H3DU3A+FR3,43,-22,1 + LWWW H3DU3A+FR4,48,-19,1 + LWWW H3DU3A+FR5,46,-29,1 + LWWW H3BF3A+FR1,49,-40,0 + .long 0 +#Razor + LWWW R3GU2A+FR3,37,-18,0 + LWWW R3GU4A+FR3,50,-17,0 + LWWW R3GU4A+FR5,52,-25,0 + LWWW R3DU3B+FR2,51,-33,1 + LWWW R3DU3B+FR4,53,-29,1 + LWWW R3BF3A+FR1,52,-42,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,30,-19,1 + LWWW U3DU3B+FR5,48,-13,1 + LWWW U3DU3B+FR6,52,-20,1 + LWWW U3DU3B+FR8,42,-23,1 + LWWW U3DU3B+FR10,48,-22,1 + LWWW U4BF3Z+FR5,48,-21,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,35,-13,0 + LWWW Y3GU2A+FR3,55,-4,0 + LWWW Y3GU2A+FR6,34,-20,0 + LWWW Y3GU2A+FR8,47,-32,0 + LWWW Y3GU2A+FR11,52,-33,0 + LWWW Y3BF3A+FR1,48,-30,0 + .long 0 +#Shawn + LWWW S3GU2A+FR1,38,-21,0 + LWWW S3GU4A+FR2,45,-15,0 + LWWW S3GU4A+FR4,51,-27,0 + LWWW S3GU4A+FR5,51,-32,0 + LWWW S3GU4A+FR7,51,-33,0 + LWWW S3BF3A+FR1,35,-41,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,36,-17,0 + LWWW B3GU4A+FR5,55,-14,0 + LWWW B3GU4A+FR6,46,-18,0 + LWWW B3GU4A+FR7,45,-32,0 + LWWW B3GU4A+FR9,48,-28,0 + LWWW B3BF3C+FR5,54,-34,0 + .long 0 +#Doink + LWWW D3GU4A+FR2,33,-24,0 + LWWW D3GU4A+FR4,40,-24,0 + LWWW D3GU4A+FR5,36,-18,0 + LWWW D3GU4A+FR6,43,-27,0 + LWWW D3GU4A+FR7,53,-39,0 + LWWW D3BF3A+FR2,52,-40,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GU4A+FR1,38,-21,0 + LWWW L3DU3A+FR4,30,-11,1 + LWWW L3DU3A+FR6,33,-22,1 + LWWW L3DU3A+FR7,43,-23,1 + LWWW L3DU3A+FR9,49,-31,1 + LWWW L3BF3B+FR5,48,-38,0 + .long 0 + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR hrt_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + + WL 2,H3MS3X+FR5 ;Face down + WL ANI_SET_YVEL,80000h + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 3,H3MS3X+FR5 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL 3,H3MS3X+FR5 ;Face down + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + + SUBR hrt_break_face3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL 3,H3MS3Z+FR4 + WL ANI_SET_YVEL,078000h + WL 100,H3MS3Z+FR4 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + +* Head slams into mat +;From head slam + + SUBR hrt_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + + WL 2,H3MS3X+FR5 ;Face down + WL ANI_SET_YVEL,40000h + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 3,H3MS3X+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 3,H3MS3X+FR5 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,H3MS3X+FR5 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR hrt_3_fake_hold_anim +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 3,H4GH3C+FR1 + WL 3,H4GH3C+FR2 + WL 3,H4GH3C+FR3 + WL ANI_GOTO,#missed + + SUBR hrt_3_head_hold2_anim +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 3,H4GH3C+FR1 + WL 3,H4GH3C+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET_HDGRAB,40-20,80,37+20,23 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,3,H4GH3C+FR3 + WWL ANI_WAITHITOPP,4,H4GH3C+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + WL ANI_GOTO,#gothim + + SUBR hrt_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 3,H4GH3C+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 6,999,65,45,90000h,TGT_HEAD,56,93,0 + LEAPATOPP 9,999,40,45,90000h,TGT_HEAD,56,93,0 + WL 3,H4GH3C+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,40-20,80,37+20,23 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,3,H4GH3C+FR3 + WWL ANI_WAITHITOPP,3,H4GH3C+FR5 + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#gothim + .word ANI_SETWORD,USR_VAR2,0 + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_CLR_BUTCOUNT + .ref head_grab_time + WL ANI_CODE,head_grab_time + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,H4GH3C+FR5,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,H4GH3C+FR5,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,4,H4GH3C+FR6,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,H4GH3C+FR7,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,H4GH3Z+FR8,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,H4GH3Z+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,H4GH3C+FR3 + WL 3,H4GH3C+FR2 + WL 3,H4GH3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,H4GH3C+FR3 + WL 3,H4GH3C+FR2 + WL 3,H4GH3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4AH3A+FR1,76,17,0 + LWWW H3HB3A+FR3,81,-1,0 + LWWW H3HB3A+FR2,71,-11,0 + LWWW H3BF3A+FR1,45,-40,0 + .long 0 +#Razor + LWWW R4AH4C+FR3,77,15,0 + LWWW R3HB3A+FR3,79,-2,0 + LWWW R3HB3A+FR2,76,-21,0 + LWWW R3BF3A+FR1,49,-42,0 + .long 0 +#Taker + LWWW U4AH3A+FR2,70,25,0 + LWWW U4BF3A+FR2,71,11,0 + LWWW U4BF3A+FR3,46,-8,0 + LWWW U4BF3Z+FR5,51,-21,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR2,91,6,0 + LWWW Y4AM4A+FR1,90,-1,0 + LWWW Y4AM4A+FR2,80,-11,0 + LWWW Y3BF3A+FR1,49,-30,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,77,8,0 + LWWW S4AH3D+FR1,74,6,0 + LWWW S4BF3A+FR2,69,-11,0 + LWWW S3BF3A+FR1,35,-41,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,72,10,0 + LWWW B4BF3A+FR1,85,9,0 + LWWW B3HB3A+FR2,74,-25,0 + LWWW B3BF3C+FR5,52,-34,0 + .long 0 +#Doink + LWWW D3AH3B+FR1,65,12,0 + LWWW D3AK3A+FR3,68,9,0 + LWWW D3AK3A+FR2,77,-11,0 + LWWW D3BF3A+FR2,47,-40,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,70,9,0 + LWWW L3BF3A+FR1,81,4,1 + LWWW L3BF3A+FR2,77,-16,1 + LWWW L3BF3B+FR5,46,-38,0 + .long 0 + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#***************************************************************************** +* +* DDT (FROM HEAD HOLD) - and standing - no xvel + + SUBR hrt_hh_2_ddt_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + + WL 2,H1TL5A+FR5 + + .word ANI_ATTACK_ON, AMODE_PUPPET,32,15,45,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,H1TL5A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + .word ANI_SOUND,82h ;Effort grunt + +;got him + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WL ANI_SLAVEANIM,slaveanim_tbl + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,3,H1TL5A+FR5,#puppet_tbl,0 + .word ANI_XFLIP + WWLLW ANI_SUPERSLAVE2,3,H1TL5A+FR6,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,H1TL5A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,10,H3DD3Z+FR1,#puppet_tbl,3 + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_CODE,draw_ddt_name + + WWL ANI_SETLONG,OBJ_GRAVITY,0a000h + WL ANI_SET_YVEL,70000h + + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR2,#puppet_tbl,4 + .word ANI_OFFSET,0,53,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR3,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR4,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR5,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,1,H3DD3Z+FR6,#puppet_tbl,8 + + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + +;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR7,#puppet_tbl,9 +; WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#break_face_tbl + + .word ANI_SETOPP_PLYRMODE,MODE_ONGROUND + .word ANI_DETACH + + WL 5,H3UC3X+FR9 + WL 5,H3UC3X+FR10 + + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#missed + .word ANI_XFLIP + WL 4,H1TL5A+FR6 + WL 4,H1TL5A+FR5 + WL 4,H3DD3Z+FR1 + + WWL ANI_SETLONG,OBJ_GRAVITY,0a000h + WL ANI_SET_YVEL,30000h + + WL 4,H3DD3Z+FR2 + .word ANI_OFFSET,0,53,0 ;x,y,z + WL 4,H3DD3Z+FR3 + WL 4,H3DD3Z+FR4 + WL 4,H3DD3Z+FR5 + WL 1,H3DD3Z+FR6 + + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + +;impact + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,CALL_MISSES + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 4,H3DD3Z+FR7 + WL 4,H3UC3X+FR9 + WL 4,H3UC3X+FR10 + + .word ANI_XFLIP + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + .word ANI_END + +#break_face_tbl + .long hrt_break_face_anim,rzr_break_face_anim + .long und_break_face_anim + .long yok_break_face_anim + .long shn_break_face_anim,bam_break_face_anim + .long dnk_break_face_anim,0,lex_break_face_anim + +draw_ddt_name +;Draw hip toss message + CREATE MESSAGE_PID,MOVE_NAME_ANNC + move a13,*a0(PA8),L + movk 16,a14 + move a14,*a0(PA10),L + rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3GU4A+FR10,43,-24,0 + + LWWW H4AM3A+FR3,-45,-37,0 + LWWW H4AM3A+FR5,-45,-41,0 + LWWW H4AM3A+FR6,-43,-33,0 + LWWW H3MS3Z+FR1,-73,-16,0 + LWWW H3MS3Z+FR2,-84,-19,0 + LWWW H3MS3Z+FR3,-85,-20,0 + LWWW H3MS3Z+FR4,-85,-20,0 + LWWW H3MS3Z+FR5,-93,-17,0 + LWWW H3MS3Z+FR6,-65,-21,0 + .long 0 +#Razor + LWWW R4AM3X+FR2,46-10,-9,0 + + LWWW R4AM3X+FR4,-47,-24,0 + LWWW R4AM3X+FR5,-48,-20,0 + LWWW R4AM3X+FR6,-47,-14,0 + LWWW R3MS3Z+FR1,-53,-15,0 + LWWW R3MS3Z+FR2,-67,-16,0 + LWWW R3MS3Z+FR3,-85,-22,0 + LWWW R3MS3Z+FR4,-96,-21,0 + LWWW R3MS3Z+FR5,-98,-25,0 + LWWW R3MS3Z+FR6,-92,-42,0 + .long 0 +#Taker + LWWW U3GD2A+FR8,50-13,-19,0 + + LWWW U4BF3Z+FR2,-56,-32,0 + LWWW U4BF3Z+FR1,-59,-34,0 + LWWW U4BF3A+FR3,-60,-12,0 + LWWW U3MS3Z+FR1,-70,-3,0 + LWWW U3MS3Z+FR2,-85,-7,0 + LWWW U3MS3Z+FR3,-97,-25,0 + LWWW U3MS3Z+FR4,-99,-25,0 + LWWW U3MS3Z+FR5,-106,-26,0 + LWWW U3MS3Z+FR6,-96,-31,0 + .long 0 +#Yokozuna + LWWW Y4AM4A+FR7,44-12,-20,0 + + LWWW Y4AM4A+FR5,-54,-24,0 + LWWW Y4AM4A+FR4,-58,-26,0 + LWWW Y4AM4A+FR3,-56,-25,0 + LWWW Y3MS3Z+FR1,-57,-24,0 + LWWW Y3MS3Z+FR2,-73,-4,0 + LWWW Y3MS3Z+FR3,-94,-10,0 + LWWW Y3MS3Z+FR4,-93,-13,0 + LWWW Y3MS3Z+FR5,-94,-21,0 + LWWW Y3MS3Z+FR6,-94,-41,0 + .long 0 +#Shawn + LWWW S4AM3A+FR5,44-17,-41,0 + + LWWW S4AM3A+FR6,-48,-46,0 + LWWW S4AM3A+FR7,-48,-39,0 + LWWW S4AM3A+FR8,-46,-21,0 + LWWW S3MS3Z+FR1,-55,-22,0 + LWWW S3MS3Z+FR2,-76,-18,0 + LWWW S3MS3Z+FR3,-84,-18,0 + LWWW S3MS3Z+FR4,-87,-19,0 + LWWW S3MS3Z+FR5,-93,-22,0 + LWWW S3MS3Z+FR6,-97,-54,0 + .long 0 +#BamBam + LWWW B4AM4A+FR2,50-16,-21,0 + + LWWW B4AM4A+FR3,-47,-29,0 + LWWW B4AM4A+FR6,-50,-31,0 + LWWW B4AM4A+FR7,-50,-25,0 + LWWW B3MS3Z+FR1,-69,-11,0 + LWWW B3MS3Z+FR2,-91,-18,0 + LWWW B3MS3Z+FR3,-104,-25,0 + LWWW B3MS3Z+FR4,-106,-14,0 + LWWW B3MS3Z+FR5,-103,-2,0 + LWWW B3MS3Z+FR6,-92,-13,0 + .long 0 +#Doink + LWWW D3AM3A+FR4,53-17,-21,0 + + LWWW D3AM3A+FR5,-49,-34,0 + LWWW D3PP3A+FR3,-55,-40,0 + LWWW D3PP3A+FR2,-55,-24,0 + LWWW D3GS3X+FR1,-49,-22,0 + LWWW D3GS3X+FR3,-58,-19,0 + LWWW D3GS3X+FR4,-70,-19,0 + LWWW D3GS3X+FR5,-68,-23,0 + LWWW D3GS3X+FR7,-76,-25,0 + LWWW D3GS3X+FR8,-103,-53,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3BF3A+FR2,60-23,-18,1 + + LWWW L3BF3A+FR3,-61,-34,1 + LWWW L4GH3B+FR2,-52,-34,0 + LWWW L4GH3B+FR3,-52,-25,0 + LWWW L3MS3Z+FR1,-65,-15,0 + LWWW L3MS3Z+FR2,-65,-15,0 + LWWW L3MS3Z+FR3,-74,-22,0 + LWWW L3MS3Z+FR4,-82,-26,0 + LWWW L3MS3Z+FR5,-94,-29,0 + LWWW L3MS3Z+FR6,-96,-46,0 + .long 0 + + +#***************************************************************************** +* +* RUNNING DDT + SUBR hrt_combo_running_ddt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 7,120,120,40,90000h,TGT_HEAD,-10,38+53,0 + WL ANI_CODE,no_bk_xvel + + WL 3,H3DD3Z+FR1 + WL 4,H3DD3Z+FR2 + + .word ANI_OFFSET,0,53,0 ;x,y,z + + .word ANI_ATTACK_ON, AMODE_PUPPET,-27,26,38,49 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,H3DD3Z+FR3 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc + .WORD ANI_INC_COMBO + + WL ANI_CODE,#half_vels + + .word ANI_ATTACHZ,0,0,2 ;opp in front + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR6,#puppet_tbl,3 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + ;impact + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR7,#puppet_tbl,4 + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#break_face_tbl + WLLL ANI_SETOPPVELS,-10000h,40000h,0 ;x,y,z vels + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 8,H3UC3X+FR9 + WL 8,H3UC3X+FR10 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_XFLIP + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#missedbc + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + WL 4,H3DD3Z+FR3 + WL 4,H3DD3Z+FR4 + WL 4,H3DD3Z+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 1,H3DD3Z+FR6 + WL 2,H3DD3Z+FR7 + WL 4,H3UC3X+FR9 + WL 4,H3UC3X+FR10 + + .word ANI_XFLIP + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + + SUBR hrt_running_ddt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,12 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,120,45,90000h,TGT_HEAD,-10,91,0 + WL ANI_CODE,no_bk_xvel + + WL 6,H3DD3Z+FR1 + WL 6,H3DD3Z+FR2 + + .word ANI_OFFSET,0,53,0 ;x,y,z + + .word ANI_ATTACK_ON, AMODE_PUPPET,-27,26,58,49 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,H3DD3Z+FR3 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + + WL ANI_CODE,#half_vels + + .word ANI_ATTACHZ,0,0,2 ;opp in front + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,H3DD3Z+FR6,#puppet_tbl,3 + + WL ANI_CODE,draw_ddt_name + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + ;impact + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WWLLW ANI_SUPERSLAVE2,4,H3DD3Z+FR7,#puppet_tbl,4 + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#break_face_tbl + WLLL ANI_SETOPPVELS,-10000h,40000h,0 ;x,y,z vels + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZERO_XZVELS + + WL 6,H3UC3X+FR9 + WL 6,H3UC3X+FR10 + + .word ANI_XFLIP + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#missedb + WLW ANI_SET_ZVEL,0,AM_ABS + WL ANI_SET_YVEL,20000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLLL ANI_SETOPPVELS,30000h,20000h,0 ;x,y,z vels +#missed + WL ANI_CODE,CALL_MISSES + WL 4,H3DD3Z+FR3 + WL 4,H3DD3Z+FR4 + WL 4,H3DD3Z+FR5 + .word ANI_WAITHITGND + .word ANI_SHAKER,30 + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 1,H3DD3Z+FR6 + WL 2,H3DD3Z+FR7 + WL 4,H3UC3X+FR9 + WL 4,H3UC3X+FR10 + + .word ANI_XFLIP + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#half_vels + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + + clr a0 + movi [2,0],a0 + move a0,*a13(OBJ_YVEL),L + rets + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 1 ;yoko + .word 0 ;shawn + .word 1 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#break_face_tbl + .long hrt_tossed_anim,rzr_tossed_anim + .long und_tossed_anim + .long yok_tossed_anim + .long shn_tossed_anim,bam_tossed_anim + .long dnk_tossed_anim,0,lex_tossed_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3UC3X+FR1,-28,-9,0 + LWWW H3UC3X+FR2,-62,-2,0 + LWWW H3UC3X+FR3,-70,4,0 + LWWW H3UC3X+FR4,-62,4,0 + LWWW H2CP3A+FR1,-69,-39,1 + .long 0 +#Razor + LWWW R3FD3B+FR1,-36,-4,0 + LWWW R3FD3B+FR2,-62,1,0 + LWWW R3FD3B+FR4,-80,14,0 + LWWW R3FD3B+FR5,-70,15,0 + LWWW R3AM3D+FR2,-89,-42,1 + .long 0 +#Taker + LWWW U3FD3X+FR1,-30,-5,1 + LWWW U3FD3X+FR2,-43,-2,1 + LWWW U3FD3X+FR3,-50,4,1 + LWWW U3FD3X+FR4,-61,8,1 + LWWW U3CP3B+FR3,-95,-28,1 + .long 0 +#Yokozuna + LWWW Y3FD3A+FR1,-34,-11,0 + LWWW Y3FD3A+FR2,-69,16,0 + LWWW Y3FD3A+FR3,-62,17,0 + LWWW Y3FD3A+FR4,-67,11,0 + LWWW Y3CP3B+FR1,-74,-38,1 + .long 0 +#Shawn + LWWW S3UC3X+FR1,-40,-3,0 + LWWW S3UC3X+FR2,-58,-3,0 + LWWW S3UC3X+FR4,-69,-4,0 + LWWW S3UC3X+FR5,-58,9,0 + LWWW S3CP3B+FR2,-83,-37,1 + .long 0 +#BamBam + LWWW B4UC3B+FR1,-43,4,0 + LWWW B4UC3B+FR2,-58,-1,0 + LWWW B4UC3B+FR3,-76,-1,0 + LWWW B4UC3B+FR4,-82,-4,0 + LWWW B3CP3B+FR2,-84,-7,1 + .long 0 +#Doink + LWWW D3UC3A+FR2,-47,-2,0 + LWWW D3UC3A+FR3,-57,6,0 + LWWW D3UC3A+FR4,-75,8,0 + LWWW D3UC3A+FR5,-75,3,0 + LWWW D3SA3A+FR4,-79,-42,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3UC3X+FR2,-47,-14,0 + LWWW L3UC3X+FR3,-76,-10,0 + LWWW L3CP3X+FR2,-81,-4,1 + LWWW L3CP3X+FR3,-73,8,1 + LWWW L3CP3X+FR1,-90,-52,1 + .long 0 + +#***************************************************************************** +* +* PILEDRIVER + + SUBR hrt_combo_pile_driver_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ATTACK_ON,AMODE_PUPPET,-12,44,90,66 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,H3PG3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + + .word ANI_SET_RPTCOUNT,3 ;5 times +;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,H3PG3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,H3PG3A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,10,H3PG3A+FR3,#puppet_tbl,2 + + WWLLW ANI_SUPERSLAVE2,4,H3PG3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR1,#puppet_tbl,4 + +#pile_loop + .word ANI_CLR_BUTCOUNT + WL ANI_SET_YVEL,70000h + WL ANI_CODE,set_xdrift + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR2,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR3,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR4,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR5,#puppet_tbl,8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + + WWLLW ANI_SUPERSLAVE2,2,H3ZZ3T+FR6,#puppet_tbl,9 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR7,#puppet_tbl,10 + .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR8,#puppet_tbl,11 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#pile_loop + +#exit_move + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL 4,H3ZZ3T+FR9 + WL 4,H3ZZ3T+FR10 + WL 4,H3PG3A+FR1 + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +**************************************** + + SUBR hrt_3_pile_driver_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ATTACK_ON,AMODE_PUPPET,-12,44,80,36 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,H3PG3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,4,H3PG3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,H3PG3A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,10,H3PG3A+FR3,#puppet_tbl,2 + + WWLLW ANI_SUPERSLAVE2,4,H3PG3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR1,#puppet_tbl,4 + + WL ANI_SET_YVEL,70000h + WL ANI_CODE,set_xdrift + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR2,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR3,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR4,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR5,#puppet_tbl,8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .WORD ANI_DRAW_NAME,35 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,2 ;x & y don't matter. + + WWLLW ANI_SUPERSLAVE2,2,H3ZZ3T+FR6,#puppet_tbl,9 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR7,#puppet_tbl,10 + .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,8,H3ZZ3T+FR8,#puppet_tbl,11 + + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL 12,H3ZZ3T+FR8 + WL 3,H3ZZ3T+FR9 + WL 3,H3ZZ3T+FR10 + WL 3,H3PG3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#set_opp_xflip + move *a13(ATTACH_PROC),a0,L + move *a0(OBJ_CONTROL),a14 + xori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4AM3A+FR5,51,-35,0 + LWWW H3BF3A+FR3,18,-29,0 + LWWW H3PP3X+FR1,13,-25,0 + LWWW H3PP3X+FR2,2,13,0 + LWWW H3PP3X+FR3,1,36,0 + LWWW H3PP3X+FR4,5,42,0 + LWWW H3PP3X+FR5,12,51,0 + LWWW H3PP3X+FR6,14,56,0 + LWWW H3PP3X+FR6,28,58,0 + LWWW H3PP3X+FR6,37,55,0 + LWWW H3PP3X+FR7,37,27,0 + LWWW H3PP3X+FR8,32,2,0 +#Razor + LWWW R4AM4B+FR5,40,-31,0 + LWWW R3BF3A+FR9,12,-29,0 + LWWW R3GP3Z+FR1,8,-19,0 + LWWW R3GP3Z+FR2,9,-12,0 + LWWW R3GP3Z+FR3,7,27,0 + LWWW R3GP3Z+FR4,18,45,0 + LWWW R3GP3Z+FR5,22,53,0 + LWWW R3GP3Z+FR6,29,54,0 + LWWW R3GP3Z+FR6,42,52,0 + LWWW R3GP3Z+FR6,51,51,0 + LWWW R3GP3Z+FR7,36,42,0 + LWWW R3GP3Z+FR8,30,-3,0 +#Taker + LWWW U4MP4A+FR6,40,-9,0 + LWWW U4BF3Z+FR1,16,-21,0 + LWWW U3PP3X+FR1,15,-16,1 + LWWW U3PP3X+FR2,13,-8,1 + LWWW U3PP3X+FR3,4,-4,1 + LWWW U3PP3X+FR4,0,11,1 + LWWW U3PP3X+FR5,14,40,1 + LWWW U3PP3X+FR6,26,66,1 + LWWW U3PP3X+FR6,40,67,1 + LWWW U3PP3X+FR6,49,66,1 + LWWW U3GP3X+FR1,38,20,1 + LWWW U3GP3X+FR2,41,-10,1 +#Yokozuna + LWWW Y4AM4A+FR4,52,-25,0 + LWWW Y3BF3A+FR11,12,-21,0 + LWWW Y3PP3Q+FR1,12,-15,0 + LWWW Y3PP3Q+FR2,11,-11,0 + LWWW Y3PP3Q+FR3,14,-6,0 + LWWW Y3PP3Q+FR4,20,2,0 + LWWW Y3PP3Q+FR6,14,19,0 + LWWW Y3PP3Q+FR7,22,23,0 + LWWW Y3PP3Q+FR7,36,25,0 + LWWW Y3PP3Q+FR7,45,23,0 + LWWW Y3FD3N+FR3,37,14,0 + LWWW Y3FD3N+FR4,39,25,0 +#Shawn + LWWW S4BF3A+FR5,32,-39,0 + LWWW S3BF3A+FR5,0,-33,0 + LWWW S3GP3X+FR1,10,-24,0 + LWWW S3GP3X+FR2,8,-15,0 + LWWW S3GP3X+FR3,13,4,0 + LWWW S3GP3X+FR4,18,43,0 + LWWW S3GP3X+FR5,20,46,0 + LWWW S3OS3X+FR8,29,39,1 + LWWW S3OS3X+FR8,43,40,1 + LWWW S3OS3X+FR8,52,40,1 + LWWW S3FD3X+FR2,44,31,0 + LWWW S3GP3X+FR6,40,0,0 +#BamBam + LWWW B3BF3C+FR5,42,-28,0 + LWWW B4AM4A+FR5,15,-24,0 + LWWW B3PP3Q+FR1,10,-23,0 + LWWW B3PP3Q+FR2,10,-7,0 + LWWW B3PP3Q+FR3,14,15,0 + LWWW B3PP3Q+FR4,19,39,0 + LWWW B3PP3Q+FR5,19,48,0 + LWWW B3PP3Q+FR6,20,52,0 + LWWW B3PP3Q+FR6,34,55,0 + LWWW B3PP3Q+FR6,43,59,0 + LWWW B3PP3Q+FR7,35,34,0 + LWWW B3FD3C+FR1,27,7,0 +#Doink + LWWW D3HT3Z+FR1,32,-34,1 + LWWW D3BF3A+FR1,9,-27,0 + LWWW D3PD3Z+FR1,9,-29,1 + LWWW D3PD3Z+FR2,11,-12,1 + LWWW D3PD3Z+FR3,9,11,1 + LWWW D3PD3Z+FR4,11,50,1 + LWWW D3PD3Z+FR5,8,54,1 + LWWW D3PD3Z+FR6,27,46,1 + LWWW D3PD3Z+FR6,41,46,1 + LWWW D3PD3Z+FR6,50,41,1 + LWWW D3PD3Z+FR8,41,17,1 + LWWW D3PD3Z+FR9,43,-7,1 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR6,44,-39,0 + LWWW L3BF3B+FR1,10,-33,0 + LWWW L3GP3Z+FR1,8,-19,0 + LWWW L3GP3Z+FR2,10,-8,0 + LWWW L3GP3Z+FR3,11,3,0 + LWWW L3GP3Z+FR4,12,23,0 + LWWW L3GP3Z+FR5,18,30,0 + LWWW L3GP3Z+FR6,27,44,0 + LWWW L3GP3Z+FR6,41,44,0 + LWWW L3GP3Z+FR6,50,40,0 + LWWW L3FH3A+FR6,38,29,0 + LWWW L3FD3B+FR1,39,-1,0 + +#rollout_tbl + .long hrt_break_neck2_anim,rzr_break_neck2_anim + .long und_break_neck2_anim,yok_break_neck2_anim + .long shn_break_neck2_anim,bam_break_neck2_anim + .long dnk_break_neck2_anim,0,lex_break_neck2_anim + +#**************************************** + + SUBR hrt_3_face_driver2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ATTACK_ON,AMODE_PUPPET,-12,44,80,36 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,H3PG3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_SET_RPTCOUNT,4 ;2 times + .word ANI_CLR_BUTCOUNT + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,3,H3ZZ3T+FR1,#puppet_tbl,0 + + WL ANI_SET_YVEL,50000h + + .word ANI_SETOPPMODE,MODE_GHOST + + WWLLW ANI_SUPERSLAVE2,3,H3ZZ3T+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,H3ZZ3T+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,H3ZZ3T+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,H3ZZ3T+FR5,#puppet_tbl,4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SHAKEALL,2 + .word ANI_DAMAGEOPP,D_FACEDRIVER,RD_FACEDRIVER + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,2 ;x & y don't matter. + + WWLLW ANI_SUPERSLAVE2,3,H3ZZ3T+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,H3ZZ3T+FR7,#puppet_tbl,6 + + .word ANI_SHAKER,30 + WL ANI_CODE,#flsh_wht + WL ANI_CODE,HIT_THE_MAT + WWLLW ANI_SUPERSLAVE2,3,H3ZZ3T+FR8,#puppet_tbl,7 + +;Check for a repeat +;If not, release as normal +#try_rpt + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#norepeat + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#slam_again + WL ANI_GOTO,#norepeat + +#slam_again + .word ANI_CLR_BUTCOUNT + +;Slam him again using detach/reattach if button pressed again! + WL ANI_SLAVEANIM,#faced2_tbl + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 5,H3ZZ3T+FR8 + WL 2,H3ZZ3T+FR7 + WL 2,H3ZZ3T+FR6 + WL 2,H3ZZ3T+FR5 + WL 4,H3ZZ3T+FR4 + +;Reattach me to who I'm slamming + WL ANI_CODE,#reattach + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SETOPPMODE,MODE_GHOST + + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR5,#puppet_tbl,4 + + .word ANI_SHAKEALL,2 + .word ANI_DAMAGEOPP,D_FACESLAM2,RD_FACESLAM2 + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,2 ;x & y don't matter. + + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR7,#puppet_tbl,6 + + .word ANI_SHAKER,30 + WL ANI_CODE,#flsh_wht + WL ANI_CODE,HIT_THE_MAT + + WWLLW ANI_SUPERSLAVE2,4,H3ZZ3T+FR8,#puppet_tbl,7 + WL ANI_GOTO,#try_rpt + +;Didn't repeat - fall back as normal +#norepeat + WWLLW ANI_SUPERSLAVE2,2,H3ZZ3T+FR8,#puppet_tbl,7 + WL ANI_CODE,CALL_SPECIAL_MOVE + .word ANI_DRAW_NAME,35 +; WL ANI_CODE,#flsh_wht + + .ref fall_back_tbl + WL ANI_SLAVEANIM,fall_back_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_CLROPPMODE,MODE_GHOST + + WL ANI_OPPOFFSET,#release_table + WLLL ANI_SETOPPVELS,020000H,070000h,0000h ;x,y,z vels + .word ANI_DETACH + + WL 1,H3ZZ3T+FR8 + WLLL ANI_SETOPPVELS,020000H,070000h,0000h ;x,y,z vels + WL 12,H3ZZ3T+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,H3ZZ3T+FR9 + WL 3,H3ZZ3T+FR10 + WL 4,H3PG3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#flsh_wht + .ref flash_white + calla flash_white + rets + +#reattach + move *a13(WHOIHIT),a0,L + move a0,*a13(ATTACH_PROC),L + move a13,*a0(ATTACH_PROC),L + rets + +#release_table + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 0,0 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3MS3Z+FR1,25,-9,0 + LWWW H3MS3Z+FR2,25,-3,0 + LWWW H3MS3Z+FR3,25,-11,0 + LWWW H3MS3Z+FR4,22,-6,0 + LWWW H3MS3Z+FR5,31,4,0 + LWWW H3MS3Z+FR5,41,9,0 + LWWW H3MS3Z+FR6,42,2,0 + LWWW H3MS3Z+FR4,55,-3,0 + .long 0 +#Razor + LWWW R3MS3Z+FR2,34,-17,0 + LWWW R3MS3Z+FR3,27,-10,0 + LWWW R3MS3Z+FR4,19,-4,0 + LWWW R3MS3Z+FR5,27,-2,0 + LWWW R3MS3Z+FR5,40,1,0 + LWWW R3MS3Z+FR5,48,-2,0 + LWWW R3MS3Z+FR6,54,-15,0 + LWWW R3MS3Z+FR3,56,-9,0 + .long 0 +#Taker + LWWW U3MS3Z+FR1,30,4,0 + LWWW U3MS3Z+FR2,11,9,0 + LWWW U3MS3Z+FR3,4,-8,0 + LWWW U3MS3Z+FR4,11,-4,0 + LWWW U3MS3Z+FR5,25,6,0 + LWWW U3MS3Z+FR5,33,11,0 + LWWW U3MS3Z+FR6,28,-1,0 + LWWW U3MS3Z+FR3,25,-4,0 + .long 0 +#Yokozuna + LWWW Y3MS3Z+FR1,39,-15,0 + LWWW Y3MS3Z+FR2,29,14,0 + LWWW Y3MS3Z+FR3,17,1,0 + LWWW Y3MS3Z+FR4,16,-2,0 + LWWW Y3MS3Z+FR5,24,1,0 + LWWW Y3MS3Z+FR5,32,6,0 + LWWW Y3MS3Z+FR6,36,-15,0 + LWWW Y3MS3Z+FR4,42,9,0 + .long 0 +#Shawn + LWWW S3MS3Z+FR1,21,-20,0 + LWWW S3MS3Z+FR2,13,-3,0 + LWWW S3MS3Z+FR3,7,2,0 + LWWW S3MS3Z+FR4,15,2,0 + LWWW S3MS3Z+FR5,28,8,0 + LWWW S3MS3Z+FR5,36,13,0 + LWWW S3MS3Z+FR6,52,-28,0 + LWWW S3MS3Z+FR3,41,3,0 + .long 0 +#BamBam + LWWW B3MS3Z+FR1,37,-4,0 + LWWW B3MS3Z+FR2,30,-3,0 + LWWW B3MS3Z+FR3,19,-6,0 + LWWW B3MS3Z+FR4,25,5,0 + LWWW B3MS3Z+FR5,37,26,0 + LWWW B3MS3Z+FR5,48,25,0 + LWWW B3MS3Z+FR6,52,14,0 + LWWW B3MS3Z+FR3,56,-3,0 + .long 0 +#Doink + LWWW D3GS3X+FR1,46,-18,0 + LWWW D3GS3X+FR3,27,1,0 + LWWW D3GS3X+FR4,20,-2,0 + LWWW D3GS3X+FR5,23,-6,0 + LWWW D3GS3X+FR7,34,2,0 + LWWW D3GS3X+FR7,44,4,0 + LWWW D3GS3X+FR8,48,-27,0 + LWWW D3GS3X+FR4,55,5,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MS3Z+FR1,42,-13,0 + LWWW L3MS3Z+FR2,23,-1,0 + LWWW L3MS3Z+FR3,9,-4,0 + LWWW L3MS3Z+FR4,13,-8,0 + LWWW L3MS3Z+FR5,23,2,0 + LWWW L3MS3Z+FR5,33,4,0 + LWWW L3MS3Z+FR6,40,-21,0 + LWWW L3MS3Z+FR4,39,-13,0 + .long 0 + + .ref rzr_break_face3_anim + .ref und_break_face3_anim + .ref shn_break_face3_anim,bam_break_face3_anim + .ref lex_break_face3_anim + .ref yok_break_face3_anim + .ref dnk_break_face3_anim + +#faced2_tbl + .long hrt_break_face3_anim,rzr_break_face3_anim + .long und_break_face3_anim + .long yok_break_face3_anim + .long shn_break_face3_anim,bam_break_face3_anim + .long dnk_break_face3_anim,0,lex_break_face3_anim + + +#***************************************************************************** +* +* FACE-RAKE (combo version) + + SUBR hrt_combo_rake_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,H4RF3A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 7,999,60,40,90000h,TGT_HEAD,56,93,8 + WL 2,H4RF3A+FR1 + + .word ANI_ATTACK_ON,AMODE_PUPPET,10,88,48,26 + + WWL ANI_WAITHITOPP,3,H4RF3A+FR3 + WWL ANI_WAITHITOPP,6,H4RF3A+FR4 + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc + .WORD ANI_INC_COMBO + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,H4RF3A+FR4,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 10,H4RF3A+FR4 + .word ANI_CLR_BUTCOUNT + + WL ANI_CODE,DO_EYES + WL ANI_CODE,GOUGE_SOUND + WL ANI_CODE,MAKE_HIM_SCREAM + + WL 4,H4RF3A+FR5 + WL 4,H4RF3A+FR6 + + .word ANI_DAMAGEOPP,D_FACERAKE,RD_FACERAKE + WL ANI_SLAVEANIM,#react_tbl + .word ANI_DETACH + + WL 10,H4RF3A+FR7 + WL 8,H4RF3A+FR8 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#no_dropkick + WL ANI_CHANGEANIM,hrt_combo_flying_kick_anim +#no_dropkick + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#no_knee + WL ANI_CHANGEANIM,hrt_combo_knee_fall_anim +#no_knee + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#last_check + WL ANI_CHANGEANIM,hrt_combo_roll_uppercut_anim +#last_check + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit_move + WL ANI_CHANGEANIM,hrt_combo_hiptoss_anim + +#exit_move + .word ANI_SETMODE,MODE_NORMAL + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_END + +#missedbc +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + + WL 3,H4RF3A+FR3 + WL 3,H4RF3A+FR2 + WL 3,H4RF3A+FR1 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* FACE-RAKE (sissy way to fight, if you ask me...) +* Have you ever had your face raked ? It FUCKING hurts !!!! :) + + SUBR hrt_rake_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 3,H4RF3A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 7,999,75,45,90000h,TGT_HEAD,56,100,0 + WL 2,H4RF3A+FR1 + WL 3,H4RF3A+FR3 + .word ANI_ATTACK_ON,AMODE_PUPPET,10,88,48,26 + + WWL ANI_WAITHITOPP,14,H4RF3A+FR4 + + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#gothim + .word ANI_ZERO_XZVELS + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + WL ANI_CODE,CALL_NASTY_MOVE + + WWLLW ANI_SUPERSLAVE2,1,H4RF3A+FR4,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 10,H4RF3A+FR4 + .word ANI_DRAW_NAME,19 + .word ANI_ZEROVELS + + WL ANI_CODE,DO_EYES + WL ANI_CODE,GOUGE_SOUND + WL ANI_CODE,MAKE_HIM_SCREAM + + WL 4,H4RF3A+FR5 + WL 4,H4RF3A+FR6 + + .word ANI_DAMAGEOPP,D_FACERAKE,RD_FACERAKE + + WL ANI_CODE,#ck_dead_opp + WL ANI_IFSTATUS,#dead + + WL ANI_SLAVEANIM,#react_tbl + .word ANI_DETACH + + WL 20,H4RF3A+FR7 + WL 3,H4RF3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#dead + WL ANI_SLAVEANIM,#react2_tbl + .word ANI_DETACH + + WL 10,H4RF3A+FR7 + WL 3,H4RF3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb +#missed + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,CALL_MISSES + + WL 3,H4RF3A+FR4 + WL 3,H4RF3A+FR3 + WL 3,H4RF3A+FR2 + WL 3,H4RF3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ck_dead_opp + move *a13(ATTACH_PROC),a2,L + jrnz #attach_found + move *a13(WHOIHIT),a2,L +#attach_found + move *a2(PLYRNUM),a1 + MMTM SP,A10,A13 + MOVE A13,A10 + MOVE *A2,A13,L + .ref get_health + calla get_health + MMFM SP,A10,A13 + move a0,a0 + jrnz #ok +;Dead + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets +#ok + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long 0 + .long #Lex + +#Bret + LWWW H2AH3A+FR1,58,12,0 +#Razor + LWWW R2AH2D+FR6,73,4,0 +#Taker + LWWW U2AH3A+FR3,45,24,0 +#Yokozuna + LWWW Y4AH4A+FR2,53,-1,0 +#Shawn + LWWW S4AH3D+FR5,55,-1,0 +#BamBam + LWWW B2AH2A+FR5,55,0,0 +#Doink + LWWW D3AK3A+FR3,58,7,0 +#Lex + LWWW L2AH2A+FR3,57,2,0 + +#react_tbl + .long xxx_get_face_rake_anim + .long xxx_get_face_rake_anim + .long xxx_get_face_rake_anim + .long xxx_get_face_rake_anim + .long xxx_get_face_rake_anim + .long xxx_get_face_rake_anim + .long xxx_get_face_rake_anim + .long 0 + .long xxx_get_face_rake_anim + +#react2_tbl + .long xxx_get_face_rake2_anim + .long xxx_get_face_rake2_anim + .long xxx_get_face_rake2_anim + .long xxx_get_face_rake2_anim + .long xxx_get_face_rake2_anim + .long xxx_get_face_rake2_anim + .long xxx_get_face_rake2_anim + .long 0 + .long xxx_get_face_rake2_anim +**** +* Generic wrapper for the rake reactions. Sets plyrmode to normal, then +* goes to face rake. + + SUBR xxx_get_face_rake_anim + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM_TBL,#face_hit2_tbl + +#face_hit2_tbl + .long hrt_4_head_hit2_anim + .long rzr_4_head_hit2_anim + .long und_head_hit2_anim + .long yok_4_head_hit2_anim + .long shn_4_head_hit2_anim + .long bam_head_hit2_anim + .long dnk_head_hit2_anim + .long 0 + .long lex_4_head_hit2_anim + + + SUBR xxx_get_face_rake2_anim + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM_TBL,fall_back_tbl + + .ref fall_back_tbl + +#***************************************************************************** +* +* ROLL - UPPERCUT + SUBR hrt_combo_roll_uppercut_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_INAIR2 + WLW ANI_SET_XVEL,70000h,AM_FACE_REL + WL ANI_CODE,#set_zvel + + ;dive. + WL 3,H3FR3A+FR1 + .word ANI_ATTACK_ON,AMODE_HITCHECK,-30,-4,62,54 +#loopc + WL 2,H3FR3A+FR2 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercutc + WL 3,H3FR3A+FR3 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercutc + WL 2,H3FR3A+FR4 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercutc + WL 3,H3FR3A+FR5 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercutc + WL 2,H3FR3A+FR6 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercutc + WL 3,H3FR3A+FR7 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercutc + WL 2,H3FR3A+FR8 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercutc + WL 3,H3FR3A+FR9 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercutc + WL ANI_GOTO,#loopc + +#standc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 2,H3FR3A+FR10 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#do_uppercutc + .word ANI_SET_RPTCOUNT,3 ;1 times + + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_CLR_BUTCOUNT + +#upper_loop + WL 2,H4UP3C+FR3 + WL 2,H4UP3C+FR4 + WL 1,H4UP3C+FR5 + + .word ANI_ATTACK_ON,AMODE_UPRCUT2,-6,22+10,100,100 + WL 2,H4UP3C+FR6 + .word ANI_ATTACK_OFF + WL ANI_SET_YVEL,40000h + + WL ANI_IFNOTSTATUS,#no_hitc + WL ANI_IFBLOCKED,#blockedc + .word ANI_INC_COMBO + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slidec +#no_slidec + WL 3,H4UP3C+FR6 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#upper_next_part + + WL 11,H4UP3C+FR7 + WL 2,H4UP3C+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,H4UP3C+FR9 + WL 2,H4UP3C+FR10 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit_move + WL ANI_CHANGEANIM,hrt_combo_running_ddt_anim + +#exit_move + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#upper_next_part + WL 2,H4UP3C+FR7 + WL 2,H4UP3C+FR8 + WL ANI_GOTO,#upper_loop + +#no_hitc +#blockedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + WL 17,H4UP3C+FR7 + WL 4,H4UP3C+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,H4UP3C+FR9 + WL 3,H4UP3C+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_roll_uppercut_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_INAIR2 + WLW ANI_SET_XVEL,78000h,AM_FACE_REL + WL ANI_CODE,#set_zvel + + .word ANI_STARTATTACK,AT_PUNCH,8 + + ;dive. + WL 2,H3FR3A+FR1 + .word ANI_ATTACK_ON,AMODE_HITCHECK,-30,-4,62,54 +#loop + .word ANI_STARTATTACK,AT_PUNCH,20 + WL 2,H3FR3A+FR2 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercut + WL 3,H3FR3A+FR3 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercut + WL 2,H3FR3A+FR4 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercut + WL 3,H3FR3A+FR5 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercut + WL 2,H3FR3A+FR6 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercut + WL 3,H3FR3A+FR7 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercut + WL 2,H3FR3A+FR8 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercut + WL 3,H3FR3A+FR9 + WL ANI_CODE,#rope_check + WL ANI_IFSTATUS,#do_uppercut + WL ANI_GOTO,#loop + +#stand + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 2,H3FR3A+FR10 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#do_uppercut + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 1,H4UP3C+FR3 + WL 1,H4UP3C+FR4 + WL 1,H4UP3C+FR5 + + .word ANI_ATTACK_ON,AMODE_UPRCUT,-6,22+10,64,100 + WL 3,H4UP3C+FR6 + .word ANI_ATTACK_OFF + + .word ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFBLOCKED,#blocked + WL ANI_IFNOTSTATUS,#no_hit + + .ref MAKE_HIM_SCREAM + WL ANI_CODE,MAKE_HIM_SCREAM + .ref impact_sound + WL ANI_CODE,impact_sound + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slide + WL ANI_SET_YVEL,40000h + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + WL 10,H4UP3C+FR7 + WL 3,H4UP3C+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,H4UP3C+FR9 + WL 2,H4UP3C+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit +#blocked +#no_slide + WL ANI_CODE,CALL_MISSES + WL 12,H4UP3C+FR7 + WL 3,H4UP3C+FR8 + WL 3,H4UP3C+FR9 + WL 3,H4UP3C+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;Set initial Z velocity so that we'll hit our opponent if he doesn't move. +; We don't pay any attention to his velocities, so this is approximate at +; best. + SUBRP #set_zvel + + calla get_opp_process + move *a13(OBJ_XPOSINT),a1 + move *a0(OBJ_XPOSINT),a14 + sub a14,a1 + abs a1 ;X dist (ABS) + movi 10000h/7,a14 ;divide by 7 + mpyu a14,a1 + srl 16,a1 ;a1 = ticks + + move *a0(OBJ_ZPOSINT),a3 + move *a13(OBJ_ZPOSINT),a14 + sub a14,a3 ;Z dist + divs a1,a3 + + sll 16,a3 + move a3,*a13(OBJ_ZVEL),L + + rets + +;Rope check. Set status if I'm up against a side rope. + SUBRP #rope_check + + move *a13(CAN_MOVE_DIR),a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + jrz #rets + + ;up against rope. get up. + movi #stand,a14 + move a14,*a13(ANIPC),L + + ;wobble the ropes + movk ROPE_RIGHT,a0 + btst MOVE_RIGHT_BIT,a1 + jrnz #ok0 + movk ROPE_LEFT,a0 +#ok0 + movk ROPE_BOUNCEIO,a1 + calla rope_command + movi 03Ch,a0 + calla triple_sound + +#rets rets + +;#***************************************************************************** +;* +;* CHAIR STUFF +; +; .ref CHAIR_SWING +; +; SUBR hrt_pkup_chair_anim +; +; .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +;#lp +; WL 4,H4WA4A+FR1 +; WL 4,H4WA4A+FR2 +; WL 4,H4WA4A+FR3 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,46,-12,1 ;image, x,y,zoff +; WL 4,H4WA4A+FR4 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,53,10,1 ;image, x,y,zoff +; WL 4,H4WA4A+FR5 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR2,56,54,1 ;image, x,y,zoff +; WL 4,H4WA4A+FR6 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,50,104,1 ;image, x,y,zoff +; WL 4,H4WA4A+FR7 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,17,124,1 ;image, x,y,zoff +; WL 4,H4WA4A+FR8 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-5,133,1 ;image, x,y,zoff +; WL 4,H4WA4A+FR9 +; +;; .word ANI_SINGLESTEP +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR5,-34,102,1 ;image, x,y,zoff +; WL 4,H4CS3A+FR2 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-39,126,1 ;image, x,y,zoff +; WL 4,H4CS3A+FR3 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR7,28,134,1 ;image, x,y,zoff +; WL 4,H4CS3A+FR4 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,72,62,1 ;image, x,y,zoff +; WL 4,H4CS3A+FR5 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR10,35,9,1 ;image, x,y,zoff +; WL 4,H4CS3A+FR6 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,55,34,1 ;image, x,y,zoff +; WL 4,H4CS3A+FR7 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,65,91,1 ;image, x,y,zoff +; WL 4,H4CS3A+FR8 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR7,31,115,1 ;image, x,y,zoff +; WL 4,H4CS3A+FR9 +; +;; .word ANI_SINGLESTEP +; WLW ANI_ATTCHIMAGE,0,0 +; +; WL ANI_GOTO,#lp +; +; + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/HRTSEQ4.ASM b/HRTSEQ4.ASM new file mode 100755 index 0000000..9bbe808 --- /dev/null +++ b/HRTSEQ4.ASM @@ -0,0 +1,2037 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "hrtseq4.asm" + .title "blocks, reactions to routine and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" + + .include "display.equ" + .include "damage.equ" + .INCLUDE "SWEAT.EQU" + + + +****************************************************************************** +* EXTERNAL REFERENCES + + + .ref free_toss_check,setup_freetoss,hrt_hiptoss_anim + .ref DO_WAIL,DO_SCREAM + .ref DO_BLOCKED + .ref SMALL_BOUNCE + .ref HIT_THE_MAT + .ref D4SK4A + .ref set_position + .ref set_skeleton_pal + .ref am_I_dizzy + .ref start_smoke + .ref set_my_pal + .ref make_norm,make_white + .ref set_wrestler_xflip + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +;#***************************************************************************** +;* +;* #2 BLOCK & HITBLOCK +; +; SUBR hrt_2_block_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP +; .word ANI_FRICTION,3000h +; .word ANI_ZERO_XZVELS +; .word ANI_SETSPEED,100h +; +; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_SET_WRESTLER_XFLIP +;;Rotate toward opponent if needed! +; .word ANI_SETPLYRMODE,MODE_BLOCK +; WL 3,H2BK3A+FR1 +;#2block +; WL 3,H2BK3A+FR2 +; .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT +; .word ANI_ZERO_XZVELS +; .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT +; .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_SETFACING +; WL 3,H2BK3A+FR1 +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +; SUBR hrt_2_hitblock_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP +; .word ANI_SETSPEED,100h +; .word ANI_FRICTION,3000h +; WL 4,H2BK3A+FR4 +; WL 4,H2BK3A+FR3 +; WL ANI_GOTO,#2block + +#************ +* +* #4 BLOCK & HITBLOCK + + SUBR hrt_4_block_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + +; WL ANI_CODE,block_if_safe + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 3,H4BK3A+FR1 +; .word ANI_SETPLYRMODE,MODE_BLOCK +#4block + WL 3,H4BK3A+FR2 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT|MODE_FRICTION + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT +; .word ANI_ZERO_XZVELS + .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETFACING + WL 3,H4BK3A+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_FRICTION,5000h + WL ANI_CODE,DO_BLOCKED + WL 2,H4BK3A+FR4 + WL 2,H4BK3A+FR3 + WL ANI_GOTO,#4block + + SUBR hrt_4_hitblock2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_FRICTION,4000h + WL ANI_CODE,DO_BLOCKED + WL ANI_SET_YVEL,38000h + WL 3,H4BK3A+FR4 + WL 3,H4BK3A+FR3 + WL 3,H4BK3A+FR4 + WL 3,H4BK3A+FR3 + WL 3,H4BK3A+FR4 + WL 3,H4BK3A+FR3 + WL ANI_GOTO,#4block + + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR hrt_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,H2AH3A+FR1 + WL 3,H2AH3A+FR2 + WL 3,H2AH3A+FR3 + WL 3,H2AH3A+FR4 + WL 3,H2AH3A+FR5 + WL 3,H2AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_2_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + .word ANI_DEBRIS,300,2,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,H2AH3A+FR1 + WL 4,H2AH3A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,H2AH3A+FR3 + WL 3,H2AH3A+FR4 + WL 3,H2AH3A+FR5 + WL 3,H2AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT + + SUBR hrt_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,H4AH3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,H4AH3A+FR2 + WL 3,H4AH3A+FR3 + WL 3,H4AH3A+FR4 + WL 3,H4AH3A+FR5 + WL 3,H4AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + .word ANI_DEBRIS,300,2,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,H4AH3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 4,H4AH3A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,H4AH3A+FR3 + WL 3,H4AH3A+FR4 + WL 3,H4AH3A+FR5 + WL 3,H4AH3A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_head_hit4_anim +;From earslap + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + +; WLW ANI_SET_XVEL,-28000h,AM_HIT_REL +; WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,H4AH3A+FR2 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + WL 3,H4AH3A+FR3 + WL 3,H4AH3A+FR4 + WL 3,H4AH3A+FR5 + WL 3,H4AH3A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEAD HIT2 (HANDS ON FACE) + + SUBR hrt_2_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,H2AE3A+FR1 + WL 3,H2AE3A+FR2 + WL 3,H2AE3A+FR3 + WL 3,H2AE3A+FR4 + WL 3,H2AE3A+FR5 + WL 3,H2AE3A+FR6 + WL 3,H2AE3A+FR7 + WL 3,H2AE3A+FR8 + + .word ANI_FACEUP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT2 (HANDS ON FACE) + + SUBR hrt_4_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,H4AE3A+FR1 + WL 3,H4AE3A+FR2 + WL 3,H4AE3A+FR3 + WL 3,H4AE3A+FR4 + WL 3,H4AE3A+FR5 + WL 3,H4AE3A+FR6 + WL 3,H4AE3A+FR7 + WL 3,H4AE3A+FR8 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,hrt_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_head_hit2s_anim +;Salt hits me in face + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .ref create_impact_salt + WL ANI_CODE,create_impact_salt + + WL 3,H4AE3A+FR1 + WL 3,H4AE3A+FR2 + WL 4,H4AE3A+FR3 + WL 4,H4AE3A+FR4 + WL 4,H4AE3A+FR5 + WL 4,H4AE3A+FR6 + .word ANI_WAITHITGND + .word ANI_FRICTION,4000h + WL 50,H4AE3A+FR6 + .word ANI_ZEROVELS + WL 4,H4AE3A+FR7 + WL 4,H4AE3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT2 (ENDS IN DIZZY) + + SUBR hrt_4_head_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,H4AE3A+FR1 + WL 3,H4AE3A+FR2 + WL 3,H4AE3A+FR3 + WL 3,H4AE3A+FR4 + WL 3,H4AE3A+FR5 + WL 3,H4AE3A+FR6 + WL 3,H4AE3A+FR7 + WL 3,H4AE3A+FR8 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,hrt_dizzy_anim + +; .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR hrt_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,H2AH3A+FR1 + WL 15,H2AH3A+FR2 + WL 4,H2AH3A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR hrt_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,H4AH3A+FR1 + WL 3,H4AH3A+FR2 + WL 14,H4AH3A+FR3 + WL 2,H4AH3A+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR hrt_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,H4AH3A+FR1 + WL 3,H4AH3A+FR2 + WL 14,H4AH3A+FR3 + WL 2,H4AH3A+FR5 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,hrt_dizzy_anim +; .word ANI_END + + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR hrt_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 3,H2AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,H2AM3A+FR2 + WL 3,H2AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,H2AM3A+FR4 + WL 3,H2AM3A+FR5 + WL 3,H2AM3A+FR6 + WL 3,H2AM3A+FR7 + WL 3,H2AM3A+FR8 + + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +; SUBR hrt_2_body_hit_dizzy_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; WL ANI_SET_YVEL,48000h +; WLW ANI_SET_XVEL,-30000h,AM_HIT_REL +; +; WL 3,H2AM3A+FR1 +; WL 3,H2AM3A+FR2 +; WL 3,H2AM3A+FR3 +; +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS +; +; WL 3,H2AM3A+FR4 +; WL 3,H2AM3A+FR5 +; WL 3,H2AM3A+FR6 +; WL 3,H2AM3A+FR7 +; WL 3,H2AM3A+FR8 +; +; .word ANI_SETPLYRMODE,MODE_DIZZY +; WL ANI_CHANGEANIM,hrt_dizzy_anim +; .word ANI_END + +#************ +* +* #4 BODY HIT + + SUBR hrt_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,048000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-04000h,AM_ABS + + .word ANI_DEBRIS,100,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 3,H4AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,H4AM3A+FR2 + WL 3,H4AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,H4AM3A+FR4 + WL 3,H4AM3A+FR5 + WL 3,H4AM3A+FR6 + WL 3,H4AM3A+FR7 + WL 3,H4AM3A+FR8 + + .word ANI_CHECKWORD,USR_VAR1 + WL ANI_IFNOTSTATUS,#reg + + WL 5,H4TI4B+FR1 + WL 5,H4TI4B+FR2 + WL 5,H4TI4B+FR3 + WL 5,H4TI4B+FR4 + WL 5,H4TI4B+FR5 + WL 5,H4TI4B+FR6 + WL 5,H4TI4B+FR7 + WL 5,H4TI4B+FR8 + WL 5,H4TI4B+FR7 + WL 5,H4TI4B+FR6 + WL 5,H4TI4B+FR5 + WL 5,H4TI4B+FR4 + WL 5,H4TI4B+FR3 + WL 5,H4TI4B+FR2 + +; WL 5,H4TI4B+FR1 +; WL 5,H4TI4B+FR2 +; WL 5,H4TI4B+FR3 +; WL 5,H4TI4B+FR4 +; WL 5,H4TI4B+FR5 +; WL 5,H4TI4B+FR6 +; WL 5,H4TI4B+FR7 +; WL 5,H4TI4B+FR8 +; WL 5,H4TI4B+FR7 +; WL 5,H4TI4B+FR6 + +#reg + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 3,H4AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,H4AM3A+FR2 + WL 3,H4AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,H4AM3A+FR4 + WL 3,H4AM3A+FR5 + WL 3,H4AM3A+FR6 + WL 3,H4AM3A+FR7 + WL 3,H4AM3A+FR8 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,hrt_dizzy_anim +; .word ANI_END + + + + + SUBR hrt_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,04000h,AM_ABS + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 3,H2AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,H2AM3A+FR2 + WL 3,H2AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,H2AM3A+FR4 + WL 3,H2AM3A+FR5 + WL 3,H2AM3A+FR6 + WL 3,H2AM3A+FR7 + WL 3,H2AM3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-04000h,AM_ABS + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 3,H4AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,H4AM3A+FR2 + WL 3,H4AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,H4AM3A+FR4 + WL 3,H4AM3A+FR5 + WL 3,H4AM3A+FR6 + WL 3,H4AM3A+FR7 + WL 3,H4AM3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,08000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 3,H4AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,H4AM3A+FR2 + WL 3,H4AM3A+FR3 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,H4AM3A+FR4 + WL 3,H4AM3A+FR5 + WL 3,H4AM3A+FR6 + WL 3,H4AM3A+FR7 + WL 3,H4AM3A+FR8 + + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,hrt_dizzy_anim +; .word ANI_END + + +;Being held by head, hit by a quick knee! + SUBR hrt_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,0,2 ;x,y,z + + WL 3,H2AM3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,H2AM3A+FR2 + WL 3,H2AM3A+FR3 + WL 3,H2AM3A+FR4 + + .word ANI_WAITHITGND + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,hrt_fall_back_anim +; .word ANI_END + +#nodead + .ref hrt_3_head_held_anim + + WL ANI_CHANGEANIM,hrt_3_head_held_anim + +; .word ANI_END + + + + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR hrt_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .WORD ANI_XFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL 10,H3FR3A+FR2 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,H2CP3A+FR8 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + SUBR hrt_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,39000h + + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 3,H2CP3A+FR1 + WL 3,H2CP3A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPITUP_SWEAT,SWEAT_PER,0 + WL 3,H2CP3A+FR3 + WL 3,H2CP3A+FR4 + WL 3,H2CP3A+FR5 + WL 3,H2CP3A+FR6 + WL 3,H2CP3A+FR7 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 1,H2CP3A+FR8 + SUBR hrt_liedown_anim + WL 1,H2CP3A+FR8 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + + SUBR hrt_hitonground_facedown_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + .word ANI_BOUNCE,3 + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 3,H3MS3X+FR1 + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 3,H3MS3X+FR5 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#***************************************************************************** +* +* FALL BACK + + SUBR hrt_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZERO_XZVELS + WL ANI_MIN_YVEL,60000h + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + + .word ANI_SCROLL_CTRL,HRT_TBUKLY + + .ref ckzpos + WL ANI_CODE,ckzpos + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WWL ANI_SETLONG,DEBRIS_X,[99,-10] ;Y,X of head + WL 3,H3UC3X+FR1 + + .word ANI_OFFSET,0,45,0 ;x,y,z + WWL ANI_SETLONG,DEBRIS_X,[44,-38] ;Y,X of head + WL 3,H3UC3X+FR2 + WWL ANI_SETLONG,DEBRIS_X,[38,-39] ;Y,X of head + WL 3,H3UC3X+FR3 + WWL ANI_SETLONG,DEBRIS_X,[33,-39] ;Y,X of head + WL 3,H3UC3X+FR4 + + WWL ANI_SETLONG,DEBRIS_X,[26,-39] ;Y,X of head + WL 3,H3UC3X+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,[9,-49] ;Y,X of head + WL 2,H3UC3X+FR6 + .word ANI_BOUNCE,5 + WL 2,H3UC3X+FR6 + WWL ANI_SETLONG,DEBRIS_X,[5,-49] ;Y,X of head + WL 3,H3UC3X+FR7 + WWL ANI_SETLONG,DEBRIS_X,[5,-49] ;Y,X of head + WL 3,H3UC3X+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,[5,-49] ;Y,X of head + WL 3,H3UC3X+FR9 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 3,H3UC3X+FR10 + .word ANI_XFLIP + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 1,H3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* FALL BACK + + SUBR hrt_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,20000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 3,H3UC3X+FR1 + + .word ANI_OFFSET,0,45,0 ;x,y,z + WL 3,H3UC3X+FR2 + WL 3,H3UC3X+FR3 + WL 3,H3UC3X+FR4 + + WL 3,H3UC3X+FR5 + WL 3,H3UC3X+FR6 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + + WL 3,H3UC3Z+FR1 + WL 3,H3UC3Z+FR2 + WL 3,H3UC3Z+FR3 + WL 3,H3UC3Z+FR4 + WL 3,H3UC3Z+FR5 + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL ANI_CODE,HIT_THE_MAT + .word ANI_OFFSET,-20,0,0 ;x,y,z + WL 3,H3MS3X+FR1 + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 25,H3MS3X+FR5 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR hrt_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + + WL 3,H3UC3X+FR1 + + .word ANI_OFFSET,0,45,0 ;x,y,z + WL 3,H3UC3X+FR2 + WL 3,H3UC3X+FR3 + WL 3,H3UC3X+FR4 + + WL 3,H3UC3X+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + +; .word ANI_FRICTION,3000h + + WL 2,H3UC3X+FR6 +; .word ANI_BOUNCE,5 + WL 2,H3UC3X+FR6 + WL 3,H3UC3X+FR7 + WL 3,H3UC3X+FR8 +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_ZEROVELS + WL 3,H3UC3X+FR9 + WL 3,H3UC3X+FR10 + .word ANI_XFLIP + + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 1,H3RL1A+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#***************************************************************************** +* +* FACE UP GETUP + + SUBR hrt_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + WL 2,H3GU2A+FR1 + WL 2,H3GU2A+FR2 + WL 2,H3GU2A+FR3 + WL 2,H3GU2A+FR4 + WL 2,H3GU2A+FR5 + WL 2,H3GU2A+FR6 + WL 2,H3GU2A+FR7 + WL 2,H3GU2A+FR8 + WL 2,H3GU2A+FR9 + WL 2,H3GU2A+FR10 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,11,83,70,20 + WL 1,H3GU2A+FR10 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,hrt_4_push_anim +#no_freetoss + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 2,H3GU4A+FR1 + WL 2,H3GU4A+FR2 + WL 2,H3GU4A+FR3 + WL 2,H3GU4A+FR4 + WL ANI_GOTO,#common_4 + + SUBR hrt_4_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +#common_4 + WL 2,H3GU4A+FR5 + WL 2,H3GU4A+FR6 + WL 2,H3GU4A+FR7 + WL 2,H3GU4A+FR8 + WL 2,H3GU4A+FR9 + WL 2,H3GU4A+FR10 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss1 + .word ANI_ATTACK_ON,AMODE_HITCHECK,11,83,70,20 + .ref hrt_4_push_anim + WL 1,H3GU4A+FR10 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss1 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,hrt_4_push_anim +#no_freetoss1 + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +***** +* set status bit for a getup in 4, clear for a 2. +choose_2or4 + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + + move *a13(NEW_FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #choose_2 + ori MODE_STATUS,a0 +#choose_2 + move a0,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* FACE DOWN GETUP + + SUBR hrt_facedown_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 2,H3GU4A+FR4 + WL 2,H3GU4A+FR5 + WL 2,H3GU4A+FR6 + WL 2,H3GU4A+FR7 + WL ANI_CODE,#set_wrestler_xflip + WL 2,H3GU4A+FR8 + WL 2,H3GU4A+FR9 + WL 2,H3GU4A+FR10 + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,11,83,70,20 + WL 1,H3GU4A+FR10 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,hrt_4_push_anim +#no_freetoss + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +***** +* call set_wrestler_xflip +#set_wrestler_xflip + move a13,a0 + calla set_wrestler_xflip + rets + +#***************************************************************************** +* +* DIZZY + + SUBR hrt_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + + WL 5,H4TI4B+FR1 + WL 5,H4TI4B+FR2 + WL 5,H4TI4B+FR3 + WL 5,H4TI4B+FR4 + WL 5,H4TI4B+FR5 + WL 5,H4TI4B+FR6 + WL 5,H4TI4B+FR7 + WL 5,H4TI4B+FR8 + WL 5,H4TI4B+FR7 + WL 5,H4TI4B+FR6 + WL 5,H4TI4B+FR5 + WL 5,H4TI4B+FR4 + WL 5,H4TI4B+FR3 + WL 5,H4TI4B+FR2 + + WL ANI_GOTO,#loop + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR hrt_break_neck_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + WWWL ANI_IFROPE,RC_FRONT,100,#fall_back + + ;break the neck + WL 3,H3UC3Z+FR2 + .word ANI_OFFSET,-16,0,0 + WL 3,H3UC3Z+FR3 + .word ANI_OFFSET,-18,0,0 + WL 3,H3UC3Z+FR4 + .word ANI_OFFSET,-30,0,0 + WL 3,H3UC3Z+FR5 + .word ANI_OFFSET,-28,0,0 + WL 3,H3RL1A+FR8 + .word ANI_FACEDOWN + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_facedown_getup_anim + +#fall_back + WL 6,H3UC3Z+FR2 + .word ANI_OFFSET,-8,0,0 + WL 3,H3UC3Z+FR1 + .word ANI_OFFSET,-10,0,0 + WL 3,H3UC3X+FR7 + WL 3,H3UC3X+FR8 + WL 3,H3UC3X+FR9 + WL 3,H3UC3X+FR10 + .word ANI_XFLIP + WL 3,H2CP3A+FR8 + .word ANI_FACEDOWN + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_facedown_getup_anim + + SUBR hrt_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + ;break the neck + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + .ref ckzpos + WL ANI_CODE,ckzpos + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_XFLIP + + .word ANI_OFFSET,15,0,0 + + WL 3,H3UC3Z+FR2 + .word ANI_OFFSET,-3,0,0 + WL 3,H3UC3Z+FR3 + .word ANI_OFFSET,-3,0,0 + WL 3,H3UC3Z+FR4 + WL 3,H3UC3Z+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-20,0,0 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + + WL 10,H3RL1A+FR8 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim +; .word ANI_END + + SUBR hrt_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,H4POGO+FR3 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_XFLIP + + WL 3,H3PP3X+FR7 + .word ANI_OFFSET,15,0,0 + WL 3,H3UC3Z+FR2 + .word ANI_OFFSET,-3,0,0 + WL 3,H3UC3Z+FR3 + .word ANI_OFFSET,-3,0,0 + WL 3,H3UC3Z+FR4 + WL 3,H3UC3Z+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-20,0,0 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + + WL 4,H3RL1A+FR8 ;10 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim +; .word ANI_END + + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR hrt_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,H4LB3A+FR1 + WL 3,H4LB3A+FR3 + WL 3,H4LB3A+FR4 + .REF DO_BRET_PUSH + WL ANI_CODE,DO_BRET_PUSH + WL 3,H4LB3A+FR5 + WL 3,H4LB3A+FR6 + WL 3,H4LB3A+FR9 + WL 3,H4LB3A+FR10 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR hrt_4_losebal_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,H4LB3A+FR1 + WL 3,H4LB3A+FR3 + WL 3,H4LB3A+FR4 + WL 3,H4LB3A+FR5 + WL 3,H4LB3A+FR6 + WL 3,H4LB3A+FR9 + WL 3,H4LB3A+FR10 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,hrt_dizzy_anim +; .word ANI_END + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR hrt_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,H4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,H4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,H4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,H4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,H4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,H4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,H4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,H4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + WL 1,H4ST4A+FR5 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,hrt_fall_back_anim +; .word ANI_END + +#nodead + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 2f2fh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR hrt_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL + + WL 7,H3FR3A+FR4 + WL 7,H3FR3A+FR5 + WL 7,H3FR3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_DAMAGE,D_HIPTOSS +; .word ANI_SETWORD,DELAY_METER,0 +; .word ANI_GETUP,500 + + + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_XFLIP + WL ANI_CHANGEANIM,hrt_hitonground_anim + + +#***************************************************************************** +* +* FLY OUT #2 - (hrt_hpsl) +* + + SUBR hrt_flyout2_anim + + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,48000h + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL + + WL 3,H3UC3X+FR5 + .word ANI_WAITHITGND + + ;IMPACT + WL ANI_CODE,HIT_THE_MAT + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_DAMAGE,D_HITCONCRETE + .word ANI_ZEROVELS + + .word ANI_DAMAGE,D_HIPTOSS + + WL 10,H3UC3X+FR6 + WL 3,H3UC3Z+FR1 + WL 3,H3UC3Z+FR2 + WL 3,H3UC3Z+FR3 + WL 3,H3UC3Z+FR4 + WL 3,H3UC3Z+FR5 + .word ANI_XFLIP + .word ANI_OFFSET,84,0,0 + WL 3,H3MS3X+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_hitonground_facedown_anim + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR hrt_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,H3BR3Z+FR1 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + + WL 25,H3BR3Z+FR1 + + +; WL 3,H3BR3Z+FR2 + WL 3,H3BR3Z+FR3 + .word ANI_XFLIP + WL 2,H3RL1A+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + WL 3,H3MS3X+FR1 + WL 3,H3MS3X+FR2 + WL 3,H3MS3X+FR3 + WL 3,H3MS3X+FR4 + WL 3,H3MS3X+FR5 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 1,H3RL1A+FR8 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR hrt_slamnobounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 1,H2CP3A+FR8 + WL 3,H2CP3A+FR8 + WL 3,H2CP3A+FR2 + WL 3,H2CP3A+FR3 + WL 3,H2CP3A+FR4 + WL 3,H2CP3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,H2CP3A+FR7 + WL 10,H2CP3A+FR8 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + SUBR hrt_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,H2CP3A+FR8 + WL ANI_CODE,ckzpos + WL 3,H2CP3A+FR8 + WL 3,H2CP3A+FR2 + WL 3,H2CP3A+FR3 + WL 3,H2CP3A+FR4 + WL 3,H2CP3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,H2CP3A+FR7 + WL 10,H2CP3A+FR8 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + + SUBR hrt_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 1,H3UC3Z+FR10 + .ref ckzpos + WL ANI_CODE,ckzpos + WL 10,H3UC3Z+FR10 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + WL 3,H2CP3A+FR8 + WL 3,H2CP3A+FR2 + WL 3,H2CP3A+FR3 + WL 3,H2CP3A+FR4 + WL 3,H2CP3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,H2CP3A+FR7 + WL 10,H2CP3A+FR8 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_faceup_getup_anim + +#***************************************************************************** + + SUBR hrt_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,43,0 ;x,y,z + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYD_SWEAT,SWEAT_PER,0 + WL 3,H3UC3X+FR2 + WL 3,H3UC3X+FR3 + WL 3,H3UC3X+FR4 + WL 1,H3UC3X+FR5 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,H3UC3X+FR6 + WL 3,H3UC3X+FR7 + + WL 3,H3UC3Z+FR1 + WL 3,H3UC3Z+FR2 + WL 3,H3UC3Z+FR3 + WL 3,H3UC3Z+FR4 + WL 3,H3UC3Z+FR5 + + .word ANI_ZERO_XZVELS + WL ANI_CODE,HIT_THE_MAT + + WL 8,H3RL1A+FR8 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,hrt_facedown_getup_anim + + +#***************************************************************************** + + SUBR hrt_arm_broken_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-38000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_HIT_REL + + WL ANI_CODE,DO_SCREAM + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,H4AE3A+FR1 + WL 4,H4AE3A+FR2 + WL 4,H4AE3A+FR4 + WL 5,H4AE3A+FR5 + + WL 1,H4ST4A+FR5 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,hrt_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR hrt_2_shooter_anim + + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,15 + WL 2,H1TL5A+FR3 ;2.5 + WL 2,H1TL5A+FR4 ;3.5 + + SUBR hrt_4_shooter_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_PUPPET,2 + WL 1,H4GH3Z+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET,18,0,25,18 ;mode,x,y,w,h + WL 1,H4GH3Z+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed +;got him + .word ANI_DRAW_NAME,5 + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .ref DO_NONO + WL ANI_CODE,DO_NONO + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; .word ANI_SHAKER,30 + WL ANI_CODE,impact_sound + + WWLLW ANI_SUPERSLAVE2,1,H4GH3Z+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,H4ZZ4C+FR2,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,H4ZZ4C+FR3,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,3,H4ZZ4C+FR4,#puppet_tbl,8 + + .ref MAKE_HIM_SCREAM + WL ANI_CODE,MAKE_HIM_SCREAM + .word ANI_DAMAGEOPP,D_SHOOTER,RD_SHOOTER + WWLLW ANI_SUPERSLAVE2,3,H4ZZ4C+FR5,#puppet_tbl,9 + WWLLW ANI_SUPERSLAVE2,3,H4ZZ4C+FR6,#puppet_tbl,10 + + WWLLW ANI_SUPERSLAVE2,15,H4ZZ4B+FR2,#puppet_tbl,11 + .word ANI_SOUND,9bh ;neck break (5-7 ticks late) + .word ANI_DAMAGEOPP,D_SHOOTER,RD_SHOOTER + WWLLW ANI_SUPERSLAVE2,15,H4ZZ4B+FR3,#puppet_tbl,12 + WWLLW ANI_SUPERSLAVE2,4,H4ZZ4B+FR2,#puppet_tbl,11 + .word ANI_DEBRISAT,100,1,0,8,0 ;%chance,tbl index,x,y,z off + .word ANI_SOUND,98h ;neck break (5-7 ticks late) + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#fail + .word ANI_CLR_BUTCOUNT + + .word ANI_DAMAGEOPP,D_SHOOTER,RD_SHOOTER + WL ANI_CODE,MAKE_HIM_SCREAM + WWLLW ANI_SUPERSLAVE2,20,H4ZZ4B+FR3,#puppet_tbl,12 + WWLLW ANI_SUPERSLAVE2,15,H4ZZ4B+FR2,#puppet_tbl,11 + .word ANI_SOUND,98h ;neck break (5-7 ticks late) + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#fail + .word ANI_CLR_BUTCOUNT + + .word ANI_DAMAGEOPP,D_SHOOTER,RD_SHOOTER + WWLLW ANI_SUPERSLAVE2,14,H4ZZ4B+FR3,#puppet_tbl,12 + WWLLW ANI_SUPERSLAVE2,20,H4ZZ4B+FR2,#puppet_tbl,11 + .word ANI_SOUND,9bh ;neck break (5-7 ticks late) + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#fail + .word ANI_CLR_BUTCOUNT + + .word ANI_DAMAGEOPP,D_SHOOTER,RD_SHOOTER + WWLLW ANI_SUPERSLAVE2,20,H4ZZ4B+FR3,#puppet_tbl,12 + WWLLW ANI_SUPERSLAVE2,9,H4ZZ4B+FR2,#puppet_tbl,11 + .word ANI_SOUND,98h ;neck break (5-7 ticks late) + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#fail + .word ANI_CLR_BUTCOUNT + + .word ANI_DAMAGEOPP,D_SHOOTER,RD_SHOOTER + WWLLW ANI_SUPERSLAVE2,9,H4ZZ4B+FR3,#puppet_tbl,12 + WL ANI_CODE,MAKE_HIM_SCREAM + WWLLW ANI_SUPERSLAVE2,20,H4ZZ4B+FR2,#puppet_tbl,11 + .word ANI_SOUND,98h ;neck break (5-7 ticks late) +#fail + .word ANI_DAMAGEOPP,D_SHOOTER,RD_SHOOTER + .word ANI_DEBRISAT,100,1,0,8,0 ;%chance,tbl index,x,y,z off + + WWLLW ANI_SUPERSLAVE2,3,H4ZZ4C+FR6,#puppet_tbl,10 + WWLLW ANI_SUPERSLAVE2,3,H4ZZ4C+FR5,#puppet_tbl,9 + WWLLW ANI_SUPERSLAVE2,3,H4ZZ4C+FR4,#puppet_tbl,8 + +; WWLLW ANI_SUPERSLAVE2,3,H4ZZ4C+FR3,#puppet_tbl,7 +; WWLLW ANI_SUPERSLAVE2,3,H4ZZ4C+FR2,#puppet_tbl,6 +; WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR6,#puppet_tbl,5 +; WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR5,#puppet_tbl,4 +; WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR4,#puppet_tbl,3 +; WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR3,#puppet_tbl,2 +; WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR2,#puppet_tbl,1 +; WWLLW ANI_SUPERSLAVE2,3,H4GH3Z+FR1,#puppet_tbl,0 + + + .ref hitonground_tbl + WL ANI_SLAVEANIM,hitonground_tbl + .word ANI_DETACH + + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,30000h,AM_ABS + WLW ANI_SET_XVEL,-28000h,AM_ABS + + WL 4,H4ZZ4C+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETFACING + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL 4,H4GH3Z+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBRP impact_sound + + move *a13(ATTACH_PROC),a0,L + jrz #x + WRSNDX a0,RUGSLAM_YELL,RUGSLAM_IMPACT +#x rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3RL1A+FR1,19,-76,1 + LWWW H3RL1A+FR3,26,-42,1 + LWWW H3RL1A+FR4,24,-29,1 + LWWW H3RL1A+FR5,27,-33,1 + LWWW H3RL1A+FR6,27,-45,1 + LWWW H3ZS3A+FR1,54,-31,1 + LWWW H3ZS3A+FR1,49,-47,1 + LWWW H3ZS3A+FR1,37,-46,1 + LWWW H3ZS3A+FR1,6,-45,1 + LWWW H3ZS3A+FR2,10,-23,1 + LWWW H3ZS3A+FR2,3,-19,1 + LWWW H3ZS3A+FR2,2,-14,1 + LWWW H3ZS3A+FR3,-10,-18,1 + .long 0 +#Razor + LWWW R3RL1B+FR11,19,-79,1 + LWWW R3RL1B+FR10,28,-46,1 + LWWW R3RL1B+FR9,32,-28,1 + LWWW R3RL1B+FR8,32,-29,1 + LWWW R3RL1B+FR7,28,-47,1 + LWWW R3ZS3C+FR1,50,-34,1 + LWWW R3ZS3C+FR1,47,-50,1 + LWWW R3ZS3C+FR1,34,-49,1 + LWWW R3ZS3C+FR1,3,-48,1 + LWWW R3ZS3C+FR2,-9,-21,1 + LWWW R3ZS3C+FR2,-18,-17,1 + LWWW R3ZS3C+FR2,-15,-12,1 + LWWW R3ZS3C+FR3,-3,-8,1 + .long 0 +#Taker + LWWW U3CR3A+FR1,23,-73,1 + LWWW U3CR3A+FR3,25,-41,1 + LWWW U3CR3A+FR4,31,-24,1 + LWWW U3CR3A+FR5,31,-28,1 + LWWW U3CR3A+FR6,33,-46,1 + LWWW U3ZS3B+FR1,48,-38,1 + LWWW U3ZS3B+FR1,42,-54,1 + LWWW U3ZS3B+FR1,28,-53,1 + LWWW U3ZS3B+FR2,13,-22,1 + LWWW U3ZS3B+FR2,-9,-16,1 + LWWW U3ZS3B+FR2,-16,-12,1 + LWWW U3ZS3B+FR2,-14,-7,1 + LWWW U3ZS3B+FR3,-5,-9,1 + .long 0 +#Yokozuna + LWWW Y3RL1A+FR1,24,-65,1 + LWWW Y3RL1A+FR10,30,-35,1 + LWWW Y3RL1A+FR9,21,-24,1 + LWWW Y3RL1A+FR8,21,-30,1 + LWWW Y3RL1A+FR7,19,-43,1 + LWWW Y3ZS3A+FR1,36,-45,1 + LWWW Y3ZS3A+FR1,33,-61,1 + LWWW Y3ZS3A+FR1,21,-60,1 + LWWW Y3ZS3A+FR2,13,-28,1 + LWWW Y3ZS3A+FR2,-7,-22,1 + LWWW Y3ZS3A+FR2,-15,-18,1 + LWWW Y3ZS3A+FR2,-14,-13,1 + LWWW Y3ZS3A+FR3,-11,-2,1 + .long 0 +#Shawn + LWWW S3CP3B+FR7,27,-78,1 + LWWW S3RL3A+FR9,30,-32,1 + LWWW S3RL3A+FR8,30,-24,1 + LWWW S3RL3A+FR7,29,-33,1 + LWWW S3RL3A+FR6,32,-48,1 + LWWW S3ZS3A+FR1,45,-38,1 + LWWW S3ZS3A+FR1,39,-54,1 + LWWW S3ZS3A+FR1,25,-53,1 + LWWW S3ZS3A+FR2,1,-35,1 + LWWW S3ZS3A+FR2,-18,-29,1 + LWWW S3ZS3A+FR2,-22,-25,1 + LWWW S3ZS3A+FR2,-20,-20,1 + LWWW S3ZS3A+FR3,-8,-13,1 + .long 0 +#BamBam + LWWW B3RL1A+FR1,28,-69,1 + LWWW B3RL1A+FR11,30,-33,1 + LWWW B3RL1A+FR10,30,-19,1 + LWWW B3RL1A+FR9,26,-20,1 + LWWW B3RL1A+FR8,28,-40,1 + LWWW B3ZS3A+FR1,48,-39,1 + LWWW B3ZS3A+FR1,43,-55,1 + LWWW B3ZS3A+FR1,31,-54,1 + LWWW B3ZS3A+FR1,0,-53,1 + LWWW B3ZS3A+FR2,-6,-20,1 + LWWW B3ZS3A+FR2,-13,-16,1 + LWWW B3ZS3A+FR2,-14,-11,1 + LWWW B3ZS3A+FR3,-5,-5,1 + .long 0 +#Doink + LWWW D3GU4A+FR1,34,-80,1 + LWWW D3RL1B+FR11,35,-42,1 + LWWW D3RL1B+FR10,36,-27,1 + LWWW D3RL1B+FR9,35,-34,1 + LWWW D3RL1B+FR8,34,-42,1 + LWWW D3ZS3A+FR1,41,-47,1 + LWWW D3ZS3A+FR1,35,-63,1 + LWWW D3ZS3A+FR1,21,-62,1 + LWWW D3ZS3A+FR2,5,-27,1 + LWWW D3ZS3A+FR2,-14,-21,1 + LWWW D3ZS3A+FR2,-18,-17,1 + LWWW D3ZS3A+FR2,-16,-12,1 + LWWW D3ZS3A+FR3,-10,-15,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3RL1A+FR11,18,-74,1 + LWWW L3RL1A+FR1,25,-42,1 + LWWW L3RL1A+FR2,24,-29,1 + LWWW L3RL1A+FR3,19,-33,1 + LWWW L3RL1A+FR4,19,-48,1 + LWWW L3ZS3A+FR1,47,-26,1 + LWWW L3ZS3A+FR1,44,-42,1 + LWWW L3ZS3A+FR1,32,-41,1 + LWWW L3ZS3A+FR1,-1,-40,1 + LWWW L3ZS3A+FR2,-12,-25,1 + LWWW L3ZS3A+FR2,-20,-21,1 + LWWW L3ZS3A+FR2,-19,-16,1 + LWWW L3ZS3A+FR3,-5,-8,1 + .long 0 +; +;#release_tbl +; .long hrt_hitonground_anim,rzr_hitonground_anim +; .long und_hitonground_anim,yok_hitonground_anim +; .long shn_hitonground_anim,bam_hitonground_anim +; .long dnk_hitonground_anim,0,lex_hitonground_anim + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/HSTD.ASM b/HSTD.ASM new file mode 100755 index 0000000..4ac5f9b --- /dev/null +++ b/HSTD.ASM @@ -0,0 +1,4339 @@ +*************************************************************** +* +* Software: LARRY DeMAR, EUGENE JARVIS +* Modified: Shawn Liptak 8/6/91 - Multi color fonts +* Jason Skiles 12/14/93 - Use STRING.ASM calls +* Jason Skiles 1/17/94 - Hold most recent index in CMOS +* +* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 1/17/94 11:59 +**************************************************************** + + .file "hstd.asm" + .title "robo high-score-to-date management" + .width 132 + .option b,d,l,t + .mnolist + + .include "audit.equ" + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "game.equ" + .include "link.equ" + .include "macros.h" + .include "plyr.equ" + .include "gsp.equ" + + .include "crowdimg.glo" + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + .include "ropeimg.glo" + .include "sound.h" + + .TEXT + +; - confine cursor to end and del once all inits are in + +* IN THIS MODULE + + + .DEF GET_HSCR + .DEF RC_BYTEI + .DEF RC_BYTE + .DEF RC_WORD + .DEF RC_LONG + .DEF RC_LONGI + .DEF WC_BYTE + .DEF WC_BYTEI + .DEF WC_WORD + .DEF WC_WORDI + .DEF WC_LONG + .DEF WC_LONGI + .DEF PT_ENTRY + .DEF INIT_TB + .DEF INIT_TAB ;GEORGES POWER UP ENTRY + .DEF P_FORK + .DEF VAL_TAB + .DEF ROM_PTRS + .DEF BEATEN_TAB_ENTRIES + .DEF INTER_TAB_ENTRIES + .DEF TAG_TAB_ENTRIES + + .DEF INTER_TAB + .DEF TAG_TAB + + .DEF STREAK_TAB + .DEF BEATEN_TAB + .DEF DO_BEATEN_GAME +; .DEF ISHSTD,GETINIT,GETINIT1,GETINIT2,INITTIM + .DEF SET_PAGE +; .DEF A2_CHECK + .DEF DEC_HSR,INIT_HSR,GET_HSC + .def not_blank + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref ADD_VOICE,message_palette,get_but_val_down,dec_to_asc + .ref dec_to_asc_new_entry,MATCH_TIMERS,civanic,GET_ADJ + .ref which_player,mess_z,ANIM_CROWD,DEF_PAGE,print_message + .ref message_buffer,howard_wins,GET_AUD,RNDRNG0,mess_line_spacing + .ref pal_getf,AUD,BEGINOBJ_TBL,print_string_C2,SHADOW01 + .ref SHADOW02,mess_space_width,SPEAR,mess_objid,print_string_R + .ref BINBCD,message_ascii,get_stick_val_cur,p1oldwinstreak + .ref mess_spacing,mess_cursx,print_string,mess_cursy + .ref print_string_with_z,setup_message,KILL_AUD,osgemd_ascii + .ref get_stick_val_down,setup_back_anim,font9_ascii,CYCLE_TABLE + .ref BCDBIN,copy_string,IGNORE_CHAR_WIDTH,message_buffer2 + .ref triple_sound,change_image,digits_tbl,wsf14_ascii + .ref p2oldwinstreak,print_string2,current_round + .ref mess_cursx2,font9A_ascii + .ref font18_ascii + .ref print_string_C,belt_type + .if 0 + .ref prog_specials,are_special_inits + .endif + + +****************************************************************************** + + .TEXT + +;Sound headers + +BEEPSND .WORD >F3FE,>10,>80A2,0 ;LOW BEEP + + + BSSX starting_num,16 + BSSX entered_inits, (8*6)*2 +; .bss entered_message, (16*4)*2 + .bss last_hscore_ndx, 16 + .bss last_streak_ndx, 16 + .bss not_blank,16 + BSSX auto_init,16 + +************************************************************************** +* +* HIGH SCORE TABLE DEFINITIONS +* +************************************************************************** + +STREAK_TABLE_VISIBLE equ 18 +PIN_SPEED_TAB_VISIBLE equ 9 +BEATEN_TAB_VISIBLE equ 30 +INTER_TAB_VISIBLE equ 30 +TAG_TAB_VISIBLE EQU 18 + +STREAK_TAB + .LONG STREAK_TABLE_ORIGIN ;LOCATION OF TABLE + .WORD STREAK_TABLE_ENTRIES-1 ;NUMBER IN THE TABLE (DON'T COUNT ZERO FILLER) + .WORD STREAK_TABLE_VISIBLE ;unused? + .WORD STREAK_TABLE_SELECT ;BITS TO SELECT IT + .LONG STREAK_ROM_TABLE ;ROM IMAGE OF TABLE + .WORD STREAK_TABLE_ENTRIES/5 ;RESET TABLE IF 1/5 OR MORE BAD + + SUBR PIN_SPEED_TAB + .LONG PIN_SPEED_TAB_ORIGIN ;LOCATION OF TABLE + .WORD PIN_SPEED_TAB_ENTRIES-1 ;NUMBER IN THE TABLE (DON'T COUNT ZERO FILLER) + .WORD PIN_SPEED_TAB_VISIBLE ;unused ? + .WORD PIN_SPEED_TAB_SELECT ;BITS TO SELECT IT + .LONG PIN_SPEED_TAB_ROM_TABLE ;ROM IMAGE OF TABLE + .WORD PIN_SPEED_TAB_ENTRIES/5 ;RESET TABLE IF 1/5 OR MORE BAD + + +BEATEN_TAB + .LONG BEATEN_TAB_ORIGIN ;LOCATION OF TABLE + .WORD BEATEN_TAB_ENTRIES-1 ;NUMBER IN THE TABLE (DON'T COUNT ZERO FILLER) + .WORD BEATEN_TAB_VISIBLE ;unused? + .WORD BEATEN_TAB_SELECT ;BITS TO SELECT IT + .LONG BEATEN_ROM_TABLE ;ROM IMAGE OF TABLE + .WORD BEATEN_TAB_ENTRIES/5 ;RESET TABLE IF 1/5 OR MORE BAD + +INTER_TAB + .LONG INTER_TAB_ORIGIN ;LOCATION OF TABLE + .WORD INTER_TAB_ENTRIES-1 ;NUMBER IN THE TABLE (DON'T COUNT ZERO FILLER) + .WORD INTER_TAB_VISIBLE ;unused? + .WORD INTER_TAB_SELECT ;BITS TO SELECT IT + .LONG INTER_ROM_TABLE ;ROM IMAGE OF TABLE + .WORD INTER_TAB_ENTRIES/5 ;RESET TABLE IF 1/5 OR MORE BAD + +TAG_TAB + .LONG TAG_TAB_ORIGIN ;LOCATION OF TABLE + .WORD TAG_TAB_ENTRIES-1 ;NUMBER IN THE TABLE (DON'T COUNT ZERO FILLER) + .WORD TAG_TAB_VISIBLE ;unused? + .WORD TAG_TAB_SELECT ;BITS TO SELECT IT + .LONG TAG_ROM_TABLE ;ROM IMAGE OF TABLE + .WORD TAG_TAB_ENTRIES/5 ;RESET TABLE IF 1/5 OR MORE BAD + + +P_FORK + MMTM SP,A1 + MOVE *A13(PROCID),A1 ;PASS OUR ID TO FORKED PROCESS + CALLA GETPRC ;MAKE THE PROCESS + MMFM SP,A1 + RETS + +************************************************************************** +* +* AUTO HIGH SCORE TABLE RESET HANDLING +* +************************************************************************** +* +* DEC_HSR +* +* THIS IS CALLED WITH EACH START OR CONTINUE FOR +* A PLAYER. IT REMOVES 1 FROM THE HSTD COUNTER UNLESS +* ITS ALREADY SITTING AT ZERO. +* +************************************************************************** +DEC_HSR + MMTM SP,A0 + CALLR GET_HSC ;THIS IS EASY...GET THE COUNTER + JRZ DECHX ;ITS ZERO....NO ACTION. + DEC A0 ;REMOVE A TICK + CALLR PUT_HSC ;PUT IT BACK JAK +DECHX MMFM SP,A0 + RETS + +************************************************************************** +* +* DELAY_HSRESET +* +* THIS IS CALLED WHEN A NEW ENTRY IS MADE IN THE ALL TIME +* HIGH SCORE TABLE. IF WE'RE CLOSE TO A HIGH SCORE +* RESET, WE PUT IT OFF AWHILE SO HE CAN SHOW HIS FRIENDS +* FOR A FEW DAYS. +* +************************************************************************** +HS_MIN EQU 750 ;ALWAYS 750 PLAYS BEFORE REMOVING A FRESH +* ;NAME. +DELAY_HSRESET: + MMTM SP,A0 + CALLR GET_HSC ;THIS IS EASY...GET THE COUNTER + CMPI HS_MIN,A0 ;IS IT TOO LOW + JRHS DHX ;NOPE...NO ACTION + + MOVI HS_MIN,A0 ;STOP THE RESET! + CALLR PUT_HSC ;THIS MANY PLAYS TILL RESET! +DHX: + MMFM SP,A0 + RETS + +************************************************************************** +* +* INIT_HSR +* +* THIS IS CALLED TO INITIALIZE THE HIGH SCORE RESET +* COUNTER TO ITS ADJUSTED VALUE. +* +************************************************************************** +INIT_HSR + MMTM SP,A0 + MOVI ADJHSRES,A0 + CALLA GET_ADJ ;GET THE ADJUSTED VALUE + CALLR PUT_HSC ;SET IT TO THIS VALUE + MMFM SP,A0 + RETS + +************************************************************************** +* +* PUT_HSC +* +* THIS IS CALLED TO SET THE HIGH SCORE RESET COUNTER +* TO THE VALUE IN A0. +* +************************************************************************** +PUT_HSC + MMTM SP,A7,A0 + CALLR HSR_PAGE ;HIGH SCORE PAGE + + MOVI HRESET_COUNTER,A7 ;POINT AT + CALLR WC_LONGI ;WRITE OUR PARAMETER + NOT A0 ;NEGATE IT. + CALLR WC_LONG ;AND WRITE IN SUBSEQUENT SPOT. + CALLA DEF_PAGE ;FLIP PAGE + MMFM SP,A7,A0 ;AND RETURN + RETS + +************************************************************************** +* +* GET_HSC +* +* THIS IS CALLED TO FETCH THE HIGH SCORE COUNTER IN A0. +* IF IT IS INVALID, IT WILL IMMEDIATELY BE RESET TO THE +* ADJUSTED VALUE AND THIS IS WHAT WILL BE RETURNED +* IN A0. Z set if 0 +* +************************************************************************** +GET_HSC + MMTM SP,A7,A1 + CALLR HSR_PAGE ;POINT PAGE AT HSR + + MOVI HRESET_COUNTER,A7 ;POINT AT + CALLR RC_LONGI ;READ THE VALUE + MOVE A0,A1 ;STASH IT + CALLR RC_LONG ;READ VERIFIER + NOT A0 ;SEE IF ITS VALID + CMP A0,A1 + JRZ GET_HSCX ;IT IS....RETURN IT. + + CALLR INIT_HSR ;REFRESH IT WITH FACTORY VALUE +* +* NOW RETURN THE FACTORY VALUE IN CASE IT DIDN'T TAKE +* + MOVI ADJHSRES,A0 + CALLA GET_ADJ ;GET THE ADJUSTED VALUE + +GET_HSCX + CALLA DEF_PAGE ;FLIP PAGE AWAY FROM US + MOVE A0,A0 ;SET Z FLAG BASED ON COUNTER + MMFM SP,A7,A1 + RETS + +HSR_PAGE + MMTM SP,A1 + MOVI HSR_SELECT,A1 + CALLR SET_PAGE + MMFM SP,A1 + RETS + +#********************************************************************* +* Check validity of high score and win streak tables. +* + + SUBR table_cmos_check + + movi PIN_SPEED_TAB,a8 + callr VAL_TAB + movi STREAK_TAB,a8 + callr VAL_TAB + + movi BEATEN_TAB,a8 + callr VAL_TAB + + movi INTER_TAB,a8 + callr VAL_TAB + + movi TAG_TAB,a8 + callr VAL_TAB + rets + +#********************************************************************* +* Display high score table +* + + SUBR print_inter + + push a5 + movi #hscore_mes2,a2 + calla print_message + + MOVI [10,0],A0 + MOVI [21,0],A1 + + movi MVEBAR_R,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [13,0],A0 + MOVI [21+9,0],A1 + + movi SHADOW01,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + CREATE FLASH_PID,JUDDER_SHADOW + + pull a9 + move a9,@starting_num + movi HS_SIZE,a7 + mpyu a7,a9 + addi INTER_TAB_ORIGIN,a9 + move a9,a8 + + movi 3,a7 ;draw 3 + + movi [51-9,8],a9 + movi [58+5,10],a10 + +#loop + movi GOLD,a11 + movi AUD_INTER,A0 + calla GET_AUD + MOVE @starting_num,A5 + cmp a1,a5 + jrne #gold + movi BLUE,a11 +#gold + PUSH a3,a7,a8,a9,a10,a11 + movi INTER_TAB_SELECT,a1 ;set the read page + callr SET_PAGE + movi special_copy,a5 + callr draw_beaten_table_entry + PULL a3,a7,a8,a9,a10,a11 + + move @starting_num,a5 + inc a5 + move a5,@starting_num + + dec a7 + jrz #done + + addi HS_SIZE,a8 + addi [46h,0],a9 + addi [46h,0],a10 + jruc #loop +#done + callr hscore_colcyc + callr hscore_colcyc2 + RETP + +#hscore_mes2 + JAM_STR osgemd_ascii,10,0,200,10,BLUE,print_string_C2 + .byte "INTERCONTINENTAL CHAMPS",0,0 + .even + + +#********************** + + SUBR print_beaten + + push a5 + movi #hscore_mes,a2 + calla print_message + + MOVI [10,0],A0 + MOVI [21,0],A1 + + movi MVEBAR_R,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [13,0],A0 + MOVI [21+9,0],A1 + + movi SHADOW01,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + CREATE FLASH_PID,JUDDER_SHADOW + + pull a9 + move a9,@starting_num + movi HS_SIZE,a7 + mpyu a7,a9 + addi BEATEN_TAB_ORIGIN,a9 + move a9,a8 + + movi 3,a7 ;draw 3 + + movi [51-9,8],a9 + movi [58+5,10],a10 + +#loop + movi GOLD,a11 + movi AUD_BEATEN,A0 + calla GET_AUD + MOVE @starting_num,A5 + cmp a1,a5 + jrne #gold + movi BLUE,a11 +#gold + PUSH a3,a7,a8,a9,a10,a11 + movi BEATEN_TAB_SELECT,a1 ;set the read page + callr SET_PAGE + movi special_copy,a5 + callr draw_beaten_table_entry + PULL a3,a7,a8,a9,a10,a11 + + move @starting_num,a5 + inc a5 + move a5,@starting_num + + dec a7 + jrz #done + + addi HS_SIZE,a8 + addi [46h,0],a9 + addi [46h,0],a10 + jruc #loop +#done +; callr hscore_colcyc +; callr hscore_colcyc2 + RETP + + SUBR JUDDER_SHADOW + MOVI SHADOW_ANIM,A1 + calla setup_back_anim + JSRP ANIM_CROWD + DIE + +CANI_GOTO equ 0 + 8000h + +SHADOW_ANIM + WL 1,SHADOW02 + WL 1,SHADOW01 + WL CANI_GOTO,SHADOW_ANIM + +#hscore_mes + JAM_STR osgemd_ascii,10,0,200,10,BLUE,print_string_C2 + .byte "WORLD CHAMPIONS",0,0 + .even + + + SUBR STOP_ALL_OBJS + MOVI OBJLST,A8 + CLR A1 + JRUC DO_EACH_OBJ_STOP +STOP_THIS_OBJ + MOVE A1,*A8(OYVEL),L +DO_EACH_OBJ_STOP + MOVE *A8,A8,L + JRNZ STOP_THIS_OBJ + RETS + + SUBR MOVE_ALL_OBJS_UP + MOVI OBJLST,A8 + MOVI RUBYPAL,A0 + CALLA pal_getf + MOVI [-2,0],A1 + JRUC DO_EACH_OBJ +MOVE_THIS_OBJ_UP + MOVE *A8(OPAL),A2 + CMP A2,A0 + JREQ DO_EACH_OBJ + MOVE *A8(OZPOS),A2 + CMPI 1798H,A2 + JRGT DO_EACH_OBJ + MOVE A1,*A8(OYVEL),L +DO_EACH_OBJ + MOVE *A8,A8,L + JRNZ MOVE_THIS_OBJ_UP + RETS + + SUBR DELETE_ANY_OFF_TOP + MOVI OBJLST,A8 + MOVI [-30,0],A3 + JRUC DO_EACH_OBJ_NEXT +DELETE_OR_NOT + MOVE *A8(OYVAL),A2,L + CMP A3,A2 + JRGT DO_EACH_OBJ_NEXT + MOVE *A8,A9,L + CALLA DELOBJA8 + MOVE A9,A8 + JRNZ DELETE_OR_NOT + RETS +DO_EACH_OBJ_NEXT + MOVE *A8,A8,L + JRNZ DELETE_OR_NOT + RETS + + +#********************************************************************* +* Display high score table +* + + SUBR print_tag + + movi tag_mes,a2 + calla print_message + + MOVI [10,0],A0 + MOVI [21,0],A1 + + movi MVEBAR_R,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [13,0],A0 + MOVI [21+9,0],A1 + + movi SHADOW01,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + movi FLASH_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + + CREATE FLASH_PID,JUDDER_SHADOW + + movi 9,a7 ;draw 9 + movk 1,a3 + + movi TAG_TAB_ORIGIN+HS_SIZE,a8 + movi [40,8],a9 + movi [38,64+8],a10 + +#loop + movi GOLD,a11 + movi AUD_TAG,A0 + calla GET_AUD + addk 1,a1 + srl 1,a1 + CMP a1,A3 + jrne #notblue + movi BLUE,a11 +#notblue + PUSH A3,a7,a8,a9,a10,a11 + movi TAG_TAB_SELECT,a1 ;set the read page + callr SET_PAGE + movi special_copy,a5 + movi SEC,a2 + MOVI [118H,0],a1 + MOVI 0110H,A6 + callr draw_tag_table_entry + PULL A3,a7,a8,a9,a10,a11 + + INC A3 + dec a7 + jrz #done + + addi HS_SIZE*2,a8 + addi [23,0],a9 + addi [23,0],a10 + jruc #loop + +#done + RETP + +tag_mes + JAM_STR osgemd_ascii,10,0,200,10,BLUE,print_string_C2 + .byte "TAG TEAM CHAMPIONS",0,0 + .even + +#********************************************************************* +* Display high score table +* + + SUBR print_hscores + + movi #hscore_mes,a2 + calla print_message + + + MOVI [10,0],A0 + MOVI [21,0],A1 + + movi MVEBAR_R,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [13,0],A0 + MOVI [21+9,0],A1 + + movi SHADOW01,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + movi FLASH_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + + CREATE FLASH_PID,JUDDER_SHADOW + + + movi 9,a7 ;draw 9 + movk 1,a3 + + movi PIN_SPEED_TAB_ORIGIN+HS_SIZE,a8 + movi [40,8],a9 + movi [38,64+8],a10 + +#loop + movi GOLD,a11 + movi AUD_PINSPEED,A0 + calla GET_AUD + CMP a1,A3 + jrne #notblue + movi BLUE,a11 +#notblue + PUSH A3,a7,a8,a9,a10,a11 + movi PIN_SPEED_TAB_SELECT,a1 ;set the read page + callr SET_PAGE + movi special_copy,a5 + movi SEC,a2 + MOVI [82H,0],a1 + MOVI 120,A6 + callr draw_pinspeed_table_entry + PULL A3,a7,a8,a9,a10,a11 + + INC A3 + dec a7 + jrz #done + + addi HS_SIZE,a8 + addi [23,0],a9 + addi [23,0],a10 + jruc #loop + +#done + RETP + +#hscore_mes + JAM_STR osgemd_ascii,10,0,200,10,BLUE,print_string_C2 + .byte "FASTEST PINDOWN TIMES",0,0 + .even + + +#********************************************************************* +* Display win streaks table +* + + SUBR print_winstreaks + + movi #streak_mes,a2 + calla print_message + + MOVI [10,0],A0 + MOVI [21,0],A1 + + movi MVEBAR_R,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + MOVI [13,0],A0 + MOVI [21+9,0],A1 + + movi SHADOW01,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + + movi FLASH_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + + CREATE FLASH_PID,JUDDER_SHADOW + + movi 18,a7 ;draw 18 + MOVK 1,A3 +; clr a3 + + movi STREAK_TABLE_ORIGIN+HS_SIZE,a8 + movi [40,8],a9 + movi [38,44],a10 + +#loop + movi GOLD,a11 + movi AUD_WINSTREAK,A0 + calla GET_AUD + cmp a1,a3 + jrne #gold + movi BLUE,a11 +#gold + PUSH A3,a7,a8,a9,a10,a11 + movi STREAK_TABLE_SELECT,a1 + callr SET_PAGE + movi copy_string,a5 + MOVI [6aH,0],a1 + movi WINS,a2 + MOVI 80,A6 + callr draw_winstreak_table_entry + PULL A3,a7,a8,a9,a10,a11 + INC A3 + dec a7 + jrz #done + cmpi 9,a7 + jreq reset_position + + addi HS_SIZE,a8 + addi [23,0],a9 + addi [23,0],a10 + jruc #loop + +reset_position + addi HS_SIZE,a8 + movi [40,208+5],a9 + movi [38,244+5],a10 + jruc #loop + +#done + RETP + + +#streak_mes + JAM_STR osgemd_ascii,10,0,200,10,BLUE,print_string_C2 + .byte "LONGEST WINNING STREAKS",0,0 + .even + +special_copy + movi message_buffer,a2 + movi message_buffer2,a3 + move *a3+,*a2+ + movi ".",a1 + movb a1,*a2 + addi 8,a2 + movb *a3,*a2 + addi 8,a2 + addi 16,a3 + clr a1 + movb a1,*a2 + MOVK 15,A0 + move a0,@mess_spacing + MOVK 1,A0 + MOVE A0,@IGNORE_CHAR_WIDTH + rets + + .bss work_buffer,8*10 + +#********************************************* +* + SUBRP strip_white + PUSH a0,a1,a2 + movi work_buffer,a0 ; Pointer to work buffer + subk 1,a3 + sll 3,a3 ; Set pointer to end of buffer + move a3,a1 + addi work_buffer,a1 +#ff_loop + movb *a0,a2 ; Get char + cmpi 20h,a2 ; Is it a space ? + jrnz #first_found ; br = no + move a2,a2 ; Is it 0 ? + jrz #first_found ; br = yes + addk 8,a0 ; Increment front pointer + jruc #ff_loop ; Go check next char + +#first_found +#fl_loop + movb *a1,a2 ; Get char + move a2,a2 ; Is it 0 ? + jrz #get_prev + cmpi 20h,a2 ; Is it a space ? + jrnz #last_found ; br = yes +#get_prev + cmpi work_buffer,a1 ; Are we at beginning ? + jrz #last_found ; br = yes + subk 8,a1 ; Decrement pointer + jruc #fl_loop ; Go check previous char + +#last_found + addk 8,a1 + movi message_buffer,a2 ; Where we are gonna put it + cmp a0,a1 ; back pointer > front pointer ? + jrgt #copy_loop ; br = yes + movi work_buffer,a0 ; reset front pointer + move a3,a1 + addi work_buffer,a1 +#copy_loop + movb *a0,a14 ; Get char + movb a14,*a2 ; Write to message buffer + addk 8,a0 ; Increment front pointer + cmp a0,a1 ; front = back ? + jrz #copy_done ; br = yes + addk 8,a2 ; Increment dest pointer + jruc #copy_loop ; Go do next char + +#copy_done + addk 8,a2 ; Increment dest pointer + clr a1 ; NULL terminate the string + move a1,*a2 + + PULL a0,a1,a2 + rets + +#******************************* +* Display a table entry (initials and score) +* >a8=*entry, a9=[Y,Xleft] of initials, a10=[Y,Xright] of score, a11=pal +* >a0=draw high score message? (0|1) + + SUBRP draw_tag_table_entry + PUSH A7 + + push a8 + PUSH A5 + PUSH A6 + move a10,a0 + sll 16,a0 + ADD A1,A0 + move a10,a1 + srl 16,a1 + sll 16,a1 + addi [4,0],a1 + movi 1000H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + PULL A6 + PULL A5 + pull a8 + + move a8,a7 + callr RC_LONG ;read the score + calla BCDBIN + callr val_to_dec_tenths_asc + + movk 2,a0 + move a0,@mess_spacing + CLR A0 + MOVE A0,@IGNORE_CHAR_WIDTH + movi font18_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + move a10,a0 + sll 16,a0 + srl 16,a0 + add A6,a0 + move a0,@mess_cursx + move a10,a0 + srl 16,a0 + move a0,@mess_cursy + movi WGSF_W_P1,a0 + move a0,@message_palette,L + calla print_string_R + + ;initials + movi work_buffer,a1 + move a8,a7 + addi HS_INITS,a7 + movi 5,a2 + +#initloop + callr RC_BYTEI + movb a0,*a1 + addk 8,a1 + dsj a2,#initloop + + movk 5,a3 + callr strip_white + + clr a0 ;null-terminate it + movb a0,*a1 + + movi osgemd_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a10,a0 + sll 16,a0 + srl 16,a0 + addk 30,a0 + move a0,@mess_cursx + move a10,a0 + srl 16,a0 + move a0,@mess_cursy + move a11,@message_palette,L + calla print_string_C + + + push a8 + move a10,a0 + sll 16,a0 + addi [52h,0],a0 + + move a10,a1 + srl 16,a1 + sll 16,a1 + + move a11,b0 + movi OSGEMD_AND,a2 + movi 1799H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJP + pull a8 + + ;initials second set + movi work_buffer,a1 + move a8,a7 + addi HS_INITS+HS_SIZE,a7 + movi 5,a2 + +#initloop2 + callr RC_BYTEI + movb a0,*a1 + addk 8,a1 + dsj a2,#initloop2 + + movk 5,a3 + callr strip_white + + clr a0 ;null-terminate it + movb a0,*a1 + + movi osgemd_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a10,a0 + sll 16,a0 + srl 16,a0 + addi 155,a0 + move a0,@mess_cursx + move a10,a0 + srl 16,a0 + move a0,@mess_cursy + move a11,@message_palette,L + calla print_string_C + + move a9,a0 + sll 16,a0 + subi [8,0],a0 + move a9,a1 + srl 16,a1 + sll 16,a1 + addi [2,0],a1 + movi SPEAR,a2 + movi 1000H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + + move a9,a0 + sll 16,a0 + addi [13,0],a0 + move a9,a1 + srl 16,a1 + sll 16,a1 + addi [2,0],a1 + movi SPEAR,a2 + movi 1001H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + + PULL A7 + + movi "#",a0 + movb a0,@message_buffer + addk 8,a1 + + MOVK 10,A0 + SUB A7,A0 + calla BINBCD ;dec number in A0 + move a0,a1 + movi message_buffer+8,a2 + calla dec_to_asc_new_entry + + clr a0 + move a0,*a2+ + + movi wsf14_ascii,a0 + move a0,@message_ascii,L + movi 7,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a9,a0 + sll 16,a0 + srl 16,a0 + move a0,@mess_cursx + move a9,a0 + srl 16,a0 + move a0,@mess_cursy + movi WSF_W_P,a0 + move a0,@message_palette,L + movi 1003h,a0 + move a0,@mess_z,L + calla print_string_with_z + + rets + + +dot + .string ".",0 + .even +zero + .string "0",0 + .even + +; A0 = binary value + .ref concat_string + .ref concat_rom_string + + SUBRP val_to_dec_tenths_asc + PUSH a1,a2,a3,a4,a5,a6 + + movi 10,a3 + move a0,a1 + divu a3,a1 + move a1,a0 + + movi 10,a3 + move a0,a1 + divu a3,a1 + + movi 10,a2 + move a0,a3 + modu a2,a3 + + PUSH a3 + move a1,a0 + movi 1000,a1 + calla dec_to_asc + calla copy_string + movi dot,a4 + calla concat_rom_string + PULL a3 + move a3,a0 + jrz #is_zero + movi 10,a1 + calla dec_to_asc + calla concat_string + jruc #conv_done +#is_zero + movi zero,a4 + calla concat_rom_string +#conv_done + + PULL a1,a2,a3,a4,a5,a6 + rets + + +#******************************* +* Display a table entry (initials and score) +* >a8=*entry, a9=[Y,Xleft] of initials, a10=[Y,Xright] of score, a11=pal +* >a0=draw high score message? (0|1) + + SUBRP draw_pinspeed_table_entry + + PUSH A7 + + push a8 + PUSH A5 + PUSH A6 + move a10,a0 + sll 16,a0 + ADD A1,A0 + move a10,a1 + srl 16,a1 + sll 16,a1 + addi [4,0],a1 + movi 1000H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + PULL A6 + PULL A5 + pull a8 + + move a8,a7 + callr RC_LONG ;read the score + calla BCDBIN + callr val_to_dec_tenths_asc + + movk 2,a0 + move a0,@mess_spacing + CLR A0 + MOVE A0,@IGNORE_CHAR_WIDTH + movi font18_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + move a10,a0 + sll 16,a0 + srl 16,a0 + add A6,a0 + move a0,@mess_cursx + move a10,a0 + srl 16,a0 + move a0,@mess_cursy + movi WGSF_W_P1,a0 + move a0,@message_palette,L + calla print_string_R + + ;initials + movi message_buffer,a1 + move a8,a7 + addi HS_INITS,a7 + movi 3,a2 + +#initloop + callr RC_BYTEI + movb a0,*a1 + addk 8,a1 + dsj a2,#initloop + + callr RC_BYTEI + push a0 + + clr a0 ;null-terminate it + movb a0,*a1 + + movi osgemd_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a10,a0 + sll 16,a0 + srl 16,a0 + addi 17h,a0 + move a0,@mess_cursx + move a10,a0 + srl 16,a0 + move a0,@mess_cursy + move a11,@message_palette,L + calla print_string_C + + move a9,a0 + sll 16,a0 + subi [8,0],a0 + move a9,a1 + srl 16,a1 + sll 16,a1 + addi [2,0],a1 + movi SPEAR,a2 + movi 1000H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + + move a9,a0 + sll 16,a0 + addi [13,0],a0 + move a9,a1 + srl 16,a1 + sll 16,a1 + addi [2,0],a1 + movi SPEAR,a2 + movi 1001H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + + pull a0 + + SUBI "A",a0 + sll 5,a0 + addi WHICH_NAMES,A0 + MOVE *A0,A2,L + + move a9,a0 + sll 16,a0 + addi [302,0],a0 + move a9,a1 + srl 16,a1 + sll 16,a1 + addi [7,0],a1 + movi 1001H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + + PULL A7 + + movi "#",a0 + movb a0,@message_buffer + addk 8,a1 + + MOVK 10,A0 + SUB A7,A0 + calla BINBCD ;dec number in A0 + move a0,a1 + movi message_buffer+8,a2 + calla dec_to_asc_new_entry + + clr a0 + move a0,*a2+ + + movi wsf14_ascii,a0 + move a0,@message_ascii,L + movi 7,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a9,a0 + sll 16,a0 + srl 16,a0 + move a0,@mess_cursx + move a9,a0 + srl 16,a0 + move a0,@mess_cursy + movi WSF_W_P,a0 + move a0,@message_palette,L + movi 1003h,a0 + move a0,@mess_z,L + calla print_string_with_z + + rets + +#******************************* + SUBRP draw_winstreak_table_entry + + PUSH A7 + + push a8 + PUSH A5 + PUSH A6 + move a10,a0 + sll 16,a0 + ADD A1,A0 + move a10,a1 + srl 16,a1 + sll 16,a1 + addi [4,0],a1 + movi 1000H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + PULL A6 + PULL A5 + pull a8 + + move a8,a7 + callr RC_LONG ;read the score + calla BCDBIN + movi 9999999,a1 + calla dec_to_asc ;convert to ASCII + CLR A0 + move a0,@mess_spacing + call a5 + + clr a0 + MOVE A0,@IGNORE_CHAR_WIDTH + movi font18_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + move a10,a0 + sll 16,a0 + srl 16,a0 + add A6,a0 + move a0,@mess_cursx + move a10,a0 + srl 16,a0 + move a0,@mess_cursy + movi WGSF_W_P1,a0 + move a0,@message_palette,L + calla print_string_C + + ;initials +; movi message_buffer,a1 + movi work_buffer,a1 + move a8,a7 + addi HS_INITS,a7 + movi 3,a2 + +#initloop + callr RC_BYTEI + movb a0,*a1 + addk 8,a1 + dsj a2,#initloop + + movk 3,a3 + callr strip_white + + clr a0 ;null-terminate it + movb a0,*a1 + + movi osgemd_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a10,a0 + sll 16,a0 + srl 16,a0 + addi 17h,a0 + move a0,@mess_cursx + move a10,a0 + srl 16,a0 + move a0,@mess_cursy + move a11,@message_palette,L + calla print_string_C + + move a9,a0 + sll 16,a0 + subi [8,0],a0 + move a9,a1 + srl 16,a1 + sll 16,a1 + addi [2,0],a1 + movi SPEAR,a2 + movi 1000H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + + move a9,a0 + sll 16,a0 + SUBi [10,0],a0 + move a9,a1 + srl 16,a1 + sll 16,a1 + addi [2,0],a1 + movi BARBUTT,a2 + movi 1001H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + MOVI DPLT_R_P,B0 + calla BEGINOBJWP + PULL A7 + +; movi "#",a0 +; movb a0,@message_buffer +; addk 8,a1 + + MOVK 19,A0 + SUB A7,A0 + calla BINBCD ;dec number in A0 + move a0,a1 +; movi message_buffer+8,a2 + movi message_buffer,a2 + calla dec_to_asc_new_entry + + clr a0 + move a0,*a2+ + + movi wsf14_ascii,a0 + move a0,@message_ascii,L + movi 7,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a9,a0 + sll 16,a0 + srl 16,a0 + subi 4,a0 + move a0,@mess_cursx + move a9,a0 + srl 16,a0 + move a0,@mess_cursy + movi WSF_W_P,a0 + move a0,@message_palette,L + movi 1003h,a0 + move a0,@mess_z,L + calla print_string_with_z + + rets + +WHICH_NAMES + .LONG HART + .LONG RAZOR + .LONG UNDER + .LONG YOKO + .LONG SHAWN + .LONG BAMBAM + .LONG DOINK + .LONG 0 + .LONG LEX + +which_crouton + .long CRUT_BH + .long CRUT_RR + .long CRUT_UN + .long CRUT_YK + .long CRUT_SM + .long CRUT_BM + .long CRUT_DK + .long CRUT_LX + + SUBR draw_each_inter_table_entry + + movi HS_SIZE,a7 + mpyu a7,a9 + addi INTER_TAB_ORIGIN,a9 + move a9,a8 + + movi [126H,8],a9 + movi [13BH,10],a10 + + movi GOLD,a11 + movi AUD_INTER,A0 + calla GET_AUD + MOVE @starting_num,A5 + cmp a1,a5 + jrne #gold2 + movi BLUE,a11 +#gold2 + movi INTER_TAB_SELECT,a1 ;set the read page + callr SET_PAGE + movi special_copy,a5 + JRUC draw_beaten_table_entry + + SUBR draw_each_beaten_table_entry + + movi HS_SIZE,a7 + mpyu a7,a9 + addi BEATEN_TAB_ORIGIN,a9 + move a9,a8 + + movi [126H,8],a9 + movi [13BH,10],a10 + + movi GOLD,a11 + movi AUD_BEATEN,A0 + calla GET_AUD + MOVE @starting_num,A5 + cmp a1,a5 + jrne #gold + movi BLUE,a11 +#gold + movi BEATEN_TAB_SELECT,a1 ;set the read page + callr SET_PAGE + movi special_copy,a5 + +#******************************* +* Display a table entry (initials and score) +* >a8=*entry, a9=[Y,Xleft] of initials, a10=[Y,Xright] of score, a11=pal +* >a0=draw high score message? (0|1) + + SUBR draw_beaten_table_entry + + push a7 + push a9,a10 + move a8,a7 + callr RC_LONG ;read the score + move a0,a9 + + jrnz no_reset_blank + movk 1,a0 + move a0,@not_blank +no_reset_blank + + movk 8,a10 + clr a3 + pull a1 + push a1 + move a1,a0 + sll 16,a0 + clr b4 + addi [2,0],a1 +next_icon + srl 1,a9 + jrnc no_icon + mmtm sp,a0,a1,a3,a8,a11 + move a3,a4 + sll 5,a4 + addi which_crouton,a4 + move *a4,a2,L + movi 1000H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + movi 01000100h,a3 + move a3,*a8(OSCALE),L + mmfm sp,a0,a1,a3,a8,a11 + addi [30h,0],a0 + inc b4 +no_icon + srl 3,a9 + inc a3 + dec a10 + jrnz next_icon + + mmtm sp,a0,a1,a3,a8,a11 + movi 8,b5 + sub b4,b5 +;loop will attempt to create 2^32 number of dots!!!!! +;Soooooo - don't do it!!!! + jrz #no_dots + move b5,a10 + addi [10,0],a0 +next_dot +; movi CRUTPLT_G,a2 + movi OSGEMD_DOT,a2 + movi 1000H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + push a0,a1 + calla BEGINOBJW + pull a0,a1 + addi [30h,0],a0 + dec a10 + jrnz next_dot +#no_dots + mmfm sp,a0,a1,a3,a8,a11 + + pull a9,a10 + + ;initials +do_just_init + movi message_buffer,a1 + move a8,a7 + addi HS_INITS,a7 + movi 5,a2 + +#initloop + callr RC_BYTEI + movb a0,*a1 + addk 8,a1 + dsj a2,#initloop + + clr a0 ;null-terminate it + movb a0,*a1 + + movi osgemd_ascii,a0 + move a0,@message_ascii,L + movi 10,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a9,a0 + sll 16,a0 + srl 16,a0 + addi 50,a0 + move a0,@mess_cursx + move a9,a0 + srl 16,a0 + move a0,@mess_cursy + move a11,@message_palette,L + movi 1003h,a0 + move a0,@mess_z,L + calla print_string_with_z + + push a1 + move a9,a0 + sll 16,a0 + subi [8,0],a0 + move a9,a1 + srl 16,a1 + sll 16,a1 + addi [2,0],a1 + movi SPEAR,a2 + movi 1000H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + + move a9,a0 + sll 16,a0 + addi [13,0],a0 + move a9,a1 + srl 16,a1 + sll 16,a1 + addi [2,0],a1 + movi SPEAR,a2 + movi 1001H,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + pull a1 + + pull a7 + + movi "#",a0 + movb a0,@message_buffer + addk 8,a1 + move @starting_num,a0 + + calla BINBCD ;dec number in A0 + move a0,a1 + movi message_buffer+8,a2 + calla dec_to_asc_new_entry + + clr a0 + move a0,*a2+ + + movi wsf14_ascii,a0 + move a0,@message_ascii,L + movi 7,a0 + move a0,@mess_space_width + clr a0 + move a0,@mess_spacing + MOVE A0,@IGNORE_CHAR_WIDTH + move a9,a0 + sll 16,a0 + srl 16,a0 + move a0,@mess_cursx + move a9,a0 + srl 16,a0 + move a0,@mess_cursy + movi WSF_W_P,a0 + move a0,@message_palette,L + movi 1003h,a0 + move a0,@mess_z,L + calla print_string_with_z + + rets + + +#******************************* +* high score page color cyclers +* + + SUBR hscore_colcyc + + movi [10,7],a8 ;START AT COLOR 10, CYCLE 7 COLORS + movi BLUE,a9 ;PAL NAME + movi COLTAB2,a10 ;TABLE TO CYCLE WITH + movk 3,a11 ;RATE OF CYCLE IN TICKS + CREATE CYCPID,CYCLE_TABLE ;START PROCESS TO DO CYCLE + + rets + +COLTAB2 + .word 0033eh,0135fh,02b7fh,03f9fh,053bfh,06bdfh,07fffh + .word 06bdfh,053bfh,03f9fh,0277fh,0135fh,00f3fh,00b1fh,002ffh + .word 002dfh,002ffh,002ffh,0031fh,0031fh,0033fh,002fdh,002dch + .word 0029ah,00259h,00237h,00258h,00259h,0027ah,0029bh,002bch + .word 0025ah,001f7h,001b5h,00172h,00194h,001d6h,00218h,0065ah + .word 0069ch,00ebch,01addh,022fdh,02f1eh,0375eh,0437fh,04f9fh + .word 03b7fh,0275fh,0133fh,0033fh,002feh,002ddh,002bch,0029bh + .word 0025ah,00239h,00218h,00259h,0027bh,002bch,002feh,0033fh + + .word 0033eh,0135fh,02b7fh,03f9fh,053bfh,06bdfh,07fffh + .word 06bdfh,053bfh,03f9fh,0277fh,0135fh,00f3fh,00b1fh,002ffh + + SUBR hscore_colcyc2 + + movi [10,7],a8 ;START AT COLOR 10, CYCLE 7 COLORS + movi RUBYPAL,a9 ;PAL NAME + movi COLTAB3,a10 ;TABLE TO CYCLE WITH + movk 3,a11 ;RATE OF CYCLE IN TICKS + CREATE CYCPID,CYCLE_TABLE ;START PROCESS TO DO CYCLE + + rets + +COLTAB3 + + .word 07c01h,07c63h,07d08h,07d8ch,07e10h,07eb5h,07f39h + .word 07e94h,07e10h,07d6bh,07ce7h,07c42h,07421h,06c00h,06400h + .word 05c00h,06400h,06800h,07000h,07400h,07c00h,07400h,06c00h + .word 06000h,05800h,05c00h,06000h,06400h,06800h,06c00h,07000h + .word 06400h,05c00h,05000h,04800h,05000h,05800h,06000h,06c00h + .word 06c21h,07063h,070c6h,07508h,0754ah,079adh,079efh,07e52h + .word 07defh,07dadh,0794ah,078e7h,07884h,07842h,07800h,07000h + .word 06c00h,06400h,06000h,06400h,06c00h,07000h,07800h,07c00h + + .word 07c01h,07c63h,07d08h,07d8ch,07e10h,07eb5h,07f39h + .word 07e94h,07e10h,07d6bh,07ce7h,07c42h,07421h,06c00h,06400h + + +#***************************************************************************** +* Checks to see if the expired player made the table, and takes care of all +* the details if he did. +* + + STRUCTPD + LONG #cursorimg ;UHL cursor *img + LONG #hiliteimg ;UHL hilite letter *img + WORD #stick ;UHW stick to read + LONG #which_tab + LONG #which_entry + LONG #which_level + WORD #which_aud + + + +WHICH_TO_OR + .LONG 1H + .LONG 10H + .LONG 100H + .LONG 1000H + .LONG 10000H + .LONG 100000H + .LONG 1000000H + .LONG 10000000H + +DO_BEATEN_GAME + move a10,a1 + sll 4,a1 + addi which_player,a1 + move *a1,a9 + CMPI 8,A9 + JRNE AVOID_NUMBER_8 + DEC A9 +AVOID_NUMBER_8 + SLL 5,A9 + ADDI WHICH_TO_OR,A9 + MOVE *A9,A9,L + + move a10,a1 ;clear out intials for end game table + MOVE a1,a2 + sll 5,a1 + sll 4,a2 + add a2,a1 + addi entered_inits,a1 + clr a11 + move a11,*a1+,L + movb a11,*a1 + + movi FIND_LOW_TABLE_LEVEL,a11 + movi BEATEN_TAB,a5 + movi AUD_BEATEN,A3 + MOVE @belt_type,a1 + jrnz found_right_table + movi INTER_TAB,A5 + movi AUD_INTER,A3 +found_right_table + movi enter_initials_beaten,a10 + movi SPECIAL_ENTRY,a7 + jruc create_initial_input + + SUBR DO_TAG_GAME + + move a10,a1 ;clear out intials for end game table + MOVE a1,a2 + sll 5,a1 + sll 4,a2 + add a2,a1 + addi entered_inits,a1 + clr a11 + move a11,*a1+,L + movb a11,*a1 + + movi FIND_LOW_TABLE_LEVEL,a11 + movi TAG_TAB,a5 + movi AUD_TAG,A3 + movi enter_initials_beaten,a10 + movi do_entry_time,a7 + jruc create_initial_input + + + SUBR pin_speed_check + + ;skip this check if I'm a drone. + move a8,A0 + CMPI 2,A0 + JRGE #retp + + ;skip this check if the match took three rounds + move @current_round,a14 + cmpi 3,a14 + jreq #retp + + SLL 5,A0 + ADDI MATCH_TIMERS,A0 + MOVE *A0,A9,L + jrle #retp + + movi FIND_LOW_TABLE_LEVEL,a11 + movi PIN_SPEED_TAB,a5 + movi enter_initials_top_20,a10 + movi do_entry_time,a7 + movi AUD_PINSPEED,a3 + jruc create_initial_input + + SUBR winstreak_check + + move a8,a9 + sll 4,a9 + addi p1oldwinstreak,a9 + move *a9,a9 + movi FIND_HIGH_TABLE_LEVEL,a11 + movi STREAK_TAB,a5 + movi enter_initials_streak,a10 + movi do_entry,a7 + movi AUD_WINSTREAK,a3 + +create_initial_input + move a8,a1 + addi HI_INPUT_PID,a1 + calla GETPRC + move a5,*a0(#which_tab),L + move a8,*a0(#stick) + move a10,*a0(#which_entry),L + move a11,*a0(#which_level),L + move a3,*a0(#which_aud) + +#retp RETP + + SUBR do_that_cycle + movi [02h,1],a8 ;cycle color A + movi FNT9RED_P,a9 ;pal name + movi fnt9_red_white,a10 ;use the LFLASH table + movk 6,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + movi [02h,1],a8 ;cycle color A + movi FNT9WHT2P,a9 ;pal name + movi fnt9_blue_white,a10 ;use the LFLASH table + movk 6,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + callr hscore_colcyc + callr hscore_colcyc2 + rets + +do_entry + ;convert score and wins to BCD + move a9,a0 + calla BINBCD + move a0,a9 +do_entry_time + move a9,a0 + + clr a3 + move *a13(#which_tab),a8,L + callr CHECK_SCORE + + jrz #done_jake_hack + +no_we_can_come_back + ;they made one of the tables. first update AUD_LSCORE + move a0,a1 + move *a13(#which_aud),a0 + calla KILL_AUD + calla AUD + +SPECIAL_ENTRY + movk 1,a14 + move a14,@auto_init + MOVE *A13(#stick),a1 + MOVE a1,a2 + sll 5,a1 + sll 4,a2 + add a2,a1 + addi entered_inits,a1 + move *a1,a0,L + JRNZ NO_NEED_TO_ENTER + + clr a14 + move a14,@auto_init + + CREATE0 howard_wins + + PUSHP a9 + + MOVE *A13(#which_entry),A1,L + GETPC A7 + ADDI 040h,A7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JUMP A1 + + PULLP a9 + + MOVI 0B8H,A0 + CALLA triple_sound + + MOVE *A13(#stick),a1 + MOVE a1,a2 + sll 5,a1 + sll 4,a2 + add a2,a1 + addi entered_inits,a1 +NO_NEED_TO_ENTER + move a9,a0 + move *a13(#which_tab),a8,L + cmpi BEATEN_TAB,a8 + JREQ SPECIAL_ADDITION + CMPI INTER_TAB,A8 + JREQ SPECIAL_ADDITION + CMPI TAG_TAB,A8 + JRNE normal_addition + CALLR TAG_ENTRY + jruc #done +SPECIAL_ADDITION + callr SPECIAL_ADD_ENTRY + CALLR SORT_BEATEN_TABLE + jruc #done + +normal_addition + callr ADD_ENTRY +#done + + movi CYCPID,a0 + movi -1,a1 + calla KILALL + DIE + +#done_jake_hack + movi 17,a0 + move *a13(#which_tab),a8,L + cmpi TAG_TAB,a8 + jreq no_we_can_come_back + + movi CYCPID,a0 + movi -1,a1 + calla KILALL + DIE + +fnt9_blue_white + .word 0001fH,07FFFH + .word -1 + +fnt9_red_white + .word 07C00H,07FFFH + .word -1 + +***************************************************************************** +* proc pointer + #stick = stick (0:1) + +; SUBR enter_message +; clr a0 +; movb a0,@entered_message +; movb a0,@entered_message+40h +; movi entered_message,a4 +; move a4,a5 +; movi entered_message+(15*8),a6 +; PUSHP a4,a5,a6 +; +; movi #entermess_mes,a2 +; PUSHP a2 +; jruc #go + + SUBR enter_initials_beaten + + movi entered_inits,a4 + move a4,a5 + movi entered_inits+(5*8),a6 + movi #enterinita_mess,a3 + movi #enterinit5_mes,a2 + move *a13(#stick),a0 + move a0,a0 + jrz #enter_mess_set_3 + movi entered_inits+030h,a4 + move a4,a5 + movi entered_inits+(5*8)+030h,a6 + movi #enterinitb_mess,a3 + movi #enterinit6_mes,a2 +#enter_mess_set_3 + clr a14 + move a14,*a4,L ;clear out initials + move a14,*a4(018h) ;clear out initials + PUSHP a4,a5,a6 + PUSHP a2 + move a3,a2 + calla setup_message + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + move a0,@mess_objid + + move *a2+,a0,L ;print method + move a2,a4 ;* text string + call a0 + jruc #go + + SUBR enter_initials_streak + + CLR A2 + MOVE A2,@IGNORE_CHAR_WIDTH + + movi #enterinit7_mes,a2 + move *a13(#stick),a0 + jrz just_add_to_id + movi #enterinit8_mes,a2 +just_add_to_id + PUSH A0 + calla setup_message + PULL A0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + move a0,@mess_objid + + move *a2+,a0,L ;print method + move a2,a4 ;* text string + call a0 + + move @mess_cursx2,a0 + addi 8,a0 + move a0,@mess_cursx + + movk 2,a0 + move a0,@mess_spacing + + move @p1oldwinstreak,a0 + move *a13(#stick),a2 + jrz got_right_streak + move @p2oldwinstreak,a0 +got_right_streak + movi 9999999,a1 + calla dec_to_asc ;convert to ASCII + CALLA copy_string + calla print_string + + movi entered_inits,a4 + move a4,a5 + movi entered_inits+(3*8),a6 + movi #enterinita_mess,a3 + movi #enterinit1_mes,a2 + move *a13(#stick),a0 + move a0,a0 + jrz #enter_mess_set_1 + movi entered_inits+030h,a4 + move a4,a5 + movi entered_inits+(3*8)+030h,a6 + movi #enterinitb_mess,a3 + movi #enterinit2_mes,a2 +#enter_mess_set_1 + clr a14 + move a14,*a4,L ;clear out initials + move a14,*a4(018h) ;clear out initials + PUSHP a4,a5,a6 + PUSHP a2 + move a3,a2 + calla setup_message + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + move a0,@mess_objid + + move *a2+,a0,L ;print method + move a2,a4 ;* text string + call a0 + jruc #go + +********************************* + SUBR enter_initials_top_20 + + movi font9A_ascii,a0 + move a0,@message_ascii,L + + move @MATCH_TIMERS,a0,L + movi 35,a3 + movi FNT9WHT2P,a11 + move *a13(#stick),a2 + jrz got_right_time + move @MATCH_TIMERS+32,a0,L + movi FNT9RED_P,a11 + movi 270,a3 +got_right_time + addi CLSNEUT|TYPTEXT|00A3h,a2 + move a2,@mess_objid + move a11,@message_palette,L + movi 16,a2 + move a2,@mess_cursy + move a3,@mess_cursx + calla BCDBIN + callr val_to_dec_tenths_asc + clr a0 + move A0,@IGNORE_CHAR_WIDTH + move a0,@mess_spacing + calla print_string + + move @mess_cursx2,a0 + addi 6,a0 + move a0,@mess_cursx + + movi #enterinit9_mes,a4 + calla print_string2 + + movi entered_inits,a4 + move a4,a5 + movi entered_inits+(3*8),a6 + movi #enterinita_mess,a3 + movi #enterinit3_mes,a2 + move *a13(#stick),a0 + move a0,a0 + jrz #enter_mess_set + movi entered_inits+030h,a4 + move a4,a5 + movi entered_inits+(3*8)+030h,a6 + movi #enterinitb_mess,a3 + movi #enterinit4_mes,a2 +#enter_mess_set + clr a14 + move a14,*a4,L ;clear out initials + move a14,*a4(018h) ;clear out initials + PUSHP a4,a5,a6 + PUSHP a2 + move a3,a2 + + calla setup_message + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + move a0,@mess_objid + + move *a2+,a0,L ;print method + move a2,a4 ;* text string + call a0 +#go + + PULLP a2 + movk 13,a0 + move a0,@mess_line_spacing + + calla setup_message + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + move a0,@mess_objid + + move *a2+,a0,L ;print method + move a2,a4 ;* text string + call a0 + + callr draw_letter_grid ;draw the letter grid + + move *a13(#stick),a1 + jrnz #right_type + TBL_OBJ #cursor ;create cursor + jruc #cursor_type_set +#right_type + TBL_OBJ #cursor2 ;create cursor +#cursor_type_set + clr a0 + move a0,*a8(ODOFF),L + movi 0101h,a0 + move a0,*a8(OCONST) + movi #block_size,a0 + move a0,*a8(OSIZEX) + move a0,*a8(OSIZEY) + move a8,*a13(#cursorimg),L + + move *a13(#stick),a1 + jrnz #right_hilite + TBL_OBJ #hilite1 ;create hilite letter + jruc #hilite_set +#right_hilite + TBL_OBJ #hilite2 ;create hilite letter +#hilite_set + + move a8,*a13(#hiliteimg),L + + clr a9 + callr new_cursor_pos ;place them & set char img/pal + + + ;reg use (loop) + ; a4 *first initial ram + ; a5 *next initial ram + ; a6 *last initial ram + ; a8 scratch + ; a9 cursor position (0-29) + ;a10 hold count for repeat motion + ;a11 debounce timer + + PULLP a4,a5,a6 + + movi 65,a11 + move a11,*a4 + + callr print_init_string + + clr a11 + MOVI 700H,B5 + clr b3 + +#loop +;this timer is done the hard way cos its 1:30 in the morning and I dont +;have the energy to be clever + movk 1,b1 + cmpi 150*5,b5 + jrgt no_need_for_timer + mmtm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 + move b5,b7 + movi 150,b1 + divs b1,b7 + move b3,b3 + jrnz we_already_have_it + movi [83+40,0],a0 + move *a13(#stick),a1 + jrz which_edge_set + movi [322+40,0],a0 +which_edge_set + movi [16,0],a1 ;y pos + movi FNT9_5,a2 + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + move *a13(#stick),a5 + addi CLSNEUT|TYPTEXT|00A3h,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + movi FNT9WHT_P,b0 + calla BEGINOBJWP + move a8,b3 + + push b3,b5 +; CREATE0 do_next_tick +; movi 0B7H,a0 + MOVI 0AH,A0 + calla triple_sound + pull b3,b5 +we_already_have_it + move b3,a8 + move b7,a0 + sll 5,a0 + addi digits_tbl,a0 + move *a0,a0,L ;* image + move *a8(OIMG),a1,L + cmp a0,a1 + jreq no_change + move *a8(OCTRL),a1 + calla change_image + push b3,b5 +; create0 do_next_tick +; movi 0B7H,a0 + MOVI 0AH,A0 + calla triple_sound + pull b3,b5 +no_change + + mmfm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 +no_need_for_timer + + DEC B5 ;have a limit we'll wait + JRZ #done2 + move b3,a2 + MOVE B5,A0 + PUSHP A0,a2,a4,a5,a6 + SLEEPK 1 + PULLP A0,a2,a4,a5,a6 + MOVE A0,B5 + move a2,b3 + + ;button check + move *a13(#stick),a0 + calla get_but_val_down + move a0,a0 + jrz #stick_check + + ;new press. add a letter. + move a9,a0 + cmpi 28,a0 + jreq #deletechar ;backspace? + + cmpi 29,a0 + jreq #done2 ;EOL? + + cmp a5,a6 + jreq #stick_check ;room for another char? + + sla 3,a0 ;x8 + addi #init_table2,a0 + movb *a0,*a5 + addk 8,a5 + clr a0 + movb a0,*a5 ;always keep a terminator in there. + jruc #added + +#deletechar + cmp a4,a5 + jreq #stick_check ;no chars to delete! + subk 8,a5 + clr a0 + movb a0,*a5 + callr print_init_string + jruc #stick_check + +#added + movi 0b1h,a0 + push b3,b5 + calla triple_sound + pull b3,b5 + + ;character added. + callr print_init_string + + ;if that was the last character, move the cursor to the END char. + cmp a5,a6 + jrne #stick_check + + movi 29,a9 + callr new_cursor_pos + +#stick_check + dec a11 ;debounce check + jrp #loop ;too soon? + + move *a13(#stick),a0 + calla get_stick_val_down + move a0,a0 + jrz #no_new_stick + + movi #tstatic-#debounce_time,a10 + movi #debounce_time,a11 + jruc #adjust + +#no_new_stick + dec a10 + jrnz #loop ;holding and waiting + + ;whee! time to repeat-move + move *a13(#stick),a0 + calla get_stick_val_cur + movi #tmoving,a10 +#adjust + X16 a0 + addi #joytab,a0 + move *a0,a0 + + add a0,a9 + jrn #too_low + cmpi 30,a9 + jrge #too_high + jruc #just_right + +#too_low + addi 30,a9 + jruc #just_right +#too_high + subi 30,a9 + jruc #just_right + +#just_right + ;adjust cursor and character position + move a0,a0 + jrz no_motion_sound + movi 0c7h,a0 + move *a13(#stick),a1 + jrz motion_sound_set + inc a0 +motion_sound_set + push b3,b5 + calla triple_sound + pull b3,b5 +no_motion_sound + callr new_cursor_pos + move a9,a0 + + cmpi 28,a0 + jreq #space_it + + cmpi 29,a0 + jreq #space_it + + cmp a6,a5 + jreq #loop + + sla 3,a0 + addi #init_table2,a0 + movb *a0,*a5 + clr a0 + movb a0,*a5(8) ;always keep a terminator in there. + callr print_init_string + jruc #loop + +#backspace_it + sla 3,a0 + addi #init_table2,a0 + subk 8,a5 + movb *a0,*a5 + addk 8,a5 + + clr a0 + movb a0,*a5 ;always keep a terminator in there. + callr print_init_string + jruc #loop + +#space_it + clr a0 + movb a0,*a5 ;always keep a terminator in there. + callr print_init_string + jruc #loop + +#done2 + callr are_inits_dirty + jrnz replace_dirty_inits +; jrz #not_dirty +; move a4,a5 +; clr a0 +; movb a0,*a5 +; callr print_init_string +; movi 28,a9 +; callr new_cursor_pos +; jruc #stick_check +;#not_dirty + .if 0 + calla are_special_inits + jrnz #not_special_inits + JSRP prog_specials +#not_special_inits + .endif + + MOVI 0cbh,A0 + MOVE *A13(#stick),a1 + jrz select_set + inc a0 +select_set + push b3,b5 + CALLA triple_sound + pull b3,b5 + + pushp a4 + PUSHP A6 + sleep 30 + PULLP A6 + pullp a4 + +;; move *a13(#stick),a0 +; addi CLSNEUT|TYPTEXT|00A5h,a0 +; calla obj_del1c +; +; move *a13(#stick),a0 +; addi CLSNEUT|TYPTEXT|00A3h,a0 +; calla obj_del1c + + move *a4,a0,L + jrnz #initials_have_content +replace_dirty_inits + movk 6,a0 + calla RNDRNG0 + sll 5,a0 + addi #random_initials,a0 + move *a0,A0,L + move a0,*a4,L + CLR A1 + MOVB A1,*A4(020H) + +#initials_have_content + PUSH a0 + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A5h,a0 + calla obj_del1c + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A3h,a0 + calla obj_del1c + PULL a0 + + CMPI "TJM",a0 + jrne no_worry_about_disaster + + push a0 + movi 129h,a0 + move @HCOUNT,a1 + srl 1,a1 + jrnc we_now_which + inc a0 +we_now_which + CALLA ADD_VOICE + pull a0 +no_worry_about_disaster + + CMPI "SMJ",a0 + jrne no_worry_about_yes_indeedly + push a0 + movi 214h,a0 + CALLA ADD_VOICE + pull a0 + +no_worry_about_yes_indeedly + PUSH A6 + SUB A4,A6 + CMPI 18H,A6 + JRNE A_FIVE_INITIALER + + MOVE *A13(#stick),a1 + sll 4,a1 + addi which_player,a1 + move *a1,a9 + ADDI "A",A9 + MOVB A9,*A4(18H) + +A_FIVE_INITIALER + PULL A6 + + RETP + +;do_next_tick +; SLEEP 12 +; MOVI 0B8H,A0 +; CALLA triple_sound +; DIE + +#random_initials + .byte "MJT",0 + .byte "JYT",0 + .byte "SAL",0 + .byte "JMS",0 + .byte "JAZ",0 + .byte "RJR",0 + .byte "MJL",0 + +#dw_table + .long 00001ab1h ; FUQ + .long 00001aa3h ; FUC + .long 00001aabh ; FUK + .long 000822b1h ; PHUQ + .long 000822abh ; PHUK + .long 000822a3h ; PHUC + .long 010ace79h ; PUSSY + .long 0102b933h ; PENIS + .long 0024d068h ; BITCH + .long 0009b2b4h ; SLUT + .long 0009a134h ; SHIT + .long 0001d5d4h ; CUNT + .long 0001b134h ; CLIT + .long 0001bc6bh ; COCK + .long 000994e1h ; SEGA + .long 0 + +; A4 = *beginning of string +; A0 = character to add +; +; Returns +; Z - Not dirty word +; NZ - Dirty word +; + SUBR are_inits_dirty + PUSH a0,a1,a2,a4,a5,a6 + move a4,a6 + subk 8,a6 +#recheck + addk 8,a6 + move a6,a4 + movb *a6,a2 + jrz #not_dirty_word + clr a1 +#get_inits_loop + movb *a4,a2 +; jrz #gi_done + jrz #recheck + cmpi 20h,a2 + jrz #not_alpha + cmpi 21h,a2 + jrz #not_alpha + cmpi 19h,a2 + jrz #not_alpha + sll 5,a1 + subi 40h,a2 + andi 1fh,a2 + or a2,a1 + callr #check_it +#not_alpha + addk 8,a4 + jruc #get_inits_loop +#gi_done + +#check_it + PUSH a4 + movi #dw_table,a4 + clr a0 +#check_dw_loop + move *a4+,a5,L +; jrz #not_dirty_word + jrz #check_done + cmp a1,a5 + jrz #is_dirty + jruc #check_dw_loop +#check_done + PULL a4 + rets + +#is_dirty + PULL a4,a14 ; This sucks don't change this + movk 1,a0 ; or it will break + jruc #aid_exit +#not_dirty_word + clr a0 +#aid_exit + move a0,a0 + PULL a0,a1,a2,a4,a5,a6 + rets + + + +**************************************** +* moves the cursor and hilite char to their new positions. + + SUBRP new_cursor_pos + + ;x pos = #grid_x + #block_size * (index mod 6) + move a9,a1 + movk 5,a0 + modu a0,a1 + movi #block_size,a0 + mpyu a0,a1 + move *a13(#stick),a3 + SLL 6,A3 + ADDI WHERE_BLOCK,A3 + MOVE *A3(010h),A14 + add a14,a1 + move *a13(#cursorimg),a8,L + move a1,*a8(OXPOS) + move *a13(#hiliteimg),a8,L + move a1,*a8(OXPOS) + + ;y pos = #grid_y + #block_size * (index / 6) + move a9,a1 + movk 5,a2 + divu a2,a1 + movi #block_size,a0 + mpyu a0,a1 + move *a3(030h),a14 + add a14,a1 + move *a13(#cursorimg),a8,L + move a1,*a8(OYPOS) + move *a13(#hiliteimg),a8,L + move a1,*a8(OYPOS) + + ;adjust the character image + move a9,a0 + sla 3,a0 ;x8 + addi #init_table1,a0 + movb *a0,a0 + X32 a0 + addi font9_ascii,a0 + move *a0,a0,L + jrnz #good_image + movi OSGEMD_DOT,a0 +#good_image + move *a13(#hiliteimg),a8,L + calla civanic + movi FNT9YEL_P,a0 + calla pal_getf + move a0,*a8(OPAL) + move *a8(OSIZEX),a14 ;center it + subi #block_size,a14 + sra 1,a14 + move a14,*a8(ODXOFF) + move *a8(OSIZEY),a14 + subi #block_size,a14 + sra 1,a14 + move a14,*a8(ODYOFF) + + rets + + +**************************************** +* deletes the old displayed init string (if any) and makes a new one. + + SUBRP print_init_string + + push b5,b3 + PUSH a0,a1,a2,a3,a4,a5,a6,a7,a8 + PUSH a4 + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A5h,a0 + calla obj_del1c + + movi #currentinit1_mes,a2 + move *a13(#stick),a3 + jrz #current_mess_set + movi #currentinit2_mes,a2 +#current_mess_set + + calla setup_message + + move *a13(#stick),a0 + addi CLSNEUT|TYPTEXT|00A5h,a0 + move a0,@mess_objid + + PULL a4 + calla print_string_C2 + + PULL a0,a1,a2,a3,a4,a5,a6,a7,a8 + pull b5,b3 + + rets + +**************************************** +* draw the letter grid + + SUBRP draw_letter_grid + + movi FNT9YEL_P,a0 + calla pal_getf + move a0,a11 + + move *a13(#stick),A1 + SLL 6,A1 + ADDI WHERE_BLOCK,A1 + MOVE *A1+,A0,L + MOVE *A1,A1,L + MOVE A0,B2 + SUBI [#block_size,0],B2 + + movi #init_table1,a9 + movi 30,a10 + jruc #draw_loop + +#draw_incy + MOVE B2,A0 + addi [#block_size,0],a1 +#draw_incx + addi [#block_size,0],a0 + +#draw_loop + movb *a9,a2 + addk 8,a9 + X32 a2 + addi font9_ascii,a2 + move *a2,a2,L + jrnz #draw_okimg + + ;bad image + movi OSGEMD_DOT,a2 + +#draw_okimg + clr a3 + movi DMAWNZ,a4 + move *a13(#stick),a5 + addi CLSNEUT|TYPTEXT|00A3h,a5 + clr a6 + clr a7 + PUSH a0,a1 + movi FNT9YEL_P,b0 + calla BEGINOBJP + PULL a0,a1 + move a11,*a8(OPAL) ;set the palette + + ;center the image in its' box + move *a8(OSIZEX),a14 + subi #block_size,a14 + sra 1,a14 + move a14,*a8(ODXOFF) + + move *a8(OSIZEY),a14 + subi #block_size,a14 + sra 1,a14 + move a14,*a8(ODYOFF) + + dec a10 + jrz #draw_done + + move a10,a6 + movi 5,a7 + modu a7,a6 + jrz #draw_incy + jruc #draw_incx + +#draw_done + rets + +**************************************** +* enter inits config stuff +crap_off .equ 5 +WHERE_BLOCK + .LONG [32+crap_off,0] ;X + .LONG [59,0] ;Y + + .LONG [273+crap_off,0] ;X + .LONG [59,0] ;Y + +#init_table1 .STRING "ABCDEFGHIJKLMNOPQRSTUVWXYZ!",>10,>11,>12 +#init_table2 .STRING "ABCDEFGHIJKLMNOPQRSTUVWXYZ!",>20,>11,>12 + +#grid_x equ 200 ;x position of letter grid +#grid_y equ 100 ;y position of letter grid +#block_size equ 18 ;x & y spacing of letter grid + +#tstatic equ 30 ;ticks before repeat motion begins +#tmoving equ 10 ;ticks between repeat motions +#debounce_time equ 8 ;min ticks between stick changes + +#enterinit_mod + .long wwfselbkBMOD ;wrestler select map + .word -44,0 + .long 0 + +#currentinit1_mes + JAM_STR osgemd_ascii,10,1,77+crap_off,204,BLUE,print_string_C2 + .byte "A",0 + .even + +#currentinit2_mes + JAM_STR osgemd_ascii,10,1,315+crap_off,204,RUBYPAL,print_string_C2 + .byte "A",0 + .even + +#enterinita_mess + JAM_STR font9_ascii,8,0,76+crap_off,179,FNT9WHT2P,print_string_C2 + .byte "ENTER INITIALS",0,0 + .even + +#enterinitb_mess + JAM_STR font9_ascii,8,0,286+crap_off+29,179,FNT9RED_P,print_string_C2 + .byte "ENTER INITIALS",0,0 + .even + +#enterinit1_mes + JAM_STR font9_ascii,4,0,77+crap_off,38,FNT9WHT2P,print_string_C2 + .byte "WIN STREAK !",0,0 + .even + +#enterinit2_mes + JAM_STR font9_ascii,4,0,317+crap_off,38,FNT9RED_P,print_string_C2 + .byte "WIN STREAK !",0,0 + .even + +#enterinit3_mes + JAM_STR font9_ascii,4,0,77+crap_off,38,FNT9WHT2P,print_string_C2 + .byte "FAST VICTORY",0,0 + .even + +#enterinit4_mes + JAM_STR font9_ascii,4,0,317+crap_off,38,FNT9RED_P,print_string_C2 + .byte "FAST VICTORY",0,0 + .even + +#enterinit5_mes + JAM_STR font9_ascii,4,0,77+crap_off,38,FNT9WHT2P,print_string_C2 + .byte "BEATEN GAME",0,0 + .even + +#enterinit6_mes + JAM_STR font9_ascii,4,0,317+crap_off,38,FNT9RED_P,print_string_C2 + .byte "BEATEN GAME",0,0 + .even + +#enterinit7_mes + JAM_STR font9_ascii,4,0,45+crap_off,16,FNT9WHT2P,print_string_C2 + .byte "WINS : ",0,0 + .even + +#enterinit8_mes + JAM_STR font9_ascii,4,0,285+crap_off,16,FNT9RED_P,print_string_C2 + .byte "WINS : ",0,0 + .even + +#enterinit9_mes + .byte "SEC.",0,0 + .even + +#entermess_mes + JAM_STR osgemd_ascii,10,0,200+crap_off,10,BLUE,print_string_C2 + .byte "ENTER A MESSAGE",0,0 + .even + +#cursor .word 0,0,10 ;X, Y, Z + .long jmeter ;IMG + .word DMACAL ;CTRL + .word CLSNEUT|TYPTEXT|00A3h + .long 0,0 ;XVEL, YVEL + .even + +#cursor2 .word 0,0,10 ;X, Y, Z + .long #jmeter2 ;IMG + .word DMACAL ;CTRL + .word CLSNEUT|TYPTEXT|00A4h + .long 0,0 ;XVEL, YVEL + .even + +#jmeter2 + .word 175,13,2,2 + .long 040427fcH + .word 02000H + .long #jmeter2_p + +#jmeter2_p + .word 5 + .word 00H,7d00H,07F60H,01E0H,00H + +#hilite1 .word 0,0,20 ;X, Y, Z + .long FNT9_A + .word DMAWNZ ;CTRL + .word CLSNEUT|TYPTEXT|00A3h + .long 0,0 ;XVEL, YVEL + .even + +#hilite2 .word 0,0,20 ;X, Y, Z + .long FNT9_A + .word DMAWNZ ;CTRL + .word CLSNEUT|TYPTEXT|00A4h + .long 0,0 ;XVEL, YVEL + .even + +#joytab ;RLDU + .word 0 ;0000 + .word -5 ;0001 + .word 5 ;0010 + .word 0 ;0011 + .word -1 ;0100 + .word -6 ;0101 + .word 4 ;0110 + .word -1 ;0111 + .word 1 ;1000 + .word -4 ;1001 + .word 6 ;1010 + .word 1 ;1011 + .word 0 ;1100 + .word -5 ;1101 + .word 5 ;1110 + .word 0 ;1111 + +******************************** +*INITIAL ENTRY JOYSTICK TABLE + +*INITIAL MATRIX + + +************************************************************************** +* +* CHECK_INITS +* +* A1 POINTS AT A SET OF INITIALS ENTERED. RETURN .EQ. +* IF THEY'RE ALL SPACES (OR ZERO). +* +************************************************************************** +CHECK_INITS: + MMTM SP,A0,A1,A2 + MOVI NUM_INITS,A2 +CHECK_NEXT: + MOVB *A1,A0 ;GET AN INITIAL + JRZ SPACE_FOUND ;NULL IS A SPACE + CMPI SPACE,A0 ;IS IT A REAL SPACE? + JRNZ LET_FOUND +SPACE_FOUND: + ADDI BYTE_SIZE,A1 + DSJS A2,CHECK_NEXT + CLR A2 ;SET Z BIT ON FALL THROUGH + +LET_FOUND: + MMFM SP,A0,A1,A2 + RETS + +************************************************************************** +* +* CHECK_SCORE +* +* THIS IS CALLED WITH A SCORE IN A0 TO SEE IF IT +* IS HIGH ENOUGH TO MAKE THE TABLE. +* +* THE OTHER PLAYER'S SCORE IS PASSED IN A2. IF +* THE PLAYER MAKES THE LAST POSITION OF THE TABLE, +* THEN HIS SCORE IS COMPARED AGAINST THE OTHER SCORE +* IT MUST BE HIGHER THAN THE OTHER SCORE, OTHERWISE +* HE WILL ENTER HIS INITIALS, BUT THERE WILL BE NO +* PLACE TO PUT THEM WHEN HIS BUDDY IS DONE ENTERING HIS! +* +* THIS ROUTINE CALLS FIND_TABLE_LEVEL WHICH RETURNS +* THE POINT IN THE TABLE THAT THE PASSED SCORE WOULD +* LAND. THIS VALUE MUST BE LESS THAN OR EQUAL TO +* THE "TB_VISIBLE" VALUE FOR THE TABLE. THIS WOULD +* MEAN THAT WE WANT TO GET THE PLAYER'S INITIALS. +* +* A8 CONTAINS ROM POINTER FOR TABLE TO CHECK. +* RETURN A0 = 0 (AND .EQ.) IF SCORE ISN'T HIGH ENOUGH +* AND A0 = POSITION IN TABLE IF SCORE MAKES IT. +* +************************************************************************** + SUBR CHECK_SCORE + MMTM SP,A1,A3,A9,A10 + MOVE A0,A3 ;STASH SCORE IN A3 + move *a13(#which_level),a10,L + call a10 + +; CALLR FIND_TABLE_LEVEL ;SEE WHERE WE LAND IN THIS TABLE + + JRZ ANSWER_IN_A0 ;ZERO.....GUY DIDN'T MAKE IT + MOVE *A8(TB_VISIBLE),A1,W ;GET THE NUMBER "ENTERED" + CMP A1,A0 ;A0 MUST BE LESS OR EQUAL + JRLO ANSWER_IN_A0 ;NOT LAST ENTRY...RETURN SUCCESS + +; JRHI DIDNT_MAKE_HSTD +* +* GUY IS GOING FOR LAST POSITION.....SEE IF HIS BUDDY IS +* GOING TO NOSE HIM OUT: +* +* ^^^^^^^^^^ not anymore !! ^^^^^^^ +; CMP A2,A3 ;HI MUST BE HIGHER THAN BUDDY +; JRHI ANSWER_IN_A0 +; +;DIDNT_MAKE_HSTD: + CLR A0 ;RETURN FAILURE +ANSWER_IN_A0: + MOVE A0,A0 ;SET EQ BIT ACCORDINGLY + MMFM SP,A1,A3,A9,A10 + RETS + +SORT_BEATEN_TABLE + PUSH A1 + MOVE *A13(#which_tab),A8,L +; MOVI BEATEN_TAB,A8 + CALLR ROM_PTRS + MOVE *A13(#which_aud),A0 +; MOVI AUD_BEATEN,A0 + CALLA GET_AUD + MOVE A1,A0 + PULL A1 + MOVE A0,A6 + CALLR TEST_NUM_ICON + MOVE A3,A5 + + MOVK 1,A0 + MOVI BEATEN_TAB_ENTRIES,A10 +TEST_NEXT_BEATEN_ENTRY + CALLR TEST_NUM_ICON + CMP A3,A5 + JRGE THIS_IS_IT + INC A0 + DSJS A10,TEST_NEXT_BEATEN_ENTRY +NO_MOVEMENT + RETS + +THIS_IS_IT + CMP A0,A6 + JREQ NO_MOVEMENT + MOVE A6,A10 + MOVE A10,A3 + + MOVE *A13(#which_tab),A8,L + CALLR ROM_PTRS + PUSH A0,A1 + MOVE *A13(#which_aud),A0 + CALLA GET_AUD + MOVE A1,A0 + CALLR GET_HSCR + MOVE A1,A4 + PULL A0,A1 + PUSH A0,A1 + MOVE A0,A1 + MOVE *A13(#which_aud),A0 + calla KILL_AUD + calla AUD + PULL A0,A1 + MMTM SP,A0,A1,A2,A3,A4,A7,A9,A10 + JRUC COPY_DOWN_LOOP + +TEST_NUM_ICON + PUSH A1 + CALLR GET_HSCR + CLR A3 + MOVK 8,A4 +TEST_NEXT_NYBBLE + SRL 1,A1 + JRNC NO_IN_A3 + INC A3 +NO_IN_A3 + SRL 3,A1 + DSJS A4,TEST_NEXT_NYBBLE + PULL A1 + RETS + +COMPARE_INITIALS + MOVK 1,A0 ;START AT 1 AND WORK UP. + CALLR VAL_TAB ;FIX THE TABLE IN CASE ITS BROKEN. + JRC #NOT_MATCHED +COMPARE_NEXT + CALLR COMPARE_INITS + JRNC MATCHED + INC A0 + CMP A10,A0 + JRNE COMPARE_NEXT + CLR A0 +MATCHED + MOVE A0,A0 + RETS +#NOT_MATCHED + MOVI -1,A0 + RETS + +COMPARE_INITS + PUSH A0 + MOVE A1,A6 + CALLA PT_ENTRY + ADDI HS_INITS,A7 ;POINT AT FIRST INITIAL + MOVI NUM_INITS,A2 ;THIS IS NUMBER OF INITIALS +#INIT_COPY_LOOP + CALLR RC_BYTEI + MOVE A0,A5 + JRNZ #NOT_BLANK + MOVI SPACE,A5 ;REPLACE BLANKS WITH SPACES +#NOT_BLANK: + MOVB *A6,A11 + JRNZ #NOT_A_SPACE + MOVI SPACE,A11 ;REPLACE BLANKS WITH SPACES + MOVB A11,*A6 +#NOT_A_SPACE + CMP A5,A11 + JRNE NOT_MATCHED + ADDK 8,A6 + DSJ A2,#INIT_COPY_LOOP + PULL A0 + CALLR GET_HSCR + OR A1,A4 + CLRC + RETS +NOT_MATCHED + PULL A0 + SETC + RETS + +SPECIAL_ADD_ENTRY + MMTM SP,A0,A1,A2,A3,A4,A7,A9,A10 + CALLR ROM_PTRS ;SETUP FOR THIS TABLE + MOVE A0,A4 + PUSH A1 + CALLR COMPARE_INITIALS + JRNZ INSERT_HERE + JRN DIDNT_MAKE_IT + MOVE A10,A0 + +INSERT_HERE + PUSH A0 + MOVE A0,A1 + MOVE *A13(#which_aud),A0 + calla KILL_AUD + calla AUD + PULL A0 + PULL A1 + MOVE A10,A3 + SETC + JRUC COPY_DONE + +TAG_ENTRY: + MMTM SP,A0,A1,A2,A3,A4,A7,A9,A10 + CALLR ROM_PTRS ;SETUP FOR THIS TABLE + MOVE A0,A4 ;STASH THE SCORE A SEC. + CLR A2 ;DONT WORRY ABOUT OTHER GUY AT THIS POINT + CALLR CHECK_SCORE ;DOES THE REQUEST MAKE IT? + SETC ;ANTICIPATE FAILURE + JRZ SPECIAL_DIDNT_MAKE_IT ;DON'T KNOW WHY I GOT THESE INITS. + MOVE A10,A3 ;LAST GUY IN TABLE IS DESTINATION + JRUC COPY_DOWN_LOOP +SPECIAL_DIDNT_MAKE_IT + MOVK 17,A0 + MOVE A10,A3 ;LAST GUY IN TABLE IS DESTINATION + JRUC COPY_DOWN_LOOP + +************************************************************************** +* +* ADD_ENTRY +* +* THIS IS CALLED AFTER "ENTER YOUR INITIALS" TO +* ADD AN ENTRY TO THE TABLE. A0 CONTAINS THE +* SCORE OF THE PLAYER. A1 CONTAINS A POINTER +* TO THE FETCHED INITIALS. THE INITIALS ARE +* STORED AS CONSECUTIVE BYTES IN CONVENTIONAL +* (1 BYTE TAKES 1 BYTE SPACE) RAM. +* +* A8 contains a the table to store the entry in. +* +* RETURN CARRY SET IF IT DIDN'T MAKE IT INTO REQUESTED TABLE +* +************************************************************************** +ADD_ENTRY: + MMTM SP,A0,A1,A2,A3,A4,A7,A9,A10 + CALLR ROM_PTRS ;SETUP FOR THIS TABLE + MOVE A0,A4 ;STASH THE SCORE A SEC. + CLR A2 ;DONT WORRY ABOUT OTHER GUY AT THIS POINT + CALLR CHECK_SCORE ;DOES THE REQUEST MAKE IT? + SETC ;ANTICIPATE FAILURE + JRZ DIDNT_MAKE_IT ;DON'T KNOW WHY I GOT THESE INITS. +* +* A0 NOW HAS THE PLACE FOR THE NEW GUY. +* MOVE THE ENTIRE TABLE DOWN 1 UNIT. +* + MOVE A10,A3 ;LAST GUY IN TABLE IS DESTINATION + +COPY_DOWN_LOOP: + MOVE A3,A2 ;GUY BEFORE HIM IS SOURCE + DEC A2 ;A2 NOW HAS SOURCE + CMP A0,A2 ;IS SOURCE LOWER THAN OUR SLOT? + JRLO COPY_DONE ;IT IS...DON'T MOVE HIM. + + CALLR COPY_ENTRY ;COPY A2 ENTRY TO A3 + DEC A3 ;MOVE DOWN TO ONE BEFORE + JRUC COPY_DOWN_LOOP + +COPY_DONE: + CALLR PUT_SCORE_FOR_ENTRY ;SCORE IN A4 WRITTEN TO ENTRY A0 +* +* INITAIAL POINTER IS IN A1 +* TABLE OFFSET IN A0 +* + CALLR PT_ENTRY ;GET ENTRY POINTER IN A7 + ADDI HS_INITS,A7 ;POINT AT FIRST INITIAL + MOVI NUM_INITS,A2 ;THIS IS NUMBER OF INITIALS + MMTM SP,A0 ;SAVE A0 + +INIT_COPY_LOOP: + MOVB *A1,A0 ;GET AN INITIAL + JRNZ NOT_BLANK + MOVI SPACE,A0 ;REPLACE BLANKS WITH SPACES +NOT_BLANK: + CALLR WC_BYTEI ;WRITE THE BYTE AND INCREMENT + ADDI BYTE_SIZE,A1 ;A1 TO NEXT BYTE PLEASE + DSJ A2,INIT_COPY_LOOP + + MMFM SP,A0 ;GET BACK ENTRY NUMBER + CALLR FORM_HS_CKSUM_AND_STORE ;FOR CHECKSUM FOR THIS ENTRY AND STORE! + CLRC ;RETURN SUCCESS! + +DIDNT_MAKE_IT + MMFM SP,A0,A1,A2,A3,A4,A7,A9,A10 + RETS + +#************************************************************************** +* +* FIND_TABLE_LEVEL +* +* THIS IS CALLED TO COMPARE THE SCORE IN A0 TO +* THE TABLE POINTED TO BY A8. +* +* RETURN PHYSICALLY WHERE IT FITS IN A0, AND +* SET THE Z FLAG ACCORDINGLY +* +************************************************************************** +FIND_HIGH_TABLE_LEVEL + MMTM SP,A1,A2,A3 + CALLR ROM_PTRS ;SETUP FOR THIS TABLE + CALLR VAL_TAB ;FIX THE TABLE IN CASE ITS BROKEN. + JRC #FTL_FAIL ;CAN'T VALIDATE..SAY SCORE DIDN'T MAKE IT + + MOVE A0,A2 ;KEEP SCORE IN A2 + MOVK 1,A0 ;START AT 1 AND WORK UP. + +#CHECK_NEXT_SCORE: + CALLR GET_HSCR ;FETCH A0 ENTRY'S SCORE IN A1 + CMP A1,A2 ;HOW DO WE FARE AGAINST A1? + JRGE #FOUND_THE_SPOT ;WE FOUND THE SPOT + INC A0 ;KEEP MOVING DOWN TILL WE FIT + CMP A10,A0 ;ARE WE LOOKING AT THE LAST ONE? + JRLS #CHECK_NEXT_SCORE + +#FTL_FAIL: + CLR A0 ;WE'RE NOT HIGH ENOUGH RETURN FAILURE + +#FOUND_THE_SPOT: + MOVE A0,A0 ;MAKE SURE YOU SET THE FLAGS + MMFM SP,A1,A2,A3 + RETS + +#************************************************************************** +* +* FIND_TABLE_LEVEL +* +* THIS IS CALLED TO COMPARE THE SCORE IN A0 TO +* THE TABLE POINTED TO BY A8. +* +* RETURN PHYSICALLY WHERE IT FITS IN A0, AND +* SET THE Z FLAG ACCORDINGLY +* +************************************************************************** + SUBR FIND_LOW_TABLE_LEVEL + MMTM SP,A1,A2,A3 + CALLR ROM_PTRS ;SETUP FOR THIS TABLE + CALLR VAL_TAB ;FIX THE TABLE IN CASE ITS BROKEN. + JRC #FTL_FAIL ;CAN'T VALIDATE..SAY SCORE DIDN'T MAKE IT + + MOVE A0,A2 ;KEEP SCORE IN A2 + MOVK 1,A0 ;START AT 1 AND WORK UP. + +#CHECK_NEXT_SCORE: + CALLR GET_HSCR ;FETCH A0 ENTRY'S SCORE IN A1 + CMP A1,A2 ;HOW DO WE FARE AGAINST A1? + JRLO #FOUND_THE_SPOT +; JRHI #FOUND_THE_SPOT ;WE FOUND THE SPOT + INC A0 ;KEEP MOVING DOWN TILL WE FIT + CMP A10,A0 ;ARE WE LOOKING AT THE LAST ONE? + JRLS #CHECK_NEXT_SCORE + +#FTL_FAIL: + CLR A0 ;WE'RE NOT HIGH ENOUGH RETURN FAILURE + +#FOUND_THE_SPOT: + MOVE A0,A0 ;MAKE SURE YOU SET THE FLAGS + MMFM SP,A1,A2,A3 + RETS + + +************************************************************************** +* +* GET_HSCR +* +* THIS IS CALLED TO FETCH THE SCORE FROM CMOS FOR +* A GIVEN ENTRY. +* +* ENTRY NUMBER PASSED IN A0. +* SCORE RETURNED IN A1. +* +************************************************************************** +GET_HSCR + MMTM SP,A7,A0 + CALLR PT_ENTRY ;POINT A7 AT ENTRY + ADDI HS_SCORE,A7 ;INDEX SCORE PART. + CALLR RC_LONG ;FETCH THE LONG WORD INTO A0 + MOVE A0,A1 ;MOVE TO A1 + MMFM SP,A7,A0 + RETS + +************************************************************************** +* +* PUT_SCORE_FOR_ENTRY +* +* THIS IS CALLED TO WRITE OUT THE SCORE FOR A GIVEN ENTRY. +* ENTRY SPECIFIED BY A0. +* SCORE PASSED IN A4. +* +************************************************************************** +PUT_SCORE_FOR_ENTRY + MMTM SP,A7,A0 + CALLR PT_ENTRY ;POINT A7 AT ENTRY + ADDI HS_SCORE,A7 ;INDEX SCORE PART. + MOVE A4,A0 ;MOVE SCORE TO A0 + CALLR WC_LONG ;WRITE OUT THE LONG WORD + MMFM SP,A7,A0 + RETS + +************************************************************************** +* +* LOW LEVEL HSTD PROCESSING +* +************************************************************************** +* +* FOR HIGH SCORE ROUTINES +* +* A8 = ROM POINTER FOR A GIVEN TABLE STATS +* A9 = RAM POINTER FOR CMOS DATA +* A10 = NUMBER OF ENTRIES IN THE TABLE +* +* A0 = PARTICULAR ENTRY TO DEAL WITH +* 0 = FILL ENTRY (POINTER ROUTINES POINT HERE IF ERROR) +* 1 = HIGHEST SCORE IN TABLE +* N = NTH SCORE +* +* A1 = OUTPUT OF CHECKSUM ROUTINE (BYTE) +* +* A7 = POINTER TO CURRENT ENTRY +* +* A4,A5,A6 SCRATCH +* +************************************************************************** +* +* FORM_HS_CKSUM +* +* THIS IS CALLED TO FORM THE CHECKSUM FOR THE SCORE +* NUMBER IN A0. (RAM POINTER ASSUMED IN A9). +* CHECKSUM IS RETURNED IN A1. THIS IS A *BYTE*. +* +* CHECKSUM IS COMPUTED AS THE COMPLEMENT OF THE SIMPLE SUM +* OF THE BYTES IN THE ENTRY. +* +* THIS ROUTINE RETURNS WITH THE Z BIT SET (.EQ.) IF THE +* CHECKSUM FOR THIS ENTRY MATCHES. +* +************************************************************************** +FORM_HS_CKSUM: + MMTM SP,A0,A4,A6,A7 + CALLR PT_ENTRY ;A7 = POINTER TO CURRENT ENTRY + MMTM SP,A7 ;SAVE POINTER TO ENTRY + MOVI HS_BYTES_TO_CHECK,A4 ;COUNT DOWN THE BYTES + CLR A1 ;KEEP SUM IN A1 +ADD_A_BYTE: + CALLR RC_BYTEI ;GET A BYTE INTO A0 + ADD A0,A1 ;ADD TO SUM + DSJ A4,ADD_A_BYTE ;ONE MORE ADDED + NOT A1 ;CHECKSUM IS NOW IN LOW BYTE + ANDI BYTE_MASK,A1 ;MASK SO ITS COOL + MMFM SP,A7 ;GET POINTER BACK + ADDI HS_CKBYTE,A7 ;POINT AT CHECKBYTE + CALLR RC_BYTE ;READ IN THE BYTE + CMP A0,A1 ;COMPARE WHAT'S THERE TO WHAT WE GOT + MMFM SP,A0,A4,A6,A7 ;Z BIT RETURNS COMPARE + RETS ;A1 RETURNS CKSUM + +************************************************************************** +* +* FORM_HS_CKSUM_AND_STORE +* +* THIS IS USED TO SET THE CHECKSUM FOR THE CURRENT +* ENTRY (A0) TO THE CORRECT VALUE. +* +************************************************************************** +FORM_HS_CKSUM_AND_STORE: + MMTM SP,A0,A7 + CALLR FORM_HS_CKSUM ;GET THE CKSUM IN A1, POINTER IN A7 + CALLR PT_ENTRY ;POINT AT THE VALUE + ADDI HS_CKBYTE,A7 ;POINT AT CHECKBYTE + MOVE A1,A0 ;GET CHECKBYTE TO A0 + CALLR WC_BYTE ;WRITE OUT THE BYTE + MMFM SP,A0,A7 + RETS + +************************************************************************** +* +* PT_ENTRY +* +* THIS IS CALLED TO POINT AT A GIVEN ENTRY OF +* THE HIGH SCORE TABLE. THIS ROUTINE BASES +* ACTIVITY ON ROM POINTER IN A8. IT FETCHES +* FRESH COPIES OF THE A9 RAM POINTER AND THE +* A10 ENTRY COUNTER. IT RETURNS THE ENTRY +* POINTER IN A7. +* +* A0 SPECIFIES WHICH ENTRY TO POINT AT +* A8,A9,A10 AND SYSCTRL ASSUMED SET PROPERLY +* A7 RETURNED POINTING TO THAT ENTRY +* +************************************************************************** +PT_ENTRY: + CMP A10,A0 ;A10 IS MAX VALUE + JRLS POINTER_IN_RANGE + + .IF DEBUG + LOCKUP + .ENDIF + + MOVE A9,A7 ;RETURN ZERO OFFSET IN FIELD + RETS + +POINTER_IN_RANGE: + MOVI HS_SIZE,A7 ;SIZE OF ENTRY + MPYU A0,A7 ;OFFSET OF ENTRY + ADD A9,A7 ;ADD IN THE BASE + RETS + +************************************************************************** +* +* ROM_PTRS +* +* THIS IS CALLED TO LOAD UP THE ROM STRUCTURE +* DATA INTO REGISTERS. +* +* THIS ALSO SETS UP STATUS WORD TO SELECT THE CMOS +* BANK SELECT FOR WHERE THE PARTICULAR TABLE RESIDES. +* +* INPUT A8=HSTD STRUCTURE ROM POINTER. +* +* OUTPUT A9 = CMOS RAM POINTER TO BASE OF TABLE +* OUTPUT A10= LAST ENTRY IN TABLE. TABLE WILL +* HAVE A10+1 ENTRIES SINCE ENTRY +* 0 IS A FILLER. +* +************************************************************************** +ROM_PTRS: + MMTM SP,A0,A1 ;SCRATCH REGGIES + MOVE *A8(TB_POINTER),A9,L ;GET CMOS POINTER + MOVE *A8(TB_COUNT),A10,W ;GET NUMBER OF ENTRIES + MOVE *A8(TB_PAGE_BITS),A1 ;GET OUR CMOS PAGE BITS + + CALLR SET_PAGE + + MMFM SP,A0,A1 ;SCRATCH REGGIES + RETS + +************************************************************************** +* +* SET_PAGE +* +* This is called to set the CMOS page to the bits +* contained in A1. +* +************************************************************************** +SET_PAGE +; MMTM SP,A0,A1 +; ANDI CMOS_PAGE_SELECT_BITS,A1 ;KILL SIGN EXTEND..SAVE BITS +; PUSHST ;SAVE INTERRUPT STATUS +; DINT ;STOP INTERRUPTS +; MOVE @SYSCOPY,A0,W ;GET THE RAM COPY +; ANDNI CMOS_PAGE_SELECT_BITS,A0 ;REMOVE THE CURRENT PAGE SELECT +; OR A1,A0 ;ADD IN OUR BITS +; MOVE A0,@SYSCOPY,W ;PUT THEM BACK IN THE RAM COPY +;; MOVE A0,@SYSCTRL,W ;NOW THE HARDWARE +; POPST ;OK TO RE-START INTS +; MMFM SP,A0,A1 + RETS + +************************************************************************** +* +* INIT_TAB +* +* This entrypoint is called at power up to +* clear out "today's" high score table. We do +* this job, and then we do the job on the +* all time table for high score reset if +* necessary. +* +************************************************************************** +INIT_TAB + RETS + +#************************************************************************* +* +* INIT_HSTRING +* +* Initializes the special name of the top scorer on the table. + + SUBR INIT_HSTRING + MOVI AUD_WINSTREAK,A0 + CALLA KILL_AUD + MOVI AUD_PINSPEED,A0 + CALLA KILL_AUD + MOVI AUD_BEATEN,A0 + CALLA KILL_AUD + MOVI AUD_TAG,A0 + CALLA KILL_AUD + rets + + +#************************************************************************* +* +* INIT_TB +* +* THIS IS CALLED TO SETUP A HIGH SCORE TABLE WITH +* FACTORY ENTRIES. +* +* A8 = ROM TABLE POINTER +* +************************************************************************** + SUBR INIT_TB + + MMTM SP,A5,A6,A7,A0 + CALLR ROM_PTRS ;STUFF TABLE DATA + MOVE *A8(TB_FACTORY),A6,L ;GET THE FACTORY TABLE + MOVE A10,A5 ;NUMBER OF VALID ENTRIES + INC A5 ;1 MORE TO HOLD ZERO ENTRY + MOVI HS_SIZE_IN_BYTES,A1 ;SIZE OF 1 ENTRY + MPYU A1,A5 ;A7 HAS NUMBER OF WORDS TO MOVE + MOVE A9,A7 ;CMOS POINTER IN A7 + +INIT_TB_1 + MOVB *A6,A0 ;GET A BYTE FROM ROM + ADDI BYTE_SIZE,A6 ;KICK ROM POINTER + CALLR WC_BYTEI ;WRITE THE BYTE AND INCREMENT + DSJS A5,INIT_TB_1 ;UNTIL THEY'RE ALL THERE. + + MOVE A10,A0 ;POINT AT LAST ENTRY +INIT_TB_2 + CALLR FORM_HS_CKSUM_AND_STORE ;SET ITS CHECKSUM + DEC A0 ;MOVE DOWN + JRNN INIT_TB_2 ;SET EACH ONE INCLUDING ZERO + MMFM SP,A5,A6,A7,A0 + + RETS + +#************************************************************************* +* +* COPY_ENTRY +* +* THIS IS CALLED TO COPY 1 ENTRY OF THE TABLE TO A +* DIFFERENT LOCATION IN THE TABLE. +* +* A8,A9,A10,SYSCTRL ASSUMED TO BE SETUP ALREADY +* A2 = SOURCE ENTRY (NUMBER) +* A3 = DESTINATION ENTRY (NUMBER) +* +************************************************************************** +COPY_ENTRY: + MMTM SP,A0,A4,A5,A6,A7 + MOVI HS_SIZE_IN_BYTES,A4 ;ENTRY SIZE IN BYTES + MOVE A2,A0 ;FIRST POINT FOR A0 + CALLR PT_ENTRY + MOVE A7,A6 ;A6 = SOURCE POINTER + MOVE A3,A0 + CALLR PT_ENTRY ;A5 = DESTINATION + MOVE A7,A5 +COPY_LOOP: +* +* IN THIS LOOP WE MOVE A BYTE AT A TIME. +* SINCE THE WORD AND LONG DO THE SHIFTING AND +* MASKING AND CALL MULTIPLE ROUTINES, THIS IS +* THE MOST EFFICIENT MODE OF OPERATION. +* + MOVE A6,A7 ;SOURCE IN CMOS REGGIE + CALLR RC_BYTEI ;FETCH A WORD + MOVE A7,A6 + MOVE A5,A7 ;DESTINATION + CALLR WC_BYTEI ;WRITE IT + MOVE A7,A5 ;BACK TO DEST REGGIE + DSJ A4,COPY_LOOP ;UNTIL ALL WORDS ARE COPIED + MMFM SP,A0,A4,A5,A6,A7 + RETS + +************************************************************************** +* +* VAL_TAB +* +* THIS ROUTINE IS CALLED WHEN WE ARE INTERESTED IN +* THE HSTD TABLE DATA. A8 CONTAINS THE ROM POINTER +* FOR THE TABLE. FOR ANY ENTRIES THAT WE THROW +* OUT, WE MOVE THE REST OF THE TABLE UP, AND CREATE +* A NEW ENTRY AT THE END OF THE TABLE. +* +* A2 = 0 ON OUTSIDE CALL. +* A2 = 1 ON RECURSIVE CALL (THE CHECK AFTER RE-INIT) +* +* THERE ARE 3 CHECKS MADE FOR EACH ENTRY: +* +* 1) IS CHECKSUM CORRECT. +* 2) IS SCORE ALL NUMERIC +* 3) ARE INITIALS ALL VALID ENTRIES. +* +* OUTPUT CC = TABLE OK +* CS = PROBLEM THAT CAN'T BE RECTIFIED +* (PROBABLY BAD RAM) +* +* A2 = 0 ...table ok, or cleaned up +* A2 otherwise meanes table initialized +* +************************************************************************** +VAL_TAB + CLR A2 ;indicate first call in + CALLR DO_VALIDATE ;validate + RETS + +DO_VALIDATE + MMTM SP,A0,A1,A3,A4,A5,A6,A7 + CALLR ROM_PTRS ;SETUP FOR TABLE + MOVI 1,A0 ;ITERATE THROUGH THE ENTRIES + CLR A1 ;COUNT ERRORS + +CHECK_A0_ENTRY: + CALLR CHECK_ENTRY ;IS THE ENTRY OK? + JRNC VT_1 ;YEP. + + CALLR REMOVE_ENTRY ;REMOVE THIS ENTRY + INC A1 + MOVE *A8(TB_ERROR_COUNT),A3 ;GET THRESHOLD + CMP A3,A1 ;ARE WE THERE? + JRLO CHECK_A0_ENTRY ;NOPE...CHECK MOVE UP ENTRY AT A0 +* +* TABLE IS MESSED UP....RE-INITIALIZE IT PLEASE +* + MOVE A2,A2 ;IS THIS RECURSIVE CHECK AFTER INIT? + JRNZ CANT_VALIDATE ;THEN RETURN FAILURE + + CALLR INIT_TB ;INIT THIS TABLE PLEASE + CALLR INIT_HSTRING + MOVK 1,A2 ;INDICATE RECURSIVE CALL + CALLR DO_VALIDATE ;IS IT ALRIGHT NOW? + MMFM SP,A0,A1,A3,A4,A5,A6,A7 + RETS +* +* LAST ENTRY WAS VALID...MOVE TO NEXT +* +VT_1: + INC A0 ;KICK IT + CMP A10,A0 ;STILL IN TABLE? + JRLS CHECK_A0_ENTRY ;YEP....CHECK THIS ENTRY + + CLRC ;RETURN VALID! + MMFM SP,A0,A1,A3,A4,A5,A6,A7 + RETS + +CANT_VALIDATE: + SETC ;RETURN FAILURE! + MMFM SP,A0,A1,A3,A4,A5,A6,A7 + RETS + +************************************************************************** +* +* CHECK_ENTRY +* +* THIS IS CALLED TO CHECK THE ENTRY INDICATED BY A0. +* +* CC = OK +* CS = ENTRY BAD +* +************************************************************************** +CHECK_ENTRY + MMTM SP,A0,A1,A2,A3,A7 + CALLR FORM_HS_CKSUM ;CHECK OUT CKSUM FIRST + JRNZ CHECK_FAIL ;BAD CHECKSUM....ITS BAD +* +* CHECKSUM OK...CHECK SCORE +* + CALLR GET_HSCR ;SCORE IN A1 + MOVE A1,A3 ;SAVE COPY OF SCORE + +CHECK_DIGIT: + MOVE A1,A2 ;COPY FOR NEXT NIBBLE + ANDI 0FH,A2 ;MASK THE NIBBLE + CMPI 9,A2 + JRHI CHECK_FAIL ;NIBBLE TOO HIGH + SRL 4,A1 ;SHIFT DOWN TO NEXT NIBBLE + JRNZ CHECK_DIGIT + + DEC A0 ;MAKE SURE WE ARE LOWER THAN PREVIOUS SCORE! + JREQ FIRST_ENT ;WE'RE THE 1ST IN THE TABLE + + CALLR GET_HSCR ;GET THE SCORE FOR THE GUY BEFORE US +; CMP A1,A3 ;OURS MUST BE LOWER OR SAME +; JRHI CHECK_FAIL ;OURS IS BIGGER....REMOVE US + +FIRST_ENT: + INC A0 ;RESTORE THE ENTRY NUMBER +* +* SCORE OK...CHECK INITIALS +* + CALLR PT_ENTRY ;POINT A7 AT ENTRY + ADDI HS_INITS,A7 ;POINT AT FIRST INITIAL + MOVI NUM_INITS,A2 ;THIS IS NUMBER OF INITIALS + +NEXT_LETTER: + CALLR RC_BYTEI ;FETCH A BYTE + + CALLR VERIFY_LETTER ;SEE IF ITS VALID. + JRC CHECK_FAIL ;NOT A LETTER...BYTE + + DSJ A2,NEXT_LETTER + + CLRC ;RETURN PASS + MMFM SP,A0,A1,A2,A3,A7 + RETS + +CHECK_FAIL: + SETC + MMFM SP,A0,A1,A2,A3,A7 + RETS + + +************************************************************************** +* +* VERIFY_LETTER +* +* THIS IS CALLED FOR EACH INITIAL LETTER TO SEE +* IF ITS VALID. +* +* CC = VALID +* CS = NOT VALID +* +************************************************************************** + +VERIFY_LETTER: + ANDI BYTE_MASK,A0 ;KEEP JUST THE BYTE + + CMPI '.',A0 ;SPACE? + JREQ VERIFY_PASS ;ITS OK. + + CMPI '!',A0 ;SPACE? + JREQ VERIFY_PASS ;ITS OK. + + CMPI '%',A0 ;SPACE? + JREQ VERIFY_PASS ;ITS OK. + + CMPI '?',A0 ;SPACE? + JREQ VERIFY_PASS ;ITS OK. + + CMPI SPACE,A0 ;SPACE? + JREQ VERIFY_PASS ;ITS OK. + + CMPI LET_A,A0 ;BETWEEN A-Z? + JRLO VERIFY_FAIL + + CMPI LET_Z,A0 + JRHI VERIFY_FAIL + +VERIFY_PASS: + CLRC + RETS + +VERIFY_FAIL: + SETC + RETS + +************************************************************************** +* +* REMOVE_ENTRY +* +* THIS IS CALLED TO REMOVE A BAD ENTRY FROM THE TABLE. +* IT DELETES THE ENTRY INDICATED BY A0. +* +* IT BUBBLES THE REST OF THE TABLE UP 1 UNIT. +* +* IT THEN PUTS THE LOWEST SCORE FROM THE ROM TABLE +* WITH INITIALS IN THAT ENTRY. +* +************************************************************************** +REMOVE_ENTRY: + MMTM SP,A0,A1,A2,A6,A7 + MOVE A0,A3 ;THIS IS DEST + MOVE A3,A2 ;SOURCE IS 1 BELOW + +BUBBLE_ANOTHER: + INC A2 ;NOW WE'RE SET FOR A COPY... + + CMP A10,A2 ;IS SOURCE OUT OF RANGE? + JRHI BUBBLE_DONE ;YEP....WE'RE AT THE BOTTOM (A3) + + CALLR COPY_ENTRY + INC A3 + JRUC BUBBLE_ANOTHER + +BUBBLE_DONE: + MOVE A3,A0 ;THIS IS BOTTOM OF TABLE + CALLR PT_ENTRY ;A7 POINTS AT CMOS BLOCK + + MOVE *A8(TB_FACTORY),A6,L ;GET FACTORY TABLE + MOVI HS_ROM_SIZE,A1 ;SIZE OF ENTRY + MPYU A10,A1 ;TIMES NUMBER OF VALID ENTRIES..POINTS AT LAST. + ADD A1,A6 ;NOW WE POINT AT END OF ROM TABLE + MOVI HS_SIZE_IN_BYTES,A2 ;SIZE OF ENTRY + +REPLACE_LOOP: + MOVB *A6,A0 ;MOVE A ROM BYTE TO A0 + ADDI BYTE_SIZE,A6 + CALLR WC_BYTEI ;WRITE THE WORD AND INCREMENT + DSJ A2,REPLACE_LOOP ;UNTIL THEY'RE ALL THERE. + + MOVE A10,A0 ;POINT AT "LAST" ENTRY + CALLR FORM_HS_CKSUM_AND_STORE ;STORE THE CHECKBYTE + MMFM SP,A0,A1,A2,A6,A7 ;AND RETURN + RETS + +************************************************************************** +* +* CMOS UTILITIES +* +************************************************************************** + +************************************************************************** +* +* FOR ALL OF THESE CMOS ROUTINES. +* +* A7 = POINTER TO MEMORY +* A0 = DATA TO/FROM MEMORY +* +************************************************************************** +* +* **** IMPORTANT NOTE ON WORD AND LONG WORD PACKING **** +* +* NOTE THAT REQUESTS FOR WORDS RETURN THE 2 BYTES PACKED +* INTO A WORD AS <1ST BYTE><2ND BYTE>. THIS IS NOT +* THE SAME WAY THAT THE GSP HANDLES A WORD POINTED AT +* WITH A POINTER. +* +* LONG WORDS WORK SIMILARLY: +* +* MSB LSB +* <1ST BYTE> <2ND BYTE> <3RD BYTE> <4TH BYTE> +* +* TOUGH LUCK INTEL HACKERS! +* +* +* RC_BYTE +* WC_BYTE +* +* These 2 routines are the only routines that ever touch +* CMOS ram. This is done to localize the effect of +* changes in the architecture. All efforts to deal with +* CMOS should come through these routines. Locking +* hardware will be easily added in the future (as well +* as different memory mapping). + + + +RC_BYTE +; move @SYSCOPY,a0 +; sll 32-2,a0 +; srl 32-2,a0 +; sll 15,a0 ;Page offset +; add a7,a0 + movb *a7,a0 + sll 32-8,a0 + srl 32-8,a0 + rets + +WC_BYTE +; MOVE A1,-*SP,L +; move @SYSCOPY,a1 +; sll 32-2,a1 +; srl 32-2,a1 +; sll 15,a1 ;Page offset +; add a7,a1 +; move a7,a1 + move a0,@CMOSWE + movb a0,*a7 +; MMFM SP,A1 + rets + + +************************************************************************** +* +* RC_BYTEI +* +* READ BYTE POINTED TO BY A7...INCREMENT POINTER TO +* "NEXT" BYTE. +* +************************************************************************** +RC_BYTEI: + CALLR RC_BYTE + ADDI C_BYTE_SIZE,A7 ;WORDS SEPARATE CMOS BYTES. + MOVE A0,A0 ;RETURN FLAGS ACCORDINGLY + RETS + +RC_WORD: + MMTM SP,A1,A7 ;USE A1 TO COMBINE BYTES + CALLR RC_BYTEI ;GET A BYTE + MOVE A0,A1 ;SAVE IN A1 + ANDI BYTE_MASK,A1 ;MASK ONLY BYTE + SLL 8,A1 ;SHIFT TO HIGH BYTE + CALLR RC_BYTE ;GET THE 2ND BYTE + ANDI BYTE_MASK,A0 + OR A1,A0 ;A0 HAS THE WORD + MMFM SP,A1,A7 + RETS + +RC_WORDI: + CALLR RC_WORD + ADDI C_WORD_SIZE,A7 ;LONG SEPARATE CMOS WORDS. + MOVE A0,A0 ;RETURN FLAGS ACCORDINGLY + RETS + +RC_LONG: + MMTM SP,A1,A7 ;USE A1 TO COMBINE BYTES + CALLR RC_WORDI ;GET A WORD + MOVE A0,A1 ;SAVE IN A1 + ANDI WORD_MASK,A1 ;MASK ONLY WORD + SLL 16,A1 ;SHIFT TO HIGH WORD + CALLR RC_WORD ;GET THE 2ND WORD + ANDI WORD_MASK,A0 + OR A1,A0 ;A0 HAS THE LONG WORD + MMFM SP,A1,A7 + RETS + +RC_LONGI: + CALLR RC_LONG + ADDI C_LONG_SIZE,A7 ;DOUBLE THE DISTANCE FOR BRAIN DAMIJ + MOVE A0,A0 ;RETURN FLAGS ACCORDINGLY + RETS + +WC_BYTEI: + CALLR WC_BYTE + ADDI C_BYTE_SIZE,A7 + RETS + +WC_WORD: + MMTM SP,A0,A1,A7 + MOVE A0,A1 ;MAKE COPY OF WORD + SRL 8,A0 ;GET HIGH BYTE IN A0 + CALLR WC_BYTEI ;WRITE THE HIGH BYTE + MOVE A1,A0 ;NOW GET THE LOW BYTE BACK + CALLR WC_BYTE ;WRITE IT + MMFM SP,A0,A1,A7 ;AND RESTORE ALL WE TOUCHED + RETS + +WC_WORDI: + CALLR WC_WORD + ADDI C_WORD_SIZE,A7 + RETS + +WC_LONG: + MMTM SP,A0,A1,A7 + MOVE A0,A1 ;MAKE COPY OF LONG + SRL 16,A0 ;GET HIGH WORD IN A0 + CALLR WC_WORDI ;WRITE THE HIGH WORD + MOVE A1,A0 ;NOW GET THE LOW WORD BACK + CALLR WC_WORD ;WRITE IT + MMFM SP,A0,A1,A7 ;AND RESTORE ALL WE TOUCHED + RETS + +WC_LONGI: + CALLR WC_LONG + ADDI C_LONG_SIZE,A7 + RETS + +***************************************************************************** +***************************************************************************** +***** +***** DEFAULT ROM HSTD TABLES AND TABLE DEFINITIONS +***** +***************************************************************************** +***************************************************************************** + +TB_POINTER EQU 0 ;LONG-POINTER TO BEGINNING OF TABLE +TB_COUNT EQU TB_POINTER+LONG_SIZE ;WORD....# IN THE TABLE. +TB_VISIBLE EQU TB_COUNT+WORD_SIZE ;WORD....NUMBER DISPLAYED +TB_PAGE_BITS EQU TB_VISIBLE+WORD_SIZE ;WORD....STATUS WORD FOR CMOS PAGE +TB_FACTORY EQU TB_PAGE_BITS+WORD_SIZE ;LONG....ROM STARTUP TABLE +TB_ERROR_COUNT EQU TB_FACTORY+LONG_SIZE ;WORD....NUM ERRORS TO RE-INIT + + +;SCRM .MACRO a,b +SCRM .MACRO a + .byte :a:/>1000000,:a:/>10000&>ff,:a:/>100&>ff,:a:&>ff +; .byte ":b:",0 + .ENDM + +STREAK_ROM_TABLE + SCRM >22122145 ;****ZERO ENTRY...NOT SEEN! + .BYTE "EPJA.",0 +ROM_ENTRY_SIZE EQU $-STREAK_ROM_TABLE + SCRM >11 + .BYTE "MJTA.",0 + SCRM >10 + .BYTE "SALB.",0 + SCRM >9 + .BYTE "JMSC.",0 + SCRM >9 + .BYTE "JYTD.",0 + SCRM >8 + .BYTE "MJLE.",0 + SCRM >8 + .BYTE "JAKF.",0 + SCRM >7 + .BYTE "OEGA.",0 + SCRM >7 + .BYTE "SL A.",0 + SCRM >7 + .BYTE "MDPA.",0 + + SCRM >6 + .BYTE "GBSA.",0 + SCRM >6 + .BYTE "DJTA.",0 + SCRM >6 + .BYTE "EPJA.",0 + SCRM >5 + .BYTE "BIFA.",0 + SCRM >5 + .BYTE "UNKA.",0 + SCRM >5 + .BYTE "UTBA.",0 + SCRM >4 + .BYTE "CRLA.",0 + SCRM >4 + .BYTE "TDGA.",0 + SCRM >4 + .BYTE "ASBA.",0 +STREAK_TABLE_ENTRIES EQU ($-STREAK_ROM_TABLE)/ROM_ENTRY_SIZE + +PIN_SPEED_TAB_ROM_TABLE + + SCRM >7000 ;****ZERO ENTRY...NOT SEEN! + .BYTE "EPJA.",0 + SCRM >6000 + .BYTE "MJTI.",0 + SCRM >6100 + .BYTE "SALI.",0 + SCRM >6200 + .BYTE "JMSG.",0 + SCRM >6300 + .BYTE "JYTF.",0 + SCRM >6400 + .BYTE "JAKE.",0 + SCRM >6500 + .BYTE "OEGD.",0 + SCRM >6600 + .BYTE "MJLC.",0 + SCRM >6700 + .BYTE "UTBB.",0 + SCRM >6800 + .BYTE "ASBA.",0 + +PIN_SPEED_TAB_ENTRIES EQU ($-PIN_SPEED_TAB_ROM_TABLE)/ROM_ENTRY_SIZE + +BEATEN_ROM_TABLE + SCRM >22122145 ;****ZERO ENTRY...NOT SEEN! + .BYTE "EPJAB",0 +B_ROM_ENTRY_SIZE EQU $-BEATEN_ROM_TABLE + SCRM >11101 + .BYTE "MIKE ",0 + SCRM >1001 + .BYTE "JAMIT",0 + SCRM >100 + .BYTE "TEAL ",0 + SCRM >1000 + .BYTE "DINK ",0 + SCRM >10000 + .BYTE "JAKE ",0 + SCRM >100000 + .BYTE "DRJ ",0 + SCRM >1000000 + .BYTE "CHICK",0 + SCRM >10000000 + .BYTE "SHAWN",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 +BEATEN_TAB_ENTRIES EQU ($-BEATEN_ROM_TABLE)/B_ROM_ENTRY_SIZE + +INTER_ROM_TABLE + SCRM >22122145 ;****ZERO ENTRY...NOT SEEN! + .BYTE "EPJAB",0 +I_ROM_ENTRY_SIZE EQU $-INTER_ROM_TABLE + SCRM >111 + .BYTE "MARK ",0 + SCRM >101 + .BYTE "SAL ",0 + SCRM >100 + .BYTE "JASON",0 + SCRM >1000 + .BYTE "LICK ",0 + SCRM >10000 + .BYTE "JAKE ",0 + SCRM >100000 + .BYTE "DIESL",0 + SCRM >1000000 + .BYTE "FUJI ",0 + SCRM >10000000 + .BYTE "SHAWN",0 + SCRM >1000000 + .BYTE "BIFF ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 + SCRM >0000000 + .BYTE " ",0 +INTER_TAB_ENTRIES EQU ($-INTER_ROM_TABLE)/I_ROM_ENTRY_SIZE + +TAG_ROM_TABLE + SCRM >22122145 ;****ZERO ENTRY...NOT SEEN! + .BYTE "EPJAB",0 +T_ROM_ENTRY_SIZE EQU $-TAG_ROM_TABLE + SCRM >9000 + .BYTE "BOON ",0 + SCRM >9000 + .BYTE "SAL ",0 + SCRM >9500 + .BYTE "ERMAC",0 + SCRM >9500 + .BYTE "KANO ",0 + SCRM >10000 + .BYTE "SONYA",0 + SCRM >10000 + .BYTE "GENE ",0 + SCRM >10500 + .BYTE "MIKE ",0 + SCRM >10500 + .BYTE "SHAWN",0 + SCRM >11000 + .BYTE "JASON",0 + SCRM >11000 + .BYTE "JOSH ",0 + SCRM >11500 + .BYTE "JOHN ",0 + SCRM >11500 + .BYTE "JAKE ",0 + SCRM >12000 + .BYTE "JOE ",0 + SCRM >12000 + .BYTE "EDWIN",0 + SCRM >12500 + .BYTE "BILL ",0 + SCRM >12500 + .BYTE "MARKP",0 + SCRM >13000 + .BYTE "STEVE",0 + SCRM >13000 + .BYTE "TONY ",0 +TAG_TAB_ENTRIES EQU ($-TAG_ROM_TABLE)/T_ROM_ENTRY_SIZE + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/IMG/ADAM.BAT b/IMG/ADAM.BAT new file mode 100644 index 0000000..ec534c0 --- /dev/null +++ b/IMG/ADAM.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld adam adm_hit.img adm_kik.img adm_msc.img adm_pnc.img adm_wlk.img +@copy adam.ld1 + adam.ld2 adam.lod +@move adam.h ..\adamimg.h +@move adam.seq .. + \ No newline at end of file diff --git a/IMG/ADAM.LD1 b/IMG/ADAM.LD1 new file mode 100644 index 0000000..1687f34 --- /dev/null +++ b/IMG/ADAM.LD1 @@ -0,0 +1,10 @@ +ASM> adamimg.tbl +***> 5101774,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* ADAM ******************************************************************* +ZON> +MON> +BON> +; diff --git a/IMG/ADAM.LOD b/IMG/ADAM.LOD new file mode 100644 index 0000000..8380eed --- /dev/null +++ b/IMG/ADAM.LOD @@ -0,0 +1,111 @@ +ASM> adamimg.tbl +***> 5101774,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* ADAM ******************************************************************* +ZON> +MON> +BON> +; +adm_hit.img +---> A4AH4C01,A4AH4C02,A4AH4C03,A4AH4C04,A4AH4C05,A4AH4C06,A2AH2A01 +---> A2AH2A02,A2AH2A03,A2AH2A04,A2AH2A05,A2AH2A06,A4AM4B01,A4AM4B02 +---> A4AM4B03,A4AM4B04,A4AM4B05,A4AM4B06,A4AM4B07,A2AM2A01,A2AM2A02 +---> A2AM2A03,A2AM2A04,A2AM2A05,A2AM2A06,A2AM2A07,A3AE4A01,A3AE4A02 +---> A3AE4A03,A3AE4A04,A3AE4A05,A3AE4A06,A3AE4A07,A3AE2A01,A3AE2A02 +---> A3AE2A03,A3AE2A04,A3AE2A05,A3AE2A06,A3AE2A07,A4BK3C01,A4BK3C02 +---> A4BK3C03,A4BK3C04,A4BK3C05,A4BK3C06,A4BK3C07,A4BK3C08,A2BK3B01 +---> A2BK3B02,A2BK3B03,A2BK3B04,A2BK3B05,A2BK3B06,A2BK3B07,A2BK3B08 +---> A4LB4A01,A4LB4A02,A4LB4A03,A4LB4A04,A4LB4A05,A4LB4A06,A4LB4A07 +---> A2LB2B01,A2LB2B02,A2LB2B03,A2LB2B04,A2LB2B05,A2LB2B06,A3CP3A01 +---> A3CP3A02,A3CP3A04,A3CP3A05,A3CP3A06,A3CP3A07,A3CP3A08,A3CP3D01 +---> A3CP3D02,A3CP3D03,A3CP3D04,A3CP3D05,A3CP3D06,A3FH3A01,A3FH3A02 +---> A3FH3A03,A3FH3A04,A3FH3A05,A3FH3A06,A3FH3A07,A3FH3A08,A3FD3B01 +---> A3FD3B02,A3FD3B03,A3FD3B04,A3FD3B05,A3FD3B06,A3FD3B07,A3GU4A01 +---> A3GU4A02,A3GU4A03,A3GU4A04,A3GU4A05,A3GU4A06,A3GU4A07,A3GU4A08 +---> A3GU2A01,A3GU2A02,A3GU2A03,A3GU2A04,A3GU2A05,A3GU2A06,A3GU2A07 +---> A3GU2A08 +adm_kik.img +---> A4KM3C01,A4KM3C02,A4KM3C03,A4KM3C04,A4KM3C05,A4KM3C06,A4KM3C07 +---> A4KM3C08,A4KM3C09,A4KM3C10,A2KM3A01,A2KM3A02,A2KM3A03,A2KM3A04 +---> A2KM3A05,A2KM3A06,A2KM3A07,A4NM3A01,A4NM3A02,A4NM3A03,A4NM3A04 +---> A4NM3A05,A4NM3A06,A4NM3A07,A2NM3A01,A2NM3A02,A2NM3A03,A2NM3A04 +---> A2NM3A05,A2NM3A06,A2NM3A07,A4BG3A01,A4BG3A02,A4BG3A03,A4BG3A04 +---> A4BG3A05,A4BG3A06,A4BG3A07,A4BG3A08,A4BG3A09,A2BG3A01,A2BG3A03 +---> A2BG3A04,A2BG3A05,A2BG3A06,A2BG3A07,A2BG3A08,A2BG3A09,A4MP4B03 +---> A4MP4B04,A4MP4B05,A4MP4B06,A4MP4B07,A4MP4B01,A4MP4B02,A3DC3B03 +---> A3DC3B04,A3DC3B05,A3DC3B06,A3DC3B07,A3DC3B08,A3DC3B09,A3GD4A02 +---> A3GD4A03,A3GD4A04,A3GD4A05,A3GD4A06,A3GD4A07,A3GD4A08,A3GD2A01 +---> A3GD2A02,A3GD2A03,A3GD2A04,A3GD2A05,A3GD2A06,A3GD2A07,A3GD2A08 +---> A2JT2A01,A2JT2A02,A2JT2A03,A2JT2A04,A2JT2A05,A2JT2A06,A2JT2A07 +---> A2JT2A08 +adm_msc.img +---> A4BF3A01,A4BF3A02,A4BF3A03,A4BF3A04,A3BF3A01,A3BF3A02,A3BF3A03 +---> A3BF3A04,A3BF3A05,A3BF3A06,A3BF3A07,A3BF3A08,A3BF3A09,A3ZM3C01 +---> A3ZM3C02,A3ZM3C03,A3ZM3C04,A3ZM3C05,A3ZM3C06,A3ZM3C07,A3ZM3C08 +---> A3ZM3C09,A3ZM3C10,A4GH3A01,A4GH3A02,A4GH3A03,A4GH3A04,A4GH3A05 +---> A4GH3A06,A3PD3A01,A3PD3A02,A3PD3A03,A3PD3A04,A3PD3A05,A3PD3A06 +---> A3PD3A07,A3PD3A08,A4FG3A01,A4FG3A02,A4FG3A03,A4FG3A04,A4FG3A05 +---> A4FG3A06,A4GR3B04,A4GR3B05,A4GR3B06,A4GR3B07,A2FG3A01,A2FG3A02 +---> A2FG3A03,A2FG3A04,A2FG3A05,A2FG3A06,A2GR3Z05,A2GR3Z06,A2GR3Z07 +---> A2GR3Z08,A3RL1A01,A3RL1A02,A3RL1A03,A3RL1A04,A3RL1A05,A3RL1A06 +---> A3RL1A07,A3RL1A08,A3RL1A09,A4PM4A01,A4PM4A02,A4PM4A03,A4PM4A04 +---> A4PM4A05,A4PM4A06,A4PM4A07,A4PM4A08,A4SB4A01,A4SB4A02,A4SB4A03 +---> A4SB4A04,A4SB4A05,A4SB4A06,A4SB4A07,A4SB4A08,A4GF3A01,A4GF3A02 +---> A4GF3A03,A4GF3A04,A4GF3A05,A4GF3A06,A4GF3A07,A4GF3A08,A4GF3A09 +---> A4GF3A10,A4GF3A11,A4GF3A12,A4SW4A01,A4SW4A02,A4SW4A03,A4SW4A04 +---> A4SW4A05,A3PO4B01,A3PO4B02,A3PO4B03,A3PO4B04,A3PO4B05,A3PO4B06 +---> A3PO4B07,A4UT4Z01,A4UT4Y01,A3LC3A01,A3LC3A02,A3LC3A03,A3LC3A04 +---> A3LC3A05,A3LC3A06,A3LC3A07,A3LC3A08,A3LC3A09,A3RC3A01,A3RC3A02 +---> A3RC3A03,A3RC3A04,A3RC3A05,A3RC3A06,A3RC3A07,A3RC3A08 +adm_pnc.img +---> A4UP3A01,A4UP3A02,A4UP3A03,A4UP3A04,A4UP3A05,A4UP3A06,A4UP3A07 +---> A4UP3A08,A2UP3A01,A2UP3A03,A2UP3A04,A2UP3A05,A2UP3A06,A2UP3A07 +---> A2UP3A08,A4OT3A01,A4OT3A02,A4OT3A03,A4OT3A04,A4OT3A05,A4OT3A06 +---> A4OT3A07,A4UT3A01,A4UT3A02,A4UT3A03,A4UT3A04,A4UT3A05,A4UT3A06 +---> A4UT3A07,A4UT3A08,A4MK3B01,A4MK3B02,A4MK3B03,A4MK3B04,A4MK3B05 +---> A4MK3B06,A4MK3B07,A4MK3B08,A4MK3B09,A4MK3B10,A4MK3B11,A4SC5B01 +---> A4SC5B02,A4SC5B03,A4SC5B04,A4SC5B05,A4SC5B06,A4SC5B07,A2SC1A01 +---> A2SC1A02,A2SC1A03,A2SC1A04,A2SC1A05,A2SC1A06,A2SC1A07,A2SC1A08 +---> A2PU3G01,A2PU3G02,A2PU3G03,A2PU3G04,A2PU3G05,A2PU3G06,A2PU3G07 +---> A2PU3G08,A4PU3B01,A4PU3B02,A4PU3B03,A4PU3B04,A4PU3B05,A4PU3B06 +---> A4PU3B07,A4PU3B08,A4PU3C01,A4PU3C02,A4PU3C03,A4PU3C04,A4PU3C05 +---> A4PU3C06,A4PU3C07,A4PU3C08,A4PU3C09,A2PU3D01,A2PU3D02,A2PU3D03 +---> A2PU3D04,A2PU3D05,A2PU3D06,A2PU3D07,A2PU3D08,A2PU3D09,A4BC3A01 +---> A4BC3A02,A4BC3A03,A4BC3A04,A4BC3A05,A4BC3A06,A4BC3A07,A4BC3A08 +---> A2BC3B01,A2BC3B02,A2BC3B03,A2BC3B04,A2BC3B05,A2BC3B06,A2BC3B07 +---> A2BC3B08,A4PS3A01,A4PS3A02,A4PS3A03,A4PS3A04,A4PS3A05,A4PS3A06 +---> A2PS3A01,A2PS3A02,A2PS3A03,A2PS3A04,A2PS3A05,A2PS3A06,A2PS3A07 +---> A4HT3A01,A4HT3A02,A4HT3A03,A4HT3A04,A4HT3A05,A4HT3A06,A4HT3A07 +---> A4HT3A08,A3PJ3B01,A3PJ3B02,A3PJ3B03,A3PJ3B04,A3PJ3B05,A3PJ3B06 +---> A3PJ3B07,A2PJ2C01,A2PJ2C02,A2PJ2C03,A2PJ2C04,A2PJ2C05,A2PJ2C06 +---> A2PJ2C07 +adm_wlk.img +---> A2ST2D01,A2ST2D02,A2ST2D03,A2ST2D04,A2ST2D05,A2ST2D06,A2ST2D07 +---> A2ST2D08,A2ST2D09,A2ST2D10,A2ST2D11,A2ST2D12,A2TW2Z01,A2WL1A01 +---> A2WL1A02,A2WL1A03,A2WL1A04,A2WL1A05,A2WL1A06,A2WL1A07,A2WL1A08 +---> A2WL1A09,A2WL1A10,A2WL1A11,A2WL1A12,A2WL1A13,A2WL1A14,A2WL1A15 +---> A2WL1A16,A2WL1A17,A2WL1A18,A2WL2B01,A2WL2B02,A2WL2B03,A2WL2B04 +---> A2WL2B05,A2WL2B06,A2WL2B07,A2WL2B08,A2WL2B09,A2WL2B10,A2WL2B11 +---> A2WL2B12,A2WL2B13,A2WL2B14,A2WL2B15,A2WL2B16,A2WL2B17,A2WL2B18 +---> A2WL2B19,A2WL2B20,A2WL8B01,A2WL8B02,A2WL8B03,A2WL8B04,A2WL8B05 +---> A2WL8B06,A2WL8B07,A2WL8B08,A2WL8B09,A2WL8B10,A2WL8B11,A2WL8B12 +---> A2WL8B13,A2WL8B14,A2WL8B15,A2WL8B16,A2WL8B17,A3BO3A01,A3BO3A02 +---> A3BO3A03,A3BO3A04,A3BO3A05,A3BO3A06,A3BO3A07,A3RN3A01,A3RN3A02 +---> A3RN3A03,A3RN3A04,A3RN3A05,A3RN3A06,A3RN3A07,A3RN3A08,A3RN3A09 +---> A3RN3A10,A3RN3A11,A3RN3A12,A3RN3A13,A4ST4J01,A4ST4J02,A4ST4J03 +---> A4ST4J04,A4ST4J05,A4ST4J06,A4ST4J07,A4ST4J08,A4ST4J09,A4ST4J10 +---> A4ST4J11,A4TW4Z01,A4WL2B01,A4WL2B02,A4WL2B03,A4WL2B04,A4WL2B05 +---> A4WL2B06,A4WL2B07,A4WL2B08,A4WL2B09,A4WL2B10,A4WL2B11,A4WL2B12 +---> A4WL2B13,A4WL2B14,A4WL2B15,A4WL2B16,A4WL2B17,A4WL2B18,A4WL2B19 +---> A4WL2B20,A4WL4A01,A4WL4A02,A4WL4A03,A4WL4A04,A4WL4A05,A4WL4A06 +---> A4WL4A07,A4WL4A08,A4WL4A09,A4WL4A10,A4WL4A11,A4WL4A12,A4WL4A13 +---> A4WL4A14,A4WL4A15,A4WL4A16,A4WL4A17,A4WL4A18,A4WL4A19,A4WL5B01 +---> A4WL5B02,A4WL5B03,A4WL5B04,A4WL5B05,A4WL5B06,A4WL5B07,A4WL5B08 +---> A4WL5B09,A4WL5B10,A4WL5B11,A4WL5B12,A4WL5B13,A4WL5B14,A4WL5B15 +---> A4WL5B16,A4WL5B17,A4WL5B18,A4WL5B19,A4WL5B20,A1TT5Z01,A1TT5Z02 +---> A1TT5Z03,A1TT5Z04,A1TR5Z01,A1TR5Z02,A1TR5Z03,A1TR5Z04,A4TW4Z02 +---> A2CT2B01,A2CT2B02,A2CT2B03,A2CT2B04,A2CT2B05,A2CT2B06,A2CT2B07 +---> A2CT2B08,A2CT2B09,A2CT2B10,A2CT2B11 + \ No newline at end of file diff --git a/IMG/ADM_HIT.IMG b/IMG/ADM_HIT.IMG new file mode 100644 index 0000000..c240f7f Binary files /dev/null and b/IMG/ADM_HIT.IMG differ diff --git a/IMG/ADM_KIK.IMG b/IMG/ADM_KIK.IMG new file mode 100644 index 0000000..88cea87 Binary files /dev/null and b/IMG/ADM_KIK.IMG differ diff --git a/IMG/ADM_MSC.IMG b/IMG/ADM_MSC.IMG new file mode 100644 index 0000000..e814a2b Binary files /dev/null and b/IMG/ADM_MSC.IMG differ diff --git a/IMG/ADM_PNC.IMG b/IMG/ADM_PNC.IMG new file mode 100644 index 0000000..137f263 Binary files /dev/null and b/IMG/ADM_PNC.IMG differ diff --git a/IMG/ADM_WLK.IMG b/IMG/ADM_WLK.IMG new file mode 100644 index 0000000..30f9ab4 Binary files /dev/null and b/IMG/ADM_WLK.IMG differ diff --git a/IMG/ADM_WLK2.IMG b/IMG/ADM_WLK2.IMG new file mode 100644 index 0000000..5c72aa8 Binary files /dev/null and b/IMG/ADM_WLK2.IMG differ diff --git a/IMG/ALL.BAT b/IMG/ALL.BAT new file mode 100644 index 0000000..32b8821 --- /dev/null +++ b/IMG/ALL.BAT @@ -0,0 +1,9 @@ +@call BAM.BAT +@call BRET.BAT +@call DOINK.BAT +@call LEX.BAT +@call RAZOR.BAT +@call SHAWN.BAT +@call TAKER.BAT +@call YOKO.BAT + \ No newline at end of file diff --git a/IMG/ARROW10.IMG b/IMG/ARROW10.IMG new file mode 100644 index 0000000..7837450 Binary files /dev/null and b/IMG/ARROW10.IMG differ diff --git a/IMG/ARROWS.IMG b/IMG/ARROWS.IMG new file mode 100644 index 0000000..9d71bbb Binary files /dev/null and b/IMG/ARROWS.IMG differ diff --git a/IMG/ASHIT.IMG b/IMG/ASHIT.IMG new file mode 100644 index 0000000..dbec404 Binary files /dev/null and b/IMG/ASHIT.IMG differ diff --git a/IMG/ATTBARS.IMG b/IMG/ATTBARS.IMG new file mode 100644 index 0000000..5c1f8b0 Binary files /dev/null and b/IMG/ATTBARS.IMG differ diff --git a/IMG/ATTRACT.IMG b/IMG/ATTRACT.IMG new file mode 100644 index 0000000..ff0043d Binary files /dev/null and b/IMG/ATTRACT.IMG differ diff --git a/IMG/AVS_BK.IMG b/IMG/AVS_BK.IMG new file mode 100644 index 0000000..7352262 Binary files /dev/null and b/IMG/AVS_BK.IMG differ diff --git a/IMG/AWWFTIT.IMG b/IMG/AWWFTIT.IMG new file mode 100644 index 0000000..08a93c3 Binary files /dev/null and b/IMG/AWWFTIT.IMG differ diff --git a/IMG/B3FD3C.IMG b/IMG/B3FD3C.IMG new file mode 100644 index 0000000..13614d6 Binary files /dev/null and b/IMG/B3FD3C.IMG differ diff --git a/IMG/B4UC3B.IMG b/IMG/B4UC3B.IMG new file mode 100644 index 0000000..34d2f58 Binary files /dev/null and b/IMG/B4UC3B.IMG differ diff --git a/IMG/BAM.BAT b/IMG/BAM.BAT new file mode 100644 index 0000000..b1b2263 --- /dev/null +++ b/IMG/BAM.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld bam bam_hit bam_kik bam_msc bam_pnc bam_wlk bam_rjr bam_mjt bam_jms bam_jake +@copy bam.ld1 + bam.ld2 bam.lod +@move bam.h ..\bamimg.h +@move bam.seq .. + diff --git a/IMG/BAM.LD1 b/IMG/BAM.LD1 new file mode 100644 index 0000000..dd1a5dc --- /dev/null +++ b/IMG/BAM.LD1 @@ -0,0 +1,11 @@ +ASM> bamimg.tbl +***> 2b04a90,1 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* BAM BAM **************************************************************** +ZON> +MON> +BON> +POF> +; diff --git a/IMG/BAM.LOD b/IMG/BAM.LOD new file mode 100644 index 0000000..ac043e8 --- /dev/null +++ b/IMG/BAM.LOD @@ -0,0 +1,127 @@ +ASM> bamimg.tbl +***> 2b04a90,1 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* BAM BAM **************************************************************** +ZON> +MON> +BON> +POF> +; +bam_hit.img +---> B4AM4A01,B4AM4A02,B4AM4A03,B4AM4A04,B4AM4A05,B4AM4A06,B4AM4A07 +---> B4AM4A08,B3CP3B01,B3CP3B02,B3CP3B03,B3CP3B04,B3CP3B05,B3CP3B06 +---> B3CP3B07,B3GU2A01,B3GU2A02,B3GU2A03,B3GU2A04,B3GU2A05,B3GU2A06 +---> B3GU2A07,B3GU2A08,B3GU2A09,B3GU2A10,B3GU2A11,B3GU2A12,B3GU4A01 +---> B3GU4A02,B3GU4A03,B3GU4A04,B3GU4A05,B3GU4A06,B3GU4A07,B3GU4A08 +---> B3GU4A09,B3GU4A10,B3GU4A11,B3GU4A12,B4AH4A01,B4AH4A02,B4AH4A03 +---> B4AH4A04,B4AH4A05,B4AH4A06,B2AH2A01,B2AH2A02,B2AH2A03,B2AH2A04 +---> B2AH2A05,B2AH2A06,B3PP3Q01,B3PP3Q02,B3PP3Q03,B3PP3Q04,B3PP3Q05 +---> B3PP3Q06,B3PP3Q07,B3FD3C01,B3FD3C02,B3FD3C03,B3FD3C04,B3FD3C05 +---> B2AM2A01,B2AM2A02,B2AM2A03,B2AM2A04,B2AM2A05,B2AM2A06,B2AM2A07 +---> B2AM2A08,B4BK3D02,B4BK3D03,B4BK3D04,B4BK3D06,B4BK3D07,B4BK3D08 +---> B3AE3A02,B3AE3A03,B3AE3A04,B3AE3A05,B3AE3A06,B3AE3A07,B3AE3A08 +---> B3AE3A09,B3AE3A10,B3AE3A11,B3AE3A12,B4LB4B01,B4LB4B02,B4LB4B03 +---> B4LB4B04,B4LB4B05,B4LB4B06,B4LB4B07,B3GU2A13,B4TD3B01,B4TD3B02 +---> B4TD3B03,B4TD3B04,B4TD3B05,B4TD3B06,B4TD3B07,B4TD3B08,B4TD3B09 +---> B4TD3A01 +bam_kik.img +---> B4KM3E01,B4KM3E02,B4KM3E03,B4KM3E04,B4KM3E05,B4KM3E06,B4KM3E07 +---> B4KM3E08,B4KM3E09,B4KM3E10,B2KM3B01,B2KM3B02,B2KM3B03,B2KM3B04 +---> B2KM3B05,B2KM3B06,B2KM3B07,B2KM3B08,B2KM3B09,B2KM3B10,B4KM3A01 +---> B4KM3A02,B4KM3A03,B4KM3A04,B4KM3A05,B4KM3A06,B4KM3A07,B4KM3A08 +---> B4KM3A09,B4KM3A10,B2KM3E02,B2KM3E03,B2KM3E06,B4NM3A02,B4NM3A03 +---> B4NM3A04,B4NM3A05,B2NM3A03,B2NM3A04,B2NM3A05,B2NM3A06,B2NM3A07 +---> B2NM3A08,B2BG3A01,B3DC3B04,B3DC3B05,B3DC3B06,B3DC3B07,B3DC3B08 +---> B3DC3B09,B3DC3B11,B4KM3H02,B4KM3H03,B4KM3H04,B4KM3H05,B4KM3H06 +---> B4KM3H07,B4KM3H09,B4KM3H10,B4KM3H11,B4KM3H12 +bam_msc.img +---> B4GF3A01,B4GF3A02,B4GF3A03,B4GF3A04,B4GF3A05,B4GF3A06,B4GF3A07 +---> B4GF3A08,B4GF3A09,B4GF3A11,B3HB3A02,B4TI4A01,B4TI4A02,B4TI4A03 +---> B4TI4A04,B4TI4A05,B4TI4A06,B4TI4A07,B4BF3A01,B4BF3A03,B3BF3C01 +---> B3BF3C02,B3BF3C03,B3BF3C04,B3BF3C05,B3BF3C06,B3BF3C07,B3BF3C08 +---> B3BF3C09,B4MF4A01,B4MF4A02,B4MF4A03,B4MF4A04,B4MF4A05,B4MF4A06 +---> B4MF4A07,B3RL1A01,B3RL1A02,B3RL1A03,B3RL1A04,B3RL1A05,B3RL1A06 +---> B3RL1A07,B3RL1A08,B3RL1A09,B3RL1A10,B3RL1A11,B4HU4B07,B4HU4B08 +---> B4HU4B09,B4HU4B11,B4HU4B12,B4SB4A01,B4SB4A02,B4SB4A03,B4SB4A04 +---> B4SB4A05,B4SB4A06,B4SB4A07,B4SB4A08,B4SB4A09,B4SB4A10 +bam_pnc.img +---> B2FH3Z01,B2FH3Z02,B2FH3Z03,B2FH3Z04,B2FH3Z05,B2FH3Z06,B2FH3Z07 +---> B4FH3Z01,B4FH3Z02,B4FH3Z03,B4FH3Z04,B4FH3Z05,B4FH3Z06,B4FH3Z07 +---> B4PU3D02,B4PU3D03,B4PU3D04,B4PU3D05,B4PU3D06,B4PU3D07,B4PU3D09 +---> B2PU3C04,B2PU3C05,B2PU3C06,B2PU3C07,B2PU3C08,B2PU3C09,B2PU3C10 +---> B4PS3A02,B4PS3A03,B4PS3A04,B4PS3A05,B4BC3A01,B4BC3A02,B4BC3A03 +---> B4BC3A04,B4BC3A05,B4BC3A06,B4BC3A07,B2BC3A02,B2BC3A03,B2BC3A04 +---> B2BC3A05,B2BC3A06,B2BC3A07,B2BC3A08,B3PO4A01,B3PO4A02,B3PO4A03 +---> B3PO4A04,B3PO4A05,B3PO4A06,B3PO4A07,B3PO4A08,B4PO4Z01 +bam_wlk.img +---> B2ST2A01,B2ST2A02,B2ST2A03,B2ST2A04,B2ST2A05,B2ST2A06,B2ST2A07 +---> B2ST2A08,B2ST2A09,B2ST2A10,B2ST2A11,B2ST2A12,B2ST2A13,B4ST4Z01 +---> B4ST4Z02,B4ST4Z03,B4ST4Z04,B4ST4Z05,B4ST4Z06,B4ST4Z07,B4ST4Z08 +---> B4ST4Z09,B2TW2Z01,B2TW2Z02,B2TW2Z03,B4TW4Z01,B4TW4Z02,B4TW4Z03 +---> B1TT5Z01,B1TT5Z02,B1TT5Z03,B1TT5Z04,B1TR5Z01,B1TR5Z02,B1TR5Z03 +---> B1TR5Z04,B2WL1A01,B2WL1A02,B2WL1A03,B2WL1A04,B2WL1A05,B2WL1A06 +---> B2WL1A07,B2WL1A08,B2WL1A09,B2WL1A10,B2WL1A11,B2WL1A12,B2WL1A13 +---> B2WL1A14,B2WL1A15,B2WL1A16,B2WL2B01,B2WL2B02,B2WL2B03,B2WL2B04 +---> B2WL2B05,B2WL2B06,B2WL2B07,B2WL2B08,B2WL2B09,B2WL2B10,B2WL2B11 +---> B2WL2B12,B2WL2B13,B2WL2B14,B2WL2B15,B2WL2B16,B2WL2B17,B2WL2B18 +---> B2WL8B01,B2WL8B02,B2WL8B03,B2WL8B04,B2WL8B05,B2WL8B06,B2WL8B07 +---> B2WL8B08,B2WL8B09,B2WL8B10,B2WL8B11,B2WL8B12,B4WL2A01,B4WL2A02 +---> B4WL2A03,B4WL2A04,B4WL2A05,B4WL2A06,B4WL2A07,B4WL2A08,B4WL2A09 +---> B4WL2A10,B4WL2A11,B4WL2A12,B4WL2A13,B4WL2A14,B4WL2A15,B4WL4B01 +---> B4WL4B02,B4WL4B03,B4WL4B04,B4WL4B05,B4WL4B06,B4WL4B07,B4WL4B08 +---> B4WL4B09,B4WL4B10,B4WL4B11,B4WL4B12,B4WL4B13,B4WL4B14,B4WL4B15 +---> B4WL4B16,B4WL4B17,B4WL4B18,B4WL5B01,B4WL5B02,B4WL5B03,B4WL5B04 +---> B4WL5B05,B4WL5B06,B4WL5B07,B4WL5B08,B4WL5B09,B4WL5B10,B4WL5B11 +---> B4WL5B12,B4WL5B13,B4WL5B14,B4WL5B15,B4YR3A03,B4YR3A04,B4YR3A05 +---> B4YR3A07,B3RN3A01,B3RN3A02,B3RN3A03,B3RN3A04,B3RN3A05,B3RN3A06 +---> B3RN3A07,B3RN3A08,B3RN3A09,B3RN3A10,B3RN3A11,B3RN3A12,B4BO3Z01 +---> B4BO3Z02,B4BO3Z03,B4BO3Z04,B4BO3Z05,B4BO3Z06,B4BO3Z07,B4BO3Z08 +---> B4BO3Z09 +bam_rjr.img +---> B3RS3B01,B3RS3B02,B3RS3B03,B3RS3B04,B3RS3B05,B3RS3B06,B3DD3D01 +---> B3DD3D02,B3DD3D03,B3DD3D04,B3DD3D05,B3DD3D06,B4UC3Z08,B4TN4X01 +---> B4TN4X02,B4TN4X03,B4TN4X04,B4TN4X05 +bam_mjt.img +---> B4NP3Z01,B4NP3Z02,B4NP3Z03,B4NP3Z04,B4NP3Z05,B4NP3Z06,B4NP3Z07 +---> B4NP3Z08,B4NP3Z09,B4NP3Z10,B3ZS3A01,B3ZS3A02,B3ZS3A03,B3AB3X02 +---> B3AB3X03,B3AB3X04,B3DD3C01,B3DD3C02,B3DD3C03,B3DD3C04,B3DD3C05 +---> B3DD3C06,B3DD3C07,B3DD3C09,B3DD3C10,B3DD3C12,B3FH3F01,B3FH3F02 +---> B3FH3F03,B3FH3F04,B3FH3F05,B3FH3F06,B3FH3F07,B3FH3F08,B3FH3F09 +---> B3FH3F10,B3FH3F11,B3RC3A01,B3RC3A02,B3RC3A03,B3RC3A04,B3RC3A05 +---> B3RC3A07,B3RC3A08,B3DR3B01,B3DR3B02,B3DR3B03,B3DR3B04,B3DR3B05 +---> B3DR3B06,B3DR3B07,B3DR3B08,B3DR3B09,B3DR3B10,B4POGO05,B4POGO03 +---> B4POGO04,B4CD3B02,B4CD3B04,B4CD3B05,B4CD3B06,B4CD3B08,B4GH3B01 +---> B4GH3B02,B4GH3B03,B4GH3B04,B4GH3B05,B4GH3B06,B4GH3B07,B4CF4A01 +---> B4CF4A02,B4CF4A03,B4CF4A04,B4CF4A05,B4CF4A06,B4CF4A07,B4CF4A08 +---> B4CF4A09,B3PO4E02,B3PO4E03,B3PO4E04,B2PN5A03,B2PN5A04,B2PN5A05 +---> B2PN5A06,B2PN5A07,B5RV5A01,B5RV5A02,B5RV5A03,B5RV5A04,B5RV5A05 +---> B5RV5A06,B5RV5A07,B5RV5A08,B4WC4B01,B4WC4B02,B3PG3A01,B3PG3A02 +---> B3PG3A03,B3PG3A04,B3PG3A05,B4CD3A03,B4CD3A04,B4CD3A05,B4CD3A06 +---> B3PG3A09,B3PG3A10,B3PG3A11,B3PG3A12,B3MS3Z01,B3MS3Z02,B3MS3Z03 +---> B3MS3Z04,B3MS3Z05,B3MS3Z06,B4RS4A01,B4RS4A02,B4RS4A03,B4RS4A04 +---> B4RS4A05,B4RS4A06,B4SW4B03,B4SW4B04,B4SW4B05,B4SW4B06,B4SW4B07 +---> B4SW4B08,B4WS4A01,B4WS4A02,B4WS4A03,B4WS4A04,B4GH3D02,B4GH3D03 +---> B4GH3D04,B4GH3D05,B3MS3X01,B3MS3X02,B3MS3X03,B4BB1X02,B4BB1X03 +---> B4BB1X04,B4BB1X05,B4BB1X06,B4BB1X07,B4BB1X08,B4BB1X09,B3BR3Z11 +---> B3BR3Z12,B3BR3Z13,B3BR3Z14,B3BR3Z15,B3BR3Z16,B4BZ4A01 +bam_jms.img +---> B4UC3B01,B4UC3B02,B4UC3B03,B4UC3B04,B4UC3B05,B4UC3B06,B4UC3B07 +---> B4UC3B08,B4MP4A01,B4MP4A02,B4MP4A03,B4MP4A04,B4MP4A05,B4MP4A06 +---> B4MP4A07,B4MP4A08,B4MP4A09,B2MP2A01,B2MP2A02,B2MP2A03,B2MP2A04 +---> B2MP2A05,B2MP2A06,B2MP2A07,B2MP2A08,B2MP2A09,B3PJ3B03,B3PJ3B04 +---> B3PJ3B05,B3PJ3B06,B3PJ3B07,B3PJ3B08,B3PJ3B09,B2PJ3A03,B2PJ3A04 +---> B2PJ3A05,B2PJ3A06,B2PJ3A07,B2PJ3A08,B2PJ3A09,B2PJ3A10,B3JK3A04 +---> B3JK3A05,B3JK3A06,B3JK3A07,B3JK3A08,B3JK3A09,B3JK3A10,B4FK4B03 +---> B4FK4B04,B4FK4B05,B4FK4B06,B4FK4B07,B4FK4B08,B4FK4B09,B4FK4B10 +---> B4FK4F09,B4FK4F10,B4FK4F11,B4FK4F12,B4FK4F13,B4FK4F14,BURNBODY01 +---> BURNBODY02,BURNBODY03,BURNBODY04,BURNBODY05,B3RR3Z02,B3RR3Z03,B3RR3Z04 +---> B3RR3Z05,B3RR3Z06,B3RR3Z07,B3RR3Z08,B3RR3Z09,B3RR3Z10 +bam_jake.img +---> B4WA4D01,B4WA4D02,B4WA4D03,B4WA4D04,B4WA4D05,B4WA4D06,B4CF4Z01 +---> B4CF4Z02,B4CF4Z03,B4WA4C02,B4WA4C03,B4WA4C04,B4WA4C05,B4WA4C06 +---> B4WA4C07,B4WA4C08,B4WA4C09,B4CR7A02,B4CR7A03,B4CR7A04,B4CR7A05 +---> B4CR7A06,B4CR7A07,B4CR7A08,B4CR7A09,B4CR7A10,B4CR7A11,B4CR7A12 +---> B2JD4A02,B2JD4A03,B2JD4A04,B2JD4A06,B2JD4A08 + \ No newline at end of file diff --git a/IMG/BAMPIN.IMG b/IMG/BAMPIN.IMG new file mode 100644 index 0000000..fdf45f2 Binary files /dev/null and b/IMG/BAMPIN.IMG differ diff --git a/IMG/BAMSPEC.IMG b/IMG/BAMSPEC.IMG new file mode 100644 index 0000000..c3712c4 Binary files /dev/null and b/IMG/BAMSPEC.IMG differ diff --git a/IMG/BAMSTAND.IMG b/IMG/BAMSTAND.IMG new file mode 100644 index 0000000..aea5453 Binary files /dev/null and b/IMG/BAMSTAND.IMG differ diff --git a/IMG/BAM_HIT.IMG b/IMG/BAM_HIT.IMG new file mode 100644 index 0000000..4ca5178 Binary files /dev/null and b/IMG/BAM_HIT.IMG differ diff --git a/IMG/BAM_HIT2.IMG b/IMG/BAM_HIT2.IMG new file mode 100644 index 0000000..f076b8f Binary files /dev/null and b/IMG/BAM_HIT2.IMG differ diff --git a/IMG/BAM_JAKE.IMG b/IMG/BAM_JAKE.IMG new file mode 100644 index 0000000..94332af Binary files /dev/null and b/IMG/BAM_JAKE.IMG differ diff --git a/IMG/BAM_JMS.IMG b/IMG/BAM_JMS.IMG new file mode 100644 index 0000000..0e89ac8 Binary files /dev/null and b/IMG/BAM_JMS.IMG differ diff --git a/IMG/BAM_KIK.IMG b/IMG/BAM_KIK.IMG new file mode 100644 index 0000000..9b8e0d9 Binary files /dev/null and b/IMG/BAM_KIK.IMG differ diff --git a/IMG/BAM_MJL.IMG b/IMG/BAM_MJL.IMG new file mode 100644 index 0000000..d03b60d Binary files /dev/null and b/IMG/BAM_MJL.IMG differ diff --git a/IMG/BAM_MJT.IMG b/IMG/BAM_MJT.IMG new file mode 100644 index 0000000..f01d98c Binary files /dev/null and b/IMG/BAM_MJT.IMG differ diff --git a/IMG/BAM_MSC.IMG b/IMG/BAM_MSC.IMG new file mode 100644 index 0000000..51a1c19 Binary files /dev/null and b/IMG/BAM_MSC.IMG differ diff --git a/IMG/BAM_PNC.IMG b/IMG/BAM_PNC.IMG new file mode 100644 index 0000000..bfc546c Binary files /dev/null and b/IMG/BAM_PNC.IMG differ diff --git a/IMG/BAM_RJR.IMG b/IMG/BAM_RJR.IMG new file mode 100644 index 0000000..f4c54b0 Binary files /dev/null and b/IMG/BAM_RJR.IMG differ diff --git a/IMG/BAM_WLK.IMG b/IMG/BAM_WLK.IMG new file mode 100644 index 0000000..00dfaa9 Binary files /dev/null and b/IMG/BAM_WLK.IMG differ diff --git a/IMG/BARBUTT.IMG b/IMG/BARBUTT.IMG new file mode 100644 index 0000000..8155b36 Binary files /dev/null and b/IMG/BARBUTT.IMG differ diff --git a/IMG/BIGWWF.BDB b/IMG/BIGWWF.BDB new file mode 100644 index 0000000..1802d00 --- /dev/null +++ b/IMG/BIGWWF.BDB @@ -0,0 +1,42 @@ +BIGWWF 2000 1000 255 1 6 40 +NTITLESC 1244 1674 279 557 +100 1263 426 3 0 +100 1263 293 0 0 +4000 1263 544 6 0 +4000 1263 377 3F 3 +4000 1263 419 42 3 +4000 1265 319 45 3 +4B00 1267 394 48 4 +4000 1270 447 4B 1 +4000 1271 383 4E 1 +4000 1291 498 51 3 +4000 1307 419 54 3 +4000 1337 352 57 3 +4000 1340 325 5A 1 +4000 1353 419 5D 3 +4000 1359 310 60 3 +4000 1360 482 63 3 +4000 1369 297 66 3 +4000 1370 385 69 3 +4000 1387 448 6C 1 +4000 1402 494 6F 5 +4000 1403 419 72 3 +4B00 1421 318 75 2 +4000 1459 328 78 1 +4000 1462 475 7B 3 +4000 1463 419 7E 3 +4000 1463 322 81 3 +4000 1463 375 84 3 +4B00 1464 395 87 4 +100 1467 426 2A 0 +100 1467 293 27 0 +4000 1467 544 2D 0 +4000 1492 427 8A 1 +4000 1514 297 8D 3 +4000 1518 419 90 3 +4000 1557 353 93 3 +4000 1563 418 96 3 +4000 1578 364 99 1 +4000 1583 480 9C 3 +4000 1607 419 9F 3 +4000 1618 346 A2 3 diff --git a/IMG/BIGWWF.BDD b/IMG/BIGWWF.BDD new file mode 100644 index 0000000..d0c32ab --- /dev/null +++ b/IMG/BIGWWF.BDD @@ -0,0 +1,2351 @@ +40 +3 204 119 1 +                                            +    +                      +      +                                                                                         +                                 +                      +       +               + +    +                             +         +                                     +              +                                 +  +                         + + +      + +                 +                         + +                                                               +                    +                                          +                      + +                  +                                                                                            +         +             +      +        +     + +                                              + +  +                                                                                                                                        + +  +            +                                                                                                               +                                                                                                                                                                                                           +      +        +                                        +                                                                               +                                                                                        +                                                    +                                                                            +                                                               +                                               + 0 204 133 1 +         + +  +    +   + + + +  + + + + + + + + + + + + + +  + + + + +  + + + + + + + + + + + + + + + + + + +  +  +        + + + + + + + + + +  +   + +    + + + + + + +  + +  + + + + + + + + +  + + + + + + + + +  +  +      + + + + + + + + + +  +    + + + + + + + + + + +   +  +  +  + + + + +      +  +    + + + + + + + + +    + + + + +  + + + + + +  + + +  + + +  + +  + +  +   + + +     + + + +  + + + + + + + + + + + +  + +  + + +  +   + + + + + + + + + + +      +  + + + + +    +    +  +   + + + + + + +    + + +   + + +     + + + +  +  + + + + + + +      +   + +    + + + +   +    + + + + +   +    + + + + + + + +  + +  +  +  + + + + +        + +       +      +   +   +  + +  + +   +  + + + +       + +   +      + +  + + +     +   +  + +  +  + +    + +  +  +         + + + +     +  +  + +   + +   + +   + + + +   +  + + + + + + + + + +    +     +    + + + +       + + +        + + + +  + + +   +  +   +  +  +         +       + + +     + + + + + + + +    + + +  + + + +  + + + +      + + +    + +     + + + +             + + + + + +  + +  + +    + + + + + +    + + +    +   +  +  +    + + + +      + + +  + + +     + + + + + +      + + +   +  +   + +  +    +      +       +      +      + + +     + +  +   +  +  + + +  +   + + + + + + +     +   +  +   + +  +       +     +  + +      + + +  +    + +  + +     +   + + + +   + + + + + +             + + +  +    +  + +    + + + +    +  +    + + + +       + +  +  + + + + + +   +   + + + +   + +      + +     + + + +    +  + +   + + +    + + + + + +    +           + +     +   +  + +  + +   + +  +    +     +    + +    + +    +       +    +          + + +  +   +        +  + + + + +   + + +  + + + +   +   +         + + +           +   + +   +      +          +           + +  +     + +        +   + +                     +   + +        + +      + +     +   + + +     + + +     +      +    +  + +                +  +    +     +      +            +     + +                +   +   + +   +          +      + + +     +   + +      +                +        +     + +       +             +    +     +  +   +            +       +      +                       +   +                         +  + +                            +  +                  +       +                  +        +   +      +                 +           +           +                       +  +    +                 +                + + +         +       +         +                 +  +                          +      +   + +                +   +  + +  +           + +                    + +   +           +                    +      +              +            + +      +           +         +         +                   +          +    +     +           +  +        +  +                + + + + + +                +             +                                      +                             + +        + +                         + +     +                     +   + + + +  + +                              +     + +                      +                    +         + +                    + +     +     +  + + + +     +                                    +                                         +                    +           +                          + +    +                                            + +  +           +   +                        +  +  +               +         +                     +    +                         +    +               +     +                           +                                                                                                                                                 + +                 +          +                  +  + +                  +                                                                                                                                                              +          +        + +          +                                   +                                                                                                                                                                                    + +                              +                                                                 +                              +                                                                                                                                                                      +                                          +                                                                                                                                                                                                                                                                                           +                                                                                                                                                                                                           + +                                    +                                                                           +                  + +                                             6 204 5 1 +   +                  3F 108 42 1 +}濔蕎摺佇□│佇簧丐□戚k鏡清│粟}kS曲粐佩弊}}粐腹整}}o[箒□丐}kDDo補□oy[G補弊侠亢k}ko補篝凄Go粐弊侠丿ko粐摺※□□G[粐沸┬k篳篳弊r}o箒清篳癖誓}}粐丿o補補癖}}箒}k癖粐笄k篳kD癖紛篳o`∪癖凄}儷[okVk╋清轡仆│nシ}}}寒}kyVy[y}}□∈卿yア∪⊂~埖蔽n~o胆栖競名エ傾〓蔵Д棚st~~鏡刈}}※∈q逝昇精坤ズ佐坤l~誓~ゥq渓ゥ戚仍エオ湾聿篝佐査査ヌ模紋綺幹ゥnl還栖喚┘仞□ア昏栽肅趾喟査績頃r僮┬∀寒艦蕨鰐冖精裟鯱昏卿┴済槃析樅昏頃∪蚣績郎卿y祭僮→┴┬瀬政墺丱墺夂趾墅佩墺蚶瞑}簧菖椀脊屮デ墺籔墻耿恨汗墮摶聹脳査歳墺敗蜊耒墅俳俳幤嶬塲埔坤墅婆塹佛}kq┷來瞑墻埔肭蜿蜑肅蝟蜷蛉嶷倡鞴帑砌夂蚩蜑應墮蚣毀蕉聿耿瞑蛯帑濶辭壥墺狽蜊耿佩肅聿帑聿耿奐肅辭應∃歳佛蜑聿耿肅頡蝠蜥掎應背肅蜑蜑嶽蜑蜀慟帑蜀蛉蜷蜀蛄肅蜥蜑耿帷鴟蜑肅蜑蜑蜀帑耿嚔侠歳佩逍逍迺辭鴟瘁頤迚蜑蜀聿辭頡肭蜀搆濶頡鱸鴟蝟鞴蝟逅頡聰閹揄圷∈亊俯癘瘁癘癨蛄齏瘁癘陂癘迴肬橋俤盃嶷蜑瘁癨瘁癧阮瘁癢癢齧瘁鐺胯癪瘁阨o噫蜑蝗瘁胚癢癪陂癬癪逡癬齲癨瘁癘闕康┷岩胚鞜癨癪癪癜瘁癨癪癘癢闖陂癘阮→椀夂聿癬瘁癩瘁瘁癨癪癢癢齧癘癬癪癪癬∈裳脩頡瘁癨瘁瘁癨瘁癘闖癨瘁阮癰瘁瘁癨癪瘁阨逡阮オ惑并癪癪癢瘁癘癘瘁癢癩閹阨陂ダ仂蝌癢闖癪癘癨癘陋瘁阮癘癘モ來韈癢癢癢癢瘁瘁頡聶瘁癪胱癬瘁頡癢石胖瘁癬闖蝠阨阮癬瘴迴癬癘瘁癬癢癢ゾ嚀逡癨癬癪癪癨黏麗癧癢迯齦阮癪瘁オ帷竢迢癢癢癬瘁癬癘癘癘阨頽齦逹阨癘逍癩42 44 90 1 +▲嘖肅齧癘瘁〓石耿胖阨閨癬瘁妊祑頤頌阮迴砌癩逖逡倡頤阮癘癩癨癢ゴ胛胯瘁癨瘰勘壻蝟瘁癬癢唳耡幺癨癘瘁瘁闖憊耿懼瘁癪瘁癬ブ嶷蜀逹瘁癪癬癰瘁癪瘁瘁∪肭癢癬瘁癨勘倅蝟瘁逡癪癧癢オ壻癨瘁癬癨癬瘁癪赤粡蝎瘁癰瘁癬癘瘁瘁癨癨癘~儘胖瘁癨齧癘逍癨癢夂迯阨阮癢阮癨癩瘁ズ最瘁癰瘁敢壻蝟瘁瘁阨齧逖瘁脊夂轣瘁瘁癨闕闕齧闖帑鴉陋癨癧ダ竊闖瘁癧癰瘁瘁瘁ズ應龕癪癨瘁癨陂瘁癩逍脊帑瘁瘁瘁癨癬瘁黽態胛顏癬瘁瘁瘁癪蜥茉癩陋癬瘁瘁癘鴕籘瘁癰癜逶癬逍瘁瘁癨癨瘁瘁瓣□i説懼瘁瘁瘁瘁胯癨癰癬協誓倅鱠癰癬瘁瘁癩癢瘁癬癘凄鏡偏ゥ裟壺癧瘁癜瘁疂曲佇壥丐掲肭癬癢癢癘癢陷癬瘍籖佇誓∃就→壻蝟瘁癘瘁瘁癰粐籖仞格誓▲堆倅蝟瘁瘁瘁癬癪癢癪瘁瘁痲籖烝烝烝瀛凄嗽慟蝟癰瘁癪癪瘁粐粐粐炬瀰墹紋粭頤癨瘁瘁瘁癧癧絞炬拈撲鏡聆肭頤阨瘁瘁瘁癪瘁癬}}}鋪壹揉肬閖肚琢癨瘁癬癬瘁癘癪}}⊂仍橄蝟聘關閭瘁瘁瘁癰瘁銀拆偃插癪癧癘癧砠瘁癬癰瘁}}}九摶瘁閭阨癪瘁癨[}}t[к瘁瘁瘁逍瘁jW胚瘁癬瘁瘁癧竚瘁←|贋癪癪癪瘁來几瘁齷陋瘁瘁癬癰癪倪弊跼癬瘁瘁瘁瘁瘁瘁佇彩摶癬癪癨瘁佩誓僅瘁瘁癜癬瘁瘁瘁瘁瘁癬席籖耿癰瘁癰瘁癰瘁瘁倥粐瘁瘁瘁瘁瘁聹嗤瘁癬バ糜癬硴俯奐頡莓琅糜跂鳰ハ変几兩瀾併亙粲篳矯桎篳変癖紛勤粐癖頬}k}袈穂繙癖壥箒焙橋癖篳癖}}編倪粐焙篝}t俟倪粐粐焙}ytW斤繖焙籖篳癖粐篳鋪焙}~}}P粐籖粐籖補粐瀛烝}橋菖粐癖癖焙癖襟濔行墺W}便揆佩←[7鏡}[}}}}掫仂補篳[y}長∃埋揆粐橋倪潰橋喉笑粐橋}甲k橋}[W袈紛濔勤仂烝橋粐簫笑粐粐倪補笄}席補粐愍銀箒粐弛粐籖焙抄∂粐佩隙粐倪佩粐橋焙雰}}珪捶濆笑輔佩補粐焙仂45 76 48 1 +[o}}}[k}窟}kko※ko[┠}}k[k│okkr[7}oWk}oo`r}}kV}`oo}}DDo}kP面[Vk}}oDPk牟[[[}k}}}A∧雰}}}}``銀別□曲腹kto笑VZ∧紛j[kVkk}W?¬補雰oJ}}}}}7Py粐澡隈okk}yyk}D}玉粐鏡鏡橋┬橋kok曲粐箏協誓鏡橋kkVDDD補粐籘篳紛DPk4k□誓癖粐粐篳□o[}kD`}□k}銀粐橋}}kkD:}W}o}`/D∧癖況□}}k}}[D'k設箒橋曲P'k銀粐篳弊}}`D席粐粐簧[`/銀粐鏡PV'[[補憤笄}`[Dk粐T}k[整}}}J∧}k[oD銀□}W[[`≫篳補篝t}:k設篳}銀粐粐oDA粐粭沸}}曲粐粐VD?橋癖沸※清粐癖協`?P}┬曲癖清侠橋`}k}4?橋補紛叫銀}ZP}Dkk橋癖粐補癖s:kk}k?k曲粐癖}k`k席yV橋}}}[`□k}kkk}k48 200 77 1 +闖闖闖闖闖闖闖闖闖闖闖迴闕闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖閾艸艸艸艸艸艸艸艸艸艸艸閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸芟跛跛跛趺艸苡趺艸芟跛艸艸艸跛跛跛艸艸艸芟跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛艸艸芻迴闖鴪鴪搜鴪闖艸闌艸苡闖鴪嗷嗷鳫閾莓艸莓闥嗷嗷鴣闖闖闖闖闖闖闖闖闖鴪嗷嗷鳫闖阨闥阨闥鴪鴪鴪鴪鳫鴪鴪鰾鴪鴪鴪鴪鴪鴪鴪鴪鴪趺艸跿~  縁艸闌艸跛R   閾芟趺艸=      艸艸,AAAAAAAA==-~閾艸閾艸鑵bAAAAAAAAAAAAl艸跋趺艸b---  + 1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1  1>>>>>>>>>>>>艸艸MAAAAAAAAAAMl趺跛趺艸鐵AAAAAAAAAAAAAb跛艸趺艸苺M4444444=44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444==A44111111111111111趺艸bAAAAAAAAAAA]趺芟趺艸AAAAAAAAAAAAAb底艸趺艸阨A44444A4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444=A444444444444444444趺艸bAAAAAAAAAAA]肬艸艸艸芟~AAAAAAAAAAAAA:艸趺艸~444444A4444=]ll~~~~~~~~~~bbbbbRR5555趺艸闌~AAAAAAAAAAAM碇艸艸艸閹b4A4A4A4A4A4A4:u鱧艸艸莓R)4)4)4)4)4)b弐闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闥鴪鴪鴪闖闖闖闖闖闖闖闖艸芟A4A4A4A4A4Al艸艸艸鐵=4444444444444$6鳰艸艸莓R))))))))))A剿闌跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跋迯跛跛跛跛跛跛跛跛跛跛跛跛跛趺艸艸艸艸艸=4444444444M艸艸艸豐A4444444444444=鳫艸艸莓=)))))))))4A踝艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸跛艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸=4444444444,艸艸艸~4444444444444445簸艸艸莓A))))))))))=閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸烝烝烝烝艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸跛跛趺艸b4)4)4)4)4)-b艸艸艸@)4)4)4)4)4)4)4)F幾艸艸苺A)))))b閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸芟闥魑^O%GGGSq將芟艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸跛跛趺艸4)))))))))=F趺艸苡$)))))))))))))))=忌艸艸苺~Ab呰鴪鴪鴪鴪鴪鴪鰡攵ゾ幤闌艸艸艸鴪鴪鴪鴪鴪鴪鴪鴪鴪鴪閾鯱O9Dt旭旭ED/寶趺苡鴪鴪鴪鴪鴪鴪鴪鴪鴪鵄鴪鴪鴪承糅艸艸艸艸闥鴪鴪鴪鴪辯艸闌4)))))))))4$肬艸艸=))))))))))))))4A闌艸芟~4E7'''''''''#' +7%O搨闌艸艸鮴GEUE#U''''''' +%#'G[鰊Ut旭旭旭旭旭#拠闌阯U99999/%%% + +%/覧h9//%' + +D瑾艸艸艸艸O9G9999/趺芟=)))))4$迩艸艸l4)))))))4b跫艸苡b4=n +O鳫趺艸鮴ExいいT +鴟G染hE覧艸艸艸艸9趺艸=)$碇艸艸b44b碇艸莓R=}}}}}}}}}}}}}}}}}}}}}#G搶趺苒}}}}}}}}}}}}}}}}}}D'鳫Et鴪[t覧艸艸艸艸9趺艸=$閾艸跛b44F閾艸:b{ntntnnnnnnnnnnnnnnnnnnnE%搶艸鬢nnnnnnnnnnnnnnnnnn3}}}}}}}}}}}}}}}}}}}'s鮹U}}}}}}}}}}}}}}}}}t鴪[}}}}}}}}t覧艸艸艸艸O}}}}}}}}閾艸R$a閾艸鑵==閾艸=bj```````````````````````n7[鱧苒``````````````````Dnnnnnnnnnnnnnnnnnnnnt3收tnnnnnnnnnnnnnnnnnm鴪[nnnnnnnnK覧艸艸艸艸Onnnnnnnn艸苡a$a閾艸l=4Ab闌艸~_TTTTTTTTTTTTTTTTTTTTTTTTn +戦跼TTTTTTTTTTTTTTTTTT[``````````````````cn`#逐m`````````````````m鴪````````E覧艸艸艸艸x````````艸芟~R闌艸b4AR寶艸bF~XCCCCCCCCm謹獨勇mKKKKKKKKCG鳫KKKKKKKK[崖崖崖TTTTTg恍遉TTTTTTTTTTEm鄒[TTTTTTTT染TTTTTTTTE覧艸艸艸艸TTTTTTTT艸艸b :闖芟RAl:漉艸:  @lP77777777J糢x777777777'鴟77777777[栓鴪鴪酣杷CCCCKm7CCCCCCCCCD鴪鴪[7777777D怦鴪鵄77777777E覧艸艸艸艸77777777趺艸_  $胖跫@  @!芟@PP++++++++D插艸跫E++++++#'鴪++++++++D鳫芟鮴<<<<<<<<<煎趺阯[<<<<<<<<7[粹艸闥[+++++++E鳫芟跫++++++++E苧艸艸艸艸++++++++趺艸~ $託闖!PX鳰闖5I懺S D插艸艸陌[## %x鴪 D栓艸苡E++++++++染閾艸m+++++++++E粲艸苒[#######E鱧艸艸########E苧艸艸艸艸########艸苡!闖u*効6 @熄鏤5 *I鴪S% + + +G插艸艸苡 +O鴪mD栓艸苡/########鳰艸鬢mm[[[[[[[x插艸跼[E鱧艸艸%苧艸艸艸艸艸芟$j闌a ^ "o566鴪6 + + + + + + +9插艸艸艸鮴 + + + + + + + +[鴪m + + + + + + + +D栓艸苡D%窃鳫莓鴪鴪鴪鴪鴪鵄趺芟[E鱧艸艸%苧艸艸艸艸艸艸=*X阮P哄/w6S6鴪S9插艸艸艸 +%鴪wD栓閾苡[ + + + + + + + + + +γ嵐鳫闌跛跛跛跛趺艸跼[ + + + + + +%鱧艸艸 + + + + + + + + +苧艸艸艸艸 + + + + + + +趺艸R/62鵄IS懸d鵄P/ +S^鴪S%'G鱧艸艸芟鬢 + + +O栓D栓鴪鮴%O +E囃闖艸艸艸艸艸芟G'%[鱧艸艸 +艸艸艸艤 +趺艸X2YI鴪{66Z鵄P%%SoS%9G粢艸趺跫 +wG犠商w +GhO鴪艸艸艸艸艸跼9%G鱧艸艸x艸艸跫x[hx +辯艸69 +Z鴪XGx剣lPZ鴣_%6寶qGOx粢艸芟闥GO[ + + + + + + + + +%%9hO/鳰艸艸艸艸跼O% +/G鱧艸艸s%G覧艸艸OG%/ +艸芟5[Z叨[b寫u6 +%P鳫G[w粢艸跫鮹 +xG +% +O[O9条閾艸艸芟hOhO鱧艸艸hOG覧艸艸O9艸艸5hOZ限Gl{[ +^鴛[X阯[w鳰跫鯱ww%3w3GO潜爨9[[/w鳫艸艸芟hw艸艸苒xx拊艸苡哘艸艸aw +o斬9l闖l/ +殊阯xOΖ千糢[OO +[w +%xν粐簍wG +S川爨O +G[[O% +x閾艸芟 +%%6鄰艸艸范忸/w錏鋏艸跼%[昶粐趺艸算[功 +x阨lO探揀咆踞釁x3O蝗瑟錏銕川阯釵h悍醉w% + +OG閾艸踞銕鋏艸艸范蔕hh艸落釁辯艸鬩G%wY珱 +Gw/%菎棘陌寅 +%%%/ +GOG%%w戈趺蒄万鄒獨旋虫鍛忻徊胆崖崖崖没鍛致忻瑾跫酲虫牾惜怙銕h摎閾芟銕彝川苧艸艸范銹銹蔟苡徊誓胆艸芟~旋w踟眤荀糴[瓏笙艸x[##%##川EE#EEEE兆x3%%%%%%%[絶艸跫荀/%%EEDm核瑟蔟閾范虫E%%%%%艸艸范恷EE%%%%h戲跫wxxxw%%%%%%%%趺艸~閾閭y咸艸D3 + + +[川G + + +E鋺鋏m + + + + + + + +D瑾鴪鴪鵄艸艸苡 + + + + + + + + + + +%狠瑾艸h + + + + +S[鱧艸艸鬢 + + + + + +/O染苡鴪O% + + + + + + +趺艸裴冪裴O裴裴裴龕{艸跫{鼕冪裴褥i鼕袞刳褫穢艸/% + + + + +9鴪/ + + + + +DOx川閾艸闥m +D瑾閾艸艸艸艸艸艸闥戲% + + + +G蜿跼Oh +G[鱧艸艸G//苧艸艸艸苡[% + + + + + + +趺艸咥臆臆十氷O麑十十縮鷸{艸范P嬋袢竓所厰艸 +x鴟鬢% +%鳫艸艸mD瑾艸艸艸艸艸艸艸芟闥xw鳫OGG[鱧艸艸w苧艸艸艸芟[ +艸莓涓ク艸莓{栄彪瓢鳫艸鮴 +x鳰闥 + +瑾趺艸[D摎艸艸艸艸艸艸艸艸芟鰊G +x瑙O%鱧艸艸覧艸艸艸芟[ +艸苺淺P咆艸莓iiiiiiii~闌艸 + +x鱧跫[[闌艸[D摎艸艸艸艸艸艸阮艸芟闥D +O%鱧艸艸%%覧艸艸艸芟[ +艸苺鰭iiiiiid閾艸{iiiiiiiiiiiiiiii艸苒 + +x鱧苡%%鳫艸[G摎閾艸艸艸艸芟趺芟闥D'x糢w%鱧艸艸魍% +栓閾艸艸芟G艸艸群iiiiiiiiiiiiiiiu趺艸鑿~ViViViViiViViViV幾艸苒 + +x鱧芟闥 +D瑾趺[G搨鴪鴪鴪鵄艸踝跛艸跼%x珞w%栓艸艸苒 + +栓鴪鴪鴪闥G趺艸iViViViViViViVi艸艸踞lVVVVVVVVVVVVVVV~幾艸苒 + +x鱧艸跫x + +x鳫跼[ +/%%O[OOSSh暄艸踝辯艸艀x +[川h%栓艸艸苒%%O[[OG%/x搶G +趺艸~VVVVVVVVVVVVVVV~微艸艸范lVAVAVVAVAVVAVAA倆艸苒 + +x鱧艸芟闔[%栓m + +G覧艸踝趺艸鰈/3h + +鱧艸艸% + + + +O酪G +艸苡~AVAVAVLVLVAVAVVil棘艸艸莓AAAAAAAAAAAAAAA]闌艸苒 + + +x鱧艸艸阯/ +h糢m + + + + + +D覧艸踝艸苡x +%w + + + + + + +鱧艸艸% + + + + + + + + + + + +D酪D +艸苡]AAAAAAAAAAAAAAAl艸艸莓iAAAAAAAAAAAAAAA艸艸% + + + + + + +x鱧艸艸跫鬢%%鴪[ + + + + + + + + + + +D覧艸踝趺芟% +w + + + + + + + +鱧艸艸% + + + + + + + + + + + + + + +D酪G + + + + + + +艸芟]4A4A44AA44A4AAAl閾艸艸闌iAAAAAAAAAAAAA4A~艸艸% + + + + + + +[鱧艸艸芟闥[ +D嵐m + + + + + + + + + + + + + +D覧艸踝趺苒/[ + + + + + + +%栓艸艸苒% + + + + + + + + + + + + + + +D酪[ + + + + + + + +艸艸bA4444444444444Av闌艸艸苡iA4A4A4A4A4A4A4Vr縁艸艸鬢G% + +% +%/x鱧艸艸艸跫/ +xx + + + + + + + + + + + + + +G覧艸跿趺苡[w + + + + + + +D栓艸艸苒D + + + + + + + + + + + + + + +G酪[ + + + + + + + +趺艸bA4444444444444Vb喧艸艸艸苡V44444444444444V倆艸艸棒崖崖崖誓艸艸艸艸闥% +%鄰Ζ[3GΖΖΖΖ核艸苡趺艸 +鄒畝ΖΖ窃艸艸范廢Ζ窃阯畝wwxx辯艸軾fA4444444444444Vb椁艸艸艸苡f44444444444444]鳰艸艸鴪鴪鴪艸艸艸艸苡h + + +銷鴪鯱条鴪鴪鴪鴪鵄艸苡閾艸 +染艸艸莓鴪鴪鴪鴪鴪鴪鵄逋鴪鴪鴪艸芟l44444444444444Vl椁艸芟艸苴b44444444444444]艸艸艸艸艸艸艸艸艸艸艸艸艸跫G +D嵐閾艸艸艸艸艸艸艸艸艸苡迪艸艀 + +迯迯迯迯迴艸艸苡闖闖闖闖闖迯迯迯迯迯迯迯迯迯迯艸艸44444444444444]~鳫艸芟艸苺b44444444444444b閾艸艸艸艸艸艸艸艸艸艸艸艸艸跫G + +/栓趺艸艸艸艸艸艸艸艸艸艸艸艸跛跛艸艀m +%染閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸趺艸44444444444444R鳰艸芟艸苡b4444444444444Ab艸艸艸艸艸艸艸艸艸艸艸艸艸芟荀/ + +G栓趺艸艸艸艸艸艸艸艸艸艸艸艸艸艸苡G +G鳫趺艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸閾艸鍼V4444444444444b忌艸艸閾艸闖4444444444444Ab桴艸艸苡闖閹謝鬢/ + + + + + +O戦闖闖闖闖闖闖闖闖賺陳肬闖闖闌鮴% + +S鴉闖闖闖闥崋嶽熈闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖艸苺Q4444444444444胱艸艸艸艸M4444444444444~鼬艸艸莓   h +/座艸苡a4444444444444艸苡閾艸b4444444444441艸艸艸~A>,--,,$AAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAA1-,!!$-MMMロ/ +S=AAAAAAAAA,55=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA艸苡444444444444M艸苡閾艸l4444444444441艸艸艸AAAA=1>AAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAA4441$:=AMMMi日S + +GQVAAAAAAAAAA::=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA艸艸444444444444M閾艸辯艸阨444444444444:艸艸艸AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA444A44444444AAAA4AAAAAAAAAAAVi%%yiAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA4AAAAAA4444444趺艸44444AA44444a忌趺艸艸芟~A44444444444X碇艸艸艸M========M========A==A==AAAAAAAAAAAAAAAAAAAAAAAAAAAAA,:=MMMiS% + +wAAAAAMMAAAA>,$AAAAAAAAAAAAAAAAAAAAAA44AAAAAAAAAAAA辯艸簸艸艸艸艸桴艸艸艸~~jj~~~j~d*IZ幹締磽G + + +h済X5X艸苡闖阨閾艸苹艸艸闖闖闖阯艸艸艸莓闖闖闖闖闖闖闖闖闖阯笙蜑蜑窿竕蜑蜑阨赧崋嶽跛鰄w% + + + +x糢闖闖闖闖闖鑵薗闖阯闖闖闖闖闖艸艸艸艸艸艸艸艸艸艸艸苡閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸芟陌鍛醒致忻忻忻脱獵拆松嶽崗[/ + + + + + +%鋏迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯迯艸艸艸艸艸艸艸艸艸艸艸苡閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸跫鮴x9333333333''%D% +/OO/% + + + + + + +O恍闌艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸苡閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸跫鰾wG% + + + + + + + + + +/瑩闌艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖趺艸跫狎[% + + + + + + + + + + + + +/x恍闌艸艸闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖趺艸艸跫鴈狎h/% + + + + + + + +%[琥闌艸艸踟艸艸艸苡阯鰰彑[ +%%%%%%%EGh瑩鵄闌艸艸芟閾艸艸艸艸闖鰾拈忻忻忻珞粐鵄闖艸艸芟苡艸艸艸艸芟跛阯鵄闌跛艸艸芟踝闖艸艸艸艸艸艸艸艸艸艸艸艸艸艸踝跛艸艸艸艸艸艸艸艸艸艸芟閾艸艸艸艸艸艸芟踝迯逍4B 88 81 0 +4E 36 24 0 +51 64 37 1 +腔腔漓粐澡狭挧籖丐銀烝丐俤焙箴簧勉堀粐箴湛笑∃捶粐焙粐烝佩幣佩江}艱粐粐粐粐縷佩佩佩佶侠橋舮粐粐粐繖烝烝焙簧愚叫烝瀛灣緇V俤鱧揆俤俤瀰捷粐瀰更}鯤簧侠穀捶仂粐俤狭}銀簫匠鋪捶繆簧濔倪籖佩佩抄更t[佶捫蓄瀰籖俤粐粐簧}江}垓佩烝粐粐粐烝江蕎行俤慂焙粐佩鋪松捶亶笑烝粐揆簧皇郊佩籖綻巷攻}k粐粐澡更仂繆揣粐瀰乘瀰焙粐簧粐繖粐仂繆粐簧蕎鋪佩倪粐箴醤頴粐佩松腔粐笑醤粐松佩簧松鞘訟篳捷t}壥聞}t蕎篷腔弛54 48 79 1 +瘁瘁癧癘癬逍瘁癩癨癢癨瘁瘁癢癩癘癪癪癨癪癢癪癢癢轣瘁癰癰癢癪齧瘁齧并瘁癪癪癩闖循尓鴟癪阮瘁癘癢齧鼾陋癘阮頽癰癢癪癪癘癘瘁癪癨瘁癨癘癰癧癘瘁癬癩癨瘁癨癘癪癪阨闖瘁癘龜頤癪癩阮逖癬癬癨癢癪癬瘁瘁癪癬癪癧癘癘癘瘁癨癰瘁瘁癬癬癘癘癘闖蝮竄瘁瘁癰癩瘁瘁瘁瘁瘁癪癢迴陂鐓隊笆癘鴦闖瘁瘁癰癨癨癨閭档硼癢眛9胎肬杪聲瘁癰瘁癘瘁阨瘁瘁癰癧阨阨轤囎瘁癰瘁癢瘢碎逡癪瘁瘁阮癩迴肭阨陂齪閹矣梟癪癘齧癪癬瘁癪瘁癧頤濶瘁癨癘阮癨瘁瘁癬瘁癘癪癪瘁瘁陌瘁癨癘瘁瘁癪瘁癬癢癰癬瘁癬瘁阨跋笙癰癬逡瘁閊胱阨瘁瘁逍瘁癘闖癬瘁癘阨謠阮瘁瘁癬閧陋癰瘁癪瘁癰瘁瘁瘁瘁癪閭瘁椁癨癬癨癬癨癪瘰阨阨瘁癩癘栫闖癰瘁瘁瘁瘁癢逖瘁瘁瘁癪癬癰癘癨癬癪癪盡謎瘁瘁瘁癬癘癰瘁瘁瘁陌癬瘁癘癪癬瘁瘁瘁瘁瘁癪瘁癨瘁癰瘁瘁瘁癬癪癘癬瘁迴癨癪瘁癧瘁瘁癨癪闥闥癪瘁癬瘁瘁瘁癬癨癨瘁瘁癬癰瘁癬癬瘁癬瘁癰瘁瘁瘁瘁癘癨癘瘁瘁癰瘁癰瘁瘁瘁瘁瘁癬瘁瘁瘁癪瘁瘁瘁瘁瘁瘁癬癰癬瘁癬瘁瘁瘁癬癬瘁癨癰瘁瘁癨癨瘁癪癬癬瘁癬癬癨瘁瘁瘁癰癰癬癘癨瘁瘁癬瘁瘁瘁瘁瘁瘁瘁癪癰瘁癬癬瘁瘁瘁瘁癪癢癘瘁瘁瘁瘁瘁瘁瘁瘁癰癬癬瘁瘁癰瘁瘁瘁瘁癬癰癬癨癢逡瘁癘癪癬瘁瘁瘁瘁癬癬瘁瘁癘癪癪癩瘁瘁瘁瘁癬迴閧磋癬瘁瘁瘁瘁癪癧瞻陂癨迴癪癢癬瘁癨阨癪癢癬瘁癰瘁瘁瘁癩癪瘁瘁癩癨瘁瘁癨癘癰癰癪癨瘁癩癪瘁癢癬瘁癬癨癨癘癬癨竟蝟逡蜑迚蜑迚蝟蜥蜷逡迚迚蜊迚蝠莓鱧蜑鱠聿聿蜀肬聿聿聿聹肭聿聿聿聿歳俟搨鴟鰊鰛佩墺陪蜀墺墺崘妾仂歳佩墺俳墅捉ゥ載樛鴪縲耘査喟寒椋嗷嗅昏坤乾精混誓誓競バヌ査剪捏瞹嵬ゴ査嗅カゥ歓幹ゥヂ座ズ座[V喉墺銀聹粤聽瀛冀□~□エ協瀰粤粐補炮紛楡}yア噪樟癖焙癖別侠□腔誓鏡補俤紛□整倪粐烝鏡[瀰盛壺粐粐紛侠石佇笑焙粐篳弊□侠□∂倪粐癖沸橋⊂省頬粐癖╋鞘堀綫清凄松ky紛籘粐幣∪撲}k攻粢埋粐奮圜[k∃粢埋粐籏}[[∧粐篳誓kyWk[k癖繆槓紛k襟繖補佇江塋補盆亶⊂k粐焙丐仂y鋪篳盛菖}弊段壥}石仞瀛巷樟袈江江綻}埔狭捷宏57 96 50 1 +[t}~k[弊}}}粐橋}補粐弊捌銀粐玉kWZ誓粐鋪簔WWJ7W44yP4?[PPO橋粐簔別※oWkW[k橋kk[DV`Z橋鏡粐箒佇橋∧}ky}k戚篳誓橋侠□}}k驚}`ZV篳紛別協埓校簧紛}kk}癖席iW[yk玉面o}DZZ[∧侠紛侠o}協┬腹╋D懌協侠[□}k侠WVk}o碩捶kV}[}??粐篳紛席癖清鏡Zk:GG∧鏡侠胆}44ko[ko3□協鏡癖[[W?ky粐篳癖補篳篳}rkV補紛JPW&Zko}[P#┬∪}kk粐粐絶粐┬oGDk}篳:[kk侠}}oP4r`P粐粐弊協誓國7k橋}D'Z╋契k&>}ZoG#kk7soDkk4PD`}}強}o[D[o}}}D&44曲清k}koo:}V4}o蔓}}kk77曲曲癖橋o}oV[k}k}□橋}}rk}V癖粐腹ok[[NV}kykkk[k}□}kVD補篳}ooeoo[WW}∪∪[[k}橋牟V篳癖腹□}[kk}k[k}協}VGAZsVVV╋粐別誓侠}[¬談橋V[vDD協篳沸侠}銀繖綿弊[VeD#綿編濱紛暁V粐rVo##D:}涯癖格晦但≫粐橋}kk7}}7,#kk補粐篳}鍛粐kk[}[[[7ko粐篳補粐oV[[[D#}│驚k[kk}#Vt[侠o[koV4,/蔽ko[[7#?77癖侠[[}V}D7段驚旦}7kV7V}旦ok7}VV□紛W}}D#佩o┬│恭侠}k#郊腹o協橋晦D1"&}崖橋絵U,格崖1~積浪査蕨~1X很~~榧椋蔓□k狎刋壗簫≒清}X面蕨鰐冓鏡侠nB蕨x蜆癖X翳紛侠V癖積侠∪焙∧粐補腹o誓o清癖癖[z窟k誓癖粐[抄}}亢誓席弊清V橋橋穂粐紛5A 120 102 0 +5D 52 63 1 +阨陋阮齪癢癢癬瘁癘跿癨癬轣癢癨肬逡癩齪阨癢瘁癘癢陜迴瘁癪阨陂逖逖癘瘁癧逍癬阮癘闕癨癩竢瘁癨齧癬癩阮逍癨癢阨齧瘁瘁瘁癧阨闖閨瘁瘢癢癨瘁癘瘁瘁癧闍逡瘁癨癬癨阨鴟齷癜闕阮瘁癢癨癘椁聘迪瘁瘁嘯阮癬癘癬癬閊循癬齧陂瘁癨癪鴾瘁瘁瘁阨陂瘁瘁癰瘁癨鴕瘁瘁瘁瘁阮瘁癬瘁瘁瘁阮癬癢齧癪癨瘁瘁癪癪瘁癪癪阮龜癬瘁瘁瘁癬癧瘁瘁癬癬瘁瘁閖瘁癬竊閹癪癪癰瘁瘁癜闢癢轤桾瘁逡齧癩瘁瘁瘁癰癨胖瘁癢癢癘瘁癰瘁瘁癘癨癬瘁瘁癬癬瘁癰瘁癰阨癰癬椦瞭循陋癢閧癪癪癰瘁癰轣癰瘁竰毟栫癬癬瘁癬瘁癬笊癘癪癢陂瘁瘁瘁癪瘁瘁瘁癨阨瘁瘁瘁癬癪癪瘁癨癰癘逖陌瘁瘁瘁癬癧逋瘁癪瘁癪闖陂癩癜轣瘁癰瘁癨癰瘁瘰闕癨癪陂頤瘁癘閭肅蜑蜥瘁瘁瘁癰癰癘癘癧齧癰瘁瘁胛佩佩松逋瘁瘁癰瘁癨癘陂瘁癬蜀墅ピ癘癢癘瘁瘁瘁瘁閊治瘁捏佻从尖瘁癘癢癪癘瘁瘁癰癢闖陌鯱ダ墅肅癨癢癢齪瘁癬阮鑞椴胖鰊冢耿肅癘齧癘癨癘癪癢嶬跼粡刎蜷癘瘁瘁癬癪瘁癩瘁癪瘁癨罟栽籏鴪懃瘁癨瘁瘁瘁癢瘁瘁癘阮蜀聰繪鴟瘁瘁瘁瘁癰瘁癘陌齧瞻硼瘁阮攤寒鴟瘁癨癪瘁瘁癢闖烈髢闖辭瘁癘屮∪貫癪癧瘁瘁眛楠辜硼陂癘團~k瘁瘁癘癨瘁瘁癪眛畷逡矣迴癪癨蚰墺懌瘁癬瘁迴胖杪囂硼癈阮瘁捶糅癨癬癪閧頽阮閧竢搨齦癪碯瘁癘癢齷瘁癘瘁癘瘁癨瘁齶癢癪癰瘁癧陋癨癪癨闖瘁瘁鴉癢癬逖巵癰癨癬癘顫頤瘁瘁癪瘁癪癢瘁癪癘癘癨癧瘁瘁濶瘁癢癘瘁癘頤癨癘癨癬竊迴瘁鴉蜑蜊蜥迚蜊蚌逍癩癧闖逍聿聿聿聿聿聿聿蜀蜊癧瘁瘁瘁瘁墺來來來來墅墺墻聿蝠瘁瘁瘁瘁瘁癬瘁査精昏査査裟仞墺肅蝟癨癘癨瘁癰癨瘁瘁椋幹幹幹幹幹精汗焦壻聿蝟癪癘癘瘁瘁瘁癬宏┬│││▲鏡茂俟聿蜑逍癧癘阨癪癬▲饗論歳墺聿肭鴟癨癨癪摺ゴ佐歳來壻蜀蜀蝠瘰蜀砠□敢昏税來墻聊夂蜑聿蜩韈頡シゴ裟詐佩慥耿耿墻砌蝟鴟※寒査査昏礁佩佩墺來摶窟┠ゴ昏唔査査在昧屏咼60 56 47 1 +VVW}[VV[k:7ko[k:o[[[ZVW<oVWo[4koD7&VD7PP#DGZV}oP[/勤[Vk[47HHFF7.!TuW3!.HHHHHHHHHHA7.!^ubB&>HHHHHHHHHHHHHHHHHHHH77*;GSW[AFAAAA?/^\AAAAA?QsQ&&?AAAAAAAAAAAA?!TsQ@(?AAAAAAAAAAAAAAAAAAAAAA7+&5phUJ?777772MJC77777:m:!/77777777777777#:s:&>777777777777777777777777+"!:GpQI,?+7+7.!3J=+7+7+2!pb!.7+7+7+7+7+7+7,.!!pm:!.7+7+7+7+7+7+7+7+7+7+7+7+7.QQI0.,+++*!^E+++++.!QuT!.++++++++++++++*(QuW&!.+++++++++++++++++++++++++.&pSB0.+++MJ.,+" :s5!++++++++:sQ!+++++++++,,++*:pT0$!3J2!&fm:!!5pus@!$((TT30  !J6  &uS!!$        !Nub3!$             (pmG& !MJ$ !!hQ&( !5uQ!# NpG!   3J2   !ON:!         !Gm:&            /(TQ ! &J6!uT:ppb@>vrlYJ3JJJJJYYddlllrG(pb:!!MJ_G&&!Twm&LlJ&!&&&&3BBJYYddllvNpG!3Jg_5jZRZZZcc:yy&1YB&!&&&&33BDJYddddlrbQ! &^6!g^:&DD0(00^/&5zy!!!Q:&XJ g_:& !G::{s(!!mG!!3J&g^/&B^/Nzm&pQ!! &Y/__!]31N{b!!b:!IJ`h&&L&J "z!p5!!&J'E!!1E!J'$m!    + + +pT&!&BI/B8!J62(   + +Ecb:!!IJ5; 3J&N_6Bp5!!3J%&@-J/!^E;QpN!!!JM<-J; &_21&TS:!$!3J2#!I/3J%&@L 2B:pp5!2 $!Jfe *O&@<#&J\, CO5!J6RO@:pN!>) )/!Bix}|||||||bBhj  *O!Gix|||||}||m:&^E *epQ&Qb&@c eO@]wzxxxxxxsb!0sxe, *))em&3^wzxx{z{{|b!3_pe* *Rj|pB&ppG!s}||}{s!JifRCC4Zfh@3b||||||||||||N&JaZeZRZZZf5&@kwz{|||||||||||{|h3:pQ!by{zxxzTBJ>$)$$%E0mz{{{{{{{{{|{m&GU>24C$29Z5&^ix{{{z{{{{{{{{{|wBQT&1hZR9=Z1BJ'  !JhcZ=8ZZZZZeexh!@J2E5&_\ZZZZZZZZZZZZZejb@&ppGS%!&J' &;Z9R$).49f1!J6   &@`>2$$44ytyvnnqqqrJ&:pQ!(% JP&&;$ Ex9 =E!J^% ! &^E$"2XrrYJBBJYlvGGS&!3J!<6 %Yy8 !@J' (&_% 'GYJ!&&&J_drqopG&!JBJYlrq&J%/_wJ!&JGXlgvS&BL;QpQ&^-!!pQJ`8CCCCCCCCCCCCCC>!QpJq\RRRRRRRRRRRRRRO&:N^k\RRRRRRRRRRRRRRO&pJkJBBJJXXVVXllrrvv!5>>>>1 5_跛跋_AAAAA=A!5闖跛踝跛踝_=AAAAA> 5迪跋R$ &>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1-  + $$->>>>>>>>>>>>=$ "Z趺艸艸芟1111111144A,跛踝u=A=====>==4M~踝跛跋跛踝bMA==A>====5F跛跋4AAA444444444444444444444444444444444444444444444444444444444444444444444444>=,$$,1144444444444444444AAAAAAA-56趺艸艸芟4444444444A:阮跛莓b========AAAAR剿跛跋跛逍=====AA======b踝跛跋=4444444444444444444444444444444444444444444444444444444444444444444A444444444444444444444444444444AAAAAAAAAAV5Z趺艸艸芟闌艸==4=4=4=4AA4AR跛跛跛踝=4=4=4=4=4==4b剿跛跋R@* "25:FF===FFFFFFFFFFFFFFFFFFFFFFFF,FF,FFFFF>1F>>>1=================--$$,,===============R=RR\RRRRR\趺艸艸芟迴闖闖闖闥闖趺艸=444444444444=迪跛跛踝~A444444444444R剿迪跋|d||~{qSS^o~ы艸艸艸跋艸艸艸艸艸艸艸艸跫~A444444444444A_阮跛踝跛踝R4444444444444R迪芟迯辯艤芟跛跛迯迪跋迯迯迯迯迯迯迯迯迯跋迯迯迪跛迯迯迯迯迯迯迯迯迯迯迯迯迯跋跛趺菰將逡迯迯逡迯迯迯迯迯迯迯迯迯迯艸艸艸跋艸艸艸艸艸艸艸艸闖u44444444444444R迩跛踝跛踝=4444444444444@~闕趺跛跛跛跋迪跛跛跛跛跛跛跋迪跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛跛趺艸芟跛跛跛跛跛跛跛跛跛跋迯迯迯迯迪跛跛跛跛迪跛艸艸跛艸艸艸莓u44444444444444=跛跛闌跋A4444444444444!6鴉跛趺芟趺芟趺艸艸艸艸艸艸芟趺艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸芟跛跛跛跛跛跛跛跛跛迪跛跛跛跛艸艸艸莓_)4)4)4)4)4)4))A閾芟趺踝u4)4)4)4)4)4)44I阮趺艸艸艸艸艸艸艸艸艸艸巛艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸芟跛跛跛跛跛跛跛跛跛迺鴪囃鴪鴪鴟艸莓F)))))))))))))))R閾芟跛踝P))))))))))))))u踝趺艸闖闖艸艸跫鴪鴪鴪鰉鴪鴪艸艸艸芟鴪鴪鮠条鴪鳫趺艸艸莓鴪鴪鴪鴪艸踝鴪鴪鴪鴪鴪趺艸艸苡鴪鴪鮠鞘鴪鴪鴟趺芟跋迯迯迯迯迯逍GG%3' +%%O[O鱧芟=)))))))4R迩艸芟跛跛)))))))1R剿跛踝跛苡6%%%66%3'%%6鳫艸艸艸閂666%3' +O鳫艸艸艸//G%%%O染艸閂[SSS//%/66鳰艸艸艸闥GGG%'D//%%%6鳫艸踟%鱧芟A=喧艸芟迪艸闖uF喧跛踝趺莓[鳫艸艸艸鑞O3趺艸艸Om蒟苡Ox鴉艸艸芟x3摎艸踝 + + +/鱧苡~A=閾芟跛艸迴@:趺踝趺踞鵄艸艸艸鐫[[鳫艸艸范Ut染艸鐫D鴉艸艸芟tU染趺苡 + +}}}}}}}}}}}O鱧芻u 6鳫趺跛趺踝RF{闖芟辯芟魍}}}}}}}}}}}}m暄趺艸艸鐫O}}}}}}}}}}E苧趺艸范E}}}}}}E苧艸鐫D}}}}}}}}m鴉艸艸苡t}}}}}}}}}}}tw閾苡 + + + +nnnnnnnnnnnY鳰跋@鳫跛跛趺跿::P闕跛趺芻nnnnnnnnnnnnt染閾艸艸鐫DnnnnnnnnnnEx鳫艸艸EnnnnnnE苧艸鑞3nnnnnnnnm鴉艸艸莓nnnnnnnnnnnnnU鳫艸苹 + + + +```````````w跛!   @啄艸趺艸闖~:    P鴟跛艸踝mn````````````t鳫艸艸苡E```````````E摎趺艸鬢E``````E苧艸鑞E````````m鴉艸艸踞````````````n3鵄艸莓 + + + +Tx苧艸    @趺艸艸迴u$  P鵄跛踟閾芟tnk```n`````kkkm糢艸艸苡ETTTTTTTTTTT7x鳫艸苒ETTTTTTE苧艸钁8TTTTTTTTm鴉艸艸踞tTTTTTTTTTTTTTE染趺苡 + + + +7鴪鴪鴪鴪鵄芟X P鳫芟趺莓@I似艸踝趺苡xETTTTTKKKKTTTT`m覧趺艸苡E77777777777TE鵄趺苒E777777E覧艸钁E77777777[鴉艸艸闥T7777777777777Ex鳫艸苹 + ++m鴟迯迯迯迴跛闥6I鴟跛艸跿!5w艸踝趺莓mKKCKKKKK[77KCKKC鳫艸艸鑠E++++++++++++%w鳫艸E++++++D摎艸钁D++++++++J鴉艸艸mE++++++++++++U鳫艸莓 + + +#m鴉跛跛跛趺芟迺X 5索跛艸闖r**趺跋趺苒m7777777EE#7777<[鳫艸艸鐇E#############9鵄艸E######D暄艸鑞D########D鴉艸芟m######KE#####O摎艸莓m鴉艸艸艸艸芟輻I *跛趺迺X *^鳫芟踝趺芟E#+++#++DE##+++#D摎艸艸鐫E#G鳰范DJ苧艸鐫EE鴉艸苡E7DD覧趺苡m鴉艸艸艸艸芟2 P鳫艸芻2 6鳫艸跋趺苡[#### ##[D### ##/苧趺艸鑞EUG鳫踞EE穣艸鐫E/鴉艸苡E + + + + + +E窃U# + + + +E鳫艸苹m鴉跛跛跛趺跛6鳫艸踝*鴉艸跛趺莓G#x[%鳫艸苡D + + + + + + + + + + + +DG鳫/ + + + + + +E穣艸鐫E + + + + + + +D鴉艸莓#U捩%#[鳫艸莓 +m鳫跛跛阮迪芟Y% /摶艸跼^*常艸艸艸苒s% + +x +[鳫艸苡D'x/鴟/3穣艸鑞/G鴉艸跼x +x蜥% +9苧艸苡 +[松松松麼辯芟h +S//鱧苡6 +66q艸艸艸跼G + + + + + +%覧% + + + + + +9覧艸苡DOG%鱧苡%'O鴉艸闥' + +w/ +%s鳫艸 +% +%%%/G鴉艸迴Y%6鳫芻*G9So艸艸艸闥9 +O鴪/%w趺苡[9'[G鵄% +鱧苡''Y鴉艸闥h/[OG鳫艸苹%鴉艸Y%査 +6鳫踝*^oh趺艸艸w +%鴟[ +ww鳫艸閂h +O6xGs% +艸閂Gh鴉艸h +x撕[艸莓w染辯范o +;吼S^鴟闖oG +趺艸艸w苧 +%w鳫艸钁w様G9GO恬艸閂hw辯踞G +闖 +蔟艸苡hG%%S染辯莓 +P沾Phw/w慈脱閾艸芟 +粐阯GO糢艸钁銕Ox摎艸闊狠辯阯脱 +%6沃迴G/GO釁苧閾艸鴉艸C +窄/HG/篳h +%G[曉閾艸苡鮹[昶糴鴪闔/w遥先趺彑GG%w +'%O[ +O蜴銕蔟艸闊w蔔迪阯逐銹銜鰡醉閾艸爨辯踟/[hSG/%拱s/hν傭暹璞[h鍛GS寵憫w嫡痩艸艸閼璋錏簔C粮銕銕値闌彑銕銕x珞瑟銹G恷錏銕銕蔟艸闊川釵玻瑟蔔迪鄰鄰鮪hGGO[h狎崖且艸莓EΖ[[[[hx辯踞釵惓璞鋺奉曉嫡艸芟ν[DD[[ +E[[[[xm[[[[怙鳫踝廢mmx鮪wDx邀m[UU先艸闊ψDDEEED忸迪xE/[%%U[[[[[UEEmh鋏趺苡%蔟辯阯o慈糜鴿糶溶趺苡9 + + + +落[ + + + + + + + + + + + +9[恬跫[ + + + +%w[ + + + + + + + +G% + + +D苧艸闊O + + + + + +O苧迴hw + + + +糶[ + + + + + + + + + + + +xh鳫艸苹%鴟迯迯迯闌o裴裴褫裴裴裴褫糅糯裴裴裴褶央裴裴裴裴邑趺莓h'hwO鳰钁xG + + +hh[% + + + + + + +/[ + + + + + + +鱧苡O +w鴉x%Gw +%[D鳫艸苡 +鳫跛跛跛艸o冥十十十免十十十十述嫐面冥面冶並穀衞十十十襲趺苒%%釁 +/[鴉钁O +Ox9鱧苡9D鴉9 +%%/摎艸苡 +鳰艸艸艸芟逋S虹捗o閾跼落/G鳫閂9G[% +鱧苡//鴟 +落[覧趺苡 +鳰艸艸艸苡jiiiii逍~iiiiiiii/iiiiiiiuiiiiiiiiZ闕跫w[m +染閂9/[%鱧苡%G鴟m +G + +鳫艸苹 +鳫跛跛跛跋dF]VVVVVVip陌aiViViViViu]iViViViVia~iiiiiiiid鴟踝G/酲 +[鴟G +w鳫%栓艸鐇 +[鴟GGO + + + + + + +[鳫艸莓 +鴪鴪鴪鴪阮d=MVVVVVVVip忌踝a]VVVVVVVViiVVVVVVVVVVa阮~VVVVVVVViX似阯%D銕棲ΖΖ +D鴟D +鳰闥E%栓艸鐇x鵄Dx鴪獨忻忻/D糢艸苡 +DGOhww鋳jMMAVAVAVA]碇跫b]VAVAVAVAVVVAVAVAVAVb踝jiVAVAVAVAV5{阯 +[鵄鴪鴪鴪%/鴟G鱧踞% +%栓艸钁 +x鴪 +[%染閾艸 + + + + + + + + + +[籠5MAAAAAAAAV~迩跛\AAAAAAAAAAAAAAAAAAV_跋rVAAAAAAAAVM闕o +鳫艸艸阯%%栓E +鱧苡U%樺艸钁%x鴪D染闌跛跛闥 +m鳫艸莓G鯊5>A4A4A4A4A跛\AAAAAAAAAAAAAAAAAAVa闌迴jVAAAAAAAAA]~O +栓艸艸艸[ + +鰊E +鱧芟% +%栓艸钁%x鴪D%鵄艸芟艸跼 + +[鴟艸苡 + + + + + + + + +G$>A44444444闖趺bAAAAAAAAAAAAAAAAAA=p閾跫u=AAAAAAAAAM~ + + + + +摎艸芟艸阯% + +h鰊G + + + + + + +鱧艸闊% + + + + +%栓艸钁E + + + + + + + +x鰰D +[鴟艸芟艸苒E + + +D瑾艸芟 + + + + + + + + + +OA444444444A閾莓u>A4A4A4A4A4A4A4A4A>趺跫j$A4A4A4A4AAj + + + + + + + +E鳫艸跫趺跼/ + + + +D琥[ + + + + + + +鱧艸踞G + + + + + + + + + +%栓艸钁E + + + + + + + +w% + + + + + + +鳫艸跫趺莓[ + + + + + +%樺閾芟 + + + + + + + + + +[A444444444=趺苡MV444444444444444AH旗艸苡:A444444444b剪 + + + + + + + + +鳰艸踟趺范[ + + + + + + +E川x + + + + + +%栓艸艸闊% + + + + + + + + + +/栓艸钁O%%%%%%% + + + + + + + + +%染趺芟趺苡 + + + + + +%鳫艸跋h[[OOOOOGOA444444444R趺芟\V4444444444444444Q陌艸莓F4444444444R椿[UGGGGGOw恬艸莓趺闥w[[[[[mwhhxhhhw栓艸艸踞[[[OOOO[O[w栓艸钁wwxxhxww遉w[[[[[[[w糢艸莓趺阯wx[[[x鵄艸跛鴪鴪鴪鴪鴪b4444444444R趺芟QV444444444444444={辯艸R4444444444b碇闥鴪鴪鴪艸踟趺踝鴪鴪鴪鴪鵄鴪鴪鴪鴪艸艸踝鴪鴪鴪鴪鴪鴪艸阯鴪鴪鴪鴪鵄鴪鴪鴪鴪鴪艸踟趺莓鴪鴪鴪鴪艸跛迯迯迯迯逍\4444444441@幾趺跛XA444444444444444-辯艸R4444444444>塩迯迯迯迯闖艸苡閾芟阮闌艸艸芟逍闌艸跋迯迯迯迯閾苡閾苡闕迯迯迯迴閾艸艸闖艸艸艸艸踝=444444444=X幾跛跛u>444444444444444M艇趺艸u4444444444>~閾艸艸艸艸艸艸苡闖艸艸跛跛跛跛跛跛跛跛跛跛艸艸艸芟跛跛跛跛跛跛趺艸芟跛跛跛跛跛跛跛跛跛跛跛艸艸闖閾艸艸艸艸艸艸艸艸艸艸苡艸艸艸艸阮a=444444444-X剿闌跛逧>444444444444444R椢趺艸4444444444>R閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸闖闖闖闖陌QA444444444={踝跛跛蹂\444444444444444u辯艸莓~A4444444444R剳闖闖闖賽斜闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闌冪跫闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闥闖閾艸艸艸 jR4444444444=踝跛跛蹂a44444444444444=迪艸苡=4444444444F$    鱧艸艸艸AAAAAAA1--::1444444444=l迪跛跛u44444444444444R旗迪跛苡=4444444444A====-$ "!,===============================================-$ $,--==================AAAAAAAAA1,$5*寐艸艸艸AAAAAAAA1>>>4444444444F迪跛跛~>444444444444Ab脛跛跛芟=4444444444A>>=>===--$$,==================================================>>>>1-,,-->>>>>=================AAAAAAAAAAAAA>-,b*寐艸艸艸44AAAAAAA4AAAAAAAAAAA4R迪跛跛逧4AAAA44AAAAAAM鼬芟艸踝R444444444>>>11=-1AA1--14AAAA44A4AAAAAAA4444AAAAAAAA4AAAAAAAAAAAAAAAAAAAAA>1-->AAAAAA1>44A44444444444444A4AA4AAAAAAA=AAAAVbI寐艸艸艸44AAAAAAA4AAAAAAAAAAAA_跛跛跛蹂RRRRRRRRRRRRRR辯芟艸莓bRRRRRRRRRRaRQ522!!"25:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQ22" 2$RbbbbRRRRRRRRRRRRRRRRRRRRRRRRRRR2"2II艸艸艸苡uuu琢跛踟跛蹂艇跛艸艸uX"2QuQIQa~dIdr希艸艸艸苡闖闖闖闖闖闖剌闖闖闖闖跛迪踝迪芟閾陳跿闖闖闖阨闖闖阨阨鐶煩轟閾艸艸艸闕迯迯迯迯迯迯迯迯迯迯迯闖艸閾苡迯迯迯迯迯迯迯迯趺艸閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸閾艸艸艸艸艸艸艸艸艸艸艸艸艸閾艸跛跛跛跛跛跛跛跛艸艸閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸閾艸艸艸艸艸艸艸艸艸艸艸艸苡閾艸艸艸艸艸艸艸艸艸艸苡閾艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸艸闖闖闖闖闖闖闖闖闖闖闖闖闖阮闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖闖阮2A 196 119 1 +                                                                                             +                         +                                                                                                                                                                               +                               +                                +         +                                                                                                                   +                   +                         +                                             +      +                                           +                                                                                   +  +          +                                     +                                              +                               + +                                                      +        +                       +                    +  +            +               +    + +                                +                     + +      27 196 133 1 +     + + + + + + + + + + + + + + +   +  + + + + + + + +                + + + + + + + + +  + + + + +  + + + +  + + + + + + + + +            + + +  +  + + + + + + + + + +   + + + + +  + +  + + + + + + +             + + + + +   + + + + +   + + + +  +  +            + +  + +  + + + + + +  +     + + + + + + +             + + + + + +  + + +  +  + +  + +  + + +  + + +      +   +    + + + + + +  + +      + +          + +  +  + + +  + + + + +   + + +      +     +              +  + + + + + +  +    + +  + +            + + + + + + +  + + + + + + + +  + +  +  + +  +               + + + + + + + + + + + +  +   + +           + + + + + + + + + + + + + + + + + + + +   + + + + +          + + + + + + + + + + + + + + + + + + + + +  + + +                       + + + + +   + + + + + + + + + + + + + + + + +     + +     +    +         + + + + + + + + + + + + +   + + + + + + + + + + + + + + +  + +    +  + + + + +  + +         + + + + + + +  +  + + + + + + + + + + +     +               +  + + + + + + +  +  +               + +      +  + + + + + + +   + + +                     +     + + + + + + + + + + + +                           + + + + + + + + + +   +                  + + + + +  +   +          +     + + + + + +    +                             + +  + +   + + + + +              +     +  + + + +                +                                      +                   +  +                  +     + +   +  +                     + +                               +                    +       + +                     +        + +                              + + + +                        +   + +    +                       +     +    +        +                  +                     +   +          +                 + +                                +                                +         +             +                  +   +        + +                                            +  +      + +                   +                           + + +                        +    +  + +                                   +                         +  + + + +                             + +                               +  + +                      +  +                          +                     +                                       +                              + +   + +                           +                           + +     + +                      +                                                                                      + +                           + +       + +                     + + +  +                                                                                                       + +   +                                                      +     +                  + +                                                                         +                                              +             +  +                   +     +                 +    + +     +            +         +                          +                                                                  + +                             +                 +  +                                                                                              +                                                                                                 +                                                +                                                                            + + +                                                                                                                                                                                                       +                                                                               +                                                                         +                              +                                           +                                 +                                                +                                                                                                                        2D 196 5 1 +   8A 144 92 0 +8D 80 79 1 +kVkoGJZVZ}J}}}Jro}}kZkJkZV`woeZJ}ZkTNkoPsk協keZV│Jos}│k}VZGsDhhJhZok侠sVVkk│rDZorZ?D}Zskkr}}國J`oZ`[}}ZP4}kVGZh╂s4Joks}oVWkk1}鏡7J}}eks│[DVG※席4rZ}koDZkok橋:PooVCVos[o7DDZG橋&D}[Gkko7PrkoZVDD-oooN&&JsoZW[o}:4[V[Zo13GGhkZo╋&4[Gko7:orhZ弊GGo丿Z4oN[NoeZoNGo沸1'P[VZG:Gok1>}癖岬Zr-&:De4&GZ悴GIZ弊)4roZk□o-koV鋪別t1&rZo&Z:G┬DZ絶o&Jooo□3:[k補粐k[[&1G:3Zr╂篳:'Jok:-e[粐弊o3∂&&e:3癖Z'GD:3q≫筥Z7&kkGoeZG':橋1:kkr綿4ooZGG癖凄│癖鏡rG1NroVJ}r}e∪癖癖凄ZG3GC:kGG[ko┬}k席沸C&&Voo篳協癖oG1:凄k7&DDGo[紛癖&&Grkkk}協┬垣W&uo}[│V7W7ok[k□∧kZ`k}VV}kko誓艸儲Nk∪VV}NoZZVDo}弊W}O}1`ooo癖}klVr}ookk}補筥h}}Zwr腹kZkZ}7o}}絶箒席V∧粐r沸r※補笄ok誓rr清粐ok}佇o}∧沸侠D[∪r}yr}篳o7WZ誓窟VP`<&4447誓籘協※ZPJVP&77oy鏡癖窟}}P74o7}rok[}協橋凄□VVP}rkoko}ko∃澀弊kP44<4444摺价4J}kTookkkkkkyV癖弊k:aYeeiBmYYIai5!mQpk]9aa1hhp(]aA]Q]"]IdUBY`bl#YddNI` Q`XXTPM E!`.=DBXDH 9LT656555555-555)5-5)-)-5)%-1--%)-%)1)s%q-)r%q%p)o-q!n-p%o)p!o%n)k-n%Q)P-P)N-P%P!N)O!M)N%N!1%M%0)J)NM!.-0%L!,-/%0/!-)/.!-%.-!.+%-%-)% )%,!)!* ! % !   ! +!  !  +$  $ +       l  jhi i high h hecfHgef dFfe feEd c eFDFdE BcEED $ DB  C%D$C$B$##!""!!WWFA_P 256 +!s{ws{Kww|kvsCl{OTwRwZkf{N{9w]cHb{J{78o9g-w@{so=WsoY&.RbZ ^1JV* ^e1F3BSe VY8Y]ee]>YMU2`EaaUe]MU 1AFY\=EDYI MQ5]\=A5&Q.X1$QEI9P GIQ%$MKE%CIjA&I5gA)ET,A)l5EAl1HDC=nAHF9mBPK-+5<@9484+!1 )0404a< +4",($!40$4(,,(,0$( $ d "BMIDWAY_P 19 +!dP#]TLvA(U愽1miR$$2k #vw#up无=(hXC d 塋/0"Ml嶐嶐 V-N~?C L)edn$威碧!"!exm)v析N唾津sJ#jsBuZK州CЭ)`ide& +]係W A KK沙>7慨R)^ B =)Νp8(A*V葦)>p[c>h*wぅ!?cv)\Tv 1J)+` T\=$PA +1QSnovD @1m- BgK& 311(**s tt!-4 z{b11(|e)L}~sM PAW*uDDcv *wq'4 m)xylXbDmno)"7p+)q m-rsM#t*abD15cdMefgheAi -%j8kWX (-Y))WMZ[\])^-_`?NOC1PAKQRST%UVEOABCD1 EFGHI5JKL%KM89:;<<=>? -5@' -./01 234((-567 !"# $%&'(()* +, +   18 68 29 1 + -q拘桓鰭蕗闢齲齒珀墺夲驕瘁續珀癡痣痣樔鴕''-qE梗病託闢齒關轢墺榑墺奕縺瘁瘻壤痣橇髓lH222 蟾更病艢闢頸辣縱墸忻墺壤瘁墺瘁夲驕胖7GT2+GM#\ 厳5"6瑙闖鞳瘁騅幗忻幢夸鱠鰌墺壞帑驢*MU1らMMGF[D裨嚮跋珀疽忖忻釀網嵎聰矜癖癖碧吠)2TA1J*++o%C禪昶璢痳壞忻嶽面嶽帑睨睚艸艸頬杷GU2.,7_C渤梳疽墸忖北免氓睇蒜努播電汰A+_掣桀壞嶽緬牝杷歛鰭覗鰭鰭鰭鰭oNGM佰k厶壞嶐嵬汎愽病疏疏氷E詑更1=$L.`a亘北滅蚤詑病EE打病沼EEJ1J+DrP碧面独詑EEEE舵病症EEEjJYG??DrP兎波詑EE鰭E梢EEEE査 j%%j/U#2Tx ?q5"疏詑EEE梗松神嫉敢%.]SyzKx ??'m!"EEE松真神誓声惨g3+xxxU2+Gxyx???@@h?'&係E沙式完旭算軌+xSJJ.渦2x ??@@hh @?>qm崖完軌 GK#UK%72M$yx ??hhh @@'9&`■MぅAxxUΗA%2A>???hhhhh@>qqtt[Y*1 KL*[2H2++2H89((???hh?hh@@9&ut uZC  .G*Tg'((??@@-99cc&uHF-GHF.Y+2[gn((??h\qcccccucuuu77L=2M2HG9(((??quuuccuccc,]xy=z{{|}~A=xiy2Y-:( l++lDDstuccccd_ef_Cg(hiijkZl mn(ihU2opq(83CDrrstuvwcST%HHH%NNUVWX,,Y7Z[\(; ]^38DHH_D`aPbRRcFG22HG,I JKLM > J*+NM2%DCOPEQR2+789:;<=/22,'>(?@A2$2B2++3CD566E#$% &'( )*+,-  ./01/234556 +   !"1B 40 45 1 +Z4e+鏡ZZ□n[Z,喜nn**D5inZe+>Jn*N、;J nn)[nnnee¶+<僑?nnD[←+<顳J'n ZN3e< 'P銕n艷Nenfe<驟J mWm溢n□e Onn*e艶髓紕齠vmmmZ **f+覿q{T8癖wZ[♂[覿譯'癖癖w33[Ne≧>Jv併癖菎ΠC33De>yDOO+=&v併並逮ZZDex22DO,iu'vWWB詑逮ΖZZ2*D5JT'v8黛稈ZZ22efDD5i&8曃兮巳Z□□滿i%B暒畭Z□*含>$%.W挾鍛昿ZZ*;卑r.Wm蜘愧ZZnZ*ZZ,M@Y.7掫擧勁ZfZP壞婀,#d.Y並慄巳wZe洋力宿q>表恩原>t佩Xm僣頬ZffZ+毒]塙 >={膝幻 ?MtA@78並肪ΠO^従郷q6 F ?#!-!.m唾:OO患況h + + +I6j?#!@.W算:OfOz横h=~IjG + + 60#AAAA.7WwCZ4P?bHjsj?` + _ -A--"@77wZZZe▼ +GHH?J H j !A.!wZZn、H~=? jju/!!!ZOOe*o=V~Ir j 7.!!$$!ZZOexq{V|hS jjVTm.@@d#$#$%$!ZZee = TvX@@M$$#d..dCOO**\E?|~k%.A@M%$#MwCZxyZz]{Fb|b1j}~uuv8@@A!$$#$CCZnopqrs8tllVuv%%!.$$KCZNeefghij??k blVmc..A###%%%8%!ZZ[*\]^J__`aabV8c!AA"##d%%%88%$CCDNOOP+QRJS/TUVW7X"@@Y%#$!C3D + +?/@AA@!7%B%%%%234+5 + +6$!-!7819%%()*+, + !--!./011 + !"""#$%&' + + 1E 184 6 1 + +   +       + + + + + + + + + +  + + + + + + + + + +      + + + + + + + + + +  +       + + + + + + + + +  + + + +   +   + + + + + + + + + +   +  + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  21 68 27 1 +蜉壮叢逞諺奚L77嬾 +L))逋L狙)暦 +i贊 + +]蕨) +) +j鳫 + + +9 +狡7陳i)t)779鈿 +7 +7矢駭9鰐: 9977寞 +隷i +7 ^^7  +)) + + +7)蓍蠢  ^^^_888)9997 + + + +]]瞳景  ^^^_ ^ 7聊疱] +)艸]TsU 88 8 俛槿渤珀瞽邃忻怛UU 88 88888 +ii +壞嵳t慵掣i{UU _泡88^887 +洋 +和 + +彪{8 _泡 ^ ^97 + +7^  + + + + + +悉松神888  ^_ ^唾^ +)]]K5毒 +係88  _ ___ _ 9^ +)]=v&6|| + + +^  _ __  ]u渦慨偽{{|]]]]7^8____  ]K},<odoぅΖ| )) + + +^88 ^__  ]]j}xox4hU{h|) + + +7888   }~ux//Obrs ) + + + t ^ulvw$$%00o0oxoocy1z33#"333p&gh  + i +8^ ^jklmnb00Xc00oooc1XX1#!!CGG!Rpqp4\TT] +99^88__`abb0ccd03X1!AB!!!" ED !eRfITT UU VWO0$33X3AC ! Y E AARZ[IJK +8L*;M=NO?013333##! PCD " QRRRS567 +89799):;<=>/?@0AB"CDDE FG!AA#H'(  ) +  +*+,-./01#2#  #34 +   !"!"!#$%&24 52 24 1 +NNN髑NSS ! nNy1O%跿ゥキゥ"遶 銕 髢czno$% 跋嶷惺ゥ0ヘ逎  ヮ鑞韶00nN髓n非wS!c7粐C更0嶽嶐nnスCN肄pr.w蜉##詒"c墺CCCQ慟慝n慓1CCNzqr&EVV(s!Rp.-!S11CCC衡孚CCQ2y忤 +V樛?&±. + 11CCC更更Cn12b0キ#力E(=冪kXkh^?'00B 221CC更CC11bo#"Rc +$z%%Wh[^_O +$y111-C211121b2# c $RRA ;<&x9O +3yQC1##C疹211b2ncz混t~tut&t_m Soy-Q#-1LO梢C#bo1"SS<*_F.@@1A! +B3 1C### +$$9%DDE>FGGHIJJ=K,-.! + +$/ #0012## + + +333$ 4556789:;<=>*),? + !"###  $%&'()*+, +  27 48 21 1 +pY + + +Q QVVV&%1% 2 ??C仔 <VQQQ< % && Q :?m?V< U@3@-%%2&W% (?m? Q))剄ppgv鵄1122VV3WW<掻凰遐rr關髓酷枠P 'p2VU!bb蓙z蜑gvO枠D:@7軛r%% +`udri∠耙gC-%@梏樊z%4烝Zk玻mmC:mlKb智-%@[邃zzz<*!8MmC-OOP 掣)7pCONQK#槿rqX C==-9P? 4J YJ@:椀 +*冫嘔f孛s1&DP&% JYAJUQ波 +![fmm3碧s%%X坐YM唾r秀"AY3Q,X`!"mp殿十&%2渦LZZg慨偽係STa Q9Xt纂iE&&XXALbjrぅqЖa3IUH"br& 4*bunBY@II +IJqsVI4tubvwxyzz{|}~in)B"I << zON\]^__4`3abcdefghijZkaa66*I <<<\lmlnopjqrNO.P3<<Q RSS666BTTU +Q&VWW?@A*BCD2EFG1HIJK)67LM$%& ' %()* +,-./0&&12%34 5678  +   !"#2A 60 32 1 +Ytツ択鴪十癨.f3339詑鴕覡NN零^ +LmE9ラ詑鯊鴦N -EDd"~銕關聿Ω鯉騾珀 G7I609~諡跛网邑糊呱s G + 0z33Bサ_p聿舁听樊/ GG + +5M $pp□慷様<跇>>章GGGG + 8dG矣G d禁悧慷<<焉>>拆{殍G +YYl蕨G巖宋`慓慓邑互珀O>土{4# .23$拂嶽9pΖ邑<匳>蕨($$3崢オ弑慷幻;厶>遅 ++if.Gミ`Κ儷厶 >G +.W(i2.G徒`誘< 墨BU%/Y GG 牝``po< !!I%%0zu陳 +]訴、`p<!G0U 8#YY陳G顛毒臓p!qNa>!GWX.uc164/ uhS岨臓橋Na.0f33i|30X#$8i3サ~`p`脅a>梢c djD@k%6葦FSY患p`況=>^ +/D3.CIBz4``VE4c- +@,Eu fII4R┤`a^3z-SGGG +13j.5Ym++D3``a|i4GG + 2cSkBzf(3S}~ qOY+1GGGG7+UU UI)f4c9`NasYI05 73*X]$TU0(So`qO-.8GG 0j(*C&$.$[C33S9;`oaFf1GGGG u$c&vKwxywfBzz#S{GG{|c9}~_oOs/)g $hSif$G GG8fj2-0k1.lSmEYn99opqrsbt#fSTU.VW% G G  +7@634X.YZ/6[\,1]^:_`aObcdef6D++33EF$GG  G@*3HIBAJKLF3(CMI9NO>!P.3QR)*+% ,-./01234561789:;<=>?!$@ABC +  !"#$%&'(2D 36 29 1 +桶ΞいΖ}患|~cit]D~ΞぐΖ}}}||~|~}tklChx|~yxxウЖ}xxxww]_}~x}x  xwwwuCQDi~|}xw\uHUCivwwx|}}wx~~opSRCUuuiivvvuwxyvzqzgd{o{\\{RUUHgccRRn\\\kopqrlkksklttS\tjMSUNRciRjjRkQQdddllSllllCCSUQdd_mcc\RQQQMSSde?]fDDDCD:N@@Qgh+S\QSC]]??^5566++_`_:06Y@aabQRSCHSTU?V992$#"''B+2W+XYZ[GHM@H@N:N:991O 7(%PGHG@@::::::90; IJKKJJL??CD?::::99E0222#" F  ?@@:::99:90A;;2B++BB""'96666:0002$1;;, <'""==>5655660022$1$"" (7* 8/+00122$$$,3 33 4 .#+""$$,-  ."'(#$  ))* "###$   %& + + +  !  + + + +         + +  + +  +   30 192 71 1 + +    !"#  $%" &$%'()**+, +-,./0%1  +23""%&4*./5%672371 +%"89:;&<""""=1(6">> ?"""""""@1(AB=">CAD 1EF G;$%H7:5"""""""""I ")J@CK  LGE 3""""""MN"OP1> 昏vv瓜悉十\vvv新vvvvvvvvvvvvvvvxrr1  #OOOOOOOOOOjaY \jjjjjjjjjjjjjjjjjjjjjvN8jjvvvvvvvvvvvvvvvvvvvvvv,即叩vvvvvvvvvv!調軌飴顛v況芝十波vv>扱vvvvvvvvvvvvvvvvvvv !OOOOOjjjjcw( xjjjjjjjjjjvxMw\jjjjjjjxfvvvvvvvQvvvvvvvvvvv#Xvvvvvvvvvvvvvvvvv徹顛祁祁祁祁=xx鳩敬vv扱v媾叔催新avvvvvvvvvvvvvvvvvvvvvvvvvD4+* +20cjjjjjjjjjjjjx[ wjjjjjjxX YUvvvvvvvv wvvvvLurvvf丿vvvvvvvvvvvv\vvvvvv惇祁栗v愀{vvvvvvx扱v票avvx冥十型警vvvvvvvvvvvvvvvvvvvvvvvvvvvvYe!cjjjjjjjjjjjjjjjjjjj{&xjjjjjj1*vvvvvvvvLVvvvGvvvvvvvvv斛僊vvvv\>>xvvx読斤{vvvvv杣祁慧vx扱rvvvvvvv天v催契vvvv能十憩vvvvvvvvvvvvvvvvvvvvvvvv槿t*) rjjjjjjjjjjjjjjjjjjjjjjjjjvvvvv  +vvvvvvvvvvvvvvvvvvvvvvvvvvvvvx些瓢湎暗vv扱祁叔\vvv>澤\碍rv儀wvvvvvvv埒傾v{犒vvvvvx\vvvvvvvvvvvvvvvvvvvNWVkkkkk--*) wjjjjjjjjjjjjjjjjjjjjvvvvvvvvvvYUxvvvvvvvvNWvvvvvvvvvvv!慨鰭vvvv0埒様祁祁祁vv彪繋圭vv典xEvvc垠吮\匏祁rvE\七v壟v{扱v\扱桁琅唐叔\vvvxvvvvvvvvvvvvvvvvvvvv|qI111111 QxjjjjjjjjnwxvvvvvvvvvvvvvvvvvvfLW81X醍僊v謬厭淌匱祁所蟒酬畦v碩勣r{犯匱祁v\扱v\七結悉vv桟v七祁殊該\vvvvvvvvvvvvvvvvvvvvpu1 1rjjjjjvvvr Lvvvvvvvvvvvvvvvvvvvp 1up迯斫vvv v或祁祁十啓呷關饅祁Mvrv>道牆斗孚白軍vv桟v七圭vvv票\vvxr\{xvvvvvvvvvvvvvvvvvvvquvvvvvvvvvQ  ovvvvvvvvvvxaw#8uYsvvvvvvvvvvvv天祁紗!xvvvv頌酬vv遁甜鉄>\十v拏\vv遊6vvv\xvvvvvvvvvvvvvvvvvvvvhk)uvvvvvvvvv| 1 WvvvfI1 7vvvvvvvvvvvvvvv7祁xvvvvvvvv晩蟒vx愀敬xvvvvx診蟒\v>扱vvv査rvvvvvvvvvvvvvvvvvvvvvt3]***kkk7xvvvvvvvvx+_D*oe  tvvvvvvvvvvvvvvv\祁茎rvvvvv!劾匳rvx羞啓蛤各灌羞十vx酉>vvvvvvvvvvvvvvvvvvvvvvt + +::::**:vvvvvvvvva~QlD s*vvvvvvvvvvvvvvvvv七祁芥嚇衿堙貅掲vv彪祁型顛郡r>\vvvvvvvvvvvvvvvvvvvvvvGktvvx|WV1YYkTvvvvvvvvvvvvpvvvvv慣祁型甜祁圭薯祁掲v碍祁密vvvvvvvvvvvvvvvvvvvvv  8o`  +vvvvvvvvvvvv||vvvvvv新祁祁祁畦蛤備酬畦xvvxxvvvvvvvvvvvvvvvvvvv|f  Yvvvvvvvvvvvv8vvvvvv\涎祁揚>\vvvv\圭祁rvvvvvvvvvvvvvvvvvvvNfX11 vvvvvvvvvvvvvvvvvvvx扱祁vvvvvvvvv唐裸\vvvvvvvvvvvvvLG111111 vvvvvvvvvvvvvfvvvvvvvv拏祁vvvvvvvvv\vvvvvvvvvv櫟u vvvxrvvvvvv8vvvvvvvvE啓vvvvvvvvvvvvvvL:::::: +ku7vvvv\vvvvvvvvvvvvvv\vvvvvvvvLG klvvvv\甸xvvvvpvvvvvvvvvvvvvvvvvN vvvvvvvvvvvvqvvvvvvvvvvvvf8u1vvvvvvvvvvvv8vvvvvv81111111 ivvvvvvvvvvvva#L*1 +zvvvvvvvvvvvvv7*: dvvvvvvvvvvvkvvvvvv$t7 u +w|- ue  33 96 18 1 +  +    + + + + + + + + + + + + + + +   + + + +   + + + + + + + + + +  + +  + +  + + + + +  + + +  + + + +  + + +  + + +  + + + +    + +   + + + + +  + + + + +     + + + + + + + + + + + + +   + + + +  + + + + + + + + +    + +  +   + + +  + + + +      + + + + +  + +      + + + + +  + +  +    +  +  + + + + + + + + + + + +  + + + + + + + + +   + + + + + + + + +  + + + + + +  + +  + + + + + +  + + +  +   +  + + + + +   + + + + + + + + +  + +   + + + +  + + + + +  + + + +  +        36 184 5 1 + + + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + +   + + + +    + + + +  + + + + + + + + + + + + + + + + + + + + + + + +    + + +    + +  + + +     + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +  + + +  + + + +  + + +   + + +  +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + +   + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + 39 88 31 0 +             + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +                + + + + + + + + + + + + + + + + +    3C 196 7 1 +     +         3F 192 7 1 +  +    42 188 6 1 + + + + + + + + + + + +  +   +          +  +  + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + +   + + +      +  + + + + + + + + + + + + + + + +  + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + +   + + + + + +   + +  + + + + + + + + + + + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + + + +  + + + + + +   + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + +                  45 88 31 0 +                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +        48 204 128 1 +                         +                                                                     +                                            +         +           + + + +                                      +              + +                +                +             +                         + +           +                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     +                +                                                                                                                                                               + +                                +              + +                            + +  +              + + + +  +            + +             + + +             + +                                                                                                                                                                                                 +                                                                                                                                                                                                                                                                                    +                                                +                                           4B 204 128 1 +                                                                                                                                                                                                                                                                                                                            +    +     +    + +              +       + +       + +         + +            +                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              4E 80 31 0 +               + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +        51 88 14 0 +             + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +            54 12 99 1 +  + + + + + + + + + +   + + + 57 12 101 1 +            +   + +  + +   NNSLAB1_P 22 +vBU>4:61-)%n!M,  fE$RZRLGO_P 255 + E$ N:_[cowvN(uFV>M85oVVOREM$<&={f(#:k7g@@g5^ f5n)Vb(kIIM9tR'I'MM(EHEHQ'Q&M&Q=&U'UQYGYF-]]]]hYeaaR fNwOb.b niei]fpjNn najnnv,reG=vMria^5JiIUvozi~zmm~mz remm/v~YKMUGF_P 183 +]a]EUH<884044040'=e%UD<4,H=@0,440((0'98885hA=8,0A845<@<<40EE9GADI<'A9M&M'M@=GQGM@0HQ'Q((,5HUM8iAhUhYGUFQ&QIA(EE bretimg.tbl +***> 3d58530,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* BRET HART ************************************************************** +ZON> +MON> +BON> +POF> +; diff --git a/IMG/BRET.LOD b/IMG/BRET.LOD new file mode 100644 index 0000000..57f9968 --- /dev/null +++ b/IMG/BRET.LOD @@ -0,0 +1,117 @@ +ASM> bretimg.tbl +***> 3d58530,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* BRET HART ************************************************************** +ZON> +MON> +BON> +POF> +; +hrt_hit.img +---> H2AH3A01,H2AH3A02,H2AH3A03,H2AH3A04,H2AH3A05,H2AH3A06,H4AH3A01 +---> H4AH3A02,H4AH3A03,H4AH3A04,H4AH3A05,H4AH3A06,H2AE3A01,H2AE3A02 +---> H2AE3A03,H2AE3A04,H2AE3A05,H2AE3A06,H2AE3A07,H2AE3A08,H4AE3A01 +---> H4AE3A02,H4AE3A03,H4AE3A04,H4AE3A05,H4AE3A06,H4AE3A07,H4AE3A08 +---> H2AM3A01,H2AM3A02,H2AM3A03,H2AM3A04,H2AM3A05,H2AM3A06,H2AM3A07 +---> H2AM3A08,H4AM3A01,H4AM3A02,H4AM3A03,H4AM3A04,H4AM3A05,H4AM3A06 +---> H4AM3A07,H4AM3A08,H4BK3A01,H4BK3A02,H4BK3A03,H4BK3A04,H2CP3A01 +---> H2CP3A02,H2CP3A03,H2CP3A04,H2CP3A05,H2CP3A06,H2CP3A07,H2CP3A08 +---> H4LB3A01,H4LB3A03,H4LB3A04,H4LB3A05,H4LB3A06,H4LB3A09,H4LB3A10 +---> H3GU2A01,H3GU2A02,H3GU2A03,H3GU2A04,H3GU2A05,H3GU2A06,H3GU2A07 +---> H3GU2A08,H3GU2A09,H3GU2A10,H3GU4A01,H3GU4A02,H3GU4A03,H3GU4A04 +---> H3GU4A05,H3GU4A06,H3GU4A07,H3GU4A08,H3GU4A09,H3GU4A10 +hrt_kik.img +---> H4KM3D01,H4KM3D02,H4KM3D03,H4KM3D04,H4KM3D05,H4KM3D07,H4KM3D08 +---> H4KM3D09,H2KM3A01,H2KM3A03,H2KM3A04,H2KM3A05,H2KM3A06,H2KM3A08 +---> H2KM3A09,H2KM3A11,H4KM3B02,H4KM3B07,H4KM3B08,H4KM3B09,H4KM3B10 +---> H2NM3A02,H2NM3A03,H2NM3A04,H2NM3A05,H2NM3A06,H4NM3A02,H4NM3A03 +---> H4NM3A04,H4NM3A05,H4NM3A06,H4NM3A07,H2MP2B01,H2MP2B02,H2MP2B03 +---> H2MP2B04,H2MP2B05,H2MP2B06,H2MP2B07,H2MP2B08,H4MP4A01,H4MP4A02 +---> H4MP4A03,H4MP4A04,H4MP4A05,H4MP4A06,H4MP4A07,H4MP4A08,H3DC3A01 +---> H3DC3A02,H3DC3A03,H3DC3A04,H3DC3A05,H3DC3A06,H3DC3A08,H3DC3A09 +hrt_msc.img +---> H4TI4B01,H4TI4B02,H4TI4B03,H4TI4B04,H4TI4B05,H4TI4B06,H4TI4B07 +---> H4TI4B08,H3GF7B02,H3GF7B03,H3GF7B04,H3GF7B05,H3GF7B06,H3GF7B07 +---> H3GF7B08,H3GF7B09,H3RL1A01,H3RL1A02,H3RL1A03,H3RL1A04,H3RL1A05 +---> H3RL1A06,H3RL1A07,H3RL1A08,H3RL1A09,H3RL1A10,H3RL1A11,H3RL1A12 +---> H3RL1A13,H4MF4B01,H4MF4B02,H4MF4B03,H4MF4B04,H4MF4B05,H4MF4B06 +---> H4MF4B07,H4MF4B08,H4MF4B09 +hrt_pnc.img +---> H2PL3B01,H2PL3B02,H2PL3B03,H2PL3B04,H2PL3B05,H2PL3B06,H2PL3B07 +---> H2PL3B08,H4PL3X01,H4PL3X02,H4PL3X03,H4PL3X04,H4PL3X05,H4PL3X06 +---> H4PL3X07,H4PL3X08,H2BC3A01,H2BC3A02,H2BC3A03,H2BC3A04,H2BC3A05 +---> H2BC3A06,H2BC3A07,H2BC3A08,H4BC3A01,H4BC3A02,H4BC3A03,H4BC3A04 +---> H4BC3A05,H4BC3A06,H4BC3A07,H4BC3A08,H4PS3A01,H4PS3A02,H4PS3A03 +---> H4PS3A04,H4PS3A05,H4PS3A06,H4PS3A07,H4PS3A08 +hrt_wlk.img +---> H2TW2A01,H2TW2A02,H2TW2A03,H2TW2A04,H4TW4A01,H4TW4A02,H4TW4A03 +---> H4TW4A04,H2ST2A01,H2ST2A02,H2ST2A03,H2ST2A04,H2ST2A05,H2ST2A06 +---> H2ST2A07,H2ST2A08,H4ST4A01,H4ST4A02,H4ST4A03,H4ST4A04,H4ST4A05 +---> H4ST4A06,H4ST4A07,H4ST4A08,H1TL5A02,H1TL5A03,H1TL5A04,H1TL5A05 +---> H1TL5A06,H1TT5A02,H1TT5A03,H1TT5A04,H1TT5A05,H2WL1A01,H2WL1A02 +---> H2WL1A03,H2WL1A04,H2WL1A05,H2WL1A06,H2WL1A07,H2WL1A08,H2WL1A09 +---> H2WL1A10,H2WL1A11,H2WL1A12,H2WL1A13,H2WL1A14,H2WL1A15,H2WL1A16 +---> H2WL2A01,H2WL2A02,H2WL2A03,H2WL2A04,H2WL2A05,H2WL2A06,H2WL2A07 +---> H2WL2A08,H2WL2A09,H2WL2A10,H2WL2A11,H2WL2A12,H2WL2A13,H2WL2A14 +---> H2WL2A15,H2WL2A16,H2WL8A01,H2WL8A02,H2WL8A03,H2WL8A04,H2WL8A05 +---> H2WL8A06,H2WL8A07,H2WL8A08,H2WL8A09,H2WL8A10,H2WL8A11,H2WL8A12 +---> H2WL8A13,H2WL8A14,H2WL8A15,H2WL8A16,H4WL2A01,H4WL2A02,H4WL2A03 +---> H4WL2A04,H4WL2A05,H4WL2A06,H4WL2A07,H4WL2A08,H4WL2A09,H4WL2A10 +---> H4WL2A11,H4WL2A12,H4WL2A13,H4WL2A14,H4WL2A15,H4WL4A01,H4WL4A02 +---> H4WL4A03,H4WL4A04,H4WL4A05,H4WL4A06,H4WL4A07,H4WL4A08,H4WL4A09 +---> H4WL4A10,H4WL4A11,H4WL4A12,H4WL4A13,H4WL4A14,H4WL4A15,H4WL4A16 +---> H4WL5A01,H4WL5A02,H4WL5A03,H4WL5A04,H4WL5A05,H4WL5A06,H4WL5A07 +---> H4WL5A08,H4WL5A09,H4WL5A10,H4WL5A11,H4WL5A12,H4WL5A13,H4WL5A14 +---> H4WL5A15,H4WL5A16,H3RN3A01,H3RN3A02,H3RN3A03,H3RN3A04,H3RN3A05 +---> H3RN3A06,H3RN3A07,H3RN3A08,H3RN3A09,H3RN3A10,H3RN3A11,H3RN3A12 +---> H3BO3A01,H3BO3A02,H3BO3A03,H3BO3A04,H3BO3A05,H3BO3A06,H3BO3A07 +---> H3BO3A08,H3BO3A09 +hrt_jms.img +---> H4UP3C01,H4UP3C02,H4UP3C03,H4UP3C04,H4UP3C05,H4UP3C06,H4UP3C07 +---> H4UP3C08,H4UP3C09,H4UP3C10,H4UP3C11,H3UC3X01,H3UC3X02,H3UC3X03 +---> H3UC3X04,H3UC3X05,H3UC3X06,H3UC3X07,H3UC3X08,H3UC3X09,H3UC3X10 +---> H3UC3Z10,H3UC3Z01,H3UC3Z02,H3UC3Z03,H3UC3Z04,H3UC3Z05,H3MS3X01 +---> H3MS3X02,H3MS3X03,H3MS3X04,H3MS3X05,H2PF2B01,H2PF2B02,H2PF2B03 +---> H2PF2B04,H2PF2B05,H2PF2B06,H2PF2B07,H2PF2B08,H4PF4B01,H4PF4B02 +---> H4PF4B03,H4PF4B04,H4PF4B05,H4PF4B06,H4PF4B07,H4PF4B08,H4JK4C01 +---> H4JK4C02,H4JK4C03,H4JK4C04,H4JK4C05,H4JK4C06,H4JK4C07,H4JK4C08 +---> H4HU4B01,H4HU4B02,H4HU4B03,H4HU4B04,H4HU4B07,H4SB4B01,H4SB4B02 +---> H4SB4B03,H4SB4B04,H4SB4B05,H4SB4B06,H4SB4B07,H4JP4C01,H4JP4C02 +---> H4JP4C03,H4JP4C04,H4JP4C05,H4JP4C06,H3RR3Z02,H3RR3Z03,H3RR3Z04 +---> H3RR3Z05,H3RR3Z06,H3RR3Z07,H3RR3Z09,H4KM3C01,H4KM3C02,H4KM3C03 +---> H4KM3C04,H4KM3C05,H4KM3C06,H4KM3C07,H4KM3C08,H4KM3C09,H3PG3A01 +---> H3PG3A02,H3PG3A03,H3PG3A04,H3ZZ3T01,H3ZZ3T02,H3ZZ3T03,H3ZZ3T04 +---> H3ZZ3T05,H3ZZ3T06,H3ZZ3T07,H3ZZ3T08,H3ZZ3T09,H3ZZ3T10,H4RF3A01 +---> H4RF3A02,H4RF3A03,H4RF3A04,H4RF3A05,H4RF3A06,H4RF3A07,H4RF3A08 +---> H3HT3X01,H3HT3X02,H3HT3X03,H3HT3X04,H3HT3X05,H3HT3X06,H3HT3X07 +---> H3HT3X08,H3HT3X09,H3HT3X10,H3HT3X11,H3HT3X12,H3FR3A01,H3FR3A02 +---> H3FR3A03,H3FR3A04,H3FR3A05,H3FR3A06,H3FR3A07,H3FR3A08,H3FR3A09 +---> H3FR3A10 +hrt_mjt.img +---> H3ZS3A01,H3ZS3A02,H3ZS3A03,H4ZZ4C02,H4ZZ4C03,H4ZZ4C04,H4ZZ4C05 +---> H4ZZ4C06,H4ZZ4B02,H4ZZ4B03,H4GH3Z01,H4GH3Z02,H4GH3Z03,H4GH3Z04 +---> H4GH3Z05,H4GH3Z06,H4GH3Z07,H4GH3Z08,H4GH3C01,H4GH3C02,H4GH3C03 +---> H4GH3C05,H4GH3C06,H4GH3C07,H3AB3A01,H3AB3A03,H3AB3A04,H4POGO01 +---> H4POGO02,H4POGO03,H3PN5A01,H3PN5A02,H3PN5A03,H3PN5A04,H3PN5A07 +---> H3PN5A08,H3BR3Z01,H3BR3Z02,H3BR3Z03,H3BR3Z04,H3MS3Z01,H3MS3Z02 +---> H3MS3Z03,H3MS3Z04,H3MS3Z05,H3MS3Z06,H4LD4A01,H4LD4A02,H4LD4A03 +---> H4LD4A04,H4LD4A05,H4LD4A06,H4SL4C01,H4SL4C02,H4SL4C03,H4SL4C04 +---> H4SL4C05,H4SL4C06,H4SL4C07,H4SL4C08,H4SL4C09,H3DU3A03,H3DU3A04 +---> H3DU3A05,H3PP3X01,H3PP3X02,H3PP3X03,H3PP3X04,H3PP3X05,H3PP3X06 +---> H3PP3X07,H3PP3X08,H4BZ4A01,H4YR3A01,H4YR3A02,H4YR3A03,H4YR3A05 +---> H3HB3A01,H3HB3A02,H3HB3A03,H3BF3A01,H3BF3A02,H3BF3A03,H3BF3A04 +---> H3BF3A05,H3BF3A06 +hrt_rjr.img +---> H3RS3A01,H3RS3A02,H3RS3A03,H3RS3A04,H3RS3A05,H3RS3A06,H3DD3Z01 +---> H3DD3Z02,H3DD3Z03,H3DD3Z04,H3DD3Z05,H3DD3Z06,H3DD3Z07,H3DD3B01 +---> H3DD3B02,H3DD3B03,H3DD3B04,H4TN4X01,H4TN4X02,H4TN4X03,H4TN4X04 +---> H4TN4X05 +hrt_jake.img +---> H4JD4B04,H4JD4B05,H4JD4B06,H4JD4B07,H4JD4B08,H4JD4B09,H4JD4B11 +---> H4CR3D01,H4CR3D02,H4CR3D03,H4CR3D04,H4CR3D05,H4CR3D08,H4CR3D09 +---> H4CR3D10,H4CR3D11,H4CR3D12,H4WA4A01,H4WA4A02,H4WA4A03,H4WA4A04 +---> H4WA4A05,H4WA4A06,H4WA4A07,H4WA4A08,H4WA4A09,H4CS3A02,H4CS3A03 +---> H4CS3A04,H4CS3A05,H4CS3A06,H4CS3A07,H4CS3A08,H4CS3A09 + \ No newline at end of file diff --git a/IMG/CASKET.IMG b/IMG/CASKET.IMG new file mode 100644 index 0000000..5734d95 Binary files /dev/null and b/IMG/CASKET.IMG differ diff --git a/IMG/CHAIR.IMG b/IMG/CHAIR.IMG new file mode 100644 index 0000000..8145fb6 Binary files /dev/null and b/IMG/CHAIR.IMG differ diff --git a/IMG/CHANGES.IMG b/IMG/CHANGES.IMG new file mode 100644 index 0000000..e69de29 diff --git a/IMG/CHOICEBK.IMG b/IMG/CHOICEBK.IMG new file mode 100644 index 0000000..d807ef6 Binary files /dev/null and b/IMG/CHOICEBK.IMG differ diff --git a/IMG/COMBO.IMG b/IMG/COMBO.IMG new file mode 100644 index 0000000..e46502a Binary files /dev/null and b/IMG/COMBO.IMG differ diff --git a/IMG/COMESOON.BDB b/IMG/COMESOON.BDB new file mode 100644 index 0000000..c39e92a --- /dev/null +++ b/IMG/COMESOON.BDB @@ -0,0 +1,9 @@ +comesoon 2000 1000 255 1 5 7 +comesoon 214 700 123 436 +4000 250 150 0 0 +4000 250 276 3 0 +4B00 296 188 18 3 +4B00 436 167 15 3 +4000 437 150 C 0 +4000 438 276 F 0 +4E00 536 351 12 4 diff --git a/IMG/COMESOON.BDD b/IMG/COMESOON.BDD new file mode 100644 index 0000000..7c83e2d Binary files /dev/null and b/IMG/COMESOON.BDD differ diff --git a/IMG/CREDIT.IMG b/IMG/CREDIT.IMG new file mode 100644 index 0000000..51eaa84 Binary files /dev/null and b/IMG/CREDIT.IMG differ diff --git a/IMG/CROWD.IMG b/IMG/CROWD.IMG new file mode 100644 index 0000000..4b7ad92 Binary files /dev/null and b/IMG/CROWD.IMG differ diff --git a/IMG/CRUT2.IMG b/IMG/CRUT2.IMG new file mode 100644 index 0000000..83d7125 Binary files /dev/null and b/IMG/CRUT2.IMG differ diff --git a/IMG/CRUTMUGS.IMG b/IMG/CRUTMUGS.IMG new file mode 100644 index 0000000..7820c3d Binary files /dev/null and b/IMG/CRUTMUGS.IMG differ diff --git a/IMG/DCSLOGO.IMG b/IMG/DCSLOGO.IMG new file mode 100644 index 0000000..6cb3a31 Binary files /dev/null and b/IMG/DCSLOGO.IMG differ diff --git a/IMG/DDRPKIK.IMG b/IMG/DDRPKIK.IMG new file mode 100644 index 0000000..0431415 Binary files /dev/null and b/IMG/DDRPKIK.IMG differ diff --git a/IMG/DELETE.BAT b/IMG/DELETE.BAT new file mode 100644 index 0000000..0435f1c --- /dev/null +++ b/IMG/DELETE.BAT @@ -0,0 +1,23 @@ +del ATTRACT.IMG +del BLANK.IMG +del DCSLOGO.IMG +del DNKPIN.IMG +del NMATCH12.IMG +del NUFLOR.IMG +del PWRBARS.IMG +del REF_HIT.IMG +del REF_MSC.IMG +del REF_PNC.IMG +del REF_WLK.IMG +del SHIT.IMG +del SHIT2.IMG +del SHNGSUP.IMG +del SHNRUN.IMG +del SHN_JMS.IMG +del SIDEROPE.IMG +del SLATE.IMG +del TEMP.IMG +del WWFMUGS2.IMG +del XPLOSION.IMG + + \ No newline at end of file diff --git a/IMG/DIAGP.IMG b/IMG/DIAGP.IMG new file mode 100644 index 0000000..75452f4 Binary files /dev/null and b/IMG/DIAGP.IMG differ diff --git a/IMG/DIFFN.BAT b/IMG/DIFFN.BAT new file mode 100644 index 0000000..8f08d45 --- /dev/null +++ b/IMG/DIFFN.BAT @@ -0,0 +1,2 @@ +diff %1 new\%1 + \ No newline at end of file diff --git a/IMG/DIZZY.IMG b/IMG/DIZZY.IMG new file mode 100644 index 0000000..0b83bec Binary files /dev/null and b/IMG/DIZZY.IMG differ diff --git a/IMG/DNKALT2.IMG b/IMG/DNKALT2.IMG new file mode 100644 index 0000000..7f52c38 Binary files /dev/null and b/IMG/DNKALT2.IMG differ diff --git a/IMG/DNKBALL.IMG b/IMG/DNKBALL.IMG new file mode 100644 index 0000000..9f93021 Binary files /dev/null and b/IMG/DNKBALL.IMG differ diff --git a/IMG/DNKBKSL2.IMG b/IMG/DNKBKSL2.IMG new file mode 100644 index 0000000..bc6c665 Binary files /dev/null and b/IMG/DNKBKSL2.IMG differ diff --git a/IMG/DNKBUZZ.IMG b/IMG/DNKBUZZ.IMG new file mode 100644 index 0000000..c1dee2f Binary files /dev/null and b/IMG/DNKBUZZ.IMG differ diff --git a/IMG/DNKGRAP.IMG b/IMG/DNKGRAP.IMG new file mode 100644 index 0000000..108b814 Binary files /dev/null and b/IMG/DNKGRAP.IMG differ diff --git a/IMG/DNKHOLD.IMG b/IMG/DNKHOLD.IMG new file mode 100644 index 0000000..f957564 Binary files /dev/null and b/IMG/DNKHOLD.IMG differ diff --git a/IMG/DNKMJT.IMG b/IMG/DNKMJT.IMG new file mode 100644 index 0000000..709f76d Binary files /dev/null and b/IMG/DNKMJT.IMG differ diff --git a/IMG/DNKPIN.IMG b/IMG/DNKPIN.IMG new file mode 100644 index 0000000..97386a4 Binary files /dev/null and b/IMG/DNKPIN.IMG differ diff --git a/IMG/DNKROLL.IMG b/IMG/DNKROLL.IMG new file mode 100644 index 0000000..e50225a Binary files /dev/null and b/IMG/DNKROLL.IMG differ diff --git a/IMG/DNKSTAND.IMG b/IMG/DNKSTAND.IMG new file mode 100644 index 0000000..3407cc6 Binary files /dev/null and b/IMG/DNKSTAND.IMG differ diff --git a/IMG/DNK_FUN.IMG b/IMG/DNK_FUN.IMG new file mode 100644 index 0000000..03ad88b Binary files /dev/null and b/IMG/DNK_FUN.IMG differ diff --git a/IMG/DNK_HIT.IMG b/IMG/DNK_HIT.IMG new file mode 100644 index 0000000..9e5d69c Binary files /dev/null and b/IMG/DNK_HIT.IMG differ diff --git a/IMG/DNK_JAKE.IMG b/IMG/DNK_JAKE.IMG new file mode 100644 index 0000000..de2ba80 Binary files /dev/null and b/IMG/DNK_JAKE.IMG differ diff --git a/IMG/DNK_JMS.IMG b/IMG/DNK_JMS.IMG new file mode 100644 index 0000000..ed6c0d5 Binary files /dev/null and b/IMG/DNK_JMS.IMG differ diff --git a/IMG/DNK_KIK.IMG b/IMG/DNK_KIK.IMG new file mode 100644 index 0000000..8bf2ceb Binary files /dev/null and b/IMG/DNK_KIK.IMG differ diff --git a/IMG/DNK_MJL.IMG b/IMG/DNK_MJL.IMG new file mode 100644 index 0000000..b746529 Binary files /dev/null and b/IMG/DNK_MJL.IMG differ diff --git a/IMG/DNK_MJT.IMG b/IMG/DNK_MJT.IMG new file mode 100644 index 0000000..6b34d3d Binary files /dev/null and b/IMG/DNK_MJT.IMG differ diff --git a/IMG/DNK_MJT.~MG b/IMG/DNK_MJT.~MG new file mode 100644 index 0000000..5b0f75a Binary files /dev/null and b/IMG/DNK_MJT.~MG differ diff --git a/IMG/DNK_MSC.IMG b/IMG/DNK_MSC.IMG new file mode 100644 index 0000000..565c4c6 Binary files /dev/null and b/IMG/DNK_MSC.IMG differ diff --git a/IMG/DNK_NEW.IMG b/IMG/DNK_NEW.IMG new file mode 100644 index 0000000..6313daa Binary files /dev/null and b/IMG/DNK_NEW.IMG differ diff --git a/IMG/DNK_PNC.IMG b/IMG/DNK_PNC.IMG new file mode 100644 index 0000000..e79b388 Binary files /dev/null and b/IMG/DNK_PNC.IMG differ diff --git a/IMG/DNK_RJR.IMG b/IMG/DNK_RJR.IMG new file mode 100644 index 0000000..05f08d2 Binary files /dev/null and b/IMG/DNK_RJR.IMG differ diff --git a/IMG/DNK_SPC.IMG b/IMG/DNK_SPC.IMG new file mode 100644 index 0000000..029f9ad Binary files /dev/null and b/IMG/DNK_SPC.IMG differ diff --git a/IMG/DNK_WLK.IMG b/IMG/DNK_WLK.IMG new file mode 100644 index 0000000..135a64d Binary files /dev/null and b/IMG/DNK_WLK.IMG differ diff --git a/IMG/DOINK.BAT b/IMG/DOINK.BAT new file mode 100644 index 0000000..4f8dd95 --- /dev/null +++ b/IMG/DOINK.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld doink dnk_hit dnk_kik dnk_msc dnk_new dnk_pnc dnk_spc dnk_wlk dnk_mjt dnk_rjr dnk_jms dnk_fun dnk_jake adm_wlk2 +@copy doink.ld1 + doink.ld2 doink.lod +@move doink.h ..\doinkimg.h +@move doink.seq .. + \ No newline at end of file diff --git a/IMG/DOINK.LD1 b/IMG/DOINK.LD1 new file mode 100644 index 0000000..40d2e9f --- /dev/null +++ b/IMG/DOINK.LD1 @@ -0,0 +1,11 @@ +ASM> doinkimg.tbl +***> 3bbcdf0,1 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* DOINK ****************************************************************** +ZON> +MON> +BON> +POF> +; diff --git a/IMG/DOINK.LOD b/IMG/DOINK.LOD new file mode 100644 index 0000000..0784e19 --- /dev/null +++ b/IMG/DOINK.LOD @@ -0,0 +1,126 @@ +ASM> doinkimg.tbl +***> 3bbcdf0,1 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* DOINK ****************************************************************** +ZON> +MON> +BON> +POF> +; +dnk_hit.img +---> D4BK3A06,D4BK3A07,D2AH2A01,D2AH2A02,D2AH2A03,D2GD2A04,D2GD2A06 +---> D2GD2A07,D2GD2A09,D2GD2A10,D3AE3B01,D3AE3B02,D3AE3B03,D3AE3B04 +---> D3AE3B05,D3AE3B06,D3AE3B07,D3AE3B08,D3AH3B01,D3AH3B02,D3AH3B03 +---> D3AH3B05,D3AM3A01,D3AM3A02,D3AM3A03,D3AM3A04,D3AM3A05,D3AM3A06 +---> D3AM3A07,D3AM3A08,D3GU4A01,D3GU4A02,D3GU4A03,D3GU4A04,D3GU4A05 +---> D3GU4A06,D3GU4A07,D3GU4A08,D3GU4A09,D3RC3A01,D3RC3A02,D3RC3A03 +---> D3RC3A04,D3RC3A05,D3RC3A06,D3RC3A07,D3RC3A08,D3RC3A09,D3SA3A02 +---> D3SA3A03,D3SA3A04,D3SA3A05,D3SA3A07,D3SA3A08,D3SA3A09,D3UC3A01 +---> D3UC3A02,D3UC3A03,D3UC3A04,D3UC3A05,D3UC3A06,D3UC3A07,D3UC3A08 +---> D3UC3A09,D3UC3A10,D3UC3A11,D4BK3A01,D4BK3A02,D4BK3A03,D4LB4A02 +---> D4LB4A03,D4LB4A04,D4LB4A05,D4LB4B01,D4LB4B02,D4LB4B03 +dnk_kik.img +---> D2KM3B01,D2KM3B02,D2KM3B03,D2KM3B04,D2KM3B05,D2KM3B06,D2KM3B07 +---> D2KM3B08,D2KM3B09,D2KM3D01,D2NM3A04,D2NM3A05,D2NM3A06,D2NM3A07 +---> D3MP3A01,D3MP3A02,D3MP3A03,D3MP3A04,D3MP3A05,D3MP3A06,D3MP3A07 +---> D3MP3A08,D4KM3A02,D4KM3A03,D4KM3A04,D4KM3A05,D4KM3A06,D4KM3A07 +---> D4KM3A08,D4KM3A09,D4KM3A10,D4MP4D01,D4MP4D02,D4MP4D03,D4MP4D04 +---> D4MP4D06,D4MP4D07,D4NM3B03,D4NM3B04,D4NM3B05,D4NM3B06,D4NM3B07 +---> D3DC3C01,D3DC3C02,D3DC3C03,D3DC3C04,D3DC3C05,D3DC3C06,D3DC3C07 +---> D3DC3C08,D3DC3C09,D3DC3C10 +dnk_msc.img +---> D2CR1A01,D2CR1A02,D2CR1A03,D2CR1A08,D2CR1A09,D2CR1A10,D2CR1A11 +---> D2CT2A02,D2CT2A07,D2CT2A09,D2CT2A12,D2CT2B02,D2CT2B04,D2CT2B06 +---> D2CT2C01,D2CT2C03,D2CT2C05,D2CT2C07,D2CT2C09,D2CT2C11,D2CT2C13 +---> D2CT2C15,D2CT2C17,D2CT2C19,D2CT2C21,D3CR3D01,D3CR3D02,D3CR3D03 +---> D3CR3D04,D3CR3D05,D3CR3D06,D3CR3D07,D3CR3D08,D3CR3D09,D3CR3D10 +---> D3CR3D11,D3RL1B02,D3RL1B03,D3RL1B04,D3RL1B05,D3RL1B06,D3RL1B07 +---> D3RL1B08,D3RL1B09,D3RL1B10,D3RL1B11,D4FM4A05,D4FM4A06,D4FM4A07 +---> D4FM4A09,D4GF3A01,D4GF3A02,D4GF3A03,D4GF3A04,D4GF3A05,D4GF3A06 +---> D4GF3A07,D4GF3A08,D4GF3A09,D4JD4A01,D4JD4A02,D4JD4A04,D4JD4A06 +---> D4JD4A07,D4JD4A08,D4JD4A10,D4JD4A11,D4MF4A01,D4MF4A02,D4MF4A03 +---> D4MF4A04,D4MF4A05,D4MF4A06,D4MF4A07,D4MF4A08,D4MF4A09,D4SW4C01 +---> D4SW4C02,D4SW4C03,D4SW4C04,D4SW4C05,D4SW4C06,D5WN5B02,D5WN5B03 +---> D5WN5B04,D5WN5B05,D5WN5Z01,D5WN5Z02,D5WN5Z03 +dnk_new.img +---> D4BZ3A01,D4BZ3A02,D4BZ3A03,D4BZ3A04,D4BZ3A05,D4BZ3A06,D3BF3A01 +---> D3BF3A02,D3BF3A03,D3BF3A04,D3BF3A05,D3BF3A06,D3BF3A07,D3BF3A08 +---> D3HP3A01,D3HP3A02,D3HP3A03,D3HP3A04,D3HP3A05,D4KH3A03,D4SK4A01 +---> D4BZ4A01 +dnk_pnc.img +---> D2BC3A01,D2BC3A02,D2BC3A03,D2BC3A04,D2BC3A05,D2BC3A06,D2PJ2A03 +---> D2PJ2A04,D2PJ2A06,D2PJ2A08,D2PJ2A10,D2PJ2A11,D2PJ2A12,D2PU3A01 +---> D2PU3A02,D2PU3A03,D2PU3A04,D2PU3A05,D2PU3A06,D2PU3A07,D2PU3A08 +---> D4BC3A01,D4BC3A02,D4BC3A03,D4BC3A04,D4BC3A05,D4BC3A06,D4PJ4A02 +---> D4PJ4A03,D4PJ4A04,D4PJ4A06,D4PJ4A07,D4PJ4A10,D4PS3A01,D4PS3A02 +---> D4PS3A03,D4PS3A04,D4PS3A05,D4PS3A06,D4PS3A07,D4PU3C01,D4PU3C02 +---> D4PU3C03,D4PU3C04,D4PU3C05,D4PU3C06,D4PU3C07,D4PU3C08,D5GD3A05 +---> D5GD3A06,D5GD3A07,D5GD3A08,D5GD3A09,D5GD3A10,D4BS3A01,D4BS3A02 +---> D4BS3A03,D4BS3A04,D4BS3A05,D4BS3A06,D4BS3A08,D4BS3A09,D2BS3A01 +---> D2BS3A02,D2BS3A03,D2BS3A04,D2BS3A05,D2BS3A06,D2BS3A08,D2BS3A09 +dnk_spc.img +---> D2RG3B06,D2RG3B07,D2RG3B08,D2RG3B09,D2RG3B10,D2RG3B11,D4RG3A06 +---> D4RG3A07,D4RG3A09,D4RG3A10,D4RG3A11,D4RG3A12 +dnk_wlk.img +---> D2TW2B01,D2TW2B02,D2TW2B03,D2TW2B04,D4TW4B01,D4TW4B02,D4TW4B03 +---> D4TW4B04,D1TR5Z01,D1TR5Z02,D1TR5Z03,D1TR5Z04,D1TT5Z01,D1TT5Z02 +---> D1TT5Z03,D1TT5Z04,D2ST2B03,D2ST2B04,D2ST2B05,D2ST2B06,D2WL1A01 +---> D2WL1A02,D2WL1A03,D2WL1A04,D2WL1A05,D2WL1A06,D2WL1A07,D2WL1A08 +---> D2WL1A09,D2WL1A10,D2WL1A11,D2WL1A12,D2WL1A13,D2WL1A14,D2WL1A15 +---> D2WL1A16,D2WL1A17,D2WL1A18,D2WL2A01,D2WL2A02,D2WL2A03,D2WL2A04 +---> D2WL2A05,D2WL2A06,D2WL2A07,D2WL2A08,D2WL2A09,D2WL2A10,D2WL2A11 +---> D2WL2A12,D2WL2A13,D2WL2A14,D2WL2A15,D2WL2A16,D2WL2A17,D2WL4B01 +---> D2WL4B02,D2WL4B03,D2WL4B04,D2WL4B05,D2WL4B06,D2WL4B07,D2WL4B08 +---> D2WL4B09,D2WL4B10,D2WL4B11,D2WL4B12,D2WL4B13,D2WL4B14,D2WL4B15 +---> D2WL4B16,D2WL4B17,D2WL4B18,D3BO3B02,D3BO3B03,D3BO3B04,D3BO3B05 +---> D3BO3B06,D3BO3B07,D3BO3B08,D3BO3B09,D3BO3B10,D3RN3B01,D3RN3B02 +---> D3RN3B03,D3RN3B04,D3RN3B05,D3RN3B06,D3RN3B07,D3RN3B08,D3RN3B09 +---> D3RN3B10,D3RN3B11,D4ST4E03,D4ST4E04,D4ST4E05,D4ST4E06,D4TH4A01 +---> D4WL2A01,D4WL2A02,D4WL2A03,D4WL2A04,D4WL2A05,D4WL2A06,D4WL2A07 +---> D4WL2A08,D4WL2A09,D4WL2A10,D4WL2A11,D4WL2A12,D4WL2A13,D4WL2A14 +---> D4WL2A15,D4WL2A16,D4WL2A17,D4WL2A18,D4WL4A01,D4WL4A02,D4WL4A03 +---> D4WL4A04,D4WL4A05,D4WL4A06,D4WL4A07,D4WL4A08,D4WL4A09,D4WL4A10 +---> D4WL4A11,D4WL4A12,D4WL4A13,D4WL4A14,D4WL4A15,D4WL4A16,D4WL4A17 +---> D4WL4A18,D4WL5A01,D4WL5A02,D4WL5A03,D4WL5A04,D4WL5A05,D4WL5A06 +---> D4WL5A07,D4WL5A08,D4WL5A09,D4WL5A10,D4WL5A11,D4WL5A12,D4WL5A13 +---> D4WL5A14,D4WL5A15,D4WL5A16,D4WL5A17,D4WL5A18 +dnk_mjt.img +---> D3TP3A01,D3TP3A02,D3TP3A05,D3TP3A06,D3ZS3A01,D3ZS3A02,D3ZS3A03 +---> D3AB3A01,D3AB3A03,D3AB3A04,D4POGO02,D4POGO03,D4POGO04,D3BK3Z02 +---> D3BK3Z03,D3BK3Z06,D3BK3Z07,D3HT3Q01,D3HT3Q02,D3HT3Q03,D3HT3Q04 +---> D3HT3Q05,D3HT3Q06,D3HT3Q07,D3HT3Q08,D4SQ4A01,D4SQ4A02,D4SQ4A03 +---> D4CO4A01,D4CO4A02,D4CO4A03,D4CO4A04,D4CO4A05,D4CO4A06,D3GS3X01 +---> D3GS3X03,D3GS3X04,D3GS3X05,D3GS3X07,D3GS3X08,D3GS3X09,D3GS3X10 +---> D4HS3B01,D4HS3B02,D4HS3B03,D4HS3B05,D3HT3Z01,D3PP3A01,D3PP3A02 +---> D3PP3A03,D3PP3A05,D3PP3A06,D3PP3A07,D3PP3A08,D3PP3A09,D4YR3B01 +---> D4YR3B02,D4YR3B03,D4YR3B04,D4GH3A01,D4GH3A02,D4GH3A03,D4GH3A04 +---> D4GH3A05,D4GH3A07,D4GH3A08,D3AK3A02,D3AK3A03,D4PN5A01,D4PN5A02 +---> D4PN5A03,D4PN5A04,D4PN5A05,D4PN5A06,D5GD4A01,D5GD4A02,D3PP3Z01 +---> D3PP3Z02,D3PP3Z03,D3PP3Z04,D3PP3Z05,D3PP3Z06,D4HS3B06,D4HS3B07 +---> D4HS3B08,D3PD3Z01,D3PD3Z02,D3PD3Z03,D3PD3Z04,D3PD3Z05,D3PD3Z06 +---> D3PD3Z07,D3PD3Z08,D3PD3Z09 +dnk_rjr.img +---> D3DD3C01,D3DD3C02,D3DD3C03,D3DD3C04,D3DD3C05,D3SA3X02,D3TN3A02 +---> D3TN3A03,D3TN3A04,D3TN3A05,D3TN3A06,D3RR3Z01,D3RR3Z02,D3RR3Z03 +---> D3RR3Z04,D3RR3Z05,D3RR3Z06,D3RR3Z07 +dnk_jms.img +---> D3PM4C02,D3OS3A01,D3OS3A02,D3OS3A03,D3OS3A04,D3OS3A05,D3OS3A06 +---> D3FD3E02,D3FD3E03,D3FD3E04,D3FD3E05,D3FD3E06,D3FD3E07,D3FD3E08 +---> D3FD3E09 +dnk_fun.img +---> D4GP3C02,D4GP3C03,D4GP3C04,D4GP3C05,D4GP3C06,D4GP3C08,D4GP3C09 +---> D4GP3C07,D3ES3A01,D3ES3A02,D3ES3A03,D3ES3A04,D3ES3A05,D3ES3A06 +---> D4HM4A01,D4HM4A02,D4HM4A03,D4HM4A04,D4HM4A05,D4HM4A06,D4HM4A07 +---> D4HM4A08,D4HM4A09,D4HM4A10,D2KB3A02,D2KB3A03,D2KB3A04,D2KB3A05 +---> D2KB3A06,D2KB3A07,D2KB3A08,D2KB3A09,D4KB3A02,D4KB3A03,D4KB3A04 +---> D4KB3A05,D4KB3A06,D4KB3A07,D4KB3A08,D4KB3A09,D3SK3X01,D3SK3X02 +---> D3SK3X03,D3SK3X04,D3SK3X05,D3SK3X06,D3SK3X07,D3SK3X08 +dnk_jake.img +---> D4WA4A01,D4WA4A02,D4WA4A03,D4WA4A04,D4WA4A05,D4WA4A06,D4WA4A07 +---> D4WA4A08,D4WA4A10,D3CS3Z02,D3CS3Z03,D3CS3Z04,D3CS3Z05,D3CS3Z06 +---> D3CS3Z07,D3CS3Z08,D3CS3Z09 +adm_wlk2.img +---> A4ST4J05,A4ST4J06,A4ST4J07,A4ST4J08 + \ No newline at end of file diff --git a/IMG/DTORNSLP.IMG b/IMG/DTORNSLP.IMG new file mode 100644 index 0000000..14cd33e Binary files /dev/null and b/IMG/DTORNSLP.IMG differ diff --git a/IMG/ECHAIR.IMG b/IMG/ECHAIR.IMG new file mode 100644 index 0000000..bc6b467 Binary files /dev/null and b/IMG/ECHAIR.IMG differ diff --git a/IMG/EMBLEM3.IMG b/IMG/EMBLEM3.IMG new file mode 100644 index 0000000..3049ba1 Binary files /dev/null and b/IMG/EMBLEM3.IMG differ diff --git a/IMG/EXP.IMG b/IMG/EXP.IMG new file mode 100644 index 0000000..e580b56 Binary files /dev/null and b/IMG/EXP.IMG differ diff --git a/IMG/EXPLODE.IMG b/IMG/EXPLODE.IMG new file mode 100644 index 0000000..a59cc6c Binary files /dev/null and b/IMG/EXPLODE.IMG differ diff --git a/IMG/EXTRAMOV.IMG b/IMG/EXTRAMOV.IMG new file mode 100644 index 0000000..5542f4a Binary files /dev/null and b/IMG/EXTRAMOV.IMG differ diff --git a/IMG/EYE.IMG b/IMG/EYE.IMG new file mode 100644 index 0000000..0f0fbd5 Binary files /dev/null and b/IMG/EYE.IMG differ diff --git a/IMG/EYEBIG.IMG b/IMG/EYEBIG.IMG new file mode 100644 index 0000000..cb70b9a Binary files /dev/null and b/IMG/EYEBIG.IMG differ diff --git a/IMG/FIREBALL.IMG b/IMG/FIREBALL.IMG new file mode 100644 index 0000000..3c95305 Binary files /dev/null and b/IMG/FIREBALL.IMG differ diff --git a/IMG/FIREWRK4.IMG b/IMG/FIREWRK4.IMG new file mode 100644 index 0000000..4a80ca6 Binary files /dev/null and b/IMG/FIREWRK4.IMG differ diff --git a/IMG/FLASH.IMG b/IMG/FLASH.IMG new file mode 100644 index 0000000..4101843 Binary files /dev/null and b/IMG/FLASH.IMG differ diff --git a/IMG/FNT9.IMG b/IMG/FNT9.IMG new file mode 100644 index 0000000..b39ff2e Binary files /dev/null and b/IMG/FNT9.IMG differ diff --git a/IMG/FONTS.LOD b/IMG/FONTS.LOD new file mode 100644 index 0000000..e69de29 diff --git a/IMG/FOO.IMG b/IMG/FOO.IMG new file mode 100644 index 0000000..640c220 Binary files /dev/null and b/IMG/FOO.IMG differ diff --git a/IMG/FRAME.LD1 b/IMG/FRAME.LD1 new file mode 100644 index 0000000..15ea38c --- /dev/null +++ b/IMG/FRAME.LD1 @@ -0,0 +1,7 @@ +ASM> frame.tbl +GLO> frame.glo +***> 4d44dc0,0 +FRM> shnvid_f +FRM> v1c_f +FRM> other_f +FRM> vinsml_f diff --git a/IMG/FRAME.LOD b/IMG/FRAME.LOD new file mode 100644 index 0000000..64c435a --- /dev/null +++ b/IMG/FRAME.LOD @@ -0,0 +1,6 @@ +ASM> frame.tbl +GLO> frame.glo +***> ffdf0000 +FRM> shnvid_f +FRM> vinsml_f + \ No newline at end of file diff --git a/IMG/GAMEWIN2.BDB b/IMG/GAMEWIN2.BDB new file mode 100644 index 0000000..b27b9ce --- /dev/null +++ b/IMG/GAMEWIN2.BDB @@ -0,0 +1,162 @@ +gamewin2 2000 1000 255 2 17 159 +mock 550 936 28 100 +pgmock 0 410 0 260 +3D00 0 189 0 16 +3C00 0 133 3 5 +3D00 0 115 0 16 +3300 0 41 0 16 +500 0 0 6 5 +4000 9 8 9 6 +4600 11 39 C 3 +4600 11 113 C 3 +4000 11 60 F 8 +4000 11 134 F 8 +4000 11 207 F 8 +3F00 12 115 0 16 +4600 12 187 C 3 +3E00 13 189 0 16 +4000 14 27 12 0 +4000 15 41 0 16 +4600 26 38 15 3 +4000 26 112 18 3 +3F00 33 115 0 16 +3F00 33 41 0 16 +3F00 33 189 0 16 +4000 38 112 1B 3 +4600 39 38 15 3 +4000 58 60 1E 9 +4000 58 134 1E 9 +4000 58 207 21 4 +4000 67 36 24 7 +4000 67 110 24 7 +4000 67 184 24 7 +4000 88 36 27 7 +4000 88 110 24 7 +4000 106 134 2A 4 +4000 106 207 21 4 +4000 106 134 2D 10 +4000 107 60 2D 10 +4000 109 36 30 7 +4000 109 110 24 7 +4000 125 283 33 2 +4000 130 36 36 7 +4000 130 110 24 7 +3F00 145 8 9 6 +4000 151 36 39 7 +4000 155 207 3C 4 +4000 155 134 21 4 +4000 155 134 21 4 +4000 156 60 3F 11 +4000 172 36 39 7 +4000 193 36 39 7 +4000 204 133 42 5 +3E00 204 0 45 5 +4000 205 60 48 12 +4000 205 207 4B 4 +4000 205 134 21 4 +4000 205 134 21 4 +4000 214 36 39 7 +4000 230 27 4E 0 +4000 235 36 39 7 +4000 253 60 51 13 +4000 253 207 54 4 +4000 253 134 21 4 +4000 253 134 21 4 +4000 299 60 57 14 +4000 299 207 5A 4 +4000 299 134 21 4 +4000 299 60 21 4 +4000 299 134 21 4 +4000 345 207 21 4 +4000 347 60 5D 15 +4000 347 60 60 4 +4000 347 134 21 4 +4000 347 134 21 4 +4000 499 223 63 3 +4000 499 139 66 3 +4000 550 40 0 16 +4000 559 108 9 6 +4000 561 307 F 8 +4000 561 234 F 8 +4000 561 160 F 8 +4600 561 213 C 3 +4600 561 139 C 3 +4600 561 36 C 3 +4000 561 57 F 8 +4600 562 287 C 3 +3F00 562 215 0 16 +3E00 563 289 0 16 +4000 565 141 0 16 +4000 565 40 0 16 +4000 576 212 18 3 +4600 576 138 15 3 +4600 576 34 15 3 +3F00 583 289 0 16 +3F00 583 141 0 16 +3F00 583 215 0 16 +4100 583 40 0 16 +4000 588 212 1B 3 +4600 589 138 15 3 +4600 589 34 15 3 +4000 608 307 21 4 +4000 608 234 1E 9 +4000 608 160 1E 9 +4000 608 57 1E 9 +4000 617 284 24 7 +4000 617 210 24 7 +4000 617 136 24 7 +4000 617 32 24 1 +4000 638 210 24 7 +4000 638 136 27 7 +4000 638 32 27 1 +4000 656 234 2D 10 +4000 656 307 21 4 +4000 656 234 2A 4 +4000 657 160 2D 10 +4000 657 57 2D 10 +4000 659 210 24 7 +4000 659 136 30 7 +4000 659 32 30 1 +4000 680 210 24 7 +4000 680 136 36 7 +4000 680 32 36 1 +3F00 695 108 9 6 +4000 701 136 39 7 +4000 701 32 39 1 +4000 705 234 21 4 +4000 705 234 21 4 +4000 705 307 3C 4 +4000 705 234 3F 11 +4000 706 160 3F 11 +4000 706 57 3F 11 +4000 722 136 39 7 +4000 743 136 39 7 +4000 754 233 42 5 +4000 755 234 21 4 +4000 755 234 21 4 +4000 755 307 4B 4 +4000 755 234 48 12 +4000 755 160 48 12 +4000 755 57 48 12 +4000 764 136 39 7 +4000 785 136 39 7 +4000 803 234 21 4 +4000 803 234 21 4 +4000 803 307 54 4 +4000 803 234 51 13 +4000 803 160 51 13 +4000 803 57 51 13 +4000 849 234 21 4 +4000 849 160 21 4 +4000 849 234 21 4 +4000 849 307 5A 4 +4000 849 234 57 14 +4000 849 160 57 14 +4000 849 57 57 14 +4000 895 307 21 4 +4000 897 234 21 4 +4000 897 234 21 4 +4000 897 160 60 4 +4000 897 234 5D 15 +4000 897 160 5D 15 +4000 898 57 5D 15 diff --git a/IMG/GAMEWIN2.BDD b/IMG/GAMEWIN2.BDD new file mode 100644 index 0000000..759d58e Binary files /dev/null and b/IMG/GAMEWIN2.BDD differ diff --git a/IMG/GAMEWIN2.IMG b/IMG/GAMEWIN2.IMG new file mode 100644 index 0000000..025e66e Binary files /dev/null and b/IMG/GAMEWIN2.IMG differ diff --git a/IMG/GAMEWIN3.BDB b/IMG/GAMEWIN3.BDB new file mode 100644 index 0000000..d7e34c6 --- /dev/null +++ b/IMG/GAMEWIN3.BDB @@ -0,0 +1,69 @@ +gamewin3 2000 1000 255 5 25 63 +mock 550 936 28 100 +pgmock 545 812 133 161 +lineb 499 987 132 197 +line 616 940 166 195 +spacy 500 789 161 198 +500 550 100 63 5 +500 550 233 66 5 +A00 550 141 69 16 +A00 550 452 69 16 +A00 550 167 69 16 +4000 559 108 9 6 +4600 561 139 C 3 +4600 562 165 C 3 +4000 563 127 12 0 +3F00 565 141 0 16 +4000 566 167 0 16 +4600 576 138 15 3 +4600 577 164 15 3 +4100 582 141 0 16 +3F00 583 167 0 16 +4600 588 138 15 3 +4600 589 164 15 3 +4000 621 135 24 7 +4000 621 162 24 7 +4000 622 190 24 7 +4000 622 218 24 7 +4000 622 246 24 7 +4000 622 274 24 7 +4000 622 327 24 7 +4000 622 301 24 7 +4000 642 135 24 7 +4000 642 162 24 7 +4000 643 190 24 7 +4000 643 218 24 7 +4000 643 246 24 7 +4000 643 274 24 7 +4000 643 327 24 7 +4000 643 301 24 7 +4000 663 135 24 7 +4000 663 162 24 7 +4000 664 190 24 7 +4000 664 218 24 7 +4000 664 246 24 7 +4000 664 274 24 7 +4000 664 327 24 7 +4000 664 301 24 7 +3F00 695 108 9 6 +4000 696 136 6C 3 +4000 702 164 6C 3 +4000 711 136 6C 3 +4000 717 164 6C 3 +4000 726 151 6F 3 +4000 732 136 6C 3 +4000 739 168 72 24 +500 754 233 42 5 +500 754 100 45 5 +4000 754 141 75 24 +4000 794 164 78 23 +4000 796 301 7B 23 +4000 799 191 7E 23 +4000 804 328 81 23 +4000 809 127 4E 0 +4000 810 274 84 23 +4000 811 246 87 23 +4000 814 136 8A 23 +4000 828 219 8D 23 +4000 1041 196 90 19 +4000 1045 214 93 3 diff --git a/IMG/GAMEWIN3.BDD b/IMG/GAMEWIN3.BDD new file mode 100644 index 0000000..27f9676 --- /dev/null +++ b/IMG/GAMEWIN3.BDD @@ -0,0 +1,1540 @@ +26 +63 204 133 1 +         + +  +    +   + + + +  + + + + + + + + + + + + + +  + + + + +  + + + + + + + + + + + + + + + + + + +  +  +        + + + + + + + + + +  +   + +    + + + + + + +  + +  + + + + + + + + +  + + + + + + + + +  +  +      + + + + + + + + + +  +    + + + + + + + + + + +   +  +  +  + + + + +      +  +    + + + + + + + + +    + + + + +  + + + + + +  + + +  + + +  + +  + +  +   + + +     + + + +  + + + + + + + + + + + +  + +  + + +  +   + + + + + + + + + + +      +  + + + + +    +    +  +   + + + + + + +    + + +   + + +     + + + +  +  + + + + + + +      +   + +    + + + +   +    + + + + +   +    + + + + + + + +  + +  +  +  + + + + +        + +       +      +   +   +  + +  + +   +  + + + +       + +   +      + +  + + +     +   +  + +  +  + +    + +  +  +         + + + +     +  +  + +   + +   + +   + + + +   +  + + + + + + + + + +    +     +    + + + +       + + +        + + + +  + + +   +  +   +  +  +         +       + + +     + + + + + + + +    + + +  + + + +  + + + +      + + +    + +     + + + +             + + + + + +  + +  + +    + + + + + +    + + +    +   +  +  +    + + + +      + + +  + + +     + + + + + +      + + +   +  +   + +  +    +      +       +      +      + + +     + +  +   +  +  + + +  +   + + + + + + +     +   +  +   + +  +       +     +  + +      + + +  +    + +  + +     +   + + + +   + + + + + +             + + +  +    +  + +    + + + +    +  +    + + + +       + +  +  + + + + + +   +   + + + +   + +      + +     + + + +    +  + +   + + +    + + + + + +    +           + +     +   +  + +  + +   + +  +    +     +    + +    + +    +       +    +          + + +  +   +        +  + + + + +   + + +  + + + +   +   +         + + +           +   + +   +      +          +           + +  +     + +        +   + +                     +   + +        + +      + +     +   + + +     + + +     +      +    +  + +                +  +    +     +      +            +     + +                +   +   + +   +          +      + + +     +   + +      +                +        +     + +       +             +    +     +  +   +            +       +      +                       +   +                         +  + +                            +  +                  +       +                  +        +   +      +                 +           +           +                       +  +    +                 +                + + +         +       +         +                 +  +                          +      +   + +                +   +  + +  +           + +                    + +   +           +                    +      +              +            + +      +           +         +         +                   +          +    +     +           +  +        +  +                + + + + + +                +             +                                      +                             + +        + +                         + +     +                     +   + + + +  + +                              +     + +                      +                    +         + +                    + +     +     +  + + + +     +                                    +                                         +                    +           +                          + +    +                                            + +  +           +   +                        +  +  +               +         +                     +    +                         +    +               +     +                           +                                                                                                                                                 + +                 +          +                  +  + +                  +                                                                                                                                                              +          +        + +          +                                   +                                                                                                                                                                                    + +                              +                                                                 +                              +                                                                                                                                                                      +                                          +                                                                                                                                                                                                                                                                                           +                                                                                                                                                                                                           + +                                    +                                                                           +                  + +                                             66 204 119 1 +                                            +    +                      +      +                                                                                         +                                 +                      +       +               + +    +                             +         +                                     +              +                                 +  +                         + + +      + +                 +                         + +                                                               +                    +                                          +                      + +                  +                                                                                            +         +             +      +        +     + +                                              + +  +                                                                                                                                        + +  +            +                                                                                                               +                                                                                                                                                                                                           +      +        +                                        +                                                                               +                                                                                        +                                                    +                                                                            +                                                               +                                               + 69 32 11 1 + + + + + + + + + + + + +  9 252 19 1 + +       + + + + + +       C 16 14 0 +              12 252 3 0 +0 32 11 1 + + + + + + + + + + + + +  15 12 16 0 +                     24 24 22 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + +                   6C 16 20 0 +                   6F 8 5 0 + 72 40 12 0 +42 196 119 1 +                                                                                             +                         +                                                                                                                                                                               +                               +                                +         +                                                                                                                   +                   +                         +                                             +      +                                           +                                                                                   +  +          +                                     +                                              +                               + +                                                      +        +                       +                    +  +            +               +    + +                                +                     + +      45 196 133 1 +     + + + + + + + + + + + + + + +   +  + + + + + + + +                + + + + + + + + +  + + + + +  + + + +  + + + + + + + + +            + + +  +  + + + + + + + + + +   + + + + +  + +  + + + + + + +             + + + + +   + + + + +   + + + +  +  +            + +  + +  + + + + + +  +     + + + + + + +             + + + + + +  + + +  +  + +  + +  + + +  + + +      +   +    + + + + + +  + +      + +          + +  +  + + +  + + + + +   + + +      +     +              +  + + + + + +  +    + +  + +            + + + + + + +  + + + + + + + +  + +  +  + +  +               + + + + + + + + + + + +  +   + +           + + + + + + + + + + + + + + + + + + + +   + + + + +          + + + + + + + + + + + + + + + + + + + + +  + + +                       + + + + +   + + + + + + + + + + + + + + + + +     + +     +    +         + + + + + + + + + + + + +   + + + + + + + + + + + + + + +  + +    +  + + + + +  + +         + + + + + + +  +  + + + + + + + + + + +     +               +  + + + + + + +  +  +               + +      +  + + + + + + +   + + +                     +     + + + + + + + + + + + +                           + + + + + + + + + +   +                  + + + + +  +   +          +     + + + + + +    +                             + +  + +   + + + + +              +     +  + + + +                +                                      +                   +  +                  +     + +   +  +                     + +                               +                    +       + +                     +        + +                              + + + +                        +   + +    +                       +     +    +        +                  +                     +   +          +                 + +                                +                                +         +             +                  +   +        + +                                            +  +      + +                   +                           + + +                        +    +  + +                                   +                         +  + + + +                             + +                               +  + +                      +  +                          +                     +                                       +                              + +   + +                           +                           + +     + +                      +                                                                                      + +                           + +       + +                     + + +  +                                                                                                       + +   +                                                      +     +                  + +                                                                         +                                              +             +  +                   +     +                 +    + +     +            +         +                          +                                                                  + +                             +                 +  +                                                                                              +                                                                                                 +                                                +                                                                            + + +                                                                                                                                                                                                       +                                                                               +                                                                         +                              +                                           +                                 +                                                +                                                                                                                        75 32 12 0 +78 140 20 0 +                                                                                                                                                                                     7B 120 20 0 +                                                                                                                                                                       7E 132 20 0 +                                                                                                                                                                                                  81 104 20 0 +                                                                                                                                             4E 252 3 0 +84 96 20 0 +                                                                                                                                  87 96 20 0 +                                                                                                                        8A 88 20 0 +                                                                                                                                     8D 60 20 0 +                                                                                                      90 16 20 0 +                            93 16 20 0 +                          SHADOW_P 2 +OSGEMD 43 ++!%[g;g:c_ZVRRNyJxFWF7B>:51-)o%N!M!,wc a@]TQHD`@ 840( FnORANGPAL 43 ++!0~~~~~`~ ~~}}}}`}aa`]@Y UQQLc a@]TPHD`@ 840( GnWGFS_W_P 10 +1{s{oZk9g^ZCRUTPLTGP 23 +Zk9g^ZVRsNRJ1FB=951k-J))%!CSELBK_P 22 + dC!"o% ,M!N%-)1-16DPLT_R_P 31 +Z~~R~~}}k})yyttlh`\cXcPBLBDB@!d~aA zvvvMv~~e5{zz'A4{U5(E(=zA'=I5 ZOn( ebYM9=viV]n&ENfHMfn><{.^ fpf5wpjAw-(-j=(1Ao-^:gcV^sRRN1JBQR=R^NuNAFCRUTBM_P 253 +1" ^F-%oVl^bj&-jk6oB+VLZ$=EbfjlfmbgA &1) RUnOV6s^Yo i5Ezn$~n.V,b-5xUG=Iz~.ZO^W~nr-b~z)YFI]LzzI~En8o,FMqaeL~(,aM~IMfYsQ$i vGE5Q.bVzH%QfaFUi,,ziM~H=Mqb=n^ok-a$(,b&I9UYo~ $OnM(~U(1qfI5f)%z~yv oQ=WrCzansZQNJ9QACRUTYK_P 235 +1b AaAb0 b!J),k=$,0448iEAZJ$))I1zo{3F5J5A(09,cc=9kRN@E5(Z^Z(&M%I09g$b00&QGQgYUi= gQgUhYaieMk1b (EhUYY]a]ai.r.jj,4GMe fmeie rNv/Vf! z,r nmn~ozhMg]-vNzqm~@ea vo~ v-rFQ@ nGU ,8FY@D rJ94$ -k94 hartimg.tbl +***> 2000000,1 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* BRET HART ************************************************************** +ZON> +MON> +BON> +; diff --git a/IMG/HART.LOD b/IMG/HART.LOD new file mode 100644 index 0000000..9649695 --- /dev/null +++ b/IMG/HART.LOD @@ -0,0 +1,81 @@ +ASM> hartimg.tbl +***> 2000000,1 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* BRET HART ************************************************************** +ZON> +MON> +BON> +; +hrt_hit.img +---> H2AH3A01,H2AH3A02,H2AH3A03,H2AH3A04,H2AH3A05,H2AH3A06,H4AH3A01 +---> H4AH3A02,H4AH3A03,H4AH3A04,H4AH3A05,H4AH3A06,H2AE3A01,H2AE3A02 +---> H2AE3A03,H2AE3A04,H2AE3A05,H2AE3A06,H2AE3A07,H2AE3A08,H4AE3A01 +---> H4AE3A02,H4AE3A03,H4AE3A04,H4AE3A05,H4AE3A06,H4AE3A07,H4AE3A08 +---> H2AM3A01,H2AM3A02,H2AM3A03,H2AM3A04,H2AM3A05,H2AM3A06,H2AM3A07 +---> H2AM3A08,H4AM3A01,H4AM3A02,H4AM3A03,H4AM3A04,H4AM3A05,H4AM3A06 +---> H4AM3A07,H4AM3A08,H2BK3A01,H2BK3A02,H2BK3A03,H2BK3A04,H4BK3A01 +---> H4BK3A02,H4BK3A03,H4BK3A04,H2CP3A01,H2CP3A02,H2CP3A03,H2CP3A04 +---> H2CP3A05,H2CP3A06,H2CP3A07,H2CP3A08,H4LB3A01,H4LB3A03,H4LB3A04 +---> H4LB3A05,H4LB3A06,H4LB3A09,H4LB3A10,H3GU2A01,H3GU2A02,H3GU2A03 +---> H3GU2A04,H3GU2A05,H3GU2A06,H3GU2A07,H3GU2A08,H3GU2A09,H3GU2A10 +---> H3GU4A01,H3GU4A02,H3GU4A03,H3GU4A04,H3GU4A05,H3GU4A06,H3GU4A07 +---> H3GU4A08,H3GU4A09,H3GU4A10 +hrt_kik.img +---> H2KM3A01,H2KM3A02,H2KM3A03,H2KM3A04,H2KM3A05,H2KM3A06,H2KM3A07 +---> H2KM3A08,H2KM3A09,H2KM3A10,H2KM3A11,H4KM3B01,H4KM3B02,H4KM3B03 +---> H4KM3B04,H4KM3B05,H4KM3B06,H4KM3B07,H4KM3B08,H4KM3B09,H4KM3B10 +---> H4KM3B11,H2NM3A02,H2NM3A03,H2NM3A04,H2NM3A05,H2NM3A06,H4NM3A02 +---> H4NM3A03,H4NM3A04,H4NM3A05,H4NM3A06,H4NM3A07,H2MP2B01,H2MP2B02 +---> H2MP2B03,H2MP2B04,H2MP2B05,H2MP2B06,H2MP2B07,H2MP2B08,H4MP4A01 +---> H4MP4A02,H4MP4A03,H4MP4A04,H4MP4A05,H4MP4A06,H4MP4A07,H4MP4A08 +---> H3DC3A01,H3DC3A02,H3DC3A03,H3DC3A04,H3DC3A05,H3DC3A06,H3DC3A08 +---> H3DC3A09,H3DC3A10 +hrt_msc.img +---> H4TI4B01,H4TI4B02,H4TI4B03,H4TI4B04,H4TI4B05,H4TI4B06,H4TI4B07 +---> H4TI4B08,H3GF7B02,H3GF7B03,H3GF7B04,H3GF7B05,H3GF7B06,H3GF7B07 +---> H3GF7B08,H3GF7B09,H3RL1A01,H3RL1A02,H3RL1A03,H3RL1A04,H3RL1A05 +---> H3RL1A06,H3RL1A07,H3RL1A08,H3RL1A09,H3RL1A10,H3RL1A11,H3RL1A12 +---> H3RL1A13,H4MF4B01,H4MF4B02,H4MF4B03,H4MF4B04,H4MF4B05,H4MF4B06 +---> H4MF4B07,H4MF4B08,H4MF4B09,H3FR3A01,H3FR3A02,H3FR3A03,H3FR3A04 +---> H3FR3A05,H3FR3A06 +hrt_pnc.img +---> H2PL3B01,H2PL3B02,H2PL3B03,H2PL3B04,H2PL3B05,H2PL3B06,H2PL3B07 +---> H2PL3B08,H4PL3X01,H4PL3X02,H4PL3X03,H4PL3X04,H4PL3X05,H4PL3X06 +---> H4PL3X07,H4PL3X08,H2BC3A01,H2BC3A02,H2BC3A03,H2BC3A04,H2BC3A05 +---> H2BC3A06,H2BC3A07,H2BC3A08,H4BC3A01,H4BC3A02,H4BC3A03,H4BC3A04 +---> H4BC3A05,H4BC3A06,H4BC3A07,H4BC3A08,H2PS3A01,H2PS3A02,H2PS3A03 +---> H2PS3A04,H2PS3A05,H2PS3A06,H2PS3A07,H2PS3A08,H4PS3A01,H4PS3A02 +---> H4PS3A03,H4PS3A04,H4PS3A05,H4PS3A06,H4PS3A07,H4PS3A08 +hrt_wlk.img +---> H2TW2A01,H4TW4A01,H2ST2A01,H2ST2A02,H2ST2A03,H2ST2A04,H2ST2A05 +---> H2ST2A06,H2ST2A07,H2ST2A08,H4ST4A01,H4ST4A02,H4ST4A03,H4ST4A04 +---> H4ST4A05,H4ST4A06,H4ST4A07,H4ST4A08,H1TL5A02,H1TL5A03,H1TL5A04 +---> H1TL5A05,H1TT5A02,H1TT5A03,H1TT5A04,H1TT5A05,H2WL1A01,H2WL1A02 +---> H2WL1A03,H2WL1A04,H2WL1A05,H2WL1A06,H2WL1A07,H2WL1A08,H2WL1A09 +---> H2WL1A10,H2WL1A11,H2WL1A12,H2WL1A13,H2WL1A14,H2WL1A15,H2WL1A16 +---> H2WL2A01,H2WL2A02,H2WL2A03,H2WL2A04,H2WL2A05,H2WL2A06,H2WL2A07 +---> H2WL2A08,H2WL2A09,H2WL2A10,H2WL2A11,H2WL2A12,H2WL2A13,H2WL2A14 +---> H2WL2A15,H2WL2A16,H2WL8A01,H2WL8A02,H2WL8A03,H2WL8A04,H2WL8A05 +---> H2WL8A06,H2WL8A07,H2WL8A08,H2WL8A09,H2WL8A10,H2WL8A11,H2WL8A12 +---> H2WL8A13,H2WL8A14,H2WL8A15,H2WL8A16,H4WL2A01,H4WL2A02,H4WL2A03 +---> H4WL2A04,H4WL2A05,H4WL2A06,H4WL2A07,H4WL2A08,H4WL2A09,H4WL2A10 +---> H4WL2A11,H4WL2A12,H4WL2A13,H4WL2A14,H4WL2A15,H4WL4A01,H4WL4A02 +---> H4WL4A03,H4WL4A04,H4WL4A05,H4WL4A06,H4WL4A07,H4WL4A08,H4WL4A09 +---> H4WL4A10,H4WL4A11,H4WL4A12,H4WL4A13,H4WL4A14,H4WL4A15,H4WL4A16 +---> H4WL5A01,H4WL5A02,H4WL5A03,H4WL5A04,H4WL5A05,H4WL5A06,H4WL5A07 +---> H4WL5A08,H4WL5A09,H4WL5A10,H4WL5A11,H4WL5A12,H4WL5A13,H4WL5A14 +---> H4WL5A15,H4WL5A16,H3RN3A01,H3RN3A02,H3RN3A03,H3RN3A04,H3RN3A05 +---> H3RN3A06,H3RN3A07,H3RN3A08,H3RN3A09,H3RN3A10,H3RN3A11,H3RN3A12 +---> H3BO3A01,H3BO3A02,H3BO3A03,H3BO3A04,H3BO3A05,H3BO3A06,H3BO3A07 +---> H3BO3A08,H3BO3A09 +hrt_jms.img +---> H3UC3X01,H3UC3X02,H3UC3X03,H3UC3X04,H3UC3X05,H3UC3X06,H3UC3X07 +---> H3UC3X08,H3UC3X09,H3UC3X10,H3UC3Z01,H3UC3Z02,H3UC3Z03,H3UC3Z04 +---> H3UC3Z05,H3MS3X01,H3MS3X02,H3MS3X03,H3MS3X04,H3MS3X05,H3HT3X01 +---> H3HT3X02,H3HT3X03,H3HT3X04,H3HT3X05,H3HT3X06,H3HT3X07,H3HT3X08 +---> H3HT3X09,H3HT3X10,H3HT3X11,H3HT3X12,H2PF2B01,H2PF2B02,H2PF2B03 +---> H2PF2B04,H2PF2B05,H2PF2B06,H2PF2B07,H2PF2B08,H4PF4B01,H4PF4B02 +---> H4PF4B03,H4PF4B04,H4PF4B05,H4PF4B06,H4PF4B07,H4PF4B08 + \ No newline at end of file diff --git a/IMG/HITSTUFF.IMG b/IMG/HITSTUFF.IMG new file mode 100644 index 0000000..678fc93 Binary files /dev/null and b/IMG/HITSTUFF.IMG differ diff --git a/IMG/HMIDPNC.IMG b/IMG/HMIDPNC.IMG new file mode 100644 index 0000000..68659f2 Binary files /dev/null and b/IMG/HMIDPNC.IMG differ diff --git a/IMG/HNKIKMID.IMG b/IMG/HNKIKMID.IMG new file mode 100644 index 0000000..5a1286b Binary files /dev/null and b/IMG/HNKIKMID.IMG differ diff --git a/IMG/HRTJAB.IMG b/IMG/HRTJAB.IMG new file mode 100644 index 0000000..351933d Binary files /dev/null and b/IMG/HRTJAB.IMG differ diff --git a/IMG/HRTSTAND.IMG b/IMG/HRTSTAND.IMG new file mode 100644 index 0000000..001f9fe Binary files /dev/null and b/IMG/HRTSTAND.IMG differ diff --git a/IMG/HRT_HIT.IMG b/IMG/HRT_HIT.IMG new file mode 100644 index 0000000..33e0fac Binary files /dev/null and b/IMG/HRT_HIT.IMG differ diff --git a/IMG/HRT_JAKE.IMG b/IMG/HRT_JAKE.IMG new file mode 100644 index 0000000..71f958e Binary files /dev/null and b/IMG/HRT_JAKE.IMG differ diff --git a/IMG/HRT_JMS.IMG b/IMG/HRT_JMS.IMG new file mode 100644 index 0000000..003b95e Binary files /dev/null and b/IMG/HRT_JMS.IMG differ diff --git a/IMG/HRT_KIK.IMG b/IMG/HRT_KIK.IMG new file mode 100644 index 0000000..98713ba Binary files /dev/null and b/IMG/HRT_KIK.IMG differ diff --git a/IMG/HRT_MJT.IMG b/IMG/HRT_MJT.IMG new file mode 100644 index 0000000..047877e Binary files /dev/null and b/IMG/HRT_MJT.IMG differ diff --git a/IMG/HRT_MSC.IMG b/IMG/HRT_MSC.IMG new file mode 100644 index 0000000..c08bb57 Binary files /dev/null and b/IMG/HRT_MSC.IMG differ diff --git a/IMG/HRT_PNC.IMG b/IMG/HRT_PNC.IMG new file mode 100644 index 0000000..0fc2bff Binary files /dev/null and b/IMG/HRT_PNC.IMG differ diff --git a/IMG/HRT_RJR.IMG b/IMG/HRT_RJR.IMG new file mode 100644 index 0000000..12879cb Binary files /dev/null and b/IMG/HRT_RJR.IMG differ diff --git a/IMG/HRT_WLK.IMG b/IMG/HRT_WLK.IMG new file mode 100644 index 0000000..8395fe1 Binary files /dev/null and b/IMG/HRT_WLK.IMG differ diff --git a/IMG/INFOWIN.IMG b/IMG/INFOWIN.IMG new file mode 100644 index 0000000..6524d65 Binary files /dev/null and b/IMG/INFOWIN.IMG differ diff --git a/IMG/JAKEME.IMG b/IMG/JAKEME.IMG new file mode 100644 index 0000000..30431a6 Binary files /dev/null and b/IMG/JAKEME.IMG differ diff --git a/IMG/JAMIE.IMG b/IMG/JAMIE.IMG new file mode 100644 index 0000000..71caa3a Binary files /dev/null and b/IMG/JAMIE.IMG differ diff --git a/IMG/L2HNDPNC.IMG b/IMG/L2HNDPNC.IMG new file mode 100644 index 0000000..e69de29 diff --git a/IMG/LADDER.BDB b/IMG/LADDER.BDB new file mode 100644 index 0000000..7b6f2f0 --- /dev/null +++ b/IMG/LADDER.BDB @@ -0,0 +1,67 @@ +LADDER 1500 1000 255 1 9 65 +LADDER 117 1152 95 410 +5800 143 219 0 1 +6400 151 361 3 0 +5600 152 172 6 7 +5900 153 284 9 8 +5A10 211 291 C 4 +5A10 211 315 F 5 +5A10 211 337 12 6 +5700 227 213 15 2 +5600 236 111 6 7 +6400 250 361 3 0 +5600 281 197 6 7 +5900 294 284 9 8 +5800 320 218 0 1 +5600 344 131 6 7 +6400 349 361 3 0 +5A00 403 277 18 3 +5700 407 213 15 2 +5A00 412 337 12 6 +5A00 413 291 C 4 +5A00 413 315 F 5 +5600 423 171 6 7 +5900 435 284 9 8 +6400 448 361 3 0 +5600 485 106 6 7 +5800 507 218 0 1 +6400 547 361 3 0 +5600 551 181 6 7 +5900 576 284 9 8 +5700 597 213 15 2 +5A10 604 337 12 6 +5A10 605 291 C 4 +5A10 605 315 F 5 +5600 645 153 6 7 +6400 646 361 3 0 +5800 695 218 0 1 +5600 713 201 6 7 +5900 717 284 9 8 +5600 740 117 6 7 +6400 745 361 3 0 +5700 780 213 15 2 +5600 786 183 6 7 +5A00 796 277 18 3 +5A00 805 315 F 5 +5A00 805 337 12 6 +5A00 805 291 C 4 +6400 844 361 3 0 +5600 854 129 6 7 +5900 859 283 9 8 +5800 869 217 0 1 +5600 917 168 6 7 +5600 933 101 6 7 +6400 943 361 3 0 +5700 952 212 15 2 +4000 1042 361 3 0 +4010 1388 337 12 6 +4010 1389 291 C 4 +4010 1389 315 F 5 +4000 1438 361 3 0 +4000 1537 361 3 0 +4000 1580 277 18 3 +4000 1590 291 C 4 +4000 1590 315 F 5 +4000 1590 337 12 6 +4000 1636 361 3 0 +4000 1735 361 3 0 diff --git a/IMG/LADDER.BDD b/IMG/LADDER.BDD new file mode 100644 index 0000000..785a469 Binary files /dev/null and b/IMG/LADDER.BDD differ diff --git a/IMG/LADDER.IMG b/IMG/LADDER.IMG new file mode 100644 index 0000000..62bcfac Binary files /dev/null and b/IMG/LADDER.IMG differ diff --git a/IMG/LAVAPG.BDB b/IMG/LAVAPG.BDB new file mode 100644 index 0000000..81553ca --- /dev/null +++ b/IMG/LAVAPG.BDB @@ -0,0 +1,18 @@ +LAVAPG 2000 1000 255 1 6 16 +LAVAPG 230 680 30 334 +4000 252 174 0 3 +4000 253 49 3 3 +5F00 254 151 6 1 +4000 260 202 9 4 +4000 264 140 C 4 +4000 329 77 F 4 +4000 361 128 12 2 +4000 376 203 15 4 +4000 392 247 18 0 +5F00 410 68 1B 5 +4000 448 80 1E 4 +5F00 451 152 21 1 +4000 452 175 24 3 +4000 453 49 27 3 +4000 481 182 2A 4 +4000 568 115 2D 4 diff --git a/IMG/LAVAPG.BDD b/IMG/LAVAPG.BDD new file mode 100644 index 0000000..00d92a8 Binary files /dev/null and b/IMG/LAVAPG.BDD differ diff --git a/IMG/LEX.BAT b/IMG/LEX.BAT new file mode 100644 index 0000000..41d5053 --- /dev/null +++ b/IMG/LEX.BAT @@ -0,0 +1,9 @@ +@echo off +@wwfld lex lex_hit lex_kik lex_msc lex_pnc lex_wlk lex_rjr lex_mjt lex_jms lex_jake +@copy lex.ld1 + lex.ld2 lex.lod +@move lex.h ..\leximg.h +@move lex.seq .. + + + + diff --git a/IMG/LEX.LD1 b/IMG/LEX.LD1 new file mode 100644 index 0000000..9c3ac08 --- /dev/null +++ b/IMG/LEX.LD1 @@ -0,0 +1,11 @@ +ASM> leximg.tbl +***> 47a1a80,1 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* LEX LUGER ************************************************************** +ZON> +MON> +BON> +POF> +; diff --git a/IMG/LEX.LOD b/IMG/LEX.LOD new file mode 100644 index 0000000..84fd108 --- /dev/null +++ b/IMG/LEX.LOD @@ -0,0 +1,120 @@ +ASM> leximg.tbl +***> 47a1a80,1 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* LEX LUGER ************************************************************** +ZON> +MON> +BON> +POF> +; +lex_hit.img +---> L3GU4A01,L3GU4A02,L3GU4A03,L3GU4A04,L3GU4A05,L3GU4A06,L3GU4A07 +---> L3GU4A08,L3GU4A09,L3GU4A10,L2AE2A01,L2AE2A02,L2AE2A03,L2AE2A04 +---> L2AE2A05,L2AE2A06,L2AE2A07,L2AE2A08,L2AH2A03,L2AH2A04,L2AH2A05 +---> L2AH2A06,L2AH2A07,L4AH4A01,L4AH4A02,L4AH4A03,L4AH4A04,L4AH4A05 +---> L4AH4A06,L4AH4A07,L4AE4A01,L4AE4A02,L4AE4A03,L4AE4A04,L4AE4A05 +---> L3GU2A01,L3GU2A02,L3GU2A03,L3GU2A04,L3GU2A05,L3GU2A06,L3GU2A07 +---> L3GU2A08,L3GU2A09,L3GU2A10,L4AM4B02,L4AM4B03,L4AM4B04,L4AM4B05 +---> L4AM4B06,L4AM4B07,L4AM4B08,L2AM2B02,L2AM2B03,L2AM2B04,L2AM2B05 +---> L2AM2B06,L2AM2B07,L2AM2B08,L4AH4B03,L3PB3A03,L3PB3A04,L3PB3A05 +---> L3PB3A06,L3PB3A07,L3PB3A08,L3PB3A09,L3CP3B01,L3MF3B01,L3MF3B02 +---> L3MF3B03,L3MF3B04,L3MF3B05,L3MF3B06,L3MF3B07,L3UC3A01,L3UC3A02 +---> L3UC3A03,L3UC3A04,L3UC3A05,L3UC3A06 +lex_kik.img +---> L2KM3A01,L2KM3A02,L2KM3A03,L2KM3A04,L2KM3A05,L2KM3A06,L2KM3A07 +---> L2KM3A08,L2KM3A09,L4KM3B01,L4KM3B02,L4KM3B03,L4KM3B04,L4KM3B05 +---> L4KM3B06,L4KM3B07,L4KM3B08,L4KM3B09,L4NM3B01,L4NM3B02,L4NM3B03 +---> L4NM3B04,L4NM3B05,L4NM3B06,L4NM3B07,L4KB3C01,L4KB3C02,L4KB3C03 +---> L4KB3C04,L4KB3C05,L4KB3C06,L4KB3C07,L4KB3C08 +lex_msc.img +---> L3DC3B01,L3DC3B02,L3DC3B03,L4BK3B03,L4BK3B05,L4BK3C01,L4BK3C02 +---> L3RL1A01,L3RL1A02,L3RL1A03,L3RL1A04,L3RL1A05,L3RL1A06,L3RL1A07 +---> L3RL1A08,L3RL1A09,L3RL1A10,L3RL1A11 +lex_pnc.img +---> L4HM3A02,L4HM3A03,L4HM3A04,L4HM3A05,L4HM3A06,L4HM3A07,L4HM3A08 +---> L4HM3A09,L4PT3B01,L4PT3B02,L4PT3B03,L4PT3B04,L4PT3B05,L4PT3B06 +---> L4PT3B07,L4PT3B08,L4BZ3C01,L4BZ3C02,L4BZ3C03,L4BZ3C04,L4BZ3C05 +---> L4BZ3C06,L4BZ3C07,L4BZ3C08,L4BZ3C09,L4BC3D01,L4BC3D03,L4BC3D04 +---> L4BC3D05,L4BC3D06,L2BC3E02,L2BC3E03,L2BC3E04,L2BC3E05,L2BC3E06 +---> L4PS3A01,L4PS3A02,L4PS3A03,L4PS3A04,L4PU3B01,L4PU3B02,L4PU3B03 +---> L4PU3B04,L4PU3B05,L4PU3B06,L4PU3B08,L4PU3B09,L2PJ3C02,L2PJ3C03 +---> L2PJ3C05,L2PU2B01,L2PU2B02,L2PU2B03,L2PU2B04,L2PU2B05,L2PU2B07 +---> L2PU2B08,L2PU2B09 +lex_wlk.img +---> L2TW2Z01,L2TW2Z02,L2TW2Z03,L2TW2Z04,L2TW2Z05,L4TW4Z01,L4TW4Z02 +---> L4TW4Z03,L4TW4Z04,L4TW4Z05,L4TI4B05,L4TI4B06,L4TI4B07,L4TI4B08 +---> L4TI4B09,L4WL4A01,L4WL4A02,L4WL4A03,L4WL4A04,L4WL4A05,L4WL4A06 +---> L4WL4A07,L4WL4A08,L4WL4A09,L4WL4A10,L4WL4A11,L4WL4A12,L4WL4A13 +---> L4WL4A14,L4WL4A15,L4WL4A16,L4WL4A17,L4WL4A18,L4WL5A01,L4WL5A02 +---> L4WL5A03,L4WL5A04,L4WL5A05,L4WL5A06,L4WL5A07,L4WL5A08,L4WL5A09 +---> L4WL5A10,L4WL5A11,L4WL5A12,L4WL5A13,L4WL5A14,L4WL5A15,L4WL5A16 +---> L4WL5A17,L2WL2A01,L2WL2A02,L2WL2A03,L2WL2A04,L2WL2A05,L2WL2A06 +---> L2WL2A07,L2WL2A08,L2WL2A09,L2WL2A10,L2WL2A11,L2WL2A12,L2WL2A13 +---> L2WL2A14,L2WL2A15,L2WL2A16,L2WL2A17,L2WL2A18,L4WL2B01,L4WL2B02 +---> L4WL2B03,L4WL2B04,L4WL2B05,L4WL2B06,L4WL2B07,L4WL2B08,L4WL2B09 +---> L4WL2B10,L4WL2B11,L4WL2B12,L4WL2B13,L4WL2B14,L4WL2B15,L4WL2B16 +---> L2WL1B01,L2WL1B02,L2WL1B03,L2WL1B04,L2WL1B05,L2WL1B06,L2WL1B07 +---> L2WL1B08,L2WL1B09,L2WL1B10,L2WL1B11,L2WL1B12,L2WL1B13,L2WL1B14 +---> L2WL1B15,L2WL1B16,L2WL8A01,L2WL8A02,L2WL8A03,L2WL8A04,L2WL8A05 +---> L2WL8A06,L2WL8A07,L2WL8A08,L2WL8A09,L2WL8A10,L2WL8A11,L2WL8A12 +---> L2WL8A13,L2WL8A14,L2WL8A15,L2WL8A16,L2WL8A17,L3RN3B01,L3RN3B02 +---> L3RN3B03,L3RN3B04,L3RN3B05,L3RN3B06,L3RN3B07,L3RN3B08,L3RN3B09 +---> L3RN3B10,L3RN3B11,L3RN3B12,L4BO3Z01,L4BO3Z02,L4BO3Z03,L4BO3Z04 +---> L4BO3Z05,L4BO3Z06,L4BO3Z07,L4BO3Z08,L4BO3Z09,L4BO3Z10,L1TT5A01 +---> L1TT5A02,L1TT5A04,L1TT5A05,L1TT5A06,L1TT5A08,L1TT5A09,L1TR5A01 +---> L1TR5A02,L1TR5A04,L1TR5A05,L1TR5A06,L1TR5A08,L1TR5A09,L2ST2C01 +---> L2ST2C02,L2ST2C03,L2ST2C04,L2ST2C05,L2ST2C06,L2ST2C07,L4ST4C01 +---> L4ST4C02,L4ST4C03,L4ST4C04,L4ST4C05,L4ST4C06,L4ST4C07 +lex_rjr.img +---> L3RS3A01,L3RS3A02,L3RS3A03,L3RS3A04,L3RS3A05,L3RS3A06,L3FO3A01 +---> L3FO3A02,L3FO3A03,L3FO3A04,L3FO3A05,L3FO3A06,L3FO3A07,L3FO3A08 +---> L4HT3A02,L4HT3A06,L4HT3A07,L4HT3A08,L4HT3A09,L4HT3A10,L4HT3A11 +---> L4HT3A12,L3BR3Z01,L3BR3Z02,L4CF4A01,L4CF4A02,L4CF4A03,L4CF4A04 +---> L4CF4A05,L4CF4A07,L4CF4A08,L4CF4A09,L4CF4A10,L4ZZ5B01,L4ZZ5B02 +---> L4ZZ5B03,L4ZZ5B04,L4ZZ5B05,L4PO4A01,L4PO4A02,L4PO4A03,L4PO4A04 +---> L4PO4A05,L4PO4A06,L4PO4A07,L4PO4A08,L4PO4A10,L3DD3A01,L3DD3A02 +---> L3DD3A03,L3UC3Z10,L3UC3X01,L3UC3X02,L3UC3X03,L3UC3X04,L3UC3X05 +---> L3UC3X06,L3UC3X07,L3UC3X08,L3UC3X09,L3UC3X10,L3TN3X01,L3TN3X02 +---> L3TN3X03,L3TN3X04,L3TN3X05,L3BF3A01,L3BF3A02,L3BF3A03,L3VS3A01 +---> L3VS3A03,L3VS3A04,L3VS3A05,L3VS3A06,L3VS3A07,L3VS3A08,L3VS3A09 +---> L3VS3A10 +lex_mjt.img +---> L4BZ3B01,L4BZ3B02,L4BZ3B03,L4BZ3B04,L4BZ3B05,L4BZ3B06,L4BZ3B07 +---> L3ZS3A01,L3ZS3A02,L3ZS3A03,L4GH3Z01,L4GH3Z02,L4GH3Z03,L4GH3Z04 +---> L4GH3Z05,L4GH3B06,L3AB3A02,L3AB3A03,L3AB3A04,L4POGO01,L4POGO03 +---> L4POGO04,L3PN5B02,L3PN5B05,L3PN5B09,L3PN5B08,L3PN5B10,L3PN5D01 +---> L3PN5D02,L3PN5D03,L3PN5D04,L3PN5D05,L3PN5D06,L4FX5B02,L4FX5B03 +---> L4FX5B04,L4FX5B05,L4FX5B06,L4FX5B07,L4FX5B08,L4FX5B09,L4FX5B10 +---> L4FX5B11,L3MS3Z01,L3MS3Z02,L3MS3Z03,L3MS3Z04,L3MS3Z05,L3MS3Z06 +---> L4WS4B01,L4WS4B02,L4WS4B03,L4WS4B04,L4GH3B01,L4GH3B02,L4GH3B03 +---> L4GH3B04,L4GH3B05,L4SW5A02,L4SW5A03,L4SW5A04,L4SW5A05,L4SW5A06 +---> L4SW5A07,L4SW5A08,L4SW5A09,L4SW5A10,L4CO4Z01,L4CO4Z02,L4CO4Z03 +---> L4CO4Z04,L4CO4Z05,L4CO4Z06,L4CO4Z07,L4CO4Z08,L4CO4Z09,L3DU3A04 +---> L3DU3A06,L3DU3A07,L3DU3A09,L3GP3Z01,L3GP3Z02,L3GP3Z03,L3GP3Z04 +---> L3GP3Z05,L3GP3Z06,L4GF3B01,L4GF3B02,L4GF3B03,L4GF3B04,L4GF3B05 +---> L4GF3B06,L4GF3B07,L4GF3B08,L4YR3B01,L4YR3B02,L4YR3B03,L4YR3B04 +---> L3BF3B01,L3BF3B02,L3BF3B03,L3BF3B04,L3BF3B05,L3BF3B06,L4BZ4A01 +---> L3TF3X01,L3TF3X02,L3TF3X03,L3TF3X04,L3TF3X05 +lex_jms.img +---> L3FH3A01,L3FH3A02,L3FH3A03,L3FH3A04,L3FH3A05,L3FH3A06,L3FD3B01 +---> L3FD3B02,L3FD3B03,L3FD3B04,L3FD3B05,L3FD3B06,L4MP3A02,L4MP3A03 +---> L4MP3A04,L4MP3A05,L4MP3A06,L4MP3A07,L4MP3A09,L4MP3A10,L2MP2A01 +---> L2MP2A02,L2MP2A03,L2MP2A05,L2MP2A06,L2MP2A07,L2MP2A08,L2MP2A10 +---> L2PT2B01,L2PT2B02,L2PT2B03,L2PT2B04,L2PT2B05,L2PT2B06,L2PT2B07 +---> L2PT2B08,L2PT2B09,L2PT2B10,L2PT2B11,L4PT4B01,L4PT4B02,L4PT4B03 +---> L4PT4B04,L4PT4B05,L4PT4B06,L4PT4B07,L4PT4B08,L4PT4B09,L4PT4B10 +---> L4PT4B11,L3PJ3F01,L3PJ3F03,L3PJ3F04,L3PJ3F05,L3PJ3F06,L3PJ3F07 +---> L3PJ3F09,L3PJ3F10,L3CP3X01,L3CP3X02,L3CP3X03,L3CP3X04,L3CP3X05 +---> L3CP3X06,L3CP3X07,L3GU4B08,L3GU4B09,L3GU4B10,L4HU4A05,L4HU4A06 +---> L4HU4A07,L4HU4A08,L4HU4A09,L4SB4A01,L4SB4A02,L4SB4A03,L4SB4A04 +---> L4SB4A05,L4SB4A06,L4SB4A07,L3RR3Z01,L3RR3Z02,L3RR3Z03,L3RR3Z04 +---> L3RR3Z05,L3RR3Z06,L3RR3Z07,L3RR3Z08,L3RR3Z09 +lex_jake.img +---> L4WA4B01,L4WA4B02,L4WA4B03,L4WA4B04,L4WA4B05,L4WA4B06,L4WA4B07 +---> L4WA4B08,L4WA4B09,L4WA4B10,L4CS3A02,L4CS3A04,L4CS3A05,L4CS3A06 +---> L4CS3A07,L4CS3A08,L4CS3A09,L4CS3A10,L4CR3B01,L4CR3B02,L4CR3B03 +---> L4CR3B04,L4CR3B05,L4CR3B06,L4CR3B07,L4CR3B08,L4CR3B09,L4CR3B10 +---> L4CR3B11,L4JD4A02,L4JD4A03,L4JD4A04,L4JD4A06,L4JD4A07,L4JD4A08 + \ No newline at end of file diff --git a/IMG/LEXNSTNC.IMG b/IMG/LEXNSTNC.IMG new file mode 100644 index 0000000..3562fc7 Binary files /dev/null and b/IMG/LEXNSTNC.IMG differ diff --git a/IMG/LEXSTAND.IMG b/IMG/LEXSTAND.IMG new file mode 100644 index 0000000..730f2cd Binary files /dev/null and b/IMG/LEXSTAND.IMG differ diff --git a/IMG/LEX_HIT.IMG b/IMG/LEX_HIT.IMG new file mode 100644 index 0000000..6c96c4c Binary files /dev/null and b/IMG/LEX_HIT.IMG differ diff --git a/IMG/LEX_JAKE.IMG b/IMG/LEX_JAKE.IMG new file mode 100644 index 0000000..e8260b5 Binary files /dev/null and b/IMG/LEX_JAKE.IMG differ diff --git a/IMG/LEX_JMS.IMG b/IMG/LEX_JMS.IMG new file mode 100644 index 0000000..2fc543f Binary files /dev/null and b/IMG/LEX_JMS.IMG differ diff --git a/IMG/LEX_KIK.IMG b/IMG/LEX_KIK.IMG new file mode 100644 index 0000000..b0d6adf Binary files /dev/null and b/IMG/LEX_KIK.IMG differ diff --git a/IMG/LEX_MJT.IMG b/IMG/LEX_MJT.IMG new file mode 100644 index 0000000..e535051 Binary files /dev/null and b/IMG/LEX_MJT.IMG differ diff --git a/IMG/LEX_MSC.IMG b/IMG/LEX_MSC.IMG new file mode 100644 index 0000000..a9773d9 Binary files /dev/null and b/IMG/LEX_MSC.IMG differ diff --git a/IMG/LEX_PNC.IMG b/IMG/LEX_PNC.IMG new file mode 100644 index 0000000..fb8eb17 Binary files /dev/null and b/IMG/LEX_PNC.IMG differ diff --git a/IMG/LEX_RJR.IMG b/IMG/LEX_RJR.IMG new file mode 100644 index 0000000..726f85f Binary files /dev/null and b/IMG/LEX_RJR.IMG differ diff --git a/IMG/LEX_WLK.IMG b/IMG/LEX_WLK.IMG new file mode 100644 index 0000000..795ffd6 Binary files /dev/null and b/IMG/LEX_WLK.IMG differ diff --git a/IMG/LEX_XXX.IMG b/IMG/LEX_XXX.IMG new file mode 100644 index 0000000..dcc831a Binary files /dev/null and b/IMG/LEX_XXX.IMG differ diff --git a/IMG/LGMD.IMG b/IMG/LGMD.IMG new file mode 100644 index 0000000..6117f2a Binary files /dev/null and b/IMG/LGMD.IMG differ diff --git a/IMG/LILLOGO.IMG b/IMG/LILLOGO.IMG new file mode 100644 index 0000000..ee6bf83 Binary files /dev/null and b/IMG/LILLOGO.IMG differ diff --git a/IMG/LOGO.IMG b/IMG/LOGO.IMG new file mode 100644 index 0000000..ce84d5e Binary files /dev/null and b/IMG/LOGO.IMG differ diff --git a/IMG/MAIN.LOD b/IMG/MAIN.LOD new file mode 100644 index 0000000..da325ba --- /dev/null +++ b/IMG/MAIN.LOD @@ -0,0 +1,380 @@ +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L +***> 2000000,1 +ASM> crowdimg.tbl +GLO> crowdimg.glo +; +crowd.img +---> ALEX1,ALEX2,ALEX3,ALEX4,CARLO1,CARLO2,CARLO3,CARLO4,CRAZY1,CRAZY2 +---> CRAZY3,CRAZY4,CRAZY5,DAVEMSK1,DAVEMSK2,DAVEMSK3,DAVEMSK4,DEWY1,DEWY2 +---> DEWY3,DEWY4,GEORGE1,GEORGE2,GEORGE3,GEORGE4,JAKE1,JAKE2 +---> JAKE3,JAKE4,JAMIE1,JAMIE2,JAMIE3,JAMIE4,JAMIE5,JAMIE6 +---> JOHNC1,JOHNC2,JOHNC3,JOHNC4 +---> JOSH1,JOSH2,JOSH3,JOSH4,JOY1,JOY2,JOY3,JOY4,JOY5 +---> MARINE1,MARINE2 +---> MARINE3,MARINE4,NEWCOM1,NEWCOM2,NEWCOM3,NEWCOM4,SAL1,SAL2,SAL3 +---> SAL4,SDCRD1A,SDCRD1B,SDCRD1C,SDCRD2A,SDCRD2B,SDCRD2C,SDCRD3A,SDCRD3B +---> SDCRD3C,SDCRD4A,SDCRD4B,SDCRD4C,SERG1,SERG2,SERG3,SERG4,SERG5,SHERID1 +---> SHERID2,SHERID3,SHERID4,SHERID5,SHERID6,SHERID7,SHERID8,TOBIAS1,TOBIAS2 +---> TOBIAS3,TOBIAS4,TURMEL1 +---> TURMEL2,TURMEL3,TURMEL4,VOGEL1,VOGEL2,VOGEL3,VOGEL4 +---> EUG1,EUG2,EUG3,EUG4,JAK1,JAK2,JAK3,JAK4,JAK5,MANC1,MANC2,MANC3,MANC4 +---> MANC5,PENA1,PENA2,PENA3,PENA4,SOFI1,SOFI2,SOFI3,SOFI4,JENI1,JENI2 +---> JENI3,JENI4 +ladder.img +---> JASONCRD1,JASONCRD2,JASONCRD3,JASONCRD4,JASONCRD5,TONYCRD1,TONYCRD2 +---> TONYCRD3,TONYCRD4,TONYCRD5,FLASH1,FLASH2 +COF> +flash.img +---> flash1,flash2,flash3,flash3a,flash5,flash6 +---> flash4 +rckchips.img +---> CHIP1_01,CHIP1_03,CHIP1_05,CHIP1_07,CHIP1_09,CHIP1_11 +---> CHIP1_13,CHIP1_15,CHIP1_17,CHIP1_19,CHIP2_01,CHIP2_03 +---> CHIP2_05,CHIP2_07,CHIP2_09,CHIP3_01,CHIP3_03,CHIP3_05 +---> CHIP3_07,CHIP3_09,CHIP3_11,CHIP3_13,CHIP3_15,CHIP3_17,CHIP3_19 +---> CHIP4_01,CHIP4_03,CHIP4_05,CHIP4_07,CHIP4_09,CHIP5_01 +---> CHIP5_03,CHIP5_05,CHIP5_07,CHIP5_09,CHIP5_11,CHIP5_13 +---> CHIP5_15,CHIP5_17,CHIP5_19 +CON> +lillogo.img +---> SMWWF2 +ZON> +vs_bk.img +---> CSELBK_A,CSELBK_B,CSELBK_C,CSELBK_D,CSELBK_E,CSELBK_F +---> CSELBV_A,CSELBV_B,CSELBV_C,CSELBV_D +ZOF> +COF> +sparks2.img +---> SPKD1_09,SPKD2_09,SPKD3_09,SPKD4_09,SPKR1_09,SPKR2_01,SPKR3_01,SPKR4_01 +---> GLOW1_01,GLOW1_02,GLOW1_03,GLOW1_04,GLOW1_05,GLOW1_06,GLOW1_07 +---> GLOW1_08,GLOW1_09,GLOW2_01,GLOW2_02,GLOW2_03,GLOW2_04,GLOW2_05 +---> GLOW2_06,GLOW2_07,GLOW2_08,GLOW2_09,GLOW3_01,GLOW3_02,GLOW3_03 +---> GLOW3_04,GLOW3_05,GLOW3_06 +CON> +; +ASM> ropeimg.tbl +GLO> ropeimg.glo +ropeshad.img +COF> +---> ROPSHADA,ROPSHADB,RCSH1_01A,RCSH1_01B,RCSH1_02A +---> RCSH1_02B,RCSH1_03A,RCSH1_03B,RCSH1_04A,RCSH1_04B,RCSH1_05A,RCSH1_05B +---> RCSH2_01A,RCSH2_01B,RCSH2_02A,RCSH2_02B,RCSH2_03A,RCSH2_03B,RCSH2_04A +---> RCSH2_04B,RCSH2_05A,RCSH2_05B,RCSH3_01A,RCSH3_01B,RCSH3_02A,RCSH3_02B +---> RCSH3_03A,RCSH3_03B,RCSH3_04A,RCSH3_04B,RCSH3_05A,RCSH3_05B,RCSH4_01A +---> RCSH4_01B,RCSH4_02A,RCSH4_02B,RCSH4_03A,RCSH4_03B,RCSH4_04A,RCSH4_04B +---> RCSH4_05A,RCSH4_05B,RCSH5_01A,RCSH5_01B,RCSH5_02A,RCSH5_02B,RCSH5_03A +---> RCSH5_03B,RCSH5_04A,RCSH5_04B,RCSH5_05A,RCSH5_05B,RBSH_01A,RBSH_01B +---> RBSH_02A,RBSH_02B,RBSH_03A,RBSH_03B,RBSH_04A,RBSH_04B,RBSH_05A,RBSH_05B +---> RBSH_06A,RBSH_06B,RBSH_07A,RBSH_07B +;COF> +;wwfselbk.img +;---> ATT_TXT,ATTPL_G +CON> +; +crut2.img +---> CRUTPLT_G +---> CRUTPLT_B,CRUTPLT_R,CRUT_BH,CRUT_BM +---> CRUT_DK,CRUT_LX,CRUT_RR,CRUT_SM,CRUT_YK,CRUT_UN +---> CRUTHI_B,CRUTHI_R +; +ASM> roboimg.tbl +GLO> roboimg.glo +robotron.img +COF> +ZON> +---> robo_bad,bullet_hrz,bullet_vrt,bullet_bck,bullet_fnt,grunt_1,grunt_2 +---> grunt_3,robo_dead +;---> brain_l1,brain_l2,brain_l3,brain_r1,brain_r2,brain_r3 +;---> brain_d1,brain_d2,brain_d3,brain_u1,brain_u2,brain_u3 +---> enf_1,enf_g1 +---> enf_g2,enf_g3,enf_g4,enf_g5,spark_1,spark_2,spark_3,spark_4,man_l1 +---> man_l2,man_l3,man_r1,man_r2,man_r3,man_d1,man_d2,man_d3,man_u1,man_u2 +---> man_u3,skull,one_k,two_k,three_k,four_k,five_k,mom_l1,mom_l2,mom_l3 +---> mom_r1,mom_r2,mom_r3,mom_d1,mom_d2,mom_d3,mom_u1,mom_u2,mom_u3,dad_l1 +---> dad_l2,dad_l3,dad_r1,dad_r2,dad_r3,dad_d1,dad_d2,dad_d3,dad_u1,dad_u2 +---> dad_u3,kid_l1,kid_l2,kid_l3,kid_r1,kid_r2,kid_r3,kid_d1,kid_d2,kid_d3 +---> kid_u1,kid_u2,kid_u3,hulk_l1,hulk_l2,hulk_l3,hulk_ud1,hulk_ud2,hulk_ud3 +---> hulk_r1,hulk_r2,hulk_r3,rfont_0,rfont_1,rfont_2,rfont_3,rfont_4,rfont_5 +---> rfont_6,rfont_7,rfont_8,rfont_9,rfont_exc,rfont_comma,rfont_period +---> rfont_a,rfont_b,rfont_c,rfont_d,rfont_e,rfont_f,rfont_g,rfont_h,rfont_i +---> rfont_j,rfont_k,rfont_l,rfont_m,rfont_n,rfont_o,rfont_p,rfont_q,rfont_r +---> rfont_s,rfont_t,rfont_u,rfont_v,rfont_w,rfont_x,rfont_y,rfont_z +---> rfont_lparens,rfont_rparens,rfont_fslash +;---> rfont_arrow +---> wave_text,circle_1 +---> circle_2,circle_3,circle_4,circle_5,circle_6,circle_7,circle_8,rsmall_0 +---> rsmall_1,rsmall_2,rsmall_3,rsmall_4,rsmall_5,rsmall_6,rsmall_7,rsmall_8 +---> rsmall_9,grunt_xv1,grunt_xv2,grunt_xv3,grunt_xv4,grunt_xdb1,grunt_xdb2 +---> grunt_xdb3,grunt_xdb4,grunt_xh1,grunt_xh2,grunt_xh3,grunt_xh4 +---> grunt_xdf1,grunt_xdf2,grunt_xdf3,grunt_xdf4,star_1,star_2,star_3 +---> crystal_1,crystal_2,crystal_3,diamond_1,diamond_2,diamond_3,R2084_1 +---> R2084_2,R2084_3,pcube_1,pcube_2,pcube_3,spiral_1,spiral_2,spiral_3 +---> square_1,square_2,square_3,triangle_1,triangle_2,triangle_3,rectangle_1 +---> rectangle_2,rectangle_3,enf_xv1,enf_xv2,enf_xv3,enf_xv4,enf_xv5,enf_xb1 +---> enf_xb2,enf_xb3,enf_xb4,enf_xh1,enf_xh2,enf_xh3,enf_xh4,enf_xf1,enf_xf2 +---> enf_xf3,enf_xf4,tank_g1,tank_g2,tank_g3,tank_g4,quark_1,quark_2,quark_3 +---> quark_4,quark_5,quark_6,quark_7,quark_8,tank_1,tank_2,tank_3,tank_4 +---> shell +CON> +; +;************************************************************************* +ASM> fontsimg.tbl +GLO> fontsimg.glo +; +ZOF> +COF> +osgemd.img +---> OSGEMD_PCT +---> OSGEMD_AND +---> OSGEMD_A,OSGEMD_B,OSGEMD_C,OSGEMD_D +---> OSGEMD_E,OSGEMD_F,OSGEMD_G,OSGEMD_H +---> OSGEMD_I,OSGEMD_J,OSGEMD_K,OSGEMD_L +---> OSGEMD_M,OSGEMD_N,OSGEMD_O,OSGEMD_P +---> OSGEMD_Q,OSGEMD_R,OSGEMD_S,OSGEMD_T +---> OSGEMD_U,OSGEMD_V,OSGEMD_W,OSGEMD_X +---> OSGEMD_Y,OSGEMD_Z +---> OSGEMD_EXP +---> OSGEMD_DAS +---> OSGEMD_DEL +---> OSGEMD_DOT +---> OSGEMD_DOL +---> OSGEMD_SLS +---> OSGEMD_APO +---> OSGEMD_QUE +---> OSGEMD_BAK +---> OSGEMD_SPC +---> OSGEMD_END +---> OSGEMD_COL +---> OSGEMD_OBR,OSGEMD_CBR,OSGEMD_NUM +---> OSGEMD_0,OSGEMD_1,OSGEMD_2,OSGEMD_3,OSGEMD_4,OSGEMD_5 +---> OSGEMD_6,OSGEMD_7,OSGEMD_8,OSGEMD_9 +ZON> +; +winfont.img +---> WFONT_0,WFONT_1,WFONT_2,WFONT_3,WFONT_4,WFONT_5,WFONT_6,WFONT_7,WFONT_8 +---> WFONT_9 +; +fnt9.img +COF> +;MJL Start +---> FNT9_A,FNT9_B,FNT9_C,FNT9_D +POF> +---> FNT9_E,FNT9_F,FNT9_G,FNT9_H,FNT9_I,FNT9_J +---> FNT9_K,FNT9_L,FNT9_M,FNT9_N,FNT9_O,FNT9_P,FNT9_Q,FNT9_R,FNT9_S,FNT9_T +---> FNT9_U,FNT9_V,FNT9_W,FNT9_X,FNT9_Y +PON> +---> FNT9_Z +POF> +---> FNT9_EXP,FNT9_APO +---> FNT9_COL,FNT9_END,FNT9_SPC,FNT9_DEL,FNT9_PER +---> FNT9_1,FNT9_2,FNT9_3,FNT9_4,FNT9_5 +---> FNT9_6,FNT9_7,FNT9_8,FNT9_9,FNT9_0 +CON> +---> FNT9_1A,FNT9_2A,FNT9_3A,FNT9_4A,FNT9_5A +---> FNT9_6A,FNT9_7A,FNT9_8A,FNT9_9A,FNT9_0A +PON> +;MJL End +; +COF> +wsfnt14.img +;MJL Start +---> WSF14_1,WSF14_2 +POF> +---> WSF14COL +---> WSF14_A,WSF14_B,WSF14_C,WSF14_D,WSF14_E,WSF14_F,WSF14_G,WSF14_H +---> WSF14_I,WSF14_J,WSF14_K,WSF14_L,WSF14_M,WSF14_N,WSF14_O,WSF14_P +---> WSF14_Q,WSF14_R,WSF14_S,WSF14_T,WSF14_U,WSF14_V,WSF14_W,WSF14_X +---> WSF14_Y,WSF14_Z,WSF14_0,WSF14_3,WSF14_4,WSF14_5 +---> WSF14_6,WSF14_7,WSF14_8,WSF14_9,WSF14COM,WSF14PER,WSF14SLS,WSF14QUE +---> WSF14EXC,WSF14DOL,WSF14AND,WSF14PCT,WSF14COL,WSF14NUM,WSF14PRL +---> WSF14APO +wsfnt10.img +PON> +---> WSF10_A,WSF10_B,WSF10_C +POF> +---> WSF10_D,WSF10_E,WSF10_F,WSF10_G,WSF10_H +---> WSF10_I,WSF10_J,WSF10_K,WSF10_L,WSF10_M,WSF10_N,WSF10_O,WSF10_P +---> WSF10_Q,WSF10_R,WSF10_S,WSF10_T,WSF10_U,WSF10_V,WSF10_W,WSF10_X +---> WSF10_Y,WSF10_Z,WSF10_0,WSF10_1,WSF10_2,WSF10_3,WSF10_4,WSF10_5 +---> WSF10_6,WSF10_7,WSF10_8,WSF10_9,WSF10PCT,WSF10EXC +---> WSF10COM,WSF10PER,WSF10DSH,WSF10NUM +---> remaining,WSF10APO +PON> +;MJL End +;MJL Start - These are not used +;sgmd8.img +;---> SGMD8_0,SGMD8_1,SGMD8_2,SGMD8_3 +;---> SGMD8_4,SGMD8_5,SGMD8_6,SGMD8_7 +;---> SGMD8_8,SGMD8_9,SGMD8_DOT +;MJL End +; +ASM> fonts2.tbl +GLO> junkxxx.glo +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L +; +;bigwwf.img +;---> WWFLOGO_a,WWFLOGO_b +; +ZOF> +wgsfnt18.img +COF> +;MJL Start +---> WGSF18_A,WGSF18_B,WGSF18_C,WGSF18_D,WGSF18_E +POF> +---> WGSF18_F,WGSF18_G +---> WGSF18_H,WGSF18_I,WGSF18_J,WGSF18_K,WGSF18_L,WGSF18_M,WGSF18_N +---> WGSF18_O,WGSF18_P,WGSF18_Q,WGSF18_R,WGSF18_S,WGSF18_T,WGSF18_U +---> WGSF18_V,WGSF18_W,WGSF18_X,WGSF18_Y,WGSF18_Z,WGSF18_0,WGSF18_1 +---> WGSF18_2,WGSF18_3,WGSF18_4,WGSF18_5,WGSF18_6,WGSF18_7,WGSF18_8 +---> WGSF18_9,WGSF18COM,WGSF18PER,WGSF18SLS,WGSF18QUE,WGSF18EXC,WGSF18DOL +ZON> +; +sgmd8.img +COF> +PON> +---> SGMD8_A,SGMD8_B,SGMD8_C,SGMD8_D +---> SGMD8_E,SGMD8_F +---> SGMD8_K,SGMD8_L +POF> +;---> SGMD8_G,SGMD8_H +;---> SGMD8_I,SGMD8_J +;PON> +;POF> +;---> SGMD8_M,SGMD8_N,SGMD8_O,SGMD8_P +;---> SGMD8_Q,SGMD8_R,SGMD8_S,SGMD8_T +;---> SGMD8_U,SGMD8_V,SGMD8_W,SGMD8_X +;---> SGMD8_Y,SGMD8_Z +;---> SGMD8_DAS,SGMD8_EXP +;---> SGMD8_NUM,SGMD8_COM +;---> SGMD8_OBR,SGMD8_CBR +;---> SGMD8_COL,SGMD8_AND +;---> SGMD8_APO,SGMD8_SLS,SGMD8_PCT +---> osgmd8_A,osgmd8_B,osgmd8_C,osgmd8_D +---> osgmd8_E,osgmd8_F,osgmd8_G,osgmd8_H +---> osgmd8_I,osgmd8_J,osgmd8_K,osgmd8_L +---> osgmd8_M,osgmd8_N,osgmd8_O,osgmd8_P +---> osgmd8_Q,osgmd8_R,osgmd8_S,osgmd8_T +---> osgmd8_U,osgmd8_V,osgmd8_W,osgmd8_X +---> osgmd8_Y,osgmd8_Z +---> osgmd8_0,osgmd8_1,osgmd8_2,osgmd8_3 +---> osgmd8_4,osgmd8_5,osgmd8_6,osgmd8_7 +---> osgmd8_8,osgmd8_9,osgmd8_DOT +---> osgmd8_DAS,osgmd8_EXP +---> osgmd8_NUM,osgmd8_COM +---> osgmd8_OBR,osgmd8_CBR +---> osgmd8_COL,osgmd8_AND +---> osgmd8_APO,osgmd8_SLS,osgmd8_PCT +---> osgmd8_CLQ,osgmd8_OPQ +; +ogmd10.img +COF> +PON> +---> osgmd10_A +POF> +---> osgmd10_B,osgmd10_C,osgmd10_D +---> osgmd10_E,osgmd10_F,osgmd10_G,osgmd10_H +---> osgmd10_I,osgmd10_J,osgmd10_K,osgmd10_L +---> osgmd10_M,osgmd10_N,osgmd10_O,osgmd10_P +---> osgmd10_Q,osgmd10_R,osgmd10_S,osgmd10_T +---> osgmd10_U,osgmd10_V,osgmd10_W,osgmd10_X +---> osgmd10_Y,osgmd10_Z,osgmd10_0,osgmd10_1 +---> osgmd10_2,osgmd10_3,osgmd10_4,osgmd10_5 +---> osgmd10_6,osgmd10_7,osgmd10_8,osgmd10_9 +---> osgmd10_PCT,osgmd10_EXP,osgmd10_OBR +---> osgmd10_CBR +---> osgmd10_COM,osgmd10_DOT +---> osgmd10_COL,osgmd10_DAS,osgmd10_NUM,osgmd10_AND +---> osgmd10_SLS,osgmd10_DOL,osgmd10_APO +PON> +;MJL End +; +COF> +ASM> TEXT.TBL +trogf15.img +;MJL Start +---> FON150 +POF> +;---> FON150,FON151,FON152,FON153,FON154,FON155,FON156,FON157,FON158,FON159 +---> FON151,FON152,FON153,FON154,FON155,FON156,FON157,FON158,FON159 +---> FON15A,FON15B,FON15C,FON15CR,FON15D,FON15E,FON15F,FON15G,FON15H,FON15I +---> FON15J,FON15K,FON15L,FON15M,FON15N,FON15O,FON15P,FON15Q,FON15R,FON15S +---> FON15T,FON15U,FON15V,FON15W,FON15X,FON15Y,FON15Z,FON15and,FON15apos +---> FON15apos1,FON15ast,FON15backsp,FON15brackl,FON15brackr,FON15break +---> FON15carr,FON15colon,FON15comma,FON15dash,FON15doll,FON15engPOUN +---> FON15equal,FON15excla,FON15forsp,FON15la,FON15lb,FON15lc,FON15ld +---> FON15le,FON15less,FON15lf,FON15lg,FON15lh,FON15li,FON15line,FON15lj +---> FON15lk,FON15ll,FON15lm,FON15ln,FON15lo,FON15lp,FON15lq,FON15lr +---> FON15ls,FON15lt,FON15lu,FON15lv,FON15lw,FON15lx,FON15ly,FON15lz +---> FON15more,FON15paren2l,FON15paren2r,FON15parenl,FON15parenr,FON15perc +---> FON15period,FON15plus,FON15poun,FON15quest,FON15quote,FON15rquote +---> FON15semicol +; +trogf7.img +---> FONT7A,FONT7B,FONT7C,FONT7D,FONT7E,FONT7F,FONT7G,FONT7H,FONT7I,FONT7J +---> FONT7K,FONT7L,FONT7M,FONT7N,FONT7O,FONT7P,FONT7Q,FONT7R,FONT7S,FONT7T +---> FONT7U,FONT7V,FONT7W,FONT7X,FONT7Y,FONT7Z,FONT7a,FONT7b,FONT7c,FONT7d +---> FONT7e,FONT7f,FONT7g,FONT7h,FONT7i,FONT7j,FONT7k,FONT7l,FONT7m,FONT7n +---> FONT7o,FONT7p,FONT7q,FONT7r,FONT7s,FONT7t,FONT7u,FONT7v,FONT71,FONT72 +---> FONT73,FONT74,FONT75,FONT76,FONT77,FONT78,FONT79,FONT70,FONT7excla +---> FONT7pound,FONT7doll,FONT7percen,FONT7and,FONT7ast,FONT7parenl +---> FONT7parenr,FONT7dash,FONT7line,FONT7equal,FONT7plus,FONT7bracl +---> FONT7bracr,FONT7backsp,FONT7paren2l,FONT7paren2r,FONT7break +---> FONT7semicol,FONT7apost,FONT7colon,FONT7quote,FONT7comma,FONT7period +---> FONT7forsp,FONT7less,FONT7more,FONT7quest +PON> +;MJL End +; +;************************************************************************* +; +ASM> SCREEN.TBL +;trnsplat.img +;---> TRNSPLT +NTRNSPLT.IMG +---> HORZTRN1,HORZTRN2,VERTTRN1,VERTTRN2 +; +;Loads DIAGP palette +IHDR PAL:L +GLO> fontsimg.glo +diagp.img +---> DIAGPIMG +GLO> junkxxx.glo +awwftit.img +---> chunk1,chunk2,chunk3,chunk4,chunk5 +---> chunk6,chunk7,chunk8,chunk9,chunk10 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L +ASM> LOGO.TBL +GLO> LOGO.GLO +STATUSD.IMG +---> BLUESH,WINS_IMG,MATCH_IMG,RCHAMP,FLASH01,FLASH02,FLASH03,FLASH04,FLASH05 +---> STATBAR,TXTBAR1,SWWFBLT,TXTPCE +ZON> +SPORTLO8.IMG +---> SPRTLG01,SPRTLG02,SPRTLG03,SPRTLG04,SPRTLG05 +---> SPRTLG06,SPRTLG07,SPRTLG08,SPRTLG09,SPRTLG10 +---> SPRTLG11,SPRTLG12,SPRTLG13,SPRTLG14,SPRTLG15 +---> SPRTLG16,SPRTLG17 +ZOF> +; +; || ;THESE ARE CHARACTERS TO MAKE DIFFERENT! +ASM> IMGTBL.ASM +GLO> BGNDTBL.GLO +CON> +ZOF> +BBB> NEWRINGB +;BBB> TIMEWRNG +ZON> +BBB> blankpg +BBB> WWFSELBK +BBB> LADDER +;MJT Start +BBB> BIGWWF +;MJT End +BBB> SPRTBK +;BBB> LAVAPG +;BBB> SLATEPG +;BBB> NEWBIO2 +;BBB> WWFBLANK +;BBB> COMESOON +ZOF> diff --git a/IMG/MARKER.IMG b/IMG/MARKER.IMG new file mode 100644 index 0000000..e69de29 diff --git a/IMG/MATCHUP.BDB b/IMG/MATCHUP.BDB new file mode 100644 index 0000000..9131987 --- /dev/null +++ b/IMG/MATCHUP.BDB @@ -0,0 +1,22 @@ +matchup 2000 1000 255 1 2 20 +versus 960 1429 210 512 +3200 998 233 0 0 +3200 998 361 3 0 +4000 1014 355 6 0 +4000 1014 360 9 0 +4000 1015 249 C 0 +4000 1015 249 F 0 +4000 1015 367 12 0 +4000 1015 468 15 0 +4000 1029 264 3C 1 +4100 1159 342 1E 0 +4100 1159 360 21 0 +4000 1179 393 3C 1 +4000 1187 360 24 0 +4000 1193 249 27 0 +4000 1196 468 2A 0 +4000 1198 355 2D 0 +3200 1202 233 30 0 +3200 1202 361 33 0 +4000 1372 256 36 0 +4000 1372 367 39 0 diff --git a/IMG/MATCHUP.BDD b/IMG/MATCHUP.BDD new file mode 100644 index 0000000..1526a68 --- /dev/null +++ b/IMG/MATCHUP.BDD @@ -0,0 +1,6847 @@ +19 +0 204 128 1 + + + + + + +  + + +  + + + + + +  +  + +  + + + + + + + + +  +   + + + +  + + + + + + +  +  + + + + + + +  + + + + + +  +    + +  + + +  + + +  + + + + +  + + + + + + +   +   +  + + + + + + + + + +  + + + + +  +  + +  + + + + + + +      + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + +  + + + + + + + + + +  + + + + + + + +    + + + + +  + + + + + + + + + +  + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + +   +  + + + + + + + + + +  + + + + +  +  + +  + + + + + + +      + +  + + +  + + +  + + + + +  + + + + + + +   +   + + + +  + + + + + + +  +  + + + + + + +  + + + + + +  +  + + + + + +  + + +  + + + + + +  +  + +  + + + + + + + + +  +  +  +  + + + + + + + + + + + + + + + + + + + + +   +  + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +    + + +   + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + +    + + + + +  + + + + + + + + + + + + + + +   + +   + + +   + + + + +  + + + + + + + + + + + + + + + + + + +  + +  + +    + + + + + + + + + + + + + + + + + +   + +     + + + + +  + + + + + + + + + + + + + +   + + +  + + + + + + + + +  + + + + + + + + + + + + +   + +  + + + + + + + + + + + + + + + + + + + + + + + + + + +     +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +   + +  + + + + + + + + + + + + + + + + + + + + + + +  + +     + +  + + + + + + + + + + + + + + + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + +     +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    +  +  + + +  + + + + + + + + + + + + + + + + + + +  + + +      + + + + + + + + + + + + + + + + + + + + +  + + +     + + + + + + + + +  + + + + + + + + + +  + +       +   + + + + + + + + + + + + + + + + + + + + +  + +     + +  + + + + + + + + + + + + + + + + + + + +  +      +  + + + + + + + + + + + + + + + +  + +   +  +   + +  + + + + + + + + + + + +  + +   + + +  + + + + + + + + + + + + + + + + + + + + + + + +  + +   + + +  +  + + + + +  + + + + + + + + + + + + + + + + + +   + + + +  + + + + + +  + + + + +  + + + + + + + +  +    + + +    + + + + + + + + +  + + + + + +    + + +   + + +  + + + + + + + + + + + + +   + +   +  +  + + +        + + + + + + + + + + + + + + + +  + + +     + + + +  +   + + +    + + + + + + + + + + + + + + +     +   + + + +    + + +   +  + + + + + + + + + + + + +  + + + + + + +       + + + + +    +  + + +  + + + + + + + + + + + + + + + + + + + + + + + +    +  + + +  + + +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + +  +  +  + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + +          + + +  +  + + + +  + + + + + + + + + + + + + + + + + + + + + + + + +  + +     + + +  +  + + +  + +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +   +  + +  + +  + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + +    +  + +    + + + +  +  + + + + + + + + + + + + + + + + + + + + + + + +     + + +   + + + +   + +  + + + + + + + + + + + + + + + + + + + + + + + +     + + +  +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + +   + +  + + + + +   + + +   +  + + + + + + + + + + + + + + + + + + + + + + +  + +  + + + + + + + + +  + + +  + + + + + +  + + + + + + + + + + + + + + + +  + + + +  + + + + +  + + + +   + + + + + + + + + + + + + + + +  + +   + + + + +   +  + + + + + + +   + +  + + + + + + + + +  + +   + + + +  +    + + +  + + +  + + + + +  + +   + + + + +    + + +   + + +  + + + + +  + +  + + + +   + + + +  + + + + +   + +  +  + + + + + + +  + + + + + + +    + + + + + + +  + + +  +  + +   + + + + + + +  + + + + +  + +   +   + + +   + + + +  + + +   + +   + + + + +  + + + + + + +  + +    + + + +   + + + + + + + +   +  + + +  + + + + + + + + + + + + +  + + +    + + +   + + + + + + +   +  + + + + + + + + + + + + + + + +   + +       + + + +  +   + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + +     +    + + + + + +  +  + + + + + + +   + + + + + + + + + + + + + + + + +         + + + + +  + + +  +  + + + + + + +  + + + + + + + + + + + + + + + + +         + +  + + + + + + +  + +  + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + +  +  + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + +  + + + + +     + + + +  + + + + + + +  + + + + + + + +  + + + + + + + + + + + + + + + +  + + + + +   + + + + + + + + +   + +  +  +  + + + +  + + + + + + + + + + + + + + +    + + + + + + + + + + + + +    + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + +     + + + + + + + + + +    + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +   +  + + + + + + + + +  + +  +    + + + + + + + +    + +  + + + + + +      + + +  + + + + + + +  + +   + +  + + + + + + + + +  + + + + + + + + + + + +           + + + + +   + + + + + + + + +        + +  + + + + + + + + +   + + + + + + + + + + + + + + + + + + + +  + +        + + + + +         + + +  + + + +  + + + + + + + + + + + + + + + + + + + + +   +   + +  + + + + + + + +   +    + +  + +  +  +  + + + + + + + + + + + + + + + + + + + + + + + + +   + +   + + +  + + + + + + +   +  +   + + +  + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +   +   + + + + + +  +    + + +  +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    +  + + + + + + +    + +  + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +   +  + +  + + + + + + + + + + + + + + +  + +  + + + + + + + + + + + + + + +  + + + + + +   + + + +    + +  + + + + + + + + + + + + + + +  + + +  + + + + + + + + + + + + + +  + + + + + + + + +    + + + +    + +  + + + + + + + + +  + +   + + + + + + + + + + + + +  + + + + + + + + +     + +  +   + + + + + + + + + + +  + +   + + + + + + + + + + + + + +         + + + + + + + + + + + + + + + + + + + +    +      + + + + + + + + + + +  + + + + + + + +   + + +  + + + + +      + + + + + + + + + + + + + + + + + + + + + +    + + + + +    + + + + + + + + + + + + +  + + + + + + + + + + +   + + + +   + + + + + + + + + + + + + + + + + + + + + + + +  + + + + +  + + + + + + + + +     +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + + +  + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + +  + + + + + + +        + + + + + + + + + + + +  + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + +  + + +  + + + +      + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + +  + + + +     + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + +  +  + + + + + +       +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +  + + + + + + + + + +  + + +    + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + +  + + + + + + + + + + +  + + + + +  +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + +       + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + +  + + + +      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + +  + + + +  + + + + + + +    + + + + + +  + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + +  + + + + + + + +  + + + + + + + +   + + + + + +  + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + +  + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + +  + + + + + + + + + + +       + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +   + +  +      + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + +   + + + + + + + + +      + + + + + + + + + + + + + + + +  + + + + + + + + + + +    +  + + +  + + + + + + + + + + + + + + +  + + + + + + + +    +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +       + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + +     +      + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +  + + + + + + + + + + + + + + +    +  +      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +  + + + + + + + + + + + + + + + +    +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + +           + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +          + + + + + + + + + + + + + + + + + + + + + + + + +  + +     + + + + + + + + + + + +  +  + +  + + + + +  + +       + + + + + + + + + + + + + + + +  + + + + + + + + + + +  + + + + + + + +     +  + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + +         +  + +   + + + + + + +   + + + + + + + + + + + + + + + + + + + +       3 204 128 1 +   +  + + + + + + + + + + + + + + + + + + + +   +     + +   + + + + + + + + + + + + + + + + +  + + + +      + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + + + + +   + + +  + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + +       + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + +  + + + +  +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + +  + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +   + + + + + + + + + +  + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + +  + + +      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + +   + + + + + + + + + + + + + + + + + + + + + + + + + +  + + +   + + + + + + + + + + + + + + + +  + +  +    + + + + + + + + + + +  + + + + +    + + + + + + +  + + +  + + + +     + + + + + + + + + +  + + + +     + + + + + + + + + + + + + + +  +  + + + +     + + + + + + +   +  + + + +      +    + +    +  + + + + +   + + + +   + + +  + +   + + +  +    + + + + + +  + +    + +      + + + + +  +  +  + +   + + + +  +  + + + + + + + + +      + + + + + +  + +  + + + + + + + + + +       + + + + + + + + + + + + + + + + +     + + + + + + + + +    + + + + + + + + + + +     + + + + + +  + +   + + + + + + + + + +    + + + + + + + + +  +      + + + + +       + + + + + + + +       + +  + + + + + + + + + +        + + + + +          + + + + +            + + + + + +            + + + +  +        +   + +          + +        + +  +       +  + + + + + + + +      +  + + + +  + + + +       +  + + +        + + + + + +  + +          +          + + + + + +         + + + + +           + + + +             + + +         + + +            + + + + + + +           + + + + + + + + + +   +       + + + + + + + +  + + +         + + + + +          + + + + +  +            + + + +               + +  + +           +           + +                           + + + +             + + + +  + + +          + + + +   +          + + + + + + +        + +   +       + +        +       + +            +   + +              +                   + +                     +                    + + + + + + + + + + +                  + + + +                                 +                                                 + + +  + +              + + + +              + +                                                                                                                                                                                                                                                                                                +                                                                                                   +                  + + +                                                                                            + + +             +                               6 184 6 1 + +   +       + + + + + + + + + +  + + + + + + + + + +      + + + + + + + + + +  +       + + + + + + + + +  + + + +   +   + + + + + + + + + +   +  + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  9 176 7 1 +      C 180 7 1 +      + + +          F 12 106 1 +      12 12 106 1 +   + + +15 184 5 1 +         + + + + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + +   + +  +  +3C 192 71 1 + +    !"#  $%" &$%'()**+, +-,./0%1  +23""%&4*./5%672371 +%"89:;&<""""=1(6">> ?"""""""@1(AB=">CAD 1EF G;$%H7:5"""""""""I ")J@CK  LGE 3""""""MN"OP1> 昏vv瓜悉十\vvv新vvvvvvvvvvvvvvvxrr1  #OOOOOOOOOOjaY \jjjjjjjjjjjjjjjjjjjjjvN8jjvvvvvvvvvvvvvvvvvvvvvv,即叩vvvvvvvvvv!調軌飴顛v況芝十波vv>扱vvvvvvvvvvvvvvvvvvv !OOOOOjjjjcw( xjjjjjjjjjjvxMw\jjjjjjjxfvvvvvvvQvvvvvvvvvvv#Xvvvvvvvvvvvvvvvvv徹顛祁祁祁祁=xx鳩敬vv扱v媾叔催新avvvvvvvvvvvvvvvvvvvvvvvvvD4+* +20cjjjjjjjjjjjjx[ wjjjjjjxX YUvvvvvvvv wvvvvLurvvf丿vvvvvvvvvvvv\vvvvvv惇祁栗v愀{vvvvvvx扱v票avvx冥十型警vvvvvvvvvvvvvvvvvvvvvvvvvvvvYe!cjjjjjjjjjjjjjjjjjjj{&xjjjjjj1*vvvvvvvvLVvvvGvvvvvvvvv斛僊vvvv\>>xvvx読斤{vvvvv杣祁慧vx扱rvvvvvvv天v催契vvvv能十憩vvvvvvvvvvvvvvvvvvvvvvvv槿t*) rjjjjjjjjjjjjjjjjjjjjjjjjjvvvvv  +vvvvvvvvvvvvvvvvvvvvvvvvvvvvvx些瓢湎暗vv扱祁叔\vvv>澤\碍rv儀wvvvvvvv埒傾v{犒vvvvvx\vvvvvvvvvvvvvvvvvvvNWVkkkkk--*) wjjjjjjjjjjjjjjjjjjjjvvvvvvvvvvYUxvvvvvvvvNWvvvvvvvvvvv!慨鰭vvvv0埒様祁祁祁vv彪繋圭vv典xEvvc垠吮\匏祁rvE\七v壟v{扱v\扱桁琅唐叔\vvvxvvvvvvvvvvvvvvvvvvvv|qI111111 QxjjjjjjjjnwxvvvvvvvvvvvvvvvvvvfLW81X醍僊v謬厭淌匱祁所蟒酬畦v碩勣r{犯匱祁v\扱v\七結悉vv桟v七祁殊該\vvvvvvvvvvvvvvvvvvvvpu1 1rjjjjjvvvr Lvvvvvvvvvvvvvvvvvvvp 1up迯斫vvv v或祁祁十啓呷關饅祁Mvrv>道牆斗孚白軍vv桟v七圭vvv票\vvxr\{xvvvvvvvvvvvvvvvvvvvquvvvvvvvvvQ  ovvvvvvvvvvxaw#8uYsvvvvvvvvvvvv天祁紗!xvvvv頌酬vv遁甜鉄>\十v拏\vv遊6vvv\xvvvvvvvvvvvvvvvvvvvvhk)uvvvvvvvvv| 1 WvvvfI1 7vvvvvvvvvvvvvvv7祁xvvvvvvvv晩蟒vx愀敬xvvvvx診蟒\v>扱vvv査rvvvvvvvvvvvvvvvvvvvvvt3]***kkk7xvvvvvvvvx+_D*oe  tvvvvvvvvvvvvvvv\祁茎rvvvvv!劾匳rvx羞啓蛤各灌羞十vx酉>vvvvvvvvvvvvvvvvvvvvvvt + +::::**:vvvvvvvvva~QlD s*vvvvvvvvvvvvvvvvv七祁芥嚇衿堙貅掲vv彪祁型顛郡r>\vvvvvvvvvvvvvvvvvvvvvvGktvvx|WV1YYkTvvvvvvvvvvvvpvvvvv慣祁型甜祁圭薯祁掲v碍祁密vvvvvvvvvvvvvvvvvvvvv  8o`  +vvvvvvvvvvvv||vvvvvv新祁祁祁畦蛤備酬畦xvvxxvvvvvvvvvvvvvvvvvvv|f  Yvvvvvvvvvvvv8vvvvvv\涎祁揚>\vvvv\圭祁rvvvvvvvvvvvvvvvvvvvNfX11 vvvvvvvvvvvvvvvvvvvx扱祁vvvvvvvvv唐裸\vvvvvvvvvvvvvLG111111 vvvvvvvvvvvvvfvvvvvvvv拏祁vvvvvvvvv\vvvvvvvvvv櫟u vvvxrvvvvvv8vvvvvvvvE啓vvvvvvvvvvvvvvL:::::: +ku7vvvv\vvvvvvvvvvvvvv\vvvvvvvvLG klvvvv\甸xvvvvpvvvvvvvvvvvvvvvvvN vvvvvvvvvvvvqvvvvvvvvvvvvf8u1vvvvvvvvvvvv8vvvvvv81111111 ivvvvvvvvvvvva#L*1 +zvvvvvvvvvvvvv7*: dvvvvvvvvvvvkvvvvvv$t7 u +w|- ue  1E 96 18 1 +  +    + + + + + + + + + + + + + + +   + + + +   + + + + + + + + + +  + +  + +  + + + + +  + + +  + + + +  + + +  + + +  + + + +    + +   + + + + +  + + + + +     + + + + + + + + + + + + +   + + + +  + + + + + + + + +    + +  +   + + +  + + + +      + + + + +  + +      + + + + +  + +  +    +  +  + + + + + + + + + + + +  + + + + + + + + +   + + + + + + + + +  + + + + + +  + +  + + + + + +  + + +  +   +  + + + + +   + + + + + + + + +  + +   + + + +  + + + + +  + + + +  +        21 96 31 1 + +     +  +    + +  +     + +  + + +     + + + +  + + +   +    + + + + + +  + +     + + + + + +     +  +  + +   +    + +       +       +     +  +    + + +  + +     + +   + + +   + + +   + + + + + +  + +  +   + +  + + + + + + + + + + + +   +    + + + + + + + + + + + + +   + + +   + + + + + + + + + + + + +   +   + + + + + + +            24 196 7 1 +     +         27 192 7 1 +  +    2A 188 6 1 + + + + + + + + + + + +  +   +          +  +  + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + +   + + +      +  + + + + + + + + + + + + + + + +  + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + +   + + + + + +   + +  + + + + + + + + + + + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + + + +  + + + + + +   + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + +                  2D 184 5 1 + + + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + +   + + + +    + + + +  + + + + + + + + + + + + + + + + + + + + + + + +    + + +    + +  + + +     + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +  + + +  + + + +  + + +   + + +  +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + +   + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + 30 204 128 1 +                         +                                                                     +                                            +         +           + + + +                                      +              + +                +                +             +                         + +           +                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     +                +                                                                                                                                                               + +                                +              + +                            + +  +              + + + +  +            + +             + + +             + +                                                                                                                                                                                                 +                                                                                                                                                                                                                                                                                    +                                                +                                           33 204 128 1 +                                                                                                                                                                                                                                                                                                                            +    +     +    + +              +       + +       + +         + +            +                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              36 12 99 1 +  + + + + + + + + + +   + + + 39 12 101 1 +            +   + +  + +   NNSLAB1_P 22 +vBU>4:61-)%n!M,  fE$RZRLGO_P 255 + E$ 5555dc0,0 +ASM> miscimg.tbl +GLO> miscimg.glo +; +COF> +wwfselbk.img +---> ATT_TXT,ATTPL_G +CON> +GAMEWIN2.IMG +---> CRUTPLTG,SPEAR,SHADOW01,SHADOW02 +; +NAMES.IMG +---> HART,SHAWN,SEC,WINS,RAZOR +---> BAMBAM,DOINK,UNDER,YOKO,LEX +; +ZON> +;MJT Start +casket.img +---> HAND01,HAND02,HANDL03,HANDL04,HANDL05,HANDL06,HANDL07A,HANDL07B,HANDR03 +---> HANDR04,HANDR05,HANDR06,HANDR07,COFFIN01,COFFIN02,COFFIN03,COFFIN04 +---> COFFIN05,MATCOF01,MATCOF02,MATCOF03,MATCOF04,MATCOF05A,MATCOF05B +---> COFFIN6A,COFFIN6B,TMBSTN01,TMBSTN02,TMBSTN03,TMBSTN04,TMBSTN05,TMBSTN06 +---> TMBSTN07,TMBSTN08 +dnkball.img +---> BALLD05A +;,BALLR02A +;---> BALLR04A,BALLR06A,BALLR08A,BALLR10A +;---> BALLR12A,BALLR14A,BALLR16A +glove.img +---> GLVSHT01,GLVSHT02,GLVSHT03,GLVSHT04,GLVSHT05,GLVSHT06,GLVSHT07,GLVSHT08 +---> GLVSHT09,GLVBLK01,GLVBLK02,GLVBLK03,GLVBLK04,GLVBLK05,GLVBLK06,GLVBLK07 +---> GLVBLK08,GLVBLK09,GLVRUN01,GLVRUN02,GLVRUN03,GLVRUN04,GLVRUN05,GLVRUN06 +---> GLVGRB01,GLVGRB02,GLVGRB03,GLVGRB04,GLVGRB05,GLVGRB06,GLVGRB07,GLVGRB08 +---> GLVGRB09,GLVGRB10 +fireball.img +---> FIRBAL01,FIRBAL02,FIRBAL03,FIRBAL04,FIRBAL05,FIRBAL06,FIRBAL07,FIRBAL08 +---> FIRBAL09,FIRBAL10 +;MJT End +; +; +;JMS Start +COF> +arrow10.img +---> ARR10_UP,ARR10_UT,ARR10_TW,ARR10_TD,ARR10_DN +CON> +;JMS End +nuchoice.img +---> HEAD,COOP +dnk_mjl.img +---> D4PN5L04,D4PN5L05 +bam_mjl.img +---> BCDARM02,BCDARM04,BCDARM05,BCDARM06,BCDARM08 +und_mjl.img +---> UARMPN09 +mkpower.img +---> MKCOIN_01,MKCOIN_02,MKCOIN_03,MKCOIN_04,MKCOIN_05,MKCOIN_06,MKCOIN_07 +---> MKCOIN_08,MKCOIN_09,TRADEMARK +mkvs.img +---> MKLIGHT1,MKLIGHT2,MKLIGHT3,MKLIGHT4,MKLIGHT5,MKLIGHT6,MKLIGHT7,MKLIGHT8 +---> MKLIGHT9,MKLIGHT10,MKLIGHT11,MKLIGHT12,MKLIGHT13,MKLIGHT14,MKLIGHT15,MKLIGHT16 +---> MKLIGHT17,MKLIGHT18,MKLIGHT19,MKLIGHT20 +---> I_DRAGON,I_LIGHTNING,I_MK,I_RAIDEN,I_SHOKAHN,I_THREE,I_YINYANG,I_GORO +---> I_QUESTION,I_SKULL +---> BOX2 +CON> +firewrk4.img +---> FWEXPA01,FWEXPA02,FWEXPA03,FWEXPA04,FWEXPA05,FWEXPA06 +POF> +---> FWEXPA07,FWEXPA08 +---> FWEXPA09,FWEXPA10,FWEXPA11,FWEXPB01,FWEXPB02,FWEXPB03,FWEXPB04,FWEXPB05 +---> FWEXPB06,FWEXPB07,FWEXPB08,FWEXPB09,FWEXPB10,FWEXPB11,FWFLAR01,FWFLAR02 +---> FWFLAR03,FWFLAR04,FWFLAR05,FWFLAR06,FWFLAR07,FWFLAR08,FWFLAR09,FWFLAR10 +---> FWFLAR11,FWFLAR12,FWFLAR13 +PON> +bladesp.img +---> BLDSPA01,BLDSPA02,BLDSPA03,BLDSPA04,BLDSPA05,BLDSPA06,BLDSPA07,BLDSPA08 +---> BLDSPA09,BLDSPA10,BLDSPB01,BLDSPB02,BLDSPB03,BLDSPB04,BLDSPB05,BLDSPB06 +---> BLDSPB07,BLDSPB08,BLDSPC01,BLDSPC02,BLDSPC03,BLDSPC04,BLDSPC05,BLDSPC06 +---> BLDSPC07,BLDSPC08,BLDSPD01,BLDSPD02,BLDSPD03,BLDSPD04,BLDSPD05,BLDSPD06 +---> BLDSPD07,BLDSPD08 +stands.img +---> BAM_STAND,DOINK_STAND,TAKER_STAND,SHAWN_STAND,YOKO_STAND,RAZOR_STAND +---> LEX_STAND +barbutt.img +---> BARBUTT +tipstuff.img +;MJL Start +POF> +---> JMSTIP,SALTIP,MJTTIP,EUGTIP,JOSTIP,JAKTIP,TONTIP +---> MIKTIP,SHNTIP +PON> +---> MUGBAK,MUGFRNT +;MJL End +;infowin.img +;---> infobox,infoboxy,message2 +powerups.img +PON> +---> MOVNAMES +POF> +---> INSTCOMB,DRONMETR,RINGOUT,NOBLOCKA,SANSRING,CHAIRMAT,HYPERSPD,BUDDY +PON> +glowpals.img +---> CHGLWB1,CHGLWB2,CHGLWB3,CHGLWB4,CHGLWB5,CHGLWB6,CHGLWB7,CHGLWB8,CHGLWB9 +---> CHGLWT1,CHGLWT2,CHGLWT3,CHGLWT4,CHGLWT5,CHGLWT6,CHGLWT7,CHGLWT8,CHGLWT9 +wwfinfo.img +ZOF> +---> INFOBOX,CONTROLI,OUTRING,TORUN +ZON> +skil2.img +---> BONUSBAR +---> HIGHRSKC,PWRMVEC,CMBOREVC,FIVEWIN,TWOROUND,FASTVIC,DOUBPERF,BIGCOME +---> PERFECT,NOBLOCK,SKILBON +---> BICON_10 +---> BICON_10A,BICON_20A,BICON_30A,BICON_40A,BICON_50A,BICON_60A +---> BICON_70A,BICON_80A,BICON_100A +;ZON> +newicons.img +---> BICON_1,BICON_1A,BICON_5,BICON_5A,BICON_90A +choicebk.img +POF> +---> INTER,WORLD +PON> +---> CHOICBK,CHOGLOB_A,CHOGLOB_B,CHOGLOT_A,CHOGLOT_B +---> CHSHDB_A,CHSHDB_B,CHSHDT_A,CHSHDT_B +ZOF> +eyebig.img +---> BIGEYE01,BIGEYE02,BIGEYE03,BIGEYE04,BIGEYE05,BIGEYE06,BIGEYE07,BIGEYE08 +sungls.img +---> BGLAS01,BGLAS02,BGLAS03,BGLAS04,BGLAS05,BGLAS06,BGLAS07,BGLAS08,BGLAS09 +---> BGLAS10,BGLAS11,BGLAS12,BGLAS13,BGLAS14,BGLAS15 +perfect.img +---> PERFCT01,PERFCT02,PERFCT03,PERFCT04,PERFCT05,PERFCT06,PERFCT07 +---> PERFCT08,PERFCT09,TIMEEX01,TIMEEX02,TIMEEX03,TIMEEX04,TIMEEX05 +---> TIMEEX06,TIMEEX07,TIMEEX08,TIMEEX09,DISQUA01,DISQUA02,DISQUA03 +---> DISQUA04,DISQUA05,DISQUA06,DISQUA07,DISQUA08,DISQUA09 +---> DOUBLE01,DOUBLE02,DOUBLE03,DOUBLE04,DOUBLE05 +---> DOUBLE06,DOUBLE07,DOUBLE08,DOUBLE09 +---> PERFDS01,PERFDS02,PERFDS03,PERFDS04,PERFDS05,PERFDS06,PERFDS07 +---> PERFDS08,TIMEDS01,TIMEDS02,TIMEDS03,TIMEDS04,TIMEDS05,TIMEDS06 +---> TIMEDS07,TIMEDS08,DISQDS01,DISQDS02,DISQDS03,DISQDS04,DISQDS05 +---> DISQDS06,DISQDS07,DISQDS08 +sweat.img +---> COUGHA01,COUGHA02,COUGHA03,COUGHA04,COUGHA05,COUGHA06,COUGHA07 +---> COUGHA08,COUGHA09,SPITUP01,SPITUP02,SPITUP03,SPITUP04,SPITUP05 +---> SPITUP06,SPITUP07,SPITUP08,SPITUP09 +---> SPITAN01 +---> SPITAN02,SPITAN03,SPITAN04,SPITAN05,SPITAN06,SPITAN07,SPITAN08 +---> SPITAN09 +---> SPRAYB01,SPRAYB02,SPRAYB03,SPRAYB04,SPRAYB05 +---> SPRAYB06,SPRAYB07,SPRAYB08,SPRAYC01,SPRAYC02,SPRAYC03,SPRAYC04 +---> SPRAYC05,SPRAYC06,SPRAYC07,SPRAYC08,SPRAYC09,SPRAYC10,WAD_A_01 +---> WAD_A_02,WAD_A_03,WAD_A_04,WAD_A_05,WAD_A_06,WAD_A_07,WAD_A_08 +---> WAD_A_09,WAD_B_01,WAD_B_02,WAD_B_03,WAD_B_04,WAD_B_05,WAD_B_06 +---> WAD_B_07,WAD_B_08,WAD_B_09,WAD_C_01,WAD_C_02,WAD_C_03,WAD_C_04 +---> WAD_C_05,WAD_C_06,WAD_C_07,WAD_C_08,WAD_C_09,WAD_C_11,WAD_C_12 +---> WAD_D_01,WAD_D_02,WAD_D_03,WAD_D_04,WAD_E_01,WAD_E_02,WAD_E_03 +---> WAD_E_04,WAD_E_05,WAD_E_06,WAD_E_07,WAD_E_08,WAD_E_09,WAD_E_10 +---> WAD_E_11,WAD_F_01,WAD_F_02,WAD_F_03,WAD_F_04,WAD_F_05,WAD_F_06 +---> WAD_F_07,WAD_F_08,WAD_F_09,SPLSHA01,SPLSHA02,SPLSHA03,SPLSHA04 +---> SPLSHA05,SPLSHA06,SPLSHB01,SPLSHB02,SPLSHB03,SPLSHB04,SPLSHB05 +---> SPLSHB06 +ZON> +roundplt.img +---> RNDPLAT,RNDNUM_1,RNDNUM_2,RNDNUM_3,RNDNUM_4 +combo.img +---> COMBO_01,COMBO_02,COMBO_03,COMBO_04,COMBO_05,COMBO_06,COMBO_07 +---> COMBO_08,COMBO_09,COMBO_10 +ZOF> +---> SUPER_0,SUPER_1,SUPER_2,SUPER_3,SUPER_4 +---> SUPER_5,SUPER_6,SUPER_7,SUPER_8,SUPER_9,SUPER_10,SUPER_11,SUPER_12 +---> SUPER_13,SUPER_14,SUPER_15,SUPER_16 +ZON> +---> PINHIM01,PINHIM02,PINHIM03,PINHIM04,PINHIM05 +---> PINHIM06,PINHIM07,PINHIM08,PINHIM09,SECWND01 +---> SECWND02,SECWND03,SECWND04,SECWND05,SECWND06,SECWND07,SECWND08 +---> SECWND09 +ZOF> +pwrbarsn.img +---> PWREMPTY +---> FGRN2YEL,FYEL2RED +ZON> +dcslogo.img +---> dcslogo +ZOF> +sparkle.img +---> BSPRKA01,BSPRKA02,BSPRKA03,BSPRKA04,BSPRKA05,BSPRKA06,BSPRKA07 +---> BSPRKA08,BSPRKA09,BSPRKA10,BSPRKA11,BSPRKA12,BSPRKA13,BSPRKA14 +---> BSPRKA15,BSPRKB01,BSPRKB02,BSPRKB03,BSPRKB04,BSPRKB05,BSPRKB06 +---> BSPRKB07,BSPRKB08,BSPRKB09,BSPRKB10,BSPRKB11,BSPRKB12,BSPRKB13 +---> BSPRKB14,BSPRKB15 +---> SPRKLA01,SPRKLA02,SPRKLA03,SPRKLA04,SPRKLA05,SPRKLA06,SPRKLA07 +---> SPRKLA08,SPRKLA09,SPRKLA10,SPRKLA11,SPRKLA12,SPRKLA13,SPRKLB01 +---> SPRKLB02,SPRKLB03,SPRKLB04,SPRKLB05,SPRKLB06,SPRKLB07,SPRKLB08 +---> SPRKLB09,SPRKLB10,SPRKLB11,SPRKLB12,SPRKLB13,SPRKLC01,SPRKLC02 +---> SPRKLC03,SPRKLC04,SPRKLC05,SPRKLC06,SPRKLC07,SPRKLC08,SPRKLC09 +---> SPRKLC10,SPRKLC11,SPRKLC12,SPRKLC13 +explode.img +---> XPLODA01,XPLODA03,XPLODA04,XPLODA05,XPLODA06,XPLODA07 +---> XPLODA08,XPLODA09,XPLODA10,XPLODB01,XPLODB03,XPLODB04 +---> XPLODB05,XPLODB06,XPLODB07,XPLODB08,XPLODB09,XPLODB10,XPLODC01 +---> XPLODC03,XPLODC04,XPLODC05,XPLODC06,XPLODC07,XPLODC08 +---> XPLODC09,XPLODC10 +;---> SMOK1_01,SMOK1_02,SMOK1_03,SMOK1_04,SMOK1_05,SMOK1_06,SMOK1_07,SMOK1_08 +;---> SMOK1_09,SMOK1_10,SMOK1_11,SMOK1_12 +---> SMOKE01,SMOKE02,SMOKE03,SMOKE04,SMOKE05 +---> SMOKE06,SMOKE07,SMOKE08,SMOKE09,SMOKE10 +---> SMOKEB01,SMOKEB02,SMOKEB03,SMOKEB04,SMOKEB05 +---> SMOKEB06,SMOKEB07,SMOKEB08,SMOKEB09,SMOKEB10 +---> SALTA01,SALTA02,SALTA03,SALTA04,SALTA05 +---> SALTA06,SALTA07,SALTA08,SALTA09,SALTA10 +---> SALTB01,SALTB02,SALTB03,SALTB04,SALTB05 +---> SALTB06,SALTB07,SALTB08,SALTB09,SALTB10,SALTB11 +;MJT Start +---> NAPALM01,NAPALM02,NAPALM03,NAPALM04,NAPALM05,NAPALM06 +ghost.img +---> RPR01,RPR02,RPR03,RPR04,RPR05 +---> REPRFL01,REPRFL02,REPRFL03,REPRFL04,REPRFL05,REPRFL06,REPRFL07,REPRFL08 +---> REPRMS01,REPRMS02,REPRMS03,REPRMS04,REPRMS05,REPRMS06,REPRMS07 +; +MON> +jamie.img +---> SKULL01,SKULL02,SKULL03,SKULL04,SKULL05,SKULL06,SKULL07,SKULL08,SKULL09 +---> SKULL10,SKULL11,SKULL12,SKULL13,BONE01,BONE02,BONE03,BONE04,BONE05 +---> BONE06,BONE07,BONE08,BONE09,BONE10,BONE11,BONE12,BONE13,BONE14,BONE15 +---> BONEB01,BONEB02,BONEB03,BONEB04,BONEB05,BONEB06,BONEB07,BONEB08,BONEB09 +---> BONEB10,BONEB11,BONEB12,BONEB13,BONEB14,BONEB15,LAMB01,LAMB02,LAMB03 +---> LAMB04,LAMB05,LAMB06,LAMB07,LAMB08,LAMB09,LAMB10,LAMB11,LAMB12,LAMB13 +---> LAMB14,LAMB15,HART01,HART02,HART03,HART04,HART05,HART06,HART07,HART08 +---> HART09,HART10,HART11,HART12,HART13,HART14,HART15 +---> FISHF01,FISHF02,FISHF03,FISHF04,FISHF05,FISHT01,FISHT02 +---> FISHT03,FISHT04,FISHT05,FISHT06,FISHT07,FISHT08,FISHT09,FISHT10,FISHT11 +---> FISHT12,FISHT13,FISHT14,FISHT15,BLADE01,BLADE02,BLADE03,BLADE04,BLADE05 +---> BLADE06,BLADE07,BLADE08,BLADE09,BLADE10,STAR01,STAR02,STAR03,STAR04 +---> STAR05,STAR06,STAR07,STAR08,STAR09,STAR10,STAR11,STAR12,STAR13,STAR14 +---> DBELL01,DBELL02,DBELL03,DBELL04,DBELL05,DBELL06,DBELL07,DBELL08,DBELL09 +---> DBELL10,DBELL11,DBELL12,DBELL13,DBELL14,DBELL15,BATSD01,BATSD02,BATSD03 +---> BATSD04,BATSD05,BATBK01,BATBK02,BATBK03,BATBK04,BATBK05 +;,HAND01,HAND02 +;---> HANDL03,HANDL04,HANDL05,HANDL06,HANDL07A,HANDL07B,HANDR03,HANDR04 +;---> HANDR05,HANDR06,HANDR07 +---> TPIE01,TPIE02,TPIE03,TPIE04,TPIE05,TPIE06 +---> TPIE07,TPIE08,GHOST01 +---> GHOST02,GHOST03,GHOST04,GHOST05,GHOHIT01,GHOHIT02,GHOHIT03,GHOHIT04 +---> GHOHIT05,GHOHIT06,GHOHIT07,GHOHIT08,GHOHIT09,GHOHIT10,GHOHIT11,GHOHIT12 +---> GHOHIT13,GHOHIT14,GHOHIT15,GHOHIT16,TOMBFORM01,TOMBFORM02,TOMBFORM03 +---> TOMBFORM04,TOMBSTN01,TOMBSTN02,TOMBSTN03,TOMBSTN04,TOMBSTN05,TOMBSTN06 +---> TOMBSTN07,TOMBSTN08,TOMBSTN09,TOMBSTN010 +---> TOMBSTN011,TOMBSTN012,TOMBSTN013 +MOF> +dizzy.img +---> STARS01,STARS02,STARS03,STARS04,STARS05,STARS06 +tony.img +---> BMDZ01,BMDZ02,BMDZ03,BMDZ04,BMDZ05,BMDZ06 +---> YKDZ01,YKDZ02,YKDZ03,YKDZ04,YKDZ05,YKDZ06,YKDZ07,YKDZ08,YKDZ09 +---> UNDZ01,UNDZ02,UNDZ03,UNDZ04,UNDZ05,UNDZ06 +---> RAZDIZ201,RAZDIZ202,RAZDIZ203,RAZDIZ204,RAZDIZ205,RAZDIZ206 +---> RAZDIZ207,RAZDIZ208 +---> RAZDIZ209,RAZDIZ210 +---> SHNDIZ01,SHNDIZ02,SHNDIZ03,SHNDIZ04,SHNDIZ05,SHNDIZ06 +---> SHNDIZ07,SHNDIZ08,SHNDIZ09,SHNDIZ10 +dnkbuzz.img +---> SPARK1,SPARK2,SPARK3 +wmatch.img +;MJL Start +---> MTCHPLT,MNMEPLT +PON> +---> MATCH +PON> +---> BESTOF3,ROYRUM,ELIMMTCH,TAGTEAM,ONEFALL,LUMBMTCH +;MJL End +---> MVEBAR_R,MVEBAR_B +---> xDAMAGE,HITCOMBO,HITCOMBO2,X0X,X1X,X2X,X3X +---> X4X,X5X,X6X,X7X,X8X,X9X,X0X2,X1X2,X2X2,X3X2,X4X2,X5X2,X6X2,X7X2,X8X2 +---> X9X2,RWINBOX,BWINBOX,RECVR_L,RECVR_R,RECVRBLK +;MJL Start +---> AWDNMPL_R,AWDNMPL_B +POF> +---> BIGHRT,BIGBAM,BIGUND,BIGRAZ,BIGSHN,BIGYOK,BIGDNK +---> BIGLEX +PON> +---> FIRSTFAL,SECNDFAL,MATCHFAL,DIAGLGO_R,DIAGLGO_B +;MJL End +---> ARMBREAK,ARMDRAG,BACKBRKR,BACKDROP,BACKSUPL,BANZAI,BEHMBUTT,BODYSLAM +---> CROSFIRE,DDT,DOBLSNAP,ELBOWDRP,EYERAKER,FACESLAM,FIRESPL,FIRSTATT +---> FLYBUTT,FLYCLOTH,FRANKEN,HAMMER,HEADSLAM,HIGHRISK,HIPTOSS +---> JOYBUZZ,MYSTGLVE,NAPALM,PILEDRV,POGOPILE,RAPIDRND,RAZOREDG +---> REVERS,SCISSOR,SKULLCRK,SLMONKEY,SNAPMIRR,SPEEDKIK,SPLASH,SUNSETFL +---> TOMBPLDR,VERTSUPL +---> danger +---> BIGBOOT,CLAPPER +wwfourm3.img +---> SHNMUG,JASMUG,JAKMUG,EUGMUG,JSHMUG,MIKMUG,MRKMUG,TONMUG,SALMUG +wwficon.img +---> WWFICON01,WWFICON02,WWFICON03,WWFICON04,WWFICON05,WWFICON06,WWFICON07 +---> WWFICON08,WWFICON09,WWFICON10 +; +hitstuff.img +---> BLOOD01,BLOOD02,BLOOD03,BLOOD04,BLOOD05,BLOOD06,BLOOD07,BLOOD08,BLOOD09 +---> BLOOD10,BLOOD11,BLDHIT1,BLDHIT2,BLDHIT3,BLDHIT4,BGBAT01,BGBAT02,BGBAT03 +---> BGBAT04,BGBAT05,PIE01,PIE02,PIE03,PIE04,PIE05,PIE06,PIE07,PIE08 +---> FLAMEA01,FLAMEA02,FLAMEA03,FLAMEA04,FLAMEA05,FLAMEA06,FLAMEA07,FLAMEA08 +---> FLAMEA09,FLAMEA10,CNFETI01,CNFETI02,CNFETI03,CNFETI04,CNFETI05,CNFETI06 +---> SWEAT1,SWEAT2,SWEAT3,SWEAT4,SWEAT5,SPIT1,SPIT2,SPIT3,SPIT4,PINSHAD1 +---> PINSHAD2,PINSHAD3,PINSHAD4,PINSHAD5,PIN01,PIN02,PIN03,PIN04,PIN05,PIN06 +---> PIN07,PIN08,PIN09,PIN10,PIN11,PIN12,PIN13,PIN14,PIN15,BALL01,BALL02 +---> BALL03,BALL04,BALL05,BALL06,BALL07,BALL08,BALL09,BALL10,BALL11,BALL12 +---> BALL13,BALL14,BALL15,TURKEY1,TURKEY2,TURKEY3,TURKEY4,TURKEY5,TURKEY6 +---> TURKEY7,TURKEY8,FIREBALL1,FIREBALL2,FIREBALL3,FIREBALL4,FIREBALL5 +---> FIREBALL6,CLOBHIT01,CLOBHIT02,CLOBHIT03,CLOBHIT04 +;wwflogo.img +;---> WWFLGO1 +xplosion.img +PON> +---> CLDB1ORNG,CLDB1WHT,CLDB1LGRY,CLD1A +;---> CLDB1GRN,CLDB1PURP,CLD2,CLDB1,CLDB1YELL +POF> +;,CLD4A,CLD4B +---> CLD5,CLD6,CLD7,CLD8,CLD9,CLD10,CLD11 +;,CLD3,CLD4 +---> CLDB2,CLDB3,CLDB4 +PON> +credit.img +COF> +---> credit,font61,font62,font63,font64,font65,font66,font67,font68 +---> font69,font60,freeply +CON> +; +wwfstuf.img +---> shadow +;---> TNUM_0,TNUM_1,TNUM_2,TNUM_3,TNUM_4,TNUM_5,TNUM_6,TNUM_7,TNUM_8,TNUM_9 +---> crplate,jmeter +meters.img +---> LBAR_GENB,LBAR_GENC +---> NAM_BAM,NAM_BAM2,NAM_BRT,NAM_DNK,NAM_LEX,NAM_RZR,NAM_SHN,NAM_SHN2 +---> NAM_UND,NAM_YOK,RBAR_GENB,WF_INSERT,WF_START +---> SHORTYOK,SHORTLEX,SHORTSHN,SHORTRZR,SHORTBAM,SHORTUND,SHORTDNK,SHORTHRT +---> WSF10SLSx +wwfmugs.img +---> RRMUG_A,RRMUG_B,RRMUG_C,RRMUG_D,RRMUG_E,RRMUG_F,RRMUG_G,RRMUG_H,UNMUG_A +---> UNMUG_B,UNMUG_C,UNMUG_D,UNMUG_E,UNMUG_F,UNMUG_G,UNMUG_H,BMMUG_A,BMMUG_B +---> BMMUG_C,BMMUG_D,BMMUG_E,BMMUG_F,BMMUG_G,BMMUG_H,YKMUG_A,YKMUG_B,YKMUG_C +---> YKMUG_D,YKMUG_E,YKMUG_F,YKMUG_G,YKMUG_H +---> BHMUG_A,BHMUG_B,BHMUG_C,BHMUG_D,BHMUG_E +---> BHMUG_F,BHMUG_G,BHMUG_H +---> LXMUG_A,LXMUG_B,LXMUG_C,LXMUG_D,LXMUG_E,LXMUG_F,LXMUG_G +---> LXMUG_H,DKMUG_A,DKMUG_B,DKMUG_C,DKMUG_D,DKMUG_E,DKMUG_F,DKMUG_G,DKMUG_H +---> SMMUG_A,SMMUG_B,SMMUG_C,SMMUG_D,SMMUG_E,SMMUG_F,SMMUG_G,SMMUG_H +ZON> +; +attbars.img +---> ATTMTR_0,ATTMTR_1,ATTMTR_2,ATTMTR_3,ATTMTR_4,ATTMTR_5,ATTMTR_6,ATTMTR_7 +---> ATTMTR_8,ATTMTR_9 +ZOF> +glovehit.img +---> GLVHIT01,GLVHIT02,GLVHIT03,GLVHIT04,GLVHIT05,GLVHIT06,GLVHIT07,GLVHIT08 +---> GLVHIT09 +; +special.img +---> BAMFIREA1,BAMFIREA2,BAMFIREA3,BAMFIREA4,BAMFIREA5,BAMFIREA6,BAMFIREB1 +---> BAMFIREB2,BAMFIREB3,BAMFIREB4,BAMFIREB5,BAMFIREB6,FIREHIT01,FIREHIT02 +---> FIREHIT03,FIREHIT04 +;,SMOKE01,SMOKE02,SMOKE03,SMOKE04,SMOKE05 +---> CHAIN01,CHAIN02,CHAIN03,CHAIN04,CHAIN05,CHAIN06 +---> SALT01,SALT02,SALT03,SALT04,SALT05 +---> SALT06,SALT07,SALT08,SALT09 +COF> +ropestuf.img +---> ROPE_F_R,ROPE_F_W,ROPE_F_B,ROPE_S_Ra,ROPE_S_Rb,ROPE_S_Wa,ROPE_S_Wb +---> ROPE_S_Ba,ROPE_S_Bb,ROPE_B_R,ROPE_B_W,ROPE_B_B,RPFBUP01,RPFBUP02 +---> RPFBUP03,RPFBUP04,RPFBUP05,RPFBDN01,RPFBDN02,RPFBDN03 +---> RPFBDN04,RPFBDN05,RPBBUP01,RPBBUP02,RPBBUP03,RPBBUP04 +---> RPBBUP05,RPBBDN01,RPBBDN02,RPBBDN03,RPBBDN04,RPBBDN05 +---> RPSBUP01a,RPSBUP01b,RPSBUP02a,RPSBUP02b,RPSBUP03a,RPSBUP03b +---> RPSBUP04a,RPSBUP04b,RPSBUP05a,RPSBUP05b,RPSBUP06a,RPSBUP06b,RPSBDN01a +---> RPSBDN01b,RPSBDN02a,RPSBDN02b,RPSBDN03a +ZOF> +---> RPSBDN03b +ZON> +---> RPSBDN04a,RPSBDN04b +---> RPSBDN05a,RPSBDN05b,RPSBDN06a,RPSBDN06b,RPSBIN01a,RPSBIN01b,RPSBIN02a +---> RPSBIN02b,RPSBIN03a,RPSBIN03b,RPSBIN04a,RPSBIN04b,RPSBIN05a,RPSBIN05b +---> RPSBIN06a,RPSBIN06b,RPSBIN07a,RPSBIN07b,RPSBIN08a,RPSBIN08b,RPSBOU01a +---> RPSBOU01b,RPSBOU02a,RPSBOU02b,RPSBOU03a,RPSBOU03b,RPSBOU04a,RPSBOU04b +---> RPSBOU05a,RPSBOU05b,RPSBOU06a,RPSBOU06b,RPSBOU07a,RPSBOU07b,RPSBOU08a +---> RPSBOU08b,RPSS1_01a,RPSS1_01b,RPSS1_02a,RPSS1_02b,RPSS1_03a,RPSS1_03b +---> RPSS1_04a,RPSS1_04b,RPSS1_05a,RPSS1_05b,RPSS1_06a,RPSS1_06b,RPSS2_01a +---> RPSS2_01b,RPSS2_02a,RPSS2_02b,RPSS2_03a,RPSS2_03b,RPSS2_04a,RPSS2_04b +---> RPSS2_05a,RPSS2_05b,RPSS2_06a,RPSS2_06b,RPSS3_01a,RPSS3_01b,RPSS3_02a +---> RPSS3_02b,RPSS3_03a,RPSS3_03b,RPSS3_04a,RPSS3_04b,RPSS3_05a,RPSS3_05b +---> RPSS3_06a,RPSS3_06b,RPSS4_01a,RPSS4_01b,RPSS4_02a,RPSS4_02b,RPSS4_03a +---> RPSS4_03b,RPSS4_04a,RPSS4_04b,RPSS4_05a,RPSS4_05b,RPSS4_06a,RPSS4_06b +---> RPSS5_01a,RPSS5_01b,RPSS5_02a,RPSS5_02b,RPSS5_03a,RPSS5_03b,RPSS5_04a +---> RPSS5_04b,RPSS5_05a,RPSS5_05b,RPSS5_06a,RPSS5_06b,RPDS1_01a,RPDS1_01b +---> RPDS1_02a,RPDS1_02b,RPDS1_03a,RPDS1_03b,RPDS1_04a,RPDS1_04b,RPDS1_05a +---> RPDS1_05b,RPDS1_06a,RPDS1_06b,RPDS1_07a,RPDS1_07b,RPDS1_08a,RPDS1_08b +---> RPDS2_01a,RPDS2_01b,RPDS2_02a,RPDS2_02b,RPDS2_03a,RPDS2_03b,RPDS2_04a +---> RPDS2_04b,RPDS2_05a,RPDS2_05b,RPDS2_06a,RPDS2_06b,RPDS2_07a,RPDS2_07b +---> RPDS2_08a,RPDS2_08b,RPDS3_01a,RPDS3_01b,RPDS3_02a,RPDS3_02b,RPDS3_03a +---> RPDS3_03b,RPDS3_04a,RPDS3_04b,RPDS3_05a,RPDS3_05b,RPDS3_06a,RPDS3_06b +---> RPDS3_07a,RPDS3_07b,RPDS3_08a,RPDS3_08b,RPDS4_01a,RPDS4_01b,RPDS4_02a +---> RPDS4_02b,RPDS4_03a,RPDS4_03b,RPDS4_04a,RPDS4_04b,RPDS4_05a,RPDS4_05b +---> RPDS4_06a,RPDS4_06b,RPDS4_07a,RPDS4_07b,RPDS4_08a,RPDS4_08b,RPDS5_01a +---> RPDS5_01b,RPDS5_02a,RPDS5_02b,RPDS5_03a,RPDS5_03b,RPDS5_04a,RPDS5_04b +---> RPDS5_05a,RPDS5_05b,RPDS5_06a,RPDS5_06b,RPDS5_07a,RPDS5_07b,RPDS5_08a +---> RPDS5_08b +; +;COF> +;TEMP! --- REMOVE WHEN SHIPPING!!! +;arrows.img +;---> d_up,d_upright,d_right,d_downright +;---> d_down,d_downleft,d_left,d_upleft +;---> d_punch,d_kick,d_block,d_grab,d_turbo,d_zip +;CON> +nlogos4.img +ZOF> +---> WWFCHAL,LEX3,RZR3,SHN3,UND3,YOK3,BAM3,DNK3,HRT3 +ASM> LADDER.TBL +ZON> +MON> +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +ladder.img +;---> HRTLAD01,HRTLAD02,HRTLAD03,HRTLAD04 +;---> HRTLAD05,HRTLAD06,DNKSQRT01,DNKSQRT02,DNKSQRT03 +---> FUJI01,FUJI02,FUJI03,FUJI04 +;,RAZLAD01,RAZLAD02 +;---> RAZLAD03,RAZLAD04,RAZLAD05,RAZLAD06,RAZLAD07,RAZLAD08,RAZLAD09 +;---> RAZLAD10,SHLAD01,SHLAD02,SHLAD03,SHLAD04,SHLAD05,SHLAD06,SHLAD07 +;---> SHLAD08,SHLAD09,SHLAD10 +;---> YOKLAD01,YOKLAD02,YOKLAD03,YOKLAD04,YOKLAD05,YOKLAD06 +;---> UNLAD01,UNLAD02,UNLAD03 +;---> UNLAD04,UNLAD05,UNLAD06,UNLAD07,UNLAD08 +;---> L4SW5A01,L4SW5A02,L4SW5A03,L4SW5A04,L4SW5A05,L4SW5A06,L4SW5A07 +;---> L4SW5A08,L4SW5A09,L4SW5A10 +---> WATER01,WATER02,WATER03,WATER04,WATER05 +---> WATER06,WATER07 +---> BLUURN01,BLUURN02,BLUURN03,BLUURN04,BLUURN05 +;bamspec.img +;---> BAMRISE01,BAMRISE02,BAMRISE03,BAMRISE04,BAMRISE05,BAMRISE06 +;taunts.img +;---> B4SW4B03,B4SW4B04,B4SW4B05,B4SW4B06,B4SW4B07,B4SW4B08 +;---> Y4CO4D01,Y4CO4D02,Y4CO4D03,Y4CO4D04,Y4CO4D05,Y4CO4D06,Y4CO4D07 +;---> Y4CO4D08,D4CO4A01,D4CO4A02,D4CO4A03,D4CO4A04,D4CO4A05,D4CO4A06 +;---> U4CO4B01,U4CO4B02,U4CO4B03,U4CO4B04,U4CO4B05,U4CO4B06,U4CO4B07 +;---> U4CO4B08,S4CO4A01,S4CO4A02,S4CO4A03,S4CO4A04,S4CO4A05,S4CO4A06 +;---> S4CO4A07,S4CO4A08,R4CO4A01,R4CO4A02,R4CO4A03,R4CO4A04,R4CO4A05 +;---> R4CO4A06,R4CO4A07,R4CO4A08,L4C04Z01,L4CO4Z02,L4CO4Z03,L4CO4Z04 +;---> L4CO4Z05,L4CO4Z06,L4CO4Z07,L4CO4Z08,H4SL4C01,H4SL4C02 +;---> H4SL4C03,H4SL4C06,H4SL4C05,H4SL4C04,H4SL4C05,H4SL4C06,H4SL4C07 +;---> H4SL4C08,H4SL4C09 +ASM> DUMMY.TBL +wgsfnt14.img +;Needed to register the palette +---> WGSF14_E +;---> WGSF14_A,WGSF14_B,WGSF14_C,WGSF14_D,WGSF14_E,WGSF14_F,WGSF14_G +;---> WGSF14_H,WGSF14_I,WGSF14_J,WGSF14_K,WGSF14_L,WGSF14_M,WGSF14_N +;---> WGSF14_O,WGSF14_P,WGSF14_Q,WGSF14_R,WGSF14_S,WGSF14_T,WGSF14_U +;---> WGSF14_V,WGSF14_W,WGSF14_X,WGSF14_Y,WGSF14_Z,WGSF14_0,WGSF14_1 +;---> WGSF14_2,WGSF14_3,WGSF14_4,WGSF14_5,WGSF14_6,WGSF14_7,WGSF14_8 +;---> WGSF14_9,WGSF14COM,WGSF14PER,WGSF14SLS,WGSF14QUE,WGSF14EXC,WGSF14DOL +;---> WGSF14AND,WGSF14PCT,WGSF14COL,WGSF14NUM,WGSF14PRL,WGSF14PRR +;wgsfnt20.img +;---> WGSF20_A,WGSF20_B,WGSF20_C,WGSF20_D,WGSF20_E,WGSF20_F,WGSF20_G +;---> WGSF20_H,WGSF20_I,WGSF20_J,WGSF20_K,WGSF20_L,WGSF20_M,WGSF20_N +;---> WGSF20_O,WGSF20_P,WGSF20_Q,WGSF20_R,WGSF20_S,WGSF20_T,WGSF20_U +;---> WGSF20_V,WGSF20_W,WGSF20_X,WGSF20_Y,WGSF20_Z +;---> WGSF20AND,WGSF20PCT +wgsfnt22.img +;---> WGSF22_A,WGSF22_B,WGSF22_C,WGSF22_D,WGSF22_E,WGSF22_F,WGSF22_G +;---> WGSF22_H,WGSF22_I,WGSF22_J,WGSF22_K,WGSF22_L,WGSF22_M,WGSF22_N +;---> WGSF22_O,WGSF22_P,WGSF22_Q,WGSF22_R,WGSF22_S,WGSF22_T,WGSF22_U +;---> WGSF22_V,WGSF22_W,WGSF22_X,WGSF22_Y,WGSF22_Z +;MJL Start +POF> +---> WGSF22_0,WGSF22_1 +---> WGSF22_2,WGSF22_3,WGSF22_4,WGSF22_5,WGSF22_6,WGSF22_7,WGSF22_8 +---> WGSF22_9 +;---> WGSF22COM,WGSF22PER,WGSF22SLS,WGSF22QUE,WGSF22EXC,WGSF22DOL +;---> WGSF22AND,WGSF22PCT +wgsfnt24.img +---> WGSF24_A +PON> +---> WGSF24_B,WGSF24_C,WGSF24_D +POF> +---> WGSF24_E,WGSF24_F,WGSF24_G +---> WGSF24_H,WGSF24_I,WGSF24_J,WGSF24_K,WGSF24_L,WGSF24_M,WGSF24_N +---> WGSF24_O,WGSF24_P,WGSF24_Q,WGSF24_R,WGSF24_S,WGSF24_T,WGSF24_U +---> WGSF24_V,WGSF24_W,WGSF24_X,WGSF24_Y,WGSF24_Z,WGSF24_0,WGSF24_1 +---> WGSF24_2,WGSF24_3,WGSF24_4,WGSF24_5,WGSF24_6,WGSF24_7,WGSF24_8 +---> WGSF24_9,WGSF24COM,WGSF24PER,WGSF24EXC +PON> +;MJL End +;wsfnt10.img +;---> WSF10_A,WSF10_B,WSF10_C,WSF10_D,WSF10_E,WSF10_F,WSF10_G,WSF10_H +;---> WSF10_I,WSF10_J,WSF10_K,WSF10_L,WSF10_M,WSF10_N,WSF10_O,WSF10_P +;---> WSF10_Q,WSF10_R,WSF10_S,WSF10_T,WSF10_U,WSF10_V,WSF10_W,WSF10_X +;---> WSF10_Y,WSF10_Z,WSF10_0,WSF10_1,WSF10_2,WSF10_3,WSF10_4,WSF10_5 +;---> WSF10_6,WSF10_7,WSF10_8,WSF10_9,WSF10PCT,WSF10EXC,WSF10NUM,WSF10PRL +;---> WSF10PRR,WSF10QUE,WSF10COM,WSF10PER,WSF10COL,WSF10DSH,WSF10NUM +;---> WSF10AND,WSF10SLS,WSF10DOL +wsfnt14.img +;needed for palette +;---> WSF14_C +;---> WSF14_A,WSF14_B,WSF14_C,WSF14_D,WSF14_E,WSF14_F,WSF14_G,WSF14_H +;---> WSF14_I,WSF14_J,WSF14_K,WSF14_L,WSF14_M,WSF14_N,WSF14_O,WSF14_P +;---> WSF14_Q,WSF14_R,WSF14_S,WSF14_T,WSF14_U,WSF14_V,WSF14_W,WSF14_X +;---> WSF14_Y,WSF14_Z,WSF14_0,WSF14_1,WSF14_2,WSF14_3,WSF14_4,WSF14_5 +;---> WSF14_6,WSF14_7,WSF14_8,WSF14_9,WSF14COM,WSF14PER,WSF14SLS,WSF14QUE +;---> WSF14EXC,WSF14DOL,WSF14AND,WSF14PCT,WSF14COL,WSF14NUM,WSF14PRL +;---> WSF14PRR +;wsfnt8.img +;---> WSF8_A,WSF8_B,WSF8_C,WSF8_D,WSF8_E,WSF8_F,WSF8_G,WSF8_H,WSF8_I,WSF8_J +;---> WSF8_K,WSF8_L,WSF8_M,WSF8_N,WSF8_O,WSF8_P,WSF8_Q,WSF8_R,WSF8_S,WSF8_T +;---> WSF8_U,WSF8_V,WSF8_W,WSF8_X,WSF8_Y,WSF8_Z,WSF8_0,WSF8_1,WSF8_2,WSF8_3 +;---> WSF8_4,WSF8_5,WSF8_6,WSF8_7,WSF8_8,WSF8_9,WSF8_PCT,WSF8_EXC,WSF8_PRL +;---> WSF8_PRR,WSF8_COM,WSF8_DSH,WSF8_COL,WSF8_PER,WSF8_NUM,WSF8_QUE +;---> WSF8_AND +ASM> NEWFONT.TBL +wgsfnt20.img +;MJL Start +POF> +---> WGSF20_0,WGSF20_1 +---> WGSF20_2,WGSF20_3,WGSF20_4,WGSF20_5,WGSF20_6,WGSF20_7,WGSF20_8 +---> WGSF20_9 +PON> +;MJL End +;ASM> CHAIR.TBL +ASM> miscimg.tbl +GLO> miscimg.glo +ZON> +chair.img +---> CHSWNG01,CHSWNG02,CHSWNG03,CHSWNG04,CHSWNG05,CHSWNG06,CHSWNG07 +---> CHSWNG08,CHSWNG09,CHBRAK01,CHBRAK02,CHBRAK03,CHBRAK04,CHBRAK05 +---> CHBRAK06,CHBRAK07,CHBRAK08,CHBRAK09,CHBRAK10 +COF> +---> CHSWNFL +CON> diff --git a/IMG/MISC_JMS.IMG b/IMG/MISC_JMS.IMG new file mode 100644 index 0000000..e69de29 diff --git a/IMG/MKPOWER.IMG b/IMG/MKPOWER.IMG new file mode 100644 index 0000000..01dd0b1 Binary files /dev/null and b/IMG/MKPOWER.IMG differ diff --git a/IMG/MKVS.IMG b/IMG/MKVS.IMG new file mode 100644 index 0000000..045c34b Binary files /dev/null and b/IMG/MKVS.IMG differ diff --git a/IMG/MUGTEST.BDB b/IMG/MUGTEST.BDB new file mode 100644 index 0000000..e7d0a8c --- /dev/null +++ b/IMG/MUGTEST.BDB @@ -0,0 +1,17 @@ +mugtest 2000 1000 255 0 18 16 +4000 34 104 0 0 +4000 36 151 21 9 +4000 77 150 24 10 +4000 77 105 3 1 +4000 117 151 27 11 +4000 118 106 6 2 +4000 158 107 9 3 +4000 159 151 30 14 +4000 201 154 2A 12 +4000 201 107 C 4 +4000 243 109 F 5 +4000 245 153 33 15 +4000 282 154 1E 8 +4000 284 109 12 6 +4000 327 154 3C 17 +4000 327 110 15 7 diff --git a/IMG/MUGTEST.BDD b/IMG/MUGTEST.BDD new file mode 100644 index 0000000..3daec31 Binary files /dev/null and b/IMG/MUGTEST.BDD differ diff --git a/IMG/NAMEBAR2.IMG b/IMG/NAMEBAR2.IMG new file mode 100644 index 0000000..fd75d16 Binary files /dev/null and b/IMG/NAMEBAR2.IMG differ diff --git a/IMG/NAMES.IMG b/IMG/NAMES.IMG new file mode 100644 index 0000000..11e83ea Binary files /dev/null and b/IMG/NAMES.IMG differ diff --git a/IMG/NEWBIO.BDB b/IMG/NEWBIO.BDB new file mode 100644 index 0000000..309a446 --- /dev/null +++ b/IMG/NEWBIO.BDB @@ -0,0 +1,31 @@ +newbio 2000 1000 255 1 12 29 +bioscrn 748 1182 280 674 +120 765 544 0 0 +100 767 294 3 0 +100 767 427 0 0 +4000 794 529 F 3 +4000 795 322 6 3 +4000 795 317 C 3 +4000 795 428 9 3 +4000 842 462 3C 11 +4000 842 426 36 9 +4000 842 399 2D 6 +4000 842 356 27 4 +4000 884 462 39 10 +4000 896 426 33 8 +4000 904 399 2A 5 +4000 924 426 30 7 +4000 938 317 12 3 +4000 943 529 15 3 +120 969 544 18 0 +100 971 294 1B 0 +100 971 427 18 0 +400 1004 337 24 2 +300 1004 444 24 1 +4000 1117 428 1E 3 +4000 1117 400 21 3 +4000 1117 324 21 3 +300 1153 664 24 2 +400 1212 646 24 2 +300 1212 646 24 1 +300 1212 646 24 1 diff --git a/IMG/NEWBIO.BDD b/IMG/NEWBIO.BDD new file mode 100644 index 0000000..bcb4a4f --- /dev/null +++ b/IMG/NEWBIO.BDD @@ -0,0 +1,1941 @@ +21 +0 204 119 1 +                                            +    +                      +      +                                                                                         +                                 +                      +       +               + +    +                             +         +                                     +              +                                 +  +                         + + +      + +                 +                         + +                                                               +                    +                                          +                      + +                  +                                                                                            +         +             +      +        +     + +                                              + +  +                                                                                                                                        + +  +            +                                                                                                               +                                                                                                                                                                                                           +      +        +                                        +                                                                               +                                                                                        +                                                    +                                                                            +                                                               +                                               + 3 204 133 1 +         + +  +    +   + + + +  + + + + + + + + + + + + + +  + + + + +  + + + + + + + + + + + + + + + + + + +  +  +        + + + + + + + + + +  +   + +    + + + + + + +  + +  + + + + + + + + +  + + + + + + + + +  +  +      + + + + + + + + + +  +    + + + + + + + + + + +   +  +  +  + + + + +      +  +    + + + + + + + + +    + + + + +  + + + + + +  + + +  + + +  + +  + +  +   + + +     + + + +  + + + + + + + + + + + +  + +  + + +  +   + + + + + + + + + + +      +  + + + + +    +    +  +   + + + + + + +    + + +   + + +     + + + +  +  + + + + + + +      +   + +    + + + +   +    + + + + +   +    + + + + + + + +  + +  +  +  + + + + +        + +       +      +   +   +  + +  + +   +  + + + +       + +   +      + +  + + +     +   +  + +  +  + +    + +  +  +         + + + +     +  +  + +   + +   + +   + + + +   +  + + + + + + + + + +    +     +    + + + +       + + +        + + + +  + + +   +  +   +  +  +         +       + + +     + + + + + + + +    + + +  + + + +  + + + +      + + +    + +     + + + +             + + + + + +  + +  + +    + + + + + +    + + +    +   +  +  +    + + + +      + + +  + + +     + + + + + +      + + +   +  +   + +  +    +      +       +      +      + + +     + +  +   +  +  + + +  +   + + + + + + +     +   +  +   + +  +       +     +  + +      + + +  +    + +  + +     +   + + + +   + + + + + +             + + +  +    +  + +    + + + +    +  +    + + + +       + +  +  + + + + + +   +   + + + +   + +      + +     + + + +    +  + +   + + +    + + + + + +    +           + +     +   +  + +  + +   + +  +    +     +    + +    + +    +       +    +          + + +  +   +        +  + + + + +   + + +  + + + +   +   +         + + +           +   + +   +      +          +           + +  +     + +        +   + +                     +   + +        + +      + +     +   + + +     + + +     +      +    +  + +                +  +    +     +      +            +     + +                +   +   + +   +          +      + + +     +   + +      +                +        +     + +       +             +    +     +  +   +            +       +      +                       +   +                         +  + +                            +  +                  +       +                  +        +   +      +                 +           +           +                       +  +    +                 +                + + +         +       +         +                 +  +                          +      +   + +                +   +  + +  +           + +                    + +   +           +                    +      +              +            + +      +           +         +         +                   +          +    +     +           +  +        +  +                + + + + + +                +             +                                      +                             + +        + +                         + +     +                     +   + + + +  + +                              +     + +                      +                    +         + +                    + +     +     +  + + + +     +                                    +                                         +                    +           +                          + +    +                                            + +  +           +   +                        +  +  +               +         +                     +    +                         +    +               +     +                           +                                                                                                                                                 + +                 +          +                  +  + +                  +                                                                                                                                                              +          +        + +          +                                   +                                                                                                                                                                                    + +                              +                                                                 +                              +                                                                                                                                                                      +                                          +                                                                                                                                                                                                                                                                                           +                                                                                                                                                                                                           + +                                    +                                                                           +                  + +                                             F 184 5 1 +         + + + + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + +   + +  +  +6 12 106 1 +      C 180 7 1 +      + + +          9 12 106 1 +   + + +3C 44 39 1 +  /E.wuu~u-鰺浜甅w;:jG#黨糢 -嵐杷/E#慾~蜩択舞霸勹盈架EHaj  ,伸匸嶽靈G00;a m闔m容架猷態猷Σ啾蟇宇輙 acd<ppppn謚余蜃o葩 c聿聆/w縲檳涜寅猷繖-衛認嬲zz&<;HHH/痼~述嬌zqq\幻\ba/-酢Ы沖 +U舉\VV\<r2kqqWWVbUiipp:HHonm-DQPOOOO666LL4L44l4?kkkWV&UIHjiHG/S;h.!-,QPZOON666444L4f4gfee2WVW(=='$$$<<1&&11<;:9/-,)5558766554)32&&&10 $$$/.-,+))))))*))('&&%$!"#"!!      + 36 56 36 1 +eMc..cX.vAM 4)/W)0m/0O9!oeeMc.. .. 0Y)M諡9O^!%oqS泅eMc隼臆算{c}X*閏J|於2+b-)OO%%ooqSqTe(eMc玻..k.M|c0 A4W.dXdY)@YZ99^^!!%$$$$S?eeeMc算斑禊臼廻X) AKIY2dBOO!!$$q$eeMc慨*Y. 澎j洌4Y/03dY` F55O9!%$S楯>eeM 惨幹A }c-))K{A + + K DD5OO!o曦eeMc官|干MeX +22M0`YmjW 捏00)5O!慂"eeKM 官臼崖咳MdbYKMjJa 參+BDO!=症eeKM穏艮臼I冩Kd I( . + BBBO藁楊eeb単臼X.3@ 3l@-,0B4YY0 (599^qebM査Ab.FdLI LjNM|AK-覇jM + +`AD9%田feeKM単sXc.*d[0AA@E-狙7Y (@*DDF*9^%!geKM産N..+Adc-IIK(WH厩Y + ++B**FOO袈\!ebM干憶0'5dt WZKKWJ`.0 e +***webMQ\^^YO9d +I0)b.,'.J + 0 + + +))D**9O7oebMPΔイ\vIIbe(. K{H + +F``Btle@ppfa HY)V A +0 +, + +( ))Oeee(8h6[VaKz Ic + +b + +FAA9e@'9\888f8,E2 +-K AI@I-0 0+ +FFFFe'^;;^9E70 A0`)0Y/13 )*)+)*A&('&!%;O66nnEI-KdMZWKcI- +I`FFF@'&%q=#< ; :&!98765.43210 +00/.-,++*))(''&%$#" !    + + + 2D 64 27 1 +g齠=OOQ@@!!!& 6AP┠76JO:J }}7N 2g====!Q!!!&Ab;::P::~SI}鎮孫E^)%AQ%R$%M#7N? lЮ4455}20)%QAA!&&& bbl: tS:h  ~ww w2H2Vi.)ゥQQQ%&g#J7(&!??Y $Z教)崖A&&&%&&& 5;: :憶7;7:~4b!Y44ZSw)gΖAAA&&& J7;J]PM7M7 Z}ZZ S556:S )%Ζ%A%%% 7)m867;$~S4 Z6BZf8:5:Z5):%&%%''%&?6S bS f~ 4wwZ55YY)gA''''&&g5M76g!P# 4wZ Yw|3>6;):m&&%&'&& !Sh(P::f: ;?55 Y> q 21H1 Z)m&&&%%%%%A#gP7:PM@Z55 I~}>}II|aa{zyxw)mmA&&%'&Av!SuM:6:;BS:tSsr7 5 3333aq WpVEV/oVn)m(&&A'&%A&&lA 8=@S"kZ 3I + WWjD0...iVC)((%%&&%%@#h 7g fMe<dc@b7:5Z YI + +1aaDF`^-_^^^-,T/)((&&&S5 ] ;5$:6\5[858:Z444Y + +1XWVC---,,--FU,T)((&&%%ASRQPON?J::M6LKJ 44 I +HG--/FFE,DC)(B'A%%%@?$5>!5=<:6;5:98765544 32210/.,-,+*)(('&%%$#"!!   + 27 124 43 1 +I詑詑詑詑詑詑詑詑詑詑詑詑詑詑詑詑詑詑 NNGGGGGNGSHLLLLLLLLLLLLLLLLLLL裴SSSSSLLSSLLLLLSLLLLLSLLLLLLLLSLLLLLKKKKKKKKKKKKKKKKLLLLLLLLLLLL`GJH嶄LLLLLLLLLLLLLLLLLS佩俔LLL幹LLL款彰松松松LLLLL松L松松松款L款幹松松名LLLLLLLLLLLLLLLL款款松松松松松条`?@kSSO陳陳陳艇齠陳鵁陳提齠齠齠鹹陳提齠齠齠齠髫鴪鴪鴪鴪鴪鴪様様様様様嵐髑髓鴆```````駘```L8粋H闖忻忻忻LLL畳礁LLLLLLLLLLLLLLLLLLLLLLLLLLLL亀KLLLLL褫`L8┸I闖闖闖闖闖臆臆KK却儔臆鏥闖KKKKKKK聿  S鮠S8@冪冪冪捶H凅K捶僣僣 A   AAAADEEDEEnnFFFFDDEEEEDDDDDDAADDD擾L8┸I亀HHHHHHH靉凅冪K狼路杵   D?] A AAAAFFFEFnnnFFFFFDADDAAA直S8JI湾HH狼H冪路 HGGGG  DF AnJ;;愛粋潔FrGENAAAAEEF@FFFFFEDEAA調L8JI蕨蕨K蕨KGGG  +hn;;;;;wn0w 70=127N2_D211I/蜑AAADAEEEFFnnFFFFFFDDEEDDDAAAA 直S8@HH蕨K冢KKKKHHGGGGG nJ<<QQ=> QQQQ=l l? 8QQQQjQ=;?E痼AD2EEEEEDEEEDFEEDDDDhALL8JIH冪K凅HH扎H詑GG<=Q j=?l=<?BC +Qj E0EDDDADDDDDDDAAAALL8JFq路HHrHGHG GMMqGGGAD;ll ljQJ88БОЁ=?QQp99□Q?9J?ゥlQQ誓j?QДluQn慚FDADDDAAAAAAAL8J@GGG AD;>< l< ==?n ? Q< :_j =j= = CJ=Q ?8;j?JBC  AAhDDALSL8J@HrrrGRAAAAJF?mQ?l?tp??<ゥЮFJQmЁm_l@mQ?BF8m9P├Д?FpPJ?l┯ hhhAALL8;@GGMMGAAAADDD? 10 ?02 B禿_?< CE_PCCCj旭= cw=C@j< JA0C30D&y> +;D]y&-gy1D^=;ht + AAAAAAAAALLK8J@rGIADkkDDFnDJ7pPJ9lmЕゥ?8ぃFJ?Jj8F0yfECihC<0JD<]0 ] .7A@GrJjN AIA88@rGDDDDDFCw Q7E :?Q;l;?JEEff0fhF0nE02h2^D xh&b`y&=QCf~{}|{z+yx.kw;vFu;tshLK8J@rGHGMqqkkDDD@88Pp8o?n ?m?88J@l; Ck7A 0C^Fh;jF2CEihgfe+d&cba`__ =^]\[ZYXWVU&TSRQP ?NONMLK8J@IHGGDFFEDDD;<8C;=BA@7?><=<&;:9087&65/4232010/..--,+*)('%&%$#"!  + 39 84 39 1 + p$$p * p*pp$$$$$p**$領a a p`*!);VjlZ0z]±O+ pp++p*   ppp   *aa *"痛;c>j1zzO a*pppppp*   *a .衙 *a癖*楊 !!**1}t{z((=bい  p +  +* * +c+ 銑Ayz:孚*a綿 它陛a 別稱綿  +aaa + +*很*害^Wlhz灌*( *  * い=) p+((( ++* a+ ++ X~-纖zy:様碧* +鹵/=ざ佞(pp$  +a +*p aa p(**+*!  p)曚 pL歎掲Xr3\H#;%WqmlFLglGGjUjjJVUjUJJV9UVE%c$*毟* o c=_:X,,<1ЁgHHG' $^?LEWJVCjjQlCjjCjJCjUAUjJUjjE%柩 * *(pp'g"gwBWt628Ч& ((E?EWWjFFjljAjUJJhJUUUhUCjj<(+ +p + +$aKc<L9レ拊lkU6r愕 +;彡;cc<=qlFFlFlVEEVlgJSyUJUUjg#$**** p p殻p$硫:9/WlhTQriK* (=>%8jDAFUAjEEEQUJCChyjhyhAΡW> +唏 *p&g$=mr2\3MK; +p*膨*pg経1lJllmL%LUUElhE2EU-h隈=~*$p?v龍楊碧*&#q嫁: &cH2222 L9UGjUjjUjCADBRAyTW~*  $o=t-v=&'(*pwo?G2M\\rr$pp8lV%GF-JVCiCU9UjFZhj%$(**qtm@vvE&;pcqg:%>bbqi2245\5228*EQG-GUVjIkIFUhzySE>;ap+p(oqb&=@gvt8西;$p"e:VL8tGFC1\\55(a19CjCjCCFCAFChT充UhW =&$Bb%lmG恨晃b$X<:UU&>qLZD44\\F +gjjCUZlVCCjUSJH#>$p *f=&b$!E:}UUC%H1碓1I251i1ftiAU@hjFRhTuhH$pb#VW1q<1YZS1MMCG>qO^:}UJ~"2Y8p qB_Byy{Iyv142H&c^V^E1]Z4\[Z4Y0"X,=WV9VUU-TSRQPONM28>KLK89B1JIDAAH%@GFED@CBBA@%%>?>=<;:981765343210/.-,+!   *((     *()( '&%%$#"!" !           +     + +               +  +  +   33 28 36 1 +lciiyz悧pzkkc鴾pylzz慓rizzcc!\hB0jlzzzp|ZWlz£c獣hh$ujzi覊Z.v A塗N?K#ccc笳0|HelZ榱AAA8Z橇Zd砌j聚XYf-IA + + + v%uubll碵yC> +N  .;YXY竟v4APIH[[3[?[ZjENB2狗3e/濔f-@璢LL←?KH延X樅V9|x-Ux)-I[珎v笠穫}4.bh;; n  mGn.i@S 朮 }9Km慝T_孕 嘔`mLmCO 冤領冓弊h@陵/}p緬壁 +鰭版兎 +篤津陳#2m[/:O4Q hhh) \誠唱0臭e}}<@室B&3該 抗n┯HC8/0 }[J怯s=皆 憶|渥2<.eos B:d]ぃ]iizioP&(&0qptpU.E?f~}|j{zUy-x w8v>uYZktsrqponnmilkji!-E +S$hg?R?WfaaedcbaY`_ ^$]\[I?.-WYZYXW.HVUF8 +DTS$R4Q QP$OOANM 6 7%$LHK>$J *IH.3GF. ED  >/?>&A )'2CCB99%A@ 7%;??>='<;:09!.87 + +654 $%3.-(3210/.- ,+*)('&&%$  +#"!  + + +     + + + + + + + + + 2A 64 27 1 +XHY.>i鵬D_DP+D2ZG34鯛廠? ,償q〇$S┬┝$$室$$%dp漸界+DZrDH/h+)R:┬QQ┝┬┬$%dH!kkY淇肌ZZH8+QhhhhP#$雑$┬$%救竹儇X頬淦/KwH8Hv#hh'g +$室綣$%療滲/焜1ZZ鐸X]甎Dq h*Q算QQ%HRDYbZHbZY僧iん_s>屍%?綮綣%C#"dX陀{2|Xb!vNpI8I杵R0駸"遖雑}%#"J殃賈枕I奴2bwehD:h&&修$"$}}g0Z唾Y0ZbKvK5XkQ?D+紲>>M簗濘V?2bK!N)j>+++S>Q>CCdJ高桎JI59瀉H, '"$QC$喙<%dN鬱e5檀!ZH8[z!ND)擺掫R>$QQQQ%C XXX崑uMm|肪娟X,+ s&Bh +Q}}o!]Zo!yzNp詑藁YXDh#)>_~>%#"面 od吠o祁辱aVka` sS>算":納%#"V再嘉V脹o袖遷)VV疹_Dh-嫉~%#$WV差5厳教*r)WWr憶渥i_`'`Q"><%#`jVXJjj +h*>+.X(D'` ぃ}$S%##V*kioJDD'rR:jQ%##VJJeMnmXXH25!+DS Ph- +$h~}}#%##$|o{Oz7yx37m oM5w4\4vNuht+s>sErqR(k@SQ>#%$#<]]ponm9L]]dG]Ol38NF,k>,jji#hgf $#%$$$]Need]L]L3cccH4M2bVa` +&_"-^ :%$$]O\[835ZYXIDWVU#$TRSRQP''#%$$3ONMLKJHHIHGFEE+DCB A@?>=<; :%$#$984876543210/.-)+,+*)('&%$#"!  +   + 30 44 36 1 +&5][:s廠\@pΔうYBA\弁&>熙!~奔:枉;D\\I%&>γaB-L~3[\詈R>yΖ=権7"F;KM"hD\租@o=Ζ3Z;j楹\\弁' 熙Ρ+,鶺s\Y撫昿iDDDDD\弁? =Ζ+PA2q\5\i謦營\D\DDD\翕c $ΖS+XBA"h奨hh督hY\\\\\\Y\I'=-YC蜜 :s鐇\\\\\DD\UUU詩[M践Y~\\\\\\咯Uw-讒]睇κFFG\枩\DDD\\\\bbf."1[布FD\嚊( +簣br4h[5];h\\\\\I弁bw[h K"F謎"輔GGDD\\\I箝UB朝67猾7C5!1C]BYhh\\\奴z旻f!]"i眛瓩BY\\\\孺4/]ZL!s0wS7椥\\\\\gs┼~15h[5h]\Y*gsh\\\\fr~[5h[C~岫gww圍ssYD\\咯W儺[B1!7x腸ndXgfY\祥rj[蜜5L"MFhY蛭]AdweY\82]W}BB[C9摘CYfS短+owXeX臆9曽~{.2!L 晶F1hgV+V +ww算eeex晃~wm袈M[]rCs2憶+>U + +U +U + +*VP01B{71Е))))) *d;/MN$CL~-$<&@R '&$@.aUmv252h~f$ao*R#%on$o0avm`C!F!;Y,d <>ynnxlm`5C[~Z}|{z&&=<.7;:9867!65243210/.-,++* )('&%$#""!  + 12 192 7 1 +  +    15 184 5 1 + + + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + +   + + + +    + + + +  + + + + + + + + + + + + + + + + + + + + + + + +    + + +    + +  + + +     + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +  + + +  + + + +  + + +   + + +  +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + +   + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + 18 196 119 1 +                                                                                             +                         +                                                                                                                                                                               +                               +                                +         +                                                                                                                   +                   +                         +                                             +      +                                           +                                                                                   +  +          +                                     +                                              +                               + +                                                      +        +                       +                    +  +            +               +    + +                                +                     + +      1B 196 133 1 +     + + + + + + + + + + + + + + +   +  + + + + + + + +                + + + + + + + + +  + + + + +  + + + +  + + + + + + + + +            + + +  +  + + + + + + + + + +   + + + + +  + +  + + + + + + +             + + + + +   + + + + +   + + + +  +  +            + +  + +  + + + + + +  +     + + + + + + +             + + + + + +  + + +  +  + +  + +  + + +  + + +      +   +    + + + + + +  + +      + +          + +  +  + + +  + + + + +   + + +      +     +              +  + + + + + +  +    + +  + +            + + + + + + +  + + + + + + + +  + +  +  + +  +               + + + + + + + + + + + +  +   + +           + + + + + + + + + + + + + + + + + + + +   + + + + +          + + + + + + + + + + + + + + + + + + + + +  + + +                       + + + + +   + + + + + + + + + + + + + + + + +     + +     +    +         + + + + + + + + + + + + +   + + + + + + + + + + + + + + +  + +    +  + + + + +  + +         + + + + + + +  +  + + + + + + + + + + +     +               +  + + + + + + +  +  +               + +      +  + + + + + + +   + + +                     +     + + + + + + + + + + + +                           + + + + + + + + + +   +                  + + + + +  +   +          +     + + + + + +    +                             + +  + +   + + + + +              +     +  + + + +                +                                      +                   +  +                  +     + +   +  +                     + +                               +                    +       + +                     +        + +                              + + + +                        +   + +    +                       +     +    +        +                  +                     +   +          +                 + +                                +                                +         +             +                  +   +        + +                                            +  +      + +                   +                           + + +                        +    +  + +                                   +                         +  + + + +                             + +                               +  + +                      +  +                          +                     +                                       +                              + +   + +                           +                           + +     + +                      +                                                                                      + +                           + +       + +                     + + +  +                                                                                                       + +   +                                                      +     +                  + +                                                                         +                                              +             +  +                   +     +                 +    + +     +            +         +                          +                                                                  + +                             +                 +  +                                                                                              +                                                                                                 +                                                +                                                                            + + +                                                                                                                                                                                                       +                                                                               +                                                                         +                              +                                           +                                 +                                                +                                                                                                                        24 76 62 0 +                         +   + +    +    +    +    +      +    + +    + +    +     +     +    +   +    +   + + +    + + +   + + +    +  + +   + + +   + +   + + +   + + +    + + +   + +       +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1E 12 101 1 +            +   + +  + +   21 12 99 1 +  + + + + + + + + + +   + + + CSELBK_P 22 + d C !"o% ,M%N%--5-56LLOGOD_P 16 +,=55m-L-+%4FLLOGOL_P 16 +,VvNUN4FF= "fNNSLAB1_P 22 +vBU>4:61-)%n!M,  fE$ADMUGA_P 254 +Hl5I3Nf995=A=Ad( #$c( c vTkrw-~as~pvojI! #5,bM^UB04:61-)%n!M,  fE$ \ No newline at end of file diff --git a/IMG/NEWICONS.IMG b/IMG/NEWICONS.IMG new file mode 100644 index 0000000..7848560 Binary files /dev/null and b/IMG/NEWICONS.IMG differ diff --git a/IMG/NEWRING.BDB b/IMG/NEWRING.BDB new file mode 100644 index 0000000..d545af5 --- /dev/null +++ b/IMG/NEWRING.BDB @@ -0,0 +1,210 @@ +newring 3000 2000 255 1 22 208 +ring 86 1981 189 1083 +4000 100 200 0 6 +4000 255 786 3 4 +4010 276 944 6 0 +3F00 283 826 9 9 +3F00 286 964 C 0 +4000 298 818 F 4 +4400 301 724 12 4 +4000 301 891 15 16 +4100 303 887 18 10 +3F00 303 779 1B 4 +3F00 303 893 1E 4 +2600 309 661 21 11 +4000 319 812 24 4 +4400 327 719 3 4 +6A00 340 996 27 0 +4010 341 886 6 0 +3F00 348 826 9 9 +4000 354 846 2A 4 +2100 365 567 2D 4 +4000 372 887 30 16 +4400 374 751 F 4 +4000 387 882 33 0 +2100 393 577 36 4 +4400 395 747 24 4 +3E00 397 889 39 0 +4000 413 826 9 9 +2800 416 630 3C 11 +4400 430 779 2A 4 +2100 434 608 12 4 +2100 435 663 1B 4 +0 436 505 3F 13 +400 438 576 42 15 +2100 459 604 3 4 +2E00 463 742 45 11 +2A00 474 646 48 11 +4110 476 767 6 0 +4000 478 879 4B 0 +4000 483 766 4E 0 +2C00 495 723 51 12 +2100 506 635 F 4 +2100 527 632 24 4 +200 534 510 54 14 +4110 542 708 6 0 +2400 550 677 57 12 +4000 551 157 5A 19 +600 561 629 5D 16 +6A00 561 996 27 0 +2100 562 663 2A 4 +4000 580 879 60 0 +400 580 576 42 15 +4000 606 707 63 0 +800 607 635 66 17 +E00 617 674 69 10 +0 629 505 3F 13 +4000 678 782 6C 0 +4000 678 707 6F 0 +1000 679 671 72 12 +6900 686 889 75 0 +4000 689 956 78 0 +6400 694 780 7B 6 +600 709 618 5D 16 +A00 711 640 7E 18 +400 722 576 42 15 +200 730 510 54 14 +1200 732 673 81 10 +6800 740 785 84 2 +6410 741 865 87 5 +6900 748 900 8A 20 +6700 749 785 8D 7 +6900 749 889 90 0 +1400 771 671 93 10 +C00 775 634 96 19 +6A00 781 996 27 0 +6400 791 869 99 5 +6510 816 777 9C 8 +6400 819 787 9F 5 +6400 819 697 A2 8 +0 821 505 3F 13 +1600 823 670 A5 10 +6500 824 702 A8 21 +4000 827 707 AB 0 +4000 844 956 AE 0 +6400 852 789 B1 5 +6900 857 888 B4 0 +400 864 576 42 15 +1800 870 672 B7 10 +800 889 636 66 17 +6400 895 780 BA 6 +6900 898 907 BD 20 +200 918 511 54 14 +1A00 920 675 C0 10 +1C00 959 669 C3 10 +4000 993 956 C9 0 +6900 993 889 C6 0 +500 994 582 CC 1 +6400 994 780 CF 6 +6A00 1000 996 27 0 +1E00 1014 671 D2 10 +4010 1015 707 AB 0 +6410 1019 789 B1 5 +6410 1019 869 99 5 +4010 1040 956 AE 0 +6410 1042 780 BA 6 +6900 1047 889 D5 0 +4000 1062 673 D8 10 +0 1074 505 3F 13 +800 1076 636 66 17 +400 1077 576 42 15 +4000 1080 200 0 6 +1400 1108 671 93 10 +6410 1137 780 7B 6 +7300 1148 1162 DB 0 +2200 1161 671 DE 10 +6900 1170 889 E1 0 +200 1173 510 54 14 +6410 1179 787 9F 5 +C00 1180 632 96 19 +6510 1188 701 A8 21 +4010 1191 956 78 0 +1000 1199 671 72 12 +600 1204 623 5D 16 +4000 1207 707 E4 0 +6500 1214 777 9C 8 +6410 1215 697 A2 8 +6400 1217 865 87 5 +400 1219 576 42 15 +6A00 1221 996 27 0 +6900 1234 900 E7 20 +4000 1241 707 EA 0 +4010 1245 782 6C 0 +E00 1250 674 69 10 +6710 1252 785 8D 7 +0 1263 505 3F 13 +6900 1274 889 ED 0 +7300 1281 1173 F0 0 +6810 1285 785 84 2 +A00 1298 639 7E 18 +1600 1310 670 A5 10 +4010 1332 879 60 0 +4000 1357 782 F3 0 +1800 1358 672 B7 10 +200 1360 510 54 14 +400 1361 576 42 15 +800 1368 637 66 17 +1C00 1402 669 C3 10 +3F10 1428 766 4E 0 +4000 1444 780 F6 0 +6A00 1447 996 27 0 +0 1450 505 3F 13 +4010 1454 879 4B 0 +1E00 1457 671 D2 10 +4000 1459 707 F9 0 +C00 1474 633 96 19 +4000 1484 816 F6 0 +4000 1501 673 D8 10 +400 1503 576 42 15 +4000 1524 852 F6 0 +1200 1547 673 81 10 +200 1550 510 54 14 +4010 1557 883 33 0 +4000 1563 887 F6 0 +A00 1589 638 7E 18 +1A00 1591 675 C0 10 +6510 1597 718 FC 0 +4000 1603 923 F6 0 +4100 1629 707 6 0 +2110 1631 662 2A 4 +2110 1638 630 24 4 +0 1641 505 3F 13 +4000 1644 959 F6 0 +400 1645 576 42 15 +2410 1647 673 57 12 +4000 1649 963 FF 0 +6510 1656 774 FC 0 +2A10 1666 644 48 11 +6A00 1673 996 27 0 +2110 1679 634 F 4 +6510 1685 778 102 0 +4000 1686 995 F6 0 +4100 1694 765 6 0 +2C10 1697 718 51 12 +2110 1711 601 3 4 +6510 1717 832 FC 0 +2E10 1717 741 45 11 +4000 1725 1031 F6 0 +2110 1732 606 12 4 +2110 1734 661 1B 4 +4100 1758 823 6 0 +4210 1761 779 2A 4 +2810 1764 629 3C 11 +4410 1768 747 24 4 +6900 1769 826 105 3 +6510 1777 888 FC 0 +2110 1781 574 36 4 +2110 1805 565 2D 4 +6510 1807 892 102 0 +4410 1809 751 F 4 +4100 1823 881 6 0 +2610 1823 660 21 11 +6510 1837 943 FC 0 +4420 1838 826 1B 4 +6900 1840 831 108 3 +4410 1841 719 3 4 +4410 1862 723 12 4 +4410 1864 779 1B 4 +3200 1877 927 9 9 +4100 1888 939 6 0 +7330 1908 824 1B 4 diff --git a/IMG/NEWRING.BDD b/IMG/NEWRING.BDD new file mode 100644 index 0000000..631c808 Binary files /dev/null and b/IMG/NEWRING.BDD differ diff --git a/IMG/NEWRING2.BDB b/IMG/NEWRING2.BDB new file mode 100644 index 0000000..6b1e2d6 --- /dev/null +++ b/IMG/NEWRING2.BDB @@ -0,0 +1,230 @@ +newring 3000 2000 255 1 20 228 +ring 86 1981 189 1083 +4000 100 200 0 6 +7310 155 891 3 4 +7310 155 844 6 4 +7300 158 749 9 4 +4500 184 757 C 4 +7300 225 789 F 4 +7300 227 844 6 4 +7200 227 891 3 4 +4410 230 779 6 4 +4400 232 683 9 4 +4400 250 784 12 4 +4400 260 692 C 4 +7500 275 859 15 16 +4010 276 944 18 0 +4000 283 826 1B 9 +4000 286 964 1E 0 +6500 297 951 21 0 +4400 298 891 24 4 +7300 298 816 27 4 +4400 301 724 F 4 +7700 301 888 2A 10 +4400 303 779 6 4 +2600 309 661 2D 11 +7300 319 812 30 4 +4400 326 719 12 4 +7F00 340 996 33 0 +4010 341 886 18 0 +4000 348 826 1B 9 +4100 353 1007 36 0 +4100 353 1004 36 0 +7300 354 844 39 4 +6500 354 894 21 0 +2100 365 567 9 4 +4400 374 751 27 4 +6500 380 899 3C 0 +4000 387 882 3F 0 +2100 393 577 C 4 +4400 395 747 30 4 +3E00 397 889 42 0 +4100 405 949 36 0 +4000 413 826 1B 9 +2800 416 630 45 11 +4400 430 779 39 4 +2100 434 608 F 4 +2100 435 663 6 4 +0 436 505 48 13 +400 438 576 4B 15 +2100 459 604 12 4 +2E00 463 742 4E 11 +2A00 474 646 51 11 +4110 476 767 18 0 +4000 478 879 54 0 +4000 483 766 57 0 +4100 484 885 36 0 +6500 486 777 21 0 +2C00 495 723 5A 12 +2100 506 635 27 4 +6500 511 783 3C 0 +2100 527 632 30 4 +200 534 510 5D 14 +4100 540 834 36 0 +4110 542 709 18 0 +4100 544 828 36 0 +6500 544 719 21 0 +2400 550 677 60 12 +4000 551 157 63 19 +7F00 561 996 33 0 +600 561 629 66 16 +2100 562 663 39 4 +4000 580 879 69 0 +400 580 576 4B 15 +4100 597 776 36 0 +4000 606 707 6C 0 +800 607 635 6F 17 +E00 617 674 72 10 +0 629 505 48 13 +4000 678 782 75 0 +4000 678 707 78 0 +1400 678 671 99 10 +7300 686 889 7E 0 +4000 689 956 81 0 +6900 694 780 84 6 +600 709 618 66 16 +A00 711 640 87 18 +400 722 576 4B 15 +200 730 510 5D 14 +1200 733 673 8A 10 +7300 740 785 8D 2 +6910 741 865 90 5 +7300 749 785 93 7 +4000 749 889 96 0 +C00 775 634 9C 19 +1000 776 671 7B 12 +7F00 781 996 33 0 +6900 791 869 9F 5 +6A10 816 777 A2 8 +6900 819 697 A5 8 +6900 819 787 A8 5 +0 821 505 48 13 +1600 823 670 AB 10 +6900 824 702 AE 7 +4000 827 707 B1 0 +4000 844 956 B4 0 +6900 852 789 B7 5 +4000 857 888 BA 0 +400 864 576 4B 15 +1800 870 672 BD 10 +800 889 636 6F 17 +6900 895 780 C0 6 +200 918 511 5D 14 +1A00 920 675 C3 10 +1C00 959 669 C6 10 +4000 993 889 C9 0 +4000 993 956 CC 0 +6900 994 780 CF 6 +500 994 582 D2 1 +7F00 1000 996 33 0 +1E00 1014 671 D5 10 +4010 1015 707 B1 0 +6910 1019 869 9F 5 +6910 1019 789 B7 5 +4010 1040 956 B4 0 +6910 1042 780 C0 6 +4100 1047 889 D8 0 +4000 1062 673 DB 10 +0 1074 505 48 13 +800 1076 636 6F 17 +400 1077 576 4B 15 +4000 1080 200 0 6 +1400 1108 671 99 10 +6910 1137 780 84 6 +7300 1148 1162 DE 0 +2200 1161 671 E1 10 +4000 1170 889 E4 0 +200 1173 510 5D 14 +6910 1179 787 A8 5 +C00 1180 632 9C 19 +6910 1188 702 AE 7 +4010 1191 956 81 0 +1000 1199 671 7B 12 +600 1204 623 66 16 +4000 1207 707 E7 0 +6A00 1214 777 A2 8 +6910 1215 697 A5 8 +6900 1217 865 90 5 +400 1219 576 4B 15 +7F00 1221 996 33 0 +4000 1241 707 EA 0 +4010 1245 782 75 0 +E00 1250 674 72 10 +7310 1252 785 93 7 +0 1263 505 48 13 +7300 1274 889 ED 0 +7300 1281 1173 F0 0 +7310 1285 785 8D 2 +A00 1298 639 87 18 +1600 1310 670 AB 10 +4010 1332 879 69 0 +4000 1357 782 F3 0 +1800 1358 672 BD 10 +200 1360 510 5D 14 +400 1361 576 4B 15 +800 1368 637 6F 17 +1C00 1402 669 C6 10 +3F10 1428 766 57 0 +4000 1444 780 F6 0 +7F00 1447 996 33 0 +0 1450 505 48 13 +4010 1454 879 54 0 +1E00 1457 671 D5 10 +4000 1459 707 F9 0 +C00 1474 633 9C 19 +4000 1484 816 F6 0 +4000 1501 673 DB 10 +400 1503 576 4B 15 +4000 1524 852 F6 0 +1200 1547 673 8A 10 +200 1550 510 5D 14 +4010 1557 883 3F 0 +4000 1563 887 F6 0 +A00 1589 638 87 18 +1A00 1591 675 C3 10 +6510 1597 718 21 0 +4000 1603 923 F6 0 +4100 1629 707 18 0 +2110 1631 662 39 4 +2110 1638 630 30 4 +0 1641 505 48 13 +4000 1644 959 F6 0 +400 1645 576 4B 15 +2410 1647 673 60 12 +4000 1649 963 FC 0 +6510 1656 774 21 0 +2A10 1666 644 51 11 +7F00 1673 996 33 0 +2110 1679 634 27 4 +4000 1686 995 F6 0 +4100 1694 765 18 0 +2C10 1697 718 5A 12 +2110 1711 601 12 4 +6510 1717 832 21 0 +2E10 1717 741 4E 11 +4000 1724 1030 F6 0 +2110 1732 606 F 4 +2110 1734 661 6 4 +4100 1758 823 18 0 +4210 1761 779 39 4 +2810 1764 629 45 11 +4410 1768 747 30 4 +6900 1769 826 FF 3 +6510 1777 888 21 0 +2110 1781 574 C 4 +2110 1805 565 9 4 +4410 1809 751 27 4 +4100 1823 881 18 0 +2610 1823 660 2D 11 +6510 1837 943 21 0 +4420 1838 826 6 4 +6900 1840 831 102 3 +4410 1841 719 12 4 +4410 1862 723 F 4 +4410 1864 779 6 4 +3200 1877 927 1B 9 +4100 1888 939 18 0 +7330 1908 824 6 4 +4510 1911 692 C 4 +7310 1935 682 9 4 +7300 1937 777 6 4 diff --git a/IMG/NEWRING2.BDD b/IMG/NEWRING2.BDD new file mode 100644 index 0000000..6e140e3 Binary files /dev/null and b/IMG/NEWRING2.BDD differ diff --git a/IMG/NEWRING8.BDB b/IMG/NEWRING8.BDB new file mode 100755 index 0000000..e13b61c --- /dev/null +++ b/IMG/NEWRING8.BDB @@ -0,0 +1,217 @@ +newring8 3000 2000 255 1 24 215 +ring 86 2157 189 1083 +4000 100 200 0 6 +4000 255 786 3 4 +4010 276 944 6 0 +3F00 283 826 9 9 +6A00 283 996 C 0 +3F00 286 964 F 0 +4000 298 818 12 4 +4400 301 724 15 4 +4000 301 891 18 16 +4100 303 887 1B 10 +3F00 303 779 1E 4 +3F00 303 893 21 4 +2600 309 661 24 11 +4000 319 812 27 4 +4400 327 719 3 4 +4010 341 886 6 0 +3F00 348 826 9 9 +4000 354 846 2A 4 +2100 365 567 2D 4 +4000 372 887 30 16 +4400 374 751 12 4 +4000 387 882 33 0 +2100 393 577 36 4 +4400 395 747 27 4 +3E00 397 889 39 0 +4000 413 826 9 9 +2800 416 630 3C 11 +4400 430 779 2A 4 +2100 434 608 15 4 +2100 435 663 1E 4 +0 436 505 3F 13 +400 438 576 42 15 +2100 459 604 3 4 +2E00 463 742 45 11 +2A00 474 646 48 11 +4110 476 767 6 0 +4000 478 879 4B 0 +4000 483 766 4E 0 +2C00 495 723 51 12 +6A00 503 996 C 0 +2100 506 635 12 4 +2100 527 632 27 4 +200 534 510 54 14 +4110 542 708 6 0 +2400 550 677 57 12 +600 561 629 5A 16 +2100 562 663 2A 4 +4000 580 879 5D 0 +400 580 576 42 15 +4000 606 707 60 0 +800 607 635 63 17 +E00 617 674 66 10 +0 629 505 3F 13 +1200 676 673 69 10 +4000 678 782 6C 0 +4000 678 707 6F 0 +6900 686 889 72 0 +4000 689 956 75 0 +6400 694 780 78 22 +600 709 618 5A 16 +A00 711 640 7B 18 +4000 720 673 7E 10 +400 722 576 42 15 +6A00 723 996 C 0 +200 730 510 54 14 +6800 740 785 81 2 +6410 741 865 84 5 +6900 748 900 87 20 +6700 749 785 8A 7 +6900 749 889 8D 0 +1000 771 671 90 12 +C00 775 634 93 19 +6400 791 869 96 5 +6510 816 777 99 8 +6400 819 787 9C 5 +6400 819 697 9F 8 +0 821 505 3F 13 +1600 823 670 A2 10 +6500 824 702 A5 21 +4000 827 707 A8 0 +4000 844 956 AB 0 +4000 846 707 A8 0 +6400 852 789 AE 5 +6900 857 889 B1 0 +400 864 576 42 15 +1800 870 672 B4 10 +4000 874 707 A8 0 +4000 874 707 A8 0 +800 889 636 63 17 +4000 899 707 B7 0 +6400 916 780 BA 22 +200 918 511 54 14 +1A00 920 675 BD 10 +6A00 942 996 C 0 +1C00 959 669 C0 10 +6900 977 907 C3 20 +4000 993 956 C6 0 +6900 993 889 C9 0 +500 994 582 CC 1 +1E00 1014 671 CF 10 +6400 1021 869 D2 5 +6400 1022 789 D5 5 +6400 1033 780 D8 22 +4000 1043 956 DB 0 +6800 1047 889 DE 0 +1200 1066 673 69 10 +0 1074 505 3F 13 +800 1076 636 63 17 +400 1077 576 42 15 +4000 1080 200 0 6 +4010 1087 707 B7 0 +6410 1100 780 BA 22 +1400 1108 671 E1 10 +6410 1119 869 96 5 +6410 1119 789 AE 5 +4010 1140 956 AB 0 +6900 1147 889 DE 0 +2200 1161 671 E4 10 +6A00 1161 996 C 0 +200 1173 510 54 14 +C00 1180 632 93 19 +1000 1199 671 90 12 +600 1204 623 5A 16 +6410 1218 780 78 22 +400 1219 576 42 15 +E00 1250 674 66 10 +0 1263 505 3F 13 +6900 1270 889 E7 0 +6410 1279 787 9C 5 +4000 1279 707 A8 0 +6510 1288 701 A5 21 +4010 1291 956 75 0 +A00 1298 639 7B 18 +4000 1307 707 A8 0 +1600 1310 670 A2 10 +6500 1314 777 99 8 +6410 1315 697 9F 8 +6400 1317 865 84 5 +6900 1321 904 EA 20 +4000 1341 707 ED 0 +4010 1345 782 6C 0 +6710 1352 785 8A 7 +1800 1358 672 B4 10 +200 1360 510 54 14 +400 1361 576 42 15 +800 1368 637 63 17 +6900 1374 889 F0 0 +6A00 1381 996 C 0 +6810 1385 785 81 2 +1C00 1402 669 C0 10 +4010 1432 879 5D 0 +0 1450 505 3F 13 +1E00 1457 671 CF 10 +4000 1457 782 F3 0 +C00 1476 632 93 19 +1400 1501 671 E1 10 +400 1503 576 42 15 +3F10 1528 766 4E 0 +4000 1543 780 F6 0 +200 1550 510 54 14 +4000 1550 673 7E 10 +4010 1554 879 4B 0 +4000 1558 707 F9 0 +4000 1584 816 F6 0 +A00 1589 638 7B 18 +1A00 1595 675 BD 10 +6A00 1600 996 C 0 +4000 1624 852 F6 0 +2110 1631 662 2A 4 +2110 1638 630 27 4 +0 1641 505 3F 13 +400 1645 576 42 15 +4010 1657 883 33 0 +4000 1663 887 F6 0 +2110 1679 634 12 4 +4210 1701 719 FC 0 +4000 1703 923 F6 0 +2110 1711 601 3 4 +4100 1729 707 6 0 +2110 1732 606 15 4 +2110 1734 661 1E 4 +4000 1744 959 F6 0 +2410 1747 673 57 12 +4000 1749 963 FF 0 +4210 1756 774 FC 0 +2A10 1764 644 48 11 +2110 1781 574 36 4 +4210 1785 778 102 0 +4000 1786 995 F6 0 +4100 1794 765 6 0 +2C10 1798 718 51 12 +2110 1805 565 2D 4 +2E10 1817 741 45 11 +4210 1817 832 FC 0 +6A00 1820 996 C 0 +4000 1825 1031 F6 0 +4100 1859 823 6 0 +4210 1861 779 2A 4 +2810 1864 629 3C 11 +4410 1868 747 27 4 +4500 1869 826 105 3 +4210 1877 888 FC 0 +4210 1907 892 102 0 +4410 1909 751 12 4 +2610 1923 660 24 11 +4100 1923 881 6 0 +4210 1937 943 FC 0 +4220 1937 826 1E 4 +4500 1940 831 108 3 +4410 1941 719 3 4 +4410 1962 723 15 4 +4410 1964 779 1E 4 +3200 1978 927 9 9 +4100 1988 939 6 0 +7330 2007 824 1E 4 diff --git a/IMG/NEWRING8.BDD b/IMG/NEWRING8.BDD new file mode 100755 index 0000000..7efcd94 Binary files /dev/null and b/IMG/NEWRING8.BDD differ diff --git a/IMG/NEWRING9.BDB b/IMG/NEWRING9.BDB new file mode 100755 index 0000000..3e1964f --- /dev/null +++ b/IMG/NEWRING9.BDB @@ -0,0 +1,217 @@ +newring9 3000 2000 255 1 24 215 +ring 86 2157 189 1083 +4000 100 200 0 6 +4000 255 787 3 4 +4010 276 944 6 0 +3F00 283 826 9 9 +6A00 283 996 C 0 +3F00 286 964 F 0 +4000 298 818 12 4 +4400 301 724 15 4 +4000 301 891 18 16 +4100 303 887 1B 10 +3F00 303 779 1E 4 +3F00 303 893 21 4 +2600 309 661 24 11 +4000 319 814 27 4 +4400 327 719 3 4 +4010 341 886 6 0 +3F00 348 826 9 9 +4000 354 846 2A 4 +2100 365 567 2D 4 +4000 372 887 30 16 +4400 374 751 12 4 +4000 387 882 33 0 +2100 393 577 36 4 +4400 395 747 27 4 +3E00 397 889 39 0 +4000 413 826 9 9 +2800 416 630 3C 11 +4400 430 779 2A 4 +2100 434 608 15 4 +2100 435 663 1E 4 +0 436 505 3F 13 +400 438 576 42 15 +2100 459 604 3 4 +2E00 463 742 45 11 +2A00 474 646 48 11 +4110 476 767 6 0 +4000 478 879 4B 0 +4000 483 766 4E 0 +2C00 495 723 51 12 +6A00 503 996 C 0 +2100 506 635 12 4 +2100 527 632 27 4 +200 534 510 54 14 +4110 542 708 6 0 +2400 550 677 57 12 +600 561 629 5A 16 +2100 562 663 2A 4 +4000 580 879 5D 0 +400 580 576 42 15 +4000 606 707 60 0 +800 607 635 63 17 +E00 617 674 66 10 +0 629 505 3F 13 +1200 676 673 69 10 +4000 678 782 6C 0 +4000 678 707 6F 0 +6900 686 889 72 0 +4000 689 956 75 0 +6400 694 780 78 22 +600 709 618 5A 16 +A00 711 640 7B 18 +4000 720 673 7E 10 +400 722 576 42 15 +6A00 723 996 C 0 +200 730 510 54 14 +6800 740 785 81 2 +6410 741 865 84 5 +6900 748 900 87 20 +6700 749 785 8A 7 +6900 749 889 8D 0 +1000 771 671 90 12 +C00 775 634 93 19 +6400 791 869 96 5 +6510 816 777 99 8 +6400 819 787 9C 5 +6400 819 697 9F 8 +0 821 505 3F 13 +1600 823 670 A2 10 +6500 824 702 A5 21 +4000 827 707 A8 0 +4000 844 956 AB 0 +4000 846 707 A8 0 +6400 852 789 AE 5 +6900 857 889 B1 0 +400 864 576 42 15 +1800 870 672 B4 10 +4000 874 707 A8 0 +4000 874 707 A8 0 +800 889 636 63 17 +4000 899 707 B7 0 +6400 916 780 BA 22 +200 918 511 54 14 +1A00 920 675 BD 10 +6A00 942 996 C 0 +1C00 959 669 C0 10 +6900 977 907 C3 20 +4000 993 956 C6 0 +6900 993 889 C9 0 +500 994 582 CC 1 +1E00 1014 671 CF 10 +6400 1021 869 D2 5 +6400 1022 789 D5 5 +6400 1033 780 D8 22 +4000 1043 956 DB 0 +6800 1047 889 DE 0 +1200 1066 673 69 10 +0 1074 505 3F 13 +800 1076 636 63 17 +400 1077 576 42 15 +4000 1080 200 0 6 +4010 1087 707 B7 0 +6410 1100 780 BA 22 +1400 1108 671 E1 10 +6410 1119 869 96 5 +6410 1119 789 AE 5 +4010 1140 956 AB 0 +6900 1147 889 DE 0 +2200 1161 671 E4 10 +6A00 1161 996 C 0 +200 1173 510 54 14 +C00 1180 632 93 19 +1000 1199 671 90 12 +600 1204 623 5A 16 +6410 1218 780 78 22 +400 1219 576 42 15 +E00 1250 674 66 10 +0 1263 505 3F 13 +6900 1270 889 E7 0 +6410 1279 787 9C 5 +4000 1279 707 A8 0 +6510 1288 701 A5 21 +4010 1291 956 75 0 +A00 1298 639 7B 18 +4000 1307 707 A8 0 +1600 1310 670 A2 10 +6500 1314 777 99 8 +6410 1315 697 9F 8 +6400 1317 865 84 5 +6900 1321 904 EA 20 +4000 1341 707 ED 0 +4010 1345 782 6C 0 +6710 1352 785 8A 7 +1800 1358 672 B4 10 +200 1360 510 54 14 +400 1361 576 42 15 +800 1368 637 63 17 +6900 1374 889 F0 0 +6A00 1381 996 C 0 +6810 1385 785 81 2 +1C00 1402 669 C0 10 +4010 1432 879 5D 0 +0 1450 505 3F 13 +1E00 1457 671 CF 10 +4000 1457 782 F3 0 +C00 1476 632 93 19 +1400 1501 671 E1 10 +400 1503 576 42 15 +3F10 1528 766 4E 0 +4000 1543 780 F6 0 +200 1550 510 54 14 +4000 1550 673 7E 10 +4010 1554 879 4B 0 +4000 1558 707 F9 0 +4000 1584 816 F6 0 +A00 1589 638 7B 18 +1A00 1595 675 BD 10 +6A00 1600 996 C 0 +4000 1624 852 F6 0 +2110 1631 662 2A 4 +2110 1638 630 27 4 +0 1641 505 3F 13 +400 1645 576 42 15 +4010 1657 883 33 0 +4000 1663 887 F6 0 +2110 1679 634 12 4 +4210 1701 719 FC 0 +4000 1703 923 F6 0 +2110 1711 601 3 4 +4100 1729 707 6 0 +2110 1732 606 15 4 +2110 1734 661 1E 4 +4000 1744 959 F6 0 +2410 1747 673 57 12 +4000 1749 963 FF 0 +4210 1756 774 FC 0 +2A10 1764 644 48 11 +2110 1781 574 36 4 +4210 1785 778 102 0 +4000 1786 995 F6 0 +4100 1794 765 6 0 +2C10 1798 718 51 12 +2110 1805 565 2D 4 +2E10 1817 741 45 11 +4210 1817 832 FC 0 +6A00 1820 996 C 0 +4000 1825 1031 F6 0 +4100 1859 823 6 0 +4210 1861 779 2A 4 +2810 1864 629 3C 11 +4410 1868 747 27 4 +4500 1869 826 105 3 +4210 1877 888 FC 0 +4210 1907 892 102 0 +4410 1909 751 12 4 +2610 1923 660 24 11 +4100 1923 881 6 0 +4210 1937 943 FC 0 +4220 1937 826 1E 4 +4500 1940 831 108 3 +4410 1941 719 3 4 +4410 1962 723 15 4 +4410 1964 779 1E 4 +3200 1978 927 9 9 +4100 1988 939 6 0 +7330 2007 824 1E 4 diff --git a/IMG/NEWRING9.BDD b/IMG/NEWRING9.BDD new file mode 100755 index 0000000..113e904 Binary files /dev/null and b/IMG/NEWRING9.BDD differ diff --git a/IMG/NEWRINGA.BDB b/IMG/NEWRINGA.BDB new file mode 100755 index 0000000..952a6b1 --- /dev/null +++ b/IMG/NEWRINGA.BDB @@ -0,0 +1,215 @@ +newringa 3000 2000 255 1 23 213 +ring 86 2157 189 1083 +4000 100 200 0 6 +4000 255 787 3 4 +4010 276 944 6 0 +3F00 283 826 9 9 +6A00 283 996 C 0 +3F00 286 964 F 0 +4000 298 818 12 4 +4400 301 724 15 4 +4000 301 891 18 16 +4100 303 887 1B 10 +3F00 303 779 1E 4 +3F00 303 893 21 4 +2600 309 661 24 11 +4000 319 814 27 4 +4400 327 719 3 4 +4010 341 886 6 0 +3F00 348 826 9 9 +4000 354 846 2A 4 +2100 365 568 2D 4 +4000 372 887 30 16 +4400 374 751 12 4 +4000 387 882 33 0 +2100 393 577 36 4 +4400 395 747 27 4 +3E00 397 889 39 0 +4000 413 826 9 9 +2800 416 630 3C 11 +4400 430 779 2A 4 +2100 434 609 15 4 +2100 435 663 1E 4 +0 436 505 3F 13 +400 438 576 42 15 +2100 459 604 3 4 +2E00 463 742 45 11 +2A00 474 646 48 11 +4110 476 767 6 0 +4000 478 879 4B 0 +4000 483 766 4E 0 +2C00 495 723 51 12 +6A00 503 996 C 0 +2100 506 636 12 4 +2100 527 632 27 4 +200 534 510 54 14 +4110 542 708 6 0 +2400 550 677 57 12 +600 561 629 5A 16 +2100 562 664 2A 4 +4000 580 879 5D 0 +400 580 576 42 15 +2100 584 711 60 4 +4000 606 707 63 0 +800 607 635 66 17 +2100 610 1084 60 4 +E00 617 674 69 10 +0 629 505 3F 13 +1200 676 673 6C 10 +4000 678 782 6F 0 +4000 678 707 72 0 +6900 686 889 75 0 +4000 689 956 78 0 +6400 694 780 7B 22 +600 709 618 5A 16 +A00 711 640 7E 18 +4000 720 673 81 10 +400 722 576 42 15 +6A00 723 996 C 0 +200 730 510 54 14 +6800 740 785 84 2 +6410 741 865 87 5 +6900 748 900 8A 20 +6700 749 785 8D 7 +6900 749 889 90 0 +1000 771 671 93 12 +C00 775 634 96 19 +6400 791 869 99 5 +6510 816 777 9C 8 +6400 819 787 9F 5 +6400 819 697 A2 8 +0 821 505 3F 13 +1600 823 670 A5 10 +6500 824 702 A8 21 +4000 827 707 AB 0 +4000 844 956 AE 0 +4000 846 707 AB 0 +6400 852 789 B1 5 +6900 857 889 B4 0 +400 864 576 42 15 +1800 870 672 B7 10 +4000 874 707 AB 0 +4000 874 707 AB 0 +800 889 636 66 17 +4000 899 707 BA 0 +6400 916 780 BD 22 +200 918 511 54 14 +1A00 920 675 C0 10 +6A00 942 996 C 0 +1C00 959 669 C3 10 +6900 977 907 C6 20 +4000 993 956 C9 0 +6900 993 889 CC 0 +500 994 582 CF 1 +1E00 1014 671 D2 10 +6400 1021 869 D5 5 +6400 1022 789 D8 5 +6400 1033 780 DB 22 +4000 1043 956 DE 0 +6800 1047 889 E1 0 +1200 1066 673 6C 10 +0 1074 505 3F 13 +800 1076 636 66 17 +400 1077 576 42 15 +4000 1080 200 0 6 +4010 1087 707 BA 0 +6410 1100 780 BD 22 +1400 1108 671 E4 10 +6410 1119 869 99 5 +6410 1119 789 B1 5 +4010 1140 956 AE 0 +6900 1147 889 E1 0 +2200 1161 671 E7 10 +6A00 1161 996 C 0 +200 1173 510 54 14 +C00 1180 632 96 19 +1000 1199 671 93 12 +600 1204 623 5A 16 +6410 1218 780 7B 22 +400 1219 576 42 15 +E00 1250 674 69 10 +0 1263 505 3F 13 +6900 1270 889 EA 0 +6410 1279 787 9F 5 +4000 1279 707 AB 0 +6510 1288 701 A8 21 +4010 1291 956 78 0 +A00 1298 639 7E 18 +4000 1307 707 AB 0 +1600 1310 670 A5 10 +6500 1314 777 9C 8 +6410 1315 697 A2 8 +6400 1317 865 87 5 +6900 1321 904 ED 20 +4000 1341 707 F0 0 +4010 1345 782 6F 0 +6710 1352 785 8D 7 +1800 1358 672 B7 10 +200 1360 510 54 14 +400 1361 576 42 15 +800 1368 637 66 17 +6900 1374 889 F3 0 +6A00 1381 996 C 0 +6810 1385 785 84 2 +1C00 1402 669 C3 10 +4010 1432 879 5D 0 +0 1450 505 3F 13 +1E00 1457 671 D2 10 +4000 1457 782 F6 0 +C00 1476 632 96 19 +1400 1501 671 E4 10 +400 1503 576 42 15 +3F10 1528 766 4E 0 +4000 1543 780 F9 0 +200 1550 510 54 14 +4000 1550 673 81 10 +4010 1554 879 4B 0 +4000 1559 707 FC 0 +4000 1584 816 F9 0 +A00 1589 638 7E 18 +1A00 1595 675 C0 10 +6A00 1599 995 C 0 +4000 1624 852 F9 0 +2110 1631 662 2A 4 +2110 1638 630 27 4 +0 1641 505 3F 13 +400 1645 576 42 15 +4010 1657 883 33 0 +4000 1663 887 F9 0 +2110 1679 634 12 4 +4000 1703 923 F9 0 +2110 1711 601 3 4 +4100 1729 707 6 0 +2110 1732 606 15 4 +2110 1734 661 1E 4 +2100 1735 708 60 4 +4000 1744 959 F9 0 +2410 1747 673 57 12 +4000 1749 964 FF 0 +2A10 1764 644 48 11 +2110 1781 574 36 4 +6A00 1785 1132 C 0 +4000 1786 995 F9 0 +4100 1794 765 6 0 +2C10 1798 718 51 12 +2110 1805 565 2D 4 +2100 1806 661 60 4 +2E10 1816 741 45 11 +6A00 1820 995 C 0 +4000 1824 1031 F9 0 +4100 1859 823 6 0 +4110 1861 780 2A 4 +2810 1864 629 3C 11 +4410 1868 747 27 4 +4600 1868 811 102 3 +4410 1909 752 12 4 +4600 1913 785 105 3 +4100 1922 881 6 0 +2610 1923 660 24 11 +4410 1941 719 3 4 +4600 1949 803 10B 3 +4410 1962 724 15 4 +4410 1964 779 1E 4 +3C10 1970 921 1E 4 +4100 1985 936 6 0 +2100 1987 826 60 4 diff --git a/IMG/NEWRINGA.BDD b/IMG/NEWRINGA.BDD new file mode 100755 index 0000000..d9fb397 Binary files /dev/null and b/IMG/NEWRINGA.BDD differ diff --git a/IMG/NEWRINGB.BDB b/IMG/NEWRINGB.BDB new file mode 100755 index 0000000..ac09fc4 --- /dev/null +++ b/IMG/NEWRINGB.BDB @@ -0,0 +1,213 @@ +newringb 3000 2000 255 1 23 211 +ring 86 2157 189 1083 +4000 100 200 0 6 +4000 255 787 3 4 +4010 276 944 6 0 +3F00 283 826 9 9 +6A00 283 996 C 0 +3F00 286 964 F 0 +4000 298 818 12 4 +4400 301 724 15 4 +4000 301 891 18 16 +4100 303 887 1B 10 +3F00 303 779 1E 4 +3F00 303 893 21 4 +2600 309 661 24 11 +4000 319 814 27 4 +4400 327 719 3 4 +4010 341 886 6 0 +3F00 348 826 9 9 +4000 354 846 2A 4 +2100 365 568 2D 4 +4000 372 887 30 16 +4400 374 751 12 4 +4000 387 882 33 0 +2100 393 577 36 4 +4400 395 747 27 4 +3E00 397 889 39 0 +4000 413 826 9 9 +2800 416 630 3C 11 +4400 430 779 2A 4 +2100 434 609 15 4 +2100 435 663 1E 4 +0 436 505 3F 13 +400 438 576 42 15 +2100 459 604 3 4 +2E00 463 742 45 11 +2A00 474 646 48 11 +4110 476 767 6 0 +4000 478 879 4B 0 +4000 483 766 4E 0 +2C00 495 723 51 12 +6A00 503 996 C 0 +2100 506 636 12 4 +2100 527 632 27 4 +200 534 510 54 14 +4110 542 708 6 0 +2400 550 677 57 12 +600 561 629 5A 16 +2100 562 664 2A 4 +4000 580 879 5D 0 +400 580 576 42 15 +2100 584 711 60 4 +4000 606 707 63 0 +800 607 635 66 17 +1A00 617 675 69 10 +0 629 505 3F 13 +E00 653 675 6C 10 +4000 678 782 6F 0 +4000 678 707 72 0 +6900 686 889 75 0 +4000 689 956 78 0 +6400 694 780 7B 22 +600 709 618 5A 16 +A00 711 640 7E 18 +1400 714 671 81 10 +400 722 576 42 15 +6A00 723 996 C 0 +200 730 510 54 14 +6800 740 785 84 2 +6410 741 865 87 5 +6900 748 900 8A 20 +6700 749 785 8D 7 +6900 749 889 90 0 +1000 769 671 93 12 +C00 775 634 96 19 +6400 791 869 99 5 +6510 816 777 9C 8 +6400 819 787 9F 5 +6400 819 697 A2 8 +0 821 505 3F 13 +3000 821 676 A5 10 +6500 824 702 A8 21 +4000 827 707 AB 0 +4000 844 956 AE 0 +4000 846 707 AB 0 +6400 852 789 B1 5 +6900 857 889 B4 0 +3200 862 671 B7 10 +400 864 576 42 15 +4000 874 707 AB 0 +4000 874 707 AB 0 +800 889 636 66 17 +4000 899 707 BA 0 +3400 912 672 BD 10 +6400 916 780 C0 22 +200 918 511 54 14 +6A00 942 996 C 0 +1200 963 673 C3 10 +6900 977 907 C6 20 +4000 993 956 C9 0 +6900 993 889 CC 0 +500 994 582 CF 1 +1C00 1006 669 D2 10 +6400 1021 869 D5 5 +6400 1022 789 D8 5 +6400 1033 780 DB 22 +4000 1043 956 DE 0 +6800 1047 889 E1 0 +1800 1066 672 E4 10 +0 1074 505 3F 13 +800 1076 636 66 17 +400 1077 576 42 15 +4000 1080 200 0 6 +4010 1087 707 BA 0 +6410 1100 780 C0 22 +1600 1108 670 E7 10 +6410 1119 869 99 5 +6410 1119 789 B1 5 +4010 1140 956 AE 0 +6900 1147 889 E1 0 +1A00 1155 675 69 10 +6A00 1161 996 C 0 +200 1173 510 54 14 +C00 1180 632 96 19 +3600 1196 672 EA 10 +600 1204 623 5A 16 +6410 1218 780 7B 22 +400 1219 576 42 15 +1E00 1245 671 ED 10 +0 1263 505 3F 13 +6900 1270 889 F0 0 +6410 1279 787 9F 5 +4000 1279 707 AB 0 +6510 1288 701 A8 21 +4010 1291 956 78 0 +3800 1295 674 F3 10 +A00 1298 639 7E 18 +4000 1307 707 AB 0 +6500 1314 777 9C 8 +6410 1315 697 A2 8 +6400 1317 865 87 5 +6900 1321 904 F6 20 +E00 1336 674 6C 10 +4000 1341 707 F9 0 +4010 1345 782 6F 0 +6710 1352 785 8D 7 +200 1360 510 54 14 +400 1361 576 42 15 +800 1368 637 66 17 +6900 1374 889 FC 0 +6A00 1381 996 C 0 +6810 1385 785 84 2 +3A00 1397 674 FF 10 +4010 1432 879 5D 0 +2200 1445 671 102 10 +0 1450 505 3F 13 +4000 1457 782 105 0 +C00 1476 632 96 19 +3200 1495 671 B7 10 +400 1503 576 42 15 +3F10 1528 766 4E 0 +4000 1543 780 108 0 +3000 1544 676 A5 10 +200 1550 510 54 14 +4010 1554 879 4B 0 +4000 1559 707 10B 0 +4000 1583 673 10E 10 +4000 1584 816 108 0 +A00 1589 638 7E 18 +6A00 1599 995 C 0 +4000 1624 852 108 0 +2110 1631 662 2A 4 +2110 1638 630 27 4 +0 1641 505 3F 13 +400 1645 576 42 15 +4010 1657 883 33 0 +4000 1663 887 108 0 +2110 1679 634 12 4 +4000 1703 923 108 0 +2110 1711 601 3 4 +4100 1729 707 6 0 +2110 1732 606 15 4 +2110 1734 661 1E 4 +2100 1735 708 60 4 +4000 1744 959 108 0 +2410 1747 673 57 12 +4000 1749 964 111 0 +2A10 1764 644 48 11 +2110 1781 574 36 4 +4000 1786 995 108 0 +4100 1794 765 6 0 +2C10 1798 718 51 12 +2110 1805 565 2D 4 +2100 1806 661 60 4 +2E10 1816 741 45 11 +6A00 1820 995 C 0 +4000 1824 1031 108 0 +4100 1859 823 6 0 +4110 1861 780 2A 4 +2810 1864 629 3C 11 +4410 1868 747 27 4 +4600 1868 811 114 3 +4410 1909 752 12 4 +4600 1913 785 117 3 +4100 1922 881 6 0 +2610 1923 660 24 11 +4410 1941 719 3 4 +4600 1949 803 11A 3 +4410 1962 724 15 4 +4410 1964 779 1E 4 +3C10 1970 921 1E 4 +4100 1985 936 6 0 +2100 1987 826 60 4 diff --git a/IMG/NEWRINGB.BDD b/IMG/NEWRINGB.BDD new file mode 100755 index 0000000..457537c Binary files /dev/null and b/IMG/NEWRINGB.BDD differ diff --git a/IMG/NEWRINGX.BDB b/IMG/NEWRINGX.BDB new file mode 100755 index 0000000..a1b4fd9 --- /dev/null +++ b/IMG/NEWRINGX.BDB @@ -0,0 +1,217 @@ +newring0 3000 2000 255 1 24 215 +ring 86 2157 189 1083 +4000 100 200 0 6 +4000 255 786 3 4 +4010 276 944 6 0 +3F00 283 826 9 9 +6A00 283 996 C 0 +3F00 286 964 F 0 +4000 298 818 12 4 +4400 301 724 15 4 +4000 301 891 18 16 +4100 303 887 1B 10 +3F00 303 779 1E 4 +3F00 303 893 21 4 +2600 309 661 24 11 +4000 319 812 27 4 +4400 327 719 3 4 +4010 341 886 6 0 +3F00 348 826 9 9 +4000 354 846 2A 4 +2100 365 567 2D 4 +4000 372 887 30 16 +4400 374 751 12 4 +4000 387 882 33 0 +2100 393 577 36 4 +4400 395 747 27 4 +3E00 397 889 39 0 +4000 413 826 9 9 +2800 416 630 3C 11 +4400 430 779 2A 4 +2100 434 608 15 4 +2100 435 663 1E 4 +0 436 505 3F 13 +400 438 576 42 15 +2100 459 604 3 4 +2E00 463 742 45 11 +2A00 474 646 48 11 +4110 476 767 6 0 +4000 478 879 4B 0 +4000 483 766 4E 0 +2C00 495 723 51 12 +6A00 503 996 C 0 +2100 506 635 12 4 +2100 527 632 27 4 +200 534 510 54 14 +4110 542 708 6 0 +2400 550 677 57 12 +600 561 629 5A 16 +2100 562 663 2A 4 +4000 580 879 5D 0 +400 580 576 42 15 +4000 606 707 60 0 +800 607 635 63 17 +E00 617 674 66 10 +0 629 505 3F 13 +1200 676 673 69 10 +4000 678 782 6C 0 +4000 678 707 6F 0 +6900 686 889 72 0 +4000 689 956 75 0 +6400 694 780 78 22 +600 709 618 5A 16 +A00 711 640 7B 18 +4000 720 673 7E 10 +400 722 576 42 15 +6A00 723 996 C 0 +200 730 510 54 14 +6800 740 785 81 2 +6410 741 865 84 5 +6900 748 900 87 20 +6700 749 785 8A 7 +6900 749 889 8D 0 +1000 771 671 90 12 +C00 775 634 93 19 +6400 791 869 96 5 +6510 816 777 99 8 +6400 819 787 9C 5 +6400 819 697 9F 8 +0 821 505 3F 13 +1600 823 670 A2 10 +6500 824 702 A5 21 +4000 827 707 A8 0 +4000 844 956 AB 0 +4000 846 707 A8 0 +6400 852 789 AE 5 +6900 857 889 B1 0 +400 864 576 42 15 +1800 870 672 B4 10 +4000 874 707 A8 0 +4000 874 707 A8 0 +800 889 636 63 17 +6400 894 780 BA 22 +200 918 511 54 14 +1A00 920 675 BD 10 +6A00 942 996 C 0 +1C00 959 669 C0 10 +6900 977 907 C3 20 +4000 993 956 C6 0 +6900 993 889 C9 0 +6400 1021 869 D2 5 +6400 1022 789 D5 5 +6400 1033 780 D8 22 +4000 1033 705 B7 0 +500 1033 654 CC 1 +1E00 1033 669 CF 10 +4000 1043 956 DB 0 +6800 1047 889 DE 0 +1200 1066 673 69 10 +0 1074 505 3F 13 +800 1076 636 63 17 +400 1077 576 42 15 +4000 1080 200 0 6 +4010 1087 707 B7 0 +6410 1100 780 BA 22 +1400 1108 671 E1 10 +6410 1119 869 96 5 +6410 1119 789 AE 5 +4010 1140 956 AB 0 +6900 1147 889 DE 0 +2200 1161 671 E4 10 +6A00 1161 996 C 0 +200 1173 510 54 14 +C00 1180 632 93 19 +1000 1199 671 90 12 +600 1204 623 5A 16 +6410 1218 780 78 22 +400 1219 576 42 15 +E00 1250 674 66 10 +0 1263 505 3F 13 +6900 1270 889 E7 0 +6410 1279 787 9C 5 +4000 1279 707 A8 0 +6510 1288 701 A5 21 +4010 1291 956 75 0 +A00 1298 639 7B 18 +4000 1307 707 A8 0 +1600 1310 670 A2 10 +6500 1314 777 99 8 +6410 1315 697 9F 8 +6400 1317 865 84 5 +6900 1321 904 EA 20 +4000 1341 707 ED 0 +4010 1345 782 6C 0 +6710 1352 785 8A 7 +1800 1358 672 B4 10 +200 1360 510 54 14 +400 1361 576 42 15 +800 1368 637 63 17 +6900 1374 889 F0 0 +6A00 1381 996 C 0 +6810 1385 785 81 2 +1C00 1402 669 C0 10 +4010 1432 879 5D 0 +0 1450 505 3F 13 +1E00 1457 671 CF 10 +4000 1457 782 F3 0 +C00 1476 632 93 19 +1400 1501 671 E1 10 +400 1503 576 42 15 +3F10 1528 766 4E 0 +4000 1543 780 F6 0 +200 1550 510 54 14 +4000 1550 673 7E 10 +4010 1554 879 4B 0 +4000 1558 707 F9 0 +4000 1584 816 F6 0 +A00 1589 638 7B 18 +1A00 1595 675 BD 10 +6A00 1600 996 C 0 +4000 1624 852 F6 0 +2110 1631 662 2A 4 +2110 1638 630 27 4 +0 1641 505 3F 13 +400 1645 576 42 15 +4010 1657 883 33 0 +4000 1663 887 F6 0 +2110 1679 634 12 4 +4210 1701 719 FC 0 +4000 1703 923 F6 0 +2110 1711 601 3 4 +4100 1729 707 6 0 +2110 1732 606 15 4 +2110 1734 661 1E 4 +4000 1744 959 F6 0 +2410 1747 673 57 12 +4000 1749 963 FF 0 +4210 1756 774 FC 0 +2A10 1764 644 48 11 +2110 1781 574 36 4 +4210 1785 778 102 0 +4000 1786 995 F6 0 +4100 1794 765 6 0 +2C10 1798 718 51 12 +2110 1805 565 2D 4 +2E10 1817 741 45 11 +4210 1817 832 FC 0 +6A00 1820 996 C 0 +4000 1825 1031 F6 0 +4100 1859 823 6 0 +4210 1861 779 2A 4 +2810 1864 629 3C 11 +4410 1868 747 27 4 +4500 1869 826 105 3 +4210 1877 888 FC 0 +4210 1907 892 102 0 +4410 1909 751 12 4 +2610 1923 660 24 11 +4100 1923 881 6 0 +4210 1937 943 FC 0 +4220 1937 826 1E 4 +4500 1940 831 108 3 +4410 1941 719 3 4 +4410 1962 723 15 4 +4410 1964 779 1E 4 +3200 1978 927 9 9 +4100 1988 939 6 0 +7330 2007 824 1E 4 diff --git a/IMG/NEWRINGX.BDD b/IMG/NEWRINGX.BDD new file mode 100755 index 0000000..f0913d0 Binary files /dev/null and b/IMG/NEWRINGX.BDD differ diff --git a/IMG/NLOGOS1.IMG b/IMG/NLOGOS1.IMG new file mode 100644 index 0000000..92f3237 Binary files /dev/null and b/IMG/NLOGOS1.IMG differ diff --git a/IMG/NLOGOS4.IMG b/IMG/NLOGOS4.IMG new file mode 100644 index 0000000..6c766b1 Binary files /dev/null and b/IMG/NLOGOS4.IMG differ diff --git a/IMG/NMATCH12.BDB b/IMG/NMATCH12.BDB new file mode 100755 index 0000000..ce93bd2 --- /dev/null +++ b/IMG/NMATCH12.BDB @@ -0,0 +1,23 @@ +nmatch8 2000 1000 255 0 3 22 +3200 998 233 42 0 +3200 998 361 48 0 +4000 1014 355 54 0 +4000 1014 360 5A 0 +4000 1015 249 60 0 +4000 1015 249 36 0 +4000 1015 367 39 0 +4000 1015 468 66 0 +4600 1027 268 4E 1 +4000 1028 268 51 0 +4100 1159 342 3F 0 +4100 1159 360 3C 0 +4600 1179 392 4E 1 +4000 1181 392 51 0 +4000 1187 360 5D 0 +4000 1193 249 63 0 +4000 1196 468 57 0 +4000 1198 355 69 0 +3200 1202 233 45 0 +3200 1202 361 4B 0 +4000 1372 256 30 0 +4000 1372 367 33 0 diff --git a/IMG/NMATCH12.BDD b/IMG/NMATCH12.BDD new file mode 100755 index 0000000..1c20bab --- /dev/null +++ b/IMG/NMATCH12.BDD @@ -0,0 +1,6848 @@ +20 +42 204 128 1 + + + + + + +  + + +  + + + + + +  +  + +  + + + + + + + + +  +   + + + +  + + + + + + +  +  + + + + + + +  + + + + + +  +    + +  + + +  + + +  + + + + +  + + + + + + +   +   +  + + + + + + + + + +  + + + + +  +  + +  + + + + + + +      + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + +  + + + + + + + + + +  + + + + + + + +    + + + + +  + + + + + + + + + +  + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + +   +  + + + + + + + + + +  + + + + +  +  + +  + + + + + + +      + +  + + +  + + +  + + + + +  + + + + + + +   +   + + + +  + + + + + + +  +  + + + + + + +  + + + + + +  +  + + + + + +  + + +  + + + + + +  +  + +  + + + + + + + + +  +  +  +  + + + + + + + + + + + + + + + + + + + + +   +  + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +    + + +   + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + +    + + + + +  + + + + + + + + + + + + + + +   + +   + + +   + + + + +  + + + + + + + + + + + + + + + + + + +  + +  + +    + + + + + + + + + + + + + + + + + +   + +     + + + + +  + + + + + + + + + + + + + +   + + +  + + + + + + + + +  + + + + + + + + + + + + +   + +  + + + + + + + + + + + + + + + + + + + + + + + + + + +     +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +   + +  + + + + + + + + + + + + + + + + + + + + + + +  + +     + +  + + + + + + + + + + + + + + + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + +     +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    +  +  + + +  + + + + + + + + + + + + + + + + + + +  + + +      + + + + + + + + + + + + + + + + + + + + +  + + +     + + + + + + + + +  + + + + + + + + + +  + +       +   + + + + + + + + + + + + + + + + + + + + +  + +     + +  + + + + + + + + + + + + + + + + + + + +  +      +  + + + + + + + + + + + + + + + +  + +   +  +   + +  + + + + + + + + + + + +  + +   + + +  + + + + + + + + + + + + + + + + + + + + + + + +  + +   + + +  +  + + + + +  + + + + + + + + + + + + + + + + + +   + + + +  + + + + + +  + + + + +  + + + + + + + +  +    + + +    + + + + + + + + +  + + + + + +    + + +   + + +  + + + + + + + + + + + + +   + +   +  +  + + +        + + + + + + + + + + + + + + + +  + + +     + + + +  +   + + +    + + + + + + + + + + + + + + +     +   + + + +    + + +   +  + + + + + + + + + + + + +  + + + + + + +       + + + + +    +  + + +  + + + + + + + + + + + + + + + + + + + + + + + +    +  + + +  + + +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + +  +  +  + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + +          + + +  +  + + + +  + + + + + + + + + + + + + + + + + + + + + + + + +  + +     + + +  +  + + +  + +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +   +  + +  + +  + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + +    +  + +    + + + +  +  + + + + + + + + + + + + + + + + + + + + + + + +     + + +   + + + +   + +  + + + + + + + + + + + + + + + + + + + + + + + +     + + +  +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + +   + +  + + + + +   + + +   +  + + + + + + + + + + + + + + + + + + + + + + +  + +  + + + + + + + + +  + + +  + + + + + +  + + + + + + + + + + + + + + + +  + + + +  + + + + +  + + + +   + + + + + + + + + + + + + + + +  + +   + + + + +   +  + + + + + + +   + +  + + + + + + + + +  + +   + + + +  +    + + +  + + +  + + + + +  + +   + + + + +    + + +   + + +  + + + + +  + +  + + + +   + + + +  + + + + +   + +  +  + + + + + + +  + + + + + + +    + + + + + + +  + + +  +  + +   + + + + + + +  + + + + +  + +   +   + + +   + + + +  + + +   + +   + + + + +  + + + + + + +  + +    + + + +   + + + + + + + +   +  + + +  + + + + + + + + + + + + +  + + +    + + +   + + + + + + +   +  + + + + + + + + + + + + + + + +   + +       + + + +  +   + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + +     +    + + + + + +  +  + + + + + + +   + + + + + + + + + + + + + + + + +         + + + + +  + + +  +  + + + + + + +  + + + + + + + + + + + + + + + + +         + +  + + + + + + +  + +  + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + +  +  + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + +  + + + + +     + + + +  + + + + + + +  + + + + + + + +  + + + + + + + + + + + + + + + +  + + + + +   + + + + + + + + +   + +  +  +  + + + +  + + + + + + + + + + + + + + +    + + + + + + + + + + + + +    + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + +     + + + + + + + + + +    + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +   +  + + + + + + + + +  + +  +    + + + + + + + +    + +  + + + + + +      + + +  + + + + + + +  + +   + +  + + + + + + + + +  + + + + + + + + + + + +           + + + + +   + + + + + + + + +        + +  + + + + + + + + +   + + + + + + + + + + + + + + + + + + + +  + +        + + + + +         + + +  + + + +  + + + + + + + + + + + + + + + + + + + + +   +   + +  + + + + + + + +   +    + +  + +  +  +  + + + + + + + + + + + + + + + + + + + + + + + + +   + +   + + +  + + + + + + +   +  +   + + +  + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +   +   + + + + + +  +    + + +  +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    +  + + + + + + +    + +  + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +   +  + +  + + + + + + + + + + + + + + +  + +  + + + + + + + + + + + + + + +  + + + + + +   + + + +    + +  + + + + + + + + + + + + + + +  + + +  + + + + + + + + + + + + + +  + + + + + + + + +    + + + +    + +  + + + + + + + + +  + +   + + + + + + + + + + + + +  + + + + + + + + +     + +  +   + + + + + + + + + + +  + +   + + + + + + + + + + + + + +         + + + + + + + + + + + + + + + + + + + +    +      + + + + + + + + + + +  + + + + + + + +   + + +  + + + + +      + + + + + + + + + + + + + + + + + + + + + +    + + + + +    + + + + + + + + + + + + +  + + + + + + + + + + +   + + + +   + + + + + + + + + + + + + + + + + + + + + + + +  + + + + +  + + + + + + + + +     +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + + +  + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + +  + + + + + + +        + + + + + + + + + + + +  + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + +  + + +  + + + +      + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + +  + + + +     + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + +  +  + + + + + +       +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +  + + + + + + + + + +  + + +    + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + +  + + + + + + + + + + +  + + + + +  +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + +       + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + +  + + + +      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + +  + + + +  + + + + + + +    + + + + + +  + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + +  + + + + + + + +  + + + + + + + +   + + + + + +  + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + +  + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + +  + + + + + + + + + + +       + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +   + +  +      + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + +   + + + + + + + + +      + + + + + + + + + + + + + + + +  + + + + + + + + + + +    +  + + +  + + + + + + + + + + + + + + +  + + + + + + + +    +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +       + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + +     +      + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +  + + + + + + + + + + + + + + +    +  +      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +  + + + + + + + + + + + + + + + +    +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + +           + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +          + + + + + + + + + + + + + + + + + + + + + + + + +  + +     + + + + + + + + + + + +  +  + +  + + + + +  + +       + + + + + + + + + + + + + + + +  + + + + + + + + + + +  + + + + + + + +     +  + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + +         +  + +   + + + + + + +   + + + + + + + + + + + + + + + + + + + +       48 204 128 1 +   +  + + + + + + + + + + + + + + + + + + + +   +     + +   + + + + + + + + + + + + + + + + +  + + + +      + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + + + + +   + + +  + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + +       + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + +  + + + +  +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + +  + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +   + + + + + + + + + +  + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + +  + + +      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + +   + + + + + + + + + + + + + + + + + + + + + + + + + +  + + +   + + + + + + + + + + + + + + + +  + +  +    + + + + + + + + + + +  + + + + +    + + + + + + +  + + +  + + + +     + + + + + + + + + +  + + + +     + + + + + + + + + + + + + + +  +  + + + +     + + + + + + +   +  + + + +      +    + +    +  + + + + +   + + + +   + + +  + +   + + +  +    + + + + + +  + +    + +      + + + + +  +  +  + +   + + + +  +  + + + + + + + + +      + + + + + +  + +  + + + + + + + + + +       + + + + + + + + + + + + + + + + +     + + + + + + + + +    + + + + + + + + + + +     + + + + + +  + +   + + + + + + + + + +    + + + + + + + + +  +      + + + + +       + + + + + + + +       + +  + + + + + + + + + +        + + + + +          + + + + +            + + + + + +            + + + +  +        +   + +          + +        + +  +       +  + + + + + + + +      +  + + + +  + + + +       +  + + +        + + + + + +  + +          +          + + + + + +         + + + + +           + + + +             + + +         + + +            + + + + + + +           + + + + + + + + + +   +       + + + + + + + +  + + +         + + + + +          + + + + +  +            + + + +               + +  + +           +           + +                           + + + +             + + + +  + + +          + + + +   +          + + + + + + +        + +   +       + +        +       + +            +   + +              +                   + +                     +                    + + + + + + + + + + +                  + + + +                                 +                                                 + + +  + +              + + + +              + +                                                                                                                                                                                                                                                                                                +                                                                                                   +                  + + +                                                                                            + + +             +                               54 184 6 1 + +   +       + + + + + + + + + +  + + + + + + + + + +      + + + + + + + + + +  +       + + + + + + + + +  + + + +   +   + + + + + + + + + +   +  + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  5A 176 7 1 +      60 180 7 1 +      + + +          36 12 106 1 +      39 12 106 1 +   + + +66 184 5 1 +         + + + + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + +   + +  +  +4E 188 65 1 +")皷鰭j"A+鰭栩栩@y+r布栩栩栩栩柧%y+佗忝栩栩栩栩栩栩栩佗栩栩栩栩栩栩栩栩栩栩栩鐡)j)檠姉布栩栩栩栩栩栩栩栩栩栩栩栩栩*}+夫徙)檠駮布栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩}+鰭栩栩栩栩*)皷衾布栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩柧,!漸布栩栩栩栩柧忝柧柧*布栩栩栩栩栩栩栩栩栩栩栩栩柧V栩栩栩栩栩V臧栩栩栩栩栩柧忝忻忻徂鰭*党栩栩栩j築栩栩栩栩栩栩徂V@i*陽栩栩栩栩柯B+!騅忝栩忻栩忻鰭忻徂鰭鰭鰭zj布栩柧布栩栩栩鰭剽j布栩栩栩栩'B揺栩栩栩栩A}忻栩忝忻徂:鰭夫鰭鰭苗*V栩栩hド鰭`_**菓栩栩栩栩A^r栩栩栩栩栩柧@XS喇忻柯苗鰭符蕊鰭鰭苗鰭5陽栩+~部"h_p俛栩栩栩柯y布栩栩栩柧忝忻彙hr鰭鰭苗鰭貧S"喇苗苗陳陳黝%}忻*想栩栩栩栩r栩栩忝柧忻忻忻徂rZ追鰭追追$*"睇陳陳陳陳臧彖"轉柯栩栩栩栩轉忻枋忻忻鰭夫鰭追鎮S'苗苗追陳追4鯢陳陳陳陳5布栩栩栩柧柧怺#夫忻忻徂鰭徂鰭鰭苗追$苗苗追苗陳^可陳*Cy栩栩枌,*忻忻忻柧武乕鰭鰭鰭鰭鰭追鰭鰭苗陳$Yz991r陳EXk栩栩栩y忻忻徂忻r鰭苗追鰭""Y5追追苗苗"kSS"5h栩栩栩弉忻鰭柯鰭鰭追追鰭Y5追追陳陳Y** +"*布栩栩栩忸鰭鰭鰭鰭陳追陳陳5*r陳陳陳$188 +4*}+蹣9想栩栩忻柧+追追鰭鰭追+鰭苗陳 +}8"鉗8 ,*y}夫栩栩栩柧忝柧徂忻B苗陳苗陳陳票鰭陳陳掴~84g8.#蓍詆布栩栩栩栩栩栩 "夫忻忻徂鰭鰭+'追陳陳陳陳苗陳陳$f1?_簓忝栩栩栩栩栩栩栩栩忝彙^徂鰭鰭鰭鰭鰭:r追陳陳陳陳腸!58"50B8DS縋栩栩栩栩栩栩栩柧忝忝忻寡鰭鰭鰭追陳追陳陳陳陳陳8!+350828+)祁布栩栩栩栩@簓忻忻柧徂秒"!追鰭鰭r鰭陳追hr陳陳8):'Z9'D-D*5栩栩柧忻徂"拮忻鰭徂鰭扶*濾鰭追鰭"愽苗陳陳$"珀8^*Z*!.A 2Y* 旌忝忻忻忻"k!夫鰭鰭苗冨j槁陳苗残陳陳追"5} +:'9AD J Yh""袖歹E^忻忻忻鰭鰭hS}追鰭追苗;i残陳陳g5Y"抉35Dfy +Yz""X匐橡 88d鰭徂苗鰭鰭陳鰭陳陳椿"r陳陳陳1r8zY88*}M&A. 尭 8sNEE苗陳鰭苗r!苗苗苗陳hy苗5g0- C +Y嶢坊 O7l;8GG揺琉3Y鷲追賓陳陳陳陳 +'$,'z"J~ 23Yh""X匐橡 V\;HWWW5[G8EE*%苗陳陳陳陳$"S5:,-""" r7NsNF[vlGHcWWcUVNGo r陳陳 +"88 +58q4Ah%X粘 FNF[GGGGGGGG5NG8eWWWQNG[EE8 ,1E3%h"_83"?95os +8s6WQxUV88UGGoNG=tWWc\F[G$i杭傘8A +8XSD +'E ""晶十34振5vGGG|GQ8NG[oHG$8eWWWG[GKSr8*'_ Bヲ偽5VV88vol=FHGGGF8NG[EFGG\FGcWWWGvaL)E3A8\OoTTNF[NGGGWc5VG5OGGEGG +=[GGv8dd5 J0:^_ +S8:^DrdO7oo@;N=[QQGGGGGG6oGG6GWWF68;FG[GF8Ux7[GHEGO J?1,*81J2Y"" 85;oo=GQQPGGGV;=G656GGGE;FG@5HGc=PdNGO5NGGsuFPWcR58 J 1z******h8 +8+4&'^,*X ?oTTF6HGGW{{WWGGQK6EdUU6HGG@5NGO5HGGHWGH@HGGGHmO\5 J?-9**EE'9*9 N[GGGGWWGH6WGGEVvsFQttcbGOGHHGGWoHG58E58 J01 0hY 8$ +3%,Sk 0-FGGGHxdr8WG;vFHF7;V5WWPKHG5QGG5U8D&-A *^D 234z* ;GGGF8Ut{W;8|GGo88[c{W5VNG;\\EL})~j88)pi)Y"Dq5GGG=ErdOs6WtE8uGGHU\OvTwuGWW\8vxVDy!!!!!$ghCijk.&HGGGOdOFlT=FmHGcnUoGGGG[F[G7E;V5D&-AB8J2 ^_*SS`a97GGGG[FHGGGWWbGGGcdOGGG]edJ2f ,YZ""" ;[GGGGGGGGQU\U]WGGQ888J >4"S, 5TGGGQUV55GWGGE&:4X**J.8NGGGOFPQR5&'AB******A4JKHGGF5LM(/"D8E ,;FGHF&'AI!!!!!!;<=5>?@5&'ABC&56789 &:. /01 234,"*+, &-.,******""*#$%&'()*""  !" + 51 192 71 1 + 3F 96 18 1 +  +    + + + + + + + + + + + + + + +   + + + +   + + + + + + + + + +  + +  + +  + + + + +  + + +  + + + +  + + +  + + +  + + + +    + +   + + + + +  + + + + +     + + + + + + + + + + + + +   + + + +  + + + + + + + + +    + +  +   + + +  + + + +      + + + + +  + +      + + + + +  + +  +    +  +  + + + + + + + + + + + +  + + + + + + + + +   + + + + + + + + +  + + + + + +  + +  + + + + + +  + + +  +   +  + + + + +   + + + + + + + + +  + +   + + + +  + + + + +  + + + +  +        3C 96 31 1 + +     +  +    + +  +     + +  + + +     + + + +  + + +   +    + + + + + +  + +     + + + + + +     +  +  + +   +    + +       +       +     +  +    + + +  + +     + +   + + +   + + +   + + + + + +  + +  +   + +  + + + + + + + + + + + +   +    + + + + + + + + + + + + +   + + +   + + + + + + + + + + + + +   +   + + + + + + +            5D 196 7 1 +     +         63 192 7 1 +  +    57 188 6 1 + + + + + + + + + + + +  +   +          +  +  + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + +   + + +      +  + + + + + + + + + + + + + + + +  + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + +   + + + + + +   + +  + + + + + + + + + + + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + + + +  + + + + + +   + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + +                  69 184 5 1 + + + + + + + + +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + +   + + + +    + + + +  + + + + + + + + + + + + + + + + + + + + + + + +    + + +    + +  + + +     + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +  + + +  + + + +  + + +   + + +  +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + +   + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + 45 204 128 1 +                         +                                                                     +                                            +         +           + + + +                                      +              + +                +                +             +                         + +           +                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     +                +                                                                                                                                                               + +                                +              + +                            + +  +              + + + +  +            + +             + + +             + +                                                                                                                                                                                                 +                                                                                                                                                                                                                                                                                    +                                                +                                           4B 204 128 1 +                                                                                                                                                                                                                                                                                                                            +    +     +    + +              +       + +       + +         + +            +                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              30 12 99 1 +  + + + + + + + + + +   + + + 33 12 101 1 +            +   + +  + +   NNSLAB1_P 22 +vBU>4:61-)%n!M,  fE$NRZRLOGO 252 + 4 +,G$mDe naU$M razorimg.tbl +***> 48cb6f0,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* RAZOR ****************************************************************** +ZON> +MON> +BON> +POF> +; diff --git a/IMG/RAZOR.LD2 b/IMG/RAZOR.LD2 new file mode 100755 index 0000000..3692461 --- /dev/null +++ b/IMG/RAZOR.LD2 @@ -0,0 +1,111 @@ +rzr_hit.img +---> R2AH2D03,R2AH2D05,R2AH2D06,R2AH2D07,R4AH4C03,R4AH4C04,R4AH4C05 +---> R4AH4C06,R4AH4C07,R4AH4C08,R4AM4B02,R4AM4B03,R4AM4B04,R4AM4B05 +---> R2BK3E01,R4BK3D01,R4BK3D02,R4BK3D03,R4BK3D05,R4BK3D06,R2AE2A01 +---> R2AE2A02,R2AE2A03,R2AE2A04,R2AE2A05,R2AE2A06,R2AE2A07,R2AE2A08 +---> R4AE4B01,R4AE4B02,R4AE4B03,R4AE4B04,R4AE4B05,R4AE4B06,R4AE4B07 +---> R4AE4B08,R4AE4B09,R4AE4B10,R4AE4B11,R4AE4B12,R4LB4Z01,R4LB4Z02 +---> R4LB4Z03,R4LB4Z04,R3AM3D01,R3AM3D02,R3AM3D03,R3AM3D04,R3AM3D05 +---> R3AM3D06,R3AM3D07,R3GU2A01,R3GU2A02,R3GU2A03,R3GU2A04,R3GU2A05 +---> R3GU2A06,R3GU2A07,R3GU2A08,R3GU2A09,R3GU4A03,R3GU4A04,R3GU4A05 +---> R3GU4A06,R3GU4A07,R3GU4A08,R3GU4A09,R3GU4A10,R3TD3A01,R3TD3A02 +---> R3TD3A03,R3TD3A04,R3TD3A05,R3TD3A06,R3TD3A07,R3TD3A08,R3TD3A09 +---> R4AM3X01,R4AM3X02,R4AM3X03,R4AM3X04,R4AM3X05,R4AM3X06,R4AM3X07 +---> R4AM3X08 +rzr_kik.img +---> R4NM3C01,R4NM3C02,R4NM3C03,R4NM3C04,R4NM3C05,R4NM3C06,R4NM3C07 +---> R4NM3C08,R4NM3C09,R4NM3C10,R3DC3C02,R3DC3C04,R3DC3C05,R3DC3C06 +---> R3DC3C07,R3DC3C08,R3DC3C09,R3DC3C10,R4KM3A01,R4KM3A02,R4KM3A03 +---> R4KM3A04,R4KM3A05,R4KM3A06,R4KM3A07,R4KM3A08,R4KM3A09,R4KM3A10 +---> R2KM3X09 +rzr_msc.img +---> R4SW4Z01,R4SW4Z02,R4SW4Z03,R4SW4Z04,R4MF4B01,R4MF4B02,R4MF4B03 +---> R4MF4B04,R4MF4B05,R4MF4B06,R4MF4B07,R4MF4B08,R4MF4B09,R4GF3B02 +---> R4GF3B03,R4GF3B04,R4GF3B05,R4GF3B06,R4GF3B07,R4GF3B08,R4GF3B09 +---> R4GF3B10,R4GF3B01,R3RL1B01,R3RL1B02,R3RL1B03,R3RL1B04,R3RL1B05 +---> R3RL1B06,R3RL1B07,R3RL1B08,R3RL1B09,R3RL1B10,R3RL1B11,R4WP5C01 +---> R4WP5C02,R4WP5C03,R4WP5C04,R4WP5C05,R4WP5C06,R4WP5C07,R4WP5C08 +---> R4FC3B04,R4FC3B05,R4FC3B06,R4FC3B07,R4FC3B08,R4FC3B09,R4FC3B10 +---> R3RC3R01,R3RC3R02,R3RC3R03,R3RC3R04 +rzr_pnc.img +---> R2MK3A03,R2MK3A04,R2MK3A05,R2MK3A06,R2PU3A01,R2PU3A02,R2PU3A03 +---> R2PU3A04,R2PU3A05,R2PU3A06,R2PU3A07,R2PU3A08,R4PU3A01,R4PU3A02 +---> R4PU3A03,R4PU3A04,R4PU3A05,R4PU3A06,R4PU3A07,R4PU3A08,R2BC3B01 +---> R2BC3B02,R2BC3B03,R2BC3B04,R2BC3B05,R2BC3B06,R2BC3B07,R2BC3B08 +---> R4BC3A01,R4BC3A02,R4BC3A03,R4BC3A04,R4BC3A05,R4BC3A06,R4BC3A07 +---> R4BC3A08,R4UP3C01,R4UP3C02,R4UP3C03,R4UP3C04,R4UP3C05,R4UP3C06 +---> R4UP3C07,R4UP3C08,R4PS3A03,R4PS3A05,R4PS3A06,R4PS3A07,R4PS3A08 +---> R4PJ4B01,R4PJ4B02,R4PJ4B03,R4PJ4B04,R4PJ4B05,R4PJ4B06,R2PF2B02 +---> R2PF2B03,R2PF2B05,R2PF2B06,R2PF2B07,R2PF2B08,R2PF2B09,R2PF2B10 +---> R4PF4B02,R4PF4B03,R4PF4B04,R4PF4B05,R4PF4B07,R4PF4B08,R4PF4B09 +---> R4PF4B10 +rzr_wlk.img +---> R2TW2Z01,R2TW2Z02,R2TW2Z03,R2TW2Z04,R4TW4Z01,R4TW4Z02,R4TW4Z03 +---> R4TW4Z04,R1TT5Z01,R1TT5Z02,R1TT5Z03,R1TT5Z04,R1TR5Z01,R1TR5Z02 +---> R1TR5Z03,R1TR5Z04,R2ST2C03,R2ST2C05,R2ST2C07,R2ST2C09,R4ST4G01 +---> R4ST4G03,R4ST4G05,R4ST4G07,R2WL1A01,R2WL1A02,R2WL1A03,R2WL1A04 +---> R2WL1A05,R2WL1A06,R2WL1A07,R2WL1A08,R2WL1A09,R2WL1A10,R2WL1A11 +---> R2WL1A12,R2WL1A13,R2WL1A14,R2WL1A15,R2WL1A16,R2WL1A17,R2WL1A18 +---> R2WL1A19,R2WL1A20,R2WL2A01,R2WL2A02,R2WL2A03,R2WL2A04,R2WL2A05 +---> R2WL2A06,R2WL2A07,R2WL2A08,R2WL2A09,R2WL2A10,R2WL2A11,R2WL2A12 +---> R2WL2A13,R2WL2A14,R2WL2A15,R2WL2A16,R2WL2A17,R2WL2A18,R2WL2A19 +---> R2WL2A20,R2WL4B01,R2WL4B02,R2WL4B03,R2WL4B04,R2WL4B05,R2WL4B06 +---> R2WL4B07,R2WL4B08,R2WL4B09,R2WL4B10,R2WL4B11,R2WL4B12,R2WL4B13 +---> R2WL4B14,R2WL4B15,R2WL4B16,R2WL4B17,R2WL4B18,R2WL4B19,R2WL4B20 +---> R2WL4B21,R4WL2A01,R4WL2A02,R4WL2A03,R4WL2A04,R4WL2A05,R4WL2A06 +---> R4WL2A07,R4WL2A08,R4WL2A09,R4WL2A10,R4WL2A11,R4WL2A12,R4WL2A13 +---> R4WL2A14,R4WL2A15,R4WL2A16,R4WL2A17,R4WL2A18,R4WL2A19,R4WL2A20 +---> R4WL4A01,R4WL4A02,R4WL4A03,R4WL4A04,R4WL4A05,R4WL4A06,R4WL4A07 +---> R4WL4A08,R4WL4A09,R4WL4A10,R4WL4A11,R4WL4A12,R4WL4A13,R4WL4A14 +---> R4WL4A15,R4WL4A16,R4WL4A17,R4WL4A18,R4WL5A01,R4WL5A02,R4WL5A03 +---> R4WL5A04,R4WL5A05,R4WL5A06,R4WL5A07,R4WL5A08,R4WL5A09,R4WL5A10 +---> R4WL5A11,R4WL5A12,R4WL5A13,R4WL5A14,R4WL5A15,R4WL5A16,R4WL5A17 +---> R4WL5A18,R4YR3A01,R4YR3A02,R4YR3A03,R4YR3A04,R3RN3D01,R3RN3D02 +---> R3RN3D03,R3RN3D04,R3RN3D05,R3RN3D06,R3RN3D07,R3RN3D08,R3RN3D09 +---> R3RN3D10,R3RN3D11,R3RN3D12,R3RN3D13,R3RN3D14,R4BO3Z01,R4BO3Z02 +---> R4BO3Z03,R4BO3Z04,R4BO3Z05,R4BO3Z06,R4BO3Z07,R4BO3Z08,R4BO3Z09 +---> R4BO3Z10 +rzr_rjr.img +---> R3LE3A01,R3LE3A02,R3LE3A04,R3DD3C01,R3DD3C02,R3DD3C03,R3DD3C06 +---> R3DD3C07,R3AM3X01,R3TN3X01,R3TN3X02,R3TN3X03,R3TN3X04,R3TN3X05 +rzr_mjt.img +---> R3ZS3C01,R3ZS3C02,R3ZS3C03,R4GH3A01,R4GH3A02,R4GH3A03,R4GH3A05 +---> R4GH3A06,R4GH3A07,R4SW4D03,R4SW4D04,R4SW4D05,R4SW4D06,R4SW4D07 +---> R4SW4D08,R4SW4D09,R4SW4D10,R4SW4D11,R3AB3A01,R3AB3A03,R3AB3A04 +---> R3ZR3B01,R3ZR3B02,R3ZR3B03,R3ZR3C01,R3ZR3C02,R3ZR3C03,R3ZR3C04 +---> R3ZR3C05,R3ZR3C06,R3ZR3C07,R4POGO03,R4POGO04,R4POGO05,R3PN5A01 +---> R3PN5A02,R3PN5A03,R3PN5A04,R3PN5A05,R3PN5A06,R5RV5A02,R5RV5A03 +---> R5RV5A04,R5RV5A05,R5RV5A06,R5RV5A07,R5RV5A08,R5RV5A09,R5RV5A10 +---> R5RV5A11,R5RV5A12,R5RV5A13,R5RV5A14,R5RV5A15,R5RV5A16,R5RV5A17 +---> R5RV5A18,R3BR3Z01,R3BR3Z02,R3BR3Z03,R3MS3Z01,R3MS3Z02,R3MS3Z03 +---> R3MS3Z04,R3MS3Z05,R3MS3Z06,R3MS3Q01,R3MS3Q02,R3MS3Q03,R3MS3Q04 +---> R4LD4A01,R4LD4A02,R4LD4A03,R4LD4A04,R4LD4A05,R4LD4A06,R4LD4A07 +---> R4CO4A01,R4CO4A02,R4CO4A03,R4CO4A04,R4CO4A05,R4CO4A06,R4CO4A07 +---> R4CO4A08,R3DU3B02,R3DU3B04,R3GP3Z01,R3GP3Z02,R3GP3Z03,R3GP3Z04 +---> R3GP3Z05,R3GP3Z06,R3GP3Z07,R3GP3Z08,R3BF3A01,R3BF3A02,R3BF3A04 +---> R3BF3A05,R3BF3A06,R3BF3A07,R3BF3A09,R3BF3A10,R4BZ4A01,R3HB3A03 +---> R3HB3A02 +rzr_jms.img +---> R3RG3B01,R3RG3B02,R3RG3B03,R3RG3B04,R3RG3B05,R3RG3B06,R3RG3B07 +---> R3RG3Z01,R3RG3Z02,R3RG3Z03,R3RG3B08,R3RG3B09,R3RG3B10,R3RG3B11 +---> R3RG3B12,R3RG3B13,R3RG3B14,R3RG3B15,R3RG3B16,R3FD3B01,R3FD3B02 +---> R3FD3B03,R3FD3B04,R3FD3B05,R3FD3B06,R3FD3B07,R3FD3B08,R3FD3B09 +---> R3HG3B01,R3HG3B02,R3HG3B03,R3HG3B04,R3HG3B05,R3HG3B06,R4MP4D01 +---> R4MP4D02,R4MP4D03,R4MP4D04,R4MP4D05,R4MP4D06,R4MP4D07,R4MP4D08 +---> R4MP4D09,R2MP2A01,R2MP2A02,R2MP2A03,R2MP2A04,R2MP2A05,R2MP2A06 +---> R2MP2A07,R2MP2A08,R2MP2A09,R2CT2E01,R2CT2E02,R2CT2E03,R2CT2E04 +---> R2CT2E05,R2CT2E06,R2CT2E07,R2CT2E08,R2CT2E09,R2CT2E10,R2CT2E11 +---> R4SB4A01,R4SB4A02,R4SB4A03,R4SB4A04,R4SB4A05,R4SB4A06,R4SB4A07 +---> R4SB4A08,R4SB4A09,R4SB4A10,R3PG3B01,R3PG3B02,R3PG3B03,R3PG3B04 +---> R3PG3B05,R3PG3B06,R3PG3B07,R3PG3B08,R3PG3B09,R3PG3B10,R4FT3A02 +---> R4FT3A03,R4FT3A04,R4FT3A05,R4FT3A06,R4FT3A07,R4FT3A08,R4FT3A09 +---> R3RZ3S02,R3RZ3S03,R3RZ3S04,R3RZ3S05,R3RZ3S06,R3RZ3S07,R3RZ3S08 +---> R3RZ3S09,R3RZ3S10,R3RZ3S12,R3RD3D01,R3RD3D02,R3RD3D03,R3RD3D04 +---> R3RD3D05,R3RD3D06,R3RD3D07,R3RD3D08,R3RD3D09,R3RD3D11,R3RR3Z02 +---> R3RR3Z03,R3RR3Z04,R3RR3Z05,R3RR3Z06,R3RR3Z07,R3RR3Z08,R3RR3Z09 +rzr_jake.img +---> R4WA4C01,R4WA4C02,R4WA4C03,R4WA4C04,R4WA4C05,R4WA4C06,R4WA4C07 +---> R4WA4C08,R4WA4C09,R4CS4A01,R4CS4A02,R4CS4A03,R4CS4A04,R4CS4A05 +---> R4CS4A06,R4CS4A07,R4CS4A08,R3CR3A01,R3CR3A02,R3CR3A03,R3CR3A04 +---> R3CR3A05,R3CR3A06,R3CR3A07,R3CR3A08,R3CR3A09,R3CR3A10,R3CR3A11 +---> R3CR3A12,R4JD4A03,R4JD4A04,R4JD4A05,R4JD4A06,R4JD4A07,R4JD4A08 diff --git a/IMG/RAZOR.LOD b/IMG/RAZOR.LOD new file mode 100644 index 0000000..8079b8f --- /dev/null +++ b/IMG/RAZOR.LOD @@ -0,0 +1,123 @@ +ASM> razorimg.tbl +***> 48cb6f0,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* RAZOR ****************************************************************** +ZON> +MON> +BON> +POF> +; +rzr_hit.img +---> R2AH2D03,R2AH2D05,R2AH2D06,R2AH2D07,R4AH4C03,R4AH4C04,R4AH4C05 +---> R4AH4C06,R4AH4C07,R4AH4C08,R4AM4B02,R4AM4B03,R4AM4B04,R4AM4B05 +---> R2BK3E01,R4BK3D01,R4BK3D02,R4BK3D03,R4BK3D05,R4BK3D06,R2AE2A01 +---> R2AE2A02,R2AE2A03,R2AE2A04,R2AE2A05,R2AE2A06,R2AE2A07,R2AE2A08 +---> R4AE4B01,R4AE4B02,R4AE4B03,R4AE4B04,R4AE4B05,R4AE4B06,R4AE4B07 +---> R4AE4B08,R4AE4B09,R4AE4B10,R4AE4B11,R4AE4B12,R4LB4Z01,R4LB4Z02 +---> R4LB4Z03,R4LB4Z04,R3AM3D01,R3AM3D02,R3AM3D03,R3AM3D04,R3AM3D05 +---> R3AM3D06,R3AM3D07,R3GU2A01,R3GU2A02,R3GU2A03,R3GU2A04,R3GU2A05 +---> R3GU2A06,R3GU2A07,R3GU2A08,R3GU2A09,R3GU4A03,R3GU4A04,R3GU4A05 +---> R3GU4A06,R3GU4A07,R3GU4A08,R3GU4A09,R3GU4A10,R3TD3A01,R3TD3A02 +---> R3TD3A03,R3TD3A04,R3TD3A05,R3TD3A06,R3TD3A07,R3TD3A08,R3TD3A09 +---> R4AM3X01,R4AM3X02,R4AM3X03,R4AM3X04,R4AM3X05,R4AM3X06,R4AM3X07 +---> R4AM3X08 +rzr_kik.img +---> R4NM3C01,R4NM3C02,R4NM3C03,R4NM3C04,R4NM3C05,R4NM3C06,R4NM3C07 +---> R4NM3C08,R4NM3C09,R4NM3C10,R3DC3C02,R3DC3C04,R3DC3C05,R3DC3C06 +---> R3DC3C07,R3DC3C08,R3DC3C09,R3DC3C10,R4KM3A01,R4KM3A02,R4KM3A03 +---> R4KM3A04,R4KM3A05,R4KM3A06,R4KM3A07,R4KM3A08,R4KM3A09,R4KM3A10 +---> R2KM3X09 +rzr_msc.img +---> R4SW4Z01,R4SW4Z02,R4SW4Z03,R4SW4Z04,R4MF4B01,R4MF4B02,R4MF4B03 +---> R4MF4B04,R4MF4B05,R4MF4B06,R4MF4B07,R4MF4B08,R4MF4B09,R4GF3B02 +---> R4GF3B03,R4GF3B04,R4GF3B05,R4GF3B06,R4GF3B07,R4GF3B08,R4GF3B09 +---> R4GF3B10,R4GF3B01,R3RL1B01,R3RL1B02,R3RL1B03,R3RL1B04,R3RL1B05 +---> R3RL1B06,R3RL1B07,R3RL1B08,R3RL1B09,R3RL1B10,R3RL1B11,R4WP5C01 +---> R4WP5C02,R4WP5C03,R4WP5C04,R4WP5C05,R4WP5C06,R4WP5C07,R4WP5C08 +---> R4FC3B04,R4FC3B05,R4FC3B06,R4FC3B07,R4FC3B08,R4FC3B09,R4FC3B10 +---> R3RC3R01,R3RC3R02,R3RC3R03,R3RC3R04 +rzr_pnc.img +---> R2MK3A03,R2MK3A04,R2MK3A05,R2MK3A06,R2PU3A01,R2PU3A02,R2PU3A03 +---> R2PU3A04,R2PU3A05,R2PU3A06,R2PU3A07,R2PU3A08,R4PU3A01,R4PU3A02 +---> R4PU3A03,R4PU3A04,R4PU3A05,R4PU3A06,R4PU3A07,R4PU3A08,R2BC3B01 +---> R2BC3B02,R2BC3B03,R2BC3B04,R2BC3B05,R2BC3B06,R2BC3B07,R2BC3B08 +---> R4BC3A01,R4BC3A02,R4BC3A03,R4BC3A04,R4BC3A05,R4BC3A06,R4BC3A07 +---> R4BC3A08,R4UP3C01,R4UP3C02,R4UP3C03,R4UP3C04,R4UP3C05,R4UP3C06 +---> R4UP3C07,R4UP3C08,R4PS3A03,R4PS3A05,R4PS3A06,R4PS3A07,R4PS3A08 +---> R4PJ4B01,R4PJ4B02,R4PJ4B03,R4PJ4B04,R4PJ4B05,R4PJ4B06,R2PF2B02 +---> R2PF2B03,R2PF2B05,R2PF2B06,R2PF2B07,R2PF2B08,R2PF2B09,R2PF2B10 +---> R4PF4B02,R4PF4B03,R4PF4B04,R4PF4B05,R4PF4B07,R4PF4B08,R4PF4B09 +---> R4PF4B10 +rzr_wlk.img +---> R2TW2Z01,R2TW2Z02,R2TW2Z03,R2TW2Z04,R4TW4Z01,R4TW4Z02,R4TW4Z03 +---> R4TW4Z04,R1TT5Z01,R1TT5Z02,R1TT5Z03,R1TT5Z04,R1TR5Z01,R1TR5Z02 +---> R1TR5Z03,R1TR5Z04,R2ST2C03,R2ST2C05,R2ST2C07,R2ST2C09,R4ST4G01 +---> R4ST4G03,R4ST4G05,R4ST4G07,R2WL1A01,R2WL1A02,R2WL1A03,R2WL1A04 +---> R2WL1A05,R2WL1A06,R2WL1A07,R2WL1A08,R2WL1A09,R2WL1A10,R2WL1A11 +---> R2WL1A12,R2WL1A13,R2WL1A14,R2WL1A15,R2WL1A16,R2WL1A17,R2WL1A18 +---> R2WL1A19,R2WL1A20,R2WL2A01,R2WL2A02,R2WL2A03,R2WL2A04,R2WL2A05 +---> R2WL2A06,R2WL2A07,R2WL2A08,R2WL2A09,R2WL2A10,R2WL2A11,R2WL2A12 +---> R2WL2A13,R2WL2A14,R2WL2A15,R2WL2A16,R2WL2A17,R2WL2A18,R2WL2A19 +---> R2WL2A20,R2WL4B01,R2WL4B02,R2WL4B03,R2WL4B04,R2WL4B05,R2WL4B06 +---> R2WL4B07,R2WL4B08,R2WL4B09,R2WL4B10,R2WL4B11,R2WL4B12,R2WL4B13 +---> R2WL4B14,R2WL4B15,R2WL4B16,R2WL4B17,R2WL4B18,R2WL4B19,R2WL4B20 +---> R2WL4B21,R4WL2A01,R4WL2A02,R4WL2A03,R4WL2A04,R4WL2A05,R4WL2A06 +---> R4WL2A07,R4WL2A08,R4WL2A09,R4WL2A10,R4WL2A11,R4WL2A12,R4WL2A13 +---> R4WL2A14,R4WL2A15,R4WL2A16,R4WL2A17,R4WL2A18,R4WL2A19,R4WL2A20 +---> R4WL4A01,R4WL4A02,R4WL4A03,R4WL4A04,R4WL4A05,R4WL4A06,R4WL4A07 +---> R4WL4A08,R4WL4A09,R4WL4A10,R4WL4A11,R4WL4A12,R4WL4A13,R4WL4A14 +---> R4WL4A15,R4WL4A16,R4WL4A17,R4WL4A18,R4WL5A01,R4WL5A02,R4WL5A03 +---> R4WL5A04,R4WL5A05,R4WL5A06,R4WL5A07,R4WL5A08,R4WL5A09,R4WL5A10 +---> R4WL5A11,R4WL5A12,R4WL5A13,R4WL5A14,R4WL5A15,R4WL5A16,R4WL5A17 +---> R4WL5A18,R4YR3A01,R4YR3A02,R4YR3A03,R4YR3A04,R3RN3D01,R3RN3D02 +---> R3RN3D03,R3RN3D04,R3RN3D05,R3RN3D06,R3RN3D07,R3RN3D08,R3RN3D09 +---> R3RN3D10,R3RN3D11,R3RN3D12,R3RN3D13,R3RN3D14,R4BO3Z01,R4BO3Z02 +---> R4BO3Z03,R4BO3Z04,R4BO3Z05,R4BO3Z06,R4BO3Z07,R4BO3Z08,R4BO3Z09 +---> R4BO3Z10 +rzr_rjr.img +---> R3LE3A01,R3LE3A02,R3LE3A04,R3DD3C01,R3DD3C02,R3DD3C03,R3DD3C06 +---> R3DD3C07,R3AM3X01,R3TN3X01,R3TN3X02,R3TN3X03,R3TN3X04,R3TN3X05 +rzr_mjt.img +---> R3ZS3C01,R3ZS3C02,R3ZS3C03,R4GH3A01,R4GH3A02,R4GH3A03,R4GH3A05 +---> R4GH3A06,R4GH3A07,R4SW4D03,R4SW4D04,R4SW4D05,R4SW4D06,R4SW4D07 +---> R4SW4D08,R4SW4D09,R4SW4D10,R4SW4D11,R3AB3A01,R3AB3A03,R3AB3A04 +---> R3ZR3B01,R3ZR3B02,R3ZR3B03,R3ZR3C01,R3ZR3C02,R3ZR3C03,R3ZR3C04 +---> R3ZR3C05,R3ZR3C06,R3ZR3C07,R4POGO03,R4POGO04,R4POGO05,R3PN5A01 +---> R3PN5A02,R3PN5A03,R3PN5A04,R3PN5A05,R3PN5A06,R5RV5A02,R5RV5A03 +---> R5RV5A04,R5RV5A05,R5RV5A06,R5RV5A07,R5RV5A08,R5RV5A09,R5RV5A10 +---> R5RV5A11,R5RV5A12,R5RV5A13,R5RV5A14,R5RV5A15,R5RV5A16,R5RV5A17 +---> R5RV5A18,R3BR3Z01,R3BR3Z02,R3BR3Z03,R3MS3Z01,R3MS3Z02,R3MS3Z03 +---> R3MS3Z04,R3MS3Z05,R3MS3Z06,R3MS3Q01,R3MS3Q02,R3MS3Q03,R3MS3Q04 +---> R4LD4A01,R4LD4A02,R4LD4A03,R4LD4A04,R4LD4A05,R4LD4A06,R4LD4A07 +---> R4CO4A01,R4CO4A02,R4CO4A03,R4CO4A04,R4CO4A05,R4CO4A06,R4CO4A07 +---> R4CO4A08,R3DU3B02,R3DU3B04,R3GP3Z01,R3GP3Z02,R3GP3Z03,R3GP3Z04 +---> R3GP3Z05,R3GP3Z06,R3GP3Z07,R3GP3Z08,R3BF3A01,R3BF3A02,R3BF3A04 +---> R3BF3A05,R3BF3A06,R3BF3A07,R3BF3A09,R3BF3A10,R4BZ4A01,R3HB3A03 +---> R3HB3A02 +rzr_jms.img +---> R3RG3B01,R3RG3B02,R3RG3B03,R3RG3B04,R3RG3B05,R3RG3B06,R3RG3B07 +---> R3RG3Z01,R3RG3Z02,R3RG3Z03,R3RG3B08,R3RG3B09,R3RG3B10,R3RG3B11 +---> R3RG3B12,R3RG3B13,R3RG3B14,R3RG3B15,R3RG3B16,R3FD3B01,R3FD3B02 +---> R3FD3B03,R3FD3B04,R3FD3B05,R3FD3B06,R3FD3B07,R3FD3B08,R3FD3B09 +---> R3HG3B01,R3HG3B02,R3HG3B03,R3HG3B04,R3HG3B05,R3HG3B06,R4MP4D01 +---> R4MP4D02,R4MP4D03,R4MP4D04,R4MP4D05,R4MP4D06,R4MP4D07,R4MP4D08 +---> R4MP4D09,R2MP2A01,R2MP2A02,R2MP2A03,R2MP2A04,R2MP2A05,R2MP2A06 +---> R2MP2A07,R2MP2A08,R2MP2A09,R2CT2E01,R2CT2E02,R2CT2E03,R2CT2E04 +---> R2CT2E05,R2CT2E06,R2CT2E07,R2CT2E08,R2CT2E09,R2CT2E10,R2CT2E11 +---> R4SB4A01,R4SB4A02,R4SB4A03,R4SB4A04,R4SB4A05,R4SB4A06,R4SB4A07 +---> R4SB4A08,R4SB4A09,R4SB4A10,R3PG3B01,R3PG3B02,R3PG3B03,R3PG3B04 +---> R3PG3B05,R3PG3B06,R3PG3B07,R3PG3B08,R3PG3B09,R3PG3B10,R4FT3A02 +---> R4FT3A03,R4FT3A04,R4FT3A05,R4FT3A06,R4FT3A07,R4FT3A08,R4FT3A09 +---> R3RZ3S02,R3RZ3S03,R3RZ3S04,R3RZ3S05,R3RZ3S06,R3RZ3S07,R3RZ3S08 +---> R3RZ3S09,R3RZ3S10,R3RZ3S12,R3RD3D01,R3RD3D02,R3RD3D03,R3RD3D04 +---> R3RD3D05,R3RD3D06,R3RD3D07,R3RD3D08,R3RD3D09,R3RD3D11,R3RR3Z02 +---> R3RR3Z03,R3RR3Z04,R3RR3Z05,R3RR3Z06,R3RR3Z07,R3RR3Z08,R3RR3Z09 +rzr_jake.img +---> R4WA4C01,R4WA4C02,R4WA4C03,R4WA4C04,R4WA4C05,R4WA4C06,R4WA4C07 +---> R4WA4C08,R4WA4C09,R4CS4A01,R4CS4A02,R4CS4A03,R4CS4A04,R4CS4A05 +---> R4CS4A06,R4CS4A07,R4CS4A08,R3CR3A01,R3CR3A02,R3CR3A03,R3CR3A04 +---> R3CR3A05,R3CR3A06,R3CR3A07,R3CR3A08,R3CR3A09,R3CR3A10,R3CR3A11 +---> R3CR3A12,R4JD4A03,R4JD4A04,R4JD4A05,R4JD4A06,R4JD4A07,R4JD4A08 + \ No newline at end of file diff --git a/IMG/RAZ_SPEC.IMG b/IMG/RAZ_SPEC.IMG new file mode 100644 index 0000000..48d601e Binary files /dev/null and b/IMG/RAZ_SPEC.IMG differ diff --git a/IMG/RCKCHIPS.IMG b/IMG/RCKCHIPS.IMG new file mode 100644 index 0000000..d8a14e4 Binary files /dev/null and b/IMG/RCKCHIPS.IMG differ diff --git a/IMG/REDCYC.SRC b/IMG/REDCYC.SRC new file mode 100755 index 0000000..bf95126 --- /dev/null +++ b/IMG/REDCYC.SRC @@ -0,0 +1,11 @@ +redcyc: + .word 07c00h,07c20h,07c40h,07c60h,07c80h,07ca0h,07cc0h + .word 07ce0h,07d00h,07d20h,07d40h,07d60h,07d80h,07da0h,07dc0h + .word 07de0h,07e00h,07e20h,07e40h,07e60h,07e80h,07ea0h + .word 07ec0h,07ee0h,07f00h,07f20h,07f40h,07f60h,07f80h,07fa0h +blucyc: + .word 0001fh,0041fh,0081fh,00c1fh,0101fh,0141fh,0181fh + .word 01c1fh,0201fh,0241fh,0281fh,02c1fh,0301fh,0341fh,0381fh + .word 03c1fh,0401fh,0441fh,0481fh,04c1fh,0501fh,0541fh,0581fh + .word 05c1fh,0601fh,0641fh,0681fh,06c1fh,0701fh,0741fh + \ No newline at end of file diff --git a/IMG/REF.BAT b/IMG/REF.BAT new file mode 100644 index 0000000..1948983 --- /dev/null +++ b/IMG/REF.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld ref ref_hit.img ref_wlk.img +@copy ref.ld1 + ref.ld2 ref.lod +@move ref.h ..\refimg.h +@move ref.seq .. + \ No newline at end of file diff --git a/IMG/REF.LD1 b/IMG/REF.LD1 new file mode 100644 index 0000000..fdb3e95 --- /dev/null +++ b/IMG/REF.LD1 @@ -0,0 +1,10 @@ +ASM> refimg.tbl +***> 59c03a8,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* REFEREE **************************************************************** +ZON> +MON> +BON> +; diff --git a/IMG/REF.LD2 b/IMG/REF.LD2 new file mode 100755 index 0000000..7644f02 --- /dev/null +++ b/IMG/REF.LD2 @@ -0,0 +1,50 @@ +ref_hit.img +---> J4AH3D01,J4AH3D02,J4AH3D03,J4AH3D04,J4AH3D05,J4AH3D06,J4AH3D07 +---> J4AH3D08,J4AH3D09,J4AH3D10,J4AH3D11,J4AH3D12,J4AH3A01,J4AH3A02 +---> J4AH3A03,J4AH3A04,J4AH3A05,J4AH3A06,J4AH3A07,J4AH3A08,J4AH3A09 +---> J2AH3C01,J2AH3C02,J2AH3C03,J2AH3C04,J2AH3C05,J2AH3C06,J2AH3C07 +---> J2AH3C08,J2AH3C09,J2AH3C10,J2AH3C11,J2AH3C12,J4AE3A01,J4AE3A02 +---> J4AE3A03,J4AE3A04,J4AE3A05,J4AE3A06,J4AE3A07,J4AE3A08,J4AE3A09 +---> J4AE3A10,J2AE3A01,J2AE3A02,J2AE3A03,J2AE3A04,J2AE3A05,J2AE3A06 +---> J2AE3A07,J2AE3A08,J2AE3A09,J2AE3A10,J4AM3B01,J4AM3B02,J4AM3B03 +---> J4AM3B04,J4AM3B05,J4AM3B06,J4AM3B07,J4AM3B08,J2AM3A01,J2AM3A02 +---> J2AM3A03,J2AM3A04,J2AM3A05,J2AM3A06,J2AM3A07,J2AM3A08,J4KB3A01 +---> J4KB3A02,J4KB3A03,J4KB3A04,J4KB3A05,J4KB3A06,J4KB3A07,J4KB3A08 +---> J2KB3A01,J2KB3A02,J2KB3A03,J2KB3A04,J2KB3A05,J2KB3A06,J2KB3A07 +---> J2KB3A08,J3KB3A01,J3KB3A02,J3KB3A03,J3KB3A04,J3KB3A05,J3KB3A06 +---> J3KB3A07,J3FB3D01,J3FB3D02,J3FB3D03,J3FB3D04,J3FB3D05,J3FB3D06 +---> J3FB3D07,J3FB3D08,J3TB3B01,J3TB3B02,J3TB3B03,J3TB3B04,J3TB3B05 +---> J3GD4B01,J3GD4B02,J3GD4B03,J3GD4B04,J3GD4B05,J3GD4B06,J3GD4B07 +---> J3GD4B08,J3GD4B09,J3GD4B10,J3GD4B11,J3GD4B12,J3GD2A01,J3GD2A02 +---> J3GD2A03,J3GD2A04,J3GD2A05,J3GD2A06,J3GD2A07,J3GD2A08,J3GD2A09 +---> J3GD2A10,J3GD2A11,J3GD2A12,J4FL4C01,J4FL4C02,J4FL4C03,J4FL4C04 +---> J4FL4C05,J4FL4C06,J4FL4C07,J4FS4C01,J4FS4C02,J4FS4C03,J4FS4C04 +---> J4FS4C05,J4FS4C06,J4FS4C07,J4FS4C08,J4FS4C09,J4FS4C10,J4FS4C11 +---> J4FS4C12,J4GL4A01,J4GL4A02,J4GL4A03,J4GL4A04,J4GL4A05,J4GL4A06 +---> J4GL4A07,J4GL4A08,J4GL4A09,J4GL4A10,J4GL4B01,J4GL4B02,J4GL4B03 +---> J4GL4B04,J4GL4B05,J4GL4B06,J4GL4B07,J4GL4B08,J4GL4B09,J4GL4B10 +---> J4GL4B11,J4GL4C01,J4GL4C02,J4GL4C03,J4GL4C04,J4GL4C05,J4GL4C06 +---> J4GL4C07,J4GL4C08,J4GL4C09,J4GL4C10,J4GL4C11 +ref_wlk.img +---> J1TT5A01,J1TT5A02,J1TT5A03,J1TT5A04,J1TR5Z01,J1TR5Z02,J1TR5Z03 +---> J1TR5Z04,J2HT8A01,J2HT8A02,J2HT8A03,J2HT8A04,J2HT8A05,J2HT8A06 +---> J2HT8A07,J2ST2C01,J2ST2C02,J2ST2C03,J2ST2C04,J2ST2C05,J2ST2C06 +---> J2ST2C07,J2ST2C08,J2ST2C09,J2ST2C10,J2ST2C11,J2WK2A01,J2WK2A02 +---> J2WK2A03,J2WK2A04,J2WK2A05,J2WK2A06,J2WK2A07,J2WK2A08,J2WK2A09 +---> J2WK2A10,J2WK2A11,J2WK2A12,J2WL4A01,J2WL4A02,J2WL4A03,J2WL4A04 +---> J2WL4A05,J2WL4A06,J2WL4A07,J2WL4A08,J2WL4A09,J2WL4A10,J2WL4A11 +---> J2WL4A12,J2WL4A13,J2WL4A14,J2WL4A15,J4FT4B01,J4FT4B02,J4FT4B03 +---> J4FT4B04,J4FT4B05,J4FT4B06,J4FT4B07,J4FT4B08,J4FT4B09,J4FT4B10 +---> J4FT4B11,J4FT4B12,J4FT4B13,J4ST4B01,J4ST4B02,J4ST4B03,J4ST4B04 +---> J4ST4B05,J4ST4B06,J4ST4B07,J4ST4B08,J4ST4C01,J4ST4C02,J4ST4C03 +---> J4ST4C04,J4ST4C05,J4ST4C06,J4ST4C07,J4ST4C08,J4ST4C09,J4ST4C10 +---> J4WK4A01,J4WK4A02,J4WK4A03,J4WK4A04,J4WK4A05,J4WK4A06,J4WK4A07 +---> J4WK4A08,J4WK4A09,J4WK4A10,J4WK4A11,J4WK4A12,J4WL4A01,J4WL4A02 +---> J4WL4A03,J4WL4A04,J4WL4A05,J4WL4A06,J4WL4A07,J4WL4A08,J4WL4A09 +---> J4WL4A10,J4WL4A11,J4WL4A12,J4WL5A01,J4WL5A02,J4WL5A03,J4WL5A04 +---> J4WL5A05,J4WL5A06,J4WL5A07,J4WL5A08,J4WL5A09,J4WL5A10,J4WL5A11 +---> J4WL5A12,J4WL5A13,J4WL5A14,J8WL2A01,J8WL2A02,J8WL2A03,J8WL2A04 +---> J8WL2A05,J8WL2A06,J8WL2A07,J8WL2A08,J8WL2A09,J8WL2A10,J8WL2A11 +---> J8WL2A12,J8WL2A13,J8WL2A14,J2WL2A01,J2WL2A02,J2WL2A03,J2WL2A04 +---> J2WL2A05,J2WL2A06,J2WL2A07,J2WL2A08,J2WL2A09,J2WL2A10,J2WL2A11 +---> J2WL2A12 diff --git a/IMG/REF.LOD b/IMG/REF.LOD new file mode 100644 index 0000000..4032aba --- /dev/null +++ b/IMG/REF.LOD @@ -0,0 +1,61 @@ +ASM> refimg.tbl +***> 59c03a8,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* REFEREE **************************************************************** +ZON> +MON> +BON> +; +ref_hit.img +---> J4AH3D01,J4AH3D02,J4AH3D03,J4AH3D04,J4AH3D05,J4AH3D06,J4AH3D07 +---> J4AH3D08,J4AH3D09,J4AH3D10,J4AH3D11,J4AH3D12,J4AH3A01,J4AH3A02 +---> J4AH3A03,J4AH3A04,J4AH3A05,J4AH3A06,J4AH3A07,J4AH3A08,J4AH3A09 +---> J2AH3C01,J2AH3C02,J2AH3C03,J2AH3C04,J2AH3C05,J2AH3C06,J2AH3C07 +---> J2AH3C08,J2AH3C09,J2AH3C10,J2AH3C11,J2AH3C12,J4AE3A01,J4AE3A02 +---> J4AE3A03,J4AE3A04,J4AE3A05,J4AE3A06,J4AE3A07,J4AE3A08,J4AE3A09 +---> J4AE3A10,J2AE3A01,J2AE3A02,J2AE3A03,J2AE3A04,J2AE3A05,J2AE3A06 +---> J2AE3A07,J2AE3A08,J2AE3A09,J2AE3A10,J4AM3B01,J4AM3B02,J4AM3B03 +---> J4AM3B04,J4AM3B05,J4AM3B06,J4AM3B07,J4AM3B08,J2AM3A01,J2AM3A02 +---> J2AM3A03,J2AM3A04,J2AM3A05,J2AM3A06,J2AM3A07,J2AM3A08,J4KB3A01 +---> J4KB3A02,J4KB3A03,J4KB3A04,J4KB3A05,J4KB3A06,J4KB3A07,J4KB3A08 +---> J2KB3A01,J2KB3A02,J2KB3A03,J2KB3A04,J2KB3A05,J2KB3A06,J2KB3A07 +---> J2KB3A08,J3KB3A01,J3KB3A02,J3KB3A03,J3KB3A04,J3KB3A05,J3KB3A06 +---> J3KB3A07,J3FB3D01,J3FB3D02,J3FB3D03,J3FB3D04,J3FB3D05,J3FB3D06 +---> J3FB3D07,J3FB3D08,J3TB3B01,J3TB3B02,J3TB3B03,J3TB3B04,J3TB3B05 +---> J3GD4B01,J3GD4B02,J3GD4B03,J3GD4B04,J3GD4B05,J3GD4B06,J3GD4B07 +---> J3GD4B08,J3GD4B09,J3GD4B10,J3GD4B11,J3GD4B12,J3GD2A01,J3GD2A02 +---> J3GD2A03,J3GD2A04,J3GD2A05,J3GD2A06,J3GD2A07,J3GD2A08,J3GD2A09 +---> J3GD2A10,J3GD2A11,J3GD2A12,J4FL4C01,J4FL4C02,J4FL4C03,J4FL4C04 +---> J4FL4C05,J4FL4C06,J4FL4C07,J4FS4C01,J4FS4C02,J4FS4C03,J4FS4C04 +---> J4FS4C05,J4FS4C06,J4FS4C07,J4FS4C08,J4FS4C09,J4FS4C10,J4FS4C11 +---> J4FS4C12,J4GL4A01,J4GL4A02,J4GL4A03,J4GL4A04,J4GL4A05,J4GL4A06 +---> J4GL4A07,J4GL4A08,J4GL4A09,J4GL4A10,J4GL4B01,J4GL4B02,J4GL4B03 +---> J4GL4B04,J4GL4B05,J4GL4B06,J4GL4B07,J4GL4B08,J4GL4B09,J4GL4B10 +---> J4GL4B11,J4GL4C01,J4GL4C02,J4GL4C03,J4GL4C04,J4GL4C05,J4GL4C06 +---> J4GL4C07,J4GL4C08,J4GL4C09,J4GL4C10,J4GL4C11 +ref_wlk.img +---> J1TT5A01,J1TT5A02,J1TT5A03,J1TT5A04,J1TR5Z01,J1TR5Z02,J1TR5Z03 +---> J1TR5Z04,J2HT8A01,J2HT8A02,J2HT8A03,J2HT8A04,J2HT8A05,J2HT8A06 +---> J2HT8A07,J2ST2C01,J2ST2C02,J2ST2C03,J2ST2C04,J2ST2C05,J2ST2C06 +---> J2ST2C07,J2ST2C08,J2ST2C09,J2ST2C10,J2ST2C11,J2WK2A01,J2WK2A02 +---> J2WK2A03,J2WK2A04,J2WK2A05,J2WK2A06,J2WK2A07,J2WK2A08,J2WK2A09 +---> J2WK2A10,J2WK2A11,J2WK2A12,J2WL4A01,J2WL4A02,J2WL4A03,J2WL4A04 +---> J2WL4A05,J2WL4A06,J2WL4A07,J2WL4A08,J2WL4A09,J2WL4A10,J2WL4A11 +---> J2WL4A12,J2WL4A13,J2WL4A14,J2WL4A15,J4FT4B01,J4FT4B02,J4FT4B03 +---> J4FT4B04,J4FT4B05,J4FT4B06,J4FT4B07,J4FT4B08,J4FT4B09,J4FT4B10 +---> J4FT4B11,J4FT4B12,J4FT4B13,J4ST4B01,J4ST4B02,J4ST4B03,J4ST4B04 +---> J4ST4B05,J4ST4B06,J4ST4B07,J4ST4B08,J4ST4C01,J4ST4C02,J4ST4C03 +---> J4ST4C04,J4ST4C05,J4ST4C06,J4ST4C07,J4ST4C08,J4ST4C09,J4ST4C10 +---> J4WK4A01,J4WK4A02,J4WK4A03,J4WK4A04,J4WK4A05,J4WK4A06,J4WK4A07 +---> J4WK4A08,J4WK4A09,J4WK4A10,J4WK4A11,J4WK4A12,J4WL4A01,J4WL4A02 +---> J4WL4A03,J4WL4A04,J4WL4A05,J4WL4A06,J4WL4A07,J4WL4A08,J4WL4A09 +---> J4WL4A10,J4WL4A11,J4WL4A12,J4WL5A01,J4WL5A02,J4WL5A03,J4WL5A04 +---> J4WL5A05,J4WL5A06,J4WL5A07,J4WL5A08,J4WL5A09,J4WL5A10,J4WL5A11 +---> J4WL5A12,J4WL5A13,J4WL5A14,J8WL2A01,J8WL2A02,J8WL2A03,J8WL2A04 +---> J8WL2A05,J8WL2A06,J8WL2A07,J8WL2A08,J8WL2A09,J8WL2A10,J8WL2A11 +---> J8WL2A12,J8WL2A13,J8WL2A14,J2WL2A01,J2WL2A02,J2WL2A03,J2WL2A04 +---> J2WL2A05,J2WL2A06,J2WL2A07,J2WL2A08,J2WL2A09,J2WL2A10,J2WL2A11 +---> J2WL2A12 + \ No newline at end of file diff --git a/IMG/REF_HIT.IMG b/IMG/REF_HIT.IMG new file mode 100644 index 0000000..6d24604 Binary files /dev/null and b/IMG/REF_HIT.IMG differ diff --git a/IMG/REF_MSC.IMG b/IMG/REF_MSC.IMG new file mode 100644 index 0000000..09ba010 Binary files /dev/null and b/IMG/REF_MSC.IMG differ diff --git a/IMG/REF_PNC.IMG b/IMG/REF_PNC.IMG new file mode 100644 index 0000000..73d5c27 Binary files /dev/null and b/IMG/REF_PNC.IMG differ diff --git a/IMG/REF_WLK.IMG b/IMG/REF_WLK.IMG new file mode 100644 index 0000000..334a329 Binary files /dev/null and b/IMG/REF_WLK.IMG differ diff --git a/IMG/RINGBG.BDB b/IMG/RINGBG.BDB new file mode 100755 index 0000000..8d62f16 --- /dev/null +++ b/IMG/RINGBG.BDB @@ -0,0 +1,210 @@ +RINGBG 2000 1000 255 1 19 208 +ring 51 1871 27 693 +4000 75 486 0 13 +4000 140 486 0 13 +4000 144 424 0 13 +4410 203 544 3 2 +4000 205 486 0 13 +4000 208 424 0 13 +4000 213 628 6 0 +4000 213 628 6 0 +4500 226 548 9 10 +4200 228 486 C 2 +4000 240 578 F 0 +4600 244 596 12 10 +4100 263 486 C 2 +4410 269 486 3 2 +4000 270 485 0 13 +4000 273 424 15 4 +4400 284 489 9 10 +4100 285 599 18 0 +4000 294 556 1B 0 +4300 301 424 C 2 +4500 309 493 1E 11 +4000 318 534 1B 0 +4200 331 422 C 2 +4100 335 424 C 2 +4100 336 544 18 0 +4000 337 481 21 0 +4000 338 424 24 12 +4000 343 512 1B 0 +4000 353 534 27 0 +4000 368 490 1B 0 +4000 383 628 2A 0 +4000 393 468 1B 0 +4210 401 363 3 2 +4000 402 402 2D 0 +4300 411 373 9 10 +4100 412 482 18 0 +4000 417 446 1B 0 +4000 424 534 30 0 +4400 437 377 1E 11 +4000 442 424 1B 0 +4600 459 596 12 10 +4000 466 402 1B 0 +4210 467 305 3 2 +4300 468 316 9 10 +4100 468 427 18 0 +4000 476 628 2A 0 +4000 480 560 33 1 +4000 482 592 36 0 +4000 491 380 1B 0 +4000 504 471 39 1 +4000 507 365 3C 0 +4100 524 373 18 0 +4000 532 361 3F 0 +4100 535 306 42 2 +4200 541 311 45 10 +3F00 543 261 48 17 +4000 549 401 4B 0 +3D00 556 177 4E 18 +4000 569 628 2A 0 +4300 582 311 51 11 +4000 590 392 54 1 +4100 600 306 42 2 +3E00 602 228 57 18 +4700 616 480 5A 6 +4200 623 382 5D 6 +4600 627 399 60 9 +4000 629 361 3F 0 +4700 635 484 63 6 +4100 636 383 66 5 +4400 636 393 69 7 +4200 643 383 6C 5 +3F00 647 262 48 17 +4000 650 592 36 0 +4000 662 628 2A 0 +3D00 662 178 4E 18 +4100 665 306 42 2 +4000 672 365 6F 0 +4600 674 596 12 10 +4000 688 561 72 1 +4200 693 468 75 5 +3E00 701 226 57 18 +4200 702 311 45 10 +4300 715 300 78 8 +4400 718 307 7B 7 +4000 719 379 7E 6 +4000 726 361 3F 0 +4100 730 306 42 2 +3F00 749 262 48 17 +4000 753 365 81 0 +4200 753 388 84 5 +4000 755 628 2A 0 +3D00 768 179 4E 18 +4100 795 306 42 2 +3E00 797 219 57 18 +4000 818 592 36 0 +4100 822 383 87 5 +4000 823 361 3F 0 +4700 835 484 8A 6 +4000 848 628 2A 0 +3F00 852 262 48 17 +4100 860 306 42 2 +4200 863 311 45 10 +4000 864 365 81 0 +3D00 873 181 4E 18 +4600 889 596 12 10 +3E00 903 214 57 18 +4300 904 311 51 11 +4010 919 379 7E 6 +4010 920 561 72 1 +4110 920 383 87 5 +4000 920 361 3F 0 +4210 921 468 75 5 +4210 921 388 84 5 +4700 923 484 8D 6 +4100 925 306 42 2 +4000 941 628 2A 0 +3F00 949 260 48 17 +3D00 974 181 4E 18 +4000 975 365 81 0 +4000 986 592 36 0 +4100 990 306 42 2 +4700 1003 484 90 6 +3E00 1004 215 57 18 +4000 1017 361 3F 0 +4110 1018 383 66 5 +4200 1024 311 45 10 +4000 1034 628 2A 0 +3F00 1048 261 48 17 +4100 1055 306 42 2 +4010 1074 365 6F 0 +4210 1079 383 6C 5 +4410 1090 307 7B 7 +3D00 1094 176 4E 18 +4600 1104 596 12 10 +4000 1114 361 3F 0 +3E00 1116 211 57 18 +4210 1118 381 5D 6 +4100 1120 306 42 2 +4310 1121 300 78 8 +4000 1127 628 2A 0 +4010 1140 391 54 1 +4010 1144 365 3C 0 +3F00 1149 261 48 17 +4000 1154 592 36 0 +4010 1156 560 33 1 +4410 1157 393 69 7 +4100 1185 306 42 2 +4200 1185 311 45 10 +4010 1186 400 4B 0 +4810 1206 399 60 9 +4010 1207 470 39 1 +3D00 1207 173 4E 18 +4000 1211 361 3F 0 +4710 1212 483 5A 6 +4000 1220 628 2A 0 +3E00 1220 216 57 18 +4300 1226 311 51 11 +4100 1250 306 42 2 +3F00 1266 261 48 17 +4010 1272 383 1B 0 +4010 1293 402 1B 0 +4010 1293 402 2D 0 +4000 1308 361 3F 0 +4010 1312 534 30 0 +4000 1312 365 93 0 +4000 1313 628 2A 0 +4100 1315 306 42 2 +4010 1317 424 1B 0 +3D00 1317 179 4E 18 +4600 1319 596 12 10 +4000 1321 585 96 0 +4000 1322 374 99 0 +3E00 1337 214 57 18 +4010 1342 446 1B 0 +4000 1344 395 9C 0 +4200 1346 311 45 10 +4000 1361 410 9F 0 +4010 1366 468 1B 0 +3F00 1370 261 48 17 +4100 1380 306 42 2 +4010 1391 490 1B 0 +4200 1400 391 A2 3 +4100 1403 396 A5 2 +4000 1405 361 3F 0 +4000 1406 628 2A 0 +4010 1416 512 1B 0 +4010 1419 534 27 0 +3D00 1434 168 4E 18 +4010 1442 534 1B 0 +4100 1445 306 42 2 +4010 1466 556 1B 0 +4100 1469 457 A8 2 +4000 1470 393 AB 0 +4010 1491 578 1B 0 +4000 1491 578 AE 0 +4100 1508 490 B1 4 +4000 1510 542 B4 0 +4200 1510 305 3 2 +4010 1516 600 1B 0 +4600 1534 595 12 10 +4010 1541 622 1B 0 +4000 1548 576 B4 0 +4000 1564 489 B7 0 +4200 1576 363 3 2 +4000 1587 610 B4 0 +4200 1642 421 3 2 +4200 1708 479 3 2 +4200 1774 537 3 2 diff --git a/IMG/RINGBG.BDD b/IMG/RINGBG.BDD new file mode 100755 index 0000000..2b05493 Binary files /dev/null and b/IMG/RINGBG.BDD differ diff --git a/IMG/RINGBG2.BDB b/IMG/RINGBG2.BDB new file mode 100755 index 0000000..e6371eb --- /dev/null +++ b/IMG/RINGBG2.BDB @@ -0,0 +1,228 @@ +RINGBG2 2000 1000 255 1 19 226 +ring 51 1871 27 693 +4000 75 486 0 13 +4000 140 486 0 13 +4000 144 424 0 13 +4410 203 544 3 2 +4000 205 486 0 13 +4000 208 424 0 13 +4000 213 628 6 0 +4000 213 628 6 0 +4500 226 548 9 10 +4200 228 486 C 2 +4000 240 578 F 0 +4600 244 596 12 10 +4100 263 486 C 2 +4410 269 486 3 2 +4000 270 485 0 13 +4000 273 424 15 4 +4400 284 489 9 10 +4100 285 599 18 0 +4000 294 556 1B 0 +4300 301 424 C 2 +4500 309 493 1E 11 +4000 318 534 1B 0 +4200 331 422 C 2 +4100 335 424 C 2 +4100 336 544 18 0 +4000 337 481 21 0 +4000 338 424 24 12 +4000 343 512 1B 0 +4000 353 534 27 0 +4000 368 490 1B 0 +4000 383 628 2A 0 +4000 393 468 1B 0 +4210 401 363 3 2 +4000 402 402 2D 0 +4300 411 373 9 10 +4100 412 482 18 0 +4000 417 446 1B 0 +4000 424 534 30 0 +4400 437 377 1E 11 +4000 442 424 1B 0 +4600 459 596 12 10 +4000 466 402 1B 0 +4210 467 305 3 2 +4300 468 316 9 10 +4100 468 427 18 0 +4000 476 628 2A 0 +4000 480 560 33 1 +4000 482 592 36 0 +4000 491 380 1B 0 +4000 504 471 39 1 +4000 507 365 3C 0 +4100 524 373 18 0 +4000 532 361 3F 0 +4100 535 306 42 2 +4200 541 311 45 10 +3F00 543 261 48 17 +4000 549 401 4B 0 +3D00 556 177 4E 18 +4000 569 628 2A 0 +4300 582 311 51 11 +4000 590 392 54 1 +4100 600 306 42 2 +3E00 602 228 57 18 +4700 616 480 5A 6 +4200 623 382 5D 6 +4600 627 399 60 9 +4000 629 361 3F 0 +4700 635 484 63 6 +4100 636 383 66 5 +4400 636 397 69 7 +4200 643 383 6C 5 +3F00 647 262 48 17 +4000 650 592 36 0 +4000 662 628 2A 0 +3D00 662 178 4E 18 +4100 665 306 42 2 +4000 672 365 6F 0 +7800 673 429 72 15 +7800 674 451 75 16 +4600 674 596 12 10 +7800 675 404 78 14 +4500 678 347 7B 15 +4500 678 324 7E 14 +4500 679 370 81 16 +4000 688 561 84 1 +4200 693 468 87 5 +3E00 701 226 57 18 +4200 702 311 45 10 +4300 715 299 8A 8 +4000 719 379 8D 6 +4400 719 312 90 7 +4000 726 361 3F 0 +4100 730 306 42 2 +3F00 749 262 48 17 +4400 751 368 93 16 +4400 752 344 96 15 +4400 752 323 99 14 +4000 753 365 9C 0 +4200 753 388 9F 5 +4000 755 628 2A 0 +3D00 768 179 4E 18 +4100 795 306 42 2 +3E00 797 219 57 18 +4000 818 592 36 0 +4100 822 383 A2 5 +4000 823 361 3F 0 +4700 835 484 A5 6 +4000 848 628 2A 0 +3F00 852 262 48 17 +4100 860 306 42 2 +4200 863 311 45 10 +4000 864 365 9C 0 +3D00 873 181 4E 18 +4600 889 596 12 10 +4410 899 368 93 16 +4410 899 344 96 15 +4410 900 323 99 14 +3E00 903 214 57 18 +4300 904 311 51 11 +4010 919 379 8D 6 +7810 919 429 72 15 +7810 919 451 75 16 +4010 920 561 84 1 +4110 920 383 A2 5 +4000 920 361 3F 0 +7810 920 404 78 14 +4210 921 468 87 5 +4210 921 388 9F 5 +4700 923 484 A8 6 +4100 925 306 42 2 +4000 941 628 2A 0 +3F00 949 260 48 17 +3D00 974 181 4E 18 +4000 975 365 9C 0 +4000 986 592 36 0 +4100 990 306 42 2 +4700 1003 484 AB 6 +3E00 1004 215 57 18 +4000 1017 361 3F 0 +4110 1018 383 66 5 +4200 1024 311 45 10 +4000 1034 628 2A 0 +3F00 1048 261 48 17 +4100 1055 306 42 2 +4010 1074 365 6F 0 +4210 1079 383 6C 5 +4410 1089 312 90 7 +3D00 1094 176 4E 18 +4600 1104 596 12 10 +4510 1106 347 7B 15 +4510 1106 324 7E 14 +4510 1106 370 81 16 +4000 1114 361 3F 0 +3E00 1116 211 57 18 +4210 1118 381 5D 6 +4310 1119 299 8A 8 +4100 1120 306 42 2 +4000 1127 628 2A 0 +4010 1140 391 54 1 +4010 1144 365 3C 0 +3F00 1149 261 48 17 +4000 1154 592 36 0 +4010 1156 560 33 1 +4410 1157 397 69 7 +4100 1185 306 42 2 +4200 1185 311 45 10 +4010 1186 400 4B 0 +4810 1206 400 60 9 +4010 1207 470 39 1 +3D00 1207 173 4E 18 +4000 1211 361 3F 0 +4710 1212 483 5A 6 +4000 1220 628 2A 0 +3E00 1220 216 57 18 +4300 1226 311 51 11 +4100 1250 306 42 2 +3F00 1266 261 48 17 +4010 1272 383 1B 0 +4010 1293 402 1B 0 +4010 1293 402 2D 0 +4000 1308 361 3F 0 +4010 1312 534 30 0 +4000 1312 365 AE 0 +4000 1313 628 2A 0 +4100 1315 306 42 2 +4010 1317 424 1B 0 +3D00 1317 179 4E 18 +4600 1319 596 12 10 +4000 1321 585 B1 0 +4000 1322 374 B4 0 +3E00 1337 214 57 18 +4010 1342 446 1B 0 +4000 1344 395 B7 0 +4200 1346 311 45 10 +4000 1361 410 BA 0 +4010 1366 468 1B 0 +3F00 1370 261 48 17 +4100 1380 306 42 2 +4010 1391 490 1B 0 +4200 1400 391 BD 3 +4100 1403 396 C0 2 +4000 1405 361 3F 0 +4000 1406 628 2A 0 +4010 1416 512 1B 0 +4010 1419 534 27 0 +3D00 1434 168 4E 18 +4010 1442 534 1B 0 +4100 1445 306 42 2 +4010 1466 556 1B 0 +4100 1469 457 C3 2 +4000 1470 393 C6 0 +4010 1491 578 1B 0 +4000 1491 578 C9 0 +4100 1508 490 CC 4 +4000 1510 542 CF 0 +4200 1510 305 3 2 +4010 1516 600 1B 0 +4600 1534 595 12 10 +4010 1541 622 1B 0 +4000 1548 576 CF 0 +4000 1564 489 D2 0 +4200 1576 363 3 2 +4000 1587 610 CF 0 +4200 1642 421 3 2 +4200 1708 479 3 2 +4200 1774 537 3 2 diff --git a/IMG/RINGBG2.BDD b/IMG/RINGBG2.BDD new file mode 100755 index 0000000..81c425a Binary files /dev/null and b/IMG/RINGBG2.BDD differ diff --git a/IMG/RINGPAL7.IMG b/IMG/RINGPAL7.IMG new file mode 100644 index 0000000..84f29b9 Binary files /dev/null and b/IMG/RINGPAL7.IMG differ diff --git a/IMG/RINGXYZ.BDB b/IMG/RINGXYZ.BDB new file mode 100755 index 0000000..2c11fa2 --- /dev/null +++ b/IMG/RINGXYZ.BDB @@ -0,0 +1,42 @@ +ringxyz 4000 2000 255 1 11 40 +ringxyz 247 1001 216 545 +3300 357 438 0 4 +3200 359 346 3 4 +3900 363 361 6 6 +3C00 369 448 9 4 +3800 370 357 C 7 +2800 372 346 F 0 +7800 410 365 12 8 +7800 410 389 15 9 +7800 410 412 18 10 +3600 411 329 1B 10 +3600 411 306 1E 9 +3600 411 283 21 8 +2500 448 267 24 2 +3400 453 273 27 7 +2800 455 342 2A 4 +3300 482 326 2D 1 +3300 482 304 30 3 +3300 482 281 33 5 +2800 558 346 36 0 +3C00 569 448 39 4 +3310 651 304 30 3 +3310 651 326 2D 1 +3310 653 281 33 5 +7810 653 389 15 9 +7810 653 365 12 8 +7810 653 412 18 10 +2810 655 342 2A 4 +2810 656 346 36 0 +3C00 657 448 3C 4 +4000 737 448 3F 4 +2810 754 346 F 0 +3410 826 273 27 7 +3610 843 306 1E 9 +3610 843 329 1B 10 +3610 843 283 21 8 +3210 855 346 3 4 +2510 859 267 24 2 +3810 893 357 C 7 +3910 940 361 6 6 +3310 941 438 0 4 diff --git a/IMG/RINGXYZ.BDD b/IMG/RINGXYZ.BDD new file mode 100755 index 0000000..f9a9772 Binary files /dev/null and b/IMG/RINGXYZ.BDD differ diff --git a/IMG/ROBOTRON.IMG b/IMG/ROBOTRON.IMG new file mode 100644 index 0000000..f5c6f98 Binary files /dev/null and b/IMG/ROBOTRON.IMG differ diff --git a/IMG/ROPESHAD.IMG b/IMG/ROPESHAD.IMG new file mode 100644 index 0000000..4b9270c Binary files /dev/null and b/IMG/ROPESHAD.IMG differ diff --git a/IMG/ROPESHAD.OLD b/IMG/ROPESHAD.OLD new file mode 100755 index 0000000..9043316 Binary files /dev/null and b/IMG/ROPESHAD.OLD differ diff --git a/IMG/ROPESTUF.IMG b/IMG/ROPESTUF.IMG new file mode 100644 index 0000000..2779b4e Binary files /dev/null and b/IMG/ROPESTUF.IMG differ diff --git a/IMG/ROUNDPLT.IMG b/IMG/ROUNDPLT.IMG new file mode 100644 index 0000000..80cf46c Binary files /dev/null and b/IMG/ROUNDPLT.IMG differ diff --git a/IMG/RZBLFLNG.IMG b/IMG/RZBLFLNG.IMG new file mode 100644 index 0000000..b86cd67 Binary files /dev/null and b/IMG/RZBLFLNG.IMG differ diff --git a/IMG/RZRGRN_P.SRC b/IMG/RZRGRN_P.SRC new file mode 100755 index 0000000..ca7b8af --- /dev/null +++ b/IMG/RZRGRN_P.SRC @@ -0,0 +1,10 @@ +RZRGRN_P: + .word 64 + .word 00000h,07fdeh,04a50h,041edh,035cdh,02d8ch,01d07h,018e6h + .word 014c5h,010a4h,00c83h,00862h,00821h,00000h,07ffeh,07fdah + .word 07f98h,07f55h,07f54h,07f35h,07f12h,07ef3h,07ed0h,07ed1h + .word 07ad2h,07eafh,07e8eh,07290h,0766eh,0724eh,06a4eh,06e2dh + .word 0620ch,065eah,05debh,05dcah,059cah,055a8h,05188h,04d67h + .word 04125h,04502h,038e3h,03461h,02061h,01c20h,01000h,07fe8h + .word 07fa0h,07ee0h,065e0h,03d80h,00785h,00323h,002a1h,00240h + .word 00200h,001c0h,001a0h,00180h,00160h,00120h,000e0h,000a0h diff --git a/IMG/RZRPRP_P.SRC b/IMG/RZRPRP_P.SRC new file mode 100755 index 0000000..128e3fb --- /dev/null +++ b/IMG/RZRPRP_P.SRC @@ -0,0 +1,10 @@ +RZRPRP_P: + .word 64 + .word 00000h,07fdeh,04a50h,041edh,035cdh,02d8ch,01d07h,018e6h + .word 014c5h,010a4h,00c83h,00862h,00821h,00000h,07ffeh,07fdah + .word 07f98h,07f55h,07f54h,07f35h,07f12h,07ef3h,07ed0h,07ed1h + .word 07ad2h,07eafh,07e8eh,07290h,0766eh,0724eh,06a4eh,06e2dh + .word 0620ch,065eah,05debh,05dcah,059cah,055a8h,05188h,04d67h + .word 04125h,04502h,038e3h,03461h,02061h,01c20h,01000h,07fe8h + .word 07fa0h,07ee0h,065e0h,03d80h,0701ch,06419h,05415h,04812h + .word 04010h,0380eh,0340dh,0300ch,02c0bh,02409h,01c07h,01405h diff --git a/IMG/RZRSTAND.IMG b/IMG/RZRSTAND.IMG new file mode 100644 index 0000000..0457761 Binary files /dev/null and b/IMG/RZRSTAND.IMG differ diff --git a/IMG/RZR_HIT.BAD b/IMG/RZR_HIT.BAD new file mode 100644 index 0000000..b8c3d32 Binary files /dev/null and b/IMG/RZR_HIT.BAD differ diff --git a/IMG/RZR_HIT.IMG b/IMG/RZR_HIT.IMG new file mode 100644 index 0000000..6123ad7 Binary files /dev/null and b/IMG/RZR_HIT.IMG differ diff --git a/IMG/RZR_JAKE.IMG b/IMG/RZR_JAKE.IMG new file mode 100644 index 0000000..b95afa3 Binary files /dev/null and b/IMG/RZR_JAKE.IMG differ diff --git a/IMG/RZR_JMS.IMG b/IMG/RZR_JMS.IMG new file mode 100644 index 0000000..d663d26 Binary files /dev/null and b/IMG/RZR_JMS.IMG differ diff --git a/IMG/RZR_KIK.IMG b/IMG/RZR_KIK.IMG new file mode 100644 index 0000000..2e6be8e Binary files /dev/null and b/IMG/RZR_KIK.IMG differ diff --git a/IMG/RZR_MJT.IMG b/IMG/RZR_MJT.IMG new file mode 100644 index 0000000..2a11aec Binary files /dev/null and b/IMG/RZR_MJT.IMG differ diff --git a/IMG/RZR_MSC.IMG b/IMG/RZR_MSC.IMG new file mode 100644 index 0000000..99a5bc8 Binary files /dev/null and b/IMG/RZR_MSC.IMG differ diff --git a/IMG/RZR_PNC.IMG b/IMG/RZR_PNC.IMG new file mode 100644 index 0000000..b48fb7d Binary files /dev/null and b/IMG/RZR_PNC.IMG differ diff --git a/IMG/RZR_RJR.IMG b/IMG/RZR_RJR.IMG new file mode 100644 index 0000000..774b851 Binary files /dev/null and b/IMG/RZR_RJR.IMG differ diff --git a/IMG/RZR_WLK.IMG b/IMG/RZR_WLK.IMG new file mode 100644 index 0000000..88071bf Binary files /dev/null and b/IMG/RZR_WLK.IMG differ diff --git a/IMG/RZR_XXX.IMG b/IMG/RZR_XXX.IMG new file mode 100644 index 0000000..e1b64c4 Binary files /dev/null and b/IMG/RZR_XXX.IMG differ diff --git a/IMG/SD.INI b/IMG/SD.INI new file mode 100755 index 0000000..171fe66 Binary files /dev/null and b/IMG/SD.INI differ diff --git a/IMG/SGMD8.IMG b/IMG/SGMD8.IMG new file mode 100644 index 0000000..ab3d75a Binary files /dev/null and b/IMG/SGMD8.IMG differ diff --git a/IMG/SHADOWS.IMG b/IMG/SHADOWS.IMG new file mode 100644 index 0000000..4a728cc Binary files /dev/null and b/IMG/SHADOWS.IMG differ diff --git a/IMG/SHAWN.BAT b/IMG/SHAWN.BAT new file mode 100644 index 0000000..5481497 --- /dev/null +++ b/IMG/SHAWN.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld shawn shn_hit shn_kik shn_msc shn_pnc shn_wlk shn_mjt shn_rjr shn_jms shn_jake +@copy shawn.ld1 + shawn.ld2 shawn.lod +@move shawn.h ..\shawnimg.h +@move shawn.seq .. + diff --git a/IMG/SHAWN.IRW b/IMG/SHAWN.IRW new file mode 100755 index 0000000..79ace1f Binary files /dev/null and b/IMG/SHAWN.IRW differ diff --git a/IMG/SHAWN.LD1 b/IMG/SHAWN.LD1 new file mode 100644 index 0000000..805f588 --- /dev/null +++ b/IMG/SHAWN.LD1 @@ -0,0 +1,11 @@ +ASM> shawnimg.tbl +***> 5400a00,1 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* SHAWN MICHAELS ********************************************************* +ZON> +MON> +BON> +POF> +; diff --git a/IMG/SHAWN.LD2 b/IMG/SHAWN.LD2 new file mode 100755 index 0000000..6c8cf6a --- /dev/null +++ b/IMG/SHAWN.LD2 @@ -0,0 +1,111 @@ +shn_hit.img +---> S2AE3A01,S2AE3A02,S2AE3A03,S2AE3A04,S2AE3A05,S2AE3A06,S2AE3A07 +---> S2AE3A08,S2AH3A01,S2AH3A02,S2AH3A03,S2AH3A04,S2AH3A05,S2AH3A06 +---> S2AM3A02,S2AM3A03,S2AM3A04,S2AM3A05,S2AM3A06,S2AM3A07,S2AM3A08 +---> S4AE3B01,S4AE3B02,S4AE3B03,S4AE3B04,S4AE3B05,S4AE3B06,S4AE3B07 +---> S4AE3B08,S4AH3D01,S4AH3D02,S4AH3D03,S4AH3D04,S4AH3D05,S4AH3D06 +---> S4AM3A02,S4AM3A03,S4AM3A04,S4AM3A05,S4AM3A06,S4AM3A07,S4AM3A08 +---> S4BK3A01,S4BK3A02,S4BK3A03,S4BK3A04,S4BK3A05,S4LB3A01,S4LB3A02 +---> S4LB3A03,S4LB3A04,S4LB3A05,S4LB3A06,S4LB3A07,S4LB3A08,S4LB3A09 +---> S3CP3B01,S3CP3B02,S3CP3B03,S3CP3B04,S3CP3B05,S3CP3B06,S3CP3B07 +---> S3GU2A01,S3GU2A02,S3GU2A03,S3GU2A04,S3GU2A05,S3GU2A06,S3GU2A07 +---> S3GU2A08,S3GU2A09,S3GU4A02,S3GU4A03,S3GU4A04,S3GU4A05,S3GU4A06 +---> S3GU4A07,S3GU4A08,S3GU4A09,S3UC3X01,S3UC3X02,S3UC3X03,S3UC3X04 +---> S3UC3X05,S3UC3X06,S3UC3X07,S3UC3X08,S3FD3X01,S3FD3X02,S3FD3X03 +---> S3FD3X04,S3FD3X05,S3FD3X06,S3FD3X07,S3FD3X08,S3OS3X01,S3OS3X02 +---> S3OS3X03,S3OS3X04,S3OS3X05,S3OS3X06,S3OS3X07,S3OS3X08,S3OS3X09 +---> S3OS3X10,S3OS3Z10 +shn_kik.img +---> S2KM3A01,S2KM3A02,S2KM3A03,S2KM3A04,S2KM3A05,S2KM3A06,S2KM3A07 +---> S2KM3A08,S2KM3A09,S2MP2A02,S2MP2A03,S2MP2A04,S2MP2A05,S2MP2A06 +---> S2MP2A07,S2MP2A08,S2NM3A01,S2NM3A02,S2NM3A03,S2NM3A04,S2NM3A05 +---> S2NM3A06,S2NM3A07,S3DC3A03,S3DC3A04,S3DC3A05,S3DC3A06,S3DC3A07 +---> S3DC3A08,S3DC3A09,S3DC3A10,S4KM3C02,S4KM3C03,S4KM3C04,S4KM3C05 +---> S4KM3C06,S4KM3C07,S4KM3C08,S4KM3C09,S4MP4C02,S4MP4C03,S4MP4C04 +---> S4MP4C05,S4MP4C06,S4MP4C07,S4MP4C08,S4NM3A02,S4NM3A03,S4NM3A04 +---> S4NM3A05,S4NM3A06,S4NM3A07,S3FL3X01,S3FL3X02,S3ZI3A01,S3ZI3A02 +---> S3ZI3A03,S3ZI3A04,S3ZI3A05,S3ZI3A06,S3ZI3A07,S3ZI3A08,S3ZI3A09 +---> S3ZI3A10,S3ZI3A11,S4SK3Y03,S4SK3Y04,S4SK3Y05,S4SK3Y06,S4SK3Y07 +---> S4SK3Y08,S4SK3Y09,S4SK3Y10,S4SK3Y11,S4KI3Q01,S4KI3Q02,S4KI3Q03 +---> S4KI3Q04,S4KI3Q05,S4KI3Q06,S4KI3Q07,S4KI3Q08,S4KI3Q09,S4MP4D01 +---> S4MP4D02,S4MP4D03,S4MP4D04,S4MP4D05,S4MP4D06,S4MP4D07,S4MP4D08 +shn_msc.img +---> S4GF3B01,S4GF3B02,S4GF3B03,S4GF3B04,S4GF3B05,S4GF3B06,S4GF3B07 +---> S4GF3B08,S4GF3B10,S3RL3A01,S3RL3A02,S3RL3A03,S3RL3A04,S3RL3A05 +---> S3RL3A06,S3RL3A07,S3RL3A08,S3RL3A09,S3RL3A10,S3MF3B01,S3MF3B02 +---> S3MF3B03,S3MF3B04,S3MF3B05,S3MF3B06,S3MF3B07,S2CT2A04,S2CT2A05 +---> S2CT2A06,S2CT2A07,S2CT2A08,S2CT2A09,S4SB4B01,S4SB4B02,S4SB4B03 +---> S4SB4B04,S4SB4B05,S4SB4B06,S4SB4B07,S4SB4B08,S4BF3A02,S4BF3A03 +---> S4BF3A05,S4TI4B01,S4TI4B02,S4TI4B03,S4TI4B04,S4FG3A01,S4FG3A02 +---> S3BH3A01,S3BH3A02,S3BH3A03,S3BH3A04,S3BH3A05,S3BH3A06,S3BH3A07 +---> S3BH3A08,S3SG3A02,S3SG3A03,S3SG3A04,S3SG3A05,S3SG3A06,S3SG3A07 +---> S3SG3A08 +shn_pnc.img +---> S4PT3B01,S4PT3B02,S4PT3B03,S4PT3B04,S4PT3B05,S4PT3B06,S4PT3B07 +---> S4PT3B08,S4PT3B09,S4KI3I01,S4KI3I02,S4KI3I03,S4KI3I04,S4KI3I05 +---> S4KI3I06,S4KI3I07,S4KI3I08,S4KI3I09,S4MK3A01,S4MK3A02,S4MK3A03 +---> S4MK3A04,S4MK3A05,S4MK3A06,S4MK3A07,S2BC3B02,S2BC3B04,S2BC3B05 +---> S2BC3B06,S2BC3B07,S2BC3B08,S4BC3A02,S4BC3A04,S4BC3A05,S4BC3A06 +---> S4BC3A08,S4PS3A01,S4PS3A02,S4PS3A03,S4PS3A04,S4PU3D02,S4PU3D03 +---> S4PU3D04,S4PU3D05,S4PU3D06,S4PU3D07,S4PU3D08,S2PJ3C09,S2PU3C01 +---> S2PU3C02,S2PU3C03,S2PU3C04,S2PU3C05,S2PU3C07,S2PU3C08,S2PJ3D01 +---> S2PJ3D02,S2PJ3D03,S2PJ3D04,S2PJ3D05,S2PJ3D06,S2PJ3D07,S2PJ3D08 +---> S4PJ3F01,S4PJ3F02,S4PJ3F03,S4PJ3F04,S4PJ3F05,S4PJ3F06,S4PJ3F07 +---> S4PJ3F08,S4GS3C01,S4GS3C02,S4GS3C04,S4GS3C05,S4GS3C06,S4GS3C07 +---> S4GS3C08,S4GS3C09,S4GS3C10,S4GS3C11,S4GS3C12 +shn_wlk.img +---> S2TW2B01,S2TW2B02,S2TW2B03,S2TW2B04,S4TW4C01,S4TW4C02,S4TW4C03 +---> S4TW4C04,S2WL1A01,S2WL1A02,S2WL1A03,S2WL1A04,S2WL1A05,S2WL1A06 +---> S2WL1A07,S2WL1A08,S2WL1A09,S2WL1A10,S2WL1A11,S2WL1A12,S2WL1A13 +---> S2WL1A14,S2WL1A15,S2WL1A16,S2WL1A17,S2WL2B01,S2WL2B02,S2WL2B03 +---> S2WL2B04,S2WL2B05,S2WL2B06,S2WL2B07,S2WL2B08,S2WL2B09,S2WL2B10 +---> S2WL2B11,S2WL2B12,S2WL2B13,S2WL2B14,S2WL2B15,S2WL2B16,S2WL2B17 +---> S2WL8A01,S2WL8A02,S2WL8A03,S2WL8A04,S2WL8A05,S2WL8A06,S2WL8A07 +---> S2WL8A08,S2WL8A09,S2WL8A10,S2WL8A11,S2WL8A12,S2WL8A13,S2WL8A14 +---> S2WL8A15,S2WL8A16,S4WL2A01,S4WL2A02,S4WL2A03,S4WL2A04,S4WL2A05 +---> S4WL2A06,S4WL2A07,S4WL2A08,S4WL2A09,S4WL2A10,S4WL2A11,S4WL2A12 +---> S4WL2A13,S4WL2A14,S4WL2A15,S4WL2A16,S4WL4C01,S4WL4C02,S4WL4C03 +---> S4WL4C04,S4WL4C05,S4WL4C06,S4WL4C07,S4WL4C08,S4WL4C09,S4WL4C10 +---> S4WL4C11,S4WL4C12,S4WL4C13,S4WL4C14,S4WL4C15,S4WL4C16,S4WL4C17 +---> S4WL4C18,S4WL5B01,S4WL5B02,S4WL5B03,S4WL5B04,S4WL5B05,S4WL5B06 +---> S4WL5B07,S4WL5B08,S4WL5B09,S4WL5B10,S4WL5B11,S4WL5B12,S4WL5B13 +---> S4WL5B14,S4WL5B15,S4WL5B16,S1TT5Z01,S1TT5Z02,S1TT5Z03,S1TT5Z04 +---> S1TR5Z01,S1TR5Z02,S1TR5Z03,S1TR5Z04,S3BO3A02,S3BO3A03,S3BO3A04 +---> S3BO3A05,S3BO3A06,S3BO3A07,S3BO3A08,S3BO3A09,S2ST2C01,S2ST2C03 +---> S2ST2C05,S2ST2C07,S2ST2C09,S2ST2C11,S2ST2C13,S2ST2C15,S2ST2C17 +---> S4ST4C01,S4ST4C03,S4ST4C05,S4ST4C07,S4ST4C09,S4ST4C11,S4ST4C13 +---> S4ST4C15,S4ST4C17,S4ST4C19,S3RN3A01,S3RN3A02,S3RN3A03,S3RN3A04 +---> S3RN3A05,S3RN3A06,S3RN3A07,S3RN3A08,S3RN3A09,S3RN3A10,S3RN3A11 +---> S3RN3A12,S3RN3A13 +shn_mjt.img +---> S3ZS3A01,S3ZS3A02,S3ZS3A03,S4CD3A01,S4CD3A02,S4CD3A03,S4CD3A04 +---> S4CD3A05,S4CD3A06,S4CD3A07,S4CD3A08,S4POGO01,S4POGO02,S4POGO03 +---> S3PN5C01,S3PN5C02,S3PN5C03,S3PN5C07,S4SW4A01,S4SW4A02,S4SW4A03 +---> S4SW4A04,S4SW4A05,S4SW4A06,S4SW4A07,S4SW4A08,S4SW4A09,S4SW4A10 +---> S3BR3Z02,S3BR3Z03,S3BR3Z05,S3PM4B01,S3MS3Z01,S3MS3Z02,S3MS3Z03 +---> S3MS3Z04,S3MS3Z05,S3MS3Z06,S3CF3Z01,S3CF3Z02,S3CF3Z03,S3CF3Z04 +---> S3CF3Z05,S3CF3Z06,S4LD4A01,S4LD4A02,S4LD4A03,S4LD4A04,S4LD4A05 +---> S4LD4A06,S4LD4A07,S4LD4A10,S4CO4A01,S4CO4A02,S4CO4A03,S4CO4A04 +---> S4CO4A05,S4CO4A06,S4CO4A07,S4CO4A08,S4GH3A01,S4GH3A02,S4GH3A03 +---> S4GH3A04,S4GH3A06,S4GH3A07,S4GH3A08,S4GH3A09,S3GP3X01,S3GP3X02 +---> S3GP3X03,S3GP3X04,S3GP3X05,S3GP3X06,S3GP3X07,S4YR3A02,S4YR3A03 +---> S4YR3A05,S4YR3A06,S3BF3A01,S3BF3A02,S3BF3A03,S3BF3A04,S3BF3A05 +---> S3BF3A06,S3BF3A07,S4BZ4A01,S4GH3C01,S4GH3C02,S4GH3C03,S4GH3C04 +---> S4GH3C05,S4GH3C08 +shn_rjr.img +---> S3RS3A01,S3RS3A02,S3RS3A03,S3RS3A04,S3RS3A05,S3RS3A06,S3DD3B01 +---> S3DD3B02,S3DD3B03,S3DD3B05,S3UC3Z08,S3TN3X01,S3TN3X02,S3TN3X03 +---> S3TN3X04,S3TN3X05 +shn_jms.img +---> S3SK3A01,S3SK3A02,S3SK3A03,S3SK3A04,S3SK3A05,S3SK3A06,S3KT3A02 +---> S3KT3A03,S3KT3A04,S3KT3A05,S3KT3A06,S3KT3A07,S3KT3A08,S3KF3C01 +---> S3KF3C02,S3KF3C03,S3KF3C04,S3KF3C05,S3GA3A01,S3GA3A02,S3GA3A03 +---> S3GA3A04,S3GA3A05,S3GA3A06,S3GA3A07,S3GA3A08,S3GA3A09,S3AB3A01 +---> S3AB3A03,S3AB3A04,S4PJ3E04,S4PJ3E05,S4PJ3E06,S4PJ3E07,S4PJ3E08 +---> S4PJ3E09,S4TD3F01,S4TD3F02,S4TD3F03,S4TD3F04,S4TD3F05,S4TD3F06 +---> S4TD3F07,S4TD3F08,S4TD3F09,S3RR3Z02,S3RR3Z03,S3RR3Z04,S3RR3Z05 +---> S3RR3Z06,S3RR3Z07,S3RR3Z08,S3RR3Z09,S3RR3Z10 +shn_jake.img +---> S4WA4B01,S4WA4B02,S4WA4B03,S4WA4B04,S4WA4B05,S4WA4B06,S4WA4B07 +---> S4WA4B08,S4WA4B09,S4WB4B02,S4WB4B03,S4WB4B04,S4WB4B05,S4WB4B06 +---> S4WB4B07,S4WB4B08,S4WB4B09,S3CR3A01,S3CR3A02,S3CR3A03,S3CR3A04 diff --git a/IMG/SHAWN.LOD b/IMG/SHAWN.LOD new file mode 100644 index 0000000..791ee22 --- /dev/null +++ b/IMG/SHAWN.LOD @@ -0,0 +1,123 @@ +ASM> shawnimg.tbl +***> 5400a00,1 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* SHAWN MICHAELS ********************************************************* +ZON> +MON> +BON> +POF> +; +shn_hit.img +---> S2AE3A01,S2AE3A02,S2AE3A03,S2AE3A04,S2AE3A05,S2AE3A06,S2AE3A07 +---> S2AE3A08,S2AH3A01,S2AH3A02,S2AH3A03,S2AH3A04,S2AH3A05,S2AH3A06 +---> S2AM3A02,S2AM3A03,S2AM3A04,S2AM3A05,S2AM3A06,S2AM3A07,S2AM3A08 +---> S4AE3B01,S4AE3B02,S4AE3B03,S4AE3B04,S4AE3B05,S4AE3B06,S4AE3B07 +---> S4AE3B08,S4AH3D01,S4AH3D02,S4AH3D03,S4AH3D04,S4AH3D05,S4AH3D06 +---> S4AM3A02,S4AM3A03,S4AM3A04,S4AM3A05,S4AM3A06,S4AM3A07,S4AM3A08 +---> S4BK3A01,S4BK3A02,S4BK3A03,S4BK3A04,S4BK3A05,S4LB3A01,S4LB3A02 +---> S4LB3A03,S4LB3A04,S4LB3A05,S4LB3A06,S4LB3A07,S4LB3A08,S4LB3A09 +---> S3CP3B01,S3CP3B02,S3CP3B03,S3CP3B04,S3CP3B05,S3CP3B06,S3CP3B07 +---> S3GU2A01,S3GU2A02,S3GU2A03,S3GU2A04,S3GU2A05,S3GU2A06,S3GU2A07 +---> S3GU2A08,S3GU2A09,S3GU4A02,S3GU4A03,S3GU4A04,S3GU4A05,S3GU4A06 +---> S3GU4A07,S3GU4A08,S3GU4A09,S3UC3X01,S3UC3X02,S3UC3X03,S3UC3X04 +---> S3UC3X05,S3UC3X06,S3UC3X07,S3UC3X08,S3FD3X01,S3FD3X02,S3FD3X03 +---> S3FD3X04,S3FD3X05,S3FD3X06,S3FD3X07,S3FD3X08,S3OS3X01,S3OS3X02 +---> S3OS3X03,S3OS3X04,S3OS3X05,S3OS3X06,S3OS3X07,S3OS3X08,S3OS3X09 +---> S3OS3X10,S3OS3Z10 +shn_kik.img +---> S2KM3A01,S2KM3A02,S2KM3A03,S2KM3A04,S2KM3A05,S2KM3A06,S2KM3A07 +---> S2KM3A08,S2KM3A09,S2MP2A02,S2MP2A03,S2MP2A04,S2MP2A05,S2MP2A06 +---> S2MP2A07,S2MP2A08,S2NM3A01,S2NM3A02,S2NM3A03,S2NM3A04,S2NM3A05 +---> S2NM3A06,S2NM3A07,S3DC3A03,S3DC3A04,S3DC3A05,S3DC3A06,S3DC3A07 +---> S3DC3A08,S3DC3A09,S3DC3A10,S4KM3C02,S4KM3C03,S4KM3C04,S4KM3C05 +---> S4KM3C06,S4KM3C07,S4KM3C08,S4KM3C09,S4MP4C02,S4MP4C03,S4MP4C04 +---> S4MP4C05,S4MP4C06,S4MP4C07,S4MP4C08,S4NM3A02,S4NM3A03,S4NM3A04 +---> S4NM3A05,S4NM3A06,S4NM3A07,S3FL3X01,S3FL3X02,S3ZI3A01,S3ZI3A02 +---> S3ZI3A03,S3ZI3A04,S3ZI3A05,S3ZI3A06,S3ZI3A07,S3ZI3A08,S3ZI3A09 +---> S3ZI3A10,S3ZI3A11,S4SK3Y03,S4SK3Y04,S4SK3Y05,S4SK3Y06,S4SK3Y07 +---> S4SK3Y08,S4SK3Y09,S4SK3Y10,S4SK3Y11,S4KI3Q01,S4KI3Q02,S4KI3Q03 +---> S4KI3Q04,S4KI3Q05,S4KI3Q06,S4KI3Q07,S4KI3Q08,S4KI3Q09,S4MP4D01 +---> S4MP4D02,S4MP4D03,S4MP4D04,S4MP4D05,S4MP4D06,S4MP4D07,S4MP4D08 +shn_msc.img +---> S4GF3B01,S4GF3B02,S4GF3B03,S4GF3B04,S4GF3B05,S4GF3B06,S4GF3B07 +---> S4GF3B08,S4GF3B10,S3RL3A01,S3RL3A02,S3RL3A03,S3RL3A04,S3RL3A05 +---> S3RL3A06,S3RL3A07,S3RL3A08,S3RL3A09,S3RL3A10,S3MF3B01,S3MF3B02 +---> S3MF3B03,S3MF3B04,S3MF3B05,S3MF3B06,S3MF3B07,S2CT2A04,S2CT2A05 +---> S2CT2A06,S2CT2A07,S2CT2A08,S2CT2A09,S4SB4B01,S4SB4B02,S4SB4B03 +---> S4SB4B04,S4SB4B05,S4SB4B06,S4SB4B07,S4SB4B08,S4BF3A02,S4BF3A03 +---> S4BF3A05,S4TI4B01,S4TI4B02,S4TI4B03,S4TI4B04,S4FG3A01,S4FG3A02 +---> S3BH3A01,S3BH3A02,S3BH3A03,S3BH3A04,S3BH3A05,S3BH3A06,S3BH3A07 +---> S3BH3A08,S3SG3A02,S3SG3A03,S3SG3A04,S3SG3A05,S3SG3A06,S3SG3A07 +---> S3SG3A08 +shn_pnc.img +---> S4PT3B01,S4PT3B02,S4PT3B03,S4PT3B04,S4PT3B05,S4PT3B06,S4PT3B07 +---> S4PT3B08,S4PT3B09,S4KI3I01,S4KI3I02,S4KI3I03,S4KI3I04,S4KI3I05 +---> S4KI3I06,S4KI3I07,S4KI3I08,S4KI3I09,S4MK3A01,S4MK3A02,S4MK3A03 +---> S4MK3A04,S4MK3A05,S4MK3A06,S4MK3A07,S2BC3B02,S2BC3B04,S2BC3B05 +---> S2BC3B06,S2BC3B07,S2BC3B08,S4BC3A02,S4BC3A04,S4BC3A05,S4BC3A06 +---> S4BC3A08,S4PS3A01,S4PS3A02,S4PS3A03,S4PS3A04,S4PU3D02,S4PU3D03 +---> S4PU3D04,S4PU3D05,S4PU3D06,S4PU3D07,S4PU3D08,S2PJ3C09,S2PU3C01 +---> S2PU3C02,S2PU3C03,S2PU3C04,S2PU3C05,S2PU3C07,S2PU3C08,S2PJ3D01 +---> S2PJ3D02,S2PJ3D03,S2PJ3D04,S2PJ3D05,S2PJ3D06,S2PJ3D07,S2PJ3D08 +---> S4PJ3F01,S4PJ3F02,S4PJ3F03,S4PJ3F04,S4PJ3F05,S4PJ3F06,S4PJ3F07 +---> S4PJ3F08,S4GS3C01,S4GS3C02,S4GS3C04,S4GS3C05,S4GS3C06,S4GS3C07 +---> S4GS3C08,S4GS3C09,S4GS3C10,S4GS3C11,S4GS3C12 +shn_wlk.img +---> S2TW2B01,S2TW2B02,S2TW2B03,S2TW2B04,S4TW4C01,S4TW4C02,S4TW4C03 +---> S4TW4C04,S2WL1A01,S2WL1A02,S2WL1A03,S2WL1A04,S2WL1A05,S2WL1A06 +---> S2WL1A07,S2WL1A08,S2WL1A09,S2WL1A10,S2WL1A11,S2WL1A12,S2WL1A13 +---> S2WL1A14,S2WL1A15,S2WL1A16,S2WL1A17,S2WL2B01,S2WL2B02,S2WL2B03 +---> S2WL2B04,S2WL2B05,S2WL2B06,S2WL2B07,S2WL2B08,S2WL2B09,S2WL2B10 +---> S2WL2B11,S2WL2B12,S2WL2B13,S2WL2B14,S2WL2B15,S2WL2B16,S2WL2B17 +---> S2WL8A01,S2WL8A02,S2WL8A03,S2WL8A04,S2WL8A05,S2WL8A06,S2WL8A07 +---> S2WL8A08,S2WL8A09,S2WL8A10,S2WL8A11,S2WL8A12,S2WL8A13,S2WL8A14 +---> S2WL8A15,S2WL8A16,S4WL2A01,S4WL2A02,S4WL2A03,S4WL2A04,S4WL2A05 +---> S4WL2A06,S4WL2A07,S4WL2A08,S4WL2A09,S4WL2A10,S4WL2A11,S4WL2A12 +---> S4WL2A13,S4WL2A14,S4WL2A15,S4WL2A16,S4WL4C01,S4WL4C02,S4WL4C03 +---> S4WL4C04,S4WL4C05,S4WL4C06,S4WL4C07,S4WL4C08,S4WL4C09,S4WL4C10 +---> S4WL4C11,S4WL4C12,S4WL4C13,S4WL4C14,S4WL4C15,S4WL4C16,S4WL4C17 +---> S4WL4C18,S4WL5B01,S4WL5B02,S4WL5B03,S4WL5B04,S4WL5B05,S4WL5B06 +---> S4WL5B07,S4WL5B08,S4WL5B09,S4WL5B10,S4WL5B11,S4WL5B12,S4WL5B13 +---> S4WL5B14,S4WL5B15,S4WL5B16,S1TT5Z01,S1TT5Z02,S1TT5Z03,S1TT5Z04 +---> S1TR5Z01,S1TR5Z02,S1TR5Z03,S1TR5Z04,S3BO3A02,S3BO3A03,S3BO3A04 +---> S3BO3A05,S3BO3A06,S3BO3A07,S3BO3A08,S3BO3A09,S2ST2C01,S2ST2C03 +---> S2ST2C05,S2ST2C07,S2ST2C09,S2ST2C11,S2ST2C13,S2ST2C15,S2ST2C17 +---> S4ST4C01,S4ST4C03,S4ST4C05,S4ST4C07,S4ST4C09,S4ST4C11,S4ST4C13 +---> S4ST4C15,S4ST4C17,S4ST4C19,S3RN3A01,S3RN3A02,S3RN3A03,S3RN3A04 +---> S3RN3A05,S3RN3A06,S3RN3A07,S3RN3A08,S3RN3A09,S3RN3A10,S3RN3A11 +---> S3RN3A12,S3RN3A13 +shn_mjt.img +---> S3ZS3A01,S3ZS3A02,S3ZS3A03,S4CD3A01,S4CD3A02,S4CD3A03,S4CD3A04 +---> S4CD3A05,S4CD3A06,S4CD3A07,S4CD3A08,S4POGO01,S4POGO02,S4POGO03 +---> S3PN5C01,S3PN5C02,S3PN5C03,S3PN5C07,S4SW4A01,S4SW4A02,S4SW4A03 +---> S4SW4A04,S4SW4A05,S4SW4A06,S4SW4A07,S4SW4A08,S4SW4A09,S4SW4A10 +---> S3BR3Z02,S3BR3Z03,S3BR3Z05,S3PM4B01,S3MS3Z01,S3MS3Z02,S3MS3Z03 +---> S3MS3Z04,S3MS3Z05,S3MS3Z06,S3CF3Z01,S3CF3Z02,S3CF3Z03,S3CF3Z04 +---> S3CF3Z05,S3CF3Z06,S4LD4A01,S4LD4A02,S4LD4A03,S4LD4A04,S4LD4A05 +---> S4LD4A06,S4LD4A07,S4LD4A10,S4CO4A01,S4CO4A02,S4CO4A03,S4CO4A04 +---> S4CO4A05,S4CO4A06,S4CO4A07,S4CO4A08,S4GH3A01,S4GH3A02,S4GH3A03 +---> S4GH3A04,S4GH3A06,S4GH3A07,S4GH3A08,S4GH3A09,S3GP3X01,S3GP3X02 +---> S3GP3X03,S3GP3X04,S3GP3X05,S3GP3X06,S3GP3X07,S4YR3A02,S4YR3A03 +---> S4YR3A05,S4YR3A06,S3BF3A01,S3BF3A02,S3BF3A03,S3BF3A04,S3BF3A05 +---> S3BF3A06,S3BF3A07,S4BZ4A01,S4GH3C01,S4GH3C02,S4GH3C03,S4GH3C04 +---> S4GH3C05,S4GH3C08 +shn_rjr.img +---> S3RS3A01,S3RS3A02,S3RS3A03,S3RS3A04,S3RS3A05,S3RS3A06,S3DD3B01 +---> S3DD3B02,S3DD3B03,S3DD3B05,S3UC3Z08,S3TN3X01,S3TN3X02,S3TN3X03 +---> S3TN3X04,S3TN3X05 +shn_jms.img +---> S3SK3A01,S3SK3A02,S3SK3A03,S3SK3A04,S3SK3A05,S3SK3A06,S3KT3A02 +---> S3KT3A03,S3KT3A04,S3KT3A05,S3KT3A06,S3KT3A07,S3KT3A08,S3KF3C01 +---> S3KF3C02,S3KF3C03,S3KF3C04,S3KF3C05,S3GA3A01,S3GA3A02,S3GA3A03 +---> S3GA3A04,S3GA3A05,S3GA3A06,S3GA3A07,S3GA3A08,S3GA3A09,S3AB3A01 +---> S3AB3A03,S3AB3A04,S4PJ3E04,S4PJ3E05,S4PJ3E06,S4PJ3E07,S4PJ3E08 +---> S4PJ3E09,S4TD3F01,S4TD3F02,S4TD3F03,S4TD3F04,S4TD3F05,S4TD3F06 +---> S4TD3F07,S4TD3F08,S4TD3F09,S3RR3Z02,S3RR3Z03,S3RR3Z04,S3RR3Z05 +---> S3RR3Z06,S3RR3Z07,S3RR3Z08,S3RR3Z09,S3RR3Z10 +shn_jake.img +---> S4WA4B01,S4WA4B02,S4WA4B03,S4WA4B04,S4WA4B05,S4WA4B06,S4WA4B07 +---> S4WA4B08,S4WA4B09,S4WB4B02,S4WB4B03,S4WB4B04,S4WB4B05,S4WB4B06 +---> S4WB4B07,S4WB4B08,S4WB4B09,S3CR3A01,S3CR3A02,S3CR3A03,S3CR3A04 + \ No newline at end of file diff --git a/IMG/SHIT b/IMG/SHIT new file mode 100755 index 0000000..16f8ea8 --- /dev/null +++ b/IMG/SHIT @@ -0,0 +1,34 @@ + +WIMP image library list 1.46 5/30/93 +Copyright (C) 1989 Williams Electronics Games, Inc. + +Created with version 6.52 WIMP + +jamie.img +---> BLADE01,BLADE02,BLADE03,BLADE04,BLADE05,BLADE06,BLADE07,BLADE08,BLADE09 +---> BLADE10,STAR01,STAR02,STAR03,STAR04,STAR05,STAR06,STAR07,STAR08,STAR09 +---> STAR10,STAR11,STAR12,STAR13,STAR14,DBELL01,DBELL02,DBELL03,DBELL04 +---> DBELL05,DBELL06,DBELL07,DBELL08,DBELL09,DBELL10,DBELL11,DBELL12,DBELL13 +---> DBELL14,DBELL15,LAMB01,LAMB02,LAMB03,LAMB04,LAMB05,LAMB06,LAMB07,LAMB08 +---> LAMB09,LAMB10,LAMB11,LAMB12,LAMB13,LAMB14,LAMB15,FISHF01,FISHF02 +---> FISHF03,FISHF04,FISHF05,FISHT01,FISHT02,FISHT03,FISHT04,FISHT05,FISHT06 +---> FISHT07,FISHT08,FISHT09,FISHT10,FISHT11,FISHT12,FISHT13,FISHT14,FISHT15 +---> BATSD01,BATSD02,BATSD03,BATSD04,BATSD05,BATBK01,BATBK02,BATBK03,BATBK04 +---> BATBK05,SKULL01,SKULL02,SKULL03,SKULL04,SKULL05,SKULL06,SKULL07,SKULL08 +---> SKULL09,SKULL10,SKULL11,SKULL12,SKULL13,BONE01,BONE02,BONE03,BONE04 +---> BONE05,BONE06,BONE07,BONE08,BONE09,BONE10,BONE11,BONE12,BONE13,BONE14 +---> BONE15,HART01,HART02,HART03,HART04,HART05,HART06,HART07,HART08,HART09 +---> HART10,HART11,HART12,HART13,HART14,HART15,HARTBK01,HARTBK02,HARTBK03 +---> HARTBK04,HARTBK05,HAND01,HAND02,HANDL03,HANDL04,HANDL05,HANDL06 +---> HANDL07A,HANDL07B,HANDR03,HANDR04,HANDR05,HANDR06,HANDR07,!TOMBFORM01 +---> !TOMBFORM02,!TOMBFORM03,!TOMBFORM04,!TOMBSTN01,!TOMBSTN02,!TOMBSTN03 +---> !TOMBSTN04,!TOMBSTN05,!TOMBSTN05A,!TOMBSTN06,!TOMBSTN06A,!TOMBSTN07 +---> !TOMBSTN08,!TOMBSTN09,TPIE01,TPIE02,TPIE03,TPIE04,TPIE05,TPIE06,TPIE07 +---> TPIE08,TTOP01,TTOP02,TTOP03,TTOP04,TTOP05,TTOP06,TTOP07,GHOST01,GHOST02 +---> GHOST03,GHOST04,GHOST05,GHOHIT01,GHOHIT02,GHOHIT03,GHOHIT04,GHOHIT05 +---> GHOHIT06,GHOHIT07,GHOHIT08,GHOHIT09,GHOHIT10,GHOHIT11,GHOHIT12,GHOHIT13 +---> GHOHIT14,GHOHIT15,GHOHIT16,TOMBFORM01,TOMBFORM02,TOMBFORM03,TOMBFORM04 +---> TOMBSTN01,TOMBSTN02,TOMBSTN03,TOMBSTN04,TOMBSTN05,TOMBSTN06,TOMBSTN07 +---> TOMBSTN07A,TOMBSTN08,TOMBSTN08A,TOMBSTN09,TOMBSTN010,TOMBSTN011 + + diff --git a/IMG/SHIT.IMG b/IMG/SHIT.IMG new file mode 100644 index 0000000..4af0119 Binary files /dev/null and b/IMG/SHIT.IMG differ diff --git a/IMG/SHIT2.IMG b/IMG/SHIT2.IMG new file mode 100644 index 0000000..4c985d3 Binary files /dev/null and b/IMG/SHIT2.IMG differ diff --git a/IMG/SHIT3.IMG b/IMG/SHIT3.IMG new file mode 100644 index 0000000..77f11ec Binary files /dev/null and b/IMG/SHIT3.IMG differ diff --git a/IMG/SHNFLYNE.IMG b/IMG/SHNFLYNE.IMG new file mode 100644 index 0000000..2ee2161 Binary files /dev/null and b/IMG/SHNFLYNE.IMG differ diff --git a/IMG/SHNPRP_P.SRC b/IMG/SHNPRP_P.SRC new file mode 100755 index 0000000..228996d --- /dev/null +++ b/IMG/SHNPRP_P.SRC @@ -0,0 +1,10 @@ +SHNPRP_P: + .word 63 + .word 018d5h,07fddh,07f98h,07f58h,07f34h,07ad1h,07ab0h,0768fh + .word 06e90h,06e6eh,06e4dh,0622ch,05e0ch,059eah,05dc9h,055cah + .word 051a8h,04d89h,04d87h,04567h,04925h,04124h,03925h,03d03h + .word 038e2h,038c1h,030e4h,030c3h,03480h,02460h,02420h,01c40h + .word 01400h,00400h,076d6h,07210h,06dabh,064b9h,05c77h,05816h + .word 05415h,04c13h,04410h,03c0eh,0340ch,02409h,01405h,00401h + .word 07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04631h,03defh + .word 035adh,02d6bh,02529h,01ce7h,014a5h,00c63h,00421h diff --git a/IMG/SHNRED_P.SRC b/IMG/SHNRED_P.SRC new file mode 100755 index 0000000..eabc42c --- /dev/null +++ b/IMG/SHNRED_P.SRC @@ -0,0 +1,10 @@ +SHNRED_P: + .word 63 + .word 018d5h,07fddh,07f98h,07f58h,07f34h,07ad1h,07ab0h,0768fh + .word 06e90h,06e6eh,06e4dh,0622ch,05e0ch,059eah,05dc9h,055cah + .word 051a8h,04d89h,04d87h,04567h,04925h,04124h,03925h,03d03h + .word 038e2h,038c1h,030e4h,030c3h,03480h,02460h,02420h,01c40h + .word 01400h,00400h,076d6h,0720fh,06dabh,07128h,070c5h,06c42h + .word 06800h,06400h,05800h,05000h,04800h,03800h,02800h,01800h + .word 07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04631h,03defh + .word 035adh,02d6bh,02529h,01ce7h,014a5h,00c63h,00421h diff --git a/IMG/SHNRUN.IMG b/IMG/SHNRUN.IMG new file mode 100644 index 0000000..c9421f5 Binary files /dev/null and b/IMG/SHNRUN.IMG differ diff --git a/IMG/SHNSTAND.IMG b/IMG/SHNSTAND.IMG new file mode 100644 index 0000000..9b7b473 Binary files /dev/null and b/IMG/SHNSTAND.IMG differ diff --git a/IMG/SHNVID_F.BIN b/IMG/SHNVID_F.BIN new file mode 100755 index 0000000..f9ce1a0 Binary files /dev/null and b/IMG/SHNVID_F.BIN differ diff --git a/IMG/SHN_HIT.IMG b/IMG/SHN_HIT.IMG new file mode 100644 index 0000000..49c2756 Binary files /dev/null and b/IMG/SHN_HIT.IMG differ diff --git a/IMG/SHN_JAKE.IMG b/IMG/SHN_JAKE.IMG new file mode 100644 index 0000000..d6aac34 Binary files /dev/null and b/IMG/SHN_JAKE.IMG differ diff --git a/IMG/SHN_JMS.IMG b/IMG/SHN_JMS.IMG new file mode 100644 index 0000000..397d1ca Binary files /dev/null and b/IMG/SHN_JMS.IMG differ diff --git a/IMG/SHN_KIK.IMG b/IMG/SHN_KIK.IMG new file mode 100644 index 0000000..1d8d1be Binary files /dev/null and b/IMG/SHN_KIK.IMG differ diff --git a/IMG/SHN_MJT.IMG b/IMG/SHN_MJT.IMG new file mode 100644 index 0000000..09836b8 Binary files /dev/null and b/IMG/SHN_MJT.IMG differ diff --git a/IMG/SHN_MSC.IMG b/IMG/SHN_MSC.IMG new file mode 100644 index 0000000..89cc405 Binary files /dev/null and b/IMG/SHN_MSC.IMG differ diff --git a/IMG/SHN_PNC.IMG b/IMG/SHN_PNC.IMG new file mode 100644 index 0000000..072a775 Binary files /dev/null and b/IMG/SHN_PNC.IMG differ diff --git a/IMG/SHN_RJR.IMG b/IMG/SHN_RJR.IMG new file mode 100644 index 0000000..9de09f8 Binary files /dev/null and b/IMG/SHN_RJR.IMG differ diff --git a/IMG/SHN_WLK.IMG b/IMG/SHN_WLK.IMG new file mode 100644 index 0000000..b7409eb Binary files /dev/null and b/IMG/SHN_WLK.IMG differ diff --git a/IMG/SIDEROPE.IMG b/IMG/SIDEROPE.IMG new file mode 100644 index 0000000..fa1e674 Binary files /dev/null and b/IMG/SIDEROPE.IMG differ diff --git a/IMG/SKIL.IMG b/IMG/SKIL.IMG new file mode 100644 index 0000000..13aeeb5 Binary files /dev/null and b/IMG/SKIL.IMG differ diff --git a/IMG/SKIL2.IMG b/IMG/SKIL2.IMG new file mode 100644 index 0000000..b8f9ccf Binary files /dev/null and b/IMG/SKIL2.IMG differ diff --git a/IMG/SKILBON.IMG b/IMG/SKILBON.IMG new file mode 100644 index 0000000..4b1889e Binary files /dev/null and b/IMG/SKILBON.IMG differ diff --git a/IMG/SLATE.IMG b/IMG/SLATE.IMG new file mode 100644 index 0000000..fc4cabf Binary files /dev/null and b/IMG/SLATE.IMG differ diff --git a/IMG/SLATEPG.BDB b/IMG/SLATEPG.BDB new file mode 100755 index 0000000..c1dbe5c --- /dev/null +++ b/IMG/SLATEPG.BDB @@ -0,0 +1,14 @@ +slatepg 2000 1000 255 1 3 12 +slate 734 1195 271 681 +120 765 544 0 0 +100 767 294 3 0 +100 767 427 0 0 +400 790 301 6 2 +300 790 480 6 1 +300 923 301 6 2 +300 923 480 6 1 +120 969 544 9 0 +100 971 294 C 0 +100 971 427 9 0 +400 1058 301 6 2 +300 1058 480 6 1 diff --git a/IMG/SLATEPG.BDD b/IMG/SLATEPG.BDD new file mode 100755 index 0000000..037fcac --- /dev/null +++ b/IMG/SLATEPG.BDD @@ -0,0 +1,1509 @@ +5 +0 204 119 1 +                                            +    +                      +      +                                                                                         +                                 +                      +       +               + +    +                             +         +                                     +              +                                 +  +                         + + +      + +                 +                         + +                                                               +                    +                                          +                      + +                  +                                                                                            +         +             +      +        +     + +                                              + +  +                                                                                                                                        + +  +            +                                                                                                               +                                                                                                                                                                                                           +      +        +                                        +                                                                               +                                                                                        +                                                    +                                                                            +                                                               +                                               + 3 204 133 1 +         + +  +    +   + + + +  + + + + + + + + + + + + + +  + + + + +  + + + + + + + + + + + + + + + + + + +  +  +        + + + + + + + + + +  +   + +    + + + + + + +  + +  + + + + + + + + +  + + + + + + + + +  +  +      + + + + + + + + + +  +    + + + + + + + + + + +   +  +  +  + + + + +      +  +    + + + + + + + + +    + + + + +  + + + + + +  + + +  + + +  + +  + +  +   + + +     + + + +  + + + + + + + + + + + +  + +  + + +  +   + + + + + + + + + + +      +  + + + + +    +    +  +   + + + + + + +    + + +   + + +     + + + +  +  + + + + + + +      +   + +    + + + +   +    + + + + +   +    + + + + + + + +  + +  +  +  + + + + +        + +       +      +   +   +  + +  + +   +  + + + +       + +   +      + +  + + +     +   +  + +  +  + +    + +  +  +         + + + +     +  +  + +   + +   + +   + + + +   +  + + + + + + + + + +    +     +    + + + +       + + +        + + + +  + + +   +  +   +  +  +         +       + + +     + + + + + + + +    + + +  + + + +  + + + +      + + +    + +     + + + +             + + + + + +  + +  + +    + + + + + +    + + +    +   +  +  +    + + + +      + + +  + + +     + + + + + +      + + +   +  +   + +  +    +      +       +      +      + + +     + +  +   +  +  + + +  +   + + + + + + +     +   +  +   + +  +       +     +  + +      + + +  +    + +  + +     +   + + + +   + + + + + +             + + +  +    +  + +    + + + +    +  +    + + + +       + +  +  + + + + + +   +   + + + +   + +      + +     + + + +    +  + +   + + +    + + + + + +    +           + +     +   +  + +  + +   + +  +    +     +    + +    + +    +       +    +          + + +  +   +        +  + + + + +   + + +  + + + +   +   +         + + +           +   + +   +      +          +           + +  +     + +        +   + +                     +   + +        + +      + +     +   + + +     + + +     +      +    +  + +                +  +    +     +      +            +     + +                +   +   + +   +          +      + + +     +   + +      +                +        +     + +       +             +    +     +  +   +            +       +      +                       +   +                         +  + +                            +  +                  +       +                  +        +   +      +                 +           +           +                       +  +    +                 +                + + +         +       +         +                 +  +                          +      +   + +                +   +  + +  +           + +                    + +   +           +                    +      +              +            + +      +           +         +         +                   +          +    +     +           +  +        +  +                + + + + + +                +             +                                      +                             + +        + +                         + +     +                     +   + + + +  + +                              +     + +                      +                    +         + +                    + +     +     +  + + + +     +                                    +                                         +                    +           +                          + +    +                                            + +  +           +   +                        +  +  +               +         +                     +    +                         +    +               +     +                           +                                                                                                                                                 + +                 +          +                  +  + +                  +                                                                                                                                                              +          +        + +          +                                   +                                                                                                                                                                                    + +                              +                                                                 +                              +                                                                                                                                                                      +                                          +                                                                                                                                                                                                                                                                                           +                                                                                                                                                                                                           + +                                    +                                                                           +                  + +                                             6 76 62 0 +                         +   + +    +    +    +    +      +    + +    + +    +     +     +    +   +    +   + + +    + + +   + + +    +  + +   + + +   + +   + + +   + + +    + + +   + +       +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 196 119 1 +                                                                                             +                         +                                                                                                                                                                               +                               +                                +         +                                                                                                                   +                   +                         +                                             +      +                                           +                                                                                   +  +          +                                     +                                              +                               + +                                                      +        +                       +                    +  +            +               +    + +                                +                     + +      C 196 133 1 +     + + + + + + + + + + + + + + +   +  + + + + + + + +                + + + + + + + + +  + + + + +  + + + +  + + + + + + + + +            + + +  +  + + + + + + + + + +   + + + + +  + +  + + + + + + +             + + + + +   + + + + +   + + + +  +  +            + +  + +  + + + + + +  +     + + + + + + +             + + + + + +  + + +  +  + +  + +  + + +  + + +      +   +    + + + + + +  + +      + +          + +  +  + + +  + + + + +   + + +      +     +              +  + + + + + +  +    + +  + +            + + + + + + +  + + + + + + + +  + +  +  + +  +               + + + + + + + + + + + +  +   + +           + + + + + + + + + + + + + + + + + + + +   + + + + +          + + + + + + + + + + + + + + + + + + + + +  + + +                       + + + + +   + + + + + + + + + + + + + + + + +     + +     +    +         + + + + + + + + + + + + +   + + + + + + + + + + + + + + +  + +    +  + + + + +  + +         + + + + + + +  +  + + + + + + + + + + +     +               +  + + + + + + +  +  +               + +      +  + + + + + + +   + + +                     +     + + + + + + + + + + + +                           + + + + + + + + + +   +                  + + + + +  +   +          +     + + + + + +    +                             + +  + +   + + + + +              +     +  + + + +                +                                      +                   +  +                  +     + +   +  +                     + +                               +                    +       + +                     +        + +                              + + + +                        +   + +    +                       +     +    +        +                  +                     +   +          +                 + +                                +                                +         +             +                  +   +        + +                                            +  +      + +                   +                           + + +                        +    +  + +                                   +                         +  + + + +                             + +                               +  + +                      +  +                          +                     +                                       +                              + +   + +                           +                           + +     + +                      +                                                                                      + +                           + +       + +                     + + +  +                                                                                                       + +   +                                                      +     +                  + +                                                                         +                                              +             +  +                   +     +                 +    + +     +            +         +                          +                                                                  + +                             +                 +  +                                                                                              +                                                                                                 +                                                +                                                                            + + +                                                                                                                                                                                                       +                                                                               +                                                                         +                              +                                           +                                 +                                                +                                                                                                                        CSELBK_P 22 + d C !"o% ,M%N%--5-56LLOGOD_P 16 +,=55m-L-+%4FLLOGOL_P 16 +,VvNUN4FF= "f \ No newline at end of file diff --git a/IMG/SMOKE.IMG b/IMG/SMOKE.IMG new file mode 100644 index 0000000..7cf6f86 Binary files /dev/null and b/IMG/SMOKE.IMG differ diff --git a/IMG/SOVRROPE.IMG b/IMG/SOVRROPE.IMG new file mode 100644 index 0000000..55437a3 Binary files /dev/null and b/IMG/SOVRROPE.IMG differ diff --git a/IMG/SPARKLE.IMG b/IMG/SPARKLE.IMG new file mode 100644 index 0000000..9afe606 Binary files /dev/null and b/IMG/SPARKLE.IMG differ diff --git a/IMG/SPARKS2.IMG b/IMG/SPARKS2.IMG new file mode 100644 index 0000000..5eb24d4 Binary files /dev/null and b/IMG/SPARKS2.IMG differ diff --git a/IMG/SPECIAL.IMG b/IMG/SPECIAL.IMG new file mode 100644 index 0000000..1024944 Binary files /dev/null and b/IMG/SPECIAL.IMG differ diff --git a/IMG/SPIT.IMG b/IMG/SPIT.IMG new file mode 100644 index 0000000..e0a60df Binary files /dev/null and b/IMG/SPIT.IMG differ diff --git a/IMG/SPORTBK.IMG b/IMG/SPORTBK.IMG new file mode 100644 index 0000000..fac416f Binary files /dev/null and b/IMG/SPORTBK.IMG differ diff --git a/IMG/SPORTLO8.IMG b/IMG/SPORTLO8.IMG new file mode 100644 index 0000000..8c4c46e Binary files /dev/null and b/IMG/SPORTLO8.IMG differ diff --git a/IMG/SPRTBK.BDB b/IMG/SPRTBK.BDB new file mode 100755 index 0000000..d3d36e0 --- /dev/null +++ b/IMG/SPRTBK.BDB @@ -0,0 +1,73 @@ +SPRTBK 2000 1000 255 1 2 71 +SPORTBK 390 1597 195 682 +3E10 474 256 0 1 +3E10 474 356 0 1 +3E10 474 456 0 1 +3E10 474 556 0 1 +3F00 499 265 3 0 +3F00 499 398 3 0 +3F00 499 532 3 0 +3E10 574 556 0 1 +3E10 574 456 0 1 +3E10 574 356 0 1 +3E10 574 256 0 1 +3F00 600 533 3 0 +3F00 618 398 3 0 +3F00 620 264 3 0 +3E10 674 256 0 1 +3E10 674 356 0 1 +3E10 674 456 0 1 +3E10 674 556 0 1 +3F00 704 533 3 0 +3F00 739 396 3 0 +3F00 740 264 3 0 +3E10 774 556 0 1 +3E10 774 456 0 1 +3E10 774 356 0 1 +3E10 774 256 0 1 +3F00 824 533 3 0 +3F00 844 395 3 0 +3F00 860 264 3 0 +3E10 874 256 0 1 +3E10 874 356 0 1 +3E10 874 456 0 1 +3E10 874 556 0 1 +3F00 946 533 3 0 +3F00 962 264 3 0 +3F00 967 396 3 0 +3E10 974 556 0 1 +3E10 974 456 0 1 +3E10 974 356 0 1 +3E10 974 256 0 1 +3F00 1070 533 3 0 +3E10 1074 256 0 1 +3E10 1074 356 0 1 +3E10 1074 456 0 1 +3E10 1074 556 0 1 +3F00 1085 397 3 0 +3F00 1085 264 3 0 +3E10 1174 556 0 1 +3E10 1174 456 0 1 +3E10 1174 356 0 1 +3E10 1174 256 0 1 +3F00 1194 533 3 0 +3F00 1207 397 3 0 +3F00 1208 264 3 0 +3E10 1274 256 0 1 +3E10 1274 356 0 1 +3E10 1274 456 0 1 +3E10 1274 556 0 1 +3F00 1326 533 3 0 +3F00 1330 400 3 0 +3F00 1331 264 3 0 +3E10 1374 556 0 1 +3E10 1374 456 0 1 +3E10 1374 356 0 1 +3E10 1374 256 0 1 +3F00 1447 533 3 0 +3F00 1453 264 3 0 +3F00 1464 400 3 0 +3E10 1474 256 0 1 +3E10 1474 356 0 1 +3E10 1474 456 0 1 +3E10 1474 556 0 1 diff --git a/IMG/SPRTBK.BDD b/IMG/SPRTBK.BDD new file mode 100755 index 0000000..9c7eaab --- /dev/null +++ b/IMG/SPRTBK.BDD @@ -0,0 +1,1241 @@ +2 +0 100 100 1 + +            +   +    +     +                   +    +   +   +  +  + +               +    +   +   +  +                  +    +    + +       +     +    +     +   + + +        +         +   + +   + +        +  +      +    +  +  + + + +  +    + + +  +       + +   + +    + +   +     + +       +  +  +  +    +  +     +  +       +  +     +  +     +   +  +     +   +     + +  + + + +     +     +     +       + + +    +  +      +  +   +   +  + + +  +   +    + +    +    +  + + +   +     + +    +     +   +  +    +    +  +  +  +     + + +   + + +    + +    + +   +  +   + +   +  + +    +     +  +  +   +  +    + + +   + +    +  + +   + + + +   +  +    +       + +  + +   + + +   + + +   +   +   +   +  + +    + + +   + + + +   +  +   +    +  + +  +  + + + +    + + +    +  +  +    +  + + +   + + +    + + +  +   + +    +   +  + + + +  + +  + + + +     +     +  +  + + +  +  +     + +   + +    +   +  + + + + + + +  +    +    +    +   + +   + +   +   +  + + +  + + +   + +    +    +    + +  + + +  +   +    +   +     +  + +   + + + +  +  +  + +   +     +  + + +  + +  +   +  +  + +   +    +  +  + + +  +  +  + +   + + +    +   +  + +  +    + + +   + +       +  +  +   +    + +  + + +   + +  +  +  +   +   +  +   +   + + +   + +  +    +  +    + +    +  + + +   + + +  +   +   +  + + + +  + + + +   + +  +    + +  +      + + +  +    + + +  + +  + + + +     +   + + +  +       +     + + + + + +     +   + + + +  +  +  + +  +   + + + + +     + +  + +   + + +    + + +   + + + +     +  + + + +  +  +   + + +  +    + + + + +        +  + + +  + + +  +   + +  +  + + +        +  +  + + +     +   +   + + + + +   +      +   + +   +  + + +   +  + + + +  + +   +  +  + + +  + +  +  +    + +  + +     + +  + + +  +  +  +   + +   +  + + +   +  +   + +  +   +  +  +  + +  + +  + + + +  + +    + + +  +  + +  + + +   +   + +  +  +  +     + +  +  +  +   + + +  +   + + +  +  +  + +    + + +  +  + + +  +  +  + +  +   +  + +  +    +  + + + +  +   +  + + +  + +    + + + +  +   + +   +  + + + + +  + +  + + +    +    + + + +  + +   + +  +  + + + +  + +  + +   +  +     + + + +  +   +  + + + + +  +  +  +   + +  + + + + +     +   + + + +  + +  + + +  + + + + +  + + + + + + +   + +     + + + + + +  + +  + +     + + + + +     + + + +  +  +  + +  + + +   +  +  + + +       + + + + +  +  +  + +  +   + + + + + + + + +    + + + + + +  +  + + +  + +    + + + + + + + + +    + + + + + +  + +  +   +  +  + + + + + + + + +   + + + + + + +  + + + +   +    + + + + + +  + +     + + + + +  + +   +    +  + + + + + + +  + +   + + +  + +  + + +  +   + +  + + +  + + +  + +   +  + +  +  + + + +   + +  +     + + + + +  + +   + + +  + + +   + + +   + + + + + + +  +  +  + + +  + + +   + +  +   + + + + +  +    +   + +  + +   + +  +  +  + + +   +  +  +   + +  + + +    +  +    +  + + +   +  +    +    + + +  + + + +   +  +  + + + +  +    +   + +  + +    +  +   + + + +  + +  +      + + +    +     +  +  + + + + + + +  +  +    + +  + +      +  +  + + +  +  +  +    + + +  +       +  + + + + + +   +    + +   + +    +  + + +  +   +  +   + +      + +  +  + + + +  +  +    + + +   +    + + +  +  + + +  +    +  +  + + +   +   +  + + +  + +  + + +   +     +  + + + +   +    + + +   +  + + +  + + +   +    +  +      +  +  + + + + + + +    +   + + + +    +    + + + + +   + + +  + +  +     + + +  +  +    + + +  + +  +  + + +  + +  + +   +      + + +  +  + + +  + + +  +     +  +     + + + + + + + + + + +  +  +  +   +    +  + + +  + + +  + + +  +    + +   +  + + + + +   + +  +  + +   + +     + + +  + +  + +   +   +    +  +    +  +  + +    +  + +   +      +    +  +   +   + +     +  +     +  +       +  +  + + +    + +    +    +  + + +      + + + + +       +      +   +   + +   + +     +     +    +  + + +     +  + +          +   + + +    + +  + +          +     +     + +   +  + +         +   +  +    +  + +                + +     + +             +    +  +     +  +  +          +   +  +  +     + +   +               +    + +   +  + +   +3 100 109 1 +                                                                                                                                                                     SPORTBK 29 +     ($ ihGF % $SPORTBK_P 19 +      \ No newline at end of file diff --git a/IMG/STAND.IMG b/IMG/STAND.IMG new file mode 100644 index 0000000..730f2cd Binary files /dev/null and b/IMG/STAND.IMG differ diff --git a/IMG/STANDS.IMG b/IMG/STANDS.IMG new file mode 100644 index 0000000..15a33e6 Binary files /dev/null and b/IMG/STANDS.IMG differ diff --git a/IMG/STATE.RST b/IMG/STATE.RST new file mode 100755 index 0000000..e699d8d --- /dev/null +++ b/IMG/STATE.RST @@ -0,0 +1,13 @@ +[edit-] +screen=80 50 +toggles=1 0 0 1 0 0 +srch=01 +src= +rpl= +file=c:\video\wwf\img\doink.lod 1 1 1 4 +[brief] +file=c:\video\wwf\img\doink.lod 1 1 1 4 1 47 78 1 c=0 +file=c:\video\wwf\img\razor.lod 1 1 1 3 +[shared-] +pmark=c:\video\wwf\img\doink.lod 1 4 + \ No newline at end of file diff --git a/IMG/STATUSD.IMG b/IMG/STATUSD.IMG new file mode 100644 index 0000000..b009427 Binary files /dev/null and b/IMG/STATUSD.IMG differ diff --git a/IMG/SUNGLS.IMG b/IMG/SUNGLS.IMG new file mode 100644 index 0000000..96faf92 Binary files /dev/null and b/IMG/SUNGLS.IMG differ diff --git a/IMG/SWEAT.IMG b/IMG/SWEAT.IMG new file mode 100644 index 0000000..08d9ee0 Binary files /dev/null and b/IMG/SWEAT.IMG differ diff --git a/IMG/TAKER.BAT b/IMG/TAKER.BAT new file mode 100644 index 0000000..4dfa1c5 --- /dev/null +++ b/IMG/TAKER.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld taker und_hit und_kik und_msc und_pnc und_wlk und_rjr und_mjt und_jms und_jake +@copy taker.ld1 + taker.ld2 taker.lod +@move taker.h ..\takerimg.h +@move taker.seq .. + diff --git a/IMG/TAKER.IRW b/IMG/TAKER.IRW new file mode 100755 index 0000000..8e70891 Binary files /dev/null and b/IMG/TAKER.IRW differ diff --git a/IMG/TAKER.LD1 b/IMG/TAKER.LD1 new file mode 100644 index 0000000..178f021 --- /dev/null +++ b/IMG/TAKER.LD1 @@ -0,0 +1,11 @@ +ASM> takerimg.tbl +***> 2f8d520,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* UNDERTAKER ************************************************************* +ZON> +MON> +BON> +POF> +; diff --git a/IMG/TAKER.LD2 b/IMG/TAKER.LD2 new file mode 100755 index 0000000..5ddc028 --- /dev/null +++ b/IMG/TAKER.LD2 @@ -0,0 +1,104 @@ +und_hit.img +---> U3CP3B01,U3CP3B02,U3CP3B03,U3CP3B04,U3CP3B05,U3CP3B06,U3CP3B07 +---> U2AH3A03,U2AH3A04,U2AH3A05,U2AH3A06,U2AH3A07,U4AH3A02,U4AH3A03 +---> U4AH3A04,U4AH3A05,U4AH3A06,U4AM4C01,U4AM4C02,U4AM4C03,U4AM4C04 +---> U4AM4C05,U4AM4C06,U2AM2A02,U2AM2A03,U2AM2A04,U2AM2A05,U2AM2A06 +---> U3AE4A01,U3AE4A02,U3AE4A03,U3AE4A04,U3AE4A05,U3AE4A06,U3AE4A07 +---> U4BK3C01,U4BK3C02,U4BK3C03,U4BK3C05,U4BK3C06,U4LB4A01,U4LB4A02 +---> U4LB4A03,U4LB4A04,U4LB4A05,U4LB4A06,U3FD3B01,U3FD3B02,U3FD3B03 +---> U3FD3B04,U3FD3B05,U3FD3B06,U3FD3B07,U3GD2A01,U3GD2A02,U3GD2A03 +---> U3GD2A04,U3GD2A05,U3GD2A06,U3GD2A07,U3GD2A08,U3GD4A05,U3GD4A06 +---> U3GD4A07,U3GD4A08 +und_kik.img +---> U4KM3E01,U4KM3E02,U4KM3E03,U4KM3E04,U4KM3E05,U4KM3E06,U4KM3E08 +---> U4KM3E09,U2KM3B01,U2KM3B02,U2KM3B03,U2KM3B04,U2KM3B05,U2KM3B06 +---> U2KM3B07,U2KM3B08,U4BG3A02,U4BG3A03,U4BG3A04,U4BG3A05,U4BG3A06 +---> U4BG3A07,U3DC3A01,U3DC3A02,U3DC3A03,U3DC3A04,U3DC3A05,U3DC3A06 +---> U3DC3A07,U3DC3A08,U2KB3A01,U2KB3A02,U2KB3A03,U2KB3A04,U2KB3A05 +---> U2KB3A06,U2KB3A07,U4KB3A02,U4KB3A03,U4KB3A04,U4KB3A05,U4KB3A07 +---> U4KB3A08,U2NM3A03,U2NM3A04,U2NM3A05,U2NM3A06,U2NM3A07,U2NM3A08 +---> U4NM3A02,U4NM3A03,U4NM3A04,U4NM3A05,U4NM3A06,U4NM3A07 +und_msc.img +---> U4BF3A02,U4BF3A03,U4BF3Z01,U4BF3Z02,U4BF3Z03,U4BF3Z05,U4BF3Z07 +---> U4BF3Z09,U4BF3Z10,U4GF3A01,U4GF3A02,U4GF3A03,U4GF3A04,U4GF3A05 +---> U4GF3A06,U4GF3A07,U4GF3A08,U2CT2C05,U2CT2C06,U2CT2C07,U2CT2C08 +---> U2CT2C09,U2CT2C10,U4SB4A01,U4SB4A02,U4SB4A03,U4SB4A04,U4SB4A05 +---> U4SB4A06,U4SB4A07,U4SB4A08,U4PM3C01,U4PM3C02,U4PM3C03,U4PM3C04 +---> U4PM3C05,U4PM3C06,U4PM3C07,U4TI4C01,U4TI4C03,U4TI4C05,U4TI4C07 +---> U4FG3A01,U4FG3A02,U4FG3A03,U3CR3A01,U3CR3A02,U3CR3A03,U3CR3A04 +---> U3CR3A05,U3CR3A06,U3CR3A07,U3CR3A08,U3CR3A09,U3CR3A10,U3CR3A11 +---> U3CR3A12 +und_pnc.img +---> U4GH3Z01,U4GH3Z02,U4GH3Z03,U4GH3Z04,U4GH3Z05,U4GH3Z06,U4GH3Z07 +---> U4UP3C01,U4UP3C02,U4UP3C03,U4UP3C04,U4UP3C05,U2PL3A02,U2PL3A03 +---> U2PL3A04,U2PL3A05,U2PL3A06,U2PL3A07,U2PL3A08,U4PL3A02,U4PL3A03 +---> U4PL3A04,U4PL3A05,U4PL3A06,U4PL3A07,U4PL3A08,U4PS3A01,U4PS3A02 +---> U4PS3A03,U4PS3A05,U4PS3A06,U4PS3A07,U4PS3A08,U4BC3A01,U4BC3A02 +---> U4BC3A03,U4BC3A04,U4BC3A05,U4BC3A06,U4BC3A07,U4BC3A08,U2BC3A01 +---> U2BC3A02,U2BC3A03,U2BC3A04,U2BC3A05,U2BC3A06,U2BC3A07,U2BC3A08 +---> U4JP4C01,U4JP4C02,U4JP4C03 +und_wlk.img +---> U4TW4A01,U4TW4A02,U4TW4A03,U4TW4A04,U4TW4A05,U2TW2A01,U2TW2A02 +---> U2TW2A03,U2TW2A04,U2TW2A05,U2ST2C01,U2ST2C03,U2ST2C05,U2ST2C07 +---> U2ST2C09,U4ST4D01,U4ST4D03,U4ST4D05,U4ST4D07,U4ST4D09,U4WL4A01 +---> U4WL4A03,U4WL4A05,U4WL4A07,U4WL4A09,U4WL4A11,U4WL4A13,U4WL4A15 +---> U4WL4A17,U4WL4A19,U4WL4A21,U4WL4A23,U4WL4A25,U4WL2C01,U4WL2C03 +---> U4WL2C05,U4WL2C07,U4WL2C09,U4WL2C11,U4WL2C13,U4WL2C15,U4WL2C17 +---> U4WL2C19,U2WL1A01,U2WL1A03,U2WL1A05,U2WL1A07,U2WL1A09,U2WL1A11 +---> U2WL1A13,U2WL1A15,U2WL1A17,U2WL8A01,U2WL8A03,U2WL8A05,U2WL8A07 +---> U2WL8A09,U2WL8A11,U2WL8A13,U2WL8A15,U2WL8A17,U2WL8A19,U4WL5A01 +---> U4WL5A03,U4WL5A05,U4WL5A07,U4WL5A09,U4WL5A11,U4WL5A13,U4WL5A15 +---> U4WL5A17,U4WL5A19,U2WL2A01,U2WL2A03,U2WL2A05,U2WL2A07,U2WL2A09 +---> U2WL2A11,U2WL2A13,U2WL2A15,U2WL2A17,U2WL2A19,U2WL2A21,U2WL2A23 +---> U1TT5A01,U1TT5A02,U1TT5A03,U1TT5A04,U1TT5A05,U1TR5A01,U1TR5A02 +---> U1TR5A03,U1TR5A04,U1TR5A05,U4YR3B02,U4YR3B03,U4YR3B04,U4YR3B05 +---> U3RN3A01,U3RN3A02,U3RN3A03,U3RN3A04,U3RN3A05,U3RN3A06,U3RN3A07 +---> U3RN3A08,U4BO3Z01,U4BO3Z02,U4BO3Z03,U4BO3Z04,U4BO3Z05,U4BO3Z06 +---> U4BO3Z07,U4BO3Z08,U4BO3Z09,U4BO3Z10 +und_rjr.img +---> U3RS3A01,U3RS3A02,U3RS3A03,U3RS3A04,U3RS3A05,U3RS3A06,U4FT3A03 +---> U4FT3A04,U4FT3A05,U4FT3A06,U4FT3A07,U4FT3A08,U4FT3A09,U4FT3A10 +---> U4FT3A11,U3DD3A01,U3DD3A02,U3DD3A03,U3DD3A04,U3DD3A05,U3DD3A06 +---> U3DD3A07,U3DD3A09,U3DD3A10,U3DD3X09,U3PG3A07,U3PG3A08,U3ZT3A01 +---> U3ZT3A02,U3ZT3A03,U3ZT3A04,U3ZT3A05,U3ZT3A07,U3ZT3A08,U2LN2A01 +---> U2LN2A02,U2LN2A03,U2LN2A04,U2LN2A05,U2LN2A06,U2NS3X01,U2NS3X02 +---> U2NS3X03,U2NS3X04,U2NS3X05,U2NS3X06,U2NS3X07,U2NS3X08,U2NS3X09 +---> U2NS3X10,U3SU3A01,U3SU3A02,U3SU3A03,U3SU3A04,U3SU3A05,U3SU3A06 +---> U3SU3A07,U3SU3A08,U3SU4A01,U3SU4A02,U3SU4A03,U3SU4A04,U3SU4A05 +---> U3SU4A06,U3SU4A07,U3SU4A08,U3SU2B01,U3SU2B02,U3SU2B03,U3SU2B04 +---> U3SU2B05,U3SU2B06,U3SU2B07,U3SU2B08,U3TN3B02,U3TN3B03,U3TN3B04 +---> U3TN3B05,U3TN3B06,U3DD3B01,U3DD3B02,U3DD3B03,U3DD3B04,U3DD3B06 +---> U3DD3B07,U3FH3A01,U3FH3A02,U3FH3A03,U3FH3A04,U3FH3A05,U3FD3X01 +---> U3FD3X02,U3FD3X03,U3FD3X04,U3FD3X05,U3FD3X06,U3TBSM01,U3TBSM02 +---> U3TBSM03,U3TBSM04,U3TBSM05,U3TBSM06,U3TBSM07,U3TBSM08,U3TBSM09 +---> U3TBSM10,U3TBSM11 +und_mjt.img +---> U3ZS3B01,U3ZS3B02,U3ZS3B03,U3AB3A01,U3AB3A03,U3AB3A04,U3MS3B02 +---> U3MS3B03,U3MS3B04,U3MS3B05,U3MS3B06,U3MS3B07,U3MS3B08,U3MS3B09 +---> U3MS3B10,U3MS3B11,U4WA4H01,U4WA4H02,U4WA4H03,U4WA4H04,U4WA4H05 +---> U4WA4H06,U4WA4H07,U4WA4H08,U4WA4H10,U4POGO01,U4POGO03,U4POGO04 +---> U4GH3A01,U4GH3A02,U4GH3A03,U4GH3A04,U4GH3A05,U3BR3Z01,U3BR3Z02 +---> U3BR3Z03,U3BR3Z04,U3MS3Z01,U3MS3Z02,U3MS3Z03,U3MS3Z04,U3MS3Z05 +---> U3MS3Z06,U3CF3Q01,U3CF3Q02,U3CF3Q03,U3CF3Q04,U4LD4A01,U4LD4A02 +---> U4LD4A03,U4LD4A04,U4LD4A05,U4LD4A06,U4LD4A07,U4LD4A08,U4CO4B01 +---> U4CO4B02,U4CO4B03,U4CO4B04,U4CO4B05,U4CO4B06,U4CO4B07,U4CO4B08 +---> U4GH3C01,U4GH3C02,U4GH3C03,U4GH3C04,U4GH3C05,U4GH3C06,U4GH3C07 +---> U4GH3C08,U4GH3C09,U4GH3C10,U4GH3C11,U3DU3B02,U3DU3B05,U3DU3B06 +---> U3DU3B08,U3DU3B10,U3PP3X01,U3PP3X02,U3PP3X03,U3PP3X04,U3PP3X05 +---> U3PP3X06,U3GP3X01,U3GP3X02,U3GP3X03,U3GP3X04,U3GP3X05,U3GP3X06 +---> U4BZ4A01,U3PN5A01,U3PN5A02,U3PN5A03,U3PN5A04,U3PN5A05,U3PN5A06 +---> U3PN5A07,U3PN5A08,U3PN5A09,U3PN5A11,U3PN5A12,U5RV5A01,U5RV5A02 +---> U5RV5A03,U5RV5A04,U5RV5A05,U5RV5A06 +und_jms.img +---> U2MP2A01,U2MP2A02,U2MP2A03,U2MP2A04,U2MP2A05,U2MP2A06,U2MP2A07 +---> U2MP2A08,U4MP4A01,U4MP4A02,U4MP4A03,U4MP4A05,U4MP4A06,U4MP4A07 +---> U4MP4A08,U2JP2C01,U2JP2C02,U2JP2C03,U2JP2C04,U2JP2C05,U2JP2C06 +---> U2JP2C07,U2JP2C08,U2JP2C09,U4JP4D01,U4JP4D02,U4JP4D03,U4JP4D04 +---> U4JP4D05,U4JP4D06,U4JP4D07,U4JP4D08,U4JP4D09,U4JK4A03,U4JK4A04 +---> U4JK4A05,U4JK4A06,U4JK4A07,U4JK4A08,U4JK4A10,U3RR3Z02,U3RR3Z03 +---> U3RR3Z04,U3RR3Z05,U3RR3Z06,U3RR3Z07,U3RR3Z09 +und_jake.img +---> U4WA4B01,U4WA4B02,U4WA4B03,U4WA4B04,U4WA4B05,U4WA4B06,U4WA4B07 +---> U4WA4B08,U4WA4B09,U3CR3B01,U3CR3B02,U3CR3B03,U3CR3B04,U3CR3B05 +---> U3CR3B06,U3CR3B07,U3CR3B08,U3CR3B09,U3CR3B10,U4JD4A02,U4JD4A03 +---> U4JD4A04,U4JD4A06,U4JD4A08 diff --git a/IMG/TAKER.LOD b/IMG/TAKER.LOD new file mode 100644 index 0000000..37f8065 --- /dev/null +++ b/IMG/TAKER.LOD @@ -0,0 +1,116 @@ +ASM> takerimg.tbl +***> 2f8d520,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* UNDERTAKER ************************************************************* +ZON> +MON> +BON> +POF> +; +und_hit.img +---> U3CP3B01,U3CP3B02,U3CP3B03,U3CP3B04,U3CP3B05,U3CP3B06,U3CP3B07 +---> U2AH3A03,U2AH3A04,U2AH3A05,U2AH3A06,U2AH3A07,U4AH3A02,U4AH3A03 +---> U4AH3A04,U4AH3A05,U4AH3A06,U4AM4C01,U4AM4C02,U4AM4C03,U4AM4C04 +---> U4AM4C05,U4AM4C06,U2AM2A02,U2AM2A03,U2AM2A04,U2AM2A05,U2AM2A06 +---> U3AE4A01,U3AE4A02,U3AE4A03,U3AE4A04,U3AE4A05,U3AE4A06,U3AE4A07 +---> U4BK3C01,U4BK3C02,U4BK3C03,U4BK3C05,U4BK3C06,U4LB4A01,U4LB4A02 +---> U4LB4A03,U4LB4A04,U4LB4A05,U4LB4A06,U3FD3B01,U3FD3B02,U3FD3B03 +---> U3FD3B04,U3FD3B05,U3FD3B06,U3FD3B07,U3GD2A01,U3GD2A02,U3GD2A03 +---> U3GD2A04,U3GD2A05,U3GD2A06,U3GD2A07,U3GD2A08,U3GD4A05,U3GD4A06 +---> U3GD4A07,U3GD4A08 +und_kik.img +---> U4KM3E01,U4KM3E02,U4KM3E03,U4KM3E04,U4KM3E05,U4KM3E06,U4KM3E08 +---> U4KM3E09,U2KM3B01,U2KM3B02,U2KM3B03,U2KM3B04,U2KM3B05,U2KM3B06 +---> U2KM3B07,U2KM3B08,U4BG3A02,U4BG3A03,U4BG3A04,U4BG3A05,U4BG3A06 +---> U4BG3A07,U3DC3A01,U3DC3A02,U3DC3A03,U3DC3A04,U3DC3A05,U3DC3A06 +---> U3DC3A07,U3DC3A08,U2KB3A01,U2KB3A02,U2KB3A03,U2KB3A04,U2KB3A05 +---> U2KB3A06,U2KB3A07,U4KB3A02,U4KB3A03,U4KB3A04,U4KB3A05,U4KB3A07 +---> U4KB3A08,U2NM3A03,U2NM3A04,U2NM3A05,U2NM3A06,U2NM3A07,U2NM3A08 +---> U4NM3A02,U4NM3A03,U4NM3A04,U4NM3A05,U4NM3A06,U4NM3A07 +und_msc.img +---> U4BF3A02,U4BF3A03,U4BF3Z01,U4BF3Z02,U4BF3Z03,U4BF3Z05,U4BF3Z07 +---> U4BF3Z09,U4BF3Z10,U4GF3A01,U4GF3A02,U4GF3A03,U4GF3A04,U4GF3A05 +---> U4GF3A06,U4GF3A07,U4GF3A08,U2CT2C05,U2CT2C06,U2CT2C07,U2CT2C08 +---> U2CT2C09,U2CT2C10,U4SB4A01,U4SB4A02,U4SB4A03,U4SB4A04,U4SB4A05 +---> U4SB4A06,U4SB4A07,U4SB4A08,U4PM3C01,U4PM3C02,U4PM3C03,U4PM3C04 +---> U4PM3C05,U4PM3C06,U4PM3C07,U4TI4C01,U4TI4C03,U4TI4C05,U4TI4C07 +---> U4FG3A01,U4FG3A02,U4FG3A03,U3CR3A01,U3CR3A02,U3CR3A03,U3CR3A04 +---> U3CR3A05,U3CR3A06,U3CR3A07,U3CR3A08,U3CR3A09,U3CR3A10,U3CR3A11 +---> U3CR3A12 +und_pnc.img +---> U4GH3Z01,U4GH3Z02,U4GH3Z03,U4GH3Z04,U4GH3Z05,U4GH3Z06,U4GH3Z07 +---> U4UP3C01,U4UP3C02,U4UP3C03,U4UP3C04,U4UP3C05,U2PL3A02,U2PL3A03 +---> U2PL3A04,U2PL3A05,U2PL3A06,U2PL3A07,U2PL3A08,U4PL3A02,U4PL3A03 +---> U4PL3A04,U4PL3A05,U4PL3A06,U4PL3A07,U4PL3A08,U4PS3A01,U4PS3A02 +---> U4PS3A03,U4PS3A05,U4PS3A06,U4PS3A07,U4PS3A08,U4BC3A01,U4BC3A02 +---> U4BC3A03,U4BC3A04,U4BC3A05,U4BC3A06,U4BC3A07,U4BC3A08,U2BC3A01 +---> U2BC3A02,U2BC3A03,U2BC3A04,U2BC3A05,U2BC3A06,U2BC3A07,U2BC3A08 +---> U4JP4C01,U4JP4C02,U4JP4C03 +und_wlk.img +---> U4TW4A01,U4TW4A02,U4TW4A03,U4TW4A04,U4TW4A05,U2TW2A01,U2TW2A02 +---> U2TW2A03,U2TW2A04,U2TW2A05,U2ST2C01,U2ST2C03,U2ST2C05,U2ST2C07 +---> U2ST2C09,U4ST4D01,U4ST4D03,U4ST4D05,U4ST4D07,U4ST4D09,U4WL4A01 +---> U4WL4A03,U4WL4A05,U4WL4A07,U4WL4A09,U4WL4A11,U4WL4A13,U4WL4A15 +---> U4WL4A17,U4WL4A19,U4WL4A21,U4WL4A23,U4WL4A25,U4WL2C01,U4WL2C03 +---> U4WL2C05,U4WL2C07,U4WL2C09,U4WL2C11,U4WL2C13,U4WL2C15,U4WL2C17 +---> U4WL2C19,U2WL1A01,U2WL1A03,U2WL1A05,U2WL1A07,U2WL1A09,U2WL1A11 +---> U2WL1A13,U2WL1A15,U2WL1A17,U2WL8A01,U2WL8A03,U2WL8A05,U2WL8A07 +---> U2WL8A09,U2WL8A11,U2WL8A13,U2WL8A15,U2WL8A17,U2WL8A19,U4WL5A01 +---> U4WL5A03,U4WL5A05,U4WL5A07,U4WL5A09,U4WL5A11,U4WL5A13,U4WL5A15 +---> U4WL5A17,U4WL5A19,U2WL2A01,U2WL2A03,U2WL2A05,U2WL2A07,U2WL2A09 +---> U2WL2A11,U2WL2A13,U2WL2A15,U2WL2A17,U2WL2A19,U2WL2A21,U2WL2A23 +---> U1TT5A01,U1TT5A02,U1TT5A03,U1TT5A04,U1TT5A05,U1TR5A01,U1TR5A02 +---> U1TR5A03,U1TR5A04,U1TR5A05,U4YR3B02,U4YR3B03,U4YR3B04,U4YR3B05 +---> U3RN3A01,U3RN3A02,U3RN3A03,U3RN3A04,U3RN3A05,U3RN3A06,U3RN3A07 +---> U3RN3A08,U4BO3Z01,U4BO3Z02,U4BO3Z03,U4BO3Z04,U4BO3Z05,U4BO3Z06 +---> U4BO3Z07,U4BO3Z08,U4BO3Z09,U4BO3Z10 +und_rjr.img +---> U3RS3A01,U3RS3A02,U3RS3A03,U3RS3A04,U3RS3A05,U3RS3A06,U4FT3A03 +---> U4FT3A04,U4FT3A05,U4FT3A06,U4FT3A07,U4FT3A08,U4FT3A09,U4FT3A10 +---> U4FT3A11,U3DD3A01,U3DD3A02,U3DD3A03,U3DD3A04,U3DD3A05,U3DD3A06 +---> U3DD3A07,U3DD3A09,U3DD3A10,U3DD3X09,U3PG3A07,U3PG3A08,U3ZT3A01 +---> U3ZT3A02,U3ZT3A03,U3ZT3A04,U3ZT3A05,U3ZT3A07,U3ZT3A08,U2LN2A01 +---> U2LN2A02,U2LN2A03,U2LN2A04,U2LN2A05,U2LN2A06,U2NS3X01,U2NS3X02 +---> U2NS3X03,U2NS3X04,U2NS3X05,U2NS3X06,U2NS3X07,U2NS3X08,U2NS3X09 +---> U2NS3X10,U3SU3A01,U3SU3A02,U3SU3A03,U3SU3A04,U3SU3A05,U3SU3A06 +---> U3SU3A07,U3SU3A08,U3SU4A01,U3SU4A02,U3SU4A03,U3SU4A04,U3SU4A05 +---> U3SU4A06,U3SU4A07,U3SU4A08,U3SU2B01,U3SU2B02,U3SU2B03,U3SU2B04 +---> U3SU2B05,U3SU2B06,U3SU2B07,U3SU2B08,U3TN3B02,U3TN3B03,U3TN3B04 +---> U3TN3B05,U3TN3B06,U3DD3B01,U3DD3B02,U3DD3B03,U3DD3B04,U3DD3B06 +---> U3DD3B07,U3FH3A01,U3FH3A02,U3FH3A03,U3FH3A04,U3FH3A05,U3FD3X01 +---> U3FD3X02,U3FD3X03,U3FD3X04,U3FD3X05,U3FD3X06,U3TBSM01,U3TBSM02 +---> U3TBSM03,U3TBSM04,U3TBSM05,U3TBSM06,U3TBSM07,U3TBSM08,U3TBSM09 +---> U3TBSM10,U3TBSM11 +und_mjt.img +---> U3ZS3B01,U3ZS3B02,U3ZS3B03,U3AB3A01,U3AB3A03,U3AB3A04,U3MS3B02 +---> U3MS3B03,U3MS3B04,U3MS3B05,U3MS3B06,U3MS3B07,U3MS3B08,U3MS3B09 +---> U3MS3B10,U3MS3B11,U4WA4H01,U4WA4H02,U4WA4H03,U4WA4H04,U4WA4H05 +---> U4WA4H06,U4WA4H07,U4WA4H08,U4WA4H10,U4POGO01,U4POGO03,U4POGO04 +---> U4GH3A01,U4GH3A02,U4GH3A03,U4GH3A04,U4GH3A05,U3BR3Z01,U3BR3Z02 +---> U3BR3Z03,U3BR3Z04,U3MS3Z01,U3MS3Z02,U3MS3Z03,U3MS3Z04,U3MS3Z05 +---> U3MS3Z06,U3CF3Q01,U3CF3Q02,U3CF3Q03,U3CF3Q04,U4LD4A01,U4LD4A02 +---> U4LD4A03,U4LD4A04,U4LD4A05,U4LD4A06,U4LD4A07,U4LD4A08,U4CO4B01 +---> U4CO4B02,U4CO4B03,U4CO4B04,U4CO4B05,U4CO4B06,U4CO4B07,U4CO4B08 +---> U4GH3C01,U4GH3C02,U4GH3C03,U4GH3C04,U4GH3C05,U4GH3C06,U4GH3C07 +---> U4GH3C08,U4GH3C09,U4GH3C10,U4GH3C11,U3DU3B02,U3DU3B05,U3DU3B06 +---> U3DU3B08,U3DU3B10,U3PP3X01,U3PP3X02,U3PP3X03,U3PP3X04,U3PP3X05 +---> U3PP3X06,U3GP3X01,U3GP3X02,U3GP3X03,U3GP3X04,U3GP3X05,U3GP3X06 +---> U4BZ4A01,U3PN5A01,U3PN5A02,U3PN5A03,U3PN5A04,U3PN5A05,U3PN5A06 +---> U3PN5A07,U3PN5A08,U3PN5A09,U3PN5A11,U3PN5A12,U5RV5A01,U5RV5A02 +---> U5RV5A03,U5RV5A04,U5RV5A05,U5RV5A06 +und_jms.img +---> U2MP2A01,U2MP2A02,U2MP2A03,U2MP2A04,U2MP2A05,U2MP2A06,U2MP2A07 +---> U2MP2A08,U4MP4A01,U4MP4A02,U4MP4A03,U4MP4A05,U4MP4A06,U4MP4A07 +---> U4MP4A08,U2JP2C01,U2JP2C02,U2JP2C03,U2JP2C04,U2JP2C05,U2JP2C06 +---> U2JP2C07,U2JP2C08,U2JP2C09,U4JP4D01,U4JP4D02,U4JP4D03,U4JP4D04 +---> U4JP4D05,U4JP4D06,U4JP4D07,U4JP4D08,U4JP4D09,U4JK4A03,U4JK4A04 +---> U4JK4A05,U4JK4A06,U4JK4A07,U4JK4A08,U4JK4A10,U3RR3Z02,U3RR3Z03 +---> U3RR3Z04,U3RR3Z05,U3RR3Z06,U3RR3Z07,U3RR3Z09 +und_jake.img +---> U4WA4B01,U4WA4B02,U4WA4B03,U4WA4B04,U4WA4B05,U4WA4B06,U4WA4B07 +---> U4WA4B08,U4WA4B09,U3CR3B01,U3CR3B02,U3CR3B03,U3CR3B04,U3CR3B05 +---> U3CR3B06,U3CR3B07,U3CR3B08,U3CR3B09,U3CR3B10,U4JD4A02,U4JD4A03 +---> U4JD4A04,U4JD4A06,U4JD4A08 + \ No newline at end of file diff --git a/IMG/TAUNTS.IMG b/IMG/TAUNTS.IMG new file mode 100644 index 0000000..d8f9a7c Binary files /dev/null and b/IMG/TAUNTS.IMG differ diff --git a/IMG/TEAMNAME.IMG b/IMG/TEAMNAME.IMG new file mode 100644 index 0000000..2e7b621 Binary files /dev/null and b/IMG/TEAMNAME.IMG differ diff --git a/IMG/TEAMSEL.BDB b/IMG/TEAMSEL.BDB new file mode 100755 index 0000000..7bb1df7 --- /dev/null +++ b/IMG/TEAMSEL.BDB @@ -0,0 +1,60 @@ +teamsel 2000 1000 255 1 6 58 +teamsel 449 864 255 523 +4010 457 261 0 0 +4010 460 511 3 0 +200 460 387 6 0 +200 460 266 6 0 +0 467 389 9 0 +0 467 267 9 0 +200 467 274 C 1 +100 470 276 F 0 +A00 470 291 12 2 +A00 470 383 15 1 +7800 470 389 18 1 +100 472 454 1B 5 +7800 476 454 1E 1 +4300 476 389 21 3 +4600 501 290 24 0 +4600 501 292 27 0 +4600 503 375 2A 0 +4000 503 292 2D 1 +200 508 274 30 1 +100 510 276 33 0 +3E00 513 504 36 0 +3E00 539 504 39 0 +0 558 389 9 0 +0 558 267 9 0 +100 559 496 3C 5 +4300 560 389 21 3 +7800 648 389 3F 1 +0 649 267 9 0 +0 649 389 9 0 +100 650 386 42 5 +4000 652 261 0 0 +4600 653 290 45 0 +4000 655 511 3 0 +200 658 274 48 1 +4600 659 375 4B 0 +4000 659 292 2D 1 +100 660 276 4E 0 +7800 664 389 18 1 +A00 664 383 15 1 +300 666 454 1B 5 +4400 669 389 51 3 +7800 670 454 1E 1 +0 740 267 9 0 +0 740 389 9 0 +4400 754 389 51 3 +100 754 496 3C 5 +0 761 267 9 0 +0 761 389 9 0 +200 803 274 54 1 +100 805 276 57 0 +4600 813 292 5A 0 +A00 824 291 5D 4 +7800 842 389 3F 1 +100 844 387 42 5 +100 845 392 42 5 +200 851 511 60 0 +4000 851 266 63 0 +4000 851 387 63 0 diff --git a/IMG/TEAMSEL.BDD b/IMG/TEAMSEL.BDD new file mode 100755 index 0000000..c58ea16 Binary files /dev/null and b/IMG/TEAMSEL.BDD differ diff --git a/IMG/TEMP.IMG b/IMG/TEMP.IMG new file mode 100644 index 0000000..6471450 Binary files /dev/null and b/IMG/TEMP.IMG differ diff --git a/IMG/TEMP.LBM b/IMG/TEMP.LBM new file mode 100755 index 0000000..01cda90 Binary files /dev/null and b/IMG/TEMP.LBM differ diff --git a/IMG/TEMP.LOD b/IMG/TEMP.LOD new file mode 100644 index 0000000..9d90c60 --- /dev/null +++ b/IMG/TEMP.LOD @@ -0,0 +1,21 @@ +C:\VIDEO\WWF\IMG\SWEAT.IMG +---> COUGHA01,COUGHA02,COUGHA03,COUGHA04,COUGHA05,COUGHA06,COUGHA07 +---> COUGHA08,COUGHA09,SPITUP01,SPITUP02,SPITUP03,SPITUP04,SPITUP05 +---> SPITUP06,SPITUP07,SPITUP08,SPITUP09,SPITDN01,SPITDN02,SPITDN03 +---> SPITDN04,SPITDN05,SPITDN06,SPITDN07,SPITDN08,SPITDN09,SPITAN01 +---> SPITAN02,SPITAN03,SPITAN04,SPITAN05,SPITAN06,SPITAN07,SPITAN08 +---> SPITAN09,SPRAYA01,SPRAYA02,SPRAYA03,SPRAYA04,SPRAYA05,SPRAYA06 +---> SPRAYA07,SPRAYA08,SPRAYB01,SPRAYB02,SPRAYB03,SPRAYB04,SPRAYB05 +---> SPRAYB06,SPRAYB07,SPRAYB08,SPRAYC01,SPRAYC02,SPRAYC03,SPRAYC04 +---> SPRAYC05,SPRAYC06,SPRAYC07,SPRAYC08,SPRAYC09,SPRAYC10,WAD_A_01 +---> WAD_A_02,WAD_A_03,WAD_A_04,WAD_A_05,WAD_A_06,WAD_A_07,WAD_A_08 +---> WAD_A_09,WAD_B_01,WAD_B_02,WAD_B_03,WAD_B_04,WAD_B_05,WAD_B_06 +---> WAD_B_07,WAD_B_08,WAD_B_09,WAD_C_01,WAD_C_02,WAD_C_03,WAD_C_04 +---> WAD_C_05,WAD_C_06,WAD_C_07,WAD_C_08,WAD_C_09,WAD_C_11,WAD_C_12 +---> WAD_D_01,WAD_D_02,WAD_D_03,WAD_D_04,WAD_E_01,WAD_E_02,WAD_E_03 +---> WAD_E_04,WAD_E_05,WAD_E_06,WAD_E_07,WAD_E_08,WAD_E_09,WAD_E_10 +---> WAD_E_11,WAD_F_01,WAD_F_02,WAD_F_03,WAD_F_04,WAD_F_05,WAD_F_06 +---> WAD_F_07,WAD_F_08,WAD_F_09,SPLSHA01,SPLSHA02,SPLSHA03,SPLSHA04 +---> SPLSHA05,SPLSHA06,SPLSHB01,SPLSHB02,SPLSHB03,SPLSHB04,SPLSHB05 +---> SPLSHB06 + \ No newline at end of file diff --git a/IMG/TEST b/IMG/TEST new file mode 100755 index 0000000..1b62a3d --- /dev/null +++ b/IMG/TEST @@ -0,0 +1,804 @@ +*** Read c:\opus6\make.ini *** + +OPUS MAKE Version 6.03 +Copyright OPUS Software. All rights reserved. + +*** Done c:\opus6\make.ini *** +*** Read makefile *** +*** Done makefile *** +*** Tracing OPUS MAKE *** +art + make explicit source + mapper.out older than art by 00:22:06 + no explicit source + no inference check + update mapper.out +mapper > mapper.out + mapper.out is up to date + mapper.out NEWER than art by 00:02:00 + bam older than art by 00:24:42 + make explicit source + bam.irw NEWER than bam by 00:09:30 + make explicit source + bam.lod older than bam.irw by 00:00:44 + make explicit source + bam.ld1 older than bam.lod by 00:00:02 + no explicit source + find inferred source + rules for bam.ld1: + no inferred source found + update bam.ld1 + bam.ld1 has no shell lines + bam.ld1 is up to date + bam.ld1 NEWER than bam.lod by 00:17:56 + bam.ld2 same as bam.lod + no explicit source + find inferred source + rules for bam.ld2: + no inferred source found + update bam.ld2 + bam.ld2 has no shell lines + bam.ld2 is up to date + bam.ld2 NEWER than bam.lod by 00:17:56 + bam_hit.img older than bam.lod by 27 days + no explicit source + find inferred source + rules for bam_hit.img: + no inferred source found + update bam_hit.img + bam_hit.img has no shell lines + bam_hit.img is up to date + bam_hit.img NEWER than bam.lod by 00:17:56 + bam_kik.img older than bam.lod by 68 days + no explicit source + find inferred source + rules for bam_kik.img: + no inferred source found + update bam_kik.img + bam_kik.img has no shell lines + bam_kik.img is up to date + bam_kik.img NEWER than bam.lod by 00:17:56 + bam_msc.img older than bam.lod by 37 days + no explicit source + find inferred source + rules for bam_msc.img: + no inferred source found + update bam_msc.img + bam_msc.img has no shell lines + bam_msc.img is up to date + bam_msc.img NEWER than bam.lod by 00:17:56 + bam_pnc.img older than bam.lod by 68 days + no explicit source + find inferred source + rules for bam_pnc.img: + no inferred source found + update bam_pnc.img + bam_pnc.img has no shell lines + bam_pnc.img is up to date + bam_pnc.img NEWER than bam.lod by 00:17:56 + bam_wlk.img older than bam.lod by 35 days + no explicit source + find inferred source + rules for bam_wlk.img: + no inferred source found + update bam_wlk.img + bam_wlk.img has no shell lines + bam_wlk.img is up to date + bam_wlk.img NEWER than bam.lod by 00:17:56 + done explicit source + find inferred source + already have bam.lod : bam.ld1 + + shell lines from %.lod : %.ld1 + found bam.ld1 + update bam.lod +bam + bam.lod is up to date + bam.lod NEWER than bam.irw by 00:17:12 + done explicit source + find inferred source + already have bam.irw : bam.lod + + shell lines from %.irw : %.lod + found bam.lod + update bam.irw +loadw bam /A /TS /FI /E +touch bam + bam.irw is up to date + bam.irw NEWER than bam by 00:26:42 + done explicit source + find inferred source + rules for bam: + no inferred source found + update bam + bam has no shell lines + bam is up to date + bam NEWER than art by 00:02:00 + bret older than art by 00:24:28 + make explicit source + bret.irw NEWER than bret by 00:09:30 + no explicit source + find inferred source + rules for bret.irw: + %.irw : %.lod + have bret.lod + add bret.irw : bret.lod + + shell lines from %.irw : %.lod + found bret.lod + make inferred source + bret.lod older than bret.irw by 00:00:58 + make explicit source + bret.ld1 older than bret.lod by 00:00:02 + no explicit source + find inferred source + rules for bret.ld1: + no inferred source found + update bret.ld1 + bret.ld1 has no shell lines + bret.ld1 is up to date + bret.ld1 NEWER than bret.lod by 00:17:56 + bret.ld2 same as bret.lod + no explicit source + find inferred source + rules for bret.ld2: + no inferred source found + update bret.ld2 + bret.ld2 has no shell lines + bret.ld2 is up to date + bret.ld2 NEWER than bret.lod by 00:17:56 + hrt_hit.img older than bret.lod by 5 days + no explicit source + find inferred source + rules for hrt_hit.img: + no inferred source found + update hrt_hit.img + hrt_hit.img has no shell lines + hrt_hit.img is up to date + hrt_hit.img NEWER than bret.lod by 00:17:56 + hrt_kik.img older than bret.lod by 5 days + no explicit source + find inferred source + rules for hrt_kik.img: + no inferred source found + update hrt_kik.img + hrt_kik.img has no shell lines + hrt_kik.img is up to date + hrt_kik.img NEWER than bret.lod by 00:17:56 + hrt_msc.img older than bret.lod by 6 days + no explicit source + find inferred source + rules for hrt_msc.img: + no inferred source found + update hrt_msc.img + hrt_msc.img has no shell lines + hrt_msc.img is up to date + hrt_msc.img NEWER than bret.lod by 00:17:56 + hrt_pnc.img older than bret.lod by 2 days + no explicit source + find inferred source + rules for hrt_pnc.img: + no inferred source found + update hrt_pnc.img + hrt_pnc.img has no shell lines + hrt_pnc.img is up to date + hrt_pnc.img NEWER than bret.lod by 00:17:56 + hrt_wlk.img older than bret.lod by 6 days + no explicit source + find inferred source + rules for hrt_wlk.img: + no inferred source found + update hrt_wlk.img + hrt_wlk.img has no shell lines + hrt_wlk.img is up to date + hrt_wlk.img NEWER than bret.lod by 00:17:56 + done explicit source + find inferred source + already have bret.lod : bret.ld1 + + shell lines from %.lod : %.ld1 + found bret.ld1 + update bret.lod +bret + bret.lod is up to date + bret.lod NEWER than bret.irw by 00:16:58 + done inferred source + update bret.irw +loadw bret /A /TS /FI /E +touch bret + bret.irw is up to date + bret.irw NEWER than bret by 00:26:28 + done explicit source + find inferred source + rules for bret: + no inferred source found + update bret + bret has no shell lines + bret is up to date + bret NEWER than art by 00:02:00 + doink older than art by 00:24:00 + make explicit source + doink.irw NEWER than doink by 00:09:28 + make explicit source + doink.lod older than doink.irw by 00:01:24 + make explicit source + doink.ld1 older than doink.lod by 00:00:02 + no explicit source + find inferred source + rules for doink.ld1: + no inferred source found + update doink.ld1 + doink.ld1 has no shell lines + doink.ld1 is up to date + doink.ld1 NEWER than doink.lod by 00:17:56 + doink.ld2 same as doink.lod + no explicit source + find inferred source + rules for doink.ld2: + no inferred source found + update doink.ld2 + doink.ld2 has no shell lines + doink.ld2 is up to date + doink.ld2 NEWER than doink.lod by 00:17:56 + dnk_hit.img older than doink.lod by 37 days + no explicit source + find inferred source + rules for dnk_hit.img: + no inferred source found + update dnk_hit.img + dnk_hit.img has no shell lines + dnk_hit.img is up to date + dnk_hit.img NEWER than doink.lod by 00:17:56 + dnk_kik.img older than doink.lod by 61 days + no explicit source + find inferred source + rules for dnk_kik.img: + no inferred source found + update dnk_kik.img + dnk_kik.img has no shell lines + dnk_kik.img is up to date + dnk_kik.img NEWER than doink.lod by 00:17:56 + dnk_msc.img older than doink.lod by 61 days + no explicit source + find inferred source + rules for dnk_msc.img: + no inferred source found + update dnk_msc.img + dnk_msc.img has no shell lines + dnk_msc.img is up to date + dnk_msc.img NEWER than doink.lod by 00:17:56 + dnk_pnc.img older than doink.lod by 50 days + no explicit source + find inferred source + rules for dnk_pnc.img: + no inferred source found + update dnk_pnc.img + dnk_pnc.img has no shell lines + dnk_pnc.img is up to date + dnk_pnc.img NEWER than doink.lod by 00:17:56 + dnk_wlk.img older than doink.lod by 41 days + no explicit source + find inferred source + rules for dnk_wlk.img: + no inferred source found + update dnk_wlk.img + dnk_wlk.img has no shell lines + dnk_wlk.img is up to date + dnk_wlk.img NEWER than doink.lod by 00:17:56 + done explicit source + find inferred source + already have doink.lod : doink.ld1 + + shell lines from %.lod : %.ld1 + found doink.ld1 + update doink.lod +doink + doink.lod is up to date + doink.lod NEWER than doink.irw by 00:16:32 + done explicit source + find inferred source + already have doink.irw : doink.lod + + shell lines from %.irw : %.lod + found doink.lod + update doink.irw +loadw doink /A /TS /FI /E +touch doink + doink.irw is up to date + doink.irw NEWER than doink by 00:26:00 + done explicit source + find inferred source + rules for doink: + no inferred source found + update doink + doink has no shell lines + doink is up to date + doink NEWER than art by 00:02:00 + lex older than art by 00:23:46 + make explicit source + lex.irw NEWER than lex by 00:09:28 + no explicit source + find inferred source + rules for lex.irw: + %.irw : %.lod + have lex.lod + add lex.irw : lex.lod + + shell lines from %.irw : %.lod + found lex.lod + make inferred source + lex.lod older than lex.irw by 00:01:36 + make explicit source + lex.ld1 older than lex.lod by 00:00:04 + no explicit source + find inferred source + rules for lex.ld1: + no inferred source found + update lex.ld1 + lex.ld1 has no shell lines + lex.ld1 is up to date + lex.ld1 NEWER than lex.lod by 00:17:54 + lex.ld2 same as lex.lod + no explicit source + find inferred source + rules for lex.ld2: + no inferred source found + update lex.ld2 + lex.ld2 has no shell lines + lex.ld2 is up to date + lex.ld2 NEWER than lex.lod by 00:17:54 + lex_hit.img older than lex.lod by 8 days + no explicit source + find inferred source + rules for lex_hit.img: + no inferred source found + update lex_hit.img + lex_hit.img has no shell lines + lex_hit.img is up to date + lex_hit.img NEWER than lex.lod by 00:17:54 + lex_kik.img older than lex.lod by 7 days + no explicit source + find inferred source + rules for lex_kik.img: + no inferred source found + update lex_kik.img + lex_kik.img has no shell lines + lex_kik.img is up to date + lex_kik.img NEWER than lex.lod by 00:17:54 + lex_msc.img older than lex.lod by 6 days + no explicit source + find inferred source + rules for lex_msc.img: + no inferred source found + update lex_msc.img + lex_msc.img has no shell lines + lex_msc.img is up to date + lex_msc.img NEWER than lex.lod by 00:17:54 + lex_pnc.img older than lex.lod by 8 days + no explicit source + find inferred source + rules for lex_pnc.img: + no inferred source found + update lex_pnc.img + lex_pnc.img has no shell lines + lex_pnc.img is up to date + lex_pnc.img NEWER than lex.lod by 00:17:54 + lex_wlk.img older than lex.lod by 6 days + no explicit source + find inferred source + rules for lex_wlk.img: + no inferred source found + update lex_wlk.img + lex_wlk.img has no shell lines + lex_wlk.img is up to date + lex_wlk.img NEWER than lex.lod by 00:17:54 + done explicit source + find inferred source + already have lex.lod : lex.ld1 + + shell lines from %.lod : %.ld1 + found lex.ld1 + update lex.lod +lex + lex.lod is up to date + lex.lod NEWER than lex.irw by 00:16:18 + done inferred source + update lex.irw +loadw lex /A /TS /FI /E +touch lex + lex.irw is up to date + lex.irw NEWER than lex by 00:25:46 + done explicit source + find inferred source + rules for lex: + no inferred source found + update lex + lex has no shell lines + lex is up to date + lex NEWER than art by 00:02:00 + razor older than art by 00:23:24 + make explicit source + razor.irw NEWER than razor by 00:09:28 + make explicit source + razor.lod older than razor.irw by 00:01:58 + make explicit source + razor.ld1 older than razor.lod by 00:00:04 + no explicit source + find inferred source + rules for razor.ld1: + no inferred source found + update razor.ld1 + razor.ld1 has no shell lines + razor.ld1 is up to date + razor.ld1 NEWER than razor.lod by 00:17:54 + razor.ld2 same as razor.lod + no explicit source + find inferred source + rules for razor.ld2: + no inferred source found + update razor.ld2 + razor.ld2 has no shell lines + razor.ld2 is up to date + razor.ld2 NEWER than razor.lod by 00:17:54 + rzr_hit.img older than razor.lod by 04:28:48 + no explicit source + find inferred source + rules for rzr_hit.img: + no inferred source found + update rzr_hit.img + rzr_hit.img has no shell lines + rzr_hit.img is up to date + rzr_hit.img NEWER than razor.lod by 00:17:54 + rzr_kik.img older than razor.lod by 04:28:30 + no explicit source + find inferred source + rules for rzr_kik.img: + no inferred source found + update rzr_kik.img + rzr_kik.img has no shell lines + rzr_kik.img is up to date + rzr_kik.img NEWER than razor.lod by 00:17:54 + rzr_msc.img older than razor.lod by 7 days + no explicit source + find inferred source + rules for rzr_msc.img: + no inferred source found + update rzr_msc.img + rzr_msc.img has no shell lines + rzr_msc.img is up to date + rzr_msc.img NEWER than razor.lod by 00:17:54 + rzr_pnc.img older than razor.lod by 04:16:08 + no explicit source + find inferred source + rules for rzr_pnc.img: + no inferred source found + update rzr_pnc.img + rzr_pnc.img has no shell lines + rzr_pnc.img is up to date + rzr_pnc.img NEWER than razor.lod by 00:17:54 + rzr_wlk.img older than razor.lod by 40 days + no explicit source + find inferred source + rules for rzr_wlk.img: + no inferred source found + update rzr_wlk.img + rzr_wlk.img has no shell lines + rzr_wlk.img is up to date + rzr_wlk.img NEWER than razor.lod by 00:17:54 + done explicit source + find inferred source + already have razor.lod : razor.ld1 + + shell lines from %.lod : %.ld1 + found razor.ld1 + update razor.lod +razor + razor.lod is up to date + razor.lod NEWER than razor.irw by 00:15:56 + done explicit source + find inferred source + already have razor.irw : razor.lod + + shell lines from %.irw : %.lod + found razor.lod + update razor.irw +loadw razor /A /TS /FI /E +touch razor + razor.irw is up to date + razor.irw NEWER than razor by 00:25:24 + done explicit source + find inferred source + rules for razor: + no inferred source found + update razor + razor has no shell lines + razor is up to date + razor NEWER than art by 00:02:00 + shawn older than art by 00:23:04 + make explicit source + shawn.irw NEWER than shawn by 00:09:26 + make explicit source + shawn.lod older than shawn.irw by 00:02:14 + make explicit source + shawn.ld1 older than shawn.lod by 00:00:06 + no explicit source + find inferred source + rules for shawn.ld1: + no inferred source found + update shawn.ld1 + shawn.ld1 has no shell lines + shawn.ld1 is up to date + shawn.ld1 NEWER than shawn.lod by 00:17:52 + shawn.ld2 older than shawn.lod by 00:00:02 + no explicit source + find inferred source + rules for shawn.ld2: + no inferred source found + update shawn.ld2 + shawn.ld2 has no shell lines + shawn.ld2 is up to date + shawn.ld2 NEWER than shawn.lod by 00:17:52 + shn_hit.img older than shawn.lod by 1 day + no explicit source + find inferred source + rules for shn_hit.img: + no inferred source found + update shn_hit.img + shn_hit.img has no shell lines + shn_hit.img is up to date + shn_hit.img NEWER than shawn.lod by 00:17:52 + shn_kik.img older than shawn.lod by 15 days + no explicit source + find inferred source + rules for shn_kik.img: + no inferred source found + update shn_kik.img + shn_kik.img has no shell lines + shn_kik.img is up to date + shn_kik.img NEWER than shawn.lod by 00:17:52 + shn_msc.img older than shawn.lod by 18 days + no explicit source + find inferred source + rules for shn_msc.img: + no inferred source found + update shn_msc.img + shn_msc.img has no shell lines + shn_msc.img is up to date + shn_msc.img NEWER than shawn.lod by 00:17:52 + shn_pnc.img older than shawn.lod by 18 days + no explicit source + find inferred source + rules for shn_pnc.img: + no inferred source found + update shn_pnc.img + shn_pnc.img has no shell lines + shn_pnc.img is up to date + shn_pnc.img NEWER than shawn.lod by 00:17:52 + shn_wlk.img older than shawn.lod by 15 days + no explicit source + find inferred source + rules for shn_wlk.img: + no inferred source found + update shn_wlk.img + shn_wlk.img has no shell lines + shn_wlk.img is up to date + shn_wlk.img NEWER than shawn.lod by 00:17:52 + done explicit source + find inferred source + already have shawn.lod : shawn.ld1 + + shell lines from %.lod : %.ld1 + found shawn.ld1 + update shawn.lod +shawn + shawn.lod is up to date + shawn.lod NEWER than shawn.irw by 00:15:38 + done explicit source + find inferred source + already have shawn.irw : shawn.lod + + shell lines from %.irw : %.lod + found shawn.lod + update shawn.irw +loadw shawn /A /TS /FI /E +touch shawn + shawn.irw is up to date + shawn.irw NEWER than shawn by 00:25:04 + done explicit source + find inferred source + rules for shawn: + no inferred source found + update shawn + shawn has no shell lines + shawn is up to date + shawn NEWER than art by 00:02:00 + taker older than art by 00:22:40 + make explicit source + taker.irw NEWER than taker by 00:09:26 + make explicit source + taker.lod older than taker.irw by 00:02:38 + make explicit source + taker.ld1 older than taker.lod by 00:00:06 + no explicit source + find inferred source + rules for taker.ld1: + no inferred source found + update taker.ld1 + taker.ld1 has no shell lines + taker.ld1 is up to date + taker.ld1 NEWER than taker.lod by 00:17:52 + taker.ld2 same as taker.lod + no explicit source + find inferred source + rules for taker.ld2: + no inferred source found + update taker.ld2 + taker.ld2 has no shell lines + taker.ld2 is up to date + taker.ld2 NEWER than taker.lod by 00:17:52 + und_hit.img older than taker.lod by 83 days + no explicit source + find inferred source + rules for und_hit.img: + no inferred source found + update und_hit.img + und_hit.img has no shell lines + und_hit.img is up to date + und_hit.img NEWER than taker.lod by 00:17:52 + und_kik.img older than taker.lod by 75 days + no explicit source + find inferred source + rules for und_kik.img: + no inferred source found + update und_kik.img + und_kik.img has no shell lines + und_kik.img is up to date + und_kik.img NEWER than taker.lod by 00:17:52 + und_msc.img older than taker.lod by 41 days + no explicit source + find inferred source + rules for und_msc.img: + no inferred source found + update und_msc.img + und_msc.img has no shell lines + und_msc.img is up to date + und_msc.img NEWER than taker.lod by 00:17:52 + und_pnc.img older than taker.lod by 78 days + no explicit source + find inferred source + rules for und_pnc.img: + no inferred source found + update und_pnc.img + und_pnc.img has no shell lines + und_pnc.img is up to date + und_pnc.img NEWER than taker.lod by 00:17:52 + und_wlk.img older than taker.lod by 40 days + no explicit source + find inferred source + rules for und_wlk.img: + no inferred source found + update und_wlk.img + und_wlk.img has no shell lines + und_wlk.img is up to date + und_wlk.img NEWER than taker.lod by 00:17:52 + done explicit source + find inferred source + already have taker.lod : taker.ld1 + + shell lines from %.lod : %.ld1 + found taker.ld1 + update taker.lod +taker + taker.lod is up to date + taker.lod NEWER than taker.irw by 00:15:14 + done explicit source + find inferred source + already have taker.irw : taker.lod + + shell lines from %.irw : %.lod + found taker.lod + update taker.irw +loadw taker /A /TS /FI /E +touch taker + taker.irw is up to date + taker.irw NEWER than taker by 00:24:40 + done explicit source + find inferred source + rules for taker: + no inferred source found + update taker + taker has no shell lines + taker is up to date + taker NEWER than art by 00:02:00 + yoko older than art by 00:06:46 + make explicit source + yoko.irw same as yoko + no explicit source + find inferred source + rules for yoko.irw: + %.irw : %.lod + have yoko.lod + add yoko.irw : yoko.lod + + shell lines from %.irw : %.lod + found yoko.lod + make inferred source + yoko.lod older than yoko.irw by 00:00:32 + make explicit source + yoko.ld1 older than yoko.lod by 00:08:40 + no explicit source + find inferred source + rules for yoko.ld1: + no inferred source found + update yoko.ld1 + yoko.ld1 has no shell lines + yoko.ld1 is up to date + yoko.ld1 NEWER than yoko.lod by 00:09:18 + yoko.ld2 same as yoko.lod + no explicit source + find inferred source + rules for yoko.ld2: + no inferred source found + update yoko.ld2 + yoko.ld2 has no shell lines + yoko.ld2 is up to date + yoko.ld2 NEWER than yoko.lod by 00:09:18 + yok_hit.img older than yoko.lod by 04:10:06 + no explicit source + find inferred source + rules for yok_hit.img: + no inferred source found + update yok_hit.img + yok_hit.img has no shell lines + yok_hit.img is up to date + yok_hit.img NEWER than yoko.lod by 00:09:18 + yok_kik.img older than yoko.lod by 110 days + no explicit source + find inferred source + rules for yok_kik.img: + no inferred source found + update yok_kik.img + yok_kik.img has no shell lines + yok_kik.img is up to date + yok_kik.img NEWER than yoko.lod by 00:09:18 + yok_msc.img older than yoko.lod by 37 days + no explicit source + find inferred source + rules for yok_msc.img: + no inferred source found + update yok_msc.img + yok_msc.img has no shell lines + yok_msc.img is up to date + yok_msc.img NEWER than yoko.lod by 00:09:18 + yok_pnc.img older than yoko.lod by 12 days + no explicit source + find inferred source + rules for yok_pnc.img: + no inferred source found + update yok_pnc.img + yok_pnc.img has no shell lines + yok_pnc.img is up to date + yok_pnc.img NEWER than yoko.lod by 00:09:18 + yok_wlk.img older than yoko.lod by 00:03:42 + no explicit source + find inferred source + rules for yok_wlk.img: + no inferred source found + update yok_wlk.img + yok_wlk.img has no shell lines + yok_wlk.img is up to date + yok_wlk.img NEWER than yoko.lod by 00:09:18 + done explicit source + find inferred source + already have yoko.lod : yoko.ld1 + + shell lines from %.lod : %.ld1 + found yoko.ld1 + update yoko.lod +yoko + yoko.lod is up to date + yoko.lod NEWER than yoko.irw by 00:08:46 + done inferred source + update yoko.irw +loadw yoko /A /TS /FI /E +touch yoko + yoko.irw is up to date + yoko.irw NEWER than yoko by 00:08:46 + done explicit source + find inferred source + rules for yoko: + no inferred source found + update yoko + yoko has no shell lines + yoko is up to date + yoko NEWER than art by 00:02:00 + done explicit source + no inference check + update art +touch art + art is up to date +art diff --git a/IMG/TESTE b/IMG/TESTE new file mode 100755 index 0000000..8dfd2a8 --- /dev/null +++ b/IMG/TESTE @@ -0,0 +1,416 @@ +*** Read c:\opus6\make.ini *** + +OPUS MAKE Version 6.03 +Copyright OPUS Software. All rights reserved. + +*** Done c:\opus6\make.ini *** +*** Read makefile *** +*** Done makefile *** +*** Tracing OPUS MAKE *** +all + make explicit source + bam NEWER (no all) + make explicit source + bam.irw older than bam by 00:17:10 + make explicit source + bam.lod older than bam.irw by 00:00:56 + make explicit source + bam.ld1 NEWER than bam.lod by 00:27:22 + no explicit source + find inferred source + rules for bam.ld1: + no inferred source found + bam.ld1 NEWER than bam.lod by 00:27:22 + bam.ld2 same as bam.lod + no explicit source + find inferred source + rules for bam.ld2: + no inferred source found + bam.ld2 same as bam.lod + bam_hit.img older than bam.lod by 27 days + no explicit source + find inferred source + rules for bam_hit.img: + no inferred source found + bam_hit.img older than bam.lod by 27 days + bam_kik.img older than bam.lod by 68 days + no explicit source + find inferred source + rules for bam_kik.img: + no inferred source found + bam_kik.img older than bam.lod by 68 days + bam_msc.img older than bam.lod by 36 days + no explicit source + find inferred source + rules for bam_msc.img: + no inferred source found + bam_msc.img older than bam.lod by 36 days + bam_pnc.img older than bam.lod by 68 days + no explicit source + find inferred source + rules for bam_pnc.img: + no inferred source found + bam_pnc.img older than bam.lod by 68 days + bam_wlk.img older than bam.lod by 35 days + no explicit source + find inferred source + rules for bam_wlk.img: + no inferred source found + bam_wlk.img older than bam.lod by 35 days + done explicit source + find inferred source + already have bam.lod : bam.ld1 + + shell lines from %.lod : %.ld1 + found bam.ld1 + update bam.lod +bam.bat + bam.lod is up to date + bam.lod NEWER than bam.irw by 00:34:52 + done explicit source + find inferred source + rules for bam.irw: + no inferred source found + update bam.irw + bam.irw has no shell lines + bam.irw is up to date + bam.irw NEWER than bam by 00:17:42 + done explicit source + no inference check + update bam +loadw bam /A /TS /FI /E +touch bam + bam is up to date + bam NEWER (no all) + bret NEWER (no all) + make explicit source + bret.irw older than bret by 00:17:00 + no explicit source + find inferred source + rules for bret.irw: + no inferred source found + bret.irw older than bret by 00:17:00 + done explicit source + no inference check + bret NEWER (no all) + doink NEWER (no all) + make explicit source + doink.irw older than doink by 00:16:40 + make explicit source + doink.lod older than doink.irw by 00:01:36 + make explicit source + doink.ld1 NEWER than doink.lod by 00:27:22 + no explicit source + find inferred source + rules for doink.ld1: + no inferred source found + doink.ld1 NEWER than doink.lod by 00:27:22 + doink.ld2 same as doink.lod + no explicit source + find inferred source + rules for doink.ld2: + no inferred source found + doink.ld2 same as doink.lod + dnk_hit.img older than doink.lod by 37 days + no explicit source + find inferred source + rules for dnk_hit.img: + no inferred source found + dnk_hit.img older than doink.lod by 37 days + dnk_kik.img older than doink.lod by 60 days + no explicit source + find inferred source + rules for dnk_kik.img: + no inferred source found + dnk_kik.img older than doink.lod by 60 days + dnk_msc.img older than doink.lod by 60 days + no explicit source + find inferred source + rules for dnk_msc.img: + no inferred source found + dnk_msc.img older than doink.lod by 60 days + dnk_pnc.img older than doink.lod by 49 days + no explicit source + find inferred source + rules for dnk_pnc.img: + no inferred source found + dnk_pnc.img older than doink.lod by 49 days + dnk_wlk.img older than doink.lod by 40 days + no explicit source + find inferred source + rules for dnk_wlk.img: + no inferred source found + dnk_wlk.img older than doink.lod by 40 days + done explicit source + find inferred source + already have doink.lod : doink.ld1 + + shell lines from %.lod : %.ld1 + found doink.ld1 + update doink.lod +doink.bat + doink.lod is up to date + doink.lod NEWER than doink.irw by 00:34:12 + done explicit source + find inferred source + rules for doink.irw: + no inferred source found + update doink.irw + doink.irw has no shell lines + doink.irw is up to date + doink.irw NEWER than doink by 00:17:32 + done explicit source + no inference check + update doink +loadw doink /A /TS /FI /E +touch doink + doink is up to date + doink NEWER (no all) + lex NEWER (no all) + make explicit source + lex.irw NEWER than lex by 01:12:16 + no explicit source + find inferred source + rules for lex.irw: + no inferred source found + lex.irw NEWER than lex by 01:12:16 + done explicit source + no inference check + update lex +loadw lex /A /TS /FI /E +touch lex + lex is up to date + lex NEWER (no all) + razor NEWER (no all) + make explicit source + razor.irw NEWER than razor by 00:52:04 + make explicit source + razor.lod older than razor.irw by 00:02:10 + make explicit source + razor.ld1 NEWER than razor.lod by 00:27:20 + no explicit source + find inferred source + rules for razor.ld1: + no inferred source found + razor.ld1 NEWER than razor.lod by 00:27:20 + razor.ld2 same as razor.lod + no explicit source + find inferred source + rules for razor.ld2: + no inferred source found + razor.ld2 same as razor.lod + rzr_hit.img older than razor.lod by 02:57:26 + no explicit source + find inferred source + rules for rzr_hit.img: + no inferred source found + rzr_hit.img older than razor.lod by 02:57:26 + rzr_kik.img older than razor.lod by 02:57:08 + no explicit source + find inferred source + rules for rzr_kik.img: + no inferred source found + rzr_kik.img older than razor.lod by 02:57:08 + rzr_msc.img older than razor.lod by 7 days + no explicit source + find inferred source + rules for rzr_msc.img: + no inferred source found + rzr_msc.img older than razor.lod by 7 days + rzr_pnc.img older than razor.lod by 02:44:46 + no explicit source + find inferred source + rules for rzr_pnc.img: + no inferred source found + rzr_pnc.img older than razor.lod by 02:44:46 + rzr_wlk.img older than razor.lod by 40 days + no explicit source + find inferred source + rules for rzr_wlk.img: + no inferred source found + rzr_wlk.img older than razor.lod by 40 days + done explicit source + find inferred source + already have razor.lod : razor.ld1 + + shell lines from %.lod : %.ld1 + found razor.ld1 + update razor.lod +razor.bat + razor.lod is up to date + razor.lod NEWER than razor.irw by 00:33:36 + done explicit source + find inferred source + rules for razor.irw: + no inferred source found + update razor.irw + razor.irw has no shell lines + razor.irw is up to date + razor.irw NEWER than razor by 01:25:40 + done explicit source + no inference check + update razor +loadw razor /A /TS /FI /E +touch razor + razor is up to date + razor NEWER (no all) + shawn NEWER (no all) + make explicit source + shawn.irw older than shawn by 00:15:42 + make explicit source + shawn.lod older than shawn.irw by 00:02:26 + make explicit source + shawn.ld1 NEWER than shawn.lod by 00:27:18 + no explicit source + find inferred source + rules for shawn.ld1: + no inferred source found + shawn.ld1 NEWER than shawn.lod by 00:27:18 + shawn.ld2 same as shawn.lod + no explicit source + find inferred source + rules for shawn.ld2: + no inferred source found + shawn.ld2 same as shawn.lod + shn_hit.img older than shawn.lod by 1 day + no explicit source + find inferred source + rules for shn_hit.img: + no inferred source found + shn_hit.img older than shawn.lod by 1 day + shn_kik.img older than shawn.lod by 15 days + no explicit source + find inferred source + rules for shn_kik.img: + no inferred source found + shn_kik.img older than shawn.lod by 15 days + shn_msc.img older than shawn.lod by 18 days + no explicit source + find inferred source + rules for shn_msc.img: + no inferred source found + shn_msc.img older than shawn.lod by 18 days + shn_pnc.img older than shawn.lod by 17 days + no explicit source + find inferred source + rules for shn_pnc.img: + no inferred source found + shn_pnc.img older than shawn.lod by 17 days + shn_wlk.img older than shawn.lod by 15 days + no explicit source + find inferred source + rules for shn_wlk.img: + no inferred source found + shn_wlk.img older than shawn.lod by 15 days + done explicit source + find inferred source + already have shawn.lod : shawn.ld1 + + shell lines from %.lod : %.ld1 + found shawn.ld1 + update shawn.lod +shawn.bat + shawn.lod is up to date + shawn.lod NEWER than shawn.irw by 00:33:18 + done explicit source + find inferred source + rules for shawn.irw: + no inferred source found + update shawn.irw + shawn.irw has no shell lines + shawn.irw is up to date + shawn.irw NEWER than shawn by 00:17:36 + done explicit source + no inference check + update shawn +loadw shawn /A /TS /FI /E +touch shawn + shawn is up to date + shawn NEWER (no all) + taker NEWER (no all) + make explicit source + taker.irw older than taker by 00:15:08 + make explicit source + taker.lod older than taker.irw by 00:02:52 + make explicit source + taker.ld1 NEWER than taker.lod by 00:27:18 + no explicit source + find inferred source + rules for taker.ld1: + no inferred source found + taker.ld1 NEWER than taker.lod by 00:27:18 + taker.ld2 same as taker.lod + no explicit source + find inferred source + rules for taker.ld2: + no inferred source found + taker.ld2 same as taker.lod + und_hit.img older than taker.lod by 82 days + no explicit source + find inferred source + rules for und_hit.img: + no inferred source found + und_hit.img older than taker.lod by 82 days + und_kik.img older than taker.lod by 75 days + no explicit source + find inferred source + rules for und_kik.img: + no inferred source found + und_kik.img older than taker.lod by 75 days + und_msc.img older than taker.lod by 41 days + no explicit source + find inferred source + rules for und_msc.img: + no inferred source found + und_msc.img older than taker.lod by 41 days + und_pnc.img older than taker.lod by 78 days + no explicit source + find inferred source + rules for und_pnc.img: + no inferred source found + und_pnc.img older than taker.lod by 78 days + und_wlk.img older than taker.lod by 40 days + no explicit source + find inferred source + rules for und_wlk.img: + no inferred source found + und_wlk.img older than taker.lod by 40 days + done explicit source + find inferred source + already have taker.lod : taker.ld1 + + shell lines from %.lod : %.ld1 + found taker.ld1 + update taker.lod +taker.bat + taker.lod is up to date + taker.lod NEWER than taker.irw by 00:32:52 + done explicit source + find inferred source + rules for taker.irw: + no inferred source found + update taker.irw + taker.irw has no shell lines + taker.irw is up to date + taker.irw NEWER than taker by 00:17:44 + done explicit source + no inference check + update taker +loadw taker /A /TS /FI /E +touch taker + taker is up to date + taker NEWER (no all) + yoko NEWER (no all) + make explicit source + yoko.irw older than yoko by 00:14:46 + no explicit source + find inferred source + rules for yoko.irw: + no inferred source found + yoko.irw older than yoko by 00:14:46 + done explicit source + no inference check + yoko NEWER (no all) + done explicit source + find inferred source + rules for all: + no inferred source found + update all + all has no shell lines + all is up to date +all diff --git a/IMG/TIMEWRNG.BDB b/IMG/TIMEWRNG.BDB new file mode 100755 index 0000000..fae0bec --- /dev/null +++ b/IMG/TIMEWRNG.BDB @@ -0,0 +1,217 @@ +timewrng 3000 2000 255 1 24 215 +ring 86 2157 189 1083 +4000 100 200 0 6 +4000 255 787 3 4 +4010 276 944 6 0 +3F00 283 826 9 9 +6A00 283 996 C 0 +3F00 286 964 F 0 +4000 298 818 12 4 +4400 301 724 15 4 +4000 301 891 18 16 +4100 303 887 1B 10 +3F00 303 779 1E 4 +3F00 303 893 21 4 +2600 309 661 24 11 +4000 319 814 27 4 +4400 327 719 3 4 +4010 341 886 6 0 +3F00 348 826 9 9 +4000 354 846 2A 4 +2100 365 567 2D 4 +4000 372 887 30 16 +4400 374 751 12 4 +4000 387 882 33 0 +2100 393 577 36 4 +4400 395 747 27 4 +3E00 397 889 39 0 +4000 413 826 9 9 +2800 416 630 3C 11 +4400 430 779 2A 4 +2100 434 608 15 4 +2100 435 663 1E 4 +0 436 505 3F 13 +400 438 576 42 15 +2100 459 604 3 4 +2E00 463 742 45 11 +400 466 569 42 15 +2A00 474 646 48 11 +4110 476 767 6 0 +4000 478 879 4B 0 +4000 483 766 4E 0 +4000 489 879 5D 0 +2C00 495 723 51 12 +800 496 621 63 17 +6A00 503 996 C 0 +2100 506 635 12 4 +2100 527 632 27 4 +4000 531 716 60 0 +200 534 510 54 14 +E00 538 669 66 10 +4110 542 708 6 0 +2400 550 677 57 12 +600 561 629 5A 16 +2100 562 663 2A 4 +0 629 505 3F 13 +1200 676 673 69 10 +4000 678 782 6C 0 +4000 678 707 6F 0 +6900 686 889 72 0 +4000 689 956 75 0 +6400 694 780 78 22 +6400 708 857 96 5 +600 709 618 5A 16 +A00 711 640 7B 18 +4000 720 673 7E 10 +400 722 576 42 15 +6A00 723 996 C 0 +200 730 510 54 14 +6800 740 785 81 2 +6410 741 865 84 5 +6900 748 900 87 20 +6700 749 785 8A 7 +6900 749 889 8D 0 +6400 768 808 AE 5 +1000 771 671 90 12 +C00 775 634 93 19 +4000 775 946 AB 0 +6510 816 777 99 8 +6900 816 891 B1 0 +6400 819 787 9C 5 +6400 819 697 9F 8 +0 821 505 3F 13 +1600 823 670 A2 10 +6500 824 702 A5 21 +4000 827 707 A8 0 +6400 841 781 BA 22 +400 842 581 42 15 +4000 846 707 A8 0 +1800 870 672 B4 10 +4000 874 707 A8 0 +4000 874 707 A8 0 +800 889 636 63 17 +1C00 917 665 C0 10 +200 918 511 54 14 +1A00 920 675 BD 10 +6A00 942 996 C 0 +4000 1016 956 C6 0 +6400 1021 869 D2 5 +6400 1022 789 D5 5 +6400 1033 780 D8 22 +4000 1043 956 DB 0 +6800 1047 889 DE 0 +4000 1052 706 B7 0 +6900 1055 896 C9 0 +500 1058 583 CC 1 +1200 1066 673 69 10 +0 1074 505 3F 13 +800 1076 636 63 17 +400 1077 576 42 15 +4000 1080 200 0 6 +4010 1087 707 B7 0 +1E00 1092 660 CF 10 +6900 1098 906 C3 20 +6410 1100 780 BA 22 +1400 1108 671 E1 10 +6410 1119 869 96 5 +6410 1119 789 AE 5 +4010 1140 956 AB 0 +6900 1147 889 DE 0 +2200 1161 671 E4 10 +6A00 1161 996 C 0 +200 1173 510 54 14 +C00 1180 632 93 19 +1000 1199 671 90 12 +600 1204 623 5A 16 +6410 1218 780 78 22 +400 1219 576 42 15 +E00 1250 674 66 10 +0 1263 505 3F 13 +6900 1270 889 E7 0 +6410 1279 787 9C 5 +4000 1279 707 A8 0 +6510 1288 701 A5 21 +4010 1291 956 75 0 +A00 1298 639 7B 18 +4000 1307 707 A8 0 +1600 1310 670 A2 10 +6500 1314 777 99 8 +6410 1315 697 9F 8 +6400 1317 865 84 5 +6900 1321 904 EA 20 +4000 1341 707 ED 0 +4010 1345 782 6C 0 +6710 1352 785 8A 7 +1800 1358 672 B4 10 +200 1360 510 54 14 +400 1361 576 42 15 +800 1368 637 63 17 +6900 1374 889 F0 0 +6A00 1381 996 C 0 +6810 1385 785 81 2 +1C00 1402 669 C0 10 +400 1417 567 42 15 +4010 1432 879 5D 0 +0 1450 505 3F 13 +C00 1451 630 93 19 +1E00 1457 671 CF 10 +4000 1457 782 F3 0 +1400 1501 671 E1 10 +3F10 1502 768 4E 0 +4010 1519 879 4B 0 +6A00 1600 996 C 0 +2110 1631 662 2A 4 +2110 1638 630 27 4 +4000 1638 705 F9 0 +200 1639 516 54 14 +0 1641 505 3F 13 +4000 1642 665 7E 10 +4000 1644 775 F6 0 +400 1645 576 42 15 +A00 1649 634 7B 18 +4000 1654 812 F6 0 +4000 1663 887 F6 0 +4000 1669 846 F6 0 +2110 1679 634 12 4 +1A00 1693 671 BD 10 +4210 1701 719 FC 0 +4000 1703 923 F6 0 +2110 1711 601 3 4 +4010 1721 870 33 0 +4100 1729 707 6 0 +2110 1732 606 15 4 +2110 1734 661 1E 4 +4000 1744 959 F6 0 +2410 1747 673 57 12 +4000 1749 963 FF 0 +4210 1756 774 FC 0 +2A10 1764 644 48 11 +2110 1781 574 36 4 +4210 1785 778 102 0 +4000 1786 995 F6 0 +4100 1794 765 6 0 +2C10 1798 718 51 12 +2110 1805 565 2D 4 +2E10 1817 741 45 11 +4210 1817 832 FC 0 +6A00 1820 996 C 0 +4000 1825 1031 F6 0 +4100 1859 823 6 0 +4210 1861 779 2A 4 +2810 1864 629 3C 11 +4410 1868 747 27 4 +4500 1869 826 105 3 +4210 1877 888 FC 0 +4210 1907 892 102 0 +4410 1909 751 12 4 +2610 1923 660 24 11 +4100 1923 881 6 0 +4210 1937 943 FC 0 +4220 1937 826 1E 4 +4500 1940 831 108 3 +4410 1941 719 3 4 +4410 1962 723 15 4 +4410 1964 779 1E 4 +3200 1978 927 9 9 +4100 1988 939 6 0 +7330 2007 824 1E 4 diff --git a/IMG/TIMEWRNG.BDD b/IMG/TIMEWRNG.BDD new file mode 100755 index 0000000..665a28a Binary files /dev/null and b/IMG/TIMEWRNG.BDD differ diff --git a/IMG/TIPSTUFF.IMG b/IMG/TIPSTUFF.IMG new file mode 100644 index 0000000..0fe8fde Binary files /dev/null and b/IMG/TIPSTUFF.IMG differ diff --git a/IMG/TITLESC2.IMG b/IMG/TITLESC2.IMG new file mode 100644 index 0000000..f000a34 Binary files /dev/null and b/IMG/TITLESC2.IMG differ diff --git a/IMG/TITLSCR2.BDB b/IMG/TITLSCR2.BDB new file mode 100755 index 0000000..dd7289d --- /dev/null +++ b/IMG/TITLSCR2.BDB @@ -0,0 +1,18 @@ +titlscr2 2000 1000 255 1 6 16 +WWFTIT 230 680 30 334 +4000 252 174 0 3 +4000 253 49 3 3 +5F00 254 151 6 1 +4000 260 202 9 4 +4000 264 140 C 4 +4000 329 77 F 4 +4000 361 128 12 2 +4000 376 203 15 4 +4000 392 247 18 0 +5F00 410 68 1B 5 +4000 448 80 1E 4 +5F00 451 152 21 1 +4000 452 175 24 3 +4000 453 49 27 3 +4000 481 182 2A 4 +4000 568 115 2D 4 diff --git a/IMG/TITLSCR2.BDD b/IMG/TITLSCR2.BDD new file mode 100755 index 0000000..00d92a8 Binary files /dev/null and b/IMG/TITLSCR2.BDD differ diff --git a/IMG/TONY.IMG b/IMG/TONY.IMG new file mode 100644 index 0000000..beffec9 Binary files /dev/null and b/IMG/TONY.IMG differ diff --git a/IMG/TRNSPLAT.IMG b/IMG/TRNSPLAT.IMG new file mode 100644 index 0000000..eb73149 Binary files /dev/null and b/IMG/TRNSPLAT.IMG differ diff --git a/IMG/TROGF15.IMG b/IMG/TROGF15.IMG new file mode 100644 index 0000000..ba9e418 Binary files /dev/null and b/IMG/TROGF15.IMG differ diff --git a/IMG/TROGF7.IMG b/IMG/TROGF7.IMG new file mode 100644 index 0000000..9e939b0 Binary files /dev/null and b/IMG/TROGF7.IMG differ diff --git a/IMG/UNDBLK_P.SRC b/IMG/UNDBLK_P.SRC new file mode 100755 index 0000000..57afe86 --- /dev/null +++ b/IMG/UNDBLK_P.SRC @@ -0,0 +1,10 @@ +UNDBLK_P: + .word 64 + .word 018d5h,07bbbh,07b77h,076f3h,06eb0h,0666fh,05e2dh,051ebh + .word 049cbh,045a9h,04167h,03947h,03d25h,03d03h,03105h,030e3h + .word 028c3h,02c80h,02081h,01861h,01840h,01420h,00c00h,07fffh + .word 06b39h,06717h,062f6h,05ad5h,05272h,04a51h,0420fh,03deeh + .word 039cdh,035ach,0318bh,0316ah,02949h,02107h,01ce6h,014c5h + .word 014a4h,00c83h,00862h,00841h,00441h,00420h,0739ch,06b5ah + .word 06318h,05ef7h,056b5h,05294h,04a52h,04631h,03defh,039ceh + .word 0318ch,0294ah,02529h,01ce7h,018c6h,01084h,00c63h,00421h diff --git a/IMG/UNDGRN_P.SRC b/IMG/UNDGRN_P.SRC new file mode 100755 index 0000000..99194ce --- /dev/null +++ b/IMG/UNDGRN_P.SRC @@ -0,0 +1,10 @@ +UNDGRN_P: + .word 64 + .word 00000h,07bbbh,07b77h,076f3h,06eb0h,0666fh,05e2dh,051ebh + .word 049cbh,045a9h,04167h,03947h,03d25h,03d03h,03105h,030e3h + .word 028c3h,02c80h,02081h,01861h,01840h,01420h,00c00h,07bddh + .word 06b39h,06717h,062f6h,05ad5h,05272h,04a51h,0420fh,03deeh + .word 039cdh,035ach,0318bh,0316ah,02949h,02107h,01ce6h,014c5h + .word 014a4h,00c83h,00862h,00841h,00441h,00420h,003c0h,00340h + .word 00320h,00300h,002c0h,002a0h,00280h,00240h,00200h,001e0h + .word 001c0h,001a0h,00180h,00140h,00100h,000e0h,000c0h,000a0h diff --git a/IMG/UNDNEG_P.SRC b/IMG/UNDNEG_P.SRC new file mode 100755 index 0000000..2b83c5b --- /dev/null +++ b/IMG/UNDNEG_P.SRC @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/IMG/UNDPRP_P.IMG b/IMG/UNDPRP_P.IMG new file mode 100644 index 0000000..4a1dd7c Binary files /dev/null and b/IMG/UNDPRP_P.IMG differ diff --git a/IMG/UNDPRP_P.SRC b/IMG/UNDPRP_P.SRC new file mode 100755 index 0000000..08bf112 --- /dev/null +++ b/IMG/UNDPRP_P.SRC @@ -0,0 +1,10 @@ +UNDPRP_P: + .word 64 + .word 018d5h,07bbbh,07b77h,076f3h,06eb0h,0666fh,05e2dh,051ebh + .word 049cbh,045a9h,04167h,03947h,03d25h,03d03h,03105h,030e3h + .word 028c3h,02c80h,02081h,01861h,01840h,01420h,00c00h,07fffh + .word 06b39h,06717h,062f6h,05ad5h,05272h,04a51h,0420fh,03deeh + .word 039cdh,035ach,0318bh,0316ah,02949h,02107h,01ce6h,014c5h + .word 014a4h,00c83h,00862h,00841h,00441h,00420h,0781eh,0701ch + .word 0681ah,06419h,05c17h,05415h,05014h,04812h,04010h,0380eh + .word 0340dh,02c0bh,02409h,02008h,01806h,01004h,00c03h,00401h diff --git a/IMG/UNDRED_P.SRC b/IMG/UNDRED_P.SRC new file mode 100755 index 0000000..07e83e9 --- /dev/null +++ b/IMG/UNDRED_P.SRC @@ -0,0 +1,10 @@ +UNDRED_P: + .word 64 + .word 00000h,07bbbh,07b77h,076f3h,06eb0h,0666fh,05e2dh,051ebh + .word 049cbh,045a9h,04167h,03947h,03d25h,03d03h,03105h,030e3h + .word 028c3h,02c80h,02081h,01861h,01840h,01420h,00c00h,07bddh + .word 06b39h,06717h,062f6h,05ad5h,05272h,04a51h,0420fh,03deeh + .word 039cdh,035ach,0318bh,0316ah,02949h,02107h,01ce6h,014c5h + .word 014a4h,00c83h,00862h,00841h,00441h,00420h,07400h,06c00h + .word 06400h,06000h,05800h,05000h,04c00h,04400h,04000h,03800h + .word 03000h,02c00h,02400h,02000h,01800h,01000h,00c00h,00400h diff --git a/IMG/UNDSPEC.IMG b/IMG/UNDSPEC.IMG new file mode 100644 index 0000000..f26f942 Binary files /dev/null and b/IMG/UNDSPEC.IMG differ diff --git a/IMG/UNDSTAND.IMG b/IMG/UNDSTAND.IMG new file mode 100644 index 0000000..2b88e4c Binary files /dev/null and b/IMG/UNDSTAND.IMG differ diff --git a/IMG/UND_HIT.IMG b/IMG/UND_HIT.IMG new file mode 100644 index 0000000..7db0be7 Binary files /dev/null and b/IMG/UND_HIT.IMG differ diff --git a/IMG/UND_JAKE.IMG b/IMG/UND_JAKE.IMG new file mode 100644 index 0000000..7953db2 Binary files /dev/null and b/IMG/UND_JAKE.IMG differ diff --git a/IMG/UND_JMS.IMG b/IMG/UND_JMS.IMG new file mode 100644 index 0000000..fb978fb Binary files /dev/null and b/IMG/UND_JMS.IMG differ diff --git a/IMG/UND_KIK.IMG b/IMG/UND_KIK.IMG new file mode 100644 index 0000000..9bcb057 Binary files /dev/null and b/IMG/UND_KIK.IMG differ diff --git a/IMG/UND_MJL.IMG b/IMG/UND_MJL.IMG new file mode 100644 index 0000000..4511b98 Binary files /dev/null and b/IMG/UND_MJL.IMG differ diff --git a/IMG/UND_MJT.IMG b/IMG/UND_MJT.IMG new file mode 100644 index 0000000..92cdf22 Binary files /dev/null and b/IMG/UND_MJT.IMG differ diff --git a/IMG/UND_MJT.~MG b/IMG/UND_MJT.~MG new file mode 100644 index 0000000..eece91a Binary files /dev/null and b/IMG/UND_MJT.~MG differ diff --git a/IMG/UND_MSC.IMG b/IMG/UND_MSC.IMG new file mode 100644 index 0000000..37aa3df Binary files /dev/null and b/IMG/UND_MSC.IMG differ diff --git a/IMG/UND_PNC.IMG b/IMG/UND_PNC.IMG new file mode 100644 index 0000000..b206d3d Binary files /dev/null and b/IMG/UND_PNC.IMG differ diff --git a/IMG/UND_RJR.IMG b/IMG/UND_RJR.IMG new file mode 100644 index 0000000..e90c85f Binary files /dev/null and b/IMG/UND_RJR.IMG differ diff --git a/IMG/UND_RJR.OLD b/IMG/UND_RJR.OLD new file mode 100755 index 0000000..f601dba Binary files /dev/null and b/IMG/UND_RJR.OLD differ diff --git a/IMG/UND_WLK.IMG b/IMG/UND_WLK.IMG new file mode 100644 index 0000000..257e394 Binary files /dev/null and b/IMG/UND_WLK.IMG differ diff --git a/IMG/UND_XXX.IMG b/IMG/UND_XXX.IMG new file mode 100644 index 0000000..b324e91 Binary files /dev/null and b/IMG/UND_XXX.IMG differ diff --git a/IMG/V1C_F.BIN b/IMG/V1C_F.BIN new file mode 100755 index 0000000..1a70f7a Binary files /dev/null and b/IMG/V1C_F.BIN differ diff --git a/IMG/VINSML_F.BIN b/IMG/VINSML_F.BIN new file mode 100755 index 0000000..22c561f Binary files /dev/null and b/IMG/VINSML_F.BIN differ diff --git a/IMG/VS_BK.IMG b/IMG/VS_BK.IMG new file mode 100644 index 0000000..af7b159 Binary files /dev/null and b/IMG/VS_BK.IMG differ diff --git a/IMG/WGSFNT14.IMG b/IMG/WGSFNT14.IMG new file mode 100644 index 0000000..8c0fbed Binary files /dev/null and b/IMG/WGSFNT14.IMG differ diff --git a/IMG/WGSFNT18.IMG b/IMG/WGSFNT18.IMG new file mode 100644 index 0000000..0890ed3 Binary files /dev/null and b/IMG/WGSFNT18.IMG differ diff --git a/IMG/WGSFNT20.IMG b/IMG/WGSFNT20.IMG new file mode 100644 index 0000000..b54dbe2 Binary files /dev/null and b/IMG/WGSFNT20.IMG differ diff --git a/IMG/WGSFNT22.IMG b/IMG/WGSFNT22.IMG new file mode 100644 index 0000000..5daa835 Binary files /dev/null and b/IMG/WGSFNT22.IMG differ diff --git a/IMG/WGSFNT24.IMG b/IMG/WGSFNT24.IMG new file mode 100644 index 0000000..159b7a5 Binary files /dev/null and b/IMG/WGSFNT24.IMG differ diff --git a/IMG/WHACK2.IMG b/IMG/WHACK2.IMG new file mode 100644 index 0000000..46ee854 Binary files /dev/null and b/IMG/WHACK2.IMG differ diff --git a/IMG/WINFONT.IMG b/IMG/WINFONT.IMG new file mode 100644 index 0000000..3a380f8 Binary files /dev/null and b/IMG/WINFONT.IMG differ diff --git a/IMG/WMATCH.IMG b/IMG/WMATCH.IMG new file mode 100644 index 0000000..76e6240 Binary files /dev/null and b/IMG/WMATCH.IMG differ diff --git a/IMG/WRESTLER.PAL b/IMG/WRESTLER.PAL new file mode 100755 index 0000000..11ecda4 --- /dev/null +++ b/IMG/WRESTLER.PAL @@ -0,0 +1,210 @@ +UNDNEG_P: + .word 64 + .word 00000h,00000h,00421h,00842h,00c63h,014a5h,018c6h,01ce7h + .word 02529h,0294ah,0318ch,035adh,039ceh,04210h,04631h,04a52h + .word 05294h,056b5h,05ef7h,06318h,06739h,06f7bh,0739ch,00421h + .word 00842h,00c63h,014a5h,018c6h,01ce7h,02108h,0294ah,02d6bh + .word 0318ch,039ceh,03defh,04210h,04a52h,04e73h,05294h,05ad6h + .word 05ef7h,06318h,06b5ah,06f7bh,0739ch,07bdeh,00421h,00842h + .word 01084h,014a5h,01ce7h,02529h,0294ah,0318ch,035adh,03defh + .word 04210h,04a52h,05294h,056b5h,05ef7h,06318h,06b5ah,0739ch + +YOKRED_P: + .word 64 + .word 00000h,07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04a52h + .word 04210h,039ceh,0318ch,0294ah,02108h,014a5h,00c63h,00421h + .word 00400h,07f9ah,07b14h,07ef1h,07acfh,076b0h,0768eh,06e4bh + .word 06a4dh,0622ch,0660bh,05a0ch,059eah,051a8h,05187h,04988h + .word 04966h,04124h,04102h,03904h,038e2h,030a1h,03480h,02881h + .word 02840h,02400h,01400h,07e91h,07daah,07905h,070c3h,06ce4h + .word 064a2h,06081h,05ca2h,05860h,05840h,05460h,05040h,04c60h + .word 04c40h,04420h,04000h,03c20h,03c00h,03400h,02c00h,02000h + +YOKPRP_P: + .word 64 + .word 00000h,07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04a52h + .word 04210h,039ceh,0318ch,0294ah,02108h,014a5h,00c63h,00421h + .word 00400h,07f9ah,07b14h,07ef1h,07acfh,076b0h,0768eh,06e4bh + .word 06a4dh,0622ch,0660bh,05a0ch,059eah,051a8h,05187h,04988h + .word 04966h,04124h,04102h,03904h,038e2h,030a1h,03480h,02881h + .word 02840h,02400h,01400h,06e9bh,06dbbh,0691ah,060d8h,05cf7h + .word 054b5h,05094h,04cb3h,04872h,04852h,04471h,04050h,03c6fh + .word 03c4fh,0342dh,0300ch,02c2bh,02c0bh,02409h,01c07h,01004h + +UNDPRP_P: + .word 64 + .word 018d5h,07bbbh,07b77h,076f3h,06eb0h,0666fh,05e2dh,051ebh + .word 049cbh,045a9h,04167h,03947h,03d25h,03d03h,03105h,030e3h + .word 028c3h,02c80h,02081h,01861h,01840h,01420h,00c00h,07fffh + .word 06b39h,06717h,062f6h,05ad5h,05272h,04a51h,0420fh,03deeh + .word 039cdh,035ach,0318bh,0316ah,02949h,02107h,01ce6h,014c5h + .word 014a4h,00c83h,00862h,00841h,00441h,00420h,0781eh,0701ch + .word 0681ah,06419h,05c17h,05415h,05014h,04812h,04010h,0380eh + .word 0340dh,02c0bh,02409h,02008h,01806h,01004h,00c03h,00401h + +UNDBLK_P: + .word 64 + .word 018d5h,07bbbh,07b77h,076f3h,06eb0h,0666fh,05e2dh,051ebh + .word 049cbh,045a9h,04167h,03947h,03d25h,03d03h,03105h,030e3h + .word 028c3h,02c80h,02081h,01861h,01840h,01420h,00c00h,07fffh + .word 06b39h,06717h,062f6h,05ad5h,05272h,04a51h,0420fh,03deeh + .word 039cdh,035ach,0318bh,0316ah,02949h,02107h,01ce6h,014c5h + .word 014a4h,00c83h,00862h,00841h,00441h,00420h,0739ch,06b5ah + .word 06318h,05ef7h,056b5h,05294h,04a52h,04631h,03defh,039ceh + .word 0318ch,0294ah,02529h,01ce7h,018c6h,01084h,00c63h,00421h + +SHNRED_P: + .word 63 + .word 018d5h,07fddh,07f98h,07f58h,07f34h,07ad1h,07ab0h,0768fh + .word 06e90h,06e6eh,06e4dh,0622ch,05e0ch,059eah,05dc9h,055cah + .word 051a8h,04d89h,04d87h,04567h,04925h,04124h,03925h,03d03h + .word 038e2h,038c1h,030e4h,030c3h,03480h,02460h,02420h,01c40h + .word 01400h,00400h,076d6h,0720fh,06dabh,07128h,070c5h,06c42h + .word 06800h,06400h,05800h,05000h,04800h,03800h,02800h,01800h + .word 07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04631h,03defh + .word 035adh,02d6bh,02529h,01ce7h,014a5h,00c63h,00421h + +SHNPRP_P: + .word 63 + .word 018d5h,07fddh,07f98h,07f58h,07f34h,07ad1h,07ab0h,0768fh + .word 06e90h,06e6eh,06e4dh,0622ch,05e0ch,059eah,05dc9h,055cah + .word 051a8h,04d89h,04d87h,04567h,04925h,04124h,03925h,03d03h + .word 038e2h,038c1h,030e4h,030c3h,03480h,02460h,02420h,01c40h + .word 01400h,00400h,076d6h,07210h,06dabh,064b9h,05c77h,05816h + .word 05415h,04c13h,04410h,03c0eh,0340ch,02409h,01405h,00401h + .word 07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04631h,03defh + .word 035adh,02d6bh,02529h,01ce7h,014a5h,00c63h,00421h + +RZRPRP_P: + .word 64 + .word 00000h,07fdeh,04a50h,041edh,035cdh,02d8ch,01d07h,018e6h + .word 014c5h,010a4h,00c83h,00862h,00821h,00000h,07ffeh,07fdah + .word 07f98h,07f55h,07f54h,07f35h,07f12h,07ef3h,07ed0h,07ed1h + .word 07ad2h,07eafh,07e8eh,07290h,0766eh,0724eh,06a4eh,06e2dh + .word 0620ch,065eah,05debh,05dcah,059cah,055a8h,05188h,04d67h + .word 04125h,04502h,038e3h,03461h,02061h,01c20h,01000h,07fe8h + .word 07fa0h,07ee0h,065e0h,03d80h,0701ch,06419h,05415h,04812h + .word 04010h,0380eh,0340dh,0300ch,02c0bh,02409h,01c07h,01405h + +RZRGRN_P: + .word 64 + .word 00000h,07fdeh,04a50h,041edh,035cdh,02d8ch,01d07h,018e6h + .word 014c5h,010a4h,00c83h,00862h,00821h,00000h,07ffeh,07fdah + .word 07f98h,07f55h,07f54h,07f35h,07f12h,07ef3h,07ed0h,07ed1h + .word 07ad2h,07eafh,07e8eh,07290h,0766eh,0724eh,06a4eh,06e2dh + .word 0620ch,065eah,05debh,05dcah,059cah,055a8h,05188h,04d67h + .word 04125h,04502h,038e3h,03461h,02061h,01c20h,01000h,07fe8h + .word 07fa0h,07ee0h,065e0h,03d80h,00785h,00323h,002a1h,00240h + .word 00200h,001c0h,001a0h,00180h,00160h,00120h,000e0h,000a0h + +LEXYEL_P: + .word 64 + .word 00000h,07fddh,07fbch,07f55h,07af4h,07ab2h,07ab0h,07a6eh + .word 06e4dh,0722ch,06a2dh,0660dh,05e0dh,061ebh,05dc9h,059a9h + .word 05189h,05167h,04546h,04103h,03d04h,03505h,02cc3h,02c81h + .word 02440h,01800h,00400h,0529ah,039dbh,0319ah,02955h,018d1h + .word 0084dh,0042ah,06d8ch,06d07h,06863h,04c42h,03863h,03800h + .word 02800h,07bdeh,0739ch,06739h,056b5h,04631h,02529h,014a5h + .word 00c63h,07fa0h,07b40h,07300h,06ec0h,06680h,06240h,05a00h + .word 055c0h,04da0h,04960h,04140h,03d00h,034e0h,030c0h,028a0h + +LEXWHT_P: + .word 64 + .word 00000h,07fddh,07fbch,07f55h,07af4h,07ab2h,07ab0h,07a6eh + .word 06e4dh,0722ch,06a2dh,0660dh,05e0dh,061ebh,05dc9h,059a9h + .word 05189h,05167h,04546h,04103h,03d04h,03505h,02cc3h,02c81h + .word 02440h,01800h,00400h,0529ah,039dbh,0319ah,02955h,018d1h + .word 0084dh,0042ah,06d8ch,06d07h,06863h,04c42h,03863h,03800h + .word 02800h,07bdeh,0739ch,06739h,056b5h,04631h,02529h,014a5h + .word 00c63h,07fffh,077bdh,06f7bh,06739h,05ef7h,05ad6h,05294h + .word 04a52h,04210h,039ceh,0318ch,0294ah,02108h,018c6h,014a5h + +LEXPRP_P: + .word 64 + .word 0250eh,07bbch,07b9bh,07b34h,076d3h,07691h,0768fh,0764dh + .word 06a2ch,06e0bh,0660ch,061ech,059ech,05dcah,059a8h,05588h + .word 04d68h,04d46h,04125h,03ce2h,038e3h,030e4h,028a2h,02861h + .word 02021h,01421h,00421h,0667ah,05d78h,058b6h,05415h,04411h + .word 0340dh,0280ah,06d8ch,06d07h,06863h,04c42h,03863h,03800h + .word 02800h,07bdeh,0739ch,06739h,056b5h,04631h,02529h,014a5h + .word 00c63h,07fdfh,07f3fh,07abeh,0723ch,069dah,06579h,05d17h + .word 058f6h,050f4h,048f2h,040f0h,038eeh,034edh,02cebh,024e9h + +HRTPNK_P: + .word 64 + .word 00000h,07f9ah,07b16h,07ef3h,076b2h,06e90h,06e6fh,06670h + .word 06a4eh,0624eh,0662dh,05e2eh,0660bh,05e0ch,05debh,055edh + .word 051cah,05586h,04daah,04988h,04967h,04126h,03d25h,03904h + .word 034e4h,030a2h,02ca3h,02482h,02441h,01863h,01021h,00800h + .word 07fffh,077bdh,06f7bh,06739h,05ef7h,056b5h,04e73h,04631h + .word 03defh,035adh,02d6bh,02529h,01ce7h,014a5h,00c63h,00421h + .word 07f5fh,07edeh,07e5dh,079dah,07977h,07135h,06d13h,068f2h + .word 060b1h,05c90h,0586fh,0502dh,0480bh,0400ah,03406h,02c03h + +HRTBLU_P: + .word 64 + .word 00000h,07f9ah,07b16h,07ef3h,076b2h,06e90h,06e6fh,06670h + .word 06a4eh,0624eh,0662dh,05e2eh,0660bh,05e0ch,05debh,055edh + .word 051cah,05586h,04daah,04988h,04967h,04126h,03d25h,03904h + .word 034e4h,030a2h,02ca3h,02482h,02441h,01863h,01021h,00800h + .word 07fffh,077bdh,06f7bh,06739h,05ef7h,056b5h,04e73h,04631h + .word 03defh,035adh,02d6bh,02529h,01ce7h,014a5h,00c63h,00421h + .word 02fbfh,02b3fh,02abeh,0263bh,025d8h,01d96h,01974h,01553h + .word 00d12h,008f1h,004d0h,0008eh,0006ch,0004bh,00027h,00024h + +DNKPRP_P: + .word 64 + .word 0318ch,07fffh,06f7bh,05ef7h,04e73h,03defh,02d6bh,02529h + .word 01ce7h,014a5h,00c63h,00421h,07febh,07fa5h,07b41h,06ec0h + .word 06260h,03effh,02abfh,01a7ch,00a39h,00217h,001f4h,001b2h + .word 00170h,0012eh,000ech,004abh,0046ah,00468h,07ef9h,07e55h + .word 07dd1h,07cc8h,07400h,06c00h,06400h,05c00h,05400h,04c00h + .word 04400h,03800h,03000h,02021h,07fbfh,0769dh,06d9bh,064b9h + .word 05c17h,05014h,04812h,04010h,0340dh,02c0bh,02409h,01806h + .word 01004h,0626eh,05a0eh,045a9h,04566h,03926h,01c83h,01841h + +BAMBLU_P: + .word 64 + .word 000e7h,07fffh,04a52h,04210h,039ceh,0318ch,02d6bh,02529h + .word 01ce7h,014a5h,00c63h,00842h,07d46h,07126h,06cc2h,06126h + .word 060c4h,06c41h,060a2h,05c41h,05083h,04c41h,03c20h,03020h + .word 01800h,077fah,0327eh,01996h,00d59h,01153h,00512h,000f1h + .word 000cfh,0006dh,07f79h,07f55h,07b13h,07ad1h,0728fh,0766dh + .word 06a4dh,0626bh,065e9h,059c9h,05187h,04d87h,05165h,04585h + .word 04901h,04103h,03903h,034c1h,02840h,01000h,07befh,07fc2h + .word 07f82h,07ee1h,07e60h,07dc0h,07d20h,064e0h,04ca0h,04080h + +BAMFRE_P: + .word 64 + .word 00000h,07d60h,07de0h,07e60h,07ee0h,07f60h,07fe0h,07f40h + .word 07ec0h,07e20h,07da0h,07d00h,07d60h,07dc0h,07e20h,07e80h + .word 07ee0h,07f20h,07f80h,07fe0h,07fa0h,07f60h,07f40h,07f00h + .word 07ec0h,07e80h,07e60h,07e20h,07de0h,07da0h,07d60h,07d40h + .word 07d80h,07dc0h,07e20h,07e60h,07ec0h,07f00h,07f40h,07fa0h + .word 07fe0h,07f80h,07f20h,07ea0h,07e40h,07de0h,07d80h,07d20h + .word 07d60h,07dc0h,07e20h,07e80h,07ee0h,07f20h,07f80h,07fe0h + .word 07f80h,07f20h,07ec0h,07e80h,07e20h,07dc0h,07d60h,07d00h + +BAMYLW_P: + .word 64 + .word 000e7h,07fffh,04a52h,04210h,039ceh,0318ch,02d6bh,02529h + .word 01ce7h,014a5h,00c63h,00842h,07d46h,07126h,06cc2h,06126h + .word 060c4h,06c41h,060a2h,05c41h,05083h,04c41h,03c20h,03020h + .word 01800h,077f6h,077f1h,07bd0h,07fa7h,07f82h,06b01h,05a60h + .word 045e0h,03560h,07f79h,07f55h,07b13h,07ad1h,0728fh,0766dh + .word 06a4dh,0626bh,065e9h,059c9h,05187h,04d87h,05165h,04585h + .word 04901h,04103h,03903h,034c1h,02840h,01000h,07befh,07fc2h + .word 07f82h,07ee1h,07e60h,07dc0h,07d20h,064e0h,04ca0h,04080h + +DNKBLU_P: + .word 64 + .word 00000h,07fffh,06f7bh,05ef7h,04e73h,03defh,02d6bh,02529h + .word 01ce7h,014a5h,00c63h,00421h,07febh,07fa5h,07b41h,06ec0h + .word 06260h,05f8fh,0536bh,04748h,03705h,02ae3h,01ec0h,01a80h + .word 01640h,01600h,011c1h,01181h,00d41h,00d01h,07ef9h,07e55h + .word 07dd1h,07cc8h,07400h,06c00h,06400h,05c00h,05400h,04c00h + .word 04400h,03800h,03000h,02021h,067bfh,03afeh,0227dh,001bbh + .word 00179h,00136h,000f4h,000d2h,0008fh,0006dh,0004bh,00028h + .word 00027h,0626eh,05a0eh,045a9h,04566h,03926h,01c83h,01841h + + \ No newline at end of file diff --git a/IMG/WSFNT10.IMG b/IMG/WSFNT10.IMG new file mode 100644 index 0000000..be8c9fe Binary files /dev/null and b/IMG/WSFNT10.IMG differ diff --git a/IMG/WSFNT14.IMG b/IMG/WSFNT14.IMG new file mode 100644 index 0000000..fc474fd Binary files /dev/null and b/IMG/WSFNT14.IMG differ diff --git a/IMG/WSFNT8.IMG b/IMG/WSFNT8.IMG new file mode 100644 index 0000000..6368a4e Binary files /dev/null and b/IMG/WSFNT8.IMG differ diff --git a/IMG/WWFBLANK.BDB b/IMG/WWFBLANK.BDB new file mode 100755 index 0000000..ca333cd --- /dev/null +++ b/IMG/WWFBLANK.BDB @@ -0,0 +1,6 @@ +WWFblank 2000 1000 255 1 1 4 +wwfblank 696 1241 249 582 +100 767 294 0 0 +100 767 427 3 0 +100 971 294 6 0 +100 971 427 9 0 diff --git a/IMG/WWFBLANK.BDD b/IMG/WWFBLANK.BDD new file mode 100755 index 0000000..82cd9e1 --- /dev/null +++ b/IMG/WWFBLANK.BDD @@ -0,0 +1,1423 @@ +4 +0 204 133 1 +         + +  +    +   + + + +  + + + + + + + + + + + + + +  + + + + +  + + + + + + + + + + + + + + + + + + +  +  +        + + + + + + + + + +  +   + +    + + + + + + +  + +  + + + + + + + + +  + + + + + + + + +  +  +      + + + + + + + + + +  +    + + + + + + + + + + +   +  +  +  + + + + +      +  +    + + + + + + + + +    + + + + +  + + + + + +  + + +  + + +  + +  + +  +   + + +     + + + +  + + + + + + + + + + + +  + +  + + +  +   + + + + + + + + + + +      +  + + + + +    +    +  +   + + + + + + +    + + +   + + +     + + + +  +  + + + + + + +      +   + +    + + + +   +    + + + + +   +    + + + + + + + +  + +  +  +  + + + + +        + +       +      +   +   +  + +  + +   +  + + + +       + +   +      + +  + + +     +   +  + +  +  + +    + +  +  +         + + + +     +  +  + +   + +   + +   + + + +   +  + + + + + + + + + +    +     +    + + + +       + + +        + + + +  + + +   +  +   +  +  +         +       + + +     + + + + + + + +    + + +  + + + +  + + + +      + + +    + +     + + + +             + + + + + +  + +  + +    + + + + + +    + + +    +   +  +  +    + + + +      + + +  + + +     + + + + + +      + + +   +  +   + +  +    +      +       +      +      + + +     + +  +   +  +  + + +  +   + + + + + + +     +   +  +   + +  +       +     +  + +      + + +  +    + +  + +     +   + + + +   + + + + + +             + + +  +    +  + +    + + + +    +  +    + + + +       + +  +  + + + + + +   +   + + + +   + +      + +     + + + +    +  + +   + + +    + + + + + +    +           + +     +   +  + +  + +   + +  +    +     +    + +    + +    +       +    +          + + +  +   +        +  + + + + +   + + +  + + + +   +   +         + + +           +   + +   +      +          +           + +  +     + +        +   + +                     +   + +        + +      + +     +   + + +     + + +     +      +    +  + +                +  +    +     +      +            +     + +                +   +   + +   +          +      + + +     +   + +      +                +        +     + +       +             +    +     +  +   +            +       +      +                       +   +                         +  + +                            +  +                  +       +                  +        +   +      +                 +           +           +                       +  +    +                 +                + + +         +       +         +                 +  +                          +      +   + +                +   +  + +  +           + +                    + +   +           +                    +      +              +            + +      +           +         +         +                   +          +    +     +           +  +        +  +                + + + + + +                +             +                                      +                             + +        + +                         + +     +                     +   + + + +  + +                              +     + +                      +                    +         + +                    + +     +     +  + + + +     +                                    +                                         +                    +           +                          + +    +                                            + +  +           +   +                        +  +  +               +         +                     +    +                         +    +               +     +                           +                                                                                                                                                 + +                 +          +                  +  + +                  +                                                                                                                                                              +          +        + +          +                                   +                                                                                                                                                                                    + +                              +                                                                 +                              +                                                                                                                                                                      +                                          +                                                                                                                                                                                                                                                                                           +                                                                                                                                                                                                           + +                                    +                                                                           +                  + +                                             3 204 119 1 +                                            +    +                      +      +                                                                                         +                                 +                      +       +               + +    +                             +         +                                     +              +                                 +  +                         + + +      + +                 +                         + +                                                               +                    +                                          +                      + +                  +                                                                                            +         +             +      +        +     + +                                              + +  +                                                                                                                                        + +  +            +                                                                                                               +                                                                                                                                                                                                           +      +        +                                        +                                                                               +                                                                                        +                                                    +                                                                            +                                                               +                                               + 6 196 133 1 +     + + + + + + + + + + + + + + +   +  + + + + + + + +                + + + + + + + + +  + + + + +  + + + +  + + + + + + + + +            + + +  +  + + + + + + + + + +   + + + + +  + +  + + + + + + +             + + + + +   + + + + +   + + + +  +  +            + +  + +  + + + + + +  +     + + + + + + +             + + + + + +  + + +  +  + +  + +  + + +  + + +      +   +    + + + + + +  + +      + +          + +  +  + + +  + + + + +   + + +      +     +              +  + + + + + +  +    + +  + +            + + + + + + +  + + + + + + + +  + +  +  + +  +               + + + + + + + + + + + +  +   + +           + + + + + + + + + + + + + + + + + + + +   + + + + +          + + + + + + + + + + + + + + + + + + + + +  + + +                       + + + + +   + + + + + + + + + + + + + + + + +     + +     +    +         + + + + + + + + + + + + +   + + + + + + + + + + + + + + +  + +    +  + + + + +  + +         + + + + + + +  +  + + + + + + + + + + +     +               +  + + + + + + +  +  +               + +      +  + + + + + + +   + + +                     +     + + + + + + + + + + + +                           + + + + + + + + + +   +                  + + + + +  +   +          +     + + + + + +    +                             + +  + +   + + + + +              +     +  + + + +                +                                      +                   +  +                  +     + +   +  +                     + +                               +                    +       + +                     +        + +                              + + + +                        +   + +    +                       +     +    +        +                  +                     +   +          +                 + +                                +                                +         +             +                  +   +        + +                                            +  +      + +                   +                           + + +                        +    +  + +                                   +                         +  + + + +                             + +                               +  + +                      +  +                          +                     +                                       +                              + +   + +                           +                           + +     + +                      +                                                                                      + +                           + +       + +                     + + +  +                                                                                                       + +   +                                                      +     +                  + +                                                                         +                                              +             +  +                   +     +                 +    + +     +            +         +                          +                                                                  + +                             +                 +  +                                                                                              +                                                                                                 +                                                +                                                                            + + +                                                                                                                                                                                                       +                                                                               +                                                                         +                              +                                           +                                 +                                                +                                                                                                                        9 196 119 1 +                                                                                             +                         +                                                                                                                                                                               +                               +                                +         +                                                                                                                   +                   +                         +                                             +      +                                           +                                                                                   +  +          +                                     +                                              +                               + +                                                      +        +                       +                    +  +            +               +    + +                                +                     + +      CSELBK_P 22 + d C !"o% ,M%N%--5-56 \ No newline at end of file diff --git a/IMG/WWFICON.IMG b/IMG/WWFICON.IMG new file mode 100644 index 0000000..62e5e14 Binary files /dev/null and b/IMG/WWFICON.IMG differ diff --git a/IMG/WWFINFO.IMG b/IMG/WWFINFO.IMG new file mode 100644 index 0000000..14f30e2 Binary files /dev/null and b/IMG/WWFINFO.IMG differ diff --git a/IMG/WWFLOGO.IMG b/IMG/WWFLOGO.IMG new file mode 100644 index 0000000..ed1c4bd Binary files /dev/null and b/IMG/WWFLOGO.IMG differ diff --git a/IMG/WWFMUG2.IMG b/IMG/WWFMUG2.IMG new file mode 100644 index 0000000..18a7159 Binary files /dev/null and b/IMG/WWFMUG2.IMG differ diff --git a/IMG/WWFMUGS.IMG b/IMG/WWFMUGS.IMG new file mode 100644 index 0000000..5a352c9 Binary files /dev/null and b/IMG/WWFMUGS.IMG differ diff --git a/IMG/WWFMUGS2.IMG b/IMG/WWFMUGS2.IMG new file mode 100644 index 0000000..3c1b1f1 Binary files /dev/null and b/IMG/WWFMUGS2.IMG differ diff --git a/IMG/WWFOURM3.IMG b/IMG/WWFOURM3.IMG new file mode 100644 index 0000000..64c16e7 Binary files /dev/null and b/IMG/WWFOURM3.IMG differ diff --git a/IMG/WWFSELBK.BDB b/IMG/WWFSELBK.BDB new file mode 100755 index 0000000..4aef58a --- /dev/null +++ b/IMG/WWFSELBK.BDB @@ -0,0 +1,32 @@ +WWFSELBK 2000 1000 255 1 7 30 +wwfselbk 696 1241 249 582 +500 723 307 0 5 +500 723 471 3 6 +100 767 294 6 3 +100 767 427 9 3 +4000 767 545 27 3 +200 777 530 C 0 +200 777 395 F 3 +300 777 330 F 3 +A10 782 469 12 1 +A10 782 324 15 1 +500 923 301 0 5 +500 923 480 3 6 +4000 927 474 18 4 +4000 927 384 18 4 +4000 927 339 18 4 +4000 927 429 18 4 +4000 967 474 18 4 +4000 967 429 18 4 +4000 967 384 18 4 +4000 967 339 18 4 +100 971 294 1B 3 +100 971 427 1E 3 +4000 971 545 2A 3 +A00 1023 324 21 2 +A00 1023 469 24 2 +200 1027 530 C 0 +500 1123 307 0 5 +500 1123 471 3 6 +210 1144 395 F 3 +310 1144 330 F 3 diff --git a/IMG/WWFSELBK.BDD b/IMG/WWFSELBK.BDD new file mode 100755 index 0000000..7bedc61 Binary files /dev/null and b/IMG/WWFSELBK.BDD differ diff --git a/IMG/WWFSELBK.IMG b/IMG/WWFSELBK.IMG new file mode 100644 index 0000000..7de63be Binary files /dev/null and b/IMG/WWFSELBK.IMG differ diff --git a/IMG/WWFSTUF.IMG b/IMG/WWFSTUF.IMG new file mode 100644 index 0000000..39c8771 Binary files /dev/null and b/IMG/WWFSTUF.IMG differ diff --git a/IMG/XPLOSION.IMG b/IMG/XPLOSION.IMG new file mode 100644 index 0000000..1198a5b Binary files /dev/null and b/IMG/XPLOSION.IMG differ diff --git a/IMG/YESNO.BDB b/IMG/YESNO.BDB new file mode 100755 index 0000000..7642221 --- /dev/null +++ b/IMG/YESNO.BDB @@ -0,0 +1,55 @@ +yesno 2000 1000 255 1 4 53 +yesno 448 1041 251 639 +100 461 261 0 0 +200 461 511 3 0 +200 461 265 6 0 +200 461 389 6 0 +200 461 368 6 0 +220 461 515 3 0 +200 467 511 9 0 +100 467 261 9 0 +200 467 389 C 1 +200 467 265 F 1 +200 467 265 12 1 +220 467 515 9 0 +200 467 269 C 1 +200 471 265 15 1 +0 471 268 18 2 +0 471 388 18 2 +0 471 508 18 2 +400 497 288 1B 3 +300 499 289 1E 1 +100 561 261 9 0 +200 561 511 9 0 +220 561 515 9 0 +200 565 265 15 1 +0 651 268 18 2 +0 651 388 18 2 +0 651 508 18 2 +220 654 515 9 0 +100 655 261 9 0 +200 655 511 9 0 +200 660 265 15 1 +100 747 261 9 0 +220 748 515 9 0 +200 749 511 9 0 +200 754 265 15 1 +200 757 511 9 0 +200 757 261 9 0 +220 763 515 9 0 +400 776 288 54 3 +300 777 289 57 1 +0 831 268 18 2 +0 831 388 18 2 +0 831 508 18 2 +100 851 261 5A 0 +100 851 382 6 0 +200 851 389 6 0 +200 851 511 5D 0 +200 851 265 6 0 +210 855 265 6 0 +210 855 387 6 0 +210 855 389 6 0 +210 855 511 5D 0 +110 855 261 5A 0 +220 857 515 5D 0 diff --git a/IMG/YESNO.BDD b/IMG/YESNO.BDD new file mode 100755 index 0000000..83abae3 Binary files /dev/null and b/IMG/YESNO.BDD differ diff --git a/IMG/YOKO.BAT b/IMG/YOKO.BAT new file mode 100644 index 0000000..70f8556 --- /dev/null +++ b/IMG/YOKO.BAT @@ -0,0 +1,7 @@ +@echo off +@wwfld yoko yok_hit yok_kik yok_msc yok_pnc yok_wlk yok_mjt yok_jms yok_jake yok_rjr +@copy yoko.ld1 + yoko.ld2 yoko.lod +@move yoko.h ..\yokoimg.h +@move yoko.seq .. + + \ No newline at end of file diff --git a/IMG/YOKO.IRW b/IMG/YOKO.IRW new file mode 100755 index 0000000..ae6259d Binary files /dev/null and b/IMG/YOKO.IRW differ diff --git a/IMG/YOKO.LD1 b/IMG/YOKO.LD1 new file mode 100644 index 0000000..73fa05e --- /dev/null +++ b/IMG/YOKO.LD1 @@ -0,0 +1,11 @@ +ASM> yokoimg.tbl +***> 2000000,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* YOKOZUNA *************************************************************** +ZON> +MON> +BON> +POF> +; diff --git a/IMG/YOKO.LD2 b/IMG/YOKO.LD2 new file mode 100755 index 0000000..9a969f2 --- /dev/null +++ b/IMG/YOKO.LD2 @@ -0,0 +1,103 @@ +yok_hit.img +---> Y4AH4A01,Y4AH4A02,Y4AH4A03,Y4AH4A04,Y4AH4A05,Y4AH4A06,Y4AH4A07 +---> Y2AH2A01,Y2AH2A02,Y2AH2A03,Y2AH2A04,Y2AH2A05,Y2AH2A06,Y2AH2A07 +---> Y4AE4A01,Y4AE4A02,Y4AE4A03,Y4AE4A04,Y4AE4A05,Y4AE4A06,Y4AE4A07 +---> Y4AE4A08,Y4AE4A09,Y2AM2C01,Y2AM2C02,Y2AM2C03,Y2AM2C04,Y2AM2C05 +---> Y2AM2C06,Y2AM2C07,Y2AM2C08,Y4AM4A01,Y4AM4A02,Y4AM4A03,Y4AM4A04 +---> Y4AM4A05,Y4AM4A06,Y4AM4A07,Y4AM4A08,Y4BK3A03,Y4BK3A05,Y4BK3A06 +---> Y4PB3A01,Y4PB3A02,Y4PB3A03,Y4PB3A04,Y4PB3A05,Y4PB3A06,Y4PB3A07 +---> Y4PB3A08,Y4PB3A09,Y3CP3B01,Y3CP3B02,Y3CP3B03,Y3CP3B04,Y3CP3B05 +---> Y3CP3B06,Y3CP3B07,Y3CP3B08,Y3FD3A01,Y3FD3A02,Y3FD3A03,Y3FD3A04 +---> Y3FD3A05,Y3FD3A06,Y3FD3A07,Y3GU2A01,Y3GU2A02,Y3GU2A03,Y3GU2A04 +---> Y3GU2A06,Y3GU2A07,Y3GU2A08,Y3GU2A10,Y3GU2A11,Y3GU2A12,Y3GU2A13 +---> Y3GU2A14,Y3GU4A13,Y3GU4A14 +yok_kik.img +---> Y4KM3A01,Y4KM3A02,Y4KM3A03,Y4KM3A04,Y4KM3A05,Y4KM3A06,Y4KM3A07 +---> Y4KM3A08,Y4KM3A09,Y4KM3A10,Y4KM3A11,Y2KM3A01,Y2KM3A10,Y2KM3A11 +---> Y4NM3B01,Y4NM3B02,Y4NM3B03,Y4NM3B04,Y4NM3B05,Y4NM3B06,Y4NM3B07 +---> Y4NM3B08,Y4NM3B09,Y2NM3A07,Y2NM3A08,Y2NM3A09,Y2KB3A05,Y2KB3A06 +---> Y2KB3A07,Y4KB3A03,Y4KB3A04,Y4KB3A05,Y4KB3A06,Y4KB3A07,Y4KB3A08 +---> Y4KB3A09,Y4KB3A10 +yok_msc.img +---> Y4GF3B02,Y4GF3B03,Y4GF3B04,Y4GF3B05,Y4GF3B06,Y4GF3B07,Y4GF3B08 +---> Y4GF3B09,Y4TI4C04,Y4TI4C05,Y4TI4C06,Y4TI4C07,Y4TI4C08,Y3BF3A01 +---> Y3BF3A03,Y3BF3A05,Y3BF3A07,Y3BF3A09,Y3BF3A11,Y3RL1A01,Y3RL1A02 +---> Y3RL1A03,Y3RL1A04,Y3RL1A05,Y3RL1A06,Y3RL1A07,Y3RL1A08,Y3RL1A09 +---> Y3RL1A10,Y3MF3B01,Y3MF3B02,Y3MF3B03,Y3MF3B04,Y3MF3B05,Y3MF3B06 +---> Y3MF3B07,Y3LB3A09 +yok_pnc.img +---> Y4PU4G01,Y4PU4G02,Y4PU4G03,Y4PU4G04,Y4PU4G05,Y4PU4G06,Y4PU4G07 +---> Y4PU4G08,Y4PU4G09,Y4JB3A01,Y4JB3A02,Y4JB3A03,Y4JB3A04,Y4JB3A05 +---> Y4JB3A06,Y4JB3A07,Y4PS3B01,Y4PS3B02,Y4PS3B03,Y4PS3B04,Y4PS3B05 +---> Y4PS3B06,Y4PS3B07,Y4PS3B08,Y4PS3B09,Y4PS3B10,Y4PU4B01,Y4PU4B02 +---> Y4PU4B03,Y4PU4B04,Y4PU4B05,Y4PU4B06,Y4PU4B07,Y4PU4B08,Y4PU4B09 +---> Y2PU2A01,Y2PU2A02,Y2PU2A03,Y2PU2A04,Y2PU2A05,Y2PU2A06,Y2PU2A07 +---> Y2PU2A08,Y2PU2A09,Y2PU2A10,Y4UP3B01,Y4UP3B02,Y4UP3B03,Y4UP3B04 +---> Y4UP3B05,Y4UP3B06,Y4UP3B07,Y4UP3B08,Y4UP3B09,Y4PS3A03,Y4PS3A04 +---> Y4PS3A05,Y4PS3A06 +yok_wlk.img +---> Y4WL4B01,Y4WL4B03,Y4WL4B05,Y4WL4B07,Y4WL4B09,Y4WL4B11,Y4WL4B13 +---> Y4WL4B15,Y4WL4B17,Y4WL4B19,Y4WL4B21,Y4WL4B23,Y4WL2C01,Y4WL2C03 +---> Y4WL2C05,Y4WL2C07,Y4WL2C09,Y4WL2C11,Y4WL2C13,Y4WL2C15,Y4WL2C17 +---> Y4WL2C19,Y4WL5A01,Y4WL5A03,Y4WL5A05,Y4WL5A07,Y4WL5A09,Y4WL5A11 +---> Y4WL5A13,Y4WL5A15,Y4WL5A17,Y4WL5A19,Y4WL5A21,Y4WL5A23,Y2WL1A01 +---> Y2WL1A03,Y2WL1A05,Y2WL1A07,Y2WL1A09,Y2WL1A11,Y2WL1A13,Y2WL1A15 +---> Y2WL1A17,Y2WL1A19,Y2WL1A21,Y2WL2Z01,Y2WL2Z03,Y2WL2Z05,Y2WL2Z07 +---> Y2WL2Z09,Y2WL2Z11,Y2WL2Z13,Y2WL2Z15,Y2WL2Z17,Y2WL2Z19,Y2WL8C01 +---> Y2WL8C03,Y2WL8C05,Y2WL8C07,Y2WL8C09,Y2WL8C11,Y2WL8C13,Y2WL8C15 +---> Y2WL8C17,Y2WL8C19,Y2WL8C21,Y1TT5Z01,Y1TT5Z02,Y1TT5Z03,Y1TT5Z04 +---> Y2ST2Z02,Y2ST2Z03,Y2ST2Z04,Y2ST2Z05,Y2ST2Z06,Y4ST4Y02,Y4ST4Y03 +---> Y4ST4Y04,Y4ST4Y05,Y4ST4Y06,Y3BO3C01,Y3BO3C02,Y3BO3C03,Y3BO3C04 +---> Y3BO3C05,Y3BO3C06,Y3BO3C07,Y3BO3C08,Y3BO3C09,Y3BO3C10,Y1TR5Z01 +---> Y1TR5Z04,Y1TR5Z05,Y1TR5Z06,Y1TR5Z08,Y1TR5Z09,Y4TW4X01,Y4TW4X02 +---> Y4TW4X03,Y4TW4X04,Y2TW2X01,Y2TW2X02,Y2TW2X03,Y2TW2X04 +yok_mjt.img +---> Y3ZS3A01,Y3ZS3A02,Y3ZS3A03,Y4SU4A01,Y4SU4A02,Y4SU4A03,Y4SU4A04 +---> Y4SU4B01,Y4SU4B02,Y4SU4B03,Y4SU4B04,Y4SU4B05,Y4SU4B06,Y4SU4B07 +---> Y4SU4B08,Y4SU4B09,Y4SU4B10,Y3JK3Z05,Y3AB3A01,Y3AB3A03,Y3AB3A04 +---> Y4RP3A02,Y4RP3A03,Y4RP3A04,Y4RP3A05,Y4RP3A06,Y4RP3A07,Y4POGO01 +---> Y4POGO03,Y4POGO04,Y4GH3C02,Y4GH3C03,Y4GH3C04,Y4GH3C05,Y4GH3C07 +---> Y4GH3C08,Y3PF3C01,Y3PF3C02,Y3PF3C03,Y3PF3C04,Y3PF3C05,Y3PF3C06 +---> Y3PF3C07,Y3PF3C08,Y3PF3C09,Y3PF3C10,Y3PF3C11,Y3PF3C12,Y5GU4B01 +---> Y5GU4B02,Y5GU4B03,Y5GU4B04,Y5GU4B05,Y5GU4V06,Y5GU4B07,Y5GU4B08 +---> Y5RV5A01,Y5RV5A02,Y5RV5A03,Y5RV5A04,Y5RV5A05,Y5RV5A06,Y5RV5A07 +---> Y5RV5A08,Y5RV5A09,Y5RV5A10,Y5RV5A11,Y5RV5A12,Y3BR3Z01,Y3BR3Z02 +---> Y3PP3Q01,Y3PP3Q02,Y3PP3Q03,Y3PP3Q04,Y3PP3Q06,Y3PP3Q07,Y3FD3N01 +---> Y3FD3N02,Y3FD3N03,Y3FD3N04,Y3FD3N05,Y3FD3N06,Y3FD3N07,Y3FD3N08 +---> Y3FL3W01,Y3FL3W02,Y3FL3W03,Y3FL3W04,Y3FL3W05,Y3FL3W06,Y3FL3W07 +---> Y3MS3Z01,Y3MS3Z02,Y3MS3Z03,Y3MS3Z04,Y3MS3Z05,Y3MS3Z06,Y3KF3B01 +---> Y3KF3B02,Y3KF3B03,Y3KF3B04,Y3KF3B05,Y3KF3B06,Y4LD4A01,Y4LD4A02 +---> Y4LD4A03,Y4LD4A04,Y4LD4A05,Y4LD4A06,Y4CO4D01,Y4CO4D02,Y4CO4D03 +---> Y4CO4D04,Y4CO4D05,Y4CO4D06,Y4CO4D07,Y4CO4D08,Y4WS4A01,Y4WS4A02 +---> Y4WS4A03,Y4WS4A04,Y4WS4A05,Y4WS4A06,Y4WS4A07,Y4WS4A08,Y4GH3C09 +---> Y3RN3C01,Y3RN3C02,Y3RN3C03,Y3RN3C04,Y3RN3C05,Y3RN3C06,Y3RN3C07 +---> Y3RN3C08,Y3RN3C09,Y3RN3C10,Y3RN3C11,Y3RN3C12,Y4YR3A01,Y4YR3A04 +---> Y4YR3A05,Y4YR3A07,Y4BZ4A01 +yok_jms.img +---> Y4MP4A01,Y4MP4A02,Y4MP4A03,Y4MP4A04,Y4MP4A05,Y4MP4A06,Y4MP4A07 +---> Y4MP4A08,Y4MP4A09,Y4MP4A10,Y2MP2A01,Y2MP2A02,Y2MP2A03,Y2MP2A04 +---> Y2MP2A05,Y2MP2A06,Y2MP2A07,Y2MP2A08,Y2MP2A09,Y2MP2A10,Y2PF2A01 +---> Y2PF2A02,Y2PF2A03,Y2PF2A04,Y2PF2A05,Y2PF2A06,Y2PF2A07,Y2PF2A08 +---> Y2PF2A09,Y3PF3A01,Y3PF3A03,Y3PF3A04,Y3PF3A05,Y3PF3A06,Y3PF3A07 +---> Y3PF3A08,Y3PF3A09,Y3JK3A01,Y3JK3A02,Y3JK3A03,Y3JK3A04,Y3JK3A05 +---> Y3JK3A06,Y3JK3A07,Y3JK3A08,Y2CT2Z01,Y2CT2Z02,Y2CT2Z03,Y2CT2Z04 +---> Y2CT2Z05,Y2CT2Z06,Y2CT2Z07,Y2CT2Z08,Y2ZZ2X01,Y2ZZ2X02,Y2ZZ2X03 +---> Y2ZZ2X04,Y2ZZ2X05,Y2ZZ2X06,Y2ZZ2X07,Y3RR3Z02,Y3RR3Z03,Y3RR3Z04 +---> Y3RR3Z05,Y3RR3Z06,Y3RR3Z07,Y3RR3Z09 +yok_jake.img +---> Y4WA4A01,Y4WA4A02,Y4WA4A03,Y4WA4A04,Y4WA4A05,Y4WA4A06,Y4WA4A07 +---> Y4WA4A08,Y4WA4A09,Y4CS4A02,Y4CS4A03,Y4CS4A04,Y4CS4A05,Y4CS4A06 +---> Y4CS4A07,Y4CS4A08,Y4CS4A09,Y4CR3B01,Y4CR3B02,Y4CR3B03,Y4CR3B04 +---> Y4CR3B05,Y4CR3B06,Y4CR3B08,Y4CR3B09,Y4CR3B10,Y4CR3B11,Y4CR3B12 +---> Y4JD4A03,Y4JD4A05,Y4JD4A06,Y4JD4A07,Y4JD4A08 +yok_rjr.img +---> Y4CD3A01,Y4CD3A02,Y4CD3A04,Y4CD3A07,Y4CD3A08,Y4CD3A09,Y4CD3Z01 +---> Y4CD3Z02,Y4HT3Z01,Y3GS3A02,Y3GS3A03,Y5JS5A01,Y5JS5A02,Y5JS5A03 +---> Y5JS5A04,Y5JS5A05,Y5JS5A06,Y5JS5F02,Y5JS5F03,Y5JS5F04,Y5JS5F05 +---> Y5JS5F06,Y4OT3A01,Y4OT3A02,Y4OT3A03,Y4OT3A04,Y4OT3A05,Y4OT3A06 +---> Y4OT3A07,Y4OT3A08,Y4OT3F01,Y4OT3F02,Y4OT3F03,Y4OT3F04,Y3RS3A01 +---> Y3RS3A02,Y3RS3A03,Y3RS3A04,Y3RS3A05,Y3RS3A06,Y4PO4X01,Y4PO4X02 +---> Y4PO4X03,Y4PO4X04,Y4PO4X05,Y4PO4X06,Y4PO4X07,Y4PO4X08,Y4LZ3A01 +---> Y4LZ3A02,Y4LZ3A03,Y4LZ3A04,Y4LZ3A05,Y4LZ3A06,Y4LZ3A07,Y4LZ3A08 +---> Y4LZ3A09,Y3FD3B02,Y3FD3B03,Y3FD3B04,Y3FD3B05,Y3FD3Z07,Y3TN3Z01 +---> Y3TN3Z02,Y3TN3Z03,Y3TN3Z04,Y3TN3Z05,Y4PO4Z01 diff --git a/IMG/YOKO.LOD b/IMG/YOKO.LOD new file mode 100644 index 0000000..4fd71f3 --- /dev/null +++ b/IMG/YOKO.LOD @@ -0,0 +1,115 @@ +ASM> yokoimg.tbl +***> 2000000,0 +; +IHDR SIZX:W,SIZY:W,ANIX:W,ANIY:W,SAG:L,CTRL:W,PAL:L,PWRD1:W,PWRD2:W,PWRD3:W,PT3Y:W +; +;* YOKOZUNA *************************************************************** +ZON> +MON> +BON> +POF> +; +yok_hit.img +---> Y4AH4A01,Y4AH4A02,Y4AH4A03,Y4AH4A04,Y4AH4A05,Y4AH4A06,Y4AH4A07 +---> Y2AH2A01,Y2AH2A02,Y2AH2A03,Y2AH2A04,Y2AH2A05,Y2AH2A06,Y2AH2A07 +---> Y4AE4A01,Y4AE4A02,Y4AE4A03,Y4AE4A04,Y4AE4A05,Y4AE4A06,Y4AE4A07 +---> Y4AE4A08,Y4AE4A09,Y2AM2C01,Y2AM2C02,Y2AM2C03,Y2AM2C04,Y2AM2C05 +---> Y2AM2C06,Y2AM2C07,Y2AM2C08,Y4AM4A01,Y4AM4A02,Y4AM4A03,Y4AM4A04 +---> Y4AM4A05,Y4AM4A06,Y4AM4A07,Y4AM4A08,Y4BK3A03,Y4BK3A05,Y4BK3A06 +---> Y4PB3A01,Y4PB3A02,Y4PB3A03,Y4PB3A04,Y4PB3A05,Y4PB3A06,Y4PB3A07 +---> Y4PB3A08,Y4PB3A09,Y3CP3B01,Y3CP3B02,Y3CP3B03,Y3CP3B04,Y3CP3B05 +---> Y3CP3B06,Y3CP3B07,Y3CP3B08,Y3FD3A01,Y3FD3A02,Y3FD3A03,Y3FD3A04 +---> Y3FD3A05,Y3FD3A06,Y3FD3A07,Y3GU2A01,Y3GU2A02,Y3GU2A03,Y3GU2A04 +---> Y3GU2A06,Y3GU2A07,Y3GU2A08,Y3GU2A10,Y3GU2A11,Y3GU2A12,Y3GU2A13 +---> Y3GU2A14,Y3GU4A13,Y3GU4A14 +yok_kik.img +---> Y4KM3A01,Y4KM3A02,Y4KM3A03,Y4KM3A04,Y4KM3A05,Y4KM3A06,Y4KM3A07 +---> Y4KM3A08,Y4KM3A09,Y4KM3A10,Y4KM3A11,Y2KM3A01,Y2KM3A10,Y2KM3A11 +---> Y4NM3B01,Y4NM3B02,Y4NM3B03,Y4NM3B04,Y4NM3B05,Y4NM3B06,Y4NM3B07 +---> Y4NM3B08,Y4NM3B09,Y2NM3A07,Y2NM3A08,Y2NM3A09,Y2KB3A05,Y2KB3A06 +---> Y2KB3A07,Y4KB3A03,Y4KB3A04,Y4KB3A05,Y4KB3A06,Y4KB3A07,Y4KB3A08 +---> Y4KB3A09,Y4KB3A10 +yok_msc.img +---> Y4GF3B02,Y4GF3B03,Y4GF3B04,Y4GF3B05,Y4GF3B06,Y4GF3B07,Y4GF3B08 +---> Y4GF3B09,Y4TI4C04,Y4TI4C05,Y4TI4C06,Y4TI4C07,Y4TI4C08,Y3BF3A01 +---> Y3BF3A03,Y3BF3A05,Y3BF3A07,Y3BF3A09,Y3BF3A11,Y3RL1A01,Y3RL1A02 +---> Y3RL1A03,Y3RL1A04,Y3RL1A05,Y3RL1A06,Y3RL1A07,Y3RL1A08,Y3RL1A09 +---> Y3RL1A10,Y3MF3B01,Y3MF3B02,Y3MF3B03,Y3MF3B04,Y3MF3B05,Y3MF3B06 +---> Y3MF3B07,Y3LB3A09 +yok_pnc.img +---> Y4PU4G01,Y4PU4G02,Y4PU4G03,Y4PU4G04,Y4PU4G05,Y4PU4G06,Y4PU4G07 +---> Y4PU4G08,Y4PU4G09,Y4JB3A01,Y4JB3A02,Y4JB3A03,Y4JB3A04,Y4JB3A05 +---> Y4JB3A06,Y4JB3A07,Y4PS3B01,Y4PS3B02,Y4PS3B03,Y4PS3B04,Y4PS3B05 +---> Y4PS3B06,Y4PS3B07,Y4PS3B08,Y4PS3B09,Y4PS3B10,Y4PU4B01,Y4PU4B02 +---> Y4PU4B03,Y4PU4B04,Y4PU4B05,Y4PU4B06,Y4PU4B07,Y4PU4B08,Y4PU4B09 +---> Y2PU2A01,Y2PU2A02,Y2PU2A03,Y2PU2A04,Y2PU2A05,Y2PU2A06,Y2PU2A07 +---> Y2PU2A08,Y2PU2A09,Y2PU2A10,Y4UP3B01,Y4UP3B02,Y4UP3B03,Y4UP3B04 +---> Y4UP3B05,Y4UP3B06,Y4UP3B07,Y4UP3B08,Y4UP3B09,Y4PS3A03,Y4PS3A04 +---> Y4PS3A05,Y4PS3A06 +yok_wlk.img +---> Y4WL4B01,Y4WL4B03,Y4WL4B05,Y4WL4B07,Y4WL4B09,Y4WL4B11,Y4WL4B13 +---> Y4WL4B15,Y4WL4B17,Y4WL4B19,Y4WL4B21,Y4WL4B23,Y4WL2C01,Y4WL2C03 +---> Y4WL2C05,Y4WL2C07,Y4WL2C09,Y4WL2C11,Y4WL2C13,Y4WL2C15,Y4WL2C17 +---> Y4WL2C19,Y4WL5A01,Y4WL5A03,Y4WL5A05,Y4WL5A07,Y4WL5A09,Y4WL5A11 +---> Y4WL5A13,Y4WL5A15,Y4WL5A17,Y4WL5A19,Y4WL5A21,Y4WL5A23,Y2WL1A01 +---> Y2WL1A03,Y2WL1A05,Y2WL1A07,Y2WL1A09,Y2WL1A11,Y2WL1A13,Y2WL1A15 +---> Y2WL1A17,Y2WL1A19,Y2WL1A21,Y2WL2Z01,Y2WL2Z03,Y2WL2Z05,Y2WL2Z07 +---> Y2WL2Z09,Y2WL2Z11,Y2WL2Z13,Y2WL2Z15,Y2WL2Z17,Y2WL2Z19,Y2WL8C01 +---> Y2WL8C03,Y2WL8C05,Y2WL8C07,Y2WL8C09,Y2WL8C11,Y2WL8C13,Y2WL8C15 +---> Y2WL8C17,Y2WL8C19,Y2WL8C21,Y1TT5Z01,Y1TT5Z02,Y1TT5Z03,Y1TT5Z04 +---> Y2ST2Z02,Y2ST2Z03,Y2ST2Z04,Y2ST2Z05,Y2ST2Z06,Y4ST4Y02,Y4ST4Y03 +---> Y4ST4Y04,Y4ST4Y05,Y4ST4Y06,Y3BO3C01,Y3BO3C02,Y3BO3C03,Y3BO3C04 +---> Y3BO3C05,Y3BO3C06,Y3BO3C07,Y3BO3C08,Y3BO3C09,Y3BO3C10,Y1TR5Z01 +---> Y1TR5Z04,Y1TR5Z05,Y1TR5Z06,Y1TR5Z08,Y1TR5Z09,Y4TW4X01,Y4TW4X02 +---> Y4TW4X03,Y4TW4X04,Y2TW2X01,Y2TW2X02,Y2TW2X03,Y2TW2X04 +yok_mjt.img +---> Y3ZS3A01,Y3ZS3A02,Y3ZS3A03,Y4SU4A01,Y4SU4A02,Y4SU4A03,Y4SU4A04 +---> Y4SU4B01,Y4SU4B02,Y4SU4B03,Y4SU4B04,Y4SU4B05,Y4SU4B06,Y4SU4B07 +---> Y4SU4B08,Y4SU4B09,Y4SU4B10,Y3JK3Z05,Y3AB3A01,Y3AB3A03,Y3AB3A04 +---> Y4RP3A02,Y4RP3A03,Y4RP3A04,Y4RP3A05,Y4RP3A06,Y4RP3A07,Y4POGO01 +---> Y4POGO03,Y4POGO04,Y4GH3C02,Y4GH3C03,Y4GH3C04,Y4GH3C05,Y4GH3C07 +---> Y4GH3C08,Y3PF3C01,Y3PF3C02,Y3PF3C03,Y3PF3C04,Y3PF3C05,Y3PF3C06 +---> Y3PF3C07,Y3PF3C08,Y3PF3C09,Y3PF3C10,Y3PF3C11,Y3PF3C12,Y5GU4B01 +---> Y5GU4B02,Y5GU4B03,Y5GU4B04,Y5GU4B05,Y5GU4V06,Y5GU4B07,Y5GU4B08 +---> Y5RV5A01,Y5RV5A02,Y5RV5A03,Y5RV5A04,Y5RV5A05,Y5RV5A06,Y5RV5A07 +---> Y5RV5A08,Y5RV5A09,Y5RV5A10,Y5RV5A11,Y5RV5A12,Y3BR3Z01,Y3BR3Z02 +---> Y3PP3Q01,Y3PP3Q02,Y3PP3Q03,Y3PP3Q04,Y3PP3Q06,Y3PP3Q07,Y3FD3N01 +---> Y3FD3N02,Y3FD3N03,Y3FD3N04,Y3FD3N05,Y3FD3N06,Y3FD3N07,Y3FD3N08 +---> Y3FL3W01,Y3FL3W02,Y3FL3W03,Y3FL3W04,Y3FL3W05,Y3FL3W06,Y3FL3W07 +---> Y3MS3Z01,Y3MS3Z02,Y3MS3Z03,Y3MS3Z04,Y3MS3Z05,Y3MS3Z06,Y3KF3B01 +---> Y3KF3B02,Y3KF3B03,Y3KF3B04,Y3KF3B05,Y3KF3B06,Y4LD4A01,Y4LD4A02 +---> Y4LD4A03,Y4LD4A04,Y4LD4A05,Y4LD4A06,Y4CO4D01,Y4CO4D02,Y4CO4D03 +---> Y4CO4D04,Y4CO4D05,Y4CO4D06,Y4CO4D07,Y4CO4D08,Y4WS4A01,Y4WS4A02 +---> Y4WS4A03,Y4WS4A04,Y4WS4A05,Y4WS4A06,Y4WS4A07,Y4WS4A08,Y4GH3C09 +---> Y3RN3C01,Y3RN3C02,Y3RN3C03,Y3RN3C04,Y3RN3C05,Y3RN3C06,Y3RN3C07 +---> Y3RN3C08,Y3RN3C09,Y3RN3C10,Y3RN3C11,Y3RN3C12,Y4YR3A01,Y4YR3A04 +---> Y4YR3A05,Y4YR3A07,Y4BZ4A01 +yok_jms.img +---> Y4MP4A01,Y4MP4A02,Y4MP4A03,Y4MP4A04,Y4MP4A05,Y4MP4A06,Y4MP4A07 +---> Y4MP4A08,Y4MP4A09,Y4MP4A10,Y2MP2A01,Y2MP2A02,Y2MP2A03,Y2MP2A04 +---> Y2MP2A05,Y2MP2A06,Y2MP2A07,Y2MP2A08,Y2MP2A09,Y2MP2A10,Y2PF2A01 +---> Y2PF2A02,Y2PF2A03,Y2PF2A04,Y2PF2A05,Y2PF2A06,Y2PF2A07,Y2PF2A08 +---> Y2PF2A09,Y3PF3A01,Y3PF3A03,Y3PF3A04,Y3PF3A05,Y3PF3A06,Y3PF3A07 +---> Y3PF3A08,Y3PF3A09,Y3JK3A01,Y3JK3A02,Y3JK3A03,Y3JK3A04,Y3JK3A05 +---> Y3JK3A06,Y3JK3A07,Y3JK3A08,Y2CT2Z01,Y2CT2Z02,Y2CT2Z03,Y2CT2Z04 +---> Y2CT2Z05,Y2CT2Z06,Y2CT2Z07,Y2CT2Z08,Y2ZZ2X01,Y2ZZ2X02,Y2ZZ2X03 +---> Y2ZZ2X04,Y2ZZ2X05,Y2ZZ2X06,Y2ZZ2X07,Y3RR3Z02,Y3RR3Z03,Y3RR3Z04 +---> Y3RR3Z05,Y3RR3Z06,Y3RR3Z07,Y3RR3Z09 +yok_jake.img +---> Y4WA4A01,Y4WA4A02,Y4WA4A03,Y4WA4A04,Y4WA4A05,Y4WA4A06,Y4WA4A07 +---> Y4WA4A08,Y4WA4A09,Y4CS4A02,Y4CS4A03,Y4CS4A04,Y4CS4A05,Y4CS4A06 +---> Y4CS4A07,Y4CS4A08,Y4CS4A09,Y4CR3B01,Y4CR3B02,Y4CR3B03,Y4CR3B04 +---> Y4CR3B05,Y4CR3B06,Y4CR3B08,Y4CR3B09,Y4CR3B10,Y4CR3B11,Y4CR3B12 +---> Y4JD4A03,Y4JD4A05,Y4JD4A06,Y4JD4A07,Y4JD4A08 +yok_rjr.img +---> Y4CD3A01,Y4CD3A02,Y4CD3A04,Y4CD3A07,Y4CD3A08,Y4CD3A09,Y4CD3Z01 +---> Y4CD3Z02,Y4HT3Z01,Y3GS3A02,Y3GS3A03,Y5JS5A01,Y5JS5A02,Y5JS5A03 +---> Y5JS5A04,Y5JS5A05,Y5JS5A06,Y5JS5F02,Y5JS5F03,Y5JS5F04,Y5JS5F05 +---> Y5JS5F06,Y4OT3A01,Y4OT3A02,Y4OT3A03,Y4OT3A04,Y4OT3A05,Y4OT3A06 +---> Y4OT3A07,Y4OT3A08,Y4OT3F01,Y4OT3F02,Y4OT3F03,Y4OT3F04,Y3RS3A01 +---> Y3RS3A02,Y3RS3A03,Y3RS3A04,Y3RS3A05,Y3RS3A06,Y4PO4X01,Y4PO4X02 +---> Y4PO4X03,Y4PO4X04,Y4PO4X05,Y4PO4X06,Y4PO4X07,Y4PO4X08,Y4LZ3A01 +---> Y4LZ3A02,Y4LZ3A03,Y4LZ3A04,Y4LZ3A05,Y4LZ3A06,Y4LZ3A07,Y4LZ3A08 +---> Y4LZ3A09,Y3FD3B02,Y3FD3B03,Y3FD3B04,Y3FD3B05,Y3FD3Z07,Y3TN3Z01 +---> Y3TN3Z02,Y3TN3Z03,Y3TN3Z04,Y3TN3Z05,Y4PO4Z01 + \ No newline at end of file diff --git a/IMG/YOKPRP_P.SRC b/IMG/YOKPRP_P.SRC new file mode 100755 index 0000000..b8eb01d --- /dev/null +++ b/IMG/YOKPRP_P.SRC @@ -0,0 +1,10 @@ +YOKPRP_P: + .word 64 + .word 00000h,07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04a52h + .word 04210h,039ceh,0318ch,0294ah,02108h,014a5h,00c63h,00421h + .word 00400h,07f9ah,07b14h,07ef1h,07acfh,076b0h,0768eh,06e4bh + .word 06a4dh,0622ch,0660bh,05a0ch,059eah,051a8h,05187h,04988h + .word 04966h,04124h,04102h,03904h,038e2h,030a1h,03480h,02881h + .word 02840h,02400h,01400h,06e9bh,06dbbh,0691ah,060d8h,05cf7h + .word 054b5h,05094h,04cb3h,04872h,04852h,04471h,04050h,03c6fh + .word 03c4fh,0342dh,0300ch,02c2bh,02c0bh,02409h,01c07h,01004h diff --git a/IMG/YOKRED_P.SRC b/IMG/YOKRED_P.SRC new file mode 100755 index 0000000..d7c05f7 --- /dev/null +++ b/IMG/YOKRED_P.SRC @@ -0,0 +1,10 @@ +YOKRED_P: + .word 64 + .word 00000h,07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04a52h + .word 04210h,039ceh,0318ch,0294ah,02108h,014a5h,00c63h,00421h + .word 00400h,07f9ah,07b14h,07ef1h,07acfh,076b0h,0768eh,06e4bh + .word 06a4dh,0622ch,0660bh,05a0ch,059eah,051a8h,05187h,04988h + .word 04966h,04124h,04102h,03904h,038e2h,030a1h,03480h,02881h + .word 02840h,02400h,01400h,07e91h,07daah,07905h,070c3h,06ce4h + .word 064a2h,06081h,05ca2h,05860h,05840h,05460h,05040h,04c60h + .word 04c40h,04420h,04000h,03c20h,03c00h,03400h,02c00h,02000h diff --git a/IMG/YOKSTAND.IMG b/IMG/YOKSTAND.IMG new file mode 100755 index 0000000..ca281a1 Binary files /dev/null and b/IMG/YOKSTAND.IMG differ diff --git a/IMG/YOK_HIT.IMG b/IMG/YOK_HIT.IMG new file mode 100644 index 0000000..11133c4 Binary files /dev/null and b/IMG/YOK_HIT.IMG differ diff --git a/IMG/YOK_HITO.IMG b/IMG/YOK_HITO.IMG new file mode 100755 index 0000000..11133c4 Binary files /dev/null and b/IMG/YOK_HITO.IMG differ diff --git a/IMG/YOK_JAKE.IMG b/IMG/YOK_JAKE.IMG new file mode 100644 index 0000000..8a36fb7 Binary files /dev/null and b/IMG/YOK_JAKE.IMG differ diff --git a/IMG/YOK_JMS.IMG b/IMG/YOK_JMS.IMG new file mode 100644 index 0000000..9800769 Binary files /dev/null and b/IMG/YOK_JMS.IMG differ diff --git a/IMG/YOK_KIK.IMG b/IMG/YOK_KIK.IMG new file mode 100644 index 0000000..3b4749b Binary files /dev/null and b/IMG/YOK_KIK.IMG differ diff --git a/IMG/YOK_MJT.IMG b/IMG/YOK_MJT.IMG new file mode 100644 index 0000000..12814be Binary files /dev/null and b/IMG/YOK_MJT.IMG differ diff --git a/IMG/YOK_MSC.IMG b/IMG/YOK_MSC.IMG new file mode 100644 index 0000000..93776c4 Binary files /dev/null and b/IMG/YOK_MSC.IMG differ diff --git a/IMG/YOK_MSCO.IMG b/IMG/YOK_MSCO.IMG new file mode 100755 index 0000000..93776c4 Binary files /dev/null and b/IMG/YOK_MSCO.IMG differ diff --git a/IMG/YOK_PNC.IMG b/IMG/YOK_PNC.IMG new file mode 100644 index 0000000..1139ae1 Binary files /dev/null and b/IMG/YOK_PNC.IMG differ diff --git a/IMG/YOK_RJR.IMG b/IMG/YOK_RJR.IMG new file mode 100644 index 0000000..cc1a4e8 Binary files /dev/null and b/IMG/YOK_RJR.IMG differ diff --git a/IMG/YOK_RJRO.IMG b/IMG/YOK_RJRO.IMG new file mode 100755 index 0000000..cc1a4e8 Binary files /dev/null and b/IMG/YOK_RJRO.IMG differ diff --git a/IMG/YOK_TRSO.IMG b/IMG/YOK_TRSO.IMG new file mode 100755 index 0000000..eeee4c4 Binary files /dev/null and b/IMG/YOK_TRSO.IMG differ diff --git a/IMG/YOK_WLK.IMG b/IMG/YOK_WLK.IMG new file mode 100644 index 0000000..6286e90 Binary files /dev/null and b/IMG/YOK_WLK.IMG differ diff --git a/IMG/YOK_XXX.IMG b/IMG/YOK_XXX.IMG new file mode 100644 index 0000000..d0d3c63 Binary files /dev/null and b/IMG/YOK_XXX.IMG differ diff --git a/IMG/_BACKUP_.LBM b/IMG/_BACKUP_.LBM new file mode 100755 index 0000000..01cda90 Binary files /dev/null and b/IMG/_BACKUP_.LBM differ diff --git a/IMG/_L2TEMP b/IMG/_L2TEMP new file mode 100755 index 0000000..e516c80 Binary files /dev/null and b/IMG/_L2TEMP differ diff --git a/IMG/_LEXPNC.IMG b/IMG/_LEXPNC.IMG new file mode 100644 index 0000000..4dc4fcc Binary files /dev/null and b/IMG/_LEXPNC.IMG differ diff --git a/IMG/_MARKER_.IMG b/IMG/_MARKER_.IMG new file mode 100755 index 0000000..08e7df1 Binary files /dev/null and b/IMG/_MARKER_.IMG differ diff --git a/IMGFIND.CMD b/IMGFIND.CMD new file mode 100755 index 0000000..449da73 --- /dev/null +++ b/IMGFIND.CMD @@ -0,0 +1,25 @@ +lod> bam.lod bret.lod doink.lod lex.lod main.lod misc.lod +lod> razor.lod shawn.lod taker.lod yoko.lod + +asm> adjust.asm anim.asm attract.asm audit.asm award.asm bakgnd.asm +asm> bam.asm bamimg.asm bgndpal.asm bgndtbl.asm bret.asm bretimg.asm +asm> coll2.asm collis.asm crowd.asm dcssound.asm diag.asm display.asm +asm> doink.asm doinkimg.asm drone.asm finiseq.asm firework.asm getup.asm +asm> hstd.asm imgpal.asm lex.asm leximg.asm lifebar.asm main.asm menu.asm +asm> miscimg.asm mproc.asm pal.asm patch.asm progress.asm razor.asm +asm> razorimg.asm react1.asm react2.asm react3.asm react4.asm react5.asm +asm> react6.asm react7.asm react8.asm react9.asm robo.asm ropeimg.asm +asm> ropes.asm screen.asm select.asm shawn.asm shawnimg.asm special.asm +asm> square.asm stories.asm string.asm tables.asm taker.asm takerimg.asm +asm> test.asm text.asm util.asm wrespal.asm wrestle.asm wrestle2.asm +asm> yoko.asm yokoimg.asm + +asm> bamseq1.asm bamseq2.asm bamseq3.asm bamseq4.asm +asm> dnkseq1.asm dnkseq2.asm dnkseq3.asm dnkseq4.asm +asm> hrtseq1.asm hrtseq2.asm hrtseq3.asm hrtseq4.asm +asm> lexseq1.asm lexseq2.asm lexseq3.asm lexseq4.asm +asm> rzrseq1.asm rzrseq2.asm rzrseq3.asm rzrseq4.asm +asm> shnseq1.asm shnseq2.asm shnseq3.asm shnseq4.asm +asm> undseq1.asm undseq2.asm undseq3.asm undseq4.asm +asm> yokseq1.asm yokseq2.asm yokseq3.asm yokseq4.asm + \ No newline at end of file diff --git a/IMGFIND1.CMD b/IMGFIND1.CMD new file mode 100755 index 0000000..02473bf --- /dev/null +++ b/IMGFIND1.CMD @@ -0,0 +1,27 @@ +# +# write results to UNUSED.DOC +# + +RPT> unused1.doc + +# +# read images from these files +# + +LOD> ADAM.LOD BAM.LOD DOINK.LOD + +# +# search for images in these files +# + +ASM> ADAM.ASM ADJUST.ASM ADMSEQ1.ASM ADMSEQ2.ASM ADMSEQ3.ASM ANIM.ASM +ASM> ATTRACT.ASM AUDIT.ASM BAKGND.ASM BAM.ASM BAMSEQ1.ASM BAMSEQ2.ASM +ASM> BAMSEQ3.ASM BGNDPAL.ASM BGNDTBL.ASM COLL2.ASM COLLIS.ASM CROWD.ASM +ASM> DCSSOUND.ASM DIAG.ASM DISPLAY.ASM DNKSEQ1.ASM DNKSEQ2.ASM DNKSEQ3.ASM +ASM> DOINK.ASM GETUP.ASM HSTD.ASM LIFEBAR.ASM MAIN.ASM MENU.ASM MPROC.ASM +ASM> PAL.ASM PATCH.ASM RAZOR.ASM REF.ASM REFSEQ1.ASM RING.ASM ROBO.ASM +ASM> ROPES.ASM RZRSEQ1.ASM RZRSEQ2.ASM RZRSEQ3.ASM SELECT.ASM SPECIAL.ASM +ASM> SQUARE.ASM STRING.ASM TABLES.ASM TAKER.ASM TEMPLATE.ASM TEST.ASM +ASM> TEXT.ASM UNDSEQ1.ASM UNDSEQ2.ASM UNDSEQ3.ASM UNZIP.ASM UTIL.ASM +ASM> WRESTLE.ASM WRESTLE2.ASM YOKO.ASM YOKSEQ1.ASM YOKSEQ2.ASM YOKSEQ3.ASM + \ No newline at end of file diff --git a/IMGFIND2.CMD b/IMGFIND2.CMD new file mode 100755 index 0000000..2684d03 --- /dev/null +++ b/IMGFIND2.CMD @@ -0,0 +1,27 @@ +# +# write results to UNUSED.DOC +# + +RPT> unused2.doc + +# +# read images from these files +# + +LOD> MAIN.LOD RAZOR.LOD REF.LOD + +# +# search for images in these files +# + +ASM> ADAM.ASM ADJUST.ASM ADMSEQ1.ASM ADMSEQ2.ASM ADMSEQ3.ASM ANIM.ASM +ASM> ATTRACT.ASM AUDIT.ASM BAKGND.ASM BAM.ASM BAMSEQ1.ASM BAMSEQ2.ASM +ASM> BAMSEQ3.ASM BGNDPAL.ASM BGNDTBL.ASM COLL2.ASM COLLIS.ASM CROWD.ASM +ASM> DCSSOUND.ASM DIAG.ASM DISPLAY.ASM DNKSEQ1.ASM DNKSEQ2.ASM DNKSEQ3.ASM +ASM> DOINK.ASM GETUP.ASM HSTD.ASM LIFEBAR.ASM MAIN.ASM MENU.ASM MPROC.ASM +ASM> PAL.ASM PATCH.ASM RAZOR.ASM REF.ASM REFSEQ1.ASM RING.ASM ROBO.ASM +ASM> ROPES.ASM RZRSEQ1.ASM RZRSEQ2.ASM RZRSEQ3.ASM SELECT.ASM SPECIAL.ASM +ASM> SQUARE.ASM STRING.ASM TABLES.ASM TAKER.ASM TEMPLATE.ASM TEST.ASM +ASM> TEXT.ASM UNDSEQ1.ASM UNDSEQ2.ASM UNDSEQ3.ASM UNZIP.ASM UTIL.ASM +ASM> WRESTLE.ASM WRESTLE2.ASM YOKO.ASM YOKSEQ1.ASM YOKSEQ2.ASM YOKSEQ3.ASM + \ No newline at end of file diff --git a/IMGFIND3.CMD b/IMGFIND3.CMD new file mode 100755 index 0000000..5e0e80e --- /dev/null +++ b/IMGFIND3.CMD @@ -0,0 +1,27 @@ +# +# write results to UNUSED.DOC +# + +RPT> unused3.doc + +# +# read images from these files +# + +LOD> TAKER.LOD YOKO.LOD + +# +# search for images in these files +# + +ASM> ADAM.ASM ADJUST.ASM ADMSEQ1.ASM ADMSEQ2.ASM ADMSEQ3.ASM ANIM.ASM +ASM> ATTRACT.ASM AUDIT.ASM BAKGND.ASM BAM.ASM BAMSEQ1.ASM BAMSEQ2.ASM +ASM> BAMSEQ3.ASM BGNDPAL.ASM BGNDTBL.ASM COLL2.ASM COLLIS.ASM CROWD.ASM +ASM> DCSSOUND.ASM DIAG.ASM DISPLAY.ASM DNKSEQ1.ASM DNKSEQ2.ASM DNKSEQ3.ASM +ASM> DOINK.ASM GETUP.ASM HSTD.ASM LIFEBAR.ASM MAIN.ASM MENU.ASM MPROC.ASM +ASM> PAL.ASM PATCH.ASM RAZOR.ASM REF.ASM REFSEQ1.ASM RING.ASM ROBO.ASM +ASM> ROPES.ASM RZRSEQ1.ASM RZRSEQ2.ASM RZRSEQ3.ASM SELECT.ASM SPECIAL.ASM +ASM> SQUARE.ASM STRING.ASM TABLES.ASM TAKER.ASM TEMPLATE.ASM TEST.ASM +ASM> TEXT.ASM UNDSEQ1.ASM UNDSEQ2.ASM UNDSEQ3.ASM UNZIP.ASM UTIL.ASM +ASM> WRESTLE.ASM WRESTLE2.ASM YOKO.ASM YOKSEQ1.ASM YOKSEQ2.ASM YOKSEQ3.ASM + \ No newline at end of file diff --git a/IMGPAL.ASM b/IMGPAL.ASM new file mode 100755 index 0000000..cb4709a --- /dev/null +++ b/IMGPAL.ASM @@ -0,0 +1,4649 @@ + .FILE "imgpal.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + +ALEX_P: + .word 64 + .word 00H,06318H,00H,06F14H,06E8CH,06A87H,05EB3H,05A90H + .word 05A2CH,05A25H,04E51H,04E2FH,04E0CH,04960H,03DCCH,03DABH + .word 03D87H,03D64H,03168H,03164H,02D27H,02D03H,020E4H,020E1H + .word 01CA3H,01C80H,01C00H,01481H,01060H,01060H,0C00H,00H + .word 04E93H,04651H,031EEH,035CDH,0216AH,02148H,01543H,01D07H + .word 010C4H,010C0H,010A4H,0CA4H,0C82H,0881H,083H,0880H + .word 0480H,0862H,0860H,041H,040H,040H,020H,020H + .word 00H,01C28H,0864H,00H,0420FH,0318BH,01083H,010E7H + +FRTROW_P: + .word 64 + .word 00H,06B5AH,0294AH,02108H,01CE7H,018C6H,014A5H,01084H + .word 0842H,00H,07756H,066F6H,062B2H,05AB5H,05671H,05651H + .word 0562EH,051EEH,051A2H,04A31H,04A0EH,04A0BH,045CDH,045CCH + .word 04565H,041AAH,039ADH,0398BH,0398AH,03569H,03549H,03526H + .word 034C5H,034C2H,02CC5H,02929H,02928H,02906H,028A4H,024E5H + .word 024C5H,02442H,020E6H,020A4H,018A4H,01883H,01862H,01821H + .word 01441H,01041H,01021H,0800H,0862H,014C9H,018A7H,0C64H + .word 0422H,0841H,01465H,01D08H,014C6H,0C84H,0442H,07FDDH + +SDCRWD_P: + .word 64 + .word 00H,06B5AH,0318CH,02D6BH,02108H,01084H,0842H,00H + .word 07756H,05610H,045CDH,045CCH,041AAH,039ADH,0398AH,03968H + .word 03549H,03526H,03128H,02D49H,02D28H,02928H,02907H,02904H + .word 028A4H,02507H,02442H,020E6H,020C5H,020A4H,01CC5H,01C21H + .word 018A4H,018A1H,01883H,01821H,01061H,0800H,02128H,01D07H + .word 018E6H,014C5H,0480H,0440H,029D1H,02950H,014D2H,0154DH + .word 0110BH,08A8H,018A7H,0886H,0C64H,0824H,0422H,018C5H + .word 014A4H,01083H,0841H,0254AH,014C6H,0C84H,0442H,034C6H + +JOYDEW_P: + .word 64 + .word 00H,06B5AH,01084H,0842H,07756H,062B2H,05651H,0562EH + .word 051EEH,04A31H,045CDH,041AAH,0416BH,039ADH,03549H,034C6H + .word 03444H,03127H,02907H,028E6H,028A4H,02883H,02844H,024E8H + .word 024C5H,024A7H,02442H,020E6H,020A4H,02083H,01C21H,01862H + .word 01821H,01441H,01021H,0800H,0427CH,03E36H,04655H,02992H + .word 014D2H,035F1H,02571H,0316DH,0254DH,0190DH,014ECH,0110BH + .word 0252AH,014C9H,01469H,0868H,018A7H,0867H,01086H,0C64H + .word 0444H,0824H,0424H,0422H,045F1H,01465H,0822H,01929H + +JAKE_P: + .word 64 + .word 00H,00H,066F5H,0626EH,06267H,05693H,05671H,0564EH + .word 0562BH,051E9H,04A0BH,0460EH,045EDH,045C9H,045A6H,04565H + .word 04168H,039AAH,039A6H,03569H,03545H,03522H,02926H,02923H + .word 024E5H,024C2H,01CC3H,018A4H,018A1H,01481H,01441H,0820H + .word 056D5H,04E93H,03E0FH,029ACH,0298AH,02D87H,01D85H,02549H + .word 01906H,018E6H,014E6H,014C4H,010C3H,08C5H,010A4H,010A2H + .word 0883H,0483H,0881H,0862H,0860H,0462H,0440H,0296CH + .word 0246AH,010A6H,0422H,04A51H,039CDH,018C5H,01929H,0D08H + +MARNE_P: + .word 64 + .word 00H,06B5AH,01CE7H,00H,07756H,066F5H,062D2H,06270H + .word 0626EH,06267H,05693H,05671H,0564EH,0562BH,055C6H,051EEH + .word 051E9H,051A2H,04A0BH,0460EH,045EDH,045C9H,045A6H,04565H + .word 04542H,039AAH,039A6H,03569H,03545H,03522H,034E2H,034C5H + .word 02926H,02923H,024E5H,024C2H,02441H,020C1H,01CC3H,018A4H + .word 018A2H,018A1H,01481H,01441H,0820H,056D5H,02549H,01906H + .word 018E6H,014E6H,014C4H,08C5H,010A4H,010A2H,0483H,0881H + .word 0862H,0860H,0440H,04A51H,039CDH,018C5H,01929H,07FDDH + +FLASH_P: + .word 64 + .word 00H,06B5AH,0318CH,02D6BH,02108H,01CE7H,018C6H,014A5H + .word 01084H,0842H,00H,05AB5H,051A2H,04A31H,039ADH,02D4AH + .word 02D46H,02929H,024C5H,020A4H,018A4H,018A2H,01883H,01062H + .word 03E0FH,02549H,02128H,01D07H,018E6H,014C5H,010A4H,0C83H + .word 0862H,0441H,0427CH,01B7H,0173H,021B2H,0EDH,08AH + .word 014C9H,08A8H,018A7H,0867H,014A6H,010A6H,01086H,0886H + .word 0C64H,0444H,0424H,0422H,04A51H,018C5H,014A4H,01083H + .word 0841H,02D8CH,0254AH,01D08H,014C6H,0442H,06FDFH,07FDDH + +VOGEL_P: + .word 64 + .word 00H,0318CH,02D6BH,02108H,01CE7H,018C6H,014A5H,01084H + .word 04A31H,0460FH,041AAH,04168H,039ADH,0396AH,03526H,034C6H + .word 0316BH,03149H,03128H,03127H,02D49H,02D46H,02D28H,02CC5H + .word 02929H,02906H,028E6H,028A4H,024C5H,024A3H,020E6H,02083H + .word 01CC3H,018A4H,01862H,01841H,01441H,01062H,0821H,0820H + .word 0800H,03E0FH,02547H,02128H,01906H,018E6H,014C5H,010A4H + .word 0C83H,0862H,0441H,014C9H,018A7H,010A6H,01086H,04A51H + .word 039CDH,018C5H,01083H,0841H,045F1H,01D08H,014C6H,0442H + +JASON_P: + .word 54 + .word 00H,02108H,01CE7H,014A5H,01084H,0842H,040A7H,03DCEH + .word 03CC6H,039ADH,038A5H,0358BH,03549H,0316BH,03127H,02D49H + .word 02D28H,02CC5H,02CC4H,02928H,028E6H,028A4H,020E6H,020C5H + .word 020A4H,02083H,01CC5H,018A4H,01883H,01862H,01062H,01041H + .word 01021H,0821H,0800H,01523H,014C4H,0427CH,01B7H,0173H + .word 0EDH,08AH,018A7H,01086H,0886H,0C64H,0422H,018C5H + .word 014A4H,01083H,0822H,01102H,040C6H,06FDFH + +FARCRD_P: + .word 64 + .word 00H,02D6BH,02108H,01CE7H,014A5H,01084H,0842H,04A31H + .word 04A0EH,045CDH,03DCEH,03CC6H,039ADH,0396AH,03928H,038A5H + .word 03549H,0316BH,03127H,02D49H,02D28H,02CC5H,02CC4H,02929H + .word 02928H,028E6H,028A4H,024C5H,024A3H,020E6H,020C5H,020A4H + .word 02083H,01CC5H,018A4H,01883H,01862H,01062H,01041H,0820H + .word 0800H,014C4H,0427CH,01B7H,0173H,0254DH,0EDH,08AH + .word 014C9H,018A7H,0867H,010A6H,01086H,0886H,0C64H,0444H + .word 0422H,014A4H,01083H,0822H,01D08H,01102H,040C6H,06FDFH + +FLASH4_P: + .word 42 + .word 00H,02108H,01CE7H,014A5H,01084H,0842H,020C5H,020A4H + .word 01CC5H,018A4H,01883H,01862H,01062H,0821H,0800H,0C83H + .word 0883H,0427CH,01B7H,0173H,0254DH,0EDH,0252AH,08AH + .word 014C9H,018A7H,0867H,014A6H,010A6H,01086H,0886H,0C64H + .word 0444H,0424H,0422H,018C5H,014A4H,01083H,0822H,01D08H + .word 014C6H,06FDFH + +BIGFLSH_P: + .word 22 + .word 00H,06BBEH,0573H,0152H,0111H,01D5H,06DBH,01B4H + .word 0237H,0278H,0216H,02955H,031F8H,039F5H,03A99H,04F1EH + .word 04AD9H,05ADDH,05B9EH,01931H,04A79H,05B5DH + +CHIP_B_P: + .word 16 + .word 0318CH,0635EH,052DAH,04A98H,04256H,03E35H,035F3H,02DB1H + .word 0256FH,0190CH,010CAH,0888H,0446H,0445H,0443H,0442H + +SMWWF_P: + .word 126 + .word 02108H,07FFFH,0775CH,0731CH,07731H,0772EH,0772AH,076F6H + .word 06EFBH,07706H,076EEH,06EDAH,062DCH,076E2H,072B4H,076E0H + .word 076ABH,076C2H,06A98H,0768DH,07291H,06699H,06E77H,05A9CH + .word 07685H,07668H,06677H,06E54H,06E51H,0724AH,07660H,06E4FH + .word 07643H,07640H,06257H,07227H,06634H,06A12H,07600H,06DEFH + .word 07204H,05E37H,05257H,04A5AH,04A59H,06DE7H,05A33H,065EDH + .word 07562H,069C5H,05DF1H,07180H,059F5H,065E2H,0658CH,03E19H + .word 0618FH,059D2H,065C1H,06965H,06D42H,059B1H,059CDH,049F5H + .word 06961H,035F9H,06D21H,051D3H,070E1H,05D6BH,039D8H,06161H + .word 031D8H,068E2H,068E1H,07081H,05D28H,06105H,05D41H,05189H + .word 05D08H,05D22H,04991H,05564H,05942H,060E3H,06C62H,05923H + .word 064A2H,06481H,0494EH,06084H,05109H,06082H,058C1H,058A1H + .word 054C2H,050C6H,04D02H,0450CH,06021H,03D2EH,044EAH,05842H + .word 044E5H,048A5H,0390DH,04C81H,05401H,03CE2H,04466H,038CAH + .word 038C8H,04822H,04401H,030A2H,03405H,02889H,03801H,03042H + .word 02446H,02402H,01802H,01002H,0400H,00H + +CSELBK_P: + .word 22 + .word 00H,0C85H,01486H,014A7H,0C64H,014C8H,0C43H,0421H + .word 0422H,01CE9H,0256FH,01CEAH,01D0BH,01D2CH,0254DH,0254EH + .word 02DB1H,02D90H,035D3H,02DB2H,035F4H,03615H + +SPKBLU_P: + .word 8 + .word 00H,07FFFH,06BDFH,053BFH,03F9FH,02B7FH,0135FH,033FH + +SPKYEL_P: + .word 8 + .word 00H,07FFFH,07FF4H,07FEAH,07FE0H,07F40H,07EA0H,07E00H + +SPKGRN_P: + .word 8 + .word 00H,07FFFH,06BFAH,053F4H,03FEFH,02BEAH,013E4H,03E0H + +SPKPRP_P: + .word 8 + .word 00H,07FFFH,07F5FH,07E9FH,07DFFH,07D5FH,07C9FH,07C1FH + +SPKTRQ_P: + .word 8 + .word 00H,07FFFH,06BFFH,053FFH,03FFFH,02BFFH,013FFH,03FFH + +NMAT_P: + .word 56 + .word 00H,07799H,07779H,07778H,07379H,07378H,07757H,07358H + .word 07357H,06F58H,07336H,07735H,07337H,06F38H,06F37H,06F36H + .word 06B37H,06F16H,06F15H,06B17H,06B16H,06F13H,06EF5H,06EF3H + .word 06AF5H,06AF4H,066F5H,066F4H,062F5H,066D4H,066D3H,062D5H + .word 062D4H,062D3H,066B3H,05EB3H,05EB2H,06292H,05E92H,05A91H + .word 05E71H,05A71H,05670H,05650H,0564FH,05250H,0524FH,05230H + .word 0522FH,04E2FH,04E2EH,04E0FH,04E0EH,04A0EH,045EDH,045CCH + +CRPL_G_P: + .word 23 + .word 00H,06B5AH,06739H,05EF7H,05AD6H,056B5H,05294H,04E73H + .word 04A52H,04631H,04210H,03DEFH,039CEH,035ADH,0318CH,02D6BH + .word 0294AH,02529H,02108H,01CE7H,018C6H,014A5H,01H + +CRPL_B_P: + .word 22 + .word 00H,03DFEH,039DDH,0319BH,02D7AH,02959H,02538H,02117H + .word 01CF6H,018D5H,014B4H,01093H,0C72H,0851H,0430H,0FH + .word 0EH,0DH,0CH,0BH,0AH,09H + +CRPL_R_P: + .word 22 + .word 00H,07DEFH,079CEH,0718CH,06D6BH,0694AH,06529H,06108H + .word 05CE7H,058C6H,054A5H,05084H,04C63H,04842H,04421H,03C00H + .word 03800H,03400H,03000H,02C00H,02800H,02400H + +CRUTBH_P: + .word 256 + .word 00H,0C22H,01464H,01064H,01485H,01CC7H,0316DH,018A7H + .word 039AFH,01FH,0844H,014AAH,018CBH,018CAH,014A8H,018C9H + .word 014A7H,02D6FH,0318FH,0318EH,035AFH,03DF1H,04E75H,02D6CH + .word 05296H,035AEH,05EF8H,06319H,0673AH,03FH,05FH,01D0EH + .word 0BFH,018ECH,035D3H,0DFH,014CAH,01D0DH,018EBH,03E15H + .word 014C9H,018EAH,031B0H,039F2H,04210H,03E13H,013FH,035D0H + .word 015FH,017FH,04E96H,019FH,01BFH,01DFH,021FH,025FH + .word 029FH,02BFH,031FH,033FH,041H,0120H,02A0H,0862H + .word 0C61H,0841H,07F98H,01483H,0460FH,0820H,01882H,0C41H + .word 07B34H,07F55H,07735H,01062H,041EEH,07B13H,07F34H,07B35H + .word 03947H,06E8FH,07F13H,020A3H,076D1H,07AF2H,07B14H,07F35H + .word 07EF2H,06691H,06A2CH,01883H,0726EH,0768FH,07ED1H,0664EH + .word 06E90H,076D2H,07AF3H,07F14H,072F4H,02082H,0724DH,0766EH + .word 07A8FH,01CA4H,07EF3H,0418AH,06EB2H,01041H,03D05H,01462H + .word 028C4H,06E0BH,06A2DH,07690H,05E0DH,07AB1H,07ED2H,05251H + .word 028A3H,065EBH,04968H,06A0CH,06E2DH,0724EH,0766FH,06A70H + .word 072B2H,05125H,065CAH,030E5H,01C83H,06E0CH,0722DH,0764EH + .word 07A6FH,05DECH,03D48H,0662EH,02D07H,03D8BH,03481H,038A2H + .word 01441H,04505H,01862H,030C4H,04D47H,05168H,05589H,059AAH + .word 05DCBH,020A4H,061ECH,0660DH,024C5H,06E4FH,04DABH,03549H + .word 05EF7H,044C3H,04905H,04D26H,05147H,038E5H,02083H,05D89H + .word 03D06H,061AAH,04127H,05DAAH,065CBH,061CBH,04969H,06A0DH + .word 0764FH,06E2EH,07670H,055CCH,03107H,01420H,01841H,01C62H + .word 038C4H,05968H,06189H,024A4H,04948H,069ECH,04D69H,0762EH + .word 028C5H,07A70H,02CE6H,03CC4H,040E5H,02483H,04906H,04D27H + .word 04927H,04D48H,05169H,0598AH,0558AH,05DABH,059ABH,03461H + .word 02062H,02883H,04D06H,05548H,05148H,028A4H,05569H,05D8AH + .word 01C20H,02020H,02862H,03083H,02CA4H,030C5H,034E6H,04128H + .word 04549H,02841H,03062H,034A4H,03CC5H,038C5H,040E6H,03CA4H + .word 048C5H,04CE6H,05149H,05928H,0400H,0800H,0C00H,0C21H + .word 01442H,01042H,01863H,0821H,024C6H,0C42H,01063H,020E7H + .word 05EB5H,03DCEH,04A31H,04E52H,05273H,05694H,0421H,07FFFH + +CRUTBM_P: + .word 256 + .word 00H,01001H,0822H,01FH,0420H,018C5H,05EF6H,05E6CH + .word 0628DH,06ACFH,06AF2H,04E2EH,06B15H,06F36H,0562BH,05A4CH + .word 03546H,062B1H,066D2H,06AF3H,0666CH,0626DH,06717H,0C41H + .word 03126H,0520CH,07F55H,06EF3H,0564FH,07336H,05ED5H,06F59H + .word 04588H,07ACFH,06ED2H,03526H,03947H,07EF1H,06E8FH,07F13H + .word 0562EH,0622CH,07F35H,07F78H,055A8H,03926H,049AAH,07AD1H + .word 05A2EH,05E4FH,07F57H,0726EH,0622DH,07ED1H,07AF3H,07F14H + .word 02907H,02082H,05987H,04946H,05DA8H,03905H,03D26H,07A4CH + .word 04147H,07A8FH,04989H,07EB0H,0418AH,045ABH,06EB2H,06F38H + .word 02C81H,04D46H,071E9H,061A8H,065C9H,061EBH,04D89H,07E8FH + .word 049CCH,04DEDH,066F6H,07359H,05103H,030A2H,034C3H,069C9H + .word 04126H,0760BH,04547H,03506H,051AAH,0622EH,0560EH,07AF4H + .word 048E3H,05125H,06166H,05546H,069A8H,02CC4H,07A2CH,030E5H + .word 069EBH,07E4DH,03D48H,04169H,04DCCH,06271H,03D8BH,06ED4H + .word 05E93H,06F17H,02882H,02CA3H,04926H,034E5H,03906H,05589H + .word 059AAH,03D27H,07E6FH,020A4H,06E4FH,04DABH,07ED3H,055EDH + .word 03128H,06671H,03549H,066D5H,03C81H,050E3H,02C82H,04D05H + .word 06DA9H,02083H,071EBH,03D06H,04127H,065ECH,06E0DH,07E91H + .word 06E92H,04081H,01841H,05505H,01C62H,03CE5H,06189H,024A4H + .word 0760DH,0762EH,059CCH,03949H,076B3H,06EF6H,07738H,03CA3H + .word 038A3H,06989H,04506H,04D27H,071CBH,075ECH,07A0DH,03507H + .word 07A92H,03040H,040A3H,02062H,02883H,044E5H,05148H,028A4H + .word 05569H,03907H,03D49H,0416AH,06AB4H,01C20H,03C61H,04CC4H + .word 02462H,030A4H,05948H,06169H,034C5H,0698AH,0658AH,06DABH + .word 030C5H,038E6H,075EDH,034E6H,04128H,04549H,03D28H,04DACH + .word 076F6H,03483H,034A4H,03CC5H,040E6H,04949H,0558BH,05107H + .word 05528H,04D28H,05D6AH,05D49H,0400H,0800H,0C00H,01000H + .word 01400H,02000H,02800H,03421H,01021H,02C63H,0C21H,01442H + .word 030A5H,01042H,01863H,0821H,02084H,01C84H,01463H,020A5H + .word 02CE7H,024C6H,01884H,059EFH,01CA5H,024E7H,0396BH,06273H + .word 06694H,01484H,03D8CH,02D29H,03DADH,06AF7H,02929H,0316BH + .word 05EB5H,062F7H,06718H,0842H,02529H,02D6BH,05EF7H,07FFFH + +CRUTDK_P: + .word 256 + .word 00H,070A7H,04085H,0658DH,060C8H,059AEH,05403H,05803H + .word 06424H,06845H,02443H,074EAH,03064H,034C7H,0516CH,03423H + .word 05866H,0656DH,059F0H,04403H,05C25H,03023H,03444H,01C43H + .word 07719H,05046H,06868H,06A33H,05C47H,02423H,04846H,03845H + .word 02844H,02085H,0452BH,05C89H,05CCBH,02403H,0548AH,06AF8H + .word 01823H,02C66H,05DF2H,02065H,06550H,0488AH,0550EH,02086H + .word 01C65H,06B19H,06172H,01464H,065D4H,034CAH,0350BH,03849H + .word 06E37H,048ADH,049B0H,01023H,02C68H,01C86H,04E12H,01444H + .word 05A75H,066D8H,06297H,0731BH,01845H,05634H,01C46H,061B6H + .word 03D4EH,06257H,04570H,0344CH,03CCEH,01846H,028CAH,05E37H + .word 06A9AH,06699H,05E77H,0775DH,02069H,05636H,06ADBH,0294AH + .word 041B1H,01848H,0669CH,05EB8H,045D3H,0733EH,05E99H,028CDH + .word 0206DH,020CAH,0777FH,049B7H,06B3BH,07BBFH,0C44H,02D0FH + .word 03991H,04E36H,05678H,05239H,05276H,062DCH,0C27H,0824H + .word 0186CH,0C45H,05E9DH,0C28H,01067H,0737FH,0104AH,0146CH + .word 045F9H,0405H,0671EH,06B3FH,0828H,03593H,02511H,02D53H + .word 0569DH,018C6H,0C4DH,01CD0H,03598H,01495H,01CD3H,0413H + .word 0429H,0C73H,0C6FH,02D73H,0C65H,035B5H,03DF8H,0463AH + .word 04E7CH,04216H,04E79H,05EFEH,05ADCH,04214H,01085H,039D0H + .word 0318DH,04211H,04EH,039F5H,071H,035D3H,02D90H,08AFH + .word 08AAH,0212AH,01D08H,014C5H,06374H,05B50H,0464FH,052B2H + .word 06B78H,073BAH,04A8DH,05EF7H,04AC8H,05F14H,04AC6H,014C2H + .word 0422DH,056D2H,05AF3H,056B5H,03A06H,04E8FH,05F13H,01D02H + .word 035E2H,02123H,05F11H,05AF1H,06333H,03A02H,056CFH,02962H + .word 052ADH,031A3H,04A64H,04224H,04A66H,07FE0H,05285H,01CE2H + .word 02943H,039C6H,02D65H,018C3H,02945H,02105H,04A4DH,056B0H + .word 05290H,04E70H,05291H,03DEDH,04A50H,05AD4H,06316H,06F79H + .word 04E72H,05AD5H,05EF6H,041E4H,02503H,02D45H,018A2H,01CC3H + .word 02926H,018A3H,02506H,014A5H,020E5H,07F52H,07F0FH,06E04H + .word 06A6BH,01483H,02CE3H,07F11H,01CC5H,020C4H,07EADH,0664DH + .word 05A0DH,07AB1H,05E50H,07AD4H,06A0EH,061EEH,06630H,07272H + .word 07C00H,05673H,05EB5H,062D6H,039ADH,04A31H,0737BH,07FFFH + +CRUTLX_P: + .word 256 + .word 00H,03801H,04885H,03422H,03022H,03443H,03C64H,03C85H + .word 02801H,03043H,03864H,038A6H,04D2AH,0558DH,02001H,03085H + .word 02C85H,034A6H,0452AH,0494BH,0412AH,0454BH,0518DH,055CFH + .word 06211H,02043H,059F0H,06253H,03844H,03865H,02464H,0456CH + .word 03044H,03886H,03486H,03CC8H,059AFH,01001H,03424H,055AFH + .word 05DF1H,0418DH,045AEH,049CFH,03445H,03866H,03C87H,06654H + .word 05E95H,049F0H,02486H,0314BH,06F3AH,0316CH,06F7AH,03527H + .word 01041H,03D69H,07AF4H,030E5H,07AD3H,030C4H,069A9H,034E5H + .word 07AB2H,07B16H,06567H,06988H,06DA9H,065CBH,06E0DH,0722EH + .word 0764FH,0724FH,07670H,07A91H,07EB2H,05E0EH,072B3H,07AF5H + .word 05105H,06967H,05926H,01C62H,06589H,069AAH,069CBH,06DECH + .word 069ECH,0720DH,07A70H,07292H,076B3H,07AD4H,07EF5H,07B59H + .word 05D05H,06126H,05D26H,06147H,06168H,06989H,0598AH,03507H + .word 06E2FH,06A2FH,06E50H,07A92H,07692H,07AB3H,06526H,02883H + .word 05106H,05527H,061ABH,065CCH,0720EH,069EDH,065EDH,0722FH + .word 07250H,07671H,05A0FH,07B17H,07B38H,07F59H,050A3H,04CC4H + .word 054E5H,04CE5H,05906H,05D27H,05D48H,05948H,05D69H,03D07H + .word 069CCH,04128H,0496AH,051CDH,06651H,06A72H,06251H,07AF6H + .word 07F17H,072D5H,02420H,034A4H,038C5H,04528H,0516AH,04949H + .word 059ACH,05DCDH,055ACH,06A0FH,06E51H,07272H,076B4H,07AD5H + .word 04483H,048C5H,04CE6H,05507H,05107H,05528H,05128H,05949H + .word 05D6AH,05149H,0556AH,05D8BH,065CDH,065EEH,04462H,04C83H + .word 054A4H,04CA4H,048A4H,054C5H,050C5H,04CC5H,054E6H,0616AH + .word 0400H,01000H,01400H,03800H,07C00H,03C21H,03821H,02C21H + .word 02821H,02021H,04042H,03C42H,03842H,04063H,02442H,04484H + .word 02042H,04CA5H,02C63H,048A5H,01C42H,02863H,044A5H,040A5H + .word 02463H,03CA5H,02C84H,040C6H,034A5H,048E7H,01442H,02884H + .word 030A5H,01C63H,038C6H,02CA5H,03CE7H,030C6H,028A5H,04529H + .word 0558CH,030E7H,059CEH,05DEFH,06210H,07AB5H,07ED6H,0394AH + .word 04DCEH,051EFH,06E94H,06252H,07AF7H,05631H,045CEH,05E73H + .word 06294H,066B5H,05652H,06AF7H,07339H,0775AH,07B7BH,06B18H + .word 07B9CH,04610H,04A31H,05694H,062F7H,05ED6H,06718H,07FFFH + +CRUTRR_P: + .word 256 + .word 00H,0392AH,01864H,02086H,05253H,030C9H,0356CH,05674H + .word 02CC9H,024A8H,02488H,028A9H,02489H,01866H,02088H,024A9H + .word 01C87H,01465H,0354DH,045D1H,0314CH,05A76H,020E8H,0292AH + .word 0358DH,05AB6H,062F8H,0288BH,0248AH,02089H,024AAH,03D70H + .word 0396FH,041B1H,049F3H,0248BH,01C88H,03D90H,04E14H,0398FH + .word 0354FH,045F3H,0358EH,02D4CH,05ED8H,03180H,07FE0H,02949H + .word 0318BH,039CDH,07B4CH,045C5H,041A5H,07F2AH,0770CH,041A6H + .word 045C7H,07B2EH,045A5H,07B0CH,01061H,02D03H,066AEH,04186H + .word 02D04H,03524H,0728AH,04165H,051E9H,072ADH,0820H,024C3H + .word 0C41H,0666DH,01461H,028E4H,01062H,055EAH,024A2H,028C3H + .word 01C82H,02CE4H,01440H,01861H,03505H,030E4H,0660BH,0C20H + .word 02082H,05566H,05987H,024A3H,06A0BH,0620CH,04E30H,01840H + .word 05545H,01041H,05966H,034E4H,071E9H,03D05H,05167H,065C9H + .word 01462H,028C4H,0764DH,04568H,04D89H,07AB1H,055ECH,049CCH + .word 02482H,05945H,06587H,075C8H,038E4H,071C8H,028A3H,05146H + .word 075E9H,05567H,06DEAH,04126H,0760BH,04547H,0762CH,03506H + .word 03081H,02061H,038C3H,06145H,05125H,06166H,03CE4H,05546H + .word 06DA8H,069A8H,04105H,05967H,071C9H,06DC9H,04526H,05D88H + .word 02CC4H,07A0BH,04947H,07A2CH,030E5H,01C83H,07E4DH,04D68H + .word 06E0CH,059CBH,03D48H,06A4FH,014A5H,03DEFH,01441H,040E4H + .word 06D87H,05D46H,02CA3H,05946H,071A8H,079C9H,05D67H,075C9H + .word 06588H,01862H,04926H,079EAH,030C4H,069A9H,034E5H,05589H + .word 07E6FH,020A4H,024C5H,03C81H,02861H,040A2H,02C82H,040C3H + .word 05D25H,030A3H,04905H,05126H,06D88H,034C4H,06988H,04D26H + .word 05547H,06DA9H,05147H,038E5H,02083H,05568H,03D06H,04127H + .word 05DAAH,065CBH,07670H,04481H,048C3H,06525H,048E4H,038C4H + .word 05D47H,03CE5H,075CAH,04106H,069AAH,065AAH,04527H,028C5H + .word 02CE6H,054C3H,03CA3H,050E4H,06568H,02483H,04906H,06989H + .word 04506H,04927H,0558AH,03861H,03461H,02883H,028A4H,02CC5H + .word 030E6H,04CA3H,02462H,030A4H,02CA4H,034C5H,04D6AH,07C00H + .word 0C21H,01042H,01863H,0821H,02CC6H,04129H,01C84H,0414AH + .word 03929H,045CEH,02929H,0316BH,02D4AH,04610H,04E52H,07FFFH + +CRUTSM_P: + .word 256 + .word 00H,0552AH,0512AH,040C7H,03CC7H,04509H,04D2AH,0596CH + .word 04D4BH,040E8H,03CE8H,0412AH,04D6CH,02885H,02CA6H,048E9H + .word 05D8EH,0456CH,0556DH,06695H,030E8H,061F1H,07AB7H,034A7H + .word 0618FH,05632H,07234H,020A6H,024C7H,01C85H,059B0H,06E55H + .word 07ED9H,0518FH,028E8H,049F0H,06696H,051F1H,07F1BH,07277H + .word 0418EH,0314BH,0C22H,06A15H,059D2H,07A99H,01885H,01CA6H + .word 07ADAH,05E34H,06EB8H,02909H,02D2AH,03DAEH,07F7DH,01464H + .word 07A79H,07ABAH,072B9H,07679H,07A9AH,07EBBH,07E9BH,0312BH + .word 01C86H,07ABBH,076FBH,07F9EH,0842H,01865H,07A9BH,05A75H + .word 07EBCH,07AFCH,07F1DH,07E9CH,07ADCH,07EFDH,07F7EH,07ABCH + .word 07F3EH,07EFEH,01044H,01465H,01064H,020C8H,01485H,01CC7H + .word 0316CH,02D4BH,0358DH,041F0H,03DCFH,04A32H,04E53H,01466H + .word 01486H,018A7H,03DD0H,01H,0210CH,0252BH,01CE8H,035AEH + .word 0296FH,035D2H,031B0H,02D8FH,0254CH,035D0H,04233H,03A13H + .word 0296CH,04A74H,01660H,06738H,04A0DH,0522EH,04E51H,020E6H + .word 045EDH,07F13H,07F14H,04A0FH,04989H,03527H,07AF4H,02D07H + .word 028E6H,07ED3H,03549H,07B16H,05651H,04D8AH,07E91H,03107H + .word 07EB2H,06E92H,0418BH,07E70H,02CE6H,03528H,03D6AH,028A4H + .word 03907H,07A71H,03928H,07671H,03D49H,0498BH,030C5H,03D07H + .word 07A2FH,04128H,07E50H,04549H,07A50H,03D28H,0518BH,07E71H + .word 04149H,055CDH,05E30H,0598BH,04D6AH,05DCDH,0660FH,07693H + .word 07AB4H,05549H,0596AH,0618BH,0556AH,065ACH,061ACH,069CDH + .word 0760FH,06DEEH,061CDH,06E0FH,065EEH,07230H,06E30H,07A72H + .word 06D8BH,069ACH,071CDH,079EEH,075EEH,0400H,0800H,01400H + .word 01800H,02400H,02800H,02C00H,03000H,03400H,03800H,04000H + .word 04800H,05000H,05400H,06000H,06400H,01421H,01842H,01442H + .word 05129H,0616BH,04508H,0658CH,01042H,01863H,0821H,02084H + .word 04929H,0618CH,04D4AH,05D8CH,034E7H,061ADH,024A5H,0494AH + .word 0558CH,030E7H,01C84H,0454AH,0496BH,07652H,020A5H,02CE7H + .word 05DEFH,024C6H,01884H,06631H,04DADH,028E7H,06A52H,01063H + .word 04DCEH,020C6H,076D6H,0354AH,024E7H,018A5H,04E10H,05231H + .word 05652H,0398CH,05A73H,020E7H,045EFH,02508H,05EB5H,07FFFH + +CRUTYK_P: + .word 256 + .word 00H,00H,00H,0C21H,0C41H,01041H,01062H,01063H + .word 01400H,01420H,01441H,01462H,01463H,01484H,01485H,01441H + .word 01800H,01841H,01862H,01882H,01883H,018A4H,01861H,01841H + .word 01C00H,01C41H,01C62H,01C82H,01C83H,01CC5H,01CC7H,02000H + .word 02020H,020A4H,020C5H,020C6H,020E7H,02108H,02062H,02400H + .word 02441H,02462H,02482H,024A3H,024A5H,024E7H,02508H,02482H + .word 02800H,02820H,02821H,02841H,02842H,02883H,028A3H,028C4H + .word 028C5H,02907H,02928H,02929H,02949H,02C00H,02C21H,02C83H + .word 02CA4H,02CA5H,02CC3H,02CC6H,02CE7H,02D08H,02D09H,02D29H + .word 02D49H,02D4AH,02D6AH,03000H,03062H,03083H,030A3H,030A4H + .word 030C4H,030C5H,030E5H,030E7H,03108H,03149H,0314AH,0316AH + .word 0316BH,0318BH,030A4H,03400H,03461H,03482H,034A3H,034A4H + .word 034C4H,034E4H,034E5H,03507H,0354AH,0356BH,0358BH,0358CH + .word 035ADH,03800H,03883H,038C4H,038E5H,038E6H,03907H,03908H + .word 0394AH,0396BH,0398CH,039ACH,039ADH,03CC3H,03CC4H,03CE4H + .word 03CE5H,03D05H,03D08H,03D29H,03D69H,03D6AH,03D6BH,03D8BH + .word 03D8CH,03DADH,03DCDH,03DCEH,040C3H,040C4H,040E4H,040E5H + .word 04129H,0416BH,0418CH,041ADH,04482H,044E4H,044E5H,04505H + .word 04506H,04547H,04569H,04589H,045ADH,045EFH,0460FH,04633H + .word 048C3H,048E4H,04925H,04926H,049ADH,049CEH,04A0FH,04A10H + .word 04D04H,04D05H,04D25H,04D26H,04D47H,04D68H,04DABH,04DCEH + .word 04DEFH,04E10H,04E52H,05126H,05146H,05147H,05167H,051AAH + .word 05230H,05231H,05525H,05547H,05567H,05568H,05589H,0562FH + .word 05652H,05673H,05694H,05946H,05967H,05968H,05988H,05989H + .word 05A93H,05AB6H,05AD7H,05D46H,05D67H,05D88H,05DA9H,05DAAH + .word 05E71H,05EB4H,05EB5H,05EF8H,06187H,06188H,061A8H,061A9H + .word 062D5H,062D6H,062F7H,062F8H,06587H,065A8H,065AAH,065C9H + .word 065CAH,065ECH,0660DH,066F7H,06718H,06739H,069A9H,069C9H + .word 069CAH,069EBH,06A2EH,06AF6H,06B39H,06DC9H,06DEAH,06DEBH + .word 06E0BH,06E0CH,06E90H,06F7AH,071EAH,0720BH,0720CH,0722CH + .word 0722DH,0722EH,0760BH,0760CH,0762DH,0764EH,07A2CH,07A4DH + .word 07A4EH,07A6FH,07A90H,07BDEH,07E6EH,07E6FH,07ED2H,07FFFH + +CRUTUN_P: + .word 256 + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,00H,00H,00H,00H,00H + .word 00H,00H,00H,020H,0400H,0420H,0421H,0441H + .word 0800H,0820H,0841H,0842H,0C00H,0C41H,0C42H,0C62H + .word 0C63H,0C62H,0C41H,0C62H,0C83H,01062H,01000H,01041H + .word 01062H,01062H,01083H,01062H,01062H,01062H,01062H,01420H + .word 01484H,014A4H,01484H,014A4H,01800H,01861H,018A4H,018A5H + .word 018C5H,018C6H,018E6H,01C83H,01CA3H,01CC5H,01CC6H,01CE7H + .word 01D07H,02040H,02060H,020A4H,020C4H,020C5H,020E6H,020E7H + .word 02107H,02108H,02460H,024C5H,024E5H,024E6H,02508H,02528H + .word 02529H,02549H,02860H,028C4H,02928H,02929H,02949H,0294AH + .word 0296AH,0296BH,02C80H,02CE5H,02D06H,02D4AH,02D6BH,030A1H + .word 0316AH,0316BH,0316CH,0318BH,0318CH,034C2H,03504H,03527H + .word 0358BH,0358CH,035ACH,035ADH,035CDH,038C2H,038E2H,038E3H + .word 03905H,03926H,03969H,039ADH,039CEH,03CE2H,03D04H,03D05H + .word 03D24H,03D25H,03D47H,03DCEH,03DCFH,03DEEH,03DEFH,04103H + .word 04104H,04125H,04126H,04147H,041AAH,041CFH,041EFH,041F0H + .word 04210H,04524H,04545H,04546H,04568H,04589H,04610H,04611H + .word 04630H,04631H,04944H,04945H,04946H,04967H,049A9H,049CBH + .word 04A0FH,04A31H,04A52H,04A53H,04D65H,04D66H,04D87H,04D88H + .word 04DA9H,04DAAH,04E52H,04E73H,04E94H,05166H,05186H,05187H + .word 05188H,051A8H,051A9H,05273H,05293H,05294H,05586H,055A7H + .word 055A8H,055CAH,055EBH,055ECH,05693H,05694H,05695H,056B4H + .word 056B5H,059C9H,059EAH,05A0DH,05AB5H,05AD5H,05AD6H,05DC8H + .word 05DC9H,05DEAH,05DEBH,05E0BH,05E0DH,05ED6H,05EF6H,05EF7H + .word 061E9H,061EAH,0620AH,0620BH,0622CH,062F7H,0662CH,0664DH + .word 0664EH,06718H,06A2BH,06A2CH,06E4DH,06E6DH,06E6EH,07FFFH + +CRHI_B_P: + .word 3 + .word 02D6BH,01FH,07FFFH + +CRHI_R_P: + .word 3 + .word 02D6BH,07C00H,07FFFH + +robo_p: + .word 16 + .word 00H,07C00H,07DA0H,07C1FH,07DC0H,07FE1H,03E0H,01FH + .word 03DEFH,07FFFH,0F9H,06001H,073FH,0784BH,07951H,06300H + +OSGEMD: + .word 43 + .word 0212BH,07F25H,0675BH,0673BH,0633AH,05F1AH,05AFAH,056DAH + .word 052DAH,052BAH,04E9AH,04A79H,04678H,04657H,04237H,03E16H + .word 03A15H,035D3H,031D2H,02DB1H,02990H,0256FH,0214EH,0214DH + .word 01D2CH,077BDH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,05100H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E46H + +ORANGPAL: + .word 43 + .word 0212BH,07FA0H,07F30H,07F10H,07EEFH,07E8BH,07ECBH,07EC0H + .word 07EC0H,07E60H,07E20H,07E00H,07DE0H,07DC0H,07DA0H,07D80H + .word 07D60H,06180H,06180H,05D60H,05940H,05520H,05100H,05100H + .word 04CE0H,07FFEH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +GREENPAL: + .word 43 + .word 0212BH,07F25H,04FEAH,0436AH,04389H,03FA9H,033E9H,033C9H + .word 02FC9H,02326H,03386H,02F65H,02B44H,02323H,02303H,022C2H + .word 02281H,02240H,02240H,02220H,02200H,021E0H,021C0H,021C0H + .word 021A0H,07FF9H,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +BLUE: + .word 43 + .word 0212BH,07F25H,063BFH,0539FH,04F9FH,04B7FH,04B3FH,0F3FH + .word 0F3FH,02BFH,02FFH,02BFH,029FH,027FH,025FH,023FH + .word 021EH,01DCH,01DBH,01BAH,0199H,0178H,0157H,0156H + .word 0135H,07BDFH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +REDPAL: + .word 43 + .word 0212BH,07F25H,07E2EH,07DEDH,07DACH,07D8BH,07DCDH,079ADH + .word 075ADH,0758DH,07929H,07508H,070E7H,06CE6H,068E6H,064A4H + .word 06084H,038A2H,054A2H,050A2H,04CA2H,048A2H,044A2H,044A2H + .word 02CA2H,07F39H,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +WHITEPAL: + .word 43 + .word 0212BH,07F25H,07BFFH,07BDFH,077DEH,073BEH,06F9EH,06B7EH + .word 0677EH,0675EH,05F18H,05AF7H,056F6H,056D5H,052B5H,04E94H + .word 04A93H,04651H,04250H,03E2FH,03A0EH,035EDH,031CCH,031CBH + .word 02DAAH,07FFFH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +PURPLE: + .word 43 + .word 0212BH,07F25H,07E1FH,07DFFH,07DFFH,07DDFH,079BFH,0759FH + .word 0719FH,0681DH,0701EH,06C1DH,0681CH,0641BH,0601AH,05C19H + .word 05417H,04C16H,04815H,04414H,04013H,03C12H,03811H,03810H + .word 0340FH,07FBEH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +TURQUSE: + .word 43 + .word 0212BH,07F25H,04FFEH,04FDCH,04FBBH,04F9AH,01FFEH,01BFEH + .word 017FEH,0339H,0398H,0377H,0356H,0335H,0314H,02F3H + .word 02D2H,0252H,0251H,0230H,020FH,01EEH,01CDH,01CCH + .word 01ABH,077FFH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +RUBYPAL: + .word 43 + .word 0212BH,07F25H,07E53H,07E33H,07E32H,07E12H,07DF2H,07DD2H + .word 07DD2H,07D70H,07D2FH,0790EH,078EDH,078CCH,074ABH,0708AH + .word 06C48H,06889H,06488H,06087H,05C86H,05885H,05484H,05484H + .word 05084H,07FBDH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +AQUAPAL: + .word 43 + .word 0212BH,07F25H,033FFH,033FFH,02FFFH,02BFFH,027FFH,023FFH + .word 01FFFH,035FH,033FH,031EH,02FFH,02DEH,02BDH,029CH + .word 025BH,027CH,027DH,025EH,0236H,0215H,01F4H,01F3H + .word 01D2H,067FFH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +WHITE2PAL: + .word 43 + .word 0212BH,07F25H,07BFFH,07BDFH,077DEH,073BEH,06F9EH,06B7EH + .word 0677EH,0675EH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07FFEH,07FFFH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +GOLD: + .word 43 + .word 0212BH,07F63H,07FA5H,07F85H,07F84H,07F64H,07F44H,07F24H + .word 07F24H,07EE0H,07EC0H,07AA0H,07680H,07660H,07240H,06E40H + .word 06E00H,06600H,06200H,05DE0H,059C0H,055A0H,05180H,05180H + .word 04D60H,077BDH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +REDPAL2: + .word 43 + .word 00H,07F25H,07E79H,07E59H,07E58H,07E38H,07E18H,07DF8H + .word 07DF8H,07D96H,07D55H,07D34H,07D13H,07CF2H,07CD1H,07CB0H + .word 07C6EH,07CAFH,07CAEH,07CADH,07CACH,078ABH,074AAH,074AAH + .word 070AAH,07FBDH,014C8H,00H,0C63H,020E6H,06180H,05D40H + .word 054E0H,050C0H,048A0H,04480H,04060H,03820H,03400H,03000H + .word 02800H,02000H,06E47H + +WINFONT: + .word 3 + .word 02D6BH,07FA0H,01020H + +FNT9WHT_P: + .word 3 + .word 02D6BH,00H,07FFFH + +FNT9RED_P: + .word 3 + .word 02D6BH,00H,07C00H + +FNT9WHT2P: + .word 3 + .word 02D6BH,00H,07FFFH + +FNT9YEL_P: + .word 3 + .word 02D6BH,00H,07FE0H + +FNT9PRP_P: + .word 3 + .word 02D6BH,00H,07C1FH + +WSF_W_P: + .word 3 + .word 0318CH,07FFFH,00H + +WSF_Y_P: + .word 3 + .word 00H,07FE0H,00H + +WSF_R_P: + .word 3 + .word 00H,07C00H,00H + +WGFS_W_P: + .word 10 + .word 0318CH,07FFFH,07BDEH,0739CH,06F7BH,06B5AH,06739H,05EF7H + .word 05AD6H,00H + +WGSF_B_P: + .word 10 + .word 00H,07FFFH,077DFH,06B9EH,0637EH,05B5EH,0533EH,046FDH + .word 042DCH,00H + +WGSF_P_P: + .word 10 + .word 00H,07FFFH,07FBFH,07B5EH,07B1EH,07ADEH,076BDH,06E7BH + .word 06A5AH,00H + +WGSF_Y_P: + .word 10 + .word 00H,07FE0H,07FC0H,07F80H,07F60H,07F40H,07F20H,07EE0H + .word 07EC0H,00H + +WGSF_R_P: + .word 10 + .word 00H,07C00H,07800H,07000H,06C00H,06800H,06400H,05C00H + .word 05800H,00H + +SGMD8RED: + .word 12 + .word 0212BH,07CA0H,00H,07D4AH,07D29H,07D08H,07CE7H,07CC6H + .word 07CA5H,07C63H,07C42H,07C00H + +SGMD8YEL: + .word 16 + .word 00H,07F25H,00H,07FE0H,07FC0H,07FA0H,07F80H,07F60H + .word 07F40H,07F20H,07F00H,07EE0H,02E0H,07FFFH,06940H,027BH + +SGMD8BLU: + .word 12 + .word 0212BH,07F25H,00H,03EDFH,03ABEH,036BEH,0327CH,02A5BH + .word 0263AH,02218H,01E18H,01DF8H + +SGMD8VIO: + .word 12 + .word 0212BH,07F25H,00H,0641FH,0601FH,05C1FH,0581FH,0501FH + .word 04C1FH,0481FH,0441FH,0441FH + +SGMD8WHT: + .word 12 + .word 0212BH,07F25H,00H,07FFFH,07BDEH,077BDH,0739CH,06F7BH + .word 06B5AH,06318H,05EF7H,05AD6H + +SGMD8GRY: + .word 12 + .word 0212BH,07F25H,00H,06739H,06318H,05EF7H,05AD6H,056B5H + .word 05294H,04E73H,04A52H,04631H + +SGMD8WHT2: + .word 12 + .word 00H,07F25H,00H,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH + .word 07BDEH,0739CH,06F7BH,06B5AH + +SGMD8RED2: + .word 12 + .word 00H,07CA0H,00H,07CE7H,07CC6H,07CA5H,07C84H,07C63H + .word 07C42H,07C00H,07C00H,07C00H + +SGMD8GLD: + .word 12 + .word 0212BH,07F25H,00H,07F40H,07F20H,07F20H,07EE0H,07EC0H + .word 07EA0H,07E80H,07E80H,07E60H + +DUXPAL: + .word 11 + .word 00H,07C00H,06739H,01FH,035ADH,077A0H,0741AH,01AH + .word 015H,010H,0BH + +HORZTRN1P: + .word 31 + .word 0318CH,0204EH,0202EH,0246FH,02490H,02890H,02470H,02CB1H + .word 02C91H,02C90H,02CB2H,0242FH,0202FH,01C2EH,0204FH,038D2H + .word 03091H,03090H,03491H,03490H,038D1H,034B1H,0286FH,0140DH + .word 030F4H,040F7H,0100BH,0C0AH,0408H,05134H,07FFFH + +DIAGP: + .word 29 + .word 00H,056B5H,07BDEH,07800H,07640H,077A0H,03C0H,01EH + .word 03A8EH,035EH,035ADH,06F00H,033FH,079F7H,0781EH,0677FH + .word 06F9FH,07FFFH,025DAH,04H,00H,043H,0BF79H,0FCABH + .word 0D306H,012A6H,06FB1H,07C00H,03E0H + +LAVA1_P: + .word 9 + .word 00H,07CA2H,06802H,04865H,04065H,03444H,02C44H,02443H + .word 01C22H + +LAVA2_P: + .word 9 + .word 00H,07881H,06401H,04444H,03C44H,03023H,02823H,02022H + .word 01801H + +LAVA3_P: + .word 9 + .word 00H,074A2H,06002H,04065H,03865H,02C44H,02444H,01C43H + .word 01422H + +LAVA4_P: + .word 9 + .word 00H,070A2H,05C02H,03C65H,03465H,02844H,02044H,01843H + .word 01022H + +LAVA5_P: + .word 9 + .word 00H,06CA2H,05802H,03865H,03065H,02444H,01C44H,01443H + .word 0C22H + +LAVA6_P: + .word 9 + .word 00H,068A2H,05402H,03465H,02C65H,02044H,01844H,01043H + .word 0822H + +LAVA7_P: + .word 9 + .word 00H,064A2H,05002H,03065H,02865H,01C44H,01444H,0C43H + .word 0422H + +LAVA8_P: + .word 9 + .word 00H,060A2H,04C02H,02C65H,02465H,01844H,01044H,0843H + .word 022H + +LAVA9_P: + .word 9 + .word 00H,040A2H,02C02H,0C65H,0465H,044H,044H,043H + .word 022H + +LAVA10_P: + .word 9 + .word 00H,058A2H,04402H,02465H,01C65H,01044H,0844H,043H + .word 022H + +BARB_P: + .word 15 + .word 00H,05EFFH,04E7FH,035BEH,0295DH,0211CH,016H,014H + .word 011H,0FH,0DH,0BH,09H,07H,0421H + +FLASHP_P: + .word 48 + .word 00H,06F7CH,06F3CH,06EFCH,06EBCH,06E7CH,06E3CH,06DFCH + .word 06DBCH,06D7CH,06D5CH,06D1CH,06CBCH,06C9CH,06C3CH,06C1CH + .word 06C1CH,0681BH,06019H,05C18H,05416H,04C14H,04412H,03C10H + .word 0380FH,0300DH,0280BH,0240AH,01807H,01406H,01005H,00H + .word 07FFFH,07FFAH,07FF6H,07FF1H,07FEDH,07FE8H,07FE4H,07FE0H + .word 07B80H,07700H,072C1H,06E62H,06A22H,065C3H,06183H,06164H + +FLASHR_P: + .word 48 + .word 00H,07FDEH,07F9CH,07F5AH,07F18H,07ED6H,07E94H,07E52H + .word 07E10H,07DCEH,07DADH,07D6BH,07929H,07908H,074C6H,074A5H + .word 06CA5H,06884H,06084H,05C84H,05863H,05063H,04C42H,04442H + .word 04042H,03C21H,03421H,03021H,02800H,02400H,02000H,00H + .word 07FFFH,07FDBH,07FB6H,07FB2H,07B8EH,07B6AH,07B46H,07B42H + .word 076E2H,072A2H,07262H,06E23H,06A03H,065C3H,065A3H,06164H + +DPLT_R_P: + .word 31 + .word 00H,07FDEH,07F9CH,07F5AH,07F18H,07ED6H,07E94H,07E52H + .word 07E10H,07DCEH,07DADH,07D6BH,07929H,07908H,074C6H,074A5H + .word 06CA5H,06884H,06084H,05C84H,05863H,05063H,04C42H,04442H + .word 04042H,03C21H,03421H,03021H,02800H,02400H,02000H + +SWWFBB_P: + .word 32 + .word 0318CH,07B8AH,07B73H,07B2FH,07AE9H,06EEFH,062AEH,06E8BH + .word 06E65H,05E4AH,06226H,059E4H,041E8H,05961H,04D21H,04164H + .word 03947H,03944H,04101H,02905H,030C2H,020A1H,099FH,0109FH + .word 0211AH,01099H,04B6H,0914H,0432H,042CH,066H,02C2H + +SPLOG01P: + .word 18 + .word 0318CH,06739H,05EF7H,056B5H,04A52H,035ADH,02529H,013H + .word 011H,0FH,0DH,03193H,018D9H,018D3H,018CCH,09H + .word 05H,01H + +SPLOG02P: + .word 42 + .word 0318CH,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04A52H + .word 035ADH,02529H,01FH,01DH,01AH,017H,015H,013H + .word 011H,0FH,0DH,0673FH,04E7FH,04E79H,03279H,0319FH + .word 04D99H,030DFH,03199H,018DFH,01999H,03193H,030D9H,01993H + .word 03019H,018D9H,0D9H,030D3H,01819H,018D3H,018CCH,09H + .word 05H,01H + +SPLOG03P: + .word 18 + .word 00H,06739H,05EF7H,056B5H,04A52H,035ADH,02529H,013H + .word 011H,0FH,0DH,03193H,030D3H,018D3H,018CCH,09H + .word 05H,01H + +SPLOG04P: + .word 64 + .word 00H,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04A52H + .word 035ADH,02529H,07F39H,07E73H,07E6CH,06673H,0666CH,07D86H + .word 07CC6H,0658CH,07CC0H,06586H,06580H,064C6H,04D8CH,064C0H + .word 04D86H,04CCCH,04CC6H,04CC0H,04C06H,03400H,06800H,05C00H + .word 05400H,04C00H,04400H,01FH,01DH,01AH,017H,015H + .word 013H,011H,0DH,04F33H,04E7FH,04E79H,03279H,03199H + .word 01999H,03193H,01993H,018D9H,030D3H,018D3H,0D3H,018CCH + .word 09H,05H,01H,04E6CH,067FFH,04F39H,03273H,0198CH + +SPLOG05P: + .word 61 + .word 00H,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04A52H + .word 07F39H,07F33H,07E73H,07E6CH,06673H,0666CH,07D8CH,07D86H + .word 07CC6H,0658CH,07CC0H,07C06H,064CCH,064C6H,064C0H,07C00H + .word 07400H,06800H,05C00H,01FH,01DH,01AH,017H,015H + .word 013H,011H,0DH,067F9H,0673FH,04F3FH,0667FH,04E7FH + .word 0327FH,04E79H,01A7FH,03279H,0319FH,0199FH,03199H,018DFH + .word 01999H,03193H,0DFH,0181FH,018D9H,0D9H,09H,05H + .word 01H,07FF9H,06733H,067FFH,04F39H + +SPLOG06P: + .word 51 + .word 0318CH,07FFFH,077BDH,06F7BH,05EF7H,04A52H,07F39H,07F33H + .word 07E73H,07E6CH,07D93H,0666CH,07D8CH,07D86H,07D80H,07CC6H + .word 07CC0H,030C6H,03400H,02400H,01400H,07C00H,07400H,06800H + .word 05C00H,05400H,04C00H,04400H,01FH,01DH,01AH,017H + .word 015H,013H,011H,0DH,0673FH,04F3FH,04E7FH,0327FH + .word 0319FH,018DFH,0DFH,01993H,09H,05H,01H,07FF9H + .word 067FFH,04FFFH,0198CH + +SPLOG07P: + .word 64 + .word 0318CH,07FFFH,077BDH,06F7BH,035ADH,014A5H,07F39H,07F33H + .word 07EF2H,07E79H,07E73H,07E6CH,07E66H,06673H,07D93H,07D8CH + .word 07D86H,07D80H,07CCCH,07CC6H,0658CH,07CC0H,06580H,07C06H + .word 064CCH,064C6H,04C06H,030C0H,03400H,02400H,01400H,07C00H + .word 06800H,05400H,01FH,01DH,01AH,017H,015H,013H + .word 011H,0DH,01980H,0673FH,04F3FH,0333FH,04E7FH,0327FH + .word 04D9FH,0319FH,0199FH,018DFH,0DFH,018D3H,018CCH,09H + .word 05H,01H,07FF9H,04E66H,03180H,018C0H,067FFH,04FFFH + +SPLOG08P: + .word 58 + .word 0318CH,07FFFH,077BDH,06F7BH,06739H,05EF7H,07F39H,07F33H + .word 07E73H,07E6CH,07D86H,07CC6H,0658CH,07CC0H,064C6H,04D8CH + .word 064C0H,04D86H,03400H,07C00H,07400H,06800H,05C00H,05400H + .word 04C00H,04400H,01FH,01DH,01AH,017H,015H,013H + .word 011H,0DH,0673FH,04F3FH,04E7FH,0327FH,04E79H,03279H + .word 0319FH,0199FH,03199H,018DFH,01999H,0DFH,01993H,018D9H + .word 0D9H,01819H,018CCH,09H,05H,01H,07FF9H,067FFH + .word 04FFFH,03339H + +SPLOG09P: + .word 63 + .word 00H,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04A52H + .word 07F39H,07F33H,07E73H,06673H,0666CH,07D8CH,0658CH,06586H + .word 064C6H,04D8CH,064C0H,04D86H,04CCCH,04CC6H,04CC0H,04C06H + .word 06800H,05C00H,05400H,04C00H,01FH,01DH,01AH,017H + .word 015H,013H,011H,0DH,04F3FH,04E7FH,04E79H,03279H + .word 04D99H,03199H,018DFH,01999H,03193H,030D9H,01993H,018D9H + .word 0D9H,01819H,018D3H,0D3H,01813H,09H,05H,01H + .word 07FF9H,07FF3H,06733H,07F3FH,067FFH,04F39H,03273H + +SPLOG10P: + .word 45 + .word 00H,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04A52H + .word 035ADH,02529H,014A5H,04D8CH,04D86H,04CC6H,04CC0H,04C06H + .word 05C00H,05400H,04C00H,04400H,01AH,017H,015H,013H + .word 011H,0FH,0DH,04F33H,04F2CH,04E79H,03199H,03193H + .word 01993H,018D3H,0D3H,01813H,018CCH,09H,05H,01H + .word 04E6CH,03186H,04D93H,03273H,0198CH + +SPLOG11P: + .word 45 + .word 00H,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04A52H + .word 035ADH,02529H,014A5H,07F33H,07F2CH,07EF2H,07E73H,06673H + .word 0666CH,07D86H,07CC0H,04D8CH,04D86H,030C6H,024E3H,03400H + .word 02400H,01481H,01400H,07C00H,07400H,06800H,05C00H,05400H + .word 04C00H,04400H,011H,0326CH,01986H,09H,01H,06733H + .word 04E6CH,03186H,018C0H,0C6H,03273H + +SPLOG12P: + .word 64 + .word 00H,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04A52H + .word 035ADH,02529H,014A5H,07F33H,07F2CH,07EF2H,07E73H,07E66H + .word 06673H,0666CH,07D8CH,07D86H,07CC6H,07CC0H,064C6H,04D8CH + .word 04D86H,04CC6H,030C6H,030C0H,024E3H,03400H,02400H,01481H + .word 01400H,07C00H,07400H,06800H,05C00H,05400H,04C00H,04400H + .word 01DH,01AH,015H,04F33H,04F2CH,0326CH,01986H,0673FH + .word 04F3FH,04E79H,018DFH,018D3H,05H,01H,06733H,04E6CH + .word 03186H,01806H,0C6H,067FFH,04F39H,01A73H,0198CH,018CH + +SPLOG13P: + .word 55 + .word 0318CH,07FFFH,06F7BH,06739H,05EF7H,056B5H,04A52H,035ADH + .word 02529H,014A5H,07F33H,07F2CH,07E6CH,07E66H,06673H,0666CH + .word 07D8CH,07D86H,07CC0H,04D8CH,04D86H,04CC6H,030C6H,030C0H + .word 024E3H,03400H,02400H,01481H,01400H,07C00H,07400H,06800H + .word 05C00H,04C00H,04400H,011H,0DH,01986H,080H,0673FH + .word 04E79H,03193H,018D9H,018D3H,018CCH,09H,05H,01H + .word 06733H,04E6CH,04E66H,03186H,018C0H,0C6H,04F39H + +SPLOG14P: + .word 64 + .word 00H,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04A52H + .word 035ADH,02529H,014A5H,07F39H,07F33H,07E73H,07E6CH,06673H + .word 07D8CH,07D86H,07CC6H,0658CH,07CC0H,07C06H,01400H,07C00H + .word 07400H,01FH,01DH,01AH,017H,015H,013H,011H + .word 0DH,067F9H,080H,0673FH,04F3FH,0667FH,04E7FH,0327FH + .word 04E79H,01A7FH,0319FH,0199FH,03199H,018DFH,03193H,0DFH + .word 018D9H,0D9H,01819H,01813H,018CCH,09H,05H,01H + .word 07FF9H,06733H,04E6CH,03186H,018C0H,0C6H,067FFH,04F39H + +SPLOG15P: + .word 59 + .word 0318CH,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04A52H + .word 035ADH,02529H,014A5H,07F39H,07F33H,07F2CH,07E79H,07E73H + .word 07E6CH,07E66H,07D8CH,07D86H,07CC6H,07CC0H,06586H,07C06H + .word 04D8CH,07C00H,07400H,01FH,01DH,01AH,017H,015H + .word 013H,011H,0DH,0673FH,04F3FH,04E7FH,0327FH,04E79H + .word 0319FH,0199FH,019FH,03199H,018DFH,0DFH,0181FH,018D9H + .word 0D9H,01819H,018D3H,018CCH,09H,05H,01H,07FF9H + .word 06733H,067FFH,04F39H + +SPLOG16P: + .word 32 + .word 0318CH,07FFFH,077BDH,06F7BH,05EF7H,04A52H,035ADH,02529H + .word 014A5H,017H,015H,013H,011H,0DH,0673FH,0667FH + .word 04E79H,03279H,03199H,03193H,030D9H,030D3H,018D3H,0D3H + .word 01813H,018CCH,09H,05H,01H,07FF9H,06733H,04E6CH + +SPLOG17P: + .word 32 + .word 0318CH,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04A52H + .word 035ADH,02529H,014A5H,01AH,017H,015H,013H,011H + .word 0DH,0673FH,04E7FH,04E79H,03199H,03193H,018D9H,030D3H + .word 018D3H,018CCH,09H,05H,01H,07FF9H,06733H,03186H + +ATTTXT_P: + .word 3 + .word 0212BH,07FE0H,00H + +MGP_G_P: + .word 31 + .word 00H,07BDEH,077BDH,0739CH,06F7BH,06B5AH,06739H,06318H + .word 05EF7H,05AD6H,056B5H,05294H,04E73H,04A52H,04631H,04210H + .word 03DEFH,039CEH,035ADH,0318CH,02D6BH,0294AH,02529H,02108H + .word 01CE7H,018C6H,014A5H,01084H,0C63H,0842H,0421H + +CRUTPLTGP: + .word 23 + .word 00H,07FFFH,06B5AH,06739H,05EF7H,05AD6H,056B5H,05294H + .word 04E73H,04A52H,04631H,04210H,03DEFH,039CEH,035ADH,0318CH + .word 02D6BH,0294AH,02529H,02108H,01CE7H,018C6H,014A5H + +SPEAR_P: + .word 28 + .word 00H,07F5AH,07B18H,07AD6H,07694H,07252H,07210H,06DCEH + .word 06DADH,0696BH,06529H,06508H,060C6H,060A5H,058A5H,05484H + .word 04C84H,04884H,04463H,03C63H,03842H,03042H,02C42H,02821H + .word 02021H,01C21H,01400H,01000H + +SHADOW_P: + .word 2 + .word 01CE7H,00H + +WNSC_W_P: + .word 4 + .word 00H,07FFFH,00H,00H + +HANDS_P: + .word 64 + .word 040B8H,01D8AH,00H,020H,081H,02A0EH,0125H,0E3H + .word 0D88H,0546H,060H,015CAH,015A9H,0967H,0104H,01E0CH + .word 01DEBH,02E6FH,0262DH,036B1H,02A4EH,0220CH,03EF3H,03290H + .word 01188H,01E0DH,036D3H,03F16H,0966H,019CAH,01167H,01166H + .word 0944H,021EBH,019A8H,0923H,0479BH,0C2H,01186H,032B3H + .word 01EAH,0222FH,0544H,036F5H,04E3H,02E90H,02E92H,0C0H + .word 0264FH,02A71H,080H,0925H,02EB3H,04E2H,0A1H,021EAH + .word 01126H,04568H,03D26H,03505H,02CC4H,024A3H,01C82H,01462H + +COFFIN_P: + .word 49 + .word 0208AH,0CA4H,039A9H,03567H,02D46H,02926H,02505H,020E5H + .word 01CE4H,018C4H,031AAH,02D89H,02969H,02548H,02528H,02507H + .word 02506H,020E6H,01CC5H,014E5H,018A5H,010C4H,0883H,0863H + .word 0462H,0442H,0CA3H,01CE5H,020E7H,024C7H,024E6H,01D27H + .word 02906H,01906H,0C83H,018C5H,010A4H,02508H,01CC6H,020E4H + .word 02D26H,02905H,024E5H,01CC4H,018A3H,01483H,0C62H,029A9H + .word 031CAH + +MATCOF_P: + .word 64 + .word 0208AH,03167H,02968H,02127H,07799H,07779H,07778H,07379H + .word 07378H,07757H,07358H,07357H,06F58H,07336H,07735H,07337H + .word 06F38H,06F37H,06F36H,06B37H,06F16H,06F15H,06B17H,06B16H + .word 06F13H,06EF5H,06EF3H,06AF5H,06AF4H,066F5H,066F4H,062F5H + .word 066D4H,066D3H,062D5H,062D4H,062D3H,066B3H,05EB3H,05EB2H + .word 05E92H,05A91H,05A71H,05670H,0564FH,05250H,0524FH,0522FH + .word 04E2FH,04E2EH,04A0EH,045EDH,045CCH,0441H,0C41H,00H + .word 00H,00H,0C62H,010A3H,018C4H,01D05H,02DA9H,035CAH + +TMBMAT_P: + .word 64 + .word 0208AH,039A9H,03567H,07FDBH,07B9AH,07779H,07758H,07358H + .word 07337H,06F37H,06F36H,06B37H,06F16H,06B17H,06B16H,06B15H + .word 066F5H,066F4H,06AD4H,066D4H,062D3H,066B3H,062B3H,05EB2H + .word 05E91H,05A92H,05A91H,05A71H,05671H,05670H,05650H,05250H + .word 04E2FH,04E0EH,024E6H,02906H,0C83H,03DEFH,039CEH,035ADH + .word 0318CH,02D6BH,0294AH,02529H,02108H,01CE7H,018C6H,014A5H + .word 01084H,0842H,02D26H,02905H,01CC4H,018A3H,01483H,0C62H + .word 04146H,03925H,03505H,02CE4H,028C3H,020A3H,0862H,0360BH + +BALL_p: + .word 63 + .word 07C1FH,0808H,01806H,01088H,0AH,01CC5H,02C81H,0CH + .word 03002H,0EH,03800H,02184H,028CAH,011H,0852H,013H + .word 0318AH,039C0H,0440EH,02CF2H,05C00H,04600H,01097H,0540CH + .word 02017H,03855H,04E25H,085BH,038D7H,032EAH,018DBH,05680H + .word 0686CH,046ACH,07406H,02B68H,05CD3H,0562EH,07C00H,07C42H + .word 0472AH,06E66H,07D4AH,0295FH,06D15H,03BE8H,035BFH,07DCEH + .word 03BEEH,06F2CH,049FFH,04BF2H,07E73H,07DF6H,06755H,0659FH + .word 05E7FH,057F5H,075FFH,06FF5H,07EBFH,07F99H,077FDH + +GLOVEP_P: + .word 29 + .word 0318CH,07E9FH,07A5EH,0761DH,071BCH,06D7BH,0695AH,064F9H + .word 060D8H,058B6H,054B5H,05094H,04C73H,04872H,04451H,04050H + .word 03C2FH,0382EH,0302CH,0300CH,02C0BH,0280AH,02409H,02008H + .word 01C07H,01806H,01405H,0421H,0441H + +FIRBAL_P: + .word 61 + .word 0318CH,07FFFH,07FF8H,07FF5H,07FF2H,07FCEH,07FAAH,07F85H + .word 07F51H,07F4DH,07F48H,07F26H,07F22H,07EC5H,07E8CH,07EA8H + .word 07EC1H,07E6CH,07E46H,07E29H,07E21H,07DE6H,07DC8H,07DE4H + .word 07DE3H,07DE0H,07DA6H,07DA4H,07DA3H,07DA0H,075A6H,075A4H + .word 075C0H,07948H,07564H,07580H,07941H,06DA1H,070E6H,06D20H + .word 06924H,070E0H,064C1H,05CC4H,06061H,05880H,05062H,048A0H + .word 04C60H,04C42H,04C00H,04063H,04040H,03C42H,04000H,03C00H + .word 03000H,02842H,02C00H,02000H,01800H + +DNKBLU_P: + .word 64 + .word 00H,07FFFH,06F7BH,05EF7H,04E73H,03DEFH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0421H,07FEBH,07FA5H,07B41H,06EC0H + .word 06260H,05F8FH,0536BH,04748H,03705H,02AE3H,01EC0H,01A80H + .word 01640H,01600H,011C1H,01181H,0D41H,0D01H,07EF9H,07E55H + .word 07DD1H,07CC8H,07400H,06C00H,06400H,05C00H,05400H,04C00H + .word 04400H,03800H,03000H,02021H,067BFH,03AFEH,0227DH,01BBH + .word 0179H,0136H,0F4H,0D2H,08FH,06DH,04BH,028H + .word 027H,0626EH,05A0EH,045A9H,04566H,03926H,01C83H,01841H + +BAMBLU_P: + .word 64 + .word 0E7H,07FFFH,04A52H,04210H,039CEH,0318CH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0842H,07D46H,07126H,06CC2H,06126H + .word 060C4H,06C41H,060A2H,05C41H,05083H,04C41H,03C20H,03020H + .word 01800H,077FAH,0327EH,01996H,0D59H,01153H,0512H,0F1H + .word 0CFH,06DH,07F79H,07F55H,07B13H,07AD1H,0728FH,0766DH + .word 06A4DH,0626BH,065E9H,059C9H,05187H,04D87H,05165H,04585H + .word 04901H,04103H,03903H,034C1H,02840H,01000H,07BEFH,07FC2H + .word 07F82H,07EE1H,07E60H,07DC0H,07D20H,064E0H,04CA0H,04080H + +UNDPRP_P: + .word 64 + .word 00H,07BBBH,07B77H,076F3H,06EB0H,0666FH,05E2DH,051EBH + .word 049CBH,045A9H,04167H,03947H,03D25H,03D03H,03105H,030E3H + .word 028C3H,02C80H,02081H,01861H,01840H,01420H,0C00H,07BDDH + .word 06B39H,06717H,062F6H,05AD5H,05272H,04A51H,0420FH,03DEEH + .word 039CDH,035ACH,0318BH,0316AH,02949H,02107H,01CE6H,014C5H + .word 014A4H,0C83H,0862H,0841H,0441H,0420H,0781EH,0701CH + .word 0681AH,06419H,05C17H,05415H,05014H,04812H,04010H,0380EH + .word 0340DH,02C0BH,02409H,02008H,01806H,01004H,0C03H,0401H + +MKCOIN_P: + .word 63 + .word 01FH,07FFFH,077BDH,07FE4H,07F83H,06B5AH,06739H,07F01H + .word 06B22H,07EE1H,076E6H,07EC2H,05AD6H,07EA1H,07E41H,07E21H + .word 066A1H,05294H,07D60H,06A24H,04A52H,0522EH,05642H,04631H + .word 065E0H,07CC0H,078A0H,06161H,039CEH,045C5H,035ADH,045A0H + .word 04D60H,04942H,05880H,03969H,05860H,04540H,04500H,03941H + .word 0294AH,040E0H,03520H,03CC0H,02529H,04040H,01CE7H,03440H + .word 020C5H,024C0H,02C60H,02460H,014A5H,02420H,01880H,01840H + .word 01820H,0C63H,01040H,01020H,0C40H,0820H,00H + +TM_P: + .word 2 + .word 00H,07FFFH + +mKlIGHT_p: + .word 32 + .word 01FH,0675EH,05F1DH,05AFCH,056DAH,056D9H,052B9H,05298H + .word 04E97H,04E77H,04A76H,04655H,04634H,04234H,04213H,03DF2H + .word 035CEH,02D8EH,02D6DH,0294CH,0254CH,0252BH,0210AH,02109H + .word 018E8H,018C7H,014A6H,01084H,0C63H,0842H,0421H,07FFFH + +IDRAG_P: + .word 59 + .word 01FH,07FA0H,07762H,07720H,06B05H,07AE1H,06AE1H,07AA1H + .word 07601H,06DE1H,069E4H,06DC1H,06225H,06201H,07141H,065A4H + .word 07501H,04E24H,05220H,07101H,070E1H,06541H,06901H,068E1H + .word 06101H,060C1H,05CC2H,058E2H,05122H,050E2H,04522H,050A1H + .word 04CA1H,02D43H,04481H,04082H,03481H,03841H,02CC1H,03461H + .word 03081H,024C5H,02C61H,01CC1H,02841H,02461H,02061H,01C41H + .word 0C84H,01461H,01420H,0C42H,01000H,0441H,022H,0421H + .word 0800H,021H,00H + +ILIGHT_P: + .word 64 + .word 00H,01C64H,01C85H,01C65H,01C86H,01C87H,01887H,01888H + .word 02D4CH,01889H,0188AH,0188BH,0148BH,0148DH,0148CH,0148FH + .word 0148EH,01093H,01092H,01091H,01090H,018CFH,0C98H,0C97H + .word 0C96H,0C95H,010B8H,0479H,0478H,089CH,089BH,089AH + .word 0C94H,02135H,049DH,049EH,049FH,0477H,0475H,0476H + .word 0473H,0899H,0898H,014F7H,049CH,0499H,049AH,049BH + .word 0498H,0472H,0CDBH,010F7H,031B3H,031B1H,04A49H,04E6AH + .word 062E6H,07FA0H,07761H,07762H,05689H,05242H,03987H,01C63H + +IMK_P: + .word 64 + .word 01FH,07EE5H,07E86H,07AA5H,07AA4H,05EB4H,07685H,05A93H + .word 07644H,06E44H,06645H,071C3H,04E52H,06227H,069E4H,06DA3H + .word 06D63H,05DE7H,06D02H,06902H,055C5H,06143H,05983H,068C2H + .word 05189H,041ADH,060C2H,05525H,04D66H,06462H,058E2H,054E5H + .word 02DAEH,03D86H,05882H,0396AH,048E6H,04143H,02D6BH,03D45H + .word 04C82H,03923H,04481H,02928H,04082H,02508H,03483H,02CC4H + .word 020E7H,028C5H,028C3H,02483H,014C6H,020A3H,02462H,0CA6H + .word 010A5H,01C62H,01483H,01842H,01022H,0843H,0422H,00H + +IRAID_P: + .word 64 + .word 00H,00H,0822H,0292AH,03DCFH,018A7H,03DD1H,0292DH + .word 05698H,05AB9H,01CCCH,0828H,0C49H,0C6AH,0108AH,01087H + .word 039D5H,0252DH,04A56H,04A55H,026H,0298EH,09F0H,09AEH + .word 06F9BH,0C62H,02947H,07FF6H,07FFCH,07FD4H,07FB2H,07F4EH + .word 0C40H,06E86H,06269H,076EBH,07F50H,06ECDH,07732H,06B15H + .word 06AD0H,04984H,07F76H,072ADH,01483H,0820H,061A2H,045A9H + .word 07AF0H,028E4H,06A6DH,05E2DH,03127H,04DECH,04146H,05DEAH + .word 051A9H,03948H,049CCH,01C83H,05589H,0400H,0354AH,07FFFH + +IKAHN_P: + .word 60 + .word 00H,00H,04885H,04464H,05086H,04465H,02064H,01464H + .word 04231H,07BFFH,06759H,04A71H,035A7H,02947H,02D68H,014A4H + .word 0420DH,0318AH,018C5H,05292H,05AD4H,07FFDH,04630H,06738H + .word 0739BH,077BCH,03DCAH,07BBAH,020C3H,062D3H,018A4H,034A3H + .word 024A4H,01C21H,03084H,01042H,018A5H,01CC6H,05694H,0421H + .word 0C63H,01084H,014A5H,018C6H,01CE7H,02108H,0294AH,02D6BH + .word 035ADH,039CEH,03DEFH,04A52H,04E73H,05294H,05AD6H,06B5AH + .word 06F7BH,0739CH,07BDEH,07FFFH + +ITHREE_P: + .word 59 + .word 00H,00H,01H,022H,063H,0863H,018E7H,010A4H + .word 07EC5H,07286H,020E5H,07A84H,06E45H,06625H,051C6H,061E4H + .word 07A66H,06206H,04D84H,0820H,01CC5H,07E03H,065A3H,07E25H + .word 04D86H,0622BH,06DA3H,038E2H,02CC3H,04503H,0726EH,05D43H + .word 04903H,03DACH,01C61H,03D05H,01462H,06D23H,0498AH,062B4H + .word 066B4H,05527H,02C41H,06927H,06CA3H,04083H,060C5H,05C20H + .word 06C41H,06062H,07CE6H,05863H,03442H,02484H,02D08H,04DCEH + .word 06294H,04610H,02D6BH + +IYIN_P: + .word 62 + .word 01FH,07FA0H,07F80H,07F40H,07F00H,07B00H,07EC0H,072E0H + .word 07E80H,07E60H,07A80H,07E20H,07A40H,06E80H,07640H,07DE0H + .word 07620H,07D80H,075A0H,07D40H,07960H,06A00H,07D00H,06220H + .word 07CE0H,069A0H,05A00H,06580H,06D20H,061A0H,074C0H,05DC0H + .word 06920H,06900H,068C0H,051C0H,05960H,05D20H,05180H,04980H + .word 05100H,04580H,04940H,04540H,050A0H,044E0H,04C80H,044A0H + .word 03920H,03C80H,034C0H,02CE0H,03460H,028A0H,03040H,02C40H + .word 01860H,01C20H,01000H,0C00H,0800H,00H + +IGORO_P: + .word 57 + .word 00H,014A5H,02906H,02907H,02D28H,02908H,02909H,02D2AH + .word 03130H,02D2BH,0290BH,03117H,03118H,0395BH,03D7CH,03D7BH + .word 0419CH,02D14H,03135H,03D7EH,03D7DH,0419EH,02D15H,02D17H + .word 02D18H,03139H,03138H,03136H,0355BH,0355AH,0397CH,0397AH + .word 03D9CH,041BCH,045DFH,045DEH,045DDH,02911H,02D31H,02D30H + .word 0397DH,03153H,03D9EH,041BFH,02913H,02914H,02D34H,03158H + .word 03155H,03579H,02D3CH,0250DH,0250EH,02510H,02927H,02905H + .word 02D26H + +IQ_P: + .word 63 + .word 01FH,00H,05A96H,03DB3H,0292CH,039B0H,03DD1H,04E55H + .word 028F3H,03152H,0567BH,03576H,0250DH,0C13H,01890H,045FBH + .word 0C30H,01879H,0357AH,0811H,01054H,01476H,01475H,01897H + .word 024F8H,0291BH,0357CH,040BH,01CB9H,040EH,09H,0860H + .word 02540H,01CE0H,03180H,03DE0H,04A41H,04201H,02D61H,05AC3H + .word 07BC7H,04626H,0738AH,06733H,07784H,062E2H,06B25H,062E5H + .word 05685H,06F49H,062E8H,0670DH,06F4FH,03DC4H,0568AH,05ECCH + .word 05AAFH,0460DH,05AB2H,0566FH,04E31H,05252H,05ED6H + +ISKULL_P: + .word 57 + .word 01FH,00H,0400H,0820H,0843H,0C41H,0C42H,01063H + .word 010A5H,01CA4H,01CC5H,020C4H,024C4H,024E6H,02507H,02529H + .word 028E5H,02907H,02CE5H,03128H,03548H,03569H,0358CH,0398CH + .word 039ABH,03D69H,0418AH,041ADH,0420FH,045CCH,04A0EH,0522FH + .word 05272H,0562FH,05631H,05650H,05694H,05E71H,05E92H,05ED6H + .word 06293H,062B4H,066D4H,06AF5H,06B17H,06B38H,06E8FH,06EF5H + .word 06F37H,06F5AH,07316H,07758H,0779BH,07B9BH,07FDCH,07FDEH + .word 07FFFH + +BOX1_P: + .word 27 + .word 01FH,01084H,014A5H,018C6H,01CE7H,02108H,02529H,0294AH + .word 02D6BH,0318CH,035ADH,039CEH,03DEFH,04210H,04631H,04A52H + .word 04E73H,05294H,056B5H,05EF7H,06318H,06739H,06B5AH,06F7BH + .word 0739CH,077BDH,07FFFH + +FWWHT_P: + .word 16 + .word 0352DH,07FFFH,07BDEH,077BDH,0739CH,06B5AH,06739H,06318H + .word 05EF7H,05AD6H,056B5H,05294H,04A52H,04631H,04210H,03DEFH + +FWBLV_P: + .word 16 + .word 00H,07FFFH,07BBFH,0779FH,0737FH,06F3FH,06F1FH,06ADFH + .word 066BFH,0627FH,05E5FH,05A1FH,055FFH,051BFH,04D9FH,04D7FH + +FWPNK_P: + .word 16 + .word 00H,07FFFH,07FBEH,07F5DH,07F1CH,07EDBH,07E9AH,07E39H + .word 07DF8H,07DB7H,07D56H,07D15H,07CD4H,07C93H,07C32H,07C11H + +FWBLU_P: + .word 16 + .word 00H,07FFFH,07BFFH,077FFH,073DFH,06FDFH,06BDFH,067DFH + .word 063DFH,053BFH,0479FH,0377FH,02B7FH,01B5FH,0F5FH,033FH + +FWPRP_P: + .word 16 + .word 00H,07FFFH,07FBFH,07B9FH,07B5FH,07B1FH,07AFFH,076BFH + .word 0769FH,0763FH,071DFH,0717FH,06D1FH,06CBFH,0685FH,0681FH + +FWYEL_P: + .word 16 + .word 00H,07FFFH,07FFBH,07FF8H,07FF4H,07FF1H,07FEDH,07FEAH + .word 07FE6H,07FE3H,07FE0H,07FA0H,07F40H,07F00H,07EA0H,07E60H + +BLDSPIN_P: + .word 16 + .word 0346EH,07FFFH,05AD6H,05294H,04E73H,04A52H,04631H,04210H + .word 03DEFH,039CEH,0318CH,02D6BH,02529H,02108H,01CE7H,018C6H + +SHNRED_P: + .word 63 + .word 00H,07FDDH,07F98H,07F58H,07F34H,07AD1H,07AB0H,0768FH + .word 06E90H,06E6EH,06E4DH,0622CH,05E0CH,059EAH,05DC9H,055CAH + .word 051A8H,04D89H,04D87H,04567H,04925H,04124H,03925H,03D03H + .word 038E2H,038C1H,030E4H,030C3H,03480H,02460H,02420H,01C40H + .word 01400H,0400H,076D6H,0720FH,06DABH,07128H,070C5H,06C42H + .word 06800H,06400H,05800H,05000H,04800H,03800H,02800H,01800H + .word 07BDEH,0739CH,06B5AH,06318H,05AD6H,05294H,04631H,03DEFH + .word 035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + +YOKRED_P: + .word 64 + .word 00H,07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04A52H + .word 04210H,039CEH,0318CH,0294AH,02108H,014A5H,0C63H,0421H + .word 0400H,07F9AH,07B14H,07EF1H,07ACFH,076B0H,0768EH,06E4BH + .word 06A4DH,0622CH,0660BH,05A0CH,059EAH,051A8H,05187H,04988H + .word 04966H,04124H,04102H,03904H,038E2H,030A1H,03480H,02881H + .word 02840H,02400H,01400H,07E91H,07DAAH,07905H,070C3H,06CE4H + .word 064A2H,06081H,05CA2H,05860H,05840H,05460H,05040H,04C60H + .word 04C40H,04420H,04000H,03C20H,03C00H,03400H,02C00H,02000H + +RZRGRN_P: + .word 64 + .word 00H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 014C5H,010A4H,0C83H,0862H,0821H,00H,07FFEH,07FDAH + .word 07F98H,07F55H,07F54H,07F35H,07F12H,07EF3H,07ED0H,07ED1H + .word 07AD2H,07EAFH,07E8EH,07290H,0766EH,0724EH,06A4EH,06E2DH + .word 0620CH,065EAH,05DEBH,05DCAH,059CAH,055A8H,05188H,04D67H + .word 04125H,04502H,038E3H,03461H,02061H,01C20H,01000H,07FE8H + .word 07FA0H,07EE0H,065E0H,03D80H,0785H,0323H,02A1H,0240H + .word 0200H,01C0H,01A0H,0180H,0160H,0120H,0E0H,0A0H + +LEXWHT_P: + .word 64 + .word 00H,07FDDH,07FBCH,07F55H,07AF4H,07AB2H,07AB0H,07A6EH + .word 06E4DH,0722CH,06A2DH,0660DH,05E0DH,061EBH,05DC9H,059A9H + .word 05189H,05167H,04546H,04103H,03D04H,03505H,02CC3H,02C81H + .word 02440H,01800H,0400H,0529AH,039DBH,0319AH,02955H,018D1H + .word 084DH,042AH,06D8CH,06D07H,06863H,04C42H,03863H,03800H + .word 02800H,07BDEH,0739CH,06739H,056B5H,04631H,02529H,014A5H + .word 0C63H,07FFFH,077BDH,06F7BH,06739H,05EF7H,05AD6H,05294H + .word 04A52H,04210H,039CEH,0318CH,0294AH,02108H,018C6H,014A5H + +DPLT_W_P: + .word 31 + .word 00H,07FFFH,07FFFH,07BDEH,077BDH,0739CH,06F7BH,06B5AH + .word 06739H,06318H,05EF7H,05AD6H,056B5H,05294H,04E73H,04A52H + .word 04631H,04210H,03DEFH,039CEH,035ADH,0318CH,02D6BH,0294AH + .word 02529H,02108H,01CE7H,018C6H,014A5H,01084H,0C63H + +CHGLWB1P: + .word 64 + .word 00H,0674BH,05F05H,04EC4H,04E89H,04E81H,04266H,04662H + .word 03E28H,04223H,03E04H,035E8H,039E5H,039E2H,031C8H,035C3H + .word 031ACH,031C1H,031A5H,02DA2H,02989H,02D84H,02982H,02D66H + .word 02968H,0256AH,02563H,02947H,0214AH,02547H,02D41H,02525H + .word 02123H,02108H,01D21H,02105H,02102H,020E3H,018E4H,018C5H + .word 014C2H,018A4H,014A5H,010A3H,0C83H,052D4H,04254H,035F3H + .word 02D8CH,0254CH,0212AH,01D0BH,02108H,01CE8H,018C8H,014A8H + .word 014A5H,01087H,01484H,01085H,0C63H,0864H,0C45H,0423H + +CHGLWB2P: + .word 64 + .word 00H,0632BH,05AE5H,04AA4H,04A69H,04A61H,03E46H,04242H + .word 03A08H,03E03H,039E4H,031C8H,035C5H,035C2H,02DA8H,031A3H + .word 02D8CH,02DA1H,02D85H,02982H,02569H,02964H,02562H,02946H + .word 02548H,0214AH,02143H,02527H,01D2AH,02127H,02921H,02105H + .word 01D03H,01CE8H,01901H,01CE5H,01CE2H,01CC3H,014C4H,014A5H + .word 010A2H,01484H,01085H,0C83H,0863H,052D4H,04254H,035F3H + .word 02D8CH,0254CH,0212AH,01D0BH,02108H,01CE8H,018C8H,014A8H + .word 014A5H,01087H,01484H,01085H,0C63H,0864H,0C45H,0423H + +CHGLWB3P: + .word 64 + .word 00H,05F0BH,056C5H,04684H,04649H,04641H,03A26H,03E22H + .word 035E8H,039E3H,035C4H,02DA8H,031A5H,031A2H,02988H,02D83H + .word 0296CH,02981H,02965H,02562H,02149H,02544H,02142H,02526H + .word 02128H,01D2AH,01D23H,02107H,0190AH,01D07H,02501H,01CE5H + .word 018E3H,018C8H,014E1H,018C5H,018C2H,018A3H,010A4H,01085H + .word 0C82H,01064H,0C65H,0863H,0443H,052D4H,04254H,035F3H + .word 02D8CH,0254CH,0212AH,01D0BH,02108H,01CE8H,018C8H,014A8H + .word 014A5H,01087H,01484H,01085H,0C63H,0864H,0C45H,0423H + +CHGLWB4P: + .word 64 + .word 00H,05AEBH,052A5H,04264H,04229H,04221H,03606H,03A02H + .word 031C8H,035C3H,031A4H,02988H,02D85H,02D82H,02568H,02963H + .word 0254CH,02561H,02545H,02142H,01D29H,02124H,01D22H,02106H + .word 01D08H,0190AH,01903H,01CE7H,014EAH,018E7H,020E1H,018C5H + .word 014C3H,014A8H,010C1H,014A5H,014A2H,01483H,0C84H,0C65H + .word 0862H,0C44H,0845H,0443H,023H,052D4H,04254H,035F3H + .word 02D8CH,0254CH,0212AH,01D0BH,02108H,01CE8H,018C8H,014A8H + .word 014A5H,01087H,01484H,01085H,0C63H,0864H,0C45H,0423H + +CHGLWB5P: + .word 64 + .word 00H,056CBH,04E85H,03E44H,03E09H,03E01H,031E6H,035E2H + .word 02DA8H,031A3H,02D84H,02568H,02965H,02962H,02148H,02543H + .word 0212CH,02141H,02125H,01D22H,01D29H,02124H,01D22H,02106H + .word 01D08H,0190AH,01903H,01CE7H,014EAH,018E7H,020E1H,018C5H + .word 014C3H,014A8H,010C1H,014A5H,014A2H,01483H,0C84H,0C65H + .word 0862H,0C44H,0845H,0443H,023H,052D4H,04254H,035F3H + .word 02D8CH,0254CH,0212AH,01D0BH,02108H,01CE8H,018C8H,014A8H + .word 014A5H,01087H,01484H,01085H,0C63H,0864H,0C45H,0423H + +CHGLWB6P: + .word 64 + .word 00H,052ABH,04A65H,03A24H,039E9H,039E1H,02DC6H,031C2H + .word 02988H,02D83H,02964H,02148H,02545H,02542H,01D28H,02123H + .word 01D0CH,01D21H,01D05H,01902H,01D29H,02124H,01D22H,02106H + .word 01D08H,0190AH,01903H,01CE7H,014EAH,018E7H,020E1H,018C5H + .word 014C3H,014A8H,010C1H,014A5H,014A2H,01483H,0C84H,0C65H + .word 0862H,0C44H,0845H,0443H,023H,052D4H,04254H,035F3H + .word 02D8CH,0254CH,0212AH,01D0BH,02108H,01CE8H,018C8H,014A8H + .word 014A5H,01087H,01484H,01085H,0C63H,0864H,0C45H,0423H + +CHGLWB7P: + .word 64 + .word 00H,04E8BH,04645H,03604H,035C9H,035C1H,029A6H,02DA2H + .word 02568H,02963H,02544H,01D28H,02125H,02122H,01908H,01D03H + .word 018ECH,01901H,018E5H,014E2H,01D29H,02124H,01D22H,02106H + .word 01D08H,0190AH,01903H,01CE7H,014EAH,018E7H,020E1H,018C5H + .word 014C3H,014A8H,010C1H,014A5H,014A2H,01483H,0C84H,0C65H + .word 0862H,0C44H,0845H,0443H,023H,052D4H,04254H,035F3H + .word 02D8CH,0254CH,0212AH,01D0BH,02108H,01CE8H,018C8H,014A8H + .word 014A5H,01087H,01484H,01085H,0C63H,0864H,0C45H,0423H + +CHGLWB8P: + .word 64 + .word 00H,04A6BH,04225H,031E4H,031A9H,031A1H,02586H,02982H + .word 02148H,02543H,02124H,01908H,01D05H,01D02H,014E8H,018E3H + .word 014CCH,014E1H,014C5H,010C2H,01D29H,02124H,01D22H,02106H + .word 01D08H,0190AH,01903H,01CE7H,014EAH,018E7H,020E1H,018C5H + .word 014C3H,014A8H,010C1H,014A5H,014A2H,01483H,0C84H,0C65H + .word 0862H,0C44H,0845H,0443H,023H,052D4H,04254H,035F3H + .word 02D8CH,0254CH,0212AH,01D0BH,02108H,01CE8H,018C8H,014A8H + .word 014A5H,01087H,01484H,01085H,0C63H,0864H,0C45H,0423H + +CHGLWB9P: + .word 64 + .word 00H,0464BH,03E05H,02DC4H,02D89H,02D81H,02166H,02562H + .word 01D28H,02123H,01D04H,014E8H,018E5H,018E2H,010C8H,014C3H + .word 010ACH,010C1H,010A5H,0CA2H,01D29H,02124H,01D22H,02106H + .word 01D08H,0190AH,01903H,01CE7H,014EAH,018E7H,020E1H,018C5H + .word 014C3H,014A8H,010C1H,014A5H,014A2H,01483H,0C84H,0C65H + .word 0862H,0C44H,0845H,0443H,023H,052D4H,04254H,035F3H + .word 02D8CH,0254CH,0212AH,01D0BH,02108H,01CE8H,018C8H,014A8H + .word 014A5H,01087H,01484H,01085H,0C63H,0864H,0C45H,0423H + +CHGLWT1P: + .word 64 + .word 00H,0632FH,056D4H,04E90H,05286H,04E68H,04663H,04244H + .word 04228H,03E25H,03A08H,03E04H,03A06H,039ECH,03DE9H,035E8H + .word 03DE2H,035E6H,039CAH,039C5H,035C5H,031C7H,031ACH,031A9H + .word 02DA8H,031A3H,03186H,0298AH,02988H,02D84H,02D6BH,02D82H + .word 02D65H,02569H,02548H,02546H,02540H,02107H,02104H,01CE6H + .word 018E3H,018C7H,010C2H,014A5H,0C44H,04674H,035F0H,035CEH + .word 02D90H,02D8EH,0296DH,0256BH,0254AH,0214AH,0252DH,01D0CH + .word 0190BH,01D0AH,018C8H,014A8H,014A6H,01085H,0C65H,0844H + +CHGLWT2P: + .word 64 + .word 00H,05F0FH,052B4H,04A70H,04E66H,04A48H,04243H,03E24H + .word 03E08H,03A05H,035E8H,039E4H,035E6H,035CCH,039C9H,031C8H + .word 039C2H,031C6H,035AAH,035A5H,031A5H,02DA7H,02D8CH,02D89H + .word 02988H,02D83H,02D66H,0256AH,02568H,02964H,0294BH,02962H + .word 02945H,02149H,02128H,02126H,02120H,01CE7H,01CE4H,018C6H + .word 014C3H,014A7H,0CA2H,01085H,0824H,04674H,035F0H,035CEH + .word 02D90H,02D8EH,0296DH,0256BH,0254AH,0214AH,0252DH,01D0CH + .word 0190BH,01D0AH,018C8H,014A8H,014A6H,01085H,0C65H,0844H + +CHGLWT3P: + .word 64 + .word 00H,05AEFH,04E94H,04650H,04A46H,04628H,03E23H,03A04H + .word 039E8H,035E5H,031C8H,035C4H,031C6H,031ACH,035A9H,02DA8H + .word 035A2H,02DA6H,0318AH,03185H,02D85H,02987H,0296CH,02969H + .word 02568H,02963H,02946H,0214AH,02148H,02544H,0252BH,02542H + .word 02525H,01D29H,01D08H,01D06H,01D00H,018C7H,018C4H,014A6H + .word 010A3H,01087H,0882H,0C65H,0404H,04674H,035F0H,035CEH + .word 02D90H,02D8EH,0296DH,0256BH,0254AH,0214AH,0252DH,01D0CH + .word 0190BH,01D0AH,018C8H,014A8H,014A6H,01085H,0C65H,0844H + +CHGLWT4P: + .word 64 + .word 00H,056CFH,04A74H,04230H,04626H,04208H,03A03H,035E4H + .word 035C8H,031C5H,02DA8H,031A4H,02DA6H,02D8CH,03189H,02988H + .word 03182H,02986H,02D6AH,02D65H,02965H,02567H,0254CH,02549H + .word 02148H,02543H,02526H,0214AH,02148H,02544H,0252BH,02542H + .word 02525H,01D29H,01D08H,01D06H,01D00H,018C7H,018C4H,014A6H + .word 010A3H,01087H,0882H,0C65H,0404H,04674H,035F0H,035CEH + .word 02D90H,02D8EH,0296DH,0256BH,0254AH,0214AH,0252DH,01D0CH + .word 0190BH,01D0AH,018C8H,014A8H,014A6H,01085H,0C65H,0844H + +CHGLWT5P: + .word 64 + .word 00H,052AFH,04654H,03E10H,04206H,03DE8H,035E3H,031C4H + .word 031A8H,02DA5H,02988H,02D84H,02986H,0296CH,02D69H,02568H + .word 02D62H,02566H,0294AH,02945H,02545H,02147H,0212CH,02129H + .word 01D28H,02123H,02106H,0214AH,02148H,02544H,0252BH,02542H + .word 02525H,01D29H,01D08H,01D06H,01D00H,018C7H,018C4H,014A6H + .word 010A3H,01087H,0882H,0C65H,0404H,04674H,035F0H,035CEH + .word 02D90H,02D8EH,0296DH,0256BH,0254AH,0214AH,0252DH,01D0CH + .word 0190BH,01D0AH,018C8H,014A8H,014A6H,01085H,0C65H,0844H + +CHGLWT6P: + .word 64 + .word 00H,04E8FH,04234H,039F0H,03DE6H,039C8H,031C3H,02DA4H + .word 02D88H,02985H,02568H,02964H,02566H,0254CH,02949H,02148H + .word 02942H,02146H,0252AH,02525H,02125H,01D27H,0212CH,02129H + .word 01D28H,02123H,02106H,0214AH,02148H,02544H,0252BH,02542H + .word 02525H,01D29H,01D08H,01D06H,01D00H,018C7H,018C4H,014A6H + .word 010A3H,01087H,0882H,0C65H,0404H,04674H,035F0H,035CEH + .word 02D90H,02D8EH,0296DH,0256BH,0254AH,0214AH,0252DH,01D0CH + .word 0190BH,01D0AH,018C8H,014A8H,014A6H,01085H,0C65H,0844H + +CHGLWT7P: + .word 64 + .word 00H,04A6FH,03E14H,035D0H,039C6H,035A8H,02DA3H,02984H + .word 02968H,02565H,02148H,02544H,02146H,0212CH,02529H,01D28H + .word 02522H,01D26H,0210AH,02105H,01D05H,01907H,0212CH,02129H + .word 01D28H,02123H,02106H,0214AH,02148H,02544H,0252BH,02542H + .word 02525H,01D29H,01D08H,01D06H,01D00H,018C7H,018C4H,014A6H + .word 010A3H,01087H,0882H,0C65H,0404H,04674H,035F0H,035CEH + .word 02D90H,02D8EH,0296DH,0256BH,0254AH,0214AH,0252DH,01D0CH + .word 0190BH,01D0AH,018C8H,014A8H,014A6H,01085H,0C65H,0844H + +CHGLWT8P: + .word 64 + .word 00H,0464FH,039F4H,031B0H,035A6H,03188H,02983H,02564H + .word 02548H,02145H,01D28H,02124H,01D26H,01D0CH,02109H,01908H + .word 02102H,01906H,01CEAH,01CE5H,018E5H,014E7H,0212CH,02129H + .word 01D28H,02123H,02106H,0214AH,02148H,02544H,0252BH,02542H + .word 02525H,01D29H,01D08H,01D06H,01D00H,018C7H,018C4H,014A6H + .word 010A3H,01087H,0882H,0C65H,0404H,04674H,035F0H,035CEH + .word 02D90H,02D8EH,0296DH,0256BH,0254AH,0214AH,0252DH,01D0CH + .word 0190BH,01D0AH,018C8H,014A8H,014A6H,01085H,0C65H,0844H + +CHGLWT9P: + .word 64 + .word 00H,0422FH,035D4H,02D90H,03186H,02D68H,02563H,02144H + .word 02128H,01D25H,01908H,01D04H,01906H,018ECH,01CE9H,014E8H + .word 01CE2H,014E6H,018CAH,018C5H,014C5H,014E7H,0212CH,02129H + .word 01D28H,02123H,02106H,0214AH,02148H,02544H,0252BH,02542H + .word 02525H,01D29H,01D08H,01D06H,01D00H,018C7H,018C4H,014A6H + .word 010A3H,01087H,0882H,0C65H,0404H,04674H,035F0H,035CEH + .word 02D90H,02D8EH,0296DH,0256BH,0254AH,0214AH,0252DH,01D0CH + .word 0190BH,01D0AH,018C8H,014A8H,014A6H,01085H,0C65H,0844H + +MGP_R_PA: + .word 31 + .word 00H,07FDEH,07F9CH,07F5AH,07B18H,07AD6H,07694H,07252H + .word 07210H,06DCEH,06DADH,0696BH,06529H,06508H,060C6H,060A5H + .word 058A5H,05484H,04C84H,04884H,04463H,03C63H,03842H,03042H + .word 02C42H,02821H,02021H,01C21H,01400H,01000H,0C00H + +INFO_P: + .word 4 + .word 0318CH,00H,07FFFH,07FE0H + +BICON10P: + .word 41 + .word 00H,07FFFH,06F7BH,06318H,05AD6H,05294H,04A52H,04631H + .word 04210H,03DEFH,039CEH,035ADH,0318CH,0294AH,02529H,02108H + .word 01CE7H,018C6H,0842H,00H,07FDEH,06CA5H,06884H,07B5AH + .word 07AD6H,07652H,075EFH,0716BH,07108H,06484H,05C63H,05842H + .word 05442H,05042H,04C21H,04421H,04021H,03C00H,03800H,03000H + .word 02C00H + +BICON20P: + .word 27 + .word 00H,07FFFH,06F7BH,06318H,05AD6H,05294H,04A52H,04631H + .word 04210H,03DEFH,039CEH,035ADH,0294AH,02529H,02108H,00H + .word 077FDH,06BFAH,063D8H,053D4H,02FABH,02E0H,0280H,01E0H + .word 01A0H,0160H,0120H + +BICON30P: + .word 28 + .word 00H,07FFFH,06F7BH,06318H,05AD6H,05294H,04A52H,04631H + .word 04210H,03DEFH,039CEH,035ADH,0294AH,02529H,02108H,00H + .word 077BFH,0673FH,05ADFH,0529FH,04A5FH,0421FH,0319FH,016H + .word 011H,0EH,0BH,08H + +BICON40P: + .word 33 + .word 00H,07FFFH,06F7BH,06318H,05AD6H,05294H,04A52H,04631H + .word 04210H,03DEFH,039CEH,035ADH,0318CH,0294AH,02529H,02108H + .word 00H,07FBFH,07F3FH,07E9FH,07E5FH,07DDFH,07C3FH,06419H + .word 05C17H,05816H,05014H,04812H,04010H,0380EH,0300CH,0280AH + .word 02008H + +BICON50P: + .word 34 + .word 00H,07FFFH,06F7BH,06318H,05AD6H,05294H,04A52H,04631H + .word 04210H,03DEFH,039CEH,035ADH,0294AH,02529H,02108H,00H + .word 07FFBH,07FF3H,07FEFH,07FEBH,07FE3H,07F80H,07F40H,07F20H + .word 07EE0H,07EA0H,07E80H,07E40H,06E00H,05DA0H,04D60H,03D20H + .word 02CC0H,01C80H + +BICON60P: + .word 40 + .word 00H,07FFFH,06F7BH,06318H,05AD6H,05294H,04A52H,04631H + .word 04210H,03DEFH,039CEH,035ADH,0294AH,02529H,02108H,00H + .word 07F9CH,07F5AH,07ED6H,07E94H,07E52H,07E10H,07DCEH,07DADH + .word 07929H,074C6H,06CA5H,06884H,06084H,05C84H,05863H,05063H + .word 04C42H,04442H,04042H,03C21H,03421H,03021H,02800H,02400H + +BICON70P: + .word 32 + .word 00H,07FFFH,06F7BH,06318H,05AD6H,05294H,04A52H,04631H + .word 04210H,03DEFH,039CEH,035ADH,0294AH,02529H,02108H,00H + .word 077FDH,06BFAH,063D8H,053D4H,02FABH,01FA7H,0340H,02E0H + .word 02A0H,0280H,0240H,0200H,01E0H,01A0H,0160H,0120H + +BICON80P: + .word 31 + .word 00H,07FFFH,06F7BH,06318H,05AD6H,05294H,04210H,03DEFH + .word 039CEH,035ADH,0294AH,02529H,02108H,00H,06F7FH,0673FH + .word 05ADFH,04A5FH,0421FH,039DFH,0295FH,014BFH,01FH,019H + .word 016H,013H,011H,0EH,0BH,08H,05H + +BICON00P: + .word 29 + .word 00H,07FFFH,06F7BH,06318H,05AD6H,05294H,04A52H,04631H + .word 04210H,03DEFH,039CEH,035ADH,0294AH,02529H,02108H,00H + .word 07FEFH,07FE0H,07FA0H,07F80H,07F40H,07EE0H,07EA0H,07E80H + .word 07E40H,04D60H,07F60H,07FC0H,07F00H + +BICON1_P: + .word 24 + .word 02D6BH,07FFFH,00H,07FFBH,07FEFH,07FE3H,07FA0H,07F80H + .word 07F40H,07F20H,07EA0H,06E00H,073FFH,06BDFH,05FDFH,053BFH + .word 04BBFH,03F9FH,02DFH,029BH,0191H,014FH,010DH,0CBH + +BICON5_P: + .word 25 + .word 02D6BH,07FFFH,0739CH,06F7BH,06318H,05AD6H,05294H,04A52H + .word 04631H,04210H,03DEFH,039CEH,0318CH,0294AH,02108H,00H + .word 07FFBH,07FEFH,07FE3H,07FA0H,07F80H,07F40H,07F20H,07EA0H + .word 06E00H + +BICON90_P: + .word 31 + .word 0318CH,07FFFH,06F7BH,06318H,04A52H,04631H,04210H,03DEFH + .word 039CEH,035ADH,0318CH,0294AH,02529H,02108H,00H,07F3FH + .word 07EDFH,0765DH,075DDH,0759DH,0751DH,0741DH,06C1BH,05C17H + .word 05415H,05014H,04010H,0380EH,0300CH,02008H,0401H + +DPLT_P2P: + .word 32 + .word 00H,06F7CH,06F3CH,06EFCH,06EBCH,06E7CH,06E3CH,06DFCH + .word 06DBCH,06D7CH,06D5CH,06D1CH,06CBCH,06C9CH,06C3CH,06C1CH + .word 06C1CH,0681BH,06019H,05C18H,05416H,04C14H,04412H,03C10H + .word 0380FH,0300DH,0280BH,0240AH,01807H,01406H,01005H,07FFFH + +CHGLWB_P: + .word 64 + .word 0318CH,06B6BH,06325H,052E4H,052A9H,052A1H,04686H,04A82H + .word 04248H,04643H,04224H,03A08H,03E05H,03E02H,035E8H,039E3H + .word 035CCH,035E1H,035C5H,031C2H,02DA9H,031A4H,02DA2H,03186H + .word 02D88H,0298AH,02983H,02D67H,0256AH,02967H,03161H,02945H + .word 02543H,02528H,02141H,02525H,02522H,02503H,01D04H,01CE5H + .word 018E2H,01CC4H,018C5H,014C3H,010A3H,052D4H,04254H,035F3H + .word 02D8CH,0254CH,0212AH,01D0BH,02108H,01CE8H,018C8H,014A8H + .word 014A5H,01087H,01484H,01085H,0C63H,0864H,0C45H,0423H + +CHGLWT_P: + .word 64 + .word 0318CH,0674FH,05AF4H,052B0H,056A6H,05288H,04A83H,04664H + .word 04648H,04245H,03E28H,04224H,03E26H,03E0CH,04209H,03A08H + .word 04202H,03A06H,03DEAH,03DE5H,039E5H,035E7H,035CCH,035C9H + .word 031C8H,035C3H,035A6H,02DAAH,02DA8H,031A4H,0318BH,031A2H + .word 03185H,02989H,02968H,02966H,02960H,02527H,02524H,02106H + .word 01D03H,01CE7H,014E2H,018C5H,01064H,04674H,035F0H,035CEH + .word 02D90H,02D8EH,0296DH,0256BH,0254AH,0214AH,0252DH,01D0CH + .word 0190BH,01D0AH,018C8H,014A8H,014A6H,01085H,0C65H,0844H + +CHSHDB_P: + .word 50 + .word 00H,0441H,0443H,0844H,0C66H,0442H,01087H,0C65H + .word 014A8H,01CEBH,0843H,01086H,014A7H,0C64H,01085H,014CAH + .word 0212DH,0254EH,01D0CH,0866H,010A8H,014C9H,018EAH,0C87H + .word 01D0BH,0865H,014C8H,018E9H,010A7H,0C86H,010C9H,014EAH + .word 0190BH,0864H,0443H,0192CH,010C8H,014E9H,010A6H,014C7H + .word 0886H,0CA7H,0C85H,0190AH,0885H,0441H,0884H,0442H + .word 0863H,0441H + +CHSHDT_P: + .word 61 + .word 00H,0844H,0C66H,0442H,014A9H,01087H,0C65H,014A8H + .word 01CEBH,0252EH,0843H,0210CH,01086H,014A7H,0C64H,01085H + .word 010AAH,010A9H,014CAH,018EBH,0212DH,0C88H,01D0CH,0866H + .word 010A8H,014C9H,018EAH,0C87H,01D0BH,02570H,02DB2H,0865H + .word 014C8H,018E9H,014EBH,0190CH,01D2DH,0214EH,010A7H,02990H + .word 0C86H,010C9H,014EAH,0CA8H,01D2CH,0190BH,0864H,0443H + .word 0192CH,010C8H,014E9H,010A6H,0886H,0CA7H,0C85H,0190AH + .word 0885H,0441H,0442H,0863H,0441H + +BEYES: + .word 22 + .word 021EBH,0316CH,0424H,0CADH,05254H,014B5H,066F8H,07BBEH + .word 018FBH,02D72H,02D7FH,04E7FH,03E12H,01D1DH,041CFH,062D7H + .word 07E73H,075CEH,0694AH,060C6H,05463H,04C00H + +BGLAS_P: + .word 19 + .word 0314CH,07D7DH,0723CH,07CB9H,07CB6H,07C75H,078B2H,06954H + .word 07831H,068D5H,06871H,064D0H,051B1H,0682EH,050D2H,04C2BH + .word 03489H,02C06H,01023H + +PERFCT_P: + .word 24 + .word 00H,07F60H,07F40H,07F80H,07F40H,07F80H,07FC3H,07FEAH + .word 07FECH,07FEDH,07FE9H,07FFFH,073DFH,067DFH,05BBFH,04F9FH + .word 0437FH,03B7FH,02F5FH,0233FH,0173FH,029EH,027DH,00H + +RPERFCT_P: + .word 24 + .word 0318CH,07C00H,07C00H,07C00H,07C00H,07C00H,07C00H,07C00H + .word 07C00H,07C00H,07C00H,07FFFH,073DFH,067DFH,05BBFH,04F9FH + .word 0437FH,03B7FH,02F5FH,0233FH,0173FH,029EH,027DH,00H + +SPITBLU_P: + .word 22 + .word 00H,073FFH,06BDEH,05FBDH,05B9DH,0537CH,04B5BH,0435AH + .word 03B19H,036F9H,02ED8H,02AB7H,02296H,01E75H,01A55H,01634H + .word 01213H,0DF2H,09D1H,05B1H,0190H,016FH + +RNDPLT_P: + .word 32 + .word 00H,07F3FH,076BBH,0729AH,06A58H,06637H,06216H,05DF5H + .word 059D4H,055B3H,05192H,04D71H,04950H,0452FH,0410EH,03CEDH + .word 038CCH,034ABH,0308AH,02C69H,02848H,02427H,02006H,01C05H + .word 01403H,00H,07FE0H,07FC0H,07FA0H,07F80H,07F60H,07F40H + +RNDNUM_P: + .word 10 + .word 00H,07FFFH,07BDEH,0739CH,06F7BH,06B5AH,06739H,05EF7H + .word 05AD6H,00H + +COMBO_P: + .word 32 + .word 00H,07FFFH,04E73H,0318CH,00H,07FE0H,07FC0H,07F80H + .word 07F60H,07F40H,07F20H,07EE0H,07EC0H,07BDFH,077DFH,073BFH + .word 06F9FH,06B9FH,0677FH,0637FH,05F5FH,0573FH,0531FH,04B1FH + .word 046FFH,03EDFH,03ABFH,036BFH,0329FH,02E7FH,02A7FH,0265FH + +SUPER_P: + .word 30 + .word 00H,0294AH,07FFFH,07BDEH,077BDH,0739CH,06F7BH,06B5AH + .word 06739H,06318H,05EF7H,05AD6H,04E73H,04A52H,04631H,035ADH + .word 0318CH,02D6BH,02529H,02108H,01CE7H,07BBDH,0779CH,0737BH + .word 00H,05415H,079DEH,0701CH,06419H,05415H + +PWREMP_P: + .word 28 + .word 00H,07FFFH,07BDEH,077BDH,0739CH,06F7BH,06B5AH,06739H + .word 06318H,05EF7H,05AD6H,056B5H,05294H,04E73H,04A52H,04631H + .word 04210H,03DEFH,039CEH,035ADH,0318CH,02529H,02108H,01CE7H + .word 018C6H,014A5H,01084H,00H + +FGR2YL_P: + .word 32 + .word 00H,07FE0H,07FE0H,073C0H,06BC0H,063C0H,05BC0H,053C0H + .word 04BC0H,03FC0H,037A0H,02FA0H,027A0H,01FA0H,017A0H,0FA0H + .word 07A0H,03A0H,04A40H,04240H,03E40H,03640H,03240H,02A40H + .word 02640H,02240H,01A40H,01640H,0E40H,0A40H,0640H,0240H + +FYL2RD_P: + .word 32 + .word 02CABH,07000H,07020H,07060H,070A0H,070C0H,07500H,07540H + .word 07580H,075C0H,07A00H,07A40H,07A80H,07AC0H,07B20H,07F60H + .word 07FA0H,07FE0H,04400H,04420H,04460H,044A0H,044C0H,04900H + .word 04920H,04940H,04980H,049A0H,049C0H,04A00H,04A20H,04A40H + +DCLIQU3: + .word 24 + .word 00H,03170H,02D4FH,0292EH,0250DH,020ECH,01CCBH,01488H + .word 018AAH,035B1H,018A9H,03DD2H,041F3H,04634H,04E55H,05297H + .word 05EF9H,05AB8H,022H,0444H,0C46H,01D0BH,0671AH,0739CH + +BGSPRKL_P: + .word 16 + .word 0318CH,07FFFH,07FBFH,077BFH,0779FH,0675FH,05F3FH,0671CH + .word 04EDFH,042BFH,03A7FH,0365FH,02A5FH,0265FH,01E1FH,011FFH + +SPARKL_P: + .word 16 + .word 0318CH,07FFFH,07FBFH,077BFH,0779FH,0675FH,05F3FH,0671CH + .word 04EDFH,042BFH,03A7FH,0365FH,02A5FH,0265FH,01E1FH,011FFH + +XPLODE_P: + .word 26 + .word 018C6H,07FE9H,07FE5H,07FE3H,07FA2H,07F42H,07EA1H,07E21H + .word 06E21H,071E1H,069A1H,05D81H,05960H,05140H,04D40H,04920H + .word 04100H,03D00H,038E0H,030C0H,02CC0H,028A0H,02080H,02060H + .word 01C80H,01860H + +BLUEEX_P: + .word 26 + .word 018D5H,07FFFH,06FDFH,067BFH,05F7EH,0535EH,04B3EH,042FEH + .word 03ADEH,02E9DH,0267DH,01E3DH,015FDH,0DBCH,059CH,015CH + .word 013AH,0118H,0117H,0F5H,0D3H,0D1H,0AFH,08EH + .word 08CH,06AH + +BRITEX_P: + .word 26 + .word 02108H,07FF8H,07FD5H,07FD1H,07FCEH,07FCBH,07FC8H,07B67H + .word 07B26H,07AE5H,076A4H,07663H,07622H,075E1H,07180H,07140H + .word 06920H,06120H,05D20H,05520H,04D00H,04500H,03CE0H,034E0H + .word 030C0H,028A0H + +SMOKE_P: + .word 19 + .word 0152BH,07FFFH,07BDEH,077BDH,0739CH,06B5AH,06739H,06318H + .word 05EF7H,05AD6H,056B5H,04E73H,04A52H,04631H,04210H,03DEFH + .word 035ADH,0318CH,02D6BH + +SALTTR_P: + .word 16 + .word 0316DH,07FFFH,07BDEH,077BDH,0739CH,06B5AH,06739H,06318H + .word 05EF7H,05AD6H,056B5H,05294H,04A52H,04631H,04210H,03DEFH + +NPLM_P: + .word 19 + .word 00H,04CA0H,060A2H,064E0H,06CC2H,04080H,07DC0H,07D20H + .word 07E60H,060C4H,05083H,07EE1H,06126H,07126H,06A4DH,07F82H + .word 07FC2H,04901H,07BEFH + +REPR_P: + .word 24 + .word 00H,07FFFH,0779CH,06B39H,062F7H,05694H,04E52H,045EFH + .word 039ADH,0314AH,02508H,01CC6H,01084H,0842H,07D8CH,07108H + .word 064A5H,05C63H,05021H,04800H,03C00H,03400H,02800H,02000H + +SKULL_P: + .word 63 + .word 018C6H,07FFCH,07FFAH,07FD9H,07FB8H,07F97H,07F96H,07F95H + .word 07B96H,07B75H,07753H,07354H,07333H,06F11H,06B33H,06F13H + .word 06F11H,06B13H,06AF1H,066F0H,066D1H,062D1H,062AEH,05EAEH + .word 05AB0H,05E8FH,05E8CH,05A8FH,05A6CH,0566BH,0568EH,05A4DH + .word 05A4CH,0564DH,0522CH,04E2EH,04E4CH,0520BH,04E0BH,049EAH + .word 0460BH,0460AH,041E9H,03DC9H,03DC8H,03DA9H,039A8H,035A9H + .word 03587H,03167H,03166H,02D47H,02D46H,02925H,02505H,02104H + .word 020E5H,020E4H,01CE6H,01CC3H,01883H,014A3H,01082H + +LAMB_P: + .word 32 + .word 018C6H,07FBBH,07B36H,07EF4H,07EB2H,066F4H,07E71H,062D3H + .word 05691H,075ECH,06E0EH,071AAH,065CDH,06D89H,04E2FH,06568H + .word 06547H,05189H,05526H,05903H,04D06H,0358AH,040E5H,03907H + .word 034C4H,034A3H,01CE6H,024C5H,02883H,02062H,01C83H,01441H + +HART_P: + .word 62 + .word 018C6H,07E9FH,07E7FH,07E1EH,07DDCH,07DBCH,07DBBH,07D7AH + .word 07D59H,07D38H,07D16H,07CF6H,078F5H,078B4H,074D4H,074B4H + .word 07493H,06954H,06953H,06933H,06553H,06C92H,06132H,06891H + .word 06871H,05D32H,060F1H,06471H,05D11H,06470H,05CF0H,06070H + .word 0606FH,058B0H,05C6FH,054F0H,058AFH,054CFH,0586FH,0586EH + .word 0548EH,0546EH,0508DH,04CAEH,0506DH,0488DH,04C4CH,0448CH + .word 0484BH,0446CH,0404BH,03C4AH,03849H,03449H,03028H,03027H + .word 02C28H,02C27H,02426H,02025H,01C24H,01403H + +FISH_P: + .word 22 + .word 018C6H,077D9H,06F96H,06753H,05F11H,056CFH,04EACH,0466BH + .word 03E29H,035E7H,031C6H,02984H,02144H,01D24H,018E3H,010C3H + .word 0C82H,06A00H,051A0H,03D40H,028C0H,01CA0H + +BLAD_P: + .word 16 + .word 018C6H,07FFFH,056B5H,05294H,04E73H,04A52H,04631H,04210H + .word 03DEFH,039CEH,035ADH,0318CH,02D6BH,0294AH,02529H,01CE7H + +STAR_P: + .word 22 + .word 018C6H,07F17H,07E51H,07D6BH,07C03H,06801H,05400H,04000H + .word 05F1FH,0465CH,02D9AH,01CF8H,0C76H,0850H,084BH,07FDFH + .word 06F3BH,05ED7H,04E53H,03DCFH,02D4BH,020E8H + +DBELL_P: + .word 16 + .word 018C6H,07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04E73H + .word 04A52H,04210H,039CEH,0318CH,0294AH,02108H,018C6H,014A5H + +BAT_P: + .word 14 + .word 018C6H,04E73H,04631H,04210H,03DEFH,035ADH,0318CH,0294AH + .word 02529H,02108H,018C6H,014A5H,0C63H,0842H + +TOMB_P: + .word 58 + .word 024C7H,0739CH,06B7AH,06B5AH,06739H,06318H,05EF7H,05AF6H + .word 05AD6H,056B5H,052B4H,05294H,04E93H,04E73H,04A72H,04A52H + .word 04651H,04631H,04230H,04210H,03E0FH,03DEFH,039EEH,039CEH + .word 035CDH,035ADH,031ACH,0318CH,02D8BH,02D6BH,0296AH,0294AH + .word 02549H,02529H,02128H,02108H,01D07H,01CE7H,018E6H,018C6H + .word 014C5H,014A5H,010A4H,01084H,0C83H,0C63H,0862H,0842H + .word 077BDH,0675CH,05B1BH,04ADBH,03E9AH,03239H,02619H,01DD8H + .word 01197H,0957H + +GHOST_P: + .word 23 + .word 0316BH,07BBBH,07BDDH,06B39H,06717H,062F6H,05AD5H,05693H + .word 05272H,04A51H,0420FH,041EEH,03DEEH,039CDH,039ACH,035ACH + .word 0318BH,02D8BH,0316AH,02949H,02107H,01CE6H,018C5H + +DIZZY_P: + .word 16 + .word 0A8H,07FEEH,07FE9H,07FE8H,07FE7H,07FE5H,07F80H,07B60H + .word 07720H,07300H,06EE0H,06AC0H,066A0H,06280H,05A40H,05200H + +BMDZP: + .word 8 + .word 07C1FH,077FAH,07BEFH,07FC2H,07F82H,07EE1H,07E60H,07DC0H + +YKDZP: + .word 15 + .word 07C1FH,07B5BH,076D7H,06E54H,065D0H,05A0CH,05D8CH,05D6DH + .word 0556BH,04D4AH,04929H,04108H,038E7H,030C6H,02CA5H + +UNDZP: + .word 13 + .word 07C1FH,07BBBH,07BDDH,06B39H,06717H,062F6H,05AD5H,05693H + .word 05272H,04A51H,0420FH,039CDH,0318BH + +RAZDIZP: + .word 22 + .word 01931H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 010A4H,00H,0737BH,06B38H,062F6H,05AB4H,05272H,0420EH + .word 039EDH,035ACH,02D8AH,02969H,02128H,0842H + +MPLTPRPP: + .word 29 + .word 00H,07F3FH,07F1EH,07EFDH,076BBH,0729AH,06A58H,06637H + .word 06216H,05DF5H,059D4H,055B3H,05192H,04D71H,04950H,0452FH + .word 0410EH,03CEDH,038CCH,034ABH,0308BH,0308AH,02C69H,02848H + .word 02427H,02006H,01C05H,01804H,01403H + +WGSF_W_P1: + .word 10 + .word 0318CH,07FFFH,07BDEH,0739CH,06F7BH,06B5AH,06739H,05EF7H + .word 05AD6H,00H + +DPLT_B_P: + .word 31 + .word 00H,07BDFH,0739FH,06B7FH,0673FH,05F1FH,056DFH,052BFH + .word 04A9FH,0425FH,03E3FH,0361FH,031DFH,029BFH,0259FH,0217FH + .word 01D5EH,0193CH,0151AH,010F9H,0CD7H,0CB5H,0894H,0892H + .word 0871H,046FH,044EH,04CH,02BH,09H,08H + +WBOXREDP: + .word 16 + .word 00H,07EF7H,07E73H,079ADH,0754AH,07108H,05800H,05000H + .word 04400H,03C00H,03400H,02C00H,02400H,01C00H,07FE0H,00H + +WBOXBLUP: + .word 16 + .word 00H,05EFFH,04E7FH,035BEH,0295DH,0211CH,016H,014H + .word 011H,0FH,0DH,0BH,09H,07H,07FE0H,00H + +RECVRB_P: + .word 48 + .word 00H,05EFFH,04E7FH,035BEH,0295DH,0211CH,016H,014H + .word 011H,0FH,0DH,0BH,09H,07H,07FFFH,00H + .word 03A0H,07A0H,0FA0H,017A0H,01FC0H,027C0H,02FC0H,037C0H + .word 043C0H,04BC0H,053C0H,05BE0H,063E0H,06FE0H,077E0H,07FE0H + .word 07FA0H,07F60H,07B20H,07AC0H,07A80H,07A40H,07A00H,075C0H + .word 07580H,07540H,07500H,070C0H,070A0H,07060H,07020H,07000H + +RECVRR_P: + .word 48 + .word 00H,07EF7H,07E73H,079ADH,0754AH,07108H,05800H,05000H + .word 04400H,03C00H,03400H,02C00H,02400H,01C00H,07FFFH,00H + .word 03A0H,07A0H,0FA0H,017A0H,01FC0H,027C0H,02FC0H,037C0H + .word 043C0H,04BC0H,053C0H,05BE0H,063E0H,06FE0H,077E0H,07FE0H + .word 07FA0H,07F60H,07B20H,07AC0H,07A80H,07A40H,07A00H,075C0H + .word 07580H,07540H,07500H,070C0H,070A0H,07060H,07020H,07000H + +RECBLK_P: + .word 3 + .word 02CABH,07FFFH,00H + +SHNMUG_P: + .word 121 + .word 00H,0C21H,0C42H,01021H,01421H,01441H,01462H,01463H + .word 01442H,01461H,01484H,01861H,01862H,01882H,01883H,01884H + .word 018A5H,01C62H,01C84H,01C83H,02083H,02084H,020A4H,020A5H + .word 020E7H,02484H,024A4H,024C5H,024E6H,02508H,028A4H,028C5H + .word 02929H,02CA4H,02CC5H,02CE5H,02CE6H,02D4AH,034E5H,03506H + .word 03507H,03529H,0358CH,03D06H,03D26H,03D27H,03D8AH,03DCEH + .word 040E5H,04106H,04127H,04128H,04148H,04149H,0418CH,041EEH + .word 041EFH,04947H,04948H,04949H,04988H,04989H,049EEH,04A31H + .word 04D07H,04D26H,04D47H,04D48H,04D88H,04D89H,04D8AH,04DCAH + .word 04E2FH,04E52H,05588H,055C9H,055CAH,055EAH,05631H,05651H + .word 05692H,05694H,05D89H,05DC9H,05DCAH,05DEAH,05DECH,05E52H + .word 05E92H,05ED6H,061C9H,061CAH,061ECH,0622CH,062D4H,065ECH + .word 0662AH,0662CH,0662EH,066D4H,066D6H,066D7H,066F6H,06A2CH + .word 06A4EH,06A4FH,06AF6H,06AF7H,06B17H,06E2EH,06E4EH,06E4FH + .word 06F17H,06F18H,0724EH,0724FH,0728FH,07291H,0768FH,07691H + .word 076D1H + +JASMUG_P: + .word 123 + .word 00H,0821H,0C21H,0C42H,01021H,01041H,01063H,01082H + .word 01084H,01421H,01441H,01463H,01484H,01821H,01841H,01862H + .word 01883H,01884H,018A4H,018A5H,018C6H,01C41H,01C62H,01CC5H + .word 02041H,02083H,02084H,020A4H,02462H,02466H,02482H,02484H + .word 024A3H,024A4H,024A5H,024C6H,02507H,02861H,028C4H,028C5H + .word 028E5H,028E6H,028E8H,02906H,02946H,02C82H,02C84H,02CA3H + .word 02CA4H,02CC4H,02CC5H,02CE5H,034A3H,034C4H,034C5H,034E6H + .word 03505H,03506H,03526H,038C4H,038E4H,038E5H,03906H,03927H + .word 03928H,03948H,03CE5H,03D05H,03D28H,03D47H,03D48H,03D49H + .word 04506H,04507H,04527H,04528H,04547H,04548H,04549H,04588H + .word 04927H,04928H,04947H,04948H,04989H,0498AH,049A9H,049AAH + .word 049ADH,04D89H,04DA9H,04DAAH,04DACH,05589H,055A9H,055AAH + .word 055CAH,055CCH,059CAH,059CCH,059CDH,05A94H,05DAAH,05DCAH + .word 05E0CH,05E0DH,061ACH,061CCH,0620CH,0620DH,0620EH,065CDH + .word 0662DH,0662EH,0664EH,06650H,06A2EH,06A50H,06E90H,06670H + .word 06A90H,06B15H,06E91H + +JAKMUG_P: + .word 118 + .word 00H,0821H,0C21H,0C42H,0C63H,01021H,01041H,01042H + .word 01441H,01463H,01484H,014A5H,01821H,01841H,01862H,01884H + .word 01C41H,01CA2H,01CC6H,01CE7H,02041H,02062H,02063H,02082H + .word 020C6H,02108H,024A4H,024E7H,0254AH,02C83H,02CA3H,02D08H + .word 03061H,030C3H,030C4H,030E4H,0316BH,0318CH,034E6H,0356AH + .word 035ADH,035CEH,038C4H,038E4H,03906H,03947H,0398AH,039CDH + .word 03CE5H,03D06H,03D46H,03D47H,03DCEH,03E10H,044C4H,0458AH + .word 0458BH,04631H,04946H,04988H,04A10H,04A31H,04A52H,04D67H + .word 04D68H,04D8AH,04DABH,04E52H,04E73H,0518AH,051A7H,051AAH + .word 051CCH,0520CH,0520EH,05252H,05272H,05273H,05294H,05567H + .word 055CCH,0564EH,05653H,056D6H,056F7H,05DAAH,05E2EH,061CAH + .word 061CCH,0620CH,06293H,062F7H,06318H,06339H,0662DH,0664EH + .word 06670H,066F7H,06718H,06A0DH,06A4DH,06B39H,06E50H,06E6EH + .word 06E70H,06E92H,06F5AH,0737BH,07691H,076D2H,076F4H,07AD2H + .word 07AF3H,07F34H,07F36H,07F57H,07F58H,07F98H + +EUGMUG_P: + .word 121 + .word 00H,0821H,0822H,0823H,0C21H,0C22H,0C23H,01021H + .word 01022H,01023H,01421H,01441H,01442H,01443H,01444H,01462H + .word 01841H,01842H,01862H,01883H,01C41H,01C84H,02041H,02061H + .word 020A4H,020A7H,02441H,02481H,02482H,024A3H,024C5H,02821H + .word 02861H,02907H,02C81H,02C82H,02CA3H,02D28H,03468H,03481H + .word 034A2H,034C3H,034E4H,034E5H,03506H,03507H,03528H,03905H + .word 03948H,03949H,03CE3H,03CE4H,03D05H,03D48H,03D4AH,03D8AH + .word 040C3H,04125H,04126H,04127H,041ACH,048E5H,04926H,04947H + .word 04CE7H,04D46H,04D47H,04D88H,04DCCH,05147H,05186H,051A8H + .word 051CAH,051EEH,0522FH,05946H,05988H,059A9H,059CCH,05DCAH + .word 05DECH,05DEDH,061A7H,061C8H,061CAH,061EAH,065EAH,065ECH + .word 0664DH,06A2DH,06A4DH,06A4EH,06E4EH,06E6FH,06EF5H,0724EH + .word 0724FH,0726EH,0726FH,072B1H,07336H,0766EH,0766FH,076AFH + .word 076D2H,07738H,07AAEH,07AAFH,07EAFH,07ED1H,07EF2H,07F12H + .word 07F13H,07F99H,07F33H,07F98H,07FDDH,07FDBH,07FDDH,07FBEH + .word 07FDDH + +JSHMUG_P: + .word 118 + .word 00H,0421H,0422H,0423H,0426H,0428H,0821H,0822H + .word 0824H,0842H,0843H,0862H,0C21H,0C22H,0C23H,0C24H + .word 0C43H,0C62H,0C63H,0C64H,0C82H,0C83H,0C84H,01063H + .word 01064H,01083H,010A3H,010A4H,010C5H,01421H,01442H,01443H + .word 01485H,014A4H,014A5H,014C5H,014C6H,014E5H,014E6H,01841H + .word 01842H,01884H,018A5H,018E5H,018E6H,01906H,01C62H,01D07H + .word 01D27H,02062H,02128H,02149H,02483H,02484H,024E6H,02549H + .word 02568H,02569H,02882H,028A3H,0298AH,02CA3H,02CC4H,030C5H + .word 030E5H,03106H,03905H,03926H,03CA5H,03D05H,03D06H,03D27H + .word 03D28H,04126H,04905H,04926H,04947H,04968H,04969H,04D67H + .word 04D68H,04D88H,04D89H,05168H,05187H,05188H,05189H,051CAH + .word 05588H,055C9H,055CAH,055EAH,055EBH,059C9H,059CAH,059EAH + .word 059EBH,061EAH,061EBH,0620BH,0620CH,0624EH,0660BH,0660CH + .word 0664FH,06A4EH,06A6EH,06E4CH,06E6CH,0726EH,0728FH,07290H + .word 0766EH,0768FH,07690H,076B0H,076B2H,076D3H + +MIKMUG_P: + .word 113 + .word 00H,0821H,0841H,0842H,0C21H,0C41H,0C42H,0C62H + .word 01021H,01041H,01042H,01062H,01063H,01083H,01421H,01441H + .word 01461H,01462H,01463H,01484H,01862H,01863H,01883H,018A4H + .word 01C61H,01C63H,01C83H,01CA4H,01CC5H,01CC6H,02063H,02083H + .word 020A3H,020A4H,02106H,02462H,024C3H,024C5H,024E6H,02506H + .word 02507H,02CA3H,02CC5H,02CE4H,02CE6H,02CE7H,030C3H,030E5H + .word 030E6H,03106H,03107H,03147H,03148H,038C4H,038E4H,038E5H + .word 038E6H,03905H,03906H,03946H,03947H,03948H,0396AH,03CE4H + .word 03CE5H,03D05H,03D68H,044E6H,04546H,04567H,04568H,045AAH + .word 045ABH,04946H,04967H,04968H,05106H,05167H,05168H,051A8H + .word 051CAH,059A8H,059C8H,059CAH,059CBH,061CAH,061CBH,0620BH + .word 065CAH,0662DH,06DCBH,06E0DH,06E2DH,0722DH,0722EH,0735AH + .word 0762EH,0766DH,0766EH,076B0H,07A70H,07AB0H,07AB1H,07AF0H + .word 07AF3H,07EF1H,07F13H,07F11H,07F13H,07F55H,07F75H,07F98H + .word 07FDCH + +MRKMUG_P: + .word 114 + .word 00H,0821H,0C21H,01021H,01041H,01421H,01441H,01442H + .word 01821H,01861H,01862H,01883H,01C61H,01C62H,01C82H,01C83H + .word 01CA4H,01CA5H,02041H,02062H,02082H,02083H,020A3H,020A4H + .word 02461H,02482H,02483H,024A2H,024A3H,024C3H,024C4H,02CA3H + .word 02CE5H,02D06H,030A3H,030A4H,030C4H,030E4H,030E5H,030E6H + .word 03106H,038C4H,038E4H,03906H,03907H,040E4H,040E5H,04105H + .word 04106H,04147H,04168H,041AAH,04505H,04506H,04507H,04546H + .word 04567H,04568H,045AAH,04D46H,04D67H,04DAAH,04DEBH,05567H + .word 05568H,055A8H,055AAH,0560DH,059A7H,059A8H,059AAH,059EBH + .word 05A4FH,061A8H,061AAH,061EBH,06290H,0660BH,0660DH,066B2H + .word 06DEAH,06E0BH,06E0DH,06E4DH,06E4FH,06EF4H,06EF5H,0724DH + .word 0724FH,07315H,07317H,0768FH,076B0H,07717H,07A4FH,07A90H + .word 07AB0H,07AB2H,07B78H,07B7AH,07B9CH,07AB4H,07AF2H,07B9AH + .word 07B9BH,07EF4H,07FBCH,07FBDH,07FDDH,07FDEH,07FDEH,07FFEH + .word 07FFFH,07FFFH + +TONMUG_P: + .word 118 + .word 02D6BH,0401H,0402H,0405H,0409H,0400H,0806H,0803H + .word 01047H,01467H,0800H,0C20H,01462H,03DABH,02D28H,045EDH + .word 07FFDH,07FFEH,07FFFH,041A9H,07FFCH,07F99H,020A3H,02D06H + .word 03D89H,066B3H,07B79H,07FBBH,07FDCH,045CCH,01862H,01C83H + .word 0520FH,03D68H,0560DH,07FBAH,07FDBH,024C5H,07F9BH,03106H + .word 07F76H,04DA9H,07F56H,07F77H,05E70H,03CE1H,01863H,01021H + .word 030E5H,04127H,059C9H,04568H,0726DH,04D89H,0660CH,051A9H + .word 055CBH,04589H,07AD1H,07F55H,01841H,02CC4H,01442H,03D28H + .word 03528H,038E4H,05167H,059A9H,065EBH,05189H,0726EH,05DECH + .word 0660DH,02482H,02CA3H,03906H,03D27H,059CBH,07A8FH,06E6FH + .word 05E0EH,02062H,02483H,030C4H,04128H,030E6H,065ECH,07EB0H + .word 07ED1H,07690H,055CCH,038E5H,04D27H,02CC5H,055ABH,06E2EH + .word 03928H,06E0DH,07EB1H,01000H,03082H,04106H,07ED3H,01842H + .word 030C5H,024A5H,038A3H,05989H,03040H,02420H,01C42H,02CC6H + .word 02442H,03C84H,02C22H,01C85H,0C22H,01885H + +SALMUG_P: + .word 120 + .word 00H,0821H,0822H,0823H,0C22H,0C26H,01021H,01022H + .word 01042H,01421H,01442H,01445H,01463H,01821H,01C85H,01C62H + .word 01C82H,01C83H,01C84H,020A4H,02441H,024A3H,028A2H,028C4H + .word 028C6H,030A3H,034C3H,034C4H,034E5H,03526H,03529H,038E3H + .word 038E5H,038E6H,03905H,03906H,03967H,03CE4H,03D06H,044E6H + .word 04526H,04567H,04588H,04589H,04925H,04926H,04966H,04987H + .word 049A9H,049CBH,04D88H,04DCCH,05587H,05588H,055A6H,055A7H + .word 0562DH,059A9H,059C9H,059CBH,05A2DH,05A2EH,05A30H,05A4EH + .word 05E2EH,05E4CH,05E4DH,05E50H,065A9H,065CBH,0660BH,0664EH + .word 06690H,06691H,066B1H,069C8H,069CBH,06A0CH,06A4BH,06A4DH + .word 06AAEH,06AB1H,06E0CH,06E2DH,06E2EH,06ED2H,06F15H,0722DH + .word 0722EH,0724CH,0724DH,072D1H,07314H,07316H,0768EH,07714H + .word 07715H,07732H,07734H,07758H,07A8EH,07AADH,07AB0H,07B32H + .word 07B34H,07B35H,07B56H,07AABH,07AD0H,07B54H,07B76H,07F76H + .word 07F78H,07F9AH,07F98H,07FB9H,07FBAH,07FBAH,07FFBH,07FFDH + +WWFICONP: + .word 121 + .word 0318CH,07DC0H,07E80H,07E20H,07EA0H,07ECDH,07F00H,07EA3H + .word 07EA1H,07F51H,07F87H,07FFFH,07FBFH,07DA1H,07FB8H,07FB1H + .word 07FADH,07F40H,07FA8H,07D80H,07F3EH,07F3CH,07F9FH,07D41H + .word 07EDBH,07E2BH,07521H,075C1H,07560H,07718H,0771CH,0773EH + .word 07541H,07561H,07688H,06CE1H,06CA1H,06CC1H,06EDBH,06E08H + .word 06C82H,064C1H,06521H,06461H,06656H,06612H,06568H,05C21H + .word 05C01H,05C61H,05E99H,05D82H,05461H,05613H,04CA1H,04C41H + .word 04DD2H,04E16H,04D69H,04DCBH,04D41H,04DB1H,04801H,04841H + .word 049B1H,04A13H,0416DH,0418FH,041D3H,03421H,0354DH,03591H + .word 03001H,03044H,030EAH,030C8H,0252DH,02001H,02044H,02041H + .word 01067H,01001H,01002H,01044H,0802H,0401H,00H,077BFH + .word 0779FH,0675FH,06F3FH,05F3FH,0671FH,0671CH,0571FH,066DCH + .word 04EDFH,04ADFH,042BFH,03ABFH,02EBFH,03A7FH,0365FH,05659H + .word 02E7FH,02A7FH,02A5FH,0265FH,01E5FH,01E3FH,01E1FH,0163FH + .word 011FFH,05DFH,05BFH,01DFH,019FH,099H,0846H,0403H + .word 01H + +BLOOD_P: + .word 11 + .word 00H,07CA3H,07483H,07083H,06883H,06083H,06083H,05C83H + .word 05063H,04463H,04800H + +BATP: + .word 13 + .word 07C1FH,02949H,01CC6H,014A5H,014A5H,01084H,0C63H,0843H + .word 0842H,0820H,00H,00H,00H + +SWTP: + .word 16 + .word 07C1FH,07FFFH,06B5AH,06739H,05EF7H,05AD6H,056B5H,04E73H + .word 04A52H,04631H,03DEFH,035ADH,02D6BH,0294AH,018C6H,01C83H + +TURKEYP: + .word 116 + .word 07C1FH,07FFFH,07FFEH,07FFBH,07FFAH,07FF9H,07FF8H,07FF6H + .word 07FDBH,07FD9H,07FD7H,07FD5H,07FD3H,07FB8H,07FB7H,07FB5H + .word 07FAFH,07F96H,07F93H,07F73H,07F72H,07F71H,07F56H,07F53H + .word 07F52H,07F4FH,07F2FH,07F15H,07F2CH,07F12H,07710H,07EEEH + .word 07AF0H,076F2H,07EEBH,06EF6H,07AEDH,076EEH,07ECEH,07AD0H + .word 06ECFH,06AD1H,07AACH,076AEH,072AFH,07E6AH,07E67H,06EACH + .word 0766AH,0726EH,07648H,06A6EH,06E6BH,06E6AH,079E6H,0666AH + .word 06A4CH,07209H,06A2AH,06E08H,06A28H,06E06H,05E4DH,0662CH + .word 0662AH,06DC7H,05E2BH,065E8H,06209H,069C5H,065E6H,05A0DH + .word 065C5H,061C7H,05DE8H,055EBH,06185H,05DA6H,059C7H,05D88H + .word 055A8H,05985H,055A6H,05589H,04DABH,05567H,05945H,04DA8H + .word 05565H,04D67H,05145H,04D66H,05105H,04569H,04947H,04568H + .word 04566H,04925H,04905H,04147H,04525H,03D66H,03D49H,03D47H + .word 048C5H,04105H,03D25H,040C5H,03907H,03905H,03526H,038C5H + .word 034E5H,030C5H,02CA5H,024A5H + +FIREBL_P: + .word 21 + .word 0E7H,04A52H,04210H,039CEH,02D6BH,06CC2H,060A2H,05C41H + .word 03020H,01800H,02840H,07BEFH,07FC2H,07F82H,07EE1H,07E60H + .word 07DC0H,07D20H,064E0H,04CA0H,04080H + +ORNGPAL: + .word 64 + .word 00H,0800H,0C20H,01020H,01440H,01840H,01C40H,02060H + .word 02460H,02860H,02880H,02C80H,02C80H,030A0H,030A0H,034A0H + .word 034C0H,038C0H,038C0H,03CE0H,03CE0H,040E0H,04100H,04500H + .word 04900H,04920H,04D20H,04D20H,05140H,05140H,05540H,05560H + .word 05960H,05960H,05D80H,05DA0H,061C1H,061E2H,06603H,06624H + .word 06A45H,06A66H,06E87H,06EA8H,072C9H,072EAH,0770BH,0772CH + .word 07B4DH,07B6EH,07F8FH,07FB0H,0C00H,01840H,02880H,038C0H + .word 04520H,051A0H,05A03H,05120H,05DA0H,06603H,06E45H,07687H + +WHTPAL: + .word 64 + .word 00H,01084H,014A5H,018C6H,01CE7H,01CE8H,02108H,02109H + .word 02529H,0294AH,0294BH,02D6BH,0318CH,0318DH,035ADH,035AEH + .word 039CEH,03DEFH,03DF0H,04210H,04631H,04632H,04A52H,04A53H + .word 04E73H,04E74H,05294H,05295H,056B5H,056B6H,05AD6H,05AD7H + .word 05EF7H,05EF8H,06318H,06319H,06739H,0673AH,06B5AH,06B5BH + .word 06F7BH,06F7CH,0739CH,0739DH,073BDH,077BDH,077BEH,077DEH + .word 07BDEH,07BDFH,07BFFH,07FFFH,014A5H,02108H,0294AH,035ADH + .word 03DEFH,04631H,04E73H,04A52H,05294H,05AD6H,06318H,06B5AH + +LGRYPAL: + .word 64 + .word 00H,0842H,0863H,0C63H,0C64H,0C84H,01084H,01085H + .word 010A5H,014A5H,014A6H,014C6H,018C6H,018C7H,018E7H,01CE7H + .word 01CE8H,01D08H,02108H,02109H,02129H,02529H,0252AH,0254AH + .word 0294AH,0294BH,02D6BH,0318CH,035ADH,039CEH,03DEFH,04210H + .word 04631H,04A52H,04E73H,05294H,056B5H,05AD6H,05EF7H,06318H + .word 06739H,06B5AH,06B5BH,06F7BH,06F7CH,0739CH,0739DH,077BDH + .word 077BEH,07BDEH,07BDFH,07FFFH,01084H,014A5H,02529H,02D6BH + .word 035ADH,03DEFH,04A52H,0318CH,03DEFH,04A52H,05294H,05EF7H + +GREYPAL: + .word 64 + .word 00H,0842H,0863H,0C63H,0C84H,01084H,01085H,010A5H + .word 014A5H,014A6H,014C6H,018C6H,018C7H,018E7H,01CE7H,01CE8H + .word 01D08H,02108H,02109H,02129H,02529H,0252AH,0254AH,0294AH + .word 0294BH,0296BH,02D6BH,02D6CH,02D8CH,0318CH,0318DH,031ADH + .word 035ADH,035AEH,035CEH,039CEH,039CFH,039EFH,03DEFH,04210H + .word 04631H,04A52H,04E73H,04E74H,05294H,056B5H,05AD6H,05EF7H + .word 06318H,06739H,06B5AH,06F7BH,00H,0C63H,014A5H,02108H + .word 02D6BH,03DEFH,04A52H,02D6BH,03DEFH,04A52H,05294H,05AD6H + +scorep: + .word 63 + .word 00H,05H,03E0H,02C0H,01E0H,02D6BH,07C00H,014A5H + .word 00H,07FFFH,07F60H,01B4H,0278H,0237H,0E9H,0216H + .word 01D5H,0573H,0152H,0111H,07FA0H,07F20H,07F00H,07EE0H + .word 07EC0H,07EA0H,0D0H,07FE0H,018C6H,0699H,06DBH,06BAH + .word 0AFBH,0F9EH,0F7EH,0B5DH,0B1CH,0258H,013BFH,01F6H + .word 07F25H,02800H,06B5AH,0BH,06B5FH,07F21H,04A54H,07FA7H + .word 07220H,039D0H,07BDEH,0739CH,06F7BH,06739H,06318H,05EF7H + .word 018D2H,05AD6H,07FFFH,04E73H,03DEFH,0294AH,07FFFH + +shadow_p: + .word 2 + .word 018D5H,0842H + +jmeter_p: + .word 5 + .word 00H,01FH,07F60H,01E0H,00H + +HEALTH_P: + .word 31 + .word 00H,02C0H,0721H,013A4H,03BCEH,04FF3H,0240H,0779CH + .word 077BDH,03DEFH,05AD6H,056B5H,05EF7H,06318H,02529H,0294AH + .word 04C00H,05C00H,07000H,06400H,05800H,03C00H,03000H,01FH + .word 0300H,01084H,0360H,03A0H,0340H,01E0H,0160H + +TEXT_P: + .word 4 + .word 00H,07FE0H,00H,07FFFH + +BARR_P: + .word 15 + .word 00H,07EF7H,07E73H,079ADH,0754AH,07108H,05800H,05000H + .word 04400H,03C00H,03400H,02C00H,02400H,01C00H,0421H + +RRMUGA_P: + .word 255 + .word 07C1FH,04593H,03930H,04D95H,0310EH,028CBH,0288BH,028ACH + .word 02CACH,0288CH,02CADH,02C8CH,028ABH,02C8DH,03909H,05DEBH + .word 0660DH,06DEAH,05D67H,05925H,05524H,0722BH,0764CH,07A4CH + .word 07E4CH,07E6CH,07E2BH,07E0AH,079E9H,079EAH,07E0BH,075E9H + .word 069A8H,06987H,065A8H,05546H,048E4H,038A2H,03082H,02061H + .word 01840H,01861H,01862H,01062H,0C41H,01061H,0C61H,01463H + .word 01466H,01C88H,0248BH,024AAH,0248AH,02489H,0288AH,02488H + .word 0208AH,02889H,01886H,018A6H,01084H,04172H,03D31H,0350FH + .word 02CABH,02C8BH,034EAH,04149H,061EDH,04D05H,044E3H,061EAH + .word 06E2CH,07A8FH,07A6CH,07E4BH,075EAH,071A9H,05DA8H,05526H + .word 02062H,01841H,01441H,0C42H,0C62H,01042H,01063H,01065H + .word 01887H,02069H,02089H,020A9H,01485H,04152H,024CAH,0288DH + .word 028ADH,02CECH,03D27H,04967H,03061H,038C3H,02C81H,038E5H + .word 04D68H,06E4DH,0720AH,07209H,07A2BH,07A0AH,07E2AH,0760AH + .word 06DC9H,06587H,06167H,05D68H,02862H,01C41H,01462H,018A4H + .word 01847H,05196H,02CC5H,034E4H,030C3H,01C62H,03527H,04547H + .word 051A9H,06E0AH,07A2AH,07A0BH,02C82H,01482H,01082H,01483H + .word 01446H,01C68H,028AAH,02CAEH,030EDH,020A4H,03105H,0762BH + .word 0720BH,02861H,030CDH,024ABH,02088H,01C61H,020C5H,02CE6H + .word 02CC3H,04D88H,059C9H,065C9H,01C40H,01440H,01041H,0308DH + .word 024A3H,01883H,020E6H,02906H,03968H,03925H,05987H,04D45H + .word 04504H,01045H,02087H,01442H,01461H,0C21H,01044H,02C8EH + .word 01863H,01866H,01465H,02C89H,030ACH,02068H,030ADH,0C40H + .word 02469H,014A3H,0820H,0C20H,0841H,0246AH,04573H,030AEH + .word 0C24H,01CC5H,04974H,0822H,0821H,049B4H,01C63H,0C43H + .word 028A9H,02869H,01C66H,04DB5H,02467H,01846H,0308CH,030ABH + .word 0800H,01043H,0286AH,01C67H,01022H,01443H,02468H,01C87H + .word 030CCH,01822H,01484H,01C46H,02888H,02C8AH,024A9H,030ECH + .word 02CAFH,02C8FH,0401H,0308EH,0402H,02867H,020A8H,0312EH + .word 030AFH,030CFH,04DD5H,059D6H,05A16H,034AEH,05E79H,04171H + .word 05A77H,062DBH,0629BH,05A39H,059F9H,059D8H,055D7H,055B6H + .word 051B6H,03D71H,059F8H,055B8H,051B7H,0627BH,03950H + +RRMUGB_P: + .word 253 + .word 07C1FH,04593H,03D31H,0310EH,020A9H,02489H,02088H,02067H + .word 02488H,024AAH,028ACH,028ABH,024ABH,0288BH,024ACH,0248BH + .word 028ADH,038ECH,04D88H,055AAH,05DAAH,065A8H,069A9H,06947H + .word 079EBH,07DEBH,07DCAH,079C9H,079A8H,075A9H,079EAH,07A0BH + .word 0760AH,075CAH,07E4EH,07E8FH,07E91H,07E6FH,07E2DH,07E0CH + .word 079EDH,075EBH,071CAH,06DA9H,04172H,030EDH,01C88H,02086H + .word 0248AH,0288CH,04969H,059CBH,061CBH,06167H,07DEAH,075C9H + .word 07A2CH,07E4DH,07E2CH,07A0CH,079CAH,03D71H,0350FH,02089H + .word 028AAH,04129H,05189H,06DEAH,07187H,07E6EH,024CAH,03929H + .word 06567H,075EAH,06D67H,071A8H,06DA8H,071A9H,07E0BH,07E6DH + .word 07E4CH,03529H,04547H,05D88H,065AAH,071EBH,06D87H,07A4DH + .word 07E0DH,03930H,02D05H,075A8H,07E2BH,07A2BH,07A4CH,07DE9H + .word 07E70H,07E90H,07E4FH,028CBH,0288AH,02CC5H,030E3H,04569H + .word 06EB3H,07716H,0560FH,04D8AH,055CCH,0766EH,071C8H,06DA7H + .word 07A0AH,075E9H,0762CH,0760BH,07A6EH,07A4EH,04D95H,028A9H + .word 02CC6H,034E5H,02883H,03906H,06EF5H,03527H,06E6FH,071E9H + .word 071C9H,07A90H,06E0BH,04974H,024A8H,03104H,02CE3H,03D48H + .word 045ABH,024A3H,024A2H,051CBH,07EB1H,06DC9H,069A8H,0762FH + .word 06E2FH,061ECH,05DCCH,02469H,02889H,02888H,024A5H,06A0CH + .word 06146H,05D45H,06587H,05525H,04CC3H,07691H,0620EH,038E5H + .word 034A4H,03D05H,04526H,05567H,05D67H,04573H,02CECH,02887H + .word 02482H,02083H,01C62H,0660CH,06145H,06125H,05D25H,044C3H + .word 03882H,03461H,02441H,01C41H,04D26H,02C8BH,02464H,02483H + .word 04D47H,069A7H,05903H,054E3H,044A3H,03062H,028A4H,04505H + .word 06967H,058E4H,04CA2H,04481H,03861H,02C62H,02463H,04905H + .word 02CABH,02C8CH,02CADH,034E8H,06946H,06526H,02C40H,03D2AH + .word 05987H,06D66H,06D46H,04152H,0288DH,07188H,07167H,03082H + .word 02CACH,07588H,06566H,044E5H,05568H,02C8DH,0454AH,0720BH + .word 069ECH,07A6FH,02C8AH,0412BH,079E9H,06966H,07EF2H,07EB2H + .word 07AB1H,07A4FH,07E09H,07F14H,06987H,0660BH,07E0AH,07ED1H + .word 07EB0H,06D88H,075C8H,071EAH,06988H,02869H,030CAH,04D6AH + .word 06DAAH,07DC9H,06965H,07E4BH,07E6CH + +RRMUGC_P: + .word 253 + .word 07C1FH,06D89H,06988H,06147H,06568H,05D68H,05D47H,05947H + .word 05125H,04905H,040C4H,038A4H,030A4H,02CA4H,030E5H,03906H + .word 04527H,055AAH,06A2DH,065CAH,04D25H,048E4H,05126H,065ABH + .word 0762CH,07E6FH,07E8FH,0764DH,05924H,02C00H,02800H,02000H + .word 01820H,01441H,01462H,01062H,01483H,01045H,01446H,01C68H + .word 0248AH,02489H,024AAH,020A9H,01886H,018A6H,01084H,075A9H + .word 06DA8H,06567H,06167H,05D46H,04D05H,044C4H,03CC4H,028A3H + .word 03D07H,05189H,065ECH,05D89H,07E4DH,05903H,06DEAH,03861H + .word 01C20H,01842H,01461H,01463H,018A4H,01847H,02069H,075C9H + .word 06DA9H,06588H,05D67H,05546H,03CC3H,034A3H,02CA3H,03506H + .word 04948H,0598AH,05DCBH,04906H,06DECH,0768FH,0760BH,048C4H + .word 02400H,01466H,024CAH,028AAH,024ABH,0288AH,079EBH,075CAH + .word 071CAH,069A9H,05967H,03482H,034E6H,03907H,03D06H,05169H + .word 05147H,044E4H,044E5H,05969H,0764EH,07A2CH,03000H,01821H + .word 01442H,01065H,028CBH,024A9H,02088H,075EAH,06187H,04904H + .word 03CA3H,03481H,02882H,02483H,04D67H,03461H,0248BH,02087H + .word 06188H,05547H,02861H,02041H,01841H,01862H,020A4H,028E5H + .word 05168H,044A3H,07AF2H,06987H,04CC4H,01C21H,02488H,07A0BH + .word 071EAH,06DC9H,01C41H,03D27H,04568H,06166H,05D45H,01883H + .word 02889H,028ABH,01C88H,071EBH,075EBH,05946H,03CA2H,01C40H + .word 02CE6H,055CAH,04503H,05568H,06A2EH,01861H,01887H,02089H + .word 01C87H,01866H,065A8H,04D04H,040C3H,02461H,03948H,0498AH + .word 03CA1H,05148H,05146H,01840H,02086H,06189H,065A9H,061A8H + .word 05D87H,024C4H,04D89H,040E4H,02C20H,02068H,02467H,02487H + .word 05968H,05966H,05525H,02020H,01041H,01042H,051EDH,06A6FH + .word 05567H,05107H,0288CH,03882H,0C21H,0C42H,049CCH,05E2DH + .word 0620BH,01021H,03926H,02460H,01440H,05167H,034A2H,028A9H + .word 03082H,01061H,038C4H,02C62H,02441H,0C41H,05926H,05105H + .word 038A3H,05526H,05505H,03083H,02883H,0288BH,03483H,01C62H + .word 01063H,0208AH,030A3H,01C61H,044C5H,02061H,048E5H,01863H + .word 01C42H,05106H,02C82H,01044H,05D66H,02462H,0C61H,06146H + .word 02468H,02888H,0C62H,01083H,069A8H + +RRMUGD_P: + .word 253 + .word 07C1FH,03D71H,03930H,0310EH,024ABH,0248AH,024AAH,020AAH + .word 024A9H,020A9H,02089H,02088H,02488H,02087H,01C85H,01C87H + .word 01C66H,02CE7H,03D47H,04547H,04569H,04948H,05569H,05548H + .word 05127H,05528H,04907H,04D28H,04D49H,04D69H,04527H,038E5H + .word 04106H,03D06H,034C5H,02883H,02083H,02084H,01862H,04172H + .word 030EDH,0208AH,01C88H,03106H,04968H,04D48H,05989H,05DAAH + .word 061AAH,05549H,04D6AH,051AAH,04D89H,04528H,04127H,04107H + .word 03CE6H,02CC4H,02489H,020A8H,01C65H,069EDH,05148H,05149H + .word 04DAAH,055CCH,04105H,030A4H,02CA4H,03950H,0350FH,04593H + .word 0248BH,020C5H,04969H,04D27H,065CBH,065CCH,05969H,055CBH + .word 059CAH,059ECH,05189H,04126H,034E6H,028A9H,02065H,02067H + .word 03D48H,04D68H,05D89H,0596AH,0556AH,05169H,03D05H,024ACH + .word 03D4BH,0416AH,03108H,04589H,05968H,04D26H,05568H,05168H + .word 04927H,0352AH,0664EH,0458BH,04D47H,04526H,028AAH,02CE9H + .word 04DACH,04506H,05547H,05147H,0288BH,0392BH,030E8H,05947H + .word 05926H,05105H,05D68H,06189H,05D47H,04D25H,04926H,040E5H + .word 04D45H,05988H,06DAAH,071AAH,075ECH,06568H,06D69H,06589H + .word 069A9H,06588H,065A9H,05167H,061C9H,06989H,079EDH,075CBH + .word 06D89H,06DCAH,05D67H,05546H,05567H,0716AH,07169H,06D6AH + .word 075ACH,06DA9H,06988H,05D46H,01C68H,028CBH,03929H,048E6H + .word 04D07H,05D69H,0656BH,06129H,07A0DH,06167H,03D31H,038A4H + .word 03483H,06E72H,07717H,072B3H,06250H,06230H,04949H,07230H + .word 05D88H,061A9H,05DA9H,04906H,048E4H,03883H,05A0DH,02D05H + .word 05166H,054C4H,048A4H,044A4H,06A0DH,059A9H,028ABH,06188H + .word 05CE5H,05928H,0662DH,06126H,05967H,05146H,0288AH,05948H + .word 04D06H,061A8H,05946H,044C3H,05DA8H,04481H,040A3H,05D87H + .word 028ACH,05DC9H,03462H,03461H,024CAH,02D06H,05D25H,04CC3H + .word 03C40H,02C20H,02863H,02063H,02CECH,06D88H,06947H,048A2H + .word 04062H,03020H,0722EH,0762DH,065A8H,06DA8H,07E4FH,075A9H + .word 06D87H,06926H,04860H,06187H,06DC9H,07ED1H,079EAH,075C9H + .word 06504H,054A2H,079C9H,058E3H,07E2EH,049B4H,07E91H,020ABH + .word 07A0BH,079A8H,07EF4H,07EB2H,069A8H + +RRMUGE_P: + .word 251 + .word 07C1FH,01862H,01463H,01462H,01883H,028C5H,04569H,04527H + .word 040E5H,05147H,06A2EH,07A90H,07A6EH,075EBH,050E4H,02800H + .word 02861H,03D48H,051ECH,04587H,03D05H,03D45H,034C3H,02883H + .word 02CE5H,02083H,01841H,02CE4H,0560CH,0668DH,06A8CH,0728AH + .word 06E68H,06E47H,059E7H,051C6H,045A9H,03D89H,03569H,02928H + .word 04630H,02D2CH,01C88H,01CA8H,020A8H,02089H,01887H,018A6H + .word 01485H,01084H,01C83H,03526H,04948H,04906H,04D05H,065CBH + .word 0762CH,06DAAH,040A3H,03400H,03062H,02CA4H,03D07H,03505H + .word 024A1H,02062H,01CA3H,01C82H,04D89H,04987H,055A7H,04D84H + .word 034E1H,02907H,01CA4H,02D4AH,02088H,01886H,028E6H,04D8AH + .word 04D69H,044E6H,04CE5H,05968H,0724FH,0762EH,06DEBH,05125H + .word 03820H,02041H,01461H,02506H,02D05H,04105H,020A9H,024CAH + .word 028CBH,0356BH,02087H,04969H,04D27H,05126H,06587H,050E3H + .word 03860H,02420H,01441H,01061H,01062H,01442H,01041H,03547H + .word 028E4H,024C2H,034A4H,02C63H,024C4H,0416AH,04927H,04D26H + .word 061A9H,069A9H,05947H,04CC2H,038A2H,028E5H,024A4H,01466H + .word 01C87H,018A8H,038C5H,038E6H,034A3H,04926H,04D48H,05568H + .word 06DECH,06167H,03C81H,03061H,01CA2H,01065H,01CA9H,04106H + .word 02C84H,03D28H,05589H,06E0BH,01820H,04126H,03CE5H,038C4H + .word 02CC5H,028A4H,03CE4H,06DC9H,065C9H,01042H,024E6H,02884H + .word 028A5H,038E5H,05DECH,05988H,05145H,01483H,01044H,01045H + .word 0C24H,0C23H,01847H,034C4H,030C5H,05DCBH,05DA9H,01063H + .word 02069H,01888H,028C4H,065ECH,05546H,01C89H,01CA7H,04547H + .word 03CC4H,0558AH,06A0CH,05567H,03081H,01C68H,0248AH,04528H + .word 02CC4H,04506H,044C3H,024A8H,04D68H,04127H,04947H,04D47H + .word 04946H,034E5H,030C4H,01C86H,05DAAH,04D67H,04526H,030E5H + .word 034C5H,05D89H,05566H,02488H,05167H,034E6H,02489H,0208AH + .word 04D46H,061AAH,05D88H,024A9H,020AAH,0248BH,024AAH,05146H + .word 038A4H,059A8H,038E4H,04D6AH,0660DH,07F36H,07736H,03CC3H + .word 04968H,0768FH,07EF1H,0720BH,024ABH,0764DH,07FDBH,06ED2H + .word 020ABH,07E4DH,07A2CH,07F35H,07691H,04081H,07EAFH,05924H + .word 05547H,05989H,07AB2H + +RRMUGF_P: + .word 253 + .word 07C1FH,024CAH,01465H,01485H,020C5H,01CA4H,01CC4H,02105H + .word 020A4H,01480H,01483H,01484H,0352EH,020A9H,014A5H,02527H + .word 024C6H,02505H,02525H,020A1H,02483H,03950H,030EDH,02528H + .word 0310EH,028CBH,01886H,018A6H,01866H,01CC6H,02D6AH,02907H + .word 0316BH,02D48H,028C7H,035A9H,035AAH,03587H,03566H,03105H + .word 030E1H,034E5H,0354FH,0350FH,018A7H,01887H,05E4FH,045AAH + .word 045ECH,0524FH,04DEBH,05EAFH,05EEEH,05E49H,05E27H,05E28H + .word 05E6AH,05ECBH,05E89H,059E6H,04D60H,02CECH,0208AH,01CAAH + .word 020AAH,01C89H,01C88H,01C87H,02088H,01C67H,01C86H,01CA9H + .word 02089H,0396CH,05E2FH,06EF5H,06AB3H,0624FH,072F2H,07FB4H + .word 07FAFH,07F0AH,07EE9H,07EC9H,07EA8H,07ECAH,07F2DH,07F2CH + .word 07F0BH,07F6FH,07FD4H,07FD3H,07FCFH,07F6BH,061A0H,01CA8H + .word 02068H,06691H,04DCCH,07336H,07335H,07FD6H,07F09H,07EEBH + .word 07F4DH,07EEAH,07FF1H,07F8DH,07F8BH,061C0H,01C68H,01C66H + .word 01867H,02087H,0354CH,062D4H,0562FH,06F37H,05E70H,04DA8H + .word 07F53H,07F2BH,07244H,05E91H,04589H,04DABH,06F57H,07B75H + .word 07FB3H,076E9H,0312AH,04548H,07358H,05E6DH,066AFH,07EC8H + .word 07F0CH,07B2AH,020A8H,02086H,055EDH,07311H,07F2AH,07F91H + .word 05E2DH,07332H,05A2BH,07F07H,0560CH,06270H,07EE8H,07377H + .word 06AAFH,02067H,07799H,066B3H,07B78H,06AB1H,051EBH,06ECFH + .word 0396BH,06EF1H,020A7H,05E72H,0418DH,07B9BH,02489H,049A7H + .word 07773H,024AAH,01888H,03D6EH,072F6H,072F5H,07B32H,020ABH + .word 045AEH,04586H,072F0H,07EA7H,024A9H,0248AH,02488H,0352CH + .word 05A30H,03D65H,07795H,066D6H,01CA7H,024ABH,05E93H,0560AH + .word 03D49H,04147H,04545H,024A8H,028C9H,03928H,03D05H,038E2H + .word 030C3H,04526H,05189H,059CBH,028A3H,03906H,04D26H,05168H + .word 05DECH,04125H,020A6H,02CC5H,028A4H,05547H,061ECH,055AAH + .word 038E5H,04D05H,05126H,05D8AH,03CE6H,05528H,034E6H,05948H + .word 01883H,01862H,05947H,04947H,02062H,04D68H,01463H,01462H + .word 04528H,024A7H,01461H,0248BH,03506H,03D71H,02D05H,01442H + .word 03930H,034A4H,03947H,040E5H,03083H,04172H,048E5H,048E6H + .word 044E6H,04593H,028ABH,01C65H,04D28H + +RRMUGG_P: + .word 255 + .word 07C1FH,01484H,01884H,020A4H,01C84H,01CA4H,030E6H,03506H + .word 03547H,04963H,05167H,05569H,05968H,05D89H,05DAAH,05DEBH + .word 065A2H,069C4H,06DC7H,06DA8H,075EAH,079EBH,07A0BH,07E0BH + .word 07DEBH,07E2CH,07E4CH,07E6DH,07E8EH,061A1H,065A5H,075CAH + .word 07E2BH,07E4DH,07E8DH,05D81H,06587H,06DC8H,071CAH,075CBH + .word 07E6CH,05941H,06987H,06A02H,072A7H,071C9H,07DCBH,076EBH + .word 065C2H,079CAH,07E4BH,07F4CH,06E46H,071C8H,071A9H,079EAH + .word 07EC9H,07F2CH,06206H,075C9H,079CBH,07F0AH,07F2BH,071E8H + .word 07DECH,07DEAH,07E0AH,07F0BH,07EEAH,06E04H,06DC2H,071E7H + .word 075E9H,07E2AH,079C9H,07268H,07B0BH,071E5H,07267H,0760BH + .word 07A0AH,07EA9H,05522H,07207H,07EA7H,07689H,05563H,065E5H + .word 05963H,075C8H,04903H,04D01H,07FD6H,07F4EH,07EE7H,07E65H + .word 076AAH,04CE3H,04480H,072D0H,07BB7H,07F2EH,076ECH,044C2H + .word 03840H,048E1H,05965H,06167H,06188H,038E3H,04525H,04DA9H + .word 055E9H,04964H,07AEEH,03820H,03880H,04145H,02CA1H,04547H + .word 034C3H,06E6DH,07EEDH,07F2AH,0772CH,03440H,061C9H,06DCAH + .word 04947H,03081H,03D25H,03CE5H,06A8FH,07F4BH,07F09H,044E5H + .word 071E9H,0560BH,03D23H,03D26H,05E4CH,07F73H,05584H,05589H + .word 06A0BH,04D68H,06F14H,07FD8H,065EDH,02461H,028A2H,066D1H + .word 05982H,038A3H,02861H,034C4H,034A3H,038E6H,06270H,07B31H + .word 050C0H,04060H,06169H,065AAH,04D25H,0562FH,05A0CH,06ED1H + .word 06E6AH,0770BH,05920H,05504H,04DC9H,051A7H,05A2AH,076EFH + .word 07FACH,07B2AH,05D67H,028A4H,01841H,01862H,02483H,051EBH + .word 07F71H,07F8FH,05926H,05527H,04D26H,02CC5H,02462H,04569H + .word 07AF1H,07F91H,07FCFH,07FABH,03020H,06DAAH,0560DH,07FF0H + .word 07F69H,07F07H,05984H,0556AH,07F95H,0772FH,07F89H,04928H + .word 055AAH,065CBH,0624DH,07F75H,076C9H,07F47H,071EAH,02420H + .word 03505H,02CE3H,04DCAH,030A4H,04127H,06A0DH,071EBH,05987H + .word 02481H,0666EH,06E8DH,06A27H,07FD3H,07F05H,01CA3H,0762CH + .word 05925H,04CE4H,02C00H,05EB2H,06A90H,07731H,06628H,06EABH + .word 07793H,07BD4H,01463H,0724FH,02863H,05609H,06712H,01041H + .word 02CE6H,07A90H,07A4EH,0498AH,03D67H,05E6EH,07353H + +RRMUGH_P: + .word 252 + .word 07C1FH,01884H,01484H,01084H,01C84H,01CA4H,024A5H,03526H + .word 03546H,03506H,030E6H,030C6H,030C5H,024C6H,02084H,05DEBH + .word 05DC9H,05DA9H,05D87H,05D66H,05966H,05967H,05566H,05146H + .word 04946H,03D06H,034E6H,024A4H,07E8DH,07E6DH,07E4CH,07E6CH + .word 07E4BH,07E2BH,07E09H,07DE9H,079E9H,079C9H,075C9H,075C8H + .word 06DA7H,06D86H,06986H,07E2CH,07E0AH,079C8H,071C7H,07E2AH + .word 07A09H,079E8H,075E8H,071C8H,06DA6H,07E29H,071A7H,06987H + .word 071A8H,06586H,069A7H,075E7H,075C7H,07E6BH,07E4AH,06566H + .word 05946H,075E9H,05945H,020A5H,06565H,020A4H,06D87H,05546H + .word 06166H,07A0AH,06966H,06187H,06DA8H,06587H,06588H,05567H + .word 020C5H,071C9H,065A7H,065C9H,05188H,02506H,06988H,069A8H + .word 065CAH,0660CH,059ECH,03507H,01CC4H,06DC8H,069C9H,069EAH + .word 06A4FH,0562DH,02CE6H,075EAH,06DA9H,06DC9H,06E2DH,0624EH + .word 055CAH,04567H,02CE5H,06E2EH,07270H,07690H,04945H,04505H + .word 071E9H,069C8H,0724FH,06A70H,04D25H,04925H,044E4H,04D05H + .word 05125H,05D67H,05145H,04D04H,02CE3H,05925H,05525H,05124H + .word 04CE3H,01883H,01083H,05D46H,05104H,04CE4H,06167H,05524H + .word 03CC4H,01482H,01061H,06567H,05504H,038A2H,01081H,06DE9H + .word 06D88H,050E4H,044A3H,044C3H,03481H,01861H,01062H,071A9H + .word 05105H,03881H,02C61H,02460H,01C62H,04906H,05568H,034A2H + .word 05147H,06146H,01483H,034C3H,04905H,02862H,02062H,020A3H + .word 03060H,02882H,01C21H,014A5H,01485H,02880H,038E3H,05E0AH + .word 0666DH,04DA6H,02481H,01CC7H,02509H,014C6H,07F0AH,07288H + .word 061E4H,06E4AH,076EEH,07B2FH,07F6FH,07FB0H,0730DH,01C80H + .word 0358EH,04631H,0296BH,07EC8H,07EEAH,07F4DH,07F8FH,07F8DH + .word 05E86H,02D05H,04E75H,04654H,014A6H,07F09H,07F6BH,06AA9H + .word 04DC7H,045A9H,0398AH,0358BH,039CFH,056B7H,056D7H,035D0H + .word 07F07H,07EA7H,05A06H,04DC8H,05670H,04632H,04E95H,03E12H + .word 039B0H,01C88H,018A6H,07EE6H,07EA8H,076EBH,06669H,05E6DH + .word 04A10H,02D8DH,03DF0H,05EF9H,02088H,07EA5H,072ECH,05E28H + .word 0522FH,041EEH,0318DH,04653H,056D8H,07F92H,07A65H,07666H + .word 07AAAH,0666AH,04A0FH,04A53H + +UNMUGA_P: + .word 99 + .word 07C1FH,05EF7H,05294H,056B5H,06318H,04A52H,039ADH,0358DH + .word 0318CH,0358CH,0316CH,0356CH,014A5H,00H,0400H,0420H + .word 035ADH,0401H,05AD6H,039CEH,0294AH,0316BH,02D6BH,018A6H + .word 02D6CH,0318BH,0822H,020E8H,05AB6H,04E73H,0356BH,018A5H + .word 01484H,020H,05694H,05AB5H,04E53H,039AEH,0314BH,02D4BH + .word 0C63H,04E52H,0316AH,02D4AH,0C42H,05695H,02D2AH,02929H + .word 0821H,062F7H,0292AH,02D29H,024E7H,04A32H,020E7H,0421H + .word 02908H,02909H,018A4H,062F8H,02508H,0314AH,04A31H,02928H + .word 02D49H,02509H,06718H,024E8H,01042H,04631H,01CC7H,02108H + .word 018C6H,0842H,020C7H,01043H,0C43H,05ED6H,05273H,01CC6H + .word 020C6H,06F5AH,041EFH,01063H,06739H,06F7BH,04611H,04A11H + .word 04210H,077BDH,06B5AH,06F5BH,06B39H,06719H,05ED7H,05EB6H + .word 05A95H,05674H,03DEFH + +UNMUGB_P: + .word 123 + .word 07C1FH,0421H,0420H,0821H,0841H,0C41H,01883H,01441H + .word 01861H,01862H,0C20H,0820H,0400H,00H,01062H,01083H + .word 0358BH,05293H,04A4FH,04A51H,02D6BH,0294AH,02529H,02108H + .word 01082H,018C5H,02948H,0420EH,05EF7H,05294H,0C83H,014A5H + .word 05F17H,06339H,0441H,039CEH,05AD6H,05F18H,020H,02528H + .word 056D5H,06739H,014A4H,05EF6H,05ED6H,04210H,056B4H,06738H + .word 0840H,0C42H,01CE6H,05AB5H,06319H,06718H,035ADH,018A5H + .word 056B5H,06719H,02D6AH,06318H,020E7H,04E73H,0842H,0C62H + .word 06338H,062F8H,05EF8H,0861H,0C61H,0862H,039EDH,06F9AH + .word 077BBH,06B59H,06317H,062F7H,0C63H,02107H,01483H,014C4H + .word 05AD3H,01484H,01084H,02505H,041EDH,05ED5H,020E5H,0316BH + .word 04A2FH,05AB3H,05273H,03E0FH,03E10H,035CEH,02D6CH,02D4AH + .word 05AD7H,05695H,039CFH,0296BH,02508H,02928H,052B4H,041F0H + .word 05AF6H,05ED7H,05AB6H,041EFH,04A32H,020E8H,05AF7H,03DCEH + .word 02D8BH,04632H,056D6H,035CDH,06F7BH,06F5AH,06B5AH,06F5BH + .word 03DEFH,0673AH,06B3AH + +UNMUGC_P: + .word 255 + .word 07C1FH,06318H,056B5H,05294H,04631H,04A32H,04A52H,04E73H + .word 04630H,04610H,04210H,04A31H,041EFH,03DCEH,0318BH,01CC6H + .word 0841H,014A5H,0C62H,0421H,0821H,00H,0420H,0C42H + .word 01462H,020C5H,03107H,045AAH,04589H,034C2H,04546H,04D87H + .word 05187H,04D45H,055A7H,059C8H,06209H,05DE8H,04611H,04A11H + .word 0420FH,0358CH,02528H,01084H,02928H,01484H,0400H,0C41H + .word 018A3H,02927H,045CCH,03D24H,04D66H,04D89H,051A7H,051A8H + .word 05186H,04211H,035ADH,0316BH,03DEEH,020E6H,01884H,0820H + .word 01063H,018A4H,0C21H,0C00H,01461H,028E6H,045CBH,04DCBH + .word 055C9H,059C9H,055A8H,04632H,041F0H,039ADH,02D4AH,02D49H + .word 018A5H,0842H,01CC5H,03548H,03D69H,04969H,051CBH,059EBH + .word 05DEAH,0620AH,061EAH,05DC9H,059A8H,06739H,04652H,04A53H + .word 031ADH,0294AH,02D6AH,01CE6H,01483H,0398AH,041AAH,05E0CH + .word 061EBH,0660BH,06A4DH,06A2CH,06A0BH,061E9H,05DE9H,05EF8H + .word 05295H,056B4H,06738H,04E74H,03DF0H,02D6BH,02507H,05A0CH + .word 06A6FH,0666FH,0620BH,06A0AH,062F7H,05694H,06718H,05273H + .word 03DEFH,039CEH,01062H,051ECH,05E2DH,072B2H,06E91H,0662CH + .word 06E0BH,065EAH,05EF7H,04E52H,01083H,018C6H,041ABH,04DECH + .word 0622DH,06A2BH,06E2BH,03DCFH,035AEH,0C63H,055EAH,059CAH + .word 05588H,0660AH,05693H,04E72H,041EEH,04A51H,039AEH,03549H + .word 055CAH,055A9H,05188H,05DEBH,05DCAH,05AD6H,02947H,03169H + .word 039CCH,04E53H,01CC7H,059EAH,0660CH,0662BH,0420EH,0462FH + .word 03D89H,055EBH,0620CH,0316AH,014A3H,03149H,051EBH,0560CH + .word 03569H,05A2DH,01CA4H,055AAH,05587H,059CBH,03148H,05E2CH + .word 0622CH,04504H,04126H,05E0BH,0356AH,05E91H,04503H,03CC2H + .word 03CE4H,03926H,04148H,055CBH,0662DH,0664DH,0562FH,05E4FH + .word 030C5H,034E6H,059CCH,0622EH,01862H,028C5H,024A4H,03D47H + .word 05E0DH,0401H,01463H,04E0EH,05650H,0418BH,045ABH,05A2FH + .word 05ED7H,021H,01H,05ED3H,06716H,062F5H,041ACH,0460EH + .word 05AB5H,05695H,0C43H,0422H,05ED6H,062F8H,0292AH,01CE7H + .word 01485H,0843H,0318CH,02D4BH,01CE8H,014A6H,01064H,0823H + .word 0358DH,020E8H,018A6H,0316CH,0314BH,018C7H,01085H + +UNMUGD_P: + .word 254 + .word 07C1FH,059C8H,05DE8H,055A7H,059A7H,05DC8H,0620AH,06A4CH + .word 06A2BH,0660AH,061E9H,05DE9H,04945H,02861H,01800H,01000H + .word 0C00H,0800H,0420H,0820H,0421H,021H,00H,0400H + .word 0841H,0C42H,014A3H,01483H,0C41H,059A8H,0662BH,0660BH + .word 034C2H,01C00H,020H,0C40H,06A2CH,04103H,02420H,01400H + .word 05DC9H,05DEAH,06A4DH,06E6DH,06E4DH,04D45H,03081H,0821H + .word 0620BH,06E4CH,06A0BH,061EAH,05587H,04102H,02000H,06E2CH + .word 059E9H,04D65H,02C60H,0662CH,0726EH,065EAH,059C7H,03CE2H + .word 06E6EH,04123H,02020H,059C9H,05586H,05186H,02C81H,05E0AH + .word 04124H,01C20H,0C62H,055C9H,04D87H,01820H,01841H,01461H + .word 01861H,01041H,0C20H,01042H,01062H,0C21H,0C61H,0728EH + .word 0728FH,04966H,034C3H,03904H,03503H,03D03H,02CA2H,01C40H + .word 01420H,01862H,01883H,01020H,076AFH,055A8H,05187H,02860H + .word 02460H,02481H,02082H,076B0H,05165H,04523H,030A0H,02C80H + .word 028A1H,02040H,0840H,072B0H,06A4EH,0664DH,04D24H,04503H + .word 038C1H,02060H,01860H,01440H,06A8FH,06A6EH,0620CH,0622BH + .word 04D44H,04923H,02461H,01C60H,0662DH,0622CH,05E0BH,05A0AH + .word 051C9H,051A8H,04944H,04524H,034A1H,02061H,04DA8H,06A6DH + .word 0664CH,059EAH,05166H,030A1H,01C61H,01441H,0664EH,055C8H + .word 055EAH,051A9H,055CAH,055A9H,04545H,034C1H,02440H,06E91H + .word 07290H,0622DH,04D88H,05DEBH,05188H,04525H,04967H,038E2H + .word 01462H,01082H,072B1H,07291H,055ECH,04567H,04988H,05E2CH + .word 04D66H,06E70H,06A6FH,05E0DH,04DAAH,0560BH,02880H,01083H + .word 05A0DH,059EBH,04968H,04DA9H,049A8H,051E9H,055E9H,018A4H + .word 01484H,018C4H,04168H,03D47H,03D26H,05E4EH,0624EH,05A0CH + .word 014A4H,01CE6H,02108H,01CE7H,03527H,02CE5H,030C4H,0560CH + .word 05E2DH,038E3H,02107H,02949H,02926H,051CBH,059ECH,059CAH + .word 020A4H,03948H,045ABH,04DCCH,055EBH,05E0CH,04D67H,020E6H + .word 03D8AH,0562EH,04125H,0316AH,0318BH,04E0DH,06AD3H,0664FH + .word 051A7H,030C2H,01463H,0401H,0422FH,03568H,05A50H,06290H + .word 051EAH,0441H,03DECH,052B3H,04E71H,0294AH,02529H,045EBH + .word 049A9H,02CA1H,056B4H,024C2H,03E0DH,0464EH + +UNMUGE_P: + .word 255 + .word 07C1FH,06739H,05EF7H,06318H,056B5H,04E73H,05272H,05273H + .word 04E72H,04E52H,05252H,05294H,05694H,056B4H,039CEH,02929H + .word 03DEDH,02D6AH,0318AH,0420EH,02527H,0C41H,01CE6H,01083H + .word 0841H,0420H,0862H,014A5H,018C5H,0421H,06738H,05EF6H + .word 05ED6H,06317H,04E53H,05673H,04A52H,03DCEH,035ACH,03DEEH + .word 0316AH,035CCH,02507H,0821H,01483H,014A4H,014A3H,0318BH + .word 0400H,0C63H,00H,06718H,062F7H,05274H,04210H,04610H + .word 04630H,031ACH,018A5H,0C42H,01063H,02107H,010A3H,02949H + .word 05695H,05AB5H,039ADH,05693H,041EFH,04631H,02529H,0842H + .word 0296AH,05674H,04A51H,0420FH,03DEFH,01CE7H,0C62H,01CC6H + .word 020E6H,05293H,05ED5H,035ADH,0316BH,0294AH,039CDH,0358CH + .word 018C6H,01084H,01484H,05AB4H,05AD6H,0358BH,0822H,041EEH + .word 0460FH,039ACH,02928H,05ED7H,04A31H,03DCDH,02D49H,0820H + .word 01062H,01CA3H,01862H,02948H,018A4H,02528H,018A3H,01462H + .word 020A3H,024A3H,02D4AH,01CC4H,024C3H,028C4H,02CC3H,030E4H + .word 04A30H,018C4H,01CE5H,02106H,01882H,020C4H,028E5H,028E4H + .word 03504H,03904H,03CE3H,0462FH,039CCH,04A50H,03D25H,03D04H + .word 04A53H,041EDH,0460EH,0840H,020E5H,024E5H,02CE5H,04545H + .word 04524H,04103H,02D69H,028E6H,02D06H,03527H,04D86H,05166H + .word 04945H,04A32H,01CA4H,024C5H,03D47H,04566H,04966H,05186H + .word 05587H,01883H,020C5H,04188H,04587H,04987H,04D87H,05187H + .word 055A7H,01461H,01CA2H,02D05H,04588H,04988H,04DA8H,051A8H + .word 059C8H,059A8H,03DCCH,01082H,024E6H,020A2H,02CC4H,04189H + .word 04589H,049A9H,055C9H,055CBH,059E9H,05E0AH,059EBH,06719H + .word 062F8H,04611H,0318CH,0C61H,02506H,03569H,03DAAH,045CBH + .word 03906H,04568H,05E0BH,041CEH,049CBH,049AAH,0620BH,0622CH + .word 041AAH,04DECH,04DA9H,051A7H,0664DH,04E74H,02D6BH,06A6EH + .word 04E51H,01C83H,051A9H,06E8FH,01CC5H,03948H,0620CH,0662CH + .word 06E4DH,0728EH,024A2H,04D68H,061EAH,06A2CH,05AB6H,03DCFH + .word 024C4H,04527H,04926H,059C9H,05DC9H,0660BH,04D88H,05588H + .word 05987H,04632H,04652H,020E7H,03546H,055A9H,05DE9H,061E9H + .word 05DC8H,01042H,034C2H,0620AH,0660AH,06A2AH,0662AH + +UNMUGF_P: + .word 126 + .word 07C1FH,0421H,020E6H,02548H,014A3H,0821H,0420H,0400H + .word 00H,020H,01CE7H,02969H,018C5H,0841H,0C62H,02528H + .word 01082H,0C63H,01083H,01484H,0401H,01020H,0C00H,0800H + .word 0820H,02082H,01420H,01000H,01063H,028A2H,02060H,0C42H + .word 034C2H,02461H,01400H,03CE2H,02C81H,02460H,040E2H,034A2H + .word 02040H,01820H,04103H,04523H,03CE3H,034C1H,038C1H,04104H + .word 038E3H,02860H,01C20H,04D65H,04D45H,04924H,04503H,018A4H + .word 0840H,05186H,05166H,04965H,030A1H,01C40H,0C61H,051A7H + .word 04D66H,04525H,04524H,03D03H,038C2H,0842H,055C8H,055C9H + .word 04D87H,04967H,04946H,04945H,04966H,02420H,05DEAH,055EAH + .word 051C9H,05A0AH,055E9H,055A8H,04565H,04123H,0622CH,0664DH + .word 05187H,06E6EH,06E8FH,038E2H,02440H,0728FH,0768FH,0620CH + .word 059C9H,01800H,0728EH,0726EH,0660CH,0620AH,038C3H,0C41H + .word 06E6DH,06A4DH,061EAH,05DE9H,059C8H,06A4CH,06E4DH,0662CH + .word 055A7H,01C00H,05DC9H,061E9H,06A2CH,059A7H,05586H,05165H + .word 059A8H,06A6CH,05DC8H,01062H,055A6H,05DE8H + +UNMUGG_P: + .word 127 + .word 07C1FH,056B5H,039AEH,0316BH,02909H,020E8H,01CC7H,01CE7H + .word 01CC6H,018C6H,01485H,0400H,04631H,02509H,02929H,02108H + .word 02529H,01084H,01H,0292AH,02508H,0C63H,06318H,039ADH + .word 035ADH,0358DH,0398DH,0358CH,0318CH,0401H,00H,0421H + .word 05EF7H,05274H,04610H,04210H,041F0H,041EFH,03DCFH,03DEFH + .word 0420H,05294H,04611H,020H,045F0H,018A6H,02D4BH,0C42H + .word 03DF0H,014A5H,04A31H,0316CH,0C43H,03DCEH,0821H,0420FH + .word 0801H,03DEEH,039CEH,01085H,02D6BH,0294AH,04A11H,04630H + .word 04A30H,0316AH,05AB5H,04A10H,02D4AH,035ACH,039CFH,01484H + .word 039CDH,05AD5H,04A51H,0842H,0318DH,01043H,021H,05ED6H + .word 04E52H,04A52H,06718H,05AD6H,062F7H,05694H,02D6AH,02507H + .word 04E73H,04E53H,04A32H,04E32H,01CE6H,02528H,014A4H,0820H + .word 06719H,05695H,05273H,02D69H,014A3H,01062H,06739H,04E74H + .word 04A53H,0318BH,0C62H,0841H,05293H,02549H,018C5H,01483H + .word 056B4H,01083H,018A5H,01063H,04E72H,0822H,05295H,0840H + .word 0C41H,01D07H,04E94H,03DEDH,0C21H,05272H,0441H + +UNMUGH_P: + .word 12 + .word 07C1FH,0400H,0420H,0821H,01083H,0841H,0C63H,018C6H + .word 01063H,018C5H,02128H,01D06H + +BMMUGA_P: + .word 254 + .word 04814H,062AEH,05A4CH,0626DH,066AEH,049A8H,049A9H,04987H + .word 04566H,045A8H,04188H,04589H,030E4H,02061H,01C62H,02083H + .word 01C83H,024C5H,020A4H,024A4H,01C84H,01CA4H,028E6H,02063H + .word 02084H,028A6H,02085H,020A5H,024E6H,02507H,03128H,03D6AH + .word 051EEH,05E30H,05E2FH,07F36H,076F2H,07EB1H,07F57H,07ED3H + .word 05E6CH,06ECEH,04D88H,04988H,04588H,04167H,01C41H,01884H + .word 01863H,01463H,01883H,01462H,01CA3H,02484H,01C85H,02907H + .word 02908H,041ACH,051CDH,076B3H,07AF5H,07F14H,04D89H,04DA9H + .word 04568H,04567H,03505H,01C64H,01464H,01CA5H,0314AH,049CCH + .word 06671H,076F4H,07EB3H,01CC5H,0398CH,04DEFH,06A92H,076B1H + .word 04DA8H,04587H,04187H,04168H,04DCAH,028A3H,024A5H,03549H + .word 045EFH,04E0FH,051EAH,01C20H,03507H,030C6H,03D8BH,0562EH + .word 05A6EH,05EADH,0562BH,04948H,04968H,04127H,04547H,04989H + .word 04DC9H,01483H,02CC5H,030C5H,030E6H,028A4H,03D49H,03D28H + .word 028C5H,0458BH,0518AH,04DEAH,03CE5H,038A4H,04D68H,034A3H + .word 038C4H,04146H,03D05H,04546H,01862H,01062H,03D07H,034E6H + .word 030E7H,0520AH,04D49H,038E4H,034A5H,040E6H,03CC3H,04D69H + .word 02020H,034C5H,03CC5H,038A3H,04548H,04947H,04528H,04D48H + .word 03CC4H,049ACH,04DAAH,038E5H,030E3H,04949H,02861H,04149H + .word 04DCBH,066CFH,02C63H,038E6H,04969H,03CE4H,0456AH,04148H + .word 05189H,06AD0H,01C42H,01C63H,01442H,034E5H,04169H,05DCAH + .word 06A4DH,0726EH,0726DH,030C4H,04549H,04D28H,04927H,059AAH + .word 04106H,04506H,05167H,05968H,04CE5H,0722FH,03D45H,038C5H + .word 04107H,059CDH,05568H,06A2EH,04166H,02C81H,034C6H,0556AH + .word 04905H,040E4H,01C82H,01441H,04527H,05187H,04505H,03D46H + .word 04126H,04147H,04D6BH,049EBH,045A9H,02CC3H,02481H,06ED1H + .word 049CAH,04DEBH,045CAH,049EAH,045C9H,02CC4H,06AD1H,04E0CH + .word 04E0BH,0520BH,04E0AH,0522BH,03D88H,02CE5H,04DE9H,049C9H + .word 028C4H,0522CH,030E5H,04526H,049E9H,0520CH,02CE4H,0562CH + .word 0562DH,066B1H,04569H,066D1H,05A4DH,0564CH,0668DH,062AFH + .word 06EF2H,06AAEH,0522DH,06F14H,07F7AH,07737H,06ED3H,06ED2H + .word 06ED0H,06F13H,07777H,07734H,06AD2H,04C75H + +BMMUGB_P: + .word 251 + .word 04814H,07F34H,07F13H,07EF1H,07ED0H,07EF0H,07EF2H,07ECFH + .word 06A0BH,061C9H,04D68H,055ABH,051ECH,04568H,04DAAH,051CBH + .word 04DABH,038E5H,05589H,06E2EH,07AF3H,07EB1H,069EBH,06D87H + .word 07A2CH,0726DH,06A4EH,06A8EH,06AAFH,0668DH,0628DH,05E6CH + .word 05A2BH,05E6DH,0562BH,0626DH,066AFH,066AEH,05E4CH,05A6CH + .word 04E0BH,03588H,02506H,018A4H,07EF3H,059CAH,04DA9H,04969H + .word 04D89H,051ABH,0558AH,05989H,065A9H,0722CH,07AAFH,07A0BH + .word 06E6DH,06A8DH,06AAEH,05A4BH,0564BH,05A6DH,0628EH,0520BH + .word 03988H,07ED1H,07ED2H,07F11H,05DEAH,05A0CH,05DECH,0518AH + .word 05E0AH,06A2CH,07A6EH,0722BH,06A6CH,06ACFH,066ADH,0626CH + .word 0562AH,05E8DH,066CFH,06ED0H,0522BH,02926H,061EBH,061AAH + .word 05568H,061ECH,055AAH,055CBH,0664DH,0664EH,0624CH,05E2BH + .word 0664CH,06A4CH,0668EH,06ECFH,0560AH,062ADH,03568H,07EB3H + .word 0726EH,0768FH,06E8FH,0660CH,059C9H,0620CH,05DCBH,059AAH + .word 06ACEH,05A4CH,0520AH,062AEH,0522CH,07AD1H,059A8H,0622DH + .word 051A9H,049CCH,049ACH,041AAH,04989H,0620DH,0624DH,0562CH + .word 04946H,076B1H,07AF2H,05987H,0662DH,05189H,045CCH,045ACH + .word 0498AH,05A6EH,05E4DH,05A4AH,0564CH,05E0EH,0520DH,0562EH + .word 06671H,072F2H,076D0H,076CFH,0768DH,05588H,049ABH,049AAH + .word 05A2DH,055EBH,059EAH,055CAH,0622EH,0564EH,05A2AH,020E5H + .word 051EBH,0560CH,05E0DH,059EBH,05A0DH,051AAH,04DCBH,04D69H + .word 07311H,0626BH,06EEFH,05E6BH,0628CH,04589H,05167H,05A2CH + .word 05E4BH,0668CH,03567H,02505H,04968H,04547H,06AEFH,06ECEH + .word 066ACH,0622CH,055A8H,059CBH,05968H,05A6BH,06EEEH,05DA8H + .word 06A4DH,04D88H,049A9H,05E8CH,04E09H,05106H,0660BH,051E9H + .word 03147H,05587H,05D89H,06A4BH,059C7H,051CAH,04DE8H,045CBH + .word 04DC7H,07A8DH,0764BH,05565H,05988H,0662CH,05967H,05609H + .word 04527H,05E0CH,05DCAH,04D45H,04905H,04927H,0562DH,05188H + .word 051A8H,05A4DH,04D87H,04948H,05DEBH,05E0BH,04DA8H,05A0BH + .word 05E4AH,04D48H,04503H,05E2DH,01CC4H,04928H,05E2CH,04505H + .word 055EAH,03547H,059A9H,02105H,055A9H,0522AH,01CA4H,0558BH + .word 04D8AH,05E8EH,0520CH + +BMMUGC_P: + .word 255 + .word 04814H,0316BH,02529H,02508H,0821H,0C21H,0C41H,0820H + .word 0C42H,01463H,01863H,01C84H,02084H,02CC6H,03D08H,04D6AH + .word 05548H,05949H,05D48H,05D49H,06169H,05127H,048E5H,04483H + .word 040A4H,03CA4H,040E7H,04507H,0556AH,06E4FH,07EF4H,07F14H + .word 07F55H,07F33H,0420H,01063H,01462H,01C63H,024A5H,02CC5H + .word 02CA4H,034C5H,03CE6H,04D28H,05128H,04907H,040C5H,03883H + .word 04D47H,06E2EH,07F53H,0318BH,01042H,01884H,01442H,034E7H + .word 04528H,044E6H,034A3H,034A4H,04107H,040E6H,07271H,07ED3H + .word 02528H,020A4H,020A5H,028A6H,030C6H,038E7H,03D07H,03CC5H + .word 02C63H,02060H,02462H,028A4H,02083H,02C84H,061EEH,01C83H + .word 01CA4H,02484H,02884H,02882H,01C42H,01441H,051AAH,0724FH + .word 07E6EH,07E90H,01443H,01022H,01842H,055ADH,059CDH,061CCH + .word 069ECH,07A4EH,01C85H,01864H,01464H,02085H,02485H,059ACH + .word 06A0CH,06DCAH,0658AH,06588H,0760CH,01CA5H,028A5H,02CA5H + .word 04969H,07E70H,0764DH,0760BH,065C8H,05947H,035ACH,01843H + .word 01862H,024C5H,030E7H,03507H,034E6H,069ACH,07A8FH,01062H + .word 01483H,024C6H,05D8BH,075ECH,07E2EH,06DE9H,03063H,044C6H + .word 07A4FH,07A6FH,07A6EH,07A2CH,06567H,069A9H,071CBH,03CE7H + .word 06DAAH,07A0CH,075EAH,071AAH,079ECH,0656AH,07E2DH,075EBH + .word 071CAH,07A0DH,02509H,03484H,038C6H,07E4FH,07E4EH,07E4DH + .word 030A4H,03CC6H,075CBH,07E0DH,071EBH,030E6H,030A5H,034A5H + .word 05D28H,024A4H,05948H,05D6AH,07E6FH,02929H,0C20H,0800H + .word 04506H,05D69H,07A2BH,07E91H,071EAH,02949H,038E6H,05969H + .word 05D89H,07A2DH,039ADH,02D4AH,01484H,039CDH,06987H,034C6H + .word 048E6H,03DCEH,024A6H,0C00H,05525H,05A6CH,049E9H,066AEH + .word 045A8H,04DAAH,04989H,01000H,01C62H,04DEAH,06ACFH,045C9H + .word 04547H,02861H,01C20H,049EDH,01C41H,05927H,061CBH,07EB3H + .word 05A8DH,0562BH,03081H,04127H,02020H,0416AH,03504H,04549H + .word 0662EH,02C81H,04988H,034C3H,07F36H,03D05H,07AB1H,07A91H + .word 030E8H,03128H,04D8CH,06E93H,0626DH,049A9H,04DA9H,049A8H + .word 03D6AH,076F6H,041ACH,06230H,06A72H,06651H,076B3H,04987H + .word 02507H,03549H,05E2FH,051CDH,06EB4H,072B4H,07EB1H + +BMMUGD_P: + .word 254 + .word 04814H,07EF2H,07E8EH,069C9H,06166H,069A8H,071ECH,0760CH + .word 07E70H,07EB2H,07EF4H,07ED3H,07F15H,07ED2H,07EB1H,07ED1H + .word 07EB0H,07EAFH,07E8DH,07A6CH,0760BH,06187H,05545H,05DA8H + .word 065CAH,05547H,048E4H,038A2H,05589H,07F13H,07F33H,076D1H + .word 03040H,02800H,02060H,02062H,01862H,020A4H,01CA4H,01884H + .word 018A4H,01C84H,01484H,01084H,07F12H,07A4DH,07E2DH,07E4FH + .word 07F36H,07F35H,07EF3H,07E8FH,07E6DH,07E6CH,07A4CH,061A8H + .word 048E3H,040A2H,05168H,07F34H,07F53H,07B32H,05D87H,02C40H + .word 018A5H,01083H,07F57H,07F14H,07E90H,07E6EH,07E4DH,05967H + .word 065C9H,05125H,04D05H,04926H,06EADH,01883H,07F55H,040E4H + .word 076B2H,07711H,04D45H,02083H,01CC5H,07E6FH,07E91H,07E4EH + .word 07E4CH,07A0BH,071E9H,040C3H,07690H,07F51H,0620BH,020E5H + .word 01063H,07A6EH,07EF1H,07AD1H,07AB0H,06DAAH,07E2CH,071EBH + .word 06DCAH,07F32H,07F11H,0764DH,07A8FH,06169H,06E4EH,07EF0H + .word 04D47H,061ABH,06E2EH,07A2DH,06987H,04505H,06E0DH,05DE9H + .word 02081H,05528H,05126H,05D48H,0616AH,0762EH,07ED0H,07EAEH + .word 07ECFH,06E4DH,03C81H,03CA4H,040A4H,04CE6H,0596AH,061ACH + .word 069ACH,06DECH,07A8EH,02C80H,04D28H,07271H,05E0BH,05DEBH + .word 0724EH,07A6DH,07AAEH,050E5H,03483H,030A4H,05E2EH,07A0CH + .word 07A0DH,07E2EH,048A3H,06671H,06E50H,065ECH,0768DH,014A4H + .word 07E0CH,07A4EH,05DAAH,07AF2H,05925H,0358AH,03568H,02506H + .word 07E0DH,05927H,05945H,050E3H,05A70H,05E6DH,03988H,02906H + .word 07A4FH,07A6FH,05103H,0316AH,049E9H,049C7H,02CA3H,028E6H + .word 03D8BH,062B1H,05EB1H,045A6H,06AAEH,0628EH,040A1H,02CC5H + .word 045ABH,05E6EH,06AF3H,07753H,06ACFH,07732H,0628FH,03D07H + .word 0522CH,06EF0H,0628DH,0564CH,03588H,04DECH,062AFH,0626DH + .word 07A4BH,04D03H,03420H,066AFH,05209H,066AEH,06DC7H,06A0BH + .word 04881H,03841H,055AAH,04DCBH,0666EH,05A4BH,03567H,02505H + .word 07AAFH,076F3H,055CBH,05E2CH,0660CH,0562BH,05E8DH,066CFH + .word 062AEH,07AD0H,0768FH,05E8EH,07B33H,07FB7H,07FB5H,051E7H + .word 07A2CH,0668EH,04E0AH,07F78H,0764BH,07EB4H,04D89H,07AF1H + .word 059ECH,04568H,07AD2H,045EAH,055ECH,03925H + +BMMUGE_P: + .word 255 + .word 04814H,0316BH,02508H,0354AH,02929H,0C42H,0C22H,0C21H + .word 0821H,0820H,0C41H,01042H,01062H,01462H,018A4H,02484H + .word 024C6H,03507H,0396BH,0841H,01483H,01CA4H,01883H,024C5H + .word 02083H,03907H,01463H,02084H,02CC5H,028A4H,01063H,01884H + .word 020A6H,028C6H,02CC6H,030C5H,030A4H,02D6BH,0314AH,01441H + .word 01CA5H,03D49H,03CE6H,03CC5H,03483H,04528H,02528H,01C84H + .word 028E6H,04549H,0558BH,05148H,044E5H,040C5H,040E6H,02529H + .word 0842H,024A5H,03508H,04129H,0556AH,05D8BH,05948H,05107H + .word 04CE6H,044C5H,03928H,04948H,05589H,05127H,05527H,05507H + .word 05106H,048E5H,0800H,020A5H,02D07H,04128H,05569H,05968H + .word 05526H,05506H,0822H,01863H,04127H,05549H,05548H,05528H + .word 02884H,03D28H,03D07H,04D48H,05128H,04CE5H,04D07H,0596AH + .word 0C20H,0C62H,038E7H,038C6H,04107H,04507H,04506H,04D28H + .word 044C4H,048E6H,05949H,034A4H,04106H,04906H,05928H,05D49H + .word 0616AH,051ADH,0454AH,0356BH,01C83H,03CE7H,06169H,0696AH + .word 059CEH,0414AH,04D8CH,0416BH,02C84H,02042H,01400H,01000H + .word 0C00H,020A4H,04949H,02C63H,02462H,02883H,034C5H,03D27H + .word 04907H,05927H,0518CH,0516BH,0558CH,040A5H,03C63H,02800H + .word 0C01H,034E6H,04D69H,03CA4H,02000H,01821H,05DADH,059ADH + .word 04CC6H,048A5H,01800H,01001H,02CE7H,03908H,04D49H,01842H + .word 01442H,05DCEH,050E6H,04CA5H,04063H,02400H,030E7H,02C41H + .word 01C63H,054E6H,03C43H,0801H,034E7H,04928H,044E6H,03041H + .word 01021H,028A5H,01C00H,01864H,04947H,04D29H,03C42H,01043H + .word 01464H,03948H,04D89H,0456BH,0394AH,028A6H,03D08H,04929H + .word 03421H,0516AH,02908H,04529H,04D4AH,05149H,01862H,04D6AH + .word 061ABH,06DECH,071EDH,05969H,01C42H,061ACH,079EDH,07E2FH + .word 01484H,05D6AH,05D28H,04483H,07A50H,07E50H,0618AH,05D48H + .word 03820H,02CA5H,06E2EH,07AB4H,07E92H,048A3H,030C6H,061CCH + .word 07672H,07F36H,07E71H,0618BH,0658BH,0658AH,06569H,050C5H + .word 069EEH,07692H,07F79H,07EB3H,0656AH,034C6H,0764EH,07EF4H + .word 07ED3H,07E91H,0318CH,05D69H,04062H,0660DH,0724FH,07A70H + .word 07EF3H,02085H,048A4H,038E6H,07ED2H,07F13H,07F34H + +BMMUGF_P: + .word 255 + .word 04814H,03D28H,034E6H,03CE6H,030C5H,028A4H,02083H,02484H + .word 02CC5H,01C62H,03507H,04D8BH,05DCAH,05DAAH,05DA8H,061A8H + .word 06166H,050E3H,03420H,02400H,01C20H,01841H,01041H,01042H + .word 0C41H,01063H,01463H,024E9H,0316EH,03DD4H,035B5H,02973H + .word 02574H,018EEH,0C88H,01486H,018A6H,018A5H,01884H,01484H + .word 01483H,01084H,01062H,03CC5H,030A4H,02883H,02060H,01C41H + .word 01C83H,04549H,0558BH,05967H,04CC2H,02800H,01421H,01442H + .word 02D6FH,0254EH,018CAH,01485H,018A4H,01083H,03907H,040E6H + .word 065CAH,03C61H,014A4H,04107H,04D6AH,04907H,040E5H,04507H + .word 040C5H,04106H,02863H,02463H,020C5H,05DEDH,069EAH,05125H + .word 0C42H,01CA5H,04506H,05549H,04D48H,04D07H,05107H,04D06H + .word 04906H,04527H,04528H,03D48H,055CBH,048E5H,02420H,014A5H + .word 04D28H,05948H,061ACH,05528H,04D27H,03462H,02064H,05E2EH + .word 0660CH,06E0DH,0760DH,061ABH,038A2H,02000H,01462H,04CE6H + .word 05969H,0596AH,05D49H,05D48H,0616AH,0698BH,075EDH,0762EH + .word 06169H,05D69H,06250H,06E70H,0764EH,0764DH,03040H,01CA4H + .word 069CBH,06DCBH,07E2EH,07A4FH,07E70H,06589H,06DECH,05968H + .word 034A3H,0664EH,06E4FH,07E6EH,05546H,02020H,01CC6H,01883H + .word 07A4EH,07E91H,07E90H,071CBH,06DEBH,05547H,044A3H,055CCH + .word 07690H,0768FH,07E8EH,040C3H,020E6H,05949H,07E4FH,07E6FH + .word 07E2DH,07E4EH,0760BH,07EAFH,01CC5H,07A6FH,079EDH,04D05H + .word 040C4H,04547H,04526H,06E91H,07ED0H,069ACH,04081H,04D47H + .word 04926H,07EB0H,07E8FH,075ACH,06DCAH,03C81H,05589H,04927H + .word 04505H,03CC3H,07A8EH,01862H,079EEH,071ABH,05925H,040E4H + .word 05167H,07A8FH,018C5H,07E30H,044E4H,07ED2H,07AAFH,06E4CH + .word 0516AH,048A1H,05587H,04D45H,061EFH,05DACH,06E2EH,069EBH + .word 06E0AH,065C9H,05567H,076F3H,065ECH,05D68H,044C4H,07A4DH + .word 069C9H,03481H,07AAEH,07F11H,05166H,04D26H,044E5H,05D87H + .word 05566H,06AAEH,07A6EH,05146H,07F33H,0666DH,076D1H,07EB2H + .word 03CA4H,07A0BH,05E0BH,02C40H,07EF4H,050E5H,071EEH,07ECFH + .word 07209H,07F36H,07EB1H,048A3H,07EAEH,07E8DH,07A4BH,071E9H + .word 06187H,06DA9H,04061H,04462H,07A90H,05545H,07F53H + +BMMUGG_P: + .word 253 + .word 04814H,0316BH,018A5H,0C21H,01464H,01063H,018C6H,01884H + .word 01C84H,01CA4H,0458CH,02509H,01084H,024E6H,024E5H,02084H + .word 0396BH,02908H,035ADH,03528H,0358BH,03548H,03507H,030C6H + .word 01863H,01883H,02CC5H,03D28H,0456AH,04DADH,05210H,05652H + .word 056B5H,04E0FH,055CCH,0498AH,0496AH,04DCDH,055ACH,0560CH + .word 055CBH,0558BH,05189H,04D89H,03DADH,028E9H,02CE6H,038E6H + .word 05E0FH,06E71H,076B3H,07EB2H,07F14H,07FDDH,07FFFH,07758H + .word 06A91H,0660DH,065EDH,07338H,07F7CH,07B7BH,06EF8H,06E93H + .word 07E90H,07E8FH,07E4FH,061A9H,059ABH,05169H,0660EH,07EF2H + .word 0726DH,0312BH,02064H,038E8H,04528H,0516AH,059ACH,065EEH + .word 0722EH,07E70H,07F59H,07FFEH,077BCH,066B4H,04D49H,07317H + .word 07BBDH,06F7AH,06F19H,07FDEH,0777AH,076F8H,06DEBH,05946H + .word 04D05H,06273H,06EF7H,062F7H,06AB6H,072B6H,072B4H,07272H + .word 07650H,07EF5H,06A31H,061ACH,06DEEH,07B9AH,06B17H,03D49H + .word 05A52H,0764FH,05D87H,04CC2H,044A3H,06ED5H,07BDEH,0520FH + .word 049EFH,069EDH,07F77H,0779BH,02487H,01867H,072F6H,072D3H + .word 06E2EH,048C4H,038C5H,04107H,051EFH,05EB3H,0720DH,07ED1H + .word 07F13H,06EF3H,06271H,02CA3H,01C87H,05EB6H,040E6H,049AEH + .word 05A71H,05DEFH,05DA9H,03CA3H,03083H,028A5H,02D2BH,06717H + .word 062D5H,03D07H,030A5H,051F0H,05651H,06A2DH,05507H,03CA5H + .word 02C66H,01C88H,03DAEH,07691H,07F37H,0768FH,05547H,044C5H + .word 038A7H,02CAAH,024ABH,020A9H,05ED4H,03905H,06630H,03C61H + .word 03463H,034C8H,030EDH,028CEH,01CADH,01CABH,07A2EH,04928H + .word 07F96H,07B75H,044E3H,03CC3H,034C5H,02800H,02D0EH,024EFH + .word 061ABH,040A5H,06E72H,02000H,01800H,01420H,024ECH,0392BH + .word 06168H,048A3H,01042H,024E8H,024EBH,0496CH,059CDH,04D07H + .word 072D4H,0C41H,01483H,0456CH,05926H,06EB5H,0821H,0C42H + .word 06E4FH,05125H,01822H,0C01H,01041H,048E6H,01864H,01043H + .word 0C22H,0458AH,045EEH,0316CH,01486H,02D07H,0C20H,01466H + .word 06A0BH,04081H,01462H,0396CH,02D2CH,0660BH,03460H,01062H + .word 050E6H,04149H,0596BH,01463H,02C41H,0841H,01443H,01442H + .word 02063H,01422H,0820H,0801H,01CA5H + +BMMUGH_P: + .word 254 + .word 04814H,01C84H,01022H,01042H,0C42H,0C41H,01043H,01084H + .word 0C44H,0824H,0C43H,01063H,01484H,01064H,020C7H,024C5H + .word 0C21H,01085H,01086H,01485H,01021H,0C22H,01062H,03548H + .word 01463H,01486H,01087H,01487H,01488H,01065H,018A6H,02486H + .word 020A4H,02C84H,018A9H,04547H,030A4H,01842H,01421H,01CC7H + .word 01CCBH,01CCCH,018ACH,0C67H,01CC9H,028E9H,034C8H,030A7H + .word 03CA7H,034A8H,02C88H,02489H,024CBH,020AAH,018AAH,05505H + .word 03C61H,03CE6H,040E6H,03CC5H,02022H,0250AH,0292FH,0250FH + .word 02510H,02911H,02511H,020EEH,0C48H,0826H,02909H,0292CH + .word 0412DH,04D0BH,054C8H,054A7H,04467H,03CAAH,034CDH,030EEH + .word 02D10H,020ECH,02463H,0250DH,02910H,01069H,01464H,03D2EH + .word 04D2CH,050A8H,044A9H,038CCH,02CC6H,034E6H,03CA4H,01C21H + .word 024F1H,0148CH,01044H,048EAH,058EAH,050ECH,040CCH,02931H + .word 03507H,01821H,02509H,018EFH,0292BH,0350FH,038EEH,02CEFH + .word 02930H,03D07H,01083H,0108AH,0316EH,040E7H,02C42H,02110H + .word 04507H,04D28H,044E6H,02C83H,020E8H,04D48H,02530H,05128H + .word 04D07H,044C5H,0843H,0C63H,02D4EH,04D27H,05127H,04D06H + .word 044E5H,03883H,02420H,040C6H,048E6H,03462H,02531H,044E7H + .word 048E7H,05149H,04906H,0C62H,04907H,040C5H,040A4H,02C41H + .word 01820H,01041H,044C6H,01420H,02950H,02533H,02532H,02111H + .word 01C20H,02953H,02512H,02820H,01C00H,01400H,02952H,02133H + .word 044C4H,03483H,01800H,048C6H,04CE6H,048C5H,040C4H,0841H + .word 02974H,02553H,050E6H,04CC6H,04CE7H,05107H,01C01H,01442H + .word 01462H,02D30H,02D53H,02112H,05D48H,05527H,05507H,02D72H + .word 02D73H,02554H,02132H,05106H,02D4DH,02973H,02D95H,02976H + .word 02534H,02932H,04529H,03591H,02130H,02D97H,031B7H,02513H + .word 03862H,03171H,031B8H,03990H,040E5H,041D2H,03193H,02131H + .word 05928H,05927H,03DD2H,04216H,06168H,05526H,04A38H,031B5H + .word 035D8H,02CC5H,030C5H,05D47H,040A3H,041F8H,039F9H,02083H + .word 01C83H,05589H,05D89H,06589H,069A9H,06167H,05506H,0421AH + .word 01D0FH,014A5H,04549H,059CBH,065AAH,048A3H,03020H,03DD5H + .word 039FAH,031D7H,0456AH,059ABH,039B2H,04639H + +YKMUGA_P: + .word 254 + .word 04814H,054A5H,04063H,04842H,0594AH,03C00H,03800H,03000H + .word 02C00H,02800H,03400H,03C62H,05547H,065C9H,065A9H,069A8H + .word 065A8H,069C9H,071E9H,06DC9H,071EAH,0760AH,0760BH,0720BH + .word 0720AH,06DE9H,069C8H,069A9H,06588H,04463H,02400H,03C83H + .word 05968H,061A8H,05D87H,06587H,06DC8H,05D67H,06188H,04863H + .word 04C42H,05D4AH,03882H,06187H,06988H,06167H,05D66H,058A5H + .word 04C63H,05042H,05D8CH,04442H,03862H,069A7H,06DEAH,06DA8H + .word 0598CH,03C63H,04000H,05967H,065A7H,069C7H,05546H,071C9H + .word 06166H,06586H,05945H,02000H,061A7H,06186H,05D46H,05946H + .word 050A5H,03863H,03C82H,05D88H,05D47H,05925H,01400H,01800H + .word 01C00H,05989H,05DA9H,061A9H,05988H,05926H,05505H,05525H + .word 05126H,04D46H,04505H,04CA5H,0558AH,05DCBH,061EDH,06A2FH + .word 05DEDH,059ACH,06210H,07292H,061CBH,06589H,05504H,05125H + .word 04D26H,04526H,03D05H,030E4H,02CC4H,03883H,04D68H,051A9H + .word 05E0DH,06A70H,07F59H,07AD3H,07291H,05567H,03D26H,034E5H + .word 028C4H,020A3H,01CA3H,01863H,04967H,055E9H,05E0BH,07B13H + .word 072D1H,06E6FH,07AB0H,05146H,05166H,030E5H,024C4H,01461H + .word 01041H,038C3H,04567H,06A2DH,04D67H,04D47H,028C3H,01CA4H + .word 01883H,01462H,01062H,01061H,038E5H,03526H,04568H,045A9H + .word 02CE4H,028E4H,018A4H,04884H,03062H,030E6H,028C5H,01C83H + .word 01483H,020C5H,020A6H,01884H,020E6H,01CC5H,018A3H,02507H + .word 028E8H,02D29H,0314AH,03169H,0316AH,02907H,01C85H,02484H + .word 02D08H,05271H,035ABH,04A2FH,0356AH,02928H,039ADH,04A11H + .word 0354BH,04400H,01882H,04800H,04C00H,05400H,05000H,01482H + .word 05084H,01463H,05063H,05484H,05DADH,0316BH,05CC6H,020E5H + .word 02908H,02D28H,050E7H,050C6H,04CE7H,059CEH,05108H,05DCEH + .word 04D08H,0554AH,05DEFH,04484H,03421H,061EFH,02821H,01000H + .word 05529H,0596BH,05129H,044E7H,03484H,02C42H,02842H,02421H + .word 02C21H,02021H,03021H,03821H,05D6BH,06252H,0516BH,04929H + .word 040E7H,03CC6H,038C6H,040C6H,044C6H,044A5H,04C84H,07318H + .word 06294H,06231H,05A10H,059EFH,0618CH,06AB5H,048A5H,05463H + .word 05863H,06A73H,0556BH,048E7H,048C6H,059ADH + +YKMUGB_P: + .word 128 + .word 04814H,06588H,05D67H,05967H,05588H,05168H,04968H,03527H + .word 024C4H,01C83H,01462H,01883H,020C5H,01CA4H,024E5H,01483H + .word 01800H,01C00H,02400H,02C00H,03000H,01400H,05D88H,06188H + .word 05567H,05568H,04D68H,04547H,03D48H,02CE5H,020C4H,01C82H + .word 01882H,01041H,01461H,01862H,01863H,01884H,01CA5H,01463H + .word 01062H,02800H,01000H,05547H,05189H,04527H,034E5H,030E6H + .word 024C5H,05966H,05947H,05127H,04D47H,03D06H,03506H,028C5H + .word 01482H,01042H,02000H,05D66H,05968H,05148H,01C84H,04948H + .word 03D27H,01441H,03400H,05D46H,05988H,04548H,03106H,0C41H + .word 01061H,05587H,04568H,020A4H,05D87H,05167H,04D67H,03926H + .word 024A3H,03149H,03800H,04505H,03D26H,03105H,028C4H,01CA3H + .word 0C21H,014A3H,01CC5H,01443H,01843H,0821H,0C62H,01442H + .word 01842H,01C42H,03C00H,018A4H,02928H,020A5H,02907H,02906H + .word 020E5H,024E6H,01864H,04000H,04463H,04063H,04863H,04800H + .word 04400H,04C00H,05000H,0598CH,05D8CH,05D4AH,0594AH,0614AH + .word 05D29H,05929H,05508H,050A5H,034A5H,058A5H,054A5H,04CA5H + +YKMUGC_P: + .word 255 + .word 04814H,050A5H,03C42H,04042H,0554AH,03800H,02C00H,02800H + .word 03400H,03000H,01C00H,02400H,069C9H,06DEAH,071EAH,0760BH + .word 07E6DH,0764DH,06E0BH,06E0CH,0762CH,061A9H,05125H,05968H + .word 05547H,05946H,05D88H,05926H,05D46H,06166H,06588H,06DC9H + .word 06587H,0720BH,07A2CH,07E8FH,07EB0H,07ED1H,07E6EH,07E6CH + .word 07E4DH,07A4DH,0594AH,03C00H,01800H,02000H,0720AH,07A4CH + .word 069EAH,0764FH,069CAH,06189H,05525H,05104H,05D67H,061A8H + .word 07690H,069A9H,06DCAH,06DE9H,07A4EH,0762BH,05168H,04526H + .word 03CC4H,03CA2H,044A2H,044C3H,048E3H,065A8H,071ECH,069AAH + .word 06186H,071CAH,07EF2H,07E2CH,069A8H,071E9H,07A2DH,065CBH + .word 040C4H,061AAH,05126H,04D05H,044A0H,05D66H,075EAH,07A0BH + .word 04000H,069C8H,07A6FH,07670H,059AAH,03861H,06168H,03D26H + .word 02C83H,02C62H,03061H,06D88H,07A0CH,07E2DH,07E6FH,07E4EH + .word 079EBH,07E0CH,04842H,04C00H,01400H,05105H,071EBH,05504H + .word 06DECH,069CBH,04CE4H,04442H,04062H,07A4FH,07735H,076D1H + .word 048A2H,06586H,05505H,05925H,06DEBH,07F98H,06DA8H,050E4H + .word 06DA9H,075EBH,058A5H,05967H,06187H,07F55H,06988H,05D87H + .word 05966H,065A7H,07A2EH,0762EH,05524H,065A9H,05D47H,06188H + .word 05945H,0760AH,07A8DH,07B12H,061A7H,05545H,07609H,065C8H + .word 06DC8H,05947H,03062H,030C3H,04505H,05589H,04927H,04D89H + .word 05E0CH,055ABH,059CBH,03CA4H,03105H,02083H,045ABH,05A72H + .word 03549H,024A4H,0496AH,034A2H,06690H,06AF3H,06F37H,0354AH + .word 0394AH,06F59H,077BCH,06A2EH,050E3H,02D06H,01CA2H,05271H + .word 0779AH,05691H,041CBH,05DC9H,06165H,069A7H,055CBH,066B2H + .word 06F57H,07379H,04A2FH,05ED5H,03946H,06AF5H,066D5H,04884H + .word 03545H,020C0H,07FFDH,05E70H,04D03H,07BBAH,07FFEH,06737H + .word 05630H,034E5H,04147H,02CC3H,04DCBH,05503H,0722BH,03D03H + .word 034E1H,041A6H,07796H,07799H,04947H,04D45H,0660BH,03CC3H + .word 0662EH,055A7H,05E0BH,04968H,03D05H,069EBH,030E6H,07A6DH + .word 05124H,024C4H,02462H,02861H,0620CH,02C21H,02CA4H,034A1H + .word 03507H,061EDH,02CE5H,01C63H,054A5H,07E4CH,06E4FH,05E0FH + .word 04DACH,03D08H,038E6H,04063H,05DECH,04463H,07A6EH + +YKMUGD_P: + .word 254 + .word 04814H,07A4DH,07E6EH,07E4DH,07E4EH,07E6FH,07E90H,07EB1H + .word 07A70H,07A6FH,07E8FH,0722CH,07E8EH,07E6DH,0762BH,06DEAH + .word 065A9H,05947H,06DEBH,0764EH,04CE5H,03840H,04CA3H,054E5H + .word 05925H,069A8H,07E91H,065ECH,05189H,07757H,041CCH,01884H + .word 020C5H,01882H,01862H,01C62H,02400H,02800H,03800H,03400H + .word 02C00H,01C00H,01800H,01400H,01000H,07A6EH,07EB2H,07A4EH + .word 0720CH,06188H,06589H,06DCBH,069ECH,03C62H,05926H,069AAH + .word 05DA9H,04127H,07336H,05230H,01CA4H,020C6H,01863H,01C61H + .word 02000H,04000H,03C00H,03000H,07ED1H,07ED2H,0762DH,071EBH + .word 069CAH,065EBH,06127H,0720DH,05126H,04525H,04A0EH,07EB0H + .word 07A91H,069CBH,06168H,05D68H,071ECH,06E0CH,06189H,072B1H + .word 06588H,06167H,044C3H,03D04H,06EF3H,041ABH,020A3H,024E5H + .word 01C83H,07E4CH,07A90H,0722DH,061AAH,07A2EH,076F5H,038A2H + .word 06EF4H,03D48H,01C84H,01C82H,061A9H,06E0DH,040A3H,04D28H + .word 06EB3H,040E5H,03881H,04D68H,066B2H,02CE5H,01883H,07E2CH + .word 07E2BH,07A0AH,07A2BH,07A2CH,05568H,04D26H,05547H,07670H + .word 04D47H,05DECH,07779H,04D49H,03CC3H,06A91H,05E91H,024C5H + .word 07A0CH,079EAH,07E0BH,07E0AH,07A4CH,07AB0H,04925H,0660DH + .word 05DAAH,0558AH,06651H,055CEH,059CEH,0779AH,03106H,07A0BH + .word 071EAH,0760AH,07A8EH,06A0DH,04D48H,062B1H,066F5H,03D8AH + .word 01CA3H,075C9H,075EAH,07EAFH,07A8FH,07AB1H,06A2DH,04547H + .word 03906H,034E5H,020A4H,024E6H,01483H,02061H,075CAH,071A8H + .word 06A0CH,030E6H,02CE6H,01462H,01463H,065A8H,069C9H,06DE9H + .word 06E2DH,03927H,02081H,069EAH,0722BH,0764CH,06E2EH,03926H + .word 06E0BH,07A6DH,07E6CH,07A2AH,05DCBH,04D89H,065C7H,06E4BH + .word 03D27H,02D07H,01482H,01CC5H,069C8H,0720AH,07609H,0762CH + .word 0720BH,069E9H,0762AH,020E6H,020E5H,0660BH,02507H,02908H + .word 024E7H,01461H,07A4BH,01484H,01CA5H,01CC6H,018A4H,01062H + .word 0760BH,05587H,04D69H,03907H,03149H,02D48H,04949H,020C4H + .word 024C6H,05E0BH,055CAH,0498AH,018A3H,01C63H,05525H,06587H + .word 04568H,03928H,05945H,075EBH,065C9H,028A4H,06DC9H,0768FH + .word 024C4H,04968H,01063H,06DC8H,03D47H,04948H + +YKMUGE_P: + .word 252 + .word 04814H,04063H,03000H,03821H,04CA5H,03400H,02800H,02400H + .word 02821H,034C5H,03506H,030E5H,02CA4H,034E6H,030C4H,030A4H + .word 034C4H,038C4H,038C5H,038E5H,04127H,04463H,03C21H,03800H + .word 02000H,02C42H,030E4H,02CA3H,030C5H,038E6H,03D06H,02CC4H + .word 034C3H,038E4H,04106H,03CE5H,040E6H,03CE6H,02C00H,034E4H + .word 03CC4H,040E5H,03CC5H,04105H,034E5H,04506H,04505H,04527H + .word 04526H,01C00H,03D05H,03CE4H,04906H,044E5H,04D06H,04907H + .word 040C4H,04D27H,04D26H,04905H,048A5H,02C41H,040E4H,04D47H + .word 05147H,04D05H,028A4H,05148H,05127H,05126H,05106H,05527H + .word 050A5H,03CA4H,05548H,05526H,04507H,04528H,04107H,05146H + .word 05547H,05968H,05568H,03483H,04927H,04926H,05167H,05D89H + .word 05947H,05948H,03462H,05589H,05DAAH,05168H,05989H,05D68H + .word 05967H,05D88H,05567H,02C21H,05988H,05969H,04021H,05587H + .word 059A8H,065EBH,065CBH,061AAH,05D69H,050E7H,03061H,061CAH + .word 065CAH,061A8H,069E9H,069C9H,065A9H,06189H,061A9H,05DA9H + .word 04042H,065ECH,0660EH,06E4FH,07270H,06E2EH,0766EH,0764DH + .word 069A9H,065A8H,06587H,065AAH,069EBH,06E2CH,0724DH,07E8FH + .word 076AFH,07EB0H,07690H,0720CH,069EAH,06DEBH,06DC9H,06188H + .word 06E0CH,06A0AH,0724CH,06E0BH,06A0BH,069A8H,06588H,069CAH + .word 065C9H,03C42H,05546H,05D67H,065C8H,06E0AH,0720BH,0764CH + .word 0722CH,06E2BH,0722DH,04CE7H,05946H,06DEAH,0722BH,0760BH + .word 06DCAH,05D66H,06167H,06187H,071E9H,071EAH,06DECH,05125H + .word 069C8H,0762CH,071CAH,044A5H,04D25H,06DE9H,07A4DH,07A6EH + .word 0760CH,071EBH,0554AH,05525H,05D87H,061A7H,0720AH,07E6EH + .word 07A2DH,06DA7H,05DA8H,061C9H,05566H,0762DH,07E4DH,01800H + .word 03CA3H,040C3H,07E4EH,07A4CH,0760AH,03CC3H,06DC8H,061CBH + .word 069CBH,04CE4H,05105H,07A2CH,05D47H,069AAH,06589H,071ECH + .word 0658AH,044C4H,07E6FH,07A4EH,01400H,05966H,06E2DH,03861H + .word 040A3H,07A2BH,0762BH,065A7H,061EBH,05DCBH,04547H,04548H + .word 038E7H,04484H,04D04H,069C7H,06E09H,0766CH,06E4DH,04D68H + .word 044C5H,05D46H,07A6FH,075EAH,06168H,07E2CH,0766DH,05926H + .word 05545H,07E6DH,07E6CH,07A6DH + +YKMUGF_P: + .word 254 + .word 04814H,04527H,03507H,0524FH,06F5AH,05693H,01CC5H,01483H + .word 01463H,01862H,02CE5H,06718H,0737BH,07FFEH,07FFFH,0779CH + .word 056B7H,0673AH,06F9DH,05B1AH,056D8H,02D6CH,05ED7H,041F1H + .word 0358FH,07FDDH,07BBDH,05631H,045CDH,02C85H,02443H,01400H + .word 01000H,034E5H,03549H,01063H,020A3H,0396AH,05A93H,07BDEH + .word 04A31H,02929H,05EB4H,01C83H,024C5H,028E6H,04DEEH,07FDEH + .word 06B17H,06272H,03CE7H,02800H,02C00H,02400H,02000H,01800H + .word 01883H,01062H,01484H,020A4H,06737H,06B3AH,04611H,05695H + .word 01884H,01865H,01465H,01423H,028A6H,03D48H,04DEDH,066F3H + .word 07B99H,06EF5H,06693H,04928H,03400H,01C00H,01CC7H,024E9H + .word 0252AH,05672H,0520FH,03D27H,03800H,01462H,0316CH,062F7H + .word 056B8H,0296EH,035B0H,04E54H,0292AH,018A6H,020EAH,01466H + .word 05ED3H,03D89H,034E6H,01042H,01486H,07BDFH,0739BH,06F7CH + .word 04D27H,03D28H,05274H,0398CH,024C7H,03DEFH,045EFH,03000H + .word 05126H,05547H,05148H,04548H,04528H,04E73H,06B38H,05589H + .word 04D89H,0498AH,07BFFH,0292CH,03DAEH,02C63H,05967H,05D88H + .word 055AAH,05AD8H,0314AH,05968H,05D87H,059CAH,055CBH,0458AH + .word 02D07H,0460FH,04000H,061A8H,065CAH,0C65H,020A7H,0660BH + .word 0660DH,05E2FH,01CE9H,02109H,065C9H,069EAH,06E0BH,0662EH + .word 0624FH,0777CH,077BEH,04E95H,04A32H,06F59H,06A0CH,06E4EH + .word 06A70H,05E71H,0722DH,0724EH,06E91H,06AB2H,05F18H,0764DH + .word 0722CH,0766FH,076B2H,03D47H,035ACH,069E9H,0764EH,07A6FH + .word 07690H,055CCH,04969H,04A35H,05ED5H,07E8FH,07EB1H,07E90H + .word 05DABH,0720CH,0720BH,07A6EH,07A4DH,07EF2H,065AAH,05670H + .word 0762DH,0766EH,06DECH,01CA3H,01C82H,07EB2H,0762EH,07F14H + .word 07F13H,07E6FH,07A90H,04D47H,038E5H,07A4EH,07E6EH,07EB0H + .word 07ED1H,065EDH,07AB0H,07A4FH,04CE5H,05927H,0764FH,07670H + .word 069A9H,06187H,0726FH,01882H,07AB1H,07E4EH,06167H,0760CH + .word 071ECH,06168H,06671H,03128H,07A70H,07A2DH,05525H,076F4H + .word 0762CH,05DEDH,07315H,01861H,07E91H,069AAH,050E5H,044A1H + .word 054E3H,02506H,0720DH,05D6AH,03C61H,04C83H,05D25H,07716H + .word 0768FH,058E4H,06126H,07A91H,069EEH,04482H + +YKMUGG_P: + .word 254 + .word 04814H,020A4H,01400H,01464H,018A5H,02509H,01084H,01CC7H + .word 01484H,01041H,01884H,01C84H,018A4H,014A6H,014A5H,01483H + .word 01063H,01062H,02C00H,02000H,01CE8H,01841H,01CA4H,01CC5H + .word 0294AH,020E8H,02D6BH,020C6H,03400H,01C00H,035ADH,0C21H + .word 02483H,020C5H,0422H,02D4AH,03C63H,02800H,0316BH,04210H + .word 0296BH,02CA4H,030C4H,02CC4H,0294BH,03DCFH,041CFH,01886H + .word 039AEH,03821H,03063H,03D6BH,0356CH,0292AH,028E7H,02840H + .word 034C3H,03CC4H,03D26H,03949H,02D29H,035AFH,05695H,05EF7H + .word 06739H,04063H,030E6H,04A31H,056B6H,04E53H,02041H,03861H + .word 04D05H,05147H,04D47H,04968H,0458AH,06F5AH,0739CH,07BDEH + .word 07FFFH,07BDFH,04A32H,077BDH,06F7CH,039D1H,02400H,05252H + .word 06F9CH,0737CH,040C3H,04D26H,0398DH,05EF8H,077BEH,05EB6H + .word 010A5H,01463H,07FDEH,03000H,05274H,044E4H,05546H,05167H + .word 04169H,03D8BH,04654H,02D6DH,04E93H,0737BH,062F8H,06F3AH + .word 06AF7H,01885H,020A6H,044A5H,04632H,04E2FH,02883H,03461H + .word 05547H,05146H,05693H,05AB5H,041CDH,01485H,01864H,07BBDH + .word 062F7H,0460FH,035D0H,05276H,01043H,03CA1H,05967H,05568H + .word 04589H,0779CH,0C63H,0421H,01042H,0824H,01066H,0252BH + .word 01CA5H,04652H,06B39H,04DEEH,04CE4H,04D8AH,01D0BH,0C66H + .word 04E94H,04695H,0673AH,052D8H,02DB0H,0C64H,04E75H,048A5H + .word 05589H,01883H,02462H,051EFH,05566H,05587H,04D89H,0739DH + .word 014C8H,0396CH,05567H,049ACH,01085H,041F1H,049F0H,05232H + .word 04128H,05525H,05E93H,0779DH,05F18H,030A5H,07318H,05125H + .word 05A71H,077BCH,041ADH,034C4H,048E3H,05651H,031CFH,02C62H + .word 07B9BH,05126H,055CBH,04DCDH,03129H,07FDFH,07BFFH,077FFH + .word 03549H,038A3H,055ABH,06717H,05D88H,04DCBH,0739BH,05DAAH + .word 055ECH,01863H,07BBEH,02021H,02020H,040A3H,05105H,02420H + .word 030A3H,04505H,059ECH,02421H,01462H,02D27H,07FFEH,04E51H + .word 0456AH,01442H,03421H,0445H,05505H,05926H,038C3H,06167H + .word 05D68H,04527H,05524H,061A9H,038A4H,034A4H,065C9H,05ED5H + .word 030A4H,034C5H,05945H,034E5H,05545H,05D87H,05230H,07FDDH + .word 065CAH,05DCBH,05E0DH,0622DH,05A0EH,030E5H + +YKMUGH_P: + .word 254 + .word 04814H,01062H,01000H,01084H,01CC6H,01CE7H,018C6H,018A5H + .word 01484H,01064H,014A5H,01063H,01042H,01043H,01044H,0C44H + .word 01485H,02108H,01CE6H,01083H,02529H,01CC7H,0824H,01085H + .word 020E8H,041CFH,020E7H,018A6H,03DEFH,04210H,041F0H,0358CH + .word 0292AH,02D4BH,0316BH,0844H,02D4CH,056B6H,06739H,04E53H + .word 01464H,06318H,05695H,05AB5H,02929H,05253H,0294AH,0358EH + .word 0779DH,07FDFH,07FFFH,07BBDH,01463H,01443H,01864H,01865H + .word 0312AH,01465H,0356CH,062F7H,06F5AH,06B18H,0356AH,01884H + .word 07BBEH,0739DH,06B5AH,01863H,06B39H,077BCH,024C6H,024E6H + .word 01483H,05674H,07BDEH,0739CH,02D6BH,04E11H,05EF7H,0C64H + .word 018A4H,028E9H,077BDH,05AD6H,06F5BH,0864H,0443H,01D29H + .word 0635AH,01444H,01C65H,0354BH,024C7H,05ED6H,01065H,0423H + .word 0C43H,02507H,0779CH,020E6H,06B5BH,0250AH,0C45H,014A6H + .word 05ED8H,06B3AH,04630H,024A6H,02508H,01844H,01885H,06718H + .word 05EB6H,04633H,0777CH,06B19H,01C85H,0420FH,0314BH,07BDFH + .word 06F7BH,02528H,0398DH,01C84H,03DAEH,05293H,062F8H,02109H + .word 01843H,07FDEH,0737BH,0396BH,01C64H,041ADH,0C21H,05272H + .word 03569H,01883H,05AD5H,0C66H,0673AH,04E32H,04611H,0358BH + .word 04631H,05273H,05AD7H,04E95H,05653H,0C23H,04A54H,02509H + .word 05672H,01CA5H,02D4AH,01045H,0356BH,01CA4H,01466H,03DD0H + .word 06719H,0316EH,039B0H,06319H,01CE8H,020C7H,049F0H,077BEH + .word 028A6H,01023H,02064H,05ED7H,03D6CH,024E7H,01C63H,02085H + .word 03127H,05A93H,05252H,01462H,01862H,045CDH,07FFEH,03DABH + .word 0C65H,0292DH,06F39H,0392AH,06F7CH,07B9CH,01442H,028E6H + .word 01461H,01CEAH,04A35H,024C5H,04610H,06AF7H,0C41H,07BBCH + .word 06F37H,05651H,03949H,0865H,0845H,0214CH,0212CH,07337H + .word 07359H,04211H,06F7AH,02907H,07BFFH,05632H,04653H,05F19H + .word 0424H,05673H,030E7H,045F2H,05652H,01021H,02063H,028C5H + .word 0779BH,03129H,041ABH,06B38H,01800H,01C62H,04A0FH,06F59H + .word 020A3H,03928H,049CDH,05E71H,066D5H,05E72H,05631H,07738H + .word 028A5H,06B7BH,03E12H,056F9H,04675H,04E76H,077FFH,06F9EH + .word 05F3AH,04EB8H,03E15H,02D90H,01D2DH,01400H + +BHMUGA_P: + .word 253 + .word 04814H,02573H,01D0EH,02572H,039F7H,02551H,01CEDH,0190DH + .word 018ECH,018EBH,0190CH,01D0DH,0212FH,02151H,02D07H,01CA4H + .word 024E6H,020A4H,01441H,01440H,01841H,02840H,03CC3H,04D44H + .word 0766DH,0728FH,07F54H,07F13H,07EF2H,07B34H,076B2H,0662EH + .word 051AAH,04527H,04924H,040E2H,0620CH,0726EH,07690H,076F4H + .word 06A2DH,07EF5H,06E50H,05DEEH,051ACH,030E6H,02462H,02862H + .word 0498AH,03549H,024C5H,01463H,01462H,01483H,01883H,0C21H + .word 01CC4H,0358BH,03D8BH,028E6H,03106H,0562FH,05DECH,03D49H + .word 0210BH,0190BH,018EAH,01D0BH,01D2EH,01D0CH,01CECH,01D2DH + .word 014C9H,01087H,010A7H,01085H,01D30H,014CAH,0214FH,01D0AH + .word 01442H,02C81H,04103H,05567H,0660BH,07AF1H,055CCH,038E5H + .word 038A4H,034A2H,05568H,061CAH,061C9H,06A4DH,05DC9H,06A4EH + .word 04D8CH,02CA5H,049CDH,01CA3H,0396AH,01C83H,03128H,024A3H + .word 028A3H,0520DH,0210CH,01CEBH,01D0FH,02552H,03080H,04505H + .word 07AB0H,076D2H,06A2EH,04D69H,03D28H,028C5H,030C4H,05DEBH + .word 055CAH,04D47H,055A9H,0624FH,04E0FH,01041H,01882H,02D28H + .word 045ACH,0354AH,01862H,0212CH,0190EH,010A6H,01D2FH,01D4EH + .word 014ECH,018A8H,018C9H,01021H,03D05H,051EEH,02481H,04147H + .word 03D27H,03947H,01042H,0418BH,02150H,0212EH,014A7H,018EDH + .word 01CEAH,018CAH,04988H,04568H,05250H,049EEH,049EAH,03923H + .word 0292DH,02550H,02570H,018CBH,01086H,0190AH,01C82H,045CCH + .word 04DC8H,0210EH,02130H,035F6H,018C6H,05A92H,04A0CH,020EBH + .word 018CCH,014A8H,035D5H,01422H,03505H,01D2CH,01040H,0314CH + .word 02972H,041CEH,062B4H,0252CH,0210DH,01063H,03D8CH,024E3H + .word 045CBH,03988H,0252DH,02571H,0212DH,04E30H,01CEEH,02171H + .word 0C41H,02506H,0C42H,01D50H,01464H,01461H,03147H,01062H + .word 02993H,02DB4H,02D2AH,018A3H,02994H,02508H,0460EH,02D49H + .word 02864H,038C7H,02D94H,04238H,024E8H,0210FH,01CA7H,020ECH + .word 02995H,020A6H,05210H,05E52H,05A31H,05A94H,02553H,0252FH + .word 02152H,02D4FH,028C3H,01487H,01CCBH,031B5H,04259H,03A17H + .word 04EBBH,04A79H,02971H,0C66H,0C87H,0675CH,05ADCH,04A99H + .word 02DB6H,02DB5H,031B6H,039F8H,03A18H + +BHMUGB_P: + .word 251 + .word 04814H,02552H,02553H,02994H,01D2FH,0190CH,018ECH,018EAH + .word 018EBH,014EBH,018C9H,014CAH,01041H,01C83H,01462H,02CC5H + .word 01C20H,02861H,04106H,04548H,038E5H,03D28H,05A30H,06EB2H + .word 0620DH,059A8H,065EBH,05966H,069E9H,07AB0H,07F13H,07F55H + .word 07F34H,07AD1H,07AD2H,07690H,0724EH,07A91H,01D0EH,02151H + .word 0212EH,01D0DH,01D2EH,01D0CH,01CEBH,018CAH,014EAH,024C4H + .word 01883H,01C84H,01441H,01461H,02062H,03907H,01CA3H,03549H + .word 06AF7H,06672H,034A2H,040A2H,05125H,061A8H,0766FH,07F35H + .word 07EF3H,07F14H,07A90H,06E2DH,07AF2H,02573H,02551H,02150H + .word 02130H,01CECH,01CA4H,01862H,01420H,02040H,03506H,024C3H + .word 01CA0H,02904H,062F4H,049EDH,03D8AH,02C83H,02820H,03880H + .word 07F56H,07EF2H,0722DH,0212DH,018CBH,01882H,01442H,020A4H + .word 034C5H,030E6H,02CA4H,03948H,02862H,048E2H,0766EH,07B35H + .word 0190DH,01D2DH,01483H,01062H,01863H,01841H,04D48H,03CC3H + .word 040E2H,06A0BH,07F33H,07FB8H,06E91H,07670H,06E2EH,05948H + .word 05547H,0190BH,018C7H,01860H,014A7H,01CC5H,018A4H,01042H + .word 01463H,01884H,024A3H,03061H,04925H,0768FH,061ECH,05168H + .word 04D26H,01C63H,01842H,01C42H,0726EH,06E4EH,05588H,05127H + .word 02DB6H,01CEDH,01D2CH,01C62H,038A4H,03CE6H,018EDH,018A3H + .word 061ABH,0722FH,0764FH,0726FH,0662FH,0516AH,0518BH,01061H + .word 04124H,05DECH,05DEBH,0724FH,07AB2H,05DEFH,055EEH,0498CH + .word 01861H,06E4DH,0724DH,07EAFH,07EB1H,07ED3H,07AB1H,076F4H + .word 014A8H,01C41H,07A6EH,07EB0H,07ED2H,014C9H,01C40H,07ED1H + .word 07F76H,07F77H,07F97H,07F15H,076F3H,018A8H,01C61H,04D44H + .word 059A7H,07F12H,07F96H,07FB7H,05DC9H,07334H,07F78H,01CEAH + .word 05565H,07A6DH,07F11H,07F32H,07F54H,07F75H,07B14H,06EF2H + .word 018EEH,03481H,07ECFH,07F53H,07F74H,07B96H,07FD9H,07FDAH + .word 061C8H,07EF1H,07F95H,07B33H,044C1H,076F1H,02C81H,059ABH + .word 04903H,06187H,07ED0H,044A1H,07EF0H,044E4H,028E6H,076B2H + .word 0660BH,014CBH,02420H,07F57H,03CA2H,04D6AH,07AF4H,03D05H + .word 02572H,01CA5H,024E6H,02972H,039F7H,02550H,02D07H,03CC1H + .word 05587H,06A50H,04947H + +BHMUGC_P: + .word 254 + .word 04814H,07AB1H,07A70H,0722EH,05989H,069ECH,06A2DH,0720CH + .word 0724DH,07AAFH,07AD3H,07F13H,07F55H,07F34H,0726FH,07270H + .word 07691H,061ECH,04D26H,055ABH,055ECH,030E6H,03D28H,03107H + .word 020A4H,01462H,024C5H,01CA3H,01CA4H,01C84H,01041H,01442H + .word 02083H,01C83H,024E6H,01021H,0C01H,01883H,03548H,020C4H + .word 024E4H,03947H,014C9H,018C9H,018CAH,014A7H,014A6H,014A8H + .word 018EAH,01085H,01086H,01084H,059AAH,069EEH,06A2EH,069EBH + .word 061CBH,06E4EH,0660DH,05DECH,04149H,04DACH,02D07H,01042H + .word 01884H,01863H,01842H,0418AH,05A91H,0460DH,01C82H,018C6H + .word 014EAH,010A7H,0622EH,0624FH,06A70H,07739H,076B2H,0768FH + .word 07EF4H,04106H,0416AH,028C5H,0C41H,01483H,01862H,01461H + .word 028E3H,04E0CH,04E2FH,024E5H,02D05H,01860H,014C7H,018EBH + .word 01CECH,06EB2H,07B57H,04D47H,04504H,04D68H,061AAH,05147H + .word 05DCAH,018A3H,01882H,05589H,049A9H,03546H,05EB2H,03D6AH + .word 028A4H,02062H,02041H,03062H,03483H,03883H,040E5H,05168H + .word 07F14H,06E91H,03D48H,0C21H,01C80H,0190BH,03105H,03927H + .word 030C5H,04D28H,05127H,07B14H,01062H,0800H,0C20H,01441H + .word 01CA6H,01087H,038E4H,04547H,04905H,0498AH,018A4H,0820H + .word 01D0CH,0190CH,034A4H,0660BH,03128H,01040H,04188H,01CEBH + .word 028E6H,02C63H,040E7H,07AB2H,02D28H,020E9H,018CBH,0556AH + .word 01463H,05E0EH,04128H,03CE7H,076D3H,01063H,018A5H,0190DH + .word 076F4H,07F35H,07F76H,038C2H,01440H,07B35H,07F97H,07F77H + .word 07F98H,055CBH,04103H,0562DH,01061H,01D0DH,07F54H,020C5H + .word 0C00H,01CC5H,05E0BH,07F56H,06E4DH,03D05H,01CA5H,01D0EH + .word 07F75H,02883H,01022H,01C63H,02507H,05671H,045CCH,01487H + .word 07F36H,041ACH,01C85H,024C4H,02D03H,02480H,01485H,07714H + .word 048E3H,05E0DH,03D8AH,03DA9H,02CE1H,03D8CH,06AD1H,05545H + .word 07F78H,01443H,06B15H,01486H,040C3H,05987H,07F15H,024C3H + .word 018A8H,03460H,061A9H,01CEAH,02550H,029B3H,02973H,02971H + .word 0212EH,07B56H,0210DH,0214FH,02572H,0254DH,0294FH,031D4H + .word 01D2CH,0356BH,0250BH,01D2DH,07757H,07FDAH,07B34H,05DEEH + .word 04D45H,07B55H,07FD9H,06ED3H,01464H,0C22H + +BHMUGD_P: + .word 254 + .word 04814H,01D2FH,0190DH,02573H,01D0EH,014CBH,014EAH,014CAH + .word 018EAH,018CBH,014EBH,018CAH,018EBH,014C9H,01462H,0C41H + .word 01042H,014A8H,018ECH,018A5H,018A4H,01463H,0C21H,0821H + .word 0820H,014C8H,01041H,01CC4H,018C7H,01484H,0C20H,01020H + .word 01485H,01CA4H,018C8H,01884H,01885H,01021H,01000H,01C20H + .word 01883H,01486H,014A5H,01C84H,01441H,01800H,03082H,014ECH + .word 0190CH,01882H,014A7H,01062H,020A4H,01841H,02841H,04507H + .word 0190BH,01CEDH,018A7H,01421H,02020H,02400H,040E5H,05168H + .word 018EDH,01487H,02420H,04D47H,0598AH,014A9H,01CECH,01D0DH + .word 014A6H,01C41H,03081H,04906H,05989H,014AAH,01483H,02062H + .word 02441H,04505H,05568H,02130H,018C9H,01D2EH,0210EH,038A3H + .word 04926H,05147H,02994H,01D0CH,01863H,01400H,01C00H,05148H + .word 05969H,0212FH,01061H,0C42H,01442H,05569H,05549H,05149H + .word 02151H,018A8H,01481H,03CA4H,05528H,01488H,01CA3H,01420H + .word 02C41H,05D8AH,05949H,05589H,05D69H,018A9H,01CA5H,02C61H + .word 05548H,0618AH,05D49H,05927H,0658AH,01862H,0558AH,04D06H + .word 04CE5H,054E6H,02000H,04D68H,044E6H,04928H,01821H,03062H + .word 04927H,0596AH,02552H,018AAH,01860H,01820H,03CC4H,065CBH + .word 010A9H,01461H,05189H,05DAAH,065EAH,03CC3H,059AAH,05DCAH + .word 01C63H,02820H,061CBH,05DCCH,05D89H,061AAH,065CCH,01CE9H + .word 024C5H,05968H,065EBH,06A0DH,02150H,018EEH,01CC9H,02483H + .word 02021H,069CBH,069ECH,05169H,02995H,02572H,0190EH,03461H + .word 061ABH,04D27H,02DB6H,01D50H,01CEAH,020C3H,01C83H,02CA4H + .word 05127H,065A9H,069EBH,06E0EH,01D2DH,01D30H,02571H,02173H + .word 01CEBH,01C82H,02862H,06E0DH,05947H,07A71H,07AB0H,01D0FH + .word 05988H,065ABH,071EDH,0720CH,06E0CH,065AAH,06DEBH,07EF4H + .word 07F56H,0212EH,024C6H,01842H,065CAH,0762CH,07A8FH,07EF2H + .word 07F34H,01861H,01440H,030A4H,04905H,0722CH,0768FH,0764DH + .word 01C62H,01840H,034C4H,04D46H,06E2DH,0766EH,07F13H,07A6EH + .word 02840H,061CAH,0722DH,02CE5H,02883H,06A0CH,06DCAH,07AD1H + .word 02861H,02C60H,059A9H,05DA9H,071EBH,01C61H,030C3H,04D67H + .word 05D88H,06187H,069C9H,02551H,0516AH,069EAH + +BHMUGE_P: + .word 255 + .word 04814H,0C21H,01021H,01C63H,02063H,02464H,02484H,02483H + .word 02463H,02884H,02C84H,03484H,038A4H,044C5H,04CE5H,05105H + .word 05968H,05D8AH,030A5H,034C6H,038E6H,038E7H,034E7H,030C6H + .word 034A6H,028A4H,02462H,02863H,02C83H,03084H,05527H,05947H + .word 030A4H,03CE6H,04107H,04527H,04928H,04927H,04948H,04D49H + .word 04528H,03CE7H,038C6H,034C7H,03083H,04905H,04106H,04507H + .word 04D48H,05169H,05569H,0598AH,0598BH,059ABH,055ABH,0516AH + .word 05149H,04D69H,044E6H,02864H,04D47H,0558AH,05989H,061CBH + .word 065EDH,061EDH,05DCCH,0518AH,03D07H,05148H,05589H,061CCH + .word 05DA9H,06A0DH,0764FH,0724FH,06E2FH,0724EH,06E2EH,0660DH + .word 0558BH,034C5H,034A5H,034A4H,038C5H,05DAAH,069EDH,06A0EH + .word 06E2DH,0722DH,07A4FH,07E70H,07A90H,07AB0H,07ED1H,07AB1H + .word 07690H,06E4EH,06A2EH,04D28H,065C9H,065EBH,07A70H,07E90H + .word 07EB0H,07EF2H,07ED2H,07EB2H,0766FH,061ECH,061AAH,061A9H + .word 065CAH,06E0CH,0762EH,0764EH,07E6FH,07EB1H,07A91H,07650H + .word 065ECH,03CC6H,05D89H,0618AH,065CBH,06DECH,0720CH,0762DH + .word 07A6FH,07A6EH,07A4EH,07E8FH,061CAH,061EBH,05DABH,04548H + .word 04127H,05548H,06189H,069EBH,06E0BH,0722EH,069ECH,04D07H + .word 05128H,05147H,05D88H,06A0CH,06E0DH,061ABH,05DCBH,04908H + .word 04907H,0720DH,055AAH,05D6AH,065ACH,0618BH,0658BH,06DABH + .word 069CCH,0760DH,07A2EH,0720EH,059AAH,06DCDH,07A51H,07A30H + .word 075EEH,071EDH,07E4FH,0762FH,07A71H,07A73H,07E92H,0660CH + .word 05D27H,06568H,06589H,07ED3H,07E71H,04CC7H,050E7H,05928H + .word 065A9H,0724DH,06E2CH,0616BH,069ADH,05549H,04D27H,05568H + .word 06A2DH,05DCAH,07670H,07E91H,0722FH,07671H,07270H,0722CH + .word 07EF3H,07EF4H,07A8FH,0766EH,06E4DH,07A92H,07AB3H,07AB2H + .word 0768FH,07250H,07F14H,07F36H,0726EH,059A9H,07F55H,06188H + .word 07ED0H,07F33H,07F75H,07AF2H,07A2DH,07F13H,0620CH,05DEBH + .word 0760CH,07F35H,0660BH,05DACH,03442H,03841H,0762CH,06DEDH + .word 06E0EH,071EBH,07EF1H,07F57H,07F15H,07F76H,07F98H,07F77H + .word 07F34H,06A2CH,07B14H,07AF3H,07B55H,07F97H,07AD2H,0726FH + .word 07AD1H,07F12H,07F54H,07F56H,07AD3H,07A6DH,07A8EH + +BHMUGF_P: + .word 253 + .word 04814H,061ABH,059AAH,05968H,05569H,04D49H,04D8AH,04549H + .word 03D28H,020A4H,018A6H,018A4H,02D6BH,06319H,07BDEH,06B3AH + .word 01464H,01485H,01487H,0212AH,03DF0H,04613H,041F1H,03DEFH + .word 0358DH,02D2AH,018C7H,01462H,02908H,0316CH,020C6H,01084H + .word 014A6H,05D89H,0518AH,03D07H,03507H,01862H,05ED5H,077BCH + .word 05273H,0252CH,03E13H,05ED9H,0675DH,056B9H,0398DH,0314BH + .word 02D4CH,0358FH,020E9H,018C9H,02508H,01D07H,04969H,030E6H + .word 01441H,03549H,05250H,05693H,04611H,05F19H,077DFH,052B7H + .word 041F2H,056B5H,04E93H,056F7H,014A5H,05547H,028C5H,01CA3H + .word 0358AH,04A31H,03DAEH,028E9H,06F5AH,073BEH,0673BH,04A56H + .word 03DF2H,035B0H,039B0H,066F9H,035CFH,010A6H,01086H,04D27H + .word 05127H,05589H,04D89H,051ACH,030A5H,030C5H,030C3H,02CE3H + .word 04E2FH,06F7CH,0312BH,07BBDH,04E74H,04E96H,04E53H,05ED6H + .word 018EBH,01D0CH,014C9H,01085H,04D69H,024A3H,039ABH,05A95H + .word 04A32H,056D8H,0296FH,018ECH,010A8H,061CBH,05DECH,04948H + .word 03949H,02CE6H,01C83H,05AB7H,06B39H,01D2CH,018EDH,0190BH + .word 018EAH,04506H,04947H,0456AH,03528H,062D5H,05676H,014A4H + .word 01484H,014CAH,018CBH,010A7H,03CC5H,048E6H,04D48H,04127H + .word 0458AH,01020H,01461H,0737BH,045EFH,041CBH,01860H,014C7H + .word 040C5H,059ACH,04D6AH,01861H,03147H,041CDH,02D8FH,01CEAH + .word 01883H,03CE6H,05DCBH,041ACH,05255H,02994H,02571H,01087H + .word 04527H,05128H,04949H,01041H,02D48H,0739BH,05AB8H,01CC5H + .word 0190CH,0190DH,04528H,044E6H,04D28H,02D07H,01C82H,024C5H + .word 0737DH,01CECH,01C61H,062F7H,062FAH,06F3DH,0292CH,01D0DH + .word 04507H,01440H,04106H,0C20H,0C21H,01841H,07BDDH,018CAH + .word 04107H,02D25H,056B1H,01882H,014A7H,0C41H,024C2H,01D2EH + .word 024A0H,01460H,02993H,02972H,01CEBH,02D03H,01CEDH,0212FH + .word 01D30H,01840H,018A9H,05E0DH,055CBH,055CCH,01C80H,0620CH + .word 02CA4H,02060H,01060H,018A3H,028E0H,061ECH,02507H,01483H + .word 01040H,02463H,038A4H,04DCDH,04547H,038A3H,01061H,038C3H + .word 04968H,02862H,06A0DH,01C41H,06E50H,0660EH,0516AH,04D68H + .word 01C60H,06A4FH,03905H,03522H,0396BH + +BHMUGG_P: + .word 254 + .word 04814H,035ACH,01CE6H,014A4H,01084H,01062H,01042H,01483H + .word 01022H,01021H,01001H,01063H,01484H,0C21H,04E52H,0358BH + .word 014A5H,01000H,01884H,01C84H,020A4H,024C5H,020A6H,020E7H + .word 04610H,02D4AH,02508H,01043H,01400H,01421H,041EEH,0C42H + .word 0C41H,0C00H,01C64H,01C83H,034C5H,03507H,030C6H,02CC5H + .word 02CE8H,02D28H,01885H,04A30H,0316BH,01800H,02063H,02C84H + .word 04507H,0518AH,05549H,04D48H,04D07H,04928H,0492AH,0454BH + .word 0416CH,03509H,05272H,03DCEH,05271H,01463H,01401H,02000H + .word 04D4AH,03863H,048E5H,038A4H,048A1H,069A9H,07A0DH,07A2EH + .word 0764FH,0762EH,07A70H,06169H,06DECH,0760DH,071ECH,069CBH + .word 069ABH,065ABH,0658AH,06DADH,069B0H,06E75H,05694H,05693H + .word 04E51H,01CA5H,02C22H,038A3H,040E6H,05128H,044A1H,050E5H + .word 06DCBH,05D68H,05927H,05127H,065AAH,06189H,06168H,069AEH + .word 069F1H,02820H,048E8H,0516CH,034A4H,03CC5H,044E5H,040A3H + .word 06E0DH,061AAH,04D05H,05547H,0C43H,018A5H,03464H,040E8H + .word 03CE6H,03483H,044A4H,05D47H,06DCAH,06DEBH,0618AH,05AD6H + .word 01464H,03000H,061AEH,06147H,06568H,05AB3H,05AB4H,0616CH + .word 0556BH,03462H,06569H,071CBH,0658BH,0616AH,06149H,05D8AH + .word 04CE3H,07E4FH,0460EH,03041H,061ABH,04A32H,0821H,02C63H + .word 04108H,06148H,05AD5H,04A0FH,05674H,01C42H,0618BH,050E6H + .word 03DEDH,039ADH,01442H,048E6H,05105H,041EDH,01822H,05D89H + .word 061CCH,05DACH,01CA6H,0C22H,0800H,0464FH,01041H,0C20H + .word 03E0DH,01420H,02C41H,03169H,06738H,018A4H,069CAH,069EBH + .word 06F7BH,02926H,0737BH,01462H,065CBH,077BCH,0820H,05AD3H + .word 0460DH,0739AH,06317H,044C3H,04236H,04E4FH,03DCBH,062F4H + .word 062F7H,01020H,02150H,039F3H,04E91H,06B79H,0841H,0296EH + .word 02DB0H,03E15H,06B17H,02D49H,01D0EH,02552H,035AFH,05291H + .word 06758H,0190DH,018EBH,0256EH,014CBH,03E0FH,056D5H,04652H + .word 035CFH,018C9H,0C63H,05928H,02130H,018ECH,0212CH,0296DH + .word 04E93H,014EBH,014EAH,0210BH,014CAH,018EAH,018CBH,0254DH + .word 01D0BH,014C9H,02994H,0212FH,0801H,014A9H,014ECH,018CAH + .word 014A6H,02C83H,01485H,02483H,01CC5H,01C41H + +BHMUGH_P: + .word 252 + .word 04814H,01001H,01000H,01084H,01063H,01042H,01083H,0C42H + .word 01022H,01021H,01062H,01082H,0C81H,01484H,0C21H,0C22H + .word 010A5H,014A5H,01884H,020A6H,01C85H,018A4H,01043H,014A4H + .word 01064H,01020H,01401H,01801H,02401H,030E7H,03529H,028E7H + .word 020A5H,01CA5H,01CC6H,020C6H,01463H,02402H,03065H,03CE6H + .word 04D2AH,0494AH,03D49H,024E6H,01C84H,01883H,02507H,02D6BH + .word 02508H,045ADH,02C01H,03C01H,0614DH,07A74H,06E31H,04528H + .word 034E5H,03549H,01863H,01442H,024C6H,01864H,01462H,01483H + .word 018A5H,014A3H,039CEH,0318CH,06E75H,0352AH,03423H,0556CH + .word 055ADH,034A4H,0498CH,02D07H,024E7H,020E7H,0C41H,010A3H + .word 03E10H,056B4H,069F1H,06634H,048C8H,065D0H,05D8DH,04D8BH + .word 0314AH,020C7H,01041H,01081H,041EDH,056B3H,0698DH,02464H + .word 04001H,0696EH,07A13H,065ACH,05569H,055EDH,01CC5H,020E6H + .word 020C5H,01482H,02949H,06758H,069AAH,069AFH,06633H,030E8H + .word 01421H,01443H,01822H,04844H,0694DH,075F0H,0516AH,01CA4H + .word 069F2H,03421H,04063H,0592BH,05D6CH,04DCCH,02928H,014A2H + .word 065F2H,05A33H,03C24H,05CEBH,04969H,0416AH,01CA6H,06211H + .word 03D6AH,03C22H,054EAH,07233H,035ABH,065AAH,06DECH,065EFH + .word 0658EH,04D29H,06168H,065EDH,05DCCH,04465H,0596BH,03908H + .word 020E8H,01885H,020C3H,01881H,02105H,06189H,069CBH,0660EH + .word 01841H,02863H,03843H,03C64H,04507H,049CEH,010A4H,06989H + .word 055EEH,02063H,044A7H,0552AH,02C03H,04CA9H,061B0H,05DEFH + .word 014C6H,0C01H,02083H,06E0CH,0664FH,05D2CH,055AAH,0418AH + .word 0C00H,0720DH,0660DH,03D2AH,02CA5H,071ECH,05D68H,05947H + .word 040E8H,028C5H,06E2EH,05DAAH,03507H,0398AH,069C9H,069EEH + .word 040A5H,05529H,03D27H,0C20H,05D89H,059F0H,03463H,038A4H + .word 065CBH,048E6H,055F0H,01400H,02041H,05107H,040C5H,05927H + .word 0821H,04D89H,0820H,05547H,05505H,05DCBH,05589H,04D06H + .word 039ADH,04947H,03DCDH,044E6H,01485H,04149H,0422H,05274H + .word 05928H,04A32H,045F0H,02D2AH,05A94H,041EFH,024C7H,014A6H + .word 06B5AH,03083H,03CC5H,048E5H,077BDH,04E52H,02C83H,04D05H + .word 0739BH,0210BH,0294CH,0316DH + +LXMUGA_P: + .word 254 + .word 00H,02C43H,03444H,04466H,050E9H,02023H,01823H,01443H + .word 01C44H,01C43H,01C23H,02024H,02044H,02444H,038E8H,038E7H + .word 02842H,03085H,01C21H,02022H,0516AH,05D69H,069ABH,069ECH + .word 0762FH,07271H,07A70H,07A91H,07AB3H,07AF5H,07F15H,07F17H + .word 07AF6H,07F38H,07F59H,07F7BH,07B7CH,07BBDH,054EAH,01423H + .word 034A6H,059F0H,04128H,02843H,04D6BH,02043H,044C7H,05528H + .word 05927H,06147H,06169H,07AD3H,03C44H,02423H,01822H,01802H + .word 01C22H,02823H,02844H,051EFH,03D08H,02C63H,02421H,038A5H + .word 05506H,05D47H,05905H,0720DH,07692H,058EAH,01C24H,04DAEH + .word 0458CH,02C85H,02C42H,04CC5H,050C5H,07691H,076B4H,034C9H + .word 051F0H,0414AH,034C6H,04929H,04CE6H,04883H,04CA4H,06E0DH + .word 0724FH,01421H,0454DH,06273H,03D07H,04549H,04D8BH,04949H + .word 038A3H,04D07H,044A3H,06189H,0618AH,07672H,02464H,02466H + .word 051F2H,06AB6H,06275H,05E52H,06AB5H,038C5H,05549H,044A5H + .word 044C5H,05D8BH,061ACH,065CCH,06E2FH,04065H,02045H,02CA8H + .word 06EF9H,06695H,06AD5H,05A0FH,04107H,0558BH,059CDH,050E6H + .word 05D6AH,069EEH,0620FH,06A50H,040A7H,06EF6H,06651H,051ACH + .word 061EEH,06A30H,059EFH,05D89H,0733AH,0779DH,06693H,059ACH + .word 06A93H,03C86H,02866H,05A54H,06F19H,04DACH,055CDH,06630H + .word 02422H,03D2CH,0777DH,07339H,05A31H,0775BH,07317H,03483H + .word 03462H,03863H,028A7H,05A34H,06F1AH,0560FH,05E51H,04DF0H + .word 044E8H,059AEH,072D5H,03063H,04D2BH,03043H,02465H,05610H + .word 02822H,02064H,02CEAH,04DCFH,038A6H,072F9H,034C5H,05653H + .word 0412AH,01843H,076F7H,02863H,01422H,0416EH,04DF2H,066D8H + .word 07BBEH,066D6H,01023H,04590H,07FFEH,062B6H,03D2AH,02485H + .word 01842H,0352BH,02CC9H,07FDEH,07FDFH,01C66H,05E96H,07BFFH + .word 07FFFH,07BDEH,05A32H,0396EH,07BDFH,077BFH,03D4BH,01022H + .word 01442H,05634H,0777EH,0496CH,0592CH,03CA7H,01043H,03D6DH + .word 06F5AH,02488H,05633H,01402H,02487H,030EAH,05675H,06EFAH + .word 06719H,077DEH,0352DH,05A77H,06F5CH,0733CH,02065H,049B0H + .word 03509H,07BFEH,0458FH,066FAH,01C42H,01403H,038EAH,0510AH + .word 038A7H,03CA6H,06DF1H,0596DH,0512CH,044A8H + +LXMUGB_P: + .word 252 + .word 00H,07F59H,07F38H,07AF5H,07AB3H,07A91H,07670H,07A4FH + .word 0722EH,0720DH,06DCAH,06D88H,06147H,05D26H,05526H,04CE6H + .word 03CA4H,02422H,01C22H,01402H,0C02H,01023H,0C22H,01423H + .word 01022H,01443H,01802H,02064H,02864H,02403H,02823H,02802H + .word 02822H,02C23H,01422H,071ECH,06589H,05D47H,04CC4H,040A4H + .word 03021H,02442H,01C43H,01002H,01823H,02043H,030A4H,02402H + .word 07B15H,06987H,06125H,05504H,02821H,01C02H,0C21H,01421H + .word 02C84H,02021H,02C22H,06E0DH,061AAH,06126H,03043H,01C23H + .word 01842H,0822H,02423H,01822H,06E2FH,065CBH,06568H,05925H + .word 050E4H,044A3H,02842H,02022H,02443H,034C7H,01001H,02843H + .word 02824H,06DECH,06187H,04CC3H,048A2H,038A3H,02C42H,02C63H + .word 034C5H,038E6H,01801H,01021H,061EDH,069EEH,05D68H,04D05H + .word 01843H,02803H,06A71H,06A92H,072B3H,072B4H,06E4FH,05DAAH + .word 05D89H,04948H,040E6H,040E5H,038E5H,01C41H,01821H,02485H + .word 03D08H,02002H,072F5H,07291H,0660DH,051ABH,04D27H,04107H + .word 02462H,01C21H,02463H,02023H,059CDH,0660FH,06651H,05168H + .word 051ACH,02863H,02042H,02063H,038E8H,05147H,05DCBH,059ACH + .word 055CDH,02C62H,06A72H,06A91H,0664FH,055CCH,03083H,06272H + .word 06230H,05E0FH,04D8AH,02C83H,03508H,01C63H,04DACH,01C01H + .word 059EEH,0496AH,04D8BH,051CCH,055EDH,04549H,0416AH,06EB4H + .word 055CBH,04128H,01401H,06ED4H,0498AH,05E30H,01C42H,051CDH + .word 051EEH,02483H,030E9H,0802H,04105H,04947H,0498BH,03D07H + .word 06693H,0560FH,02CC5H,01400H,04DABH,049ABH,01000H,05E52H + .word 05E51H,04DCDH,04DCEH,072F6H,051EDH,07338H,07359H,06AD7H + .word 024C6H,0392BH,0458DH,066D6H,0735BH,06F19H,03D4AH,07317H + .word 06695H,051AEH,066B6H,05E74H,0779DH,05E94H,05210H,02CC7H + .word 05E93H,05252H,07B9DH,07B7CH,06AF8H,05A33H,066F9H,06F3AH + .word 0777CH,0733BH,06AB6H,05612H,03D6CH,07FFEH,07BBEH,045AEH + .word 0416CH,0C42H,0779EH,04DF0H,02CC8H,01C44H,02086H,05EB7H + .word 051F1H,049AFH,0352AH,04E32H,028A6H,02066H,030EAH,01444H + .word 03065H,02C43H,0512CH,04CEAH,048A8H,040A7H,04466H,04065H + .word 03C45H,03C65H,03844H,03C44H + +LXMUGC_P: + .word 255 + .word 00H,03444H,04045H,05066H,03C44H,03024H,02824H,02844H + .word 02C44H,03045H,03044H,03065H,038A7H,04D4CH,065F0H,069EFH + .word 0598BH,069ECH,0720EH,0764FH,07A71H,07AB2H,07A92H,07671H + .word 07270H,0724FH,06E2EH,07AB3H,07EF5H,07F16H,07F37H,07670H + .word 07E91H,0766FH,0724EH,0722EH,0722FH,07272H,02444H,02424H + .word 02C45H,03445H,06E52H,059ADH,05D6AH,0720DH,07650H,07692H + .word 076B3H,07AD4H,07AD3H,07691H,07250H,07EF4H,07AF4H,07A91H + .word 076B4H,02C43H,02843H,02C24H,03023H,03043H,03865H,07230H + .word 0616AH,0658BH,0760EH,07AB1H,0722DH,06DCBH,07EB2H,07EB1H + .word 0764EH,07AF5H,07B16H,040A6H,069ACH,06E0DH,07ED2H,07A90H + .word 07AD5H,02423H,03465H,03866H,048C9H,06DF0H,0616CH,07EF6H + .word 07ED4H,07EB3H,07A93H,07B17H,02842H,02823H,03844H,05528H + .word 061ACH,05928H,0658AH,06589H,069AAH,065AAH,05968H,065CBH + .word 07ED3H,07F58H,03864H,0514AH,065ABH,065CCH,06A30H,076D4H + .word 07F15H,0762EH,07F36H,048C6H,076D6H,07AF6H,072B3H,02443H + .word 03464H,0618BH,054E5H,054E7H,044A5H,0596CH,05DAEH,06651H + .word 06E74H,07251H,07F79H,04CC5H,0660FH,04929H,044E8H,065EEH + .word 030A6H,02C85H,038C7H,0492AH,05DCEH,05107H,048A6H,0558DH + .word 044E7H,02485H,02CC7H,0452AH,04508H,04461H,04063H,04C66H + .word 06610H,0516CH,044C5H,03882H,03C84H,03863H,048A4H,05D27H + .word 06567H,058E4H,054A3H,05084H,04064H,02043H,03C64H,05548H + .word 04D06H,06569H,069A9H,05D05H,04C83H,03822H,02044H,02445H + .word 040A8H,02863H,02C86H,02023H,06E4FH,0720CH,03084H,02864H + .word 01C23H,01C43H,07AB4H,02845H,02825H,034C8H,01C44H,01823H + .word 02464H,07F17H,07F39H,07F59H,07B38H,07F38H,050A8H,02C66H + .word 04D6EH,03D2AH,02C65H,038A9H,06653H,0762DH,07A6FH,07B59H + .word 07F7AH,07F5AH,07B58H,01C24H,038CAH,051AFH,01822H,0760DH + .word 07F7BH,07B5AH,01843H,01C22H,071ECH,07F9BH,07B37H,07B18H + .word 07B39H,03CE8H,034C7H,071EBH,02024H,04D8EH,02865H,0618AH + .word 07E92H,07ED5H,07693H,01C42H,061ABH,0760CH,058A8H,02022H + .word 07271H,07AD6H,04065H,01842H,061AAH,07F18H,050E9H,04066H + .word 058EAH,07AF8H,02C64H,01802H,034C5H,0558AH,07F9CH + +LXMUGD_P: + .word 254 + .word 00H,076B4H,07B18H,07F18H,07AF6H,07AD4H,07AB4H,07692H + .word 07271H,07670H,0764FH,0720DH,06DECH,069CBH,069AAH,06168H + .word 05D06H,050E6H,04CE7H,05128H,059ADH,04D29H,040C6H,04084H + .word 07672H,07A72H,07250H,065CDH,04528H,02443H,01001H,01022H + .word 01443H,01002H,01423H,01822H,03085H,03423H,03823H,03863H + .word 03044H,03403H,03424H,03023H,02422H,0C22H,07B38H,07F39H + .word 07292H,06E0EH,06DEDH,06DCCH,06DCBH,05506H,0512AH,0492AH + .word 04D6BH,044C5H,05D6AH,0618AH,06E51H,0558CH,034C7H,01422H + .word 01023H,0C03H,01802H,02864H,03004H,03824H,02423H,07F17H + .word 07AF5H,07AD5H,076B3H,07691H,0722EH,06E0DH,06DEBH,069CAH + .word 06989H,06147H,04D6CH,04D07H,05989H,07270H,05DEEH,02C85H + .word 01421H,03422H,07251H,0722FH,0720EH,05928H,06211H,06A52H + .word 04507H,07671H,07293H,0C01H,01021H,02464H,0C43H,07F38H + .word 07F5AH,07F59H,076D5H,06589H,05969H,0596CH,05DF0H,06E94H + .word 0660EH,06E30H,01844H,03024H,076B2H,07AB2H,07650H,06547H + .word 05D26H,05549H,0556BH,065F0H,06E92H,07AF4H,0660DH,05D8BH + .word 04948H,01000H,01C23H,02C43H,03022H,03043H,03002H,07B15H + .word 072B3H,0558BH,076D3H,059CDH,01801H,01C43H,03003H,07651H + .word 05D27H,05906H,069EDH,065ACH,07693H,01823H,02C24H,02C23H + .word 07EF5H,054E4H,054E5H,050E5H,04CC5H,050C5H,069CCH,03D28H + .word 01C22H,02C22H,02022H,07B39H,076F7H,05926H,04483H,03C84H + .word 04063H,069ACH,055ECH,01402H,07B19H,06ED7H,03529H,02485H + .word 02CA7H,040E8H,03021H,05927H,02801H,02023H,03864H,048A4H + .word 055AEH,0452AH,05905H,054C4H,05505H,03883H,02401H,02823H + .word 01C41H,0616AH,05907H,01400H,02C02H,03441H,01401H,061CBH + .word 050C4H,02802H,05D47H,07ED4H,06E4FH,050E4H,0C02H,0C23H + .word 0822H,030A6H,02822H,07A91H,07ED3H,020A6H,069ECH,01024H + .word 01044H,038E8H,07A70H,071ECH,06DCAH,0762FH,069A9H,06988H + .word 048A3H,02C03H,071EAH,06DA9H,071A9H,06567H,06146H,06DC9H + .word 02803H,07A6FH,0762EH,069A8H,06DA8H,058E5H,071C9H,06566H + .word 06545H,06125H,054C3H,06987H,0823H,0802H,02402H,0720BH + .word 06546H,06126H,02403H,07A4DH,06967H,038C6H + +LXMUGE_P: + .word 251 + .word 00H,07739H,0775BH,072F8H,07B3AH,07B5BH,07B7CH,072D6H + .word 06E73H,0660FH,05D8BH,05D69H,05528H,0558DH,06E30H,04D28H + .word 04CC5H,05906H,050C5H,04CA4H,04CA5H,04463H,04043H,04063H + .word 04065H,03C64H,03843H,04064H,03C44H,04044H,03C43H,03C22H + .word 03842H,07B38H,0777DH,07B7EH,07693H,065CCH,05D6AH,0554AH + .word 06A32H,05927H,05926H,050A4H,04883H,04443H,03C42H,07BBFH + .word 06E51H,05DACH,05549H,076B5H,06E93H,0558BH,05507H,05505H + .word 04C84H,04863H,04442H,04042H,0779CH,07B9DH,07FFFH,06F19H + .word 06694H,059CEH,040E8H,0516EH,06611H,05547H,048A5H,048A4H + .word 04464H,04485H,050E6H,05907H,04884H,0731AH,06ED7H,06653H + .word 05E11H,06A74H,07B9BH,05E12H,07297H,04D07H,04CC6H,05928H + .word 05D48H,05D27H,06148H,06127H,05948H,06E95H,061EEH,0492BH + .word 03CE9H,0450AH,0498DH,04DCEH,055CFH,0556DH,0658AH,069AAH + .word 06169H,06589H,06569H,0618AH,03865H,03423H,03444H,03445H + .word 03424H,03844H,0518EH,06E96H,065ABH,065ACH,069EDH,06DEEH + .word 069CCH,03C85H,03845H,03443H,040C7H,04885H,06E0EH,06E0FH + .word 07651H,07251H,07272H,07250H,0722EH,06DEDH,05D68H,06F3AH + .word 06F5BH,062B6H,04D4CH,03464H,03824H,05949H,061ABH,0722FH + .word 07671H,07AB3H,065AAH,04445H,05066H,04865H,03045H,02C44H + .word 03024H,03025H,03465H,03446H,03846H,05969H,06A0FH,07AB5H + .word 07AD6H,07271H,06E0DH,06E2FH,03C65H,03C45H,044A6H,0720EH + .word 07AD4H,06E2EH,03044H,069ACH,06DCDH,07650H,07AD3H,0764FH + .word 06DCBH,069ECH,02C45H,06149H,0616AH,069CDH,02C24H,05D49H + .word 06168H,02C23H,058E5H,058E6H,05D26H,06147H,06128H,059AFH + .word 061F0H,040A8H,044EAH,059F1H,06232H,0618BH,0658BH,07230H + .word 04045H,02C43H,048E9H,038A8H,04D2CH,0552BH,07274H,02824H + .word 03CA7H,06674H,048A6H,069D0H,065AEH,05D6CH,02C25H,07A73H + .word 05D2AH,0656CH,03425H,048EAH,04D6EH,06A0EH,07AF8H,06DECH + .word 02844H,075EDH,0720DH,03065H,06A76H,0762FH,0720FH,076D5H + .word 071EBH,06DA9H,034A7H,05E53H,0762EH,07A71H,07670H,03C63H + .word 03863H,04DAEH,065CBH,07A91H,050E8H,06DCCH,07F58H,07691H + .word 07F37H,0764DH,07A6FH + +LXMUGF_P: + .word 253 + .word 00H,03843H,03443H,03423H,03023H,03444H,03844H,04064H + .word 04484H,048A4H,054C5H,05927H,06169H,065ABH,069EDH,065EDH + .word 06A0DH,06E0EH,065ECH,0660CH,06E6EH,07690H,076D1H,05DAAH + .word 04D06H,03842H,03402H,03823H,02823H,01C22H,01022H,0C22H + .word 03422H,03022H,02C23H,02C43H,02C22H,03043H,03C43H,04063H + .word 050C5H,069CCH,069ECH,069CBH,065CCH,065CBH,061AAH,0728FH + .word 05968H,04483H,03421H,03822H,03803H,03403H,02822H,01822H + .word 05507H,065AAH,06DECH,05D68H,0726FH,0660BH,05D89H,04CE6H + .word 03821H,03C23H,01422H,03C63H,02423H,03863H,04485H,04CC6H + .word 05528H,05D6AH,061ABH,05548H,03885H,03C24H,03824H,03424H + .word 02402H,01002H,05106H,04CC5H,044A4H,04084H,02422H,050E6H + .word 05928H,0618AH,06189H,05947H,048E5H,03802H,01443H,05948H + .word 05107H,05D48H,05526H,05527H,0722FH,06E4DH,048C4H,03463H + .word 048C7H,04CE7H,05949H,05126H,061ECH,048C6H,061CCH,03042H + .word 02C21H,048C5H,05D69H,05105H,03C42H,04CE5H,03442H,044A5H + .word 05926H,048C3H,07A91H,0724DH,03C22H,05969H,05506H,07670H + .word 05DCAH,044C5H,02443H,04CC7H,04D05H,03C83H,050E5H,04CE4H + .word 048E6H,0556BH,04528H,04085H,05D26H,03841H,0618BH,04CC4H + .word 048E7H,059EFH,04DADH,03485H,05D49H,040C6H,0658BH,04D28H + .word 055ACH,05E31H,030A6H,0616AH,069CDH,04883H,04D4AH,055AEH + .word 06253H,055F0H,03063H,02001H,02022H,065CDH,05A33H,06ED8H + .word 05E53H,02C44H,02464H,06DEEH,065ACH,06254H,0731AH,0458CH + .word 05127H,040A4H,02C84H,03CE6H,055CFH,06AB6H,066B5H,01C01H + .word 038A6H,06E30H,059AEH,06ED6H,0412AH,04549H,06DEDH,05905H + .word 051ABH,01802H,0720DH,054E5H,03462H,038C4H,03483H,03004H + .word 03862H,04507H,055CCH,06DCCH,071ECH,06147H,054C4H,050A3H + .word 05906H,04D48H,04D8AH,034C4H,069AAH,05D27H,050A4H,05907H + .word 040A5H,03024H,06989H,058E5H,03D07H,034C6H,0456BH,0C42H + .word 07A70H,071EBH,06587H,06127H,054E4H,050C4H,01C43H,03908H + .word 07A92H,02485H,01823H,01402H,0658AH,01401H,01423H,01844H + .word 03003H,02023H,01023H,07AB4H,07692H,07672H,05D06H,0C23H + .word 01444H,06E51H,07AD5H,05D07H,07B16H + +LXMUGG_P: + .word 254 + .word 00H,049EFH,03128H,020C6H,01884H,01C83H,01863H,01442H + .word 01042H,01462H,01463H,01862H,06EB5H,06E93H,020C5H,02084H + .word 01C63H,01C62H,02083H,06EF7H,0418BH,03D4AH,0416AH,03D49H + .word 03D28H,03D07H,038E6H,034C5H,030A4H,038E5H,076D4H,06ED5H + .word 05E51H,06630H,0660FH,05E0FH,065EEH,05DCDH,05DACH,05D8AH + .word 05569H,04D06H,04CC5H,04CE6H,05506H,05948H,05968H,05969H + .word 05989H,06A93H,06E72H,06E51H,06A51H,06A30H,06E71H,07272H + .word 06E30H,06A0FH,06A0EH,069EEH,065CDH,065ACH,05949H,050E5H + .word 05928H,05927H,05D49H,05D48H,05D27H,06149H,0658AH,06169H + .word 06589H,06168H,065ABH,065CBH,061AAH,0618AH,072D7H,07271H + .word 06E50H,06A2FH,065EDH,065CCH,054E6H,05907H,05906H,06189H + .word 065AAH,069CCH,069ECH,06E2FH,06E0DH,06E0FH,069EDH,05D47H + .word 06148H,06147H,065A9H,061A9H,069CBH,06A10H,06E52H,06E73H + .word 05528H,0618BH,05D68H,065ECH,06A71H,06EB3H,07293H,05D6BH + .word 061ABH,05547H,05926H,0616AH,069CDH,05D26H,06568H,06588H + .word 069ABH,06DCCH,06DECH,072B4H,06569H,06A92H,06E31H,06E4FH + .word 05D69H,06E2EH,06E0EH,0660DH,06E10H,06E70H,061CCH,06127H + .word 06188H,06A50H,0724FH,07B18H,06DEDH,0722EH,0722DH,05105H + .word 069A9H,069C9H,06A2EH,050C4H,06AB3H,0658BH,048A4H,04462H + .word 04CA4H,050C5H,07691H,07A91H,04883H,04442H,04863H,04483H + .word 03C42H,04042H,04043H,04463H,04C84H,058E5H,06A31H,06E53H + .word 07274H,04063H,03C43H,04464H,04CA5H,05E31H,06E74H,072B6H + .word 072F8H,06A53H,06632H,06A32H,04884H,04062H,04022H,03C63H + .word 03822H,04885H,06673H,07AF7H,05D06H,03821H,050A4H,054E5H + .word 06EB6H,0773BH,07B3BH,07B7DH,07B9DH,07BBEH,0777DH,07B5BH + .word 05D07H,048A5H,06A73H,07718H,0775BH,04CA6H,04484H,03423H + .word 03843H,04864H,04C85H,06A72H,06650H,05DEEH,054E4H,04041H + .word 04443H,0554AH,06ED8H,072FAH,0773CH,07B7EH,06F19H,055CEH + .word 04D29H,044C7H,03443H,03C44H,06F17H,07FDFH,0779EH,058E6H + .word 03842H,0518BH,03421H,06F1BH,04508H,07317H,03C62H,061ECH + .word 0512AH,05E52H,055ADH,04507H,048E8H,055AFH,07B9AH,03C83H + .word 05905H,050E4H,07AF8H,044C5H,04CC3H,054C4H + +LXMUGH_P: + .word 251 + .word 00H,01462H,01883H,01884H,018A4H,01463H,01042H,0C42H + .word 01442H,01862H,02483H,01C83H,01C84H,020A4H,020C5H,020C6H + .word 038E5H,034C5H,034A4H,034E6H,03926H,03D28H,03D49H,03D47H + .word 03506H,02882H,05968H,05168H,05547H,05126H,05989H,05DAAH + .word 05DCBH,05DECH,0620CH,0620DH,05E0CH,059C9H,059A9H,05588H + .word 04D27H,044C4H,040C3H,03CC3H,03083H,02842H,01C41H,0C22H + .word 065ABH,065AAH,06589H,06189H,06188H,06168H,05D68H,05947H + .word 05D48H,05948H,05906H,05D69H,065CBH,065ECH,06A0DH,06A2DH + .word 0660CH,065EBH,061CAH,061AAH,05DA9H,05988H,05969H,061CBH + .word 061ECH,04D05H,044A4H,03C83H,02442H,01821H,01022H,065CAH + .word 065A9H,061A9H,06A0CH,061EDH,06A2EH,0662DH,061EBH,048E4H + .word 040A3H,03443H,01822H,06DECH,069ECH,069CBH,069CAH,069EBH + .word 0618AH,06E2DH,05D88H,048C3H,061ABH,05D89H,065CCH,0660DH + .word 0662EH,03C63H,069EDH,06DEDH,061CCH,06A70H,06E91H,06EB1H + .word 06A90H,06A6FH,0664EH,06E0DH,06DEBH,06E4FH,06A2FH,065EAH + .word 06E6FH,06E90H,072B1H,072B2H,072D2H,076D1H,0664DH,061EAH + .word 03C62H,03401H,02C23H,01C22H,01422H,0C02H,06A0EH,06E70H + .word 07291H,06A4FH,072D3H,072F3H,03022H,03023H,06E2EH,06A4EH + .word 06EB2H,0660BH,03441H,06E0CH,076B1H,06E4EH,0726FH,07290H + .word 06EB0H,06E6EH,03422H,02422H,06E2FH,06E50H,07292H,072B3H + .word 072D4H,072D5H,076F5H,03862H,03423H,072F5H,07716H,072B4H + .word 06A71H,0662CH,03842H,06E0EH,07B15H,07B37H,07B59H,072F4H + .word 07691H,072B0H,05105H,03821H,07250H,07271H,06E71H,07270H + .word 076F6H,07B7AH,07759H,07738H,03402H,076D4H,07B38H,0775AH + .word 05DA8H,03002H,01002H,076B2H,07AF5H,076D3H,07715H,076F4H + .word 06A4DH,061C9H,04883H,0C01H,076B3H,05928H,069CCH,058E5H + .word 076F3H,076D2H,06A0BH,03841H,050A4H,054C5H,069AAH,07692H + .word 06A2CH,03822H,03403H,04CA4H,06ED4H,06A6EH,06147H,069A9H + .word 0722FH,04063H,03C22H,03802H,03C23H,03823H,0722DH,07670H + .word 03C43H,054C6H,058E6H,05905H,03C42H,06E8FH,03843H,03824H + .word 03424H,050A3H,06DCBH,076F2H,07AF3H,0728FH,04863H,04464H + .word 03844H,0658AH,076B0H + +DKMUGA_P: + .word 250 + .word 00H,05E97H,06AFAH,06F3BH,0737CH,06B1AH,066FAH,062B9H + .word 066D9H,066D8H,062D5H,05AB1H,05A8FH,0528BH,04A47H,04A64H + .word 04222H,039E1H,039C2H,03DE3H,035C2H,039E4H,031A2H,02D81H + .word 02962H,018C3H,018A4H,01484H,01887H,0250AH,045F0H,06B19H + .word 06AF9H,06AFCH,0731CH,0731EH,05EB7H,06F1BH,066BAH,066B9H + .word 062B7H,04A4BH,04A25H,03E02H,03DE2H,03E03H,039E3H,039A3H + .word 02961H,035A4H,014A3H,01465H,02D2BH,05674H,06F1AH,05EBAH + .word 062D9H,062D7H,05691H,04A2AH,04606H,04223H,03E22H,03A02H + .word 03A03H,03E05H,04644H,04646H,04224H,035C1H,035C5H,02561H + .word 014A1H,01062H,01487H,01CA8H,02D4DH,05694H,0731AH,06F1EH + .word 066B8H,062B6H,05A73H,0524AH,04203H,03DC3H,05285H,031A1H + .word 02D83H,02523H,018A3H,0356DH,05EB6H,07319H,04A09H,05286H + .word 04E84H,04643H,039E2H,02563H,01CE4H,039AFH,072FBH,06F1CH + .word 06B1BH,06299H,062D8H,05A93H,04E4DH,04228H,04EC3H,01900H + .word 01CC9H,039CEH,05AB6H,066F8H,06298H,06297H,06296H,0526EH + .word 04A68H,04241H,04A63H,052C3H,04221H,02520H,020C3H,01CE7H + .word 0316BH,05672H,06AF7H,062B8H,05E98H,05A95H,04E73H,04A30H + .word 02DA4H,02944H,02104H,01864H,024E9H,04610H,06B3BH,05670H + .word 03DEDH,04E2FH,04E4EH,0462EH,0464FH,020E7H,05E96H,04E2DH + .word 045EBH,03DE6H,041E9H,0420AH,0460CH,0464BH,03DC2H,03E01H + .word 02929H,0318DH,06317H,06678H,03DE8H,03E06H,04648H,03E42H + .word 03A22H,03601H,0671AH,05E77H,05A76H,03DA8H,039A5H,03E41H + .word 01D02H,02544H,014E3H,062F8H,066F9H,05E76H,062B5H,05230H + .word 041E6H,039C3H,03E23H,020E5H,01D07H,04A14H,0777EH,05E78H + .word 05A77H,04A27H,041E5H,01D04H,01524H,01D09H,06277H,06293H + .word 0524DH,04202H,04622H,04603H,05E57H,05A97H,05A75H,05A71H + .word 03E82H,035C6H,035A7H,0522FH,0522DH,02DC0H,03162H,04A87H + .word 04623H,02922H,05658H,04683H,05A56H,05A57H,0568FH,04A23H + .word 05696H,05656H,04E8EH,0568DH,03E09H,05636H,05635H,05693H + .word 046A5H,04E8DH,041E3H,06F5CH,0737BH,05ED4H,05ED3H,05AD0H + .word 05ACFH,05ED6H,0739CH,06F5AH,06B59H,06719H,06B3AH,062F9H + .word 06F3AH,05A96H + +DKMUGB_P: + .word 252 + .word 00H,0733EH,07B3EH,07B1DH,07B7FH,07B9FH,0775FH,0779FH + .word 0777FH,0735FH,0735EH,06F1EH,0671AH,05A97H,05ED5H,0460CH + .word 03165H,039E7H,04A67H,04A65H,04EA7H,04A84H,04261H,039E1H + .word 035E1H,035C2H,02562H,02522H,01D03H,031A3H,03E04H,04224H + .word 04226H,04645H,04646H,03E06H,03DEBH,05271H,05694H,05253H + .word 04E32H,0358CH,02509H,020E8H,018C7H,06EFDH,0733DH,06B3AH + .word 05273H,05691H,035C4H,04624H,03A21H,03A02H,02981H,02962H + .word 04203H,04205H,04225H,04648H,04A69H,0466AH,04A8BH,0462BH + .word 0464CH,04E6DH,041ECH,0460FH,06EFEH,0775EH,0737FH,0737EH + .word 06F1CH,0671DH,05AF8H,04E51H,0426FH,035A4H,03A61H,039E3H + .word 02560H,01D21H,02964H,04204H,03E22H,03E23H,03E42H,03E45H + .word 035A9H,041EBH,031AAH,06F5EH,062F7H,05A93H,03DE8H,02961H + .word 039C3H,04625H,04242H,03163H,039E4H,03E03H,03DE3H,04629H + .word 04A2BH,0316BH,05F1AH,05F17H,056D4H,04E8FH,04E89H,03E28H + .word 04A2DH,04A2EH,0398DH,0673EH,056B7H,03A03H,03603H,02E01H + .word 03601H,039E2H,05272H,0398FH,01CC8H,062D9H,04E52H,02D82H + .word 03E02H,04A09H,05235H,0777EH,03DEDH,0360BH,03A22H,03A23H + .word 04A4BH,0526FH,05673H,05274H,03DCEH,02D84H,05655H,05A77H + .word 0731BH,0735BH,039A9H,04E4EH,05E77H,072FBH,062DAH,03167H + .word 035A6H,03DE2H,04E90H,05693H,05A75H,05A76H,04E14H,0356EH + .word 06EFBH,02D46H,03DC2H,039A3H,04E8DH,05255H,05676H,0777DH + .word 06B39H,05252H,02948H,020E4H,02923H,03DC3H,041E4H,031A1H + .word 039C2H,04A27H,0528DH,05A8FH,0526DH,04E74H,06739H,06F5CH + .word 01D25H,01CE3H,02DE1H,052CAH,041E9H,05A95H,05675H,05677H + .word 05657H,035CBH,04A30H,04610H,03148H,020E3H,05AB1H,05231H + .word 05A57H,02504H,02121H,05E76H,0396EH,02DC4H,05658H,05257H + .word 05256H,05656H,01CE0H,05A78H,05A56H,0396DH,02DC2H,05638H + .word 05636H,024E1H,05672H,05E57H,05A35H,05A37H,03604H,041E7H + .word 05674H,039A5H,05654H,035C6H,05A72H,05276H,05254H,049F4H + .word 03161H,04DF3H,04E36H,05EB8H,05ED7H,05E99H,05EB9H,05E98H + .word 05AB8H,05A98H,06716H,06315H,0316DH,062F4H,05AD3H,05A99H + .word 062B7H,062B8H,05275H,041D1H + +DKMUGC_P: + .word 253 + .word 00H,066D9H,0733BH,07359H,05A91H,045EAH,03DA7H,04E4BH + .word 039C8H,03185H,031A7H,02D86H,03A29H,04ACEH,0466BH,035C7H + .word 02504H,018A3H,01CC4H,018C3H,020E3H,024C5H,02926H,01063H + .word 01865H,0354DH,05A56H,062B6H,01CC7H,051F6H,07BBFH,07B7FH + .word 07FDFH,05EBAH,0106BH,018B1H,062DDH,07B3EH,06AFBH,072FCH + .word 07B3BH,07233H,05D2BH,0737BH,03166H,03E07H,02D85H,02DE6H + .word 029C9H,02944H,01884H,01065H,01846H,05EB7H,06EFCH,0731DH + .word 039AEH,0826H,0779FH,0671BH,018AEH,044FH,0890H,02515H + .word 06B5DH,0777FH,0733EH,07B5DH,06F1CH,0735CH,05AB3H,04A2DH + .word 02544H,03EAFH,03A4DH,03AA9H,01486H,018A9H,066B8H,045F4H + .word 04A3AH,039B6H,02D98H,035B9H,05ABDH,062F4H,03DE7H,039A5H + .word 025A4H,02E4AH,03A86H,03627H,01466H,02CEBH,06F19H,06F1BH + .word 0C2CH,01470H,06F1EH,0739CH,066D7H,05672H,0460AH,03A47H + .word 03647H,02E2CH,028CCH,066DAH,02D52H,06AF8H,05EB4H,02DC4H + .word 02122H,0290DH,06F5EH,04636H,039B2H,03E18H,062B4H,0526EH + .word 04668H,02924H,03152H,020D1H,084AH,0106CH,084EH,05A79H + .word 04646H,0470BH,01484H,01026H,088EH,0208BH,028AAH,024A9H + .word 05ACFH,04209H,03E45H,04AA9H,04F0DH,04AA5H,03605H,01483H + .word 01025H,01848H,02888H,034C8H,030A7H,01428H,05691H,03DE4H + .word 04226H,035E5H,02466H,051D0H,01829H,05692H,07B9DH,01449H + .word 01825H,01827H,0102BH,035C2H,01886H,049D3H,0842H,02469H + .word 0184AH,066BDH,041E6H,031A2H,052C9H,04644H,02963H,084CH + .word 042DH,062D3H,03E04H,01D02H,02D83H,042FH,046DH,06B16H + .word 04224H,04243H,01CE1H,014C1H,04A67H,03A01H,06718H,06F7AH + .word 04E2BH,014E4H,014C2H,03603H,039E3H,02542H,020C8H,04E31H + .word 020EAH,0739AH,05ED2H,04A68H,031C1H,03E02H,02541H,02582H + .word 0C70H,06B58H,05AD1H,01481H,045F9H,03E42H,01D25H,02526H + .word 062BAH,0631EH,02D46H,041EFH,03E81H,02D81H,04283H,03E41H + .word 0673CH,05ED4H,04A65H,02961H,06AF7H,052D2H,06313H,03641H + .word 0CC3H,06AFEH,02121H,03621H,05694H,05309H,025A1H,0290AH + .word 05ED7H,031A1H,04A27H,039A3H,0C84H,06AB9H,0526BH,05287H + .word 04A29H,05266H,039C1H,02DC2H,056B6H + +DKMUGD_P: + .word 255 + .word 00H,05CE9H,060ECH,071D3H,07F5DH,07FDFH,07B9FH,0779FH + .word 04A55H,0C69H,0874H,018D5H,0567AH,04632H,0146DH,06B3DH + .word 06F5FH,0777FH,05EFCH,0569CH,062FCH,05EF9H,035AEH,01064H + .word 0822H,01463H,018A3H,02905H,02D85H,031A2H,039E4H,04649H + .word 02DA0H,02963H,02D82H,02121H,02562H,02522H,035E4H,018C2H + .word 018C4H,07F3BH,07AFAH,04E59H,08AFH,0450H,0CB6H,05ABCH + .word 052B9H,020D2H,062FEH,05ADBH,035D1H,0424H,0824H,01466H + .word 018A5H,02505H,04227H,02561H,01081H,035C3H,018D1H,0C71H + .word 024F6H,0671FH,05F1DH,014AEH,04CH,02935H,06B3FH,0445H + .word 0C64H,01084H,02D66H,02DE4H,02DA7H,01D02H,014C0H,01D21H + .word 03E04H,03602H,02582H,0777DH,0739DH,042CH,06F5DH,052BAH + .word 01483H,02545H,02D65H,0631DH,04E99H,014A6H,01CC7H,01925H + .word 0CA2H,03666H,03644H,03A64H,04678H,052DBH,0675EH,05EBBH + .word 018E9H,03627H,02E04H,04AA9H,03EC8H,03AA5H,03A03H,0733FH + .word 04A3AH,0C6BH,028ADH,0186AH,03177H,0567CH,04E97H,020E9H + .word 028A7H,03DE9H,04687H,04647H,046C6H,042BH,0206CH,0248BH + .word 02CABH,034CAH,038CCH,086EH,01514H,039DAH,03E5BH,056FDH + .word 0252BH,04B29H,04307H,07B7FH,084DH,0828H,030A7H,0206BH + .word 044FH,0452H,035B7H,035A7H,03E66H,0530AH,03E42H,03601H + .word 07H,080AH,02489H,02467H,02CC9H,02CCAH,04DF0H,02CA8H + .word 01C48H,0106BH,01471H,0C93H,03184H,04244H,04EC7H,04684H + .word 04EA6H,039E3H,01049H,01827H,01425H,0890H,05EDEH,06AFDH + .word 05F1EH,02E01H,02DE1H,03E26H,03643H,04223H,014C2H,028H + .word 042FH,045FBH,052C9H,046C5H,035E1H,03A21H,04224H,04243H + .word 07B3EH,044BH,0C2DH,0C72H,0886H,02DC2H,0490H,01475H + .word 0214DH,0C46H,035C7H,02580H,03E81H,03A41H,02932H,05277H + .word 02DAFH,04A85H,04283H,04639H,01D12H,0CD1H,02990H,046C3H + .word 018E1H,056FEH,0463CH,020E3H,04A83H,02961H,04A7BH,02506H + .word 02509H,018A1H,04A65H,031A1H,039E1H,01D2AH,04261H,056B7H + .word 02923H,06EFFH,0571DH,03A32H,0733DH,052F9H,03A2EH,02584H + .word 062DBH,01D63H,01940H,029AAH,02D4AH,0462EH,039E6H,03168H + .word 0673BH,039A7H,041ECH,041CBH,056D2H,03661H,062F6H + +DKMUGE_P: + .word 255 + .word 00H,065AEH,0764EH,07252H,076D6H,07B1AH,07B5DH,07B3EH + .word 07B7EH,07B9FH,05EB9H,028A9H,0C29H,040AH,084EH,0144CH + .word 02829H,04446H,05424H,05803H,06823H,05044H,02422H,01023H + .word 01044H,01025H,0454EH,049D2H,034C9H,02825H,038A6H,0352AH + .word 0392DH,06A4DH,0779EH,0771DH,06699H,018AAH,06H,02DH + .word 04FH,02EH,084DH,03825H,05466H,05824H,03422H,01825H + .word 055D1H,0458FH,059AEH,0777EH,06F1EH,049D5H,0409H,08AEH + .word 0144AH,03849H,04C46H,0C21H,0C45H,0425H,01046H,01865H + .word 05632H,04402H,06045H,06424H,07B3DH,0292EH,082CH,01C02H + .word 01462H,07064H,07AAEH,07AD1H,07AF8H,05A79H,024CDH,04045H + .word 0C25H,01866H,05E55H,044A6H,06C65H,06E8DH,05637H,01026H + .word 06655H,06632H,04C05H,06027H,05026H,04C26H,05869H,06469H + .word 04DH,04C44H,04869H,054CEH,05532H,06DF8H,065D5H,05D74H + .word 055D6H,0807H,090H,050H,0C2FH,05E56H,0494AH,050ABH + .word 071C9H,069AAH,080BH,048AAH,05654H,0554DH,0773EH,072FDH + .word 06ADDH,06E6AH,06525H,05083H,01C00H,05A34H,04424H,06ABAH + .word 06EDAH,06EB9H,0654AH,0C46H,066B6H,072FBH,0592BH,05615H + .word 0608AH,034ADH,06679H,054A7H,0775DH,07FDFH,01C26H,02CA7H + .word 0564DH,05A36H,065D1H,04546H,038C2H,03971H,05C47H,066F9H + .word 01CA5H,02CC6H,07F30H,05E2AH,01420H,0656EH,086BH,018A3H + .word 06E8BH,07F0DH,07AC9H,04921H,066BAH,076B8H,02884H,059A9H + .word 044C1H,07F09H,07EA6H,06E03H,024C2H,04551H,072BBH,044CCH + .word 07A45H,05561H,020A5H,06047H,06175H,02511H,065C5H,02086H + .word 020C6H,066DBH,04A36H,055A6H,01C41H,01C63H,02927H,035B2H + .word 06DC2H,020C4H,02949H,06B3AH,072F9H,05865H,07A22H,06ED9H + .word 01D0EH,071E2H,05D82H,01441H,03547H,0458BH,0849H,07649H + .word 035CAH,039B5H,04A59H,0446CH,04E33H,046BH,04D86H,06E04H + .word 03D22H,048BH,01CC7H,02904H,01CC5H,05E9DH,066D2H,05AB2H + .word 018A7H,02DB0H,02D47H,029AFH,031CEH,02506H,02505H,05A95H + .word 014A5H,01D06H,02545H,045D8H,06825H,04E2DH,02D45H,029AAH + .word 02923H,03954H,0790AH,070A7H,06716H,0568FH,04A2BH,035A6H + .word 0362FH,01491H,06886H,02986H,0328CH,014F4H,06C66H + +DKMUGF_P: + .word 254 + .word 00H,03D51H,049B1H,05A56H,06676H,059D1H,0592EH,04889H + .word 04445H,069D5H,076DDH,06B1FH,062BCH,05659H,03549H,024E6H + .word 03844H,034A6H,02C23H,02C64H,02043H,01843H,01023H,0C24H + .word 0822H,0C44H,0826H,0C47H,088AH,0849H,024E9H,059A9H + .word 076D5H,07F7DH,03002H,02002H,01802H,05846H,06A79H,06B1DH + .word 06ADAH,02C43H,01044H,01487H,02929H,01D0AH,018C9H,01027H + .word 01C25H,0552AH,0652DH,07B3BH,044A5H,06424H,06445H,06845H + .word 064A6H,06C66H,07066H,0588AH,0771DH,0567DH,02C24H,0445H + .word 01D4DH,0294EH,014AEH,02025H,04C02H,079D0H,02401H,06C25H + .word 06823H,078C9H,05469H,07216H,07B3DH,06ABCH,0492DH,01043H + .word 01024H,02046H,05402H,06467H,076BAH,0733FH,02867H,039AEH + .word 014E7H,0404H,01028H,06027H,06449H,058CDH,048AEH,05EBDH + .word 062BFH,04572H,02445H,01844H,0466H,02DAEH,01827H,02826H + .word 05914H,05D31H,05978H,069D9H,059DAH,059DDH,0497AH,04977H + .word 044B2H,060CDH,062DDH,01046H,07B7FH,0737FH,07BBFH,06F5FH + .word 049B6H,05EDEH,04E5CH,06B3BH,01866H,01CC7H,06EFEH,06ABEH + .word 0775DH,05DF4H,04C49H,05EBEH,01484H,01D26H,06ADDH,066FFH + .word 045CEH,02526H,0886H,07FDFH,0779FH,064AAH,06551H,018A4H + .word 058A6H,0671EH,05A97H,01CC4H,03883H,05926H,058A3H,0316DH + .word 04E56H,04A59H,02993H,0CACH,02926H,04946H,04D02H,059CEH + .word 06A31H,05EDDH,05ABAH,039B1H,0673DH,03E34H,03526H,065AAH + .word 05A32H,065EDH,06A2EH,07672H,06EB2H,06EB6H,04632H,04929H + .word 040A3H,038CDH,03DF5H,01CA6H,02D47H,02147H,035A9H,045CAH + .word 04A2DH,030AAH,02524H,014E5H,029A8H,02C69H,02D85H,02565H + .word 0464AH,07B16H,076B2H,02026H,03C49H,0569DH,01D02H,035C7H + .word 03E0CH,02925H,018C2H,02965H,0654AH,03A48H,039E7H,02123H + .word 035C5H,03A45H,039A7H,03C4CH,06593H,04266H,046A6H,02542H + .word 02521H,02962H,031A5H,03603H,039E4H,03587H,0486CH,038F1H + .word 04A9DH,056BEH,05F1FH,01CF0H,028CFH,02DA3H,03E87H,035C3H + .word 028D1H,0246DH,049F9H,07679H,0675DH,03E12H,04AA8H,02141H + .word 04707H,02961H,03DB9H,056FEH,01D80H,0798FH,07086H,056DCH + .word 06F9FH,02555H,02EH,0C93H,06F7DH,02551H + +DKMUGG_P: + .word 251 + .word 00H,03929H,02002H,01802H,01022H,0C22H,01867H,02929H + .word 014C9H,0842H,01044H,018A6H,0442H,01443H,0841H,0550AH + .word 03023H,01C21H,028AAH,0820H,028C5H,01CA3H,05D6BH,064C9H + .word 0294DH,02926H,0614AH,05D09H,0454AH,03001H,02C23H,01844H + .word 04A32H,049CDH,0445H,0845H,01843H,03D88H,020C2H,04CA6H + .word 04022H,05442H,05863H,058A5H,03843H,02449H,038EDH,05635H + .word 06F3AH,066B5H,05A2FH,059CBH,03947H,049A9H,04566H,05E09H + .word 0696DH,0596CH,048A9H,04845H,064C5H,06CA4H,078C4H,0756AH + .word 075CEH,05906H,02421H,02067H,03571H,07FBFH,07B7EH,07B7DH + .word 0777AH,07AD2H,0866H,0446H,06A4DH,0662AH,06626H,058E8H + .word 05045H,06084H,068A3H,070A2H,074C3H,07526H,07E4DH,07DC9H + .word 07124H,06905H,01829H,06EDAH,07FDFH,0775DH,034A6H,07377H + .word 05E27H,064C6H,078C3H,07D45H,07E0BH,07523H,01824H,01C26H + .word 028CDH,077BEH,0773DH,05611H,0825H,01024H,01001H,0612BH + .word 059AEH,06529H,06CC5H,07D26H,07D67H,0565AH,0407H,0826H + .word 06F17H,05D2AH,07D24H,07DA6H,07DA5H,04843H,0352DH,0C4BH + .word 0425H,061ADH,06929H,07DC6H,03427H,0403H,02CH,04DH + .word 045D1H,0885H,0556BH,05529H,061AEH,03024H,02BH,04FH + .word 028H,018ACH,0487H,0887H,07062H,07DC5H,02804H,059F6H + .word 04AH,0468H,065CFH,05C81H,03CCBH,0779DH,02EH,0C29H + .word 06C63H,04401H,03C03H,04E35H,0868H,05861H,044CDH,080CH + .word 05844H,04801H,065F5H,05AB7H,04822H,05423H,02C67H,04551H + .word 08A8H,06864H,06C23H,06443H,02427H,0C0AH,05001H,05C03H + .word 04C8H,04A9H,069ABH,06841H,06421H,06003H,02424H,05AB8H + .word 02043H,065EDH,06969H,071H,08AAH,0CEBH,02C64H,02044H + .word 07883H,04043H,03DB2H,03444H,02C43H,07A8FH,07F9DH,01066H + .word 02D51H,091H,08FH,08C9H,03463H,03447H,06A58H,076FCH + .word 06087H,05571H,030H,0150BH,03844H,05868H,0150CH,04AAH + .word 069F1H,0102DH,03468H,06653H,076DAH,0777EH,072H,05C04H + .word 05066H,06D8CH,06DCFH,086FH,05405H,03C24H,0773EH,07B3EH + .word 0696BH,071F0H,06A56H,06DAEH,07B3CH,01426H,07211H,03596H + .word 04E3AH,056BDH,041B5H + +DKMUGH_P: + .word 255 + .word 00H,01CC5H,024C5H,0C43H,0424H,0445H,0823H,01044H + .word 01CC6H,01883H,0801H,01463H,018A5H,0C41H,0422H,0442H + .word 01886H,01422H,01802H,028E5H,0C45H,020E6H,01441H,01801H + .word 02D27H,02D04H,024C3H,02509H,049A9H,04DA6H,045A6H,03968H + .word 03124H,03523H,02D02H,03126H,03D6EH,03DAEH,01C42H,02422H + .word 06649H,05E09H,055E9H,0560BH,051C7H,04DC6H,049A4H,04565H + .word 03945H,028E3H,0C24H,0312AH,0354AH,02444H,02C03H,03002H + .word 06E8AH,06A6DH,051EAH,02CA4H,038E7H,0622DH,055C4H,051A5H + .word 0354DH,02507H,01401H,02C24H,03024H,03803H,04002H,0562CH + .word 020A4H,0867H,01848H,0392CH,06A90H,05E06H,04DC5H,01466H + .word 02424H,03044H,0664AH,0848H,0C4AH,024A9H,06271H,059E9H + .word 04584H,0400H,01024H,01C24H,02401H,03C01H,04401H,0626EH + .word 014A7H,0668FH,03D85H,0826H,0447H,0426H,02C44H,04168H + .word 072D1H,03927H,03D47H,059E7H,02843H,06A27H,020A3H,04802H + .word 01485H,06E49H,04844H,06629H,059E5H,01C60H,01C44H,02443H + .word 02820H,02061H,01826H,03D89H,0828H,0449H,0428H,01027H + .word 03400H,03063H,04443H,03C63H,038C4H,05546H,03CA5H,02C82H + .word 072ACH,048C1H,054C6H,040C6H,0252DH,04D44H,076ABH,07E66H + .word 065A2H,03860H,04843H,049D2H,03881H,06A29H,07E87H,07E23H + .word 060E6H,04A16H,056D7H,046AH,05DA6H,07AADH,07E21H,07E25H + .word 07A68H,03DB1H,077BEH,0726AH,07EEBH,07E65H,07E43H,07226H + .word 05064H,028EDH,06F5CH,05F1AH,014A9H,05984H,07ECCH,05AB9H + .word 0C88H,07E89H,07E85H,05522H,05003H,0777DH,035B6H,07B0DH + .word 0350DH,0737EH,06F3CH,03440H,066F9H,0673FH,0394AH,04526H + .word 07646H,07B7EH,07739H,055A6H,06F3AH,0671CH,049CFH,04D24H + .word 07229H,06DC6H,01847H,05212H,07668H,054E2H,04926H,07625H + .word 04C20H,0465AH,04A9BH,04ABCH,03E15H,0206AH,02027H,05148H + .word 0724CH,07A8AH,04441H,035F8H,03E39H,0465CH,056DEH,05EBFH + .word 0567AH,03972H,02067H,03085H,034C5H,05ADDH,05F1EH,056BEH + .word 05EFEH,056DDH,062DFH,05A9DH,034A6H,02087H,03D6DH,065E8H + .word 07689H,07E28H,07B98H,05DCCH,0567EH,06F5FH,06B3EH,045B5H + .word 02C87H,0AH,0660BH,0768EH,07AAFH,03CA7H,03C44H + +SMMUGA_P: + .word 254 + .word 00H,07F3DH,07F5DH,07F9DH,07F1DH,07EFDH,07EDDH,07EDCH + .word 07EBCH,07EDBH,07EDAH,07F5BH,0416AH,01864H,05635H,04633H + .word 01CC9H,0252CH,04E95H,03E31H,0360FH,01486H,024E6H,0352AH + .word 04DF0H,03129H,028E8H,039ACH,01CA6H,024E8H,020A6H,02CC7H + .word 03929H,04D4AH,0516BH,05D8CH,0596AH,0598BH,061ADH,061ACH + .word 069CDH,06DEEH,069ABH,069ACH,07F3CH,07F9EH,07F5EH,07F1EH + .word 07F3EH,07EFCH,07EF9H,07275H,02444H,04DCFH,01C85H,0C44H + .word 035D1H,02DD1H,0252BH,02D2AH,05A73H,041AEH,04610H,020A5H + .word 0516CH,061CDH,0618BH,065ADH,065ACH,05D8BH,07AFCH,07235H + .word 069F1H,02865H,01423H,01465H,01466H,014A9H,0294FH,0256FH + .word 02D8FH,02D4AH,05674H,05EB4H,02D6CH,0354CH,0498BH,065CEH + .word 05DABH,0556AH,0514BH,0514AH,04508H,02423H,01C66H,024EBH + .word 03DD0H,03DB0H,04A11H,05210H,05A51H,030E6H,01001H,02D08H + .word 02D09H,01863H,03107H,03D07H,04528H,0558DH,0598AH,07B3CH + .word 05DF2H,02CA6H,06AF7H,06273H,028A5H,0356AH,0558BH,05149H + .word 04D49H,07F1CH,07EFEH,076FAH,06EB7H,06275H,07718H,072B7H + .word 07B7CH,06AB5H,03CE8H,03D2AH,0396AH,02D29H,049ADH,05DCDH + .word 07B3DH,07656H,07E99H,040E8H,03949H,034E8H,0412AH,0618CH + .word 07AFBH,05DB1H,034A9H,034EAH,024C5H,059ABH,04529H,04549H + .word 076B9H,05D8FH,03CE7H,05D8AH,0516AH,076D9H,03085H,04929H + .word 0556EH,040A9H,0556BH,04129H,07E9AH,06E36H,038A7H,0558FH + .word 06A73H,05E2FH,07E9BH,07E7AH,0492CH,0394CH,07E79H,01802H + .word 041ACH,055EFH,07F5CH,07EBBH,07ADBH,06E35H,04128H,07F9CH + .word 07E9CH,07EBAH,02425H,028A8H,04108H,02908H,06234H,03046H + .word 04589H,02D07H,0418BH,07EBDH,07A56H,0512DH,0456CH,04DAEH + .word 03549H,02929H,02508H,01CC6H,07636H,03147H,018A3H,04D2BH + .word 069F3H,048EAH,041CDH,039CCH,0358AH,0398AH,02507H,02D28H + .word 028C5H,07EDEH,04DEDH,02905H,035A9H,02928H,07F1BH,06E56H + .word 02D69H,07E5AH,07A9AH,06613H,039CEH,041EFH,0358CH,01CC5H + .word 07E7BH,061D1H,065F3H,06570H,04D4CH,07EFBH,07EBEH,07E9DH + .word 07638H,06DF4H,06591H,07A39H,07E5BH,07A3AH,07A7BH,07F7CH + .word 07F7DH,07FFFH,07B5CH,07EFAH,07F3BH,07F1AH + +SMMUGB_P: + .word 251 + .word 00H,06DACH,069ABH,06DCDH,071EDH,065ACH,071EEH,065CDH + .word 06E0DH,06E0EH,05DECH,05189H,04D8AH,04149H,03D69H,03107H + .word 03128H,02D07H,020C6H,024C6H,024C7H,02D29H,0354BH,03D8CH + .word 0312AH,0396BH,0314AH,0356AH,041ADH,05E10H,05DB1H,07B1CH + .word 07F1EH,07EFEH,06A7AH,04190H,0310CH,024E8H,0596BH,05949H + .word 061ABH,05D8BH,06DEEH,0518BH,04949H,04D89H,04589H,0458BH + .word 03508H,028E7H,028E8H,01C85H,020A5H,045EEH,0354AH,03D8BH + .word 03129H,055CDH,0596FH,07F5DH,0516AH,059ACH,055ADH,0496AH + .word 02D09H,02909H,020A6H,0396CH,0316AH,02D4AH,03549H,05D70H + .word 07B3DH,05149H,04929H,04DACH,04129H,03529H,030E7H,0358BH + .word 0356BH,03929H,06191H,0456AH,03108H,02D49H,024E7H,02D2AH + .word 0558FH,069F3H,07AFCH,03528H,045CDH,020E6H,0316BH,055EEH + .word 028E5H,0392AH,02908H,02D08H,0520FH,06A13H,0452BH,03109H + .word 02929H,0314BH,02928H,020C5H,05DD1H,061B2H,07B1DH,07EBEH + .word 02D28H,04DCEH,06A3AH,04170H,024E6H,02507H,0356CH,0456DH + .word 0556FH,06E15H,0414FH,03509H,02508H,020C7H,0358CH,02D6CH + .word 03D2CH,07659H,024A8H,01CC5H,07699H,01CC6H,01CA5H,020E7H + .word 061D2H,07AFBH,07EFDH,01CA6H,018A5H,01886H,01C86H,06DF5H + .word 07F1DH,07EBCH,01CA4H,01885H,01C87H,03589H,03D89H,0516DH + .word 07257H,030EBH,01884H,018A6H,014A6H,07EDDH,030ECH,07617H + .word 01864H,01485H,030E9H,04DAFH,07235H,07A9BH,01465H,014C6H + .word 01CA7H,07A79H,061D1H,06571H,01866H,01466H,0496DH,07E7CH + .word 07E7EH,07A57H,07E5BH,07E7DH,01463H,07E5CH,06A18H,01887H + .word 0252AH,05DD2H,071F6H,07E19H,07DF9H,07E5DH,01863H,065D5H + .word 07A17H,07E1AH,07E3CH,055D0H,05570H,07239H,07DFBH,07E1BH + .word 07E3BH,018A7H,07A3AH,07A1BH,01C84H,07E3AH,05190H,079F7H + .word 069F8H,018A4H,04D6EH,069F7H,03CE9H,0452CH,07A1AH,07DFCH + .word 0412EH,06DB4H,04D2DH,0512DH,06E17H,0763AH,07A3BH,065B4H + .word 059AFH,06614H,05DB3H,071FAH,071D8H,0765BH,07A5CH,07EDCH + .word 07ADCH,076BAH,06A59H,0775CH,0775BH,0773CH,0771BH,07719H + .word 07F3DH,05A15H,07B3CH,07B1BH,076FBH,07AFDH,07F1CH,07EFCH + .word 059F4H,07ED9H,07EB9H + +SMMUGC_P: + .word 253 + .word 00H,07EFCH,07F3CH,07F5CH,07EDBH,07E77H,04CEAH,03865H + .word 04D2FH,06E55H,0452BH,03CC8H,030E7H,0416CH,055ADH,03507H + .word 028A5H,01C83H,020A3H,024C7H,028C7H,034E8H,0554CH,05DACH + .word 05D6CH,0594BH,0512AH,04949H,04D4BH,0514BH,061ACH,06DADH + .word 06DCDH,061CEH,0720FH,079EEH,079EDH,07E0FH,07E30H,07E51H + .word 07E99H,0592DH,040AAH,059D0H,038A6H,040C7H,06A30H,06E0FH + .word 07250H,07630H,061CDH,048E7H,04909H,04509H,071CDH,071ACH + .word 07E0DH,07E79H,06DD1H,040E8H,065AEH,07E72H,05929H,04886H + .word 05109H,0492AH,07E92H,0656AH,07B3AH,07A16H,02865H,044ECH + .word 05DAFH,048E8H,069EEH,0592BH,0616EH,069AEH,0720DH,07EBBH + .word 04D6CH,075CEH,040A5H,03CC7H,07EB4H,07A4FH,0552CH,03908H + .word 06A73H,065ABH,07F9CH,07212H,040A8H,04DCFH,062D6H,07294H + .word 0598BH,03CA5H,05D6EH,07E74H,04D8CH,076D5H,07292H,04D27H + .word 07EBCH,07635H,0392AH,0394CH,04D8EH,034A8H,03CEAH,075F2H + .word 0456BH,051CCH,03D68H,02D07H,05651H,05EB5H,05672H,0562FH + .word 040A7H,03CA8H,0398AH,066B2H,05AB1H,02D28H,01843H,028E8H + .word 034A7H,0492CH,04D6EH,044EBH,07E32H,06610H,01C85H,01CC6H + .word 06F16H,05631H,0C22H,01C66H,024C8H,055AEH,0518BH,01865H + .word 020A8H,020A6H,03D4BH,07B36H,07EF5H,07A97H,02485H,01887H + .word 01486H,0294DH,05EF7H,05F17H,0442H,01465H,045CDH,05DCDH + .word 059CEH,06E33H,041AEH,03E32H,01D2DH,018C9H,04655H,056D7H + .word 05F18H,0421H,06B19H,05A51H,049ABH,050E9H,03484H,05A75H + .word 035D1H,03A55H,029B2H,04A96H,031CFH,04652H,0294AH,066F9H + .word 0418CH,0516EH,02DB4H,035F5H,04ABAH,05AD8H,07FFFH,049F1H + .word 020AAH,0358CH,05EB7H,049CDH,0352AH,06F5CH,0779CH,02D8EH + .word 01D08H,01024H,0779BH,03509H,05695H,01466H,024CAH,028A6H + .word 072D7H,030EAH,0737CH,06F9AH,02529H,0212AH,05A53H,03D8DH + .word 0354BH,028A8H,0318EH,03DEFH,051EEH,01463H,041CEH,05232H + .word 02D0AH,076F8H,01022H,03DAFH,01823H,01021H,0C65H,04A0DH + .word 04E93H,031CDH,01C21H,06E70H,07A91H,05E10H,024C4H,07F1EH + .word 07696H,07ED3H,028C4H,06252H,0C43H,04E2BH,07EFEH,06311H + .word 01CC5H,028CBH,06F9DH,03A0FH,0C86H + +SMMUGD_P: + .word 250 + .word 00H,07E70H,07E71H,07E92H,07E91H,07EB2H,07ED2H,07EF3H + .word 07F13H,07F57H,07F96H,07F14H,07FBBH,0660DH,044E7H,03063H + .word 0556AH,072D6H,07F79H,03083H,06E32H,06EF7H,03929H,01065H + .word 014A7H,01CA7H,02D2AH,024E9H,024C7H,02508H,02909H,03129H + .word 04D6DH,06614H,07F5DH,07F5FH,07F3FH,07F1FH,06A9AH,04190H + .word 0312CH,07EF2H,07F54H,07E50H,069EDH,05D6BH,06E31H,07F36H + .word 07ED3H,07E0DH,07AD6H,044C3H,048C7H,07EF9H,06EB5H,01443H + .word 020A6H,02929H,02908H,02D08H,0454CH,065F1H,07EFAH,07DEDH + .word 07EF4H,075ADH,07149H,07230H,050E6H,06E52H,07F5AH,01083H + .word 01CC8H,02D29H,0392AH,059AFH,07677H,07E51H,07E2FH,07E93H + .word 0798BH,07DEEH,07EB4H,07273H,07F39H,06ED5H,0C42H,02D4AH + .word 01CC6H,02D09H,0558EH,07655H,07EB3H,07A51H,07A30H,07A71H + .word 07A93H,076D4H,06E92H,05DCDH,034E7H,0314AH,076FAH,07F1DH + .word 07EFFH,07E4FH,07670H,06DEEH,061ADH,05D6CH,0518CH,028E8H + .word 0356CH,0398CH,0316BH,0314BH,0312AH,0416AH,05DD0H,076B8H + .word 06A7AH,065CDH,051ABH,0394AH,02D49H,0396CH,0396AH,03D4AH + .word 06E35H,07E72H,07A50H,03507H,028C6H,0396BH,0356BH,0354AH + .word 03549H,0398BH,03DADH,04DACH,06A0FH,05DCEH,0354BH,03DCEH + .word 039ADH,0398DH,03D8CH,03D4BH,05DB0H,07B1BH,051CCH,02D27H + .word 01C84H,03DCDH,0662FH,01C83H,02D28H,02507H,03D6BH,075EFH + .word 07A92H,02CA5H,0356AH,039AEH,0358CH,041ADH,06631H,07AD3H + .word 07735H,07AD2H,07691H,04169H,05E72H,06273H,07716H,076D2H + .word 0764FH,0562DH,020C5H,02928H,0492BH,05DACH,0498AH,028C5H + .word 0358BH,0316AH,07EB8H,038E8H,05D8BH,069ABH,0762FH,04929H + .word 045CDH,03969H,0496AH,07A97H,03D8DH,03DACH,039ACH,07233H + .word 04109H,061EFH,0418BH,03D6AH,0556CH,049CDH,076B3H,05E0FH + .word 049EEH,07F3EH,04949H,06E50H,075CDH,06E4FH,049CBH,045CEH + .word 07696H,07F1EH,0562FH,07234H,06A0DH,06E90H,05A0DH,049AEH + .word 07AB3H,030E8H,069F1H,04A0FH,0762DH,07AB2H,04D89H,05A30H + .word 059CBH,05230H,05E70H,076D9H,04A10H,0626FH,051EFH,07A70H + .word 028A6H,06632H,065D2H,04189H,065B1H,07B3EH,071ABH,06DACH + .word 061ABH,055CBH + +SMMUGE_P: + .word 253 + .word 00H,02D2BH,039AEH,041F0H,05633H,04DAFH,0496BH,0514AH + .word 0596BH,05D8BH,04129H,02CA6H,024A6H,024A7H,01466H,01465H + .word 01886H,01866H,01865H,018A7H,01CC8H,020C8H,01887H,01045H + .word 01C86H,01C85H,01885H,020A6H,01C87H,01CA6H,01CA5H,02908H + .word 03D8DH,04A31H,041EFH,02D4BH,01CC7H,02D4CH,039CFH,0416CH + .word 0454AH,04D2AH,05DACH,04949H,04D29H,0452BH,034E7H,02086H + .word 01066H,01486H,01CA8H,020A7H,01CA7H,024C7H,018A6H,02508H + .word 01044H,0358DH,0354DH,0314BH,03509H,0556CH,05549H,044E7H + .word 02CC5H,020A5H,01864H,01884H,024C8H,01C84H,05274H,0352AH + .word 02487H,03D2AH,04D4CH,0618CH,030E9H,020A8H,0250AH,01445H + .word 020C9H,062D7H,04611H,04612H,024C9H,01C66H,028E8H,05D6CH + .word 03CE8H,028A8H,024EAH,01467H,05695H,024E9H,020E8H,02486H + .word 03929H,059CEH,038C7H,01464H,024E8H,04A32H,04E73H,034EAH + .word 05273H,01485H,02087H,014C6H,01867H,028C7H,03107H,020E9H + .word 014E8H,0214AH,0C45H,01064H,018A5H,01423H,01843H,01844H + .word 018A4H,01444H,01065H,03D4BH,01424H,0458DH,04D8BH,0558CH + .word 0518BH,02065H,065CDH,0C24H,055EFH,06A71H,07274H,07273H + .word 040E9H,03D6CH,0498DH,05DCDH,06DEEH,06E0FH,0412CH,01C65H + .word 01C45H,02066H,07E93H,07ED3H,07A73H,061ADH,04549H,061ACH + .word 069CCH,06DEDH,0762FH,07A0EH,059B2H,05634H,05A75H,049CFH + .word 07231H,07ED5H,07EB7H,07F18H,07651H,069CDH,076BAH,072B9H + .word 06AB8H,0731AH,0458EH,07ED6H,07F9CH,04907H,065ABH,07EDBH + .word 07EF9H,07F3BH,055F1H,024E5H,02907H,01463H,07E94H,07F17H + .word 07F78H,048E7H,065ACH,071EDH,069ADH,071CCH,071CDH,06DECH + .word 06DCCH,075EDH,07E4FH,07E50H,07EFCH,059F1H,01483H,01CA4H + .word 03149H,0C43H,03CEAH,07A11H,06DCDH,071EEH,075CDH,075CCH + .word 079EDH,07E91H,06612H,02023H,05529H,071ECH,07F3CH,02C65H + .word 01823H,01845H,065AEH,065CEH,05969H,065ADH,07E76H,065B0H + .word 066F8H,0558FH,079EEH,0698EH,071F2H,03885H,05E93H,01841H + .word 01001H,071ADH,075AEH,07EB9H,07614H,03CA7H,038A8H,0658CH + .word 0658DH,07A35H,071B2H,03067H,05DAEH,0616BH,0618DH,07F5CH + .word 07A13H,048C8H,03024H,061F2H,028A5H + +SMMUGF_P: + .word 254 + .word 00H,01886H,02D09H,024C7H,020C5H,020A6H,02509H,028E8H + .word 03529H,028E7H,024E9H,020A5H,03549H,0452BH,055ADH,05DCEH + .word 06E12H,07235H,07636H,071F5H,07677H,069B2H,065B3H,07AFBH + .word 07F1FH,07EFFH,06A59H,0418FH,0312CH,01C88H,01466H,028EBH + .word 045F1H,01486H,01CC6H,0396CH,0356AH,02D2AH,0294AH,03D8CH + .word 0396AH,030E8H,0498DH,0558FH,059AEH,069F3H,07A36H,06E17H + .word 06173H,0765AH,07EFDH,014A8H,05254H,03DF0H,0823H,01866H + .word 028A7H,03929H,0458CH,0520EH,04A0EH,049CCH,045CCH,03989H + .word 03127H,0458BH,03D49H,0452CH,065D2H,06DF4H,05D71H,07EBDH + .word 0C44H,06718H,0C43H,01885H,0310AH,0392AH,04D4DH,06A7AH + .word 04190H,04E73H,014E7H,01465H,0414AH,01865H,0456DH,059B0H + .word 06A14H,06171H,06DF6H,07A9AH,062F7H,035CFH,0318CH,02907H + .word 02CC5H,03D8BH,02C85H,05DD1H,0596FH,0550FH,06A9AH,05696H + .word 05294H,03A10H,0CA6H,04DAEH,06612H,03D0CH,059B3H,07F1DH + .word 06F3AH,04212H,056D6H,030C7H,04129H,0598DH,0556EH,06614H + .word 0771DH,07F5FH,0354CH,04E33H,06759H,01485H,04149H,055ABH + .word 061EFH,069F1H,07ED9H,066FAH,05EF9H,035AFH,0804H,020A8H + .word 05A54H,04DCBH,0498BH,0494BH,07AB7H,066D8H,07B9DH,01CE8H + .word 07B1BH,05EB5H,05AB6H,04611H,05E53H,06E56H,07FBEH,049CEH + .word 06F5AH,0252AH,0402H,072BAH,0516BH,06A72H,06AD6H,072D9H + .word 0598BH,05A30H,065CDH,061AEH,06AD5H,05A2FH,07E4FH,0720DH + .word 065ACH,061ABH,0596BH,0492AH,040E8H,02043H,01863H,05E2DH + .word 07314H,055EBH,059EBH,069EFH,07630H,040E7H,07232H,06651H + .word 072F5H,0622EH,07E91H,07E71H,0764FH,02C63H,072B6H,07F18H + .word 07EF6H,07EF4H,055CFH,03CE8H,06292H,072F3H,05DCDH,07F5DH + .word 06A0DH,0552AH,06E10H,07F16H,07F35H,07EB2H,07291H,03CE7H + .word 01823H,02065H,06A91H,07ED3H,04D06H,04CC6H,07273H,07F7BH + .word 07E72H,07F57H,07AB4H,07270H,06548H,06E0FH,07F78H,07E2FH + .word 075CDH,072B4H,051CDH,06E95H,0762EH,07FBBH,07293H,065F1H + .word 07A10H,05509H,06DADH,0C66H,07298H,07F13H,07EF1H,0656BH + .word 0596CH,04085H,07B99H,06230H,050E8H,07737H,07759H,01023H + .word 076DAH,07F55H,034A7H,05D2BH,06E92H,07FFDH + +SMMUGG_P: + .word 255 + .word 00H,020E8H,01485H,0C63H,01063H,0C01H,01483H,01885H + .word 01C83H,020A5H,01CC7H,014C7H,01486H,01CC8H,020C7H,02507H + .word 02509H,03D8DH,01465H,0C23H,0C64H,01061H,02D4BH,0252AH + .word 0C41H,020C5H,02D49H,0318BH,0314BH,0316CH,041AFH,02D09H + .word 0318DH,041CFH,0252CH,035CFH,0254CH,0296CH,0318EH,039CFH + .word 04DCFH,04DAFH,0416DH,03109H,02CE7H,020A6H,01886H,04653H + .word 052B6H,04EB7H,04676H,056D6H,052B5H,04210H,0418DH,05673H + .word 062F7H,06719H,04D8DH,049F0H,04E11H,030E9H,028E8H,01865H + .word 01866H,018AAH,02D8DH,03E31H,01843H,06F7DH,077BEH,06B7EH + .word 0675CH,05AFAH,05F1BH,06B5BH,05F19H,06F9CH,0C66H,05A51H + .word 07BDDH,07BBCH,03D6CH,05632H,0312BH,01466H,018EBH,04235H + .word 03E34H,0216EH,0CE8H,014A8H,020A8H,01CA8H,05255H,0673AH + .word 06F9EH,0677EH,05F3CH,0779DH,0258DH,0486H,0292AH,028A6H + .word 07318H,07FFEH,041F0H,04E32H,04632H,04A55H,03DF3H,0292CH + .word 039AEH,0675BH,04675H,014EAH,014C8H,01023H,04E53H,062F8H + .word 0679DH,04695H,055AEH,04DB0H,05E32H,02CA8H,01D2BH,0CA8H + .word 0C85H,04AD7H,025AFH,0152BH,024EAH,059F0H,05E10H,0392AH + .word 035B0H,0C86H,05ED7H,04E95H,031D1H,06253H,051CEH,03D8BH + .word 02D8EH,035D3H,06B3AH,06B39H,06737H,05ED5H,04A71H,04651H + .word 06F78H,059CEH,0456BH,01D2CH,03E33H,03DF0H,05693H,04E0FH + .word 045CCH,02D47H,04E0CH,06232H,0494BH,03D09H,028A5H,02D6EH + .word 0737AH,07379H,06B57H,06AD3H,03549H,04189H,049A9H,059AEH + .word 05E53H,0518DH,0452AH,05EB5H,05650H,03D6BH,03127H,0460FH + .word 03DA9H,051EBH,038E8H,01823H,01824H,0254BH,02907H,04DCBH + .word 0560BH,01D09H,05A0CH,055F1H,04592H,03D69H,0352DH,04569H + .word 049ABH,01469H,01CCDH,02910H,03552H,0314FH,031B3H,04E9AH + .word 05ABCH,066FDH,041F2H,018C5H,01509H,029ABH,049EDH,04D6DH + .word 04236H,02D90H,01D4BH,059ADH,0556CH,03E56H,0518BH,03610H + .word 02549H,062F5H,030E7H,0CC7H,05210H,0418BH,03E51H,06EF6H + .word 05DCDH,065EEH,0660EH,06A30H,06230H,06ED5H,072F5H,07737H + .word 06DEDH,0764EH,076D1H,07B13H,061ADH,06DEEH,07652H,06E0FH + .word 03D07H,04109H,055F2H,0514AH,04928H,040E7H,038E7H + +SMMUGH_P: + .word 251 + .word 00H,02529H,01CC7H,01485H,01C85H,01C83H,024A5H,024E5H + .word 0318CH,02D6CH,0294BH,01CA6H,028A5H,02CC5H,030E5H,030E7H + .word 03127H,0252AH,01CE9H,041EFH,04210H,039F0H,035CFH,0312CH + .word 0312AH,030EAH,030E8H,03D27H,04127H,04128H,04169H,04189H + .word 06338H,06B39H,06B5AH,0675AH,0673AH,062F8H,05EB7H,05674H + .word 05253H,05651H,05E31H,06611H,061F1H,069F0H,069EFH,06A2DH + .word 06A2FH,06A4EH,0664DH,051CAH,07FBCH,07FFFH,077DEH,0779CH + .word 0777CH,07B5CH,07EFCH,07F1CH,07EBAH,07E7AH,07A75H,07E90H + .word 07E8FH,07ED1H,07FBBH,07FFDH,072D8H,07674H,07A93H,07A71H + .word 06A4DH,0779BH,07718H,07672H,02D07H,01063H,0771BH,07ED9H + .word 07ED3H,07B9EH,07F3BH,076B7H,07EB4H,0622CH,028C7H,07758H + .word 07735H,06ED0H,066B1H,07F5AH,076F6H,0620EH,07757H,05E8FH + .word 06A91H,0666EH,05A0BH,07B77H,07B19H,07EB6H,06253H,024E8H + .word 0560DH,05E4DH,06A8FH,072B1H,05E0CH,072F3H,041F0H,0316CH + .word 059EBH,07713H,07B75H,07FD9H,07F79H,07FDBH,06B3AH,0356AH + .word 024C7H,049A9H,0668EH,07716H,0777AH,07B37H,07B99H,020A6H + .word 051C9H,051A9H,04547H,049AAH,055ECH,072F1H,06AF7H,0418FH + .word 03947H,0458AH,04DCBH,03928H,0562EH,0416AH,059ECH,06F13H + .word 06A74H,0416CH,03129H,03D89H,041ACH,03549H,02D08H,03DACH + .word 045CCH,04DCCH,04E0FH,04E0DH,02505H,06EF2H,0520BH,03567H + .word 03D49H,06EF4H,07A73H,06E30H,05E4FH,05E2EH,0564DH,0566FH + .word 045CBH,06670H,059ABH,0760FH,065EEH,03D4AH,05A4BH,03D8BH + .word 02507H,04E50H,06EB2H,0518BH,061EDH,05DEEH,03D2AH,03105H + .word 07B34H,04E30H,04DE9H,07B13H,04DACH,0412BH,04DEEH,05E71H + .word 06292H,0358BH,03D6CH,055EFH,059ACH,07651H,07231H,02D48H + .word 07632H,028E8H,038E9H,0496BH,05DAFH,071F4H,07E76H,07635H + .word 07E78H,065F4H,03D2CH,0556BH,055ADH,07EB9H,07EBDH,06A37H + .word 0416FH,065ADH,06A38H,06A71H,07ED5H,06A59H,01C66H,06E72H + .word 07EDBH,01C65H,076B3H,04D28H,01CA8H,028A7H,038E6H,07294H + .word 04969H,01466H,0496CH,04190H,0556DH,07A35H,024A8H,02D0AH + .word 05190H,05DD2H,069F4H,07698H,06592H,07B1EH,07EDEH,06614H + .word 07656H,06E15H,069F3H + +ATTMTR_P: + .word 18 + .word 02CABH,07FFFH,06F7BH,06B5AH,06739H,06318H,05EF7H,05AD6H + .word 05294H,04E73H,04A52H,035ADH,02D6BH,02529H,02108H,01CE7H + .word 01084H,013A4H + +GLVHIT_P: + .word 25 + .word 00H,06FBFH,06FBFH,06FBFH,06FBFH,06FBFH,06FBFH,06FBFH + .word 06FBFH,0637FH,0573EH,046DEH,03E9DH,02E3DH,025DCH,0197CH + .word 0D1CH,04BBH,099H,077H,055H,034H,012H,010H + .word 0EH + +SALTP: + .word 7 + .word 0394EH,07FFFH,0739CH,06318H,05294H,04631H,035ADH + +ROPE_R_P: + .word 16 + .word 00H,07210H,06DADH,06529H,060C6H,05C84H,05821H,05000H + .word 04800H,04400H,03C00H,03800H,03000H,02800H,02400H,01C00H + +ROPE_W_P: + .word 16 + .word 00H,07FFFH,0739CH,06B5AH,06739H,05EF7H,04631H,05294H + .word 04A52H,035ADH,03DEFH,039CEH,0318CH,0294AH,02529H,01CE7H + +ROPE_B_P: + .word 16 + .word 00H,04EFEH,0427DH,03A3CH,031FBH,02DD9H,02998H,02177H + .word 01D36H,01915H,014F3H,010B2H,0C91H,0870H,084FH,042EH + +WRESCH_P: + .word 124 + .word 0318CH,07FF0H,07FD5H,07FE7H,07BB7H,07FC9H,07FACH,07B94H + .word 07FC0H,07BA9H,07BA0H,07772H,07760H,07F40H,06F49H,0772BH + .word 06F00H,06AEAH,076E0H,06AC7H,072C0H,066E0H,07280H,05EA0H + .word 06680H,05E85H,079E0H,0566EH,06E00H,06640H,05660H,05E40H + .word 06620H,069E0H,07540H,065E2H,065E0H,055F4H,05A20H,065A0H + .word 06183H,06560H,0598DH,06540H,06500H,05580H,060E0H,049C0H + .word 045C0H,05140H,058C0H,04D20H,03986H,0450CH,03D80H,04CE0H + .word 05480H,04108H,03960H,048C0H,05060H,03929H,04C80H,03540H + .word 04860H,03CA7H,038E4H,03CA0H,04440H,02D00H,04020H,02504H + .word 03C00H,028E0H,03046H,02C0AH,024E0H,03800H,03400H,03020H + .word 020C0H,02408H,02C00H,02800H,02420H,01880H,01C05H,01C03H + .word 02000H,01460H,01C00H,0C00H,0400H,06BBEH,05BDFH,0577FH + .word 02B3EH,01B1FH,04299H,016BCH,02E9BH,05275H,04A54H,0A7BH + .word 039D1H,05F7H,02DD1H,035AEH,02550H,0312FH,0290CH,0C08H + .word 07FFFH,07FFCH,07BFFH,0677BH,05F18H,052F7H,039EFH,01D6BH + .word 02529H,0CA5H,0C03H,021H + +LEX3P: + .word 124 + .word 07C1FH,0C85H,010A6H,0864H,0422H,0443H,014C8H,0843H + .word 00H,01D09H,029AEH,0216CH,01D4CH,084AH,056B6H,046D6H + .word 03E95H,03632H,0214BH,02DD0H,0575AH,03A74H,084DH,014CEH + .word 031CEH,04B39H,046F8H,0298BH,0215AH,04653H,014D6H,0215DH + .word 035F1H,0C92H,0191BH,0C8EH,02E10H,057BDH,01822H,045AEH + .word 02802H,05674H,045F0H,0635AH,0360FH,03403H,04823H,05423H + .word 06844H,01D3CH,038A6H,01C64H,048E9H,04675H,014DAH,03844H + .word 03CE8H,02864H,0392AH,07045H,06423H,05A33H,048A6H,05AF9H + .word 04824H,05424H,0592AH,0452BH,03D6DH,06D6DH,0712AH,070C9H + .word 07087H,014D1H,0C21H,06D2BH,024E8H,028A6H,06632H,0714CH + .word 0C9AH,068E9H,069F1H,0859H,0856H,0451H,054C9H,0537CH + .word 0C22H,0718EH,058A7H,018FCH,067BDH,0677CH,0C8AH,0299CH + .word 04F7CH,0C7CH,04678H,07611H,0361AH,055AEH,065AEH,0514DH + .word 06AD6H,029BAH,0496DH,04AFCH,06675H,039F9H,068A7H,07295H + .word 01D10H,01936H,02DF4H,0CB6H,02152H,02E0FH,03E9CH,03A5CH + .word 035B4H,068ECH,051F0H,073BDH + +RZR3P: + .word 127 + .word 07C1FH,0443H,0864H,0421H,0422H,0843H,010A7H,014C9H + .word 0C86H,01D0CH,0C85H,0294CH,01829H,01446H,065E1H,04942H + .word 024A3H,01423H,0823H,04925H,07660H,06E20H,059A1H,02886H + .word 01825H,028A9H,01C06H,02809H,02007H,01424H,01846H,06645H + .word 02C66H,048A9H,0444AH,03C0CH,0402DH,0342AH,0356AH,05546H + .word 061C4H,050E9H,048AEH,038A6H,061A3H,044C6H,02408H,0190AH + .word 05562H,02C0AH,02448H,07220H,05A06H,039ACH,059C9H,04A0EH + .word 055C5H,06623H,04DA6H,06601H,054E7H,03466H,03DCDH,03DEFH + .word 069E3H,06164H,02849H,069E1H,045C9H,0C24H,014C7H,0398AH + .word 06E41H,03DF0H,065C2H,0358DH,041EDH,04A0BH,05609H,04210H + .word 038C2H,02045H,034A9H,03E10H,03E0FH,05E03H,01045H,05128H + .word 06A22H,03C8DH,02447H,06643H,0316CH,07681H,04A52H,02463H + .word 01845H,02826H,04E51H,044C2H,0564DH,03921H,02D6BH,02865H + .word 035CEH,06A62H,02C6AH,048F0H,01CA1H,04D11H,02425H,076A2H + .word 06A83H,072E3H,03063H,04929H,04D2CH,01C87H,061E9H,0512DH + .word 04D82H,02D01H,06EC3H,03907H,06A84H,01085H,06683H + +SHN3P: + .word 127 + .word 07C1FH,010A6H,014AAH,0443H,0864H,0843H,0422H,0421H + .word 0C86H,0C01H,01422H,03402H,02822H,04802H,05403H,05404H + .word 05CC9H,0190AH,04426H,01D2CH,039AEH,0254AH,03E0FH,06B3AH + .word 066B6H,0590BH,0596DH,04651H,05487H,05DF0H,05AB6H,06252H + .word 06AF8H,0824H,05E52H,038C9H,0146DH,0146AH,0C27H,02452H + .word 049CFH,0C46H,02074H,01C71H,03825H,04509H,0C48H,05805H + .word 02D8BH,048A7H,05DAEH,03886H,05466H,024B5H,02D38H,03DD1H + .word 0306DH,0210FH,020EAH,03152H,028B2H,04848H,05C26H,024CEH + .word 03470H,02C4AH,018ADH,028F6H,03536H,03159H,034B2H,05027H + .word 01CD0H,0384AH,05867H,06654H,065D0H,04A5AH,02D17H,045F6H + .word 028D5H,045F0H,02C6EH,0644AH,041DCH,039BBH,04617H,05849H + .word 048AEH,048AAH,0446DH,034AEH,034F5H,02531H,028B5H,028B6H + .word 024D5H,024D6H,024B6H,044B1H,054AEH,04956H,045BAH,05512H + .word 058D1H,04E94H,0354DH,0688EH,0586DH,05EDCH,0686CH,0739CH + .word 01067H,03DDCH,02D8CH,05535H,04D78H,0614EH,04A5DH,06F7CH + .word 0618FH,060F2H,05DD4H,064ABH,0708EH,0706EH,0737BH + +UND3P: + .word 126 + .word 07C1FH,01D09H,018E8H,0C64H,0C85H,014A6H,0442H,0422H + .word 0843H,010A5H,0421H,018C7H,0212AH,0292DH,02D8DH,035D1H + .word 031CEH,02129H,014C6H,0296BH,03A32H,052D6H,04675H,0254AH + .word 01064H,014C5H,0298BH,04253H,05B39H,0675BH,04AB6H,056F8H + .word 05716H,0C83H,0360FH,049B1H,03D50H,024EDH,0C66H,014A3H + .word 020E9H,06B7CH,077DEH,06F9DH,06BBBH,02E0DH,03E54H,02DB0H + .word 018A6H,04693H,01063H,01D07H,04F17H,01CC4H,02149H,02D0BH + .word 024E3H,03545H,03543H,03989H,0394AH,02906H,018A4H,03D86H + .word 049AAH,05A2DH,05E26H,06669H,06AADH,06A89H,066D1H,04A2EH + .word 05A29H,05651H,0626DH,06E87H,049A6H,076C9H,072ECH,024E4H + .word 066D4H,05E8EH,05A91H,051E3H,055E6H,05675H,03974H,041B5H + .word 051EDH,06647H,03953H,055EAH,049ADH,0352EH,03112H,03553H + .word 076C6H,03550H,04163H,03D94H,03111H,0416AH,06B36H,04E09H + .word 061E8H,0C61H,0416EH,02D03H,04165H,07F07H,02CF0H,02D10H + .word 03931H,04171H,0821H,030F1H,07F09H,02D69H,0772CH,02929H + .word 07312H,028EFH,0822H,024EEH,028EDH,045A3H + +YOK3P: + .word 127 + .word 07C1FH,0C65H,010A6H,0864H,0443H,0C64H,0442H,0422H + .word 0C86H,0843H,0421H,021H,0822H,0C21H,01021H,02442H + .word 04463H,03042H,01C21H,0C85H,03463H,03C63H,02842H,014C8H + .word 02C63H,04884H,01C42H,04C84H,00H,01422H,02C42H,01C22H + .word 0844H,05084H,01H,010A7H,05484H,05D29H,03863H,04063H + .word 04484H,03484H,058A5H,0654AH,01D0BH,018EAH,01C85H,05884H + .word 01442H,06D4AH,054A5H,07DEFH,01086H,018C9H,014C7H,0863H + .word 01087H,05CA5H,0423H,04CA5H,07E73H,0400H,064C6H,0401H + .word 050A5H,02021H,04CE7H,04231H,03C64H,07E94H,05D4AH,03C84H + .word 03063H,03442H,02863H,06508H,02022H,0754AH,060A5H,07FFFH + .word 07F9CH,0658CH,054A4H,075EFH,0758CH,0842H,04C63H,0C42H + .word 07E31H,0865H,03C42H,03064H,06908H,054C6H,02C43H,0796BH + .word 02843H,04064H,044C6H,07DADH,06D8CH,024E8H,07EF7H,07F7BH + .word 05CC6H,068E7H,068A5H,07108H,02C64H,048A5H,02464H,05529H + .word 05083H,02C84H,02D8CH,0316BH,05C84H,01485H,02484H,0C43H + .word 04083H,02108H,038A6H,01D2CH,03CC6H,01C64H,010A8H + +BAM3P: + .word 123 + .word 07C1FH,0422H,0864H,0443H,0843H,0C86H,0421H,014A6H + .word 014C9H,02822H,01401H,05841H,02C20H,02840H,058A1H,0256DH + .word 0190AH,04064H,054E8H,0514BH,028C9H,04ED9H,04EDAH,035D1H + .word 04AB9H,0252BH,029AFH,03613H,046B8H,025B2H,04276H,02420H + .word 0445H,0CA8H,03656H,0356DH,024A6H,0467H,04CCH,0152EH + .word 0392AH,02440H,04697H,03DAEH,04441H,03420H,045B0H,038A5H + .word 02462H,01570H,01D91H,01DB2H,029F4H,02657H,010ECH,0C01H + .word 03A98H,02865H,0469H,0C22H,03A97H,0418FH,03C82H,01A35H + .word 048BH,01465H,01E13H,044C5H,054C5H,01615H,08C9H,0489H + .word 0198FH,011F4H,011D3H,0CCAH,068A1H,092FH,01191H,090AH + .word 02482H,01DD3H,04481H,01C83H,031F4H,0DD4H,034E8H,06841H + .word 04D07H,011B2H,04529H,03906H,05905H,01DD1H,0DB2H,02422H + .word 04CBH,070C1H,02842H,02151H,052FAH,06D01H,0571AH,046D9H + .word 08AAH,07122H,03D8BH,02E78H,02E98H,0146AH,05D03H,01C6EH + .word 01A36H,0C66H,03809H,0246DH,01E56H,0D70H,0424H,02A97H + .word 03278H,04C9H,0C24H + +DNK3P: + .word 127 + .word 07C1FH,0422H,0864H,010A6H,014C8H,0D4CH,0C86H,01821H + .word 02821H,03801H,04401H,0E54H,0B7FH,0B9FH,05801H,03845H + .word 02464H,04465H,01B9EH,0516CH,0175FH,01026H,0182AH,04DB3H + .word 0186EH,01071H,03071H,01492H,02CACH,03674H,0279EH,03B9EH + .word 01074H,01496H,034A6H,02B1AH,02B5EH,0529AH,0C70H,018BBH + .word 0314CH,084AH,0C6DH,02C82H,048A1H,04921H,054C2H,01DD6H + .word 01A9BH,03B19H,05642H,06EE5H,06F02H,07322H,06AA2H,02EDDH + .word 02D91H,014AEH,06F26H,06F29H,06E75H,06B3AH,056D6H,028A5H + .word 01F3BH,072C5H,06F32H,04A52H,072C2H,06F2DH,05522H,066FAH + .word 06B5CH,04AD6H,03881H,07325H,045C1H,03562H,055C1H,0373EH + .word 06A42H,0524BH,04A93H,0317BH,04616H,071B2H,0714DH,05612H + .word 06C8BH,04B19H,04946H,04C8CH,05A76H,020FBH,06EABH,049A6H + .word 05319H,04CE6H,0737BH,044F1H,0739CH,055C4H,07266H,058C6H + .word 061C5H,07262H,05126H,05B17H,06800H,04B7DH,07349H,047BDH + .word 07821H,0737CH,070C1H,078A5H,064A6H,071C1H,07521H,057BDH + .word 06867H,0639CH,05864H,06941H,068C0H,069C1H,06525H + +HRT3P: + .word 127 + .word 07C1FH,0864H,0422H,0443H,0843H,0421H,01087H,0C86H + .word 0C85H,01488H,01465H,0823H,018A9H,01CCAH,01CC9H,018AAH + .word 020EBH,014C8H,0210BH,0250DH,048CDH,054CEH,038ECH,034AAH + .word 024AAH,024A9H,05CAEH,064AEH,064CEH,02CAAH,0292DH,01085H + .word 03CABH,06CAEH,054CDH,06CCFH,05CCEH,0294DH,058ADH,044ABH + .word 06CF0H,018C7H,02889H,014C7H,06D11H,06532H,06530H,0452EH + .word 0352EH,024ECH,06D74H,05951H,0254EH,050ACH,06D72H,06DB5H + .word 028CBH,04950H,04991H,030CBH,064ADH,064F0H,06D0EH,06572H + .word 055B2H,07216H,06E15H,030C9H,071F4H,071D6H,06151H,06D93H + .word 06E58H,03089H,06D32H,071B6H,01885H,01C87H,02086H,02CC9H + .word 0552FH,07278H,05E15H,07194H,01468H,03468H,04469H,070CFH + .word 02846H,070F1H,07112H,06CF2H,07173H,06CB0H,07174H,01043H + .word 05CF0H,03067H,038CBH,07193H,0C66H,02868H,06CADH,024C9H + .word 07151H,054ABH,07131H,0498FH,0712FH,0350AH,0688BH,060EDH + .word 06CCDH,06D51H,03889H,0292EH,0294EH,0546BH,01CECH,058CDH + .word 064B0H,054AEH,01D0BH,039B1H,0318FH,03970H,0254CH + +FUJI_P: + .word 64 + .word 01931H,07FFEH,06B39H,06718H,062F7H,06AD1H,05ED6H,05AB5H + .word 06A6DH,05694H,06149H,05273H,05504H,0624CH,04E52H,05E2EH + .word 05230H,04881H,04A31H,0620BH,03041H,04A0FH,04610H,05A0BH + .word 041EFH,04DCDH,041CDH,03DCEH,04DAAH,041ACH,039ADH,0458BH + .word 0398BH,0358CH,04169H,0396AH,0316BH,03D46H,02D4AH,03926H + .word 03129H,03507H,02929H,02907H,02508H,028E7H,02442H,020E7H + .word 020C5H,01CC6H,01CC5H,020A5H,018A5H,01883H,01484H,01483H + .word 01863H,01063H,01041H,01021H,0C42H,0C41H,0821H,0400H + +URNFRM_P: + .word 43 + .word 0240BH,07BBBH,07B77H,076F3H,06EB0H,066B1H,0666FH,05A4FH + .word 05E2DH,0562DH,051EBH,049CBH,045A9H,04167H,03947H,03D25H + .word 03D03H,03105H,030E3H,028C3H,02081H,01861H,07BDDH,06F7FH + .word 06B5EH,0631EH,05EFDH,056BDH,0529CH,04E7BH,0463BH,0421AH + .word 03DFAH,039D9H,03198H,02D77H,02957H,02536H,02534H,01CF0H + .word 01CEBH,01CE6H,018C5H + +CHAIR_P: + .word 57 + .word 07C1FH,07FDEH,07B9AH,0775AH,07B36H,06738H,076D5H,076D3H + .word 06AD5H,06AB2H,05AB5H,05A93H,0626FH,06251H,04E52H,05A31H + .word 05A2EH,061EFH,04E0EH,055CDH,055CAH,049ADH,05186H,045AAH + .word 05149H,05146H,0398CH,050E6H,04529H,04907H,04923H,044E6H + .word 044C5H,03926H,03529H,04483H,04442H,038A5H,02D06H,03883H + .word 03442H,024C5H,028A2H,03000H,01CA5H,02C00H,02C00H,02821H + .word 018A2H,02800H,02400H,02000H,02000H,01C00H,01800H,0800H + .word 00H diff --git a/IMGTBL.ASM b/IMGTBL.ASM new file mode 100755 index 0000000..36385b2 --- /dev/null +++ b/IMGTBL.ASM @@ -0,0 +1,20 @@ + .FILE "imgtbl.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include crowdimg.glo + + .include ropeimg.glo + + .include roboimg.glo + + .include fontsimg.glo + + .include junkxxx.glo + + .include LOGO.GLO + + .include BGNDTBL.GLO diff --git a/JJXM.H b/JJXM.H new file mode 100755 index 0000000..25958a0 --- /dev/null +++ b/JJXM.H @@ -0,0 +1,59 @@ +JJXM_DEBUG .equ 1 + +JJXM_INIT .macro + + calla get_opp_plyrmode + move *a13(CLOSEST_XDIST),a1 + move *a13(CLOSEST_ZDIST),a2 + + .endm + + +JJXM .macro MODE,DX,DZ,LESS,MORE + + cmpi MODE_:MODE:,a0 + jrne DONE? + + .if $isname(DX) + jruc :DX: + .else + cmpi :DX:,a1 + jrgt :MORE: + cmpi :DZ:,a2 + jrgt :MORE: + jruc :LESS: + .endif + +DONE? + .endm + +JJXM_END .macro + .if JJXM_DEBUG + LOCKUP + rets + .endif + .endm + +SMRTTGT .macro REG,TGT + move *:REG:(STATUS_FLAGS),a14 + ori M_SMART_ATTACK,a14 + move a14,*:REG:(STATUS_FLAGS) + move *:REG:(:TGT:),*:REG:(SMART_TARGET),L + .endm + +RND_AWARD .macro REG,AWARD_INDEX + PUSH a0,a10 + move :REG:,a0 + movi :AWARD_INDEX:,a10 + calla round_award + PULL a0,a10 + .endm + +MATCH_AWARD .macro REG,AWARD_INDEX + PUSH a0,a10 + move :REG:,a0 + movi :AWARD_INDEX:,a10 + calla match_award + PULL a0,a10 + .endm + \ No newline at end of file diff --git a/LD.BAT b/LD.BAT new file mode 100755 index 0000000..24a1abc --- /dev/null +++ b/LD.BAT @@ -0,0 +1,147 @@ +@echo off +c: +cd \video\wwf +cls +echo. +echo *********** WWF image loader ************* +echo. +echo. +echo A.............load everything +echo. +echo B.............build everything +echo. +echo C.............build main.lod +echo. +echo D.............build bam.lod +echo. +echo E.............build bret.lod +echo. +echo F.............build doink.lod +echo. +echo G.............build lex.lod +echo. +echo H.............build razor.lod +echo. +echo I.............build shawn.lod +echo. +echo J.............build taker.lod +echo. +echo K.............build yoko.lod +echo. +echo L.............build misc.lod +echo. +choice /C:ABCDEFGHIJKL " Choose wisely! - " +echo. + +if errorlevel 12 goto misc +if errorlevel 11 goto yoko +if errorlevel 10 goto taker +if errorlevel 9 goto shawn +if errorlevel 8 goto razor +if errorlevel 7 goto lex +if errorlevel 6 goto doink +if errorlevel 5 goto bret +if errorlevel 4 goto bam +if errorlevel 3 goto main +if errorlevel 2 goto buildall +if errorlevel 1 goto loadall + + +:misc +loadw misc /A /TS /FI /E +goto end + +:yoko +loadw yoko /A /TS /FI /E +goto end + +:taker +loadw taker /A /TS /FI /E +goto end + +:shawn +loadw shawn /A /TS /FI /E +goto end + +:razor +loadw razor /A /TS /FI /E +goto end + +:lex +loadw lex /A /TS /FI /E +goto end + +:doink +loadw doink /A /TS /FI /E +goto end + +:bret +loadw bret /A /TS /FI /E +goto end + +:bam +loadw bam /A /TS /FI /E +goto end + +:main +loadw main /A /TS /FI /E +goto end + +:buildall +del bgndpal.asm +del bgndtbl.asm +del bampal.asm +del bretpal.asm +del doinkpal.asm +del lexpal.asm +del razorpal.asm +del shawnpal.asm +del takerpal.asm +del yokopal.asm +del fontspal.asm +del imgpal.asm +del imgtbl.asm +del robopal.asm + +loadw main /TS /FI /E +loadw bam /A /TS /FI /E +loadw bret /A /TS /FI /E +loadw doink /A /TS /FI /E +loadw lex /A /TS /FI /E +loadw razor /A /TS /FI /E +loadw shawn /A /TS /FI /E +loadw taker /A /TS /FI /E +loadw yoko /A /TS /FI /E +loadw misc /A /TS /FI /E +copy bgndglo.txt + bgndtbl.asm temp.xyz +copy temp.xyz bgndtbl.asm +copy bgndglo.txt + bgndpal.asm temp.xyz +copy temp.xyz bgndpal.asm +del temp.xyz +goto end + +:loadall +loadw main /RI /E +loadw bam /RI /E +loadw bret /RI /E +loadw doink /RI /E +loadw lex /RI /E +loadw razor /RI /E +loadw shawn /RI /E +loadw taker /RI /E +loadw yoko /RI /E +loadw misc /RI /E +goto end + +:end + +del junkxxxx +del *.~sm +del *.~bl +del l2temp +echo. +echo. +echo. +echo done... +echo. + diff --git a/LEX.ASM b/LEX.ASM new file mode 100755 index 0000000..2b3428e --- /dev/null +++ b/LEX.ASM @@ -0,0 +1,2781 @@ +************************************************************** +* +* Software: Gilbert the Wonder Hamster +* Initiated: 7/15/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lex.asm" + .title "Lex Luger specific game code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "jjxm.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" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref change_anim1a,change_anim2a,master_keep_attached + .ref do_taunt,CLIMB_ROPES,bounce_off_ropes,mode_inair2 + .ref check_secret_moves,mode_choking,DO_REVERSAL_MESS + .ref ck_ignore,climb_turnbuckle,execute_walk,PCNT + .ref get_opp_plyrmode,ADD_IF_SILENT,DO_REVERSAL,mode_puppet + .ref process_ptrs,keep_attached,change_anim1,JUMP_ROPES + .ref FIND_AND_KILL_ENDLESS,BONUS_MESS + .ref CHECK_COMBO_GO,ck_teammate_pin,raisearm_check + .ref BLOCK_WOOSH,drone_change_back,mode_dead,get_opp_process + .ref lex_combo_punch_anim,can_pin,round_award + .ref lex_combo_kick_anim,set_raisearm_bit + .ref blocking_off,std_taunt,std_walk_fast + .ref hyper_speed_on + .ref in_finish_move + .ref p1rounds,p2rounds + .if NUM_LEX_FINISHES + .ref lex_finish1_move + .if NUM_LEX_FINISHES > 1 + .ref lex_finish2_move + .endif + .endif + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref start_run_anim + + .ref lex_4_block_anim + + .ref lex_stand2_anim,lex_stand8_anim + .ref lex_stand4_anim,lex_stand6_anim + .ref lex_torso2_anim,lex_torso8_anim + .ref lex_torso4_anim,lex_torso6_anim + + .ref lex_2_to_4_turn_anim,lex_8_to_6_turn_anim ;stand + .ref lex_4_to_2_turn_anim,lex_6_to_8_turn_anim + .ref lex_4_to_6_turn_anim,lex_6_to_4_turn_anim + .ref lex_2_to_8_turn_anim,lex_8_to_2_turn_anim + .ref lex_4_to_8_turn_anim,lex_6_to_2_turn_anim + .ref lex_2_to_6_turn_anim,lex_8_to_4_turn_anim + + .ref lex_2_to_4_turn2_anim,lex_8_to_6_turn2_anim ;torso + .ref lex_4_to_2_turn2_anim,lex_6_to_8_turn2_anim + .ref lex_4_to_6_turn2_anim,lex_6_to_4_turn2_anim + .ref lex_2_to_8_turn2_anim,lex_8_to_2_turn2_anim + .ref lex_4_to_8_turn2_anim,lex_6_to_2_turn2_anim + .ref lex_2_to_6_turn2_anim,lex_8_to_4_turn2_anim + + .ref lex_walk1_f2_anim,lex_walk2_f2_anim,lex_walk4_f2_anim + .ref lex_walk5_f2_anim,lex_walk6_f2_anim,lex_walk8_f2_anim + + .ref lex_walk1_f4_anim,lex_walk2_f4_anim,lex_walk4_f4_anim + .ref lex_walk5_f4_anim,lex_walk6_f4_anim,lex_walk8_f4_anim + + .ref lex_run2_anim,lex_hiptoss2_anim + + .ref lex_2_punch_anim,lex_4_punch_anim + .ref lex_2_kick_anim,lex_4_kick_anim + + .ref lex_2_butt_anim,lex_4_butt_anim + .ref lex_4_knee_anim + .ref lex_2_stomp_anim,lex_4_stomp_anim + + .ref lex_2_raise_arm_anim,lex_4_raise_arm_anim + + .ref lex_3_clobber_anim + + .ref lex_4_push_anim + + .ref lex_4_grabfling_anim + + .ref lex_fall_back_anim + + .ref lex_flying_kick_anim + + .ref lex_2_ground_punch_anim,lex_4_ground_punch_anim + .ref lex_flying_ground_punch_anim,lex_climb_down_anim + .ref lex_buckle_leap_anim,lex_climb_up_anim + .ref lex_backbreaker_anim,lex_ohslam_anim + + .ref lex_3_head_held_stand_anim,lex_2_hair_pickup_anim + .ref lex_3_knee_to_head_anim + .ref lex_4_hair_pickup_anim,lex_2_grabfling_anim + .ref lex_3_head_hold2_anim + .ref lex_3_head_hold_anim + + .ref lex_vsuplex_anim,lex_super_kick_anim + .ref lex_4_knee_fall_anim,lex_4_graboh_anim + .ref lex_hiptoss_anim,lex_4_bigboot_anim + .ref lex_slamdown_anim + + .ref lex_2_pin_anim,lex_4_pin_anim + .ref lex_2_clobber_anim,lex_4_clobber_anim + +; .ref lex_pkup_chair_anim + .ref lex_sliding_elbow_anim + .ref lex_knees_to_head_anim + .ref lex_grab2elbow_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* SPECIAL MOVES - History checks + +lex_secret_moves + .long #charge_clobber + .long #neck_grab + .long #grab_fling + .long #hip_toss + .long #grab_fling2 + .long #hip_toss2 + .long #sliding_elbow + .long #hammer + .long 0 + +****************************************************************************** +* +* SPECIAL MOVE PROCESSES - Secret moves +* +;a8=process of wrestler + + SUBR lex_smove_table + .long lex_hdhold_pile + .long lex_hdhold_elbow_face + .long lex_hdhold_graboh + .long lex_grab_toss_air + .long lex_hdhold_combo1 + .long lex_hdhold_combo2 +; .long lex_hdhold_anti_combo + .long std_walk_fast + .long std_taunt + + .if NUM_LEX_FINISHES + .long lex_finish_move1 + .endif + .if NUM_LEX_FINISHES > 1 + .long lex_finish_move2 + .endif + .long 0 + +******************************************************************************* +#charge_clobber + move *a13(BUT_VAL_UP),a0 + btst PLAYER_PUNCH_BIT,a0 + jrz #no_punch + +; move *a13(PLYRMODE),a0 +; cmpi MODE_ONTURNBKL,a0 +; jrz #no_punch + + move *a13(PLYRNUM),a0 + .ref get_punch_dtime + calla get_punch_dtime + cmpi 100,a0 ;> min? + jrlt #no_punch + + callr #scrt_clbr + setc + rets + +#no_punch + clrc + rets + + +#scrt_clbr + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_HEADHOLD,a0 + jrz #out + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground +; calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #out +; cmpi MODE_DEAD,a0 +; jrz #out +; move *a13(PLYRMODE),a0 +; cmpi MODE_RUNNING,a0 +; jrz #leapclbr +; +;;If stick is toward opponent, then do sliding/leaping buzzer +; move *a13(STICK_VAL_CUR),a0 +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrnz #norm +; +;#leapclbr +;;missing noise for a reason ! +; WRSND W_LUGER,HDBUTT_T1,HDBUTT_T2 +; FACE24 lex,clobber2_anim +; calla change_anim1 +; rets +;#norm + + WRSND W_LUGER,HDBUTT_T1,HDBUTT_T2 + FACE24 lex,clobber_anim + calla change_anim1 + + rets + +******************************************************************************* +#hammer + .word B_SKICK, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long scrt_hammer + +scrt_hammer + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + cmpi MODE_OPPOVERHEAD,a0 + jreq #out + + .ref lex_hammer_anim + movi lex_hammer_anim,a0 + calla change_anim1a + +;missing noise for a reason ! + WRSND W_LUGER,HIPTOSS_T1,PUNCH_T2 + + rets + +****************************************************************************** +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 30 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + + move *a13(LAST_HEADHOLD),a14,L + move @PCNT,a0,L + sub a14,a0 + cmpi 2*60,a0 + jrge #ok2 + +;This head grab is too close (in terms of time) to most recent grab + .ref lex_3_fake_hold_anim + movi lex_3_fake_hold_anim,a0 + calla change_anim1a + rets + +#ok2 + move *a13(CLOSEST_XDIST),a1 + cmpi 90,a1 + jrgt #std_grab + + movi lex_3_head_hold2_anim,a0 + calla change_anim1a +#out rets + +#std_grab + movi lex_3_head_hold_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#grab_fling2 + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#hip_toss2 + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#scrt_grabfling2 + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrz #yes + rets + +****************************************************************************** +#grab_fling +; .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_grabfling + + .word B_SPUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_grabfling + +#scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + movi lex_hiptoss_anim,a0 + calla change_anim1a + + WRSND W_LUGER,HIPTOSS_T1,PUNCH_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + +; move *a13(LAST_FLING_ATTEMPT),a14,L +; move @PCNT,a0,L +; sub a14,a0 +; cmpi 3*60,a0 +; jrge #ok2a +; +;;This head grab is too close (in terms of time) to most recent grab +; movi lex_3_clobber_anim,a0 +;; FACE24 lex,punch_anim +; calla change_anim1a +; +; WRSND W_LUGER,HIPTOSS_T1,PUNCH_T2 +; rets +; +;#ok2a +; move @PCNT,a14,L ;use 32-bit PCNT! +; move a14,*a13(LAST_FLING_ATTEMPT),L + + FACE24 lex,grabfling_anim + calla change_anim1a + + WRSND W_LUGER,GRABFLING_T1,PUNCH_T2 + rets + +******************************************************************************* +#hip_toss +; .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_hiptoss + + .word B_PUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_hiptoss + +#scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out +; cmpi MODE_BLOCK,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #out + +#doit + movi lex_hiptoss_anim,a0 + calla change_anim1a + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + WRSND W_LUGER,GRABFLING_T1,PUNCH_T2 + + rets + +******************************************************************************* +#sliding_elbow + .word B_PUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 30 ;max + .long #scrt_elbow + +#scrt_elbow + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_OPPOVERHEAD,a0 + jreq #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + ;we can do this from a headhold, so... + calla FIND_AND_KILL_ENDLESS + + movi lex_sliding_elbow_anim,a0 + calla change_anim1a + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + WRSND W_LUGER,UPRCUT_T1,UPRCUT_T2 + + rets + + .if NUM_LEX_FINISHES +#****************************************************************************** + SUBRP lex_finish_move1 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_DOWN,0,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN B_PUNCH,J_ALL,#reset + + movi lex_finish1_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + + .if NUM_LEX_FINISHES > 1 +#****************************************************************************** + SUBRP lex_finish_move2 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_UP,0,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN B_SPUNCH,J_ALL,#reset + + movi lex_finish2_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + +#***************************************************************************** + SUBRP lex_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + calla DO_REVERSAL + calla DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movi 42,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi lex_vsuplex_anim,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_LUGER,FLYKICK_T1,FLYKICK_T2 + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** + SUBRP lex_hdhold_elbow_face + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + calla DO_REVERSAL + calla DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + + .ref lex_grab2elbow_rev_anim + + movi lex_grab2elbow_rev_anim,a1 + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;fix !!! wrong name - jake + movk 6,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +;This stops Lex from going for foot, then changing his mind! +; movk 15,a14 +; move a14,*a8(IMMOBILIZE_TIME) + + movi lex_grab2elbow_anim,a1 +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + move a1,*a8(SPECIAL_MOVE_ADDR),L + CALLA FIND_AND_KILL_ENDLESS + + WRSND W_LUGER,FLYKICK_T1,FLYKICK_T2 + + SLEEPK 20 + jruc #lp + +#****************************************************************************** +lex_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jreq #lp0 + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 +;Don't do it when he is on ground + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 6ch,a0 + jrgt #lp + +; FACE24 lex,hiptoss_anim + movi lex_hiptoss_anim,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_LUGER,GRABFLING_T1,PUNCH_T2 + + SLEEPK 20 + jruc #lp + +#doit2 +; FACE24 lex,hiptoss2_anim + movi lex_hiptoss2_anim,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_LUGER,GRABFLING_T1,PUNCH_T2 + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** +lex_hdhold_graboh + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont0 + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont0 + clr a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #dograb + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#dograb + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +; movk 6,a10 +; CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi lex_4_graboh_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_LUGER,GRABHOLD_T1,GRABHOLD_T2 + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +lex_hdhold_combo1 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi lex_combo_punch_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_LUGER,UPRCUT_T1,UPRCUT_T2 + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +lex_hdhold_combo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi lex_combo_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_LUGER,UPRCUT_T1,UPRCUT_T2 + + SLEEPK 20 + + jruc #lp + +;#****************************************************************************** +; +;;Could start this process only when opponent is in combo mode! +; +;lex_hdhold_anti_combo +; +;#TIMEOUT .equ 30 +; +;#lp0 +; SLEEPK 1 +;#lp +;;Is my opponent in combo mode? +;; move *a8(IMMOBILIZE_TIME),a14 +;; jrz #lp0 +;; move *a8(CLOSEST_NUM),a0 +;; X32 a0 +;; addi process_ptrs,a0 +;; move *a0,a0,L +;; move *a0(COMBO_COUNT),a0 +;; jrz #lp0 +; +; clr a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +; movk #TIMEOUT,a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +;;Is my opponent in combo mode? +; move *a8(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(COMBO_COUNT),a0 +; jrz #lp0 +; +; move *a8(ANTI_COMBO_TIME),a0 ;Time stamp +; move @PCNT,a14 +; sub a0,a14 +; abs a14 +; cmpi 80,a14 +; jrge #lp0 +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +;;Combo breaker message! +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; clr a0 +; move a0,*a8(IMMOBILIZE_TIME) +; +; move *a8(WHOHITME),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) +; +; ;target WHOHITME +; SMRTTGT a8,WHOHITME +; +; CALLA FIND_AND_KILL_ENDLESS +; +; WRSND W_LUGER,GRABHOLD_T1,GRABHOLD_T2 +; movi lex_vsuplex_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; SLEEPK 20 +; +; jruc #lp +; +#***************************************************************************** + + SUBR lex_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi lex_stand4_anim,a0 + calla change_anim1a + + movi lex_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE TAUNT_PID,do_taunt + PULL a10 + + rets + +#p1 + movi lex_stand2_anim,a0 + calla change_anim1a + + movi lex_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* LEX CONTROL CODE +* +* a13 = * Lex process + + SUBR move_lex + + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + movi lex_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 + .long mode_puppet2 ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .long mode_choking ;25 + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(I_WILL_DIE),a0 + jrz #nope + move *a13(IMMOBILIZE_TIME),a0 + jrnz #nope +;Player has died amidst a combo... +;Knock me down. + movi lex_fall_back_anim,a0 + calla change_anim1a + +;Zero health bar + movi -10,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + SETMODE DEAD + + clr a0 + move a0,*a13(I_WILL_DIE) + + rets + +#nope +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + + ;if closest is a zombie, skip pin section. + calla get_opp_process + move *a0(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #opp_not_dead + + ;all opponents are dead. Check for pins/raisearms + + ;if we're attached to someone, don't interrupt it. + move *a13(ATTACH_PROC),a1,L + jrz #no_attch + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jreq #no_pin_yet +#no_attch + + ;if a teammate has pinned, raise yer arm. + calla ck_teammate_pin + jrc #raisearm + + ;nobody has pinned. if we're outside or all our opponents are + ; outside, do a raisearm. + calla raisearm_check + jrc #raisearm + + ;we're inside with a pinnable opponent. any button pins. + move *a13(BUT_VAL_CUR),a0 + jrz #no_pin_yet + + ;we have a press -- make sure opponent is on the ground + calla can_pin + jrnc #opp_notgnd + + ;opponent is on the ground. pin him. + FACE24 lex,pin_anim + calla change_anim1a + + ;set the 'I did a pin' flag. + move *a13(STATUS_FLAGS),a14 + ori M_DID_PIN,a14 + move a14,*a13(STATUS_FLAGS) + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#raisearm + FACE24 lex,raise_arm_anim + calla change_anim1a + calla set_raisearm_bit + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#too_far_to_pin +#opp_notgnd +#opp_not_dead +#no_pin_yet + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #immobilized + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 ;maybe have to action tables? + jrz #nblk ;1 for down transitions + callr #block ;& 1 for current buttons + jrc #nblk + clr a0 + move a0,*a13(ATTACK_TYPE) + rets +#nblk + move *a13(BUT_VAL_CUR),a0 + andi 011111b,a0 + cmpi PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,a0 + jrz #punchkick + + move *a13(BUT_VAL_DOWN),a0 + 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(STICK_VAL_CUR),a0 + move a0,*a13(MOVE_DIR) + calla climb_turnbuckle + jrnc #no_climb + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets + +#immobilized + clr a14 + move a14,*a13(MOVE_DIR) +#no_climb + calla execute_walk + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 40 45 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing normal punch +* +* onturnbkl < 40 45 hdbutt +* onturnbkl > normal punch +* +* climbturnbkl punch +* + + JJXM_INIT + JJXM NORMAL, 40, 45,#punch_hdbutt,#punch_punch ;0 + JJXM RUNNING, 40, 45,#punch_hdbutt,#punch_punch ;1 + JJXM INAIR, 40, 45,#punch_hdbutt,#punch_punch ;2 + JJXM ATTACHED, 40, 45,#punch_hdbutt,#punch_punch ;3 + JJXM ONGROUND, 160,140,#punch_lbowdrop,#punch_punch ;4 + JJXM BOUNCING, 40, 45,#punch_hdbutt,#punch_punch ;1 + JJXM ONTURNBKL, 40, 45,#punch_hdbutt,#punch_punch ;6 + JJXM BLOCK, 40, 45,#punch_hdbutt,#punch_punch ;7 + JJXM DIZZY, 40, 45,#punch_hdbutt,#punch_punch ;8 + JJXM DEAD, 160,140,#punch_lbowdrop,#punch_punch ;9 + JJXM OPPOVERHEAD, 40, 45,#punch_hdbutt,#punch_punch ;10 + JJXM CLIMBTURNBKL, #punch_punch ;11 + JJXM WAITANIM, 40, 45,#punch_hdbutt,#punch_punch ;12 + JJXM GRAPPLE, 40, 45,#punch_hdbutt,#punch_punch ;13 + JJXM MASTER, 40, 45,#punch_hdbutt,#punch_punch ;14 + JJXM SLAVE, 40, 45,#punch_hdbutt,#punch_punch ;15 + JJXM HEADHOLD, 40, 45,#punch_hdbutt,#punch_punch ;16 + JJXM HEADHELD, 40, 45,#punch_hdbutt,#punch_punch ;19 + JJXM CHOKEHOLD, 40, 45,#punch_hdbutt,#punch_punch ;16 + JJXM PUPPET, 40, 45,#punch_hdbutt,#punch_punch ;20 + JJXM PUPPET2, 40, 45,#punch_hdbutt,#punch_punch ;20 + JJXM INAIR2, 40, 45,#punch_hdbutt,#punch_punch ;21 + JJXM_END + +***** +#punch_punch +std_punch + FACE24 lex,punch_anim + calla change_anim1a + WRSND W_LUGER,PUNCH_T1,PUNCH_T2 + rets + +***** +#punch_hdbutt + FACE24 lex,butt_anim + calla change_anim1a + WRSND W_LUGER,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbowdrop + FACE24 lex,ground_punch_anim + calla change_anim1a + WRSND W_LUGER,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#block ;2 +std_block + move @blocking_off,a0 + jrnz #no_blocking + + RND_AWARD a13,BLOCKS_AWD + + movi lex_4_block_anim,a0 + calla change_anim1 + + calla BLOCK_WOOSH + + clr a0 + move a0,*a13(BLOCK_TIME) + clrc + rets + +#no_blocking + setc + rets + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 110 75 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 136 112 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 70, 45,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 40, 45,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 40, 45,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 40, 45,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 160,140,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, 110, 45,#spunch_special,#spunch_slap ;5 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 70, 45,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 40, 45,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 160,140,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 110, 35,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 40, 45,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 40, 45,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 40, 45,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 40, 45,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 40, 45,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, 40, 45,#spunch_special,#spunch_slap ;19 + JJXM CHOKEHOLD, 40, 45,#spunch_special,#spunch_slap ;16 + JJXM PUPPET, 40, 45,#spunch_special,#spunch_slap ;20 + JJXM PUPPET2, 40, 45,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 40, 45,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +***** +#spunch_slap + movi lex_3_clobber_anim,a0 + calla change_anim1a + + WRSND W_LUGER,PUNCH_T1,PUNCH_T2 + rets + +***** +#spunch_special +; move *a13(CLOSEST_XDIST),a1 +; cmpi 65,a1 +; jrgt #spunch_slap + + move *a13(CLOSEST_XDIST),a1 + cmpi 55,a1 + jrgt std_punch + + .ref lex_2_butts_anim + .ref lex_4_butts_anim + + FACE24 lex,butts_anim + calla change_anim1 + + WRSND W_LUGER,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#spunch_lbowdrop + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a2 + cmpi MODE_DEAD,a2 + jrz #no + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 lex,hair_pickup_anim + calla change_anim1 + WRSND W_LUGER,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no + FACE24 lex,ground_punch_anim + calla change_anim1 + WRSND W_LUGER,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 50 knee +* > normal kick +* +* onground < 128 128 stomp +* onground > normal kick +* +* running | +* bouncing big boot +* +* onturnbkl | +* climbturnbkl normal kick +* + + + JJXM_INIT + JJXM NORMAL, 60, 50,#kick_knee,#kick_kick + JJXM BLOCK, 60, 50,#kick_knee,#kick_kick + JJXM DIZZY, 60, 50,#kick_knee,#kick_kick + JJXM ONGROUND, 160,140,#kick_stomp,#kick_kick + JJXM RUNNING, 60, 50,#kick_knee,#kick_kick + JJXM BOUNCING, 60, 50,#kick_knee,#kick_kick + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM INAIR, 60, 50,#kick_knee,#kick_kick + JJXM ATTACHED, 60, 50,#kick_knee,#kick_kick + JJXM DEAD, 160,140,#kick_stomp,#kick_kick + JJXM OPPOVERHEAD, 60, 50,#kick_knee,#kick_kick + JJXM WAITANIM, 60, 50,#kick_knee,#kick_kick + JJXM GRAPPLE, 60, 50,#kick_knee,#kick_kick + JJXM MASTER, 60, 50,#kick_knee,#kick_kick + JJXM SLAVE, 60, 50,#kick_knee,#kick_kick + JJXM HEADHOLD, 60, 50,#kick_knee,#kick_kick + JJXM HEADHELD, 60, 50,#kick_knee,#kick_kick + JJXM CHOKEHOLD, 60, 50,#kick_knee,#kick_kick + JJXM PUPPET, 60, 50,#kick_knee,#kick_kick + JJXM PUPPET2, 60, 50,#kick_knee,#kick_kick + JJXM INAIR2, #kick_TB + JJXM_END + +***** +#kick_TB + + .ref lex_kick_TB_anim + movi lex_kick_TB_anim,a0 + calla change_anim1a + + WRSND W_LUGER,KICK_T1,KICK_T2 + rets +***** +#kick_kick +std_kick + + FACE24 lex,kick_anim + calla change_anim1a + + WRSND W_LUGER,KICK_T1,KICK_T2 + rets + +***** +#kick_knee +std_knee + + movi lex_4_knee_anim,a0 + calla change_anim1a + + WRSND W_LUGER,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp +std_stomp + + FACE24 lex,stomp_anim + calla change_anim1a + + WRSND W_LUGER,KICK_T1,KICK_T2 + + rets + +;***** +;#kick_bigboot +; +; FACE24 lex,kick_anim +; calla change_anim1a +; +; WRSND W_LUGER,KICK_T1,KICK_T2 +; rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 120 120 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 60 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 60, 60,#skick_special,#skick_kick ;0 + JJXM RUNNING, #skick_bigboot ;1 + JJXM INAIR, 60, 60,#skick_special,#skick_kick ;2 + JJXM ATTACHED, 60, 60,#skick_special,#skick_kick ;3 + JJXM ONGROUND, 160,140,std_stomp,std_kick ;4 + JJXM BOUNCING, #skick_bigboot ;5 + JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick ;6 + JJXM BLOCK, 60, 60,#skick_special,#skick_kick ;7 + JJXM DIZZY, 60, 60,#skick_special,#skick_kick ;8 + JJXM DEAD, 160,140,std_stomp,std_kick ;9 + JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick ;10 + JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick ;11 + JJXM WAITANIM, 60, 62,#skick_special,#skick_kick ;12 + JJXM GRAPPLE, 60, 62,#skick_special,#skick_kick ;13 + JJXM MASTER, 60, 62,#skick_special,#skick_kick ;14 + JJXM SLAVE, 60, 62,#skick_special,#skick_kick ;15 + JJXM HEADHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM HEADHELD, std_kick + JJXM CHOKEHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM PUPPET, 60, 62,#skick_special,#skick_kick ;20 + JJXM PUPPET2, 60, 62,#skick_special,#skick_kick ;20 + JJXM INAIR2, #kick_TB + JJXM_END + +***** +#skick_kick + movi lex_super_kick_anim,a0 + calla change_anim1a + + WRSND W_LUGER,FLYKICK_T1,FLYKICK_T2 + rets + + +***** +#skick_special + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrz #cont2 + + movi lex_4_knee_anim,a0 + calla change_anim1a + + WRSND W_LUGER,KICK_T1,KICK_T2 + + rets + +#cont2 + movi lex_4_knee_fall_anim,a0 + calla change_anim1 + + WRSND W_LUGER,GRABHOLD_T1,GRABHOLD_T2 + rets + +***** +#skick_bigboot ;we can probably get away with just a #4 big boot + + movi lex_4_bigboot_anim,a0 ;***** + calla change_anim1a + + WRSND W_LUGER,FLYKICK_T1,FLYKICK_T2 + + rets + +************ +#graboh ;20 + + movi lex_4_graboh_anim,a0 + calla change_anim1a + + WRSND W_LUGER,GRABHOLD_T1,GRABHOLD_T2 + + rets + + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ LEX_XRUN +#ZDRIFT_VAL equ LEX_ZDRIFT + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move @hyper_speed_on,a14 + sll a14,a0 + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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(STICK_VAL_CUR),a0 + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#no_interrupt + + move *a13(STICK_VAL_CUR),a0 + 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 + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 +#out_of_control + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + + +************ +#punch ;1 +#super_punch ;4 +#punchkick +#graboh +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 flying ground punch +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline + JJXM BLOCK, #punch_clothesline + JJXM DIZZY, #punch_clothesline + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_rets + JJXM RUNNING, #punch_clothesline + JJXM BOUNCING, #punch_clothesline + JJXM ONTURNBKL, #punch_clothesline + JJXM CLIMBTURNBKL, #punch_clothesline + JJXM INAIR, #punch_clothesline + JJXM ATTACHED, #punch_clothesline + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_rets + JJXM OPPOVERHEAD, #punch_clothesline + JJXM WAITANIM, #punch_clothesline + JJXM GRAPPLE, #punch_clothesline + JJXM MASTER, #punch_clothesline + JJXM SLAVE, #punch_clothesline + JJXM HEADHOLD, #punch_clothesline + JJXM HEADHELD, #punch_clothesline + JJXM CHOKEHOLD, #punch_clothesline + JJXM PUPPET, #punch_clothesline + JJXM PUPPET2, #punch_clothesline + JJXM INAIR2, #punch_clothesline + JJXM_END + +#punch_rets + rets + +***** +#punch_clothesline +;TODO - fix this + ;HACK!!! + jruc #kick_flyingkick + + rets + +***** +#punch_bellyflop +attack_bellyflop + + movi lex_flying_ground_punch_anim,a0 + calla change_anim1a + + WRSND W_LUGER,FLYKICK_T1,FLYKICK_T2 + rets + + +************ +#block ;2 + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + rets + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 flying ground punch +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick + JJXM BLOCK, #kick_flyingkick + JJXM DIZZY, #kick_flyingkick + JJXM ONGROUND, 176,176,attack_bellyflop,#kick_rets + JJXM RUNNING, #kick_flyingkick + JJXM BOUNCING, #kick_flyingkick + JJXM ONTURNBKL, #kick_flyingkick + JJXM CLIMBTURNBKL, #kick_flyingkick + JJXM INAIR, #kick_flyingkick + JJXM ATTACHED, #kick_flyingkick + JJXM DEAD, 176,176,attack_bellyflop,#kick_rets + JJXM OPPOVERHEAD, #kick_flyingkick + JJXM WAITANIM, #kick_flyingkick + JJXM GRAPPLE, #kick_flyingkick + JJXM MASTER, #kick_flyingkick + JJXM SLAVE, #kick_flyingkick + JJXM HEADHOLD, #kick_flyingkick + JJXM HEADHELD, #kick_flyingkick + JJXM CHOKEHOLD, #kick_flyingkick + JJXM PUPPET, #kick_flyingkick + JJXM PUPPET2, #kick_flyingkick + JJXM INAIR2, #kick_flyingkick + JJXM_END + +#kick_rets + rets + +***** +#kick_flyingkick + + calla ck_ignore + jrc #z + + SETMODE INAIR + + movi lex_flying_kick_anim,a0 + calla change_anim1a + + WRSND W_LUGER,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 + +#***************************************************************************** + +mode_onground ;4 + +; move *a13(GETUP_TIME),a0 +; jrnz #exit +; +; move *a13(ANIBASE),a0,L +; cmpi lex_faceup_getup_anim,a0 +; jrz #exit +; +; calla do_roll +; jrnz #exit ;did roll +; +; movi lex_faceup_getup_anim,a0 +; +; calla change_anim1a +; +;#exit + 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 lex_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 + +; ;check unint +; move *a13(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #no_interrupt + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #no_climbdown + + movi lex_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + +#no_interrupt + rets + +#no_climbdown + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +; .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 +#block + rets + +************ +#punch ;1 +#super_punch ;4 +#punchkick ;5 +#kick ;8 +#super_kick ;16 +#graboh ;20 + + SETMODE INAIR + + movi lex_buckle_leap_anim,a0 + calla change_anim1a + + WRSND W_LUGER,FLYKICK_T1,FLYKICK_T2 + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + + move *a13(BLOCK_TIME),a0 + inc a0 + move a0,*a13(BLOCK_TIME) + cmpi 160,a0 + jrlt #no + + calla get_opp_plyrmode + cmpi MODE_BLOCK,a0 + jrnz #no + move *a13(CLOSEST_XDIST),a0 + cmpi 61h,a0 + jrge #no + cmpi 45,a0 + jrlt #no + move *a13(CLOSEST_ZDIST),a0 + cmpi 30,a0 + jrlt #punchblock + +#no + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #no_interrupt + + ;press. if block isn't down, let mode_normal handle it + move a0,a2 ;save a0 from ...val_down + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 + jrz #set_mode_normal + move a2,a0 ;restore a0 from ...val_down + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#set_mode_normal + SETMODE NORMAL + jruc mode_normal + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + movi lex_4_push_anim,a0 + calla change_anim1a + + WRSND W_LUGER,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* doink with zero health + +mode_dizzy ;8 + +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +; calla clear_damage_log +; +; clr a0 +; move a0,*a13(STARS_FLAG) +; +; SETMODE NORMAL +; +;#still_going + 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 ;* remove this???? + btst MODE_UNINT_BIT,a0 ;* + jrnz #no_interrupt ;* + + clr a0 + move a0,*a13(ATTACH_PROC),L + + CALLA FIND_AND_KILL_ENDLESS + SETMODE NORMAL + + movi MODE_NORMAL,a0 + move a0,*a13(ANIMODE) + + rets + +#still_attached + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(FACING_DIR),a0 + andni MOVE_UP,a0 + ori MOVE_DOWN,a0 + move a0,*a13(FACING_DIR) + move a0,*a13(NEW_FACING_DIR) + + move *a13(STICK_VAL_CUR),a0 + jrz #stand + + move a0,*a13(MOVE_DIR) + calla execute_walk + + .ref lex_holdoh_anim + movi lex_holdoh_anim,a0 + .ref change_anim2 + calla change_anim2 + jruc #ck_butns +#stand + clr a0 + move a0,*a13(MOVE_DIR) + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_ZVEL),L + + .ref lex_stndholdoh_anim + movi lex_stndholdoh_anim,a0 + calla change_anim1 + +#ck_butns + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +;three moves from headhold: backbreaker, slamdown, and ohslam. + +************ +#z + rets + +************ +#punch ;1 +#punchkick +#block ;2 +#kick ;8 + +; move *a13(STICK_VAL_CUR),a0 +; btst PLAYER_DOWN_BIT,a0 +; jrz #z + + CALLA FIND_AND_KILL_ENDLESS + movi lex_ohslam_anim,a0 + calla change_anim1a + + WRSND W_LUGER,PUNCH_T1,PUNCH_T2 + + rets + +************ +#super_punch ;4 +#graboh + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_UP_BIT,a0 + jrz #punch + + CALLA FIND_AND_KILL_ENDLESS + movi lex_slamdown_anim,a0 + calla change_anim1a + + WRSND W_LUGER,PUNCH_T1,PUNCH_T2 + + rets + +************ +#super_kick ;16 + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_UP_BIT,a0 + jrz #punch + + CALLA FIND_AND_KILL_ENDLESS + movi lex_backbreaker_anim,a0 + calla change_anim1a + + WRSND W_LUGER,HIPTOSS_T1,PUNCH_T2 + + 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 + + calla master_keep_attached ;keep slave attached to me + + rets + +#***************************************************************************** + +mode_slave ;15 + rets + +#***************************************************************************** + +mode_headhold ;16 + +;Bozo power move + .ref bozo_check + calla bozo_check + jrnc #fail + + WRSND W_LUGER,FLYKICK_T1,FLYKICK_T2 + + movi lex_vsuplex_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi lex_4_graboh_anim,a0 +#tag calla change_anim1a + + rets + +#fail + move *a13(WHOIHIT),a0,L + move *a0(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #exit + +; move *a13(ATTACH_PROC),a10,L +; jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + move *a13(OBJ_ZPOS),a14,L + subi [6,0],a14 + move a14,*a13(OBJ_ZPOS),L + + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + + +************ +#block +#graboh +#z ;0 + rets + +************ + +#punch ;1 + CALLA FIND_AND_KILL_ENDLESS +;If stick is toward opponent, then do quick punches + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag2 +;TODO - change this to uppercuts_to_head_anim! + WRSND W_LUGER,KICK_T1,KICK_T2 + + .ref lex_4_knee2_anim + movi lex_4_knee2_anim,a0 + calla change_anim1a + rets + +#tag2 +;TODO - change this to an uppercut + WRSND W_LUGER,KICK_T1,KICK_T2 + movi lex_4_knee2_anim,a0 + calla change_anim1a + rets + +************ +#super_punch ;4 + rets + +#punchkick +#kick + CALLA FIND_AND_KILL_ENDLESS + movi lex_3_knee_to_head_anim,a0 + calla change_anim1a + WRSND W_LUGER,KICK_T1,KICK_T2 + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #kick + +;Quick knees + CALLA FIND_AND_KILL_ENDLESS + movi lex_knees_to_head_anim,a0 + calla change_anim1a + WRSND W_LUGER,KICK_T1,KICK_T2 + rets + + +#***************************************************************************** +mode_puppet2 ;17 + +; ;check for the head-grab breaker +; move *a13(BUT_VAL_DOWN),a0 +; btst PLAYER_KICK_BIT,a0 +; jrz #out +; +; ;check the time - must do it within 20 ticks +; move *a13(HEAD_GRAB_TIME),a14 +; move @PCNT,a0 +; sub a14,a0 +; cmpi KICK_OUT,a0 +; jrgt #out +; +; move *a13(PLYR_TYPE),a14 +; cmpi PTYPE_DRONE,a14 +; jrz #out +; +; ;okay, waste 'im. - detach, setmode, immobilize, and launch the knee +; move *a13(ATTACH_PROC),a0,L +; clr a14 +; move a14,*a13(ATTACH_PROC),L +; move a14,*a0(ATTACH_PROC),L +; movi 15,a14 +; move a14,*a0(IMMOBILIZE_TIME) +; SETMODE NORMAL +; jruc std_knee +; +;#out + rets + +#***************************************************************************** + +mode_headheld ;19 + move *a13(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + janz mode_choking + + +;Bozo reversal + calla bozo_check + jrnc #fail + + PUSH a8 + move a13,a8 + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + PULL a8 + + WRSND W_LUGER,FLYKICK_T1,FLYKICK_T2 + + movi lex_vsuplex_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag +; movi lex_4_graboh_anim,a0 +#tag calla change_anim1a + + rets +#fail +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + movi lex_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +;#VEL equ 30000h ;38000h ;30000h +;#DVEL equ 21f0eh ;27978h ;21f0eh +;#VEL equ 38000h ;38000h ;30000h +;#DVEL equ 30000h ;27978h ;21f0eh +#VEL equ 3a000h ;38000h ;30000h +#DVEL equ 31000h ;27978h ;21f0eh + + + SUBR lex_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 lex_rotate_anims_table +; old = up right + .long lex_stand2_anim ;new = up right + .long lex_2_to_4_turn_anim ; = down right + .long lex_2_to_6_turn_anim ; = down left + .long lex_2_to_8_turn_anim ; = up left + +; old = down right + .long lex_4_to_2_turn_anim ;new = up right + .long lex_stand4_anim ; = down right + .long lex_4_to_6_turn_anim ; = down left + .long lex_4_to_8_turn_anim ; = up left + +; old = down left + .long lex_6_to_2_turn_anim ;new = up right + .long lex_6_to_4_turn_anim ; = down right + .long lex_stand6_anim ; = down left + .long lex_6_to_8_turn_anim ; = up left + +; old = up left + .long lex_8_to_2_turn_anim ;new = up right + .long lex_8_to_4_turn_anim ; = down right + .long lex_8_to_6_turn_anim ; = down left + .long lex_stand8_anim ; = up left + + + SUBR lex_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long lex_walk1_f2_anim ;1 (UP) + .long lex_walk1_f2_anim ;2 (UP_RIGHT) + .long lex_walk1_f4_anim ;3 (RIGHT) + .long lex_walk1_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk1_f4_anim ;5 (DOWN) + .long lex_walk1_f4_anim ;6 (DOWN_LEFT) + .long lex_walk1_f2_anim ;7 (LEFT) + .long lex_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk2_f2_anim ;2 (UP_RIGHT) + .long lex_walk2_f2_anim ;3 (RIGHT) + .long lex_walk2_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk8_f4_anim ;5 (DOWN) + .long lex_walk8_f4_anim ;6 (DOWN_LEFT) + .long lex_walk4_f2_anim ;7 (LEFT) + .long lex_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk2_f2_anim ;2 (UP_RIGHT) + .long lex_walk2_f2_anim ;3 (RIGHT) + .long lex_walk4_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk4_f4_anim ;5 (DOWN) + .long lex_walk8_f4_anim ;6 (DOWN_LEFT) + .long lex_walk6_f2_anim ;7 (LEFT) + .long lex_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk8_f2_anim ;2 (UP_RIGHT) + .long lex_walk4_f4_anim ;3 (RIGHT) + .long lex_walk4_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk2_f4_anim ;5 (DOWN) + .long lex_walk6_f4_anim ;6 (DOWN_LEFT) + .long lex_walk2_f2_anim ;7 (LEFT) + .long lex_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long lex_walk5_f2_anim ;1 (UP) + .long lex_walk5_f2_anim ;2 (UP_RIGHT) + .long lex_walk5_f4_anim ;3 (RIGHT) + .long lex_walk5_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk5_f4_anim ;5 (DOWN) + .long lex_walk5_f4_anim ;6 (DOWN_LEFT) + .long lex_walk5_f2_anim ;7 (LEFT) + .long lex_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk6_f2_anim ;2 (UP_RIGHT) + .long lex_walk2_f2_anim ;3 (RIGHT) + .long lex_walk6_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk2_f4_anim ;5 (DOWN) + .long lex_walk4_f4_anim ;6 (DOWN_LEFT) + .long lex_walk2_f2_anim ;7 (LEFT) + .long lex_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk6_f2_anim ;2 (UP_RIGHT) + .long lex_walk6_f2_anim ;3 (RIGHT) + .long lex_walk8_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk4_f4_anim ;5 (DOWN) + .long lex_walk4_f4_anim ;6 (DOWN_LEFT) + .long lex_walk2_f2_anim ;7 (LEFT) + .long lex_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long lex_walk2_f2_anim ;1 (UP) + .long lex_walk4_f2_anim ;2 (UP_RIGHT) + .long lex_walk6_f2_anim ;3 (RIGHT) + .long lex_walk8_f4_anim ;4 (DOWN_RIGHT) + .long lex_walk6_f4_anim ;5 (DOWN) + .long lex_walk2_f4_anim ;6 (DOWN_LEFT) + .long lex_walk2_f2_anim ;7 (LEFT) + .long lex_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR lex_torso_anims_table +; old = up right + .long lex_torso2_anim ;new = up right + .long lex_2_to_4_turn2_anim ; = down right + .long lex_2_to_6_turn2_anim ; = down left + .long lex_2_to_8_turn2_anim ; = up left + +; old = down right + .long lex_4_to_2_turn2_anim ;new = up right + .long lex_torso4_anim ; = down right + .long lex_4_to_6_turn2_anim ; = down left + .long lex_4_to_8_turn2_anim ; = up left + +; old = down left + .long lex_6_to_2_turn2_anim ;new = up right + .long lex_6_to_4_turn2_anim ; = down right + .long lex_torso6_anim ; = down left + .long lex_6_to_8_turn2_anim ; = up left + +; old = up left + .long lex_8_to_2_turn2_anim ;new = up right + .long lex_8_to_4_turn2_anim ; = down right + .long lex_8_to_6_turn2_anim ; = down left + .long lex_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/LEX.BAT b/LEX.BAT new file mode 100755 index 0000000..41d5053 --- /dev/null +++ b/LEX.BAT @@ -0,0 +1,9 @@ +@echo off +@wwfld lex lex_hit lex_kik lex_msc lex_pnc lex_wlk lex_rjr lex_mjt lex_jms lex_jake +@copy lex.ld1 + lex.ld2 lex.lod +@move lex.h ..\leximg.h +@move lex.seq .. + + + + diff --git a/LEXIMG.ASM b/LEXIMG.ASM new file mode 100755 index 0000000..ecdf005 --- /dev/null +++ b/LEXIMG.ASM @@ -0,0 +1,19 @@ + .FILE "leximg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include leximg.tbl + .include leximg.h + +****************************************************************************** + + .even + .include "lex.seq" + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/LEXIMG.H b/LEXIMG.H new file mode 100755 index 0000000..83f38fe --- /dev/null +++ b/LEXIMG.H @@ -0,0 +1,94 @@ + .global L3GU4A + .global L2AE2A + .global L2AH2A + .global L4AH4A + .global L4AE4A + .global L3GU2A + .global L4AM4B + .global L2AM2B + .global L4AH4B + .global L3PB3A + .global L3CP3B + .global L3MF3B + .global L3UC3A + .global L2KM3A + .global L4KM3B + .global L4NM3B + .global L4KB3C + .global L3DC3B + .global L4BK3B + .global L4BK3C + .global L3RL1A + .global L4HM3A + .global L4PT3B + .global L4BZ3C + .global L4BC3D + .global L2BC3E + .global L4PS3A + .global L4PU3B + .global L2PJ3C + .global L2PU2B + .global L2TW2Z + .global L4TW4Z + .global L4TI4B + .global L4WL4A + .global L4WL5A + .global L2WL2A + .global L4WL2B + .global L2WL1B + .global L2WL8A + .global L3RN3B + .global L4BO3Z + .global L1TT5A + .global L1TR5A + .global L2ST2C + .global L4ST4C + .global L3RS3A + .global L3FO3A + .global L4HT3A + .global L3BR3Z + .global L4CF4A + .global L4ZZ5B + .global L4PO4A + .global L3DD3A + .global L3UC3Z + .global L3UC3X + .global L3TN3X + .global L3BF3A + .global L3VS3A + .global L4BZ3B + .global L3ZS3A + .global L4GH3Z + .global L4GH3B + .global L3AB3A + .global L4POGO + .global L3PN5B + .global L3PN5D + .global L4FX5B + .global L3MS3Z + .global L4WS4B + .global L4SW5A + .global L4CO4Z + .global L3DU3A + .global L3GP3Z + .global L4GF3B + .global L4YR3B + .global L3BF3B + .global L4BZ4A + .global L3TF3X + .global L3FH3A + .global L3FD3B + .global L4MP3A + .global L2MP2A + .global L2PT2B + .global L4PT4B + .global L3PJ3F + .global L3CP3X + .global L3GU4B + .global L4HU4A + .global L4SB4A + .global L3RR3Z + .global L4WA4B + .global L4CS3A + .global L4CR3B + .global L4JD4A diff --git a/LEXSEQ1'.ASM b/LEXSEQ1'.ASM new file mode 100755 index 0000000..ef652f6 --- /dev/null +++ b/LEXSEQ1'.ASM @@ -0,0 +1,676 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 7/15/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lexseq1.asm" + + .title "Lex Luger animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "leximg.h" + .include "takerimg.h" ;<-- temp! + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF SMALL_RUN + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* STANDS + + SUBR lex_zip_anim + WL 60*60,L2ST2C+FR1 + .word ANI_END + + + SUBR lex_stand2_anim + SUBR lex_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 3,L2ST2C+FR7 + WL 3,L2ST2C+FR8 + WL 3,L2ST2C+FR9 + WL 3,L2ST2C+FR10 + WL 3,L2ST2C+FR11 + WL 3,L2ST2C+FR12 + + WL 3,L2ST2C+FR11 + WL 3,L2ST2C+FR10 + WL 3,L2ST2C+FR9 + WL 3,L2ST2C+FR8 + WL 3,L2ST2C+FR7 + WL 3,L2ST2C+FR6 + WL 3,L2ST2C+FR5 + WL 3,L2ST2C+FR4 + WL 3,L2ST2C+FR3 + + WL 3,L2ST2C+FR2 + WL 3,L2ST2C+FR3 + WL 3,L2ST2C+FR4 + WL 3,L2ST2C+FR5 + WL 3,L2ST2C+FR6 + + .word ANI_REPEAT + + + SUBR lex_stand4_anim + SUBR lex_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 3,L4ST4A+FR5 + WL 3,L4ST4A+FR6 + WL 3,L4ST4A+FR7 + WL 3,L4ST4A+FR8 + WL 3,L4ST4A+FR9 + WL 3,L4ST4A+FR10 + WL 3,L4ST4A+FR11 + WL 3,L4ST4A+FR10 + WL 3,L4ST4A+FR9 + WL 3,L4ST4A+FR8 + WL 3,L4ST4A+FR7 + WL 3,L4ST4A+FR6 + WL 3,L4ST4A+FR5 + WL 3,L4ST4A+FR4 + WL 3,L4ST4A+FR3 + WL 3,L4ST4A+FR2 + + WL 3,L4ST4A+FR1 + WL 3,L4ST4A+FR2 + WL 3,L4ST4A+FR3 + WL 3,L4ST4A+FR4 + + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR lex_torso2_anim + SUBR lex_torso8_anim + + WL 4,L2TW2Z+FR1 + WL 4,L2TW2Z+FR2 + WL 4,L2TW2Z+FR3 + WL 4,L2TW2Z+FR4 + WL 4,L2TW2Z+FR5 + WL 4,L2TW2Z+FR4 + WL 4,L2TW2Z+FR3 + WL 4,L2TW2Z+FR2 + .word ANI_REPEAT + + + SUBR lex_torso4_anim + SUBR lex_torso6_anim + + WL 4,L4TW4Z+FR1 + WL 4,L4TW4Z+FR2 + WL 4,L4TW4Z+FR3 + WL 4,L4TW4Z+FR4 + WL 4,L4TW4Z+FR5 + WL 4,L4TW4Z+FR4 + WL 4,L4TW4Z+FR3 + WL 4,L4TW4Z+FR2 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR lex_walk1_f2_anim + + WL 3,L2WL1B+FR1 + WL 3,L2WL1B+FR2 + WL 3,L2WL1B+FR3 + WL 3,L2WL1B+FR4 + WL 3,L2WL1B+FR5 + WL 3,L2WL1B+FR6 + WL 3,L2WL1B+FR7 + WL 3,L2WL1B+FR8 + WL 3,L2WL1B+FR9 + WL 3,L2WL1B+FR10 + WL 3,L2WL1B+FR11 + WL 3,L2WL1B+FR12 + WL 3,L2WL1B+FR13 + WL 3,L2WL1B+FR14 + WL 3,L2WL1B+FR15 + WL 3,L2WL1B+FR16 + + .word ANI_REPEAT + + SUBR lex_walk2_f2_anim + + WL 3,L2WL2A+FR1 + WL 3,L2WL2A+FR2 + WL 3,L2WL2A+FR3 + WL 3,L2WL2A+FR4 + WL 3,L2WL2A+FR5 + WL 3,L2WL2A+FR6 + WL 3,L2WL2A+FR7 + WL 3,L2WL2A+FR8 + WL 3,L2WL2A+FR9 + WL 3,L2WL2A+FR10 + WL 3,L2WL2A+FR11 + WL 3,L2WL2A+FR12 + WL 3,L2WL2A+FR13 + WL 3,L2WL2A+FR14 + WL 3,L2WL2A+FR15 + WL 3,L2WL2A+FR16 + WL 3,L2WL2A+FR17 + WL 3,L2WL2A+FR18 + + .word ANI_REPEAT + + SUBR lex_walk4_f2_anim + + WL 3,L2WL8A+FR1 + WL 3,L2WL8A+FR2 + WL 3,L2WL8A+FR3 + WL 3,L2WL8A+FR4 + WL 3,L2WL8A+FR5 + WL 3,L2WL8A+FR6 + WL 3,L2WL8A+FR7 + WL 3,L2WL8A+FR8 + WL 3,L2WL8A+FR9 + WL 3,L2WL8A+FR10 + WL 3,L2WL8A+FR11 + WL 3,L2WL8A+FR12 + WL 3,L2WL8A+FR13 + WL 3,L2WL8A+FR14 + WL 3,L2WL8A+FR15 + WL 3,L2WL8A+FR16 + WL 3,L2WL8A+FR17 + + .word ANI_REPEAT + + SUBR lex_walk5_f2_anim + + WL 3,L2WL1B+FR16 + WL 3,L2WL1B+FR15 + WL 3,L2WL1B+FR14 + WL 3,L2WL1B+FR13 + WL 3,L2WL1B+FR12 + WL 3,L2WL1B+FR11 + WL 3,L2WL1B+FR10 + WL 3,L2WL1B+FR9 + WL 3,L2WL1B+FR8 + WL 3,L2WL1B+FR7 + WL 3,L2WL1B+FR6 + WL 3,L2WL1B+FR5 + WL 3,L2WL1B+FR4 + WL 3,L2WL1B+FR3 + WL 3,L2WL1B+FR2 + WL 3,L2WL1B+FR1 + + .word ANI_REPEAT + + SUBR lex_walk6_f2_anim + + WL 3,L2WL2A+FR18 + WL 3,L2WL2A+FR17 + WL 3,L2WL2A+FR16 + WL 3,L2WL2A+FR15 + WL 3,L2WL2A+FR14 + WL 3,L2WL2A+FR13 + WL 3,L2WL2A+FR12 + WL 3,L2WL2A+FR11 + WL 3,L2WL2A+FR10 + WL 3,L2WL2A+FR9 + WL 3,L2WL2A+FR8 + WL 3,L2WL2A+FR7 + WL 3,L2WL2A+FR6 + WL 3,L2WL2A+FR5 + WL 3,L2WL2A+FR4 + WL 3,L2WL2A+FR3 + WL 3,L2WL2A+FR2 + WL 3,L2WL2A+FR1 + + .word ANI_REPEAT + + + SUBR lex_walk8_f2_anim + + WL 3,L2WL8A+FR17 + WL 3,L2WL8A+FR16 + WL 3,L2WL8A+FR15 + WL 3,L2WL8A+FR14 + WL 3,L2WL8A+FR13 + WL 3,L2WL8A+FR12 + WL 3,L2WL8A+FR11 + WL 3,L2WL8A+FR10 + WL 3,L2WL8A+FR9 + WL 3,L2WL8A+FR8 + WL 3,L2WL8A+FR7 + WL 3,L2WL8A+FR6 + WL 3,L2WL8A+FR5 + WL 3,L2WL8A+FR4 + WL 3,L2WL8A+FR3 + WL 3,L2WL8A+FR2 + WL 3,L2WL8A+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR lex_walk1_f4_anim + + WL 3,L4WL5A+FR17 + WL 3,L4WL5A+FR16 + WL 3,L4WL5A+FR15 + WL 3,L4WL5A+FR14 + WL 3,L4WL5A+FR13 + WL 3,L4WL5A+FR12 + WL 3,L4WL5A+FR11 + WL 3,L4WL5A+FR10 + WL 3,L4WL5A+FR9 + WL 3,L4WL5A+FR8 + WL 3,L4WL5A+FR7 + WL 3,L4WL5A+FR6 + WL 3,L4WL5A+FR5 + WL 3,L4WL5A+FR4 + WL 3,L4WL5A+FR3 + WL 3,L4WL5A+FR2 + WL 3,L4WL5A+FR1 + .word ANI_REPEAT + + SUBR lex_walk2_f4_anim + + WL 3,L4WL2B+FR1 + WL 3,L4WL2B+FR2 + WL 3,L4WL2B+FR3 + WL 3,L4WL2B+FR4 + WL 3,L4WL2B+FR5 + WL 3,L4WL2B+FR6 + WL 3,L4WL2B+FR7 + WL 3,L4WL2B+FR8 + WL 3,L4WL2B+FR9 + WL 3,L4WL2B+FR10 + WL 3,L4WL2B+FR11 + WL 3,L4WL2B+FR12 + WL 3,L4WL2B+FR13 + WL 3,L4WL2B+FR14 + WL 3,L4WL2B+FR15 + WL 3,L4WL2B+FR16 + + .word ANI_REPEAT + + SUBR lex_walk4_f4_anim + + WL 3,L4WL4A+FR1 + WL 3,L4WL4A+FR2 + WL 3,L4WL4A+FR3 + WL 3,L4WL4A+FR4 + WL 3,L4WL4A+FR5 + WL 3,L4WL4A+FR6 + WL 3,L4WL4A+FR7 + WL 3,L4WL4A+FR8 + WL 3,L4WL4A+FR9 + WL 3,L4WL4A+FR10 + WL 3,L4WL4A+FR11 + WL 3,L4WL4A+FR12 + WL 3,L4WL4A+FR13 + WL 3,L4WL4A+FR14 + WL 3,L4WL4A+FR15 + WL 3,L4WL4A+FR16 + WL 3,L4WL4A+FR17 + WL 3,L4WL4A+FR18 + + .word ANI_REPEAT + + SUBR lex_walk5_f4_anim + + WL 3,L4WL5A+FR1 + WL 3,L4WL5A+FR2 + WL 3,L4WL5A+FR3 + WL 3,L4WL5A+FR4 + WL 3,L4WL5A+FR5 + WL 3,L4WL5A+FR6 + WL 3,L4WL5A+FR7 + WL 3,L4WL5A+FR8 + WL 3,L4WL5A+FR9 + WL 3,L4WL5A+FR10 + WL 3,L4WL5A+FR11 + WL 3,L4WL5A+FR12 + WL 3,L4WL5A+FR13 + WL 3,L4WL5A+FR14 + WL 3,L4WL5A+FR15 + WL 3,L4WL5A+FR16 + WL 3,L4WL5A+FR17 + + .word ANI_REPEAT + + SUBR lex_walk6_f4_anim + + WL 3,L4WL2B+FR16 + WL 3,L4WL2B+FR15 + WL 3,L4WL2B+FR14 + WL 3,L4WL2B+FR13 + WL 3,L4WL2B+FR12 + WL 3,L4WL2B+FR11 + WL 3,L4WL2B+FR10 + WL 3,L4WL2B+FR9 + WL 3,L4WL2B+FR8 + WL 3,L4WL2B+FR7 + WL 3,L4WL2B+FR6 + WL 3,L4WL2B+FR5 + WL 3,L4WL2B+FR4 + WL 3,L4WL2B+FR3 + WL 3,L4WL2B+FR2 + WL 3,L4WL2B+FR1 + + .word ANI_REPEAT + + SUBR lex_walk8_f4_anim + + WL 3,L4WL4A+FR18 + WL 3,L4WL4A+FR17 + WL 3,L4WL4A+FR16 + WL 3,L4WL4A+FR15 + WL 3,L4WL4A+FR14 + WL 3,L4WL4A+FR13 + WL 3,L4WL4A+FR12 + WL 3,L4WL4A+FR11 + WL 3,L4WL4A+FR10 + WL 3,L4WL4A+FR9 + WL 3,L4WL4A+FR8 + WL 3,L4WL4A+FR7 + WL 3,L4WL4A+FR6 + WL 3,L4WL4A+FR5 + WL 3,L4WL4A+FR4 + WL 3,L4WL4A+FR3 + WL 3,L4WL4A+FR2 + WL 3,L4WL4A+FR1 + + .word ANI_REPEAT + +;There are too many rotate frames listed here... + + +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR lex_2_to_4_turn_anim + SUBR lex_8_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h +;Fix!!! +;Take out these extra frames + WL 2,L1TT5A+FR4 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_2_turn_anim + SUBR lex_6_to_8_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TT5A+FR6 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_6_turn_anim + SUBR lex_6_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TT5A+FR8 + .word ANI_XFLIP + WL 2,L1TT5A+FR9 + WL 2,L1TT5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_8_turn_anim + SUBR lex_8_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TT5A+FR2 + .word ANI_XFLIP + WL 2,L1TT5A+FR1 + WL 2,L1TT5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_8_turn_anim + SUBR lex_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TT5A+FR8 + .word ANI_XFLIP + WL 2,L1TT5A+FR9 + WL 2,L1TT5A+FR8 + WL 2,L4ST4A+FR5 ;#4 stand + WL 2,L1TT5A+FR6 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_6_turn_anim + SUBR lex_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TT5A+FR4 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR6 + WL 2,L4ST4A+FR5 ;#4 stand + WL 2,L1TT5A+FR8 + .word ANI_XFLIP + WL 2,L1TT5A+FR9 + WL 2,L1TT5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR lex_2_to_4_turn2_anim + SUBR lex_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR4 + WL 2,L1TR5A+FR5 + .word ANI_SETFACING + WL 2,L1TR5A+FR5 + WL 2,L1TR5A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_2_turn2_anim + SUBR lex_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR6 + WL 2,L1TR5A+FR5 + .word ANI_SETFACING + WL 2,L1TR5A+FR5 + WL 2,L1TR5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_6_turn2_anim + SUBR lex_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,L1TR5A+FR9 + WL 2,L1TR5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_8_turn2_anim + SUBR lex_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR2 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,L1TR5A+FR1 + WL 2,L1TR5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_8_turn2_anim + SUBR lex_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,L1TR5A+FR9 + WL 2,L1TR5A+FR8 + WL 2,L4TW4Z+FR1 ;#4 stand (torso) + WL 2,L1TR5A+FR6 + WL 2,L1TR5A+FR5 + WL 2,L1TR5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_6_turn2_anim + SUBR lex_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR4 + WL 2,L1TR5A+FR5 + WL 2,L1TR5A+FR6 + WL 2,L4TW4Z+FR1 ;#4 stand (torso) + WL 2,L1TR5A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,L1TR5A+FR9 + WL 2,L1TR5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR lex_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR lex_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + +#lp1 + WL 3,L3RN3B+FR5 + WL 3,L3RN3B+FR6 + WL 3,L3RN3B+FR7 + WL 3,L3RN3B+FR8 + WL ANI_CODE,SMALL_RUN +#run2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL 3,L3RN3B+FR9 + WL 3,L3RN3B+FR10 + WL 3,L3RN3B+FR11 + WL 3,L3RN3B+FR12 + WL 3,L3RN3B+FR1 + WL 3,L3RN3B+FR2 + WL 3,L3RN3B+FR3 + WL ANI_CODE,SMALL_RUN + WL 3,L3RN3B+FR4 + + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR lex_bounce_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_OVERLAP+MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + .ref fix_bnc_flip + WL ANI_CODE,fix_bnc_flip + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 2,L4BO3Z+FR1 + .word ANI_BOUNCEROPE,0 + WL 1,L4BO3Z+FR1 + + WL 2,L4BO3Z+FR2 + .word ANI_BOUNCEROPE,1 + WL ANI_CODE,SMALL_RUN + + WL 1,L4BO3Z+FR2 + + WL 2,L4BO3Z+FR3 + .word ANI_BOUNCEROPE,2 + WL 1,L4BO3Z+FR3 + + WL 2,L4BO3Z+FR4 + .word ANI_BOUNCEROPE,3 + WL 1,L4BO3Z+FR4 + + .word ANI_ZEROVELS + + WL 2,L4BO3Z+FR5 + .word ANI_BOUNCEROPE,4 + WL 1,L4BO3Z+FR5 + WL 3,L4BO3Z+FR6 + WL 2,L4BO3Z+FR7 + .word ANI_BOUNCEROPE,0 + WL 1,L4BO3Z+FR7 + WL 2,L4BO3Z+FR8 + .word ANI_BOUNCEROPE,-1 + WL ANI_CODE,SMALL_RUN + WL 1,L4BO3Z+FR8 + WL 3,L4BO3Z+FR9 + WL 3,L4BO3Z+FR10 + + .word ANI_OFFSET,15,0,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/LEXSEQ1.ASM b/LEXSEQ1.ASM new file mode 100755 index 0000000..635c84e --- /dev/null +++ b/LEXSEQ1.ASM @@ -0,0 +1,666 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 7/15/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lexseq1.asm" + .title "walks, runs, stances, and turns" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "leximg.h" + .include "takerimg.h" ;<-- temp! + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref SMALL_RUN,fix_bnc_flip + .REF MAYBE_BOUNCE_ROPE + +#***************************************************************************** +* +* STANDS + + SUBR lex_zip_anim + WL 60*60,L2ST2C+FR1 + .word ANI_END + + + SUBR lex_stand2_anim + SUBR lex_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 5,L2ST2C+FR6 + WL 5,L2ST2C+FR5 + WL 5,L2ST2C+FR4 + WL 5,L2ST2C+FR3 + WL 5,L2ST2C+FR2 + WL 5,L2ST2C+FR1 + WL 5,L2ST2C+FR2 + WL 5,L2ST2C+FR3 + WL 5,L2ST2C+FR4 + WL 5,L2ST2C+FR5 + WL 5,L2ST2C+FR6 + WL 5,L2ST2C+FR7 + + .word ANI_REPEAT + + + SUBR lex_stand4_anim + SUBR lex_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 5,L4ST4C+FR4 + WL 5,L4ST4C+FR5 + WL 5,L4ST4C+FR6 + WL 5,L4ST4C+FR7 + WL 5,L4ST4C+FR6 + WL 5,L4ST4C+FR5 + WL 5,L4ST4C+FR4 + WL 5,L4ST4C+FR3 + WL 5,L4ST4C+FR2 + WL 5,L4ST4C+FR1 + WL 5,L4ST4C+FR2 + WL 5,L4ST4C+FR3 + + .word ANI_REPEAT + +#***************************************************************************** + + SUBR lex_holdoh_anim + WL 999,L4PO4A+FR10 + .word ANI_REPEAT + + SUBR lex_stndholdoh_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 999,L4PO4A+FR8 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR lex_torso2_anim + SUBR lex_torso8_anim + + WL 4,L2TW2Z+FR1 + WL 4,L2TW2Z+FR2 + WL 4,L2TW2Z+FR3 + WL 4,L2TW2Z+FR4 + WL 4,L2TW2Z+FR5 + WL 4,L2TW2Z+FR4 + WL 4,L2TW2Z+FR3 + WL 4,L2TW2Z+FR2 + .word ANI_REPEAT + + + SUBR lex_torso4_anim + SUBR lex_torso6_anim + + WL 4,L4TW4Z+FR1 + WL 4,L4TW4Z+FR2 + WL 4,L4TW4Z+FR3 + WL 4,L4TW4Z+FR4 + WL 4,L4TW4Z+FR5 + WL 4,L4TW4Z+FR4 + WL 4,L4TW4Z+FR3 + WL 4,L4TW4Z+FR2 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR lex_walk1_f2_anim + + WL 3,L2WL1B+FR1 + WL 2,L2WL1B+FR2 + WL 3,L2WL1B+FR3 + WL 2,L2WL1B+FR4 + WL 3,L2WL1B+FR5 + WL 2,L2WL1B+FR6 + WL 3,L2WL1B+FR7 + WL 2,L2WL1B+FR8 + WL 3,L2WL1B+FR9 + WL 2,L2WL1B+FR10 + WL 3,L2WL1B+FR11 + WL 2,L2WL1B+FR12 + WL 3,L2WL1B+FR13 + WL 2,L2WL1B+FR14 + WL 3,L2WL1B+FR15 + WL 2,L2WL1B+FR16 + + .word ANI_REPEAT + + SUBR lex_walk2_f2_anim + + WL 3,L2WL2A+FR1 + WL 2,L2WL2A+FR2 + WL 3,L2WL2A+FR3 + WL 2,L2WL2A+FR4 + WL 3,L2WL2A+FR5 + WL 2,L2WL2A+FR6 + WL 3,L2WL2A+FR7 + WL 2,L2WL2A+FR8 + WL 3,L2WL2A+FR9 + WL 2,L2WL2A+FR10 + WL 3,L2WL2A+FR11 + WL 2,L2WL2A+FR12 + WL 3,L2WL2A+FR13 + WL 2,L2WL2A+FR14 + WL 3,L2WL2A+FR15 + WL 2,L2WL2A+FR16 + WL 3,L2WL2A+FR17 + WL 2,L2WL2A+FR18 + + .word ANI_REPEAT + + SUBR lex_walk4_f2_anim + + WL 3,L2WL8A+FR1 + WL 2,L2WL8A+FR2 + WL 3,L2WL8A+FR3 + WL 2,L2WL8A+FR4 + WL 3,L2WL8A+FR5 + WL 2,L2WL8A+FR6 + WL 3,L2WL8A+FR7 + WL 2,L2WL8A+FR8 + WL 3,L2WL8A+FR9 + WL 2,L2WL8A+FR10 + WL 3,L2WL8A+FR11 + WL 2,L2WL8A+FR12 + WL 3,L2WL8A+FR13 + WL 2,L2WL8A+FR14 + WL 3,L2WL8A+FR15 + WL 2,L2WL8A+FR16 + WL 3,L2WL8A+FR17 + + .word ANI_REPEAT + + SUBR lex_walk5_f2_anim + + WL 3,L2WL1B+FR16 + WL 2,L2WL1B+FR15 + WL 3,L2WL1B+FR14 + WL 2,L2WL1B+FR13 + WL 3,L2WL1B+FR12 + WL 2,L2WL1B+FR11 + WL 3,L2WL1B+FR10 + WL 2,L2WL1B+FR9 + WL 3,L2WL1B+FR8 + WL 2,L2WL1B+FR7 + WL 3,L2WL1B+FR6 + WL 2,L2WL1B+FR5 + WL 3,L2WL1B+FR4 + WL 2,L2WL1B+FR3 + WL 3,L2WL1B+FR2 + WL 2,L2WL1B+FR1 + + .word ANI_REPEAT + + SUBR lex_walk6_f2_anim + + WL 3,L2WL2A+FR18 + WL 2,L2WL2A+FR17 + WL 3,L2WL2A+FR16 + WL 2,L2WL2A+FR15 + WL 3,L2WL2A+FR14 + WL 2,L2WL2A+FR13 + WL 3,L2WL2A+FR12 + WL 2,L2WL2A+FR11 + WL 3,L2WL2A+FR10 + WL 2,L2WL2A+FR9 + WL 3,L2WL2A+FR8 + WL 2,L2WL2A+FR7 + WL 3,L2WL2A+FR6 + WL 2,L2WL2A+FR5 + WL 3,L2WL2A+FR4 + WL 2,L2WL2A+FR3 + WL 3,L2WL2A+FR2 + WL 2,L2WL2A+FR1 + + .word ANI_REPEAT + + + SUBR lex_walk8_f2_anim + + WL 3,L2WL8A+FR17 + WL 2,L2WL8A+FR16 + WL 3,L2WL8A+FR15 + WL 2,L2WL8A+FR14 + WL 3,L2WL8A+FR13 + WL 2,L2WL8A+FR12 + WL 3,L2WL8A+FR11 + WL 2,L2WL8A+FR10 + WL 3,L2WL8A+FR9 + WL 2,L2WL8A+FR8 + WL 3,L2WL8A+FR7 + WL 2,L2WL8A+FR6 + WL 3,L2WL8A+FR5 + WL 2,L2WL8A+FR4 + WL 3,L2WL8A+FR3 + WL 2,L2WL8A+FR2 + WL 3,L2WL8A+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR lex_walk1_f4_anim + + WL 3,L4WL5A+FR17 + WL 2,L4WL5A+FR16 + WL 3,L4WL5A+FR15 + WL 2,L4WL5A+FR14 + WL 3,L4WL5A+FR13 + WL 2,L4WL5A+FR12 + WL 3,L4WL5A+FR11 + WL 2,L4WL5A+FR10 + WL 3,L4WL5A+FR9 + WL 2,L4WL5A+FR8 + WL 3,L4WL5A+FR7 + WL 2,L4WL5A+FR6 + WL 3,L4WL5A+FR5 + WL 2,L4WL5A+FR4 + WL 3,L4WL5A+FR3 + WL 2,L4WL5A+FR2 + WL 3,L4WL5A+FR1 + .word ANI_REPEAT + + SUBR lex_walk2_f4_anim + + WL 3,L4WL2B+FR1 + WL 2,L4WL2B+FR2 + WL 3,L4WL2B+FR3 + WL 2,L4WL2B+FR4 + WL 3,L4WL2B+FR5 + WL 2,L4WL2B+FR6 + WL 3,L4WL2B+FR7 + WL 2,L4WL2B+FR8 + WL 3,L4WL2B+FR9 + WL 2,L4WL2B+FR10 + WL 3,L4WL2B+FR11 + WL 2,L4WL2B+FR12 + WL 3,L4WL2B+FR13 + WL 2,L4WL2B+FR14 + WL 3,L4WL2B+FR15 + WL 2,L4WL2B+FR16 + + .word ANI_REPEAT + + SUBR lex_walk4_f4_anim + + WL 3,L4WL4A+FR1 + WL 2,L4WL4A+FR2 + WL 3,L4WL4A+FR3 + WL 2,L4WL4A+FR4 + WL 3,L4WL4A+FR5 + WL 2,L4WL4A+FR6 + WL 3,L4WL4A+FR7 + WL 2,L4WL4A+FR8 + WL 3,L4WL4A+FR9 + WL 2,L4WL4A+FR10 + WL 3,L4WL4A+FR11 + WL 2,L4WL4A+FR12 + WL 3,L4WL4A+FR13 + WL 2,L4WL4A+FR14 + WL 3,L4WL4A+FR15 + WL 2,L4WL4A+FR16 + WL 3,L4WL4A+FR17 + WL 2,L4WL4A+FR18 + + .word ANI_REPEAT + + SUBR lex_walk5_f4_anim + + WL 3,L4WL5A+FR1 + WL 2,L4WL5A+FR2 + WL 3,L4WL5A+FR3 + WL 2,L4WL5A+FR4 + WL 3,L4WL5A+FR5 + WL 2,L4WL5A+FR6 + WL 3,L4WL5A+FR7 + WL 2,L4WL5A+FR8 + WL 3,L4WL5A+FR9 + WL 2,L4WL5A+FR10 + WL 3,L4WL5A+FR11 + WL 2,L4WL5A+FR12 + WL 3,L4WL5A+FR13 + WL 2,L4WL5A+FR14 + WL 3,L4WL5A+FR15 + WL 2,L4WL5A+FR16 + WL 3,L4WL5A+FR17 + + .word ANI_REPEAT + + SUBR lex_walk6_f4_anim + + WL 3,L4WL2B+FR16 + WL 2,L4WL2B+FR15 + WL 3,L4WL2B+FR14 + WL 2,L4WL2B+FR13 + WL 3,L4WL2B+FR12 + WL 2,L4WL2B+FR11 + WL 3,L4WL2B+FR10 + WL 2,L4WL2B+FR9 + WL 3,L4WL2B+FR8 + WL 2,L4WL2B+FR7 + WL 3,L4WL2B+FR6 + WL 2,L4WL2B+FR5 + WL 3,L4WL2B+FR4 + WL 2,L4WL2B+FR3 + WL 3,L4WL2B+FR2 + WL 2,L4WL2B+FR1 + + .word ANI_REPEAT + + SUBR lex_walk8_f4_anim + + WL 3,L4WL4A+FR18 + WL 2,L4WL4A+FR17 + WL 3,L4WL4A+FR16 + WL 2,L4WL4A+FR15 + WL 3,L4WL4A+FR14 + WL 2,L4WL4A+FR13 + WL 3,L4WL4A+FR12 + WL 2,L4WL4A+FR11 + WL 3,L4WL4A+FR10 + WL 2,L4WL4A+FR9 + WL 3,L4WL4A+FR8 + WL 2,L4WL4A+FR7 + WL 3,L4WL4A+FR6 + WL 2,L4WL4A+FR5 + WL 3,L4WL4A+FR4 + WL 2,L4WL4A+FR3 + WL 3,L4WL4A+FR2 + WL 2,L4WL4A+FR1 + + .word ANI_REPEAT + +;There are too many rotate frames listed here... + + +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR lex_2_to_4_turn_anim + SUBR lex_8_to_6_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h +;Fix!!! +;Take out these extra frames + WL 2,L1TT5A+FR4 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_2_turn_anim + SUBR lex_6_to_8_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TT5A+FR6 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_6_turn_anim + SUBR lex_6_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TT5A+FR8 + .word ANI_XFLIP + WL 2,L1TT5A+FR9 + WL 2,L1TT5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_8_turn_anim + SUBR lex_8_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TT5A+FR2 + .word ANI_XFLIP + WL 2,L1TT5A+FR1 + WL 2,L1TT5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_8_turn_anim + SUBR lex_6_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TT5A+FR8 + .word ANI_XFLIP + WL 2,L1TT5A+FR9 + WL 2,L1TT5A+FR8 + WL 2,L4ST4C+FR4 ;#4 stand + WL 2,L1TT5A+FR6 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_6_turn_anim + SUBR lex_8_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TT5A+FR4 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR6 + WL 2,L4ST4C+FR4 ;#4 stand + WL 2,L1TT5A+FR8 + .word ANI_XFLIP + WL 2,L1TT5A+FR9 + WL 2,L1TT5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR lex_2_to_4_turn2_anim + SUBR lex_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR4 + WL 2,L1TR5A+FR5 + .word ANI_SETFACING + WL 2,L1TR5A+FR5 + WL 2,L1TR5A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_2_turn2_anim + SUBR lex_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR6 + WL 2,L1TR5A+FR5 + .word ANI_SETFACING + WL 2,L1TR5A+FR5 + WL 2,L1TR5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_6_turn2_anim + SUBR lex_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,L1TR5A+FR9 + WL 2,L1TR5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_8_turn2_anim + SUBR lex_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR2 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,L1TR5A+FR1 + WL 2,L1TR5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_to_8_turn2_anim + SUBR lex_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,L1TR5A+FR9 + WL 2,L1TR5A+FR8 + WL 2,L4TW4Z+FR1 ;#4 stand (torso) + WL 2,L1TR5A+FR6 + WL 2,L1TR5A+FR5 + WL 2,L1TR5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_to_6_turn2_anim + SUBR lex_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,L1TR5A+FR4 + WL 2,L1TR5A+FR5 + WL 2,L1TR5A+FR6 + WL 2,L4TW4Z+FR1 ;#4 stand (torso) + WL 2,L1TR5A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,L1TR5A+FR9 + WL 2,L1TR5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR lex_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR lex_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + +#lp1 + WL 3,L3RN3B+FR5 + WL 2,L3RN3B+FR6 + WL 3,L3RN3B+FR7 + WL 2,L3RN3B+FR8 + WL ANI_CODE,SMALL_RUN +#run2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL 3,L3RN3B+FR9 + WL 2,L3RN3B+FR10 + WL 3,L3RN3B+FR11 + WL 2,L3RN3B+FR12 + WL 3,L3RN3B+FR1 + WL 2,L3RN3B+FR2 + WL 3,L3RN3B+FR3 + WL ANI_CODE,SMALL_RUN + WL 2,L3RN3B+FR4 + + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR lex_bounce_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_OVERLAP|MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + WL ANI_CODE,fix_bnc_flip + WL ANI_CODE,MAYBE_BOUNCE_ROPE + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 2,L4BO3Z+FR1 + .word ANI_BOUNCEROPE,0 + WL 1,L4BO3Z+FR1 + + WL 2,L4BO3Z+FR2 + .word ANI_BOUNCEROPE,1 + WL ANI_CODE,SMALL_RUN + + WL 1,L4BO3Z+FR2 + + WL 2,L4BO3Z+FR3 + .word ANI_BOUNCEROPE,2 + WL 1,L4BO3Z+FR3 + + WL 2,L4BO3Z+FR4 + .word ANI_BOUNCEROPE,3 + WL 1,L4BO3Z+FR4 + + .word ANI_ZEROVELS + + WL 2,L4BO3Z+FR5 + .word ANI_BOUNCEROPE,4 + WL 1,L4BO3Z+FR5 + WL 3,L4BO3Z+FR6 + WL 2,L4BO3Z+FR7 + .word ANI_BOUNCEROPE,0 + WL 1,L4BO3Z+FR7 + WL 2,L4BO3Z+FR8 + .word ANI_BOUNCEROPE,-1 + WL ANI_CODE,SMALL_RUN + WL 1,L4BO3Z+FR8 + WL 3,L4BO3Z+FR9 + WL 3,L4BO3Z+FR10 + + .word ANI_OFFSET,-15,0,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/LEXSEQ2.ASM b/LEXSEQ2.ASM new file mode 100755 index 0000000..53f9bad --- /dev/null +++ b/LEXSEQ2.ASM @@ -0,0 +1,3307 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 7/15/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lexseq2.asm" + .title "routine punches and kicks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .include "leximg.h" + .include "damage.equ" + + .INCLUDE "SWEAT.EQU" + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref DO_CROWD_CHEER,set_tbukl_confine,grnd_hit,check_raisearm_bit + .ref SET_DIR_FACE,no_bk_xvel,start_run_anim,CALL_MISSES + .ref am_I_dead,lex_faceup_getup_anim,lex_dizzy_anim + .ref check_xvel,DO_GRUNT,HIT_THE_MAT,SMALL_BOUNCE + .ref CALL_ANI_AVERAGE_MOVE,set_tbukl_airmode + .ref DO_COMBO_MESS,hit_nearest + .ref lex_combo_sliding_elbow_anim + .ref lex_combo_hiptoss_anim + .ref lex_combo_backbreak_anim + .REF CALL_BONE_BREAK + +#***************************************************************************** +* +* #2 COMBO PUNCH + + SUBR lex_combo_punch_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .WORD ANI_CLEAR_COMBO + + WL 2,L2PU2B+FR1 + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 2,L2PU2B+FR2 + WL 2,L2PU2B+FR3 + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON,AMODE_PUNCH,28,52,44,44 + WL 2,L2PU2B+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit2 + .WORD ANI_INC_COMBO + + WL ANI_SET_YVEL,30000h + WL 2,L2PU2B+FR4 + WL 2,L2PU2B+FR5 + WL 2,L2PU2B+FR7 + WL 2,L2PU2B+FR8 + WL 2,L2PU2B+FR9 + WL 2,L4PU3B+FR1 + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 2,L4PU3B+FR2 + WL 2,L4PU3B+FR3 + + .word ANI_ATTACK_ON,AMODE_PUNCH,28,52,44,44 + WL 2,L4PU3B+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit4 + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,30000h + WL 2,L4PU3B+FR4 + WL 2,L4PU3B+FR5 + WL 2,L4PU3B+FR6 + WL 2,L4PU3B+FR8 + WL 2,L4PU3B+FR9 + + .word ANI_SET_RPTCOUNT,2 ;3 times +#punch_loop + .word ANI_CLR_BUTCOUNT + WL 1,L2PU2B+FR1 + WL 1,L2PU2B+FR2 + WL 1,L2PU2B+FR3 + .word ANI_ATTACK_ON,AMODE_PUNCH,28,82,44,24 + WL 2,L2PU2B+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit2 + .WORD ANI_INC_COMBO + + WL ANI_SET_YVEL,18000h + WL 1,L2PU2B+FR4 + WL 2,L2PU2B+FR5 + WL 1,L2PU2B+FR7 + WL 1,L2PU2B+FR8 + WL 1,L2PU2B+FR9 + + WL 1,L4PU3B+FR1 + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 2,L4PU3B+FR2 + WL 1,L4PU3B+FR3 + + .word ANI_ATTACK_ON,AMODE_PUNCH,28,82,44,24 + WL 2,L4PU3B+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit4 + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,18000h + WL 1,L4PU3B+FR4 + + WL 2,L4PU3B+FR5 + WL 1,L4PU3B+FR6 + WL 1,L4PU3B+FR8 + WL 1,L4PU3B+FR9 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#punch_loop + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#no_clobber + WL ANI_CHANGEANIM,lex_combo_clobber_anim +#no_clobber + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#no_knee + WL ANI_CHANGEANIM,lex_combo_knee_fall_anim +#no_knee + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit + WL ANI_CHANGEANIM,lex_combo_butt_anim +#exit + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit4 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,L4PU3B+FR5 + WL 3,L4PU3B+FR6 + WL 3,L4PU3B+FR8 + WL 3,L4PU3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit2 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,L2PU2B+FR5 + WL 3,L2PU2B+FR7 + WL 3,L2PU2B+FR8 + WL 3,L2PU2B+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 NORMAL PUNCH + + SUBR lex_2_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2PU2B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2PU2B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2PU2B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 1,L2PU2B+FR2 + WL 2,L2PU2B+FR3 + .word ANI_ATTACK_ON,AMODE_PUNCH,28,82,44,24 + WL 3,L2PU2B+FR4 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 3,L2PU2B+FR4 +#no_hit + WL 3,L2PU2B+FR5 + WL 2,L2PU2B+FR7 + WL 3,L2PU2B+FR8 + WL 2,L2PU2B+FR9 + + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 NORMAL PUNCH + + SUBR lex_4_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4PU3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4PU3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4PU3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 1,L4PU3B+FR2 + WL 2,L4PU3B+FR3 + + .word ANI_ATTACK_ON,AMODE_PUNCH,28,82,44,24 + WL 3,L4PU3B+FR4 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 3,L4PU3B+FR4 + +#no_hit2 + WL 3,L4PU3B+FR5 + WL 2,L4PU3B+FR6 + WL 3,L4PU3B+FR8 + WL 2,L4PU3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 PUSH + + SUBR lex_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_SETFLAG,M_PUSH + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,L4PS3A+FR1 + WL 3,L4PS3A+FR2 + WL 3,L4PS3A+FR3 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ATTACK_ON, AMODE_PUSH,11,47,91,50 ;mode,x,y,w,h + WL 3,L4PS3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-70000h,#no_hit ;range,vel,addr + WL 15,L4PS3A+FR4 +#no_hit + WL 3,L4PS3A+FR4 + + WL ANI_IFSTATUS,#hit +;If missed on push, hold a little longer + WL 5,L4PS3A+FR4 +#hit + WL 3,L4PS3A+FR3 + WL 3,L4PS3A+FR2 + WL 3,L4PS3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR lex_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,L3PB3A+FR3 + WL 3,L3PB3A+FR4 + .REF DO_LEX_PUSH + WL ANI_CODE,DO_LEX_PUSH + WL 3,L3PB3A+FR5 + WL 3,L3PB3A+FR6 + WL 3,L3PB3A+FR7 + WL 3,L3PB3A+FR8 + WL 3,L3PB3A+FR9 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 combo FALLEN OPPONENT + + SUBR lex_combo_ground_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 3,L2PT2B+FR1 + WL 3,L2PT2B+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,-4,-6,-40,37,36,50 + WL 1,L2PT2B+FR2 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL ANI_SET_YVEL,80000h + + .word ANI_SET_RPTCOUNT,3 ;5 times +#ground_loop + WL 3,L2PT2B+FR3 + WL 3,L2PT2B+FR4 + WL 1,L2PT2B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,L2PT2B+FR6 + WL 3,L2PT2B+FR7 + + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-4,-6,-40,37,36,50 + WL 1,L2PT2B+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_GOTO,#missed + +#leapat_stomp + ;too far. leap at the chest. + .word ANI_TARGET,TGT_CHEST,TGT_KNEES,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,112,96,90000h,TGT_USER,13,0,-40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_LBDROP,16 + + WL 3,L2PT2B+FR3 + WL 3,L2PT2B+FR4 + WL 1,L2PT2B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,L2PT2B+FR6 + WL 2,L2PT2B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-4,-6,-40,37,36,50 + WL 1,L2PT2B+FR8 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#hit + WL ANI_GOTO,#missed + +#hit + .word ANI_INC_COMBO + .word ANI_IMMOBILIZE,75 + .word ANI_SHAKER,18 + .word ANI_SHAKEALL,1 + WL 5,L2PT2B+FR8 + WL 2,L2PT2B+FR9 + WL 2,L2PT2B+FR10 + WL 2,L2PT2B+FR11 + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#exit_ground + WL ANI_SET_YVEL,20000h + WL ANI_GOTO,#ground_loop + +#exit_ground + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + + WL 7,L2PT2B+FR8 + WL 3,L2PT2B+FR9 + WL 3,L2PT2B+FR10 + WL 3,L2PT2B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 PUNCH FALLEN OPPONENT + + SUBR lex_2_ground_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2PT2B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2PT2B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2PT2B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_LBDROP,11 + WL 3,L2PT2B+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,-4,-6,-40,37,36,50 + WL 1,L2PT2B+FR2 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL ANI_SET_YVEL,20000h + + WL 3,L2PT2B+FR3 + WL 3,L2PT2B+FR4 + WL 1,L2PT2B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,L2PT2B+FR6 + WL 2,L2PT2B+FR7 + + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-4,-6,-40,37,36,50 + WL 1,L2PT2B+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_GOTO,#missed + +#leapat_stomp + ;too far. leap at the chest. + .word ANI_TARGET,TGT_CHEST,TGT_KNEES,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,160,140,90000h,TGT_USER,13,0,-40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_LBDROP,16 + + WL 3,L2PT2B+FR3 + WL 3,L2PT2B+FR4 + WL 1,L2PT2B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,L2PT2B+FR6 + WL 2,L2PT2B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-4,-6,-40,37,36,50 + WL 1,L2PT2B+FR8 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#hit + WL ANI_GOTO,#missed + +#hit + .word ANI_SHAKER,25 + .word ANI_SHAKEALL,1 + WL 3,L2PT2B+FR8 + WL 3,L2PT2B+FR9 + WL 3,L2PT2B+FR10 + WL 3,L2PT2B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + WL 3,L2PT2B+FR8 + WL 3,L2PT2B+FR9 + WL 3,L2PT2B+FR10 + WL 3,L2PT2B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 PUNCH FALLEN OPPONENT + + SUBR lex_4_ground_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4PT4B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4PT4B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4PT4B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_STOMP,18 + WL 3,L4PT4B+FR2 + WL 2,L4PT4B+FR3 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,-3,-1,-10,29,28,50 + WL 1,L4PT4B+FR3 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL ANI_SET_YVEL,20000h + + WL 3,L4PT4B+FR4 + WL 3,L4PT4B+FR5 + .word ANI_WAITHITGND ;just in case OFFSET left us in air + WL 3,L4PT4B+FR6 + WL 3,L4PT4B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-1,-10,29,28,50 + WL 1,L4PT4B+FR8 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#hit + WL ANI_GOTO,#missed + +#leapat_stomp + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,160,140,90000h,TGT_USER,15,0,50 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,16 + + WL 3,L4PT4B+FR4 + WL 3,L4PT4B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L4PT4B+FR6 + WL 2,L4PT4B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-1,-10,29,28,50 + WL 1,L4PT4B+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_GOTO,#missed + +#hit + .word ANI_SHAKER,18 + .word ANI_SHAKEALL,1 + + WL 3,L4PT4B+FR8 + WL 3,L4PT4B+FR9 + WL 3,L4PT4B+FR10 + WL 3,L4PT4B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + WL 3,L4PT4B+FR8 + WL 3,L4PT4B+FR9 + WL 3,L4PT4B+FR10 + WL 3,L4PT4B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 CLOBBER - Super punch / same as slap + + SUBR lex_3_clobber_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUNCH,18 + WL 3,L4PT3B+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 13,999,50h,50,90000h,TGT_HEAD,75,101,0 + WL ANI_CODE,no_bk_xvel + + WL 3,L4PT3B+FR2 + WL 9,L4PT3B+FR3 + WL 3,L4PT3B+FR4 + + WL ANI_CODE,#stop_debris + .word ANI_ATTACK_ON, AMODE_URN,31,63,56,38 ;mode,x,y,w,h + WL 3,L4PT3B+FR5 + WL ANI_CODE,HIT_THE_MAT + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#blocked + + WL ANI_CODE,#restore_debris + .ref create_impact + WL ANI_CODE,create_impact + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + + WL 3,L4PT3B+FR6 + WL ANI_CODE,CALL_BONE_BREAK +; .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WL 5,L4PT3B+FR7 + + + .ref spunch_delay + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none0 + WL 15,L4PT3B+FR7 +#none0 + + + WL 3,L4PT3B+FR8 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES +#blocked + WL ANI_CODE,#restore_debris + WL 3,L4PT3B+FR6 + WL 10,L4PT3B+FR7 + + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none + WL 15,L4PT3B+FR7 +#none + WL 3,L4PT3B+FR8 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************** + + SUBR lex_combo_clobber_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUNCH,18 + WL 3,L4PT3B+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 13,999,50h,50,90000h,TGT_HEAD,75,101,0 + WL ANI_CODE,no_bk_xvel + + WL 3,L4PT3B+FR2 + WL 9,L4PT3B+FR3 + WL 3,L4PT3B+FR4 + + WL ANI_CODE,#stop_debris + .word ANI_ATTACK_ON, AMODE_BIGKNEE,31,63,56,38 ;mode,x,y,w,h + WL 3,L4PT3B+FR5 + WL ANI_CODE,HIT_THE_MAT + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#blockedc + .WORD ANI_INC_COMBO + + WL ANI_CODE,#restore_debris + .ref create_impact + WL ANI_CODE,create_impact + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + + WL 3,L4PT3B+FR6 + WL ANI_CODE,CALL_BONE_BREAK +; .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WL 5,L4PT3B+FR7 + WL 3,L4PT3B+FR8 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedc + WL ANI_CODE,CALL_MISSES +#blockedc + WL ANI_CODE,#restore_debris + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,L4PT3B+FR6 + WL 10,L4PT3B+FR7 + WL 3,L4PT3B+FR8 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +****************************************************************** + + .bss #kp_debris,16 + .ref no_debris + +#stop_debris + move @no_debris,a0 + move a0,@#kp_debris + movk 1,a0 + move a0,@no_debris + rets + +#restore_debris + move @#kp_debris,a0 + move a0,@no_debris + rets + +#* +* #4 HAMMER POUND OF FALLEN OPPONENT + + SUBR lex_hammer_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_HAMMER1,12 + .word ANI_SET_RPTCOUNT,4 ;5 times + +; .ref create_bucket_salt + +; WL ANI_CODE,create_bucket_salt +; WWL ANI_SETLONG,DEBRIS_X,[115,-6] ;Y,X of head +; WL 3,L4HM3A+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 7,170,60,50,90000h,TGT_GROIN,95,62,13h ;13 + + WL ANI_SET_YVEL,34000h + +; WWL ANI_SETLONG,DEBRIS_X,[81,-25] ;Y,X of head + WL 3,L4HM3A+FR2 +; WWL ANI_SETLONG,DEBRIS_X,[84,-23] ;Y,X of head + WL 3,L4HM3A+FR3 ;16 +; WWL ANI_SETLONG,DEBRIS_X,[99,-24] ;Y,X of head + WL 3,L4HM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS +; WWL ANI_SETLONG,DEBRIS_X,[143,3] ;Y,X of head + WL 3,L4HM3A+FR5 +; WWL ANI_SETLONG,DEBRIS_X,[122,79] ;Y,X of head + WL 2,L4HM3A+FR6 + .word ANI_ATTACK_ON,AMODE_HAMMER,32,-8,92,146 ;mode,x,y,w,h +; WWL ANI_SETLONG,DEBRIS_X,[64,101] ;Y,X of head + WL 2,L4HM3A+FR6 +; WWL ANI_SETLONG,DEBRIS_X,[5,90] ;Y,X of head + WL 3,L4HM3A+FR7 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFNOTSTATUS,#tagmiss + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;He got him, shake screen + .word ANI_DAMAGEOPP,D_HAMMER1,RD_HAMMER1 +; .word ANI_DRAW_NAME,25 + +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,30 + .word ANI_SHAKER,45 + + .ref CALL_NASTY_MOVE + WL ANI_CODE,CALL_NASTY_MOVE + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#missedb + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_hammer + +#missedb +#tagmiss + +; WWL ANI_SETLONG,DEBRIS_X,[6,83] ;Y,X of head + WL 3,L4HM3A+FR8 +; WWL ANI_SETLONG,DEBRIS_X,[35,74] ;Y,X of head + WL 3,L4HM3A+FR9 +; WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#dnk_quick_hammer + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_HAMMER1,27 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,L4HM3A+FR8 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,L4HM3A+FR9 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,L4PT3B+FR1 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head +; WL 3,L4HM3A+FR1 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,L4HM3A+FR2 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,L4HM3A+FR3 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,L4HM3A+FR4 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,L4HM3A+FR5 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 1,L4HM3A+FR6 + .word ANI_ATTACK_ON,AMODE_HAMMER,32,-8,92,73 ;mode,x,y,w,h + WL 2,L4HM3A+FR6 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,L4HM3A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#tagmiss + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,30 + + .word ANI_SHAKER,45 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,2,#failed + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_hammer +#failed + +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,L4HM3A+FR8 +; WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,L4HM3A+FR9 +; WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#*********************************************** + + SUBR lex_combo_hammer_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_HAMMER1,12 + .word ANI_SET_RPTCOUNT,4 ;5 times + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 7,170,60,30,90000h,TGT_GROIN,95,62,0;13h ;13 + + WL ANI_SET_YVEL,34000h + + WL 3,L4HM3A+FR2 + WL 3,L4HM3A+FR3 ;16 + WL 3,L4HM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,L4HM3A+FR5 + WL 2,L4HM3A+FR6 + .word ANI_ATTACK_ON, AMODE_HAMMER,21,-10,88,73 ;mode,x,y,w,h + WL 2,L4HM3A+FR6 + WL 3,L4HM3A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#tagmiss + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;He got him, shake screen + .WORD ANI_INC_COMBO + .word ANI_DAMAGEOPP,D_HAMMER1,RD_HAMMER1 + +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,30 + .word ANI_SHAKER,25 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#missedb + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_hammer + +#missedb +#tagmiss + + WL 3,L4HM3A+FR8 + WL 3,L4HM3A+FR9 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#dnk_quick_hammer + .word ANI_CLR_BUTCOUNT + .word ANI_STARTATTACK,AT_HAMMER1,27 + WL 2,L4HM3A+FR8 + WL 2,L4HM3A+FR9 + WL 2,L4PT3B+FR1 + WL 2,L4HM3A+FR2 + WL 2,L4HM3A+FR3 + WL 2,L4HM3A+FR4 + WL 2,L4HM3A+FR5 + WL 1,L4HM3A+FR6 + .word ANI_ATTACK_ON, AMODE_HAMMER,21,-10,88,73 ;mode,x,y,w,h + WL 1,L4HM3A+FR6 + WL 2,L4HM3A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#tagmiss + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + .WORD ANI_INC_COMBO + +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,30 + + .word ANI_SHAKER,25 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,2,#failed + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#dnk_quick_hammer +#failed + + WL 3,L4HM3A+FR8 + WL 3,L4HM3A+FR9 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 CLOBBER (same art as #2 punch fallen, except for the puffin) + + SUBR lex_2_clobber_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUNCH,18 + WL 2,L2PT2B+FR1 + WL 2,L2PT2B+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 11,999,112,96,90000h,TGT_CHEST|TGT_GROUND,28,0,-30 + WL ANI_CODE,no_bk_xvel + + WL 3,L2PT2B+FR3 + + ;18 ticks is too long to wait for a hit box, so we check for + ; a hit at 9, and if we get one, we freeze the victim so we'll + ; hit at 18. +; .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,4,12,-40,30,94,50 +; WL 1,L2PT2B+FR4 +; .word ANI_ATTACK_OFF +; WL ANI_IFBLOCKED,#no_freeze +; WL ANI_IFNOTSTATUS,#no_freeze +; .word ANI_IMMOBILIZE,9 +;#no_freeze + WL 2,L2PT2B+FR4 + WL 2,L2PT2B+FR5 + WL 2,L2PT2B+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT +; .word ANI_IMMOBILIZE,55-11-10 + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP2,4,12,-40,30,94,50 + WL 1,L2PT2B+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFBLOCKED,#blocked + + .word ANI_IMMOBILIZE,55-11-10 + + .word ANI_OFFSET,0,0,10 + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,1 + + WL 2,L2PT2B+FR7 + WL ANI_CODE,CALL_BONE_BREAK +; .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WL 8,L2PT2B+FR8 + WL 2,L2PT2B+FR9 + WL 2,L2PT2B+FR10 + WL 2,L2PT2B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES +#blocked + WL 2,L2PT2B+FR7 + WL 6,L2PT2B+FR8 + WL 2,L2PT2B+FR9 + WL 2,L2PT2B+FR10 + WL 2,L2PT2B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 CLOBBER (same art as #4 punch fallen) + + SUBR lex_4_clobber_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,21 + WL 2,L4PT4B+FR1 + WL 2,L4PT4B+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 11,999,112,96,90000h,TGT_CHEST|TGT_GROUND,24,0,30 + WL ANI_CODE,no_bk_xvel + + WL 3,L4PT4B+FR3 + + ;18 ticks is too long to wait for a hit box, so we check for + ; a hit at 9, and if we get one, we freeze the victim so we'll + ; hit at 18. +; .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,4,12,-10,30,94,50 +; WL 1,L4PT4B+FR4 +; .word ANI_ATTACK_OFF +; WL ANI_IFBLOCKED,#no_freeze +; WL ANI_IFNOTSTATUS,#no_freeze +; .word ANI_IMMOBILIZE,9 +;#no_freeze + WL 2,L4PT4B+FR4 + WL 2,L4PT4B+FR5 + WL 2,L4PT4B+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT +; .word ANI_IMMOBILIZE,55-11-10 + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP2,4,12,-10,30,94,50 + WL 1,L4PT4B+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFBLOCKED,#blocked + + .word ANI_IMMOBILIZE,55-11-10 + + .word ANI_OFFSET,0,0,-10 + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,1 + + WL 2,L4PT4B+FR7 + WL ANI_CODE,CALL_BONE_BREAK +; .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WL 8,L4PT4B+FR8 + WL 2,L4PT4B+FR9 + WL 2,L4PT4B+FR10 + WL 2,L4PT4B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES +#blocked + WL 2,L4PT4B+FR7 + WL 6,L4PT4B+FR8 + WL 2,L4PT4B+FR9 + WL 2,L4PT4B+FR10 + WL 2,L4PT4B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #combo CLOBBER (same art as #4 punch fallen) + + + SUBR lex_combo_ground_clobber_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,21 + WL 3,L4PT4B+FR1 + WL 3,L4PT4B+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,112,96,90000h,TGT_CHEST|TGT_GROUND,24,0,30 + WL ANI_CODE,no_bk_xvel + + WL 3,L4PT4B+FR3 + + ;18 ticks is too long to wait for a hit box, so we check for + ; a hit at 9, and if we get one, we freeze the victim so we'll + ; hit at 18. + .word ANI_SET_RPTCOUNT,3 ;5 times +#ground_clobber_loop + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,4,2,-10,30,100,50 + WL 1,L4PT4B+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFBLOCKED,#no_freeze + WL ANI_IFNOTSTATUS,#no_freeze + .word ANI_IMMOBILIZE,9 +#no_freeze + WL 2,L4PT4B+FR4 + WL 3,L4PT4B+FR5 + WL 3,L4PT4B+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_IMMOBILIZE,55-11 + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP2,4,2,-10,30,100,50 + WL 1,L4PT4B+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#blocked + .word ANI_INC_COMBO + .word ANI_OFFSET,0,0,-10 + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + + WL 2,L4PT4B+FR7 + WL ANI_CODE,CALL_BONE_BREAK +; .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WL 8,L4PT4B+FR8 + WL 4,L4PT4B+FR9 + WL 4,L4PT4B+FR10 + WL 4,L4PT4B+FR11 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#ground_clobber_loop + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES +#blocked + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 2,L4PT4B+FR7 + WL 8,L4PT4B+FR8 + WL 3,L4PT4B+FR9 + WL 3,L4PT4B+FR10 + WL 3,L4PT4B+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR lex_2_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2BC3E+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2BC3E+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2BC3E+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 1,L2BC3E+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + .word ANI_STARTATTACK,AT_HDBUTT,2 + WL 2,L2BC3E+FR4 + .word ANI_ATTACK_ON, AMODE_HDBUTT,8,85,30,18 ;mode,x,y,w,h + WL 3,L2BC3E+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,L2BC3E+FR5 +#no_hit + + WL 3,L2BC3E+FR5 + WL 3,L2BC3E+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR lex_2_butts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,3 ;5 times + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 +#rpt + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 2,L2BC3E+FR3 + WL 2,L2BC3E+FR4 + .word ANI_ATTACK_ON, AMODE_HDBUTT_STAY,8,85,35,18 ;mode,x,y,w,h + WL 2,L2BC3E+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,L2BC3E+FR5 +#no_hit + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,200,2,0,100,0 ;%chance, tbl index, x,y,z off + .ref impact_sound + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex + .word ANI_DEC_RPTCOUNT + + WL 3,L2BC3E+FR5 + WL 3,L2BC3E+FR6 + + WL ANI_IF_RPTCOUNT,#rpt + WL ANI_CHANGEANIM,lex_2_butt_anim + +#ex + WLLL ANI_SETOPPVELS,40000h,38000h,0h ;x,y,z vels + WL 3,L2BC3E+FR5 + WL 3,L2BC3E+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WLLL ANI_SETOPPVELS,50000h,18000h,0h ;x,y,z vels +#missed + WL 2,L2BC3E+FR5 + WL 2,L2BC3E+FR6 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #COMBO HEADBUTT + + SUBR lex_combo_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + WL 2,L4BC3D+FR1 + WL 1,L4BC3D+FR3 + WL 1,L4BC3D+FR3 + WL 2,L4BC3D+FR4 + .word ANI_ATTACK_ON, AMODE_HDBUTT,8,55,50,38 ;mode,x,y,w,h + WL 1,L4BC3D+FR5 + WLW ANI_SET_XVEL,0000h,AM_FACE_REL + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit + .WORD ANI_INC_COMBO + WLLL ANI_SETOPPVELS,0000H,10000h,0h ;x,y,z vels + + WL ANI_SET_YVEL,20000h + WL 6,L4BC3D+FR5 + WL 4,L4BC3D+FR5 + WL 4,L4BC3D+FR6 + + .word ANI_SET_RPTCOUNT,3 ;3 times +#butt_loop + .word ANI_CLR_BUTCOUNT + WL 1,L4BC3D+FR1 + WL 1,L4BC3D+FR3 + WL 1,L4BC3D+FR3 + WL 1,L4BC3D+FR4 + .word ANI_ATTACK_ON, AMODE_HDBUTT,8,55,50,38 ;mode,x,y,w,h + WL 1,L4BC3D+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit + .WORD ANI_INC_COMBO + WLLL ANI_SETOPPVELS,0000H,10000h,0h ;x,y,z vels + + WL ANI_SET_YVEL,20000h + WL 3,L4BC3D+FR5 + WL 2,L4BC3D+FR5 + WL 2,L4BC3D+FR6 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#butt_loop + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#no_clobber + WL ANI_CHANGEANIM,lex_combo_clobber_anim + +#no_clobber + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#no_back + WL ANI_CHANGEANIM,lex_combo_backbreak_anim + +#no_back + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit + WL ANI_CHANGEANIM,lex_combo_hiptoss_anim + +#exit + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 4,L4BC3D+FR5 + WL 4,L4BC3D+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEADBUTT + + SUBR lex_4_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4BC3D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4BC3D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4BC3D+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_HDBUTT,2 + WL 2,L4BC3D+FR4 + .word ANI_ATTACK_ON, AMODE_HDBUTT,8,85,30,18 ;mode,x,y,w,h + WL 3,L4BC3D+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,L4BC3D+FR5 +#no_hit + WL 3,L4BC3D+FR5 + WL 3,L4BC3D+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEADBUTT + + SUBR lex_4_butts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,3 ;5 times + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 +#rpt + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 2,L4BC3D+FR3 + WL 2,L4BC3D+FR4 + .word ANI_ATTACK_ON, AMODE_HDBUTT_STAY,8,85,30,18 ;mode,x,y,w,h + WL 2,L4BC3D+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,L4BC3D+FR5 +#no_hit + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,200,2,0,100,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex + .word ANI_DEC_RPTCOUNT + + WL 3,L4BC3D+FR5 + WL 3,L4BC3D+FR6 + + WL ANI_IF_RPTCOUNT,#rpt + + WL ANI_CHANGEANIM,lex_4_butt_anim +#ex + WLLL ANI_SETOPPVELS,40000h,38000h,0h ;x,y,z vels + + WL 2,L4BC3D+FR5 + WL 2,L4BC3D+FR6 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WLLL ANI_SETOPPVELS,50000h,18000h,0h ;x,y,z vels +#missed + WL 2,L4BC3D+FR5 + WL 2,L4BC3D+FR6 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #COMBO KICK + SUBR lex_combo_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .WORD ANI_CLEAR_COMBO + + WL 2,L2KM3A+FR1 + WL 1,L2KM3A+FR2 + WL 2,L2KM3A+FR2 + WL 2,L2KM3A+FR3 + WL 2,L2KM3A+FR4 + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON, AMODE_KICK,27,39,68,40 ;mode,x,y,w,h + WL 1,L2KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit2 + WLLL ANI_SETOPPVELS,0000H,10000h,0h ;x,y,z vels + + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,30000h + WL 3,L2KM3A+FR5 + + WL 3,L2KM3A+FR5 + WL 2,L2KM3A+FR6 + WL 2,L2KM3A+FR7 + WL 3,L2KM3A+FR8 + WL 3,L2KM3A+FR9 + + WL 2,L4KM3B+FR1 + WL 1,L4KM3B+FR2 + WL 2,L4KM3B+FR2 + WL 2,L4KM3B+FR3 + WL 2,L4KM3B+FR4 + .word ANI_ATTACK_ON, AMODE_KICK,27,39,68,40 ;mode,x,y,w,h + WL 1,L4KM3B+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit4 + WLLL ANI_SETOPPVELS,0000H,10000h,0h ;x,y,z vels + + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,30000h + WL 3,L4KM3B+FR5 + WL 3,L4KM3B+FR5 + WL 2,L4KM3B+FR6 + WL 2,L4KM3B+FR7 + WL 3,L4KM3B+FR8 + WL 3,L4KM3B+FR9 + + .word ANI_SET_RPTCOUNT,2 ;3 times +#kick_loop + .word ANI_CLR_BUTCOUNT + WL 1,L2KM3A+FR2 + WL 1,L2KM3A+FR3 + WL 1,L2KM3A+FR4 + .word ANI_ATTACK_ON, AMODE_KICK,27,39,68,40 ;mode,x,y,w,h + WL 1,L2KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit2 + WLLL ANI_SETOPPVELS,0000H,30000h,0h ;x,y,z vels + + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,38000h + WL 1,L2KM3A+FR5 + + WL 2,L2KM3A+FR5 + WL 1,L2KM3A+FR6 + WL 1,L2KM3A+FR7 + WL 2,L2KM3A+FR8 + WL 1,L2KM3A+FR9 + + WL 1,L4KM3B+FR2 + WL 1,L4KM3B+FR3 + WL 1,L4KM3B+FR4 + .word ANI_ATTACK_ON, AMODE_KICK,27,39,68,40 ;mode,x,y,w,h + WL 1,L4KM3B+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit4 + WLLL ANI_SETOPPVELS,0000H,30000h,0h ;x,y,z vels + + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,38000h + WL 1,L4KM3B+FR5 + WL 2,L4KM3B+FR5 + WL 1,L4KM3B+FR6 + WL 1,L4KM3B+FR7 + WL 2,L4KM3B+FR8 + WL 1,L4KM3B+FR9 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#kick_loop + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#no_clobber + WL ANI_CHANGEANIM,lex_combo_clobber_anim +#no_clobber + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#no_knee + WL ANI_CHANGEANIM,lex_combo_knee_fall_anim +#no_knee + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#no_hit4 + WL ANI_CHANGEANIM,lex_combo_sliding_elbow_anim +#no_hit4 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,L4KM3B+FR5 + WL 2,L4KM3B+FR6 + WL 2,L4KM3B+FR7 + WL 3,L4KM3B+FR8 + WL 3,L4KM3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit2 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,L2KM3A+FR5 + WL 2,L2KM3A+FR6 + WL 2,L2KM3A+FR7 + WL 3,L2KM3A+FR8 + WL 3,L2KM3A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK - Against TB attacks + + SUBR lex_kick_TB_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_STARTATTACK,AT_LEAPING,12 + + WL 2,L2KM3A+FR2 + WL ANI_SET_YVEL,70000h + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL 3,L2KM3A+FR3 + WL 3,L2KM3A+FR4 + .word ANI_ATTACK_ON, AMODE_SPINKICK,27,59,68,20 ;mode,x,y,w,h + WL 10,L2KM3A+FR5 + .word ANI_ATTACK_OFF + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 2,L2KM3A+FR6 + WL 2,L2KM3A+FR7 + WL 3,L2KM3A+FR8 + WL 3,L2KM3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK + + SUBR lex_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KICK,6 + WL 2,L2KM3A+FR2 + WL 2,L2KM3A+FR3 + WL 2,L2KM3A+FR4 + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 2,L2KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 3,L2KM3A+FR5 + +#no_hit + WL 2,L2KM3A+FR5 + WL 2,L2KM3A+FR6 + WL 2,L2KM3A+FR7 + WL 2,L2KM3A+FR8 + WL 2,L2KM3A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KICK + + SUBR lex_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4KM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4KM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4KM3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KICK,6 + WL 2,L4KM3B+FR2 + WL 2,L4KM3B+FR3 + WL 2,L4KM3B+FR4 + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 2,L4KM3B+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 3,L4KM3B+FR5 +#no_hit2 + WL 2,L4KM3B+FR5 + WL 2,L4KM3B+FR6 + WL 2,L4KM3B+FR7 + WL 2,L4KM3B+FR8 + WL 2,L4KM3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #3 SUPER KICK & FLYING KICK (same art, different leap) + +#xoff equ 10 +#yoff equ 4 + + SUBR lex_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,15 + WL 3,L4KB3C+FR1 + .word ANI_OFFSET,#xoff,#yoff,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,145,65,90000h,TGT_HEAD,66,84,0 + WL ANI_CODE,no_bk_xvel + WL 2,L4KB3C+FR2 + WL 7,L4KB3C+FR3 + WL 2,L4KB3C+FR4 + .word ANI_ATTACK_ON,AMODE_FLYKICK,6,64,74,40 + WWL ANI_WAITHITOPP,7,L4KB3C+FR5 + WL ANI_GOTO,#atk_off + + SUBR lex_super_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,15 + WL 3,L4KB3C+FR1 + .word ANI_OFFSET,#xoff,#yoff,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 10,999,80,45,90000h,TGT_CHEST,66,0,-20 + WL ANI_SET_YVEL,48000h + WL 3,L4KB3C+FR2 + WL 5,L4KB3C+FR3 + WL 2,L4KB3C+FR4 + .word ANI_ATTACK_ON,AMODE_KICK,6,54,76,46 + WL 3,L4KB3C+FR5 +#atk_off + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#wait + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFBLOCKED,#blocked + +#hit + .word ANI_ZERO_XZVELS + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slide + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,28000h,AM_ABS + WL ANI_GOTO,#wait + +#no_slide +#blocked + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_SET_YVEL,28000h +; WL ANI_GOTO,#wait + +#wait ;land. + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L4KB3C+FR6 + WL 2,L4KB3C+FR7 + WL 2,L4KB3C+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR lex_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 3,L2MP2A+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,7,-2,-40,23,32,50 + WL 1,L2MP2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + .word ANI_STARTATTACK,AT_STOMP,12 + WL 3,L2MP2A+FR3 + WL 3,L2MP2A+FR5 + WL 3,L2MP2A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,3,-6,-40,31,40,50 + WL 3,L2MP2A+FR7 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + WL 3,L2MP2A+FR8 + WL 3,L2MP2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + + .word ANI_TARGET,TGT_GROIN,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,160,140,90000h,TGT_USER,17,0,-50 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,14 + + WL 3,L2MP2A+FR3 + WL 3,L2MP2A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L2MP2A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,3,-6,-40,31,40,50 + WL 3,L2MP2A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 3,L2MP2A+FR8 + WL 3,L2MP2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + + SUBR lex_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4MP3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4MP3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4MP3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,1,-9,-10,31,30,50 + WL 1,L4MP3A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + .word ANI_STARTATTACK,AT_STOMP,14 + WL 3,L4MP3A+FR3 + WL 3,L4MP3A+FR4 + WL 3,L4MP3A+FR5 + WL 2,L4MP3A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-13,-10,39,38,50 + WL 4,L4MP3A+FR7 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + WL 3,L4MP3A+FR9 + WL 3,L4MP3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + + .word ANI_TARGET,TGT_KNEES,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,160,140,90000h,TGT_USER,13,0,50 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,14 + WL 3,L4MP3A+FR3 + WL 3,L4MP3A+FR4 + WL 3,L4MP3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L4MP3A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-3,-13,-10,39,38,50 + WL 4,L4MP3A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 3,L4MP3A+FR9 + WL 3,L4MP3A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 FLYING GROUND-PUNCH + +#yoff equ 25 + + SUBR lex_flying_ground_punch_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + WL 3,L3PJ3F+FR1 + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_FARTHEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,200,150,90,90000h,TGT_USER,56,#yoff,50 + .word ANI_SETPLYRMODE,MODE_INAIR + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_BUTTSTOMP,25 + + .word ANI_OFFSET,0,#yoff,0 + WL 3,L3PJ3F+FR3 + WL 3,L3PJ3F+FR4 + WL 3,L3PJ3F+FR5 + WL 4,L3PJ3F+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L3PJ3F+FR7 + + .word ANI_ATTACK_ON_Z,AMODE_BUTTSTOMP,5,-11,-10,50,34,70 + WL 1,L3PJ3F+FR9 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_9,2,2 + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 4,L3PJ3F+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,L3PJ3F+FR10 + WL 3,L3GU4B+FR8 + WL 3,L3GU4B+FR9 + WL 3,L3GU4B+FR10 + + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* BUTT-KICKIN' TWO-FISTED OVERHEAD PUNCH TURNBUCKLE LEAP ATTACK SEQUENCE + +#yoff equ 25 + + SUBR lex_buckle_leap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + .word ANI_SET_WRESTLER_XFLIP + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL 3,L3PJ3F+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 31,190,190,190,90000h,TGT_GROIN,25,11+#yoff,50 +; .word ANI_SETPLYRMODE,MODE_INAIR2 + WL ANI_CODE,set_tbukl_airmode + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + .word ANI_STARTATTACK,AT_BSTOMP,31 + +;Check x vel to make sure we aren't going to land on ropes! + WL ANI_CODE,check_xvel + + .word ANI_OFFSET,0,#yoff,0 + WL 3,L3PJ3F+FR3 + WL 3,L3PJ3F+FR4 + WL 3,L3PJ3F+FR5 + + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + ;attack box dimensions depends on opp mode + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-28,0,-10,94,42,70 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + WWL ANI_IFOPPMODE,MODE_DEAD,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-28,58,-10,94,42,70 + +;opp_standing + WL 1,L3PJ3F+FR6 + WL ANI_CODE,set_tbukl_confine + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL 2,L3PJ3F+FR7 + WL 2,L3PJ3F+FR9 + WL ANI_CODE,CALL_BONE_BREAK +; .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WL 2,L3PJ3F+FR9 + WL ANI_GOTO,#common + +#opp_onground + WL 1,L3PJ3F+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + +#missed +; WL ANI_CODE,tbukl_miss_damage + WL 2,L3PJ3F+FR7 + WL 4,L3PJ3F+FR9 + +#common + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_IFSTATUS,#hit + + ;missed + WL ANI_CODE,CALL_MISSES + .word ANI_BOUNCE,5 + + WL ANI_GOTO,#avoid_hit_call + +#hit + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE +#avoid_hit_call + WL 4,L3PJ3F+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,L3PJ3F+FR10 + WL 3,L3GU4B+FR8 + WL 3,L3GU4B+FR9 + WL 3,L3GU4B+FR10 + + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 KNEE & #3 KNEE TO HEAD +* #4 KNEE & KNEE FALL + + SUBR lex_combo_knee_fall_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,L4NM3B+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,20h,20,90000h,TGT_CHEST,20,50,0 + WL 3,L4NM3B+FR2 + .word ANI_ATTACK_ON,AMODE_BIGKNEE,14,30,48,54 + WL 3,L4NM3B+FR3 + .word ANI_ATTACK_OFF + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_INC_COMBO + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,L4NM3B+FR4 + WL 3,L4NM3B+FR5 + WL 3,L4NM3B+FR6 + WL 3,L4NM3B+FR7 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KNEE & KNEE FALL + + SUBR lex_3_knee_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,L4NM3B+FR1 + WL 2,L4NM3B+FR2 + .word ANI_ATTACK_ON,AMODE_KNEE,14,30,48,54 + WL ANI_GOTO,#atk + + SUBR lex_4_knee_fall_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KNEE,3 + WL 3,L4NM3B+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12h,999,20h,20,90000h,TGT_CHEST,20,50,0 + WL 3,L4NM3B+FR2 + .word ANI_ATTACK_ON,AMODE_BIGKNEE,14,30,48,54 + WL ANI_GOTO,#atk + + SUBR lex_4_knee2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 1,L4NM3B+FR1 + WL ANI_GOTO,#cont2a + + SUBR lex_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4NM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4NM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,L4NM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim +#cont2a + .word ANI_STARTATTACK,AT_KNEE,3 + WL 3,L4NM3B+FR2 + .word ANI_ATTACK_ON,AMODE_KNEE,14,30,48,54 +#atk + WL ANI_SET_YVEL,30000h + WL 3,L4NM3B+FR3 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slide + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,10000h,AM_ABS +#no_slide + WL 3,L4NM3B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,L4NM3B+FR4 + WL 3,L4NM3B+FR5 + WL 3,L4NM3B+FR6 + WL 3,L4NM3B+FR7 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR lex_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,10 + WL 2,L1TT5A+FR4 + WL 2,L1TT5A+FR5 + WL ANI_GOTO,#cont + + SUBR lex_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,8 + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,50,20,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + WL 5,L4GF3B+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET_NOFLAIL,33,56,54,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,L4GF3B+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,2,L4GF3B+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missedb + + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;got him + WL ANI_CODE,DO_GRUNT + .ref CALL_SETUP + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,L4GF3B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,6,L4GF3B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,L4GF3B+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,L4GF3B+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,L4GF3B+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,L4GF3B+FR8,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 10,L4GF3B+FR8 + .word ANI_OFFSET,-3,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + .ref fling_delay + WL ANI_CODE,fling_delay + WL ANI_IFNOTSTATUS,#missed + WL 25,L4GF3B+FR3 +#missed + WL ANI_CODE,CALL_MISSES + + WL 6,L4GF3B+FR3 + WL 3,L4GF3B+FR2 + WL 3,L4GF3B+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H4YR3A,H3RN3A + .ref R4YR3A,R3RN3D + .ref U4YR3B,U3RN3A + .ref Y4YR3A,Y3RN3C + .ref S4YR3A,S3RN3A + .ref B4YR3A,B3RN3A + .ref L4YR3B,L3RN3B + .ref D4YR3B,D3RN3B + +#Bret + LWWW H4YR3A+FR1,56,8,1 + LWWW H4YR3A+FR2,48,9,1 + LWWW H4YR3A+FR3,40,4,1 + LWWW H4YR3A+FR5,19,4,1 + LWWW H3RN3A+FR1,-4,-5,0 + LWWW H3RN3A+FR2,-21,-5,0 +#Razor + LWWW R4YR3A+FR1,36,20,0 + LWWW R4YR3A+FR2,22,22,0 + LWWW R4YR3A+FR3,2,6,0 + LWWW R4YR3A+FR4,-15,4,0 + LWWW R3RN3D+FR10,-15,4,0 + LWWW R3RN3D+FR11,-21,7,0 +#Taker + LWWW U4YR3B+FR2,42,19,0 + LWWW U4YR3B+FR3,43,16,0 + LWWW U4YR3B+FR4,22,17,0 + LWWW U4YR3B+FR5,5,13,0 + LWWW U3RN3A+FR2,-14,5,0 + LWWW U3RN3A+FR2,-36,4,0 +#Yokozuna + LWWW Y4YR3A+FR1,56,15,1 + LWWW Y4YR3A+FR4,30,17,1 + LWWW Y4YR3A+FR5,16,11,1 + LWWW Y4YR3A+FR7,-26,-4,1 + LWWW Y3RN3C+FR7,8,4,0 + LWWW Y3RN3C+FR8,7,2,0 +#Shawn + LWWW S4YR3A+FR2,50,5,1 + LWWW S4YR3A+FR3,61,-4,1 + LWWW S4YR3A+FR5,15,3,1 + LWWW S4YR3A+FR6,-12,-1,1 + LWWW S3RN3A+FR1,-3,-5,0 + LWWW S3RN3A+FR2,-32,-6,0 +#BamBam + LWWW B4YR3A+FR3,33,13,0 + LWWW B4YR3A+FR4,43,8,0 + LWWW B4YR3A+FR5,41,4,0 + LWWW B4YR3A+FR7,-6,-2,0 + LWWW B3RN3A+FR1,10,5,0 + LWWW B3RN3A+FR2,-8,6,0 +#Doink + LWWW D4YR3B+FR1,69,16,1 + LWWW D4YR3B+FR2,58,20,1 + LWWW D4YR3B+FR3,39,14,1 + LWWW D4YR3B+FR4,16,12,1 + LWWW D3RN3B+FR3,5,9,0 + LWWW D3RN3B+FR4,-16,8,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,63,16,1 + LWWW L4YR3B+FR2,43,9,1 + LWWW L4YR3B+FR3,18,7,1 + LWWW L4YR3B+FR4,-25,0,1 + LWWW L3RN3B+FR2,-8,7,0 + LWWW L3RN3B+FR3,-14,1,0 + + +#strt_run_tbl + .ref start_run_flung + + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + + +#***************************************************************************** +* +* #4 BIG BOOT + + SUBR lex_4_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,L4KM3B+FR1 + .word ANI_STARTATTACK,AT_BIGBOOT,13 + WL 3,L4KM3B+FR2 + WL 3,L4KM3B+FR3 + WL 2,L4KM3B+FR4 + + WL ANI_CODE,#clrcnt + .word ANI_ATTACK_ON,AMODE_BIGBOOT,18,56,78,48 + WWL ANI_WAITHITOPP,15,L4KM3B+FR5 +#lp + .word ANI_STARTATTACK,AT_BIGBOOT,5 + WL 2,L4KM3B+FR5 + WL ANI_CODE,#holdup + WL ANI_IFSTATUS,#lp + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + .word ANI_DRAW_NAME,27 +#missed + + WL 3,L4KM3B+FR6 + WL 3,L4KM3B+FR7 + WL 3,L4KM3B+FR8 + WL 3,L4KM3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#clrcnt +;We are re-using BUT_COUNT in the player process + clr a0 + move a0,*a13(BUT_COUNT) + + rets + +#holdup + move *a13(BUT_COUNT),a0 + inc a0 + move a0,*a13(BUT_COUNT) + +;Max time to hold up in air (*2 ticks) + cmpi 25,a0 + jrgt #button_up + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_SKICK_BIT,a0 ;still down? + jrz #button_up + +;Still holding... + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#button_up + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR lex_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,L2AH2A+FR3 + WL 15,L2AH2A+FR4 + WL 4,L2AH2A+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR lex_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,L4AH4A+FR1 + WL 3,L4AH4A+FR2 + WL 14,L4AH4A+FR3 + WL 2,L4AH4A+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR lex_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,L4AH4A+FR1 + WL 3,L4AH4A+FR2 + WL 14,L4AH4A+FR3 + WL 2,L4AH4A+FR4 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,lex_dizzy_anim +; .word ANI_END + +#***************************************************************************** + + SUBR lex_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + .word ANI_OFFSET,16,0,0 + WL 3,L4CR3B+FR1 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,4,0,0 ;***** + WL 2,L4CR3B+FR2 + .word ANI_OFFSET,4,0,0 ;***** + WL 3,L4CR3B+FR3 + .word ANI_OFFSET,4,0,0 ;***** + WL 2,L4CR3B+FR4 + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + + .word ANI_OFFSET,5,0,0 ;***** + WL 3,L4CR3B+FR5 + + .word ANI_OFFSET,4,0,0 ;***** + WL 2,L4CR3B+FR6 + .word ANI_BENDROPE,2 + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + .word ANI_OFFSET,6,0,0 ;***** + WL 3,L4CR3B+FR7 + .word ANI_OFFSET,4,0,0 ;***** + WL 2,L4CR3B+FR8 + .word ANI_OFFSET,9,0,0 ;***** + WL 3,L4CR3B+FR9 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,L4CR3B+FR10 + .word ANI_OFFSET,8,-3,0 + WL 3,L4CR3B+FR11 + + ;now jump off... +; WL 3,L4JD4A+FR1 ;D4FM4A+FR1 + WL 3,L4JD4A+FR2 + + .word ANI_SET_IDIOT + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,L4JD4A+FR3 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 2,L4JD4A+FR4 + WL 2,L4JD4A+FR6 + WL 2,L4JD4A+FR7 + WL 4,L4JD4A+FR8 + + .word ANI_FACEDOWN + .word ANI_CLEAR_CLIMB + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR lex_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in +; WL 3,L4JD4A+FR1 + WL 3,L4JD4A+FR2 + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,14h,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 3,L4JD4A+FR3 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_ZEROVELS + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + WL 3,L4JD4A+FR4 + WL 3,L4JD4A+FR6 + WL 2,L4JD4A+FR7 + WL 2,L4JD4A+FR8 + + .word ANI_OFFSET,10,0,0 ;***** + ;climb through + WL 3,L4CR3B+FR1 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,4,0,0 ;***** + WL 2,L4CR3B+FR2 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,4,0,0 ;***** + WL 3,L4CR3B+FR3 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_OFFSET,4,0,0 ;***** + WL 2,L4CR3B+FR4 + + .word ANI_OFFSET,6,0,0 ;***** + WL 3,L4CR3B+FR5 + + .word ANI_OFFSET,6,0,0 ;***** + WL 2,L4CR3B+FR6 + .word ANI_OFFSET,6,0,0 ;***** + WL 3,L4CR3B+FR7 + .word ANI_OFFSET,6,0,0 ;***** + WL 2,L4CR3B+FR8 + .word ANI_BENDROPE,3 + .word ANI_OFFSET,6,0,0 ;***** + WL 3,L4CR3B+FR9 + .word ANI_OFFSET,5,0,0 ;***** + WL 2,L4CR3B+FR10 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,5,-3,0 + WL 3,L4CR3B+FR11 + + .word ANI_CLEAR_CLIMB + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets + +********************************************** + + SUBR lex_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL ANI_IFSTATUS,#dir4 + +;Facing #2, spin first! + WL 3,L1TT5A+FR2 + WL 3,L1TT5A+FR4 +#dir4 + WL 3,L3GU4A+FR10 + WL 3,L3GU4A+FR9 + WL 3,L3GU4A+FR8 + WL 3,L3GU4A+FR7 + WL 3,L3GU4A+FR6 + WL 3,L3GU4A+FR5 + WL 3,L3GU4A+FR4 + WL 3,L3GU4A+FR2 + WL 3,L3GU4A+FR1 + + ;roll over once + WLW ANI_SET_ZVEL,90000h,AM_ABS + + WL 3,L3RL1A+FR11 + WL 3,L3RL1A+FR10 + WL 3,L3RL1A+FR9 + WL 3,L3RL1A+FR8 + WL 3,L3RL1A+FR7 + WL 3,L3RL1A+FR6 + WL 3,L3RL1A+FR5 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + + ;climb through + + .word ANI_SET_IDIOT + WL ANI_CODE,NOT_IN_RING + .word ANI_OFFSET,0,-37h,0 ;x,y,z + WL 3,L2PJ3C+FR5 + WL 3,L2PJ3C+FR3 + WL 3,L2PJ3C+FR2 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_CLEAR_CLIMB + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) +#faceup + rets + +NOT_IN_RING + MOVK 1,A0 + MOVE A0,*A13(INRING) + RETS + +#***************************************************************************** + + SUBR lex_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + WL 3,L2PJ3C+FR2 + WL 3,L2PJ3C+FR3 + WL 3,L2PJ3C+FR5 + .word ANI_OFFSET,0,37h,-60 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,L3RL1A+FR6 + WL 3,L3RL1A+FR7 + WL 3,L3RL1A+FR8 + WL 3,L3RL1A+FR9 + WL 3,L3RL1A+FR10 + WL 3,L3RL1A+FR11 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,L3GU4A+FR1 + WL 3,L3GU4A+FR2 + WL 3,L3GU4A+FR3 + WL 3,L3GU4A+FR4 + WL 3,L3GU4A+FR5 + WL 3,L3GU4A+FR6 + WL 3,L3GU4A+FR7 + WL 3,L3GU4A+FR8 + WL 3,L3GU4A+FR9 + WL 3,L3GU4A+FR10 + + .word ANI_CLEAR_CLIMB + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR lex_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,L1TT5A+FR2 + WL 3,L1TT5A+FR4 + +#dir4 + WL 3,L3GU4A+FR10 + WL 3,L3GU4A+FR9 + WL 3,L3GU4A+FR8 + WL 3,L3GU4A+FR7 + WL 3,L3GU4A+FR6 + WL 3,L3GU4A+FR5 + WL 3,L3GU4A+FR4 + WL 3,L3GU4A+FR3 + WL 3,L3GU4A+FR2 + WL 3,L3GU4A+FR1 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,L3RL1A+FR11 +#cont + WL 3,L3RL1A+FR1 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,L3RL1A+FR2 + WL 3,L3RL1A+FR3 + WL 3,L3RL1A+FR4 + + .word ANI_SET_IDIOT + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,L3DC3B+FR3 + WL 3,L3DC3B+FR2 + WL 3,L3DC3B+FR1 + + .word ANI_ZERO_XZVELS + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_CLEAR_CLIMB + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR lex_rollthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;roll over once + WLW ANI_SET_ZVEL,-50000h,AM_ABS + WL 3,L3RL1A+FR11 +#cont + WL 3,L3RL1A+FR1 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,L3RL1A+FR2 + WL 3,L3RL1A+FR3 + WL 3,L3RL1A+FR4 + + .word ANI_SET_IDIOT + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,L3DC3B+FR3 + WL 3,L3DC3B+FR2 + WL 3,L3DC3B+FR1 + + .word ANI_ZERO_XZVELS + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#***************************************************************************** + + SUBR lex_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,L3DC3B+FR1 + WL 3,L3DC3B+FR2 + WL 3,L3DC3B+FR3 + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,L3RL1A+FR3 + WL 3,L3RL1A+FR2 + WL 3,L3RL1A+FR1 + WL 3,L3RL1A+FR11 + + .word ANI_ZEROVELS + + ;get up + WL 3,L3GU4A+FR1 + WL 3,L3GU4A+FR2 + WL 3,L3GU4A+FR3 + WL 3,L3GU4A+FR4 + WL 3,L3GU4A+FR5 + WL 3,L3GU4A+FR6 + WL 3,L3GU4A+FR7 + WL 3,L3GU4A+FR8 + WL 3,L3GU4A+FR9 + WL 3,L3GU4A+FR10 + + .word ANI_CLEAR_CLIMB + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel2 + movi 52000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** +* + + SUBR lex_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + + WL 2,L3GU4A+FR10 + WL 2,L3GU4A+FR7 + WL 2,L3GU4A+FR5 + WL ANI_SET_YVEL,39000h + + WL 3,L3CP3X+FR2 + WL 3,L3CP3X+FR3 + WL 3,L3CP3X+FR4 + WL 3,L3CP3X+FR5 + WL 3,L3CP3X+FR6 + WL 3,L3CP3X+FR7 + WL 3,L3CP3X+FR1 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + + SUBR lex_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 2,L1TT5A+FR4 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR6 + + SUBR lex_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,999,80h,50h,90000h,TGT_CHEST|TGT_GROUND,0,57,-15 + WL ANI_CODE,hit_nearest + + WL 3,L3PN5B+FR2 + .word ANI_OFFSET,0,20,0 ;x,y,z + WL 19,L3PN5B+FR5 + .word ANI_ZEROVELS + + WL 3,L3PN5B+FR9 + WL 3,L3PN5B+FR8 + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,grnd_hit + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + + .word ANI_BOUNCE,2 + WL 3,L3PN5B+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + .word ANI_OFFSET,0,0,20 ;x,y,z + + WL 3,L3PN5B+FR9 + .ref win_announce + WL ANI_CODE,win_announce + WL 40,L3PN5B+FR10 + + .word ANI_LOOP + +;Do another ground hit on opponent + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 4,L3PN5D+FR1 + WL 4,L3PN5D+FR2 + WL 4,L3PN5D+FR3 + WL 4,L3PN5D+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,L3PN5D+FR5 + WL 4,L3PN5D+FR6 + WL 5,L4FX5B+FR2 + WL 5,L4FX5B+FR3 + WL 5,L4FX5B+FR4 + WL 5,L4FX5B+FR5 + WL 5,L4FX5B+FR6 + WL 5,L4FX5B+FR7 + WL 5,L4FX5B+FR8 + WL 5,L4FX5B+FR9 + WL 5,L4FX5B+FR10 + WL 5,L4FX5B+FR11 + WL 5,L4FX5B+FR10 + WL 5,L4FX5B+FR9 + WL 5,L4FX5B+FR8 + WL 5,L4FX5B+FR7 + WL 5,L4FX5B+FR6 + WL 5,L4FX5B+FR5 + WL 5,L4FX5B+FR4 + WL 5,L4FX5B+FR5 + WL 5,L4FX5B+FR6 + WL 5,L4FX5B+FR7 + WL 5,L4FX5B+FR8 + WL 5,L4FX5B+FR9 + WL 5,L4FX5B+FR10 + WL 5,L4FX5B+FR11 + +#lp WL 4,L4FX5B+FR10 + WL 4,L4FX5B+FR9 + WL 4,L4FX5B+FR8 + WL 4,L4FX5B+FR9 + WL 4,L4FX5B+FR10 + WL 4,L4FX5B+FR11 + WL ANI_GOTO,#lp + +#***************************************************************************** +* +* #2 RAISE ARM IN VICTORY FROM A STANCE + + SUBR lex_2_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 2,L1TT5A+FR4 + WL 2,L1TT5A+FR5 + WL 2,L1TT5A+FR6 + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + + WL 6,L4SW5A+FR2 + WL 6,L4SW5A+FR3 + WL 6,L4SW5A+FR4 + WL 6,L4SW5A+FR5 + WL 6,L4SW5A+FR6 + WL 6,L4SW5A+FR7 + WL 6,L4SW5A+FR8 + WL 6,L4SW5A+FR9 + WL 6,L4SW5A+FR10 + + .word ANI_SET_RPTCOUNT,30 +#lp0 WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#lp0 + + WL 6,L4SW5A+FR9 + WL 6,L4SW5A+FR8 + WL 6,L4SW5A+FR7 + WL 6,L4SW5A+FR6 + WL 6,L4SW5A+FR5 + WL 6,L4SW5A+FR4 + WL 6,L4SW5A+FR3 + + .word ANI_SET_RPTCOUNT,-4 ;set count to rnd from 0 to 4 +#lp1 WL 55,L4SW5A+FR3 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#lp1 + + WL ANI_CODE,check_raisearm_bit + WL ANI_IFSTATUS,#wakeup + + ;don't wake up. +#floop WL 1000,L4SW5A+FR2 + WL ANI_GOTO,#floop + +#wakeup .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACEDOWN + .word ANI_END + +#***************************************************************************** +* +* #4 RAISE ARM + + SUBR lex_4_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + +; WL 5,L4FX5B+FR1 + WL 5,L4FX5B+FR2 + WL 5,L4FX5B+FR3 + WL 5,L4FX5B+FR4 + + WL 5,L4FX5B+FR5 + WL 5,L4FX5B+FR6 + WL 5,L4FX5B+FR7 + WL 5,L4FX5B+FR8 + WL 5,L4FX5B+FR9 + WL 5,L4FX5B+FR10 + WL 5,L4FX5B+FR11 + + WL 5,L4FX5B+FR10 + WL 5,L4FX5B+FR9 + WL 5,L4FX5B+FR8 + WL 5,L4FX5B+FR7 + WL 5,L4FX5B+FR6 + WL 5,L4FX5B+FR5 + WL 5,L4FX5B+FR4 + + WL 5,L4FX5B+FR5 + WL 5,L4FX5B+FR6 + WL 5,L4FX5B+FR7 + WL 5,L4FX5B+FR8 + WL 5,L4FX5B+FR9 + WL 5,L4FX5B+FR10 + WL 5,L4FX5B+FR11 + + .word ANI_SET_RPTCOUNT,-8 +#lp0 WL 4,L4FX5B+FR10 + WL 4,L4FX5B+FR9 + WL 4,L4FX5B+FR8 + WL 4,L4FX5B+FR9 + WL 4,L4FX5B+FR10 + WL 4,L4FX5B+FR11 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#lp0 + + WL ANI_CODE,check_raisearm_bit + WL ANI_IFSTATUS,#wakeup + + .word ANI_SET_RPTCOUNT,1000 + WL ANI_GOTO,#lp0 + +#wakeup WL 5,L4FX5B+FR10 + WL 5,L4FX5B+FR9 + WL 5,L4FX5B+FR8 + WL 5,L4FX5B+FR7 + WL 5,L4FX5B+FR6 + WL 5,L4FX5B+FR5 + WL 5,L4FX5B+FR4 + WL 5,L4FX5B+FR3 + WL 5,L4FX5B+FR2 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACEDOWN + .word ANI_END + + +#***************************************************************************** +* +* GET BUCKED OFF A PINNED OPPONENT + + SUBR lex_buckoff_anim + + .ref set_buckoff_vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 4,L3PN5B+FR10 + WL 1,L3PN5B+FR5 + WL ANI_CODE,set_buckoff_vels + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,L3PN5B+FR9 + WL 12,L3PN5B+FR8 + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 4,L3PN5D+FR1 + WL 4,L3PN5D+FR2 + WL 4,L3PN5D+FR3 + WL 4,L3PN5D+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,L3PN5D+FR5 + WL 4,L3PN5D+FR6 + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/LEXSEQ3.ASM b/LEXSEQ3.ASM new file mode 100755 index 0000000..2866ba6 --- /dev/null +++ b/LEXSEQ3.ASM @@ -0,0 +1,3384 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 7/15/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lexseq3.asm" + .title "lockup stuff and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "ring.equ" + .include "sound.h" + + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" + + .include "display.equ" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref CALL_OTHER_AVERAGE,CALL_ANI_AVERAGE_MOVE + .ref CALL_THROWN_OUT,MOVE_NAME_ANNC + .ref DO_NONO,DO_OTHERNONO,FIND_AND_KILL_ENDLESS,CALL_SETUP + .ref CALL_SPECIAL_MOVE,HIT_THE_MAT,SMALL_BOUNCE + .ref CALL_MISSES,clear_opp_counts + .ref DO_COMBO_MESS,set_xdrift + + .ref tgt_tbukl,set_position,set_skeleton_pal,start_smoke + .ref ckzpos,set_my_pal,make_white,tbukl_flip,make_norm + + .ref slaveanim_tbl + + .ref lex_stand4_anim + .ref lex_faceup_getup_anim + + .ref hrt_breakneck2_anim,rzr_breakneck2_anim,und_breakneck2_anim + .ref yok_breakneck2_anim,shn_breakneck2_anim,bam_breakneck2_anim + .ref dnk_breakneck2_anim,lex_breakneck2_anim + + .ref hrt_tossed_anim,rzr_tossed_anim,und_tossed_anim + .ref yok_tossed_anim,shn_tossed_anim,bam_tossed_anim + .ref dnk_tossed_anim,lex_tossed_anim + + .ref hrt_3_head_held_anim,rzr_3_head_held_anim + .ref und_3_head_held_anim,yok_3_head_held_anim + .ref shn_3_head_held_anim,bam_3_head_held_anim + .ref dnk_3_head_held_anim + + .ref hrt_slambounce_anim,rzr_slambounce_anim,und_slambounce_anim + .ref yok_slambounce_anim,shn_slambounce_anim,bam_slambounce_anim + .ref dnk_slambounce_anim,lex_slambounce_anim + + .ref hrt_break_neck2_anim,rzr_break_neck2_anim + .ref und_break_neck2_anim,yok_break_neck2_anim + .ref shn_break_neck2_anim,bam_break_neck2_anim + .ref dnk_break_neck2_anim + .ref lex_combo_ground_punch_anim + + .REF lex_combo_knee_fall_anim + .ref lex_combo_ground_clobber_anim + .REF lex_combo_hammer_anim + .REF lex_combo_clobber_anim + .REF CALL_BONE_BREAK + + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR lex_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_OTHERNONO +#loop + WL 4,L3MF3B+FR1 + WL 4,L3MF3B+FR2 + WL 4,L3MF3B+FR3 + WL 4,L3MF3B+FR4 + WL 4,L3MF3B+FR5 + WL 4,L3MF3B+FR6 + WL 4,L3MF3B+FR7 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + + WL 5,L3MF3B+FR6 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,L3MS3Z+FR5 + WL 4,L3MS3Z+FR3 + WL 4,L3MS3Z+FR2 + WL 4,L3MS3Z+FR1 + .word ANI_WAITHITGND + WL 2,L2ST2C+FR7 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR lex_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,LEX_TBUKLY + WL 3,L4HU4A+FR5 + WL 3,L4HU4A+FR6 + WL 3,L4HU4A+FR7 + WL ANI_CODE,tgt_tbukl + .word ANI_LEAPATPOS,24,200,8,8,0 ;#ticks,dist,xoff,yoff,zoff + WL 15,L4HU4A+FR8 + WL 9,L4HU4A+FR9 + + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SHAKECORNER + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_SCROLL_CTRL,SC_RESTORE + WL 3,L4HU4A+FR7 + WL ANI_CODE,tbukl_flip + +#repeat + WL 5,L4SB4A+FR1 + WL ANI_CODE,tbukl_flip + WL 5,L4SB4A+FR2 + WL ANI_CODE,tbukl_flip + WL 5,L4SB4A+FR3 + WL ANI_CODE,tbukl_flip + WL 5,L4SB4A+FR4 + WL ANI_CODE,tbukl_flip + WL 5,L4SB4A+FR5 + WL ANI_CODE,tbukl_flip + WL 5,L4SB4A+FR6 + WL ANI_CODE,tbukl_flip + WL 5,L4SB4A+FR7 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR lex_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,SC_RESTORE + + .word ANI_SHAKECORNER + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL ANI_SET_YVEL,20000h + + WL 1,L4HU4A+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,L4HU4A+FR7 + WL 3,L4HU4A+FR6 + WL 3,L4HU4A+FR5 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR lex_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + +; .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + + +; .word ANI_XFLIP + + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,L4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,L4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,L4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,L4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,L4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,L4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,L4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,L4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,L4ST4C+FR4 + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref lex_fall_back_anim + WL ANI_CHANGEANIM,lex_fall_back_anim +; .word ANI_END + +#nodead + + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 1a1ah,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#***************************************************************************** + + SUBR lex_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,L3BF3B+FR5 + WL 4,L3BF3B+FR6 + WL 4,L3BF3B+FR1 + WL 4,L3BF3B+FR2 + WL 4,L3BF3B+FR3 + WL 4,L3BF3B+FR4 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR lex_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + .word ANI_XFLIP + WL 4,L3BF3A+FR2 + .word ANI_XFLIP + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 4,L2AH2A+FR3 + WL 4,L2AH2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,L2AH2A+FR5 + WL 4,L2AH2A+FR6 + WL 4,L2AH2A+FR7 +; WL 4,L2AH2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR lex_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_XFLIP + WL 4,L3BF3A+FR2 + .word ANI_XFLIP + WL 3,L1TT5A+FR5 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK +* + + SUBR lex_break_neck_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back + + ;plenty of room. break yer neck. + .word ANI_OFFSET,-9,0,0 + WL 4,L3FD3B+FR3 + .word ANI_OFFSET,-8,0,0 + WL 4,L3FD3B+FR4 + .word ANI_OFFSET,-8,0,0 + WL 4,L3FD3B+FR5 + .word ANI_OFFSET,1,0,0 + WL 4,L3FD3B+FR6 + .word ANI_OFFSET,-32,0,0 + WL 1,L3RL1A+FR5 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#fall_back + ;sans. too close to the rope. + WL 4,L3FD3B+FR2 + .word ANI_OFFSET,-15,0,0 + WL 4,L3UC3X+FR7 + WL 4,L3UC3X+FR8 + WL 4,L3UC3X+FR9 + .word ANI_OFFSET,-17,0,0 + .word ANI_XFLIP + WL 1,L3RL1A+FR11 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + SUBR lex_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + ;break the neck + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + .word ANI_XFLIP + + .word ANI_OFFSET,-5,0,0 + + WL 4,L3FD3B+FR2 + WL 4,L3FD3B+FR3 + WL 4,L3FD3B+FR4 + WL 4,L3FD3B+FR5 + WL 4,L3FD3B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_OFFSET,-15,0,0 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 20,L3RL1A+FR5 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,lex_faceup_getup_anim +; .word ANI_END + + SUBR lex_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,L4POGO+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_XFLIP + + .word ANI_OFFSET,-5,0,0 + + WL 3,L3FH3A+FR6 + WL 3,L3FD3B+FR1 + WL 3,L3FD3B+FR2 + WL 3,L3FD3B+FR3 + WL 3,L3FD3B+FR4 + WL 3,L3FD3B+FR5 + WL 3,L3FD3B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_OFFSET,-15,0,0 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 20,L3RL1A+FR5 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,lex_faceup_getup_anim +; .word ANI_END + + SUBR lex_break_neck4_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL 4,L3UC3X+FR6 + WL 4,L3FD3B+FR1 + WL 4,L3FD3B+FR2 + + WL ANI_CHANGEANIM,lex_break_neck_anim + +#****************************************************************************** + + SUBR lex_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;There are too many rotate frames listed here... + WL 1,L1TT5A+FR4 + WL 1,L1TT5A+FR5 + WL 1,L1TT5A+FR6 + + SUBR lex_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,12 + WL 3,L4WS4B+FR1 + + LEAPATOPP 8,999,80,80,30000h,TGT_HEAD,26,6,-2 + WL 4,L4WS4B+FR2 + WL 4,L4WS4B+FR3 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET2,24,0,32,20 ;mode,x,y,w,h + WL 4,L4WS4B+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + +;got him + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,clear_opp_counts + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + WL ANI_CODE,CALL_SETUP + + .word ANI_SOUND,98h ;neck break (5-7 ticks late) + + WWLLW ANI_SUPERSLAVE2,3,L4GH3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L4GH3B+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,L4GH3B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,L4GH3B+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,L4GH3B+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,L4GH3B+FR6,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 3,L4GH3B+FR6 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL 20,L4WS4B+FR4 + WL 3,L4WS4B+FR3 + WL 3,L4WS4B+FR2 + WL 3,L4WS4B+FR1 + + WL ANI_CODE,CALL_MISSES + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,41,-34,0 + LWWW H3GU4A+FR3,63,-41,0 + LWWW H3DU3A+FR3,57,-41,1 + LWWW H3DU3A+FR4,59,-29,1 + LWWW H3DU3A+FR5,57,-28,1 + LWWW H3BF3A+FR1,41,-34,0 + .long 0 +#Razor + LWWW R3GU2A+FR3,41,-25,0 + LWWW R3GU4A+FR4,51,-35,0 + LWWW R3GU4A+FR5,57,-44,0 + LWWW R3GU4A+FR6,56,-42,0 + LWWW R3DU3B+FR4,53,-27,1 + LWWW R3BF3A+FR1,44,-36,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,43,-26,1 + LWWW U3DU3B+FR5,55,-31,1 + LWWW U3DU3B+FR6,59,-39,1 + LWWW U3DU3B+FR8,50,-33,1 + LWWW U3DU3B+FR10,52,-20,1 + LWWW U4BF3Z+FR5,36,-15,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,45,-20,0 + LWWW Y3GU2A+FR3,62,-22,0 + LWWW Y3GU2A+FR4,37,-35,0 + LWWW Y3GU2A+FR7,38,-44,0 + LWWW Y3GU2A+FR11,55,-31,0 + LWWW Y3BF3A+FR1,40,-24,0 + .long 0 +#Shawn + LWWW S3GU2A+FR1,40,-28,0 + LWWW S3GU4A+FR2,47,-33,0 + LWWW S3GU4A+FR4,56,-46,0 + LWWW S3GU4A+FR6,60,-31,0 + LWWW S3GU4A+FR7,59,-31,0 + LWWW S3BF3A+FR1,28,-35,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,46,-24,0 + LWWW B3GU4A+FR5,57,-32,0 + LWWW B3GU4A+FR7,57,-38,0 + LWWW B3GU4A+FR8,58,-33,0 + LWWW B3GU4A+FR9,61,-24,0 + LWWW B3BF3C+FR5,45,-28,0 + .long 0 +#Doink + LWWW D3GU4A+FR2,41,-31,0 + LWWW D3GU4A+FR3,46,-39,0 + LWWW D3GU4A+FR5,44,-37,0 + LWWW D3GU4A+FR6,51,-37,0 + LWWW D3GU4A+FR7,59,-37,0 + LWWW D3BF3A+FR2,37,-34,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GU4A+FR1,48,-28,0 + LWWW L3DU3A+FR4,37,-30,1 + LWWW L3DU3A+FR6,38,-41,1 + LWWW L3DU3A+FR7,45,-35,1 + LWWW L3DU3A+FR9,47,-29,1 + LWWW L3BF3B+FR5,34,-32,0 + .long 0 +#****************************************************************************** + + SUBR lex_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 4,L4CO4Z+FR1 + WL 4,L4CO4Z+FR2 + WL 4,L4CO4Z+FR3 + WL 4,L4CO4Z+FR4 + WL 4,L4CO4Z+FR5 + WL 4,L4CO4Z+FR6 + WL 4,L4CO4Z+FR7 + WL 4,L4CO4Z+FR8 + WL 4,L4CO4Z+FR9 + + WL 4,L4CO4Z+FR8 + WL 4,L4CO4Z+FR7 + WL 4,L4CO4Z+FR6 + WL 4,L4CO4Z+FR5 + WL 4,L4CO4Z+FR4 + WL 4,L4CO4Z+FR3 + WL 4,L4CO4Z+FR2 + WL 4,L4CO4Z+FR1 + +; .ref set_taunt_bit +; WL ANI_CODE,set_taunt_bit + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,lex_stand4_anim +; .word ANI_END + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR lex_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 2,L3TF3X+FR1 ;Face down + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,80000h + WL 1,L3TF3X+FR1 ;Face down + WL 3,L3TF3X+FR2 ;Face down + WL 3,L3TF3X+FR3 ;Face down + WL 3,L3TF3X+FR4 ;Face down + WL 3,L3TF3X+FR5 ;Face down + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL 3,L3TF3X+FR1 ;Face down + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + SUBR lex_break_face3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL 3,L3MS3Z+FR4 + WL ANI_SET_YVEL,078000h + WL 100,L3MS3Z+FR4 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + + +* Head slams into mat +;From head slam + + SUBR lex_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + + WL 2,L3TF3X+FR1 ;Face down + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,40000h + WL 1,L3TF3X+FR1 ;Face down + WL 3,L3TF3X+FR2 ;Face down + WL 3,L3TF3X+FR3 ;Face down + WL 3,L3TF3X+FR4 ;Face down + WL 3,L3TF3X+FR5 ;Face down + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,L3TF3X+FR2 ;Face down + WL 3,L3TF3X+FR3 ;Face down + WL 3,L3TF3X+FR4 ;Face down + WL 3,L3TF3X+FR5 ;Face down + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,L3TF3X+FR5 ;Face down + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR lex_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,L3BR3Z+FR1 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 25,L3BR3Z+FR1 + +; WL 4,L3BR3Z+FR2 + WL 4,L3UC3A+FR6 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + .word ANI_XFLIP + + WL 3,L3CP3X+FR2 + WL 3,L3CP3X+FR3 + WL 3,L3CP3X+FR4 + WL 3,L3CP3X+FR5 + WL 3,L3CP3X+FR6 + WL 3,L3CP3X+FR7 + WL 3,L3CP3X+FR1 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 1,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* #3 HEAD HOLD AND HEAD HOLD2 + + .bss #opp_xvel,32 + + SUBR lex_3_fake_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 3,L4GH3Z+FR1 + WL 3,L4GH3Z+FR2 + WL 7,L4GH3Z+FR3 + WL ANI_GOTO,#missed + + SUBR lex_3_head_hold2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 3,L4GH3Z+FR1 + WL 3,L4GH3Z+FR2 + .word ANI_ATTACK_ON,AMODE_PUPPET_HDGRAB,14,96,64,21 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,7,L4GH3Z+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + WL ANI_GOTO,#gothim + + SUBR lex_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,9 + WL 2,L4GH3Z+FR1 + WL 2,L4GH3Z+FR2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 6,999,65,45,90000h,TGT_HEAD,60,100,0 + LEAPATOPP 9,999,40,45,90000h,TGT_HEAD,60,100,0 + WL 3,L4GH3Z+FR3 + .word ANI_ATTACK_ON, AMODE_PUPPET,14,96,64,21 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,5,L4GH3Z+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb +#gothim + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + .word ANI_SETWORD,USR_VAR2,0 + .word ANI_CLR_BUTCOUNT + .ref head_grab_time + WL ANI_CODE,head_grab_time + + .word ANI_ATTACHZ,0,0,-10 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,L4GH3Z+FR3,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,2,L4GH3Z+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,2,L4GH3Z+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,2,L4GH3B+FR6,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,L4GH3B+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,L4GH3Z+FR3 + WL 3,L4GH3Z+FR2 + WL 3,L4GH3Z+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,L4GH3Z+FR3 + WL 3,L4GH3Z+FR2 + WL 3,L4GH3Z+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4AH3A+FR1,45,10,0 + LWWW H3HB3A+FR3,45,-7,0 + LWWW H3HB3A+FR2,35,-13,0 + LWWW H3BF3A+FR1,30,-34,0 + .long 0 +#Razor + LWWW R4AH4C+FR3,47,9,0 + LWWW R3HB3A+FR3,46,-9,0 + LWWW R3HB3A+FR2,42,-24,0 + LWWW R3BF3A+FR1,34,-36,0 + .long 0 +#Taker + LWWW U4AH3A+FR2,35,19,0 + LWWW U4BF3A+FR2,30,5,0 + LWWW U4BF3A+FR3,7,-10,0 + LWWW U4BF3Z+FR5,32,-15,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR2,56,0,0 + LWWW Y4AM4A+FR1,54,-6,0 + LWWW Y4AM4A+FR2,45,-12,0 + LWWW Y3BF3A+FR1,34,-24,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,42,-1,0 + LWWW S4AH3D+FR1,33,-2,0 + LWWW S4BF3A+FR2,36,-15,0 + LWWW S3BF3A+FR1,20,-35,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,38,4,0 + LWWW B4BF3A+FR1,47,4,0 + LWWW B3HB3A+FR2,35,-26,0 + LWWW B3BF3C+FR5,29,-28,0 + .long 0 +#Doink + LWWW D3AH3B+FR1,37,6,0 + LWWW D3AK3A+FR3,36,3,0 + LWWW D3AK3A+FR2,44,-12,0 + LWWW D3BF3A+FR2,33,-34,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,37,2,0 + LWWW L3BF3A+FR1,43,0,1 + LWWW L3BF3A+FR2,39,-16,1 + LWWW L3BF3B+FR5,29,-32,0 + .long 0 + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#***************************************************************************** +* +* VERTICAL SUPLEX (FROM HEAD HOLD) + +************************************** + SUBR lex_combo_vsuplex_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 6,40,40,40,90000h,TGT_CHEST,40,0,0 + .word ANI_ATTACK_ON, AMODE_PUPPET,30,46,60,38 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,8,L3VS3A+FR1 + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + + WL ANI_IFNOTSTATUS,#missedc + + .word ANI_INC_COMBO + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,5 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_outc + + WWL ANI_SETLONG,OBJ_GRAVITY,0f000h + +; WL ANI_SLAVEANIM,slaveanim_tbl + + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR4,#puppet_tbl,2 + WL ANI_SET_YVEL,030000h + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR5,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,15,L3VS3A+FR6,#puppet_tbl,4 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL ANI_SET_YVEL,080000h + + WLW ANI_SET_XVEL,-10000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR6,#puppet_tbl,4 + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR7,#puppet_tbl,5 + .word ANI_OFFSET,0,54,0 ;x,y,z + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,5,L3VS3A+FR8,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,7,L3VS3A+FR9,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,5,L3VS3A+FR10,#puppet_tbl,8 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + + WWLLW ANI_SUPERSLAVE2,3,L3UC3A+FR6,#puppet_tbl,9 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,-30000h,40000h,0 ;x,y,z vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_XFLIP + WL 1,L3GU4A+FR1 + WL ANI_SET_YVEL,040000h + .word ANI_WAITHITGND + + .word ANI_SETMODE,MODE_NORMAL + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_outc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#throw_him_out + +************************************** + SUBR lex_vsuplex_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_ATTACK_ON,AMODE_PUPPET,10,48,76,36 + WWL ANI_WAITHITOPP,3,L3VS3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,5 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_out + + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR4,#puppet_tbl,2 + WL ANI_SET_YVEL,030000h + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR5,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,15,L3VS3A+FR6,#puppet_tbl,4 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WWL ANI_SETLONG,OBJ_GRAVITY,0f000h + WL ANI_SET_YVEL,060000h + + WLW ANI_SET_XVEL,-10000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR6,#puppet_tbl,4 + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR7,#puppet_tbl,5 + .word ANI_OFFSET,0,54,0 ;x,y,z + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,5,L3VS3A+FR8,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,7,L3VS3A+FR9,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,5,L3VS3A+FR10,#puppet_tbl,8 + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL ANI_CODE,CALL_SPECIAL_MOVE + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_DRAW_NAME,42 + WWLLW ANI_SUPERSLAVE2,3,L3UC3A+FR6,#puppet_tbl,9 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,-30000h,40000h,0 ;x,y,z vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_XFLIP + WL 1,L3GU4A+FR1 + WL ANI_SET_YVEL,030000h + .word ANI_WAITHITGND + + .word ANI_SETMODE,MODE_NORMAL + + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WWLLW ANI_SUPERSLAVE2,3,L3VS3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,17,L3VS3A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,2,L3VS3A+FR4,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,2,L3VS3A+FR5,#puppet_tbl,3 + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL ANI_SET_YVEL,030000h + WWLLW ANI_SUPERSLAVE2,2,L3VS3A+FR6,#puppet_tbl,4 + WL ANI_CODE,CALL_THROWN_OUT + WLLL ANI_ATTACHVEL,-0A0000h,70000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl2 + WL ANI_OPPOFFSET,#release_table + WL ANI_XFLIP_TBL,#xflip_tbl2 + .word ANI_DETACH + WL 2,L3VS3A+FR6 + WL 1,L3VS3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL 3,L3VS3A+FR7 + WL 3,L3VS3A+FR6 + WL 3,L3VS3A+FR5 + WL 3,L3VS3A+FR4 + WL 3,L3VS3A+FR3 + WL 3,L3VS3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#release_table + ; X Y + .word 0,40 ;Bret + .word 0,20 ;Razor + .word 0,20 ;Taker + .word 0,20 ;Yokozuna + .word 0,-20 ;Shawn + .word 0,50 ;BamBam + .word 0,-40 ;Doink + .word 0,0 ;Adam + .word 0,20 ;Lex + + .ref und_flyout2_anim + .ref yok_flyout2_anim + .ref bam_flyout2_anim + .ref dnk_flyout2_anim + .ref lex_flyout2_anim + +#flyout_tbl2 + .long hrt_flyout_anim + .long rzr_flyout_anim + .long und_flyout2_anim + .long yok_flyout2_anim + .long shn_flyout_anim + .long bam_flyout2_anim + .long dnk_flyout2_anim + .long 0 + .long lex_flyout2_anim + + +#xflip_tbl + .word 1 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 1 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#xflip_tbl2 + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 1 ;shawn + .word 0 ;bam + .word 1 ;doink + .word 0 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3BF3A+FR3,24,-36,0 + LWWW H3PP3X+FR1,19,-39,0 + LWWW H3PP3X+FR2,15,11,0 + LWWW H3PP3X+FR3,8,42,0 + LWWW H3PP3X+FR4,2,59,0 + LWWW H3PP3X+FR5,13,76,0 + LWWW H3PP3X+FR6,-1,82,0 + LWWW H3UC3X+FR8,-27,44,0 + LWWW H3UC3X+FR9,-72,10,0 + LWWW H3UC3X+FR10,-91,8,0 + .long 0 +#Razor + LWWW R3GP3Z+FR1,17,-43,0 + LWWW R3GP3Z+FR2,14,-27,0 + LWWW R3GP3Z+FR3,12,17,0 + LWWW R3GP3Z+FR4,22,52,0 + LWWW R3GP3Z+FR5,19,70,0 + LWWW R3GP3Z+FR6,22,73,0 + LWWW R3GP3Z+FR7,-5,61,0 + LWWW R3TD3A+FR7,-12,59,0 + LWWW R3TD3A+FR8,-37,35,0 + LWWW R3GU2A+FR1,-112,-10,1 + .long 0 +#Taker + LWWW U3PP3X+FR1,19,-39,1 + LWWW U3PP3X+FR2,18,-22,1 + LWWW U3PP3X+FR3,14,-6,1 + LWWW U3PP3X+FR4,7,26,1 + LWWW U3PP3X+FR5,11,74,1 + LWWW U3PP3X+FR6,14,96,1 + LWWW U3FH3A+FR5,-33,64,1 + LWWW U3FH3A+FR5,-38,67,1 + LWWW U3FD3B+FR7,-114,-15,0 + LWWW U3CP3B+FR1,-128,-6,1 + .long 0 +#Yokozuna + LWWW Y3BF3A+FR11,23,-28,0 + LWWW Y3PP3Q+FR1,17,-20,0 + LWWW Y3PP3Q+FR3,23,-2,0 + LWWW Y3PP3Q+FR4,21,21,0 + LWWW Y3PP3Q+FR6,0,48,0 + LWWW Y3PP3Q+FR7,0,53,0 + LWWW Y3PP3Q+FR7,-8,58,0 + LWWW Y3FD3A+FR5,-70,45,0 + LWWW Y3FD3A+FR6,-78,13,0 + LWWW Y3FD3A+FR7,-97,14,0 + .long 0 +#Shawn + LWWW S3BF3A+FR5,19,-40,0 + LWWW S3GP3X+FR1,20,-34,0 + LWWW S3GP3X+FR2,17,-21,0 + LWWW S3GP3X+FR3,20,9,0 + LWWW S3GP3X+FR4,16,62,0 + LWWW S3GP3X+FR5,15,65,0 + LWWW S3OS3X+FR9,-26,65,1 + LWWW S3UC3X+FR6,-31,53,0 + LWWW S3UC3X+FR8,-96,-13,0 + LWWW S3OS3X+FR10,-104,-5,1 + .long 0 +#BamBam + LWWW B3PP3Q+FR1,14,-40,0 + LWWW B3PP3Q+FR2,16,-12,0 + LWWW B3PP3Q+FR3,20,15,0 + LWWW B3PP3Q+FR4,18,42,0 + LWWW B3PP3Q+FR5,16,60,0 + LWWW B3PP3Q+FR6,9,70,0 + LWWW B4TD3B+FR8,-12,61,0 + LWWW B4TD3B+FR8,-19,64,0 + LWWW B4TD3A+FR1,-68,12,0 + LWWW B4TD3B+FR9,-90,3,0 + .long 0 +#Doink + LWWW D3PD3Z+FR1,25,-47,1 + LWWW D3PD3Z+FR2,19,-23,1 + LWWW D3PD3Z+FR3,18,4,1 + LWWW D3PD3Z+FR4,15,49,1 + LWWW D3PD3Z+FR5,8,73,1 + LWWW D3PD3Z+FR6,18,66,1 + LWWW D3PD3Z+FR6,12,65,1 + LWWW D3UC3A+FR8,-17,61,0 + LWWW D3UC3A+FR11,-90,6,0 + LWWW D3SA3A+FR2,-111,-8,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3BF3B+FR1,23,-40,0 + LWWW L3GP3Z+FR1,13,-31,0 + LWWW L3GP3Z+FR2,16,-13,0 + LWWW L3GP3Z+FR3,20,11,0 + LWWW L3GP3Z+FR5,21,39,0 + LWWW L3GP3Z+FR6,20,57,0 + LWWW L3GP3Z+FR6,9,66,0 + LWWW L3FH3A+FR6,-11,52,0 + LWWW L3UC3X+FR4,-94,3,0 + LWWW L3CP3X+FR1,-117,-7,1 + .long 0 + +#***************************************************************************** +* +* + SUBR lex_4_graboh_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,10 + WL 3,L4PO4A+FR1 + LEAPATOPP 10,70,55,55,90000h,TGT_CHEST,70,78,0 + WL ANI_SET_YVEL,20000h + WL 4,L4PO4A+FR2 + WL 2,L4PO4A+FR3 + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_ATTACK_ON, AMODE_PUPPET,31,51,56,53 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,L4PO4A+FR3 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFBLOCKED,#missedb + +;#gotim + .ref CALL_SETUP + WL ANI_CODE,CALL_SETUP + .word ANI_SOUND,82h ;Effort grunt + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WL ANI_CODE,DO_NONO + WWLLW ANI_SUPERSLAVE2,8,L4PO4A+FR5,puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L4PO4A+FR6,puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,L4PO4A+FR7,puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,L4PO4A+FR8,puppet_tbl,3 + + WL ANI_SLAVEANIM,heldoh_tbl + + WL 1,L4PO4A+FR8 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + +#missedb + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 15,L4PO4A+FR4 + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 15,L4PO4A+FR4 + WL 3,L4PO4A+FR3 + WL 3,L4PO4A+FR2 + WL 3,L4PO4A+FR1 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + + .ref hrt_heldoh_anim + .ref rzr_heldoh_anim + .ref und_heldoh_anim + .ref yok_heldoh_anim + .ref shn_heldoh_anim + .ref bam_heldoh_anim + .ref dnk_heldoh_anim +; .ref lex_heldoh_anim + +heldoh_tbl + .long hrt_heldoh_anim + .long rzr_heldoh_anim + .long und_heldoh_anim + .long yok_heldoh_anim + .long shn_heldoh_anim + .long bam_heldoh_anim + .long dnk_heldoh_anim + .long 0 + .long lex_heldoh_anim + +lex_grab_tbl +puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4AM3A+FR1,81,7,0 + LWWW H3MS3Z+FR1,35,24,0 + LWWW H3MS3Z+FR4,-1,17,0 + LWWW H4MF4B+FR9,-19,18,0 + .long 0 +#Razor + LWWW R3MS3Z+FR1,66,10,0 + LWWW R3MS3Z+FR2,39,16,0 + LWWW R3MS3Z+FR3,5,14,0 + LWWW R4MF4B+FR9,-57,28,0 + .long 0 +#Taker + LWWW U4AM4C+FR1,63,19,0 + LWWW U3MS3Z+FR1,31,35,0 + LWWW U3MS3Z+FR3,-16,13,0 + LWWW U4PM3C+FR7,-29,27,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR1,90,14,0 + LWWW Y3MS3Z+FR2,45,25,0 + LWWW Y3MS3Z+FR4,-3,24,0 + LWWW Y3MF3B+FR7,-30,20,0 + .long 0 +#Shawn + LWWW S3OS3X+FR3,56,22,1 + LWWW S3MS3Z+FR1,29,13,0 + LWWW S3MS3Z+FR3,-16,22,0 + LWWW S3MF3B+FR7,-41,23,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,75,18,0 + LWWW B3MS3Z+FR2,42,14,0 + LWWW B3MS3Z+FR3,8,15,0 + LWWW B4MF4A+FR7,-51,35,0 + .long 0 +#Doink + LWWW D3AH3B+FR5,67,16,0 + LWWW D3GS3X+FR3,37,20,0 + LWWW D3GS3X+FR4,7,22,0 + LWWW D4MF4A+FR9,-32,37,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MS3Z+FR1,72,4,0 + LWWW L3MS3Z+FR2,37,10,0 + LWWW L3MS3Z+FR3,-2,14,0 + LWWW L3MF3B+FR6,-34,13,0 + .long 0 + +#***************************************************************************** + + SUBR lex_slamdown_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ZEROVELS +; .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SETSPEED,100h + WL ANI_SLAVEANIM,slaveanim_tbl + + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_DRAW_NAME,6 + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WL ANI_SET_YVEL,028000h + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + + WWLLW ANI_SUPERSLAVE2,4,L3FO3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L3FO3A+FR2,#puppet_tbl,1 + + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_out + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + + WWLLW ANI_SUPERSLAVE2,3,L3FO3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,L3FO3A+FR4,#puppet_tbl,3 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WWLLW ANI_SUPERSLAVE2,3,L3FO3A+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,1,L3FO3A+FR6,#puppet_tbl,5 + + WL ANI_OPPOFFSET,#release_table + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#breakneck_tbl + WLLL ANI_SETOPPVELS,30000h,40000h,0 ;x,y,z vels + .word ANI_DEBRISAT,300,1,0,8,0 ;%chance,tbl index,x,y,z off + + .word ANI_DETACH + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + WL ANI_CODE,CALL_SPECIAL_MOVE + + WL 3,L3FO3A+FR6 + WL ANI_CODE,#set_opp_y + WL 3,L3FO3A+FR7 + WL 3,L3FO3A+FR8 + + .word ANI_XFLIP + WL 3,L4ST4C+FR4 + + .word ANI_FACEDOWN ;down looks good on a miss + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#release_table + ; X Y + .word 32,24 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 0,0 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#set_opp_y + move *a13(WHOIHIT),a0,L + movi [5,0],a14 + move a14,*a0(OBJ_YVEL),L + movi [2,0],a14 + move a14,*a0(OBJ_ZVEL),L + + movi -[3,0],a1 + move *a0(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a1 ;left +#abs + move a1,*a0(OBJ_XVEL),L + rets + +#throw_him_out + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL ANI_CODE,CALL_THROWN_OUT + WLLL ANI_ATTACHVEL,0A0000h,70000h,0h ;x,y,z + WL ANI_SLAVEANIM,flyout_tbl + .word ANI_DETACH + + + WL 3,L3FO3A+FR3 + WL 3,L3FO3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,10 + + WL 3,L3FO3A+FR5 + WL 25,L3FO3A+FR6 + WL 4,L3FO3A+FR7 + WL 4,L3FO3A+FR8 + + .word ANI_XFLIP + WL 4,L4ST4C+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#xflip_tbl + .word 1 ;bret + .word 1 ;razor + .word 1 ;taker + .word 1 ;yoko + .word 1 ;shawn + .word 1 ;bam + .word 1 ;doink + .word 1 ;spare + .word 1 ;lex + +#breakneck_tbl + .long hrt_break_neck2_anim + .long rzr_break_neck2_anim + .long und_break_neck2_anim + .long yok_break_neck2_anim + .long shn_break_neck2_anim + .long bam_break_neck2_anim + .long dnk_break_neck2_anim + .long 0 + .long lex_break_neck2_anim + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4MF4B+FR9,-21,18,0 + LWWW H3PP3X+FR3,-19,61,0 + LWWW H3PP3X+FR4,-19,54,1 + LWWW H3PP3X+FR5,-13,55,1 + LWWW H3PP3X+FR7,-52,-16,1 + LWWW H3PP3X+FR8,-58,-36,1 + .long 0 +#Razor + LWWW R4MF4B+FR9,-58,25,0 + LWWW R3GP3Z+FR3,-17,39,0 + LWWW R3GP3Z+FR4,-18,43,1 + LWWW R3GP3Z+FR5,-10,45,1 + LWWW R3GP3Z+FR7,-48,0,1 + LWWW R3GP3Z+FR8,-53,-40,1 + .long 0 +#Taker + LWWW U4PM3C+FR7,-35,26,0 + LWWW U3PP3X+FR3,-26,27,1 + LWWW U3PP3X+FR4,-32,35,0 + LWWW U3PP3X+FR5,-23,42,0 + LWWW U3GP3X+FR1,-58,-23,0 + LWWW U3GP3X+FR2,-56,-44,0 + .long 0 +#Yokozuna + LWWW Y3MF3B+FR7,-41,19,0 + LWWW Y3PP3Q+FR3,-14,21,0 + LWWW Y3PP3Q+FR4,-17,20,1 + LWWW Y3PP3Q+FR7,-31,37,1 + LWWW Y3FD3N+FR2,-67,-16,1 + LWWW Y3FD3N+FR3,-65,-15,1 + .long 0 +#Shawn + LWWW S3MF3B+FR7,-45,19,0 + LWWW S3GP3X+FR3,-10,22,0 + LWWW S3GP3X+FR4,-10,43,1 + LWWW S3GP3X+FR5,-13,33,1 + LWWW S3GP3X+FR7,-53,-15,1 + LWWW S3GP3X+FR6,-55,-32,1 + .long 0 +#BamBam + LWWW B4MF4A+FR7,-55,32,0 + LWWW B3MS3Z+FR5,-36,25,0 + LWWW B3PP3Q+FR3,-22,36,1 + LWWW B3PP3Q+FR4,-12,52,1 + LWWW B3PP3Q+FR7,-63,-7,1 + LWWW B3FD3C+FR1,-70,-29,1 + .long 0 +#Doink + LWWW D4MF4A+FR9,-29,35,0 + LWWW D3PD3Z+FR3,-8,35,1 + LWWW D3PD3Z+FR4,-13,60,0 + LWWW D3PD3Z+FR6,-3,47,0 + LWWW D3PD3Z+FR8,-48,-28,0 + LWWW D3PD3Z+FR9,-47,-46,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MF3B+FR6,-36,14,0 + LWWW L3GP3Z+FR2,-10,19,0 + LWWW L3GP3Z+FR3,-15,20,1 + LWWW L3GP3Z+FR5,-11,37,1 + LWWW L3FH3A+FR6,-59,-12,1 + LWWW L3FD3B+FR1,-56,-35,1 + .long 0 + + +#***************************************************************************** +* +* GRAB & SLAM ANIM + + SUBR lex_combo_backbreak_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + LEAPATOPP 12,100,40,40,90000h,TGT_HEAD,70,78,0 + WL ANI_SET_YVEL,0 + WL 5,L4PO4A+FR1 + WL 5,L4PO4A+FR2 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_ATTACK_ON, AMODE_PUPPET,31,51,56,53 ;mode,x,y,w,h + WL 3,L4PO4A+FR3 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFBLOCKED,#missedbc + .word ANI_INC_COMBO + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,8,L4PO4A+FR5,puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,5,L4PO4A+FR6,puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,5,L4PO4A+FR7,puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,5,L4PO4A+FR8,puppet_tbl,3 + + WL ANI_SLAVEANIM,heldoh_tbl + + WL 4,L4PO4A+FR8 + + WL ANI_SLAVEANIM,slaveanim_tbl + + .word ANI_SET_RPTCOUNT,3 ;5 times +#back_loop + .word ANI_CLR_BUTCOUNT + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWL ANI_SETLONG,OBJ_GRAVITY,0a000h + WL ANI_SET_YVEL,060000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WWLLW ANI_SUPERSLAVE2,4,L4ZZ5B+FR1,#puppet_tbl,0 + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + WWLLW ANI_SUPERSLAVE2,1,L4ZZ5B+FR2,#puppet_tbl,1 + + .word ANI_INC_COMBO + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_DEBRISAT,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + ;impact + WL ANI_CODE,CALL_BONE_BREAK + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + + WWLLW ANI_SUPERSLAVE2,3,L4ZZ5B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,L4ZZ5B+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,8,L4ZZ5B+FR5,#puppet_tbl,4 + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#no_more_back + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#special_exit_move + WL ANI_GOTO,#back_loop +#no_more_back + + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#bounceoff_tbl + WLLL ANI_SETOPPVELS,0,0,-28000h ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_IMMOBILIZE,75 + WL 20,L4ZZ5B+FR5 + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#no_hammer + .word ANI_OPP_GETUP,-75 + WL ANI_CHANGEANIM,lex_combo_hammer_anim + +#no_hammer + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit_move + WL ANI_CHANGEANIM,lex_combo_ground_punch_anim + +#exit_move + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#special_exit_move + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#bounceoff_tbl + WLLL ANI_SETOPPVELS,0,0,-28000h ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 20,L4ZZ5B+FR5 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedbc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 10,L4PO4A+FR4 + + WL 14,L4PO4A+FR4 + WL 6,L4PO4A+FR3 + WL 6,L4PO4A+FR2 + WL 6,L4PO4A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* +* BACK BREAKER + + SUBR lex_backbreaker_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + + WL ANI_SLAVEANIM,slaveanim_tbl + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWL ANI_SETLONG,OBJ_GRAVITY,0a000h + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WWLLW ANI_SUPERSLAVE2,4,L4ZZ5B+FR1,#puppet_tbl,0 + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + WWLLW ANI_SUPERSLAVE2,1,L4ZZ5B+FR2,#puppet_tbl,1 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_DEBRISAT,350,1,0,8,0 ;%chance, tbl index, x,y,z off + + ;impact + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 +; .word ANI_SHAKER,50 + + WWLLW ANI_SUPERSLAVE2,2,L4ZZ5B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,2,L4ZZ5B+FR4,#puppet_tbl,3 + .word ANI_SHAKER,50 + WWLLW ANI_SUPERSLAVE2,6,L4ZZ5B+FR5,#puppet_tbl,4 + + WL ANI_SET_YVEL,028000h + + WL ANI_CODE,CALL_BONE_BREAK + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_DAMAGEOPP,D_BACKBRKR,RD_BACKBRKR + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#bounceoff_tbl + WLLL ANI_SETOPPVELS,0,0,-38000h ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 12,L4ZZ5B+FR5 + + .word ANI_FACEDOWN ;down looks good on a miss + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#xflip_tbl + .word 1 ;bret + .word 1 ;razor + .word 1 ;taker + .word 0 ;yoko + .word 1 ;shawn + .word 1 ;bam + .word 1 ;doink + .word 1 ;spare + .word 1 ;lex + +#bounceoff_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3BR3Z+FR4,-30,14,1 + LWWW H3BR3Z+FR4,-30,15,1 + LWWW H3BR3Z+FR3,-19,7,1 + LWWW H3BR3Z+FR2,-14,12,1 + LWWW H3BR3Z+FR1,-4,7,1 + LWWW H3BR3Z+FR2,-12,13,1 + LWWW H3BR3Z+FR4,-21,6,1 + LWWW H4MF4B+FR9,-21,20,1 + LWWW H4MF4B+FR9,-20,15,1 + .long 0 +#Razor + LWWW R3AM3D+FR2,-12,24,1 + LWWW R3FD3B+FR5,-18,46,1 + LWWW R3FD3B+FR5,-16,42,1 + LWWW R3BR3Z+FR2,-11,9,1 + LWWW R3BR3Z+FR3,-19,1,1 + LWWW R3BR3Z+FR2,-15,8,1 + LWWW R3AM3D+FR2,-6,10,1 + LWWW R4MF4B+FR9,-55,31,1 + LWWW R4MF4B+FR9,-57,28,1 + .long 0 +#Taker + LWWW U3CP3B+FR2,-36,18,0 + LWWW U3CP3B+FR2,-37,19,0 + LWWW U3CP3B+FR1,-34,5,0 + LWWW U3BR3Z+FR4,-25,15,1 + LWWW U3BR3Z+FR3,-23,-1,1 + LWWW U3BR3Z+FR4,-23,16,1 + LWWW U3CP3B+FR2,-28,7,1 + LWWW U4PM3C+FR7,-29,34,1 + LWWW U4PM3C+FR7,-29,27,1 + .long 0 +#Yokozuna + LWWW Y3RL1A+FR1,-33,23,0 + LWWW Y3RL1A+FR1,-30,20,0 + LWWW Y3CP3B+FR1,-13,13,0 + LWWW Y3BR3Z+FR2,-3,13,1 + LWWW Y3BR3Z+FR1,-26,11,1 + LWWW Y3BR3Z+FR2,-6,13,1 + LWWW Y3CP3B+FR1,-7,18,0 + LWWW Y3MF3B+FR7,-32,29,0 + LWWW Y3MF3B+FR7,-30,20,0 + .long 0 +#Shawn + LWWW S3CP3B+FR2,-25,25,0 + LWWW S3CP3B+FR2,-26,25,0 + LWWW S3CP3B+FR7,-24,1,0 + LWWW S3BR3Z+FR2,-6,-1,1 + LWWW S3BR3Z+FR3,4,-1,1 + LWWW S3BR3Z+FR2,-5,-3,1 + LWWW S3CP3B+FR7,-26,-2,1 + LWWW S3MF3B+FR7,-43,31,1 + LWWW S3MF3B+FR7,-41,23,1 + .long 0 +#BamBam + LWWW B3BR3Z+FR13,-32,29,1 + LWWW B3BR3Z+FR13,-34,28,1 + LWWW B3BR3Z+FR16,-27,34,1 + LWWW B3BR3Z+FR15,-22,16,1 + LWWW B3BR3Z+FR14,-28,23,1 + LWWW B3BR3Z+FR15,-22,18,1 + LWWW B3BR3Z+FR13,-25,20,1 + LWWW B4MF4A+FR7,-52,43,1 + LWWW B4MF4A+FR7,-51,35,1 + .long 0 +#Doink + LWWW D3UC3A+FR5,-34,38,1 + LWWW D3UC3A+FR5,-33,38,1 + LWWW D3SA3A+FR2,-24,3,0 + LWWW D3BK3Z+FR6,-16,9,1 + LWWW D3BK3Z+FR7,-21,-3,1 + LWWW D3BK3Z+FR7,-19,-1,1 + LWWW D3BK3Z+FR6,-20,14,1 + LWWW D4MF4A+FR9,-33,45,1 + LWWW D4MF4A+FR9,-32,37,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3UC3A+FR4,-22,24,1 + LWWW L3UC3A+FR4,-25,25,1 + LWWW L3UC3A+FR6,-16,9,1 + LWWW L3BR3Z+FR2,-12,3,1 + LWWW L3BR3Z+FR1,-13,-7,1 + LWWW L3BR3Z+FR2,-12,3,1 + LWWW L3UC3A+FR6,-16,9,1 + LWWW L3MF3B+FR6,-36,16,1 + LWWW L3MF3B+FR6,-34,13,1 + .long 0 + +#***************************************************************************** +*drop + + SUBR lex_ohslam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED +; .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_ZERO_XZVELS + + WWWL ANI_IFNOTROPE,RC_EITHER,XTOSSDIST,#ok + WL ANI_CODE,#ck_flip + +#ok WL ANI_SLAVEANIM,slaveanim_tbl + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + .word ANI_SOUND,82h ;Effort grunt + +; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_DRAW_NAME,6 + WWLLW ANI_SUPERSLAVE2,12,L4CF4A+FR1,#puppet_tbl,0 +; WWLLW ANI_SUPERSLAVE2,3,L4CF4A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,1,L4CF4A+FR2,#puppet_tbl,1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS +; WWWL ANI_IFNOTROPE,RC_FRONT,XTOSSDIST_CLOSE,#ok +; +; +; .WORD ANI_XFLIP +; +;#ok + WWLLW ANI_SUPERSLAVE2,3,L4CF4A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,L4CF4A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,L4CF4A+FR5,#puppet_tbl,4 + + .word ANI_ZERO_XZVELS + ;impact + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + WL ANI_CODE,CALL_SPECIAL_MOVE + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WWLLW ANI_SUPERSLAVE2,4,L4CF4A+FR7,#puppet_tbl,5 + + WL ANI_CODE,CALL_SPECIAL_MOVE + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,10000h,50000h,20000h ;x,y,z vels + .word ANI_DEBRISAT,300,1,0,8,0 ;%chance,tbl index,x,y,z off + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WL 3,L4CF4A+FR8 + WL ANI_CODE,#set_opp_y + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 20,L4CF4A+FR8 + WL 3,L4CF4A+FR9 + WL 3,L4CF4A+FR10 + + .word ANI_FACEDOWN ;down looks good on a miss + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ck_flip + move *a13(OBJ_XPOSINT),a1 + cmpi RING_X_CENTER,a1 + jrgt #check_right_rope +;On left side of ring +;check facing down and left + + movi MOVE_RIGHT|MOVE_DOWN,a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + xori M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + + xori MOVE_LEFT|MOVE_RIGHT,a0 +#no_flip + move a0,*a13(FACING_DIR) + rets + +#check_right_rope + movi MOVE_LEFT|MOVE_DOWN,a0 + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrnz #no_flip + xori M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + xori MOVE_RIGHT|MOVE_RIGHT,a0 + jruc #no_flip + +; .if 0 +;#throw_him_out +; WL ANI_CODE,CALL_THROWN_OUT +; WLLL ANI_ATTACHVEL,0A0000h,70000h,0h ;x,y,z +; WL ANI_SLAVEANIM,#flyout_tbl +; WL ANI_OPPOFFSET,#release_table +; +; .WORD ANI_FACE,MOVE_LEFT|MOVE_DOWN +; .WORD ANI_XFLIP +; .word ANI_DETACH +; WL 3,L3FO3A+FR3 +; WL 3,L3FO3A+FR4 +; .word ANI_WAITHITGND +; .word ANI_ZERO_XZVELS +; .word ANI_SHAKEALL,2 +; .word ANI_SHAKER,10 +; +; WL 3,L3FO3A+FR5 +; WL 3,L3FO3A+FR6 +; +; WL 3,L3FO3A+FR6 +; +; WL 4,L3FO3A+FR7 +; WL 4,L3FO3A+FR8 +; +; .word ANI_XFLIP +; WL 4,L4ST4C+FR4 +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END +; +;#release_table +; ; X Y +; .word 0,0 ;Bret +; .word 0,0 ;Razor +; .word 0,0 ;Taker +; .word 0,0 ;Yokozuna +; .word 0,0 ;Shawn +; .word 0,0 ;BamBam +; .word 0,0 ;Doink +; .word 0,0 ;Adam +; .word 0,0 ;Lex +; +; .ref und_flyout2_anim +; .ref yok_flyout2_anim +; .ref bam_flyout2_anim +; .ref dnk_flyout2_anim +; .ref lex_flyout2_anim +; +;#flyout_tbl +; .long hrt_flyout_anim +; .long rzr_flyout_anim +; .long und_flyout2_anim +; .long yok_flyout2_anim +; .long shn_flyout_anim +; .long bam_flyout2_anim +; .long dnk_flyout2_anim +; .long 0 +; .long lex_flyout2_anim +; +; .endif + +#set_opp_y + move *a13(WHOIHIT),a0,L + movi [5,0],a14 + move a14,*a0(OBJ_YVEL),L + movi [2,0],a14 + move a14,*a0(OBJ_ZVEL),L + + movi -[3,0],a1 + move *a0(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a1 ;left +#abs + move a1,*a0(OBJ_XVEL),L + rets + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 1 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4MF4B+FR1,-33,15,0 + LWWW H4MF4B+FR1,-33,15,0 + LWWW H4MF4B+FR1,-30,15,0 + LWWW H4MF4B+FR1,-20,16,0 + LWWW H4MF4B+FR1,-9,11,0 + LWWW H3MS3X+FR1,0,-38,0 + .long 0 +#Razor + LWWW R4MF4B+FR6,-32,21,0 + LWWW R4MF4B+FR6,-32,22,0 + LWWW R4MF4B+FR6,-29,23,0 + LWWW R4MF4B+FR6,-19,22,0 + LWWW R4MF4B+FR6,-8,19,0 + LWWW R3MS3Z+FR6,3,-31,0 + .long 0 +#Taker + LWWW U4PM3C+FR6,-46,23,0 + LWWW U4PM3C+FR6,-46,24,0 + LWWW U4PM3C+FR6,-43,25,0 + LWWW U4PM3C+FR6,-33,24,0 + LWWW U4PM3C+FR6,-22,21,0 + LWWW U3CF3Q+FR1,-21,-46,0 + .long 0 +#Yokozuna + LWWW Y3MF3B+FR7,-41,27,0 + LWWW Y3MF3B+FR7,-41,28,0 + LWWW Y3MF3B+FR7,-34,27,0 + LWWW Y3MF3B+FR7,-24,27,0 + LWWW Y3MF3B+FR7,-15,22,0 + LWWW Y3KF3B+FR1,-1,-24,0 + .long 0 +#Shawn + LWWW S3MF3B+FR6,-47,23,0 + LWWW S3MF3B+FR6,-44,25,0 + LWWW S3MF3B+FR6,-37,21,0 + LWWW S3MF3B+FR6,-34,23,0 + LWWW S3MF3B+FR6,-23,18,0 + LWWW S3CF3Z+FR1,8,-43,0 + .long 0 +#BamBam + LWWW B4MF4A+FR6,-52,39,0 + LWWW B4MF4A+FR6,-52,40,0 + LWWW B4MF4A+FR6,-49,41,0 + LWWW B4MF4A+FR6,-39,40,0 + LWWW B4MF4A+FR6,-28,37,0 + LWWW B3RL1A+FR7,2,-37,0 + .long 0 +#Doink + LWWW D4MF4A+FR1,-38,17,0 + LWWW D4MF4A+FR1,-38,18,0 + LWWW D4MF4A+FR1,-35,19,0 + LWWW D4MF4A+FR1,-25,18,0 + LWWW D4MF4A+FR1,-14,15,0 + LWWW D3GS3X+FR8,-1,-43,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MF3B+FR6,-47,16,0 + LWWW L3MF3B+FR6,-47,17,0 + LWWW L3MF3B+FR6,-44,18,0 + LWWW L3MF3B+FR6,-34,17,0 + LWWW L3MF3B+FR6,-23,14,0 + LWWW L3TF3X+FR1,-16,-39,0 + .long 0 + +#***************************************************************************** + + SUBR lex_combo_grab2elbow_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_STARTATTACK,AT_PUPPET,8 + + WL 3,L4WS4B+FR1 + WL 3,L4WS4B+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,14,0,67,100 ;mode,x,y,w,h + WL 1,L4WS4B+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#gotimc + +;missed + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 8,L4WS4B+FR3 + WL 3,L4WS4B+FR2 + WL 3,L4WS4B+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gotimc + .word ANI_INC_COMBO + .word ANI_OFFSET,0,0,-1 ;x,y,z + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WWLLW ANI_SUPERSLAVE2,2,L4WS4B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L4WS4B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,L4WA4B+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,L4WA4B+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,12,L4BZ3B+FR1,#puppet_tbl,4 + WL 3,L4BZ3B+FR2 + WL 3,L4BZ3B+FR3 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + WL 1,L4BZ3B+FR4 + WL ANI_CODE,#flsh_wht + + .word ANI_DEBRISAT,500,1,-25,35,0 ;%chance, tbl index, x,y,z off + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#breakneck2_tbl + WLLL ANI_SETOPPVELS,40000h,40000h,10000h ;x,y,z vels + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + .ref impact_sound + WL ANI_CODE,impact_sound + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 12,L4BZ3B+FR4 + WL 3,L4BZ3B+FR5 + WL 3,L4BZ3B+FR6 + WL 3,L4BZ3B+FR7 + + .word ANI_IMMOBILIZE,100 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#exit_move + WL ANI_CHANGEANIM,lex_combo_ground_clobber_anim +#exit_move + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN ;down looks good on a miss + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +*************************************************** + + SUBR lex_grab2elbow_rev_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_STARTATTACK,AT_PUPPET,8 + .word ANI_SETPLYRMODE,MODE_NORMAL + +; WL 3,L4WS4B+FR1 +; WL 3,L4WS4B+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,14,0,67,25 ;mode,x,y,w,h + WL 1,L4WS4B+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#gotimr + +;missed + WL 8,L4WS4B+FR3 + WL 3,L4WS4B+FR2 + WL 3,L4WS4B+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gotimr + .word ANI_OFFSET,0,0,-1 ;x,y,z + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WL ANI_GOTO,#inhere + +*************************************************** + + SUBR lex_grab2elbow_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_STARTATTACK,AT_PUPPET,8 + + WL 3,L4WS4B+FR1 + WL 3,L4WS4B+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,14,0,67,25 ;mode,x,y,w,h + WL 1,L4WS4B+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#gotim + +;missed + WL 8,L4WS4B+FR3 + WL 3,L4WS4B+FR2 + WL 3,L4WS4B+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gotim + .word ANI_OFFSET,0,0,-1 ;x,y,z + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WWLLW ANI_SUPERSLAVE2,4,L4WS4B+FR3,#puppet_tbl,0 +#inhere WWLLW ANI_SUPERSLAVE2,4,L4WS4B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,L4WA4B+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,L4WA4B+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,14,L4BZ3B+FR1,#puppet_tbl,4 + WL 3,L4BZ3B+FR2 + WL 3,L4BZ3B+FR3 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + WL 1,L4BZ3B+FR4 + WL ANI_CODE,#flsh_wht + + .word ANI_DEBRISAT,500,1,-25,35,0 ;%chance, tbl index, x,y,z off + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#breakneck2_tbl + WL ANI_CODE,#setopp_deadanim + WLLL ANI_SETOPPVELS,50000h,40000h,10000h ;x,y,z vels + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + .ref impact_sound + WL ANI_CODE,impact_sound + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 12,L4BZ3B+FR4 + WL 3,L4BZ3B+FR5 + WL 3,L4BZ3B+FR6 + WL 3,L4BZ3B+FR7 + + .word ANI_FACEDOWN ;down looks good on a miss + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBRP #setopp_deadanim + move *a13(ATTACH_PROC),a0,L + jrz #rets + move *a0(STATUS_FLAGS),a14,L + ori M_DEAD_ANIM,a14 + move a14,*a0(STATUS_FLAGS),L +#rets rets + + +#flsh_wht + .ref flash_white + calla flash_white + rets + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 1 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#breakneck2_tbl + .long hrt_breakneck2_anim ;bret + .long rzr_breakneck2_anim ;razor + .long und_breakneck2_anim ;taker + .long yok_breakneck2_anim ;yoko + .long shn_breakneck2_anim ;shawn + .long bam_breakneck2_anim ;bam + .long dnk_breakneck2_anim ;doink + .long lex_breakneck2_anim ;spare + .long lex_breakneck2_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + +#Bret + LWWW H3HB3A+FR1,36,-13,0 + LWWW H3HB3A+FR2,44,34,0 + LWWW H4KM3C+FR2,50,27,0 + LWWW H4KM3C+FR7,23,10,0 + LWWW H4KM3C+FR4,0,-8,0 + .long 0 +#Razor + LWWW R3HB3A+FR2,49,4,0 + LWWW R3HB3A+FR3,54,39,0 + LWWW R4KM3A+FR8,60,28,0 + LWWW R4KM3A+FR7,21,6,0 + LWWW R4KM3A+FR5,25,-3,0 + .long 0 +#Taker + LWWW U4BF3A+FR3,15,18,0 + LWWW U4BF3A+FR2,39,53,0 + LWWW U2KM3B+FR6,53,49,0 + LWWW U2KM3B+FR5,28,18,0 + LWWW U2KM3B+FR4,17,3,0 + .long 0 +#Yokozuna + LWWW Y4AM4A+FR2,51,16,0 + LWWW Y4AM4A+FR1,62,42,0 + LWWW Y4KM3A+FR8,41,28,0 + LWWW Y4KM3A+FR6,12,5,0 + LWWW Y4KM3A+FR5,18,-3,0 + .long 0 +#Shawn + LWWW S4BF3A+FR3,22,-1,0 + LWWW S4BF3A+FR2,48,31,0 + LWWW S4KM3C+FR8,60,26,0 + LWWW S4KM3C+FR7,32,-4,0 + LWWW S4KM3C+FR5,23,-14,0 + .long 0 +#BamBam + LWWW B3HB3A+FR2,45,1,0 + LWWW B4BF3A+FR1,58,52,0 + LWWW B4KM3A+FR8,41,30,0 + LWWW B4KM3A+FR7,19,14,0 + LWWW B4KM3A+FR6,18,4,0 + .long 0 +#Doink + LWWW D3AK3A+FR2,51,16,0 + LWWW D3AK3A+FR3,43,53,0 + LWWW D4KM3A+FR8,56,25,0 + LWWW D4KM3A+FR7,21,5,0 + LWWW D4KM3A+FR5,21,-5,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3BF3A+FR2,51,10,1 + LWWW L3BF3A+FR1,61,46,1 + LWWW L4KM3B+FR8,55,36,0 + LWWW L4KM3B+FR7,21,13,0 + LWWW L4KM3B+FR6,19,5,0 + .long 0 + + +#***************************************************************************** +* +* HIP TOSS RUNNING OPPONENT + + SUBR lex_combo_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + + .word ANI_SET_RPTCOUNT,3 ;5 times +#hiptoss_loop + .word ANI_CLR_BUTCOUNT + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 6,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0 + + WL 2,L4HT3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET,30,46,60,38 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,8,L4HT3A+FR2 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;got him + .word ANI_INC_COMBO + WL ANI_CODE,DO_GRUNT + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR6,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR7,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR8,#puppet_tbl,2 + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_outc + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR9,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR10,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR11,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR11,#puppet_tbl,6 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,SLAM_HIM + WLLL ANI_SETOPPVELS,0,090000h,0000h ;x,y,z vels + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 8,L4HT3A+FR11 + WL 4,L4HT3A+FR12 + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_XFLIP + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#next_combo_bit + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#exit_move + WL ANI_GOTO,#hiptoss_loop + +#next_combo_bit + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#not_grab + WL ANI_CHANGEANIM,lex_combo_grab2elbow_anim + +#not_grab + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit_move + WL ANI_CHANGEANIM,lex_combo_vsuplex_anim + +#exit_move + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedbc + WL 10,L4HT3A+FR2 +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + WL 20,L4HT3A+FR2 + + .word ANI_FACEDOWN ;down looks good on a miss + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_outc + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#throw_him_out + + .ref hrt_slamnobounce_anim ;bret + .ref rzr_slamnobounce_anim ;razor + .ref und_slamnobounce_anim ;taker + .ref yok_slamnobounce_anim ;yoko + .ref shn_slamnobounce_anim ;shawn + .ref bam_slamnobounce_anim ;bam + .ref dnk_slamnobounce_anim ;doink + .ref und_slamnobounce_anim ;spare + .ref lex_slamnobounce_anim ;lex +SLAM_HIM + .long hrt_slamnobounce_anim ;bret + .long rzr_slamnobounce_anim ;razor + .long und_slamnobounce_anim ;taker + .long yok_slamnobounce_anim ;yoko + .long shn_slamnobounce_anim ;shawn + .long bam_slamnobounce_anim ;bam + .long dnk_slamnobounce_anim ;doink + .long und_slamnobounce_anim ;spare + .long lex_slamnobounce_anim ;lex + +**************************** + + SUBR lex_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0 + + WL 4,L4HT3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET_TOSS,23,46,54,38 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,L4HT3A+FR2 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL 4,L4HT3A+FR2 + WL ANI_GOTO,#common + + SUBR lex_hiptoss2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,60,55,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0 + + WL 4,L4HT3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET_TOSS,23,46,54,38 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,8,L4HT3A+FR2 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + +#common + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +#got_him + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_DRAW_NAME,26 + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,DO_GRUNT + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR6,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR7,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR8,#puppet_tbl,2 + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_out + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR9,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR10,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR11,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,L4HT3A+FR11,#puppet_tbl,6 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#rollout_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL 7,L4HT3A+FR11 + WL 3,L4HT3A+FR12 + + .word ANI_XFLIP + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb +; .ref ck_hiptoss +; WL ANI_CODE,ck_hiptoss +; WL ANI_IFNOTSTATUS,#got_him + + WL 10,L4HT3A+FR2 +;Delay longer if 2nd hiptoss in quick succession! + .ref hiptoss_delay + WL ANI_CODE,hiptoss_delay + WL ANI_IFNOTSTATUS,#missed + WL 24,L4HT3A+FR2 +#missed + WL ANI_CODE,CALL_MISSES + WL 8,L4HT3A+FR2 + + .word ANI_FACEDOWN ;down looks good on a miss + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WL ANI_CODE,CALL_THROWN_OUT + WLLL ANI_ATTACHVEL,-0A0000h,90000h,0h ;x,y,z + WL ANI_SLAVEANIM,flyout_tbl + WL ANI_OPPOFFSET,#release_table + .word ANI_DETACH + + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,10 + + WL 3,L4HT3A+FR10 + WL 3,L4HT3A+FR11 + WL 3,L4HT3A+FR12 + + .word ANI_XFLIP + .word ANI_FACEUP ;up looks good on a hit + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#release_table + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 0,0 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +DO_GRUNT + WRSND W_LUGER,GRABFLING_T1,GRABFLING_T2 + RETS + + .ref hrt_flyout_anim + .ref rzr_flyout_anim + .ref und_flyout_anim + .ref yok_flyout_anim + .ref shn_flyout_anim + .ref bam_flyout_anim + .ref dnk_flyout_anim + .ref lex_flyout_anim + +flyout_tbl + .long hrt_flyout_anim + .long rzr_flyout_anim + .long und_flyout_anim + .long yok_flyout_anim + .long shn_flyout_anim + .long bam_flyout_anim + .long dnk_flyout_anim + .long 0 + .long lex_flyout_anim + + + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#rollout_tbl + .long hrt_tossed_anim,rzr_tossed_anim + .long und_tossed_anim + .long yok_tossed_anim + .long shn_tossed_anim,bam_tossed_anim + .long dnk_tossed_anim,0,lex_tossed_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AM3A+FR1,74,10,0 + LWWW H2AM3A+FR7,33,4,0 + LWWW H3FR3A+FR2,13,7,0 + LWWW H3FR3A+FR3,-15,40,0 + LWWW H3FR3A+FR4,-28,27,0 + LWWW H3FR3A+FR5,-63,16,0 + LWWW H2CP3A+FR8,-148,-65,1 + .long 0 +#Razor + LWWW R3TD3A+FR3,51,1,0 + LWWW R3TD3A+FR4,27,-2,0 + LWWW R3TD3A+FR5,17,8,0 + LWWW R3TD3A+FR6,-13,31,0 + LWWW R3TD3A+FR7,-30,33,0 + LWWW R3TD3A+FR8,-71,21,0 + LWWW R3GU2A+FR1,-172,-63,1 + .long 0 +#Taker + LWWW U4AM4C+FR4,56,13,0 + LWWW U3FH3A+FR1,44,6,1 + LWWW U3FH3A+FR2,-2,16,1 + LWWW U3FH3A+FR3,-19,26,1 + LWWW U3FH3A+FR4,-38,20,1 + LWWW U3FH3A+FR5,-76,31,1 + LWWW U3CP3B+FR1,-169,-58,1 + .long 0 +#Yokozuna + LWWW Y3FL3W+FR1,57,25,0 + LWWW Y3FL3W+FR2,28,17,0 + LWWW Y3FL3W+FR3,-15,22,0 + LWWW Y3FL3W+FR4,-36,36,0 + LWWW Y3FL3W+FR6,-39,37,0 + LWWW Y3FL3W+FR7,-74,24,0 + LWWW Y3FD3A+FR7,-132,-40,0 + .long 0 +#Shawn + LWWW S3OS3X+FR4,26,20,1 + LWWW S3OS3X+FR5,5,11,1 + LWWW S3OS3X+FR6,-4,41,1 + LWWW S3OS3X+FR7,-26,51,1 + LWWW S3OS3X+FR8,-26,51,1 + LWWW S3OS3X+FR9,-84,34,1 + LWWW S3OS3X+FR10,-142,-54,1 + .long 0 +#BamBam + LWWW B4TD3B+FR2,39,9,0 + LWWW B4TD3B+FR3,21,12,0 + LWWW B4TD3B+FR4,6,12,0 + LWWW B4TD3B+FR6,-18,57,0 + LWWW B4TD3B+FR7,-38,38,0 + LWWW B4TD3B+FR8,-69,13,0 + LWWW B4TD3B+FR9,-121,-49,0 + .long 0 +#Doink + LWWW D3PM4C+FR2,37,20,0 + LWWW D3OS3A+FR1,31,11,0 + LWWW D3OS3A+FR3,-7,6,0 + LWWW D3OS3A+FR4,-25,28,0 + LWWW D3OS3A+FR6,-28,25,0 + LWWW D3FD3E+FR2,-67,0,0 + LWWW D3SA3A+FR2,-143,-61,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR3,63,11,0 + LWWW L3FH3A+FR2,24,5,0 + LWWW L3FH3A+FR3,8,9,0 + LWWW L3FH3A+FR4,-9,22,0 + LWWW L3FH3A+FR5,-23,11,0 + LWWW L3FH3A+FR6,-69,16,0 + LWWW L3CP3X+FR1,-167,-59,1 + .long 0 + + +#***************************************************************************** +* +* SLIDING ELBOW + + SUBR lex_combo_sliding_elbow_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL 6,L4BZ3C+FR1 + + .word ANI_CLR_BUTCOUNT + ;max ticks,velocity,max z,tgt,xoff,yoff,zoff + WWLWWWWW ANI_SLIDEATOPP,18,090000h,80,TGT_CHEST,76,64,0 + .word ANI_FRICTION,4000h + + WL 2,L4BZ3C+FR2 + WL 2,L4BZ3C+FR3 + .word ANI_ATTACK_ON,AMODE_HITCHECK,0,40,60,36 + WWL ANI_WAITHITOPP,12,L4BZ3C+FR4 + .word ANI_ATTACK_OFF + + .word ANI_ZEROVELS + + WL ANI_IFNOTSTATUS,#missed + + WL 2,L4BZ3C+FR4 + ;impact! + .word ANI_ATTACK_ON,AMODE_KICK,0,40,70,36 + WL 3,L4BZ3C+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_INC_COMBO + .word ANI_SHAKER,35 + + WLLL ANI_SETOPPVELS,30000h,40000h,0h ;x,y,z vels + .word ANI_DETACH + + WL 6,L4BZ3C+FR5 + WL 2,L4BZ3C+FR6 + WL 2,L4BZ3C+FR7 + WL 2,L4BZ3C+FR8 + WL 2,L4BZ3C+FR9 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#no_clobber + WL ANI_CHANGEANIM,lex_combo_clobber_anim +#no_clobber + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#no_back + WL ANI_CHANGEANIM,lex_combo_backbreak_anim + +#no_back + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit + WL ANI_CHANGEANIM,lex_combo_hiptoss_anim +#exit + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed +#missedb + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 15,L4BZ3C+FR4 + WL 3,L4BZ3C+FR3 + WL 3,L4BZ3C+FR2 + WL 3,L4BZ3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* SLIDING ELBOW + + SUBR lex_sliding_elbow_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 3,L4BZ3C+FR1 + + ;max ticks,velocity,max z,tgt,xoff,yoff,zoff + WWLWWWWW ANI_SLIDEATOPP,18,090000h,80,TGT_CHEST,70,64,0 + .word ANI_FRICTION,3000h + + WL 3,L4BZ3C+FR2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,38-20,40,48+25,36 + WWL ANI_WAITHITOPP,12,L4BZ3C+FR3 + .word ANI_ATTACK_OFF + + .word ANI_ZEROVELS + + WL ANI_IFNOTSTATUS,#missed + + WL 2,L4BZ3C+FR4 + ;impact! + .word ANI_ATTACK_ON,AMODE_KICK,18,40,68,36 + WL 3,L4BZ3C+FR5 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + .word ANI_DEBRISAT,500,2,0,40,0 ;%chance, tbl index, x,y,z off + + .word ANI_SHAKER,35 + + WLLL ANI_SETOPPVELS,50000h,40000h,0h ;x,y,z vels + WL 12,L4BZ3C+FR5 + WL 3,L4BZ3C+FR6 + WL 3,L4BZ3C+FR7 + WL 3,L4BZ3C+FR8 + WL 3,L4BZ3C+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed + WL 15,L4BZ3C+FR4 + WL 3,L4BZ3C+FR3 + WL 3,L4BZ3C+FR2 + WL 3,L4BZ3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 15,L4BZ3C+FR4 + WL 3,L4BZ3C+FR3 + WL 3,L4BZ3C+FR2 + WL 3,L4BZ3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HEADHOLD KNEE-KNEE-KNEE-VSUPLEX + + SUBR lex_knees_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SET_RPTCOUNT,4 ;3 times + WL 2,L4NM3B+FR1 + WL 2,L4NM3B+FR2 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 +#rpt_loop + .word ANI_CLR_BUTCOUNT + WL ANI_SET_YVEL,20000h + WLW ANI_SET_XVEL,0C000h,AM_FACE_REL + .word ANI_ATTACK_ON, AMODE_HEADKNEES,14,30,48,54 + WL 2,L4NM3B+FR3 + .word ANI_ATTACK_OFF + + WL 3,L4NM3B+FR5 + WL 3,L4NM3B+FR6 + .word ANI_ZEROVELS + WL 3,L4NM3B+FR7 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit + + ;suplex + WL ANI_CHANGEANIM,lex_vsuplex_anim + +#exit +#exit2 + .word ANI_DETACH + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;#***************************************************************************** +;* +;* CHAIR STUFF +; +; .ref CHAIR_SWING +; +; SUBR lex_pkup_chair_anim +; +; .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +;#lp +; WL 4,L4WA4B+FR1 +; WL 4,L4WA4B+FR2 +; WL 4,L4WA4B+FR3 +; WL 4,L4WA4B+FR4 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,34,-6,1 ;image, x,y,zoff +; WL 4,L4WA4B+FR5 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,37,22,1 ;image, x,y,zoff +; WL 4,L4WA4B+FR6 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR2,44,67,1 ;image, x,y,zoff +; WL 4,L4WA4B+FR7 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,32,126,1 ;image, x,y,zoff +; WL 4,L4WA4B+FR8 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-1,146,1 ;image, x,y,zoff +; WL 4,L4WA4B+FR9 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,1,139,1 ;image, x,y,zoff +; WL 4,L4WA4B+FR10 +; +; +;; .word ANI_SINGLESTEP +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-28,141,1 ;image, x,y,zoff +; WL 4,L4CS3A+FR2 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-41,130,1 ;image, x,y,zoff +; WL 4,L4CS3A+FR4 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR7,-8,136,1 ;image, x,y,zoff +; WL 4,L4CS3A+FR5 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,63,111,1 ;image, x,y,zoff +; WL 4,L4CS3A+FR6 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,58,34,1 ;image, x,y,zoff +; WL 4,L4CS3A+FR7 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR10,43,17,1 ;image, x,y,zoff +; WL 4,L4CS3A+FR8 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,78,61,1 ;image, x,y,zoff +; WL 4,L4CS3A+FR9 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,53,122,1 ;image, x,y,zoff +; WL 4,L4CS3A+FR10 +; +;; .word ANI_SINGLESTEP +; WLW ANI_ATTCHIMAGE,0,0 +; +; WL ANI_GOTO,#lp + + +****************************************************************************** + + .end + diff --git a/LEXSEQ4.ASM b/LEXSEQ4.ASM new file mode 100755 index 0000000..77dc03f --- /dev/null +++ b/LEXSEQ4.ASM @@ -0,0 +1,1196 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 11/28/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lexseq4.asm" + .title "blocks, reactions to routine and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "leximg.h" + .include "damage.equ" + .INCLUDE "SWEAT.EQU" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref ckzpos,CALL_ANI_AVERAGE_MOVE,DO_WAIL,DO_BLOCKED + .ref DO_SCREAM,free_toss_check,setup_freetoss,lex_hiptoss_anim + +#***************************************************************************** +* +* #2 BLOCK & HITBLOCK + +; SUBR lex_2_block_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP +; .word ANI_SETSPEED,100h +; .word ANI_ZEROVELS +; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim +; .word ANI_SET_WRESTLER_XFLIP +; +; WL ANI_CODE,block_if_safe +; WL 3,L2BK3A+FR1 +; .word ANI_SETPLYRMODE,MODE_BLOCK +; WL 3,L2BK3A+FR2 +;#blk2 WL 3,L2BK3A+FR5 +; .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT +; .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT +; .word ANI_SETMODE,MODE_NOAUTOFLIP +; .word ANI_SETFACING +; WL 2,L2BK3A+FR2 +; WL 2,L2BK3A+FR1 +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +; SUBR lex_2_hitblock_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP +; .word ANI_FRICTION,4000h +; .word ANI_SETSPEED,100h +; +; WL ANI_CODE,DO_BLOCKED +; WL 4,L2BK3B+FR2 +; WL 4,L2BK3B+FR1 +; WL ANI_GOTO,#blk2 + +#************ +* +* #4 BLOCK & HITBLOCK + + SUBR lex_4_block_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + +; WL ANI_CODE,block_if_safe + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 3,L4BK3B+FR3 +; .word ANI_SETPLYRMODE,MODE_BLOCK +#blk4 WL 2,L4BK3B+FR5 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT|MODE_FRICTION +; .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_SETFACING + WL 3,L4BK3B+FR3 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_FRICTION,5000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL 2,L4BK3C+FR2 + WL 2,L4BK3C+FR1 + WL ANI_GOTO,#blk4 + + SUBR lex_4_hitblock2_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_FRICTION,4000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL ANI_SET_YVEL,38000h + WL 3,L4BK3C+FR1 + WL 3,L4BK3C+FR2 + WL 3,L4BK3C+FR1 + WL 3,L4BK3C+FR2 + WL 3,L4BK3C+FR1 + WL 3,L4BK3C+FR2 + WL ANI_GOTO,#blk4 + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR lex_slamnobounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 4,L3CP3X+FR3 + WL 4,L3CP3X+FR4 + WL 4,L3CP3X+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,L3CP3X+FR7 + WL 10,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + SUBR lex_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,L3CP3X+FR3 + WL ANI_CODE,ckzpos + WL 3,L3CP3X+FR3 + WL 4,L3CP3X+FR4 + WL 4,L3CP3X+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,L3CP3X+FR7 + + WL 10,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + SUBR lex_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,L3UC3Z+FR10 + WL ANI_CODE,ckzpos + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + WL 4,L3CP3X+FR3 + WL 4,L3CP3X+FR4 + WL 4,L3CP3X+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,L3CP3X+FR7 + WL 10,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#***************************************************************************** + + SUBR lex_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,30,59,0 ;x,y,z + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYD_SWEAT,SWEAT_PER,0 + WL 4,L3UC3X+FR3 + WL 4,L3UC3X+FR4 + WL 1,L3UC3X+FR5 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 3,L3UC3X+FR6 + WL 3,L3FD3B+FR1 + WL 3,L3FD3B+FR2 + WL 3,L3FD3B+FR3 + WL 3,L3FD3B+FR4 + WL 3,L3FD3B+FR5 + + .word ANI_ZERO_XZVELS + + WL 3,L3FD3B+FR6 + WL 2,L3CP3X+FR7 + WL ANI_CODE,HIT_THE_MAT + WL 6,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#***************************************************************************** + + SUBR lex_arm_broken_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-38000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_HIT_REL + + WL ANI_CODE,DO_SCREAM + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,L4AH4A+FR3 + WL 5,L4AH4A+FR4 + WL 5,L4AH4A+FR5 + + WL 1,L4ST4C+FR4 + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,lex_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR lex_2_head_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,L2AH2A+FR3 + WL 2,L2AH2A+FR4 + WL 3,L2AH2A+FR5 + WL 2,L2AH2A+FR6 + WL 3,L2AH2A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;From spin kick + SUBR lex_2_head_hit3_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,L2AH2A+FR3 + .word ANI_DEBRIS,300,2,-23,102,0 ;%chance, tbl index, x,y,z off + WL 4,L2AH2A+FR4 + WL 4,L2AH2A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,L2AH2A+FR6 + WL 3,L2AH2A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT + + SUBR lex_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,L4AH4A+FR1 + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,L4AH4A+FR2 + WL 2,L4AH4A+FR3 + WL 3,L4AH4A+FR4 + WL 2,L4AH4A+FR5 + WL 3,L4AH4A+FR6 + WL 2,L4AH4A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;From spin kick + SUBR lex_4_head_hit3_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,L4AH4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,L4AH4A+FR2 + WL 3,L4AH4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,L4AH4A+FR4 + WL 2,L4AH4A+FR5 + WL 3,L4AH4A+FR6 + WL 2,L4AH4A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_head_hit4_anim +;From earslap + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL ANI_SET_YVEL,40000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 4,L4AH4A+FR3 + WL 3,L4AH4A+FR4 + WL 4,L4AH4A+FR5 + WL 3,L4AH4A+FR6 + WL 4,L4AH4A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEAD HIT2 (HANDS ON FACE) + + SUBR lex_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_FRICTION,3000h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,L2AE2A+FR1 + WL 2,L2AE2A+FR2 + WL 3,L2AE2A+FR3 + WL 2,L2AE2A+FR4 + WL 3,L2AE2A+FR5 + WL 2,L2AE2A+FR6 + WL 3,L2AE2A+FR7 + WL 2,L2AE2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT2 (HANDS ON FACE) + + SUBR lex_4_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_FRICTION,3000h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,L4AE4A+FR1 + WL 3,L4AE4A+FR2 + WL 3,L4AE4A+FR3 + WL 3,L4AE4A+FR4 + WL 3,L4AE4A+FR5 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,lex_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_head_hit2s_anim +;Salt hits me in face + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + .ref create_impact_salt + WL ANI_CODE,create_impact_salt + + WL 4,L4AE4A+FR1 + WL 4,L4AE4A+FR2 + WL 4,L4AE4A+FR3 + .word ANI_WAITHITGND + .word ANI_FRICTION,4000h + WL 50,L4AE4A+FR3 + .word ANI_ZEROVELS + WL 3,L4AE4A+FR4 + WL 3,L4AE4A+FR5 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* HEAD HIT2 (ENDS IN DIZZY) + + SUBR lex_head_hit_dizzy_anim + + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WL ANI_SET_YVEL,20000h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,L4AE4A+FR1 + WL 4,L4AE4A+FR2 + WL 4,L4AE4A+FR3 + WL 4,L4AE4A+FR4 + WL 4,L4AE4A+FR5 + + .word ANI_FACEDOWN + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,lex_dizzy_anim + +; .word ANI_END + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR lex_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + WL 3,L2AM2B+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL 3,L2AM2B+FR3 + WL 3,L2AM2B+FR4 + WL 3,L2AM2B+FR5 + WL 3,L2AM2B+FR6 + WL 2,L2AM2B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L2AM2B+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,4000h,AM_ABS + + WL 3,L2AM2B+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL 3,L2AM2B+FR3 + WL 3,L2AM2B+FR4 + WL 3,L2AM2B+FR5 + WL 3,L2AM2B+FR6 + WL 2,L2AM2B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L2AM2B+FR8 + + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 BODY HIT + + SUBR lex_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + WL 3,L4AM4B+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL 3,L4AM4B+FR3 + WL 3,L4AM4B+FR4 + WL 3,L4AM4B+FR5 + WL 3,L4AM4B+FR6 + WL 3,L4AM4B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L4AM4B+FR8 + + .word ANI_CHECKWORD,USR_VAR1 + WL ANI_IFNOTSTATUS,#reg + + WL 8,L4TI4B+FR5 + WL 8,L4TI4B+FR6 + WL 8,L4TI4B+FR7 + WL 8,L4TI4B+FR8 + WL 8,L4TI4B+FR9 + WL 8,L4TI4B+FR8 + WL 8,L4TI4B+FR7 + WL 8,L4TI4B+FR6 + +#reg + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,L4AM4B+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL 3,L4AM4B+FR3 + WL 3,L4AM4B+FR4 + WL 3,L4AM4B+FR5 + WL 3,L4AM4B+FR6 + WL 3,L4AM4B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,L4AM4B+FR8 + + .word ANI_FACEDOWN + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,lex_dizzy_anim +; .word ANI_END + + SUBR lex_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-4000h,AM_ABS + + WL 3,L4AM4B+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL 3,L4AM4B+FR3 + WL 3,L4AM4B+FR4 + WL 3,L4AM4B+FR5 + WL 3,L4AM4B+FR6 + WL 3,L4AM4B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,L4AM4B+FR8 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR lex_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,L4AM4B+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,L4AM4B+FR3 + WL 3,L4AM4B+FR4 + WL 3,L4AM4B+FR5 + WL 3,L4AM4B+FR6 + WL 3,L4AM4B+FR7 + WL 3,L4AM4B+FR8 + .word ANI_WAITHITGND + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,lex_fall_back_anim +; .word ANI_END + +#nodead + + .ref lex_3_head_held_anim + WL ANI_CHANGEANIM,lex_3_head_held_anim +; .word ANI_END + + SUBR lex_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-4000h,AM_ABS + + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,L4AM4B+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 4,L4AM4B+FR3 + WL 4,L4AM4B+FR4 + WL 4,L4AM4B+FR5 + WL 4,L4AM4B+FR6 + WL 4,L4AM4B+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,L4AM4B+FR8 + + .word ANI_FACEDOWN + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,lex_dizzy_anim +; .word ANI_END + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR lex_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL 1,L3CP3X+FR2 + WL ANI_SET_YVEL,39000h + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPITUP_SWEAT,SWEAT_PER,0 + WL 2,L3CP3X+FR2 + WL 3,L3CP3X+FR3 + WL 2,L3CP3X+FR4 + WL 3,L3CP3X+FR5 + WL 2,L3CP3X+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_ZEROVELS + WL 3,L3CP3X+FR7 + SUBR lex_liedown_anim + WL 1,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + SUBR lex_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .WORD ANI_XFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL 10,L3FH3A+FR2 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_ZEROVELS + WL 3,L3CP3X+FR7 + WL 3,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +#***************************************************************************** +* +* FALL BACK + + SUBR lex_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZERO_XZVELS + WL ANI_MIN_YVEL,70000h + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + + .word ANI_SCROLL_CTRL,LEX_TBUKLY + + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[102,13] ;Y,X of head + WL 4,L3UC3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WWL ANI_SETLONG,DEBRIS_X,[107,-2] ;Y,X of head + WL 4,L3UC3A+FR2 + +;Need more frames here to make smoother! + + .word ANI_OFFSET,0,47,0 ;x,y,z + + WWL ANI_SETLONG,DEBRIS_X,[39,-50] ;Y,X of head + WL 4,L3UC3A+FR3 + WWL ANI_SETLONG,DEBRIS_X,[28,-54] ;Y,X of head + WL 4,L3UC3A+FR4 + WWL ANI_SETLONG,DEBRIS_X,[13,-59] ;Y,X of head + WL 4,L3UC3A+FR5 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + .word ANI_XFLIP + WL 2,L3CP3X+FR2 + .word ANI_BOUNCE,5 + + WL ANI_CHANGEANIM,lex_hitonground_anim + +#***************************************************************************** +* +* FALL BACK + + SUBR lex_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,10000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + +; WL 4,L3UC3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 4,L3UC3A+FR2 + +;Need more frames here to make smoother! + + .word ANI_OFFSET,0,47,0 ;x,y,z + + WL 4,L3UC3A+FR3 + WL 4,L3UC3A+FR4 + WL 4,L3UC3A+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + + .word ANI_FRICTION,3000h + + .word ANI_XFLIP + WL 2,L3CP3X+FR2 + .word ANI_BOUNCE,5 + + WL ANI_CHANGEANIM,lex_hitonground_anim + + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR lex_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + + WL 4,L3UC3A+FR1 + WL 4,L3UC3A+FR2 + + .word ANI_OFFSET,0,47,0 ;x,y,z + + WL 4,L3UC3A+FR3 + WL 4,L3UC3A+FR4 + WL 4,L3UC3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + +; .word ANI_FRICTION,3000h + + .word ANI_XFLIP + WL 2,L3CP3X+FR2 +; .word ANI_BOUNCE,5 + + WL ANI_CHANGEANIM,lex_hitonground_anim + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR lex_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WWL ANI_SETLONG,OBJ_GRAVITY,0f000h + + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL + WL 8,L3FH3A+FR4 +#cont WL 8,L3FH3A+FR5 + WL 1,L3FH3A+FR6 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_DAMAGE,D_HIPTOSS + + WL 3,L3UC3X+FR6 + WL 3,L3UC3X+FR7 + WL 3,L3UC3X+FR8 + WL 3,L3UC3X+FR9 + WL 3,L3UC3X+FR10 + .word ANI_XFLIP + WL 1,L3CP3X+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + + + SUBR lex_flyout2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL + WL ANI_GOTO,#cont + +#***************************************************************************** +* + + SUBR lex_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; WL 4,L3GU4A+FR1 +; WL 4,L3GU4A+FR2 + .ref choose_2or4 + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +;#getup_in_2 + WL 2,L3GU2A+FR1 + WL 3,L3GU2A+FR2 +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 2,L3GU2A+FR3 + WL 3,L3GU2A+FR4 + WL 2,L3GU2A+FR5 + WL 3,L3GU2A+FR6 + WL 2,L3GU2A+FR7 + WL 3,L3GU2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,L3GU2A+FR9 + WL 3,L3GU2A+FR10 + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,11,47,91,50 + WL 1,L3GU2A+FR10 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + .ref lex_4_push_anim + WL ANI_CHANGEANIM,lex_4_push_anim +#no_freetoss + + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 3,L3GU4A+FR1 + WL 2,L3GU4A+FR2 +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 3,L3GU4A+FR3 + WL 2,L3GU4A+FR4 + WL 3,L3GU4A+FR5 + WL 2,L3GU4A+FR6 + WL 3,L3GU4A+FR7 + WL 2,L3GU4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 3,L3GU4A+FR9 + WL 2,L3GU4A+FR10 + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,11,47,91,50 + WL 1,L3GU4A+FR10 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,lex_4_push_anim +#no_freetoss2 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* DIZZY + + SUBR lex_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + + WL 8,L4TI4B+FR5 + WL 8,L4TI4B+FR6 + WL 8,L4TI4B+FR7 + WL 8,L4TI4B+FR8 + WL 8,L4TI4B+FR9 + WL 8,L4TI4B+FR8 + WL 8,L4TI4B+FR7 + WL 8,L4TI4B+FR6 + + WL ANI_GOTO,#loop + +#***************************************************************************** + + SUBR lex_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*10/255 ;inv multiply (0-255 -> 0-11) + + .long L3RL1A+FR11 ;0 + .long L3RL1A+FR10 ;1 + .long L3RL1A+FR9 ;2 + .long L3RL1A+FR8 ;3 + .long L3RL1A+FR7 ;4 + .long L3RL1A+FR6 ;5 + .long L3RL1A+FR5 ;6 + .long L3RL1A+FR4 ;7 + .long L3RL1A+FR3 ;8 + .long L3RL1A+FR2 ;9 + .long L3RL1A+FR1 ;10 + .long 0,0,0,0,0,0 + + + .ref HIT_THE_MAT,SMALL_BOUNCE + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR lex_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,STAY_TIME + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h +; .word ANI_OFFSET,0,0,0 ;x,y,z + WL 3,L3CP3X+FR2 + WL 3,L3CP3X+FR3 + WL 3,L3CP3X+FR4 + WL 3,L3CP3X+FR5 + + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_ZEROVELS + + WL 3,L3CP3X+FR6 + WL 3,L3CP3X+FR7 + WL 3,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR lex_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,L3FH3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,STAY_TIME + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,L3FH3A+FR6 + .word ANI_XFLIP + .word ANI_OFFSET,20,0,0 ;x,y,z + WL 3,L3CP3X+FR1 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 3,L3CP3X+FR2 + WL 3,L3CP3X+FR3 + WL 3,L3CP3X+FR4 + WL 3,L3CP3X+FR5 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,L3CP3X+FR6 + WL 3,L3CP3X+FR7 + WL 3,L3CP3X+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,lex_faceup_getup_anim +; .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/LEXST.H b/LEXST.H new file mode 100755 index 0000000..8deb092 --- /dev/null +++ b/LEXST.H @@ -0,0 +1,222 @@ +; +; Story lines for story 1 of lex +; +; Compressed string "A STAR SPANGLED CELEBRATION FOR" +lex_story1_line1 + .byte 062h,040h,0d7h,0e2h,01ch,0d0h,0b1h,0f8h + .byte 0a2h,0adh,059h,006h,0a4h,0d9h,09ah,0e3h + .byte 02ch,0d6h,02ah,0fch,006h,027h,03ch,003h + .even + +; Compressed string "THE ULTIMATE AMERICAN SYMBOL. " +lex_story1_line2 + .byte 075h,06ah,006h,076h,05bh,0abh,0aeh,058h + .byte 09bh,081h,0e8h,09ah,0b3h,04ah,08ah,06fh + .byte 040h,0ebh,0eeh,008h,0b7h,04fh,000h,000h + .even + +; Compressed string "LEX LUGER'S VICTORY WAS" +lex_story1_line3 + .byte 0adh,099h,007h,0adh,08dh,09ah,033h,042h + .byte 007h,0b7h,04ah,0d6h,0f0h,0ach,007h,0b8h + .byte 048h,003h + .even + +; Compressed string "RENOWNED THROUGHOUT THE COUNTRY" +lex_story1_line4 + .byte 0b3h,0f9h,0c2h,0f8h,06bh,096h,041h,09dh + .byte 0ceh,0b0h,08dh,0a6h,0b0h,05dh,007h,075h + .byte 06ah,006h,024h,06ch,0bfh,0f5h,0ach,003h + .even + +; Compressed string "AND WAS RECOGNIZED AS ONE OF" +lex_story1_line5 + .byte 0e2h,05bh,006h,0b8h,048h,007h,0b3h,049h + .byte 0c2h,0e8h,0abh,0eeh,066h,019h,088h,074h + .byte 000h,0bfh,066h,000h,09fh,000h + .even + +; Compressed string "THE GREATEST TRIUMPHS OF THE" +lex_story1_line6 + .byte 075h,06ah,006h,0e8h,06ch,08ah,0b5h,049h + .byte 0d7h,041h,03dh,0abh,0b6h,01bh,0a7h,074h + .byte 000h,09fh,041h,09dh,09ah,000h + .even + +; Compressed string "20TH CENTURY. A NEW NATIONAL" +lex_story1_line7 + .byte 053h,054h,0a7h,001h,069h,0beh,0b5h,03dh + .byte 0ebh,04fh,010h,088h,0c1h,06bh,0e2h,0c1h + .byte 02bh,0d6h,02ah,0fch,08ah,02dh,000h + .even + +; Compressed string "HOLIDAY WAS NAMED, AND PEOPLE" +lex_story1_line8 + .byte 029h,0dch,0aah,0a5h,0a8h,007h,0b8h,048h + .byte 007h,0afh,0e8h,09ah,065h,013h,088h,06fh + .byte 019h,0c4h,026h,01ch,0b7h,026h,000h + .even + +; Compressed string "EVERYWHERE FROM COAST TO COAST" +lex_story1_line9 + .byte 0e6h,06dh,0ceh,03ah,09eh,09ah,0b3h,019h + .byte 09ch,033h,0ech,006h,024h,02ch,0d2h,075h + .byte 050h,0c3h,001h,009h,08bh,074h,00dh,000h + .even + +; Compressed string "THREW OPEN THEIR WINDOWS AND" +lex_story1_line10 + .byte 075h,03ah,09bh,078h,000h,0c7h,0e6h,01bh + .byte 0d4h,0a9h,0a9h,0ceh,001h,0aeh,0beh,025h + .byte 08ch,0d3h,081h,0f8h,096h,000h + .even + +; Compressed string "CHANTED HIS NAME. THIS WAS" +lex_story1_line11 + .byte 064h,02ah,0beh,0b5h,059h,006h,0a9h,04ah + .byte 007h,0afh,0e8h,09ah,04fh,010h,0d4h,0a9h + .byte 04ah,007h,0b8h,048h,003h + .even + +; Compressed string "MORE THAN JUST A VICTORY FOR" +lex_story1_line12 + .byte 02eh,03ch,09bh,041h,09dh,08ah,06fh,0b0h + .byte 0dah,074h,01dh,088h,0c1h,0adh,092h,035h + .byte 03ch,0ebh,0c1h,009h,0cfh,000h + .even + +; Compressed string "LEX, IT WAS A VICTORY THE GOOD" +lex_story1_line13 + .byte 0adh,099h,037h,081h,05ah,007h,0b8h,048h + .byte 007h,062h,070h,0abh,064h,00dh,0cfh,07ah + .byte 050h,0a7h,066h,080h,0c2h,070h,009h,000h + .even + +; Compressed string "OL' U.S. OF A.. AMERICANS COULD" +lex_story1_line14 + .byte 070h,08bh,004h,0f6h,043h,03fh,001h,07ch + .byte 006h,0e2h,0f3h,004h,0a2h,06bh,0ceh,02ah + .byte 029h,0beh,074h,040h,0c2h,076h,05bh,002h + .even + +; Compressed string "ONCE AGAIN HOLD THEIR HEADS" +lex_story1_line15 + .byte 0f0h,04bh,09ah,081h,088h,08ah,0eah,01bh + .byte 0a4h,070h,05bh,006h,075h,06ah,0aah,073h + .byte 090h,09ah,062h,049h,003h + .even + +; Compressed string "HIGH AND STAND PROUD. LEX" +lex_story1_line16 + .byte 0a9h,08ah,0a6h,081h,0f8h,096h,001h,05dh + .byte 08bh,06fh,019h,0c4h,033h,06ch,097h,04fh + .byte 0d0h,09ah,039h,000h + .even + +; Compressed string "REPRESENTS ALL THE PEOPLE IN" +lex_story1_line17 + .byte 0b3h,019h,0cfh,026h,06dh,0beh,035h,01dh + .byte 088h,06dh,01bh,0d4h,0a9h,019h,0c4h,026h + .byte 01ch,0b7h,066h,0a0h,0beh,000h + .even + +; Compressed string "THIS GREAT LAND. WHEN HE" +lex_story1_line18 + .byte 075h,0aah,0d2h,001h,03ah,09bh,062h,01dh + .byte 0b4h,0e2h,05bh,03eh,041h,080h,0a7h,0e6h + .byte 01bh,0a4h,026h,000h + .even + +; Compressed string "TOURED THE UNITED STATES IN HIS" +lex_story1_line19 + .byte 035h,06ch,0cfh,066h,019h,0d4h,0a9h,019h + .byte 0d8h,0afh,05ah,09bh,065h,040h,0d7h,062h + .byte 06dh,0d2h,081h,0fah,006h,0a9h,04ah,003h + .even + +; Compressed string ", HE BROUGHT BACK" +lex_story1_line20 + .byte 05dh,06bh,0e6h,081h,099h,0c7h,0b3h,049h + .byte 0d3h,05fh,013h,0a4h,066h,030h,0ceh,0b0h + .byte 08dh,0a6h,075h,030h,08ah,024h,00bh,000h + .even + +; Compressed string "A PIECE OF EVERY PERSON IN" +lex_story1_line21 + .byte 062h,010h,0abh,026h,069h,006h,0f0h,019h + .byte 098h,0b7h,039h,0ebh,041h,06ch,0ceh,034h + .byte 0fch,006h,0eah,00bh,000h + .even + +; Compressed string "EVERY TOWN HE VISITED. LEX" +lex_story1_line22 + .byte 0e6h,06dh,0ceh,07ah,050h,0c3h,0f8h,01bh + .byte 0a4h,066h,070h,0abh,0b4h,05ah,09bh,0e5h + .byte 013h,004h,0adh,099h,003h + .even + +; Compressed string "VIEWS HIMSELF AS THE PRODUCT OF" +lex_story1_line23 + .byte 0b7h,06ah,0e2h,074h,090h,0aah,02eh,06dh + .byte 0b6h,067h,020h,0d2h,041h,09dh,09ah,041h + .byte 03ch,0c3h,0a5h,04dh,0d6h,001h,07ch,002h + .even + +; Compressed string "ALL AMERICANS WHO, IN HIS MIND," +lex_story1_line24 + .byte 062h,0dbh,006h,0a2h,06bh,0ceh,02ah,029h + .byte 0beh,074h,080h,0a7h,070h,013h,0a8h,06fh + .byte 090h,0aah,074h,0e0h,0aah,06fh,0d9h,000h + .even + +; Compressed string "MADE HIM WHAT HE IS: AMERICA'S" +lex_story1_line25 + .byte 0aeh,058h,09ah,041h,0aah,0bah,001h,09eh + .byte 08ah,075h,090h,09ah,081h,04ah,06fh,081h + .byte 0e8h,09ah,0b3h,04ah,08ah,008h,00dh,000h + .even + +; Compressed string "" +lex_story1_line26 + .byte 09dh,0d8h,0b6h,081h,0e8h,09ah,0b3h,04ah + .byte 08ah,0efh,0f3h,001h + .even + +; +; Story line table for Story 1 of lex +; +lex_story_tbl1 + .long lex_story1_line1 + .long lex_story1_line2 + .long lex_story1_line3 + .long lex_story1_line4 + .long lex_story1_line5 + .long lex_story1_line6 + .long lex_story1_line7 + .long lex_story1_line8 + .long lex_story1_line9 + .long lex_story1_line10 + .long lex_story1_line11 + .long lex_story1_line12 + .long lex_story1_line13 + .long lex_story1_line14 + .long lex_story1_line15 + .long lex_story1_line16 + .long lex_story1_line17 + .long lex_story1_line18 + .long lex_story1_line19 + .long lex_story1_line20 + .long lex_story1_line21 + .long lex_story1_line22 + .long lex_story1_line23 + .long lex_story1_line24 + .long lex_story1_line25 + .long lex_story1_line26 + .long 0 + +; +; Table of stories for lex +; +lex_stories + .long lex_story_tbl1 + diff --git a/LIFEBAR.ASM b/LIFEBAR.ASM new file mode 100755 index 0000000..6f03bea --- /dev/null +++ b/LIFEBAR.ASM @@ -0,0 +1,5326 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 29 Oct 93 +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 5/5/95 14:54 +************************************************************** + + .file "lifebar.asm" + .title "meters, names, messages, and scores" + .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 "game.equ" + .include "plyr.equ" + .include "sys.equ" + .include "link.equ" + .include "sound.h" + .include "ring.equ" + + .include "miscimg.glo" + .include "fontsimg.glo" + .include "sound.equ" + .include "imgtbl.glo" + .include "jjxm.h" + + ;temp! - 314 + .if DEBUG + .include "tmpdebug.h" + .endif + +#***************************************************************************** + + .ref reset_for_round,init_scroller,BGND_UD1 + .ref reset_for_round2,no_debris,flash_red + .ref calc_match_time_2,ck_any_teammates + + .ref change_anim1a,triple_sound,HALT,CLOSE_VERT_SCREEN_LINE + .ref civanic,CR_STRTP,get_process_ptr,wres_collis_off + .ref GET_ADJ,p2winstreak,ANIM_CROWD,update_timer,GAMSTATE + .ref fight_debug,RNDRNG0,pal_getf,ring_bell,BEGINOBJ_TBL + .ref PSTATUS,match_over,p1rounds,is_8_on_1 + .ref OPEN_VERT_SCREEN_LINE,process_ptrs,SET_LOWER_VOL + .ref GET_CREDITS,BINBCD,get_all_buttons_cur2,LINES_VERT + .ref current_round,p1winstreak,CLEAR_SPEECH_REPEAT,p2rounds + .ref VINCE_START_ROUND2_3,WHICH_SCREEN,do_game_over + .ref CALL_MATCH_OVER,AUD1,setup_back_anim,DUMRETS + .ref calc_match_time_1,match_time + .ref ROLLING_COUNT,match_winner,PCNT,NUM_OPPS,is_final_match + .ref ADD_VOICE,KILL_ALL_CHANNELS,END_MATCH_SPEECH + .ref accumulate_awards,annc_rnd_winner_done + .ref round_award,royal_rumble,buddy_mode_on + .ref match_award,reduce_bog,get_live_bits + .ref create_end_rnd_awards + .ref award_ok_to_die + .ref is_it_a_really_quick_win,increment_wincount + .ref give_award_if_opponent_is_human + .ref arm_comeback_award + .ref check_for_award_for_big_comeback + .ref check_for_award_for_winstreak + .ref show_dufus_messages + .ref CHANGE_SKIRTS2,INIT_SKIRTS + .ref pal_clean,round_start_time,round_end_time + .ref dboxes_on,do_fireworks + .ref instant_combos_on,p1powerup_request + .ref show_mk3_tip,MAYBE_HIGH_RISK + .ref match_cnt,WGFS_W_P + .ref temp_music + .ref finish_completed + +#***************************************************************************** + +;player life/turbo data struct +PLT_LIFE equ 0 ;UHW life pixels (164 max) +PLT_CLIFE equ PLT_LIFE+10h ;UHW displayed life (164 max) +PLT_TURBO equ PLT_CLIFE+10h ;UHW turbo val (5400h max) +PLT_COMBO_SIZE equ PLT_TURBO+10h ;UHW combo bar size +PLT_SIZE equ PLT_COMBO_SIZE+010h + +;NOTE that PLT_SIZE is 40h, so anytime we might otherwise use a multiply, +; we do a X64 instead. DO NOT change the size of this struct unless +; you're prepared to do some cleanup. + +;meter data struct +MD_LINK equ 0 ;UHW PLYRNUM for this meter +MD_LIFE equ MD_LINK+10h ;UHL life bar *obj +MD_LBAK equ MD_LIFE+20h ;UHL turbo bar *obj +MD_NAME equ MD_LBAK+20h ;UHL name *obj +MD_COMBO equ MD_NAME+20h ;UHL combo bar *obj +MD_SIZE equ MD_COMBO+20H + + + .bss life_data, NUM_WRES*PLT_SIZE + .bss meter_data, 2*MD_SIZE + .bss damage_imgs, 4*32 + .bss ram_lst, 32*40 ;For announce_match + BSSX DAM_MULT,16 + .BSS LAST_FLIP,16 + BSSX combo_audit_done,16 + BSSX message_flag,32*2 ;Message already displayed bit + BSSX ZFLIP_POS_VAR,32 + BSSX MUSIC_HAP,16 + BSSX PERFECT_WINS,16 + BSSX WINS_OBJ,32*3 + + BSSX fence1,4*32 + + BSSX MESSAGE_FLAGS,32 + + BSSX fence2,4*32 + + BSSX COMBO_FLASH_FLAG,32 + BSSX in_finish_move,16 + BSSX speed_adjustment,32 ;game speed damage adjustment + + ;temp! - 314 + .if DEBUG + BSSX event_data,EVENTSIZ*NUM_EVENTS + BSSX event_ptr,32 + .endif + +#***************************************************************************** +* +* Life/Turbo meter sizes and positions. +* + +LIFE_MAX .equ 163 ;green pixels in life bar +TURBO_MAX .equ 84<<8 ;max turbo value + +#***************************************************************************** +* +* Called at the beginning of the first round of a match. +* + + SUBR init_life_data + + ;temp! - 314 + .if DEBUG + movi event_data,a14 + move a14,@event_ptr,L + + clr a14 + movi event_data,a0 + movi EVENTSIZ*NUM_EVENTS/16,a1 +#clp move a14,*a0+,W + dsj a1,#clp + + .endif + + ;initialize speed_adjustment + movk ADJSPEED,a0 ;game timer speed (1-5) + calla GET_ADJ + BADCHK a0,1,5,3 ;reg,lo,hi,val + X32 a0 ;x 16 bits + addi #timer_table-20h,a0 + move *a0,a1,L + move a1,@speed_adjustment,L + + ;initialize life data + movi NUM_WRES,a0 + movi life_data,a1 + movi LIFE_MAX,a2 + movi TURBO_MAX,a3 + clr a4 +#init_loop + move a2,*a1(PLT_LIFE) + move a3,*a1(PLT_TURBO) + move a4,*a1(PLT_CLIFE) + move a4,*a1(PLT_COMBO_SIZE) + addi PLT_SIZE,a1 + dsj a0,#init_loop + + rets + +#timer_table + .long 10000h*4/5 ;80% damage (slowest) + .long 10000h*9/10 ;90% + .long 10000h*1 ;normal damage (default) + .long 10000h*11/10 ;110% + .long 10000h*6/5 ;120% damage (fastest) + +#***************************************************************************** +* +* Resets life/turbo/combo data for wrestler in a13. Used by change_wrestler. +* Updates name display too, if either display is aimed at our guy. +* +* Since this only happens for dead guys, we don't check to see if it's a +* player, and we don't check special royal rumble mode cases. +* + + SUBR init_wres_life_data + + ;initialize life data + move *a13(PLYRNUM),a1 + X64 a1 ;mult by PLT_SIZE + addi life_data,a1 + + movi LIFE_MAX,a2 + movi TURBO_MAX,a3 + clr a4 + move a2,*a1(PLT_LIFE) + move a3,*a1(PLT_TURBO) + move a2,*a1(PLT_CLIFE) + move a4,*a1(PLT_COMBO_SIZE) + + ;check names + move *a13(PLYRNUM),a1 + movi meter_data,a5 + move *a5(MD_LINK),a14 + cmp a1,a14 + jreq #chgnm + addi MD_SIZE,a5 + move *a5(MD_LINK),a14 + cmp a1,a14 + jrne #done + +#chgnm X32 a1 + addi name_tbl,a1 + move *a1,a0,L + move *a5(MD_NAME),a8,L + calla civanic + +#done rets + +#***************************************************************************** +* +* Called at the start of the second and later rounds of a match. +* + + SUBR init_rnd_life_data + + ;reset life data + movi NUM_WRES,a0 + movi life_data,a1 + movi LIFE_MAX,a2 +#init_loop + move a2,*a1(PLT_LIFE) + move a2,*a1(PLT_CLIFE) + addi PLT_SIZE,a1 + dsj a0,#init_loop + + ;set lifebar pals. + movi FYL2RD_P,a0 + calla pal_getf + + movi meter_data,a1 + move @p2rounds,a14 + jrz #ok1 + + ;set left lifebar red + move *a1(MD_LIFE),a8,L + move a0,*a8(OPAL) + +#ok1 addi MD_SIZE,a1 + move @p1rounds,a14 + jrz #ok2 + + ;set right lifebar red + move *a1(MD_LIFE),a8,L + move a0,*a8(OPAL) + +#ok2 rets + + +#***************************************************************************** +* +* >a8 = PLYRNUM for left meter +* >a9 = PLYRNUM for right meter + +P1CNTR .equ PDATA +P2CNTR .equ PDATA+16 +P1STATE .equ PDATA+32 +P2STATE .equ PDATA+48 + + SUBR meters + + PUSH a8,a9 + + ;Start the credits message + calla start_credbox + + ;initialize meter data + movi meter_data,a1 + TBL_OBJ lhlth1 + move a8,*a1(MD_LIFE),L + + TBL_OBJ lname + move a8,*a1(MD_NAME),L + + TBL_OBJ lframec + move a8,*a1(MD_LBAK),L + + TBL_OBJ lcombo + move a8,*a1(MD_COMBO),L + + addi MD_SIZE,a1 + + TBL_OBJ rhlth1 + move a8,*a1(MD_LIFE),L + + TBL_OBJ rname + move a8,*a1(MD_NAME),L + + TBL_OBJ rframec + move a8,*a1(MD_LBAK),L + + TBL_OBJ rcombo + move a8,*a1(MD_COMBO),L + + ;create the static (no-handle) objects + TBL_OBJ lframe + TBL_OBJ lframeb + + TBL_OBJ rframe + TBL_OBJ rframeb + + callr do_win_streaks + + PULL a8,a9 + + ;wire up the meters + clr a0 + move a8,a1 + callr rewire_meter + movk 1,a0 + move a9,a1 + callr rewire_meter + + CREATE ANNC_PID,announce_match + + movk 1,a0 + move a0,*a13(P1CNTR) + move a0,*a13(P2CNTR) + clr a0 + move a0,*a13(P1STATE) + move a0,*a13(P2STATE) + +#main_loop +;Update all the life data + clr a0 + +#maint_loop + MOVE @WHICH_SCREEN,A1,L + CMPI DUMRETS,A1 + JRNE JUST_DISPLAY_THEM + callr inc_life + inc a0 + cmpi NUM_WRES,a0 + jrne #maint_loop + +JUST_DISPLAY_THEM +;Update the meters + clr a0 + callr update_meter + movk 1,a0 + callr update_meter + +;Blink CPU controlled name with insert coins/press start + movi meter_data,a1 + move @PSTATUS,a0 + btst 0,a0 + jrnz #p2 +;Plyr 1 is drone + move *a13(P1CNTR),a0 + dec a0 + move a0,*a13(P1CNTR) + jrnz #p2 + move *a13(P1STATE),a0 + xori 1,a0 + move a0,*a13(P1STATE) + jrz #doname + +;Do correct coin message + + movi TSEC,a0 ;one second of PRESS/INSERT... + move @NUM_OPPS,a14 ;(two if one-on-one mode) + dec a14 + jrnz #tset1a + sla 1,a0 +#tset1a move a0,*a13(P1CNTR) + + move *a1(MD_NAME),a8,L + movi WF_START,a0 +;Display the insert coin/press start message + calla CR_STRTP + jrhs #enough_money + movi WF_INSERT,a0 +#enough_money + calla civanic + jruc #p2 +#doname + movi TSEC*4,a0 ;and four seconds of names + move @NUM_OPPS,a14 ;(two if one-on-one mode) + dec a14 + jrnz #tset1b + sra 1,a0 +#tset1b move a0,*a13(P1CNTR) + + move *a1(MD_LINK),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(WRESTLERNUM),a0 + + X32 a0 + addi name_tbl,a0 + move *a0,a0,L +;Change the name + move *a1(MD_NAME),a8,L + calla civanic +#p2 + movi meter_data,a1 + addi MD_SIZE,a1 + move @PSTATUS,a0 + btst 1,a0 + jrnz #ok + +;Plyr 2 is drone + move *a13(P2CNTR),a0 + dec a0 + move a0,*a13(P2CNTR) + jrnz #ok + move *a13(P2STATE),a0 + xori 1,a0 + move a0,*a13(P2STATE) + jrz #doname2 + +;Do correct coin message + + movi TSEC,a0 ;one second of PRESS/INSERT... + move @NUM_OPPS,a14 ;(two if one-on-one mode) + dec a14 + jrnz #tsetsa + sla 1,a0 +#tsetsa move a0,*a13(P1CNTR) + + move *a1(MD_NAME),a8,L + movi WF_START,a0 +;Display the insert coin/press start message + calla CR_STRTP + jrhs #enough_money + movi WF_INSERT,a0 +#enough_money2 + calla civanic + jruc #ok +#doname2 + movi TSEC*4,a0 ;and four seconds of names + move @NUM_OPPS,a14 ;(two if one-on-one mode) + dec a14 + jrnz #tset2b + sra 1,a0 +#tset2b move a0,*a13(P1CNTR) + + move *a1(MD_LINK),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(WRESTLERNUM),a0 + + X32 a0 + addi name_tbl,a0 + move *a0,a0,L +;Change the name + move *a1(MD_NAME),a8,L + calla civanic + +#ok + SLEEPK 1 + jruc #main_loop + +#******** +* +* Meter objects and their positions +* + + +lbar_x .equ 11 +rbar_x .equ 390 + +lcombo_x .equ 181-45 +rcombo_x .equ 220+45 + +lname_x .equ 97 +rname_x .equ 303 + +bar_y .equ 20 +combo_y .equ bar_y+18 + +name_y .equ 13 + +bak_z .equ 200 +bar_z .equ 202 +frame_z .equ 201 +name_z .equ 203 + + +lcombo .word lcombo_x,combo_y,name_z ;X, Y, Z + .long SUPER_0 + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +rcombo .word rcombo_x,combo_y,name_z ;X, Y, Z + .long SUPER_0 + .word DMAWNZ|M_FLIPH|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +lframe .word lbar_x,bar_y,frame_z ;X, Y, Z + .long PWREMPTY + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + + +rframe .word rbar_x,bar_y,frame_z ;X, Y, Z + .long PWREMPTY + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + + +lframeb .word lbar_x,bar_y,frame_z ;X, Y, Z + .long LBAR_GENB ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +rframeb .word rbar_x,bar_y,frame_z ;X, Y, Z + .long RBAR_GENB ;IMG + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + + +lframec .word lbar_x,bar_y,bak_z ;X, Y, Z + .long LBAR_GENC ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +rframec .word rbar_x,bar_y,bak_z ;X, Y, Z + .long LBAR_GENC ;IMG + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +lwin .word 11,22h,name_z ;X, Y, Z + .long BWINBOX ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + +rwin .word 391,22h,name_z ;X, Y, Z + .long RWINBOX ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBMFRAME ;OID + .long 0,0 ;XVEL, YVEL + .even + + +lhlth1 .word lbar_x,bar_y,bar_z ;X, Y, Z + .long FGRN2YEL + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBLBAR ;OID + .long 0,0 ;XVEL, YVEL + .even + +rhlth1 .word rbar_x,bar_y,bar_z ;X, Y, Z + .long FGRN2YEL + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;CTRL + .word CLSNEUT|TYPNEUT|SUBLBAR ;OID + .long 0,0 ;XVEL, YVEL + .even + +* +* name data +* + +lname .word lname_x,name_y,name_z ;X, Y, Z + .long NAM_BRT ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBLBAR ;OID + .long 0,0 ;XVEL, YVEL + .even + +rname .word rname_x,name_y,name_z ;X, Y, Z + .long NAM_RZR ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT|SUBLBAR ;OID + .long 0,0 ;XVEL, YVEL + .even + +*************************************** + + SUBRP replace_wins + move @match_winner,a1 + MOVE @PSTATUS,A0 + AND A1,A0 + JRZ #EXIT + + move @WINS_OBJ,A0,L + JRZ NO_WINS_1 + CALLA DELOBJ +NO_WINS_1 + move @WINS_OBJ+020H,A0,L + JRZ NO_WINS_2 + CALLA DELOBJ +NO_WINS_2 + move @WINS_OBJ+040H,A0,L + JRZ NO_WINS_3 + CALLA DELOBJ +NO_WINS_3 + move @match_winner,a1 + dec a1 + jrnz do_player_2_wins + move @p1winstreak,a0 + push a10 + callr streak_1 + pull a10 +#EXIT + rets + +do_player_2_wins + move @p2winstreak,a0 + push a10 + callr streak_2 + pull a10 + rets + + +*************************************** + +FLASH_COMBO + + MOVI COMBO_P,A0 + CALLA pal_getf + MOVE A0,*A8(OPAL) + MOVE *A8(OCTRL),A1 + ANDNI M_FLIPH,A1 + MOVE A1,*A8(OCTRL) +DO_COMBO_FLASH_AGAIN + MOVI COMBO_FLASH_ANIM,A1 + calla setup_back_anim + JSRP ANIM_CROWD + SLEEPK 20 + JRUC DO_COMBO_FLASH_AGAIN + +DO_COMBO_SOUND + SLEEPK 25 + MOVI 3,A0 + CALLA triple_sound + DIE + +CANI_END equ 2 + 8000H + +COMBO_FLASH_ANIM + WL 2,COMBO_01 + WL 2,COMBO_02 + WL 2,COMBO_03 + WL 2,COMBO_04 + WL 2,COMBO_05 + WL 2,COMBO_06 + WL 2,COMBO_07 + WL 2,COMBO_08 + WL 2,COMBO_09 + WL 2,COMBO_10 + .WORD CANI_END + + SUBRP flash_2ndwind + MOVE *A8(OCTRL),A1 + ANDNI M_FLIPH,A1 + MOVE A1,*A8(OCTRL) + movk 3,a9 +#flsh PUSHP a9 + movi wind_anim,a1 + calla setup_back_anim + JSRP ANIM_CROWD + + SLEEPK 2 + + PULLP a9 + dsj a9,#flsh + + DIE + +wind_anim + WL 2,SECWND01 + WL 2,SECWND02 + WL 2,SECWND03 + WL 2,SECWND04 + WL 2,SECWND05 + WL 2,SECWND06 + WL 2,SECWND07 + WL 2,SECWND08 + WL 2,SECWND09 + .WORD CANI_END + +****************************************************************************** + + SUBR CHECK_COMBO_GO + move *a8(PLYRNUM),a1 + + ;if we're in royal rumble, change a 1 to a zero. + move @royal_rumble,a14 + jrz #norum0 + cmpi 1,a1 + jrne #norum0 + clr a1 +#norum0 + + X64 a1 ;x by PLT_SIZE + addi life_data,a1 + MOVE *A1(PLT_COMBO_SIZE),a14 +; MOVE @BONUS_POWER,A1 +; cmp A1,a14 + move @instant_combos_on,a1 + jrnz #auto_combos ; Auto combos on + movk 16,a1 ; Normal combo check + jruc #combo_check +#auto_combos + clr a1 +#combo_check + cmp a1,a14 + rets + +****************************************************************************** + +;A7 = BIT TO SET IN PLAYER HISTORY +;A5 = FIRST TIME FOR MOVE +;A6 = MOVE REPEAT + + SUBR ADD_TO_COMBO_COUNT + +;Adds first value each time! [why?] + MOVE A7,A2 + movk 1,a5 + movk 1,a3 + MOVE *a13(COMBO_START),A1 + AND A1,A2 + JRNZ ALREADY_ADDED_ONCE + MOVE A5,A3 + MOVE *a13(COMBO_START),A1 + OR A7,A1 + MOVE A1,*A13(COMBO_START) +ALREADY_ADDED_ONCE + + ;HACK ALERT: In royal rumble mode, each player individually tracks + ; which moves he's done and so on, but both share a single combo + ; meter. Halve the amount to add and give it to player 0 if we're + ; in royal rumble mode and a13 is player 1. + + PUSH a13 + move @royal_rumble,a14 + jrz #norum + + move *a13(PLYRNUM),a14 + cmpi 1,a14 + jrgt #norum + + ;royal rumble and a13 is a human. make it the first one. + clr a1 + calla get_process_ptr + move a0,a13 +#norum + + ;WARNING: a13 isn't neccesarily valid in here! (see above) + move *a13(PLYR_SIDE),a1 + move *a13(PLYRNUM),a11 + + PULL a13 + ;OKAY: a13 is safe again. + + movi MD_SIZE,a9 + mpyu a1,a9 + addi meter_data,a9 + MOVE *A9(MD_COMBO),A8,L + move a11,a5 + X64 a5 ;x by PLT_SIZE + ADDI life_data,A5 + MOVE *A5(PLT_COMBO_SIZE),A2 + ADD A3,A2 + MOVE A2,*A5(PLT_COMBO_SIZE) + move @instant_combos_on,a6 + jrz #norm_combos + clr a6 + jruc #do_check +#norm_combos + movk 16,a6 +#do_check + cmp a6,a2 + JRGE SET_FLASHING_COMBO_GOING + SLL 5,A2 + ADDI WHICH_SIZE_BAR,A2 + MOVE *A2,A0,L + move *a0(IANIOFF),*A8(ODOFF),L + move *a0(ISAG),*a8(OSAG),L + + RETS + + SUBR SET_FLASHING + + move a10,a0 + sll 5,a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(PLYR_SIDE),a1 + movi MD_SIZE,a9 + mpyu a1,a9 + addi meter_data,a9 + MOVE *A9(MD_COMBO),A8,L + +SET_FLASHING_COMBO_GOING +;a1=plyr side + move a1,a0 + SLL 4,a0 + ADDI COMBO_FLASH_FLAG,a0 + MOVE *a0,a0 + JRNZ COMBO_ALREADY_STARTED + + MOVE A1,A7 + SLL 4,A7 + ADDI COMBO_FLASH_FLAG,A7 + MOVK 1,A0 + MOVE A0,*A7 + ADDI FLASH_COMBO_PID,A1 + MOVI FLASH_COMBO,A7 + CALLA GETPRC + CREATE SOUND_PID,DO_COMBO_SOUND +COMBO_ALREADY_STARTED + RETS + +WHICH_SIZE_BAR + .LONG SUPER_0 + .LONG SUPER_1 + .LONG SUPER_2 + .LONG SUPER_3 + .LONG SUPER_4 + .LONG SUPER_5 + .LONG SUPER_6 + .LONG SUPER_7 + .LONG SUPER_8 + .LONG SUPER_9 + .LONG SUPER_10 + .LONG SUPER_11 + .LONG SUPER_12 + .LONG SUPER_13 + .LONG SUPER_14 + .LONG SUPER_15 + .LONG SUPER_16 + +#***************** +* +* Use in a 1-player game when there are multiple drones on the other team. +* This process keeps the other lifebar/name/combo meter display up-to-date. +* It won't do a rewire within #LATENCY ticks of the last rewire unless the +* currently displayed wrestler is dead. +* + + .bss #LAST_REWIRE,32 +#LATENCY .equ TSEC/2 + + SUBR rewire_monitor + + move @buddy_mode_on,a14 + jrnz #buddy + move @royal_rumble,a14 + jrnz #rumble + + ;quit if we're a two-player game + move @PSTATUS,a14 + cmpi 3,a14 + jreq #die + + ;quit if we're a 1v1 game + move @NUM_OPPS,a14 + cmpi 1,a14 + jreq #die + + ;okay, we should run. figure out which PLYRNUM to key on. Choose + ; the first active process, since that'll either be the only human + ; or the lone attract mode drone. (Even if we do decide to show + ; 2v2 battles in attract mode, nobody dies so it's okay to always + ; key on the first drone.) + ;NOTE: The reason we store the PLYRNUM to key on instead of the + ; process pointer is that if we allow 2v2 mode and the human can + ; switch control from one drone to the next, we can't count on + ; PLYRNUM's and process ptrs always matching up! + +#run movi NUM_WRES,a0 + movi process_ptrs,a1 +#lp0 move *a1+,a2,L + jrnz #found + dsj a0,#lp0 + + ;Hey! No active processes! Bitch, then quit. + .if DEBUG + LOCKUP + .endif + +#die DIE + +#found move *a2(PLYRNUM),a10 ;key plyrnum + move *a2(CLOSEST_NUM),a11 ;previous closest (current disp.) + +#loop move a10,a1 + calla get_process_ptr + move a0,a6 ;key process (recomputed every wake) + move *a6(CLOSEST_NUM),a1 + cmp a11,a1 + jreq #no + + ;closest has changed. only rewire if PCNT >= @#LAST_REWIRE+#LATENCY, + ; or if the old guy is dead. + move a11,a1 ;old guy... + calla get_process_ptr + move *a0(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #rewire ;dead? + + move @PCNT,a0,L + move @#LAST_REWIRE,a1,L + addi #LATENCY,a1 + cmp a1,a0 + jrle #no ;enough time since last chg? + +#rewire move *a6(CLOSEST_NUM),a1 + calla get_process_ptr + move a0,a7 ;new closest proc + move *a7(PLYR_SIDE),a0 ;side to display + move *a7(PLYRNUM),a1 ;PLYRNUM to display + callr rewire_meter + move @PCNT,a14,L + move a14,@#LAST_REWIRE,L + move *a6(CLOSEST_NUM),a11 +#no SLOOP 10,#loop + + +**** + + +#rumble ;royal rumble. Never rewire the left meter. Toggle the right + ; meter every four seconds between plyrnums 2 and 3. Don't + ; toggle to or stay on a dead guy. + + movk 3,a9 ;pretend we're on PLYRNUM 3... + jruc #toggle ;...so that we can just toggle to initialize. + +#rloop ;see if we're displaying a dead guy. + move a9,a1 + calla get_process_ptr + move *a0(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #toggle + + ;still alive. time to toggle anyway? + dec a8 + jrle #toggle + + ;not time yet. + SLOOP 10,#rloop + +#toggle move a9,a1 + + ;is THIS guy dead? + xori 1,a1 ;toggle between 2 and 3 + calla get_process_ptr + move *a0(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #notogl ;new guy is dead. skip it. + + move a1,a9 + movk 1,a0 + callr rewire_meter + + movk TSEC*4/10,a8 +#notogl SLOOP 10,#rloop + + +**** + + +#buddy ;buddy mode. This one is easy: Show the human, unless he's dead + ; and his drone teammate is alive. Don't assume, once the human + ; is dead, that he'll stay that way. Buckoffs and all. + + clr a8 ;displayed player on team 0 + movk 1,a9 ;displayed player on team 1 + +#bloop clr a1 + calla get_process_ptr + move *a0(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrne #p1liv + +#p1ded ;plyr 1 is dead--check his drone. + movk 2,a1 + calla get_process_ptr + move *a0(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #p1liv ;show the human anyway + + ;p1 is dead and his drone is alive. show the drone. + cmpi 2,a8 + jreq #ckp2 ;already showing the drone. skip it. + + clr a0 + movk 2,a1 + move a1,a8 + callr rewire_meter + jruc #ckp2 + +#p1liv ;plyr 1 is alive (or his drone is dead). show him. + + TEST a8 + jrz #ckp2 ;already showing the human. skip it. + + clr a0 + clr a1 + move a1,a8 + callr rewire_meter + +#ckp2 movk 1,a1 + calla get_process_ptr + move *a0(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrne #p2liv + +#p2ded ;plyr 2 is dead--check his drone. + movk 3,a1 + calla get_process_ptr + move *a0(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #p2liv ;show the human anyway + + ;p2 is dead and his drone is alive. show the drone. + cmpi 3,a9 + jreq #bnap ;already showing the drone. skip it. + + movk 1,a0 + movk 3,a1 + move a1,a9 + callr rewire_meter + jruc #bnap + +#p2liv ;plyr 2 is alive (or his drone is dead). show him. + + cmpi 1,a9 + jrz #bnap ;already showing the human. skip it. + + movk 1,a0 + movk 1,a1 + move a1,a9 + callr rewire_meter + +#bnap SLOOP 10,#bloop + + +#***************************************************************************** +* 'rewires' a meter display for a different wrestler +* >a0 = display(0 or 1), >a1= playernum (0 to NUM_WRES-1) + + SUBR rewire_meter + + PUSH a2,a3,a4,a5,a6,a7,a8,a9,a10,a11 + + ;set the pointers + ;point a5 at the MD_???? block for the display + movi MD_SIZE,a5 + mpyu a0,a5 + addi meter_data,a5 + + ;point a6 at the PLT_???? block for PLYRNUM + move a1,a3 + X64 a3 ;x by PLT_SIZE + movi life_data,a6 + add a3,a6 + + ;set MD_LINK + move a1,*a5(MD_LINK) + + ;point a7 at PLYRNUM's process + move a1,a7 + X32 a7 + addi process_ptrs,a7 + move *a7,a7,L + + ;change the combo bar + PUSH A0 + MOVE *A6(PLT_COMBO_SIZE),A2 +; MOVE @BONUS_POWER,A14 +; CMP A14,A2 + move @instant_combos_on,a14 + jrz #norm_combos + clr a14 + jruc #do_check +#norm_combos + movk 16,a14 +#do_check + cmp a14,a2 +; CMPI 16,A2 + JRGE WE_ARE_IN_COMBO_MODE + + MOVE A0,A1 + SLL 4,A1 + ADDI COMBO_FLASH_FLAG,A1 + MOVE *A1,A8 + JRZ NO_NEED_TO_KILL_COMBO_PROC + CLR A8 + MOVE A8,*A1 + ADDI FLASH_COMBO_PID,A0 + MOVI -1,A1 + CALLA KILALL +NO_NEED_TO_KILL_COMBO_PROC + PULL A0 + MOVE *A5(MD_COMBO),A8,L + CLR A14 + MOVE A0,A0 + JRZ NO_NEED_TO_SET_XFLIP + MOVI M_FLIPH,A14 +NO_NEED_TO_SET_XFLIP + MOVI SUPER_P,A0 + CALLA pal_getf + MOVE A0,*A8(OPAL) + + MOVE *A6(PLT_COMBO_SIZE),A0 + SLL 5,A0 + ADDI WHICH_SIZE_BAR,A0 + MOVE *A0,A0,L + + MOVE *A0(ICTRL),A1 + OR A14,A1 + ORI 8000H|DMAWNZ,A1 + MOVE A1,*A8(OCTRL) + move *a0(IANIOFF),*A8(ODOFF),L + move *a0(ISAG),*a8(OSAG),L + move *a0(0),*a8(OSIZE),L + JRUC JUMP_BACK_IN + +WE_ARE_IN_COMBO_MODE +;IS THIS NECESSARY! + SLL 4,A0 + ADDI COMBO_FLASH_FLAG,A0 + MOVE *A0,A1 + + JRNZ WE_ARE_ON_RIGHT_SETTING + MOVK 1,A1 + MOVE A1,*A0 + + PULL A1 + PUSH A1 + ADDI FLASH_COMBO_PID,A1 + PUSH A7 + MOVI FLASH_COMBO,A7 + MOVE *A5(MD_COMBO),A8,L + CALLA GETPRC + PULL A7 + +WE_ARE_ON_RIGHT_SETTING + PULL A0 + +JUMP_BACK_IN + ;change the name + move *a5(MD_NAME),a8,L + move *a7(WRESTLERNUM),a1 + + move @royal_rumble,a14 + jrz #uname + + move *a7(PLYRNUM),a14 + jrz #buddy0 + cmpi 1,a14 + jrgt #uname + .if DEBUG + LOCKUP ;rewire to PLYRNUM 1 in buddy mode!? + .endif +#buddy0 ;It's a royal rumble. Create the pair of names to go with the slash. + ; This code only executes once for the left meters in rumble mode. + + .ref index1,index2 + + PUSH a8 + + TBL_OBJ lname + move @index1,a0 + X32 a0 + addi shortname_tbl,a0 + move *a0,a0,L + calla civanic + + move *a8(OXPOS),a1 + subk 8,a1 + move *a0(ISIZEX),a14 + sub a14,a1 + move *a0(IANIOFFX),a14 + add a14,a1 + move a1,*a8(OXPOS) + + TBL_OBJ lname + move @index2,a0 + X32 a0 + addi shortname_tbl,a0 + move *a0,a0,L + calla civanic + + move *a8(OXPOS),a1 + addk 8,a1 + move *a0(ISIZEX),a14 + add a14,a1 + move *a0(IANIOFFX),a14 + sub a14,a1 + move a1,*a8(OXPOS) + + movk 10,a1 + + PULL a8 + +#uname X32 a1 + addi name_tbl,a1 + move *a1,a0,L + calla civanic + +#rets PULL a2,a3,a4,a5,a6,a7,a8,a9,a10,a11 + + rets + +name_tbl + .long NAM_BRT,NAM_RZR,NAM_UND,NAM_YOK,NAM_SHN + .long NAM_BAM,NAM_DNK,NAM_DNK,NAM_LEX,NAM_LEX + .long WSF10SLSx + +shortname_tbl + .long SHORTHRT,SHORTRZR,SHORTUND,SHORTYOK,SHORTSHN + .long SHORTBAM,SHORTDNK,SHORTDNK,SHORTLEX,SHORTLEX + +#***************************************************************************** +* Updates (resizes) the bars on a meter display. +* >a0 = meter (0 or 1) + + SUBRP update_meter + + ;aim a1 at the MD struct + movi MD_SIZE,a1 + mpyu a0,a1 + addi meter_data,a1 + + ;aim a3 at the PLT struct + move *a1(MD_LINK),a2 + move a2,a3 + X64 a3 ;x by PLT_SIZE + addi life_data,a3 + + ;set the life bar + move *a1(MD_LIFE),a8,L + move *a3(PLT_CLIFE),a14 + neg a14 + addi LIFE_MAX,a14 ;a14 is pixels to hide + + move a14,*a8(OFSET) + JRZ #NOT_TO_WORRY + + cmpi 2,a2 + jrge we_are_a_drone_ignore + move a2,a6 + X32 a6 + addi process_ptrs,a6 + move *a6,a6,L + move *a6(OUTSIDE_ALONE),a1 + jrz we_are_a_drone_ignore + + move @ROLLING_COUNT,A0 + sll 31,a0 + jrnz ignore_it + + move *a8(OFLAGS),a1 + xori M_NODISP,A1 + move a1,*a8(OFLAGS) +ignore_it + rets + +we_are_a_drone_ignore + MOVE @WHICH_SCREEN,A1,L + CMPI DUMRETS,A1 + JREQ #NOT_TO_WORRY + MOVE *A8(OFLAGS),A1 + ORI M_NODISP,A1 + MOVE A1,*A8(OFLAGS) + RETS + +#NOT_TO_WORRY + MOVE *A8(OFLAGS),A1 + ANDI 0FFFFH-M_NODISP,A1 + MOVE A1,*A8(OFLAGS) + RETS + + +; movi 5,a7 +; mpyu a14,a7 +; move *a8(OIMG),a14,L +; move *a14(ISAG),a14,L +; add a14,a7 +; move a7,*a8(OSAG),L + + rets + +#***************************************************************************** +* Returns the remaining health for a player +* >a1 = PLYRNUM +* a0 = amount to add to player's health total +* >a1 = PLYRNUM +* >a10= attacker's process ptr +* +* Returns carry bit set if we're dead at the end of this, even if we +* were dead when the function was called. Returns carry clear if we're +* alive afterwards. +* +* HACK ALERT: In royal rumble mode, the two human players share a lifebar. +* This is implemented by halving all damage done to human players, and +* then redirecting any damage done to player 1 to player 0 instead. +* So right away we save the actual PLYRNUM, then change from 1 to 0 in +* royal rumble mode. When it comes time to animate, we restore the +* original. +* + + .bss #actual_plyrnum,16 + + ;reg use: + ; a3 = adjusted health + ; a4 = current health + ; a5 = player life meter pointer + ;a13 = our process pointer + + SUBR adjust_health + + PUSH a1,a3,a4,a5,a8,a10,a13 + + ;save the original PLYRNUM + move a1,@#actual_plyrnum + + ;if we're in royal rumble mode and PLYRNUM is 1, make it zero. + move @royal_rumble,a14 + jrz #pnumok + cmpi 1,a1 + jrne #pnumok + clr a1 +#pnumok + +**** ;get process pointer + move a1,a13 + X32 a13 + addi process_ptrs,a13 + move *a13,a13,L + +**** ;get the meter struct pointer + move a1,a5 + X64 a5 ;x by PLT_SIZE + addi life_data,a5 + +**** ;get health + move *a5(PLT_LIFE),a4 + +**** ;skip the whole routine if we're dead and taking damage + TEST a0 + jrnn #x0 ;not taking damage + move *a13(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #already_dead +#x0 + +**** ;skip multiplier if we're getting life back. + TEST a0 + jrnn #no_multiplier + +**** ;make sure a10 is valid + move *a13(WHOHITME),a14,L + jrz #no_valid_attacker ;must have this. WHOHITME is init'd + cmp a14,a10 ; to 0, and will thus match a cleared + jrne #no_valid_attacker ; a10, with unpredictable results. + + +**** ;teammates do 1 pixel damage to each other + move *a10(PLYR_SIDE),a3 + move *a13(PLYR_SIDE),a14 + xor a3,a14 + jrnz #norum1 + + ;in 8-on-1, do half dmg to teammates instead of 1 pixel + calla is_8_on_1 + jrnc #do_1 + sra 1,a0 + jruc #norum1 + +#do_1 movi -1,a0 +#norum1 + +**** ;doing a combo? + move *a10(COMBO_COUNT),a14 + jrz DO_NORMAL_ADJUST_CHECK + move a14,a0 + + ;it's a combo. Clean DAM_MULT and adjust the damage: + ; 0 < hit# < 12: damage = 15 - hit# + ; hit# > 11: damage = 4 + + clr a14 + move a14,@DAM_MULT + +; subk 12,a0 +; subk 11,a0 + subk 10,a0 + CMPI -4,A0 + JRLE #no_multiplier + MOVI -4,A0 + JRUC #no_multiplier + +DO_NORMAL_ADJUST_CHECK + ;not a combo. check for a multiplier. + move @DAM_MULT,a9 + jrz #no_multiplier + + ;compute new damage val + ;MULT 2: damage *= 3/2 + ;MULT 3: damage *= 4/2 + ;MULT 4+: damage *= 5/2 + move a0,a14 +#mul_lp add a14,a0 + dsj a9,#mul_lp + sra 1,a0 + + ;clr DAM_MULT + clr a14 + move a14,@DAM_MULT + +#no_valid_attacker +#no_multiplier + + +**** ;Adjust damage based on the number of drones, unless we're adding + ;life. + TEST a0 + jrnn #dc_adj_done + + ;count active drones + ; count = 0 in attract mode, 4 in 8-on-1, 5 in buddy mode, 6 in + ; 8-on-2. + PUSH a1,a2,a3 + + movk 4,a3 + calla is_8_on_1 + jrc #adc_set + + movk 5,a3 + move @buddy_mode_on,a14 + jrnz #adc_set + + movk 6,a3 + move @royal_rumble,a14 + jrnz #adc_set + + clr a3 + + move @PSTATUS,a14 + jrz #adc_set + + movi process_ptrs+40h,a1 + movi NUM_WRES-2,a2 +#lp0 move *a1+,a14,L + jrz #adc_set + inc a3 + dsj a2,#lp0 + +#adc_set + X32 a3 + addi #damage_mod_table,a3 + + ;add 10h if the target is a player + move *a13(PLYR_TYPE),a14 + cmpi PTYPE_DRONE,a14 + jreq #adc_drone + addk 10h,a3 +#adc_drone + move *a3,a3 + mpyu a0,a3 + move a3,a0 + sra 8,a0 + + PULL a1,a2,a3 +#dc_adj_done + + +**** ;Adjust damage based on game time adjustment + move @speed_adjustment,a14,L + mpys a14,a0 + sra 16,a1 + move a1,a0 + + +**** ;Store away dmg this plyr has done for later analysis, but only + ; if we're taking damage and a10 matches WHOHITME. + TEST a0 + jrnn #nostore + + move *a13(WHOHITME),a14,L + cmp a14,a10 + jrne #nostore + + move *a10(DAMAGE_GIVEN),a14 + sub a0,a14 ;(damage is negative) + move a14,*a10(DAMAGE_GIVEN) +#nostore + + ;do range checking on the damage value. Don't allow a wrestler + ; to have a life value below zero or above LIFE_MAX. + move a0,a3 + add a4,a3 ;a3 is new life total + jrle #bzero + + cmpi LIFE_MAX,a3 + jrle #dmg_ok + + movi LIFE_MAX,a3 + jruc #dmg_ok + +#bzero ;this hit will kill us. If it was a 20+ point hit, and it killed + ; us by a margin of 6 pixels or less, fudge it by taking five + ; off the damage + + cmpi -10,a3 + jrle #no_fudge ;skip if life is -4 or less + + cmpi -20,a0 + jrgt #no_fudge ;skip if the hit wasn't 25 or more + + ;fudge it. Add 5 to the adjusted life to keep us alive + addk 5,a3 + movk 5,a3 + ;and add 5 to the health adjustment (thus subtracting five from + ; the damage done), just to be safe. +; addk 5,a0 + jruc #dmg_ok + +#no_fudge + clr a3 + + ;if we're in attract mode, don't die! + move @PSTATUS,a14 + jrnz #norm1 + MOVI LIFE_MAX,a3 + +#norm1 ;if he's out of life and we're in debug mode, fill him up. + .if DEBUG + move @fight_debug,a14 + jrz #dmg_ok + movi LIFE_MAX,a3 + .endif + +#dmg_ok + move a3,*a5(PLT_LIFE) + + ;update LAST_DAMAGE + move @PCNT,a14 + move a14,*a13(LAST_DAMAGE) + + ;figure out if we need to flash the lifebar as a warning. + ;if a4 > 30 and a3 <= 30, fire off a danger process. + ; re above: a4 is current life, a3 is life after this hit. + cmpi 30,a4 + jrle #no_danger_proc + cmpi 30,a3 + jrgt #no_danger_proc + + ;skip this if we have any teammates + move a13,a0 + calla ck_any_teammates + jrc #no_danger_proc + CREATE FLASH_PID,flash_obj + move a13,*a0(PDATA),L + +#no_danger_proc + + TEST a3 + jrnz #not_dead + + ;player IS dead. -- time to restore original PLYRNUM + move @#actual_plyrnum,a1 + calla get_process_ptr + move a0,a13 + + ;set I_WILL_DIE on dead human's teammate if we're in royal rumble + ; mode. + move @royal_rumble,a14 + jrz #norum + cmpi 2,a1 + jrge #norum + + xori 1,a1 + calla get_process_ptr + movk 1,a14 + move a14,*a0(I_WILL_DIE) + xori 1,a1 + +#norum ;if dying guy is a drone, and we're in 8-on-? mode, decrement + ; wrestler_count and wake up the wrestler_counter process. + move @#actual_plyrnum,a1 + cmpi 2,a1 + jrlt #notd8 + + ;Set the COUNTED_DEAD bit too. If it's already set, don't decrement + ; wrestler_count again. + move *a13(STATUS_FLAGS),a14,L + btst B_COUNTED_DEAD,a14 + jrnz #notd8 + ori M_COUNTED_DEAD,a14 + move a14,*a13(STATUS_FLAGS),L + + move @wrestler_count_proc,a0,L ; Does the counter proc exist ? + jrz #notd8 ; br = no + move @wrestler_count,a14 ; Current count == 0 ? + jrz #notd8 ; br = yes + dec a14 ; Decrement it + move a14,@wrestler_count ; Write it back + movk 1,a14 ; Make counter proc wakeup on next tick + move a14,*a0(PTIME) +#notd8 + + ;Is combo mode on for this player? + move *a13(WHOHITME),a8,L + callr CHECK_COMBO_GO + jrlt #ok +;Am I in the middle of a combo? + move *a8(COMBO_COUNT),a0 + jrz #ok +;Give him some life back + movk 1,a14 + move a14,*a5(PLT_LIFE) + move a14,*a13(I_WILL_DIE) + jruc #already_dead +#ok + + ;temp! - 314 + .if DEBUG + DBEVENT BDE_DIES,a13,L,*a13(WRESTLERNUM),W,*a13(PLYRNUM),W + .endif + + ;death sound + movi 034h,a0 + calla triple_sound + + clr a14 + move a14,*a13(ROLL_POS) + +;Lookup table based on wrestler type + + move *a13(WHOHITME),a10,L ;* wrestler process + move *a10(ATTACK_MODE),a0 + cmpi AMODE_BLBOWDROP,a0 + jrz #skip0 + cmpi AMODE_BSTOMP,a0 + jrz #skip0 + cmpi AMODE_BUTTSTOMP,a0 + jrz #skip0 + + ;if death by buzzer, jump to #skip0 ONLY if it was unblocked. + cmpi AMODE_BUZZ,a0 + jrne #nobuzz + move *a13(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jrne #skip0 +#nobuzz + + ;if our DEAD_ANIM bit is set, don't animate + move *a13(STATUS_FLAGS),a14 + btst B_DEAD_ANIM,a14 + jrnz #skip0 + + move *a13(WRESTLERNUM),a0 + X32 a0 + + move *a13(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrz #grnd + cmpi MODE_ONGROUND,a14 + jrnz #fall + +#grnd addi convulse_t,a0 + move *a0,a0,L + + calla change_anim1a + +#skip0 + SETMODE DEAD + calla wres_collis_off + + calla flash_red + + PULL a1,a3,a4,a5,a8,a10,a13 + + setc + rets + +#fall +;Check plyr mode, attempt a death fall back +;Otherewise, just set mode dead + cmpi MODE_NORMAL,a14 + jrz #fallbk + cmpi MODE_RUNNING,a14 + jrz #fallbk + cmpi MODE_INAIR,a14 + jrz #fallbk + cmpi MODE_INAIR2,a14 + jrz #fallbk + cmpi MODE_BOUNCING,a14 + jrz #fallbk + cmpi MODE_ONTURNBKL,a14 + jrz #fallbk + cmpi MODE_BLOCK,a14 + jrz #fallbk + cmpi MODE_DIZZY,a14 + jrz #fallbk + cmpi MODE_CLIMBTURNBKL,a14 + jrz #fallbk + cmpi MODE_HEADHOLD,a14 + jrz #fallbk + cmpi MODE_HEADHELD,a14 + jrz #will_die + +;Puppet mode? Others? +;How best to deal with this? + + +; LOCKUP + +;At least zero vels? + clr a0 + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_ZVEL),L + move a0,*a13(OBJ_YVEL),L + + SETMODE DEAD +#skip calla wres_collis_off + + calla flash_red + + PULL a1,a3,a4,a5,a8,a10,a13 + + setc + rets + +#will_die +; movk 1,a0 +; move a0,*a13(I_WILL_DIE) + movi 3*60,a0 + move a0,*a13(I_WILL_DIE) + jruc #skip + +#fallbk addi #fallbacks_t,a0 + move *a0,a0,L + + calla change_anim1a + + move *a13(OBJ_XVEL),a2,L + cmpi [2,0],a2 + jrgt #okz + movi [2,0],a2 + move *a13(OBJ_XPOSINT),a1 + move *a13(WHOHITME),a0,L ;* wrestler process + + move *a0(OBJ_XPOSINT),a0 + cmp a0,a1 ;offx - defx + jrgt #fall_right ;attacker on left + movi [-2,0],a2 + + +#fall_right + move a2,*a13(OBJ_XVEL),L +#okz + + calla wres_collis_off + + SETMODE DEAD + + calla flash_red + + PULL a1,a3,a4,a5,a8,a10,a13 + + setc + rets + + + +#already_dead + + calla flash_red + + PULL a1,a3,a4,a5,a8,a10,a13 + setc + rets + +#not_dead + PULL a1,a3,a4,a5,a8,a10,a13 + clrc + rets + + +; tgt = drone tgt = player +#damage_mod_table + .word _85PCT, _85PCT ;0 drones + .word _100PCT, _100PCT ;1 drone + .word _110PCT, _90PCT ;2 drones + .word _125PCT, _75PCT ;3 drones + .word _145PCT, _60PCT ;8-on-1 match + .word _110PCT, _90PCT ;buddy mode match + .word _130PCT, _30PCT ;8-on-2 match + + + SUBR fallbacks_t +#fallbacks_t +#fall_back + REFLONG hrt_fall_back_anim ;0 Bret Hart + REFLONG rzr_fall_back_anim ;1 Razor Ramon + REFLONG und_fall_back_anim ;2 Undertaker + REFLONG yok_fall_back_anim ;3 Yokozuna + REFLONG shn_fall_back_anim ;4 Shawn Michaels + REFLONG bam_fall_back_anim ;5 Bam Bam + REFLONG dnk_fall_back_anim ;6 Doink + .long 0 ;7 spare + REFLONG lex_fall_back_anim ;8 Lex Luger + + + SUBR convulse_t +#hitonground + REFLONG hrt_hitonground_anim ;0 Bret Hart + REFLONG rzr_hitonground_anim + REFLONG und_hitonground_anim ;2 Undertaker + REFLONG yok_hitonground_anim ;3 Yokozuna + REFLONG shn_hitonground_anim ;4 Shawn Michaels + REFLONG bam_hitonground_anim ;5 Bam Bam + REFLONG dnk_hitonground_anim ;6 Doink + .long 0 ;7 spare + REFLONG lex_hitonground_anim ;8 Lex Luger + +#***************************************************************************** +* Create the credits display at the top of the screen +* + + SUBR start_credbox + + ;draw the panel + TBL_OBJ #plate + + callr update_credit_msg + rets + + +*************************************** +* Display credit info - Gets called from coin routines. +* +* Trashes a0-a7 + + SUBR update_credit_msg + + PUSH a8,a9,a10 + +;Only turn on these messages if during gameplay, or player select! + + .ref SHOW_CRD_FLAG + move @SHOW_CRD_FLAG,a0 + jrnz #cont0 + + move @GAMSTATE,a0 + cmpi INSELECT,a0 + jrz #cont + + CMPI INPARTY,A0 + JREQ #cont + CMPI INPREGAME,A0 + JREQ #cont + CMPI INPREGAME2,A0 + JREQ #cont + + subk INGAME,a0 + jrne #x + +#cont0 + +;When coins are entered, and the game is being played, tell the meter +;code to display approproiate coinin message. + +;Get meter process info + movi METER_PID,a0 + clr a1 + not a1 + calla EXISTP + jrz #cont + + movk 1,a1 + move a1,*a0(P1CNTR) + move a1,*a0(P2CNTR) + clr a1 + move a1,*a0(P1STATE) + move a1,*a0(P2STATE) + +#cont + + movi CLSDEAD|CREDITID,a0 + calla obj_del1c ;kill credit/qrtr imgs + + TBL_OBJ #plate + + movi freeply,a10 + + movk ADJFREPL,a0 + CALLA GET_ADJ ;SEE IF FREEPLAY......(Z BIT CLEAR IF SO!) + jrnz #freep + + movi credit,a10 + + calla GET_CREDITS + calla BINBCD + + move a0,a9 + sll 32-4,a0 + srl 32-4-5,a0 ;*32 + addi #numfont,a0 + move *a0,a2,L + + movi [216,0],a0 + movi [6,0],a1 +; movi 1006,a3 ;Z + movi 1901H,a3 ;Z + movi DMAWNZ|M_SCRNREL,a4 + movi CLSDEAD|CREDITID,a5 + clr a6 + clr a7 + calla BEGINOBJ + + srl 4,a9 + sll 32-4,a9 + srl 32-4-5,a9 ;*32 + addi #numfont,a9 + move *a9,a2,L + + movi [211,0],a0 + movi [6,0],a1 + calla BEGINOBJ + +#freep movi [179,0],a0 + movi [6,0],a1 + move a10,a2 +; movi 1006,a3 ;Z + movi 1901H,a3 ;Z + movi DMAWNZ|M_SCRNREL,a4 + movi CLSDEAD|CREDITID,a5 + clr a6 + clr a7 + calla BEGINOBJ + +#x PULL a8,a9,a10 + + rets + +*************************************** +* config data +* + +#plate .word 176,4,1900H ;X, Y, Z + .long crplate ;IMG + .word DMAWNZ|M_SCRNREL ;CTRL + .word CLSDEAD|CREDITID ;OID + .long 0,0 ;XVEL, YVEL + .even + +#numfont + .long font60 + .long font61 + .long font62 + .long font63 + .long font64 + .long font65 + .long font66 + .long font67 + .long font68 + .long font69 + +#***************************************************************************** +* Moves PLT_CLIFE toward PLT_LIFE if it isn't already there. +* >a0 = PLYRNUM + +#lifebar_deltavee equ 2 ;pixels per tick of motion + + SUBRP inc_life + + ;aim a1 at PLT block + move a0,a1 + X64 a1 ;x by PLT_SIZE + addi life_data,a1 + + ;check the values + move *a1(PLT_LIFE),a2 + move *a1(PLT_CLIFE),a3 + + cmp a2,a3 + jrz #done + + ;CLIFE is lagging. move it toward LIFE + jrgt #shrink + + ;CLIFE needs to grow + addi #lifebar_deltavee,a3 + cmp a3,a2 + jruc #set + +#shrink + subi #lifebar_deltavee,a3 + cmp a2,a3 +#set + jrge #inrange + + ;overshot it + move a2,a3 +#inrange + move a3,*a1(PLT_CLIFE) + +#done + rets + + +#***************************************************************************** +* Flash the background of the life meter for the current player. +* >a10 = plyrnum + +danger_snd equ 0b9h + + SUBRP flash_obj + + ;if we're a drone and we have teammates, ignore this. + cmpi 1,a10 + jrle #ndie + + move a10,a1 + calla get_process_ptr + move *a0(PLYR_SIDE),a4 + movi process_ptrs+40h,a1 + movi NUM_WRES-2,a2 +#lp0 move *a1+,a3,L + jrz #ndie ;done at first inactive + cmp a0,a3 + jreq #nxt0 ;skip self + move *a3(PLYR_SIDE),a14 + cmp a4,a14 + jreq #die ;die--we have a teammate +#nxt0 dsj a2,#lp0 + +#ndie + ;find the bar obj + calla arm_comeback_award + + movi danger_snd,a0 + calla triple_sound + + ;danger music - skip if in 8-on-2 mode + calla is_8_on_1 + jrc #die + move @royal_rumble,a14 + jrnz #die + + movi 18,a3 + move @temp_music,a14 + cmpi 15,a14 + jreq end_music_set + movk 26,a3 +end_music_set + calla SNDSND + + movi danger,a2 + movi [85h,0],a0 + move *a13(PDATA),a1,L + move *a1(PLYR_SIDE),a1 + jrz #p1 + movi [0e4h,0],a0 +#p1 movi [18h,0],a1 + movi name_z,a3 ;Z + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJ + + movk 20,a9 +#lp + + move a10,a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + + move *a0(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #deldie + + move *a0(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jreq #deldie + + SLEEPK 7 + + movi WSF_R_P,a0 + calla pal_getf + move a0,*a8(OPAL) + + SLEEPK 4 + + movi WSF_W_P,a0 + calla pal_getf + move a0,*a8(OPAL) + + dsj a9,#lp + +#deldie calla DELOBJA8 + +#die DIE + + + +****************************************************************************** + + SUBRP do_win_streaks + + move @p1winstreak,a0 + jrz #p2 + + callr streak_1 + +#p2 move @p2winstreak,a0 + jrz #x + + callr streak_2 + +#x + rets + +streak_1 + cmpi 99,a0 + jrls #maxok + movi 99,a0 +#maxok + calla BINBCD + + move a0,a9 + sll 32-4,a0 + srl 32-4-5,a0 ;*32 + addi #f_t,a0 + move *a0,a2,L + + movi [3dh,0],a0 + movi [23h,0],a1 + movi name_z,a3 ;Z + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJ + MOVE A8,@WINS_OBJ,L + + srl 4,a9 + sll 32-4,a9 + srl 32-4-5,a9 ;*32 + addi #f_t,a9 + move *a9,a2,L + movi [36h,0],a0 + movi [23h,0],a1 + calla BEGINOBJ + MOVE A8,@WINS_OBJ+20H,L + + TBL_OBJ lwin + MOVE A8,@WINS_OBJ+40H,L + rets + +streak_2 + cmpi 99,a0 + jrls #maxok2 + movi 99,a0 +#maxok2 + calla BINBCD + + move a0,a9 + sll 32-4,a0 + srl 32-4-5,a0 ;*32 + addi #f_t,a0 + move *a0,a2,L + + movi [175h,0],a0 + movi [23h,0],a1 + movi name_z,a3 ;Z + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJ + MOVE A8,@WINS_OBJ,L + move a8,a10 + + srl 4,a9 + sll 32-4,a9 + srl 32-4-5,a9 ;*32 + addi #f_t,a9 + move *a9,a2,L + movi [16eh,0],a0 + movi [23h,0],a1 + calla BEGINOBJ + MOVE A8,@WINS_OBJ+20H,L + + TBL_OBJ rwin + MOVE A8,@WINS_OBJ+40H,L + rets + + +#f_t + .long WFONT_0,WFONT_1,WFONT_2,WFONT_3,WFONT_4 + .long WFONT_5,WFONT_6,WFONT_7,WFONT_8,WFONT_9 + + + .ref match_cnt + +#***************************************************************************** +* + + STRUCTPD + LONG BLINK_PROC + +announce_match + + + MOVI CROWD_CHEER_0,A3 + CALLA SNDSND + + clr a0 + move a0,*a13(BLINK_PROC),L + + move @PSTATUS,a0 + jrnz #noamode + clr a0 + move a0,@HALT + DIE + +#noamode + + .if DEBUG + .ref skip_select + move @skip_select,a0 + jrz #noskp + clr a0 + move a0,@HALT + DIE +#noskp + .endif + + +; SLEEP 28h +; movi 28h,a10 +; JSRP wait_on_butn + + movi ram_lst,a11 + clr a0 + movi 39,a1 +#lp move a0,*a11+,L + dsjs a1,#lp + movi ram_lst,a11 + + movi [252h,0],a0 ;x pos + movi [3eh,0],a1 ;y pos + movi MTCHPLT,a2 + movi MPLTPRPP,b0 + movi 1800h,a3 ;z pos + callr #begin_obj + + movi [252h,0],a0 ;x pos + movi [3eh,0],a1 ;y pos + movi MNMEPLT,a2 + movi MPLTPRPP,b0 + movi 1800h,a3 ;z pos + callr #begin_obj + + movi [574,0],a0 ;x pos + movi [4Fh,0],a1 ;y pos + movi MATCH,a2 + movi WGFS_W_P,b0 + movi 1801h,a3 ;z pos + callr #begin_obj + MOVE A8,B3 + CLR B4 + CLR B5 + CLR B6 + + move @match_cnt,a0 + + cmpi 999,a0 + jrls #maxok + movi 999,a0 +#maxok + calla BINBCD + + move a0,a9 + move a0,a10 + sll 32-4,a0 + srl 32-4-5,a0 ;*32 + addi #f_t,a0 + move *a0,a2,L + + movi [252h,0],a0 ;x pos + movi [43h,0],a1 ;y pos + movi WGFS_W_P,b0 + movi 1802h,a3 ;z pos + callr #begin_obj + MOVE A8,B4 + + srl 4,a9 + sll 32-4,a9 + srl 32-4-5,a9 ;*32 + move a9,a9 + jrz #ok2 + + addi #f_t,a9 + move *a9,a2,L + movi [252h,0],a0 ;x pos + movi [43h,0],a1 ;y pos + movi WGFS_W_P,b0 + movi 1802h,a3 ;z pos + callr #begin_obj + MOVE A8,B5 + + srl 8,a10 + sll 32-4,a10 + srl 32-4-5,a10 ;*32 + move a10,a10 + jrz #ok2 + + addi #f_t,a10 + move *a10,a2,L + movi [252h,0],a0 ;x pos + movi [43h,0],a1 ;y pos + movi WGFS_W_P,b0 + movi 1802h,a3 ;z pos + callr #begin_obj + MOVE A8,B6 + +#ok2 + MOVE *B3(OSIZEX),B7 + ADDI 5,B7 + MOVE *B4(OSIZEX),B0 + ADD B0,B7 + ADDK 3,B7 + MOVE B5,B5 + JRZ NO_NEED_TO_ADD_TO_X + SUBK 3,B7 + MOVE *B5(OSIZEX),B0 + ADD B0,B7 + MOVE B6,B6 + JRZ NO_NEED_TO_ADD_TO_X + MOVE *B6(OSIZEX),B0 + ADD B0,B7 + +NO_NEED_TO_ADD_TO_X + SRL 1,B7 + MOVI 252H,B8 + SUB B7,B8 + MOVE B8,*B3(OXPOS) + ADDI 5,B8 + MOVE B5,B5 + JRNZ NO_EXTRA_SPACE + ADDK 3,B8 +NO_EXTRA_SPACE + + MOVE B6,B6 + JRZ NO_NEED_TO_ADD_TO_X2A + MOVE *B3(OSIZEX),B7 + ADD B7,B8 + MOVE B8,*B6(OXPOS) + JRUC X2A_ADDED + +NO_NEED_TO_ADD_TO_X2A + MOVE B3,B6 +X2A_ADDED + MOVE B5,B5 + JRZ NO_NEED_TO_ADD_TO_X2B + MOVE *B6(OSIZEX),B7 + ADD B7,B8 + MOVE B8,*B5(OXPOS) + JRUC X2B_ADDED + +NO_NEED_TO_ADD_TO_X2B + MOVE B3,B5 +X2B_ADDED + MOVE *B5(OSIZEX),B7 + ADD B7,B8 + MOVE B8,*B4(OXPOS) + +;Print the text on the little plate + +;This will be a table lookup which points to match type +;(Ex. Best 2 of 3, Intercontinental Championship, WWF Championship +;Lumberjack match, Tag Team Bout, This contest is for 1 fall!, etc.) + +;Make sure we have enough ram set aside for the largest +;message possible. (ram_lst) + + movi [253h,0],a0 ;x pos + movi [68h,0],a1 ;y pos + + ;set a3 to 1 if this is the final match, 0 otherwise + clr a3 + calla is_final_match + jrnc #a3set + movk 1,a3 + +#a3set movi WHICH_MATCH,a2 + SLL 5,A3 + ADD A3,A2 + MOVE *A2,A2,L + movi WSF_W_P,b0 + movi 1801h,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi CLSNEUT|TYPTEXT|SUBMES1,a5 + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJP + + +;Place all of the new plates & string characters onto the ram_lst that +;gets scrolled. + + movi OBJLST,a14 + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + movi CLSNEUT|TYPTEXT|SUBMES1,a2 +#lp2 + move *a14,a14,L + jrz #x + move *a14(OID),a1 + cmp a2,a1 + jrz #add + cmp a0,a1 + jrne #lp2 +#add move a14,*a11+,L + jruc #lp2 +#x + +;This will blink between red/white + CREATE CYCPID,blink_font + move a0,*a13(BLINK_PROC),L + +;Slide everthing onto screen + + movi >b6,a0 + calla triple_sound + + movi 20h,a10 ;30 + +#onscr_loop + + SLEEPK 1 + + movi [200,0],a0 + callr #set_x + + dsj a10,#onscr_loop + + calla is_8_on_1 + jrc #skip_do_rounds + ;skip this if this is the final match + CREATE ANNC_PID,DO_ROUNDS +#skip_do_rounds + +;In middle + CREATE SOUND_PID,ring_bell + +; SLEEP 20h + + .ref IKIL1C + .ref show_options + + movi PU_CHECK_PID,a0 + calla IKIL1C + + CREATE0 show_options + + movi 50h,a10 ;80 + + .ref wait_on_butn + JSRP wait_on_butn + + movi >b6,a0 + calla triple_sound + + movi 16h,a10 ;23 + +#offscr_loop + + SLEEPK 1 + + movi [0feb0h,0],a0 + callr #set_x + + dsj a10,#offscr_loop + + move *a13(BLINK_PROC),a0,L + calla KILL + + clr a0 + move a0,@HALT + + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + calla obj_del1c ;delete text/plates + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ;delete text/plates + + ;set round_start_time + move @PCNT,a14,L + move a14,@round_start_time,L + + DIE + +#f_t + .long WGSF22_0,WGSF22_1,WGSF22_2,WGSF22_3,WGSF22_4 + .long WGSF22_5,WGSF22_6,WGSF22_7,WGSF22_8,WGSF22_9 + +WHICH_MATCH + .LONG BESTOF3 + .LONG ROYRUM + .LONG ELIMMTCH + .LONG TAGTEAM + .LONG ONEFALL + .LONG LUMBMTCH + + +;#ln0a_setup +; JAM_STR osgemd_ascii,6,0,247h,43h,BLUE,0 +; +;#ln0b_setup +; JAM_STR osgemd_ascii,6,0,23fh,43h,BLUE,0 +; +;#ln1_setup +; JAM_STR sgmd8_ascii,5,0,252h,80h-10,SGMD8WHT2,0 +; +;#ln2_setup +; JAM_STR sgmd8_ascii,5,0,252h,8bh-10,SGMD8WHT2,0 +; +;#str_rounds +; .string "ROUNDS",0 +; .even + +blink_font + + SLEEPK 2 + + movi 20,a10 +#top + movi WSF_R_P,a0 + calla pal_getf + + movi ram_lst,a11 +#lp3 + move *a11+,a8,L + jrz #x2 + move *a8(OID),a14 + cmpi CLSNEUT|TYPTEXT|SUBMES1,a14 + jrnz #lp3 + move a0,*a8(OPAL) + jruc #lp3 + +#x2 SLEEPK 4 + + movi WSF_W_P,a0 + calla pal_getf + + movi ram_lst,a11 +#lp4 + move *a11+,a8,L + jrz #x3 + move *a8(OID),a14 + cmpi CLSNEUT|TYPTEXT|SUBMES1,a14 + jrnz #lp4 + move a0,*a8(OPAL) + jruc #lp4 + +#x3 SLEEPK 7 + + dsj a10,#top + +announcing_being_done + DIE + +****************************************************************************** + + STRUCTPD + LONG #CREATOR ;UHL proc ptr to whoever created us + LONG #ORIGIN ;UHL approx address of our create call + + .if DEBUG + ;doesn't execute -- just here for TV viewing + move *a13(#CREATOR),a14,L + move *a13(#ORIGIN),a14,L + .endif + + SUBR announce_rnd_winner ;process + + ;temp! - 314 + .if DEBUG + DBEVENT BDE_ARW_START,a13,L,*a13(#CREATOR),L,*a13(#ORIGIN),L + .endif + +#fini_wait + move @in_finish_move,a14 ; Are we doing a finishing move ? + jrz #fini_done ; br = no + SLEEPK 10 + jruc #fini_wait +#fini_done + + movi ANNC_PID,a0 + clr a1 + not a1 + calla EXISTP +; janz SUCIDE + jrz #tmpok + + ;temp! - 314 + .if DEBUG + DBEVENT BDE_ARW_DEXIST,a13,L,*a13(#CREATOR),L,*a13(#ORIGIN),L + .endif + DIE + +#tmpok + + move @annc_rnd_winner_done,a14 + jrz #arwd_ok + .if DEBUG + ;temp! - 314 + DBEVENT BDE_ARW_FLAGDIE,a13,L,*a13(#CREATOR),L,*a13(#ORIGIN),L + .endif + DIE +#arwd_ok + + ;if anyone is trying to do a buckoff, wait for them to finish up. +#any_b callr anyone_bucking + TEST a0 + jrz #nobuck + + ;temp! - 314 + .if DEBUG + DBEVENT BDE_ARW_ATTEMPT,a13,L,*a13(#CREATOR),L,*a13(#ORIGIN),L + .endif + + ;Someone's trying to do a buckoff. We'll give them 120 ticks or + ; until someone hits an ANI_LOOP statement, then figure out what + ; to do from there. + + SLEEP 90 ;NOTE: If someone hits an ANI_LOOP command and + ; their DID_PIN bit is set, they'll check and + ; see if we're sleeping at arw_bwait, and if we + ; are, they'll wake us up right away. + SUBR arw_bwait + + ;temp! - 314 + .if DEBUG + DBEVENT BDE_ARW_WAKEUP,a13,L,*a13(#CREATOR),L,*a13(#ORIGIN),L + .endif + + ;check for anyone with their NEW_BUCKOFF bit set. If we find any, + ; clear that bit on anyone who's got it set. + movi process_ptrs,a0 + movi NUM_WRES,a1 + clr a3 +#lp0 move *a0+,a2,L + jrz #nxt0 ;skip inactive + move *a2(STATUS_FLAGS),a14,L + btst B_NEW_BUCKOFF,a14 + jrz #nxt0 + + ;got one + andni M_NEW_BUCKOFF,a14 + move a14,*a2(STATUS_FLAGS),L + inc a3 + +#nxt0 dsj a1,#lp0 + + ;now check for an all-dead condition. If neither team is dead, die. + calla get_live_bits + cmpi 3,a0 + jrne #1ded + + ;temp! - 314 + .if DEBUG + DBEVENT BDE_ALL_ALIVE,a13,L,*a13(#CREATOR),L,*a13(#ORIGIN),L + .endif + jauc SUCIDE + +#1ded ;1 team is dead. If nobody did a buckoff during our nap, end the + ; round. If someone did, jump up to #any_b, which checks to see + ; if there's any more buckoff candidates. + TEST a3 + jrnz #any_b + + ;temp! - 314 + .if DEBUG + DBEVENT BDE_ARW_NOBUCK,a13,L,*a13(#CREATOR),L,*a13(#ORIGIN),L + .endif + + ;there was at least one wrestler who could have done a buckoff, + ; but was too slow. For EVERYONE, clear BUCKOFF_COUNT, clear + ; the DO_BUCKOFF flag, and set the NO_BUCKOFF flag. + movi process_ptrs,a0 + movi NUM_WRES,a1 + clr a3 +#lp6 move *a0+,a2,L + jrz #nxt6 ;skip inactive + move a3,*a2(BUCKOFF_COUNT) + move *a2(STATUS_FLAGS),a14,L + andni M_DO_BUCKOFF,a14 + ori M_NO_BUCKOFF,a14 + move a14,*a2(STATUS_FLAGS),L +#nxt6 dsj a1,#lp6 + + +#nobuck + + ;temp! - 314 + .if DEBUG + DBEVENT BDE_ARW_ENDRND,a13,L,*a13(#CREATOR),L,*a13(#ORIGIN),L + .endif + + ;set round_end_time + move @PCNT,a0,L + move a0,@round_end_time,L + + ;set annc_rnd_winner_done + movk 1,a14 + move a14,@annc_rnd_winner_done + + ;set EVERYONE'S NO_BUCKOFF flags, just to be safe. + callr set_all_buckoffs + + MOVI ZFLIP_FOR_SURE,A0 + MOVE A0,@ZFLIP_POS_VAR,L + + MOVI CROWD_VICTORY_LOOP,A3 + CALLA SNDSND + + callr set_winner ;a3 = PLYRNUM of a wrestler on the winning + ; team. The pinner if there is one. + jrn #do_game_over + X32 a3 + addi process_ptrs,a3 + move *a3,a10,L + + move @p1rounds,a0 + cmpi 2,a0 + jrz at_end + move @p2rounds,a0 + cmpi 2,a0 + jreq at_end + calla calc_match_time_1 + jruc timer_updated + +at_end +;#let_finish_happen +; move @in_finish_move,a0 ; Did a finish move get started? +; jrz #no_finish_move ; br = no +; SLEEPK 1 ; Wait for it to finish +; jruc #let_finish_happen +;#no_finish_move + move @p1rounds,a0 + move @p2rounds,a3 + or a0,a3 + cmpi 2,a3 + jrnz #no_2_rnd_victory + calla is_8_on_1 + jrc #no_2_rnd_victory + MATCH_AWARD a10,TWO_RND_AWD +#no_2_rnd_victory + calla calc_match_time_2 + +timer_updated + + callr is_perfect + jrnc #not_perfect + MATCH_AWARD a10,PERFECT_AWD + CREATE ADD_INIT_PID,CREATE_PERFECT + SLEEP 55+50 +#not_perfect +;NOT_PERFECT_MATCH + +;a10=*proc of wrestler who just pinned opponent +;-not neccesarily: if the win was by disqualification or timeout, there's +; no pin. + SLEEPK 30 + +;Place token on top of winner, then have it float up to the top of the screen + + movi 27,a3 + calla SNDSND + + move *a10(PLYR_SIDE),a0 + CALLA CALL_MATCH_OVER + + SLEEPK 20 + + ;has anyone won the match? + move @p1rounds,a0 + cmpi 2,a0 + jrz DO_WAIT + move @p2rounds,a0 + cmpi 2,a0 + jrnz #go0 + +DO_WAIT + CLR A0 + MOVE A0,@MUSIC_HAP + +;Increment his win count + calla increment_wincount + + ;don't draw the text if this is a royal rumble + move @royal_rumble,a14 + jrnz #skip_rw + callr replace_wins +#skip_rw + + ;wait 1 sec or until a press + movi TSEC,a9 +#wl0 SLEEPK 1 + calla get_all_buttons_cur2 + jrnz #go0 + dsjs a9,#wl0 +#go0 + + move @p1rounds,a9 + cmpi 2,a9 + jreq #won_match + move @p2rounds,a14 + cmpi 2,a14 + jreq #won_match + add a14,a9 + dec a9 + jruc #won_fall + +#won_match + movk 2,a9 +#won_fall + + +; calla is_8_on_1 +; jrnc #no_fireworks +; move @p1rounds,a0 +; move @p2rounds,a14 +; or a0,a14 +; cmpi 2,a14 +; jrlt #no_fireworks +; JSRP do_fireworks +;#no_fireworks + + move *a10(PLYR_SIDE),a11 + movi 0c4h,a0 + calla triple_sound + CREATE ANNC_PID,CREATE_END_ROUND_TOP + SLEEPK 15 + CREATE ANNC_PID,CREATE_END_ROUND_BOT + SLEEPK 10 + CREATE ANNC_PID,CREATE_END_ROUND_ICON + SLEEPK 20 + +;Move round awards into match awards section and annunciate round awards for +;each human player. Then clear out round awards. + + calla is_it_a_really_quick_win + calla give_award_if_opponent_is_human + calla check_for_award_for_big_comeback + + + calla accumulate_awards ; Accumulate awards for each player + + CALLA CLEAR_SPEECH_REPEAT + + move @p1rounds,a0 + cmpi 2,a0 + jrz #end + move @p2rounds,a0 + cmpi 2,a0 + jrnz #not_end + +#end + calla check_for_award_for_winstreak + clr a0 + move a0,@award_ok_to_die,L + CREATE AWARD_PID,create_end_rnd_awards + + CREATE SOUND_PID,DO_RIGHT_MUSIC + move @royal_rumble,a0 + jrnz #no_award_wait +#wait_awards_dead + SLEEPK 1 + move @award_ok_to_die,a0,L + cmpi 3,a0 + jrlt #wait_awards_dead +#no_award_wait + + + + ;wait 1 sec or until a press + movi TSEC*3,a9 +#wl1 SLEEPK 1 + calla get_all_buttons_cur2 + jrnz #go1 + dsjs a9,#wl1 +#go1 + movk 4,a0 + move a0,@award_ok_to_die,L + + MOVI ANNC_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + + movi 25,a0 ; Tips every 25 consecutive wins + move @p1winstreak,a1 ; p1 winstreak ? + jrnz #tip_chk ; br = yes +#ck_p2 + move @p2winstreak,a1 ; p2 winstreak ? + jrz #ck_mtch_num ; br = no +#tip_chk + modu a0,a1 ; 25 wins? + jrz #do_tip ; br = yes +#ck_mtch_num + movi 100,a0 ; Tips every 100 matches + move @match_cnt,a1 ; Get match count + modu a0,a1 ; Time for a tip + jrnz #no_tip ; br = no +#do_tip + CREATE 04000h,show_mk3_tip ; Show a random mk3 tip + SLEEPK 2 +#no_tip + + MOVE @MUSIC_HAP,A0 + JRNZ MUSIC_ALREADY_GOING + CREATE SOUND_PID,DO_RIGHT_MUSIC2 + +MUSIC_ALREADY_GOING + MOVK 2,A0 + move a0,@match_over + CALLA KILL_ALL_CHANNELS + MOVI 4DH,A0 + CALLA triple_sound + clr a0 + move a0,@HALT + DIE + +******** +* Create game over process and die + + SUBRP #do_game_over + CREATE0 do_game_over ;it'll set it's own PROCID + DIE + +******** +* Play's a wrestler's music + + SUBRP DO_RIGHT_MUSIC + SLEEP 55 + SUBRP DO_RIGHT_MUSIC2 + MOVK 1,A0 + MOVE A0,@MUSIC_HAP + MOVE *A10(WRESTLERNUM),A11 + SLL 4,A11 + ADDI #wrestler_tunes,A11 + MOVE *A11,A3 + calla SNDSND + DIE + +#wrestler_tunes + .word 5,2,1,7,6,4,8,0,3 + +#not_end + move @royal_rumble,a14 + jrnz #no_run_boxes + JSRP show_dufus_messages ; Shows run msg (only between rounds) +#no_run_boxes + + ;wait 105 ticks or until a press + movi 105,a9 +#wl2 SLEEPK 1 + calla get_all_buttons_cur2 + jrnz #go2 + dsjs a9,#wl2 +#go2 ;Hey! REAL programmers don't use go2's! + ;if the dufus msg boxes are on make sure their + ;on for at least 1 second + move @dboxes_on,a0,L ; Any dufus msg boxes on? + jrz #death_ok ; br = no + cmpi 50,a9 ; Has 1 second passed ? + jrle #death_ok ; br = yes + subi 50,a9 ; Give me remainder of 1 second +#dbox_wait + SLEEPK 1 + dsjs a9,#dbox_wait +#death_ok + movk 1,a0 + move a0,@award_ok_to_die,L + + MOVI ANNC_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL ;STOP BAR MOTION IF NEED BE + + MOVE @PSTATUS,A5 + CMPI 3,A5 + JREQ RESET_HUMAN_VS_HUMAN + + MOVE *A10(PLYRNUM),A3 + CMPI 2,A3 + JRGE RESET_HUMAN_VS_HUMAN + + NOT A5 + SLL 30,A5 + SRL 30,A5 + DEC A5 + JRUC WRESTLERS_RESET + +HUMAN_WON_IT + +RESET_HUMAN_VS_HUMAN + MOVE *A10(WHOIHIT),A1,L + MOVE *A1(PLYRNUM),A5 + +WRESTLERS_RESET + +;Cause wrestlers to re-appear in the correct spot to start the next round. + + CALLA CLEAR_SPEECH_REPEAT + + ;do new music for the coming round + MOVE @current_round,A1 + MOVI 16,A3 + CMPI 2,A1 + JREQ NOT_THIRD_MATCH + MOVI 17,A3 +NOT_THIRD_MATCH + CALLA SNDSND +NO_LOWER + movk 8,a8 + movk 1,a9 + jsrp CLOSE_VERT_SCREEN_LINE + + MOVI LINES_VERT,A1 + MOVE A1,@WHICH_SCREEN,L + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ;delete text/plates + + movi ZFLIP_POS,a0 + move a0,@ZFLIP_POS_VAR,L + + calla reset_for_round + calla reset_for_round2 + + movi TIMER_PID,a0 + movi -1,a1 + calla EXISTP + jrz dont_update_clock + pushst + dint + push a13 + move a0,a13 + calla update_timer + movi WGFS_W_P,a0 + calla pal_getf + move *a13(PDATA+20h),a8,L ;10's image pointer + move a0,*a8(OPAL) + move *a13(PDATA),a8,L ;10's image pointer + move a0,*a8(OPAL) + pull a13 + popst +dont_update_clock + +;Update the meters + clr a0 + MOVE A0,@DAM_MULT + callr update_meter + movk 1,a0 + callr update_meter + + ;reset the scroller position + calla init_scroller + + calla INIT_SKIRTS + + calla BGND_UD1 + +;Now display "round 2" or "round 3" + + CREATE SOUND_PID,ring_bell + + movk 1,a0 + move a0,@HALT + + SLEEPK 1 + calla BGND_UD1 + CREATE SKIRT_PID,CHANGE_SKIRTS2 + + SLEEPK 1 + calla BGND_UD1 +; CREATE SKIRT_PID,CHANGE_SKIRTS2 + + SLEEPK 1 + + + movk 8,a8 + movk 1,a9 + jsrp OPEN_VERT_SCREEN_LINE + + CREATE ANNC_PID,DO_ROUNDS + + SLEEP 50 + CALLA VINCE_START_ROUND2_3 + clr a0 + move a0,@HALT + SLEEP 40 + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ;delete text/plates + + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + calla obj_del1c ;delete text/plates + + clr a0 + move a0,@HALT + + ;reset round_start_time + move @PCNT,a14,L + move a14,@round_start_time,L + + + DIE + +****************************************************************************** + + SUBRP DO_ROUNDS + movi [200,0],a0 ;x pos + movi [255,0],a1 ;y pos + movi RNDPLAT,a2 + movi RNDPLT_P,b0 + movi 1800h,a3 ;z pos + callr #begin_obj + + clr a0 + move a0,*a8(OID) + + PUSH A8 + + move @current_round,a0 + MOVI RNDNUM_1,A2 + DEC A0 + JRZ #OKAY + MOVI RNDNUM_2,A2 + DEC A0 + JRZ #OKAY + MOVI RNDNUM_3,A2 + DEC A0 + JRZ #OKAY + MOVI RNDNUM_4,A2 +#OKAY + movi [200,0],a0 ;x pos + movi [255,0],a1 ;y pos + movi RNDNUM_P,b0 + movi 1801h,a3 ;z pos + callr #begin_obj + + clr a0 + move a0,*a8(OID) + + PULL A9 + + MOVK 20,A10 +LOOP_ROUNDS_ON + MOVI [190,0],A0 + CALLR ZIP_ROUNDS_ON + SLEEPK 1 + DSJS A10,LOOP_ROUNDS_ON + movk 20,a10 + JSRP wait_on_butn + MOVK 20,A10 +LOOP_ROUNDS_OFF + MOVI [300,0],A0 + CALLR ZIP_ROUNDS_ON + SLEEPK 1 + DSJS A10,LOOP_ROUNDS_OFF + + calla DELOBJA8 + move a9,a0 + calla DELOBJ + DIE + +ZIP_ROUNDS_ON + move *a8(OYVAL),a1,L + sub a1,a0 + sra 3,a0 + move *a8(OYVAL),a2,L + add a0,a2 + move a2,*a8(OYVAL),L + move *a9(OYVAL),a2,L + add a0,a2 + move a2,*a9(OYVAL),L + RETS + +#set_x + movi ram_lst,a11 + move *a11,a8,L + move *a8(OXVAL),a1,L + sub a1,a0 + sra 3,a0 +#lp5 + move *a11+,a8,L + jrz #x4 + move *a8(OXVAL),a2,L + add a0,a2 + move a2,*a8(OXVAL),L + + jruc #lp5 +#x4 + rets + +#begin_obj + + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi CLSNEUT|TYPTEXT|SUBTXT,a5 + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJP + rets + +blink_text + SLEEPK 10 +#lp1 + movi SGMD8RED2,a0 + calla pal_getf + move a0,*a8(OPAL) + SLEEPK 4 + movi SGMD8WHT2,a0 + calla pal_getf + move a0,*a8(OPAL) + SLEEPK 7 + jruc #lp1 + +******************************************************************************* + + SUBR FIRSTATT_MESS + + move a10,a0 + movi FIRSTATT,a8 + move *a0(PLYR_SIDE),a9 + clr a10 + pushp a10 + movi 1801h,a11 + + jruc #common + + SUBR BONUS_MESS + +;Process which displays high risk - 2x damage & possibly move name +;This comes in from Secret button moves +;A8=* plyr proc of who fired off the move +;A10=# of move message +;Messages display the first time only + + clr a14 + move a10,a10 ;No message + jrz #already + jrnn #reg + +#tag +;Taunt style high risk move - give 3x dmg + PUSHP a14 + +; movk 3,a1 +; move a1,@DAM_MULT + + RND_AWARD a8,HIGH_RISK_AWD ; give award for high risk + + move *a8(PLYR_SIDE),a9 + MOVI HIGHRISK,A8 + CLR A10 + MOVI 1801H,A11 + + CREATE0 MAYBE_HIGH_RISK + + callr is_there_one_already + jrnz #exit + + CREATE MESSAGE_PID,SPECIAL_MESSAGE + + MOVI 0BBH,A0 ;Guitar snd + CALLA triple_sound + + SLEEP 50 + + movk 4,a10 + jruc #inhere +#reg + + move *a8(RISK),a1 + btst 15,a1 +;Taunt style high risk move - give 3x dmg + jrnz #tag + + + + move a10,a3 + movi message_flag,a2 + cmpi 32,a3 + jrlt normal_thing2 + addi 32,a2 + subi 32,a3 +normal_thing2 + move *a2,a0,L + btst a3,a0 + jrnz #already +;Set the bit which says I've been displayed already! + movk 1,a1 + sll a3,a1 + or a1,a0 + move a0,*a2,L + + sll 5,a10 + addi #message_tbl,a10 + move *a10,a14,L +#already + PUSHP a14 + + +; movk 2,a1 +; move *a8(RISK),a14 +; btst 15,a14 +; jrz #reg2 +; +;;Taunt style high risk move - give 3x dmg +; movk 4,a1 +;#reg2 move a1,@DAM_MULT + + movk 2,a1 + move a1,@DAM_MULT + + RND_AWARD a8,HIGH_RISK_AWD ; give award for high risk + + move *a8(PLYR_SIDE),a9 + MOVI HIGHRISK,A8 + CLR A10 + MOVI 1801H,A11 + + CREATE0 MAYBE_HIGH_RISK + +#common + callr is_there_one_already + jrnz #exit + + CREATE MESSAGE_PID,SPECIAL_MESSAGE + + MOVI 0BBH,A0 ;Guitar snd + CALLA triple_sound + + SLEEP 50 + + movk 2,a10 +#inhere MOVI xDAMAGE,A8 + MOVI 1803H,A11 + + CREATE MESSAGE_PID,SPECIAL_MESSAGE + +;Wait for 2x to leave +;Try to print correct move name + SLEEP 50 + +;Get back message img addr to display + PULLP a8 + jaz SUCIDE + + callr DO_THIS_MESS + DIE + + SUBRP is_there_one_already + MOVE A9,A1 + NOT A1 + SLL 31,A1 + SRL 31-4,A1 + ADDI MESSAGE_FLAGS,A1 + MOVE *A1,A0 + rets + +SET_MESS_FLAGS + MOVE A9,A1 + NOT A1 + SLL 31,A1 + SRL 31-4,A1 + ADDI MESSAGE_FLAGS,A1 + MOVE A0,*A1 + RETS + +******************************************************************************* + + SUBR MOVE_NAME_ANNC + +;Process which displays move name +;This comes in from actual script - like a hip toss announce +;A8=* plyr proc of who fired off the move +;A10=# of move message +;Messages display the first time only + + cmpi 41,a10 + jrz #skip + + move @reduce_bog,a14 + jrnz #exit +#skip + move *a8(PLYR_SIDE),a9 + + callr is_there_one_already + jrnz #exit + + move a10,a3 + movi message_flag,a2 + cmpi 32,a3 + jrlt normal_thing + addi 32,a2 + subi 32,a3 + cmpi 9,a3 + jrz #cont +normal_thing + move *a2,a0,L + btst a3,a0 + jrnz #exit +;Set the bit which says I've been displayed already! + movk 1,a1 + sll a3,a1 + or a1,a0 + move a0,*a2,L +#cont + sll 5,a10 + addi #message_tbl,a10 + move *a10,a8,L + + callr DO_THIS_MESS + +#exit + DIE + +;Add new move img names here: +#message_tbl + .long 0 ;0 = Blank + .long HEADSLAM ;1 + .long 0 ;2 + .long SNAPMIRR ;3 + .long FRANKEN ;4 * + .long BACKBRKR ;5 + .long BODYSLAM ;6 + .long PILEDRV ;7 + .long FIRSTATT ;8 ; saved for Jason + .long ARMBREAK ;9 * + .long ARMDRAG ;10 * ;RAZOR & HART HIP TOSS + .long BACKDROP ;11 * ;BAM BAM HIP TOSS + .long BACKSUPL ;12 * ;SHAWN MICHEALS + .long BANZAI ;13 * + .long BEHMBUTT ;14 * ;BAM BAM RUNNING BUTT DROP + .long CROSFIRE ;15 * + .long DDT ;16 * + .long DOBLSNAP ;17 * ;SHAWN KICK + .long ELBOWDRP ;18 ;EVERYBODY MOSTLY + .long EYERAKER ;19 * + .long FACESLAM ;20 * + .long FIRESPL ;21 * ;BAM BAM OFF TURNBUCKLES + .long CLAPPER ;22 * ;DOINK + .long FLYBUTT ;23 ? + .long FLYCLOTH ;24 * + .long HAMMER ;25 * + .long HIPTOSS ;26 * ;LEX YOKO + .long BIGBOOT ;27 * ;EVERYBODY + .long JOYBUZZ ;28 * + .long MYSTGLVE ;29 ; + .long NAPALM ;30 ; + .long POGOPILE ;31 * + .long RAPIDRND ;32 * + .long RAZOREDG ;33 * + .long SCISSOR ;34 * ;YOKO + .long SKULLCRK ;35 * + .long SLMONKEY ;36 * + .long SPEEDKIK ;37 * + .long SPLASH ;38 ;BAMBAM TURNBUCKLE DROP, EVENTUALLY + .long SUNSETFL ;39 * ;SHAWN FLIP + .long TOMBPLDR ;40 * + .long SECWND09 ;41 + .long VERTSUPL ;42 * ;YOKO LEX + +******************************************************************************* + +DO_THIS_MESS +;a8=*message to print +;a9=0 or 1 + + ;if this is the second wind message, skip the permission check + cmpi SECWND09,a8 + jreq #skip_perm_check + + ;no messages in no-bog mode? + move @no_debris,a14 + jrnz NO_MORE_MESS + + move a9,a0 + sll 5,a0 + addi p1powerup_request,a0 + move *a0,a0,L + btst MOVE_NAMES_ON_BIT,a0 + jrz NO_MORE_MESS +#skip_perm_check + +;Don't allow overlaps! + CLR A10 + + MOVI 1805H,A11 ;1801 + + CREATE MESSAGE_PID,SPECIAL_MESSAGE + + MOVI 0BBH,A0 ;Move name annc snd + CALLA triple_sound + +NO_MORE_MESS + RETS + + +******************************************************************************* + + SUBR DO_REVERSAL_MESS + RND_AWARD a8,REVERSAL_AWD ; give award for reversal + movi 15Ch,a0 + calla ADD_VOICE + + move *a8(PLYR_SIDE),a9 + CREATE MESSAGE_PID,CREATE_REVERSAL_MESS + RETS + + SUBRP CREATE_REVERSAL_MESS ;process + + callr is_there_one_already + jrnz exit_reversal + + MOVI REVERS,A8 + CLR A10 + MOVI 1801H,A11 + + CREATE MESSAGE_PID,SPECIAL_MESSAGE + + MOVI 0BBH,A0 + CALLA triple_sound + +exit_reversal + DIE + +#**************************************************************************** +* Returns process ptr to first wrestler we can find who's trying a buckoff. + + SUBR anyone_bucking + + ;no buckoffs allowed in royal rumble mode + move @royal_rumble,a14 + jrnz #no + + movi process_ptrs,a0 + movi NUM_WRES,a1 +#lp move *a0+,a2,L + jrz #nxt + move *a2(STATUS_FLAGS),a14,L + btst B_DO_BUCKOFF,a14 + jrz #nxt + btst B_NEW_BUCKOFF,a14 + jrnz #yes + btst B_DID_BUCKOFF,a14 + jrnz #nxt +#yes move a2,a0 + rets + +#nxt dsj a1,#lp +#no clr a0 + rets + +#**************************************************************************** +* Sets everyone's NO_BUCKOFF flag. + + SUBRP set_all_buckoffs + + movi process_ptrs,a0 + movi NUM_WRES,a1 +#lp move *a0+,a2,L + jrz #nxt + move *a2(STATUS_FLAGS),a14 + ori M_NO_BUCKOFF,a14 + move a14,*a2(STATUS_FLAGS) +#nxt dsj a1,#lp + rets + +#**************************************************************************** +* +* Returns carry set if everyone on winning team is unharmed. +* Exception: Never returns C if final match. +* +* >a10 = proc of a wrestler on the winning team (anyone will do) +* + + SUBRP is_perfect + + calla is_8_on_1 + jrc #final + + PUSH a2,a3,a4,a5 + + move *a10(PLYR_SIDE),a5 + movi NUM_WRES,a2 + movi process_ptrs,a3 + +#lp move *a3+,a4,L + jrz #nxt ;skip inactive + + move *a4(PLYR_SIDE),a14 + cmp a5,a14 + jrne #nxt ;skip enemies + + move *a4(PLYRNUM),a1 + callr get_health + cmpi LIFE_MAX,a0 + jreq #nxt ;okay - unharmed + + ;injured guy found. return !c + PULL a2,a3,a4,a5 +#final clrc + rets + +#nxt dsj a2,#lp + + ;no injured teammates found. return c + PULL a2,a3,a4,a5 + setc + rets + +#***************************************************************************** + + SUBR DO_COMBO_MESS + +;Combo messages come from the scripts + + MOVE @combo_audit_done,A0 + JRNZ YES_WE_HAVE + movi AUD_COMBO,A0 + calla AUD1 + MOVK 1,A0 + MOVE A0,@combo_audit_done +YES_WE_HAVE + + ;if our combo_broken bit is set, blow out of here altogether. + ; We audit it, but we don't adjust the bar or display any kind of + ; message. + move *a13(STATUS_FLAGS),a14,L + btst B_COMBO_BROKEN,a14 + jrnz #rets + + MOVE *A13(PLYRNUM),A9 + MOVI HITCOMBO,A8 + MOVE *A13(COMBO_COUNT),A10 + DEC A10 +;We need to announce even the lowly combos +;How can you have a combo of 1 ????? + CMPI 2,A10 + JRLT NO_MESSAGE + + + cmpi 10,a10 + jrlt #award_reg_combo + RND_AWARD a13,UCOMBOS_AWD + jruc #combo_awd_done +#award_reg_combo + RND_AWARD a13,COMBOS_AWD ; give award for combo started +#combo_awd_done + + MOVI 0BAH,A0 ;0BAH humbug! + CALLA triple_sound + + MOVI 01A4H,A0 ;INCREDIBLE COMBINATION MOVE ! + CALLA ADD_VOICE + +;Add a couple for a better appearance! + CMPI 5,A10 + JRLE NO_MIGHT_BE_OBVIOUS + addk 2,a10 +NO_MIGHT_BE_OBVIOUS + + MOVI 1803H,A11 + + move *a13(PLYR_SIDE),a9 + +;Don't allow combo message to come out if other message there... + callr is_there_one_already + jrnz NO_MESSAGE + + CREATE MESSAGE_PID,SPECIAL_MESSAGE + +NO_MESSAGE + + ;HACK ALERT: In royal rumble, the two human players share one combo + ; meter. This means that if player 1 (on the right) calls this, + ; we clear HIS combo count but we zero his TEAMMATES bar. + ; Confusing, eh? + + CLR A0 + MOVE A0,*A13(COMBO_START) + + move *a13(PLYR_SIDE),a1 + move *a13(PLYRNUM),a11 + + cmpi 1,a11 + jrne #norum + move @royal_rumble,a14 + jrz #norum + + ;pretend we're player 0 + clr a1 ;side + clr a11 ;PLYRNUM + + +;clear_combo_meter jumps here! + SUBRP zero_combo_meter + +#norum movi MD_SIZE,a9 + mpyu a1,a9 + addi meter_data,a9 + MOVE *A9(MD_COMBO),A8,L + move a11,a5 + X64 a5 ;x by PLT_SIZE + ADDI life_data,A5 + CLR A2 + +;halve_combo_meter jumps here! + SUBRP draw_combo_meter + + MOVE A2,*A5(PLT_COMBO_SIZE) + SLL 5,A2 + ADDI WHICH_SIZE_BAR,A2 + MOVE *A2,A0,L + move *a0(IANIOFF),*A8(ODOFF),L + move *a0(ISAG),*a8(OSAG),L + MOVE *A0(ISIZEX),*A8(OSIZE),L + + PUSH A0,a1 + MOVE A1,A0 + SLL 4,A0 + ADDI COMBO_FLASH_FLAG,A0 + CLR A2 + MOVE A2,*A0 + + ADDI FLASH_COMBO_PID,A1 + MOVE A1,A0 + MOVI -1,A1 + CALLA KILALL + PULL A0,a1 + + ;get the flip right + sll B_FLIPH,a1 + move *a0(ICTRL),a14 + or a1,a14 + ori 8000H|DMAWNZ,a14 + move a14,*a8(OCTRL) + + MOVI SUPER_P,A0 + CALLA pal_getf + MOVE A0,*A8(OPAL) + +NO_GO_AWAY +#rets RETS + +******************************************************************************* +* + + SUBRP SPECIAL_MESSAGE + +ZIP_SPEED .EQU 18H +BUFF .EQU 25 + +;A8=IMAGE TO PLACE UP +;A9=WHICH SIDE (1 OR 2) +;A10=NUMBER OF BONUS MULTIPLIER 2-5 (IF NECESSARY) +;A11=ZPOS TO PLACE BLOCK (SO DAMAGE x GOES OVER OTHER) + + MOVK 1,A0 + CALLR SET_MESS_FLAGS + PUSHP A9 + + NOT A9 + SLL 31,A9 + SRL 31,A9 + + MOVI 10H,A0 ;Whoosh + CALLA triple_sound + + MOVE A11,B5 + CLR A11 + MOVE A8,A2 + MOVE *A2(ISIZEX),A3 + CMPI xDAMAGE,A2 + JREQ SPECIAL_CASE_THIS + CMPI HITCOMBO,A2 + JRNE ONLY_THIS_SIZE +SPECIAL_CASE_THIS + ADDI 19,A3 + MOVE A10,A0 + CALLA BINBCD + MOVE A0,A10 + MOVE A10,A11 + SRL 4,A11 + JRZ ONLY_THIS_SIZE + MOVI HITCOMBO2,A2 + ADDI 21,A3 + CMPI 1,A11 + JRNE ONLY_THIS_SIZE + SUBI 4,A3 +ONLY_THIS_SIZE + MOVI TYPE_MESS2,A5 + ADDI BUFF*2,A3 + MOVI 410,A0 + MOVE A0,A7 + SUB A3,A7 + SLL 16,A7 + DEC A9 + JRNZ WE_SET_XPOS + MOVI TYPE_MESS1,A5 + MOVE A3,A0 + NEG A0 + MOVI [BUFF,0],A7 + ADDK BUFF,A0 +WE_SET_XPOS + SLL 16,A0 + MOVE A0,*A13(PDATA+120H),L + MOVE A7,*A13(PDATA+100H),L + MOVI [230+4,0],A1 + MOVE B5,A3 + ADDK 1,A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + + CLR A6 + CLR A7 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9,A10 + calla BEGINOBJ + + + move *a8(OIMG),a0,L + cmpi SECWND09,a0 + jrnz #nospec +;We need to animate this second wind message + + CREATE0 flash_2ndwind +#nospec + + + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9,A10 + PUSH A8 + + MOVI WHICH_BONUS_2,A14 + CMPI xDAMAGE,A2 + JREQ WE_HAVE_NUMBERS + CMPI HITCOMBO,A2 + JREQ WE_HAVE_NUMBERS + MOVI WHICH_BONUS_1,A14 + CMPI HITCOMBO2,A2 + JRNE NO_NEED_FOR_THIRD_OBJ +WE_HAVE_NUMBERS + SLL 32-4,A10 + SRL 32-4-5,A10 ;*32 + ADD A14,A10 + MOVE *A10,A2,L + MMTM SP,A0,A1,A3,A4,A5,A6,A7,A11 + calla BEGINOBJ + MMFM SP,A0,A1,A3,A4,A5,A6,A7,A11 + MOVE A8,A10 + + MOVE A11,A7 + SLL 32-4,A7 + JRZ NO_NEED_FOR_THIRD_OBJ + SRL 32-4-5,A7 ;*32 + ADDI WHICH_BONUS_2,A7 + MOVE *A7,A2,L + CLR A7 + MMTM SP,A0,A1,A5,A6,A7 + CMPI 1,A11 + JRNE NO_REPOS_THIS_NUM + ADDI [4,0],A0 +NO_REPOS_THIS_NUM + calla BEGINOBJ + MMFM SP,A0,A1,A5,A6,A7 + MOVE A8,A11 +NO_NEED_FOR_THIRD_OBJ + + MOVE *A8(OSIZEX),A2 + MOVI 395,A3 + SUB A2,A3 + SUBI BUFF,A3 + SLL 16,A0 + SUB A3,A0 + MOVI MVEBAR_B,A2 + movi DMAWNZ|M_FLIPH|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A9,A9 + JRZ BAR_SET + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVI MVEBAR_R,A2 + MOVE *A8(OXVAL),A0,L + SUBI [BUFF,0],A0 +BAR_SET + MOVE B5,A3 + calla BEGINOBJ + MOVE A8,A9 + PULL A8 + + MOVI ZIP_SPEED,A3 +MOVE_IT_ON + MOVE *A13(PDATA+100H),A0,L + CALLR MOVE_BARS + PUSHP A3 + SLEEPK 1 + PULLP A3 + DSJS A3,MOVE_IT_ON + + SLEEP 50 + + MOVI ZIP_SPEED,A3 +MOVE_IT_OFF + MOVE *A13(PDATA+120H),A0,L + SLA 1,A0 + CALLR MOVE_BARS + PUSHP A3 + SLEEPK 1 + PULLP A3 + DSJS A3,MOVE_IT_OFF + + CALLA DELOBJA8 + MOVE A9,A8 + CALLA DELOBJA8 + MOVE A10,A8 + JRZ NO_A10_3 + CALLA DELOBJA8 +NO_A10_3 + MOVE A11,A8 + JRZ NO_A11_3 + CALLA DELOBJA8 +NO_A11_3 + PULLP A9 + CLR A0 + CALLR SET_MESS_FLAGS + + DIE + +MOVE_BARS + PUSH A8 + MOVE *A8(OXVAL),A1,L + SUB A1,A0 + SRA 3,A0 + + CALLR MOVE_THIS_PART + MOVE A9,A8 + JRZ NO_A11_PART + CALLR MOVE_THIS_PART + MOVE A10,A8 + JRZ NO_A10_PART + CALLR MOVE_THIS_PART +NO_A10_PART + MOVE A11,A8 + JRZ NO_A11_PART + CALLR MOVE_THIS_PART +NO_A11_PART + PULL A8 + RETS + +MOVE_THIS_PART + MOVE *A8(OXVAL),A2,L + ADD A0,A2 + MOVE A2,*A8(OXVAL),L + RETS + +WHICH_BONUS_2 + .LONG X0X,X1X,X2X + .LONG X3X,X4X,X5X + .LONG X6X,X7X,X8X + .LONG X9X + +WHICH_BONUS_1 + .LONG X0X2,X1X2,X2X2 + .LONG X3X2,X4X2,X5X2 + .LONG X6X2,X7X2,X8X2 + .LONG X9X2 + +Z_FORWARD .EQU 1800H + + SUBR SHIFT_BARS_IN_Z + CLR A0 + MOVE A0,@LAST_FLIP +SHIFT_BARS_IN_Z_MOTION + MOVE @WORLDTLY,A0,L + MOVE @ZFLIP_POS_VAR,A1,L + CMP A1,A0 + JRLT CHECK_IF_WE_ALREADY_FLIPPED_BACK + + MOVE @LAST_FLIP,A0 + JRNZ YES_WE_DID + MOVK 1,A0 + MOVE A0,@LAST_FLIP + CALLR SHIFT_BARS_FORWARD + SLOOP 4,SHIFT_BARS_IN_Z_MOTION + +CHECK_IF_WE_ALREADY_FLIPPED_BACK + MOVE @LAST_FLIP,A0 + JRZ YES_WE_DID + CLR A0 + MOVE A0,@LAST_FLIP + CALLR SHIFT_BARS_BACK +YES_WE_DID + SLOOP 4,SHIFT_BARS_IN_Z_MOTION + +SHIFT_BARS_FORWARD + movi OBJLST,a8 + movi bak_z,A2 + movi name_z,A3 + movi Z_FORWARD,A4 + JRUC DONT_SHIFT_IT_FORWARD +STILL_MORE_TO_CHECK + MOVE *A8(OZPOS),A1 + CMP a2,A1 + JRLT DONT_SHIFT_IT_FORWARD + CMP a3,A1 + JRGT DONT_SHIFT_IT_FORWARD +SHIFT_IT_FORWARD + ADD a4,A1 + MOVE A1,*A8(OZPOS) +DONT_SHIFT_IT_FORWARD + MOVE *A8,A8,L + JRNZ STILL_MORE_TO_CHECK + RETS + +SHIFT_BARS_BACK + movi OBJLST,a8 + movi bak_z+Z_FORWARD,A2 + movi name_z+Z_FORWARD,A3 + movi Z_FORWARD,A4 + JRUC DONT_SHIFT_IT_BACK +STILL_MORE_TO_CHECK_B + MOVE *A8(OZPOS),A1 + CMP a2,A1 + JRLT DONT_SHIFT_IT_BACK + CMP a3,A1 + JRGT DONT_SHIFT_IT_BACK +SHIFT_IT_BACK + SUB a4,A1 + MOVE A1,*A8(OZPOS) +DONT_SHIFT_IT_BACK + MOVE *A8,A8,L + JRNZ STILL_MORE_TO_CHECK_B + RETS + +END_BUFF .equ 10 +END_POS .EQU 30 +END_YPOS .EQU 80 +TURM_OFF .EQU 4 + +WHICH_ROUND + .LONG FIRSTFAL,SECNDFAL,MATCHFAL + +CREATE_END_ROUND_TOP + SLL 5,A9 + ADDI WHICH_ROUND,A9 + MOVE *A9,A2,L + + CLR A1 + MOVE A1,*A13(PDATA+140),L + + MOVI [END_POS+150+TURM_OFF,0],A1 + MOVI [400+END_BUFF+150+TURM_OFF,0],A0 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A11,A11 + JRNZ WHICH_TEXT_SET + MOVI [400-END_POS-150,0],A1 + MOVI [0-END_BUFF-150,0],A0 +WHICH_TEXT_SET + MOVE A1,*A13(PDATA+100H),L + MOVI [END_YPOS,0],A1 + MOVI 1803H,A3 + MOVI CLSNEUT|TYPTEXT|SUBMES1,A5 + CLR A6 + CLR A7 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7 + MOVE A8,A9 + + MOVI [END_POS+TURM_OFF,0],A1 + MOVI [400+END_BUFF+TURM_OFF,0],A0 + MOVI MVEBAR_R,A2 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A11,A11 + JRNZ WHICH_BAR_SET + MOVI [400-END_POS,0],A1 + MOVI [0-END_BUFF,0],A0 + movi DMAWNZ|M_FLIPH|M_3D|M_SCRNREL,a4 ;DMA flags + MOVI MVEBAR_B,A2 +WHICH_BAR_SET + MOVE A1,*A13(PDATA+120H),L + MOVI [END_YPOS,0],A1 + MOVI 1800H,A3 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + CLR A0 + MOVE A0,*A13(PDATA+140H),L + JSRP ZIP_HIM_ON + DIE + +WHICH_WRESTLE_NAME + .LONG BIGHRT + .LONG BIGRAZ + .LONG BIGUND + .LONG BIGYOK + .LONG BIGSHN + .LONG BIGBAM + .LONG BIGDNK + .LONG 0 + .LONG BIGLEX + +CREATE_END_ROUND_BOT + MOVE *A10(WRESTLERNUM),A2 + SLL 5,A2 + ADDI WHICH_WRESTLE_NAME,A2 + MOVE *A2,A2,L + + MOVI [END_POS+150+TURM_OFF,0],A1 + MOVI [400+END_BUFF+150+TURM_OFF,0],A0 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A11,A11 + JRNZ ON_LEFT + MOVI [400-END_POS-150,0],A1 + MOVI [0-END_BUFF-150,0],A0 +ON_LEFT + MOVE A1,*A13(PDATA+100H),L + MOVI [END_YPOS+25,0],A1 + MOVI 1802H,A3 + MOVI CLSNEUT|TYPTEXT|SUBMES1,A5 + CLR A6 + CLR A7 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7 + movi WGSF_W_P1,b0 +; calla BEGINOBJ + calla BEGINOBJP + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7 + MOVE A8,A9 + + MOVI [END_POS+TURM_OFF,0],A1 + MOVI AWDNMPL_R,A2 + MOVI [400+END_BUFF+TURM_OFF,0],A0 + MOVE A11,A11 + JRNZ ON_LEFT2 + MOVI [400-END_POS,0],A1 + MOVI [0-END_BUFF,0],A0 + MOVI AWDNMPL_B,A2 + movi DMAWNZ|M_FLIPH|M_3D|M_SCRNREL,a4 ;DMA flags +ON_LEFT2 + MOVE A1,*A13(PDATA+120H),L + MOVE A1,*A13(PDATA+140H),L + MOVI [END_YPOS,0],A1 + DEC A3 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + + PUSH A8 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVI DIAGLGO_R,A2 + MOVE A11,A11 + JRNZ ON_LEFT3 + MOVI DIAGLGO_B,A2 +ON_LEFT3 + INC A3 + calla BEGINOBJ + MOVE A8,A10 + PULL A8 + JSRP ZIP_HIM_ON + DIE + +ZIP_HIM_ON + MOVI ZIP_SPEED,A3 +MOVE_END_ON + MOVE *A13(PDATA+140H),A0,L + JRZ NOTHING_IN_A10 + PUSH A8 + MOVE A10,A8 + CALLR MOVE_THIS + PULL A8 +NOTHING_IN_A10 + MOVE *A13(PDATA+100H),A0,L + JRZ NOTHING_IN_A9 + PUSH A8 + MOVE A9,A8 + CALLR MOVE_THIS + PULL A8 +NOTHING_IN_A9 + MOVE *A13(PDATA+120H),A0,L + CALLR MOVE_THIS + PUSHP A3 + SLEEPK 1 + PULLP A3 + DSJS A3,MOVE_END_ON + RETP + +MOVE_THIS + MOVE *A8(OXVAL),A1,L + SUB A1,A0 + SRA 3,A0 + JRUC MOVE_THIS_PART + + +END_IPOS1 .EQU 332 +END_IPOS2 .EQU 292 +END_IYPOS .EQU 54 + +CREATE_END_ROUND_ICON + + .ref wrestler_count_proc + .ref wrestler_count + + move @wrestler_count_proc,a0,L ; Does the counter proc exist ? + jrz #no_wc_proc ; br = no + +; move @wrestler_count,a14 ; Current count == 0 ? +; jrz #no_wc_proc ; br = yes +; dec a14 ; Decrement it + clr a14 + move a14,@wrestler_count ; Write it back + + movk 1,a14 ; Make counter proc wakeup on next tick + move a14,*a0(PTIME) +#no_wc_proc + + + + MOVI [END_IPOS1+30,0],B4 + MOVI [400-END_IPOS1-30,0],B5 + MOVI [END_IPOS1,0],B6 + MOVI [400-END_IPOS1,0],B7 + + MOVE @p1rounds,a1 + MOVE A11,A11 + JRZ GOT_RIGHT_SIDE + MOVE @p2rounds,a1 +GOT_RIGHT_SIDE + DEC A1 + JRZ DO_THE_RIGHT_ROUND + + MOVI [END_IPOS2+30,0],B4 + MOVI [400-END_IPOS2-30,0],B5 + MOVI [END_IPOS2,0],B6 + MOVI [400-END_IPOS2,0],B7 +DO_THE_RIGHT_ROUND + + CLR A1 + MOVE A1,*A13(PDATA+140),L + + MOVI WWFICON10,A2 + MOVE B4,A1 + MOVI [400+END_BUFF+150,0],A0 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A11,A11 + JRNZ WHICH_ICON_SET + MOVE B5,A1 + MOVI [0-END_BUFF-150,0],A0 +WHICH_ICON_SET + MOVE A1,*A13(PDATA+100H),L + MOVI [END_IYPOS,0],A1 + MOVI 1800h+200,A3 + MOVE @WORLDTLY,A5,L + MOVE @ZFLIP_POS_VAR,A6,L + CMP A6,A5 + JRGE IN_FORWARD_POS + MOVI 200,A3 +IN_FORWARD_POS + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi TYPWWFICON,a5 + CLR A6 + CLR A7 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A9 + MOVE A8,A9 + + MOVE B6,A1 + MOVI [400+END_BUFF,0],A0 + MOVI MVEBAR_R,A2 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + MOVE A11,A11 + JRNZ WHICH_BAR2_SET + MOVE B7,A1 + MOVI [0-END_BUFF,0],A0 + movi DMAWNZ|M_FLIPH|M_3D|M_SCRNREL,a4 ;DMA flags + MOVI MVEBAR_B,A2 +WHICH_BAR2_SET + MOVE A1,*A13(PDATA+120H),L + MOVE A0,*A13(PDATA+160H),L + MOVI [END_IYPOS,0],A1 + MOVI 1800h+199,A3 + MOVE @WORLDTLY,A5,L + MOVE @ZFLIP_POS_VAR,A6,L + CMP A6,A5 + JRGE IN_FORWARD_POS2 + MOVI 199,A3 +IN_FORWARD_POS2 + MOVI CLSNEUT|TYPTEXT|SUBMES1,A5 + CLR A6 + CLR A7 + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7 + calla BEGINOBJ + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7 + + JSRP ZIP_HIM_ON + SLEEP 20 + MOVI ICON_PID,A1 + ADD A11,A1 + CALLA FIND_ANY_OTHERS + MOVI 4DH,A0 + CALLA triple_sound + MOVI MAKE_ICON_GLOW,A7 + CALLA GETPRC + MOVE A9,A11 + CLR A9 + MOVE A9,*A13(PDATA+100),L + MOVE *A13(PDATA+160H),*A13(PDATA+120H),L + JSRP ZIP_HIM_ON + + MOVE A11,A8 + + CREATE FLASH_PID,MAYBE_A_SPARKLE + DIE + +MAKE_ICON_GLOW + MOVE A9,A8 + MOVI WWF_ICON_ANIM,A1 + CALLA setup_back_anim + JSRP ANIM_CROWD + SLEEP TSEC*10 + JRUC MAKE_ICON_GLOW + +FIND_ANY_OTHERS + PUSH A1 + MOVE A1,A0 + MOVI -1,A1 + CALLA EXISTP + JRZ NO_MORE + MOVK 1,A1 + MOVE A1,*A0(PTIME) +NO_MORE + PULL A1 + RETS + +CANI_END equ 2 + 8000H + +WWF_ICON_ANIM + WL 2,WWFICON01 + WL 2,WWFICON02 + WL 2,WWFICON03 + WL 2,WWFICON04 + WL 2,WWFICON05 + WL 2,WWFICON06 + WL 2,WWFICON07 + WL 2,WWFICON08 + WL 2,WWFICON09 + WL 2,WWFICON10 + .WORD CANI_END + +MAYBE_A_SPARKLE + MOVI 120,A0 + CALLA RNDRNG0 + ADDI 50,A0 + CALLA PRCSLP + CREATE FLASH_PID,ICON_SPARKLE + JRUC MAYBE_A_SPARKLE + + SUBRP ICON_SPARKLE + + move @reduce_bog,a14 + jrnz #die + + MOVK 6,A0 + CALLA RNDRNG0 + SLL 5,A0 + ADDI WHERE_SPARKLE,A0 + MOVE A0,A2 + + MOVE *A8(OXPOS),A0 + MOVE *A2,A14 + ADD A14,A0 + + MOVE *A8(OYPOS),A1 + MOVE *A2(10H),A14 + ADD A14,A1 + + SLL 16,A0 + SLL 16,A1 + MOVI SPRKLA01,A2 + MOVE *A8(OZVAL),A3,L + INC A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi TYPWWFICON,a5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + + MOVK 2,A0 + CALLA RNDRNG0 + SLL 5,A0 + ADDI WHICH_SPARKLE,A0 + MOVE *A0,A1,L + calla setup_back_anim + JSRP ANIM_CROWD + CALLA DELOBJA8 +#die DIE + + +WHICH_SPARKLE + .LONG SPARKLE_1 + .LONG SPARKLE_2 + .LONG SPARKLE_3 + .LONG BSPARKLE1 + .LONG BSPARKLE2 + + +WHERE_SPARKLE + .LONG [-8,-14] + .LONG [8,-9] + .LONG [-1,8] + .LONG [0,15] + .LONG [-9,19] + .LONG [-10,2] + .LONG [-1,-6] + +SPARKLE_1 + WL 2,SPRKLA01 + WL 2,SPRKLA02 + WL 2,SPRKLA03 + WL 2,SPRKLA04 + WL 2,SPRKLA05 + WL 2,SPRKLA06 + WL 2,SPRKLA07 + WL 2,SPRKLA08 + WL 2,SPRKLA09 + WL 2,SPRKLA10 + WL 2,SPRKLA11 + WL 2,SPRKLA12 + WL 2,SPRKLA13 + .WORD CANI_END + +SPARKLE_2 + WL 2,SPRKLB01 + WL 2,SPRKLB02 + WL 2,SPRKLB03 + WL 2,SPRKLB04 + WL 2,SPRKLB05 + WL 2,SPRKLB06 + WL 2,SPRKLB07 + WL 2,SPRKLB08 + WL 2,SPRKLB09 + WL 2,SPRKLB10 + WL 2,SPRKLB11 + WL 2,SPRKLB12 + WL 2,SPRKLB13 + .WORD CANI_END + +SPARKLE_3 + WL 2,SPRKLC01 + WL 2,SPRKLC02 + WL 2,SPRKLC03 + WL 2,SPRKLC04 + WL 2,SPRKLC05 + WL 2,SPRKLC06 + WL 2,SPRKLC07 + WL 2,SPRKLC08 + WL 2,SPRKLC09 + WL 2,SPRKLC10 + WL 2,SPRKLC11 + WL 2,SPRKLC12 + WL 2,SPRKLC13 + .WORD CANI_END + +BSPARKLE1 + WL 2,BSPRKA01 + WL 2,BSPRKA02 + WL 2,BSPRKA03 + WL 2,BSPRKA04 + WL 2,BSPRKA05 + WL 2,BSPRKA06 + WL 2,BSPRKA07 + WL 2,BSPRKA08 + WL 2,BSPRKA09 + WL 2,BSPRKA10 + WL 2,BSPRKA11 + WL 2,BSPRKA12 + WL 2,BSPRKA13 + WL 2,BSPRKA14 + WL 2,BSPRKA15 + .WORD CANI_END + +BSPARKLE2 + WL 2,BSPRKB01 + WL 2,BSPRKB02 + WL 2,BSPRKB03 + WL 2,BSPRKB04 + WL 2,BSPRKB05 + WL 2,BSPRKB06 + WL 2,BSPRKB07 + WL 2,BSPRKB08 + WL 2,BSPRKB09 + WL 2,BSPRKB10 + WL 2,BSPRKB11 + WL 2,BSPRKB12 + WL 2,BSPRKB13 + WL 2,BSPRKB14 + WL 2,BSPRKB15 + .WORD CANI_END + +YSPEED .EQU [4,0] + +CREATE_PERFECT + + movi CYCPID,a0 + CLR A1 + NOT A1 + CALLA EXISTP + JRNZ NO_NEED_FOR_PERFECT + + MOVI 0c4h,A0 + CALLA triple_sound + + MOVI [200,0],A0 + MOVI [300,0],A1 + MOVI PERFCT09,A2 + MOVI 1799H,A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi TYPPERFECT,a5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + MOVI YSPEED,A0 + NEG A0 + MOVE A0,*A8(OYVEL),L + + PUSHP A10 + MOVI PERFECT_DISSOLVE_ANIM,A9 + MOVI 12,A11 + MOVI PERFCT09,A10 + CREATE FX_PID,COPY_OBJ_AND_MOVE_UP + + PULLP A10 + + +#wait_loop + SLEEPK 1 + move *a8(OYPOS),a0 + cmpi 100,a0 + jrge #wait_loop + clr a0 + move a0,*a8(OYVEL),L + movi FX_PID,a0 + clr a1 + not a1 + calla KILALL + + MOVE *A10(PLYRNUM),A10 + INC A10 + move @PERFECT_WINS,A0 + and a10,A0 + JRZ NOT_A_DOUBLE + CREATE ADD_INIT_PID,CREATE_DOUBLE + +NOT_A_DOUBLE + + move @PERFECT_WINS,A0 + or a10,A0 + MOVE A0,@PERFECT_WINS + + MOVI PERFECT_FLASH_ANIM,A1 + calla setup_back_anim + JSRP ANIM_CROWD + + MOVI 0A8H,A0 + calla triple_sound + + MOVI WHERE_PERFECT_SPARKLE,A10 + PUSH A8 + MOVE *A8(OXPOS),A9 + MOVE *A8(OYVAL),A8,L + MOVX A9,A8 + MOVK 2,A9 + CREATE FLASH_PID,SPRINKLE_GLINTS + PULL A8 + MOVI 110,A9 + JRUC LOOK_FOR_IT +NO_NEED_FOR_PERFECT + DIE + +CREATE_DOUBLE + MOVI [200,0],A0 + MOVI [80,0],A1 + MOVI DOUBLE09,A2 + MOVI 1799H,A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi TYPPERFECT,a5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + + MOVI DOUBLE_FLASH_ANIM,A1 + calla setup_back_anim + JSRP ANIM_CROWD + MOVI 110,A9 + JRUC LOOK_FOR_IT + DIE + +COPY_OBJ_AND_MOVE_UP + PUSHP A10 + MOVE A8,A10 +COPY_OBJ_AND_MOVE_UP2 + MOVE *A10(OYVAL),A1,L + MOVI [200,0],A0 + PULLP A2 + PUSHP A2 + MOVI 1799H,A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi TYPPERFECT,a5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + CREATE OVRHED_PID,KILL_THEM_EVENTUALLY_EACH + SLEEP 3 + JRUC COPY_OBJ_AND_MOVE_UP2 + +KILL_THEM_EVENTUALLY_EACH + MOVK 6,A11 + MOVE A9,A9 + JRZ NORMAL_KILL +MOVE_IT_BACK + MOVE *A8(OZPOS),A1 + DEC A1 + MOVE A1,*A8(OZPOS) + SLEEP 1 + DSJS A11,MOVE_IT_BACK + MOVE A9,A1 + calla setup_back_anim + JSRP ANIM_CROWD + CALLA DELOBJA8 + DIE + +NORMAL_KILL + MOVE *A8(OZPOS),A1 + DEC A1 + MOVE A1,*A8(OZPOS) + SLEEP 1 + DSJS A11,NORMAL_KILL + CALLA DELOBJA8 + DIE + +DOUBLE_FLASH_ANIM + WL 2,DOUBLE01 + WL 2,DOUBLE02 + WL 2,DOUBLE03 + WL 2,DOUBLE04 + WL 2,DOUBLE05 + WL 2,DOUBLE06 + WL 2,DOUBLE07 + WL 2,DOUBLE08 + WL 2,DOUBLE09 + .WORD CANI_END + +PERFECT_FLASH_ANIM + WL 2,PERFCT01 + WL 2,PERFCT02 + WL 2,PERFCT03 + WL 2,PERFCT04 + WL 2,PERFCT05 + WL 2,PERFCT06 + WL 2,PERFCT07 + WL 2,PERFCT08 + WL 2,PERFCT09 + .WORD CANI_END + +PERFECT_DISSOLVE_ANIM + WL 2,PERFDS01 + WL 2,PERFDS02 + WL 2,PERFDS03 + WL 2,PERFDS04 + WL 2,PERFDS05 + WL 2,PERFDS06 + WL 2,PERFDS07 + WL 2,PERFDS08 + .WORD CANI_END + + SUBR RANDOM_SPARKLE + + SLEEP 20 + MOVI FLASH_PID,A0 + MOVI -1,A1 + CALLA EXISTP + JRNZ RANDOM_SPARKLE + + MOVI 39,A0 + CALLA RNDRNG0 + MOVE A0,A9 + MOVI [102,7],A8 + MOVI WHERE_WRESTLMANIA_SPARKLES,A10 + MOVE A9,A11 + SLL 5,A11 + ADD A10,A11 + MOVK 4,A9 + CREATE FLASH_PID,START_SPARKLE + SLOOP 30,RANDOM_SPARKLE + + SUBR SPRINKLE_GLINTS + CLR A6 + PUSHP A6 +NEXT_SPARKLE + PULLP A6 + MOVE A6,A11 + SLL 5,A11 + ADD A10,A11 + MOVE *A11,A1,L + INC A1 + JRZ NO_MORE_SPARKLE + CREATE FLASH_PID,START_SPARKLE + INC A6 + PUSHP A6 + SLOOP 5,NEXT_SPARKLE +NO_MORE_SPARKLE + DIE + +START_SPARKLE + MOVE A8,A0 + MOVE *A11,A14 + ADD A14,A0 + MOVE A8,A1 + SRL 16,A1 + MOVE *A11(10H),A14 + ADD A14,A1 + + SLL 16,A0 + SLL 16,A1 + MOVI SPRKLA01,A2 + MOVI 1800H,A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + MOVE A9,A0 + CALLA RNDRNG0 + SLL 5,A0 + ADDI WHICH_SPARKLE,A0 + MOVE *A0,A1,L + calla setup_back_anim + JSRP ANIM_CROWD + CALLA DELOBJA8 + DIE + +WHERE_PERFECT_SPARKLE + .LONG [-6,-71] + .LONG [0,-64] + .LONG [-7,-49] + .LONG [5,-42] + .LONG [-2,-35] + .LONG [5,-31] + .LONG [-7,-18] + .LONG [5,-10] + .LONG [-2,-1] + .LONG [-7,9] + .LONG [5,17] + .LONG [-7,31] + .LONG [2,39] + .LONG [-7,49] + .LONG [6,59] + .LONG [-2,69] + .LONG [-7,74] + .LONG -1 + + SUBR WHERE_WRESTLMANIA_SPARKLES + .LONG [5,8] + .LONG [29,22] + .LONG [4,43] + .LONG [60,50] + .LONG [4,65] + .LONG [28,76] + .LONG [56,80] + .LONG [15,87] + .LONG [33,94] + .LONG [50,105] + .LONG [32,110] + .LONG [4,114] + .LONG [64,121] + .LONG [56,125] + .LONG [28,129] + .LONG [15,158] + .LONG [56,159] + .LONG [4,177] + .LONG [33,186] + .LONG [30,200] + .LONG [15,203] + .LONG [35,220] + .LONG [4,225] + .LONG [40,236] + .LONG [4,257] + .LONG [13,260] + .LONG [4,271] + .LONG [61,273] + .LONG [56,277] + .LONG [15,286] + .LONG [33,291] + .LONG [15,309] + .LONG [37,320] + .LONG [56,334] + .LONG [33,338] + .LONG [4,345] + .LONG [32,359] + .LONG [4,370] + .LONG [56,373] + .LONG [17,383] + .LONG -1 + +****************************************************************************** + + SUBR CREATE_TIMEOUT + + MOVI 0c4h,A0 + CALLA triple_sound + + MOVI [200,0],A0 + MOVI [300,0],A1 + MOVI TIMEEX09,A2 + MOVI 1799H,A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + + MOVI YSPEED,A0 + NEG A0 + MOVE A0,*A8(OYVEL),L + + MOVI TIMEOUT_DISSOLVE_ANIM,A9 + MOVI 12,A11 + MOVI TIMEEX09,A10 + CREATE FX_PID,COPY_OBJ_AND_MOVE_UP + CREATE FX_PID,HAVE_TO_MOVE_IT_TO + + SLEEP 50 + CLR A0 + MOVE A0,*A8(OYVEL),L + MOVI FX_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + + SLEEP 10 + + MOVK 4,A4 +LOOP_TIMEOUT + PUSHP A4 + MOVI TIMEOUT_FLASH_ANIM,A1 + calla setup_back_anim + JSRP ANIM_CROWD + + MOVE @match_time,A0,L + CMPI 90009H,A0 + JREQ JUMP_OUT + PULLP A4 + DSJS A4,LOOP_TIMEOUT + + MOVI 110-(3*18),A9 + JRUC LOOK_FOR_IT + +TIMEOUT_FLASH_ANIM + WL 2,TIMEEX01 + WL 2,TIMEEX02 + WL 2,TIMEEX03 + WL 2,TIMEEX04 + WL 2,TIMEEX05 + WL 2,TIMEEX06 + WL 2,TIMEEX07 + WL 2,TIMEEX08 + WL 2,TIMEEX09 + .WORD CANI_END + +TIMEOUT_DISSOLVE_ANIM + WL 2,TIMEDS01 + WL 2,TIMEDS02 + WL 2,TIMEDS03 + WL 2,TIMEDS04 + WL 2,TIMEDS05 + WL 2,TIMEDS06 + WL 2,TIMEDS07 + WL 2,TIMEDS08 + .WORD CANI_END + + SUBR CREATE_DISQUAL + + MOVI 0c4h,A0 + CALLA triple_sound + + MOVI [200,0],A0 + MOVI [300,0],A1 + MOVI DISQUA09,A2 + MOVI 1799H,A3 + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + MOVI YSPEED,A0 + NEG A0 + MOVE A0,*A8(OYVEL),L + + MOVI DISQUAL_DISSOLVE_ANIM,A9 + MOVI 12,A11 + MOVI DISQUA09,A10 + CREATE FX_PID,COPY_OBJ_AND_MOVE_UP + + SLEEP 50 + CLR A0 + MOVE A0,*A8(OYVEL),L + MOVI FX_PID,A0 + CLR A1 + NOT A1 + CALLA KILALL + + MOVK 4,A4 +LOOP_DISQUAL + PUSHP A4 + + MOVI DISQUAL_FLASH_ANIM,A1 + calla setup_back_anim + JSRP ANIM_CROWD + + MOVE @match_time,A0,L + CMPI 90009H,A0 + JREQ JUMP_OUT + PULLP A4 + DSJS A4,LOOP_DISQUAL + + MOVI 110-(3*18),A9 +LOOK_FOR_IT + SLEEP 2 + MOVE @match_time,A0,L + CMPI 90009H,A0 + JREQ JUMP_OUT + DSJS A9,LOOK_FOR_IT +JUMP_OUT + CALLA DELOBJA8 + DIE + +HAVE_TO_MOVE_IT_TO + MOVE *A8(OYVEL),A1,L + MOVE *A8(OYVAL),A2,L + ADD A1,A2 + MOVE A2,*A8(OYVAL),L + SLOOP 1,HAVE_TO_MOVE_IT_TO + +DISQUAL_FLASH_ANIM + WL 2,DISQUA01 + WL 2,DISQUA02 + WL 2,DISQUA03 + WL 2,DISQUA04 + WL 2,DISQUA05 + WL 2,DISQUA06 + WL 2,DISQUA07 + WL 2,DISQUA08 + WL 2,DISQUA09 + .WORD CANI_END + +DISQUAL_DISSOLVE_ANIM + WL 2,DISQDS01 + WL 2,DISQDS02 + WL 2,DISQDS03 + WL 2,DISQDS04 + WL 2,DISQDS05 + WL 2,DISQDS06 + WL 2,DISQDS07 + WL 2,DISQDS08 + .WORD CANI_END + + SUBR PIN_FLASH_ANIM + + WL 2,PINHIM01 + WL 2,PINHIM02 + WL 2,PINHIM03 + WL 2,PINHIM04 + WL 2,PINHIM05 + WL 2,PINHIM06 + WL 2,PINHIM07 + WL 2,PINHIM08 + WL 20,PINHIM09 + .WORD CANI_END + +*********** +* +* Old: +* returns lowest PLYRNUM on winning side (0 or 1 for plyrs, 2 for drones) +* in a3. increments p1rounds and p2rounds too. (actually, it's okay to +* return a 3 or a 4 if we want. The code that calls this will work fine. +* If this is the final battle, we add 2 instead of 1 to pXrounds. +* +* New: +* returns lowest PLYRNUM on winning side, unless there was a pin, in which +* case it returns the first wrestler on the winning side with his DID_PIN +* flag set. +* + + SUBRP set_winner + + ;first, establish cause of death. Choices are time running out + ; and loss of all health. + move @match_time,a14,L + jrz #tmout + + ;time didn't run out, so either someone was pinned, which should + ; only happen if everyone on his team is dead, or the last living + ; member of a team died by ring-out. Search through the wrestlers + ; and award victory to the first live one we find. + movi NUM_WRES,a0 + movi process_ptrs,a1 + clr a3 + +#loop0 move *a1+,a2,L + jrz #nxt0 ;skip inactive + + move *a2(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #nxt0 ;skip dead + + ;got a live one. if he pinned, use him. if not, save his pointer + ; in case we find no pinner, but keep looking + move *a2(STATUS_FLAGS),a14 + btst B_DID_PIN,a14 + jrnz #a2wins + + move a2,a3 + +#nxt0 dsj a0,#loop0 + + ;okay, nobody pinned. did we find any live ones at all? + move a3,a2 + jrnz #a2wins ;yes, we saved a non-pinner. + + ;trouble. we didn't find any live wrestlers, and there definitely + ; should have been one. This is really bad and should never happen, + ; but just in case it does, give the win to the first valid wrestler + ; we can find. + .if DEBUG + LOCKUP + .endif +#bogus movi NUM_WRES,a0 + movi process_ptrs,a1 + +#loop1 move *a1+,a2,L + jrz #nxt1 ;skip inactive + + ;got one + jruc #a2wins + +#nxt1 dsjs a0,#loop1 + + ;good heavens! no actives found at all! no way is this ever gonna + ; happen. fuck it. quit or something. + jruc #no_hits + +#a2wins ;a2 is process of winner + ;increment pXrounds + movi p1rounds,a0 + movi 01h,a1 ;match_winner value for p1 side winning + move *a2(PLYR_SIDE),a4 + jrz #rok + movi p2rounds,a0 + movi 02h,a1 ;match_winner value for p1 side winning +#rok move *a0,a4 + inc a4 + + ;if this is the final match (or royal rumble), increment it again. + inc a4 ;increment, then dec if we shouldn't have. + calla is_8_on_1 + jrc #a4ok + move @royal_rumble,a14 + jrnz #a4ok + dec a4 +#a4ok move a4,*a0 + + ;if pXwins == 2, set match_winner + cmpi 2,a4 + jrne #no_mw + move a1,@match_winner + +#no_mw move *a2(PLYRNUM),a3 + rets + +#tmout ;clock ran out on the round. Award victory to the team with the + ; highest average life points remaining. In case of a tie, winner + ; is the last team to land a hit. If there have been no hits, + ; we'll wanna drop out and go straight to game over, which I'll + ; deal with later, probably by returning a -1 and letting the + ; caller deal with it. + + ;If this was an 8-on-1 or 8-on-2 match, the CPU wins when time + ; runs out. + move @process_ptrs+40h,a2,L ;first drone + calla is_8_on_1 + jrc #a2wins + move @royal_rumble,a14 + jrnz #a2wins + + ;reggies: + clr a4 ;team 1 count + clr a5 ;team 1 total + clr a6 ;team 2 count + clr a7 ;team 2 total + + movi NUM_WRES,a9 + movi process_ptrs,a8 + +#loop2 move *a8+,a10,L + jrz #nxt2 ;skip inactive + + move *a10(PLYRNUM),a1 + calla get_health + move *a10(PLYR_SIDE),a14 + jrnz #t2 + + ;on team 1 + inc a4 + add a0,a5 + jruc #nxt2 + +#t2 ;on team 2 + inc a6 + add a0,a7 + +#nxt2 dsj a9,#loop2 + + ;compute the averages (we could check for the very likely case of + ; the divisor being one, but there's no real need, as this is + ; hardly a performance-critical event.) + divu a4,a5 + divu a6,a7 + + cmp a5,a7 + jrlt #t1w + jrgt #t2w + +#tie ;uh-oh. Tie. Find wrestler with most recent LAST_HIT_TIME and + ; award the match to his team. If everyone's LAST_HIT_TIME's are + ; zero, nobody has landed a blow, so just quit to game over. + ; LAST_HIT_TIME holds all 32 bits of PCNT, so we don't need to worry + ; about wraparound. + + movi NUM_WRES,a9 + movi process_ptrs,a8 + clr a0 ;current high LAST_HIT_TIME + clr a1 ;team with current high LAST_HIT_TIME + +#loop4 move *a8+,a10,L + jrz #nxt4 ;skip inactive + + move *a10(LAST_HIT_TIME),a14,L + cmp a0,a14 + jrle #nxt4 + + ;new champ. + move a14,a0 + move *a10(PLYR_SIDE),a1 + +#nxt4 dsj a9,#loop4 + + TEST a0 + jrz #no_hits + TEST a1 + jrnz #t2w + ;fall through to #t1w + +#t1w ;team 1 wins + clr a4 + jruc #fw + +#t2w ;team 2 wins + movk 1,a4 + +#fw ;award win to first live wrestler with PLYR_SIDE equal to a4 + + movk NUM_WRES,a0 + movi process_ptrs,a1 + +#loop3 move *a1+,a2,L + jrz #nxt3 ;skip inactive + + move *a2(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #nxt3 ;skip dead + + move *a2(PLYR_SIDE),a14 + cmp a14,a4 + jrne #nxt3 ;skip losers + + ;got one + move *a2(PLYRNUM),a3 + jruc #a2wins + +#nxt3 dsj a0,#loop3 + + ;good heavens. we didn't find ANYONE from that team. This is + ; a major error that should never happen. Deal with it as in + ; the 'no live wrestlers found' case above. + .if DEBUG + LOCKUP + .endif + jruc #bogus + +#no_hits + ;battle ended in a tie with neither side landing a blow. drop + ; out to game over. + movi -1,a2 + rets + +#***************************************************************************** +* +* Clears a combo meter. +* >a13 = process of victim + + SUBR clear_combo_meter + + move *a13(PLYR_SIDE),a1 + move *a13(PLYRNUM),a11 + jruc zero_combo_meter + +#***************************************************************************** +* +* Sets a combo meter to half-size. +* >a13 = process of victim + + SUBR halve_combo_meter + + move *a13(PLYR_SIDE),a1 + move *a13(PLYRNUM),a11 + movi MD_SIZE,a9 + mpyu a1,a9 + addi meter_data,a9 + move *a9(MD_COMBO),a8,L + move a11,a5 + X64 a5 ;x by PLT_SIZE + addi life_data,a5 + movk 10,a2 + jruc draw_combo_meter + +#***************************************************************************** +* +* Clears a life bar. +* >a13 = process of victim + + SUBR clear_lifebar + + move *a13(PLYRNUM),a0 + X64 a0 + addi life_data,a0 + clr a14 + move a14,*a0(PLT_LIFE) + + move *a13(PLYR_SIDE),a0 + callr update_meter + + rets + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/LIFEBAR.H b/LIFEBAR.H new file mode 100755 index 0000000..51f6e47 --- /dev/null +++ b/LIFEBAR.H @@ -0,0 +1,29 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 25 Apr 94 +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "lifebar.h" + .title "meters, names, messages, and scores" + .width 132 + .option b,d,l,t + .mnolist + + .ref adjust_health + .ref get_health + + +* INCLUDE AFTER GAME.EQU + +****************************************************************************** +GETLIFE .macro + move *a13(PLYRNUM),a1 + calla get_health + .endm +****************************************************************************** + + \ No newline at end of file diff --git a/LINK.EQU b/LINK.EQU new file mode 100755 index 0000000..f67a38c --- /dev/null +++ b/LINK.EQU @@ -0,0 +1,361 @@ + .INCLUDE "AUDIT.EQU" ;AUDIT NAMES! + +* +CHUTES EQU 5 ;MAXIMUM COIN CHUTES IN GAME. +* +*MISC BUTTON EQUATES + .if TUNIT ; | | | +UP_BITS equ 00000000000000000000000100000001b +DOWN_BITS equ 00000000000000000000001000000010b +BUTTONS equ 00000000000000001111000011110000b +ACTION_BITS equ 00000000000000000111000001110000b +START_BITS equ 00000110001001000000000000000000b +DIAG_BITS EQU 00000000000100000000000000000000B + .else +UP_BITS equ 00000001000000000000000100000001b +DOWN_BITS equ 00000010000000000000001000000010b +BUTTONS equ 010110000101001000111000001110000b +ACTION_BITS equ 010110000000000000111000001110000b +START_BITS equ 0101001000000000000000000b + .endif + +***************************** +***************************** GET OFFICIAL PID FROM GEORGE ****************** +MENU_PID EQU 0AC1H ;GET_MENU SLAVE +MDUN_PID EQU 0AC2H ;MENU SLAVE CHANGES TO THIS WHEN DONE +OPMES_PID EQU 0AC3H ;OPERATOR ENTER INITIALS +***************************** GET OFFICIAL PID FROM GEORGE ****************** +***************************** +LONG_SIZE EQU 32 +WORD_SIZE EQU 16 +BYTE_SIZE EQU 8 + +C_LONG_SIZE EQU 64 +C_WORD_SIZE EQU 32 +C_BYTE_SIZE EQU 16 + +BYTE_MASK EQU 0FFH +WORD_MASK EQU 0FFFFH + +SX_MASK EQU 0FFFFH +SY_MASK EQU 0FFFF0000H + +************************************************************************** +* * +* ASCII STUFF * +* * +************************************************************************** +SPACE EQU 20H +EX_PT EQU 21H +LET_0 EQU 30H +LET_A EQU 41H +LET_Z EQU 5AH +UNDERSCORE EQU 5FH +FONT_SPACE EQU 7EH +FONT_RUB EQU FONT_SPACE+1 +FONT_END EQU FONT_RUB+1 +FONT_RQUOTE EQU FONT_END+1 +FONT_EPOUND equ FONT_RQUOTE+1 +FONT_CR equ FONT_EPOUND+1 +ASCII_COMMA EQU 2CH +RIGHT_PAREN EQU 29H +ASCII_DQ EQU 22H + +************************************************************************** +* * +* SCREEN STUFF * +* * +************************************************************************** +* +SCREEN_X_UNIT EQU 8 ;THESE ARE FOR PACKED LINEAR ADDRESS +SCREEN_Y_UNIT EQU 1000H ;FORMAT +* +STRUCT_X_UNIT EQU 1000H ;X UNIT IN SPR DATA STRUCTURE +STRUCT_Y_UNIT EQU 1000H ;Y UNIT IN SPR DATA STRUCTURE +* +TABLE_UNIT EQU 10000H ;16 BIT FRACTION IN HSTD COORDINATES +* +EVEN_X_MASK EQU 0FF8H ;X MASK TO EVEN PIXEL +X_MASK EQU 0FF8H ;MASK TO HOLD JUST X +Y_MASK EQU 1FF000H ;MASK TO HOLD JUST Y +* +Y_MAX EQU 256 +SCREEN_PITCH EQU 400 + +************************************************************************** +* * +* COLOR STUFF * +* * +************************************************************************** + + + +ROBO_GREY EQU 0101H ;[0E0H-223,0E0H-223] +ROBO_WHITE EQU 0202H ;[0E1H-223,0E1H-223] +ROBO_RED EQU 0303H ;[0E2H-223,0E2H-223] +ROBO_ORANGE EQU 0404H ;[0E3H-223,0E3H-223] +ROBO_YELLOW EQU 0505H ;[0E4H-223,0E4H-223] +ROBO_GREEN EQU 0606H ;[0E5H-223,0E5H-223] +ROBO_BLUE EQU 0707H ;[0E6H-223,0E6H-223] +ROBO_LF EQU 03E3EH +ROBO_CYAN EQU 0E0EH ;[0EDH-223,0EDH-223] +ROBO_DECAY EQU 03D3DH +ROBO_RGOLD EQU 0A0AH ;[0E9H-223,0E9H-223] +ROBO_LASER EQU 03E3EH +ROBO_LASER2 EQU 03F3FH +ROBO_BLUWH EQU 0C0CH ;[0EBH-223,0EBH-223] +ROBO_PINK EQU 0303H ;[0E2H-223,0E2H-223] +ROBO_SKY EQU 0D0DH ;[0ECH-223,0ECH-223] ;LAST COLOR IN ROBO IS "SKY" COLOR +ROBO_PURPLE EQU ROBO_SKY ;PURPLE FOR TEST MODE +ROBO_BLACK EQU 1414H ;BLACK AS COAL + +COLOR_GREY EQU ROBO_GREY +COLOR_WHITE EQU ROBO_WHITE +COLOR_RED EQU ROBO_RED +COLOR_ORANGE EQU ROBO_ORANGE +COLOR_YELLOW EQU ROBO_YELLOW +COLOR_GREEN EQU ROBO_GREEN +COLOR_BLUE EQU ROBO_BLUE +COLOR_LF EQU ROBO_LF +COLOR_CYAN EQU ROBO_CYAN +COLOR_DECAY EQU ROBO_DECAY +COLOR_PURPLE EQU ROBO_PURPLE +COLOR_BLACK EQU ROBO_BLACK +COLOR_BPR EQU 3C3CH +COLOR_RGB EQU 3D3DH + +LOG_PAL_SIZE EQU 12 ;SHIFT 12 BITS TO TURN NUMBER INTO OFFSET +* ;IN PALETTE MEMORY +* +MAX_PAL_MASK EQU 3FH ;THIS IS MASK FOR NUMBER OF PALETTES. +* +* +ALL_BLUE equ 1fh +ALL_GREEN equ 3e0h +ALL_RED equ 7c00h +ALL_PURPLE EQU ALL_RED+ALL_BLUE +LIGHT_PURPLE EQU 701CH +* +ONE_BLUE EQU 1 +ONE_GREEN EQU 20H +ONE_RED EQU 400H +* +THIRD_GREEN EQU 140H ;1/3TH GREEN ON +THIRD_RED EQU 2800H ;1/3 RED ON + +************************************************************************** +* +* AUDIT STRUCTURE +* +************************************************************************** +AUD_DATA EQU 0 ;THE COUNTER IS 4 BYTES STARTING AT ZERO +AUD_CKSUM EQU AUD_DATA+(4*C_BYTE_SIZE) ;CHECKSUM = 2 BYTES +AUD_SIZE EQU AUD_CKSUM+C_WORD_SIZE +AUD_BYTES_TO_CHECK EQU (AUD_SIZE/C_BYTE_SIZE)-2 ;# TO ADD FOR CHECKSUM + +N_AUDITS EQU 110 + + .IF (LAST_AUDIT+1)>N_AUDITS + XXX NOT ENOUGH RAM ALLOCATED FOR AUDITS! + .ENDIF + +************************************************************************** +* +* ADJUSTMENTS +* +************************************************************************** +ADJ_SIZE EQU C_LONG_SIZE +N_ADJUSTS EQU 35 ;# OF ADJUSTS + + .IF (LAST_ADJUST+1)>N_ADJUSTS + XXX NOT ENOUGH RAM ALLOCATED FOR ADJUSTMENTS! + .ENDIF + +************************************************************************** +* CMOS STUFF FOR HSTD +************************************************************************** +* High Score table (CMOS) entry data structure + +NUM_INITS EQU 5 ;INITIALS IN EACH ENTRY..THIS MUST BE ODD +* +HS_SCORE EQU 0 ;LONG WORD.....8 DIGIT SCORE +HS_INITS EQU HS_SCORE+C_LONG_SIZE ;BYTE FOR FIRST INITIAL +HS_CKBYTE EQU HS_INITS+(NUM_INITS*C_BYTE_SIZE) ;BYTE FOR CHECKSUM +HS_SIZE EQU HS_CKBYTE+C_BYTE_SIZE ;SIZE OF STRUCTURE +HS_BYTES_TO_CHECK EQU (HS_SIZE/C_BYTE_SIZE)-1 ;# TO ADD FOR CHECKSUM +HS_SIZE_IN_WORDS EQU HS_SIZE/C_WORD_SIZE ;SIZE OF ENTRY IN WORDS +HS_SIZE_IN_BYTES EQU HS_SIZE/C_BYTE_SIZE ;SIZE OF ENTRY IN BYTES +HS_ROM_SIZE EQU HS_SIZE/2 ;address size of rom entry +* +************************************************************************** +* +* A HIGH SCORE TABLE IS DEFINED IN ROM BY THE FOLLOWING * +* STRUCTURE (THERE ARE AT LEAST 2 TABLES....ALL TIME * +* AND "TODAYS") * +* +************************************************************************** +TB_POINTER EQU 0 ;LONG-POINTER TO BEGINNING OF TABLE +TB_COUNT EQU TB_POINTER+LONG_SIZE ;WORD....# IN THE TABLE. +TB_VISIBLE EQU TB_COUNT+WORD_SIZE ;WORD....NUMBER DISPLAYED +TB_PAGE_BITS EQU TB_VISIBLE+WORD_SIZE ;WORD....STATUS WORD FOR CMOS PAGE +TB_FACTORY EQU TB_PAGE_BITS+WORD_SIZE ;LONG....ROM STARTUP TABLE +TB_ERROR_COUNT EQU TB_FACTORY+LONG_SIZE ;WORD....NUM ERRORS TO RE-INIT + +WPCMOS EQU CMOS+4000H ;WRITE PROTECTED CMOS +HALF_PAGE EQU 4000h +;WP_READ EQU 1C00010H ;PLACE TO READ WRITE PROTECT STATUS +;WP_BIT EQU 800H ;BIT WHERE WRITE ENABLE LIVES 0=NO WRITES + + + .if WWFUNIT +CMOS_PAGE_SELECT_BITS EQU 03H ;BITS 0 AND 1 OF SYSCTRL SELECT CMOS PAGE +CMOS_PAGE_SELECT_UNIT EQU 01H ;4 PAGES USE MULTIPLES OF THIS + .else +CMOS_PAGE_SELECT_BITS EQU 0C0H ;BITS 6 AND 7 OF SYSCTRL SELECT CMOS PAGE +CMOS_PAGE_SELECT_UNIT EQU 040H ;4 PAGES USE MULTIPLES OF THIS + .endif + + +************************************************************************** +* CMOS ALLOCATION +************************************************************************** +* +* 8k * 8 bits mapped as 8k * 16 bits. +* +* No hardware pages anymore, but software still pretends that there +* are four pages of 2k. +* +* PAGE 0 LOW HALF = AUDITS +* HIGH HALF = ADJUSTMENTS +* +AUDIT_SELECT EQU CMOS_PAGE_SELECT_UNIT*0 +HSR_SELECT EQU AUDIT_SELECT ;HIGH SCORE RESET COUNTER +COIN_SELECT EQU AUDIT_SELECT ;COINS AND CREDITS +ADJUST_SELECT EQU CMOS_PAGE_SELECT_UNIT*0 +* +* PAGE 1 LOW HALF = WIN STREAKS +* HIGH HALF = TOP SCORES +* +STREAK_TABLE_SELECT equ CMOS_PAGE_SELECT_UNIT*1 +PIN_SPEED_TAB_SELECT equ CMOS_PAGE_SELECT_UNIT*2 +* +* PAGE 2 Unused +* +BEATEN_TAB_SELECT equ CMOS_PAGE_SELECT_UNIT*3 +INTER_TAB_SELECT EQU CMOS_PAGE_SELECT_UNIT*3 +TAG_TAB_SELECT EQU CMOS_PAGE_SELECT_UNIT*3 +* +* PAGE 3 Unused +* + +****************************************************************************** +* AUDIT PAGE AUDIT DATA AND CREDITS +* +AUDITORG EQU CMOS ;AUDITS LIVE HERE +CREDITS EQU AUDITORG+(N_AUDITS*AUD_SIZE) ;BYTE FOR CREDITS +CUNITS EQU CREDITS+C_BYTE_SIZE ;WORD +BUNITS EQU CUNITS+C_WORD_SIZE ;WORD +MINUNITS EQU BUNITS+C_WORD_SIZE ;WORD +COIN_CKSUM EQU MINUNITS+C_WORD_SIZE ;BYTE +HSR_C EQU COIN_CKSUM+C_BYTE_SIZE ;LONG = HIGH SCORE RESET COUNTER +* +* NEXT TWO ARE ASSUMED TO BE BACK TO BACK +* +HRESET_COUNTER EQU HSR_C+C_LONG_SIZE ;LONG = HIGH SCORE RESET COUNTER +HRESET_VERIFY EQU HRESET_COUNTER+C_LONG_SIZE ;LONG = 2ND COPY INVERTED. + +COIN_CKSUM_START EQU CREDITS +COIN_CKSUM_SIZE EQU COIN_CKSUM-COIN_CKSUM_START ;SIZE OF REGION TO CHECK +COIN_CKSUM_BYTES EQU COIN_CKSUM_SIZE/C_BYTE_SIZE ;NUMBER OF BYTES TO ADD + +CMESS_CHARS EQU 26 ;25 CHARS/LINE OF CUSTOM MESSAGE +CMESS_LINES EQU 3 ;3 LINES +CMESS_LINE_SIZE EQU CMESS_CHARS*C_BYTE_SIZE +CMESS_SIZE EQU CMESS_LINES*CMESS_LINE_SIZE + +VALID_VALUE EQU 0EABCH ;STORED AT "VALID_CUSTOM" IF OK! + +NAME_REV_SIZE EQU 30 ;NAME AND REV DATA + +ADJUSTORG EQU CMOS+HALF_PAGE ;FIRST ADJUSTMENT HERE +CUSTOM_MESSAGE EQU ADJUSTORG+(N_ADJUSTS*ADJ_SIZE) +VALID_CUSTOM EQU CUSTOM_MESSAGE+CMESS_SIZE ;WORD = EABC IF OK. +END_CK_REGION EQU VALID_CUSTOM+C_WORD_SIZE +ADJ_AREA_SIZE EQU END_CK_REGION-ADJUSTORG ;ADJUSTS+CUSTOM MESSAGE +ADJ_CKSUM EQU END_CK_REGION ;WORD CHECK FOR ADJUSTS +ADJ_BYTES_TO_CHECK EQU ADJ_AREA_SIZE/C_BYTE_SIZE ;NUMBER OF BYTES IN CHECKSUM. +NAME_REV EQU ADJ_CKSUM+C_WORD_SIZE +END_ADJ EQU NAME_REV+(NAME_REV_SIZE*C_BYTE_SIZE) +ADJ_CRC32 equ END_ADJ +* + +****************************************************************************** +* High score and win streak page +* +* 1K bytes (1/2 page) are set aside for each table. +* + +;STREAK_STRING_ORIGIN equ CMOS +STREAK_STRING_ORIGIN equ WPCMOS+HALF_PAGE +STREAK_TABLE_ORIGIN equ STREAK_STRING_ORIGIN+(32*C_BYTE_SIZE) + +PIN_SPEED_TAB_STRING_ORIGIN equ STREAK_TABLE_ORIGIN+(HS_SIZE*20) +PIN_SPEED_TAB_ORIGIN equ PIN_SPEED_TAB_STRING_ORIGIN+(32*C_BYTE_SIZE) + +BEATEN_TAB_STRING_ORIGIN equ PIN_SPEED_TAB_ORIGIN+(HS_SIZE*10) +BEATEN_TAB_ORIGIN equ BEATEN_TAB_STRING_ORIGIN+(32*C_BYTE_SIZE) + +INTER_TAB_STRING_ORIGIN equ BEATEN_TAB_ORIGIN+(HS_SIZE*32) +INTER_TAB_ORIGIN equ INTER_TAB_STRING_ORIGIN+(32*C_BYTE_SIZE) + +TAG_TAB_STRING_ORIGIN equ INTER_TAB_ORIGIN+(HS_SIZE*32) +TAG_TAB_ORIGIN equ TAG_TAB_STRING_ORIGIN+(32*C_BYTE_SIZE) + +************************************************************************** +* +* FOR COIN PAGE MESSAGES.....WE HAVE UP TO 3 LINES ABOVE +* THE CREDITS MESSAGE. +* +CP_13 EQU 101-35 ;LINE 1 OF 3 +CP_23 EQU 120-35 ;LINE 2 OF 3 +CP_33 EQU 139-35 ;LINE 3 OF 3 + +CP_DELTA3 EQU CP_23-CP_13 ;AMOUNT TO STEP FROM LINE TO LINE + +CP_12 EQU 130-35 ;LINE 1 OF 2 +CP_22 EQU 150-35 ;LINE 2 OF 2 + +CP_11 EQU 130-35 ;SINGLE HELP LINE + +CP_CX EQU 200 ;CENTER X FOR CREDITS SCREEN STUFF! + +************************************************************************** +* * +* MESS_MAC * +* * +* THIS MACRO IS USED TO SETUP AN "L_MESS" MESSAGE. * +* THE MESSAGE FOLLOWS THE MACRO. * +* ZERO TERMINATES THE MESSAGE. * +* ANOTHER ZERO TERMINATES L_MESS. * +* * +* A "1" AFTER THE TERMINATING "0" WILL CAUSE * +* L_MESS TO PRINT OUT ANOTHER MESSAGE. * +* * +************************************************************************** + +MESS_MAC .MACRO FONT,SPACING,X,Y,COLOR,ROUTINE,SLEEP + .LONG :FONT: + .LONG :SPACING: + .LONG ((:Y:)*10000H)+:X: + .LONG :COLOR: + .LONG :ROUTINE: +; .LONG :SLEEP: + .ENDM + +SPACING20 EQU 2 +SPACING07 EQU 1 + +******************************************************************************* + + + \ No newline at end of file diff --git a/MACROS.H b/MACROS.H new file mode 100755 index 0000000..515b663 --- /dev/null +++ b/MACROS.H @@ -0,0 +1,723 @@ +************************************************************** +* +* Software: +* Initiated: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + +*CLICK AN AUDIT COUNTER +AUDIT .macro P1 + MOVI :P1:,A0 + CALLA AUD1 + .endm + +*AUDIT A WORD LONG RAM LOCATION +*P1 = AUDIT +*P2 = RAM LOCATION +AUDITCNT .macro P1,P2 + MOVE @:P2:,A1 + MOVI :P1:,A0 + CALLA AUD + .endm + +*Get a game adjustment value in A0 +ADJUST .macro P1 + MOVI :P1:,A0 + CALLA GET_ADJ + .endm + +*FCALL - Function call without using the system stack +FCALL .macro n,b + movi :n:,:b:,L + exgpc :b: + .endm + +*FRET - Function return without using the system stack +FRET .macro b + exgpc :b: + .endm + + +****************************************************************************** + +REFLONG .macro label + .globl label + .long label + .endm + + +FACE24 .macro NAME,MOVE,REG + .if $isreg(REG) + move *:REG:(FACING_DIR),a14 + .else + move *a13(FACING_DIR),a14 + .endif + movi :NAME:_2_:MOVE:,a0 + btst MOVE_UP_BIT,a14 + jrnz DONE? + movi :NAME:_4_:MOVE:,a0 +DONE? + .endm + + +FACE24TBL .macro TBL,REG + + .if ($symcmp(TBL,"a0") = 0) | ($symcmp(TBL,"a14") = 0) + .emsg "ERROR! - Can't use a0 or a14 with FACE24TBL" + .mexit + .endif + + .if $isreg(REG) + move *:REG:(WRESTLERNUM),a0 + .else + move *a13(WRESTLERNUM),a0 + .endif + X64 a0 + + .if $isreg(REG) + move *:REG:(FACING_DIR),a14 + .else + move *a13(FACING_DIR),a14 + .endif + + btst MOVE_UP_BIT,a14 + jrnz DONE? + + addi 32,a0 + +DONE? + .if $isreg(TBL) + add :TBL:,a0 + .else + addi :TBL:,a0 + .endif + + move *a0,a0,L + + .endm + + +FACETBL .macro TBL,REG + + .if $symcmp(TBL,"a0") = 0) + .emsg "ERROR! - Can't use a0 with FACETBL" + .mexit + .endif + + .if $isreg(REG) + move *:REG:(WRESTLERNUM),a0 + .else + move *a13(WRESTLERNUM),a0 + .endif + X32 a0 + + .if $isreg(TBL) + add :TBL:,a0 + .else + addi :TBL:,a0 + .endif + + move *a0,a0,L + + .endm + +****************************************************************************** +;Under no circumstances should MODE_DEAD ever be changed to anything else. +; (well, except for the come-back-to-life thing at the end, and that's +; a very special case that'll be handled separately.) + +SETMODE .macro MODE + + move a0,-*sp,1 + move *a13(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jreq done? + movi MODE_:MODE:,a0 + move a0,*a13(PLYRMODE) +done? move *sp+,a0,1 + .endm + +****************************************************************************** + +JAM_STR .macro FONT,SPACING,CSPACE,X,Y,PALETTE,PR_METHOD + .long :FONT: + .word :SPACING: + .word :CSPACE: + .word :X: + .word :Y: + .long :PALETTE: + .long :PR_METHOD: + .endm + +****************************************************************************** + +OPPDIST .macro DX,DZ + move *a13(CLOSEST_XDIST),a14 + cmpi DX,a14 + jrgt FOO? + move *a13(CLOSEST_ZDIST),a14 + cmpi DZ,a14 +FOO? + .endm + +****************************************************************************** + +TBL_OBJ .macro OBJ + movi OBJ,a0 + calla BEGINOBJ_TBL + .endm + +****************************************************************************** + +X2 .macro a + sll 1,:a: + .endm + +****************************************************************************** + +X4 .macro a + sll 2,:a: + .endm + +****************************************************************************** + +X8 .macro a + sll 3,:a: + .endm + +****************************************************************************** + +X16 .macro a + sll 4,:a: + .endm + +****************************************************************************** + +X32 .macro a + sll 5,:a: + .endm + +****************************************************************************** + +X64 .macro a + sll 6,:a: + .endm + +****************************************************************************** + +X128 .macro a + sll 7,:a: + .endm + +****************************************************************************** + +X256 .macro a + sll 8,:a: + .endm + +****************************************************************************** + +TINTON .macro + + .global tint_on + calla tint_on + .endm + + +TINTOFF .macro + + .global tint_off + calla tint_off + .endm + +******************************** +* Macro defines, include after mproc.equ +* 11 June 91 SPL +*.Last mod - 1/31/93 1:00 + + +BSSX .macro n,s + .def :n: + .bss :n:,:s: + .endm + +SUBR .macro p1 + .def :p1: + .even +:p1: + .endm + +SUBRP .macro p1 + .even +:p1: + .endm + +STRUCT .macro o + .asg :o:,SOFF + .endm +STRUCTPD .macro + .asg PDATA,SOFF + .endm +STRUC .macro n,s +:n: .set SOFF + .eval SOFF+:s:,SOFF + .endm +WORD .macro n +:n: .set SOFF + .eval SOFF+16,SOFF + .endm +LONG .macro n +:n: .set SOFF + .eval SOFF+32,SOFF + .endm +APTR .macro n +:n: .set SOFF + .eval SOFF+32,SOFF + .endm +LABEL .macro n +:n: .set SOFF + .endm + +FLAG .macro n +:n:_B .equ SOFF +:n:_M .equ 1<= 5? + jrlt #map_ok ;Nope - then use it + clr a0 ;else reset it back to 0 +#map_ok + move a0,@_io_map,L ;a0 = I/O map number + clr a1 ;a1 = SetAddresses Trap Request + trap 3 ;Remap I/O space + rets +RemapIO_End + +SecFuncTable + .long RemapIO,RemapIO_End + .word 06a9h ;This is a checksum of the function + .long 0 + +****************************************************************************** + SUBR InitAddresses + movi COINS,a0 + move a0,@_coin_addr,L + movi SWITCH,a0 + move a0,@_switch_addr,L + movi SWITCH2,a0 + move a0,@_switch2_addr,L + movi WATCHDOG,a0 + move a0,@_watchdog_addr,L + movi DIPSWITCH,a0 + move a0,@_dipswitch_addr,L + movi SOUND,a0 + move a0,@_sound_addr,L + movi SOUNDIRQ,a0 + move a0,@_soundirq_addr,L + movi COIN_COUNTERS,a0 + move a0,@_coin_counter_addr,L + movi VMUX_INITMODE,a0 + move a0,@VMUX_CONTROL + rets + +****************************************************************************** + SUBR AddressSet1 + movi COINS_M1,a0 + move a0,@_coin_addr,L + movi SWITCH_M1,a0 + move a0,@_switch_addr,L + movi SWITCH2_M1,a0 + move a0,@_switch2_addr,L + movi WATCHDOG_M1,a0 + move a0,@_watchdog_addr,L + movi DIPSWITCH_M1,a0 + move a0,@_dipswitch_addr,L + movi SOUND_M1,a0 + move a0,@_sound_addr,L + movi SOUNDIRQ_M1,a0 + move a0,@_soundirq_addr,L + movi COIN_COUNTERS_M1,a0 + move a0,@_coin_counter_addr,L + movi (VMUX_INITMODE|VMUX_MODE1),a0 + move a0,@VMUX_CONTROL + rets + +****************************************************************************** + SUBR AddressSet2 + movi COINS_M2,a0 + move a0,@_coin_addr,L + movi SWITCH_M2,a0 + move a0,@_switch_addr,L + movi SWITCH2_M2,a0 + move a0,@_switch2_addr,L + movi WATCHDOG_M2,a0 + move a0,@_watchdog_addr,L + movi DIPSWITCH_M2,a0 + move a0,@_dipswitch_addr,L + movi SOUND_M2,a0 + move a0,@_sound_addr,L + movi SOUNDIRQ_M2,a0 + move a0,@_soundirq_addr,L + movi COIN_COUNTERS_M2,a0 + move a0,@_coin_counter_addr,L + movi (VMUX_INITMODE|VMUX_MODE2),a0 + move a0,@VMUX_CONTROL + rets + +****************************************************************************** + SUBR AddressSet3 + movi COINS_M3,a0 + move a0,@_coin_addr,L + movi SWITCH_M3,a0 + move a0,@_switch_addr,L + movi SWITCH2_M3,a0 + move a0,@_switch2_addr,L + movi WATCHDOG_M3,a0 + move a0,@_watchdog_addr,L + movi DIPSWITCH_M3,a0 + move a0,@_dipswitch_addr,L + movi SOUND_M3,a0 + move a0,@_sound_addr,L + movi SOUNDIRQ_M3,a0 + move a0,@_soundirq_addr,L + movi COIN_COUNTERS_M3,a0 + move a0,@_coin_counter_addr,L + movi (VMUX_INITMODE|VMUX_MODE3),a0 + move a0,@VMUX_CONTROL + rets + +****************************************************************************** + SUBR AddressSet4 + movi COINS_M4,a0 + move a0,@_coin_addr,L + movi SWITCH_M4,a0 + move a0,@_switch_addr,L + movi SWITCH2_M4,a0 + move a0,@_switch2_addr,L + movi WATCHDOG_M4,a0 + move a0,@_watchdog_addr,L + movi DIPSWITCH_M4,a0 + move a0,@_dipswitch_addr,L + movi SOUND_M4,a0 + move a0,@_sound_addr,L + movi SOUNDIRQ_M4,a0 + move a0,@_soundirq_addr,L + movi COIN_COUNTERS_M4,a0 + move a0,@_coin_counter_addr,L + movi (VMUX_INITMODE|VMUX_MODE4),a0 + move a0,@VMUX_CONTROL + rets + +AddressTable .long InitAddresses, AddressSet1, AddressSet2 + .long AddressSet3, AddressSet4 + +****************************************************************************** +; A0 = Address Set to install (0-4) + + SUBR SetAddresses + move a0,a0 + jrn _invalid + cmpi 4,a0 + jrgt _invalid + sll 5,a0 + addi AddressTable,a0 + move *a0,a0,L + pushst + dint + call a0 + popst +_invalid + rets + +********************************** +* SecFuncCheck - Checks to make sure security functions have not be mucked with +* Trashes a0,a1,a2,a3, a4 + SUBR SecFuncCheck + + + rets ;<----------------temp!!!!!!!!!!!!!!!!!!!!!! + + + movi SecFuncTable,a0,L ;Table of security functions to check +SFC_loop + move *a0+,a1,L ;Pointer to beginning of function + jrz SFC_done + move *a0+,a2,L ;Pointer to end of function + sub a1,a2 + srl 3,a2 + clr a3 +SFC_iloop + movb *a1,a4 + andi 0ffh,a4 + add a4,a3 + addk 8,a1 + dsjs a2,SFC_iloop + move *a0+,a4,W + cmp a4,a3 + jrz SFC_loop + LOCKUP +SFC_done + + +*************************************************************** +* InitPIC - Initializes the PIC Microcontroller +* + SUBR InitPIC + calla InitAddresses + clr a0 ;Reset the PIC + move @_coin_counter_addr,a1,L + move a0,*a1,W + movk 10,a0 ;Hold RESET fer a bit + dsjs a0,$ + movk 010h,a0 ;Set no command request + move a0,@PIC_COMMAND,W + movk 020h,a0 ;Allow PIC to run + move @_coin_counter_addr,a1,L + move a0,*a1,W + movi 200000000,a1 +_pwait_loop + move @_soundirq_addr,a0,L + move *a0,a0,W + btst 12,a0 + jrz _pnwait + move @_watchdog_addr,a0,L + move a0,*a0 + dsjs a1,_pwait_loop +_pnwait + movk 010h,a0 + move a0,@PIC_COMMAND,W + movi 2000000,a1 +_pwait_loop1 + move @_soundirq_addr,a0,L + move *a0,a0,W + btst 12,a0 + jrnz _pwait_done + move @_watchdog_addr,a0,L + move a0,*a0 + dsjs a1,_pwait_loop1 +_pwait_done + rets + +******************************** +* Init hardware, IO, RAM +* Trashes scratch, A2-A7 + + SUBR init_all + dint ;No interrupts until addresses set up + clr a0 ;>Clr scratch mem + movi SCRATCH,a1 + movi >18000-20,a2 ;128K minus some stack +#lp move a0,*a1+,L + dsjs a2,#lp + + calla set_up_line_tables + movi -1,a0 ;Auto Clock update OFF + move a0,@_clk_rd,L + calla InitPIC ;Initialize the PIC + + movi WDOGNUM,a0 + move a0,@WDOGRAM,L ;Mark system as initialized + + movi SYSCINIT|WPIROM,a0 + + move a0,@SYSCTRL + move a0,@SYSCOPY ;Copy + + callr io_init ;Initialize the I/O regs + + calla display_init ;Init display system + + calla process_init ;Init process list + + movk INAMODE,a0 + move a0,@GAMSTATE + movi 81261A8CH,a0 ;Random seed + move a0,@RAND,L + + movi swstacktop,a0 ;Initialize switch stack + move a0,@swstack_p,L + + callr dip_init ;Initialize the dipswitches + + CREATE QSNDRST_PID,qsndrst_proc ;Init sound board + CALLA RESET_VOICE_QUEUE + CREATE VOICE_PID,ANNOUNCE_VOICE + + movk 1,a0 + move a0,@DISPLAYON + + ;clear write-to-rom ints + ; Toddview messes with the interrupt vector table at startup, + ; and we end up with a pending WROM int. Clear it out to avoid + ; hanging right off the bat. + move @SYSCOPY,a0 + xori 02000h,a0 + move a0,@SYSCTRL + move @SYSCOPY,a0 + move a0,@SYSCTRL + + eint + + rets + + +******************************** +* Initialize options via dip switch settings + +dip_init + PUSH a0,a1 + + calla READ_DIP ;Get the current dip switch bits + move a0,a1 + + andi DPPLAYERS,a0 ;AQUIRE THE NUMBER OF PLAYERS + sll 3,a0 + addi #pnum_t,a0 + movb *a0,a0 + move a0,@NPLAYERS + + move a1,a0 + andi DPCOUNTER,a0 + srl DPCOUNTER_SRL-3,a0 + addi #cntr_t,a0 + movb *a0,a0 ;Match eugene's old shit + move a0,@COUNTER_MODE + + move a1,a0 + andi DPVALIDATOR,a0 ;AQUIRE THE VALIDATOR STATUS + srl DPVALIDATOR_SRL,a0 + move a0,@VALIDATOR ;SAVE IT + + move a1,a0 + andi DPPLAYERS,a0 + move a0,@TWOPLAYERS ;0=4 plyrs, 1=2 plyrs + + PULL a0,a1 + rets + +;Translate dipswitch into number of players allowed + +#pnum_t .byte 4,2 + +;Translate dipswitch coin counter adjustment to what the old cmos values were + +#cntr_t .byte 2,3,1,2 + .even + + +************************************************************************** +* Initialize GSP I/O registers + +io_init + PUSH b2,b6 + movi INTIO,b6 + exgpc b6 + PULL b2,b6 + rets + + +#******************************* +* Initialize GSP I/O registers +* B6=*Return address +* Trashes B0-B2 + + SUBR INTIO + + movi HESYNC,b2 + movi gspioinit_t,b0 + movi (giiend-gspioinit_t)/16,b1 +#lp move *b0+,*b2+ + dsj b1,#lp + + movi VMUX_INITMODE,a0 + move a0,@VMUX_CONTROL,W + + exgpc b6 + + +#******************************* +* Watch dog disable +* Note: Call while interrupts are turned off + + SUBR WDOGDIS + + .if TUNIT=0 + + PUSH a0,a1,a2,a3,a4 + + pushst + setf 16,1,0 + + movi #dis_t,a1 + move @SYSCOPY,a2 + movk 1,a3 + movi SYSCTRL,a4 + move *a1+,a0 + +#lp or a2,a0 + move a0,*a4 + xor a3,a0 + move a0,*a4 + move *a1+,a0 + jrnn #lp + + move a2,*a4 + + popst + PULL a0,a1,a2,a3,a4 + rets + + +#dis_t .word 0,0,0,0, 2,0,2,0, -1 ;WATCH DOG DISABLE TABLE + + .else + + rets + + .endif + + +**************************************************************** +* Display IRQ + +DIRQ + mmtm sp,b0,b1,b2,b3,b4,b5,b6,b7,b11 + mmtm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 + + + setf 1,0,0 + move sp,@INTPEND+DIP ;Clear int pending + move sp,@INTENB+DIP ;Disable display int + + eint ;Let DMA int run + + setf 16,1,0 ;Word sign extend + + MOVE @ROLLING_COUNT,A1 + INC A1 + MOVE A1,@ROLLING_COUNT + + movi DPYCTL,a8 + + move *a8,a7 ;>Shift register read to restart DMA + movi NIL|DXV|SRT|>10,a0 + move a0,*a8 + movi 510*>1000,a2 ;*Autoerase lines + pixt *a2,a2 ;Mem to shift reg xfer + + callr switch_stack ;Scan misc switches + + move @dirqdraw,a0 + jrnz di50 ;In draw code? + + move b13,b0 + jrn #chkmp ;DMA done? + + + move @GAMSTATE,a0 + jrn #chkmp ;In diagnostics? (B13 invalid) + + movi 26000/4,a1 ;>Make sure DMA is OK +#dqwait cmp b13,b0 + jrne di50 ;DMAQ changed? + dsj a1,#dqwait + + .if DEBUG + trap 29 + .endif + + clr a1 + move a1,@DMACTRL ;Timed out + move a1,@DMACTRL + subk 1,a1 + move a1,b13 + +di50 move a7,*a8 ;Restore + jruc #60hzcode ;Skip flip + + +#chkmp move @dirqtimer,a1 + jrnz di50 ;Mproc not done? + + move @dpageflip,a2 + jrz di400 ;Flipping off? + + +; movi -4,a0 ;Page0 + movk 4,a0 ; this save 1 cycle + neg a0 + movi PAGE1YO*>1000,b2 ;*Page1 + move @dpage,a1 + jrnz #onp1 + movi ->1004,a0 ;Page1 + clr b2 ;*Page0 +#onp1 move a0,@DPYSTRT ;If we don't page flip next time + move a0,@DPYADR ;Override DPYSTRT + not a1 ;Flip + move a1,@dpage + + + dint + movi 26000/8,a1 ;>Wait on last DMA +#dwait move @DMACTRL,a0 + jrnn #dmaoff ;DMA stopped? + dsj a1,#dwait + move a1,@DMACTRL ;Timed out + .if DEBUG + trap 29 + .endif +#dmaoff + + move a2,a2 + jrn #noerase ;Erase off? + + movi CONTROL,a9 ;>Clear whole page + move *a9,a6 + +;NEW - This is a bug - NEVER Turn OFF CAS before RAS Refreshes +;There is a possibility that by putting an 8 in the CONTROL register +;the Dynamic RAM device's (Bitmap RAM and/or Scratch RAM) could lose +;data. Because the amount of time that CAS before RAS refreshes are turned +;off is very short, the probabilty of actual data loss is minimal. Data +;loss could occur if the CAS before RAS refreshes are shut off just prior +;to a refresh cycle occuring. This is not very likely though because of the +;asynchronous nature of the 34010's refresh cycles. Setting the control +;register to 0ch will guarentee that there will be no possibilty of losing +;refresh cycles to the DRAM and VRAM devices. This NOTE is here simply to +;explain the reason for the code change below. +; ---> movk 8,a0 <--- + + MOVk 0ch,a0 + + move a0,*a9 ;Transparency off + movk 16,a0 + move a0,@PSIZE + movi SCRN_PTCH*2,b3 ;Pitch (2 lines) + PUSH b10,b11,b12,b13,b14 + movi [127,1],b7 ;Rows:Columns + fill l + PULL b10,b11,b12,b13,b14 + + move a6,*a9 ;Restore + movk PXSIZE,a0 + move a0,@PSIZE ;Normal +#noerase + +di400 move a7,*a8 ;Restore + eint + + + calla pal_transfer ;Copy new PALs + + move @IRQSKYE,@ERASELOC ;Copy bkgnd color +; move @COLRTEMP,a0,L +; jrz #notindiag +; movi CYCOLORS,a1 +; move a0,*a1+,L ;Copy diagnostics color cycler +; move @COLRTEMP+32,*a1,L +;#notindiag +; callr switch_stack ;Scan misc switches + + movk 1,a0 + + move a0,@dirqdraw + + setf 1,0,0 ;Enable display int + move a0,@INTENB+DIP + setf 16,1,0 + + + calla DISPLAY ;Build DMAQ, update XYPOS + + dint + clr a0 + move a0,@dirqdraw ;Draw done + + + + +#60hzcode ;*** This code must run at 60HZ + + move @_clk_rd,a2,L ;Increment the time get counter + jrn _no_gt ;If negative then no auto clock update + addk 1,a2 + move a2,@_clk_rd,L + cmpi 1,a2 ;Time to transfer the time? + jrz _gt ;BR = yes go get time + xori 01bh,a2 ;Time to trigger time aquisition? + jrnz _no_gt ;BR = nope - exit + move a2,@_clk_rd,L ;Set counter back to 0 + calla _aquire_time ;Trigger time aquistion + jruc _no_gt ;Done +_gt + calla _get_time ;Transfer time from PIC + move @_tseconds,a2,W ;Seconds = 0 ? + jrnz _no_gt ;BR = Nope - all done + calla _AlarmClock ;else - go check for alarm functions +_no_gt + + .if WWFUNIT + .else + movi SWITCH,a2 + .endif + movi FSWITCH,a3 + + .if WWFUNIT +; move @SWITCH,a2 +; move @COINS,a0 + move @_switch_addr,a2,L + move *a2,a2 + move @_coin_addr,a0,L + move *a0,a0 + sll 16,a0 +; andi 0ffffh,a2 ; 3,12 +; or a2,a0 ; 1,4 + movx a2,a0 ; 1,4 + .else + move *a2+,a0,L + .endif + not a0 + move a0,*a3+,L + + .if WWFUNIT +; move @SWITCH2,a0 +; move @DIPSWITCH,a1 + move @_switch2_addr,a0,L + move *a0,a0 + move @_dipswitch_addr,a1,L + move *a1,a1 + sll 16,a1 +; andi 0ffffh,a2 ; 3,12 +; or a2,a0 ; 1,4 + movx a0,a1 ; 1,4 + .else + move *a2,a1,L + .endif + + + not a1 + move a1,*a3,L + + + move @switches_cur,a2,L + move a2,@switches_old,L + move @FSWITCH,a1,L + move a1,@switches_cur,L + move a2,a0 + xor a1,a2 ;down transitions + and a1,a2 + move a2,@switches_down,L + xor a0,a1 ;up transitions + and a0,a1 + move a1,@switches_up,L + + move @switches_cur+20h,a2,L + move a2,@switches_old+20h,L + move @FSWITCH+20h,a1,L + move a1,@switches_cur+20h,L + move a2,a0 + xor a1,a2 ;down transitions + and a1,a2 + move a2,@switches_down+20h,L + xor a0,a1 ;up transitions + and a0,a1 + move a1,@switches_up+20h,L + + + move @dirqtimer,a1 ;Tell mproc to run + addk 1,a1 + move a1,@dirqtimer + +; callr switch_stack ;Scan misc switches + + MOVK 5,A1 + MOVI C_FLAGS,A2 +ALL_COUNTERS_DONE + MOVB *A2,A3 + JRZ NO_WORRY_COUNTER + SUBK 1,A3 + MOVE A3,*A2 +NO_WORRY_COUNTER + ADDK 8,A2 + DSJS A1,ALL_COUNTERS_DONE + + + dint + setf 1,0,0 ;Enable display int + movk 1,a1 + move a1,@INTENB+DIP + setf 16,1,0 + + + move @dirqcnt,a0 + addk 1,a0 + move a0,@dirqcnt + sll 32-3,a0 + jrnz dirqx ;Skip? + + + ;>Do every 8 ticks + .if DEBUG + .else + move @dirqtimer,a0 + cmpi 400,a0 + jahs init_prog ;Reset? + .endif + + + move @C_FRAC,a0 ;>Count down coin fraction timer + jrz #nfrc ;No frac? + sll 32-8,a0 + srl 32-8,a0 + subk 1,a0 + move a0,@C_FRAC +#nfrc + + ;>Coin counters + move @COINCNTR,a0,L + jrz l_dog ;Counters, timers inactive? + + movk 2,a4 ;do both counters + movi COINCNTR,a5 +ccntr0l + movb *a5,a1 ;more counts for counter ? + jrz c_cntr0 ;no + movb *a5(16),a2 ;previous pulse time out? + jrnz c_cntr0 ;no + movk 2,a2 + movb a2,*a5(16) ;start new pulse + dec a1 ;decrement counts + movb a1,*a5 +c_cntr0 + addk 8,a5 + dsjs a4,ccntr0l + + clr a2 ;counter on mask +; movi >100,a3 + movk 1,a3 + movk 2,a4 +c_cntr1l + movb *a5,a0 ;counter timer active? + jreq c_cntr1 ;no + dec a0 ;yes, dec it and store + movb a0,*a5 + jreq c_cntr1 ;done + add a3,a2 ;turn counter solenoid on +c_cntr1 + sll 1,a3 + addk 8,a5 + dsjs a4,c_cntr1l + + move @_coin_counter_addr,a0,L + ori 32,a2 + + andi 21h,a2 ;only set bits 5 and maybe 0. + + move a2,*a0,W + +l_dog + .if TUNIT2 +; move a0,@WATCHDOG ;Hit + move @_watchdog_addr,a0,L + move a0,*a0 + .else + + movi wdogbone_t,a1 ;>Clock watchdog + move @SYSCOPY,a2 + movk 1,a3 + movi SYSCTRL,a4 + move *a1+,a0 + +roverl or a2,a0 + move a0,*a4 + xor a3,a0 + move a0,*a4 + move *a1+,a0 + jrnn roverl ;More? + + move a2,*a4 ;Restore + .endif + + move @VCOUNT,a14 + move a14,@dma_bog + +dirqx mmfm sp,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 + mmfm sp,b0,b1,b2,b3,b4,b5,b6,b7,b11 + reti + + +wdogbone_t + .word 0,2,0,2,2,-1 ;Watchdog feed table + + +#******************************* +* Scan switches + + SUBRP switch_stack + +; move @COINS,a0,W +; move @SWITCH,a1,W + +;02/23/95 - This maps the Test Dipswitch onto the TEST switch from the +; coindoor when NOT in Diagnostics mode - This allows the diagnostics +; process to be triggered by the TEST dipswitch + move @GAMSTATE,a0,W + jrn #no_testsw_map + move @_dipswitch_addr,a1,L + move *a1,a1,W + sll 4,a1 + ori 0ffefh,a1 +#no_testsw_map + move @_coin_addr,a0,L + move *a0,a0,W + and a1,a0 + move @_switch_addr,a1,L + move *a1,a1,W + sll 16,a0 +; sll 16,a1 ;mask off top 16 +; srl 16,a1 +; or a1,a0 + movx a1,a0 + + ori >6600ffff,a0 ;Set ignore bits +; movb @COINS+16,a1 +; move @SWITCH2,a1,W + move @_switch2_addr,a1,L + move *a1,a1,W + move @swtemp1,a1,L ;previous state t=n-1 + move @swtemp2,a2,L ;previous previous t=n-2 + move a1,@swtemp2,L ;new previous previous + move a0,@swtemp1,L ;new previous + and a1,a2 + andn a0,a2 ;look for 110 + jrz #x ;No switches? + + move @swstack_p,a3,L + +#lp cmpi swstackbot,a3 + jreq #x ;Switch stack overflow? + + move a2,a2 + jrz #x + + lmo a2,a0 ;1's comp leftmost bit + rl a0,a2 ;get rid of bit + sll 1,a2 + movk 31,a1 ;calc true bit # + sub a0,a1 + move a1,-*a3 ;Stack switch number (0-31) + rl a1,a2 ;Restore switch word without bit + jrnz #lp + + move a3,@swstack_p,L ;restore switch stack + +#x rets + + +****************************************************************************** +* badtrapx - Come here when a trap is hit that is not defined and log it + +badtrap31 +badtrap30 +badtrap28 +badtrap27 +badtrap26 +badtrap25 +badtrap24 +badtrap23 +badtrap22 +badtrap21 +badtrap20 +badtrap19 +badtrap18 +badtrap17 +badtrap16 +badtrap15 +badtrap14 +badtrap13 +badtrap12 +badtrap11 +badtrap9 +badtrap8 +badtrap7 +badtrap6 +badtrap5 +badtrap4 +badtrap3 + + .if DEBUG ;??? + LOCKUP + eint + .else + CALLERR 9,0 + .endif + + reti + + +;WRITE TO CODE/IMAGE ROM +wrom_int + + .if DEBUG +;If debug, just lockup so we can fix it. + LOCKUP + eint + .else + +;If shipping code, audit the error and clear the int + PUSH a14 + movi SYSCINIT,a14 + xori 02000h,a14 + move a14,@SYSCTRL + ori 02000h,a14 + move a14,@SYSCTRL + PULL a14 + CALLERR 9,0 + eint + .endif + + reti + +badtrap + .if DEBUG + LOCKUP + eint + .else + CALLERR 9,0 + .endif + + reti + +badtrap29 + .if DEBUG + reti +; LOCKUP ;A write to ROM! + .endif + jruc badtrap + +****************************************************************************** +* trap3_handler - Security Trap +* a1 = Security Service Identifier +* 0 = SetAddresses (I/O address remap) +* a0 = Data for particular Security Service +* Security Service Value +* 0 Don't Care + SUBR trap3_handler + sll 5,a1 + addi _SecurityFunctions,a1 + move *a1,a1,L + call a1 + reti + +;Initial GSP I/O register values + +gspioinit_t +;NEW - Values change because dot clock is twice as fast. +; .word 015h ;>C0000000 -- HESYNC +; .word HEBLNKINIT ;>C0000010 -- HEBLNK +; .word 0fah ;>C0000020 -- HSBLNK +; .word 0fch ;>C0000030 -- HTOTAL + .word 02bh ;>C0000000 -- HESYNC + .word HEBLNKINIT ;>C0000010 -- HEBLNK + .word 01f5h ;>C0000020 -- HSBLNK + .word 01f9h ;>C0000030 -- HTOTAL + + .word 3 ;>C0000040 -- VESYNC + .word 20 ;>C0000050 -- VEBLNK + .word 274 ;>C0000060 -- VSBLNK ;254 lines + .word 288 ;>C0000070 -- VTOTAL + .word >f010 ;>C0000080 -- DPYCTL ENV|NIL|DXV|SRE|>10 + .word 0fffch ;>C0000090 -- DPYSTRT + .word EOSINT ;>C00000A0 -- DPYINT + .word 2ch ;>C00000B0 -- CONTROL + .word 0 ;>C00000C0 -- HSTDATA + .word 0 ;>C00000D0 -- HSTADRL + .word 0 ;>C00000E0 -- HSTADRH + .word 0 ;>C00000F0 -- HSTCTLL + .word 0 ;>C0000100 -- HSTCTLH + .word 0 ;>C0000110 -- INTENBL + .word 0 ;>C0000120 -- INTPEND + .word 0 ;>C0000130 -- CONVSP + .word 0 ;>C0000140 -- CONVDP + .word PXSIZE ;>C0000150 -- PSIZE + .word 0 ;>C0000160 -- PMASK + .word 0 ;>C0000170 -- RESERVED + .word 0 ;>C0000180 -- RESERVED + .word 0 ;>C0000190 -- RESERVED + .word 0 ;>C00001A0 -- RESERVED + .word 28 ;>C00001B0 -- DPYTAP +giiend + + +;Initialize all 32 trap vectors + + .sect "VECTORS" + + .long badtrap31 ;TRAP 31 + .long badtrap30 ;TRAP 30 ILLOP --- ILLEGAL OPCODE + .long badtrap29 ;TRAP 29 + .long badtrap28 ;TRAP 28 + .long badtrap27 ;TRAP 27 + .long badtrap26 ;TRAP 26 + .long badtrap25 ;TRAP 25 + .long badtrap24 ;TRAP 24 + .long badtrap23 ;TRAP 23 + .long badtrap22 ;TRAP 22 + .long badtrap21 ;TRAP 21 + .long badtrap20 ;TRAP 20 + .long badtrap19 ;TRAP 19 + .long badtrap18 ;TRAP 18 + .long badtrap17 ;TRAP 17 + .long badtrap16 ;TRAP 16 + .long badtrap15 ;TRAP 15 + .long badtrap14 ;TRAP 14 + .long badtrap13 ;TRAP 13 + .long badtrap12 ;TRAP 12 + .long badtrap11 ;TRAP 11 WV --- WINDOW VIOLATION + .long DIRQ ;TRAP 10 DI --- DISPLAY INTERRUPT + .long badtrap9 ;TRAP 9 HI --- HOST INTERRUPT + .long badtrap8 ;TRAP 8 NMI -- NONMASKABLE INTERRUPT + .long badtrap7 ;TRAP 7 + .long badtrap6 ;TRAP 6 + .long badtrap5 ;TRAP 5 + .long badtrap4 ;TRAP 4 + .long trap3_handler ;TRAP 3 Security Trap + .long wrom_int ;TRAP 2 INT2 --- EXTERNAL INTERRUPT 2 + .long dma_irq ;TRAP 1 INT1 --- EXTERNAL INTERRUPT 1 + .long init_prog ;TRAP 0 RESET + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/MAINIMG.ASM b/MAINIMG.ASM new file mode 100755 index 0000000..e5e5c42 --- /dev/null +++ b/MAINIMG.ASM @@ -0,0 +1,10 @@ + .FILE "mainimg.asm" + .OPTION B,D,L,T + + .include mainimg.glo + .include mainimg.tbl + .DATA + .even + + + \ No newline at end of file diff --git a/MAKE.BAT b/MAKE.BAT new file mode 100755 index 0000000..0c8be6d --- /dev/null +++ b/MAKE.BAT @@ -0,0 +1,4 @@ +@echo off +\qemm\vidram on +\opus\make %1 %2 %3 %4 %5 + \ No newline at end of file diff --git a/MAKE.INI b/MAKE.INI new file mode 100755 index 0000000..dd2463e --- /dev/null +++ b/MAKE.INI @@ -0,0 +1,13 @@ +.MISER : # always use the miser. +.SUFFIXES : .EXE .OBJ .LIN .DEC .C .ASM .FOR .RAW .OUT + +RAM = d:\ +MAKE_TMP = ${RAM} + +.asm.obj: + preasm $*.asm $*.axx + GSPA $*.axx $*.obj $*.lst -h -l -v10 + @del $*.axx + @CRNCHLST $*.lst + + \ No newline at end of file diff --git a/MAKE0100.BAT b/MAKE0100.BAT new file mode 100755 index 0000000..0f4bc2e --- /dev/null +++ b/MAKE0100.BAT @@ -0,0 +1,5 @@ +@echo off +del mproc.axx +if errorlevel 1 goto m_end +echo>C:\VIDEO\WWF\make0100.err +:m_end diff --git a/MAKEFILE b/MAKEFILE new file mode 100755 index 0000000..657b9e0 --- /dev/null +++ b/MAKEFILE @@ -0,0 +1,183 @@ +# +# WRESTLING MAKEFILE +# + +.SUFFIXES : .EXE .ASM .OBJ .C +.MISER + +# + + +OBJ = display.obj main.obj util.obj pal.obj mproc.obj \ + bakgnd.obj bgndtbl.obj bgndpal.obj wrespal.obj firework.obj \ + crowd.obj imgpal.obj miscimg.obj ropeimg.obj finiseq.obj \ + robo.obj \ + bamimg.obj bretimg.obj doinkimg.obj \ + razorimg.obj takerimg.obj yokoimg.obj \ + shawnimg.obj leximg.obj \ + wrestle.obj wrestle2.obj special.obj anim.obj getup.obj \ + drone.obj award.obj \ + dcssound.obj patch.obj text.obj \ + attract.obj stories.obj \ + string.obj square.obj \ + adjust.obj audit.obj test.obj diag.obj menu.obj hstd.obj \ + select.obj tables.obj \ + coll2.obj lifebar.obj ropes.obj \ + doink.obj razor.obj lex.obj bret.obj \ + bam.obj taker.obj yoko.obj shawn.obj \ + react1.obj react2.obj react3.obj react4.obj react5.obj \ + react6.obj react7.obj react8.obj react9.obj \ + collis.obj screen.obj progress.obj \ + bamseq1.obj bamseq2.obj bamseq3.obj bamseq4.obj \ + hrtseq1.obj hrtseq2.obj hrtseq3.obj hrtseq4.obj \ + dnkseq1.obj dnkseq2.obj dnkseq3.obj dnkseq4.obj \ + lexseq1.obj lexseq2.obj lexseq3.obj lexseq4.obj \ + rzrseq1.obj rzrseq2.obj rzrseq3.obj rzrseq4.obj \ + shnseq1.obj shnseq2.obj shnseq3.obj shnseq4.obj \ + yokseq1.obj yokseq2.obj yokseq3.obj yokseq4.obj \ + undseq1.obj undseq2.obj undseq3.obj undseq4.obj + +wrestle.out: $(OBJ) wrestle.cmd + gsplnk wrestle.cmd + copy d:\wrestle.out + copy d:\wrestle.map + \qemm\vidram off + tv wrestle /v + +$(OBJ): $*.asm + +noload: $(OBJ) wrestle.cmd + gsplnk wrestle.cmd + copy d:\wrestle.out + copy d:\wrestle.map + \qemm\vidram off + +adjust.obj: mproc.equ display.equ sys.equ game.equ link.equ menu.equ dip.equ macros.h sound.h fontsimg.glo +anim.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ fontsimg.glo bgndtbl.glo ring.equ sound.h +attract.obj: mproc.equ display.equ sys.equ gsp.equ macros.h game.equ audit.equ link.equ sound.h imgtbl.glo fontsimg.glo bgndtbl.glo +audit.obj: mproc.equ display.equ sys.equ gsp.equ game.equ link.equ menu.equ audit.equ macros.h sound.h fontsimg.glo bgndtbl.glo +award.obj: macros.h mproc.equ display.equ gsp.equ sys.equ wwfsec.equ \ + game.equ audit.equ plyr.equ anim.equ sound.h ring.equ \ + sound.equ damage.equ imgtbl.glo fontsimg.glo bgndtbl.glo \ + miscimg.glo +firework.obj: macros.h mproc.equ display.equ gsp.equ sys.equ wwfsec.equ \ + game.equ audit.equ plyr.equ anim.equ sound.h ring.equ \ + sound.equ damage.equ imgtbl.glo fontsimg.glo bgndtbl.glo \ + miscimg.glo +bakgnd.obj: mproc.equ display.equ gsp.equ sys.equ game.equ macros.h fontsimg.glo bgndtbl.glo +bam.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +bamimg.obj: bamimg.tbl +bamseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h bamimg.h +bamseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h bamimg.h +bamseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h bamimg.h +bamseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h bamimg.h +bret.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +bretimg.obj: bretimg.tbl +collis.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ special.equ +crowd.obj: mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ macros.h link.equ sound.h bgndtbl.glo imgtbl.glo +dcssound.obj: macros.h mproc.equ sys.equ game.equ plyr.equ audit.equ macros.h display.equ snddebug.h +diag.obj: gsp.equ sys.equ mproc.equ link.equ imgtbl.glo macros.h game.equ dip.equ +display.obj: gsp.equ sys.equ mproc.equ display.equ macros.h fontsimg.glo plyr.equ +dnkseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +dnkseq2.obj: macros.h mproc.equ sys.equ display.equ game.equ plyr.equ anim.equ sound.h +dnkseq3.obj: macros.h mproc.equ sys.equ display.equ game.equ plyr.equ anim.equ sound.h +dnkseq4.obj: macros.h mproc.equ sys.equ display.equ game.equ plyr.equ anim.equ sound.h +doink.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +doinkimg.obj: doinkimg.tbl +drone.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ plyr.equ anim.equ +getup.obj: macros.h mproc.equ sys.equ plyr.equ +hrtseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +hrtseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +hrtseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +hrtseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +hstd.obj: audit.equ mproc.equ display.equ sys.equ game.equ link.equ macros.h fontsimg.glo bgndtbl.glo plyr.equ +lex.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +leximg.obj: leximg.tbl +lexseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +lexseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +lexseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +lexseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +lifebar.obj: macros.h mproc.equ display.equ gsp.equ game.equ plyr.equ sys.equ link.equ fontsimg.glo sound.h +main.obj: mproc.equ display.equ gsp.equ sys.equ game.equ dip.equ macros.h +menu.obj: mproc.equ display.equ sys.equ game.equ link.equ menu.equ macros.h sound.h fontsimg.glo gsp.equ audit.equ +miscimg.obj: miscimg.tbl +mproc.obj: gsp.equ sys.equ mproc.equ display.equ macros.h +pal.obj: mproc.equ display.equ sys.equ gsp.equ game.equ macros.h fontsimg.glo bgndtbl.glo +progress.obj: mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ macros.h link.equ sound.h bgndtbl.glo imgtbl.glo plyr.equ anim.equ +razor.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h lifebar.h +razorimg.obj: razorimg.tbl +react1.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h damage.equ special.equ +react2.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +react3.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +react4.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +react5.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +react6.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +react7.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +react8.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +react9.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +robo.obj: mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ macros.h link.equ roboimg.glo fontsimg.glo +ropes.obj: display.equ ring.equ +ropeimg.obj: ropeimg.tbl +rzrseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +rzrseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +rzrseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +rzrseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +select.obj: mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ macros.h link.equ sound.h fontsimg.glo bgndtbl.glo imgtbl.glo plyr.equ +shawn.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +shawnimg.obj: shawnimg.tbl +shnseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +shnseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +shnseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +shnseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +special.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ plyr.equ anim.equ sound.h imgtbl.glo fontsimg.glo bgndtbl.glo ring.equ special.equ +square.obj: sys.equ macros.h +string.obj: mproc.equ display.equ sys.equ gsp.equ macros.h game.equ audit.equ fontsimg.glo bgndtbl.glo +tables.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +taker.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +takerimg.obj: takerimg.tbl +test.obj: mproc.equ display.equ sys.equ gsp.equ imgtbl.glo game.equ link.equ menu.equ macros.h dip.equ fontsimg.glo sound.h +text.obj: text.tbl macros.h fontsimg.glo +undseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +undseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +undseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +undseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +util.obj: mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ macros.h +wrestle.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ plyr.equ anim.equ sound.h imgtbl.glo fontsimg.glo bgndtbl.glo ring.equ wwfsec.equ +wrestle2.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ audit.equ plyr.equ anim.equ sound.h imgtbl.glo fontsimg.glo bgndtbl.glo ring.equ jjxm.h +yoko.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h +yokoimg.obj: yokoimg.tbl +yokseq1.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +yokseq2.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +yokseq3.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +yokseq4.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +screen.obj: macros.h mproc.equ display.equ gsp.equ sys.equ wwfsec.equ game.equ screen.tbl imgtbl.glo +stories.obj: macros.h mproc.equ display.equ gsp.equ sys.equ game.equ plyr.equ anim.equ audit.equ sound.h ring.equ lifebar.h \ + bretst.h bamst.h yokost.h doinkst.h razorst.h lexst.h takerst.h shawnst.h +finiseq.obj: macros.h mproc.equ sys.equ game.equ plyr.equ anim.equ sound.h +wrespal.obj: wrespal.asm + +bretst.h: bretst.sin + strcomp bretst.sin bretst.h bret 34 + +bamst.h: bamst.sin + strcomp bamst.sin bamst.h bam 33 + +yokost.h: yokost.sin + strcomp yokost.sin yokost.h yoko 35 + +doinkst.h: doinkst.sin + strcomp doinkst.sin doinkst.h doink 33 + +razorst.h: razorst.sin + strcomp razorst.sin razorst.h razor 33 + +lexst.h: lexst.sin + strcomp lexst.sin lexst.h lex 32 + +takerst.h: takerst.sin + strcomp takerst.sin takerst.h taker 33 + +shawnst.h: shawnst.sin + strcomp shawnst.sin shawnst.h shawn 33 +# END + \ No newline at end of file diff --git a/MEMMAP.DOC b/MEMMAP.DOC new file mode 100755 index 0000000..54c812f --- /dev/null +++ b/MEMMAP.DOC @@ -0,0 +1,26 @@ +* +* WWF Memory map +* +* +*.Last mod - 4/7/94 16:45 +* + +module size(bits) location end +______ ____ ________ ---------- + +main.lod 10db940 2000000,0 30db940 + +razor.lod 1103e10 3700000,0 4803e10 + +doink.lod f137d0 4900000,0 58137d0 + +robo.lod 59520 2000000,1 2059520 + +adam.lod 135a3b0 2080000,1 33da3b0 + +ref.lod 2121b0 3880000,1 3a921b0 + +fonts.lod f7a80 3e00000,1 3e0f780 + + + \ No newline at end of file diff --git a/MENU.ASM b/MENU.ASM new file mode 100755 index 0000000..3a551d8 --- /dev/null +++ b/MENU.ASM @@ -0,0 +1,7641 @@ +************************************************************** +* +* Software: LARRY DEMAR and DR. J +* Initiated: ? +* +* Modified: Shawn Liptak, 11/1/91 -Total carnage +* Shawn Liptak, 1/20/92 -Coinage from T2, Dipswitch +* Shawn Liptak, 1/24/92 -Coinage corrections +* Shawn Liptak, 3/4/92 -Basketball mods +* Shawn Liptak, 10/2/92 -TUNIT sound mods +* Jason Skiles, 11/24/93 -DCS sound mods +* Jason Skiles, 12/3/93 -Strip audits for WWF +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/7/93 11:25 +************************************************************** + .file "menu.asm" + .title "test menus" + .width 132 + .option b,d,l,t + .mnolist + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "game.equ" + .include "link.equ" + .include "menu.equ" + .include "macros.h" + .include "sound.h" + + .include "fontsimg.glo" + + .text + +; IN THIS MODULE + + .DEF MEN_MAIN,GET_CSPT + .DEF MESS_FAC + .DEF ANY_BUT,MEN_YN + .DEF STR_OBJ + .DEF STR_FREE + .DEF CKPROMPT + .DEF GO_DIAG ;ROUTINE FOR DIAGNOSTIC MENU + .DEF RTR_LEV,ROM_LEV + .DEF MESS_MM + .DEF CS_ENTS ;NUMBER OF HIGHEST IN COIN TABLE + .DEF TWO_TS,TWO_TP + .DEF FAC_STUF + .DEF BUILD_ST + .DEF SCODE ;SYNTH CODE CURRENTLY BEING MADE + .DEF DCODE ;DIG CODE CURRENTLY BEING MADE + .DEF HID_P + .DEF SNDTST + .DEF USA_1, USA_2, USA_3, USA_4, USA_ELECTITLE + .DEF GERMAN_1, GERMAN_2, GERMAN_3, GERMAN_4, GERMAN_ELECTITLE + .DEF FRENCH_1, FRENCH_2, FRENCH_3, FRENCH_4, FRENCH_ELECTITLE + .DEF DIPCOINTAB + .def RES_ALL + +****************************************************************************** +* EXTERNAL REFERENCES + .ref _coin_addr + .ref _switch_addr + .ref _switch2_addr + .ref _sound_addr + .ref _soundirq_addr + .ref _coin_counter_addr + .ref _set_time + .ref dec_to_asc + .ref copy_rom_string + .ref concat_string,concat_rom_string + .ref message_buffer + .ref MENU_TOP + .ref COL_INST + .ref GETSTICK + .ref ST_STICK + .ref CLR_MAIN + .ref ADJ_INST + .ref CADJ_BOX + .ref CLR_CUR + .ref _switch_map_mode + .ref _clk_rd + .ref _get_time + .ref _aquire_time + + .REF RNDRNG0 + .REF CREATE_TEXT_LINE + + .globl _rtc_seconds, _rtc_day, _rtc_date, _rtc_month + .globl _rtc_minutes, _rtc_hours, _rtc_year + .globl _tseconds,_tminutes,_thours,_tday,_tdate,_tmonth,_tyear + .globl _serial_number,_month,_day,_year,_man_date + .globl _GetTime,_auto_update_save + + .bss _setup_mess,10*16 ;Used for built messages + .bss _setup_mess_msg,8*40 ;Used for built message strings + + .bss _rtc_seconds,16 ;These are used when SETTING the RTC + .bss _rtc_minutes,16 + .bss _rtc_hours,16 + .bss _rtc_day,16 + .bss _rtc_date,16 + .bss _rtc_month,16 + .bss _rtc_year,16 + + .bss _last_seconds,16 ;This is used when displaying the time + + .bss _tseconds,16 ;This is where the current time is + .bss _tminutes,16 ;stored when the time data is read + .bss _thours,16 ;from the PIC. + .bss _tday,16 + .bss _tdate,16 + .bss _tmonth,16 + .bss _tyear,16 + .bss _mytemp,32 + + .bss _serial_number,32 ;Game Serial Number (Hexidecimal) + .bss _man_date,32 ;Date of manufacture (composite) + .bss _month,32 ;Date of manufacture (month) + .bss _day,32 ;Date of manufacture (date) + .bss _year,32 ;Date of manufacture (year) + + .bss _auto_update_save,32 ;Save area for clock auto update + + + .ref display_init + .ref opmsg_main + .ref SWITCHTEST + .ref CLR_AUD + .ref fswitches_cur,fswitches_down,fudge_switches2 + .ref AREUSURE + .ref RD15FONT + .ref L_MESS + .ref SCRCLR + .ref SUR_MESS + .ref DIAG_EX + .ref GET_ADJ + .ref NO_CREDS + .ref COL_BARS + .ref DIGSRT + .ref STRCNRM + .ref GET_AUD + .ref STRCAT + .ref QSNDRST + .ref FAC_SET + .ref GEN_MENU + .ref STRNGRAM + .ref GET_HSC + .ref STD_BORD + .ref CLR_AUDR + .ref STRNEW1 + .ref CMOS_VAL + .ref FORM_ADC + .ref LM_FINIS + .ref INIT_HSR + .ref TOP_BOX + .ref LM_SETUP + .ref B_MENU + .ref GO_ADJ + .ref BLNKAREA + .ref MAIN_RET + .ref STRLNRM + .ref RD7FONT + .ref WC_WORD + .ref HEXTOASC + .ref DIAGCPUTEST + .ref CROSS_H + .ref WDOGDIS + .ref SURE_BOX + .ref ROM_NAME + .ref STRRNRM + .ref FILLAREA + .ref CLR_SCRN + .ref CAT_A0 + .ref CK_MAX + .ref BURN_IN + .ref WAIT_BUT + .ref BAD_AUD + + ;from AUDIT.ASM + .ref AUD1 + + ;from DIAG.ASM + .ref RECTANGLE + + ;from HSTD.ASM + .ref INIT_TB,STREAK_TAB,PIN_SPEED_TAB,INIT_HSTRING + .REF BEATEN_TAB + .ref INTER_TAB + .REF TAG_TAB + + ;from MPROC.ASM + .ref KIL1C + + ;from NSOUND.ASM + .ref SNDSND,nosounds,set_volume + + ;from UTIL.ASM + .ref get_but_val_down,get_stick_val_cur,dpageflip_off + +****************************************************************************** + + .BSS FAC_FLAG,16 ;FLAG SAYS CLEAR AUDITS AND HSTABLE + ;IF FACTORY SETTINGS SUCCEED. + .BSS SCODE,16 ;SYNTH CODE LAST MADE! + .BSS DCODE,16 ;DIG CODE LAST MADE! + .BSS TMPOBJ,32 ;TEMPORARY OBJECT FROM STR_OBJ + + BSSX octopus2,16 + + + +************************************************************************** +* * +* COIN TABLE * +* * +************************************************************************** +* +* The coin table is made up of the normal entries from +* the pinball system, as well as some new ones that +* determine start and buy-in cost, and others that +* aid in the determination of a "total collection". +* +* Left Slot Multiplier word +* Center Slot Multiplier word +* Right Slot Multiplier word +* fourth slot Muliplier word +* bill validator Muliplier word +* Units for Credit word +* Units for Bonus word +* Minimum Units word +* Credits to start word +* Credits to Continue word +* Divisor in money calculation word 0 means "OFF" +* +* -------------------------------------------------------------- +* The above value get copied as adjustments (and are adjustable). +* In addition, the coin table contains help on how to arrive at +* the "Total Collection" for the coin audits. +* -------------------------------------------------------------- +* +* Count for each Left coin word +* Count for each Center coin word +* Count for each Right coin word +* Count for fourth coin word +* Count for DBV word +* Pointer to Leading text string long +* Pointer to Following text string long +* +************************************************************************** +* +* GET_CSPT +* +* THIS IS CALLED TO RETURN IN A6 THE CURRENT +* CSELCT LINE AS STORED IN THE ADJUSTMENT TABLE. +* +************************************************************************** +GET_CSPT + PUSH a0 + movk ADJPRICE,a0 + CALLA GET_ADJ ;GET THE COIN SELECT NUMBER BEING USED. + CALLR CS_POINT + PULL a0 + RETS + +************************************************************************** +* CS_POINT - Point at selected entry in the coinage select table +* A0=Offset # +* Rets: A6=*Coinage table +************************************************************************** +CS_POINT + MMTM SP,A0,A1 + MOVE A0,A0 ;ZERO? + JRZ CS1 ;YEP...RETURN FIRST LINE + + CMPI CS_ENTS,A0 ;IN RANGE? + JRLS CS2 ;YEP...CONTINUE + MOVK 1,A0 ;TOO LARGE.......USE 1ST LINE. + +CS2 DEC A0 ;INDEX INTO TABLE +CS1 MOVI CS_SIZE,A1 ;SIZE PER ENTRY + MPYU A0,A1 ;OFFSET INTO TABLE + ADDI CSELCT,A1 + MOVE A1,A6 ;RETURN THE POINTER + MMFM SP,A0,A1 + RETS + +************************************************************************** +* +* CKPROMPT +* +* IS THERE A PROMPT STRING FOR THE CREDITS PAGE. +* +* A0 RETURNS: +* +* YES.....RETURN POINTER TO SOMETHING +* NO......RETURN ZERO +* +* IF A0 HAS A POINTER THEN.... +* +* IF A1 = 0 THEN A0 IS AN L_MESS STRING THAT SHOULD +* JUST BE SENT OUT. +* +* IF A1 != 0 THEN A0 IS A POINTER LIST OF UP TO 2 MESSAGES. +* THAT GIVE PRICING INFO +* +* A1 = 0 PLOT THE A0 STRING OUTRIGHT USING L_MESS +* (IT CONTAINS ALL DATA) +* +* A1 = 1 PLOT ONLY THE STRING LIST (1 OR 2 POINTERS +* CENTERED APPROPRIATELY +* +* A1 = 2 PLOT THE 1ST LINE OF THE STRING LIST ALONG +* WITH THE 2 CREDITS TO START...1 TO CONTINUE +* +* A1 = 3 PLOT THE 2ND LINE OF THE STRING LIST ALONG +* WITH THE 2 CREDITS TO START...1 TO CONTINUE +* +* A1 = 4 PLOT THE 3RD LINE OF THE STRING LIST ALONG +* WITH THE 2 CREDITS TO START...1 TO CONTINUE +* +* A1 = 5 PLOT THE 1ST LINE OF THE STRING LIST ALONG +* ALONG WITH 2 COINS PER PLAYER +* +* A1 = 6 PLOT THE 2ND LINE OF THE STRING LIST ALONG +* ALONG WITH 2 COINS PER PLAYER +* +* A1 = 7 PLOT THE 3RD LINE OF THE STRING LIST ALONG +* ALONG WITH 2 COINS PER PLAYER +* +* A1 = 8 CUSTOM MESSAGE +* +************************************************************************** + +CKPROMPT + PUSH a6 + movk ADJFREPL,a0 + CALLA GET_ADJ + jrnz RET_NO ;Free play? + + CALLA CK_MAX ;ARE WE AT MAX CREDITS? + JRHS RET_MAX + + movk ADJNOCPAG,a0 + CALLA GET_ADJ ;CHECK THE ADJUSTMENT + JRNZ CKSPCASE ;WE'RE SET TO SHUT UP.JUST START/CONT + + movk ADJ1ST6,a0 ;has operator messed around? + CALLA GET_ADJ + JRZ CKSPCASE ;YEP...GO FOR GENERIC "2 TO START" + +* OPERATOR IS USING CANNED COINAGE....WE NEED TO USE THE +* CHECK IF ITS 2/1 OR 2/2 + + CALLR CK_2_CRED ;IS IT A 2 CREDIT MODE? + JRZ NOT_2_MODE ;NOPE...PRINT STOCK STUFF + + MOVE A0,A1 ;COPY 2/1 2/2 CODE + CALLR GET_CSPT ;POINT A6 AT CSEL FOR US NOW. + MOVE *A6(CS_PICK),A0 ;GET INDICATION OF WHICH LINE + JRZ CKSPCASE ;IT SAYS JUST ENUMERATE THE MODE! + +* NOW....IF ITS 2/1, A0 HAS THE CORRECT RETURN CODE +* IF ITS 2/2 WE NEED TO ADD 2 + + subk 1,a1 + JRZ RET_A0_VAL ;2/1? + + addk 3,a0 + JRUC RET_A0_VAL ;RETURN THIS! + +NOT_2_MODE + CALLR GET_CSPT ;POINT A6 AT CSEL FOR US NOW. + MOVE *A6(CS_PROMPT),A0,L ;FETCH POINTER TO MESSAGE (IF ANY) + JRZ CKSPCASE + ;WE HAVE SOMETHING STORED AT THE PROMPT + CMPI CSM_LAST,A0 ;IS IT LITTLE? + JRHI CKEXIT ;NOPE..ITS A POINTER..RETURN L_MESS STATUE + +RET_A0_VAL + MOVE A0,A1 ;ITS LITTLE...RETURN IT AS A CODE + MOVE *A6(CS_LIST),A0,L ;PASS BACK MESSAGE LIST FOR THIS MODE + JRUC CK_BYE + +RET_NO CLR A0 ;IT IS FREE PLAY. +CKEXIT CLR A1 ;NO FANCIES YET +CK_BYE PULL a6 + move a0,a0 ;Pass Z + rets + +* CONTROL COMES HERE IF IT LOOKS LIKE NO MESSAGE IS +* APPROPRIATE....CHECK FOR 2 TO START 1 TO CONTINUE GENERIC NEEDED. + +CKSPCASE + CALLR CK_2_CRED ;CHECK IF THERE ARE 2 CREDIT MODES. + JRZ RET_NO ;NOT A 2 CREDIT MODE. + + subk 1,a0 + JRZ TWO_ONE ;YEP...RETURN 2/1 + + MOVI TWO_CRED_PER_PLAYER,A0 + JRUC CKEXIT ;RETURN IT! + + +TWO_ONE MOVI TWO_TO_START_2C,A0 + + + JRUC CKEXIT + +RET_MAX MOVI MAX_C_M,A0 + JRUC CKEXIT + + +************************************************************************** +* CK_2_CRED - Checks if in a 2-credit to start mode +* +* A0=0 NOT 2/1 OR 2/2 CREDIT MODE +* A0=1 2 TO START 1 TO CONTINUE +* A0=2 2 TO START 2 TO CONTINUE +* +* Z NOT 2/1 OR 2/2 CREDIT MODE +* NZ IS 2/1 OR 2/2 CREDIT MODE +************************************************************************** +CK_2_CRED + MOVI ADJCSTRT,A0 + CALLA GET_ADJ ;HOW MANY TO START + subk 2,a0 + jrnz c2c20 ;!2 to start? + + MOVI ADJCCONT,A0 + CALLA GET_ADJ ;GET CONTINUE NUMBER + cmpi 2,a0 ;1 or 2 is what we return + jrhi c2c20 ;>2? + move a0,a0 ;Return NZ (unless its 2/0) + rets + +c2c20 clr a0 ;Pass Z + rets + +************************************************************************** +* * +* MENU HANDLING SOFTWARE * +* * +************************************************************************** + +************************************************************************** +* * +* FORCE_MAIN * +* * +* THIS IS CALLED TO GET TO MAIN MENU FROM LEVEL FURTHER * +* THAN 1 DOWN. IT SETS THE GLOBAL FLAG "MAIN_RET" * +* NON ZERO. GEN_MENU WILL KEEP RETURNING UNTIL * +* IT GETS BACK TO THE MAIN MENU. * +* * +************************************************************************** +FORCE_MAIN + MOVK 1,A0 ;POSITIVE NUMBER FORCES MAIN MENU. + MOVE A0,@MAIN_RET + RETP ;NOW "RETURN TO THE MENU" + +************************************************************************** +* * +* DIAGNOSTIC TESTS SELECTED......SHOW DIAGNOSTIC TEST MENU * +* * +************************************************************************** +GO_DIAG + MOVI MEN_DIAG,A8 ;PUT UP THE MENU AND GO! + JAUC GEN_MENU ;THIS WILL RETURN TO LEVEL ABOVE US! + +************************************************************************** +* * +* COIN BOOKKEEPING SELECTED * +* * +************************************************************************** +gb20 JSRP DO_CLCOIN +GO_BOOK + CALLA CLR_SCRN + MOVI MES_BOOK,A2 + MOVI ROBO_WHITE,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + MOVI COIN_AUDS,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + MOVI COIN1_AUDS,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI AUDLCOIN,A8 ;NOW PRINT MONEY FOR 1ST 3 + JSRP PRINT_COL + + MOVI COIN2_AUDS,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + + +; MOVI COIN_A2,A0 ;PUT PART 2 OF THE TABLE THERE. +; JSRP PRNT_AUD + + MOVI MEN_DETAIL,A8 + MOVK 2,A9 ;CURSOR ON 2nd ENTRY + JSRP B_MENU ;SEE IF THEY WANT PAGE 2. + CMPI 1,A8 ;DID WE GET 1'ST ENTRY? + jreq gb20 + + RETP + + +;DETAIL_SCREEN +; CALLA CLR_SCRN ;CLEAR OUT FOR ACTION! +; +; MOVI DT_Y1,A0 ;HEIGHT OF TOP TITLE +; MOVI ROBO_YELLOW,A9 ;COLOR +; CALLA F_TITLE ;FRAME IT +; +; MOVI DT_Y2,A0 ;HEIGHT OF 2ND TITLE +; CALLA F_TITLE ;FRAME IT +; +; MOVI DETAIL_TITLES,A8 ;NO ROOM FOR PRETTY TOP BOX...DO TITLES +; JSRP L_MESS ;ESTABLISH THE TITLES. +; +; MOVI COIN_D1,A0 ;DETAILED AUDIT 1 +; JSRP PRNT_AUD ;PRINT IT +; +; MOVI AUDLCOIN,A8 ;NOW PRINT MONEY FOR 1ST 3 +; JSRP PRINT_COL +; +; MOVI AUDLCSUB,A8 ;SUB-TOTAL OF TOTAL MONEY +; JSRP PRINT_SUBTOTAL ;PRINT IT. +; +; MOVI COIN_D2,A0 ;DETAILED AUDIT 2 +; JSRP PRNT_AUD +; +; MOVI AUDLCDC,A8 ;NOW PRINT MONEY FOR DOOR CLOSED SET +; JSRP PRINT_COL +; +; MOVI AUDLCDCS,A8 ;NOW PRINT SUB-TOTAL FOR DOOR CLOSED +; JSRP PRINT_SUBTOTAL ;THATS IT! +; +; MOVI MEN_CLR_SUB,A8 ;CLEAR SUBTOTAL OR RETURN TO MAIN MENU +; MOVI 2,A9 ;CURSOR ON 2ND ENTRY +; JSRP B_MENU +; +; CMPI 1,A8 ;CHOICE 1 IS CLEAR..... +; JRNZ NO_CLEAR_SUB ;NOPE...RETURN TO CALLER! +; +; MOVI MESS_CLEAR_SUBS,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE +; MOVI CLR_SUBS,A9 ;ROUTINE TO DO IT +; MOVI MESS_SUBS_CLEAR,A10 ;CONFIRMATION. +; JSRP AREUSURE ;ASK EM. +; JRUC DETAIL_SCREEN ;NOW PUT THIS SCREEN BACK UP. +; +;NO_CLEAR_SUB +;NO_DETAIL +; RETP ;AND RETURN TO OUR CALLER. +; +;PRINT_SUBTOTAL +; CALLR ADD_AUDIT_DY ;PUSH THE Y 1 LEVEL +; MOVI T_SUB,A9 ;USE "SUB-TOTAL" MESSAGE +; JAUC PRINT_MONEY ;AND NOW PRINT THE REQUESTED SUM. + +************************************************************************** +* * +* GAME AUDITS SELECTED * +* * +************************************************************************** + +************************************************************************** +* * +* AUDITS TO BE SHOWN ON GAME AUDITS PAGE: * +* * +* EXTRA MEN * +* GAMES COMPLETED * +* 1 PLAYER MINUTES * +* 2 PLAYER MINUTES * +* TOTAL HOURS PLAYED * +* AVG "PLAYER" GAME TIME * +* AVG. ELAPSED TIME / PLAY * +* * +************************************************************************** + +GO_AUD + CALLA CLR_SCRN + MOVI MES_AUD,A2 + MOVI ROBO_CYAN,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + MOVI GAME_AUDS1,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + SLEEPK 1 + + MOVI MEN_AP1,A8 ;AUDIT PAGE 1 MENU + MOVK 1,A9 ;CURSOR ON 1ST ENTRY + JSRP B_MENU ;SEE IF THEY WANT PAGE 2. + CMPI 1,A8 ;DID WE GET 1'ST ENTRY? + JRNZ NO_AP2 ;NOPE...RETURN TO OUR CALLER + + +#page2 + CALLA CLR_SCRN + + MOVI MES_AUD,A2 + MOVI ROBO_CYAN,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + MOVI GAME_AUDS2,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI MEN_AP2,A8 + MOVK 1,A9 ;CURSOR ON 1ST ENTRY + JSRP B_MENU ;SEE IF THEY WANT PAGE 2. + cmpi 2,A8 ;DID WE GET 2nd ENTRY (RETURN TO PAGE 1) + jreq GO_AUD ;YEP...PUT IT UP! + +#page2a + CALLA CLR_SCRN + + MOVI MES_AUD,A2 + MOVI ROBO_CYAN,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + MOVI GAME_AUDS2a,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI MEN_AP2,A8 + MOVK 1,A9 ;CURSOR ON 1ST ENTRY + JSRP B_MENU ;SEE IF THEY WANT PAGE 2. + cmpi 2,A8 ;DID WE GET 2nd ENTRY (RETURN TO PAGE 1) + jreq #page2 ;YEP...PUT IT UP! + +#page3 + CALLA CLR_SCRN + + MOVI MES_AUD,A2 + MOVI ROBO_CYAN,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + MOVI GAME_AUDS3a,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI GAME_AUDS3b,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI GAME_AUDS3c,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + MOVI GAME_AUDS3d,A0 ;PUT TABLE UP. + JSRP PRNT_AUD + + movi GAUD_P3HEAD1,a8 ;and the page header + JSRP L_MESS + + movi GAUD_P3HEAD2,a8 ;and the page header + JSRP L_MESS + + movi GAUD_P3HEAD3,a8 ;and the page header + JSRP L_MESS + + movi GAUD_P3HEAD4,a8 ;and the page header + JSRP L_MESS + + movi GAUD_P3HEAD5,a8 ;and the page header + JSRP L_MESS + + movi GAUD_P3HEAD6,a8 ;and the page header + JSRP L_MESS + + MOVI MEN_AP3,A8 + MOVK 1,A9 ;CURSOR ON 1ST ENTRY + JSRP B_MENU ;SEE IF THEY WANT PAGE 2. + cmpi 2,A8 ;DID WE GET 2nd ENTRY (RETURN TO PAGE 2) +; jreq #page2 ;YEP...PUT IT UP! + jreq #page2a ;YEP...PUT IT UP! + +NO_AP2 + RETP + +GO_UTIL + MOVI MEN_UTIL,A8 + JAUC GEN_MENU ;PROCESS THE UTILITY MENU! +* +* INDIVIDUAL UTILITY PROGRAMS +* + +DO_CLCRED + MOVI MESS_CLCRED,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE + MOVI CLR_CREDITS,A9 ;ROUTINE TO DO IT + MOVI MESS_CCCONF,A10 ;CONFIRMATION. + JAUC AREUSURE ;ASK EM......THEN RETURN! + +************************************************************************** +* * +* VOLUME ADJUSTMENT SELECTED * +* * +************************************************************************** + + .bss bar_height,16 + +GO_VOL + + calla display_blank + calla dpageflip_off ;page flipping off + + calla CLR_SCRN + movi M_VOLUME,a2 + movi ROBO_GREEN,a3 + JSRP TOP_BOX + + create FX_PID,background_sound ;noise + +; movi pf_volume_1,a8 ;title/instructions +; JSRP L_MESS + movi pf_volume_2,a8 + JSRP L_MESS + movi pf_volume_3,a8 + JSRP L_MESS + + movi bxy,a0 ;frame + movi bw|bh,a1 +; movi ROBO_GREEN,a2 + movi ROBO_BLUE,a2 + fcall RECTANGLE,b6 + + movi bxy+>00030003,a0 ;frame + movi bw|bh->00060006,a1 + movi ROBO_BLACK,a2 + fcall RECTANGLE,b6 + + movi pf_volume_4,a8 ;MIN/MAX + JSRP L_MESS + movi pf_volume_5,a8 + JSRP L_MESS + + clr a0 + move a0,@bar_height + movi ADJVOLUME,a0 + calla GET_ADJ + BADCHK a0,0,255,28 ;reg, lo, hi, val if bad + calla set_volume + callr vol_to_ht + callr adjust_bar_height + SLEEPK 2 + calla display_unblank + +vol_loop_top + SLEEPK 1 + + ;check for done + clr a1 + clr a0 + calla get_but_val_down + or a0,a1 + movk 1,a0 + calla get_but_val_down + or a0,a1 + move @_coin_addr,a0,L + move *a0,a0 + not a0 +; andi 0e7ffh,a0 + andi 0e7efh,a0 + or a0,a1 + jrnz vol_loop_done + + ;check for a vol change + clr a0 + calla get_stick_val_cur + move a0,a1 + movk 1,a0 + calla get_stick_val_cur + or a0,a1 + andi 0011b,a1 ;filter out left/right + + ;listen to the coin door switches too. OR them in. +; move @COINS,a0 ;the down switch + move @_coin_addr,a0,L + move *a0,a0 + not a0 + andi 0800h,a0 + srl 10,a0 + or a0,a1 +; move @COINS,a0 ;the up switch + move @_coin_addr,a0,L + move *a0,a0 + not a0 + andi 1000h,a0 + srl 12,a0 + or a0,a1 + jrz vol_loop_top + + ;get the volume + movi ADJVOLUME,a0 + calla GET_ADJ + + ;make sure the volume is in range + BADCHK a0,1,255,28 ;reg, lo, hi, val if bad +; cmpi 4,a0 +; jrge vol_notlow +; movi 4,a0 +; jruc vol_nothigh +;vol_notlow +; cmpi 255,a0 +; jrle vol_nothigh +; movi 255,a0 +;vol_nothigh + + btst JOYDN,a1 + jrnz vol_dec + + ;increment volume + cmpi 255,a0 + jreq vol_loop_top + inc a0 + calla set_volume + callr vol_to_ht + callr adjust_bar_height + jruc vol_loop_top + +vol_dec ;decrement volume + cmpi 4,a0 + jreq vol_loop_top + dec a0 + calla set_volume + callr vol_to_ht + callr adjust_bar_height + jruc vol_loop_top + +vol_loop_done + movi FX_PID,a0 ;kill the background noise + calla KIL1C + calla nosounds + + RETP + + +#*************************************** +* Adjusts the bar height +* >a0=new height (1-170) + + SUBRP adjust_bar_height + + move a0,a1 + move @bar_height,a0 +#adjust_loop + cmp a1,a0 + jreq #done + jrlt #grow_bar + + movi ROBO_BLACK,a2 + callr vol_bar_line + dec a0 + jruc #adjust_loop + +#grow_bar + inc a0 + movi ROBO_RED,a2 + callr vol_bar_line + jruc #adjust_loop + +#done + move a0,@bar_height + rets + + +**************************************** +* Draws a line on the volume bar, but won't overwrite green pixels (text) +* >a0=line index (not Ypos) >a2=color + + SUBRP vol_bar_line + + PUSH a0,a1,a2 + ;convert the line index to a linear address + sla 16,a0 + neg a0 + addi bxy+bh->00030000+59,a0 ;various fudges here + cvxyl a0,a0 + + ;now write the color value to all non-green pixels + movi bw-6,a14 +vbl_pixel_loop + movb *a0,a1 +; cmpi ROBO_GREEN&0Fh,a1 + cmpi ROBO_BLUE&0Fh,a1 + jreq vbl_skip_pixel + movb a2,*a0 +vbl_skip_pixel + addk 8,a0 + dsj a14,vbl_pixel_loop + + PULL a0,a1,a2 + rets + +**************************************** +* Converts a 0-255 volume value to a 1-170 bar height value +* >a0=volume +* 40 + +bgsnd3 movi sound_fx_table,a10 +bgsnd6 move *a10+,a3,W + jrz bgsnd3 + calla SNDSND + SLEEP >20 + jruc bgsnd6 + +sound_fx_table + .word 6528 + .word >0B0 + .word >080 + .word >203 + .word >0C5 + .word >0B9 + .word >0CB + .word >206 + .word >0B6 + .word >0D1 + .word >315 + .word >202 + .word 0 + +pf_volume_2 + MESS_MAC RD7FONT,SPACING20,200,174+53,COLOR_YELLOW,STRCNRM,0 + .string "ADJUST VOLUME WITH JOYSTICKS OR VOLUME BUTTONS",0,0 + .even + +pf_volume_3 + MESS_MAC RD7FONT,SPACING20,200,184+53,ROBO_LASER,STRCNRM,0 + .string "ANY OTHER BUTTON TO QUIT",0,0 + .even + +pf_volume_4 + MESS_MAC RD7FONT,SPACING20,201,vb_y+>05,ROBO_BLUE,STRCNRM,0 + .string "MAX",0,0 + .even + +pf_volume_5 + MESS_MAC RD7FONT,SPACING20,201,vb_y+>a0,ROBO_BLUE,STRCNRM,0 + .string "MIN",0,0 + .even + +vb_y .set >2f +vb_height .set 171 +bxy .set >002e0000+200->18 + +bh .set >b0*>10000 +bw .set >30 + +bthickx .set 3 +bthicky .set 3*>10000 + +volume_table + .long bh+3,bxy ; height:width / y:x coordinates + .long bh+3,bxy+bw ; height:width / y:x coordinates + + .long bthicky+bw,bxy ; height:width / y:x coordinates + .long bthicky+bw+bthickx,bxy+bh ; height:width / y:x coordinates + .long 0 + +************************************************************************** +* * +* CLR_CREDITS * +* * +* ROUTINE TO CLEAR OUT THE CREDITS POSTED ON THE GAME. * +* * +************************************************************************** +CLR_CREDITS + CALLA NO_CREDS ;CALL THE ROUTINE THAT DOES IT + RETP + +DO_CLCOIN + MOVI MESS_CLCOIN,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE + MOVI CLR_COINS,A9 ;ROUTINE TO DO IT + MOVI MESS_CCNCONF,A10 ;CONFIRMATION. + JAUC AREUSURE ;ASK EM......THEN RETURN! + +CLR_COINS + MOVI FRST_C,A0 + MOVI LAST_C,A1 + CALLA CLR_AUDR + RETP + +DO_CLAUD + MOVI MESS_CLAUD,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE + MOVI CLR_AUDITS,A9 ;ROUTINE TO DO IT + MOVI MESS_CAUDCONF,A10 ;CONFIRMATION. + JAUC AREUSURE ;ASK EM......THEN RETURN! + +DO_CLPLRECS + movi MESS_CLPLRECS,A8 ;CLEAR PLAYER RECORDS + movi clr_plr_records,a9 ;ROUTINE TO DO IT + movi MESS_CLPLRECSCONF,a10 ;CONFIRMATION. + jauc AREUSURE ;ASK EM......THEN RETURN! + +; .global clear_player_records +clr_plr_records +; calla clear_player_records + MOVI AUD_BHART,A0 + MOVI LASTGAUD,A1 + CALLA CLR_AUDR + RETP + +CLR_AUDITS + MOVI FRSTGAUD,A0 + MOVI LASTGAUD,A1 + CALLA CLR_AUDR +; CALLA DUMP_FS ;AND START THE "DUMP" RECORDS OVER + RETP + +DO_HSRES + MOVI MESS_HSRESET,A8 + MOVI HSSOFT,A9 + MOVI MESS_HSRCONF,A10 + JAUC AREUSURE + +HSSOFT + CALLR RES_ALL + RETP ;PROGRAM TO DO THE JOB! + +************************************************************************** +* +* RES_ALL +* +* RESET ALL TIME HIGH SCORE TABLE AND THE +* HIGH SCORE RESET COUNTER. +* +************************************************************************** +RES_ALL + MOVI STREAK_TAB,A8 + CALLA INIT_TB + movi PIN_SPEED_TAB,a8 + calla INIT_TB + movi BEATEN_TAB,a8 + calla INIT_TB + movi INTER_TAB,a8 + calla INIT_TB + MOVI TAG_TAB,A8 + calla INIT_TB + + calla INIT_HSTRING + jauc INIT_HSR ;RE-SET THE HIGH SCORE RESET COUNTER + +DO_FACSET + MOVI MESS_FACSET,A8 + MOVK 1,A0 + JRUC DEF_ADJ_PART + +************************************************************************** +* * +* DO_DEF_ADJ THIS IS CALLED FROM UTILITY MENU TO * +* DO THE DEFAULT ADJUSTMENTS. * +* * +* DEF_ADJ_PART THIS IS CALLED OUT OF THE FULL * +* FACTORY SETTING TO HANDLE THE * +* ADJUSTMENT PART. * +* * +* A8 MUST HAVE THE MESSAGE FOR "ARE YOU SURE" * +* A0 .NE. 0 FOR FULL FACTORY SETTINGS (ON * +* SUCCESS OF ADJUSTMENT PART * +* * +************************************************************************** +DO_DEF_ADJ + MOVI MESS_DEF_ADJ,A8 + CLR A0 + +DEF_ADJ_PART + MOVE A0,@FAC_FLAG,W ;INDICATE THIS IS ADJUSTMENTS ONLY + MOVI DEFADJSOFT,A9 + MOVI NULL_ST,A10 ;DON'T PRINT ANYTHING....ROUTINE WILL. + JSRP AREUSURE + RETP + +DEFADJSOFT +* +* NOW SMASH THE CHECKSUM +* + CALLA FORM_ADC ;FORM THE CKSUM + MOVE A1,A0 ;PUT IN CMOS WRITING REGGIE + MOVI ADJ_CKSUM,A7 + INC A0 ;THIS SMASHES ADJUSTMENTS + CALLA WC_WORD ;AND STORE IT + .ref form_crc32 + .ref WC_LONG + + calla form_crc32 + move a1,a0 + movi ADJ_CRC32,a7 + calla WC_LONG +* +* NOW MAKE SURE ITS SMASHED +* + CALLA CMOS_VAL + JRZ AD_FAIL ;WE CAN'T DO IT.....PRINT FAILURE. +* +* NOW SET THE ADJUSTMENTS TO THE FACTORY VALUE. +* + clr a0 ;Full + CALLA FAC_SET + CALLA CMOS_VAL ;IS IT OK NOW? + JRNZ AD_FAIL ;NOPE...PRINT FAILURE + + MOVI MESS_DEFCONF,A8 ;THIS IS SINGLE MESSAGE + + MOVE @FAC_FLAG,A0,W ;DO WE NEED TO CLEAR THE TABLES? + JRZ DAX ;NOPE...POST SINGLE MESSAGE + + CALLA CLR_SCRN ;CLEAR THE SCREEN FOR OUR MESSAGES. + CALLR FAC_STUF ;DO AUDITS AND HIGH SCORE TABLE + + MOVI MESS_FFSCONF,A8 ;PRINT THE REST OF THE MESSAGES + JSRP L_MESS ;THAT DOES IT! + +NOTABS + RETP + +* +* ON A FULL FACTORY SETTING (EITHER REQUESTED OR +* ADJUSTMENT FAILURE) THIS CLEARS THE AUDITS AND +* HIGH SCORE TABLE. +* +FAC_STUF + CALLA CLR_AUD ;CLEAR AUDITS TOO + CALLR RES_ALL ;ALL TIME TABLE + RETS + +AD_FAIL + MOVI MESS_FACFAIL,A8 + JRUC DAX + +DEF_CAN + MOVI MESS_CANCELLED,A8 +DAX + CALLA CLR_SCRN + JSRP SUR_MESS + RETP +************************************************************************** +* * +* EXIST_LET * +* * +* IS THE E_INITS PROCESS RUNNING? * +* * +************************************************************************** +EXIST_LET + MOVI OPMES_PID,A0 ;SETUP FOR THE EXISTP + MOVI 0FFFFH,A1 + JAUC EXISTP +************************************************************************** +* * +* BUILD_ST * +* * +* THIS IS CALLED TO TAKE THE STRING POINTED TO * +* BY -A10- AND REMOVE LEADING AND TRAILING BLANKS * +* AND MOVE THE STRING TO "STRNGRAM". * +* * +* RETURN THE NUMBER OF TRAILING BLANKS IN A2. * +* RETURN .EQ. IF ALL BLANK! * +* * +************************************************************************** +BUILD_ST + MMTM SP,A0,A1,A3,A4,A5,A10 + CLR A4 ;A4 = ZERO UNTIL 1ST NON-BLANK + MOVI STRNGRAM-BYTE_SIZE,A5 ;LAST NON-SPACE CHAR + MOVI STRNGRAM,A1 ;DESTINATION POINTER + MOVI CMESS_CHARS,A2 ;CHAR COUNT + +BSLOOP + MOVB *A10,A3 ;FETCH A BYTE + ANDI BYTE_MASK,A3 ;KILL SIGN EXTEND. + JRNZ BS1 ;NOT ZERO + MOVI SPACE,A3 ;REPLACE ZERO WITH SPACE. + +BS1 + CMPI SPACE,A3 ;IS IT A SPACE? + JRZ BS2 ;IT IS... +* +* NON-SPACE CHARACTER +* + OR A3,A4 ;INDICATE 1ST NON-BLANK SEEN + MOVE A1,A5 ;INDICATE THIS IS CURRENT TERMINATOR. + JRUC BS3 + +BS2 + MOVE A4,A4 ;HAS 1ST SPACE BEEN SEEN? + JRZ BS4 ;NOT YET...DON'T STORE +BS3 + MOVB A3,*A1 ;STORE IT IN MEMORY + ADDK BYTE_SIZE,A1 ;PUSH DESTINATION POINTER +BS4 + ADDK BYTE_SIZE,A10 ;PUSH SOURCE POINTER + DSJS A2,BSLOOP ;AND FINISH PARSE +* +* A5 NOW POINTS AT LAST NON-BLANK CHARACTER +* + ADDK BYTE_SIZE,A5 ;THIS IS 1 BEYOND + CLR A2 + MOVB A2,*A5 ;TERMINATE WITH A ZERO. +* +* FOR OUR RETURN, WE NEED TO COMPUTE THE NUMBER OF +* TRAILING SPACES IGNORED. +* + MOVE A4,A4 ;ALL BLANK? + JRNZ NOT_BLNK + MOVI CMESS_CHARS,A2 ;ALL CHARS ARE TRAILING BLANKS + JRUC BL_EX ;RETURN THIS + +NOT_BLNK + MOVE A1,A2 ;THIS IS LAST CHAR WE WROTE + SUB A5,A2 ;THIS IS NUMBER OF TRAILING SPACES (TIMES 8) + SRL 3,A2 ;DIVIDE BY 8 TO GET SPACES +BL_EX + MOVE A4,A4 ;FLAG ZERO FOR ALL BLANK! + MMFM SP,A0,A1,A3,A4,A5,A10 + RETS + +* A1 = +* A3 = DAG OF AREA [YPOS,XPOS] +* A4 = [Y,X] SIZE OF AREA + +GO_RED + MOVI ROBO_RED,A1 + JAUC SC_COL + +GO_GREEN + MOVI ROBO_GREEN,A1 + JAUC SC_COL + +GO_BLUE + MOVI ROBO_BLUE,A1 +SC_COL + SLL 16,A1 ;[color,palette] + clr a3 ;[y,x] start + movi [256,399],a4 ;[Y,X] SIZE OF AREA + CALLA FILLAREA ;THIS DOES THE SCREEN + movk 3,a1 ; Any button map mode + move a1,@_switch_map_mode,L +; JAUC WAIT_BUT ;NOW WAIT FOR ANY BUTTON! + JSRP WAIT_BUT + movk 1,a1 + move a1,@_switch_map_mode,L ; Back to menu map mode + RETP + +GO_CPUTEST + JAUC DIAGCPUTEST + + +GO_CROSS + CALLA SCRCLR + CALLA CROSS_H + movk 3,a1 ; Any button map mode + move a1,@_switch_map_mode,L +; JAUC WAIT_BUT ;NOW WAIT FOR ANY BUTTON! + JSRP WAIT_BUT + movk 1,a1 + move a1,@_switch_map_mode,L ; Back to menu map mode + RETP +; JSRP WAIT_BUT +; CALLA SCRCLR +; CALLA display_init +; RETP + +GO_SWTEST + CALLA SCRCLR + movi M_SWTEST,a2 + movi ROBO_GREEN,a3 + JSRP TOP_BOX + clr a0 + JSRP SWITCHTEST +; CALLA SCRCLR +; CALLA display_init + RETP + +dipsw_test + CALLA SCRCLR + movi M_DIPTEST,a2 + movi ROBO_GREEN,a3 + JSRP TOP_BOX + movk 1,a0 ;DIP mode + JSRP SWITCHTEST + RETP + +;GO_ROMTEST +; JAUC ROM_CHK + +GO_BARS +; MOVI 8000H,A1 +; CLR A0 +; CALLA KILALL + CALLA SCRCLR + MMTM SP,A12,A13 + CALLA COL_BARS + MMFM SP,A12,A13 + movk 3,a1 ; Any button map mode + move a1,@_switch_map_mode,L +; JAUC WAIT_BUT ;NOW WAIT FOR ANY BUTTON! + JSRP WAIT_BUT + movk 1,a1 + move a1,@_switch_map_mode,L ; Back to menu map mode + RETP +; JSRP WAIT_BUT +; CALLA SCRCLR +; CALLA display_init +; CALLA COLRSTRT +; RETP + +DO_BURN + MOVI MESS_BURN,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE + MOVI BURN_IN,A9 ;ENTRY POINT + MOVI MESS_BURN,A10 ;THIS WILL NEVER BE SEEN! + JAUC AREUSURE ;ASK EM. + +ANY_BUT + MOVI ANY_MENU,A8 ;ANY BUTTON TO CONTINUE + MOVK 1,A9 ;CURSOR ON ENTRY 1 + JAUC B_MENU ;DO IT....RETURN WHEN PRESSED. + + +************************************************************************** +* * +* HARDWARE INFORMATION SELECTED * +* * +************************************************************************** + .data + +M_DIPTEST + .string "DIPSWITCH TEST",0 + .even +M_SWTEST + .string "GENERAL SWITCH TEST",0 + .even +M_VOLUME + .string "VOLUME ADJUST",0 + .even +HARDWARE_HELP + .word 0 + .word COLOR_BLUE + .word 2 + .long HDWH_SN + .long HDWH_MAN +HDWH_SN + .string "SERIAL NUMBER",0 + .even +HDWH_MAN + .string "MANUFACTURE DATE",0 + .even + +CLOCK_HELP + .word 0 + .word COLOR_BLUE + .word 2 + .long CLKH_MESS1 + .long CLKH_MESS2 +CLKH_MESS1 + .string "DISPLAY OR SET",0 + .even +CLKH_MESS2 + .string "THE REAL TIME CLOCK",0 + .even +CLK_DISPLAY_HELP + .word 0 + .word COLOR_BLUE + .word 3 + .long CDISP_H1 + .long CDISP_H2 + .long CDISP_H3 +CDISP_H1 + .string "DISPLAYS THE CURRENT",0 + .even +CDISP_H2 + .string "DATE AND TIME FROM",0 + .even +CDISP_H3 + .string "THE REAL TIME CLOCK",0 + .even +CLK_SET_HELP + .word 0 + .word COLOR_BLUE + .word 3 + .long CSET_H1 + .long CSET_H2 + .long CSET_H3 +CSET_H1 + .string "ALLOWS SETTING OF THE",0 + .even +CSET_H2 + .string "DATE AND TIME FOR",0 + .even +CSET_H3 + .string "THE REAL TIME CLOCK",0 + .even +CLK_CALIBRATE_HELP + .word 0 + .word COLOR_BLUE + .word 3 + .long CCAL_H1 + .long CCAL_H2 + .long CCAL_H3 +CCAL_H1 + .string "PREFORMS AUTOMATIC",0 + .even +CCAL_H2 + .string "CALIBRATION OF THE",0 + .even +CCAL_H3 + .string "REAL TIME CLOCK",0 + .even + +MESS_HARDWARE + .string "HARDWARE INFO",0 + .even +MESS_CLOCK + .string "REAL TIME CLOCK",0 + .even + +CAL_MESS_Y EQU 114 + +CLK_CALIBRATE_MESS + MESS_MAC RD15FONT,SPACING07,200,CAL_MESS_Y+20,ROBO_YELLOW,STRCNRM,0 + .string "Calibrating Real Time Clock" + .byte 0,1 + .even + MESS_MAC RD15FONT,SPACING07,200,CAL_MESS_Y,ROBO_DECAY,STRCNRM,0 + .string "Please Wait" + .byte 0,0 + .even +CLK_CALIBRATE_OK_MESS + MESS_MAC RD15FONT,SPACING07,200,CAL_MESS_Y+7,ROBO_WHITE,STRCNRM,0 + .string "Calibration Successful" + .byte 0,0 + .even +M_CLK_DISPLAY + .string "DATE AND TIME DISPLAY",0,0 + .even +M_CLK_CALIBRATE + .string "REAL TIME CLOCK CALIBRATION",0,0 + .even +M_CLK_SET + .string "SETTING REAL TIME CLOCK",0,0 + .even + +CDAY_PROMPT_Y EQU 50 +CTIME_PROMPT_Y EQU 130 +CDAY_Y EQU CDAY_PROMPT_Y+30 +CDATE_Y EQU CDAY_Y+20 +CTIME_Y EQU CTIME_PROMPT_Y+30 + +MESS_CLKD_PROMPTS + MESS_MAC RD15FONT,SPACING07,200,CDAY_PROMPT_Y,ROBO_WHITE,STRCNRM,0 + .string "Current Date" + .byte 0,1 + .even + MESS_MAC RD15FONT,SPACING07,200,CTIME_PROMPT_Y,ROBO_WHITE,STRCNRM,0 + .string "Current Time" + .byte 0,1 + .even +MESS_QUIT + MESS_MAC RD7FONT,SPACING07,200,230,ROBO_DECAY,STRCNRM,0 + .string "PRESS ANY BUTTON TO QUIT" + .byte 0,0 + .even +MESS_RTC_SET + MESS_MAC RD7FONT,SPACING07,200,215,ROBO_LASER,STRCNRM,0 + .string "THE REAL TIME CLOCK HAS BEEN SET" + .byte 0,0 + .even +MESS_SUNDAY + .string "Sunday",0 + .even +MESS_MONDAY + .string "Monday",0 + .even +MESS_TUESDAY + .string "Tuesday",0 + .even +MESS_WEDNESDAY + .string "Wednesday",0 + .even +MESS_THURSDAY + .string "Thursday",0 + .even +MESS_FRIDAY + .string "Friday",0 + .even +MESS_SATURDAY + .string "Saturday",0 + .even + +DAY_TABLE .long MESS_SUNDAY,MESS_MONDAY,MESS_TUESDAY,MESS_WEDNESDAY + .long MESS_THURSDAY,MESS_FRIDAY,MESS_SATURDAY + .even + +MESS_JANUARY + .string "January ",0 + .even +MESS_FEBRUARY + .string "February ",0 + .even +MESS_MARCH + .string "March ",0 + .even +MESS_APRIL + .string "April ",0 + .even +MESS_MAY + .string "May ",0 + .even +MESS_JUNE + .string "June ",0 + .even +MESS_JULY + .string "July ",0 + .even +MESS_AUGUST + .string "August ",0 + .even +MESS_SEPTEMBER + .string "September ",0 + .even +MESS_OCTOBER + .string "October ",0 + .even +MESS_NOVEMBER + .string "November ",0 + .even +MESS_DECEMBER + .string "December ",0 + .even +MONTH_TABLE + .long MESS_JANUARY, MESS_FEBRUARY, MESS_MARCH, MESS_APRIL + .long MESS_MAY, MESS_JUNE, MESS_JULY, MESS_AUGUST, MESS_SEPTEMBER + .long MESS_OCTOBER, MESS_NOVEMBER, MESS_DECEMBER + .even +MESS_HYEARS + .string ", 19",0 + .even +TSEPERATOR + .string ":",0 + .even +ZPAD + .string "0",0 + .even +TIME_PM + .string " PM",0 + .even +TIME_AM + .string " AM",0 + .even +DAY_SETUP + MESS_MAC RD15FONT,SPACING07,200,CDAY_Y,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even +DATE_SETUP + MESS_MAC RD15FONT,SPACING07,200,CDATE_Y,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even +TIME_SETUP + MESS_MAC RD15FONT,SPACING07,200,CTIME_Y,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even +DAYADJ_SETUP + MESS_MAC RD15FONT,SPACING07,284,185,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even +DATEADJ_SETUP + MESS_MAC RD15FONT,SPACING07,286,205,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even +TADJ_SETUP + MESS_MAC RD15FONT,SPACING07,284,225,ROBO_GREEN,STRCNRM,0 + .string "" + .byte 0,0 + .even + +;SNDRELEASE_NUM_PROMPT: +; MESS_MAC RD15FONT,SPACING07,200,130,ROBO_PURPLE,STRCNRM,0 +; .string "Sound Software Version:\n" +; .string "RELEASE %2ld" +; .byte 0,0 +; .long _serial_number +; .even +;SNDPROTO_NUM_PROMPT: +; MESS_MAC RD15FONT,SPACING07,200,130,ROBO_PURPLE,STRCNRM,0 +; .string "Sound Software Version:\n" +; .string "PROTO %2ld" +; .byte 0,0 +; .long _serial_number +; .even + +WILLY_Y EQU 50 +UNIT_Y EQU WILLY_Y+50 +SERIAL_Y EQU UNIT_Y+40 +MAN_Y EQU SERIAL_Y+40 + +M_DOM + .string "DATE OF MANUFACTURE: ",0 + .even +M_SERIAL + .string "SERIAL NUMBER: ",0 + .even +MAN_DATE_SETUP: + MESS_MAC RD7FONT, SPACING07,200, MAN_Y, ROBO_PURPLE,STRCNRM,0 + .string "" + .byte 0,0 + .even +WILLY_PROMPT: + MESS_MAC RD15FONT, SPACING07, 200, WILLY_Y, ROBO_GREEN, STRCNRM,0 + .string "Midway Manufacturing Inc." + .byte 0,1 + .even + MESS_MAC RD15FONT, SPACING20, 200, UNIT_Y, ROBO_YELLOW, STRCNRM, 0 + .string "WWF UNIT" + .byte 0,0 + .even +SERIAL_NUM_SETUP: + MESS_MAC RD7FONT,SPACING07,200,SERIAL_Y,ROBO_PURPLE,STRCNRM,0 + .string "" + .byte 0,0 + .even + +M_HARDWARE_INFO + .string "HARDWARE INFORMATION",0 + .even + +MESS_CLK_TITLE + .string "REAL TIME CLOCK",0 + .even +MESS_DISPLAY + .string "DISPLAY",0 + .even +MESS_SET + .string "SET",0 + .even +MESS_CALIBRATE + .string "CALIBRATE",0 + .even + +MEN_CLOCK + .long RD7FONT ;FONT + .long STRCNRM ;CENTER PLEASE + .long MESS_CLK_TITLE ;TITLE + .word COLOR_GREEN ;COLOR OF TITLE + .word 104 ;UL X + .word MENU_Y-3 ;UL Y + .word MENU_DY-4 ;VERTICAL SPACING + .word ROBO_WHITE ;COLOR WHEN NOT SELECTED + .word 16 ;HEIGHT OF SELECTION BAR + .word -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .word BAR_DX ;EXTRA X ON EACH SIDE. + .word BAR_WID ;WIDTH OF BAR! (A LITTLE FATTER) + .word ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM (SHOULD BE DECAY) + .long MESS_DISPLAY,GO_DISPLAY,CLK_DISPLAY_HELP + .long MESS_SET,GO_TIME_SET,CLK_SET_HELP +; .long MESS_CALIBRATE,GO_CALIBRATE,CLK_CALIBRATE_HELP +; .long MESS_MM,RET_CLOCK,NO_HELP + .long MESS_MM,RET_CLOCK,BLNK_HELP + .long 0 + + + +* +* CLOCK SET MENU IS SKINNY..LEAVING ROOM FOR EXPLANATION. +* +CS_BDY EQU -2 +CS_WID EQU 0A7H +CS_X EQU TIT_ULX+GAP+MB_XWID+(CS_WID/2)+C_KLUDGE +CS_Y EQU INST_LRY+BOX_YGAP+MB_YWID+GAP-CS_BDY +* +* RIGHT MARGIN OF ADJUST MENU BOX +* +CS_RX EQU TIT_ULX+(2*GAP)+CS_WID+(2*MB_XWID) +* +* LEFT MARGIN OF HELP BOX +* +CS_HX EQU CS_RX+BOX_XGAP + +M_TIME_SET + .string "SET REAL TIME CLOCK",0 + .even +MESS_YEAR_SET + .string "YEAR",0 + .even +MESS_DATE_SET + .string "DATE",0 + .even +MESS_MONTH_SET + .string "MONTH",0 + .even +MESS_DAY_SET + .string "DAY",0 + .even +MESS_HOUR_SET + .string "HOURS",0 + .even +MESS_MINUTE_SET + .string "MINUTES",0 + .even +MESS_SECOND_SET + .string "SECONDS",0 + .even +MESS_SET_CLOCK + .string "SET TIME/DATE",0 + .even +MESS_CLK_RET + .string "RETURN TO PREV MENU",0 + .even + +MEN_TIME_SET + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG M_TIME_SET ;TITLE + .WORD COLOR_WHITE ;COLOR OF TITLE + .WORD CS_X ;UL X + .WORD CS_Y ;UL Y + .WORD 12 + .WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED + .WORD 12 ;HEIGHT OF SELECTION BAR + .WORD CS_BDY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD CS_WID ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_CLK_RET,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG MESS_YEAR_SET,DO_YEAR,ADJ_HELP + .LONG MESS_DATE_SET,DO_DATE,ADJ_HELP + .LONG MESS_MONTH_SET,DO_MONTH,ADJ_HELP ;FREE PLAY + .LONG MESS_DAY_SET,DO_DAY,ADJ_HELP + .LONG MESS_HOUR_SET,DO_HOUR,ADJ_HELP + .LONG MESS_MINUTE_SET,DO_MINUTE,ADJ_HELP + .LONG MESS_SECOND_SET,DO_SECOND,ADJ_HELP + .LONG MESS_SET_CLOCK,GO_CLOCK_SET,SET_CLOCK_HELP + .LONG MESS_CLK_RET,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG 0 ;END + +INSTR_Y EQU INST_ULY+5 +INSTR_2Y EQU INSTR_Y+10 + +CS_ADV + MESS_MAC RD7FONT,SPACING07,CS_X,INSTR_Y,COLOR_BPR,STRCNRM,0 + .STRING "SELECT WITH ANY STICK" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,CS_X,INSTR_2Y,COLOR_BPR,STRCNRM,0 + .STRING "PRESS A BUTTON TO MODIFY" + .BYTE 0,0 + .EVEN + +SCH_1 + .string "SETS THE REAL TIME CLOCK",0 + .even +SCH_2 + .string "TO THE VALUES SPECIFIED BY",0 + .even +SCH_3 + .string "THE OTHER MENU ITEMS.",0 + .even +SET_CLOCK_HELP + .word 1 + .word COLOR_BLUE + .word 3 + .long SCH_1 + .long SCH_2 + .long SCH_3 + .even +YSH_1 + .string " SET THE REAL TIME CLOCK's",0 + .even +YSH_2 + .string " YEAR VALUE.",0 + .even +YSH_3 + .string " Takes effect when SET is",0 + .even +YSH_4 + .string " selected on the RTC MENU",0 + .even +HELP_YEAR + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long YSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_YEAR + .long GEN_TS ; Routine to run + .long MESS_YEAR_SET ; Header Message + .long HELP_YEAR ; Help Messages + .word 6 ; Index number of val to change + .long 0 ; Minimum value + .long 99 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long YEAR_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long 0 ; Just Show Number + .long MESS_YEAR_SET ; Header Message + +DTSH_2 + .string " DATE VALUE.",0 + .even +HELP_DATE + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long DTSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_DATE + .long GEN_TS ; Routine to run + .long MESS_DATE_SET ; Header Message + .long HELP_DATE ; Help Messages + .word 4 ; Index Number of val to change + .long 1 ; Minimum value + .long 31 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long DATE_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long 0 ; Just Show Number + .long MESS_DATE_SET ; Header Message + + +MSH_2 + .string " MONTH OF YEAR.",0 + .even +HELP_MONTH + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long MSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_MONTH + .long GEN_TS ; Routine to run + .long MESS_MONTH_SET ; Header Message + .long HELP_MONTH ; Help Messages + .word 5 ; Index Number of val to change + .long 1 ; Minimum value + .long 12 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long MONTH_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long MONTH_TABLE ; Just Show Number + .long MESS_MONTH_SET ; Header Message + + +DSH_2 + .string " DAY OF WEEK.",0 + .even +HELP_DAY + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long DSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_DAY + .long GEN_TS ; Routine to run + .long MESS_DAY_SET ; Header Message + .long HELP_DAY ; Help Messages + .word 3 ; Index Number of val to change + .long 1 ; Minimum value + .long 7 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long DAY_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long DAY_TABLE ; Just Show Number + .long MESS_DAY_SET ; Header Message + +HSH_2 + .string " HOUR VALUE.",0 + .even +HELP_HOUR + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long HSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_HOUR + .long GEN_TS ; Routine to run + .long MESS_HOUR_SET ; Header Message + .long HELP_HOUR ; Help Messages + .word 2 ; Index Number of val to change + .long 1 ; Minimum value + .long 24 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long HOUR_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long 0 ; Just Show Number + .long MESS_HOUR_SET ; Header Message + + +MINSH_2 + .string " MINUTE VALUE.",0 + .even +HELP_MINUTE + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long MINSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_MINUTE + .long GEN_TS ; Routine to run + .long MESS_MINUTE_SET ; Header Message + .long HELP_MINUTE ; Help Messages + .word 1 ; Index Number of val to change + .long 0 ; Minimum value + .long 59 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long MINUTE_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long 0 ; Just Show Number + .long MESS_MINUTE_SET ; Header Message + +SSH_2 + .string " SECOND VALUE.",0 + .even +HELP_SECOND + .word 1 + .word COLOR_BLUE + .word 4 + .long YSH_1 + .long SSH_2 + .long YSH_3 + .long YSH_4 + .even +DO_SECOND + .long GEN_TS ; Routine to run + .long MESS_SECOND_SET ; Header Message + .long HELP_SECOND ; Help Messages + .word 0 ; Not used + .long 0 ; Minimum value + .long 59 ; Maximum value + .long 1 ; Move up and down by 1's + .long 0 ; Dont sub zero for any + .long SECOND_SET ; Message list for values + .word WRAP_VAL ; Wrap around + .long 0 ; Just Show Number + .long MESS_SECOND_SET ; Header Message + + .text + +GO_HARDWARE: + move @_man_date,a2,L + move a2,a1 + subk 1,a1 + movi 372,a0 + divu a0,a1 + movi 372,a3 + mpyu a1,a3 + sub a3,a2 + addi 80,a1 + move a1,@_year,1 + move a2,a0 + movi 31,a1 + modu a1,a0 + move a0,@_day,1 + move a2,a1 + subk 1,a1 + movi 31,a0 + divu a0,a1 + addk 1,a1 + move a1,@_month,1 + calla CLR_SCRN ; Clear the screen + movi M_HARDWARE_INFO,a2 ; Put up Title Box + movi ROBO_GREEN,a3 + JSRP TOP_BOX + movi WILLY_PROMPT,a8 + JSRP L_MESS + movi M_DOM,a4 + calla copy_rom_string ; Copy the Date of manufacture prompt + move @_month,a0 + dec a0 + sll 5,a0 + movi MONTH_TABLE,a8 + add a0,a8 + move *a8,a4,L + calla concat_rom_string ; Copy the month name + move @_day,a0 ; Convert date to ascii + movi 31,a1 + calla dec_to_asc + calla concat_string ; Add date to string + movi MESS_HYEARS,a4 ; Add , 19 to string + calla concat_rom_string + move @_year,a0 ; Convert year to ascii + movi 99,a1 + calla dec_to_asc + calla concat_string ; Add year to string + movi MAN_DATE_SETUP,a0 ; Setup message + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS ; Print Date of Manufacture + + movi M_SERIAL,a4 + calla copy_rom_string ; Copy serial number prompt + move @_serial_number,a0,L ; Convert serial number to ascii + movi 1000000,a1 + calla dec_to_asc + calla concat_string ; Add serial number to prompt + movi SERIAL_NUM_SETUP,a0 ; Setup the message + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS ; Print the Serial Number + movi MESS_QUIT,a8 + JSRP L_MESS +_hardware_check_sw: ; Wait for a button to be pressed + SLEEP 10 + move @_switch2_addr,a0,L + move *a0,a0,W + move @_switch_addr,a1,L + move *a1,a1,W + sll 16,a0 + srl 16,a0 + sll 16,a1 + srl 16,a1 + and a0,a1 + move @_coin_addr,a0,L + move *a0,a0 + ori 10h,a0 + sll 16,a0 + or a1,a0 + not a0 + jrz _hardware_check_sw +RET_HARDWARE: + JSRP FORCE_MAIN + RETP + + +GO_CLOCK: + move @_clk_rd,a8,L ;Save current auto update state + move a8,@_auto_update_save,L + clr a8 ;Enable auto update + move a8,@_clk_rd,L + JSRP _GetTime + movi MEN_CLOCK,a8 + jauc GEN_MENU +RET_CLOCK: + move @_auto_update_save,a8,L ;Restore Auto Update state + move a8,@_clk_rd,L + JSRP FORCE_MAIN + RETP + +GO_CALIBRATE: + calla CLR_SCRN ; Clear the screen + movi M_CLK_CALIBRATE,a2 ; Put up Title Box + movi ROBO_GREEN,a3 + JSRP TOP_BOX + movi CLK_CALIBRATE_MESS,a8 ; Put up calibrating message + JSRP L_MESS + SLEEP 5*60 ; Do calibration here + move @0c00000b0h,a0 ; Make sure transparency is OFF + move a0,-*sp + andni 020h,a0 + move a0,@0c00000b0h + movi [CAL_MESS_Y,0],a0 ; Get rid of calibrating message + movi [40,400],a1 + movi ROBO_BLACK,a2 + fcall RECTANGLE,b6 + move *sp+,a0 + move a0,@0c00000b0h ; Restore CONTROL register + movi CLK_CALIBRATE_OK_MESS,a8 ; Put up success message + JSRP L_MESS + SLEEP 60 ; Let user see it + calla CLR_SCRN + RETP ; All done + +; a0 = pointer to MESS_MAC TO COPY message is copied from message_buffer +_setup_message: + movi _setup_mess,a1 + movk 10,a2 +_sm_lp1: + move *a0+,*a1+ + dsjs a2,_sm_lp1 + movi _setup_mess_msg,a1 + movi message_buffer,a0 + pushst + setf 8,0 +_sm_lp2: + move *a0+,a2 + move a2,*a1+ + move a2,a2 + jrnz _sm_lp2 +_sm_done + popst + clr a2 + move a2,*a1 + rets + +******************************************************************* +* _GetTime - Process subroutine to get the current time. Time is +* returned in the _tXXXXXX globals. +* + SUBRP _GetTime + move @_clk_rd,a0,L ;Save status of auto update + move a0,@_auto_update_save,L + movi -1,a0 ;Shut down auto update + move a0,@_clk_rd,L + calla _aquire_time ;Arm time aquistion + SLEEPK 5 ;Wait for it to aquire time + calla _get_time ;Get the current time + move @_auto_update_save,a0,L + move a0,@_clk_rd,L ;Restore auto update status + RETP ;All done + +; Process Subroutine to print time +_display_time: + clr a0 + move a0,@message_buffer + move @_thours,a0 ; Hours + jrnz _hour_gz1 + addk 12,a0 + jruc _time_is_am +_hour_gz1 + cmpi 12,a0 + jrle _time_is_am + move @_thours,a0 ; Hours + subi 12,a0 +_time_is_am + movi 12,a1 ; Max hours + calla dec_to_asc + calla concat_string + movi TSEPERATOR,a4 + calla concat_rom_string + move @_tminutes,a0 + cmpi 9,a0 + jrgt _no_min_pad + movi ZPAD,a4 + calla concat_rom_string +_no_min_pad + move @_tminutes,a0 + movi 59,a1 ; Max Minutes + calla dec_to_asc + calla concat_string + movi TSEPERATOR,a4 + calla concat_rom_string + move @_tseconds,a0 + move a0,@_last_seconds + cmpi 9,a0 + jrgt _no_sec_pad + movi ZPAD,a4 + calla concat_rom_string +_no_sec_pad + move @_tseconds,a0 + movi 59,a1 ; Max Seconds + calla dec_to_asc + calla concat_string + move @_thours,a0 ; Hours + cmpi 11,a0 + jrgt _time_is_pm + movi TIME_AM,a4 + jruc _tdone +_time_is_pm + movi TIME_PM,a4 +_tdone + calla concat_rom_string + movi TIME_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS +_time_check_sw: + SLEEP 1 + move @_switch2_addr,a0,L + move *a0,a0,W + move @_switch_addr,a1,L + move *a1,a1,W + sll 16,a0 + srl 16,a0 + sll 16,a1 + srl 16,a1 + and a0,a1 + move @_coin_addr,a0,L + move *a0,a0,W + ori 10h,a0 + sll 16,a0 + or a1,a0 + not a0 + jrnz _dtime_done + move @_tseconds,a0 + move @_last_seconds,a1 + cmp a0,a1 + jrz _time_check_sw + movi 1cch,a3 + calla SNDSND + move @CONTROL,a0 ; Make sure transparency is OFF + move a0,-*sp + andni 020h,a0 + move a0,@CONTROL + movi [CTIME_Y,0],a0 ; Get rid of calibrating message + movi [20,400],a1 + movi ROBO_BLACK,a2 + fcall RECTANGLE,b6 + move *sp+,a0 + move a0,@CONTROL ; Restore CONTROL register + jruc _display_time +_dtime_done + RETP + + +GO_DISPLAY: + calla CLR_SCRN ; Clear the screen + movi M_CLK_DISPLAY,a2 ; Put up Title Box + movi ROBO_GREEN,a3 + JSRP TOP_BOX +GO_CLKS: +; move @_clk_rd,a0,L ;Save current auto update state +; move a0,@_auto_update_save,L +; clr a0 ;Enable auto update +; move a0,@_clk_rd,L +; JSRP _GetTime + movi MESS_CLKD_PROMPTS,a8 ; Put up assorted prompts + JSRP L_MESS + SLEEP 5 + movi DAY_TABLE,a8 ; Put Day of week up + move @_tday,a0 ; Day of week (1-7) + dec a0 + cmpi 6,a0 + jrgt _bad_day + sll 5,a0 + add a0,a8 + move *a8,a4,L + calla copy_rom_string + movi DAY_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS +_bad_day + movi MONTH_TABLE,a8 ; Put month of year up + move @_tmonth,a0 ; Month of year number (0-11) + dec a0 + cmpi 11,a0 + jrgt _bad_month + sll 5,a0 + add a0,a8 + move *a8,a4,L + calla copy_rom_string ; Copy month name to buffer +_bad_month + move @_tdate,a0 ; Date (1-31) + cmpi 9,a0 + jrgt _no_date_pad + movi ZPAD,a4 + calla concat_rom_string +_no_date_pad + move @_tdate,a0 ; Date (1-31) + movi 31,a1 ; Maximum Date + calla dec_to_asc ; Convert Date to ascii + calla concat_string ; Add to buffer + movi MESS_HYEARS,a4 ; , 19 + calla concat_rom_string ; Add to buffer + move @_tyear,a0 ; Year (0 - 99) + cmpi 9,a0 + jrgt _no_year_pad + movi ZPAD,a4 + calla concat_rom_string +_no_year_pad + move @_tyear,a0 + movi 99,a1 ; Max year + calla dec_to_asc ; Convert Years to ascii + calla concat_string ; Add to buffer + movi DATE_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS + JSRP _display_time +; move @_auto_update_save,a0,L ;Restore Auto Update state +; move a0,@_clk_rd,L + movi 0c7h,a3 + calla SNDSND + RETP ; All done + +_transfer_time + mmtm sp,a1,a2,a3 + movi _rtc_seconds,a1 + movi _tseconds,a2 + movi 7,a3 +_tt_loop1 + move *a2+,*a1+ + dsjs a3,_tt_loop1 + mmfm sp,a1,a2,a3 + rets + +GO_CLOCK_SET: + calla CLR_SCRN ; Clear the screen + movi M_CLK_SET,a2 ; Put up Title Box + movi ROBO_GREEN,a3 + JSRP TOP_BOX + calla _set_time + movi MESS_RTC_SET,a8 ; Put up "CLOCK SET" message + JSRP L_MESS +; SLEEP 16 + SLEEP 30 + callr _transfer_time + jauc GO_CLKS + +GO_TIME_SET +; JSRP _GetTime + callr _transfer_time + movi MEN_TIME_SET,a8 +GEN_TIME_SET + move a8,-*a12,L + movk 1,a0 + move a0,-*a12,W +TIME_SET_LOOP + calla CLR_SCRN + movi CS_ADV,a8 + JSRP L_MESS + move *a12(WORD_SIZE),a8,L + JSRP MENU_TOP + movi COLOR_RED,a9 + calla COL_INST + move *a12,a9,W + JSRP B_MENU + move a9,a9 + jrz GO_TS_QUIT +_not_set_time + move a8,*a12,W + move *a9(AD_ROUT),a0,L + movi TIME_SET_LOOP,a7 + move a7,-*a12,L + cmpi 9,a8 + jrz _time_set + jump a0 +_time_set + jauc GO_CLOCK_SET +GO_TS_QUIT + addk WORD_SIZE,a12 + addk LONG_SIZE,a12 + RETP + +_do_title + mmtm a12,a10,a11,a8 ;SAVE STUFF FOR CALLER +; move @_clk_rd,a0,L ;Save current auto update state +; move a0,@_auto_update_save,L +; clr a0 ;Enable auto update +; move a0,@_clk_rd,L +; JSRP _GetTime + subk 4,a10 + move a11,a6 + movi CS_HX,a9 + addi TIT_LRX,a9 + srl 1,a9 + subk 4,a9 + sll 16,a10 ;SHIFT Y DOWN + movy a10,a9 ;X,Y SET + move a2,a8 ;TEXT POINTER + clr a0 ;NO SLEEP + movi SPACING20,a10 + movi RD15FONT,a11 + JSRP STRCNRM ;DO IT! + mmfm a12,a10,a11,a8 ;POP THE STUFF. + RETP + +_adj_time_and_date + movi DAY_TABLE,a8 ; Put Day of week up + move @_rtc_day,a0 ; Day of week number (1-7) + dec a0 +; cmpi 6,a0 +; jrgt _abad_day + sll 5,a0 + add a0,a8 + move *a8,a4,L + calla copy_rom_string + movi DAYADJ_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS +_abad_day + movi MONTH_TABLE,a8 ; Put month of year up + move @_rtc_month,a0 ; Month of year number (1 - 12) + dec a0 +; cmpi 11,a0 +; jrgt _abad_month + sll 5,a0 + add a0,a8 + move *a8,a4,L + calla copy_rom_string ; Copy month name to buffer +_abad_month + move @_rtc_date,a0 ; Date + cmpi 9,a0 + jrgt _no_date_pad1 + movi ZPAD,a4 + calla concat_rom_string +_no_date_pad1 + move @_rtc_date,a0 ; Date + movi 31,a1 ; Maximum Date + calla dec_to_asc ; Convert Date to ascii + calla concat_string ; Add to buffer + movi MESS_HYEARS,a4 ; , 19 + calla concat_rom_string ; Add to buffer + move @_rtc_year,a0 ; Year + cmpi 9,a0 + jrgt _no_year_pad1 + movi ZPAD,a4 + calla concat_rom_string +_no_year_pad1 + move @_rtc_year,a0 + movi 99,a1 ; Max year + calla dec_to_asc ; Convert Years to ascii + calla concat_string ; Add to buffer + movi DATEADJ_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS + + clr a0 + move a0,@message_buffer + move @_rtc_hours,a0 ; Hours + jrnz _hour_gz + addk 12,a0 + jruc _time_is_am1 +_hour_gz + cmpi 12,a0 + jrle _time_is_am1 + move @_rtc_hours,a0 ; Hours + subi 12,a0 +_time_is_am1 + movi 12,a1 ; Max hours + calla dec_to_asc + calla concat_string + movi TSEPERATOR,a4 + calla concat_rom_string + move @_rtc_minutes,a0 + cmpi 9,a0 + jrgt _no_min_pad1 + movi ZPAD,a4 + calla concat_rom_string +_no_min_pad1 + move @_rtc_minutes,a0 + movi 59,a1 ; Max Minutes + calla dec_to_asc + calla concat_string + movi TSEPERATOR,a4 + calla concat_rom_string + move @_rtc_seconds,a0 + cmpi 9,a0 + jrgt _no_sec_pad1 + movi ZPAD,a4 + calla concat_rom_string +_no_sec_pad1 + move @_rtc_seconds,a0 + movi 59,a1 ; Max Seconds + calla dec_to_asc + calla concat_string + move @_rtc_hours,a0 ; Hours + cmpi 11,a0 + jrgt _time_is_pm1 +_time_is_afm + movi TIME_AM,a4 + jruc _tdone1 +_time_is_pm1 + cmpi 24,a0 + jrz _time_is_afm + movi TIME_PM,a4 +_tdone1 + calla concat_rom_string + movi TADJ_SETUP,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS + RETP + +_set_it_up + calla CLR_CUR + movi 6,a1 + movk 5,a4 + calla CADJ_BOX + movi 1,a1 + clr a4 + calla CADJ_BOX + movi [ADJ_CULY+5,CS_HX+5],A3 + movi [21,185],A4 + calla BLNKAREA + movi [ADJ_CULY+31,CS_HX+5],A3 + movi [58,185],A4 + calla BLNKAREA + SLEEPK 2 ; I dare you to take this out + RETP + + +YEAR_SET + JSRP _set_it_up + movi MESS_YEAR_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +MONTH_SET + JSRP _set_it_up + movi MESS_MONTH_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +DATE_SET + JSRP _set_it_up + movi MESS_DATE_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +DAY_SET + JSRP _set_it_up + movi MESS_DAY_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +HOUR_SET + JSRP _set_it_up + movi MESS_HOUR_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +MINUTE_SET + JSRP _set_it_up + movi MESS_MINUTE_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +SECOND_SET + JSRP _set_it_up + movi MESS_SECOND_SET,a2 + JSRP _do_title + JSRP _adj_time_and_date + RETP + +; a0 = value code +; a8 = PTR to data struct +; TRASHES a0, a3, a2 +_ts_val_up: + mmtm sp,a0,a2,a3 + sll 4,a0 + addi _rtc_seconds,a0 + move *a0,a3 + addk 1,a3 + move *a8(AD_MAX),a2,L + cmp a3,a2 + jrge _ts_vu_done + move *a8(AD_MIN),a3,L +_ts_vu_done + andi 0ffh,a1 + move a3,*a0 + mmfm sp,a0,a2,a3 + rets + +; a0 = value code +; a8 = PTR to data struct +; TRASHES a0, a3 +_ts_val_down: + mmtm sp,a0,a3,a1 + sll 4,a0 + addi _rtc_seconds,a0 + move *a0,a3 + subk 1,a3 + move *a8(AD_MIN),a1,L + cmp a1,a3 + jrge _ts_vd_done + move *a8(AD_MAX),a3,L +_ts_vd_done + andi 0ffh,a3 + move a3,*a0 + mmfm sp,a0,a3,a1 + rets + +GEN_TS: + movk 2,a0 + move a0,@_switch_map_mode,L + move a9,*a13(PDATA),L + move a9,a8 + calla CLR_MAIN + calla ADJ_INST + JSRP ST_STICK + SLEEPK 2 +TS_CHNG + SLEEPK 1 + movi 31000h,a5 + JSRP GETSTICK + move *a13(PDATA),a8,L + move a0,a1 + jrz TS_CHNG + move *a8(AD_CMOS),a0,W ; Get What we are adjusting + cmpi 3,a1 + jrz TS_BUTT + cmpi 2,a1 + jrz TS_DOWN + callr _ts_val_up ; Incrment the value + jruc TS_JOIN +TS_DOWN: + callr _ts_val_down ; Decrement the value +TS_JOIN: + movi beep1_snd,a3 + calla SNDSND + JSRP TS_UPDATE + jruc TS_CHNG +TS_UPDATE: + move *a8(AD_NAMEIT),a0,L + movi ROBO_LASER,a11 + jump a0 +TS_BUTT: + movi beep2_snd,a3 + calla SNDSND + JSRP TS_UPDATE + SLEEPK 5 +TS_CAN: + movk 1,a0 + move a0,@_switch_map_mode,L + RETP + + +******************************** +* DIAGNOSTIC TESTS +* +* SOUND TEST STUFF + +NCHAN EQU 6 ;DECLARE NUMBER OF ALLOWED CHANNELS +MUSICHAN EQU 3 ;THIS CHANNEL IS FOR THE TUNES + + +;RESETBIT EQU 0FE00H ;Sound board reset bit + + +GO_STEST + + CALLA CLR_SCRN + + movi MEN_SOUNDTEST,a8 + movk 1,a9 ;CURSOR ON 1st ENTRY + + JAUC GEN_MENU ;THIS WILL RETURN TO LEVEL ABOVE US! + +; jsrp B_MENU ;SEE IF THEY WANT PAGE 2. +; cmpi 1,A8 ;DID WE GET 1'ST ENTRY? +; RETP + +SNDTST + MOVI SNDMES,A8 ;MESSAGE POINTER +SNDTLP + CALLA SCRCLR + MOVI M_STEST,A0 ;SOUND TEST MESSAGE + MOVI >6080,A1 + CLR A2 + MOVI ROBO_WHITE,A3 + CALLA STRNEW1 + MOVI >B080,A1 ;SCREEN ADDRESS + MOVE A8,A0 + CALLA STRNEW1 + ADDK 8,A0 + MOVB *A0,A5 ;Channel + ADDK 8,A0 + MOVB *A0,A3 ;Sound # + sll 32-8,a3 ;Kill sign extend + srl 32-8,a3 + ADDK 8,A0 + CALLA SNDSND + MOVE A0,A8 + MOVE A13,A13 ;AUTO-CYCLE? + JRNE SNDSLP ;NO + CALLA WDOGDIS + MOVI 3000000,A13 +SNDAUTO DSJS A13,SNDAUTO + JRUC SNDSLP1 +SNDSLP + SLEEP 120 +SNDSLP1 + MOVB *A8,A5 + JRNE SNDTLP + MOVE A13,A13 ;AUTO CYCLE EXIT + JREQ SNDX1 + RETP + +SNDX1 RETS + +*SOUND TABLE +*MESSAGE,CHANNEL,SOUNDCODE +* +SNDMES + .byte "TUNE 1 (1)",0 + .byte MUSICHAN,1 + .byte "NO WAY (E6)",0 + .byte 1,>e6 + .byte "EXPL1 (30)",0 + .byte 4,>30 + .byte "TUNE 2 (9)",0 + .byte MUSICHAN,9 + .byte "SPIDER BOUNCE (83)",0 + .byte 4,>83 + .byte "MUSIC OFF (0)",0 + .byte MUSICHAN,0 + .byte 0 ;THE END OF TABLE + .even + + .ref SNDPROTOPROMPT + .ref SNDRELEASEPROMPT + .ref SNDTIMEOUT + .ref SOUNDSUP + .ref _snd_chip_count + +snd_vprompt + .string "SOUND SYSTEM VERSION: ",0 + .even + +snd_rev_mes + MESS_MAC RD7FONT,SPACING07,200,227,ROBO_GREEN,STRCNRM,0 + .byte 0,0,0 + .even + +snd_tout_mes + MESS_MAC RD7FONT,SPACING07,200,227,ROBO_RED,STRCNRM,0 + .byte 0,0,0 + .even + +#************************************************************* +* + SUBRP GetSoundRev + move @_coin_counter_addr,a0,L + movi 030h,a1 ; Yank down the reset + move a1,*a0,W + movi 10000,a1 ; Hold it fer a while + dsjs a1,$ + movi 020h,a1 ; Let it go + move a1,*a0,W + movi 10000,a1 + dsjs a1,$ + move @_sound_addr,a0,L ; Bypass the diags + movb a0,*a0 + movi 500000,a1 ; Wait fer a while +#swait_lp + dsjs a1,#swait_lp + clr a3 ; Turn on the sounds + move a3,@SOUNDSUP,W + movi 999,a3 ; Send revision request sound call + calla SNDSND + movi 1000000,a2 +#sndrev_loop + move @_soundirq_addr,a0,L ; Wait fer a response + move *a0,a1,W + btst B_SDAV,a1 ; Got a response ? + jrz #snd_response ; BR = yes + dsjs a2,#sndrev_loop +#snd_timeout + movi SNDTIMEOUT,a4 ; If we get here we never got a response + calla copy_rom_string + movi snd_tout_mes,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS + + jruc #sndrev_done ; Then we be done +#snd_response + movi snd_vprompt,a4 + calla copy_rom_string + + move @_sound_addr,a0,L ; Get sound revision data + move *a0,a0,W + move a0,@_snd_chip_count,W ; Put up sound revision + move a0,a1 + andi 0ffh,a1 + cmpi 0ffh,a1 + jrz #snd_timeout + andi 0f0h,a1 + cmpi 0d0h,a1 + jrz #proto_version + movi SNDRELEASEPROMPT,a4 + jruc #do_snd_version +#proto_version + movi SNDPROTOPROMPT,a4 +#do_snd_version + calla concat_rom_string + move @_snd_chip_count,a0,W + andi 0fh,a0 + movk 15,a1 + calla dec_to_asc + calla concat_string + movi snd_rev_mes,a0 + callr _setup_message + movi _setup_mess,a8 + JSRP L_MESS +#sndrev_done + RETP + +******************************************************************************* +DO_GENTEST + + CALLA CLR_SCRN + MOVI M_DIGT,A2 + MOVI ROBO_GREEN,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + CALLA SURE_BOX ;PUT A NICE BOX UP! + + movi #snd_testing_mess,a8 + JSRP L_MESS + + JSRP GetSoundRev + + ;reset the board + movi SNDRSTBIT|32,a0 ;pull bit low +; move a0,@COIN_COUNTERS,W + move @_coin_counter_addr,a8,L + move a0,*a8,W + movi 8,a14 ;wait a bit + dsjs a14,$ + + movi 32,a0 ;send it high again +; move a0,@COIN_COUNTERS,W + move @_coin_counter_addr,a8,L + move a0,*a8,W + + SLEEP TSEC/4 ;250ms wait + + movi TSEC*7,a0 ;wait for data available + JSRP poll_sdav + +; movb @SOUNDR,a0 ;read from the board (better be 0x79) + move @_sound_addr,a0,L + movb *a0,a0 + cmpi 79h,a0 + jrne sdav_not79 + + movi TSEC/5,a0 + JSRP poll_sdav ;great. now wait for the bong count + +; movb @SOUNDR,a0 + move @_sound_addr,a0,L + movb *a0,a0 + X32 a0 + addi diag_message_table,a0 + move *a0,a8,L + JSRP L_MESS + + jauc ANY_BUT + +sdav_not79 + movi AUD_SNDERR4,a0 + calla AUD1 + .if DEBUG ;sound board misbehaving. should + LOCKUP ; write a 0x79 after the checksum + .endif ; tests. it wrote something else. + jauc ANY_BUT + +diag_message_table + .long #check_hardware + .long #board_ok + .long #bad_u2_checksum + .long #bad_u3_checksum + .long #bad_u4_checksum + .long #bad_u5_checksum + .long #bad_u6_checksum + .long #bad_u7_checksum + .long #bad_u8_checksum + .long #bad_u9_checksum + .long #bad_ram + + +**************************************** +* Wait for sound board Data AVailable to go active, with timeout. +* >a0=timeout +* 1212 + AMAC M_PLAYS,DOPLAYS,0,ROBO_YELLOW +; AMAC M_HSLEFT,DOHSLEFT,0,ROBO_YELLOW + .long 0 + +amst_s TXTLINE "ATTRACT MODE STARTS" +M_START TXTLINE "MID GAME STARTS" +M_CONTO TXTLINE "CONTINUES OFFERED" +M_CONT TXTLINE "CONTINUES TAKEN" +M_EXTRA TXTLINE "EXTRA MEN COLLECTED/EARNED" +M_P1MIN TXTLINE "HOURS OF SINGLE PLAY" +M_P2MIN TXTLINE "HOURS OF DUAL PLAY" +M_HOURS TXTLINE "TOTAL HOURS OF PLAY" +M_AVGT .byte "AVG. ",ASCII_DQ,"PLAYER",ASCII_DQ," GAME TIME (MIN.)",0 + .even + + +;* BOTTOM HALF OF COIN AUDIT PAGE 1 TABLE +;COIN_A2 .WORD CP2_Y ;Y START +; .WORD AUD_DY ;Y BETWEEN ENTRIES +; .WORD AUD_LM ;LEFT MARGIN X +; .WORD AUD_RM ;RIGHT MARGIN X +; AMAC M_START,STARTS,0,ROBO_YELLOW +; AMAC M_CONT,CONTINS,0,ROBO_YELLOW +; AMAC M_PLAYS,DOPLAYS,0,ROBO_YELLOW +; AMAC M_HSLEFT,DOHSLEFT,0,ROBO_YELLOW +; .LONG 0 + +************************************************************************** +* * +* COIN_D1 * +* * +* THIS IS TOP HALF OF DETAILED COIN AUDIT PAGE * +* ITS THE SAME AS THE OTHER COIN PAGE WITH THE Y POSITIONING * +* A LITTLE DIFFERENT * +* * +************************************************************************** +;COIN_D1 +; .WORD 39H ;Y START +; .WORD 11H ;Y BETWEEN ENTRIES +; .WORD AUD_LM ;LEFT MARGIN X +; .WORD AUD_RM ;RIGHT MARGIN X +; AMAC M_LCOIN,0,AUDLCOIN,ROBO_YELLOW +; AMAC M_CCOIN,0,AUDCCOIN,ROBO_YELLOW +; AMAC M_RCOIN,0,AUDRCOIN,ROBO_YELLOW +; .LONG 0 +* +* DOOR CLOSED AUDITS. +* +;COIN_D2 +; .WORD 090H ;Y START +; .WORD 11H ;Y BETWEEN ENTRIES +; .WORD AUD_LM ;LEFT MARGIN X +; .WORD AUD_RM ;RIGHT MARGIN X +; AMAC M_LCOIN,0,AUDLCDC,ROBO_YELLOW +; AMAC M_CCOIN,0,AUDCCDC,ROBO_YELLOW +; AMAC M_RCOIN,0,AUDRCDC,ROBO_YELLOW +; .LONG 0 + +************************************************************************** +* * +* GAME PLAY AUDIT SCREEN * +* * +************************************************************************** + + .asg 50,LM + .asg 400-50,RM + +GAME_AUDS1 + .word 55-10,11,LM,RM ;Y start, Y spacing, L margin, R margin + AMAC str_totuptime, prn_uptime,0, ROBO_WHITE + AMAC str_totpltime, prn_pltime,0, ROBO_WHITE + AMAC str_1pplay, prn_1plpct,0, ROBO_BLUE + AMAC str_2pplay, prn_2plpct,0, ROBO_BLUE + AMAC str_totstarts, 0,AUD_TOTSTARTS,ROBO_YELLOW + AMAC str_amodstarts, 0,AUD_PRESTARTS,ROBO_YELLOW + AMAC str_contoff, 0,AUD_CONTOFF, ROBO_CYAN + AMAC str_conttaken, 0,AUD_CONTTAKN, ROBO_CYAN + AMAC str_vscpus, 0,AUD_VSCPUS, ROBO_PURPLE + AMAC str_vscpuf, 0,AUD_VSCPUF, ROBO_PURPLE + AMAC str_cpuwin, prn_cpuwins,0, ROBO_GREEN + AMAC str_credlen, prn_credlen,0,ROBO_GREEN + AMAC str_inter, 0,AUD_INTERCON, ROBO_YELLOW + AMAC str_wwf, 0,AUD_WWF, ROBO_YELLOW + .long 0 + +GAME_AUDS2 + .word 55-10,11,LM,RM ;Y start, Y spacing, L margin, R margin + AMAC str_gametime, prn_avgtime,0, ROBO_BLUE + AMAC str_vshumtime, prn_hvhtime,0, ROBO_WHITE + AMAC str_cpuwintime, prn_cwintime,0, ROBO_WHITE + AMAC str_cpulosstime,prn_closstime,0,ROBO_WHITE + AMAC str_fasthvh, prn_fasthvh,0, ROBO_GREEN + AMAC str_fastcpuwin, prn_fastcwin,0, ROBO_GREEN + AMAC str_combo_per, prn_combogames,0, ROBO_GREEN + AMAC str_fasthumwin, prn_fasthwin,0, ROBO_GREEN +; AMAC str_kanomorph, prn_kanomorph,0, ROBO_GREEN + + AMAC str_lockups, 0,AUD_LOCKUP, ROBO_CYAN + AMAC str_lockups2, 0,AUD_LOCKUP2, ROBO_CYAN + AMAC str_snderr1, 0,AUD_SNDERR1, ROBO_PINK + AMAC str_snderr2, 0,AUD_SNDERR2, ROBO_PINK + AMAC str_snderr3, 0,AUD_SNDERR3, ROBO_PINK + AMAC str_snderr4, 0,AUD_SNDERR4, ROBO_PINK + .long 0 + +GAME_AUDS2a + .word 55-10,11,LM,RM ;Y start, Y spacing, L margin, R margin + AMAC str_hdtohd, 0,AUD_HEADTOHEAD,ROBO_WHITE + AMAC str_rumble, 0,AUD_ROYALRUM, ROBO_WHITE + AMAC str_rumwins, 0,AUD_RRWINS, ROBO_GREEN + AMAC str_p1icons, 0,AUD_P1ICONMAX,ROBO_CYAN + AMAC str_p2icons, 0,AUD_P2ICONMAX,ROBO_CYAN + .long 0 + +GAME_AUDS3a + .word 55-10+22,11,LM,RM-140 ;Y start, Y spacing, L margin, R margin + AMAC str_bhart, 0,AUD_BHART, ROBO_GREEN + AMAC str_rramo, 0,AUD_RRAMO, ROBO_WHITE + AMAC str_under, 0,AUD_UNDER, ROBO_BLUE + AMAC str_yoko, 0,AUD_YOKO, ROBO_YELLOW + AMAC str_smich, 0,AUD_SMICH, ROBO_CYAN + AMAC str_bbbig, 0,AUD_BBBIG, ROBO_PURPLE + AMAC str_dclow, 0,AUD_DCLOW, ROBO_GREEN + AMAC str_lluge, 0,AUD_LLUGE, ROBO_YELLOW +; AMAC str_adam, dummy,0, ROBO_BLUE + .long 0 + +GAME_AUDS3b + .word 55-10+22,11,LM,RM-105-12 ;Y start, Y spacing, L margin, R margin + AMAC str_space, bhart_hwinpct,0,ROBO_GREEN + AMAC str_space, rramo_hwinpct,0,ROBO_WHITE + AMAC str_space, under_hwinpct,0,ROBO_BLUE + AMAC str_space, yoko_hwinpct,0,ROBO_YELLOW + AMAC str_space, smich_hwinpct,0,ROBO_CYAN + AMAC str_space, bbbig_hwinpct,0,ROBO_PURPLE + AMAC str_space, dclow_hwinpct,0,ROBO_GREEN + AMAC str_space, lluge_hwinpct,0,ROBO_YELLOW + .long 0 + +GAME_AUDS3c + .word 55-10+22,11,LM,RM-35 ;Y start, Y spacing, L margin, R margin + AMAC str_space, 0,AUD_BHARTC, ROBO_GREEN + AMAC str_space, 0,AUD_RRAMOC, ROBO_WHITE + AMAC str_space, 0,AUD_UNDERC, ROBO_BLUE + AMAC str_space, 0,AUD_YOKOC, ROBO_YELLOW + AMAC str_space, 0,AUD_SMICHC, ROBO_CYAN + AMAC str_space, 0,AUD_BBBIGC, ROBO_PURPLE + AMAC str_space, 0,AUD_DCLOWC, ROBO_GREEN + AMAC str_space, 0,AUD_LLUGEC, ROBO_YELLOW + .long 0 + +GAME_AUDS3d + .word 55-10+22,11,LM,RM-12 ;Y start, Y spacing, L margin, R margin + AMAC str_space, bhart_cwinpct,0,ROBO_GREEN + AMAC str_space, rramo_cwinpct,0,ROBO_WHITE + AMAC str_space, under_cwinpct,0,ROBO_BLUE + AMAC str_space, yoko_cwinpct,0,ROBO_YELLOW + AMAC str_space, smich_cwinpct,0,ROBO_CYAN + AMAC str_space, bbbig_cwinpct,0,ROBO_PURPLE + AMAC str_space, dclow_cwinpct,0,ROBO_GREEN + AMAC str_space, lluge_cwinpct,0,ROBO_YELLOW +; AMAC str_space, prn_adam,0, ROBO_WHITE + .long 0 + +GAUD_P3HEAD1 + MESS_MAC RD7FONT,SPACING07,RM-135,45,ROBO_BLUE,STRCNRM,0 + .STRING "PLAYER",0,0 + .EVEN + +GAUD_P3HEAD2 + MESS_MAC RD7FONT,SPACING07,RM-30,45,ROBO_BLUE,STRCNRM,0 + .STRING "CPU",0,0 + .EVEN + +GAUD_P3HEAD3 + MESS_MAC RD7FONT,SPACING07,RM-140,56,ROBO_RED,STRRNRM,0 + .STRING "USES",0,0 + .EVEN + +GAUD_P3HEAD4 + MESS_MAC RD7FONT,SPACING07,RM-105,56,ROBO_RED,STRRNRM,0 + .STRING "WINS",0,0 + .EVEN + +GAUD_P3HEAD5 + MESS_MAC RD7FONT,SPACING07,RM-35,56,ROBO_RED,STRRNRM,0 + .STRING "USES",0,0 + .EVEN + +GAUD_P3HEAD6 + MESS_MAC RD7FONT,SPACING07,RM,56,ROBO_RED,STRRNRM,0 + .STRING "WINS",0,0 + .EVEN + +;page 1 +str_totuptime TXTLINE "TOTAL GAME UPTIME (HRS:MINS)" +str_totpltime TXTLINE "TOTAL GAME PLAY TIME (HRS:MINS)" +str_1pplay TXTLINE "ONE-PLAYER PLAY" +str_2pplay TXTLINE "TWO-PLAYER PLAY" +str_totstarts TXTLINE "TOTAL STARTS" +str_amodstarts TXTLINE "ATTRACT MODE STARTS" +str_contoff TXTLINE "CONTINUES OFFERED" +str_conttaken TXTLINE "CONTINUES TAKEN" +str_vscpus TXTLINE "1P GAMES BEGUN" +str_vscpuf TXTLINE "1P GAMES FINISHED" +str_cpuwin TXTLINE "CPU VICTORIES" +str_inter TXTLINE "INTER BELT CHOSEN" +str_wwf TXTLINE "WWF BELT CHOSEN" +str_hdtohd TXTLINE "HEAD TO HEAD GAMES" +str_rumble TXTLINE "ROYAL RUMBLE GAMES" +str_rumwins TXTLINE "ROYAL RUMBLE WINS" +str_p1icons TXTLINE "PLAYER 1 MAX ICONS" +str_p2icons TXTLINE "PLAYER 2 MAX ICONS" + +;page 2 +str_gametime TXTLINE "AVG MATCH TIME (MIN:SEC)" +str_vshumtime TXTLINE "AVG HUMAN VS HUMAN TIME" +str_cpuwintime TXTLINE "AVG CPU WIN TIME" +str_cpulosstime TXTLINE "AVG CPU LOSS TIME" +str_fasthvh TXTLINE "FASTEST 2-PLAYER WIN" +;str_kanomorph TXTLINE "KANO TRANSFORMATIONS" +str_credlen TXTLINE "AVG 1 PLAYER TIME PER CREDIT" +str_fastcpuwin TXTLINE "FASTEST CPU WIN" +str_fasthumwin TXTLINE "FASTEST CPU LOSS" +str_combo_per TXTLINE "HUMAN COMBO GAMES" +str_lockups TXTLINE "DOGS" +str_lockups2 TXTLINE "PROCESS KO" +str_snderr1 TXTLINE "SND ERR #1 (IRQ)" +str_snderr2 TXTLINE "SND ERR #2 (ROM CHECKSUM)" +str_snderr3 TXTLINE "SND ERR #3 (RAM TEST)" +str_snderr4 TXTLINE "SND ERR #4 (SDAV)" + +;page 3 +str_bhart TXTLINE "BRET HART" +str_rramo TXTLINE "RAZOR RAMON" +str_under TXTLINE "UNDERTAKER" +str_yoko TXTLINE "YOKOZUNA" +str_smich TXTLINE "SHAWN MICHAELS" +str_bbbig TXTLINE "BAM BAM BIGELOW" +str_dclow TXTLINE "DOINK THE CLOWN" +str_lluge TXTLINE "LEX LUGER" +;str_adam TXTLINE "ADAM BOMB APPEARANCES" + +str_pct TXTLINE "%" + +str_space TXTLINE " " + .even + + .if 0 +ROBO_GREY EQU 0101H ;[0E0H-223,0E0H-223] +ROBO_WHITE EQU 0202H ;[0E1H-223,0E1H-223] +ROBO_RED EQU 0303H ;[0E2H-223,0E2H-223] +ROBO_ORANGE EQU 0404H ;[0E3H-223,0E3H-223] +ROBO_YELLOW EQU 0505H ;[0E4H-223,0E4H-223] +ROBO_GREEN EQU 0606H ;[0E5H-223,0E5H-223] +ROBO_BLUE EQU 0707H ;[0E6H-223,0E6H-223] +ROBO_LF EQU 03E3EH +ROBO_CYAN EQU 0E0EH ;[0EDH-223,0EDH-223] +ROBO_DECAY EQU 03F3FH +ROBO_RGOLD EQU 0A0AH ;[0E9H-223,0E9H-223] +ROBO_LASER EQU 03E3EH +ROBO_LASER2 EQU 03F3FH +ROBO_BLUWH EQU 0C0CH ;[0EBH-223,0EBH-223] +ROBO_PINK EQU 0303H ;[0E2H-223,0E2H-223] +ROBO_SKY EQU 0D0DH ;[0ECH-223,0ECH-223] ;LAST COLOR IN ROBO IS "SKY" COLOR +ROBO_PURPLE EQU ROBO_SKY ;PURPLE FOR TEST MODE +ROBO_BLACK EQU 1414H ;BLACK AS COAL + .endif + + +#***************************************************************************** +* total uptime +prn_uptime + movi AUD_UPTIME,a0 + calla GET_AUD + ;* 5 sec incs / 60 (sec p/min) = /12 + movk 12,a0 + divu a0,a1 ;mins + jruc P_TIME + + +#***************************************************************************** +* actual play time +prn_pltime + movi AUD_PLTIME,a0 + calla GET_AUD + ;* 5 sec incs / 60 (sec p/min) = /12 + movk 12,a0 + divu a0,a1 ;mins + jruc P_TIME + + +#***************************************************************************** +* percentage of 1 player play +prn_1plpct + movi AUD_PLTIME,a0 + calla GET_AUD + move a1,a4 + + movi AUD_1PLAYTIME,a0 + calla GET_AUD + movi 100,a0 + mpyu a0,a1 + move a1,a2 + move a4,a0 + callr ROUNDED_A0_INTO_A2 ;DIVIDES A0 INTO A2. RESULT IN A2 + move a2,a3 + jruc PERCENT_WORK + + +#***************************************************************************** +* percentage of 2 player play +prn_2plpct + movi AUD_PLTIME,a0 + calla GET_AUD + move a1,a4 + + movi AUD_2PLAYTIME,a0 + calla GET_AUD + movi 100,a0 + mpyu a0,a1 + move a1,a2 + move a4,a0 + callr ROUNDED_A0_INTO_A2 ;DIVIDES A0 INTO A2. RESULT IN A2 + move a2,a3 + jruc PERCENT_WORK + + +#***************************************************************************** +* +prn_cpuwins + movi AUD_VSCPUF,a0 + calla GET_AUD + move a1,a4 + + movi AUD_CPUWIN,a0 + calla GET_AUD + movi 100,a0 + mpyu a0,a1 + move a1,a2 + move a4,a0 + callr ROUNDED_A0_INTO_A2 ;DIVIDES A0 INTO A2. RESULT IN A2 + move a2,a3 + jruc PERCENT_WORK + + +#***************************************************************************** +* avg battle time (all categories) + +prn_avgtime + movi AUD_2PBTIME,a0 + calla GET_AUD + move a1,a3 + movi AUD_CPUWINTIME,a0 + calla GET_AUD + add a1,a3 + movi AUD_CPULOSETIME,a0 + calla GET_AUD + add a1,a3 + + movi AUD_VSHUMF,a0 + calla GET_AUD + move a1,a2 + movi AUD_VSCPUF,a0 + calla GET_AUD + add a1,a2 + + divu a2,a3 + move a3,a1 + jruc P_TIME + + +#***************************************************************************** +* avg 2-player battle time + +prn_hvhtime + movi AUD_2PBTIME,a0 + calla GET_AUD + + move a1,a3 + movi AUD_VSHUMF,a0 + calla GET_AUD + + divu a1,a3 + move a3,a1 + jruc P_TIME + + +#***************************************************************************** +* avg CPU win time + +prn_cwintime + movi AUD_CPUWINTIME,a0 + calla GET_AUD + + move a1,a3 + movi AUD_CPUWIN,a0 + calla GET_AUD + + divu a1,a3 + move a3,a1 + jruc P_TIME + + +#***************************************************************************** +* avg CPU loss time + +prn_closstime + movi AUD_CPULOSETIME,a0 + calla GET_AUD + + move a1,a3 + movi AUD_VSCPUF,a0 + calla GET_AUD + move a1,a2 + movi AUD_CPUWIN,a0 + calla GET_AUD + sub a1,a2 + + divu a2,a3 + move a3,a1 + jruc P_TIME + + +#***************************************************************************** +* fastest human v human win + +prn_fasthvh + movi AUD_FASTHDH,a0 + calla GET_AUD + jruc P_TIME + +#***************************************************************************** +;* KANO MORPHS +; +;prn_adam +;prn_kanomorph +; movi AUD_VSCPUF,a0 +; calla GET_AUD +; CMPI 3000,A1 +; JRLE ZERO_MORPHS +; MOVI 10,A0 +; CALLA RNDRNG0 +; MOVE A0,A8 +; PUSH A8 +; MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER +; CALLA LM_SETUP +; PULL A8 +; CALLA HEXTOASC ;NOW WE POINT TO THE STRING. +; move *a13(AT_PTR),a6,L ;Get *audit +; move *a6(AUD_COLOR),a6 +; JSRP RIGHT_FINISH ;PRINT THE LINE +;dummy +; RETP +; +;ZERO_MORPHS +; MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER +; CALLA LM_SETUP +; CLR A8 +; CALLA HEXTOASC ;NOW WE POINT TO THE STRING. +; move *a13(AT_PTR),a6,L ;Get *audit +; move *a6(AUD_COLOR),a6 +; JSRP RIGHT_FINISH ;PRINT THE LINE +; RETP + + +prn_credlen + MOVI AUD_CREDLEN,A0 + CALLA GET_AUD + MOVE A1,A3 + MOVI AUD_CREDLENNUM,A0 + CALLA GET_AUD + DIVU A1,A3 + MOVK 5,A1 ;TURN INTO SECONDS + MPYU A1,A3 ;A3 HAS SECONDS OF INTEREST + MOVE A3,A1 + jruc P_TIME + + +#***************************************************************************** +* fastest computer win + +prn_fastcwin + movi AUD_FASTCDH,a0 + calla GET_AUD + jruc P_TIME + + +#***************************************************************************** +* fastest computer loss + +prn_fasthwin + movi AUD_FASTHDC,a0 + calla GET_AUD + jruc P_TIME + + +#***************************************************************************** +* percentage of human combo games + +prn_combogames + movi AUD_COMBO,a2 + movi AUD_TOTALGAMES,a0 + jruc #set + +****************************************************************************** +* wrestler win percentages +* + +bhart_hwinpct + movi AUD_BHART,a0 + movi AUD_BHARTHW,a2 + jruc #set +bhart_cwinpct + movi AUD_BHARTC,a0 + movi AUD_BHARTCW,a2 + jruc #set +rramo_hwinpct + movi AUD_RRAMO,a0 + movi AUD_RRAMOHW,a2 + jruc #set +rramo_cwinpct + movi AUD_RRAMOC,a0 + movi AUD_RRAMOCW,a2 + jruc #set +under_hwinpct + movi AUD_UNDER,a0 + movi AUD_UNDERHW,a2 + jruc #set +under_cwinpct + movi AUD_UNDERC,a0 + movi AUD_UNDERCW,a2 + jruc #set +yoko_hwinpct + movi AUD_YOKO,a0 + movi AUD_YOKOHW,a2 + jruc #set +yoko_cwinpct + movi AUD_YOKOC,a0 + movi AUD_YOKOCW,a2 + jruc #set +smich_hwinpct + movi AUD_SMICH,a0 + movi AUD_SMICHHW,a2 + jruc #set +smich_cwinpct + movi AUD_SMICHC,a0 + movi AUD_SMICHCW,a2 + jruc #set +bbbig_hwinpct + movi AUD_BBBIG,a0 + movi AUD_BBBIGHW,a2 + jruc #set +bbbig_cwinpct + movi AUD_BBBIGC,a0 + movi AUD_BBBIGCW,a2 + jruc #set +dclow_hwinpct + movi AUD_DCLOW,a0 + movi AUD_DCLOWHW,a2 + jruc #set +dclow_cwinpct + movi AUD_DCLOWC,a0 + movi AUD_DCLOWCW,a2 + jruc #set +lluge_hwinpct + movi AUD_LLUGE,a0 + movi AUD_LLUGEHW,a2 + jruc #set +lluge_cwinpct + movi AUD_LLUGEC,a0 + movi AUD_LLUGECW,a2 + jruc #set +#set + calla GET_AUD + move a1,a4 + move a2,a0 + calla GET_AUD + movi 100,a0 + mpyu a0,a1 + move a1,a2 + move a4,a0 + callr ROUNDED_A0_INTO_A2 + move a2,a3 + jruc PERCENT_WORK + +************************************************************************** +* NUMBER_WORK - Print audit number +* A3=# + +PERCENT_WORK + MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER + CALLA LM_SETUP + + MOVE A3,A8 ;NOW WE HAVE BINARY NUMBER + CALLA HEXTOASC ;NOW WE POINT TO THE STRING. + + PUSH a8 + move a8,a7 + movi str_pct,a8 + CALLA STRCAT + PULL a8 + + PUSH a0 + move *a13(AT_RX),a0 + PUSHP a0 + addi 13,a0 + move a0,*a13(AT_RX) + PULL a0 + + move *a13(AT_PTR),a6,L ;Get *audit + move *a6(AUD_COLOR),a6 + + JSRP RIGHT_FINISH + + PULLP a0 + move a0,*a13(AT_RX) ;restore right margin + RETP + +#***************************************************************************** + +MISC_AUD + .word 50,18,AUD_LM,AUD_RM ;Y start, Y spacing, LMar, RMar + AMAC M_SECBON,0,AUDSURV,ROBO_YELLOW ;WARPS TAKEN + AMAC M_HIDB,0,AUDBONE,ROBO_YELLOW ;GAMES NOT FINISHED + AMAC M_PLAYS,DOPLAYS,0,ROBO_YELLOW ;PLAYS ON TOP + AMAC M_P1MIN,DO_P1MIN,0,ROBO_YELLOW + AMAC M_P2MIN,DO_P2MIN,0,ROBO_YELLOW + AMAC M_AVGT,DO_AVGT,0,ROBO_YELLOW + AMAC M_ELAPSE,DO_ELAPSE,0,ROBO_YELLOW + AMAC adiff_s,diff_prt,0,>1212 + .LONG 0 + +adiff_s TXTLINE "GAME DIFFICULTY LEVEL" + + + .IF 0 +******************************** +* Display revision message +* Do coin DIP if enabled +* Check cmos, if bad reset to factory + +FACCHECK + calla dpageflip_off + + CALLA CLR_SCRN + MOVI DIAGP,A0 + CALLA pal_getf + + MOVI AUDSTAT,A0 ;CLEAR GAME STATE AUDIT + CLR A1 + CALLA STORE_AUDIT + + MOVI ROM_NAME,A2 + MOVI ROBO_LF,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + + .if YUNIT + move @SWITCH+30h,a0 + btst 6,a0 + jrnz fc40 ;No DIP coinage? + + movk 1,a0 ;Just coinage + calla FAC_SET + movi dipcoinage_mess,a8 + JSRP L_MESS +fc40 + .endif + + .if DEBUG + SLEEPK 1 ;Show it DEBUG + .else + SLEEP 120 ;Show it + .endif + + CALLA CMOS_VAL ;CMOS BOGUS? + JRZ FACC0 ;NO + + MOVI MESS_RESET,A8 ;ERROR MESSAGE + JSRP L_MESS + SLEEP 60 + + CALLR RES_ALL ;ALL TIME TABLE + clr a0 ;Full + CALLA FAC_SET + + MOVI MESS_FAC,A8 + CALLA LM_SETUP ;GET CONFIRMATION DATA READY. + JSRP LM_FINIS + SLEEP 60 + CALLA CMOS_VAL ;CMOS BOGUS? + JRZ FACC00 ;NO + + CALLA SCRCLR + MOVI MESS_RESET,A8 ;ERROR MESSAGE + JSRP L_MESS +FACC00 + SLEEP 240 + +FACC0 CALLA SCRCLR + + CREATE AMODE_PID,attract_mode + DIE + + +dipcoinage_mess + MESS_MAC RD7FONT,SPACING20,200,65,ROBO_WHITE,STRCNRM,0 + .byte "USING DIPSWITCH COINAGE",0,0 + .even + + .ENDIF + + +******************************** +* Octopus sucessful, show stats + +HID_P + CALLA display_init ;MAKE SURE A13 IS OK BEFORE ANY ACTIONS! + CALLA DIGSRT ;RE-INIT THE WORLD! + + MOVI ROM_NAME,A2 + MOVI ROBO_LF,A3 + JSRP TOP_BOX ;PRINT TITLE BOX. + +* A4 = UPPER LEFT Y,X * +* A5 = LOWER RIGHT Y,X * +* A6 = NUMBER OF SLICES GOING IN. * + + calla CLR_SCRN ;Clr screen + + movi COIN_OCTO_AUDS,a0 + JSRP PRNT_AUD + + movi AUD_Y_STRT,a0 ;aud Y start + MOVE a0,*A13(AT_Y),W ;set Y COORDINATE + MOVI AUDLCOIN,A8 ;NOW PRINT MONEY FOR 1ST 3 + JSRP PRINT_COL2 + JSRP WAIT_BUT + + calla CLR_SCRN ;Clr screen + movi GAME_AUDS1,A0 ;Show 1st screen + JSRP PRNT_AUD + JSRP WAIT_BUT + + calla CLR_SCRN ;Clr screen + movi GAME_AUDS2,A0 ;Show 2nd screen + JSRP PRNT_AUD + JSRP WAIT_BUT + + calla CLR_SCRN ;Clr screen + movi GAME_AUDS2a,A0 ;Show 3rd screen + JSRP PRNT_AUD + JSRP WAIT_BUT + + calla CLR_SCRN ;Clr screen + movi GAME_AUDS3a,A0 ;Show 4th screen data + JSRP PRNT_AUD + movi GAME_AUDS3b,A0 + JSRP PRNT_AUD + movi GAME_AUDS3c,A0 + JSRP PRNT_AUD + movi GAME_AUDS3d,A0 + JSRP PRNT_AUD + movi GAUD_P3HEAD1,a8 ;and the page headers + JSRP L_MESS + movi GAUD_P3HEAD2,a8 + JSRP L_MESS + movi GAUD_P3HEAD3,a8 + JSRP L_MESS + movi GAUD_P3HEAD4,a8 + JSRP L_MESS + movi GAUD_P3HEAD5,a8 + JSRP L_MESS + movi GAUD_P3HEAD6,a8 + JSRP L_MESS + JSRP WAIT_BUT + + ;volume adjust + JSRP GO_VOL + + JAUC DIAG_EX ;NOW GET OUT! + + +************************************************************************** +* PRNT_AUD - THIS IS CALLED TO PRINT OUT AN AUDIT TABLE + +AT_PTR EQU PDATA ;LONG +AT_Y EQU PDATA+LONG_SIZE ;WORD +AT_DY EQU AT_Y+WORD_SIZE ;WORD +AT_LX EQU AT_DY+WORD_SIZE ;WORD LEFT MARGIN X +AT_RX EQU AT_LX+WORD_SIZE ;WORD RIGHT MARGIN X +AT_OBJ EQU AT_RX+WORD_SIZE ;LONG OBJECT POINTER FOR COLLECTION ROUT +AT_MESS EQU AT_OBJ+LONG_SIZE ;LONG PRINT_MONEY MESSAGE STASH + +PRNT_AUD + MOVE *A0+,A1 ;GET STARTING HEIGHT + MOVE A1,*A13(AT_Y) ;STORE + + MOVE *A0+,A1 ;GET DY TO USE + MOVE A1,*A13(AT_DY) ;STASH IT AWAY + + MOVE *A0+,A1 ;GET LEFT MARGIN + MOVE A1,*A13(AT_LX) ;STORE + + MOVE *A0+,A1 ;GET RIGHT MARGIN + MOVE A1,*A13(AT_RX) ;STASH IT AWAY + + MOVE A0,*A13(AT_PTR),L ;SAVE POINTER INTO AREA + +PA1 JSRP aud_prtone + + MOVE *A13(AT_PTR),A0,L ;GET POINTER + ADDI AUD_T_SIZE,A0 + MOVE A0,*A13(AT_PTR),L ;PUT BACK + + CALLR ADD_AUDIT_DY + + MOVE *A0,A1,L ;ARE WE DONE? + JRNZ PA1 + SLEEPK 2 + + RETP + +************************************************************************** +* * +* ADD_AUDIT_DY * +* * +* THIS IS CALLED TO MOVE THE AUDIT Y (STORE IN * +* PROCESS AREA) TO THE NEXT AUDIT BY ADDING THE * +* CURRENT DY (ALSO STORED IN PROCESS AREA). * +* * +************************************************************************** +ADD_AUDIT_DY + MMTM SP,A1,A2 + MOVE *A13(AT_Y),A1,W + MOVE *A13(AT_DY),A2,W ;GET DELTA Y + ADD A2,A1 ;MOVE THE Y DOWN + MOVE A1,*A13(AT_Y),W + MMFM SP,A1,A2 + RETS + +BEGIN_AUDIT + MMTM SP,A0 + CLR A0 + MOVE A0,@BAD_AUD,W ;MONITOR CORRUPTION. + MMFM SP,A0 + RETS + +******************************** +* Print an audit line + + SUBRP aud_prtone + + CALLR BEGIN_AUDIT + MOVE *A13(AT_PTR),A3,L ;GET POINTER + MOVE *A3(AUD_ROUTINE),A4,L + jrz apo20 ;No code? + + movi apo50,a7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JUMP A4 ;"CALL" THE ROUTINE + +apo20 MOVE *A3(AUD_NUMBER),A0 ;FETCH THE AUDIT NUMBER + CALLA GET_AUD ;TURN INTO AUDIT COUNT! + MOVE A1,A3 ;PROTECT FOR A SECOND. + JSRP NUMBER_WORK ;GET THE NUMBER IN A3 UP THERE! + +apo50 + movi MESS_AUD_LINE,a8 + calla LM_SETUP ;Setup for audit printing + + move *a13(AT_PTR),a3,L ;Get *audit + move *a3(AUD_COLOR),a6 + move *a3(AUD_MESS),a8,L ;Get *text + + jruc LEFT_FINISH + + +******************************** +* LEFT_FINISH AND RIGHT_FINISH +* +* THESE ARE CALLED TO PUT AUDIT INFO +* ON THE LEFT OR RIGHT SIDE ONCE A8 POINTS AT +* THE CORRECT DATA TO PRINT + +LEFT_FINISH + CALLR TURN_RED_IF_NEC + CALLR SET_FOR_Y ;SET FOR AUDIT'S Y + CALLR SET_LEFT_X ;SET FOR LEFT X + JSRP LM_FINIS ;AND TYPE UP THE MESSAGE! + RETP + +RIGHT_FINISH + CALLR TURN_RED_IF_NEC ;CHANGE COLOR IF CORRUPTED. + CALLR SET_FOR_Y ;SET FOR AUDIT'S Y + CALLR SET_RIGHT_X + JSRP LM_FINIS ;FINISH THE JOB! + + MOVE @BAD_AUD,A0,W ;IS IT CORRUPTED? + JRZ RFX ;NOPE....RETURN + + MOVI MESS_ERROR,A8 + CALLA LM_SETUP ;SETUP "ERROR" + + CALLR SET_FOR_Y ;SET FOR AUDIT'S Y + ADDI 40000H,A9 ;PUSH 4 Y UNITS TO CENTER + CALLR SET_RIGHT_X + JSRP LM_FINIS ;FINISH THE JOB! + +RFX RETP + +TURN_RED_IF_NEC + MMTM SP,A3 + MOVE @BAD_AUD,A3 ;CHANGE TO RED? + JRZ DAA_1 ;NOPE...ITS OK! + MOVI ROBO_RED,A6 ;CHANGE COLOR TO RED +DAA_1 MMFM SP,A3 + RETS + +SET_FOR_Y + MMTM SP,A3 + MOVE *A13(AT_Y),A3,W ;GET Y COORDINATE + SLL 16,A3 ;PUT IT IN POSITION + MOVY A3,A9 ;PUT IT IN PLACE + MMFM SP,A3 + RETS + +SET_LEFT_X + MMTM SP,A3 + MOVE *A13(AT_LX),A3,W + MOVX A3,A9 ;PUT THE X IN PLACE + MMFM SP,A3 + RETS + +SET_RIGHT_X + MMTM SP,A3 + MOVE *A13(AT_RX),A3,W + MOVX A3,A9 ;PUT THE X IN PLACE + MMFM SP,A3 + RETS + +************************************************************************** +* NUMBER_WORK - Print audit number +* A3=# + +NUMBER_WORK + MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER + CALLA LM_SETUP + + MOVE A3,A8 ;NOW WE HAVE BINARY NUMBER + CALLA HEXTOASC ;NOW WE POINT TO THE STRING. + move *a13(AT_PTR),a6,L ;Get *audit + move *a6(AUD_COLOR),a6 + jruc RIGHT_FINISH + +************************************************************************** +* * +* GET_STARTS * +* * +* TOTAL GAME STARTS IN A2. * +* * +************************************************************************** +GET_STARTS + MMTM SP,A0,A1 + MOVK AUD1STRT,A0 + CALLA GET_AUD + MOVE A1,A2 + + MOVK AUD2STRT,A0 + CALLA GET_AUD + ADD A1,A2 + MMFM SP,A0,A1 + RETS + +************************************************************************** +* * +* GET_CONTS * +* * +* TOTAL GAME CONTINUES IN A2. * +* * +************************************************************************** +GET_CONTS + MMTM SP,A0,A1 + MOVK AUD1CONT,A0 + CALLA GET_AUD + MOVE A1,A2 + + MOVK AUD2CONT,A0 + CALLA GET_AUD + ADD A1,A2 + MMFM SP,A0,A1 + RETS + + +************************************************************************** +* Get total plays (Beginning+starts+continues) +* Rets: A2=# + +GET_PLAYS + PUSH a0 +; movk AUDBEGIN,a0 +; calla GET_AUD +; move a1,a0 + clr a0 + callr GET_STARTS ;Actually middle starts + add a2,a0 + callr GET_CONTS + add a0,a2 + PULL a0 + rets + +************************************************************************** +* * +* PRINT_MONEY * +* * +* THIS IS CALLED TO PRINT OUT THE "MONEY" ON THE MONEY * +* LINE OF THE AUDIT TABLE. * +* * +* AUDIT X AND Y IS SET FOR THE LINE TO DISPLAY IT ON. * +* * +* A8 HAS THE 1ST OF 3 AUDITS TO USE FOR THE CALCULATION * +* A9 HAS THE MESSAGE TO LEFT JUSTIFY ON THE CURRENT LINE * +* * +************************************************************************** +PRINT_COL + MOVI T_MONEY,A9 ;THIS ENTRYPOINT IS FOR COLLECTION MESSAGE + +PRINT_MONEY + MOVE A9,*A13(AT_MESS),L ;HOLD MESSAGE FOR WHEN WE NEED IT! + MOVI ADJCDIV,A0 ;IF DIVISOR IS ZERO..THEN ITS OFF! + CALLA GET_ADJ + JRZ NO_MONEY ;THAT'S ALL FOLKS! + + CALLR BEGIN_AUDIT ;KEEP TRACK OF SANITY OF CALC. +* +* ROUTINE IN A2 FORMS STRING BASED ON 3 AUDITS STARTING +* WITH THE NUMBER IN A8. +* + CALLR STR_OBJ ;GET AN OBJECT FOR STRINGING + JRC NO_MONEY ;COULDN'T GET AN OBJECT! + + CALLR SUM_COINS ;ADD UP THE COIN PARTS IN A2 + +* +* WE'RE DOING A PREFIX STRING...NO PREFIX IF ITS BEEN TAMPERED +* + CALLR SIXP ;HAVE THE 6 BEEN TAMPERED + JRZ NO_PREFIX + CALLR GET_CSPT ;A6 POINTS AT CSECECT DATA. + MOVE *A6(CS_LMES),A8,L ;LEFT STRING FOR MONEY TOTAL + CALLA STRCAT ;SHOVE THE STRING IN! + +NO_PREFIX + MOVK 1,A0 ;DIVIDE COINS BY 1 IF ITS BEEN TAMPERED WITH + CALLR SIXP + JRZ DIV_BY_1 ;TAMPERED WITH...DIVIDE BY 1 FOR "COINS" + + MOVI ADJCDIV,A0 ;GET THE COIN PARTS PLEASE + CALLA GET_ADJ +* +* GET QUOTIENT IN A2 +* REMAINDER IN A3 +* +DIV_BY_1 + MOVE A2,A3 ;SETUP AS DIVIDEND + CLR A2 + DIVU A0,A2 ;DIVIDE UNITS/DIVISOR + + MOVE A2,A8 ;WE NEED TO PUT QUOTIENT IN STRING + CALLA HEXTOASC ;THIS FORMS STRING FOR QUOTIENT + + CALLA STRCAT ;ADD QUOTIENT TO PRINTOUT + + CMPI 1,A0 ;IS DIVISOR ONE?????? + JRZ NOFRAC ;YEP.......NO DECIMAL! +* +* WE HAVE A DIVISOR.....WE NEED TO DISPLAY CENTS. +* + MOVI ME_DECIMAL,A8 ;ADD DECIMAL POINT + CALLA STRCAT ;ITS THERE! +* +* REMAINDER IS IN A3....TURN IT TO 100THS. +* + MOVI 100,A2 + MPYU A2,A3 ;REMAINDER TIMES 100 + MOVE A3,A2 ;DIVIDEND IN A2 + + CALLR ROUNDED_A0_INTO_A2 + CALLR A2_100TH ;CAT THE 100THS IN A2 TO THE A7 STRING. + +NOFRAC + MOVI COINS_TRAIL,A8 ;ASSUME IT WILL BE "COINS" + CALLR SIXP ;TAMPERED? + JRZ COIN_SUF ;YEP....USE " COINS" + MOVE *A6(CS_RMES),A8,L ;FINISH IT OFF WITH RIGHT STRING + +COIN_SUF + CALLA STRCAT ;SHOVE THE STRING IN! + MOVI M_MONEY,A8 ;MESSAGE FOR THIS LINE PASSED IN A9 + CALLA LM_SETUP + + MOVE @TMPOBJ,A8,L ;POINTER TO MONEY STRING + JSRP RIGHT_FINISH ;PUT ON RIGHT MARGIN + + CALLR STR_FREE + + MOVE *A13(AT_MESS),A8,L ;SETUP PASSED MESSAGE + CALLA LM_SETUP + JSRP LEFT_FINISH ;PUT UP PASSED MESSAGE. +NO_MONEY + RETP + +************************************************************************** +* prints up collection minus $$$ +* + +PRINT_COL2 + MOVI T_MONEY2,A9 ;THIS ENTRYPOINT IS FOR COLLECTION MESSAGE + + MOVE A9,*A13(AT_MESS),L ;HOLD MESSAGE FOR WHEN WE NEED IT! + MOVI ADJCDIV,A0 ;IF DIVISOR IS ZERO..THEN ITS OFF! + CALLA GET_ADJ + JRZ NO_MONEY2 ;THAT'S ALL FOLKS! + + CALLR BEGIN_AUDIT ;KEEP TRACK OF SANITY OF CALC. +* +* ROUTINE IN A2 FORMS STRING BASED ON 3 AUDITS STARTING +* WITH THE NUMBER IN A8. +* + CALLR STR_OBJ ;GET AN OBJECT FOR STRINGING + JRC NO_MONEY2 ;COULDN'T GET AN OBJECT! + + CALLR SUM_COINS ;ADD UP THE COIN PARTS IN A2 + +* +* WE'RE DOING A PREFIX STRING...NO PREFIX IF ITS BEEN TAMPERED +* +;; CALLR SIXP ;HAVE THE 6 BEEN TAMPERED +;; JRZ NO_PREFIX2 +;; CALLR GET_CSPT ;A6 POINTS AT CSECECT DATA. +;; MOVE *A6(CS_LMES),A8,L ;LEFT STRING FOR MONEY TOTAL + movi M_VERINF,a8 + CALLA STRCAT ;SHOVE THE STRING IN! + +NO_PREFIX2 + MOVK 1,A0 ;DIVIDE COINS BY 1 IF ITS BEEN TAMPERED WITH + CALLR SIXP + JRZ DIV_BY_12 ;TAMPERED WITH...DIVIDE BY 1 FOR "COINS" + + MOVI ADJCDIV,A0 ;GET THE COIN PARTS PLEASE + CALLA GET_ADJ +* +* GET QUOTIENT IN A2 +* REMAINDER IN A3 +* +DIV_BY_12 + MOVE A2,A3 ;SETUP AS DIVIDEND + CLR A2 + DIVU A0,A2 ;DIVIDE UNITS/DIVISOR + + MOVE A2,A8 ;WE NEED TO PUT QUOTIENT IN STRING + CALLA HEXTOASC ;THIS FORMS STRING FOR QUOTIENT + + CALLA STRCAT ;ADD QUOTIENT TO PRINTOUT + + CMPI 1,A0 ;IS DIVISOR ONE?????? + JRZ NOFRAC2 ;YEP.......NO DECIMAL! +* +* WE HAVE A DIVISOR.....WE NEED TO DISPLAY CENTS. +* +;; MOVI ME_DECIMAL,A8 ;ADD DECIMAL POINT + MOVI ME_DASH,A8 ;ADD DASH + CALLA STRCAT ;ITS THERE! +* +* REMAINDER IS IN A3....TURN IT TO 100THS. +* + MOVI 100,A2 + MPYU A2,A3 ;REMAINDER TIMES 100 + MOVE A3,A2 ;DIVIDEND IN A2 + + CALLR ROUNDED_A0_INTO_A2 + CALLR A2_100TH ;CAT THE 100THS IN A2 TO THE A7 STRING. + +NOFRAC2 + MOVI COINS_TRAIL,A8 ;ASSUME IT WILL BE "COINS" + CALLR SIXP ;TAMPERED? + JRZ COIN_SUF2 ;YEP....USE " COINS" + MOVE *A6(CS_RMES),A8,L ;FINISH IT OFF WITH RIGHT STRING + +COIN_SUF2 + CALLA STRCAT ;SHOVE THE STRING IN! + MOVI M_MONEY,A8 ;MESSAGE FOR THIS LINE PASSED IN A9 + CALLA LM_SETUP + + MOVE @TMPOBJ,A8,L ;POINTER TO MONEY STRING + JSRP RIGHT_FINISH ;PUT ON RIGHT MARGIN + + CALLR STR_FREE + + MOVE *A13(AT_MESS),A8,L ;SETUP PASSED MESSAGE + CALLA LM_SETUP + JSRP LEFT_FINISH ;PUT UP PASSED MESSAGE. +NO_MONEY2 + RETP + +************************************************************************** +* * +* STR_OBJ * +* * +* THIS IS CALLED TO GET AN OBJECT FOR * +* CONCATONATING STRINGS TOGETHER. * +* * +* A7 POINTS AT NULL STRING * +* * +* NOTE THAT THIS IS NO LONGER RE-ENTRANT! * +* * +* YOU MUST CALL STR_FREE BEFORE SLEEPING! * +* * +************************************************************************** +STR_OBJ + PUSH a0,a1,a14 + CALLA GETOBJ ;USE AN OBJECT BLOCK FOR STRING MANIPULATION + JRNZ STR_O1 +* +* NO OBJECTS DURING TEST MODE +* + SETC + JRUC STR_OFAIL + +STR_O1 + MOVE A0,@TMPOBJ,L ;SAVE TO FREE LATER + MOVE A0,A7 ;THIS IS WHERE IT BELONGS. + CLR A0 + MOVB A0,*A7 ;MAKE STRING NULL + CLRC ;RETURN SUCCESS +STR_OFAIL + PULL a0,a1,a14 + RETS + +************************************************************************** +* * +* ROUNDED_A0_INTO_A2 * +* * +* THIS DIVIDES A0 INTO A2. IT LEAVES THE RESULT IN A2 * +* AND ROUNDS UP IF NECESSARY. * +* * +************************************************************************** +ROUNDED_A0_INTO_A2 + MMTM SP,A3 + MOVE A0,A0 ;DIVIDE BY ZERO? + JRNZ NDZ + MOVE A0,A2 ;RETURN ZERO + JRUC NOROUND +NDZ + MOVE A2,A3 + CLR A2 ; AS DIVIDEND + DIVU A0,A2 ;DIVIDE AND A2 = PENNIES....A3 = REMAINDER + SLL 1,A3 ;SHIFT REMAINDER + CMP A0,A3 ;COMPARE TO DIVISOR + JRLO NOROUND ;TOO LOW TO ROUND UP + INC A2 ;A2 HAS CORRECT PENNIES +NOROUND + MMFM SP,A3 + RETS + +************************************************************************** +* * +* A2_100TH * +* * +* A7 HAS A STRING TO BE PRINTED. WE HAVE THE * +* LAST TWO NUMBERS (NOT TO BE LEAD ZERO BLANKED) IN * +* A2. CONCATONATE THEM ONTO THE A7 STRING. * +* * +* THIS IS USED FOR PENNIES, HOURS AND MINUTES. * +* * +************************************************************************** +A2_100TH + MMTM SP,A8 + CMPI 9,A2 ;9 OR LESS REQUIES LEAD ZERO. + JRHI NOLEAD + + MOVI ME_ZERO,A8 ;THROW IN THE LEAD ZERO + CALLA STRCAT ;THIS DOES IT! + +NOLEAD + MOVE A2,A8 + CALLA HEXTOASC ;MAKE STRING + CALLA STRCAT ;PUT IT IN! + MMFM SP,A8 + RETS + +************************************************************************** +* * +* SUM_COINS * +* * +* A8 HAS FIRST OF THE 4 AUDIT NUMBERS OF INTEREST * +* * +* RETURN COINS TIMES THEIR FACTORS IN A2. * +* * +************************************************************************** +SUM_COINS + MMTM SP,A0,A1,A3,A6,A4 + + MOVE A8,A0 ;POINT AT AUDIT NUMBER + CLR A2 ;SUM = ZERO + + CALLR GET_CSPT ;A6 POINTS AT CSELECT TABLE + ADDI CS_LVAL,A6 ;POINT AT 1ST MULTIPLIER + + MOVI CHUTES,A4 ;NOW...ITERATE OVER THE CHUTES + +NEXT_CHUTE + MOVE *A6+,A3,W ;GET MULTPLIER FOR THIS CHUTE + CALLR FIX_A3 ;REPLACE A3 WITH 1 (MULTIPLIER) IF + ;ITS SOME CUSTOM MODE. + CALLR ADD_AUD_A0_TIMES_A3_TO_A2 + INC A0 ;NEXT AUDIT + DSJS A4,NEXT_CHUTE + + MMFM SP,A0,A1,A3,A6,A4 + RETS + +ADD_AUD_A0_TIMES_A3_TO_A2 + CALLA GET_AUD ;FETCH THE AUDIT + MPYU A1,A3 ;TIME THE FACTOR + ADD A3,A2 + RETS + +************************************************************************** +* FIX_A3 +* +* THIS IS CALLED BY THE LOW LEVEL MONEY TOTALIZER. +* THE MULTIPLIER FOR THE COIN SLOT THAT ITS WORKING +* ON IS IN A3. WE REPLACE IT WITH "1" TO SUM "TOTAL COINS" +* IF ITS IN A NON-STANDARD COIN MODE. +* +************************************************************************** +FIX_A3 + CALLR SIXP ;HAS IT BEEN TAMPERED WITH? + JRNZ FIX_A3X ;NOPE...LEAVE A3 + + MOVK 1,A3 +FIX_A3X + RETS + +************************************************************************** +* SIXP +* +* THIS IS CALLED TO SEE IF THE 1ST 6 COIN PARAMETERS HAVE +* BEEN TAMPERED WITH. +* +* Z=YES +* +************************************************************************** +SIXP + MMTM SP,A0 + MOVI ADJ1ST6,A0 + CALLA GET_ADJ ;HAS IT BEEN TAMPERED WITH? + MMFM SP,A0 + RETS + +STARTS + CALLR GET_STARTS + MOVE A2,A3 ;GET IN PRINTOUT REG. + jruc NUMBER_WORK ;AND PRINT IT + +CONTINS + CALLR GET_CONTS + MOVE A2,A3 ;GET IN PRINTOUT REG. + jruc NUMBER_WORK ;AND PRINT IT + +DOPLAYS + CALLR GET_PLAYS + MOVE A2,A3 ;PUT IN PLACE + jruc NUMBER_WORK + +DOHSLEFT + MOVI ADJHSRES,A0 + CALLA GET_ADJ ;IS IF OFF? + JRZ DOHSOFF ;YEP...PRINT IT + + CALLA GET_HSC ;GET THE COUNTER VALUE + MOVE A0,A3 + jruc NUMBER_WORK ;AND SHOW IT! + +DOHSOFF + MOVI MESS_AUD_NUM,A8 + CALLA LM_SETUP ;SETUP FOR AUDIT PRINTING. + + MOVI M_HSOFF,A8 ;THIS EFFECTIVELY ERASES LINE! + JAUC RIGHT_FINISH + +DO_P1MIN + MOVI AUD1TIME,A0 +P1MJ + CALLA GET_AUD ;TURN INTO NUMBER + MOVE A1,A4 ;MOVE NUMBER TO "HOUR" COMPUTATION REGGIE + JRUC DH11 ;AND DO LIKE THE HOURS! + + +DO_P2MIN + MOVI AUD2TIME,A0 + JRUC P1MJ + +DO_HOURS + CALLR TOT_TIME ;READ OUT THE TOTAL TIME. +DH11 MOVE A4,A5 ;A5 HAS RUNNING PLAY TIME + CLR A4 ; READY FOR DIVISION + MOVK 12,A0 + DIVU A0,A4 ;A4 HAS MINUTES + CMPI 6,A5 ;ROUND PROPERLY + JRLO DH1 ;NOT ENOUGH + INC A4 +DH1 + MOVE A4,A1 ;NOW THIS DIVIDED BY 60 IS WHAT WE NEED + jruc P_TIME ;DO IT! + +DO_AVGT + CALLR TOT_TIME ;A3 HAS WEIGHTED TIME + +DOAVC CALLR GET_PLAYS ;GET TOTAL PLAYS IN A2 + MOVE A2,A0 ;STASH IN A0. + MOVK 5,A1 ;TURN INTO SECONDS + MPYU A1,A3 ;A3 HAS SECONDS OF INTEREST + MOVE A3,A2 + CALLR ROUNDED_A0_INTO_A2 ;DIVIDE A2 BY PLAYS (AND ROUND) + MOVE A2,A1 ;NOW GET IN PLACE FOR P_TIME + jruc P_TIME ;DO IT! + +DO_ELAPSE + CALLR TOT_TIME + MOVE A4,A3 ;USE ELAPSED TIME + JRUC DOAVC ;AND THE REST IS IDENTICAL. + + +keyavg_prt +; movi AUDKEYTOT,a0 +; calla GET_AUD +; move a1,a3 +; movi AUDFULLGAMES,a0 +; calla GET_AUD +; divs a1,a3 +; jruc NUMBER_WORK ;Print it + + +diff_prt + movk ADJDIFF,a0 + calla GET_ADJ + move a0,a3 + jruc NUMBER_WORK ;Print it + + +************************************************************************** +* * +* P_TIME * +* * +* THIS IS CALLED TO DISPLAY AN AUDIT IN TIME (0:00) * +* FORMAT. THE NUMBER TO BE USED IS PASSED IN A1. * +* * +************************************************************************** +P_TIME + CALLR STR_OBJ ;USE AN OBJECT BLOCK FOR STRING MANIPULATION + JRC NO_OBJS ;NO OBJECTS....PRINT NOTHING + + CLR A0 ;DIVIDEND IN + MOVI 60,A2 + DIVU A2,A0 ;A0 = "MINUTES"....A1 = "SECONDS + + CALLA CAT_A0 ;ADD A0 STRING TO A7 BUILD + MOVI ME_COLON,A8 + CALLA STRCAT ;PUT THE COLON IN. + + MOVE A1,A2 ;GET "SECONDS" IN A2 + CALLR A2_100TH ;AND GET THE 100THS IN. + + MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER + CALLA LM_SETUP + move *a13(AT_PTR),a6,L ;Get *audit + move *a6(AUD_COLOR),a6 + + MOVE A7,A8 ;PUT STRING CORRECT REGGIE + JSRP RIGHT_FINISH ;PRINT THE LINE + + CALLR STR_FREE ;FREE UP THE OBJECT! + +NO_OBJS + RETP ;NOW RETURN TO CALLER + +STR_FREE + MOVE @TMPOBJ,A0,L ;GET OBJECT BACK + JRNZ FREE_IT_NOW + + .IF DEBUG + LOCKUP + .ENDIF + RETS ;NO OBJECT...RETURN! + +FREE_IT_NOW + jauc FREEOBJ ;AND LET IT GO. + +************************************************************************** +* * +* TOT_TIME * +* * +* (1 * P1TIME) + (2 * P2TIME) IN A3 * +* ELAPSED TIME IN A4 * +* * +************************************************************************** +TOT_TIME + MMTM SP,A0,A1 + MOVI AUD1TIME,A0 + CALLA GET_AUD + MOVE A1,A3 + MOVE A1,A4 + MOVI AUD2TIME,A0 + CALLA GET_AUD + ADD A1,A4 ;A4 HAS SIMPLE SUM NOW + SLL 1,A1 ;DOUBLE THE PLAYER 2 TIME + ADD A1,A3 + MMFM SP,A0,A1 + RETS + + +******************************** +**** DATA SECTION BEGINS **** + + .DATA + + + +******************************** +* AUDIT TEXT + +MESS_ERROR + MESS_MAC RD7FONT,SPACING07,0,0,ROBO_RED,STRLNRM,0 + TXTLINE " ERROR" + +MESS_AUD_NUM + MESS_MAC RD7FONT,SPACING20,367,227,ROBO_YELLOW,STRRNRM,0 + +MESS_AUD_LINE + MESS_MAC RD7FONT,SPACING20,23,227,ROBO_YELLOW,STRLNRM,0 + + +MES_AUD TXTLINE "GAME AUDITS" + +MES_BOOK + TXTLINE "COIN BOOKKEEPING" + +M_LCOIN TXTLINE "LEFT SLOT COINS" +M_CCOIN TXTLINE "CENTER SLOT (3) COINS" +M_RCOIN TXTLINE "RIGHT SLOT COINS" + +M_LCOIN2 TXTLINE "WATCHDOG FEEDINGS" +M_CCOIN2 TXTLINE "SELF-CORRECTED CMOS ERRORS" +M_RCOIN2 TXTLINE "PROCESS LIST RE-INITIALIZATIONS" + +M_XCOIN TXTLINE "EXTRA SLOT (4) COINS" +M_DBV TXTLINE "BILL VALIDATOR" + +M_PAIDC TXTLINE "PAID CREDITS" + +M_SERV TXTLINE "SERVICE CREDITS" + + +M_PLAYS TXTLINE "TOTAL PLAYS" + +M_HSLEFT + TXTLINE "PLAYS UNTIL H.S. RESET" + +M_HSOFF TXTLINE "OFF" + + .even +M_ELAPSE + TXTLINE "AVG. ELAPSED TIME/PLAY" + +M_MONEY MESS_MAC RD15FONT,SPACING20,367,227,ROBO_WHITE,STRRNRM,0 + +T_MONEY MESS_MAC RD15FONT,SPACING20,23,227,ROBO_WHITE,STRLNRM,0 + TXTLINE "TOTAL COLLECTION" + +T_MONEY2 MESS_MAC RD15FONT,SPACING20,23,227,ROBO_WHITE,STRLNRM,0 + TXTLINE "XRAM COUNT" + +M_VERINF + TXTLINE "031-0" + +M_LOCKUP + TXTLINE "LOCKUPS" +M_HIDB TXTLINE "GAMES NOT FINISHED" + +M_SECBON + TXTLINE "WARPS" + + +************************************************************************** +* * +* MENU DESCRIPTORS * +* * +************************************************************************** +* +* MAIN TEST MENU +* +MEN_MAIN + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSMAIN ;TITLE + .WORD ROBO_WHITE ;COLOR OF TITLE + .WORD MENU_X ;UL X + .WORD MENU_Y-3 ;UL Y + .WORD MENU_DY-6 ;VERTICAL SPACING + .WORD ROBO_WHITE ;COLOR WHEN NOT SELECTED + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD BAR_WID ;WIDTH OF BAR! + .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_DIAG,GO_DIAG,DIAG_HELP + .LONG MESS_COIN_AUD,GO_BOOK,COIN_HELP + .LONG MESS_GAME_AUD,GO_AUD,AUDIT_HELP + .LONG MESS_GAME_ADJ,GO_ADJ,ADJUST_HELP + .LONG MESS_UTIL,GO_UTIL,UTIL_HELP + .LONG MESS_HARDWARE,GO_HARDWARE,HARDWARE_HELP + .LONG MESS_CLOCK,GO_CLOCK,CLOCK_HELP + .LONG MESS_VOL,GO_VOL,VOL_HELP + .LONG MESS_EXIT,0,EXIT_HELP ;SPECIAL CASE! + .LONG 0 ;END + +* UTILITES MENU GOES LEFT OF CENTER + +UM_WID EQU 206 +UM_X EQU TIT_ULX+GAP+MB_XWID+(UM_WID/2)+C_KLUDGE + +MEN_UTIL + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSUTIL ;TITLE + .WORD COLOR_WHITE ;COLOR OF TITLE + .WORD UM_X ;UL X + .WORD MENU_Y-3 ;UL Y + .WORD 18 ;VERTICAL SPACING + .WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEG) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD UM_WID ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_CLCRED,DO_CLCRED,CLCRED_HELP + .LONG MESS_CLCOIN,DO_CLCOIN,CLCOIN_HELP + .LONG MESS_CLAUD,DO_CLAUD,CLAUD_HELP + .LONG MESS_HSRES,DO_HSRES,HSRES_HELP + .LONG MESS_CLPLRECS,DO_CLPLRECS,CLPLRECS_HELP + .LONG MESS_DEF_ADJ,DO_DEF_ADJ,DEF_ADJ_HELP + .LONG MESS_FACSET,DO_FACSET,FACSET_HELP + .LONG opmsg_s,opmsg_main,OPMSG_HELP + .LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG 0 ;END + +* DIAGNOSTIC TESTS MENU + +MEN_DIAG + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSDIAG ;TITLE + .WORD COLOR_RED ;COLOR OF TITLE + .WORD 200 ;UL X + .WORD MENU_Y-3 ;UL Y + .WORD 20 ;VERTICAL SPACING + .WORD COLOR_RED ;COLOR WHEN NOT SELECTED + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 195 ;WIDTH OF BAR! (A LITTLE FATTER) + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_SWTEST,GO_SWTEST,BLNK_HELP + .LONG diptst_mess,dipsw_test,BLNK_HELP +ROM_LEV EQU 3 ;TEST NUMBER FOLLOWING ROM TEST + .LONG MESS_CPUTEST,GO_CPUTEST,BLNK_HELP +RTR_LEV EQU 4 ;TEST NUMBER FOLLOWING CPU TEST (FOR RETURN) + .LONG M_STEST,GO_STEST,BLNK_HELP + .LONG MESS_PATTERNS,GO_PATTERNS,BLNK_HELP + .LONG MESS_BURN,DO_BURN,BLNK_HELP + .LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU + .LONG 0 + +STM_WID EQU 250 + + +* PRESS ANY BUTTON TO CONTINUE + +ANY_MENU + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG 0 ;TITLE + .WORD 0 ;COLOR OF TITLE + .WORD 200 ;UL X + .WORD 200 ;UL Y + .WORD MENU_DY ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD BAR_HITE ;HEIGHT OF SELECTION BAR + .WORD -9 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 234 ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_ANY,0,NO_HELP + .LONG 0 + +* MONITOR PATTERNS + +MEN_PATTERNS + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSPAT ;TITLE + .WORD COLOR_RED ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD MENU_Y-3 ;UL Y + .WORD 23 ;VERTICAL SPACING + .WORD COLOR_YELLOW ;COLOR WHEN NOT SELECTED + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 234 ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_RED,GO_RED,BLNK_HELP + .LONG MESS_GREEN,GO_GREEN,BLNK_HELP + .LONG MESS_BLUE,GO_BLUE,BLNK_HELP + .LONG MESS_BARS,GO_BARS,BLNK_HELP + .LONG MESS_CROSS,GO_CROSS,BLNK_HELP + .LONG MESS_DIAGM,0,BLNK_HELP + .LONG MESS_MM,FORCE_MAIN,NO_HELP ;RETURN TO MAIN MENU + .LONG 0 + +* DETAILED COINAGE AVAILABLE (ON 1ST COINAGE PAGE) + +MEN_DETAIL + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSPAT ;TITLE + .WORD COLOR_YELLOW ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD 224 ;UL Y + .WORD 12 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 10 ;HEIGHT OF SELECTION BAR + .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 157 ;WIDTH OF BAR! + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_CLCOIN,0,NO_HELP ;Clr coins + .LONG MESS_MM,FORCE_MAIN,NO_HELP ;RETURN TO MAIN MENU + .LONG 0 + +* YES/NO (FOR ARE YOU SURE?) + +MEN_YN .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSDIAG ;TITLE + .WORD COLOR_RED ;COLOR OF TITLE + .WORD 200 ;UL X + .WORD 166 ;UL Y + .WORD 19 ;VERTICAL SPACING + .WORD COLOR_YELLOW ;COLOR WHEN NOT SELECTED + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 78 ;WIDTH OF BAR! (A LITTLE FATTER) + .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_YES,0,NO_HELP + .LONG MESS_NO,0,NO_HELP + .LONG 0 + +* NEXT AUDIT PAGE + +MEN_AP1 .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSPAT ;TITLE + .WORD ROBO_YELLOW ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD 226 ;UL Y + .WORD 12 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 10 ;HEIGHT OF SELECTION BAR + .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 157 ;WIDTH OF BAR! + .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_TOPAGE2,0,NO_HELP ;DETAILED SECTION + .LONG MESS_MM,FORCE_MAIN,NO_HELP;RETURN TO MAIN MENU + .LONG 0 + +MEN_AP2 .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSPAT ;TITLE + .WORD ROBO_YELLOW ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD 226 ;UL Y + .WORD 12 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 10 ;HEIGHT OF SELECTION BAR + .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 157 ;WIDTH OF BAR! + .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_TOPAGE2,0,NO_HELP ;DETAILED SECTION + .LONG MESS_BACKP1,0,NO_HELP ;DETAILED SECTION + .LONG 0 + +MEN_AP3 .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESSPAT ;TITLE + .WORD ROBO_YELLOW ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD 226 ;UL Y + .WORD 12 ;VERTICAL SPACING + .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED + .WORD 10 ;HEIGHT OF SELECTION BAR + .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 157 ;WIDTH OF BAR! + .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM + .LONG MESS_MM,FORCE_MAIN,NO_HELP;RETURN TO MAIN MENU + .LONG MESS_BACKP1,0,NO_HELP ;DETAILED SECTION + .LONG 0 + + +MEN_SOUNDTEST + .LONG RD7FONT ;FONT + .LONG STRCNRM ;CENTER PLEASE + .LONG MESS_SNDTST0 ;TITLE + .WORD ROBO_YELLOW ;COLOR OF TITLE + .WORD 200 ;UL X (CENTER IT!) + .WORD MENU_Y-3 ;UL Y + .WORD 20 ;VERTICAL SPACING + .word ROBO_RED ;colour when not selected + .WORD 16 ;HEIGHT OF SELECTION BAR + .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) + .WORD BAR_DX ;EXTRA X ON EACH SIDE. + .WORD 192+6 ;WIDTH OF BAR! + .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM + .long MESS_SNDTST1,DO_GENTEST,NO_HELP + .long MESS_SNDTST2,DO_PLAYSOUNDS,NO_HELP + .long MESS_SNDTST3,0,NO_HELP + .long MESS_SNDTST4,FORCE_MAIN,NO_HELP + .LONG 0 + +************************************************************************** +* * +* HELP MENUS FOR MAIN MENU * +* * +************************************************************************** +* HM_JUST 0 = CENTER 1 = LEFT +* HM_COLOR +* HM_ENTS + +DIAG_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;# ENTRIES + .LONG MESS_SWTEST + .long diptst_mess + .LONG MESS_CPUTEST + .LONG M_STEST + .LONG MESS_PATTERNS + .LONG U_BURNIN + +COIN_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 3 ;2 ENTRIES + .LONG CH_0 + .LONG CH_1 + .LONG CH_2 + +AUDIT_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 2 ;2 ENTRIES + .LONG AH_1 + .LONG AH_2 + +ADJUST_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 3 ;3 ENTRIES + .LONG AD_1 + .LONG AD_2 + .LONG AD_3 + +UTIL_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 6 ;6 ENTRIES + .LONG U_CLR_CRED + .LONG U_CLR_COIN + .LONG U_CLR_AUD + .LONG U_HSRESET + .LONG U_CLRRECS + .LONG U_FACTORY + +VOL_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 2 ;2 ENTRIES + .LONG MESS_ATV + .LONG MESS_OTG + +EXIT_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 1 ;1 ENTRY + .LONG U_END + + +******************************** +* HELP FOR UTILITY MENU + +CLCRED_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 3 ;# entries + .LONG MEH_CLCRED1 + .LONG MEH_CLCRED2 + .LONG MEH_CLCRED3 + +CLCOIN_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 4 ;# entries + .LONG MEH_CLCOIN1 + .LONG MEH_CLCOIN2 + .LONG MEH_CLCOIN3 + .LONG MEH_CLCOIN4 + +CLAUD_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 2 ;# entries + .LONG MEH_CLAUD1 + .LONG MEH_CLAUD2 + +CLPLRECS_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 2 ;# entries + .long MEH_CLPLRECS1 + .long MEH_CLPLRECS2 + +HSRES_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 3 ;# entries + .LONG MEH_RESHS1 + .LONG MEH_RESHS2 + .LONG MEH_RESHS3 + +DEF_ADJ_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 4 ;# entries + .LONG MEH_DEFA1 + .LONG MEH_DEFA2 + .LONG MEH_DEFA3 + .LONG MEH_DEFA4 + +FACSET_HELP + .WORD 0 ;CENTER JUSTIFY + .WORD COLOR_BLUE ;COLOR + .WORD 4 ;# entries + .LONG MEH_FAC1 + .LONG MEH_FAC2 + .LONG MEH_FAC3 + .LONG MEH_FAC4 + +OPMSG_HELP + .word 0 ;CENTER JUSTIFY + .word COLOR_BLUE ;COLOR + .word 3 ;# entries + .long opmsgh1_s + .long opmsgh2_s + .long opmsgh3_s + + +************************************************************************** +* * +* TEXT STRINGS * +* * +************************************************************************** + +SIY0 equ 190 +SIY1 equ 212 +SIY2 equ 224 +SIY3 equ 236 + +SND_INST + MESS_MAC RD7FONT,SPACING07,200,SIY1,ROBO_WHITE,STRCNRM,0 + .STRING "UP AND DOWN TO SELECT SOUND",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,SIY2,ROBO_WHITE,STRCNRM,0 + .STRING "PRESS ACTION BUTTON TO PLAY",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,SIY3,ROBO_WHITE,STRCNRM,0 + .STRING "PRESS START BUTTON TO EXIT",0,0 + +SND_SETUP MESS_MAC RD15FONT,SPACING20,200,SIY0,ROBO_WHITE,STRCNRM,0 + +sounds_tab .long SND_ST0,SND_ST1,SND_ST2,SND_ST3 + .long SND_ST4,SND_ST5,SND_ST6,SND_ST7 + +SND_ST0 .string "FACE HIT",0 +SND_ST1 .string "WHOOSH",0 +SND_ST2 .string "HARD HIT",0 +SND_ST3 .string "LONG GRUNT",0 +SND_ST4 .string "SHORT GRUNT",0 +SND_ST5 .string "DOINK LAUGH",0 +SND_ST6 .string "DOINK YELL",0 +SND_ST7 .string "MR FUJI",0 + + .even + +TEST_SOUND_TAB + .word 080h,0B4h,0C7h,0DDh,114h,226h,230h,6528 + +MESS_SNDTST0 .string "SOUND BOARD TEST",0 +MESS_SNDTST1 .string "GENERAL TEST",0 +MESS_SNDTST2 .string "PLAY SOUNDS",0 +MESS_SNDTST3 .string "BACK TO DIAGNOSTICS MENU",0 +MESS_SNDTST4 .string "RETURN TO MAIN MENU",0 + +MESS_YES + .byte "YES",0 + .EVEN + +MESS_NO .byte "NO",0 + .EVEN + +;MESS_CLEAR_SUBS +; .byte "CLEAR SUBTOTALS" +; .BYTE 0 +; .EVEN +; +;MESS_SUBS_CLEAR +; .byte "SUBTOTALS CLEARED" +; .BYTE 0 +; .EVEN + +MESS_TOPAGE2 + .byte "NEXT AUDIT PAGE" + .BYTE 0 + .EVEN + +MESS_BACKP1 + .byte "PREVIOUS AUDIT PAGE" + .BYTE 0 + .EVEN + +MESS_ANY + .byte "ANY BUTTON TO CONTINUE" + .BYTE 0 + .EVEN + +MESS_MM + .byte "RETURN TO MAIN MENU" + .BYTE 0 + .EVEN + +MESSDIAG ;THIS IS TITLE OF PAGE +MESS_DIAG + .byte "DIAGNOSTIC TESTS" + .BYTE 0 + .EVEN +MESS_COIN_AUD + .byte "COIN BOOKKEEPING" + .BYTE 0 + .EVEN +MESS_GAME_AUD + .byte "GAME AUDITS" + .BYTE 0 + .EVEN + +MESS_GAME_ADJ + .byte "GAME ADJUSTMENT" + .BYTE 0 + .EVEN +MESS_UTIL + .byte "UTILITIES" + .BYTE 0 + .EVEN + +MESS_VOL + .byte "VOLUME ADJUST" + .BYTE 0 + .EVEN + +MESS_EXIT + .byte "EXIT TO GAME OVER" + .BYTE 0 + .EVEN + +CH_0 .byte "VIEW COINBOX" + .BYTE 0 + .EVEN +CH_1 .byte "TOTALS AND" + .BYTE 0 + .EVEN +CH_2 .byte "GAMEPLAY COUNTERS" + .BYTE 0 + .EVEN + +AH_1 .byte "VIEW GAME" + .BYTE 0 + .EVEN +AH_2 .byte "PLAY STATISTICS" + .BYTE 0 + .EVEN + +AD_1 .byte "MAKE CHANGES" + .BYTE 0 + .EVEN +AD_2 .byte "TO PRICING AND" + .BYTE 0 + .EVEN +AD_3 .byte "GAME DIFFICULTY" + .BYTE 0 + .EVEN + +MESS_CLCRED +U_CLR_CRED .byte "CLEAR CREDITS" + .BYTE 0 + .EVEN + +MESS_CCCONF .byte "CREDITS CLEARED" + .BYTE 0 + .EVEN + +MESS_CLCOIN +U_CLR_COIN .byte "CLEAR COIN COUNTERS" + .BYTE 0 + .EVEN + +MESS_CLAUD +U_CLR_AUD .byte "CLEAR GAME AUDITS" + .BYTE 0 + .EVEN + +MESS_CLPLRECS +U_CLRRECS + .string "CLEAR PLAYER STATISTICS",0 + +MESS_HSRESET +U_HSRESET .byte "RESET HIGH SCORES" + .BYTE 0 + .EVEN + +MESS_HSRES + .byte "RESET HIGH SCORES" + .BYTE 0 + .EVEN + +MESS_ATV + .byte "ADJUST THE VOLUME",0 + .even +MESS_OTG + .byte "OF THE GAME",0 + .even + +;M_OPMESS_TIT +;U_OPMESS .byte "OPERATOR MESSAGE" +; .BYTE 0 +; .EVEN + +;M_SET_OMESS +;;MESS_OPMESS .byte "SET OPERATOR MESSAGE" +; .BYTE 0 +; .EVEN + +U_BURNIN .byte "BURN-IN TEST",0 + .even + +MESS_BURN .byte "RUN BURN-IN TEST",0 + .even + +MESS_DEF_ADJ TXTLINE "DEFAULT ADJUSTMENTS" +U_FACTORY TXTLINE "FACTORY SETTINGS" +MESS_FACSET TXTLINE "FULL FACTORY RESTORE" + +opmsg_s TXTLINE "OPERATOR MESSAGE" +opmsgh1_s TXTLINE "ENTER AN OPERATOR" +opmsgh2_s TXTLINE "MESSAGE TO" +opmsgh3_s TXTLINE "THE PLAYERS" + + +U_END .byte "END TESTING",0 + .even + +MESS_SWTEST .byte "SWITCH TEST",0 + .even +diptst_mess .byte "DIP SWITCH TEST",0 + .even +MESS_CPUTEST .byte "CPU BOARD TEST",0 + .even +M_STEST .byte "SOUND BOARD TEST",0 + .even + +MESSPAT ;HEADER TITLE +MESS_PATTERNS .byte "MONITOR PATTERNS",0 + .EVEN + +MESS_RED .byte "RED SCREEN",0 + .EVEN +MESS_GREEN .byte "GREEN SCREEN",0 + .EVEN +MESS_BLUE .byte "BLUE SCREEN",0 + .EVEN +MESS_BARS .byte "COLOR BARS",0 + .EVEN +MESS_CROSS .byte "CROSSHATCH PATTERN",0 + .EVEN +MESS_DIAGM .byte "BACK TO DIAGNOSTICS MENU",0 + .EVEN + +* ON FULL RESTORE....THE FOLLOWING IS PRINTED. + ;0 = END OF STRING...1 = MORE MESSAGES! + +MESS_RESET + MESS_MAC RD7FONT,SPACING20,200,80,ROBO_RED,STRCNRM,0 +MESS_FACFAIL + .byte "FAILURE IN CMOS RAM",0,0 + .EVEN + +MESS_FFSCONF +MESS_FAC MESS_MAC RD7FONT,SPACING20,200,96,COLOR_WHITE,STRCNRM,0 +MESS_DEFCONF + .byte "ADJUSTMENTS RESTORED.",0,1 + .EVEN + + MESS_MAC RD7FONT,SPACING20,200,112,COLOR_YELLOW,STRCNRM,0 +MESS_CCNCONF + .byte "COIN COUNTERS CLEARED.",0,1 + .EVEN + + MESS_MAC RD7FONT,SPACING20,200,128,COLOR_BLUE,STRCNRM,0 +MESS_CAUDCONF + .byte "GAME AUDITS CLEARED.",0,1 + .EVEN + + MESS_MAC RD7FONT,SPACING20,200,144,COLOR_RED,STRCNRM,0 +MESS_HSRCONF + .byte "HIGH SCORE TABLE RESET.",0,1 + .EVEN + + MESS_MAC RD7FONT,SPACING20,200,160,COLOR_CYAN,STRCNRM,0 +MESS_CLPLRECSCONF + .string "PLAYER STATISTICS CLEARED.",0,0 + .EVEN + +MESS_CANCELLED + .byte "CANCELLED",0 + .EVEN + +CIN_X EQU (TIT_ULX+TIT_LRX)/2 +CR_X EQU CIN_X-34 +CIN_Y EQU 86 + +CIY1 EQU CIN_Y+14 +CIY2 EQU CIY1+15 +CIY3 EQU CIY2+25 +CIY4 EQU CIY3+25 + +************************************************************************** +* * +* STRINGS FOR UTILITY HELP MENUS * +* * +************************************************************************** +MEH_CLCRED1 .byte "REMOVE ANY",0 + .EVEN +MEH_CLCRED2 .byte "POSTED CREDITS",0 + .EVEN +MEH_CLCRED3 .byte "FROM THE GAME",0 + .EVEN + +MEH_CLCOIN1 .byte "CLEAR OUT PAID",0 + .EVEN +MEH_CLCOIN2 .byte "CREDITS TOTAL",0 + .EVEN +MEH_CLCOIN3 .byte "AND THE COIN",0 + .EVEN +MEH_CLCOIN4 .byte "SLOT COUNTERS",0 + .EVEN + +MEH_CLAUD1 .byte "CLEAR GAMEPLAY",0 + .EVEN +MEH_CLAUD2 .byte "STATISTICS",0 + .EVEN + +MEH_CLPLRECS1 .string "CLEAR PLAYER",0 + .even +MEH_CLPLRECS2 .string "STATISTICS",0 + .even + +MEH_RESHS1 .byte "RESET HIGH SCORE",0 + .EVEN +MEH_RESHS2 .byte "TABLE TO FACTORY",0 + .EVEN +MEH_RESHS3 .byte "DEFAULT VALUES",0 + .EVEN + +MEH_DEFA1 .byte "SET ALL GAME",0 + .EVEN +MEH_DEFA2 .byte "ADJUSTMENTS TO",0 + .EVEN +MEH_DEFA3 .byte "THEIR FACTORY",0 + .EVEN +MEH_DEFA4 .byte "DEFAULT VALUE",0 + .EVEN + + +MEH_FAC1 + .STRING "RESET ALL AUDITS,",0 + .EVEN +MEH_FAC2 + .STRING "COUNTERS, ADJUSTMENTS,",0 + .EVEN +MEH_FAC3 + .STRING "HIGH SCORES AND",0 + .EVEN +MEH_FAC4 + .STRING "THE PLAYER STATISTICS.",0 + .EVEN + + +************************************************************************** +* * +* MAIN MENU NAMES * +* * +************************************************************************** +MESSMAIN + .byte "WRESTLEMANIA TEST MENU",0 + .even + +MESSUTIL + .byte "UTILITY MENU",0 + .even + + + +CSELCT +************************************************************************** +* * +* USA 1: 1 COIN = 1 CREDIT * +* * +* 2 TO START / 2 TO CONTINUE * +* * +************************************************************************** + .WORD 1,0,1,0,4,1,0,0,2,2 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG OCOP ;ONE COIN ONE PLAY + .LONG USA_1 ;TITLE OF COIN MODE + .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_NONE ;NO PRICING LINE ON 2/1 + .LONG USA_QDQ ;QUARTER + +************************************************************************** +* * +* USA 2: 1 COIN = 1 CREDIT * +* * +* 2 TO START / 1 TO CONTINUE * +* * +************************************************************************** + .WORD 1,0,1,0,4,1,0,0,2,1 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG OCOP ;ONE COIN ONE PLAY + .LONG USA_2 ;TITLE OF COIN MODE + .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_NONE ;NO PRICING LINE ON 2/1 + .LONG USA_QDQ ;QUARTER + + +************************************************************************** +* * +* USA 3 COINAGE IS 25 CENT * +* 1 TO START / 1 TO CONTINUE * +* * +************************************************************************** + + .WORD 1,0,1,0,4,1,0,0,1,1 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;ONE COIN ONE PLAY + .LONG USA_3 ;TITLE OF COIN MODE + .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_NONE ;NO PRICING LINE ON 2/1 + .LONG USA_QDQ ;QUARTER + +************************************************************************** +* * +* USA 4 COINAGE IS 50 CENT 3/$1.00 * +* 1 TO START / 1 TO CONTINUE * +* * +************************************************************************** + + .WORD 1,0,1,0,4,2,4,0,1,1 ; WILLY PRICING + .WORD 4 ; 4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ; DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ; COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ; CHARACTER STRINGS. + .LONG CSM_LIST ; PRINT THE 2 THE OP SEES + .LONG USA_4 ; TITLE OF COIN MODE + .LONG DOLLAR_3 ; 1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ; SHOW LINE 2 + .LONG USA_QDQ ; QUARTER + + +************************************************************************** +* * +* ADDITION "FULL PRICE" COINAGES * +* * +************************************************************************** + + .IF FULLPRICE + +************************************************************************** +* * +* USA 5 COINAGE IS 50 CENT 4/$1.00 * +* 2 TO START / 1 TO CONTINUE * +* * +************************************************************************** + + .WORD 3,0,3,0,12,4,12,6,2,1 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 0 ;NO COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG USA_5 ;TITLE OF COIN MODE + .LONG DOLLAR_4 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;SHOW LINE 2 + .LONG USA_QDQ ;QUARTER + +* +* USA 6 50 PER CREDIT +* + .WORD 1,0,1,0,4,2,0,0,1,1 ; WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;2 COINS PER PLAYER + .LONG USA_6 ;TITLE OF COIN MODE + .LONG F_F_1S1C ;2 COINS PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_1 ;SHOW LINE 1 + .LONG USA_QDQ ;QUARTER +* +* USA 7 COINAGE IS 50 CENT 3/$1.00 +* + + .WORD 1,0,1,0,4,2,4,0,1,1 ; WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 0 ;DISPLAY COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG USA_7 ;TITLE OF COIN MODE + .LONG UFS3D ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;SHOW LINE 2 + .LONG USA_QDQ ;QUARTER + +* +* USA 8 COINAGE IS 50 CENT 4/$1.00 +* +* L, C,R, 4,DBV,U/C,U/B,MINUNITS /START /CONTINUE + .WORD 3,0,3,0,12,4,12,6,2,2 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 0 ;NO COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG USA_8 ;TITLE OF COIN MODE + .LONG UFS4D ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;SHOW LINE 2 + .LONG USA_QDQ ;QUARTER + +* USA 9 COINAGE IS 50 CENT 4/$1.00 +* +* L, C,R, 4,DBV,U/C,U/B,MINUNITS /START /CONTINUE + .WORD 1,0,1,0,4,1,0,1,3,2 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 0 ;NO COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG USA_9 ;TITLE OF COIN MODE + .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;SHOW LINE 2 + .LONG USA_QDQ ;QUARTER + +* USA 10 COINAGE IS 50 CENT 4/$1.00 +* + .WORD 1,0,1,0,4,1,0,1,3,3 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 0 ;NO COIN FRACTIONS + .WORD 1,0,1,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG USA_10 ;TITLE OF COIN MODE + .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;SHOW LINE 2 + .LONG USA_QDQ ;QUARTER + + .ENDIF +* +* USA ELECTRONIC +* + .WORD 20,2,5,1,20,5,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS + .WORD 20 ; COINS/DOLLAR + .WORD 1 ; DISPLAY FRACTIONS + .WORD 20,2,5,1,20 ; L,C,R,4 + .LONG DOLLAR_LEAD,NULL_ST ; CHARACTER STRINGS. + .LONG USA_ELECTRONIC ; SPECIAL MESSAGE + .LONG USA_ELECTITLE ; TITLE OF COIN MODE + .LONG USA_EL ; SETTINGS DESCRIPTION + .WORD SHOW_2 ; LINES TO SHOW ON + .LONG USA_ESLOT ; QUARTER + +* +* GERMAN 1 COINAGE IS 6 PLAYS FOR 5 DM +* 2 TO START, 2 TO CONTINUE +* + .WORD 6,0,30,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DMS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG GERMAN_1 ;TITLE OF COIN MODE + .LONG DM_6 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG GERMAN_15 ;1 DM / 5 DM + +G1SEL EQU ($-CSELCT)/CS_SIZE ;COIN SELECT VALUE FOR GERMAN 1 +* +* GERMAN 2 COINAGE IS 7 PLAYS FOR 5 DM +* 2 TO START, 1 TO CONTINUE +* + .WORD 6,0,30,0,0,5,30,0,2,1 ;WILLY PRICING + .WORD 1 ;DMS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG GERMAN_2 ;TITLE OF COIN MODE + .LONG DM_7 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG GERMAN_15 ;1 DM / 5 DM +* +* GERMAN 3 COINAGE IS 8 PLAYS FOR 5 DM +* 2 TO START, 1 TO CONTINUE +* + .WORD 7,0,35,0,0,5,35,0,2,1 ;WILLY PRICING + .WORD 1 ;DMS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG GERMAN_3 ;TITLE OF COIN MODE + .LONG DM_8 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG GERMAN_15 ;1 DM / 5 DM +* +* GERMAN 4 COINAGE IS 5 PLAYS FOR 5 DM +* 2 TO START, 1 TO CONTINUE +* + .WORD 1,0,5,0,0,1,0,0,2,1 ;WILLY PRICING + .WORD 1 ;DMS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG GERMAN_4 ;TITLE OF COIN MODE + .LONG DM_5 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG GERMAN_15 ;1 DM / 5 DM + +* +* GERMAN 5 COINAGE IS 6 PLAYS FOR 5 DM +* 2 TO START, 1 TO CONTINUE +* + .WORD 6,0,30,0,0,5,0,0,2,1 ;WILLY PRICING + .WORD 1 ;DMS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG GERMAN_5 ;TITLE OF COIN MODE + .LONG DM_6 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG GERMAN_15 ;1 DM / 5 DM + +* +* GERMAN ELECTRONIC +* 2 TO START, 2 TO CONTINUE +* + .WORD 60,12,24,0,0,10,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS + .WORD 1 ; COINS/DOLLAR + .WORD 0 ; DISPLAY FRACTIONS + .WORD 5,1,2,0,0 ; L,C,R,4 + .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. + .LONG GERMAN_ELECTRONIC ; SPECIAL MESSAGE + .LONG GERMAN_ELECTITLE ; TITLE OF COIN MODE + .LONG DM112265 ; SETTINGS DESCRIPTION + .WORD SHOW_3 ; LINES TO SHOW ON + .LONG GERMAN_ESLOT ; QUARTER + +**************************************************************************** +**************************************************************************** +******* THE FOLLOWING NUMBERS ARE FIGURED FOR THE FRENCH SETTINGS +******* REQUESTED BY DIMITRI K. OF P.S.D. +******* +******* 1F 5F 10F U/C U/B M/U +******* -------------------------------- +******* 1/2F 3/5F 7/10F 3 15 30 5 30 0 +******* 1/3F 2/5F 5/10F 2 10 20 5 20 0 +******* 1/5F 3/10F 1 5 10 5 10 0 +******* 1/5F 3/10F 7/20F 3 15 30 10 60 15 +******* 2/5F 4/10F 9/20F 2 10 20 5 40 10 +******* 2/5F 5/10F 11/20F 1 5 10 2 20 5 +******* +* +* +* FRENCH 1 2/5F 5/10F +* +* + .WORD 2,0,4,0,0,1,4,0,2,2 ; 2/5F 5/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_1 ;TITLE OF COIN MODE + .LONG FIVE_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG FRENCH510 + +F1SEL EQU ($-CSELCT)/CS_SIZE ;COIN SELECT VALUE FOR FRENCH 1 + +* +* FRENCH 2 2/5F 4/10F +* +* + .WORD 2,0,4,0,0,1,0,0,2,1 ; 2/5F 4/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_2 ;TITLE OF COIN MODE + .LONG FOUR_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG FRENCH510 +* +* FRENCH 3 1/5F 3/10F +* +* + .WORD 1,0,2,0,0,1,2,0,2,1 ;1/5F 3/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_3 ;TITLE OF COIN MODE + .LONG THREE_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 + .LONG FRENCH510 +* +* FRENCH 4 1/5F 2/10F +* +* + .WORD 1,0,2,0,0,1,0,0,2,1 ;1/5F 2/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_4 ;TITLE OF COIN MODE + .LONG TWO_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_1 + .LONG FRENCH510 + + .IF FULLPRICE + +* +* +* FRENCH 5 2/5F 5/10F 11/2 X 10F +* +* + .WORD 5,0,10,0,0,2,20,0,2,1 ;2/5F 5/10F 11/20F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_5 ;TITLE OF COIN MODE + .LONG FIVE_10_11 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT + .LONG FRENCH510 +* +* FRENCH 6 2/5F 4/10F 9/2 X 10F +* +* + .WORD 2,0,4,0,0,1,8,0,2,1 ;2/5F 4/10F 9/20F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_6 ;TITLE OF COIN MODE + .LONG FOUR_10_9 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT + .LONG FRENCH510 +* +* FRENCH 7 1/5F 3/10F 7/2 X 10F +* +* + .WORD 3,0,6,0,0,2,12,0,2,1 ;1/5F 3/10F 7/20F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_7 ;TITLE OF COIN MODE + .LONG THREE_10_7 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT + .LONG FRENCH510 +* +* FRENCH 8 1/5F 2/10F 5/2 X 10F +* +* + .WORD 1,0,2,0,0,1,4,0,2,1 ;1/5F 2/10F 5/20F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_8 ;TITLE OF COIN MODE + .LONG TWO_10_5 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT + .LONG FRENCH510 + +* +* FRENCH 9 1/3 X 1F 2/5F +* +* COIN SLOTS ARE 1F -- 5F +* +* + .WORD 2,0,10,0,0,5,0,0,2,1 ;1/3X1F 2/5F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_9 ;TITLE OF COIN MODE + .LONG F1325 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;USE LINE 2 WHEN ONLY 1 WILL FIT + .LONG FRENCH1F5F +* +* FRENCH 10 1/2 X 1F 3/5F +* +* COIN SLOTS ARE 1F -- 5F +* +* + .WORD 3,0,15,0,0,5,0,0,2,1 ;1/2X1F 3/5F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_10 ;TITLE OF COIN MODE + .LONG F1235 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_2 ;USE LINE 2 WHEN ONLY 1 WILL FIT + .LONG FRENCH1F5F +* +* FRENCH 11 1/3 X 1F 2/5F 5/2 X 5F +* +* COIN SLOTS ARE 1F -- 5F +* +* + .WORD 2,0,10,0,0,5,20,0,2,1 ;1/3X1F 2/5F 5/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_11 ;TITLE OF COIN MODE + .LONG F13255 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 2 WHEN ONLY 1 WILL FIT + .LONG FRENCH1F5F + +* +* FRENCH 12 1/2 X 1F 3/5F 7 / 2 X 5F +* +* COIN SLOTS ARE 1F -- 5F +* +* + .WORD 3,0,15,0,0,5,30,0,2,1 ;1/2X1F 3/5F 7/10F + .WORD 1 ;1 FRANC PER FRANC + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" + .LONG FRENCH_12 ;TITLE OF COIN MODE + .LONG F12355 ;1 COIN PER CREDIT (SERIES OF STRINGS) + .WORD SHOW_3 ;USE LINE 2 WHEN ONLY 1 WILL FIT + .LONG FRENCH1F5F + + .ENDIF + +* +* FRANCE ELECTRONIC +* + .WORD 1,15,6,0,0,3,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS + .WORD 1 ; COINS/DOLLAR + .WORD 0 ;DON'T DISPLAY COIN FRACTIONS + .WORD 1,10,5,0,0 ; L,C,R,4 + .LONG NULL_ST,FRANC_TRAIL ; CHARACTER STRINGS. + .LONG FRANCE_ELECTRONIC ; SPECIAL MESSAGE + .LONG FRENCH_ELECTITLE ; TITLE OF COIN MODE + .LONG F13255 ;COIN PAGE DESCRIPTION + .WORD SHOW_3 ;THREE LINES FOR THIS BABY + .LONG FRANCE_ESLOT ; QUARTER + +* +* CANADA COINAGE IS 50 CENT 3/$1.00 +* + .WORD 1,0,4,0,4,2,4,0,2,2 ;WILLY PRICING + .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) + .WORD 1 ;DISPLAY COIN FRACTIONS + .WORD 1,0,4,0,4 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST ;PRINT THE 2 THE OP SEES + .LONG CANADA ;TITLE OF COIN MODE + .LONG CAN_1503D ;1 PLAY 50, 3 FOR A DOLLAR + .WORD SHOW_2 ;SHOW LINE 2 + .LONG CAN_QD ;QUARTER + + .IF FULLPRICE + +* SWISS 1 COINAGE IS 6 PLAYS FOR 5 FRANC + + .WORD 6,0,30,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 1 ;FRANCS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SWISS_1 ;TITLE OF COIN MODE + .LONG SFRANC_6 ;1 COIN PER CREDIT (SERIES + .WORD SHOW_2 + .LONG SWISS15 + +* SWISS 2 COINAGE IS 7 PLAYS FOR 5 FRANC + + .WORD 6,0,30,0,0,5,30,0,2,2 ;WILLY PRICING + .WORD 1 ;FRANCS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SWISS_2 ;TITLE OF COIN MODE + .LONG SFRANC_7 ;1 COIN PER CREDIT (SERIES + .WORD SHOW_2 + .LONG SWISS15 + +* SWISS 3 COINAGE IS 8 PLAYS FOR 5 FRANC + + .WORD 7,0,35,0,0,5,35,0,2,2 ;WILLY PRICING + .WORD 1 ;FRANCS HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SWISS_3 ;TITLE OF COIN MODE + .LONG SFRANC_8 ;1 COIN PER CREDIT (SERIES + .WORD SHOW_2 + .LONG SWISS15 + +* ITALY COINAGE IS 1 PLAYS FOR 500 LIRE + + .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;LIRE HAVE NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIO +; .WORD 500,0,500,0,0 ;COIN VALUE + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG NULL_ST,LIRE_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG ITALY_1 ;TITLE OF COIN MODE + .LONG P1500L ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG ITALYLIRE + +* U.K. ELECTRONIC 1 + +* CENTER = 20P XTRA = 10P LEFT = 1P RIGHT = 50P +* 1 PLAY / 50 P +* 3 PLAY / 1 POUND + +* L, C, R, 4,DBV,U/C,U/B,MINUNITS /START /CONTINUE + .WORD 10, 2, 5, 1, 0, 5, 10,0,1,1 ;NUMBERS FOR 1L/20P/50P/10P + .WORD 10 ;PENCE SUCK! + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 10,2,5,1,0 ;COIN VALUE + .LONG NULL_ST,POUND_TRAIL ;CHARACTER STRINGS. + .LONG UK_ELECTRONIC1 ;SPECIAL TITLE W/ POUND + .LONG UK_1 ;TITLE OF COIN MODE + .LONG UK_420 ; + .WORD SHOW_2 + .LONG UK_ELEC + +* U.K. ELECTRONIC 2 (CCU) + +* CREDITS ARE AWARDED 1 COIN / 1 PLAY..... + +* CCU ACCUMULATES 4 COINS AND STROKES US AS FOLLOWS: + +* 1 PLAY / 50 P +* 2 PLAY / 1 POUND + +* L, C, R, 4,DBV,U/C,U/B,MINUNITS /START /CONTINUE + .WORD 10, 2, 5, 1, 0, 5, 0,0,1,1 ;NUMBERS FOR 1L/20P/50P/10P + .WORD 10 ;PENCE ARE FRACTIONS! + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 10,2,5,1,0 ;COIN VALUE + .LONG NULL_ST,COINS_TRAIL ;CHARACTER STRINGS. + .LONG UK_ELECTRONIC2 ;SPECIAL TITLE W/ POUND + .LONG UK_2 ;TITLE OF COIN MODE + .LONG UK_320 ; + .WORD SHOW_2 + .LONG UK_ELEC + +* U.K. 3 COINAGE IS 1 PLAY FOR 30P 2 FOR 50P 5 FOR 1.00 + + .WORD 20,4,10,2,0,5,20,0,1,1 ;WILLY PRICING + .WORD 10 ;PENCE ARE FRACTIONS! + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 10,2,5,1,0 ;COIN VALUE + .LONG NULL_ST,POUND_TRAIL ;CHARACTER STRINGS. + .LONG UK_ELECTRONIC3 ;SPECIAL TITLE W/ POUND + .LONG UK_3 ;TITLE OF COIN MODE + .LONG UK_120 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG UK_ELEC + +* U.K. 4 + + .WORD 10, 0, 5, 0, 0, 5, 10,0,1,1 ;NUMBERS FOR 1L/20P/50P/10P + .WORD 10 ;PENCE SUCK! + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 10,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,POUND_TRAIL ;CHARACTER STRINGS. + .LONG UK_ELECTRONIC1 + .LONG UK_4 ;TITLE OF COIN MODE + .LONG UK_220 ; + .WORD SHOW_2 + .LONG UK2050 + +* U.K. 5 + + +* 1 PLAY / 50 P +* 2 PLAY / 1 POUND + +* L, C, R, 4,DBV,U/C,U/B,MINUNITS /START /CONTINUE + .WORD 10, 0, 5, 0, 0, 5, 0,0,1,1 ;NUMBERS FOR 1L/20P/50P/10P + .WORD 10 ;PENCE ARE FRACTIONS! + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 10,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,COINS_TRAIL ;CHARACTER STRINGS. + .LONG UK_ELECTRONIC2 + .LONG UK_5 ;TITLE OF COIN MODE + .LONG UK_520 ; + .WORD SHOW_2 + .LONG UK2050 + +* DONE BECAUSE WE LEARNED SOME NEW SPANISH SHIT! + +* SPAIN 1 1 PLAY / 100 PESETA 6 PLAY / 500 PESETA + + .WORD 1,0,5,0,0,1,5,0,2,2 ;WILLY PRICING + .WORD 1 ;NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,PESETA_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SP_1 ;TITLE OF COIN MODE + .LONG SP_5100 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG PESETA100 + + +* SPAIN 2 1 PLAY / 25 PESETA 5 PLAY / 100 PESETA + + .WORD 1,0,5,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;NO FRACTIONS + .WORD 0 ;DON'T DISPLAY COIN FRACTIO + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,PESETA_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SP_2 ;TITLE OF COIN MODE + .LONG SP_4100 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG PESETA100 + + +* AUSTRALIA 1 1 PLAY / 3 X 20 CENTS 2 FOR $1.00 + + .WORD 2,0,10,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 5 ;DOLLARS + .WORD 0 ;DON'T SHOW FRACTIONS FOR T + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG AUS_1 ;TITLE OF COIN MODE + .LONG AU_60 ;1 COIN PER CREDIT (SERIES OF S + .WORD SHOW_2 + .LONG AUST20C +* +* AUSTRALIA 2 1 PLAY / $1.00 2 PLAYS FOR $2.00 +* + .WORD 1,0,5,0,0,5,0,0,1,1 ; WILLY PRICING + .WORD 5 ; DOLLARS + .WORD 1 ; SHOW FRACTIONS FOR THE 3 C + .WORD 1,0,5,0,0 ; COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ; CHARACTER STRINGS. + .LONG CSM_LIST + .LONG AUS_2 ; TITLE OF COIN MODE + .LONG AU_100 ; 1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG AUST20C + + .ENDIF + +* JAPAN 1 1 PLAY / 100 YEN + + .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG NULL_ST,YEN_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG JAP_1 ;TITLE OF COIN MODE + .LONG JAP_100 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG YEN100 + + .IF FULLPRICE +* JAPAN 2 2 PLAY / 100 YEN + + .WORD 2,0,2,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG NULL_ST,YEN_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG JAP_2 ;TITLE OF COIN MODE + .LONG JAP_200 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG YEN100 + +* AUSTRIA 1 1 PLAY / 5 SCHILLING 2 PLAY / 10 SCHILLING + + .WORD 1,0,2,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,SHILL_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG ASTA_1 ;TITLE OF COIN MODE + .LONG ASTA_15 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG SHILL510 + +* AUSTRIA 2 1 PLAY / 2 X 5 SCHILLING 3 PLAY / 10 SCHILLING + + .WORD 1,0,2,0,0,2,4,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 5,0,10,0,0 ;COIN VALUE + .LONG NULL_ST,SHILL_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG ASTA_2 ;TITLE OF COIN MODE + .LONG ASTA_10 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG SHILL510 + +* BELGIUM 1 1 PLAY / 20F + + .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 4,0,4,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG BEL_1 ;TITLE OF COIN MODE + .LONG BEL_120 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG FRANC20 + +* BELGIUM 2 3 PLAY / 20F + + .WORD 3,0,3,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 4,0,4,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG BEL_2 ;TITLE OF COIN MODE + .LONG BEL_320 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG FRANC20 + +* BELGIUM 3 2 PLAY / 20F + + .WORD 2,0,2,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 1 ;FRACTIONS OK + .WORD 4,0,4,0,0 ;COIN VALUE + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG BEL_3 ;TITLE OF COIN MODE + .LONG BEL_220 ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG FRANC20 + +* +* BELGIUM ELECTRONIC +* + .WORD 10,1,4,0,0,4,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS + .WORD 1 ; COINS/DOLLAR + .WORD 1 ; DISPLAY FRACTIONS + .WORD 10,1,4,0,0 ; L,C,R,4 + .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. + .LONG BELGIUM_ELECTRONIC ; SPECIAL MESSAGE + .LONG BELGIUM_ELECTITLE ; TITLE OF COIN MODE + .LONG BEL_ELEC ; SETTINGS DESCRIPTION + .WORD SHOW_2 ; LINES TO SHOW ON + .LONG BELGIUM_ESLOT ; QUARTER + +* SWEDEN 1 PLAY / 3 X 1 KRONA 2 PLAY 5 KRONA + + .WORD 2,0,10,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 1 ;DOLLARS + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,KRONA_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG SWED_1 ;TITLE OF COIN MODE + .LONG SWED_2X5 ;1 COIN PER CREDIT (SERIES + .WORD SHOW_1 + .LONG KRONA5 + +* NEW ZEALAND 1 1 PLAY / 3 X 20 CENT + + .WORD 1,0,1,0,0,3,0,0,1,1 ;WILLY PRICING + .WORD 5 ;FIVE PER + .WORD 1 ;SHOW FRACTIONS + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG NZ_1 ;TITLE OF COIN MODE + .LONG NZ_13 ;1 COIN PER CREDIT (SERIES OF S + .WORD SHOW_1 + .LONG NZ20 + + +* NEW ZEALAND 2 1 PLAY / 2 X 20 CENT + + .WORD 1,0,1,0,0,2,0,0,1,1 ;WILLY PRICING + .WORD 5 ;FIVE PER + .WORD 1 ;SHOW FRACTIONS + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG NZ_2 ;TITLE OF COIN MODE + .LONG NZ_12 ;1 COIN PER CREDIT (SERIES OF S + .WORD SHOW_1 + .LONG NZ20 + +* NETHERLANDS 1 PLAY / 1 HFL. 3 PLAY / 2.5 HFL. + + .WORD 1,0,3,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;FIVE PER + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 2,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,HFL_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG NETH ;TITLE OF COIN MODE + .LONG NETH_HF ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_2 + .LONG HFSLOT + + +* FINLAND 1 PLAY / 1 MARKKA + + .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 1 ;FIVE PER + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG NULL_ST,MARKKA_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG FINLAND ;TITLE OF COIN MODE + .LONG FINMKA ;1 COIN PER CREDIT (SERIES OF ST + .WORD SHOW_1 + .LONG MKSLOT + +* NORWAY 1 PLAY / 2 X 1 KRONE 3/ 5 X 1 KRONE + + .WORD 3,0,3,0,0,5,0,0,2,2 ;WILLY PRICING + .WORD 1 ;FIVE PER + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,1,0,0 ;COIN VALUE + .LONG NULL_ST,KRONE_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG NORWAY ;TITLE OF COIN MODE + .LONG KR_LIST ;1 COIN PER CREDIT (SERIES OF STRI + .WORD SHOW_2 + .LONG NKRSLOT + +* DENMARK 1 PLAY / 2 X 1 KRONE 3/ 5 KRONE 7 / 10 KRONE + + .WORD 3,0,15,0,0,5,30,0,2,2 ;WILLY PRICING + .WORD 1 ;FIVE PER + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,5,0,0 ;COIN VALUE + .LONG NULL_ST,KRONE_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG DENMARK ;TITLE OF COIN MODE + .LONG DKR_LIST ;1 COIN PER CREDIT (SERIES + .WORD SHOW_3 + .LONG DKRSLOT + + +* ANTILLES 1 PLAY / 25 CENTS 4 PLAYS / 1 GUILDER + + .WORD 1,0,4,0,0,1,0,0,2,2 ;WILLY PRICING + .WORD 4 ;FIVE PER + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,4,0,0 ;COIN VALUE + .LONG NULL_ST,GUILDER_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG ANTILLES ;TITLE OF COIN MODE + .LONG ANT_LIST ;1 COIN PER CREDIT (SERIES + .WORD SHOW_1 + .LONG ANTSLOT + +* HUNGARY 1 CREDIT / 2X10 FORINT 3 CREDITS / 2X20 FORINT + + .WORD 1,0,2,0,0,2,4,0,2,2 ;WILLY PRICING + .WORD 1 ;1 TO 1 + .WORD 0 ;DON'T SHOW FRACTIONS + .WORD 1,0,2,0,0 ;COIN VALUE + .LONG NULL_ST,FORINT_TRAIL ;CHARACTER STRINGS. + .LONG CSM_LIST + .LONG HUNGARY ;TITLE OF COIN MODE + .LONG HUNG_LIST ;1 COIN PER CREDIT (SERIES + .WORD SHOW_1 + .LONG HUNGSLOT + + .ENDIF + +CS_ENTS EQU ($-CSELCT)/CS_SIZE ;NUMBER OF ENTRIES IN TABLE + + +; +; DIP SWITCH TABLES +; + +USABASE EQU 1 +GERBASE EQU G1SEL +FRABASE EQU F1SEL + + .IF FULLPRICE + +USADIP .WORD USABASE+0, USABASE+1, USABASE+2, USABASE+3, USABASE+8 + .WORD USABASE+8, USABASE+8 + +GERDIP .WORD GERBASE+0, GERBASE+1, GERBASE+2, GERBASE+3, GERBASE+4 + .WORD GERBASE+4, GERBASE+4 + +FRADIP .WORD FRABASE+0, FRABASE+1, FRABASE+2, FRABASE+3, FRABASE+12 + .WORD FRABASE+12, FRABASE+12 + + .ELSE + +USADIP .WORD USABASE+0, USABASE+1, USABASE+2, USABASE+3, USABASE+4 + .WORD USABASE+4, USABASE+4 + +GERDIP .WORD GERBASE+0, GERBASE+1, GERBASE+2, GERBASE+3, GERBASE+4 + .WORD GERBASE+4, GERBASE+4 + +FRADIP .WORD FRABASE+0, FRABASE+1, FRABASE+2, FRABASE+3, FRABASE+4 + .WORD FRABASE+4, FRABASE+4 + + .ENDIF + + +DIPCOINTAB .LONG USADIP, GERDIP, FRADIP, USADIP + + +************************************************************************** +* * +* COLLECTION MESSAGES * +* * +************************************************************************** +ME_ZERO .STRING "0" + .BYTE 0 + .EVEN + +ME_DASH .string "-",0 + .even + +ME_DECIMAL .STRING "." + .BYTE 0 + .EVEN + +ME_COLON .STRING ":" + .BYTE 0 + .EVEN + +DOLLAR_LEAD .STRING "$ " + .BYTE 0 + .EVEN + +POUND_LEAD + .STRING FONT_EPOUND," ",0 + .EVEN +POUND_TRAIL + .STRING " PND",0 + .EVEN + +NULL_ST + .BYTE 0 + .EVEN + +DM_TRAIL .STRING " DM" + .BYTE 0 + .EVEN + +FRANC_TRAIL .STRING " FRANC" + .BYTE 0 + .EVEN + + .IF FULLPRICE +LIRE_TRAIL .STRING " LIRE" + .BYTE 0 + .EVEN + +PESETA_TRAIL .STRING " PESETA" + .BYTE 0 + .EVEN + .ENDIF + +YEN_TRAIL + .STRING " YEN" + .BYTE 0 + .EVEN + + .IF FULLPRICE +SHILL_TRAIL + .STRING " SCHILLINGS" + .BYTE 0 + .EVEN + +KRONA_TRAIL + .STRING " KRONA" + .BYTE 0 + .EVEN + .ENDIF + +COINS_TRAIL + .STRING " COINS" + .BYTE 0 + .EVEN + + .IF FULLPRICE +HFL_TRAIL + .STRING " HFI." + .BYTE 0 + .EVEN + +MARKKA_TRAIL + .STRING " MARKKA" + .BYTE 0 + .EVEN + +KRONE_TRAIL + .STRING " KRONE" + .BYTE 0 + .EVEN + +GUILDER_TRAIL + .STRING " GUILDER" + .BYTE 0 + .EVEN + +FORINT_TRAIL + .STRING " FT",0 + .ENDIF + +* +* FOR THE COINAGE ADJUSTMENT MODE: +* +* +* THIS SET IS TITLES FOR THE CANNED MODES. +* +USA_1 .STRING "USA 1",0 + .EVEN +USA_2 .STRING "USA 2",0 + .EVEN +USA_3 .STRING "USA 3",0 + .EVEN +USA_4 .STRING "USA 4",0 + .EVEN + + .IF FULLPRICE +USA_5 .STRING "USA 5",0 + .EVEN +USA_6 .STRING "USA 6",0 + .EVEN +USA_7 .STRING "USA 7",0 + .EVEN +USA_8 .STRING "USA 8",0 + .EVEN +USA_9 .STRING "USA 9",0 + .EVEN +USA_10 .STRING "USA 10",0 + .EVEN + .ENDIF + +USA_ELECTITLE + .STRING "USA ECA",0 + .EVEN + +FRENCH_ELECTITLE + .STRING "FRANCE ECA",0 + .EVEN + +GERMAN_ELECTITLE + .STRING "GERMAN ECA",0 + .EVEN + +BEL_ELECTITLE + .STRING "BELGUIM ECA",0 + .EVEN + +GERMAN_1 .STRING "GERMAN 1",0 + .EVEN +GERMAN_2 .STRING "GERMAN 2",0 + .EVEN +GERMAN_3 .STRING "GERMAN 3",0 + .EVEN +GERMAN_4 .STRING "GERMAN 4",0 + .EVEN +GERMAN_5 .STRING "GERMAN 5",0 + .EVEN + +FRENCH_1 .STRING "FRANCE 1",0 + .EVEN +FRENCH_2 .STRING "FRANCE 2",0 + .EVEN +FRENCH_3 .STRING "FRANCE 3",0 + .EVEN +FRENCH_4 .STRING "FRANCE 4",0 + .EVEN + + .IF FULLPRICE +FRENCH_5 .STRING "FRANCE 5",0 + .EVEN +FRENCH_6 .STRING "FRANCE 6",0 + .EVEN +FRENCH_7 .STRING "FRANCE 7",0 + .EVEN +FRENCH_8 .STRING "FRANCE 8",0 + .EVEN +FRENCH_9 .STRING "FRANCE 9",0 + .EVEN +FRENCH_10 .STRING "FRANCE 10",0 + .EVEN +FRENCH_11 .STRING "FRANCE 11",0 + .EVEN +FRENCH_12 .STRING "FRANCE 12",0 + .EVEN + +CANADA + .STRING "CANADA",0 + .EVEN + +SWISS_1 .STRING "SWISS 1" + .BYTE 0 + .EVEN +SWISS_2 .STRING "SWISS 2" + .BYTE 0 + .EVEN +SWISS_3 .STRING "SWISS 3" + .BYTE 0 + .EVEN +ITALY_1 .STRING "ITALY" + .BYTE 0 + .EVEN +UK_1 .STRING "U.K. 1 ECA" + .BYTE 0 + .EVEN +UK_2 .STRING "U.K. 2 ECA" + .BYTE 0 + .EVEN +UK_3 .STRING "U.K. 3 ECA" + .BYTE 0 + .EVEN +UK_4 .STRING "U.K. 4" + .BYTE 0 + .EVEN +UK_5 .STRING "U.K. 5" + .BYTE 0 + .EVEN +SP_1 .STRING "SPAIN 1" + .BYTE 0 + .EVEN +SP_2 .STRING "SPAIN 2" + .BYTE 0 + .EVEN +AUS_1 .STRING "AUSTRALIA 1" + .BYTE 0 + .EVEN +AUS_2 .STRING "AUSTRALIA 2" + .BYTE 0 + .EVEN + .ENDIF + +JAP_1 .STRING "JAPAN 1" + .BYTE 0 + .EVEN + + .IF FULLPRICE +JAP_2 .STRING "JAPAN 2" + .BYTE 0 + .EVEN +ASTA_1 .STRING "AUSTRIA 1" + .BYTE 0 + .EVEN +ASTA_2 .STRING "AUSTRIA 2" + .BYTE 0 + .EVEN +BEL_1 .STRING "BELGIUM 1" + .BYTE 0 + .EVEN +BEL_2 .STRING "BELGIUM 2" + .BYTE 0 + .EVEN +BEL_3 .STRING "BELGIUM 3" + .BYTE 0 + .EVEN +BELGIUM_ELECTITLE + .STRING "BELGIUM ECA",0 + .EVEN +SWED_1 .STRING "SWEDEN" + .BYTE 0 + .EVEN +NZ_1 .STRING "NEW ZEALAND 1" + .BYTE 0 + .EVEN +NZ_2 .STRING "NEW ZEALAND 2" + .BYTE 0 + .EVEN +NETH .STRING "NETHERLANDS" + .BYTE 0 + .EVEN + +FINLAND .STRING "FINLAND" + .BYTE 0 + .EVEN + +NORWAY .STRING "NORWAY" + .BYTE 0 + .EVEN + +DENMARK .STRING "DENMARK" + .BYTE 0 + .EVEN + +ANTILLES .STRING "ANTILLES" + .BYTE 0 + .EVEN + +HUNGARY + .STRING "HUNGARY",0 + .EVEN + + .ENDIF +* +* THIS SECTION IS A POINTER TO STRING LISTS +* FOR THE "CURRENT SETTING" BOX. +* +USA_EL + .LONG EC1 + .LONG DOLL4 + .LONG 0 +* +* 1 COIN / 1 CREDIT +Q_Q + .LONG C11 ;THIS POINTS AT MESSAGE + .LONG 0 ;THIS ENDS LIST +* +* 2 COINS / 1 CREDIT +* +F_F_1S1C + .LONG C21 + .LONG 0 + +************************************************************************* + + +* +* 2 COINS / 1 CREDIT +* 4 COINS / 3 CREDITS +* +DOLLAR_3 .LONG C21 + .LONG C43 + .LONG 0 +* +* 2 COINS / 1 CREDIT +* 4 COINS / 4 CREDITS +* +DOLLAR_4 .LONG C21 + .LONG C44 + .LONG 0 + + +******************************************************************** + + + .IF FULLPRICE + +U1Q4D .LONG C11 ;THIS POINTS AT MESSAGE + .LONG DOLL4 ;4 FOR A DOLLAR + .LONG 0 + +;UFS2D .LONG C21 ; THIS POINTS AT MESSAGE +; .LONG DOLL2 ; 2 FOR A DOLLAR +; .LONG 0 + +UFS3D .LONG C21 ;THIS POINTS AT MESSAGE + .LONG DOLL3 ;3 FOR A DOLLAR + .LONG 0 + +UFS4D .LONG C21 ;THIS POINTS AT MESSAGE + .LONG DOLL4 ;4 FOR A DOLLAR + .LONG 0 + + .ENDIF + +* +* 1 PLAY 1/DM +* 5 PLAY 5/DM +* +DM_5 .LONG DM11 + .LONG DM55 + .LONG 0 + +DM_6 .LONG DM11 + .LONG DM65 + .LONG 0 + +DM_7 .LONG DM11 + .LONG DM75 + .LONG 0 + +DM_8 .LONG DM11 + .LONG DM85 + .LONG 0 + +DM112265 + .LONG DM11 + .LONG DM22 + .LONG DM65 + .LONG 0 + +SFRANC_6 .LONG SFRANC11 + .LONG SFRANC65 + .LONG 0 + +CAN_1503D + .LONG C15 ;THIS POINTS AT MESSAGE + .LONG DOLL3 ;3 FOR A DOLLAR + .LONG 0 + +SFRANC_7 .LONG SFRANC11 + .LONG SFRANC75 + .LONG 0 + +SFRANC_8 .LONG SFRANC11 + .LONG SFRANC85 + .LONG 0 +* +* 2 PLAYS 5F / 5 PLAYS 10F +* +FIVE_10 .LONG F25 + .LONG F510 + .LONG 0 + +FIVE_10_11 + .LONG F25 + .LONG F510 + .LONG F1120 + .LONG 0 + +FOUR_10 .LONG F25 + .LONG F410 + .LONG 0 + +FOUR_10_9 + .LONG F25 + .LONG F410 + .LONG F4109 + .LONG 0 + +THREE_10 .LONG F15 + .LONG F310 + .LONG 0 + +THREE_10_7 + .LONG F15 + .LONG F310 + .LONG F4107 + .LONG 0 + +TWO_10 .LONG F15 + .LONG F210 + .LONG 0 + +TWO_10_5 .LONG F15 + .LONG F210 + .LONG F4105 + .LONG 0 + +F1325 .LONG F3X1F + .LONG F2F5 + .LONG 0 + +F13255 .LONG F3X1F + .LONG F2F5 +; .LONG F52X5 + .LONG F5X10F + .LONG 0 + +F1235 .LONG F2X1F + .LONG F3F5 + .LONG 0 + +F12355 .LONG F2X1F + .LONG F3F5 + .LONG F72X5 + .LONG 0 + + .IF FULLPRICE + +* 500 LIRE + +P1500L .LONG P1500L_P + .LONG 0 + +* 1 PLAY / 20 P 3 PLAYS 50 P + +UK_120 .LONG UK_1201 + .LONG UK_1202 + .LONG UK_1203 + .LONG 0 + +;UK_220 .LONG UK_2201 +; .LONG UK_2202 +; .LONG 0 + +UK_520 +UK_320 .LONG UK_3201 +; .LONG UK_3202 + .LONG UK_3203 + .LONG 0 + +UK_220 +UK_420 .LONG UK_4201 + .LONG UK_4202 +; .LONG UK_4203 + .LONG 0 + +SP_4100 .LONG SP_11 + .LONG SP_44 + .LONG 0 + +SP_5100 .LONG SP_11 + .LONG SP_54 + .LONG 0 + +AU_60 .LONG AU_36 + .LONG AU_2D + .LONG 0 + +AU_100 .LONG AU_520 + .LONG AU_1D + .LONG 0 + + .ENDIF + +JAP_100 .LONG JAP_101 + .LONG 0 + + .IF FULLPRICE + +JAP_200 .LONG JAP_201 + .LONG 0 + +ASTA_10 .LONG ASTA101 + .LONG ASTA102 + .LONG 0 + +ASTA_15 .LONG ASTA151 + .LONG ASTA152 + .LONG 0 + +BEL_120 .LONG BEL_1201 + .LONG 0 +BEL_220 .LONG BEL_2201 + .LONG 0 +BEL_320 .LONG BEL_3201 + .LONG 0 +BEL_ELEC + .LONG BEL_1201 + .LONG 0 + +SWED_2X5 .LONG SWED_S51 + .LONG SWED_S52 + .LONG 0 + +NZ_12 .LONG NZ_121 + .LONG 0 + +NZ_13 .LONG NZ_131 + .LONG 0 + +NETH_HF .LONG HF_11 + .LONG HF_32 + .LONG 0 + +FINMKA .LONG FIN_1 + .LONG 0 + +KR_LIST .LONG NOR_12 + .LONG NOR_35 + .LONG 0 + +DKR_LIST .LONG DEN_12 + .LONG DEN_35 + .LONG DEN_710 + .LONG 0 + +ANT_LIST .LONG ANT1P25 + .LONG ANT4DOL + .LONG 0 + +HUNG_LIST + .LONG HUNG2X10 + .LONG HUNG2X20 + .LONG 0 + + .ENDIF + +EC1 .STRING "1 CREDIT / 25 CENTS",0 + .EVEN +C11 .STRING "1 CREDIT / 1 COIN" + .BYTE 0 + .EVEN +C21 .STRING "1 CREDIT / 2 COINS" + .BYTE 0 + .EVEN +C43 .STRING "3 CREDIT / 4 COINS" + .BYTE 0 + .EVEN +C44 .STRING "4 CREDITS / 4 COINS" + .BYTE 0 + .EVEN +C15 + .STRING "1 CREDIT / 2 X 25 CENTS",0 + .EVEN + +DOLL2 .STRING "2 CREDITS / $1.00" + .BYTE 0 + .EVEN + +DOLL3 .STRING "3 CREDITS / $1.00" + .BYTE 0 + .EVEN + +DOLL4 .STRING "4 CREDITS / $1.00" + .BYTE 0 + .EVEN + +DM11 .STRING "1 CREDIT / 1 DM",0 + .EVEN +DM22 .STRING "2 CREDITS / 2 DM",0 + .EVEN +DM55 .STRING "5 CREDITS / 5 DM",0 + .EVEN +DM65 .STRING "6 CREDITS / 5 DM",0 + .EVEN +DM75 .STRING "7 CREDITS / 5 DM",0 + .EVEN +DM85 .STRING "8 CREDITS / 5 DM",0 + .EVEN + +F3F5 .STRING "3 CREDITS / 5F" + .BYTE 0 + .EVEN +F2F5 +F25 .STRING "2 CREDITS / 5F" + .BYTE 0 + .EVEN +F15 .STRING "1 CREDIT / 5F" + .BYTE 0 + .EVEN +F510 .STRING "5 CREDITS / 10F" + .BYTE 0 + .EVEN +F1120 .STRING "11 CREDITS / 2 X 10F" + .BYTE 0 + .EVEN +F4109 .STRING "9 CREDITS / 2 X 10F" + .BYTE 0 + .EVEN +F4107 .STRING "7 CREDITS / 2 X 10F" + .BYTE 0 + .EVEN +F4105 .STRING "5 CREDITS / 2 X 10F" + .BYTE 0 + .EVEN +F410 .STRING "4 CREDITS / 10F" + .BYTE 0 + .EVEN +F310 .STRING "3 CREDITS / 10F" + .BYTE 0 + .EVEN +F210 .STRING "2 CREDITS / 10F" + .BYTE 0 + .EVEN + +F3X1F .STRING "1 CREDIT / 3 X 1F" + .BYTE 0 + .EVEN + +F2X1F .STRING "1 CREDIT / 2 X 1F" + .BYTE 0 + .EVEN + +F52X5 .STRING "5 CREDITS / 2 X 5F" + .BYTE 0 + .EVEN + +F5X10F .STRING "5 CREDITS / 10F" + .BYTE 0 + .EVEN + +F72X5 .STRING "7 CREDITS / 2 X 5F" + .BYTE 0 + .EVEN + +SFRANC11 .STRING "1 CREDIT / 1F" + .BYTE 0 + .EVEN +SFRANC65 .STRING "6 CREDITS / 5F" + .BYTE 0 + .EVEN +SFRANC75 .STRING "7 CREDITS / 5F" + .BYTE 0 + .EVEN +SFRANC85 .STRING "8 CREDITS / 5F" + .BYTE 0 + .EVEN + + .IF FULLPRICE +P1500L_P .STRING "1 CREDIT / 500 LIRE" + .BYTE 0 + .EVEN + +UK_1201 .STRING "1 CREDIT / 30 P" + .BYTE 0 + .EVEN +UK_1202 .STRING "2 CREDITS / 50 P" + .BYTE 0 + .EVEN +UK_1203 .STRING "5 CREDITS / L1.00" + .BYTE 0 + .EVEN + +UK_2201 .STRING "2 CREDITS / 20 P" + .BYTE 0 + .EVEN +UK_2202 .STRING "5 CREDITS / 50 P" + .BYTE 0 + .EVEN + +UK_3201 .STRING "1 CREDIT / 50 P" + .BYTE 0 + .EVEN +;UK_3202 .STRING "2 CREDITS / 50 P" +; .BYTE 0 +; .EVEN +UK_3203 .STRING "2 CREDITS / L1.00" + .BYTE 0 + .EVEN + +UK_4201 .STRING "1 CREDIT / 50 P" + .BYTE 0 + .EVEN +UK_4202 .STRING "3 CREDITS / L1.00" + .BYTE 0 + .EVEN +;UK_4203 .STRING "7 CREDITS / L1.00" +; .BYTE 0 +; .EVEN + +SP_11 .STRING "1 CREDIT / 100 PESETA" + .BYTE 0 + .EVEN + +SP_44 .STRING "5 CREDITS / 500 PESETA" + .BYTE 0 + .EVEN + +SP_54 .STRING "6 CREDITS / 500 PESETA" + .BYTE 0 + .EVEN +NZ_131 +AU_36 .STRING "1 CREDIT / 3 X 20 CENTS" + .BYTE 0 + .EVEN +AU_2D .STRING "2 CREDITS / $ 1.00" + .BYTE 0 + .EVEN +AU_520 .STRING "1 CREDIT / 5 X 20 CENTS" + .BYTE 0 + .EVEN +AU_1D .STRING "1 CREDIT / $ 1.00" + .BYTE 0 + .EVEN + .ENDIF + +JAP_101 .STRING "1 CREDIT / 100 YEN" + .BYTE 0 + .EVEN + + .IF FULLPRICE + +JAP_201 .STRING "2 CREDITS / 100 YEN" + .BYTE 0 + .EVEN +ASTA101 .STRING "1 CREDIT / 2 X 5 SCHILLING" + .BYTE 0 + .EVEN +ASTA102 .STRING "3 CREDITS / 2 X 10 SCHILLING" + .BYTE 0 + .EVEN +ASTA151 .STRING "1 CREDIT / 5 SCHILLING" + .BYTE 0 + .EVEN +ASTA152 .STRING "2 CREDITS / 10 SCHILLING" + .BYTE 0 + .EVEN + +BEL_1201 .STRING "1 CREDIT / 2OF" + .BYTE 0 + .EVEN +BEL_2201 .STRING "2 CREDITS / 2OF" + .BYTE 0 + .EVEN +BEL_3201 .STRING "3 CREDITS / 2OF" + .BYTE 0 + .EVEN + +SWED_S51 .STRING "1 CREDIT / 3 X 1 KRONA" + .BYTE 0 + .EVEN +SWED_S52 .STRING "2 CREDITS / 5 KRONA" + .BYTE 0 + .EVEN + +NZ_121 .STRING "1 CREDIT / 2 X 20 CENTS" + .BYTE 0 + .EVEN + +HF_11 .STRING "1 CREDIT / 1 HFI" + .BYTE 0 + .EVEN + +HF_32 .STRING "3 CREDITS / 2.5 HFI" + .BYTE 0 + .EVEN + +FIN_1 .STRING "1 CREDIT / 1 MARKKA" + .BYTE 0 + .EVEN + +DEN_12 +NOR_12 .STRING "1 CREDIT / 2 X 1 KRONE" + .BYTE 0 + .EVEN + +NOR_35 .STRING "3 CREDITS / 5 X 1 KRONE" + .BYTE 0 + .EVEN + +DEN_35 .STRING "3 CREDITS / 5 KRONE" + .BYTE 0 + .EVEN + +DEN_710 .STRING "7 CREDITS / 2 X 5 KRONE" + .BYTE 0 + .EVEN + +ANT1P25 .STRING "1 CREDIT / 25 CENTS" + .BYTE 0 + .EVEN + +ANT4DOL .STRING "4 CREDITS / 1 GUILDER" + .BYTE 0 + .EVEN + +HUNG2X10 + .STRING "1 CREDIT / 2 X 10 FORINT",0 + .EVEN + +HUNG2X20 + .STRING "3 CREDITS / 2 X 20 FORINT",0 + .EVEN + + .ENDIF + +************************************************************************** +* * +* COIN SLOT TITLES * +* * +************************************************************************** + +USA_ESLOT + .STRING "$1.00 .10 .25 .5 $1.00 ",0 + .EVEN + +FRANCE_ESLOT + .STRING "1F 5F 10F ",0 + .EVEN + +GERMAN_ESLOT + .STRING " 5DM 2DM 1DM ",0 + .EVEN + +BELGIUM_ESLOT + .STRING " 50F 20F 5F ",0 + .EVEN + +USA_QQ .STRING "25 CENT 25 CENT" + .BYTE 0 + .EVEN + + .IF FULLPRICE +USA_QDQ + .STRING ".25 .25 $1.00",0 + .EVEN + .ENDIF + +GERMAN_15 .STRING "1 DM 5 DM " + .BYTE 0 + .EVEN +FRENCH510 .STRING "5F 10F " + .BYTE 0 + .EVEN +FRENCH1F5F + .STRING "1F 5F ",0 + .EVEN + +CAN_QD + .STRING ".25 $1.00 $1.00",0 + .EVEN + + .IF FULLPRICE +SWISS15 + .STRING "1F 5F ",0 + .BYTE 0 + .EVEN +ITALYLIRE .STRING "500L 500L " + .BYTE 0 + .EVEN +UK2050 .STRING "L1.00 50 P " + .BYTE 0 + .EVEN +UK_ELEC .STRING "L1.00 20P 50P 10P " + .BYTE 0 + .EVEN +UK_CCU .STRING "CCU ON LEFT SLOT " + .BYTE 0 + .EVEN +PESETA100 + .STRING "100 P 500 P ",0 + .EVEN +AUST20C + .STRING ".20 $ 1.00 ",0 + .EVEN + + .ENDIF + +YEN100 .STRING "100Y 100Y " + .BYTE 0 + .EVEN + + .IF FULLPRICE +SHILL510 .STRING "5 10 SCHILLING " + .BYTE 0 + .EVEN +FRANC20 .STRING "20F 20F " + .BYTE 0 + .EVEN +KRONA5 .STRING "1 KR 5 KR " + .BYTE 0 + .EVEN +NZ20 .STRING ".20 .20 " + .BYTE 0 + .EVEN +HFSLOT .STRING "1HFI 2.5HFI " + .BYTE 0 + .EVEN + +MKSLOT .STRING "1 1 MARKKA " + .BYTE 0 + .EVEN + +NKRSLOT .STRING "1 KR 1 KR " + .BYTE 0 + .EVEN + +DKRSLOT .STRING "1 KR 5 KR " + .BYTE 0 + .EVEN + +ANTSLOT .STRING ".25 1 GUILDER " + .BYTE 0 + .EVEN + +HUNGSLOT + .STRING "10 20 FORINT ",0 + .EVEN + .ENDIF + +;;CP_CX EQU 200 +;;CP_11 EQU 11 +;;CP_13 EQU 13 +;;CP_23 EQU 23 +;;CP_33 EQU 33 + + +OCOP MESS_MAC RD7FONT,SPACING07,CP_CX,CP_11,ROBO_YELLOW,STRCNRM,0 + .STRING "1 COIN / 1 PLAY" + .BYTE 0,0 + .EVEN + +USA_ELECTRONIC: + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 + .STRING "1 CREDIT / 25 CENTS" + .STRING "\n4 CREDITS / 1 DOLLAR",0,1 + .EVEN + +FRANCE_ELECTRONIC: + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 + .STRING "1 CREDIT / 25 CENTS" + .STRING "\n4 CREDITS / 1 DOLLAR",0,1 + .EVEN + +GERMAN_ELECTRONIC: + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 + .STRING "1 CREDIT / 1 DM" + .STRING "\n6 CREDITS / 5 DM",0,1 + .EVEN + + .IF FULLPRICE +BELGIUM_ELECTRONIC: + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 + .STRING "1 CREDIT / 20 FR" + .EVEN + +UK_ELECTRONIC1 + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_LF,STRCNRM,0 + .STRING "1 CREDIT / 50 P" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_33,ROBO_LF,STRCNRM,0 + .STRING "3 CREDITS / " + .BYTE FONT_EPOUND + .STRING "1.00" + .BYTE 0,0 + .EVEN +UK_ELECTRONIC2 + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_LF,STRCNRM,0 + .STRING "1 CREDIT / 50 P" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_33,ROBO_LF,STRCNRM,0 + .STRING "2 CREDITS / " + .BYTE FONT_EPOUND + .STRING "1.00" + .BYTE 0,0 + .EVEN +UK_ELECTRONIC3 + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_LF,STRCNRM,0 + .STRING "1 CREDIT / 30 P" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_23,ROBO_LF,STRCNRM,0 + .STRING "2 CREDITS / 50 P" + .BYTE 0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,CP_CX,CP_33,ROBO_LF,STRCNRM,0 + .STRING "5 CREDITS / " + .BYTE FONT_EPOUND + .STRING "1.00" + .BYTE 0,0 + .EVEN + .ENDIF + + + +* +* THE FOLLOWING 2 MESSAGES ARE GENERIC AND WILL +* BE DISPLAYED IF THE MODE MATCHES AND NO +* APPROPRIATE MESSAGE EXISTS +* +* THIS IS FOR THIS BEING THE ONLY MESSAGE DISPLAYED ON +* THE SCREEN +* +TWO_TO_START + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_12,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS TO START",0,1 + .even + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 + .byte "1 CREDIT TO CONTINUE",0,0 + .even + +TWO_TO_START_2C + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_12,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS TO START",0,1 + .even + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS TO CONTINUE",0,0 + .even +* +* THIS IS FOR LINES TWO AND 3 WITH AN ADDITIONAL LINE ABOVE +* + +TWO_TS MESS_MAC RD15FONT,SPACING20,CP_CX,CP_23,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS TO START",0,1 + .even + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_33,ROBO_LASER,STRCNRM,0 + .byte "1 CREDIT TO CONTINUE",0,0 + .even + +TWO_TP MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS PER PLAYER",0,0 + .even + +TWO_CRED_PER_PLAYER + MESS_MAC RD15FONT,SPACING20,CP_CX,CP_11,ROBO_LASER,STRCNRM,0 + .byte "2 CREDITS PER PLAYER",0,0 + .even + +MAX_C_M MESS_MAC RD15FONT,SPACING20,CP_CX,CP_11,ROBO_LF,STRCNRM,0 + .byte "MAXIMUM CREDITS!",0,0 + .even + +****************************************************************************** + + .end + + \ No newline at end of file diff --git a/MENU.EQU b/MENU.EQU new file mode 100755 index 0000000..2a43fe9 --- /dev/null +++ b/MENU.EQU @@ -0,0 +1,196 @@ +**********************************MENU EQUATES**************************** +; +; FOR EACH ENTRY IN THE MENU +; +MENU_TEXT_PTR EQU 0 ;OFFSET OF TEXT POINTER +MENU_ROUTINE EQU LONG_SIZE ;OFFSET OF ROUTINE +MENU_HELP EQU MENU_ROUTINE+LONG_SIZE +MENU_ENTRY_SIZE EQU 3*LONG_SIZE +* +BLNK_HELP EQU 0 ;NO HELP BOX FOR THIS ENTRY +NO_HELP EQU 00000001H ;NO HELP AREA IN THIS MENU +ADJ_HELP EQU 00000002H ;PASS STRUCTURE POINTER TO ADJUSTMENT HELP ROUT +SND_HELP EQU 00000003H ;CALLED ON SOUND TEST MENU +SND_PLAY EQU 00000004H ;CALLED FROM SOUND "PLAY" SELECTIONS +* +SND_MESS_Y EQU 196 +SND_BOX_H EQU 57 + +* +* SPACING BETWEEN BOXES ON SCREEN +* +BOX_YGAP EQU 3 +BOX_XGAP EQU 2 +* +* +* A CENTERED BOX NEEDS TO BE MOVED LEFT THIS AMOUNT +* (PIXELS) TO CORRECTLY FRAME CENTERED TEXT AT +* THE SAME POSITION +* +C_KLUDGE EQU 1 +* +* THESE DETERMINE THE THICKNESS OF THE BOX LINES +* +MB_XWID EQU 3 +MB_YWID EQU 3 +* +* GAP BETWEEN A MENU BORDER BOX AND +* THE SELECTION BAR +* +GAP EQU 2 ;GAP BETWEEN BORDER AND SELECTION BAR +* +* CONSTANT TO PASS TO "DO_BORDER" FOR OUR +* BOX SIZE +* +BORDER_SIZE EQU (MB_YWID*10000H)+MB_XWID + +*******************************TEST TITLE CONSTANTS**************************** +* +* THESE ARE USED TO SET TOP BOX AND MAIN TITLE. +* THE MENUS AND HELP SCREENS WILL SQUARE OFF +* TO THE NUMBERS SET HERE. +* + +TM_X EQU 200 ;USED TO POSITION TITLE AND BOX TOGETHER +TM_Y EQU 10 + +TIT_ULX EQU TM_X-195 +TIT_LRX EQU TM_X+189 + +TIT_ULY EQU TM_Y-6 +TIT_LRY EQU TM_Y+32 + +********************************MAIN MENU CONSTANTS*************************** + +INST_ULY EQU TIT_LRY+BOX_YGAP ;Y RANGE FOR INSTRUCTION BOX +INST_LRY EQU INST_ULY+29 + +BAR_DY EQU -8 +BAR_WID EQU 183 +MENU_X EQU TIT_ULX+GAP+MB_XWID+(BAR_WID/2)+C_KLUDGE +MENU_Y EQU INST_LRY+BOX_YGAP+MB_YWID+GAP-BAR_DY +MENU_DY EQU 23 +BAR_HITE EQU 26 +BAR_DX EQU 6 +* +* HELP DRAWER CONSTANTS +* +HELP_X_MARGIN EQU 10 ;MARGIN FOR LEFT JUSTIFIED HELP TEXT +HELP_Y_MARGIN EQU 8 ;TOP OF BOX TO 1ST ENTRY +HELP_YLO_MARGIN EQU HELP_Y_MARGIN-4 ;BOTTOM MARGIN IS A TOUCH LESS DUE +* ;TO SPACING +HELP_DY EQU 12 ;SCREEN UNITS PER ITEM. +* +* +* ADJUSTMENT MENU CONSTANTS +* +* "CURRENT SETTING" BOX +* +CUR_ULY EQU 125 +CUR_LRX EQU TIT_LRX +CUR_LRY EQU CUR_ULY+(INST_LRY-INST_ULY) ;SAME HEIGHT AS TOP BOX +CUR_ULY2 EQU 140 +CUR_LRY2 EQU CUR_ULY2+(INST_LRY-INST_ULY) + +ADJ_ULY EQU CUR_LRY2+BOX_YGAP ;USE OUR "FIXED" SPACING. +ADJ_CULY EQU ADJ_ULY-20 ; COIN UPPER LEFT Y +ADJ_PULY EQU ADJ_ULY-28 + +COIN_HEAD_Y EQU ADJ_CULY+34 ;1ST OF TOP COIN INFO LINES +MESS_CTS EQU COIN_HEAD_Y+35 ;START/CONTINUE PLACE + +************************************************************************** +* * +* COIN SELECT TABLE OFFSETS * +* * +************************************************************************** + +* IF "CHUTES" VALUE CHANGES.....EXTRA WORDS MUST BE PUT HERE + +CS_LMULT EQU 0 +CS_CMULT EQU CS_LMULT+WORD_SIZE +CS_RMULT EQU CS_CMULT+WORD_SIZE +CS_XMULT EQU CS_RMULT+WORD_SIZE +CS_DBV EQU CS_XMULT+WORD_SIZE +CS_UCRED EQU CS_DBV+WORD_SIZE +CS_UBON EQU CS_UCRED+WORD_SIZE +CS_UMIN EQU CS_UBON+WORD_SIZE + +CS_STRT EQU CS_UMIN+WORD_SIZE +CS_CONT EQU CS_STRT+WORD_SIZE +CS_CDIV EQU CS_CONT+WORD_SIZE + +CS_FRAC EQU CS_CDIV+WORD_SIZE +CS_COPY EQU CS_FRAC+WORD_SIZE ;UP TO HERE IS COPIED AS ADJUSTMENTS +CS_LVAL EQU CS_COPY +CS_CVAL EQU CS_LVAL+WORD_SIZE +CS_RVAL EQU CS_CVAL+WORD_SIZE +CS_XVAL EQU CS_RVAL+WORD_SIZE +CS_DBVVAL EQU CS_XVAL+WORD_SIZE +CS_LMES EQU CS_DBVVAL+WORD_SIZE +CS_RMES EQU CS_LMES+LONG_SIZE +CS_PROMPT EQU CS_RMES+LONG_SIZE +CS_TITLE EQU CS_PROMPT+LONG_SIZE +CS_LIST EQU CS_TITLE+LONG_SIZE +CS_PICK EQU CS_LIST+LONG_SIZE ;WHICH LINE TO ADD TO 2 TO START...1 TO +CS_SLOTS EQU CS_PICK+WORD_SIZE ;TEXT DESCRIBING COIN SLOTS +CS_SIZE EQU CS_SLOTS+LONG_SIZE + +* +* ADJUSTMENT STRUCTURE. THIS STRUCTURE IS +* POINTED TO BY THE 2ND MENU LONG WORD (WHERE NORMALLY +* THE ROUTINE LIVES). +* +AD_ROUT EQU 0 ;LONG...ROUTINE TO RUN WHEN SELECTED. +AD_TITLE EQU AD_ROUT+LONG_SIZE ;LONG...POINTER TO TITLE FOR RIGHT COLUMN +AD_HELP EQU AD_TITLE+LONG_SIZE ;LONG...POINT TO HELP STRUCT FOR EXPLANATION +AD_CMOS EQU AD_HELP+LONG_SIZE ;WORD...GET_ADJ / PUT_ADJ NUMBER. +AD_MIN EQU AD_CMOS+WORD_SIZE ;LONG...MINIMUM VALUE FOR ADJ. +AD_MAX EQU AD_MIN+LONG_SIZE ;LONG...MAXIMUM VALUE FOR ADJ. +AD_DELTA EQU AD_MAX+LONG_SIZE ;LONG...UNITS BETWEEN VALUES. +AD_ZEQU EQU AD_DELTA+LONG_SIZE ;LONG...NUMBER TO STORE AS A ZERO. +AD_NAMEIT EQU AD_ZEQU+LONG_SIZE ;LONG...ROUTINE TO PRINT VALUES. +AD_FLAGS EQU AD_NAMEIT+LONG_SIZE ;WORD...bit zero non zero says wrap +* ; bit one non zero says BCD + ; bit two says flag "1st 8 coinage changed" (ADJVIRGIN) + ; bit three says flag 1st 6 changed (ADJ1st6) + ; bit four says its hsr counter +AD_NAMPTR EQU AD_FLAGS+WORD_SIZE ;LONG...POINTER TO DATA FOR NAMEIT ROUTINE +AD_MAIN EQU AD_NAMPTR+LONG_SIZE ;LONG...MAIN MENU STRING + +WRAP_BIT EQU 0 +BCD_BIT EQU 1 +VIRG_BIT EQU 2 +SIX_BIT EQU 3 +HSR_BIT EQU 4 +WRAP_VAL EQU 1 +BCD_VAL EQU 2 +VIRG_VAL EQU 4 +SIX_VAL EQU 8 +HSR_VAL EQU 16 +* +* FOR CSELECT TABLE...... +* +* A1 = 1 PLOT ONLY THE STRING LIST (1 OR 2 POINTERS +* CENTERED APPROPRIATELY +* +* A1 = 2 PLOT THE 1ST LINE OF THE STRING LIST ALONG +* WITH THE 2 CREDITS TO START...1 TO CONTINUE +* +* A1 = 3 PLOT THE 2ND LINE OF THE STRING LIST ALONG +* WITH THE 2 CREDITS TO START...1 TO CONTINUE +* +CSM_LIST EQU 1 +CSM_1W_21 EQU 2 +CSM_2W_21 EQU 3 +CSM_3W_21 EQU 4 +CSM_LAST EQU 4 + +* +* FOR CS_PICK: +* +SHOW_NONE EQU 0 ;JUST USE 2/1 BY ITSELF +SHOW_1 EQU 2 ;SHOW 1ST LINE +SHOW_2 EQU 3 ;SHOW 2ND LINE +SHOW_3 EQU 4 ;SHOW 3RD LINE + \ No newline at end of file diff --git a/MERGE.ASM b/MERGE.ASM new file mode 100755 index 0000000..62d8226 --- /dev/null +++ b/MERGE.ASM @@ -0,0 +1,4 @@ +15 Sep 94 - Jason & Jamie merge, new code on both systems +16 Sep 94 - Merge Mark in, new code on Jason's system +27 Sep 94 - Code from Jason's system up on net at 6:40 p.m. + \ No newline at end of file diff --git a/MISCIMG.ASM b/MISCIMG.ASM new file mode 100755 index 0000000..36da8ff --- /dev/null +++ b/MISCIMG.ASM @@ -0,0 +1,15 @@ + .FILE "imgtbl.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include miscimg.glo + + .include miscimg.tbl + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/MOVELIST.DOC b/MOVELIST.DOC new file mode 100755 index 0000000..94c7c77 --- /dev/null +++ b/MOVELIST.DOC @@ -0,0 +1,59 @@ + shawn razor yoko +---------------------+------------+--------------+--------------+ +xxx_2_punch_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_punch_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_2_push_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_push_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_2_lbowdrop_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_lbowdrop_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_2_butt_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_butt_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_2_kick_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_kick_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_2_stomp_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_stomp_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_2_knee_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_knee_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_flying_kick_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_run_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_ocrun_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_2_head_hit_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_head_hit_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_2_head_hit2_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_head_hit2_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_2_losebal_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_losebal_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_2_body_hit_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_4_body_hit_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_hitonground_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_fall_back_anim | | | | +---------------------+------------+--------------+--------------+ +xxx_dizzy_anim | | | | +---------------------+------------+--------------+--------------+ + \ No newline at end of file diff --git a/MOVES1.DOC b/MOVES1.DOC new file mode 100755 index 0000000..8ac1938 Binary files /dev/null and b/MOVES1.DOC differ diff --git a/MOVET.BAT b/MOVET.BAT new file mode 100755 index 0000000..0c0fc13 --- /dev/null +++ b/MOVET.BAT @@ -0,0 +1,3 @@ +@echo off +move t\%1 . + \ No newline at end of file diff --git a/MPROC.ASM b/MPROC.ASM new file mode 100755 index 0000000..c9ee526 --- /dev/null +++ b/MPROC.ASM @@ -0,0 +1,682 @@ +************************************************************** +* GSP MULTI-PROCESSING SYSTEM +* +* Software: Eugene P Jarvis, Shawn Liptak +* Initiated: 1988? +* +* Modified: Shawn Liptak, 7/?/91 -New KILL stuff (Total carnage) +* Shawn Liptak, 8/12/91 -KOP code +* Shawn Liptak, 10/27/91 -Shawn.hdr +* Shawn Liptak, 2/18/92 -Basketball (cleanup) +* Shawn Liptak, 7/1/92 -Slowmotion +* Jason Skiles, 2/23/94 -Super-procs +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 2/23/94 11:45 +************************************************************** + .file "mproc.asm" + .title "GSP multi-processing system" + .width 132 + .option b,d,l,t + .mnolist + + + .include "gsp.equ" + .include "sys.equ" + .include "mproc.equ" + .include "display.equ" + .include "macros.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref dirqtimer + .ref L_TIMER + +****************************************************************************** + + + .bss PRCSTR ,NPROC*PRCSIZ ;Process data blocks + +; Note: A super-proc is spotted by comparing its address to SPRCSTR. +; Make SURE that SPRCSTR always rests higher in RAM than PRCSTR. +; It would be A Bad Thing were this test to become unreliable. + + .bss SPRCSTR ,SNPROC*SPRCSIZ ;Super-process data blocks + + .sect "FIXED" +ACTIVE .long 0 +FREE .long 0 +SFREE .long 0 + + + .text + + +******************************** +* Process list initialize +* >A13=*Process active list +* Trashes scratch + + SUBR process_init + + movi ACTIVE,a13 ;Init A13 + clr a0 + move a0,*a13,L ;Empty list + + movi PRCSTR,a1 + move a1,@FREE,L ;Full free list + + movi NPROC,b0 ;# of processes +#lp move a1,a14 + addi PRCSIZ,a1 + move a1,*a14,L ;Set link + dsj b0,#lp + + move a0,*a14,L ;Null last link + + ;initialize the super-proc list + movi SPRCSTR,a1 + move a1,@SFREE,L + + movi SNPROC,b0 ;# of processes +#slp move a1,a14 + addi SPRCSIZ,a1 + move a1,*a14,L ;Set link + dsj b0,#slp + + move a0,*a14,L ;Null last link + + rets + + +#******************************* +* Process dispatch + + SUBR process_dispatch + + .if 0 + + movi 31*32,a0 ;Proc usage + move a0,@ERASELOC + +#dmawt move b13,b13 + jrge #dmawt + movk 6,a0 ;DMA usage + move a0,@ERASELOC +#noline + .endif + + .if DEBUG + .ref slowmotion + move @slowmotion,a0 +#smlp move @dirqtimer,a1 + cmp a1,a0 + jrge #smlp + .endif + + movi ACTIVE,a13 ;*Proc list + clr a0 + move a0,@dirqtimer ;Tell DIRQ to flip and draw + +#lp + +;inlined obj_yzsort + + movi OBJLST,a0 + movk 1,a1 ;Lowest Z + sll 31,a1 ;Make >80000000 + clr a8 + jruc yzlp + + .align +yz0 + move *a2(OZPOS),a6 ;Get Z + move *a2(OYPOS),a7 ;Get Y + + cmp a1,a6 + jrgt priok ;Next Z > Current Z? + jrlt priswap + + cmp a5,a7 + jrge priok ;Next Y > Current Y? + +priswap dint ;>Make current after next + movk 1,a8 + move a2,*a4,L ;Point last to next + move *a2,*a0,L ;Point current to block after next + move a0,*a2,L ;Point next to current + movk 1,a8 + eint + move a2,a4 + jruc yzlp ;Continue sort of current obj + +priok move a0,a4 ;A4=*Last obj + move a2,a0 ;A0=*Current obj + move a6,a1 ;A1=Current Z + move a7,a5 ;A5=Current Y + +yzlp move *a0,a2,L ;A2=*Next obj + jrnz yz0 + + move a8,a8 + jrnz #lp + +#lp2 + move @dirqtimer,a0 + jrz #lp2 ;Wait? + + calla L_TIMER ;Linky timer (FIX so BOG time is OK!) + + jruc prcd1 + +******************************** +* Process sleep +* Stack=*Wakeup +* A0=Sleep time + +PRCSLP + PULL a7 ;Get *Wakeup + + .if DEBUG + cmpi >FF800000,a7 + jrhs #psok + LOCKUP ;bad wake address! +#psok + .endif + +PRCLSP move a13,a1 + addi PDATA,a1 + mmtm a1,a7,a8,a9,a10,a11,a12 ;*Wakeup, regs, *stack + move a0,-*a1 ;sleep + + .if DEBUG + move a13,a0 + cmpi SPRCSTR,a13 ;is it a superproc? + jrge #super_stkchk + + addi PSDATA,a0 + cmp a0,a12 + jrlt $ ;stick on stack overflow + addi PRCSIZ-PSDATA,a0 + cmp a0,a12 + jrgt $ ;stick on stack underflow + jruc prcd1 + +#super_stkchk + addi SPSDATA,a0 + cmp a0,a12 + jrlt $ ;stick on stack overflow + addi SPRCSIZ-SPSDATA,a0 + cmp a0,a12 + jrgt $ ;stick on stack underflow + jruc prcd1 + .endif + +prcd1 + + move *a13,a13,L + jrz prcdx ;End? + move *a13(PTIME),a0 ;Get count + subk 1,a0 + move a0,*a13(PTIME) ;Put it back + jrgt prcd1 ;Not ready? + + + move a13,a1 ;>Dispatch + addi >40,a1 + mmfm a1,a7,a8,a9,a10,a11,a12 ;*Wake, regs, *stack + +#go + .if DEBUG + cmpi >FF800000,a7 + jrhs #wake_ok + LOCKUP ;bad wake address! +#wake_ok + .endif + jump a7 ;Do process + +prcdx + rets + +******************************** +* Process kills itself + +SUCIDE + movi ACTIVE,a1 +suclp move a1,a2 ;save previous + move *a1,a1,L + jrz sucerr + + cmp a1,a13 + jrne suclp ;!Us + + move *a1,*a2,L ;Unlink + + cmpi SPRCSTR,a1 + jrge #suclink_sproc + + move @FREE,*a1+,L ;Link into free list at start + subk 32,a1 + move a1,@FREE,L + + move a2,a13 ;Set current process to previous + jruc prcd1 ;Continue with dispatch + +#suclink_sproc + move @SFREE,*a1+,L ;Link into super-proc free list at start + subk 32,a1 + move a1,@SFREE,L + move a2,a13 ;Continue with dispatch + jruc prcd1 + +sucerr + .if DEBUG + LOCKUP + eint + .else + CALLERR 5,0 + .endif + movi ACTIVE,a13 ;*Proc list + jruc prcd1 + + +#******************************* +* Kill process (won't kill self) +* A0=*Process to kill +* Trashes scratch + +KILL + cmp a0,a13 + jreq #x ;Killing self? + + movi ACTIVE,a1 + +#lp move a1,a14 ;Save previous + move *a1,a1,L + jrz killerr ;Can't find? + cmp a1,a0 + jrne #lp ;Not the one? + + move *a0,*a14,L ;Unlink from active + + cmpi SPRCSTR,a0 + jrge #kill_super + move @FREE,*a0+,L ;Link into free list at start + subk 32,a0 + move a0,@FREE,L + jruc #x + +#kill_super + move @SFREE,*a0+,L ;Link into free list at start + subk 32,a0 + move a0,@SFREE,L + jruc #x + +#x rets + +killerr + .if DEBUG + LOCKUP + eint + .else + CALLERR 6,0 + .endif + jruc #x + + +******************************** +* Create a process +* A1=PID, A7=PC, A8,A9,A10,A11 Passed parameters +* A13=*Current process +* >A0=*Created process (Flags invalid!) +* Trashes A14,B0-B1 + +GETPRC + move a12,b0 + + move @FREE,a0,L + jrz nonelft ;No more? + move *a0,a14,L + move a14,@FREE,L ;Unlink from free list + move *a13,*a0,L ;Link into active list after current process + move a0,*a13,L + jruc xferprc0 + +nonelft + .if DEBUG + LOCKUP + eint + .else + CALLERR 4,2 + .endif + jruc getpx + +******************************** +* +* Identical to GETPRC, except that the created process is placed in the +* process list immediately BEFORE the parent process, not after. +* +* A1=PID, A7=PC, A8,A9,A10,A11 Passed parameters +* A13=*Current process +* >A0=*Created process (Flags invalid!) +* Trashes A14,B0-B1 + +GETPRC_INSERT + move a12,b0 + + move @FREE,a0,L + jrz nonelft ;No more? + move *a0,a14,L + move a14,@FREE,L ;Unlink from free list + + + ;find the process that's immediately before the parent. + PUSH a1,a2 + movi ACTIVE,a1 + move *a1,a2,L +#search + cmp a13,a2 + jreq #found + move a2,a1 + move *a1,a2,L + jrnz #search + + ;We've been called by a nonexistent process. How odd. + .if DEBUG + LOCKUP + .endif + PULL a1,a2 + jruc getpx + +#found + ;a2 is parent proc, a1 is before that. slip in between. + move a0,*a1,L + move a2,*a0,L + PULL a1,a2 + jruc xferprc0 + + + +; move *a13,*a0,L ;Link into active list after current process +; move a0,*a13,L +; jruc xferprc0 + +******************************** +* Create a super-process +* A1=PID, A7=PC, A8,A9,A10,A11 Passed parameters +* A13=*Current process +* >A0=*Created process (Flags invalid!) +* Trashes A14,B0-B1 + + SUBR GETSPRC + move a12,b0 + + move @SFREE,a0,L + jrz nonelft ;No more? + move *a0,a14,L + move a14,@SFREE,L ;Unlink from free list + move *a13,*a0,L ;Link into active list after current process + move a0,*a13,L + jruc xferprc0 + + +******************************** +* Transfer control of an existing process +* A0=*Process to be xfer'd +* A1=New PID +* A7=*Wake address +* A8-A11=Passed to the xfer'd proc +* Trashes A14,B0-B1 + +XFERPROC + move a12,b0 +xferprc0 + cmpi ROM,a7 + jrlo procwakeerr ;Error? + + move a0,a14 + addi PDATA,a14 + move a0,a12 ;Reset process stack pointer + addi SPRCSIZ,a12 + cmpi SPRCSTR,a0 + jrge #superproc + + addi PRCSIZ-SPRCSIZ,a12 +#superproc + mmtm a14,a7,a8,a9,a10,a11,a12 ;Stuff wake, regs, p stack ptr + movk 1,a12 + move a12,-*a14 ;Wakeup next time + move a1,-*a14 ;ID + +getpx move b0,a12 + rets ;Flags are trashed!!! + +procwakeerr + .if DEBUG + LOCKUP + eint + .else + CALLERR 7,0 + .endif + jruc getpx + + +******************************** +* Kill a class of processes except for self +* A0=PID +* A1=Mask (bits to keep) +* Trashes scratch + +KILALL + not a1 + jruc KILALLN + + +******************************** +* Kill one class of processes +* A0=PID +* Trashes scratch + +KIL1C + clr a1 + +#******************************* +* Kill a class of processes +* A0=PID +* A1=!Mask (bits to remove) +* Trashes scratch + +KILALLN + move a2,b0 + move a3,b1 + + zext a1 ;Won't kill PIDS >8000+ + andn a1,a0 ;Form match + movi ACTIVE,a2 + +#lp move a2,a3 ;Save previous + move *a2,a2,L + jrz #x ;Done? + move *a2(PROCID),a14 + JRN #lp ;ALLOW INDESTRUCTABLES (ANYTHING 8000h+) + +; jrnn #ok +; LOCKUP +;#ok + andn a1,a14 ;Apply mask + cmp a0,a14 + jrne #lp ;No match? + + cmp a2,a13 + jreq #lp ;Current proecess? + + move *a2,*a3,L ;Unlink + cmpi SPRCSTR,a2 + jrge #spr + move @FREE,a14,L ;Link into free list at start + move a14,*a2,L + move a2,@FREE,L + move a3,a2 + jruc #lp + +#spr + move @SFREE,a14,L ;Link into super-proc free list at start + move a14,*a2,L + move a2,@SFREE,L + move a3,a2 + jruc #lp + +#x move b0,a2 + move b1,a3 + rets + + +******************************** +* Kill one class of indestructable processes +* +* NOTE - BE EXTEMELY CAREFUL WITH THIS FUNCTION (IT KILLS INDESTRUCTABLES) +* +* A0=PID +* Trashes scratch + + SUBR IKIL1C + clr a1 + + +#******************************* +* Kill a class of indestructable processes +* +* NOTE - BE EXTEMELY CAREFUL WITH THIS FUNCTION (IT KILLS INDESTRUCTABLES) +* +* A0=PID +* A1=!Mask (bits to remove) +* Trashes scratch + + SUBR IKILALLN + move a2,b0 + move a3,b1 + + sext a0 + andn a1,a0 ;Form match + movi ACTIVE,a2 + +#lp move a2,a3 ;Save previous + move *a2,a2,L + jrz #x ;Done? + move *a2(PROCID),a14 + + andn a1,a14 ;Apply mask + cmp a0,a14 + jrne #lp ;No match? + + cmp a2,a13 + jreq #lp ;Current proecess? + + move *a2,*a3,L ;Unlink + cmpi SPRCSTR,a2 + jrge #spr + move @FREE,a14,L ;Link into free list at start + move a14,*a2,L + move a2,@FREE,L + move a3,a2 + jruc #lp + +#spr + move @SFREE,a14,L ;Link into super-proc free list at start + move a14,*a2,L + move a2,@SFREE,L + move a3,a2 + jruc #lp + +#x move b0,a2 + move b1,a3 + rets + + +;******************************** +;* Knock out one class of processes +;* A0=PID, A2=Time to add +;* Trashes scratch +; +;KOP_1C +; clr a1 +; +;#******************************* +;* Knock out a class of processes +;* A0=PID, A1=!Mask (Bits to remove), A2=Time to add +;* Trashes scratch +; +;KOP_ALL +; move a3,b0 +; andn a1,a0 ;Form match +; movi ACTIVE,a3,L +; +;#lp move *a3,a3,L ;Get next +; jrz #x ;End? +; move *a3(PROCID),a14 +; andn a1,a14 ;Mask +; cmp a0,a14 +; jrnz #lp ;No match? +; +; move *a3(PTIME),a14 ;Add sleep +; add a2,a14 +; move a14,*a3(PTIME) +; jruc #lp +; +;#x move b0,a3 +; rets + + +#******************************* +* Check to see if process exists +* A0=*Process +* Rets: Z=Not found, NZ=Found +* Trashes scratch + +process_exist + movi ACTIVE,a1 + +#lp move *a1,a1,L + jrz #x ;End? + cmp a0,a1 + jrne #lp ;!Match? + move a0,a0 ;Clr Z + +#x rets + + +#******************************* +* Find if at least one process, other than calling process, exists +* A0=PROCID +* A1=Mask +* Rets: A0=*Process or 0 (Z) + +EXISTP + PUSH a1,a2,a4 + + sext a0 + and a1,a0 ;form match + movi ACTIVE,a2 + +#lp move *a2,a2,L + jrz #x ;End? + move *a2(PROCID),a4 + and a1,a4 + cmp a0,a4 + jrne #lp ;!Match? + + cmp a2,a13 + jreq #lp ;Self? + +#x move a2,a0 + + PULL a1,a2,a4 + rets + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/MPROC.EQU b/MPROC.EQU new file mode 100755 index 0000000..599a985 --- /dev/null +++ b/MPROC.EQU @@ -0,0 +1,377 @@ +*.Last mod - 4/8/95 19:55 + + .globl GETPRC,SUCIDE,PRCSLP,PRCLSP + .globl process_exist,EXISTP + .globl XFERPROC + .globl KILL,KILALL,KIL1C,KILALLN + .globl RAND,ACTIVE,FREE,PRCSTR + .globl snd_play1,snd_play,SNDSND + .globl SFREE,SPRCSTR,GETSPRC,GETPRC_INSERT + +;Process data structure +*STRUCT PROC +PLINK .set 0 ;UHL LINK TO NEXT 32 BITS +PROCID .set 20h ;UHW PROCESS ID 16 BITS +PTIME .set 30h ;UHW SLEEP TIME X 16MSEC 16 BITS +PSPTR .set 40h ;UHL PROCESS STACK POINTER 32 BITS +PA11 .set 60h ;UHL REGISTERS SAVED +PA10 .set 80h ;UHL +PA9 .set 0A0h ;UHL +PA8 .set 0C0h ;UHL +PWAKE .set 0E0h ;UHL +PDATA .set 100h ;PROCESS DATA STORE + +PSDATA .set 400h ;PROCESS STACK DATA +PRCSIZ .set 600h ;END OF DATA STRUCTURE +*ENDSTRUCT + +SPSDATA .set 1080h ;SUPER-PROCESS STACK DATA +SPRCSIZ .set 1380h ;SUPER-PROCESS END OF STRUCT + +SNPROC .SET 7 ;# of super-procs + +;NPROC .SET 100 ;# processes +NPROC .SET 150 ;# processes + +*GSP MACROS + +*SUBTRACT REGISTER FROM MEMORY +* SUBRM REG,ADDR,FIELD SIZE +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +SUBRM .macro P1,P2,P3 + MOVE :P2:,A14,:P3: + SUB :P1:,A14 + MOVE A14,:P2:,:P3: + .endm + +*ADD REGISTER TO MEMORY +* ADDRM REG,ADDR,FIELD SIZE +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +ADDRM .macro P1,P2,P3 + MOVE :P2:,A14,:P3: + ADD :P1:,A14 + MOVE A14,:P2:,:P3: + .endm + +*INCREMENT LOCATION +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +INCW .macro P1 + MOVE :P1:,A14 + INC A14 + MOVE A14,:P1: + .endm + +*DECREMENT WORD +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +DECW .macro P1 + MOVE :P1:,A14 + DEC A14 + MOVE A14,:P1: + .endm + +*INCREMENT MEMORY +* INCM ADDR,FIELD SIZE +*A14 DESTROYED + +INCM .macro P1,P2 + MOVE :P1:,A14,:P2: + INC A14 + MOVE A14,:P1:,:P2: + .endm + +*DECREMENT MEMORY +* DECM ADDR,FIELD SIZE +*A14 DESTROYED + +DECM .macro P1,P2 + MOVE :P1:,A14,:P2: + DEC A14 + MOVE A14,:P1:,:P2: + .endm + +*SUBTRACT MEMORY +* SUBM ADDR,REG,FIELD SIZE +*SUBTRACTS ADDRESS FROM REGISTER +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +SUBM .macro P1,P2,P3 + MOVE :P1:,A14,:P3: + SUB A14,:P2: + .endm + +*ADD MEMORY +* ADDM ADDR,REG,FIELD SIZE +*ADDS ADDRESS FROM REGISTER +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +ADDM .macro P1,P2,P3 + MOVE :P1:,A14,:P3: + ADD A14,:P2: + .endm + +*NEGATE MEMORY +* NEGM ADDR,FIELD SIZE +*NEGATES ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +NEGM .macro P1,P2 + MOVE :P1:,A14,:P2: + NEG A14 + MOVE A14,:P1:,:P2: + .endm + +*COMPARE MEMORY +* CMPM ADDR,REG,FIELD SIZE +*COMPARES ADDRESS TO REGISTER +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +CMPM .macro P1,P2,P3 + MOVE :P1:,A14,:P3: + CMP A14,:P2: + .endm + +*CLEAR MEMORY +* CLRM ADDR,FIELD SIZE +*CLEARS ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +CLRM .macro P1,P2 + CLR A14 + MOVE A14,:P1:,:P2: + .endm + +*COMPLEMENT MEMORY +* COMM ADDR,FIELD SIZE +*COMPLEMENTS ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +COMM .macro P1,P2 + MOVE :P1:,A14,:P2: + NOT A14 + MOVE A14,:P1:,:P2: + .endm + +*SHIFT LEFT MEMORY +* SLLM SHIFT COUNT,ADDR,FIELD SIZE +*SHIFTS ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +SLLM .macro P1,P2,P3 + MOVE :P2:,A14,:P3: + SLL :P1:,A14 + MOVE A14,:P2:,:P3: + .endm + +*SHIFT RIGHT ARITHMETIC MEMORY +* SRAM SHIFT COUNT,ADDR,FIELD SIZE +*SHIFTS ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +SRAM .macro P1,P2,P3 + MOVE :P2:,A14,:P3: + SEXT A14,:P3: + SRA :P1:,A14 + MOVE A14,:P2:,:P3: + .endm + +*SHIFT RIGHT LOGICAL MEMORY +* SRLM SHIFT COUNT,ADDR,FIELD SIZE +*SHIFTS ADDRESS CONTENTS +*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY + +SRLM .macro P1,P2,P3 + MOVE :P2:,A14,:P3: + ZEXT A14,:P3: + SRL :P1:,A14 + MOVE A14,:P2:,:P3: + .endm + +*BIT SET +* BSET BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO SET BIT IN +* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY + +BSET .macro P1,R1 + MOVK 1,A14 + SLL :P1:,A14 + OR A14,:R1: + .endm + + +*BIT CLR +* BCLR BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO CLR BIT IN +* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY + +BCLR .macro P1,R1 + MOVK 1,A14 + SLL :P1:,A14 + ANDN A14,:R1: + .endm + +*SET THE Z BIT +* SETZ +* STATUS BITS: +* N Unaffected +* C Unaffected +* Z 1 +* V Unaffected +* NOTE: A14 IS CLEARED + +SETZ .macro + CLR A14 + .endm + +*CLR THE Z BIT +* CLRZ +* STATUS BITS: +* N Unaffected +* C Unaffected +* Z 0 +* V Unaffected +* NOTE: A14 IS SET TO 1 + +CLRZ .macro + CLR A14 + NOT A14 + .endm + +*PROCESS SLEEP CONSTANT +*A=Sleep time 1-7fff +*RET ADDR ON STACK + +SLEEP .macro A + movi :A:,a0 + calla PRCSLP + .endm + +SLEEPK .macro A + movk :A:,a0 + calla PRCSLP + .endm + +*PROCESS SLEEP REGISTER +*REG1=REGISTER THAT CONTAINS SLEEP TIME 1-FFFF LOADED INTO A0 +*RET ADDR ON STACK + +SLEEPR .macro REG1 + MOVE :REG1:,A0 + CALLA PRCSLP + .endm + +*PROCESS LOOP SLEEP +*s=Sleep time, a=*Wakeup addr + +SLOOP .macro s,a + .if :s: < 33 + movk :s:,a0 + .else + movi :s:,a0 + .endif + movi :a:,a7,L + jauc PRCLSP + .endm + +*PROCESS LOOP SLEEP REGISTER +*P1=REGISTER CONTAINING SLEEP TIME 1-FFFF, P2 =WAKEUP ADDR-->A7 + +SLOOPR .macro P1,P2 + MOVE :P1:,A0 + MOVI :P2:,A7,L + JAUC PRCLSP + .endm + +*PROCESS CREATION MACRO +*P1=ID-->A1, P2=PC-->A7 + +CREATE .macro p1,p2 + movi :p1:,a1 + movi :p2:,a7,L + calla GETPRC + .endm + +*PROCESS CREATION MACRO +*A=PC-->A7 +CREATE0 .macro A + clr a1 + movi :A:,a7,L + calla GETPRC + .endm + +SCREATE .macro p1,p2 + movi :p1:,a1 + movi :p2:,a7,L + calla GETSPRC + .endm + +*KILL PROCESS(ES) +*P1=ID-->A0,P2=MASK-->A1 + +KILLIT .macro P1,P2 + MOVI :P1:,A0 + MOVI :P2:,A1 + CALLA KILALL + .endm + +*CALL IT QUITS + +DIE .macro + jauc SUCIDE + .endm + +*PROCESS JUMP SUBROUTINE +*P1=ADDRESS OF SLEEPING PROCESS +*A7 IS USED FOR PC STORAGE + +JSRP .macro P1 + GETPC A7 + ADDI 060h,A7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JAUC :P1: + .endm + +*PROCESS JUMP SUBROUTINE ON REGISTER +*R1=REGISTER CONTAINING ADDRESS OF SLEEPING PROCESS +*A7 IS USED FOR PC STORAGE + +JSRPR .macro R1 + GETPC A7 + ADDI 040h,A7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JUMP :R1: + .endm + +*RETURN FROM SLEEPING SUBROUTINE +*A7 IS USED FOR PC STORAGE +*STATUS REGISTER IS NOT AFFECTED + +RETP .macro + mmfm a12,a7 ;PULL RETURN ADDR, W/O ZAPPING STAT + exgpc a7 + .endm + +*FIND MATCHING PROCESS(ES), BRANCH IF ONE WAS FOUND +*P1=ID-->A0,P2=MASK-->A1,P3=BRANCH LABEL +MATCHP .macro P1,P2,P3 + MOVI :P1:,A0 + MOVI :P2:,A1 + CALLA EXISTP + JANZ :P3: + .endm + +*FIND MATCHING PROCESS(ES), BRANCH IF NONE WERE FOUND +*P1=ID-->A0,P2=MASK-->A1,P3=BRANCH LABEL +NOMATCHP .macro P1,P2,P3 + MOVI :P1:,A0 + MOVI :P2:,A1 + CALLA EXISTP + JAZ :P3: + .endm + +LOCKUP .macro + trap 29 + .endm + + \ No newline at end of file diff --git a/PAL.ASM b/PAL.ASM new file mode 100755 index 0000000..a1b55f4 --- /dev/null +++ b/PAL.ASM @@ -0,0 +1,1300 @@ +************************************************************** +* +* Software: ?, Shawn Liptak and Mark Turmell +* Initiated: 4/13/89 (palstuff) +* +* Modified: Shawn Liptak, 7/23/91 -New FADEIN/OUT (Total carnage) +* Shawn Liptak, 7/28/91 -Merged with fbstuff +* Shawn Liptak, 8/12/91 -PAL_TOWHT/PAL_FMWHT +* Shawn Liptak, 8/21/91 -Merged pall & palstuff +* Shawn Liptak, 9/13/91 -Clean up! +* Shawn Liptak, 9/17/91 -New PAL struct +* Shawn Liptak, 11/19/91 -Improved GETxPAL with CLNPAL +* Shawn Liptak, 2/20/92 -Basketball cleanup +* Shawn Liptak, 4/29/92 -Conditional bgndpal assembly +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 11/18/92 20:30 +************************************************************** + .title "palette allocator and fader control" + .file "pal.asm" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "game.equ" + .include "macros.h" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref IRQSKYE + .REF IGNORE_SPECIAL,IGNORE_THIS_PAL + +****************************************************************************** + +;defs + +;equates + +FPALNUM .equ 8 +FPALSZ .equ 256*16 + + +;ram + + .bss fade_start,16 + .bss fade_end,16 + .bss fade_inc,16 + .bss fade_list,32 ;list of palettes not to fade + + + BSSX PALRAM ,0 ;Palette allocation ram + BSSX PALFRAM ,PALRSIZ*NMFPAL + BSSX PALBRAM ,PALRSIZ*NMBPAL + BSSX PALTRAM ,PALTSIZ*NUMPALT + + BSSX FADERAM ,FPALSZ*NMFPAL ;Fade mem for palettes + + BSSX palfmin ,16 + .bss irqskyeo,16 ;Orignal autoerase color + + +morfpal1 equ FADERAM+0*16*64 +morfpal2 equ FADERAM+1*16*64 +morfpal3 equ FADERAM+2*16*64 +morfpal4 equ FADERAM+3*16*64 +morfpal5 equ FADERAM+4*16*64 +morfpal6 equ FADERAM+5*16*64 +morfpal7 equ FADERAM+6*16*64 +morfpal8 equ FADERAM+7*16*64 +morfpal9 equ FADERAM+8*16*64 +morfpal10 equ FADERAM+9*16*64 +morfpal11 equ FADERAM+10*16*64 + + .def morfpal1,morfpal2 + .def morfpal3,morfpal4 + .def morfpal5,morfpal6 + .def morfpal7,morfpal8 + .def morfpal9,morfpal10 + .def morfpal11 + + .text + +******************************** +* Note: Scratch = A0-A1,A14,B0-B1 + + +#******************************* +* Clear out palette allocation and xfer ram +* Trashes scratch + + SUBR pal_init + + movi PALRAM,a0 ;*Pal list + movi PALRSIZ*NUMPAL/16,b0 ;# of words + + clr a1 +#l1 move a1,*a0+ + dsj b0,#l1 + + movi PALTRAM,a0 ;*xfer ram + movi PALTSIZ*NUMPALT/16,b0 ;# of words + +#l2 move a1,*a0+ + dsj b0,#l2 + + ;always start with DIAGP as pal 0! + movi DIAGP,a0 + callr pal_getf + rets + + +#******************************* +* Cleanup unused palettes +* Trashes A1,A14,B0-B1 + + SUBR pal_clean + + PUSH a0,a2,a3,a4 + movi PALRAM+PALRSIZ,a2 ;Skip 1st pal + + movi NUMPAL-1,a3 ;Chk all pals + movi >0101,a4 ;2nd PAL # + +#lp move @OBJLST,a0,L + jrz cp30 ;No objs, chk backgnd + +cp20 move *a0(OPAL),a14 + cmp a14,a4 + jreq cp80 ;Used? Chk next + move *a0,a0,L + jrnz cp20 + +cp30 move @BAKLST,a0,L ;Check in bgnd list + jrz cp60 ;No objects, clean it out + +cp50 move *a0(OPAL),a14 + cmp a14,a4 + jreq cp80 ;Used? Chk next + move *a0,a0,L + jrnz cp50 + +cp60 +; move *a2,a0,L +; cmpi WARPP,a0 +; jrne cp70 ;Not warp pal? +; +; movi CYCPID,a0 +; movi -1,a1 +; calla EXISTP +; move a0,a0 +; jrnz cp80 ;Found cycler? + +cp70 + MOVE @IGNORE_SPECIAL,A14 + JRZ cp70a + move *a2,a0,L + CALLA IGNORE_THIS_PAL + JRC cp80 +cp70a + + clr a0 ;Palette not used, free it + move a0,*a2,L + +cp80 addi >0101,a4 ;Next pal + .if PAL64 + btst 4,a4 + jrz cp90 + addi >3030,a4 + sext a4 ;For compare + .endif + +cp90 addk PALRSIZ,a2 + dsj a3,#lp + + PULL a0,a2,a3,a4 + rets + + +#******************************* +* Find the color map # to which the given palette is assigned +* A0=*Pallette +* >A0=PAL # (DMA format) or 0 (Z) +* Trashes scratch + + SUBR pal_find + + movi PALRAM,a1 + movi NUMPAL,b0 + +#lp move *a1+,a14,L ;Get * palette + cmp a0,a14 + jreq #ok ;Found? + dsj b0,#lp + clr a0 ;Set Z + rets + +#ok move A1,a14 + subi NUMPAL,b0 ;Compute pal # + neg b0 + move b0,a1 + +; .if PAL64 +; movk >f,a14 +; and a1,a14 ;A14=4 low bits +; srl 4,a1 ;Move B4/B5 to B6/B7 +; sll 6,a1 +; add a14,a1 +; .endif + + move a1,a0 ;Return pal # + sll 8,a1 + add a1,a0 + addk 1,a1 ;Clr Z (OK) + rets + + + +#******************************* +* Get a foreground palette +* A0=*Palette +*Rets: +* A0=Color map allocated (0000-cfcf) +* Z set if no palette free +* Trashes scratch + + SUBR pal_getf + + PUSH a2,a3 + + movi PALRAM,a1 ;>Check if palette already exists + movi NUMPAL,a3 +gfp4 move *a1+,a2,L ;Get *palette + cmp a0,a2 + jreq getpn ;Already in color ram? + dsj a3,gfp4 + + movi PALFRAM,a1 ;>Check for a spare palette + movi NMFPAL,a3 +gfp8 move *a1+,a2,L + jrz getfp ;Palette empty? Grab it + dsj a3,gfp8 + + .if DEBUG +; LOCKUP +; eint + .endif + callr pal_clean + + movi PALFRAM,a1 ;>Check for a spare palette + movi NMFPAL,a3 +gfp20 move *a1+,a2,L + jrz getfp ;Palette empty? Grab it + dsj a3,gfp20 + +#err PULL a2,a3 + clr a0 ;Set Z error + rets + + +******************************** +* Get a background palette +* A0=*Palette +*Rets: +* A0=Color map allocated (0000-cfcf) +* Z set if no palette free +* Trashes scratch + + .if NMBPAL + + SUBR pal_getb + + PUSH a2,a3 + + movi PALRAM,a1 ;>Check if palette already exists + movi NUMPAL,a3 +gbp4 move *a1+,a2,L ;Get *palette + cmp a0,a2 + jreq getpn ;Already in color ram? + dsj a3,gbp4 + + movi PALBRAM,a1 ;>Check for a spare palette + movk NMBPAL,a3 +gbp8 move *a1+,a2,L + jrz gbp30 ;Palette empty? Grab it + dsj a3,gbp8 + + .if DEBUG + LOCKUP + eint + .endif + callr pal_clean + + movi PALBRAM,a1 ;>Check for a spare palette + movk NMBPAL,a3 +gbp10 move *a1+,a2,L + jrz gbp30 ;Palette empty? Grab it + dsj a3,gbp10 + jruc #err + + +getfp addk NMBPAL,a3 ;>Setup your new palette + + .else +getfp + + .endif + + +gbp30 PUSH a0,a1 + move a3,a1 ;Palette # + subi NUMPAL,a1 ;Compute palette # + neg a1 + + .if PAL64 + movk >f,a2 + and a1,a2 ;A2=4 low bits + srl 4,a1 ;Move B4/B5 to B6/B7 + sll 6,a1 + add a2,a1 + .endif + + sll 8,a1 ;*256 + move *a0+,a2 ;Get # colors in pal + callr pal_set ;Setup pal transfer + mmfm sp,a0,a1 + jrz #err ;Failed to get transfer? + move a0,-*a1,L ;Stuff palette * + +getpn subi NUMPAL,a3 ;Compute palette # + neg a3 + + .if PAL64 + movk >f,a1 + and a3,a1 ;A2=4 low bits + srl 4,a3 ;Move B4/B5 to B6/B7 + sll 6,a3 + add a1,a3 + .endif + + move a3,a0 ;Return palette # + sll 8,a3 + add a3,a0 ;Double it up for DMA + + PULL a2,a3 + addk 1,a1 ;Clr Z for OK + rets + + +#******************************* +* Setup palette transfer +* A0=* to palette color data +* A1=Bit 8-15 destination palette | Bit 0-7 start color +* A2=Color count (0-255) +* Rets: Z set if unable to setup transfer +* Trashes scratch + + SUBR pal_set + + move a3,b1 + + movi PALTRAM,a3 + movi NUMPALT,b0 ;# of palette transfers allowed + +#lp move *a3+,a14 + jrz #set ;Cell free? + addi PALTSIZ-16,a3 + dsj b0,#lp + .if DEBUG + LOCKUP + eint + .endif + jruc #x + +#set move a0,*a3+,L ;Set PALSRC + move a1,*a3 ;Set PALDEST + move a2,*a3(-48) ;Set PLDCNT (Must set last) + +#x move b1,a3 + move b0,b0 ;Return Z (error) or NZ (ok) + rets + + + +#******************************* +* Transfer palette data +* Called during vblank +* Looks through PALTRAM for transfers +* Trashes A0-A7 + + SUBR pal_transfer + + movi PALTRAM,a0 + movi NUMPALT,a3 ;# OF PALETTES + + clr a6 + movi COLRAM,a7 + +#lp move *a0,a4 ;Get count + jrz #x ;End? + +PAL_DEBUG equ 0 + .if PAL_DEBUG + move @HEBLNK,a1 + cmpi HEBLNKINIT,a1 + jrnz #hb_ok + LOCKUP +#hb_ok + .endif + + move a6,*a0+ ;Clear out tranfer count + move *a0+,a1,L ;Source address + move *a0+,a2 ;Destination palette + zext a2 + + .if PAL64 + move a2,a5 ;Convert to color ram address + sll 32-12,a5 + srl 32-12-4,a5 ;*16 + srl 14,a2 ;Move B14/15 to B6/7 + sll 6+4,a2 + add a5,a2 + .else + sll 4,a2 ;*16 for word addr + .endif + + add a7,a2 ;+color ram base address + + sll 32-9,a4 ;Make 0-511 + srl 32-9+1,a4 + jrnc #1 ;Even data count? + move *a1+,*a2+ + +#1 srl 1,a4 ;/2 data count + jrnc #2 ;Even? + move *a1+,*a2+,L + +#2 srl 1,a4 ;/2 data count + jrnc #3 ;Even? + move *a1+,*a2+,L + move *a1+,*a2+,L +#3 jrz #5 ;Cnt=0? + +#4 move *a1+,*a2+,L + move *a1+,*a2+,L + move *a1+,*a2+,L + move *a1+,*a2+,L + dsj a4,#4 + +#5 dsj a3,#lp + +#x rets + + + +#******************************* +* Black out selected palette +* A0=* palette to black out +* Trashes scratch + + SUBR pal_blacken + + PUSH a2 + + callr pal_find + jrz #err + sll 8,a0 + move a0,a1 + movi FADERAM,a0 + movk 32,b0 + clr a2 +#lp move a2,*a0+,L + dsj b0,#lp + movi FADERAM,a0 + movi 64,a2 + callr pal_set + +#err PULL a2 + rets + + +******************************** +* PUMP_RED PROCESS, CYCLE NUCLEAR REACTORS + +;PUMP_RED +; SLEEPK 18H +; MOVI REACTR,A0 +; MOVE A0,@KPBASE,L +; CALLR find_pal +; JRZ REDOUT +; SLL 8,A0 +; MOVE A0,A11 ;NEEDED LATER FOR pal_set +; +; MOVI 25,A10 ;PUMP RED A10 TIMES +; MOVI 128,A8 +;REDLOOP MOVI FADERAM,A0 +; ADDK 10H,A8 +; CALLR DO_MULT +; SLEEPK 1 +; DSJ A10,REDLOOP +;REDOUT +; MOVK 25,A10 ;PUMP RED A10 TIMES +;RED2 MOVI FADERAM,A0 +; SUBI 10H,A8 +; CALLR DO_MULT +; SLEEPK 1 +; DSJ A10,RED2 +; JRUC PUMP_RED +; +;DO_MULT +; MOVE A8,A2 +; PUSH a8,a10,a11 +; +; MOVE @KPBASE,A1,L ;REACTR,A1 +;;PARAMS +;; A0 - DEST RAM FOR PAL +;; A1 - SRC FOR PAL +;; A2 - COLOR MULTIPLIER +;; EACH COLOR IN PALETTE WILL BE MULTIPLIED BY A2 THEN DIVIDED BY 128 +; +; move *a1+,a14 +; move a14,*a0+ +; SLL 23,A14 ;TOP BITS OF FIELD ARE FLAGS +; SRL 23,A14 ;ONLY 9 BITS NEEDED FOR # COLORS +; MOVI >7C00,A4 ;A4 - PRE MULT MASK FOR 5 BITS OF RED +;; MOVI >03E0,A6 ;A6 - PRE MULT MASK FOR 5 BITS OF GREEN +;; MOVI >001F,A8 ;A8 - PRE MULT MASK FOR 5 BITS OF BLUE +; MOVE A4,A9 +;; MOVE A6,A10 +;; MOVE A8,A11 +; SLL 7,A9 ; A9 - POST MULT MAX FOR 5 BITS OF RED +;; SLL 7,A10 ;A10 - POST MULT MAX FOR 5 BITS OF GREEN +;; SLL 7,A11 ;A11 - POST MULT MAX FOR 5 BITS OF BLUE +;FADELPR +; MOVE *A1+,A3,W ;A3 - RED +; MOVE A3,A5 +; ANDI 03FFH,A5 +;; MOVE A3,A5 ;A5 - GREEN +;; MOVE A3,A7 ;A7 - BLUE +; AND A4,A3 +; CMPI 1001H,A3 +; JRC REDOKR +;; AND A6,A5 +;; AND A8,A7 +; MPYU A2,A3 +;; MPYU A2,A5 +;; MPYU A2,A7 +; CMP A9,A3 +; JRLE REDOKR +; MOVE A9,A3 +;REDOKR +;; CMP A10,A5 +;; JRLE GREENOK +;; MOVE A10,A5 +;;GREENOK +;; CMP A11,A7 +;; JRLE BLUEOK +;; MOVE A11,A7 +;;BLUEOK +; AND A9,A3 +; SRL 7,A3 +;; AND A10,A5 +; OR A5,A3 +;; OR A7,A3 +;; SRL 7,A3 +; MOVE A3,*A0+ +; DSJS A14,FADELPR +; +; +; PULL a8,a10,a11 +; +; movi FADERAM,a0 ;*Color data +; move a11,a1 ;Pal# +; move *a0+,a2 ;#Colors +; jruc pal_set + + + +******************************** +* Fade in all selected palettes from black +* A0=*Palette list to fade in (autoerase + 0-8 pals) +* A1=Fade delay in ticks +* Trashes scratch,A7,A9-A10 +* If 1st entry not neg then it enables autoerase fading + + + SUBR pal_fadein + + move a0,a9 ;A9=*Palette list + move a1,a10 ;A10=Fade delay + CREATE0 fadein + rets + +fadein + move a13,a6 + addi PDATA,a6 + movk FPALNUM,a7 + + move a9,a11 + move *a11+,a0,L ;!-=Autoerase color + jrn fi30 + move a0,@irqskyeo ;Save color + +fi20 move *a11+,a0,L ;Get * palette + jrz fi70 ;0=End +fi30 callr pal_find + jrnz fi60 ;OK? + not a0 ;Make neg (should = -256) +fi60 sll 8,a0 + move a0,*a6+ ;Save palette # + dsj a7,fi20 + +fi70 clr a8 ;A8=Brightness + + +fi100 addk 8,a8 + + movi FADERAM,a5 + move a13,a6 + addi PDATA,a6 + movk FPALNUM,a7 + + move a9,a11 + move *a11,a1,L + jrn fi200 + addk 32,a11 + move a8,a2 + callr pal_fadeae + +fi200 move *a11+,a1,L + jrz fi400 ;End? + move a5,a0 + move a8,a2 + callr pal_fade + move a5,a0 ;*Palette colors + move *a6+,a1 ;Palette # + cmpi -256,a1 ;FF00 + jreq fi230 ;Couldn't find? + move *a0+,a2 ;#Colors + callr pal_set +fi230 addi FPALSZ,a5 + dsj a7,fi200 + +fi400 move a10,a0 + calla PRCSLP + cmpi 128,a8 + jrlo fi100 + +fi800 DIE + + + + +******************************** +* Fade out all selected palettes to black +* A0=*Palette list to fade out (autoerase + 0-8 pals) +* A1=Fade delay in ticks +* If 1st entry not neg then it enables autoerase fading + + + SUBR pal_fadeout + + clr a10 + move a10,@palfmin + + SUBR pal_fadeout2 + + move a0,a9 ;A9=*Palette list + move a1,a10 ;A10=Fade delay + CREATE0 fadeout + rets + +fadeout + move a13,a6 + addi PDATA,a6 + movk FPALNUM,a7 + + move a9,a11 + move *a11+,a0,L ;!-=Autoerase color + jrn fo30 + move @IRQSKYE,a0 ;Save color + move a0,@irqskyeo + +fo20 move *a11+,a0,L ;Get * palette + jrz fo70 ;0=End +fo30 callr pal_find + jrnz fo60 + not a0 ;Make neg +fo60 sll 8,a0 + move a0,*a6+ ;Save palette # + dsj a7,fo20 + +fo70 movi 128,a8 ;A8=Brightness + + +fo100 subk 8,a8 + + movi FADERAM,a5 + move a13,a6 + addi PDATA,a6 + movk FPALNUM,a7 + + move a9,a11 + move *a11+,a1,L + jrn fo220 + move a8,a2 + callr pal_fadeae + +fo200 move *a11+,a1,L + jrz fo400 +fo220 move a5,a0 + move a8,a2 + callr pal_fade + move a5,a0 ;*Palette colors + move *a6+,a1 ;Palette # + cmpi -256,a1 ;FF00 + jrz fo250 + move *a0+,a2 ;#Colors + callr pal_set +fo250 addi FPALSZ,a5 + dsj a7,fo200 + +fo400 move a10,a0 + calla PRCSLP + move @palfmin,a0 + cmp a0,a8 + jrgt fo100 + +fo800 DIE + + +******************************** +* Fade autoerase color + + SUBRP pal_fadeae ;A2=Brightness (0-128) + + PUSH a3,a5,a7,a8 + + movi IRQSKYE,a0 + movi irqskyeo,a1 + movk 1,a14 + jruc pf1c + + +******************************** +* Fade a palette +* Each color in palette will be multiplied by a2 then divided by 128 +* A0=*Ram for pal, A1=*Palette, A2=Brightness (0-128) +* Trashes scratch + + SUBRP pal_fade + + PUSH a3,a5,a7,a8 + + move *a1+,a14 ;# Colors + move a14,*a0+ + + sll 32-9,a14 ;Remove any flags + srl 32-9,a14 ;9 bits needed for # colors + +pf1c movk >1f,a8 ;A8=5 bit color mask + +pf100 move *a1+,a3 + movk >1f,a7 + and a3,a7 ;A7=Blue + srl 5,a3 + movk >1f,a5 + and a3,a5 ;A5=Green + srl 5,a3 ;A3=Red + + mpyu a2,a3 + mpyu a2,a5 + mpyu a2,a7 + srl 7,a3 ;/128 + srl 7,a5 + srl 7,a7 + + cmp a8,a3 + jrls pfrok + move a8,a3 + +pfrok cmp a8,a5 + jrls pfgok + move a8,a5 + +pfgok cmp a8,a7 + jrls pfbok + move a8,a7 + +pfbok sll 10,a3 + sll 5,a5 + or a5,a3 + or a7,a3 + move a3,*a0+ ;Save color + dsj a14,pf100 + + PULL a3,a5,a7,a8 + rets + + + +************************************************************************** +* Fade palettes from black to their normal colors except for list +* A0=*List NOT to fade or 0 +* Trashes scratch + + SUBR pal_fadeinx + + PUSH a2,a6,a7,a8,a9,a10 + movk 8,a10 + jruc fbf10 + + +************************************************************************** +* Fade palettes down to black except for list +* A0=*List NOT to fade or 0 +* Trashes scratch + + SUBR pal_fadeoutx + + PUSH a2,a6,a7,a8,a9,a10 + movi -8,a10 + +fbf10 move a0,a6 + ;Start proc to fade each palette + clr a9 ;palette slot + movi PALRAM,a2 ;A2=*Palette table + +fbf20 move *a2+,a8,L ;Ptr to palette + jrz fbf70 + move a6,a7 ;A6=*List of palettes to skip + jrz fbf60 + +fbf50 move *a7+,a1,L + jrz fbf60 + cmp a1,a8 + jreq fbf70 ;Skip pal? + jruc fbf50 + +fbf60 CREATE0 fadeonep + +fbf70 addk 1,a9 + cmpi NUMPAL,a9 + jrlt fbf20 + +fbfx PULL a2,a6,a7,a8,a9,a10 + rets + + +************************************************************************** +* fadeonep - Fade one palette (Process) +* +* A8=*Palette to be faded +* A9=Palette slot # (0 to NUMPAL-1) +* A10=Add value per fade (!0) + +fadeonep + + .if PAL64 + movk >f,a2 + and a9,a2 ;A2=4 low bits + srl 4,a9 ;Move B4/B5 to B6/B7 + sll 6,a9 + add a2,a9 + .endif + + sll 8,a9 ;B8-15 dest pal, B0-7 color (0) + + clr a11 ;For up fade + move a10,a10 + jrgt fop60 + movi 128,a11 ;For dn fade + jruc fop60 + ;>Set up faded pal in process data space +foplp + move a11,a2 ;A2=Color Multiplier + move a13,a0 + addi PDATA,a0 ;A0=Dest Ram for Pal + move a0,a5 + move a8,a1 ;A1=Src for Pal + callr pal_fade + + move a5,a0 ;>Move faded palette to palram + move a9,a1 + move *a0+,a2 ;Get # colors in palette + callr pal_set ;Set transfer + + SLEEPK 2 +fop60 add a10,a11 + cmpi 128,a11 + jrls foplp + + + SLEEPK 2 ;Wait on last pal_set + DIE + + +**************************************************************** +* Fade palettes from white to their normal colors except for list +* A0=*List NOT to fade or 0 +* A1=Do Autoerase (!0=Yes) + + SUBR pal_fmwht + + PUSH a2,a6,a7,a8,a9,a10 + movi -1,a10 + jruc ptw10 + + +**************************************************************** +* Brighten palettes to white except for list +* A0=*List NOT to fade or 0 +* A1=Do Autoerase (!0=Yes) + + SUBR pal_towht + + PUSH a2,a6,a7,a8,a9,a10 + move @IRQSKYE,a2 ;Save color + move a2,@irqskyeo + movk 1,a10 + +ptw10 move a0,a6 + move a1,a1 + jrz ptw15 ;Skip AE + CREATE0 addbrt_ae + ;Start proc to fade each palette +ptw15 clr a9 ;palette slot + movi PALRAM,a2 ;A2=*Palette table + +ptw20 move *a2+,a8,L ;Ptr to palette + jrz ptw70 + move a6,a7 ;A6=*List of palettes to skip + jrz ptw60 + +ptw50 move *a7+,a1,L + jrz ptw60 + cmp a1,a8 + jreq ptw70 ;Skip pal? + jruc ptw50 + +ptw60 CREATE0 brightenonep + +ptw70 addk 1,a9 + cmpi NUMPAL,A9 + jrlt ptw20 + +ptwx PULL a2,a6,a7,a8,a9,a10 + rets + + +******************************** +* Brighten one palette (Process) +* A8=*Palette to be faded +* A9=Palette slot # +* A10=Add value per loop (!0) + +brightenonep + .if PAL64 + movk >f,a2 + and a9,a2 ;A2=4 low bits + srl 4,a9 ;Move B4/B5 to B6/B7 + sll 6,a9 + add a2,a9 + .endif + + sll 8,a9 ;B8-15 dest pal, B0-7 color (0) + + clr a11 ;For up fade + move a10,a10 + jrgt bop20 + movk 31,a11 ;For dn fade +bop20 + ;Set up faded pal in process data space +boplp add a10,a11 + cmpi 31,a11 + jrhi bopx + move a11,a2 ;A2=Brightness + move a13,a0 + addi PDATA,a0 ;A0=Dest Ram for Pal + move a0,a5 + move a8,a1 ;A1=Src for Pal + callr pal_addb + + move a5,a0 ;>Move faded palette to palram + move a9,a1 + move *a0+,a2 ;Get # colors in palette + callr pal_set ;Set transfer + + SLEEPK 3 + jruc boplp + +bopx SLEEPK 1 ;give last xfer a chance to go + DIE + + +******************************** +* Change brightness of autoerase (Process) +* A10=Add value per loop (!0) + + SUBR addbrt_ae + + clr a11 ;For up fade + move a10,a10 + jrgt abae20 + movk 31,a11 ;For dn fade +abae20 +abaelp add a10,a11 + cmpi 31,a11 + jrhi abaex + move a11,a2 ;A2=Brightness + callr addbae + + SLEEPK 3 + jruc abaelp + +abaex DIE + + +******************************** +* Change brightness of autoerase +* A2=Brightness (-31 to 31) + + SUBRP addbae + + PUSH a3,a5,a7,a8 + + movi IRQSKYE,a0 + movi irqskyeo,a1 + movk 1,a14 + jruc pb1c + + +******************************** +* Change brightness of a palette +* Each color in palette will have A2 added to its RGB +* A0=*Ram for pal, A1=*Palette, A2=Brightness (-31 to 31) +* Trashes scratch + + SUBRP pal_addb + + PUSH a3,a5,a7,a8 + + move *a1+,a14 ;# Colors + move a14,*a0+ + + sll 23,a14 ;Remove any flags + srl 23,a14 ;9 bits needed for # colors + +pb1c movk >1f,a8 ;A8=Mask for 5 bits of color + +pb100 move *a1+,a3 + movk >1f,a7 + and a3,a7 ;A7=Blue + srl 5,a3 + movk >1f,a5 + and a3,a5 ;A5=Green + srl 5,a3 ;A3=Red + + add a2,a3 + add a2,a5 + add a2,a7 + + cmp a8,a3 + jrls pbrok + move a8,a3 + +pbrok cmp a8,a5 + jrls pbgok + move a8,a5 + +pbgok cmp a8,a7 + jrls pbbok + move a8,a7 + +pbbok sll 10,a3 + sll 5,a5 + or a5,a3 + or a7,a3 + move a3,*a0+ ;Save color + dsj a14,pb100 + + PULL a3,a5,a7,a8 + rets + + +#***************************************************************************** +* +* INPUT: a10 = * list palettes not to fade (0 terminated) +* A11=Fade increment (1-256) +*----------------------------------------------------------------------------- + + SUBR fade_up + + move a10,@fade_list,L + + clr a0 + move a0,@fade_start + + movi 256,a0 + move a0,@fade_end + + move a11,a0 ;movk 8 + move a0,@fade_inc + + jruc do_fade + +#***************************************************************************** +* Fade palettes down (process) +* A10=* list palettes not to fade (0 terminated) +* A11=Fade increment (1-256) +*----------------------------------------------------------------------------- + + SUBR fade_down + + move a10,@fade_list,L + + movi 256,a0 + move a0,@fade_start + + clr a0 + move a0,@fade_end + + move a11,@fade_inc + + jruc do_fade + +#***************************************************************************** +* +* INPUT: a10 = * list palettes not to fade (0 terminated) +* +*----------------------------------------------------------------------------- + + SUBR fade_up_half + + move a10,@fade_list,L + + movi 128,a0 + move a0,@fade_start + + movi 256,a0 + move a0,@fade_end + + movk 16,a0 + move a0,@fade_inc + + jruc do_fade + +#***************************************************************************** +* +* INPUT: a10 = * list palettes not to fade (0 terminated) +* +*----------------------------------------------------------------------------- + + SUBR fade_down_half + + move a10,@fade_list,L + + movi 256,a0 + move a0,@fade_start + + movi 128,a0 + move a0,@fade_end + + movk 16,a0 + move a0,@fade_inc + + jruc do_fade + +#***************************************************************************** + + SUBRP do_fade + + move @IRQSKYE,a0 + move a0,@irqskyeo + + move @fade_start,a10 +#fade_loop + + move @irqskyeo,a11 + movk >1f,a7 + and a11,a7 ;A7 = Blue + srl 5,a11 + movk >1f,a9 + and a11,a9 ;A9 = Green + srl 5,a11 ;A11 = Red + + mpyu a10,a7 ; X (0 - 32) + srl 8,a7 ;/256 + mpyu a10,a9 + srl 8,a9 + mpyu a10,a11 + srl 8,a11 + + sll 10,a11 ;red + or a11,a7 + sll 5,a9 ;green + or a9,a7 + + move a7,@IRQSKYE + + + movi FADERAM,a4 + movi PALRAM,a1 + movi NUMPAL,a3 +#next_pal + move *a1+,a2,L ;Get *palette + jrz #empty_pal + + move @fade_list,a7,L + jrz #skip_check + jruc #start + +#next_check + cmp a9,a2 + jreq #done ;skip this palette +#start + move *a7+,a9,L + jrnz #next_check + +#skip_check + + move *a2+,a5 ;Number colours in palette + move a5,a8 + move a4,a6 + +#copy_loop + move *a2+,a11 + movk >1f,a7 + and a11,a7 ;A7 = Blue + srl 5,a11 + movk >1f,a9 + and a11,a9 ;A9 = Green + srl 5,a11 ;A11 = Red + + mpyu a10,a7 ; X (0 - 32) + srl 8,a7 ;/256 + mpyu a10,a9 + srl 8,a9 + mpyu a10,a11 + srl 8,a11 + + sll 10,a11 ;red + or a11,a7 + sll 5,a9 ;green + or a9,a7 + + move a7,*a6+ ;1 word + + dsj a8,#copy_loop + + + PUSH a1,a2 + move a4,a0 ;* colour data + movi NUMPAL,a1 + sub a3,a1 ;dest palette ( 0 - NUMPAL-1 ) + sll 8,a1 ; + move a5,a2 ;# colours + callr pal_set + PULL a1,a2 +#done +#empty_pal + addi FPALSZ,a4 + dsj a3,#next_pal + + SLEEPK 1 + + move @fade_start,a0 + move @fade_end,a1 + cmp a0,a1 + jrhi #fading_up + ;fading_down + move @fade_inc,a0 ;signed inc + sub a0,a10 + cmp a1,a10 + jrge #fade_loop + + DIE + +#fading_up + move @fade_inc,a0 ;signed inc + add a0,a10 + cmp a1,a10 + jrls #fade_loop + + DIE + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/PATCH.ASM b/PATCH.ASM new file mode 100755 index 0000000..d2b6ba5 --- /dev/null +++ b/PATCH.ASM @@ -0,0 +1,163 @@ +************************************************************** +* +* Software: ? and Shawn Liptak +* Initiated: ? +* +* Modified: Shawn Liptak, 2/20/92 -Started basketball cleanup +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/10/92 19:07 +************************************************************** + .option b,d,l,t + .mnolist + + .include "gsp.equ" + .include "macros.h" + + + .def TVPATCH,TVPATCHX + + +****************************************************************************** +* EXTERNAL REFERENCES + + +****************************************************************************** + + .text + .even +OLDINTEN .word 0 + + + SUBR TVBP + + PUSH a0,a1 + PUSH b0,b1 + + move @INTENB,a0 ;Disable ROM protect interrupt (ext2) + move a0,@OLDINTEN + andni X2E,a0 + ori DIE,a0 ;Enable DIRQ + move a0,@INTENB + + PULL b0,b1 + PULL a0,a1 + rets + + + SUBR TVBPX + + PUSH a0 + + move @OLDINTEN,a0 ;Enable ROM protect interrupt (ext2) + ori X2E,a0 + move a0,@INTENB + + move @INTPEND,a0 ;Clear any pending X2E or DIE + andni X2E|DIE,a0 + move a0,@INTPEND + + move a0,@>1e00000 ;Clr FPGA rom protect + + PULL a0 + rets + + +TVPATCH: + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 +TVPATCHX: + \ No newline at end of file diff --git a/PBUILD.CMD b/PBUILD.CMD new file mode 100755 index 0000000..667ebf6 --- /dev/null +++ b/PBUILD.CMD @@ -0,0 +1,60 @@ +BAM_HIT.IMG +BAM_KIK.IMG +BAM_MJT.IMG +BAM_MSC.IMG +BAM_PNC.IMG +BAM_RJR.IMG +BAM_WLK.IMG +DNK_HIT.IMG +DNK_JMS.IMG +DNK_KIK.IMG +DNK_MJT.IMG +DNK_MSC.IMG +DNK_NEW.IMG +DNK_PNC.IMG +DNK_RJR.IMG +DNK_SPC.IMG +DNK_WLK.IMG +HRT_HIT.IMG +HRT_JMS.IMG +HRT_KIK.IMG +HRT_MSC.IMG +HRT_PNC.IMG +HRT_WLK.IMG +HRT_XXX.IMG +LEX_HIT.IMG +LEX_KIK.IMG +LEX_MJT.IMG +LEX_MSC.IMG +LEX_PNC.IMG +LEX_RJR.IMG +LEX_WLK.IMG +RZR_HIT.IMG +RZR_JMS.IMG +RZR_KIK.IMG +RZR_MJT.IMG +RZR_MSC.IMG +RZR_PNC.IMG +RZR_RJR.IMG +RZR_WLK.IMG +SHN_HIT.IMG +SHN_KIK.IMG +SHN_MJT.IMG +SHN_MSC.IMG +SHN_PNC.IMG +SHN_RJR.IMG +SHN_WLK.IMG +UND_HIT.IMG +UND_KIK.IMG +UND_MJT.IMG +UND_MSC.IMG +UND_PNC.IMG +UND_RJR.IMG +UND_WLK.IMG +YOK_HIT.IMG +YOK_KIK.IMG +YOK_MJT.IMG +YOK_MSC.IMG +YOK_PNC.IMG +YOK_WLK.IMG + \ No newline at end of file diff --git a/PLYR.EQU b/PLYR.EQU new file mode 100755 index 0000000..2986b49 --- /dev/null +++ b/PLYR.EQU @@ -0,0 +1,505 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 3/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + + + +****************************************************************************** +* +* PLAYER DATA STRUCTURE + + +* +* (CHECK THE SIZE OF ALL THIS CRAP!!!!!!!!!!!!!!!!!!!!!!!!!!!!) +* + + + STRUCTPD + WORD OBJ_XPOS ;x-pos (world coordinates) + WORD OBJ_XPOSINT + + WORD OBJ_YPOS ;y-pos (world coordinates) + WORD OBJ_YPOSINT + + WORD OBJ_ZPOS ;z-pos (world coordinates) + WORD OBJ_ZPOSINT + + LONG OBJ_PRIORITY + + WORD OBJ_BOXXOFF + WORD OBJ_BOXYOFF + WORD OBJ_BOXZOFF + WORD OBJ_BOXWIDTH + WORD OBJ_BOXHEIGHT + WORD OBJ_BOXDEPTH + + WORD OBJ_COLLX1 + WORD OBJ_COLLX2 + WORD OBJ_COLLY1 + WORD OBJ_COLLY2 + WORD OBJ_COLLZ1 + WORD OBJ_COLLZ2 + + WORD OBJ_ATTXOFF + WORD OBJ_ATTYOFF + WORD OBJ_ATTZOFF + WORD OBJ_ATTWIDTH + WORD OBJ_ATTHEIGHT + WORD OBJ_ATTDEPTH + + WORD TGT_XOFF + WORD TGT_YOFF + WORD TGT_ZOFF + + LONG OBJ_XVEL + LONG OBJ_YVEL + LONG OBJ_ZVEL + + LONG OBJ_GRAVITY + + WORD OBJ_FRICTION + + WORD CLOSEST_DIST + WORD CLOSEST_XDIST + WORD CLOSEST_YDIST + WORD CLOSEST_ZDIST + WORD CLOSEST_NUM ;(number of closest opponent) + + WORD ATTACH_XOFF + WORD ATTACH_YOFF + WORD ATTACH_ZOFF + APTR ATTACH_PROC + + WORD ATTACHIMG_XOFF + WORD ATTACHIMG_YOFF + WORD ATTACHIMG_ZOFF + + APTR CODE_ADDR + + WORD ROLL_POS + WORD GETUP_TIME + + WORD CAN_MOVE_DIR + WORD CAN_MOVE_TEMP + WORD X_BOUND + WORD Z_BOUND + WORD MOVE_DIR + + WORD FACING_DIR + WORD NEW_FACING_DIR + + LONG WHOHITME ;* wrestler process + LONG WHOIHIT ;* wrestler process + LONG WHOPINNEDME ;* wrestler process + WORD HITBLOCKER ; + WORD PLYR_HIT_SIDE + + WORD INRING ;0 = in ring, 1 = outside + WORD GROUND_Y + + WORD PLYRNUM + WORD WRESTLERNUM + WORD PLYR_TYPE + WORD PLYR_SIDE + + WORD PLYRMODE + WORD ATTACK_MODE + + WORD ATTACK_TYPE + WORD ATTACK_TIME + + WORD PLYR_DIZZY + WORD PLYR_DIZZY_CNT ;# of times plyr has been dizzy this rnd + + WORD PLYR_SHADOW + + WORD PLYR_ROPE_X_LEFT + WORD PLYR_ROPE_X_RIGHT + + WORD ANI_SPEED + + WORD ANIMODE ;0<------ + APTR ANIBASE ;1 | + APTR ANIPC ;2 | + WORD ANICNT ;3 | + APTR CUR_FRAME ;4 keep | + ;5 | + WORD ANIMODE2 ;6ordered| + APTR ANIBASE2 ;7 | + APTR ANIPC2 ;8 | + WORD ANICNT2 ;9 | + APTR CUR_FRAME2 ;A <------ + + APTR OBJ_BASE + WORD OBJ_CONTROL + WORD OBJ_CONST + + WORD OBJ_PAL ;Pass pal pntr along + + WORD RUN_TIME ;Ticks since start of run + WORD BUT_COUNT ;<--- this can go sans land (what's that mean?) + WORD RPT_COUNT + + WORD CLIMBING_THRU ;1=Climbing thru ropes flag + WORD STARS_FLAG ;1=Showing stars, 0=Turn off + + WORD PUNCHB_COUNT ;0 <------ + WORD BLOCKB_COUNT ;1 keep | + WORD SPUNCHB_COUNT ;2 ordered| + WORD KICKB_COUNT ;3 | + WORD SKICKB_COUNT ;4 <------ + + WORD USR_VAR1 + WORD USR_VAR2 + + APTR METER_PROC ;Process which handles my GETUP meter + + WORD FOOT_PCNT ;PCNT at last foot sound + + WORD MY_PAL ;My pal # for when I swap out my pal + WORD SKELETON_PAL ;Skeleton pal for Doink buzzer + + APTR ATTIMG_IMG + APTR ATTIMG_CUR_FRAME + APTR ATTIMG_LAST_FRAME + + WORD WHACK_CNT ;Whack butns help message display cnt + LONG SPECIAL_MOVE_ADDR ;spec move wdog proc signal + WORD RISK + + WORD DRN_BUT ;Button bits + WORD DRN_BUTDT ;But bits in down transition + WORD DRN_BUTUT ;But bits in up transition + WORD DRN_JOY ;Joystick bits + WORD DRN_JOYDT ;Joy bits in down transition + WORD DRN_JOYUT ;Joy bits in up transition + + WORD DRN_BUTCHRG ;Button bits charging + WORD DRN_BUTCHRGDLY ;Cnt dn till charged + APTR DRN_BUTCHRG_p ;* script + + WORD DRN_DELAY ;Action delay + APTR DRN_ACT_p ;* action script + WORD DRN_MODE ;Mode + WORD DRN_SPMODE ;Script plyr mode + WORD DRN_SEEKDIR ;Dir to seek (0-F) rel to closest opp + WORD DRN_SEEKDIST ;Dist to seek + WORD DRN_SKILL ;Skill level (0-29) + WORD DRN_SKILLRNDM ;Skill rnd add for match (-2 to 5) + + APTR SHADTRAIL_PROC + + WORD DELAY_BUTNS ;Delay reading of buttons after flung + WORD SAFE_TIME ;Delay collisions after getting up + WORD DELAY_METER ;Delay reappearance of getup meter + WORD IMMOBILIZE_TIME ;Immobilize player without meter + WORD COMBO_COUNT ;number of moves done so far in a combo + WORD COMBO_START ;number of moves required to start a combo + + WORD DEBRIS_X ;Used for explosions linked to head + WORD DEBRIS_Y + WORD I_WILL_DIE ;Used in combos to indicate death at end + WORD WALK_FAST ;1=Walk fast powerup on + LONG STATUS_FLAGS ;New bank of flags + WORD OUTSIDE_ALONE ;IF <>0 I AM OUTSIDE ALONE + WORD ANTI_COMBO_TIME ;Time stamp for checking combo breakers + WORD BUT_VAL_CUR + WORD BUT_VAL_DOWN + WORD BUT_VAL_UP + + WORD STICK_VAL_CUR + WORD STICK_VAL_DOWN + WORD STICK_VAL_UP + WORD STICK_REL_CUR ;facing relative + WORD STICK_REL_NEW ;facing relative (only if changed) + + WORD HEAD_GRAB_TIME ;PCNT last time our head was grabbed + WORD PUPPET_TIME ;used by mode_puppet watchdog + WORD PUPPET_TICKS ;used by mode_puppet watchdog + + WORD RING_TIME ;used to calculate ring-out damage + LONG LAST_HIT_TIME ;PCNT last time we scored any hit, + ; blocked or otherwise. (use 32 bits) + WORD AUTO_PIN_CNTDOWN ;time before auto-pin kicks in + + WORD CLIMB_START ;time at start of current climb attempt + WORD CLIMB_LAST ;time of last climb attempt + + LONG SMART_TARGET ;legal target in SMART_ATTACK mode + WORD NEW_WRESTLERNUM ;turn into this guy from zombie mode + + LONG LAST_HEADHOLD ;PCNT last time we grabbed a head! + LONG LAST_FLING ;PCNT last time I tried fling + LONG LAST_HIPTOSS ;PCNT last time I tried hiptoss + LONG BLOCK_TIME ;Time since block started + WORD LAST_DAMAGE ;PCNT last time we took damage. + WORD NEXT_DAMAGE ;If non-zero, do this much damage + LONG SPECIAL_DAMAGE_TIME ; on the next hit we take, IF PCNT + ; is less than SPECIAL_DAMAGE_TIME. + + WORD SCROLL_Y ;if SCROLL_CTRL bit in STATUS_FLAGS + ; is set, keep the top of the screen + ; this many pixels above my YPOS. + WORD BUCKOFF_COUNT ;Buttons pressed for buckoff. + WORD ZOMBIE_TIME ;Ticks since we became a zombie + WORD DAMAGE_GIVEN ;Damage I've done in a rumble + LONG HIT_GATE_TIME ;PCNT last time we hit a gate + LONG LAST_FLING_ATTEMPT ;PCNT last time we attempted a fling + + LONG LAST_SPUNCH ;PCNT last time I performed a super pnch + LONG LAST_SKICK ;PCNT last time I performed a super kick + + WORD CONSECUTIVE_HITS ;Hits since block or walk + +****************************************************************************** +* +* PLAYER TYPES + +PTYPE_PLAYER equ 0 +PTYPE_DRONE equ 1 +PTYPE_REFEREE equ -1 + +PSIDE_PLYR1 equ 0 +PSIDE_PLYR2 equ 1 +PSIDE_NONE equ -1 + +****************************************************************************** +* +* PLAYER MODES + +MODE_NORMAL equ 0 +MODE_RUNNING equ 1 +MODE_INAIR equ 2 +MODE_ATTACHED equ 3 +MODE_ONGROUND equ 4 +MODE_BOUNCING equ 5 +MODE_ONTURNBKL equ 6 +MODE_BLOCK equ 7 +MODE_DIZZY equ 8 +MODE_DEAD equ 9 +MODE_OPPOVERHEAD equ 10 +MODE_CLIMBTURNBKL equ 11 +MODE_WAITANIM equ 12 +MODE_GRAPPLE equ 13 +MODE_MASTER equ 14 +MODE_SLAVE equ 15 +MODE_HEADHOLD equ 16 + +MODE_PUPPET2 equ 17 +MODE_RPT_PUNCH equ 0 ;<-- use +MODE_RPT_KICK equ 0 ;<-- use + +MODE_HEADHELD equ 19 +MODE_PUPPET equ 20 +MODE_INAIR2 equ 21 + +MODE_RPT_SPUNCH equ 0 ;<-- use +MODE_RPT_SKICK equ 0 ;<-- use + +MODE_CHOKEHOLD equ 24 +MODE_CHOKING equ 25 + +****************************************************************************** +* +* ATTACK MODES + + +AMODE_PUNCH equ 0 +AMODE_HDBUTT equ 1 +AMODE_KICK equ 2 +AMODE_FLYKICK equ 3 +AMODE_GRABTHROW equ 4 + +AMODE_UPRCUT equ 5 +AMODE_LBOWDROP equ 6 +AMODE_GRABHOLD equ 7 +AMODE_GRABFLING equ 8 +AMODE_PUSH equ 9 + +AMODE_URN equ 10 +AMODE_BIGBOOT equ 11 +AMODE_KNEE equ 12 +AMODE_HDBUTT2 equ 13 +AMODE_BOXPUNCH equ 14 + +AMODE_STOMP equ 15 +AMODE_SPINKICK equ 16 +AMODE_CLINE equ 17 +AMODE_HEADHOLD equ 18 +AMODE_JUMPKICK equ 19 + +AMODE_RUN equ 20 +AMODE_PUPPET equ 21 +AMODE_BACKHAND equ 22 +AMODE_BUZZ equ 23 +AMODE_HAYMAKER equ 24 + +AMODE_BLBOWDROP equ 25 ;Turnbuckle elbow drop +AMODE_BSTOMP equ 26 ;Turnbuckle stomp +AMODE_HEADKNEES equ 27 ;Held by head - knee hits to head +AMODE_EARSLAP equ 28 ;Mark +AMODE_HAMMER equ 29 + +AMODE_BUTTSTOMP equ 30 +AMODE_PUPPET2 equ 31 +AMODE_PUPPET_HDGRAB equ 32 ;For head grabs only +AMODE_TOMB equ 33 +AMODE_BIGKNEE equ 34 ;Mark + +AMODE_SHNBFKIK equ 35 ;Jason +AMODE_SHNSPDKIK equ 36 +AMODE_SHNSPDKIK2 equ 37 +AMODE_HITCHECK equ 38 +AMODE_UPRCUT2 equ 39 + +AMODE_RSLASH equ 40 +AMODE_HEADDSLASH equ 41 +AMODE_HEADUSLASH equ 42 +AMODE_RSLASH2 equ 43 +AMODE_HDBUTT_STAY equ 44 + +AMODE_FIRE_PUNCH equ 45 +AMODE_BSTOMP2 equ 46 ;Club down to ground moves +AMODE_GUTPUSH equ 47 ;Yoko gut push +AMODE_SUPER_KICK equ 48 +AMODE_PUNCH2 equ 49 ;Weaker punch damage +AMODE_HDBUTT3 equ 50 +AMODE_LBOWDROP2 equ 51 +AMODE_STOMP2 equ 52 + +AMODE_PUPPET_NOFLAIL equ 53 ;Puppet move hits blocker - no flail +AMODE_PUPPET_TOSS equ 54 ;Puppet moves for hiptoss +AMODE_NAPALM equ 55 ;Bam napalm vs. onground opp + +****************************************************************************** +* +* COLLISION TARGET VALUES + +TGT_HEAD equ 0 +TGT_CHEST equ 1 +TGT_GROIN equ 2 +TGT_KNEES equ 3 +TGT_FEET equ 4 +TGT_USER equ -1 +TGT_GROUND equ 1000h +B_TGT_GROUND equ 12 + +****************************************************************************** +* +* STATUS_FLAGS VALUES + +B_PRESS_LAST equ 0 ;new button press last tick? (GETUP stuff) +B_DID_PIN equ 1 ;Did a pin. +B_TEMP_PAL equ 2 ;Using a temp pal, correct one in MY_PAL +B_ZOMBIE equ 3 ;Dead and trying to leave the ring. +B_SMART_ATTACK equ 4 ;Attacks will only hit SMART_TARGET. This + ; bit is cleared at ANI_ATTACK_OFF. +B_PINNED equ 5 ;Been pinned this round. +B_CAN_XFORM equ 6 ;OK to transform upon hitting an edge. +B_KOD equ 7 ;KO'd to save time. +B_NO_KO equ 8 ;Don't KO me. +B_PINABLE equ 9 ;can be pinned (motionless & staying that way) +B_SCROLL_CTRL equ 10 ;enables SCROLL_Y value in wrestler PDATA +B_WEAK_HIT equ 11 ;last hit on us was 10 or less +B_DO_BUCKOFF equ 12 ;counting buttons for buckoff +B_NO_BUCKOFF equ 13 ;no buckoff for me +B_DID_BUCKOFF equ 14 ;did a buckoff this MATCH +B_DEAD_ANIM equ 15 ;If killed, don't change anim. (cleared often) +B_DID_RAISEARM equ 16 ;in a raisearm anim +B_NEW_BUCKOFF equ 17 ;did a buckoff this ROUND +B_COUNTED_DEAD equ 18 ;counted as dead in 8-on-? mode +B_COMBO_BROKEN equ 19 ;my combo was broken +B_PUSH equ 20 ;doing a push (used in collis stuff) + +M_PRESS_LAST equ 1<03040x0x + CLR A3 + CLR A4 + MOVX A1,A3 + MOVY A1,A4 + + SLL 24,A1 + SRL 24,A1 + + SRL 8,A3 + + SLL 8,A4 + SRL 24,A4 + + CMPI 4,A1 + JRNE NO_SWAP_SHAWN_A1 + MOVE A1,A14 + MOVE A3,A1 + MOVE A14,A3 +NO_SWAP_SHAWN_A1 + CMPI 02000000H,A2 + JREQ STUFF_SWAPPED + CMPI 4,A3 + JRNE STUFF_SWAPPED + MOVE A3,A14 + MOVE A4,A3 + MOVE A14,A4 + +STUFF_SWAPPED + SLL 8,A3 + SLL 16,A4 + OR A3,A1 + OR A4,A1 + OR A2,A1 + MOVE A1,*A10,L +NO_SORT_OPPS + MOVE A10,@CURRENT_LADDER,L + MMFM SP,A2,A3,A4,A14 + RETS + + + SUBR NUM_OF_OPPS + MOVE A1,A3 + SRL 24,A3 + MOVE A3,@NUM_OPPS + RETS + +WE_HAVE_COMPANY + CALLR FIND_LOGO_IMAGE + CALLR INIT_BLOC_STUFF + MOVE *A1(ISIZEY),A3 + MOVI 255,A5 + SUB A3,A5 + SRL 1,A5 + SLL 16,A5 + MOVI 400,A6 + CALLR SETUP_THIS_LOGO_DAG + RETS + + +#***************************************************** +* + SUBRP #do_rr_vs + move @index1,a1 + movi -200,a6 + callr FIND_LOGO_IMAGE + callr INIT_BLOC_STUFF + move *a1(ISIZEY),a3 + movi 128,a5 + sub a3,a5 + srl 1,a5 + sll 16,a5 + callr SETUP_THIS_LOGO_DAG + + move @index2,a1 + movi -200,a6 + callr FIND_LOGO_IMAGE + callr INIT_BLOC_STUFF + move *a1(ISIZEY),a3 + movi 128,a5 + sub a3,a5 + srl 1,a5 + addi 128,a5 + sll 16,a5 + callr SETUP_THIS_LOGO_DAG + + movk 9,a1 + movi 400,a6 + callr FIND_LOGO_IMAGE + callr INIT_BLOC_STUFF + move *a1(ISIZEY),a3 + movi 255,a5 + sub a3,a5 + srl 1,a5 + sll 16,a5 + callr SETUP_THIS_LOGO_DAG + + rets + +SETUP_LOGOS + move @royal_rumble,a1 + jrz #head_to_head + move @PSTATUS,a1 + cmpi 3,a1 + jrz #do_rr_vs +#head_to_head + + + MOVE @index1,a1 + MOVI -200,A6 + MOVE @PSTATUS,A0 + JRZ INDEX_SET_1 + SRL 1,A0 + JRC INDEX_SET_1 + MOVE @index2,a1 + MOVI 400,A6 +INDEX_SET_1 + CALLR FIND_LOGO_IMAGE + CALLR INIT_BLOC_STUFF + MOVE *A1(ISIZEY),A3 + MOVI 255,A5 + SUB A3,A5 + SRL 1,A5 + SLL 16,A5 + CALLR SETUP_THIS_LOGO_DAG + + MOVE @index2,a1 + MOVE @PSTATUS,A0 +; JRZ WE_HAVE_COMPANY + CMPI 3,A0 + JREQ WE_HAVE_COMPANY + + CMPI 400,A6 + JREQ SET_A6_TO_MINUS_200 + MOVI 400,A6 + JRUC A6_SET + +SET_A6_TO_MINUS_200 + MOVI -200,A6 +A6_SET + + PUSHP A2 + MOVE @NUM_OPPS,A7 + MOVE @CURRENT_LADDER,A10,L + MOVE *A10,A10,L + CALLR is_8_on_1 + PUSHST + JRNC SLAP_UP_NEXT_LOGO + MOVK 1,A7 + MOVI 9,A10 + +SLAP_UP_NEXT_LOGO + MOVE A10,A1 + SLL 24,A1 + SRL 24,A1 + CALLR FIND_LOGO_IMAGE + CALLR INIT_BLOC_STUFF + CLR A5 + CALLR SETUP_THIS_LOGO_DAG + SRL 8,A10 + DSJS A7,SLAP_UP_NEXT_LOGO + + MOVI -15,A5 + MOVE @NUM_OPPS,A7 + MOVE @CURRENT_LADDER,A10,L + MOVE *A10,A10,L + POPST + PUSHST + JRNC SLAP_UP_NEXT_LOGO_DAG_Y + MOVK 1,A7 + MOVI 9,A10 + +SLAP_UP_NEXT_LOGO_DAG_Y + MOVE A10,A1 + SLL 24,A1 + SRL 24,A1 + CALLR FIND_LOGO_IMAGE + MOVE *A1(ISIZEY),A9 + ADD A9,A5 + ADDI 15,A5 + SRL 8,A10 + DSJS A7,SLAP_UP_NEXT_LOGO_DAG_Y + + PULLP A2 + + MOVI 255,A11 + SUB A5,A11 + SRL 1,A11 + + MOVE @NUM_OPPS,A7 + MOVE @CURRENT_LADDER,A10,L + MOVE *A10,A10,L + POPST + JRNC SLAP_UP_NEXT_LOGO_DAG + MOVK 1,A7 + MOVI 9,A10 + +SLAP_UP_NEXT_LOGO_DAG + MOVE A11,*A2(B_DAG+010H) + MOVE A10,A1 + SLL 24,A1 + SRL 24,A1 + CALLR FIND_LOGO_IMAGE + MOVE *A1(ISIZEY),A9 + ADD A9,A11 + ADDI 15,A11 + SRL 8,A10 + ADDI BLOC_SIZE,A2 + DSJS A7,SLAP_UP_NEXT_LOGO_DAG + + RETS + +SETUP_THIS_LOGO_DAG + MOVE *A1(ISIZEX),A3 + MOVI 200,A4 + SUB A3,A4 + SRL 1,A4 + ADD A6,A4 + MOVY A5,A4 + MOVE A4,*A2(B_DAG),L + ADDI BLOC_SIZE,A2 + RETS + +FIND_LOGO_IMAGE + SLL 5,A1 + ADDI LOGO_IMAGE_TABLE,A1 + MOVE *A1,A1,L + RETS + +LOGO_IMAGE_TABLE + .LONG HRT3 + .long RZR3 + .long UND3 + .long YOK3 + .long SHN3 + .long BAM3 + .long DNK3 + .long LEX3 + .long LEX3 + .long WWFCHAL +MOVE_BLOC + MOVE *A2(B_SAG),A0,L + JRZ NO_BLOC_TO_MOVE + MOVE *A2(B_DAG),A0 + CMPI 200,A0 + JRLT BLOC_ON_LEFT + NEG A9 + ADD A9,A0 + NEG A9 + MOVE A0,*A2(B_DAG) + MOVI 400,A3 + SUB A0,A3 + NEG A3 + MOVE @BOT_RIGHT_2,A1 + CMP A3,A1 + JRLE NO_NEW_BOT_RIGHT + MOVE A3,@BOT_RIGHT_2 +NO_NEW_BOT_RIGHT + CLR A1 + MOVE *A2(B_SIZE),A3 + ADD A0,A3 + SUBI 400,A3 + JRN NO_SPECIAL_BCTRL + MOVE A3,A1 +NO_SPECIAL_BCTRL + MOVE A1,*A2(B_CTRL) + CMPI 399,A0 + JRGT NOT_OF_LEFT_SCREEN + MOVE *A2(B_CTRL),A1,L + ORI 080000000H,A1 + MOVE A1,*A2(B_CTRL),L + RETS +BLOC_ON_LEFT + MOVE *A2(B_CTRL),A1 + SUB A1,A0 + ADD A9,A0 + MOVE A0,A11 + MOVE *A2(B_SIZE),A1 + ADD A0,A1 + MOVE @TOP_LEFT_2,A3 + CMP A1,A3 + JRGE NO_NEW_TOP_LEFT + MOVE A1,@TOP_LEFT_2 +NO_NEW_TOP_LEFT + MOVE *A2(B_REAL_SAG),A3,L + CLR A1 + MOVE A0,A0 + JRNN NO_SPECIAL_BCTRL2 + NEG A0 + MOVE A0,A1 + MOVE *A2(B_CTRL+010H),A5 + ANDI 7000H,A5 + SRL 12,A5 + MPYU A1,A5 + ADD A5,A3 +NO_SPECIAL_BCTRL2 + ADD A1,A11 + MOVE A11,*A2(B_DAG) + MOVE A1,*A2(B_CTRL) + MOVE *A2(B_SIZE),A4 + CMP A4,A1 + JRGE NOT_OF_LEFT_SCREEN + MOVE A3,*A2(B_SAG),L + MOVE *A2(B_CTRL),A1,L + ORI 080000000H,A1 + MOVE A1,*A2(B_CTRL),L + RETS +NOT_OF_LEFT_SCREEN + MOVE *A2(B_CTRL),A1,L + SLL 1,A1 + SRL 1,A1 + MOVE A1,*A2(B_CTRL),L +NO_BLOC_TO_MOVE + RETS + +INIT_BLOC + MOVI PROG_BLOC_START,A2 + MOVI INIT_BLOC_TAB,A3 + MOVK 10,A4 +INIT_NEXT_BLOC + MOVE *A3+,A1,L + CALLR INIT_BLOC_STUFF + + MOVE *A3+,A0,L + MOVE A0,*A2(B_DAG),L + ADDI BLOC_SIZE,A2 + + DSJS A4,INIT_NEXT_BLOC + + MOVI 44,A4 + CLR A0 +INIT_NEXT_BLOC2 + MOVE A0,*A2(B_SAG),L + MOVE A0,*A2(B_CTRL),L + ADDI BLOC_SIZE,A2 + + DSJS A4,INIT_NEXT_BLOC2 + SUBI 44*BLOC_SIZE,A2 + + RETS + +INIT_BLOC_STUFF + MOVE *A1(ISAG),*A2(B_SAG),L + MOVE *A1(ISAG),*A2(B_REAL_SAG),L + MOVE *A1(ISIZEX),*A2(B_SIZE),L + MOVE *A1(ICTRL),A0,L + SLL 16,A0 + ORI 80020000H,A0 + MOVE A0,*A2(B_CTRL),L + MOVE *A1(ICMAP),A0,L + PUSH A1 + calla GET_PAL_BLOC + PULL A1 + MOVE A0,*A2(B_PAL),L + RETS + +INIT_BLOC_TAB + .LONG CSELBK_A,[0,-204] + .LONG CSELBK_C,[133,-204] + .LONG CSELBK_E,[252,-204] + .LONG CSELBK_B,[0,404] + .LONG CSELBK_D,[133,404] + .LONG CSELBK_F,[252,404] + .LONG CSELBV_A,[0,-4] + .LONG CSELBV_C,[133,-4] + .LONG CSELBV_B,[0,400] + .LONG CSELBV_D,[133,400] + +BLAST_OUT_PROGRESS_TRANS + MOVI BLOC_TOTAL+BITS_TOTAL,A0 + MOVI 01000100H,A5 + MOVI PROG_BLOC_START,A2 +BLAST_NEXT_BLOC + MMFM A2,A8,A9,A10,A11,A12 + ADDI 020H,A2 ;AVOID REAL SAG + MOVE A11,A11 + JRZ IGNORE_BLOCK + MOVE A12,A12 + JRNN IGNORE_BLOCK + MOVE @SCREEN_SHAKE,A1,L + ADD A1,A10 + MOVE *A8(P_DMA_PAL_VAL),A8 + CALLA dma_it_out +IGNORE_BLOCK + DSJS A0,BLAST_NEXT_BLOC + RETS + +************************************** + +SET_IMAGE_AND_FLASH + calla set_images + MOVE @HCOUNT,A0 + ANDI 3,A0 + JRNZ NO_CREATE_RANDOM + CREATE0 RANDOM_FLASHES +NO_CREATE_RANDOM + RETS + +START_FLASHES + MOVE @FLASH_FLAG,A0 + JRNZ ALREADY_FLASHING + move @reduce_bog,a14 + jrnz ALREADY_FLASHING + +; MOVI FLASH_PID,A0 +; movi -1,a1 +; CALLA EXISTP +; JRNZ ALREADY_FLASHING + + MOVE @WORLDTLY,A0,L + cmpi 19C000H,a0 + jrgt ALREADY_FLASHING + + MOVI 18,A8 + MOVI 500,A9 + CREATE FLASH_PID,SET_GAME_FLASHES + MOVK 1,A0 + MOVE A0,@FLASH_FLAG +ALREADY_FLASHING + RETS + + SUBR START_HI_FLASHES + MOVE @FLASH_FLAG,A0 + JRNZ ALREADY_FLASHING + move @reduce_bog,a14 + jrnz ALREADY_FLASHING + + MOVI 40,A8 + MOVI 1000,A9 + CREATE FLASH_PID,SET_GAME_FLASHES + MOVK 1,A0 + MOVE A0,@FLASH_FLAG + RETS + +SET_GAME_FLASHES + MOVE @PSTATUS,A0 + CMPI 3,A0 + JREQ ALWAYS_DO_FLASH + MOVE @NUM_OPPS,A0 + CMPI 2,A0 + JRGE NO_CREATE_ANY_FLASH +ALWAYS_DO_FLASH + MOVE A9,A0 + CALLA RNDPER + JRLS NO_CREATE_ANY_FLASH +SET_GAME_FLASHES2 + CMPI 1000,A9 + JREQ ALWAYS_FLASH + MOVE @HCOUNT,A0 + SRL 1,A0 + JRNC NO_CREATE_RANDOM_G +ALWAYS_FLASH + CREATE0 RANDOM_GAME_FLASHES +NO_CREATE_RANDOM_G + SLEEP 2 + DSJS A8,SET_GAME_FLASHES2 +NO_CREATE_ANY_FLASH + CLR A0 + MOVE A0,@FLASH_FLAG + DIE + +RANDOM_GAME_FLASHES + MOVE @WORLDTLY,A0,L + SRA 16,A0 + NEG A0 + ADDI 30,A0 + CALLA RNDRNG0 + PUSH A0 + MOVI 400,A0 + CALLA RNDRNG0 + MOVE @WORLDTLX+010H,A1 + ADD A0,A1 + CMPI 3E8H,A1 + JRLT RANDOM_2 + CMPI 440H,A1 + JRGT RANDOM_2 + MOVI 58H,A1 + MOVE @HCOUNT,A2 + ORI 2,A2 + JRZ NOW_SHIFT_FLASH + NEG A1 +NOW_SHIFT_FLASH + ADD A1,A0 + JRUC RANDOM_2 + +RANDOM_FLASHES + MOVI 200,A0 + CALLA RNDRNG0 + PUSH A0 + MOVI 400,A0 + CALLA RNDRNG0 +RANDOM_2 + PULL A1 + move a1,a1 + jrn dont_bother + SLL 16,A0 + SLL 16,A1 + MOVI flash1,A2 + MOVI 89,A3 + movi DMAWNZ,a4 ;DMA flags + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJW + + MOVE @GAMSTATE,A0 + CMPI INGAME,A0 + JREQ NO_SOUNDS + MOVI 500,A0 + CALLA RNDPER + JRLS NO_SOUNDS + MOVI 2,A0 + CALLA RNDRNG0 + ADDI 4AH,A0 + MOVE A0,A3 + CALLA triple_sound +NO_SOUNDS + + MOVI FLASH_TYPE_1,A1 + move @HCOUNT,a0 + btst 0,a0 + jrz #1 + MOVI FLASH_TYPE_2,A1 +#1 callr setup_back_anim + JSRP ANIM_CROWD + CALLA DELOBJA8 +dont_bother + DIE + +FLASH_TYPE_1 + WL 2,flash1 + WL 2,flash2 + WL 2,flash3 + WL 2,flash3a + WL 2,flash3 + WL 2,flash2 + WL 2,flash1 + + .WORD CANI_END + +FLASH_TYPE_2 + WL 2,flash1 + WL 2,flash4 + WL 1,flash5 + WL 1,flash6 + WL 1,flash5 + WL 2,flash4 + + .WORD CANI_END + +setup_back_anim + MOVE A13,A4 + ADDI PDATA,A4 + MOVE A1,*A4(SCPTR),L + MOVK 1,A1 + MOVE A1,*A4(TIME) + CALLA animate_back + MOVE *A4(FRAME),A0,L + JRUC ANIBOBJ_B + +DO_FLASH + move @reduce_bog,a14 + jrnz #rets + MMTM SP,A0,A1,A7,A8 + MOVE @GAMSTATE,A8 + CMPI INPREGAME2,A8 + JRNE NO_DO_THIS + MOVE A0,A8 + CREATE0 DO_CROWD_FLASH +NO_DO_THIS + MMFM SP,A0,A1,A7,A8 +#rets RETS + +********************************** + +DO_CROWD_FLASH ;process + + MOVE *A8(OYPOS),A0 + SUBI 250,A0 + MOVE A0,*A8(OYPOS) + MOVI 80,A0 + CALLA RNDRNG0 + INC A0 + CALLA PRCSLP + + MOVI CROWD_FLASH_ANIM,A1 + callr setup_back_anim + + MOVE *A8(OYPOS),A0 + ADDI 250,A0 + MOVE A0,*A8(OYPOS) + JSRP ANIM_CROWD + JAUC DO_CROWD_FLASH + +********************************** + +ANIM_CROWD + SLEEPK 1 + MOVE A13,A4 + ADDI PDATA,A4 + CALLA animate_back + JRN EXIT_ANIM_CROWD + JRNZ ANIM_CROWD + MOVE *A4(FRAME),A0,L + MOVE A0,A10 + CALLA ANIBOBJ_B + JRUC ANIM_CROWD +EXIT_ANIM_CROWD + RETP + +ANIBOBJ_B + MOVE *A8(OFLAGS),A1 + ANDI 0FFFFH-M_BOBJ,A1 + MOVE A1,*A8(OFLAGS) + + move *a8(OCTRL),a1,W + + PUSH a2,a3,a4,a5 + + cmpi ROM,a0 + jrlo #anierr + + move *a0(IANIOFFX),a4,W + move A4,*a8(ODXOFF),W + + move *a0(IANIOFFY),a4,W + move A4,*a8(ODYOFF),W + + move a0,a2 + move a1,a3 + + move a2,*a8(OIMG),L + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + movb *a2(ICTRL+7),*a8(OCTRL+7) ;Write z comp & bpp bits + + setf 6,0,0 + move a3,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + +#x PULL a2,a3,a4,a5 + rets + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,2 + .endif + jruc #x + + +CROWD_FLASH_ANIM + WL 1,FLASH2 + WL 2,FLASH1 + WL 1,FLASH2 + .WORD CANI_END + +DO_JASON_CROWD + MMTM SP,A0,A1,A7,A8 + MOVE @GAMSTATE,A8 + CMPI INPREGAME2,A8 + JRNE JASON_NO_DO_THIS + MOVE A0,A8 + CREATE0 DO_JASON_CROWD_MOVE +JASON_NO_DO_THIS + MMFM SP,A0,A1,A7,A8 + RETS + +DO_JASON_CROWD_MOVE + MOVI 80,A0 + CALLA RNDRNG0 + INC A0 + CALLA PRCSLP + + MOVI JASON_CROWD_ANIM1,A1 + MOVE @dirqcnt,A0 + SRL 1,A0 + JRNC JASON_CROWD_SET + MOVI JASON_CROWD_ANIM2,A1 + +JASON_CROWD_SET + callr setup_back_anim + + JSRP ANIM_CROWD + JAUC DO_JASON_CROWD_MOVE + +JASON_CROWD_ANIM1 + WL 5,JASONCRD1 + WL 5,JASONCRD2 + WL 5,JASONCRD3 + WL 6,JASONCRD4 + WL 10,JASONCRD5 + WL 5,JASONCRD1 + .WORD CANI_END + +JASON_CROWD_ANIM2 + WL 5,JASONCRD1 + WL 5,JASONCRD2 + WL 5,JASONCRD3 + WL 6,JASONCRD4 + WL 10,JASONCRD5 + WL 6,JASONCRD4 + WL 6,JASONCRD3 + WL 6,JASONCRD4 + WL 10,JASONCRD5 + WL 5,JASONCRD1 + .WORD CANI_END + + +DO_TONY_CROWD + MMTM SP,A0,A1,A7,A8 + MOVE @GAMSTATE,A8 + CMPI INPREGAME2,A8 + JRNE TONY_NO_DO_THIS + MOVE A0,A8 + CREATE0 DO_TONY_CROWD_MOVE +TONY_NO_DO_THIS + MMFM SP,A0,A1,A7,A8 + RETS + +DO_TONY_CROWD_MOVE + MOVI 80,A0 + CALLA RNDRNG0 + INC A0 + CALLA PRCSLP + + MOVI TONY_CROWD_ANIM1,A1 + MOVE @dirqcnt,A0 + SRL 1,A0 + JRNC TONY_CROWD_SET + MOVI TONY_CROWD_ANIM2,A1 + +TONY_CROWD_SET + callr setup_back_anim + + JSRP ANIM_CROWD + JAUC DO_TONY_CROWD_MOVE + +TONY_CROWD_ANIM1 + WL 5,TONYCRD1 + WL 5,TONYCRD2 + WL 5,TONYCRD3 + WL 6,TONYCRD4 + WL 10,TONYCRD5 + WL 6,TONYCRD2 + WL 5,TONYCRD1 + .WORD CANI_END + +TONY_CROWD_ANIM2 + WL 5,TONYCRD1 + WL 5,TONYCRD2 + WL 5,TONYCRD3 + WL 6,TONYCRD4 + WL 10,TONYCRD5 + WL 6,TONYCRD4 + WL 6,TONYCRD3 + WL 6,TONYCRD4 + WL 10,TONYCRD5 + WL 6,TONYCRD2 + WL 5,TONYCRD1 + .WORD CANI_END + +DO_VOGEL_CROWD + MMTM SP,A0,A1,A7,A8 + MOVE @GAMSTATE,A8 + CMPI INPREGAME2,A8 + JRNE VOGEL_NO_DO_THIS + MOVE A0,A8 + CREATE0 DO_VOGEL_CROWD_MOVE +VOGEL_NO_DO_THIS + MMFM SP,A0,A1,A7,A8 + RETS + +DO_VOGEL_CROWD_MOVE + MOVI 80,A0 + CALLA RNDRNG0 + INC A0 + CALLA PRCSLP + + MOVI VOGEL_CROWD_ANIM1,A1 + MOVE @dirqcnt,A0 + SRL 1,A0 + JRNC VOGEL_CROWD_SET + MOVI VOGEL_CROWD_ANIM2,A1 + +VOGEL_CROWD_SET + callr setup_back_anim + + JSRP ANIM_CROWD + JAUC DO_VOGEL_CROWD_MOVE + +VOGEL_CROWD_ANIM1 + WL 5,VOGEL1 + WL 5,VOGEL2 + WL 5,VOGEL3 + WL 10,VOGEL4 + WL 6,VOGEL2 + WL 5,VOGEL1 + .WORD CANI_END + +VOGEL_CROWD_ANIM2 + WL 5,VOGEL1 + WL 5,VOGEL2 + WL 6,VOGEL3 + WL 10,VOGEL4 + WL 6,VOGEL3 + WL 6,VOGEL2 + WL 6,VOGEL3 + WL 10,VOGEL4 + WL 6,VOGEL3 + WL 5,VOGEL2 + WL 5,VOGEL1 + .WORD CANI_END + + + +;************************************************************************** +;* * +;* This table is set up to determine where two or three player * +;* matches take place in the game. It is in the format of * +;* .word x,y * +;* where x=number of places in the table to put y(where y is * +;* the number of opponents to fight). For example * +;* .word 10,2 * +;* would set the next ten consecutive places in the table to * +;* have two opponents * +;* * +;************************************************************************** +LADDER_TABLE_ICONT ;intercontinental belt table + + .word 4,1 + .word 2,2 + .word 1,3 + .word -1 + +LADDER_TABLE_WCHAMP ;world championship belt table + .word 4,2 + .word 2,3 ;final battle + .word 1,3 + .word -1 + +FINAL_BATTLE equ 7 ;14th battle is last one. (keep up-to-date) + +#********* +* +* returns carry set if the current battle is the last one on our ladder. + + SUBR is_final_match + + move @CURRENT_LADDER,a14,L + cmpi LADDER+((FINAL_BATTLE-1)*20h),a14 + jrne #no + setc + rets + +#no clrc + rets + +#********* +* +* returns carry set if the current battle is an 8-on-1. + + SUBR is_8_on_1 + + ;no 8-on-1 in intercontinental belt table. + move @belt_type,a14 + jrz #no + + move @CURRENT_LADDER,a14,L + cmpi LADDER+((FINAL_BATTLE-1)*20h),a14 + jrne #no + setc + rets + +#no clrc + rets + +#********* +* +* generates a lineup for a royal rumble match + + SUBR get_royal_lineup + + callr get_final_lineup + + move @index1,a1 + move @index2,a2 + + move @FINAL_BATTLE_LINEUP,a3,L + move @FINAL_BATTLE_LINEUP+20h,a4,L + + ;if either index matches either of the first two entries in a3, + ; swap a3 and a4. Then look at a3 again, and if one still matches, + ; rotate it 16 bits. + move a3,a5 + andi >00FF,a5 + move a3,a6 + andi >FF00,a6 + srl 8,a6 + + cmp a1,a5 + jreq #swap + cmp a2,a5 + jreq #swap + cmp a1,a6 + jreq #swap + cmp a2,a6 + jreq #swap + jruc #ok + +#swap SWAP a3,a4 + + move a3,a5 + andi >00FF,a5 + move a3,a6 + andi >FF00,a6 + srl 8,a6 + + cmp a1,a5 + jreq #rot + cmp a2,a5 + jreq #rot + cmp a1,a6 + jreq #rot + cmp a2,a6 + jreq #rot + jruc #ok + +#rot rl 16,a3 + +#ok move a3,@FINAL_BATTLE_LINEUP,L + move a4,@FINAL_BATTLE_LINEUP+20h,L + + rets + +#********* +* +* generates a new final battle lineup + + SUBR get_final_lineup + + callr INIT_TEMP_TABLE + callr RANDOMIZE_ORDER + + ;now just copy 8 bytes from TEMP_LADDER to FINAL_BATTLE_LINEUP + movi TEMP_LADDER,a0 + movi FINAL_BATTLE_LINEUP,a1 + move *a0+,*a1+,L ;first four + move *a0+,*a1+,L ;last four + + ;set the end-of-battle marker + movi -1,a14 + move a14,*a1,W + rets + +;************************************************************************** +;* * +;* Each entry in the ladder table is in the format of a long * +;* word, OP4|OP3|OP2|OP1. OP1 is the wrestler number for * +;* opponent 1, OP2 would be the second byte and would be * +;* the wrestler number for opponent 2. If zero, it will stop * +;* producing opponents. The table is generated randomly for * +;* each NEW game started from the ATTRACT MODE. When it is * +;* generated, it will randomly place the 8 wrestlers in order and then * +;* distribute them through the list. * +;* * +;************************************************************************** + +INIT_LADDER_TABLE + + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14 + CALLR INIT_LADDER + MOVI LADDER-20h,A6 ;init to ladder-20 because the + MOVE A6,@CURRENT_LADDER,L ; it's pre-incremented later on. + addk 20h,a6 + CALLR INIT_TEMP_TABLE + CALLR RANDOMIZE_ORDER + + MOVI LADDER_TABLE_ICONT,A7 + move @belt_type,a14 + jrz #ldset + movi LADDER_TABLE_WCHAMP,a7 +#ldset + +NEXT_BIT_OF_TABLE + MOVE *A7+,A8 + JRN WE_DONE_ALL_TABLE + MOVE *A7+,A9 +DO_ALL_THESE_PARTS + MOVE A9,A10 + MOVB A10,*A6(24) + + CALLR FETCH_NEXT_OPPONENT + MOVB A11,*A6 + DEC A10 + JRZ DONE_THIS_ENTRY + + CALLR FETCH_NEXT_OPPONENT + MOVB A11,*A6(8) + DEC A10 + JRZ DONE_THIS_ENTRY + + CALLR FETCH_NEXT_OPPONENT + MOVB A11,*A6(16) + +DONE_THIS_ENTRY + + ADDI 32,A6 + DSJS A8,DO_ALL_THESE_PARTS + JRUC NEXT_BIT_OF_TABLE + +WE_DONE_ALL_TABLE + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14 + RETS + +FETCH_NEXT_OPPONENT + MOVB *A2,A11 + ADDI 8,A2 + CMPI TEMP_LADDER_END,A2 + JREQ RANDOMIZE_ORDER + RETS + +INIT_LADDER + MOVI NUM_LADDER_ENTRIES,A1 + MOVI LADDER,A6 + CLR A2 +CLEAR_ALL_TABLE + MOVE A2,*A6+,L + DSJS A1,CLEAR_ALL_TABLE + RETS + +INIT_TEMP_TABLE + MOVK 8,A1 + MOVI TEMP_LADDER,A2 +INIT_NEXT_TEMP_TABLE + DEC A1 + MOVB A1,*A2 + INC A1 + ADDI 8,A2 + DSJS A1,INIT_NEXT_TEMP_TABLE + RETS + +RANDOMIZE_ORDER + PUSH a10 + MOVI TEMP_LADDER,A2 + MOVK 7,A10 +RANDOMIZE_NEXT_ENTRY + MOVE A10,A0 + CALLA RNDRNG0 + MOVE A0,A3 + SLL 3,A3 + ADD A2,A3 + MOVB *A2,A14 + MOVB *A3,*A2 + MOVB A14,*A3 + ADDI 8,A2 + DEC A10 + JRNN RANDOMIZE_NEXT_ENTRY + MOVI TEMP_LADDER,A2 + PULL a10 + RETS + + + +SELBOX_HEIGHT .equ 80 +SELBOX_WIDTH .equ 200 + +SELOUTLINE_H .equ 86 +SELOUTLINE_W .equ 204 + +selbox + .word SELBOX_WIDTH,SELBOX_HEIGHT,0,0 + .long 02000000h + .word 05000h + .even + +selbox_outline + .word SELBOX_WIDTH+6,SELBOX_HEIGHT+4,3,2 + .long 02000000h + .word 05000h + .even + + .ref get_all_sticks_cur + .ref get_all_buttons_cur + .ref GENERIC_DISPLAY + .ref FLASHME + .ref print_message + .ref ogmd10_ascii + .ref SGMD8GLD + .ref print_string_C2 + .ref COLCYC + .ref SNDSND + .ref mess_objid + .ref hstd_mod + .ref WIPEOUT + + .bss sel_objects,32*12 + +sel_obj_tbl_t + .long CHOGLOT_A + .long CHOGLOT_B + .long CHSHDT_A + .long CHSHDT_B +sel_obj_tbl_b + .long CHOGLOB_A + .long CHOGLOB_B + .long CHSHDB_A + .long CHSHDB_B +sel_obj_tbl_t1 + .long CHOICBK + .if INTER_DEFAULT + .long INTER + .else + .long WORLD + .endif +sel_obj_tbl_b1 + .long CHOICBK + .if INTER_DEFAULT + .long WORLD + .else + .long INTER + .endif + +sel_obj_tbl_t2 + .long CHOICBK + .long HEAD +sel_obj_tbl_b2 + .long CHOICBK + .long COOP + + + +; SUBRP scrn_rel_off + SUBR scrn_rel_off + movi OBJLST,a14 +#sro_loop + move *a14,a14,L + jrz #sro_exit + move *a14(OID),a3 + cmpi CREDITID|CLSDEAD,a3 + jrz #sro_loop + move *a14(OFLAGS),a3,W + andni M_SCRNREL,a3 + move a3,*a14(OFLAGS),W + jruc #sro_loop +#sro_exit + rets + + SUBRP hilight + PUSH a0,a9,a10,a11 + movi sel_objects,a10 + + move *a10+,a11,L + move *a11(OCTRL),a14 + move a9,a9 + jrnz #tha_off + ori 2,a14 + jruc #tha_set +#tha_off + andni 2,a14 +#tha_set + move a14,*a11(OCTRL) + + move *a10+,a11,L + move *a11(OCTRL),a14 + move a9,a9 + jrnz #thb_off + ori 2,a14 + jruc #thb_set +#thb_off + andni 2,a14 +#thb_set + move a14,*a11(OCTRL) + + move *a10+,a11,L + move *a11(OCTRL),a14 + move a9,a9 + jrz #tsa_on + ori 2,a14 + jruc #tsa_set +#tsa_on + andni 2,a14 +#tsa_set + move a14,*a11(OCTRL) + + move *a10+,a11,L + move *a11(OCTRL),a14 + move a9,a9 + jrz #tsb_on + ori 2,a14 + jruc #tsb_set +#tsb_on + andni 2,a14 +#tsb_set + move a14,*a11(OCTRL) + + move *a10+,a11,L + move *a11(OCTRL),a14 + move a9,a9 + jrz #bha_off + ori 2,a14 + jruc #bha_set +#bha_off + andni 2,a14 +#bha_set + move a14,*a11(OCTRL) + + move *a10+,a11,L + move *a11(OCTRL),a14 + move a9,a9 + jrz #bhb_off + ori 2,a14 + jruc #bhb_set +#bhb_off + andni 2,a14 +#bhb_set + move a14,*a11(OCTRL) + + move *a10+,a11,L + move *a11(OCTRL),a14 + move a9,a9 + jrnz #bsa_on + ori 2,a14 + jruc #bsa_set +#bsa_on + andni 2,a14 +#bsa_set + move a14,*a11(OCTRL) + + move *a10+,a11,L + move *a11(OCTRL),a14 + move a9,a9 + jrnz #bsb_on + ori 2,a14 + jruc #bsb_set +#bsb_on + andni 2,a14 +#bsb_set + move a14,*a11(OCTRL) + + move a9,a9 + jrz #tp_on + movi DPLT_W_P,a0 + jruc #tp_set +#tp_on + movi DPLT_P2P,a0 +#tp_set + calla pal_getf + move *a10+,a11,L + move a0,*a11(OPAL) + + move a9,a9 + jrz #tpt_on + movi WSF_W_P,a0 + jruc #tpt_set +#tpt_on + movi WSF_Y_P,a0 +#tpt_set + calla pal_getf + move *a10+,a11,L + move a0,*a11(OPAL) + + + move a9,a9 + jrnz #bp_on + movi DPLT_W_P,a0 + jruc #bp_set +#bp_on + movi DPLT_P2P,a0 +#bp_set + calla pal_getf + move *a10+,a11,L + move a0,*a11(OPAL) + + move a9,a9 + jrnz #bpt_on + movi WSF_W_P,a0 + jruc #bpt_set +#bpt_on + movi WSF_Y_P,a0 +#bpt_set + calla pal_getf + move *a10+,a11,L + move a0,*a11(OPAL) + PULL a0,a9,a10,a11 + rets + + + SUBRP flash_it + movi sel_objects,a10 + move a9,a9 + jrz #flash_p1 + addi (10*32),a10 + jruc #do_flash_it +#flash_p1 + addi (8*32),a10 +#do_flash_it + PUSHP a9 + move *a10,a8,L + movi 1f1fh,a9 + move a9,*a8(OCONST) + movk 3,a11 +#flash_it_loop + move *a8(OCTRL),a9 + ori 8,a9 + andni 2,a9 + move a9,*a8(OCTRL) + SLEEPK 3 + move *a8(OCTRL),a9 + andni 8,a9 + ori 2,a9 + move a9,*a8(OCTRL) + SLEEPK 3 + dsjs a11,#flash_it_loop + PULLP a9 + RETP + +belt_prompt_setup +; JAM_STR osgemd_ascii,8,0,200,18+256,GOLD,0 + JAM_STR osgemd_ascii,8,0,200,18+256,BLUE,0 ;TURQUSE: +belt_prompt_string + .string "SELECT YOUR TITLE:",0 + .even +rr_prompt_string + .string "SELECT PLAY MODE:",0 + .even + + +TopPalette + .long CHGLWT_P + .long CHGLWT1P + .long CHGLWT2P + .long CHGLWT3P + .long CHGLWT4P + .long CHGLWT5P + .long CHGLWT6P + .long CHGLWT7P + .long CHGLWT8P + .long CHGLWT9P + .long 0 +BottomPalette + .long CHGLWB_P + .long CHGLWB1P + .long CHGLWB2P + .long CHGLWB3P + .long CHGLWB4P + .long CHGLWB5P + .long CHGLWB6P + .long CHGLWB7P + .long CHGLWB8P + .long CHGLWB9P + .long 0 + + +;a8 = *palette table +;a9 = *object array + + SUBRP palette_cycle + move a8,a10 + move a9,a11 +#pc_loop + move *a10+,a0,L + jrz palette_cycle + calla pal_getf + move *a11,a14,L + move a0,*a14(OPAL) + move *a11(32),a14,L + move a0,*a14(OPAL) + SLEEPK 4 + jruc #pc_loop + DIE + + + SUBR ask_belt_question + PUSHP a2,a3 + + clr a9 + movi belt_type,a2 + move @question_type,a3 + jrz #rst_type + movi royal_rumble,a2 +#rst_type + move a9,*a2 + + movi [10,0],a0 + movi [30+256,0],a1 + movi MVEBAR_R,a2 + movi 2000h,a3 + movi DMAWNZ|M_3D,a4 + clr a5 + clr a6 + clr a7 + movi DPLT_P_P,b0 + calla BEGINOBJP + + + MOVI [13,0],A0 + MOVI [39+256,0],A1 + movi SHADOW01,a2 + movi 1fffH,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + CLR A6 + CLR A7 + calla BEGINOBJ + CREATE FLASH_PID,JUDDER_SHADOW + + .ref hscore_colcyc + calla hscore_colcyc + + movi belt_prompt_setup,a2 + calla setup_message + movi TYPTEXT|SUBOVRHED,a0 + move a0,@mess_objid + movi belt_prompt_string,a4 + move @question_type,a0 + jrz #bp1 + movi rr_prompt_string,a4 +#bp1 + calla print_string_C2 + + movi sel_objects,a10 + movi 8,a11 + movi sel_obj_tbl_t,a9 + movi 1800h,a3 +#do_next_obj + PUSH a3 + movi [93+256,0],a1 + movi [200,0],a0 + cmpi 5,a11 + jrge #top + movi [184+256,0],a1 + movi [201,0],a0 +#top + move *a9+,a2,L + movi DMAWNZ|M_3D,a4 + clr a5 + clr a6 + clr a7 + calla BEGINOBJ + move a8,*a10+,L + PULL a3 + addi 10h,a3 + dsjs a11,#do_next_obj + + movi sel_obj_tbl_t1,a9 + move @question_type,a11 + jrz #belt_obj + movi sel_obj_tbl_t2,a9 +#belt_obj + movi 4,a11 +#do_next_obj1 + PUSH a3 + movi [256+93,0],a1 + movi [200,0],a0 + cmpi 3,a11 + jrge #top1 + movi [184+256,0],a1 + movi [201,0],a0 +#top1 + move *a9+,a2,L + movi DMAWNZ|M_3D,a4 + clr a5 + clr a6 + clr a7 + movi WSF_W_P,b0 + calla BEGINOBJP + move a8,*a10+,L + PULL a3 + addi 10h,a3 + dsj a11,#do_next_obj1 + + movi sel_objects,a10 + + move *a10(64),a2,L + move *a2(OCTRL),a3 + andni 2,a3 + move a3,*a2(OCTRL) + + move *a10(96),a2,L + move *a2(OCTRL),a3 + andni 2,a3 + move a3,*a2(OCTRL) + + move *a10(128),a2,L + move *a2(OCTRL),a3 + andni 2,a3 + move a3,*a2(OCTRL) + + move *a10(160),a2,L + move *a2(OCTRL),a3 + andni 2,a3 + move a3,*a2(OCTRL) + + movi DPLT_P2P,a0 + calla pal_getf + move *a10(256),a2,L + move a0,*a2(OPAL) + + movi WSF_Y_P,a0 + calla pal_getf + move *a10(288),a2,L + move a0,*a2(OPAL) + + movi DPLT_W_P,a0 + calla pal_getf + move *a10(320),a2,L + move a0,*a2(OPAL) + + movi WSF_W_P,a0 + calla pal_getf + move *a10(352),a2,L + move a0,*a2(OPAL) + + movi TopPalette,a8 + move a10,a9 + CREATE PCYC_PID,palette_cycle + movi BottomPalette,a8 + addi (4*32),a9 + CREATE PCYC_PID,palette_cycle + SLEEPK 2 + + move @question_type,a9 + jrz #no_pcurs + callr mk_pcurs +#no_pcurs + + clr a9 ;cusor pos + move a9,a10 + + callr scrn_rel_off + + movi 18,a0 + calla triple_sound + +; PUSHP a8,a9,a10,a11 +#move_on_loop + move @WORLDTLY,a0,L + addi [18h,0],a0 + move a0,@WORLDTLY,L + cmpi [252,0],a0 + jrge #move_done + calla BGND_UD1 + SLEEPK 1 + jruc #move_on_loop +#move_done + movi [255,0],a0 + move a0,@WORLDTLY,L + calla BGND_UD1 + SLEEPK 1 + + move @question_type,a14 + jrz #norm + JSRP ind_select + jruc #sel_done +#norm + + movi TSEC*4,a11 +#sel_box_wait + cmp a9,a10 + jrz #no_change + movi 0c7h,a0 + calla triple_sound + move a9,a10 + callr hilight +#no_change + SLEEPK 1 + calla get_all_buttons_cur + jrnz #sel_done + calla get_all_sticks_cur + jrnz #do_stick + dsj a11,#sel_box_wait + jruc #sel_done +#do_stick + btst 0,a0 + jrz #no_sel_up + andni 1,a9 + jruc #sel_box_wait +#no_sel_up + btst 1,a0 + jrz #sel_box_wait + ori 1,a9 + jruc #sel_box_wait +#sel_done + .if INTER_DEFAULT + .else + xori 1,a9 + .endif + + move @question_type,a0 + jrz #set_belt + move a9,@royal_rumble + jruc #is_set +#set_belt + move a9,@belt_type + + + move a9,a9 + jrnz #sel_medium + movi AUD_INTERCON,a0 + calla AUD1 + movi 0cbh,a0 + calla triple_sound + jruc #sel_exit +#sel_medium + movi AUD_WWF,a0 + calla AUD1 + movi 0cbh,a0 + calla triple_sound +#sel_exit + .if INTER_DEFAULT + .else + xori 1,a9 + .endif + jruc #rr_aud_bypass +#is_set + move a9,a9 + jrz #aud_hdhd + movi AUD_ROYALRUM,a0 + calla AUD1 + movi 0cbh,a0 + calla triple_sound + jruc #rr_aud_bypass +#aud_hdhd + movi AUD_HEADTOHEAD,a0 + calla AUD1 + movi 0cbh,a0 + calla triple_sound +#rr_aud_bypass + JSRP flash_it + + movi sel_objects,a9 + move *a9+,a0,L + calla DELOBJ + move *a9,a0,L + calla DELOBJ + addi 96,a9 + move *a9+,a0,L + calla DELOBJ + move *a9,a0,L + calla DELOBJ + + SLEEPK 15 + + clr a2 + move a2,@mess_objid + + movi CYCPID,a0 + calla KIL1C + + PULLP a2,a3 + RETP + + +p1curs + .word 50-107,93+256,1800h + .long CHOICBK + .word DMAWNZ|M_3D + .word CLSNEUT + .long 0,0 + +p1curs_num + .word 15-(6/2),(93+256)-(16/2),1810h + .long WSF14_1 + .word DMAWNZ|M_3D + .word CLSNEUT + .long 0,0 + +p2curs + .word 399+(107-50),93+256,1800h + .long CHOICBK + .word DMAWNZ|M_3D|M_FLIPH + .word CLSNEUT + .long 0,0 + +p2curs_num + .word (399-15)-(11/2),(93+256)-(16/2),1810h + .long WSF14_2 + .word DMAWNZ|M_3D + .word CLSNEUT + .long 0,0 + + +pcurs_tbl + .long p1curs + .long p1curs_num + .long p2curs + .long p2curs_num + .long 0 + + + SUBR mk_pcurs + PUSH a8,a9,a10,a11 + movi pcurs_obj,a9 + movi pcurs_tbl,a10 +#cpc_loop + move *a10+,a0,L + jrz #cpc_done + calla BEGINOBJ_TBL + move a8,*a9+,L + jruc #cpc_loop +#cpc_done + movi pcurs_obj,a9 + + movi DPLT_B_P,a0 + calla pal_getf + move *a9+,a10,L + move a0,*a10(OPAL),L + + movi WSF_W_P,a0 + calla pal_getf + move *a9,a10,L + move a0,*a10(OPAL),L + move *a9(64),a10,L + move a0,*a10(OPAL),L + + movi DPLT_R_P,a0 + calla pal_getf + move *a9(32),a10,L + move a0,*a10(OPAL),L + + PULL a8,a9,a10,a11 + rets + +#************************************************ +* + + SUBRP ind_select + PUSHP a8,a10 + + clr a9 ; Clear out player select flags + move a9,@p1sel + move a9,@p2sel + + movi TSEC*5,a11 ; Max time before selection timeout +#sel_wait + + ; First check to see which players have made their selections + move @p1sel,a0 ; Get p1 select flag + move @p2sel,a1 ; Get p2 select flag + sll 1,a1 ; Combine them + or a1,a0 + + ; If nobody has made a selection just set cursor positions + jrz #set_curs ; No selections - just set cursors + + ; If both have selected then we are done + cmpi 3,a0 ; Have both selected ? + jrz #both_selected ; br = yes + + ; If player 1 has selected "HEAD TO HEAD" then we are done + btst 0,a0 ; Has player 1 made a selection + jrz #no_p1_sel ; br = no + btst 0,a9 ; Has player 1 selected "HEAD TO HEAD" ? + jrz #both_selected ; br = yes + + ; If player 2 has selected "HEAD TO HEAD" then we are done +#no_p1_sel + btst 1,a0 ; Has player 2 made a selection + jrz #set_curs ; br = no + btst 1,a9 ; Has player 1 selected "HEAD TO HEAD" ? + jrz #both_selected ; br = yes + +#set_curs + + callr set_pcurs_pos ; set player cursor positions + move a9,a10 ; Save a9 + cmpi 3,a9 ; Are both on "COOP" ? + jrz #coop ; br = yes + clr a9 ; Set "HEAD" + jruc #do_hi ; Go hilight "Head to Head" +#coop + movk 1,a9 ; Set "COOP" +#do_hi + callr hilight ; hilight the right one + move a10,a9 ; Restore a9 + + SLEEPK 1 ; Wait a bit + + move @p1sel,a0 ; Has p1 selected ? + jrnz #ck_p2 ; br = yes + clr a0 ; get p1 buttons + calla get_but_val_cur + move a0,a0 + jrz #no_p1 + movk 1,a0 +#no_p1 + move a0,@p1sel ; save p1 buttons + PUSH a10,a11 ; Flash p1 cursor + clr a11 + move a0,a10 + CREATE0 flash_pcurs + PULL a10,a11 + clr a0 + calla get_stick_val_cur ; get p1 stick + move a0,a0 ; any on ? + jrnz #dop1_stick ; br = yes +#ck_p2 + move @p2sel,a0 ; Has p2 selected ? + jrnz #p2_done ; br = yes + movk 1,a0 ; Get p2 buttons + calla get_but_val_cur + move a0,a0 + jrz #no_p2 + movk 1,a0 +#no_p2 + move a0,@p2sel ; Save p2 buttons + PUSH a10,a11 ; Flash p2 cursor + movk 1,a11 + move a0,a10 + CREATE0 flash_pcurs + PULL a10,a11 + movk 1,a0 ; Get p2 stick + calla get_stick_val_cur + move a0,a0 ; Any Set ? + jrnz #dop2_stick ; br = yes +#p2_done + dsj a11,#sel_wait ; Timeout ? + jruc #both_selected ; br = yes + +#dop1_stick + btst 0,a0 ; p1 up on? + jrz #no_p1_up ; br = no + andni 1,a9 ; set p1 curs pos top + jruc #ck_p2 ; go check on p2 +#no_p1_up + btst 1,a0 ; p2 down on? + jrz #ck_p2 ; br = no + ori 1,a9 ; set p1 curs pos bottom + jruc #ck_p2 ; go check on p2 + +#dop2_stick + btst 0,a0 ; p2 up on? + jrz #no_p2_up ; br = no + andni 2,a9 ; set p2 curs pos top + jruc #sel_wait ; go update +#no_p2_up + btst 1,a0 ; p2 down on? + jrz #sel_wait ; br = no + ori 2,a9 ; set p2 curs pos bottom + jruc #sel_wait ; go update + +#both_selected + cmpi 3,a9 ; have both selected "COOP" ? + jrnz #ret_hd ; br = no + movk 1,a9 ; set "COOP" mode + jruc #mode_selected +#ret_hd + clr a9 ; set "HEAD TO HEAD" mode +#mode_selected + PULLP a8,a10 + RETP + + +;a10 - flag 0 = no flash +;a11 - pnum + SUBRP flash_pcurs + move a10,a10 ; Should I flash it ? + jrz #fp_exit ; br = no + movi pcurs_obj,a10 ; Object array + move a11,a11 ; Is this player 1 ? + jrz #not_p2 ; br = yes + addi 64,a10 ; Adjust pointer for p2 objects +#not_p2 + movi 0cbh,a0 ; Make a sound + calla triple_sound + + move *a10,a9,L ; Set const color to white + movi 0101h,a14 + move a14,*a9(OCONST) + movk 3,a11 ; Number of times to flash it +#fp_loop + move *a9(OCTRL),a8 ; Turn it white + ori 8,a8 ; Turn on Write const on non-zero + andni 2,a8 ; Turn off write non-zeros bit + move a8,*a9(OCTRL) ; Write back to control + SLEEPK 3 + andni 8,a8 ; Turn off write const on non-zero + ori 2,a8 ; Turn on non-zeros bit + move a8,*a9(OCTRL) ; Write back to control + SLEEPK 3 + dsjs a11,#fp_loop ; Done ? - br = no +#fp_exit + DIE + + + SUBRP set_pcurs_pos + movi pcurs_obj,a8 ; Get pointer to player cursor object table + move *a8+,a0,L ; pointer to p1 cursor + + + movi 93+256,a1 ; Set top ypos + btst 0,a9 ; p1 curs position bottom ? + jrz #p1c_set ; br = no + movi 184+256,a1 ; bottom ypos +#p1c_set + move *a0(OYPOS),a2 ; Get current position + cmp a1,a2 ; Same as requested ? + jrz #no_p1_change ; br = yes + PUSH a0,a1 ; make a sound + movi 0c7h,a0 + calla triple_sound + PULL a0,a1 +#no_p1_change + move a1,*a0(OYPOS) ; Set p1 cursor ypos + move *a8+,a0,L ; Get p1 digit object pointer + subi 8,a1 ; adjust ypos + move a1,*a0(OYPOS) ; Set p1 cursor digit ypos + + + movi 93+256,a1 ; Set top ypos + btst 1,a9 ; p2 curs position bottom ? + jrz #p2c_set ; br = no + movi 184+256,a1 ; Set bottom ypos +#p2c_set + move *a8+,a0,L ; Get pointer to p2 cursor object + move *a0(OYPOS),a2 ; Get current position + cmp a1,a2 ; Same as requested position ? + jrz #no_p2_change ; br = yes + PUSH a0,a1 ; Make a sound + movi 0c7h,a0 + calla triple_sound + PULL a0,a1 +#no_p2_change + move a1,*a0(OYPOS) ; Set p2 cursor ypos + move *a8+,a0,L ; Get p2 digit object pointer + subi 8,a1 ; adjust ypos + move a1,*a0(OYPOS) ; Set p2 cursor digit ypos + rets + + + +****************************************************************************** + +DO_SET_IMAGE_AND_FLASH + CALLA BGND_UD1 + CALLA SET_IMAGE_AND_FLASH + SLOOP 1,DO_SET_IMAGE_AND_FLASH + +****************************************************************************** + + SUBR PUT_UP_PROGRESS + calla SPECIAL_WIPEOUT + + CALLA CLEAR_PROCESSES + + movi 2056,a3 + calla SNDSND + + CREATE0 VINCE_START_GAME + + clr a0 + move a0,@HALT + + move a0,@dtype ;2d mode + move a0,@IRQSKYE + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + move a0,@FLASH_FLAG + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + movi #PROGRESS_BMOD,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + calla show_progress_bicons + + movi tonites_matchup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + move a0,@mess_objid + movi tonites_str,a4 + calla print_string2 + + calla start_credbox + + movi tonites_matchup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + move a0,@mess_objid + movi tonites_str,a4 + calla print_string2 + + movi type_setup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + move a0,@mess_objid + movi wwf_belt_str,a4 + move @belt_type,a14 + jrnz #wwf_belt + movi inter_belt_str,a4 +#wwf_belt + calla print_string_C2 + + calla start_credbox + + movi belt_setup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + move a0,@mess_objid + movi belt_str,a4 + calla print_string_C2 + + movk 10,a0 + move a0,@match_time + + MOVE @CURRENT_LADDER,A10,L + + CMPI LADDER,A10 + jrlt NO_DEAD_BODIES + + MOVE *A10,A1,L + CALLR NUM_OF_OPPS + MOVE A3,@NUM_OLD_OPPS + + MOVE *A10,A4,L + MOVK 4,A10 +CREATE_NEXT_DEAD_GUY + CALLR SORT_OUT_WRESTLER_NUM + movi PTYPE_DRONE,a8 ;player type + movi PSIDE_PLYR1,a9 ;side on + SCREATE WMAINT_PID,CREATE_TEMP_WRESTLER + SRL 8,A4 + INC A10 + DEC A3 + JRNZ CREATE_NEXT_DEAD_GUY + + MOVE @CURRENT_LADDER,A10,L + +NO_DEAD_BODIES + CALLR NEXT_IN_LADDER + + movk INPREGAME2,a14 ;set GAMSTATE + move a14,@GAMSTATE + + CALLR NUM_OF_OPPS + + movi PTYPE_DRONE,a8 ;player type + movi PSIDE_PLYR1,a9 ;side on + clr a10 + move @index1,a11 ;wrestler + MOVE @PSTATUS,A0 + SRL 1,A0 + JRC INDEX_SET + move @index2,a11 ;wrestler +INDEX_SET + PUSH A11 + SCREATE WMAINT_PID,CREATE_TEMP_WRESTLER + PULL A11 + + MOVE @MUSIC_HAP,A0 + JRNZ MUSIC_ALREADY_GOING + + SLL 4,A11 + ADDI WHICH_MUSIC,A11 + MOVE *A11,A3 + calla SNDSND + +MUSIC_ALREADY_GOING + + MOVE @NUM_OPPS,A3 + MOVE @CURRENT_LADDER,A10,L + MOVE *A10,A4,L + MOVK 1,A10 +CREATE_NEXT_NEW_GUY + CALLR SORT_OUT_WRESTLER_NUM + movi PTYPE_DRONE,a8 ;player type + movi PSIDE_PLYR1,a9 ;side on + SCREATE WMAINT_PID,CREATE_TEMP_WRESTLER + SRL 8,A4 + INC A10 + DEC A3 + JRNZ CREATE_NEXT_NEW_GUY + +***************** + CALLR is_8_on_1 + JRNC NO_IT_IS_NOT_8_ON_1 + CALLR INIT_TEMP_TABLE + MOVE @CURRENT_LADDER,A10,L + MOVE *A10,A4,L + MOVK 3,A1 + MOVK 9,A2 +CLEAR_NEXT_POSITION + MOVE A4,A0 + SLL 24,A0 + SRL 24,A0 + MOVK 7,A14 + SUB A0,A14 + SLL 3,A14 + ADDI TEMP_LADDER,A14 + MOVB A2,*A14 + SRL 8,A4 + DSJS A1,CLEAR_NEXT_POSITION + + MOVI TEMP_LADDER,A10 + CLR A11 +CREATE_NEXT_BODY + CMPI TEMP_LADDER+(8*8),A10 + JREQ NO_IT_IS_NOT_8_ON_1 + MOVB *A10,A2 + ADDK 8,A10 + CMPI 9,A2 + JREQ CREATE_NEXT_BODY + CALLR CREATE_OTHER_BODIES + INC A11 + JRUC CREATE_NEXT_BODY + +NO_IT_IS_NOT_8_ON_1 +***************** + + CALLR SET_IMAGE_AND_FLASH + + CALLR DO_LADDER_BITS + + CREATE0 DO_SET_IMAGE_AND_FLASH + PUSHP A0 + +; movk 15,a8 +; movk 4,a9 + movk 10,a8 + movk 2,a9 + + + NEG A9 + JSRP OPEN_SCREEN_LINE + PULLP A0 + CALLA KILL + + MOVI RUN_SPEED,A0 + MOVE A0,@TEMP_SPEED,L + + PUSH A13 + MOVE @process_ptrs,a13,L + movi running_addr,a2 + callr start_them_doing_stuff + PULL A13 + + MOVI RUN_SPEED,A9 + MOVI 100,A8 +MOVE_PROGRESS + calla BGND_UD1 ;create objects for background + pushp a8,A9 + CALLR SET_IMAGE_AND_FLASH + pullp a8,A9 + CALLA get_all_buttons_cur2 + JRNZ EXIT_PROGRESS + CALLR SET_SCROLL_SPEED + SLEEPK 1 + DEC A8 + JRNN MOVE_PROGRESS + + PUSH A13 + + MOVE @process_ptrs+020h,a13,L + movi clever_addr,a2 + callr start_them_doing_stuff + + MOVE @process_ptrs+040h,a13,L + jrz no_other_players + movi clever_addr,a2 + callr start_them_doing_stuff + + MOVE @process_ptrs+060h,a13,L + jrz no_other_players + movi clever_addr,a2 + callr start_them_doing_stuff +no_other_players + + PULL A13 + + MOVI 90,A8 +STILL_PROGRESS + SLEEPK 1 + pushp a8 + CALLR SET_IMAGE_AND_FLASH + pullp a8 + CALLA get_all_buttons_cur2 + JRNZ EXIT_PROGRESS + CMPI 80,A8 + JRNE NO_START_TAUNTS + PUSH A13 + MOVE @process_ptrs,a13,L + movi taunting_addr,a2 + callr start_them_doing_stuff + PULL A13 +NO_START_TAUNTS + DEC A8 + JRNN STILL_PROGRESS + +EXIT_PROGRESS + +;Get rid of flashes under wipe +; CREATE0 DO_SET_IMAGE_AND_FLASH +; PUSHP A0 + JSRP CLOSE_PROGRESS_SCREEN +; PULLP A0 +; CALLA KILL + + calla del_progress_icon + + RETP + +WHICH_MUSIC + .word 5,2,1,7,6,4,8,0,3 + +**************** +CREATE_OTHER_BODIES + MMTM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + PUSH b0 + + + MOVE A2,A3 + cmpi 7,a3 ; Is this Lex ? + jrnz wnum_ok ; br = no + addk 1,a3 ; Yes - adjust for palette table +wnum_ok + SLL 5,A3 + move a3,b0 + addi #wrestler_pal,b0 + move *b0,b0,L + ADDI WHICH_WRESTLER_IMAGE,A3 + MOVE *A3+,A4,L + PUSH A4 + PUSH b0 + + MOVE A11,A4 + SLL 7,A4 + ADDI WHERE_TEMP_WRESTLER,A4 + + MOVE *A4+,A0,L + PUSH A0 + + MOVE *A4+,A3,L + PUSH A3 + ORI 1000H,A3 + + MOVE *A4,A1,L + PUSH A1 + + MOVI shadow,A2 + MOVI DMAWNZ,A4 + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + + PULL A1 + PULL A3 + DEC A3 + ORI 1000H,A3 + PULL A0 + + PULL b0 + PULL A2 + + movi DMAWNZ|M_FLIPH,a4 ;DMA flags + CLR A5 + CLR A6 + CLR A7 +; CALLA BEGINOBJ + calla BEGINOBJP + PULL b0 + MMFM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + RETS + +WHICH_WRESTLER_IMAGE + .LONG H4ST4A02 + .LONG RAZOR_STAND + .LONG TAKER_STAND + .LONG YOKO_STAND + .LONG SHAWN_STAND + .LONG BAM_STAND + .LONG DOINK_STAND + .LONG LEX_STAND + .LONG LEX_STAND + +WHERE_TEMP_WRESTLER + .LONG [725,0],470H,[233,0],0 + .LONG [760,0],420H,[223,0],0 + .LONG [720,0],420H,[219,0],0 + .LONG [690,0],420H,[219,0],0 + .LONG [650,0],420H,[219,0],0 + +**************** + +********************* +* +* Low byte of a4 is a wrestler num between 0-7. 7, of course, is an unused +* slot so we promote a 7 to 8, then store the result in a11. +* + +SORT_OUT_WRESTLER_NUM + MOVE A4,A11 + SLL 24,A11 + SRL 24,A11 + CMPI 7,A11 + JRNE NO_AVOID_UNUSED_WRESTLER + INC A11 +NO_AVOID_UNUSED_WRESTLER + RETS + +SET_SCROLL_SPEED + MOVE A8,A0 + CMPI 16,A0 + JRGT NO_CHANGE_SCROLL_SPEED + ABS A0 + SUBI 16,A0 + NEG A0 + SRL 2,A0 + SLL 15,A0 + MOVI RUN_SPEED,A9 + SUB A0,A9 + clr a0 + MOVE A0,@TEMP_SPEED,L + PUSH A13 + MOVE @process_ptrs,a13,L + movi standing_addr,a2 + callr start_them_doing_stuff + PULL A13 +NO_CHANGE_SCROLL_SPEED + MOVE A9,A5 + CALLA get_all_buttons_cur2 + JRZ NO_BUTTONS2 + SLL 1,A5 + DEC A8 +NO_BUTTONS2 + MOVE @WORLDTLX,A4,L + ADD A5,A4 + move a4,@WORLDTLX,L + RETS + +#PROGRESS_BMOD + .long LADDERBMOD + .word -60,-45 + .long 0 + +CREATE_TEMP_WRESTLER + + move a8,*a13(PLYR_TYPE) + move a9,*a13(PLYR_SIDE) + move a10,*a13(PLYRNUM) + move a11,*a13(WRESTLERNUM) + + movi 112,a0 + move a0,*a13(OBJ_PRIORITY) + + move a10,a1 + calla set_process_ptr + + move a10,a0 + X32 a0 + addi obj_look,a0 + move *a0,a0,L ;* start of objects + move a0,*a13(OBJ_BASE),L + move a0,a10 + addi 32*MAX_PIECES,a10 ;start at end to reverse priorities + + clr a1 ;y pos + movi D2ST2B03,a2 ;* image + movi 1000h|110,a3 ;z pos + movi DMAWNZ|M_3D,a4 ;DMA flags + move a4,*a13(OBJ_CONTROL) + movi CLSPLYR | TYPPLYR,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + + move a13,b0 + move *b0(WRESTLERNUM),b0 + X32 b0 + + movk MAX_PIECES,a9 + +#nopal_chng + + addi #wrestler_pal,b0 + move *b0,b0,L ;* palette + +#nxt_obj + PUSH b0 + calla BEGINOBJP + PULL b0 + move a8,-*a10,L + dsj a9,#nxt_obj + + calla BEGINOBJP + move a8,*a13(ATTIMG_IMG),L + clr a0 + move a0,*a13(ATTIMG_CUR_FRAME),L + move a0,*a13(ATTIMG_LAST_FRAME),L + + move *a8(OPAL),a0 + move a0,*a13(OBJ_PAL) + + movi shadow_p,a0 + + calla pal_getf + move *a13(OBJ_BASE),a8,L + move *a8,a8,L ;1st object + move a0,*a8(OPAL) ;set palette for shadow + + CLR A0 + move a0,*a13(GROUND_Y) + + clr a0 +; move a0,*a13(BURNOUT_COUNT) + move a0,*a13(INRING) + + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_YVEL),L + move a0,*a13(OBJ_ZVEL),L + + move *a13(PLYRNUM),a0 + JRZ RUNNING_MAN + CMPI 4,A0 + JRGE DEAD_BODIES + + MOVI 8,A0 + MOVE A0,*A13(FACING_DIR) + MOVE A0,*A13(NEW_FACING_DIR) + + MOVE @NUM_OPPS,A0 + SLL 5,A0 + ADDI WHICH_ZPOS_TABLE-020H,A0 + MOVE *A0,A0,L + move *a13(PLYRNUM),A1 + DEC A1 + SLL 6,A1 + ADD A0,A1 + MOVE *A1,A0,L + MOVE A0,*A13(OBJ_ZPOS),L + MOVE *A1(020H),A0,L + ADDI [375,0],A0 + MOVE A0,*A13(OBJ_XPOS),L + movi 100,a0 + move a0,*A13(OBJ_YPOS),L + + movi waiting_addr,a2 + callr start_them_doing_stuff + + move @PCNT,a14 + move a14,*a13(FOOT_PCNT),W ;init foot timer + +#loop1 + calla wrestler_veladd + + calla animate_wrestler + + SLOOP 1,#loop1 + +WHICH_ZPOS_TABLE + .LONG ONLY_ONE_OPP + .LONG TWO_OPPS + .LONG THREE_OPPS + +ONLY_ONE_OPP + .LONG [470H,0],[300,0] +TWO_OPPS + .LONG [490H,0],[330,0] + .LONG [450H,0],[280,0] +THREE_OPPS + .LONG [4A0H,0],[345,0] + .LONG [470H,0],[300,0] + .LONG [440H,0],[255,0] + +WHICH_ZPOS_TABLE_D + .LONG ONLY_ONE_OPP_D + .LONG TWO_OPPS_D + .LONG THREE_OPPS_D + +ONLY_ONE_OPP_D + .LONG [450H,0],[300,0] +TWO_OPPS_D + .LONG [490H,0],[330,0] + .LONG [450H,0],[280,0] +THREE_OPPS_D + .LONG [4B0H,0],[345,0] + .LONG [490H,0],[300,0] + .LONG [440H,0],[255,0] + +DEAD_BODIES + MOVI 8,A0 + MOVE A0,*A13(FACING_DIR) + MOVE A0,*A13(NEW_FACING_DIR) + + CLR A0 + MOVE A0,*A13(STARS_FLAG) + + movi 100,a0 + move a0,*A13(OBJ_YPOS),L + + MOVE @NUM_OLD_OPPS,A0 + SLL 5,A0 + ADDI WHICH_ZPOS_TABLE_D-020H,A0 + MOVE *A0,A0,L + move *a13(PLYRNUM),A1 + SUBI 4,A1 + SLL 6,A1 + ADD A0,A1 + MOVE *A1,A0,L + MOVE A0,*A13(OBJ_ZPOS),L + MOVE *A1(020H),A0,L + MOVE A0,*A13(OBJ_XPOS),L + + movi dead_addr,a2 + callr start_them_doing_stuff + + move @PCNT,a14 + move a14,*a13(FOOT_PCNT),W ;init foot timer +#loop2 + calla animate_wrestler + + SLOOP 1,#loop2 + +RUNNING_MAN + MOVI 4,A0 + MOVE A0,*A13(FACING_DIR) + MOVE A0,*A13(NEW_FACING_DIR) + + movi standing_addr,a2 + callr start_them_doing_stuff + + move @PCNT,a14 + move a14,*a13(FOOT_PCNT),W ;init foot timer + + movi 100,a0 + move a0,*A13(OBJ_YPOS),L + MOVI [470h,0],A0 + MOVE A0,*A13(OBJ_ZPOS),L + MOVI [140,0],A0 + MOVE A0,*A13(OBJ_XPOS),L + CLR A0 + MOVE A0,@TEMP_SPEED,L + +#loop + MOVE @TEMP_SPEED,A3,L + CALLA get_all_buttons_cur2 + JRZ #NO_BUTTONS + SLL 1,A3 +#NO_BUTTONS + move a3,*a13(OBJ_XVEL),L + + calla wrestler_veladd + + calla animate_wrestler + + SLOOP 1,#loop + +#wrestler_pal + .long HRTPNK_P ;0 (Bret) + .long RZRGRN_P ;1 (Razor) + .long UNDBLK_P ;2 (Taker) + .long YOKRED_P ;3 (Yoko) + .long SHNRED_P ;4 (Shawn) + .long BAMBLU_P ;5 (Bam Bam) + .long DNKBLU_P ;6 (Doink) + .long DNKBLU_P ;7 (spare) + .long LEXWHT_P ;8 (Lex) + .long 0 ;9 (Referee) + +start_them_doing_stuff + movi 100h,a0 + move a0,*a13(ANI_SPEED) ;normal speed animations + + move *a13(WRESTLERNUM),a1 + SLL 6,a1 + add a2,a1 + move *a1+,a0,L + push a1 + calla change_anim1a + pull a1 + move *a1+,a0,L + calla change_anim2a + rets + +taunting_addr + .long hrt_taunt4_anim + .long hrt_torso4_anim + .long rzr_taunt4_anim + .long rzr_torso4_anim + .long und_taunt4_anim + .long und_torso4_anim + .long yok_taunt4_anim + .long yok_torso4_anim + .long shn_taunt4_anim + .long shn_torso4_anim + .long bam_taunt4_anim + .long bam_torso4_anim + .long dnk_taunt4_anim + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_taunt4_anim + .long lex_torso4_anim + .long 0,0 ;9 Referee + +standing_addr + .long hrt_stand4_anim + .long hrt_torso4_anim + .long rzr_stand4_anim + .long rzr_torso4_anim + .long und_stand4_anim + .long und_torso4_anim + .long yok_stand4_anim + .long yok_torso4_anim + .long shn_stand4_anim + .long shn_torso4_anim + .long bam_stand4_anim + .long bam_torso4_anim + .long dnk_stand4_anim + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_stand4_anim + .long lex_torso4_anim + .long 0,0 ;9 Referee + +dead_addr + .long hrt_dizzy_anim + .long hrt_torso4_anim + .long rzr_dizzy_anim + .long rzr_torso4_anim + .long und_dizzy_anim + .long und_torso4_anim + .long yok_dizzy_anim + .long yok_torso4_anim + .long shn_dizzy_anim + .long shn_torso4_anim + .long bam_dizzy_anim + .long bam_torso4_anim + .long dnk_dizzy_anim + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_dizzy_anim + .long lex_torso4_anim + .long 0,0 ;9 Referee + +running_addr + .long hrt_run2_anim ;0 Bret Hart + .long hrt_torso4_anim + .long rzr_run2_anim ;1 Razor Ramon + .long rzr_torso4_anim + .long und_run2_anim ;2 Undertaker + .long und_torso4_anim + .long yok_run2_anim ;3 Yokozuna + .long yok_torso4_anim + .long shn_run2_anim ;4 Shawn Michaels + .long shn_torso4_anim + .long bam_run2_anim ;5 Bam Bam + .long bam_torso4_anim + .long dnk_run2_anim ;6 Doink + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_run2_anim ;8 Lex Luger + .long lex_torso4_anim + .long 0,0 ;9 Referee + +clever_addr + .long hrt_clever_anim ;0 Bret Hart + .long hrt_torso4_anim + .long rzr_clever_anim ;1 Razor Ramon + .long rzr_torso4_anim + .long und_clever_anim ;2 Undertaker + .long und_torso4_anim + .long yok_clever_anim ;3 Yokozuna + .long yok_torso4_anim + .long shn_clever_anim ;4 Shawn Michaels + .long shn_torso4_anim + .long bam_clever_anim ;5 Bam Bam + .long bam_torso4_anim + .long dnk_clever_anim ;6 Doink + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_clever_anim ;8 Lex Luger + .long lex_torso4_anim + .long 0,0 ;9 Referee + +waiting_addr + .long hrt_wait_anim ;0 Bret Hart + .long hrt_torso4_anim + .long rzr_wait_anim ;1 Razor Ramon + .long rzr_torso4_anim + .long und_wait_anim ;2 Undertaker + .long und_torso4_anim + .long yok_wait_anim ;3 Yokozuna + .long yok_torso4_anim + .long shn_wait_anim ;4 Shawn Michaels + .long shn_torso4_anim + .long bam_wait_anim ;5 Bam Bam + .long bam_torso4_anim + .long dnk_wait_anim ;6 Doink + .long dnk_torso4_anim + .long 0,0 ;7 spare + .long lex_wait_anim ;8 Lex Luger + .long lex_torso4_anim + .long 0,0 ;9 Referee + + .ref B4RS4A + .ref Y4CO4D,Y4ST4Y + .ref D4CO4A + .ref U4CO4B + .ref S4CO4A + .ref R4CO4A + .ref L4CO4Z + .ref H4SL4C + .ref B4SW4B + + .ref H4LD4A,R4LD4A,U4LD4A,Y4LD4A,S4LD4A + .ref B4RS4A,D4SQ4A,L4SW5A + +hrt_wait_anim + .WORD ANI_XFLIP + WL 100,H4LD4A+FR1 + .word ANI_END +rzr_wait_anim + WL 100,R4LD4A+FR1 + .word ANI_END +und_wait_anim + .WORD ANI_XFLIP + WL 100,U4LD4A+FR1 + .word ANI_END +yok_wait_anim + WL ANI_CODE,CREATE_FUJI + .WORD ANI_XFLIP + WL 100,Y4ST4Y+FR2 + .word ANI_END +shn_wait_anim + WL 100,S4LD4A+FR1 + .word ANI_END +bam_wait_anim + .WORD ANI_OFFSET,-800,0,0 + WL 100,B4RS4A+FR1 + .word ANI_END +dnk_wait_anim + WL 100,D4SQ4A+FR1 + .word ANI_END +lex_wait_anim + WL 100,L4SW5A+FR2 + .word ANI_END + +hrt_clever_anim + WL 6,H4LD4A+FR1 + WL 6,H4LD4A+FR2 + WL 6,H4LD4A+FR3 + WL 6,H4LD4A+FR4 + WL 6,H4LD4A+FR5 + WL 6,H4LD4A+FR6 + .word ANI_END +rzr_clever_anim + WL 6,R4LD4A+FR1 + WL 6,R4LD4A+FR2 + WL 6,R4LD4A+FR3 + WL 6,R4LD4A+FR4 + WL 6,R4LD4A+FR5 + WL 6,R4LD4A+FR6 + WL 6,R4LD4A+FR7 + WL 6,R4LD4A+FR2 + .word ANI_END +und_clever_anim +; .WORD ANI_XFLIP + WL 6,U4LD4A+FR1 + WL 6,U4LD4A+FR2 + WL 6,U4LD4A+FR3 + WL 6,U4LD4A+FR4 + WL 6,U4LD4A+FR5 + WL 6,U4LD4A+FR6 + WL 6,U4LD4A+FR7 + WL 6,U4LD4A+FR8 + WL ANI_CODE,CREATE_URN + .word ANI_END +yok_clever_anim + WL ANI_CODE,DO_FUJI + WL 20,Y4ST4Y+FR2 + WL 5,Y4LD4A+FR1 + WL 5,Y4LD4A+FR2 + WL 5,Y4LD4A+FR3 + WL 5,Y4LD4A+FR4 + WL 5,Y4LD4A+FR5 + WL 5,Y4LD4A+FR6 + .word ANI_END +shn_clever_anim + WL 6,S4LD4A+FR1 + WL 6,S4LD4A+FR2 + WL 6,S4LD4A+FR3 + WL 6,S4LD4A+FR4 + WL 6,S4LD4A+FR5 + WL 6,S4LD4A+FR6 + WL 45,S4LD4A+FR7 + WL 6,S4LD4A+FR10 + .word ANI_END + +bam_clever_anim + .WORD ANI_XFLIP + .WORD ANI_OFFSET,800,0,0 + .word ANI_SETMODE,MODE_NOSHADOW + WL ANI_CODE,BAM_RISE_SOUND + WL 6,B4RS4A+FR1 + WL 6,B4RS4A+FR2 + WL 6,B4RS4A+FR3 + WL 6,B4RS4A+FR4 + .word ANI_SETMODE,MODE_NORMAL + WL 6,B4RS4A+FR5 + WL 6,B4RS4A+FR6 + +;Send smoke puffs off from bam bam! + WL ANI_CODE,start_smoke + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + + WL ANI_CHANGEANIM,bam_stand4_anim + +BAM_RISE_SOUND + movi 41h,a0 + CALLA triple_sound + RETS + +start_smoke +;10% of time put smoke on bam bam + movi 100,a0 + .ref RNDPER + calla RNDPER + jrls #out + move a13,a10 + CREATE0 body_smoke +#out + rets + +#******************************* +* Smoke trail (Process) +* A10=*wrestler proc + +body_smoke + + clr a11 + movk 3,a11 +#lp CREATE0 smokepuff +;Need an explosion sound + SLEEPK 3 + inc a11 + cmpi 17,a11 + jrlt #lp + + DIE + +#******************************* +* Smoke trail puff (Process) +* A10=*wrestler proc + +smokepuff + + move *a10(OBJ_ZPOSINT),a3 + movk 3,a0 + calla RNDRNG0 +; subk 2,a0 + add a0,a3 ;-2 to 1 +; addk 16,a3 + ori 1000h,a3 + + movk 3,a0 + calla RNDRNG0 + sll 5,a0 ;*32 + addi smoke_t,a0 + move *a0,a9,L + + movi 30000h,a0 + calla RNDRNG0 + subi 18000h,a0 + move a0,a6 + +; movi [1,8000h],a6 + + movi 20000h,a0 + calla RNDRNG0 + addi 6000h,a0 + neg a0 + move a0,a7 +; movi [-2,0],a7 + + move a11,a14 +; sll 4,a14 +; addi #x_tbl,a14 +; move *a14,a1 + + + movk 30,a0 + calla RNDRNG0 + subk 15,a0 + move a0,a1 + + move *a10(OBJ_XPOSINT),a0 + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip +; neg a6 + neg a1 +#no_flip + + add a1,a0 + sll 16,a0 ;X + + move a11,a14 + sll 4,a14 + addi #y_tbl,a14 + move *a14,a14 + + movi Y_SCALE_MULTIPLIER,a2 + move *a10(OBJ_ZPOSINT),a1 + mpyu a2,a1 + move *a10(OBJ_YPOSINT),a2 + sub a14,a2 + sll 16,a2 + sub a2,a1 + + movi CLDB1ORNG,a2 + movi DMAWNZ|M_3D|M_NOCOLL,a4 + movi CLSDEAD,a5 + + calla BEGINOBJ + + SLEEPK 3 + + jauc FRQDELDIE + + .ref smoke_t + +;#x_tbl .word -14,-3,10,25,30,31,30,39,26,-3,17,32,53,54,41,32,45 +#y_tbl .word -82,-85,-88,-91,-94,-97,-100,-83,-85,-87,-89,-91,-93,-95 + .word -97,-99,-99 + +dnk_clever_anim + .WORD ANI_XFLIP + WL 6,D4SQ4A+FR1 + WL 6,D4SQ4A+FR2 + WL 6,D4SQ4A+FR3 + WL ANI_CODE,CREATE_WATER + WL 5,D4SQ4A+FR3 + WL 6,D4SQ4A+FR2 + WL 6,D4SQ4A+FR1 + .word ANI_END + +lex_clever_anim + WL 6,L4SW5A+FR2 + WL 6,L4SW5A+FR3 + WL 6,L4SW5A+FR4 + WL 6,L4SW5A+FR5 + WL 6,L4SW5A+FR6 + WL 6,L4SW5A+FR7 + WL 6,L4SW5A+FR8 + WL 6,L4SW5A+FR9 + WL 6,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 2,L4SW5A+FR9 + WL 2,L4SW5A+FR10 + WL 6,L4SW5A+FR9 + WL 6,L4SW5A+FR8 + WL 6,L4SW5A+FR7 + WL 6,L4SW5A+FR6 + WL 6,L4SW5A+FR5 + WL 6,L4SW5A+FR4 + WL 6,L4SW5A+FR3 + WL 6,L4SW5A+FR2 + + .word ANI_END + +hrt_taunt4_anim + WL 5,H4SL4C+FR1 + WL 5,H4SL4C+FR2 + WL 5,H4SL4C+FR3 + +BRT_TAUNT_LOOP + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR6 + WL 5,H4SL4C+FR5 + WL 5,H4SL4C+FR4 + WL 5,H4SL4C+FR7 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR9 + WL 5,H4SL4C+FR8 + WL 5,H4SL4C+FR7 + + WL ANI_GOTO,BRT_TAUNT_LOOP + +rzr_taunt4_anim + WL 4,R4CO4A+FR1 + WL 4,R4CO4A+FR2 + WL 4,R4CO4A+FR3 + WL 4,R4CO4A+FR4 +RZR_TAUNT_LOOP + WL 15,R4CO4A+FR5 + WL 4,R4CO4A+FR6 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR8 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR6 + WL 4,R4CO4A+FR5 + WL 4,R4CO4A+FR6 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR8 + WL 4,R4CO4A+FR7 + WL 4,R4CO4A+FR6 + + WL ANI_GOTO,RZR_TAUNT_LOOP + +und_taunt4_anim + WL 6,U4CO4B+FR1 + WL 6,U4CO4B+FR2 +UND_TAUNT_LOOP + WL 15,U4CO4B+FR3 + WL 6,U4CO4B+FR4 + WL 6,U4CO4B+FR5 + WL 6,U4CO4B+FR6 + WL 6,U4CO4B+FR7 + WL 6,U4CO4B+FR8 + WL 6,U4CO4B+FR7 + WL 6,U4CO4B+FR6 + WL 6,U4CO4B+FR5 + WL 6,U4CO4B+FR4 + WL ANI_GOTO,UND_TAUNT_LOOP + +yok_taunt4_anim + WL 4,Y4CO4D+FR1 + WL 4,Y4CO4D+FR2 +YOK_TAUNT_LOOP + WL 5,Y4CO4D+FR3 + WL 5,Y4CO4D+FR4 + WL 5,Y4CO4D+FR5 + WL 5,Y4CO4D+FR6 + WL 5,Y4CO4D+FR7 + WL 5,Y4CO4D+FR8 + WL ANI_GOTO,YOK_TAUNT_LOOP + +shn_taunt4_anim + WL 4,S4CO4A+FR1 + WL 4,S4CO4A+FR2 + WL 4,S4CO4A+FR3 +SHN_TAUNT_LOOP + WL 4,S4CO4A+FR4 + WL 4,S4CO4A+FR5 + WL 4,S4CO4A+FR6 + WL 4,S4CO4A+FR7 + WL 4,S4CO4A+FR8 + WL 4,S4CO4A+FR7 + WL 4,S4CO4A+FR6 + WL 4,S4CO4A+FR5 + WL 4,S4CO4A+FR4 + WL 4,S4CO4A+FR3 + WL 4,S4CO4A+FR2 + WL 4,S4CO4A+FR3 + WL ANI_GOTO,SHN_TAUNT_LOOP + +bam_taunt4_anim +; WL ANI_CODE,BAM_TAUNT_SOUND +bam_taunt4_anim_no_fx + WL 4,B4SW4B+FR3 + WL 4,B4SW4B+FR4 + WL 4,B4SW4B+FR5 + WL 4,B4SW4B+FR6 + WL 4,B4SW4B+FR7 + WL 4,B4SW4B+FR8 + WL ANI_GOTO,bam_taunt4_anim_no_fx + +;BAM_TAUNT_SOUND +; movi 42h,a0 +; CALLA triple_sound +; RETS + +dnk_taunt4_anim + WL 5,D4CO4A+FR1 + WL 5,D4CO4A+FR2 + WL 5,D4CO4A+FR3 + WL 5,D4CO4A+FR4 + WL 5,D4CO4A+FR5 + WL 5,D4CO4A+FR6 +DNK_TAUNT_LOOP + WL 5,D4CO4A+FR5 + WL 5,D4CO4A+FR4 + WL 5,D4CO4A+FR3 + WL 5,D4CO4A+FR4 + WL 5,D4CO4A+FR5 + WL 5,D4CO4A+FR6 + WL ANI_GOTO,DNK_TAUNT_LOOP + +lex_taunt4_anim +LEX_TAUNT_LOOP + WL 5,L4CO4Z+FR1 + WL 5,L4CO4Z+FR2 + WL 5,L4CO4Z+FR3 + WL 5,L4CO4Z+FR4 + WL 5,L4CO4Z+FR5 + WL 5,L4CO4Z+FR6 + WL 5,L4CO4Z+FR7 + WL 5,L4CO4Z+FR8 + WL 5,L4CO4Z+FR9 + + WL 5,L4CO4Z+FR8 + WL 5,L4CO4Z+FR7 + WL 5,L4CO4Z+FR6 + WL 5,L4CO4Z+FR5 + WL 5,L4CO4Z+FR4 + WL 5,L4CO4Z+FR3 + WL 5,L4CO4Z+FR2 + WL ANI_GOTO,LEX_TAUNT_LOOP + + +CREATE_FUJI + MMTM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + CLR A8 + MOVE @NUM_OPPS,A1 + DEC A1 + JRNZ NO_CREATE_FUJI + + MOVE *A13(OBJ_XPOS),A0,L + ADDI [30,0],A0 + MOVE A0,*A13(OBJ_XPOS),L + SUBI [80,0],A0 + MOVI [240,0],A1 + MOVE *A13(OBJ_ZPOS),A3,L + SRL 16,A3 + DEC A3 + ORI 1000H,A3 + MOVI shadow,A2 + MOVI DMAWNZ,A4 + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + + MOVE *A13(OBJ_XPOS),A0,L + SUBI [80,0],A0 + MOVI [240,0],A1 + MOVE *A13(OBJ_ZPOS),A3,L + SRL 16,A3 + ORI 1000H,A3 + + MOVI FUJI01,A2 + + movi DMAWNZ,a4 ;DMA flags + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ +NO_CREATE_FUJI + MOVE A8,@FUJI_OBJ,L + MMFM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + RETS + +DO_FUJI + MMTM SP,A1,A7,A8,A9 + MOVE @FUJI_OBJ,A8,L + JRZ MORE_THAN_ONE_OPP + MOVI FUJI_ANIM,A9 + CREATE0 ANIMATE_OBJ +MORE_THAN_ONE_OPP + MMFM SP,A1,A7,A8,A9 + RETS + +ANIMATE_OBJ + MOVE A9,A1 + CALLA setup_back_anim + JSRP ANIM_CROWD + DIE + +FUJI_ANIM + WL 7,FUJI01 + WL 7,FUJI02 + WL 7,FUJI03 + WL 60,FUJI04 + WL 7,FUJI03 + WL 7,FUJI02 + WL 7,FUJI01 + .WORD CANI_END + + SUBR CREATE_URN2 + MMTM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + MOVE *A13(OBJ_XPOS),A0,L + MOVI [026H,0],A1 + MOVE *A13(OBJ_CONTROL),A3 + ANDI M_FLIPH,A3 + JRNZ NO_NEG_X_OFF + NEG A1 +NO_NEG_X_OFF + ADD A1,A0 + movi Y_SCALE_MULTIPLIER,a3 + move *a13(OBJ_ZPOSINT),a1 + mpyu a3,a1 + SUBI [0C0H,0],A1 + JRUC RE_ENTER_URN_CREATE + + SUBRP CREATE_URN + MMTM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + MOVE *A13(OBJ_XPOS),A0,L + movi Y_SCALE_MULTIPLIER,a3 + move *a13(OBJ_ZPOSINT),a1 + mpyu a3,a1 + SUBI [5aH,0],A1 +RE_ENTER_URN_CREATE + MOVE *A13(OBJ_ZPOS),A3,L + SRL 16,A3 + INC A3 + ORI 1000H,A3 + MOVI BLUURN01,A2 + MOVI DMAWNZ,A4 + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + MOVI URN_ANIM,A9 + CREATE0 ANIMATE_OBJ + MMFM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + RETS + +URN_SOUND + movi 40h,a0 + CALLA triple_sound + RETS + +URN_ANIM + WL CANI_CODE,URN_SOUND + WL 6,BLUURN01 + WL 6,BLUURN02 + WL 6,BLUURN03 + WL 6,BLUURN04 + WL 6,BLUURN05 + .WORD CANI_END + +CREATE_WATER + MMTM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + MOVE *A13(OBJ_XPOS),A0,L + SUBI [10,0],A0 + movi Y_SCALE_MULTIPLIER,a3 + move *a13(OBJ_ZPOSINT),a1 + mpyu a3,a1 + SUBI [58H,0],A1 + + MOVE *A13(OBJ_ZPOS),A3,L + SRL 16,A3 + INC A3 + ORI 1000H,A3 + MOVI WATER01,A2 + MOVI DMAWNZ,A4 + CLR A5 + CLR A6 + CLR A7 + CALLA BEGINOBJ + MOVI WATER_ANIM,A9 + CREATE0 ANIMATE_OBJ + MOVE *A13(PLYRNUM),*A0(PDATA+UNUSED) + MMFM SP,A0,A1,A2,A4,A5,A6,A7,A8,A9,A10,A11,A14 + RETS + +WATER_ANIM + WL CANI_CODE,WATER_SOUND + WL 4,WATER01 + WL 4,WATER02 + WL CANI_CODE,START_WATER + WL 15,WATER03 + WL CANI_CODE,STOP_WATER + WL 4,WATER04 + WL 4,WATER05 + WL 4,WATER06 + WL 4,WATER07 + WL CANI_CODE,KILL_WATER + .WORD CANI_END + +KILL_WATER + movi -400,a1 + MOVE A1,*A8(OXPOS) + rets + +START_WATER + MOVI WATER_PID,A1 + MOVE *A13(PDATA+UNUSED),A2 + DEC A2 + ADD A2,A1 + MOVI MOVE_WATER,A7 + MOVE *A8(OXVAL),A9,L + SUBI [240H,0],A9 + MOVI 15,A5 + DIVS A5,A9 + JAUC GETPRC + +MOVE_WATER + MOVE *A8(OXVAL),A1,L + SUB A9,A1 + MOVE A1,*A8(OXVAL),L + SLOOP 1,MOVE_WATER + +STOP_WATER + MOVI WATER_PID,A0 + MOVE *A13(PDATA+UNUSED),A2 + DEC A2 + ADD A2,A0 + MOVE A0,A1 + CALLA KILALL + RETS + +WATER_SOUND + movi 3fh,a0 + CALLA triple_sound + RETS + + .if 0 +;JOY1 DOWN + PUNCH + BLOCK + SUPER PUNCH +GETUP_METER_POWER1 .EQU 0008DH +;JOY2 DOWN + PUNCH + BLOCK + SUPER PUNCH +GETUP_METER_POWER2 .EQU 08D00H +;JOY1 UP + PUNCH + BLOCK + SUPER PUNCH +NAMES_POWER1_B .EQU 0008EH +;JOY2 UP + PUNCH + BLOCK + SUPER PUNCH +NAMES_POWER2_B .EQU 08E00H +;JOY1 LEFT + PUNCH + BLOCK + JOY2 LEFT + PUNCH + BLOCK +BONUS_POWER_B .EQU 0CBCBH + +LOOK_FOR_POWERUPS + CLR A2 + MOVE A2,@NAMES_POWER1 + MOVE A2,@NAMES_POWER2 + + .if DEBUG + movk 1,a2 + .endif + MOVE A2,@GETUP_POWER + + MOVK 16,A2 + MOVE A2,@BONUS_POWER + + MOVE @SWITCH,A0 + MOVE A0,A1 + ANDI 0FFH,A1 + CMPI GETUP_METER_POWER1,A1 + JRNE NO_GETUP_P1 + MOVK 1,A2 + MOVE A2,@GETUP_POWER +NO_GETUP_P1 + MOVE A0,A1 + ANDI 0FF00H,A1 + CMPI GETUP_METER_POWER2,A1 + JRNE NO_GETUP_P2 + MOVK 1,A2 + MOVE A2,@GETUP_POWER +NO_GETUP_P2 + MOVE A0,A1 + ANDI 0FFH,A1 + CMPI NAMES_POWER1_B,A1 + JRNE NO_NAMES_P1 + MOVK 1,A2 + MOVE A2,@NAMES_POWER1 +NO_NAMES_P1 + MOVE A0,A1 + ANDI 0FF00H,A1 + CMPI NAMES_POWER2_B,A1 + JRNE NO_NAMES_P2 + MOVK 1,A2 + MOVE A2,@NAMES_POWER2 +NO_NAMES_P2 + MOVE @PSTATUS,A2 + CMPI 3,A2 + JRNE NO_ALLOW_BONUS_POWER + MOVE A0,A1 + SLL 16,A1 + SRL 16,A1 + CMPI BONUS_POWER_B,A1 + JRNE NO_ALLOW_BONUS_POWER + MOVK 1,A2 + MOVE A2,@BONUS_POWER +NO_ALLOW_BONUS_POWER + RETS + + .endif + + +BLOCK_BUTT .EQU 20H + +LOOK_FOR_PALS + CLR A10 + MOVE A10,@WHICH_SKIRT_PAL + MOVI P_DELAY+10,A8 + move @_switch_addr,a0,L + move *a0,a0 + ANDI BLOCK_BUTT,A0 + JRZ CHECK_BUT_UP + +CHECK_BUT_DOWN + SLEEPK 1 + DEC A8 + move @_switch_addr,a0,L + move *a0,a0 + ANDI BLOCK_BUTT,A0 + JRZ CHECK_BUT_UP_ADD + MOVE A8,A8 + JRP CHECK_BUT_DOWN + JRUC EXIT_LOOK_FOR_PALS + +CHECK_BUT_UP_ADD + INC A10 +CHECK_BUT_UP + SLEEPK 1 + DEC A8 + move @_switch_addr,a0,L + move *a0,a0 + ANDI BLOCK_BUTT,A0 + JRNZ CHECK_BUT_DOWN + MOVE A8,A8 + JRP CHECK_BUT_UP +EXIT_LOOK_FOR_PALS + ANDI 7,A10 + SLL 4,A10 + ADDI WHICH_SKIRT_PALLETE,A10 + MOVE *A10,A0 + MOVE A0,@WHICH_SKIRT_PAL + DIE + +WHICH_SKIRT_PALLETE + .WORD 0,0,0 + .WORD 5,7,2,5,1 + + +#***************************************************************************** +* +* a1 is a progression table entry. scramble it. +* a10 is the pointer to the current table entry, which should be held in a1. +* +* Rules: +* - On the first 1v2 match, don't choose a drone that matches player. +* - Ditto for first 1v3 match. (exception: the 1 in 32 doinks can +* happen even if the human is doink.) +* - On any 1v2+ match, don't choose any drone that was used as a drone in +* the previous fight. +* - On the final battle, generate a unique lineup, and put the first three +* guys in as starters. Then initialize all the special data for that match. +* + + SUBR scramble_table_entry + + PUSH a0,a2,a3,a4,a5,a6,a7,a8 + + ;figure out who our human is, and put his wrestlernum in a6 + ;if we're in attract mode (PSTATUS==0), look in index1. + move @PSTATUS,a14 + move @index2,a6 + btst 1,a14 + jrnz #pset + move @index1,a6 +#pset + + ;put the count in a2 + move a1,a2 + srl 24,a2 + cmpi 3,a2 + jrne #begin + + ;it's three guys. is it the final match? + ; (we can't use is_final_match because CURRENT_LADDER + ; hasn't been incremented yet.) + move @belt_type,a14 + jrz #notfin + + move @CURRENT_LADDER,a14,L + cmpi LADDER+((FINAL_BATTLE-2)*20h),a14 + jreq #final_match + +#notfin ;no. one time in 32, make it three doinks. + move @PCNT,a14 + sll 32-5,a14 + srl 32-5,a14 + jrnz #begin + + movi 03060606h,a1 + jruc #done + +#begin ;first, figure out which wrestlers are excluded. Use the low byte + ;of a7 for this. Set the bits corresponding to excluded wrestlers. + clr a7 + + ;first, exclude the human if this is the first 1v2 or 1v3 + movk 1,a14 + sll a6,a14 + or a14,a7 + + ;now exclude the guys from the last match + ; but not if this is the first match! + cmpi LADDER,a10 + jreq #count + move *a10(-20h),a0,L ;previous lineup + move a0,a1 + srl 24,a1 ;wrestler count +#lp0 movk 1,a14 + rl a0,a14 ;note that rl only looks at low 5 bits... + or a14,a7 + srl 8,a0 + dsj a1,#lp0 + + ;now count excluded wrestlers. We couldn't do this before because + ; we weren't checking for redundant exclusions. now just count + ; set bits in a7. Store the count in a8 +#count move a7,a14 + clr a8 + movk 8,a0 +#lp1 srl 1,a14 + jrnc #nxt1 + inc a8 +#nxt1 dsj a0,#lp1 + + ;commence scramble - begin by getting three random guys + ; Since a8 wrestlers are excluded, we're choosing from a field of + ; 8 - a8 wrestlers. + + ;to make repeats less likely, 'toss back' the first match on any + ; previous wrestlers. + + ;first + callr get_rnd_wrestler + move a0,a3 + + ;second + callr get_rnd_wrestler + move a0,a4 + cmp a4,a3 + jrne #ok2 + callr get_rnd_wrestler + move a0,a4 + +#ok2 ;third + callr get_rnd_wrestler + move a0,a5 + cmp a3,a5 + jreq #repick + cmp a4,a5 + jrne #ok3 +#repick callr get_rnd_wrestler + move a0,a5 +#ok3 + + ;lump it all together + + sll 24,a2 + sll 16,a3 + sll 8,a4 + + move a2,a1 + or a3,a1 + or a4,a1 + or a5,a1 + + ;leave the third guy in there even if there's only supposed to be + ; two. It can't matter since 0 is a valid WRESTLERNUM anyway. + +#done PULL a0,a2,a3,a4,a5,a6,a7,a8 + rets + +#final_match + ;first, generate a new lineup + callr get_final_lineup + + ;now construct our starting lineupt from the first three guys. + movi FINAL_BATTLE_LINEUP,a0 + move *a0,a1,L + andi 00FFFFFFh,a1 ;clear fourth guy + ori 03000000h,a1 ;set count + + ;set FINAL_PTR to the next guy to fight. + addi 3*8,a0 + move a0,@FINAL_PTR,L + + jruc #done + +********** +* Get a random wrestler among those available. +* >a7 = excluded wrestler mask >a8 = excluded wrestler count +* 1 + .ref rzr_finish2_move + .endif + .endif + +;animation sequences + + .ref rzr_run2_anim + + .ref start_run_anim + + .ref rzr_3_head_hold2_anim + .ref rzr_3_head_hold_anim + + .ref rzr_stand2_anim,rzr_stand8_anim + .ref rzr_stand4_anim,rzr_stand6_anim + .ref rzr_torso2_anim,rzr_torso8_anim + .ref rzr_torso4_anim,rzr_torso6_anim + + .ref rzr_2_to_4_turn_anim,rzr_8_to_6_turn_anim ;stand + .ref rzr_4_to_2_turn_anim,rzr_6_to_8_turn_anim + .ref rzr_4_to_6_turn_anim,rzr_6_to_4_turn_anim + .ref rzr_2_to_8_turn_anim,rzr_8_to_2_turn_anim + .ref rzr_4_to_8_turn_anim,rzr_6_to_2_turn_anim + .ref rzr_2_to_6_turn_anim,rzr_8_to_4_turn_anim + + .ref rzr_2_to_4_turn2_anim,rzr_8_to_6_turn2_anim ;torso + .ref rzr_4_to_2_turn2_anim,rzr_6_to_8_turn2_anim + .ref rzr_4_to_6_turn2_anim,rzr_6_to_4_turn2_anim + .ref rzr_2_to_8_turn2_anim,rzr_8_to_2_turn2_anim + .ref rzr_4_to_8_turn2_anim,rzr_6_to_2_turn2_anim + .ref rzr_2_to_6_turn2_anim,rzr_8_to_4_turn2_anim + + .ref rzr_walk1_f2_anim,rzr_walk2_f2_anim,rzr_walk4_f2_anim + .ref rzr_walk5_f2_anim,rzr_walk6_f2_anim,rzr_walk8_f2_anim + + .ref rzr_walk1_f4_anim,rzr_walk2_f4_anim,rzr_walk4_f4_anim + .ref rzr_3_head_held_stand_anim + .ref rzr_walk5_f4_anim,rzr_walk6_f4_anim,rzr_walk8_f4_anim + + .ref rzr_2_punch_anim,rzr_4_punch_anim + .ref rzr_2_pin_anim,rzr_4_pin_anim + .ref rzr_4_uprcut_anim + .ref rzr_2_butt_anim,rzr_4_butt_anim + .ref rzr_2_kick_anim,rzr_4_kick_anim + .ref rzr_2_super_kick_anim,rzr_4_super_kick_anim + .ref rzr_2_knee_anim,rzr_4_knee_anim + .ref rzr_flying_kick_anim + .ref rzr_2_ground_punch_anim,rzr_4_ground_punch_anim + .ref rzr_2_stomp_anim,rzr_4_stomp_anim + .ref rzr_2_grabfling_anim,rzr_4_grabfling_anim + .ref rzr_2_hair_pickup_anim,rzr_4_hair_pickup_anim + + .ref rzr_4_push_anim + .ref rzr_4_bigboot_anim + .ref rzr_climb_down_anim,rzr_climb_up_anim + + .ref rzr_2_block_anim,rzr_4_block_anim + .ref rzr_2_hiptoss_anim,rzr_4_hiptoss_anim + .ref rzr_2_hiptoss2_anim,rzr_4_hiptoss2_anim + .ref rzr_flying_elbow_anim + .ref rzr_3_uslash_anim,rzr_3_dslash_anim + .ref rzr_dslashes_to_head_anim,rzr_dslash_to_head_anim + .ref rzr_uslashes_to_head_anim,rzr_uslash_to_head_anim + .ref rzr_rugshake_anim + .ref rzr_tbukl_elbow_anim,rzr_3_pile_driver_anim + .ref rzr_repeat_slash_anim + .ref rzr_4_knee_fall_anim + + .ref rzr_combo_punch_anim,rzr_combo_kick_anim + + .ref rzr_2_raise_arm_anim,rzr_4_raise_arm_anim + +; .ref rzr_pkup_chair_anim + .ref rzr_rugshake2_anim + .ref rzr_fall_back_anim,rzr_razors_edge_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +razor_secret_moves + + .long #charge_flying_kick ;must have this one + .long #neck_grab + .long #grab_fling + .long #hip_toss + .long #grab_fling2 + .long #hip_toss2 + .long #down_slash + .long 0 + +****************************************************************************** +* +* SPECIAL MOVE PROCESSES - Secret moves +* +;a8=process of wrestler + + SUBR rzr_smove_table + .long rzr_charge_slashes + .long rzr_hdhold_pile + .long rzr_hdhold_combo1 + .long rzr_hdhold_edge + .long rzr_hdhold_rug + .long rzr_grab_toss_air + .long rzr_hdhold_combo2 +; REFLONG std_hdhold_anti_combo + .long std_walk_fast + .long std_taunt + .long rzr_sliding_rug + + .if NUM_RAZOR_FINISHES + .long rzr_finish_move1 + .endif + .if NUM_RAZOR_FINISHES > 1 + .long rzr_finish_move2 + .endif + .long 0 + + +******************************************************************************* + +#charge_flying_kick + move *a13(BUT_VAL_UP),a0 + btst PLAYER_SKICK_BIT,a0 + jrz #no_kick + + move *a13(PLYRNUM),a0 + .ref get_powerk_dtime + calla get_powerk_dtime + cmpi 85,a0 ;> min? + jrlt #no_kick + + callr #scrt_kick + setc + rets + +#no_kick + clrc + rets + +#scrt_kick + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_HEADHOLD,a0 + jrz #out + move *a13(GETUP_TIME),a0 + jrnz #out + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + .ref ck_ignore + calla ck_ignore + jrc #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + + SETMODE INAIR + + movk 1,a0 ;Ensure leap at + move a0,*a8(OBJ_XVEL),L + + movi rzr_flying_kick_anim,a0 + calla change_anim1a + + WRSND W_RAZOR,FLYKICK_T1,FLYKICK_T2 + + rets + + +****************************************************************************** +#neck_grab + .word B_SPUNCH, J_REAL_LR | J_TOWARD | J_AWAY | J_UP + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 30 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + move *a13(LAST_HEADHOLD),a14,L + move @PCNT,a0,L + sub a14,a0 + cmpi 2*60,a0 + jrge #ok2 + +;This head grab is too close (in terms of time) to most recent grab + .ref rzr_3_fake_hold_anim + movi rzr_3_fake_hold_anim,a0 + calla change_anim1a + rets + +#ok2 + move *a13(CLOSEST_XDIST),a1 + cmpi 85,a1 + jrgt #std_grab + + movi rzr_3_head_hold2_anim,a0 + calla change_anim1a + rets + +#std_grab + movi rzr_3_head_hold_anim,a0 + calla change_anim1a + rets + +****************************************************************************** +#down_slash + .word B_PUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_DOWN|J_TOWARD, J_REAL_LR + .word J_DOWN, J_REAL_LR + .word 8000h | 50 ;max + .long #dslash + +#dslash + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + ;check opp mode + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jreq #out + + ;don't do it unless you're in mode_normal, running, or headhold + move *a13(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + jreq #slash + cmpi MODE_RUNNING,a0 + jreq #runslash + cmpi MODE_HEADHOLD,a0 + jreq #slash + jruc #z + +#runslash + ;don't interrupt an OCRUN + move *a13(GETUP_TIME),a14 + jrnz #z +#slash + WRSND W_RAZOR,KICK_T2 + movi rzr_3_dslash_anim,a0 + calla change_anim1a +#z rets + +******************************************************************************* + +#grab_fling2 + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#hip_toss2 + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#scrt_grabfling2 + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrz #yes + rets + +****************************************************************************** +#grab_fling +; .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_grabfling + + .word B_SPUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_grabfling + +#scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + FACE24 rzr,hiptoss_anim + calla change_anim1a + + WRSND W_RAZOR,GRABFLING_T1,PUNCH_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + +; move *a13(LAST_FLING_ATTEMPT),a14,L +; move @PCNT,a0,L +; sub a14,a0 +; cmpi 3*60,a0 +; jrge #ok2a +; +;;This head grab is too close (in terms of time) to most recent grab +; movi rzr_3_uslash_anim,a0 +; calla change_anim1a +; +; WRSND W_RAZOR,SPUNCH_T1,SPUNCH_T2 +; rets +; +;#ok2a +; move @PCNT,a14,L ;use 32-bit PCNT! +; move a14,*a13(LAST_FLING_ATTEMPT),L + + FACE24 rzr,grabfling_anim + calla change_anim1a + + WRSND W_RAZOR,GRABFLING_T1,PUNCH_T2 +#out rets + +****************************************************************************** + +#hip_toss +; .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_hiptoss + + .word B_PUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_hiptoss + + +#scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out +; cmpi MODE_BLOCK,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit + + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #out + +#doit + FACE24 rzr,hiptoss_anim + calla change_anim1a + + WRSND W_RAZOR,GRABFLING_T1,PUNCH_T2 + rets + + .if NUM_RAZOR_FINISHES +#****************************************************************************** + SUBRP rzr_finish_move1 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_DOWN,0,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN B_PUNCH,J_ALL,#reset + + movi rzr_finish1_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + + .if NUM_RAZOR_FINISHES > 1 +#****************************************************************************** + SUBRP rzr_finish_move2 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_UP,0,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN B_SPUNCH,J_ALL,#reset + + movi rzr_finish2_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + +#***************************************************************************** + +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +#CHARGE_TIME .equ SM_USRW1 + +rzr_charge_slashes + +#start_over + clr a14 + move a14,*a13(#CHARGE_TIME),W +#loop1 + SLEEPK 1 + + move *a13(#CHARGE_TIME),a14,W + inc a14 + move a14,*a13(#CHARGE_TIME),W + + move *a8(BUT_VAL_CUR),a0 + btst PLAYER_PUNCH_BIT,a0 + jrz #p1 + + jruc #loop1 + +#p1 + +;no longer holding button + move *a13(#CHARGE_TIME),a14 + cmpi 100,a14 + jrlt #start_over + +;Success! Check for the UNINT bit, then queue it up. + move *a8(ANIMODE),a14 + btst MODE_UNINT_BIT,a14 + jrnz #start_over + + move *a8(GETUP_TIME),a0 + jrnz #start_over + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #start_over + cmpi MODE_HEADHOLD,a0 + jrz #start_over + cmpi MODE_ONGROUND,a0 + jrz #start_over + cmpi MODE_DEAD,a0 + jrz #start_over + + movi rzr_repeat_slash_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_RAZOR,KICK_T2 + + jruc #start_over + +#******************************************************************************* + +rzr_sliding_rug + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #lp0 + cmpi MODE_HEADHOLD,a0 + jrz #lp0 + cmpi MODE_ONGROUND,a0 + jrz #lp0 + cmpi MODE_DEAD,a0 + jrz #lp0 + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp0 + + move *a8(GETUP_TIME),a0 + jrnz #lp0 + + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 +; cmpi MODE_ONGROUND,a0 +; jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + +;Don't do it if opponent is behind you + SWAP a8,a13 + calla ck_ignore + jrnc #norm + SWAP a8,a13 + jruc #lp +#norm + SWAP a8,a13 + + WRSND W_RAZOR,GRABHOLD_T1,GRABHOLD_T2 + .ref rzr_sliding_rug_anim + movi rzr_sliding_rug_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** +rzr_hdhold_edge + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + calla DO_REVERSAL + calla DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movi 33,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi rzr_razors_edge_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_RAZOR,GRABHOLD_T1,GRABHOLD_T2 + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** +rzr_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + calla DO_REVERSAL + calla DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 7,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + movi rzr_3_pile_driver_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_RAZOR,GRABHOLD_T1,GRABHOLD_T2 + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** +rzr_hdhold_rug + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + calla DO_REVERSAL + calla DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 6,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi rzr_rugshake2_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** +rzr_hdhold_combo1 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#slam + CALLA FIND_AND_KILL_ENDLESS + movi rzr_combo_punch_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +******************************************************************************* + +#* +rzr_hdhold_combo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#slam + CALLA FIND_AND_KILL_ENDLESS + movi rzr_combo_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +rzr_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jreq #lp0 + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 +;Don't do it when he is on ground + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + CALLA FIND_AND_KILL_ENDLESS + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 68h,a0 + jrgt #lp + + FACE24 rzr,hiptoss_anim + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_RAZOR,GRABFLING_T1,PUNCH_T2 + + SLEEPK 20 + jruc #lp + +#doit2 + FACE24 rzr,hiptoss2_anim + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_RAZOR,GRABFLING_T1,PUNCH_T2 + + SLEEPK 20 + + jruc #lp + + +;#****************************************************************************** +;rzr_hdhold_anti_combo +; +;#TIMEOUT .equ 80 +; +;#lp0 +; SLEEPK 1 +;#lp +;;Is my opponent in combo mode? +;; move *a8(IMMOBILIZE_TIME),a14 +;; jrz #lp0 +;; move *a8(CLOSEST_NUM),a0 +;; X32 a0 +;; addi process_ptrs,a0 +;; move *a0,a0,L +;; move *a0(COMBO_COUNT),a0 +;; jrz #lp0 +; +; clr a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +; movi #TIMEOUT,a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +;;Is my opponent in combo mode? +; move *a8(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(COMBO_COUNT),a0 +; jrz #lp0 +; +; move *a8(ANTI_COMBO_TIME),a0 ;Time stamp +; move @PCNT,a14 +; sub a0,a14 +; abs a14 +; cmpi 80,a14 +; jrge #lp0 +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +;;Combo breaker message! +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; clr a0 +; move a0,*a8(IMMOBILIZE_TIME) +; +; move *a8(WHOHITME),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) +; +; ;target WHOHITME +; SMRTTGT a8,WHOHITME +; +; CALLA FIND_AND_KILL_ENDLESS +; movi rzr_3_pile_driver_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; WRSND W_RAZOR,GRABFLING_T1,PUNCH_T2 +; +; SLEEPK 20 +; +; jruc #lp +; +#***************************************************************************** + + SUBR razor_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi rzr_stand4_anim,a0 + calla change_anim1a + + movi rzr_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE TAUNT_PID,do_taunt + PULL a10 + + rets + +#p1 + movi rzr_stand2_anim,a0 + calla change_anim1a + + movi rzr_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* RAZORS CONTROL CODE +* +* a13 = * razor process + + SUBR move_razor + + + movi razor_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 + REFLONG 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 + .long mode_puppet2 ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + REFLONG mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + REFLONG mode_choking ;25 + +#***************************************************************************** + +mode_normal ;0 + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(I_WILL_DIE),a0 + jrz #nope + move *a13(IMMOBILIZE_TIME),a0 + jrnz #nope +;Player has died amidst a combo... +;Knock me down. + movi rzr_fall_back_anim,a0 + calla change_anim1a + +;Zero health bar + movi -10,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + SETMODE DEAD + + clr a0 + move a0,*a13(I_WILL_DIE) + + rets + +#nope +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + + ;if closest is a zombie, skip pin section. + calla get_opp_process + move *a0(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #opp_not_dead + + ;all opponents are dead. Check for pins/raisearms + + ;if we're attached to someone, don't interrupt it. + move *a13(ATTACH_PROC),a1,L + jrz #no_attch + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jreq #no_pin_yet +#no_attch + + ;if a teammate has pinned, raise yer arm. + calla ck_teammate_pin + jrc #raisearm + + ;nobody has pinned. if we're outside or all our opponents are + ; outside, do a raisearm. + calla raisearm_check + jrc #raisearm + + ;we're inside with a pinnable opponent. any button pins. + move *a13(BUT_VAL_CUR),a0 + jrz #no_pin_yet + + ;we have a press -- make sure opponent is on the ground + calla can_pin + jrnc #opp_notgnd + + ;opponent is on the ground. pin him. + FACE24 rzr,pin_anim + calla change_anim1a + + ;set the 'I did a pin' flag. + move *a13(STATUS_FLAGS),a14 + ori M_DID_PIN,a14 + move a14,*a13(STATUS_FLAGS) + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#raisearm + FACE24 rzr,raise_arm_anim + calla change_anim1a + calla set_raisearm_bit + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#too_far_to_pin +#opp_notgnd +#opp_not_dead +#no_pin_yet + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #immobilized + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 ;maybe have to action tables? + jrz #nblk ;1 for down transitions + callr #block ;& 1 for current buttons + jrc #nblk + clr a0 + move a0,*a13(ATTACK_TYPE) + rets +#nblk + move *a13(BUT_VAL_CUR),a0 + andi 011111b,a0 + cmpi PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,a0 + jrz #punchkick + + move *a13(BUT_VAL_DOWN),a0 + 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(STICK_VAL_CUR),a0 + move a0,*a13(MOVE_DIR) + calla climb_turnbuckle + jrnc #no_climb + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets + +#immobilized + clr a14 + move a14,*a13(MOVE_DIR) +#no_climb + calla execute_walk + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + + +************ +#z + rets + + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 44 45 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing hip toss +* +* onturnbkl | +* climbturnbkl normal punch +* + + JJXM_INIT + JJXM NORMAL, 44, 45,#punch_hdbutt,#punch_punch + JJXM DIZZY, 44, 45,#punch_hdbutt,#punch_punch + JJXM BLOCK, 44, 45,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 160,140,#punch_lbdrop,#punch_punch + JJXM RUNNING, 44, 45,#punch_hdbutt,#punch_punch + JJXM BOUNCING, 44, 45,#punch_hdbutt,#punch_punch + JJXM ONTURNBKL, #punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM INAIR, 44, 45,#punch_hdbutt,#punch_punch + JJXM ATTACHED, 44, 45,#punch_hdbutt,#punch_punch + JJXM DEAD, 160,140,#punch_lbdrop,#punch_punch + JJXM OPPOVERHEAD, 44, 45,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 44, 45,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 44, 45,#punch_hdbutt,#punch_punch + JJXM MASTER, 44, 45,#punch_hdbutt,#punch_punch + JJXM SLAVE, 44, 45,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 44, 45,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 44, 45,#punch_hdbutt,#punch_punch + JJXM CHOKEHOLD, 44, 45,#punch_hdbutt,#punch_punch + JJXM PUPPET, 44, 45,#punch_hdbutt,#punch_punch + JJXM PUPPET2, 44, 45,#punch_hdbutt,#punch_punch + JJXM INAIR2, 44, 45,#punch_hdbutt,#punch_punch + JJXM_END + +***** +#punch_punch +std_punch + + FACE24 rzr,punch_anim + calla change_anim1a + + WRSND W_RAZOR,PUNCH_T1,PUNCH_T2 + + rets + +***** +#punch_hdbutt + + FACE24 rzr,butt_anim + calla change_anim1a + + WRSND W_RAZOR,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbdrop + + FACE24 rzr,ground_punch_anim + calla change_anim1a + + WRSND W_RAZOR,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#block ;2 + +std_block + move @blocking_off,a0 + jrnz #no_blocking + + RND_AWARD a13,BLOCKS_AWD + + FACE24 rzr,block_anim + calla change_anim1a + + calla BLOCK_WOOSH + + clr a0 + move a0,*a13(BLOCK_TIME) + clrc + rets + +#no_blocking + setc + rets + + +************ +#super_punch ;4 +#graboh +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 85 45 headbutt or uppercut +* > blade slash +* +* onground < 120 120 elbow drop (or rug shake or hair pickup) +* onground > normal punch +* +* running | +* bouncing hip toss +* +* onturnbkl | +* climbturnbkl normal punch +* + + JJXM_INIT + JJXM NORMAL, 85, 45,#spunch_close,#spunch_far + JJXM DIZZY, 85, 45,#spunch_close,#spunch_far + JJXM BLOCK, 85, 45,#spunch_close,#spunch_far + JJXM ONGROUND, 160,140,#spunch_lbowdrop,std_punch + JJXM DEAD, 160,140,#spunch_lbowdrop,std_punch + JJXM RUNNING, #spunch_downslash + JJXM BOUNCING, #spunch_downslash + JJXM ONTURNBKL, 85, 45,#spunch_close,#spunch_far + JJXM CLIMBTURNBKL, 85, 45,#spunch_close,#spunch_far + JJXM INAIR, #spunch_downslash + JJXM ATTACHED, 85, 45,#spunch_close,#spunch_far + JJXM OPPOVERHEAD, 85, 45,#spunch_close,#spunch_far + JJXM WAITANIM, 85, 45,#spunch_close,#spunch_far + JJXM GRAPPLE, 85, 45,#spunch_close,#spunch_far + JJXM MASTER, 85, 45,#spunch_close,#spunch_far + JJXM SLAVE, 85, 45,#spunch_close,#spunch_far + JJXM HEADHOLD, 85, 45,#spunch_close,#spunch_far + JJXM HEADHELD, 85, 45,#spunch_close,#spunch_far + JJXM CHOKEHOLD, 85, 45,#spunch_close,#spunch_far + JJXM PUPPET, 85, 45,#spunch_close,#spunch_far + JJXM PUPPET2, 85, 45,#spunch_close,#spunch_far + JJXM INAIR2, #spunch_downslash + JJXM_END + + +#spunch_lbowdrop + +;If near opponents head, and facing down, do the hair grab! +;If near feet, go for the rugshake + + move *a13(CLOSEST_NUM),a3 + X32 a3 + + addi process_ptrs,a3 + move *a3,a3,L + move *a3(PLYRMODE),a2 + cmpi MODE_DEAD,a2 + jrz #no + move *a13(OBJ_XPOS),a1,L + move *a3(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 30h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a3(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #feet + +;At head! Do hair pickup. + + FACE24 rzr,hair_pickup_anim + calla change_anim1 + WRSND W_RAZOR,LBOWDROP_T1,LBOWDROP_T2 + rets + +#feet + cmpi 40h,a1 ;28 + jrlt #no + + ;smart-target the intended victim + move *a13(STATUS_FLAGS),a14 + ori M_SMART_ATTACK,a14 + move a14,*a13(STATUS_FLAGS) + move a3,*a13(SMART_TARGET),L + + movi rzr_rugshake_anim,a0 + calla change_anim1a + rets + +#no + FACE24 rzr,ground_punch_anim + calla change_anim1a + + WRSND W_RAZOR,LBOWDROP_T1,LBOWDROP_T2 + rets + +***** +#spunch_close + move *a13(STICK_VAL_CUR),a0 + btst MOVE_DOWN_BIT,a0 + jrnz #ck_up +; move *a13(NEW_FACING_DIR),a1 +; andi 0Ch,a1 +; cmp a0,a1 +; jrz #grab + + move *a13(CLOSEST_XDIST),a1 + cmpi 65,a1 + jrgt std_punch +; jruc #hdbutt +;#grab +; movi rzr_3_head_hold2_anim,a0 +; calla change_anim1a +; WRSND W_RAZOR,GRABHOLD_T1,GRABHOLD_T2 +; rets +; +;#hdbutt + .ref rzr_2_pummel_anim + .ref rzr_4_pummel_anim + + FACE24 rzr,pummel_anim + calla change_anim1 + WRSND W_RAZOR,HDBUTT_T1,HDBUTT_T2 + rets + +#ck_up +;Do uppercut + movi rzr_4_uprcut_anim,a0 + calla change_anim1a + WRSND W_RAZOR,UPRCUT_T1,UPRCUT_T2 + rets + +***** +#spunch_far + WRSND W_RAZOR,UPRCUT_T1,UPRCUT_T2 + movi rzr_3_uslash_anim,a0 + calla change_anim1a + rets + +***** +#spunch_downslash + WRSND W_RAZOR,UPRCUT_T1,UPRCUT_T2 + movi rzr_3_dslash_anim,a0 + calla change_anim1a + rets + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 70 50 knee +* > normal kick +* +* onground < 120 120 stomp +* onground > normal kick +* +* running | +* bouncing big boot +* +* onturnbkl | normal kick +* climbturnbkl normal kick +* + + JJXM_INIT + JJXM NORMAL, 70, 50,#kick_knee,#kick_kick + JJXM DIZZY, 70, 50,#kick_knee,#kick_kick + JJXM BLOCK, 70, 50,#kick_knee,#kick_kick + JJXM ONGROUND, 160,140,#kick_stomp,#kick_kick + JJXM RUNNING, 70, 50,#kick_knee,#kick_kick + JJXM BOUNCING, 70, 50,#kick_knee,#kick_kick + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM INAIR, 70, 50,#kick_knee,#kick_kick + JJXM ATTACHED, 70, 50,#kick_knee,#kick_kick + JJXM DEAD, 160,140,#kick_stomp,#kick_kick + JJXM OPPOVERHEAD, 70, 50,#kick_knee,#kick_kick + JJXM WAITANIM, 70, 50,#kick_knee,#kick_kick + JJXM GRAPPLE, 70, 50,#kick_knee,#kick_kick + JJXM MASTER, 70, 50,#kick_knee,#kick_kick + JJXM SLAVE, 70, 50,#kick_knee,#kick_kick + JJXM HEADHOLD, 70, 50,#kick_knee,#kick_kick + JJXM HEADHELD, 70, 50,#kick_knee,#kick_kick + JJXM CHOKEHOLD, 70, 50,#kick_knee,#kick_kick + JJXM PUPPET, 70, 50,#kick_knee,#kick_kick + JJXM PUPPET2, 70, 50,#kick_knee,#kick_kick + JJXM INAIR2, #kick_TB + JJXM_END + +***** +#kick_TB + .ref rzr_kick_TB_anim + movi rzr_kick_TB_anim,a0 + calla change_anim1a + + WRSND W_RAZOR,KICK_T1,KICK_T2 + rets + +***** +#kick_kick +std_kick + + FACE24 rzr,kick_anim + calla change_anim1a + + WRSND W_RAZOR,KICK_T1,KICK_T2 + rets + +***** +#kick_knee +std_knee + + FACE24 rzr,knee_anim + calla change_anim1a + + WRSND W_RAZOR,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp + + FACE24 rzr,stomp_anim + calla change_anim1a + + WRSND W_RAZOR,KICK_T1,KICK_T2 + rets + + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 70 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 114 160 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 70 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 70, 60,#skick_special,#skick_kick ;0 + JJXM RUNNING, #skick_bigboot ;1 + JJXM INAIR, 70, 60,#skick_special,#skick_kick ;2 + JJXM ATTACHED, 70, 60,#skick_special,#skick_kick ;3 + JJXM ONGROUND, 160,140,#skick_stomp,std_kick ;4 + JJXM BOUNCING, #skick_bigboot ;5 + JJXM ONTURNBKL, 70, 96,#skick_kick,std_kick ;6 + JJXM BLOCK, 70, 60,#skick_special,#skick_kick ;7 + JJXM DIZZY, 70, 60,#skick_special,#skick_kick ;8 + JJXM DEAD, 160,140,#skick_stomp,std_kick ;9 + JJXM OPPOVERHEAD, 70, 60,#skick_special,#skick_kick ;10 + JJXM CLIMBTURNBKL, 70, 96,#skick_kick,std_kick ;11 + JJXM WAITANIM, 70, 62,#skick_special,#skick_kick ;12 + JJXM GRAPPLE, 70, 62,#skick_special,#skick_kick ;13 + JJXM MASTER, 70, 62,#skick_special,#skick_kick ;14 + JJXM SLAVE, 70, 62,#skick_special,#skick_kick ;15 + JJXM HEADHOLD, 70, 62,#skick_special,#skick_kick ;16 + JJXM HEADHELD, std_kick + JJXM CHOKEHOLD, 70, 62,#skick_special,#skick_kick ;16 + JJXM PUPPET, 70, 62,#skick_special,#skick_kick ;20 + JJXM PUPPET2, 70, 62,#skick_special,#skick_kick ;20 + JJXM INAIR2, #kick_TB + JJXM_END + +***** +#skick_kick + FACE24 rzr,super_kick_anim + calla change_anim1a + + WRSND W_RAZOR,FLYKICK_T1,FLYKICK_T2 + rets + + +***** +#skick_special + + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrz #super_knee + + FACE24 rzr,knee_anim + calla change_anim1a + + WRSND W_RAZOR,KICK_T1,KICK_T2 + + rets + +#super_knee + movi rzr_4_knee_fall_anim,a0 + calla change_anim1 + + WRSND W_RAZOR,GRABHOLD_T1,GRABHOLD_T2 + rets + +***** +#skick_stomp + + FACE24 rzr,stomp_anim + calla change_anim1a + + WRSND W_RAZOR,KICK_T1,KICK_T2 + + rets + +***** +#skick_bigboot + + movi rzr_4_bigboot_anim,a0 ;***** + calla change_anim1a + + WRSND W_RAZOR,FLYKICK_T1,FLYKICK_T2 + + rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + + + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ RZR_XRUN +#ZDRIFT_VAL equ RZR_ZDRIFT + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move @hyper_speed_on,a14 + sll a14,a0 + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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(STICK_VAL_CUR),a0 + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#no_interrupt + + move *a13(STICK_VAL_CUR),a0 + 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 + + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 +#out_of_control + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #z ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + + +************ +#z + rets + + +************ +#block ;2 + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + + +************ +#punch ;1 +#super_punch ;4 +#punchkick +#graboh +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* +* onground|dead < 176 176 running stomp +* onground|dead > nothing +* +* all else flying kick +* + + JJXM_INIT + JJXM NORMAL, #punch_clothesline + JJXM BLOCK, #punch_clothesline + JJXM DIZZY, #punch_clothesline + JJXM ONGROUND, 176,176,#punch_flyelbow,#punch_rets + JJXM RUNNING, #punch_clothesline + JJXM BOUNCING, #punch_clothesline + JJXM ONTURNBKL, #punch_clothesline + JJXM CLIMBTURNBKL, #punch_clothesline + JJXM INAIR, #punch_clothesline + JJXM ATTACHED, #punch_clothesline + JJXM DEAD, 176,176,#punch_flyelbow,#punch_rets + JJXM OPPOVERHEAD, #punch_clothesline + JJXM WAITANIM, #punch_clothesline + JJXM GRAPPLE, #punch_clothesline + JJXM MASTER, #punch_clothesline + JJXM SLAVE, #punch_clothesline + JJXM HEADHOLD, #punch_clothesline + JJXM HEADHELD, #punch_clothesline + JJXM CHOKEHOLD, #punch_clothesline + JJXM PUPPET, #punch_clothesline + JJXM PUPPET2, #punch_clothesline + JJXM INAIR2, #punch_clothesline + JJXM_END + +***** +#punch_clothesline + + ;don't do it if you're running away from your opponent. + move *a13(FACING_DIR),a0 + move *a13(NEW_FACING_DIR),a1 + and a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + jrz #z + + clr a0 + move a0,*a13(RUN_TIME) + + SETMODE NORMAL + + move *a13(CLOSEST_XDIST),a1 + cmpi 70,a1 + jrlt #hdbutt + + movi rzr_3_uslash_anim,a0 + calla change_anim1a + + WRSND W_RAZOR,GRABHOLD_T1,GRABHOLD_T2 + + rets + +#hdbutt + + FACE24 rzr,butt_anim + calla change_anim1 + + WRSND W_RAZOR,HDBUTT_T1,HDBUTT_T2 + + rets + +#punch_flyelbow +std_flyelbow + movi rzr_flying_elbow_anim,a0 + calla change_anim1a + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + + WRSND W_RAZOR,FLYKICK_T1,FLYKICK_T2 + + rets + +#punch_rets + rets + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 running stomp +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flykick + JJXM BLOCK, #kick_flykick + JJXM DIZZY, #kick_flykick + JJXM ONGROUND, std_flyelbow + JJXM RUNNING, #kick_flykick + JJXM BOUNCING, #kick_flykick + JJXM ONTURNBKL, #kick_flykick + JJXM CLIMBTURNBKL, #kick_flykick + JJXM INAIR, #kick_flykick + JJXM ATTACHED, #kick_flykick + JJXM DEAD, std_flyelbow + JJXM OPPOVERHEAD, #kick_flykick + JJXM WAITANIM, #kick_flykick + JJXM GRAPPLE, #kick_flykick + JJXM MASTER, #kick_flykick + JJXM SLAVE, #kick_flykick + JJXM HEADHOLD, #kick_flykick + JJXM HEADHELD, #kick_flykick + JJXM CHOKEHOLD, #kick_flykick + JJXM PUPPET, #kick_flykick + JJXM PUPPET2, #kick_flykick + JJXM INAIR2, #kick_flykick + JJXM_END + +#kick_flykick +std_flykick + + calla ck_ignore + jrc #z + + movi rzr_flying_kick_anim,a0 + calla change_anim1a + + WRSND W_RAZOR,FLYKICK_T1,FLYKICK_T2 + + SETMODE INAIR + + rets + +#kick_rets + 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 + +#***************************************************************************** +mode_onground ;4 + + 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 rzr_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 + +; ;check unint +; move *a13(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #no_interrupt + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #no_climbdown + + movi rzr_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + +#no_interrupt + rets + +#no_climbdown + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #z ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + +************ +#z + rets + +************ +#punch ;1 +#block ;2 +#super_punch ;4 +#punchkick ;5 +#kick ;8 +#super_kick ;16 +#graboh ;20 + + SETMODE INAIR + + movi rzr_tbukl_elbow_anim,a0 + calla change_anim1a + + WRSND W_RAZOR,TURNDIVE_T1,TURNDIVE_T2 + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + + move *a13(BLOCK_TIME),a0 + inc a0 + move a0,*a13(BLOCK_TIME) + cmpi 160,a0 + jrlt #no + + calla get_opp_plyrmode + cmpi MODE_BLOCK,a0 + jrnz #no + move *a13(CLOSEST_XDIST),a0 + cmpi 61h,a0 + jrge #no + cmpi 45,a0 + jrlt #no + move *a13(CLOSEST_ZDIST),a0 + cmpi 30,a0 + jrlt #punchblock + +#no + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #no_interrupt + + ;press. if block isn't down, let mode_normal handle it + move a0,a2 ;save a0 from ...val_down + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 + jrz #set_mode_normal + move a2,a0 ;restore a0 from ...val_down + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#set_mode_normal + SETMODE NORMAL + jruc mode_normal + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + + SETMODE NORMAL + + movi rzr_4_push_anim,a0 + calla change_anim1a + + WRSND W_RAZOR,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* razor with zero health + +mode_dizzy ;8 + +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +; calla clear_damage_log +; +; clr a0 +; move a0,*a13(STARS_FLAG) +; +; SETMODE NORMAL +; +;#still_going + 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 + + calla master_keep_attached ;keep slave attached to me + + rets + +#***************************************************************************** + +mode_slave ;15 + rets + +#***************************************************************************** + +mode_headhold ;16 + +;Bozo power move + .ref bozo_check + calla bozo_check + jrnc #fail + + WRSND W_RAZOR,GRABHOLD_T1,GRABHOLD_T2 + + movi rzr_razors_edge_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi rzr_3_pile_driver_anim,a0 +#tag calla change_anim1a + + rets + +#fail + move *a13(WHOIHIT),a0,L + move *a0(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #exit + +; move *a13(ATTACH_PROC),a10,L +; jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + move *a13(OBJ_ZPOS),a14,L + subi [6,0],a14 + move a14,*a13(OBJ_ZPOS),L + + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +; .long #z ;0 +; .long #punch ;1 +; .long #block ;2 +; .long #z ;3 +; .long #super_punch ;4 +; .long #super_punch,#z,#z ;5-7 +; .long #kick ;8 +; .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 +; .long #super_kick ;16 +; .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 +; .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 + + +************ +#block +#graboh +#z ;0 + rets + +************ +#punch ;1 +#punchkick + + CALLA FIND_AND_KILL_ENDLESS + ;if stick is up, do quick upslashes. If it's down, do quick + ; downslashes. Otherwise, do a normal upslash. + move *a13(STICK_VAL_CUR),a0 + btst MOVE_UP_BIT,a0 + jrnz #quick_upslashes + btst MOVE_DOWN_BIT,a0 + jrnz #quick_dnslashes + + .ref rzr_4_kick2_anim + movi rzr_4_kick2_anim,a0 + calla change_anim1a + WRSND W_RAZOR,KICK_T1,KICK_T2 + rets + +#quick_upslashes + movi rzr_uslashes_to_head_anim,a0 + calla change_anim1a + WRSND W_RAZOR,UPRCUT_T2 + rets + +#quick_dnslashes + movi rzr_dslashes_to_head_anim,a0 + calla change_anim1a + WRSND W_RAZOR,UPRCUT_T2 + rets + +************ +#super_punch ;4 + + move *a13(STICK_VAL_CUR),a0 + btst MOVE_DOWN_BIT,a0 + jrz #z + + CALLA FIND_AND_KILL_ENDLESS + + SPCDMG D_UPRCUT/2,15 + + movi rzr_4_uprcut_anim,a0 + calla change_anim1a + WRSND W_RAZOR,UPRCUT_T1,UPRCUT_T2 + + rets + +************ +#kick ;8 + + CALLA FIND_AND_KILL_ENDLESS +; FACE24 rzr,kick_anim + movi rzr_4_kick2_anim,a0 + calla change_anim1a + WRSND W_RAZOR,KICK_T1,KICK_T2 + rets + +************ +#super_kick ;16 + rets + + +#***************************************************************************** +mode_puppet2 ;17 + +; ;check for the head-grab breaker +; move *a13(BUT_VAL_DOWN),a0 +; btst PLAYER_KICK_BIT,a0 +; jrz #out +; +; ;check the time - must do it within 20 ticks +; move *a13(HEAD_GRAB_TIME),a14 +; move @PCNT,a0 +; sub a14,a0 +; cmpi KICK_OUT,a0 +; jrgt #out +; +; move *a13(PLYR_TYPE),a14 +; cmpi PTYPE_DRONE,a14 +; jrz #out +; +; ;okay, waste 'im. - detach, setmode, immobilize, and launch the knee +; move *a13(ATTACH_PROC),a0,L +; clr a14 +; move a14,*a13(ATTACH_PROC),L +; move a14,*a0(ATTACH_PROC),L +; movi 15,a14 +; move a14,*a0(IMMOBILIZE_TIME) +; SETMODE NORMAL +; jruc std_knee +; +;#out + rets + +#***************************************************************************** +mode_headheld ;19 + + move *a13(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + janz mode_choking + +;Bozo reversal + calla bozo_check + jrnc #fail + + PUSH a8 + move a13,a8 + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + PULL a8 + + WRSND W_RAZOR,GRABHOLD_T1,GRABHOLD_T2 + + movi rzr_razors_edge_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi rzr_3_pile_driver_anim,a0 +#tag calla change_anim1a + + rets +#fail +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + movi rzr_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +;#VEL equ 30000h ;38000h ;30000h +;#DVEL equ 21f0eh ;27978h ;21f0eh +;#VEL equ 38000h ;38000h ;30000h +;#DVEL equ 30000h ;27978h ;21f0eh +#VEL equ 3a000h ;38000h ;30000h +#DVEL equ 31000h ;27978h ;21f0eh + + + SUBR rzr_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 rzr_rotate_anims_table +; old = up right + .long rzr_stand2_anim ;new = up right + .long rzr_2_to_4_turn_anim ; = down right + .long rzr_2_to_6_turn_anim ; = down left *** + .long rzr_2_to_8_turn_anim ; = up left + +; old = down right + .long rzr_4_to_2_turn_anim ;new = up right + .long rzr_stand4_anim ; = down right + .long rzr_4_to_6_turn_anim ; = down left + .long rzr_4_to_8_turn_anim ; = up left *** + +; old = down left + .long rzr_6_to_2_turn_anim ;new = up right *** + .long rzr_6_to_4_turn_anim ; = down right + .long rzr_stand6_anim ; = down left + .long rzr_6_to_8_turn_anim ; = up left + +; old = up left + .long rzr_8_to_2_turn_anim ;new = up right + .long rzr_8_to_4_turn_anim ; = down right *** + .long rzr_8_to_6_turn_anim ; = down left + .long rzr_stand8_anim ; = up left + + + SUBR rzr_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long rzr_walk1_f2_anim ;1 (UP) + .long rzr_walk1_f2_anim ;2 (UP_RIGHT) + .long rzr_walk1_f4_anim ;3 (RIGHT) + .long rzr_walk1_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk1_f4_anim ;5 (DOWN) + .long rzr_walk1_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk1_f2_anim ;7 (LEFT) + .long rzr_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk2_f2_anim ;2 (UP_RIGHT) + .long rzr_walk2_f2_anim ;3 (RIGHT) + .long rzr_walk2_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk8_f4_anim ;5 (DOWN) + .long rzr_walk8_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk4_f2_anim ;7 (LEFT) + .long rzr_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk2_f2_anim ;2 (UP_RIGHT) + .long rzr_walk2_f2_anim ;3 (RIGHT) + .long rzr_walk4_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk4_f4_anim ;5 (DOWN) + .long rzr_walk8_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk6_f2_anim ;7 (LEFT) + .long rzr_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk8_f2_anim ;2 (UP_RIGHT) + .long rzr_walk4_f4_anim ;3 (RIGHT) + .long rzr_walk4_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk2_f4_anim ;5 (DOWN) + .long rzr_walk6_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk2_f2_anim ;7 (LEFT) + .long rzr_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long rzr_walk5_f2_anim ;1 (UP) + .long rzr_walk5_f2_anim ;2 (UP_RIGHT) + .long rzr_walk5_f4_anim ;3 (RIGHT) + .long rzr_walk5_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk5_f4_anim ;5 (DOWN) + .long rzr_walk5_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk5_f2_anim ;7 (LEFT) + .long rzr_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk6_f2_anim ;2 (UP_RIGHT) + .long rzr_walk2_f2_anim ;3 (RIGHT) + .long rzr_walk6_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk2_f4_anim ;5 (DOWN) + .long rzr_walk4_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk2_f2_anim ;7 (LEFT) + .long rzr_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk6_f2_anim ;2 (UP_RIGHT) + .long rzr_walk6_f2_anim ;3 (RIGHT) + .long rzr_walk8_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk4_f4_anim ;5 (DOWN) + .long rzr_walk4_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk2_f2_anim ;7 (LEFT) + .long rzr_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long rzr_walk2_f2_anim ;1 (UP) + .long rzr_walk4_f2_anim ;2 (UP_RIGHT) + .long rzr_walk6_f2_anim ;3 (RIGHT) + .long rzr_walk8_f4_anim ;4 (DOWN_RIGHT) + .long rzr_walk6_f4_anim ;5 (DOWN) + .long rzr_walk2_f4_anim ;6 (DOWN_LEFT) + .long rzr_walk2_f2_anim ;7 (LEFT) + .long rzr_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR rzr_torso_anims_table +; old = up right + .long rzr_torso2_anim ;new = up right + .long rzr_2_to_4_turn2_anim ; = down right + .long rzr_2_to_6_turn2_anim ; = down left *** + .long rzr_2_to_8_turn2_anim ; = up left + +; old = down right + .long rzr_4_to_2_turn2_anim ;new = up right + .long rzr_torso4_anim ; = down right + .long rzr_4_to_6_turn2_anim ; = down left + .long rzr_4_to_8_turn2_anim ; = up left *** + +; old = down left + .long rzr_6_to_2_turn2_anim ;new = up right *** + .long rzr_6_to_4_turn2_anim ; = down right + .long rzr_torso6_anim ; = down left + .long rzr_6_to_8_turn2_anim ; = up left + +; old = up left + .long rzr_8_to_2_turn2_anim ;new = up right + .long rzr_8_to_4_turn2_anim ; = down right *** + .long rzr_8_to_6_turn2_anim ; = down left + .long rzr_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/RAZOR.BAT b/RAZOR.BAT new file mode 100755 index 0000000..be6836a --- /dev/null +++ b/RAZOR.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld razor rzr_hit rzr_kik rzr_msc rzr_pnc rzr_wlk rzr_rjr rzr_mjt rzr_jms rzr_jake +@copy razor.ld1 + razor.ld2 razor.lod +@move razor.h ..\razorimg.h +@move razor.seq .. + diff --git a/RAZORIMG.ASM b/RAZORIMG.ASM new file mode 100755 index 0000000..59c72e7 --- /dev/null +++ b/RAZORIMG.ASM @@ -0,0 +1,19 @@ + .FILE "razorimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include razorimg.tbl + .include razorimg.h + +****************************************************************************** + + .even + .include "razor.seq" + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/RAZORIMG.H b/RAZORIMG.H new file mode 100755 index 0000000..7d859f3 --- /dev/null +++ b/RAZORIMG.H @@ -0,0 +1,89 @@ + .global R2AH2D + .global R4AH4C + .global R4AM4B + .global R2BK3E + .global R4BK3D + .global R2AE2A + .global R4AE4B + .global R4LB4Z + .global R3AM3D + .global R3GU2A + .global R3GU4A + .global R3TD3A + .global R4AM3X + .global R4NM3C + .global R3DC3C + .global R4KM3A + .global R2KM3X + .global R4SW4Z + .global R4MF4B + .global R4GF3B + .global R3RL1B + .global R4WP5C + .global R4FC3B + .global R3RC3R + .global R2MK3A + .global R2PU3A + .global R4PU3A + .global R2BC3B + .global R4BC3A + .global R4UP3C + .global R4PS3A + .global R4PJ4B + .global R2PF2B + .global R4PF4B + .global R2TW2Z + .global R4TW4Z + .global R1TT5Z + .global R1TR5Z + .global R2ST2C + .global R4ST4G + .global R2WL1A + .global R2WL2A + .global R2WL4B + .global R4WL2A + .global R4WL4A + .global R4WL5A + .global R4YR3A + .global R3RN3D + .global R4BO3Z + .global R3LE3A + .global R3DD3C + .global R3AM3X + .global R3TN3X + .global R3ZS3C + .global R4GH3A + .global R4SW4D + .global R3AB3A + .global R3ZR3B + .global R3ZR3C + .global R4POGO + .global R3PN5A + .global R5RV5A + .global R3BR3Z + .global R3MS3Z + .global R3MS3Q + .global R4LD4A + .global R4CO4A + .global R3DU3B + .global R3GP3Z + .global R3BF3A + .global R4BZ4A + .global R3HB3A + .global R3RG3B + .global R3RG3Z + .global R3FD3B + .global R3HG3B + .global R4MP4D + .global R2MP2A + .global R2CT2E + .global R4SB4A + .global R3PG3B + .global R4FT3A + .global R3RZ3S + .global R3RD3D + .global R3RR3Z + .global R4WA4C + .global R4CS4A + .global R3CR3A + .global R4JD4A diff --git a/RAZORST.H b/RAZORST.H new file mode 100755 index 0000000..cad1c93 --- /dev/null +++ b/RAZORST.H @@ -0,0 +1,278 @@ +; +; Story lines for story 1 of razor +; +; Compressed string "RAZOR TOOK THE WORLD WRESTLING" +razor_story1_line1 + .byte 0b3h,0b8h,0c3h,073h,050h,0c3h,030h,01bh + .byte 0d4h,0a9h,019h,0e0h,0f0h,0dch,096h,001h + .byte 03eh,09bh,074h,0ddh,0aah,02fh,00ah,000h + .even + +; Compressed string "FEDERATION GOLD BACK TO CUBA" +razor_story1_line2 + .byte 0a7h,059h,09ah,0b3h,058h,0abh,0f0h,01bh + .byte 0a0h,070h,05bh,006h,0a3h,048h,0b2h,041h + .byte 00dh,007h,0a4h,03dh,08ah,000h + .even + +; Compressed string "WITH HIM. HE SHOWED THE GOOD" +razor_story1_line3 + .byte 0b8h,05ah,0a7h,041h,0aah,0bah,04fh,090h + .byte 09ah,001h,09dh,0c2h,0b8h,059h,006h,075h + .byte 06ah,006h,028h,00ch,097h,000h + .even + +; Compressed string "PEOPLE THERE WHAT AMERICA HAS TO" +razor_story1_line4 + .byte 0b1h,009h,0c7h,0adh,019h,0d4h,0a9h,039h + .byte 09bh,001h,09eh,08ah,075h,020h,0bah,0e6h + .byte 0ach,092h,062h,090h,08ah,074h,050h,0c3h + .byte 000h + .even + +; Compressed string "OFFER TO ANYONE WHO IS WILLING" +razor_story1_line5 + .byte 0f0h,079h,09ah,073h,050h,0c3h,081h,0f8h + .byte 0eah,0f0h,06bh,006h,078h,00ah,007h,02ah + .byte 01dh,0e0h,06ah,0dbh,0aah,02fh,00ah,000h + .even + +; Compressed string "TO WORK HARD TO MAKE THEIR" +razor_story1_line6 + .byte 035h,01ch,0e0h,0f0h,0cch,006h,0a9h,038h + .byte 097h,041h,00dh,007h,0aeh,0c8h,09ah,041h + .byte 09dh,09ah,0eah,00ch,000h + .even + +; Compressed string "AMERICAN DREAM COME TRUE. RAZOR" +razor_story1_line7 + .byte 0a2h,06bh,0ceh,02ah,029h,0beh,041h,039h + .byte 09bh,0a2h,01bh,090h,0b0h,06bh,006h,0f5h + .byte 06ch,09bh,04fh,030h,08bh,03bh,03ch,003h + .even + +; Compressed string "BECAME AN INSPIRATION TO ALL AS" +razor_story1_line8 + .byte 0a3h,049h,08ah,0aeh,019h,088h,06fh,0a0h + .byte 0beh,074h,0ach,0ceh,062h,0adh,0c2h,06fh + .byte 050h,0c3h,081h,0d8h,0b6h,081h,048h,003h + .even + +; Compressed string "HE TOURED THE WORLD AS A" +razor_story1_line9 + .byte 0a9h,019h,0d4h,0b0h,03dh,09bh,065h,050h + .byte 0a7h,066h,080h,0c3h,073h,05bh,006h,022h + .byte 01dh,088h,000h + .even + +; Compressed string "MOTIVATIONAL SPEAKER, TALKING" +razor_story1_line10 + .byte 02eh,05ch,0abh,0b7h,058h,0abh,0f0h,02bh + .byte 0b6h,001h,01dh,09bh,022h,06bh,0ceh,04dh + .byte 050h,08bh,02dh,0abh,0beh,028h,000h + .even + +; Compressed string "ABOUT HIS AMERICAN" +razor_story1_line11 + .byte 0e2h,008h,0dbh,075h,090h,0aah,074h,020h + .byte 0bah,0e6h,0ach,092h,0e2h,00bh,000h + .even + +; Compressed string "DREAM-COME-TRUE, AND SHOWING" +razor_story1_line12 + .byte 0e5h,06ch,08ah,0aeh,043h,0c2h,0aeh,0e9h + .byte 0d4h,0b3h,06dh,036h,081h,0f8h,096h,001h + .byte 09dh,0c2h,0b8h,0fah,0a2h,000h + .even + +; Compressed string "THEM . ONE NIGHT" +razor_story1_line13 + .byte 075h,06ah,0bah,041h,057h,0a7h,066h,080h + .byte 0c2h,06dh,0f9h,03dh,041h,000h,0bfh,066h + .byte 0f0h,0aah,068h,05ah,003h + .even + +; Compressed string "AFTER A SEMINAR, WHILE WALKING" +razor_story1_line14 + .byte 0e2h,059h,09bh,073h,020h,006h,0b4h,0e9h + .byte 0aah,0afh,038h,037h,001h,09eh,0aah,0adh + .byte 019h,0e0h,062h,0cbh,0aah,02fh,00ah,000h + .even + +; Compressed string "BACK TO HIS CAR, RAZOR GOT" +razor_story1_line15 + .byte 0a3h,048h,0b2h,041h,00dh,007h,0a9h,04ah + .byte 007h,0a4h,038h,037h,0c1h,02ch,0eeh,0f0h + .byte 01ch,0a0h,070h,00dh,000h + .even + +; Compressed string "JUMPED BY FOUR THUGS WHO BEAT" +razor_story1_line16 + .byte 0abh,0edh,0c6h,066h,019h,08ch,07ah,070h + .byte 0c2h,0f6h,01ch,0d4h,0a9h,08dh,0d2h,001h + .byte 09eh,0c2h,0c1h,068h,08ah,035h,000h + .even + +; Compressed string "HIM TO AN INCH OF HIS LIFE AND" +razor_story1_line17 + .byte 0a9h,0eah,006h,035h,01ch,088h,06fh,0a0h + .byte 0beh,064h,01ah,0c0h,067h,090h,0aah,074h + .byte 0d0h,0aah,0a7h,019h,088h,06fh,009h,000h + .even + +; Compressed string "RAN OFF WITH ... ALL" +razor_story1_line18 + .byte 0b3h,0f8h,006h,0f0h,079h,006h,0b8h,05ah + .byte 0a7h,041h,057h,0a7h,066h,080h,0c2h,06dh + .byte 0f9h,005h,0cfh,0f3h,004h,062h,0dbh,002h + .even + +; Compressed string "OF IT, INCLUDING THE STUFF" +razor_story1_line19 + .byte 0f0h,019h,0a8h,075h,013h,0a8h,02fh,0d9h + .byte 0dah,0a5h,0fah,0a2h,041h,09dh,09ah,001h + .byte 05dh,0dbh,0e7h,009h,000h + .even + +; Compressed string "AROUND HIS NECK AND HIS NOW" +razor_story1_line20 + .byte 0e2h,00ch,0dbh,06fh,019h,0a4h,02ah,01dh + .byte 0bch,026h,0c9h,006h,0e2h,05bh,006h,0a9h + .byte 04ah,007h,02fh,08ch,003h + .even + +; Compressed string "BROKEN FINGERS. AFTER THAT" +razor_story1_line21 + .byte 0e3h,00ch,0b3h,0e6h,01bh,09ch,0eah,08bh + .byte 09ah,033h,0fdh,004h,081h,078h,0d6h,0e6h + .byte 01ch,0d4h,0a9h,058h,003h + .even + +; Compressed string "INCIDENT, RAZOR'S SPIRIT WAS" +razor_story1_line22 + .byte 0eah,04bh,0aah,0a5h,0f9h,0d6h,04dh,030h + .byte 08bh,03bh,03ch,023h,074h,040h,0c7h,0eah + .byte 0ach,0d6h,001h,02eh,0d2h,000h + .even + +; Compressed string "SHATTERED AND HE FELL INTO A" +razor_story1_line23 + .byte 074h,02ah,0d6h,0b5h,039h,09bh,065h,020h + .byte 0beh,065h,090h,09ah,0c1h,069h,0b6h,06dh + .byte 0a0h,0beh,035h,01ch,088h,000h + .even + +; Compressed string "STATE OF DEEP DEPRESSION. HE" +razor_story1_line24 + .byte 074h,02dh,0d6h,066h,000h,09fh,041h,069h + .byte 09ah,071h,050h,09ah,0f1h,06ch,0d2h,0b4h + .byte 00ah,0bfh,04fh,010h,0a4h,026h,000h + .even + +; Compressed string "WALLOWED IN MUSTY SEA-SIDE" +razor_story1_line25 + .byte 0b8h,0d8h,0b6h,030h,06eh,096h,081h,0fah + .byte 006h,0aeh,04dh,0d7h,07ah,040h,09bh,0a2h + .byte 043h,0abh,0a5h,009h,000h + .even + +; Compressed string "TAVERNS AND SLEPT ON BENCHES IN" +razor_story1_line26 + .byte 0b5h,078h,09bh,0f3h,04bh,007h,0e2h,05bh + .byte 006h,074h,06bh,0c6h,075h,000h,0bfh,0c1h + .byte 068h,0beh,064h,06ah,0d2h,081h,0fah,002h + .even + +; Compressed string "TRAIN STATIONS, UNTIL ONE DAY HE" +razor_story1_line27 + .byte 0f5h,02ch,0aah,06fh,040h,0d7h,062h,0adh + .byte 0c2h,02fh,0ddh,004h,0f6h,05bh,0abh,06dh + .byte 000h,0bfh,066h,050h,08ah,07ah,090h,09ah + .byte 000h + .even + +; Compressed string "JUST DISAPPEARED. HE WASN'T" +razor_story1_line28 + .byte 0abh,04dh,0d7h,041h,0a9h,0d2h,062h,01ch + .byte 09bh,0e2h,06ch,096h,04fh,010h,0a4h,066h + .byte 080h,08bh,0f4h,08bh,0d4h,000h + .even + +; Compressed string "SEEN FOR THREE YEARS. RECENT" +razor_story1_line29 + .byte 0b4h,069h,0beh,0c1h,009h,0cfh,041h,09dh + .byte 0ceh,0a6h,019h,0e8h,0a6h,038h,0d3h,04fh + .byte 030h,09bh,0a4h,0f9h,0d6h,000h + .even + +; Compressed string "REPORTS INDICATE THAT IS ALIVE AND WELL AND" +razor_story1_line31 + .byte 0a8h,0adh,07fh,081h,04ah,007h,062h,0abh + .byte 0deh,066h,020h,0beh,065h,080h,09bh,06dh + .byte 01bh,088h,06fh,009h,000h + .even + +; Compressed string "RUNNING A SMALL PAWN SHOP IN" +razor_story1_line32 + .byte 0b3h,0fdh,0beh,0eah,08bh,006h,062h,040h + .byte 0bbh,062h,0dbh,006h,0b1h,088h,0bfh,001h + .byte 09dh,0c2h,071h,0a0h,0beh,000h + .even + +; Compressed string "CHILE." +razor_story1_line33 + .byte 064h,0aah,0b6h,0e6h,003h,000h + .even + +; +; Story line table for Story 1 of razor +; +razor_story_tbl1 + .long razor_story1_line1 + .long razor_story1_line2 + .long razor_story1_line3 + .long razor_story1_line4 + .long razor_story1_line5 + .long razor_story1_line6 + .long razor_story1_line7 + .long razor_story1_line8 + .long razor_story1_line9 + .long razor_story1_line10 + .long razor_story1_line11 + .long razor_story1_line12 + .long razor_story1_line13 + .long razor_story1_line14 + .long razor_story1_line15 + .long razor_story1_line16 + .long razor_story1_line17 + .long razor_story1_line18 + .long razor_story1_line19 + .long razor_story1_line20 + .long razor_story1_line21 + .long razor_story1_line22 + .long razor_story1_line23 + .long razor_story1_line24 + .long razor_story1_line25 + .long razor_story1_line26 + .long razor_story1_line27 + .long razor_story1_line28 + .long razor_story1_line29 + .long razor_story1_line30 + .long razor_story1_line31 + .long razor_story1_line32 + .long razor_story1_line33 + .long 0 + +; +; Table of stories for razor +; +razor_stories + .long razor_story_tbl1 + diff --git a/REACT1.ASM b/REACT1.ASM new file mode 100755 index 0000000..0c6cd9a --- /dev/null +++ b/REACT1.ASM @@ -0,0 +1,1941 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react1.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" + .include "damage.equ" + .include "special.equ" + .include "jjxm.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref change_anim1a,PCNT,flash_white,round_award,any_hits + .ref wres_collis_off,slide_offscr + .ref set_getup_time + .ref good_run_hit,MOVE_NAME_ANNC + .ref CALL_FACE_HIT,CALL_MID_HIT,DO_BLOCK_SND,DO_SCREAM + .ref CALL_DROP_KICK,ADD_IF_SILENT,BONUS_MESS,DAM_MULT + .ref FIRSTATT_MESS + .ref delete_special_objlist + .ref sp_change_anim + + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + +;BAM BAM + .ref bam_2_head_hit_anim,bam_4_head_hit_anim + .ref bam_2_body_hit_anim,bam_4_body_hit_anim + .ref bam_head_hit2_anim,bam_4_body_hit_dizzy_anim + .ref bam_head_hit_dizzy_anim,bam_hitonground_anim + .ref bam_fall_back_anim,bam_fall_back_tbukl_anim + .ref bam_4_hitblock_anim + +;DOINK + .ref dnk_2_head_hit_anim,dnk_4_head_hit_anim + .ref dnk_head_hit2_anim,dnk_hitonground_anim + .ref dnk_head_hit_dizzy_anim + .ref dnk_4_hitblock_anim + .ref dnk_fall_back_anim,dnk_fall_back_tbukl_anim + .ref dnk_4_body_hit_anim + .ref dnk_4_body_hit_dizzy_anim + +;BRET + .ref hrt_4_hitblock_anim,hrt_hitonground_anim + .ref hrt_2_head_hit_anim,hrt_4_head_hit_anim + .ref hrt_4_head_hit_dizzy_anim + .ref hrt_2_head_hit2_anim,hrt_4_head_hit2_anim + .ref hrt_2_body_hit_anim,hrt_4_body_hit_anim + .ref hrt_4_body_hit_dizzy_anim + .ref hrt_fall_back_anim,hrt_fall_back_tbukl_anim + +;LEX + .ref lex_2_head_hit_anim,lex_4_head_hit_anim + .ref lex_2_body_hit_anim,lex_4_body_hit_anim + .ref lex_4_hitblock_anim + .ref lex_head_hit_dizzy_anim,lex_hitonground_anim + .ref lex_2_head_hit2_anim,lex_4_head_hit2_anim + .ref lex_4_body_hit_dizzy_anim + .ref lex_fall_back_anim,lex_fall_back_tbukl_anim + .ref lex_flying_kick_anim,lex_super_kick_anim + +;RAZOR + .ref rzr_4_head_hit_dizzy_anim + .ref rzr_2_head_hit_anim,rzr_4_head_hit_anim + .ref rzr_2_body_hit_anim,rzr_4_body_hit_anim + .ref rzr_4_hitblock_anim + .ref rzr_2_head_hit2_anim,rzr_4_head_hit2_anim + .ref rzr_fall_back_anim,rzr_fall_back_tbukl_anim + .ref rzr_4_body_hit_dizzy_anim,rzr_hitonground_anim + +;SHAWN + .ref shn_4_head_hit_dizzy_anim + .ref shn_2_head_hit_anim,shn_4_head_hit_anim + .ref shn_2_head_hit2_anim,shn_4_head_hit2_anim + .ref shn_2_body_hit_anim,shn_4_body_hit_anim + .ref shn_4_body_hit_dizzy_anim,shn_hitonground_anim + .ref shn_fall_back_anim,shn_fall_back_tbukl_anim + .ref shn_4_hitblock_anim + +;TAKER + .ref und_2_head_hit_anim,und_4_head_hit_anim + .ref und_2_body_hit_anim,und_4_body_hit_anim + .ref und_head_hit_dizzy_anim + .ref und_head_hit2_anim,und_hitonground_anim + .ref und_4_body_hit_dizzy_anim + .ref und_fall_back_anim,und_fall_back_tbukl_anim + .ref und_4_hitblock_anim + +;YOKO + .ref yok_4_head_hit_dizzy_anim + .ref yok_2_head_hit_anim,yok_4_head_hit_anim + .ref yok_2_head_hit2_anim,yok_4_head_hit2_anim + .ref yok_2_body_hit_anim,yok_4_body_hit_anim + .ref yok_4_hitblock_anim + .ref yok_4_body_hit_dizzy_anim + .ref yok_fall_back_anim,yok_hitonground_anim + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + + .def hit_flykick + +;when a hit is scored, the damage is computed, then stuck in 'ere. It won't +; be applied until AFTER the appropriate hit routine is called, so you have +; a chance to change the value in special mode-dependent cases. (A stomp +; which shouldn't hurt someone in MODE_NORMAL, for example...) + + BSSX hit_damage_pending,16 + +;In general, we want to clear a victim's MOVE_DIR when we hit him. This +; value is set to 0 before the hit routine is called. If, for whatever +; reason, we don't want a particular attack mode to clear the victim's +; MOVE_DIR, just stuff it in here. new_victim_movedir is stuffed into +; victim's MOVE_DIR right after the amode routine returns. + + BSSX new_victim_movedir,16 + + .if DEBUG + BSSX instant_death,16 ;debug thing + .endif + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* A WRESTLER HAS JUST HIT/BEEN HIT (BY A PROJECTILE/SPECIAL OBJECT) +* +* a10 = * projectile process +* a13 = * victim process + + SUBR wrestler_hit_special + + ;update LAST_HIT_TIME on attacker + move @PCNT,a14,L ;use 32-bit PCNT! + move *a10(SP_WRESPROC),a0,L + move a14,*a0(LAST_HIT_TIME),L + + callr hit_stuff + + move *a10(SP_ID),a14 + cmpi 2,a14 + jrnz #not_salt + +;Salt hits player + move *a13(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jrnz #tag + move *a10(SP_WRESPROC),a0,L + movk 1,a14 + move a4,*a0(USR_VAR2) ;Tell Yoko his salt was failed! + jruc #in_block0 +#tag +; cmpi MODE_INAIR,a14 +; jrz #in_block0 + +;Salt projectiles do damage + calla DO_SCREAM + movi -D_SALT,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + +#in_block0 + PUSH a13 + move a10,a13 + movi saltsplat_anim,a0 + calla sp_change_anim + PULL a13 + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock0 + +; 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 #noblock0 + +;Block_hit +;Slide opponent away from attacker + movi [3,0],a2 + move *a10(SP_OBJ_XPOSINT),a0 + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;offx - defx + jrgt #fall_right0 ;attacker on left + neg a2 +#fall_right0 + move a2,*a13(OBJ_XVEL),L + + CALLA DO_BLOCK_SND + + FACETBL hitblock_tbl + calla change_anim1a + + rets + +#noblock0 + +;Salt will pick off in air opponent! +; move *a13(PLYRMODE),a14 +; cmpi MODE_INAIR,a14 +; jrz #isdead + + GETLIFE + jrz #isdead + + + SETMODE NORMAL + + move *a10(SP_WRESPROC),a0,L + + move *a0(OBJ_ZPOS),a0,L + subi [1,0],a0 + move a0,*a13(OBJ_ZPOS),L + +;If opponent is in air, do fall back! + FACETBL head_hit2_sand_tbl + calla change_anim1a + + clr a0 + move a0,*a13(USR_VAR1) + + movi 8*60,a14 + move a14,*a13(DELAY_METER) + + + movi -[1,0h],a0 +; movi -[3,8000h],a0 + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs0 ;right + neg a0 ;left +#abs0 + move a0,*a13(OBJ_XVEL),L +; movi [5,0],a0 + movi [3,0],a0 + move a0,*a13(OBJ_YVEL),L + movi 7000h,a0 + move a0,*a13(OBJ_ZVEL),L + move a0,*a10(SP_OBJ_ZVEL),L + + move *a10(SP_OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a10(SP_OBJ_XVEL),L + + rets + +#not_salt + move *a13(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jrz #in_block +; cmpi MODE_INAIR,a14 +; jrz #in_block + + move *a10(SP_ID),a14 + jrnz #dmg +;Pull in spirits do no damage until Taker +;whacks him at end! + movi 60,a0 + move a0,*a13(IMMOBILIZE_TIME) + jruc #in_block +#dmg +;Reaper projectiles do 2 damage hits + movi -3,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + +#in_block + + PUSH a13 + move a10,a13 + move a13,a0 + calla delete_special_objlist + + move *a13(SP_ID),a14 + sll 5,a14 + addi #splat_tbl,a14 + + ;range check + cmpi #splat_tbl_end,a14 + jrlt #stok + movi #splat_tbl,a14 + .if DEBUG + LOCKUP + .endif + +#stok move *a14,a0,L +#reg + calla sp_change_anim + PULL a13 + + 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 + +;Block_hit +;Slide opponent away from attacker + movi [2,0],a2 + move *a10(SP_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 + + CALLA DO_BLOCK_SND + + FACETBL hitblock_tbl + calla change_anim1a + + rets + +#noblock + move *a13(PLYRMODE),a14 + cmpi MODE_INAIR,a14 + jrz #isdead + GETLIFE + jrz #isdead + + SETMODE NORMAL + + move *a10(SP_WRESPROC),a0,L + + move *a0(OBJ_ZPOS),a0,L + subi [1,0],a0 + move a0,*a13(OBJ_ZPOS),L + +;If opponent is in air, do fall back! + FACETBL body_hit2_tbl + calla change_anim1a + + clr a0 + move a0,*a13(USR_VAR1) + + movi -[3,0],a0 + move *a10(SP_ID),a14 + jrnz #push_away +;Pull toward +;Send body hit into dizzy state at the end. + movk 1,a0 + move a0,*a13(USR_VAR1) + + movi 10*60,a14 + move a14,*a13(DELAY_METER) + +;Get Taker's xpos +;Don't allow the wrestler to get real close to Taker +;Try to set him up for an uppercut! + move *a10(SP_WRESPROC),a0,L + move *a0(OBJ_XPOSINT),a14 + move *a13(OBJ_XPOSINT),a0 + sub a0,a14 + abs a14 + clr a0 + cmpi 5ch,a14 + jrlt #abs + movi [4,0],a0 +#push_away + + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a0 ;left +#abs + move a0,*a13(OBJ_XVEL),L + movi [3,0],a0 + move a0,*a13(OBJ_YVEL),L + clr a0 + move a0,*a13(OBJ_ZVEL),L + + calla DO_SCREAM + +#isdead + rets + +#splat_tbl + REFLONG spiritsplat_anim + REFLONG reapersplat_anim + REFLONG saltsplat_anim +#splat_tbl_end + +#***************************************************************************** +* A WRESTLER HAS JUST BEEN HIT +* a10 = * attacking wrestler proc +* a13 = * victim process + + SUBR wrestler_hit + + ;If the attack is a run, we have to check and see first if it's + ; going to be ignored, in which case we skip ALL this crap. + + move *a10(ATTACK_MODE),a14 + cmpi AMODE_RUN,a14 + jrne #good_hit + calla good_run_hit + jrc #good_hit + + ;crummy hit. forget it. + rets + +#good_hit + ;set WHOIHIT and WHOHITME HERE, not in COLLIS, because we don't + ; want bogus run hits to change them. (Otherwise reversals will + ; start hitting innocent bystanders who run by.) + move a10,*a13(WHOHITME),L + move a13,*a10(WHOIHIT),L + +;Need to clear STARS_FLAG to get rid of stars! + callr hit_stuff + + ;update LAST_HIT_TIME on attacker + move @PCNT,a14,L + move a14,*a10(LAST_HIT_TIME),L ;use 32-bit PCNT! + + ;set up the new victim move_dir thingie + clr a14 + move a14,@new_victim_movedir + + ;get base damage val + move *a10(ATTACK_MODE),a0 + X32 a0 + addi damage_values,a0 + + ;if we've taken damage in the last 50 ticks, use the second value + ; in the damage table. + move *a13(LAST_DAMAGE),a14 + jrz #dmset + move @PCNT,a1 + sub a14,a1 + cmpi 50,a1 ;20 + jrgt #dmset + addk 10h,a0 +#dmset move *a0,a1 + + ;ooh, wait. if the attacker has a NEXT_DAMAGE set, use that instead. + ; Exceptions: If this hit does zero damage, don't mess with it, + ; AND leave NEXT_DAMAGE value in place. If this hit does more than + ; zero damage, but LESS THAN NEXT_DAMAGE, leave the value alone, + ; and clear NEXT_DAMAGE. + TEST a1 + jrz #nnd ;not a damaging hit - don't check. + move *a10(NEXT_DAMAGE),a14 + jrz #nnd ;no NEXT_DAMAGE set. move on. + move *a10(SPECIAL_DAMAGE_TIME),a14,L + move @PCNT,a0,L + cmp a14,a0 + jrgt #clrnd ;too late. clear NEXT_DAMAGE + + move *a10(NEXT_DAMAGE),a14 + cmp a1,a14 + jrgt #clrnd ;if NEXT_DAMAGE is more than we were gonna + ; do anyway, use the original damage. + move a14,a1 ;use NEXT_DAMAGE +#clrnd clr a14 + move a14,*a10(NEXT_DAMAGE) + +#nnd ;add attacker mod + move *a10(WRESTLERNUM),a0 + X16 a0 + addi offense_mods,a0 + move *a0,a0 + addi 100h,a0 + mpyu a0,a1 + + ;add defender mod + move *a13(WRESTLERNUM),a0 + X16 a0 + addi defense_mods,a0 + move *a0,a0 + addi 100h,a0 + mpyu a0,a1 + move a1,a0 + sra 16,a0 + neg a0 + + ;block check + move *a13(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jrnz #no_block + + ;Hey! If the attack mode is BSTOMP or BSTOMP2, don't reduce the + ; damage! + move *a10(ATTACK_MODE),a14 + cmpi AMODE_BSTOMP,a14 + jreq #no_block +; cmpi AMODE_BSTOMP2,a14 ;bstomp2 is NOT a turnbuckle attack! +; jreq #no_block + cmpi AMODE_BLBOWDROP,a14 + jreq #no_block + + ;we're blocking. if damage isn't zero, reduce it to one. + TEST a0 + jrz #no_mult + movi -1,a0 + jruc #no_mult +#no_block + CLR A1 + MOVE A0,A0 + JRZ JUST_CLEAR_OPP + + MOVE *A10(RISK),A1 + JRZ #no_mult + +;Is there a real good reason why this is a CREATE0 instead of a CREATE? + PUSH a0,a8,a10 + move a10,a8 + clr a10 + btst 15,a1 + jrz #reg +;Taunt style high risk move - give 3x dmg + movi -1,a10 + movk 4,a14 + move a14,@DAM_MULT +#reg + movk 1,a0 + move a0,@any_hits + CREATE0 BONUS_MESS + PULL a0,a8,a10 +#no_mult + CLR A1 + MOVE A1,*A10(RISK) +JUST_CLEAR_OPP + MOVE A1,*A13(RISK) + + ;store the damage value where hit functions can get at it + move a0,@hit_damage_pending + + ;if victim is on the turnbuckle, go to the special tbukl reaction + move *a13(PLYRMODE),a14 + cmpi MODE_ONTURNBKL,a14 + jrne #not_onbukl + + ;if the attack mode is some kind of puppet, don't do this + move *a10(ATTACK_MODE),a14 + + cmpi AMODE_PUPPET,a14 + jreq #not_onbukl + cmpi AMODE_PUPPET2,a14 + jreq #not_onbukl + cmpi AMODE_PUPPET_HDGRAB,a14 + jreq #not_onbukl + cmpi AMODE_HITCHECK,a14 + jreq #not_onbukl + + movi hit_ontbukl,a1 + jruc #continue + +#not_onbukl + + 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 +#continue + call a1 + + ;now apply the damage, unless it's zero. + move @hit_damage_pending,a0 + + .if DEBUG + move @instant_death,a14 + jrz #nid + movi -200,a0 +#nid TEST a0 + .endif + + jrz #skip_adjust + + ;If this is the first unblocked hit this round and it did at least + ; 2 pixels of damage, give an award + + PUSH a0 + + cmpi -2,a0 + jrgt #n1uh + + move @any_hits,a14 + jrnz #n1uh ;skip if there's already been one + + move *a13(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jreq #n1uh ;skip if it was blocked + + RND_AWARD a10,FIRST_HIT_AWD + + PUSH a10 + CREATE MESSAGE_PID,FIRSTATT_MESS + PULL a10 + + movk 2,a14 + move a14,@DAM_MULT + + movk 1,a14 + move a14,@any_hits +#n1uh PULL a0 + + move *a13(PLYRNUM),a1 + calla adjust_health +#skip_adjust + move @new_victim_movedir,a0 + move a0,*a13(MOVE_DIR) + + + rets + +********** +* Stuff to do to the wrestler who got hit by another wrestler or by a +* projectile. + + SUBRP hit_stuff + + ;don't do ANY of this stuff if the attack mode is AMODE_HITCHECK + move *a10(ATTACK_MODE),a14 + cmpi AMODE_HITCHECK,a14 + jreq #rets + + ;if our victim is KO'd, wake him up and set his NO_KO bit. + move *a13(STATUS_FLAGS),a14 + btst B_KOD,a14 + jrz #nko + + ori M_NO_KO,a14 + andni M_KOD,a14 + move a14,*a13(STATUS_FLAGS) + + movk 1,a14 + move a14,*a13(PTIME) +#nko + + ;routine cleanup + clr a0 + move a0,*a13(STARS_FLAG) ;Gets rid of them... + move a0,*a13(DEBRIS_X),L ;Gets rid of them... + MOVE A0,*A13(COMBO_COUNT) + + move a0,*a13(SHADTRAIL_PROC),L ;proc is toast + move a0,*a13(ATTIMG_CUR_FRAME),L + move *a13(MY_PAL),*a13(OBJ_PAL) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a13(OBJ_CONTROL) + + ;attach cleanup + move *a13(ATTACH_PROC),a1,L + jrz #done_attch + + clr a0 + move a0,*a13(ATTACH_PROC),L ;not attached to anything + + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jrne #mismatch + + cmp a1,a10 + jreq #done_attch ;ignore if victim is attached to attacker + + move a0,*a1(ATTACH_PROC),L + move a0,*a1(SHADTRAIL_PROC),L ;proc is toast + move a0,*a1(ATTIMG_CUR_FRAME),L + move a0,*a1(STARS_FLAG) ;Gets rid of them... + move a0,*a1(DEBRIS_X),L ;Gets rid of them... + move *a1(MY_PAL),*a1(OBJ_PAL) + move *a1(OBJ_CONTROL),a14 + andni 01111b,a14 + ori DMAWNZ,a14 + move a14,*a1(OBJ_CONTROL) + + ;victim was attached to someone. Depending on their mode, break + ; 'em out of it. + move *a1(PLYRMODE),a14 + cmpi MODE_PUPPET,a14 + jreq #goto_stand_anim + cmpi MODE_ONGROUND,a14 + jreq #abort_att_anim + cmpi MODE_ATTACHED,a14 + jreq #abort_att_anim + cmpi MODE_INAIR,a14 + jreq #abort_att_anim + cmpi MODE_INAIR2,a14 + jreq #abort_att_anim + cmpi MODE_DEAD,a14 + jreq #abort_att_anim + cmpi MODE_PUPPET2,a14 + jreq #goto_stand_anim + cmpi MODE_NORMAL,a14 + jreq #goto_stand_anim + cmpi MODE_RUNNING,a14 + jreq #goto_stand_anim + cmpi MODE_HEADHELD,a14 + jreq #goto_stand_anim + cmpi MODE_HEADHOLD,a14 + jreq #goto_stand_anim + cmpi MODE_CHOKEHOLD,a14 + jreq #goto_stand_anim + cmpi MODE_OPPOVERHEAD,a14 + jreq #goto_stand_anim + + .if DEBUG + LOCKUP ;bizarre mode - don't know how to fix it. + .endif + jruc #done_attch + +#mismatch + .if DEBUG + LOCKUP ;I've been hit, but the guy I'm attached to isn't attached + ; to me, so I don't know if I should break him out of what + ; he's doing or not... + .endif + jruc #done_attch + +#goto_stand_anim + PUSH a13 + move a1,a13 + movi xxx_goto_stand_anim,a0 + calla change_anim1a + PULL a13 + jruc #done_attch + +#abort_att_anim + PUSH a13 + move a1,a13 + movi xxx_aborted_attach_anim,a0 + calla change_anim1a + PULL a13 + +#done_attch + +; ;If our TEMP_PAL bit is set, restore the original, since we'll be +; ; aborting the sequence that would otherwise have restored it. + ;Do this above, whether or not the bit is set, and for anyone + ; we're attached to too. +; move *a13(STATUS_FLAGS),a0 +; btst B_TEMP_PAL,a0 +; jrz #done_pal +; +; ;clear the bit +; andni M_TEMP_PAL,a0 +; move a0,*a13(STATUS_FLAGS) +; +; ;restore the pal +; move *a13(MY_PAL),*a13(OBJ_PAL) +; +;#done_pal + + ;if we're in SMART_ATTACK mode, clear it. + clr a14 + move a14,*a13(SMART_TARGET),L + move *a13(STATUS_FLAGS),a14 + andni M_SMART_ATTACK,a14 + move a14,*a13(STATUS_FLAGS) + +;If a wrestler is running out of control, and gets hit, we need to make the +;GETUP meter go away. + + move *a13(PLYRMODE),a0 + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #cont + +#yes + .ref ditch_getup_meter + calla ditch_getup_meter + +#cont + clr a0 + move a0,*a13(RUN_TIME) + +;If he's attached to someone, detach both of them. (Note that we're not +; checking the blocking case here. you've no business being in mode_block +; if you're attached. Pbltltlt.) + + .if DEBUG + move *a13(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jrne #x0 + move *a13(ATTACH_PROC),a14,L + jrz #x0 + + LOCKUP ;HEY! No blocking when attached. Bogus. +#x0 + .endif + + move *a13(ATTACH_PROC),a0,L + jrnz #attach_check_done + + ;attached. zero attach_procs both ways, and set other guy to NORMAL. + clr a14 + move a14,*a13(ATTACH_PROC),L + move a14,*a0(ATTACH_PROC),L + movi MODE_NORMAL,a14 + move a14,*a0(PLYRMODE) + +#attach_check_done +#rets rets + + +#hit_table + .long hit_punch ;0 (this file) + .long hit_hdbutt ;1 + .long hit_kick ;2 + .long hit_flykick ;3 + .long hit_grabthrow ;4 + + REFLONG hit_uprcut ;5 (react2.asm) + REFLONG hit_lbowdrop ;6 + REFLONG hit_grabhold ;7 + REFLONG hit_grabfling ;8 + REFLONG hit_push ;9 + + .long hit_urn ;10 (This file) + REFLONG hit_bigboot ;11 (react3.asm) + REFLONG hit_knee ;12 + .long hit_hdbutt2 ;13 + REFLONG hit_boxpunch ;14 + + REFLONG hit_stomp ;15 (react4.asm) + REFLONG hit_spinkick ;16 + REFLONG hit_cline ;17 + REFLONG hit_headhold ;18 + REFLONG hit_jumpkick ;19 + + REFLONG hit_run ;20 (react5.asm) + REFLONG hit_puppet ;21 + REFLONG hit_backhand ;22 + REFLONG hit_buzz ;23 + REFLONG hit_haymaker ;24 + + REFLONG hit_blbowdrop ;25 (react2.asm) + REFLONG hit_bstomp ;26 (react4.asm) + REFLONG hit_headknees ;27 (react3.asm) + + REFLONG hit_earslap ;28 (react5.asm) - MARK + REFLONG hit_hammer ;29 (react4.asm) + + REFLONG hit_buttstomp ;30 (react4.asm) + REFLONG hit_puppet2 ;31 (react5.asm) - MARK + REFLONG hit_puppet_hdgrab ;32 + .long hit_tomb ;33 (This file) + .long hit_bigknee ;34 + + REFLONG hit_shnbfkik ;35 (react8.asm) - JASON + REFLONG hit_shnspdkik ;36 + REFLONG hit_shnspdkik2 ;37 + REFLONG hit_hitcheck ;38 + REFLONG hit_combo_uprcut ;39 (react2.asm) - why was this taken out ???? + + REFLONG hit_rslash ;40 (react9.asm) - JASON + REFLONG hit_headdslash ;41 + REFLONG hit_headuslash ;42 + REFLONG hit_rslash ;43 (same rxn, diff damage) + .long hit_hdbutt_stay ;44 (This file) + + .long hit_fire_punch ;45 + REFLONG hit_bstomp2 ;46 (react4.asm) + REFLONG hit_gutpush ;47 (react2.asm) + .long hit_super_kick ;48 + .long hit_punch ;49 (AMODE_PUNCH2) + .long hit_urn ;50 (AMODE_HDBUTT3) + REFLONG hit_lbowdrop ;51 (AMODE_LBOWDROP2) + REFLONG hit_stomp ;52 (AMODE_STOMP2 - react4.asm) + + REFLONG hit_puppet_noflail ;53 (react5.asm) + REFLONG hit_puppet_toss ;54 (react5.asm) + REFLONG hit_napalm ;55 (react9.asm) + +#***************************************************************************** +;All hit routine use this block code +;Perhaps the DAMAGE amount should be table driven +;Perhaps we push him away after x blocks? + + + SUBR block_hit + +;Slide opponent away from attacker + movi [4,8000h],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 + +;FIX!! +;We need to put in grunts or something... This doesn't work! + CALLA DO_BLOCK_SND + + FACETBL hitblock_tbl + calla change_anim1a + +#isdead + calla wres_collis_off + rets + +#***************************************************************************** +;All hit routine use this block code +;Perhaps the DAMAGE amount should be table driven +;Perhaps we push him away after x blocks? + + + SUBR block_hit_flail + +;Slide opponent away from attacker + movi [6,8000h],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 + +;FIX!! +;We need to put in grunts or something... This doesn't work! + CALLA DO_BLOCK_SND + +; FACETBL hitblock_tbl + FACETBL hitblock_flail_tbl + calla change_anim1a + +#isdead + calla wres_collis_off + rets +; +; +; +; +; +; CALLA DO_BLOCK_SND +; +; FACETBL hitblock_flail_tbl +; calla change_anim1a +; +;#isdead +; calla wres_collis_off +; rets + +#***************************************************************************** +;AMODE_PUNCH 0 +hit_unused ;13 +hit_punch +hit_fire_punch + + 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 + + callr block_hit + 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 PUNCH_L1,PUNCH_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 +; +;#isdead +; calla wres_collis_off +; +; rets +; +;#not_dizzy +; +;; calla inc_burnout +; +;;Test code +;; cmpi 6,a1 ;a1 = consecutive hits +;; jrlt #ok +;; LOCKUP +;;#ok +; + SETMODE NORMAL + +;#do_hit + move *a13(OBJ_YPOSINT),a14 + move *a13(GROUND_Y),a0 + sub a0,a14 + cmpi 20,a14 + jrge #fall_back + + move *a13(CONSECUTIVE_HITS),a0 + inc a0 + move a0,*a13(CONSECUTIVE_HITS) + subk 6,a0 + jrnz #ok + + clr a0 + move a0,*a13(CONSECUTIVE_HITS) +;Consecutive hits without blocking/walking +;Do push away + + ;go to #ok if opp is in combo mode + move *a13(WHOHITME),a14,L + move *a14(COMBO_COUNT),a14 + jrnz #ok + + FACETBL #losebal + calla change_anim1a + +; movi [5,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 + + jruc #isdead + +#ok + + ;normal punch + FACE24TBL head_hit_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_right1 ;attacker on left + neg a2 +#fall_right1 + move a2,*a13(OBJ_XVEL),L + + rets + +#losebal + REFLONG hrt_4_losebal_anim ;0 Bret Hart + REFLONG rzr_4_losebal_anim ;1 Razor Ramon + REFLONG und_4_losebal_anim ;2 Undertaker + REFLONG yok_4_losebal_anim ;3 Yokozuna + REFLONG shn_4_losebal_anim ;4 Shawn Michaels + REFLONG bam_4_losebal_anim ;5 Bam Bam + REFLONG dnk_4_losebal_anim ;6 Doink + REFLONG dnk_4_losebal_anim ;7 spare + REFLONG lex_4_losebal_anim ;8 Lex Luger + +#***************************************************************************** +;AMODE_HDBUTT 1 +hit_hdbutt + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit + rets + +#noblock + + CALLA CALL_FACE_HIT + + GETLIFE + jrz #isdead + + WRSNDX HDBUTT_L1,HDBUTT_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 + + FACE24TBL head_hit2_tbl + calla change_anim1a + +#isdead + calla wres_collis_off + + rets + +#***************************************************************************** +;AMODE_HDBUTT2 13 +hit_hdbutt2 +;From head hold attacks + + CALLA CALL_FACE_HIT + + WRSNDX HDBUTT_L1,HDBUTT_L2 + + FACE24TBL head_hit2_tbl + calla change_anim1a + + movi 3C000h,a0 + move a0,*a13(OBJ_YVEL),L + + clr a0 + move a0,*a13(OBJ_XVEL),L + + calla wres_collis_off + + rets + +#***************************************************************************** +;AMODE_URN 10 +hit_urn + +;From slap type attacks that want a face hit reaction! + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit_flail + rets + +#noblock + + CALLA CALL_FACE_HIT + + GETLIFE + jrz #isdead + + WRSNDX HDBUTT_L1,HDBUTT_L2 + + SETMODE NORMAL + move *a13(OBJ_YPOSINT),a14 + move *a13(GROUND_Y),a0 + sub a0,a14 + cmpi 20,a14 + jrge #fall_back + + + 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_HDBUTT_STAY 44 +;No xvel will happen +hit_hdbutt_stay + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit_flail + rets + +#noblock + + CALLA CALL_FACE_HIT + +; calla inc_burnout + + SETMODE NORMAL + + WRSNDX HDBUTT_L1,HDBUTT_L2 + + FACE24TBL head_hit2_tbl + calla change_anim1a + + calla wres_collis_off + + movi 6*60,a14 + move a14,*a13(DELAY_METER) + + clr a0 + move a0,*a13(OBJ_XVEL),L + + rets + +#***************************************************************************** +;AMODE_TOMB 33 +hit_tomb + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit_flail + rets + +#noblock + + CALLA CALL_FACE_HIT + + GETLIFE + jrz #isdead + + calla DO_SCREAM + + +; 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 +; +;#isdead +; calla wres_collis_off +; rets +; +;#not_dizzy + + move *a13(PLYRMODE),a14 + cmpi MODE_ONGROUND,a14 + jreq #ongnd + cmpi MODE_DEAD,a14 + jreq #ongnd + + + + SETMODE NORMAL + move *a13(OBJ_YPOSINT),a14 + move *a13(GROUND_Y),a0 + sub a0,a14 + cmpi 20,a14 + jrge #fall_back + + FACE24TBL head_hit2_tbl + jruc #anim + +#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 + + +#ongnd FACETBL hitonground_tbl +#anim calla change_anim1a + +#isdead + calla wres_collis_off + + rets + +#***************************************************************************** +;AMODE_SUPER_KICK 48 +hit_super_kick + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit_flail + rets + +;AMODE_KICK 2 +hit_kick + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit + rets + +#noblock + + CALLA CALL_MID_HIT + + GETLIFE + jrz #isdead + + WRSNDX KICK_L1,KICK_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 body_hit_dizzy_tbl +; calla change_anim1a +; +;#isdead +; calla wres_collis_off +; rets +; +;#not_dizzy +; +; calla inc_burnout + + SETMODE NORMAL + + clr a0 + move a0,*a13(USR_VAR1) + + FACE24TBL body_hit_tbl + calla change_anim1a +#isdead + calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_FLYKICK 3 + SUBR hit_flykick + + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + move *a10(OBJ_XVEL),a0,L ;slow down doink's + sra 1,a0 ;x_vel after collis + abs a0 + cmpi 20000h,a0 + jrlt #okv + movi 40000h,a0 +#okv + move *a10(OBJ_XVEL),a14,L + jrn #okv2 + neg a0 +#okv2 + move a0,*a10(OBJ_XVEL),L + movi 40000h,a0 + move a0,*a10(OBJ_YVEL),L + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit_flail + setc ;return aborted + rets + +#noblock + ;HACK! - Lex's flying kicks don't knock you down. Use CALL_MID_HIT. + move *a10(ANIBASE),a14,L + cmpi lex_flying_kick_anim,a14 + jreq #midhit + cmpi lex_super_kick_anim,a14 + jreq #midhit + + calla CALL_DROP_KICK + jruc #snd_done +#midhit calla CALL_MID_HIT + +#snd_done + WRSNDX FLYKICK_L1,FLYKICK_L2 + + GETLIFE + jrz #skip + + +; calla inc_burnout + + SETMODE NORMAL + +#skip + +; move *a10(OBJ_XVEL),a0,L ;slow down doink's +; sra 1,a0 ;x_vel after collis +; abs a0 +; cmpi 28000h,a0 +; jrlt #okv +; movi 28000h,a0 +;#okv +; move *a10(OBJ_XVEL),a14,L +; jrn #okv2 +; neg a0 +;#okv2 +; move a0,*a10(OBJ_XVEL),L +; movi 40000h,a0 +; move a0,*a10(OBJ_YVEL),L + + clr a0 + move a0,*a13(ROLL_POS) + +; move *a13(PLYR_DIZZY),a0 +; jrnz #diz + + calla set_getup_time + + +;#diz + FACETBL fall_back_tbl + calla change_anim1a + + movi [2,0],a2 + move *a10(OBJ_XPOSINT),a0 + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;offx - defx + jrgt #fall_right ;attacker on left + movi [-2,0],a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + +#isdead + calla wres_collis_off + clrc ;return okay + rets + +#***************************************************************************** +;AMODE_BIGKNEE 34 +hit_bigknee + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + callr block_hit_flail + rets + +#noblock + calla CALL_DROP_KICK + WRSNDX FLYKICK_L1,FLYKICK_L2 + + GETLIFE + jrz #skip + + +; calla inc_burnout + + SETMODE NORMAL + +#skip +; move *a10(OBJ_XVEL),a0,L ;slow down doink's +; sra 1,a0 ;x_vel after collis +; neg a0 +; move a0,*a10(OBJ_XVEL),L +; movi 40000h,a0 +; move a0,*a10(OBJ_YVEL),L + + clr a0 + move a0,*a13(ROLL_POS) + +; move *a13(PLYR_DIZZY),a0 +; jrnz #diz + + calla set_getup_time + +;#diz + 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 #fall_right ;attacker on left + movi -[4,0],a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets + + + +#***************************************************************************** +;AMODE_GRABTHROW 4 +hit_grabthrow + + rets + +#***************************************************************************** +; HIT WHILE STANDING ON TURNBUCKLE -- DOESN'T MATTER WHAT THE AMODE WAS +hit_ontbukl + + + WRSNDX FLYKICK_L1,FLYKICK_L2 + + FACETBL fall_back_tbukl_tbl + calla change_anim1a + + SETMODE INAIR + + ;set the DEAD_ANIM bit so that if this hit killed us, we won't + ; get the normal fall_back_anim instead. + move *a13(STATUS_FLAGS),a14 + ori M_DEAD_ANIM,a14 + move a14,*a13(STATUS_FLAGS) + + 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 + movi [6,0],a2 + move a2,*a13(OBJ_YVEL),L + +#isdead + calla wres_collis_off + rets + + +****************************************************************************** +* +* DAMAGE SECTION +* + +;Base damage values and getup times +damage_values + .word D_PUNCH, RD_PUNCH ;AMODE_PUNCH + .word D_HDBUTT, RD_HDBUTT ;AMODE_HDBUTT + .word D_KICK, RD_KICK ;AMODE_KICK + .word D_FLYKICK, RD_FLYKICK ;AMODE_FLYKICK + .word D_GRABTHROW, RD_GRABTHROW ;AMODE_GRABTHROW + + .word D_UPRCUT, RD_UPRCUT ;AMODE_UPRCUT + .word D_LBDROP, RD_LBDROP ;AMODE_LBOWDROP + .word D_GRBHOLD, RD_GRBHOLD ;AMODE_GRABHOLD + .word D_GRBFLNG, RD_GRBFLNG ;AMODE_GRABFLING + .word D_PUSH, RD_PUSH ;AMODE_PUSH + + .word D_BCKHAND, RD_BCKHAND ;AMODE_URN + .word D_BIGBOOT, RD_BIGBOOT ;AMODE_BIGBOOT + .word D_KNEE, RD_KNEE ;AMODE_KNEE + .word D_HDKNEES, RD_HDKNEES ;AMODE_HDBUTT2 + .word D_BOXPUNCH, RD_BOXPUNCH ;AMODE_BOXPUNCH + + .word D_STOMP, RD_STOMP ;AMODE_STOMP + .word D_SPINKIK, RD_SPINKIK ;AMODE_SPINKICK + .word D_CLINE, RD_CLINE ;AMODE_CLINE + .word D_HEDHOLD, RD_HEDHOLD ;AMODE_HEADHOLD + .word D_JUMPKICK, RD_JUMPKICK ;AMODE_JUMPKICK + + .word D_RUN, RD_RUN ;AMODE_RUN + .word D_PUPPET, RD_PUPPET ;AMODE_PUPPET + .word D_BCKHAND, RD_BCKHAND ;AMODE_BACKHAND + .word D_BUZZ, RD_BUZZ ;AMODE_BUZZ + .word D_HAYMAKER, RD_HAYMAKER ;AMODE_HAYMAKER + + .word D_BLBDROP, RD_BLBDROP ;AMODE_BLBOWDROP + .word D_BSTOMP, RD_BSTOMP ;AMODE_BSTOMP + .word D_HDKNEES, RD_HDKNEES ;AMODE_HEADKNEES + .word D_EARSLAP2, RD_EARSLAP2 ;AMODE_EARSLAP + .word D_HAMMER2, RD_HAMMER2 ;AMODE_HAMMER + + .word D_BUTTSTOMP, RD_BUTTSTOMP ;AMODE_BUTTSTOMP + .word D_ATT31, RD_ATT31 ;AMODE_PUPPET2 + .word D_ATT32, RD_ATT32 ;AMODE_HDGRAB + .word D_TOMB, RD_TOMB ;AMODE_TOMB + .word D_BIGKNEE, RD_BIGKNEE ;AMODE_BIGKNEE + + .word D_FLPKIK, RD_FLPKIK ;AMODE_SHNBFKIK + .word D_SPDKIK, RD_SPDKIK ;AMODE_SHNSPDKIK + .word D_SPDKIK2, RD_SPDKIK2 ;AMODE_SHNSPDKIK2 + .word D_HITCK, RD_HITCK ;AMODE_HITCHECK + .word D_ARMBRK, RD_ARMBRK ;AMODE_ARMBREAK + + .word D_RSLASH, RD_RSLASH ;AMODE_RSLASH + .word D_HEADDSLASH, RD_HEADDSLASH ;AMODE_HEADDSLASH + .word D_HEADUSLASH, RD_HEADUSLASH ;AMODE_HEADUSLASH + .word D_RSLASH2, RD_RSLASH2 ;AMODE_RSLASH2 + .word D_HDBUTT_STAY, RD_HDBUTT_STAY ;AMODE_HDBUTT_STAY + + .word D_FIRE_PUNCH, RD_FIRE_PUNCH ;AMODE_FIRE_PUNCH + .word D_BSTOMP2, RD_BSTOMP2 ;AMODE_BSTOMP2 + .word D_GUTPUSH, RD_GUTPUSH ;AMODE_GUTPUSH + .word D_SPINKIK, RD_SPINKIK ;AMODE_SUPER_KICK + .word D_PUNCH2, RD_PUNCH2 ;AMODE_PUNCH2 + + .word D_BCKHAND, RD_BCKHAND ;AMODE_HDBUTT3 + .word D_LBDROP2, RD_LBDROP2 ;AMODE_LBOWDROP2 + .word D_STOMP2, RD_STOMP2 ;AMODE_STOMP2 + .word 0, 0 ;AMODE_NOFLAIL + .word 0, 0 ;AMODE_TOSS + .word D_NAPALM, RD_NAPALM ;AMODE_NAPALM + +;Wrestler offensive multipliers +offense_mods + .word _35PCT ;Bret + .word _35PCT ;Razor + .word _35PCT ;Taker + .word _35PCT ;Yoko + .word _35PCT ;Shawn + .word _35PCT ;Bam Bam + .word _35PCT ;Doink + .word _35PCT ; + .word _35PCT ;Lex + +;Wrestler defensive multipliers +defense_mods + .word 0 ;Bret + .word 0 ;Razor + .word 0 ;Taker + .word 0 ;Yoko + .word 0 ;Shawn + .word 0 ;Bam Bam + .word 0 ;Doink + .word 0 ; + .word 0 ;Lex + +****************************************************************************** +* +* STANDARD REACTION TABLES +* + + SUBR head_hit_tbl + .long hrt_2_head_hit_anim,hrt_4_head_hit_anim ;0 Bret Hart + .long rzr_2_head_hit_anim,rzr_4_head_hit_anim ;1 Razor Ramon + .long und_2_head_hit_anim,und_4_head_hit_anim ;2 Undertaker + .long yok_2_head_hit_anim,yok_4_head_hit_anim ;3 Yokozuna + .long shn_2_head_hit_anim,shn_4_head_hit_anim ;4 Shawn Michaels + .long bam_2_head_hit_anim,bam_4_head_hit_anim ;5 Bam Bam + .long dnk_2_head_hit_anim,dnk_4_head_hit_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_head_hit_anim,lex_4_head_hit_anim ;8 Lex Luger + + + SUBR head_hit2_tbl + .long hrt_2_head_hit2_anim,hrt_4_head_hit2_anim ;0 Bret Hart + .long rzr_2_head_hit2_anim,rzr_4_head_hit2_anim ;1 Razor Ramon + .long und_head_hit2_anim,und_head_hit2_anim ;2 Undertaker + .long yok_2_head_hit2_anim,yok_4_head_hit2_anim ;3 Yokozuna + .long shn_2_head_hit2_anim,shn_4_head_hit2_anim ;4 Shawn Michaels + .long bam_head_hit2_anim,bam_head_hit2_anim ;5 Bam Bam + .long dnk_head_hit2_anim,dnk_head_hit2_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_head_hit2_anim,lex_4_head_hit2_anim ;8 Lex Luger + + SUBR head_hit2_sand_tbl + REFLONG hrt_4_head_hit2s_anim + REFLONG rzr_4_head_hit2s_anim + REFLONG und_head_hit2s_anim + REFLONG yok_4_head_hit2s_anim + REFLONG shn_4_head_hit2s_anim + REFLONG bam_head_hit2s_anim + REFLONG dnk_head_hit2s_anim + .long 0 + REFLONG lex_4_head_hit2s_anim + + SUBR head_hit_dizzy_tbl + .long hrt_4_head_hit_dizzy_anim,hrt_4_head_hit_dizzy_anim ;0 Bret Hart + .long rzr_4_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim ;1 Razor Ramon + .long und_head_hit_dizzy_anim,und_head_hit_dizzy_anim ;2 Undertaker + .long yok_4_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim ;3 Yokozuna + .long shn_4_head_hit_dizzy_anim,shn_4_head_hit_dizzy_anim ;4 Shawn Michaels + .long bam_head_hit_dizzy_anim,bam_head_hit_dizzy_anim ;5 Bam Bam + .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_head_hit_dizzy_anim,lex_head_hit_dizzy_anim ;8 Lex Luger + + SUBR body_hit_tbl + .long hrt_2_body_hit_anim,hrt_4_body_hit_anim ;0 Bret Hart + .long rzr_2_body_hit_anim,rzr_4_body_hit_anim ;1 Razor Ramon + .long und_2_body_hit_anim,und_4_body_hit_anim ;2 Undertaker + .long yok_2_body_hit_anim,yok_4_body_hit_anim ;3 Yokozuna + .long shn_2_body_hit_anim,shn_4_body_hit_anim ;4 Shawn Michaels + .long bam_2_body_hit_anim,bam_4_body_hit_anim ;5 Bam Bam + .long dnk_4_body_hit_anim,dnk_4_body_hit_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_body_hit_anim,lex_4_body_hit_anim ;8 Lex Luger + + SUBR body_hit2_tbl + .long hrt_4_body_hit_anim ;0 Bret Hart + .long rzr_4_body_hit_anim ;1 Razor Ramon + .long und_4_body_hit_anim ;2 Undertaker + .long yok_4_body_hit_anim ;3 Yokozuna + .long shn_4_body_hit_anim ;4 Shawn Michaels + .long bam_4_body_hit_anim ;5 Bam Bam + .long dnk_4_body_hit_anim ;6 Doink + .long 0 ;7 spare + .long lex_4_body_hit_anim ;8 Lex Luger + + SUBR body_hit_dizzy_tbl + .long hrt_4_body_hit_dizzy_anim,hrt_4_body_hit_dizzy_anim ;0 Bret Hart + .long rzr_4_body_hit_dizzy_anim,rzr_4_body_hit_dizzy_anim ;1 Razor Ramon + .long und_4_body_hit_dizzy_anim,und_4_body_hit_dizzy_anim ;2 Undertaker + .long yok_4_body_hit_dizzy_anim,yok_4_body_hit_dizzy_anim ;3 Yokozuna + .long shn_4_body_hit_dizzy_anim,shn_4_body_hit_dizzy_anim ;4 Shawn Michaels + .long bam_4_body_hit_dizzy_anim,bam_4_body_hit_dizzy_anim ;5 Bam Bam + .long dnk_4_body_hit_dizzy_anim,dnk_4_body_hit_dizzy_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_4_body_hit_dizzy_anim,lex_4_body_hit_dizzy_anim ;8 Lex Luger + + SUBR fall_back_tbl + .long hrt_fall_back_anim ;0 Bret Hart + .long rzr_fall_back_anim ;1 Razor Ramon + .long und_fall_back_anim ;2 Undertaker + .long yok_fall_back_anim ;3 Yokozuna + .long shn_fall_back_anim ;4 Shawn Michaels + .long bam_fall_back_anim ;5 Bam Bam + .long dnk_fall_back_anim ;6 Doink + .long 0 ;7 spare + .long lex_fall_back_anim ;8 Lex Luger + + SUBR fall_back_tbukl_tbl + .long hrt_fall_back_tbukl_anim ;0 Bret Hart + .long rzr_fall_back_tbukl_anim ;1 Razor Ramon + .long und_fall_back_tbukl_anim ;2 Undertaker + .long yok_fall_back_anim ;3 Yokozuna + .long shn_fall_back_tbukl_anim ;4 Shawn Michaels + .long bam_fall_back_tbukl_anim ;5 Bam Bam + .long dnk_fall_back_tbukl_anim ;6 Doink + .long 0 ;7 spare + .long lex_fall_back_tbukl_anim ;8 Lex Luger + +hitblock_tbl + .long hrt_4_hitblock_anim ;0 Bret Hart + .long rzr_4_hitblock_anim ;1 Razor Ramon + .long und_4_hitblock_anim ;2 Undertaker + .long yok_4_hitblock_anim ;3 Yokozuna + .long shn_4_hitblock_anim ;4 Shawn Michaels + .long bam_4_hitblock_anim ;5 Bam Bam + .long dnk_4_hitblock_anim ;6 Doink + .long 0 ;7 spare + .long lex_4_hitblock_anim ;8 Lex Luger + +hitblock_flail_tbl + REFLONG hrt_4_hitblock2_anim ;0 Bret Hart + REFLONG rzr_4_hitblock2_anim ;1 Razor Ramon + REFLONG und_4_hitblock2_anim ;2 Undertaker + REFLONG yok_4_hitblock2_anim ;3 Yokozuna + REFLONG shn_4_hitblock2_anim ;4 Shawn Michaels + REFLONG bam_4_hitblock2_anim ;5 Bam Bam + REFLONG dnk_4_hitblock2_anim ;6 Doink + .long 0 ;7 spare + REFLONG lex_4_hitblock2_anim ;8 Lex Luger + +; .long hrt_4_losebal_anim ;0 Bret Hart +; .long rzr_4_losebal_anim ;1 Razor Ramon +; .long und_4_losebal_anim ;2 Undertaker +; .long yok_4_losebal_anim ;3 Yokozuna +; .long shn_4_losebal_anim ;4 Shawn Michaels +; .long bam_4_losebal_anim ;5 Bam Bam +; .long dnk_4_losebal_anim ;6 Doink +; .long dnk_4_losebal_anim ;7 spare +; .long lex_4_losebal_anim ;8 Lex Luger +; .long dnk_4_losebal_anim ;9 Referee + + SUBR hitonground_tbl + .long hrt_hitonground_anim ;0 Bret Hart + .long rzr_hitonground_anim ;1 Razor Ramon + .long und_hitonground_anim ;2 Undertaker + .long yok_hitonground_anim ;3 Yokozuna + .long shn_hitonground_anim ;4 Shawn Michaels + .long bam_hitonground_anim ;5 Bam Bam + .long dnk_hitonground_anim ;6 Doink + .long 0 ;7 spare + .long lex_hitonground_anim ;8 Lex Luger + .long 0 ;9 Referee + +#***************************************************************************** +* +* Script for a wrestler who was the victim of a puppet sequence that got +* interrupted by the attacker being smacked. + + SUBR xxx_aborted_attach_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_NORMAL + + ;WAIT! If I'm dead, just do a hitonground instead. + WL ANI_CODE,#dead_or_dying + WL ANI_IFSTATUS,#dead + WL ANI_CHANGEANIM_TBL,#getup_tbl +#dead WL ANI_CHANGEANIM_TBL,hitonground_tbl + +#getup_tbl + REFLONG hrt_faceup_getup_anim + REFLONG rzr_faceup_getup_anim + REFLONG und_faceup_getup_anim + REFLONG yok_faceup_getup_anim + REFLONG shn_faceup_getup_anim + REFLONG bam_faceup_getup_anim + REFLONG dnk_faceup_getup_anim + .long 0 + REFLONG lex_faceup_getup_anim + + + SUBRP #dead_or_dying + + ;set status if I'm dead or my I_WILL_DIE flag is set. + move *a13(ANIMODE),a14 + andni MODE_STATUS,a14 + move a14,*a13(ANIMODE) + + move *a13(I_WILL_DIE),a14 + jrnz #die + + move *a13(PLYRNUM),a1 + calla get_health + jrnz #ok + +#die move *a13(ANIMODE),a14 + ori MODE_STATUS,a14 + move a14,*a13(ANIMODE) + +#ok rets + +#***************************************************************************** +* +* Script for a wrestler who was the victim of a puppet sequence that got +* interrupted by the attacker being smacked. - go to stand instead of +* falling. + + SUBR xxx_goto_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/REACT2.ASM b/REACT2.ASM new file mode 100755 index 0000000..335cabe --- /dev/null +++ b/REACT2.ASM @@ -0,0 +1,482 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react2.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 change_anim1a + .ref wres_collis_off +; .ref inc_burnout + .ref block_hit + .ref face_each_other + .ref set_getup_time + .ref fall_back_tbl + .ref triple_sound,CALL_AVERAGE_MOVE + .ref CALL_NASTY_MOVE + .ref block_hit_flail + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + + +;BAM BAM + .ref bam_heldoh_anim +; .ref bam_ocrun_anim + .ref bam_4_losebal_anim + +;DOINK + .ref dnk_heldoh_anim +; .ref dnk_ocrun_anim + .ref dnk_fall_back_anim + .ref dnk_4_losebal_anim + .ref dnk_knockdwn_anim + +;BRET + .ref hrt_4_losebal_anim,hrt_fall_back_anim + +;LEX + .ref lex_4_losebal_anim + .ref lex_heldoh_anim +; .ref lex_ocrun_anim + +;RAZOR + .ref rzr_4_losebal_anim +; .ref rzr_ocrun_anim + .ref rzr_heldoh_anim + .ref rzr_fall_back_anim + +;SHAWN + .ref shn_4_losebal_anim + .ref shn_heldoh_anim +; .ref shn_ocrun_anim + +;TAKER + .ref und_heldoh_anim +; .ref und_ocrun_anim + .ref und_4_losebal_anim + +;YOKO + .ref yok_4_losebal_anim + +;MISC + .ref hit_damage_pending,hitonground_tbl + .ref ck_live_teammates + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +#***************************************************************************** +;AMODE_UPRCUT 5 + SUBR hit_uprcut + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit_flail + rets + +#noblock + + GETLIFE + jrz #skip + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + + SETMODE NORMAL + +#skip +; calla inc_burnout + + WRSNDX UPRCUT_L1,UPRCUT_L2 + + FACETBL fall_back_tbl + calla change_anim1a + + .ref flash_white + calla flash_white + + clr a0 + move a0,*a13(ROLL_POS) + calla set_getup_time + + + ;silly temp + movi [15,0],a0 + move *a10(WRESTLERNUM),a14 + cmpi 3,a14 + jrz #norm + movi [13,0],a0 + cmpi 2,a14 + jrnz #norm + + move a13,a0 + calla ck_live_teammates + movi [11,0],a0 + jrc #norm + + ;no live teammates -- send them up into the air +; .ref reduce_bog +; move @reduce_bog,a14 +; jrnz #norm + + movi [18,0],a0 +#norm + 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_right ;attacker on left + movi [-2,0],a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_UPRCUT2 39 + SUBR hit_combo_uprcut + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + GETLIFE + jrz #skip + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + + SETMODE NORMAL + +#skip +; calla inc_burnout + + WRSNDX UPRCUT_L1,UPRCUT_L2 + + FACETBL fall_back_tbl + calla change_anim1a + + .ref flash_white + calla flash_white + + clr a0 + move a0,*a13(ROLL_POS) + calla set_getup_time + + MOVI MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP,A0 + MOVE A0,*A13(ANIMODE) + + + move *a13(WHOHITME),A1,L + movi [7,0],a0 + MOVE *A1(RPT_COUNT),A2 + DEC A2 + JRZ SET_YVEL + movi [3,0],a0 +SET_YVEL + move a0,*a13(OBJ_YVEL),L + + movi [1,8000H],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 + +#isdead + calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_LBOWDROP 6 + + SUBR hit_lbowdrop + + ;if we're standing, ignore this + move *a13(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + jrz #ignore + cmpi MODE_BLOCK,a0 + jrz #ignore + + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + movi 33h,a0 + calla triple_sound + + calla wres_collis_off + + FACETBL hitonground_tbl + calla change_anim1a + calla wres_collis_off + rets + +#ignore clr a14 + move a14,@hit_damage_pending + calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_BLBOWDROP 25 + SUBR hit_blbowdrop + + .ref DO_SCREAM + calla DO_SCREAM + + WRSNDX FLYKICK_L1,FLYKICK_L2 + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + +; movi 500,a0 +; .ref RNDPER +; calla RNDPER +; jrls #isdead +; calla inc_burnout + + calla wres_collis_off + + move *a13(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #on_grnd + cmpi MODE_DEAD,a0 + jrz #on_grnd +;Knock standing opponent onto ground + + SETMODE NORMAL + move *a13(OBJ_YPOSINT),a14 + move *a13(GROUND_Y),a0 + sub a0,a14 + cmpi 20,a14 + jrge #fall_back + + calla set_getup_time + + FACETBL #knockdwn + calla change_anim1a + calla wres_collis_off + rets + +#fall_back + movi 43h,a0 + calla triple_sound + 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 + + movi -30000h,a0 + move a0,*a13(OBJ_YVEL),L + rets + +#on_grnd + FACETBL hitonground_tbl + calla change_anim1a +#isdead + calla wres_collis_off + rets + +#knockdwn + .ref hrt_knockdwn_anim + .ref rzr_knockdwn_anim + .ref und_knockdwn_anim + .ref yok_knockdwn_anim + .ref shn_knockdwn_anim + .ref bam_knockdwn_anim + .ref dnk_knockdwn_anim + .ref lex_knockdwn_anim + + .long hrt_knockdwn_anim ;0 Bret Hart + .long rzr_knockdwn_anim ;1 Razor Ramon + .long und_knockdwn_anim ;2 Undertaker + .long yok_knockdwn_anim ;3 Yokozuna + .long shn_knockdwn_anim ;4 Shawn Michaels + .long bam_knockdwn_anim ;5 Bam Bam + .long dnk_knockdwn_anim ;6 Doink + .long 0 ;7 spare + .long lex_knockdwn_anim ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** +;AMODE_GRABHOLD 7 + SUBR hit_grabhold +; +; GETLIFE +; jrz #isdead +; +; WRSNDX GRABHOLD_L1,GRABHOLD_L2 +; +; SETMODE ATTACHED +; +; move a10,*a13(ATTACH_PROC),L ;proc attached to +; move a13,*a10(ATTACH_PROC),L +; +; FACETBL #heldoh +; calla change_anim1a +; +;#isdead +; calla wres_collis_off +; rets +; +;#heldoh +; .long dnk_heldoh_anim ;0 Bret Hart +; .long rzr_heldoh_anim ;1 Razor Ramon +; .long und_heldoh_anim ;2 Undertaker +; .long dnk_heldoh_anim ;3 Yokozuna +; .long shn_heldoh_anim ;4 Shawn Michaels +; .long bam_heldoh_anim ;5 Bam Bam +; .long dnk_heldoh_anim ;6 Doink +; .long dnk_heldoh_anim ;7 spare +; .long lex_heldoh_anim ;8 Lex Luger +; .long dnk_heldoh_anim ;9 Referee +; + +;Blank amode here.... + SUBR hit_grabfling + rets + +#***************************************************************************** +;AMODE_GUTPUSH 47 + SUBR hit_gutpush + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #hit_push2 + + clr a0 + move a0,*a13(OBJ_XVEL),L + + calla block_hit_flail + rets + +#hit_push2 + + SETMODE NORMAL + + clr a0 + move a0,*a10(OBJ_XVEL),L ;clr attacker's x-vel + + FACETBL #losebal + calla change_anim1a + + movi [8,0],a2 + jruc #tag + +;AMODE_PUSH 9 + SUBR hit_push + +;Lessen power of a push +; move *a10(PLYRMODE),a0 +; cmpi MODE_INAIR,a0 +; jrz #norm + + + SETMODE NORMAL + + clr a0 + move a0,*a10(OBJ_XVEL),L ;clr attacker's x-vel + + FACETBL #losebal + calla change_anim1a + + movi [8,0],a2 + +#tag + 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 + + WRSNDX PUSH_L1,PUSH_L2 + + move *a13(PLYRNUM),a1 + .ref get_health + calla get_health + subk 1,a0 + jrnz #norm + clr a0 + move a0,@hit_damage_pending +#norm + calla wres_collis_off + rets + +#losebal + .long hrt_4_losebal_anim ;0 Bret Hart + .long rzr_4_losebal_anim ;1 Razor Ramon + .long und_4_losebal_anim ;2 Undertaker + .long yok_4_losebal_anim ;3 Yokozuna + .long shn_4_losebal_anim ;4 Shawn Michaels + .long bam_4_losebal_anim ;5 Bam Bam + .long dnk_4_losebal_anim ;6 Doink + .long dnk_4_losebal_anim ;7 spare + .long lex_4_losebal_anim ;8 Lex Luger + .long dnk_4_losebal_anim ;9 Referee + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/REACT3.ASM b/REACT3.ASM new file mode 100755 index 0000000..2c6758f --- /dev/null +++ b/REACT3.ASM @@ -0,0 +1,362 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react3.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 CALL_MID_HIT + + .REF CALL_DROP_KICK + .ref change_anim1a + .ref wres_collis_off + .ref block_hit_flail + .ref block_hit + .ref face_each_other + .ref wres_slave_anim + .ref set_getup_time +; .ref check_dizzy + .ref hit_damage_pending + .ref DO_SCREAM + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + + +;BAM BAM + .ref bam_2_body_hit_anim,bam_4_body_hit_anim + .ref bam_fall_back_anim + +;DOINK + .ref dnk_fall_back_anim + +;BRET + .ref hrt_fall_back_anim +;LEX + .ref lex_2_body_hit_anim,lex_4_body_hit_anim + .ref lex_fall_back_anim + +;RAZOR + .ref rzr_2_body_hit_anim,rzr_4_body_hit_anim + .ref rzr_fall_back_anim + +;SHAWN + .ref shn_2_body_hit_anim,shn_4_body_hit_anim + .ref shn_fall_back_anim + +;TAKER + .ref und_2_body_hit_anim,und_4_body_hit_anim + .ref und_fall_back_anim + .ref und_2_knee_hit_anim,und_4_knee_hit_anim + +;YOKO + .ref yok_fall_back_anim + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + + + +#***************************************************************************** +;AMODE_BIGBOOT 11 + SUBR hit_bigboot + + move *a13(PLYRMODE),a1 + cmpi MODE_RUNNING,a1 +;No hit if not running + jrz #cont2 + cmpi MODE_INAIR,a1 + jrz #cont +#face + CALLA CALL_FACE_HIT + + GETLIFE + jrz #isdead + + WRSNDX FLYKICK_L1,FLYKICK_L2 +;this should really hurt..... + calla DO_SCREAM + + SETMODE NORMAL + + .ref head_hit2_tbl + FACE24TBL head_hit2_tbl + calla change_anim1a + +#isdead + calla wres_collis_off + rets + +#cont2 + movi 100,a0 + .ref RNDPER + calla RNDPER + jrhi #face +#cont + CALLA CALL_DROP_KICK + + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + GETLIFE + jrz #skip + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + +; calla inc_burnout + + SETMODE NORMAL +#skip + clr a0 + move a0,*a13(ROLL_POS) + calla set_getup_time + + .ref fall_back_tbl + FACETBL fall_back_tbl + calla change_anim1a + + 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 + movi [-3,0],a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + + + calla wres_collis_off + rets + +#no_hit + clr a14 + move a14,@hit_damage_pending + calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_KNEE 12 + SUBR hit_knee + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + CALLA CALL_MID_HIT + + + GETLIFE + jrz #isdead + + WRSNDX KICK_L1,KICK_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 #knee_hit_dizzy +; jruc #cont +; +;#not_dizzy +; calla inc_burnout + + SETMODE NORMAL + + FACE24TBL knee_hit_tbl +#cont + calla change_anim1a + + move *a10(OBJ_XVEL),a0,L ;slow down doink's + sra 3,a0 ;x_vel after collis + move a0,*a10(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets + + SUBR knee_hit_tbl + .ref hrt_2_knee_hit_anim,hrt_4_knee_hit_anim + .ref yok_2_knee_hit_anim,yok_4_knee_hit_anim + .ref rzr_2_knee_hit_anim,rzr_4_knee_hit_anim + .ref und_2_knee_hit_anim,und_4_knee_hit_anim + .ref shn_2_knee_hit_anim,shn_4_knee_hit_anim + .ref bam_2_knee_hit_anim,bam_4_knee_hit_anim + .ref dnk_2_knee_hit_anim + .ref lex_2_knee_hit_anim,lex_4_knee_hit_anim + + .long hrt_2_knee_hit_anim,hrt_4_knee_hit_anim ;0 Bret Hart + .long rzr_2_knee_hit_anim,rzr_4_knee_hit_anim ;1 Razor Ramon + .long und_2_knee_hit_anim,und_4_knee_hit_anim ;2 Undertaker + .long yok_2_knee_hit_anim,yok_4_knee_hit_anim ;3 Yokozuna + .long shn_2_knee_hit_anim,shn_4_knee_hit_anim ;4 Shawn Michaels + .long bam_2_knee_hit_anim,bam_4_knee_hit_anim ;5 Bam Bam + .long dnk_2_knee_hit_anim,dnk_2_knee_hit_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_knee_hit_anim,lex_4_knee_hit_anim ;8 Lex Luger + .long 0,0 ;9 Referee + +;#knee_hit_dizzy +; .ref hrt_4_knee_hit_dizzy_anim +; .ref yok_4_knee_hit_dizzy_anim +; .ref rzr_4_knee_hit_dizzy_anim +; .ref und_4_knee_hit_dizzy_anim +; .ref shn_4_knee_hit_dizzy_anim +; .ref bam_4_knee_hit_dizzy_anim +; .ref dnk_4_knee_hit_dizzy_anim +; .ref lex_4_knee_hit_dizzy_anim +; +; .long hrt_4_knee_hit_dizzy_anim,hrt_4_knee_hit_dizzy_anim ;0 Bret Hart +; .long rzr_4_knee_hit_dizzy_anim,rzr_4_knee_hit_dizzy_anim ;1 Razor Ramon +; .long und_4_knee_hit_dizzy_anim,und_4_knee_hit_dizzy_anim ;4 Undertaker +; .long yok_4_knee_hit_dizzy_anim,yok_4_knee_hit_dizzy_anim ;3 Yokozuna +; .long shn_4_knee_hit_dizzy_anim,shn_4_knee_hit_dizzy_anim ;4 Shawn Michaels +; .long bam_4_knee_hit_dizzy_anim,bam_4_knee_hit_dizzy_anim ;5 Bam Bam +; .long dnk_4_knee_hit_dizzy_anim,dnk_4_knee_hit_dizzy_anim ;6 Doink +; .long 0,0 ;7 spare +; .long lex_4_knee_hit_dizzy_anim,lex_4_knee_hit_dizzy_anim ;8 Lex Luger +; .long 0,0 ;9 Referee + + +#***************************************************************************** +;AMODE_KNEE 27 + SUBR hit_headknees + + WRSNDX KICK_L1,KICK_L2 + + movi 40000h,a0 + move a0,*a13(OBJ_YVEL),L + + FACETBL #knee_hit + calla change_anim1a + + calla wres_collis_off + rets + +#knee_hit + .ref dnk_quick_knee_hit_anim + .ref hrt_quick_knee_hit_anim + .ref yok_quick_knee_hit_anim + .ref bam_quick_knee_hit_anim + .ref und_quick_knee_hit_anim + .ref rzr_quick_knee_hit_anim + .ref shn_quick_knee_hit_anim + .ref lex_quick_knee_hit_anim + + .long hrt_quick_knee_hit_anim ;0 Bret Hart + .long rzr_quick_knee_hit_anim ;1 Razor Ramon + .long und_quick_knee_hit_anim ;2 Undertaker + .long yok_quick_knee_hit_anim ;3 Yokozuna + .long shn_quick_knee_hit_anim ;4 Shawn Michaels + .long bam_quick_knee_hit_anim ;5 Bam Bam + .long dnk_quick_knee_hit_anim ;6 Doink + .long 0 ;7 spare + .long lex_quick_knee_hit_anim ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** +;AMODE_BOXPUNCH 14 + SUBR hit_boxpunch + + 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. + + .ref CALL_FACE_HIT + CALLA CALL_FACE_HIT + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + WRSNDX FLYKICK_L1,FLYKICK_L2 + GETLIFE + jrz #skip + + + SETMODE NORMAL +#skip + movi 5*TSEC,a0 + move a0,*a13(GETUP_TIME) + + 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 + +#isdead + calla wres_collis_off + rets + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/REACT4.ASM b/REACT4.ASM new file mode 100755 index 0000000..0e8d539 --- /dev/null +++ b/REACT4.ASM @@ -0,0 +1,612 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react4.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 change_anim1a + .ref wres_collis_off + .ref block_hit_flail + .ref block_hit + .ref face_each_other + .ref CALL_NASTY_MOVE + .ref set_getup_time + .ref fall_back_tbl + .ref triple_sound + .ref ADD_IF_SILENT + .ref CALL_DROP_KICK,CALL_AVERAGE_MOVE + .ref DO_SCREAM + .ref shn_combo_run_stomp_anim + .ref shn_run_stomp_anim + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + + +;BAM BAM + .ref bam_2_head_hit2_anim,bam_4_head_hit2_anim + .ref bam_3_butt_drop_anim + +;DOINK + .ref dnk_2_head_hit2_anim,dnk_4_head_hit2_anim + .ref dnk_knockdwn_anim + .ref dnk_fall_back_anim + .ref dnk_head_hit_dizzy_anim + .ref dnk_3_head_held_anim + .ref dnk_belly_anim + +;BRET + .ref hrt_2_head_hit2_anim,hrt_4_head_hit2_anim + .ref hrt_4_head_hit_dizzy_anim + .ref hrt_running_ground_punch_anim + +;LEX + .ref lex_4_head_hit2_anim + .ref lex_head_hit_dizzy_anim + .ref lex_2_head_hit2_anim + .ref lex_flying_ground_punch_anim + +;RAZOR + .ref rzr_2_head_hit2_anim,rzr_4_head_hit2_anim + .ref rzr_2_head_hit3_anim,rzr_4_head_hit3_anim + + +;SHAWN + .ref shn_2_head_hit3_anim,shn_4_head_hit3_anim + .ref shn_4_head_hit_dizzy_anim + +;TAKER + .ref und_2_head_hit2_anim,und_4_head_hit2_anim + .ref und_fall_back_anim + .ref und_flying_butt_drop_anim + +;YOKO + .ref yok_2_head_hit2_anim,yok_4_head_hit2_anim + .ref yok_2_head_hit3_anim,yok_4_head_hit3_anim + +;MISC + .ref hit_damage_pending,hitonground_tbl + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +;AMODE_STOMP 15 +;AMODE_BUTTSTOMP 30 + SUBR hit_stomp + SUBR hit_buttstomp + + ;if we're standing, ignore this + move *a13(PLYRMODE),a0 + cmpi MODE_NORMAL,a0 + + jreq #mode_normal + + cmpi MODE_BLOCK,a0 + jreq #mode_normal + +; I need to move this around to maximise the coolness..... +; WRSNDX LBOWDROP_L1,LBOWDROP_L2 + +; calla inc_burnout + +;;; SETMODE 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 hitonground_tbl + calla change_anim1a + + + +;more nasty hacks... + move *a10(ANIBASE),a0,L + cmpi shn_combo_run_stomp_anim,a0 + jreq #do_unnormal_sounds + cmpi shn_run_stomp_anim,a0 + jrne #normal_sounds +#do_unnormal_sounds + calla DO_SCREAM + jruc #unnormal_sounds + +#normal_sounds + WRSNDX LBOWDROP_L1,LBOWDROP_L2 +; movi 33h,a0 + movi 43h,a0 + calla triple_sound + +#unnormal_sounds + move *a10(ANIBASE),a0,L + + cmpi dnk_belly_anim,a0 + jreq #bounce + + cmpi und_flying_butt_drop_anim,a0 + jreq #bounce + + cmpi lex_flying_ground_punch_anim,a0 + jreq #bounce3 + +; cmpi hrt_running_ground_punch_anim,a0 +; jreq #bounce2 + + jruc #isdead + +#bounce2 + ;REALLY NASTY HACK! Watch out if you modify this in any way. + callr #bounce + movi -10000h,a0 + move a0,*a10(OBJ_ZVEL),L + rets + +#bounce3 + ;REALLY NASTY HACK! Watch out if you modify this in any way. + callr #bounce + movi 40000h,a0 + move a0,*a10(OBJ_YVEL),L + rets + +#bounce +;Bounce doink up off from opponents chest before he hits the ground! + movi 50000h,a0 + move a0,*a10(OBJ_YVEL),L + movi 10000h,a0 + move a0,*a10(OBJ_ZVEL),L + clr a0 + move a0,*a10(OBJ_XVEL),L + + .ref shake_all_ropes + calla shake_all_ropes + PUSH a10 + movi 8,a10 + .ref SHAKER2 + calla SHAKER2 + PULL a10 + +#isdead + calla wres_collis_off + rets + +#mode_normal + ;OOPS! Don't do any damage. + clr a14 + move a14,@hit_damage_pending + jruc #isdead + + +#***************************************************************************** +;AMODE_BSTOMP 26 + SUBR hit_bstomp + + calla DO_SCREAM + calla wres_collis_off + + move *a13(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #on_grnd + cmpi MODE_DEAD,a0 + jrz #on_grnd + +;Knock standing opponent onto ground + + calla DO_SCREAM + movi 43h,a0 + calla triple_sound + + calla set_getup_time + + SETMODE NORMAL + move *a13(OBJ_YPOSINT),a14 + move *a13(GROUND_Y),a0 + sub a0,a14 + cmpi 20,a14 + jrge #fall_back + +#kdwn + FACETBL knockdwn + calla change_anim1a + calla wres_collis_off + + rets + +#fall_back + move *a10(WRESTLERNUM),a0 + cmpi 5,a0 + jrz #kdwn + FACETBL fall_back_tbl + + calla change_anim1a + calla wres_collis_off + + movi [2,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 + + movi -40000h,a0 + move a0,*a13(OBJ_YVEL),L + + rets + +#on_grnd + FACETBL hitonground_tbl + calla change_anim1a +#isdead + calla wres_collis_off + rets + +knockdwn + .ref hrt_knockdwn_anim + .ref rzr_knockdwn_anim + .ref und_knockdwn_anim + .ref yok_knockdwn_anim + .ref shn_knockdwn_anim + .ref bam_knockdwn_anim + .ref dnk_knockdwn_anim + .ref lex_knockdwn_anim + + .long hrt_knockdwn_anim ;0 Bret Hart + .long rzr_knockdwn_anim ;1 Razor Ramon + .long und_knockdwn_anim ;2 Undertaker + .long yok_knockdwn_anim ;3 Yokozuna + .long shn_knockdwn_anim ;4 Shawn Michaels + .long bam_knockdwn_anim ;5 Bam Bam + .long dnk_knockdwn_anim ;6 Doink + .long 0 ;7 spare + .long lex_knockdwn_anim ;8 Lex Luger + .long 0 ;9 Referee + +;#knockdwn_dizzy +; .long dnk_knockdwn_dizzy_anim ;0 Bret Hart +; .long dnk_knockdwn_dizzy_anim ;1 Razor Ramon +; .long dnk_knockdwn_dizzy_anim ;2 Undertaker +; .long dnk_knockdwn_dizzy_anim ;3 Yokozuna +; .long dnk_knockdwn_dizzy_anim ;4 Shawn Michaels +; .long dnk_knockdwn_dizzy_anim ;5 Bam Bam +; .long dnk_knockdwn_dizzy_anim ;6 Doink +; .long dnk_knockdwn_dizzy_anim ;7 spare +; .long dnk_knockdwn_dizzy_anim ;8 Lex Luger +; .long dnk_knockdwn_dizzy_anim ;9 Referee + +;AMODE_BSTOMP2 46 + SUBR hit_bstomp2 + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit_flail + rets + +#noblock + WRSNDX FLYKICK_L1,FLYKICK_L2 + calla wres_collis_off + +;Probably can't happen because attack box is up too high + move *a13(PLYRMODE),a0 +;LOVELY NASTY HACK !!! + MOVE *A10(COMBO_COUNT),A1 + JRNZ NOT_NORMAL_CHECK + cmpi MODE_ONGROUND,a0 + jrz #isdead + cmpi MODE_DEAD,a0 + jrz #isdead + JRUC NORMAL_CHECK +NOT_NORMAL_CHECK + move *a13(OBJ_CONTROL),a0 + xori M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + CLR A0 + MOVE A0,*A13(OBJ_YVEL),L + MOVE *A13(GROUND_Y),*A13(OBJ_YPOSINT) +NORMAL_CHECK + +;Knock standing opponent onto ground + calla set_getup_time + + calla DO_SCREAM + movi 43h,a0 + calla triple_sound + calla CALL_NASTY_MOVE + FACETBL knockdwn + calla change_anim1a + calla wres_collis_off + rets + +#***************************************************************************** +;AMODE_hammer 29 + SUBR hit_hammer + + movi 45h,a0 + calla triple_sound + calla CALL_NASTY_MOVE + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + jruc hit_bstomp + +#***************************************************************************** +;AMODE_SPINKICK 16 + SUBR hit_spinkick + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit_flail + rets + +#noblock + movi 43h,a0 + calla triple_sound + calla CALL_AVERAGE_MOVE + + GETLIFE + jrz #isdead + + WRSNDX KICK_L1,KICK_L2 + + SETMODE NORMAL + move *a13(OBJ_YPOSINT),a14 + move *a13(GROUND_Y),a0 + sub a0,a14 + cmpi 20,a14 + jrge #fall_back + + + FACE24TBL #head_hit2 + 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 + +#head_hit2 + REFLONG hrt_2_head_hit3_anim,hrt_4_head_hit3_anim ;0 Bret Hart + .long rzr_2_head_hit3_anim,rzr_4_head_hit3_anim ;1 Razor Ramon + .long und_2_head_hit2_anim,und_4_head_hit2_anim ;2 Undertaker + .long yok_2_head_hit3_anim,yok_4_head_hit3_anim ;3 Yokozuna + .long shn_2_head_hit3_anim,shn_4_head_hit3_anim ;4 Shawn Michaels + .long bam_2_head_hit2_anim,bam_4_head_hit2_anim ;5 Bam Bam + .long dnk_2_head_hit2_anim,dnk_4_head_hit2_anim ;6 Doink + .long 0,0 ;7 spare + REFLONG lex_2_head_hit3_anim,lex_4_head_hit3_anim ;8 Lex Luger + .long 0,0 ;9 Referee + +#***************************************************************************** +;AMODE_CLINE 17 + SUBR hit_cline + + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit_flail + rets + +#noblock + + calla CALL_DROP_KICK + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + WRSNDX FLYKICK_L1,FLYKICK_L2 + + GETLIFE + jrz #skip + + +; calla inc_burnout + + SETMODE NORMAL + +#skip +; move *a10(OBJ_XVEL),a0,L ;slow down doink's +; sra 1,a0 ;x_vel after collis +; move a0,*a10(OBJ_XVEL),L + + clr a0 + move a0,*a10(OBJ_ZVEL),L ;Zero zvel after collis + + move *a10(OBJ_ZPOS),a0,L + subi [1,0],a0 + move a0,*a13(OBJ_ZPOS),L + + move a0,*a13(ROLL_POS) + calla set_getup_time + + FACETBL #fall_back2 + calla change_anim1a + + movi [3,0],a2 + move *a10(OBJ_XVEL),a0,L + jrp #fall_right + neg 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 + +#isdead + calla wres_collis_off + rets + +#fall_back2 + REFLONG hrt_fall_back2_anim ;0 Bret Hart + REFLONG rzr_fall_back2_anim ;1 Razor Ramon + REFLONG und_fall_back2_anim ;2 Undertaker + REFLONG yok_fall_back2_anim ;3 Yokozuna + REFLONG shn_fall_back2_anim ;4 Shawn Michaels + REFLONG bam_fall_back2_anim ;5 Bam Bam + REFLONG dnk_fall_back2_anim ;6 Doink + .long 0 ;7 spare + REFLONG lex_fall_back2_anim ;8 Lex Luger + + +#***************************************************************************** +;AMODE_HEADHOLD 18 + SUBR hit_headhold + + rets + +#***************************************************************************** +;AMODE_JUMPKICK 19 + SUBR hit_jumpkick + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit_flail + rets + +#noblock + + GETLIFE + jrz #isdead + + WRSNDX KICK_L1,KICK_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 +; calla change_anim1a +; +;#isdead +; calla wres_collis_off +; rets +; +;#not_dizzy + + SETMODE NORMAL + move *a13(OBJ_YPOSINT),a14 + move *a13(GROUND_Y),a0 + sub a0,a14 + cmpi 20,a14 + jrge #fall_back + + + FACE24TBL #head_hit2 + 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 + + +#head_hit2 + .long hrt_2_head_hit2_anim,hrt_4_head_hit2_anim ;0 Bret Hart + .long rzr_2_head_hit2_anim,rzr_4_head_hit2_anim ;1 Razor Ramon + .long und_2_head_hit2_anim,und_4_head_hit2_anim ;2 Undertaker + .long yok_2_head_hit2_anim,yok_4_head_hit2_anim ;3 Yokozuna + .long shn_2_head_hit3_anim,shn_4_head_hit3_anim ;4 Shawn Michaels + .long bam_2_head_hit2_anim,bam_4_head_hit2_anim ;5 Bam Bam + .long dnk_2_head_hit2_anim,dnk_4_head_hit2_anim ;6 Doink + .long dnk_2_head_hit2_anim,dnk_4_head_hit2_anim ;7 spare + .long lex_2_head_hit2_anim,lex_4_head_hit2_anim ;8 Lex Luger + .long dnk_2_head_hit2_anim,dnk_4_head_hit2_anim ;9 Referee + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/REACT5.ASM b/REACT5.ASM new file mode 100755 index 0000000..605718b --- /dev/null +++ b/REACT5.ASM @@ -0,0 +1,917 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react5.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" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref change_anim1a + .ref wres_collis_off +; .ref inc_burnout + .ref block_hit_flail + .ref block_hit +; .ref create_damage_points + .ref slide_offscr +; .ref check_dizzy + .ref wres_slave_anim + .ref triple_sound,CALL_AVERAGE_MOVE + .ref CALL_NASTY_MOVE,PCNT + + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + + +;BAM BAM + .ref bam_2_head_hit2_anim + .ref bam_4_head_hit2_anim + .ref bam_4_losebal_anim + .ref bam_fall_back_anim + .ref bam_get_buzz_anim + +;DOINK + .ref dnk_2_bncoff_anim + .ref dnk_4_bncoff_dizzy_anim + .ref dnk_4_bncoff_anim + .ref dnk_4_losebal_anim + .ref dnk_4_losebal_dizzy_anim + .ref dnk_get_buzz_anim + .ref dnk_head_hit2_anim + .ref dnk_head_hit_dizzy_anim + .ref dnk_2_head_hit2_anim,dnk_4_head_hit2_anim + .ref dnk_fall_back_anim + +;BRET + .ref hrt_fall_back_anim,hrt_4_losebal_dizzy_anim + .ref hrt_2_head_hit2_anim,hrt_4_head_hit2_anim + .ref hrt_4_head_hit_dizzy_anim + .ref hrt_get_buzz_anim,hrt_4_losebal_anim + +;LEX + .ref lex_2_head_hit2_anim,lex_4_head_hit2_anim + .ref lex_head_hit_dizzy_anim + .ref lex_4_losebal_anim + .ref lex_fall_back_anim + .ref lex_get_buzz_anim + +;RAZOR + .ref rzr_2_head_hit2_anim,rzr_4_head_hit2_anim + .ref rzr_4_losebal_anim + .ref rzr_fall_back_anim + .ref rzr_get_buzz_anim + +;SHAWN + .ref shn_4_head_hit_dizzy_anim + .ref shn_2_head_hit3_anim,shn_4_head_hit3_anim + .ref shn_fall_back_anim + .ref shn_4_losebal_anim + .ref shn_get_buzz_anim + +;TAKER + .ref und_fall_back_anim + .ref und_get_buzz_anim + .ref und_2_head_hit2_anim,und_4_head_hit2_anim + .ref und_head_hit_dizzy_anim + .ref und_4_losebal_dizzy_anim + .ref und_4_losebal_anim + .ref und_4_bncoff_dizzy_anim + .ref und_2_bncoff_anim,und_4_bncoff_anim + +;YOKO + .ref yok_fall_back_anim + .ref yok_get_buzz_anim + .ref yok_4_losebal_anim + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +#***************************************************************************** +;AMODE_RUN 20 + +;Return carry set if the run hit is good and will count, clear if it's going +; to be discarded anyway. + + SUBR good_run_hit + +;Ignore most running collisions + move *a13(OBJ_ZPOS),a0,L + move *a10(OBJ_ZPOS),a1,L + sub a0,a1 + abs a1 + srl 16,a1 +;FIXX!! Unless it is Yoko! + move *a10(WRESTLERNUM),a0 + cmpi 3,a0 + jrnz #notyok +;Yoko + + +;This fixes YOKO gut hitting you after he is flung + move *a10(GETUP_TIME),a0 ;delay b4 gaining control + jrnz #bad + + + + + cmpi 5,a1 ;if yoko ;15 + jrlt #good +#notyok + cmpi 2,a1 ;6 + jrgt #bad + +#good setc + rets +#bad clrc + rets + + SUBR hit_run + +;Tell running wrestler to stop running, and push other guy out of the way. + callr good_run_hit + jrnc #skip + + move *a13(PLYRMODE),a1 + + cmpi MODE_INAIR,a1 + jrz #isdead + cmpi MODE_INAIR2,a1 + jrz #isdead + + 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 + + movi [3,0],a0 + move a0,*a13(OBJ_YVEL),L + + jruc #gotblk + +#noblock +;If player is on ground, ignore running collisions! + move *a13(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #isdead + + GETLIFE + jrz #isdead + + WRSNDX LBOWDROP_L1,LBOWDROP_L2 + + SETMODE NORMAL + + FACETBL #losebal + + move *a10(WRESTLERNUM),a1 + cmpi 3,a1 + jrnz #notyok2 +;Yoko ran into me! + .ref fall_back_tbl + FACETBL fall_back_tbl + calla change_anim1a + + + .ref hit_damage_pending + movi -D_GUTPUSH,a0 + move a0,@hit_damage_pending + + + 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 + movi [-3,0],a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + + jruc #gotblk + +; move *a13(PLYR_DIZZY),a1 +; jrz #notdiz +;;Guy is dizzy, need to stay in dizzy after losing balance +; FACETBL #losebal_dizzy +; +;#notdiz + +#notyok2 + calla change_anim1a + +#gotblk + calla wres_collis_off + +;This is what happens to running wrestler. + + movi [3,0],a0 + move a0,*a10(OBJ_YVEL),L + + movi MODE_NORMAL,a0 + move a0,*a10(PLYRMODE) + + move *a10(PLYR_DIZZY),a0 + jrz #notdiz0 + +;Running guy is in dizzy mode, bounce off and stay dizzy! + clr a0 + move a0,*a10(RUN_TIME) + SWAP a10,a13 + + FACETBL #bncoff_dizzy + jruc #cnt + +#notdiz0 + move *a10(GETUP_TIME),a0 + jrz #skipm + + +;Cause getup meter to slide off screen. + move *a10(METER_PROC),a0,L + jrz #skipm ;skip if we don't have a getup meter + PUSH a8,a9,a10 + move *a0(PA8),a8,L + move *a0(PA9),a9,L + move *a0(PA10),a10,L + movi GETUP_PID,a1 + movi slide_offscr,a7 + calla XFERPROC + PULL a8,a9,a10 + +#skipm clr a0 + move a0,*a10(RUN_TIME) + move a0,*a13(RUN_TIME) + move a0,*a10(GETUP_TIME) + + + SWAP a10,a13 + + FACE24TBL bncoff +#cnt + calla change_anim1a + SWAP a10,a13 + + movi [3,0],a2 + move *a10(OBJ_XPOSINT),a0 + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;offx - defx + jrlt #right + neg a2 +#right + move a2,*a10(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets +#skip move *a13(MOVE_DIR),a14 + .ref new_victim_movedir + move a14,@new_victim_movedir + calla wres_collis_off + rets + +#losebal + .long hrt_4_losebal_anim ;0 Bret Hart + .long rzr_4_losebal_anim ;1 Razor Ramon + .long und_4_losebal_anim ;2 Undertaker + .long yok_4_losebal_anim ;3 Yokozuna + .long shn_4_losebal_anim ;4 Shawn Michaels + .long bam_4_losebal_anim ;5 Bam Bam + .long dnk_4_losebal_anim ;6 Doink + .long dnk_4_losebal_anim ;7 spare + .long lex_4_losebal_anim ;8 Lex Luger + .long dnk_4_losebal_anim ;9 Referee + +;Fix!!! +;#losebal_dizzy +; .long hrt_4_losebal_dizzy_anim ;0 Bret Hart +; .long dnk_4_losebal_dizzy_anim ;1 Razor Ramon +; .long und_4_losebal_dizzy_anim ;2 Undertaker +; .long dnk_4_losebal_dizzy_anim ;3 Yokozuna +; .long dnk_4_losebal_dizzy_anim ;4 Shawn Michaels +; .long dnk_4_losebal_dizzy_anim ;5 Bam Bam +; .long dnk_4_losebal_dizzy_anim ;6 Doink +; .long dnk_4_losebal_dizzy_anim ;7 spare +; .long dnk_4_losebal_dizzy_anim ;8 Lex Luger +; .long dnk_4_losebal_dizzy_anim ;9 Referee + SUBR bncoff + .ref rzr_2_bncoff_anim,rzr_4_bncoff_anim + .ref hrt_2_bncoff_anim,hrt_4_bncoff_anim + .ref bam_2_bncoff_anim,bam_4_bncoff_anim + .ref yok_2_bncoff_anim,yok_4_bncoff_anim + .ref shn_2_bncoff_anim,shn_4_bncoff_anim + .ref lex_2_bncoff_anim,lex_4_bncoff_anim + .ref und_2_bncoff_anim,und_4_bncoff_anim + + .long hrt_2_bncoff_anim,hrt_4_bncoff_anim ;0 Bret Hart + .long rzr_2_bncoff_anim,rzr_4_bncoff_anim ;1 Razor Ramon + .long und_2_bncoff_anim,und_4_bncoff_anim ;2 Undertaker + .long yok_2_bncoff_anim,yok_4_bncoff_anim ;3 Yokozuna + .long shn_2_bncoff_anim,shn_4_bncoff_anim ;4 Shawn Michaels + .long bam_2_bncoff_anim,bam_4_bncoff_anim ;5 Bam Bam + .long dnk_2_bncoff_anim,dnk_4_bncoff_anim ;6 Doink + .long dnk_2_bncoff_anim,dnk_4_bncoff_anim ;7 spare + .long lex_2_bncoff_anim,lex_4_bncoff_anim ;8 Lex Luger + .long dnk_2_bncoff_anim,dnk_4_bncoff_anim ;9 Referee + + SUBR bncoff_gate + + .ref yok_2_bncoff_gate_anim,yok_4_bncoff_gate_anim + + .long hrt_2_bncoff_anim,hrt_4_bncoff_anim ;0 Bret Hart + .long rzr_2_bncoff_anim,rzr_4_bncoff_anim ;1 Razor Ramon + .long und_2_bncoff_anim,und_4_bncoff_anim ;2 Undertaker + .long yok_2_bncoff_gate_anim,yok_4_bncoff_gate_anim ;3 Yokozuna + .long shn_2_bncoff_anim,shn_4_bncoff_anim ;4 Shawn Michaels + .long bam_2_bncoff_anim,bam_4_bncoff_anim ;5 Bam Bam + .long dnk_2_bncoff_anim,dnk_4_bncoff_anim ;6 Doink + .long dnk_2_bncoff_anim,dnk_4_bncoff_anim ;7 spare + .long lex_2_bncoff_anim,lex_4_bncoff_anim ;8 Lex Luger + .long dnk_2_bncoff_anim,dnk_4_bncoff_anim ;9 Referee + + +#bncoff_dizzy + .ref rzr_4_bncoff_dizzy_anim + .ref hrt_4_bncoff_dizzy_anim + .ref bam_4_bncoff_dizzy_anim + .ref yok_4_bncoff_dizzy_anim + .ref shn_4_bncoff_dizzy_anim + .ref und_4_bncoff_dizzy_anim + .ref lex_4_bncoff_dizzy_anim + + .long hrt_4_bncoff_dizzy_anim ;0 Bret Hart + .long rzr_4_bncoff_dizzy_anim ;1 Razor Ramon + .long und_4_bncoff_dizzy_anim ;2 Undertaker + .long yok_4_bncoff_dizzy_anim ;3 Yokozuna + .long shn_4_bncoff_dizzy_anim ;4 Shawn Michaels + .long bam_4_bncoff_dizzy_anim ;5 Bam Bam + .long dnk_4_bncoff_dizzy_anim ;6 Doink + .long dnk_4_bncoff_dizzy_anim ;7 spare + .long lex_4_bncoff_dizzy_anim ;8 Lex Luger + .long dnk_4_bncoff_dizzy_anim ;9 Referee + + +#***************************************************************************** +;AMODE_PUPPET 21 + SUBR hit_puppet + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + ;no need for this check now. AMODE_PUPPET vs. dead guy won't even + ; register a collision now. +; ;don't grab dead guys +; move *a13(PLYRMODE),a14 +; cmpi MODE_DEAD,a14 +; jreq #done + + SUBR hit_puppet_even_if_dead + SETMODE PUPPET + + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + + movi wres_slave_anim,a0 + calla change_anim1a + + clr a0 + move a0,*a13(GETUP_TIME) + +#done calla wres_collis_off + rets + +#***************************************************************************** +;AMODE_PUPPET 53 + SUBR hit_puppet_noflail +;Used for puppet moves that will not flail opponent +;just cause them to do regular hit block + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + ;don't grab dead guys + move *a13(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #done + + SETMODE PUPPET + + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + + movi wres_slave_anim,a0 + calla change_anim1a + + clr a0 + move a0,*a13(GETUP_TIME) + +#done calla wres_collis_off + rets + +#***************************************************************************** +;AMODE_PUPPET2 31 + SUBR hit_puppet2 + +;A puppet mode for ignoring puppet move if getup time is zero +;Used for hair pickup against a rolling/getting up opponent! + + move *a13(GETUP_TIME),a0 + jrz #out + + ;don't grab dead guys + move *a13(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #done + + SETMODE PUPPET + + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + + movi wres_slave_anim,a0 + calla change_anim1a + + clr a0 + move a0,*a13(GETUP_TIME) + + calla wres_collis_off + rets +#out + move *a10(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a10(ANIMODE) + +#done calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_PUPPET 32 + SUBR hit_puppet_hdgrab + +;This is a special attack mode which ignores blocking opponents! +;UNLESS they've got a safe time set. + move *a13(SAFE_TIME),a0 + jrz #noblock + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrne #noblock + + calla block_hit_flail + rets + +#noblock + ;don't grab dead guys + move *a13(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #done + + clr a14 + move a14,*a10(HITBLOCKER) + + move @PCNT,a14 + move a14,*a13(HEAD_GRAB_TIME) + + SETMODE PUPPET + + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + + movi wres_slave_anim,a0 + calla change_anim1a + + clr a0 + move a0,*a13(GETUP_TIME) + +#done calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_PUPPET 54 + SUBR hit_puppet_toss + +;This is a special attack mode which ignores blocking opponents! + move *a13(SAFE_TIME),a0 + jrz #noblock + +;If safe time is set, just holding block will suffice + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock2 + + calla block_hit + rets + +#noblock + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock2 + +;If stick is down & away - skip toss + move *a13(STICK_VAL_CUR),a14 + andi 0ch,a14 + jrz #noblock2 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a14,a1 + jrz #noblock2 + + move *a13(STICK_VAL_CUR),a14 + btst 1,a14 + jrz #noblock2 +;Pulling down & away! +;Don't allow hiptoss + + calla block_hit + rets + + +#noblock2 + +;;don't grab dead guys +; move *a13(PLYRMODE),a14 +; cmpi MODE_DEAD,a14 +; jreq #done + + clr a14 + move a14,*a10(HITBLOCKER) + +; move @PCNT,a14 +; move a14,*a13(HEAD_GRAB_TIME) + + SETMODE PUPPET + + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + + movi wres_slave_anim,a0 + calla change_anim1a + + clr a0 + move a0,*a13(GETUP_TIME) + +#done calla wres_collis_off + rets + +#***************************************************************************** +;AMODE_BACKHAND 22 - SLAP + SUBR hit_backhand + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit_flail + rets + +#noblock + + ;if it's shawn, do 33h instead of 43h + movi 33h,a0 + move *a10(WRESTLERNUM),a14 + subk W_SHAWN,a14 + jrz #snd_ok + movi 43h,a0 +#snd_ok calla triple_sound + + calla CALL_AVERAGE_MOVE + + GETLIFE + jrz #isdead + + WRSNDX UPRCUT_L2 + +; WRSNDX HDBUTT_L1,HDBUTT_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 +; calla change_anim1a +; +; +;#not_dizzy + + SETMODE NORMAL + move *a13(OBJ_YPOSINT),a14 + move *a13(GROUND_Y),a0 + sub a0,a14 + cmpi 20,a14 + jrge #fall_back + + + FACE24TBL #head_hit2 + calla change_anim1a + calla wres_collis_off + + rets + +#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 + +#head_hit2 +;No z float.. + .ref lex_2_head_hit3_anim,lex_4_head_hit3_anim + .ref rzr_2_head_hit3_anim,rzr_4_head_hit3_anim + .ref yok_2_head_hit3_anim,yok_4_head_hit3_anim + .ref hrt_2_head_hit3_anim,hrt_4_head_hit3_anim + + .long hrt_2_head_hit3_anim,hrt_4_head_hit3_anim ;0 Bret Hart + .long rzr_2_head_hit3_anim,rzr_4_head_hit3_anim ;1 Razor Ramon + .long und_2_head_hit2_anim,und_4_head_hit2_anim ;2 Undertaker + .long yok_2_head_hit3_anim,yok_4_head_hit3_anim ;3 Yokozuna + .long shn_2_head_hit3_anim,shn_4_head_hit3_anim ;4 Shawn Michaels + .long bam_2_head_hit2_anim,bam_4_head_hit2_anim ;5 Bam Bam + .long dnk_2_head_hit2_anim,dnk_4_head_hit2_anim ;6 Doink + .long 0,0 ;7 spare + .long lex_2_head_hit3_anim,lex_4_head_hit3_anim ;8 Lex Luger + .long 0,0 ;9 Referee + +;#head_hit_dizzy +; .ref bam_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim +; .ref und_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim +; +; .long hrt_4_head_hit_dizzy_anim,hrt_4_head_hit_dizzy_anim ;0 Bret Hart +; .long rzr_4_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim ;1 Razor Ramon +; .long und_head_hit_dizzy_anim,und_head_hit_dizzy_anim ;2 Undertaker +; .long yok_4_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim ;3 Yokozuna +; .long shn_4_head_hit_dizzy_anim,shn_4_head_hit_dizzy_anim ;4 Shawn Michaels +; .long bam_head_hit_dizzy_anim,bam_head_hit_dizzy_anim ;5 Bam Bam +; .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;6 Doink +; .long 0,0 ;7 spare +; .long lex_head_hit_dizzy_anim,lex_head_hit_dizzy_anim ;8 Lex Luger +; .long 0,0 ;9 Referee +; + +#***************************************************************************** +;AMODE_EARSLAP 28 - SLAP + SUBR hit_earslap + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + + movi 43h,a0 + calla triple_sound + + GETLIFE + jrz #isdead + + WRSNDX HDBUTT_L2 + +; move *a13(PLYR_DIZZY),a0 +; jrnz #diz +; +; calla check_dizzy +; jrz #not_dizzy +; +; movi 5*TSEC,a0 +; move a0,*a13(GETUP_TIME) +; +;#diz +; FACETBL #head_hit_dizzy +; calla change_anim1a +; +;#isdead +; calla wres_collis_off +; rets +;#not_dizzy + + SETMODE NORMAL + + FACETBL #head_hit2 + calla change_anim1a + +#isdead + calla wres_collis_off + rets + +#head_hit2 +;No z float.. + .ref lex_4_head_hit4_anim + .ref rzr_4_head_hit4_anim + .ref yok_4_head_hit4_anim + .ref hrt_4_head_hit4_anim + .ref und_4_head_hit4_anim + .ref bam_4_head_hit4_anim + .ref dnk_4_head_hit4_anim + .ref shn_4_head_hit4_anim + + .long hrt_4_head_hit4_anim ;0 Bret Hart + .long rzr_4_head_hit4_anim ;1 Razor Ramon + .long und_4_head_hit4_anim ;2 Undertaker + .long yok_4_head_hit4_anim ;3 Yokozuna + .long shn_4_head_hit4_anim ;4 Shawn Michaels + .long bam_4_head_hit4_anim ;5 Bam Bam + .long dnk_4_head_hit4_anim ;6 Doink + .long 0 ;7 spare + .long lex_4_head_hit4_anim ;8 Lex Luger + .long 0 ;9 Referee + +;#head_hit_dizzy +; +; .long hrt_4_head_hit_dizzy_anim +; .long rzr_4_head_hit_dizzy_anim +; .long und_head_hit_dizzy_anim +; .long yok_4_head_hit_dizzy_anim +; .long shn_4_head_hit_dizzy_anim +; .long bam_head_hit_dizzy_anim +; .long dnk_head_hit_dizzy_anim +; .long 0 ;7 spare +; .long lex_head_hit_dizzy_anim +; .long 0 ;9 Referee + + +#***************************************************************************** +;AMODE_BUZZ 23 + SUBR hit_buzz + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit + rets + +#noblock + +;All of the damage amounts need to be in lookup tables linked to the wrestler +;who actually struck the blow. +; calla CALL_NASTY_MOVE + + + GETLIFE +;Bug! We want to see the electrocution! +;FIX!! + jrz #isdead + + SETMODE NORMAL + +#isdead + move a10,*a13(ATTACH_PROC),L ;proc attached to + move a13,*a10(ATTACH_PROC),L + +; movi wres_slave_anim,a0 +; calla change_anim1a + + +; calla create_damage_points +;Buzz sound + WRSNDX PUNCH_L1,PUNCH_L2 + + FACETBL #get_buzz + calla change_anim1a + calla wres_collis_off + + rets + +#get_buzz + .long hrt_get_buzz_anim ;0 Bret Hart + .long rzr_get_buzz_anim ;1 Razor Ramon + .long und_get_buzz_anim ;2 Undertaker + .long yok_get_buzz_anim ;3 Yokozuna + .long shn_get_buzz_anim ;4 Shawn Michaels + .long bam_get_buzz_anim ;5 Bam Bam + .long dnk_get_buzz_anim ;6 Doink + .long 0 ;7 spare + .long lex_get_buzz_anim ;8 Lex Luger + .long 0 ;9 Referee + +#***************************************************************************** +;AMODE_HAYMAKER 24 + SUBR hit_haymaker + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit_flail + rets + +#noblock + + +; movi 40,a0 +; calla inc_getup_time + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + WRSNDX FLYKICK_L1,FLYKICK_L2 + GETLIFE + jrz #skip + + SETMODE NORMAL +#skip + FACETBL #fall_back + 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 + +#isdead + calla wres_collis_off + rets + +#fall_back + .long hrt_fall_back_anim ;0 Bret Hart + .long rzr_fall_back_anim ;1 Razor Ramon + .long und_fall_back_anim ;2 Undertaker + .long yok_fall_back_anim ;3 Yokozuna + .long shn_fall_back_anim ;4 Shawn Michaels + .long bam_fall_back_anim ;5 Bam Bam + .long dnk_fall_back_anim ;6 Doink + .long 0 ;7 spare + .long lex_fall_back_anim ;8 Lex Luger + .long 0 ;9 Referee + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/REACT6.ASM b/REACT6.ASM new file mode 100755 index 0000000..698fa6e --- /dev/null +++ b/REACT6.ASM @@ -0,0 +1,65 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react6.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 change_anim1a +; .ref inc_burnout + .ref set_getup_time + .ref wres_collis_off + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +;AMODE_ATT28 28 + SUBR hit_att28 + + rets + + +#***************************************************************************** +;AMODE_ATT29 29 + SUBR hit_att29 + + rets + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/REACT7.ASM b/REACT7.ASM new file mode 100755 index 0000000..f8ca0a3 --- /dev/null +++ b/REACT7.ASM @@ -0,0 +1,94 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react7.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 + +****************************************************************************** +* EXTERNAL ANIM SEQUENCES + +;BAM BAM +;DOINK +;BRET +;LEX +;RAZOR +;SHAWN +;TAKER +;YOKO + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + + +#***************************************************************************** +;AMODE_ATT30 30 + SUBR hit_att30 + + rets + + +#***************************************************************************** +;AMODE_ATT31 31 + SUBR hit_att31 + + rets + + +#***************************************************************************** +;AMODE_ATT32 32 + SUBR hit_att32 + + rets + + +#***************************************************************************** +;AMODE_ATT33 33 + SUBR hit_att33 + + rets + + +#***************************************************************************** +;AMODE_ATT34 34 + SUBR hit_att34 + + rets + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/REACT8.ASM b/REACT8.ASM new file mode 100755 index 0000000..6c1a7a8 --- /dev/null +++ b/REACT8.ASM @@ -0,0 +1,269 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 8/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "react8.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 + +;BAM BAM + .ref bam_2_head_hit_anim,bam_4_head_hit_anim + .ref bam_head_hit_dizzy_anim + +;DOINK + .ref dnk_fall_back_anim,dnk_2_head_hit_anim + .ref dnk_head_hit_dizzy_anim,dnk_4_head_hit_anim + +;BRET + .ref hrt_fall_back_anim,hrt_4_head_hit_dizzy_anim + .ref hrt_4_head_hit_anim,hrt_2_head_hit_anim + +;LEX + .ref lex_fall_back_anim,lex_2_head_hit_anim + .ref lex_4_head_hit_anim,lex_head_hit_dizzy_anim + +;RAZOR + .ref rzr_fall_back_anim,rzr_2_head_hit_anim + .ref rzr_4_head_hit_dizzy_anim,rzr_4_head_hit_anim + +;SHAWN + .ref shn_fall_back_anim,shn_4_head_hit_dizzy_anim + .ref shn_2_head_hit_anim,shn_4_head_hit_anim + +;TAKER + .ref und_fall_back_anim,und_head_hit_dizzy_anim + .ref und_2_head_hit_anim,und_4_head_hit_anim + +;YOKO + .ref yok_fall_back_anim,yok_2_head_hit_anim + .ref yok_4_head_hit_dizzy_anim,yok_4_head_hit_anim + +;MISC + .ref block_hit_flail + .ref change_anim1a,wres_collis_off,block_hit,CALL_NASTY_MOVE + .ref set_getup_time +;,check_dizzy + .ref wres_slave_anim,hit_flykick,hit_damage_pending + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + + +#***************************************************************************** +;AMODE_ATT35 35 + SUBR hit_shnbfkik + + ;This has to be a separate attack mode so damage can be different, + ; but the reaction is same as for a flying kick. + + jauc hit_flykick + +#***************************************************************************** +;AMODE_SHNSPDKIK 36 (shawn speedkick) + SUBR hit_shnspdkik + + 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 + + GETLIFE + jrz #isdead + +; calla create_damage_points + + WRSNDX KICK_L1,KICK_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 +; calla change_anim1a +; +;#isdead +; calla wres_collis_off +; +; rets +; +;#not_dizzy + +; calla inc_burnout + SETMODE NORMAL + +#do_hit + FACE24TBL #head_hit + calla change_anim1a +#isdead + calla wres_collis_off + rets + +#head_hit + .long hrt_2_head_hit_anim,hrt_4_head_hit_anim ;0 Bret Hart + .long rzr_2_head_hit_anim,rzr_4_head_hit_anim ;1 Razor Ramon + .long und_2_head_hit_anim,und_4_head_hit_anim ;2 Undertaker + .long yok_2_head_hit_anim,yok_4_head_hit_anim ;3 Yokozuna + .long shn_2_head_hit_anim,shn_4_head_hit_anim ;4 Shawn Michaels + .long bam_2_head_hit_anim,bam_4_head_hit_anim ;5 Bam Bam + .long dnk_2_head_hit_anim,dnk_4_head_hit_anim ;6 Doink + .long dnk_2_head_hit_anim,dnk_4_head_hit_anim ;7 spare + .long lex_2_head_hit_anim,lex_4_head_hit_anim ;8 Lex Luger + .long dnk_2_head_hit_anim,dnk_4_head_hit_anim ;9 Referee + +;#head_hit_dizzy +; .long hrt_4_head_hit_dizzy_anim,hrt_4_head_hit_dizzy_anim ;0 Bret Hart +; .long rzr_4_head_hit_dizzy_anim,rzr_4_head_hit_dizzy_anim ;1 Razor Ramon +; .long und_head_hit_dizzy_anim,und_head_hit_dizzy_anim ;2 Undertaker +; .long yok_4_head_hit_dizzy_anim,yok_4_head_hit_dizzy_anim ;3 Yokozuna +; .long shn_4_head_hit_dizzy_anim,shn_4_head_hit_dizzy_anim ;4 Shawn Michaels +; .long bam_head_hit_dizzy_anim,bam_head_hit_dizzy_anim ;5 Bam Bam +; .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;6 Doink +; .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;7 spare +; .long lex_head_hit_dizzy_anim,lex_head_hit_dizzy_anim ;8 Lex Luger +; .long dnk_head_hit_dizzy_anim,dnk_head_hit_dizzy_anim ;9 Referee + +#***************************************************************************** +;AMODE_ATT37 37 (shawn speed kick, third hit) + SUBR hit_shnspdkik2 + + move *a13(PLYRMODE),a1 + cmpi MODE_BLOCK,a1 + jrnz #noblock + + calla block_hit_flail + rets + +#noblock + +;Any hit mode which does a fall back sequence onto the ground +;will not check dizzy at the start. +;The check dizzy happens in the sequence. + + WRSNDX FLYKICK_L1,FLYKICK_L2 + GETLIFE + jrz #skip + + +; calla inc_burnout + + SETMODE NORMAL +#skip + clr a0 + move a0,*a10(OBJ_ZVEL),L ;Zero zvel after collis + + move a0,*a13(ROLL_POS) + calla set_getup_time + + FACETBL #fall_back + calla change_anim1a + + + 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 + neg a2 +#fall_right + move a2,*a13(OBJ_XVEL),L + +#isdead + calla wres_collis_off + rets + +#fall_back + .long hrt_fall_back_anim ;0 Bret Hart + .long rzr_fall_back_anim ;1 Razor Ramon + .long und_fall_back_anim ;2 Undertaker + .long yok_fall_back_anim ;3 Yokozuna + .long shn_fall_back_anim ;4 Shawn Michaels + .ref bam_fall_back_anim + .long bam_fall_back_anim ;5 Bam Bam + .long dnk_fall_back_anim ;6 Doink + .long dnk_fall_back_anim ;7 spare + .long lex_fall_back_anim ;8 Lex Luger + .long dnk_fall_back_anim ;9 Referee + + +#***************************************************************************** +;AMODE_ATT38 38 + SUBR hit_hitcheck + + ;clear hit_damage_pending, just to be safe. + clr a14 + move a14,@hit_damage_pending + + calla wres_collis_off + rets + + +#***************************************************************************** +;AMODE_FLYELBOW 39 + SUBR hit_flyelbow + + ;do a normal hit_flykick. It'll return carry if the victim was + ; blocking, or clear carry if hit hit normally, in which case + ; it will also muck about with our x velocity, which we'll want + ; to undo. + calla hit_flykick + jrc #done + + ;okay, we've hit, done all that stuff, and had our velocity + ; negated and halfed. negate it again, 'cuz we don't want to + ; bounce off with a flying elbow. it looks goofy. + move *a10(OBJ_XVEL),a14,L + neg a14 + move a14,*a10(OBJ_XVEL),L + +#done rets + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/REACT9.ASM b/REACT9.ASM new file mode 100755 index 0000000..661072e --- /dev/null +++ b/REACT9.ASM @@ -0,0 +1,279 @@ +************************************************************** +* +* 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 + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..928ff16 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# wwf-wrestlemania diff --git a/REF.ASM b/REF.ASM new file mode 100755 index 0000000..d011991 --- /dev/null +++ b/REF.ASM @@ -0,0 +1,1232 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 4/16/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "ref.asm" + .title "referee 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 "fontsimg.glo" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .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 change_anim1,change_anim1a + .ref change_anim2,change_anim2a + .ref set_wrestler_xflip + .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 inc_burnout + .ref PCNT + + ;from DCSSOUND.ASM + .ref triple_sound + + ;from DISPLAY.ASM + .ref BEGINOBJ_TBL + + ;from HSTD.ASM + .ref BINBCD + + ;from ROBO.ASM + .ref civanic + + ;from SQUARE.ASM + .ref square_root + + ;from WRESTLE.ASM + .ref get_rope_x,calc_line_pt + .ref set_turbo_status + +;animation sequence + + .ref ref_stand2_anim,ref_stand4_anim + .ref ref_torso2_anim,ref_torso4_anim + + .ref ref_zip_anim + + .ref ref_walk1_f2_anim,ref_walk2_f2_anim,ref_walk4_f2_anim + .ref ref_walk5_f2_anim,ref_walk6_f2_anim,ref_walk8_f2_anim + + .ref ref_walk1_f4_anim,ref_walk2_f4_anim,ref_walk4_f4_anim + .ref ref_walk5_f4_anim,ref_walk6_f4_anim,ref_walk8_f4_anim + + .ref ref_2_to_4_turn_anim,ref_8_to_6_turn_anim ;stand + .ref ref_4_to_2_turn_anim,ref_6_to_8_turn_anim + .ref ref_4_to_6_turn_anim,ref_6_to_4_turn_anim + .ref ref_2_to_8_turn_anim,ref_8_to_2_turn_anim + .ref ref_4_to_8_turn_anim,ref_6_to_2_turn_anim + .ref ref_8_to_4_turn_anim,ref_2_to_6_turn_anim + + .ref ref_2_to_4_turn2_anim,ref_4_to_2_turn2_anim ;torso + .ref ref_4_to_6_turn2_anim,ref_6_to_4_turn2_anim + .ref ref_2_to_8_turn2_anim,ref_8_to_2_turn2_anim + + .ref ref_2_head_hit_anim,ref_4_head_hit_anim,ref_head_hit2_anim + .ref ref_2_body_hit_anim,ref_4_body_hit_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + + .bss uhgrid,9*20h + + .bss grid_index,10h + + BSSX refmove_dir,10h + + BSSX motion_threshhold,10h + BSSX ref_unhap,20h + BSSX last_move,10h + BSSX last_holdstill,10h + +****************************************************************************** +* EQUATES FOR THIS FILE + +MAX_UNHAPPINESS equ 7FFFFFFFh +UHGRID_X equ 4 +UHGRID_Z equ 4 + +GRID_UNHAP equ 0 +GRID_D1 equ 1 +GRID_D2 equ 2 + +REF_DEBUG equ 0 + +BRAIN_FREQ equ 3 ;update move grid every X ticks + + .if REF_DEBUG + BSSX grid_mode,10h + .endif + +#***************************************************************************** + + SUBR ref_ani_init + + .if REF_DEBUG + movi GRID_UNHAP,a14 + move a14,@grid_mode + + CREATE0 grid_display + .endif + + move a13,a8 + CREATE0 ref_brain + + movi ref_stand2_anim,a0 + calla change_anim1a + + movi ref_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* REF CONTROL CODE +* +* a13 = * ref process + + SUBR move_ref + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + clr a0 + move a0,*a13(MOVE_DIR) + + 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_x6 ;13 + .long mode_x7 ;14 + .long mode_x8 ;15 + .long mode_x9 ;16 + +#***************************************************************************** +* + +mode_normal ;0 + + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + callr calc_walk_dir + + calla execute_walk + +#no_interrupt + rets + + + SUBRP calc_walk_dir + + move @refmove_dir,a14 + move a14,*a13(MOVE_DIR) + rets + + +#***************************************************************************** +* Brain process. Continuously updates refmove_dir to show the direction to +* minimize unhappiness. +* >a8 = ref proc + + STRUCTPD + LONG #REFPROC ;UHL ref process + + SUBR ref_brain + + move a8,*a13(#REFPROC),L + + movi 10,a14 + move a14,@motion_threshhold + move @PCNT,a14 + move a14,@last_move + move a14,@last_holdstill + +#main_loop + SLEEPK BRAIN_FREQ + + ;update the motion threshhold + ;if he's been moving continuously for 20 ticks, increment the + ; threshhold. + move @PCNT,a0 + move @last_holdstill,a1 + sub a1,a0 + cmpi 20,a0 + jrlt #no_inc + + move @motion_threshhold,a14 + inc a14 + move a14,@motion_threshhold + move @PCNT,a14 + move a14,@last_holdstill +#no_inc + + ;if he's been holding still continuously for 20 ticks, decrement + ; the threshhold. + move @PCNT,a0 + move @last_move,a1 + sub a1,a0 + cmpi 20,a0 + jrlt #no_dec + + move @motion_threshhold,a14 + dsj a14,#dmt_inrange + clr a14 +#dmt_inrange + move a14,@motion_threshhold + move @PCNT,a14 + move a14,@last_move +#no_dec + + + ;update move_dir + ;reg use + ; a2 - current low unhappiness value (score) + ; a3 - current low unhappiness index (champ) + ; a4 - current index (0-8) + + movi MAX_UNHAPPINESS,a2 + movi 4,a3 + movi 8,a4 + +#search_loop + move *a13(#REFPROC),a5,L + move *a5(OBJ_XPOSINT),a0 + move *a5(OBJ_ZPOSINT),a1 + move a4,a5 + X64 a5 + addi brain_grid,a5 + move *a5+,a14,L + sra 16,a14 + add a14,a0 + move *a5+,a14,L + sra 16,a14 + add a14,a1 + calla calc_unhappiness + cmpi 4,a4 + jrne #skip_refupdate + move a0,@ref_unhap,L +#skip_refupdate + + .if REF_DEBUG + move @grid_mode,a14 + cmpi GRID_UNHAP,a14 + jrne #no_grid_unhap + + move a4,a14 + X32 a14 + addi uhgrid,a14 + move a0,*a14,L +#no_grid_unhap + .endif + + cmp a2,a0 + jrge #too_high + + move a0,a2 + move a4,a3 + +#too_high + dec a4 + jrnn #search_loop + + ;all done. ref_unhap holds unhappiness at ref's current position. + ; a2 holds unhappiness at lowest position. If the best unhappiness + ; is within motion_thresshold of the current unhap, just hold still. + move @ref_unhap,a1,L + sub a2,a1 + .if DEBUG + jrnn #no_bug + LOCKUP ;a2 should never be less than ref_unhap +#no_bug + .endif + move @motion_threshhold,a0 + sub a0,a1 + jrnn #move_off + + ;not enough of a difference to make moving worthwhile + movk 4,a3 + +#move_off + movi last_holdstill,a0 + cmpi 4,a3 + jreq #holdstill + movi last_move,a0 +#holdstill + move @PCNT,a14 + move a14,*a0 + X16 a3 + addi #move_table,a3 + move *a3,a3,W + move a3,@refmove_dir + + jruc #main_loop + +#no_ref + DIE + +#move_table + .word MOVE_UP_LEFT,MOVE_UP,MOVE_UP_RIGHT + .word MOVE_LEFT,MOVE_ZIP,MOVE_RIGHT + .word MOVE_DOWN_LEFT,MOVE_DOWN,MOVE_DOWN_RIGHT + + +#***************************************************************************** +* + +mode_running ;1 + rets + +#***************************************************************************** +* + +mode_inair ;2 + + rets + +#***************************************************************************** +* + +mode_attached ;3 + + rets + +#***************************************************************************** + +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_x6 ;13 +mode_x7 ;14 +mode_x8 ;15 +mode_x9 ;16 + rets + + +#***************************************************************************** + +#VEL equ 30000h +#DVEL equ 21f0eh + + + SUBR ref_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 + + + SUBRP brain_grid + .long -#DVEL*BRAIN_FREQ,-#DVEL*BRAIN_FREQ ;up-left + .long 0,-#VEL*BRAIN_FREQ ;up + .long #DVEL*BRAIN_FREQ,-#DVEL*BRAIN_FREQ ;up-right + .long -#VEL*BRAIN_FREQ,0 ;left + .long 0,0 ;zip + .long #VEL*BRAIN_FREQ,0 ;right + .long -#DVEL*BRAIN_FREQ,#DVEL*BRAIN_FREQ ;down-left + .long 0,#VEL*BRAIN_FREQ ;down + .long #DVEL*BRAIN_FREQ,#DVEL*BRAIN_FREQ ;down-right + +#***************************************************************************** + + SUBR ref_rotate_anims_table +; old = up right + .long ref_stand2_anim ;new = up right + .long ref_2_to_4_turn_anim ; = down right + .long ref_2_to_6_turn_anim ; = down left *** + .long ref_2_to_8_turn_anim ; = up left + +; old = down right + .long ref_4_to_2_turn_anim ;new = up right + .long ref_stand4_anim ; = down right + .long ref_4_to_6_turn_anim ; = down left + .long ref_4_to_8_turn_anim ; = up left *** + +; old = down left + .long ref_6_to_2_turn_anim ;new = up right *** + .long ref_6_to_4_turn_anim ; = down right + .long ref_stand4_anim ; = down left + .long ref_6_to_8_turn_anim ; = up left + +; old = up left + .long ref_8_to_2_turn_anim ;new = up right + .long ref_8_to_4_turn_anim ; = down right *** + .long ref_8_to_6_turn_anim ; = down left + .long ref_stand2_anim ; = up left + + + SUBR ref_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long ref_walk1_f2_anim ;1 (UP) + .long ref_walk1_f2_anim ;2 (UP_RIGHT) + .long ref_walk1_f4_anim ;3 (RIGHT) + .long ref_walk1_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk1_f4_anim ;5 (DOWN) + .long ref_walk1_f4_anim ;6 (DOWN_LEFT) + .long ref_walk1_f2_anim ;7 (LEFT) + .long ref_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk2_f2_anim ;2 (UP_RIGHT) + .long ref_walk2_f2_anim ;3 (RIGHT) + .long ref_walk2_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk8_f4_anim ;5 (DOWN) + .long ref_walk8_f4_anim ;6 (DOWN_LEFT) + .long ref_walk4_f2_anim ;7 (LEFT) + .long ref_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk2_f2_anim ;2 (UP_RIGHT) + .long ref_walk2_f2_anim ;3 (RIGHT) + .long ref_walk4_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk4_f4_anim ;5 (DOWN) + .long ref_walk8_f4_anim ;6 (DOWN_LEFT) + .long ref_walk6_f2_anim ;7 (LEFT) + .long ref_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk8_f2_anim ;2 (UP_RIGHT) + .long ref_walk4_f4_anim ;3 (RIGHT) + .long ref_walk4_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk2_f4_anim ;5 (DOWN) + .long ref_walk6_f4_anim ;6 (DOWN_LEFT) + .long ref_walk2_f2_anim ;7 (LEFT) + .long ref_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long ref_walk5_f2_anim ;1 (UP) + .long ref_walk5_f2_anim ;2 (UP_RIGHT) + .long ref_walk5_f4_anim ;3 (RIGHT) + .long ref_walk5_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk5_f4_anim ;5 (DOWN) + .long ref_walk5_f4_anim ;6 (DOWN_LEFT) + .long ref_walk5_f2_anim ;7 (LEFT) + .long ref_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk6_f2_anim ;2 (UP_RIGHT) + .long ref_walk2_f2_anim ;3 (RIGHT) + .long ref_walk6_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk2_f4_anim ;5 (DOWN) + .long ref_walk4_f4_anim ;6 (DOWN_LEFT) + .long ref_walk2_f2_anim ;7 (LEFT) + .long ref_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk6_f2_anim ;2 (UP_RIGHT) + .long ref_walk6_f2_anim ;3 (RIGHT) + .long ref_walk8_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk4_f4_anim ;5 (DOWN) + .long ref_walk4_f4_anim ;6 (DOWN_LEFT) + .long ref_walk2_f2_anim ;7 (LEFT) + .long ref_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long ref_walk2_f2_anim ;1 (UP) + .long ref_walk4_f2_anim ;2 (UP_RIGHT) + .long ref_walk6_f2_anim ;3 (RIGHT) + .long ref_walk8_f4_anim ;4 (DOWN_RIGHT) + .long ref_walk6_f4_anim ;5 (DOWN) + .long ref_walk2_f4_anim ;6 (DOWN_LEFT) + .long ref_walk2_f2_anim ;7 (LEFT) + .long ref_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR ref_torso_anims_table +; old = up right + .long ref_torso2_anim ;new = up right + .long ref_2_to_4_turn2_anim ; = down right + .long ref_2_to_8_turn2_anim ; = down left *** + .long ref_2_to_8_turn2_anim ; = up left + +; old = down right + .long ref_4_to_2_turn2_anim ;new = up right + .long ref_torso4_anim ; = down right + .long ref_4_to_6_turn2_anim ; = down left + .long ref_4_to_6_turn2_anim ; = up left *** + +; old = down left + .long ref_6_to_4_turn2_anim ;new = up right *** + .long ref_6_to_4_turn2_anim ; = down right + .long ref_torso4_anim ; = down left + .long ref_4_to_2_turn2_anim ; = up left + +; old = up left + .long ref_8_to_2_turn2_anim ;new = up right + .long ref_8_to_2_turn2_anim ; = down right *** + .long ref_2_to_4_turn2_anim ; = down left + .long ref_torso2_anim ; = up left + +; *** should not happen + + +#***************************************************************************** +* REFEREE HAS JUST BEEN HIT +* a10 = * offensive process +* a13 = * defensive process (REF) + + SUBR ref_hit + + move *a10(ATTACK_MODE),a0 ;type of attack that hit the ref + 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 _13 ;13 + .long _14 ;14 + .long _15 ;15 + .long _16 ;16 + +#************************ +;AMODE_PUNCH 0 +_punch + + WRSND W_REF,PUNCH_L1 + WRSND W_REF,PUNCH_L2 + + SETMODE NORMAL + movi ref_2_head_hit_anim,a0 + move *a13(FACING_DIR),a1 + btst MOVE_UP_BIT,a1 + jrnz #2_hit + movi ref_4_head_hit_anim,a0 +#2_hit + calla change_anim1a + calla wres_collis_off + + rets + +#************************ +;AMODE_HDBUTT 1 +_hdbutt + WRSND W_REF,HDBUTT_L1 + WRSND W_REF,HDBUTT_L2 + + SETMODE NORMAL + + movi ref_head_hit2_anim,a0 + 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 + +#************************ +;AMODE_KICK 2 +_kick + + WRSND W_REF,KICK_L1 + WRSND W_REF,KICK_L2 + + SETMODE NORMAL + + movi ref_2_body_hit_anim,a0 + move *a13(FACING_DIR),a1 + btst MOVE_UP_BIT,a1 + jrnz #2_hit + movi ref_4_body_hit_anim,a0 +#2_hit + calla change_anim1a + +;Drift back away from attacker + movi 20000h,a1 + move *a10(OBJ_XPOSINT),a0 + move *a13(OBJ_XPOSINT),a14 + cmp a0,a14 + jrgt #setxv + movi -20000h,a1 +#setxv + move a1,*a13(OBJ_XVEL),L + + calla wres_collis_off + rets + +#************************ +;AMODE_FLYKICK 3 +_flykick + rets + +#************************ +;AMODE_GRABTHROW 4 +_grabthrow + + rets + +#************************ +;AMODE_UPRCUT 5 +_uprcut + rets + +#************************ +;AMODE_LBOWDROP 6 +_lbowdrop + + rets + +#************************ +;AMODE_GRABHOLD 7 +_grabhold + + rets + +#************************ +;AMODE_GRABFLING 8 +_grabfling + + rets + +#************************ +;AMODE_PUSH 9 +_push + + rets + +#************************ +;AMODE_HIPTOSS 10 +_hiptoss + + rets + +#************************ +;AMODE_BIGBOOT 11 +_bigboot + + rets + +#************************ +;AMODE_KNEE 12 +_knee + + rets + +#************************ + +_13 ;13 +_14 ;14 +_15 ;15 +_16 ;16 + +#***************************************************************************** +* calculates the 2D distance between two points +* >a0=x1 >a1=y1 >a2=x2 >a3=y2 +* a0=x >a1=z +* F000,a14 + sra 12,a14 + move a14,*a11+,W + dsj b2,#inner_loop + + dsj b3,#outer_loop + + + ;update the digit objects + + movi grid_digit_objects,a10 + movi grid_digit_values,a11 + movi 9*4,b2 + +#loop + move *a11+,a0,W + X32 a0 + addi #digit_table,a0 + move *a0,a0,L + move *a10+,a8,L + move *a8(OIMG),a2,L + cmp a0,a2 + jreq #match + + ;animate + calla civanic + +#match + dsj b2,#loop + + + ;update the title + move @grid_mode,a0 + X32 a0 + addi #grid_modes,a0 + move *a0,a0,L + move @grid_title,a8,L + move *a8(OIMG),a14,L + cmp a14,a0 + jreq #done + calla civanic + +#done + rets + +#digit_table + .long font60,font61,font62,font63,font64 + .long font65,font66,font67,font68,font69 + +#grid_modes + .long g_unhap,g_d1,g_d2 + + .endif +****************************************************************************** + + .end + \ No newline at end of file diff --git a/REFIMG.ASM b/REFIMG.ASM new file mode 100755 index 0000000..7927ff5 --- /dev/null +++ b/REFIMG.ASM @@ -0,0 +1,18 @@ + .FILE "refimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include refimg.h + .include refimg.tbl + +****************************************************************************** + + .even + .include "ref.seq" + +****************************************************************************** +; END + \ No newline at end of file diff --git a/REFIMG.H b/REFIMG.H new file mode 100755 index 0000000..fffe517 --- /dev/null +++ b/REFIMG.H @@ -0,0 +1,33 @@ + .global J4AH3D + .global J4AH3A + .global J2AH3C + .global J4AE3A + .global J2AE3A + .global J4AM3B + .global J2AM3A + .global J4KB3A + .global J2KB3A + .global J3KB3A + .global J3FB3D + .global J3TB3B + .global J3GD4B + .global J3GD2A + .global J4FL4C + .global J4FS4C + .global J4GL4A + .global J4GL4B + .global J4GL4C + .global J1TT5A + .global J1TR5Z + .global J2HT8A + .global J2ST2C + .global J2WK2A + .global J2WL4A + .global J4FT4B + .global J4ST4B + .global J4ST4C + .global J4WK4A + .global J4WL4A + .global J4WL5A + .global J8WL2A + .global J2WL2A diff --git a/REFSEQ1.ASM b/REFSEQ1.ASM new file mode 100755 index 0000000..59d0aae --- /dev/null +++ b/REFSEQ1.ASM @@ -0,0 +1,570 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 4/16/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "refseq1.asm" + .title "Flanders the ref animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "display.equ" + + .include "refimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* STANDS + + SUBR ref_zip_anim + WL TSEC*60,J2ST2C+FR1 + .word 0 + +#STND2_SPD equ 2 + SUBR ref_stand2_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL #STND2_SPD,J2ST2C+FR1 + WL #STND2_SPD,J2ST2C+FR2 + WL #STND2_SPD,J2ST2C+FR3 + WL #STND2_SPD,J2ST2C+FR4 + WL #STND2_SPD,J2ST2C+FR5 + WL #STND2_SPD,J2ST2C+FR6 + WL #STND2_SPD,J2ST2C+FR7 + WL #STND2_SPD,J2ST2C+FR8 + WL #STND2_SPD,J2ST2C+FR9 + WL #STND2_SPD,J2ST2C+FR10 + WL #STND2_SPD,J2ST2C+FR11 + WL #STND2_SPD,J2ST2C+FR10 + WL #STND2_SPD,J2ST2C+FR9 + WL #STND2_SPD,J2ST2C+FR8 + WL #STND2_SPD,J2ST2C+FR7 + WL #STND2_SPD,J2ST2C+FR6 + WL #STND2_SPD,J2ST2C+FR5 + WL #STND2_SPD,J2ST2C+FR4 + WL #STND2_SPD,J2ST2C+FR3 + WL #STND2_SPD,J2ST2C+FR2 + .word ANI_REPEAT + +#STND4_SPD equ 2 + SUBR ref_stand4_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL #STND4_SPD,J4ST4C+FR1 + WL #STND4_SPD,J4ST4C+FR2 + WL #STND4_SPD,J4ST4C+FR3 + WL #STND4_SPD,J4ST4C+FR4 + WL #STND4_SPD,J4ST4C+FR5 + WL #STND4_SPD,J4ST4C+FR6 + WL #STND4_SPD,J4ST4C+FR7 + WL #STND4_SPD,J4ST4C+FR8 + WL #STND4_SPD,J4ST4C+FR9 + WL #STND4_SPD,J4ST4C+FR10 + WL #STND4_SPD,J4ST4C+FR9 + WL #STND4_SPD,J4ST4C+FR8 + WL #STND4_SPD,J4ST4C+FR7 + WL #STND4_SPD,J4ST4C+FR6 + WL #STND4_SPD,J4ST4C+FR5 + WL #STND4_SPD,J4ST4C+FR4 + WL #STND4_SPD,J4ST4C+FR3 + WL #STND4_SPD,J4ST4C+FR2 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKING TORSOS + +#TORSO2_SPD equ 4 + SUBR ref_torso2_anim + WL #TORSO2_SPD,J1TR5Z+FR3 + .word ANI_REPEAT + + +#TORSO4_SPD equ 4 + SUBR ref_torso4_anim + WL #TORSO4_SPD,J1TR5Z+FR7 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKS FACING #2 + +#W2F2_SPD equ 3 + SUBR ref_walk1_f2_anim + SUBR ref_walk2_f2_anim + WL #W2F2_SPD,J2WL2A+FR1 + WL #W2F2_SPD,J2WL2A+FR2 + WL #W2F2_SPD,J2WL2A+FR3 + WL #W2F2_SPD,J2WL2A+FR4 + WL #W2F2_SPD,J2WL2A+FR5 + WL #W2F2_SPD,J2WL2A+FR6 + WL #W2F2_SPD,J2WL2A+FR7 + WL #W2F2_SPD,J2WL2A+FR8 + WL #W2F2_SPD,J2WL2A+FR9 + WL #W2F2_SPD,J2WL2A+FR10 + WL #W2F2_SPD,J2WL2A+FR11 + .word ANI_REPEAT + +#W4F2_SPD equ 3 + SUBR ref_walk4_f2_anim + WL #W4F2_SPD,J2WL4A+FR1 + WL #W4F2_SPD,J2WL4A+FR2 + WL #W4F2_SPD,J2WL4A+FR3 + WL #W4F2_SPD,J2WL4A+FR4 + WL #W4F2_SPD,J2WL4A+FR5 + WL #W4F2_SPD,J2WL4A+FR6 + WL #W4F2_SPD,J2WL4A+FR7 + WL #W4F2_SPD,J2WL4A+FR8 + WL #W4F2_SPD,J2WL4A+FR9 + WL #W4F2_SPD,J2WL4A+FR10 + WL #W4F2_SPD,J2WL4A+FR11 + WL #W4F2_SPD,J2WL4A+FR12 + WL #W4F2_SPD,J2WL4A+FR13 + WL #W4F2_SPD,J2WL4A+FR14 + WL #W4F2_SPD,J2WL4A+FR15 + .word ANI_REPEAT + +#W5F2_SPD equ 3 + SUBR ref_walk5_f2_anim + SUBR ref_walk6_f2_anim + WL #W5F2_SPD,J2WL2A+FR11 + WL #W5F2_SPD,J2WL2A+FR10 + WL #W5F2_SPD,J2WL2A+FR9 + WL #W5F2_SPD,J2WL2A+FR8 + WL #W5F2_SPD,J2WL2A+FR7 + WL #W5F2_SPD,J2WL2A+FR6 + WL #W5F2_SPD,J2WL2A+FR5 + WL #W5F2_SPD,J2WL2A+FR4 + WL #W5F2_SPD,J2WL2A+FR3 + WL #W5F2_SPD,J2WL2A+FR1 + WL #W5F2_SPD,J2WL2A+FR1 + .word ANI_REPEAT + + SUBR ref_walk8_f2_anim + WL #W4F2_SPD,J8WL2A+FR1 + WL #W4F2_SPD,J8WL2A+FR2 + WL #W4F2_SPD,J8WL2A+FR3 + WL #W4F2_SPD,J8WL2A+FR4 + WL #W4F2_SPD,J8WL2A+FR5 + WL #W4F2_SPD,J8WL2A+FR6 + WL #W4F2_SPD,J8WL2A+FR7 + WL #W4F2_SPD,J8WL2A+FR8 + WL #W4F2_SPD,J8WL2A+FR9 + WL #W4F2_SPD,J8WL2A+FR10 + WL #W4F2_SPD,J8WL2A+FR11 + WL #W4F2_SPD,J8WL2A+FR12 + WL #W4F2_SPD,J8WL2A+FR13 + WL #W4F2_SPD,J8WL2A+FR14 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + +#W1F4_SPD equ 3 + SUBR ref_walk1_f4_anim + SUBR ref_walk2_f4_anim + WL #W1F4_SPD,J2WL4A+FR1 + WL #W1F4_SPD,J2WL4A+FR2 + WL #W1F4_SPD,J2WL4A+FR3 + WL #W1F4_SPD,J2WL4A+FR4 + WL #W1F4_SPD,J2WL4A+FR5 + WL #W1F4_SPD,J2WL4A+FR6 + WL #W1F4_SPD,J2WL4A+FR7 + WL #W1F4_SPD,J2WL4A+FR8 + WL #W1F4_SPD,J2WL4A+FR9 + WL #W1F4_SPD,J2WL4A+FR10 + WL #W1F4_SPD,J2WL4A+FR11 + WL #W1F4_SPD,J2WL4A+FR12 + WL #W1F4_SPD,J2WL4A+FR13 + WL #W1F4_SPD,J2WL4A+FR14 + WL #W1F4_SPD,J2WL4A+FR15 + .word ANI_REPEAT + +#W4F4_SPD equ 3 + SUBR ref_walk4_f4_anim + WL #W4F4_SPD,J4WL4A+FR1 + WL #W4F4_SPD,J4WL4A+FR2 + WL #W4F4_SPD,J4WL4A+FR3 + WL #W4F4_SPD,J4WL4A+FR4 + WL #W4F4_SPD,J4WL4A+FR5 + WL #W4F4_SPD,J4WL4A+FR6 + WL #W4F4_SPD,J4WL4A+FR7 + WL #W4F4_SPD,J4WL4A+FR8 + WL #W4F4_SPD,J4WL4A+FR9 + WL #W4F4_SPD,J4WL4A+FR10 + WL #W4F4_SPD,J4WL4A+FR11 + WL #W4F4_SPD,J4WL4A+FR12 + .word ANI_REPEAT + +#W5F4_SPD equ 3 + SUBR ref_walk5_f4_anim + WL #W5F4_SPD,J4WL5A+FR1 + WL #W5F4_SPD,J4WL5A+FR2 + WL #W5F4_SPD,J4WL5A+FR3 + WL #W5F4_SPD,J4WL5A+FR4 + WL #W5F4_SPD,J4WL5A+FR5 + WL #W5F4_SPD,J4WL5A+FR6 + WL #W5F4_SPD,J4WL5A+FR7 + WL #W5F4_SPD,J4WL5A+FR8 + WL #W5F4_SPD,J4WL5A+FR9 + WL #W5F4_SPD,J4WL5A+FR10 + WL #W5F4_SPD,J4WL5A+FR11 + WL #W5F4_SPD,J4WL5A+FR12 + WL #W5F4_SPD,J4WL5A+FR13 + WL #W5F4_SPD,J4WL5A+FR14 + .word ANI_REPEAT + + SUBR ref_walk6_f4_anim + WL #W1F4_SPD,J2WL4A+FR15 + WL #W1F4_SPD,J2WL4A+FR14 + WL #W1F4_SPD,J2WL4A+FR13 + WL #W1F4_SPD,J2WL4A+FR12 + WL #W1F4_SPD,J2WL4A+FR11 + WL #W1F4_SPD,J2WL4A+FR10 + WL #W1F4_SPD,J2WL4A+FR9 + WL #W1F4_SPD,J2WL4A+FR8 + WL #W1F4_SPD,J2WL4A+FR7 + WL #W1F4_SPD,J2WL4A+FR6 + WL #W1F4_SPD,J2WL4A+FR5 + WL #W1F4_SPD,J2WL4A+FR4 + WL #W1F4_SPD,J2WL4A+FR3 + WL #W1F4_SPD,J2WL4A+FR2 + WL #W1F4_SPD,J2WL4A+FR1 + .word ANI_REPEAT + + SUBR ref_walk8_f4_anim + WL #W4F4_SPD,J4WL4A+FR12 + WL #W4F4_SPD,J4WL4A+FR11 + WL #W4F4_SPD,J4WL4A+FR10 + WL #W4F4_SPD,J4WL4A+FR9 + WL #W4F4_SPD,J4WL4A+FR8 + WL #W4F4_SPD,J4WL4A+FR7 + WL #W4F4_SPD,J4WL4A+FR6 + WL #W4F4_SPD,J4WL4A+FR5 + WL #W4F4_SPD,J4WL4A+FR4 + WL #W4F4_SPD,J4WL4A+FR3 + WL #W4F4_SPD,J4WL4A+FR2 + WL #W4F4_SPD,J4WL4A+FR1 + .word ANI_REPEAT + +#***************************************************************************** +* +* TURNS (STANDS) + +#TURN_SPD equ 3 ;4 + SUBR ref_2_to_4_turn_anim + SUBR ref_8_to_6_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR4 + WL #TURN_SPD,J1TT5A+FR5 + WL #TURN_SPD,J1TT5A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_to_2_turn_anim + SUBR ref_6_to_8_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR6 + WL #TURN_SPD,J1TT5A+FR5 + WL #TURN_SPD,J1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_to_6_turn_anim + SUBR ref_6_to_4_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR8 + WL #TURN_SPD,J1TT5A+FR9 + .word ANI_XFLIP + WL #TURN_SPD,J1TT5A+FR9 + WL #TURN_SPD,J1TT5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_2_to_8_turn_anim + SUBR ref_8_to_2_turn_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR2 + WL #TURN_SPD,J1TT5A+FR1 + .word ANI_XFLIP + WL #TURN_SPD,J1TT5A+FR1 + WL #TURN_SPD,J1TT5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_to_8_turn_anim + SUBR ref_6_to_2_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR8 + WL #TURN_SPD,J1TT5A+FR9 + .word ANI_XFLIP + WL #TURN_SPD,J1TT5A+FR9 + WL #TURN_SPD,J1TT5A+FR8 + WL #TURN_SPD,J1TT5A+FR7 + WL #TURN_SPD,J1TT5A+FR6 + WL #TURN_SPD,J1TT5A+FR5 + WL #TURN_SPD,J1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_2_to_6_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR2 + WL #TURN_SPD,J1TT5A+FR1 + .word ANI_XFLIP + WL #TURN_SPD,J1TT5A+FR1 + WL #TURN_SPD,J1TT5A+FR2 + WL #TURN_SPD,J1TT5A+FR3 + WL #TURN_SPD,J1TT5A+FR4 + WL #TURN_SPD,J1TT5A+FR5 + WL #TURN_SPD,J1TT5A+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_8_to_4_turn_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TT5A+FR4 + WL #TURN_SPD,J1TT5A+FR5 + WL #TURN_SPD,J1TT5A+FR6 + WL #TURN_SPD,J1TT5A+FR7 + WL #TURN_SPD,J1TT5A+FR8 + WL #TURN_SPD,J1TT5A+FR9 + .word ANI_XFLIP + WL #TURN_SPD,J1TT5A+FR9 + WL #TURN_SPD,J1TT5A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + +#TURN_SPD equ 3 ;4 + SUBR ref_2_to_4_turn2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETFACING + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_to_2_turn2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETFACING + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_to_6_turn2_anim + SUBR ref_6_to_4_turn2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_2_to_8_turn2_anim + SUBR ref_8_to_2_turn2_anim + + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL #TURN_SPD,J1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 HEAD HIT + +#HEAD_HIT_SPD equ 3 + SUBR ref_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL #HEAD_HIT_SPD,J4AH3D+FR1 + WL #HEAD_HIT_SPD,J4AH3D+FR2 + WL #HEAD_HIT_SPD,J4AH3D+FR3 + WL #HEAD_HIT_SPD,J4AH3D+FR4 + WL #HEAD_HIT_SPD,J4AH3D+FR5 + WL #HEAD_HIT_SPD,J4AH3D+FR6 + WL #HEAD_HIT_SPD,J4AH3D+FR7 + WL #HEAD_HIT_SPD,J4AH3D+FR8 + WL #HEAD_HIT_SPD+6,J4AH3D+FR9 + WL #HEAD_HIT_SPD,J4AH3D+FR10 + WL #HEAD_HIT_SPD,J4AH3D+FR11 + WL #HEAD_HIT_SPD,J4AH3D+FR12 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEAD HIT + +#HEAD_HIT_SPD equ 3 + SUBR ref_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL #HEAD_HIT_SPD,J2AH3C+FR1 + WL #HEAD_HIT_SPD,J2AH3C+FR2 + WL #HEAD_HIT_SPD,J2AH3C+FR3 + WL #HEAD_HIT_SPD,J2AH3C+FR4 + WL #HEAD_HIT_SPD,J2AH3C+FR5 + WL #HEAD_HIT_SPD,J2AH3C+FR6 + WL #HEAD_HIT_SPD,J2AH3C+FR7 + WL #HEAD_HIT_SPD,J2AH3C+FR8 + WL #HEAD_HIT_SPD,J2AH3C+FR9 + WL #HEAD_HIT_SPD,J2AH3C+FR10 + WL #HEAD_HIT_SPD,J2AH3C+FR11 + WL #HEAD_HIT_SPD,J2AH3C+FR12 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* HEAD HIT2 (HANDS ON FACE) + +#HEAD_HIT2_SPD equ 4 + SUBR ref_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + WL #HEAD_HIT2_SPD,J4AH3A+FR1 + WL #HEAD_HIT2_SPD,J4AH3A+FR2 + WL #HEAD_HIT2_SPD,J4AH3A+FR3 + WL #HEAD_HIT2_SPD,J4AH3A+FR4 + WL #HEAD_HIT2_SPD,J4AH3A+FR5 + WL #HEAD_HIT2_SPD,J4AH3A+FR6 + WL #HEAD_HIT2_SPD,J4AH3A+FR7 + WL #HEAD_HIT2_SPD,J4AH3A+FR8 + WL #HEAD_HIT2_SPD,J4AH3A+FR9 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#setface +;Need to set facing dir because of this odd getup sequence + movk 10,A1 + move *A13(OBJ_CONTROL),a0 + btst B_FLIPH,A0 + jrz #rgt + movk 6,A1 +#rgt move A1,*A13(FACING_DIR) + rets + + +#***************************************************************************** +* +* BODY HIT + +#BODHIT_SPD equ 6 + + SUBR ref_2_body_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,48000h + WL #BODHIT_SPD,J2AM3A+FR1 + WL #BODHIT_SPD,J2AM3A+FR2 + WL #BODHIT_SPD,J2AM3A+FR3 + .word ANI_ZEROVELS + WL #BODHIT_SPD,J2AM3A+FR4 + WL #BODHIT_SPD,J2AM3A+FR5 + WL #BODHIT_SPD,J2AM3A+FR6 + WL #BODHIT_SPD,J2AM3A+FR7 + WL #BODHIT_SPD,J2AM3A+FR8 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR ref_4_body_hit_anim + .word ANI_SETMODE,MODE_UNINT+MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,48000h + WL #BODHIT_SPD,J4AM3B+FR1 + WL #BODHIT_SPD,J4AM3B+FR2 + WL #BODHIT_SPD,J4AM3B+FR3 + .word ANI_ZEROVELS + WL #BODHIT_SPD,J4AM3B+FR4 + WL #BODHIT_SPD,J4AM3B+FR5 + WL #BODHIT_SPD,J4AM3B+FR6 + WL #BODHIT_SPD,J4AM3B+FR7 + WL #BODHIT_SPD,J4AM3B+FR8 + WL ANI_CODE,#setface + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#setface +;Need to set facing dir + movk 10,A1 + move *A13(OBJ_CONTROL),A0 + btst B_FLIPH,A0 + jrz #rgt + movk 6,A1 +#rgt move A1,*A13(FACING_DIR) + rets + +****************************************************************************** + .end + \ No newline at end of file diff --git a/RERUN.BAT b/RERUN.BAT new file mode 100755 index 0000000..09dcfb6 --- /dev/null +++ b/RERUN.BAT @@ -0,0 +1 @@ +TV WRESTLE /W diff --git a/RING.ASM b/RING.ASM new file mode 100755 index 0000000..3fa0f3f --- /dev/null +++ b/RING.ASM @@ -0,0 +1,776 @@ +************************************************************** +* +* Software: +* Initiated: 18 April 94 +* +* COPYRIGHT (C) 1994 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "ring.asm" + .title "ring stuff" + .width 132 + .option b,d,l,t + .mnolist + + .include "ring.equ" + This entire ASM file is no longer required. + +#***************************************************************************** +* +* VERTICAL LINES + +vln_right_rope +; .word RING_TOP,RING_BOT ;z1,z2 +; .word >400+168,>400+224 ;x1,x2 + + .word 1192+100,1023,1243+100,1345 ;x1,z1,x2,z2 + + .word 1192+100,1192+100,1192+100,1192+100,1193+100,1193+100,1193+100,1193+100 + .word 1193+100,1193+100,1194+100,1194+100,1194+100,1194+100,1194+100,1194+100 + .word 1195+100,1195+100,1195+100,1195+100,1195+100,1195+100,1195+100,1196+100 + .word 1196+100,1196+100,1196+100,1196+100,1196+100,1197+100,1197+100,1197+100 + .word 1197+100,1197+100,1197+100,1198+100,1198+100,1198+100,1198+100,1198+100 + .word 1198+100,1198+100,1199+100,1199+100,1199+100,1199+100,1199+100,1199+100 + .word 1200+100,1200+100,1200+100,1200+100,1200+100,1200+100,1201+100,1201+100 + .word 1201+100,1201+100,1201+100,1201+100,1202+100,1202+100,1202+100,1202+100 + .word 1202+100,1202+100,1202+100,1203+100,1203+100,1203+100,1203+100,1203+100 + .word 1203+100,1204+100,1204+100,1204+100,1204+100,1204+100,1204+100,1205+100 + .word 1205+100,1205+100,1205+100,1205+100,1205+100,1205+100,1206+100,1206+100 + .word 1206+100,1206+100,1206+100,1206+100,1207+100,1207+100,1207+100,1207+100 + .word 1207+100,1207+100,1208+100,1208+100,1208+100,1208+100,1208+100,1208+100 + .word 1208+100,1209+100,1209+100,1209+100,1209+100,1209+100,1209+100,1210+100 + .word 1210+100,1210+100,1210+100,1210+100,1210+100,1211+100,1211+100,1211+100 + .word 1211+100,1211+100,1211+100,1211+100,1212+100,1212+100,1212+100,1212+100 + .word 1212+100,1212+100,1213+100,1213+100,1213+100,1213+100,1213+100,1213+100 + .word 1214+100,1214+100,1214+100,1214+100,1214+100,1214+100,1214+100,1215+100 + .word 1215+100,1215+100,1215+100,1215+100,1215+100,1216+100,1216+100,1216+100 + .word 1216+100,1216+100,1216+100,1217+100,1217+100,1217+100,1217+100,1217+100 + .word 1217+100,1217+100,1218+100,1218+100,1218+100,1218+100,1218+100,1218+100 + .word 1219+100,1219+100,1219+100,1219+100,1219+100,1219+100,1220+100,1220+100 + .word 1220+100,1220+100,1220+100,1220+100,1221+100,1221+100,1221+100,1221+100 + .word 1221+100,1221+100,1221+100,1222+100,1222+100,1222+100,1222+100,1222+100 + .word 1222+100,1223+100,1223+100,1223+100,1223+100,1223+100,1223+100,1224+100 + .word 1224+100,1224+100,1224+100,1224+100,1224+100,1224+100,1225+100,1225+100 + .word 1225+100,1225+100,1225+100,1225+100,1226+100,1226+100,1226+100,1226+100 + .word 1226+100,1226+100,1227+100,1227+100,1227+100,1227+100,1227+100,1227+100 + .word 1227+100,1228+100,1228+100,1228+100,1228+100,1228+100,1228+100,1229+100 + .word 1229+100,1229+100,1229+100,1229+100,1229+100,1230+100,1230+100,1230+100 + .word 1230+100,1230+100,1230+100,1230+100,1231+100,1231+100,1231+100,1231+100 + .word 1231+100,1231+100,1232+100,1232+100,1232+100,1232+100,1232+100,1232+100 + .word 1233+100,1233+100,1233+100,1233+100,1233+100,1233+100,1233+100,1234+100 + .word 1234+100,1234+100,1234+100,1234+100,1234+100,1235+100,1235+100,1235+100 + .word 1235+100,1235+100,1235+100,1236+100,1236+100,1236+100,1236+100,1236+100 + .word 1236+100,1237+100,1237+100,1237+100,1237+100,1237+100,1237+100,1237+100 + .word 1238+100,1238+100,1238+100,1238+100,1238+100,1238+100,1239+100,1239+100 + .word 1239+100,1239+100,1239+100,1239+100,1240+100,1240+100,1240+100,1240+100 + .word 1240+100,1240+100,1240+100,1241+100,1241+100,1241+100,1241+100,1241+100 + .word 1241+100,1242+100,1242+100,1242+100,1242+100,1242+100,1242+100,1243+100 + .word 1243+100,1243+100,1243+100 + + +vln_left_rope +; .word RING_TOP,RING_BOT ;z1,z2 +; .word >400-168,>400-224 ;x1,x2 + .word 856,1023,805,1345 ;x1,z1,x2,z2 + .word 856,856,856,856,855,855,855,855 + .word 855,855,854,854,854,854,854,854 + .word 853,853,853,853,853,853,853,852 + .word 852,852,852,852,852,851,851,851 + .word 851,851,851,850,850,850,850,850 + .word 850,850,849,849,849,849,849,849 + .word 848,848,848,848,848,848,847,847 + .word 847,847,847,847,846,846,846,846 + .word 846,846,846,845,845,845,845,845 + .word 845,844,844,844,844,844,844,843 + .word 843,843,843,843,843,843,842,842 + .word 842,842,842,842,841,841,841,841 + .word 841,841,840,840,840,840,840,840 + .word 840,839,839,839,839,839,839,838 + .word 838,838,838,838,838,837,837,837 + .word 837,837,837,837,836,836,836,836 + .word 836,836,835,835,835,835,835,835 + .word 834,834,834,834,834,834,834,833 + .word 833,833,833,833,833,832,832,832 + .word 832,832,832,831,831,831,831,831 + .word 831,831,830,830,830,830,830,830 + .word 829,829,829,829,829,829,828,828 + .word 828,828,828,828,827,827,827,827 + .word 827,827,827,826,826,826,826,826 + .word 826,825,825,825,825,825,825,824 + .word 824,824,824,824,824,824,823,823 + .word 823,823,823,823,822,822,822,822 + .word 822,822,821,821,821,821,821,821 + .word 821,820,820,820,820,820,820,819 + .word 819,819,819,819,819,818,818,818 + .word 818,818,818,818,817,817,817,817 + .word 817,817,816,816,816,816,816,816 + .word 815,815,815,815,815,815,815,814 + .word 814,814,814,814,814,813,813,813 + .word 813,813,813,812,812,812,812,812 + .word 812,811,811,811,811,811,811,811 + .word 810,810,810,810,810,810,809,809 + .word 809,809,809,809,808,808,808,808 + .word 808,808,808,807,807,807,807,807 + .word 807,806,806,806,806,806,806,805 + .word 805,805,805 + + +vln_right_matedge +; .word MAT_TOP,MAT_BOT ;z1,z2 +; .word >400+>E2,>400+>13B + + .word 1250+100,967,1339+100,1521 ;x1,z1,x2,z2 + + .word 1250+100,1250+100,1250+100,1250+100,1251+100,1251+100,1251+100,1251+100 + .word 1251+100,1251+100,1252+100,1252+100,1252+100,1252+100,1252+100,1252+100 + .word 1253+100,1253+100,1253+100,1253+100,1253+100,1253+100,1254+100,1254+100 + .word 1254+100,1254+100,1254+100,1254+100,1254+100,1255+100,1255+100,1255+100 + .word 1255+100,1255+100,1255+100,1256+100,1256+100,1256+100,1256+100,1256+100 + .word 1256+100,1257+100,1257+100,1257+100,1257+100,1257+100,1257+100,1258+100 + .word 1258+100,1258+100,1258+100,1258+100,1258+100,1259+100,1259+100,1259+100 + .word 1259+100,1259+100,1259+100,1259+100,1260+100,1260+100,1260+100,1260+100 + .word 1260+100,1260+100,1261+100,1261+100,1261+100,1261+100,1261+100,1261+100 + .word 1262+100,1262+100,1262+100,1262+100,1262+100,1262+100,1263+100,1263+100 + .word 1263+100,1263+100,1263+100,1263+100,1263+100,1264+100,1264+100,1264+100 + .word 1264+100,1264+100,1264+100,1265+100,1265+100,1265+100,1265+100,1265+100 + .word 1265+100,1266+100,1266+100,1266+100,1266+100,1266+100,1266+100,1267+100 + .word 1267+100,1267+100,1267+100,1267+100,1267+100,1268+100,1268+100,1268+100 + .word 1268+100,1268+100,1268+100,1268+100,1269+100,1269+100,1269+100,1269+100 + .word 1269+100,1269+100,1270+100,1270+100,1270+100,1270+100,1270+100,1270+100 + .word 1271+100,1271+100,1271+100,1271+100,1271+100,1271+100,1272+100,1272+100 + .word 1272+100,1272+100,1272+100,1272+100,1272+100,1273+100,1273+100,1273+100 + .word 1273+100,1273+100,1273+100,1274+100,1274+100,1274+100,1274+100,1274+100 + .word 1274+100,1275+100,1275+100,1275+100,1275+100,1275+100,1275+100,1276+100 + .word 1276+100,1276+100,1276+100,1276+100,1276+100,1277+100,1277+100,1277+100 + .word 1277+100,1277+100,1277+100,1277+100,1278+100,1278+100,1278+100,1278+100 + .word 1278+100,1278+100,1279+100,1279+100,1279+100,1279+100,1279+100,1279+100 + .word 1280+100,1280+100,1280+100,1280+100,1280+100,1280+100,1281+100,1281+100 + .word 1281+100,1281+100,1281+100,1281+100,1281+100,1282+100,1282+100,1282+100 + .word 1282+100,1282+100,1282+100,1283+100,1283+100,1283+100,1283+100,1283+100 + .word 1283+100,1284+100,1284+100,1284+100,1284+100,1284+100,1284+100,1285+100 + .word 1285+100,1285+100,1285+100,1285+100,1285+100,1286+100,1286+100,1286+100 + .word 1286+100,1286+100,1286+100,1286+100,1287+100,1287+100,1287+100,1287+100 + .word 1287+100,1287+100,1288+100,1288+100,1288+100,1288+100,1288+100,1288+100 + .word 1289+100,1289+100,1289+100,1289+100,1289+100,1289+100,1290+100,1290+100 + .word 1290+100,1290+100,1290+100,1290+100,1290+100,1291+100,1291+100,1291+100 + .word 1291+100,1291+100,1291+100,1292+100,1292+100,1292+100,1292+100,1292+100 + .word 1292+100,1293+100,1293+100,1293+100,1293+100,1293+100,1293+100,1294+100 + .word 1294+100,1294+100,1294+100,1294+100,1294+100,1295+100,1295+100,1295+100 + .word 1295+100,1295+100,1295+100,1295+100,1296+100,1296+100,1296+100,1296+100 + .word 1296+100,1296+100,1297+100,1297+100,1297+100,1297+100,1297+100,1297+100 + .word 1298+100,1298+100,1298+100,1298+100,1298+100,1298+100,1299+100,1299+100 + .word 1299+100,1299+100,1299+100,1299+100,1299+100,1300+100,1300+100,1300+100 + .word 1300+100,1300+100,1300+100,1301+100,1301+100,1301+100,1301+100,1301+100 + .word 1301+100,1302+100,1302+100,1302+100,1302+100,1302+100,1302+100,1303+100 + .word 1303+100,1303+100,1303+100,1303+100,1303+100,1303+100,1304+100,1304+100 + .word 1304+100,1304+100,1304+100,1304+100,1305+100,1305+100,1305+100,1305+100 + .word 1305+100,1305+100,1306+100,1306+100,1306+100,1306+100,1306+100,1306+100 + .word 1307+100,1307+100,1307+100,1307+100,1307+100,1307+100,1308+100,1308+100 + .word 1308+100,1308+100,1308+100,1308+100,1308+100,1309+100,1309+100,1309+100 + .word 1309+100,1309+100,1309+100,1310+100,1310+100,1310+100,1310+100,1310+100 + .word 1310+100,1311+100,1311+100,1311+100,1311+100,1311+100,1311+100,1312+100 + .word 1312+100,1312+100,1312+100,1312+100,1312+100,1312+100,1313+100,1313+100 + .word 1313+100,1313+100,1313+100,1313+100,1314+100,1314+100,1314+100,1314+100 + .word 1314+100,1314+100,1315+100,1315+100,1315+100,1315+100,1315+100,1315+100 + .word 1316+100,1316+100,1316+100,1316+100,1316+100,1316+100,1317+100,1317+100 + .word 1317+100,1317+100,1317+100,1317+100,1317+100,1318+100,1318+100,1318+100 + .word 1318+100,1318+100,1318+100,1319+100,1319+100,1319+100,1319+100,1319+100 + .word 1319+100,1320+100,1320+100,1320+100,1320+100,1320+100,1320+100,1321+100 + .word 1321+100,1321+100,1321+100,1321+100,1321+100,1321+100,1322+100,1322+100 + .word 1322+100,1322+100,1322+100,1322+100,1323+100,1323+100,1323+100,1323+100 + .word 1323+100,1323+100,1324+100,1324+100,1324+100,1324+100,1324+100,1324+100 + .word 1325+100,1325+100,1325+100,1325+100,1325+100,1325+100,1326+100,1326+100 + .word 1326+100,1326+100,1326+100,1326+100,1326+100,1327+100,1327+100,1327+100 + .word 1327+100,1327+100,1327+100,1328+100,1328+100,1328+100,1328+100,1328+100 + .word 1328+100,1329+100,1329+100,1329+100,1329+100,1329+100,1329+100,1330+100 + .word 1330+100,1330+100,1330+100,1330+100,1330+100,1330+100,1331+100,1331+100 + .word 1331+100,1331+100,1331+100,1331+100,1332+100,1332+100,1332+100,1332+100 + .word 1332+100,1332+100,1333+100,1333+100,1333+100,1333+100,1333+100,1333+100 + .word 1334+100,1334+100,1334+100,1334+100,1334+100,1334+100,1335+100,1335+100 + .word 1335+100,1335+100,1335+100,1335+100,1335+100,1336+100,1336+100,1336+100 + .word 1336+100,1336+100,1336+100,1337+100,1337+100,1337+100,1337+100,1337+100 + .word 1337+100,1338+100,1338+100,1338+100,1338+100,1338+100,1338+100,1339+100 + .word 1339+100,1339+100,1339+100 + +vln_left_matedge +; .word MAT_TOP,MAT_BOT ;z1,z2 +; .word 031Eh,02C5h ;x1,x2 + .word 798,967,709,1521 ;x1,z1,x2,z2 + .word 798,798,798,798,797,797,797,797 + .word 797,797,796,796,796,796,796,796 + .word 795,795,795,795,795,795,794,794 + .word 794,794,794,794,794,793,793,793 + .word 793,793,793,792,792,792,792,792 + .word 792,791,791,791,791,791,791,790 + .word 790,790,790,790,790,789,789,789 + .word 789,789,789,789,788,788,788,788 + .word 788,788,787,787,787,787,787,787 + .word 786,786,786,786,786,786,785,785 + .word 785,785,785,785,785,784,784,784 + .word 784,784,784,783,783,783,783,783 + .word 783,782,782,782,782,782,782,781 + .word 781,781,781,781,781,780,780,780 + .word 780,780,780,780,779,779,779,779 + .word 779,779,778,778,778,778,778,778 + .word 777,777,777,777,777,777,776,776 + .word 776,776,776,776,776,775,775,775 + .word 775,775,775,774,774,774,774,774 + .word 774,773,773,773,773,773,773,772 + .word 772,772,772,772,772,771,771,771 + .word 771,771,771,771,770,770,770,770 + .word 770,770,769,769,769,769,769,769 + .word 768,768,768,768,768,768,767,767 + .word 767,767,767,767,767,766,766,766 + .word 766,766,766,765,765,765,765,765 + .word 765,764,764,764,764,764,764,763 + .word 763,763,763,763,763,762,762,762 + .word 762,762,762,762,761,761,761,761 + .word 761,761,760,760,760,760,760,760 + .word 759,759,759,759,759,759,758,758 + .word 758,758,758,758,758,757,757,757 + .word 757,757,757,756,756,756,756,756 + .word 756,755,755,755,755,755,755,754 + .word 754,754,754,754,754,753,753,753 + .word 753,753,753,753,752,752,752,752 + .word 752,752,751,751,751,751,751,751 + .word 750,750,750,750,750,750,749,749 + .word 749,749,749,749,749,748,748,748 + .word 748,748,748,747,747,747,747,747 + .word 747,746,746,746,746,746,746,745 + .word 745,745,745,745,745,745,744,744 + .word 744,744,744,744,743,743,743,743 + .word 743,743,742,742,742,742,742,742 + .word 741,741,741,741,741,741,740,740 + .word 740,740,740,740,740,739,739,739 + .word 739,739,739,738,738,738,738,738 + .word 738,737,737,737,737,737,737,736 + .word 736,736,736,736,736,736,735,735 + .word 735,735,735,735,734,734,734,734 + .word 734,734,733,733,733,733,733,733 + .word 732,732,732,732,732,732,731,731 + .word 731,731,731,731,731,730,730,730 + .word 730,730,730,729,729,729,729,729 + .word 729,728,728,728,728,728,728,727 + .word 727,727,727,727,727,727,726,726 + .word 726,726,726,726,725,725,725,725 + .word 725,725,724,724,724,724,724,724 + .word 723,723,723,723,723,723,722,722 + .word 722,722,722,722,722,721,721,721 + .word 721,721,721,720,720,720,720,720 + .word 720,719,719,719,719,719,719,718 + .word 718,718,718,718,718,718,717,717 + .word 717,717,717,717,716,716,716,716 + .word 716,716,715,715,715,715,715,715 + .word 714,714,714,714,714,714,713,713 + .word 713,713,713,713,713,712,712,712 + .word 712,712,712,711,711,711,711,711 + .word 711,710,710,710,710,710,710,709 + .word 709,709,709 + + +vln_right_matedge2 +; .word MAT_TOP-5,MAT_BOT+5 ;z1,z2 +; .word >400+>110,>400+>169 + + .word 1296+100,962,1385+100,1526 ;x1,z1,x2,z2 + + .word 1291+100,1291+100,1291+100,1291+100,1292+100,1292+100,1292+100,1292+100 + .word 1292+100,1292+100,1293+100,1293+100,1293+100,1293+100,1293+100,1293+100 + .word 1294+100,1294+100,1294+100,1294+100,1294+100,1294+100,1294+100,1295+100 + .word 1295+100,1295+100,1295+100,1295+100,1295+100,1296+100,1296+100,1296+100 + .word 1296+100,1296+100,1296+100,1297+100,1297+100,1297+100,1297+100,1297+100 + .word 1297+100,1297+100,1298+100,1298+100,1298+100,1298+100,1298+100,1298+100 + .word 1299+100,1299+100,1299+100,1299+100,1299+100,1299+100,1300+100,1300+100 + .word 1300+100,1300+100,1300+100,1300+100,1300+100,1301+100,1301+100,1301+100 + .word 1301+100,1301+100,1301+100,1302+100,1302+100,1302+100,1302+100,1302+100 + .word 1302+100,1303+100,1303+100,1303+100,1303+100,1303+100,1303+100,1303+100 + .word 1304+100,1304+100,1304+100,1304+100,1304+100,1304+100,1305+100,1305+100 + .word 1305+100,1305+100,1305+100,1305+100,1306+100,1306+100,1306+100,1306+100 + .word 1306+100,1306+100,1306+100,1307+100,1307+100,1307+100,1307+100,1307+100 + .word 1307+100,1308+100,1308+100,1308+100,1308+100,1308+100,1308+100,1309+100 + .word 1309+100,1309+100,1309+100,1309+100,1309+100,1309+100,1310+100,1310+100 + .word 1310+100,1310+100,1310+100,1310+100,1311+100,1311+100,1311+100,1311+100 + .word 1311+100,1311+100,1312+100,1312+100,1312+100,1312+100,1312+100,1312+100 + .word 1312+100,1313+100,1313+100,1313+100,1313+100,1313+100,1313+100,1314+100 + .word 1314+100,1314+100,1314+100,1314+100,1314+100,1315+100,1315+100,1315+100 + .word 1315+100,1315+100,1315+100,1315+100,1316+100,1316+100,1316+100,1316+100 + .word 1316+100,1316+100,1317+100,1317+100,1317+100,1317+100,1317+100,1317+100 + .word 1318+100,1318+100,1318+100,1318+100,1318+100,1318+100,1318+100,1319+100 + .word 1319+100,1319+100,1319+100,1319+100,1319+100,1320+100,1320+100,1320+100 + .word 1320+100,1320+100,1320+100,1321+100,1321+100,1321+100,1321+100,1321+100 + .word 1321+100,1321+100,1322+100,1322+100,1322+100,1322+100,1322+100,1322+100 + .word 1323+100,1323+100,1323+100,1323+100,1323+100,1323+100,1324+100,1324+100 + .word 1324+100,1324+100,1324+100,1324+100,1324+100,1325+100,1325+100,1325+100 + .word 1325+100,1325+100,1325+100,1326+100,1326+100,1326+100,1326+100,1326+100 + .word 1326+100,1327+100,1327+100,1327+100,1327+100,1327+100,1327+100,1327+100 + .word 1328+100,1328+100,1328+100,1328+100,1328+100,1328+100,1329+100,1329+100 + .word 1329+100,1329+100,1329+100,1329+100,1330+100,1330+100,1330+100,1330+100 + .word 1330+100,1330+100,1330+100,1331+100,1331+100,1331+100,1331+100,1331+100 + .word 1331+100,1332+100,1332+100,1332+100,1332+100,1332+100,1332+100,1333+100 + .word 1333+100,1333+100,1333+100,1333+100,1333+100,1333+100,1334+100,1334+100 + .word 1334+100,1334+100,1334+100,1334+100,1335+100,1335+100,1335+100,1335+100 + .word 1335+100,1335+100,1336+100,1336+100,1336+100,1336+100,1336+100,1336+100 + .word 1336+100,1337+100,1337+100,1337+100,1337+100,1337+100,1337+100,1338+100 + .word 1338+100,1338+100,1338+100,1338+100,1338+100,1338+100,1339+100,1339+100 + .word 1339+100,1339+100,1339+100,1339+100,1340+100,1340+100,1340+100,1340+100 + .word 1340+100,1340+100,1341+100,1341+100,1341+100,1341+100,1341+100,1341+100 + .word 1341+100,1342+100,1342+100,1342+100,1342+100,1342+100,1342+100,1343+100 + .word 1343+100,1343+100,1343+100,1343+100,1343+100,1344+100,1344+100,1344+100 + .word 1344+100,1344+100,1344+100,1344+100,1345+100,1345+100,1345+100,1345+100 + .word 1345+100,1345+100,1346+100,1346+100,1346+100,1346+100,1346+100,1346+100 + .word 1347+100,1347+100,1347+100,1347+100,1347+100,1347+100,1347+100,1348+100 + .word 1348+100,1348+100,1348+100,1348+100,1348+100,1349+100,1349+100,1349+100 + .word 1349+100,1349+100,1349+100,1350+100,1350+100,1350+100,1350+100,1350+100 + .word 1350+100,1350+100,1351+100,1351+100,1351+100,1351+100,1351+100,1351+100 + .word 1352+100,1352+100,1352+100,1352+100,1352+100,1352+100,1353+100,1353+100 + .word 1353+100,1353+100,1353+100,1353+100,1353+100,1354+100,1354+100,1354+100 + .word 1354+100,1354+100,1354+100,1355+100,1355+100,1355+100,1355+100,1355+100 + .word 1355+100,1356+100,1356+100,1356+100,1356+100,1356+100,1356+100,1356+100 + .word 1357+100,1357+100,1357+100,1357+100,1357+100,1357+100,1358+100,1358+100 + .word 1358+100,1358+100,1358+100,1358+100,1359+100,1359+100,1359+100,1359+100 + .word 1359+100,1359+100,1359+100,1360+100,1360+100,1360+100,1360+100,1360+100 + .word 1360+100,1361+100,1361+100,1361+100,1361+100,1361+100,1361+100,1362+100 + .word 1362+100,1362+100,1362+100,1362+100,1362+100,1362+100,1363+100,1363+100 + .word 1363+100,1363+100,1363+100,1363+100,1364+100,1364+100,1364+100,1364+100 + .word 1364+100,1364+100,1365+100,1365+100,1365+100,1365+100,1365+100,1365+100 + .word 1365+100,1366+100,1366+100,1366+100,1366+100,1366+100,1366+100,1367+100 + .word 1367+100,1367+100,1367+100,1367+100,1367+100,1368+100,1368+100,1368+100 + .word 1368+100,1368+100,1368+100,1368+100,1369+100,1369+100,1369+100,1369+100 + .word 1369+100,1369+100,1370+100,1370+100,1370+100,1370+100,1370+100,1370+100 + .word 1371+100,1371+100,1371+100,1371+100,1371+100,1371+100,1371+100,1372+100 + .word 1372+100,1372+100,1372+100,1372+100,1372+100,1373+100,1373+100,1373+100 + .word 1373+100,1373+100,1373+100,1374+100,1374+100,1374+100,1374+100,1374+100 + .word 1374+100,1374+100,1375+100,1375+100,1375+100,1375+100,1375+100,1375+100 + .word 1376+100,1376+100,1376+100,1376+100,1376+100,1376+100,1377+100,1377+100 + .word 1377+100,1377+100,1377+100,1377+100,1377+100,1378+100,1378+100,1378+100 + .word 1378+100,1378+100,1378+100,1379+100,1379+100,1379+100,1379+100,1379+100 + .word 1379+100,1380+100,1380+100,1380+100,1380+100 + + +vln_left_matedge2 +; .word MAT_TOP-5,MAT_BOT+5 ;z1,z2 +; .word >400->110,>400->169 + .word 757,962,668,1526 ;x1,z1,x2,z2 + .word 757,757,757,757,756,756,756,756 + .word 756,756,755,755,755,755,755,755 + .word 754,754,754,754,754,754,754,753 + .word 753,753,753,753,753,752,752,752 + .word 752,752,752,751,751,751,751,751 + .word 751,751,750,750,750,750,750,750 + .word 749,749,749,749,749,749,748,748 + .word 748,748,748,748,748,747,747,747 + .word 747,747,747,746,746,746,746,746 + .word 746,745,745,745,745,745,745,745 + .word 744,744,744,744,744,744,743,743 + .word 743,743,743,743,742,742,742,742 + .word 742,742,742,741,741,741,741,741 + .word 741,740,740,740,740,740,740,739 + .word 739,739,739,739,739,739,738,738 + .word 738,738,738,738,737,737,737,737 + .word 737,737,736,736,736,736,736,736 + .word 736,735,735,735,735,735,735,734 + .word 734,734,734,734,734,733,733,733 + .word 733,733,733,733,732,732,732,732 + .word 732,732,731,731,731,731,731,731 + .word 730,730,730,730,730,730,730,729 + .word 729,729,729,729,729,728,728,728 + .word 728,728,728,727,727,727,727,727 + .word 727,727,726,726,726,726,726,726 + .word 725,725,725,725,725,725,724,724 + .word 724,724,724,724,724,723,723,723 + .word 723,723,723,722,722,722,722,722 + .word 722,721,721,721,721,721,721,721 + .word 720,720,720,720,720,720,719,719 + .word 719,719,719,719,718,718,718,718 + .word 718,718,718,717,717,717,717,717 + .word 717,716,716,716,716,716,716,715 + .word 715,715,715,715,715,715,714,714 + .word 714,714,714,714,713,713,713,713 + .word 713,713,712,712,712,712,712,712 + .word 712,711,711,711,711,711,711,710 + .word 710,710,710,710,710,710,709,709 + .word 709,709,709,709,708,708,708,708 + .word 708,708,707,707,707,707,707,707 + .word 707,706,706,706,706,706,706,705 + .word 705,705,705,705,705,704,704,704 + .word 704,704,704,704,703,703,703,703 + .word 703,703,702,702,702,702,702,702 + .word 701,701,701,701,701,701,701,700 + .word 700,700,700,700,700,699,699,699 + .word 699,699,699,698,698,698,698,698 + .word 698,698,697,697,697,697,697,697 + .word 696,696,696,696,696,696,695,695 + .word 695,695,695,695,695,694,694,694 + .word 694,694,694,693,693,693,693,693 + .word 693,692,692,692,692,692,692,692 + .word 691,691,691,691,691,691,690,690 + .word 690,690,690,690,689,689,689,689 + .word 689,689,689,688,688,688,688,688 + .word 688,687,687,687,687,687,687,686 + .word 686,686,686,686,686,686,685,685 + .word 685,685,685,685,684,684,684,684 + .word 684,684,683,683,683,683,683,683 + .word 683,682,682,682,682,682,682,681 + .word 681,681,681,681,681,680,680,680 + .word 680,680,680,680,679,679,679,679 + .word 679,679,678,678,678,678,678,678 + .word 677,677,677,677,677,677,677,676 + .word 676,676,676,676,676,675,675,675 + .word 675,675,675,674,674,674,674,674 + .word 674,674,673,673,673,673,673,673 + .word 672,672,672,672,672,672,671,671 + .word 671,671,671,671,671,670,670,670 + .word 670,670,670,669,669,669,669,669 + .word 669,668,668,668,668 + + +vln_right_fence +; .word ARENA_TOP,ARENA_BOT ;z1,z2 +; .word 0632h,072fh ;x1,x2 + +; .word 1586+100,ARENA_TOP,1839+100,ARENA_BOT ;x1,z1,x2,z2 + +; .word 1586+100,1586+100,1586+100,1587+100,1587+100,1587+100,1587+100,1587+100 +; .word 1588+100,1588+100,1588+100,1588+100,1588+100,1589+100,1589+100,1589+100 +; .word 1589+100,1589+100,1590+100,1590+100,1590+100,1590+100,1590+100,1591+100 +; .word 1591+100,1591+100,1591+100,1591+100,1592+100,1592+100,1592+100,1592+100 +; .word 1592+100,1593+100,1593+100,1593+100,1593+100,1593+100,1594+100,1594+100 +; .word 1594+100,1594+100,1594+100,1595+100,1595+100,1595+100,1595+100,1595+100 +; .word 1596+100,1596+100,1596+100,1596+100,1596+100,1597+100,1597+100,1597+100 +; .word 1597+100,1597+100,1598+100,1598+100,1598+100,1598+100,1598+100,1599+100 +; .word 1599+100,1599+100,1599+100,1599+100,1600+100,1600+100,1600+100,1600+100 +; .word 1600+100,1601+100,1601+100,1601+100,1601+100,1601+100,1602+100,1602+100 +; .word 1602+100,1602+100,1602+100,1603+100,1603+100,1603+100,1603+100,1603+100 +; .word 1604+100,1604+100,1604+100,1604+100,1604+100,1605+100,1605+100,1605+100 +; .word 1605+100,1605+100,1606+100,1606+100,1606+100,1606+100,1606+100,1607+100 +; .word 1607+100,1607+100,1607+100,1607+100,1608+100,1608+100,1608+100,1608+100 +; .word 1608+100,1609+100,1609+100,1609+100,1609+100,1609+100,1610+100,1610+100 +; .word 1610+100,1610+100,1610+100,1611+100,1611+100,1611+100,1611+100,1611+100 +; .word 1612+100,1612+100,1612+100,1612+100,1612+100,1613+100,1613+100,1613+100 +; .word 1613+100,1613+100,1614+100,1614+100,1614+100,1614+100,1614+100,1615+100 +; .word 1615+100,1615+100,1615+100,1615+100,1616+100,1616+100,1616+100,1616+100 +; .word 1616+100,1617+100,1617+100,1617+100,1617+100,1617+100,1618+100,1618+100 +; .word 1618+100,1618+100,1619+100,1619+100,1619+100,1619+100,1619+100,1620+100 +; .word 1620+100,1620+100,1620+100,1620+100,1621+100,1621+100,1621+100,1621+100 +; .word 1621+100,1622+100,1622+100,1622+100,1622+100,1622+100,1623+100,1623+100 +; .word 1623+100,1623+100,1623+100,1624+100,1624+100,1624+100,1624+100,1624+100 +; .word 1625+100,1625+100,1625+100,1625+100,1625+100,1626+100,1626+100,1626+100 +; .word 1626+100,1626+100,1627+100,1627+100,1627+100,1627+100,1627+100,1628+100 +; .word 1628+100,1628+100,1628+100,1628+100,1629+100,1629+100,1629+100,1629+100 +; .word 1629+100,1630+100,1630+100,1630+100,1630+100,1630+100,1631+100,1631+100 +; .word 1631+100,1631+100,1631+100,1632+100,1632+100,1632+100,1632+100,1632+100 +; .word 1633+100,1633+100,1633+100,1633+100,1633+100,1634+100,1634+100,1634+100 +; .word 1634+100,1634+100,1635+100,1635+100,1635+100,1635+100,1635+100,1636+100 +; .word 1636+100,1636+100,1636+100,1636+100,1637+100,1637+100,1637+100,1637+100 +; .word 1637+100,1638+100,1638+100,1638+100,1638+100,1638+100,1639+100,1639+100 +; .word 1639+100,1639+100,1639+100,1640+100,1640+100,1640+100,1640+100,1640+100 +; .word 1641+100,1641+100,1641+100,1641+100,1641+100,1642+100,1642+100,1642+100 +; .word 1642+100,1642+100,1643+100,1643+100,1643+100,1643+100,1643+100,1644+100 +; .word 1644+100,1644+100,1644+100,1644+100,1645+100,1645+100,1645+100,1645+100 +; .word 1645+100,1646+100,1646+100,1646+100,1646+100,1646+100,1647+100,1647+100 +; .word 1647+100,1647+100,1647+100,1648+100,1648+100,1648+100,1648+100,1648+100 +; .word 1649+100,1649+100,1649+100,1649+100,1649+100,1650+100,1650+100,1650+100 +; .word 1650+100,1650+100,1651+100,1651+100,1651+100,1651+100,1651+100,1652+100 +; .word 1652+100,1652+100,1652+100,1652+100,1653+100,1653+100,1653+100,1653+100 +; .word 1653+100,1654+100,1654+100,1654+100,1654+100,1654+100,1655+100,1655+100 +; .word 1655+100,1655+100,1655+100,1656+100,1656+100,1656+100,1656+100,1656+100 +; .word 1657+100,1657+100,1657+100,1657+100,1657+100,1658+100,1658+100,1658+100 +; .word 1658+100,1658+100,1659+100,1659+100,1659+100,1659+100,1659+100,1660+100 +; .word 1660+100,1660+100,1660+100,1660+100,1661+100,1661+100,1661+100,1661+100 +; .word 1661+100,1662+100,1662+100,1662+100,1662+100,1662+100,1663+100,1663+100 +; .word 1663+100,1663+100,1663+100,1664+100,1664+100,1664+100,1664+100,1664+100 +; .word 1665+100,1665+100,1665+100,1665+100,1665+100,1666+100,1666+100,1666+100 +; .word 1666+100,1666+100,1667+100,1667+100,1667+100,1667+100,1667+100,1668+100 +; .word 1668+100,1668+100,1668+100,1668+100,1669+100,1669+100,1669+100,1669+100 +; .word 1669+100,1670+100,1670+100,1670+100,1670+100,1670+100,1671+100,1671+100 +; .word 1671+100,1671+100,1671+100,1672+100,1672+100,1672+100,1672+100,1672+100 +; .word 1673+100,1673+100,1673+100,1673+100,1673+100,1674+100,1674+100,1674+100 +; .word 1674+100,1674+100,1675+100,1675+100,1675+100,1675+100,1675+100,1676+100 +; .word 1676+100,1676+100,1676+100,1676+100,1677+100,1677+100,1677+100,1677+100 +; .word 1677+100,1678+100,1678+100,1678+100,1678+100,1678+100,1679+100,1679+100 +; .word 1679+100,1679+100,1679+100,1680+100,1680+100,1680+100,1680+100,1680+100 +; .word 1681+100,1681+100,1681+100,1681+100,1682+100,1682+100,1682+100,1682+100 +; .word 1682+100,1683+100,1683+100,1683+100,1683+100,1683+100,1684+100,1684+100 +; .word 1684+100,1684+100,1684+100,1685+100,1685+100,1685+100,1685+100,1685+100 +; .word 1686+100,1686+100,1686+100,1686+100,1686+100,1687+100,1687+100,1687+100 +; .word 1687+100,1687+100,1688+100,1688+100,1688+100,1688+100,1688+100,1689+100 +; .word 1689+100,1689+100,1689+100,1689+100,1690+100,1690+100,1690+100,1690+100 +; .word 1690+100,1691+100,1691+100,1691+100,1691+100,1691+100,1692+100,1692+100 +; .word 1692+100,1692+100,1692+100,1693+100,1693+100,1693+100,1693+100,1693+100 +; .word 1694+100,1694+100,1694+100,1694+100,1694+100,1695+100,1695+100,1695+100 +; .word 1695+100,1695+100,1696+100,1696+100,1696+100,1696+100,1696+100,1697+100 +; .word 1697+100,1697+100,1697+100,1697+100,1698+100,1698+100,1698+100,1698+100 +; .word 1698+100,1699+100,1699+100,1699+100,1699+100,1699+100,1700+100,1700+100 +; .word 1700+100,1700+100,1700+100,1701+100,1701+100,1701+100,1701+100,1701+100 +; .word 1702+100,1702+100,1702+100,1702+100,1702+100,1703+100,1703+100,1703+100 +; .word 1703+100,1703+100,1704+100,1704+100,1704+100,1704+100,1704+100,1705+100 +; .word 1705+100,1705+100,1705+100,1705+100,1706+100,1706+100,1706+100,1706+100 +; .word 1706+100,1707+100,1707+100,1707+100,1707+100,1707+100,1708+100,1708+100 +; .word 1708+100,1708+100,1708+100,1709+100,1709+100,1709+100,1709+100,1709+100 +; .word 1710+100,1710+100,1710+100,1710+100,1710+100,1711+100,1711+100,1711+100 +; .word 1711+100,1711+100,1712+100,1712+100,1712+100,1712+100,1712+100,1713+100 +; .word 1713+100,1713+100,1713+100,1713+100,1714+100,1714+100,1714+100,1714+100 +; .word 1714+100,1715+100,1715+100,1715+100,1715+100,1715+100,1716+100,1716+100 +; .word 1716+100,1716+100,1716+100,1717+100,1717+100,1717+100,1717+100,1717+100 +; .word 1718+100,1718+100,1718+100,1718+100,1718+100,1719+100,1719+100,1719+100 +; .word 1719+100,1719+100,1720+100,1720+100,1720+100,1720+100,1720+100,1721+100 +; .word 1721+100,1721+100,1721+100,1721+100,1722+100,1722+100,1722+100,1722+100 +; .word 1722+100,1723+100,1723+100,1723+100,1723+100,1723+100,1724+100,1724+100 +; .word 1724+100,1724+100,1724+100,1725+100,1725+100,1725+100,1725+100,1725+100 +; .word 1726+100,1726+100,1726+100,1726+100,1726+100,1727+100,1727+100,1727+100 +; .word 1727+100,1727+100,1728+100,1728+100,1728+100,1728+100,1728+100,1729+100 +; .word 1729+100,1729+100,1729+100,1729+100,1730+100,1730+100,1730+100,1730+100 +; .word 1730+100,1731+100,1731+100,1731+100,1731+100,1731+100,1732+100,1732+100 +; .word 1732+100,1732+100,1732+100,1733+100,1733+100,1733+100,1733+100,1733+100 +; .word 1734+100,1734+100,1734+100,1734+100,1734+100,1735+100,1735+100,1735+100 +; .word 1735+100,1735+100,1736+100,1736+100,1736+100,1736+100,1736+100,1737+100 +; .word 1737+100,1737+100,1737+100,1737+100,1738+100,1738+100,1738+100,1738+100 +; .word 1738+100,1739+100,1739+100,1739+100,1739+100,1739+100,1740+100,1740+100 +; .word 1740+100,1740+100,1740+100,1741+100,1741+100,1741+100,1741+100,1741+100 +; .word 1742+100,1742+100,1742+100,1742+100,1742+100,1743+100,1743+100,1743+100 +; .word 1743+100,1743+100,1744+100,1744+100,1744+100,1744+100,1745+100,1745+100 +; .word 1745+100,1745+100,1745+100,1746+100,1746+100,1746+100,1746+100,1746+100 +; .word 1747+100,1747+100,1747+100,1747+100,1747+100,1748+100,1748+100,1748+100 +; .word 1748+100,1748+100,1749+100,1749+100,1749+100,1749+100,1749+100,1750+100 +; .word 1750+100,1750+100,1750+100,1750+100,1751+100,1751+100,1751+100,1751+100 +; .word 1751+100,1752+100,1752+100,1752+100,1752+100,1752+100,1753+100,1753+100 +; .word 1753+100,1753+100,1753+100,1754+100,1754+100,1754+100,1754+100,1754+100 +; .word 1755+100,1755+100,1755+100,1755+100,1755+100,1756+100,1756+100,1756+100 +; .word 1756+100,1756+100,1757+100,1757+100,1757+100,1757+100,1757+100,1758+100 +; .word 1758+100,1758+100,1758+100,1758+100,1759+100,1759+100,1759+100,1759+100 +; .word 1759+100,1760+100,1760+100,1760+100,1760+100,1760+100,1761+100,1761+100 +; .word 1761+100,1761+100,1761+100,1762+100,1762+100,1762+100,1762+100,1762+100 +; .word 1763+100,1763+100,1763+100,1763+100,1763+100,1764+100,1764+100,1764+100 +; .word 1764+100,1764+100,1765+100,1765+100,1765+100,1765+100,1765+100,1766+100 +; .word 1766+100,1766+100,1766+100,1766+100,1767+100,1767+100,1767+100,1767+100 +; .word 1767+100,1768+100,1768+100,1768+100,1768+100,1768+100,1769+100,1769+100 +; .word 1769+100,1769+100,1769+100,1770+100,1770+100,1770+100,1770+100,1770+100 +; .word 1771+100,1771+100,1771+100,1771+100,1771+100,1772+100,1772+100,1772+100 +; .word 1772+100,1772+100,1773+100,1773+100,1773+100,1773+100,1773+100,1774+100 +; .word 1774+100,1774+100,1774+100,1774+100,1775+100,1775+100,1775+100,1775+100 +; .word 1775+100,1776+100,1776+100,1776+100,1776+100,1776+100,1777+100,1777+100 +; .word 1777+100,1777+100,1777+100,1778+100,1778+100,1778+100,1778+100,1778+100 +; .word 1779+100,1779+100,1779+100,1779+100,1779+100,1780+100,1780+100,1780+100 +; .word 1780+100,1780+100,1781+100,1781+100,1781+100,1781+100,1781+100,1782+100 +; .word 1782+100,1782+100,1782+100,1782+100,1783+100,1783+100,1783+100,1783+100 +; .word 1783+100,1784+100,1784+100,1784+100,1784+100,1784+100,1785+100,1785+100 +; .word 1785+100,1785+100,1785+100,1786+100,1786+100,1786+100,1786+100,1786+100 +; .word 1787+100,1787+100,1787+100,1787+100,1787+100,1788+100,1788+100,1788+100 +; .word 1788+100,1788+100,1789+100,1789+100,1789+100,1789+100,1789+100,1790+100 +; .word 1790+100,1790+100,1790+100,1790+100,1791+100,1791+100,1791+100,1791+100 +; .word 1791+100,1792+100,1792+100,1792+100,1792+100,1792+100,1793+100,1793+100 +; .word 1793+100,1793+100,1793+100,1794+100,1794+100,1794+100,1794+100,1794+100 +; .word 1795+100,1795+100,1795+100,1795+100,1795+100,1796+100,1796+100,1796+100 +; .word 1796+100,1796+100,1797+100,1797+100,1797+100,1797+100,1797+100,1798+100 +; .word 1798+100,1798+100,1798+100,1798+100,1799+100,1799+100,1799+100,1799+100 +; .word 1799+100,1800+100,1800+100,1800+100,1800+100,1800+100,1801+100,1801+100 +; .word 1801+100,1801+100,1801+100,1802+100,1802+100,1802+100,1802+100,1802+100 +; .word 1803+100,1803+100,1803+100,1803+100,1803+100,1804+100,1804+100,1804+100 +; .word 1804+100,1804+100,1805+100,1805+100,1805+100,1805+100,1805+100,1806+100 +; .word 1806+100,1806+100,1806+100,1806+100,1807+100,1807+100,1807+100,1807+100 +; .word 1808+100,1808+100,1808+100,1808+100,1808+100,1809+100,1809+100,1809+100 +; .word 1809+100,1809+100,1810+100,1810+100,1810+100,1810+100,1810+100,1811+100 +; .word 1811+100,1811+100,1811+100,1811+100,1812+100,1812+100,1812+100,1812+100 +; .word 1812+100,1813+100,1813+100,1813+100,1813+100,1813+100,1814+100,1814+100 +; .word 1814+100,1814+100,1814+100,1815+100,1815+100,1815+100,1815+100,1815+100 +; .word 1816+100,1816+100,1816+100,1816+100,1816+100,1817+100,1817+100,1817+100 +; .word 1817+100,1817+100,1818+100,1818+100,1818+100,1818+100,1818+100,1819+100 +; .word 1819+100,1819+100,1819+100,1819+100,1820+100,1820+100,1820+100,1820+100 +; .word 1820+100,1821+100,1821+100,1821+100,1821+100,1821+100,1822+100,1822+100 +; .word 1822+100,1822+100,1822+100,1823+100,1823+100,1823+100,1823+100,1823+100 +; .word 1824+100,1824+100,1824+100,1824+100,1824+100,1825+100,1825+100,1825+100 +; .word 1825+100,1825+100,1826+100,1826+100,1826+100,1826+100,1826+100,1827+100 +; .word 1827+100,1827+100,1827+100,1827+100,1828+100,1828+100,1828+100,1828+100 +; .word 1828+100,1829+100,1829+100,1829+100,1829+100,1829+100,1830+100,1830+100 +; .word 1830+100,1830+100,1830+100,1831+100,1831+100,1831+100,1831+100,1831+100 +; .word 1832+100,1832+100,1832+100,1832+100,1832+100,1833+100,1833+100,1833+100 +; .word 1833+100,1833+100,1834+100,1834+100,1834+100,1834+100,1834+100,1835+100 +; .word 1835+100,1835+100,1835+100,1835+100,1836+100,1836+100,1836+100,1836+100 +; .word 1836+100,1837+100,1837+100,1837+100,1837+100,1837+100,1838+100,1838+100 +; .word 1838+100,1838+100,1838+100,1839+100,1839+100,1839+100 + + +vln_left_fence +; .word ARENA_TOP,ARENA_BOT ;z1,z2 +; .word 02a6h,0189h ;x1,x2 + + .word 668,ARENA_TOP,383,ARENA_BOT ;x1,z1,x2,z2 + +; .word 668,668,668,667,667,667,667,666 +; .word 666,666,666,666,665,665,665,665 +; .word 664,664,664,664,663,663,663,663 +; .word 663,662,662,662,662,661,661,661 +; .word 661,661,660,660,660,660,659,659 +; .word 659,659,659,658,658,658,658,657 +; .word 657,657,657,656,656,656,656,656 +; .word 655,655,655,655,654,654,654,654 +; .word 654,653,653,653,653,652,652,652 +; .word 652,652,651,651,651,651,650,650 +; .word 650,650,649,649,649,649,649,648 +; .word 648,648,648,647,647,647,647,647 +; .word 646,646,646,646,645,645,645,645 +; .word 644,644,644,644,644,643,643,643 +; .word 643,642,642,642,642,642,641,641 +; .word 641,641,640,640,640,640,640,639 +; .word 639,639,639,638,638,638,638,637 +; .word 637,637,637,637,636,636,636,636 +; .word 635,635,635,635,635,634,634,634 +; .word 634,633,633,633,633,633,632,632 +; .word 632,632,631,631,631,631,630,630 +; .word 630,630,630,629,629,629,629,628 +; .word 628,628,628,628,627,627,627,627 +; .word 626,626,626,626,626,625,625,625 +; .word 625,624,624,624,624,623,623,623 +; .word 623,623,622,622,622,622,621,621 +; .word 621,621,621,620,620,620,620,619 +; .word 619,619,619,619,618,618,618,618 +; .word 617,617,617,617,616,616,616,616 +; .word 616,615,615,615,615,614,614,614 +; .word 614,614,613,613,613,613,612,612 +; .word 612,612,611,611,611,611,611,610 +; .word 610,610,610,609,609,609,609,609 +; .word 608,608,608,608,607,607,607,607 +; .word 607,606,606,606,606,605,605,605 +; .word 605,604,604,604,604,604,603,603 +; .word 603,603,602,602,602,602,602,601 +; .word 601,601,601,600,600,600,600,600 +; .word 599,599,599,599,598,598,598,598 +; .word 597,597,597,597,597,596,596,596 +; .word 596,595,595,595,595,595,594,594 +; .word 594,594,593,593,593,593,593,592 +; .word 592,592,592,591,591,591,591,590 +; .word 590,590,590,590,589,589,589,589 +; .word 588,588,588,588,588,587,587,587 +; .word 587,586,586,586,586,586,585,585 +; .word 585,585,584,584,584,584,583,583 +; .word 583,583,583,582,582,582,582,581 +; .word 581,581,581,581,580,580,580,580 +; .word 579,579,579,579,578,578,578,578 +; .word 578,577,577,577,577,576,576,576 +; .word 576,576,575,575,575,575,574,574 +; .word 574,574,574,573,573,573,573,572 +; .word 572,572,572,571,571,571,571,571 +; .word 570,570,570,570,569,569,569,569 +; .word 569,568,568,568,568,567,567,567 +; .word 567,567,566,566,566,566,565,565 +; .word 565,565,564,564,564,564,564,563 +; .word 563,563,563,562,562,562,562,562 +; .word 561,561,561,561,560,560,560,560 +; .word 560,559,559,559,559,558,558,558 +; .word 558,557,557,557,557,557,556,556 +; .word 556,556,555,555,555,555,555,554 +; .word 554,554,554,553,553,553,553,553 +; .word 552,552,552,552,551,551,551,551 +; .word 550,550,550,550,550,549,549,549 +; .word 549,548,548,548,548,548,547,547 +; .word 547,547,546,546,546,546,546,545 +; .word 545,545,545,544,544,544,544,543 +; .word 543,543,543,543,542,542,542,542 +; .word 541,541,541,541,541,540,540,540 +; .word 540,539,539,539,539,538,538,538 +; .word 538,538,537,537,537,537,536,536 +; .word 536,536,536,535,535,535,535,534 +; .word 534,534,534,534,533,533,533,533 +; .word 532,532,532,532,531,531,531,531 +; .word 531,530,530,530,530,529,529,529 +; .word 529,529,528,528,528,528,527,527 +; .word 527,527,527,526,526,526,526,525 +; .word 525,525,525,524,524,524,524,524 +; .word 523,523,523,523,522,522,522,522 +; .word 522,521,521,521,521,520,520,520 +; .word 520,520,519,519,519,519,518,518 +; .word 518,518,517,517,517,517,517,516 +; .word 516,516,516,515,515,515,515,515 +; .word 514,514,514,514,513,513,513,513 +; .word 513,512,512,512,512,511,511,511 +; .word 511,510,510,510,510,510,509,509 +; .word 509,509,508,508,508,508,508,507 +; .word 507,507,507,506,506,506,506,505 +; .word 505,505,505,505,504,504,504,504 +; .word 503,503,503,503,503,502,502,502 +; .word 502,501,501,501,501,501,500,500 +; .word 500,500,499,499,499,499,498,498 +; .word 498,498,498,497,497,497,497,496 +; .word 496,496,496,496,495,495,495,495 +; .word 494,494,494,494,494,493,493,493 +; .word 493,492,492,492,492,491,491,491 +; .word 491,491,490,490,490,490,489,489 +; .word 489,489,489,488,488,488,488,487 +; .word 487,487,487,487,486,486,486,486 +; .word 485,485,485,485,484,484,484,484 +; .word 484,483,483,483,483,482,482,482 +; .word 482,482,481,481,481,481,480,480 +; .word 480,480,480,479,479,479,479,478 +; .word 478,478,478,477,477,477,477,477 +; .word 476,476,476,476,475,475,475,475 +; .word 475,474,474,474,474,473,473,473 +; .word 473,473,472,472,472,472,471,471 +; .word 471,471,470,470,470,470,470,469 +; .word 469,469,469,468,468,468,468,468 +; .word 467,467,467,467,466,466,466,466 +; .word 465,465,465,465,465,464,464,464 +; .word 464,463,463,463,463,463,462,462 +; .word 462,462,461,461,461,461,461,460 +; .word 460,460,460,459,459,459,459,458 +; .word 458,458,458,458,457,457,457,457 +; .word 456,456,456,456,456,455,455,455 +; .word 455,454,454,454,454,454,453,453 +; .word 453,453,452,452,452,452,451,451 +; .word 451,451,451,450,450,450,450,449 +; .word 449,449,449,449,448,448,448,448 +; .word 447,447,447,447,447,446,446,446 +; .word 446,445,445,445,445,444,444,444 +; .word 444,444,443,443,443,443,442,442 +; .word 442,442,442,441,441,441,441,440 +; .word 440,440,440,440,439,439,439,439 +; .word 438,438,438,438,437,437,437,437 +; .word 437,436,436,436,436,435,435,435 +; .word 435,435,434,434,434,434,433,433 +; .word 433,433,432,432,432,432,432,431 +; .word 431,431,431,430,430,430,430,430 +; .word 429,429,429,429,428,428,428,428 +; .word 428,427,427,427,427,426,426,426 +; .word 426,425,425,425,425,425,424,424 +; .word 424,424,423,423,423,423,423,422 +; .word 422,422,422,421,421,421,421,421 +; .word 420,420,420,420,419,419,419,419 +; .word 418,418,418,418,418,417,417,417 +; .word 417,416,416,416,416,416,415,415 +; .word 415,415,414,414,414,414,414,413 +; .word 413,413,413,412,412,412,412,411 +; .word 411,411,411,411,410,410,410,410 +; .word 409,409,409,409,409,408,408,408 +; .word 408,407,407,407,407,407,406,406 +; .word 406,406,405,405,405,405,404,404 +; .word 404,404,404,403,403,403,403,402 +; .word 402,402,402,402,401,401,401,401 +; .word 400,400,400,400,399,399,399,399 +; .word 399,398,398,398,398,397,397,397 +; .word 397,397,396,396,396,396,395,395 +; .word 395,395,395,394,394,394,394,393 +; .word 393,393,393,392,392,392,392,392 +; .word 391,391,391,391,390,390,390,390 +; .word 390,389,389,389,389,388,388,388 +; .word 388,388,387,387,387,387,386,386 +; .word 386,386,385,385,385,385,385,384 +; .word 384,384,384,383,383,383 + + +#***************************************************************************** +* +* BOXES + + .even +box_matedge + .long vln_left_matedge + .long vln_right_matedge + +box_matedge2 + .long vln_left_matedge2 + .long vln_right_matedge2 + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/RING.EQU b/RING.EQU new file mode 100755 index 0000000..65e53f4 --- /dev/null +++ b/RING.EQU @@ -0,0 +1,77 @@ + .global vln_right_rope + .global vln_left_rope + .global vln_right_matedge + .global vln_left_matedge + .global vln_right_matedge2 + .global vln_left_matedge2 + .global vln_right_fence + .global vln_left_fence + .global box_matedge + .global box_matedge2 + +****************************************************************************** +* +* MISC GAME EQUATES + +; to calculate this value divide the average width of the ring by +; the height of the ring +; 489W / 102H = 4.794 + +Y_SCALE_MULTIPLIER equ 3566h ; = 1 / 4.794 * 2^16 + +RING_X_CENTER equ 0400h+50 + +RING_Z_CENTER equ 04a0h + +ARENA_BOT_LEFT EQU 383-54 +ARENA_TOP_LEFT EQU 668-50 +ARENA_LEFT_WIDTH EQU ARENA_TOP_LEFT-ARENA_BOT_LEFT +ARENA_TOP_RIGHT EQU 1686+50 +ARENA_BOT_RIGHT EQU 1939+50 +ARENA_RIGHT_WIDTH EQU ARENA_BOT_RIGHT-ARENA_TOP_RIGHT +ARENA_TOP EQU 0250h +ARENA_BOT EQU 0768h +ARENA_DEPTH EQU ARENA_BOT-ARENA_TOP + + + +RING_BOT_LEFT EQU 805-10+10 +RING_TOP_LEFT EQU 856-10+10 + + + + +RING_LEFT_WIDTH EQU RING_TOP_LEFT-RING_BOT_LEFT +RING_TOP_RIGHT EQU 1292+5 +RING_BOT_RIGHT EQU 1343+5 +RING_RIGHT_WIDTH EQU RING_BOT_RIGHT-RING_TOP_RIGHT +RING_TOP EQU 1023 +RING_BOT EQU 1345 +RING_DEPTH EQU RING_BOT-RING_TOP + +MAT_BOT_LEFT EQU 709-10 +MAT_TOP_LEFT EQU 798-10 +MAT_LEFT_WIDTH EQU MAT_TOP_LEFT-MAT_BOT_LEFT +MAT_TOP_RIGHT EQU 1350+7 +MAT_BOT_RIGHT EQU 1439+7 +MAT_RIGHT_WIDTH EQU MAT_BOT_RIGHT-MAT_TOP_RIGHT +MAT_TOP EQU 03C7h +MAT_BOT EQU 05F1h +MAT_DEPTH EQU MAT_BOT-MAT_TOP + +MAT2_BOT_LEFT EQU 668+10 +MAT2_TOP_LEFT EQU 757+15 +MAT2_LEFT_WIDTH EQU MAT2_TOP_LEFT-MAT2_BOT_LEFT +MAT2_TOP_RIGHT EQU 1396-15 +MAT2_BOT_RIGHT EQU 1485-10 +MAT2_RIGHT_WIDTH EQU MAT2_BOT_RIGHT-MAT2_TOP_RIGHT +MAT2_TOP EQU MAT_TOP-5 +MAT2_BOT EQU MAT_BOT+5 +MAT2_DEPTH EQU MAT2_BOT-MAT2_TOP + + +MAT_Y equ 62 + + +****************************************************************************** + \ No newline at end of file diff --git a/ROBO.ASM b/ROBO.ASM new file mode 100755 index 0000000..d3778ed --- /dev/null +++ b/ROBO.ASM @@ -0,0 +1,5105 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 4 Oct 93 +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/8/93 11:15 +************************************************************** + + .file "robo.asm" + .title "robotron game" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;Mproc equates + .include "display.equ" ;Display proc equates + .include "gsp.equ" ;Gsp asm equates + .include "sys.equ" + .include "game.equ" + .include "audit.equ" + .include "macros.h" + .include "link.equ" + +; .include "roboimg.glo" + .include "roboimg.tbl" + .include "fontsimg.glo" + + ;kludge + .ref robo_p + +#***************************************************************************** + + ;from ADJUST.ASM + .ref BINBCD + + ;from COLL2.ASM + .ref collisions,CCCCount + + ;from DCSSOUND.ASM + .ref nosounds,SNDSND + + ;from DISPLAY.ASM + .ref pal_getf,STOPOBJS,fg2bg + + ;from MAIN.ASM + .ref dpageflip,IRQSKYE + + ;from MPROC.ASM + .ref KIL1C + + ;from STRING.ASM + .ref setup_message,print_string_R,mess_objid,copy_string + .ref dec_to_asc + + ;from UTIL.ASM + .ref get_all_buttons_cur,get_stick_val_cur,RNDRNG0,get_start_cur + .ref WIPEOUT,CYCLE_TABLE,civani,civanic + + ;from WRESTLE.ASM + .if DEBUG + .ref CPULEFT + .endif + .ref HALT,PCNT + + ;for WRESTLE.ASM + .def RE_DEADPLAYER,RE_WAVEDONE,RE_ABORT,RE_BACKUP + + .ref _switch_addr,_switch2_addr,ADD_VOICE + +#***************************************************************************** + + BSSX robo_end, 16 ;reason for wave end + BSSX robotron_score, 32 ;UHL score + .bss player_dead, 16 + .bss starts_down, 16 ;are both starts down? + .bss player_object, 32 ;pointer to char1 obj + .bss gun_proc, 32 ;gun process address + .bss robo_wave, 16 ;which wave to perform? + .bss live_badguys, 16 ;wave-preserving badguy count + .bss forward, 16 ;skip wave + .bss backward, 16 ;drop back a wave + +#***************************************************************************** + +ROBO_DEBUG equ 0 +WAVE_CONTROL equ 0 +BOG_MONITOR equ 0 + +ROBO_PAGE equ 0*256 + +ROBJ_MOM equ 1 +ROBJ_DAD equ 2 +ROBJ_KID equ 3 + +;termination causes +RE_DEADPLAYER equ 1 +RE_WAVEDONE equ 2 +RE_ABORT equ 3 +RE_BACKUP equ 4 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** + .ref robo_icon_trigger + .ref p1icon_total + .ref p2icon_total + + + SUBR robo_check + + .if DEBUG + jruc #robo_ok + .endif + jruc #robo_end + + move @p1icon_total,a0,L + move @robo_icon_trigger,a14 + cmp a0,a14 + jrle #robo_ok + move @p2icon_total,a0,L + cmp a0,a14 + jrgt #robo_end +#robo_ok + sll 1,a14 + move a14,@robo_icon_trigger + callr reset_roboscore + callr robo_sound_init + +; movi -1,a0 +; calla ADD_VOICE + + clr a0 +#robo_loop + JSRP robo_game + move @robo_end,a14 + cmpi RE_DEADPLAYER,a14 + jreq #player_died + cmpi RE_WAVEDONE,a14 + jreq #wave_successful + cmpi RE_ABORT,a14 + jreq #wave_aborted + cmpi RE_BACKUP,a14 + jreq #back_up + jruc #robo_end + +#player_died + jruc #robo_loop + +#wave_successful + inc a0 + cmpi 16,a0 + jrne #robo_loop + jruc #robo_end + +#wave_aborted + jruc #robo_end + +#back_up + dec a0 + jrnn #robo_loop + clr a0 + jruc #robo_loop + +#robo_end + RETP + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** + + SUBRP reset_roboscore + + clr a14 + move a14,@robotron_score,L + rets + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** + + SUBR robo_game + + sla 4,a0 + move a0,@robo_wave,W + + calla display_blank + calla WIPEOUT ;CLEAN SYSTEM OUT + + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + move a0,@CCCCount + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + SLEEPK 1 + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + SLEEPK 2 + + calla nosounds ;kill the select music + + ;draw the frame + move @robo_wave,a0 + addi #border_colors,a0 + move *a0,a0,W + callr draw_frame + + movk 1,a0 + move a0,@DISPLAYON + + SLEEPK 2 + + clr a14 + move a14,@player_dead,W ;clear the done flag + + ;initialize the robo palette color cycles + callr robo_pal_cycles + + ;initialize the badguy count + clr a14 + move a14,@live_badguys,W + + ;place the wave count + callr wave_count + + ;create the score monitor + CREATE ROBOSCORE_PID,score + + ;set up the player object + CREATE ROBOMAN_PID,our_hero ;start the little guy up + CREATE PLYRGUN_PID,player_gun ;give him a weapon + move a0,@gun_proc,L ;save the address + + ;set up some grunts + move @robo_wave,a0 + addi #wave_grunts,a0 + move *a0,a0,W + move @robo_wave,a2 + addi #grunt_speeds,a2 + move *a2,a2,W + callr make_grunts + + ;make some hulks + move @robo_wave,a0 + addi #wave_hulks,a0 + move *a0,a0,W + callr make_hulks + + ;sphereoids + move @robo_wave,a0 + addi #wave_sphereoids,a0 + move *a0,a0,W + callr make_sphereoids + + ;quarks + move @robo_wave,a0 + addi #wave_quarks,a0 + move *a0,a0,W + callr make_quarks + + ;make a few posts + move @robo_wave,a0 + addi #wave_posts,a0 + move *a0,a0,W + + move @robo_wave,a1 + addi #post_types,a1 + move *a1,a1,W + + move @robo_wave,a2 + addi #post_colors,a2 + move *a2,a2,W + + callr make_posts + + ;and some people + move @robo_wave,a0 + move a0,a1 + move a0,a2 + addi #wave_moms,a0 + addi #wave_dads,a1 + addi #wave_kids,a2 + move *a0,a0,W + move *a1,a1,W + move *a2,a2,W + callr make_humans + + ;start the collision checker + CREATE COLL_PID,collisions + + ;create the both-start-btn watcher + clr a0 + move a0,@starts_down,W + move a0,@forward,W + move a0,@backward,W + CREATE MISC_PID,watch_both_starts + + .if WAVE_CONTROL + CREATE MISC_PID,wave_mover + .endif + + .if DEBUG + .if BOG_MONITOR + CREATE MISC_PID,bog_o_meter + .endif + .endif + + calla display_unblank + +#not_done + SLEEPK 1 + move @live_badguys,a14 + jrz #wave_done + + move @player_dead,a14 + jrnz #dead_hero + + move @starts_down,a14 + jrnz #wave_abort + + move @forward,a14 + jrnz #wave_done + + move @backward,a14 + jrnz #back_up + jruc #not_done + + +#wave_done + movi RE_WAVEDONE,a14 + jruc #quit +#dead_hero + movi RE_DEADPLAYER,a14 + jruc #quit +#wave_abort + movi RE_ABORT,a14 + jruc #quit + +#back_up + movi RE_BACKUP,a14 + jruc #quit + +#quit + move a14,@robo_end,W + + ;put the wave back in a0 just like we found it + move @robo_wave,a0,W + sra 4,a0 + RETP + + +#border_colors + .if ROBO_DEBUG + .word 1 + .endif + .word 01,06,01,14,07,03,02,08 + .word 00,10,01,06,01,14,07,03 + +#wave_grunts + .if ROBO_DEBUG + .word 4 + .endif +; .word 15,17,22,34,20,30,00,30 +; .word 30,25,30,00,30,27,25,30 + + .word 15,17,22,34,20,32,00,35 + .word 60,25,35,00,35,27,25,35 + +#grunt_speeds + .if ROBO_DEBUG + .word 1000 + .endif + .word 20,15,15,15,15,15,15,15 + .word 15,15,14,14,14,14,14,13 + +#wave_posts + .if ROBO_DEBUG + .word 15 + .endif + .word 05,15,25,25,20,25,00,25 + .word 00,20,25,00,25,05,20,25 + +#post_types + .if ROBO_DEBUG + .word 0 + .endif + .word 0,1,3,8,4,2,0,7 + .word 0,5,0,1,3,8,4,2 + +#post_colors + .if ROBO_DEBUG + .word 0Fh + .endif + .word 15,14,11,13,14,15,14,11 + .word 14,10,15,14,11,13,14,15 + +#wave_hulks + .if ROBO_DEBUG + .word 0 + .endif + .word 00,05,06,07,00,07,12,08 + .word 04,00,08,13,08,20,02,03 + +#wave_sphereoids + .if ROBO_DEBUG + .word 0 + .endif + .word 00,01,03,04,01,04,00,05 + .word 05,01,05,00,05,02,01,05 + +#wave_quarks + .if ROBO_DEBUG + .word 0 + .endif + .word 00,00,00,00,00,00,10,00 + .word 00,00,00,12,00,00,00,00 + +#wave_moms + .if ROBO_DEBUG + .word 2 + .endif + .word 01,01,02,02,15,03,04,03 + .word 03,00,03,03,03,05,00,03 + +#wave_dads + .if ROBO_DEBUG + .word 2 + .endif + .word 01,01,02,02,00,03,04,03 + .word 03,22,03,03,03,05,00,03 + +#wave_kids + .if ROBO_DEBUG + .word 2 + .endif + .word 00,01,02,02,01,03,04,03 + .word 03,00,03,03,03,05,22,03 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* PLAYER SECTION +* + + ;reg use + ; a4 - current position in animation script + ; a5 - head of current animation script + ; a6 - tail of current animation script + ; a8 - player object + ; a9 - motion count accumulator + ; a10 - direction of motion + + SUBRP our_hero + + ;create the player object + movi [#start_x,0],a0 + movi [#start_y,0],a1 + movi man_d1,a2 + clr a3 + movi DMAWNZ,a4 + movi CLSPLYR|TYPPLYR,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;set the global pointer + move a8,@player_object,L + + ; initiailize direction of motion + clr a10 + +#not_done + PUSHP a4,a5,a6 + SLEEPK 1 + PULLP a4,a5,a6 + + ; move him first + callr #move_player + + ; change his animation frame, if neccesary + callr #change_frame + + jruc #not_done + +#player_dead + ;kill the gun process + move @gun_proc,a0,L + calla KILL + + movi BULLET_PID,a0 + calla KIL1C + + movi GRUNT_PID,a0 + calla KIL1C + + movi HULK_PID,a0 + calla KIL1C + + movi HUMAN_PID,a0 + calla KIL1C + + movi SPHEREOID_PID,a0 + calla KIL1C + + movi ENFORCER_PID,a0 + calla KIL1C + + movi SPARK_PID,a0 + calla KIL1C + + movi QUARK_PID,a0 + calla KIL1C + + movi TANK_PID,a0 + calla KIL1C + + movi SHELL_PID,a0 + calla KIL1C + + calla STOPOBJS + + ;switch frames + movi robo_dead,a0,L + calla civanic + + ;death sound + movi RS_DIE,a0 + calla robo_sound + + SLEEP 120 + movk 1,a14 + move a14,@player_dead,W + + DIE + +****************************************************************************** +* +* player move routine +* + + SUBRP #move_player + + clr a0 + calla get_stick_val_cur + btst JOYDN,a0 + jrnz #move_down + btst JOYUP,a0 + jrnz #move_up + btst JOYRGT,a0 + jrnz #move_right + btst JOYLFT,a0 + jrnz #move_left + jruc #no_move + +#move_down + btst JOYRGT,a0 + jrnz #move_downright + btst JOYLFT,a0 + jrnz #move_downleft + + ;increment Y + move *a8(OYPOS),a14,W + inc a14 + move a14,*a8(OYPOS),W + jruc #move_done + +#move_up + btst JOYRGT,a0 + jrnz #move_upright + btst JOYLFT,a0 + jrnz #move_upleft + + ;decrement Y + move *a8(OYPOS),a14,W + dec a14 + move a14,*a8(OYPOS),W + jruc #move_done + +#move_right + ;increment X + move *a8(OXPOS),a14,W + inc a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_left + ;decrement X + move *a8(OXPOS),a14,W + dec a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_upright + ; decrement Y and increment X + move *a8(OYPOS),a14,W + dec a14 + move a14,*a8(OYPOS),W + move *a8(OXPOS),a14,W + inc a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_upleft + ; decrement Y and decrement X + move *a8(OYPOS),a14,W + dec a14 + move a14,*a8(OYPOS),W + move *a8(OXPOS),a14,W + dec a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_downright + ; increment Y and increment X + move *a8(OYPOS),a14,W + inc a14 + move a14,*a8(OYPOS),W + move *a8(OXPOS),a14,W + inc a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_downleft + ; increment Y and decrement X + move *a8(OYPOS),a14,W + inc a14 + move a14,*a8(OYPOS),W + move *a8(OXPOS),a14,W + dec a14 + move a14,*a8(OXPOS),W + jruc #move_done + +#move_done + ; check bounds + move *a8(OXPOS),a14,W + cmpi #low_x,a14,W + jrgt #not_lowx + ; too low on x + inc a14 + move a14,*a8(OXPOS),W + +#not_lowx + cmpi #high_x,a14,W + jrle #not_highx + ; too high on x + dec a14 + move a14,*a8(OXPOS),W + +#not_highx + + move *a8(OYPOS),a14,W + cmpi #low_y,a14,W + jrgt #not_lowy + ; too low on y + inc a14 + move a14,*a8(OYPOS),W + +#not_lowy + cmpi #high_y,a14,W + jrle #not_highy + ; too high on y + dec a14 + move a14,*a8(OYPOS),W + +#not_highy +#no_move + +#done_moving + rets + +****************************************************************************** +* +* player animation routine +* + + + SUBRP #change_frame + ;reg use + ; a0 scratch + ; a1 sctatch + ; a3 new direction of motion + ; a10 old direction of motion - update + + clr a0 + clr a2 + calla get_stick_val_cur + move a0,a3 + + cmp a0,a10 + jreq #same_direction + jruc #new_direction + +#new_direction + ; start a new script. first use the joystick bits to compute an + ; offset into the script table. + X32 a0 ;multiply by 32 + addi #script_map,a0 ;add the address of the script table + move *a0,a0,L ;get the address of the script + + ; get the tail and head of the image list for this script + move *a0+,a6,L + move a0,a5 + + ;a5 now points to the first image in the script. change to it. + move *a5,a0,L + calla civanic + + ;set the new direction thingie and script pointer + move a3,a10 + move a5,a4 + + ;set the motion count + movi #motion_count,a9 + jruc #done_changing + +#same_direction + ;check the motion count + dec a9 + jrnz #done_changing + + ;reset the motion count + movi #motion_count,a9 + + ;increment the pointer, wrap if neccesary + addi 20h,a4 + cmp a4,a6 + jrne #no_wrap + move a5,a4 + +#no_wrap + ;a4 is the new image. change to it. + move *a4,a0,L + calla civanic + + jruc #done_changing + +#done_changing + rets + + +****************************************************************************** +* +* player collision routines +* + + SUBR player_die + PUSH a1,a7 + + ;we hit some kind of bad guy and are dead + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADPLAYER_PID,a1 + movi #player_dead,a7 + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* player configuration data +* + +;start position +#start_x equ 197 +#start_y equ 123 + +; motion boundaries +#low_x equ 53 +#high_x equ 347-7 +#low_y equ 45 +#high_y equ 231-12 + +;motion count - controls animation speed +#motion_count equ 2 ;there will be trouble if this is zero + +; walking animation scripts +#ani_holdstill + .long #ani_holdstillx + .long man_d1 +#ani_holdstillx + +#ani_walkup + .long #ani_walkupx + .long man_u1 + .long man_u2 + .long man_u1 + .long man_u3 +#ani_walkupx + +#ani_walkdown + .long #ani_walkdownx + .long man_d1 + .long man_d2 + .long man_d1 + .long man_d3 +#ani_walkdownx + +#ani_walkright + .long #ani_walkrightx + .long man_r1 + .long man_r2 + .long man_r1 + .long man_r3 +#ani_walkrightx + +#ani_walkleft + .long #ani_walkleftx + .long man_l1 + .long man_l2 + .long man_l1 + .long man_l3 +#ani_walkleftx + +#ani_bad + .long #ani_badx + .long robo_bad +#ani_badx + +; direction - script mappings: use AND combo of joy bits as index +#script_map + .long #ani_holdstill + .long #ani_walkup + .long #ani_walkdown + .long #ani_bad + .long #ani_walkleft + .long #ani_walkleft + .long #ani_walkleft + .long #ani_bad + .long #ani_walkright + .long #ani_walkright + .long #ani_walkright + .long #ani_bad + .long #ani_bad + .long #ani_bad + .long #ani_bad + .long #ani_bad +#script_mapx + + +#***************************************************************************** +* +* player gun process +* + + ;reg use + ;a9 time till next shot is allowed + + SUBRP player_gun + + clr a9 + jruc #sleep + +#check_shot + movk 1,a0 + calla get_stick_val_cur + jrz #sleep ;no shot + + ;fire in the indicated direction + move a0,a10 + CREATE BULLET_PID,bullet + movi #rate_of_fire,a9 + + ;shoot sound + movi RS_SHOOT,a0 + callr robo_sound + + jruc #sleep + +#too_soon + dec a9 + jruc #sleep + +#sleep + SLEEPK 1 + move a9,a9 + jrnz #too_soon + jruc #check_shot + +#done + DIE + +#rate_of_fire equ 6 ;min ticks between shots + + +#***************************************************************************** +* +* player bullet process +* + + ;reg use + ; a4 velocity accumulator (used to pick the correct bullet) + ; a5 vert indicator + ; a8 bullet object + ;a10 (in) stick bits + + SUBRP bullet + + ;create a bullet object + movi [500,0],a0 + clr a1 + movi bullet_hrz,a2 + clr a3 + movi DMAWNZ,a4 + movi CLSPLYR|TYPBULLET,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;set the speed and start position + move @player_object,a9,L + clr a4 + clr a5 + move *a9(OXPOS),a0,W + addk #bstart_xoff,a0 + move a0,*a8(OXPOS),W + move *a9(OYPOS),a0,W + addk #bstart_yoff,a0 + move a0,*a8(OYPOS),W + + btst JOYRGT,a10 + jrz #not_right + move *a8(OXPOS),a14,W ;pos + addi #bstart_radj,a14 + move a14,*a8(OXPOS),W + movi #bullet_speed,a0 ;speed + move a0,*a8(OXVEL),L + inc a4 + +#not_right + + btst JOYLFT,a10 + jrz #not_left + move *a8(OXPOS),a14,W ;pos + addi #bstart_ladj,a14 + move a14,*a8(OXPOS),W + movi -#bullet_speed,a0 ;speed + move a0,*a8(OXVEL),L + dec a4 + +#not_left + + btst JOYUP,a10 + jrz #not_up + move *a8(OYPOS),a14,W ;pos + addi #bstart_uadj,a14 + move a14,*a8(OYPOS),W + movi -#bullet_speed,a0 ;speed + move a0,*a8(OYVEL),L + dec a4 + inc a5 + +#not_up + + btst JOYDN,a10 + jrz #not_down + move *a8(OYPOS),a14,W ;pos + addi #bstart_dadj,a14 + move a14,*a8(OYPOS),W + movi #bullet_speed,a0 ;speed + move a0,*a8(OYVEL),L + inc a4 + inc a5 + +#not_down + + ;set the image + movi bullet_hrz,a0 + move a5,a5 + jrz #horiz + movi bullet_vrt,a0 +#horiz + + ;vert/horz is set. check for diagonal instead + cmpi 1,a4 + jreq #image_set + cmpi -1,a4 + jreq #image_set + + ;it's a diagonal. if a4 is 0, use frontslash + move a4,a4 + jrz #front_slash + movi bullet_bck,a0 + jruc #image_set + +#front_slash + movi bullet_fnt,a0 + +#image_set + calla civanic + +#loop + callr bounds_check + move a0,a0 + jrnz #hit_wall + SLEEPK 1 + jruc #loop + +#hit_wall + ;zoinks! We've hit a wall. back up to be flush against it. + ; a2 holds the number of pixels we have to back up. + + ;well, we can overlap on the wall a LITTLE. say, 2 pixels. + subk 2,a2 + + move *a8(OXVEL),a0,L + jrz #y_adjust + jrn #neg_xvel + move *a8(OXPOS),a0,W + sub a2,a0 + move a0,*a8(OXPOS),W + jruc #y_adjust +#neg_xvel + move *a8(OXPOS),a0,W + add a2,a0 + move a0,*a8(OXPOS),W + +#y_adjust + move *a8(OYVEL),a0,L + jrz #kill_bullet + jrn #neg_yvel + move *a8(OYPOS),a0,W + sub a2,a0 + move a0,*a8(OYPOS),W + jruc #kill_bullet +#neg_yvel + move *a8(OYPOS),a0,W + add a2,a0 + move a0,*a8(OYPOS),W + +#kill_bullet + SLEEPK 1 + calla DELOBJA8 + DIE + + +****************************************************************************** +* +* player bullet collision routines +* + + SUBR bullet_die + PUSH a1,a7,a9,a10,a11 + + ;we hit some kind of bad guy and are stopped. + movi CLSDEAD,a14 + move a14,*A8(OID) + move *a8(OPLINK),a0,L + movi DEADBULLET_PID,a1 + movi #kill_bullet,a7 + calla XFERPROC + + PULL a1,a7,a9,a10,a11 + rets + + +#bullet_speed equ 00080000h ;pixels per frame + +#low_x equ 53 +#high_x equ 346 +#low_y equ 45 +#high_y equ 230 + +;hero anim point is top left. bullet anim point is center. use these to +; adjust the starting position of the bullet. +; No. The bullet anim points are gone now. Unk. +#bstart_xoff equ 3 +#bstart_yoff equ 5 + +#bstart_radj equ 7 +#bstart_ladj equ -13 +#bstart_uadj equ -14 +#bstart_dadj equ 8 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* GRUNT SECTION +* + + ;reg use + ; a0 (in) # of grunts + ; a1 scratch + ; a2 (in) initial speed + + SUBRP make_grunts + + move a0,a0 + jrz #done + +#another_grunt + PUSHP a0 + +#get_pos + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a0,a9 + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a10 + + addi #min_x,a9 + addi #min_y,a10 + + cmpi #mid_x1,a9 + jrle #place_grunt + cmpi #mid_x2,a9 + jrge #place_grunt + cmpi #mid_y1,a10 + jrle #place_grunt + cmpi #mid_y2,a10 + jrge #place_grunt + jruc #get_pos + +#place_grunt + ;assign a random starting position + move a2,a11 + CREATE GRUNT_PID,grunt + PULLP a0 + dsj a0,#another_grunt + +#done + rets + + +#min_x equ 53 ;grunt start outer boundaries +#max_x equ 347-9 +#min_y equ 45 +#max_y equ 231-13 + +#mid_x1 equ 200-60 ;grunt start inner boundaries +#mid_x2 equ 200+60 +#mid_y1 equ 138-60 +#mid_y2 equ 138+60 + + +#***************************************************************************** +* +* grunt process +* + + STRUCTPD + WORD #ACCEL_TIMER ;UHW accelerator count + LONG #DEATH_SEQUENCE ;UHL anim to use when dying + ; (set by coll routines) + + ;reg use + ; a8 object handle + ; a9 (in) starting x + ; a9 (use) ticks between moves + ;a10 (in) starting y + ;a10 (use) ticks until next move + ;a11 (in) initial speed + ;a11 (use) frame count + + SUBRP grunt + + ;increment the badguy count + move @live_badguys,a14,W + inc a14 + move a14,@live_badguys,W + + ;create a grunt object + move a9,a0 + sla 16,a0 + move a10,a1 + sla 16,a1 + movi grunt_1,a2 + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPGRUNT,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;initialize move timer + move a11,a9 + + ;initialize time till next move + move a9,a0 + calla RNDRNG0 + add a11,a0 + move a0,a10 + + ;initialize accel counter + movi #acceleration,a14 + move a14,*a13(#ACCEL_TIMER),W + + ;initialize frame counter + clr a11 + +#loop + move *a13(#ACCEL_TIMER),a14,W + dec a14 + jrnz #no_accel + + movi #acceleration,a14 + cmpi #top_speed,a9 + jreq #no_accel + dec a9 + +#no_accel + move a14,*a13(#ACCEL_TIMER),W + SLEEPK 1 + + dsj a10,#loop + callr #move_grunt + move a9,a10 + jruc #loop + +#die + ;we've croaked + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + + ;set up the animation + move *a13(#DEATH_SEQUENCE),a9,L + move *a8(OCTRL),a0 + +#dieloop + move *a9+,a0,L + jrz #dead_n_buried + calla civanic + sleepk #death_speed + jruc #dieloop + +#dead_n_buried + calla DELOBJA8 + + DIE + +****************************************************************************** +* +* grunt move routine +* + + SUBRP #move_grunt + move @player_object,a14,L + + ;move in X + move *a14(OXPOS),a0,W + move *a8(OXPOS),a1,W + sub a1,a0 + jrz #done_movex + jrn #move_left + jruc #move_right + +#move_left + move *a8(OXPOS),a1,W + addi -#xmotion_inc,a1 + move a1,*a8(OXPOS),W + jruc #done_movex + +#move_right + move *a8(OXPOS),a1,W + addi #xmotion_inc,a1 + move a1,*a8(OXPOS),W + jruc #done_movex + +#done_movex + + move *a14(OYPOS),a0,W + move *a8(OYPOS),a1,W + sub a1,a0 + jrz #done_movey + jrn #move_up + jruc #move_down + +#move_up + move *a8(OYPOS),a1,W + addi -#ymotion_inc,a1 + move a1,*a8(OYPOS),W + jruc #done_movey + +#move_down + move *a8(OYPOS),a1,W + addi #ymotion_inc,a1 + move a1,*a8(OYPOS),W + jruc #done_movey + +#done_movey + + ;step through the animation + inc a11 + cmpi 4,a11 + jrne #no_wrap + clr a11 + +#no_wrap + move a11,a14 + X32 a14 + addi #walk_script,a14 + move *a14,a0,L + calla civanic + + ;sound + movi RS_GRUNT,a0 + callr robo_sound + rets + + +****************************************************************************** +* +* grunt collision routines +* + + SUBR grunt_shot + ;hit by player gunfire + PUSH a1,a7 + + ;jeepers. we're dead. + movi CLSDEAD,a14 + move a14,*a8(OID),W + + move *a0(OXVEL),a14,L + jrz #vert_bullet + move *a0(OYVEL),a1,L + jrz #horz_bullet + + add a1,a14 + jrz #diag_13 + jruc #diag_24 + +#horz_bullet + movi #die_vert,a14 + jruc #death_set +#vert_bullet + movi #die_horz,a14 + jruc #death_set +#diag_13 + movi #die_diag24,a14 + jruc #death_set +#diag_24 + movi #die_diag13,a14 + jruc #death_set + +#death_set + + move *a8(OPLINK),a0,L + move a14,*a0(#DEATH_SEQUENCE),L + movi DEADGRUNT_PID,a1 + movi #die,a7 + + move *a0(PA9),a9,L + move *a0(PA10),a10,L + calla XFERPROC + + movi #grunt_points,a0 + callr score_points + + ;die sound + movi RS_HIT,a0 + calla robo_sound + + PULL a1,a7 + rets + + + SUBR grunt_die + ;hit a mine or something + + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi #die_vert,a14 + move a14,*a0(#DEATH_SEQUENCE),L + movi DEADGRUNT_PID,a1 + movi #die,a7 + move *a0(PA9),a9,L + move *a0(PA10),a10,L + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* grunt configuration data +* + + +#walk_script + .long grunt_1 + .long grunt_2 + .long grunt_1 + .long grunt_3 +#walk_scriptx + +#die_vert + .long grunt_xv1 + .long grunt_xv2 + .long grunt_xv3 + .long grunt_xv4 + .long 0 +#die_vertx + +#die_horz + .long grunt_xh1 + .long grunt_xh2 + .long grunt_xh3 + .long grunt_xh4 + .long 0 +#die_horzx + +#die_diag13 + .long grunt_xdf1 + .long grunt_xdf2 + .long grunt_xdf3 + .long grunt_xdf4 + .long 0 +#die_diag13x + +#die_diag24 + .long grunt_xdb1 + .long grunt_xdb2 + .long grunt_xdb3 + .long grunt_xdb4 + .long 0 +#die_diag24x + +#death_speed equ 3 ;death seq anim speed + +#acceleration equ 100 ;decrement motion clock every X cycles +#top_speed equ 3 ;as fast as they get +#xmotion_inc equ 0004h +#ymotion_inc equ 0004h + +#grunt_points equ 100 ;points for killing a grunt + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* POST SECTION +* + ;reg use + ; a0 - (in) # of posts to create + ; a1 - (in) type (0-8) + ; a2 - (in) color (0-F) + + SUBRP make_posts + + move a0,a9 ;move the inputs to safer spots + jrz #done + + move a1,a10 ;type + + move a2,a11 ;color + sla 8,a11 + or a2,a11 + +#another_post +#get_pos + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a2 ;hide a0 + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a2,a1 ;put it back + + addi #min_x,a0 + addi #min_y,a1 + + cmpi #mid_x1,a0 + jrle #place_post + cmpi #mid_x2,a0 + jrge #place_post + cmpi #mid_y1,a1 + jrle #place_post + cmpi #mid_y2,a1 + jrge #place_post + jruc #get_pos + +#place_post + sla 16,a0 ;X pos + sla 16,a1 ;Y pos + + ;create the post object + move a10,a14 + X32 a14 + addi #post_types,a14 + move *a14,a14,L + move *a14,a2,L ;DON'T advance + + clr a3 + movi DMACNZ,a4 + movi CLSNEUT|TYPPOST,a5 + clr a6 + clr a7 + calla BEGINOBJW + + move a10,*a8(OMISC),W ;stuff the type in the object + + move a11,*a8(OCONST),W + + movi robo_p,a0 + calla pal_getf + move a0,*a8(OPAL),W + + dsj a9,#another_post + +#done + rets + + +#min_x equ 53 ;post start outer boundaries +#max_x equ 347-17 +#min_y equ 45 +#max_y equ 231-10 + +#mid_x1 equ 200-50 ;post start inner boundaries +#mid_x2 equ 200+50 +#mid_y1 equ 138-50 +#mid_y2 equ 138+50 + + +****************************************************************************** +* +* post collision routines +* + + SUBR post_die + + movi CLSDEAD,a14 + move a14,*a8(OID),W + CREATE DEADPOST_PID,kill_post + + rets + + + ;reg use + ; a8 - * image + ; a9 - anim pointer + + SUBR kill_post + + move *a8(OMISC),a0,W + X32 a0 + addi #post_types,a0 + move *a0,a9,L + move *a8(OCTRL),a14,W + xori DMACNZ,a14 + ori DMAWNZ,a14 + move a14,*a8(OCTRL),W +#kploop + move *a9+,a0,L + jrz #kpdone + calla civanic + SLEEPK #die_speed + jruc #kploop + +#kpdone + calla DELOBJA8 + DIE + + +#die_speed equ 3 + +#post_types + .long #star ;0 + .long #crystal ;1 + .long #diamond ;2 + .long #square ;3 + .long #rectangle ;4 + .long #R2084 ;5 + .long #pcube ;6 + .long #spiral ;7 + .long #triangle ;8 + .long 0 +#post_typesx + +#star + .long star_1,star_2,star_3,0 + +#crystal + .long crystal_1,crystal_2,crystal_3,0 + +#diamond + .long diamond_1,diamond_2,diamond_3,0 + +#square + .long square_1,square_2,square_3,0 + +#rectangle + .long rectangle_1,rectangle_2,rectangle_3,0 + +#R2084 + .long R2084_1,R2084_2,R2084_3,0 + +#pcube + .long pcube_1,pcube_2,pcube_3,0 + +#spiral + .long spiral_1,spiral_2,spiral_3,0 + +#triangle + .long triangle_1,triangle_2,triangle_3,0 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* HUMAN SECTION +* + + .bss humans_saved, 16 + + ;reg use + ; a0 # of moms + ; a1 # of dads + ; a2 # of kids + + SUBRP make_humans + + ;initialize the savecount + clr a14 + move a14,@humans_saved,W + + ;first make the moms + move a0,a0 + jrz #skip_moms +#mom_loop + PUSHP a0,a1,a2 + callr #rand_position + movi ROBJ_MOM,a9 + CREATE HUMAN_PID,human + PULLP a0,a1,a2 + dsj a0,#mom_loop + +#skip_moms + + ;dads + move a1,a1 + jrz #skip_dads +#dad_loop + PUSHP a1,a2 + callr #rand_position + movi ROBJ_DAD,a9 + CREATE HUMAN_PID,human + PULLP a1,a2 + dsj a1,#dad_loop + +#skip_dads + + ;kids + move a2,a2 + jrz #skip_kids +#kid_loop + PUSHP a2 + callr #rand_position + movi ROBJ_KID,a9 + CREATE HUMAN_PID,human + PULLP a2 + dsj a2,#kid_loop + +#skip_kids + rets + + + ;reg use + ; no input + ;a10 - (ret) an X val + ;a11 - (ret) a Y val + + SUBRP #rand_position + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a0,a10 + addi #min_x,a10 + + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a11 + addi #min_y,a11 + + rets + + +****************************************************************************** +* +* human process +* + STRUCTPD + LONG #HITPOST ;UHL post we've hit + + ;reg use + ; a8 - hObject + ; a9 - (in) OID + ; a9 - (use) image table address (#mom_table, #dad_table...) + ;a10 - (in) x + ;a10 - (use) direction of motion (1-8) + ;a11 - (in) y + ;a11 - (use) frame index (0-3) + + + SUBRP human + + cmpi ROBJ_MOM,a9 + jreq #init_mom + cmpi ROBJ_DAD,a9 + jreq #init_dad + cmpi ROBJ_KID,a9 + jreq #init_kid + + LOCKUP ;bad objid + +#init_mom + movi #mom_table,a9 + jruc #make_obj + +#init_dad + movi #dad_table,a9 + jruc #make_obj + +#init_kid + movi #kid_table,a9 + jruc #make_obj + +#make_obj + ;cweate a widdle people object + move a10,a0 + sla 16,a0 + move a11,a1 + sla 16,a1 + move *a9(#walk_down),a2,L + clr a3 + movi DMAWNZ,a4 + movi CLSNEUT|TYPHUMAN,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;choose a direction of motion + movi 7,a0 + calla RNDRNG0 + inc a0 + move a0,a10 + + ;set the frame index + movi 3,a11 + callr #advance_frame + +#move_loop + SLEEPK #sleep_time + callr #rand_dirchange + callr #move_onestep + move a0,a0 + jrnz #hit_wall + callr #advance_frame + jruc #move_loop + +#hit_wall + ;sleep first because: If you move and bump into both a wall and a + ; post at the same time (could happen), and then you immediately + ; reverse direction, you'll then get flipped AGAIN when you hit + ; the post and get forwarded right through the wall. yuck. so + ; instead when you hit a wall, wait a frame and let the post + ; collisions sort themselves out, THEN change direction. + SLEEPK 1 + callr #reverse_direction + callr #advance_frame + jruc #move_loop + +#hit_post + callr post_adjust + callr #advance_frame + jruc #move_loop + +#saved + ;sound + movi RS_RESCUE,a0 + callr robo_sound + + ;increment the save count + move @humans_saved,a14,W + inc a14 + move a14,@humans_saved,W + + cmpi 5,a14 + jrle #no_cap + movi 5,a14 +#no_cap + dec a14 + + PUSH a14 + sla 4,a14 + addi #score_table,a14 + move *a14,a0,W + callr score_points + PULL a14 + + X32 a14 + addi #saved_table,a14 + move *a14,a0,L + calla civanic + + SLEEP 120 + calla DELOBJA8 + jruc #done + +#killed + movi skull,a0 + calla civanic + + SLEEP 120 + calla DELOBJA8 +; jruc #done ;fall through + +#done + DIE + + +****************************************************************************** +* Human has bounced into or started inside a post. Make it better. +* Do this by reversing the direction of the human and moving it forward +* in the new direction until it's clear of the post. +* + + ;reg use + ; a0 - X overlap + ; a1 - Y overlap + + SUBRP post_adjust + PUSH a0,a1,a2,a3,a7 + + move *a13(#HITPOST),a7,L + + callr #reverse_direction + + ;calculate degree of X and Y overlap + move a10,a2 + X32 a2 + addi #walk_increments,a2 + move *a2+,a3,W ;y vel + jrn #yvel_neg + jrz #yvel_zero + +#yvel_pos + move *a7(OYPOS),a1 + move *a7(OSIZEY),a14 + add a14,a1 + move *a8(OYPOS),a14 + sub a14,a1 + jruc #do_xvel +#yvel_zero + movi 100h,a1 + jruc #do_xvel +#yvel_neg + move *a8(OYPOS),a1 + move *a8(OSIZEY),a14 + add a14,a1 + move *a7(OYPOS),a14 + sub a14,a1 +; jruc #do_xvel + +#do_xvel + move *a2,a3,W ;x vel + jrn #xvel_neg + jrz #xvel_zero + +#xvel_pos + move *a7(OXPOS),a0 + move *a7(OSIZEX),a14 + add a14,a0 + move *a8(OXPOS),a14 + sub a14,a0 + jruc #ovlap_done +#xvel_zero + movi 100h,a0 + jruc #ovlap_done +#xvel_neg + move *a8(OXPOS),a0 + move *a8(OSIZEX),a14 + add a14,a0 + move *a7(OXPOS),a14 + sub a14,a0 +; jruc #ovlap_done + +#ovlap_done + ;a0 and a1 are the X and Y overlaps, respectively. We need only + ; worry about the smallest of the two and move that many steps. Note + ; that if velocity in a given direction is zero, the overlap is + ; set to some outrageously large value so that the other direction + ; is all that counts. + cmp a1,a0 + jrle #low_set + move a1,a0 +#low_set + ;a0 is now the smallest. + move a0,a1 + move a10,a2 + X32 a2 + addi #walk_increments,a2 + move *a2+,a3,W ;y vel + mpys a3,a1 + move *a2,a3,W ;x vel + mpys a0,a3 + move a3,a0 + + ;a0 and a1 now hold X and Y adjustments, respectively. + move *a8(OXPOS),a14 + add a0,a14 + move a14,*a8(OXPOS) + move *a8(OYPOS),a14 + add a1,a14 + move a14,*a8(OYPOS) + + PULL a0,a1,a2,a3,a7 + rets + + +****************************************************************************** +* +* human movement/animation routine +* + + ;reg use + ; a0 - scratch + ; a0 (out) - walls hit (0-2) + ; a1 - scratch + ; a8 - (in) hObject + ; a9 - (in) image table address (#mom_table, #dad_table...) + ;a10 - (in) direction of motion (1-8) + ;a11 - (in) frame index (0-3) + + SUBRP #move_onestep + + ;move the object + move a10,a1 + X32 a1 + addi #walk_increments,a1 + move *a1+,a14,W + move *a8(OYPOS),a0,W + add a14,a0 + move a0,*a8(OYPOS),W + move *a1+,a14,W + move *a8(OXPOS),a0,W + add a14,a0 + move a0,*a8(OXPOS),W + + clr a1 + move *a8(OXPOS),a0,W + + cmpi #min_x,a0 + jrge #not_lowx + + ;low x + inc a1 + movi #min_x,a0 + move a0,*a8(OXPOS),W + +#not_lowx + cmpi #max_x,a0 + jrle #not_highx + + ;high x + inc a1 + movi #max_x,a0 + move a0,*a8(OXPOS),W + +#not_highx + + move *a8(OYPOS),a0,W + + cmpi #min_y,a0 + jrge #not_lowy + + ;low y + inc a1 + movi #min_y,a0 + move a0,*a8(OYPOS),W + +#not_lowy + cmpi #max_y,a0 + jrle #not_highy + + ;high y + inc a1 + movi #max_y,a0 + move a0,*a8(OYPOS),W + +#not_highy + move a1,a0 + rets + + +****************************************************************************** +* Changes direction one time in #dirchange_chance. +* + + SUBRP #rand_dirchange + + ;1 chance in #dirchange_chance of spontaneously switching direction + movi #dirchange_chance,a0 + calla RNDRNG0 + move a0,a0 + jrnz #dirchange_done + movi 7,a0 + calla RNDRNG0 + inc a0 + move a0,a10 + +#dirchange_done + rets + + +****************************************************************************** +* Reverses direction +* + + SUBRP #reverse_direction + + ;reverse direction of motion + subi 4,a10 + jrp #rd_done + addi 8,a10 +#rd_done + rets + +****************************************************************************** +* Advances the frame +* + + SUBRP #advance_frame + + ;advance the frame and set the new image + inc a11 + cmpi 4,a11 + jrne #no_wrap + ;wraparound. reset to start + clr a11 + +#no_wrap + ;calculate the next frame + move a9,a0 + move a10,a1 + sla 4,a1 ;mult by 10h + addi #motion_table,a1 + + ;a1 now points to one of the entries in #motion table + move *a1,a1,W + add a1,a0 + + ;a0 now points to an entry in #xxx_table + move a11,a1 + X32 a1 ;mult by 20h + add a1,a0 + move *a0,a0,L + + calla civanic + + rets + + +****************************************************************************** +* +* human collision routines +* + + SUBR human_saved + PUSH a1,a7 + + ;change the obj id + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi SAVEDHUMAN_PID,a1 + movi #saved,a7 + calla XFERPROC + + PULL a1,a7 + rets + + SUBR human_killed + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADHUMAN_PID,a1 + movi #killed,a7 + calla XFERPROC + + PULL a1,a7 + rets + + + SUBR human_hitpost + PUSH a1,a7 + + move a0,a1 + move *a8(OPLINK),a0,L + move a1,*a0(#HITPOST),L + move *a0(PA8),a8,L + move *a0(PA9),a9,L + move *a0(PA10),a10,L + move *a0(PA11),a11,L + movi HUMAN_PID,a1 + movi #hit_post,a7 + calla XFERPROC + + PULL a1,a7 + rets + +****************************************************************************** +* +* human configuration data +* + + +#min_x equ 53 ;human start/motion outer boundaries +#max_x equ 347-11 +#min_y equ 45 +#max_y equ 231-13 + +#sleep_time equ 7 +#x_step equ 1 +#y_step equ 1 + +#dirchange_chance equ 40 + +#walk_increments + .word 0,0 ;because direction is 1-8, not 0-7 + .word -#y_step,0 + .word -#y_step,#x_step + .word 0,#x_step + .word #y_step,#x_step + .word #y_step,0 + .word #y_step,-#x_step + .word 0,-#x_step + .word -#y_step,-#x_step +#walk_incrementsx + +#motion_table + .word 0 ;because direction is 1-8, not 0-7 + .word #walk_up + .word #walk_right + .word #walk_right + .word #walk_right + .word #walk_down + .word #walk_left + .word #walk_left + .word #walk_left +#motion_tablex + +;image table direction offsets +#walk_left equ 0000h +#walk_right equ #walk_left + (4 * 20h) +#walk_up equ #walk_right + (4 * 20h) +#walk_down equ #walk_up + (4 * 20h) + +#score_table + .word 1000,2000,3000,4000,5000 +#score_tablex + +;image tables +#mom_table + .long mom_l1 + .long mom_l2 + .long mom_l1 + .long mom_l3 + + .long mom_r1 + .long mom_r2 + .long mom_r1 + .long mom_r3 + + .long mom_u1 + .long mom_u2 + .long mom_u1 + .long mom_u3 + + .long mom_d1 + .long mom_d2 + .long mom_d1 + .long mom_d3 +#mom_tablex + +#dad_table + .long dad_l1 + .long dad_l2 + .long dad_l1 + .long dad_l3 + + .long dad_r1 + .long dad_r2 + .long dad_r1 + .long dad_r3 + + .long dad_u1 + .long dad_u2 + .long dad_u1 + .long dad_u3 + + .long dad_d1 + .long dad_d2 + .long dad_d1 + .long dad_d3 +#dad_tablex + +#kid_table + .long kid_l1 + .long kid_l2 + .long kid_l1 + .long kid_l3 + + .long kid_r1 + .long kid_r2 + .long kid_r1 + .long kid_r3 + + .long kid_u1 + .long kid_u2 + .long kid_u1 + .long kid_u3 + + .long kid_d1 + .long kid_d2 + .long kid_d1 + .long kid_d3 +#kid_tablex + +#saved_table + .long one_k + .long two_k + .long three_k + .long four_k + .long five_k +#saved_tablex + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* HULK SECTION +* + + ;reg use + ; a0 - (in) # of hulks + + SUBRP make_hulks + + move a0,a0 + jrz #done + +#another_hulk + PUSHP a0 + +#get_pos + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a0,a9 + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a10 + + addi #min_x,a9 + addi #min_y,a10 + + cmpi #mid_x1,a9 + jrle #place_hulk + cmpi #mid_x2,a9 + jrge #place_hulk + cmpi #mid_y1,a10 + jrle #place_hulk + cmpi #mid_y2,a10 + jrge #place_hulk + jruc #get_pos + +#place_hulk + ;assign a random starting position + CREATE HULK_PID,hulk + PULLP a0 + dsj a0,#another_hulk + +#done + rets + + +#min_x equ 53 ;hulk start outer boundaries +#max_x equ 347-13 +#min_y equ 45 +#max_y equ 231-16 + +#mid_x1 equ 200-50 ;hulk start inner boundaries +#mid_x2 equ 200+50 +#mid_y1 equ 138-50 +#mid_y2 equ 138+50 + + +#***************************************************************************** +* +* hulk process +* + + STRUCTPD + LONG #PD_SCRIPT ;UHL script head + WORD #PD_FRAME_NDX ;UHW frame index + + ;reg use + ; a8 - object handle + ; a9 - (in) starting x + ; a9 - (use) frame change count + ;a10 - (in) starting y + ;a11 - direction of motion (0-3) + + SUBRP hulk + + ;choose a direction of motion + movi 3,a0 + calla RNDRNG0 + move a0,a11 + + X32 a0 + addi #anim_list,a0 + move *a0,a6,L + move a6,*a13(#PD_SCRIPT),L + clr a7 + move a7,*a13(#PD_FRAME_NDX),W + + ;create the hulk object + move a9,a0 ;x pos + sla 16,a0 + move a10,a1 ;y pos + sla 16,a1 + + move a7,a14 ;img + X32 a14 + add a6,a14 + move *a14,a2,L + + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPHULK,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;set the move counter + movi #move_freq/2,a0 + calla RNDRNG0 + addi #move_freq,a0 + move a0,a9 + +#loop + SLEEPK 1 + dsj a9,#loop + callr #move_hulk + movi #move_freq,a9 + jruc #loop + + +#been_shot ;we immediately wake up here if we've been hit and moved + ; by a player bullet. + callr #do_bounds_check + jruc #loop + + DIE + + +****************************************************************************** +* +* hulk move routine +* + + ;reg use + ; a0 scratch + ; a1 scratch + ; a8 object handle + ;a11 direction of motion (0-3) + + SUBRP #move_hulk + ;move him + move a11,a14 + X32 a14 + addi #move_table,a14 + move *a14+,a0,W + move *a14,a1,W + move *a8(OXPOS),a14,W + add a0,a14 + move a14,*a8(OXPOS),W + move *a8(OYPOS),a14,W + add a1,a14 + move a14,*a8(OYPOS),W + + ; + ;note the fall-through here + ; + + ;bounds check + SUBRP #do_bounds_check + clr a1 + + clr a0 + move *a8(OXPOS),a0,W + cmpi #low_x,a0 + jrlt #too_left + cmpi #high_x,a0 + jrgt #too_right + jruc #vert_check + +#too_left + movi #low_x,a14 + move a14,*A8(OXPOS),W + ori M_HIT_LEFT,a1 + jruc #vert_check + +#too_right + movi #high_x,a14 + move a14,*A8(OXPOS),W + ori M_HIT_RIGHT,a1 +; jruc #vert_check + +#vert_check + clr a0 + move *a8(OYPOS),a0,W + cmpi #low_y,a0 + jrlt #too_high + cmpi #high_y,a0 + jrgt #too_low + jruc #done_boundcheck + +#too_high + movi #low_y,a14 + move a14,*A8(OYPOS),W + ori M_HIT_TOP,a1 + jruc #done_boundcheck + +#too_low + movi #high_y,a14 + move a14,*A8(OYPOS),W + ori M_HIT_BOTTOM,a1 + jruc #done_boundcheck + +#done_boundcheck + move a1,a1 + jrnz #change_direction + +#no_wallhit + movi #turn_prob,a0 + PUSH a1 + calla RNDRNG0 + PULL a1 + move a0,a0 + jrnz #done_moving + + ;spontaneous direction change. random for now +; jruc #change_direction ;fall through + +#change_direction + ;turn 90 degrees by randomly incrementing or decrementing direction + movi 1,a0 + PUSH a1 + calla RNDRNG0 + PULL a1 + move a0,a0 + jrz #inc_direction + dec a11 + jruc #dir_rangecheck + +#inc_direction + inc a11 + +#dir_rangecheck + cmpi -1,a11 + jrne #dir_notlow + movi 3,a11 + +#dir_notlow + cmpi 4,a11 + jrne #dir_changed + clr a11 + +#dir_changed + + ;verify that this is a good direction + cmpi 0,a11 + jreq #validate_up + cmpi 1,a11 + jreq #validate_right + cmpi 2,a11 + jreq #validate_down + cmpi 3,a11 + jreq #validate_left + +#validate_up + andi M_HIT_TOP,a1 + jrnz #change_direction + jruc #valid_dir +#validate_right + andi M_HIT_RIGHT,a1 + jrnz #change_direction + jruc #valid_dir +#validate_down + andi M_HIT_BOTTOM,a1 + jrnz #change_direction + jruc #valid_dir +#validate_left + andi M_HIT_LEFT,a1 + jrnz #change_direction + jruc #valid_dir + +#valid_dir + + move a11,a0 + X32 a0 + addi #anim_list,a0 + move *a0,a0,L + move a0,*a13(#PD_SCRIPT),L + +#done_moving + +#new_frame + move *a13(#PD_FRAME_NDX),a14,W + move *a13(#PD_SCRIPT),a6,L + inc a14 + cmpi 4,a14 + jrne #no_wrap + clr a14 +#no_wrap + move a14,*a13(#PD_FRAME_NDX),W + X32 a14 + add a6,a14 + move *a14,a0,L + calla civanic + + rets + + +****************************************************************************** +* +* hulk collision routines +* + + SUBR hulk_pushback + PUSH a1,a7,a9,a10,a11,a13 + + ;immediately move the hulk in the direction of the bullet's motion + move *a0(OXVEL),a14,L + sra 17,a14 + move *a8(OXPOS),a1,W + add a14,a1 + move a1,*a8(OXPOS),W + + move *a0(OYVEL),a14,L + sra 17,a14 + move *a8(OYPOS),a1,W + add a14,a1 + move a1,*a8(OYPOS),W + + ;wake up at the collision check + move *a8(OPLINK),a0,L + move *a0(PA9),a9,L + move *a0(PA10),a10,L + move *a0(PA11),a11,L + movi HULK_PID,a1 + movi #been_shot,a7 + calla XFERPROC + PULL a1,a7,a9,a10,a11,a13 + + rets + + +****************************************************************************** +* +* hulk configuration data +* + +#step_x equ 4 +#step_y equ 4 + +#low_x equ 53 ;hulk move boundaries +#high_x equ 347-13 +#low_y equ 45 +#high_y equ 231-16 + +#move_freq equ 8 ;frames between moves + +#turn_prob equ 30 ;chance per frame of spontaneously changing + ;direction +#move_table + .word 0,-#step_y + .word #step_x,0 + .word 0,#step_y + .word -#step_x,0 +#move_tablex + +#anim_list + .long #anim_vert + .long #anim_right + .long #anim_vert + .long #anim_left +#anim_listx + +#anim_vert + .long hulk_ud1 + .long hulk_ud2 + .long hulk_ud1 + .long hulk_ud3 +#anim_vertx + +#anim_left + .long hulk_l1 + .long hulk_l2 + .long hulk_l1 + .long hulk_l3 +#anim_leftx + +#anim_right + .long hulk_r1 + .long hulk_r2 + .long hulk_r1 + .long hulk_r3 +#anim_rightx + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* SPHEREOID SECTION +* + + ;reg use + ; a0 - (in) # of sphereoids + + SUBRP make_sphereoids + + move a0,a0 + jrz #done + +#another_sphereoid + PUSHP a0 + +#get_pos + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a0,a9 + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a10 + + addi #min_x,a9 + addi #min_y,a10 + + cmpi #mid_x1,a9 + jrle #place_sphereoid + cmpi #mid_x2,a9 + jrge #place_sphereoid + cmpi #mid_y1,a10 + jrle #place_sphereoid + cmpi #mid_y2,a10 + jrge #place_sphereoid + jruc #get_pos + +#place_sphereoid + ;assign a random starting position + CREATE SPHEREOID_PID,sphereoid + PULLP a0 + dsj a0,#another_sphereoid + +#done + rets + + +#mid_x1 equ 200-80 ;sphereoid start inner boundaries +#mid_x2 equ 200+80 +#mid_y1 equ 138-80 +#mid_y2 equ 138+80 + + +******************************************************************************* +* +* sphereoid process +* + + STRUCTPD + LONG #OXACC ;UHL x acceleration + LONG #OYACC ;UHL y acceleration + WORD #OCHILDREN ;UHW # of children left to spawn + WORD #OSTAGE ;UHW stage in life cycle + + ;reg use + ; a7 (use) event timer (related to #OSTAGE) + ; a8 (use) * object + ; a9 (in) x pos + ; a9 (use) anim counter + ;a10 (in) y pos + ;a10 (use) frame pointer + ;a11 (use) time until next vel change + + SUBRP sphereoid + + ;increment the badguy count + move @live_badguys,a14,W + inc a14 + move a14,@live_badguys,W + + ;create the sphereoid object + move a9,a0 ;x pos + sll 16,a0 + move a10,a1 ;y pos + sll 16,a1 + movi #standard_script,a10 + move *a10+,a2,L ;img + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPSPHEREOID,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;initialize anim counter + movi #anim_speed,a9 + + ;set initial velocities and accelerations + callr #set_va + + ;initialize life cycle and event timer + movi #STAGE_YOUTH,a14 + move a14,*a13(#OSTAGE),W + movi #youth_time/2,a0 + calla RNDRNG0 + addi #youth_time*3/4,a0 + move a0,a7 + +#loop + PUSHP a7 + SLEEPK 1 + PULLP a7 + dec a9 + jrnz #no_anim + + ;advance the frame + move *a10+,a0,L + jrnz #newframe + + ;reset script. depends on the stage + move *a13(#OSTAGE),a14,W + cmpi #STAGE_PARENT,a14 + jreq #set_parent_script + movi #standard_script,a10 + jruc #script_set +#set_parent_script + movi #parent_script,a10 + +#script_set + move *a10+,a0,L + +#newframe + calla civanic + + ;reset the counter + movi #anim_speed,a9 + +#no_anim + ;adjust velocities + callr #acc_add + + ;bounds check + callr #in_bounds + + ;adjust vel and acc if it's time + dec a11 + jrnz #no_va_change + callr #set_va + +#no_va_change + + ;do event? + dec a7 + jrnz #no_event + + ;event. depends on the stage in the life cycle + move *a13(#OSTAGE),a14,W + cmpi #STAGE_YOUTH,a14 + jreq #youth_event + cmpi #STAGE_PARENT,a14 + jreq #parent_event + ;default + jruc #dotage_event + +#youth_event + ;switch to middle age + movi #STAGE_PARENT,a14 + move a14,*a13(#OSTAGE),W + + ;set the number of kids to be spawned + movi #max_kids-#min_kids,a0 + calla RNDRNG0 + addi #min_kids,a0 + move a0,*a13(#OCHILDREN),W + + ;set the spawn timer + movi #spawn_time/2,a0 + calla RNDRNG0 + addi #spawn_time*3/4,a0 + move a0,a7 + jruc #no_event + +#parent_event + ;spawn a brat + PUSHP a10,a11 + move *a8(OXVAL),a10,L + move *a8(OYVAL),a11,L + CREATE ENFORCER_PID,enforcer + PULLP a10,a11 + + ;decrement the kid count + move *a13(#OCHILDREN),a14,W + dec a14 + jrz #barren + move a14,*a13(#OCHILDREN),W + movi #spawn_time/2,a0 + calla RNDRNG0 + addi #spawn_time*3/4,a0 + move a0,a7 + jruc #no_event + +#barren + ;that was the last kid. age + movi #STAGE_DOTAGE,a14 + move a14,*a13(#OSTAGE),W + movi #old_age_time,a7 + jruc #no_event + +#dotage_event + ;nothing fancy. just die. + jruc #die_peacefully + +#no_event + jruc #loop + +#been_shot + ;crud. we've been shot. score the points + movi #sphereoid_points,a0 + callr score_points + + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + + ;clear the velocity + clr a14 + move a14,*a8(OXVEL),L + move a14,*a8(OYVEL),L + + ;go through the death routine + movi #parent_script,a10,L + move *a8(OCTRL),a14,W + xori DMAWNZ,a14 + ori DMACNZ,a14 + move a14,*a8(OCTRL),W + movi #diecolor,a14 + move a14,*a8(OCONST),W + movi robo_p,a0 + calla pal_getf + move a0,*a8(OPAL),W + +#die_loop + SLEEPK #anim_speed + move *a10+,a0,L + jrz #score_msg + calla civanic + jruc #die_loop + +#score_msg + movi #score_image,a0 + move *a8(OCTRL),a1,W + xori DMACNZ,a1 + ori DMAWNZ,a1 + calla civani + movi #score_xoff,a14 + move a14,*a8(ODXOFF),W + movi #score_yoff,a14 + move a14,*a8(ODYOFF),W + SLEEP #score_time + jruc #expire + +#die_peacefully + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + +#expire + calla DELOBJA8 + + DIE + + + SUBRP #set_va + + movi #high_v*2,a0 + calla RNDRNG0 + subi #high_v,a0 + move a0,*a8(OXVEL),L + + movi #high_v*2,a0 + calla RNDRNG0 + subi #high_v,a0 + move a0,*a8(OYVEL),L + + movi #high_a*2,a0 + calla RNDRNG0 + subi #high_a,a0 + move a0,*a13(#OXACC),L + + movi #high_a*2,a0 + calla RNDRNG0 + subi #high_a,a0 + move a0,*a13(#OYACC),L + + movi #va_change_time,a0 + calla RNDRNG0 + inc a0 + move a0,a11 + + rets + + + SUBRP #acc_add + move *a13(#OXACC),a14,L + move *a8(OXVEL),a0,L + add a14,a0 + move a0,*a8(OXVEL),L + + move *a13(#OYACC),a14,L + move *a8(OYVEL),a0,L + add a14,a0 + move a0,*a8(OYVEL),L + + rets + + + SUBRP #in_bounds + + move *a8(OXPOS),a14,W + movi #min_x,a0 + cmp a0,a14 + jrlt #x_adjust + + movi #max_x,a0 + cmp a0,a14 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + clr a0 + move a0,*a8(OXVEL),L + move a0,*a13(#OXACC),L + +#y_check + move *a8(OYPOS),a14,W + movi #min_y,a0 + cmp a0,a14 + jrlt #y_adjust + + movi #max_y,a0 + cmp a0,a14 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + clr a0 + move a0,*a8(OYVEL),L + move a0,*a13(#OYACC),L + +#done_check + rets + + +****************************************************************************** +* +* sphereoid collision routines +* + + SUBR sphereoid_die + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADSPHERE_PID,a1 + movi #been_shot,a7 + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* sphereoid configuration data +* + +#anim_speed equ 3 + +#va_change_time equ 180 + +#sphereoid_points equ 1000 + +#youth_time equ 180 ;time before we have kids +#spawn_time equ 120 ;time between kids +#old_age_time equ 180 ;time between last kid and natural death + +#min_kids equ 3 ;lower limit on spawned enforcers +#max_kids equ 7 ;upper limit + +#high_v equ 00004000h +#high_a equ 00000C00h + +#min_x equ 53 ;sphereoid move bounds +#max_x equ 347-15 +#min_y equ 45 +#max_y equ 231-15 + +#score_image equ one_k ;image on being shot +#diecolor equ 0909h ;color on being shot +#score_time equ 60 ;time to display score value +#score_xoff equ -3 ;shotimage offset +#score_yoff equ -5 + +;life cycle stages +#STAGE_YOUTH equ 0000h +#STAGE_PARENT equ 0001h +#STAGE_DOTAGE equ 0002h + +#standard_script + .long circle_1 + .long circle_2 + .long circle_3 + .long circle_4 + .long circle_5 + .long 0 + +#parent_script + .long circle_1 + .long circle_2 + .long circle_3 + .long circle_4 + .long circle_5 + .long circle_6 + .long circle_7 + .long circle_8 + .long 0 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* ENFORCER SECTION +* + + .bss num_enforcers, 16 ;active enforcers + .bss picket_duty, 32 ;*img of picket enforcer + + ;reg use + ; a8 (use) *img + ; a9 (use) next move timer (move/fire phase) + ; a9 (use) frame pointer (death phase) + ; a10 (in) initial X + ; a10 (use) frame pointer (grow phase) + ; a11 (in) initial Y + ; a11 (use) next shot timer (move/fire phase) + + SUBRP enforcer + + ;increment the badguy count + move @live_badguys,a14,W + inc a14 + move a14,@live_badguys,W + move @num_enforcers,a14,W + inc a14 + move a14,@num_enforcers,W + + ;create the enforcer object + move a10,a0 + move a11,a1 + movi #grow_script,a10 + move *a10+,a2,L + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPENFORCER,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;grow phase + +#grow_loop + SLEEPK #grow_speed + move *a10+,a0,L + jrz #mf_phase + calla civanic + jruc #grow_loop + +#mf_phase + ;begin move/fire phase. set initial course + callr #new_course + movi #turn_time,a9 + movi #fire_time/2,a0 + calla RNDRNG0 + addi #fire_time*3/4,a0 + move a0,a11 + +#main_loop + SLEEPK 1 + dec a9 + jrnz #no_turn + + + ;picket phase + ;two cases: we're on picket duty, or we're not. + move @picket_duty,a14,L + cmp a14,a8 + jreq #on_picket + + ;we're not on picket duty + ;if we're the only enforcer, quit now. + move @num_enforcers,a14,W + cmpi 1,a14 + jreq #picket_done + + ;there are multiple enforcers. If there is no picket, see if we + ; take the job. If there is, quit. + move @picket_duty,a14,L + jrnz #picket_done + + ;there is no picket. + movi #picket_prob,a0 + calla RNDRNG0 + move a0,a0 + jrnz #picket_done + + ;we're going to take picket duty + move a8,@picket_duty,L + jruc #picket_done + +#on_picket + ;we are on picket duty + ;if we're the only enforcer, see if we leave picket mode. + move @num_enforcers,a14,W + cmpi 1,a14 + jrne #multiple_enforcers + + ;we're the only enforcer + movi #stand_down_prob,a0 + calla RNDRNG0 + move a0,a0 + jrnz #picket_done + + ;and we've decided to stand down. +; clr a0 ;unneccesary. it's already 0 from above. + move a0,@picket_duty,L + jruc #picket_done + +#multiple_enforcers + ;we may abandon our post + movi #abandon_post_prob,a0 + calla RNDRNG0 + move a0,a0 + jrnz #picket_done + + ;yep. we quit. +; clr a0 ;unneccesary. it's already 0 from above. + move a0,@picket_duty,L +; jruc #picket_done + +#picket_done + + ;change course + callr #new_course + movi #turn_time,a9 + +#no_turn + + dec a11 + jrnz #no_shot + + ;fire a spark + PUSHP a10 + move *a8(OXVAL),a10,L + move *a8(OYVAL),a11,L + CREATE SPARK_PID,spark + PULLP a10 + movi #fire_time/2,a0 + calla RNDRNG0 + addi #fire_time*3/4,a0 + move a0,a11 + +#no_shot + + ;bounds check + callr #in_bounds + + jruc #main_loop + +#die + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + move @num_enforcers,a14,W + dec a14 + move a14,@num_enforcers,W + + ;zero our velocity + clr a14 + move a14,*a8(OXVEL),L + move a14,*a8(OYVEL),L + + ;set up the animation +#dieloop + move *a9+,a0,L + jrz #dead_n_buried + calla civanic + sleepk #death_speed + jruc #dieloop + +#dead_n_buried + calla DELOBJA8 + + DIE + + + SUBRP #new_course + + ;two cases. picket or !picket + move @picket_duty,a14,L + cmp a8,a14 + jrne #nc_notpicket + +#nc_picket + ;we're on picket duty. if we're not against a wall, move toward the + ; nearest one. if we are against a wall but not in a corner, move + ; toward the nearest corner. if we're in a corner, sit tight. +; jruc #nc_done + +#nc_notpicket + ;velocity is the distance between enforcer and player / 64 / 2 + move @player_object,a0,L + move *a0(OXVAL),a14,L + move *a8(OXVAL),a1,L + sub a1,a14 + sra 7,a14 + + move a14,*a8(OXVEL),L + + move *a0(OYVAL),a14,L + move *a8(OYVAL),a1,L + sub a1,a14 + sra 7,a14 + move a14,*a8(OYVEL),L + +#nc_done + rets + + SUBRP #in_bounds + + move *a8(OXPOS),a14,W + movi #min_x,a0 + cmp a0,a14 + jrlt #x_adjust + + movi #max_x,a0 + cmp a0,a14 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + clr a0 + move a0,*a8(OXVEL),L + +#y_check + move *a8(OYPOS),a14,W + movi #min_y,a0 + cmp a0,a14 + jrlt #y_adjust + + movi #max_y,a0 + cmp a0,a14 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + clr a0 + move a0,*a8(OYVEL),L + +#done_check + rets + + +****************************************************************************** +* +* enforcer collision routines +* + + SUBR enforcer_die + ;hit by player gunfire + PUSH a1,a7 + + ;jeepers. we're dead. + movi CLSDEAD,a14 + move a14,*a8(OID),W + + move *a0(OXVEL),a14,L + jrz #vert_bullet + move *a0(OYVEL),a1,L + jrz #horz_bullet + + add a1,a14 + jrz #diag_13 + jruc #diag_24 + +#horz_bullet + movi #die_vert,a9 + jruc #death_set +#vert_bullet + movi #die_horz,a9 + jruc #death_set +#diag_13 + movi #die_diag24,a9 + jruc #death_set +#diag_24 + movi #die_diag13,a9 + jruc #death_set + +#death_set + move *a8(OPLINK),a0,L + movi DEADNFORCER_PID,a1 + movi #die,a7 + move *a0(PA10),a10,L + calla XFERPROC + + movi #enforcer_points,a0 + callr score_points + + PULL a1,a7 + rets + + +****************************************************************************** +* +* enforcer configuration data +* + +#enforcer_points equ 100 + +#picket_prob equ 4 ;one chance in X of becoming the picket if + ; there are multiple enforcers and none is + ; on the job already. + +#stand_down_prob equ 4 ;one chance in X of leaving picket duty if + ; we're the only enforcer left. + +#abandon_post_prob equ 8 ;one chance in X of leaving picket duty if + ; there are other enforcers around. + +#turn_time equ 150 +#fire_time equ 90 + +#grow_speed equ 6 + +#min_x equ 53 ;enforcer move bounds +#max_x equ 347-9 +#min_y equ 45 +#max_y equ 231-11 + +#grow_script + .long enf_g1 + .long enf_g2 + .long enf_g3 + .long enf_g4 + .long enf_g5 + .long enf_1 + .long 0 +#grow_scriptx + +#die_vert + .long enf_xv1 + .long enf_xv2 + .long enf_xv3 + .long enf_xv4 + .long enf_xv5 + .long 0 +#die_vertx + +#die_horz + .long enf_xh1 + .long enf_xh2 + .long enf_xh3 + .long enf_xh4 + .long 0 +#die_horzx + +#die_diag13 + .long enf_xf1 + .long enf_xf2 + .long enf_xf3 + .long enf_xf4 + .long 0 +#die_diag13x + +#die_diag24 + .long enf_xb1 + .long enf_xb2 + .long enf_xb3 + .long enf_xb4 + .long 0 +#die_diag24x + +#death_speed equ 3 ;death seq anim speed + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* SPARK SECTION +* + + ;reg use + ; a6 (use) x acc + ; a7 (use) y acc + ; a8 (use) *image + ; a9 (use) anim timer + ; a10 (in) initial X + ; a10 (use) anim pointer + ; a11 (in) initial Y + ; a11 (use) life timer + + SUBRP spark + + ;create a spark object + move a10,a0 + move a11,a1 + + movi #script,a10 + move *a10+,a2,L + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPSPARK,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;set the initial velocity. + move @player_object,a0,L + move *a0(OXVAL),a1,L + move *a8(OXVAL),a2,L + sub a2,a1 + sra 5,a1 + move a1,*a8(OXVEL),L + + move *a0(OYVAL),a1,L + move *a8(OYVAL),a2,L + sub a2,a1 + sra 5,a1 + move a1,*a8(OYVEL),L + + ;and then add a little 'spin' by giving them some acceleration + movi #high_acc*2,a0 + calla RNDRNG0 + subi #high_acc,a0 + move a0,a6 + movi #high_acc*2,a0 + calla RNDRNG0 + subi #high_acc,a0 + move a0,a7 + + movi #anim_time,a9 + movi #life_time,a11 + +#loop + PUSHP a6,a7 + SLEEPK 1 + PULLP a6,a7 + + ;bounds check + callr #in_bounds + + ;apply accelerations + move *a8(OXVEL),a14,L + add a6,a14 + move a14,*a8(OXVEL),L + + move *a8(OYVEL),a14,L + add a7,a14 + move a14,*a8(OYVEL),L + + dec a9 + jrnz #no_anim + + move *a10+,a0,L + jrnz #no_wrap + movi #script,a10 + move *a10+,a0,L +#no_wrap + calla civanic + movi #anim_time,a9 + +#no_anim + dec a11 + jrz #expire + jruc #loop + +#expire + calla DELOBJA8 + + DIE + + + SUBRP #in_bounds + + move *a8(OXPOS),a14,W + movi #min_x,a0 + cmp a0,a14 + jrlt #x_adjust + + movi #max_x,a0 + cmp a0,a14 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + clr a6 + move a6,*a8(OXVEL),L + +#y_check + move *a8(OYPOS),a14,W + movi #min_y,a0 + cmp a0,a14 + jrlt #y_adjust + + movi #max_y,a0 + cmp a0,a14 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + clr a7 + move a7,*a8(OYVEL),L + +#done_check + rets + + +****************************************************************************** +* +* spark collision routines +* + + SUBR spark_die + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADSPARK_PID,a1 + movi #expire,a7 + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* spark configuration data +* + +#life_time equ 180 ;how long they last +#anim_time equ 3 ;frame rate + +#high_acc equ 00000200h ;top acceleration + +#min_x equ 53 ;spark move bounds +#max_x equ 347-7 +#min_y equ 45 +#max_y equ 231-7 + +#script + .long spark_1 + .long spark_2 + .long spark_3 + .long spark_4 + .long 0 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* QUARK SECTION +* + + ;reg use + ; a0 - (in) # of quarks + + SUBRP make_quarks + + move a0,a0 + jrz #done + +#another_quark + PUSHP a0 + +#get_pos + ;assign a random starting position + movi #max_x-#min_x,a0 + calla RNDRNG0 + move a0,a9 + movi #max_y-#min_y,a0 + calla RNDRNG0 + move a0,a10 + + addi #min_x,a9 + addi #min_y,a10 + + cmpi #mid_x1,a9 + jrle #place_quark + cmpi #mid_x2,a9 + jrge #place_quark + cmpi #mid_y1,a10 + jrle #place_quark + cmpi #mid_y2,a10 + jrge #place_quark + jruc #get_pos + +#place_quark + CREATE QUARK_PID,quark + PULLP a0 + dsj a0,#another_quark + +#done + rets + + +#mid_x1 equ 200-60 ;quark start inner boundaries +#mid_x2 equ 200+60 +#mid_y1 equ 138-60 +#mid_y2 equ 138+60 + + +******************************************************************************* +* +* quark process +* + + STRUCTPD + WORD #OCHILDREN ;UHW # of children left to spawn + WORD #OSTAGE ;UHW stage in life cycle + + ;reg use + ; a7 (use) event timer (related to #OSTAGE) + ; a8 (use) * object + ; a9 (in) x pos + ; a9 (use) anim counter + ;a10 (in) y pos + ;a10 (use) frame pointer + ;a11 (use) time until next vel change + + SUBRP quark + + ;increment the badguy count + move @live_badguys,a14,W + inc a14 + move a14,@live_badguys,W + + ;create the quark object + move a9,a0 ;x pos + sll 16,a0 + move a10,a1 ;y pos + sll 16,a1 + movi #standard_script,a10 + move *a10+,a2,L ;img + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPQUARK,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;initialize anim counter + movi #anim_speed,a9 + + ;set initial velocities and accelerations + callr #set_v + + ;initialize life cycle and event timer + movi #STAGE_YOUTH,a14 + move a14,*a13(#OSTAGE),W + movi #youth_time,a7 + +#loop + PUSHP a7 + SLEEPK 1 + PULLP a7 + dec a9 + jrnz #no_anim + + ;advance the frame + move *a10+,a0,L + jrnz #newframe + + ;reset script. depends on the stage + move *a13(#OSTAGE),a14,W + cmpi #STAGE_PARENT,a14 + jreq #set_parent_script + movi #standard_script,a10 + jruc #script_set +#set_parent_script + movi #parent_script,a10 + +#script_set + move *a10+,a0,L + +#newframe + calla civanic + + ;reset the counter + movi #anim_speed,a9 + +#no_anim + ;bounds check + callr #in_bounds + + ;adjust vel if it's time + dec a11 + jrnz #no_v_change + callr #set_v + +#no_v_change + + ;do event? + dec a7 + jrnz #no_event + + ;event. depends on the stage in the life cycle + move *a13(#OSTAGE),a14 + cmpi #STAGE_YOUTH,a14 + jreq #youth_event + cmpi #STAGE_PARENT,a14 + jreq #parent_event + ;default + jruc #dotage_event + +#youth_event + ;switch to middle age + movi #STAGE_PARENT,a14 + move a14,*a13(#OSTAGE),W + + ;set the number of kids to be spawned + movi #max_kids-#min_kids,a0 + calla RNDRNG0 + addi #min_kids,a0 + move a0,*a13(#OCHILDREN),W + + ;set the spawn timer + movi #spawn_time,a7 + jruc #no_event + +#parent_event + ;spawn a brat + PUSHP a10,a11 + move *a8(OXVAL),a10,L + move *a8(OYVAL),a11,L + CREATE TANK_PID,tank + PULLP a10,a11 + + ;decrement the kid count + move *a13(#OCHILDREN),a14,W + dec a14 + jrz #barren + move a14,*a13(#OCHILDREN),W + movi #spawn_time,a7 + jruc #no_event + +#barren + ;that was the last kid. age + movi #STAGE_DOTAGE,a14 + move a14,*a13(#OSTAGE),W + movi #old_age_time,a7 + jruc #no_event + +#dotage_event + ;nothing fancy. just die. + jruc #die_peacefully + +#no_event + jruc #loop + + +#been_shot + ;crud. we've been shot + +#die_peacefully + + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + + calla DELOBJA8 + + DIE + + + SUBRP #set_v + + movi #high_v,a0 + calla RNDRNG0 + cmpi #high_v/2,a0 + jrgt #positive_x + + subi #high_v,a0 + +#positive_x + move a0,*a8(OXVEL),L + + movi #high_v,a0 + calla RNDRNG0 + cmpi #high_v/2,a0 + jrgt #positive_y + + subi #high_v,a0 + +#positive_y + move a0,*a8(OYVEL),L + + movi #v_change_time/2,a0 + calla RNDRNG0 + addi #v_change_time/2,a0 + move a0,a11 + + rets + + + SUBRP #in_bounds + + move *a8(OXPOS),a1,W + movi #min_x,a0 + move *a8(ODXOFF),a14,W + add a14,a0 + cmp a0,a1 + jrlt #x_adjust + + move *a8(OSIZEX),a0,W + neg a0 + move *a8(ODXOFF),a14,W + add a14,a0 + addi #max_x,a0 + cmp a0,a1 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + move *a8(OXVEL),a0,L + neg a0 + move a0,*a8(OXVEL),L + +#y_check + move *a8(OYPOS),a1,W + movi #min_y,a0 + move *a8(ODYOFF),a14,W + add a14,a0 + cmp a0,a1 + jrlt #y_adjust + + move *a8(OSIZEY),a0,W + neg a0 + move *a8(ODYOFF),a14,W + add a14,a0 + addi #max_y,a0 + cmp a0,a1 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + move *a8(OYVEL),a0,L + neg a0 + move a0,*a8(OYVEL),L + +#done_check + rets + + +****************************************************************************** +* +* quark collision routines +* + + SUBR quark_die + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADQUARK_PID,a1 + movi #been_shot,a7 + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* quark configuration data +* + +#anim_speed equ 3 + +#v_change_time equ 600 ;time between random course changes + +#youth_time equ 90 ;time before we have kids +#spawn_time equ 90 ;time between kids +#old_age_time equ 120 ;time between last kid and natural death + +#min_kids equ 3 ;lower limit on spawned tanks +#max_kids equ 7 ;upper limit + +#high_v equ 0001C000h + +#min_x equ 53 ;quark move bounds +#max_x equ 347-0 +#min_y equ 45 +#max_y equ 231-0 + +;life cycle stages +#STAGE_YOUTH equ 0000h +#STAGE_PARENT equ 0001h +#STAGE_DOTAGE equ 0002h + +#standard_script + .long quark_1 + .long quark_1 + .long quark_2 + .long quark_3 + .long quark_4 + .long 0 + +#parent_script + .long quark_1 + .long quark_2 + .long quark_3 + .long quark_4 + .long quark_5 + .long quark_6 + .long quark_7 + .long quark_8 + .long 0 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* TANK SECTION +* + + STRUCTPD + WORD #OSHOTS ;UHW shots left to be fired + + ;reg use + ; a7 (use) anim timer + ; a8 (use) *img + ; a9 (use) next move timer (move/fire phase) + ; a9 (use) frame pointer (death phase) + ; a10 (in) initial X + ; a10 (use) frame pointer (grow + move/fire phases) + ; a11 (in) initial Y + ; a11 (use) next shot timer (move/fire phase) + + SUBRP tank + + ;increment the badguy count + move @live_badguys,a14,W + inc a14 + move a14,@live_badguys,W + + ;create the tank object + move a10,a0 + move a11,a1 + movi #grow_script,a10 + move *a10+,a2,L + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPTANK,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;grow phase + +#grow_loop + SLEEPK #grow_speed + move *a10+,a0,L + jrz #mf_phase + calla civanic + jruc #grow_loop + +#mf_phase + ;begin move/fire phase. set initial course + callr #set_v + movi #anim_time,a7 + movi #right_script,a10 + movi #fire_time/2,a0 + calla RNDRNG0 + addi #fire_time*3/4,a0 + move a0,a11 + movi #num_shots,a14 + move a14,*a13(#OSHOTS),W + +#main_loop + PUSHP a7 + SLEEPK 1 + PULLP a7 + dec a9 + jrnz #no_turn + + ;change course + callr #set_v + +#no_turn + + dec a11 + jrnz #no_shot + + move *a13(#OSHOTS),a14,W + jrz #no_shot + + ;fire a shell + PUSHP a7,a10,a11 + move *a8(OXVAL),a10,L + move *a8(OYVAL),a11,L + create SHELL_PID,tank_shell + PULLP a7,a10,a11 + movi #fire_time/2,a0 + calla RNDRNG0 + addi #fire_time*3/4,a0 + move a0,a11 + +#no_shot + + ;bounds check + callr #in_bounds + + ;animate? + dec a7 + jrnz #no_anim + move *a10+,a0,L + jrnz #no_wrap + movi #right_script,a10 + move *a10+,a0,L + +#no_wrap + calla civanic + movi #anim_time,a7 + +#no_anim + jruc #main_loop + +#die + ;decrement the badguy count + move @live_badguys,a14,W + dec a14 + move a14,@live_badguys,W + + ;zero our velocity + clr a14 + move a14,*a8(OXVEL),L + move a14,*a8(OYVEL),L + + ;set up the animation +#dieloop + move *a9+,a0,L + jrz #dead_n_buried + calla civanic + sleepk #death_speed + jruc #dieloop + +#dead_n_buried + calla DELOBJA8 + + DIE + + + SUBRP #set_v + + movi #high_v,a0 + calla RNDRNG0 + cmpi #high_v/2,a0 + jrgt #positive_x + + subi #high_v,a0 + +#positive_x + move a0,*a8(OXVEL),L + + movi #high_v,a0 + calla RNDRNG0 + cmpi #high_v/2,a0 + jrgt #positive_y + + subi #high_v,a0 + +#positive_y + move a0,*a8(OYVEL),L + + movi #v_change_time/2,a0 + calla RNDRNG0 + addi #v_change_time/2,a0 + move a0,a9 + + rets + + + SUBRP #in_bounds + + move *a8(OXPOS),a14,W + movi #min_x,a0 + cmp a0,a14 + jrlt #x_adjust + + movi #max_x,a0 + cmp a0,a14 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + move *a8(OXVEL),a0,L + neg a0 + move a0,*a8(OXVEL),L + +#y_check + move *a8(OYPOS),a14,W + movi #min_y,a0 + cmp a0,a14 + jrlt #y_adjust + + movi #max_y,a0 + cmp a0,a14 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + move *a8(OYVEL),a0,L + neg a0 + move a0,*a8(OYVEL),L + +#done_check + rets + + +****************************************************************************** +* +* tank collision routines +* + + SUBR tank_die + ;hit by player gunfire + PUSH a1,a7 + + ;jeepers. we're dead. + movi CLSDEAD,a14 + move a14,*a8(OID),W + + move *a0(OXVEL),a14,L + jrz #vert_bullet + move *a0(OYVEL),a1,L + jrz #horz_bullet + + add a1,a14 + jrz #diag_13 + jruc #diag_24 + +#horz_bullet + movi #die_vert,a9 + jruc #death_set +#vert_bullet + movi #die_horz,a9 + jruc #death_set +#diag_13 + movi #die_diag24,a9 + jruc #death_set +#diag_24 + movi #die_diag13,a9 + jruc #death_set + +#death_set + move *a8(OPLINK),a0,L + movi DEADTANK_PID,a1 + movi #die,a7 + move *a0(PA10),a10,L + calla XFERPROC + + movi #tank_points,a0 + callr score_points + + PULL a1,a7 + rets + + +****************************************************************************** +* +* tank configuration data +* + +#tank_points equ 200 + +#num_shots equ 21 + +#v_change_time equ 250 +#fire_time equ 90 + +#high_v equ 00010000h + +#grow_speed equ 6 +#anim_time equ 2 + +#min_x equ 53 ;tank move bounds +#max_x equ 347-13 +#min_y equ 45 +#max_y equ 231-16 + +#grow_script + .long tank_g1 + .long tank_g2 + .long tank_g3 + .long tank_g4 + .long tank_1 + .long 0 + +#right_script + .long tank_1 + .long tank_2 + .long tank_3 + .long tank_4 + .long 0 + +#die_vert + .long enf_xv1 + .long enf_xv2 + .long enf_xv3 + .long enf_xv4 + .long enf_xv5 + .long 0 + +#die_horz + .long enf_xh1 + .long enf_xh2 + .long enf_xh3 + .long enf_xh4 + .long 0 + +#die_diag13 + .long enf_xf1 + .long enf_xf2 + .long enf_xf3 + .long enf_xf4 + .long 0 + +#die_diag24 + .long enf_xb1 + .long enf_xb2 + .long enf_xb3 + .long enf_xb4 + .long 0 + +#death_speed equ 3 ;death seq anim speed + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* SHELL SECTION +* + + ;reg use + ; a8 (use) *image + ; a10 (in) initial X + ; a11 (in) initial Y + ; a11 (use) life timer + + SUBRP tank_shell + + ;create a shell object + move a10,a0 + move a11,a1 + movi shell,a2 + clr a3 + movi DMAWNZ,a4 + movi CLSENMY|TYPSHELL,a5 + clr a6 + clr a7 + calla BEGINOBJW + + ;set the initial velocity. + move @player_object,a0,L + move *a0(OXVAL),a1,L + move *a8(OXVAL),a2,L + sub a2,a1 + sra 5,a1 + move a1,*a8(OXVEL),L + + move *a0(OYVAL),a1,L + move *a8(OYVAL),a2,L + sub a2,a1 + sra 5,a1 + move a1,*a8(OYVEL),L + + movi #life_time,a11 + +#loop + PUSHP a6,a7 + SLEEPK 1 + PULLP a6,a7 + + ;bounds check + callr #in_bounds + + dsj a11,#loop + +#expire + calla DELOBJA8 + + DIE + + + SUBRP #in_bounds + + move *a8(OXPOS),a14,W + movi #min_x,a0 + cmp a0,a14 + jrlt #x_adjust + + movi #max_x,a0 + cmp a0,a14 + jrgt #x_adjust + jruc #y_check + +#x_adjust + move a0,*a8(OXPOS),W + move *a8(OXVEL),a0,L + neg a0 + move a0,*a8(OXVEL),L + +#y_check + move *a8(OYPOS),a14 + movi #min_y,a0 + cmp a0,a14 + jrlt #y_adjust + + movi #max_y,a0 + cmp a0,a14 + jrgt #y_adjust + jruc #done_check + +#y_adjust + move a0,*a8(OYPOS),W + move *a8(OYVEL),a0,L + neg a0 + move a0,*a8(OYVEL),L + +#done_check + rets + + +****************************************************************************** +* +* shell collision routines +* + + SUBR shell_die + PUSH a1,a7 + + movi CLSDEAD,a14 + move a14,*a8(OID),W + move *a8(OPLINK),a0,L + movi DEADSHELL_PID,a1 + movi #expire,a7 + calla XFERPROC + + PULL a1,a7 + rets + + +****************************************************************************** +* +* shell configuration data +* + +#life_time equ 240 ;how long they last + +#min_x equ 53 ;shell move bounds +#max_x equ 347-7 +#min_y equ 45 +#max_y equ 231-7 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* color cycling processes +* + + SUBRP robo_pal_cycles + + ;laser flash cycle + movi [0Ah,1],a8 ;cycle color A + movi robo_p,a9 ;pal name + movi COLTAB_LFLASH,a10 ;use the LFLASH table + movk 1,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + ;rgb cycle + movi [0Bh,1],a8 ;cycle color B + movi robo_p,a9 ;pal name + movi COLTAB_RGB,a10 ;use the RGB table + movk 8,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + ;decay cycle + movi [0Ch,1],a8 ;cycle color C + movi robo_p,a9 ;pal name + movi COLTAB_DECAY,a10 ;use the DECAY table + movk 2,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + ;laser cycle + movi [0Dh,1],a8 ;cycle color D + movi robo_p,a9 ;pal name + movi COLTAB_LASER,a10 ;use the LASER table + movk 20,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + ;blue-purple-red cycle + movi [0Eh,1],a8 ;cycle color E + movi robo_p,a9 ;pal name + movi COLTAB_BLUPURRED,a10 ;use the BPR table + movk 1,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + ;red-gold cycle + movi [0Fh,1],a8 ;cycle color F + movi robo_p,a9 ;pal name + movi COLTAB_REDGOLD,a10 ;use the RED-GOLD table + movk 10,a11 ;cycle speed + CREATE CYCPID,CYCLE_TABLE + + rets + + +COLTAB_LFLASH + .WORD 0380H,1380H,2380H,3380H,4380H,5380H,6380H,7380H,7300H + .WORD 7280H,7200H,7180H,7080H,7008H,7008H,7010H,7010H,701CH + .WORD 701CH,601CH,501CH,409CH,309CH,209CH,219CH,029CH,039CH + .WORD 139CH,239CH,339CH,539CH,739CH,7390H,7380H,6380H,4380H + .word -1 + +; .word 7C00h,7FFFh,7FFFh,03E0h,7FFFh,7FFFh,001Fh,7FFFh,7FFFh + +COLTAB_RGB + .WORD 07C00H,001FH,77A0h,741Ah + .word -1 + +; .word 7C00h,03E0h,001Fh + +COLTAB_DECAY + .WORD 001CH,001CH,011CH,021CH,031CH,039CH,239CH,2390H,2388H + .WORD 2380H,4300H,5280H,7180H,6180H,7080H,7000H,6000H,5000H + .WORD 4000H,3000H,2000H,1000H + .word -1 + +; .word 7FFFh,6F7Bh,5EF7h,4E73h,3DEFh,2D6Bh,1CE7h,0C63h,0000h + +COLTAB_LASER + .word 7C1Fh,7FFFh,7F00h + .word -1 + +COLTAB_BLUPURRED + .WORD 001CH,101CH,201CH,301CH,401CH,501CH,601CH,701CH,7010H + .WORD 7010H,7008H,7008H,7000H,7000H,7008H,7008H,7010H,7010H + .WORD 701CH,701CH,601CH,501CH,401CH,301CH,201CH,101CH +; .word 001Fh,7C1Fh,7C00h + .word -1 + +COLTAB_REDGOLD + .word 7C00h,7F00h + .word -1 + + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* score stuff +* + + ;reg use + ; a11 score + + SUBRP score + + ;initialize score + move @robotron_score,a11,L + callr #print_score + +#loop + SLEEPK 1 + move @robotron_score,a14,L + cmp a11,a14 + jrne #score_change + jruc #loop + +#score_change + move a14,a11 + callr #zorch_score + callr #print_score + jruc #loop + + DIE + + + SUBRP #zorch_score + movi TYPTEXT|SUBSCOR,a0 + calla obj_del1c + + rets + + + SUBRP #print_score + + movi #score_setup,a2 + calla setup_message + movi TYPTEXT|SUBSCOR,a14 + move a14,@mess_objid + move @robotron_score,a0,L + movi #max_score,a1 + calla dec_to_asc + calla copy_string + calla print_string_R + + rets + + +#score_setup + JAM_STR robotron_ascii,3,1,#score_xpos,#score_ypos,robo_p,0 + .even + +#max_score .equ 9999999 ;that's all dec_to_asc can handle + +****************************************************************************** +* adds to score +* >a0 amount to add + + SUBRP score_points + + move @robotron_score,a14,L + add a0,a14 + move a14,@robotron_score,L + rets + + +#score_ypos .equ 36 +#score_xpos .equ 130 + +#***************************************************************************** +****************************************************************************** +****************************************************************************** +* +* miscellaneous functions / processes +* + +****************************************************************************** +* Draws the frame +* >a0=color value +* + + SUBRP draw_frame + + + move a0,a9 + sla 8,a9 + or a0,a9 + + movi robo_p,a0 + calla pal_getf + move a0,a10 + + movi #frame_data,a11 + +#loop + move *a11+,a0,L + jrz #done + move *a11+,a1,L + movi #frame_image,a2 + movi 100,a3 ;z pos + movi DMACAL,a4 ;DMA flags + movi CLSDEAD,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + move a8,a0 + calla fg2bg + + move *a11+,a14,W + move a14,*a8(OSIZEX),W + move *a11+,a14,W + move a14,*a8(OSIZEY),W + + move a9,*a8(OCONST),W + move a10,*a8(OPAL),W + + jruc #loop +#done + rets + + +#frame_image equ man_d1 + +#frame_data + .long [53,0],[43,0] ;position X,Y + .word 294,2 ;size X,Y + + .long [53,0],[231,0] ;position X,Y + .word 294,2 ;size X,Y + + .long [50,0],[43,0] ;position X,Y + .word 3,190 ;size X,Y + + .long [347,0],[43,0] ;position X,Y + .word 3,190 ;size X,Y + + .long 0 + +#frame_datax + + +#***************************************************************************** +* Draws the wave indicator +* + + SUBRP wave_count + + ;wave text + movi [#wave_x,0],a0 ;x pos + movi [#wave_y,0],a1 ;y pos + movi wave_text,a2 ;* image + clr a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + ;ones digit +; move @robo_wave,a2,W +; addi HEXTODEC+0010h,a2 ;extra 10 cuz we count from 0 +; move *a2,a2,W +; andi 00FFh,a2 + move @robo_wave,a0,W + sra 4,a0 + inc a0 + calla BINBCD + move a0,a2 + andi 0Fh,a2 + X32 a2 + addi #wave_font,a2 + + movi [#wave_onesx,0],a0 ;x pos + movi [#wave_y,0],a1 ;y pos + move *a2,a2,L ;* image + clr a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + ;tens digit + move @robo_wave,a0,W + sra 4,a0 + inc a0 + calla BINBCD + move a0,a2 + srl 4,a2 + andi 0Fh,a2 + jrz #done + X32 a2 + addi #wave_font,a2 + movi [#wave_tensx,0],a0 ;x pos + movi [#wave_y,0],a1 ;y pos + move *a2,a2,L ;* image + clr a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + +#done + rets + +#wave_y .equ 234 +#wave_x .equ 198 +#wave_tensx .equ 184 +#wave_onesx .equ 188 + +#wave_font + .long rsmall_0 + .long rsmall_1 + .long rsmall_2 + .long rsmall_3 + .long rsmall_4 + .long rsmall_5 + .long rsmall_6 + .long rsmall_7 + .long rsmall_8 + .long rsmall_9 +#wave_fontx + +#***************************************************************************** +* Check to see if an object is completely on the playfield +* a8=OBJ +* >a0=walls hit (bit 0=top, 1=right, 2=bottom, 3=left) +* >a2=degree of overlap (in pixels) +* Trashes scratch + + SUBRP bounds_check + PUSH a1,a3 + clr a0 + clr a2 + clr a3 + + ;check for hit top + move *a8(OYPOS),a1 + move *a8(ODYOFF),a14 + sub a14,a1 + cmpi #low_y,a1 + jrgt #not_high + movi #low_y,a2 + sub a1,a2 + ori M_HIT_TOP,a0 + jruc #not_low ;assume won't be both high and low + +#not_high + ;check for hit bottom + move *a8(ODYOFF),a14 ;subtract the offset AGAIN because + sub a14,a1 ; we assume the anim point is there + move *a8(OSIZEY),a14 ; to center the object. + add a14,a1 + cmpi #high_y,a1 + jrlt #not_low + move a1,a2 + subi #high_y,a2 + ori M_HIT_BOTTOM,a0 + +#not_low + ;check for hit left + move *a8(OXPOS),a1 + move *a8(ODXOFF),a14 + sub a14,a1 + cmpi #low_x,a1 + jrgt #not_left + movi #low_x,a3 + sub a1,a3 + ori M_HIT_LEFT,a0 + jruc #done ;assume won't be both right and left + +#not_left + move *a8(ODXOFF),a14 + sub a14,a1 + move *a8(OSIZEX),a14 + add a14,a1 + cmpi #high_x,a1 + jrlt #done + move a1,a3 + subi #high_x,a3 + ori M_HIT_RIGHT,a0 + +#done + ;a2 is y overlap, a3 is x overlap. a2 should be greatest of the two. + cmp a2,a3 + jrn #retval_set + move a3,a2 +#retval_set + PULL a1,a3 + rets + + +;boundaries +#low_x equ 53 +#high_x equ 346 +#low_y equ 45 +#high_y equ 230 + +;ret values +B_HIT_TOP equ 0 +B_HIT_BOTTOM equ 2 +B_HIT_LEFT equ 3 +B_HIT_RIGHT equ 1 + +M_HIT_TOP equ 0001h +M_HIT_BOTTOM equ 0004h +M_HIT_LEFT equ 0008h +M_HIT_RIGHT equ 0002h + + +#***************************************************************************** +* If ever both start buttons are down, this proc sets the robo_done flag +* and dies. +* + + SUBRP watch_both_starts + +#loop + SLEEPK 4 ;no need to check EVERY frame + clr a0 + calla get_start_cur + jrz #loop + movk 1,a0 + calla get_start_cur + jrz #loop + + ;both starts are down. + movk 1,a0 + move a0,@starts_down + + DIE + +#***************************************************************************** +* Watches for wave advance/back up key combo. +* + + SUBRP wave_mover + +#loop + SLEEPK 4 + calla get_all_buttons_cur + jrz #loop + + cmpi 1,a0 + jreq #back + cmpi 2,a0 + jreq #fwd + jruc #loop + +#back + move a0,@backward + jruc #done +#fwd + move a0,@forward + +#done + DIE + + + .if DEBUG + +#***************************************************************************** +* Makes bog meters +* + + SUBRP bog_o_meter + + movi robo_p,a0 + calla pal_getf + move a0,a9 + + ;create the background + movi [360,0],a0 + movi [192,0],a1 + movi man_d1,a2 + clr a3 + movi DMACAL|M_FLIPV,a4 + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJW + + move a9,*a8(OPAL) + movi 0707h,a14 + move a14,*a8(OCONST) + + movi 8,a0 + move a0,*a8(OSIZEX) + movi 128,a0 + move a0,*a8(OSIZEY) + move a8,a10 + + ;create the foreground + movi [360,0],a0 + movi [65,0],a1 + movi man_d1,a2 + movi 1,a3 + movi DMACAL,a4 + movi CLSDEAD,a5 + clr a6 + clr a7 + calla BEGINOBJW + + move a9,*a8(OPAL) + movi 0808h,a14 + move a14,*a8(OCONST) + + movi 8,a0 + move a0,*a8(OSIZEX) + + movi #scale,a9 + +#loop + SLEEPK 2 + move @CPULEFT,a1 + jrnz #nobog + + ;BOG!! + nop +#nobog + mpyu a9,a1 + srl 16,a1 + move a1,*a8(OSIZEY) + cmpi 10h,a1 + jrle #red + + movi 0707h,a0 + move a0,*a10(OCONST) + jruc #loop +#red + movi 0101h,a0 + move a0,*a10(OCONST) + jruc #loop + + DIE + +#scale equ 800000h/03DCh + + .endif + +#***************************************************************************** + +robotron_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,rfont_exc,0,0,0,0,0,0 ;$20 SP! " # $ % & ' + .long rfont_lparens,rfont_rparens,0,0,rfont_comma,0,rfont_period,rfont_fslash ;$28 ( ) * + , - . / + .long rfont_0,rfont_1,rfont_2,rfont_3,rfont_4,rfont_5,rfont_6,rfont_7 ;$30 0 1 2 3 4 5 6 7 + .long rfont_8,rfont_9,0,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,rfont_a,rfont_b,rfont_c,rfont_d,rfont_e,rfont_f,rfont_g ;$40 @ A B C D E F G + .long rfont_h,rfont_i,rfont_j,rfont_k,rfont_l,rfont_m,rfont_n,rfont_o ;$48 H I J K L M N O + .long rfont_p,rfont_q,rfont_r,rfont_s,rfont_t,rfont_u,rfont_v,rfont_w ;$50 P Q R S T U V W + .long rfont_x,rfont_y,rfont_z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,rfont_a,rfont_b,rfont_c,rfont_d,rfont_e,rfont_f,rfont_g ;$60 ` a b c d e f g + .long rfont_h,rfont_i,rfont_j,rfont_k,rfont_l,rfont_m,rfont_n,rfont_o ;$68 h i j k l m n o + .long rfont_p,rfont_q,rfont_r,rfont_s,rfont_t,rfont_u,rfont_v,rfont_w ;$70 p q r s t u v w + .long rfont_x,rfont_y,rfont_z,0,0,0,0,0 ;$78 x y z { | } ~ + +#***************************************************************************** +* +* Sound section +* >a0 = snd call + +RS_GRUNT .equ 0 +RS_DIE .equ 1 +RS_RESCUE .equ 2 +RS_SHOOT .equ 3 +RS_HIT .equ 4 + +sp_grunt .equ 1<<8 +sp_shoot .equ 2<<8 +sp_hit .equ 3<<8 +sp_rescue .equ 4<<8 +sp_die .equ 5<<8 + +robosnd_tbl + ; duration, call# + .word sp_grunt|6,96 ;0 = grunt footstep + .word sp_die|96,98 ;1 = die + .word sp_rescue|39,99 ;2 = rescue + .word sp_shoot|17,102 ;3 = shoot + .word sp_hit|23,100 ;4 = hit +robosnd_end + + .bss rs_snd,16 ;current sound call (0-3) + .bss rs_time,32 ;timeout on current call (long)PCNT + .bss rs_pri,16 ;priority on current call + .bss last_grunt_snd,32 ;PCNT of last grunt footstep + + + SUBRP robo_sound_init + + clr a14 + move a14,@rs_snd + move a14,@rs_time,L + move a14,@last_grunt_snd,L + rets + + + SUBRP robo_sound + + PUSH a2,a3,a4 + + ;reggies: + ;a0 = call index + ;a1 = priority + ;a2 = duration + ;a3 = call # + + ;decode table index + move a0,a14 + X32 a14 + addi robosnd_tbl,a14 + move *a14,a1,W + srl 8,a1 + move *a14+,a2,W + andi 0FFh,a2 + move *a14,a3,W + + ;check old duration - if there's nothing going on, do the sound. + move @rs_time,a4 + move @PCNT,a14,L + cmp a4,a14 + jrgt #dosnd + + ;old sound still going. check for an override + TEST a0 + jrnz #ng + move @rs_snd,a14 + jrz #grxgr ;special grunt-overriding-grunt case + +#ng move @rs_pri,a14 + cmp a14,a1 + jrge #dosnd + jruc #done + +#grxgr ;do new call if old one has 3 or fewer ticks to live + move @rs_time,a14,L + move @PCNT,a4,L + sub a4,a14 + cmpi 3,a4 + jrle #dosnd + jruc #done + +#dosnd calla SNDSND + move a0,@rs_snd + move @PCNT,a14,L + add a2,a14 + move a14,@rs_time,L + move a1,@rs_pri + +#done PULL a2,a3,a4 + rets + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/ROBOIMG.ASM b/ROBOIMG.ASM new file mode 100755 index 0000000..471f183 --- /dev/null +++ b/ROBOIMG.ASM @@ -0,0 +1,11 @@ + .FILE "roboimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include roboimg.glo + + .include roboimg.tbl + \ No newline at end of file diff --git a/ROPEIMG.ASM b/ROPEIMG.ASM new file mode 100755 index 0000000..e42719c --- /dev/null +++ b/ROPEIMG.ASM @@ -0,0 +1,12 @@ + .FILE "ropeimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include ropeimg.glo + + .include ropeimg.tbl + + \ No newline at end of file diff --git a/ROPES.ASM b/ROPES.ASM new file mode 100755 index 0000000..01aac3d --- /dev/null +++ b/ROPES.ASM @@ -0,0 +1,2245 @@ +************************************************************* +* +* Software: Jason Skiles +* Initiated: 9 March 94 +* +* COPYRIGHT (C) 1995 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "ropes.asm" + .title "rope code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "display.equ" + .include "game.equ" + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "ring.equ" + + .include "miscimg.glo" + .include "ropeimg.glo" + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref XFERPROC,front_rproc,reduce_bog + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +;Don't add any more rope commands! It won't work. RANI_SETPRIORITY +; was only being used in one place, and it wasn't doing much, so to strip +; this time-comsuming rope thing down, I've removed most of the command +; structure, and any word with bit 15 set will be treated as RANI_GOTO. + +RANI_GOTO .equ 0 + 8000h + +SSPRING_PRI .equ 10 +DSPRING_PRI .equ 9 +SHAKE_PRI .equ 5 + +#***************************************************************************** +* +* IN: a11 = group # (0=front, 1=back, 2=left, 3=right ) +* + + STRUCTPD + + LONG ROPE_ACTION ;UHW + + LONG #RED_OBJ ;UHL top rope + LONG #RED_OBJ2 ;UHL top rope (right half) + LONG #RED_SCPTR ;UHL top rope script ptr + WORD #RED_SCCNT ;UHW top rope script counter + LONG #RED_SQPTR ;UHL top rope sequence ptr + WORD #RED_SQCNT ;UHW top rope sequence counter + WORD #RED_PRIORITY ;UHW top rope anim priority + + LONG #WHITE_OBJ ;UHL middle rope + LONG #WHITE_OBJ2 ;UHL middle rope (right half) + LONG #WHITE_SCPTR ;UHL middle rope script ptr + WORD #WHITE_SCCNT ;UHW middle rope script counter + LONG #WHITE_SQPTR ;UHL middle rope sequence ptr + WORD #WHITE_SQCNT ;UHW middle rope sequence counter + WORD #WHITE_PRIORITY ;UHW middle rope anim priority + + LONG #BLUE_OBJ ;UHL bottom rope + LONG #BLUE_OBJ2 ;UHL bottom rope (right half) + LONG #BLUE_SCPTR ;UHL bottom rope script ptr + WORD #BLUE_SCCNT ;UHW bottom rope script counter + LONG #BLUE_SQPTR ;UHL bottom rope sequence ptr + WORD #BLUE_SQCNT ;UHW bottom rope sequence counter + WORD #BLUE_PRIORITY ;UHW bottom rope anim priority + + LONG #SHAD_OBJ ;UHL rope shadow + LONG #SHAD_OBJ2 ;UHL rope shadow (right half) + LONG #SHAD_SCPTR ;UHL rope shadow script ptr + WORD #SHAD_SCCNT ;UHW rope shadow script counter + LONG #SHAD_SQPTR ;UHL rope shadow sequence ptr + WORD #SHAD_SQCNT ;UHW rope shadow sequence counter + WORD #SHAD_PRIORITY ;UHW rope shadow anim priority + +PDBLKSTART .equ #RED_OBJ +PDBLKSIZ .equ #WHITE_OBJ-#RED_OBJ + + +PD_OBJ .equ #RED_OBJ - #RED_OBJ +PD_OBJ2 .equ #RED_OBJ2 - #RED_OBJ +PD_SCPTR .equ #RED_SCPTR - #RED_OBJ +PD_SCCNT .equ #RED_SCCNT - #RED_OBJ +PD_SQPTR .equ #RED_SQPTR - #RED_OBJ +PD_SQCNT .equ #RED_SQCNT - #RED_OBJ +PD_PRIORITY .equ #RED_PRIORITY - #RED_OBJ + + + ;reg use (overall) + ; a11 = * to our entry in the #master_table + + SUBR rope + + ;position a11 at the beginning of the #master_table entry for + ; the current bank of ropes. + move a11,a10 + movi #mtable_size,a14 + mpyu a14,a11 + addi #master_table,a11 + + ;set priority and action + clr a14 + move a14,*a13(ROPE_ACTION),L + + ;initialize the shadow stuff to zero in case this is a horz rope + clr a14 + move a14,*a13(#SHAD_OBJ),L + move a14,*a13(#SHAD_OBJ2),L + move a14,*a13(#SHAD_SCPTR),L + move a14,*a13(#SHAD_SCCNT),W + move a14,*a13(#SHAD_SQPTR),L + move a14,*a13(#SHAD_SQCNT),W + move a14,*a13(#SHAD_PRIORITY),W + + ;reg use (creation) + ; a0-a8 - create stuff + ; a9 - #???_OBJ ptr + ; a10 - pointer to initial position table entry + + ;create the ropes + move *a11(#POS_TABLE),a10,L + move a13,a9 + addi #RED_OBJ,a9 + +#create_loop + move *a10+,a2,L + jrz #first3_done + move *a10+,a4,W + ori DMAWNZ|M_3D,a4 + move *a10+,a5,W + move *a10+,a0,W + move *a10+,a1,W + move *a10+,a3,W + clr a6 + clr a7 + + ;This is ugly as sin, but it'll do for now. + addi 104,a0 + addi -258,a1 + +#no_flip + + sla 16,a0 + sla 16,a1 + + calla BEGINOBJ + + ;set the various rope PDATA + move a8,*a9(PD_OBJ),L + clr a8 + move a8,*a9(PD_OBJ2),L + move a8,*a9(PD_SCPTR),L + move a8,*a9(PD_SCCNT),W + move a8,*a9(PD_SQPTR),L + move a8,*a9(PD_SQCNT),W + move a8,*a9(PD_PRIORITY),W + addi PDBLKSIZ,a9 + jruc #create_loop + +#first3_done + ;first three objects down and we hit one zero. If there's another + ; zero after that one, then we're done. If there's another table + ; entry, then we need to make three more ropes and stick them in + ; the OBJ2 slots. These are the right-half ropes in the front and + ; back banks, and the bottom-half ropes on the sides + + move a13,a9 + addi #RED_OBJ,a9 + +#create2_loop + move *a10+,a2,L + jrz #create_done + move *a10+,a4,W + ori DMAWNZ|M_3D,a4 + move *a10+,a5,W + move *a10+,a0,W + move *a10+,a1,W + move *a10+,a3,W + clr a6 + clr a7 + + ;This is ugly as sin, but it'll do for now. + addi 104,a0 + addi -258,a1 + +#no_flip2 + + sla 16,a0 + sla 16,a1 + + calla BEGINOBJ + + ;set the various rope PDATA + move a8,*a9(PD_OBJ2),L + addi PDBLKSIZ,a9 + + jruc #create2_loop + +new_command_wake + ;the only way to get here is an XFERPROC. + ;read our new orders from pdata ROPE_ACTION and carry them out. + move *a13(ROPE_ACTION),a0,L + + ;prepare the red rope pointers + move *a0+,a14,W ;priority check + move *a0+,a1,L + move *a13(#RED_PRIORITY),a2,W + cmp a14,a2 + jrgt #skip_red + move a14,*a13(#RED_PRIORITY),W + move a1,*a13(#RED_SCPTR),L + move *a1+,a2,W + move a2,*a13(#RED_SCCNT),W + move *a1+,a2,L + move a2,*a13(#RED_SQPTR),L + movk 1,a2 + move a2,*a13(#RED_SQCNT),W +#skip_red + + ;prepare the white rope pointers + move *a0+,a14,W ;priority check + move *a0+,a1,L + move *a13(#WHITE_PRIORITY),a2,W + cmp a14,a2 + jrgt #skip_white + move a14,*a13(#WHITE_PRIORITY),W + move a1,*a13(#WHITE_SCPTR),L + move *a1+,a2,W + move a2,*a13(#WHITE_SCCNT),W + move *a1+,a2,L + move a2,*a13(#WHITE_SQPTR),L + movk 1,a2 + move a2,*a13(#WHITE_SQCNT),W +#skip_white + + ;prepare the blue rope pointers + move *a0+,a14,W ;priority check + move *a0+,a1,L + move *a13(#BLUE_PRIORITY),a2,W + cmp a14,a2 + jrgt #skip_blue + move a14,*a13(#BLUE_PRIORITY),W + move a1,*a13(#BLUE_SCPTR),L + move *a1+,a2,W + move a2,*a13(#BLUE_SCCNT),W + move *a1+,a2,L + move a2,*a13(#BLUE_SQPTR),L + movk 1,a2 + move a2,*a13(#BLUE_SQCNT),W + +#skip_blue + ;prepare the rope shadow pointers + move *a13(#SHAD_OBJ),a14,L ;exist check + jrz #skip_shadow + + move *a0+,a14,W ;priority check + move *a0+,a1,L + move *a13(#SHAD_PRIORITY),a2,W + cmp a14,a2 + jrgt #skip_shadow + move a14,*a13(#SHAD_PRIORITY),W + move a1,*a13(#SHAD_SCPTR),L + move *a1+,a2,W + move a2,*a13(#SHAD_SCCNT),W + move *a1+,a2,L + move a2,*a13(#SHAD_SQPTR),L + movk 1,a2 + move a2,*a13(#SHAD_SQCNT),W + +#skip_shadow + jruc #main_loop + + +#master_table + .long #front_ptable + .long #back_ptable +#siderope_start + .long #left_ptable + .long #right_ptable +#master_tablex + +#mtable_size .equ (#master_tablex-#master_table)/4 + +#POS_TABLE .equ 0 + + +;Initial position tables + + +#front_ptable + ;FRONT LEFT + LWWWWW ROPE_F_R,0,CLSNEUT|SUBROPE|SUBHORZ,673+1,402-2,015aah + LWWWWW ROPE_F_W,0,CLSNEUT|SUBROPE|SUBHORZ,671+1,426-2,015aah + LWWWWW ROPE_F_B,0,CLSNEUT|SUBROPE|SUBHORZ,672+1,449-2,015aah + .long 0 + + ;FRONT RIGHT + LWWWWW ROPE_F_R,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,919+349,402-2,015aah + LWWWWW ROPE_F_W,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,919+349,426-2,015aah + LWWWWW ROPE_F_B,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,922+349,449-2,015aah + .long 0,0 + + +#back_ptable + ;BACK LEFT + LWWWWW ROPE_B_R,0,CLSNEUT|SUBROPE|SUBHORZ,749+1,318-2,013cah + LWWWWW ROPE_B_W,0,CLSNEUT|SUBROPE|SUBHORZ,749+1,341-2,013cah + LWWWWW ROPE_B_B,0,CLSNEUT|SUBROPE|SUBHORZ,749+1,364-2,013cah + .long 0 + + ;BACK RIGHT + LWWWWW ROPE_B_R,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,1093+101-3,318-2,013cah + LWWWWW ROPE_B_W,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,1093+101-3,341-2,013cah + LWWWWW ROPE_B_B,M_FLIPH,CLSNEUT|SUBROPE|SUBHORZ,1093+101-3,364-2,013cah + .long 0,0 + + + +#left_ptable + ;LEFT TOP + LWWWWW ROPE_S_Ra,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,323-2,013cch + LWWWWW ROPE_S_Wa,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,346-2,013cbh + LWWWWW ROPE_S_Ba,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,369-2,013cah + LWWWWW ROPSHADA,0,CLSNEUT|SUBROPE|SUBSIDE,2c7h,189h,013c8h + .long 0 + + ;LEFT BOTTOM + LWWWWW ROPE_S_Rb,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,323-2,013cch + LWWWWW ROPE_S_Wb,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,346-2,013cbh + LWWWWW ROPE_S_Bb,0,CLSNEUT|SUBROPE|SUBSIDE,676+1,369-2,013cah + LWWWWW ROPSHADB,0,CLSNEUT|SUBROPE|SUBSIDE,2c7h,189h,013c8h + .long 0,0 + +#right_ptable + ;RIGHT TOP + LWWWWW ROPE_S_Ra,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,322-2,013cch + LWWWWW ROPE_S_Wa,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,345-2,013cbh + LWWWWW ROPE_S_Ba,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,368-2,013cah + LWWWWW ROPSHADA,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,469h+100,189h,013c8h + .long 0 + + ;RIGHT BOTTOM + LWWWWW ROPE_S_Rb,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,322-2,013cch + LWWWWW ROPE_S_Wb,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,345-2,013cbh + LWWWWW ROPE_S_Bb,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,1164+1+100,368-2,013cah + LWWWWW ROPSHADB,M_FLIPH,CLSNEUT|SUBROPE|SUBSIDE,469h+100,189h,013c8h + .long 0,0 + +#create_done + + ;sleep a bit, then check the reduce_bog flag + SLEEPK 2 + move @reduce_bog,a14 + jrz #bog_ok + + cmpi #siderope_start,a11 + jrge #bog_ok + + ;we're a front or back rope. Die. + + ;while we're at it, clear the front and back rope processes + movi front_rproc,a0 + clr a14 + move a14,*a0+,L + move a14,*a0,L + DIE + + ;yikes! We're in bog-reduction mode. Die if we're a horz rope proc. + +#bog_ok ;reg use (main loop) + ; a9 - permanent storage of rope_update() address + ;a10 - temp storage of rope_update() address + ;a11 - pointer to our entry in the #master_table + + movi rope_update,a9 + + .align + +#main_loop + SLEEPK 1 + + move a13,a5 + addi #RED_OBJ,a5 ;top rope + + movi fastanic,a1 ;required by rope_update + movi PDBLKSIZ,a3 + + movk 4,a2 + +#tightloop + move a9,a10 + exgpc a10 + add a3,a5 + dsjs a2,#tightloop + jruc #main_loop + +#***************************************************************************** +* +* a5 = ptr to section of PDATA for the current rope (use those PD_??? +* offsets defined earlier to access the data ) +* +* a1 = address of fastanic routine (helps speed things up a shade) +* +* a10 = return address (this routine is called with exgpc) +* + +;NOTES: +; PD_OBJ contains the object pointer for a rope +; ---> since PD_OBJ is zero, we simply use *aN instead of *aN(PD_OBJ) +; PD_SCPTR points to the CURRENTLY ACTIVE sequence in the script +; table. +; PD_SCCNT is the number of repetitions of a the current sequence +; to be performed. +; PD_SQPTR points to the NEXT frame in the current sequence. +; PD_SQCNT is the number of ticks to hold the current frame. +; + + ;WARNING!!!!! + ;This routine is heavily compacted in the name of speed and size + ; optimization. It makes heavy use of questionable assumptions + ; about the contents of various registers and how long said + ; contents are to remain valid. It works, but any changes are + ; quite likely to topple the whole rickety mess. Watch out. + + SUBRP rope_update + + ;time to move on to the next frame in our sequence? + move *a5(PD_SQCNT),a6,W + jrz #done ;not even IN a sequence. quit + + ;make sure this rope exists + move *a5,a8,L ;*a5 == *a5(PD_OBJ) + jrz #done ;rope doesn't exist. ignore it. + + ;dec frame time + dec a6 + jrnz #hold_current_frame + +#new_sequence_frame + ;timer has run out on current frame. get a new one. + move *a5(PD_SQPTR),a6,L + move *a6+,a7,W ;next time increment + jrp #next_frame + jrn #sequence_goto + +#end_of_sequence + ;that was the last frame in the sequence. look at the script. + move *a5(PD_SCCNT),a6,W + dec a6 + jrnz #repeat_sequence + + ;move on to the next sequence +#new_sequence + move *a5(PD_SCPTR),a6,L + addi 30h,a6 ;point at next entry + move a6,*a5(PD_SCPTR),L ;and stuff it. + move *a6,a6,W ;get the repeat count + jrp #repeat_sequence + jrn #script_goto + +#end_of_script + clr a14 + move a14,*a5(PD_SQCNT),L ;This hits both CNT and PRIORITY + +#done + jump a10 + + ;it's some kind of special command + ;Just assume it's a goto, the only legal command these days. +#sequence_goto + move *a6(0),*a5(PD_SQPTR),L + jruc #new_sequence_frame + +#hold_current_frame + ;timer hasn't run out on current frame. stuff the new counter + ; and return + move a6,*a5(PD_SQCNT),W + jump a10 ;return address + + ;there's another valid frame in the sequence. use it. +#next_frame + ;figure out if this is a front/back rope or a side rope. They're + ; handled differently. + move *a8(OID),a14,W + + move a7,*a5(PD_SQCNT),W + + btst SUBHORZ_BIT,a14 + jrnz #fb_rope + + +#side_rope ;it's a side rope + ;for these ropes, the 'image' in the sequence is a label where + ; we'll find the top and bottom image header pointers, in that order. + ; thus the extra indirection. + move *a6+,a7,L + move *a7+,a0,L + move *a7,a4,L + +#rope_common + move a1,a14 ;a1 = fastanic + exgpc a14 + move *a5(PD_OBJ2),a8,L + + move a4,a0 + move a1,a14 ;a1 = fastanic + exgpc a14 + move a6,*a5(PD_SQPTR),L + jump a10 ;return address + +#fb_rope ;it's a front or back rope + ;for these ropes, the image is in the sequence, and it's used + ; for both halves. The one on the right is flipped. + move *a6+,a0,L + move a0,a4 + jruc #rope_common + + ;it's some kind of special command + ;assume it's a GOTO. It'd sure as hell BETTER be... +#script_goto + move *a5(PD_SCPTR),a6,L + move *a6(10h),*a5(PD_SCPTR),L + jruc #new_sequence + +#repeat_sequence + move a6,*a5(PD_SCCNT),W + move *a5(PD_SCPTR),a6,L + addk 10h,a6 ;skip the repeat count + move *a6,a6,L ;points now to a sequence + move a6,*a5(PD_SQPTR),L ;stuff it as the new SQPTR + jruc #new_sequence_frame ;and pretend we got there normally... + +#***************************************************************************** +* Change an objects image (Doesn't check VFLIP) +* A0=*New image +* A8=*Obj +* Trashes scratch +* +* ---> This is more or less identical to the civanic found in ROBO.ASM, +* but it's called with EXGPC instead of CALL[R/A]. +* +* ---> returns via JUMP a14 + + SUBRP fastanic + + cmpi ROM,a0 + jrlo #anierr + + ;set new anim points + move *a0(IANIOFF),*a8(ODOFF),L + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + setf 5,0,0 + move *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 16,1,0 + +#x jump a14 + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,2 + .endif + jruc #x + + +#***************************************************************************** +* +* a0 = rope process +* a1 = rope index (R_TOP,R_MIDDLE,R_BOTTOM) +* a2 = rope action (RZ_NORM,RZ_HIGH) +* + + SUBR set_rope_z + + PUSH a4 + + addi PDBLKSTART,a0 + movi PDBLKSIZ,a14 + mpyu a14,a1 + add a1,a0 + + move *a0(PD_OBJ),a3,L ;top half + move *a0(PD_OBJ2),a4,L ;bottom half + + movi 015a9h,a0 + + cmpi RZ_HIGH,a2 + jreq #set_high + + move *a3(OZPOS),a0,W + +#set_high + move a0,*a4(OZPOS) + + PULL a4 + + rets + +#***************************************************************************** +* +* a0 = rope number (use defined constants from game.equ) +* a1 = type of action +* a2 = rope position(0-5) (for side bounces) +* a2 = magnitude(0-3) (for general shakes) +* a3 = Z position of wrestler (only for side springs) +* + + ;reg use + ; a0-3 input + ; a4 script pointer + ; a5 rope process pointer + + SUBR rope_command + + push a0,a1,a2,a3,a4,a7,a10 + + ;get the action script pointer + move a0,a5 + X32 a5 + movk ROPE_COMMANDS,a14 + mpyu a14,a5 + move a5,a4 + + addi #command_table,a4 + move a1,a14 + X32 a14 + add a14,a4 + move *a4,a4,L + jrz #invalid_action + + ;get the rope proc pointer + move a0,a5 + X32 a5 + addi front_rproc,a5 + move *a5,a5,L + jrz #done ;ignore if there's no process for that rope. + + ;check for a side-spring + cmpi #sspring,a4 + jreq #sloop + cmpi #dspring,a4 + jreq #sloop + jruc #no_spring + + ;it's a side-spring. figure out which one to use +#sloop + move *a4+,a14,L + cmp a14,a3 + jrlt #sfound + addi 20h*6,a4 + jruc #sloop + +#sfound + move a2,a14 + X32 a14 + add a14,a4 + move *a4,a4,L + jruc #script_set + +#no_spring + ;check for a side shake + cmpi ROPE_BOUNCEUD,a1 + jrne #no_updown + + ;it's an up-down shake. + move a2,a14 + X32 a14 + add a14,a4 + move *a4,a4,L + jruc #script_set + +#no_updown +#script_set + ;start the bank of ropes doing it's thing + move a4,*a5(ROPE_ACTION),L + + move *a5(PROCID),a1,W + movi new_command_wake,a7 + move *a5(PA8),a8,L + move *a5(PA9),a9,L + move *a5(PA10),a10,L + move *a5(PA11),a11,L + move a5,a0 + calla XFERPROC +#invalid_action +#done + + pull a0,a1,a2,a3,a4,a7,a10 + + rets + +#command_table + .long #frontud_table,0,0,0,0,0 + .long #backud_table,0,0,0,0,0 + .long #sideud,side_bounceio_t,#sspring,#dspring,sspr_trans_t,dspr_trans_t + .long #sideud,side_bounceio_t,#sspring,#dspring,sspr_trans_t,dspr_trans_t + +#frontud_table + .long front_bounceud1_t + .long front_bounceud2_t + .long front_bounceud3_t + .long front_bounceud4_t + +#backud_table + .long back_bounceud1_t + .long back_bounceud2_t + .long back_bounceud3_t + .long back_bounceud4_t + +#sideud + .long side_bounceud1_t + .long side_bounceud2_t + .long side_bounceud3_t + .long side_bounceud4_t + +#LANE_WIDTH .equ (RING_BOT - RING_TOP) / 5 + +#sspring + .long ( RING_TOP + ( 1 * #LANE_WIDTH )) << 16 + .long sspr11_t,sspr12_t,sspr13_t,sspr14_t,sspr15_t,0 + .long ( RING_TOP + ( 2 * #LANE_WIDTH )) << 16 + .long sspr11_t,sspr22_t,sspr23_t,sspr24_t,sspr25_t,0 + .long ( RING_TOP + ( 3 * #LANE_WIDTH )) << 16 + .long sspr21_t,sspr32_t,sspr33_t,sspr34_t,sspr35_t,0 + .long ( RING_TOP + ( 4 * #LANE_WIDTH )) << 16 + .long sspr31_t,sspr42_t,sspr43_t,sspr44_t,sspr45_t,0 + .long 7FFFFFFFh + .long sspr41_t,sspr52_t,sspr53_t,sspr54_t,sspr55_t,0 + +#dspring + .long ( RING_TOP + ( 1 * #LANE_WIDTH )) << 16 + .long dspr11_t,dspr12_t,dspr13_t,dspr14_t,dspr15_t,dspr16_t + .long ( RING_TOP + ( 2 * #LANE_WIDTH )) << 16 + .long dspr11_t,dspr22_t,dspr23_t,dspr24_t,dspr25_t,dspr26_t + .long ( RING_TOP + ( 3 * #LANE_WIDTH )) << 16 + .long dspr21_t,dspr32_t,dspr33_t,dspr34_t,dspr35_t,dspr36_t + .long ( RING_TOP + ( 4 * #LANE_WIDTH )) << 16 + .long dspr31_t,dspr42_t,dspr43_t,dspr44_t,dspr45_t,dspr46_t + .long 7FFFFFFFh + .long dspr41_t,dspr52_t,dspr53_t,dspr54_t,dspr55_t,dspr56_t + +#*************************************** +* +* Front ropes, up and down +* + + SUBRP front_bounceud4_t ;(script table) + WL SHAKE_PRI,front_bounceud4_R + WL SHAKE_PRI,front_bounceud4_W + WL SHAKE_PRI,front_bounceud4_B + + SUBRP front_bounceud3_t ;(script table) + WL SHAKE_PRI,front_bounceud3_R + WL SHAKE_PRI,front_bounceud3_W + WL SHAKE_PRI,front_bounceud3_B + + SUBRP front_bounceud2_t ;(script table) + WL SHAKE_PRI,front_bounceud2_R + WL SHAKE_PRI,front_bounceud2_W + WL SHAKE_PRI,front_bounceud2_B + + SUBRP front_bounceud1_t ;(script table) + WL SHAKE_PRI,front_bounceud1_R + WL SHAKE_PRI,front_bounceud1_W + WL SHAKE_PRI,front_bounceud1_B + + SUBRP front_bounceud4_R ;(script) + WL 1,#f_bncud1_R + SUBRP front_bounceud3_R ;(script) + WL 1,#f_bncud2_R + SUBRP front_bounceud2_R ;(script) + WL 2,#f_bncud3 + SUBRP front_bounceud1_R ;(script) + WL 3,#f_bncud4 + .word 0 + + SUBRP front_bounceud4_W ;(script) + WL 1,#f_bncud1_W + SUBRP front_bounceud3_W ;(script) + WL 1,#f_bncud2_W + SUBRP front_bounceud2_W ;(script) + WL 2,#f_bncud3 + SUBRP front_bounceud1_W ;(script) + WL 3,#f_bncud4 + .word 0 + + SUBRP front_bounceud4_B ;(script) + WL 1,#f_bncud1_B + SUBRP front_bounceud3_B ;(script) + WL 1,#f_bncud2_B + SUBRP front_bounceud2_B ;(script) + WL 2,#f_bncud3 + SUBRP front_bounceud1_B ;(script) + WL 3,#f_bncud4 + .word 0 + +#f_bncud1_R ;(sequence) + WL 1,RPFBUP02 +#f_bncud1_B ;(sequence) + WL 1,RPFBUP03 +#f_bncud1_W ;(sequence) + WL 1,RPFBUP05 + WL 1,RPFBUP04 + WL 1,RPFBUP03 + WL 1,RPFBUP01 + WL 1,RPFBDN01 + WL 1,RPFBDN03 + WL 1,RPFBDN05 + WL 1,RPFBDN04 + WL 1,RPFBDN03 + WL 1,RPFBDN02 + WL 1,ROPE_F_R + .word 0 + +#f_bncud2_R ;sequence + WL 1,RPFBUP02 +#f_bncud2_B ;sequence + WL 1,RPFBUP03 +#f_bncud2_W ;sequence + WL 1,RPFBUP04 + WL 1,RPFBUP03 + WL 1,RPFBUP01 + WL 1,RPFBDN02 + WL 1,RPFBDN03 + WL 1,RPFBDN04 + WL 1,RPFBDN03 + WL 1,RPFBDN02 + WL 1,ROPE_F_R + .word 0 + +#f_bncud3 ;sequence + WL 1,RPFBUP02 + WL 1,RPFBUP03 + WL 1,RPFBUP02 + WL 1,ROPE_F_R + WL 1,RPFBDN02 + WL 1,RPFBDN03 + WL 1,RPFBDN02 + WL 1,ROPE_F_R + .word 0 + +#f_bncud4 ;sequence + WL 1,RPFBUP01 + WL 1,RPFBUP02 + WL 1,RPFBUP01 + WL 1,ROPE_F_R + WL 1,RPFBDN01 + WL 1,RPFBDN02 + WL 1,RPFBDN01 + WL 1,ROPE_F_R + .word 0 + + +**************************************** +* +* Back ropes, up and down +* + + SUBRP back_bounceud4_t ;(script table) + WL SHAKE_PRI,back_bounceud4_R + WL SHAKE_PRI,back_bounceud4_W + WL SHAKE_PRI,back_bounceud4_B + + SUBRP back_bounceud3_t ;(script table) + WL SHAKE_PRI,back_bounceud3_R + WL SHAKE_PRI,back_bounceud3_W + WL SHAKE_PRI,back_bounceud3_B + + SUBRP back_bounceud2_t ;(script table) + WL SHAKE_PRI,back_bounceud2_R + WL SHAKE_PRI,back_bounceud2_W + WL SHAKE_PRI,back_bounceud2_B + + SUBRP back_bounceud1_t ;(script table) + WL SHAKE_PRI,back_bounceud1_R + WL SHAKE_PRI,back_bounceud1_W + WL SHAKE_PRI,back_bounceud1_B + + SUBRP back_bounceud4_R ;(script) + WL 1,#b_bncud1_R + SUBRP back_bounceud3_R ;(script) + WL 1,#b_bncud2_R + SUBRP back_bounceud2_R ;(script) + WL 2,#b_bncud3_R + SUBRP back_bounceud1_R ;(script) + WL 3,#b_bncud4_R + .word 0 + + SUBRP back_bounceud4_W ;(script) + WL 1,#b_bncud1_W + SUBRP back_bounceud3_W ;(script) + WL 1,#b_bncud2_W + SUBRP back_bounceud2_W ;(script) + WL 2,#b_bncud3_W + SUBRP back_bounceud1_W ;(script) + WL 3,#b_bncud4_W + .word 0 + + SUBRP back_bounceud4_B ;(script) + WL 1,#b_bncud1_B + SUBRP back_bounceud3_B ;(script) + WL 1,#b_bncud2_B + SUBRP back_bounceud2_B ;(script) + WL 2,#b_bncud3_B + SUBRP back_bounceud1_B ;(script) + WL 3,#b_bncud4_B + .word 0 + + +#b_bncud1_B ;(sequence) + WL 1,RPBBUP02 +#b_bncud1_R ;(sequence) + WL 1,RPBBUP03 +#b_bncud1_W ;(sequence) + WL 1,RPBBUP05 + WL 1,RPBBUP04 + WL 1,RPBBUP03 + WL 1,RPBBUP01 + WL 1,RPBBDN01 + WL 1,RPBBDN03 + WL 1,RPBBDN05 + WL 1,RPBBDN04 + WL 1,RPBBDN03 + WL 1,RPBBDN02 + WL 1,ROPE_B_R + .word 0 + +#b_bncud2_B ;(sequence) + WL 1,RPBBUP02 +#b_bncud2_R ;(sequence) + WL 1,RPBBUP03 +#b_bncud2_W ;(sequence) + WL 1,RPBBUP04 + WL 1,RPBBUP03 + WL 1,RPBBUP01 + WL 1,RPBBDN02 + WL 1,RPBBDN03 + WL 1,RPBBDN04 + WL 1,RPBBDN03 + WL 1,RPBBDN02 + WL 1,ROPE_B_R + .word 0 + +#b_bncud3_R ;(sequence) +#b_bncud3_W ;(sequence) + WL 1,RPBBUP02 +#b_bncud3_B ;(sequence) + WL 1,RPBBUP03 + WL 1,RPBBUP02 + WL 1,ROPE_B_R + WL 1,RPBBDN02 + WL 1,RPBBDN03 + WL 1,RPBBDN02 + WL 1,ROPE_B_R + .word 0 + +#b_bncud4_W ;(sequence) +#b_bncud4_B ;(sequence) + WL 1,RPBBUP01 +#b_bncud4_R ;(sequence) + WL 1,RPBBUP02 + WL 1,RPBBUP01 + WL 1,ROPE_B_R + WL 1,RPBBDN01 + WL 1,RPBBDN02 + WL 1,RPBBDN01 + WL 1,ROPE_B_R + .word 0 + + +**************************************** +* +* Side ropes, up and down +* + + SUBRP side_bounceud4_t ;(script table) + WL SHAKE_PRI,side_bounceud4_R + WL SHAKE_PRI,side_bounceud4_W + WL SHAKE_PRI,side_bounceud4_B + WL SHAKE_PRI,side_bounceud_S + + SUBRP side_bounceud3_t ;(script table) + WL SHAKE_PRI,side_bounceud3_R + WL SHAKE_PRI,side_bounceud3_W + WL SHAKE_PRI,side_bounceud3_B + WL SHAKE_PRI,side_bounceud_S + + SUBRP side_bounceud2_t ;(script table) + WL SHAKE_PRI,side_bounceud2_R + WL SHAKE_PRI,side_bounceud2_W + WL SHAKE_PRI,side_bounceud2_B + WL SHAKE_PRI,side_bounceud_S + + SUBRP side_bounceud1_t ;(script table) + WL SHAKE_PRI,side_bounceud1_R + WL SHAKE_PRI,side_bounceud1_W + WL SHAKE_PRI,side_bounceud1_B + WL SHAKE_PRI,side_bounceud_S + + SUBRP side_bounceud_S ;(script) + WL 1,#s_bncud_S + .word 0 + + SUBRP side_bounceud4_R ;(script) + WL 1,#s_bncud1_R + SUBRP side_bounceud3_R ;(script) + WL 1,#s_bncud2_R + SUBRP side_bounceud2_R ;(script) + WL 2,#s_bncud3_R + SUBRP side_bounceud1_R ;(script) + WL 3,#s_bncud4_R + .word 0 + + SUBRP side_bounceud4_W ;(script) + WL 1,#s_bncud1_W + SUBRP side_bounceud3_W ;(script) + WL 1,#s_bncud2_W + SUBRP side_bounceud2_W ;(script) + WL 2,#s_bncud3_W + SUBRP side_bounceud1_W ;(script) + WL 3,#s_bncud4_W + .word 0 + + SUBRP side_bounceud4_B ;(script) + WL 1,#s_bncud1_B + SUBRP side_bounceud3_B ;(script) + WL 1,#s_bncud2_B + SUBRP side_bounceud2_B ;(script) + WL 2,#s_bncud3_B + SUBRP side_bounceud1_B ;(script) + WL 3,#s_bncud4_B + .word 0 + +#s_bncud1_B ;(sequence) + WL 1,RPSBUP02 +#s_bncud1_W ;(sequence) + WL 1,RPSBUP03 +#s_bncud1_R ;(sequence) + WL 1,RPSBUP05 + WL 1,RPSBUP04 + WL 1,RPSBUP03 + WL 1,RPSBUP01 + WL 1,RPSBDN01 + WL 1,RPSBDN03 + WL 1,RPSBDN05 + WL 1,RPSBDN04 + WL 1,RPSBDN03 + WL 1,RPSBDN02 + WL 1,ROPE_S_R + .word 0 + +#s_bncud2_B ;(sequence) + WL 1,RPSBUP02 +#s_bncud2_W ;(sequence) + WL 1,RPSBUP03 +#s_bncud2_R ;(sequence) + WL 1,RPSBUP04 + WL 1,RPSBUP03 + WL 1,RPSBUP01 + WL 1,RPSBDN02 + WL 1,RPSBDN03 + WL 1,RPSBDN04 + WL 1,RPSBDN03 + WL 1,RPSBDN02 + WL 1,ROPE_S_R + .word 0 + +#s_bncud3_R ;(sequence) +#s_bncud3_W ;(sequence) + WL 1,RPSBUP02 +#s_bncud3_B ;(sequence) + WL 1,RPSBUP03 + WL 1,RPSBUP02 + WL 1,ROPE_S_R + WL 1,RPSBDN02 + WL 1,RPSBDN03 + WL 1,RPSBDN02 + WL 1,ROPE_S_R + .word 0 + +#s_bncud4_R ;(sequence) +#s_bncud4_B ;(sequence) + WL 1,RPSBUP01 +#s_bncud4_W ;(sequence) + WL 1,RPSBUP02 + WL 1,RPSBUP01 + WL 1,ROPE_S_R + WL 1,RPSBDN01 + WL 1,RPSBDN02 + WL 1,RPSBDN01 + WL 1,ROPE_S_R + .word 0 + +#s_bncud_S ;(sequence) + WL 1,ROPSHAD + .word 0 + + +**************************************** +* +* Side ropes, in and out +* + + SUBRP side_bounceio_t ;(script table) + WL SHAKE_PRI,side_bounceio_R + WL SHAKE_PRI,side_bounceio_W + WL SHAKE_PRI,side_bounceio_B + WL SHAKE_PRI,side_bounceio_S + + SUBRP side_bounceio_S ;(script) + WL 1,#s_bncio_S + .word 0 + + SUBRP side_bounceio_R ;(script) + WL 1,#s_bncio1_R + SUBRP side_bounceio2_R ;(script) +; WL RANI_SETPRIORITY,SHAKE_PRI-1 + WL 1,#s_bncio2_R + WL 1,#s_bncio3 + WL 2,#s_bncio4 + .word 0 + + SUBRP side_bounceio_W ;(script) + WL 1,#s_bncio1_W + SUBRP side_bounceio2_W ;(script) + WL 1,#s_bncio2_W + WL 1,#s_bncio3 + WL 2,#s_bncio4 + .word 0 + + SUBRP side_bounceio_B ;(script) + WL 1,#s_bncio1_B + WL 1,#s_bncio2_B + WL 1,#s_bncio3 + WL 2,#s_bncio4 + .word 0 + + +#s_bncio1_R ;(sequence) + WL 1,RPSBIN02 +#s_bncio1_B ;(sequence) + WL 1,RPSBIN03 +#s_bncio1_W ;(sequence) + WL 1,RPSBIN05 + WL 1,RPSBIN04 + WL 1,RPSBIN03 + WL 1,RPSBIN01 + WL 1,RPSBOU01 + WL 1,RPSBOU03 + WL 1,RPSBOU05 + WL 1,RPSBOU04 + WL 1,RPSBOU03 + WL 1,RPSBOU02 + WL 1,ROPE_S_R + .word 0 + +#s_bncio2_R ;(sequence) + WL 1,RPSBIN02 +#s_bncio2_B ;(sequence) + WL 1,RPSBIN03 +#s_bncio2_W ;(sequence) + WL 1,RPSBIN04 + WL 1,RPSBIN03 + WL 1,RPSBIN01 + WL 1,RPSBOU02 + WL 1,RPSBOU03 + WL 1,RPSBOU04 + WL 1,RPSBOU03 + WL 1,RPSBOU02 + WL 1,ROPE_S_R + .word 0 + +#s_bncio3 ;(sequence) + WL 1,RPSBIN02 + WL 1,RPSBIN03 + WL 1,RPSBIN02 + WL 1,ROPE_S_R + WL 1,RPSBOU02 + WL 1,RPSBOU03 + WL 1,RPSBOU02 + WL 1,ROPE_S_R + .word 0 + +#s_bncio4 ;(sequence) + WL 1,RPSBIN01 + WL 1,RPSBIN02 + WL 1,RPSBIN01 + WL 1,ROPE_S_R + WL 1,RPSBOU01 + WL 1,RPSBOU02 + WL 1,RPSBOU01 + WL 1,ROPE_S_R + .word 0 + +#s_bncio_S ;(sequence) + WL 1,ROPSHAD + .word 0 + +**************************************** +* +* Side ropes, spring sideways +* + +sspr11_t ;(script table) + WLWL SSPRING_PRI,#sspr11,SSPRING_PRI,#ssprXX + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad11 +sspr12_t ;(script table) + WLWL SSPRING_PRI,#sspr12,SSPRING_PRI,#sspr11 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad12 +sspr13_t ;(script table) + WLWL SSPRING_PRI,#sspr13,SSPRING_PRI,#sspr12 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad13 +sspr14_t ;(script table) + WLWL SSPRING_PRI,#sspr14,SSPRING_PRI,#sspr12 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad13 +sspr15_t ;(script table) + WLWL SSPRING_PRI,#sspr15,SSPRING_PRI,#sspr11 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad12 + +sspr21_t ;(script table) + WLWL SSPRING_PRI,#sspr21,SSPRING_PRI,#ssprXX + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad21 +sspr22_t ;(script table) + WLWL SSPRING_PRI,#sspr22,SSPRING_PRI,#sspr21 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad22 +sspr23_t ;(script table) + WLWL SSPRING_PRI,#sspr23,SSPRING_PRI,#sspr22 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad23 +sspr24_t ;(script table) + WLWL SSPRING_PRI,#sspr24,SSPRING_PRI,#sspr22 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad23 +sspr25_t ;(script table) + WLWL SSPRING_PRI,#sspr25,SSPRING_PRI,#sspr21 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad22 + +sspr31_t ;(script table) + WLWL SSPRING_PRI,#sspr31,SSPRING_PRI,#ssprXX + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad31 +sspr32_t ;(script table) + WLWL SSPRING_PRI,#sspr32,SSPRING_PRI,#sspr31 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad32 +sspr33_t ;(script table) + WLWL SSPRING_PRI,#sspr33,SSPRING_PRI,#sspr32 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad33 +sspr34_t ;(script table) + WLWL SSPRING_PRI,#sspr34,SSPRING_PRI,#sspr32 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad33 +sspr35_t ;(script table) + WLWL SSPRING_PRI,#sspr35,SSPRING_PRI,#sspr31 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad32 + +sspr41_t ;(script table) + WLWL SSPRING_PRI,#sspr41,SSPRING_PRI,#ssprXX + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad41 +sspr42_t ;(script table) + WLWL SSPRING_PRI,#sspr42,SSPRING_PRI,#sspr41 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad42 +sspr43_t ;(script table) + WLWL SSPRING_PRI,#sspr43,SSPRING_PRI,#sspr42 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad43 +sspr44_t ;(script table) + WLWL SSPRING_PRI,#sspr44,SSPRING_PRI,#sspr42 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad43 +sspr45_t ;(script table) + WLWL SSPRING_PRI,#sspr45,SSPRING_PRI,#sspr41 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad42 + +sspr51_t ;(script table) + WLWL SSPRING_PRI,#sspr51,SSPRING_PRI,#ssprXX + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad51 +sspr52_t ;(script table) + WLWL SSPRING_PRI,#sspr52,SSPRING_PRI,#sspr51 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad52 +sspr53_t ;(script table) + WLWL SSPRING_PRI,#sspr53,SSPRING_PRI,#sspr52 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad53 +sspr54_t ;(script table) + WLWL SSPRING_PRI,#sspr54,SSPRING_PRI,#sspr52 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad53 +sspr55_t ;(script table) + WLWL SSPRING_PRI,#sspr55,SSPRING_PRI,#sspr51 + WLWL SSPRING_PRI,#ssprXX,SSPRING_PRI,#sprshad52 + +sspr_trans_t ;(script table) + WL SSPRING_PRI,#sspr_trans_R + WL SSPRING_PRI,#sspr_trans_W + WL SSPRING_PRI,#sspr_trans_B + WL SSPRING_PRI,#sprshad_trans + +#ssprXX ;(script) + WL 1,#s_stop + .word 0 +#sspr11 ;(script) + WL 1,#s_sspr11 + .word 0 +#sspr12 ;(script) + WL 1,#s_sspr12 + .word 0 +#sspr13 ;(script) + WL 1,#s_sspr13 + .word 0 +#sspr14 ;(script) + WL 1,#s_sspr14 + .word 0 +#sspr15 ;(script) + WL 1,#s_sspr15 + .word 0 +#sspr16 ;(script) + WL 1,#s_sspr16 + .word 0 +#sspr21 ;(script) + WL 1,#s_sspr21 + .word 0 +#sspr22 ;(script) + WL 1,#s_sspr22 + .word 0 +#sspr23 ;(script) + WL 1,#s_sspr23 + .word 0 +#sspr24 ;(script) + WL 1,#s_sspr24 + .word 0 +#sspr25 ;(script) + WL 1,#s_sspr25 + .word 0 +#sspr26 ;(script) + WL 1,#s_sspr26 + .word 0 +#sspr31 ;(script) + WL 1,#s_sspr31 + .word 0 +#sspr32 ;(script) + WL 1,#s_sspr32 + .word 0 +#sspr33 ;(script) + WL 1,#s_sspr33 + .word 0 +#sspr34 ;(script) + WL 1,#s_sspr34 + .word 0 +#sspr35 ;(script) + WL 1,#s_sspr35 + .word 0 +#sspr36 ;(script) + WL 1,#s_sspr36 + .word 0 +#sspr41 ;(script) + WL 1,#s_sspr41 + .word 0 +#sspr42 ;(script) + WL 1,#s_sspr42 + .word 0 +#sspr43 ;(script) + WL 1,#s_sspr43 + .word 0 +#sspr44 ;(script) + WL 1,#s_sspr44 + .word 0 +#sspr45 ;(script) + WL 1,#s_sspr45 + .word 0 +#sspr46 ;(script) + WL 1,#s_sspr46 + .word 0 +#sspr51 ;(script) + WL 1,#s_sspr51 + .word 0 +#sspr52 ;(script) + WL 1,#s_sspr52 + .word 0 +#sspr53 ;(script) + WL 1,#s_sspr53 + .word 0 +#sspr54 ;(script) + WL 1,#s_sspr54 + .word 0 +#sspr55 ;(script) + WL 1,#s_sspr55 + .word 0 +#sspr56 ;(script) + WL 1,#s_sspr56 + .word 0 + +#sprshad11 ;(script) + WL 1,#s_sprshad11 + .word 0 +#sprshad12 ;(script) + WL 1,#s_sprshad12 + .word 0 +#sprshad13 ;(script) + WL 1,#s_sprshad13 + .word 0 +#sprshad14 ;(script) + WL 1,#s_sprshad14 + .word 0 +#sprshad15 ;(script) + WL 1,#s_sprshad15 + .word 0 +#sprshad21 ;(script) + WL 1,#s_sprshad21 + .word 0 +#sprshad22 ;(script) + WL 1,#s_sprshad22 + .word 0 +#sprshad23 ;(script) + WL 1,#s_sprshad23 + .word 0 +#sprshad24 ;(script) + WL 1,#s_sprshad24 + .word 0 +#sprshad25 ;(script) + WL 1,#s_sprshad25 + .word 0 +#sprshad31 ;(script) + WL 1,#s_sprshad31 + .word 0 +#sprshad32 ;(script) + WL 1,#s_sprshad32 + .word 0 +#sprshad33 ;(script) + WL 1,#s_sprshad33 + .word 0 +#sprshad34 ;(script) + WL 1,#s_sprshad34 + .word 0 +#sprshad35 ;(script) + WL 1,#s_sprshad35 + .word 0 +#sprshad41 ;(script) + WL 1,#s_sprshad41 + .word 0 +#sprshad42 ;(script) + WL 1,#s_sprshad42 + .word 0 +#sprshad43 ;(script) + WL 1,#s_sprshad43 + .word 0 +#sprshad44 ;(script) + WL 1,#s_sprshad44 + .word 0 +#sprshad45 ;(script) + WL 1,#s_sprshad45 + .word 0 +#sprshad51 ;(script) + WL 1,#s_sprshad51 + .word 0 +#sprshad52 ;(script) + WL 1,#s_sprshad52 + .word 0 +#sprshad53 ;(script) + WL 1,#s_sprshad53 + .word 0 +#sprshad54 ;(script) + WL 1,#s_sprshad54 + .word 0 +#sprshad55 ;(script) + WL 1,#s_sprshad55 + .word 0 + +#sspr_trans_R ;(script) + WL 1,#s_sspr_trans_R + WL RANI_GOTO,side_bounceio2_R + +#sspr_trans_W ;(script) + WL 1,#s_sspr_trans_W + WL RANI_GOTO,side_bounceio2_W + +#sspr_trans_B ;(script) + WL 2,#s_bncio4 + .word 0 + +#sprshad_trans ;(script) + WL 1,#s_sprshad_trans + WL 1,#s_stop_shadow + .word 0 + +#s_sspr11 ;(sequence) + WL 10,RPSS1_01 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr12 ;(sequence) + WL 10,RPSS1_02 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr13 ;(sequence) + WL 10,RPSS1_03 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr14 ;(sequence) + WL 10,RPSS1_04 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr15 ;(sequence) + WL 10,RPSS1_05 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr16 ;(sequence) + WL 10,RPSS1_06 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr21 ;(sequence) + WL 10,RPSS2_01 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr22 ;(sequence) + WL 10,RPSS2_02 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr23 ;(sequence) + WL 10,RPSS2_03 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr24 ;(sequence) + WL 10,RPSS2_04 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr25 ;(sequence) + WL 10,RPSS2_05 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr26 ;(sequence) + WL 10,RPSS2_06 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr31 ;(sequence) + WL 10,RPSS3_01 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr32 ;(sequence) + WL 10,RPSS3_02 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr33 ;(sequence) + WL 10,RPSS3_03 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr34 ;(sequence) + WL 10,RPSS3_04 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr35 ;(sequence) + WL 10,RPSS3_05 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr36 ;(sequence) + WL 10,RPSS3_06 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr41 ;(sequence) + WL 10,RPSS4_01 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr42 ;(sequence) + WL 10,RPSS4_02 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr43 ;(sequence) + WL 10,RPSS4_03 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr44 ;(sequence) + WL 10,RPSS4_04 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr45 ;(sequence) + WL 10,RPSS4_05 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr46 ;(sequence) + WL 10,RPSS4_06 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr51 ;(sequence) + WL 10,RPSS5_01 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr52 ;(sequence) + WL 10,RPSS5_02 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr53 ;(sequence) + WL 10,RPSS5_03 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr54 ;(sequence) + WL 10,RPSS5_04 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr55 ;(sequence) + WL 10,RPSS5_05 + WL RANI_GOTO,#s_stop + .word 0 +#s_sspr56 ;(sequence) + WL 10,RPSS5_06 + WL RANI_GOTO,#s_stop + .word 0 + +#s_sprshad11 ;(sequence) + WL 10,RCSH1_01 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad12 ;(sequence) + WL 10,RCSH1_02 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad13 ;(sequence) + WL 10,RCSH1_03 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad14 ;(sequence) + WL 10,RCSH1_04 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad15 ;(sequence) + WL 10,RCSH1_05 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad21 ;(sequence) + WL 10,RCSH2_01 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad22 ;(sequence) + WL 10,RCSH2_02 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad23 ;(sequence) + WL 10,RCSH2_03 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad24 ;(sequence) + WL 10,RCSH2_04 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad25 ;(sequence) + WL 10,RCSH2_05 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad31 ;(sequence) + WL 10,RCSH3_01 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad32 ;(sequence) + WL 10,RCSH3_02 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad33 ;(sequence) + WL 10,RCSH3_03 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad34 ;(sequence) + WL 10,RCSH3_04 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad35 ;(sequence) + WL 10,RCSH3_05 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad41 ;(sequence) + WL 10,RCSH4_01 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad42 ;(sequence) + WL 10,RCSH4_02 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad43 ;(sequence) + WL 10,RCSH4_03 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad44 ;(sequence) + WL 10,RCSH4_04 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad45 ;(sequence) + WL 10,RCSH4_05 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad51 ;(sequence) + WL 10,RCSH5_01 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad52 ;(sequence) + WL 10,RCSH5_02 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad53 ;(sequence) + WL 10,RCSH5_03 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad54 ;(sequence) + WL 10,RCSH5_04 + WL RANI_GOTO,#s_stop_shadow + .word 0 +#s_sprshad55 ;(sequence) + WL 10,RCSH5_05 + WL RANI_GOTO,#s_stop_shadow + .word 0 + +#s_sspr_trans_R ;(sequence) + WL 1,RPSBIN06 + WL 2,RPSBIN08 + WL 1,RPSBIN07 + WL 1,RPSBIN06 + WL 1,ROPE_S_R + WL 1,RPSBOU01 + WL 1,RPSBOU03 + WL 1,RPSBOU06 +#s_sspr_trans_W ;(sequence) + WL 1,RPSBOU04 + WL 1,RPSBOU03 + WL 1,RPSBOU02 + .word 0 + +#s_sprshad_trans ;(sequence) + WL 2,RBSH_02 + WL 2,RBSH_03 + WL 2,RBSH_04 + WL 2,RBSH_05 + WL 2,RBSH_06 + WL 2,RBSH_07 + WL 2,RBSH_01 + .word 0 + +#s_stop ;(sequence) - halt a side rope entirely + WL 1,ROPE_S_R + .word 0 + +#s_stop_shadow ;(sequence) - halt a side shadow entirely + WL 1,ROPSHAD + .word 0 + +**************************************** +* +* Side ropes, spring up and down +* + +dspr11_t ;(script table) + WLWL DSPRING_PRI,#dspr15,DSPRING_PRI,#dspr11 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr12_t ;(script table) + WLWL DSPRING_PRI,#dspr16,DSPRING_PRI,#dspr12 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr13_t ;(script table) + WLWL DSPRING_PRI,#dspr17,DSPRING_PRI,#dspr13 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr14_t ;(script table) + WLWL DSPRING_PRI,#dspr17,DSPRING_PRI,#dspr14 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr15_t ;(script table) + WLWL DSPRING_PRI,#dspr16,DSPRING_PRI,#dspr15 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr16_t ;(script table) + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dspr15 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad + +dspr21_t ;(script table) + WLWL DSPRING_PRI,#dspr25,DSPRING_PRI,#dspr21 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr22_t ;(script table) + WLWL DSPRING_PRI,#dspr26,DSPRING_PRI,#dspr22 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr23_t ;(script table) + WLWL DSPRING_PRI,#dspr27,DSPRING_PRI,#dspr23 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr24_t ;(script table) + WLWL DSPRING_PRI,#dspr27,DSPRING_PRI,#dspr24 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr25_t ;(script table) + WLWL DSPRING_PRI,#dspr26,DSPRING_PRI,#dspr25 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr26_t ;(script table) + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dspr25 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad + +dspr31_t ;(script table) + WLWL DSPRING_PRI,#dspr35,DSPRING_PRI,#dspr31 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr32_t ;(script table) + WLWL DSPRING_PRI,#dspr36,DSPRING_PRI,#dspr32 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr33_t ;(script table) + WLWL DSPRING_PRI,#dspr37,DSPRING_PRI,#dspr33 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr34_t ;(script table) + WLWL DSPRING_PRI,#dspr37,DSPRING_PRI,#dspr34 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr35_t ;(script table) + WLWL DSPRING_PRI,#dspr36,DSPRING_PRI,#dspr35 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr36_t ;(script table) + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dspr35 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad + +dspr41_t ;(script table) + WLWL DSPRING_PRI,#dspr45,DSPRING_PRI,#dspr41 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr42_t ;(script table) + WLWL DSPRING_PRI,#dspr46,DSPRING_PRI,#dspr42 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr43_t ;(script table) + WLWL DSPRING_PRI,#dspr47,DSPRING_PRI,#dspr43 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr44_t ;(script table) + WLWL DSPRING_PRI,#dspr47,DSPRING_PRI,#dspr44 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr45_t ;(script table) + WLWL DSPRING_PRI,#dspr46,DSPRING_PRI,#dspr45 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr46_t ;(script table) + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dspr45 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad + +dspr51_t ;(script table) + WLWL DSPRING_PRI,#dspr55,DSPRING_PRI,#dspr51 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr52_t ;(script table) + WLWL DSPRING_PRI,#dspr56,DSPRING_PRI,#dspr52 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr53_t ;(script table) + WLWL DSPRING_PRI,#dspr57,DSPRING_PRI,#dspr53 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr54_t ;(script table) + WLWL DSPRING_PRI,#dspr57,DSPRING_PRI,#dspr54 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr55_t ;(script table) + WLWL DSPRING_PRI,#dspr56,DSPRING_PRI,#dspr55 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad +dspr56_t ;(script table) + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dspr55 + WLWL DSPRING_PRI,#dsprXX,DSPRING_PRI,#dsprshad + +dspr_trans_t ;(script table) + WL DSPRING_PRI,#dspr_trans_R + WL DSPRING_PRI,#dspr_trans_W + WL DSPRING_PRI,#dspr_trans_B + WL DSPRING_PRI,#dsprshad + +#dsprshad ;(script) + WL 1,#s_dsprshad + .word 0 + +#dsprXX ;(script) + WL 1,#s_stop + .word 0 +#dspr11 ;(script) + WL 1,#s_dspr11 + .word 0 +#dspr12 ;(script) + WL 1,#s_dspr12 + .word 0 +#dspr13 ;(script) + WL 1,#s_dspr13 + .word 0 +#dspr14 ;(script) + WL 1,#s_dspr14 + .word 0 +#dspr15 ;(script) + WL 1,#s_dspr15 + .word 0 +#dspr16 ;(script) + WL 1,#s_dspr16 + .word 0 +#dspr17 ;(script) + WL 1,#s_dspr17 + .word 0 +#dspr21 ;(script) + WL 1,#s_dspr21 + .word 0 +#dspr22 ;(script) + WL 1,#s_dspr22 + .word 0 +#dspr23 ;(script) + WL 1,#s_dspr23 + .word 0 +#dspr24 ;(script) + WL 1,#s_dspr24 + .word 0 +#dspr25 ;(script) + WL 1,#s_dspr25 + .word 0 +#dspr26 ;(script) + WL 1,#s_dspr26 + .word 0 +#dspr27 ;(script) + WL 1,#s_dspr27 + .word 0 +#dspr31 ;(script) + WL 1,#s_dspr31 + .word 0 +#dspr32 ;(script) + WL 1,#s_dspr32 + .word 0 +#dspr33 ;(script) + WL 1,#s_dspr33 + .word 0 +#dspr34 ;(script) + WL 1,#s_dspr34 + .word 0 +#dspr35 ;(script) + WL 1,#s_dspr35 + .word 0 +#dspr36 ;(script) + WL 1,#s_dspr36 + .word 0 +#dspr37 ;(script) + WL 1,#s_dspr37 + .word 0 +#dspr41 ;(script) + WL 1,#s_dspr41 + .word 0 +#dspr42 ;(script) + WL 1,#s_dspr42 + .word 0 +#dspr43 ;(script) + WL 1,#s_dspr43 + .word 0 +#dspr44 ;(script) + WL 1,#s_dspr44 + .word 0 +#dspr45 ;(script) + WL 1,#s_dspr45 + .word 0 +#dspr46 ;(script) + WL 1,#s_dspr46 + .word 0 +#dspr47 ;(script) + WL 1,#s_dspr47 + .word 0 +#dspr51 ;(script) + WL 1,#s_dspr51 + .word 0 +#dspr52 ;(script) + WL 1,#s_dspr52 + .word 0 +#dspr53 ;(script) + WL 1,#s_dspr53 + .word 0 +#dspr54 ;(script) + WL 1,#s_dspr54 + .word 0 +#dspr55 ;(script) + WL 1,#s_dspr55 + .word 0 +#dspr56 ;(script) + WL 1,#s_dspr56 + .word 0 +#dspr57 ;(script) + WL 1,#s_dspr57 + .word 0 + +#dspr_trans_R ;(script) + WL 1,#s_dspr_trans_R + WL RANI_GOTO,side_bounceud2_R + +#dspr_trans_W ;(script) + WL 1,#s_dspr_trans_W + WL RANI_GOTO,side_bounceud2_W + +#dspr_trans_B ;(script) + WL 2,#s_bncio4 + .word 0 + +#s_dsprshad ;(seqence) + WL 1,ROPSHAD + .word 0 + +#s_dspr11 ;(sequence) + WL 1,RPDS1_01 + .word 0 +#s_dspr12 ;(sequence) + WL 1,RPDS1_02 + .word 0 +#s_dspr13 ;(sequence) + WL 1,RPDS1_03 + .word 0 +#s_dspr14 ;(sequence) + WL 1,RPDS1_04 + .word 0 +#s_dspr15 ;(sequence) + WL 1,RPDS1_05 + .word 0 +#s_dspr16 ;(sequence) + WL 1,RPDS1_06 + .word 0 +#s_dspr17 ;(sequence) + WL 1,RPDS1_07 + .word 0 +#s_dspr21 ;(sequence) + WL 1,RPDS2_01 + .word 0 +#s_dspr22 ;(sequence) + WL 1,RPDS2_02 + .word 0 +#s_dspr23 ;(sequence) + WL 1,RPDS2_03 + .word 0 +#s_dspr24 ;(sequence) + WL 1,RPDS2_04 + .word 0 +#s_dspr25 ;(sequence) + WL 1,RPDS2_05 + .word 0 +#s_dspr26 ;(sequence) + WL 1,RPDS2_06 + .word 0 +#s_dspr27 ;(sequence) + WL 1,RPDS2_07 + .word 0 +#s_dspr31 ;(sequence) + WL 1,RPDS3_01 + .word 0 +#s_dspr32 ;(sequence) + WL 1,RPDS3_02 + .word 0 +#s_dspr33 ;(sequence) + WL 1,RPDS3_03 + .word 0 +#s_dspr34 ;(sequence) + WL 1,RPDS3_04 + .word 0 +#s_dspr35 ;(sequence) + WL 1,RPDS3_05 + .word 0 +#s_dspr36 ;(sequence) + WL 1,RPDS3_06 + .word 0 +#s_dspr37 ;(sequence) + WL 1,RPDS3_07 + .word 0 +#s_dspr41 ;(sequence) + WL 1,RPDS4_01 + .word 0 +#s_dspr42 ;(sequence) + WL 1,RPDS4_02 + .word 0 +#s_dspr43 ;(sequence) + WL 1,RPDS4_03 + .word 0 +#s_dspr44 ;(sequence) + WL 1,RPDS4_04 + .word 0 +#s_dspr45 ;(sequence) + WL 1,RPDS4_05 + .word 0 +#s_dspr46 ;(sequence) + WL 1,RPDS4_06 + .word 0 +#s_dspr47 ;(sequence) + WL 1,RPDS4_07 + .word 0 +#s_dspr51 ;(sequence) + WL 1,RPDS5_01 + .word 0 +#s_dspr52 ;(sequence) + WL 1,RPDS5_02 + .word 0 +#s_dspr53 ;(sequence) + WL 1,RPDS5_03 + .word 0 +#s_dspr54 ;(sequence) + WL 1,RPDS5_04 + .word 0 +#s_dspr55 ;(sequence) + WL 1,RPDS5_05 + .word 0 +#s_dspr56 ;(sequence) + WL 1,RPDS5_06 + .word 0 +#s_dspr57 ;(sequence) + WL 1,RPDS5_07 + .word 0 + +#s_dspr_trans_R ;(sequence) + WL 1,RPSBUP05 +#s_dspr_trans_W ;(sequence) + WL 1,RPSBUP02 + WL 1,RPSBDN01 + WL 1,RPSBDN03 + WL 1,RPSBDN05 + WL 1,RPSBDN04 + WL 1,RPSBDN03 + WL 1,RPSBDN02 + .word 0 + +SIDEROPE_START +ROPE_S_R .long ROPE_S_Ra,ROPE_S_Rb +ROPE_S_W .long ROPE_S_Wa,ROPE_S_Wb +ROPE_S_B .long ROPE_S_Ba,ROPE_S_Bb +RPSBUP01 .long RPSBUP01a,RPSBUP01b +RPSBUP02 .long RPSBUP02a,RPSBUP02b +RPSBUP03 .long RPSBUP03a,RPSBUP03b +RPSBUP04 .long RPSBUP04a,RPSBUP04b +RPSBUP05 .long RPSBUP05a,RPSBUP05b +RPSBUP06 .long RPSBUP06a,RPSBUP06b +RPSBDN01 .long RPSBDN01a,RPSBDN01b +RPSBDN02 .long RPSBDN02a,RPSBDN02b +RPSBDN03 .long RPSBDN03a,RPSBDN03b +RPSBDN04 .long RPSBDN04a,RPSBDN04b +RPSBDN05 .long RPSBDN05a,RPSBDN05b +RPSBDN06 .long RPSBDN06a,RPSBDN06b +RPSBIN01 .long RPSBIN01a,RPSBIN01b +RPSBIN02 .long RPSBIN02a,RPSBIN02b +RPSBIN03 .long RPSBIN03a,RPSBIN03b +RPSBIN04 .long RPSBIN04a,RPSBIN04b +RPSBIN05 .long RPSBIN05a,RPSBIN05b +RPSBIN06 .long RPSBIN06a,RPSBIN06b +RPSBIN07 .long RPSBIN07a,RPSBIN07b +RPSBIN08 .long RPSBIN08a,RPSBIN08b +RPSBOU01 .long RPSBOU01a,RPSBOU01b +RPSBOU02 .long RPSBOU02a,RPSBOU02b +RPSBOU03 .long RPSBOU03a,RPSBOU03b +RPSBOU04 .long RPSBOU04a,RPSBOU04b +RPSBOU05 .long RPSBOU05a,RPSBOU05b +RPSBOU06 .long RPSBOU06a,RPSBOU06b +RPSBOU07 .long RPSBOU07a,RPSBOU07b +RPSBOU08 .long RPSBOU08a,RPSBOU08b +RPSS1_01 .long RPSS1_01a,RPSS1_01b +RPSS1_02 .long RPSS1_02a,RPSS1_02b +RPSS1_03 .long RPSS1_03a,RPSS1_03b +RPSS1_04 .long RPSS1_04a,RPSS1_04b +RPSS1_05 .long RPSS1_05a,RPSS1_05b +RPSS1_06 .long RPSS1_06a,RPSS1_06b +RPSS2_01 .long RPSS2_01a,RPSS2_01b +RPSS2_02 .long RPSS2_02a,RPSS2_02b +RPSS2_03 .long RPSS2_03a,RPSS2_03b +RPSS2_04 .long RPSS2_04a,RPSS2_04b +RPSS2_05 .long RPSS2_05a,RPSS2_05b +RPSS2_06 .long RPSS2_06a,RPSS2_06b +RPSS3_01 .long RPSS3_01a,RPSS3_01b +RPSS3_02 .long RPSS3_02a,RPSS3_02b +RPSS3_03 .long RPSS3_03a,RPSS3_03b +RPSS3_04 .long RPSS3_04a,RPSS3_04b +RPSS3_05 .long RPSS3_05a,RPSS3_05b +RPSS3_06 .long RPSS3_06a,RPSS3_06b +RPSS4_01 .long RPSS4_01a,RPSS4_01b +RPSS4_02 .long RPSS4_02a,RPSS4_02b +RPSS4_03 .long RPSS4_03a,RPSS4_03b +RPSS4_04 .long RPSS4_04a,RPSS4_04b +RPSS4_05 .long RPSS4_05a,RPSS4_05b +RPSS4_06 .long RPSS4_06a,RPSS4_06b +RPSS5_01 .long RPSS5_01a,RPSS5_01b +RPSS5_02 .long RPSS5_02a,RPSS5_02b +RPSS5_03 .long RPSS5_03a,RPSS5_03b +RPSS5_04 .long RPSS5_04a,RPSS5_04b +RPSS5_05 .long RPSS5_05a,RPSS5_05b +RPSS5_06 .long RPSS5_06a,RPSS5_06b +RPDS1_01 .long RPDS1_01a,RPDS1_01b +RPDS1_02 .long RPDS1_02a,RPDS1_02b +RPDS1_03 .long RPDS1_03a,RPDS1_03b +RPDS1_04 .long RPDS1_04a,RPDS1_04b +RPDS1_05 .long RPDS1_05a,RPDS1_05b +RPDS1_06 .long RPDS1_06a,RPDS1_06b +RPDS1_07 .long RPDS1_07a,RPDS1_07b +RPDS1_08 .long RPDS1_08a,RPDS1_08b +RPDS2_01 .long RPDS2_01a,RPDS2_01b +RPDS2_02 .long RPDS2_02a,RPDS2_02b +RPDS2_03 .long RPDS2_03a,RPDS2_03b +RPDS2_04 .long RPDS2_04a,RPDS2_04b +RPDS2_05 .long RPDS2_05a,RPDS2_05b +RPDS2_06 .long RPDS2_06a,RPDS2_06b +RPDS2_07 .long RPDS2_07a,RPDS2_07b +RPDS2_08 .long RPDS2_08a,RPDS2_08b +RPDS3_01 .long RPDS3_01a,RPDS3_01b +RPDS3_02 .long RPDS3_02a,RPDS3_02b +RPDS3_03 .long RPDS3_03a,RPDS3_03b +RPDS3_04 .long RPDS3_04a,RPDS3_04b +RPDS3_05 .long RPDS3_05a,RPDS3_05b +RPDS3_06 .long RPDS3_06a,RPDS3_06b +RPDS3_07 .long RPDS3_07a,RPDS3_07b +RPDS3_08 .long RPDS3_08a,RPDS3_08b +RPDS4_01 .long RPDS4_01a,RPDS4_01b +RPDS4_02 .long RPDS4_02a,RPDS4_02b +RPDS4_03 .long RPDS4_03a,RPDS4_03b +RPDS4_04 .long RPDS4_04a,RPDS4_04b +RPDS4_05 .long RPDS4_05a,RPDS4_05b +RPDS4_06 .long RPDS4_06a,RPDS4_06b +RPDS4_07 .long RPDS4_07a,RPDS4_07b +RPDS4_08 .long RPDS4_08a,RPDS4_08b +RPDS5_01 .long RPDS5_01a,RPDS5_01b +RPDS5_02 .long RPDS5_02a,RPDS5_02b +RPDS5_03 .long RPDS5_03a,RPDS5_03b +RPDS5_04 .long RPDS5_04a,RPDS5_04b +RPDS5_05 .long RPDS5_05a,RPDS5_05b +RPDS5_06 .long RPDS5_06a,RPDS5_06b +RPDS5_07 .long RPDS5_07a,RPDS5_07b +RPDS5_08 .long RPDS5_08a,RPDS5_08b + +ROPSHAD .long ROPSHADA,ROPSHADB +RCSH1_01 .long RCSH1_01A,RCSH1_01B +RCSH1_02 .long RCSH1_02A,RCSH1_02B +RCSH1_03 .long RCSH1_03A,RCSH1_03B +RCSH1_04 .long RCSH1_04A,RCSH1_04B +RCSH1_05 .long RCSH1_05A,RCSH1_05B +RCSH2_01 .long RCSH2_01A,RCSH2_01B +RCSH2_02 .long RCSH2_02A,RCSH2_02B +RCSH2_03 .long RCSH2_03A,RCSH2_03B +RCSH2_04 .long RCSH2_04A,RCSH2_04B +RCSH2_05 .long RCSH2_05A,RCSH2_05B +RCSH3_01 .long RCSH3_01A,RCSH3_01B +RCSH3_02 .long RCSH3_02A,RCSH3_02B +RCSH3_03 .long RCSH3_03A,RCSH3_03B +RCSH3_04 .long RCSH3_04A,RCSH3_04B +RCSH3_05 .long RCSH3_05A,RCSH3_05B +RCSH4_01 .long RCSH4_01A,RCSH4_01B +RCSH4_02 .long RCSH4_02A,RCSH4_02B +RCSH4_03 .long RCSH4_03A,RCSH4_03B +RCSH4_04 .long RCSH4_04A,RCSH4_04B +RCSH4_05 .long RCSH4_05A,RCSH4_05B +RCSH5_01 .long RCSH5_01A,RCSH5_01B +RCSH5_02 .long RCSH5_02A,RCSH5_02B +RCSH5_03 .long RCSH5_03A,RCSH5_03B +RCSH5_04 .long RCSH5_04A,RCSH5_04B +RCSH5_05 .long RCSH5_05A,RCSH5_05B +RBSH_01 .long RBSH_01A,RBSH_01B +RBSH_02 .long RBSH_02A,RBSH_02B +RBSH_03 .long RBSH_03A,RBSH_03B +RBSH_04 .long RBSH_04A,RBSH_04B +RBSH_05 .long RBSH_05A,RBSH_05B +RBSH_06 .long RBSH_06A,RBSH_06B +RBSH_07 .long RBSH_07A,RBSH_07B + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/ROPESIMG.ASM b/ROPESIMG.ASM new file mode 100755 index 0000000..6958ae7 --- /dev/null +++ b/ROPESIMG.ASM @@ -0,0 +1,12 @@ + .FILE "ropesimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include ropesimg.glo + + .include ropesimg.tbl + + \ No newline at end of file diff --git a/RUN.BAT b/RUN.BAT new file mode 100755 index 0000000..7be52c0 --- /dev/null +++ b/RUN.BAT @@ -0,0 +1 @@ +TV WRESTLE %1 diff --git a/RZRSEQ1.ASM b/RZRSEQ1.ASM new file mode 100755 index 0000000..2a5ea59 --- /dev/null +++ b/RZRSEQ1.ASM @@ -0,0 +1,626 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 1/25/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "rzrseq1.asm" + .title "Razor Ramon animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "razorimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF MAYBE_BOUNCE_ROPE + .ref SMALL_RUN + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +TSEC equ 53 + +#***************************************************************************** +* +* STANDS + + SUBR rzr_zip_anim + WL TSEC*60,R2ST2C+FR3 + .word 0 + + SUBR rzr_stand2_anim + SUBR rzr_stand8_anim + + WL 7,R2ST2C+FR3 + WL 6,R2ST2C+FR5 + WL 6,R2ST2C+FR7 + WL 6,R2ST2C+FR9 + WL 6,R2ST2C+FR7 + WL 7,R2ST2C+FR5 + .word ANI_REPEAT + + + SUBR rzr_stand4_anim + SUBR rzr_stand6_anim + + WL 7,R4ST4G+FR1 + WL 6,R4ST4G+FR3 + WL 6,R4ST4G+FR5 + WL 6,R4ST4G+FR7 + WL 6,R4ST4G+FR5 + WL 7,R4ST4G+FR3 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR rzr_torso2_anim + SUBR rzr_torso8_anim + WL 4,R2TW2Z+FR1 + WL 4,R2TW2Z+FR2 + WL 4,R2TW2Z+FR3 + WL 4,R2TW2Z+FR4 + WL 4,R2TW2Z+FR3 + WL 4,R2TW2Z+FR2 + .word ANI_REPEAT + + + SUBR rzr_torso4_anim + SUBR rzr_torso6_anim + WL 4,R4TW4Z+FR1 + WL 4,R4TW4Z+FR2 + WL 4,R4TW4Z+FR3 + WL 4,R4TW4Z+FR4 + WL 4,R4TW4Z+FR3 + WL 4,R4TW4Z+FR2 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR rzr_walk1_f2_anim + WL 2,R2WL1A+FR1 + WL 2,R2WL1A+FR2 + WL 2,R2WL1A+FR3 + WL 2,R2WL1A+FR4 + WL 2,R2WL1A+FR5 + WL 2,R2WL1A+FR6 + WL 2,R2WL1A+FR7 + WL 2,R2WL1A+FR8 + WL 2,R2WL1A+FR9 + WL 2,R2WL1A+FR10 + WL 2,R2WL1A+FR11 + WL 2,R2WL1A+FR12 + WL 2,R2WL1A+FR13 + WL 2,R2WL1A+FR14 + WL 2,R2WL1A+FR15 + WL 2,R2WL1A+FR16 + WL 2,R2WL1A+FR17 + WL 2,R2WL1A+FR18 + WL 2,R2WL1A+FR19 + WL 2,R2WL1A+FR20 + .word ANI_REPEAT + + SUBR rzr_walk2_f2_anim + WL 2,R2WL2A+FR1 + WL 2,R2WL2A+FR2 + WL 2,R2WL2A+FR3 + WL 2,R2WL2A+FR4 + WL 2,R2WL2A+FR5 + WL 2,R2WL2A+FR6 + WL 2,R2WL2A+FR7 + WL 2,R2WL2A+FR8 + WL 2,R2WL2A+FR9 + WL 2,R2WL2A+FR10 + WL 2,R2WL2A+FR11 + WL 2,R2WL2A+FR12 + WL 2,R2WL2A+FR13 + WL 2,R2WL2A+FR14 + WL 2,R2WL2A+FR15 + WL 2,R2WL2A+FR16 + WL 2,R2WL2A+FR17 + WL 2,R2WL2A+FR18 + WL 2,R2WL2A+FR19 + WL 2,R2WL2A+FR20 + .word ANI_REPEAT + + SUBR rzr_walk4_f2_anim + WL 2,R2WL4B+FR1 + WL 2,R2WL4B+FR2 + WL 2,R2WL4B+FR3 + WL 2,R2WL4B+FR4 + WL 2,R2WL4B+FR5 + WL 2,R2WL4B+FR6 + WL 2,R2WL4B+FR7 + WL 2,R2WL4B+FR8 + WL 2,R2WL4B+FR9 + WL 2,R2WL4B+FR10 + WL 2,R2WL4B+FR11 + WL 2,R2WL4B+FR12 + WL 2,R2WL4B+FR13 + WL 2,R2WL4B+FR14 + WL 2,R2WL4B+FR15 + WL 2,R2WL4B+FR16 + WL 2,R2WL4B+FR17 + WL 2,R2WL4B+FR18 + WL 2,R2WL4B+FR19 + WL 2,R2WL4B+FR20 + WL 2,R2WL4B+FR21 + .word ANI_REPEAT + + SUBR rzr_walk5_f2_anim + WL 2,R2WL1A+FR20 + WL 2,R2WL1A+FR19 + WL 2,R2WL1A+FR18 + WL 2,R2WL1A+FR17 + WL 2,R2WL1A+FR16 + WL 2,R2WL1A+FR15 + WL 2,R2WL1A+FR14 + WL 2,R2WL1A+FR13 + WL 2,R2WL1A+FR12 + WL 2,R2WL1A+FR11 + WL 2,R2WL1A+FR10 + WL 2,R2WL1A+FR9 + WL 2,R2WL1A+FR8 + WL 2,R2WL1A+FR7 + WL 2,R2WL1A+FR6 + WL 2,R2WL1A+FR5 + WL 2,R2WL1A+FR4 + WL 2,R2WL1A+FR3 + WL 2,R2WL1A+FR2 + WL 2,R2WL1A+FR1 + .word ANI_REPEAT + + SUBR rzr_walk6_f2_anim + WL 2,R2WL2A+FR20 + WL 2,R2WL2A+FR19 + WL 2,R2WL2A+FR18 + WL 2,R2WL2A+FR17 + WL 2,R2WL2A+FR16 + WL 2,R2WL2A+FR15 + WL 2,R2WL2A+FR14 + WL 2,R2WL2A+FR13 + WL 2,R2WL2A+FR12 + WL 2,R2WL2A+FR11 + WL 2,R2WL2A+FR10 + WL 2,R2WL2A+FR9 + WL 2,R2WL2A+FR8 + WL 2,R2WL2A+FR7 + WL 2,R2WL2A+FR6 + WL 2,R2WL2A+FR5 + WL 2,R2WL2A+FR4 + WL 2,R2WL2A+FR3 + WL 2,R2WL2A+FR2 + WL 2,R2WL2A+FR1 + .word ANI_REPEAT + + + SUBR rzr_walk8_f2_anim + WL 2,R2WL4B+FR21 + WL 2,R2WL4B+FR20 + WL 2,R2WL4B+FR19 + WL 2,R2WL4B+FR18 + WL 2,R2WL4B+FR17 + WL 2,R2WL4B+FR16 + WL 2,R2WL4B+FR15 + WL 2,R2WL4B+FR14 + WL 2,R2WL4B+FR13 + WL 2,R2WL4B+FR12 + WL 2,R2WL4B+FR11 + WL 2,R2WL4B+FR10 + WL 2,R2WL4B+FR9 + WL 2,R2WL4B+FR8 + WL 2,R2WL4B+FR7 + WL 2,R2WL4B+FR6 + WL 2,R2WL4B+FR5 + WL 2,R2WL4B+FR4 + WL 2,R2WL4B+FR3 + WL 2,R2WL4B+FR2 + WL 2,R2WL4B+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR rzr_walk1_f4_anim + WL 2,R4WL5A+FR18 + WL 2,R4WL5A+FR17 + WL 2,R4WL5A+FR16 + WL 2,R4WL5A+FR15 + WL 2,R4WL5A+FR14 + WL 2,R4WL5A+FR13 + WL 2,R4WL5A+FR12 + WL 2,R4WL5A+FR11 + WL 2,R4WL5A+FR10 + WL 2,R4WL5A+FR9 + WL 2,R4WL5A+FR8 + WL 2,R4WL5A+FR7 + WL 2,R4WL5A+FR6 + WL 2,R4WL5A+FR5 + WL 2,R4WL5A+FR4 + WL 2,R4WL5A+FR3 + WL 2,R4WL5A+FR2 + WL 2,R4WL5A+FR1 + .word ANI_REPEAT + + SUBR rzr_walk2_f4_anim + WL 2,R4WL2A+FR1 + WL 2,R4WL2A+FR2 + WL 2,R4WL2A+FR3 + WL 2,R4WL2A+FR4 + WL 2,R4WL2A+FR5 + WL 2,R4WL2A+FR6 + WL 2,R4WL2A+FR7 + WL 2,R4WL2A+FR8 + WL 2,R4WL2A+FR9 + WL 2,R4WL2A+FR10 + WL 2,R4WL2A+FR11 + WL 2,R4WL2A+FR12 + WL 2,R4WL2A+FR13 + WL 2,R4WL2A+FR14 + WL 2,R4WL2A+FR15 + WL 2,R4WL2A+FR16 + WL 2,R4WL2A+FR17 + WL 2,R4WL2A+FR18 + WL 2,R4WL2A+FR19 + WL 2,R4WL2A+FR20 + .word ANI_REPEAT + + SUBR rzr_walk4_f4_anim + WL 2,R4WL4A+FR1 + WL 2,R4WL4A+FR2 + WL 2,R4WL4A+FR3 + WL 2,R4WL4A+FR4 + WL 2,R4WL4A+FR5 + WL 2,R4WL4A+FR6 + WL 2,R4WL4A+FR7 + WL 2,R4WL4A+FR8 + WL 2,R4WL4A+FR9 + WL 2,R4WL4A+FR10 + WL 2,R4WL4A+FR11 + WL 2,R4WL4A+FR12 + WL 2,R4WL4A+FR13 + WL 2,R4WL4A+FR14 + WL 2,R4WL4A+FR15 + WL 2,R4WL4A+FR16 + WL 2,R4WL4A+FR17 + WL 2,R4WL4A+FR18 + .word ANI_REPEAT + + SUBR rzr_walk5_f4_anim + WL 2,R4WL5A+FR1 + WL 2,R4WL5A+FR2 + WL 2,R4WL5A+FR3 + WL 2,R4WL5A+FR4 + WL 2,R4WL5A+FR5 + WL 2,R4WL5A+FR6 + WL 2,R4WL5A+FR7 + WL 2,R4WL5A+FR8 + WL 2,R4WL5A+FR9 + WL 2,R4WL5A+FR10 + WL 2,R4WL5A+FR11 + WL 2,R4WL5A+FR12 + WL 2,R4WL5A+FR13 + WL 2,R4WL5A+FR14 + WL 2,R4WL5A+FR15 + WL 2,R4WL5A+FR16 + WL 2,R4WL5A+FR17 + WL 2,R4WL5A+FR18 + .word ANI_REPEAT + + SUBR rzr_walk6_f4_anim + WL 2,R4WL2A+FR20 + WL 2,R4WL2A+FR19 + WL 2,R4WL2A+FR18 + WL 2,R4WL2A+FR17 + WL 2,R4WL2A+FR16 + WL 2,R4WL2A+FR15 + WL 2,R4WL2A+FR14 + WL 2,R4WL2A+FR13 + WL 2,R4WL2A+FR12 + WL 2,R4WL2A+FR11 + WL 2,R4WL2A+FR10 + WL 2,R4WL2A+FR9 + WL 2,R4WL2A+FR8 + WL 2,R4WL2A+FR7 + WL 2,R4WL2A+FR6 + WL 2,R4WL2A+FR5 + WL 2,R4WL2A+FR4 + WL 2,R4WL2A+FR3 + WL 2,R4WL2A+FR2 + WL 2,R4WL2A+FR1 + .word ANI_REPEAT + + SUBR rzr_walk8_f4_anim + WL 2,R4WL4A+FR18 + WL 2,R4WL4A+FR17 + WL 2,R4WL4A+FR16 + WL 2,R4WL4A+FR15 + WL 2,R4WL4A+FR14 + WL 2,R4WL4A+FR13 + WL 2,R4WL4A+FR12 + WL 2,R4WL4A+FR11 + WL 2,R4WL4A+FR10 + WL 2,R4WL4A+FR9 + WL 2,R4WL4A+FR8 + WL 2,R4WL4A+FR7 + WL 2,R4WL4A+FR6 + WL 2,R4WL4A+FR5 + WL 2,R4WL4A+FR4 + WL 2,R4WL4A+FR3 + WL 2,R4WL4A+FR2 + WL 2,R4WL4A+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* TURNS (STANDS) + + + SUBR rzr_2_to_4_turn_anim + SUBR rzr_8_to_6_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TT5Z+FR2 + WL 3,R1TT5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_2_turn_anim + SUBR rzr_6_to_8_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TT5Z+FR3 + WL 3,R1TT5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_6_turn_anim + SUBR rzr_6_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TT5Z+FR4 + .word ANI_XFLIP + WL 3,R1TT5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_to_8_turn_anim + SUBR rzr_8_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TT5Z+FR1 + .word ANI_XFLIP + WL 3,R1TT5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_8_turn_anim + SUBR rzr_6_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TT5Z+FR3 ;3.5 + WL 3,R1TT5Z+FR2 ;2.5 + WL 3,R1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 3,R1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_to_6_turn_anim + SUBR rzr_8_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TT5Z+FR2 ;2.5 + WL 3,R1TT5Z+FR3 ;3.5 + WL 3,R1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 3,R1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + + SUBR rzr_2_to_4_turn2_anim + SUBR rzr_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TR5Z+FR2 + .word ANI_SETFACING + WL 3,R1TR5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_2_turn2_anim + SUBR rzr_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TR5Z+FR3 + .word ANI_SETFACING + WL 3,R1TR5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_6_turn2_anim + SUBR rzr_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TR5Z+FR4 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,R1TR5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_to_8_turn2_anim + SUBR rzr_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TR5Z+FR1 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,R1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_to_8_turn2_anim + SUBR rzr_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,R1TR5Z+FR4 ;4.5 + WL 3,R1TR5Z+FR3 ;3.5 + .word ANI_SETFACING + WL 3,R1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_to_6_turn2_anim + SUBR rzr_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,R1TR5Z+FR2 ;2.5 + .word ANI_SETFACING + WL 3,R1TR5Z+FR3 ;3.5 + WL 3,R1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,R1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR rzr_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR rzr_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + +#lp1 + WL ANI_CODE,SMALL_RUN + WL 2,R3RN3D+FR1 + WL 3,R3RN3D+FR2 + WL 2,R3RN3D+FR3 + WL 3,R3RN3D+FR4 + WL 2,R3RN3D+FR5 +#run2 + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h + WL 3,R3RN3D+FR6 + WL 2,R3RN3D+FR7 + WL ANI_CODE,SMALL_RUN + WL 3,R3RN3D+FR8 + WL 2,R3RN3D+FR9 + WL 3,R3RN3D+FR10 + WL 2,R3RN3D+FR11 + WL 3,R3RN3D+FR12 + WL 2,R3RN3D+FR13 + WL 3,R3RN3D+FR14 + + WL ANI_GOTO,#lp1 + + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR rzr_bounce_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + .word ANI_ZEROVELS + + .ref fix_bnc_flip + WL ANI_CODE,fix_bnc_flip + WL ANI_CODE,MAYBE_BOUNCE_ROPE + + WL 2,R4BO3Z+FR1 + .word ANI_BOUNCEROPE,0 + WL 1,R4BO3Z+FR1 + + WL 3,R4BO3Z+FR2 + .word ANI_BOUNCEROPE,1 + + WL 3,R4BO3Z+FR3 + + WL ANI_CODE,SMALL_RUN + + WL 2,R4BO3Z+FR4 + .word ANI_BOUNCEROPE,2 + WL 1,R4BO3Z+FR4 + + .word ANI_ZEROVELS + + WL 2,R4BO3Z+FR5 + .word ANI_BOUNCEROPE,3 + WL 1,R4BO3Z+FR5 + + WL 2,R4BO3Z+FR6 + .word ANI_BOUNCEROPE,4 + WL 1,R4BO3Z+FR6 + + WL 3,R4BO3Z+FR7 + .word ANI_BOUNCEROPE,0 + WL 3,R4BO3Z+FR8 + + .word ANI_BOUNCEROPE,-1 + + WL 3,R4BO3Z+FR9 + + WL ANI_CODE,SMALL_RUN + + WL 3,R4BO3Z+FR10 + + .word ANI_OFFSET,15,0,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/RZRSEQ2.ASM b/RZRSEQ2.ASM new file mode 100755 index 0000000..6c8ad8b --- /dev/null +++ b/RZRSEQ2.ASM @@ -0,0 +1,3384 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 2/1/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "rzrseq2.asm" + .title "Razor Ramon animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "display.equ" + .include "ring.equ" + + .include "razorimg.h" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;BRET + .ref H3RN3A,H4YR3A + + ;BAM BAM + .ref B3RN3A,B4YR3A + + ;DOINK + .ref D3RN3B,D4YR3B + + ;LEX + .ref L3RN3B,L4YR3B + + ;RAZOR + .ref rzr_facedown_getup_anim,rzr_faceup_getup_anim + .ref rzr_faceup_getup2_anim + + ;SHAWN + .ref S3RN3A,S4YR3A + + ;TAKER + .ref U3RN3A,U4YR3B + + ;YOKO + .ref Y3RN3C,Y4YR3A + + ;MISC + .ref start_run_anim,SET_DIR_FACE,start_run_flung,CALL_MISSES + .ref ckzpos,HIT_THE_MAT,SMALL_BOUNCE,win_announce + .ref grnd_hit,no_bk_xvel,check_xvel,hit_nearest + .ref DO_OTHERNONO,DO_COMBO_MESS,FIND_AND_KILL_ENDLESS + .ref DO_CROWD_CHEER,choose_2or4,am_I_dead,DO_GRUNT + .ref rzr_combo_pile_driver_anim,set_tbukl_confine + .ref rzr_combo_rugshake_anim,set_tbukl_airmode + .ref rzr_combo_hiptoss_anim,check_raisearm_bit + .ref CALL_ANI_AVERAGE_MOVE + .ref CALL_OTHER_AVERAGE + .ref MOVE_NAME_ANNC + + .ref skick_delay + +#***************************************************************************** +* +* NORMAL #2 PUNCH + + SUBR rzr_2_punch_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R2PU3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R2PU3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R2PU3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,6 + + WL 1,R2PU3A+FR2 + WL 2,R2PU3A+FR3 + + .word ANI_ATTACK_ON,AMODE_PUNCH,23,95,56,11 ;mode,x,y,w,h + WL 3,R2PU3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit +;this looks and sounds bogus ! + WL ANI_SET_YVEL,38000h +#no_hit + + WL 2,R2PU3A+FR4 + WL 2,R2PU3A+FR5 + WL 2,R2PU3A+FR6 + WL 2,R2PU3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,R2PU3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +***************************************************************************** + + SUBR rzr_combo_punch_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .WORD ANI_CLEAR_COMBO + + WL 2,R2PU3A+FR1 + + .word ANI_STARTATTACK,AT_PUNCH,6 + + WL 2,R2PU3A+FR2 + WL 2,R2PU3A+FR3 + + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON,AMODE_PUNCH,23,35,76,61 ;mode,x,y,w,h + WL 2,R2PU3A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit2c + WL ANI_IFBLOCKED,#no_hit2c + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,18000h + WLLL ANI_SETOPPVELS,0,10000h,0h ;x,y,z vels + + WL 2,R2PU3A+FR4 + WL 2,R2PU3A+FR5 + WL 2,R2PU3A+FR6 + WL 2,R2PU3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,R2PU3A+FR8 + + WL 2,R4PU3A+FR1 + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 2,R4PU3A+FR2 + WL 2,R4PU3A+FR3 + + .word ANI_ATTACK_ON,AMODE_PUNCH,23,35,76,61 ;mode,x,y,w,h + WL 2,R4PU3A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit4c + WL ANI_IFBLOCKED,#no_hit4c + + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,18000h + WLLL ANI_SETOPPVELS,0,10000h,0h ;x,y,z vels + + WL 2,R4PU3A+FR4 + WL 2,R4PU3A+FR5 + WL 2,R4PU3A+FR6 + WL 2,R4PU3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4PU3A+FR8 + + .word ANI_SET_RPTCOUNT,2 ;5 times +#punch_loop_c + .word ANI_CLR_BUTCOUNT + + WL 2,R2PU3A+FR1 + + .word ANI_STARTATTACK,AT_PUNCH,6 + + WL 1,R2PU3A+FR2 + WL 1,R2PU3A+FR3 + + .word ANI_ATTACK_ON,AMODE_PUNCH,23,35,76,61 ;mode,x,y,w,h + WL 1,R2PU3A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit2c + WL ANI_IFBLOCKED,#no_hit2c + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,18000h + WLLL ANI_SETOPPVELS,0,10000h,0h ;x,y,z vels + + WL 1,R2PU3A+FR5 + WL 1,R2PU3A+FR6 + WL 1,R2PU3A+FR7 + + .word ANI_ZEROVELS + + WL 1,R2PU3A+FR8 + + WL 2,R4PU3A+FR1 + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 1,R4PU3A+FR2 + WL 1,R4PU3A+FR3 + + .word ANI_ATTACK_ON,AMODE_PUNCH,23,35,76,61 ;mode,x,y,w,h + WL 1,R4PU3A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit4c + WL ANI_IFBLOCKED,#no_hit4c + + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,18000h + WLLL ANI_SETOPPVELS,0,10000h,0h ;x,y,z vels + +; WL 1,R4PU3A+FR4 + WL 1,R4PU3A+FR5 + WL 1,R4PU3A+FR6 + WL 1,R4PU3A+FR7 + +; .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 1,R4PU3A+FR8 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#punch_loop_c + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,rzr_combo_knee_fall_anim + +#NEXT_CHECK_2 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK_3 + WL ANI_CHANGEANIM,rzr_combo_flying_kick_anim + +#NEXT_CHECK_3 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit_move + WL ANI_CHANGEANIM,rzr_combo_super_kick_anim + +#exit_move + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit2c + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,R2PU3A+FR4 + WL 3,R2PU3A+FR5 + WL 3,R2PU3A+FR6 + WL 3,R2PU3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit4c + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,R4PU3A+FR4 + WL 3,R4PU3A+FR5 + WL 3,R4PU3A+FR6 + WL 3,R4PU3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#************ +* +* NORMAL #4 PUNCH + + SUBR rzr_4_punch_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4PU3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4PU3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4PU3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 1,R4PU3A+FR2 + WL 2,R4PU3A+FR3 + + .word ANI_ATTACK_ON,AMODE_PUNCH,23,95,56,11 ;mode,x,y,w,h + WL 3,R4PU3A+FR4 + .word ANI_ATTACK_OFF + + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + + WL 2,R4PU3A+FR4 + WL 2,R4PU3A+FR5 + WL 2,R4PU3A+FR6 + WL 2,R4PU3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,R4PU3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 pummel - MK style + + SUBR rzr_4_pummel_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 1,R1TT5Z+FR3 + WL 1,R1TT5Z+FR2 + + SUBR rzr_2_pummel_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,6 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 05h,999,4ah,50,90000h,TGT_HEAD,65,90,10 +; WL ANI_SET_YVEL,0h + + WL 2,R2PU3A+FR1 +#rpt + .word ANI_CLR_BUTCOUNT + WL 2,R2PU3A+FR2 + WL 2,R2PU3A+FR3 + .word ANI_ATTACK_ON,AMODE_PUNCH2,32,87,49,16 ;mode,x,y,w,h + WL 2,R2PU3A+FR4 + .word ANI_ATTACK_OFF + WL 2,R2PU3A+FR5 + WL 2,R2PU3A+FR6 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex2 + .word ANI_CLR_BUTCOUNT + WL 2,R2MK3A+FR3 + .word ANI_ATTACK_ON,AMODE_PUNCH2,29,89,45,14 ;mode,x,y,w,h + WL 2,R2MK3A+FR3 + .word ANI_ATTACK_OFF + WL 2,R2MK3A+FR4 + WL 2,R2MK3A+FR5 + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,40000h + WL 1,R2MK3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#missed +#no_hit2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + WL 2,R2MK3A+FR6 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,2,#ex + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + + .word ANI_DRAW_NAME,32 + + .ref rzr_2_hiptoss_anim + WL ANI_CHANGEANIM,rzr_2_hiptoss_anim + +#ex + .word ANI_OFFSET,15,0,0 + WL ANI_CHANGEANIM,rzr_4_uprcut_anim + +#ex2 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WLLL ANI_SETOPPVELS,50000h,18000h,0h ;x,y,z vels +; WL 2,R2MK3A+FR6 +#missed + WL 2,R2MK3A+FR6 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#****************************************************************************** + + SUBR rzr_combo_slash_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_PUNCH,13 + WL 2,R3RD3D+FR1 + WL 2,R3RD3D+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,56,56,90000h,TGT_HEAD,87,100,20 + + WL 4,R3RD3D+FR3 + .word ANI_SOUND,013h + WL 2,R3RD3D+FR4 + WL 2,R3RD3D+FR5 + WL 4,R3RD3D+FR6 +; .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .WORD ANI_CLR_STATUS + .word ANI_ATTACK_ON,AMODE_RSLASH,-64,28,177,137 + WL 2,R3RD3D+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#misseddcx + .WORD ANI_INC_COMBO + .word ANI_ZEROVELS + WLLL ANI_SETOPPVELS,18000h,10000h,0h ;x,y,z vels + WL 3,R3RD3D+FR8 + WL 2,R3RD3D+FR9 + WL 3,R3RD3D+FR11 + WLLL ANI_SETOPPVELS,0h,0h,0h ;x,y,z vels + + .word ANI_STARTATTACK,AT_PUNCH,12 + + WL 1,R3RZ3S+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,56,56,90000h,TGT_HEAD,87,100,20 + + WL 2,R3RZ3S+FR2 + WL 2,R3RZ3S+FR3 + .word ANI_SOUND,014h + WL 4,R3RZ3S+FR4 + +; .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .WORD ANI_CLR_STATUS + .word ANI_ATTACK_ON,AMODE_RSLASH,35,29,67,121 + WL 2,R3RZ3S+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#misseducx + .word ANI_ZEROVELS + .WORD ANI_INC_COMBO + WLLL ANI_SETOPPVELS,18000h,10000h,0h ;x,y,z vels + WL 2,R3RZ3S+FR6 + WL 2,R3RZ3S+FR7 + WL 2,R3RZ3S+FR8 + WLLL ANI_SETOPPVELS,0h,0h,0h ;x,y,z vels + WL 3,R3RZ3S+FR9 + WL 2,R3RZ3S+FR10 + WL 3,R3RZ3S+FR12 + + .word ANI_SET_RPTCOUNT,3 ;5 times +#slash_loop + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_PUNCH,13 + WL 1,R3RD3D+FR1 + WL 2,R3RD3D+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 5,999,56,56,70000h,TGT_HEAD,87,100,20 + + WL 1,R3RD3D+FR3 + .word ANI_SOUND,013h + WL 1,R3RD3D+FR4 + WL 2,R3RD3D+FR5 + WL 1,R3RD3D+FR6 +; .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .WORD ANI_CLR_STATUS + .word ANI_ATTACK_ON,AMODE_RSLASH,-64,28,177,137 + WL 1,R3RD3D+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#misseddcx + .WORD ANI_INC_COMBO + .word ANI_ZEROVELS + WLLL ANI_SETOPPVELS,18000h,10000h,0h ;x,y,z vels + WL 1,R3RD3D+FR8 + WL 2,R3RD3D+FR9 + WL 1,R3RD3D+FR11 + WLLL ANI_SETOPPVELS,0h,0h,0h ;x,y,z vels + + .word ANI_STARTATTACK,AT_PUNCH,12 + + WL 1,R3RZ3S+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 5,999,56,56,70000h,TGT_HEAD,87,100,20 + + WL 1,R3RZ3S+FR2 + WL 1,R3RZ3S+FR3 + .word ANI_SOUND,014h + WL 2,R3RZ3S+FR4 + +; .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .WORD ANI_CLR_STATUS + .word ANI_ATTACK_ON,AMODE_RSLASH,35,29,67,121 + WL 1,R3RZ3S+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#misseducx + .word ANI_ZEROVELS + .WORD ANI_INC_COMBO + WLLL ANI_SETOPPVELS,18000h,10000h,0h ;x,y,z vels + WL 1,R3RZ3S+FR6 + WL 2,R3RZ3S+FR7 + WL 1,R3RZ3S+FR8 + WLLL ANI_SETOPPVELS,0h,0h,0h ;x,y,z vels + WL 1,R3RZ3S+FR9 + WL 1,R3RZ3S+FR10 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#slash_loop + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,rzr_combo_pile_driver_anim +#NEXT_CHECK_2 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#exit_move + WL ANI_CHANGEANIM,rzr_combo_rugshake_anim + +#exit_move + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#misseddcx + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,R3RD3D+FR8 + WL 3,R3RD3D+FR9 + WL 3,R3RD3D+FR11 + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#misseducx + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 2,R3RZ3S+FR6 + WL 3,R3RZ3S+FR7 + WL 2,R3RZ3S+FR8 + WL 3,R3RZ3S+FR9 + WL 2,R3RZ3S+FR10 + WL 3,R3RZ3S+FR12 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #3 BLADE DOWN-SLASH + + SUBR rzr_3_dslash_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,13 + + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none0 + + WL 3,R3RD3D+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,80-5,56,90000h,TGT_HEAD,67,100,20 + + WL 3,R3RD3D+FR2 + WL 3,R3RD3D+FR3 + .word ANI_SOUND,013h + WL 3,R3RD3D+FR4 + WL 3,R3RD3D+FR5 + WL 3,R3RD3D+FR6 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON,AMODE_RSLASH,-64,28,177,137 + WL 3,R3RD3D+FR7 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFBLOCKED,#cont + + WWL ANI_SLIDE_BACK,30h,-70000h,#nox + + WL ANI_SET_YVEL,40000h +#nox + WL 4,R3RD3D+FR8 + WL 4,R3RD3D+FR9 + WL 4,R3RD3D+FR11 + .word ANI_WAITHITGND + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#none0 + WL 2,R3RD3D+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,80,56,90000h,TGT_HEAD,67,100,20 + + WL 2,R3RD3D+FR2 + WL 2,R3RD3D+FR3 + .word ANI_SOUND,013h + WL 2,R3RD3D+FR4 + WL 2,R3RD3D+FR5 + WL 2,R3RD3D+FR6 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON,AMODE_RSLASH,-64,28,177,137 + WL 2,R3RD3D+FR7 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFBLOCKED,#cont + + WWL ANI_SLIDE_BACK,30h,-70000h,#no + + WL ANI_SET_YVEL,40000h +#no + WL 2,R3RD3D+FR8 + WL 2,R3RD3D+FR9 + WL 2,R3RD3D+FR11 + .word ANI_WAITHITGND + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#cont + WL 2,R3RD3D+FR8 + WL 10,R3RD3D+FR9 + WL 3,R3RD3D+FR11 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #3 BLADE DOWN-SLASH TO HEAD + + SUBR rzr_dslash_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_DETACH + + .word ANI_STARTATTACK,AT_PUNCH,13 + WL 2,R3RD3D+FR1 + WL 2,R3RD3D+FR2 + WL 3,R3RD3D+FR3 + .word ANI_SOUND,013h + WL 2,R3RD3D+FR4 + WL 2,R3RD3D+FR5 + WL 2,R3RD3D+FR6 + .word ANI_ATTACK_ON,AMODE_RSLASH,-64,28,177,137 + WL 3,R3RD3D+FR7 + .word ANI_ATTACK_OFF + WL 3,R3RD3D+FR8 + WL 3,R3RD3D+FR9 + WL 3,R3RD3D+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #3 BLADE UP-SLASH + + SUBR rzr_3_uslash_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_PUNCH,12 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + .ref spunch_delay + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none + + WL 3,R3RZ3S+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,55-5,52,90000h,TGT_HEAD,67,100,20 + WL 6,R3RZ3S+FR2 + + WL 2,R3RZ3S+FR3 + .word ANI_SOUND,014h + WL 2,R3RZ3S+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_ATTACK_ON,AMODE_RSLASH,35,29,67,121 + WL 3,R3RZ3S+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,38h,-70000h,#no_hit + + WL ANI_SET_YVEL,40000h +#no_hit + WL 3,R3RZ3S+FR6 + WL 4,R3RZ3S+FR7 + WL 3,R3RZ3S+FR8 + WL 4,R3RZ3S+FR9 + WL 3,R3RZ3S+FR10 + WL 4,R3RZ3S+FR12 + + .word ANI_ZEROVELS + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#none + WL 2,R3RZ3S+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 10,999,55,52,90000h,TGT_HEAD,67,100,20 + + WL 6,R3RZ3S+FR2 + WL 2,R3RZ3S+FR3 + .word ANI_SOUND,014h + WL 2,R3RZ3S+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_ATTACK_ON,AMODE_RSLASH,35,29,67,121 + WL 3,R3RZ3S+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,38h,-70000h,#no_hita + + WL ANI_SET_YVEL,40000h +#no_hita + WL 3,R3RZ3S+FR6 + WL 3,R3RZ3S+FR7 + WL 3,R3RZ3S+FR8 + WL 3,R3RZ3S+FR9 + WL 3,R3RZ3S+FR10 + WL 3,R3RZ3S+FR12 + + .word ANI_ZEROVELS + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #3 BLADE UP-SLASH TO HEAD + + SUBR rzr_uslash_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_ZEROVELS + .word ANI_DETACH + + .word ANI_STARTATTACK,AT_PUNCH,10 + + WL 6,R3RZ3S+FR2 + WL 2,R3RZ3S+FR3 + .word ANI_SOUND,014h + WL 2,R3RZ3S+FR4 + + .word ANI_ATTACK_ON,AMODE_RSLASH,35,29,67,121 + WL 4,R3RZ3S+FR5 + .word ANI_ATTACK_OFF + WL 2,R3RZ3S+FR6 + WL 3,R3RZ3S+FR7 + WL 2,R3RZ3S+FR8 + WL 3,R3RZ3S+FR9 + WL 2,R3RZ3S+FR10 + WL 3,R3RZ3S+FR12 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 UPPERCUT + + SUBR rzr_combo_uppercut_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_ZEROVELS + .word ANI_STARTATTACK,AT_UPRCUT,9 + WL 3,R4UP3C+FR1 + WL 3,R4UP3C+FR2 + WL 3,R4UP3C+FR3 + + .word ANI_ATTACK_ON,AMODE_UPRCUT,30,77-20,42,65+20 + .word ANI_ZEROVELS + WL 5,R4UP3C+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hitc + WL ANI_SET_YVEL,38000h + WL ANI_GOTO,#AVOID +#no_hitc +; .word ANI_SET_ATTACH + WL ANI_CODE,SET_OPP_GRAV_LOW + WLLL ANI_SETOPPVELS,0000H,100000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO +#AVOID + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + WL 50,R4UP3C+FR4 + WL 4,R4UP3C+FR5 + WL 4,R4UP3C+FR6 + WL ANI_CODE,SET_OPP_GRAV_NORM + WL 3,R4UP3C+FR7 + WL 3,R4UP3C+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +SET_OPP_GRAV_NORM + MOVE *A13(WHOIHIT),A10,L + MOVI GRAVITY,A0 + MOVE A0,*A10(OBJ_GRAVITY),L + RETS + +SET_OPP_GRAV_LOW + MOVE *A13(WHOIHIT),A10,L + MOVI GRAVITY-1000H,A0 + MOVE A0,*A10(OBJ_GRAVITY),L + RETS + +***************************************************************************** + + SUBR rzr_4_uprcut_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_UPRCUT,6 + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 2,R4UP3C+FR1 + WL 2,R4UP3C+FR2 + WL 2,R4UP3C+FR3 + + .word ANI_ATTACK_ON,AMODE_UPRCUT,30,77-20,42,65+20 + .word ANI_ZEROVELS + WL 5,R4UP3C+FR4 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFNOTSTATUS,#no_hit + WL ANI_IFBLOCKED,#no_hit + .word ANI_SHAKER,30 + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,400,1,10,50,0 ;%chance, tbl index, x,y,z off + .word ANI_DETACH + .ref impact_sound + WL ANI_CODE,impact_sound + + WL ANI_CODE,CALL_OTHER_AVERAGE + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + + WL 12,R4UP3C+FR4 + WL 3,R4UP3C+FR5 + WL 3,R4UP3C+FR6 + WL 3,R4UP3C+FR7 + WL 3,R4UP3C+FR8 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR rzr_2_butt_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R2BC3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R2BC3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R2BC3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_HDBUTT,5 + WL 1,R2BC3B+FR2 + WL 2,R2BC3B+FR3 + WL 2,R2BC3B+FR4 + + .word ANI_ATTACK_ON,AMODE_HDBUTT,19,87,23,22 + WL 3,R2BC3B+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + WL 3,R2BC3B+FR6 + WL 3,R2BC3B+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R2BC3B+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEADBUTT + + SUBR rzr_combo_butt_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_ZEROVELS + WLW ANI_SET_XVEL,40000h,AM_FACE_REL + WL 2,R4BC3A+FR1 + WL 2,R4BC3A+FR2 + .word ANI_STARTATTACK,AT_HDBUTT,4 + WL 2,R4BC3A+FR3 + WL 2,R4BC3A+FR4 + + WLW ANI_SET_XVEL,0h,AM_FACE_REL + .word ANI_ATTACK_ON,AMODE_HDBUTT,29,53,33,39 + WL 1,R4BC3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hitc + .word ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0h,10000h,0h ;x,y,z vels + WL ANI_SET_YVEL,10000h + WL 2,R4BC3A+FR5 + WL 2,R4BC3A+FR6 + WL 2,R4BC3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,R4BC3A+FR8 + + .word ANI_SET_RPTCOUNT,4 ;5 times +#butt_loop + .word ANI_CLR_BUTCOUNT + + WLW ANI_SET_XVEL,20000h,AM_FACE_REL + WL 1,R4BC3A+FR1 + WL 1,R4BC3A+FR2 + WL 1,R4BC3A+FR2 + .word ANI_STARTATTACK,AT_HDBUTT,4 + WL 1,R4BC3A+FR3 + WL 1,R4BC3A+FR4 + + WLW ANI_SET_XVEL,0h,AM_FACE_REL + .word ANI_ATTACK_ON,AMODE_HDBUTT,29,53,43,39 + WL 1,R4BC3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hitc + .word ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0h,10000h,0h ;x,y,z vels + WL ANI_SET_YVEL,10000h + WL 1,R4BC3A+FR6 + WL 1,R4BC3A+FR7 + WL 1,R4BC3A+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#butt_loop + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#check_3 + WL ANI_CHANGEANIM,rzr_combo_flying_kick_anim +#check_3 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,rzr_combo_knee_fall_anim + +#NEXT_CHECK_2 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_SLASHING + WL ANI_CHANGEANIM,rzr_combo_slash_anim + +#NO_SLASHING + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#exit_move + WL ANI_CHANGEANIM,rzr_combo_hiptoss_anim + +#exit_move + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hitc + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,R4BC3A+FR6 + WL 3,R4BC3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +************ + + SUBR rzr_4_butt_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_HDBUTT,5 + WL 1,R4BC3A+FR2 + WL 2,R4BC3A+FR3 + WL 2,R4BC3A+FR4 + + .word ANI_ATTACK_ON,AMODE_HDBUTT,29,93,23,19 + WL 3,R4BC3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,38000h +#no_hit + WL 3,R4BC3A+FR6 + WL 3,R4BC3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* NORMAL KICK + + SUBR rzr_combo_kick_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .WORD ANI_CLEAR_COMBO + + WL 2,R4KM3A+FR1 + WL 1,R4KM3A+FR2 + WL 1,R4KM3A+FR2 + .word ANI_STARTATTACK,AT_KICK,4 + WL 2,R4KM3A+FR3 + WL 2,R4KM3A+FR4 + + .word ANI_INC_COMBO + .word ANI_ATTACK_ON,AMODE_KICK,8,35,75,55 ;mode,x,y,w,h + WL 1,R4KM3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + .word ANI_INC_COMBO + WLLL ANI_SETOPPVELS,0h,10000h,0h ;x,y,z vels + WL ANI_SET_YVEL,18000h + WL 6,R4KM3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,R4KM3A+FR6 + WL 2,R4KM3A+FR7 + WL 2,R4KM3A+FR8 + + .word ANI_SET_RPTCOUNT,3 ;5 times +#kick_loop + .word ANI_CLR_BUTCOUNT + + WL 1,R4KM3A+FR1 + WL 1,R4KM3A+FR2 + WL 1,R4KM3A+FR2 + .word ANI_STARTATTACK,AT_KICK,4 + WL 1,R4KM3A+FR3 + WL 1,R4KM3A+FR4 + + .word ANI_ATTACK_ON,AMODE_KICK,8,35,75,55 ;mode,x,y,w,h + WL 2,R4KM3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + .word ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0h,10000h,0h ;x,y,z vels + WL ANI_SET_YVEL,10000h + WL 1,R4KM3A+FR5 + + WL 1,R4KM3A+FR6 + WL 1,R4KM3A+FR7 + WL 1,R4KM3A+FR8 + + .word ANI_ZEROVELS + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#kick_loop + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#check_3 + WL ANI_CHANGEANIM,rzr_combo_flying_kick_anim +#check_3 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,rzr_combo_knee_fall_anim + +#NEXT_CHECK_2 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#end_in_4c + WL ANI_CHANGEANIM,rzr_combo_butt_anim + +#missed + WL 3,R4KM3A+FR6 + WL 3,R4KM3A+FR7 + WL 3,R4KM3A+FR8 + +#end_in_4c + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,R4KM3A+FR9 + WL 3,R4KM3A+FR10 + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +***************************************************************************** + + SUBR rzr_4_kick2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 1,R4KM3A+FR1 + WL ANI_GOTO,#cont2a + + SUBR rzr_2_kick_anim + SUBR rzr_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim +#cont2a + .word ANI_STARTATTACK,AT_KICK,5 + WL 1,R4KM3A+FR2 + WL 2,R4KM3A+FR3 + WL 1,R4KM3A+FR4 + + WL ANI_SET_YVEL,20000h + .word ANI_ATTACK_ON,AMODE_KICK,8,35,75,55 ;mode,x,y,w,h + WL 2,R4KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + WL 3,R4KM3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,R4KM3A+FR6 + WL 2,R4KM3A+FR7 + WL 2,R4KM3A+FR8 + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#end_in_4 + +#end_in_2 + WL 2,R2KM3X+FR9 + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#end_in_4 + WL 2,R4KM3A+FR9 + WL 2,R4KM3A+FR10 + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 SUPER KICK + + SUBR rzr_combo_super_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_ZEROVELS + + WL 2,R4KM3A+FR1 + .word ANI_OFFSET,5,0,0 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,80,40,90000h,TGT_CHEST,64,0,20 + WL ANI_SET_YVEL,48000h + WL ANI_CODE,no_bk_xvel + + WL 4,R4KM3A+FR2 + WL 2,R4KM3A+FR3 + WL 2,R4KM3A+FR4 + + .word ANI_ATTACK_ON,AMODE_KICK,8,35,75,55 ;mode,x,y,w,h + WL 2,R4KM3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedcx + WL ANI_IFBLOCKED,#missedbcx + .WORD ANI_INC_COMBO + + WLLL ANI_SETOPPVELS,20000h,10000h,0h ;x,y,z vels + + .word ANI_ZERO_XZVELS + WL ANI_SET_YVEL,30000h + + WL 2,R4KM3A+FR5 + WL 2,R4KM3A+FR6 + WLLL ANI_SETOPPVELS,0h,0h,0h ;x,y,z vels + WL 2,R4KM3A+FR7 + WL 2,R4KM3A+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SET_RPTCOUNT,3 ;5 times +#skick_loop + .word ANI_CLR_BUTCOUNT + + WL 1,R4KM3A+FR1 + .word ANI_OFFSET,5,0,0 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 5,999,80,40,90000h,TGT_CHEST,64,0,20 + WL ANI_SET_YVEL,28000h + WL ANI_CODE,no_bk_xvel + + WL 2,R4KM3A+FR2 + WL 1,R4KM3A+FR3 + WL 1,R4KM3A+FR4 + + .word ANI_ATTACK_ON,AMODE_KICK,8,35,75,55 ;mode,x,y,w,h + WL 1,R4KM3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedcx + WL ANI_IFBLOCKED,#missedbcx + .WORD ANI_INC_COMBO + + WLLL ANI_SETOPPVELS,18000h,10000h,0h ;x,y,z vels + + .word ANI_ZERO_XZVELS + WL ANI_SET_YVEL,10000h + + WL 1,R4KM3A+FR5 + WL 1,R4KM3A+FR6 + WL 1,R4KM3A+FR7 + WL 1,R4KM3A+FR8 + WLLL ANI_SETOPPVELS,0h,0h,0h ;x,y,z vels + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#skick_loop + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK_2 + WL ANI_CHANGEANIM,rzr_combo_knee_fall_anim +#NEXT_CHECK_2 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK_3 + WL ANI_CHANGEANIM,rzr_combo_slash_anim + +#NEXT_CHECK_3 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHECK_4 + WL ANI_CHANGEANIM,rzr_combo_hiptoss_anim + +#NEXT_CHECK_4 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exitc + WL ANI_SET_YVEL,40000h + WL ANI_CHANGEANIM,rzr_combo_flying_kick_anim + + +#missedcx + WL ANI_CODE,CALL_MISSES + WL ANI_GOTO,#missed_waitcx +#missedbcx + WL ANI_CODE,#blocked_vels +#missed_waitcx + WL 1,R4KM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,R4KM3A+FR6 + WL 3,R4KM3A+FR7 + WL 3,R4KM3A+FR8 +#exitc + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_CLR_STATUS + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#end_in_4c + +#end_in_2c + WL 3,R2KM3X+FR9 + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#end_in_4c + WL 3,R4KM3A+FR9 + WL 3,R4KM3A+FR10 + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +***************************************************************************** + + SUBR rzr_2_super_kick_anim + SUBR rzr_4_super_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KICK,15 + WL 3,R4KM3A+FR1 + .word ANI_OFFSET,5,0,0 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 10,999,80-10,40,90000h,TGT_CHEST,64,0,20 + WL ANI_SET_YVEL,48000h + WL ANI_CODE,no_bk_xvel + + WL 4,R4KM3A+FR2 + WL 3,R4KM3A+FR3 + WL 3,R4KM3A+FR4 + + .word ANI_ATTACK_ON,AMODE_SUPER_KICK,8,35,75,55 ;mode,x,y,w,h + WL 3,R4KM3A+FR5 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + .word ANI_ZERO_XZVELS + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,-28000h,AM_ABS + WL ANI_GOTO,#vels_set + +#missed + WL ANI_CODE,CALL_MISSES + WL ANI_GOTO,#missed_wait +#missedb + WL ANI_CODE,#blocked_vels +#missed_wait + WL 1,R4KM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,R4KM3A+FR6 + WL 3,R4KM3A+FR7 + WL 3,R4KM3A+FR8 + WL ANI_GOTO,#jump + +#no_hit + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WLW ANI_SET_ZVEL,-28000h,AM_ABS + WL ANI_SET_YVEL,20000h + +#vels_set + WL 4,R4KM3A+FR5 + + WL ANI_CODE,skick_delay + WL ANI_IFNOTSTATUS,#none + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 15,R4KM3A+FR5 +#none + + WL 3,R4KM3A+FR6 + WL 3,R4KM3A+FR7 + WL 2,R4KM3A+FR8 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +#jump + +; WL ANI_CODE,skick_delay +; WL ANI_IFNOTSTATUS,#none +; WL 20,R4KM3A+FR8 +;#none + + .word ANI_CLR_STATUS + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#end_in_4 + +#end_in_2 + + WL 2,R2KM3X+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#end_in_4 + + WL 2,R4KM3A+FR9 + WL 2,R4KM3A+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBRP #blocked_vels + + movi [3,0],a14 + move a14,*a13(OBJ_YVEL),L + + move *a13(OBJ_XVEL),a14,L + sra 1,a14 + neg a14 + move a14,*a13(OBJ_XVEL),L + rets + +#***************************************************************************** + + SUBR rzr_kick_TB_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_STARTATTACK,AT_LEAPING,12 + + WL 2,R4KM3A+FR1 + .word ANI_OFFSET,5,0,0 + WL ANI_SET_YVEL,70000h + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL 2,R4KM3A+FR2 + WL 2,R4KM3A+FR3 + WL 2,R4KM3A+FR4 + .word ANI_ATTACK_ON,AMODE_SPINKICK,8,35,75,55 ;mode,x,y,w,h + WL 11,R4KM3A+FR5 + .word ANI_ATTACK_OFF + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 2,R4KM3A+FR6 + WL 2,R4KM3A+FR7 + WL 2,R4KM3A+FR8 + WL 2,R4KM3A+FR9 + WL 2,R4KM3A+FR10 + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 KNEE + + SUBR rzr_2_knee_anim + SUBR rzr_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4NM3C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4NM3C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4NM3C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KNEE,7 + WL 1,R4NM3C+FR2 + WL 2,R4NM3C+FR3 + WL 2,R4NM3C+FR4 + WL 2,R4NM3C+FR5 + + .word ANI_ATTACK_ON,AMODE_KNEE,22,35,68,67 ;mode,x,y,w,h + WL 3,R4NM3C+FR6 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + + WL 4,R4NM3C+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4NM3C+FR7 + WL 3,R4NM3C+FR8 + WL 3,R4NM3C+FR9 + WL 3,R4NM3C+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 KNEE + + SUBR rzr_combo_knee_fall_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KNEE,4 + WL 2,R4NM3C+FR1 + WL 2,R4NM3C+FR5 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,86,20,90000h,TGT_CHEST,26,74,0 + + .word ANI_ATTACK_ON,AMODE_BIGKNEE,22,55,38,27 ;mode,x,y,w,h + WL 3,R4NM3C+FR6 + .word ANI_ATTACK_OFF + + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hitc + WL ANI_SET_YVEL,60000h + + WL ANI_GOTO,#finishc +#no_hitc + .WORD ANI_INC_COMBO + .word ANI_ZERO_XZVELS +#finishc + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 3,R4NM3C+FR7 + WL 3,R4NM3C+FR8 + WL 3,R4NM3C+FR9 + WL 3,R4NM3C+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +***************************************************************************** + + SUBR rzr_4_knee_fall_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KNEE,4 + WL 2,R4NM3C+FR1 + WL 2,R4NM3C+FR5 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 15,999,86,20,90000h,TGT_CHEST,26,74,0 + + .word ANI_ATTACK_ON,AMODE_BIGKNEE,22,55,38,27 ;mode,x,y,w,h + WL 3,R4NM3C+FR6 + .word ANI_ATTACK_OFF + + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,60000h + + WL ANI_GOTO,#finish +#no_hit + .word ANI_ZERO_XZVELS +#finish + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4NM3C+FR7 + WL 3,R4NM3C+FR8 + WL 3,R4NM3C+FR9 + WL 3,R4NM3C+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 PUNCH FALLEN OPPONENT + + SUBR rzr_2_ground_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,R2PF2B+FR2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,8,0,-40,16,43,50 + WL 1,R2PF2B+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#no_leapat + + ;leapat... + .word ANI_TARGET,TGT_KNEES,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,160,140,90000h,TGT_USER,19,0,-40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_LBDROP,12 + + WL 4,R2PF2B+FR3 + WL 4,R2PF2B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + WL ANI_GOTO,#common + +#no_leapat + .word ANI_STARTATTACK,AT_LBDROP,14 + WL 3,R2PF2B+FR3 + WL 3,R2PF2B+FR5 +#common + WL 3,R2PF2B+FR6 + WL 3,R2PF2B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,8,0,-50,16,43,60 + WL 5,R2PF2B+FR8 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFNOTSTATUS,#missed + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKER,15 + .word ANI_SHAKEALL,1 + + WL 2,R2PF2B+FR9 + WL 2,R2PF2B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 3,R2PF2B+FR9 + WL 3,R2PF2B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 PUNCH FALLEN OPPONENT + + SUBR rzr_4_ground_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,R4PF4B+FR2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,0,-1,-10,22,30,50 + WL 1,R4PF4B+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#no_leapat + + ;leapat... + .word ANI_TARGET,TGT_KNEES,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,160,140,90000h,TGT_USER,13,0,40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_LBDROP,12 + + WL 3,R4PF4B+FR3 + WL 3,R4PF4B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + WL ANI_GOTO,#common + +#no_leapat + .word ANI_STARTATTACK,AT_LBDROP,14 + WL 3,R4PF4B+FR3 + WL 3,R4PF4B+FR4 +#common + WL 3,R4PF4B+FR5 + WL 3,R4PF4B+FR7 + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,0,-1,-10,22,30,60 + WL 1,R4PF4B+FR8 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFNOTSTATUS,#missed + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKER,15 + .word ANI_SHAKEALL,1 + WL 4,R4PF4B+FR8 + WL 3,R4PF4B+FR9 + WL 3,R4PF4B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 4,R4PF4B+FR8 + WL 3,R4PF4B+FR9 + WL 3,R4PF4B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 FLYING KICK + +#yoff equ 52 + SUBR rzr_combo_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,25 + WL 3,R3DC3C+FR2 + + .word ANI_OFFSET,0,#yoff,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 10,999,145,65,90000h,TGT_HEAD,65,41,0 + WL ANI_CODE,no_bk_xvel + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL 6,R3DC3C+FR4 + WL 6,R3DC3C+FR5 + WL 2,R3DC3C+FR6 + .word ANI_ATTACK_ON,AMODE_FLYKICK,30,11,56,39 + WL 6,R3DC3C+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hitc + .WORD ANI_INC_COMBO +#no_hitc + WL 4,R3DC3C+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,HIT_THE_MAT + WL 3,R3DC3C+FR9 + WL 3,R3DC3C+FR10 + .word ANI_XFLIP + WL 3,R3RL1B+FR6 + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +***************************************************************************** + + SUBR rzr_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,17 + WL 3,R3DC3C+FR2 + + .word ANI_OFFSET,0,#yoff,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 17,999,155,65,90000h,TGT_HEAD,52,41,0 + WL ANI_CODE,no_bk_xvel + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL 5,R3DC3C+FR4 + WL 5,R3DC3C+FR5 + WL 2,R3DC3C+FR6 + .word ANI_ATTACK_ON,AMODE_FLYKICK,30,11,56,39 + WL 6,R3DC3C+FR7 + .word ANI_ATTACK_OFF + WL 4,R3DC3C+FR8 + .WORD ANI_ADD_MOVE,MOVE_C_1,2,2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + WL 3,R3DC3C+FR9 + WL 3,R3DC3C+FR10 + .word ANI_XFLIP + WL 3,R3RL1B+FR6 + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +#***************************************************************************** +* +* GRAB & THROW + + SUBR rzr_grab_throw_anim + + .word ANI_END + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR rzr_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_STOMP,15 + WL 3,R2MP2A+FR2 + WL 2,R2MP2A+FR3 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,0,-1,-40,17,32,50 + WL 1,R2MP2A+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL 2,R2MP2A+FR4 + WL 2,R2MP2A+FR5 + WL 2,R2MP2A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-4,-5,-40,25,40,50 + WL 3,R2MP2A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + WL 3,R2MP2A+FR8 + WL 3,R2MP2A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + + .word ANI_TARGET,TGT_GROIN,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,160,140,90000h,TGT_USER,12,0,-40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,14 + + WL 3,R2MP2A+FR4 + WL 3,R2MP2A+FR5 + WL 3,R2MP2A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-4,-5,-40,25,40,50 + WL 3,R2MP2A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 2,R2MP2A+FR8 + WL 3,R2MP2A+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + + SUBR rzr_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4MP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4MP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,R4MP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_STOMP,20 + WL 3,R4MP4D+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,9,-11,-10,19,36,50 + WL 1,R4MP4D+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL 2,R4MP4D+FR3 + WL 2,R4MP4D+FR4 + WL 2,R4MP4D+FR5 + WL 2,R4MP4D+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,5,-15,-10,27,44,50 + WL 3,R4MP4D+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + WL 3,R4MP4D+FR8 + WL 3,R4MP4D+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + + .word ANI_TARGET,TGT_GROIN,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,160,140,90000h,TGT_USER,16,0,40 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,14 + + WL 3,R4MP4D+FR3 + WL 3,R4MP4D+FR4 + WL 3,R4MP4D+FR5 + WL 3,R4MP4D+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_STOMP,5,-15,-10,27,44,50 + WL 3,R4MP4D+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 3,R4MP4D+FR8 + WL 3,R4MP4D+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #3 RUNNING ELBOW DROP + +#yoff equ 40 + + SUBR rzr_flying_elbow_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_STOMP,36 + + WL 2,R4PJ4B+FR1 + WL 2,R4PJ4B+FR2 + + .word ANI_TARGET,TGT_GROIN,TGT_HEAD,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,999,160,140,90000h,TGT_USER,-39,0,30 + WL ANI_CODE,no_bk_xvel + + .word ANI_SETPLYRMODE,MODE_INAIR + + .word ANI_OFFSET,0,#yoff,0 + WL 3,R4PJ4B+FR3 + WL 3,R4PJ4B+FR4 + WL 3,R4PJ4B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,-49,-7,-10,46,31,50 + WL 1,R4PJ4B+FR6 + .word ANI_ATTACK_OFF + + WL ANI_SET_YVEL,40000h + .word ANI_SHAKER,45 + .word ANI_SHAKEROPES,2 + + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFSTATUS,#hit + + WL ANI_CODE,CALL_MISSES + + WL ANI_GOTO,#AVOID_HIT_CALL + +#hit + WL ANI_CODE,CALL_OTHER_AVERAGE +#AVOID_HIT_CALL + WL 7,R4PJ4B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_XFLIP + WL 4,R3GU4A+FR3 + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +#***************************************************************************** +* +* TURNBUCKLE ELBOW + +#yoff equ 40 + + SUBR rzr_tbukl_elbow_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + .word ANI_SET_WRESTLER_XFLIP + .word ANI_SCROLL_CTRL,SC_RESTORE + + .word ANI_STARTATTACK,AT_BSTOMP,39 + + WL 3,R4PJ4B+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 36,190,190,190,90000h,TGT_GROIN,-15,#yoff,40 + LEAPATOPP 36,210,210,210,90000h,TGT_CHEST,-15,#yoff,50 + WL ANI_CODE,check_xvel + +; .word ANI_SETPLYRMODE,MODE_INAIR2 + WL ANI_CODE,set_tbukl_airmode + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + + WL 3,R4PJ4B+FR2 + .word ANI_OFFSET,0,#yoff,0 + WL 3,R4PJ4B+FR3 + WL 3,R4PJ4B+FR4 + WL 1,R4PJ4B+FR5 + + WL ANI_CODE,set_tbukl_confine + + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-78,0,-10,140,32,70 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + WWL ANI_IFOPPMODE,MODE_DEAD,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-68,28,-10,120,32,70 +#opp_onground + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,HIT_THE_MAT + + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFSTATUS,#hit + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,CALL_MISSES +; WL ANI_CODE,tbukl_miss_damage + .word ANI_BOUNCE,5 + .word ANI_SETPLYRMODE,MODE_INAIR + WL 7,R4PJ4B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_XFLIP + .word ANI_FACEDOWN + WL 4,R3GU4A+FR3 + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +#hit + .word ANI_DRAW_NAME,18 + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + WL ANI_CODE,ckzpos + .word ANI_SETMODE,MODE_INAIR + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .word ANI_SHAKER,45 + .word ANI_SHAKEALL,2 + WL 1,R4PJ4B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL ANI_CODE,HIT_THE_MAT + WL 4,R4PJ4B+FR6 + .word ANI_XFLIP + .word ANI_FACEDOWN + WL 4,R3GU4A+FR3 + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +#***************************************************************************** +* +* SECOND WIND + + SUBR rzr_2ndwind_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,R4SW4Z+FR1 + WL 3,R4SW4Z+FR2 + WL 3,R4SW4Z+FR3 + WL 3,R4SW4Z+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR rzr_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,10 + WL 2,R1TT5Z+FR2 + WL 2,R1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR rzr_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,8 +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,50,20,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + WL 5,R4GF3B+FR1 + + .word ANI_ATTACK_ON,AMODE_PUPPET_NOFLAIL,31h,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,R4GF3B+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,2,R4GF3B+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missedb + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + + WL ANI_IFBLOCKED,#missedb + +;got him + + WL ANI_CODE,DO_GRUNT + .ref CALL_SETUP + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,R4GF3B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,5,R4GF3B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,R4GF3B+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,R4GF3B+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,R4GF3B+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,R4GF3B+FR8,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 6,R4GF3B+FR9 + WL 4,R4GF3B+FR10 + .word ANI_OFFSET,-10,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + .ref fling_delay + WL ANI_CODE,fling_delay + WL ANI_IFNOTSTATUS,#missed + WL 25,R4GF3B+FR3 +#missed + WL ANI_CODE,CALL_MISSES + WL 6,R4GF3B+FR3 + WL 3,R4GF3B+FR2 + WL 3,R4GF3B+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4YR3A+FR1,68,7,1 + LWWW H4YR3A+FR2,60,5,1 + LWWW H4YR3A+FR3,52,-1,1 + LWWW H4YR3A+FR5,27,1,1 + LWWW H3RN3A+FR1,3,-2,0 + LWWW H3RN3A+FR2,-1,-2,0 +#Razor + LWWW R4YR3A+FR1,53,17,0 + LWWW R4YR3A+FR2,34,14,0 + LWWW R4YR3A+FR3,14,3,0 + LWWW R4YR3A+FR4,-10,0,0 + LWWW R3RN3D+FR11,-7,11,0 + LWWW R3RN3D+FR12,-6,9,0 +#Taker + LWWW U4YR3B+FR2,48,18,0 + LWWW U4YR3B+FR3,44,11,0 + LWWW U4YR3B+FR4,21,10,0 + LWWW U4YR3B+FR5,5,10,0 + LWWW U3RN3A+FR2,-13,10,0 + LWWW U3RN3A+FR2,-15,7,0 +#Yokozuna + LWWW Y4YR3A+FR1,68,11,1 + LWWW Y4YR3A+FR4,40,9,1 + LWWW Y4YR3A+FR5,24,1,1 + LWWW Y4YR3A+FR7,-8,-9,1 + LWWW Y3RN3C+FR7,19,8,0 + LWWW Y3RN3C+FR8,20,4,0 +#Shawn + LWWW S4YR3A+FR2,41,5,1 + LWWW S4YR3A+FR3,52,-7,1 + LWWW S4YR3A+FR5,15,0,1 + LWWW S4YR3A+FR6,6,-4,1 + LWWW S3RN3A+FR2,19,5,0 + LWWW S3RN3A+FR3,0,4,0 +#BamBam + LWWW B4YR3A+FR3,36,13,0 + LWWW B4YR3A+FR4,46,5,0 + LWWW B4YR3A+FR5,46,0,0 + LWWW B4YR3A+FR7,-3,-7,0 + LWWW B3RN3A+FR1,16,8,0 + LWWW B3RN3A+FR2,17,7,0 +#Doink + LWWW D4YR3B+FR1,74,13,1 + LWWW D4YR3B+FR2,62,13,1 + LWWW D4YR3B+FR3,43,6,1 + LWWW D4YR3B+FR4,19,5,1 + LWWW D3RN3B+FR3,19,12,0 + LWWW D3RN3B+FR4,-8,8,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,67,11,1 + LWWW L4YR3B+FR2,47,2,1 + LWWW L4YR3B+FR3,27,-2,1 + LWWW L4YR3B+FR4,-31,-4,1 + LWWW L3RN3B+FR2,-2,10,0 + LWWW L3RN3B+FR3,8,3,0 + +#strt_run_tbl + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR rzr_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + + WL ANI_CODE,DO_OTHERNONO + +#loop + WL 3,R4MF4B+FR1 + WL 3,R4MF4B+FR2 + WL 3,R4MF4B+FR3 + WL 3,R4MF4B+FR4 + WL 3,R4MF4B+FR5 + WL 3,R4MF4B+FR6 + WL 3,R4MF4B+FR7 + WL 3,R4MF4B+FR8 + WL 3,R4MF4B+FR9 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 2,R4MF4B+FR6 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,R3MS3Z+FR4 + WL 4,R3MS3Z+FR3 + WL 4,R3MS3Z+FR2 + WL 4,R3MS3Z+FR1 + .word ANI_WAITHITGND + WL 2,R2ST2C+FR3 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* #4 PUSH + + SUBR rzr_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_SETFLAG,M_PUSH + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUSH,18 + WL 3,R4PS3A+FR3 + WL 3,R4PS3A+FR5 + WL 3,R4PS3A+FR6 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ATTACK_ON, AMODE_PUSH,25,98,68,14 + WL 3,R4PS3A+FR7 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,40h,-70000h,#no_hit ;range,vel,addr + WL 15,R4PS3A+FR7 +#no_hit + WL 3,R4PS3A+FR7 + WL ANI_IFSTATUS,#hit +;If missed on push, hold a little longer + WL 5,R4PS3A+FR7 +#hit + WL 2,R4PS3A+FR7 + WL 3,R4PS3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 BIG BOOT + + SUBR rzr_4_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_BIGBOOT,10 + WL 2,R4KM3A+FR1 + WL 2,R4KM3A+FR2 + WL 2,R4KM3A+FR3 + WL 2,R4KM3A+FR4 + + WL ANI_CODE,#clrcnt + .word ANI_ATTACK_ON,AMODE_BIGBOOT,8,35,75,55 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,15,R4KM3A+FR5 +#lp + .word ANI_STARTATTACK,AT_BIGBOOT,5 + WL 2,R4KM3A+FR5 + WL ANI_CODE,#holdup + WL ANI_IFSTATUS,#lp + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .word ANI_DRAW_NAME,27 +#missed + + WL 3,R4KM3A+FR6 + WL 3,R4KM3A+FR7 + WL 3,R4KM3A+FR8 + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#end_in_4 + +#end_in_2 + WL 3,R2KM3X+FR9 + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#end_in_4 + WL 3,R4KM3A+FR9 + WL 3,R4KM3A+FR10 + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#clrcnt +;We are re-using BUT_COUNT in the player process + clr a0 + move a0,*a13(BUT_COUNT) + + rets + +#holdup + move *a13(BUT_COUNT),a0 + inc a0 + move a0,*a13(BUT_COUNT) + +;Max time to hold up in air (*2 ticks) + cmpi 25,a0 + jrgt #button_up + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_SKICK_BIT,a0 ;still down? + jrz #button_up + +;Still holding... + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#button_up + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** + + SUBR rzr_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*10/255 ;inv multiply (0-255 -> 0-10) + + .long R3RL1B+FR1 ;0 + .long R3RL1B+FR2 ;1 + .long R3RL1B+FR3 ;2 + .long R3RL1B+FR4 ;3 + .long R3RL1B+FR5 ;4 + .long R3RL1B+FR6 ;5 + .long R3RL1B+FR7 ;6 + .long R3RL1B+FR8 ;7 + .long R3RL1B+FR9 ;8 + .long R3RL1B+FR10 ;9 + .long R3RL1B+FR11 ;10 + .long 0,0,0,0,0,0 + + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR rzr_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,ckzpos + + .word ANI_GETUP,STAY_TIME + + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + + WL 4,R3AM3D+FR2 + WL 4,R3AM3D+FR3 + WL 4,R3AM3D+FR4 + WL 4,R3AM3D+FR5 + WL 4,R3AM3D+FR6 + WL 4,R3AM3D+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 1,R3AM3D+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim +; .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR rzr_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,R3TD3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,STAY_TIME + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,R3TD3A+FR8 + .WORD ANI_XFLIP + WL 3,R3GU2A+FR1 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + + WL 4,R3AM3D+FR2 + WL 4,R3AM3D+FR3 + WL 4,R3AM3D+FR4 + WL 4,R3AM3D+FR5 + WL 4,R3AM3D+FR6 + WL 4,R3AM3D+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 1,R3AM3D+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim +; .word ANI_END + +****************************************************************************** +* + SUBR rzr_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,2c00h,AM_FACE_REL + + WL 3,R3CR3A+FR1 + .word ANI_OFFSET,5,0,0 + WL 2,R3CR3A+FR2 + .word ANI_BENDROPE,0 + .word ANI_OFFSET,5,0,0 ;***** + WL 2,R3CR3A+FR3 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,5,0,0 ;***** + WL 2,R3CR3A+FR4 + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + + .word ANI_OFFSET,5,0,0 ;***** + WL 3,R3CR3A+FR5 + + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + .word ANI_OFFSET,3,0,0 ;***** + WL 3,R3CR3A+FR6 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,3,0,0 ;***** + WL 2,R3CR3A+FR7 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_OFFSET,4,0,0 ;***** + WL 2,R3CR3A+FR8 + .word ANI_BENDROPE,3 + .word ANI_OFFSET,5,0,0 ;***** + WL 2,R3CR3A+FR9 + .word ANI_OFFSET,5,0,0 ;***** + WL 3,R3CR3A+FR10 + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,10,-3,0 + .word ANI_ZEROVELS + WL 2,R3CR3A+FR11 + .word ANI_OFFSET,2,0,0 ;***** + WL 2,R3CR3A+FR12 + + ;now jump off... +; WL 3,R4JD4A+FR1 ;D4FM4A+FR1 +; WL 3,R4JD4A+FR2 + WL 3,R4JD4A+FR3 +; WL 3,R4JD4A+FR4 + + .word ANI_SET_IDIOT + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 2,R4JD4A+FR4 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 2,R4JD4A+FR5 + WL 2,R4JD4A+FR6 + WL 2,R4JD4A+FR7 + WL 4,R4JD4A+FR8 + + .word ANI_FACEDOWN + + .word ANI_CLEAR_CLIMB + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR rzr_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + +; ;jump in +; WL 3,R4JD4A+FR1 +; WL 3,R4JD4A+FR2 + WL 3,R4JD4A+FR3 + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,14h,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 3,R4JD4A+FR4 + WL 4,R4JD4A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + WL 2,R4JD4A+FR6 + WL 2,R4JD4A+FR7 + .word ANI_OFFSET,5,0,0 ;***** + WL 2,R4JD4A+FR8 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + WLW ANI_SET_XVEL,2c00h,AM_FACE_REL + + ;climb through + .word ANI_BENDROPE,0 + WL 3,R3CR3A+FR1 + .word ANI_OFFSET,2,0,0 ;***** + WL 2,R3CR3A+FR2 + .word ANI_OFFSET,2,0,0 ;***** + WL 2,R3CR3A+FR3 + .word ANI_OFFSET,2,0,0 ;***** + WL 2,R3CR3A+FR4 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,2,0,0 ;***** + WL 3,R3CR3A+FR5 + + .word ANI_OFFSET,3,0,0 ;***** + WL 2,R3CR3A+FR6 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,4,0,0 ;***** + WL 2,R3CR3A+FR7 + .word ANI_OFFSET,6,0,0 ;***** + WL 2,R3CR3A+FR8 + .word ANI_BENDROPE,3 + .word ANI_OFFSET,8,0,0 ;***** + WL 3,R3CR3A+FR9 + .word ANI_OFFSET,8,0,0 ;***** + WL 2,R3CR3A+FR10 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,8,0,0 + WL 2,R3CR3A+FR11 + .word ANI_OFFSET,16,0,0 ;***** + WL 3,R3CR3A+FR12 + + .word ANI_ZEROVELS + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets + + +#***************************************************************************** + + SUBR rzr_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL ANI_IFSTATUS,#dir4 + +;Facing #2, spin first! + WL 3,R1TT5Z+FR2 + WL 3,R1TT5Z+FR3 +#dir4 + WL 3,R3GU4A+FR10 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR5 + WL 3,R3GU4A+FR4 + + ;roll over once + WLW ANI_SET_ZVEL,90000h,AM_ABS + + WL 3,R3RL1B+FR1 + WL 3,R3RL1B+FR2 + WL 3,R3RL1B+FR3 + WL 3,R3RL1B+FR4 + WL 3,R3RL1B+FR5 + WL 3,R3RL1B+FR6 + WL 3,R3RL1B+FR7 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + + .word ANI_SETFACING + + .word ANI_SET_IDIOT + ;climb through + .WORD ANI_XFLIP + WL 3,R3DC3C+FR5 + .word ANI_OFFSET,0,-70,0 ;x,y,z + WL 3,R2MP2A+FR3 + WL 3,R2MP2A+FR2 + .WORD ANI_XFLIP + + .word ANI_FACEUP + .word ANI_CLEAR_CLIMB + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#***************************************************************************** + + SUBR rzr_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + WL 3,R2MP2A+FR2 + WL 3,R2MP2A+FR3 + .word ANI_OFFSET,0,70,16 + WL 3,R3DC3C+FR5 + .WORD ANI_XFLIP + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,R3RL1B+FR6 + WL 3,R3RL1B+FR5 + WL 3,R3RL1B+FR4 + WL 3,R3RL1B+FR3 + WL 3,R3RL1B+FR2 + WL 3,R3RL1B+FR1 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,R3GU4A+FR3 + WL 3,R3GU4A+FR4 + WL 3,R3GU4A+FR5 + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR10 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR rzr_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,R1TT5Z+FR2 + WL 3,R1TT5Z+FR3 + +#dir4 + WL 3,R3GU4A+FR10 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR5 + WL 3,R3GU4A+FR4 + WL 3,R3GU4A+FR3 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,R3RL1B+FR11 + WL 3,R3RL1B+FR10 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,R3RL1B+FR9 + WL 3,R3RL1B+FR8 + WL 3,R3RL1B+FR7 + + .word ANI_SET_IDIOT + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,R4AM4B+FR4 + WL 3,R4AM4B+FR3 + WL 3,R4AM4B+FR2 + + .word ANI_ZERO_XZVELS + .word ANI_CLEAR_CLIMB + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR rzr_rollthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;roll over once + WLW ANI_SET_ZVEL,-50000h,AM_ABS + WL 3,R3RL1B+FR11 + WL 3,R3RL1B+FR10 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,R3RL1B+FR9 + WL 3,R3RL1B+FR8 + WL 3,R3RL1B+FR7 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,R4AM4B+FR4 + WL 3,R4AM4B+FR3 + WL 3,R4AM4B+FR2 + + .word ANI_ZERO_XZVELS + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#***************************************************************************** + + SUBR rzr_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,R4AM4B+FR2 + WL 3,R4AM4B+FR3 + WL 3,R4AM4B+FR4 + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,R3RL1B+FR7 + WL 3,R3RL1B+FR8 + WL 3,R3RL1B+FR9 + WL 3,R3RL1B+FR10 + + .word ANI_ZEROVELS + + ;get up + WL 3,R3GU4A+FR3 + WL 3,R3GU4A+FR4 + WL 3,R3GU4A+FR5 + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR10 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#set_zvel2 + movi 52000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR rzr_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + + WL 2,R3GU4A+FR10 + WL 2,R3GU4A+FR8 + WL 2,R3GU4A+FR5 + WL ANI_SET_YVEL,39000h + + WL 3,R3AM3D+FR3 + WL 3,R3AM3D+FR4 + WL 3,R3AM3D+FR5 + WL 3,R3AM3D+FR6 + WL 3,R3AM3D+FR7 + WL 6,R3AM3D+FR1 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + +#***************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR rzr_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,R1TT5Z+FR2 + WL 3,R1TT5Z+FR3 + + SUBR rzr_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 22,999,80h,50h,90000h,TGT_CHEST|TGT_GROUND,0,57,-15 + WL ANI_CODE,hit_nearest + + WL 3,R3PN5A+FR1 + WL 3,R3PN5A+FR2 + WL 3,R3PN5A+FR3 + .word ANI_OFFSET,0,45,0 ;x,y,z + WL 13,R3PN5A+FR4 +; .word ANI_WAITHITGND +; .word ANI_ATTACK_ON_Z,AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + +; WLW ANI_ATTCHIMAGE,D4PN5L+FR4,10 ;image, zoff (priority) + WL 3,R3PN5A+FR5 + + WL ANI_CODE,DO_CROWD_CHEER + +; .word ANI_ATTACK_OFF + WL ANI_CODE,grnd_hit + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_BOUNCE,2 +; WLW ANI_ATTCHIMAGE,D4PN5L+FR5,10 ;image, zoff (priority) + WL 4,R3PN5A+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + .word ANI_OFFSET,0,0,20 ;x,y,z + WL 4,R3PN5A+FR5 + WL ANI_CODE,win_announce +; WLW ANI_ATTCHIMAGE,0,0 ;Turn it off +; .word ANI_SET_ATTACH +; .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + WL 40,R3PN5A+FR5 + + .word ANI_LOOP + +;Do another ground hit on opponent + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 4,R5RV5A+FR2 + WL 4,R5RV5A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 7,R5RV5A+FR4 + WL 7,R5RV5A+FR5 + WL 2,R5RV5A+FR6 + .word ANI_SOUND,4Ah + WL 5,R5RV5A+FR6 + WL 7,R5RV5A+FR7 + WL 7,R5RV5A+FR8 + WL 7,R5RV5A+FR9 + WL 2,R5RV5A+FR10 + .word ANI_SOUND,4Ah + WL 5,R5RV5A+FR10 + WL 7,R5RV5A+FR11 + WL 7,R5RV5A+FR12 + WL 7,R5RV5A+FR13 + WL 2,R5RV5A+FR14 + .word ANI_SOUND,4Ah + WL 5,R5RV5A+FR14 + WL 30,R5RV5A+FR15 + WL 6,R5RV5A+FR16 + WL 6,R5RV5A+FR17 +#floop WL 1000,R5RV5A+FR18 + WL ANI_GOTO,#floop + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** +* RAISE ARM IN VICTORY FROM A STANCE + + SUBR rzr_2_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + + WL 3,R1TT5Z+FR2 + WL 3,R1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR rzr_4_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + +#cont WL 4,R4SW4D+FR3 + WL 4,R4SW4D+FR4 + WL 4,R4SW4D+FR5 + WL 4,R4SW4D+FR6 + WL 4,R4SW4D+FR7 + WL 4,R4SW4D+FR8 + WL 4,R4SW4D+FR9 + WL 4,R4SW4D+FR10 + WL 4,R4SW4D+FR11 + + .word ANI_SET_RPTCOUNT,-6 ;set count to rnd from 0 to 6 + +#lp WL 4,R4SW4D+FR3 + WL 4,R4SW4D+FR4 + WL 4,R4SW4D+FR5 + WL 4,R4SW4D+FR6 + WL 4,R4SW4D+FR7 + WL 4,R4SW4D+FR8 + WL 4,R4SW4D+FR9 + WL 4,R4SW4D+FR10 + WL 4,R4SW4D+FR11 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#lp + WL ANI_CODE,check_raisearm_bit + WL ANI_IFSTATUS,#wakeup + + .word ANI_SET_RPTCOUNT,1000 + WL ANI_GOTO,#lp + +#wakeup + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACEDOWN + .word ANI_END + +#***************************************************************************** +* +* GET BUCKED OFF A PINNED OPPONENT + + SUBR rzr_buckoff_anim + + .ref set_buckoff_vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 4,R3PN5A+FR5 + WL 1,R3PN5A+FR4 + WL ANI_CODE,set_buckoff_vels + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 16,R3PN5A+FR6 + + ;now stand up + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR10 + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/RZRSEQ3.ASM b/RZRSEQ3.ASM new file mode 100755 index 0000000..e25c09b --- /dev/null +++ b/RZRSEQ3.ASM @@ -0,0 +1,3086 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/12/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "rzrseq3.asm" + .title "Razor Ramon animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "display.equ" + .include "damage.equ" + + .include "bamimg.h" + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "doinkimg.h" + .include "leximg.h" + + .include "miscimg.glo" ;temp!!! + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref MOVE_NAME_ANNC + + ;BRET + .ref hrt_hitonground_anim,hrt_3_head_held_anim + .ref hrt_flyout_anim,hrt_break_neck2_anim + .ref H2AH3A,H2AM3A,H2CP3A,H3BF3A,H3DU3A,H3FR3A,H3GU4A + .ref H3HB3A,H3RR3Z,H3PP3X,H3UC3X + + ;BAM BAM + .ref bam_hitonground_xflip_anim,bam_break_neck2_anim + .ref bam_flyout_anim,bam_3_head_held_anim + .ref bam_hitonground_anim + .ref B3BF3C,B3GU4A,B3RR3Z,B4TD3B,B4BF3A,B3HB3A + .ref B3FD3C,B3PP3Q,B4UC3B,B2AH2A + + ;DOINK + .ref dnk_hitonground_anim,dnk_break_neck2_anim + .ref dnk_flyout_anim,dnk_3_head_held_anim + .ref D3AE3B,D3BF3A,D3FD3E,D3GU4A,D3HT3Z,D3OS3A + .ref D3PM4C,D3RR3Z,D3SA3A,D3UC3A,D4SK4A,D3AK3A,D3PD3Z + + ;LEX + .ref lex_hitonground_anim,lex_flyout_anim + .ref lex_3_head_held_anim,lex_break_neck2_anim + .ref L3BF3B,L3CP3X,L3DU3A,L3FH3A,L4AM4B,L3BF3A,L4AH4B + .ref L3RR3Z,L3FD3B,L3GP3Z,L3UC3X + + ;RAZOR + .ref rzr_hitonground_anim,rzr_flyout_anim + .ref rzr_facedown_getup_anim,rzr_break_neck2_anim + .ref rzr_dizzy_anim,rzr_faceup_getup_anim,rzr_stand4_anim + .ref rzr_faceup_getup2_anim,rzr_flying_kick_anim + .ref rzr_combo_uppercut_anim + + ;SHAWN + .ref shn_hitonground_anim,shn_flyout_anim + .ref shn_3_head_held_anim,shn_break_neck2_anim + .ref S3BF3A,S3GU4A,S3OS3X,S4BF3A,S4AH3D,S3RR3Z + .ref S3FD3X,S3GP3X,S3UC3X + + ;TAKER + .ref und_hitonground_anim,und_flyout_anim,und_3_head_held_anim + .ref und_break_neck2_anim + .ref U3AE4A,U3CP3B,U3DU3B,U3FH3A,U4AM4C,U4BF3Z,U4BF3A + .ref U3RR3Z,U3PP3X,U3GP3X,U2AH3A,U3FD3X + + ;YOKO + .ref yok_hitonground_anim,yok_break_neck2_anim + .ref yok_3_head_held_anim,yok_flyout_anim + .ref Y3BF3A,Y3GU2A,Y3LB3A,Y3FL3W,Y3FD3A,Y3RL1A,Y3RR3Z + .ref Y3FD3N,Y3PP3Q,Y3BF3A + + ;MISC + .ref CALL_MISSES,am_I_dizzy,make_norm,make_white,tbukl_flip + .ref set_my_pal,set_position,set_skeleton_pal,face_inside + .ref set_my_pal,set_position,set_skeleton_pal + .ref start_smoke,SMALL_BOUNCE,CALL_SETUP,halve_bk_xvel + .ref set_xdrift,B4CD3A,HIT_THE_MAT,DO_GRUNT + .ref CALL_SPECIAL_MOVE,process_ptrs,DO_COMBO_MESS + .ref DO_RAZOR_RUG_SPEECH,DO_NONO,FIND_AND_KILL_ENDLESS + .ref CALL_THROWN_OUT,clear_opp_counts + + +#***************************************************************************** +* +* RUG SHAKE + SUBR rzr_combo_rugshake_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,16 + + WL 3,R3RG3B+FR1 + WL 3,R3RG3B+FR2 + WL 3,R3RG3B+FR3 + WL 3,R3RG3B+FR4 + + .word ANI_ATTACK_ON, AMODE_PUPPET,38,2,400,38 + WL 4,R3RG3B+FR5 + .word ANI_ATTACK_OFF + +;check if we hit + WL ANI_IFNOTSTATUS,#missedcx + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,-4 + + .word ANI_SET_RPTCOUNT,4 +#loopcx + .word ANI_CLR_BUTCOUNT + + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR6,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR7,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR8,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR9,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR10,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR11,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR12,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR13,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR14,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR15,#puppet_tbl,9 + + WL ANI_CODE,DO_RAZOR_RUG_SPEECH + + .word ANI_DEBRISAT,100,1,0,8,0 ;%chance,tbl index,x,y,z off + .word ANI_SHAKER,30 + .WORD ANI_INC_COMBO + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + WL ANI_CODE,impact_sound + .word ANI_DAMAGEOPP,D_RUGSLAM,RD_RUGSLAM + + WWLLW ANI_SUPERSLAVE2,4,R3RG3B+FR16,#puppet_tbl,10 + + .word ANI_DEC_RPTCOUNT + ;limit of 5 hits + WL ANI_IFNOT_RPTCOUNT,#donecx + + ;must hit super punch between hits to continue + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#donecx + + WL ANI_GOTO,#loopcx + +#donecx + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_SLAVEANIM,#release_tbl + .word ANI_DETACH + WL 15,R3RG3B+FR16 + .word ANI_OFFSET,0,0,-15 ;x,y,z + WL 4,R3RG3B+FR4 + .word ANI_SETFACING + .word ANI_FACEDOWN + WL 4,R3RG3B+FR3 + WL 4,R3RG3B+FR2 + WL 4,R3RG3B+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedcx + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + WL 4,R3RG3B+FR4 + WL 4,R3RG3B+FR3 + WL 4,R3RG3B+FR2 + WL 4,R3RG3B+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +***************************************************************************** + + SUBR rzr_rugshake_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,16 + + WL 3,R3RG3B+FR1 + WL 3,R3RG3B+FR2 + WL 3,R3RG3B+FR3 + WL 3,R3RG3B+FR4 + + .word ANI_ATTACK_ON, AMODE_PUPPET,38,2,40,38 + WL 3,R3RG3B+FR5 + .word ANI_ATTACK_OFF + +;check if we hit + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 + WL ANI_IFNOTSTATUS,missed_rug +pickup + .word ANI_DRAW_NAME,3 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,-4 + + .word ANI_SET_RPTCOUNT,4 +; .word ANI_SETOPPMODE,MODE_NOSHADOW +#loop +rpt_slam + .word ANI_CLR_BUTCOUNT + + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR6,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR7,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR8,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR9,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR10,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR11,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR12,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR13,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR14,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR15,#puppet_tbl,9 + + WL ANI_CODE,DO_RAZOR_RUG_SPEECH + + .word ANI_DEBRISAT,100,1,0,8,0 ;%chance,tbl index,x,y,z off + .word ANI_SHAKER,30 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + WL ANI_CODE,impact_sound + .word ANI_DAMAGEOPP,D_RUGSLAM,RD_RUGSLAM + + WWLLW ANI_SUPERSLAVE2,4,R3RG3B+FR16,#puppet_tbl,10 + + .word ANI_DEC_RPTCOUNT + + ;first two are free + WWL ANI_IF_RPTCOUNT_GE,4,#loop + + ;limit of 5 hits + WL ANI_IFNOT_RPTCOUNT,#done + + ;must hit super punch three times between hits to continue + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,2,#done0 + WL ANI_GOTO,#loop + +#done0 WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,2,#done + WL ANI_GOTO,#loop + +#done +; WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_SLAVEANIM,#release_tbl +; .word ANI_CLROPPMODE,MODE_NOSHADOW + .word ANI_DETACH + WL 15,R3RG3B+FR16 + .word ANI_OFFSET,0,0,-15 ;x,y,z + WL 4,R3RG3B+FR4 + .word ANI_SETFACING + .word ANI_FACEDOWN + WL 4,R3RG3B+FR3 + WL 4,R3RG3B+FR2 + WL 4,R3RG3B+FR1 + +; .word ANI_OFFSET,0,0,-15 ;x,y,z +; .word ANI_FACEDOWN +; .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +missed_rug + WL ANI_CODE,CALL_MISSES + WL 12,R3RG3B+FR6 + WL 4,R3RG3B+FR5 + WL 4,R3RG3B+FR4 + WL 4,R3RG3B+FR3 + WL 4,R3RG3B+FR2 + WL 4,R3RG3B+FR1 + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBRP impact_sound + + move *a13(ATTACH_PROC),a0,L + jrz #x + WRSNDX a0,RUGSLAM_YELL,RUGSLAM_IMPACT +#x rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2CP3A+FR8,38,-50,1 + LWWW H3RR3Z+FR2,33,-29,1 + LWWW H3RR3Z+FR3,44,-35,1 + LWWW H3RR3Z+FR4,16,-7,1 + LWWW H3RR3Z+FR5,8,10,1 + LWWW H3RR3Z+FR6,-1,96,1 + LWWW H3RR3Z+FR7,-2,107,1 + LWWW H3RR3Z+FR7,9,102,1 + LWWW H3RR3Z+FR9,32,79,1 + LWWW H3RR3Z+FR9,61,68,1 + LWWW H2CP3A+FR8,40,-50,1 + .long 0 +#Razor + LWWW R3RR3Z+FR2,35,-48,1 + LWWW R3RR3Z+FR3,33,-36,1 + LWWW R3RR3Z+FR4,32,-43,1 + LWWW R3RR3Z+FR5,19,-11,1 + LWWW R3RR3Z+FR6,0,34,1 + LWWW R3RR3Z+FR7,-5,93,1 + LWWW R3RR3Z+FR8,-5,121,1 + LWWW R3RR3Z+FR8,9,119,1 + LWWW R3RR3Z+FR9,32,83,1 + LWWW R3RR3Z+FR9,57,72,1 + LWWW R3RR3Z+FR2,37,-48,1 + .long 0 +#Taker + LWWW U3CP3B+FR1,32,-45,1 + LWWW U3RR3Z+FR2,36,-22,1 + LWWW U3RR3Z+FR3,40,-18,1 + LWWW U3RR3Z+FR4,6,-6,1 + LWWW U3RR3Z+FR5,2,15,1 + LWWW U3RR3Z+FR6,4,88,1 + LWWW U3RR3Z+FR7,-36,113,1 + LWWW U3RR3Z+FR7,-24,112,1 + LWWW U3RR3Z+FR7,4,104,1 + LWWW U3RR3Z+FR9,45,81,1 + LWWW U3CP3B+FR1,34,-45,1 + .long 0 +#Yokozuna + LWWW Y3RL1A+FR1,32,-37,1 + LWWW Y3RR3Z+FR2,43,-26,1 + LWWW Y3RR3Z+FR3,28,-35,1 + LWWW Y3RR3Z+FR4,6,-3,1 + LWWW Y3RR3Z+FR5,-1,18,1 + LWWW Y3RR3Z+FR6,0,95,1 + LWWW Y3RR3Z+FR7,-8,111,1 + LWWW Y3RR3Z+FR7,7,111,1 + LWWW Y3RR3Z+FR9,31,82,1 + LWWW Y3RR3Z+FR9,53,74,1 + LWWW Y3RL1A+FR1,34,-37,1 + .long 0 +#Shawn + LWWW S3RR3Z+FR2,30,-47,1 + LWWW S3RR3Z+FR3,30,-32,1 + LWWW S3RR3Z+FR4,33,-30,1 + LWWW S3RR3Z+FR5,12,-7,1 + LWWW S3RR3Z+FR6,3,19,1 + LWWW S3RR3Z+FR7,6,88,1 + LWWW S3RR3Z+FR8,-25,114,1 + LWWW S3RR3Z+FR9,-36,89,1 + LWWW S3RR3Z+FR9,-6,83,1 + LWWW S3RR3Z+FR10,54,65,1 + LWWW S3RR3Z+FR2,32,-47,1 + .long 0 +#BamBam + LWWW B3RR3Z+FR2,40,-40,1 + LWWW B3RR3Z+FR3,28,-43,1 + LWWW B3RR3Z+FR4,47,-14,1 + LWWW B3RR3Z+FR5,13,-6,1 + LWWW B3RR3Z+FR6,0,25,1 + LWWW B3RR3Z+FR7,-10,119,1 + LWWW B3RR3Z+FR8,-14,135,1 + LWWW B3RR3Z+FR9,-14,102,1 + LWWW B3RR3Z+FR9,12,93,1 + LWWW B3RR3Z+FR10,62,60,1 + LWWW B3RR3Z+FR2,42,-40,1 + .long 0 +#Doink + LWWW D3GU4A+FR1,39,-47,1 + LWWW D3RR3Z+FR1,39,-40,1 + LWWW D3RR3Z+FR2,45,-28,1 + LWWW D3RR3Z+FR3,22,1,1 + LWWW D3RR3Z+FR4,11,35,1 + LWWW D3RR3Z+FR5,-1,94,1 + LWWW D3RR3Z+FR6,-2,103,1 + LWWW D3RR3Z+FR6,14,89,1 + LWWW D3RR3Z+FR7,35,74,1 + LWWW D3RR3Z+FR7,59,68,1 + LWWW D3GU4A+FR1,41,-47,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3RR3Z+FR1,37,-46,1 + LWWW L3RR3Z+FR2,34,-36,1 + LWWW L3RR3Z+FR3,25,-50,1 + LWWW L3RR3Z+FR4,11,-15,1 + LWWW L3RR3Z+FR5,6,2,1 + LWWW L3RR3Z+FR6,1,66,1 + LWWW L3RR3Z+FR7,-5,100,1 + LWWW L3RR3Z+FR8,-2,82,1 + LWWW L3RR3Z+FR8,25,76,1 + LWWW L3RR3Z+FR9,46,46,1 + LWWW L3RR3Z+FR1,39,-46,1 + .long 0 + +#release_tbl + .long hrt_hitonground_anim,rzr_hitonground_anim + .long und_hitonground_anim,yok_hitonground_anim + .long shn_hitonground_anim,bam_hitonground_anim + .long dnk_hitonground_anim,0,lex_hitonground_anim + + +#***************************************************************************** +* +* SLIDING RUG SHAKE + + SUBR rzr_sliding_rug_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_STARTATTACK,AT_PUPPET,15 + + LEAPATOPP 15,999,150,90,90000h,TGT_FEET,0,0,10 + WL ANI_SET_YVEL,20000h + .ref no_bk_xvel + WL ANI_CODE,no_bk_xvel + + .word ANI_FRICTION,4000h + + WL 3,R3RC3R+FR1 + WL 3,R3RC3R+FR2 + WL 3,R3RC3R+FR3 + + .word ANI_ADD_MOVE,MOVE_C_6,2,2 + .word ANI_ATTACK_ON, AMODE_PUPPET,28,2,34,38 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#pickup0 + WWL ANI_WAITHITOPP,10,R3RC3R+FR4 + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + +;check if we hit + WL ANI_IFNOTSTATUS,missed_rug1 + WL ANI_IFBLOCKED,missed_rug2 + WWL ANI_IFOPPMODE,MODE_DEAD,missed_rug1 + .word ANI_DRAW_NAME,3 + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,-4 + + WL ANI_GOTO,#go + +#pickup0 + WWL ANI_WAITHITOPP,10,R3RC3R+FR4 + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + +;check if we hit + WL ANI_IFNOTSTATUS,missed_rug1 + WL ANI_IFBLOCKED,missed_rug1 + WWL ANI_IFOPPMODE,MODE_DEAD,missed_rug1 + + WL ANI_GOTO,pickup + +missed_rug2 + WL 8,R3RC3R+FR4 +missed_rug1 + WL ANI_CODE,CALL_MISSES + WL 14,R3RC3R+FR4 + WL 3,R3RC3R+FR3 + WL 3,R3RC3R+FR2 + WL 3,R3RC3R+FR1 + +; WL 4,R3RG3B+FR5 +; WL 4,R3RG3B+FR4 +; WL 4,R3RG3B+FR3 +; WL 4,R3RG3B+FR2 +; WL 4,R3RG3B+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +***************************************************************************** +* +* RUG SHAKE FROM HEADHOLD + + SUBR rzr_rugshake2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_STARTATTACK,AT_PUPPET,16 + + .word ANI_ATTACK_ON, AMODE_PUPPET,38,2,40,38 + WL 1,R3RG3B+FR3 + .word ANI_ATTACK_OFF + +;check if we hit + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 + WL ANI_IFNOTSTATUS,missed_rug + WL ANI_IFBLOCKED,missed_rug + + .word ANI_DRAW_NAME,3 + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,-4 + + + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR4,#puppet_tbl,1 +#go WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR5,#puppet_tbl,2 + .word ANI_SET_RPTCOUNT,4 + +#loop + .word ANI_CLR_BUTCOUNT + + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR8,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR9,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR10,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR11,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR12,#puppet_tbl,9 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR13,#puppet_tbl,10 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR14,#puppet_tbl,11 + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR15,#puppet_tbl,12 + + WL ANI_CODE,DO_RAZOR_RUG_SPEECH + + .word ANI_DEBRISAT,100,1,0,8,0 ;%chance,tbl index,x,y,z off + .word ANI_SHAKER,30 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + WL ANI_CODE,impact_sound + .word ANI_DAMAGEOPP,D_RUGSLAM,RD_RUGSLAM + + WWLLW ANI_SUPERSLAVE2,4,R3RG3B+FR16,#puppet_tbl,13 + .word ANI_SET_RPTCOUNT,3 + + WL ANI_GOTO,rpt_slam +;#missed +; WL ANI_CODE,CALL_MISSES +; WL 12,R3RG3B+FR6 +; WL 4,R3RG3B+FR5 +; WL 4,R3RG3B+FR4 +; WL 4,R3RG3B+FR3 +; WL 4,R3RG3B+FR2 +; WL 4,R3RG3B+FR1 +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3HB3A+FR1,40,-31,0 + LWWW H3HB3A+FR2,48,10,0 + LWWW H3HB3A+FR3,56,36,0 + LWWW H3UC3X+FR1,44,45,0 + LWWW H3UC3X+FR3,10,26,0 + LWWW H3UC3X+FR5,32,2,0 + LWWW H3RR3Z+FR4,16,-7,1 + LWWW H3RR3Z+FR5,8,10,1 + LWWW H3RR3Z+FR6,-1,96,1 + LWWW H3RR3Z+FR7,-2,107,1 + LWWW H3RR3Z+FR7,10,102,1 + LWWW H3RR3Z+FR9,32,79,1 + LWWW H3RR3Z+FR9,61,68,1 + LWWW H2CP3A+FR8,40,-50,1 + .long 0 +#Razor + LWWW R3HB3A+FR2,57,-13,0 + LWWW R3HB3A+FR3,58,13,0 + LWWW R2AH2D+FR6,67,46,0 + LWWW R3FD3B+FR2,36,47,0 + LWWW R3FD3B+FR3,28,33,0 + LWWW R3FD3B+FR5,26,-7,0 + LWWW R3RR3Z+FR5,19,1,1 + LWWW R3RR3Z+FR6,0,34,1 + LWWW R3RR3Z+FR7,-5,93,1 + LWWW R3RR3Z+FR8,-5,121,1 + LWWW R3RR3Z+FR8,9,119,1 + LWWW R3RR3Z+FR9,32,83,1 + LWWW R3RR3Z+FR9,57,72,1 + LWWW R3RR3Z+FR2,37,-48,1 + .long 0 +#Taker + LWWW U4BF3A+FR3,22,-2,0 + LWWW U4BF3A+FR2,46,28,0 + LWWW U4AH3A+FR2,55,55,0 + LWWW U3FD3X+FR2,53,54,1 + LWWW U3FD3X+FR3,44,38,1 + LWWW U3FD3X+FR4,31,-2,1 + LWWW U3RR3Z+FR4,6,-6,1 + LWWW U3RR3Z+FR5,3,15,1 + LWWW U3RR3Z+FR6,4,88,1 + LWWW U3RR3Z+FR7,-35,113,1 + LWWW U3RR3Z+FR7,-24,112,1 + LWWW U3RR3Z+FR7,4,104,1 + LWWW U3RR3Z+FR9,45,81,1 + LWWW U3CP3B+FR1,34,-46,1 + .long 0 +#Yokozuna + LWWW Y3LB3A+FR9,43,-13,0 + LWWW Y2AM2C+FR3,57,9,0 + LWWW Y2AM2C+FR1,66,35,0 + LWWW Y3FD3A+FR1,59,44,0 + LWWW Y3FD3A+FR2,24,60,0 + LWWW Y3FD3A+FR4,23,10,0 + LWWW Y3RR3Z+FR4,6,-4,1 + LWWW Y3RR3Z+FR5,-1,17,1 + LWWW Y3RR3Z+FR6,1,93,1 + LWWW Y3RR3Z+FR7,-8,109,1 + LWWW Y3RR3Z+FR7,7,108,1 + LWWW Y3RR3Z+FR9,31,79,1 + LWWW Y3RR3Z+FR9,53,72,1 + LWWW Y3RL1A+FR1,34,-37,1 + .long 0 +#Shawn + LWWW S4BF3A+FR3,20,-21,0 + LWWW S4BF3A+FR2,52,5,0 + LWWW S4AH3D+FR5,72,38,0 + LWWW S3UC3X+FR2,45,44,0 + LWWW S3UC3X+FR4,32,21,0 + LWWW S3UC3X+FR5,34,-3,0 + LWWW S3RR3Z+FR5,12,-10,1 + LWWW S3RR3Z+FR6,3,16,1 + LWWW S3RR3Z+FR7,6,84,1 + LWWW S3RR3Z+FR8,-25,110,1 + LWWW S3RR3Z+FR9,-36,84,1 + LWWW S3RR3Z+FR9,-6,75,1 + LWWW S3RR3Z+FR10,54,61,1 + LWWW S3RR3Z+FR2,32,-49,1 + .long 0 +#BamBam + LWWW B3HB3A+FR2,54,-22,0 + LWWW B4AM4A+FR8,55,3,0 + LWWW B4AH4A+FR6,48,36,0 + LWWW B4UC3B+FR2,44,27,0 + LWWW B4UC3B+FR3,25,0,0 + LWWW B4UC3B+FR5,25,-8,0 + LWWW B3RR3Z+FR5,10,4,1 + LWWW B3RR3Z+FR6,0,22,1 + LWWW B3RR3Z+FR7,-5,115,1 + LWWW B3RR3Z+FR8,-10,131,1 + LWWW B3RR3Z+FR9,-17,97,1 + LWWW B3RR3Z+FR9,12,89,1 + LWWW B3RR3Z+FR10,57,56,1 + LWWW B3RR3Z+FR2,42,-42,1 + .long 0 +#Doink + LWWW D3PP3A+FR2,43,-20,0 + LWWW D3PP3A+FR1,53,13,0 + LWWW D3AK3A+FR3,35,49,0 + LWWW D3UC3A+FR2,52,52,0 + LWWW D3UC3A+FR4,20,35,0 + LWWW D3UC3A+FR6,28,-16,0 + LWWW D3RR3Z+FR3,22,1,1 + LWWW D3RR3Z+FR4,6,35,1 + LWWW D3RR3Z+FR5,-6,94,1 + LWWW D3RR3Z+FR6,-4,103,1 + LWWW D3RR3Z+FR6,12,92,1 + LWWW D3RR3Z+FR7,35,74,1 + LWWW D3RR3Z+FR7,59,68,1 + LWWW D3GU4A+FR1,41,-49,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4WS4B+FR2,53,-5,0 + LWWW L4WS4B+FR1,61,23,0 + LWWW L3UC3X+FR1,53,41,0 + LWWW L3UC3X+FR2,52,35,0 + LWWW L3UC3X+FR3,28,17,0 + LWWW L3UC3X+FR4,22,-8,0 + LWWW L3RR3Z+FR4,6,-15,1 + LWWW L3RR3Z+FR5,1,2,1 + LWWW L3RR3Z+FR6,1,66,1 + LWWW L3RR3Z+FR7,-5,100,1 + LWWW L3RR3Z+FR8,-2,82,1 + LWWW L3RR3Z+FR8,21,80,1 + LWWW L3RR3Z+FR9,46,46,1 + LWWW L3RR3Z+FR1,39,-46,1 + .long 0 + +#release_tbl + .long hrt_hitonground_anim,rzr_hitonground_anim + .long und_hitonground_anim,yok_hitonground_anim + .long shn_hitonground_anim,bam_hitonground_anim + .long dnk_hitonground_anim,0,lex_hitonground_anim + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR rzr_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,R4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,R4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,R4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,R4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,R4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,R4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,R4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,R4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + + WL 1,R4ST4G+FR1 + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref rzr_fall_back_anim + + WL ANI_CHANGEANIM,rzr_fall_back_anim +; .word ANI_END + +#nodead + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 0d0dh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + + +#***************************************************************************** + + SUBR rzr_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,R3BF3A+FR1 + WL 4,R3BF3A+FR2 + + WL 4,R3BF3A+FR4 + + WL 4,R3BF3A+FR5 + WL 4,R3BF3A+FR6 + WL 4,R3BF3A+FR7 + WL 4,R3BF3A+FR9 + WL 4,R3BF3A+FR10 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR rzr_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,R3HB3A+FR2 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,R2AH2D+FR3 + WL 3,R2AH2D+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,R2AH2D+FR6 + WL 3,R2AH2D+FR7 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR rzr_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,R3HB3A+FR2 + WL 3,R1TT5Z+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* HIP TOSS + + SUBR rzr_combo_hiptoss_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,10 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,60,55,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + .word ANI_ATTACK_ON, AMODE_PUPPET,19,61,44,16 + WWL ANI_WAITHITOPP,10,R4FT3A+FR2 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc + + ;got him + WL ANI_CODE,DO_GRUNT + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,6,R4FT3A+FR2,#puppet_tbl,0 + + .word ANI_SET_RPTCOUNT,4 ;5 times +#hiptoss_loop + .word ANI_CLR_BUTCOUNT + + WL ANI_SET_YVEL,10000h + + .WORD ANI_INC_COMBO + WWLLW ANI_SUPERSLAVE2,5,R4FT3A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR4,#puppet_tbl,2 + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_outc + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR5,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR6,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR7,#puppet_tbl,5 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_BSLAM,RD_BSLAM + + WWLLW ANI_SUPERSLAVE2,2,R4FT3A+FR8,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR9,#puppet_tbl,7 + + WL ANI_OPPOFFSET,#release_offsets + WL ANI_XFLIP_TBL,#xflip_tbl + + WL ANI_SLAVEANIM,SLAM_HIM + WLLL ANI_SETOPPVELS,0,0a0000h,0000h ;x,y,z vels + .WORD ANI_XFLIP + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + .word ANI_DETACH + + .word ANI_OFFSET,40,0,0 + + .WORD ANI_XFLIP + WL 3,R3DC3C+FR10 + .WORD ANI_XFLIP + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR9 + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#DO_END_MOVE + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#EXIT_MOVE + + .WORD ANI_SET_ATTACH + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + WL ANI_GOTO,#hiptoss_loop +#DO_END_MOVE + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_EDGE + WL ANI_CHANGEANIM,rzr_combo_razors_edge_anim +#NO_EDGE + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#EXIT_MOVE + WL ANI_CHANGEANIM,rzr_combo_uppercut_anim + +#EXIT_MOVE + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedbc + WL 10,R4FT3A+FR2 +#missedc + WL 20,R4FT3A+FR2 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_outc + WL ANI_CODE,CALL_THROWN_OUT + WLLL ANI_ATTACHVEL,-98000h,0b0000h,0h ;x,y,z + WL ANI_SLAVEANIM,flyout_tbl + WL ANI_OPPOFFSET,release_table + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + + WL 4,R4FT3A+FR5 + WL 4,R4FT3A+FR6 + WL 4,R4FT3A+FR7 + + .word ANI_ZEROVELS + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,10 + + WL 4,R4FT3A+FR8 + WL 4,R4FT3A+FR9 + + .word ANI_OFFSET,-40,0,0 + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + + + + .ref hrt_slamnobounce_anim ;bret + .ref rzr_slamnobounce_anim ;razor + .ref und_slamnobounce_anim ;taker + .ref yok_slamnobounce_anim ;yoko + .ref shn_slamnobounce_anim ;shawn + .ref bam_slamnobounce_anim ;bam + .ref dnk_slamnobounce_anim ;doink + .ref und_slamnobounce_anim ;spare + .ref lex_slamnobounce_anim ;lex +SLAM_HIM + .long hrt_slamnobounce_anim ;bret + .long rzr_slamnobounce_anim ;razor + .long und_slamnobounce_anim ;taker + .long yok_slamnobounce_anim ;yoko + .long shn_slamnobounce_anim ;shawn + .long bam_slamnobounce_anim ;bam + .long dnk_slamnobounce_anim ;doink + .long und_slamnobounce_anim ;spare + .long lex_slamnobounce_anim ;lex + + +***************************************************************************** + + + SUBR rzr_2_hiptoss2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,6 +; WL 2,R1TT5Z+FR2 +; WL 2,R1TT5Z+FR3 + + SUBR rzr_4_hiptoss2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + ;we need at least 2 ticks before the attack gets turned on! + .word ANI_STARTATTACK,AT_PUPPET,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,60,55,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,R4FT3A+FR2 + .word ANI_ATTACK_ON,AMODE_PUPPET_TOSS,19,61,44,16 + WWL ANI_WAITHITOPP,8,R4FT3A+FR2 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + + WL ANI_GOTO,#cont + + SUBR rzr_2_hiptoss_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 +; WL 2,R1TT5Z+FR2 +; WL 2,R1TT5Z+FR3 + + SUBR rzr_4_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 +; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + WL 4,R4FT3A+FR2 + + .word ANI_ATTACK_ON,AMODE_PUPPET_TOSS,19,61,44,16 + WWL ANI_WAITHITOPP,4,R4FT3A+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,R4FT3A+FR2 + .word ANI_ATTACK_OFF + +#cont + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#got_him + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + .word ANI_DRAW_NAME,10 + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,6,R4FT3A+FR2,#puppet_tbl,0 + + WL ANI_SET_YVEL,10000h + + WWLLW ANI_SUPERSLAVE2,4,R4FT3A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR4,#puppet_tbl,2 + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_out + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR5,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR6,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR7,#puppet_tbl,5 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_BSLAM,RD_BSLAM + .word ANI_OPP_GETUP,300 + + WWLLW ANI_SUPERSLAVE2,2,R4FT3A+FR8,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,R4FT3A+FR9,#puppet_tbl,7 + + WL ANI_OPPOFFSET,#release_offsets + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#recover_tbl + WLLL ANI_SETOPPVELS,-20000h,50000h,0h ;x,y,z vels + .word ANI_DETACH + + .word ANI_OFFSET,-40,0,0 + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +#missedb +; .ref ck_hiptoss +; WL ANI_CODE,ck_hiptoss +; WL ANI_IFNOTSTATUS,#got_him + + WL 10,R4FT3A+FR2 +;Delay longer if 2nd hiptoss in quick succession! + .ref hiptoss_delay + WL ANI_CODE,hiptoss_delay + WL ANI_IFNOTSTATUS,#missed + WL 24,R4FT3A+FR2 +#missed + WL 8,R4FT3A+FR2 + + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WL ANI_CODE,CALL_THROWN_OUT + WLLL ANI_ATTACHVEL,-98000h,0b0000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,release_table + .word ANI_DETACH + + WL 3,R4FT3A+FR5 + WL 3,R4FT3A+FR6 + WL 3,R4FT3A+FR7 + + .word ANI_ZEROVELS + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,10 + + WL 3,R4FT3A+FR8 + WL 4,R4FT3A+FR9 + + .word ANI_OFFSET,-40,0,0 + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + + + +release_table + ; X Y + .word 0,32 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 32,50 ;BamBam + .word 32,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + + +******** +* #include "r_hpsl.img" + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AH3A+FR5,43,11,0 + LWWW H2AM3A+FR1,25,27,0 + LWWW H2AM3A+FR7,-4,17,0 + LWWW H3FR3A+FR2,-25,24,0 + LWWW H3FR3A+FR3,-22,28,0 + LWWW H3FR3A+FR4,-31,20,0 + LWWW H3FR3A+FR5,-56,26,0 + LWWW H2CP3A+FR8,-130,-17,1 +#Razor + LWWW R3TD3A+FR1,36,7,0 + LWWW R3TD3A+FR3,16,8,0 + LWWW R3TD3A+FR4,-21,18,0 + LWWW R3TD3A+FR5,-17,20,0 + LWWW R3TD3A+FR6,-18,12,0 + LWWW R3TD3A+FR7,-26,28,0 + LWWW R3TD3A+FR8,-59,34,0 + LWWW R3GU2A+FR1,-134,-15,1 +#Taker + LWWW U3AE4A+FR1,41,23,0 + LWWW U4AM4C+FR4,18,15,0 + LWWW U3FH3A+FR1,13,9,1 + LWWW U3FH3A+FR2,-13,36,1 + LWWW U3FH3A+FR3,-26,21,1 + LWWW U3FH3A+FR4,-48,29,1 + LWWW U3FH3A+FR5,-72,50,1 + LWWW U3CP3B+FR1,-138,-11,1 +#Yokozuna + LWWW Y3FL3W+FR1,39,10,0 + LWWW Y3FL3W+FR2,9,17,0 + LWWW Y3FL3W+FR3,-34,25,0 + LWWW Y3FL3W+FR4,-32,38,0 + LWWW Y3FL3W+FR5,-23,32,0 + LWWW Y3FL3W+FR6,-57,36,0 + LWWW Y3FL3W+FR7,-78,36,0 + LWWW Y3FD3A+FR7,-117,9,0 +#Shawn + LWWW S3OS3X+FR2,25,8,1 + LWWW S3OS3X+FR4,1,23,1 + LWWW S3OS3X+FR5,-41,27,1 + LWWW S3OS3X+FR6,-37,57,1 + LWWW S3OS3X+FR7,-25,48,1 + LWWW S3OS3X+FR8,-27,45,1 + LWWW S3OS3X+FR9,-72,50,1 + LWWW S3OS3X+FR10,-113,-7,1 +#BamBam + LWWW B4TD3B+FR1,36,0,0 + LWWW B4TD3B+FR3,16,10,0 + LWWW B4TD3B+FR4,-10,19,0 + LWWW B4TD3B+FR5,-12,50,0 + LWWW B4TD3B+FR6,-12,53,0 + LWWW B4TD3B+FR7,-37,45,0 + LWWW B4TD3B+FR8,-52,47,0 + LWWW B4TD3B+FR9,-101,2,0 +#Doink + LWWW D3AE3B+FR8,52,10,0 + LWWW D3PM4C+FR2,10,16,0 + LWWW D3OS3A+FR1,1,19,0 + LWWW D3OS3A+FR3,-30,27,0 + LWWW D3OS3A+FR4,-27,19,0 + LWWW D3OS3A+FR6,-28,34,0 + LWWW D3FD3E+FR2,-59,16,0 + LWWW D3SA3A+FR2,-118,-10,1 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR2,51,14,0 + LWWW L3FH3A+FR1,21,20,0 + LWWW L3FH3A+FR2,-8,13,0 + LWWW L3FH3A+FR3,-9,33,0 + LWWW L3FH3A+FR4,-6,25,0 + LWWW L3FH3A+FR5,-16,20,0 + LWWW L3FH3A+FR6,-48,31,0 + LWWW L3CP3X+FR1,-129,-10,1 + +* +******** + +#release_offsets + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 20,0 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 1 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#recover_tbl + .long hrt_hitonground_anim,rzr_hitonground_anim + .long und_hitonground_anim,yok_hitonground_anim + .long shn_hitonground_anim,bam_hitonground_xflip_anim + .long dnk_hitonground_anim,0,lex_hitonground_anim + +#flyout_tbl +flyout_tbl + .long hrt_flyout_anim + .long rzr_flyout_anim + .long und_flyout_anim + .long yok_flyout_anim + .long shn_flyout_anim + .long bam_flyout_anim + .long dnk_flyout_anim + .long 0 + .long lex_flyout_anim + +#****************************************************************************** + + SUBR rzr_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_STARTATTACK,AT_PUPPET,16 + + WL 2,R1TT5Z+FR2 + WL 2,R1TT5Z+FR3 + + SUBR rzr_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_RAWSOUND,2055 ;big cheer #1 +; .word ANI_CHEER,3 + + .word ANI_STARTATTACK,AT_PUPPET,12 + + WL 3,R3RG3B+FR2 + + LEAPATOPP 8,999,80,80,30000h,TGT_HEAD,26,6,-2 + + WL 4,R3RG3B+FR3 + WL 4,R3RG3B+FR4 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET2,28,0,23,25 ;mode,x,y,w,h + WL 4,R3RG3B+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,clear_opp_counts + WL ANI_CODE,CALL_SETUP + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,98h ;neck break (5-7 ticks late) + + WWLLW ANI_SUPERSLAVE2,3,R3RG3B+FR6,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,R3RG3Z+FR1,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,R3RG3Z+FR2,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,R3RG3Z+FR3,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,R4GH3A+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,R4GH3A+FR7,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,R4GH3A+FR7 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,R3RG3B+FR5 + WL 3,R3RG3B+FR4 + WL 3,R3RG3B+FR3 + WL 3,R3RG3B+FR2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,25,-35,0 + LWWW H3GU4A+FR2,30,-38,0 + LWWW H3DU3A+FR3,30,-32,1 + LWWW H3DU3A+FR4,37,-30,1 + LWWW H3DU3A+FR5,52,-43,1 + LWWW H3BF3A+FR1,52,-39,0 + .long 0 +#Razor + LWWW R3GU2A+FR3,28,-26,0 + LWWW R3GU4A+FR3,33,-32,0 + LWWW R3GU4A+FR5,43,-35,0 + LWWW R3DU3B+FR2,40,-44,1 + LWWW R3DU3B+FR4,55,-42,1 + LWWW R3BF3A+FR1,59,-41,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,29,-27,1 + LWWW U3DU3B+FR5,30,-28,1 + LWWW U3DU3B+FR6,37,-30,1 + LWWW U3DU3B+FR8,32,-34,1 + LWWW U3DU3B+FR10,54,-35,1 + LWWW U4BF3Z+FR5,58,-20,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,33,-21,0 + LWWW Y3GU2A+FR2,36,-22,0 + LWWW Y3GU2A+FR6,29,-33,0 + LWWW Y3GU2A+FR8,32,-43,0 + LWWW Y3GU2A+FR11,50,-41,0 + LWWW Y3BF3A+FR1,58,-29,0 + .long 0 +#Shawn + LWWW S3GU2A+FR1,37,-29,0 + LWWW S3GU4A+FR2,38,-30,0 + LWWW S3GU4A+FR4,41,-34,0 + LWWW S3GU4A+FR5,39,-39,0 + LWWW S3GU4A+FR7,52,-46,0 + LWWW S3BF3A+FR1,42,-40,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,32,-25,0 + LWWW B3GU4A+FR5,44,-29,0 + LWWW B3GU4A+FR7,40,-29,0 + LWWW B3GU4A+FR8,35,-33,0 + LWWW B3GU4A+FR10,47,-42,0 + LWWW B3BF3C+FR5,60,-33,0 + .long 0 +#Doink + LWWW D3GU4A+FR2,33,-32,0 + LWWW D3GU4A+FR3,32,-36,0 + LWWW D3GU4A+FR5,33,-28,0 + LWWW D3GU4A+FR7,47,-38,0 + LWWW D3GU4A+FR8,49,-38,0 + LWWW D3BF3A+FR2,54,-39,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GU4A+FR1,31,-29,0 + LWWW L3GU4A+FR2,42,-28,0 + LWWW L3DU3A+FR4,13,-27,1 + LWWW L3DU3A+FR6,19,-44,1 + LWWW L3DU3A+FR7,35,-50,1 + LWWW L3BF3B+FR5,54,-37,0 + .long 0 + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR rzr_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,RZR_TBUKLY + + .word ANI_SHAKECORNER + + .word ANI_OFFSET,-2,7,-4 ;-10,17,-16, distributed over 5 frames + WL 2,R2CT2E+FR1 + .word ANI_OFFSET,-2,5+3,-4 + WL 2,R2CT2E+FR2 + .word ANI_OFFSET,-2,5+3,-4 + WL 2,R2CT2E+FR3 + .word ANI_OFFSET,-2,-1+3,-4 + WL 2,R2CT2E+FR4 + .word ANI_OFFSET,-2,6+3,0 + WL 2,R2CT2E+FR5 + .word ANI_SHAKECORNER + .word ANI_OFFSET,0,12,0 + WL 2,R2CT2E+FR6 + .word ANI_OFFSET,0,3,0 + WL 2,R2CT2E+FR7 + .word ANI_OFFSET,0,1,0 + WL 2,R2CT2E+FR8 + .word ANI_OFFSET,0,-1,0 + WL 2,R2CT2E+FR9 + .word ANI_OFFSET,0,8,0 + WL 2,R2CT2E+FR10 + .word ANI_OFFSET,0,12,0 + WL 2,R2CT2E+FR11 + .word ANI_SHAKECORNER + .word ANI_OFFSET,0,1,0 + WL 2,R2CT2E+FR2 + .word ANI_OFFSET,0,2,0 + WL 2,R2CT2E+FR3 + .word ANI_OFFSET,0,6,0 + WL 2,R2CT2E+FR4 + .word ANI_OFFSET,0,7,0 + WL 2,R2CT2E+FR5 + .word ANI_OFFSET,0,9,0 + WL 2,R2CT2E+FR6 + + .word ANI_OFFSET,-4,-2,0 + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_SCROLL_CTRL,SC_RESTORE + +#repeat + WL 5,R4SB4A+FR1 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR2 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR3 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR4 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR5 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR6 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR7 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR8 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR9 + WL ANI_CODE,tbukl_flip + WL 5,R4SB4A+FR10 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR rzr_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL ANI_CODE,face_inside + + .word ANI_SHAKECORNER + .word ANI_OFFSET,4,2,0 + WL 2,R2CT2E+FR6 + .word ANI_OFFSET,0,-9,0 + WL 2,R2CT2E+FR5 + .word ANI_OFFSET,0,-7,0 + WL 2,R2CT2E+FR4 + .word ANI_OFFSET,0,-6,0 + WL 2,R2CT2E+FR3 + .word ANI_OFFSET,0,-2,0 + WL 2,R2CT2E+FR2 + .word ANI_SHAKECORNER + .word ANI_OFFSET,0,-1,0 + WL 2,R2CT2E+FR11 + .word ANI_OFFSET,0,-12,0 + WL 2,R2CT2E+FR10 + .word ANI_OFFSET,0,-8,0 + WL 2,R2CT2E+FR9 + .word ANI_OFFSET,0,1,0 + WL 2,R2CT2E+FR8 + .word ANI_OFFSET,0,-1,0 + WL 2,R2CT2E+FR7 + .word ANI_OFFSET,0,-3,0 + .word ANI_SHAKECORNER + WL 2,R2CT2E+FR6 + .word ANI_OFFSET,0,-12,0 + WL 2,R2CT2E+FR5 + .word ANI_OFFSET,2,-9,0 + WL 2,R2CT2E+FR4 + .word ANI_OFFSET,2,-2,4 + WL 2,R2CT2E+FR3 + .word ANI_OFFSET,2,-8,4 + WL 2,R2CT2E+FR2 + .word ANI_OFFSET,2,-8,4 + WL 2,R2CT2E+FR1 + .word ANI_OFFSET,2,-7,4 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#****************************************************************************** + + SUBR rzr_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 3,R4CO4A+FR1 + WL 3,R4CO4A+FR2 + WL 3,R4CO4A+FR3 + WL 3,R4CO4A+FR4 + WL 15,R4CO4A+FR5 + WL 3,R4CO4A+FR6 + WL 3,R4CO4A+FR7 + WL 3,R4CO4A+FR8 + WL 3,R4CO4A+FR7 + WL 3,R4CO4A+FR6 + WL 3,R4CO4A+FR5 + WL 3,R4CO4A+FR6 + WL 3,R4CO4A+FR7 + WL 3,R4CO4A+FR8 + WL 3,R4CO4A+FR7 + WL 2,R4CO4A+FR6 + WL 12,R4CO4A+FR5 + WL 2,R4CO4A+FR4 + WL 2,R4CO4A+FR3 + WL 2,R4CO4A+FR2 + WL 2,R4CO4A+FR1 + +; .ref set_taunt_bit +; WL ANI_CODE,set_taunt_bit + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,rzr_stand4_anim +; .word ANI_END + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR rzr_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 2,R3MS3Q+FR1 + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,80000h + WL 3,R3MS3Q+FR2 + WL 3,R3MS3Q+FR3 + WL 3,R3MS3Q+FR4 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL 3,R3MS3Q+FR1 + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + + SUBR rzr_break_face3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL 3,R3MS3Z+FR3 + WL ANI_SET_YVEL,078000h + WL 100,R3MS3Z+FR3 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + +* Head slams into mat +;From head slam + + SUBR rzr_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + WL 2,R3MS3Q+FR1 + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,40000h + WL 3,R3MS3Q+FR2 + WL 3,R3MS3Q+FR3 + WL 3,R3MS3Q+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,R3MS3Q+FR2 + WL 3,R3MS3Q+FR3 + WL 3,R3MS3Q+FR4 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 2,R3RL1B+FR6 ;Face down + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + +#***************************************************************************** +* +* uslash - uslash - uslash - uslash - flykick + + SUBR rzr_uslashes_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SET_RPTCOUNT,2 ;2 times + + .word ANI_STARTATTACK,AT_HDKNEES,10 + WL 2,R3RZ3S+FR2 +#rpt + .word ANI_CLR_BUTCOUNT + + WL 1,R3RZ3S+FR2 + WL 2,R3RZ3S+FR3 + WL 1,R3RZ3S+FR4 + + .word ANI_ATTACK_ON,AMODE_HEADUSLASH,35,29,67,121 + WL 2,R3RZ3S+FR5 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFNOTSTATUS,#missed + + WL 1,R3RZ3S+FR6 + WL 2,R3RZ3S+FR7 + WL 1,R3RZ3S+FR8 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + + .word ANI_CLR_BUTCOUNT + + WL 2,R3RZ3S+FR2 + WL 1,R3RZ3S+FR3 + WL 2,R3RZ3S+FR4 + + .word ANI_ATTACK_ON,AMODE_HEADUSLASH,35,29,67,121 + WL 1,R3RZ3S+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WL ANI_CODE,#go_high + + WWWL ANI_IF_BUTCOUNT_GE,KICKB_COUNT,1,#do_flykick + +#exit +#missed + .word ANI_DETACH + WL 2,R3RZ3S+FR6 + WL 2,R3RZ3S+FR7 + WL 2,R3RZ3S+FR8 + WL 2,R3RZ3S+FR9 + WL 2,R3RZ3S+FR10 + WL 2,R3RZ3S+FR12 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#do_flykick + + WL ANI_CODE,CALL_SPECIAL_MOVE + WL 2,R3RZ3S+FR6 + WL 2,R3RZ3S+FR7 +; WL 2,R3RZ3S+FR8 +; WL 2,R3RZ3S+FR9 +; WL 2,R3RZ3S+FR10 + + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,rzr_flying_kick_anim + +#go_high + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + + move *a14(WRESTLERNUM),a0 + cmpi 3,a0 ;Yoko too fat + jrz #x + + movi 40000h,a0 ;Go higher for last hit! + move a0,*a14(OBJ_YVEL),L +#x rets + + +#***************************************************************************** +* +* dslash - dslash - dslash - dslash - piledriver + + SUBR rzr_dslashes_to_head_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SET_RPTCOUNT,3 ;2 times + + .word ANI_STARTATTACK,AT_HDKNEES,8 + WL 1,R3RD3D+FR1 +#rpt +; WL ANI_SET_YVEL,30000h + .word ANI_CLR_BUTCOUNT + + WL 2,R3RD3D+FR2 + WL 1,R3RD3D+FR3 + WL 2,R3RD3D+FR4 + WL 1,R3RD3D+FR5 + WL 1,R3RD3D+FR6 + + .word ANI_ATTACK_ON,AMODE_HEADDSLASH,33,33,80,121 + WL 2,R3RD3D+FR7 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFNOTSTATUS,#missed + + WL 1,R3RD3D+FR8 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + + .word ANI_CLR_BUTCOUNT + + WL 2,R3RD3D+FR2 + WL 1,R3RD3D+FR3 + WL 2,R3RD3D+FR4 + WL 1,R3RD3D+FR5 + WL 1,R3RD3D+FR6 + + .word ANI_ATTACK_ON,AMODE_HEADDSLASH,33,33,80,121 + WL 2,R3RD3D+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + + WWWL ANI_IF_BUTCOUNT_GE,SPUNCHB_COUNT,1,#do_pile + +#exit +#missed + .word ANI_DETACH + WL 2,R3RD3D+FR8 + WL 2,R3RD3D+FR9 + WL 2,R3RD3D+FR11 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#do_pile + + WL 3,R3RD3D+FR8 + WL 3,R3RD3D+FR9 + WL 3,R3RD3D+FR11 + + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,rzr_3_pile_driver2_anim + + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR rzr_3_fake_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,6 + + WL 3,R4GH3A+FR1 + WL 3,R4GH3A+FR2 + + WL 6,R4GH3A+FR3 + WL ANI_GOTO,#missed + + SUBR rzr_3_head_hold2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,6 + + WL 3,R4GH3A+FR1 + WL 3,R4GH3A+FR2 + + .word ANI_ATTACK_ON,AMODE_PUPPET_HDGRAB,20,70,57,43 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,R4GH3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + WL ANI_GOTO,#gothim + + SUBR rzr_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,6 + + WL 2,R4GH3A+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 6,999,65,45,90000h,TGT_HEAD,56,100,0 + LEAPATOPP 9,999,40,45,90000h,TGT_HEAD,56,100,0 + WL ANI_CODE,halve_bk_xvel + + WL 3,R4GH3A+FR2 + + .word ANI_ATTACK_ON,AMODE_PUPPET,20,70,57,43 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,R4GH3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#gothim + .word ANI_SETWORD,USR_VAR2,0 + .word ANI_CLR_BUTCOUNT + .ref head_grab_time + WL ANI_CODE,head_grab_time + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,R4GH3A+FR3,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,R4GH3A+FR3,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,4,R4GH3A+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,R4GH3A+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,R4GH3A+FR7,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,R4GH3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4GH3A+FR3 + WL 3,R4GH3A+FR2 + WL 3,R4GH3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 2,R4GH3A+FR3 + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4GH3A+FR3 + WL 3,R4GH3A+FR2 + WL 3,R4GH3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4AH3A+FR1,70,2,0 + LWWW H3HB3A+FR3,66,-13,0 + LWWW H3HB3A+FR2,56,-18,0 + LWWW H3HB3A+FR1,50,-40,0 + .long 0 +#Razor + LWWW R4AH4C+FR3,77,2,0 + LWWW R3HB3A+FR3,76,-15,0 + LWWW R3HB3A+FR2,73,-29,0 + LWWW R3BF3A+FR1,65,-41,0 + .long 0 +#Taker + LWWW U4AH3A+FR2,67,12,0 + LWWW U4BF3A+FR2,60,-1,0 + LWWW U4BF3A+FR3,30,-15,0 + LWWW U4BF3Z+FR3,55,-28,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR2,84,-7,0 + LWWW Y4AM4A+FR1,78,-11,0 + LWWW Y4AM4A+FR2,68,-17,0 + LWWW Y3BF3A+FR1,56,-29,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,72,-8,0 + LWWW S4AH3D+FR1,59,-8,0 + LWWW S4BF3A+FR2,56,-20,0 + LWWW S4BF3A+FR3,36,-27,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,57,-3,0 + LWWW B4BF3A+FR1,64,-2,0 + LWWW B3HB3A+FR2,53,-31,0 + LWWW B3BF3C+FR5,61,-33,0 + .long 0 +#Doink + LWWW D3AH3B+FR1,60,-1,0 + LWWW D3AK3A+FR3,54,-3,0 + LWWW D3AK3A+FR2,67,-18,0 + LWWW D3BF3A+FR1,55,-38,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,61,-5,0 + LWWW L3BF3A+FR1,63,-6,1 + LWWW L3BF3A+FR2,60,-21,1 + LWWW L3BF3B+FR5,51,-36,0 + .long 0 + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#***************************************************************************** +* +* #3 PILEDRIVER + +#yoff equ 50 + SUBR rzr_combo_pile_driver_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ATTACK_ON,AMODE_PUPPET,32,25,66,21 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,R3PG3B+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedcx + + ;got him + .WORD ANI_INC_COMBO + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,10,R3PG3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR4,#puppet_tbl,3 + + .word ANI_OFFSET,0,#yoff,0 + WL ANI_SET_YVEL,70000h + WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,5,R3PG3B+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR7,#puppet_tbl,6 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR8,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR9,#puppet_tbl,8 + + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + .word ANI_BOUNCE,4 + + WL 1,R3PG3B+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 12,R3PG3B+FR9 + WL 3,R3PG3B+FR10 + + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +#missedcx + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 4,R3PG3B+FR1 + WL 4,R3PG3B+FR2 + WL 4,R3PG3B+FR3 + WL 4,R3PG3B+FR4 + + WL ANI_SET_YVEL,30000h + WL 3,R3PG3B+FR5 + WL 3,R3PG3B+FR6 + WL 3,R3PG3B+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 3,R3PG3B+FR8 + WL 3,R3PG3B+FR9 + WL 3,R3PG3B+FR10 + + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +***************************************************************************** + + SUBRP rzr_3_pile_driver2_anim ;from head hold combo + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ATTACK_ON,AMODE_PUPPET,32,25,66,21 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,R3PG3B+FR1 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_9,2,2 + WL ANI_IFNOTSTATUS,#missed + + ;got him + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,10,R3PG3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR4,#puppet_tbl,3 + + .word ANI_OFFSET,0,#yoff,0 + .ref BAMFRE_P + WLWW ANI_SHADOWTRAIL,BAMFRE_P,3,12 ;pal,rate,lifespan + WL ANI_SET_YVEL,0e8000h + .word ANI_SCROLL_CTRL,190 + WL ANI_CODE,#reduce_dmg + WL ANI_GOTO,#in + +#reduce_dmg + .ref PCNT + SPCDMG RD_PILEDRIVER,80 + rets + + SUBR rzr_3_pile_driver_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ATTACK_ON,AMODE_PUPPET,32,25,66,21 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,R3PG3B+FR1 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_9,2,2 + WL ANI_IFNOTSTATUS,#missed + + ;got him + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,10,R3PG3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR4,#puppet_tbl,3 + + .word ANI_OFFSET,0,#yoff,0 + WL ANI_SET_YVEL,70000h + +#in + WL ANI_CODE,set_xdrift + + WWLLW ANI_SUPERSLAVE2,5,R3PG3B+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR7,#puppet_tbl,6 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + WL ANI_CODE,CALL_SPECIAL_MOVE + + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR8,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR9,#puppet_tbl,8 + + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + .word ANI_BOUNCE,4 + + WL 1,R3PG3B+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 12,R3PG3B+FR9 + WL 3,R3PG3B+FR10 + + .word ANI_XFLIP + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 4,R3PG3B+FR1 + WL 4,R3PG3B+FR2 + WL 4,R3PG3B+FR3 + WL 4,R3PG3B+FR4 + + WL ANI_SET_YVEL,30000h + WL 3,R3PG3B+FR5 + WL 3,R3PG3B+FR6 + WL 3,R3PG3B+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WL 3,R3PG3B+FR8 + WL 3,R3PG3B+FR9 + WL 3,R3PG3B+FR10 + + .word ANI_XFLIP + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +#set_opp_xflip + move *a13(ATTACH_PROC),a0,L + + move *a0(OBJ_CONTROL),a14 + xori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3PP3X+FR1,13,-38,0 + LWWW H3PP3X+FR2,2,2,0 + LWWW H3PP3X+FR3,2,27,0 + LWWW H3PP3X+FR4,5,28,0 + LWWW H3PP3X+FR5,14,44,0 + LWWW H3PP3X+FR6,10,52,0 + LWWW H3PP3X+FR6,10,53,0 + LWWW H3PP3X+FR7,15,13,0 + LWWW H3PP3X+FR8,21,-7,0 +#Razor + LWWW R3GP3Z+FR1,9,-31,0 + LWWW R3GP3Z+FR2,9,-20,0 + LWWW R3GP3Z+FR3,13,21,0 + LWWW R3GP3Z+FR4,20,42,0 + LWWW R3GP3Z+FR5,22,51,0 + LWWW R3GP3Z+FR6,26,56,0 + LWWW R3GP3Z+FR6,26,54,0 + LWWW R3GP3Z+FR7,23,31,0 + LWWW R3GP3Z+FR8,38,-8,0 +#Taker + LWWW U3PP3X+FR1,16,-38,1 + LWWW U3PP3X+FR2,16,-21,1 + LWWW U3PP3X+FR3,9,-12,1 + LWWW U3PP3X+FR4,2,4,1 + LWWW U3PP3X+FR5,15,37,1 + LWWW U3PP3X+FR6,21,64,1 + LWWW U3PP3X+FR6,22,63,1 + LWWW U3GP3X+FR1,18,7,1 + LWWW U3GP3X+FR2,31,-16+5,1 +#Yokozuna + LWWW Y3PP3Q+FR1,16,-30,0 + LWWW Y3PP3Q+FR2,12,-22,0 + LWWW Y3PP3Q+FR3,16,-15,0 + LWWW Y3PP3Q+FR4,19,-7,0 + LWWW Y3PP3Q+FR6,13,17,0 + LWWW Y3PP3Q+FR7,12,27,0 + LWWW Y3PP3Q+FR7,13,27,0 + LWWW Y3FD3N+FR2,15,16,0 + LWWW Y3FD3N+FR3,24,14,0 +#Shawn + LWWW S3GP3X+FR1,19,-43,0 + LWWW S3GP3X+FR2,12,-27,0 + LWWW S3GP3X+FR3,15,-8,0 + LWWW S3GP3X+FR4,16,30,0 + LWWW S3GP3X+FR5,20,41,0 + LWWW S3OS3X+FR8,24,36,1 + LWWW S3OS3X+FR8,24,34,1 + LWWW S3FD3X+FR2,22,21,0 + LWWW S3GP3X+FR6,28,-6,0 +#BamBam + LWWW B3PP3Q+FR1,10,-34,0 + LWWW B3PP3Q+FR2,14,-12,0 + LWWW B3PP3Q+FR3,17,9,0 + LWWW B3PP3Q+FR4,19,28,0 + LWWW B3PP3Q+FR5,23,43,0 + LWWW B3PP3Q+FR6,16,52,0 + LWWW B3PP3Q+FR6,16,50,0 + LWWW B3PP3Q+FR7,17,25,0 + LWWW B3FD3C+FR1,22,2,0 +#Doink + LWWW D3PD3Z+FR1,14,-43,1 + LWWW D3PD3Z+FR2,13,-23,1 + LWWW D3PD3Z+FR3,13,0,1 + LWWW D3PD3Z+FR4,12,35,1 + LWWW D3PD3Z+FR5,10,47,1 + LWWW D3PD3Z+FR6,24,41,1 + LWWW D3PD3Z+FR7,24,39,1 + LWWW D3PD3Z+FR8,24,4,1 + LWWW D3PD3Z+FR9,34,-15,1 +#Adam + .long 0 +#Lex + LWWW L3GP3Z+FR1,12,-31,0 + LWWW L3GP3Z+FR2,13,-20,0 + LWWW L3GP3Z+FR3,16,-10,0 + LWWW L3GP3Z+FR4,12,7,0 + LWWW L3GP3Z+FR5,18,21,0 + LWWW L3GP3Z+FR6,22,38,0 + LWWW L3GP3Z+FR6,23,37,0 + LWWW L3FH3A+FR6,14,16,0 + LWWW L3FD3B+FR1,26,-8,0 + +#rollout_tbl + .long hrt_break_neck2_anim,rzr_break_neck2_anim + .long und_break_neck2_anim,yok_break_neck2_anim + .long shn_break_neck2_anim,bam_break_neck2_anim + .long dnk_break_neck2_anim,0,lex_break_neck2_anim + +#***************************************************************************** +* +* RAZOR'S EDGE + +#yoff equ 50 + + SUBR rzr_combo_razors_edge_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_OFFSET,10,0,0 + + .word ANI_ATTACK_ON,AMODE_PUPPET,32,5,86,100 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,8,R3PG3B+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedcx + + ;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,10,R3PG3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR2,#puppet_tbl,1 + WL ANI_SET_YVEL,50000h + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,R3ZR3B+FR1,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,R3ZR3B+FR2,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,R3ZR3B+FR3,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,R3ZR3C+FR1,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,R3ZR3C+FR2,#puppet_tbl,7 + + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + + WWLLW ANI_SUPERSLAVE2,12,R3ZR3C+FR3,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,3,R3ZR3C+FR4,#puppet_tbl,9 + WWLLW ANI_SUPERSLAVE2,3,R3ZR3C+FR5,#puppet_tbl,10 + WWLLW ANI_SUPERSLAVE2,3,R3ZR3C+FR6,#puppet_tbl,11 + WWLLW ANI_SUPERSLAVE2,3,R3ZR3C+FR7,#puppet_tbl,12 + + WL ANI_CODE,HIT_THE_MAT + .WORD ANI_INC_COMBO + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,50 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL 3,R3ZR3C+FR7 + WL ANI_CODE,HIT_THE_MAT + WL 12,R3ZR3C+FR7 + + .word ANI_OFFSET,30,0,0 + WLW ANI_SET_ZVEL,-20000h,AM_ABS + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR10 + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missedcx + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL ANI_SET_YVEL,50000h + + WL 4,R3PG3B+FR1 + WL 4,R3PG3B+FR2 + WL 4,R3PG3B+FR3 + WL 4,R3PG3B+FR4 + + WL 3,R3PG3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WL 3,R3PG3B+FR9 + WL 3,R3PG3B+FR10 + + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + +***************************************************************************** + + SUBR rzr_razors_edge_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_OFFSET,10,0,0 + + .word ANI_ATTACK_ON,AMODE_PUPPET,32,25,66,21 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,4,R3PG3B+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + + ;got him + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,82h ;Effort grunt + + WWLLW ANI_SUPERSLAVE2,10,R3PG3B+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR2,#puppet_tbl,1 + WL ANI_SET_YVEL,50000h + WWLLW ANI_SUPERSLAVE2,4,R3PG3B+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,R3ZR3B+FR1,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,R3ZR3B+FR2,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,R3ZR3B+FR3,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,R3ZR3C+FR1,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,R3ZR3C+FR2,#puppet_tbl,7 + + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + + .word ANI_DRAW_NAME,33 + + WWLLW ANI_SUPERSLAVE2,12,R3ZR3C+FR3,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,3,R3ZR3C+FR4,#puppet_tbl,9 + WWLLW ANI_SUPERSLAVE2,3,R3ZR3C+FR5,#puppet_tbl,10 + WWLLW ANI_SUPERSLAVE2,3,R3ZR3C+FR6,#puppet_tbl,11 + WWLLW ANI_SUPERSLAVE2,3,R3ZR3C+FR7,#puppet_tbl,12 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,50 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + WL ANI_CODE,CALL_SPECIAL_MOVE + + WL ANI_CODE,#set_opp_xflip + + WL ANI_SLAVEANIM,#rollout_tbl + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + .word ANI_DETACH + + WL 3,R3ZR3C+FR7 + WL ANI_CODE,HIT_THE_MAT + WL 12,R3ZR3C+FR7 + + .word ANI_OFFSET,30,0,0 + WLW ANI_SET_ZVEL,-20000h,AM_ABS + + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR9 + WL 3,R3GU4A+FR10 + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL ANI_SET_YVEL,50000h + WL 4,R3PG3B+FR1 + WL 4,R3PG3B+FR2 + WL 4,R3PG3B+FR3 + WL 4,R3PG3B+FR4 + + WL 3,R3PG3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + WLW ANI_SET_ZVEL,-10000h,AM_ABS + + WL 3,R3PG3B+FR9 + WL 3,R3PG3B+FR10 + + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_faceup_getup2_anim + + +#set_opp_xflip + move *a13(ATTACH_PROC),a0,L + + move *a0(OBJ_CONTROL),a14 + xori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3PP3X+FR1,13,-38,0 + LWWW H3PP3X+FR2,3,7,0 + LWWW H3PP3X+FR3,6,36,0 + LWWW H3PP3X+FR6,14,54,0 + LWWW H3FR3A+FR6,-19,37,0 + LWWW H3UC3X+FR4,-59,24,0 + LWWW H3UC3X+FR3,-70,21,0 + LWWW H3UC3X+FR2,-57,22,0 + LWWW H3UC3X+FR1,-18,17,0 + LWWW H3UC3X+FR2,-32,20,0 + LWWW H3UC3X+FR5,10,46,0 + LWWW H3PP3X+FR7,102,26,0 + LWWW H3PP3X+FR8,107,6,0 + .long 0 +#Razor + LWWW R3GP3Z+FR1,9,-31,0 + LWWW R3GP3Z+FR2,12,-15,0 + LWWW R3GP3Z+FR3,15,27,0 + LWWW R3TD3A+FR7,25,38,0 + LWWW R3TD3A+FR8,-3,59,0 + LWWW R3FD3B+FR5,-63,33,0 + LWWW R3FD3B+FR4,-78,29,0 + LWWW R3FD3B+FR2,-56,19,0 + LWWW R3FD3B+FR1,-23,18,0 + LWWW R3FD3B+FR3,-39,29,0 + LWWW R3TD3A+FR8,48,51,0 + LWWW R3GP3Z+FR7,100,38,0 + LWWW R3GP3Z+FR8,104,-4,0 + .long 0 +#Taker + LWWW U3PP3X+FR1,16,-35,1 + LWWW U3PP3X+FR2,17,-17,1 + LWWW U3PP3X+FR3,12,-5,1 + LWWW U3FH3A+FR3,21,1,1 + LWWW U3FH3A+FR4,5,31,1 + LWWW U3FD3X+FR6,-6,48,1 + LWWW U3FD3X+FR4,-54,28,1 + LWWW U3FD3X+FR3,-46,31,1 + LWWW U3FD3X+FR2,-26,28,1 + LWWW U3FD3X+FR4,-26,24,1 + LWWW U3FD3X+FR5,34,54,1 + LWWW U3GP3X+FR1,105,18,1 + LWWW U3GP3X+FR2,115,-6,1 + .long 0 +#Yokozuna + LWWW Y3PP3Q+FR1,15,-27,0 + LWWW Y3PP3Q+FR2,16,-15,0 + LWWW Y3PP3Q+FR4,25,0,0 + LWWW Y3PP3Q+FR6,13,26,0 + LWWW Y3FL3W+FR6,1,39,0 + LWWW Y3FL3W+FR7,-15,46,0 + LWWW Y3FD3A+FR5,-60,41,0 + LWWW Y3FD3A+FR4,-70,40,0 + LWWW Y3FD3A+FR3,-60,37,0 + LWWW Y3FD3A+FR4,-41,31,0 + LWWW Y3FD3A+FR5,-4,47,0 + LWWW Y3FD3N+FR3,96,12,0 + LWWW Y3FD3N+FR4,103,27,0 + .long 0 +#Shawn + LWWW S3GP3X+FR1,19,-36,0 + LWWW S3GP3X+FR2,13,-18,0 + LWWW S3GP3X+FR3,17,1,0 + LWWW S3OS3X+FR8,28,42,1 + LWWW S3UC3X+FR6,-6,46,0 + LWWW S3UC3X+FR5,-50,24,0 + LWWW S3UC3X+FR3,-56,18,0 + LWWW S3UC3X+FR2,-49,20,0 + LWWW S3UC3X+FR1,-20,23,0 + LWWW S3UC3X+FR3,-30,21,0 + LWWW S3UC3X+FR5,16,33,0 + LWWW S3FD3X+FR2,110,32,0 + LWWW S3GP3X+FR6,111,3,0 + .long 0 +#BamBam + LWWW B3PP3Q+FR1,10,-34,0 + LWWW B3PP3Q+FR2,14,-12,0 + LWWW B3PP3Q+FR3,19,15,0 + LWWW B4TD3B+FR7,16,42,0 + LWWW B4TD3B+FR8,3,59,0 + LWWW B4UC3B+FR5,-49,39,0 + LWWW B4UC3B+FR4,-68,11,0 + LWWW B4UC3B+FR3,-67,17,0 + LWWW B4UC3B+FR2,-38,21,0 + LWWW B4UC3B+FR4,-42,11,0 + LWWW B4UC3B+FR7,4,50,0 + LWWW B4TD3B+FR8,98,44,0 + LWWW B3FD3C+FR1,102,9,0 + .long 0 +#Doink + LWWW D3PD3Z+FR1,14,-43,1 + LWWW D3PD3Z+FR2,14,-19,1 + LWWW D3PD3Z+FR3,14,6,1 + LWWW D3FD3E+FR4,25,19,0 + LWWW D3FD3E+FR2,-8,53,0 + LWWW D3UC3A+FR6,-49,23,0 + LWWW D3UC3A+FR4,-68,31,0 + LWWW D3UC3A+FR3,-44,32,0 + LWWW D3UC3A+FR2,-22,27,0 + LWWW D3UC3A+FR4,-42,28,0 + LWWW D3UC3A+FR7,32,47,0 + LWWW D3PD3Z+FR8,107,15,1 + LWWW D3PD3Z+FR9,112,-5,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GP3Z+FR1,12,-31,0 + LWWW L3GP3Z+FR2,14,-14,0 + LWWW L3GP3Z+FR3,18,0,0 + LWWW L3GP3Z+FR5,24,32,0 + LWWW L3FH3A+FR6,7,44,0 + LWWW L3UC3X+FR5,-7,52,0 + LWWW L3UC3X+FR4,-68,26,0 + LWWW L3UC3X+FR3,-67,15,0 + LWWW L3UC3X+FR2,-31,14,0 + LWWW L3UC3X+FR3,-39,12,0 + LWWW L3UC3X+FR4,-7,34,0 + LWWW L3FH3A+FR6,97,29,0 + LWWW L3FD3B+FR1,105,2,0 + .long 0 + +#rollout_tbl + .long hrt_break_neck2_anim,rzr_break_neck2_anim + .long und_break_neck2_anim,yok_break_neck2_anim + .long shn_break_neck2_anim,bam_break_neck2_anim + .long dnk_break_neck2_anim,0,lex_break_neck2_anim + +#***************************************************************************** +* +* REPEAT-SLASHES + + SUBR rzr_repeat_slash_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + + .word ANI_STARTATTACK,AT_PUNCH,12 + + .word ANI_CLR_BUTCOUNT + .word ANI_SET_RPTCOUNT,3 + + .word ANI_ATTACK_ON,AMODE_HITCHECK,35,29,67,121 + WL 1,R3RZ3S+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#no_leapat + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 11,999,50,40,90000h,TGT_HEAD,87,100,-20 + + WL 6,R3RZ3S+FR2 + WL 2,R3RZ3S+FR3 + .word ANI_SOUND,013h + WL 2,R3RZ3S+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_ON,AMODE_RSLASH,35,29,67,121 + WL ANI_GOTO,#attack_on + +#no_leapat + WL 6,R3RZ3S+FR2 + WL 2,R3RZ3S+FR3 + .word ANI_SOUND,013h + WL 2,R3RZ3S+FR4 + .word ANI_ATTACK_ON,AMODE_RSLASH,35,29,67,121 + WL ANI_GOTO,#attack_on + +#loop + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 9,999,50,40,90000h,TGT_HEAD,87,100,20 + + .word ANI_STARTATTACK,AT_PUNCH,8 + + WL 2,R3RD3D+FR8 + WL 2,R3RZ3S+FR2 + WL 2,R3RZ3S+FR3 + .word ANI_SOUND,013h + WL 2,R3RZ3S+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_ATTACK_ON,AMODE_RSLASH2,35,29,67,121 +#attack_on + WL 3,R3RZ3S+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#done_u + WL 2,R3RZ3S+FR6 + WL 1,R3RZ3S+FR7 + WL 2,R3RZ3S+FR8 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#done_u2 + + .word ANI_CLR_BUTCOUNT + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 11,999,50,40,90000h,TGT_HEAD,87,100,20 + + WL 2,R3RZ3S+FR9 + WL 2,R3RD3D+FR2 + WL 2,R3RD3D+FR3 + .word ANI_SOUND,014h + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 2,R3RD3D+FR4 + WL 2,R3RD3D+FR5 + WL 1,R3RD3D+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_RSLASH2,-64,28,-30,177,137,60 + WL 2,R3RD3D+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#done_d + WL ANI_IFBLOCKED,#done_d + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,3,#done_d + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop + +#done_d + WL ANI_CODE,CALL_SPECIAL_MOVE + WL 3,R3RD3D+FR8 + WL 3,R3RD3D+FR9 + WL 3,R3RD3D+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#done_u + WL 2,R3RZ3S+FR6 + WL 3,R3RZ3S+FR7 + WL 2,R3RZ3S+FR8 +#done_u2 + WL 3,R3RZ3S+FR9 + WL 2,R3RZ3S+FR10 + WL 3,R3RZ3S+FR12 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;#***************************************************************************** +;* +;* CHAIR STUFF +; +; .ref CHAIR_SWING +; +; SUBR rzr_pkup_chair_anim +; +; .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +;#lp +; WL 4,R4WA4C+FR1 +; WL 4,R4WA4C+FR2 +; WL 4,R4WA4C+FR3 +; WL 4,R4WA4C+FR4 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,36,-13,1 ;image, x,y,zoff +; WL 4,R4WA4C+FR5 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,39,18,1 ;image, x,y,zoff +; WL 4,R4WA4C+FR6 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR2,38,74,1 ;image, x,y,zoff +; WL 4,R4WA4C+FR7 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,27,140,1 ;image, x,y,zoff +; WL 4,R4WA4C+FR8 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-6,144,1 ;image, x,y,zoff +; WL 4,R4WA4C+FR9 +; +;; .word ANI_SINGLESTEP +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-11,144,1 ;image, x,y,zoff +; WL 4,R4CS4A+FR1 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR5,-41,103,1 ;image, x,y,zoff +; WL 4,R4CS4A+FR2 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-34,128,1 ;image, x,y,zoff +; WL 4,R4CS4A+FR3 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR7,26,143,1 ;image, x,y,zoff +; WL 4,R4CS4A+FR4 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,69,79,1 ;image, x,y,zoff +; WL 4,R4CS4A+FR5 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR10,43,33,1 ;image, x,y,zoff +; WL 4,R4CS4A+FR6 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR10,50,34,1 ;image, x,y,zoff +; WL 4,R4CS4A+FR7 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,64,85,1 ;image, x,y,zoff +; WL 4,R4CS4A+FR8 +; +;; .word ANI_SINGLESTEP +; WLW ANI_ATTCHIMAGE,0,0 +; +; WL ANI_GOTO,#lp +; +; +****************************************************************************** + + .end + \ No newline at end of file diff --git a/RZRSEQ4.ASM b/RZRSEQ4.ASM new file mode 100755 index 0000000..b38c0a4 --- /dev/null +++ b/RZRSEQ4.ASM @@ -0,0 +1,1549 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 26 Aug 94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "rzrseq4.asm" + .title "blocks, reactions to routine and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "razorimg.h" + .include "display.equ" + .include "ring.equ" + .include "damage.equ" + .INCLUDE "SWEAT.EQU" + +****************************************************************************** +* EXTERNAL REFERENCES + + ;RAZOR + .ref rzr_3_head_held_anim + + ;MISC + .ref HIT_THE_MAT,SMALL_BOUNCE,ckzpos + .ref DO_RAZOR_PUSH + .ref DO_WAIL + .ref DO_BLOCKED + .ref DO_SCREAM + .ref free_toss_check,setup_freetoss,rzr_4_hiptoss_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #2 BLOCK + HITBLOCK + + SUBR rzr_2_block_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + +; WL ANI_CODE,block_if_safe + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 2,R2BK3E+FR1 + WL 1,R4BK3D+FR1 +; .word ANI_SETPLYRMODE,MODE_BLOCK + WL 1,R4BK3D+FR1 + WL 1,R4BK3D+FR2 + WL ANI_GOTO,#hold_block + + +************ +* +* #4 BLOCK + HITBLOCK + + SUBR rzr_4_block_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + +;Rotate toward opponent if needed! +; WL ANI_CODE,block_if_safe + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 2,R4BK3D+FR1 + WL 1,R4BK3D+FR2 +; .word ANI_SETPLYRMODE,MODE_BLOCK + WL 1,R4BK3D+FR2 +#hold_block + WL 2,R4BK3D+FR3 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT|MODE_FRICTION +; .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETFACING + WL 2,R4BK3D+FR2 + WL 2,R4BK3D+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_END + + + SUBR rzr_4_hitblock_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,5000h + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_BLOCKED + + WL 1,R4BK3D+FR5 + WL 2,R4BK3D+FR6 + WL 1,R4BK3D+FR5 + + WL ANI_GOTO,#hold_block + + SUBR rzr_4_hitblock2_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,4000h + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_BLOCKED + WL ANI_SET_YVEL,38000h + + WL 3,R4BK3D+FR5 + WL 3,R4BK3D+FR6 + WL 3,R4BK3D+FR5 + WL 3,R4BK3D+FR6 + WL 3,R4BK3D+FR5 + WL 3,R4BK3D+FR6 + + WL ANI_GOTO,#hold_block + + +#***************************************************************************** +* +* #4 LOSE BALANCE + +#FRICTION_VAL equ 3000h + + SUBR rzr_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,#FRICTION_VAL + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + + WL ANI_CODE,DO_RAZOR_PUSH + WL 3,R4LB4Z+FR1 + WL 3,R4LB4Z+FR2 + WL 3,R4LB4Z+FR3 + WL 3,R4LB4Z+FR4 + .word ANI_WAITHITGND + WL 3,R4LB4Z+FR4 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR rzr_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,R2AH2D+FR3 + WL 3,R2AH2D+FR5 + WL 3,R2AH2D+FR6 + WL 3,R2AH2D+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 HEAD HIT + + SUBR rzr_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,R4AH4C+FR3 + WL 3,R4AH4C+FR4 + WL 3,R4AH4C+FR5 + WL 3,R4AH4C+FR6 + WL 3,R4AH4C+FR7 + WL 3,R4AH4C+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,R2AH2D+FR3 + .word ANI_DEBRIS,100,2,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,R2AH2D+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,R2AH2D+FR6 + WL 3,R2AH2D+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 HEAD HIT + + SUBR rzr_4_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,R4AH4C+FR3 + .word ANI_DEBRIS,300,2,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,R4AH4C+FR4 + WL 3,R4AH4C+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,R4AH4C+FR6 + WL 3,R4AH4C+FR7 + WL 3,R4AH4C+FR8 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_head_hit4_anim + +;From earslap + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + +; WLW ANI_SET_XVEL,-28000h,AM_HIT_REL +; WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 4,R4AH4C+FR4 + WL 4,R4AH4C+FR5 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + WL 4,R4AH4C+FR6 + WL 4,R4AH4C+FR7 + WL 4,R4AH4C+FR8 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR rzr_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,R2AH2D+FR3 + WL 15,R2AH2D+FR5 + WL 4,R2AH2D+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR rzr_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,R4AH4C+FR3 + WL 3,R4AH4C+FR4 + WL 14,R4AH4C+FR5 + WL 2,R4AH4C+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR rzr_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,R4AH4C+FR3 + WL 3,R4AH4C+FR4 + WL 14,R4AH4C+FR5 + WL 2,R4AH4C+FR6 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,rzr_dizzy_anim +; .word ANI_END + + +#***************************************************************************** +* +* #2 HEAD HIT2 (hands on face) + + SUBR rzr_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,R2AE2A+FR1 + WL 3,R2AE2A+FR2 + WL 3,R2AE2A+FR3 + WL 3,R2AE2A+FR4 + WL 3,R2AE2A+FR5 + WL 3,R2AE2A+FR6 + WL 3,R2AE2A+FR7 + WL 3,R2AE2A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************* +* +* #4 HEAD HIT2 (hands on face) + +;TODO (JS) This seq takes too long. Cut something. + + SUBR rzr_4_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,R4AE4B+FR1 + WL 3,R4AE4B+FR2 + WL 3,R4AE4B+FR3 + WL 3,R4AE4B+FR4 + WL 3,R4AE4B+FR5 + WL 3,R4AE4B+FR6 + WL 2,R4AE4B+FR7 + WL 2,R4AE4B+FR8 + WL 2,R4AE4B+FR9 + WL 2,R4AE4B+FR10 + WL 2,R4AE4B+FR11 + WL 2,R4AE4B+FR12 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,rzr_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_head_hit2s_anim +;Salt hits me in face + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .ref create_impact_salt + WL ANI_CODE,create_impact_salt + + WL 4,R4AE4B+FR1 + WL 4,R4AE4B+FR2 + WL 4,R4AE4B+FR3 + WL 4,R4AE4B+FR4 + WL 4,R4AE4B+FR5 + WL 3,R4AE4B+FR6 + WL 3,R4AE4B+FR7 + .word ANI_WAITHITGND + .word ANI_FRICTION,4000h + WL 50,R4AE4B+FR7 + .word ANI_ZEROVELS + WL 3,R4AE4B+FR8 + WL 3,R4AE4B+FR9 + WL 3,R4AE4B+FR10 + WL 3,R4AE4B+FR11 + WL 3,R4AE4B+FR12 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT (ends in dizzy) + + SUBR rzr_4_head_hit_dizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + .word ANI_SETPLYRMODE,MODE_DIZZY + .word ANI_DEBRIS,300,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,R4AE4B+FR1 + WL 3,R4AE4B+FR2 + WL 3,R4AE4B+FR3 + WL 3,R4AE4B+FR4 + WL 3,R4AE4B+FR5 + WL 3,R4AE4B+FR6 + WL 3,R4AE4B+FR7 + WL 3,R4AE4B+FR8 + WL 4,R4AE4B+FR9 + WL 4,R4AE4B+FR10 + WL 4,R4AE4B+FR11 + WL 4,R4AE4B+FR12 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,rzr_dizzy_anim + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR rzr_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 2,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 2,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 2,R1TT5Z+FR2 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R1TT5Z+FR2 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 BODY HIT + + SUBR rzr_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 2,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 2,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 2,R4AM3X+FR8 + + .word ANI_CHECKWORD,USR_VAR1 + WL ANI_IFNOTSTATUS,#reg + + WL 8,R4WP5C+FR1 + WL 8,R4WP5C+FR2 + WL 8,R4WP5C+FR3 + WL 8,R4WP5C+FR4 + WL 8,R4WP5C+FR5 + WL 8,R4WP5C+FR6 + WL 8,R4WP5C+FR7 + WL 8,R4WP5C+FR8 + +; WL 8,R4WP5C+FR1 +; WL 8,R4WP5C+FR2 +; WL 8,R4WP5C+FR3 +; WL 8,R4WP5C+FR4 +; WL 8,R4WP5C+FR5 +; WL 8,R4WP5C+FR6 +; WL 8,R4WP5C+FR7 +; WL 8,R4WP5C+FR8 + +#reg + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R4AM3X+FR8 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,rzr_dizzy_anim + + .word ANI_END + + SUBR rzr_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R4AM3X+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,300,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,R4AM3X+FR1 + WL 1,R4AM3X+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R4AM3X+FR8 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + + WL ANI_CHANGEANIM,rzr_dizzy_anim +; .word ANI_END + + SUBR rzr_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,R4AM3X+FR1 + WL 3,R4AM3X+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,R4AM3X+FR3 + WL 3,R4AM3X+FR4 + WL 3,R4AM3X+FR5 + WL 3,R4AM3X+FR6 + WL 3,R4AM3X+FR7 + WL 3,R4AM3X+FR8 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,rzr_fall_back_anim +; .word ANI_END + +#nodead + + WL ANI_CHANGEANIM,rzr_3_head_held_anim +; .word ANI_END + +#***************************************************************************** +* +* FALL BACK + + SUBR rzr_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZERO_XZVELS + WL ANI_MIN_YVEL,50000h + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + + .word ANI_SCROLL_CTRL,RZR_TBUKLY-60 + + WL ANI_CODE,ckzpos + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WWL ANI_SETLONG,DEBRIS_X,[105,-18] ;Y,X of head + WL 3,R3FD3B+FR1 + WWL ANI_SETLONG,DEBRIS_X,[99,-38] ;Y,X of head + WL 3,R3FD3B+FR2 + .word ANI_OFFSET,0,53,0 ;x,y,z + WWL ANI_SETLONG,DEBRIS_X,[36,-44] ;Y,X of head + WL 3,R3FD3B+FR3 + WWL ANI_SETLONG,DEBRIS_X,[31,-44] ;Y,X of head + WL 3,R3FD3B+FR4 + WWL ANI_SETLONG,DEBRIS_X,[18,-48] ;Y,X of head + WL 3,R3FD3B+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,[11,-42] ;Y,X of head + WL 2,R3FD3B+FR6 + .word ANI_BOUNCE,5 + WL 1,R3FD3B+FR6 + WWL ANI_SETLONG,DEBRIS_X,[11,-42] ;Y,X of head + WL 3,R3FD3B+FR7 + WWL ANI_SETLONG,DEBRIS_X,[11,-42] ;Y,X of head + WL 3,R3FD3B+FR8 + WWL ANI_SETLONG,DEBRIS_X,[16,-42] ;Y,X of head + WL 3,R3FD3B+FR9 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_XFLIP + WL 3,R3GU2A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + + +#***************************************************************************** +* +* FALL BACK + + SUBR rzr_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,20000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 3,R3FD3B+FR1 + WL 3,R3FD3B+FR2 + .word ANI_OFFSET,0,53,0 ;x,y,z + WL 3,R3FD3B+FR3 + WL 3,R3FD3B+FR4 + WL 3,R3FD3B+FR5 + WL 3,R3FD3B+FR8 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + + WL 3,R3HG3B+FR1 + .word ANI_OFFSET,-25,0,0 ;x,y,z + WL 3,R3GP3Z+FR8 + WL 3,R3HG3B+FR3 + WL 3,R3HG3B+FR4 + WL 3,R3HG3B+FR5 + WL 3,R3HG3B+FR6 + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 3,R3MS3Q+FR1 + WL 3,R3MS3Q+FR2 + WL 3,R3MS3Q+FR3 + WL 3,R3MS3Q+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + WL 30,R3RL1B+FR6 ;Face down + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR rzr_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WL 3,R3FD3B+FR1 + WL 3,R3FD3B+FR2 + .word ANI_OFFSET,0,53,0 ;x,y,z + WL 3,R3FD3B+FR3 + WL 3,R3FD3B+FR4 + WL 3,R3FD3B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,30 + + .word ANI_FRICTION,3000h + + WL 2,R3FD3B+FR6 +; .word ANI_BOUNCE,5 + WL 1,R3FD3B+FR6 + WL 3,R3FD3B+FR7 + WL 3,R3FD3B+FR8 + WL 3,R3FD3B+FR9 +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_XFLIP + WL 3,R3GU2A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + + +#***************************************************************************** +* +* FACE DOWN GETUP + +;FIX!! add wrestler_xflip at the appropriate frame for all getups! + + SUBR rzr_facedown_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_XFLIP + WL 3,R3DC3C+FR10 + .word ANI_XFLIP + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + WL 3,R3GU2A+FR7 + WL 3,R3GU2A+FR8 + WL 3,R3GU2A+FR9 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,25,98,68,14 + WL 1,R3GU2A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + .ref rzr_4_push_anim + WL ANI_CHANGEANIM,rzr_4_push_anim +#no_freetoss + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 3,R3GU4A+FR6 + WL 3,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 3,R3GU4A+FR9 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss4 + .word ANI_ATTACK_ON,AMODE_HITCHECK,25,98,68,14 + WL 1,R3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss4 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,rzr_4_push_anim +#no_freetoss4 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* FACE UP GETUP + + + SUBR rzr_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 2,R3GU2A+FR1 + WL 3,R3GU2A+FR2 + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + WL 2,R3GU2A+FR3 + WL 3,R3GU2A+FR4 + WL 2,R3GU2A+FR5 +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 3,R3GU2A+FR6 + WL 2,R3GU2A+FR7 + WL 3,R3GU2A+FR8 + WL 2,R3GU2A+FR9 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,25,98,68,14 + WL 1,R3GU2A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,rzr_4_push_anim +#no_freetoss + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 2,R3GU4A+FR3 + WL 3,R3GU4A+FR4 + WL 2,R3GU4A+FR5 +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 3,R3GU4A+FR6 + WL 2,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 2,R3GU4A+FR9 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,25,98,68,14 + WL 1,R3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,rzr_4_push_anim +#no_freetoss2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR rzr_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +#common + WL 3,R3GU4A+FR4 + WL 2,R3GU4A+FR5 + WL 3,R3GU4A+FR6 + WL 2,R3GU4A+FR7 + WL 3,R3GU4A+FR8 + WL 2,R3GU4A+FR9 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss3 + .word ANI_ATTACK_ON,AMODE_HITCHECK,25,98,68,14 + WL 1,R3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss3 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,rzr_4_push_anim +#no_freetoss3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +***** +* set status bit for a getup in 4, clear for a 2. +choose_2or4 + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + + move *a13(NEW_FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #choose_2 + ori MODE_STATUS,a0 +#choose_2 + move a0,*a13(ANIMODE) + rets + + + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR rzr_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .WORD ANI_XFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 10,R3TD3A+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,R3AM3D+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + + SUBR rzr_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,ckzpos + + WL 1,R3AM3D+FR2 + WL ANI_SET_YVEL,39000h + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPITUP_SWEAT,SWEAT_PER,0 + WL 2,R3AM3D+FR2 + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 3,R3AM3D+FR3 + WL 3,R3AM3D+FR4 + WL 3,R3AM3D+FR5 + WL 3,R3AM3D+FR6 + WL 3,R3AM3D+FR7 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 2,R3AM3D+FR1 + SUBR rzr_liedown_anim + WL 1,R3AM3D+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + +#***************************************************************************** +* +* DIZZY + + SUBR rzr_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + WL 8,R4WP5C+FR1 + WL 8,R4WP5C+FR2 + WL 8,R4WP5C+FR3 + WL 8,R4WP5C+FR4 + WL 8,R4WP5C+FR5 + WL 8,R4WP5C+FR6 + WL 8,R4WP5C+FR7 + WL 8,R4WP5C+FR8 + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR rzr_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL + + WL 7,R3TD3A+FR6 + WL 7,R3TD3A+FR7 + WL 1,R3TD3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_OFFSET,42,0,0 + + .word ANI_DAMAGE,D_HIPTOSS +; .word ANI_SETWORD,DELAY_METER,0 +; .word ANI_GETUP,500 + + .word ANI_XFLIP + WL ANI_CHANGEANIM,rzr_hitonground_anim + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK +* + + SUBR rzr_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + .word ANI_ZEROVELS + + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back + + ;roll over. + WL 3,R3HG3B+FR3 + .word ANI_OFFSET,-10,0,0 + WL 3,R3HG3B+FR4 + .word ANI_OFFSET,-4,0,0 + WL 3,R3HG3B+FR5 + .word ANI_OFFSET,-9,0,0 + WL 3,R3HG3B+FR6 + .word ANI_OFFSET,-23,0,0 + WL 1,R3RL1B+FR6 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +#fall_back + ;no room. fall back + .word ANI_OFFSET,-11,0,0 + WL 5,R3HG3B+FR1 + .word ANI_OFFSET,19,0,0 + WL 5,R3TD3A+FR9 + .word ANI_OFFSET,-28,0,0 + .word ANI_XFLIP + WL 3,R3GU2A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + + SUBR rzr_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_XFLIP + WL 5,R3HG3B+FR3 + WL 5,R3HG3B+FR4 + WL 5,R3HG3B+FR5 + WL 5,R3HG3B+FR6 + .word ANI_WAITHITGND + + ;hit. stay. + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL ANI_CODE,SMALL_BOUNCE +; .word ANI_SOUND,bounce_l1 + .word ANI_OFFSET,-7,0,0 + .word ANI_ZEROVELS + + WL 10,R3RL1B+FR6 ;20 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + + SUBR rzr_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,R4POGO+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_XFLIP + WL 3,R3GP3Z+FR7 + WL 3,R3GP3Z+FR8 + + WL 3,R3HG3B+FR3 + WL 3,R3HG3B+FR4 + WL 3,R3HG3B+FR5 + WL 3,R3HG3B+FR6 + .word ANI_WAITHITGND + + ;hit. stay. + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_OFFSET,-7,0,0 + .word ANI_ZEROVELS + + WL 10,R3RL1B+FR6 ;20 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + + + SUBR rzr_break_neck4_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-28000h,AM_FACE_REL + + WL 6,R3HG3B+FR2 + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back4 + + ;roll over. + WL 3,R3HG3B+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,10,0,0 + WL 3,R3HG3B+FR4 + .word ANI_OFFSET,4,0,0 + WL 3,R3HG3B+FR5 + .word ANI_OFFSET,9,0,0 + WL 3,R3HG3B+FR6 + .word ANI_OFFSET,23,0,0 + WL 1,R3RL1B+FR6 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +#fall_back4 + ;no room. fall back + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,-11,0,0 + WL 5,R3HG3B+FR1 + .word ANI_OFFSET,19,0,0 + WL 5,R3TD3A+FR9 + .word ANI_OFFSET,-28,0,0 + .word ANI_XFLIP + WL 1,R3GU2A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR rzr_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,R3BR3Z+FR3 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,040000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 4,R3BR3Z+FR2 + WL 4,R3FD3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + + WL 3,R3AM3D+FR2 + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 3,R3AM3D+FR3 + WL 3,R3AM3D+FR4 + WL 3,R3AM3D+FR5 + WL 3,R3AM3D+FR6 + WL 3,R3AM3D+FR7 + WL 3,R3AM3D+FR1 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 10,R3AM3D+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR rzr_slamnobounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 1,R3AM3D+FR1 + WL 3,R3AM3D+FR1 + WL 4,R3AM3D+FR2 + WL 4,R3AM3D+FR3 + WL 4,R3AM3D+FR4 + WL 4,R3AM3D+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,R3AM3D+FR7 + WL 10,R3AM3D+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + + + SUBR rzr_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,R3AM3D+FR1 + .ref ckzpos + WL ANI_CODE,ckzpos + WL 3,R3AM3D+FR1 + WL 4,R3AM3D+FR2 + WL 4,R3AM3D+FR3 + WL 4,R3AM3D+FR4 + WL 4,R3AM3D+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,R3AM3D+FR7 + WL 4,R3AM3D+FR1 ;10 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + + SUBR rzr_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,R3AM3X+FR1 + WL ANI_CODE,ckzpos + WL 3,R3AM3X+FR1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + + WL 4,R3AM3D+FR1 + WL 4,R3AM3D+FR2 + WL 4,R3AM3D+FR3 + WL 4,R3AM3D+FR4 + WL 4,R3AM3D+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,R3AM3D+FR7 + WL 10,R3AM3D+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_faceup_getup_anim + +#***************************************************************************** + + SUBR rzr_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYD_SWEAT,SWEAT_PER,0 + WL 4,R3FD3B+FR2 + .word ANI_OFFSET,0,53,0 ;x,y,z + WL 4,R3FD3B+FR3 + WL 4,R3FD3B+FR4 + WL 1,R3FD3B+FR5 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,R3FD3B+FR6 + + WL 3,R3HG3B+FR1 + WL 3,R3HG3B+FR2 + WL 3,R3HG3B+FR3 + WL 3,R3HG3B+FR4 + WL 3,R3HG3B+FR5 + WL 3,R3HG3B+FR6 + + .word ANI_ZERO_XZVELS + WL ANI_CODE,HIT_THE_MAT + + WL 8,R3RL1B+FR6 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,rzr_facedown_getup_anim + +#***************************************************************************** + + SUBR rzr_arm_broken_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-38000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_HIT_REL + + WL ANI_CODE,DO_SCREAM + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,R4AM4B+FR2 + WL 4,R4AM4B+FR3 + WL 4,R4AM4B+FR4 + WL 4,R4AM4B+FR5 + + WL 1,R4ST4G+FR1 + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,rzr_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SCREEN.ASM b/SCREEN.ASM new file mode 100755 index 0000000..5d5a2c4 --- /dev/null +++ b/SCREEN.ASM @@ -0,0 +1,989 @@ +************************************************************** +* +* Software: Jake Simpson +* Initiated: 10/11/94 +* +* Modified: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "screen.asm" + .title "wrestling game program" + .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 "wwfsec.equ" + .include "game.equ" + .INCLUDE "SCREEN.TBL" + .include "imgtbl.glo" + + + .ref triple_sound + .ref FADERAM, RNDRNG0 + .ref ZERO_BITS + .ref HALT + .ref dpageflip + .REF dpageflip_off + .ref clear_objs + .ref IRQSKYE + .ref BGND_UD1 + .ref BAKMODS + .ref pal_getf + .ref SYSCOPY + .REF pal_clean + .REF WHAT_SPEED + .REF GAMSTATE + .REF get_all_buttons_cur2 + +; .GLOBAL CLOSE_SCREEN_BOX, OPEN_SCREEN_BOX +; .GLOBAL CLOSE_SCREEN_BOX_CENTER, OPEN_SCREEN_BOX_CENTER + .GLOBAL CLOSE_SCREEN_LINE, OPEN_SCREEN_LINE + .GLOBAL BLOW_0_TO_1,RESET_FROM_PIXEL_WIPE + .GLOBAL SET_UP_PIXEL_WIPE + .DEF DUMRETS + .def special_screen + .DEF RESETUP_LINES + .DEF dma_it_out + .def LINES + + .DEF CLOSE_VERT_SCREEN_LINE + .DEF OPEN_VERT_SCREEN_LINE + .DEF LINES_VERT + + .def HORZTRN1,HORZTRN2 + + BSSX WHICH_SCREEN,32 + BSSX TOP_LEFT,32 + BSSX BOT_RIGHT,32 + .BSS LINE_1,64*8 + .bss LINE_START,32 + .BSS WHICH_WAY,16 + .bss special_screen,16 + .bss which_pal,16 + +;array size = 2560*32 +;ARRAYS .equ FADERAM + .bss ARRAYS,256*16*80 + + .text + +GROW_SCREEN + RETP + +;************************************************************************** +;* * +;* DO NOT call WIPEOUT or any of that stuff before calling this routine ! * +;* In order to use the pixel wipes, you must call this routine before doing * +;* anything else. It will do ALL screen setting up for you. Don't mess around * +;* with that BLANK or UNBLANK thing. Call this routine with A0 set to the * +;* background module you want to display. Once this routine is done, create * +;* the objects you want to display etc and then do a sleep of 1. Then * +;* JSRP BLOW_0_TO_1 or BLOW_0_TO_1 and then when returned, call * +;* RESET_FROM_PIXEL_WIPE and resume normal processing. * +;* * +;************************************************************************** +SET_UP_PIXEL_WIPE + PUSH A0 + clr a0 + move a0,@HALT + move a0,@dtype ;2d mode + move a0,@IRQSKYE + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + inc a0 + move a0,@special_screen + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + + CALLA dpageflip_off + calla clear_objs + calla ZERO_BITS + + movi SCRNEND,a0 ;[256,405] + move a0,@SCRNLR,L + + clr a0 + move a0,@WORLDTLX,L + move a0,@WORLDTLY,L + + PULL A0 + move a0,@BAKMODS,L + JAUC BGND_UD1 ;create objects for background + +RESET_FROM_PIXEL_WIPE + clr a0 + move a0,@special_screen + movk 1,a0 ;page flipping on + move a0,@dpageflip + RETS + +ARRAY_SIZE .EQU 256*32 + +ARRAYA .EQU ARRAY_SIZE*0 + +ARRAYB .EQU ARRAY_SIZE*5 + +BLOW_0_TO_1 + CALLR INIT_TABLES + SLEEP 1 + MOVI ARRAYA+ARRAYS,A3 + CALLR RANDOMIZE_TABLES + SLEEP 1 + MOVI ARRAYB+ARRAYS,A3 + CALLR RANDOMIZE_TABLES + SLEEP 1 + + CLR A0 + MOVE A0,@DISPLAYON + SLEEP 1 + + MOVI 1C0H,A9 + + MOVK 10,A10 +DO_NEXT_BLOCK + MOVI ARRAYA+ARRAYS,A8 + SLEEP 3 + CREATE0 DISPLAY_ARRAY + ADDI 0A0H,A9 + MOVI ARRAYB+ARRAYS,A8 + SLEEP 3 + CREATE0 DISPLAY_ARRAY + ADDI 0A0H,A9 + DEC A10 + JRNZ DO_NEXT_BLOCK + + SLEEP 25 + + MOVK 1,A0 + MOVE A0,@DISPLAYON + RETP + +DISPLAY_ARRAY + MOVI 100000H,A10 + + callr PAL_RAM_OFF + + movi 5,a0 +next_copy + pushp a0 + CALLR COPY_ARRAY +; SUBI 256*32,A8 +; CALLR PAL_RAM_ON +; CALLR COPY_ARRAY + callr PAL_RAM_OFF + sleep 1 + pullp a0 + dsjs a0,next_copy + DIE + +COPY_ARRAY + pushst + dint + movi DMACMAP,a7 + MOVI 256,A2 + movi SYSCINIT,a11 + move a11,a5 + ANDi 0FFFFH-PALENB,a5 + .ALIGN +COPY_NEXT + MOVE *A8+,A3,L + ADD A9,A3 + MOVE A3,A0 + ADD A10,A0 + move a5,@SYSCTRL + MOVE *A0,*A7 + move a11,@SYSCTRL + MOVE *A0,*A3 + move a5,@SYSCTRL + move *a0(1000h),*a7(0) + move a11,@SYSCTRL + MOVE *A0(1000H),*A3(1000H) + DSJS A2,COPY_NEXT + popst + RETS + +PAL_RAM_ON + movi SYSCINIT,a11 + ANDi 0FFFFH-PALENB,a11 + move a11,@SYSCOPY + move a11,@SYSCTRL + rets + +PAL_RAM_OFF + movi SYSCINIT,a11 + move a11,@SYSCTRL + move a11,@SYSCOPY + RETS + +RANDOMIZE_TABLES + MOVI 1279,A2 +RAND_NEXT_POINT + MOVE A2,A0 + CALLA RNDRNG0 + SLL 5,A0 + ADD A3,A0 + MOVE A2,A4 + SLL 5,A4 + ADD A3,A4 + MOVE *A0,A14,L + MOVE *A4,*A0,L + MOVE A14,*A4,L + DSJS A2,RAND_NEXT_POINT + RETS + +INIT_TABLES + MOVI 010H,A4 + MOVI 2000H-(10*10H),A5 + MOVI ARRAYA+ARRAYS,A1 + CALLR INIT_ARRAY + MOVI ARRAYB+ARRAYS,A1 + +INIT_ARRAY + MOVI 128,A3 + CLR A0 +NEXT_DOWN + MOVI 10,A2 +NEXT_ACROSS + MOVE A0,*A1+,L + ADD A4,A0 + DSJS A2,NEXT_ACROSS + ADD A5,A0 + DSJS A3,NEXT_DOWN + RETS + +** NOTE !!!! ALL SCREEN CLEAR AND OPENS MUST BE CALLED WITH A JSRP **** + +;************************************************************************** +;* * +;* For close/open screen box, send the y:x coor you want to close * +;* to in a9. Send the duration of close in a8 * +;* * +;************************************************************************** + + .IF 0 + +OPEN_SCREEN_BOX_CENTER + MOVI [127,200],A9 + MOVI 25,A8 +OPEN_SCREEN_BOX + MOVI DRAW_BOXES,A0 + MOVE A0,@WHICH_SCREEN,L + CALLR CALC_INCREMENTS + + NEG A0 + NEG A1 + NEG A2 + NEG A3 + + MOVY A9,A6 + MOVY A9,A7 + SLL 16,A9 + MOVE A9,A4 + MOVE A9,A5 + JRUC PUT_UP_BOX + +CLOSE_SCREEN_BOX_CENTER + MOVI [127,200],A9 + MOVK 25,A8 +CLOSE_SCREEN_BOX + MOVI DRAW_BOXES,A0 + MOVE A0,@WHICH_SCREEN,L + CALLR CALC_INCREMENTS + MOVI [400,0],A5 + MOVI [254,0],A7 + +PUT_UP_BOX + CALLR CALC_BOX + PUSHP A0,A1,A2,A3 + PUSHP A4,A5,A6,A7 + SLEEP 1 + PULLP A4,A5,A6,A7 + PULLP A0,A1,A2,A3 + DSJS A8,PUT_UP_BOX + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A0 + MOVE A0,@TOP_LEFT,L + MOVE A0,@BOT_RIGHT,L + RETP + +CALC_INCREMENTS + MOVY A9,A7 + CLR A1 + MOVX A9,A1 + SLL 16,A1 + DIVS A8,A1 + MOVE A1,A0 + CLR A1 + MOVX A9,A1 + MOVI 400,A5 + SUB A5,A1 + SLL 16,A1 + DIVS A8,A1 + + CLR A3 + MOVY A7,A3 + DIVS A8,A3 + MOVE A3,A2 + CLR A3 + MOVY A7,A3 + SRL 16,A3 + MOVI 254,A5 + SUB A5,A3 + SLL 16,A3 + DIVS A8,A3 + + CLR A4 + CLR A5 + CLR A6 + CLR A7 +DUMRETS + RETS + +;A0 32BIT ADD FOR LEFT +;A1 32BIT ADD FOR RIGHT +;A2 32BIT ADD FOR TOP +;A3 32BIT ADD FOR BOTTOM +;A4 32BIT XPOS FOR LEFT +;A5 32BIT XPOS FOR RIGHT +;A6 32BIT YPOS FOR TOP +;A7 32BIT YPOS FOR BOTTOM + +CALC_BOX + ADD A0,A4 + ADD A1,A5 + ADD A2,A6 + ADD A3,A7 + MOVE A4,A14 + SRL 16,A14 + MOVY A6,A14 + MOVE A14,@TOP_LEFT,L + MOVE A5,A14 + SRL 16,A14 + MOVY A7,A14 + MOVE A14,@BOT_RIGHT,L + RETS + +DRAW_BOXES + MOVI 01000100H,A5 + CLR A8 + MOVI 4a748c9H,A11 + MOVI 900C0000H,A12 + + CLR A10 + MOVI [255,0],A1 + MOVE @TOP_LEFT,A9 + jrz no_draw_anything1 + MOVY A1,A9 + + callr dma_it_out + +no_draw_anything1 + MOVI 400,A1 + MOVE @BOT_RIGHT,A10 + SUB A10,A1 + jrz no_draw_anything2 + jrn no_draw_anything2 + MOVX A1,A9 + CLR A10 + MOVE @BOT_RIGHT,A10 + + callr dma_it_out + +no_draw_anything2 + CLR A10 + MOVE @TOP_LEFT,A10 + + MOVE @BOT_RIGHT,A9 + SUB A10,A9 + JRZ no_draw_anything4 + JRN no_draw_anything4 + MOVE @TOP_LEFT+010H,A14 + JRZ no_draw_anything3 + JRN no_draw_anything3 + SLL 16,A14 + MOVY A14,A9 + + callr dma_it_out + +no_draw_anything3 + + CLR A10 + MOVE @TOP_LEFT,A10 + MOVE @BOT_RIGHT,A14,L + MOVY A14,A10 + + MOVI 254,A3 + SRL 16,A14 + SUB A14,A3 + JRZ no_draw_anything4 + JRN no_draw_anything4 + SLL 16,A3 + MOVY A3,A9 + + callr dma_it_out +no_draw_anything4 + + RETS + .ENDIF + +;A5 SCALE +;A8 PAL|CONST +;A9 YSIZE|XSIZE +;A10 DAG +;A11 SAG +;A12 OCTRL|OFFSET +dma_it_out + move b2,a1 + addxy a1,a10 ;Add the page y offset : XPad + mmtm a4,a5,a8,a9,a10,a11,a12 ;Save the dma regs + addk 1,b13 ;+1 Q cnt + jrgt #nxt ;DMA going? + + dint + + setf 1,0,0 ;>Enable DMA int + movk 1,a1 + move a1,@INTENB+1 ;X1E + setf 16,1,0 + + move *b11,b0 + jrn #dmaok ;DMA busy? + + move b13,b13 + jrn #dmaok ;DMA int done? + + trap 1 ;Cause DMA int + +#dmaok eint +#nxt +DUMRETS + rets + +;#************************************************************************** +;* * +;* ENTRY A8=SPEED OF ONE LINE, A9=DELAY BETWEEN EACH LINE (IF NEG START A * +;* at the top, otherwise start at the bottom * +;* * +;************************************************************************** +OPEN_VERT_SCREEN_LINE + + move @WHAT_SPEED,A8 + + MOVI HORZTRN1P,A0 + CALLA pal_getf + move a0,@which_pal + + MOVI [0,400],A1 + MOVE A1,@TOP_LEFT,L + CLR A1 + MOVE A1,@BOT_RIGHT,L + + MOVI [256,0],A0 + CLR A1 + CLR A3 + CALLR SET_INITIAL_LINES + + MOVI LINES_VERT,A1 + MOVE A1,@WHICH_SCREEN,L + + MOVI [255,0],A11 + DIVS A8,A11 + NEG A11 + + MOVK 7,A10 +#NEXT_LINE2B + movk 18,a0 + calla triple_sound + CREATE0 MOVE_LINE_VERT + MOVE A9,A0 + CALLA PRCSLP + DEC A10 + JRNN #NEXT_LINE2B + + MOVE A8,A0 + SUB A9,A0 + ADDK 2,A0 + CALLA PRCSLP + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A1 + MOVE A1,@TOP_LEFT,L + MOVE A1,@BOT_RIGHT,L +; CALLA pal_clean + RETP + +;#************************************************************************** +;* * +;* ENTRY A8=SPEED OF ONE LINE, A9=DELAY BETWEEN EACH LINE * +;* IF DELAY IS NEGATIVE (IE TWOS COMPLEMENT) THEN GO FROM TOP DOWN * +;* * +;************************************************************************** +CLOSE_VERT_SCREEN_LINE + + calla get_all_buttons_cur2 + jrz #reg_spd + srl 1,a8 +#reg_spd + move a8,@WHAT_SPEED + MOVI HORZTRN1P,A0 + CALLA pal_getf + move a0,@which_pal + + CLR A1 + MOVE A1,@TOP_LEFT,L + MOVE A1,@BOT_RIGHT,L + + CLR A0 + CLR A3 + MOVI [256,0],A1 + CALLR SET_INITIAL_LINES + + MOVI LINES_VERT,A1 + MOVE A1,@WHICH_SCREEN,L + + MOVI [255,0],A11 + DIVS A8,A11 + + MOVK 7,A10 +#NEXT_LINE2A + movk 18,a0 + calla triple_sound + CREATE0 MOVE_LINE_VERT + MOVE A9,A0 + CALLA PRCSLP + DEC A10 + JRNN #NEXT_LINE2A + + MOVE A8,A0 + SUB A9,A0 + ADDK 2,A0 + CALLA PRCSLP + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A1 + MOVE A1,@TOP_LEFT,L + MOVE A1,@BOT_RIGHT,L +; CALLA pal_clean + RETP + +MOVE_LINE_VERT + MOVE A11,A11 + JRNN NO_NEED_TO_RESET_NOW + + MOVE A10,A1 + MOVI 50,A3 + MPYU A3,A1 + MOVE A1,@TOP_LEFT + +NO_NEED_TO_RESET_NOW + + MOVE A10,A9 + SLL 6,A9 + ADDI LINE_1,A9 +ADD_NEXT_BIT_TO_LINE + MOVE A10,A0 + SRL 1,A0 + JRNC YOU_STAY_HERE + MOVE *A9,A0,L + SUB A11,A0 + MOVE A0,*A9,L +YOU_STAY_HERE + MOVE *A9(020H),A0,L + ADD A11,A0 + MOVE A0,*A9(020H),L + SLEEPK 1 + DSJS A8,ADD_NEXT_BIT_TO_LINE + MOVE A11,A11 + JRN WE_OPENING + MOVI [100H,0],A0 + MOVE A0,*A9(020H),L + CLR A0 + MOVE A0,*A9,L + + MOVI 9,A1 + SUB A10,A1 + MOVI 50,A3 + MPYU A3,A1 + NEG A1 + MOVE A1,@BOT_RIGHT + DIE + +WE_OPENING + CLR A0 + MOVE A0,*A9(020H),L + MOVI [100H,0],A0 + MOVE A0,*A9,L + DIE + +LINES_VERT + MOVI 01000100H,A5 + CLR A8 + MOVI [256,50],A9 + move @which_pal,a8 + MOVI 0d0020000H,A12 + + CLR A14 + MOVI LINE_1,A3,L + MOVK 8,A2 +DO_NEXT_VERT_LINE + CALLR DISPLAY_VERT_LINE + DSJS A2,DO_NEXT_VERT_LINE + RETS + +DISPLAY_VERT_LINE + MOVE @VERTTRN1+040H,A11,L + MOVE A2,A0 + SRL 1,A0 + JRNC GOT_TOP_BAR + MOVE @VERTTRN2+040H,A11,L +GOT_TOP_BAR + + MOVE A14,A10 + SRL 16,A10 + MOVE *A3+,A0,L ;POSITION + MOVY A0,A10 + MOVE *A3+,A0,L ;SIZE + SRA 16,A0 + JRZ NO_DISPLAY_VERT_LINE + JRN NO_DISPLAY_VERT_LINE + MOVE A0,A1 + SLL 16,A0 + MOVY A0,A9 + + MOVE A2,A6 + SRL 1,A6 + JRC NO_SHIFT_SAG + MOVI 256,A6 + SUB A1,A6 + MOVI 50,A1 + MPYU A6,A1 + MOVE A1,A6 + SLL 2,A1 + ADD A6,A1 + ADD A1,A11 +NO_SHIFT_SAG + + CALLR dma_it_out +NO_DISPLAY_VERT_LINE + ADDI [50,0],A14 + RETS + + +;#************************************************************************** +;* * +;* ENTRY A8=SPEED OF ONE LINE, A9=DELAY BETWEEN EACH LINE (IF NEG START A * +;* at the top, otherwise start at the bottom * +;* * +;************************************************************************** +OPEN_SCREEN_LINE + move @WHAT_SPEED,A8 + MOVI HORZTRN1P,A0 + CALLA pal_getf + move a0,@which_pal + + MOVI LINE_1+040H,A0 + MOVE A0,@LINE_START,L + CLR A1 + CLR A3 + MOVI [400,0],A0 + CALLR SET_INITIAL_LINES + MOVI [400,0],A11 + DIVS A8,A11 + NEG A11 + MOVE A9,A9 + JRN #SET_BOT_RIGHT + MOVI [254,0],A10 + MOVE A10,@TOP_LEFT,L + JRUC DO_LINES +#SET_BOT_RIGHT + MOVI [254,0],A10 + NEG A10 + MOVE A10,@BOT_RIGHT,L + JRUC DO_LINES + +;#************************************************************************** +;* * +;* ENTRY A8=SPEED OF ONE LINE, A9=DELAY BETWEEN EACH LINE * +;* IF DELAY IS NEGATIVE (IE TWOS COMPLEMENT) THEN GO FROM TOP DOWN * +;* * +;************************************************************************** +CLOSE_SCREEN_LINE + MOVE @GAMSTATE,A14 + CMPI INAMODE,A14 + JREQ MAKE_IT_FAST + + calla get_all_buttons_cur2 + jrz #reg_spd2 +MAKE_IT_FAST + srl 1,a8 +#reg_spd2 + move a8,@WHAT_SPEED + + MOVI HORZTRN1P,A0 +; MOVE @GAMSTATE,A14 +; CMPI INAMODE,A14 +; JRNE NORMAL_COLOURS +; MOVI DRKTRPLTP,A0 +;NORMAL_COLOURS + CALLA pal_getf + move a0,@which_pal + + MOVI LINE_1,A0 + MOVE A0,@LINE_START,L + CLR A0 + CLR A3 + MOVI [400,0],A1 + CALLR SET_INITIAL_LINES + + MOVI [400,0],A11 + DIVS A8,A11 +DO_LINES + MOVE A9,@WHICH_WAY + MOVE A9,A9 + JRNN #BOTTOM_UP + NEG A9 + +;TOP DOWN + MOVK 1,A10 +#NEXT_LINE1 + + MOVE @GAMSTATE,A0 + CMPI INAMODE,A0 + JREQ NO_SOUNDS + movk 18,a0 + calla triple_sound +NO_SOUNDS + CREATE0 MOVE_LINE + MOVE A9,A0 + JRZ #NO_SLEEP_BETWEEN1 + CALLA PRCSLP +#NO_SLEEP_BETWEEN1 + INC A10 + CMPI 7,A10 + JRNE #NEXT_LINE1 + JRUC EXIT_CLOSE_LINE + +#BOTTOM_UP + MOVK 6,A10 +#NEXT_LINE2 + MOVE @GAMSTATE,A0 + CMPI INAMODE,A0 + JREQ NO_SOUNDS2 + movk 18,a0 + calla triple_sound +NO_SOUNDS2 + CREATE0 MOVE_LINE + MOVE A9,A0 + JRZ #NO_SLEEP_BETWEEN2 + CALLA PRCSLP +#NO_SLEEP_BETWEEN2 + DSJS A10,#NEXT_LINE2 +EXIT_CLOSE_LINE + MOVE A8,A0 + SUB A9,A0 + ADDK 2,A0 + CALLA PRCSLP + MOVI DUMRETS,A1 + MOVE A1,@WHICH_SCREEN,L + CLR A1 + MOVE A1,@TOP_LEFT,L + MOVE A1,@BOT_RIGHT,L + MOVE @LINE_START,A1,L + + CMPI LINE_1,A1 + JREQ NO_CLEAR_OUT_PALS + CALLA pal_clean +NO_CLEAR_OUT_PALS + RETP + +SET_INITIAL_LINES + MOVI LINE_1,A2 + MOVE A3,*A2+,L + MOVE A0,*A2+,L + MOVE A1,*A2+,L + MOVE A0,*A2+,L + + MOVE A3,*A2+,L + MOVE A0,*A2+,L + MOVE A1,*A2+,L + MOVE A0,*A2+,L + + MOVE A3,*A2+,L + MOVE A0,*A2+,L + MOVE A1,*A2+,L + MOVE A0,*A2+,L + + MOVE A3,*A2+,L + MOVE A0,*A2+,L + MOVE A1,*A2+,L + MOVE A0,*A2+,L + + MOVI LINES,A1 + MOVE A1,@WHICH_SCREEN,L + + RETS + +MOVE_LINE + MOVE A11,A11 + JRN NO_DEC_A10 + DEC A10 + JRUC A10_POINTS_AT_START_LINE +NO_DEC_A10 + MOVI 43,A7 + DEC A10 + MPYS A10,A7 + INC A10 + + MOVE @WHICH_WAY,A0 + JRNN LINES_OPEN_DOWN + +LINES_OPEN_UP + ADDI 43,A7 + MOVI 254,A0 + SUB A7,A0 + SLL 16,A0 + NEG A0 + MOVE A0,@BOT_RIGHT,L + JRUC A10_POINTS_AT_START_LINE + +LINES_OPEN_DOWN + SLL 16,A7 + MOVE A7,@TOP_LEFT,L + +A10_POINTS_AT_START_LINE + MOVE A10,A9 + SLL 6,A9 + ADDI LINE_1,A9 +EXPAND_LINE + MOVE A10,A0 + SRL 1,A0 + JRNC NO_MOVE_LINE_X + MOVE *A9,A0,L + SUB A11,A0 + MOVE A0,*A9,L +NO_MOVE_LINE_X + MOVE *A9(020H),A0,L + ADD A11,A0 + MOVE A0,*A9(020H),L + SLEEPK 1 + DSJS A8,EXPAND_LINE + MOVE A11,A11 + JRNN SET_LINES_SOLID + CLR A0 + MOVE A0,*A9(020H),L + DIE + +SET_LINES_SOLID + CLR A0 + MOVE A0,*A9,L + MOVI [400,0],A0 + MOVE A0,*A9(020H),L + + MOVI 43,A7 + MPYS A10,A7 + + MOVE @WHICH_WAY,A0 + JRN LINES_CLOSE_DOWN + +LINES_CLOSE_UP + MOVI 254,A0 + SUB A7,A0 + SLL 16,A0 + NEG A0 + MOVE A0,@BOT_RIGHT,L + DIE + +LINES_CLOSE_DOWN + ADDI 43,A7 + SLL 16,A7 + MOVE A7,@TOP_LEFT,L + DIE + +LINES + MOVI 01000100H,A5 + CLR A8 + move @which_pal,a8 + MOVI [43,400],A9 + MOVI 0d0020000H,A12 + + CLR A14 + MOVE @LINE_START,A3,L + MOVK 6,A2 +DO_NEXT_LINE + CALLR DISPLAY_LINE + DSJS A2,DO_NEXT_LINE + RETS + +DISPLAY_LINE + MOVE @HORZTRN1+040H,A11,L + MOVE A2,A0 + SRL 1,A0 + JRNC GOT_RIGHT_BAR + MOVE @HORZTRN2+040H,A11,L +GOT_RIGHT_BAR + + MOVE *A3+,A0,L ;POSITION + SRL 16,A0 + MOVX A0,A10 + MOVY A14,A10 + MOVE *A3+,A0,L ;SIZE + SRA 16,A0 + JRZ NO_DISPLAY_LINE + JRN NO_DISPLAY_LINE + + MOVI 400,A1 + SUB A0,A1 + MOVX A1,A12 + + MOVE A2,A6 + MOVE @LINE_START,A0,L + CMPI LINE_1,A0 + JREQ WHICH_SIDE_CLIP + DEC A6 +WHICH_SIDE_CLIP + SRL 1,A6 + JRC NO_SHIFT_CLIP + MOVE A1,A6 + SLL 2,A1 + ADD A1,A6 + ADD A6,A11 +NO_SHIFT_CLIP + + CALLR dma_it_out +NO_DISPLAY_LINE + ADDI [43,0],A14 + RETS + +RESETUP_LINES + MOVI LINES,A0 + MOVE A0,@WHICH_SCREEN,L + MOVI HORZTRN1P,A0 + CALLA pal_getf + move a0,@which_pal + rets + + SUBR DRKTRPLTP + .word 31 + .word 00000h,00407h,00407h,00808h,00809h,00c09h,00809h,0100ah + .word 0100ah,01009h,0100bh,00808h,00408h,00007h,00408h,01c0bh + .word 0140ah,01409h,0180ah,01809h,01c0ah,0180ah,00c08h,00006h + .word 0140dh,02410h,00004h,00003h,00001h,0344dh,05ef7h + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SELECT.ASM b/SELECT.ASM new file mode 100755 index 0000000..9642a5c --- /dev/null +++ b/SELECT.ASM @@ -0,0 +1,3323 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 1066, shortly after the Battle of Hastings +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 11/22/93 14:24 +************************************************************** + + .file "select.asm" + .title "wrestling selection screens" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;Mproc equates + .include "display.equ" ;Display proc equates + .include "gsp.equ" ;Gsp asm equates + .include "sys.equ" + .include "game.equ" + .include "audit.equ" + .include "macros.h" + .include "link.equ" + .include "sound.h" + .include "plyr.equ" + .INCLUDE "SOUND.EQU" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "imgtbl.glo" + .include "miscimg.glo" + .include "ropeimg.glo" + +#***************************************************************************** + + .ref current_round + .ref DO_BEATEN_GAME + + .def howard_wins,digits_tbl,calc_match_time_1 + .def num_wrestlers,wrestler_mugs + + .def wrestler_attributes,attbars + .def wrestler_mugs2,wrestler_audits + + .ref ADD_VOICE,BAKMODS,BCDBIN,BEGINOBJ_TBL,BGND_UD1 + .ref BINBCD,change_image,CHECK_SCORE,civanic + .ref CLOSE_PROGRESS_SCREEN,CLOSE_SCREEN_LINE,CR_STRTP + .ref CURRENT_ANN_QUEUE,DONE_HOWARD,do_that_cycle,dpageflip + .ref entered_inits,FADE_MASTER_VOL,FIND_LOW_TABLE_LEVEL + .ref GET_ADJ,get_but_val_down,get_process_ptr,get_start_cur + .ref get_stick_val_cur,get_stick_val_down,match_time + .ref NEXT_ANN_QUEUE,no_pin_check,PCNT,pin_speed_check + .ref PIN_SPEED_TAB,PSTATUS,PUT_UP_PROGRESS,RNDPER,RNDRNG0 + .ref SPECIAL_WIPEOUT,start_credbox + .ref NEXT_IN_LADDER,INIT_LADDER_TABLE + .ref NUM_OF_OPPS,CURRENT_LADDER,get_all_buttons_cur2 + .ref print_message,osgemd_ascii,is_final_match + .ref UNIT_CLR,attract_mode,round_start_time,round_end_time + .REF set_volume + .REF belt_type + + .if DEBUG + .ref stay_down + .endif + + .ref total_matches + .ref triple_sound,winstreak_check,WIPEOUT,wmania_tune + .ref print_beaten + .ref print_inter + .ref GET_AUD + .ref match_cnt + .ref show_bonus_icons + .ref clear_icon_total + .ref del_bonus_icons + + .ref wgsf24_ascii + .REF royal_rumble + .REF DO_TAG_GAME + .ref print_tag + .ref hscore_colcyc + .ref hscore_colcyc2 + .ref font9_ascii,FNT9WHT_P,auto_init + +#***************************************************************************** + + BSSX MATCH_TIMERS,64 + bssx which_player,32 + + BSSX index1, 16 ;player 1 cursor position + BSSX index2, 16 ;player 2 cursor position + .bss time_out, 16 ;time out flag + BSSX active_flag, 16 ;0:player 1 active, 1:player 2 active + + .bss kp_p1cursor, 32 + .bss blow_out, 16 ;Flag for not delaying after no buyin + .BSS SPEECH_STARTED, 16 + + bssx match_time_bcd,32 + + bssx are_we_waiting_f,32 +; BSSX player_pal_pref,116*2 + BSSX player_pal_pref,120*2 + .bss cursor_procs,16 + BSSX rr_loss,16 + .BSS TEMP_PSTATUS,16 + +#***************************************************************************** + +num_wrestlers EQU 9 + + .word AUD_SNDERR4,AUD_SNDERR4,AUD_SNDERR4,AUD_SNDERR4 +wrestler_audits + .word AUD_BHART,AUD_BHARTHW,AUD_BHARTC,AUD_BHARTCW + .word AUD_RRAMO,AUD_RRAMOHW,AUD_RRAMOC,AUD_RRAMOCW + .word AUD_UNDER,AUD_UNDERHW,AUD_UNDERC,AUD_UNDERCW + .word AUD_YOKO,AUD_YOKOHW,AUD_YOKOC,AUD_YOKOCW + .word AUD_SMICH,AUD_SMICHHW,AUD_SMICHC,AUD_SMICHCW + .word AUD_BBBIG,AUD_BBBIGHW,AUD_BBBIGC,AUD_BBBIGCW + .word AUD_DCLOW,AUD_DCLOWHW,AUD_DCLOWC,AUD_DCLOWCW + .word 0,0,0,0 + .word AUD_LLUGE,AUD_LLUGEHW,AUD_LLUGEC,AUD_LLUGECW +wrestler_auditsX + +#***************************************************************************** + +PLEASE_YPOS .equ 45 +CONTINUE_YPOS .equ PLEASE_YPOS+157 +CREDIT_LINE_YPOS .equ 110 +TIMER_YPOS .equ 208 +TO_CONTINUE_YPOS .equ CREDIT_LINE_YPOS+15 + +#***************************************************************************** + + .ref OLD_PSTATUS + .ref CR_CONTP + .ref GAMSTATE +; .ref secret_damage + +#******************************* + + STRUCTPD + LONG #cursorimg ;UHL cursor *img + LONG #hiliteimg ;UHL hilite letter *img + WORD #stick ;UHW stick to read + LONG #which_tab + LONG #which_entry + LONG #which_level + + SUBR GAME_BEATEN + + ;kill the ladder + calla INIT_LADDER_TABLE + + MOVK INPARTY,A0 + MOVE A0,@GAMSTATE + MOVI 998,A3 + CALLA SNDSND + movi 2,a0 + calla RNDRNG0 + move a0,a3 + addk 0fh,a3 + calla SNDSND + + MOVK 5,A11 + MOVI 32,A8 + CREATE FADE_PID,FADE_MASTER_VOL + + calla WIPEOUT + movk 1,a0 ;page flipping on + move a0,@dpageflip + calla start_credbox + movi #plyrsel_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + clr a14 + move a14,@time_out + + CREATE CROUTON_PID,display_croutons + + MOVE @royal_rumble,A10 + JRNZ WE_PLAYED_A_TAG_TEAM + + move @PSTATUS,A10 + srl 1,a10 + move a10,a8 + + MOVE a8,a1 + sll 5,a1 + move a8,a2 + sll 4,a2 + add a2,a1 + addi entered_inits,a1 + clr a2 + move a2,*a1+,L + move a2,*a1 + + push a10 + clr a1 + move a10,a10 + jrnz which_playr_set + movk 1,a1 +which_playr_set + move a1,a10 + CREATE PCURSOR_PID,player_cursor + + pull a10 + push a10 + + JSRP DO_BEATEN_GAME + pull a10 + +are_we_waiting4 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ no_need_for_inputb + sleep 1 + movi CYCPID,a0 + movi -1,a1 + calla EXISTP + jrnz are_we_waiting4 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ no_need_for_inputb + mmtm sp,a10,a9,a8 + calla do_that_cycle + mmfm sp,a10,a9,a8 + jruc are_we_waiting4 + +no_need_for_inputb + + CALLA WIPEOUT + movk 1,a0 ;page flipping on + move a0,@dpageflip + movi #hstd_mod,a0 + move a0,@BAKMODS,L + CALLA BGND_UD1 ;create objects for background + + movi AUD_BEATEN,A0 + MOVE @belt_type,a1 + jrnz got_right_audit + MOVI AUD_INTER,A0 +got_right_audit + calla GET_AUD + SUBI 1,A1 + CMPI 1,A1 + JRGE NO_PROBLEM + MOVK 1,A1 +NO_PROBLEM + CMPI 48,A1 + JRLE NO_PROBLEM2 + MOVI 48,A1 +NO_PROBLEM2 + MOVE A1,A5 + + MOVE @belt_type,a1 + jrnz DISPLAY_RIGHT_TABLE + JSRP print_inter + + SLEEP TSEC*7 + RETP + +DISPLAY_RIGHT_TABLE + JSRP print_beaten + calla hscore_colcyc + calla hscore_colcyc2 + + SLEEP TSEC*7 + RETP + +WE_PLAYED_A_TAG_TEAM + + move @MATCH_TIMERS,a9,L + jrp #time_ok + move @MATCH_TIMERS+20h,a9,L + jrnz #time_ok + + .if DEBUG + LOCKUP ;bogus timer value + .endif + movi 12340,a9 ;123.4 seconds if the value is bogus +#time_ok + + CLR A10 + MOVE A10,@entered_inits,L + MOVE A10,@entered_inits+32,L + MOVE A10,@entered_inits+64,L + clr a8 + + JSRP DO_TAG_GAME + + MOVK 1,A10 + MOVE A10,A8 + JSRP DO_TAG_GAME + +are_we_waiting5 + sleep 1 + + movi CYCPID,a0 + movi -1,a1 + calla EXISTP + jrnz are_we_waiting6 + + calla do_that_cycle +are_we_waiting6 + movi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRNZ are_we_waiting5 + movi HI_INPUT_PID+1,a0 + movi -1,a1 + calla EXISTP + JRNZ are_we_waiting5 +no_need_for_inputc + .if RR_AWARD = 1 + move @royal_rumble,a14 + jrnz no_scores + .endif + + + CALLA WIPEOUT + movk 1,a0 ;page flipping on + move a0,@dpageflip + movi #hstd_mod,a0 + move a0,@BAKMODS,L + CALLA BGND_UD1 ;create objects for background + + JSRP print_tag + + calla hscore_colcyc + calla hscore_colcyc2 + + SLEEP TSEC*7 + + .if RR_AWARD = 1 +no_scores + .endif + + RETP + + +#hstd_mod +hstd_mod + .long slateBMOD + .word 0,0 + .long 0 + +****************************************************************************** + + SUBR pin_speed_in_case + MOVE @PSTATUS,@TEMP_PSTATUS + + move @total_matches,a14 + jrz no_need_for_input + move @current_round,a14 + cmpi 3,a14 + jreq no_need_for_input + + calla is_final_match + jrc no_need_for_input + movi INSELECT,a14 + move a14,@GAMSTATE + + move a10,a8 + + move a8,A1 + CALLA get_process_ptr + MOVE A8,A0 + SLL 5,A0 + ADDI MATCH_TIMERS,A0 + move *a0,A0,L + movi FIND_LOW_TABLE_LEVEL,a11 + move a11,*a13(#which_level),L + clr a3 + MOVI PIN_SPEED_TAB,A8 + calla CHECK_SCORE + + jrz no_need_for_input + move a10,A1 + sll 5,a1 + + MOVE A10,A2 + SLL 4,A2 + ADD A2,A1 + addi entered_inits,a1 + move *a1,a1,L + jrnz no_display_anything + + + MOVI 998,A3 + CALLA SNDSND + movi 2,a0 + calla RNDRNG0 + move a0,a3 + addk 0fh,a3 + calla SNDSND + + MOVK 5,A11 + MOVI 32,A8 + CREATE FADE_PID,FADE_MASTER_VOL + + calla WIPEOUT + movk 1,a0 ;page flipping on + move a0,@dpageflip + calla start_credbox + movi #plyrsel_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + clr a14 + move a14,@time_out + + CREATE CROUTON_PID,display_croutons + + push a10 + clr a1 + move a10,a10 + jrnz which_play_set + movk 1,a1 +which_play_set + move a1,a10 + CREATE PCURSOR_PID,player_cursor + + pull a10 +no_display_anything + + move a10,a8 + mmtm sp,a6,a7,a8,a9,a10,a11 + jsrp pin_speed_check + mmfm sp,a6,a7,a8,a9,a10,a11 + +are_we_waiting3 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ no_need_for_input + sleep 1 + movi CYCPID,a0 + movi -1,a1 + calla EXISTP + jrnz are_we_waiting3 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ no_need_for_input + mmtm sp,a10,a9,a8 + calla do_that_cycle + mmfm sp,a10,a9,a8 + jruc are_we_waiting3 + +no_need_for_input + MOVE @TEMP_PSTATUS,A14 + MOVE @PSTATUS,A1 + CMP A1,A14 + JREQ NORMAL_EXIT + + clr a14 + move a14,@time_out + + ;a10 is already set up with side we are on 0 or 1 + CREATE PCURSOR_PID,player_cursor + inc a10 + move @active_flag,a14 + or a10,a14 + move a14,@active_flag + + + MOVI CLOCK_PID,A0 + movi -1,a1 + CALLA EXISTP + jrz waitloop + + movi select_time,a14 + move a14,*a0(PA9) + clr a14 + move a14,@OLD_PSTATUS + + JRUC waitloop + +NORMAL_EXIT + RETP + +calc_match_time_1 + callr work_out_match_time +; movi 10000,a1 +; sub a0,a1 + JRUC STORE_MATCH_TIME + + .def calc_match_time_2 +calc_match_time_2 + callr work_out_match_time +; movi 10000,a1 +; sub a0,a1 + MOVE *A10(PLYRNUM),A0 + CMPI 2,A0 + JRGE NO_POINT_ITS_A_DRONE + SLL 5,A0 + ADDI MATCH_TIMERS,A0 + MOVE *A0,A0,L + add a1,a0 + cmpi 50000,a0 + jrge no_bother_pin_speed_check + MOVE A0,A0 + JRN no_bother_pin_speed_check + calla BINBCD + move a0,a1 + JRUC STORE_MATCH_TIME +no_bother_pin_speed_check + movi -1,a1 +STORE_MATCH_TIME + MOVE *A10(PLYR_SIDE),A0 + CMPI 2,A0 + JRGE NO_POINT_ITS_A_DRONE + SLL 5,A0 + ADDI MATCH_TIMERS,A0 + MOVE A1,*A0,L +NO_POINT_ITS_A_DRONE + rets + + +****************************************************************************** +* +* Return match time in a0, format is kinda funny. Return 100 - time elapsed +* in BCD, 0xIIFF format, where II is the integer part and FF is the fractional. +* Then convert this back to hex from BCD. + + SUBRP work_out_match_time + + ;old + move @match_time,a4,L + move a4,a1 + srl 8,a4 + sll 24,a1 + srl 12,a1 + or a1,a4 + + move @match_time+020h,a5 + sll 16,a5 + srl 16,a5 + movi 100,a0 + mpyu a0,a5 + srl 16,a5 + move a5,a0 + calla BINBCD + or a4,a0 + calla BCDBIN + + + ;new + move @round_end_time,a1 + move @round_start_time,a14 + sub a14,a1 ;ticks + movi (100<<8)/55,a14 ;convert from 55ths to 100ths. + mpyu a14,a1 + srl 8,a1 + +; movi 10000,a0 +; sub a1,a0 +; calla BINBCD +; calla BCDBIN + + rets + + +*********** + + +howard_wins + MOVE @SPEECH_STARTED,a0 + CMPI 2,A0 + jreq NO_SPEECH_COS_HOWRD_TALKIN + movi NORMAL_WINNERS,a2 + + CALLA is_final_match + JRNC NOT_LAST_MATCH + movi SPECIAL_CONGRATS,A2 + +NOT_LAST_MATCH + MOVK 2,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADD A2,A0 + MOVE *A0,A0 + CALLA ADD_VOICE + movk 2,a0 + MOVE a0,@SPEECH_STARTED + sleep 80 + clr a0 + MOVE a0,@SPEECH_STARTED + die + +NORMAL_WINNERS + .WORD 1FEH + .WORD L_SIGN_YOUR_NAME + .WORD SIGN_HERE_PLEASE + +SPECIAL_CONGRATS + .WORD CONGRATULATIONS + .WORD L_CONGRATS + .WORD CONGRATULATIONS + + + + SUBRP call_wrestler_name + SLEEPK 20 ;wait 1/3 sec before doing anything. + +#wait SLEEPK 1 + MOVE @SPEECH_STARTED,A0 + JRNZ #wait + MOVE @NEXT_ANN_QUEUE,A1,L + MOVE @CURRENT_ANN_QUEUE,A2,L + CMP A1,A2 + JRNE NO_SPEECH_COS_HOWRD_TALKIN + MOVK 1,A0 + MOVE A0,@SPEECH_STARTED + MOVE *A8,A9 + SLL 5,A9 + ADDI WHICH_SPEECH,A9 + MOVE *A9,A0 + CALLA ADD_VOICE + MOVE *A8(010H),A0 + CALLA PRCSLP + CLR A0 + MOVE A0,@SPEECH_STARTED +NO_SPEECH_COS_HOWRD_TALKIN + DIE + +;Bret +;Razor +;Taker +;Yoko +;Shawn +;Bam Bam +;Doink +;spare +;Lex +WHICH_SPEECH + .WORD 131H,70 + .WORD 12DH,44 + .WORD 12FH,54 + .WORD 132H,59 + .WORD 12CH,55 + .WORD 12EH,76 + .WORD 12BH,54 + .WORD 0,0 + .WORD 130H,47 + + SUBR buyin_select + +;This turns on the player select background, etc. + +;If this is a one player game, then display standard challenger needed +;message on the correct side. Then display a please continue message +;on the other side, along with a buyin timer. + +;If this is a two player game, turn on the cursor, etc. for the winning +;player. Then display a please continue message on the other side, along +;with a buyin timer. + +;If a player chooses to let his buyin timer expire, then check to see if +;he had achieved a high score. If so, display the initials on his side +;and let him pick. The other player (or none) will stay in limbo. + + movi INWAITCONT,a14 ;set GAMSTATE + move a14,@GAMSTATE + + SUBR select_screen + + ;clear royal_rumble at the start of every select screen + clr a14 + move a14,@royal_rumble + + calla display_blank + clr a0 +; move a0,@secret_damage + MOVE A0,@SPEECH_STARTED + + calla WIPEOUT ;kill any attract modes or old + ;battles lying around. + movi INSELECT,a14 ;set GAMSTATE + move a14,@GAMSTATE + movi SELECT_PID,a14 ;set our PID + move a14,*a13(PROCID) + + .if DEBUG +;Temp, stuff @index1,2 for testing wrestlers. + + move @skip_select,a0 + jrz #noskp + +;0 (Bret) +;1 (Razor) +;2 (Taker) +;3 (Yoko) +;4 (Shawn) +;5 (Bam Bam) +;6 (Doink) +;7 spare +;8 (Lex) + + calla display_unblank + movi 4,a0 + move a0,@index1 + movi 8,a0 + move a0,@index2 + +; MOVK 1,A0 +; .ref BONUS_POWER +; MOVE A0,@BONUS_POWER + + move @skip_select,a0 + jrp #skp + + .ref NUM_OPPS + movk 1,a0 + move a0,@NUM_OPPS + +#skp +; RETP + + clr a0 + calla get_but_val_cur + btst PLAYER_BLOCK_BIT,a0 + jrz #no_block1 + movk 1,a14 + move a14,@stay_down + andni PLAYER_BLOCK_VAL,a0 +#no_block1 + X16 a0 + addi #select_table,a0 + move *a0,a14 + move a14,@index1 + + movi 1,a0 + calla get_but_val_cur + btst PLAYER_BLOCK_BIT,a0 + jrz #no_block2 + movk 1,a14 + move a14,@stay_down + andni PLAYER_BLOCK_VAL,a0 +#no_block2 + X16 a0 + addi #select_table,a0 + move *a0,a14 + move a14,@index2 + RETP + + ;lookup table +#df equ 8 ;LEX +#select_table + .word #df + .word 3 ;1 punch - YOKO + .word #df,#df + .word 0 ;4 spunch - BRET + .word 8 ;5 punch + spunch - LEX + .word #df,#df + .word 1 ;8 kick - RAZOR + .word 6 ;9 punch + kick - DOINK + .word #df,#df,#df + .word #df,#df,#df + .word 4 ;16 skick - SHAWN + .word #df,#df,#df + .word 5 ;20 spunch + skick - BAM BAM + .word #df,#df,#df + .word 2 ;24 kick + skick - TAKER + .word #df,#df,#df + .word #df,#df,#df,#df + + BSSX skip_select, 16 + +#noskp + .endif + + MOVK 5,A11 + MOVI 32,A8 + CREATE FADE_PID,FADE_MASTER_VOL + + clr a0 + move a0,@blow_out + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi #plyrsel_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + ;play wrestlemania tune + .if MUSIC_ON + MOVE @match_cnt,A0 + JRNZ NO_NEW_TUNE + CREATE0 wmania_tune +NO_NEW_TUNE + .endif + + CREATE CROUTON_PID,display_croutons + calla start_credbox + +;Initialize flags + move @PSTATUS,a14 + move a14,@active_flag + + clr a14 + move a14,@time_out + + ;create the player cursors + clr a10 + move @rr_loss,a14 + jrz #not_rr + move a10,@cursor_procs +#not_rr + CREATE PCURSOR_PID,player_cursor + + move a0,@kp_p1cursor,L + CREATE0 blink_rndper + + movk 1,a10 + CREATE PCURSOR_PID,player_cursor + + ;wait for them to finish up + + SLEEPK 1 + + movk 1,a0 + move a0,@DISPLAYON + calla display_unblank + +waitloop + SLEEPK 1 + move @are_we_waiting_f,a14 + jrle no_we_are_not +; jrz no_we_are_not +; jrn no_we_are_not + dec a14 + move a14,@are_we_waiting_f +no_we_are_not + + move @active_flag,a14 + jrnz waitloop + + move @OLD_PSTATUS,a14 + jrnz waitloop + + +;Players have chosen their guys. wait a sec, then bail + movi 30,a8 +#final_waitloop + + SLEEPK 1 + + move @active_flag,a14 ;don't quit if someone jumps in here + jrnz waitloop + + move @blow_out,a0 + jrnz #out + + dsj a8,#final_waitloop + +#out + RETP + + + SUBRP display_croutons + +;Why is this a process? + +;Draw the croutons and their associated pix + + move @PSTATUS,a0 +; jrnz #gocrut +; SLEEPK 1 +; jruc display_croutons +;#gocrut + + movi crouton_pos_table,a9 + movi #crouton_pic_table,a10 + move *a9+,a0 +#crouton_loop + move *a9+,a1 + + sll 16,a0 + sll 16,a1 + move *a10+,a2,L + movi #crutpic_z,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + + calla BEGINOBJW + + move *a9+,a0 + jrnz #crouton_loop + +; CREATE0 select_clock +; move a0,a10 +; CREATE0 clock_digits + + DIE + + +#plyrsel_mod + .long wwfselbkBMOD + .word -40,0 + .long choiceBMOD + .word 3,256 + .long 0 + +#crutplt_z equ 1 +hiplate_z equ 2 ;oscillates from 2 to 3 +#crutpic_z equ 4 +hilite_z equ 5 + +#baseshad_z equ 1 +#hishad_z equ 2 +#attplt_z equ 3 +#sidebar_z equ 3 +#nameshad_z equ 5 +#namebar_z equ 7 +atttxt_z equ 8 + +name_z equ 9 + +mugshot_z equ 1 + +#crouton_pic_table + .long CRUT_DK + .long CRUT_RR + .long CRUT_UN + .long CRUT_YK + .long CRUT_SM + .long CRUT_BM + .long CRUT_BH + .long CRUT_LX + +crouton_pos_table + .word 164,45 + .word 204,45 + + .word 164,90 + .word 204,90 + + .word 164,135 + .word 204,135 + + .word 164,180 + .word 204,180 + + .word 0 + + +#***************************************************************************** +* Process that handles player selection for one player. +* >a10 = player (0 or 1) + + STRUCTPD + LONG #HILITE ;UHL *hilite ring + + LONG #HIPLATE ;UHL *color crouton + + LONG #NAME ;UHL *name obj (message *obj) + WORD #RND_DEST ;UHW target if in random mode + + LONG #MUG1 + LONG #MUG2 + LONG #MUG3 + LONG #MUG4 + LONG #MUG5 + LONG #MUG6 + LONG #MUG7 + LONG #MUG8 + + LONG #ATT1 + LONG #ATT2 + LONG #ATT3 + LONG #ATT4 + WORD #CNTR ;Flashing cursor delay + + +;player info struct +#PI_HILITE equ 0 ;UHL hilite box TBL_ hdr +#PI_HIPLATE equ 20h ;UHL hilite plate TBL_ hdr +#PI_STARTPOS equ 40h ;UHW starting pos (index) +#PI_MUGPOS equ 50h ;UHL mugshot [y,x] +#PI_MUGXPOS equ 50h ;UHW mugshot x +#PI_MUGYPOS equ 60h ;UHW mugshot y +#PI_MUGCTRL equ 70h ;UHW mugshot OCTRL +#PI_STARTNAME equ 80h ;UHL starting name TBL_ hdr +#PI_ATTTXT equ 0A0h ;UHL atttribute text TBL_ hdr +#PI_INDEX equ 0C0h ;UHL write selection word here +#PI_MOVESOUND equ 0E0h ;UHW cursor move triple_sound +#PI_SELSOUND equ 0F0h ;UHW select sound + +#rnd_movespeed equ 5 ;ticks between rndsel moves + +#rnd_wander equ 14 ;rnd moves before home-in begins + + SUBRP player_cursor + + ;reg use + ; a6 = ticks until another move is allowed (debounce) + ; a6 = ticks until next move (random mode) + ; a7 = moves until home-in (random mode) + ; a9 = player info struct pointer + ; a10 = player number + ; a11 = position index (0-9) + + ;aim a9 at #p?info + move a10,a9 + X32 a9 + addi #info,a9 + move *a9,a9,L + + ;initialize the index word to -1 + movi -1,a14 + move *a9(#PI_INDEX),a0,L + move a14,*a0,W + + ;initialize random dest to -1 + movi -1,a14 + move a14,*a13(#RND_DEST) + + clr a0 + move a0,*a13(#NAME),L + movk 30,a0 + move a0,*a13(#CNTR) + ;active? + move @PSTATUS,a14 + btst a10,a14 + jrnz #begin_select + + move @OLD_PSTATUS,a14 + btst a10,a14 + jrz #norm + +;This guy lost his last match: +;did this guy get a high win streak ? + move a10,a8 + mmtm sp,a6,a7,a8,a9,a10,a11 + JSRP winstreak_check + mmfm sp,a6,a7,a8,a9,a10,a11 +; .ref wrestler_number +; .ref process_ptrs +; +; PUSH a9 +; movi process_ptrs,a9 +;#find_loop +; move *a9(PLYRNUM),a0 +; cmp a10,a0 +; jrz #found +; addi 32,a9 +; jruc #find_loop +;#found +; move *a9(WRESTLERNUM),a0,W +; move a0,@wrestler_number,L +; PULL a9 + + ;wait for the enter initials stuff to end +are_we_waiting + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ FINISHED_INPUTTING + SLEEPK 1 + movi CYCPID,a0 + movi -1,a1 + calla EXISTP + jrnz are_we_waiting + + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ FINISHED_INPUTTING + mmtm sp,a10,a9,a8 + calla do_that_cycle + mmfm sp,a10,a9,a8 + jruc are_we_waiting + +FINISHED_INPUTTING + move @auto_init,a14 + jrz #no_ai + movi auto_str,a2 + calla print_message + clr a14 + move a14,@auto_init +#no_ai + + calla show_bonus_icons + + ;create the name text + move *a9(#PI_STARTNAME),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#NAME),L + +;Display please continue message +;Display price to continue +;Turn on continue timer at bottom of screen (Attribute area) + +;Wait for him to make a decision +;If he continues, turn on cursor, etc. +;If he does not continue, start the other players time out for +;player selection (If other plyr is present) + + CREATE0 buyin_counter + callr buyin_text + +;Inactive. wait for buyin +;Display the insert coin/press start message + +#enough_money1 + calla CR_CONTP + jrhs #enough_money2 +;There's not enough money. flash 'insert coins' message and wait + move *a13(#NAME),a8,L + movi WF_INSERT,a0 + calla civanic + jruc #start_waitloop1 +#enough_money2 +;There's enough money. flash 'press start' message and wait + move *a13(#NAME),a8,L + movi WF_START,a0 + calla civanic + +#start_waitloop1 + move @OLD_PSTATUS,a14 + btst a10,a14 + jrnz #okz + + move @PSTATUS,a14 + btst a10,a14 + jrnz #okz +;Timer has run out on this player + move a10,a8 + calla clear_icon_total + calla del_bonus_icons + move @PSTATUS,a0 + jrnz #still + move @rr_loss,a0 + jrz do_game_over + move @cursor_procs,a0 + jrz do_game_over + move a10,a0 + addk 1,a0 + move @active_flag,a14 + or a0,a14 + move a14,@active_flag + jruc #still +; jruc do_game_over + +;Goto game over. + SUBR THIS_GAME_IS_BEATEN + CLR A0 + MOVE A0,@PSTATUS + + movi INGAMEOVER,a14 ;set GAMSTATE + move a14,@GAMSTATE + movi GAMEOVER_PID,a14 ;set our PID + move a14,*a13(PROCID) + +; ;put up the sneak preview screen +; calla display_blank +; calla WIPEOUT +; movk 1,a0 ;page flipping on +; move a0,@dpageflip +; movi hstd_mod,a0 +; move a0,@BAKMODS,L +; CALLA BGND_UD1 ;create objects for background +; +; movi #win1_msg,a2 +; calla print_message +; +; movi #win2_msg,a2 +; calla print_message +; +; movi #win3_msg,a2 +; calla print_message +; +; calla display_unblank +; +; SLEEP TSEC*10 + + SUBR do_game_over + + ;kill the ladder + calla INIT_LADDER_TABLE + + clr a14 + move a14,@rr_loss + move a14,@PSTATUS + + movi INGAMEOVER,a14 ;set GAMSTATE + move a14,@GAMSTATE + + movi GAMEOVER_PID,a14 ;set our PID + move a14,*a13(PROCID) + + calla display_blank + calla WIPEOUT + + .ref wsf14_ascii,GENERIC_DISPLAY + + JSRP GENERIC_DISPLAY + + movi LN1b_setup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a0,@mess_objid ;OBJ ID's for text + movi #str_game,a4 + calla print_string_C2 + + movi LN2b_setup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a0,@mess_objid ;OBJ ID's for text + movi #str_over,a4 + calla print_string_C2 + +; .ref show_wrestler_end_story + +; movi 0,a1 +; clr a0 +; calla show_wrestler_end_story +; SLEEP TSEC*5 + + SLEEPK 1 + + MOVI -1,A11 + MOVI 100,A8 + CREATE FADE_PID,FADE_MASTER_VOL + + calla display_unblank + SLEEP TSEC*4 + calla UNIT_CLR ;CLEAR THE FACTIONS OF FRACTIONS + + movi AMODE_PID,a0 + move a0,*a13(PROCID) + + CLR A3 + CALLA SNDSND + + movi ADJVOLUME,a0 + calla GET_ADJ + BADCHK a0,0,255,28 ;reg, lo, hi, val if bad + calla set_volume + + clr a8 + calla clear_icon_total + movk 1,a8 + calla clear_icon_total + + jauc attract_mode + +LN1b_setup + JAM_STR wgsf24_ascii,6,0,200,128-41,WGSF_Y_P,0 +LN2b_setup + JAM_STR wgsf24_ascii,6,0,200,128,WGSF_Y_P,0 +#str_game + .byte "GAME",0 +#str_over + .byte "OVER",0 + .even + +;#win1_msg +; JAM_STR osgemd_ascii,10,0,200,50,GOLD,print_string_C2 +; .byte "THANK YOU FOR PLAYING",0,0 +; .even +; +;#win2_msg +; JAM_STR osgemd_ascii,10,0,200,90,GOLD,print_string_C2 +; .byte "THIS SNEAK PREVIEW",0,0 +; .even +; +;#win3_msg +; JAM_STR osgemd_ascii,10,0,200,130,GOLD,print_string_C2 +; .byte "OF WRESTLEMANIA BY MIDWAY",0,0 +; .even + +#still +;Other player is in game + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + calla obj_del1c +;If other player has already picked his wrestler, just blow out of here +;otherwise, goto challenger needed screen stuff... + move @active_flag,a14 ;don't quit if someone jumps in here + jrnz #norm +;Tell buyin_select proc to wake up and exit! + movk 1,a0 + move a0,@blow_out + + DIE + +#okz + SLEEPK 1 + + callr #blink + + move @PSTATUS,a14 + btst a10,a14 + jrz #enough_money1 + +; jrz #start_waitloop1 + + move *a8(OXPOS),a0 + andi 1ffh,a0 + move a0,*a8(OXPOS) + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + calla obj_del1c + + SLEEPK 1 ;Fix pal glitch! + + jruc #begin_select + +#norm + + move *a13(#NAME),a8,L + jrnz no_need_to_create_name + + ;create the name text + move *a9(#PI_STARTNAME),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#NAME),L +no_need_to_create_name + +;Place a message which reads: +;Challenger needed! +;x credits to start +;Unless we are in freeplay! Then +;just display challenger needed centered +;in the box! + + movk ADJFREPL,a0 ;Are we in free play? + calla GET_ADJ + jrz #not_freeply + +;Print free play + movi #ln0_setup,a2 + move a10,a10 + jrz #ok2c + movi #ln0_setupb,a2 +#ok2c calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text0,a4 + calla print_string_C2 + + + +;Print centered "challenger needed" message + movi #ln1_setup,a2 + move a10,a10 + jrz #ok + movi #ln1_setupb,a2 +#ok calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text,a4 + calla print_string_C2 + + movi #ln2_setup,a2 + move a10,a10 + jrz #ok4 + movi #ln2_setupb,a2 + jruc #ok4 + +#not_freeply +;Print how many credits to start + PUSH a8 + movk ADJCSTRT,a0 + calla GET_ADJ ;GET NUMBER NEEDED + move a0,a3 + cmpi 10,a0 + jrlt #max + movk 9,a0 +#max + sll 5,a0 + addi digits_tbl,a0 + move *a0,a2,L ;* image + + movi [050,0],a0 ;x pos + cmpi 1,a3 + jrnz #not1 + movi [054,0],a0 ;x pos +#not1 move a10,a10 + jrz #zp1 + movi [0122h,0],a0 ;x pos + cmpi 1,a3 + jrnz #zp1 + movi [0126h,0],a0 ;x pos +#zp1 + movi [110,0],a1 ;y pos + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi CLSNEUT|TYPTEXT|SUBOVRHED,a5 + add a10,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + movi FNT9YEL_P,b0 + calla BEGINOBJP + PULL a8 + + movi #ln3_setup,a2 + move a10,a10 + jrz #ok2 + movi #ln3_setupb,a2 +#ok2 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text3,a4 + movk ADJCSTRT,a0 + calla GET_ADJ ;GET NUMBER NEEDED + cmpi 1,a0 + jrnz #not1b + movi #str_text3b,a4 +#not1b + calla print_string_C2 + + movi #ln4_setup,a2 + move a10,a10 + jrz #ok2B + movi #ln4_setupb,a2 +#ok2B calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text4,a4 + calla print_string_C2 + + +;Print "challenger needed" message + movi #ln1_setupx,a2 + move a10,a10 + jrz #ok3 + movi #ln1_setupxb,a2 +#ok3 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text,a4 + calla print_string_C2 + + movi #ln2_setupx,a2 + move a10,a10 + jrz #ok4 + movi #ln2_setupxb,a2 +#ok4 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text2,a4 + calla print_string_C2 + +;Inactive. wait for buyin +;Create the insert coin/press start message + +#enough_money + calla CR_STRTP + jrhs #enough_money3 +;There's not enough money. flash 'insert coins' message and wait + move *a13(#NAME),a8,L + movi WF_INSERT,a0 + calla civanic + jruc #start_waitloop +#enough_money3 +;There's enough money. flash 'press start' message and wait + move *a13(#NAME),a8,L + movi WF_START,a0 + calla civanic + + +#start_waitloop + SLEEPK 1 + + callr #blink + + move @PSTATUS,a14 + btst a10,a14 + jrz #enough_money + +; jrz #start_waitloop + + move *a8(OXPOS),a0 + andi 1ffh,a0 + move a0,*a8(OXPOS) + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + calla obj_del1c + + SLEEPK 1 ;Fix pal glitch! + + jruc #begin_select + + + +#ln0_setup + JAM_STR font9_ascii,8,0,81,120,FNT9YEL_P,0 +#ln0_setupb + JAM_STR font9_ascii,8,0,321,120,FNT9YEL_P,0 + +#ln1_setup + JAM_STR font9_ascii,8,0,81,80,FNT9YEL_P,0 +#ln1_setupb + JAM_STR font9_ascii,8,0,321,80,FNT9YEL_P,0 + +#ln2_setup + JAM_STR font9_ascii,8,0,81,95,FNT9YEL_P,0 +#ln2_setupb + JAM_STR font9_ascii,8,0,321,95,FNT9YEL_P,0 + +#ln1_setupx + JAM_STR font9_ascii,8,0,81,60,FNT9YEL_P,0 +#ln1_setupxb + JAM_STR font9_ascii,8,0,321,60,FNT9YEL_P,0 + +#ln2_setupx + JAM_STR font9_ascii,8,0,81,75,FNT9YEL_P,0 +#ln2_setupxb + JAM_STR font9_ascii,8,0,321,75,FNT9YEL_P,0 + + +#ln3_setup + JAM_STR font9_ascii,8,0,81,110,FNT9YEL_P,0 +#ln3_setupb + JAM_STR font9_ascii,8,0,321,110,FNT9YEL_P,0 + +#ln4_setup + JAM_STR font9_ascii,8,0,81,125,FNT9YEL_P,0 +#ln4_setupb + JAM_STR font9_ascii,8,0,321,125,FNT9YEL_P,0 + +#str_text + .string "CHALLENGER",0 +#str_text0 + .string "FREE PLAY",0 +#str_text2 + .string "NEEDED!",0 +#str_text3 + .string " CREDITS",0 +#str_text3b + .string " CREDIT",0 +#str_text4 + .string "TO START",0 + .even + +#begin_select + MOVE @no_pin_check,A0 + JRNZ are_we_waiting2 + calla is_final_match + jrc are_we_waiting2 + + move a10,a8 + mmtm sp,a6,a7,a8,a9,a10,a11 + JSRP pin_speed_check + mmfm sp,a6,a7,a8,a9,a10,a11 + + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + jrz no_set_it_later + move a10,a0 + inc a0 + neg a0 + move a0,@are_we_waiting_f +no_set_it_later + +; move @PSTATUS,A0 +; CMPI 3,A0 +; JREQ are_we_waiting2 +; +; movi 60,a0 +; move a0,@are_we_waiting_f + +are_we_waiting2 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ FINISHED_INPUTTING2b + sleep 1 + movi CYCPID,a0 + movi -1,a1 + calla EXISTP + jrnz are_we_waiting2 + move a10,a0 + addi HI_INPUT_PID,a0 + movi -1,a1 + calla EXISTP + JRZ FINISHED_INPUTTING2b + mmtm sp,a10,a9,a8 + calla do_that_cycle + mmfm sp,a10,a9,a8 + jruc are_we_waiting2 + +FINISHED_INPUTTING2b + move @are_we_waiting_f,a0 + move a10,a1 + inc a1 + neg a1 + cmp a1,a0 + jrne FINISHED_INPUTTING2 + movi 60,a0 + move a0,@are_we_waiting_f + +FINISHED_INPUTTING2 + + MOVI CLOCK_PID,A0 + movi -1,a1 + CALLA EXISTP + JRNZ CLOCK_ALREADY_TICKING + + PUSH A10 + CREATE CLOCK_PID,select_clock + move a0,a10 + CREATE0 clock_digits + PULL A10 + +CLOCK_ALREADY_TICKING + + move *a13(#NAME),a8,L + jrnz no_need_to_create + + ;create the name text + move *a9(#PI_STARTNAME),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#NAME),L +no_need_to_create + + move @total_matches,a14 + jrnz HOWARD_ALREADY_GOING + move @DONE_HOWARD,a14 + jrnz HOWARD_HAS_SPOKEN + +GOOD_EVENING + movi 1Fbh,a0 + CALLA ADD_VOICE + movi 1Fch,a0 + CALLA ADD_VOICE + movi 1Fdh,a0 + CALLA ADD_VOICE + + movk 1,a0 + move a0,@DONE_HOWARD + JRUC HOWARD_HAS_SPOKEN + +HOWARD_ALREADY_GOING + move @DONE_HOWARD,a14 + jrnz HOWARD_HAS_SPOKEN + MOVI 100,A0 + CALLA RNDPER + jrls HOWARD_HAS_SPOKEN + + SUBI 50,A0 + JRN GOOD_EVENING + movi 1Ffh,a0 + CALLA ADD_VOICE + + movk 1,a0 + move a0,@DONE_HOWARD +HOWARD_HAS_SPOKEN + + ;set our active bit if it's not already set + move @active_flag,a14 + move a10,a0 + inc a0 + or a0,a14 + move a14,@active_flag + + ;initialize index + move *a9(#PI_STARTPOS),a11 + + ;initialize #MUG? + movk 8,a0 + clr a1 + move a13,a2 + addi #MUG1,a2 +#initloop + move a1,*a2+,L + dsj a0,#initloop + +; ;create our attrib text +; move *a9(#PI_ATTTXT),a0,L +; calla BEGINOBJ_TBL +; move *a8(OXVAL),a0,L +; move *a8(OYVAL),a1,L +; +; ;create the att bars +; addi [63,0],a0 +; addi [12,0],a1 +; movi ATTMTR_0,a2 +; movi atttxt_z,a3 +; movi DMAWNZ,a4 +; movi CLSNEUT,a5 +; clr a6 +; clr a7 +; +; PUSH a10,a11 +; +; movi 4,a10 ;bar count +; move a13,a11 +; addi #ATT1,a11 +; +;#abc_loop +; PUSH a0,a1,a2,a3,a4,a5,a6,a7 +; calla BEGINOBJ +; PULL a0,a1,a2,a3,a4,a5,a6,a7 +; move a8,*a11+,L +; addi [8,0],a1 +; dsj a10,#abc_loop +; PULL a10,a11 + + ;create our cursors + move *a9(#PI_HILITE),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#HILITE),L + + move *a9(#PI_HIPLATE),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#HIPLATE),L + + jruc #first_adjust + +#blink + move *a13(#CNTR),a0 + dec a0 + move a0,*a13(#CNTR) + jrp #cont + movk 22,a0 + move a0,*a13(#CNTR) + move *a8(OXPOS),a0 + xori 1000h,a0 + move a0,*a8(OXPOS) +#cont + rets + + + .if 0 + +;Color cycle cursors... +;Good example for future cycles.... + + PUSH a8,a9,a10,a11 + + move a10,a10 + jrz #blue + + movi [1,1],a8 + movi CRHI_R_P,a9 + movi redcyc_tbl,a10 + movk 4,a11 + CREATE CYCPID,CYCLE_TABLE + jruc #out + +#blue + movi [1,1],a8 + movi CRHI_B_P,a9 + movi blucyc_tbl,a10 + movk 4,a11 + CREATE CYCPID,CYCLE_TABLE + +#out PULL a8,a9,a10,a11 + + jruc #first_adjust + + +blucyc_tbl + .word 0041fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0081fh,00c1fh,0101fh,0141fh,0181fh + .word 01c1fh,0201fh,0241fh,0281fh,02c1fh,0301fh,0341fh,0381fh + .word 03c1fh,0401fh,0441fh,0481fh,04c1fh,0501fh,0541fh,0581fh + .word 05c1fh,0601fh,0641fh,0681fh,06c1fh,0701fh + .word 0741fh,0701fh,06c1fh,0681fh,0641fh,0601fh,05c1fh + .word 0581fh,0541fh,0501fh,04c1fh,0481fh,0441fh,0401fh,03c1fh + .word 0381fh,0341fh,0301fh,02c1fh,0281fh,0241fh,0201fh,01c1fh + .word 0181fh,0141fh,0101fh,00c1fh,0081fh,0041fh + + .word 0041fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0081fh,00c1fh,0101fh,0141fh,0181fh + .word 01c1fh,0201fh,0241fh,0281fh,02c1fh,0301fh,0341fh,0381fh + .word 03c1fh,0401fh,0441fh,0481fh,04c1fh,0501fh,0541fh,0581fh + .word 05c1fh,0601fh,0641fh,0681fh,06c1fh,0701fh + .word 0741fh,0701fh,06c1fh,0681fh,0641fh,0601fh,05c1fh + .word 0581fh,0541fh,0501fh,04c1fh,0481fh,0441fh,0401fh,03c1fh + .word 0381fh,0341fh,0301fh,02c1fh,0281fh,0241fh,0201fh,01c1fh + .word 0181fh,0141fh,0101fh,00c1fh,0081fh,0041fh + .word -1 + +redcyc_tbl + .word 07c20h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c40h,07c60h,07c80h,07ca0h,07cc0h + .word 07ce0h,07d00h,07d20h,07d40h,07d60h,07d80h,07da0h,07dc0h + .word 07de0h,07e00h,07e20h,07e40h,07e60h,07e80h,07ea0h + .word 07ec0h,07ee0h,07f00h,07f20h,07f40h,07f60h,07f80h + .word 07fa0h,07f80h,07f60h,07f40h,07f20h,07f00h,07ee0h,07ec0h + .word 07ea0h,07e80h,07e60h,07e40h,07e20h,07e00h,07de0h + .word 07dc0h,07da0h,07d80h,07d60h,07d40h,07d20h,07d00h,07ce0h + .word 07cc0h,07ca0h,07c80h,07c60h,07c40h,07c20h + + .word 07c20h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c40h,07c60h,07c80h,07ca0h,07cc0h + .word 07ce0h,07d00h,07d20h,07d40h,07d60h,07d80h,07da0h,07dc0h + .word 07de0h,07e00h,07e20h,07e40h,07e60h,07e80h,07ea0h + .word 07ec0h,07ee0h,07f00h,07f20h,07f40h,07f60h,07f80h + .word 07fa0h,07f80h,07f60h,07f40h,07f20h,07f00h,07ee0h,07ec0h + .word 07ea0h,07e80h,07e60h,07e40h,07e20h,07e00h,07de0h + .word 07dc0h,07da0h,07d80h,07d60h,07d40h,07d20h,07d00h,07ce0h + .word 07cc0h,07ca0h,07c80h,07c60h,07c40h,07c20h + .word -1 + + .endif + + +#adjust + move *a9(#PI_MOVESOUND),a0 + + move *a13(#RND_DEST),a14 + jrn #move_sound_ok + movi >DD,a0 +#move_sound_ok + + calla triple_sound + callr #erase_mugshot +#first_adjust + callr #place_cursor + callr #draw_mugshot + callr #update_name +; callr #update_attbars + + ;set a6 to debounce value if not rndsel, or to move time if rndsel + move *a13(#RND_DEST),a14 + jrnn #waitloop + movk 3,a6 + + clr a0 + move a0,*a8(OCONST) ;Clr color + move a0,*a13(#CNTR) + +#waitloop + + callr #place_cursor + + ;flash the hilightes + move *a13(#HIPLATE),a8,L + move *a8(OZPOS),a14 + xori 1,a14 + move a14,*a8(OZPOS) + + move *a13(#HILITE),a8,L + move *a8(OZPOS),a14 + xori 1,a14 + move a14,*a8(OZPOS) + + PUSHP a6,a7 + SLEEPK 1 + PULLP a6,a7 + +;Flash cursors white + + move *a13(#CNTR),a14 + dec a14 + move a14,*a13(#CNTR) + jrp #normz + movk 8,a14 + move a14,*a13(#CNTR) + + PUSH a6,a7,a9 + movi 0202h,a9 + CREATE0 FLASHME + .ref FLASHME + PULL a6,a7,a9 +#normz + + ;are we in random mode? + move *a13(#RND_DEST),a14 + jrn #not_rndsel + + ;we're in random select + dsj a6,#waitloop + + ;time to move again + movi #rnd_movespeed,a6 ;set time to next move + dec a7 + jrp #move_at_random + + ;move toward final destination + ;if we're there, take it + move *a13(#RND_DEST),a14 + cmp a14,a11 + jreq #but_hit + + ;not there. one time in three, move at random anyway + movk 3,a0 + calla RNDRNG0 + TEST a0 + jrz #move_at_random + + ;if we're in the correct row, move sideways + move *a13(#RND_DEST),a14 + xor a11,a14 + srl 1,a14 + jrz #rnd_move_sideways + + ;okay, move toward the correct row + move *a13(#RND_DEST),a14 + cmp a11,a14 + jrlt #stick_up + jruc #stick_down + +#move_at_random + ;move in a random direction, but only in legal directions + movk 2,a0 + calla RNDRNG0 + cmpi 2,a0 + jreq #rnd_move_up + cmpi 1,a0 + jreq #rnd_move_down + + ;move sideways by toggling bit zero in the index +#rnd_move_sideways + xori 1,a11 + jruc #adjust + +#rnd_move_up + cmpi 2,a11 + jrge #stick_up + + ;moving up isn't legal. move sideways or down + movi 1,a0 + calla RNDRNG0 + TEST a0 + jrz #rnd_move_sideways + jruc #stick_down + +#rnd_move_down + cmpi 5,a11 + jrle #stick_down + + ;moving down isn't legal. move sideways or up + movi 1,a0 + calla RNDRNG0 + TEST a0 + jrz #rnd_move_sideways + jruc #stick_up + +#not_rndsel + ;if time is out, pick whoever we're on. + move @time_out,a14 + jrnz #but_hit + + ;begin random select? + move a10,a0 + calla get_start_cur + jrz #button_checks + + ;start is down. check stick + move a10,a0 + calla get_stick_val_cur + btst JOYUP,a0 + jrz #button_checks + + ;stick is up. check position + move *a9(#PI_STARTPOS),a14 + cmp a11,a14 + jreq #begin_random_select + +#button_checks + move @are_we_waiting_f,a14 + jrn no_worry_about_it + jrnz no_check_buts_yet +no_worry_about_it + + ;button checks + move a10,a0 + calla get_but_val_down + TEST a0 + jrnz #but_hit +no_check_buts_yet + + dec a6 + jrp #waitloop + clr a6 + + ;stick checks + move a10,a0 + calla get_stick_val_down + btst JOYDN,a0 + jrnz #stick_down + btst JOYUP,a0 + jrnz #stick_up + btst JOYLFT,a0 + jrnz #stick_left + btst JOYRGT,a0 + jrnz #stick_right + jruc #waitloop + +#stick_down + ;add 2 unless the index is 6 or 7 + cmpi 6,a11 + jrge #waitloop + addi 2,a11 + jruc #adjust + +#stick_up + ;sub 2 unless index is 0 or 1 + cmpi 2,a11 + jrlt #waitloop + subi 2,a11 + jruc #adjust + +#stick_left + ;sub 1 unless index is even + btst 0,a11 + jrz #waitloop + dec a11 + jruc #adjust + +#stick_right + ;add 1 unless index is odd + btst 0,a11 + jrnz #waitloop + inc a11 + jruc #adjust + +#begin_random_select + +;Print text message + movi #message_setup,a2 + move a10,a10 + jrz #p1m + movi #message_setup2,a2 +#p1m + calla setup_message + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a10,a10 + jrz #p1x + movi CLSNEUT|TYPTEXT|SUBMES2,a0 +#p1x + move a0,@mess_objid + + movi #message_string,a4 + calla print_string_C2 + + movi 7,a0 + calla RNDRNG0 + + move a0,*a13(#RND_DEST) + movi #rnd_movespeed,a6 + movi #rnd_wander,a7 + jruc #waitloop + + .ref font9_ascii + .ref pal_getf,setup_message + .ref mess_objid,print_string_C2 + + +blink_rndper + + movi FNT9RED_P,a0 + calla pal_getf + move a0,a9 + + movi FNT9WHT_P,a0 + calla pal_getf + + movi OBJLST,a14 +#lpz + move *a14,a14,L + jrz #x + move *a14(OPAL),a2 + cmp a0,a2 + jrne #lpz + + move *a14(OID),a2 + cmpi CLSNEUT|TYPTEXT|SUBMES1,a2 + jreq #lpdo + cmpi CLSNEUT|TYPTEXT|SUBMES2,a2 + jrne #lpz +#lpdo + move a9,*a14(OPAL) + jruc #lpz + +#x SLEEPK 4 + + movi FNT9RED_P,a0 + calla pal_getf + move a0,a9 + + movi FNT9WHT_P,a0 + calla pal_getf + + movi OBJLST,a14 +#lp2 + move *a14,a14,L + jrz #x2 + move *a14(OPAL),a2 + cmp a9,a2 + jrne #lp2 + + move *a14(OID),a2 + cmpi CLSNEUT|TYPTEXT|SUBMES1,a2 + jreq #lpdo2 + cmpi CLSNEUT|TYPTEXT|SUBMES2,a2 + jrne #lp2 +#lpdo2 + move a0,*a14(OPAL) + jruc #lp2 + +#x2 SLEEPK 7 + + jruc blink_rndper + + +#message_setup + JAM_STR font9_ascii,5,0,79,15,FNT9WHT_P,0 + +#message_setup2 + JAM_STR font9_ascii,5,0,321,15,FNT9WHT_P,0 + +#message_string + .string "CALLA RNDPER",0 + + .even + + +#but_hit + movi player_pal_pref,a1 + move a10,a10 + jrz #is_p1 + addk 16,a1 +#is_p1 + move a10,a0 + calla get_stick_val_cur + jrz #no_pref + move a10,a0 + calla get_but_val_cur + jrz #no_pref + movk 4,a14 + btst 0,a0 ; PUNCH + jrnz #pp_pref + movk 7,a14 + btst 4,a0 ; SKICK + jrnz #pp_pref + movk 5,a14 + btst 2,a0 ; SPUNCH + jrnz #pp_pref + movk 6,a14 + btst 3,a0 ; KICK + jrnz #pp_pref +#no_pref + clr a14 +#pp_pref + move a14,*a1 + ;they hit a button. Stick 'em with the current guy. +;Erase rndper message for this player + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a10,a10 + jrz #p1c + movi CLSNEUT|TYPTEXT|SUBMES2,a0 +#p1c + calla obj_del1c + + move *a9(#PI_INDEX),a0,L + ;rewire kludge + move a11,a14 + X16 a14 + addi scramble_table,a14 + move *a14,a14,W + move a14,*a0 + + move a10,a1 + sll 4,a1 + addi which_player,a1 + move a14,*a1 + + ;say the name. + MOVI SEL_SPCH_PID1,A1 + ADD A10,A1 + MOVE A0,A8 + MOVI call_wrestler_name,A7 + CALLA GETPRC + + ;make a joyful noise unto the player + move *a9(#PI_SELSOUND),a0 + calla triple_sound + + ;clear our bit in the active flag + move @active_flag,a0 + move a10,a14 + inc a14 + andn a14,a0 + move a0,@active_flag + + ;flash over the crouton + ;synch! begin flashing on an even PCNT + move @PCNT,a14 + btst 0,a14 + jrnz #synch + SLEEPK 1 + +#synch + move *a13(#HILITE),a8,L + movi TSEC/4,a9 +#flashloop + movi 0202h,a14 + move a14,*a8(OCONST) + move *a8(OCTRL),a14 + xori M_CONZER,a14 + move a14,*a8(OCTRL) + SLEEPK 2 + dsj a9,#flashloop + + move *a8(OCTRL),a14 + andni M_CONZER,a14 + move a14,*a8(OCTRL) + + movi hilite_z,a14 + move a14,*a8(OZPOS) + + move *a13(#HIPLATE),a8,L + movi hiplate_z,a14 + move a14,*a8(OZPOS) + +#lp + SLEEPK 1 + callr #place_cursor + jruc #lp + + +******** +* moves cursor to the current index position + + SUBRP #place_cursor + + PUSH a2,a3,a7,a8 + + move a11,a1 + X32 a1 + addi crouton_pos_table,a1 + move *a1+,a2,W + move *a1,a3,W + + move *a13(#HILITE),a7,L + move *a13(#HIPLATE),a8,L + + move a2,*a8(OXPOS) + move a3,*a8(OYPOS) + + move a10,a10 + jrz #p1 + move @kp_p1cursor,a8,L + move *a8(PA11),a8 + cmp a8,a11 + jrnz #p1 + addk 2,a2 + addk 2,a3 +#p1 + move a2,*a7(OXPOS) + move a3,*a7(OYPOS) + + PULL a2,a3,a7,a8 + rets + + +******** +* updates the name text + + SUBRP #update_name + + PUSH a8,a11 + + ;rewiring kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + + move a11,a0 + X32 a0 + addi name_tbl,a0 + move *a0,a0,L + move *a13(#NAME),a8,L + calla civanic + + PULL a8,a11 + + rets + +******** +* erases current mugshot + + SUBRP #erase_mugshot + + PUSH a5,a6,a8 + + movk 8,a6 + move a13,a5 + addi #MUG1,a5 +#eraseloop + move *a5+,a0,L + calla DELOBJ + dsj a6,#eraseloop + + PULL a5,a6,a8 + + rets + + +******** +* draws a new mugshot + + SUBRP #draw_mugshot + + ;reg use + ;a10 = PDATA pointer + ;a11 = mug pointer + + PUSH a6,a7,a8,a10,a11 + + ;rewiring kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + + X32 a11 + addi wrestler_mugs,a11 + move *a11,a11,L + + move a13,a10 + addi #MUG1,a10 + move *a11+,a2,L + +#drawloop + move *a9(#PI_MUGXPOS),a0 + move *a9(#PI_MUGYPOS),a1 + sla 16,a0 + sla 16,a1 + movi mugshot_z,a3 + move *a9(#PI_MUGCTRL),a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + move a8,*a10+,L + + move *a11+,a2,L + jrz #done + jruc #drawloop + +#done + PULL a6,a7,a8,a10,a11 + calla show_bonus_icons + rets + +; +;******** +;* updates the attribute bars +; +; SUBRP #update_attbars +; +; PUSH a7,a10,a11 +; +; +; ;rewiring kludge +; X16 a11 +; addi scramble_table,a11 +; move *a11,a11,W +; +; move a11,a10 +; X64 a10 +; addi wrestler_attributes,a10 +; move a13,a11 +; addi #ATT1,a11 +; +; movi 4,a7 +;#ualoop +; move *a10+,a0,W +; X32 a0 +; addi attbars,a0 +; move *a0,a0,L +; move *a11+,a8,L +; calla civanic +; dsj a7,#ualoop +; +; PULL a7,a10,a11 +; rets +; +wrestler_attributes +;Power, speed, agility, recovery + .word 4,9,9,3 ;0 (Bret) + .word 7,6,2,5 ;1 (Razor) + .word 8,4,7,6 ;2 (Taker) + .word 9,2,4,6 ;3 (Yoko) + .word 3,9,8,7 ;4 (Shawn) + .word 8,6,5,3 ;5 (Bam Bam) + .word 4,8,7,8 ;6 (Doink) + .word 9,5,4,7 ;7 (Lex) + .word 9,5,4,7 ;8 (Lex) + +scramble_table ;swap bret and doink on the select page + .word 6 + .word 1,2,3,4,5 + .word 0 + .word 8 ;put lex in place of adam + +attbars + .long ATTMTR_0,ATTMTR_1,ATTMTR_2,ATTMTR_3,ATTMTR_4 + .long ATTMTR_5,ATTMTR_6,ATTMTR_7,ATTMTR_8,ATTMTR_9 + +#info + .long #p1info,#p2info + +#p1info + .long #hi_b,#plt_b ;hilite, crouton + .word 0 ;start index + .word 0+18+2,175 ;mug position + .word DMAWNZ|M_3D|M_SCRNREL ;mug octrl + .long #p1name,latttxt ;start name,att text + .long index1 ;report choice to + .word 0c8h,0cbh ;cursor/select sounds + +#p2info + .long #hi_r,#plt_r ;hilite, crouton + .word 1 ;start index + .word 400-18,175 ;mug position + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;mug octrl + .long #p2name,ratttxt ;start name,att text + .long index2 ;report choice to + .word 0c7h,0cch ;cursor/select sounds + + +#plt_b .word 0,0,hiplate_z ;X,Y,Z + .long CRUTPLT_B ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#plt_r .word 0,0,hiplate_z+1 ;X,Y,Z + .long CRUTPLT_R ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#hi_b .word 0,0,hilite_z ;X,Y,Z + .long CRUTHI_B ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#hi_r .word 0,0,hilite_z+1 ;X,Y,Z + .long CRUTHI_R ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#p1name .word >51,184,name_z + .long WF_INSERT + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSNEUT|TYPNEUT + .long 0,0 + +#p2name .word >142,184,name_z + .long WF_INSERT + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSNEUT|TYPNEUT + .long 0,0 + +latttxt .word 0+18,189,atttxt_z ;X, Y, Z + .long ATT_TXT ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +ratttxt .word 400-18-124,189,atttxt_z ;X, Y, Z + .long ATT_TXT ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +;Mugshot stuff + +wrestler_mugs + .long BHARTMUG + .long RAZORMUG + .long UNDERMUG + .long YOKOMUG + .long MICHAELMUG + .long BAMBAMMUG + .long DOINKMUG + .long 0 + .long LUGERMUG + +wrestler_mugs2 + .long BHARTMUG + .long RAZORMUG + .long UNDERMUG + .long YOKOMUG + .long MICHAELMUG + .long BAMBAMMUG + .long DOINKMUG +; .long ADAMMUG + .long LUGERMUG + +BHARTMUG + .long BHMUG_A,BHMUG_B,BHMUG_C,BHMUG_D + .long BHMUG_E,BHMUG_F,BHMUG_G,BHMUG_H,0 +RAZORMUG + .long RRMUG_A,RRMUG_B,RRMUG_C,RRMUG_D + .long RRMUG_E,RRMUG_F,RRMUG_G,RRMUG_H,0 +UNDERMUG + .long UNMUG_A,UNMUG_B,UNMUG_C,UNMUG_D + .long UNMUG_E,UNMUG_F,UNMUG_G,UNMUG_H,0 +YOKOMUG + .long YKMUG_A,YKMUG_B,YKMUG_C,YKMUG_D + .long YKMUG_E,YKMUG_F,YKMUG_G,YKMUG_H,0 +MICHAELMUG + .long SMMUG_A,SMMUG_B,SMMUG_C,SMMUG_D + .long SMMUG_E,SMMUG_F,SMMUG_G,SMMUG_H,0 +BAMBAMMUG + .long BMMUG_A,BMMUG_B,BMMUG_C,BMMUG_D + .long BMMUG_E,BMMUG_F,BMMUG_G,BMMUG_H,0 +DOINKMUG + .long DKMUG_A,DKMUG_B,DKMUG_C,DKMUG_D + .long DKMUG_E,DKMUG_F,DKMUG_G,DKMUG_H,0 +LUGERMUG + .long LXMUG_A,LXMUG_B,LXMUG_C,LXMUG_D + .long LXMUG_E,LXMUG_F,LXMUG_G,LXMUG_H,0 + +name_tbl + .long NAM_BRT,NAM_RZR,NAM_UND,NAM_YOK + .long NAM_SHN2,NAM_BAM2,NAM_DNK,0,NAM_LEX + +#***************************************************************************** +* Player select clock - sets time_out when it runs out of time +* + + SUBR select_clock + + ;reg use + ; a8 - current pstatus + ; a9 - time remaining + +select_time equ TSEC*15 + +#reset + movi select_time,a9 + move @PSTATUS,a8 + +#waitloop + SLEEPK 1 + move @PSTATUS,a14 + cmp a14,a8 + jrne #reset ;new buyin. reset + + dsj a9,#waitloop + +;If other player is still thinking about buying in or is +;still entering his initials, then go to #reset + + move @OLD_PSTATUS,a0 + jrnz #reset + + movk 1,a14 + move a14,@time_out + + DIE + +clock_digits +;When player select time gets down to 5 seconds, display it... +;a10=select_clock *PROC + + movi [0cbh,0],a0 ;x pos + movi [232,0],a1 ;y pos + movi FNT9_5,a2 ;* image + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + movi FNT9WHT_P,b0 + calla BEGINOBJP + movk 4,a11 +#loop0 callr obj_off + +#loop SLEEPK 1 + move @time_out,a0 + janz KILL_THIS_DIGIT + + move @OLD_PSTATUS,a0 + jrnz #loop0 + + move *a10(PA9),a0 + srl 6,a0 + cmp a0,a11 + jrz #loop + cmpi 6,a0 + jrge #loop0 + +;New digit time + move a0,a11 + sll 5,a0 + + addi digits_tbl,a0 + move *a0,a0,L ;* image + + move *a8(OCTRL),a1 ;DMA flags + calla change_image + callr obj_on + + move a11,a14 + callr setup_clock_sound + jruc #loop + +KILL_THIS_DIGIT + callr obj_off + DIE + +digits_tbl + .long FNT9_0,FNT9_1,FNT9_2,FNT9_3,FNT9_4 + .long FNT9_5,FNT9_6,FNT9_7,FNT9_8,FNT9_9 + +#***************************************************************************** +* One player ladder of progression +* + + SUBR pregame_show + + +;This will be the ladder type screen, showing the 1 player +;game progression. Chooses the CPU opponent. + +;Show 1 player game ladder of progression +;Scroll horizontally to the next challenger + + .if DEBUG + move @skip_select,a0 + jrz #noskp + + RETP +#noskp + .endif + + move @PSTATUS,a0 + cmpi 3,a0 + jrnz #oneplyrgm + + .ref question_type + .if RR_AWARD = 1 + move @royal_rumble,a14 + jrnz #last_was_royal + .endif + movk 1,a14 + move a14,@question_type + JSRP ask_belt_question + .if RR_AWARD = 1 + jruc #type_set +#last_was_royal + clr a14 + move a14,@royal_rumble +#type_set + .endif + + JSRP CLOSE_PROGRESS_SCREEN + + RETP + +;0 (Bret) +;1 (Razor) +;2 (Taker) +;3 (Yoko) +;4 (Shawn) +;5 (Bam Bam) +;6 (Doink) +;7 spare +;8 (Lex) + + +#oneplyrgm + .ref belt_ask + .ref ask_belt_question + + move @belt_ask,a14,W + jrz #belt_is_set + clr a14 + move a14,@question_type + JSRP ask_belt_question + + calla INIT_LADDER_TABLE + clr a8 + move a8,@belt_ask +#belt_is_set + +; movk 15,a8 +; movk 4,a9 + movk 10,a8 + movk 2,a9 + JSRP CLOSE_SCREEN_LINE + + calla SPECIAL_WIPEOUT + JAUC PUT_UP_PROGRESS + +;AVOID_PREGAME +; MOVE @CURRENT_LADDER,A10,L +; CALLA NEXT_IN_LADDER +; CALLA NUM_OF_OPPS +; JSRP CLOSE_PROGRESS_SCREEN +; RETP + +;Can we remove this? +; .ref osgemd_ascii +;#ln1_setup +; JAM_STR osgemd_ascii,8,0,200,80,BLUE,0 +; +;#ln2_setup +; JAM_STR osgemd_ascii,8,0,200,110,BLUE,0 +; +;#str_text +; .string "SINGLE PLAYER GAME",0 +;#str_text2 +; .string "LADDER OF PROGRESSION",0 +; .even +; +;#ladder_mod +; .long slateBMOD ;wrestler select map +; .word 0,0 +; .long 0 + + +#***************************************************************************** +* +* INPUT: a8 = * object +*----------------------------------------------------------------------------- + + SUBRP obj_on + move *a8(OYPOS),a0 + andni 400h,a0 + move a0,*a8(OYPOS) + rets + + +#***************************************************************************** +* +* INPUT: a8 = * object +*----------------------------------------------------------------------------- + + SUBRP obj_off + move *a8(OYPOS),a0 + ori 400h,a0 + move a0,*a8(OYPOS) + rets + +****************************************************************************** + +buyin_text + + movk ADJFREPL,a0 ;Are we in free play? + calla GET_ADJ + jrz #not_freeply + +;Print free play + movi #ln0_setup,a2 + move a10,a10 + jrz #ok2c + movi #ln0_setupb,a2 +#ok2c calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text0,a4 + calla print_string_C2 + +;Print centered "PLEASE CONTINUE" message + movi #ln1_setup,a2 + move a10,a10 + jrz #ok + movi #ln1_setupb,a2 +#ok calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text,a4 + calla print_string_C2 + + movi #ln2_setup,a2 + move a10,a10 + jrz #ok4 + movi #ln2_setupb,a2 + calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text2,a4 + calla print_string_C2 + + rets + +#not_freeply +;Print how many credits to start + PUSH a8 + movk ADJCCONT,a0 + calla GET_ADJ ;GET NUMBER NEEDED + move a0,a3 + cmpi 10,a0 + jrlt #max + movk 9,a0 +#max + sll 5,a0 + addi digits_tbl,a0 + move *a0,a2,L ;* image + + movi [050,0],a0 ;x pos + cmpi 1,a3 + jrnz #not1 + movi [054,0],a0 ;x pos +#not1 move a10,a10 + jrz #zp1 + movi [0122h,0],a0 ;x pos + cmpi 1,a3 + jrnz #zp1 + movi [0126h,0],a0 ;x pos +#zp1 + movi [CREDIT_LINE_YPOS,0],a1 ;y pos + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi CLSNEUT|TYPTEXT|SUBOVRHED,a5 + add a10,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + movi FNT9YEL_P,b0 + calla BEGINOBJP + PULL a8 + + movi #ln3_setup,a2 + move a10,a10 + jrz #ok2 + movi #ln3_setupb,a2 +#ok2 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text3,a4 + movk ADJCCONT,a0 + calla GET_ADJ ;GET NUMBER NEEDED + cmpi 1,a0 + jrnz #not1b + movi #str_text3b,a4 +#not1b + calla print_string_C2 + + movi #ln4_setup,a2 + move a10,a10 + jrz #ok2B + movi #ln4_setupb,a2 +#ok2B calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text4,a4 + calla print_string_C2 + + +;Print "challenger needed" message + movi #ln1_setupx,a2 + move a10,a10 + jrz #ok3 + movi #ln1_setupxb,a2 +#ok3 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text,a4 + calla print_string_C2 + + movi #ln2_setupx,a2 + move a10,a10 + jrz #ok4 + movi #ln2_setupxb,a2 +#ok4 calla setup_message + + movi CLSNEUT|TYPTEXT|SUBOVRHED,a0 + add a10,a0 + move a0,@mess_objid + + movi #str_text2,a4 + calla print_string_C2 + + rets + + .if 1 +#ln0_setup + JAM_STR font9_ascii,8,0,81,120,FNT9YEL_P,0 +#ln0_setupb + JAM_STR font9_ascii,8,0,321,120,FNT9YEL_P,0 + +#ln1_setup + JAM_STR font9_ascii,8,0,81,80,FNT9WHT_P,0 +#ln1_setupb + JAM_STR font9_ascii,8,0,321,80,FNT9WHT_P,0 + +#ln2_setup + JAM_STR font9_ascii,8,0,81,95,FNT9WHT_P,0 +#ln2_setupb + JAM_STR font9_ascii,8,0,321,95,FNT9WHT_P,0 + +#ln1_setupx + JAM_STR font9_ascii,8,0,81,60,FNT9WHT_P,0 +#ln1_setupxb + JAM_STR font9_ascii,8,0,321,60,FNT9WHT_P,0 + +#ln2_setupx + JAM_STR font9_ascii,8,0,81,75,FNT9WHT_P,0 +#ln2_setupxb + JAM_STR font9_ascii,8,0,321,75,FNT9WHT_P,0 + + +#ln3_setup + JAM_STR font9_ascii,8,0,81,110,FNT9YEL_P,0 +#ln3_setupb + JAM_STR font9_ascii,8,0,321,110,FNT9YEL_P,0 + +#ln4_setup + JAM_STR font9_ascii,8,0,81,125,FNT9YEL_P,0 +#ln4_setupb + JAM_STR font9_ascii,8,0,321,125,FNT9YEL_P,0 + + .else + +#ln0_setup ; FREE PLAY + JAM_STR font9_ascii,8,0,81,120,FNT9YEL_P,0 +#ln0_setupb + JAM_STR font9_ascii,8,0,321,120,FNT9YEL_P,0 + +#ln1_setup ; PLEASE + JAM_STR font9_ascii,8,0,81,80,FNT9WHT_P,0 +#ln1_setupb + JAM_STR font9_ascii,8,0,321,80,FNT9WHT_P,0 + +#ln2_setup ; DIGIT + JAM_STR font9_ascii,8,0,81,95,FNT9WHT_P,0 +#ln2_setupb + JAM_STR font9_ascii,8,0,321,95,FNT9WHT_P,0 + +#ln1_setupx ; PLEASE + JAM_STR font9_ascii,8,0,81,PLEASE_YPOS,FNT9WHT_P,0 +#ln1_setupxb + JAM_STR font9_ascii,8,0,321,PLEASE_YPOS,FNT9WHT_P,0 + +#ln2_setupx ; CONTINUE + JAM_STR font9_ascii,8,0,81,CONTINUE_YPOS,FNT9WHT_P,0 +#ln2_setupxb + JAM_STR font9_ascii,8,0,321,CONTINUE_YPOS,FNT9WHT_P,0 + + +#ln3_setup ; CREDITS + JAM_STR font9_ascii,8,0,81,CREDIT_LINE_YPOS,FNT9YEL_P,0 +#ln3_setupb + JAM_STR font9_ascii,8,0,321,CREDIT_LINE_YPOS,FNT9YEL_P,0 + +#ln4_setup ; TO CONTINUE + JAM_STR font9_ascii,8,0,81,TO_CONTINUE_YPOS,FNT9YEL_P,0 +#ln4_setupb + JAM_STR font9_ascii,8,0,321,TO_CONTINUE_YPOS,FNT9YEL_P,0 + .endif + + +#str_text + .string "PLEASE",0 +#str_text0 + .string "FREE PLAY",0 +#str_text2 + .string "CONTINUE!",0 +#str_text3 + .string " CREDITS",0 +#str_text3b + .string " CREDIT",0 +#str_text4 + .string "TO CONTINUE",0 + .even + + +****************************************************************************** + + .ref AUD1 + .ref GET_CREDITS + .ref get_start_down + .ref get_but_val_cur + +#cont_timer .equ 9 +#resets_allowed .equ 25 ;People whack on button to reset + + SUBRP buyin_counter + + move @rr_loss,a0 + jrz not_rr1 + move @cursor_procs,a0 + inc a0 + move a0,@cursor_procs +not_rr1 + + move a10,*a13(PDATA+16) ;0 or 1 + + movi AUD_CONTOFF,a0 ;increment the offered audit + calla AUD1 + + movi #resets_allowed,a7 + + jruc #loop_start + +#coin_loop_reset + movi #resets_allowed,a7 + +#loop_reset + calla DELOBJA8 + +#loop_start + calla GET_CREDITS + move a0,a6 + + PUSH a6,a7 + movi [080,0],a0 ;x pos + move *a13(PDATA+16),a10 + move a10,a10 + jrz #p1 + movi [0320,0],a0 ;x pos +#p1 + movi [TIMER_YPOS,0],a1 ;y pos + movi FNT9_9,a2 ;* image + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi CLSNEUT|TYPTEXT|SUBOVRHED,a5 + add a10,a5 + clr a6 ;x vel + clr a7 ;y vel + movi FNT9WHT_P,b0 + calla BEGINOBJP + PULL a6,a7 + + move @PSTATUS,a9 + movi TSEC*2,a10 + movi #cont_timer,a11 + +#loop + PUSHP a6,a7 + SLEEPK 1 + PULLP a6,a7 + +;Buyin check + move @PSTATUS,a14 + move *a13(PDATA+16),a0 + btst a0,a14 + jrne #buyin + +;More credits check + calla GET_CREDITS + cmp a0,a6 + jrne #coin_loop_reset + +;Start button check + move a7,a7 + jrz #skip_start_check + +;Any player who hits his start will reset buyin timer! + move *a13(PDATA+16),a0 + calla get_start_down + move a0,a0 + jrnz #start_hit + + move *a13(PDATA+16),a0 + xori 1,a0 + calla get_start_down + move a0,a0 + jrnz #start_hit + +#skip_start_check + +;Regular button check + +;Make these button presses player specific! + + move *a13(PDATA+16),a0 + calla get_but_val_down + move a0,a0 + jrnz #new_button_press + + move *a13(PDATA+16),a0 + calla get_but_val_cur + move a0,a0 + jrnz #old_button_press + +;No buttons down + dsj a10,#loop + +#sec_elapsed +;A second has elapsed. + dec a11 + jrz #timeout + movi TSEC*2,a10 + + move a11,a14 + X32 a14 + addi digits_tbl,a14 + move *a14,a0,L + calla civanic + + move a11,a14 + callr setup_clock_sound + + jruc #loop + +setup_clock_sound +; x16 a14 +; addi which_tick_tock,a14 +; move *a14,a0 +; CREATE0 do_next_tick +; movi 0B7H,a0 + movi 0AH,a0 + calla triple_sound + rets + +;do_next_tick +; SLEEP 12 +; MOVI 0B8H,A0 +; CALLA triple_sound +; DIE + +;which_tick_tock +; .word 0b7h,0b8h,0b7h,0b8h +; .word 0b7h,0b8h,0b7h,0b8h +; .word 0b7h,0b8h,0b7h,0b8h + +#new_button_press +;New press. skip a digit + clr a10 + jruc #sec_elapsed + +#old_button_press +;Button being held. Run clock at triple rate + subk 20,a10 + jrp #loop + jruc #sec_elapsed + +#start_hit +;A PSTATUS-active player has hit a start button. + dec a7 + jruc #loop_reset + +#buyin +;Someone has bought in. +;ALREADY DONE ELSE WHERE +; movi AUD_CONTTAKN,a0 ;inc the conts taken audit +; calla AUD1 + move @rr_loss,a14 + jrz #no_rr_loss + move *a13(PDATA+16),a14 + addk 1,a14 + not a14 + move @OLD_PSTATUS,a0 + and a14,a0 + move @cursor_procs,a14 + dec a14 + move a14,@cursor_procs + move a14,a14 + jrnz #no_cp + move a14,@active_flag +#no_cp clr a14 + move a14,@rr_loss ;don't care about this anymore + jruc #ok2_1 +#no_rr_loss + clr a0 ; ORG +#ok2_1 + move a0,@OLD_PSTATUS + move a0,@blow_out + + DIE + +#timeout +;Time ran out! +;If the other player has not bought in, then goto game over +;If the other player is active, and has already chosen his fighter, then +;immediately go into the match +;If he hasn't chosen his fighter, replot the text messages to now read +;Challenger needed, Insert x coins to start (The player blew his opportunity +;to continue the game at the potentially lower price!) +; + move @rr_loss,a14 + jrz #no_rr_loss1 + move *a13(PDATA+16),a14 + addk 1,a14 + not a14 + move @OLD_PSTATUS,a0 + and a14,a0 + move @cursor_procs,a14 + dec a14 + move a14,@cursor_procs + jruc #ok1 +#no_rr_loss1 + clr a0 ;ORG +#ok1 + move a0,@OLD_PSTATUS + move @rr_loss,a0 + jrz #do_end + move a14,a14 + jrz #do_end + clr a0 + jruc #set_it +#do_end + + movk 1,a0 +#set_it + move a0,@blow_out + + DIE + +auto_str + JAM_STR font9_ascii,10,0,200,19,FNT9WHT_P,print_string_C2 + .string "AUTO INITIALS",0 + .even + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SELECT2.ASM b/SELECT2.ASM new file mode 100755 index 0000000..45bc45f --- /dev/null +++ b/SELECT2.ASM @@ -0,0 +1,1284 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 1066, shortly after the Battle of Hastings +* +* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 11/22/93 14:24 +************************************************************** + + .file "select.asm" + .title "wrestling selection screens" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;Mproc equates + .include "display.equ" ;Display proc equates + .include "gsp.equ" ;Gsp asm equates + .include "sys.equ" + .include "game.equ" + .include "audit.equ" + .include "macros.h" + .include "link.equ" + .include "sound.h" + + .include "fontsimg.glo" + .include "mainimg.glo" + .include "bgndtbl.glo" + .include "imgtbl.glo" + +#***************************************************************************** + + ;from AUDIT.ASM + .ref GET_ADJ,CR_STRTP + + ;from BAKGND.ASM + .ref BAKMODS,BGND_UD1 + + ;from DCSSOUND.ASM + .ref triple_sound,wmania_tune + + ;from DISPLAY.ASM + .ref BEGINOBJ_TBL + + ;from HSTD.ASM + .ref RC_BYTE + + ;from MAIN.ASM + .ref dpageflip,IRQSKYE + + ;from ROBO.ASM + .ref civanic + + ;from UTIL.ASM + .ref WIPEOUT,get_all_buttons_down,get_stick_val_down + .ref get_but_val_down,RNDRNG0,get_start_cur,get_stick_val_cur + .ref CYCLE_TABLE + + ;from WRESTLE.ASM + .ref HALT,PSTATUS,PCNT + .ref change_image + + ;for LIFEBAR.ASM + .def num_wrestlers + .ref start_credbox + + ;for ATTRACT.ASM + .def wrestler_mugs,wrestler_attributes,attbars + + ;for WRESTLE.ASM + .def wrestler_audits + + +#***************************************************************************** + + BSSX index1, 16 ;player 1 cursor position + BSSX index2, 16 ;player 2 cursor position + .bss time_out, 16 ;time out flag + .bss active_flag, 16 ;0:player 1 active, 1:player 2 active + +#***************************************************************************** + +num_wrestlers EQU 9 + + .word AUD_SNDERR4,AUD_SNDERR4,AUD_SNDERR4,AUD_SNDERR4 +wrestler_audits + .word AUD_BHART,AUD_BHARTHW,AUD_BHARTC,AUD_BHARTCW + .word AUD_RRAMO,AUD_RRAMOHW,AUD_RRAMOC,AUD_RRAMOCW + .word AUD_UNDER,AUD_UNDERHW,AUD_UNDERC,AUD_UNDERCW + .word AUD_YOKO,AUD_YOKOHW,AUD_YOKOC,AUD_YOKOCW + .word AUD_SMICH,AUD_SMICHHW,AUD_SMICHC,AUD_SMICHCW + .word AUD_BBBIG,AUD_BBBIGHW,AUD_BBBIGC,AUD_BBBIGCW + .word AUD_DCLOW,AUD_DCLOWHW,AUD_DCLOWC,AUD_DCLOWCW + .word AUD_ABOMB,AUD_ABOMBHW,AUD_ABOMBC,AUD_ABOMBCW + .word AUD_LLUGE,AUD_LLUGEHW,AUD_LLUGEC,AUD_LLUGECW +wrestler_auditsX + +SKIP_SELECT equ 0 + +#***************************************************************************** + + SUBR select_screen + +;Temp, stuff @index1,2 for testing wrestlers. + + .if SKIP_SELECT +;0 (Bret) +;1 (Razor) +;2 (Taker) +;3 (Yoko) +;4 (Shawn) +;5 (Bam Bam) +;6 (Doink) +;7 (Adam) +;8 (Lex) + + movk 6,a0 + move a0,@index1 + movk 6,a0 + move a0,@index2 + + RETP + .endif + +;MJT - Start + + movk 1,a0 ;page flipping on + move a0,@dpageflip + + movi #plyrsel_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 ;create objects for background + + ;play wrestlemania tune + .if MUSIC_ON + CREATE0 wmania_tune + .endif + + ;draw the croutons and their associated pix + movi crouton_pos_table,a9 + movi #crouton_pic_table,a10 + move *a9+,a0 +#crouton_loop + move *a9+,a1 + + + movi CRUTPLT_G,a2 + movi #crutplt_z,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + sll 16,a0 + sll 16,a1 + PUSH a0,a1,a6,a7 + + .if 0 + calla BEGINOBJW + + .endif + + + PULL a0,a1,a6,a7 + move *a10+,a2,L + movi #crutpic_z,a3 + movi DMAWNZ,a4 + movi CLSNEUT,a5 + calla BEGINOBJW + + move *a9+,a0 + jrnz #crouton_loop + + calla start_credbox + + CREATE0 select_clock + move a0,a10 + CREATE0 clock_digits + + + ;initialize flags + move @PSTATUS,a14 + move a14,@active_flag + + clr a14 + move a14,@time_out + + ;create the player cursors + clr a10 + CREATE SELECT_PID,player_cursor + movk 1,a10 + CREATE SELECT_PID,player_cursor + + ;wait for them to finish up + + + SLEEPK 1 + + movk 1,a0 + move a0,@DISPLAYON + calla display_unblank + +;MJT - End + +#waitloop + SLEEPK 1 + move @active_flag,a14 + jrnz #waitloop + + ;players have chosen their guys. wait a sec, then bail + movi TSEC,a8 +#final_waitloop + SLEEPK 1 + + move @active_flag,a14 ;don't quit if someone jumps in here + jrnz #waitloop + + dsj a8,#final_waitloop + + RETP + + +#plyrsel_mod + .long wwfselbkBMOD + .word -40,0 + .long 0 + +#crutplt_z equ 1 +hiplate_z equ 2 ;oscillates from 2 to 3 +#crutpic_z equ 4 +hilite_z equ 5 + +#baseshad_z equ 1 +#hishad_z equ 2 +#attplt_z equ 3 +#sidebar_z equ 3 +#nameshad_z equ 5 +#namebar_z equ 7 +atttxt_z equ 8 + +name_z equ 9 + +mugshot_z equ 1 + +#crouton_pic_table + .long CRUT_DK + .long CRUT_RR + .long CRUT_UN + .long CRUT_YK + .long CRUT_SM + .long CRUT_BM + .long CRUT_BH + .long CRUT_LX + +crouton_pos_table + .word 164,45 + .word 204,45 + + .word 164,90 + .word 204,90 + + .word 164,135 + .word 204,135 + + .word 164,180 + .word 204,180 + + .word 0 + + +#***************************************************************************** +* Process that handles player selection for one player. +* >a10 = player (0 or 1) + + STRUCTPD + LONG #HILITE ;UHL *hilite ring + + LONG #HIPLATE ;UHL *color crouton + + LONG #NAME ;UHL *name obj (message *obj) + WORD #RND_DEST ;UHW target if in random mode + + LONG #MUG1 + LONG #MUG2 + LONG #MUG3 + LONG #MUG4 + LONG #MUG5 + LONG #MUG6 + LONG #MUG7 + LONG #MUG8 + + LONG #ATT1 + LONG #ATT2 + LONG #ATT3 + LONG #ATT4 +;MJT + WORD #CNTR ;Flashing cursor delay + + +;player info struct +#PI_HILITE equ 0 ;UHL hilite box TBL_ hdr +#PI_HIPLATE equ 20h ;UHL hilite plate TBL_ hdr +#PI_STARTPOS equ 40h ;UHW starting pos (index) +#PI_MUGPOS equ 50h ;UHL mugshot [y,x] +#PI_MUGXPOS equ 50h ;UHW mugshot x +#PI_MUGYPOS equ 60h ;UHW mugshot y +#PI_MUGCTRL equ 70h ;UHW mugshot OCTRL +#PI_STARTNAME equ 80h ;UHL starting name TBL_ hdr +#PI_ATTTXT equ 0A0h ;UHL atttribute text TBL_ hdr +#PI_INDEX equ 0C0h ;UHL write selection word here +#PI_MOVESOUND equ 0E0h ;UHW cursor move triple_sound +#PI_SELSOUND equ 0F0h ;UHW select sound + +#rnd_movespeed equ 5 ;ticks between rndsel moves +#rnd_wander equ 18 ;rnd moves before home-in begins + + SUBRP player_cursor + + ;reg use + ; a6 = ticks until another move is allowed (debounce) + ; a6 = ticks until next move (random mode) + ; a7 = moves until home-in (random mode) + ; a9 = player info struct pointer + ; a10 = player number + ; a11 = position index (0-9) + + ;aim a9 at #p?info + move a10,a9 + X32 a9 + addi #info,a9 + move *a9,a9,L + + ;initialize the index word to -1 + movi -1,a14 + move *a9(#PI_INDEX),a0,L + move a14,*a0,W + + ;initialize random dest to -1 + movi -1,a14 + move a14,*a13(#RND_DEST) + +;MJT - start + clr a0 + move a0,*a13(#CNTR) + + ;create the name text + move *a9(#PI_STARTNAME),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#NAME),L + + ;active? + move @PSTATUS,a14 + btst a10,a14 + jrnz #begin_select + + ;inactive. wait for buyin + ;create the insert coin/press start message + calla CR_STRTP + jrhs #enough_money + +#no_money + ;no creds. flash 'insert coin' message while waiting for cash +#cred_waitloop + SLEEPK 1 + + callr #blink + + calla CR_STRTP + jrhs #enough_money + jruc #cred_waitloop + +#enough_money + + ;there's enough money. flash 'press start' message and wait + move *a13(#NAME),a8,L + movi WF_START,a0 + calla civanic + +#start_waitloop + SLEEPK 1 + + callr #blink + + move @PSTATUS,a14 + btst a10,a14 + jrz #start_waitloop + + move *a8(OXPOS),a0 + andi 1ffh,a0 + move a0,*a8(OXPOS) + +#begin_select + ;set our active bit if it's not already set + move @active_flag,a14 + move a10,a0 + inc a0 + or a0,a14 + move a14,@active_flag + + ;initialize index + move *a9(#PI_STARTPOS),a11 + + ;initialize #MUG? + movk 8,a0 + clr a1 + move a13,a2 + addi #MUG1,a2 +#initloop + move a1,*a2+,L + dsj a0,#initloop + +;MJT Start +; ;create our attrib text +; move *a9(#PI_ATTTXT),a0,L +; calla BEGINOBJ_TBL +; move *a8(OXVAL),a0,L +; move *a8(OYVAL),a1,L +; +; ;create the att bars +; addi [63,0],a0 +; addi [12,0],a1 +; movi ATTMTR_0,a2 +; movi atttxt_z,a3 +; movi DMAWNZ,a4 +; movi CLSNEUT,a5 +; clr a6 +; clr a7 +; +; PUSH a10,a11 +; +; movi 4,a10 ;bar count +; move a13,a11 +; addi #ATT1,a11 +; +;#abc_loop +; PUSH a0,a1,a2,a3,a4,a5,a6,a7 +; calla BEGINOBJ +; PULL a0,a1,a2,a3,a4,a5,a6,a7 +; move a8,*a11+,L +; addi [8,0],a1 +; dsj a10,#abc_loop +; +; PULL a10,a11 +;MJT End + + ;create our cursors + move *a9(#PI_HILITE),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#HILITE),L + + move *a9(#PI_HIPLATE),a0,L + calla BEGINOBJ_TBL + move a8,*a13(#HIPLATE),L + + jruc #first_adjust + +#blink + move *a13(#CNTR),a0 + dec a0 + move a0,*a13(#CNTR) + jrp #cont + movk 22,a0 + move a0,*a13(#CNTR) + move *a8(OXPOS),a0 + xori 1000h,a0 + move a0,*a8(OXPOS) +#cont + rets + + .if 0 + +;Color cycle cursors... +;Good example for future cycles.... + + PUSH a8,a9,a10,a11 + + move a10,a10 + jrz #blue + + movi [1,1],a8 + movi CRHI_R_P,a9 + movi redcyc_tbl,a10 + movk 4,a11 + CREATE CYCPID,CYCLE_TABLE + jruc #out + +#blue + movi [1,1],a8 + movi CRHI_B_P,a9 + movi blucyc_tbl,a10 + movk 4,a11 + CREATE CYCPID,CYCLE_TABLE + +#out PULL a8,a9,a10,a11 + + jruc #first_adjust + + +blucyc_tbl + .word 0041fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0081fh,00c1fh,0101fh,0141fh,0181fh + .word 01c1fh,0201fh,0241fh,0281fh,02c1fh,0301fh,0341fh,0381fh + .word 03c1fh,0401fh,0441fh,0481fh,04c1fh,0501fh,0541fh,0581fh + .word 05c1fh,0601fh,0641fh,0681fh,06c1fh,0701fh + .word 0741fh,0701fh,06c1fh,0681fh,0641fh,0601fh,05c1fh + .word 0581fh,0541fh,0501fh,04c1fh,0481fh,0441fh,0401fh,03c1fh + .word 0381fh,0341fh,0301fh,02c1fh,0281fh,0241fh,0201fh,01c1fh + .word 0181fh,0141fh,0101fh,00c1fh,0081fh,0041fh + + .word 0041fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0001fh + .word 0081fh,00c1fh,0101fh,0141fh,0181fh + .word 01c1fh,0201fh,0241fh,0281fh,02c1fh,0301fh,0341fh,0381fh + .word 03c1fh,0401fh,0441fh,0481fh,04c1fh,0501fh,0541fh,0581fh + .word 05c1fh,0601fh,0641fh,0681fh,06c1fh,0701fh + .word 0741fh,0701fh,06c1fh,0681fh,0641fh,0601fh,05c1fh + .word 0581fh,0541fh,0501fh,04c1fh,0481fh,0441fh,0401fh,03c1fh + .word 0381fh,0341fh,0301fh,02c1fh,0281fh,0241fh,0201fh,01c1fh + .word 0181fh,0141fh,0101fh,00c1fh,0081fh,0041fh + .word -1 + +redcyc_tbl + .word 07c20h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c40h,07c60h,07c80h,07ca0h,07cc0h + .word 07ce0h,07d00h,07d20h,07d40h,07d60h,07d80h,07da0h,07dc0h + .word 07de0h,07e00h,07e20h,07e40h,07e60h,07e80h,07ea0h + .word 07ec0h,07ee0h,07f00h,07f20h,07f40h,07f60h,07f80h + .word 07fa0h,07f80h,07f60h,07f40h,07f20h,07f00h,07ee0h,07ec0h + .word 07ea0h,07e80h,07e60h,07e40h,07e20h,07e00h,07de0h + .word 07dc0h,07da0h,07d80h,07d60h,07d40h,07d20h,07d00h,07ce0h + .word 07cc0h,07ca0h,07c80h,07c60h,07c40h,07c20h + + .word 07c20h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c00h + .word 07c40h,07c60h,07c80h,07ca0h,07cc0h + .word 07ce0h,07d00h,07d20h,07d40h,07d60h,07d80h,07da0h,07dc0h + .word 07de0h,07e00h,07e20h,07e40h,07e60h,07e80h,07ea0h + .word 07ec0h,07ee0h,07f00h,07f20h,07f40h,07f60h,07f80h + .word 07fa0h,07f80h,07f60h,07f40h,07f20h,07f00h,07ee0h,07ec0h + .word 07ea0h,07e80h,07e60h,07e40h,07e20h,07e00h,07de0h + .word 07dc0h,07da0h,07d80h,07d60h,07d40h,07d20h,07d00h,07ce0h + .word 07cc0h,07ca0h,07c80h,07c60h,07c40h,07c20h + .word -1 + + .endif + + +#adjust + move *a9(#PI_MOVESOUND),a0 + calla triple_sound + callr #erase_mugshot +#first_adjust + callr #place_cursor + callr #draw_mugshot + callr #update_name + callr #update_attbars + + ;set a6 to debounce value if not rndsel, or to move time if rndsel + move *a13(#RND_DEST),a14 + jrnn #waitloop + movk 3,a6 + + clr a0 + move a0,*a8(OCONST) ;Clr color + move a0,*a13(#CNTR) + +#waitloop + ;flash the hilightes + move *a13(#HIPLATE),a8,L + move *a8(OZPOS),a14 + xori 1,a14 + move a14,*a8(OZPOS) + + move *a13(#HILITE),a8,L + move *a8(OZPOS),a14 + xori 1,a14 + move a14,*a8(OZPOS) + + PUSHP a6,a7 + SLEEPK 1 + PULLP a6,a7 + +;Flash cursors white + + move *a13(#CNTR),a14 + dec a14 + move a14,*a13(#CNTR) + jrp #norm + movk 8,a14 + move a14,*a13(#CNTR) + + PUSH a6,a7,a9 + movi 0202h,a9 + CREATE0 FLASHME + .ref FLASHME + PULL a6,a7,a9 +#norm + +;MJT - End + ;are we in random mode? + move *a13(#RND_DEST),a14 + jrn #not_rndsel + + ;we're in random select + dsj a6,#waitloop + + ;time to move again + movi #rnd_movespeed,a6 ;set time to next move + dec a7 + jrp #move_at_random + + ;move toward final destination + ;if we're there, take it + move *a13(#RND_DEST),a14 + cmp a14,a11 + jreq #but_hit + + ;not there. one time in three, move at random anyway + movk 3,a0 + calla RNDRNG0 + TEST a0 + jrz #move_at_random + + ;if we're in the correct row, move sideways + move *a13(#RND_DEST),a14 + xor a11,a14 + srl 1,a14 + jrz #rnd_move_sideways + + ;okay, move toward the correct row + move *a13(#RND_DEST),a14 + cmp a11,a14 + jrlt #stick_up + jruc #stick_down + +#move_at_random + ;move in a random direction, but only in legal directions + movk 2,a0 + calla RNDRNG0 + cmpi 2,a0 + jreq #rnd_move_up + cmpi 1,a0 + jreq #rnd_move_down + + ;move sideways by toggling bit zero in the index +#rnd_move_sideways + xori 1,a11 + jruc #adjust + +#rnd_move_up + cmpi 2,a11 + jrge #stick_up + + ;moving up isn't legal. move sideways or down + movi 1,a0 + calla RNDRNG0 + TEST a0 + jrz #rnd_move_sideways + jruc #stick_down + +#rnd_move_down + cmpi 5,a11 + jrle #stick_down + + ;moving down isn't legal. move sideways or up + movi 1,a0 + calla RNDRNG0 + TEST a0 + jrz #rnd_move_sideways + jruc #stick_up + +#not_rndsel + ;if time is out, pick whoever we're on. + move @time_out,a14 + jrnz #but_hit + + ;begin random select? + move a10,a0 + calla get_start_cur + jrz #button_checks + + ;start is down. check stick + move a10,a0 + calla get_stick_val_cur + btst JOYUP,a0 + jrz #button_checks + + ;stick is up. check position + move *a9(#PI_STARTPOS),a14 + cmp a11,a14 + jreq #begin_random_select + +#button_checks + ;button checks + move a10,a0 + calla get_but_val_down + TEST a0 + jrnz #but_hit + + dec a6 + jrp #waitloop + clr a6 + + ;stick checks + move a10,a0 + calla get_stick_val_down + btst JOYDN,a0 + jrnz #stick_down + btst JOYUP,a0 + jrnz #stick_up + btst JOYLFT,a0 + jrnz #stick_left + btst JOYRGT,a0 + jrnz #stick_right + jruc #waitloop + +#stick_down + ;add 2 unless the index is 6 or 7 + cmpi 6,a11 + jrge #waitloop + addi 2,a11 + jruc #adjust + +#stick_up + ;sub 2 unless index is 0 or 1 + cmpi 2,a11 + jrlt #waitloop + subi 2,a11 + jruc #adjust + +#stick_left + ;sub 1 unless index is even + btst 0,a11 + jrz #waitloop + dec a11 + jruc #adjust + +#stick_right + ;add 1 unless index is odd + btst 0,a11 + jrnz #waitloop + inc a11 + jruc #adjust + +#begin_random_select + movi 7,a0 + calla RNDRNG0 + move a0,*a13(#RND_DEST) + movi #rnd_movespeed,a6 + movi #rnd_wander,a7 + jruc #waitloop + +#but_hit + ;they hit a button. Stick 'em with the current guy. + move *a9(#PI_INDEX),a0,L + ;rewire kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + move a11,*a0 + + ;make a joyful noise unto the player + move *a9(#PI_SELSOUND),a0 + calla triple_sound + + ;clear our bit in the active flag + move @active_flag,a0 + inc a10 + andn a10,a0 + move a0,@active_flag + + ;flash over the crouton + ;synch! begin flashing on an even PCNT + move @PCNT,a14 + btst 0,a14 + jrnz #synch + SLEEPK 1 + +#synch + move *a13(#HILITE),a8,L +;MJT +; movi 0202h,a14 +; move a14,*a8(OCONST) + + movi TSEC/2,a11 +#flashloop + movi 0202h,a14 + move a14,*a8(OCONST) + move *a8(OCTRL),a14 + xori M_CONZER,a14 + move a14,*a8(OCTRL) + SLEEPK 1 + dsj a11,#flashloop + + move *a8(OCTRL),a14 + andni M_CONZER,a14 + move a14,*a8(OCTRL) + + movi hilite_z,a14 + move a14,*a8(OZPOS) + + move *a13(#HIPLATE),a8,L + movi hiplate_z,a14 + move a14,*a8(OZPOS) + + DIE + +******** +* moves cursor to the current index position + + SUBRP #place_cursor + + PUSH a2,a3,a7,a8 + + move a11,a1 + X32 a1 + addi crouton_pos_table,a1 + move *a1+,a2,W + move *a1,a3,W + + move *a13(#HILITE),a7,L + move *a13(#HIPLATE),a8,L + + move a2,*a7(OXPOS) + move a2,*a8(OXPOS) + move a3,*a7(OYPOS) + move a3,*a8(OYPOS) + + PULL a2,a3,a7,a8 + rets + + +******** +* updates the name text + + SUBRP #update_name + + PUSH a8,a11 + + ;rewiring kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + + move a11,a0 + X32 a0 + addi name_tbl,a0 + move *a0,a0,L + move *a13(#NAME),a8,L + calla civanic + + PULL a8,a11 + + rets + +******** +* erases current mugshot + + SUBRP #erase_mugshot + + PUSH a5,a6,a8 + + movk 8,a6 + move a13,a5 + addi #MUG1,a5 +#eraseloop + move *a5+,a0,L + calla DELOBJ + dsj a6,#eraseloop + + PULL a5,a6,a8 + + rets + + +******** +* draws a new mugshot + + SUBRP #draw_mugshot + + ;reg use + ;a10 = PDATA pointer + ;a11 = mug pointer + + PUSH a6,a7,a8,a10,a11 + + ;rewiring kludge + X16 a11 + addi scramble_table,a11 + move *a11,a11,W + + X32 a11 + addi wrestler_mugs,a11 + move *a11,a11,L + + move a13,a10 + addi #MUG1,a10 + move *a11+,a2,L + +#drawloop + move *a9(#PI_MUGXPOS),a0 + move *a9(#PI_MUGYPOS),a1 + sla 16,a0 + sla 16,a1 + movi mugshot_z,a3 + move *a9(#PI_MUGCTRL),a4 + movi CLSNEUT,a5 + clr a6 + clr a7 + calla BEGINOBJW + move a8,*a10+,L + + move *a11+,a2,L + jrz #done + jruc #drawloop + +#done + PULL a6,a7,a8,a10,a11 + rets + + +;MJT Start +;******** +;* updates the attribute bars +; +; SUBRP #update_attbars +; +; PUSH a7,a10,a11 +; +; +; ;rewiring kludge +; X16 a11 +; addi scramble_table,a11 +; move *a11,a11,W +; +; move a11,a10 +; X64 a10 +; addi wrestler_attributes,a10 +; move a13,a11 +; addi #ATT1,a11 +; +; movi 4,a7 +;#ualoop +; move *a10+,a0,W +; X32 a0 +; addi attbars,a0 +; move *a0,a0,L +; move *a11+,a8,L +; calla civanic +; dsj a7,#ualoop +; +; PULL a7,a10,a11 +; rets +; +;wrestler_attributes +; .word 0,1,2,3 +; .word 4,5,6,7 +; .word 8,9,0,1 +; .word 2,3,4,5 +; .word 6,7,8,9 +; .word 0,1,2,3 +; .word 4,5,6,7 +; .word 8,9,0,1 +; .word 9,9,9,9 + +;MJT End + +scramble_table ;swap bret and doink on the select page + .word 6 + .word 1,2,3,4,5 + .word 0 + .word 8 ;put lex in place of adam + +;attbars +; .long ATTMTR_0,ATTMTR_1,ATTMTR_2,ATTMTR_3,ATTMTR_4 +; .long ATTMTR_5,ATTMTR_6,ATTMTR_7,ATTMTR_8,ATTMTR_9 + +#info + .long #p1info,#p2info + +#p1info + .long #hi_b,#plt_b ;hilite, crouton + .word 0 ;start index + .word 0+18+2,175 ;mug position + .word DMAWNZ|M_3D|M_SCRNREL ;mug octrl + .long #p1name,latttxt ;start name,att text + .long index1 ;report choice to + .word 18h,35h ;cursor/select sounds + +#p2info + .long #hi_r,#plt_r ;hilite, crouton + .word 1 ;start index + .word 400-18,175 ;mug position + .word DMAWNZ|M_3D|M_SCRNREL|M_FLIPH ;mug octrl + .long #p2name,ratttxt ;start name,att text + .long index2 ;report choice to + .word 19h,55h ;cursor/select sounds + + + +#plt_b .word 0,0,hiplate_z ;X,Y,Z + .long CRUTPLT_B ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#plt_r .word 0,0,hiplate_z+1 ;X,Y,Z + .long CRUTPLT_R ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#hi_b .word 0,0,hilite_z ;X,Y,Z + .long CRUTHI_B ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#hi_r .word 0,0,hilite_z+1 ;X,Y,Z + .long CRUTHI_R ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +#p1name .word >51,184,name_z + .long WF_INSERT + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSNEUT|TYPNEUT + .long 0,0 + +#p2name .word >142,184,name_z + .long WF_INSERT + .word DMAWNZ|M_3D|M_SCRNREL + .word CLSNEUT|TYPNEUT + .long 0,0 + +latttxt .word 0+18,189,atttxt_z ;X, Y, Z + .long ATT_TXT ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +ratttxt .word 400-18-124,189,atttxt_z ;X, Y, Z + .long ATT_TXT ;IMG + .word DMAWNZ|M_3D|M_SCRNREL ;CTRL + .word CLSNEUT|TYPNEUT ;OID + .long 0,0 ;XVEL, YVEL + +;Mugshot stuff + +wrestler_mugs + .long BHARTMUG + .long RAZORMUG + .long UNDERMUG + .long YOKOMUG + .long MICHAELMUG + .long BAMBAMMUG + .long DOINKMUG + .long ADAMMUG + .long LUGERMUG + +BHARTMUG + .long BHMUG_A,BHMUG_B,BHMUG_C,BHMUG_D + .long BHMUG_E,BHMUG_F,BHMUG_G,BHMUG_H,0 +RAZORMUG + .long RRMUG_A,RRMUG_B,RRMUG_C,RRMUG_D + .long RRMUG_E,RRMUG_F,RRMUG_G,RRMUG_H,0 +UNDERMUG + .long UNMUG_A,UNMUG_B,UNMUG_C,UNMUG_D + .long UNMUG_E,UNMUG_F,UNMUG_G,UNMUG_H,0 +YOKOMUG + .long YKMUG_A,YKMUG_B,YKMUG_C,YKMUG_D + .long YKMUG_E,YKMUG_F,YKMUG_G,YKMUG_H,0 +MICHAELMUG + .long SMMUG_A,SMMUG_B,SMMUG_C,SMMUG_D + .long SMMUG_E,SMMUG_F,SMMUG_G,SMMUG_H,0 +BAMBAMMUG + .long BMMUG_A,BMMUG_B,BMMUG_C,BMMUG_D + .long BMMUG_E,BMMUG_F,BMMUG_G,BMMUG_H,0 +DOINKMUG + .long DKMUG_A,DKMUG_B,DKMUG_C,DKMUG_D + .long DKMUG_E,DKMUG_F,DKMUG_G,DKMUG_H,0 +ADAMMUG + .long ADMUG_A,ADMUG_B,ADMUG_C,ADMUG_D + .long ADMUG_E,ADMUG_F,ADMUG_G,ADMUG_H,0 +LUGERMUG + .long LXMUG_A,LXMUG_B,LXMUG_C,LXMUG_D + .long LXMUG_E,LXMUG_F,LXMUG_G,LXMUG_H,0 + +name_tbl + .long NAM_BRT,NAM_RZR,NAM_UND,NAM_YOK + .long NAM_SHN2,NAM_BAM2,NAM_DNK,NAM_ADM,NAM_LEX + +#***************************************************************************** +* Player select clock - sets time_out when it runs out of time +* + + SUBR select_clock + + ;reg use + ; a8 - current pstatus + ; a9 - time remaining + +#select_time equ TSEC*25 + +#reset + movi #select_time,a9 + move @PSTATUS,a8 + +#waitloop + SLEEPK 1 + move @PSTATUS,a14 + cmp a14,a8 + jrne #reset ;new buyin. reset + + dsj a9,#waitloop + + movk 1,a14 + move a14,@time_out + + DIE + +clock_digits +;When player select time gets down to 5 seconds, display it... +;a10=select_clock *PROC + + movi [0cbh,0],a0 ;x pos + movi [232,0],a1 ;y pos + movi FNT9_5,a2 ;* image + movi 104+200,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + movk 4,a11 +#loop0 callr obj_off + +#loop SLEEPK 1 + move @time_out,a0 + janz SUCIDE + move *a10(PA9),a0 + srl 6,a0 + cmp a0,a11 + jrz #loop + cmpi 6,a0 + jrge #loop0 + +;New digit time + move a0,a11 + sll 5,a0 + addi #digits_tbl,a0 + move *a0,a0,L ;* image + + move *a8(OCTRL),a1 ;DMA flags + calla change_image + callr obj_on + + movi clock_snd,a0 + calla triple_sound + jruc #loop + +#digits_tbl + .long FNT9_0,FNT9_1,FNT9_2,FNT9_3,FNT9_4 + .long FNT9_5,FNT9_6,FNT9_7,FNT9_8,FNT9_9 + + +#***************************************************************************** +* "Tonight's Matchup"-type stuff. +* + + SUBR pregame_show + +;This will be the ladder type screen, showing the 1 player +;game progression. Chooses the CPU opponent. + + move @index1,a0 + jrnn #ok + +;Chooses CPU controlled player 1 + movk 6,a0 ;Doink + move a0,@index1 + +#ok + move @index2,a0 + jrnn #ok2 + +;Chooses CPU controlled player 2 + movk 6,a0 ;Doink + move a0,@index2 + +#ok2 + RETP + +#***************************************************************************** +* +* INPUT: a8 = * object +*----------------------------------------------------------------------------- + + SUBRP obj_on + move *a8(OYPOS),a0 + andni 400h,a0 + move a0,*a8(OYPOS) + rets + + +#***************************************************************************** +* +* INPUT: a8 = * object +*----------------------------------------------------------------------------- + + SUBRP obj_off + move *a8(OYPOS),a0 + ori 400h,a0 + move a0,*a8(OYPOS) + rets + + +****************************************************************************** + .end + \ No newline at end of file diff --git a/SHAWN.ASM b/SHAWN.ASM new file mode 100755 index 0000000..4af8056 --- /dev/null +++ b/SHAWN.ASM @@ -0,0 +1,3365 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "shawn.asm" + .title "Shawn Michaels-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" + .include "jjxm.h" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref change_anim1a,change_anim2a,do_taunt + .ref shn_2_hair_pickup_anim,bounce_off_ropes + .ref check_secret_moves,ck_teammate_pin,raisearm_check + .ref master_keep_attached,round_award,set_raisearm_bit + .ref ck_ignore,climb_turnbuckle,execute_walk,get_opp_plyrmode + .ref get_punch_dtime,get_opp_process,std_taunt,std_walk_fast + .ref process_ptrs,form_button_value,keep_attached,change_anim1 + .ref change_anim2,halve_combo_meter,HALT + .ref mode_inair2,mode_choking,mode_puppet + .ref JUMP_ROPES,DO_REVERSAL,DO_REVERSAL_MESS + .ref CHECK_COMBO_GO,FIND_AND_KILL_ENDLESS + .ref CLIMB_ROPES,ADD_IF_SILENT,PCNT + .ref get_powerk_dtime,drone_change_back + + .ref BONUS_MESS,can_pin + .ref blocking_off + .ref hyper_speed_on + .ref in_finish_move + .ref p1rounds,p2rounds + .if NUM_SHAWN_FINISHES + .ref shn_finish1_move + .if NUM_SHAWN_FINISHES > 1 + .ref shn_finish2_move + .endif + .endif + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref shn_rpt_hdbutts_anim + .ref shn_3_head_hold2_anim + .ref shn_3_head_hold_anim + .ref start_run_anim + + ;stands + .ref shn_stand2_anim,shn_stand8_anim + .ref shn_stand4_anim,shn_stand6_anim + .ref shn_torso2_anim,shn_torso8_anim + .ref shn_torso4_anim,shn_torso6_anim + .ref shn_3_head_held_stand_anim + + ;turns + .ref shn_2_to_4_turn_anim,shn_8_to_6_turn_anim ;stand + .ref shn_4_to_2_turn_anim,shn_6_to_8_turn_anim + .ref shn_4_to_6_turn_anim,shn_6_to_4_turn_anim + .ref shn_2_to_8_turn_anim,shn_8_to_2_turn_anim + .ref shn_4_to_8_turn_anim,shn_6_to_2_turn_anim + .ref shn_2_to_6_turn_anim,shn_8_to_4_turn_anim + + .ref shn_2_to_4_turn2_anim,shn_8_to_6_turn2_anim ;torso + .ref shn_4_to_2_turn2_anim,shn_6_to_8_turn2_anim + .ref shn_4_to_6_turn2_anim,shn_6_to_4_turn2_anim + .ref shn_2_to_8_turn2_anim,shn_8_to_2_turn2_anim + .ref shn_4_to_8_turn2_anim,shn_6_to_2_turn2_anim + .ref shn_2_to_6_turn2_anim,shn_8_to_4_turn2_anim + + ;walks + .ref shn_walk1_f2_anim,shn_walk2_f2_anim,shn_walk4_f2_anim + .ref shn_walk5_f2_anim,shn_walk6_f2_anim,shn_walk8_f2_anim + .ref shn_walk1_f4_anim,shn_walk2_f4_anim,shn_walk4_f4_anim + .ref shn_walk5_f4_anim,shn_walk6_f4_anim,shn_walk8_f4_anim + + .ref shn_run2_anim,shn_climb_down_anim,shn_climb_up_anim + + ;mundane attacks + .ref shn_2_punch_anim,shn_4_punch_anim + .ref shn_2_kick_anim,shn_4_kick_anim + .ref shn_4_push_anim + .ref shn_2_butt_anim,shn_4_butt_anim + .ref shn_2_knee_anim,shn_4_knee_anim + .ref shn_2_stomp_anim,shn_4_stomp_anim + .ref shn_2_falling_punch_anim,shn_4_falling_punch_anim + .ref shn_bstomp_anim,shn_belbow_anim + .ref shn_flipslam_anim + + ;special attacks + .ref shn_4_hair_pickup_anim + .ref shn_spinkick_anim,shn_flying_kick_anim + .ref shn_gsuplex_anim,shn_run_stomp_anim + .ref shn_2_raise_arm_anim,shn_4_raise_arm_anim + .ref shn_super_speedkick_anim + .ref shn_fstein_anim + .ref shn_2_pin_anim,shn_4_pin_anim + .ref shn_2_hiptoss_anim + .ref shn_4_hiptoss_anim + .ref shn_2_hiptoss2_anim + .ref shn_4_hiptoss2_anim + .ref shn_speed_spinkick_anim,shn_knee_fstein_anim + .ref shn_sliding_kicktoss_anim,shn_break_arm_anim + .ref shn_4_jump_kick_anim + .ref shn_gsuplex_run_anim + +; .ref shn_pkup_chair_anim + .ref shn_2_slap_anim,shn_4_slap_anim + .ref shn_4_pummel_anim,shn_2_pummel_anim + + ;reactions + .ref shn_dizzy_anim,shn_fall_back_anim + .ref shn_2_grabfling_anim,shn_4_grabfling_anim + + ;blocks + .ref shn_4_block_anim + + ;combos + .ref shn_combo_kick_anim,shn_combo_punch_anim + .ref BLOCK_WOOSH + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* special moves +* + +shn_secret_moves + .long #charge_flying_kick ;must have this one + .long #grab_fling + .long #hip_toss + .long #grab_fling2 + .long #hip_toss2 + .long #neck_grab + .long #frankensteiner + .long #jump_kick + .long 0 + +***************************************************************************** +* +* SPECIAL MOVE PROCESSES +* + + SUBR shn_smove_table + .long shn_hdhold_combo2 + .long shn_hdhold_combo1 + .long shn_charge_suplex + .long shn_swirl_speedkick + .long shn_sliding_kicktoss + .long shn_hdhold_suplex + .long shn_hdhold_frank + .long shn_hdhold_kicktoss + .long shn_hdhold_butts + .long shn_flipslam ;Can do from headhold also + .long shn_grab_toss_air +; .long std_hdhold_anti_combo + .long std_walk_fast + .long std_taunt + + .if NUM_SHAWN_FINISHES + .long shn_finish_move1 + .endif + .if NUM_SHAWN_FINISHES > 1 + .long shn_finish_move2 + .endif + .long 0 + +******************************************************************************* + +#jump_kick + .word B_SKICK, J_ALL + .word J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 32 ;max + .long #scrt_flykick + +#scrt_flykick + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ATTACHED,a0 + jrz #out + + movi shn_4_jump_kick_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,FLYKICK_T1,FLYKICK_T2 + + rets + +******************************************************************************* + +#hip_toss +; .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_hiptoss + + .word B_PUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_hiptoss + + +#scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out +; cmpi MODE_BLOCK,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit + + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #out + +#doit + FACE24 shn,hiptoss_anim + calla change_anim1a + + WRSND W_SHAWN,HIPTOSS_T1,PUNCH_T2 + rets + +******************************************************************************* + +#grab_fling2 + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#hip_toss2 + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#scrt_grabfling2 + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrz #yes + rets + +******************************************************************************* + +#grab_fling +; .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_grabfling + + .word B_SPUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_grabfling + +#scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + FACE24 shn,hiptoss_anim + calla change_anim1a + + WRSND W_SHAWN,GRABFLING_T1,PUNCH_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + +; move *a13(LAST_FLING_ATTEMPT),a14,L +; move @PCNT,a0,L +; sub a14,a0 +; cmpi 3*60,a0 +; jrge #ok2 +; +; FACE24 shn,slap_anim +; calla change_anim1a +; +; WRSND W_SHAWN,SPUNCH_T1,SPUNCH_T2 +; rets +; +;#ok2 +; move @PCNT,a14,L ;use 32-bit PCNT! +; move a14,*a13(LAST_FLING_ATTEMPT),L + + FACE24 shn,grabfling_anim + calla change_anim1a + + WRSND W_SHAWN,GRABFLING_T1,PUNCH_T2 + rets + +******************************************************************************* + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + move *a13(LAST_HEADHOLD),a14,L + move @PCNT,a0,L + sub a14,a0 + cmpi 2*60,a0 + jrge #ok2a + +;This head grab is too close (in terms of time) to most recent grab + .ref shn_3_fake_hold_anim + movi shn_3_fake_hold_anim,a0 + calla change_anim1a + rets + +#ok2a + move *a13(CLOSEST_XDIST),a1 + cmpi 90,a1 + jrgt #std_grab + + movi shn_3_head_hold2_anim,a0 + calla change_anim1a +#out rets + +#std_grab + movi shn_3_head_hold_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#charge_flying_kick + move *a13(BUT_VAL_UP),a0 + btst PLAYER_SKICK_BIT,a0 + jrz #no_kick + + move *a13(PLYRNUM),a0 + calla get_powerk_dtime + cmpi 85,a0 ;> min? + jrlt #no_kick + + callr #scrt_kick + setc + rets + +#no_kick + clrc + rets + +#scrt_kick + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_HEADHOLD,a0 + jrz #out + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + .ref ck_ignore + calla ck_ignore + jrc #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + +#ok + + SETMODE INAIR + + movk 1,a0 ;Ensure leap at + move a0,*a8(OBJ_XVEL),L + + movi shn_flying_kick_anim,a0 + calla change_anim1a + + + WRSND W_SHAWN,FLYKICK_T1,FLYKICK_T2 + + rets + +******************************************************************************* + +#frankensteiner + .word B_SKICK, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_fstein + +#scrt_fstein + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #rets + move *a13(PLYRMODE),a0 + CMPI MODE_HEADHOLD,a0 + jrz #rets + +;no frankensteiner if opponent is on the ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jreq #rets + cmpi MODE_DEAD,a0 + jreq #rets + + ;don't do it if opponent is behind you + calla ck_ignore + jrc #rets + + CALLA FIND_AND_KILL_ENDLESS + movi shn_fstein_anim,a0 + calla change_anim1a + WRSND W_SHAWN,KICK_T1,KICK_T2 +#rets rets + + .if NUM_SHAWN_FINISHES +#****************************************************************************** + SUBRP shn_finish_move1 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_DOWN,0,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN B_PUNCH,J_ALL,#reset + + movi shn_finish1_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + + .if NUM_SHAWN_FINISHES > 1 +#****************************************************************************** + SUBRP shn_finish_move2 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_UP,0,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN B_SPUNCH,J_ALL,#reset + + movi shn_finish2_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + +#******************************************************************************* +shn_swirl_speedkick + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + clr a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp0 + + move *a8(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jrz #lp0 + cmpi MODE_HEADHOLD,a0 + jrz #knee + cmpi MODE_HEADHELD,a0 + jrnz #slam + move *a8(I_WILL_DIE),a14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + +; ;immobilize WHOHITME +; move *a8(WHOHITME),a0,L +; jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +; movk 6,a10 +; CREATE MESSAGE_PID,BONUS_MESS + +; ;target WHOIHIT -- don't hit anyone else +; SMRTTGT a8,WHOIHIT + +; ;immobilize WHOIHIT +; move *a8(WHOIHIT),a0,L + +#is_reversal +; movk 15,a14 +; move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi shn_super_speedkick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + SLEEPK 20 + jruc #lp + +#knee + CALLA FIND_AND_KILL_ENDLESS + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +; move *a8(WHOHITME),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + + move *a8(WHOIHIT),a0,L + movi 6*60,a14 + move a14,*a0(DELAY_METER) + + SPCDMG D_FLYKICK/2,20 + + movi shn_flying_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SETMODE INAIR + +; movi 1000h,a0 +; move a0,*a13(OBJ_XVEL),L +; movi 1000h,a0 +; move a0,*a8(OBJ_XVEL),L +; movi 1000h,a0 +; move a0,*a13(OBJ_XVEL),L + + WRSND W_SHAWN,FLYKICK_T1,FLYKICK_T2 + SLEEPK 5 + movi 40000h,a0 + move a0,*a8(OBJ_YVEL),L + SLEEPK 20 + jruc #lp + +; +;#******************************************************************************* +; +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +; WORD #TIMEOUT ;UDW +; +;shn_charge_speedkick +; +;#start_over +; ;charge on stick away +; clr a14 +; move a14,*a13(#CHARGE_TIME),W +;#loop1 +; SLEEPK 1 +; +; move *a13(#CHARGE_TIME),a14,W +; inc a14 +; move a14,*a13(#CHARGE_TIME),W +; move *a8(STICK_VAL_CUR),a0 +; +;;Arbitrarily define TOWARD to be RIGHT. So if the opponent is to +;;our left, flip the L|R direction bits... +; +;;However, if the stick isn't pointed left or right, don't do +;;anything. +; move a0,a14 +; andi MOVE_LEFT|MOVE_RIGHT,a14 +; jrz #no_flip +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip +; +;;If we're still holding away, jump back to #loop1 +; btst MOVE_LEFT_BIT,a0 +; jrnz #loop1 +; +;;No longer holding away... +; move *a13(#CHARGE_TIME),a14 +; cmpi 45,a14 +; jrlt #start_over +; +;;Okay, they released after holding away for 2 seconds. Give them +;;Half a second to push forward + super_kick +; +; movk 25,a14 +; move a14,*a13(#TIMEOUT) +;#loop2 +; SLEEPK 1 +; +; move *a8(BUT_VAL_DOWN),a0 +; jrnz #press +; +; move *a13(#TIMEOUT),a14 +; dec a14 +; jrz #start_over +; move a14,*a13(#TIMEOUT) +; jruc #loop2 +; +;#press +;;We have a button press. Is it kick? +; btst PLAYER_KICK_BIT,a0 +; jrz #start_over ;wrong button. No good. +; +;;Check for a towards on the stick. +; move *a8(STICK_VAL_CUR),a0 +; jrz #start_over ;no stick at all. No good. +; +; move *a8(NEW_FACING_DIR),a14 +; btst MOVE_LEFT_BIT,a14 +; jrz #no_flip2 +; xori MOVE_LEFT|MOVE_RIGHT,a0 +;#no_flip2 +; btst MOVE_RIGHT_BIT,a0 +; jrz #start_over ;pooched it +; +;;Don't do it when he is on ground +; SWAP a8,a13 +; calla get_opp_plyrmode +; SWAP a8,a13 +;;Don't do it when he is on ground +; cmpi MODE_ONGROUND,a0 +; jrz #start_over +; cmpi MODE_DEAD,a0 +; jrz #start_over +; +;;Success! Check for the UNINT bit, then queue it up. +; move *a8(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #start_over +; +; movi shn_super_speedkick_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; WRSND W_SHAWN,KICK_T1,KICK_T2 +; +; jruc #start_over + +#******************************************************************************* +shn_flipslam +;Can do from head hold also! + +#TIMEOUT .equ 30 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + + clr a11 + + WAITSWITCH_DWN J_UP,0,#lp + + movk #TIMEOUT,a11 + +; WAITSWITCH_DWN J_UP_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #slam + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + cmpi MODE_HEADHOLD,a0 + jrnz #slam2 + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movi 39,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS +#slam2 + movi shn_flipslam_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* + +shn_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp +; WAITSWITCH_DWN B_PUNCH,J_DOWN_AWAY|J_UP_AWAY,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jreq #lp0 + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 +;Don't do it when he is on ground + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 6ch,a0 + jrgt #lp + + FACE24 shn,hiptoss_anim + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_SHAWN,HIPTOSS_T1,PUNCH_T2 + + SLEEPK 20 + + jruc #lp + +#doit2 FACE24 shn,hiptoss2_anim + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_SHAWN,HIPTOSS_T1,PUNCH_T2 + + SLEEPK 20 + + jruc #lp + +#******************************************************************************* +shn_hdhold_suplex + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp +#contz + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;fix ! wrong name - jake + movk 1,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi shn_gsuplex_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + SLEEPK 20 + + jruc #lp + +#******************************************************************************* +shn_hdhold_kicktoss + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movi 36,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 25,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + WRSND W_SHAWN,KICK_T1,KICK_T2 + movi shn_sliding_kicktoss_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +#******************************************************************************* +shn_hdhold_frank + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 3,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 32,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi shn_fstein_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + SLEEPK 20 + + jruc #lp + +#******************************************************************************* +shn_hdhold_butts + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(GETUP_TIME),a0 + jrnz #lp0 + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#cont + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 3,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 32,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi shn_rpt_hdbutts_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L +; WRSND W_SHAWN,KICK_T1,KICK_T2 + + SLEEPK 20 + + jruc #lp + +#******************************************************************************* + +; STRUCTPD +; WORD #CHARGE_TIME ;UDW +#CHARGE_TIME .equ SM_USRW1 + +shn_charge_suplex + +;Try to spin around and suplex + +#start_over + clr a14 + move a14,*a13(#CHARGE_TIME),W +#loop1 + SLEEPK 1 + + move *a13(#CHARGE_TIME),a14,W + inc a14 + move a14,*a13(#CHARGE_TIME),W + + move *a8(BUT_VAL_CUR),a0 + btst PLAYER_PUNCH_BIT,a0 + jrz #p1 + + jruc #loop1 + +#p1 + +;no longer holding button + move *a13(#CHARGE_TIME),a14 + cmpi 100,a14 + jrlt #start_over + + move *a8(GETUP_TIME),a0 + jrnz #start_over + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #start_over +; jrz #rev + cmpi MODE_HEADHOLD,a0 + jrz #start_over + cmpi MODE_ONGROUND,a0 + jrz #start_over + cmpi MODE_DEAD,a0 + jrz #start_over + +;Success! Check for the UNINT bit, then queue it up. + move *a8(ANIMODE),a14 + btst MODE_UNINT_BIT,a14 + jrnz #start_over + + movi shn_gsuplex_anim,a14 + + move *a8(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrnz #cont + + movi shn_gsuplex_run_anim,a14 + +#cont + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + jruc #start_over + + +#******************************************************************************* + +shn_sliding_kicktoss + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #lp0 + cmpi MODE_HEADHOLD,a0 + jrz #lp0 + cmpi MODE_ONGROUND,a0 + jrz #lp0 + cmpi MODE_DEAD,a0 + jrz #lp0 + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp0 + + move *a8(GETUP_TIME),a0 + jrnz #lp0 + + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + +;Don't do it if opponent is behind you + SWAP a8,a13 + calla ck_ignore + jrnc #norm + SWAP a8,a13 + jruc #lp +#norm + SWAP a8,a13 + + WRSND W_SHAWN,KICK_T1,KICK_T2 + movi shn_sliding_kicktoss_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +;#***************************************************************************** +;* +; +;#TIMEOUT .equ 30 +; +; SUBR std_hdhold_anti_combo +; +; +;#lp0 SLEEPK 1 +;#lp clr a11 +; +; WAITSWITCH_DWN2 B_PUNCH,J_ALL,#lp +; +; movk #TIMEOUT,a11 +; +; WAITSWITCH_DWN2 B_SPUNCH,J_ALL,#lp +; WAITSWITCH_DWN2 B_PUNCH,J_ALL,#lp +; WAITSWITCH_DWN2 B_SPUNCH,J_ALL,#lp +; +; ;is my opponent in combo mode? +; move *a8(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(COMBO_COUNT),a0 +; jrz #lp0 +; +; ;am I already dead? +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +; ;is my combo meter lit? +; calla CHECK_COMBO_GO +; jrlt #lp0 +; +;;Combo breaker message! +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; ;target WHOHITME -- don't hit anyone else +; SMRTTGT a8,WHOHITME +; +; clr a0 +; move a0,*a8(IMMOBILIZE_TIME) +; +; move *a8(WHOHITME),a14,L +; movk 30,a0 +; move a0,*a14(IMMOBILIZE_TIME) +; +; FACETBL #breaker_tbl,a8 +; move a0,*a8(SPECIAL_MOVE_ADDR),L +;; WRSND W_SHAWN,KICK_T1,KICK_T2 +; +; ;halve both combo meters. +; push a8,a13 +; +; move a8,a13 +; push a8 +; calla halve_combo_meter +; pull a8 +; move *a8(WHOHITME),a13,L +; calla halve_combo_meter +; +; pull a8,a13 +; +; ;set opponent's COMBO_BROKEN bit. That way he won't get a message +; ; or clear his meter. +; move *a8(WHOHITME),a0,L +; move *a0(STATUS_FLAGS),a14,L +; ori M_COMBO_BROKEN,a14 +; move a14,*a0(STATUS_FLAGS),L +; +; ;sleep while waiting for the hit to land. Time varies by wrestler +; move *a8(WRESTLERNUM),a0 +; X16 a0 +; addi #wait_tbl,a0 +; move *a0,a0,W +; calla PRCSLP +; +; movk 1,a14 +; move a14,@HALT +; SLEEP 20 +; clr a14 +; move a14,@HALT +; +; jruc #lp +; +;#breaker_tbl +; .long 0 ;0 Bret Hart +; REFLONG rzr_3_uslash_anim ;1 Razor Ramon +; .long 0 ;2 Undertaker +; .long 0 ;3 Yokozuna +; REFLONG shn_spinkick_anim ;4 Shawn Michaels +; .long 0 ;5 Bam Bam +; .long 0 ;6 Doink +; .long 0 ;7 spare +; .long 0 ;8 Lex Luger +; +;#wait_tbl +; .word 0010,9,0010,0010 ;hrt,rzr,und,yok +; .word 13,0010,0010,0,0010 ;shn,bam,dnk,0,lex + +;******************************************************************************* +;#* +;shn_hdhold_anti_combo +;#TIMEOUT .equ 30 +; +;#lp0 +; SLEEPK 1 +;#lp +;;Is my opponent in combo mode? +;; move *a8(IMMOBILIZE_TIME),a14 +;; jrz #lp0 +;; move *a8(CLOSEST_NUM),a0 +;; X32 a0 +;; addi process_ptrs,a0 +;; move *a0,a0,L +;; move *a0(COMBO_COUNT),a0 +;; jrz #lp0 +; +; clr a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +; movk #TIMEOUT,a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +;;Is my opponent in combo mode? +; move *a8(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(COMBO_COUNT),a0 +; jrz #lp0 +; +; move *a8(ANTI_COMBO_TIME),a0 ;Time stamp +; move @PCNT,a14 +; sub a0,a14 +; abs a14 +; cmpi 80,a14 +; jrge #lp0 +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +;;Combo breaker message! +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; ;target WHOHITME -- don't hit anyone else +; SMRTTGT a8,WHOHITME +; +; clr a0 +; move a0,*a8(IMMOBILIZE_TIME) +; +; move *a8(WHOHITME),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) +; +; movi shn_fstein_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; WRSND W_SHAWN,KICK_T1,KICK_T2 +; +; SLEEPK 20 +; +; jruc #lp +; +#****************************************************************************** + +shn_hdhold_combo1 +;And arm break + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 +; jrnz #lp0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont +;In combo mode? +; calla CHECK_COMBO_GO +; jrlt #lp0 + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + calla CHECK_COMBO_GO + jrlt #tryarm + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi shn_combo_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + SLEEPK 20 + + jruc #lp +#tryarm + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam2 + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam2 + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 9,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 32,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi shn_break_arm_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,GRABHOLD_T1,GRABHOLD_T2 + + SLEEPK 20 + + jruc #lp + +#****************************************************************************** + +shn_hdhold_combo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi shn_combo_punch_anim,A14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_SHAWN,KICK_T1,KICK_T2 + + SLEEPK 20 + + jruc #lp + +#***************************************************************************** + + SUBR shawn_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi shn_stand4_anim,a0 + calla change_anim1a + + movi shn_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE TAUNT_PID,do_taunt + PULL a10 + + rets + +#p1 + movi shn_stand2_anim,a0 + calla change_anim1a + + movi shn_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* SHAWNS CONTROL CODE +* +* a13 = * shawn process + + SUBR move_shawn + + + movi shn_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 + REFLONG 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 + .long mode_puppet2 ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .long mode_choking ;25 + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(I_WILL_DIE),a0 + jrz #nope + move *a13(IMMOBILIZE_TIME),a0 + jrnz #nope +;Player has died amidst a combo... +;Knock me down. + movi shn_fall_back_anim,a0 + calla change_anim1a + +;Zero health bar + movi -10,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + SETMODE DEAD + + clr a0 + move a0,*a13(I_WILL_DIE) + + rets + +#nope +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + + ;if closest is a zombie, skip pin section. + calla get_opp_process + move *a0(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #opp_not_dead + + ;all opponents are dead. Check for pins/raisearms + + ;if we're attached to someone, don't interrupt it. + move *a13(ATTACH_PROC),a1,L + jrz #no_attch + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jreq #no_pin_yet +#no_attch + + ;if a teammate has pinned, raise yer arm. + calla ck_teammate_pin + jrc #raisearm + + ;nobody has pinned. if we're outside or all our opponents are + ; outside, do a raisearm. + calla raisearm_check + jrc #raisearm + + ;we're inside with a pinnable opponent. any button pins. + move *a13(BUT_VAL_CUR),a0 + jrz #no_pin_yet + + ;we have a press -- make sure opponent is on the ground + calla can_pin + jrnc #opp_notgnd + + ;opponent is on the ground. pin him. + FACE24 shn,pin_anim + calla change_anim1a + + ;set the 'I did a pin' flag. + move *a13(STATUS_FLAGS),a14 + ori M_DID_PIN,a14 + move a14,*a13(STATUS_FLAGS) + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#raisearm + FACE24 shn,raise_arm_anim + calla change_anim1a + calla set_raisearm_bit + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#too_far_to_pin +#opp_notgnd +#opp_not_dead +#no_pin_yet + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #immobilized + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 ;maybe have to action tables? + jrz #nblk ;1 for down transitions + callr #block ;& 1 for current buttons + jrc #nblk + clr a0 + move a0,*a13(ATTACK_TYPE) + rets +#nblk + move *a13(BUT_VAL_CUR),a0 + andi 011111b,a0 + cmpi PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,a0 + jrz #punchkick + + move *a13(BUT_VAL_DOWN),a0 + 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(STICK_VAL_CUR),a0 + move a0,*a13(MOVE_DIR) + calla climb_turnbuckle + jrnc #no_climb + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets + +#immobilized + clr a14 + move a14,*a13(MOVE_DIR) +#no_climb + calla execute_walk + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 62 95 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing normal punch +* +* onturnbkl < 60 60 punch +* onturnbkl > normal punch +* +* puppet|inair normal punch + + + JJXM_INIT + JJXM NORMAL, 50, 45,#punch_hdbutt,#punch_punch + JJXM BLOCK, 50, 45,#punch_hdbutt,#punch_punch + JJXM DIZZY, 50, 45,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 160,140,#punch_lbdrop,#punch_punch + JJXM RUNNING, 50, 45,#punch_hdbutt,#punch_punch + JJXM BOUNCING, 50, 45,#punch_hdbutt,#punch_punch + JJXM ONTURNBKL, #punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM PUPPET, 50, 45,#punch_hdbutt,#punch_punch + JJXM PUPPET2, 50, 45,#punch_hdbutt,#punch_punch + JJXM INAIR, 50, 45,#punch_hdbutt,#punch_punch + JJXM ATTACHED, 50, 45,#punch_hdbutt,#punch_punch + JJXM DEAD, 160,140,#punch_lbdrop,#punch_punch + JJXM OPPOVERHEAD, 50, 45,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 50, 45,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 50, 45,#punch_hdbutt,#punch_punch + JJXM MASTER, 50, 45,#punch_hdbutt,#punch_punch + JJXM SLAVE, 50, 45,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 50, 45,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 50, 45,#punch_hdbutt,#punch_punch + JJXM CHOKEHOLD, 50, 45,#punch_hdbutt,#punch_punch + JJXM INAIR2, 50, 45,#punch_hdbutt,#punch_punch + JJXM_END + +***** +#punch_punch +std_punch + + FACE24 shn,punch_anim + calla change_anim1a + + WRSND W_SHAWN,PUNCH_T1,PUNCH_T2 + + rets + +***** +#punch_hdbutt + jruc #hdbutt + +***** +#punch_lbdrop + + FACE24 shn,falling_punch_anim + calla change_anim1a + + WRSND W_SHAWN,LBOWDROP_T1,LBOWDROP_T2 + rets + +************ +#block ;2 +std_block + move @blocking_off,a0 + jrnz #no_blocking + + RND_AWARD a13,BLOCKS_AWD + + movi shn_4_block_anim,a0 + calla change_anim1a + + calla BLOCK_WOOSH + + clr a0 + move a0,*a13(BLOCK_TIME) + clrc + rets + +#no_blocking + setc + rets + + +************ +#super_punch ;4 + + JJXM_INIT + JJXM NORMAL, 85, 45,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 85, 45,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 85, 45,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 85, 45,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 160,140,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, 85, 45,#spunch_special,#spunch_slap ;1 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 85, 45,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 85, 45,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 160,140,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 85, 45,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 85, 45,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 85, 45,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 85, 45,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 85, 45,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 85, 45,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, 85, 45,#spunch_special,#spunch_slap ;17 + JJXM CHOKEHOLD, 85, 45,#spunch_special,#spunch_slap ;16 + JJXM PUPPET, 85, 45,#spunch_special,#spunch_slap ;20 + JJXM PUPPET2, 85, 45,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 85, 45,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +***** +#graboh +#spunch_slap + + FACE24 shn,slap_anim + calla change_anim1a + + WRSND W_SHAWN,SPUNCH_T1,SPUNCH_T2 + + rets + +***** +#spunch_special + move *a13(CLOSEST_XDIST),a1 + cmpi 64,a1 + jrgt std_punch + + FACE24 shn,pummel_anim + calla change_anim1 + WRSND W_SHAWN,HDBUTT_T1,HDBUTT_T2 + + rets + +#hdbutt + + FACE24 shn,butt_anim + calla change_anim1 + + WRSND W_SHAWN,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#spunch_lbowdrop + +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a2 + cmpi MODE_DEAD,a2 + jrz #no + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 shn,hair_pickup_anim + calla change_anim1 + WRSND W_SHAWN,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no FACE24 shn,falling_punch_anim + calla change_anim1a + WRSND W_SHAWN,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 50 knee +* > normal kick +* +* onground < 120 120 stomp +* onground > normal kick +* +* running | +* bouncing big boot +* +* onturnbkl | normal kick +* climbturnbkl normal kick +* +* puppet|inair normal kick +* + + + JJXM_INIT + JJXM NORMAL, 60, 50,#kick_knee,#kick_kick + JJXM DIZZY, 60, 50,#kick_knee,#kick_kick + JJXM BLOCK, 60, 50,#kick_knee,#kick_kick + JJXM ONGROUND, 160,140,#kick_stomp,#kick_kick + JJXM RUNNING, #kick_kick + JJXM BOUNCING, #kick_kick + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM PUPPET, #kick_kick + JJXM PUPPET2, #kick_kick + JJXM INAIR, #kick_kick + JJXM ATTACHED, 60, 50,#kick_knee,#kick_kick + JJXM DEAD, 160,140,#kick_stomp,#kick_kick + JJXM OPPOVERHEAD, 60, 50,#kick_knee,#kick_kick + JJXM WAITANIM, 60, 50,#kick_knee,#kick_kick + JJXM GRAPPLE, 60, 50,#kick_knee,#kick_kick + JJXM MASTER, 60, 50,#kick_knee,#kick_kick + JJXM SLAVE, 60, 50,#kick_knee,#kick_kick + JJXM HEADHOLD, 60, 50,#kick_knee,#kick_kick + JJXM HEADHELD, 60, 50,#kick_knee,#kick_kick + JJXM CHOKEHOLD, 60, 50,#kick_knee,#kick_kick + JJXM INAIR2, #kick_TB + JJXM_END + +***** +#kick_TB + .ref shn_spinkick_TB_anim + movi shn_spinkick_TB_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + + +***** +#kick_kick +std_kick + + FACE24 shn,kick_anim + calla change_anim1a + + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +***** +#kick_knee +std_knee + + FACE24 shn,knee_anim + jruc #knee_set +std_knee_4 + movi shn_4_knee_anim,a0 +#knee_set + calla change_anim1a + + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp + + FACE24 shn,stomp_anim + calla change_anim1a + + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal speed kick or spin kick (depends on stick) +* +* onground < 120 120 stomp +* onground > normal kick +* +* running | +* bouncing flying kick +* +* most others as MODE_NORMAL +* + + JJXM_INIT + JJXM NORMAL, #skick_kick + JJXM DIZZY, #skick_kick + JJXM BLOCK, #skick_kick + JJXM ONGROUND, 160,140,#skick_stomp,std_kick + JJXM RUNNING, #skick_frank + JJXM BOUNCING, #skick_frank + JJXM ONTURNBKL, #skick_kick + JJXM CLIMBTURNBKL, #skick_kick + JJXM PUPPET, #skick_kick + JJXM PUPPET2, #skick_kick + JJXM INAIR, #skick_kick + JJXM ATTACHED, #skick_kick + JJXM DEAD, 160,140,#skick_stomp,std_kick + JJXM OPPOVERHEAD, #skick_kick + JJXM WAITANIM, #skick_kick + JJXM GRAPPLE, #skick_kick + JJXM MASTER, #skick_kick + JJXM SLAVE, #skick_kick + JJXM HEADHOLD, #skick_kick + JJXM HEADHELD, #skick_kick + JJXM CHOKEHOLD, #skick_kick + JJXM INAIR2, #kick_TB + JJXM_END + +***** +#skick_frank + +;don't do it if opponent is behind you + calla ck_ignore + jrc #skick_kick + + movi shn_fstein_anim,a0 + calla change_anim1a + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +***** +#skick_kick + + movi shn_spinkick_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,FLYKICK_T1,FLYKICK_T2 + rets + +***** +#skick_stomp + + FACE24 shn,stomp_anim + calla change_anim1a + + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +***** +#skick_flykick +attack_flykick + + calla ck_ignore + jrc #z + + ;don't do it if the bad guy is on the ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jreq #rets + cmpi MODE_DEAD,a0 + jreq #rets + + SETMODE INAIR + + movi shn_flying_kick_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,FLYKICK_T1,FLYKICK_T2 +#rets + rets + +***** +#skick_super_speedkick + + movi shn_super_speedkick_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ SHN_XRUN +#ZDRIFT_VAL equ SHN_ZDRIFT + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move @hyper_speed_on,a14 + sll a14,a0 + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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(STICK_VAL_CUR),a0 + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#no_interrupt + + move *a13(STICK_VAL_CUR),a0 + 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 + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 +#out_of_control + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z ;0 + + rets + + +************ +#punch ;1 +#punchkick ;9 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal|dizzy flying kick +* +* onground running stomp +* +* running | +* bouncing flying kick +* +* onturnbkl flying kick +* +* puppet|inair flying kick +* + + JJXM_INIT + JJXM NORMAL, #punch_rets + JJXM DIZZY, #punch_rets + JJXM BLOCK, #punch_rets + JJXM ONGROUND, attack_runstomp + JJXM RUNNING, #punch_rets + JJXM BOUNCING, #punch_rets + JJXM ONTURNBKL, #punch_rets + JJXM CLIMBTURNBKL, #punch_rets + JJXM PUPPET, #punch_rets + JJXM PUPPET2, #punch_rets + JJXM INAIR, #punch_rets + JJXM ATTACHED, #punch_rets + JJXM DEAD, attack_runstomp + JJXM OPPOVERHEAD, #punch_rets + JJXM WAITANIM, #punch_rets + JJXM GRAPPLE, #punch_rets + JJXM MASTER, #punch_rets + JJXM SLAVE, #punch_rets + JJXM HEADHOLD, #punch_rets + JJXM HEADHELD, #punch_rets + JJXM CHOKEHOLD, #punch_rets + JJXM INAIR2, #punch_rets + JJXM_END + +#punch_rets + rets + + +************ +#block ;2 + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + + +************ +#super_punch ;4 +#graboh ;20 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal|dizzy flying kick +* +* onground running stomp +* +* running | +* bouncing flying kick +* +* onturnbkl flying kick +* +* puppet|inair flying kick +* + + JJXM_INIT + JJXM NORMAL, #punch_flipslam + JJXM DIZZY, #punch_flipslam + JJXM BLOCK, #punch_flipslam + JJXM ONGROUND, 176,176,attack_runstomp,#spunch_rets + JJXM RUNNING, #punch_flipslam + JJXM BOUNCING, #punch_flipslam + JJXM ONTURNBKL, #spunch_rets + JJXM CLIMBTURNBKL, #spunch_rets + JJXM PUPPET, #spunch_rets + JJXM PUPPET2, #spunch_rets + JJXM INAIR, #spunch_rets + JJXM ATTACHED, #spunch_rets + JJXM DEAD, 176,176,attack_runstomp,#spunch_rets + JJXM OPPOVERHEAD, #spunch_rets + JJXM WAITANIM, #spunch_rets + JJXM GRAPPLE, #spunch_rets + JJXM MASTER, #spunch_rets + JJXM SLAVE, #spunch_rets + JJXM HEADHOLD, #spunch_rets + JJXM HEADHELD, #spunch_rets + JJXM CHOKEHOLD, #spunch_rets + JJXM INAIR2, #spunch_rets + JJXM_END + +#spunch_rets + rets + + +************ +#punch_flipslam + + ;don't do it if you're running away from your opponent. + move *a13(FACING_DIR),a0 + move *a13(NEW_FACING_DIR),a1 + and a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + jrz #z + + movi shn_flipslam_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,HIPTOSS_T1,PUNCH_T2 + rets + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal|dizzy flying kick +* +* onground running stomp +* +* running | +* bouncing flying kick +* +* onturnbkl flying kick +* +* puppet|inair flying kick +* + + JJXM_INIT + JJXM NORMAL, attack_flykick + JJXM DIZZY, attack_flykick + JJXM BLOCK, attack_flykick + JJXM ONGROUND, #kick_runstomp + JJXM RUNNING, attack_flykick + JJXM BOUNCING, attack_flykick + JJXM ONTURNBKL, attack_flykick + JJXM CLIMBTURNBKL, attack_flykick + JJXM PUPPET, attack_flykick + JJXM PUPPET2, attack_flykick + JJXM INAIR, attack_flykick + JJXM ATTACHED, attack_flykick + JJXM DEAD, #kick_runstomp + JJXM OPPOVERHEAD, attack_flykick + JJXM WAITANIM, attack_flykick + JJXM GRAPPLE, attack_flykick + JJXM MASTER, attack_flykick + JJXM SLAVE, attack_flykick + JJXM HEADHOLD, attack_flykick + JJXM HEADHELD, attack_flykick + JJXM CHOKEHOLD, attack_flykick + JJXM INAIR2, attack_flykick + JJXM_END + + +***** +#kick_runstomp +attack_runstomp + + calla ck_ignore + jrc #kick_rets + + movi shn_run_stomp_anim,a0 + calla change_anim1a +#kick_rets + rets + + + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal|dizzy frankensteiner +* +* onground flying kick +* +* running frankensteiner +* +* bouncing flying kick +* +* onturnbkl flying kick +* +* inair|puppet flying kick +* + + JJXM_INIT + JJXM NORMAL, #attack_fstein + JJXM DIZZY, #attack_fstein + JJXM BLOCK, #attack_fstein + JJXM ONGROUND, attack_runstomp + JJXM RUNNING, #attack_fstein + JJXM BOUNCING, #attack_fstein + JJXM ONTURNBKL, attack_flykick + JJXM CLIMBTURNBKL, attack_flykick + JJXM INAIR, attack_flykick + JJXM PUPPET, attack_flykick + JJXM PUPPET2, attack_flykick + JJXM ATTACHED, #attack_fstein + JJXM DEAD, attack_runstomp + JJXM OPPOVERHEAD, #attack_fstein + JJXM WAITANIM, #attack_fstein + JJXM GRAPPLE, #attack_fstein + JJXM MASTER, #attack_fstein + JJXM SLAVE, #attack_fstein + JJXM HEADHOLD, #attack_fstein + JJXM HEADHELD, #attack_fstein + JJXM CHOKEHOLD, #attack_fstein + JJXM INAIR2, #attack_fstein + JJXM_END + + +***** +#attack_fstein + +;don't do it if opponent is behind you + calla ck_ignore + jrc #rets + + movi shn_fstein_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_SHAWN,GRABHOLD_T1,GRABHOLD_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 + +#***************************************************************************** + +mode_onground ;4 + + 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 shn_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 + +; ;check unint +; move *a13(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #no_interrupt + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #no_climbdown + + movi shn_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + +#no_interrupt + rets + +#no_climbdown + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +; .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 +#punchkick ;5 +#graboh ;20 + + SETMODE INAIR + + movi shn_belbow_anim,a0 + calla change_anim1a + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +************ +#kick ;8 +#super_kick ;16 + + SETMODE INAIR + + movi shn_bstomp_anim,a0 + calla change_anim1a + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + + +#***************************************************************************** +* blocking + +mode_block ;7 + + move *a13(BLOCK_TIME),a0 + inc a0 + move a0,*a13(BLOCK_TIME) + cmpi 160,a0 + jrlt #no + + calla get_opp_plyrmode + cmpi MODE_BLOCK,a0 + jrnz #no + move *a13(CLOSEST_XDIST),a0 + cmpi 61h,a0 + jrge #no + cmpi 45,a0 + jrlt #no + move *a13(CLOSEST_ZDIST),a0 + cmpi 30,a0 + jrlt #punchblock + +#no + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #no_interrupt + + ;press. if block isn't down, let mode_normal handle it + move a0,a2 ;save a0 from ...val_down + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 + jrz #set_mode_normal + move a2,a0 ;restore a0 from ...val_down + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#set_mode_normal + SETMODE NORMAL + jruc mode_normal + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + + SETMODE NORMAL + + movi shn_4_push_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* shawn with zero health + +mode_dizzy ;8 + +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +; calla clear_damage_log +; +; clr a0 +; move a0,*a13(STARS_FLAG) +; +; SETMODE NORMAL +; +;#still_going + 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 + + calla master_keep_attached ;keep slave attached to me + + rets + +#***************************************************************************** + +mode_slave ;15 + rets + +#***************************************************************************** + +mode_headhold ;16 + +;Bozo power move + .ref bozo_check + calla bozo_check + jrnc #fail + + WRSND W_SHAWN,KICK_T1,KICK_T2 + + movi shn_fstein_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi shn_sliding_kicktoss_anim,a0 +#tag calla change_anim1a + + rets + +#fail + move *a13(WHOIHIT),a0,L + move *a0(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #exit + +; move *a13(ATTACH_PROC),a10,L +; jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + move *a13(OBJ_ZPOS),a14,L + subi [6,0],a14 + move a14,*a13(OBJ_ZPOS),L + + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + + +************ +#block +#graboh +#z ;0 + rets + +************ + +#punch ;1 + CALLA FIND_AND_KILL_ENDLESS +;If stick is toward opponent, then do quick punches +; move *a13(STICK_VAL_CUR),a0 +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrnz std_knee_4 + + jruc std_knee_4 + +; movi shn_break_arm_anim,a0 +; calla change_anim1a +; +; WRSND W_SHAWN,GRABHOLD_T1,GRABHOLD_T2 +; +; rets + +************ +#super_punch ;4 +;If stick is toward opponent, then do quick punches + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #z + + CALLA FIND_AND_KILL_ENDLESS + .ref shn_rpt_hdbutts2_anim + movi shn_rpt_hdbutts2_anim,a0 + calla change_anim1a + + WRSND W_SHAWN,GRABHOLD_T1,GRABHOLD_T2 + + rets + +************ +#punchkick +#kick + CALLA FIND_AND_KILL_ENDLESS + move *a13(STICK_REL_CUR),a0 + btst MOVE_TOWARD_BIT,a0 + jrz std_knee_4 + + ;speed kick - speed kick - speed kick - spin kick + movi shn_speed_spinkick_anim,a0 + calla change_anim1a + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + +************ +#super_kick ;16 +;If stick is toward opponent, then do quick knees + CALLA FIND_AND_KILL_ENDLESS + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #z + + ;knee - knee - knee - frankensteiner + movi shn_knee_fstein_anim,a0 + calla change_anim1a + WRSND W_SHAWN,KICK_T1,KICK_T2 + rets + + +#***************************************************************************** +mode_puppet2 ;17 + +; ;check for the head-grab breaker +; move *a13(BUT_VAL_DOWN),a0 +; btst PLAYER_KICK_BIT,a0 +; jrz #out +; +; ;check the time - must do it within 20 ticks +; move *a13(HEAD_GRAB_TIME),a14 +; move @PCNT,a0 +; sub a14,a0 +; cmpi KICK_OUT,a0 +; jrgt #out +; +; move *a13(PLYR_TYPE),a14 +; cmpi PTYPE_DRONE,a14 +; jrz #out +; +; ;okay, waste 'im. - detach, setmode, immobilize, and launch the knee +; move *a13(ATTACH_PROC),a0,L +; clr a14 +; move a14,*a13(ATTACH_PROC),L +; move a14,*a0(ATTACH_PROC),L +; movi 15,a14 +; move a14,*a0(IMMOBILIZE_TIME) +; SETMODE NORMAL +; jruc std_knee_4 +; +;#out + rets + +#***************************************************************************** +mode_headheld ;19 + + move *a13(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + janz mode_choking + +;Bozo reversal + calla bozo_check + jrnc #fail + + PUSH a8 + move a13,a8 + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + PULL a8 + + WRSND W_SHAWN,KICK_T1,KICK_T2 + + movi shn_fstein_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi shn_sliding_kicktoss_anim,a0 +#tag calla change_anim1a + + rets +#fail + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + movi shn_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +;#VEL equ 30000h ;38000h ;30000h +;#DVEL equ 21f0eh ;27978h ;21f0eh +;#VEL equ 38000h ;38000h ;30000h +;#DVEL equ 30000h ;27978h ;21f0eh +#VEL equ 3a000h ;38000h ;30000h +#DVEL equ 31000h ;27978h ;21f0eh + + + SUBR shn_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 shn_rotate_anims_table +; old = up right + .long shn_stand2_anim ;new = up right + .long shn_2_to_4_turn_anim ; = down right + .long shn_2_to_6_turn_anim ; = down left + .long shn_2_to_8_turn_anim ; = up left + +; old = down right + .long shn_4_to_2_turn_anim ;new = up right + .long shn_stand4_anim ; = down right + .long shn_4_to_6_turn_anim ; = down left + .long shn_4_to_8_turn_anim ; = up left + +; old = down left + .long shn_6_to_2_turn_anim ;new = up right + .long shn_6_to_4_turn_anim ; = down right + .long shn_stand6_anim ; = down left + .long shn_6_to_8_turn_anim ; = up left + +; old = up left + .long shn_8_to_2_turn_anim ;new = up right + .long shn_8_to_4_turn_anim ; = down right + .long shn_8_to_6_turn_anim ; = down left + .long shn_stand8_anim ; = up left + + + SUBR shn_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long shn_walk1_f2_anim ;1 (UP) + .long shn_walk1_f2_anim ;2 (UP_RIGHT) + .long shn_walk1_f4_anim ;3 (RIGHT) + .long shn_walk1_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk1_f4_anim ;5 (DOWN) + .long shn_walk1_f4_anim ;6 (DOWN_LEFT) + .long shn_walk1_f2_anim ;7 (LEFT) + .long shn_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk2_f2_anim ;2 (UP_RIGHT) + .long shn_walk2_f2_anim ;3 (RIGHT) + .long shn_walk2_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk8_f4_anim ;5 (DOWN) + .long shn_walk8_f4_anim ;6 (DOWN_LEFT) + .long shn_walk4_f2_anim ;7 (LEFT) + .long shn_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk2_f2_anim ;2 (UP_RIGHT) + .long shn_walk2_f2_anim ;3 (RIGHT) + .long shn_walk4_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk4_f4_anim ;5 (DOWN) + .long shn_walk8_f4_anim ;6 (DOWN_LEFT) + .long shn_walk6_f2_anim ;7 (LEFT) + .long shn_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk8_f2_anim ;2 (UP_RIGHT) + .long shn_walk4_f4_anim ;3 (RIGHT) + .long shn_walk4_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk2_f4_anim ;5 (DOWN) + .long shn_walk6_f4_anim ;6 (DOWN_LEFT) + .long shn_walk2_f2_anim ;7 (LEFT) + .long shn_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long shn_walk5_f2_anim ;1 (UP) + .long shn_walk5_f2_anim ;2 (UP_RIGHT) + .long shn_walk5_f4_anim ;3 (RIGHT) + .long shn_walk5_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk5_f4_anim ;5 (DOWN) + .long shn_walk5_f4_anim ;6 (DOWN_LEFT) + .long shn_walk5_f2_anim ;7 (LEFT) + .long shn_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk6_f2_anim ;2 (UP_RIGHT) + .long shn_walk2_f2_anim ;3 (RIGHT) + .long shn_walk6_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk2_f4_anim ;5 (DOWN) + .long shn_walk4_f4_anim ;6 (DOWN_LEFT) + .long shn_walk2_f2_anim ;7 (LEFT) + .long shn_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk6_f2_anim ;2 (UP_RIGHT) + .long shn_walk6_f2_anim ;3 (RIGHT) + .long shn_walk8_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk4_f4_anim ;5 (DOWN) + .long shn_walk4_f4_anim ;6 (DOWN_LEFT) + .long shn_walk2_f2_anim ;7 (LEFT) + .long shn_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long shn_walk2_f2_anim ;1 (UP) + .long shn_walk4_f2_anim ;2 (UP_RIGHT) + .long shn_walk6_f2_anim ;3 (RIGHT) + .long shn_walk8_f4_anim ;4 (DOWN_RIGHT) + .long shn_walk6_f4_anim ;5 (DOWN) + .long shn_walk2_f4_anim ;6 (DOWN_LEFT) + .long shn_walk2_f2_anim ;7 (LEFT) + .long shn_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR shn_torso_anims_table +; old = up right + .long shn_torso2_anim ;new = up right + .long shn_2_to_4_turn2_anim ; = down right + .long shn_2_to_6_turn2_anim ; = down left + .long shn_2_to_8_turn2_anim ; = up left + +; old = down right + .long shn_4_to_2_turn2_anim ;new = up right + .long shn_torso4_anim ; = down right + .long shn_4_to_6_turn2_anim ; = down left + .long shn_4_to_8_turn2_anim ; = up left + +; old = down left + .long shn_6_to_2_turn2_anim ;new = up right + .long shn_6_to_4_turn2_anim ; = down right + .long shn_torso6_anim ; = down left + .long shn_6_to_8_turn2_anim ; = up left + +; old = up left + .long shn_8_to_2_turn2_anim ;new = up right + .long shn_8_to_4_turn2_anim ; = down right + .long shn_8_to_6_turn2_anim ; = down left + .long shn_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SHAWN.BAT b/SHAWN.BAT new file mode 100755 index 0000000..5481497 --- /dev/null +++ b/SHAWN.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld shawn shn_hit shn_kik shn_msc shn_pnc shn_wlk shn_mjt shn_rjr shn_jms shn_jake +@copy shawn.ld1 + shawn.ld2 shawn.lod +@move shawn.h ..\shawnimg.h +@move shawn.seq .. + diff --git a/SHAWNIMG.ASM b/SHAWNIMG.ASM new file mode 100755 index 0000000..1fd1e29 --- /dev/null +++ b/SHAWNIMG.ASM @@ -0,0 +1,20 @@ + .FILE "shawnimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include shawnimg.tbl + .include shawnimg.h + + +****************************************************************************** + + .even + .include "shawn.seq" + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SHAWNIMG.H b/SHAWNIMG.H new file mode 100755 index 0000000..13abf25 --- /dev/null +++ b/SHAWNIMG.H @@ -0,0 +1,95 @@ + .global S2AE3A + .global S2AH3A + .global S2AM3A + .global S4AE3B + .global S4AH3D + .global S4AM3A + .global S4BK3A + .global S4LB3A + .global S3CP3B + .global S3GU2A + .global S3GU4A + .global S3UC3X + .global S3FD3X + .global S3OS3X + .global S3OS3Z + .global S2KM3A + .global S2MP2A + .global S2NM3A + .global S3DC3A + .global S4KM3C + .global S4MP4C + .global S4NM3A + .global S3FL3X + .global S3ZI3A + .global S4SK3Y + .global S4KI3Q + .global S4MP4D + .global S4GF3B + .global S3RL3A + .global S3MF3B + .global S2CT2A + .global S4SB4B + .global S4BF3A + .global S4TI4B + .global S4FG3A + .global S3BH3A + .global S3SG3A + .global S4PT3B + .global S4KI3I + .global S4MK3A + .global S2BC3B + .global S4BC3A + .global S4PS3A + .global S4PU3D + .global S2PJ3C + .global S2PU3C + .global S2PJ3D + .global S4PJ3F + .global S4GS3C + .global S2TW2B + .global S4TW4C + .global S2WL1A + .global S2WL2B + .global S2WL8A + .global S4WL2A + .global S4WL4C + .global S4WL5B + .global S1TT5Z + .global S1TR5Z + .global S3BO3A + .global S2ST2C + .global S4ST4C + .global S3RN3A + .global S3ZS3A + .global S4CD3A + .global S4POGO + .global S3PN5C + .global S4SW4A + .global S3BR3Z + .global S3PM4B + .global S3MS3Z + .global S3CF3Z + .global S4LD4A + .global S4CO4A + .global S4GH3A + .global S3GP3X + .global S4YR3A + .global S3BF3A + .global S4BZ4A + .global S4GH3C + .global S3RS3A + .global S3DD3B + .global S3UC3Z + .global S3TN3X + .global S3SK3A + .global S3KT3A + .global S3KF3C + .global S3GA3A + .global S3AB3A + .global S4PJ3E + .global S4TD3F + .global S3RR3Z + .global S4WA4B + .global S4WB4B + .global S3CR3A diff --git a/SHAWNST.H b/SHAWNST.H new file mode 100755 index 0000000..25b8692 --- /dev/null +++ b/SHAWNST.H @@ -0,0 +1,284 @@ +; +; Story lines for story 1 of shawn +; +; Compressed string "SHAWN STRUTTED AROUND THE RING" +shawn_story1_line1 + .byte 074h,02ah,0e2h,06fh,040h,0d7h,0b3h,05dh + .byte 0d7h,066h,019h,088h,033h,06ch,0bfh,065h + .byte 050h,0a7h,066h,030h,0abh,02fh,00ah,000h + .even + +; Compressed string "ARROGANTLY FOR SEVERAL MINUTES," +shawn_story1_line2 + .byte 0e2h,03ch,0c3h,0a8h,0f8h,0d6h,0adh,01eh + .byte 09ch,0f0h,01ch,0d0h,0e6h,06dh,0ceh,062h + .byte 01bh,0b8h,0eah,06bh,0d7h,026h,0ddh,000h + .even + +; Compressed string "FLEXING AND CHEWING HIS GUM WITH" +shawn_story1_line3 + .byte 067h,06bh,0e6h,0eah,08bh,006h,0e2h,05bh + .byte 006h,064h,06ah,0e2h,0eah,08bh,006h,0a9h + .byte 04ah,007h,0a8h,0edh,006h,0b8h,05ah,0a7h + .byte 000h + .even + +; Compressed string "AN OBNOXIOUS SMIRK ON HIS FACE. " +shawn_story1_line4 + .byte 0e2h,01bh,0c0h,0e3h,00bh,0e7h,02ah,06ch + .byte 0d3h,001h,0edh,0aah,033h,01bh,0c0h,06fh + .byte 090h,0aah,074h,070h,08ah,0a4h,0f9h,004h + .byte 000h + .even + +; Compressed string "HE HAD ALWAYS BRAGGED THAT HE" +shawn_story1_line5 + .byte 0a9h,019h,0a4h,062h,019h,088h,02dh,02eh + .byte 0eah,074h,030h,0ceh,022h,08ah,09ah,065h + .byte 050h,0a7h,062h,01dh,0a4h,026h,000h + .even + +; Compressed string "WAS THE GREATEST THING TO GRACE" +shawn_story1_line6 + .byte 0b8h,048h,007h,075h,06ah,006h,0e8h,06ch + .byte 08ah,0b5h,049h,0d7h,041h,09dh,0aah,02fh + .byte 01ah,0d4h,070h,080h,0ceh,022h,069h,002h + .even + +; Compressed string "THE WORLD WRESTLING FEDERATION," +shawn_story1_line7 + .byte 075h,06ah,006h,038h,03ch,0b7h,065h,080h + .byte 0cfh,026h,05dh,0b7h,0eah,08bh,006h,0a7h + .byte 059h,09ah,0b3h,058h,0abh,0f0h,0dbh,000h + .even + +; Compressed string "AND NOW HE HAS FINALLY PROVEN" +shawn_story1_line8 + .byte 0e2h,05bh,006h,02fh,08ch,007h,0a9h,019h + .byte 0a4h,022h,01dh,09ch,0eah,02bh,0b6h,0adh + .byte 01eh,0c4h,033h,07ch,09bh,02fh,000h + .even + +; Compressed string "IT. THE LADIES IN THE AUDIENCE" +shawn_story1_line9 + .byte 06ah,0fdh,004h,041h,09dh,09ah,041h,02bh + .byte 096h,0aah,049h,007h,0eah,01bh,0d4h,0a9h + .byte 019h,088h,076h,0a9h,09ah,02fh,069h,002h + .even + +; Compressed string "REACHED OUT THEIR ARMS TO HIM" +shawn_story1_line10 + .byte 0b3h,029h,092h,0a9h,059h,006h,0b0h,05dh + .byte 007h,075h,06ah,0aah,073h,020h,0ceh,02eh + .byte 01dh,0d4h,070h,090h,0aah,02eh,000h + .even + +; Compressed string "AND SCREAMED HIS NAME. WITH" +shawn_story1_line11 + .byte 0e2h,05bh,006h,034h,039h,09bh,0a2h,06bh + .byte 096h,041h,0aah,0d2h,0c1h,02bh,0bah,0e6h + .byte 013h,004h,0b8h,05ah,0a7h,000h + .even + +; Compressed string "THAT, SHAWN THOUGHT HE'D BE CUTE" +shawn_story1_line12 + .byte 075h,02ah,0d6h,04dh,040h,0a7h,022h,0feh + .byte 006h,075h,00ah,0dbh,068h,05ah,007h,0a9h + .byte 089h,094h,0c1h,068h,006h,0a4h,05dh,09bh + .byte 000h + .even + +; Compressed string "BY TEASING THEM WITH A LITTLE" +shawn_story1_line13 + .byte 0a3h,01eh,0d4h,0a6h,048h,0abh,02fh,01ah + .byte 0d4h,0a9h,0e9h,006h,0b8h,05ah,0a7h,081h + .byte 018h,0b4h,06ah,05dh,0b7h,026h,000h + .even + +; Compressed string "HIP ACTION. THE LADIES, IN AN" +shawn_story1_line14 + .byte 0a9h,01ah,007h,022h,059h,0abh,0f0h,0fbh + .byte 004h,075h,06ah,006h,0adh,058h,0aah,026h + .byte 0ddh,004h,0eah,01bh,088h,02fh,000h + .even + +; Compressed string "UNCONTROLLABLE LUST-CRAZED" +shawn_story1_line15 + .byte 0f6h,04bh,0c2h,06fh,03dh,0c3h,06dh,02bh + .byte 08eh,0adh,019h,0b4h,036h,05dh,03bh,0e4h + .byte 02ch,0eeh,066h,009h,000h + .even + +; Compressed string "FRENZY, STAMPEDED THE RING LIKE" +shawn_story1_line16 + .byte 0e7h,06ch,0beh,0bbh,0deh,004h,074h,02dh + .byte 0bah,0b1h,059h,09ah,065h,050h,0a7h,066h + .byte 030h,0abh,02fh,01ah,0b4h,02ah,06bh,002h + .even + +; Compressed string "CATTLE, TRYING TO GET HOLD OF" +shawn_story1_line17 + .byte 0a4h,058h,0d7h,0adh,0d9h,004h,0f5h,0ach + .byte 0abh,02fh,01ah,0d4h,070h,080h,09ah,075h + .byte 090h,0c2h,06dh,019h,0c0h,027h,000h + .even + +; Compressed string "HIM. SHAWN SCRAMBLED TO ESCAPE" +shawn_story1_line18 + .byte 0a9h,0eah,03eh,041h,040h,0a7h,022h,0feh + .byte 006h,034h,039h,08bh,0eeh,0d8h,09ah,065h + .byte 050h,0c3h,081h,049h,093h,062h,06ch,002h + .even + +; Compressed string "THE CLUTCHES OF THE HORDE, BUT" +shawn_story1_line19 + .byte 075h,06ah,006h,064h,06bh,0d7h,064h,06ah + .byte 0d2h,001h,07ch,006h,075h,06ah,006h,029h + .byte 03ch,097h,066h,013h,08ch,076h,00dh,000h + .even + +; Compressed string "TO NO AVAIL. THEY QUICKLY" +shawn_story1_line20 + .byte 035h,01ch,0bch,070h,020h,0deh,0a2h,0dah + .byte 03eh,041h,050h,0a7h,0a6h,01eh,0c8h,0b6h + .byte 04ah,0b2h,0adh,00eh,000h + .even + +; Compressed string "CORNERED HIM AND PROCEEDED TO" +shawn_story1_line21 + .byte 024h,03ch,0bfh,0e6h,06ch,096h,041h,0aah + .byte 0bah,081h,0f8h,096h,041h,03ch,0c3h,0a4h + .byte 069h,096h,066h,019h,0d4h,030h,000h + .even + +; Compressed string "RAVAGE HIM, MERCILESSLY. WHEN" +shawn_story1_line22 + .byte 0b3h,078h,08bh,0a8h,019h,0a4h,0aah,0dbh + .byte 004h,0aeh,039h,093h,06ah,06bh,0d2h,074h + .byte 0abh,03fh,041h,080h,0a7h,0e6h,00bh,000h + .even + +; Compressed string "THEY WERE THROUGH, SHAWN WAS" +shawn_story1_line23 + .byte 075h,06ah,0eah,001h,06eh,0ceh,066h,050h + .byte 0a7h,033h,06ch,0a3h,069h,013h,0d0h,0a9h + .byte 088h,0bfh,001h,02eh,0d2h,000h + .even + +; Compressed string "LEFT LYING MOTIONLESS, SANS HIS" +shawn_story1_line24 + .byte 0adh,079h,0d6h,041h,0abh,0abh,02fh,01ah + .byte 0b8h,070h,0adh,0c2h,06fh,06bh,0d2h,074h + .byte 013h,0d0h,0e2h,04bh,007h,0a9h,04ah,003h + .even + +; Compressed string "CLOTHING AND SOME HAIR, YET WITH" +shawn_story1_line25 + .byte 064h,00bh,0d7h,0a9h,0fah,0a2h,081h,0f8h + .byte 096h,001h,00dh,0bbh,066h,090h,08ah,0eah + .byte 0dch,004h,0bah,059h,007h,0b8h,05ah,0a7h + .byte 000h + .even + +; Compressed string "A BIG OL' GRIN STAMPED ON HIS" +shawn_story1_line26 + .byte 062h,010h,08ch,02ah,01ah,0c0h,02dh,012h + .byte 0a0h,0b3h,0fah,006h,074h,02dh,0bah,0b1h + .byte 059h,006h,0f0h,01bh,0a4h,02ah,00dh,000h + .even + +; Compressed string "FACE. HE LOVED THE ATTENTION," +shawn_story1_line27 + .byte 0a7h,048h,09ah,04fh,010h,0a4h,066h,0d0h + .byte 0c2h,0b7h,059h,006h,075h,06ah,006h,062h + .byte 05dh,09bh,06fh,0adh,0c2h,06fh,003h,000h + .even + +; Compressed string "AND MORE SO, HE LOVED THE WOMEN." +shawn_story1_line28 + .byte 0e2h,05bh,006h,02eh,03ch,09bh,001h,00dh + .byte 037h,041h,06ah,006h,02dh,07ch,09bh,065h + .byte 050h,0a7h,066h,080h,0c3h,0aeh,0f9h,03eh + .byte 000h + .even + +; Compressed string "HIS CRAVING FOR ATTENTION AND" +shawn_story1_line29 + .byte 0a9h,04ah,007h,0e4h,02ch,0deh,0eah,08bh + .byte 006h,027h,03ch,007h,062h,05dh,09bh,06fh + .byte 0adh,0c2h,06fh,020h,0beh,025h,000h + .even + +; Compressed string "MULTIPLE WOMEN LED HIM TO LEAVE" +shawn_story1_line30 + .byte 0aeh,0ddh,0d6h,06ah,0dch,09ah,001h,00eh + .byte 0bbh,0e6h,01bh,0b4h,066h,019h,0a4h,0aah + .byte 01bh,0d4h,070h,010h,0b4h,0a6h,078h,09bh + .byte 000h + .even + +; Compressed string "WRESTLING AND BECOME A" +shawn_story1_line31 + .byte 0f8h,06ch,0d2h,075h,0abh,0beh,068h,020h + .byte 0beh,065h,030h,09ah,024h,0ech,09ah,081h + .byte 008h,000h + .even + +; Compressed string "POLITICIAN, WHERE HE COULD GET" +shawn_story1_line32 + .byte 031h,0dch,0aah,0b5h,04ah,0aah,0e2h,0dbh + .byte 004h,078h,06ah,0ceh,066h,090h,09ah,001h + .byte 009h,0dbh,06dh,019h,0a0h,066h,00dh,000h + .even + +; Compressed string "HIS FILL OF BOTH." +shawn_story1_line33 + .byte 0a9h,04ah,007h,0a7h,0dah,0b6h,001h,07ch + .byte 006h,023h,05ch,0a7h,00fh,000h + .even + +; +; Story line table for Story 1 of shawn +; +shawn_story_tbl1 + .long shawn_story1_line1 + .long shawn_story1_line2 + .long shawn_story1_line3 + .long shawn_story1_line4 + .long shawn_story1_line5 + .long shawn_story1_line6 + .long shawn_story1_line7 + .long shawn_story1_line8 + .long shawn_story1_line9 + .long shawn_story1_line10 + .long shawn_story1_line11 + .long shawn_story1_line12 + .long shawn_story1_line13 + .long shawn_story1_line14 + .long shawn_story1_line15 + .long shawn_story1_line16 + .long shawn_story1_line17 + .long shawn_story1_line18 + .long shawn_story1_line19 + .long shawn_story1_line20 + .long shawn_story1_line21 + .long shawn_story1_line22 + .long shawn_story1_line23 + .long shawn_story1_line24 + .long shawn_story1_line25 + .long shawn_story1_line26 + .long shawn_story1_line27 + .long shawn_story1_line28 + .long shawn_story1_line29 + .long shawn_story1_line30 + .long shawn_story1_line31 + .long shawn_story1_line32 + .long shawn_story1_line33 + .long 0 + +; +; Table of stories for shawn +; +shawn_stories + .long shawn_story_tbl1 + diff --git a/SHNSEQ1.ASM b/SHNSEQ1.ASM new file mode 100755 index 0000000..263c7bf --- /dev/null +++ b/SHNSEQ1.ASM @@ -0,0 +1,603 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/26/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "shnseq1.asm" + .title "walks, runs, stances, and turns" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "shawnimg.h" + + .include "doinkimg.h" ;temp!!! + .include "bamimg.h" ;temp!!! + .include "takerimg.h" ;temp!!! + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref SMALL_RUN + .REF MAYBE_BOUNCE_ROPE + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* STANDS + + SUBR shn_zip_anim + WL 60*60,B2ST2A+FR1 + .word 0 ;<--?????? + .word ANI_END + + + SUBR shn_stand2_anim + SUBR shn_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 4,S2ST2C+FR1 + WL 4,S2ST2C+FR3 + WL 4,S2ST2C+FR5 + WL 4,S2ST2C+FR7 + WL 4,S2ST2C+FR9 + WL 4,S2ST2C+FR11 + WL 4,S2ST2C+FR13 + WL 4,S2ST2C+FR15 + WL 4,S2ST2C+FR17 + .word ANI_REPEAT + + + SUBR shn_stand4_anim + SUBR shn_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 4,S4ST4C+FR1 + WL 4,S4ST4C+FR3 + WL 4,S4ST4C+FR5 + WL 4,S4ST4C+FR7 + WL 4,S4ST4C+FR9 + WL 4,S4ST4C+FR11 + WL 4,S4ST4C+FR13 + WL 4,S4ST4C+FR15 + WL 4,S4ST4C+FR17 + WL 4,S4ST4C+FR19 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR shn_torso2_anim + SUBR shn_torso8_anim + + WL 6,S2TW2B+FR1 + WL 6,S2TW2B+FR2 + WL 6,S2TW2B+FR3 + WL 6,S2TW2B+FR4 + WL 6,S2TW2B+FR3 + WL 6,S2TW2B+FR2 + .word ANI_REPEAT + + + SUBR shn_torso4_anim + SUBR shn_torso6_anim + + WL 6,S4TW4C+FR1 + WL 6,S4TW4C+FR2 + WL 6,S4TW4C+FR3 + WL 6,S4TW4C+FR4 + WL 6,S4TW4C+FR3 + WL 6,S4TW4C+FR2 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR shn_walk1_f2_anim + WL 2,S2WL1A+FR1 + WL 2,S2WL1A+FR2 + WL 2,S2WL1A+FR3 + WL 2,S2WL1A+FR4 + WL 2,S2WL1A+FR5 + WL 2,S2WL1A+FR6 + WL 2,S2WL1A+FR7 + WL 2,S2WL1A+FR8 + WL 2,S2WL1A+FR9 + WL 2,S2WL1A+FR10 + WL 2,S2WL1A+FR11 + WL 2,S2WL1A+FR12 + WL 2,S2WL1A+FR13 + WL 2,S2WL1A+FR14 + WL 2,S2WL1A+FR15 + WL 2,S2WL1A+FR16 + WL 2,S2WL1A+FR17 + .word ANI_REPEAT + + SUBR shn_walk2_f2_anim + WL 2,S2WL2B+FR1 + WL 2,S2WL2B+FR2 + WL 2,S2WL2B+FR3 + WL 2,S2WL2B+FR4 + WL 2,S2WL2B+FR5 + WL 2,S2WL2B+FR6 + WL 2,S2WL2B+FR7 + WL 2,S2WL2B+FR8 + WL 2,S2WL2B+FR9 + WL 2,S2WL2B+FR10 + WL 2,S2WL2B+FR11 + WL 2,S2WL2B+FR12 + WL 2,S2WL2B+FR13 + WL 2,S2WL2B+FR14 + WL 2,S2WL2B+FR15 + WL 2,S2WL2B+FR16 + WL 2,S2WL2B+FR17 + .word ANI_REPEAT + + SUBR shn_walk4_f2_anim + WL 2,S2WL8A+FR1 + WL 2,S2WL8A+FR2 + WL 2,S2WL8A+FR3 + WL 2,S2WL8A+FR4 + WL 2,S2WL8A+FR5 + WL 2,S2WL8A+FR6 + WL 2,S2WL8A+FR7 + WL 2,S2WL8A+FR8 + WL 2,S2WL8A+FR9 + WL 2,S2WL8A+FR10 + WL 2,S2WL8A+FR11 + WL 2,S2WL8A+FR12 + WL 2,S2WL8A+FR13 + WL 2,S2WL8A+FR14 + WL 2,S2WL8A+FR15 + WL 2,S2WL8A+FR16 + .word ANI_REPEAT + + SUBR shn_walk5_f2_anim + WL 2,S2WL1A+FR17 + WL 2,S2WL1A+FR16 + WL 2,S2WL1A+FR15 + WL 2,S2WL1A+FR14 + WL 2,S2WL1A+FR13 + WL 2,S2WL1A+FR12 + WL 2,S2WL1A+FR11 + WL 2,S2WL1A+FR10 + WL 2,S2WL1A+FR9 + WL 2,S2WL1A+FR8 + WL 2,S2WL1A+FR7 + WL 2,S2WL1A+FR6 + WL 2,S2WL1A+FR5 + WL 2,S2WL1A+FR4 + WL 2,S2WL1A+FR3 + WL 2,S2WL1A+FR2 + WL 2,S2WL1A+FR1 + .word ANI_REPEAT + + SUBR shn_walk6_f2_anim + WL 2,S2WL2B+FR17 + WL 2,S2WL2B+FR16 + WL 2,S2WL2B+FR15 + WL 2,S2WL2B+FR14 + WL 2,S2WL2B+FR13 + WL 2,S2WL2B+FR12 + WL 2,S2WL2B+FR11 + WL 2,S2WL2B+FR10 + WL 2,S2WL2B+FR9 + WL 2,S2WL2B+FR8 + WL 2,S2WL2B+FR7 + WL 2,S2WL2B+FR6 + WL 2,S2WL2B+FR5 + WL 2,S2WL2B+FR4 + WL 2,S2WL2B+FR3 + WL 2,S2WL2B+FR2 + WL 2,S2WL2B+FR1 + .word ANI_REPEAT + + + SUBR shn_walk8_f2_anim + WL 2,S2WL8A+FR16 + WL 2,S2WL8A+FR15 + WL 2,S2WL8A+FR14 + WL 2,S2WL8A+FR13 + WL 2,S2WL8A+FR12 + WL 2,S2WL8A+FR11 + WL 2,S2WL8A+FR10 + WL 2,S2WL8A+FR9 + WL 2,S2WL8A+FR8 + WL 2,S2WL8A+FR7 + WL 2,S2WL8A+FR6 + WL 2,S2WL8A+FR5 + WL 2,S2WL8A+FR4 + WL 2,S2WL8A+FR3 + WL 2,S2WL8A+FR2 + WL 2,S2WL8A+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR shn_walk1_f4_anim + WL 2,S4WL5B+FR16 + WL 2,S4WL5B+FR15 + WL 2,S4WL5B+FR14 + WL 2,S4WL5B+FR13 + WL 2,S4WL5B+FR12 + WL 2,S4WL5B+FR11 + WL 2,S4WL5B+FR10 + WL 2,S4WL5B+FR9 + WL 2,S4WL5B+FR8 + WL 2,S4WL5B+FR7 + WL 2,S4WL5B+FR6 + WL 2,S4WL5B+FR5 + WL 2,S4WL5B+FR4 + WL 2,S4WL5B+FR3 + WL 2,S4WL5B+FR2 + WL 2,S4WL5B+FR1 + .word ANI_REPEAT + + SUBR shn_walk2_f4_anim + WL 2,S4WL2A+FR1 + WL 2,S4WL2A+FR2 + WL 2,S4WL2A+FR3 + WL 2,S4WL2A+FR4 + WL 2,S4WL2A+FR5 + WL 2,S4WL2A+FR6 + WL 2,S4WL2A+FR7 + WL 2,S4WL2A+FR8 + WL 2,S4WL2A+FR9 + WL 2,S4WL2A+FR10 + WL 2,S4WL2A+FR11 + WL 2,S4WL2A+FR12 + WL 2,S4WL2A+FR13 + WL 2,S4WL2A+FR14 + WL 2,S4WL2A+FR15 + WL 2,S4WL2A+FR16 + .word ANI_REPEAT + + SUBR shn_walk4_f4_anim + WL 2,S4WL4C+FR1 + WL 2,S4WL4C+FR2 + WL 2,S4WL4C+FR3 + WL 2,S4WL4C+FR4 + WL 2,S4WL4C+FR5 + WL 2,S4WL4C+FR6 + WL 2,S4WL4C+FR7 + WL 2,S4WL4C+FR8 + WL 2,S4WL4C+FR9 + WL 2,S4WL4C+FR10 + WL 2,S4WL4C+FR11 + WL 2,S4WL4C+FR12 + WL 2,S4WL4C+FR13 + WL 2,S4WL4C+FR14 + WL 2,S4WL4C+FR15 + WL 2,S4WL4C+FR16 + WL 2,S4WL4C+FR17 + WL 2,S4WL4C+FR18 + .word ANI_REPEAT + + SUBR shn_walk5_f4_anim + WL 2,S4WL5B+FR1 + WL 2,S4WL5B+FR2 + WL 2,S4WL5B+FR3 + WL 2,S4WL5B+FR4 + WL 2,S4WL5B+FR5 + WL 2,S4WL5B+FR6 + WL 2,S4WL5B+FR7 + WL 2,S4WL5B+FR8 + WL 2,S4WL5B+FR9 + WL 2,S4WL5B+FR10 + WL 2,S4WL5B+FR11 + WL 2,S4WL5B+FR12 + WL 2,S4WL5B+FR13 + WL 2,S4WL5B+FR14 + WL 2,S4WL5B+FR15 + WL 2,S4WL5B+FR16 + .word ANI_REPEAT + + SUBR shn_walk6_f4_anim + WL 2,S4WL2A+FR16 + WL 2,S4WL2A+FR15 + WL 2,S4WL2A+FR14 + WL 2,S4WL2A+FR13 + WL 2,S4WL2A+FR12 + WL 2,S4WL2A+FR11 + WL 2,S4WL2A+FR10 + WL 2,S4WL2A+FR9 + WL 2,S4WL2A+FR8 + WL 2,S4WL2A+FR7 + WL 2,S4WL2A+FR6 + WL 2,S4WL2A+FR5 + WL 2,S4WL2A+FR4 + WL 2,S4WL2A+FR3 + WL 2,S4WL2A+FR2 + WL 2,S4WL2A+FR1 + .word ANI_REPEAT + + SUBR shn_walk8_f4_anim + WL 2,S4WL4C+FR18 + WL 2,S4WL4C+FR17 + WL 2,S4WL4C+FR16 + WL 2,S4WL4C+FR15 + WL 2,S4WL4C+FR14 + WL 2,S4WL4C+FR13 + WL 2,S4WL4C+FR12 + WL 2,S4WL4C+FR11 + WL 2,S4WL4C+FR10 + WL 2,S4WL4C+FR9 + WL 2,S4WL4C+FR8 + WL 2,S4WL4C+FR7 + WL 2,S4WL4C+FR6 + WL 2,S4WL4C+FR5 + WL 2,S4WL4C+FR4 + WL 2,S4WL4C+FR3 + WL 2,S4WL4C+FR2 + WL 2,S4WL4C+FR1 + .word ANI_REPEAT + +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR shn_2_to_4_turn_anim + SUBR shn_8_to_6_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TT5Z+FR2 ;2.5 + WL 3,S1TT5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_2_turn_anim + SUBR shn_6_to_8_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TT5Z+FR3 ;3.5 + WL 3,S1TT5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_6_turn_anim + SUBR shn_6_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 3,S1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_2_to_8_turn_anim + SUBR shn_8_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 3,S1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_8_turn_anim + SUBR shn_6_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TT5Z+FR3 ;3.5 + WL 3,S1TT5Z+FR2 ;2.5 + WL 3,S1TT5Z+FR1 ;1.5 + .word ANI_XFLIP + WL 3,S1TT5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_2_to_6_turn_anim + SUBR shn_8_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TT5Z+FR2 ;2.5 + WL 3,S1TT5Z+FR3 ;3.5 + WL 3,S1TT5Z+FR4 ;4.5 + .word ANI_XFLIP + WL 3,S1TT5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR shn_2_to_4_turn2_anim + SUBR shn_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TR5Z+FR2 ;2.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,S1TR5Z+FR3 ;3.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_2_turn2_anim + SUBR shn_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TR5Z+FR3 ;3.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,S1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_6_turn2_anim + SUBR shn_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,S1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_2_to_8_turn2_anim + SUBR shn_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TR5Z+FR1 ;1.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,S1TR5Z+FR1 ;1.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_to_8_turn2_anim + SUBR shn_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,S1TR5Z+FR4 ;4.5 + WL 3,S1TR5Z+FR3 ;3.5 + .word ANI_SETFACING + WL 3,S1TR5Z+FR2 ;2.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_2_to_6_turn2_anim + SUBR shn_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,S1TR5Z+FR2 ;2.5 + .word ANI_SETFACING + WL 3,S1TR5Z+FR3 ;3.5 + WL 3,S1TR5Z+FR4 ;4.5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 3,S1TR5Z+FR4 ;4.5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR shn_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR shn_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + +#lp1 + WL 3,S3RN3A+FR1 + WL 2,S3RN3A+FR2 + WL 3,S3RN3A+FR3 + WL 2,S3RN3A+FR4 + WL 3,S3RN3A+FR5 +#run2 + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + WL 2,S3RN3A+FR6 + WL ANI_CODE,SMALL_RUN +; .word ANI_SOUND,run_snd + WL 3,S3RN3A+FR7 + WL 2,S3RN3A+FR8 + WL 3,S3RN3A+FR9 + WL 2,S3RN3A+FR10 + WL 3,S3RN3A+FR11 + WL 2,S3RN3A+FR12 + WL 3,S3RN3A+FR13 + WL ANI_CODE,SMALL_RUN +; .word ANI_SOUND,run_snd + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR shn_bounce_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .ref fix_bnc_flip + WL ANI_CODE,fix_bnc_flip + WL ANI_CODE,MAYBE_BOUNCE_ROPE + + WL ANI_CODE,SMALL_RUN +; .word ANI_SOUND,run_snd + + WL 3,S3BO3A+FR2 + .word ANI_BOUNCEROPE,0 + WL 1,S3BO3A+FR2 + + WL 3,S3BO3A+FR3 + .word ANI_BOUNCEROPE,1 + WL 1,S3BO3A+FR3 + + WL 3,S3BO3A+FR4 + .word ANI_BOUNCEROPE,2 + WL 1,S3BO3A+FR4 + + WL 3,S3BO3A+FR5 + .word ANI_BOUNCEROPE,3 + WL 1,S3BO3A+FR5 + + .word ANI_ZEROVELS + + WL 3,S3BO3A+FR6 + .word ANI_BOUNCEROPE,4 + WL 1,S3BO3A+FR6 + WL 4,S3BO3A+FR7 + + WL 3,S3BO3A+FR8 + .word ANI_BOUNCEROPE,0 + WL 1,S3BO3A+FR8 + + .word ANI_OFFSET,-10,0,0 + + WL 3,S3BO3A+FR9 + .word ANI_BOUNCEROPE,-1 + WL 1,S3BO3A+FR9 + + WL ANI_CODE,SMALL_RUN + + .word ANI_OFFSET,-30,0,0 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SHNSEQ2.ASM b/SHNSEQ2.ASM new file mode 100755 index 0000000..542fdc8 --- /dev/null +++ b/SHNSEQ2.ASM @@ -0,0 +1,2788 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/26/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "shnseq2.asm" + .title "routine punches and kicks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "shawnimg.h" + .include "display.equ" + .include "ring.equ" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;BAM BAM + .ref B4YR3A,B3RN3A + + ;DOINK + .ref D4YR3B,D3RN3B + + ;BRET + .ref H4YR3A,H3RN3A + + ;LEX + .ref L4YR3B,L3RN3B + + ;RAZOR + .ref R4YR3A,R3RN3D + + ;SHAWN + .ref shn_faceup_getup_anim,shn_faceup_getup2_anim + .ref S4YR3A,S3RN3A + + ;TAKER + .ref U4YR3B,U3RN3A + + ;YOKO + .ref Y4YR3A,Y3RN3C + + ;MISC + .ref HIT_THE_MAT,CALL_MISSES,get_opp_process,get_leap + .ref set_target_offsets,start_run_anim,SMALL_BOUNCE + .ref start_run_flung,ckzpos,choose_2or4 + .ref no_bk_xvel,win_announce,grnd_hit,SET_DIR_FACE + .ref DO_CROWD_CHEER,check_xvel,tgt_ground,set_tbukl_confine + .ref free_toss_check,setup_freetoss + .ref hit_nearest,set_tbukl_airmode,shn_2_hiptoss_anim + .ref check_raisearm_bit + .ref shn_combo_sliding_kicktoss_anim,DO_COMBO_MESS + .ref shn_combo_spinkick_anim,shn_4combo_bslam_anim + .ref CALL_ANI_AVERAGE_MOVE + .REF MOVE_NAME_ANNC + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #2 NORMAL PUNCH + + SUBR shn_2_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2PU3C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2PU3C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2PU3C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,3 + WL 1,S2PU3C+FR2 + .word ANI_ATTACK_ON, AMODE_PUNCH,52,91,28,8 + WL 3,S2PU3C+FR3 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 3,S2PU3C+FR3 +#no_hit + WL 1,S2PU3C+FR3 + + ;one more tick if blocked, three more if hit, none if missed. + .word ANI_HMBWAIT,3,0,1 + + WL 2,S2PU3C+FR4 + WL 2,S2PU3C+FR5 + WL 2,S2PU3C+FR7 + WL 2,S2PU3C+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 NORMAL PUNCH + + SUBR shn_4_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4PU3D+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4PU3D+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4PU3D+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,3 + WL 1,S4PU3D+FR3 + .word ANI_ATTACK_ON, AMODE_PUNCH,49,85,26,10 + WL 3,S4PU3D+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 3,S4PU3D+FR4 + +#no_hit + WL 1,S4PU3D+FR4 + + .word ANI_HMBWAIT,3,0,1 + + WL 2,S4PU3D+FR5 + WL 2,S4PU3D+FR6 + WL 2,S4PU3D+FR7 + WL 2,S4PU3D+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +************* +* +* COMBO PUNCH + + SUBR shn_combo_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .WORD ANI_CLEAR_COMBO + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,15 + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times + + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + + WL 2,S4PU3D+FR2 + .word ANI_INC_COMBO +#rpt + .word ANI_CLR_BUTCOUNT + .word ANI_ATTACK_ON, AMODE_PUNCH2,21,40,62,34 ;mode,x,y,w,h + WL 1,S4MK3A+FR1 + WLW ANI_SET_XVEL,0000h,AM_FACE_REL + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missedc + .word ANI_INC_COMBO + WLLL ANI_SETOPPVELS,0,8000h,0h ;x,y,z vels + WL 1,S4MK3A+FR1 + WL 2,S4MK3A+FR2 + WL 2,S4MK3A+FR3 + .word ANI_ATTACK_ON, AMODE_PUNCH2,21,40,62,34 ;mode,x,y,w,h + WL 1,S4MK3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missedc + .word ANI_INC_COMBO + WLLL ANI_SETOPPVELS,0,8000h,0h ;x,y,z vels + WL 1,S4MK3A+FR4 + WL 2,S4MK3A+FR5 + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker + + WL 2,S4MK3A+FR7 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NO_FLYING + WL ANI_CHANGEANIM,shn_combo_flying_kick_anim + +#NO_FLYING + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NO_SPIN + WL ANI_CHANGEANIM,shn_combo_knee_anim + +#NO_SPIN + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#EXIT_PUNCH + WL ANI_CHANGEANIM,shn_combo_spinkick_anim + +#EXIT_PUNCH + + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedc + WL 3,S4MK3A+FR6 + WL 3,S4MK3A+FR6 +#missedbc + WL 3,S4MK3A+FR7 + + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,S4MK3A+FR7 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 PUSH + + SUBR shn_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_SETFLAG,M_PUSH + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,S4PS3A+FR1 + WL 3,S4PS3A+FR2 + WL 3,S4PS3A+FR3 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ATTACK_ON, AMODE_PUSH,33,85,44,17 ;mode,x,y,w,h + WL 3,S4PS3A+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-70000h,#no_hit ;range,vel,addr + WL 15,S4PS3A+FR4 +#no_hit + WL 3,S4PS3A+FR4 + + WL ANI_IFSTATUS,#hit +;If missed on push, hold a little longer + WL 5,S4PS3A+FR4 +#hit + WL 4,S4PS3A+FR2 + WL 4,S4PS3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR shn_2_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2BC3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2BC3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2BC3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 3,S2BC3B+FR4 + WL 3,S2BC3B+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT,40,81,10,12 ;mode,x,y,w,h + WL 3,S2BC3B+FR6 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,S2BC3B+FR6 +#no_hit + + .word ANI_HMBWAIT,3,0,1 + WL 3,S2BC3B+FR7 + WL 3,S2BC3B+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEADBUTT + + SUBR shn_4_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4BC3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 3,S4BC3A+FR4 + WL 3,S4BC3A+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT,32,91,12,15 ;mode,x,y,w,h + WL 3,S4BC3A+FR6 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,S4BC3A+FR6 +#no_hit + + .word ANI_HMBWAIT,3,0,1 + WL 3,S4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* COMBO HEADBUTT + + SUBR shn_combo_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SET_RPTCOUNT,4 ;5 times + WLW ANI_SET_XVEL,28000h,AM_FACE_REL +#butt_loop + .word ANI_CLR_BUTCOUNT + WL 2,S4BC3A+FR2 + .word ANI_STARTATTACK,AT_HDBUTT,6 + WL 2,S4BC3A+FR4 + WL 2,S4BC3A+FR5 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,32,71,42,35 ;mode,x,y,w,h + WL 1,S4BC3A+FR6 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#no_hit_c + .word ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,18000h,0h ;x,y,z vels + + WL ANI_SET_YVEL,18000h + WL 2,S4BC3A+FR6 + WLW ANI_SET_XVEL,09000h,AM_FACE_REL + WL 3,S4BC3A+FR6 + WL 2,S4BC3A+FR8 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#butt_loop + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_BODYSLAM + WL ANI_CHANGEANIM,shn_4combo_bslam_anim + +#NO_BODYSLAM + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NO_SLIDING + WL ANI_CHANGEANIM,shn_combo_flying_kick_anim + +#NO_SLIDING + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#MISSED_IT + WL ANI_CHANGEANIM,shn_combo_sliding_kicktoss_anim + +#MISSED_IT + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#no_hit_c + + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,S4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK + + SUBR shn_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KICK,5 + WL 1,S2KM3A+FR2 + WL 2,S2KM3A+FR3 + WL 1,S2KM3A+FR4 + + WL ANI_SET_YVEL,20000h + + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 3,S2KM3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + .word ANI_HMBWAIT,4,0,2 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,S2KM3A+FR5 + WL 3,S2KM3A+FR6 + WL 2,S2KM3A+FR7 + WL 3,S2KM3A+FR8 + WL 2,S2KM3A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KICK + + SUBR shn_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4KM3C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4KM3C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4KM3C+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KICK,4 + WL 1,S4KM3C+FR3 + WL 2,S4KM3C+FR4 + WL ANI_SET_YVEL,20000h + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 3,S4KM3C+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + .word ANI_HMBWAIT,4,0,2 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,S4KM3C+FR6 + WL 3,S4KM3C+FR7 + WL 2,S4KM3C+FR8 + WL 3,S4KM3C+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 Jump kick + + SUBR shn_4_jump_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,12 + WL 3,S4KI3I+FR1 + WL 3,S4KI3I+FR2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 10,999,95,50,90000h,TGT_HEAD,70,100,10 + WL 4,S4KI3I+FR3 + WL 3,S4KI3I+FR4 + WL 3,S4KI3I+FR5 + .word ANI_ATTACK_ON, AMODE_FLYKICK,20,69,46,53 ;mode,x,y,w,h + WL 3,S4KI3I+FR6 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slide + WL ANI_SET_YVEL,30000h +#no_slide + + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFBLOCKED,#missedb + + .word ANI_SHAKER,35 + + WL 3,S4KI3I+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_IFBLOCKED,#missedb + WL ANI_IFNOTSTATUS,#missed + .word ANI_DRAW_NAME,17 + WL ANI_GOTO,#hit + +#missedb +; WL 3,S4KI3I+FR7 + ;fall through +#missed + WL 3,S4KI3I+FR7 + ;fall through +#hit + WL 3,S4KI3I+FR8 + WL 3,S4KI3I+FR9 + .word ANI_OFFSET,-10,3,0 + WL 3,S4KM3C+FR8 + WL 3,S4KM3C+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +************** +* +* COMBO KICK + + SUBR shn_combo_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .WORD ANI_CLEAR_COMBO + + WL 4,S4KM3C+FR2 + .word ANI_STARTATTACK,AT_KICK,4 + WL 3,S4KM3C+FR3 + WL 3,S4KM3C+FR4 + WL ANI_SET_YVEL,20000h + .word ANI_CLR_STATUS + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 3,S4KM3C+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed_c + WLLL ANI_SETOPPVELS,0,10000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO + WL 3,S4KM3C+FR5 + + .word ANI_SET_RPTCOUNT,3 ;5 times +#kick_loop + .word ANI_CLR_BUTCOUNT + + WL 2,S4KM3C+FR2 + .word ANI_STARTATTACK,AT_KICK,4 + WL 1,S4KM3C+FR3 + WL 2,S4KM3C+FR4 + WL ANI_SET_YVEL,20000h + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 1,S4KM3C+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed_c +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,10000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO + WL 2,S4KM3C+FR5 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#kick_loop + + WLW ANI_SET_XVEL,18000h,AM_FACE_REL + .word ANI_CLR_BUTCOUNT + + WL 2,S4KM3C+FR2 + .word ANI_STARTATTACK,AT_KICK,4 + WL 1,S4KM3C+FR3 + WL 2,S4KM3C+FR4 + WL ANI_SET_YVEL,20000h + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 1,S4KM3C+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed_c +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,10000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO + WL 2,S4KM3C+FR5 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_SLAMS + WL ANI_CHANGEANIM,shn_4combo_bslam_anim + +#NO_SLAMS + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NO_BUTTS + WL ANI_CHANGEANIM,shn_combo_flying_kick_anim + +#NO_BUTTS + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#missed_c + WL ANI_CHANGEANIM,shn_combo_butt_anim + +#missed_c + + .word ANI_DETACH + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 4-1,S4KM3C+FR6 + WL 4-1,S4KM3C+FR7 + WL 4-1,S4KM3C+FR8 + WL 3,S4KM3C+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +;#************ +;* +;* #3 BACKFLIP KICK +; +;;FIX!!! MAKE THIS A COOL MOVE 1/12/95 +; +; SUBR shn_backflip_kick_anim +; +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +; .word ANI_STARTATTACK,AT_KICK,12 +; WL 3,S3KF3B+FR1 +; WL 3,S3KF3B+FR2 +; WL 1,S3KF3B+FR3 +; WLW ANI_SET_XVEL,-20000h,AM_FACE_REL +; WL ANI_SET_YVEL,5c000h +; WL 2,S3KF3B+FR3 +; .word ANI_OFFSET,-24,4,0 +; WL 3,S3KF3B+FR4 +; .word ANI_ATTACK_ON,AMODE_SHNBFKIK,17,40,47,62 +; WL 3,S3KF3B+FR5 +; .word ANI_ATTACK_OFF +; WL 3,S3KF3B+FR6 +; WL 3,S3KF3B+FR7 +; WL 3,S3KF3B+FR8 +; WL 3,S3KF3B+FR9 +; WL 3,S3KF3B+FR10 +; .word ANI_WAITHITGND +; .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 +; .word ANI_ZEROVELS +; WL 3,S3KF3B+FR11 +; WL 3,S3KF3B+FR12 +; .word ANI_FACEDOWN +; +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR shn_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2MP2A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2MP2A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2MP2A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_STOMP,10 + + ;if we're not going to hit, do a LEAPAT + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,0,0,-30,5,5,40 + WL 1,S2MP2A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_SET_YVEL,30000h + + WL ANI_IFSTATUS,#no_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,160,140,90000h,TGT_USER,28,0,-50 + .word ANI_STARTATTACK,AT_STOMP,12 + WL ANI_CODE,no_bk_xvel + +#no_leapat + WL 3,S2MP2A+FR3 + WL 3,S2MP2A+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,26 + + .word ANI_ATTACK_ON_Z,AMODE_STOMP,16,-8,-50,27,33,60 + WL 3,S2MP2A+FR5 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFSTATUS,#no_miss + + WL ANI_CODE,CALL_MISSES + +#no_miss + WL 4,S2MP2A+FR6 + WL 4,S2MP2A+FR7 + WL 4,S2MP2A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + + SUBR shn_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4MP4C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4MP4C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4MP4C+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + ;if we're not going to hit, do a LEAPAT + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,0,0,-10,5,5,60 + WL 1,S4MP4C+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFSTATUS,#no_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 12,999,112,96,90000h,TGT_USER,12,0,45 + LEAPATOPP 12,999,160,140,90000h,TGT_USER,12,0,45 + .word ANI_STARTATTACK,AT_STOMP,12 + WL ANI_CODE,no_bk_xvel + +#no_leapat + .word ANI_STARTATTACK,AT_STOMP,6 + WL 3,S4MP4C+FR3 + WL 3,S4MP4C+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,26 + + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-3,-13,-10,44,35,60 + WL 3,S4MP4C+FR5 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFSTATUS,#no_miss + + WL ANI_CODE,CALL_MISSES + +#no_miss + WL 4,S4MP4C+FR6 + WL 4,S4MP4C+FR7 + WL 4,S4MP4C+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* TURNBUCKLE STOMP + + SUBR shn_bstomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + .word ANI_SET_WRESTLER_XFLIP + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL 4,S4MP4C+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 35,190,190,190,90000h,TGT_CHEST,30,6,40 + .word ANI_STARTATTACK,AT_LEAPING,35 +; .word ANI_SETPLYRMODE,MODE_INAIR2 + WL ANI_CODE,set_tbukl_airmode + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + + WL ANI_CODE,check_xvel + + WL 4,S4MP4C+FR3 + + ;attack box dimensions depends on opp mode + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-26,0,-10,82,40,70 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + WWL ANI_IFOPPMODE,MODE_DEAD,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-26,50,-10,82,40,70 + +#opp_onground + WL 12,S4MP4C+FR4 + WL ANI_CODE,set_tbukl_confine + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFSTATUS,#hit + + ;missed + WL ANI_CODE,CALL_MISSES +; WL ANI_CODE,tbukl_miss_damage + .word ANI_BOUNCE,4 + WL ANI_GOTO,#common + +#hit + ;hit. bounce off. + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WLW ANI_SET_XVEL,20000h,AM_FACE_REL + +#common + WL 2,S4MP4C+FR5 + WL 3,S4MP4C+FR6 + WL 4,S4MP4C+FR7 + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + + WL 4,S4MP4C+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNBUCKLE ELBOW DROP + +#yoff equ 33 + + SUBR shn_belbow_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + .word ANI_SET_WRESTLER_XFLIP + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL 3,S4PJ3E+FR4 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 31,190,190,190,90000h,TGT_CHEST,22,11+#yoff,50 + .word ANI_STARTATTACK,AT_LEAPING,31 +; .word ANI_SETPLYRMODE,MODE_INAIR2 + WL ANI_CODE,set_tbukl_airmode + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + +;Check x vel to make sure we aren't going to land on ropes! + WL ANI_CODE,check_xvel + + .word ANI_OFFSET,0,#yoff,0 + WL 3,S4PJ3E+FR5 + WL 3,S4PJ3E+FR6 + + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-26,0,-10,82,40,70 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + WWL ANI_IFOPPMODE,MODE_DEAD,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-26,40,-10,82,40,70 + +#opp_onground + WL 6,S4PJ3E+FR7 + WL ANI_CODE,set_tbukl_confine + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFSTATUS,#hit + + ;missed + WL ANI_CODE,CALL_MISSES +; WL ANI_CODE,tbukl_miss_damage + WL ANI_GOTO,#AVOID_HIT_CALL + +#hit + .word ANI_DRAW_NAME,18 + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE +#AVOID_HIT_CALL + .word ANI_BOUNCE,5 + .word ANI_SETPLYRMODE,MODE_INAIR + WL 2,S4PJ3E+FR8 + WL 4,S4PJ3E+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + + WL ANI_CHANGEANIM,shn_faceup_getup2_anim + +#***************************************************************************** +* +* #2 FALLING PUNCH + + SUBR shn_2_falling_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2PJ3D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2PJ3D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2PJ3D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 3,S2PJ3D+FR2 + WL 3,S2PJ3D+FR3 + .word ANI_OFFSET,0,64,0 + WL ANI_CODE,elbow_tgt2 + WL ANI_CODE,tgt_ground +; LEAPATOPP 20,999,112,96,90000h,TGT_USER,-10,0,-50 + LEAPATOPP 20,999,160,140,90000h,TGT_USER,-10,0,-50 + + .word ANI_STARTATTACK,AT_LBDROP,10 + WL 3,S2PJ3D+FR4 + WL 3,S2PJ3D+FR5 + + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,-24,0,-40,26,56,50 + WL 1,S2PJ3D+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFSTATUS,#hit2 + + ;missed + WL ANI_CODE,SMALL_BOUNCE + WL ANI_CODE,CALL_MISSES + WL ANI_GOTO,#cont2 + +#hit2 + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + WL ANI_CODE,HIT_THE_MAT +#cont2 + .word ANI_BOUNCE,4 + WL 4,S2PJ3D+FR7 + WL 4,S2PJ3D+FR8 + .word ANI_XFLIP + WL 1,S3RL3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + WL 4,S3RL3A+FR6 + + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#************************* +* +* #4 FALLING PUNCH + + SUBR shn_4_falling_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4PJ3F+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4PJ3F+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4PJ3F+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 3,S4PJ3F+FR2 + .word ANI_OFFSET,0,71,0 + WL ANI_CODE,#set_target + WL ANI_CODE,tgt_ground +; LEAPATOPP 20,999,72,48h,90000h,TGT_USER,19,0,30 + LEAPATOPP 20,999,160,140,90000h,TGT_USER,19,0,30 + WL ANI_CODE,#zero_x_4 + + WL 3,S4PJ3F+FR3 + WL 3,S4PJ3F+FR4 + WL 3,S4PJ3F+FR5 + + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,8,2,-10,23,56,50 + WL 1,S4PJ3F+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_IFSTATUS,#hit4 + + ;missed + WL ANI_CODE,SMALL_BOUNCE + WL ANI_CODE,CALL_MISSES + WL ANI_GOTO,#cont4 + +#hit4 + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + WL ANI_CODE,HIT_THE_MAT +#cont4 + .word ANI_BOUNCE,4 + WL 4,S4PJ3F+FR7 + WL 1,S4PJ3F+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + WL 4,S4PJ3F+FR8 + + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + +#set_target + + calla get_opp_process + move a0,a11 + + move *a13(CLOSEST_XDIST),a0 + cmpi >40,a0 + jrlt #drop + +;We are to side of fallen opponent, we must float toward +;his head or his knees + +;Take into account my flip as well as my opponents flip! + move *a13(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a11(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrnz #head + + movi TGT_KNEES,a0 + calla set_target_offsets + rets + +#head + movi TGT_HEAD,a0 + calla set_target_offsets + rets + +#drop +;Just drop straight down + movi TGT_CHEST,a0 + calla set_target_offsets + rets + + +;#zero_x_2 +; move *a13(CLOSEST_XDIST),a0 +; cmpi 32,a0 +; jrgt #ok2 ;Is he to the side? +; +;;Don't float if dropping straight down +; clr a0 +; move a0,*a13(OBJ_XVEL),L +;#ok2 rets + + + ;other scripts in this file use this one, thus the file-scope label +zero_x +#zero_x_4 + move *a13(CLOSEST_XDIST),a0 + cmpi 64,a0 + jrgt #ok4 ;Is he to the side? + +;Don't float if dropping straight down + clr a0 + move a0,*a13(OBJ_XVEL),L + +#ok4 rets + +#***************************************************************************** +* +* #2 KNEE + + SUBR shn_2_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2NM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2NM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S2NM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KNEE,6 + WL 3,S2NM3A+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 21,999,32,20,90000h,TGT_CHEST,50,80,0 + WL 3,S2NM3A+FR3 + + .word ANI_ATTACK_ON,AMODE_KNEE,36,28,38,49 ;mode,x,y,w,h + WL 3,S2NM3A+FR4 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WWL ANI_SLIDE_BACK,28h,-70000h,#no_hit + +#no_hit + WL 13,S2NM3A+FR5 + .word ANI_ZERO_XZVELS + WL 3,S2NM3A+FR6 + WL 3,S2NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KNEE + + SUBR shn_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,S4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KNEE,6 + WL 3,S4NM3A+FR3 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 21,999,32,20,90000h,TGT_CHEST,45,80,0 + + .word ANI_ATTACK_ON,AMODE_KNEE,11,22,58,60 ;mode,x,y,w,h + WL 3,S4NM3A+FR4 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WWL ANI_SLIDE_BACK,28h,-70000h,#no_hit + +#no_hit + WL 13,S4NM3A+FR4 + WL 3,S4NM3A+FR5 + WL 3,S4NM3A+FR6 + WL 3,S4NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR shn_combo_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 3,S4NM3A+FR2 + WL 3,S4NM3A+FR3 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 21,999,32,20,90000h,TGT_CHEST,45,78,0 + + .word ANI_ATTACK_ON,AMODE_BIGKNEE,11,22,58,60 ;mode,x,y,w,h + WL 3,S4NM3A+FR4 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,28h,-70000h,#no_hit_c + .WORD ANI_INC_COMBO + +#no_hit_c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 13,S4NM3A+FR4 + WL 3,S4NM3A+FR5 + WL 3,S4NM3A+FR6 + WL 3,S4NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR shn_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + WL 2,S1TT5Z+FR2 + WL 2,S1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR shn_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,8 + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,50,20,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + WL 5,S4GF3B+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET_NOFLAIL,33,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,S4GF3B+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,2,S4GF3B+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missedb + WL ANI_IFBLOCKED,#missedb + +;got him + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WL ANI_CODE,DO_GRUNT + .ref CALL_SETUP + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,S4GF3B+FR2,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,6,S4GF3B+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GF3B+FR4,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GF3B+FR5,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,S4GF3B+FR6,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,S4GF3B+FR7,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 6,S4GF3B+FR8 + WL 4,S4GF3B+FR10 + .word ANI_OFFSET,-4,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missedb + .ref fling_delay + WL ANI_CODE,fling_delay + WL ANI_IFNOTSTATUS,#missed + WL 25,S4GF3B+FR3 + +#missed + WL ANI_CODE,CALL_MISSES + WL 6,S4GF3B+FR3 + WL 3,S4GF3B+FR2 + WL 3,S4GF3B+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + SUBR DO_GRUNT + WRSNDX GRABFLING_T1,GRABFLING_T2 + RETS + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4YR3A+FR1,53,7,1 + LWWW H4YR3A+FR2,49,9,1 + LWWW H4YR3A+FR3,48,9,1 + LWWW H4YR3A+FR5,43,11,1 + LWWW H3RN3A+FR1,8,5,0 + LWWW H3RN3A+FR2,-25,8,0 + +#Razor + LWWW R4YR3A+FR1,32,17,0 + LWWW R4YR3A+FR2,21,20,0 + LWWW R4YR3A+FR3,1,11,0 + LWWW R4YR3A+FR4,4,15,0 + LWWW R3RN3D+FR10,1,16,0 + LWWW R3RN3D+FR11,-20,16,0 + +#Taker + LWWW U4YR3B+FR2,34,18,0 + LWWW U4YR3B+FR3,37,16,0 + LWWW U4YR3B+FR4,29,24,0 + LWWW U4YR3B+FR5,27,24,0 + LWWW U3RN3A+FR2,-11,15,0 + LWWW U3RN3A+FR2,-25,14,0 + +#Yokozuna + LWWW Y4YR3A+FR1,59,11,1 + LWWW Y4YR3A+FR4,37,13,1 + LWWW Y4YR3A+FR5,32,11,1 + LWWW Y4YR3A+FR7,5,3,1 + LWWW Y3RN3C+FR7,10,13,0 + LWWW Y3RN3C+FR8,-10,12,0 + +#Shawn + LWWW S4YR3A+FR2,38,5,1 + LWWW S4YR3A+FR3,52,-3,1 + LWWW S4YR3A+FR5,21,11,1 + LWWW S4YR3A+FR6,19,10,1 + LWWW S3RN3A+FR2,8,11,0 + LWWW S3RN3A+FR3,-20,11,0 + +#BamBam + LWWW B4YR3A+FR3,37,10,0 + LWWW B4YR3A+FR4,39,8,0 + LWWW B4YR3A+FR5,42,7,0 + LWWW B4YR3A+FR7,-1,6,0 + LWWW B3RN3A+FR1,-14,22,0 + LWWW B3RN3A+FR2,-36,22,0 + +#Doink + LWWW D4YR3B+FR1,64,16,1 + LWWW D4YR3B+FR2,60,20,1 + LWWW D4YR3B+FR3,47,19,1 + LWWW D4YR3B+FR4,38,20,1 + LWWW D3RN3B+FR3,16,20,0 + LWWW D3RN3B+FR4,-15,18,0 + +#Adam + .long 0 + +#Lex + LWWW L4YR3B+FR1,66,16,1 + LWWW L4YR3B+FR2,54,10,1 + LWWW L4YR3B+FR3,38,13,1 + LWWW L4YR3B+FR4,13,11,1 + LWWW L3RN3B+FR2,-5,19,0 + LWWW L3RN3B+FR3,0,13,0 + +#strt_run_tbl + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR shn_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,SHN_TBUKLY + WL 3,S2CT2A+FR4 + WL ANI_CODE,tgt_tbukl + .word ANI_LEAPATPOS,24,200,-12,12,0 ;#ticks,dist,xoff,yoff,zoff + .word ANI_SETPLYRMODE,MODE_INAIR + WL 6,S2CT2A+FR5 + WL 5,S2CT2A+FR6 + WL 5,S2CT2A+FR7 + WL 4,S2CT2A+FR8 + WL 4,S2CT2A+FR9 + + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETFACING + .word ANI_SHAKECORNER + + .word ANI_OFFSET,2,0,0 ;x,y,z + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_SCROLL_CTRL,SC_RESTORE + WL ANI_CODE,tbukl_flip +#repeat + WL 5,S4SB4B+FR1 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR2 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR3 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR4 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR5 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR6 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR7 + WL ANI_CODE,tbukl_flip + WL 5,S4SB4B+FR8 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#repeat + + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR shn_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE | MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL ANI_CODE,face_inside + + .word ANI_SHAKECORNER + WL 3,S4MP4D+FR1 + .word ANI_OFFSET,0,15,0 + WL 3,S4MP4D+FR2 + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL ANI_SET_YVEL,20000h + + .word ANI_GRAVITY_ON + WL 8,S4MP4D+FR3 + WL 1,S4MP4D+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4MP4D+FR6 + WL 3,S4MP4D+FR7 + WL 3,S4MP4D+FR8 + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** +* Check to see if opponent is getting in/out of ring, and turn accordingly! +* +* Rules: If your opponent is inside, always face inside. If he's outside, +* face in 4 or 6, depending on opp position. + + SUBR tbukl_flip + + calla get_opp_process ;closest opponent process + move *a0(INRING),a0 ;0 = in ring, 1 = outside + jruc #cont + +********** +* Always face inside + + SUBR face_inside + clr a0 + +#cont move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrge #onrt + +#onlft ;On left turnbuckle + move a0,a0 + jrz #no + jruc #out + +#onrt ;On right turnbuckle + move a0,a0 + jrz #yes + +#out ;opponent is outside + move *a13(NEW_FACING_DIR),a14 + btst MOVE_LEFT_BIT,a14 + jrnz #yes + ;fall #no + +#no ;doink is the opposite... + move *a13(WRESTLERNUM),a14 + cmpi W_DOINK,a14 + jreq #yfx + + ;so is yoko. + cmpi W_YOKO,a14 + jreq #yfx + +#nfx move *a13(OBJ_CONTROL),a14 + andni M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#yes ;doink is the opposite... + move *a13(WRESTLERNUM),a14 + cmpi W_DOINK,a14 + jreq #nfx + + ;so is yoko. + cmpi W_YOKO,a14 + jreq #nfx + +#yfx move *a13(OBJ_CONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#***************************************************************************** +* +* #3 FLYING KICK (combo version) + + SUBR shn_combo_flying_kick_anim + .word ANI_ZERO_XZVELS + WL ANI_SET_YVEL,44000h + WL 2,S3DC3A+FR4 + .word ANI_OFFSET,0,47h,0 + WL 3,S3DC3A+FR5 + WL 7,S3DC3A+FR6 + + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_FLYKICK,23,-42,59,60 + WL 3,S3DC3A+FR7 + .word ANI_ATTACK_OFF + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 3,S3DC3A+FR8 + WL 3,S3DC3A+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,20 + WL 5,S3DC3A+FR10 + .word ANI_XFLIP + + ;and now get up + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,getup_in_4 + WL ANI_GOTO,getup_in_2 + + +#***************************************************************************** +* +* #3 FLYING KICK + + SUBR shn_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,S3DC3A+FR3 + + ;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel2 + .word ANI_DETACH +#no_hdrel2 + + .word ANI_STARTATTACK,AT_LEAPING,19 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 18,999,160,65,90000h,TGT_HEAD,30,100,0 + WL ANI_CODE,no_bk_xvel + + WL 2,S3DC3A+FR4 + .word ANI_OFFSET,0,47h,0 + WL 3,S3DC3A+FR5 + WL 6,S3DC3A+FR6 + + .word ANI_ATTACK_ON, AMODE_FLYKICK,23,-22,49,40 + WL 5,S3DC3A+FR7 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_1,2,2 + + WL 3,S3DC3A+FR8 + WL 3,S3DC3A+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,20 + WL 5,S3DC3A+FR10 + .word ANI_XFLIP + + ;and now get up + +;Getting up, set no_collis + .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable + + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,getup_in_4 + +getup_in_2 + WL 3,S3RL3A+FR6 + WL 3,S3RL3A+FR7 + WL 3,S3RL3A+FR8 + + WL 3,S3GU2A+FR2 + WL 3,S3GU2A+FR3 + WL 3,S3GU2A+FR4 + WL 3,S3GU2A+FR5 + WL 3,S3GU2A+FR6 + WL 3,S3GU2A+FR7 + + WL 2,S3GU2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,S3GU2A+FR8 + WL 4,S3GU2A+FR9 + + .word ANI_SAFE_TIME,20 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,44,17 + WL 1,S3GU2A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,shn_4_push_anim +#no_freetoss + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +getup_in_4 + WL 3,S3RL3A+FR4 + WL 3,S3RL3A+FR3 + WL 3,S3RL3A+FR2 + + WL 3,S3GU4A+FR2 + WL 3,S3GU4A+FR3 + WL 3,S3GU4A+FR4 + WL 3,S3GU4A+FR5 + WL 3,S3GU4A+FR6 + WL 3,S3GU4A+FR7 + + WL 2,S3GU4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,S3GU4A+FR8 + WL 4,S3GU4A+FR9 + + .word ANI_SAFE_TIME,20 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,44,17 + WL 1,S3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,shn_4_push_anim +#no_freetoss2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckongrnd + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + calla get_opp_process ;closest opponent process + move *a0(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrz #inplace + rets + +#inplace + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +****************************************************************************** +* +* SPECIAL FUNCTIONS + +#********** +* If our facings match, go for the knees. If they differ, go for the chest. +* (jump across the centerline) + +elbow_tgt1 + + calla get_opp_process + move a0,a11 + + move *a13(FACING_DIR),a0 + move *a11(FACING_DIR),a1 + andi MOVE_RIGHT|MOVE_LEFT,a0 + andi MOVE_RIGHT|MOVE_LEFT,a1 + cmp a0,a1 + jrne #head + + movi TGT_KNEES,a0 + calla set_target_offsets + rets + +#head + movi TGT_CHEST,a0 + calla set_target_offsets + rets + + +#********** +* just like elbow_tgt1, only backwards (stay on one side of the centerline) +* + +elbow_tgt2 + + calla get_opp_process + move a0,a11 + + move *a13(FACING_DIR),a0 + move *a11(FACING_DIR),a1 + andi MOVE_RIGHT|MOVE_LEFT,a0 + andi MOVE_RIGHT|MOVE_LEFT,a1 + cmp a0,a1 + jreq #head + + movi TGT_GROIN,a0 + calla set_target_offsets + rets + +#head + movi TGT_CHEST,a0 + calla set_target_offsets + rets + +#***************************************************************************** + + SUBR shn_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*9/255 ;inv multiply (0-255 -> 0-11) + + .long S3RL3A+FR10 ;0 + .long S3RL3A+FR1 ;1 + .long S3RL3A+FR2 ;2 + .long S3RL3A+FR3 ;3 + .long S3RL3A+FR4 ;4 + .long S3RL3A+FR5 ;5 + .long S3RL3A+FR6 ;6 + .long S3RL3A+FR7 ;7 + .long S3RL3A+FR8 ;8 + .long S3RL3A+FR9 ;9 + .long 0,0,0,0,0,0,0 + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR shn_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,STAY_TIME + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_OFFSET,15,0,0 ;x,y,z + + WL 4,S3CP3B+FR1 + WL 4,S3CP3B+FR2 + WL 4,S3CP3B+FR3 + WL 4,S3CP3B+FR4 + WL 4,S3CP3B+FR5 + WL 4,S3CP3B+FR6 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 4,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim +; .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR shn_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,S3OS3X+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,STAY_TIME + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,S3OS3X+FR9 + WL 4,S3OS3X+FR10 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_OFFSET,15,0,0 ;x,y,z + + WL 4,S3CP3B+FR1 + WL 4,S3CP3B+FR2 + WL 4,S3CP3B+FR3 + WL 4,S3CP3B+FR4 + WL 4,S3CP3B+FR5 + WL 4,S3CP3B+FR6 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 4,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* + + SUBR shn_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + + WL 2,S3GU4A+FR9 + WL 2,S3GU4A+FR6 + WL 2,S3GU4A+FR4 + WL ANI_SET_YVEL,39000h + + WL 3,S3CP3B+FR2 + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,S3CP3B+FR3 + WL 3,S3CP3B+FR4 + WL 3,S3CP3B+FR5 + WL 3,S3CP3B+FR6 + WL 6,S3CP3B+FR7 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +* + SUBR shn_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE | MODE_NOGRAVITY|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + WL 3,S3CR3A+FR1 + .word ANI_OFFSET,0,10,0 ;***** + WL 3,S3CR3A+FR2 + .word ANI_OFFSET,5,16,0 ;***** + WL 3,S3CR3A+FR3 + .word ANI_OFFSET,5,16,0 ;***** + + .word ANI_SET_IDIOT + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS + ;now jump off... + WL ANI_SET_YVEL,40000h + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + + WLW ANI_SET_XVEL,54000h,AM_FACE_REL + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + .word ANI_BENDROPE,2 + .word ANI_BENDROPE,-1 + + WL 3,S3CR3A+FR4 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + +; .WORD ANI_XFLIP + .word ANI_ZEROVELS + + .word ANI_OFFSET,5,0,0 ;***** + + WL 3,S4MP4D+FR6 + WL 3,S4MP4D+FR8 + +; WL 3,S2CT2A+FR8 +; .WORD ANI_XFLIP + +; WL 3,S2CT2A+FR9 +; WL 3,S2CT2A+FR10 +; WL 3,S2CT2A+FR11 +; WL 3,S2CT2A+FR12 + + .word ANI_FACEDOWN + + .word ANI_CLEAR_CLIMB + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR shn_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in + WL 1,S4MP4D+FR1 + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,14h,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + WL 20,S4MP4D+FR1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY +; WL 2,S4MP4D+FR2 +; WL 2,S4MP4D+FR3 +; WL 2,S4MP4D+FR4 +; WL 2,S4MP4D+FR5 + + WL 3,S4MP4D+FR6 +; WL 2,S4MP4D+FR7 + WL 3,S4MP4D+FR8 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE | MODE_NOGRAVITY|MODE_NOCOLLIS + WL 2,S3CR3A+FR1 + .word ANI_OFFSET,0,10,0 ;***** + WL 2,S3CR3A+FR2 + .word ANI_OFFSET,5,16,0 ;***** + WL 2,S3CR3A+FR3 + .word ANI_OFFSET,5,16,0 ;***** + WL 2,S3CR3A+FR4 + + .word ANI_BENDROPE,2 + .word ANI_BENDROPE,-1 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS + WLW ANI_SET_XVEL,50000h,AM_FACE_REL + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .WORD ANI_XFLIP + WL 3,S2CT2A+FR8 +; WL 3,S2CT2A+FR9 +; WL 3,S2CT2A+FR10 +; WL 3,S2CT2A+FR11 +; WL 3,S2CT2A+FR12 + .WORD ANI_XFLIP + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets + + +#***************************************************************************** + + SUBR shn_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL 3,S3GU2A+FR9 + WL 3,S3GU2A+FR8 + WL 3,S3GU2A+FR7 + WL 3,S3GU2A+FR6 + WL 3,S3GU2A+FR5 + WL 3,S3GU2A+FR4 + WL 3,S3GU2A+FR2 + + ;roll over once + WLW ANI_SET_ZVEL,0A8000h,AM_ABS + + WL 3,S3RL3A+FR1 + WL 3,S3RL3A+FR2 + WL 3,S3RL3A+FR3 + WL 3,S3RL3A+FR4 + WL 3,S3RL3A+FR5 + WL 3,S3RL3A+FR6 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + + .word ANI_SET_IDIOT + ;climb through + .WORD ANI_XFLIP + WL ANI_CODE,NOT_IN_RING + .word ANI_OFFSET,20,-37h,0 ;x,y,z + WL 3,S4KI3Q+FR5 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + .WORD ANI_XFLIP + + .word ANI_FACEUP + .word ANI_CLEAR_CLIMB + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +NOT_IN_RING + MOVK 1,A0 + MOVE A0,*A13(INRING) + RETS + +#***************************************************************************** + + SUBR shn_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .WORD ANI_XFLIP + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR5 + .word ANI_OFFSET,-20,37h,-60 + + ;roll + .word ANI_XFLIP + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,S3RL3A+FR6 + WL 3,S3RL3A+FR5 + WL 3,S3RL3A+FR4 + WL 3,S3RL3A+FR3 + WL 3,S3RL3A+FR2 + WL 3,S3RL3A+FR1 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 3,S3GU2A+FR2 + WL 3,S3GU2A+FR3 + WL 3,S3GU2A+FR4 + WL 3,S3GU2A+FR5 + WL 3,S3GU2A+FR6 + WL 3,S3GU2A+FR7 + WL 3,S3GU2A+FR8 + WL 3,S3GU2A+FR9 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .WORD ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR shn_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,S1TT5Z+FR2 + WL 3,S1TT5Z+FR3 + +#dir4 + WL 3,S3GU4A+FR9 + WL 3,S3GU4A+FR8 + WL 3,S3GU4A+FR7 + WL 3,S3GU4A+FR6 + WL 3,S3GU4A+FR5 + WL 3,S3GU4A+FR4 + WL 3,S3GU4A+FR3 + WL 3,S3GU4A+FR2 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,S3RL3A+FR10 + WL 3,S3RL3A+FR9 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,S3RL3A+FR8 + WL 3,S3RL3A+FR7 + WL 3,S3RL3A+FR6 + + .word ANI_SET_IDIOT + ;climb through + .word ANI_ZEROVELS + .WORD ANI_XFLIP + WL 3,S3DC3A+FR7 + WL 3,S3DC3A+FR6 + WL 3,S3DC3A+FR5 + .word ANI_OFFSET,0,-61,0 + .WORD ANI_XFLIP + + .word ANI_ZERO_XZVELS + + .WORD ANI_FACEDOWN + .word ANI_CLEAR_CLIMB + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + + +#***************************************************************************** +;Zombies use this to roll through the top without standing back up. + + SUBR shn_rollthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + + ;roll over once + WLW ANI_SET_ZVEL,-50000h,AM_ABS + WL 3,S3RL3A+FR10 + WL 3,S3RL3A+FR9 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,S3RL3A+FR8 + WL 3,S3RL3A+FR7 + WL 3,S3RL3A+FR6 + + ;climb through + .word ANI_ZEROVELS + .WORD ANI_XFLIP + WL 3,S3DC3A+FR7 + WL 3,S3DC3A+FR6 + WL 3,S3DC3A+FR5 + .word ANI_OFFSET,0,-61,0 + .WORD ANI_XFLIP + + .word ANI_ZERO_XZVELS + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR shn_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_OFFSET,0,61,0 + WL 3,S3DC3A+FR5 + WL 3,S3DC3A+FR6 + WL 3,S3DC3A+FR7 + .WORD ANI_XFLIP + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,S3RL3A+FR7 + WL 3,S3RL3A+FR8 + WL 3,S3RL3A+FR9 + WL 3,S3RL3A+FR10 + + .word ANI_ZEROVELS + + ;get up + WL 3,S3GU4A+FR2 + WL 3,S3GU4A+FR3 + WL 3,S3GU4A+FR4 + WL 3,S3GU4A+FR5 + WL 3,S3GU4A+FR6 + WL 3,S3GU4A+FR7 + WL 3,S3GU4A+FR8 + WL 3,S3GU4A+FR9 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#set_zvel2 + movi 50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR shn_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,S1TT5Z+FR2 ;2.5 + WL 3,S1TT5Z+FR3 ;3.5 + + SUBR shn_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 25,999,80h,50h,90000h,TGT_CHEST|TGT_GROUND,0,57,-15 + WL ANI_CODE,hit_nearest + + WL 3,S3PN5C+FR1 + .word ANI_OFFSET,0,31,0 ;x,y,z + WL 18,S3PN5C+FR2 + WL 4,S3PN5C+FR3 +; .word ANI_WAITHITGND +; .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,0,76,20,30 ;mode,x,y,z,w,h,d + .word ANI_ZEROVELS + + WL 3,S3PN5C+FR7 + WL ANI_CODE,DO_CROWD_CHEER + +; .word ANI_ATTACK_OFF + WL ANI_CODE,grnd_hit + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_BOUNCE,4 + WL 3,S3PN5C+FR7 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + WL 4,S3PN5C+FR7 + WL ANI_CODE,win_announce +; .word ANI_SET_ATTACH +; .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + WL 40,S3PN5C+FR7 + + .word ANI_LOOP + +;Do another ground hit on opponent + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 4,S3GU4A+FR4 + WL 4,S3GU4A+FR5 + WL 4,S3GU4A+FR6 + WL 4,S3GU4A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,S3GU4A+FR8 + WL 4,S3GU4A+FR9 + +#raise + WL 5,S4SW4A+FR1 + WL 5,S4SW4A+FR2 + WL 5,S4SW4A+FR3 + WL 5,S4SW4A+FR4 + WL 5,S4SW4A+FR5 + WL 5,S4SW4A+FR6 + WL 5,S4SW4A+FR7 + WL 5,S4SW4A+FR8 + WL 5,S4SW4A+FR9 +#floop WL 1000,S4SW4A+FR10 + WL ANI_GOTO,#floop + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* RAISE ARM IN VICTORY FROM A STANCE + + SUBR shn_2_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + + WL 3,S1TT5Z+FR2 ;2.5 + WL 3,S1TT5Z+FR3 ;3.5 + WL ANI_GOTO,#cont + + SUBR shn_4_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + +#cont WL 5,S4SW4A+FR1 + WL 5,S4SW4A+FR2 + WL 5,S4SW4A+FR3 + WL 5,S4SW4A+FR4 + WL 5,S4SW4A+FR5 + WL 5,S4SW4A+FR6 + WL 5,S4SW4A+FR7 + WL 5,S4SW4A+FR8 + WL 5,S4SW4A+FR9 + + + .word ANI_SET_RPTCOUNT,-4 ;set count to rnd from 0 to 4 +#lp0 WL 55,S4SW4A+FR10 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#lp0 + + WL ANI_CODE,check_raisearm_bit + WL ANI_IFSTATUS,#wakeup + + ;don't wake up. + .word ANI_SET_RPTCOUNT,1000 + WL ANI_GOTO,#lp0 + + ;5,4,2,1 leaves the sequence. +#wakeup WL 4,S4SW4A+FR5 + WL 4,S4SW4A+FR4 + WL 4,S4SW4A+FR2 + WL 4,S4SW4A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACEDOWN + .word ANI_END + +#***************************************************************************** + +;Leap up onto nearest turnbuckle. Call with ANI_CODE to set offsets +; before doing the ANI_LEAPATPOS. + + SUBR tgt_tbukl + + ;figure out which one to climb. + movi vln_right_rope,a0 + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrgt #right + movi vln_left_rope,a0 +#right + + move *a0+,a1,W ;X + move *a0+,a2,W ;Z + subi 16,a2 + movi MAT_Y+80,a3 ;Y + + move a1,*a13(TGT_XOFF) + move a2,*a13(TGT_ZOFF) + move a3,*a13(TGT_YOFF) + + rets + +#***************************************************************************** +* +* #4 SLAP + + SUBR shn_2_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,17 + WL 2,S1TT5Z+FR2 ;2.5 + WL 2,S1TT5Z+FR3 ;3.5 + + SUBR shn_4_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,15 + WL 3,S4PT3B+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0eh,999,4ah,50,90000h,TGT_HEAD,76,110,30 + + WL 4,S4PT3B+FR2 + WL 4,S4PT3B+FR3 + WL 3,S4PT3B+FR4 + WL 3,S4PT3B+FR5 + + .word ANI_ATTACK_ON, AMODE_BACKHAND,31,44,55,47 ;mode,x,y,w,h + WL 3,S4PT3B+FR6 + + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + + WL ANI_SET_YVEL,40000h + WL 10,S4PT3B+FR6 +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + + WL 8,S4PT3B+FR6 + WL 3,S4PT3B+FR7 + WL 3,S4PT3B+FR8 + WL 3,S4PT3B+FR9 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 pummel - MK style + + SUBR shn_2_pummel_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,5 + WL 1,S1TT5Z+FR2 + WL 1,S1TT5Z+FR3 + + SUBR shn_4_pummel_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,3 + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times + +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 05h,999,4ah,50,90000h,TGT_HEAD,65,90,10 +; WL ANI_SET_YVEL,0h + + WL 3,S4PU3D+FR2 + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 +#rpt + .word ANI_CLR_BUTCOUNT + .word ANI_ATTACK_ON, AMODE_PUNCH2,21,80,42,14 ;mode,x,y,w,h + WL 3,S4MK3A+FR1 + .word ANI_ATTACK_OFF + WL 3,S4MK3A+FR2 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex + WL 3,S4MK3A+FR3 + .word ANI_CLR_BUTCOUNT + .word ANI_ATTACK_ON, AMODE_PUNCH2,21,80,42,14 ;mode,x,y,w,h + WL 3,S4MK3A+FR4 + .word ANI_ATTACK_OFF + WL 3,S4MK3A+FR5 + WL 3,S4MK3A+FR6 + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,40000h + WL 3,S4MK3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#missed +#no_hit2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +; .word ANI_SET_ATTACH +; WLLL ANI_SETOPPVELS,18000h,18000h,0h ;x,y,z vels + + WL 3,S4MK3A+FR7 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,2,#ex + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + .word ANI_DRAW_NAME,32 + + .ref shn_4_hiptoss_anim + WL ANI_CHANGEANIM,shn_4_hiptoss_anim + +#ex + .word ANI_OFFSET,15,0,0 + WL ANI_CHANGEANIM,shn_4_butt_anim + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WLLL ANI_SETOPPVELS,50000h,18000h,0h ;x,y,z vels + WL 2,S4MK3A+FR7 +#missed + + WL 2,S4MK3A+FR7 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* GET BUCKED OFF A PINNED OPPONENT + + SUBR shn_buckoff_anim + + .ref set_buckoff_vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 4,S3PN5C+FR7 + WL 1,S3PN5C+FR3 + WL ANI_CODE,set_buckoff_vels + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,S3PN5C+FR7 + + ;now stand up + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 4,S3GU4A+FR4 + WL 4,S3GU4A+FR5 + WL 4,S3GU4A+FR6 + WL 4,S3GU4A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,S3GU4A+FR8 + WL 4,S3GU4A+FR9 + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SHNSEQ3.ASM b/SHNSEQ3.ASM new file mode 100755 index 0000000..160eb6c --- /dev/null +++ b/SHNSEQ3.ASM @@ -0,0 +1,4235 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/26/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "shnseq3.asm" + .title "lockup stuff and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "display.equ" + .include "ring.equ" + + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" + + .include "damage.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + .REF BROKEN_ARM_BLOOD + .ref MOVE_NAME_ANNC + + ;BRET + .ref hrt_hitonground_anim,hrt_break_neck_anim + .ref hrt_flyout_anim,hrt_3_head_held_anim + .ref H2AH3A,H2AM3A,H2CP3A,H3BF3A,H3DU3A,H3FR3A,H3GU4A,H3UC3X + .ref H3UC3Z,H3HB3A + + ;BAM BAM + .ref bam_hitonground_xflip_anim,bam_3_head_held_anim + .ref bam_flyout_anim,bam_break_neck_anim + .ref bam_break_neck4_anim + .ref B3BF3C,B3FD3C,B3GU4A,B4AH4A,B4TD3B,B4UC3B + .ref B4BF3A,B3HB3A,B3DR3B + + ;DOINK + .ref dnk_hitonground_anim,dnk_hitonground_xflip_anim + .ref dnk_break_neck_anim,dnk_flyout_anim,dnk_3_head_held_anim + .ref D3AE3B,D3BF3A,D3FD3E,D3HT3Z,D3OS3A,D3PM4C,D3SA3A + .ref D3UC3A,D3AK3A + + ;LEX + .ref lex_hitonground_anim,lex_flyout_anim + .ref lex_break_neck_anim,lex_3_head_held_anim + .ref lex_break_neck4_anim + .ref L3BF3B,L3CP3B,L3DU3A,L3FD3B,L3FH3A,L3UC3X,L4AM4B,L3BF3A + .ref L2AH2A,L3CP3X,L4GH3B + + ;RAZOR + .ref rzr_hitonground_anim,rzr_flyout_anim + .ref rzr_break_neck_anim,rzr_3_head_held_anim + .ref rzr_break_neck4_anim + .ref R3BF3A,R3DU3B,R3FD3B,R3GU2A,R3GU4A,R3HG3B,R3TD3A,R4AH4C + .ref R3HB3A + + ;SHAWN + .ref shn_break_neck_anim,shn_stand4_anim,shn_3_head_held_anim + .ref shn_hitonground_anim,shn_flyout_anim + .ref shn_faceup_getup_anim,shn_arm_broken_anim + .ref shn_fall_back3_anim + .ref S4TD3F + + ;TAKER + .ref und_hitonground_anim,und_flyout_anim + .ref und_break_neck_anim,und_3_head_held_anim + .ref und_break_neck_anim + .ref U3AE4A,U3CP3B,U3DU3B,U3FD3X,U3FH3A,U3GP3X,U4AH3A,U4AM4C + .ref U4BF3Z,U4BF3A,U3TBSM + + ;YOKO + .ref yok_hitonground_anim + .ref yok_3_head_held_anim,yok_break_neck_anim + .ref yok_hitonground_xflip_anim + .ref Y3BF3A,Y3GU2A,Y3FD3A,Y3FD3N,Y3LB3A,Y4AM4A + + .ref ckzpos + + ;from WRESTLE.ASM + .ref process_ptrs + + ;MISC + .ref SMALL_BOUNCE + .ref HIT_THE_MAT,CALL_SPECIAL_MOVE,CALL_MISSES,CALL_SETUP + .ref CALL_MISS_YOKO,choose_2or4,CALL_THROWN_OUT,CALL_NASTY_MOVE + .ref CALL_ANI_AVERAGE_MOVE,clear_opp_counts + .ref DO_COMBO_MESS,shn_combo_knee_anim,DO_GRUNT + .ref shn_combo_flying_kick_anim,CALL_OTHER_AVERAGE,DO_NONO + .ref MAKE_HIM_SCREAM + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GERMAN SUPLEX (combo version) + + SUBR shn_combo_gsuplex_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFOPPMODE,MODE_HEADHELD,#front_grabxc + WWL ANI_IFOPPMODE,MODE_HEADHOLD,#front_grabxc + WWL ANI_IFOPPMODE,MODE_ONGROUND,#front_grabxc + WWL ANI_IFOPPMODE,MODE_DEAD,#front_grabxc + WWWL ANI_IFNOTROPE,RC_FRONT,200,#back_grabxc + +#front_grabxc + .word ANI_XFLIP + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + WL ANI_GOTO,#commonxc + +#back_grabxc + + ;check for a likely hit. If not, abort and do a front grab instead. + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON,AMODE_HITCHECK,12,47,49+8,23 + .word ANI_PAUSE,1 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#front_grabxc + + .word ANI_OFFSET,5,0,0 + WL 3,S3BH3A+FR1 + .word ANI_OFFSET,7+10,0,0 + WL 3,S3BH3A+FR2 + .word ANI_OFFSET,3+10,0,0 + WL 3,S3BH3A+FR3 + .word ANI_OFFSET,6+10,0,0 + WL 3,S3BH3A+FR4 + .word ANI_OFFSET,2+10,0,0 + WL 3,S3BH3A+FR5 + .word ANI_OFFSET,1+10,0,0 + WL 3,S3BH3A+FR6 + .word ANI_OFFSET,3+10,0,0 + .word ANI_FACE,MOVE_DOWN|MOVE_LEFT +#commonxc + + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_PUPPET,-68,47,49,23 + WWL ANI_WAITHITOPP,12,S3BH3A+FR7 + .word ANI_ZERO_XZVELS + WL 5,S3BH3A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missedxc + WL ANI_IFBLOCKED,#missedxc + +;got him + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,5,S3SG3A+FR2,puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,S3SG3A+FR3,puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR4,puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR5,puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR6,puppet_tbl,4 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_GSUPLEX,RD_GSUPLEX + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 2,S3SG3A+FR6 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR7,puppet_tbl,5 + .word ANI_SOUND,9bh ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR8,puppet_tbl,6 + WL ANI_SLAVEANIM,rollout_tbl1 + .word ANI_DETACH + .word ANI_OFFSET,-34,0,0 + + WL 6,S3CP3B+FR7 + WL ANI_CODE,#zero_butn + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#missedxc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + WL 9,S3BH3A+FR7 + WL 4,S3BH3A+FR8 + .word ANI_XFLIP + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#4xc + WL 1,S2ST2C+FR1 + .word ANI_FACEUP + WL ANI_GOTO,#2xc + +#4xc + WL 1,S4ST4C+FR1 + .word ANI_FACEDOWN +#2xc + WL ANI_CODE,#zero_butn + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#zero_butn +;Force player to start holding his button down starting at the end +;of the current buzz sequence. + + move *a13(PLYRNUM),a0 + X16 a0 + .ref punch_dtime1 + addi punch_dtime1,a0 + clr a14 + move a14,*a0 + rets + +#***************************************************************************** +* +* GERMAN SUPLEX + + SUBR shn_gsuplex_run_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,6 + + .word ANI_PAUSE,2 + + WWL ANI_IFOPPMODE,MODE_HEADHELD,#front_grab0 + WWL ANI_IFOPPMODE,MODE_HEADHOLD,#front_grab0 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#front_grab0 + WWL ANI_IFOPPMODE,MODE_DEAD,#front_grab0 + WWWL ANI_IFNOTROPE,RC_FRONT,200,#back_grab0 + +#front_grab0 + .word ANI_XFLIP + +#normal +; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,70,70,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + WL ANI_CODE,#no_bk_xvel + WL ANI_GOTO,#common + +#back_grab0 + + ;check for a likely hit. If not, abort and do a front grab instead. + .word ANI_ATTACK_ON,AMODE_HITCHECK,12,47,49+8,23 + .word ANI_PAUSE,1 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFNOTSTATUS,#front_grab0 + WL ANI_IFBLOCKED,#front_grab0 + +;We need to pause opponent here! + + WL ANI_CODE,#pause_opp + + LEAPATOPP 15,140,140,40,90000h,TGT_CHEST,-40,0,0 + WL ANI_SET_YVEL,0000h + + WL 3,S3BH3A+FR1 + WL 2,S3BH3A+FR2 + WL 3,S3BH3A+FR3 + WL 2,S3BH3A+FR4 + WL 3,S3BH3A+FR5 + WL 2,S3BH3A+FR6 + .word ANI_ZERO_XZVELS + .word ANI_FACE,MOVE_DOWN|MOVE_LEFT + +;Spin around move always works + + .word ANI_ATTACK_ON, AMODE_PUPPET,-68,47,49,23 + WWL ANI_WAITHITOPP,12,S3BH3A+FR7 + .word ANI_ZERO_XZVELS + WL 5,S3BH3A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed +; WL ANI_IFBLOCKED,#missedb + WL ANI_GOTO,#slam + +#no_bk_xvel +;zeros the wrestler's x-velocity if he's flying backwards. Useful just +;after a LEAPAT. + + move *a13(OBJ_XVEL),a0,L + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs + neg a0 +#abs + move a0,a0 + jrnn #ok + +#clrvel + clr a14 + move a14,*a13(OBJ_XVEL),L + move a14,*a13(OBJ_ZVEL),L +#ok + rets + + SUBR shn_gsuplex_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_LEAPING,6 + + .word ANI_PAUSE,2 + + WWL ANI_IFOPPMODE,MODE_HEADHELD,#front_grab + WWL ANI_IFOPPMODE,MODE_HEADHOLD,#front_grab + WWL ANI_IFOPPMODE,MODE_ONGROUND,#front_grab + WWL ANI_IFOPPMODE,MODE_DEAD,#front_grab + WWWL ANI_IFNOTROPE,RC_FRONT,200,#back_grab + +#front_grab + .word ANI_XFLIP + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + WL ANI_GOTO,#common + +#back_grab + + ;check for a likely hit. If not, abort and do a front grab instead. + .word ANI_ATTACK_ON,AMODE_HITCHECK,12,47,49+8,23 + .word ANI_PAUSE,1 + .word ANI_ATTACK_OFF +; .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFNOTSTATUS,#front_grab + WL ANI_IFBLOCKED,#front_grab + +;We need to pause opponent here! + + WL ANI_CODE,#pause_opp + + LEAPATOPP 15,140,140,40,90000h,TGT_CHEST,-40,0,0 + WL ANI_SET_YVEL,0000h + + WL 3,S3BH3A+FR1 + WL 2,S3BH3A+FR2 + WL 3,S3BH3A+FR3 + WL 2,S3BH3A+FR4 + WL 3,S3BH3A+FR5 + WL 2,S3BH3A+FR6 + .word ANI_ZERO_XZVELS + .word ANI_FACE,MOVE_DOWN|MOVE_LEFT + +;Spin around move always works + + .word ANI_ATTACK_ON, AMODE_PUPPET,-68,47,49,23 + WWL ANI_WAITHITOPP,12,S3BH3A+FR7 + .word ANI_ZERO_XZVELS + WL 5,S3BH3A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed +; WL ANI_IFBLOCKED,#missedb + WL ANI_GOTO,#slam +#common + + .word ANI_ATTACK_ON, AMODE_PUPPET,-68,47,49,23 + WWL ANI_WAITHITOPP,12,S3BH3A+FR7 + .word ANI_ZERO_XZVELS + WL 5,S3BH3A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#slam ;got him + + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + + WL ANI_CODE,MAKE_HIM_SCREAM + WL ANI_CODE,CALL_SPECIAL_MOVE + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_DRAW_NAME,12 + + WWLLW ANI_SUPERSLAVE2,5,S3SG3A+FR2,puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,S3SG3A+FR3,puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR4,puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR5,puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR6,puppet_tbl,4 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_GSUPLEX,RD_GSUPLEX + + WL 2,S3SG3A+FR6 + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR7,puppet_tbl,5 + .word ANI_SOUND,9bh ;neck break (5-7 ticks late) + WWLLW ANI_SUPERSLAVE2,3,S3SG3A+FR8,puppet_tbl,6 + WL ANI_SLAVEANIM,rollout_tbl1 + .word ANI_DETACH + .word ANI_OFFSET,-34,0,0 + + WL 6,S3CP3B+FR7 + WL ANI_CODE,#zero_butn + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +;#tgt_yoko +; WL ANI_CODE,CALL_MISS_YOKO +; WL 8,S3BH3A+FR7 +; WL 4,S3BH3A+FR8 +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_END + +#missedb + WL 10,S3BH3A+FR7 +#missed + WL ANI_CODE,CALL_MISSES + WL 10,S3BH3A+FR7 + WL 4,S3BH3A+FR8 + .word ANI_XFLIP + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#4 + WL 1,S2ST2C+FR1 + .word ANI_FACEUP + WL ANI_GOTO,#2 + +#4 WL 1,S4ST4C+FR1 + .word ANI_FACEDOWN +#2 WL ANI_CODE,#zero_butn + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +OANIMODE equ 0 ;word +OANIBASE equ OANIMODE+10h ;long +OANIPC equ OANIBASE+20h ;long +OANICNT equ OANIPC+20h ;word +OCUR_FRAME equ OANICNT+10h ;long + +#pause_opp +;Cause opponent to pause on whatever frame he is on - no rotating allowed! + move *a13(WHOIHIT),a0,L + movk 25,a14 + addi ANIMODE,a0 + move a14,*a0(OANICNT) +;Turn unint on for opponent + move *a0(OANIMODE),a14 + ori MODE_UNINT,a14 + move a14,*a0(OANIMODE) + + rets + +#zero_butn +;Force player to start holding his button down starting at the end +;of the current buzz sequence. + + move *a13(PLYRNUM),a0 + X16 a0 + .ref punch_dtime1 + addi punch_dtime1,a0 + clr a14 + move a14,*a0 + rets + +******** +* #include "s_gsup.seq" +* +* NOTE: Because of some funny flipping in the attack sequence, all X offsets +* in victim sequences must be sign-reversed. + + +puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3UC3X+FR1,-18,14,1 + LWWW H3UC3X+FR2,-39,30,1 + LWWW H3UC3X+FR4,-13,32,1 + LWWW H3UC3X+FR5,37,57,1 + LWWW H3UC3X+FR6,90,17,1 + LWWW H3UC3Z+FR1,116,21,1 + LWWW H3UC3Z+FR2,152,25,1 +#Razor + LWWW R3FD3B+FR1,-20,12,1 + LWWW R3FD3B+FR2,-42,29,1 + LWWW R3FD3B+FR4,-23,37,1 + LWWW R3FD3B+FR5,24,43,1 + LWWW R3FD3B+FR6,89,5,1 + LWWW R3HG3B+FR1,118,23,1 + LWWW R3HG3B+FR2,146,31,1 +#Taker + LWWW U3FD3X+FR1,-25,24,0 + LWWW U3FD3X+FR3,-27,34,0 + LWWW U3FD3X+FR5,27,54,0 + LWWW U3FD3X+FR6,72,60,0 + LWWW U3GP3X+FR1,89,16,0 + LWWW U3GP3X+FR2,118,-12,0 + LWWW U3GP3X+FR3,149,6,0 +#Yokozuna + LWWW Y3FD3A+FR1,-26,4,1 + LWWW Y3FD3A+FR2,-58,40,1 + LWWW Y3FD3A+FR4,-29,41,1 + LWWW Y3FD3A+FR5,17,58,1 + LWWW Y3FD3N+FR1,64,36,1 + LWWW Y3FD3N+FR3,89,18,1 + LWWW Y3FD3N+FR4,118,35,1 +#Shawn + LWWW S3UC3X+FR1,-16,16,1 + LWWW S3UC3X+FR3,-40,25,1 + LWWW S3UC3X+FR5,2,34,1 + LWWW S3UC3X+FR6,62,55,1 + LWWW S3FD3X+FR1,76,16,1 + LWWW S3FD3X+FR2,107,35,1 + LWWW S3FD3X+FR3,140,60,1 +#BamBam + LWWW B4UC3B+FR1,-24,28,1 + LWWW B4UC3B+FR3,-48,27,1 + LWWW B4UC3B+FR5,0,51,1 + LWWW B4UC3B+FR6,69,61,1 + LWWW B3FD3C+FR1,88,2,1 + LWWW B3FD3C+FR2,115,31,1 + LWWW B3FD3C+FR3,139,51,1 +#Doink + LWWW D3UC3A+FR2,-21,22,1 + LWWW D3UC3A+FR3,-25,34,1 + LWWW D3UC3A+FR5,-15,32,1 + LWWW D3UC3A+FR7,45,58,1 + LWWW D3FD3E+FR2,98,10,1 + LWWW D3FD3E+FR3,133,1,1 + LWWW D3FD3E+FR4,162,25,1 +#Adam + .long 0 +#Lex + LWWW L3UC3X+FR2,-21,10,1 + LWWW L3UC3X+FR3,-44,20,1 + LWWW L3UC3X+FR4,-15,34,1 + LWWW L3UC3X+FR5,71,63,1 + LWWW L3UC3X+FR6,94,3,1 + LWWW L3FD3B+FR1,131,-3,1 + LWWW L3FD3B+FR2,159,6,1 + +rollout_tbl1 + .long hrt_break_neck_anim,rzr_break_neck_anim + .long und_break_neck_anim,yok_break_neck_anim + .long shn_break_neck_anim,bam_break_neck_anim + .long dnk_break_neck_anim,0,lex_break_neck_anim + +* +******** + +#***************************************************************************** +* +* FRANKENSTEINER + + .bss #opp_xvel,32 + + SUBR shn_fstein2_anim +;From head hold combo move + + .word ANI_SETPLYRMODE,MODE_INAIR + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + +;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel2 + .word ANI_DETACH +#no_hdrel2 + .word ANI_STARTATTACK,AT_LEAPING,12 + + WL 4,S3FL3X+FR1 + WL 4,S3FL3X+FR2 + .word ANI_OFFSET,0,45,0 + WL 1,S3ZI3A+FR1 +; LEAPATOPP 10,999,120,55,90000h,TGT_HEAD,17-20,35,-20 + LEAPATOPP 10,999,120,55,90000h,TGT_HEAD,17-20,35,0 + WL 4,S3ZI3A+FR1 + + .word ANI_ATTACK_ON,AMODE_PUPPET,10-36,-20,56,33 ;mode,x,y,w,h + WL ANI_GOTO,#cont + + SUBR shn_combo_fstein_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + .word ANI_CLR_BUTCOUNT + WL 4,S3FL3X+FR1 + WL 4,S3FL3X+FR2 + .word ANI_OFFSET,0,45,0 + WL 1,S3ZI3A+FR1 + LEAPATOPP 35,999,120,55,90000h,TGT_HEAD,17-20,35,0 + WL 4,S3ZI3A+FR1 + + .word ANI_ATTACK_ON,AMODE_PUPPET,10-36,0,76,53 ;mode,x,y,w,h + WL ANI_CODE,#store_opp_xvel + WWL ANI_WAITHITOPP,10,S3ZI3A+FR2 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed_c + WL ANI_IFBLOCKED,#missedb_c + .word ANI_CLR_STATUS + + ;hit + WL ANI_CODE,#merge_xvels + .word ANI_ATTACHZ,0,0,-10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR3,#puppet_tbl,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,0,-65,0 + + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR8,#puppet_tbl,5 + .WORD ANI_INC_COMBO + + WWWL ANI_IFROPE,RC_BACK,160,#throw_him_out_c + + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR9,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR10,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR11,#puppet_tbl,8 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_FSTEIN,RD_FSTEIN + .word ANI_OPP_GETUP,-300 + + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR11,#puppet_tbl,9 + WL ANI_OPPOFFSET,#release_offsets + WL ANI_SLAVEANIM,recover_tbl + .word ANI_DETACH + .word ANI_OFFSET,-41,0,0 + WL 4,S2PJ3C+FR9 + .word ANI_OFFSET,41,0,0 + WL 4,S3GU2A+FR5 + WL 4,S3GU2A+FR6 + WL 4,S3GU2A+FR7 + WL 4,S3GU2A+FR8 + WL 4,S3GU2A+FR9 + + WWWL ANI_IF_BUTCOUNT_LT,BLOCKB_COUNT,1,#NO_STOMPING1 + WL ANI_CHANGEANIM,shn_combo_run_stomp_anim + +#NO_STOMPING1 + .word ANI_OPP_GETUP,5 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb_c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#missedb +#missed_c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#missed + +#throw_him_out_c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#throw_him_out + + SUBR shn_fstein_anim + + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + ;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,MODE_HEADHOLD,#hdrel + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel +#hdrel .word ANI_DETACH +#no_hdrel + .word ANI_STARTATTACK,AT_LEAPING,12 + + WL 4,S3FL3X+FR1 + WL 4,S3FL3X+FR2 + .word ANI_OFFSET,0,45,0 + WL 1,S3ZI3A+FR1 +; LEAPATOPP 10,999,120,55,90000h,TGT_HEAD,17-20,35,-20 + LEAPATOPP 10,999,120,55,90000h,TGT_HEAD,17-20,35,0 + + WL ANI_CODE,no_bk_xvel + WL 4,S3ZI3A+FR1 + + .word ANI_ATTACK_ON,AMODE_PUPPET,10-36,0,36,33 ;mode,x,y,w,h +#cont + WL ANI_CODE,#store_opp_xvel + WWL ANI_WAITHITOPP,10,S3ZI3A+FR2 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +; .word ANI_IFOPP,W_YOKO,-1 +; WL ANI_IFSTATUS,#tgt_yoko + .word ANI_CLR_STATUS + + ;hit + WL ANI_CODE,#merge_xvels + .word ANI_ATTACHZ,0,0,-10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR3,#puppet_tbl,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,0,-65,0 + + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR8,#puppet_tbl,5 + .word ANI_DRAW_NAME,4 + + WWWL ANI_IFROPE,RC_BACK,160,#throw_him_out + + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR9,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR10,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR11,#puppet_tbl,8 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_ZEROVELS ;in case we picked up some Xvel from ropes + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_FSTEIN,RD_FSTEIN + .word ANI_OPP_GETUP,300 + + WWLLW ANI_SUPERSLAVE2,4,S3ZI3A+FR11,#puppet_tbl,9 + WL ANI_OPPOFFSET,#release_offsets + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_SLAVEANIM,recover_tbl + .word ANI_DETACH + .word ANI_OFFSET,-41,0,0 + WL 4,S2PJ3C+FR9 + .word ANI_OFFSET,41,0,0 + WL 4,S3GU2A+FR5 + WL 4,S3GU2A+FR6 + WL 4,S3GU2A+FR7 + WL 4,S3GU2A+FR8 + WL 4,S3GU2A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WLLL ANI_ATTACHVEL,-0A0000h,90000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,release_table2 + WL ANI_CODE,CALL_THROWN_OUT + .word ANI_DETACH + WL 3,S3ZI3A+FR8 + WL 4,S3ZI3A+FR9 + WL 4,S3ZI3A+FR10 + WL 4,S3ZI3A+FR11 + + WL 4,S3ZI3A+FR11 + .word ANI_OFFSET,-41,0,0 + WL 4,S2PJ3C+FR9 + .word ANI_OFFSET,41,0,0 + WL 4,S3GU2A+FR5 + WL 4,S3GU2A+FR6 + WL 4,S3GU2A+FR7 + WL 4,S3GU2A+FR8 + WL 4,S3GU2A+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +release_table2 + ; X Y + .word 8,8 ;Bret + .word 8,8 ;Razor + .word 0,8 ;Taker + .word 0,8 ;Yokozuna + .word 8,12 ;Shawn + .word 0,0 ;BamBam + .word 0,8 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +;#tgt_yoko +; ;we've hit yoko. mistake. +; ;this will turn yoko into the attacker, so it doesn't much matter +; ; what we do from here, as he'll be calling the shots. +; +; .word ANI_ZERO_XZVELS +; WL ANI_CODE,#set_attach +; WL ANI_CODE,CALL_MISS_YOKO +; WL ANI_SLAVEANIM,#backfire_tbl +; WL 999,S3ZI3A+FR3 +; .word ANI_END + +#set_attach + move *a13(WHOIHIT),a0,L + move a0,*a13(ATTACH_PROC),L + move a13,*a0(ATTACH_PROC),L + rets + +#missedb + +; .word ANI_IFOPP,W_YOKO,-1 +; WL ANI_IFSTATUS,#tgt_yoko + +;we've hit a blocker. mistake. +;uh, for now just abort. +; WL ANI_CODE,#set_attach + WLLL ANI_SETOPPVELS,70000h,40000h,0 ;x,y,z vels + +; WLLL ANI_SETOPPVELS,20000h,20000h,0 ;x,y,z vels + WL ANI_CODE,CALL_MISSES + .word ANI_SOUND,018h ;Hard hit + .word ANI_ZERO_XZVELS + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WL 5,S3UC3X+FR4 ;12 + + WL 3,S3UC3X+FR4 + WL 3,S3UC3X+FR5 + WL 3,S3UC3X+FR6 + .word ANI_WAITHITGND +; WLLL ANI_SETOPPVELS,0000h,0000h,0 ;x,y,z vels +; .word ANI_DETACH + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + WL ANI_CODE,HIT_THE_MAT + +; WL 3,S3UC3X+FR4 +; WL 3,S3UC3X+FR5 +; WL 3,S3UC3X+FR6 + + .word ANI_XFLIP + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL 1,S3CP3B+FR1 + WL ANI_SET_YVEL,40000h + WL ANI_CODE,ckzpos + WL 2,S3CP3B+FR1 + WL 3,S3CP3B+FR2 + WL 3,S3CP3B+FR3 + WL 3,S3CP3B+FR4 + WL 3,S3CP3B+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,S3CP3B+FR6 +; WL 30,S3CP3B+FR7 + WL 3,S3CP3B+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + +#missed + ;uh, for now just abort. + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + WL ANI_CODE,HIT_THE_MAT +; WL 3,S3UC3X+FR4 +; WL 3,S3UC3X+FR5 +; WL 3,S3UC3X+FR6 + .word ANI_XFLIP + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL 1,S3CP3B+FR1 + WL ANI_SET_YVEL,40000h + WL ANI_CODE,ckzpos + WL 2,S3CP3B+FR1 + WL 3,S3CP3B+FR2 + WL 3,S3CP3B+FR3 + WL 3,S3CP3B+FR4 + WL 3,S3CP3B+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,S3CP3B+FR6 + WL 3,S3CP3B+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +;new xvel is (attacker xvel + defender xvel)/4 +#merge_xvels + + move @#opp_xvel,a0,L + move *a13(OBJ_XVEL),a1,L + add a1,a0 + sra 2,a0 + move a0,*a13(OBJ_XVEL),L +#rets + rets + +;save opponent's x-velocity +#store_opp_xvel + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(OBJ_XVEL),a0,L + move a0,@#opp_xvel,L + rets + +******** +* #include "s_frnk.seq" + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AH3A+FR5,6,-31,0 + LWWW H2AH3A+FR6,11,-30,0 + LWWW H2AM3A+FR1,57,-17,0 + LWWW H2AM3A+FR7,77,-25,0 + LWWW H3FR3A+FR2,77,21,0 + LWWW H3FR3A+FR3,49,57,0 + LWWW H3FR3A+FR4,-7,59,0 + LWWW H3FR3A+FR5,-46,41,0 + LWWW H3FR3A+FR6,-43,52,0 + LWWW H2CP3A+FR8,-115,-14,1 +#Razor + LWWW R4AH4C+FR3,9,-27,0 + LWWW R4AH4C+FR8,6,-27,0 + LWWW R3TD3A+FR1,41,-21,0 + LWWW R3TD3A+FR2,69,-27,0 + LWWW R3TD3A+FR4,72,29,0 + LWWW R3TD3A+FR5,46,44,0 + LWWW R3TD3A+FR6,-8,50,0 + LWWW R3TD3A+FR7,-43,52,0 + LWWW R3TD3A+FR8,-33,72,0 + LWWW R3GU2A+FR1,-142,-11,1 +#Taker + LWWW U4AH3A+FR2,-5,-19,0 + LWWW U3AE4A+FR1,3,-22,0 + LWWW U4AM4C+FR4,44,-16,0 + LWWW U3FH3A+FR1,65,-11,1 + LWWW U3FH3A+FR2,60,35,1 + LWWW U3FH3A+FR3,35,41,1 + LWWW U3FH3A+FR4,-21,47,1 + LWWW U3FH3A+FR5,-51,56,1 + LWWW U3FH3A+FR5,-30,81,1 + LWWW U3CP3B+FR1,-136,-7,1 +#Yokozuna + LWWW Y4AE4A+FR1,11,-33,0 + .ref Y2AM2C + LWWW Y2AM2C+FR1,18,-41,0 + LWWW Y3FL3W+FR1,53,-13,0 + LWWW Y3FL3W+FR2,61,-17,0 + LWWW Y3FL3W+FR3,67,23,0 + LWWW Y3FL3W+FR4,54,47,0 + LWWW Y3FL3W+FR5,8,56,0 + LWWW Y3FL3W+FR6,-39,58,0 + LWWW Y3FL3W+FR7,-42,56,0 + LWWW Y3FD3A+FR7,-89,13,0 + .long 0 +#Shawn + LWWW S3OS3X+FR1,8,-28,1 + LWWW S3OS3X+FR2,-12,-31,1 + LWWW S3OS3X+FR3,33,-12,1 + LWWW S3OS3X+FR4,38,-17,1 + LWWW S3OS3X+FR5,57,5,1 + LWWW S3OS3X+FR6,47,50,1 + LWWW S3OS3X+FR7,22,65,1 + LWWW S3OS3X+FR8,4,68,1 + LWWW S3OS3X+FR9,-61,71,1 + LWWW S3OS3X+FR10,-124,-6,1 +#BamBam + LWWW B4AH4A+FR1,-4,-33,0 + LWWW B4TD3B+FR1,-9,-35,0 + LWWW B4TD3B+FR2,33,-25,0 + LWWW B4TD3B+FR3,56,-30,0 + LWWW B4TD3B+FR4,79,7,0 + LWWW B4TD3B+FR5,57,45,0 + LWWW B4TD3B+FR6,14,75,0 + LWWW B4TD3B+FR7,-29,71,0 + LWWW B4TD3B+FR8,-40,81,0 + LWWW B4TD3B+FR9,-98,5,0 +#Doink + LWWW D3AE3B+FR7,1,-25,0 + LWWW D3AE3B+FR8,2,-28,0 + LWWW D3PM4C+FR2,26,-18,0 + LWWW D3OS3A+FR1,73,-27,0 + LWWW D3OS3A+FR2,82,2,0 + LWWW D3OS3A+FR3,57,12,0 + LWWW D3OS3A+FR5,31,41,0 + LWWW D3OS3A+FR6,-17,49,0 + LWWW D3FD3E+FR2,-47,57,0 + LWWW D3SA3A+FR8,-133,-6,1 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR2,4,-31,0 + LWWW L4AM4B+FR3,-6,-34,0 + LWWW L3FH3A+FR1,43,-21,0 + LWWW L3FH3A+FR2,74,-16,0 + LWWW L3FH3A+FR3,79,39,0 + LWWW L3FH3A+FR4,50,43,0 + LWWW L3FH3A+FR5,5,42,0 + LWWW L3FH3A+FR6,-35,50,0 + LWWW L3FH3A+FR6,-24,68,0 + LWWW L3CP3B+FR1,-130,-7,1 + +* +******** + +recover_tbl + .long hrt_hitonground_anim + .long rzr_hitonground_anim + .long und_hitonground_anim +; .long yok_frnk_backfire_anim + .long yok_hitonground_xflip_anim + .long shn_hitonground_anim + .long bam_hitonground_xflip_anim + .long dnk_hitonground_anim + .long 0 + .long lex_hitonground_anim + +;#backfire_tbl +; .long yok_frnk_backfire_anim +; .long yok_frnk_backfire_anim +; .long yok_frnk_backfire_anim +; .long yok_frnk_backfire_anim +; .long yok_frnk_backfire_anim +; .long yok_frnk_backfire_anim +; .long yok_frnk_backfire_anim +; .long yok_frnk_backfire_anim +; .long yok_frnk_backfire_anim + + +#flyout_tbl + .ref yok_flyout_anim + + .long hrt_flyout_anim + .long rzr_flyout_anim + .long und_flyout_anim + .long yok_flyout_anim + .long shn_flyout_anim + .long bam_flyout_anim + .long dnk_flyout_anim + .long 0 + .long lex_flyout_anim + +#release_offsets + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 20,0 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#***************************************************************************** +* +* SPIN KICK (combo version) + + SUBR shn_combo_spinkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SET_RPTCOUNT,4 ;5 times + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 11,999,30,50,90000h,TGT_HEAD,5,78,0 + + ;jump + WL 2,S4SK3Y+FR3 + WL 3,S4SK3Y+FR4 +#spin_loop + .word ANI_CLR_BUTCOUNT + WL 3,S4SK3Y+FR5 + WL 3,S4SK3Y+FR6 + WL 3,S4SK3Y+FR7 + + .word ANI_ATTACK_ON,AMODE_SPINKICK,22,91-24,47,19 + WWL ANI_WAITHITOPP,6,S4SK3Y+FR8 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed_c + .WORD ANI_INC_COMBO + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,20000H,18000h,0h ;x,y,z vels + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,0h,AM_ABS + WL 2,S4SK3Y+FR7 + WL 1,S4SK3Y+FR6 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#spin_loop + + WLW ANI_SET_XVEL,28000h,AM_FACE_REL + + WL 3,S4SK3Y+FR9 + WL 4,S4SK3Y+FR10 + WL 3,S4SK3Y+FR11 + WL 4,S3GU2A+FR9 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NO_SLAM + WL ANI_CHANGEANIM,shn_combo_hiptoss_anim + +#NO_SLAM + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_KNEE + WL ANI_CHANGEANIM,shn_combo_flying_kick_anim + +#NO_KNEE + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NO_SUPLEX + WL ANI_CHANGEANIM,shn_combo_gsuplex_anim + +#NO_SUPLEX + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#EXIT_MOVE + WL ANI_CHANGEANIM,shn_combo_knee_anim + +#EXIT_MOVE + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed_c + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES +#cont_c + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4SK3Y+FR9 + WL 3,S4SK3Y+FR10 + WL 3,S4SK3Y+FR11 + WL 3,S3GU2A+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* SPIN KICK + + SUBR shn_spinkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,12 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 11,999,50,50,90000h,TGT_HEAD,10,78,0 + + ;jump + WL 2,S4SK3Y+FR3 + WL 2,S4SK3Y+FR4 + WL 2,S4SK3Y+FR5 + WL 2,S4SK3Y+FR6 + WL 3,S4SK3Y+FR7 + + .word ANI_ATTACK_ON,AMODE_SPINKICK,22,91-24,47,19 + WWL ANI_WAITHITOPP,6,S4SK3Y+FR8 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_5,1,1 + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_slide + + ;-hit, slide + WL ANI_SET_YVEL,50000h + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + WL ANI_GOTO,#cont + +#no_slide + WL ANI_IFNOTSTATUS,#missed + + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + ;-hit, no slide + WL ANI_SET_YVEL,30000h + WL ANI_CODE,#reverse_xvel + WL ANI_GOTO,#cont + +#missed + ;-missed + WL ANI_CODE,CALL_MISSES +#cont + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4SK3Y+FR9 + WL 3,S4SK3Y+FR10 + WL 3,S4SK3Y+FR11 +; WL 3,S4SK3Y+FR12 + WL 3,S3GU2A+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#reverse_xvel + move *a13(OBJ_XVEL),a14,L + neg a14 + sra 2,a14 + move a14,*a13(OBJ_XVEL),L + rets + +#***************************************************************************** +* +* SPIN KICK - Against TB attacks + + SUBR shn_spinkick_TB_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_STARTATTACK,AT_LEAPING,12 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WL 3,S4SK3Y+FR3 + WL ANI_SET_YVEL,70000h + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL 3,S4SK3Y+FR4 + WL 3,S4SK3Y+FR5 + WL 3,S4SK3Y+FR6 + .word ANI_ATTACK_ON,AMODE_SPINKICK,12,91-34,57,39 + WL 3,S4SK3Y+FR7 + WL 8,S4SK3Y+FR8 + .word ANI_ATTACK_OFF + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,S4SK3Y+FR9 + WL 3,S4SK3Y+FR10 + WL 3,S4SK3Y+FR11 + WL 3,S3GU2A+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* SPEED KICK + + SUBR shn_super_speedkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,3 ;3 times + + .word ANI_STARTATTACK,AT_KICK,9 + WL 2,S4KI3Q+FR1 + + .word ANI_CLR_BUTCOUNT + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 08h,999,30,40,90000h,TGT_HEAD,75,90,-10 + WL ANI_CODE,no_bk_xvel + + WL ANI_SET_YVEL,30000h + + WL 2,S4KI3Q+FR2 + WL 2,S4KI3Q+FR3 + WL 2,S4KI3Q+FR4 + WL 2,S4KI3Q+FR5 + .word ANI_ATTACK_ON,AMODE_SHNSPDKIK,40,76,49,30 + WL 4,S4KI3Q+FR6 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 +; WL ANI_IFBLOCKED,#missedb + WL ANI_IFSTATUS,#gothim + +;miss + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4KI3Q+FR7 + WL 3,S4KI3Q+FR8 + WL 3,S4KI3Q+FR9 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;#missedb +;;miss +; .word ANI_ZERO_XZVELS +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS +; WL 15,S4KI3Q+FR6 +; WL 3,S4KI3Q+FR7 +; WL 3,S4KI3Q+FR8 +; WL 3,S4KI3Q+FR9 +; WL 3,S4KI3Q+FR4 +; WL 3,S4KI3Q+FR3 +; WL 3,S4KI3Q+FR2 +; WL 3,S4KI3Q+FR1 +; +; .word ANI_FACEDOWN +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END + +#loop + .word ANI_CLR_BUTCOUNT + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 05h,999,30,40,90000h,TGT_HEAD,75,105,-10 + + WL ANI_SET_YVEL,30000h + + WL 2,S4KI3Q+FR4 + WL 2,S4KI3Q+FR5 + .word ANI_ATTACK_ON,AMODE_SHNSPDKIK,40,76,49,30 + WL 4,S4KI3Q+FR6 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_6,2,2 + WL ANI_IFBLOCKED,#missedb2 + WL ANI_IFSTATUS,#gothim + +#missedb2 +;miss + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 15,S4KI3Q+FR6 + WL 3,S4KI3Q+FR7 + WL 3,S4KI3Q+FR8 + WL 3,S4KI3Q+FR9 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gothim + .word ANI_ZERO_XZVELS + WL ANI_CODE,#set_opp_xy + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + WL 2,S4KI3Q+FR7 + WL 2,S4KI3Q+FR8 + WL 2,S4KI3Q+FR9 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#fail + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#loop + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 05h,999,30,40,90000h,TGT_HEAD,75,105,-10 + + WL ANI_SET_YVEL,30000h + + WL 2,S4KI3Q+FR4 + WL 2,S4KI3Q+FR5 + .word ANI_ATTACK_ON,AMODE_SHNSPDKIK2,40,76,49,30 + WL 4,S4KI3Q+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#gothim2 + +;miss + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4KI3Q+FR7 + WL 3,S4KI3Q+FR8 + WL 3,S4KI3Q+FR9 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#gothim2 + .word ANI_ZERO_XZVELS + WL ANI_CODE,#set_opp_xy + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .word ANI_DRAW_NAME,37 + + WL 2,S4KI3Q+FR7 + WL 2,S4KI3Q+FR8 + WL 2,S4KI3Q+FR9 +#fail + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +#miss + WL 3,S4KI3Q+FR7 + WL 3,S4KI3Q+FR8 + WL 3,S4KI3Q+FR9 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBRP #set_opp_xy + move *a13(WHOIHIT),a0,L + + move *a0(PLYRMODE),a14 + cmpi MODE_BLOCK,a14 + jreq #noz + + movi -[2,0],a14 + move a14,*a0(OBJ_ZVEL),L + +#noz movi [3,0],a14 + move a14,*a0(OBJ_YVEL),L + + move *a13(INRING),a1 + jrnz #ok + + move *a13(OBJ_XPOSINT),a14 + subi RING_X_MID,a14 + abs a14 + cmpi 0a0h,a14 + jrlt #ok + +; rets + +#ok + movi -[3,0],a1 + move *a0(NEW_FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs ;right + neg a1 ;left +#abs + move a1,*a0(OBJ_XVEL),L + + rets + +#***************************************************************************** +* +* HIPTOSS (combo version) +* + + SUBR shn_combo_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,50,0,0 + WL ANI_SET_YVEL,0000h + + WL 3,S4GS3C+FR1 + + .word ANI_SET_RPTCOUNT,4 ;5 times + + .word ANI_ATTACK_ON, AMODE_PUPPET,62,49,21,39 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,S4GS3C+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,S4GS3C+FR2 + .word ANI_ATTACK_OFF + +;#common + WL ANI_IFNOTSTATUS,#missed_c + WL ANI_IFBLOCKED,#missed_c + + WL ANI_CODE,CALL_OTHER_AVERAGE + WL ANI_CODE,DO_GRUNT + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR2,#puppet_tbl,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWWL ANI_IFROPE,RC_BACK,100,#throw_him_out_c + + WWLLW ANI_SUPERSLAVE2,2,S4GS3C+FR2,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR7,#puppet_tbl,4 + + .word ANI_CLR_BUTCOUNT +#bslam_loop + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR8,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR9,#puppet_tbl,6 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + .word ANI_OPP_GETUP,300 + .WORD ANI_INC_COMBO + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR10,#puppet_tbl,7 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#EXIT_BSLAM + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#exit + .word ANI_CLR_BUTCOUNT + WWLLW ANI_SUPERSLAVE2,5,S4GS3C+FR9,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,5,S4GS3C+FR8,#puppet_tbl,5 + + .WORD ANI_XFLIP + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR7,#puppet_tbl,4 + + WL ANI_GOTO,#bslam_loop +#exit + WL ANI_OPPOFFSET,#release_offsets + WL ANI_SLAVEANIM,#recover_tbl + .word ANI_DETACH + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WL 8,S4GS3C+FR11 + WL 4,S4GS3C+FR12 + .word ANI_OPP_GETUP,-300 + + WWWL ANI_IF_BUTCOUNT_LT,BLOCKB_COUNT,1,#EXIT_BSLAM + .WORD ANI_XFLIP + WL ANI_CHANGEANIM,shn_combo_run_stomp_anim + +#EXIT_BSLAM + .word ANI_OPP_GETUP,5 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_OPPOFFSET,#release_offsets + WL ANI_SLAVEANIM,#recover_tbl + .word ANI_DETACH + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WL 8,S4GS3C+FR11 + WL 4,S4GS3C+FR12 + .word ANI_XFLIP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed_c + WL 10,S4GS3C+FR2 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_SETFACING + .word ANI_ZEROVELS + WL 5,S4GS3C+FR2 + WL 5,S4GS3C+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out_c + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#throw_him_out + + SUBR shn_4combo_bslam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,4 + + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,50,0,0 + WL ANI_SET_YVEL,0000h + + + WL 3,S4GS3C+FR1 + + ;temp! + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_PUPPET,62,49,21,39 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,S4GS3C+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,4,S4GS3C+FR2 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedxc + WL ANI_IFBLOCKED,#missedxc + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR2,#puppet_tbl,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WWWL ANI_IFROPE,RC_BACK,100,#throw_him_outxc + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR7,#puppet_tbl,4 + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR8,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR9,#puppet_tbl,6 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + .word ANI_OPP_GETUP,300 + + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR10,#puppet_tbl,7 + + WL ANI_OPPOFFSET,#release_offsets + WL ANI_SLAVEANIM,#recover_tbl + .word ANI_DETACH + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WL 8,S4GS3C+FR11 + WL 4,S4GS3C+FR12 + .word ANI_XFLIP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#missedbxc + WL 5,S4GS3C+FR2 +#missedxc + WL ANI_CODE,CALL_MISSES + WL 10,S4GS3C+FR2 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_WAITHITGND + .word ANI_SETFACING + .word ANI_ZEROVELS + WL 5,S4GS3C+FR2 + WL 5,S4GS3C+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_outxc + WL ANI_CODE,CALL_THROWN_OUT + ;since we're gonna throw him out anyhow, turn off confine. + .word ANI_SETOPPMODE,MODE_NOCONFINE + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,1,S4GS3C+FR7,#puppet_tbl,4 + WLLL ANI_ATTACHVEL,-0A0000h,80000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,release_table + .word ANI_DETACH + + WL 3,S4GS3C+FR7 + WL 3,S4GS3C+FR8 + WL 4,S4GS3C+FR9 + WL 4,S4GS3C+FR10 + WL 8,S4GS3C+FR11 + WL 4,S4GS3C+FR12 + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* HIPTOSS +* +* only difference between standing and normal bodyslam is that the attack +* frame on the standing slam isn't held as long. Use the normal if opponent +* is running, or the standing otherwise. +* + + SUBR shn_2_hiptoss2_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,6 +; WL 2,S1TT5Z+FR2 ;2.5 +; WL 2,S1TT5Z+FR3 ;3.5 + + SUBR shn_4_hiptoss2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,60,55,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,S4GS3C+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET_TOSS,33,36,44,48 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,8,S4GS3C+FR2 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL ANI_GOTO,#cont + + SUBR shn_2_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 +; WL 2,S1TT5Z+FR2 ;2.5 +; WL 2,S1TT5Z+FR3 ;3.5 + + SUBR shn_4_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,50,0,0 + WL ANI_SET_YVEL,0000h + + WL 4,S4GS3C+FR1 + + .word ANI_ATTACK_ON,AMODE_PUPPET_TOSS,22,49,61,39 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,S4GS3C+FR2 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL 4,S4GS3C+FR2 +#cont + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#got_him + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + .word ANI_DRAW_NAME,6 + WL ANI_CODE,DO_GRUNT + + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,3,S4GS3C+FR2,#puppet_tbl,0 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWWL ANI_IFROPE,RC_BACK,100,#throw_him_out + + WWLLW ANI_SUPERSLAVE2,3,S4GS3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,S4GS3C+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,S4GS3C+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,S4GS3C+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,S4GS3C+FR8,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,S4GS3C+FR9,#puppet_tbl,6 + + ;impact + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,CALL_OTHER_AVERAGE + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + .word ANI_OPP_GETUP,300 + + WWLLW ANI_SUPERSLAVE2,3,S4GS3C+FR10,#puppet_tbl,7 + + WL ANI_OPPOFFSET,#release_offsets + WL ANI_SLAVEANIM,#recover_tbl + .word ANI_DETACH + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WL 7,S4GS3C+FR11 + WL 3,S4GS3C+FR12 + .word ANI_XFLIP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb +; .ref ck_hiptoss +; WL ANI_CODE,ck_hiptoss +; WL ANI_IFNOTSTATUS,#got_him + + WL 10,S4GS3C+FR2 +;Delay longer if 2nd hiptoss in quick succession! + .ref hiptoss_delay + WL ANI_CODE,hiptoss_delay + WL ANI_IFNOTSTATUS,#missed + WL 24,S4GS3C+FR2 +#missed + WL ANI_CODE,CALL_MISSES + WL 4,S4GS3C+FR2 + + .word ANI_WAITHITGND + .word ANI_SETFACING + .word ANI_ZEROVELS + WL 4,S4GS3C+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WL ANI_CODE,CALL_THROWN_OUT + ;since we're gonna throw him out anyhow, turn off confine. + .word ANI_SETOPPMODE,MODE_NOCONFINE + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GS3C+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,1,S4GS3C+FR7,#puppet_tbl,4 + WLLL ANI_ATTACHVEL,-0A0000h,80000h,0h ;x,y,z + WL ANI_OPPOFFSET,release_table + WL ANI_SLAVEANIM,#flyout_tbl + .word ANI_DETACH + + WL 3,S4GS3C+FR7 + WL 3,S4GS3C+FR8 + WL 3,S4GS3C+FR9 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,15 + WL 3,S4GS3C+FR10 + WL 4,S4GS3C+FR11 + WL 3,S4GS3C+FR12 + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +release_table + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 8,0 ;Shawn + .word 8,0 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +******** +* #include "s_bslm.img" + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AH3A+FR5,49,27,0 + LWWW H2AM3A+FR1,39,30,0 + LWWW H2AM3A+FR7,37,6,0 + LWWW H3FR3A+FR2,16,21,0 + LWWW H3FR3A+FR3,0,49,0 + LWWW H3FR3A+FR4,-14,57,0 + LWWW H3FR3A+FR5,-35,38,0 + LWWW H2CP3A+FR8,-150,-69,1 +#Razor + LWWW R4AH4C+FR3,54,31,0 + LWWW R3TD3A+FR1,25,31,0 + LWWW R3TD3A+FR2,36,8,0 + LWWW R3TD3A+FR4,2,22,0 + LWWW R3TD3A+FR5,2,36,0 + LWWW R3TD3A+FR6,-6,47,0 + LWWW R3TD3A+FR7,-32,41,0 + LWWW R3GU2A+FR1,-160,-64,1 +#Taker + LWWW U3AE4A+FR1,50,37,0 + LWWW U4AM4C+FR4,23,35,0 + LWWW U3FH3A+FR1,33,17,1 + LWWW U3FH3A+FR2,5,35,1 + LWWW U3FH3A+FR3,-5,43,1 + LWWW U3FH3A+FR4,-22,54,1 + LWWW U3FH3A+FR5,-46,55,1 + LWWW U3CP3B+FR1,-163,-60,1 +#Yokozuna + .ref Y4AE4A + LWWW Y4AE4A+FR1,64,25,0 + LWWW Y3FL3W+FR1,34,32,0 + LWWW Y3FL3W+FR2,28,16,0 + LWWW Y3FL3W+FR3,-1,26,0 + LWWW Y3FL3W+FR4,-10,39,0 + LWWW Y3FL3W+FR5,-24,37,0 + LWWW Y3FL3W+FR6,-38,36,0 + LWWW Y3FD3A+FR7,-131,-42,0 + .long 0 +#Shawn + LWWW S3OS3X+FR2,39,23,1 + LWWW S3OS3X+FR3,19,20,1 + LWWW S3OS3X+FR4,3,11,1 + LWWW S3OS3X+FR5,-21,20,1 + LWWW S3OS3X+FR6,-24,51,1 + LWWW S3OS3X+FR7,-22,47,1 + LWWW S3OS3X+FR9,-50,41,1 + LWWW S3OS3X+FR10,-137,-61,1 +#BamBam + LWWW B4AH4A+FR1,44,26,0 + LWWW B4TD3B+FR2,15,23,0 + LWWW B4TD3B+FR3,13,10,0 + LWWW B4TD3B+FR4,12,17,0 + LWWW B4TD3B+FR5,-5,55,0 + LWWW B4TD3B+FR6,-9,66,0 + LWWW B4TD3B+FR7,-21,61,0 + LWWW B4TD3B+FR9,-136,-47,0 +#Doink + LWWW D3AE3B+FR8,47,26,0 + LWWW D3PM4C+FR2,8,25,0 + LWWW D3OS3A+FR1,25,10,0 + LWWW D3OS3A+FR2,-10,17,0 + LWWW D3OS3A+FR3,-23,22,0 + LWWW D3OS3A+FR4,-21,29,0 + LWWW D3OS3A+FR6,-26,34,0 + LWWW D3FD3E+FR2,-83,-26,0 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR2,51,28,0 + LWWW L3FH3A+FR1,24,18,0 + LWWW L3FH3A+FR2,27,2,0 + LWWW L3FH3A+FR3,10,28,0 + LWWW L3FH3A+FR4,6,37,0 + LWWW L3FH3A+FR5,-5,39,0 + LWWW L3FH3A+FR6,-23,48,0 + LWWW L3CP3B+FR1,-143,-59,1 +* +******** + +#recover_tbl + .long hrt_hitonground_anim,rzr_hitonground_anim + .long und_hitonground_anim,yok_hitonground_xflip_anim + .long shn_hitonground_anim,bam_hitonground_xflip_anim + .long dnk_hitonground_xflip_anim,0,lex_hitonground_anim + +#flyout_tbl + .long hrt_flyout_anim,rzr_flyout_anim,und_flyout_anim + .long yok_flyout_anim + .long shn_flyout_anim,bam_flyout_anim,dnk_flyout_anim + .long 0,lex_flyout_anim + +#release_offsets + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 20,0 ;BamBam + .word 30,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#****************************************************************************** + + SUBR shn_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 2,S1TT5Z+FR2 ;2.5 + WL 2,S1TT5Z+FR3 ;3.5 + + SUBR shn_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Put cool cheers here +; .word ANI_RAWSOUND,2055 ;big cheer #1 +; .word ANI_CHEER,3 + + WL 3,S4GH3A+FR1 + + LEAPATOPP 8,999,80,80,30000h,TGT_HEAD,46-10,6,-2 + + WL 4,S4GH3A+FR2 + WL 4,S4GH3A+FR3 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET2,21,1,31,18 ;mode,x,y,w,h + WL 4,S4GH3A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,clear_opp_counts + + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,98h ;neck break (5-7 ticks late) + + WWLLW ANI_SUPERSLAVE2,3,S4GH3A+FR6,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,S4GH3A+FR7,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,S4GH3A+FR8,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,S4GH3A+FR9,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,S4GH3C+FR8,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,S4GH3C+FR8,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,S4GH3C+FR8 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,S4GH3A+FR4 + WL 3,S4GH3A+FR3 + WL 3,S4GH3A+FR2 + WL 3,S4GH3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,33,-33,0 + LWWW H3GU4A+FR3,40,-41,0 + LWWW H3DU3A+FR3,38,-43,1 + LWWW H3DU3A+FR4,48,-31,1 + LWWW H3DU3A+FR5,49,-34,1 + LWWW H3BF3A+FR1,55,-30,0 + .long 0 +#Razor + LWWW R3GU2A+FR3,35,-24,0 + LWWW R3GU4A+FR4,30,-35,0 + LWWW R3GU4A+FR6,38,-40,0 + LWWW R3DU3B+FR2,40,-45,1 + LWWW R3DU3B+FR4,52,-33,1 + LWWW R3BF3A+FR1,56,-32,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,38,-25,1 + LWWW U3DU3B+FR5,40,-31,1 + LWWW U3DU3B+FR6,45,-42,1 + LWWW U3DU3B+FR8,47,-35,1 + LWWW U3DU3B+FR10,50,-26,1 + LWWW U4BF3Z+FR5,58,-11,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,31,-19,0 + LWWW Y3GU2A+FR3,43,-22,0 + LWWW Y3GU2A+FR4,18,-38,0 + LWWW Y3GU2A+FR7,25,-46,0 + LWWW Y3GU2A+FR11,52,-37,0 + LWWW Y3BF3A+FR1,53,-20,0 + .long 0 +#Shawn + LWWW S3GU2A+FR1,40,-27,0 + LWWW S3GU4A+FR2,35,-33,0 + LWWW S3GU4A+FR4,48,-49,0 + LWWW S3GU4A+FR6,52,-33,0 + LWWW S3GU4A+FR7,56,-40,0 + LWWW S3BF3A+FR1,41,-31,0 ;Fixed! + .long 0 +#BamBam + LWWW B3GU4A+FR3,33,-23,0 + LWWW B3GU4A+FR5,35,-32,0 + LWWW B3GU4A+FR7,40,-41,0 + LWWW B3GU4A+FR8,42,-35,0 + LWWW B3GU4A+FR10,51,-33,0 + LWWW B3BF3C+FR5,56,-24,0 + .long 0 +#Doink + LWWW D3GU4A+FR2,36,-30,0 + LWWW D3GU4A+FR3,32,-39,0 + LWWW D3GU4A+FR4,36,-56,0 + LWWW D3GU4A+FR5,34,-44,0 + LWWW D3GU4A+FR7,57,-43,0 + LWWW D3BF3A+FR2,50,-30,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GU4A+FR1,38,-27,0 + LWWW L3DU3A+FR4,18,-30,1 + LWWW L3DU3A+FR6,25,-44,1 + LWWW L3DU3A+FR7,34,-37,1 + LWWW L3DU3A+FR9,51,-35,1 + LWWW L3BF3B+FR5,49,-28,0 + .long 0 + + +#***************************************************************************** + + SUBR shn_speed_spinkick_anim +;From head hold + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,4 ;2 times + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 +#rpt_loop + .word ANI_CLR_BUTCOUNT + + WL 2,S4KI3Q+FR1 + WL 1,S4KI3Q+FR2 + WL 2,S4KI3Q+FR3 + WL 1,S4KI3Q+FR4 + WL 2,S4KI3Q+FR5 + .word ANI_ATTACK_ON,AMODE_HEADKNEES,50,56,49,50 + WL 2,S4KI3Q+FR6 + .word ANI_ATTACK_OFF + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#missed2 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop + +;Completed multiple uppercuts, allow flings, etc. + .word ANI_SET_ATTACH + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#missed2 + + ;do a spin kick + .word ANI_DETACH + WL ANI_SET_YVEL,60000h + + ;jump + WL 2,S4SK3Y+FR3 + WL 2,S4SK3Y+FR4 + WL 2,S4SK3Y+FR5 + WL 2,S4SK3Y+FR6 + WL 2,S4SK3Y+FR7 + + .word ANI_ATTACK_ON,AMODE_SPINKICK,22,91-24-20,47,19+20 + WL 6,S4SK3Y+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + .word ANI_ZERO_XZVELS + WLW ANI_SET_ZVEL,20000h,AM_ABS +#missed + WL 4,S4SK3Y+FR9 + WL 4,S4SK3Y+FR10 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,S4SK3Y+FR11 + WL 4,S3GU2A+FR9 + + .word ANI_FACEUP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed2 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#missed3 + .ref shn_flying_kick_anim + WL ANI_CHANGEANIM,shn_flying_kick_anim +; .word ANI_END + +#missed3 + WL 3,S4KI3Q+FR8 + WL 3,S4KI3Q+FR9 + WL 3,S4KI3Q+FR4 + WL 3,S4KI3Q+FR3 + WL 3,S4KI3Q+FR2 + WL 3,S4KI3Q+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#exit + .word ANI_DETACH + WL 4,S4KI3Q+FR7 + WL 4,S4KI3Q+FR8 + WL 4,S4KI3Q+FR9 + WL 4,S4KI3Q+FR4 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR shn_knee_fstein_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SET_RPTCOUNT,4 ;3 times + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 +#rpt_loop + .word ANI_CLR_BUTCOUNT + +;kick + WL 2,S4KM3C+FR2 + WL 2,S4KM3C+FR3 + WL 2,S4KM3C+FR4 + WL ANI_SET_YVEL,20000h + .word ANI_ATTACK_ON, AMODE_HEADKNEES,27,59,68,20 ;mode,x,y,w,h + WL 2,S4KM3C+FR5 + .word ANI_ATTACK_OFF + WL 2,S4KM3C+FR6 + WL 2,S4KM3C+FR7 + WL 2,S4KM3C+FR8 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt_loop + +;Completed multiple uppercuts, allow flings, etc. + .word ANI_SET_ATTACH + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit + +;fstein + WLW ANI_SET_XVEL,68000h,AM_FACE_REL + WL ANI_SET_YVEL,50000h + WL ANI_CHANGEANIM,shn_fstein2_anim + +#exit + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#exit2 + .word ANI_DETACH + WL ANI_CHANGEANIM,shn_4combo_bslam_anim +; .word ANI_END +#exit2 + .word ANI_DETACH + WL 3,S4NM3A+FR5 + WL 3,S4NM3A+FR6 + WL 3,S4NM3A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#****************************************************************************** + + SUBR shn_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,S4CO4A+FR1 + WL 4,S4CO4A+FR2 + WL 4,S4CO4A+FR3 + WL 4,S4CO4A+FR4 + WL 4,S4CO4A+FR5 + WL 4,S4CO4A+FR6 + + WL 4,S4CO4A+FR7 + WL 4,S4CO4A+FR8 + WL 4,S4CO4A+FR7 + WL 4,S4CO4A+FR6 + WL 3,S4CO4A+FR5 + WL 3,S4CO4A+FR4 + + WL 3,S4CO4A+FR3 + WL 3,S4CO4A+FR2 + WL 3,S4CO4A+FR3 + WL 3,S4CO4A+FR4 + +; WL 4,S4CO4A+FR5 +; WL 4,S4CO4A+FR6 +; WL 4,S4CO4A+FR7 +; WL 4,S4CO4A+FR8 +; WL 4,S4CO4A+FR7 +; WL 4,S4CO4A+FR6 +; WL 4,S4CO4A+FR5 +; WL 4,S4CO4A+FR4 + + WL 2,S4CO4A+FR3 + WL 2,S4CO4A+FR2 + WL 2,S4CO4A+FR1 + +; .ref set_taunt_bit +; WL ANI_CODE,set_taunt_bit + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,shn_stand4_anim +; .word ANI_END + +#***************************************************************************** +* +* REALLY BITCHIN' #3 TWO-FOOTED RUNNING STOMP +* + +#yoff equ 15 + + SUBR shn_combo_run_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_BUTCOUNT + .word ANI_SET_RPTCOUNT,4 + + WL 4,S4MP4D+FR1 + .word ANI_OFFSET,0,#yoff,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,100,60,90000h,TGT_GROIN,19,9,0 + + WL 4,S4MP4D+FR2 + WL 4,S4MP4D+FR3 + WL 4,S4MP4D+FR4 + WL ANI_SET_YVEL,-20000h + WL ANI_GOTO,#attack_c + +#attack_loop_c + .word ANI_CLR_BUTCOUNT + WWL ANI_SETLONG,OBJ_GRAVITY,0a000h + WL ANI_SET_YVEL,60000h + + WL 2,S4MP4D+FR6 + WL 1,S4MP4D+FR7 + WL 2,S4MP4D+FR8 + WL 1,S4MP4D+FR1 + .word ANI_OFFSET,0,#yoff,0 + WL 2,S4MP4D+FR2 + WL 1,S4MP4D+FR2 + WL 3,S4MP4D+FR3 + WL 2,S4MP4D+FR4 + +#attack_c + .word ANI_ATTACK_ON,AMODE_STOMP,-18,3-12,56,43+12 + WWL ANI_WAITHITOPP,12,S4MP4D+FR5 + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY +#atk_on_c + .word ANI_ATTACK_OFF + + ;check for a good hit + WL ANI_IFNOTSTATUS,#missed_c + WWL ANI_IFOPPMODE,MODE_DEAD,#gothim + WWL ANI_IFOPPMODE,~MODE_ONGROUND,#missed_c +#gothim .word ANI_INC_COMBO + + WL ANI_CODE,MAKE_HIM_SCREAM + WL ANI_CODE,HIT_THE_MAT + ;hit. shake ring & ropes + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#done_c + + ;any button will do + WWWL ANI_IF_BUTCOUNT_GE,BLOCKB_COUNT,1,#attack_loop_c +#done_c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#done + +#missed_c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#missed + + SUBR shn_run_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + .word ANI_CLR_BUTCOUNT + .word ANI_SET_RPTCOUNT,4 + + WL 3,S4MP4D+FR1 + .word ANI_OFFSET,0,#yoff,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 20,999,100,60,90000h,TGT_GROIN,19,9,0 + LEAPATOPP 20,999,160,140,90000h,TGT_GROIN,19,9,0 + WL ANI_CODE,no_bk_xvel + + WL 4,S4MP4D+FR2 + WL 4,S4MP4D+FR3 + WL 4,S4MP4D+FR4 + WL ANI_SET_YVEL,-20000h + WL ANI_GOTO,#attack + +#attack_loop + .word ANI_CLR_BUTCOUNT + WWL ANI_SETLONG,OBJ_GRAVITY,0a000h + WL ANI_SET_YVEL,60000h + + WL 2,S4MP4D+FR6 + WL 2,S4MP4D+FR7 + WL 2,S4MP4D+FR8 + WL 2,S4MP4D+FR1 + .word ANI_OFFSET,0,#yoff,0 + WL 2,S4MP4D+FR2 + WL 2,S4MP4D+FR2 + WL 4,S4MP4D+FR3 + WL 4,S4MP4D+FR4 + +#attack + WL ANI_CODE,#reduce_dmg + .word ANI_ATTACK_ON,AMODE_STOMP,-18,3-12,56,43+12 + WWL ANI_WAITHITOPP,12,S4MP4D+FR5 + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY +#atk_on + .word ANI_ATTACK_OFF + + ;check for a good hit + WL ANI_IFNOTSTATUS,#missed + WWL ANI_IFOPPMODE,MODE_ONGROUND,#hit + WWL ANI_IFOPPMODE,MODE_DEAD,#hit +#hit + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,MAKE_HIM_SCREAM + ;hit. shake ring & ropes + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#done + + ;any button will do + WWWL ANI_IF_BUTCOUNT_GE,KICKB_COUNT,2,#attack_loop + WWWL ANI_IF_BUTCOUNT_GE,SKICKB_COUNT,2,#attack_loop +; WWWL ANI_IF_BUTCOUNT_GE,PUNCHB_COUNT,2,#attack_loop +; WWWL ANI_IF_BUTCOUNT_GE,SPUNCHB_COUNT,2,#attack_loop + + ;no presses. bounce off. + +#done + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,28000h,AM_FACE_REL + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL 4,S4MP4D+FR2 + WL 1,S4MP4D+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#reduce_dmg +;Neck breaker may take awhile + .ref PCNT + SPCDMG D_STOMP2,40 + rets + +#missed + WL 2,S4MP4D+FR6 + WL 2,S4MP4D+FR7 + WL 2,S4MP4D+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR shn_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 1,S3CF3Z+FR1 + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,80000h + WL 1,S3CF3Z+FR1 + WL 3,S3CF3Z+FR2 + WL 3,S3CF3Z+FR3 + WL 3,S3CF3Z+FR4 + WL 3,S3CF3Z+FR5 + WL 3,S3CF3Z+FR6 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL 3,S3CF3Z+FR1 + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + SUBR shn_break_face3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL 3,S3MS3Z+FR3 + WL ANI_SET_YVEL,078000h + WL 100,S3MS3Z+FR3 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + +* Head slams into mat +;From head slam + + SUBR shn_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 1,S3CF3Z+FR1 + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,40000h + WL 3,S3CF3Z+FR1 + WL 3,S3CF3Z+FR2 + WL 3,S3CF3Z+FR3 + WL 3,S3CF3Z+FR4 + WL 3,S3CF3Z+FR5 + WL 3,S3CF3Z+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,S3CF3Z+FR1 + WL 3,S3CF3Z+FR2 + WL 3,S3CF3Z+FR3 + WL 3,S3CF3Z+FR4 + WL 3,S3CF3Z+FR5 + WL 3,S3CF3Z+FR6 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,S3CF3Z+FR1 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + +#***************************************************************************** +* +* SLIDING KICKTOSS +* + + SUBR shn_combo_sliding_kicktoss_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WL 3,S3SK3A+FR1 + WL 3,S3SK3A+FR2 + + .word ANI_CLR_BUTCOUNT + LEAPATOPP 10,999,180,100,90000h,TGT_FEET,0,0,0 + WL ANI_SET_YVEL,0 + + .word ANI_FRICTION,4000h + + WL 3,S3SK3A+FR3 + WL 3,S3SK3A+FR4 + WL 3,S3SK3A+FR5 + + .word ANI_ATTACK_ON,AMODE_PUPPET,-72,0,72,15 + .word ANI_XFLIP + WWL ANI_WAITHITOPP,10,S3SK3A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed_c + WL ANI_IFBLOCKED,#blocked_c + + ;hit. toss him over. + + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_ATTACHZ,0,0,-4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_FRICTION,05000h + WWLLW ANI_SUPERSLAVE2,10,S3SK3A+FR6,#puppet_tbl,0 + WL ANI_CODE,#grunt + .word ANI_XFLIP + WWLLW ANI_SUPERSLAVE2,4,S3KT3A+FR2,#puppet_tbl,1 + .word ANI_ZEROVELS + WWLLW ANI_SUPERSLAVE2,4,S3KT3A+FR3,#puppet_tbl,2 + + .WORD ANI_INC_COMBO + + ;let go + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_XFLIP_OPP ;106 + WL ANI_SLAVEANIM,#SPECIAL_RELEASE_TBL + + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_DAMAGEOPP,D_KICKTOSS,RD_KICKTOSS + WL ANI_CODE,HIT_THE_MAT + + WL 4,S3KT3A+FR4 + WLLL ANI_SETOPPVELS,0,0a0000h,0h ;x,y,z vels + .word ANI_DETACH + WL 2,S3KT3A+FR5 + WL 2,S3KT3A+FR6 + WL 2,S3KT3A+FR7 + + ;and immediately get up + WL 2,S3KT3A+FR8 + .word ANI_OFFSET,-9,2,0 + WL 1,S3FD3X+FR1 + WL 2,S3UC3X+FR6 + WL 1,S3KF3C+FR1 + WL 2,S3KF3C+FR2 + WL 1,S3KF3C+FR3 + .word ANI_WAITHITGND + WL 2,S3KF3C+FR4 + WL 1,S3KF3C+FR5 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NO_FLIPING + WL ANI_CHANGEANIM,shn_combo_flipslam_anim + +#NO_FLIPING + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_FRANK + WL ANI_CHANGEANIM,shn_combo_fstein_anim + +#NO_FRANK + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#blocked_c + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,S3SK3A+FR6 + .word ANI_ZEROVELS + WL 5,S3SK3A+FR6 +#missed_c + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,S3SK3A+FR6 + .word ANI_ZEROVELS + WL 3,S3SK3A+FR6 ;30 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,shn_faceup_getup_anim +; .word ANI_END + +#release_offsets2 + ; X Y + .word 40,30 ;Bret + .word 10,30 ;Razor + .word 40,30 ;Taker + .word 20,30 ;Yokozuna + .word 40,30 ;Shawn + .word 40,30 ;BamBam + .word 40,30 ;Doink + .word 40,30 ;Adam + .word 20,30 ;Lex + + +#SPECIAL_RELEASE_TBL + .ref hrt_up_anim + .ref rzr_up_anim + .ref und_up_anim + .ref yok_up_anim + .ref shn_up_anim + .ref bam_up_anim + .ref dnk_up_anim + .ref lex_up_anim + + .long hrt_up_anim + .long rzr_up_anim + .long und_up_anim + .long yok_up_anim + .long shn_up_anim + .long bam_up_anim + .long dnk_up_anim + .long 0 + .long lex_up_anim + + + SUBR shn_sliding_kicktoss_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + +; .word ANI_IFOPP,W_SHAWN,-1 +; WL ANI_IFNOTSTATUS,#missed + + .word ANI_STARTATTACK,AT_PUPPET,15 + + WL 3,S3SK3A+FR1 + WL 3,S3SK3A+FR2 + + LEAPATOPP 16,999,180,100,90000h,TGT_FEET,0,0,0 + WL ANI_SET_YVEL,0 + WL ANI_CODE,no_bk_xvel + + .word ANI_FRICTION,4000h + + WL 3,S3SK3A+FR3 + WL 3,S3SK3A+FR4 + WL 3,S3SK3A+FR5 + + .word ANI_ATTACK_ON,AMODE_PUPPET,-72,0,72,15 + .word ANI_XFLIP + WWL ANI_WAITHITOPP,10,S3SK3A+FR6 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#blocked + + ;hit. toss him over. + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_ATTACHZ,0,0,-4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_FRICTION,05000h + WWLLW ANI_SUPERSLAVE2,10,S3SK3A+FR6,#puppet_tbl,0 + WL ANI_CODE,#grunt + .word ANI_XFLIP + WWLLW ANI_SUPERSLAVE2,4,S3KT3A+FR2,#puppet_tbl,1 + .word ANI_ZEROVELS + WWLLW ANI_SUPERSLAVE2,4,S3KT3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,S3KT3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,S3KT3A+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,2,S3KT3A+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,S3KT3A+FR7,#puppet_tbl,6 + + .word ANI_DRAW_NAME,36 + + ;let go + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_XFLIP_OPP ;106 + WL ANI_SLAVEANIM,#release_tbl + WL ANI_OPPOFFSET,#release_offsets + WLW ANI_SET_OPP_XVEL,-20000h,AM_FACE_REL + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_DAMAGEOPP,D_KICKTOSS,RD_KICKTOSS + WL ANI_CODE,HIT_THE_MAT + .word ANI_DETACH + + ;and immediately get up + WL 3,S3KT3A+FR8 + .word ANI_OFFSET,-9,2,0 + WL 3,S3FD3X+FR1 + WL 3,S3UC3X+FR6 + WL 3,S3KF3C+FR1 + WL 3,S3KF3C+FR2 + WL 3,S3KF3C+FR3 + .word ANI_WAITHITGND + WL 3,S3KF3C+FR4 + WL 3,S3KF3C+FR5 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#blocked + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,S3SK3A+FR6 + .word ANI_ZEROVELS + WL 25,S3SK3A+FR6 +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,S3SK3A+FR6 + .word ANI_ZEROVELS + WL 3,S3SK3A+FR6 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,shn_faceup_getup_anim +; .word ANI_END + +#grunt WRSND W_SHAWN,GRABFLING_T1,GRABFLING_T2 + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + .ref H2AM3A,H3FR3A + LWWW H2AM3A+FR1,-20,58,0 + LWWW H2AM3A+FR7,58,40,0 + LWWW H3FR3A+FR2,40,38,0 + LWWW H3FR3A+FR3,26,45,0 + LWWW H3FR3A+FR4,14,59,0 + LWWW H3FR3A+FR4,-30,55,0 + LWWW H3FR3A+FR6,-70,7,0 + .long 0 +#Razor + .ref R3TD3A + LWWW R3TD3A+FR1,-20,65,0 + LWWW R3TD3A+FR2,51,35,0 + LWWW R3TD3A+FR4,28,32,0 + LWWW R3TD3A+FR5,25,31,0 + LWWW R3TD3A+FR6,9,43,0 + LWWW R3TD3A+FR7,-25,59,0 + LWWW R3TD3A+FR8,-63,29,0 + .long 0 +#Taker + .ref U4AM4C,U3FH3A + LWWW U4AM4C+FR4,-30,61,0 + LWWW U3FH3A+FR1,51,37,1 + LWWW U3FH3A+FR2,39,42,1 + LWWW U3FH3A+FR3,29,37,1 + LWWW U3FH3A+FR4,3,55,1 + LWWW U3FH3A+FR5,-32,72,1 + LWWW U3FH3A+FR5,-69,36,1 + .long 0 +#Yokozuna + .ref Y3FL3W + LWWW Y3FL3W+FR1,-20,64,0 + LWWW Y3FL3W+FR2,29,60,0 + LWWW Y3FL3W+FR3,17,41,0 + LWWW Y3FL3W+FR4,17,32,0 + LWWW Y3FL3W+FR5,13,38,0 + LWWW Y3FL3W+FR6,-23,57,0 + LWWW Y3FL3W+FR7,-62,26,0 + .long 0 +#Shawn + LWWW S3OS3X+FR3,-52,68,1 + LWWW S3OS3X+FR4,8,63,1 + LWWW S3OS3X+FR5,-8,42,1 + LWWW S3OS3X+FR6,1,48,1 + LWWW S3OS3X+FR7,2,60,1 + LWWW S3OS3X+FR8,-16,66,1 + LWWW S3OS3X+FR9,-68,41,1 + .long 0 +#BamBam + .ref B4TD3B + LWWW B4TD3B+FR2,-23,52,0 + LWWW B4TD3B+FR3,28,52,0 + LWWW B4TD3B+FR4,34,43,0 + LWWW B4TD3B+FR5,24,51,0 + LWWW B4TD3B+FR6,15,64,0 + LWWW B4TD3B+FR7,-21,65,0 + LWWW B4TD3B+FR8,-53,36,0 + .long 0 +#Doink + .ref D3OS3A,D3FD3E + LWWW D3OS3A+FR1,-13,41,0 + LWWW D3OS3A+FR2,14,41,0 + LWWW D3OS3A+FR3,7,38,0 + LWWW D3OS3A+FR4,3,31,0 + LWWW D3OS3A+FR5,4,37,0 + LWWW D3OS3A+FR6,-26,44,0 + LWWW D3FD3E+FR2,-64,5,0 + .long 0 +#Adam + .long 0 +#Lex + .ref L4AM4B,L3FH3A +; LWWW L4AM4B+FR3,-34,66,0 + LWWW L3FH3A+FR1,-10,49,0 + LWWW L3FH3A+FR1,36,49,0 + LWWW L3FH3A+FR2,45,25,0 + LWWW L3FH3A+FR3,28,32,0 + LWWW L3FH3A+FR4,17,39,0 + LWWW L3FH3A+FR5,-17,39,0 + LWWW L3FH3A+FR6,-56,22,0 + .long 0 + +#release_tbl + .ref hrt_hitonground_anim,rzr_hitonground_anim + .ref und_hitonground_xflip_anim + .ref shn_hitonground_xflip_anim + .ref bam_hitonground_anim,dnk_hitonground_anim + .ref lex_hitonground_anim + + .long hrt_hitonground_anim,rzr_hitonground_anim + .long und_hitonground_xflip_anim + .long yok_hitonground_anim + .long shn_hitonground_xflip_anim + .long bam_hitonground_anim,dnk_hitonground_anim + .long 0,lex_hitonground_anim + +#release_offsets + ; X Y + .word 40,0 ;Bret + .word 10,0 ;Razor + .word 40,0 ;Taker + .word 20,0 ;Yokozuna + .word 40,0 ;Shawn + .word 40,0 ;BamBam + .word 40,0 ;Doink + .word 40,0 ;Adam + .word 20,0 ;Lex + +#***************************************************************************** +* +* GRAB OPPONENT'S ARM AND BREAK IT (ouch) +* + + SUBR shn_break_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + +;First, if we're holding his head, let him go. +; WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel2 +; .word ANI_DETACH +;#no_hdrel2 +; WL 4,S4FG3A+FR1 +; WL 4,S4FG3A+FR2 +; ;temp! Don't throw the attack if we don't know the guy. +; .word ANI_IFOPP,W_SHAWN,-1 +; WL ANI_IFNOTSTATUS,#missed + + .word ANI_ATTACK_ON,AMODE_PUPPET,31,59,42,32 + WWL ANI_WAITHITOPP,4,S4FG3A+FR1 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed +; WWL ANI_IFOPPMODE,~MODE_PUPPET,#missed + +;got him + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_ATTACHZ,0,0,-4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + WWLLW ANI_SUPERSLAVE2,3,S3GA3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,S3GA3A+FR2,#puppet_tbl,1 + +;This frame may come out + WWLLW ANI_SUPERSLAVE2,3,S3GA3A+FR3,#puppet_tbl,2 + + WWLLW ANI_SUPERSLAVE2,3,S3GA3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,20,S3GA3A+FR5,#puppet_tbl,4 + .word ANI_DRAW_NAME,9 + WWLLW ANI_SUPERSLAVE2,2,S3GA3A+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,S3GA3A+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,2,S3GA3A+FR8,#puppet_tbl,7 + + WL ANI_CODE,BROKEN_ARM_BLOOD +;snap! + .word ANI_SOUND,9Bh ;neck break (5-7 ticks late) + WL ANI_CODE,CALL_NASTY_MOVE + .word ANI_DAMAGEOPP,D_ARMBRK,RD_ARMBRK + WWLLW ANI_SUPERSLAVE2,1,S3GA3A+FR9,#puppet_tbl,8 + WL ANI_SLAVEANIM,#react_tbl + .word ANI_DETACH + + WL 15,S3GA3A+FR9 + .word ANI_FACEUP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL 4,S4FG3A+FR2 + WL 4,S4FG3A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4AM3A+FR6,42,-30,0 + LWWW H4AM3A+FR8,47,-7,0 + LWWW H3AB3A+FR1,41,-12,0 + LWWW H3AB3A+FR3,50,10,0 + LWWW H3AB3A+FR3,53,11,0 + LWWW H3AB3A+FR3,53,12,0 + LWWW H3AB3A+FR3,47,8,0 + LWWW H3AB3A+FR3,47,9,0 + LWWW H3AB3A+FR4,29,7,0 + .long 0 +#Razor + LWWW R3HB3A+FR2,50,-20,0 + LWWW R3HB3A+FR3,53,-6,0 + LWWW R3AB3A+FR1,49,-4,0 + LWWW R3AB3A+FR3,33,-2,0 + LWWW R3AB3A+FR3,36,-1,0 + LWWW R3AB3A+FR3,36,0,0 + LWWW R3AB3A+FR3,30,-4,0 + LWWW R3AB3A+FR3,30,-3,0 + LWWW R3AB3A+FR4,35,8,0 + .long 0 +#Taker + LWWW U4BF3A+FR3,20,-8,0 + LWWW U4BF3A+FR2,48,5,0 + LWWW U3AB3A+FR1,39,0,0 + LWWW U3AB3A+FR3,34,-1,0 + LWWW U3AB3A+FR3,37,0,0 + LWWW U3AB3A+FR3,37,1,0 + LWWW U3AB3A+FR3,31,-3,0 + LWWW U3AB3A+FR3,31,-2,0 + LWWW U3AB3A+FR4,28,7,0 + .long 0 +#Yokozuna + LWWW Y4AM4A+FR3,50,-21,0 + LWWW Y4AM4A+FR8,59,-9,0 + LWWW Y3AB3A+FR1,34,-8,0 + LWWW Y3AB3A+FR3,49,2,0 + LWWW Y3AB3A+FR3,52,3,0 + LWWW Y3AB3A+FR3,52,4,0 + LWWW Y3AB3A+FR3,46,0,0 + LWWW Y3AB3A+FR3,46,1,0 + LWWW Y3AB3A+FR4,30,0,0 + .long 0 +#Shawn + LWWW S4AM3A+FR7,40,-37,0 + LWWW S4AM3A+FR2,52,-9,0 + LWWW S3AB3A+FR1,43,-6,0 + LWWW S3AB3A+FR3,41,-4,0 + LWWW S3AB3A+FR3,44,-3,0 + LWWW S3AB3A+FR3,44,-2,0 + LWWW S3AB3A+FR3,38,-6,0 + LWWW S3AB3A+FR3,38,-5,0 + LWWW S3AB3A+FR4,30,1,0 + .long 0 +#BamBam + LWWW B4BF3A+FR3,36,-9,0 + LWWW B4BF3A+FR1,51,5,0 + LWWW B3AB3X+FR2,48,3,0 + LWWW B3AB3X+FR3,45,4,0 + LWWW B3AB3X+FR3,48,5,0 + LWWW B3AB3X+FR3,48,6,0 + LWWW B3AB3X+FR3,42,2,0 + LWWW B3AB3X+FR3,42,3,0 + LWWW B3AB3X+FR4,40,5,0 + .long 0 +#Doink + LWWW D3AM3A+FR6,43,-24,0 + LWWW D3AM3A+FR8,55,-8,0 + LWWW D3AB3A+FR1,50,-12,0 + LWWW D3AB3A+FR3,50,-2,0 + LWWW D3AB3A+FR3,53,-1,0 + LWWW D3AB3A+FR3,53,0,0 + LWWW D3AB3A+FR3,47,-4,0 + LWWW D3AB3A+FR3,47,-3,0 + LWWW D3AB3A+FR4,40,-1,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3BF3A+FR2,42,-13,1 + LWWW L3BF3A+FR1,51,2,1 + LWWW L3AB3A+FR2,25,-5,0 + LWWW L3AB3A+FR3,43,2,0 + LWWW L3AB3A+FR3,46,3,0 + LWWW L3AB3A+FR3,46,4,0 + LWWW L3AB3A+FR3,40,0,0 + LWWW L3AB3A+FR3,40,1,0 + LWWW L3AB3A+FR4,37,4,0 + .long 0 + + .ref hrt_arm_broken_anim + .ref rzr_arm_broken_anim + .ref und_arm_broken_anim + .ref yok_arm_broken_anim + .ref shn_arm_broken_anim + .ref bam_arm_broken_anim + .ref dnk_arm_broken_anim + .ref lex_arm_broken_anim + +#react_tbl + .long hrt_arm_broken_anim + .long rzr_arm_broken_anim + .long und_arm_broken_anim + .long yok_arm_broken_anim + .long shn_arm_broken_anim + .long bam_arm_broken_anim + .long dnk_arm_broken_anim + .long 0 + .long lex_arm_broken_anim + +#********* +;zeros the wrestler's x-velocity if he's flying backwards. Useful just +; after a LEAPAT. + + SUBR no_bk_xvel + + move *a13(OBJ_XVEL),a0,L + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #abs + neg a0 +#abs + move a0,a0 + jrnn #ok +#clrvel + clr a14 + move a14,*a13(OBJ_XVEL),L +#ok + rets + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR shn_3_fake_hold_anim + +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 2,S4GH3C+FR1 + WL 2,S4GH3C+FR2 + WL 2,S4GH3C+FR3 + WL 7,S4GH3C+FR3 + WL ANI_GOTO,#missed + + SUBR shn_3_head_hold2_anim + +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 2,S4GH3C+FR1 + WL 2,S4GH3C+FR2 + WL 2,S4GH3C+FR3 + .word ANI_ATTACK_ON, AMODE_PUPPET_HDGRAB,32,60,62,45 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,7,S4GH3C+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + WL ANI_GOTO,#gothim + + SUBR shn_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + .word ANI_STARTATTACK,AT_LEAPING,6 + + WL 3,S4GH3C+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 6,999,65,45,90000h,TGT_HEAD,56,100,0 + LEAPATOPP 9,999,40,45,90000h,TGT_HEAD,56,100,0 + WL 3,S4GH3C+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,26,80,49,23 ;mode,x,y,w,h + + WWL ANI_WAITHITOPP,6,S4GH3C+FR3 + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#gothim + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_CLR_BUTCOUNT + .ref head_grab_time + WL ANI_CODE,head_grab_time + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,S4GH3C+FR3,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,S4GH3C+FR3,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,4,S4GH3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4GH3C+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4GH3C+FR8,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,S4GH3C+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + WL 3,S4GH3C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,S4GH3C+FR3 + WL 3,S4GH3C+FR2 + WL 3,S4GH3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + + WL 3,S4GH3C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4GH3C+FR2 + WL 3,S4GH3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4AH3A+FR1,56,12,0 + LWWW H3HB3A+FR3,66,1,0 + LWWW H3HB3A+FR2,64,-5,0 + LWWW H3BF3A+FR1,51,-30,0 + .long 0 +#Razor + LWWW R4AH4C+FR3,57,11,0 + LWWW R3HB3A+FR3,72,0,0 + LWWW R3HB3A+FR2,75,-15,0 + LWWW R3BF3A+FR1,56,-32,0 + .long 0 +#Taker + LWWW U4AH3A+FR2,50,21,0 + LWWW U4BF3A+FR2,57,14,0 + LWWW U4BF3A+FR3,43,-2,0 + LWWW U4BF3Z+FR5,53,-11,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR2,69,2,0 + LWWW Y4AM4A+FR1,82,3,0 + LWWW Y4AM4A+FR2,78,-4,0 + LWWW Y3BF3A+FR1,56,-20,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,55,4,0 + LWWW S4AH3D+FR1,54,9,0 + LWWW S4BF3A+FR2,63,-5,0 + LWWW S3BF3A+FR1,39,-31,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,49,6,0 + LWWW B4BF3A+FR1,74,12,0 + LWWW B3HB3A+FR2,66,-18,0 + LWWW B3BF3C+FR5,52,-24,0 + .long 0 +#Doink + LWWW D3AH3B+FR1,51,8,0 + LWWW D3AK3A+FR3,49,14,0 + LWWW D3AK3A+FR2,64,-4,0 + LWWW D3BF3A+FR2,47,-30,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,48,4,0 + LWWW L3BF3A+FR1,65,8,1 + LWWW L3BF3A+FR2,71,-8,1 + LWWW L3BF3B+FR5,52,-28,0 + .long 0 + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#***************************************************************************** +* +* FLIP-SLAM + + SUBR shn_combo_flipslam_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + .word ANI_CLR_BUTCOUNT + + WL 3,S4TD3F+FR1 + LEAPATOPP 10,999,90,60,90000h,TGT_CHEST,8,68,-10 + WL ANI_CODE,#check_xvel + .word ANI_SETPLYRMODE,MODE_INAIR + WL 4,S4TD3F+FR2 + WL 4,S4TD3F+FR3 + .word ANI_ATTACK_ON,AMODE_PUPPET,-13,32,68,79 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,8,S4TD3F+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed_c + WL ANI_IFBLOCKED,#missedb_c + .WORD ANI_INC_COMBO + WL ANI_CODE,CALL_SPECIAL_MOVE + + ;got him. + WLW ANI_SET_XVEL,40000h,AM_FACE_REL + WL ANI_SET_YVEL,58000h ;Y + WL ANI_CODE,ckzpos ;Z + WWL ANI_SETLONG,OBJ_GRAVITY,0B000h + + .word ANI_ATTACHZ,0,0,-10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,6,S4TD3F+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4TD3F+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4TD3F+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,S4TD3F+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,2,S4TD3F+FR8,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,S4TD3F+FR9,#puppet_tbl,6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL ANI_CODE,HIT_THE_MAT + .word ANI_DAMAGEOPP,D_FLIPSLAM,RD_FLIPSLAM + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WWLLW ANI_SUPERSLAVE2,4,S3OS3Z+FR10,#puppet_tbl,7 + + WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels + WL ANI_SLAVEANIM,recover_tbl + .word ANI_OPP_GETUP,-300 + WL ANI_CODE,#set_opp_facing + .word ANI_DETACH + .word ANI_XFLIP + + WWWL ANI_IF_BUTCOUNT_LT,BLOCKB_COUNT,1,#NO_STOMPING + + WL 2,S3GU2A+FR5 + WL 2,S3GU2A+FR6 + WL 2,S3GU2A+FR7 + WL 2,S3GU2A+FR8 + WL 2,S3GU2A+FR9 + WL ANI_CHANGEANIM,shn_combo_run_stomp_anim + +#NO_STOMPING + .word ANI_OPP_GETUP,5 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,shn_hitonground_anim + +#missedb_c + ;blocked. bounce off. + WL ANI_CODE,#reverse_xvel + +#missed_c + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + WL 3,S4TD3F+FR5 + WL 3,S4TD3F+FR6 + WL 3,S4TD3F+FR7 + WL 3,S4TD3F+FR8 + WL 3,S4TD3F+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKER,35 + .word ANI_SHAKEALL,1 + .word ANI_XFLIP + WL ANI_CHANGEANIM,shn_hitonground_anim + + + SUBR shn_flipslam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + ;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel + .word ANI_DETACH +#no_hdrel + .word ANI_STARTATTACK,AT_LEAPING,11 + + WL 3,S4TD3F+FR1 + LEAPATOPP 10,999,90,60,90000h,TGT_CHEST,8,68,0 ;-10 + WL ANI_CODE,#check_xvel + .word ANI_SETPLYRMODE,MODE_INAIR + WL 4,S4TD3F+FR2 + WL 4,S4TD3F+FR3 + .word ANI_ATTACK_ON,AMODE_PUPPET,-13,56,28,39 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,S4TD3F+FR4 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_9,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + WL ANI_CODE,CALL_SPECIAL_MOVE + + ;got him. + WLW ANI_SET_XVEL,40000h,AM_FACE_REL + WL ANI_SET_YVEL,58000h ;Y + WL ANI_CODE,ckzpos ;Z + WWL ANI_SETLONG,OBJ_GRAVITY,0B000h + + .word ANI_ATTACHZ,0,0,-10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,6,S4TD3F+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,S4TD3F+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,S4TD3F+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,S4TD3F+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,2,S4TD3F+FR8,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,S4TD3F+FR9,#puppet_tbl,6 + .word ANI_DRAW_NAME,39 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL ANI_CODE,HIT_THE_MAT + .word ANI_DAMAGEOPP,D_FLIPSLAM,RD_FLIPSLAM + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WWLLW ANI_SUPERSLAVE2,4,S3OS3Z+FR10,#puppet_tbl,7 + + WL ANI_SLAVEANIM,#release_tbl + WL ANI_CODE,#set_opp_facing + .word ANI_DETACH + .word ANI_XFLIP + WL ANI_CHANGEANIM,shn_hitonground_anim + +#missedb + ;blocked. bounce off. + WL ANI_CODE,#reverse_xvel + +#missed + WL ANI_CODE,CALL_MISSES + WL 3,S4TD3F+FR5 + WL 3,S4TD3F+FR6 + WL 3,S4TD3F+FR7 + WL 3,S4TD3F+FR8 + WL 3,S4TD3F+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKER,35 + .word ANI_SHAKEALL,1 + .word ANI_XFLIP + WL ANI_CHANGEANIM,shn_hitonground_anim + + + +********** +;halve and reverse xvel + + SUBRP #reverse_xvel + + move *a13(OBJ_XVEL),a14,L + neg a14 + sra 1,a14 + move a14,*a13(OBJ_XVEL),L + rets + +********** +;Don't leap backwards. If the player tries it, give him a small +; forward velocity instead. Sucker. (and clear his Z too) + + SUBRP #check_xvel + + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #facing_right + +;facing_left + move *a13(OBJ_XVEL),a0,L + jrn #done0 + + movi [-2,0],a0 + jruc #set + +#facing_right + move *a13(OBJ_XVEL),a0,L + jrp #done0 + movi [2,0],a0 +#set + move a0,*a13(OBJ_XVEL),L + clr a0 + move a0,*a13(OBJ_ZVEL),L +#done0 + rets + +********** +;for whatever reason, we need to reverse the victim's X-facing before +; we let him go or else the roll-over won't work properly. Voodoo... + + SUBRP #set_opp_facing + + move *a13(ATTACH_PROC),a10,L + jrz #done1 + move *a10(FACING_DIR),a4 + xori MOVE_LEFT|MOVE_RIGHT,a4 + move a4,*a10(FACING_DIR) +#done1 + rets + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3HB3A+FR2,5,9,0 + LWWW H3HB3A+FR3,10,9,0 + LWWW H3UC3X+FR1,-3,15,0 + LWWW H3UC3X+FR2,-29,3,0 + LWWW H3UC3X+FR3,-48,-5,0 + LWWW H3UC3X+FR4,-38,4,0 + LWWW H3UC3X+FR5,1,42,0 + LWWW H3UC3X+FR6,59,38,0 +#Razor + LWWW R3HB3A+FR2,7,0,0 + LWWW R3HB3A+FR3,2,7,0 + LWWW R3FD3B+FR1,-3,25,0 + LWWW R3FD3B+FR2,-25,8,0 + LWWW R3FD3B+FR3,-42,3,0 + LWWW R3FD3B+FR4,-48,10,0 + LWWW R3FD3B+FR5,-23,35,0 + LWWW R3HG3B+FR1,54,42,0 +#Taker + LWWW U3TBSM+FR9,-3,11,1 + LWWW U3FD3X+FR1,-4,17,1 + LWWW U3FD3X+FR2,-10,15,1 + LWWW U3FD3X+FR3,-11,9,1 + LWWW U3FD3X+FR4,-18,-5,1 + LWWW U3FD3X+FR5,6,24,1 + LWWW U3FD3X+FR6,28,50,1 + LWWW U3GP3X+FR1,65,40,1 +#Yokozuna + LWWW Y4AM4A+FR3,1,-1,0 + LWWW Y4AM4A+FR1,8,10,0 + LWWW Y3FD3A+FR1,-1,13,0 + LWWW Y3FD3A+FR2,-35,25,0 + LWWW Y3FD3A+FR3,-42,14,0 + LWWW Y3FD3A+FR4,-41,19,0 + LWWW Y3FD3A+FR5,-17,44,0 + LWWW Y3FD3N+FR1,46,57,0 +#Shawn + LWWW S4BF3A+FR2,8,12,0 + LWWW S2AH3A+FR1,6,14,0 + LWWW S3UC3X+FR1,4,20,0 + LWWW S3UC3X+FR2,-17,3,0 + LWWW S3UC3X+FR4,-34,-14,0 + LWWW S3UC3X+FR5,-21,4,0 + LWWW S3UC3X+FR6,21,42,0 + LWWW S3FD3X+FR1,51,38,0 +#BamBam + LWWW B3DR3B+FR5,15,8,0 + LWWW B4AH4A+FR6,-3,15,0 + LWWW B4UC3B+FR1,-3,27,0 + LWWW B4UC3B+FR2,-10,3,0 + LWWW B4UC3B+FR3,-35,-16,0 + LWWW B4UC3B+FR4,-34,-15,0 + LWWW B4UC3B+FR5,-11,38,0 + LWWW B4UC3B+FR6,54,45,0 +#Doink + LWWW D3AK3A+FR2,8,8,0 + LWWW D3UC3A+FR1,1,10,0 + LWWW D3UC3A+FR2,-1,21,0 + LWWW D3UC3A+FR3,-11,11,0 + LWWW D3UC3A+FR5,-37,-5,0 + LWWW D3UC3A+FR6,-24,-1,0 + LWWW D3UC3A+FR7,13,40,0 + LWWW D3UC3A+FR9,63,38,0 +#Adam + .long 0 +#Lex + LWWW L4GH3B+FR4,-19,6,0 + LWWW L3UC3X+FR1,-4,12,0 + LWWW L3UC3X+FR2,-6,7,0 + LWWW L3UC3X+FR3,-27,-8,0 + LWWW L3CP3X+FR2,-48,-19,1 + LWWW L3CP3X+FR3,-42,9,1 + LWWW L3CP3X+FR4,-13,42,1 + LWWW L3UC3X+FR8,62,48,0 + +#release_offsets + ; X Y + .word 0,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 0,0 ;BamBam + .word 25,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#release_tbl + .long hrt_break_neck_anim,rzr_break_neck4_anim + .long und_break_neck_anim,yok_break_neck_anim + .long shn_fall_back3_anim,bam_break_neck4_anim + .long dnk_break_neck_anim,0,lex_break_neck4_anim + +;#***************************************************************************** +;* +;* CHAIR STUFF +; +; .ref CHAIR_SWING +; +; SUBR shn_pkup_chair_anim +; +; .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +;#lp +; WL 4,S4WA4B+FR1 +; WL 4,S4WA4B+FR2 +; WL 4,S4WA4B+FR3 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,39,-11,1 ;image, x,y,zoff +; WL 4,S4WA4B+FR4 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,37,14,1 ;image, x,y,zoff +; WL 4,S4WA4B+FR5 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR2,41,53,1 ;image, x,y,zoff +; WL 4,S4WA4B+FR6 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,37,104,1 ;image, x,y,zoff +; WL 4,S4WA4B+FR7 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,27,134,1 ;image, x,y,zoff +; WL 4,S4WA4B+FR8 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-9,140,1 ;image, x,y,zoff +; WL 4,S4WA4B+FR9 +; +;; .word ANI_SINGLESTEP +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-13,139,1 ;image, x,y,zoff +; WL 4,S4WB4B+FR2 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR5,-40,103,1 ;image, x,y,zoff +; WL 4,S4WB4B+FR3 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-11,115,1 ;image, x,y,zoff +; WL 4,S4WB4B+FR4 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,64,86,1 ;image, x,y,zoff +; WL 4,S4WB4B+FR5 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,60,38,1 ;image, x,y,zoff +; WL 4,S4WB4B+FR6 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR10,38,13,1 ;image, x,y,zoff +; WL 4,S4WB4B+FR7 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR10,53,32,1 ;image, x,y,zoff +; WL 4,S4WB4B+FR8 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,55,118,1 ;image, x,y,zoff +; WL 4,S4WB4B+FR9 +; +;; .word ANI_SINGLESTEP +; WLW ANI_ATTCHIMAGE,0,0 +; +; WL ANI_GOTO,#lp +; + +#***************************************************************************** +* +* Repeated head butts from head hold + + SUBR shn_rpt_hdbutts2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SET_RPTCOUNT,4 ;rpt 2 times + + .word ANI_ATTACK_ON,AMODE_PUPPET,31,59,42,32 + WWL ANI_WAITHITOPP,4,S4GH3C+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + +;got him + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_ATTACHZ,0,0,-4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_CLR_BUTCOUNT + + WWLLW ANI_SUPERSLAVE2,2,S4GH3C+FR5,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,2,S4GH3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR1,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR2,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR3,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR4,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR5,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR6,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,1,S4CD3A+FR7,#puppet_tbl,8 + + WL ANI_CODE,CALL_NASTY_MOVE + .word ANI_DEBRISAT,350,2,0,100,0 ;%chance, tbl index, x,y,z off + .ref impact_sound + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,25 + .word ANI_DAMAGEOPP,D_HDBUTT2,RD_HDBUTT2 + + WWLLW ANI_SUPERSLAVE2,1,S4CD3A+FR7,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR8,#puppet_tbl,9 + WL ANI_GOTO,last_hitx + +***************************************************************************** +* +* Repeated head butts from head hold + + SUBR shn_rpt_hdbutts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SET_RPTCOUNT,4 ;rpt 2 times + + .word ANI_ATTACK_ON,AMODE_PUPPET,31,59,42,32 + WWL ANI_WAITHITOPP,4,S4GH3C+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + +;got him + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_ATTACHZ,0,0,-4 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_CLR_BUTCOUNT + + WWLLW ANI_SUPERSLAVE2,2,S4GH3C+FR5,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,2,S4GH3C+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR1,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR2,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR3,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR4,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR5,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR6,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,1,S4CD3A+FR7,#puppet_tbl,8 + + WL ANI_CODE,CALL_NASTY_MOVE + .word ANI_DEBRISAT,350,2,0,100,0 ;%chance, tbl index, x,y,z off + .ref impact_sound + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,25 + .word ANI_DAMAGEOPP,D_HDBUTT2,RD_HDBUTT2 + + WWLLW ANI_SUPERSLAVE2,1,S4CD3A+FR7,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR8,#puppet_tbl,9 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,2,#last_hit + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#last_hit + .word ANI_CLR_BUTCOUNT + +#rpt + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR2,#puppet_tbl,10 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR3,#puppet_tbl,11 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR4,#puppet_tbl,12 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR5,#puppet_tbl,13 + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR6,#puppet_tbl,14 + WWLLW ANI_SUPERSLAVE2,1,S4CD3A+FR7,#puppet_tbl,15 + + WL ANI_CODE,CALL_NASTY_MOVE + .word ANI_DEBRISAT,350,2,0,100,0 ;%chance, tbl index, x,y,z off + .ref impact_sound + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,25 + .word ANI_DAMAGEOPP,D_HDBUTT2,RD_HDBUTT2 + + WWLLW ANI_SUPERSLAVE2,2,S4CD3A+FR8,#puppet_tbl,16 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,2,#last_hit + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#last_hit + .word ANI_CLR_BUTCOUNT + + WL ANI_GOTO,#rpt + + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WL ANI_SET_YVEL,40000h + + WL 3,S4CD3A+FR7 + WL 3,S4CD3A+FR6 + WL 3,S4CD3A+FR5 + WL 3,S4CD3A+FR4 + WL 3,S4CD3A+FR3 + WL 3,S4CD3A+FR2 + WL 3,S4CD3A+FR1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4GH3C+FR1 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +last_hitx +#last_hit + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WWL ANI_IFOPPMODE,~MODE_DEAD,#cont + .ref fall_back_tbl + WL ANI_SLAVEANIM,fall_back_tbl + WL ANI_GOTO,#cont2 +#cont + WL ANI_SLAVEANIM,#react_tbl +#cont2 WLLL ANI_SETOPPVELS,40000h,20000h,10000h ;x,y,z vels + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WL ANI_SET_YVEL,40000h + + WL 3,S4CD3A+FR7 + WL 3,S4CD3A+FR6 + WL 3,S4CD3A+FR5 + WL 3,S4CD3A+FR4 + WL 3,S4CD3A+FR3 + WL 3,S4CD3A+FR2 + WL 3,S4CD3A+FR1 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4GH3C+FR1 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb +#missed + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4AM3A+FR6,57,-23,0 + LWWW H4AM3A+FR7,57,-4,0 + LWWW H4AH3A+FR6,37,-6,0 + LWWW H4AH3A+FR6,42,-16,0 + LWWW H4AH3A+FR6,48,-22,0 + LWWW H4AH3A+FR6,49,-26,0 + LWWW H4AH3A+FR6,44,-28,0 + LWWW H4AH3A+FR6,24,-26,0 + LWWW H4ST4A+FR1,12,-27,0 + LWWW H4AH3A+FR2,19,-15,0 + LWWW H4AH3A+FR3,46,-12,0 + LWWW H4AH3A+FR4,49,-24,0 + LWWW H4AH3A+FR5,48,-23,0 + LWWW H4AH3A+FR6,44,-28,0 + LWWW H4AH3A+FR6,24,-26,0 + LWWW H4ST4A+FR1,12,-27,0 + LWWW H4AH3A+FR2,19,-15,0 + .long 0 +#Razor + LWWW R4AM3X+FR3,59,-5,0 + LWWW R4AM3X+FR1,56,12,0 + LWWW R4AH4C+FR8,37,1,0 + LWWW R4AH4C+FR8,42,-9,0 + LWWW R4AH4C+FR8,48,-15,0 + LWWW R4AH4C+FR8,49,-19,0 + LWWW R4AH4C+FR8,44,-21,0 + LWWW R4AH4C+FR8,24,-18,0 + LWWW R4ST4G+FR1,15,-26,0 + LWWW R4AH4C+FR4,15,-17,0 + LWWW R4AH4C+FR5,43,-13,0 + LWWW R4AH4C+FR6,49,-18,0 + LWWW R4AH4C+FR7,50,-19,0 + LWWW R4AH4C+FR8,45,-21,0 + LWWW R4AH4C+FR8,25,-18,0 + LWWW R4ST4G+FR1,16,-26,0 + LWWW R4AH4C+FR4,15,-17,0 + .long 0 +#Taker + LWWW U4BF3A+FR3,28,-2,0 + LWWW U4BF3A+FR2,48,13,0 + LWWW U4ST4D+FR3,27,4,0 + LWWW U4ST4D+FR3,32,-6,0 + LWWW U4ST4D+FR3,38,-12,0 + LWWW U4ST4D+FR3,39,-16,0 + LWWW U4ST4D+FR3,34,-18,0 + LWWW U4ST4D+FR3,14,-15,0 + LWWW U3AE4A+FR5,28,-17,0 + LWWW U3AE4A+FR2,24,-15,0 + LWWW U3AE4A+FR3,56,-8,0 + LWWW U3AE4A+FR4,62,-9,0 + LWWW U3AE4A+FR5,63,-15,0 + LWWW U4ST4D+FR3,34,-18,0 + LWWW U4ST4D+FR3,14,-15,0 + LWWW U3AE4A+FR5,28,-17,0 + LWWW U3AE4A+FR2,24,-15,0 + .long 0 +#Yokozuna + LWWW Y4AM4A+FR4,64,-17,0 + LWWW Y4AM4A+FR2,60,-5,0 + LWWW Y4AM4A+FR1,50,-11,0 + LWWW Y4AH4A+FR1,48,-14,0 + LWWW Y4AH4A+FR1,54,-20,0 + LWWW Y4AH4A+FR1,55,-24,0 + LWWW Y4AH4A+FR1,50,-26,0 + LWWW Y4AH4A+FR1,30,-23,0 + LWWW Y4AE4A+FR1,23,-24,0 + LWWW Y4AE4A+FR3,17,-15,0 + LWWW Y4AE4A+FR4,46,-10,0 + LWWW Y4AE4A+FR5,54,-15,0 + LWWW Y4AE4A+FR6,53,-24,0 + LWWW Y4AE4A+FR7,49,-25,0 + LWWW Y4AE4A+FR8,21,-21,0 + LWWW Y4AE4A+FR1,23,-24,0 + LWWW Y4AE4A+FR3,17,-15,0 + .long 0 +#Shawn + LWWW S4AM3A+FR3,62,2,0 + LWWW S4AM3A+FR2,57,0,0 + LWWW S4BK3A+FR1,33,-9,0 + LWWW S4LB3A+FR1,30,-14,0 + LWWW S4LB3A+FR1,36,-20,0 + LWWW S4LB3A+FR1,37,-24,0 + LWWW S4LB3A+FR1,32,-26,0 + LWWW S4LB3A+FR1,12,-23,0 + LWWW S4ST4C+FR1,6,-31,0 + LWWW S4AH3D+FR2,16,-23,0 + LWWW S4AH3D+FR3,45,-22,0 + LWWW S4AH3D+FR4,51,-28,0 + LWWW S4AH3D+FR5,54,-25,0 + LWWW S4AH3D+FR6,48,-24,0 + LWWW S4LB3A+FR1,12,-23,0 + LWWW S4ST4C+FR1,6,-31,0 + LWWW S4AH3D+FR2,16,-23,0 + .long 0 +#BamBam + LWWW B4AM4A+FR2,68,-6,0 + LWWW B4AM4A+FR1,59,5,0 + LWWW B4BK3D+FR2,39,-3,0 + LWWW B4AH4A+FR6,34,-16,0 + LWWW B4AH4A+FR6,40,-22,0 + LWWW B4AH4A+FR6,41,-26,0 + LWWW B4AH4A+FR6,36,-28,0 + LWWW B4AH4A+FR6,16,-25,0 + LWWW B4BK3D+FR2,14,-25,0 + LWWW B4AH4A+FR1,10,-17,0 + LWWW B4AH4A+FR2,36,-21,0 + LWWW B4AH4A+FR3,42,-27,0 + LWWW B4AH4A+FR4,44,-30,0 + LWWW B4AH4A+FR5,40,-29,0 + LWWW B4AH4A+FR6,16,-25,0 + LWWW B4BK3D+FR2,14,-25,0 + LWWW B4AH4A+FR1,10,-17,0 + .long 0 +#Doink + LWWW D3AM3A+FR4,58,-10,0 + LWWW D3AM3A+FR2,61,2,0 + LWWW D3AH3B+FR5,34,-4,0 + LWWW D3AH3B+FR1,29,-8,0 + LWWW D3AH3B+FR1,35,-14,0 + LWWW D3AH3B+FR1,36,-18,0 + LWWW D3AH3B+FR1,31,-20,0 + LWWW D3AH3B+FR1,11,-17,0 + LWWW D4ST4E+FR3,10,-30,0 + LWWW D3AH3B+FR2,5,-24,0 + LWWW D3AH3B+FR3,38,-20,0 + LWWW D3AH3B+FR2,40,-26,0 + LWWW D3AH3B+FR1,36,-18,0 + LWWW D3AH3B+FR1,31,-20,0 + LWWW D3AH3B+FR1,11,-18,0 + LWWW D4ST4E+FR3,10,-30,0 + LWWW D3AH3B+FR2,5,-24,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR3,57,-12,0 + LWWW L4AM4B+FR2,61,8,0 + LWWW L4AH4A+FR7,39,0,0 + LWWW L4AH4A+FR7,44,-10,0 + LWWW L4AH4A+FR7,50,-16,0 + LWWW L4AH4A+FR7,51,-20,0 + LWWW L4AH4A+FR7,46,-22,0 + LWWW L4AH4A+FR7,26,-19,0 + LWWW L4ST4C+FR3,16,-25,0 + LWWW L4AH4A+FR2,12,-21,0 + LWWW L4AH4A+FR3,43,-17,0 + LWWW L4AH4A+FR4,50,-21,0 + LWWW L4AH4A+FR5,51,-22,0 + LWWW L4AH4A+FR6,46,-23,0 + LWWW L4AH4A+FR7,26,-19,0 + LWWW L4ST4C+FR3,16,-25,0 + LWWW L4AH4A+FR2,12,-21,0 + .long 0 + +#react_tbl + .ref hrt_4_head_hit2_anim + .ref rzr_4_head_hit2_anim + .ref und_head_hit2_anim + .ref yok_4_head_hit2_anim + .ref shn_4_head_hit2_anim + .ref bam_head_hit2_anim + .ref dnk_head_hit2_anim + .ref lex_4_head_hit2_anim + + .long hrt_4_head_hit2_anim ;0 Bret Hart + .long rzr_4_head_hit2_anim ;1 Razor Ramon + .long und_head_hit2_anim ;2 Undertaker + .long yok_4_head_hit2_anim ;3 Yokozuna + .long shn_4_head_hit2_anim ;4 Shawn Michaels + .long bam_head_hit2_anim ;5 Bam Bam + .long dnk_head_hit2_anim ;6 Doink + .long 0 ;7 spare + .long lex_4_head_hit2_anim ;8 Lex Luger + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SHNSEQ4.ASM b/SHNSEQ4.ASM new file mode 100755 index 0000000..280f661 --- /dev/null +++ b/SHNSEQ4.ASM @@ -0,0 +1,1769 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 26 Aug 94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "shnseq4.asm" + .title "blocks, reactions to routine and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "shawnimg.h" + .include "takerimg.h" + .include "display.equ" + .include "ring.equ" + .include "damage.equ" + .INCLUDE "SWEAT.EQU" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref free_toss_check,setup_freetoss,shn_2_hiptoss_anim + .ref DO_WAIL + .ref DO_BLOCKED + .ref DO_SCREAM + .ref HIT_THE_MAT,SMALL_BOUNCE,set_position,set_skeleton_pal + .ref am_I_dizzy,start_smoke,D4SK4A,set_my_pal,make_white + .ref make_norm,am_I_dead,ckzpos + .ref FIND_AND_KILL_ENDLESS,DO_OTHERNONO + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #3 LOSE BALANCE + +#FRICTION_VAL equ 3000h + + SUBR shn_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,#FRICTION_VAL + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + + WL 3,S4LB3A+FR1 + WL 3,S4LB3A+FR2 + WL 3,S4LB3A+FR3 + .REF DO_SHAWN_PUSH + WL ANI_CODE,DO_SHAWN_PUSH + WL 2,S4LB3A+FR4 + WL 3,S4LB3A+FR5 + WL 2,S4LB3A+FR6 + WL 3,S4LB3A+FR7 + WL 2,S4LB3A+FR8 + WL 2,S4LB3A+FR9 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR shn_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,S2AH3A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,S2AH3A+FR2 + WL 3,S2AH3A+FR3 + WL 2,S2AH3A+FR4 + WL 2,S2AH3A+FR5 + WL 2,S2AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT + + SUBR shn_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,S4AH3D+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,S4AH3D+FR2 + WL 3,S4AH3D+FR3 + WL 2,S4AH3D+FR4 + WL 2,S4AH3D+FR5 + WL 2,S4AH3D+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR shn_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,S2AH3A+FR1 + WL 15,S2AH3A+FR2 + WL 4,S2AH3A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR shn_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,S4AH3D+FR1 + WL 3,S4AH3D+FR2 + WL 14,S4AH3D+FR3 + WL 2,S4AH3D+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR shn_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,S4AH3D+FR1 + WL 3,S4AH3D+FR2 + WL 14,S4AH3D+FR3 + WL 2,S4AH3D+FR4 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,shn_dizzy_anim +; .word ANI_END + + + +#***************************************************************************** +* +* #2 HEAD HIT2 - Hands on face + + SUBR shn_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,S2AE3A+FR1 + WL 2,S2AE3A+FR2 + WL 3,S2AE3A+FR3 + WL 2,S2AE3A+FR4 + WL 3,S2AE3A+FR5 + WL 2,S2AE3A+FR6 + WL 3,S2AE3A+FR7 + WL 2,S2AE3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT2 - Hands on face + + SUBR shn_4_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + + WL 3,S4AE3B+FR1 + WL 2,S4AE3B+FR2 + WL 3,S4AE3B+FR3 + WL 2,S4AE3B+FR4 + WL 3,S4AE3B+FR5 + WL 2,S4AE3B+FR6 + WL 3,S4AE3B+FR7 + WL 2,S4AE3B+FR8 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,shn_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_head_hit2s_anim +;Salt hits me in face + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .ref create_impact_salt + WL ANI_CODE,create_impact_salt + + WL 4,S4AE3B+FR1 + WL 4,S4AE3B+FR2 + WL 4,S4AE3B+FR3 + WL 4,S4AE3B+FR4 + WL 3,S4AE3B+FR5 + .word ANI_WAITHITGND + .word ANI_FRICTION,4000h + WL 50,S4AE3B+FR5 + .word ANI_ZEROVELS + WL 3,S4AE3B+FR6 + WL 3,S4AE3B+FR7 + WL 3,S4AE3B+FR8 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEAD HIT3 - From spin kick + + SUBR shn_2_head_hit3_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + WL 3,S2AH3A+FR1 + .word ANI_DEBRIS,150,2,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,S2AH3A+FR2 + WL 3,S2AH3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S2AH3A+FR4 + WL 2,S2AH3A+FR5 + WL 2,S2AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #4 HEAD HIT3 - From spin kick + + SUBR shn_4_head_hit3_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,S4AH3D+FR1 + .word ANI_DEBRIS,150,2,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,S4AH3D+FR2 + WL 3,S4AH3D+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S4AH3D+FR4 + WL 2,S4AH3D+FR5 + WL 2,S4AH3D+FR6 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_head_hit4_anim +;From earslap + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + +; WLW ANI_SET_XVEL,-28000h,AM_HIT_REL +; WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,50000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 4,S4AH3D+FR3 +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + WL 3,S4AH3D+FR4 + WL 3,S4AH3D+FR5 + WL 3,S4AH3D+FR6 + + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT - ends in dizzy + + SUBR shn_4_head_hit_dizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_DIZZY + + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WL 3,S4AH3D+FR1 + .word ANI_DEBRIS,150,2,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,S4AH3D+FR2 + WL 3,S4AH3D+FR3 + WL 3,S4AH3D+FR4 + WL 3,S4AH3D+FR5 + WL 3,S4AH3D+FR6 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,shn_dizzy_anim +; .word ANI_END + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR shn_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S2AM3A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,S2AM3A+FR3 + WL 1,S2AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,S2AM3A+FR5 + WL 2,S2AM3A+FR6 + WL 2,S2AM3A+FR7 + WL 2,S2AM3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S2AM3A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,S2AM3A+FR3 + WL 1,S2AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,S2AM3A+FR5 + WL 2,S2AM3A+FR6 + WL 2,S2AM3A+FR7 + WL 2,S2AM3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 BODY HIT + + SUBR shn_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S4AM3A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,S4AM3A+FR3 + WL 1,S4AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,S4AM3A+FR5 + WL 2,S4AM3A+FR6 + WL 2,S4AM3A+FR7 + WL 2,S4AM3A+FR8 + + .word ANI_CHECKWORD,USR_VAR1 + WL ANI_IFNOTSTATUS,#reg + +;162 + WL 9,S4TI4B+FR1 + WL 9,S4TI4B+FR2 + WL 9,S4TI4B+FR3 + WL 9,S4TI4B+FR4 + WL 9,S4TI4B+FR3 + WL 9,S4TI4B+FR2 + + WL 9,S4TI4B+FR1 + WL 9,S4TI4B+FR2 + WL 9,S4TI4B+FR3 + WL 9,S4TI4B+FR4 +#reg + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S4AM3A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,S4AM3A+FR3 + WL 1,S4AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,S4AM3A+FR5 + WL 2,S4AM3A+FR6 + WL 2,S4AM3A+FR7 + WL 2,S4AM3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR shn_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S4AM3A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,S4AM3A+FR3 + WL 1,S4AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4AM3A+FR5 + WL 3,S4AM3A+FR6 + WL 3,S4AM3A+FR7 + WL 3,S4AM3A+FR8 + + .word ANI_FACEDOWN + WL ANI_CHANGEANIM,shn_dizzy_anim +; .word ANI_END + + SUBR shn_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-8000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + WL 3,S4AM3A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,S4AM3A+FR3 + WL 1,S4AM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4AM3A+FR5 + WL 3,S4AM3A+FR6 + WL 3,S4AM3A+FR7 + WL 3,S4AM3A+FR8 + + .word ANI_FACEDOWN + WL ANI_CHANGEANIM,shn_dizzy_anim +; .word ANI_END + + SUBR shn_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WL 3,S4AM3A+FR2 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,S4AM3A+FR3 + WL 3,S4AM3A+FR4 + WL 3,S4AM3A+FR5 + WL 3,S4AM3A+FR6 + WL 3,S4AM3A+FR7 + WL 3,S4AM3A+FR8 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,shn_fall_back_anim +; .word ANI_END + +#nodead + + .word ANI_FACEDOWN + WL ANI_CHANGEANIM,shn_3_head_held_anim + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR shn_hitonground_xflip_anim + .word ANI_XFLIP + + SUBR shn_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL 1,S3CP3B+FR1 + WL ANI_SET_YVEL,40000h + WL ANI_CODE,ckzpos + WL 2,S3CP3B+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPITUP_SWEAT,SWEAT_PER,0 + WL 3,S3CP3B+FR2 + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,S3CP3B+FR3 + WL 3,S3CP3B+FR4 + WL 3,S3CP3B+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 2,S3CP3B+FR6 + WL 1,S3CP3B+FR7 + SUBR shn_liedown_anim + WL 1,S3CP3B+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + SUBR shn_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .WORD ANI_XFLIP + WL 10,S3OS3X+FR5 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,S3CP3B+FR6 + WL 3,S3CP3B+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +;#***************************************************************************** +;* +;* #2 BLOCK + HITBLOCK +; +; SUBR shn_2_block_anim +; +; .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; .word ANI_SETFACING +; .word ANI_SET_WRESTLER_XFLIP +;;Rotate toward opponent if needed! +; +; WL ANI_CODE,block_if_safe +; WL 3,S2BK3C+FR1 +; .word ANI_SETPLYRMODE,MODE_BLOCK +; WL 3,S2BK3C+FR2 +; WL 3,S2BK3C+FR3 +;#hold_block +; .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT ;turn off UNINT +; .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT +; .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_SETFACING +; WL 3,S2BK3C+FR2 +; WL 3,S2BK3C+FR1 +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +; +; SUBR shn_2_hitblock_anim +; .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT +; .word ANI_FRICTION,3000h +; .word ANI_SETSPEED,100h +; WL ANI_CODE,DO_BLOCKED +; WL 3,S2BK3C+FR4 +; WL 3,S2BK3C+FR5 +; WL 3,S2BK3C+FR6 +; WL 3,S2BK3C+FR3 +; WL ANI_GOTO,#hold_block + + +#************ +* +* #4 BLOCK + HITBLOCK + + SUBR shn_4_block_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + +; WL ANI_CODE,block_if_safe + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 2,S4BK3A+FR1 + WL 1,S4BK3A+FR2 +; .word ANI_SETPLYRMODE,MODE_BLOCK +#hold_block + WL 3,S4BK3A+FR2 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT|MODE_FRICTION +; .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETFACING + WL 3,S4BK3A+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR shn_4_hitblock_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,5000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + + WL 1,S4BK3A+FR3 + WL 2,S4BK3A+FR4 + WL 2,S4BK3A+FR5 + WL ANI_GOTO,#hold_block + + SUBR shn_4_hitblock2_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,4000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL ANI_SET_YVEL,38000h + + WL 2,S4BK3A+FR3 + WL 3,S4BK3A+FR4 + WL 3,S4BK3A+FR5 + WL 2,S4BK3A+FR3 + WL 3,S4BK3A+FR4 + WL 3,S4BK3A+FR5 + WL 2,S4BK3A+FR3 + WL ANI_GOTO,#hold_block + + +#***************************************************************************** +* +* FALL BACK + + SUBR shn_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZERO_XZVELS + WL ANI_MIN_YVEL,50000h + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + + .word ANI_SCROLL_CTRL,SHN_TBUKLY + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[105,-19] ;Y,X of head + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 3,S3UC3X+FR1 + .word ANI_OFFSET,0,58,0 + WWL ANI_SETLONG,DEBRIS_X,[44,-29] ;Y,X of head + WL 3,S3UC3X+FR2 + WWL ANI_SETLONG,DEBRIS_X,[37,-36] ;Y,X of head + WL 3,S3UC3X+FR3 + WWL ANI_SETLONG,DEBRIS_X,[29,-40] ;Y,X of head + WL 3,S3UC3X+FR4 + WWL ANI_SETLONG,DEBRIS_X,[19,-40] ;Y,X of head + WL 3,S3UC3X+FR5 + WWL ANI_SETLONG,DEBRIS_X,[6,-38] ;Y,X of head + WL 3,S3UC3X+FR6 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,[5,-38] ;Y,X of head + WL 2,S3UC3X+FR7 + .word ANI_BOUNCE,5 + WL 1,S3UC3X+FR7 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,[6,-40] ;Y,X of head + WL 3,S3UC3X+FR8 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_XFLIP + WL 3,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#***************************************************************************** +* +* FALL BACK + + SUBR shn_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;This is currently set in react1 - hit_flykick +; WLW ANI_SET_XVEL,-0C0000h,AM_HIT_REL + + WL ANI_SET_YVEL,10000h ;70000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL ANI_CODE,ckzpos + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 3,S3UC3X+FR1 + .word ANI_OFFSET,0,58,0 + WL 3,S3UC3X+FR2 + WL 3,S3UC3X+FR3 + WL 3,S3UC3X+FR4 + WL 3,S3UC3X+FR5 +; WL 3,S3UC3X+FR6 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + + WL 3,S3FD3X+FR1 + WL 3,S3FD3X+FR2 + WL 3,S3FD3X+FR3 + WL 3,S3FD3X+FR4 + WL 3,S3FD3X+FR5 + WL 3,S3FD3X+FR6 + WL 3,S3FD3X+FR7 + + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,S3CF3Z+FR1 + WL 3,S3CF3Z+FR2 + WL 3,S3CF3Z+FR3 + WL 3,S3CF3Z+FR4 + WL 3,S3CF3Z+FR5 + WL 3,S3CF3Z+FR6 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + WL ANI_CHANGEANIM,shn_faceup_getup_anim +; .word ANI_END + + +#***************************************************************************** + + SUBR shn_fall_back3_anim ;shawn fliptoss + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-28000h,AM_FACE_REL + + WL 3,S3FD3X+FR1 + .word ANI_OFFSET,12,0,0 + WL 3,S3FD3X+FR2 + .word ANI_OFFSET,9,0,0 + WL 3,S3FD3X+FR3 + .word ANI_OFFSET,10,0,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + + WL ANI_CHANGEANIM,shn_break_neck3_anim + + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR shn_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + + WL 3,S3UC3X+FR1 + .word ANI_OFFSET,0,58,0 + WL 3,S3UC3X+FR2 + WL 3,S3UC3X+FR3 + WL 3,S3UC3X+FR4 + WL 3,S3UC3X+FR5 + WL 3,S3UC3X+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + +; .word ANI_FRICTION,3000h + + WL 2,S3UC3X+FR7 +; .word ANI_BOUNCE,5 + WL 1,S3UC3X+FR7 +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE + +; .word ANI_ZEROVELS + WL 3,S3UC3X+FR8 + + .word ANI_XFLIP + WL 15,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#***************************************************************************** +* +* GETUPS + + SUBR shn_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 3,S3GU2A+FR1 + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + WL 2,S3GU2A+FR2 + WL 3,S3GU2A+FR3 + WL 2,S3GU2A+FR4 + WL 3,S3GU2A+FR5 + WL 2,S3GU2A+FR6 + WL 3,S3GU2A+FR7 +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WL 2,S3GU2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,S3GU2A+FR8 + WL 2,S3GU2A+FR9 + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,44,17 + WL 1,S3GU2A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + .ref shn_4_push_anim + WL ANI_CHANGEANIM,shn_4_push_anim +#no_freetoss + + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 2,S3GU4A+FR2 + WL 3,S3GU4A+FR3 +#g4_frame_4 + WL 2,S3GU4A+FR4 + WL 3,S3GU4A+FR5 + WL 2,S3GU4A+FR6 + WL 3,S3GU4A+FR7 + + WL 2,S3GU4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,S3GU4A+FR8 + WL 2,S3GU4A+FR9 + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,44,17 + WL 1,S3GU4A+FR9 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,shn_4_push_anim +#no_freetoss2 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR shn_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_GOTO,#g4_frame_4 + +***** +* set status bit for a getup in 4, clear for a 2. + SUBR choose_2or4 + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + + move *a13(NEW_FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #choose_2 + ori MODE_STATUS,a0 +#choose_2 + move a0,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* DIZZY + + SUBR shn_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + + WL 9,S4TI4B+FR1 + WL 9,S4TI4B+FR2 + WL 9,S4TI4B+FR3 + WL 9,S4TI4B+FR4 + WL 9,S4TI4B+FR3 + WL 9,S4TI4B+FR2 + + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR shn_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_OTHERNONO + +#loop + WL 4,S3MF3B+FR1 + WL 4,S3MF3B+FR2 + WL 4,S3MF3B+FR3 + WL 4,S3MF3B+FR4 + WL 4,S3MF3B+FR5 + WL 4,S3MF3B+FR6 + WL 4,S3MF3B+FR7 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 2,S3MF3B+FR6 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 5,S3MS3Z+FR4 + WL 5,S3MS3Z+FR2 + WL 5,S3MS3Z+FR1 + .word ANI_WAITHITGND + WL 2,S2ST2C+FR1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR shn_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 9,S3FD3X+FR4 + WL ANI_GOTO,#common + + SUBR shn_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + +#common + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back + + .word ANI_ZEROVELS + + ;plenty o' room. roll over + WL 3,S3FD3X+FR4 + .word ANI_OFFSET,-9,0,0 + WL 3,S3FD3X+FR5 + .word ANI_OFFSET,-8,0,0 + WL 3,S3FD3X+FR6 + .word ANI_OFFSET,-12,0,0 + WL 3,S3FD3X+FR7 + .word ANI_OFFSET,2,0,0 + WL 3,S3FD3X+FR8 + + ;hit. stay. + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,6,0,0 + WL 3,S3RL3A+FR5 + + .word ANI_FACEDOWN + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#fall_back + ;too close to the ropes. fall back + WL 6,S3FD3X+FR3 + .word ANI_OFFSET,-9,0,0 + WL 5,S3FD3X+FR2 + .word ANI_ZEROVELS + .word ANI_OFFSET,-10,0,0 + WL 4,S3FD3X+FR1 + WL 3,S3UC3X+FR8 + .word ANI_XFLIP + WL 4,S3CP3B+FR7 ;18 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + + SUBR shn_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WL ANI_CODE,ckzpos + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP + WL 4,S3GP3X+FR7 + WL 4,S3FD3X+FR3 + WL 4,S3FD3X+FR4 + WL 4,S3FD3X+FR5 + WL 4,S3FD3X+FR6 + WL 4,S3FD3X+FR7 + .word ANI_WAITHITGND + WL 4,S3FD3X+FR8 + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,S3RL3A+FR5 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + SUBR shn_break_neck4_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,S4POGO+FR3 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP + WL 3,S3FD3X+FR2 + WL 3,S3FD3X+FR3 + WL 3,S3FD3X+FR4 + WL 3,S3FD3X+FR5 + WL 3,S3FD3X+FR6 + WL 3,S3FD3X+FR7 + .word ANI_WAITHITGND + WL 3,S3FD3X+FR8 + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 10,S3RL3A+FR5 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR shn_flyout_anim ;starts on OSX7 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL + + WL 8,S3OS3X+FR7 + .word ANI_OFFSET,0,10,0 + WL 8,S3OS3X+FR8 + .word ANI_OFFSET,0,10,0 + WL ANI_GOTO,#common + + SUBR shn_flyout2_anim ;starts on OSX9 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL +#common + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + .word ANI_SET_IDIOT + WL 1,S3OS3X+FR9 + .word ANI_WAITHITGND + + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_DAMAGE,D_HIPTOSS +; .word ANI_SETWORD,DELAY_METER,0 + + WL 3,S3OS3X+FR10 + WL ANI_CHANGEANIM,shn_hitonground_anim + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR shn_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,S4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,S4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,S4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,S4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,S4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,S4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,S4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,S4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,S4ST4C+FR1 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,shn_fall_back_anim +; .word ANI_END + +#nodead + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 2121h,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#***************************************************************************** + + SUBR shn_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,S3BF3A+FR1 + WL 4,S3BF3A+FR2 + WL 4,S3BF3A+FR3 + WL 4,S3BF3A+FR4 + WL 4,S3BF3A+FR5 + WL 4,S3BF3A+FR6 + WL 4,S3BF3A+FR7 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR shn_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,S4BF3A+FR2 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,S2AH3A+FR1 + WL 3,S2AH3A+FR2 + WL 3,S2AH3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,S2AH3A+FR4 + WL 3,S2AH3A+FR5 + WL 3,S2AH3A+FR6 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 2,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR shn_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 4,S4BF3A+FR2 + WL 3,S1TT5Z+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +#***************************************************************************** +; +; SUBR shn_frnk_backfire_anim +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP +; .word ANI_SETSPEED,100h +; .word ANI_SETPLYRMODE,MODE_INAIR +; +; .word ANI_ZEROVELS +; +; WL 5,S3ZI3A+FR8 +; WL 5,S3ZI3A+FR9 +; WL 5,S3ZI3A+FR10 +; .word ANI_WAITHITGND +; +; WL ANI_CODE,HIT_THE_MAT +; .word ANI_SOUND,33h +; .word ANI_SHAKEALL,2 +; .word ANI_SHAKER,35 +; +; WL ANI_CHANGEANIM,shn_break_neck3_anim + +#***************************************************************************** + + SUBR shn_arm_broken_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-38000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_HIT_REL + + WL ANI_CODE,DO_SCREAM + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,S4AM3A+FR2 + + WL 3,S4AM3A+FR3 + WL 3,S4AM3A+FR4 + WL 3,S4AM3A+FR5 + WL 3,S4AM3A+FR6 + + WL 3,S4AM3A+FR7 + + WL 1,S4ST4C+FR1 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,shn_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR shn_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,S3BR3Z+FR3 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 21,S3BR3Z+FR3 + + WL 4,S3BR3Z+FR2 +; WL 4,S3BR3Z+FR5 + WL 4,S3UC3X+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + + WL 3,S3CP3B+FR1 + WL 3,S3CP3B+FR2 + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 3,S3CP3B+FR3 + WL 3,S3CP3B+FR4 + WL 3,S3CP3B+FR5 + WL 3,S3CP3B+FR6 + WL 3,S3CP3B+FR7 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 1,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR shn_slamnobounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 1,S3CP3B+FR2 + WL 3,S3CP3B+FR2 + WL 4,S3CP3B+FR3 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 4,S3CP3B+FR6 + WL 10,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + SUBR shn_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,S3CP3B+FR2 + .ref ckzpos + WL ANI_CODE,ckzpos + WL 3,S3CP3B+FR2 + WL 4,S3CP3B+FR3 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 4,S3CP3B+FR6 + WL 10,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + + SUBR shn_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,S3UC3Z+FR8 + WL ANI_CODE,ckzpos + WL 3,S3UC3Z+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + + WL 4,S3CP3B+FR2 + WL 4,S3CP3B+FR3 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 4,S3CP3B+FR6 + WL 10,S3CP3B+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +#***************************************************************************** + + SUBR shn_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,58,0 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYD_SWEAT,SWEAT_PER,0 + WL 4,S3UC3X+FR2 + WL 4,S3UC3X+FR3 + WL 4,S3UC3X+FR4 + WL 4,S3UC3X+FR5 + WL 1,S3UC3X+FR6 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,S3FD3X+FR1 + WL 3,S3FD3X+FR2 + WL 3,S3FD3X+FR3 + WL 3,S3FD3X+FR4 + WL 3,S3FD3X+FR5 + WL 3,S3FD3X+FR6 + WL 3,S3FD3X+FR7 + WL 3,S3FD3X+FR8 + + .word ANI_ZERO_XZVELS + + WL ANI_CODE,HIT_THE_MAT + + WL 8,S3RL3A+FR5 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,shn_faceup_getup_anim + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SNDDEBUG.H b/SNDDEBUG.H new file mode 100755 index 0000000..5f8f1e0 --- /dev/null +++ b/SNDDEBUG.H @@ -0,0 +1,27 @@ +;Sound scheduling debug stuff + + .if DEBUG +SND_DEBUG .equ 1 + .else +SND_DEBUG .equ 0 ;this one is always zero! + .endif + +*STRUCT SNDCAL +INDEX .set 0 ;UHW triple_sound table index +TSTMP .set 20h ;UDW PCNT timestamp (stored long, only show low word) +CALLER .set 30h ;UHL address of call +CHAN0 .set 50h ;UHW channel 0 call # +PRI .set 60h ;UHW priority +DUR .set 70h ;UDW duration +CHANL .set 80h ;UHW channel played on (-1=not played) +ACTION .set 90h ;UHW see list below +ADRS .set 0A0h ;UHL address of table entry +*ENDSTRUCT +SNDCALSIZ .set 0C0h + +SDA_EMPTY .equ 0 ;sound call okay, played on empty channel +SDA_PREEMPT .equ 1 ;sound call okay, preempts another call +SDA_LOPRI .equ 2 ;sound call okay, dropped -- priority too low +SDA_BADNDX .equ 3 ;bad index -- ignored +SDA_ZCALL .equ 4 ;index in range, but points to a zero entry + \ No newline at end of file diff --git a/SOUND.BAT b/SOUND.BAT new file mode 100755 index 0000000..799d7e0 --- /dev/null +++ b/SOUND.BAT @@ -0,0 +1,4 @@ +@echo off +qcomm -w -q -h + + \ No newline at end of file diff --git a/SOUND.EQU b/SOUND.EQU new file mode 100755 index 0000000..810c1ea --- /dev/null +++ b/SOUND.EQU @@ -0,0 +1,293 @@ +GOING_TO_TOP_ROPE .EQU 13CH +GOING_TO_TOP .EQU 13DH +HERE_IT_COMES .EQU 13EH +BOOMSHAKALAKA .EQU 13fh +AND_1 .EQU 140H +AND_2 .EQU 141H +AND_3 .EQU 142H +LOOK_AT_THIS .EQU 143H +OFF_THE_TOP .EQU 144H +KABOOM_OH .EQU 145H +KABOOM .EQU 146H +OOOH .EQU 147H +HERES_THE_SETUP .EQU 0efH +WITH_AUTHORITY .EQU 148H +OH_MY_GOODNESS_0 .EQU 149H +OH_MY_GOODNESS_1 .EQU 162H +;OH_MY_GOODNESS_2 .EQU 163H +LOOK_OUT .EQU 14AH +DID_YOU_SEE_THAT .EQU 14BH +AND_0 .EQU 14CH +OH_0 .EQU 14DH +OOOH_0 .EQU 14EH +THATS_GOTTA_HURT .EQU 14FH +WOW_0 .EQU 150H +WOW_1 .EQU 151H +ALMOST .EQU 152H +NICELY_DONE .EQU 153H +HEAVES_HIM .EQU 154H +NICE_ESCAPE .EQU 155H +NICE_EXECUTION .EQU 156H +;OH_THAT_HURTS_0 .EQU 157H +;OH_THAT_HURTS_1 .EQU 158H +A_MISS .EQU 159H +AND_MISSES .EQU 15AH +INTO_THE_ROPES .EQU 15BH +A_QUICK_REVERSAL .EQU 15CH +;BOTH_MEN_DOWN .EQU 15DH +THIS_COULD_BE_IT .EQU 15EH +NO_WAIT_A_MINUTE .EQU 15FH +UNBEELEVABLE_0 .EQU 0EDH +UNBEELEVABLE_1 .EQU 160H +UNBEELEVABLE_2 .EQU 161H +LISTEN_TO_THE_CROWD .EQU 164H +DID_YOU_HEAR_THAT .EQU 165H +IVE_NEVER_SEEN_THAT .EQU 166H +OH_MY .EQU 0F1H +AND_OH .EQU 0F0H +FORGET_ABOUT_IT .EQU 0EEH +VERY_IMP_DOINK .EQU 109H +VERY_IMP_SHAWN .EQU 10AH +VERY_IMP_RAZOR .EQU 10BH +VERY_IMP_BAM .EQU 10DH +VERY_IMP_UNDER .EQU 10CH +VERY_IMP_LUGER .EQU 10EH +VERY_IMP_HART .EQU 10FH +VERY_IMP_YOKO .EQU 110H +GIVE_CREDIT .EQU -1 +VERY_IMPRESSIVE .EQU -2 +END_GAME_STUFF .EQU -3 +IT_DOESNT_LOOK_GOOD .EQU -4 +R_IMPRESSIVE_MOVE .EQU -5 +GIDDUP_MODE .EQU -6 +REPEAT_MODE .EQU -7 +TOTAL_DISASTER .EQU 129H +TOTAL_DEBUNK .EQU 12AH +GIVE_CRED_DOINK .EQU 167H +GIVE_CRED_SHAWN .EQU 168H +GIVE_CRED_RAZOR .EQU 169H +GIVE_CRED_BAM .EQU 16AH +GIVE_CRED_UNDER .EQU 16BH +GIVE_CRED_LUGER .EQU 16CH +GIVE_CRED_HART .EQU 16DH +GIVE_CRED_YOKO .EQU 16EH +CONGRATULATIONS .EQU 0F2H +DOINK_LAUGH_0 .EQU 055H +DOINK_LAUGH_1 .EQU 056H +DOINK_LAUGH_2 .EQU 057H +DOINK_LAUGH_3 .EQU 058H +RAZOR_RIGHT_GUY .EQU 05AH +SHAWN_LUCKY_YOU .EQU 060H +SHAWN_WRESTLER_90 .EQU 061H +BAM_BEAST_FROM_EAST .EQU 066H +BAM_BAM_YEAH .EQU 067H +BAM_GET_OUT .EQU 06FH +NOT_A_GOOD_IDEA .EQU 16FH +WHAT_WAS_HE_THINKING .EQU 170H +YOU_CANT_GET_ANY_CLOSER .EQU 171H +WHAT_KEEPING_THEM_UP .EQU 17AH +LOOKS_LIKE_ITS_OVER .EQU 17BH +;ITS_PAND_OUT_THERE .EQU 17CH +ITS_PAND_IN_THE_RING .EQU 17DH +WHATS_THIS .EQU 17EH +WHAT_A_TURN_OF_EVENTS .EQU 17FH +MAGNIFICENT .EQU 180H +CAN_YOU_BELIEVE_THAT .EQU 181H +REJECTED .EQU 182H +WHAT_A_BEATING .EQU 183H +TO_THE_FACE .EQU 184H +TO_THE_MIDSECTION .EQU 185H +;AND_ANOTHER .EQU 186H +I_WOULD_RECEIVE_THAT .EQU 187H +WHAT_POWER .EQU 188H +;WHAT_SPEED .EQU 189H +WHAT_SKILL .EQU 18AH +WHAT_A_BLOW .EQU 18bH +AWESOME .EQU 18cH +JUST_AWESOME .EQU 18dH +GOODNIGHT .EQU 18eH +HELLO .EQU 18fH +IT_DOESNT_LOOK_DOINK .EQU 2B4H +IT_DOESNT_LOOK_SHAWN .EQU 2B6H +IT_DOESNT_LOOK_RAZOR .EQU 2B7H +IT_DOESNT_LOOK_UNDER .EQU 2B8H +IT_DOESNT_LOOK_BAMBAM .EQU 2B9H +IT_DOESNT_LOOK_LEX .EQU 2BAH +IT_DOESNT_LOOK_BRET .EQU 2BBH +IT_DOESNT_LOOK_YOKO .EQU 2BEH +ARE_YOU_TOUGH_ENOUGH .EQU 191H +CAN_ANYBODY_STOP_HIM .EQU 198H +;WHAT .EQU 199H +WHAT_THE .EQU 19aH +WAIT_A_MINUTE .EQU 19bH +HE_CANT_DO_THAT .EQU 19cH +IS_THAT_LEGAL .EQU 19dH +NOW_THAT_WAS_CHEAP .EQU 19eH +THATS_NOT_VERY_FAIR .EQU 19fH +SOMEONE_CALL_SECURITY .EQU 1A0H +THAT_WASNT_VERY_NICE .EQU 1A1H +MOST_IMPRESSIVE .EQU 1A2H +I_CANT_WATCH_THIS .EQU 1A3H +INCREDIBLE_COMBO .EQU 1A4H +NO_V .EQU 1A5H +YES_V .EQU 1A6H +HIGH_RISK_MANUEVER .EQU 1A7H +WHAT_A_SLAM .EQU 1A8H +HES_JUST_GONE_BERSERK .EQU 1AAH +SHOCKING .EQU 1ACH +CAN_YOU_WHAT_SEEN .EQU 1ADH +HES_GOT_HIM .EQU 1AEH +SOMEHOW_I_DONT_THINK .EQU 1BAH +SIGN_HERE_PLEASE .EQU 1BBH +GOOD_NIGHT_2 .EQU 1BCH +CAN_HE_GET_UP .EQU 157H +TRYING_TO_GET_UP .EQU 158H +THIS_IS_FOR_THE_MARBLES .EQU 190H + +R_NICELY_DONE .EQU 1D0H +R_TASTE_OF_HIS_OWN .EQU 1D1H +R_LOOK_AT_THIS .EQU 1D2H +R_RIGHT_TO_THE_KISSER .EQU 1D3H +R_THAT_WAS_DUMB .EQU 1D4H +R_THAT_WAS_UGLY .EQU 1D5H +R_DID_YOU_SEE_THAT .EQU 1D6H +R_IVE_NEVER_SEEN .EQU 1D7H +R_OH_YEAH .EQU 1D8H +R_THIS_COULD_BE_IT .EQU 1D9H +R_NO_WAIT_A_MINUTE .EQU 1DAH +R_MOVE_BY_SHAWN .EQU 1DBH +R_MOVE_BY_DOINK .EQU 1DCH +R_MOVE_BY_RAZOR .EQU 1DDH +R_MOVE_BY_UNDER .EQU 1DEH +R_MOVE_BY_BAM .EQU 1DFH +R_MOVE_BY_LEX .EQU 1E0H +R_MOVE_BY_HITMAN .EQU 1E1H +R_MOVE_BY_YOKO .EQU 1E2H +R_THATLL_COST_HIM .EQU 1E3H +R_REJECTED .EQU 1E4H +R_THATS_GOTTA_HURT .EQU 1E5H +R_GAME_OVER .EQU 1E6H +R_WHAT_POWER .EQU 1E7H +R_WHAT_SPEED .EQU 1E8H +R_WHAT_AGILITY .EQU 1E9H +R_AWESOME .EQU 1EAH +R_GOODNIGHT .EQU 1EBH +R_HELLO .EQU 1ECH +R_WHATS_GOING_ON .EQU 1EDH +R_HE_CANT_DO_THAT .EQU 1EEH +R_THAT_WAS_CHEAP .EQU 1EFH +R_SOMEONE_CALL_SECURITY .EQU 1F0H +R_THAT_WASNT_NICE .EQU 1F1H +R_I_CANT_WATCH .EQU 1F2H +R_INCREDIBLE .EQU 1F3H +R_THIS_COULD_BE_TROUBLE .EQU 1F4H +R_I_THINK_HE_BROKE_IT .EQU 1F5H +R_NOBODY_GETS_UP .EQU 1F6H +R_DIG_IT .EQU 1F7H +R_OH_VICIOUS .EQU 1F8H + +;L_KNEEL .EQU 2b0H +L_IT_DOESNT_LOOK_DOINK .EQU 2b4H +L_IT_DOESNT_LOOK_SHAWN .EQU 2b6H +L_IT_DOESNT_LOOK_RAZOR .EQU 2b7H +L_IT_DOESNT_LOOK_TAKER .EQU 2b8H +L_IT_DOESNT_LOOK_BAM .EQU 2b9H +L_IT_DOESNT_LOOK_LEX .EQU 2baH +L_IT_DOESNT_LOOK_BRET .EQU 2bbH +L_IT_DOESNT_LOOK_YOKO .EQU 2beH +L_GIDDUP_DOINK .EQU 2c7H +L_GIDDUP_SHAWN .EQU 2c8H +L_GIDDUP_RAZOR .EQU 2c9H +L_GIDDUP_UNDER .EQU 2caH +L_GIDDUP_BAM .EQU 2cbH +L_GIDDUP_LUGER .EQU 2ccH +L_GIDDUP_HART .EQU 2cdH +L_GIDDUP_YOKO .EQU 2ceH +L_DESERVE_DOINK .EQU 2cfH +L_DESERVE_SHAWN .EQU 2d1H +L_DESERVE_RAZOR .EQU 2d2H +L_DESERVE_TAKER .EQU 2d3H +L_DESERVE_BAM .EQU 2d4H +L_DESERVE_LUGER .EQU 2d5H +L_DESERVE_BRET .EQU 2d6H +L_DESERVE_YOKO .EQU 2d8H +L_ANYTHING_CAN_WWF .EQU 2d9H +L_ANYTHING_CAN_WRESTLE .EQU 2daH +L_QUIET .EQU 2dbH +L_HEAVES .EQU 2dcH +L_GOING_FOR_ROPE .EQU 2ddH +L_WHO_DOES_HE_THINK .EQU 2deH +;L_GIDDUP .EQU 2e0H +L_LISTEN_TO_THE_CROWD .EQU 2e1H +L_CHEER_FOR_ME .EQU 2e2H +L_WHAT_MORONS .EQU 2e3H +L_DID_YOU_HEAR_THAT .EQU 2e4H +L_WHAT_WAS_HE_THINKING .EQU 2e5H +L_WHATS_HE_UP_TO .EQU 2e6H +L_NOT_A_GOOD_IDEA .EQU 2e7H +L_WHAT_A_JERK .EQU 2e8H +L_WHAT_A_COMBACK .EQU 2e9H +L_END_OF_THAT .EQU 2eaH +L_TEETH_POP .EQU 2ebH +L_YES_THE_CHAIR .EQU 2ecH +L_THE_CHAIR .EQU 2edH +L_HIT_HIM .EQU 2eeH +;L_THE_SUSPENSE .EQU 2efH +L_THAT_WAS_CHEAP .EQU 2f1H +L_I_DIDNT_SEE .EQU 2f2H +L_WHAT_KIND_OF_CHEAP .EQU 2f3H +L_WHAT_A_RIPOFF .EQU 2f4H +L_WHAT_A_SCAM .EQU 2f5H +L_DONT_BOTHER .EQU 2f6H +L_SURE_IT_WAS .EQU 2f7H +L_I_WOULDNT_BELIEVE_IT .EQU 2f8H +L_NO_ONE_CAN_TOUCH .EQU 2f9H +L_HE_DID_IT .EQU 2faH +L_PULLED_IT_OFF .EQU 2fbH +L_SOMETHING .EQU 2fcH +L_AND_STAY_DOWN .EQU 2fdH +L_EXACT_WHAT_HE_DESERVED .EQU 2feH +L_CONGRATS .EQU 2ffH +L_SIGN_YOUR_NAME .EQU 300H +L_BACK_TO_SANDBOX .EQU 301H +L_AW_CMON_2 .EQU 302H + +CROWD_BOO .EQU 2048 +CROWD_OH_0 .EQU 2049 +CROWD_OH_1 .EQU 2050 +CROWD_HOORAY .EQU 2051 +CROWD_WHISTLE_0 .EQU 2052 +CROWD_WHISTLE_1 .EQU 2053 +CROWD_CHEER_0 .EQU 2054 +CROWD_CHEER_1 .EQU 2055 +CROWD_HEY_LOOP .EQU 2056 +CROWD_YEAH_0 .EQU 2057 +CROWD_VICTORY_LOOP .EQU 2058 +CROWD_WHOA_0 .EQU 2059 +CROWD_WHOA_1 .EQU 2060 +CROWD_DOUBLE_WHOA .EQU 2061 +CROWD_CRESCENDO .EQU 2062 +CROWD_OH_FAIL .EQU 2063 +CROWD_OH_CHEER .EQU 2064 +CROWD_BASIC .EQU 2065 + +D_CROWD_BOO .EQU 98 +D_CROWD_OH_0 .EQU 55 +D_CROWD_OH_1 .EQU 43 +D_CROWD_HOORAY .EQU 58 +D_CROWD_WHISTLE_0 .EQU 34 +D_CROWD_WHISTLE_1 .EQU 100 +D_CROWD_CHEER_0 .EQU 142 +D_CROWD_CHEER_1 .EQU 101 +D_CROWD_YEAH_0 .EQU 116 +D_CROWD_WHOA_0 .EQU 49 +D_CROWD_WHOA_1 .EQU 68 +D_CROWD_DOUBLE_WHOA .EQU 79 +D_CROWD_CRESCENDO .EQU 56 +D_CROWD_OH_FAIL .EQU 64 +D_CROWD_OH_CHEER .EQU 146 + +D_CROWD_VICTORY_LOOP .EQU 200 +D_CROWD_HEY_LOOP .EQU 150 + + diff --git a/SOUND.H b/SOUND.H new file mode 100755 index 0000000..1bc2022 --- /dev/null +++ b/SOUND.H @@ -0,0 +1,197 @@ +*************************************************************************** +* +* Mnemonics for sound calls +* + +MUSIC_ON equ 1 + +SELECT_TUNE equ 15h + +bounce_l1 equ 009h ;sound of landing on the mat + +run_snd equ 0C0h ;sound of footsteps while running + +seltimer_onsnd equ 001h +seltimer_offsnd equ 002h + +clock_snd equ 07Ch + +bounce_snd equ 001h + +;NOT triple_snd calls! +d_up_snd equ 3d4h +d_dn_snd equ 3d5h + +d_enter_snd equ 3d6h +d_escape_snd equ 3d7h +d_warning_snd equ 3d8h + +d_beep1_snd equ 3d9h +d_beep2_snd equ 3dah + +d_misc1_snd equ 3dbh +d_misc2_snd equ 3dch +d_misc3_snd equ 3ddh + + +beep1_snd equ 3d9h +beep2_snd equ 3dah +cursor_snd4 equ 1612 ;operator message cursor +select_snd1 equ 1624 ;operator message select + + +coin_snd equ 048h +musicoff_snd equ 005h +snd_play1ovr equ 006h + +W_BRET equ 0 +W_RAZOR equ 1 +W_TAKER equ 2 +W_YOKO equ 3 +W_SHAWN equ 4 +W_BAMBAM equ 5 +W_DOINK equ 6 +W_ADAM equ 7 +W_LUGER equ 8 +W_REF equ 9 + + +PUNCH_T1 equ 0 +PUNCH_T2 equ 1 +PUNCH_L1 equ 2 +PUNCH_L2 equ 3 +HDBUTT_T1 equ 4 +HDBUTT_T2 equ 5 +HDBUTT_L1 equ 6 +HDBUTT_L2 equ 7 +KICK_T1 equ 8 +KICK_T2 equ 9 +KICK_L1 equ 10 +KICK_L2 equ 11 +FLYKICK_T1 equ 12 +FLYKICK_T2 equ 13 +FLYKICK_L1 equ 14 +FLYKICK_L2 equ 15 +GRABTHROW_T1 equ 16 +GRABTHROW_T2 equ 17 +GRABTHROW_L1 equ 18 +GRABTHROW_L2 equ 19 +UPRCUT_T1 equ 20 +UPRCUT_T2 equ 21 +UPRCUT_L1 equ 22 +UPRCUT_L2 equ 23 +LBOWDROP_T1 equ 24 +LBOWDROP_T2 equ 25 +LBOWDROP_L1 equ 26 +LBOWDROP_L2 equ 27 +GRABHOLD_T1 equ 28 +GRABHOLD_T2 equ 29 +GRABHOLD_L1 equ 30 +GRABHOLD_L2 equ 31 +GRABFLING_T1 equ 32 +GRABFLING_T2 equ 33 +GRABFLING_L1 equ 34 +GRABFLING_L2 equ 35 +PUSH_T1 equ 36 +PUSH_T2 equ 37 +PUSH_L1 equ 38 +PUSH_L2 equ 39 +HIPTOSS_T1 equ 40 +HIPTOSS_T2 equ 41 +HIPTOSS_L1 equ 42 +HIPTOSS_L2 equ 43 +;BIGBOOT_T1 equ 44 +;BIGBOOT_T2 equ 45 +;BIGBOOT_L1 equ 46 +;BIGBOOT_L2 equ 47 + +SPUNCH_T1 equ 48 +SPUNCH_T2 equ 49 +SPUNCH_L1 equ 50 +SPUNCH_L2 equ 51 + +TURNDIVE_T1 equ 52 +TURNDIVE_T2 equ 53 + +RUGSLAM_YELL equ 54 +RUGSLAM_IMPACT equ 55 + +RSLASH_L1 equ 56 +RSLASH_L2 equ 57 + +YELL_THROW equ 58 + +LAST_MOVE equ YELL_THROW + +W_LOOKUP equ 8000h + + + .globl DEFAULT_SOUND_TABLE,MASTER_SOUND_TABLE,table_sound + +WRSND .macro WRESTLER,SOUND1,SOUND2 + + movi MASTER_SOUND_TABLE+(:WRESTLER:*10h*(LAST_MOVE+1))+(:SOUND1:*16),a0 + move *a0,a0,W + jrnn OKAY? + + ;oops. use the default instead + movi DEFAULT_SOUND_TABLE+(:SOUND1:*16),a0 + move *a0,a0,W + jrz DONE1? + +OKAY? + calla table_sound +DONE1? + .if $isname(SOUND2) + movi MASTER_SOUND_TABLE+(:WRESTLER:*10h*(LAST_MOVE+1))+(:SOUND2:*16),a0 + move *a0,a0,W + jrnn OKAY2? + + ;oops. use the default instead + movi DEFAULT_SOUND_TABLE+(:SOUND2:*16),a0 + move *a0,a0,W + jrz DONE2? + +OKAY2? + calla table_sound +DONE2? + .endif + .endm + + +WRSNDXI .macro REG,SOUND1 + PUSH a0,a1 + + move *:REG:(WRESTLERNUM),a1,W + movi (LAST_MOVE+1),a14 + mpyu a14,a1 + X16 a1 + addi (:SOUND1:*10h),a1 + addi MASTER_SOUND_TABLE,a1 + move *a1,a0,W + jrz DONE? + jrp OKAY? + + ;oops. use the default instead + movi DEFAULT_SOUND_TABLE+(:SOUND1:*10h),a1 + move *a1,a0,W + jrz DONE? +OKAY? + calla table_sound +DONE? PULL a0,a1 + .endm + +WRSNDX .macro P1,P2,P3 + .if $isreg(P1) + WRSNDXI :P1:,:P2: + .if $isname(P3) + WRSNDXI :P1:,:P3: + .endif + .else + WRSNDXI a13,:P1: + .if $isname(P2) + WRSNDXI a13,:P2: + .endif + .endif + .endm + \ No newline at end of file diff --git a/SOUND.HDR b/SOUND.HDR new file mode 100755 index 0000000..37aaa48 --- /dev/null +++ b/SOUND.HDR @@ -0,0 +1,107 @@ +****************************************************************************** +* +* Mnemonics for sound calls +* + +SELECT_TUNE .equ 15h + +bounce_l1 .equ 009h ;sound of landing on the mat + +run_snd .equ 00Dh ;sound of footsteps while running + +seltimer_onsnd equ 001h +seltimer_offsnd equ 002h + +bounce_snd .equ 001h +beep1_snd .equ 002h +beep2_snd .equ 003h +coin_snd .equ 004h +musicoff_snd .equ 005h +snd_play1ovr .equ 006h +cursor_snd4 .equ 007h +select_snd1 .equ 008h + + +W_BRET .equ 0 +W_RAZOR .equ 1 +W_TAKER .equ 2 +W_YOKO .equ 3 +W_SHAWN .equ 4 +W_BAMBAM .equ 5 +W_DOINK .equ 6 +W_ADAM .equ 7 +W_LUGER .equ 8 + + +PUNCH_T1 .equ 0 +PUNCH_T2 .equ 1 +PUNCH_L1 .equ 2 +PUNCH_L2 .equ 3 +HDBUTT_T1 .equ 4 +HDBUTT_T2 .equ 5 +HDBUTT_L1 .equ 6 +HDBUTT_L2 .equ 7 +KICK_T1 .equ 8 +KICK_T2 .equ 9 +KICK_L1 .equ 10 +KICK_L2 .equ 11 +FLYKICK_T1 .equ 12 +FLYKICK_T2 .equ 13 +FLYKICK_L1 .equ 14 +FLYKICK_L2 .equ 15 +GRABTHROW_T1 .equ 16 +GRABTHROW_T2 .equ 17 +GRABTHROW_L1 .equ 18 +GRABTHROW_L2 .equ 19 +UPRCUT_T1 .equ 20 +UPRCUT_T2 .equ 21 +UPRCUT_L1 .equ 22 +UPRCUT_L2 .equ 23 +LBOWDROP_T1 .equ 24 +LBOWDROP_T2 .equ 25 +LBOWDROP_L1 .equ 26 +LBOWDROP_L2 .equ 27 +GRABHOLD_T1 .equ 28 +GRABHOLD_T2 .equ 29 +GRABHOLD_L1 .equ 30 +GRABHOLD_L2 .equ 31 +GRABFLING_T1 .equ 32 +GRABFLING_T2 .equ 33 +GRABFLING_L1 .equ 34 +GRABFLING_L2 .equ 35 +PUSH_T1 .equ 36 +PUSH_T2 .equ 37 +PUSH_L1 .equ 38 +PUSH_L2 .equ 39 +HIPTOSS_T1 .equ 40 +HIPTOSS_T2 .equ 41 +HIPTOSS_L1 .equ 42 +HIPTOSS_L2 .equ 43 +BIGBOOT_T1 .equ 44 +BIGBOOT_T2 .equ 45 +BIGBOOT_L1 .equ 46 +BIGBOOT_L2 .equ 47 +TURNDIVE_T1 .equ 48 +TURNDIVE_T2 .equ 49 +YELL_THROW .equ 50 +LAST_MOVE .equ YELL_THROW + +W_LOOKUP .equ 8000h + + + .ref DEFAULT_SOUND_TABLE,MASTER_SOUND_TABLE + +WRSND .macro WRESTLER,SOUND + + movi MASTER_SOUND_TABLE+(:WRESTLER:*10h*(LAST_MOVE+1))+(:SOUND:*16),a0 + move *a0,a0,W + jrnn OKAY? + + ;oops. use the default instead + movi DEFAULT_SOUND_TABLE+(:SOUND:*16),a0 + move *a0,a0,W + +OKAY? + calla triple_sound + .endm + \ No newline at end of file diff --git a/SPECIAL.ASM b/SPECIAL.ASM new file mode 100755 index 0000000..3e61b03 --- /dev/null +++ b/SPECIAL.ASM @@ -0,0 +1,6003 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "special.asm" + .title "general special moves stuff" + .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" + .include "miscimg.glo" + .include "special.equ" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "imgtbl.glo" + .INCLUDE "SWEAT.EQU" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref BAKMODS,message_palette,triple_sound,HALT,no_debris + .ref announce_rnd_winner,pal_set,octopus2,ZERO_BITS,pal_find + .ref RNDRNG0,CREATE_DISQUAL,pal_getf,GENERIC_DISPLAY,NUM_OPPS + .ref PCNT,RNDPER,print_string_C2,ROLLING_COUNT,RNDRNGS + .ref BGND_UD1,process_ptrs,mess_objid,setup_message,osgemd_ascii + .ref dufus_msg_on,reduce_bog + .ref ring_out_on + .ref _switch_addr + .ref match_cnt + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +SHOW_DAMAGE_POINTS equ 0 + +****************************************************************************** +* VARIABLES + + .bss impact_params ,32*8 * NUM_WRES ; + + BSSX WHICH_SKIRT_PAL,16 + + BSSX plyr1_objlist, 32 ;collideable objects on P1's side + BSSX plyr2_objlist, 32 ; P2's side + BSSX neutral_objlist,32 ;neutral collideable + BSSX debris_count, 16 ;active debris processes + +****************************************************************************** +* EQUATES FOR THIS FILE + + STRUCTPD + LONG ANIM + LONG XVAL + LONG YVAL + WORD ZVAL + LONG XVEL + LONG YVEL + WORD FLAGS + LONG PROC + LONG PALLET + LONG STAR_TBL + +#***************************************************************************** +* +* a10=index into offsets table + + SUBR create_dizzy_proc + + move *a13(STARS_FLAG),a0 + jrnz #x + + CREATE0 dizzy_proc + move a0,a9 + move a13,*a9(PROC),L + + movk 1,a0 + move a0,*a13(STARS_FLAG) + + move *a13(WRESTLERNUM),a8 + X128 a8 + addi #dizzy_offsets,a8 + X32 a10 + add a10,a8 + move *a8+,a1 ;x offset + move *a13(OBJ_XPOSINT),a0 + + move *a13(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a1 +#no_flip + add a1,a0 + sll 16,a0 + move a0,*a9(XVAL),L + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(OBJ_ZPOSINT),a1 + mpyu a0,a1 + move *a13(OBJ_YPOSINT),a0 + move *a8,a14 ;y offset + add a14,a0 + sll 16,a0 + sub a0,a1 + move a1,*a9(YVAL),L + +; move *a13(OBJ_PRIORITY),a0 + move *a13(OBJ_ZPOSINT),a0 + ori 1000h,a0 + +;The stars for laying on ground guy, appear in front of other guy also! +;No easy solution for this problem... + + inc a0 + move a0,*a9(ZVAL) + +#x + rets + + +; stand, lying +#dizzy_offsets +; stand, on stomach, on back,?,? + + .word 6,6dh, 0,0, 0,0, 0,0 ;0 Bret Hart + .word 2,73h, 0,0, 0,0, 0,0 ;1 Razor Ramon + .word 19h,74h, 0,0, 0,0, 0,0 ;2 Undertaker + .word 10,6dh, 0,0, 0,0, 0,0 ;3 Yokozuna + .word -5,6bh, 0,0, 0,0, 0,0 ;4 Shawn Michaels + .word 5,116, 0,0, 0,0, 0,0 ;5 Bam Bam + .word 7,116, 2eh,30h, 30h,20h, 0,0 ;6 Doink + .word 7,116, 0,0, 0,0, 0,0 ;7 Spare + .word 7,116, 0,0, 0,0, 0,0 ;8 Lex Luger + .word 7,116, 0,0, 0,0, 0,0 ;9 Referee + + +#***************************************************************************** + + SUBRP dizzy_proc + + move *a13(PROC),a0,L + move *a0(WRESTLERNUM),a0 + X32 a0 + addi #star_art,a0 + move *a0,a10,L + move a10,*a13(STAR_TBL),L + + + move *a10+,a11 ;tick count + move *a10+,a2,L ;* image + + move *a13(XVAL),a0,L ;x val + move *a13(YVAL),a1,L ;y val + move *a13(ZVAL),a3 ;z val + movi DMAWNZ|M_3D,a4 ;DMA flags + clr a5 ;OID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + move *a13(PROC),a9,L +#loop + SLEEPK 1 + move *a9(STARS_FLAG),a0 + jrz #die + +;If stars are on for grounded opponent, swap ZPOS based on nearest opponent + move *a9(PLYRMODE),a0 + cmpi MODE_ONGROUND,a0 + jrnz #nock + + move *a9(NEW_FACING_DIR),a0 + btst MOVE_UP_BIT,a0 + jrnz #front +;Stars should be lower Z than wrestlers + move *a13(ZVAL),a0 ;z val + subk 1,a0 + move a0,*a8(OZPOS) + jruc #nock +#front +;Stars should be higher Z than wrestlers + move *a13(ZVAL),a0 ;z val + addk 1,a0 + move a0,*a8(OZPOS) + +#nock + + dsj a11,#loop +#cnt + move *a10+,a11 + jrnz #ok + +; movi #dizzy_anim,a10 ;repeat + move *a13(STAR_TBL),a10,L + + jruc #cnt +#ok + move *a10+,a0,L + callr change_image_local + jruc #loop + + +#die + calla DELOBJA8 + DIE + + +#star_art + .long #hdizzy_anim ;0 Bret Hart + .long #rdizzy_anim ;1 Razor Ramon + .long #udizzy_anim ;2 Undertaker + .long #ydizzy_anim ;3 Yokozuna + .long #sdizzy_anim ;4 Shawn Michaels + .long #bdizzy_anim ;5 Bam Bam + .long #ddizzy_anim ;6 Doink + .long 0 ;7 spare + .long #ldizzy_anim ;8 Lex Luger + .long 0 ;9 Referee + +#hdizzy_anim + WL 4,STARS01 + WL 4,STARS02 + WL 4,STARS03 + WL 4,STARS04 + WL 4,STARS05 + WL 4,STARS06 + .word 0 + +#rdizzy_anim + WL 5,RAZDIZ201 + WL 5,RAZDIZ202 + WL 5,RAZDIZ203 + WL 5,RAZDIZ204 + WL 5,RAZDIZ205 + WL 5,RAZDIZ206 + WL 5,RAZDIZ207 + WL 5,RAZDIZ208 + WL 5,RAZDIZ209 + WL 5,RAZDIZ210 + .word 0 + +#udizzy_anim + WL 5,UNDZ01 + WL 5,UNDZ02 + WL 5,UNDZ03 + WL 5,UNDZ04 + WL 5,UNDZ05 + WL 5,UNDZ06 + .word 0 + +#ydizzy_anim + WL 5,YKDZ01 + WL 5,YKDZ02 + WL 5,YKDZ03 + WL 5,YKDZ04 + WL 5,YKDZ05 + WL 5,YKDZ06 + WL 5,YKDZ07 + WL 5,YKDZ08 + WL 5,YKDZ09 + .word 0 + +#sdizzy_anim + WL 4,SHNDIZ01 + WL 4,SHNDIZ02 + WL 4,SHNDIZ03 + WL 4,SHNDIZ04 + WL 4,SHNDIZ05 + WL 4,SHNDIZ06 + WL 4,SHNDIZ07 + WL 4,SHNDIZ08 + WL 4,SHNDIZ09 + WL 4,SHNDIZ10 + .word 0 + +#bdizzy_anim + WL 5,BMDZ01 + WL 5,BMDZ02 + WL 5,BMDZ03 + WL 5,BMDZ04 + WL 5,BMDZ05 + WL 5,BMDZ06 + .word 0 + +#ddizzy_anim + WL 4,STARS01 + WL 4,STARS02 + WL 4,STARS03 + WL 4,STARS04 + WL 4,STARS05 + WL 4,STARS06 + .word 0 + +#ldizzy_anim + WL 4,STARS01 + WL 4,STARS02 + WL 4,STARS03 + WL 4,STARS04 + WL 4,STARS05 + WL 4,STARS06 + .word 0 + + +#***************************************************************************** + +;For Bam fire head butt +;For Taker club to head + SUBR create_impact + + ;quit if no_debris is set + move @no_debris,a14 + jrnz #rets + move @reduce_bog,a14 + jrnz #rets + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + move *a10(WRESTLERNUM),a0 + sll 5,a0 + addi #offset_t,a0 + move *a0,a11,L + CREATE DEBRIS_PID,#explosions + CREATE DEBRIS_PID,#explosions2 + PULL a1,a4,a7,a10,a11 + +#rets rets + +#offset_t + .long [100,0] ;0 (Bret) + .long [108,0] ;1 (Razor) + .long [108,0] ;2 (Taker) + .long [105,0] ;3 (Yoko) + .long [80,0] ;4 (Shawn) + .long [105,0] ;5 (Bam Bam) + .long [96,0] ;6 (Doink) + .long [105,0] ;7 (spare) + .long [90,0] ;8 (Lex) + +;For Bam fire super kick +;For Taker fire super kick + SUBR create_impact2 + + ;quit if no_debris is set + move @no_debris,a14 + jrnz #rets + move @reduce_bog,a14 + jrnz #rets + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + movi [38h,13h],a11 + CREATE DEBRIS_PID,#explosions + CREATE DEBRIS_PID,#explosions2 + PULL a1,a4,a7,a10,a11 + + rets + +;For Taker explosion for pin + SUBR create_impact5 + + ;quit if no_debris is set + move @no_debris,a14 + jrnz #rets + move @reduce_bog,a14 + jrnz #rets + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + movi [10,1h],a11 + CREATE DEBRIS_PID,#explosions + CREATE DEBRIS_PID,#explosions2 + CREATE DEBRIS_PID,#explosions2 + PULL a1,a4,a7,a10,a11 + + rets + +;For Bam fire punches to head + SUBR create_impact3 + + ;quit if no_debris is set + move @no_debris,a14 + jrnz #rets + move @reduce_bog,a14 + jrnz #rets + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + movi [58h,0],a11 + CREATE DEBRIS_PID,#explosions + PULL a1,a4,a7,a10,a11 + + rets + +;For Yoko salt to face + SUBR create_impact_salt + + PUSH a1,a4,a7,a10,a11 + move a13,a10 + movi [38h,0],a11 + CREATE DEBRIS_PID,explosions_salt + PULL a1,a4,a7,a10,a11 + + rets + +;For Taker uppercut + SUBR create_impact4 + + ;quit if no_debris is set + move @no_debris,a14 + jrnz #rets + move @reduce_bog,a14 + jrnz #rets + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + movi [58h,0],a11 + CREATE DEBRIS_PID,#head_fountain +;Don't allow other debris to come out and bog us down! + movk 1,a0 + move a0,@no_debris + PULL a1,a4,a7,a10,a11 + + rets + +;For Bam flying kick to face + SUBR create_impact_flykick + + ;quit if no_debris is set + move @no_debris,a14 + jrnz #rets + move @reduce_bog,a14 + jrnz #rets + + PUSH a1,a4,a7,a10,a11 + move *a13(WHOIHIT),a10,L + movi [58h,0],a11 + CREATE DEBRIS_PID,#head_fountain_kick +;Don't allow other debris to come out and bog us down! + movk 1,a0 + move a0,@no_debris + PULL a1,a4,a7,a10,a11 + + rets + +#head_fountain_kick +;For Taker uppercut fountain + move *a10(DEBRIS_X),a1 + jrnz #cont_k + + clr a0 ;okay, a0 IS always zero after a wakeup, + move a0,@no_debris ; but it's bad karma to count on it. + DIE + +#cont_k + CREATE DEBRIS_PID,impact_proc2 + move a0,a9 + + movi XPLODE_P,a0 + move a0,*a9(PALLET),L + + callr #stuff_it + + SLEEPK 2 + jruc #head_fountain_kick + +#head_fountain +;For Taker uppercut fountain + move *a10(DEBRIS_X),a1 + jrnz #cont + + clr a0 ;okay, a0 IS always zero after a wakeup, + move a0,@no_debris ; but it's bad karma to count on it. + DIE + +#cont + CREATE DEBRIS_PID,impact_proc2 + move a0,a9 + + movi BLUEEX_P,a0 + move a0,*a9(PALLET),L + + callr #stuff_it + + SLEEPK 2 + + jruc #head_fountain + +#stuff_it + movk 11,a0 + + calla RNDRNG0 + sll 5,a0 + addi #exp_tbl,a0 + move *a0,a0,L + + move a0,*a9(ANIM),L ;animation + + movi DMAWNZ|M_3D,a4 ;DMA flags + + move *a10(DEBRIS_X),a1 + move *a10(OBJ_XPOSINT),a0 + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip2 + neg a1 + ori M_FLIPH,a4 ;flip image +#no_flip2 + add a1,a0 + sll 16,a0 + move a0,*a9(XVAL),L + move a4,*a9(FLAGS) ;DMA flags + + movi Y_SCALE_MULTIPLIER,a0 + move *a10(OBJ_ZPOSINT),a3 + mpyu a0,a3 + move *a10(OBJ_YPOSINT),a0 + + move *A10(DEBRIS_Y),a14 + add a14,a0 + sll 16,a0 + sub a0,a3 + move a3,*a9(YVAL),L + + move *a10(OBJ_ZPOSINT),a0 + ori 1000h,a0 + move *a10(INRING),a14 + jrz #inring2 + cmpi [015ach,0],a0 + jrgt #inring2 + subi [01e5h,0],a0 ;below mat +#inring2 + move a0,a2 + move @HCOUNT,a1 + btst 0,a1 + jrz #ok2 + addi 5h,a2 +#ok2 + move a2,*a9(ZVAL) + + movi 20000h,a0 + calla RNDRNG0 + subi 10000h,a0 + move a0,*a9(XVEL),L + + movi 20000h,a0 + calla RNDRNG0 + subi 10000h,a0 + move a0,*a9(YVEL),L + rets + + +;For Yoko salt bucket + SUBR create_bucket_salt + + ;quit if no_debris is set + move @no_debris,a14 + jrnz #rets + move @reduce_bog,a14 + jrnz #rets + + PUSH a1,a4,a7,a10,a11 +; move *a13(WHOIHIT),a10,L + +; movi [58h,0],a11 + + move a13,a10 + CREATE DEBRIS_PID,#salt_from_bucket +;Don't allow other debris to come out and bog us down! +; movk 1,a0 +; move a0,@no_debris + PULL a1,a4,a7,a10,a11 + + rets + +#salt_from_bucket +;For Taker uppercut fountain + move *a10(DEBRIS_X),a1 + jrnz #conts + + move a1,@no_debris + + DIE + +#conts + CREATE DEBRIS_PID,impact_proc2 + move a0,a9 + + movk 3,a0 + calla RNDRNG0 + sll 5,a0 + addi #salt_exp_tbl,a0 + move *a0,a0,L + + move a0,*a9(ANIM),L ;animation + + movi SALTTR_P,a0 + move a0,*a9(PALLET),L + + movi DMAWNZ|M_3D,a4 ;DMA flags + + move *a10(DEBRIS_X),a1 + move *a10(OBJ_XPOSINT),a0 + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip2s + neg a1 + ori M_FLIPH,a4 ;flip image +#no_flip2s + add a1,a0 + sll 16,a0 + move a0,*a9(XVAL),L + move a4,*a9(FLAGS) ;DMA flags + + movi Y_SCALE_MULTIPLIER,a0 + move *a10(OBJ_ZPOSINT),a3 + mpyu a0,a3 + move *a10(OBJ_YPOSINT),a0 + + move *A10(DEBRIS_Y),a14 + add a14,a0 + sll 16,a0 + sub a0,a3 + move a3,*a9(YVAL),L + + move *a10(OBJ_ZPOSINT),a0 + ori 1000h,a0 + move *a10(INRING),a14 + jrz #inring2s + cmpi [015ach,0],a0 + jrgt #inring2s + subi [01e5h,0],a0 ;below mat +#inring2s + move a0,a2 + move @HCOUNT,a1 + btst 0,a1 + jrz #ok2s + addi 5h,a2 +#ok2s + move a2,*a9(ZVAL) + + + movi 20000h,a0 + calla RNDRNG0 + subi 10000h,a0 + move a0,*a9(XVEL),L + + movi 20000h,a0 + calla RNDRNG0 + subi 10000h,a0 + move a0,*a9(YVEL),L + + SLEEPK 2 + + jruc #salt_from_bucket + +***************************************************************************** + +#explosions2 + SLEEPK 1 +#explosions + + ;if there's too much debris already, don't do anything. + move @debris_count,a14 + cmpi DEBRIS_MAX,a14 + jrge #die + + ;increment global debris count + move @debris_count,a14 + inc a14 + move a14,@debris_count + + movx a11,a0 + move a0,*a13(PDATA) ;x + movy a11,a0 + srl 16,a0 + move a0,*a13(PDATA+16) ;y + + movk 4,a11 + move *a10(WHOHITME),a0,L + MOVE *A0(COMBO_COUNT),A0 + JRZ #lp + movk 1,a11 +#lp + CREATE DEBRIS_PID,impact_proc + move a0,a9 + + movk 11,a0 + calla RNDRNG0 + sll 5,a0 + addi #exp_tbl,a0 + move *a0,a0,L + + move a0,*a9(ANIM),L ;animation + + move *a10(WHOHITME),a0,L + move *a0(WRESTLERNUM),a0 + sll 5,a0 + addi #pal_t,a0 + move *a0,a0,L + move a0,*a9(PALLET),L + + movi DMAWNZ|M_3D,a4 ;DMA flags + + move *a13(PDATA),a1 ;x + + move *a10(OBJ_XPOSINT),a0 + + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a1 + ori M_FLIPH,a4 ;flip image +#no_flip + add a1,a0 + move a0,a2 + + movi 30,a0 + calla RNDRNG0 + subi 15,a0 + add a0,a2 + + sll 16,a2 + move a2,*a9(XVAL),L + + move a4,*a9(FLAGS) ;DMA flags + + movi Y_SCALE_MULTIPLIER,a0 + move *a10(OBJ_ZPOSINT),a3 + mpyu a0,a3 + move *a10(OBJ_YPOSINT),a0 + move *a13(PDATA+16),a14 ;y + add a14,a0 ;<--- get from table + + move a0,a2 + + movi 20,a0 + calla RNDRNG0 + subi 10,a0 + add a0,a2 + + sll 16,a2 + sub a2,a3 + move a3,*a9(YVAL),L + +; movi >2480,a0 + + move *a10(OBJ_ZPOSINT),a0 + ori 1000h,a0 + move *a10(INRING),a14 + jrz #inring + cmpi [015ach,0],a0 + jrgt #inring + subi [01e5h,0],a0 ;below mat +#inring + move a0,a2 + move @HCOUNT,a1 + btst 0,a1 + jrz #ok + addi 5h,a2 +#ok + move a2,*a9(ZVAL) + + +; movi 8000h,a0 +; calla RNDRNG0 +; subi 4000h,a0 +; +; move *a10(OBJ_XVEL),a1,L +; add a1,a0 + + clr a0 + move a0,*a9(XVEL),L + + movi 10000h,a0 + calla RNDRNG0 + subi 8000h,a0 + +; move *a10(OBJ_YVEL),a1,L +; add a1,a0 + + clr a0 + move a0,*a9(YVEL),L + + SLEEPK 4 + + dsj a11,#lp + + ;decrement global debris count + move @debris_count,a14 + dec a14 + move a14,@debris_count + +#die DIE + +#pal_t .long XPLODE_P ;0 (Bret) + .long XPLODE_P ;1 (Razor) + .long BLUEEX_P ;2 (Taker) + .long XPLODE_P ;3 (Yoko) + .long XPLODE_P ;4 (Shawn) + .long XPLODE_P ;5 (Bam Bam) + .long XPLODE_P ;6 (Doink) + .long XPLODE_P ;7 spare + .long XPLODE_P ;8 (Lex) + + +**************************************************************************** +* a11 = * impact parameters + + SUBR impact_proc2 + move a10,a9 + + callr begin_ani +#loop0 + SLEEPK 1 + + JSRP special_ani + jruc #loop0 + +***************************************************************************** +* a11 = * impact parameters + + SUBR impact_proc + move a10,a9 + + callr begin_ani +#loop + SLEEPK 1 + move *a9(OBJ_XVEL),a0,L + move a0,*a8(OXVEL),L + + JSRP special_ani + jruc #loop + + + +;;;* A1=PID, A7=PC, A8,A9,A10,A11 Passed parameters + +; movi sp_firehit_anim,a10 +; callr begin_ani +; +; SLEEPK 1 +; callr special_ani + + +;sp_d200_anim +;;Will be damage point value! +; WL 30,FIREHIT01 +; .word 0 +; +; +;sp_firehit_anim +; WL 4,FIREHIT01 +; WL 4,FIREHIT02 +; WL 4,FIREHIT03 +; WL 4,FIREHIT04 +; .word 0 + + +#exp_tbl + .long #sp_explode_a1_anim + .long #sp_explode_a2_anim + .long #sp_explode_a3_anim + .long #sp_explode_a4_anim + .long #sp_explode_b1_anim + .long #sp_explode_b2_anim + .long #sp_explode_b3_anim + .long #sp_explode_b4_anim + .long #sp_explode_c1_anim + .long #sp_explode_c2_anim + .long #sp_explode_c3_anim + .long #sp_explode_c4_anim + +#salt_exp_tbl + .long #sp_salt_exp1_anim + .long #sp_salt_exp2_anim + .long #sp_salt_exp3_anim + .long #sp_salt_exp4_anim + +#sp_salt_exp1_anim + WL 4,SALTA01 + WL 4,SALTA02 + WL 4,SALTA03 + WL 4,SALTA04 + WL 4,SALTA05 + WL 4,SALTA06 + WL 4,SALTA07 + WL 4,SALTA08 + WL 4,SALTA09 + WL 4,SALTA10 + .word 0 +#sp_salt_exp2_anim + WL 4,SALTB01 + WL 4,SALTB02 + WL 4,SALTB03 + WL 4,SALTB04 + WL 4,SALTB05 + WL 4,SALTB06 + WL 4,SALTB07 + WL 4,SALTB08 + WL 4,SALTB09 + WL 4,SALTB10 + WL 4,SALTB11 + .word 0 +#sp_salt_exp3_anim + WL 3,SALTA01 + WL 3,SALTA02 + WL 3,SALTA03 + WL 3,SALTA04 + WL 3,SALTA05 + WL 3,SALTA06 + WL 3,SALTA07 + WL 3,SALTA08 + WL 3,SALTA09 + WL 3,SALTA10 + .word 0 +#sp_salt_exp4_anim + WL 3,SALTB01 + WL 3,SALTB02 + WL 3,SALTB03 + WL 3,SALTB04 + WL 3,SALTB05 + WL 3,SALTB06 + WL 3,SALTB07 + WL 3,SALTB08 + WL 3,SALTB09 + WL 3,SALTB10 + WL 3,SALTB11 + .word 0 +#sp_explode_a1_anim + WL 4,XPLODA01 + WL 4,XPLODA03 + WL 4,XPLODA04 + WL 4,XPLODA05 + WL 4,XPLODA06 + WL 4,XPLODA07 + WL 4,XPLODA08 + WL 4,XPLODA09 + WL 4,XPLODA10 + .word 0 +#sp_explode_a2_anim + WL 2,XPLODA01 + WL 2,XPLODA03 + WL 2,XPLODA04 + WL 2,XPLODA05 + WL 2,XPLODA06 + WL 2,XPLODA07 + WL 2,XPLODA08 + WL 2,XPLODA09 + WL 2,XPLODA10 + .word 0 +#sp_explode_a3_anim +#sp_explode_a4_anim + WL 3,XPLODA01 + WL 3,XPLODA03 + WL 3,XPLODA04 + WL 3,XPLODA05 + WL 3,XPLODA06 + WL 3,XPLODA07 + WL 3,XPLODA08 + WL 3,XPLODA09 + WL 3,XPLODA10 + .word 0 + + +#sp_explode_b1_anim + WL 4,XPLODB01 + WL 4,XPLODB03 + WL 4,XPLODB04 + WL 4,XPLODB05 + WL 4,XPLODB06 + WL 4,XPLODB07 + WL 4,XPLODB08 + WL 4,XPLODB09 + WL 4,XPLODB10 + .word 0 +#sp_explode_b2_anim + WL 2,XPLODB01 + WL 2,XPLODB03 + WL 2,XPLODB04 + WL 2,XPLODB05 + WL 2,XPLODB06 + WL 2,XPLODB07 + WL 2,XPLODB08 + WL 2,XPLODB09 + WL 2,XPLODB10 + .word 0 +#sp_explode_b3_anim +#sp_explode_b4_anim + WL 3,XPLODB01 + WL 3,XPLODB03 + WL 3,XPLODB04 + WL 3,XPLODB05 + WL 3,XPLODB06 + WL 3,XPLODB07 + WL 3,XPLODB08 + WL 3,XPLODB09 + WL 3,XPLODB10 + .word 0 + +#sp_explode_c1_anim + WL 4,XPLODC01 + WL 4,XPLODC03 + WL 4,XPLODC04 + WL 4,XPLODC05 + WL 4,XPLODC06 + WL 4,XPLODC07 + WL 4,XPLODC08 + WL 4,XPLODC09 + WL 4,XPLODC10 + .word 0 +#sp_explode_c2_anim + WL 2,XPLODC01 + WL 2,XPLODC03 + WL 2,XPLODC04 + WL 2,XPLODC05 + WL 2,XPLODC06 + WL 2,XPLODC07 + WL 2,XPLODC08 + WL 2,XPLODC09 + WL 2,XPLODC10 + .word 0 + +#sp_explode_c3_anim +#sp_explode_c4_anim + WL 3,XPLODC01 + WL 3,XPLODC03 + WL 3,XPLODC04 + WL 3,XPLODC05 + WL 3,XPLODC06 + WL 3,XPLODC07 + WL 3,XPLODC08 + WL 3,XPLODC09 + WL 3,XPLODC10 + .word 0 + + +#***************************************************************************** + +explosions_salt + + SLEEPK 5 + + movx a11,a0 + move a0,*a13(PDATA) ;x + movy a11,a0 + srl 16,a0 + move a0,*a13(PDATA+16) ;y + + movk 6,a11 +#lp + CREATE DEBRIS_PID,impact_proc + move a0,a9 + + movk 3,a0 + calla RNDRNG0 + sll 5,a0 + addi #salt_exp_tbl,a0 + move *a0,a0,L + + move a0,*a9(ANIM),L ;animation + + movi SMOKE_P,a0 + move a0,*a9(PALLET),L + movi DMAWNZ|M_3D,a4 ;DMA flags + move *a13(PDATA),a1 ;x + move *a10(OBJ_XPOSINT),a0 + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a1 + ori M_FLIPH,a4 ;flip image +#no_flip + add a1,a0 + move a0,a2 + + movi 30,a0 + calla RNDRNG0 + subi 15,a0 + add a0,a2 + + sll 16,a2 + move a2,*a9(XVAL),L + + move a4,*a9(FLAGS) ;DMA flags + + movi Y_SCALE_MULTIPLIER,a0 + move *a10(OBJ_ZPOSINT),a3 + mpyu a0,a3 + move *a10(OBJ_YPOSINT),a0 + move *a13(PDATA+16),a14 ;y + add a14,a0 ;<--- get from table + + move a0,a2 + + movi 20,a0 + calla RNDRNG0 + subi 10,a0 + add a0,a2 + + sll 16,a2 + sub a2,a3 + move a3,*a9(YVAL),L + +; movi >2480,a0 + + move *a10(OBJ_ZPOSINT),a0 + ori 1000h,a0 + move *a10(INRING),a14 + jrz #inring + cmpi [015ach,0],a0 + jrgt #inring + subi [01e5h,0],a0 ;below mat +#inring + move a0,a2 + move @HCOUNT,a1 + btst 0,a1 + jrz #ok + addi 5h,a2 +#ok + move a2,*a9(ZVAL) + + +; movi 8000h,a0 +; calla RNDRNG0 +; subi 4000h,a0 +; +; move *a10(OBJ_XVEL),a1,L +; add a1,a0 + + clr a0 + move a0,*a9(XVEL),L + + movi 10000h,a0 + calla RNDRNG0 + subi 8000h,a0 + +; move *a10(OBJ_YVEL),a1,L +; add a1,a0 + + clr a0 + move a0,*a9(YVEL),L + + SLEEPK 3 + + dsj a11,#lp + + DIE + +#salt_exp_tbl + .long #salt_exp1_anim + .long #salt_exp2_anim + .long #salt_exp1_anim + .long #salt_exp2_anim + +#salt_exp1_anim + WL 4,SMOKE01 + WL 4,SMOKE03 + WL 4,SMOKE04 + WL 4,SMOKE05 + WL 4,SMOKE06 + WL 4,SMOKE07 + WL 4,SMOKE08 + WL 4,SMOKE09 + WL 4,SMOKE10 + .word 0 +#salt_exp2_anim + WL 4,SMOKEB01 + WL 4,SMOKEB03 + WL 4,SMOKEB04 + WL 4,SMOKEB05 + WL 4,SMOKEB06 + WL 4,SMOKEB07 + WL 4,SMOKEB08 + WL 4,SMOKEB09 + WL 4,SMOKEB10 + .word 0 +#***************************************************************************** + + SUBRP begin_ani + + + move *a13(ANIM),a10,L ;* animation + move *a13(PALLET),a0,L ;Obj pal + move a0,b0 + + move *a13(XVAL),a0,L ;x val + move *a13(YVAL),a1,L ;y val + move *a13(ZVAL),a3 ;z val + move *a13(FLAGS),a4 ;DMA flags + clr a5 ;OID + move *a13(XVEL),a6,L ;x vel + move *a13(YVEL),a7,L ;y vel + + move *a10+,a11 ;tick count + move *a10+,a2,L ;* image + + calla BEGINOBJP + + rets + +#***************************************************************************** + + SUBRP special_ani + + dec a11 + jrnz #cont + + move *a10+,a11 ;tick count + jrz #die + move *a10+,a0,L ;* image + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFX),a1 +;;; add a10,a1 ;add in X ani-offset (if any) + move a1,*a8(ODXOFF) ;display x offset + + move *a0(IANIOFFY),a1 +;;; add a11,a1 ;add in Y pos & ani-offset + move a1,*a8(ODYOFF) ;display y offset + + movb *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp +#cont + RETP + + + +#die + calla DELOBJA8 + DIE + +#***************************************************************************** +* a0 = * image +* a8 = * object + + SUBRP change_image_local + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFX),a1 + move a1,*a8(ODXOFF) ;display x offset + + move *a0(IANIOFFY),a1 + move a1,*a8(ODYOFF) ;display y offset + + movb *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + rets + + + +#***************************************************************************** + + SUBR init_special_objlist + + clr a0 + move a0,@plyr1_objlist,L + move a0,@plyr2_objlist,L + move a0,@neutral_objlist,L + + rets + + +#***************************************************************************** +; +; a0 = * process + +insert_special_objlist + + movi neutral_objlist,a1 + move *a13(SP_PLYR_SIDE),a14 ;( p1=0, p2=1, neutral=-1 ) + jrn #ok + movi plyr1_objlist,a1 + move a14,a14 + jrz #ok + movi plyr2_objlist,a1 +#ok + move *a1(0),*a0(SP_NEXT),L ;update next link + move a0,*a1,L ;insert at head of list + + rets + + +#***************************************************************************** +; +; a0 = * process + + SUBR delete_special_objlist + + movi neutral_objlist,a1 ;prev + move *a0(SP_PLYR_SIDE),a14 ;( p1=0, p2=1, neutral=-1 ) + jrn #ok + movi plyr1_objlist,a1 ;prev + move a14,a14 + jrz #ok + movi plyr2_objlist,a1 ;prev +#ok + + + move *a1,a2,L ;cur + jrz #empty + + cmp a2,a0 + jrne #no_match + + move *a2(SP_NEXT),*a1(0),L ;unlink + rets + +#no_match + + move a2,a1 ;prev + move *a2(SP_NEXT),a2,L ;cur + jrz #empty + + cmp a2,a0 + jrne #no_match + + move *a2(SP_NEXT),*a1(SP_NEXT),L ;unlink + + rets + +#empty +; .if DEBUG +; LOCKUP +; .endif + rets + + +#***************************************************************************** + + SUBR doink_pie + + move a11,*a13(SP_WRESPROC),L + move *a11(PLYR_SIDE),*a13(SP_PLYR_SIDE) + + move a13,a0 + callr insert_special_objlist ;insert into collis list + + callr sp_create_obj + callr sp_create_shadow + + move *a13(SP_OBJ),a8,L + + movi [86,0],a1 + movi [6,0],a2 ;x-vel + move *a11(OBJ_XPOS),a0,L + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + + move *a13(SP_OBJCONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(SP_OBJCONTROL) + + neg a1 + neg a2 +#no_flip + add a1,a0 + move a0,*a13(SP_OBJ_XPOS),L + move a2,*a13(SP_OBJ_XVEL),L + + + + move *a11(OBJ_ZPOS),*a13(SP_OBJ_ZPOS),L + + move *a11(OBJ_YPOS),a0,L + addi [97,0],a0 + move a0,*a13(SP_OBJ_YPOS),L + + move *a11(INRING),*a13(SP_INRING) + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_GRAVITY),L + move a0,*a13(SP_OBJ_ZVEL),L + move a0,*a13(SP_OBJ_YVEL),L + move a0,*a13(SP_DIE) + + movi pie_anim,a0 + callr sp_change_anim + +#lp + + callr sp_velocity_add + callr sp_update_pos + + SLEEPK 1 + + callr sp_animate + + move *a13(SP_DIE),a0 + jrnz #die + + move @WORLDTLX+16,a0 ;world x int + addi 200,a0 ;center of screen + move *a13(SP_OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 256,a0 ;off screen by 56 pixels + jrlt #lp + + + move a13,a0 + callr delete_special_objlist + +#die + move *a13(SP_OBJ),a0,L + calla DELOBJ + + move *a13(SP_SHADOW_OBJ),a0,L + calla DELOBJ + + DIE + + +#***************************************************************************** + + SUBR bam_fireball + + move a11,*a13(SP_WRESPROC),L + move *a11(PLYR_SIDE),*a13(SP_PLYR_SIDE) + + move a13,a0 + callr insert_special_objlist ;insert into collis list + + callr sp_create_obj + callr sp_create_shadow + + move *a13(SP_OBJ),a8,L + + movi [86,0],a1 + movi [6,0],a2 ;x-vel + move *a11(OBJ_XPOS),a0,L + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + + move *a13(SP_OBJCONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(SP_OBJCONTROL) + + neg a1 + neg a2 +#no_flip + add a1,a0 + move a0,*a13(SP_OBJ_XPOS),L + move a2,*a13(SP_OBJ_XVEL),L + + + + move *a11(OBJ_ZPOS),*a13(SP_OBJ_ZPOS),L + + move *a11(OBJ_YPOS),a0,L + addi [97,0],a0 + move a0,*a13(SP_OBJ_YPOS),L + + move *a11(INRING),*a13(SP_INRING) + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_GRAVITY),L + move a0,*a13(SP_OBJ_ZVEL),L + move a0,*a13(SP_OBJ_YVEL),L + move a0,*a13(SP_DIE) + + movi fireball_anim,a0 + callr sp_change_anim + +#lp + + callr sp_velocity_add + callr sp_update_pos + + SLEEPK 1 + + callr sp_animate + + move *a13(SP_DIE),a0 + jrnz #die + + move @WORLDTLX+16,a0 ;world x int + addi 200,a0 ;center of screen + move *a13(SP_OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 256,a0 ;off screen by 56 pixels + jrlt #lp + + + move a13,a0 + callr delete_special_objlist + +#die + move *a13(SP_OBJ),a0,L + calla DELOBJ + + move *a13(SP_SHADOW_OBJ),a0,L + calla DELOBJ + + DIE + + + +#***************************************************************************** + + SUBR und_spirit_pull +;Old spirits + clr a0 + jruc #cont + + SUBR und_spirit_push +;New reaper + movk 1,a0 +#cont move a0,*a13(SP_ID) + + move a11,*a13(SP_WRESPROC),L + move *a11(PLYR_SIDE),*a13(SP_PLYR_SIDE) + + move a13,a0 + callr insert_special_objlist ;insert into collis list + + callr sp_create_obj + + move *a13(SP_OBJ),a8,L + + move *a13(SP_ID),a14 + jrnz #reap +;Old spirit + movi [32,0],a1 + movi [7,0],a2 ;x-vel + movi [36h,0],a3 + movi spirit_anim,a4 + movi spirit_anim,a9 + jruc #cont2 +#reap +;Reaper + movi [2,0],a1 + movi [4,0],a2 ;x-vel + movi [2eh,0],a3 + movi reaper_grow,a4 + movi reaper_anim,a9 +#cont2 + move *a11(OBJ_XPOS),a0,L + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + + move *a13(SP_OBJCONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(SP_OBJCONTROL) + + neg a1 + neg a2 +#no_flip + add a1,a0 + move a0,*a13(SP_OBJ_XPOS),L + move a2,*a13(SP_OBJ_XVEL),L + + move *a11(OBJ_ZPOS),*a13(SP_OBJ_ZPOS),L + + move *a11(OBJ_YPOS),a0,L + add a3,a0 + move a0,*a13(SP_OBJ_YPOS),L + + move *a11(INRING),*a13(SP_INRING) + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_GRAVITY),L + move a0,*a13(SP_OBJ_ZVEL),L + move a0,*a13(SP_OBJ_YVEL),L + move a0,*a13(SP_DIE) + + move a4,a0 + callr sp_change_anim + +#lp + + + + callr sp_velocity_add + +; callr sp_update_pos +;sp_update_pos + + move *a13(SP_OBJ),a8,L + + move *a13(SP_OBJ_ZPOS),a0,L + ori [01000h,0],a0 + move *a13(SP_INRING),a14 + jrz #inring + cmpi [015ach,0],a0 + jrgt #inring + subi [01e5h,0],a0 ;below mat +#inring + move a0,*a8(OZVAL),L + + move *a13(SP_OBJ_XPOS),*a8(OXVAL),L ;object + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(SP_OBJ_ZPOSINT),a1 + mpyu a0,a1 + move a1,a2 + move *a13(SP_OBJ_YPOS),a0,L + sub a0,a1 + move a1,*a8(OYVAL),L + + + move *a13(SP_OBJCONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + SLEEPK 1 + + move a9,a0 + callr sp_animate + + move *a13(SP_DIE),a0 + jrnz #die + + move @WORLDTLX+16,a0 ;world x int + addi 200,a0 ;center of screen + move *a13(SP_OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 256,a0 ;off screen by 56 pixels + jrlt #lp + + move a13,a0 + callr delete_special_objlist +#die + + move *a13(SP_OBJ),a0,L + calla DELOBJ + +; move *a13(SP_SHADOW_OBJ),a0,L +; calla DELOBJ + + DIE + +#***************************************************************************** +* Yoko salt toss +* + SUBR yok_salt_spray + + movk 2,a0 + move a0,*a13(SP_ID) + + move a11,*a13(SP_WRESPROC),L + move *a11(PLYR_SIDE),*a13(SP_PLYR_SIDE) + + move a13,a0 + callr insert_special_objlist ;insert into collis list + + callr sp_create_obj + + move *a13(SP_OBJ),a8,L + +;Salt + movi [36h,0],a1 + movi [7,0h],a2 ;x-vel + movi [5bh,0],a3 + movi salt_grow,a4 + movi salt_anim,a9 + + move *a11(OBJ_XPOS),a0,L + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + + move *a13(SP_OBJCONTROL),a14 + ori M_FLIPH,a14 + move a14,*a13(SP_OBJCONTROL) + + neg a1 + neg a2 +#no_flip + add a1,a0 + move a0,*a13(SP_OBJ_XPOS),L + move a2,*a13(SP_OBJ_XVEL),L + + move *a11(OBJ_ZPOS),*a13(SP_OBJ_ZPOS),L + + move *a11(OBJ_YPOS),a0,L + add a3,a0 + move a0,*a13(SP_OBJ_YPOS),L + + move *a11(INRING),*a13(SP_INRING) + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + movi 4800h,a0 + move a0,*a13(SP_GRAVITY),L + movi 30000h,a0 + move a0,*a13(SP_OBJ_YVEL),L + clr a0 + move a0,*a13(SP_OBJ_ZVEL),L + move a0,*a13(SP_DIE) + + move a4,a0 + callr sp_change_anim +#lp + callr sp_velocity_add + +; callr sp_update_pos +;sp_update_pos + + move *a13(SP_OBJ),a8,L + + move *a13(SP_OBJ_ZPOS),a0,L + ori [01000h,0],a0 + move *a13(SP_INRING),a14 + jrz #inring + cmpi [015ach,0],a0 + jrgt #inring + subi [01e5h,0],a0 ;below mat +#inring + move a0,*a8(OZVAL),L + + move *a13(SP_OBJ_XPOS),*a8(OXVAL),L ;object + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(SP_OBJ_ZPOSINT),a1 + mpyu a0,a1 + move a1,a2 + move *a13(SP_OBJ_YPOS),a0,L + sub a0,a1 + move a1,*a8(OYVAL),L + + + move *a13(SP_OBJCONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + SLEEPK 1 + + move a9,a0 + callr sp_animate + + move *a13(SP_DIE),a0 + jrnz #die + + move @WORLDTLX+16,a0 ;world x int + addi 200,a0 ;center of screen + move *a13(SP_OBJ_XPOSINT),a1 + sub a1,a0 + abs a0 + cmpi 256,a0 ;off screen by 56 pixels + jrlt #lp + +#die +; cmpi 2,a0 +;;Already taken off list? +; jrnz #die2 + move a13,a0 + callr delete_special_objlist +;#die2 + + move *a13(SP_OBJ),a0,L + calla DELOBJ + + DIE + +#***************************************************************************** + + SUBR react_bloodnguts_gen + + move a11,*a13(SP_WRESPROC),L + +#asdf + movi 3,a8 +#loop + movi 2,a9 +#loop2 + CREATE DEBRIS_PID,react_blood + push a13 + move a13,a10 + move a0,a13 + + move a11,*a13(SP_WRESPROC),L + + move *a11(OBJ_XPOS),*a13(SP_OBJ_XPOS),L + move *a11(OBJ_ZPOS),*a13(SP_OBJ_ZPOS),L + move *a11(OBJ_YPOS),a0,L + addi [90,0],a0 + move a0,*a13(SP_OBJ_YPOS),L + + move *a11(INRING),*a13(SP_INRING) + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + pull a13 + + dsj a9,#loop2 + + SLEEPK 2 + + dsj a8,#loop + + SLEEP 2*60 + + DIE + + + SUBR react_blood + + + clr a0 + move a0,*a13(SP_SHADOW_OBJ),L + + movi GRAVITY*2,a0 + move a0,*a13(SP_GRAVITY),L + + movi DMAWNZ,a0 ;DMA flags + move a0,*a13(SP_OBJCONTROL) + + + clr a0 ;x pos + clr a1 ;y pos + movi PINSHAD1,a2 ;* image + movi 150,a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + move a8,*a13(SP_OBJ),L + + +; clr a0 ;x pos +; clr a1 ;y pos +; movi PINSHAD1,a2 ;* image +; movi 149,a3 ;z pos +; movi DMAWNZ,a4 ;DMA flags +; clr a5 ;object ID +; clr a6 ;x vel +; clr a7 ;y vel +; calla BEGINOBJ +; move a8,*a13(SP_SHADOW_OBJ),L + + + movi [4,0],a0 + calla RNDRNG0 + + + + move a0,*a13(SP_OBJ_XVEL),L + jrp #no_xflip + + move *a13(SP_OBJCONTROL),a0 + ori M_FLIPH,a0 + move a0,*a13(SP_OBJCONTROL) +#no_xflip + + + movi [2,0],a0 + calla RNDRNGS + move a0,*a13(SP_OBJ_ZVEL),L + + movi [4,0],a0 + calla RNDRNGS + addi [8,0],a0 + move a0,*a13(SP_OBJ_YVEL),L + + + + move *a13(SP_OBJ),a8,L + + movi flame_anim,a0 + calla sp_change_anim + + clr a0 + move a0,*a13(SP_DIE) + + movi 60*3,a0 + move a0,*a13(SP_LIFESPAN) + +#lp1 + callr sp_velocity_add + callr sp_update_pos + + SLEEPK 2 + + + move *a13(SP_OBJ_XVEL),a0,L + move *a13(SP_OBJ_YVEL),a1,L + callr calc_veldir + + X32 a0 + addi flame_table_A,a0 + move *a0,a2,L + + move a2,*a8(OIMG),L + + move *a2(ICMAP),a0,L ;Get *palette + calla pal_getf + move a0,*a8(OPAL),L ;Set palette & constant + + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + move *a2(IANIOFFX),*a8(ODXOFF) + move *a2(IANIOFFY),*a8(ODYOFF) + + movb *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + + +;; callr sp_animate + +; move *a13(SP_LIFESPAN),a0 +; dec a0 +; jrz #die +; move a0,*a13(SP_LIFESPAN) + +; move *a13(SP_DIE),a0 +; jrz #lp1 + + move *a13(SP_OBJ_YPOS),a1,L + move *a13(SP_GROUND_Y),a14,L + cmp a1,a14 + jrle #lp1 + + move a14,*a13(SP_OBJ_YPOS),L + + movi flame_splat_anim,a0 + calla sp_change_anim + callr sp_update_pos + +#lp2 +; callr sp_update_pos + + SLEEPK 2 + + callr sp_animate + + move *a13(SP_DIE),a0 + jrz #lp2 + +#die + move *a13(SP_OBJ),a0,L + calla DELOBJ + +; move *a13(SP_SHADOW_OBJ),a0,L +; calla DELOBJ + + DIE + +#***************************************************************************** + + SUBR special_hit + + PUSH a13 + PUSH a8 + + move a6,a13 + + move a13,a0 + callr delete_special_objlist + move *a13(SP_ID),a14 + sll 5,a14 + addi #splat_tbl,a14 + move *a14,a0,L + callr sp_change_anim + + PULL a13 + + move a13,a0 + callr delete_special_objlist + move *a13(SP_ID),a14 + sll 5,a14 + addi #splat_tbl,a14 + move *a14,a0,L + callr sp_change_anim + + PULL a13 + rets + +#splat_tbl + .long spiritsplat_anim + .long reapersplat_anim + .long saltsplat_anim + + + +#***************************************************************************** + +sp_create_obj + + + clr a0 ;x pos + clr a1 ;y pos + movi PINSHAD1,a2 ;* image + movi 150,a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + move a4,*a13(SP_OBJCONTROL) + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + move a8,*a13(SP_OBJ),L + + rets + +#***************************************************************************** + +sp_create_shadow + + clr a0 ;x pos + clr a1 ;y pos + movi PINSHAD1,a2 ;* image + movi 149,a3 ;z pos + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + move a8,*a13(SP_SHADOW_OBJ),L + + rets + +#***************************************************************************** + +sp_velocity_add + + move *a13(SP_OBJ_XPOS),a1,L + move *a13(SP_OBJ_XVEL),a0,L + add a0,a1 + move a1,*a13(SP_OBJ_XPOS),L + + move *a13(SP_OBJ_YPOS),a1,L + move *a13(SP_OBJ_YVEL),a0,L + move *a13(SP_GRAVITY),a14,L + sub a14,a0 + move a0,*a13(SP_OBJ_YVEL),L + add a0,a1 + move a1,*a13(SP_OBJ_YPOS),L + + move *a13(SP_OBJ_ZPOS),a1,L + move *a13(SP_OBJ_ZVEL),a0,L + add a0,a1 + move a1,*a13(SP_OBJ_ZPOS),L + rets + + +#***************************************************************************** + +sp_standard_bounce + + move *a13(SP_OBJ_YVEL),a0,L + jrp #ok + + move *a13(SP_OBJ_YPOS),a1,L + move *a13(SP_GROUND_Y),a14,L + + cmp a1,a14 + jrle #ok + + move a14,*a13(SP_OBJ_YPOS),L + + sra 1,a0 + neg a0 + move a0,*a13(SP_OBJ_YVEL),L +#ok + rets + + +#***************************************************************************** + +sp_update_pos + + move *a13(SP_OBJ),a8,L + move *a13(SP_SHADOW_OBJ),a9,L + + move *a13(SP_OBJ_ZPOS),a0,L + ori [01000h,0],a0 + move *a13(SP_INRING),a14 + jrz #inring + cmpi [015ach,0],a0 + jrgt #inring + subi [01e5h,0],a0 ;below mat +#inring + move a0,*a8(OZVAL),L + move a0,*a9(OZVAL),L + + + move *a13(SP_OBJ_XPOS),*a8(OXVAL),L ;object + move *a13(SP_OBJ_XPOS),*a9(OXVAL),L ;shadow + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(SP_OBJ_ZPOSINT),a1 + mpyu a0,a1 + move a1,a2 + move *a13(SP_OBJ_YPOS),a0,L + sub a0,a1 + move a1,*a8(OYVAL),L + + move *a13(SP_GROUND_Y),a0,L + sub a0,a2 + move a2,*a9(OYVAL),L + + move *a9(OXPOS),a0 + andni 1,a0 + move @PCNT,a1 + andi 1,a1 + or a1,a0 + move *a9(OYPOS),a1 + andi 1,a1 + xor a1,a0 + move a0,*a9(OXPOS) ;shake shadow + + + move *a13(SP_OBJCONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + rets + + +sp_update_pos_single + + move *a13(SP_OBJ),a8,L + + move *a13(SP_OBJ_ZPOS),a0,L + ori [01000h,0],a0 + move *a13(SP_INRING),a14 + jrz #inring2 + cmpi [015ach,0],a0 + jrgt #inring2 + subi [01e5h,0],a0 ;below mat +#inring2 + move a0,*a8(OZVAL),L + + move *a13(SP_OBJ_XPOS),*a8(OXVAL),L ;object + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(SP_OBJ_ZPOSINT),a1 + mpyu a0,a1 + move a1,a2 + move *a13(SP_OBJ_YPOS),a0,L + sub a0,a1 + move a1,*a8(OYVAL),L + + move *a13(SP_OBJCONTROL),a7 ;flip bits & pixel ops + andi 0111111b,a7 + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + rets + +#***************************************************************************** + + + SUBR sp_change_anim + + move a0,*a13(SP_ANIBASE),L + move a0,*a13(SP_ANIPC),L + movk 1,a0 + move a0,*a13(SP_ANICNT) + move *a13(SP_OBJ),a8,L + callr sp_animate + rets + + + SUBRP sp_animate + + move *a13(SP_DIE),a0 + jrnz _exit + + move *a13(SP_ANICNT),a0 + dec a0 + move a0,*a13(SP_ANICNT) + jrgt _exit + +next_command + move *a13(SP_ANIPC),a4,L + move *a4+,a0 + jrn #command + + move a0,*a13(SP_ANICNT) + move *a4+,a2,L + + move *a8(OIMG),a1,L + + move *a1(ICMAP),a1,L ;* old palette + move a2,*a8(OIMG),L ;new image + move *a2(ICMAP),a0,L ;Get *palette + cmp a0,a1 + jreq #no_change + +;do this only if palette has changed!!! + move *a2(ICMAP),a0,L ;Get *palette + calla pal_getf + move a0,*a8(OPAL),L ;Set palette & constant + +#no_change + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + move *a2(IANIOFFX),*a8(ODXOFF) + move *a2(IANIOFFY),*a8(ODYOFF) + + movb *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + bits pp + +; setf 6,0,0 +; move a7,*a8(OCTRL) ;Write 6 low bits +; setf 16,1,0 + + move a4,*a13(SP_ANIPC),L + +_exit + rets + +#command + andi 0ffh,a0 + + ;TEMP! + .if DEBUG + TEST a0 + jrn #errlo + cmpi 14,a0 + jrgt #errhi + jruc #ok0 +#errlo LOCKUP + nop +#errhi LOCKUP + nop +#ok0 .endif + ;!PMET + + X32 a0 + addi #ani_commands,a0 + move *a0,a0,L + jump a0 + +#ani_commands + .long _asp_zip ;0 + .long _asp_end ;1 + .long _asp_die ;2 + .long _asp_repeat ;3 + .long _asp_goto ;4 + .long _asp_collbox ;5 + .long _asp_zerovels ;6 + .long _asp_add_yvel ;7 + .long _asp_setword ;8 + .long _asp_setlong ;9 + .long _asp_code ;10 + .long _asp_waitnegyvel ;11 + .long _asp_zeroyvel ;12 + .long _asp_waithitgnd ;13 + .long _asp_set_grav ;14 + +#******** +_asp_zip ;0 + + move a4,*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_end ;1 + + move a4,*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_die ;2 + + movk 2,a0 + move a0,*a13(SP_DIE) + rets + +#******** +_asp_repeat ;3 + + move *a13(SP_ANIBASE),*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_goto ;4 + + move *a4(0),*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_collbox ;5 + + move a4,a14 + addi 6*10h,a14 ;6 words + move a14,*a13(SP_ANIPC),L + + move *a4(0),*a13(SP_XOFF) + move *a4(10h),*a13(SP_WIDTH) + + move *a4(20h),*a13(SP_YOFF) + move *a4(30h),*a13(SP_HEIGHT) + + move *a4(40h),*a13(SP_ZOFF) + move *a4(50h),*a13(SP_DEPTH) + + jruc next_command + +#******** +_asp_zerovels ;6 + + clr a0 + move a0,*a13(SP_OBJ_XVEL),L + move a0,*a13(SP_OBJ_YVEL),L + move a0,*a13(SP_OBJ_ZVEL),L + + move a4,*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_add_yvel ;7 + + move *a4+,a0,L + move a4,*a13(SP_ANIPC),L + + move *a13(SP_OBJ_YVEL),a1,L + add a0,a1 + move a1,*a13(SP_OBJ_YVEL),L + + jruc next_command + +#******** +_asp_setword ;8 + + STRUCT 0 + WORD #PDOFF + WORD #WORD + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a13(SP_ANIPC),L + + move *a4(#PDOFF),a0 + add a13,a0 + move *a4(#WORD),a1 + move a1,*a0 + + jruc next_command + + +#******** +_asp_setlong ;9 + + STRUCT 0 + WORD #PDOFF + LONG #LONG + LABEL #SIZE + + move a4,a14 + addi #SIZE,a14 + move a14,*a13(SP_ANIPC),L + + move *a4(#PDOFF),a0 + add a13,a0 + move *a4(#LONG),a1,L + move a1,*a0,L + + jruc next_command + + +#******** +_asp_code ;10 + + move *a4+,a0,L + move a4,*a13(SP_ANIPC),L + call a0 + jruc next_command + +#******** +_asp_waitnegyvel ;11 + + move *a13(SP_OBJ_YVEL),a0,L + jrp #wait + + clr a0 + move a0,*a13(SP_OBJ_YVEL),L + + move a4,*a13(SP_ANIPC),L + jruc next_command + +#wait + movk 1,a0 + move a0,*a13(SP_ANICNT) ;# ticks to hold cur frame + rets + +#******** +_asp_zeroyvel ;12 + + clr a0 + move a0,*a13(SP_OBJ_YVEL),L + + move a4,*a13(SP_ANIPC),L + jruc next_command + +#******** +_asp_waithitgnd ;13 + + move *a13(SP_OBJ_YVEL),a0,L ;must have down velocity + jrp #no_gnd + + move *a13(SP_OBJ_YPOSINT),a0 + move *a13(SP_GROUND_Y+10h),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_gnd + + sll 16,a1 + move a1,*a13(SP_OBJ_YPOS),L + + move a4,*a13(SP_ANIPC),L + jruc next_command +#no_gnd + movk 1,a0 + move a0,*a13(SP_ANICNT) + rets + +#******** +_asp_set_grav ;14 + + move *a4+,a0,L + move a4,*a13(SP_ANIPC),L + move a0,*a13(SP_GRAVITY),L + + jruc next_command + + +#******** +blade_anim + WL 3,BLADE01 + WL 3,BLADE02 + WL 3,BLADE03 + WL 3,BLADE04 + WL 3,BLADE05 + WL 3,BLADE06 + WL 3,BLADE07 + WL 3,BLADE08 + WL 3,BLADE09 + WL 3,BLADE10 + .word ASP_REPEAT + +chain_anim + WL 4,CHAIN01 + WL 4,CHAIN02 + WL 4,CHAIN03 + WL 4,CHAIN04 + WL 4,CHAIN05 + WL 4,CHAIN06 + .word ASP_REPEAT + +bladeR_anim + WL 3,BLADE04 + WL 3,BLADE03 + WL 3,BLADE02 + WL 3,BLADE01 + WL 3,BLADE10 + WL 3,BLADE09 + WL 3,BLADE08 + WL 3,BLADE07 + WL 3,BLADE06 + WL 3,BLADE05 + .word ASP_REPEAT + +star_anim + WL 3,STAR01 + WL 3,STAR02 + WL 3,STAR03 + WL 3,STAR04 + WL 3,STAR05 + WL 3,STAR06 + WL 3,STAR07 + WL 3,STAR08 + WL 3,STAR09 + WL 3,STAR10 + WL 3,STAR11 + WL 3,STAR12 + WL 3,STAR13 + WL 3,STAR14 + .word ASP_REPEAT + +dbell_anim + WL 3,DBELL01 + WL 3,DBELL02 + WL 3,DBELL03 + WL 3,DBELL04 + WL 3,DBELL05 + WL 3,DBELL06 + WL 3,DBELL07 + WL 3,DBELL08 + WL 3,DBELL09 + WL 3,DBELL10 + WL 3,DBELL11 + WL 3,DBELL12 + WL 3,DBELL13 + WL 3,DBELL14 + WL 3,DBELL15 + .word ASP_REPEAT + +lamb_anim + WL 3,LAMB01 + WL 3,LAMB02 + WL 3,LAMB03 + WL 3,LAMB04 + WL 3,LAMB05 + WL 3,LAMB06 + WL 3,LAMB07 + WL 3,LAMB08 + WL 3,LAMB09 + WL 3,LAMB10 + WL 3,LAMB11 + WL 3,LAMB12 + WL 3,LAMB13 + WL 3,LAMB14 + WL 3,LAMB15 + .word ASP_REPEAT + +fish1_anim + WL 2,FISHF01 + WL 2,FISHF02 + WL 2,FISHF03 + WL 2,FISHF04 + WL 2,FISHF05 + WL 2,FISHF04 + WL 2,FISHF03 + WL 2,FISHF02 + .word ASP_REPEAT + +fish2_anim + WL 3,FISHT01 + WL 3,FISHT02 + WL 3,FISHT03 + WL 3,FISHT04 + WL 3,FISHT05 + WL 3,FISHT06 + WL 3,FISHT07 + WL 3,FISHT08 + WL 3,FISHT09 + WL 3,FISHT10 + WL 3,FISHT11 + WL 3,FISHT12 + WL 3,FISHT13 + WL 3,FISHT14 + WL 3,FISHT15 + .word ASP_REPEAT + +turkey_anim + WL 4,TURKEY1 + WL 4,TURKEY2 + WL 4,TURKEY3 + WL 4,TURKEY4 + WL 4,TURKEY5 + WL 4,TURKEY6 + WL 4,TURKEY7 + WL 4,TURKEY8 + .word ASP_REPEAT + + +#******* +bat_anim + WWL ASP_SETLONG,SP_HITGND_CODE,#bat_bounce + .word ASP_SETWORD,SP_LIFESPAN,150 + WL ASP_CODE,#choose_anim + +batLR_anim + WL ASP_CODE,#fliponx + WL 1,BATSD01 + .word ASP_WAITHITGND + WWL ASP_SETLONG,SP_GRAVITY,04000h + WL ASP_CODE,#set_yvel +#bl1 + WL 2,BATSD01 + WL 7,BATSD02 + WL 2,BATSD03 + WL 2,BATSD04 + WL 2,BATSD05 + .word ASP_WAITNEGYVEL + WL ASP_ADD_YVEL,048000h + WL ASP_GOTO,#bl1 + +#fliponx + move *a13(SP_OBJ_XVEL),a0,L + jrp #noflip + move *a13(SP_OBJCONTROL),a0 + xori M_FLIPH,a0 + move a0,*a13(SP_OBJCONTROL) +#noflip + rets + +#choose_anim + move *a13(SP_OBJ_YVEL),a0,L + sra 1,a0 + move a0,*a13(SP_OBJ_YVEL),L + + move *a13(SP_OBJ_XVEL),a0,L + abs a0 + cmpi 0c000h,a0 + jrgt #fall_through ;to left/right bat + + movi batU_anim,a0 + move a0,*a13(SP_ANIPC),L + +#fall_through + rets + + + + +batU_anim + WL 1,BATBK01 + .word ASP_WAITHITGND + WWL ASP_SETLONG,SP_GRAVITY,04000h + WL ASP_CODE,#set_yvel +#bl2 + WL 2,BATBK01 + WL 7,BATBK02 + WL 2,BATBK03 + WL 2,BATBK04 + WL 2,BATBK05 + .word ASP_WAITNEGYVEL + WL ASP_ADD_YVEL,048000h + WL ASP_GOTO,#bl2 + +#set_yvel + movi 4000h,a0 + calla RNDRNGS + addi 048000h,a0 + move a0,*a13(SP_OBJ_YVEL),L + + rets + + +#bat_bounce + move *a13(SP_OBJ_YVEL),a0,L + jrp #ok + + move *a13(SP_OBJ_YPOS),a1,L + move *a13(SP_GROUND_Y),a14,L + + cmp a1,a14 + jrle #ok + + move a14,*a13(SP_OBJ_YPOS),L + + clr a0 + move a0,*a13(SP_OBJ_YVEL),L +#ok + + rets + + + +#******* +skull_anim + WL 3,SKULL01 + WL 3,SKULL02 + WL 3,SKULL03 + WL 3,SKULL04 + WL 3,SKULL05 + WL 3,SKULL06 + WL 3,SKULL07 + WL 3,SKULL08 + WL 3,SKULL09 + WL 3,SKULL10 + WL 3,SKULL11 + WL 3,SKULL12 + WL 3,SKULL13 + .word ASP_REPEAT + +bone_anim + WL 3,BONE01 + WL 3,BONE02 + WL 3,BONE03 + WL 3,BONE04 + WL 3,BONE05 + WL 3,BONE06 + WL 3,BONE07 + WL 3,BONE08 + WL 3,BONE09 + WL 3,BONE10 + WL 3,BONE11 + WL 3,BONE12 + WL 3,BONE13 + WL 3,BONE14 + WL 3,BONE15 + .word ASP_REPEAT + +bone2_anim + WL ASP_CODE,#choose_anim + +boneR_anim + WL 2,BONEB15 + WL 2,BONEB14 + WL 2,BONEB13 + WL 2,BONEB12 + WL 2,BONEB11 + WL 2,BONEB10 + WL 2,BONEB09 + WL 2,BONEB08 + WL 2,BONEB07 + WL 2,BONEB06 + WL 2,BONEB05 + WL 2,BONEB04 + WL 2,BONEB03 + WL 2,BONEB02 + WL 2,BONEB01 + .word ASP_REPEAT + +#choose_anim + move *a13(SP_OBJ_XVEL),a0,L + jrp #fall_through + + movi boneL_anim,a0 + move a0,*a13(SP_ANIPC),L + +#fall_through + rets + +boneL_anim + WL 2,BONEB01 + WL 2,BONEB02 + WL 2,BONEB03 + WL 2,BONEB04 + WL 2,BONEB05 + WL 2,BONEB06 + WL 2,BONEB07 + WL 2,BONEB08 + WL 2,BONEB09 + WL 2,BONEB10 + WL 2,BONEB11 + WL 2,BONEB12 + WL 2,BONEB13 + WL 2,BONEB14 + WL 2,BONEB15 + .word ASP_REPEAT + +#******* + +heart_anim + WL 3,HART01 + WL 3,HART02 + WL 3,HART03 + WL 3,HART04 + WL 3,HART05 + WL 3,HART06 + WL 3,HART07 + WL 3,HART08 + WL 3,HART09 + WL 3,HART10 + WL 3,HART11 + WL 3,HART12 + WL 3,HART13 + WL 3,HART14 + WL 3,HART15 + .word ASP_REPEAT + + +glasses_anim + WL 3,BGLAS01 + WL 3,BGLAS02 + WL 3,BGLAS03 + WL 3,BGLAS04 + WL 3,BGLAS05 + WL 3,BGLAS06 + WL 3,BGLAS07 + WL 3,BGLAS08 + WL 3,BGLAS09 + WL 3,BGLAS10 + WL 3,BGLAS11 + WL 3,BGLAS12 + WL 3,BGLAS13 + WL 3,BGLAS14 + WL 3,BGLAS15 + .word ASP_REPEAT +glasses1_anim + WL 4,BGLAS01 + WL 4,BGLAS02 + WL 4,BGLAS03 + WL 4,BGLAS04 + WL 4,BGLAS05 + WL 4,BGLAS06 + WL 4,BGLAS07 + WL 4,BGLAS08 + WL 4,BGLAS09 + WL 4,BGLAS10 + WL 4,BGLAS11 + WL 4,BGLAS12 + WL 4,BGLAS13 + WL 4,BGLAS14 + WL 4,BGLAS15 + .word ASP_REPEAT + +glasses2_anim + WL 2,BGLAS05 + WL 2,BGLAS06 + WL 2,BGLAS07 + WL 2,BGLAS08 + WL 2,BGLAS09 + WL 2,BGLAS10 + WL 2,BGLAS11 + WL 2,BGLAS12 + WL 2,BGLAS13 + WL 2,BGLAS14 + WL 2,BGLAS15 + WL 2,BGLAS01 + WL 2,BGLAS02 + WL 2,BGLAS03 + WL 2,BGLAS04 + .word ASP_REPEAT + +tombbit_anim + WL 4,TPIE01 + WL 4,TPIE02 + WL 4,TPIE03 + WL 4,TPIE04 + WL 4,TPIE05 + WL 4,TPIE06 + WL 4,TPIE07 + WL 4,TPIE08 + .word ASP_REPEAT + +flame_splat_anim + WL 4,BLDHIT1 + WL 4,BLDHIT2 + WL 4,BLDHIT3 + WL 4,BLDHIT4 + .word ASP_DIE + WL 8,FLAMEA08 + WL 8,FLAMEA09 + WL 8,FLAMEA10 + .word ASP_DIE + + + +#misc_anims + .long ball_anim + .long flame_anim + .long fireball_anim + +ball_anim + WL 3,BALL01 + WL 3,BALL02 + WL 3,BALL03 + WL 3,BALL04 + WL 3,BALL05 + WL 3,BALL06 + WL 3,BALL07 + WL 3,BALL08 + WL 3,BALL09 + WL 3,BALL10 + WL 3,BALL11 + WL 3,BALL12 + WL 3,BALL13 + WL 3,BALL14 + WL 3,BALL15 + .word ASP_REPEAT + +ex_anima1 ;0 + WL 4,XPLODA01 + WL 4,XPLODA03 + WL 4,XPLODA04 + WL 4,XPLODA05 + WL 4,XPLODA06 + WL 4,XPLODA07 + WL 4,XPLODA08 + WL 4,XPLODA09 + WL 4,XPLODA10 + .word ASP_DIE + +flame_anim + WL 8,FLAMEA01 + WL 8,FLAMEA02 + WL 8,FLAMEA03 + WL 8,FLAMEA04 + WL 8,FLAMEA05 + WL 8,FLAMEA06 + WL 8,FLAMEA07 + .word ASP_REPEAT + + +fireball_anim + + .word ASP_COLLBOX,-10,20,-8,16,-10,20 ;xoff,width,yoff,height,zoff,depth +#lp + WL 4,FIREBALL1 + WL 4,FIREBALL2 + WL 4,FIREBALL3 + WL 4,FIREBALL4 + WL 4,FIREBALL5 + WL 4,FIREBALL6 + WL ASP_GOTO,#lp + +spirit_anim + + .word ASP_COLLBOX,0,10,-8,16,-10,20 ;xoff,width,yoff,height,zoff,depth +#lp2 + WL 3,GHOST01 + WL 3,GHOST02 + WL 3,GHOST03 + WL 3,GHOST04 + WL 3,GHOST05 + WL ASP_GOTO,#lp2 + + +salt_grow + + .word ASP_COLLBOX,0,10,-8,16,-1000,20 ;xoff,width,yoff,height,zoff,depth + WL 1,SALT01 + WL ASP_CODE,#set_xv +salt_anim + .word ASP_COLLBOX,0,10,-8,16,-40,80 ;xoff,width,yoff,height,zoff,depth + WL 20,SALT01 + .word ASP_ZEROVELS + WL ASP_SET_GRAV,0h +;Turn collisions off + .word ASP_COLLBOX,0,10,-8,16,-1000,20 ;xoff,width,yoff,height,zoff,depth + WL 4,SALT02 + WL 4,SALT03 + WL 4,SALT04 + WL 4,SALT05 + WL 4,SALT06 + WL 4,SALT07 + WL 4,SALT08 + WL 4,SALT09 + .word ASP_DIE + + + +reaper_grow + + .word ASP_COLLBOX,0,10,-8,16,-1000,20 ;xoff,width,yoff,height,zoff,depth + WL 1,RPR01 + WL 1,RPR02 + WL 1,RPR03 + WL 1,RPR04 + WL 1,RPR05 + WL ASP_CODE,#set_xv +reaper_anim + WL 3,REPRFL01 + WL 3,REPRFL02 + .word ASP_COLLBOX,0,10,-8,16,-10,20 ;xoff,width,yoff,height,zoff,depth +#lp3 + WL 3,REPRFL03 + WL 3,REPRFL04 + WL 3,REPRFL05 + WL 3,REPRFL06 + WL 3,REPRFL07 + WL 3,REPRFL08 + WL 3,REPRFL01 + WL 3,REPRFL02 + WL ASP_GOTO,#lp3 +#set_xv + movi [7,0],a0 ;x-vel + move *a13(SP_OBJCONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip + neg a0 +#no_flip + move a0,*a13(SP_OBJ_XVEL),L + rets + + SUBR spiritsplat_anim + + .word ASP_ZEROVELS + WL 3,GHOHIT01 + WL 3,GHOHIT02 + WL 3,GHOHIT03 + WL 3,GHOHIT04 + WL 3,GHOHIT05 + WL 3,GHOHIT06 + WL 3,GHOHIT07 + WL 3,GHOHIT08 + WL 3,GHOHIT09 + WL 3,GHOHIT10 + WL 3,GHOHIT11 + WL 3,GHOHIT12 + WL 3,GHOHIT13 + WL 3,GHOHIT14 + WL 3,GHOHIT15 + WL 3,GHOHIT16 + .word ASP_DIE + + SUBR reapersplat_anim + + .word ASP_ZEROVELS + WL 3,REPRMS01 + WL 3,REPRMS02 + WL 3,REPRMS03 + WL 3,REPRMS04 + WL 3,REPRMS05 + WL 3,REPRMS06 + WL 3,REPRMS07 + .word ASP_DIE + + + SUBR firesplat_anim + + .word ASP_ZEROVELS + WL 4,CLOBHIT01 + WL 4,CLOBHIT02 + WL 4,CLOBHIT03 + WL 4,CLOBHIT04 + .word ASP_DIE + + SUBR saltsplat_anim + +; .word ASP_ZEROVELS + WL ASP_SET_GRAV,0h +;Turn collisions off + .word ASP_COLLBOX,0,10,-8,16,-1000,20 ;xoff,width,yoff,height,zoff,depth + WL 4,SALT02 + WL 4,SALT03 + WL 2,SALT04 + WL ASP_CODE,#adjust_vels +; .word ASP_ZEROVELS +; WL ASP_ADD_YVEL,-20000h + WL 2,SALT04 + WL 3,SALT05 + WL ASP_CODE,#adjust_vels + WL ASP_ADD_YVEL,-20000h + WL 3,SALT06 + WL 3,SALT07 + .word ASP_ZEROVELS + WL ASP_ADD_YVEL,-20000h + WL 3,SALT08 + WL 3,SALT09 + .word ASP_DIE + +#adjust_vels + move *a13(SP_OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(SP_OBJ_XVEL),L + movi -20000h,a0 + move a0,*a13(SP_OBJ_YVEL),L + clr a0 + move a0,*a13(SP_OBJ_ZVEL),L + rets + + +#******** + +pie_anim + + .word ASP_COLLBOX,-10,20,-8,16,-10,20 ;xoff,width,yoff,height,zoff,depth +#lp +;;; WL 99,PIE03 + + WL 4,BGBAT01 + WL 4,BGBAT02 + WL 4,BGBAT03 + WL 4,BGBAT04 + WL 4,BGBAT05 + WL ASP_GOTO,#lp + + + SUBR piesplat_anim + + .word ASP_ZEROVELS + WL 4,PIE05 + WL 4,PIE06 + WL 4,PIE07 + WL 4,PIE08 + .word ASP_DIE + +#******** + +pin_animC1 + WL 1,PIN15 + WL 1,PIN14 + WL 1,PIN13 + WL 1,PIN12 + WL 1,PIN11 + WL 1,PIN10 + WL 1,PIN09 + WL 1,PIN08 + WL 1,PIN07 + WL 1,PIN06 + WL 1,PIN05 + WL 1,PIN04 + WL 1,PIN03 + WL 1,PIN02 + WL 1,PIN01 + .word ASP_REPEAT + +pin_animC2 + WL 2,PIN15 + WL 2,PIN14 + WL 2,PIN13 + WL 2,PIN12 + WL 2,PIN11 + WL 2,PIN10 + WL 2,PIN09 + WL 2,PIN08 + WL 2,PIN07 + WL 2,PIN06 + WL 2,PIN05 + WL 2,PIN04 + WL 2,PIN03 + WL 2,PIN02 + WL 2,PIN01 + .word ASP_REPEAT + +pin_animC3 + WL 3,PIN15 + WL 3,PIN14 + WL 3,PIN13 + WL 3,PIN12 + WL 3,PIN11 + WL 3,PIN10 + WL 3,PIN09 + WL 3,PIN08 + WL 3,PIN07 + WL 3,PIN06 + WL 3,PIN05 + WL 3,PIN04 + WL 3,PIN03 + WL 3,PIN02 + WL 3,PIN01 + .word ASP_REPEAT + +pin_animA1 + WL 1,PIN01 + WL 1,PIN02 + WL 1,PIN03 + WL 1,PIN04 + WL 1,PIN05 + WL 1,PIN06 + WL 1,PIN07 + WL 1,PIN08 + WL 1,PIN09 + WL 1,PIN10 + WL 1,PIN11 + WL 1,PIN12 + WL 1,PIN13 + WL 1,PIN14 + WL 1,PIN15 + .word ASP_REPEAT + +pin_animA2 + WL 2,PIN01 + WL 2,PIN02 + WL 2,PIN03 + WL 2,PIN04 + WL 2,PIN05 + WL 2,PIN06 + WL 2,PIN07 + WL 2,PIN08 + WL 2,PIN09 + WL 2,PIN10 + WL 2,PIN11 + WL 2,PIN12 + WL 2,PIN13 + WL 2,PIN14 + WL 2,PIN15 + .word ASP_REPEAT + +pin_animA3 + WL 3,PIN01 + WL 3,PIN02 + WL 3,PIN03 + WL 3,PIN04 + WL 3,PIN05 + WL 3,PIN06 + WL 3,PIN07 + WL 3,PIN08 + WL 3,PIN09 + WL 3,PIN10 + WL 3,PIN11 + WL 3,PIN12 + WL 3,PIN13 + WL 3,PIN14 + WL 3,PIN15 + .word ASP_REPEAT + + +#***************************************************************************** +* +* args: +* a0 = X-VEL (LONG) +* a1 = Y-VEL (LONG) +* +* ret: +* a0 = angle 0=0d(U) 9=45d(UR) 18=90d(R) 27=135d(DR) 36=180d(D) +* + + SUBR calc_veldir + + abs a0 + + move a1,a14 + abs a14 + or a0,a14 + jrz #done + + movi #posx_posy,a2 + + move a1,a1 ;y-vel + jrp #pos_yvel + + movi #posx_negy,a2 + +#pos_yvel + abs a1 + + move a14,a3 ;x+y vel < 8 ? + srl 16+3,a3 + jrz #not_max + +#ovr + srl 1,a0 + srl 1,a1 + srl 1,a3 + jrnz #ovr ;< 8 now? + jruc #range_ok + +#not_max + btst 18,a14 ;bit 2 of int set (=4) ? + jrnz #range_ok + +#undr + sll 1,a0 + sll 1,a1 + sll 1,a14 + btst 18,a14 ;bit 2 of int set (=4) ? + jrz #undr + + +#range_ok +;; addi 08000h,a0 ;round up + srl 16,a0 ;x + +;; addi 08000h,a1 ;round up + srl 16,a1 ;y + +;#again +; cmpi 8,a0 ;do this before losing fractional +; jrge #tohi +; cmpi 8,a1 +; jrlt #ok1 +; +;#tohi +; srl 1,a0 +; srl 1,a1 +; jruc #again +;#ok1 + + X8 a1 ;y*8 + add a1,a0 ;+x + X16 a0 ;16 bit word + add a2,a0 + move *a0,a0 + +#done + rets + +#posx_posy +;X 0 1 2 3 4 5 6 7 + + .word 18,18,18,18,18,18,18,18 ;0 + + .word 13,09,13,14,15,16,16,16 ;1 + + .word 09,05,09,11,13,14,14,15 ;2 + + .word 04,04,07,09,11,12,13,13 ;3 + + .word 00,03,05,07,09,10,11,12 ;4 + + .word 00,02,04,06,08,09,10,11 ;5 + + .word 00,02,04,06,07,08,09,10 ;6 + + .word 00,02,03,05,06,07,08,09 ;7 Y + + +#posx_negy +;X 0 1 2 3 4 5 6 7 + + .word 18,18,18,18,18,18,18,18 ; 0 + + .word 23,27,23,22,21,20,20,20 ;-1 + + .word 28,31,27,25,23,22,22,21 ;-2 + + .word 33,32,29,27,25,24,23,23 ;-3 + + .word 36,33,31,29,27,26,25,24 ;-4 + + .word 36,34,32,30,28,27,26,25 ;-5 + + .word 36,34,32,31,29,28,27,26 ;-6 + + .word 36,34,33,31,30,29,28,27 ;-7 Y + + +#***************************************************************************** + +flame_table_A + + .long BLOOD01 ;0 ( 0d UP) + .long BLOOD01 ;1 ( 5d) + .long BLOOD01 ;2 ( 10d) + .long BLOOD01 ;3 ( 15d) + .long BLOOD02 ;4 ( 20d) + .long BLOOD02 ;5 ( 25d) + .long BLOOD02 ;6 ( 30d) + .long BLOOD03 ;7 ( 35d) + .long BLOOD03 ;8 ( 40d) + .long BLOOD03 ;9 ( 45d UP-RIGHT) + .long BLOOD03 ;10 ( 50d) + .long BLOOD04 ;11 ( 55d) + .long BLOOD04 ;12 ( 60d) + .long BLOOD04 ;13 ( 65d) + .long BLOOD05 ;14 ( 70d) + .long BLOOD05 ;15 ( 75d) + .long BLOOD05 ;16 ( 80d) + .long BLOOD06 ;17 ( 85d) + .long BLOOD06 ;18 ( 90d RIGHT) + + .long BLOOD06 ;19 (95d) + .long BLOOD06 ;20 (100d) + .long BLOOD07 ;21 (105d) + .long BLOOD07 ;22 (110d) + .long BLOOD07 ;23 (115d) + .long BLOOD08 ;24 (120d) + .long BLOOD08 ;25 (125d) + .long BLOOD08 ;26 (130d) + .long BLOOD08 ;27 (135d DOWN-RIGHT) + .long BLOOD09 ;28 (140d) + .long BLOOD09 ;29 (145d) + .long BLOOD09 ;30 (150d) + .long BLOOD10 ;31 (155d) + .long BLOOD10 ;32 (160d) + .long BLOOD10 ;33 (165d) + .long BLOOD11 ;34 (170d) + .long BLOOD11 ;35 (175d) + .long BLOOD11 ;36 (180d DOWN) + +#***************************************************************************** + + STRUCT 0 + + WORD DB_LOOP + WORD DB_COUNT + WORD DB_SLEEP + + WORD DB_RXOFF + WORD DB_RYOFF + WORD DB_RZOFF + + LONG DB_XVEL + LONG DB_YVEL + LONG DB_ZVEL + + LONG DB_RXVEL + LONG DB_RYVEL + LONG DB_RZVEL + + LONG DB_GRAVITY + + WORD DB_LIFESPAN + WORD DB_RLIFESPAN + + + STRUCTPD + WORD #ANIM + +; a8 = * arguments +; a11 = * wrestler proc + + SUBR react_debris + + + move *a8(0),a0 ;%chance of generating debris + calla RNDPER + jrls #die + + ;if there's too much debris already, don't do anything. + move @debris_count,a14 + cmpi DEBRIS_MAX,a14 + jrge #die + + ;increment global debris count + move @debris_count,a14 + inc a14 + move a14,@debris_count + + move *a11(WRESTLERNUM),a10 ;table index + SLL 5,A10 + ADDI WHICH_DEBRIS_SOUND,A10,L + MOVE *A10,A10,L + MOVE *A10+,A0 + JRZ NO_SOUND_AT_ALL + CALLA RNDRNG0 +DONT_WORRY_ABOUT_RANDOM + SLL 4,A0 + ADD A0,A10 + MOVE *A10,A0 + JRZ NO_SOUND_AT_ALL + CALLA triple_sound +NO_SOUND_AT_ALL + + move *a8(010h),a10 ;table index + X32 a10 + addi #debris_table,a10 + move *a10,a10,L + + addi 20h,a8 ;* x,y,z off + + move *a10(DB_LOOP),a9 ;loop count +#lp1 + move *a10(DB_COUNT),a0 ;# per loop +#lp2 + + PUSH a0 + movi 7,a0 + calla RNDRNG0 + X32 a0 + + move *a11(WRESTLERNUM),a14 + cmpi 2,a14 + jrnz #not_und + move *a11(ANIBASE),a1,L + .ref und_4_pin2_anim + cmpi und_4_pin2_anim,a1 + jrnz #not_und + mmtm sp,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a14 + movi 0cfh,a0 ;bat sound + calla triple_sound + mmfm sp,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a14 + movi 8*32,a0 + +#not_und + X32 a14 + addi debris_anims,a14 + move *a14,a14,L + add a14,a0 + move *a0(0),*a13(#ANIM),L + + CREATE DEBRIS_PID,react_debris2 + + move *a13(#ANIM),*a0(SP_ANIMPTR),L ;&anim + PULL a0 + dsj a0,#lp2 + + move *a10(DB_SLEEP),a0 ;sleep cnt + jrz #skp + calla PRCSLP +#skp + dsj a9,#lp1 + +#exit + ;decrement global debris count + move @debris_count,a14 + dec a14 + move a14,@debris_count + +#die DIE + +WHICH_DEBRIS_SOUND + .long BRET_DEBRIS + .long RAZOR_DEBRIS + .long TAKER_DEBRIS + .long YOKO_DEBRIS + .long SHAWN_DEBRIS + .long BAM_DEBRIS + .long DOINK_DEBRIS + .long 0 + .long LEX_DEBRIS + +;BRET_DEBRIS +; .WORD 0 +YOKO_DEBRIS + .WORD 3,0d9h,0dah,0dbh,0dch +BRET_DEBRIS +SHAWN_DEBRIS + .WORD 1,0d7h,0d8h +BAM_DEBRIS + .WORD 4,09dh,09eh,09fh,0a0h,0a1h +DOINK_DEBRIS + .WORD 1,04EH,04FH +TAKER_DEBRIS + .WORD 4,09dh,09eh,09fh,0a0h,0a1h +LEX_DEBRIS +RAZOR_DEBRIS + .WORD 1,0cdh,0c6h + +#debris_table + .long #db0 + .long #db1 + .long #db2 + .long #db3 + .long #db4 + .long #db5 + .long #db6 + .long #db7 + + +#db0 ;standing - hit to body 1 + .word 3,1,2 ;loop count, # per loop, sleep cnt + .word 0,20,0 ;random +/- x,y,z pos offs + .long -020000h,050000h, 000000h ;initial x,y,z vel + .long 018000h, 010000h, 010000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 60,5 ;lifespan, +/- rand + +#db1 ;onground - hit to body 1 + .word 2,2,4 ;loop count, # per loop, sleep cnt + .word 20,0,0 ;random +/- x,y,z pos offs + .long 000000h, 080000h, 000000h ;initial x,y,z vel + .long 020000h, 020000h, 020000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 70,5 ;lifespan, +/- rand + +#db2 ;standing - hit to head 1 + .word 2,1,3 ;loop count, # per loop, sleep cnt + .word 0,5,0 ;random +/- x,y,z pos offs + .long -030000h,050000h, 000000h ;initial x,y,z vel + .long 018000h, 010000h, 010000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 60,5 ;lifespan, +/- rand + +#db3 ;standing - hit to head 2 + .word 1,1,0 ;loop count, # per loop, sleep cnt + .word 0,5,0 ;random +/- x,y,z pos offs + .long -030000h,050000h, 000000h ;initial x,y,z vel + .long 018000h, 010000h, 010000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 60,5 ;lifespan, +/- rand + +#db4 ;Doink earslap squish + .word 2,3,2 ;loop count, # per loop, sleep cnt + .word 20,0,0 ;random +/- x,y,z pos offs + .long 000000h, 080000h, 000000h ;initial x,y,z vel + .long 020000h, 020000h, 020000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 70,5 ;lifespan, +/- rand + +#db5 ;BAM POGO head slammed into ground + .word 2,2,3 ;loop count, # per loop, sleep cnt + .word 10,10,0 ;random +/- x,y,z pos offs + .long 000000h, 080000h, 000000h ;initial x,y,z vel + .long 020000h, 020000h, 020000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 70,5 ;lifespan, +/- rand + +#db6 ;BAM BAM fire head butt - Comes from Bam Bam attack sequence! + .word 2,1,3 ;loop count, # per loop, sleep cnt + .word 0,5,0 ;random +/- x,y,z pos offs + .long -030000h,050000h, 000000h ;initial x,y,z vel + .long 018000h, 010000h, 010000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 60,5 ;lifespan, +/- rand + +#db7 ;onground - Taker pins me with hand + .word 8,2,4 ;loop count, # per loop, sleep cnt + .word 15,0,0 ;random +/- x,y,z pos offs + .long 000000h, 040000h, 000000h ;initial x,y,z vel + .long 020000h, 020000h, 020000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 70,5 ;lifespan, +/- rand + + +#***************************************************************************** +; a8 = * x,y,z off +; a10 = * debris table +; a11 = * wrestler proc + + SUBR react_debris2 + + ;if there's too much debris already, don't do anything. + move @debris_count,a14 + cmpi DEBRIS_MAX,a14 + jrge #die + + ;increment global debris count + move @debris_count,a14 + inc a14 + move a14,@debris_count + + move a11,*a13(SP_WRESPROC),L + move *a11(PLYR_SIDE),*a13(SP_PLYR_SIDE) + + move *a10(DB_RXOFF),a0 ;+/- xoff + jrz #skp0 + calla RNDRNGS +#skp0 move *a8,a1 ;xoff + add a0,a1 + + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip1 + neg a1 +#no_flip1 + move *a11(OBJ_XPOSINT),a0 + add a1,a0 + sll 16,a0 + move a0,*a13(SP_OBJ_XPOS),L + + + move *a10(DB_RYOFF),a0 ;+/- yoff + jrz #skp1 + calla RNDRNGS +#skp1 move *a8(010h),a1 ;yoff + add a0,a1 + move *a11(OBJ_YPOSINT),a0 + add a1,a0 + sll 16,a0 + move a0,*a13(SP_OBJ_YPOS),L + + + move *a10(DB_RZOFF),a0 ;+/- zoff + jrz #skp2 + calla RNDRNGS +#skp2 move *a8(020h),a1 ;zoff + add a0,a1 + move *a11(OBJ_ZPOSINT),a0 + add a1,a0 + sll 16,a0 + move a0,*a13(SP_OBJ_ZPOS),L + + + move *a11(INRING),*a13(SP_INRING) + + + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_SHADOW_OBJ),L + + move *a10(DB_GRAVITY),*a13(SP_GRAVITY),L + + callr sp_create_obj + callr sp_create_shadow + + move *a13(SP_OBJ),a8,L + + + move *a10(DB_RXVEL),a0,L + jrz #skp3 + calla RNDRNGS +#skp3 move *a10(DB_XVEL),a1,L + add a0,a1 + move *a11(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #no_flip2 ;flip relative + neg a1 +#no_flip2 + move a1,*a13(SP_OBJ_XVEL),L + + + move *a10(DB_RZVEL),a0,L + jrz #skp4 + calla RNDRNGS +#skp4 move *a10(DB_ZVEL),a1,L + add a0,a1 + move a1,*a13(SP_OBJ_ZVEL),L + + + move *a10(DB_RYVEL),a0,L + jrz #skp5 + calla RNDRNGS +#skp5 move *a10(DB_YVEL),a1,L + add a0,a1 + move a1,*a13(SP_OBJ_YVEL),L + + + movi sp_standard_bounce,a0 + move a0,*a13(SP_HITGND_CODE),L + + move *a13(SP_OBJ),a8,L + + clr a0 + move a0,*a13(SP_DIE) + + move *a10(DB_RLIFESPAN),a0 + jrz #skp6 + calla RNDRNGS +#skp6 move *a10(DB_LIFESPAN),a1 + add a0,a1 + move a1,*a13(SP_LIFESPAN) + + move *a13(SP_ANIMPTR),a0,L ;& anim + calla sp_change_anim + +#lp + callr sp_velocity_add + + move *a13(SP_HITGND_CODE),a0,L + call a0 + callr sp_update_pos + + SLEEP 1 + + callr sp_animate + + move *a13(SP_LIFESPAN),a0 + dec a0 + jrz #die + move a0,*a13(SP_LIFESPAN) + + move *a13(SP_DIE),a0 + jrz #lp + +#die + move *a13(SP_OBJ),a0,L + calla DELOBJ + + move *a13(SP_SHADOW_OBJ),a0,L + calla DELOBJ + + ;decrement global debris count + move @debris_count,a14 + dec a14 + move a14,@debris_count + + DIE + + +#pin_anims + .long pin_animC1 ;0 + .long pin_animC2 ;1 + .long pin_animC2 ;2 + .long pin_animC3 ;3 + .long pin_animC3 ;4 + .long pin_animC2 ;5 + .long pin_animC2 ;6 + .long pin_animC1 ;7 + + .long pin_animA1 ;0 + .long pin_animA2 ;1 + .long pin_animA2 ;2 + .long pin_animA3 ;3 + .long pin_animA3 ;4 + .long pin_animA2 ;5 + .long pin_animA2 ;6 + .long pin_animA1 ;7 + + + + +debris_anims + .long #bret_debris_anims ;0 + .long #razor_debris_anims ;1 + .long #taker_debris_anims ;2 + .long #yoko_debris_anims ;3 + .long #shawn_debris_anims ;4 + .long #bam_debris_anims ;5 + .long #doink_debris_anims ;6 + .long #doink_debris_anims ;7 + .long #lex_debris_anims ;8 + +*** +#bret_debris_anims + .long heart_anim ;0 + .long glasses_anim ;1 + .long glasses1_anim ;2 + .long glasses2_anim ;3 + .long heart_anim ;4 + .long heart_anim ;5 + .long heart_anim ;6 + .long heart_anim ;7 +*** +#razor_debris_anims + .long chain_anim ;0 + .long bladeR_anim ;1 + .long blade_anim ;2 + .long bladeR_anim ;3 + .long blade_anim ;4 + .long bladeR_anim ;5 + .long blade_anim ;6 + .long bladeR_anim ;7 +*** +#taker_debris_anims + .long bat_anim ;0 + .long bat_anim ;1 + .long skull_anim ;2 + .long bone_anim ;3 + .long bat_anim ;4 + .long bat_anim ;5 + .long skull_anim ;6 + .long bone2_anim ;7 +;Special bats only for a pin + .long bat_anim ;8 +*** +#yoko_debris_anims + .long lamb_anim ;0 + .long fish1_anim ;1 + .long fish2_anim ;2 + .long lamb_anim ;3 + .long fish1_anim ;4 + .long fish2_anim ;5 + .long turkey_anim ;6 + .long fish1_anim ;7 +*** +#shawn_debris_anims + .long heart_anim ;4 + .long heart_anim ;5 + .long heart_anim ;6 + .long heart_anim ;7 + .long heart_anim ;7 + .long heart_anim ;7 + .long heart_anim ;7 + .long heart_anim ;7 +*** +#bam_debris_anims + .long ex_anima1 ;0 + .long ex_anima1 ;0 + .long ex_anima1 ;0 + .long ex_anima1 ;0 + .long ex_anima1 ;0 + .long ex_anima1 ;0 + .long ex_anima1 ;0 + .long ex_anima1 ;0 + +*** +#doink_debris_anims + .long pin_animC2 ;0 + .long pin_animA2 ;1 + .long pin_animC3 ;2 + .long ball_anim ;3 + .long ball_anim ;4 + .long pin_animA2 ;5 + .long pin_animC3 ;6 + .long pin_animA3 ;7 +*** +#lex_debris_anims + .long dbell_anim ;0 + .long star_anim ;1 + .long dbell_anim ;2 + .long star_anim ;3 + .long dbell_anim ;4 + .long star_anim ;5 + .long dbell_anim ;6 + .long star_anim ;7 + +#***************************************************************************** + +; a8 = * arguments +; a11 = * wrestler proc + + + SUBR und_tombbits2 + + move @no_debris,a14 + jrnz #no_bab + move @reduce_bog,a14 + jrnz #no_bab + + movk 4,a9 +#lp2 + movi #tmb_debris2,a10 + movi #xyz_off2,a8 + CREATE DEBRIS_PID,react_debris2 + movi tombbit_anim,a14 + move a14,*a0(SP_ANIMPTR),L ;&anim + + movi #tmb_debris2,a10 + movi #xyz_off2,a8 + CREATE DEBRIS_PID,react_debris2 + movi tombbit_anim,a14 + move a14,*a0(SP_ANIMPTR),L ;&anim + + SLEEPK 1 + dsj a9,#lp2 +#no_bab + DIE + + + SUBR und_tombbits + + move @no_debris,a14 + jrnz #no_bab + move @reduce_bog,a14 + jrnz #no_bab + + movk 3,a9 +#lp + movi #tmb_debris,a10 + movi #xyz_off,a8 + CREATE DEBRIS_PID,react_debris2 + movi tombbit_anim,a14 + move a14,*a0(SP_ANIMPTR),L ;&anim + + SLEEPK 1 + dsj a9,#lp + + DIE + + +#xyz_off .word 91,97,0 +#xyz_off2 .word 58,8,0 + +#tmb_debris + .word 2,3,2 ;loop count, # per loop, sleep cnt + .word 20,0,0 ;random +/- x,y,z pos offs + .long 000000h, 050000h, 000000h ;initial x,y,z vel + .long 020000h, 020000h, 020000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 60,5 ;lifespan, +/- rand + + +#tmb_debris2 + .word 3,3,1 ;loop count, # per loop, sleep cnt + .word 20,0,0 ;random +/- x,y,z pos offs + .long 000000h, 050000h, 000000h ;initial x,y,z vel + .long 010000h, 020000h, 010000h ;random +/- x,y,z vel + .long GRAVITY ;gravity value + .word 30,5 ;lifespan, +/- rand + + +#***************************************************************************** + +BELOW .EQU 16*2 +NEXT .EQU 60*2 + + .long 0,0,NEXT +TEXT_LIST + ;software & design + .long #LINESD,0,BELOW + .long #LINESD1,0,BELOW + .long #LINESD2,0,BELOW + .long #LINESD3,0,BELOW + .long #LINESD4,0,BELOW + .long #LINESD5,0,NEXT + + ;art & design + .long #LINEAD,0,BELOW + .long #LINEAD1,0,BELOW + .long #LINEAD2,0,BELOW + .long #LINEAD3,0,BELOW + .long #LINEAD4,0,NEXT + + ;music & sound + .long #LINEMS,0,BELOW + .long #LINEMS1,0,NEXT + + ;hardware design + .long #LINEHD,0,BELOW + .long #LINEHD1,0,BELOW + .long #LINEHD2,0,BELOW + .long #LINEHD3,0,BELOW + .long #LINEHD4,0,BELOW + .long #LINEHD5,0,NEXT + + ;art tools + .long #LINEAT,0,BELOW + .long #LINEAT1,0,BELOW + .long #LINEAT2,0,BELOW + .long #LINEAT3,0,BELOW + .long #LINEAT4,0,NEXT + + ;hardware support + .long #LINEHS,0,BELOW + .long #LINEHS1,0,BELOW + .long #LINEHS2,0,BELOW + .long #LINEHS3,0,BELOW + .long #LINEHS4,0,NEXT + + ;sound system + .long #LINESS,0,BELOW + .long #LINESS1,0,BELOW + .long #LINESS2,0,NEXT + + ;game testers + .long #LINEGT,0,BELOW + .long #LINEGT1,0,BELOW + .long #LINEGT2,0,NEXT + + ;special thanks + .long #LINEST,0,BELOW + .long #LINEST1,0,BELOW + .long #LINEST2,0,BELOW + .long #LINEST3,0,BELOW + .long #LINEST4,0,BELOW + .long #LINEST5,0,BELOW + .long #LINEST6,0,BELOW + .long #LINEST7,0,BELOW + .long #LINEST8,0,BELOW + .long #LINEST9,0,BELOW + .long #LINEST10,0,NEXT + + ;more special thanks + .long #LINECP,0,BELOW + .long #LINECP1,0,BELOW + .long #LINECP2,0,BELOW + .long #LINECP3,0,BELOW+280 + +; .long #LINECP4,0,BELOW +; .long #LINECP5,0,BELOW +; .long #LINECP6,0,BELOW +; .long #LINECP7,0,BELOW+280 +; .long #LINECP8,0,BELOW +; .long #LINECP9,0,BELOW +; .long #LINECP10,0,BELOW+280 + .long -1 + +#SETUP_LINE + JAM_STR osgemd_ascii,10,0,200,-30,RUBYPAL,print_string_C2 + +#LINESD + .byte "SOFTWARE & DESIGN",0,0 + .even +#LINESD1 + .byte "MARK TURMELL",0,0 + .even +#LINESD2 + .byte "JASON SKILES",0,0 + .even +#LINESD3 + .byte "JAMIE RIVETT",0,0 + .even +#LINESD4 + .byte "JAKE SIMPSON",0,0 + .even +#LINESD5 + .byte "SHAWN LIPTAK",0,0 + .even +#LINESD6 + .byte "MIKE LYNCH",0,0 + .even + +#LINEAD + .byte "ART & DESIGN",0,0 + .even +#LINEAD1 + .byte "SAL DIVITA",0,0 + .even +#LINEAD2 + .byte "JOSH TSUI",0,0 + .even +#LINEAD3 + .byte "EUGENE GEER",0,0 + .even +#LINEAD4 + .byte "TONY GOSKIE",0,0 + .even + +#LINEMS + .byte "MUSIC & SOUND EFFECTS",0,0 + .even +#LINEMS1 + .byte "CHRIS GRANNER",0,0 + .even + +#LINEHD + .byte "HARDWARE DESIGN",0,0 + .even +#LINEHD1 + .byte "MARK LOFFREDO",0,0 + .even +#LINEHD2 + .byte "CARY MEDNICK",0,0 + .even +#LINEHD3 + .byte "STEVE CORRELL",0,0 + .even +#LINEHD4 + .byte "JOE KALINOWSKI",0,0 + .even +#LINEHD5 + .byte "JOHN LOWES",0,0 + .even + + +#LINEAT + .string "ARTWORK TOOLS",0,0 + .even +#LINEAT1 + .string "WARREN DAVIS",0,0 + .even +#LINEAT2 + .string "SHAWN LIPTAK",0,0 + .even +#LINEAT3 + .string "TODD ALLEN",0,0 + .even +#LINEAT4 + .string "ALIAS RESEARCH",0,0 + .even + + +#LINEHS + .byte "HARDWARE SUPPORT",0,0 + .even +#LINEHS1 + .byte "PAT COX",0,0 + .even +#LINEHS2 + .byte "SHERIDAN OURSLER",0,0 + .even +#LINEHS3 + .byte "AL LASKO",0,0 + .even +#LINEHS4 + .byte "JEFF PETERS",0,0 + .even + + +#LINESS + .byte "DCS SOUND SYSTEM",0,0 + .even +#LINESS1 + .byte "MATT BOOTY",0,0 + .even +#LINESS2 + .byte "ED KEENAN",0,0 + .even + +#LINEGT + .byte "GAME TESTERS",0,0 + .even +#LINEGT1 + .byte "EDDIE FERRIER",0,0 + .even +#LINEGT2 + .byte "MIKE VINIKOUR",0,0 + .even + +#LINEST + .byte "SPECIAL THANKS",0,0 + .even +#LINEST1 + .byte "JOHN TOBIAS",0,0 + .even +#LINEST2 + .byte "MARK PENACHO",0,0 + .even +#LINEST3 + .byte "ED BOON",0,0 + .even +#LINEST4 + .byte "EUGENE JARVIS",0,0 + .even +#LINEST5 + .byte "L.E.D.",0,0 + .even +#LINEST6 + .byte "GEORGE PETRO",0,0 + .even +#LINEST7 + .byte "JEFF JOHNSON",0,0 + .even +#LINEST8 + .byte "JOHN NEWCOMER",0,0 + .even +#LINEST9 + .byte "JON HEY",0,0 + .even +#LINEST10 + .byte "MIDWAY MANAGEMENT",0,0 + .even + +#LINECP + .byte "A SPECIAL THANK YOU",0,0 + .even +#LINECP1 + .BYTE "CATHY SIMPSON",0,0 + .EVEN +#LINECP2 + .BYTE "CRISTY TSUI",0,0 + .EVEN +#LINECP3 + .BYTE "WEI LIN GEER",0,0 + .EVEN + +;#LINECP8 +; .BYTE "ZIPPER & KASHA",0,0 +; .EVEN +;#LINECP9 +; .BYTE "KRALOR EMP TASS & EVIL",0,0 +; .EVEN +;#LINECP10 +; .BYTE "AND ALL THE CSERVE GUYS",0,0 +; .EVEN + + +#hstd_mod + .long slateBMOD + .word 0,0 + .long 0 + +;#title_mod +; .long LAVAPGBMOD +; .word 0,0 + .long 0 + +#LIST_START .equ PDATA+20H + + SUBR CREATE_TEXT_LINE + JSRP GENERIC_DISPLAY + MOVI TEXT_LIST,A8 + + MOVI TYPTEXT+1,A10 + CREATE0 ck_octopus2 + + MOVI #SETUP_LINE,A2 + CALLA setup_message +small_loop + MOVE *A8+,A4,L + INC A4 + JRZ LAST_ONE + DEC A4 + MOVE A10,@mess_objid + MOVI GOLD,A3 + MOVE *A8(-040H),A0 + CMPI NEXT,A0 + JRNE PAL_IS_SET + MOVI RUBYPAL,A3 +PAL_IS_SET + MOVE A3,@message_palette,L + CALLA print_string_C2 + MOVI 179,A9 + CREATE MESSAGE_PID,MAKE_TEXT_MOVE + + MOVE *A8+,A5,L + JRZ NO_NEW_BACK + CALLA CLEAR_BAKGROUND_OBJ +NO_NEW_BACK + MOVE *A8+,A0,L + CALLA PRCSLP + INC A10 + jruc small_loop +LAST_ONE + RETP + +CLEAR_BAKGROUND_OBJ + PUSH A8 + CALLA ZERO_BITS + move @BAKLST,A0,L ;Null backgnd object list + MOVE *A0,A0,L + JRZ NO_DELETE_IT +MORE_TO_DELETE + MOVE *A0,A9,L + CALLA DELBOBJ + MOVE A9,A0 + JRNZ MORE_TO_DELETE +NO_DELETE_IT + MOVE A5,@BAKMODS,L + CALLA BGND_UD1 + PULL A8 + RETS + +MAKE_TEXT_MOVE +; MOVE @mess_objid,A10 + CALLR FIND_ALL_TEXT +ROTATE_TEXT + SLEEP 2 + CALLR WORK_OUT_LINE_Y_AND_SCALE + CALLR PUT_IN_SCALE_AND_YPOS + DEC A9 + JRNN ROTATE_TEXT + MOVE A10,A0 + CALLA obj_del1c + DIE + +FIND_ALL_TEXT + MOVI OBJLST,A14 + MOVE A13,A2 + ADDI #LIST_START,A2 + JRUC PICK_UP_NEXT +CHECK_AGAINST_NEXT + MOVE *A14(OID),A1 + CMP A10,A1 + JRNE PICK_UP_NEXT + MOVE A14,*A2+,L + MOVE *A14(OXPOS),A1 + SUBI 200,A1 + MOVE A1,*A14(OMISC) +PICK_UP_NEXT + MOVE *A14,A14,L + JRNZ CHECK_AGAINST_NEXT + MOVE A14,*A2,L + RETS + +PUT_IN_SCALE_AND_YPOS + MOVE A13,A2 + ADDI #LIST_START,A2 +POS_NEXT_OBJ + MOVE *A2+,A8,L + JRZ REACHED_END_OF_LIST + MOVE A1,*A8(OYPOS) + MOVE A3,*A8(OSCALE+010H) + MOVE A4,*A8(OSCALE) + + MOVE *A8(OMISC),A7 + MOVI 10000H,A5 + DIVU A4,A5 + MPYU A5,A7 + SRL 8,A7 + + ADDI 200,A7 + MOVE A7,*A8(OXPOS) + + JRUC POS_NEXT_OBJ +REACHED_END_OF_LIST + RETS + + +;IN +;A9=ANGLE +;OUT +;A1=Y_COOR +;A3=Y SCALE +;A4=X SCALE + +Y_CENTER .EQU 070H + +WORK_OUT_LINE_Y_AND_SCALE + MOVE A9,A14 + SLL 4,A14 + ADDI SIN_TABLE,A14 + MOVE *A14,A1 + + NEG A1 + SLL 32-8,A1 + SRL 32-8,A1 + MOVE A1,A5 + + MOVI Y_CENTER,A3 + MPYS A3,A1 + SRL 8,A1 + + CMPI 90,A9 + JRLT Y_POSITION_CORRECT + MOVI Y_CENTER,A0 + SUB A1,A0 + MOVE A0,A1 + ADDI Y_CENTER,A1 +Y_POSITION_CORRECT + ADDI 10,A1 + + MOVI 10000H,A3 + DIVU A5,A3 + + CMPI 0B00H,A3 + JRLT NO_SCALE_PROBLEM + MOVI 0B00H,A3 +NO_SCALE_PROBLEM + + MOVE A3,A5 + SUBI 100H,A5 + movk 18H,A7 + DIVU A7,A5 + ADDI 100H,A5 + MOVE A5,A4 + + RETS + +;this sin table is in decimal and goes from sin(0) to sin (89). It has been +;multiplyed by 256 in order to get an interger figure for each value. To +;implement, use the angle as an offset into the table and then multiply +;radius by value gained. Then divide result by 256 (ie rotate right 8 bits) +;and you have your value. To use as a cosine table use offset as a negative +;offset (-1) and come in from end of table backwards.O.K.!!! +SIN_TABLE: + .WORD 255,255,255,255,254,254,253,253,252,252 + .WORD 251,250,249,248,247,246,244,243,242,240 + .WORD 238,237,235,233,232,230,228,226,223,221 + .WORD 219,217,214,212,209,207,204,201,198,196 + .WORD 193,190,187,184,181,177,174,171,167,164 + .WORD 161,157,154,150,146,143,139,135,131,128 + .WORD 124,120,116,112,108,104,100,95,91,87 + .WORD 83,79,74,70,66,61,57,53,48,44 + .WORD 40,35,31,26,22,17,13,8,4,1 + + .WORD 4,8,13,17,22,26,31,35,40 + .WORD 44,48,53,57,61,66,70,74,79,83 + .WORD 87,91,95,100,104,108,112,116,120,124 + .WORD 128,131,135,139,143,146,150,154,157,161 + .WORD 164,167,171,174,177,181,184,187,190,193 + .WORD 196,198,201,204,207,209,212,214,217,219 + .WORD 221,223,226,228,230,232,233,235,237,238 + .WORD 240,242,243,244,246,247,248,249,250,251 + .WORD 252,252,253,253,254,254,255,255,255,255 + .WORD 255 + + +#******************************* +* Look at the buttons, read a sequence table, +* and set octopus2 flag if sequence successful + + + SUBR ck_octopus2 + + clr a10 + movi butn_lst,a9 + +#lp SLEEPK 1 + +; move @SWITCH,a0 + move @_switch_addr,a0,L + move *a0,a0 + zext a0 + cmpi >ffff,a0 + jrnz #tag1 + clr a11 + jruc #lp + +#tag1 move a11,a11 + jrnz #lp + + inc a11 + + move *a9,a1,W + zext a1 + cmp a0,a1 + jrz #yes + movi butn_lst,a9 + jruc #lp +#yes addk 16,a9 + move *a9,a0 + jrnz #lp + movk 1,a0 + move a0,@octopus2 + + DIE + +butn_lst + +;Buttons required for 2nd octopus: +P1_P .EQU 0FFEFH +P1_PP .EQU 0FFBFH +P1_B .EQU 0FFDFH +P2_P .EQU 0EFFFH +P2_PP .EQU 0BFFFH +P2_B .EQU 0DFFFH + + + .word P1_P,P1_P,P1_P,P1_PP,P1_PP,P1_B + .word P2_PP,P2_PP,P2_PP,P2_P,P2_P,P2_B,0 + +****************************************************************************** +* +* Called every tick by wrestler_main +* +* Figure out if we should be getting hurt for being out of the ring. If +* we should, administer the damage and, if we die from it, fire off the +* round end stuff. +* +* Old method: DEC_TIMER is ticks before you start taking hurts. When you're +* thrown from the ring, it's set. Also, when anyone else climbs into the +* ring, it's reset. If you're out alone and this is zero, you take hurts +* on every eighth tick. +* +* New method: RING_TIME holds the number of consecutive ticks you've been +* inside the ring. If you're outside, the count is negative. If you've been +* outside the ring for #out_time ticks and every member of the other team +* has been inside for #out_time, you take hurts. Note that this includes +* both live and dead members of the other team. If someone dies while +* outside the ring, their RING_TIME is set to 1 and increments from there +* as though he was inside the ring, so that when you kill one member of +* a team outside, you don't immediately start taking damage if all his +* teammates are cowering inside the ring. The clock is ticking, though. +* As before, lose one health point every eight ticks. +* +* Complications: Sometimes dead drones get their processes KO'd. This means +* that their RING_TIMEs stop incrementing. In the loop where we check +* opponent RING_TIMEs, check for sleeping drones and subtract their PTIME +* from 7FFF (the initial KO value) and add this value to their RING_TIME. +* + +#out_time .equ TSEC*7 + + SUBRP do_ringout_dufus + move @ring_out_on,a14 + jrnz #drd_exit + cmpi -(#out_time-(TSEC*3)),a0 ; Has he been out for 4 secs? + jrge #drd_exit ; br = no + PUSH a0,a1,a2,a3,a7,a9,a10 + + move *a13(PLYR_SIDE),a0 ; Check to see if opp are out? + movk NUM_WRES,a1 + movi process_ptrs,a2 + +#loopa move *a2+,a3,L + jrz #nxta ;skip - inactive + + move *a3(PLYR_SIDE),a14 + cmp a14,a0 + jreq #nxta ;skip - teammate + + move *a3(RING_TIME),a14 + cmpi #out_time-(TSEC*3),a14 ;In ring > 4 seconds? + jrle #drd_done ;no pain - opponent not inside long enough + +#nxta + dsj a1,#loopa +#do_dufus +; move a1,a1 +; jrz #drd_done + + movk 3,a9 ;msg number "Get back in dummy" + move a13,a10 ;Player process ptr + CREATE 4000h|AWARD_PID,dufus_msg_on +#drd_done + PULL a0,a1,a2,a3,a7,a9,a10 +#drd_exit + rets + + +;a9 = *player going over ropes + SUBRP kill_when_hit_ground + move *a9(GROUND_Y),a10 + move *a9(OBJ_YPOSINT),a11 + cmp a10,a11 + jrz #kill_him + SLEEPK 1 + jruc kill_when_hit_ground +#kill_him + movi -150,a0 + move *a9(PLYRNUM),a1 + clr a10 + calla adjust_health + DIE + + + SUBR ARE_WE_IN_RING + + ;don't do anthing if HALT is set + move @HALT,a14 + jrnz #done + + ;first see if we're dead - that uses a special routine + move *a13(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #dead + + ;see if all our opponents are dead - the short way to do this + ; is to check closest_num, since dead ones will never be picked + ; if there are any live ones. + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #done + + ;adjust RING_TIME + move *a13(RING_TIME),a0 + jrn #p_out + + ;we were inside last tick + inc a0 + move *a13(INRING),a14 + jrz #rt_ok + + ;we've moved outside. init to -1 + movi -1,a0 + move @ring_out_on,a14 + jrz #ring_outs_off + move a13,a9 + CREATE0 kill_when_hit_ground +#ring_outs_off + jruc #rt_ok + +#p_out ;we were outside last tick + dec a0 + move *a13(INRING),a14 + jrnz #rt_ok + + ;we've moved inside. init to 1 + movk 1,a0 +; jruc #rt_ok + +#rt_ok ;a0 is now set to new RING_TIME. write it back + move a0,*a13(RING_TIME) + + ;quit if RING_TIME is greater than (or equal to) #out_time, which + ; means we're either inside our haven't been outside long enough + ; to get hurt. + callr do_ringout_dufus + + cmpi -#out_time,a0 + jrge #done + + ;proceed only on every eighth tick, for a loss rate of around + ; 7 pixels per second. + move @PCNT,a14 ;check low three bits of PCNT + sll 32-3,a14 + jrnz #done + + ;uh-oh. potential pain here. loop through wrestler procs, and + ; quit if we spot anyone from the other team with a RING_TIME less + ; than or equal to #out_time, means that they're either outside + ; or haven't been inside long enough for us to get hurt. + move *a13(PLYR_SIDE),a0 + movk NUM_WRES,a1 + movi process_ptrs,a2 + +#loop0 move *a2+,a3,L + jrz #nxt0 ;skip - inactive + + move *a3(PLYR_SIDE),a14 + cmp a14,a0 + jreq #nxt0 ;skip - teammate + + move *a3(RING_TIME),a14 + + ;if opponent is a sleeping drone, add (7fff-PTIME) to a14. + move *a3(PTIME),a4 + cmpi 1,a4 + jreq #nosleephack + ;sleeping drone + neg a4 + addi >7FFF,a4 + add a4,a14 +#nosleephack + + cmpi #out_time,a14 + jrle #done ;no pain - opponent not inside long enough + +#nxt0 dsj a1,#loop0 + + ;if we've fallen through to here, it's time to take some hurt. + movi -1,a0 + move *a13(PLYRNUM),a1 + clr a10 + calla adjust_health + jrnc #done ;still alive + + ;DEATH BY RING-OUT! + ;do we need to start an animation here or does adjust_health take + ; care of that for us? +#ring_out_death + SETMODE DEAD + + ;if we have any living teammates, go home right now. if we're + ; the only one left, do the disqual stuff. + + ;loop through processes looking for a living teammate (or a zombie) + move *a13(PLYR_SIDE),a0 + movk NUM_WRES,a1 + movi process_ptrs,a2 + +#loop1 move *a2+,a3,L + jrz #nxt1 ;skip - inactive + + cmp a3,a13 + jreq #nxt1 ;skip - self + + move *a3(PLYR_SIDE),a14 + cmp a14,a0 + jrne #nxt1 ;skip - not a teammate + + move *a3(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrne #done ;found a living teammate - skip disqual + + move *a3(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #done ;found a zombie - skip disqual + +#nxt1 dsj a1,#loop1 + + CREATE CYCPID,CREATE_DISQUAL + CREATE ANNC_PID,announce_rnd_winner + .if DEBUG + move a13,*a0(PDATA),L ;#CREATOR (pdata) + movi $,a14 + move a14,*a0(PDATA+20h),L ;#ORIGIN + .endif +#done rets + + +#dead ;oops - we're dead. If RING_TIME is negative, we've just died + ; outside the ring and we need to set it to 1. If it's positive, + ; just increment it and go home + move *a13(RING_TIME),a0 + jrp #inc + clr a0 +#inc inc a0 + move a0,*a13(RING_TIME) + rets + +#***************************************************************************** +* Stuff to deal with changed skirt pallettes + + SUBR INIT_SKIRTS + MOVI SKIRTS_DEST,A9 + MOVK 4,A10 +INIT_NEXT_SKIRT_PAL + MOVE *A9+,A0,L + CALLA pal_getf + DSJS A10,INIT_NEXT_SKIRT_PAL + RETS + + SUBR CHANGE_SKIRTS2 +; move @match_cnt,a14 +; dec a14 +; andi 07h,a14 +; janz SUCIDE + MOVE @WHICH_SKIRT_PAL,A0 + JRUC SKIRT_RENTER + + SUBR CHANGE_SKIRTS +; move @match_cnt,a14 +; dec a14 +; andi 07h,a14 +; janz SUCIDE + MOVE @WHICH_SKIRT_PAL,A0 + JRZ RANDOM_SKIRT + DEC A0 + JRUC NO_NEED_TO_RAND_SKIRT + +RANDOM_SKIRT + MOVK 1,A0 + MOVE A0,@WHICH_SKIRT_PAL + + movi 50,a0 + calla RNDPER + jals SUCIDE + + MOVK 8,A0 + CALLA RNDRNG0 +NO_NEED_TO_RAND_SKIRT + MOVE A0,@WHICH_SKIRT_PAL +SKIRT_RENTER + SLL 7,A0 + ADDI SKIRTS,A0 + MOVE A0,A8 + MOVI SKIRTS_DEST,A9 + MOVI CHANGE_NUMBERS,A11 + MOVK 4,A10 +CHANGE_NEXT_PAL + MOVE *A9+,A0,L + CALLA pal_find + SRL 7,A0 + SLL 7,A0 + MOVE *A11+,A1 + OR A0,A1 + MOVE *A8+,A0,L + ADDI 010H,A0 + MOVE *A11+,A2 +DO_PAL_AGAIN + CALLA pal_set + JRNZ SETUP_NEXT_ONE +;FOR SOME REASON WE CANT SEEM TO RE-DO THIS PAL +;JUST HIT "GO" + .IF DEBUG + LOCKUP + .ENDIF + PUSHP A0,A1,A2 + SLEEPK 1 + PULLP A0,A1,A2 + JRUC DO_PAL_AGAIN + +SETUP_NEXT_ONE + DSJS A10,CHANGE_NEXT_PAL + DIE + +CHANGE_NUMBERS + .WORD 0,21 + .WORD 0,32 + .WORD 30,48 + .WORD 0,38 + +SKIRTS_DEST + .LONG matl_P,NUGRND_P,NUGRND_P,DKCUR_P ;purple +SKIRTS +;BLUE_SKIRT + .LONG matl_P,NUGRND_P,CURTREDP,DKCURRP ;red + .LONG matl_P,NUGRND_P,NUGRND_P+(30*16),DKCUR_P ;purple +;RED_SKIRT + .LONG MTRIMRP,RSKIRTRP,CURTBLUP,DKCURBP ;blue + .LONG MTRIMRP,RSKIRTRP,NUGRND_P+(30*16),DKCUR_P ;purple +;BLACK_SKIRT + .LONG MTRIMWP,RSKIRTWP,CURTBLUP,DKCURBP ;blue + .LONG MTRIMWP,RSKIRTWP,NUGRND_P+(30*16),DKCUR_P ;purple + .LONG MTRIMWP,RSKIRTWP,CURTREDP,DKCURRP ;red +;PURPLE_SKIRT + .LONG MTRIMPP,RSKIRTPP,CURTBLUP,DKCURBP ;blue + .LONG MTRIMPP,RSKIRTPP,CURTREDP,DKCURRP ;red + +CURTBLUP: + .word 48 + .word 00000h,02112h,01d12h,01cf1h,018d1h,018d0h,014d0h,014b0h + .word 010afh,0108fh,00c8eh,00c6eh,00c6eh,0084dh,0084dh,0084ch + .word 0042ch,0042ch,0042bh,0042bh,0042bh,0000bh,0000bh,0000ah + .word 0000ah,0000ah,0000ah,0000ah,0000ah,00009h,00009h,00009h + .word 00009h,00009h,00008h,00008h,00008h,00007h,00007h,00007h + .word 00007h,00006h,00006h,00006h,00005h,00005h,00005h,00005h + +CURTREDP: + .word 48 + .word 00000h,04508h,044e7h,040c6h,040c6h,040a5h,03c84h,03c84h + .word 03c63h,03863h,03842h,03842h,03421h,03421h,03400h,03000h + .word 03000h,03000h,02c00h,02c00h,02c00h,02c00h,02c00h,02800h + .word 02800h,02800h,02800h,02800h,02400h,02400h,02400h,02400h + .word 02400h,02400h,02000h,02000h,02000h,01c00h,01c00h,01c00h + .word 01800h,01800h,01800h,01400h,01400h,01400h,01000h,01000h + +DKCURBP: + .word 38 + .word 00000h,004aah,0048ah,00469h,0048ah,00469h,00449h,00448h + .word 0044ah,00449h,00427h,00448h,00428h,00427h,00407h,00428h + .word 00406h,00426h,00406h,00406h,00405h,00407h,00405h,00406h + .word 00405h,00404h,00406h,00405h,00404h,00405h,00403h,00404h + .word 00403h,00404h,00402h,00404h,00403h,00403h + +DKCURRP: + .word 38 + .word 00000h,02400h,02400h,02400h,02400h,02400h,02400h,02400h + .word 01c00h,01c00h,02400h,01c00h,01c00h,01c00h,01c00h,01c00h + .word 01c00h,01c00h,01c00h,01c00h,01c00h,01400h,01c00h,01400h + .word 01c00h,01c00h,01400h,01400h,01400h,01400h,01400h,01400h + .word 01400h,01400h,01400h,00c00h,00c00h,00c00h + +MTRIMPP: + .word 21 + .word 00000h,06ebeh,06a5dh,0661ch,061bch,05d7bh,0593ah,054f9h + .word 054b8h,05078h,05037h,04c16h,03c14h,03811h,0300fh,02c0dh + .word 0280ch,0240bh,0200ah,01c09h,01c08h + +MTRIMRP: + .word 21 + .word 00000h,07f39h,07ab5h,07652h,071efh,06d8ch,06929h,064c6h + .word 06084h,05c21h,05800h,05000h,04800h,04000h,03400h,03000h + .word 03000h,02c00h,02800h,02800h,02400h + +MTRIMWP: + .word 21 + .word 00000h,06f7bh,06739h,05ef8h,056b6h,04e74h,04633h,041f1h + .word 039afh,0318eh,02d4ch,0294bh,0252ah,02509h,02108h,01ce8h + .word 018c7h,018c6h,014a5h,01084h,00c63h + +RSKIRTPP: + .word 31 + .word 00000h,06ebeh,06a7dh,0663ch,065fch,061bbh,0619ah,05d5ah + .word 05d39h,058f8h,054d8h,05497h,05077h,05036h,04c16h,04c15h + .word 04414h,04012h,03811h,0340fh,0300eh,0280ch,0240bh,01c0ah + .word 0200ah,01c09h,01408h,01007h,00805h,00804h,00803h + +RSKIRTRP: + .word 31 + .word 00000h,076b5h,07273h,07231h,06defh,06dadh,0698ch,0694ah + .word 06529h,064e7h,060c6h,06084h,05c63h,05c42h,05800h,05800h + .word 05000h,04c00h,04400h,04000h,03c00h,03400h,03000h,02800h + .word 02400h,02000h,01800h,01400h,00c00h,00800h,00400h + +RSKIRTWP: + .word 31 + .word 00000h,06b59h,06718h,05ef7h,05ad6h,05294h,04e73h,04a32h + .word 04611h,03df0h,039cfh,035aeh,0316ch,02d4bh,0292ah,02509h + .word 02109h,020e8h,01ce7h,01ce7h,01cc6h,018c6h,018c5h,014a5h + .word 014a4h,01084h,01083h,01083h,00c63h,00c63h,00c63h + +#******************************** + + SUBR BROKEN_ARM_BLOOD + + move @no_debris,a14 + jrnz #no_bab + move @reduce_bog,a14 + jrnz #no_bab + + MOVE *A13(WHOIHIT),A11,L + movk M_FLIPH,A9 + CREATE DEBRIS_PID,DO_BLOOD_1 + + CLR A9 + CREATE DEBRIS_PID,DO_BLOOD_1 + + MOVK 2,A0 + CALLA RNDRNG0 + INC A0 + INC A0 + MOVE A0,A9 +DO_ANOTHER_GLOBB + CREATE DEBRIS_PID,GLOB_BLOOD + DSJS A9,DO_ANOTHER_GLOBB + +#no_bab RETS + +DO_BLOOD_1 + PUSH A9 + CLR A0 + CLR A1 + movi SPITUP01,a2 + CLR A3 + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + CALLA BEGINOBJ + move a8,*a13(SP_OBJ),L + + MOVI SPITPUS_P,A0 + CALLA pal_getf + MOVE A0,*A8(OPAL) + + move *a11(WRESTLERNUM),A10 + SLL 6,A10 + MOVI ARM_TBL,A7 + ADD A10,A7 + + MOVE *A8(OCTRL),A14 + PULL A1 + OR A1,A14 + MOVE A14,*A8(OCTRL) + move a14,*a13(SP_OBJCONTROL) + + MOVI [0,8000h],A0 + ANDI M_FLIPH,A14 + JRZ IF_WE_NEED_TOB + NEG A0 +IF_WE_NEED_TOB + MOVE A0,*A13(SP_OBJ_XVEL),L + + move *a11(OBJ_ZPOS),A0,L + SUBI 2,A0 + move A0,*A13(SP_OBJ_ZPOS),L + + move *a11(OBJ_XPOS),a0,L + MOVE *A7+,A1,L + + MOVE *A11(OBJ_CONTROL),A14 + ANDI M_FLIPH,A14 + JRZ NO_NEG_XPOS + NEG A1 +NO_NEG_XPOS + add A1,a0 + move a0,*a13(SP_OBJ_XPOS),L + + MOVE *a11(OBJ_YPOS),a0,L + MOVE *A7+,A1,L + sub A1,a0 + move a0,*a13(SP_OBJ_YPOS),L + + MOVI 40000H,A0 + move A0,*a13(SP_OBJ_YVEL),L + + MOVI ARM_BLOOD,A9 + + JRUC RE_ENTER_FOR_BLOOD + + SUBRP CREATE_SWEAT + + MOVE @NUM_OPPS,A14 + CMPI 3,A14 + JREQ NO_DO_SWEAT + + MOVE *A8(010H),A0 + calla RNDPER + JRLS NO_DO_SWEAT + + SUBRP AUTOMATIC_SWEAT + + move @no_debris,a14 + jrnz NO_DO_SWEAT + move @reduce_bog,a14 + jrnz NO_DO_SWEAT + + movk 2,A0 + CALLA RNDRNG0 + INC A0 + MOVE @NUM_OPPS,A14 + CMPI 2,A14 + JRGT NOT_SO_MUCH + INC A0 +NOT_SO_MUCH + MOVE A0,A9 +DO_ANOTHER_GLOB + CREATE DEBRIS_PID,GLOB_SWEAT + DSJS A9,DO_ANOTHER_GLOB + + push a8 + + CLR A0 + CLR A1 + movi SPITUP01,a2 + CLR A3 + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + CALLA BEGINOBJ + move a8,*a13(SP_OBJ),L + +; CALLR WHICH_SWEAT_PAL + + pull a7 + move *a7,a9 + move *a11(WRESTLERNUM),A10 + SLL 6,A10 + addi WHICH_SWEAT,A9 + MOVE *A9(020H),A7,L + ADD A10,A7 + + MOVE *A9,A0,L + CMPI SPRAYB,A0 + JRNE NORMAL_SWEAT + + MOVE *A11(OBJ_CONTROL),A14 + XORI M_FLIPH,A14 + ORI DMAWNZ,A14 + move a14,*a13(SP_OBJCONTROL) + MOVE A14,*A8(OCTRL) + + MOVI [3,0],A0 + ANDI M_FLIPH,A14 + JRZ IF_WE_NEED_TO + NEG A0 +IF_WE_NEED_TO + MOVE A0,*A13(SP_OBJ_XVEL),L + + move *a11(OBJ_ZPOS),A0,L + SUBI 2,A0 + move A0,*A13(SP_OBJ_ZPOS),L + + move *a11(OBJ_XPOS),a0,L + MOVE *A7+,A1,L + MOVE *A11(OBJ_CONTROL),A14 + ANDI M_FLIPH,A14 + jrz NO_FLIP_X_POS + NEG A1 +NO_FLIP_X_POS + add A1,a0 + move a0,*a13(SP_OBJ_XPOS),L + + MOVE *a11(OBJ_YPOS),a0,L + MOVE *A7+,A1,L + sub A1,a0 + move a0,*a13(SP_OBJ_YPOS),L + + clr a0 + move a0,*a13(SP_OBJ_YVEL),L +RE_ENTER_FOR_BLOOD + clr a0 + move a0,*a13(SP_SHADOW_OBJ),L + + + MOVI [2,0],A0 + CALLA RNDRNG0 + SUBI [1,0],A0 + MOVE A0,*A13(SP_OBJ_ZVEL),L + + movi 0200h,a0 + move a0,*a13(SP_GRAVITY),L + + clr a0 + move a0,*a13(SP_DIE) + + movi 60,a0 + move a0,*a13(SP_LIFESPAN) + + move *a13(SP_OBJ),a8,L + + MOVE *A9,A0,L + calla sp_change_anim + +#lp2 + + SLEEPK 2 + + CALLR sp_velocity_add + CALLR sp_update_pos_single + callr sp_animate + + move *a13(SP_DIE),a0 + jrz #lp2 + + move *a13(SP_OBJ),a0,L + calla DELOBJ +NO_DO_SWEAT + DIE + +NORMAL_SWEAT + + MOVE *A11(OBJ_CONTROL),A14 + ANDI M_FLIPH,A14 + ORI DMAWNZ,A14 + move a14,*a13(SP_OBJCONTROL) + MOVE A14,*A8(OCTRL) + + move *a11(OBJ_ZPOS),A0,L + SUBI 2,A0 + move A0,*A13(SP_OBJ_ZPOS),L + + move *a11(OBJ_XPOS),a0,L + MOVE *A7+,A1,L + MOVE *A11(OBJ_CONTROL),A14 + ANDI M_FLIPH,A14 + jrz NO_FLIP_X_POS4 + NEG A1 +NO_FLIP_X_POS4 + add A1,a0 + move a0,*a13(SP_OBJ_XPOS),L + + MOVE *a11(OBJ_YPOS),a0,L + MOVE *A7+,A1,L + sub A1,a0 + move a0,*a13(SP_OBJ_YPOS),L + + clr a0 + move a0,*a13(SP_SHADOW_OBJ),L + move a0,*a13(SP_OBJ_YVEL),L + MOVE A0,*A13(SP_OBJ_XVEL),L + + MOVI [2,0],A0 + CALLA RNDRNG0 + SUBI [1,0],A0 + MOVE A0,*A13(SP_OBJ_ZVEL),L + + movi 0200h,a0 + move a0,*a13(SP_GRAVITY),L + + clr a0 + move a0,*a13(SP_DIE) + + movi 60,a0 + move a0,*a13(SP_LIFESPAN) + + move *a13(SP_OBJ),a8,L + + MOVE *A9,A0,L + + CMPI COUGH,A0 + JRNE NO_RAND_COUGH + MOVE @ROLLING_COUNT,A14 + SRL 1,A14 + JRNC NO_RAND_COUGH + MOVI SPITAN,A0 +NO_RAND_COUGH + calla sp_change_anim + + JRUC #lp2 + +WHICH_SWEAT_PAL + MOVE *A11(WRESTLERNUM),A0 + CMPI 2,A0 + JREQ DO_BILE_PAL + CMPI 5,A0 + JRNE NO_NEW_SWEAT_PAL + MOVI SPITPUS_P,A0 + JRUC GOT_NEW_PAL +DO_BILE_PAL + MOVI SPITBLE_P,A0 +GOT_NEW_PAL + CALLA pal_getf + MOVE A0,*A8(OPAL) +NO_NEW_SWEAT_PAL + RETS + +GLOB_BLOOD + + CLR A0 + CLR A1 + movi SPITUP01,a2 + CLR A3 + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + CALLA BEGINOBJ + move a8,*a13(SP_OBJ),L + + MOVI SPITPUS_P,A0 + CALLA pal_getf + MOVE A0,*A8(OPAL) + + MOVE *A11(OBJ_CONTROL),A14 + ANDI M_FLIPH,A14 + ORI DMAWNZ,A14 + move a14,*a13(SP_OBJCONTROL) + MOVE A14,*A8(OCTRL) + + move *a11(WRESTLERNUM),A10 + SLL 6,A10 + MOVI ARM_TBL,A7 + ADD A10,A7 + + move *a11(OBJ_ZPOS),*A13(SP_OBJ_ZPOS),L + + move *a11(OBJ_XPOS),a0,L + MOVE *A7+,A1,L + MOVE *A11(OBJ_CONTROL),A14 + ANDI M_FLIPH,A14 + PUSHST + jrz NO_FLIP_X_POS2BB + NEG A1 +NO_FLIP_X_POS2BB + add A1,a0 + move a0,*a13(SP_OBJ_XPOS),L + + MOVE *a11(OBJ_YPOS),a0,L + MOVE *A7+,A1,L + sub A1,a0 + move a0,*a13(SP_OBJ_YPOS),L + + clr a0 + move a0,*a13(SP_SHADOW_OBJ),L + + movi [4,0],a0 + calla RNDRNG0 + SUBI [2,0],A0 + move a0,*a13(SP_OBJ_XVEL),L + + movi [2,0],a0 + calla RNDRNGS + move a0,*a13(SP_OBJ_ZVEL),L + + movi [3,0],a0 + calla RNDRNGS + addi [6,0],a0 + move a0,*a13(SP_OBJ_YVEL),L + + movi GRAVITY,a0 + move a0,*a13(SP_GRAVITY),L + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_DIE) + + movi 60,a0 + move a0,*a13(SP_LIFESPAN) + + move *a13(SP_OBJ),a8,L + movk 11,A0 + CALLA RNDRNG0 + SLL 6,A0 + POPST + JRN NO_NEED_TO_USE_RIGHT_ANIMB + ADDI 020H,A0 +NO_NEED_TO_USE_RIGHT_ANIMB + ADDI WHICH_GLOB,A0 + MOVE *A0,A0,L + calla sp_change_anim + jruc glob_loop + + SUBR SPIN_SWEAT + move @no_debris,a14 + jrnz NO_DO_SWEAT + move @reduce_bog,a14 + jrnz NO_DO_SWEAT + MOVE *A8(010H),A9 + JRZ NO_DO_SWEAT +ANOTHER_GLOB + CREATE DEBRIS_PID,SPECIAL_GLOB_SWEAT + DSJS A9,ANOTHER_GLOB + DIE + + SUBRP SPECIAL_GLOB_SWEAT ;process + + movi SPECIAL_GLOB_SWEAT,a14 + move a14,*a13(PROC_ORIGIN),L + + push a8 + + CLR A0 + CLR A1 + movi SPITUP01,a2 + CLR A3 + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + CALLA BEGINOBJ + move a8,*a13(SP_OBJ),L + + move *A8(OCTRL),*a13(SP_OBJCONTROL) + + pull a7 + move *a7,a7 + SLL 7,A7 + ADDI SPIN_SWEAT_ORIG,A7 + + MOVE *A7+,A1,L + MOVE *A11(OBJ_CONTROL),A14,L + ANDI M_FLIPH,A14 + JRNZ NO_NEG_XPOS_START + NEG A1 +NO_NEG_XPOS_START + move *a11(OBJ_XPOS),a0,L + PUSHST + add A1,a0 + move a0,*a13(SP_OBJ_XPOS),L + + MOVE *a11(OBJ_ZPOS),a0,L + MOVE *A7+,A1,L + ADD A1,a0 + move a0,*a13(SP_OBJ_ZPOS),L + + MOVE *a11(OBJ_YPOS),a0,L + ADDI [64,0],A0 + MOVE A0,*A13(SP_OBJ_YPOS),L + + MOVE *A7+,A1,L + MOVE *A11(OBJ_CONTROL),A14,L + ANDI M_FLIPH,A14 + JRNZ NO_NEG_XVEL_START + NEG A1 +NO_NEG_XVEL_START + move a1,*a13(SP_OBJ_XVEL),L + + MOVE *A7+,A0,L + move a1,*a13(SP_OBJ_ZVEL),L + JRUC GLOB_SWEAT_REENTER + +SPIN_SWEAT_ORIG + .LONG [-120,0],[1,0],[-4,0],[0,0] + .LONG [-60,0],[-1,0],[-2,0],[-3,0] + .LONG [-30,0],[-1,0],[-1,0],[-6,0] + .LONG [0,0],[-1,0],[0,0],[-10,0] + .LONG [30,0],[-1,0],[1,0],[-6,0] + .LONG [70,0],[-1,0],[2,0],[-3,0] + .LONG [120,0],[1,0],[4,0],[0,0] + .LONG [70,0],[3,0],[2,0],[3,0] + .LONG [30,0],[3,0],[1,0],[6,0] + .LONG [0,0],[3,0],[0,0],[10,0] + .LONG [-50,0],[3,0],[-2,0],[6,0] + +#***************************************************************************** + + SUBRP GLOB_SWEAT ;process + + movi GLOB_SWEAT,a14 + move a14,*a13(PROC_ORIGIN),L + + push a8 + + CLR A0 + CLR A1 + movi SPITUP01,a2 + CLR A3 + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + CALLA BEGINOBJ + move a8,*a13(SP_OBJ),L + +; CALLR WHICH_SWEAT_PAL + + MOVE *A11(OBJ_CONTROL),A14 + ANDI M_FLIPH,A14 + ORI DMAWNZ,A14 + move a14,*a13(SP_OBJCONTROL) + MOVE A14,*A8(OCTRL) + + pull a7 + move *a7,a9 + move *a11(WRESTLERNUM),A10 + SLL 6,A10 + addi WHICH_SWEAT,A9 + MOVE *A9(020H),A7,L + ADD A10,A7 + + move *a11(OBJ_ZPOS),*A13(SP_OBJ_ZPOS),L + + move *a11(OBJ_XPOS),a0,L + MOVE *A7+,A1,L + MOVE *A11(OBJ_CONTROL),A14 + ANDI M_FLIPH,A14 + PUSHST + jrz #NO_FLIP_X_POS2 + NEG A1 +#NO_FLIP_X_POS2 + add A1,a0 + move a0,*a13(SP_OBJ_XPOS),L + + MOVE *a11(OBJ_YPOS),a0,L + MOVE *A7+,A1,L + sub A1,a0 + move a0,*a13(SP_OBJ_YPOS),L + + movi [4,0],a0 + calla RNDRNG0 + ADDI [1,0],A0 + POPST + JRNZ #NO_FLIP_ANIM_XVEL + NEG A0 +#NO_FLIP_ANIM_XVEL + MOVE A0,A0 + move a0,*a13(SP_OBJ_XVEL),L + PUSHST + + movi [2,0],a0 + calla RNDRNGS + move a0,*a13(SP_OBJ_ZVEL),L + +GLOB_SWEAT_REENTER + clr a0 + move a0,*a13(SP_SHADOW_OBJ),L + + movi [3,0],a0 + calla RNDRNGS + addi [6,0],a0 + move a0,*a13(SP_OBJ_YVEL),L + + movi GRAVITY,a0 + move a0,*a13(SP_GRAVITY),L + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_DIE) + + movi 60,a0 + move a0,*a13(SP_LIFESPAN) + + move *a13(SP_OBJ),a8,L + movk 11,A0 + CALLA RNDRNG0 + SLL 6,A0 + POPST + JRN #NO_NEED_TO_USE_RIGHT_ANIM + ADDI 020H,A0 +#NO_NEED_TO_USE_RIGHT_ANIM + ADDI WHICH_GLOB,A0 + MOVE *A0,A0,L + calla sp_change_anim + +glob_loop + SLEEPK 1 + + CALLR sp_velocity_add + + CALLR sp_update_pos_single + + callr sp_animate + + move *a13(SP_OBJ_YVEL),a0,L ;must have down velocity + JRZ #no_gnd + + move *a13(SP_OBJ_YPOSINT),a0 + move *a13(SP_GROUND_Y+10h),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_gnd + + sll 16,a1 + move a1,*a13(SP_OBJ_YPOS),L + + CLR A0 + MOVE A0,*A13(SP_OBJ_YVEL),L + MOVE A0,*A13(SP_OBJ_XVEL),L + MOVE A0,*A13(SP_OBJ_ZVEL),L + move a0,*a13(SP_GRAVITY),L + + MOVI SPLASH_A,A0 + move @ROLLING_COUNT,A14 + SRL 1,A14 + JRNC #GOT_RIGHT_SPLASH_ANIM + MOVI SPLASH_B,A0 +#GOT_RIGHT_SPLASH_ANIM + + calla sp_change_anim +#no_gnd + move *a13(SP_DIE),a0 + jrz glob_loop + + move *a13(SP_OBJ),a0,L + calla DELOBJ + DIE + +#***************************************************************************** + +WHICH_GLOB + .LONG WAD_AL,WAD_AR + .LONG WAD_AL,WAD_AR + .LONG WAD_AL,WAD_AR + .LONG WAD_BL,WAD_BR + .LONG WAD_BL,WAD_BR + .LONG WAD_CL,WAD_CR + .LONG WAD_DL,WAD_DR + .LONG WAD_DL,WAD_DR + .LONG WAD_EL,WAD_ER + .LONG WAD_FL,WAD_FR + .LONG WAD_FL,WAD_FR + .LONG WAD_FL,WAD_FR + +WHICH_SWEAT + .LONG SPITUP,SPITUP_TBL + .LONG SPRAYB,SPRAYA_TBL +ARM_BLOOD + .LONG SPRAYB,SPRAYA_TBL + .LONG SPRAYC,SPRAYA_TBL + .LONG COUGH,COUGH_TBL + .LONG SPRAYC,SPRAYD_TBL + +SPITUP + WL 1,SPITUP01 + WL 1,SPITUP02 + WL 1,SPITUP03 + WL 1,SPITUP04 + WL 1,SPITUP05 + WL 1,SPITUP06 + WL 1,SPITUP07 + WL 1,SPITUP08 + WL 1,SPITUP09 + .WORD 08002h + +SPITUP_TBL + .LONG [19,0],[-41,0] ;BRET + .LONG [37,0],[-35,0] ;RAZOR + .LONG [33,0],[-31,0] ;TAKER + .LONG [47,0],[-31,0] ;YOKO + .LONG [37,0],[-27,0] ;SHAWN + .LONG [55,0],[-35,0] ;BAM BAM + .LONG [45,0],[-29,0] ;DOINK + .LONG 0,0 ;SPARE + .LONG [25,0],[-31,0] ;LEX + +SPRAYA_TBL + .LONG [-5,0],[-109,0] ;BRET + .LONG [0,0],[-109,0] ;RAZOR + .LONG [-2,0],[-109,0] ;TAKER + .LONG [-7,0],[-97,0] ;YOKO + .LONG [-6,0],[-98,0] ;SHAWN + .LONG [-3,0],[-109,0] ;BAM BAM + .LONG [11,0],[-90,0] ;DOINK + .LONG 0,0 ;SPARE + .LONG [-9,0],[-103,0] ;LEX + +SPRAYD_TBL + .LONG [-60,0],[-40,0] ;BRET + .LONG [-50,0],[-80,0] ;RAZOR + .LONG [60,0],[-100,0] ;TAKER + .LONG [-40,0],[-100,0] ;YOKO + .LONG [-60,0],[-40,0] ;SHAWN + .LONG [-60,0],[-40,0] ;BAM BAM + .LONG [-60,0],[-40,0] ;DOINK + .LONG 0,0 ;SPARE + .LONG [-60,0],[-40,0] ;LEX + +ARM_TBL + .LONG [18,0],[-124,0] ;BRET + .LONG [24,0],[-120,0] ;RAZOR + .LONG [30,0],[-124,0] ;TAKER + .LONG [22,0],[-110,0] ;YOKO + .LONG [14,0],[-118,0] ;SHAWN + .LONG [20,0],[-120,0] ;BAM BAM + .LONG [16,0],[-110,0] ;DOINK + .LONG 0,0 ;SPARE + .LONG [16,0],[-128,0] ;LEX + +SPRAYB + WL 1,SPRAYB01 + WL 1,SPRAYB02 + WL 1,SPRAYB03 + WL 1,SPRAYB04 + WL 1,SPRAYB05 + WL 1,SPRAYB06 + WL 1,SPRAYB07 + WL 1,SPRAYB08 + .WORD 08002h + +SPRAYC + WL 1,SPRAYC01 + WL 1,SPRAYC02 + WL 1,SPRAYC03 + WL 1,SPRAYC04 + WL 1,SPRAYC05 + WL 1,SPRAYC06 + WL 1,SPRAYC07 + WL 1,SPRAYC08 + WL 1,SPRAYC09 + WL 1,SPRAYC10 + .WORD 08002h + +COUGH + WL 1,COUGHA01 + WL 1,COUGHA02 + WL 1,COUGHA03 + WL 1,COUGHA04 + WL 1,COUGHA05 + WL 1,COUGHA06 + WL 1,COUGHA07 + WL 1,COUGHA08 + WL 1,COUGHA09 + .WORD 08002h + +SPITAN + WL 1,SPITAN01 + WL 1,SPITAN02 + WL 1,SPITAN03 + WL 1,SPITAN04 + WL 1,SPITAN05 + WL 1,SPITAN06 + WL 1,SPITAN07 + WL 1,SPITAN08 + WL 1,SPITAN09 + .WORD 08002h + +COUGH_TBL + .LONG [23,0],[-71,0] ;BRET + .LONG [33,0],[-81,0] ;RAZOR + .LONG [21,0],[-93,0] ;TAKER + .LONG [33,0],[-77,0] ;YOKO + .LONG [27,0],[-73,0] ;SHAWN + .LONG [33,0],[-77,0] ;BAM BAM + .LONG [29,0],[-77,0] ;DOINK + .LONG 0,0 ;SPARE + .LONG [33,0],[-73,0] ;LEX + +WAD_AL + WL 2,WAD_A_01 + WL 2,WAD_A_02 + WL 2,WAD_A_03 + WL 2,WAD_A_04 + WL 2,WAD_A_05 + WL 2,WAD_A_06 + WL 2,WAD_A_07 + WL 2,WAD_A_08 + WL 2,WAD_A_09 + .word ASP_REPEAT + +WAD_BL + WL 2,WAD_B_01 + WL 2,WAD_B_02 + WL 2,WAD_B_03 + WL 2,WAD_B_04 + WL 2,WAD_B_05 + WL 2,WAD_B_06 + WL 2,WAD_B_07 + WL 2,WAD_B_08 + WL 2,WAD_B_09 + .word ASP_REPEAT + +WAD_CL + WL 2,WAD_C_01 + WL 2,WAD_C_02 + WL 2,WAD_C_03 + WL 2,WAD_C_04 + WL 2,WAD_C_05 + WL 2,WAD_C_06 + WL 2,WAD_C_07 + WL 2,WAD_C_08 + WL 2,WAD_C_09 + WL 2,WAD_C_11 + WL 2,WAD_C_12 + .word ASP_REPEAT + +WAD_DL + WL 2,WAD_D_01 + WL 2,WAD_D_02 + WL 2,WAD_D_03 + WL 2,WAD_D_04 + .word ASP_REPEAT + +WAD_EL + WL 2,WAD_E_01 + WL 2,WAD_E_02 + WL 2,WAD_E_03 + WL 2,WAD_E_04 + WL 2,WAD_E_05 + WL 2,WAD_E_06 + WL 2,WAD_E_07 + WL 2,WAD_E_08 + WL 2,WAD_E_09 + WL 2,WAD_E_10 + WL 2,WAD_E_11 + .word ASP_REPEAT + +WAD_FL + WL 2,WAD_F_01 + WL 2,WAD_F_02 + WL 2,WAD_F_03 + WL 2,WAD_F_04 + WL 2,WAD_F_05 + WL 2,WAD_F_06 + WL 2,WAD_F_07 + WL 2,WAD_F_08 + WL 2,WAD_F_09 + .word ASP_REPEAT + + +WAD_AR + WL 2,WAD_A_09 + WL 2,WAD_A_08 + WL 2,WAD_A_07 + WL 2,WAD_A_06 + WL 2,WAD_A_05 + WL 2,WAD_A_04 + WL 2,WAD_A_03 + WL 2,WAD_A_02 + WL 2,WAD_A_01 + .word ASP_REPEAT + +WAD_BR + WL 2,WAD_B_09 + WL 2,WAD_B_08 + WL 2,WAD_B_07 + WL 2,WAD_B_06 + WL 2,WAD_B_05 + WL 2,WAD_B_04 + WL 2,WAD_B_03 + WL 2,WAD_B_02 + WL 2,WAD_B_01 + .word ASP_REPEAT + +WAD_CR + WL 2,WAD_C_12 + WL 2,WAD_C_11 + WL 2,WAD_C_09 + WL 2,WAD_C_08 + WL 2,WAD_C_07 + WL 2,WAD_C_06 + WL 2,WAD_C_05 + WL 2,WAD_C_04 + WL 2,WAD_C_03 + WL 2,WAD_C_02 + WL 2,WAD_C_01 + .word ASP_REPEAT + +WAD_DR + WL 2,WAD_D_04 + WL 2,WAD_D_03 + WL 2,WAD_D_02 + WL 2,WAD_D_01 + .word ASP_REPEAT + +WAD_ER + WL 2,WAD_E_11 + WL 2,WAD_E_10 + WL 2,WAD_E_09 + WL 2,WAD_E_08 + WL 2,WAD_E_07 + WL 2,WAD_E_06 + WL 2,WAD_E_05 + WL 2,WAD_E_04 + WL 2,WAD_E_03 + WL 2,WAD_E_02 + WL 2,WAD_E_01 + .word ASP_REPEAT + +WAD_FR + WL 2,WAD_F_09 + WL 2,WAD_F_08 + WL 2,WAD_F_07 + WL 2,WAD_F_06 + WL 2,WAD_F_05 + WL 2,WAD_F_04 + WL 2,WAD_F_03 + WL 2,WAD_F_02 + WL 2,WAD_F_01 + .word ASP_REPEAT + +SPLASH_A + WL 2,SPLSHA01 + WL 2,SPLSHA02 + WL 2,SPLSHA03 + WL 2,SPLSHA04 + WL 2,SPLSHA05 + WL 2,SPLSHA06 + .WORD 08002h + +SPLASH_B + WL 2,SPLSHB01 + WL 2,SPLSHB02 + WL 2,SPLSHB03 + WL 2,SPLSHB04 + WL 2,SPLSHB05 + WL 2,SPLSHB06 + .WORD 08002h + + SUBR DO_EYES + ;quit if no_debris is set +; move @no_debris,a14 +; jrnz #rets +; move @reduce_bog,a14 +; jrnz #rets + + MOVE A13,A11 + movk 3,A0 + CALLA RNDRNG0 + INC A0 + INC A0 + MOVE A0,A9 +DO_ANOTHER_EYE + CREATE DEBRIS_PID,CREATE_EYES + DSJS A9,DO_ANOTHER_EYE +#rets RETS + +CREATE_EYES + CLR A0 + CLR A1 + movi SPITUP01,a2 + CLR A3 + movi DMAWNZ,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + CALLA BEGINOBJ + move a8,*a13(SP_OBJ),L + + MOVE *A11(OBJ_CONTROL),A14 + ANDI M_FLIPH,A14 + ORI DMAWNZ,A14 + move a14,*a13(SP_OBJCONTROL) + MOVE A14,*A8(OCTRL) + + move *a11(OBJ_ZPOS),*A13(SP_OBJ_ZPOS),L + + move *a11(OBJ_XPOS),a0,L + MOVI [30H,0],A1 + MOVE *A11(OBJ_CONTROL),A14 + BTST B_FLIPH,A14 + PUSHST + jrz NO_FLIP_X_POS2E + NEG A1 +NO_FLIP_X_POS2E + add A1,a0 + move a0,*a13(SP_OBJ_XPOS),L + + MOVE *a11(OBJ_YPOS),a0,L + MOVI [-100,0],A1 + sub A1,a0 + move a0,*a13(SP_OBJ_YPOS),L + + clr a0 + move a0,*a13(SP_SHADOW_OBJ),L + + movi [1,0],a0 + calla RNDRNG0 + ADDI [1,0],A0 + POPST + JRNZ NO_FLIP_ANIM_XVELE + NEG A0 +NO_FLIP_ANIM_XVELE + MOVE A0,A0 + move a0,*a13(SP_OBJ_XVEL),L + PUSHST + + CLR A0 + move a0,*a13(SP_OBJ_ZVEL),L + + movi [3,0],a0 + calla RNDRNGS + addi [6,0],a0 + move a0,*a13(SP_OBJ_YVEL),L + + movi GRAVITY,a0 + move a0,*a13(SP_GRAVITY),L + + move *a11(GROUND_Y),a0 + sll 16,a0 + move a0,*a13(SP_GROUND_Y),L + + clr a0 + move a0,*a13(SP_DIE) + + movi 120,a0 + move a0,*a13(SP_LIFESPAN) + + move *a13(SP_OBJ),a8,L + movk 1,A0 + CALLA RNDRNG0 + SLL 6,A0 + POPST + JRN NO_NEED_TO_USE_RIGHT_ANIME + ADDI 020H,A0 +NO_NEED_TO_USE_RIGHT_ANIME + ADDI WHICH_EYE,A0 + MOVE *A0,A0,L + calla sp_change_anim +#lp4 + SLEEPK 1 + + CALLR sp_velocity_add + CALLR sp_update_pos_single + callr sp_animate + + move *a13(SP_OBJ_YPOSINT),a0 + move *a13(SP_GROUND_Y+10h),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_gnd2 + + MOVE A1,*A13(SP_OBJ_YPOSINT) + MOVE *A13(SP_OBJ_YVEL),A1,L + MOVE A1,A0 + SRA 2,A1 + SUB A1,A0 + NEG A0 + MOVE A0,*A13(SP_OBJ_YVEL),L + +#no_gnd2 + move *a13(SP_LIFESPAN),a0 + DEC A0 + move A0,*a13(SP_LIFESPAN) + jrnz #lp4 + + move *a13(SP_OBJ),a0,L + calla DELOBJ + DIE + +WHICH_EYE + .LONG SMALL_EYE_L,SMALL_EYE_R + .LONG BIG_EYE_L,BIG_EYE_R + +SMALL_EYE_L + WL 2,BIGEYE01 + WL 2,BIGEYE02 + WL 2,BIGEYE03 + WL 2,BIGEYE04 + WL 2,BIGEYE05 + WL 2,BIGEYE06 + WL 2,BIGEYE07 + WL 2,BIGEYE08 + .word ASP_REPEAT +SMALL_EYE_R + WL 2,BIGEYE08 + WL 2,BIGEYE07 + WL 2,BIGEYE06 + WL 2,BIGEYE05 + WL 2,BIGEYE04 + WL 2,BIGEYE03 + WL 2,BIGEYE02 + WL 2,BIGEYE01 + .word ASP_REPEAT +BIG_EYE_L + WL 2,BIGEYE01 + WL 2,BIGEYE02 + WL 2,BIGEYE03 + WL 2,BIGEYE04 + WL 2,BIGEYE05 + WL 2,BIGEYE06 + WL 2,BIGEYE07 + WL 2,BIGEYE08 + .word ASP_REPEAT +BIG_EYE_R + WL 2,BIGEYE08 + WL 2,BIGEYE07 + WL 2,BIGEYE06 + WL 2,BIGEYE05 + WL 2,BIGEYE04 + WL 2,BIGEYE03 + WL 2,BIGEYE02 + WL 2,BIGEYE01 + .word ASP_REPEAT + +****************************************************************************** +;we need these + +SPITPUS_P: + .word 22 + .word 00H,07FD8H,07B95H,07752H,07331H,06F0FH,06AEEH,066CCH + .word 066CBH,062AAH,05E88H,05A67H,05A66H,05645H,05224H,04E03H + .word 049E2H,045C2H,041A1H,03D80H,03960H,03940H + +SPITBLE_P: + .word 22 + .word 00H,06FB5H,06B93H,06371H,05F4FH,05B4DH,0572BH,05309H + .word 04EE8H,04AC6H,046A5H,04283H,03E62H,03A41H,03640H,03220H + .word 02E00H,029E0H,025C0H,021A0H,01D80H,01D80H + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SPECIAL.EQU b/SPECIAL.EQU new file mode 100755 index 0000000..11d0d31 --- /dev/null +++ b/SPECIAL.EQU @@ -0,0 +1,112 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 11/8/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + + +****************************************************************************** +* +* SPECIAL OBJECT DATA STRUCTURE (CAN'T EXCEED 70-80 WORDS) + + STRUCTPD + WORD SP_OBJ_XPOS ;x-pos (world coordinates) + WORD SP_OBJ_XPOSINT + + WORD SP_OBJ_YPOS ;y-pos (world coordinates) + WORD SP_OBJ_YPOSINT + + WORD SP_OBJ_ZPOS ;z-pos (world coordinates) + WORD SP_OBJ_ZPOSINT + + APTR SP_NEXT + + WORD SP_OBJCONTROL + APTR SP_ANIBASE + APTR SP_ANIPC + WORD SP_ANICNT + + WORD SP_LIFESPAN + WORD SP_DIE + LONG SP_WRESPROC + + WORD SP_PLYR_SIDE + + APTR SP_OBJ + APTR SP_SHADOW_OBJ + + LONG SP_CUR_PAL + + WORD SP_XOFF + WORD SP_WIDTH + + WORD SP_YOFF + WORD SP_HEIGHT + + WORD SP_ZOFF + WORD SP_DEPTH + + WORD SP_COLLX1 + WORD SP_COLLX2 + + WORD SP_COLLY1 + WORD SP_COLLY2 + + WORD SP_COLLZ1 + WORD SP_COLLZ2 + + WORD SP_INRING + + LONG SP_GROUND_Y + + LONG SP_GRAVITY + + LONG SP_OBJ_XVEL + LONG SP_OBJ_YVEL + LONG SP_OBJ_ZVEL + + LONG SP_ANIMPTR + + LONG SP_HITGND_CODE + + WORD SP_ID ;What am I? + + LONG PROC_ORIGIN ;spaghetti untangler + + LONG SP_OPC1 + LONG SP_OPC2 + LONG SP_OPC3 + LONG SP_OPC4 + LONG SP_OPC5 + LONG SP_OPC6 + + LONG SP_ANIPC2 + + +****************************************************************************** +* +* SPECIAL OBJECT ANIMATION COMMANDS + +ASP_ZIP equ 0 + 8000h +ASP_END equ 1 + 8000h +ASP_DIE equ 2 + 8000h +ASP_REPEAT equ 3 + 8000h +ASP_GOTO equ 4 + 8000h +ASP_COLLBOX equ 5 + 8000h +ASP_ZEROVELS equ 6 + 8000h +ASP_ADD_YVEL equ 7 + 8000h +ASP_SETWORD equ 8 + 8000h +ASP_SETLONG equ 9 + 8000h +ASP_CODE equ 10 + 8000h +ASP_WAITNEGYVEL equ 11 + 8000h +ASP_ZEROYVEL equ 12 + 8000h +ASP_WAITHITGND equ 13 + 8000h +ASP_SET_GRAV equ 14 + 8000h + +****************************************************************************** +* END + \ No newline at end of file diff --git a/SQUARE.ASM b/SQUARE.ASM new file mode 100755 index 0000000..e1c7c44 --- /dev/null +++ b/SQUARE.ASM @@ -0,0 +1,680 @@ +****************************************************************************** +* +* Software: Jamie Rivett +* Initiated: 2/9/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +****************************************************************************** + + .file "square.asm" + .title "fast table lookup square root function" + .width 132 + .option b,d,l,t + .mnolist + + .include "sys.equ" + .include "macros.h" + + +#***************************************************************************** +* +* ARGS: a0 = 32 bit value to square root +* max value = 262,143 (8192 x 32) +* +* RETS: a0 = 16 bit square root + +;discards low five bits of a0, then computes square root based on top ten +; bits remaining. For example: +; +; 13 bits of input data (leftmost one is bit 12): +; shift right five, index into table. +; +; 19 bits of input data: +; srl five, leaving 14 bits. shift right 4, index, shift left 2. +; +; 16 bits of input data: +; srl five, leaving 11 bits. shift right 2, index, shift left 1. + + + SUBR square_root + + srl 5,a0 + lmo a0,a1 + neg a1 + addk 32,a1 + + ;a1 is the # of bits of data (0-27) + clr a14 ;# to shift lft when we're done + subk 10,a1 + jrle #go + + ;even after discarding lower 5, we've more than ten bits left. + ;divide by 2, rounding up, and that's half the number we shift + ;right right now, and THE number we shift left later. + inc a1 + srl 1,a1 + move a1,a14 + sll 1,a1 + neg a1 + srl a1,a0 + +#go ;index + X8 a0 + addi #sqroot_tab,a0 + movb *a0,a0 + sll 32-8,a0 + srl 32-8,a0 + sll a14,a0 + rets + + + +;1024 entries - square root of multiples of 32. +#sqroot_tab + .byte 0,6,8,10,11,13,14,15,16,17,18,19,20,20,21,22 + .byte 23,23,24,25,25,26,27,27,28,28,29,29,30,30,31,31 + .byte 32,32,33,33,34,34,35,35,36,36,37,37,38,38,38,39 + .byte 39,40,40,40,41,41,42,42,42,43,43,43,44,44,45,45 + .byte 45,46,46,46,47,47,47,48,48,48,49,49,49,50,50,50 + .byte 51,51,51,52,52,52,52,53,53,53,54,54,54,55,55,55 + .byte 55,56,56,56,57,57,57,57,58,58,58,59,59,59,59,60 + .byte 60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,64 + .byte 64,64,64,65,65,65,65,66,66,66,66,67,67,67,67,68 + .byte 68,68,68,69,69,69,69,70,70,70,70,70,71,71,71,71 + .byte 72,72,72,72,72,73,73,73,73,74,74,74,74,74,75,75 + .byte 75,75,75,76,76,76,76,77,77,77,77,77,78,78,78,78 + .byte 78,79,79,79,79,79,80,80,80,80,80,81,81,81,81,81 + .byte 82,82,82,82,82,83,83,83,83,83,84,84,84,84,84,84 + .byte 85,85,85,85,85,86,86,86,86,86,87,87,87,87,87,87 + .byte 88,88,88,88,88,89,89,89,89,89,89,90,90,90,90,90 + .byte 91,91,91,91,91,91,92,92,92,92,92,92,93,93,93,93 + .byte 93,93,94,94,94,94,94,94,95,95,95,95,95,95,96,96 + .byte 96,96,96,96,97,97,97,97,97,97,98,98,98,98,98,98 + .byte 99,99,99,99,99,99,100,100,100,100,100,100,101,101,101,101 + .byte 101,101,102,102,102,102,102,102,102,103,103,103,103,103,103,104 + .byte 104,104,104,104,104,104,105,105,105,105,105,105,106,106,106,106 + .byte 106,106,106,107,107,107,107,107,107,107,108,108,108,108,108,108 + .byte 109,109,109,109,109,109,109,110,110,110,110,110,110,110,111,111 + .byte 111,111,111,111,111,112,112,112,112,112,112,112,113,113,113,113 + .byte 113,113,113,114,114,114,114,114,114,114,115,115,115,115,115,115 + .byte 115,116,116,116,116,116,116,116,116,117,117,117,117,117,117,117 + .byte 118,118,118,118,118,118,118,119,119,119,119,119,119,119,119,120 + .byte 120,120,120,120,120,120,121,121,121,121,121,121,121,121,122,122 + .byte 122,122,122,122,122,123,123,123,123,123,123,123,123,124,124,124 + .byte 124,124,124,124,124,125,125,125,125,125,125,125,125,126,126,126 + .byte 126,126,126,126,126,127,127,127,127,127,127,127,127,128,128,128 + .byte 128,128,128,128,128,129,129,129,129,129,129,129,129,130,130,130 + .byte 130,130,130,130,130,131,131,131,131,131,131,131,131,132,132,132 + .byte 132,132,132,132,132,133,133,133,133,133,133,133,133,134,134,134 + .byte 134,134,134,134,134,134,135,135,135,135,135,135,135,135,136,136 + .byte 136,136,136,136,136,136,136,137,137,137,137,137,137,137,137,138 + .byte 138,138,138,138,138,138,138,138,139,139,139,139,139,139,139,139 + .byte 139,140,140,140,140,140,140,140,140,141,141,141,141,141,141,141 + .byte 141,141,142,142,142,142,142,142,142,142,142,143,143,143,143,143 + .byte 143,143,143,143,144,144,144,144,144,144,144,144,144,145,145,145 + .byte 145,145,145,145,145,145,146,146,146,146,146,146,146,146,146,147 + .byte 147,147,147,147,147,147,147,147,148,148,148,148,148,148,148,148 + .byte 148,148,149,149,149,149,149,149,149,149,149,150,150,150,150,150 + .byte 150,150,150,150,151,151,151,151,151,151,151,151,151,151,152,152 + .byte 152,152,152,152,152,152,152,153,153,153,153,153,153,153,153,153 + .byte 153,154,154,154,154,154,154,154,154,154,155,155,155,155,155,155 + .byte 155,155,155,155,156,156,156,156,156,156,156,156,156,156,157,157 + .byte 157,157,157,157,157,157,157,157,158,158,158,158,158,158,158,158 + .byte 158,158,159,159,159,159,159,159,159,159,159,159,160,160,160,160 + .byte 160,160,160,160,160,160,161,161,161,161,161,161,161,161,161,161 + .byte 162,162,162,162,162,162,162,162,162,162,163,163,163,163,163,163 + .byte 163,163,163,163,164,164,164,164,164,164,164,164,164,164,165,165 + .byte 165,165,165,165,165,165,165,165,166,166,166,166,166,166,166,166 + .byte 166,166,166,167,167,167,167,167,167,167,167,167,167,168,168,168 + .byte 168,168,168,168,168,168,168,168,169,169,169,169,169,169,169,169 + .byte 169,169,170,170,170,170,170,170,170,170,170,170,170,171,171,171 + .byte 171,171,171,171,171,171,171,171,172,172,172,172,172,172,172,172 + .byte 172,172,173,173,173,173,173,173,173,173,173,173,173,174,174,174 + .byte 174,174,174,174,174,174,174,174,175,175,175,175,175,175,175,175 + .byte 175,175,175,176,176,176,176,176,176,176,176,176,176,176,177,177 + .byte 177,177,177,177,177,177,177,177,177,178,178,178,178,178,178,178 + .byte 178,178,178,178,179,179,179,179,179,179,179,179,179,179,179,180 + .byte 180,180,180,180,180,180,180,180,180,180,180,181,181,181,181,181 + +;#***************************************************************************** +;* +;* ARGS: a0 = 32 bit value to square root +;* max value = 262,143 (8192 x 32) +;* +;* RETS: a0 = 16 bit square root +; +; SUBRP square_root +; +; addi 16,a0 ;round up +; srl 5,a0 ;/ 32 +; cmpi 8192,a0 +; jrlt #ok +; movi 8191,a0 ;NOT 8192! +;#ok +; sll 4,a0 ;x 16 +; addi #sqroot_tab,a0 +; move *a0,a0 +; +; rets +; +; +;;8192 entries - square root of multiples of 32 +;#sqroot_tab +; .word 0,6,8,10,11,13,14,15,16,17,18,19,20,20,21,22 +; .word 23,23,24,25,25,26,27,27,28,28,29,29,30,30,31,31 +; .word 32,32,33,33,34,34,35,35,36,36,37,37,38,38,38,39 +; .word 39,40,40,40,41,41,42,42,42,43,43,43,44,44,45,45 +; .word 45,46,46,46,47,47,47,48,48,48,49,49,49,50,50,50 +; .word 51,51,51,52,52,52,52,53,53,53,54,54,54,55,55,55 +; .word 55,56,56,56,57,57,57,57,58,58,58,59,59,59,59,60 +; .word 60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,64 +; .word 64,64,64,65,65,65,65,66,66,66,66,67,67,67,67,68 +; .word 68,68,68,69,69,69,69,70,70,70,70,70,71,71,71,71 +; .word 72,72,72,72,72,73,73,73,73,74,74,74,74,74,75,75 +; .word 75,75,75,76,76,76,76,77,77,77,77,77,78,78,78,78 +; .word 78,79,79,79,79,79,80,80,80,80,80,81,81,81,81,81 +; .word 82,82,82,82,82,83,83,83,83,83,84,84,84,84,84,84 +; .word 85,85,85,85,85,86,86,86,86,86,87,87,87,87,87,87 +; .word 88,88,88,88,88,89,89,89,89,89,89,90,90,90,90,90 +; .word 91,91,91,91,91,91,92,92,92,92,92,92,93,93,93,93 +; .word 93,93,94,94,94,94,94,94,95,95,95,95,95,95,96,96 +; .word 96,96,96,96,97,97,97,97,97,97,98,98,98,98,98,98 +; .word 99,99,99,99,99,99,100,100,100,100,100,100,101,101,101,101 +; .word 101,101,102,102,102,102,102,102,102,103,103,103,103,103,103,104 +; .word 104,104,104,104,104,104,105,105,105,105,105,105,106,106,106,106 +; .word 106,106,106,107,107,107,107,107,107,107,108,108,108,108,108,108 +; .word 109,109,109,109,109,109,109,110,110,110,110,110,110,110,111,111 +; .word 111,111,111,111,111,112,112,112,112,112,112,112,113,113,113,113 +; .word 113,113,113,114,114,114,114,114,114,114,115,115,115,115,115,115 +; .word 115,116,116,116,116,116,116,116,116,117,117,117,117,117,117,117 +; .word 118,118,118,118,118,118,118,119,119,119,119,119,119,119,119,120 +; .word 120,120,120,120,120,120,121,121,121,121,121,121,121,121,122,122 +; .word 122,122,122,122,122,123,123,123,123,123,123,123,123,124,124,124 +; .word 124,124,124,124,124,125,125,125,125,125,125,125,125,126,126,126 +; .word 126,126,126,126,126,127,127,127,127,127,127,127,127,128,128,128 +; .word 128,128,128,128,128,129,129,129,129,129,129,129,129,130,130,130 +; .word 130,130,130,130,130,131,131,131,131,131,131,131,131,132,132,132 +; .word 132,132,132,132,132,133,133,133,133,133,133,133,133,134,134,134 +; .word 134,134,134,134,134,134,135,135,135,135,135,135,135,135,136,136 +; .word 136,136,136,136,136,136,136,137,137,137,137,137,137,137,137,138 +; .word 138,138,138,138,138,138,138,138,139,139,139,139,139,139,139,139 +; .word 139,140,140,140,140,140,140,140,140,141,141,141,141,141,141,141 +; .word 141,141,142,142,142,142,142,142,142,142,142,143,143,143,143,143 +; .word 143,143,143,143,144,144,144,144,144,144,144,144,144,145,145,145 +; .word 145,145,145,145,145,145,146,146,146,146,146,146,146,146,146,147 +; .word 147,147,147,147,147,147,147,147,148,148,148,148,148,148,148,148 +; .word 148,148,149,149,149,149,149,149,149,149,149,150,150,150,150,150 +; .word 150,150,150,150,151,151,151,151,151,151,151,151,151,151,152,152 +; .word 152,152,152,152,152,152,152,153,153,153,153,153,153,153,153,153 +; .word 153,154,154,154,154,154,154,154,154,154,155,155,155,155,155,155 +; .word 155,155,155,155,156,156,156,156,156,156,156,156,156,156,157,157 +; .word 157,157,157,157,157,157,157,157,158,158,158,158,158,158,158,158 +; .word 158,158,159,159,159,159,159,159,159,159,159,159,160,160,160,160 +; .word 160,160,160,160,160,160,161,161,161,161,161,161,161,161,161,161 +; .word 162,162,162,162,162,162,162,162,162,162,163,163,163,163,163,163 +; .word 163,163,163,163,164,164,164,164,164,164,164,164,164,164,165,165 +; .word 165,165,165,165,165,165,165,165,166,166,166,166,166,166,166,166 +; .word 166,166,166,167,167,167,167,167,167,167,167,167,167,168,168,168 +; .word 168,168,168,168,168,168,168,168,169,169,169,169,169,169,169,169 +; .word 169,169,170,170,170,170,170,170,170,170,170,170,170,171,171,171 +; .word 171,171,171,171,171,171,171,171,172,172,172,172,172,172,172,172 +; .word 172,172,173,173,173,173,173,173,173,173,173,173,173,174,174,174 +; .word 174,174,174,174,174,174,174,174,175,175,175,175,175,175,175,175 +; .word 175,175,175,176,176,176,176,176,176,176,176,176,176,176,177,177 +; .word 177,177,177,177,177,177,177,177,177,178,178,178,178,178,178,178 +; .word 178,178,178,178,179,179,179,179,179,179,179,179,179,179,179,180 +; .word 180,180,180,180,180,180,180,180,180,180,180,181,181,181,181,181 +; .word 181,181,181,181,181,181,182,182,182,182,182,182,182,182,182,182 +; .word 182,183,183,183,183,183,183,183,183,183,183,183,183,184,184,184 +; .word 184,184,184,184,184,184,184,184,185,185,185,185,185,185,185,185 +; .word 185,185,185,185,186,186,186,186,186,186,186,186,186,186,186,187 +; .word 187,187,187,187,187,187,187,187,187,187,187,188,188,188,188,188 +; .word 188,188,188,188,188,188,188,189,189,189,189,189,189,189,189,189 +; .word 189,189,189,190,190,190,190,190,190,190,190,190,190,190,190,191 +; .word 191,191,191,191,191,191,191,191,191,191,191,192,192,192,192,192 +; .word 192,192,192,192,192,192,192,193,193,193,193,193,193,193,193,193 +; .word 193,193,193,194,194,194,194,194,194,194,194,194,194,194,194,195 +; .word 195,195,195,195,195,195,195,195,195,195,195,196,196,196,196,196 +; .word 196,196,196,196,196,196,196,197,197,197,197,197,197,197,197,197 +; .word 197,197,197,198,198,198,198,198,198,198,198,198,198,198,198,198 +; .word 199,199,199,199,199,199,199,199,199,199,199,199,200,200,200,200 +; .word 200,200,200,200,200,200,200,200,200,201,201,201,201,201,201,201 +; .word 201,201,201,201,201,202,202,202,202,202,202,202,202,202,202,202 +; .word 202,202,203,203,203,203,203,203,203,203,203,203,203,203,203,204 +; .word 204,204,204,204,204,204,204,204,204,204,204,205,205,205,205,205 +; .word 205,205,205,205,205,205,205,205,206,206,206,206,206,206,206,206 +; .word 206,206,206,206,206,207,207,207,207,207,207,207,207,207,207,207 +; .word 207,207,208,208,208,208,208,208,208,208,208,208,208,208,208,209 +; .word 209,209,209,209,209,209,209,209,209,209,209,209,210,210,210,210 +; .word 210,210,210,210,210,210,210,210,210,211,211,211,211,211,211,211 +; .word 211,211,211,211,211,211,212,212,212,212,212,212,212,212,212,212 +; .word 212,212,212,212,213,213,213,213,213,213,213,213,213,213,213,213 +; .word 213,214,214,214,214,214,214,214,214,214,214,214,214,214,215,215 +; .word 215,215,215,215,215,215,215,215,215,215,215,215,216,216,216,216 +; .word 216,216,216,216,216,216,216,216,216,217,217,217,217,217,217,217 +; .word 217,217,217,217,217,217,217,218,218,218,218,218,218,218,218,218 +; .word 218,218,218,218,219,219,219,219,219,219,219,219,219,219,219,219 +; .word 219,219,220,220,220,220,220,220,220,220,220,220,220,220,220,220 +; .word 221,221,221,221,221,221,221,221,221,221,221,221,221,221,222,222 +; .word 222,222,222,222,222,222,222,222,222,222,222,222,223,223,223,223 +; .word 223,223,223,223,223,223,223,223,223,223,224,224,224,224,224,224 +; .word 224,224,224,224,224,224,224,224,225,225,225,225,225,225,225,225 +; .word 225,225,225,225,225,225,226,226,226,226,226,226,226,226,226,226 +; .word 226,226,226,226,227,227,227,227,227,227,227,227,227,227,227,227 +; .word 227,227,228,228,228,228,228,228,228,228,228,228,228,228,228,228 +; .word 229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,230 +; .word 230,230,230,230,230,230,230,230,230,230,230,230,230,231,231,231 +; .word 231,231,231,231,231,231,231,231,231,231,231,232,232,232,232,232 +; .word 232,232,232,232,232,232,232,232,232,232,233,233,233,233,233,233 +; .word 233,233,233,233,233,233,233,233,234,234,234,234,234,234,234,234 +; .word 234,234,234,234,234,234,234,235,235,235,235,235,235,235,235,235 +; .word 235,235,235,235,235,235,236,236,236,236,236,236,236,236,236,236 +; .word 236,236,236,236,237,237,237,237,237,237,237,237,237,237,237,237 +; .word 237,237,237,238,238,238,238,238,238,238,238,238,238,238,238,238 +; .word 238,238,239,239,239,239,239,239,239,239,239,239,239,239,239,239 +; .word 239,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240 +; .word 241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,242 +; .word 242,242,242,242,242,242,242,242,242,242,242,242,242,242,243,243 +; .word 243,243,243,243,243,243,243,243,243,243,243,243,243,244,244,244 +; .word 244,244,244,244,244,244,244,244,244,244,244,244,244,245,245,245 +; .word 245,245,245,245,245,245,245,245,245,245,245,245,246,246,246,246 +; .word 246,246,246,246,246,246,246,246,246,246,246,247,247,247,247,247 +; .word 247,247,247,247,247,247,247,247,247,247,247,248,248,248,248,248 +; .word 248,248,248,248,248,248,248,248,248,248,249,249,249,249,249,249 +; .word 249,249,249,249,249,249,249,249,249,249,250,250,250,250,250,250 +; .word 250,250,250,250,250,250,250,250,250,251,251,251,251,251,251,251 +; .word 251,251,251,251,251,251,251,251,251,252,252,252,252,252,252,252 +; .word 252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253 +; .word 253,253,253,253,253,253,253,253,253,254,254,254,254,254,254,254 +; .word 254,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255 +; .word 255,255,255,255,255,255,255,255,255,256,256,256,256,256,256,256 +; .word 256,256,256,256,256,256,256,256,256,257,257,257,257,257,257,257 +; .word 257,257,257,257,257,257,257,257,257,258,258,258,258,258,258,258 +; .word 258,258,258,258,258,258,258,258,258,259,259,259,259,259,259,259 +; .word 259,259,259,259,259,259,259,259,259,260,260,260,260,260,260,260 +; .word 260,260,260,260,260,260,260,260,260,261,261,261,261,261,261,261 +; .word 261,261,261,261,261,261,261,261,261,262,262,262,262,262,262,262 +; .word 262,262,262,262,262,262,262,262,262,262,263,263,263,263,263,263 +; .word 263,263,263,263,263,263,263,263,263,263,264,264,264,264,264,264 +; .word 264,264,264,264,264,264,264,264,264,264,264,265,265,265,265,265 +; .word 265,265,265,265,265,265,265,265,265,265,265,266,266,266,266,266 +; .word 266,266,266,266,266,266,266,266,266,266,266,266,267,267,267,267 +; .word 267,267,267,267,267,267,267,267,267,267,267,267,267,268,268,268 +; .word 268,268,268,268,268,268,268,268,268,268,268,268,268,269,269,269 +; .word 269,269,269,269,269,269,269,269,269,269,269,269,269,269,270,270 +; .word 270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,271 +; .word 271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271 +; .word 272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272 +; .word 272,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273 +; .word 273,273,274,274,274,274,274,274,274,274,274,274,274,274,274,274 +; .word 274,274,274,275,275,275,275,275,275,275,275,275,275,275,275,275 +; .word 275,275,275,275,276,276,276,276,276,276,276,276,276,276,276,276 +; .word 276,276,276,276,276,276,277,277,277,277,277,277,277,277,277,277 +; .word 277,277,277,277,277,277,277,278,278,278,278,278,278,278,278,278 +; .word 278,278,278,278,278,278,278,278,279,279,279,279,279,279,279,279 +; .word 279,279,279,279,279,279,279,279,279,279,280,280,280,280,280,280 +; .word 280,280,280,280,280,280,280,280,280,280,280,281,281,281,281,281 +; .word 281,281,281,281,281,281,281,281,281,281,281,281,281,282,282,282 +; .word 282,282,282,282,282,282,282,282,282,282,282,282,282,282,283,283 +; .word 283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283 +; .word 284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284 +; .word 284,284,285,285,285,285,285,285,285,285,285,285,285,285,285,285 +; .word 285,285,285,285,286,286,286,286,286,286,286,286,286,286,286,286 +; .word 286,286,286,286,286,286,287,287,287,287,287,287,287,287,287,287 +; .word 287,287,287,287,287,287,287,287,288,288,288,288,288,288,288,288 +; .word 288,288,288,288,288,288,288,288,288,288,289,289,289,289,289,289 +; .word 289,289,289,289,289,289,289,289,289,289,289,289,290,290,290,290 +; .word 290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,291 +; .word 291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291 +; .word 292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292 +; .word 292,292,293,293,293,293,293,293,293,293,293,293,293,293,293,293 +; .word 293,293,293,293,294,294,294,294,294,294,294,294,294,294,294,294 +; .word 294,294,294,294,294,294,294,295,295,295,295,295,295,295,295,295 +; .word 295,295,295,295,295,295,295,295,295,296,296,296,296,296,296,296 +; .word 296,296,296,296,296,296,296,296,296,296,296,296,297,297,297,297 +; .word 297,297,297,297,297,297,297,297,297,297,297,297,297,297,298,298 +; .word 298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298 +; .word 298,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299 +; .word 299,299,299,299,300,300,300,300,300,300,300,300,300,300,300,300 +; .word 300,300,300,300,300,300,301,301,301,301,301,301,301,301,301,301 +; .word 301,301,301,301,301,301,301,301,301,302,302,302,302,302,302,302 +; .word 302,302,302,302,302,302,302,302,302,302,302,302,303,303,303,303 +; .word 303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,304 +; .word 304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304 +; .word 304,304,305,305,305,305,305,305,305,305,305,305,305,305,305,305 +; .word 305,305,305,305,305,306,306,306,306,306,306,306,306,306,306,306 +; .word 306,306,306,306,306,306,306,306,307,307,307,307,307,307,307,307 +; .word 307,307,307,307,307,307,307,307,307,307,307,308,308,308,308,308 +; .word 308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,309 +; .word 309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309 +; .word 309,309,310,310,310,310,310,310,310,310,310,310,310,310,310,310 +; .word 310,310,310,310,310,311,311,311,311,311,311,311,311,311,311,311 +; .word 311,311,311,311,311,311,311,311,311,312,312,312,312,312,312,312 +; .word 312,312,312,312,312,312,312,312,312,312,312,312,313,313,313,313 +; .word 313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313 +; .word 314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314 +; .word 314,314,314,315,315,315,315,315,315,315,315,315,315,315,315,315 +; .word 315,315,315,315,315,315,315,316,316,316,316,316,316,316,316,316 +; .word 316,316,316,316,316,316,316,316,316,316,316,317,317,317,317,317 +; .word 317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,318 +; .word 318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318 +; .word 318,318,318,319,319,319,319,319,319,319,319,319,319,319,319,319 +; .word 319,319,319,319,319,319,319,320,320,320,320,320,320,320,320,320 +; .word 320,320,320,320,320,320,320,320,320,320,320,321,321,321,321,321 +; .word 321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,322 +; .word 322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322 +; .word 322,322,322,323,323,323,323,323,323,323,323,323,323,323,323,323 +; .word 323,323,323,323,323,323,323,324,324,324,324,324,324,324,324,324 +; .word 324,324,324,324,324,324,324,324,324,324,324,325,325,325,325,325 +; .word 325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,326 +; .word 326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326 +; .word 326,326,326,326,327,327,327,327,327,327,327,327,327,327,327,327 +; .word 327,327,327,327,327,327,327,327,328,328,328,328,328,328,328,328 +; .word 328,328,328,328,328,328,328,328,328,328,328,328,328,329,329,329 +; .word 329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329 +; .word 329,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330 +; .word 330,330,330,330,330,330,331,331,331,331,331,331,331,331,331,331 +; .word 331,331,331,331,331,331,331,331,331,331,331,332,332,332,332,332 +; .word 332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,333 +; .word 333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333 +; .word 333,333,333,333,334,334,334,334,334,334,334,334,334,334,334,334 +; .word 334,334,334,334,334,334,334,334,334,335,335,335,335,335,335,335 +; .word 335,335,335,335,335,335,335,335,335,335,335,335,335,335,336,336 +; .word 336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336 +; .word 336,336,336,337,337,337,337,337,337,337,337,337,337,337,337,337 +; .word 337,337,337,337,337,337,337,337,338,338,338,338,338,338,338,338 +; .word 338,338,338,338,338,338,338,338,338,338,338,338,338,339,339,339 +; .word 339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339 +; .word 339,339,340,340,340,340,340,340,340,340,340,340,340,340,340,340 +; .word 340,340,340,340,340,340,340,340,341,341,341,341,341,341,341,341 +; .word 341,341,341,341,341,341,341,341,341,341,341,341,341,342,342,342 +; .word 342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342 +; .word 342,342,343,343,343,343,343,343,343,343,343,343,343,343,343,343 +; .word 343,343,343,343,343,343,343,343,344,344,344,344,344,344,344,344 +; .word 344,344,344,344,344,344,344,344,344,344,344,344,344,345,345,345 +; .word 345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345 +; .word 345,345,345,346,346,346,346,346,346,346,346,346,346,346,346,346 +; .word 346,346,346,346,346,346,346,346,347,347,347,347,347,347,347,347 +; .word 347,347,347,347,347,347,347,347,347,347,347,347,347,347,348,348 +; .word 348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348 +; .word 348,348,348,348,349,349,349,349,349,349,349,349,349,349,349,349 +; .word 349,349,349,349,349,349,349,349,349,349,350,350,350,350,350,350 +; .word 350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350 +; .word 351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351 +; .word 351,351,351,351,351,351,352,352,352,352,352,352,352,352,352,352 +; .word 352,352,352,352,352,352,352,352,352,352,352,352,353,353,353,353 +; .word 353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353 +; .word 353,353,354,354,354,354,354,354,354,354,354,354,354,354,354,354 +; .word 354,354,354,354,354,354,354,354,355,355,355,355,355,355,355,355 +; .word 355,355,355,355,355,355,355,355,355,355,355,355,355,355,356,356 +; .word 356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356 +; .word 356,356,356,356,357,357,357,357,357,357,357,357,357,357,357,357 +; .word 357,357,357,357,357,357,357,357,357,357,358,358,358,358,358,358 +; .word 358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358 +; .word 358,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359 +; .word 359,359,359,359,359,359,359,360,360,360,360,360,360,360,360,360 +; .word 360,360,360,360,360,360,360,360,360,360,360,360,360,360,361,361 +; .word 361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361 +; .word 361,361,361,361,362,362,362,362,362,362,362,362,362,362,362,362 +; .word 362,362,362,362,362,362,362,362,362,362,362,363,363,363,363,363 +; .word 363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363 +; .word 363,363,364,364,364,364,364,364,364,364,364,364,364,364,364,364 +; .word 364,364,364,364,364,364,364,364,365,365,365,365,365,365,365,365 +; .word 365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,366 +; .word 366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366 +; .word 366,366,366,366,366,366,367,367,367,367,367,367,367,367,367,367 +; .word 367,367,367,367,367,367,367,367,367,367,367,367,367,368,368,368 +; .word 368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368 +; .word 368,368,368,368,369,369,369,369,369,369,369,369,369,369,369,369 +; .word 369,369,369,369,369,369,369,369,369,369,369,370,370,370,370,370 +; .word 370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370 +; .word 370,370,371,371,371,371,371,371,371,371,371,371,371,371,371,371 +; .word 371,371,371,371,371,371,371,371,371,372,372,372,372,372,372,372 +; .word 372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372 +; .word 372,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373 +; .word 373,373,373,373,373,373,373,373,374,374,374,374,374,374,374,374 +; .word 374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,375 +; .word 375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375 +; .word 375,375,375,375,375,375,375,376,376,376,376,376,376,376,376,376 +; .word 376,376,376,376,376,376,376,376,376,376,376,376,376,376,377,377 +; .word 377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377 +; .word 377,377,377,377,377,377,378,378,378,378,378,378,378,378,378,378 +; .word 378,378,378,378,378,378,378,378,378,378,378,378,378,379,379,379 +; .word 379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379 +; .word 379,379,379,379,379,380,380,380,380,380,380,380,380,380,380,380 +; .word 380,380,380,380,380,380,380,380,380,380,380,380,380,381,381,381 +; .word 381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381 +; .word 381,381,381,381,381,382,382,382,382,382,382,382,382,382,382,382 +; .word 382,382,382,382,382,382,382,382,382,382,382,382,382,383,383,383 +; .word 383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383 +; .word 383,383,383,383,383,384,384,384,384,384,384,384,384,384,384,384 +; .word 384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385 +; .word 385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385 +; .word 385,385,385,385,385,386,386,386,386,386,386,386,386,386,386,386 +; .word 386,386,386,386,386,386,386,386,386,386,386,386,386,387,387,387 +; .word 387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387 +; .word 387,387,387,387,387,388,388,388,388,388,388,388,388,388,388,388 +; .word 388,388,388,388,388,388,388,388,388,388,388,388,388,389,389,389 +; .word 389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389 +; .word 389,389,389,389,389,390,390,390,390,390,390,390,390,390,390,390 +; .word 390,390,390,390,390,390,390,390,390,390,390,390,390,390,391,391 +; .word 391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391 +; .word 391,391,391,391,391,391,392,392,392,392,392,392,392,392,392,392 +; .word 392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,393 +; .word 393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393 +; .word 393,393,393,393,393,393,393,394,394,394,394,394,394,394,394,394 +; .word 394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394 +; .word 395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395 +; .word 395,395,395,395,395,395,395,395,395,396,396,396,396,396,396,396 +; .word 396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396 +; .word 396,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397 +; .word 397,397,397,397,397,397,397,397,397,397,398,398,398,398,398,398 +; .word 398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398 +; .word 398,398,398,399,399,399,399,399,399,399,399,399,399,399,399,399 +; .word 399,399,399,399,399,399,399,399,399,399,399,399,400,400,400,400 +; .word 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400 +; .word 400,400,400,400,400,401,401,401,401,401,401,401,401,401,401,401 +; .word 401,401,401,401,401,401,401,401,401,401,401,401,401,401,402,402 +; .word 402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402 +; .word 402,402,402,402,402,402,402,403,403,403,403,403,403,403,403,403 +; .word 403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403 +; .word 404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404 +; .word 404,404,404,404,404,404,404,404,404,404,405,405,405,405,405,405 +; .word 405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405 +; .word 405,405,405,406,406,406,406,406,406,406,406,406,406,406,406,406 +; .word 406,406,406,406,406,406,406,406,406,406,406,406,407,407,407,407 +; .word 407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407 +; .word 407,407,407,407,407,407,408,408,408,408,408,408,408,408,408,408 +; .word 408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,409 +; .word 409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409 +; .word 409,409,409,409,409,409,409,409,409,410,410,410,410,410,410,410 +; .word 410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410 +; .word 410,410,411,411,411,411,411,411,411,411,411,411,411,411,411,411 +; .word 411,411,411,411,411,411,411,411,411,411,411,411,412,412,412,412 +; .word 412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412 +; .word 412,412,412,412,412,412,413,413,413,413,413,413,413,413,413,413 +; .word 413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413 +; .word 414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414 +; .word 414,414,414,414,414,414,414,414,414,414,415,415,415,415,415,415 +; .word 415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415 +; .word 415,415,415,415,416,416,416,416,416,416,416,416,416,416,416,416 +; .word 416,416,416,416,416,416,416,416,416,416,416,416,416,416,417,417 +; .word 417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417 +; .word 417,417,417,417,417,417,417,417,418,418,418,418,418,418,418,418 +; .word 418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418 +; .word 418,418,419,419,419,419,419,419,419,419,419,419,419,419,419,419 +; .word 419,419,419,419,419,419,419,419,419,419,419,419,420,420,420,420 +; .word 420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420 +; .word 420,420,420,420,420,420,421,421,421,421,421,421,421,421,421,421 +; .word 421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421 +; .word 422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422 +; .word 422,422,422,422,422,422,422,422,422,422,422,423,423,423,423,423 +; .word 423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423 +; .word 423,423,423,423,423,424,424,424,424,424,424,424,424,424,424,424 +; .word 424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424 +; .word 425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425 +; .word 425,425,425,425,425,425,425,425,425,425,426,426,426,426,426,426 +; .word 426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426 +; .word 426,426,426,426,426,427,427,427,427,427,427,427,427,427,427,427 +; .word 427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427 +; .word 428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428 +; .word 428,428,428,428,428,428,428,428,428,428,429,429,429,429,429,429 +; .word 429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429 +; .word 429,429,429,429,429,430,430,430,430,430,430,430,430,430,430,430 +; .word 430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430 +; .word 431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431 +; .word 431,431,431,431,431,431,431,431,431,431,431,432,432,432,432,432 +; .word 432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432 +; .word 432,432,432,432,432,432,433,433,433,433,433,433,433,433,433,433 +; .word 433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433 +; .word 433,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434 +; .word 434,434,434,434,434,434,434,434,434,434,434,434,435,435,435,435 +; .word 435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435 +; .word 435,435,435,435,435,435,435,436,436,436,436,436,436,436,436,436 +; .word 436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436 +; .word 436,436,436,437,437,437,437,437,437,437,437,437,437,437,437,437 +; .word 437,437,437,437,437,437,437,437,437,437,437,437,437,437,438,438 +; .word 438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438 +; .word 438,438,438,438,438,438,438,438,438,439,439,439,439,439,439,439 +; .word 439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439 +; .word 439,439,439,439,439,440,440,440,440,440,440,440,440,440,440,440 +; .word 440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440 +; .word 441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441 +; .word 441,441,441,441,441,441,441,441,441,441,441,441,442,442,442,442 +; .word 442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442 +; .word 442,442,442,442,442,442,442,443,443,443,443,443,443,443,443,443 +; .word 443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443 +; .word 443,443,443,444,444,444,444,444,444,444,444,444,444,444,444,444 +; .word 444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,445 +; .word 445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445 +; .word 445,445,445,445,445,445,445,445,445,445,445,446,446,446,446,446 +; .word 446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446 +; .word 446,446,446,446,446,446,446,447,447,447,447,447,447,447,447,447 +; .word 447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447 +; .word 447,447,447,448,448,448,448,448,448,448,448,448,448,448,448,448 +; .word 448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,449 +; .word 449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449 +; .word 449,449,449,449,449,449,449,449,449,449,449,450,450,450,450,450 +; .word 450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450 +; .word 450,450,450,450,450,450,450,451,451,451,451,451,451,451,451,451 +; .word 451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451 +; .word 451,451,451,452,452,452,452,452,452,452,452,452,452,452,452,452 +; .word 452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,453 +; .word 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453 +; .word 453,453,453,453,453,453,453,453,453,453,453,454,454,454,454,454 +; .word 454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454 +; .word 454,454,454,454,454,454,454,454,455,455,455,455,455,455,455,455 +; .word 455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455 +; .word 455,455,455,455,456,456,456,456,456,456,456,456,456,456,456,456 +; .word 456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456 +; .word 456,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457 +; .word 457,457,457,457,457,457,457,457,457,457,457,457,457,458,458,458 +; .word 458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458 +; .word 458,458,458,458,458,458,458,458,458,458,459,459,459,459,459,459 +; .word 459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459 +; .word 459,459,459,459,459,459,459,460,460,460,460,460,460,460,460,460 +; .word 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460 +; .word 460,460,460,461,461,461,461,461,461,461,461,461,461,461,461,461 +; .word 461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461 +; .word 462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462 +; .word 462,462,462,462,462,462,462,462,462,462,462,462,462,463,463,463 +; .word 463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463 +; .word 463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464 +; .word 464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464 +; .word 464,464,464,464,464,464,464,465,465,465,465,465,465,465,465,465 +; .word 465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465 +; .word 465,465,465,465,466,466,466,466,466,466,466,466,466,466,466,466 +; .word 466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466 +; .word 466,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467 +; .word 467,467,467,467,467,467,467,467,467,467,467,467,467,467,468,468 +; .word 468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468 +; .word 468,468,468,468,468,468,468,468,468,468,468,468,469,469,469,469 +; .word 469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469 +; .word 469,469,469,469,469,469,469,469,469,470,470,470,470,470,470,470 +; .word 470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470 +; .word 470,470,470,470,470,470,471,471,471,471,471,471,471,471,471,471 +; .word 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471 +; .word 471,471,471,471,472,472,472,472,472,472,472,472,472,472,472,472 +; .word 472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472 +; .word 472,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473 +; .word 473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,474 +; .word 474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474 +; .word 474,474,474,474,474,474,474,474,474,474,474,474,475,475,475,475 +; .word 475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475 +; .word 475,475,475,475,475,475,475,475,475,475,476,476,476,476,476,476 +; .word 476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476 +; .word 476,476,476,476,476,476,476,476,477,477,477,477,477,477,477,477 +; .word 477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477 +; .word 477,477,477,477,477,477,478,478,478,478,478,478,478,478,478,478 +; .word 478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478 +; .word 478,478,478,478,479,479,479,479,479,479,479,479,479,479,479,479 +; .word 479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479 +; .word 479,479,480,480,480,480,480,480,480,480,480,480,480,480,480,480 +; .word 480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480 +; .word 481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481 +; .word 481,481,481,481,481,481,481,481,481,481,481,481,481,481,482,482 +; .word 482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482 +; .word 482,482,482,482,482,482,482,482,482,482,482,482,483,483,483,483 +; .word 483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483 +; .word 483,483,483,483,483,483,483,483,483,483,484,484,484,484,484,484 +; .word 484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484 +; .word 484,484,484,484,484,484,484,484,485,485,485,485,485,485,485,485 +; .word 485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485 +; .word 485,485,485,485,485,485,486,486,486,486,486,486,486,486,486,486 +; .word 486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486 +; .word 486,486,486,486,486,487,487,487,487,487,487,487,487,487,487,487 +; .word 487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487 +; .word 487,487,487,488,488,488,488,488,488,488,488,488,488,488,488,488 +; .word 488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488 +; .word 488,488,489,489,489,489,489,489,489,489,489,489,489,489,489,489 +; .word 489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489 +; .word 490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490 +; .word 490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,491 +; .word 491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491 +; .word 491,491,491,491,491,491,491,491,491,491,491,491,491,491,492,492 +; .word 492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492 +; .word 492,492,492,492,492,492,492,492,492,492,492,492,493,493,493,493 +; .word 493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493 +; .word 493,493,493,493,493,493,493,493,493,493,493,494,494,494,494,494 +; .word 494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494 +; .word 494,494,494,494,494,494,494,494,494,494,495,495,495,495,495,495 +; .word 495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495 +; .word 495,495,495,495,495,495,495,495,495,496,496,496,496,496,496,496 +; .word 496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496 +; .word 496,496,496,496,496,496,496,496,497,497,497,497,497,497,497,497 +; .word 497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497 +; .word 497,497,497,497,497,497,497,498,498,498,498,498,498,498,498,498 +; .word 498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498 +; .word 498,498,498,498,498,498,499,499,499,499,499,499,499,499,499,499 +; .word 499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499 +; .word 499,499,499,499,499,500,500,500,500,500,500,500,500,500,500,500 +; .word 500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500 +; .word 500,500,500,500,500,501,501,501,501,501,501,501,501,501,501,501 +; .word 501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501 +; .word 501,501,501,501,502,502,502,502,502,502,502,502,502,502,502,502 +; .word 502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502 +; .word 502,502,502,503,503,503,503,503,503,503,503,503,503,503,503,503 +; .word 503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503 +; .word 503,503,503,504,504,504,504,504,504,504,504,504,504,504,504,504 +; .word 504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504 +; .word 504,504,505,505,505,505,505,505,505,505,505,505,505,505,505,505 +; .word 505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505 +; .word 505,505,506,506,506,506,506,506,506,506,506,506,506,506,506,506 +; .word 506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506 +; .word 506,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507 +; .word 507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507 +; .word 507,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508 +; .word 508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508 +; .word 508,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509 +; .word 509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509 +; .word 509,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510 +; .word 510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510 +; .word 510,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511 +; .word 511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511 +; .word 511,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512 + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/STDSEQ.DOC b/STDSEQ.DOC new file mode 100755 index 0000000..fc193ad Binary files /dev/null and b/STDSEQ.DOC differ diff --git a/STORIES.ASM b/STORIES.ASM new file mode 100755 index 0000000..3de829b --- /dev/null +++ b/STORIES.ASM @@ -0,0 +1,289 @@ +************************************************************** +* +* Software: Mike Lynch +* Initiated: 04/16/95 +* +* Modified: +* +* COPYRIGHT (C) 1995 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "stories.asm" + .title "wrestling game program" + .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 "wwfsec.equ" + .include "game.equ" + .include "audit.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .include "sound.equ" + .include "damage.equ" + + .include "imgtbl.glo" + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + .include "logo.glo" + + .include "bamst.h" + .include "bretst.h" + .include "doinkst.h" +; .include "yokost1.h" +; .include "yokost2.h" +; .include "yokost3.h" +; .include "yokost4.h" + .include "yokost.h" + .include "lexst.h" + .include "razorst.h" + .include "takerst.h" + .include "shawnst.h" + + .ref p1oldwinstreak,p2oldwinstreak,print_string,ogmd10_ascii + .ref SGMD8GLD,setup_message,message_buffer + .ref BAKMODS,decompress_string,BGND_UD1,WIPEOUT,dpageflip + .ref wrestler_mugs,obj_del1c,mess_objid,scrn_rel_off,pal_clean + .ref fade_down,get_but_val_cur,which_player,PSTATUS,mess_cursy + .ref osgmd8_ascii + + BSSX wrestler_number,32 + +blank_line + .byte 0 + .even + + .globl story_bgnd +story_bgnd + .long endstoryBMOD + .word 0,0 + .long 0 + +; These need to be in the same order as the wrestler numbers +#wrestler_stories_table + .long bret_stories ; Bret Hart + .long razor_stories ; Razor Ramon + .long taker_stories ; The Undertaker + .long yoko_stories ; Yokozuna + .long shawn_stories ; Shawn Michaels + .long bam_stories ; Bam Bam Bigelow + .long doink_stories ; Doink The Clown + .long doink_stories ; Doink The Clown + .long lex_stories ; Lex Luger + + + +#story_line1_setup + JAM_STR osgmd8_ascii,5,0,15,90,SGMD8GLD,print_string + .even + + + +; +; A1 = *wrestler story line table +; + SUBR print_story + PUSHP a0,a1,a2,a3,a4 +#do_more_lines + movi 90,a3 +#print_story_loop + move *a1+,a0,L ; Get pointer to text line + jrz #print_story_done ; Last line ? br = yes + calla decompress_string ; Decompress string + movi #story_line1_setup,a2 + calla setup_message ; Set it up + move a3,@mess_cursy + movi TYPWCCOUNT,a14 + move a14,@mess_objid + PUSHP a1,a3 + calla print_string ; Print it + PULLP a1,a3 + addi 12,a3 + cmpi 230,a3 + jrlt #print_story_loop + + PUSHP a0,a1 + SLEEP TSEC*5 ; Minimum time to display + + PUSHP a9 +;of real time. +; movi TSEC*60,a9 ; Allow up to 1 minute per pg + movi TSEC*15,a9 ; Allow up to 1 minute per pg +#w_loop + SLEEPK 1 + clr a0 + calla get_but_val_cur + move a0,a0 + jrnz #we_done + movk 1,a0 + calla get_but_val_cur + move a0,a0 + jrnz #we_done + dsjs a9,#w_loop +#we_done + PULLP a9 + PULLP a0,a1 + + move *a1,a0,L ; Are there more lines ? + jrz #print_story_done ; br = no - don't erase them + + movi TYPWCCOUNT,a0 + PUSHP a1 + calla obj_del1c + PULLP a1 + jruc #do_more_lines + + jruc #print_story_loop ; Keep going +#print_story_done + PULLP a0,a1,a2,a3,a4 + + SLEEPK TSEC/2 ; A little delay before we leave + + RETP + + + + +w_logos + .long HRT3 + .long RZR3 + .long UND3 + .long YOK3 + .long SHN3 + .long BAM3 + .long DNK3 + .long 0 + .long LEX3 + + SUBR show_wrestler_end_story +; RETP + + PUSHP a0,a1,a2 ; Save reggies + + move @PSTATUS,a14 ; Get which player won + srl 1,a14 ; Index into table + sll 4,a14 + addi which_player,a14 + move *a14,a8 ; Get winning wrestler number + + cmpi 7,a8 ; Is this wrestler number 7 ? + jrz inval_wnum ; br = yes (not a valid wrestler number) + + calla pal_clean ; Get rid of extra palettes + + clr a10 ; Fade down the lights + movk 32,a11 + CREATE0 fade_down + SLEEPK 30 + + calla WIPEOUT + movk 1,a0 ; Page flipping on + move a0,@dpageflip + + calla pal_clean ; Get rid of extra palettes + + movi story_bgnd,a0 ; Setup background + move a0,@BAKMODS,L + calla BGND_UD1 + + move a8,a10 ; Restore the wrestler number + + ; Create the wrestlers mugshot + move a10,a9 ; Get wrestler number + sll 5,a9 ; Index into table + addi wrestler_mugs,a9 + move *a9,a9,L ; Get pointer to mugshot image pieces +#mk_mug + move *a9+,a2,L ; Get pointer to image piece + jrz #mug_done ; Is that all of them ? - br = yes + movi [017ah,0],a0 ; X position + movi [0Afh,0],a1 ; Y position + clr a3 ; Z position + movi DMAWNZ|M_FLIPH,a4 + movi CLSMK3,a5 ; Make it this class so's I kin delete it + clr a6 ; No velocity + clr a7 + calla BEGINOBJ ; Create the buger + jruc #mk_mug ; Get get next piece +#mug_done + + ; And now his logo + move a10,a2 ; Lookup the logo image fer this guy + sll 5,a2 + addi w_logos,a2 + move *a2,a2,L ; Get the image pointer + move *a2(ISIZEX),a0 ; Get image width + srl 1,a0 ; Divide it by 2 + move *a2(ISIZEY),a1 ; Get the image height + srl 1,a1 ; Divide it by 2 + sll 16,a0 ; Shift width up into integer portion + sll 16,a1 ; Shift height up into integer portion + neg a0 ; Negate the width + neg a1 ; Negate the height + addi [120,0],a0 ; Translate in X dir + addi [50,0],a1 ; Translate in Y dir + clr a3 ; Z position + movi DMAWNZ,a4 ; Blit method + movi CLSMK3,a5 ; Make it this class so's I kin delete it + clr a6 ; No velocity + clr a7 + calla BEGINOBJ ; Create it + + ; Put a WWF belt below the mugshot + movi [316,0],a0 ; Center X point on plate below mugshot + movi [198,0],a1 ; Center Y point on plate below mugshot + movi SWWFBLT,a2 ; WWF Belt Image + clr a3 ; Z Position + movi DMAWNZ,a4 ; How to blit it + movi CLSMK3,a5 ; Make it this class so's I kin delete it + clr a6 ; No velocity + clr a7 + calla BEGINOBJ ; Create it + + move a10,a1 + sll 5,a1 ; Get wrestler stories table ptr + addi #wrestler_stories_table,a1 + move *a1,a1,L ; Get pointer to wrestler stories + move *a1,a1,L ; Get pointer to string table + JSRP print_story + +;of real time. +; movi TSEC*60,a9 ; Allow up to 1 minute per pg + movi TSEC*15,a9 ; Allow up to 1 minute per pg +#but_wait + SLEEPK 1 + clr a0 ; Check the p1 buttons + calla get_but_val_cur + move a0,a0 ; Any get pressed ? + jrnz #but_hit ; br = yes + movk 1,a0 ; Check the p2 buttons + calla get_but_val_cur + move a0,a0 ; Any get pressed ? + jrnz #but_hit ; br = yes + dsjs a9,#but_wait ; 3 seconds elapsed ? - br = no +#but_hit + + movi CLSMK3,a0 ; Ok now delete all the object I created + calla obj_del1c + + movi TYPWCCOUNT,a0 + calla obj_del1c + + PULLP a0,a1,a2 ; Restore the reggies +inval_wnum + RETP ; I be done!!! + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/STRING.ASM b/STRING.ASM new file mode 100755 index 0000000..c1b63dd --- /dev/null +++ b/STRING.ASM @@ -0,0 +1,928 @@ +**************************************************************** +* +* Software: Jamie Rivett +* Initiated: +* +* Modified: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 10/9/92 23:07 +**************************************************************** + .file "string.asm" + .title "string printing stuff" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "macros.h" + .include "game.equ" + .include "audit.equ" + .include "imgtbl.glo" + + .include "fontsimg.glo" + .include "bgndtbl.glo" + + .include "miscimg.glo" + .include "fonts2.tbl" + .include "fontsimg.tbl" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref BINBCD + +****************************************************************************** + +;symbols defined in this file + + .def message_palette + .def mess_space_width + .def print_string,print_string2,print_string_C,print_string_C2 + .def print_string_R,print_string_R2 + .def message_ascii + .def mess_spacing + .def mess_objid + .def mess_cursx + .def mess_cursy + .def osgemd_ascii,osgmd8_ascii + .def wgsf24_ascii,ogmd10_ascii + .def font9_ascii + .def font9A_ascii,font18_ascii + .def wsf14_ascii,wsf10_ascii + .def print_string_with_z,mess_z + + .def win_ascii + .def message_buffer + .def message_buffer2 + .def dec_to_asc,dec_to_pct + .def copy_string,copy_rom_string + .def concat_string,concat_rom_string + + .def print_message,setup_message + .def mess_line_spacing + .def get_string_len2 + .def dec_to_asc_new_entry + +MBUFF_SIZE equ 40 + +;ram + .bss message_ascii, 32 ;* ascii lookup table + .bss message_palette,32 ;* palette + .bss message_buffer, 16*MBUFF_SIZE ;null terminated string + .bss message_buffer2, 16*MBUFF_SIZE + .bss mess_cursx, 16 ;message cursor pos X original + BSSX mess_cursx2, 16 ;message cursor pos X temp + .bss mess_cursy, 16 ;message cursor pos Y + .bss mess_space_width, 16 ;width in pixels of space char + .bss mess_spacing,16 ;spacing between chars + .bss mess_line_spacing,16 ;spacing between lines + .bss mess_objid,16 ;OBJECT ID for string + .bss mess_justify,32 ;justification method + .bss ptr_player_data,32 ;start address of player data + .bss mess_z,32 + BSSX IGNORE_CHAR_WIDTH,16 + .text + +#***************************************************************************** + + SUBRP clear_buffers + + callr clear_buffer + callr clear_buffer2 + rets + +clear_buffer + movi MBUFF_SIZE,a2 + clr a0 + movi message_buffer,a1 +#clear_loop1 + move a0,*a1+ + dsj a2,#clear_loop1 + rets + +clear_buffer2 + movi MBUFF_SIZE,a2 + clr a0 + movi message_buffer2,a1 +#clear_loop2 + move a0,*a1+ + dsj a2,#clear_loop2 + rets + + +#***************************************************************************** +* +* INPUT: a0 = number to convert +* a1 = max value +* converts value in A0 to an decimal ASCII string in message_buffer2 +* - removes leading spaces +* +*----------------------------------------------------------------------------- + + SUBRP dec_to_asc + + cmp a0,a1 ;a1-a0 + jrhi #not_max + move a1,a0 ;set num to max +#not_max + + calla BINBCD ;dec number in A0 + move a0,a1 + movi message_buffer2,a2 + +dec_to_asc_new_entry + + clr a3 ;leading zero flag + + andi 0f000000h,a0 + srl 6*4,a0 + jrnz #no_zero_n3 + move a3,a3 ;leading zero + jrz #skip_zero_n3 +#no_zero_n3 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero_n3 + + move a1,a0 + andi 0f00000h,a0 + srl 5*4,a0 + jrnz #no_zero_n2 + move a3,a3 ;leading zero + jrz #skip_zero_n2 +#no_zero_n2 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero_n2 + + move a1,a0 + andi 0f0000h,a0 + srl 4*4,a0 + jrnz #no_zero_n1 + move a3,a3 ;leading zero + jrz #skip_zero_n1 +#no_zero_n1 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero_n1 + + move a1,a0 + + + andi 0f000h,a0 + srl 3*4,a0 + jrnz #no_zero0 + move a3,a3 ;leading zero + jrz #skip_zero0 +#no_zero0 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero0 + + move a1,a0 + andi 0f00h,a0 + srl 2*4,a0 + jrnz #no_zero1 + move a3,a3 ;leading zero + jrz #skip_zero1 +#no_zero1 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero1 + + move a1,a0 + andi 0f0h,a0 + srl 1*4,a0 + jrnz #no_zero2 + move a3,a3 ;leading zero + jrz #skip_zero2 +#no_zero2 + inc a3 + addi '0',a0 + movb a0,*a2 + addk 8,a2 +#skip_zero2 + + move a1,a0 + andi 0fh,a0 + addi '0',a0 + movb a0,*a2 + addk 8,a2 + clr a0 + movb a0,*a2 ;null terminate string + + rets + + +#***************************************************************************** +* +* INPUT: a0 = number to convert +* converts value in A0 to an decimal ASCII % string in message_buffer2 +* range 000-999 +* +*----------------------------------------------------------------------------- + + SUBRP dec_to_pct + + calla BINBCD ;dec number in A0 + move a0,a1 + movi message_buffer2,a2 + + andi 0f00h,a0 + srl 2*4,a0 + addi '0',a0 + movb a0,*a2 + addk 8,a2 + + move a1,a0 + andi 0f0h,a0 + srl 1*4,a0 + addi '0',a0 + movb a0,*a2 + addk 8,a2 + + move a1,a0 + andi 0fh,a0 + addi '0',a0 + movb a0,*a2 + addk 8,a2 + clr a0 + movb a0,*a2 ;null terminate string + + rets + + +#***************************************************************************** +* +* copies string in message_buffer2 to message_buffer +* +*----------------------------------------------------------------------------- + + SUBRP copy_string + + movi message_buffer-8,a2 + movi message_buffer2-8,a3 + +#next_char + addk 8,a2 + addk 8,a3 + movb *a3,*a2 + movb *a3,a0 ;NULL? + jrnz #next_char + + rets + +#***************************************************************************** +* +* concatenates string in message_buffer2 to string in message_buffer +* +*----------------------------------------------------------------------------- + + SUBRP concat_string + + movi message_buffer-8,a2 + movi message_buffer2-8,a3 +#next_char + addk 8,a2 + movb *a2,a0 + jrnz #next_char + subk 8,a2 + +#next_char2 + addk 8,a2 + addk 8,a3 + movb *a3,*a2 + movb *a3,a0 ;NULL? + jrnz #next_char2 + + rets + +#***************************************************************************** +* +* INPUT: a4 = * null terminated rom string +* +* copies string in rom to message_buffer +* +*----------------------------------------------------------------------------- + + SUBRP copy_rom_string + + movi message_buffer-8,a1 + + subk 8,a4 + +#next_char + addk 8,a1 + addk 8,a4 + movb *a4,*a1 + movb *a4,a0 ;NULL ? + jrnz #next_char + + rets + +#***************************************************************************** +* +* INPUT: a4 = * null terminated rom string +* +* concatenates string in rom to string in message_buffer +* +*----------------------------------------------------------------------------- + + SUBRP concat_rom_string + + movi message_buffer-8,a1 +#next_char + addk 8,a1 + movb *a1,a0 + jrnz #next_char + + subk 8,a1 + subk 8,a4 + +#next_char2 + addk 8,a1 + addk 8,a4 + movb *a4,*a1 + movb *a4,a0 ;NULL ? + jrnz #next_char2 + + rets + +#***************************************************************************** +* +* INPUT: a4 = * NULL terminated ASCII string (print_string2) +* +* RETURN: a2 = width of string in pixels +* +*----------------------------------------------------------------------------- + + SUBRP get_string_len + + movi message_buffer,a4 +get_string_len2 + clr a2 + subk 8,a4 +#next_char + addk 8,a4 + movb *a4,a0 + andi 0ffh,a0 + jrz #done + cmpi 1,a0 + jreq #done + cmpi 32,a0 + jrne #no_space + move @mess_space_width,a0 + add a0,a2 + jruc #next_char +#no_space + sll 5,a0 ;x 32 bits + move @message_ascii,a1,L + add a1,a0 + move *a0,a1,L ;* image + jrz #next_char + MOVE @IGNORE_CHAR_WIDTH,A0 + JRNZ #IGNORE_IT + move *a1,a0 ;image width + add a0,a2 +#IGNORE_IT + move @mess_spacing,a0 + add a0,a2 + jruc #next_char + +#done + move @mess_spacing,a0 + sub a0,a2 + rets + +#***************************************************************************** +* +* INPUT: a4 = * NULL terminated ASCII string (print_string_C2) +* centers & prints a text string +* +*----------------------------------------------------------------------------- + + SUBRP print_string_C + + movi message_buffer,a4 + movi #center_justify,a0 + move a0,@mess_justify,L ;justification method + callr #center_justify + callr print_string2b + rets + +print_string_C2 + movi #center_justify,a0 + move a0,@mess_justify,L ;justification method + callr #center_justify + callr print_string2b + rets + + SUBR print_string_Z2 + movi message_buffer,a4 + movi #center_justify,a0 + move a0,@mess_justify,L ;justification method + callr #center_justify + callr print_string_with_zb + rets + +#center_justify + PUSH a2,a4 + callr get_string_len2 + srl 1,a2 ;/2 + move @mess_cursx,a0 + sub a2,a0 ;- string_width/2 + move a0,@mess_cursx2 ;message cursor pos X + PULL a2,a4 + rets + +#***************************************************************************** +* +* INPUT: a4 = * NULL terminated ASCII string (print_string_C2) +* right justifies & prints a text string +* +*----------------------------------------------------------------------------- + + SUBRP print_string_R + + movi message_buffer,a4 + movi #right_justify,a0 + move a0,@mess_justify,L ;justification method + callr #right_justify + callr print_string2b + rets + +print_string_R2 + movi #right_justify,a0 + move a0,@mess_justify,L ;justification method + callr #right_justify + callr print_string2b + rets + +#right_justify + PUSH a2,a4 + callr get_string_len2 + move @mess_cursx,a0 + sub a2,a0 ;- string_width/2 + move a0,@mess_cursx2 ;message cursor pos X + PULL a2,a4 + rets + +#***************************************************************************** +* +* INPUT: a4 = * NULL terminated ASCII string (print_string2) +* +*----------------------------------------------------------------------------- + +#left_justify + move @mess_cursx,a0 + move a0,@mess_cursx2 + rets + + SUBRP print_string + + movi message_buffer,a4 + +print_string2 + movi #left_justify,a0 + move a0,@mess_justify,L ;justification method + move @mess_cursx,a0 + move a0,@mess_cursx2 +print_string2b + + subk 8,a4 +#next_char + addk 8,a4 + movb *a4,a0 + andi 0ffh,a0 + jrz #done + cmpi 1,a0 + jrne #no_newline +;newline + move @mess_line_spacing,a0 + move @mess_cursy,a1 + add a0,a1 + move a1,@mess_cursy + + move @mess_justify,a0,L ;justification method + addi 8,a4 ;skip newline char + call a0 + subi 8,a4 + jruc #next_char +#no_newline + cmpi 32,a0 + jrne #no_space +;space + move @mess_space_width,a0 + move @mess_cursx2,a1 + add a0,a1 + move a1,@mess_cursx2 + jruc #next_char +#no_space + sll 5,a0 ;x 32 bits + move @message_ascii,a1,L + add a1,a0 + move *a0,a2,L ;* image + jrz #next_char + + PUSH a4,a8 + move @message_palette,b0,L ;* palette + move @mess_cursx2,a0 + sll 16,a0 ;x val + move @mess_cursy,a1 + sll 16,a1 ;y val +; movi 120,a3 ;z pos + movi 20000,a3 ;Z + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + move @mess_objid,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJP + move @mess_cursx2,a1 + MOVE @IGNORE_CHAR_WIDTH,A0 + JRNZ #IGNORE_IT + move *a8(OSIZEX),a0 + add a0,a1 +#IGNORE_IT + move @mess_spacing,a0 + add a0,a1 + move a1,@mess_cursx2 + PULL a4,a8 + jruc #next_char + +#done + rets +#* +#left_justify + move @mess_cursx,a0 + move a0,@mess_cursx2 + rets + + SUBRP print_string_with_z + + movi message_buffer,a4 + + movi #left_justify,a0 + move a0,@mess_justify,L ;justification method + move @mess_cursx,a0 + move a0,@mess_cursx2 + SUBRP print_string_with_zb + + subk 8,a4 +#next_char + addk 8,a4 + movb *a4,a0 + andi 0ffh,a0 + jrz #done + cmpi 1,a0 + jrne #no_newline +;newline + move @mess_line_spacing,a0 + move @mess_cursy,a1 + add a0,a1 + move a1,@mess_cursy + + move @mess_justify,a0,L ;justification method + addi 8,a4 ;skip newline char + call a0 + subi 8,a4 + jruc #next_char +#no_newline + cmpi 32,a0 + jrne #no_space +;space + move @mess_space_width,a0 + move @mess_cursx2,a1 + add a0,a1 + move a1,@mess_cursx2 + jruc #next_char +#no_space + sll 5,a0 ;x 32 bits + move @message_ascii,a1,L + add a1,a0 + move *a0,a2,L ;* image + jrz #next_char + + PUSH a4,a8 + move @message_palette,b0,L ;* palette + move @mess_cursx2,a0 + sll 16,a0 ;x val + move @mess_cursy,a1 + sll 16,a1 ;y val +; movi 120,a3 ;z pos +; movi 20000,a3 ;Z + move @mess_z,a3,L + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + move @mess_objid,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJP + move @mess_cursx2,a1 + MOVE @IGNORE_CHAR_WIDTH,A0 + JRNZ #IGNORE_IT + move *a8(OSIZEX),a0 + add a0,a1 +#IGNORE_IT + move @mess_spacing,a0 + add a0,a1 + move a1,@mess_cursx2 + PULL a4,a8 + jruc #next_char + +#done + rets + +#***************************************************************************** +* +* INPUT : a2 = * to message +* +*----------------------------------------------------------------------------- + + SUBRP setup_message + + movi TYPTEXT,a0 + move a0,@mess_objid ;OBJ ID's for text + + move *a2+,a0,L ;* ascii lookup table + move a0,@message_ascii,L ; + move *a2+,a0 ;space char width + move a0,@mess_space_width ; + move *a2+,a0 ;spacing between chars + move a0,@mess_spacing ; + move *a2+,a0 ;message cursor pos X + move a0,@mess_cursx ; + move *a2+,a0 ;message cursor pos Y + move a0,@mess_cursy ; + move *a2+,a0,L + move a0,@message_palette,L + movi #rets,a0 + move a0,@mess_justify,L ;justification method +#rets + rets + + +#***************************************************************************** +* +* INPUT : a2 = * to message +* +*----------------------------------------------------------------------------- + + SUBRP print_message + + PUSH a4,a5,a6,a7,a8,a9,a10,a11 + + movi TYPTEXT,a0 + move a0,@mess_objid ;OBJ ID's for text + + move *a2+,a0,L ;* ascii lookup table + move a0,@message_ascii,L ; + move *a2+,a0 ;space char width + move a0,@mess_space_width ; + move *a2+,a0 ;spacing between chars + move a0,@mess_spacing ; + move *a2+,a0 ;message cursor pos X + move a0,@mess_cursx ; + move *a2+,a0 ;message cursor pos Y + move a0,@mess_cursy ; + move *a2+,a0,L + move a0,@message_palette,L + move *a2+,a0,L ;print method + + move a2,a4 ;* text string + call a0 + + PULL a4,a5,a6,a7,a8,a9,a10,a11 + rets + + +#***************************************************************************** + +init_convert_table + .word 'A','B','C','D','E','F','G','H' + .word 'I','J','K','L','M','N','O','P' + .word 'Q','R','S','T','U','V','W','X' + .word 'Y','Z',' ' + +#***************************************************************************** + +font9_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long FNT9_SPC,FNT9_DEL,FNT9_END,0,0,0,0,0 ;$10 SPC,BAK,END + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,FNT9_EXP,0,0,0,0,0,FNT9_APO ;$20 SP! " # $ % & ' + .long 0,0,0,0,0,0,FNT9_PER,0 ;$28 ( ) * + , - . / + .long FNT9_0,FNT9_1,FNT9_2,FNT9_3,FNT9_4,FNT9_5,FNT9_6,FNT9_7 ;$30 0 1 2 3 4 5 6 7 + .long FNT9_8,FNT9_9,FNT9_COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,FNT9_A,FNT9_B,FNT9_C,FNT9_D,FNT9_E,FNT9_F,FNT9_G ;$40 @ A B C D E F G + .long FNT9_H,FNT9_I,FNT9_J,FNT9_K,FNT9_L,FNT9_M,FNT9_N,FNT9_O ;$48 H I J K L M N O + .long FNT9_P,FNT9_Q,FNT9_R,FNT9_S,FNT9_T,FNT9_U,FNT9_V,FNT9_W ;$50 P Q R S T U V W + .long FNT9_X,FNT9_Y,FNT9_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,FNT9_A,FNT9_B,FNT9_C,FNT9_D,FNT9_E,FNT9_F,FNT9_G ;$60 ` a b c d e f g + .long FNT9_H,FNT9_I,FNT9_J,FNT9_K,FNT9_L,FNT9_M,FNT9_N,FNT9_O ;$68 h i j k l m n o + .long FNT9_P,FNT9_Q,FNT9_R,FNT9_S,FNT9_T,FNT9_U,FNT9_V,FNT9_W ;$70 p q r s t u v w + .long FNT9_X,FNT9_Y,FNT9_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +font9A_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long FNT9_SPC,FNT9_DEL,FNT9_END,0,0,0,0,0 ;$10 SPC,BAK,END + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,FNT9_EXP,0,0,0,0,0,FNT9_APO ;$20 SP! " # $ % & ' + .long 0,0,0,0,0,0,FNT9_PER,0 ;$28 ( ) * + , - . / + .long FNT9_0A,FNT9_1A,FNT9_2A,FNT9_3A,FNT9_4A,FNT9_5A,FNT9_6A,FNT9_7A ;$30 0 1 2 3 4 5 6 7 + .long FNT9_8A,FNT9_9A,FNT9_COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,FNT9_A,FNT9_B,FNT9_C,FNT9_D,FNT9_E,FNT9_F,FNT9_G ;$40 @ A B C D E F G + .long FNT9_H,FNT9_I,FNT9_J,FNT9_K,FNT9_L,FNT9_M,FNT9_N,FNT9_O ;$48 H I J K L M N O + .long FNT9_P,FNT9_Q,FNT9_R,FNT9_S,FNT9_T,FNT9_U,FNT9_V,FNT9_W ;$50 P Q R S T U V W + .long FNT9_X,FNT9_Y,FNT9_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,FNT9_A,FNT9_B,FNT9_C,FNT9_D,FNT9_E,FNT9_F,FNT9_G ;$60 ` a b c d e f g + .long FNT9_H,FNT9_I,FNT9_J,FNT9_K,FNT9_L,FNT9_M,FNT9_N,FNT9_O ;$68 h i j k l m n o + .long FNT9_P,FNT9_Q,FNT9_R,FNT9_S,FNT9_T,FNT9_U,FNT9_V,FNT9_W ;$70 p q r s t u v w + .long FNT9_X,FNT9_Y,FNT9_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +font18_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,WGSF18EXC,0,0,0,0,0,0 ;$20 SP! " # $ % & ' + .long 0,0,0,0,WGSF18COM,0,WGSF18PER,0 ;$28 ( ) * + , - . / + .long WGSF18_0,WGSF18_1,WGSF18_2,WGSF18_3,WGSF18_4,WGSF18_5,WGSF18_6,WGSF18_7 ;$30 0 1 2 3 4 5 6 7 + .long WGSF18_8,WGSF18_9,0,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,WGSF18_A,WGSF18_B,WGSF18_C,WGSF18_D,WGSF18_E,WGSF18_F,WGSF18_G ;$40 @ A B C D E F G + .long WGSF18_H,WGSF18_I,WGSF18_J,WGSF18_K,WGSF18_L,WGSF18_M,WGSF18_N,WGSF18_O ;$48 H I J K L M N O + .long WGSF18_P,WGSF18_Q,WGSF18_R,WGSF18_S,WGSF18_T,WGSF18_U,WGSF18_V,WGSF18_W ;$50 P Q R S T U V W + .long WGSF18_X,WGSF18_Y,WGSF18_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,WGSF18_A,WGSF18_B,WGSF18_C,WGSF18_D,WGSF18_E,WGSF18_F,WGSF18_G ;$60 ` a b c d e f g + .long WGSF18_H,WGSF18_I,WGSF18_J,WGSF18_K,WGSF18_L,WGSF18_M,WGSF18_N,WGSF18_O ;$68 h i j k l m n o + .long WGSF18_P,WGSF18_Q,WGSF18_R,WGSF18_S,WGSF18_T,WGSF18_U,WGSF18_V,WGSF18_W ;$70 p q r s t u v w + .long WGSF18_X,WGSF18_Y,WGSF18_Z,0,0,0,0,0 ;$78 x y z { | } ~ + + +osgemd_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long OSGEMD_SPC,OSGEMD_DEL,OSGEMD_END,0,0,0,0,0 ;$10 SPC,BAK,END + .long 0,0,0,0,0,0,0,0 ;$18 +; .long 0,OSGEMD_EXP,0,OSGEMD_NUM,OSGEMD_DOL,0,OSGEMD_AND,OSGEMD_APO ;$20 SP! " # $ % & ' + .long 0,OSGEMD_EXP,0,OSGEMD_NUM,OSGEMD_DOL,OSGEMD_PCT,OSGEMD_AND,OSGEMD_APO ;$20 SP! " # $ % & ' + .long OSGEMD_OBR,OSGEMD_CBR,0,0,0,OSGEMD_DAS,OSGEMD_DOT,OSGEMD_SLS ;$28 ( ) * + , - . / + .long OSGEMD_0,OSGEMD_1,OSGEMD_2,OSGEMD_3,OSGEMD_4,OSGEMD_5,OSGEMD_6,OSGEMD_7 ;$30 0 1 2 3 4 5 6 7 + .long OSGEMD_8,OSGEMD_9,OSGEMD_COL,0,0,0,0,OSGEMD_QUE ;$38 8 9 : ; < - > ? + .long 0,OSGEMD_A,OSGEMD_B,OSGEMD_C,OSGEMD_D,OSGEMD_E,OSGEMD_F,OSGEMD_G ;$40 @ A B C D E F G + .long OSGEMD_H,OSGEMD_I,OSGEMD_J,OSGEMD_K,OSGEMD_L,OSGEMD_M,OSGEMD_N,OSGEMD_O ;$48 H I J K L M N O + .long OSGEMD_P,OSGEMD_Q,OSGEMD_R,OSGEMD_S,OSGEMD_T,OSGEMD_U,OSGEMD_V,OSGEMD_W ;$50 P Q R S T U V W + .long OSGEMD_X,OSGEMD_Y,OSGEMD_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,OSGEMD_A,OSGEMD_B,OSGEMD_C,OSGEMD_D,OSGEMD_E,OSGEMD_F,OSGEMD_G ;$60 ` a b c d e f g + .long OSGEMD_H,OSGEMD_I,OSGEMD_J,OSGEMD_K,OSGEMD_L,OSGEMD_M,OSGEMD_N,OSGEMD_O ;$68 h i j k l m n o + .long OSGEMD_P,OSGEMD_Q,OSGEMD_R,OSGEMD_S,OSGEMD_T,OSGEMD_U,OSGEMD_V,OSGEMD_W ;$70 p q r s t u v w + .long OSGEMD_X,OSGEMD_Y,OSGEMD_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +;sgmd8_ascii +; .long 0,0,0,0,0,0,0,0 ;$00 +; .long 0,0,0,0,0,0,0,0 ;$08 +; .long 0,0,0,0,0,0,0,0 ;$10 +; .long 0,0,0,0,0,0,0,0 ;$18 +; .long 0,SGMD8_EXP,0,SGMD8_NUM,0,SGMD8_PCT,SGMD8_AND,SGMD8_APO ;$20 SP! " # $ % & ' +; .long SGMD8_OBR,SGMD8_CBR,0,0,SGMD8_COM,SGMD8_DAS,SGMD8_DOT,SGMD8_SLS ;$28 ( ) * + , - . / +; .long SGMD8_0,SGMD8_1,SGMD8_2,SGMD8_3,SGMD8_4,SGMD8_5,SGMD8_6,SGMD8_7 ;$30 0 1 2 3 4 5 6 7 +; .long SGMD8_8,SGMD8_9,SGMD8_COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? +; .long 0,SGMD8_A,SGMD8_B,SGMD8_C,SGMD8_D,SGMD8_E,SGMD8_F,SGMD8_G ;$40 @ A B C D E F G +; .long SGMD8_H,SGMD8_I,SGMD8_J,SGMD8_K,SGMD8_L,SGMD8_M,SGMD8_N,SGMD8_O ;$48 H I J K L M N O +; .long SGMD8_P,SGMD8_Q,SGMD8_R,SGMD8_S,SGMD8_T,SGMD8_U,SGMD8_V,SGMD8_W ;$50 P Q R S T U V W +; .long SGMD8_X,SGMD8_Y,SGMD8_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ +; .long 0,SGMD8_A,SGMD8_B,SGMD8_C,SGMD8_D,SGMD8_E,SGMD8_F,SGMD8_G ;$60 ` a b c d e f g +; .long SGMD8_H,SGMD8_I,SGMD8_J,SGMD8_K,SGMD8_L,SGMD8_M,SGMD8_N,SGMD8_O ;$68 h i j k l m n o +; .long SGMD8_P,SGMD8_Q,SGMD8_R,SGMD8_S,SGMD8_T,SGMD8_U,SGMD8_V,SGMD8_W ;$70 p q r s t u v w +; .long SGMD8_X,SGMD8_Y,SGMD8_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +osgmd8_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,osgmd8_EXP,0,osgmd8_NUM,0,osgmd8_PCT,osgmd8_AND,osgmd8_APO ;$20 SP! " # $ % & ' + .long osgmd8_OBR,osgmd8_CBR,0,0,osgmd8_COM,osgmd8_DAS,osgmd8_DOT,osgmd8_SLS ;$28 ( ) * + , - . / + .long osgmd8_0,osgmd8_1,osgmd8_2,osgmd8_3,osgmd8_4,osgmd8_5,osgmd8_6,osgmd8_7 ;$30 0 1 2 3 4 5 6 7 + .long osgmd8_8,osgmd8_9,osgmd8_COL,0,osgmd8_OPQ,0,osgmd8_CLQ,0 ;$38 8 9 : ; < - > ? + .long 0,osgmd8_A,osgmd8_B,osgmd8_C,osgmd8_D,osgmd8_E,osgmd8_F,osgmd8_G ;$40 @ A B C D E F G + .long osgmd8_H,osgmd8_I,osgmd8_J,osgmd8_K,osgmd8_L,osgmd8_M,osgmd8_N,osgmd8_O ;$48 H I J K L M N O + .long osgmd8_P,osgmd8_Q,osgmd8_R,osgmd8_S,osgmd8_T,osgmd8_U,osgmd8_V,osgmd8_W ;$50 P Q R S T U V W + .long osgmd8_X,osgmd8_Y,osgmd8_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,osgmd8_A,osgmd8_B,osgmd8_C,osgmd8_D,osgmd8_E,osgmd8_F,osgmd8_G ;$60 ` a b c d e f g + .long osgmd8_H,osgmd8_I,osgmd8_J,osgmd8_K,osgmd8_L,osgmd8_M,osgmd8_N,osgmd8_O ;$68 h i j k l m n o + .long osgmd8_P,osgmd8_Q,osgmd8_R,osgmd8_S,osgmd8_T,osgmd8_U,osgmd8_V,osgmd8_W ;$70 p q r s t u v w + .long osgmd8_X,osgmd8_Y,osgmd8_Z,osgmd8_OPQ,0,osgmd8_CLQ,0,0 ;$78 x y z { | } ~ + +wgsf24_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,WGSF24EXC,0,0,0,0,0,0 ;$20 SP! " # $ % & ' + .long 0,0,0,0,WGSF24COM,0,WGSF24PER,0 ;$28 ( ) * + , - . / + .long WGSF24_0,WGSF24_1,WGSF24_2,WGSF24_3,WGSF24_4,WGSF24_5,WGSF24_6,WGSF24_7 ;$30 0 1 2 3 4 5 6 7 + .long WGSF24_8,WGSF24_9,0,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,WGSF24_A,WGSF24_B,WGSF24_C,WGSF24_D,WGSF24_E,WGSF24_F,WGSF24_G ;$40 @ A B C D E F G + .long WGSF24_H,WGSF24_I,WGSF24_J,WGSF24_K,WGSF24_L,WGSF24_M,WGSF24_N,WGSF24_O ;$48 H I J K L M N O + .long WGSF24_P,WGSF24_Q,WGSF24_R,WGSF24_S,WGSF24_T,WGSF24_U,WGSF24_V,WGSF24_W ;$50 P Q R S T U V W + .long WGSF24_X,WGSF24_Y,WGSF24_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,WGSF24_A,WGSF24_B,WGSF24_C,WGSF24_D,WGSF24_E,WGSF24_F,WGSF24_G ;$60 ` a b c d e f g + .long WGSF24_H,WGSF24_I,WGSF24_J,WGSF24_K,WGSF24_L,WGSF24_M,WGSF24_N,WGSF24_O ;$68 h i j k l m n o + .long WGSF24_P,WGSF24_Q,WGSF24_R,WGSF24_S,WGSF24_T,WGSF24_U,WGSF24_V,WGSF24_W ;$70 p q r s t u v w + .long WGSF24_X,WGSF24_Y,WGSF24_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +wsf10_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,WSF10EXC,0,WSF10NUM,0,0,0,WSF10APO ;$20 SP! " # $ % & ' + .long 0,0,0,0,WSF10COM,0,WSF10PER,0 ;$28 ( ) * + , - . / + .long WSF10_0,WSF10_1,WSF10_2,WSF10_3,WSF10_4,WSF10_5,WSF10_6,WSF10_7 ;$30 0 1 2 3 4 5 6 7 + .long WSF10_8,WSF10_9,0,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,WSF10_A,WSF10_B,WSF10_C,WSF10_D,WSF10_E,WSF10_F,WSF10_G ;$40 @ A B C D E F G + .long WSF10_H,WSF10_I,WSF10_J,WSF10_K,WSF10_L,WSF10_M,WSF10_N,WSF10_O ;$48 H I J K L M N O + .long WSF10_P,WSF10_Q,WSF10_R,WSF10_S,WSF10_T,WSF10_U,WSF10_V,WSF10_W ;$50 P Q R S T U V W + .long WSF10_X,WSF10_Y,WSF10_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,WSF10_A,WSF10_B,WSF10_C,WSF10_D,WSF10_E,WSF10_F,WSF10_G ;$60 ` a b c d e f g + .long WSF10_H,WSF10_I,WSF10_J,WSF10_K,WSF10_L,WSF10_M,WSF10_N,WSF10_O ;$68 h i j k l m n o + .long WSF10_P,WSF10_Q,WSF10_R,WSF10_S,WSF10_T,WSF10_U,WSF10_V,WSF10_W ;$70 p q r s t u v w + .long WSF10_X,WSF10_Y,WSF10_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +wsf14_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,WSF14EXC,0,WSF14NUM,0,0,0,WSF14APO ;$20 SP! " # $ % & ' + .long 0,0,0,0,WSF14COM,0,WSF14PER,0 ;$28 ( ) * + , - . / + .long WSF14_0,WSF14_1,WSF14_2,WSF14_3,WSF14_4,WSF14_5,WSF14_6,WSF14_7 ;$30 0 1 2 3 4 5 6 7 + .long WSF14_8,WSF14_9,WSF14COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,WSF14_A,WSF14_B,WSF14_C,WSF14_D,WSF14_E,WSF14_F,WSF14_G ;$40 @ A B C D E F G + .long WSF14_H,WSF14_I,WSF14_J,WSF14_K,WSF14_L,WSF14_M,WSF14_N,WSF14_O ;$48 H I J K L M N O + .long WSF14_P,WSF14_Q,WSF14_R,WSF14_S,WSF14_T,WSF14_U,WSF14_V,WSF14_W ;$50 P Q R S T U V W + .long WSF14_X,WSF14_Y,WSF14_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,WSF14_A,WSF14_B,WSF14_C,WSF14_D,WSF14_E,WSF14_F,WSF14_G ;$60 ` a b c d e f g + .long WSF14_H,WSF14_I,WSF14_J,WSF14_K,WSF14_L,WSF14_M,WSF14_N,WSF14_O ;$68 h i j k l m n o + .long WSF14_P,WSF14_Q,WSF14_R,WSF14_S,WSF14_T,WSF14_U,WSF14_V,WSF14_W ;$70 p q r s t u v w + .long WSF14_X,WSF14_Y,WSF14_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +ogmd10_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,osgmd10_EXP,0,osgmd10_NUM,osgmd10_DOL,osgmd10_PCT,osgmd10_AND,osgmd10_APO ;$20 SP! " # $ % & ' + .long osgmd10_OBR,osgmd10_CBR,0,0,osgmd10_COM,osgmd10_DAS,osgmd10_DOT,osgmd10_SLS ;$28 ( ) * + , - . / + .long osgmd10_0,osgmd10_1,osgmd10_2,osgmd10_3,osgmd10_4,osgmd10_5,osgmd10_6,osgmd10_7 ;$30 0 1 2 3 4 5 6 7 + .long osgmd10_8,osgmd10_9,osgmd10_COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,osgmd10_A,osgmd10_B,osgmd10_C,osgmd10_D,osgmd10_E,osgmd10_F,osgmd10_G ;$40 @ A B C D E F G + .long osgmd10_H,osgmd10_I,osgmd10_J,osgmd10_K,osgmd10_L,osgmd10_M,osgmd10_N,osgmd10_O ;$48 H I J K L M N O + .long osgmd10_P,osgmd10_Q,osgmd10_R,osgmd10_S,osgmd10_T,osgmd10_U,osgmd10_V,osgmd10_W ;$50 P Q R S T U V W + .long osgmd10_X,osgmd10_Y,osgmd10_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,osgmd10_A,osgmd10_B,osgmd10_C,osgmd10_D,osgmd10_E,osgmd10_F,osgmd10_G ;$60 ` a b c d e f g + .long osgmd10_H,osgmd10_I,osgmd10_J,osgmd10_K,osgmd10_L,osgmd10_M,osgmd10_N,osgmd10_O ;$68 h i j k l m n o + .long osgmd10_P,osgmd10_Q,osgmd10_R,osgmd10_S,osgmd10_T,osgmd10_U,osgmd10_V,osgmd10_W ;$70 p q r s t u v w + .long osgmd10_X,osgmd10_Y,osgmd10_Z,0,0,0,0,0 ;$78 x y z { | } ~ + +win_ascii + .long 0,0,0,0,0,0,0,0 ;$00 + .long 0,0,0,0,0,0,0,0 ;$08 + .long 0,0,0,0,0,0,0,0 ;$10 + .long 0,0,0,0,0,0,0,0 ;$18 + .long 0,osgmd10_EXP,0,osgmd10_NUM,osgmd10_DOL,osgmd10_PCT,osgmd10_AND,osgmd10_APO ;$20 SP! " # $ % & ' + .long osgmd10_OBR,osgmd10_CBR,0,0,osgmd10_COM,osgmd10_DAS,osgmd10_DOT,osgmd10_SLS ;$28 ( ) * + , - . / + .long WFONT_0,WFONT_1,WFONT_2,WFONT_3,WFONT_4,WFONT_5,WFONT_6,WFONT_7 ;$30 0 1 2 3 4 5 6 7 + .long WFONT_8,WFONT_9,osgmd10_COL,0,0,0,0,0 ;$38 8 9 : ; < - > ? + .long 0,osgmd10_A,osgmd10_B,osgmd10_C,osgmd10_D,osgmd10_E,osgmd10_F,osgmd10_G ;$40 @ A B C D E F G + .long osgmd10_H,osgmd10_I,osgmd10_J,osgmd10_K,osgmd10_L,osgmd10_M,osgmd10_N,osgmd10_O ;$48 H I J K L M N O + .long osgmd10_P,osgmd10_Q,osgmd10_R,osgmd10_S,osgmd10_T,osgmd10_U,osgmd10_V,osgmd10_W ;$50 P Q R S T U V W + .long osgmd10_X,osgmd10_Y,osgmd10_Z,0,0,0,0,0 ;$58 X Y Z [ \ ] ^ _ + .long 0,osgmd10_A,osgmd10_B,osgmd10_C,osgmd10_D,osgmd10_E,osgmd10_F,osgmd10_G ;$60 ` a b c d e f g + .long osgmd10_H,osgmd10_I,osgmd10_J,osgmd10_K,osgmd10_L,osgmd10_M,osgmd10_N,osgmd10_O ;$68 h i j k l m n o + .long osgmd10_P,osgmd10_Q,osgmd10_R,osgmd10_S,osgmd10_T,osgmd10_U,osgmd10_V,osgmd10_W ;$70 p q r s t u v w + .long osgmd10_X,osgmd10_Y,osgmd10_Z,0,0,0,0,0 ;$78 x y z { | } ~ + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/SWEAT.EQU b/SWEAT.EQU new file mode 100755 index 0000000..fcfbf40 --- /dev/null +++ b/SWEAT.EQU @@ -0,0 +1,16 @@ +********************************** +* Sweat equates used in animations +********************************** + +SW_SIZE .EQU 040H + +SPITUP_SWEAT .EQU SW_SIZE*0 +SPRAYA_SWEAT .EQU SW_SIZE*1 +SPRAYC_SWEAT .EQU SW_SIZE*3 +COUGH_SWEAT .EQU SW_SIZE*4 +SPRAYD_SWEAT .EQU SW_SIZE*5 + +SWEAT_PER .EQU 700 + + .GLOBAL CREATE_SWEAT + \ No newline at end of file diff --git a/SYS.EQU b/SYS.EQU new file mode 100755 index 0000000..d79109b --- /dev/null +++ b/SYS.EQU @@ -0,0 +1,327 @@ +*THE T/Z-UNIT SYSTEM SPECIFIC EQUATES +*.Last mod - 11/30/92 12:09 + +WWFUNIT .equ 1 + +RR_AWARD .equ 1 + +YUNIT .equ 1 +TUNIT .equ 1 ;YUNIT also on +TUNITDB .equ 0 ;TUNIT debugging +TUNIT2 .equ 1 ;TUNIT also on + +DEBUG .equ 0 ;0 or 1 +;SND_DEBUG .equ 0 ;This flag is in SNDDEBUG.H + +IMGVIEW .equ 0 ;0 or 1 + +PAL64 .equ 0 ;1 if 64x64 pals + +*FOLLOWING SYMBOLS DON'T ACTUALLY WORK, YET! +GERMAN .equ 0 ;IF 1 THEN GERMAN TEXT +PRINTER .equ 0 ;IF 1 THEN PRINTER IS INSTALLED + +FULLPRICE .equ 1 ;IF 1, INSTALL ALL COINAGE MODES + + +;PIXBLT stuff +PXSIZE .equ 8 +SCRN_PTCH .equ 512*PXSIZE + +;System memory map + + + .if WWFUNIT +VMUX_CONTROL .equ 1800000h ;VMUX Control Register +VMUX_BREG0 .equ 1820000h ;VMUX Background Register 0 +VMUX_BREG1 .equ 1830000h ;VMUX Background Register 1 +VMUX_PALMATCH .equ 1840000h ;VMUX Palette Match Register +VMUX_STATUS .equ 1800000h ;VMUX Status Register + +VMUX_MODE0 .equ 0 ;I/O Mode 0 +VMUX_MODE1 .equ 1 ;I/O Mode 1 +VMUX_MODE2 .equ 2 ;I/O Mode 2 +VMUX_MODE3 .equ 3 ;I/O Mode 3 +VMUX_MODE4 .equ 4 ;I/O Mode 4 +VMUX_MODE5 .equ 5 ;I/O Mode 5 +VMUX_MODE6 .equ 6 ;I/O Mode 6 +VMUX_MODE7 .equ 7 ;I/O Mode 7 + +VMUX_IODISABLE .equ 8 ;I/O Disable +VMUX_ADDRGENENB .equ 16 ;Address Generator Enable + +VMUX_VKEY0 .equ 0 ;Video Key 0 +VMUX_VKEY1 .equ 32 ;Video Key 0 +VMUX_VKEY2 .equ 64 ;Video Key 0 +VMUX_VKEY3 .equ 96 ;Video Key 0 +VMUX_VKEY4 .equ 128 ;Video Key 0 +VMUX_VKEY5 .equ 160 ;Video Key 0 +VMUX_VKEY6 .equ 192 ;Video Key 0 + +VMUX_PALMENABL .equ 256 ;Palette Match Enable + +VMUX_VDISABLE .equ 512 ;Video Disable + +VMUX_CSWIZZLE .equ 1024 ;Color RAM swizzle on writes + +VMUX_CRAMREAD .equ 2048 ;Force Read of CRAM Pixel Stream + +VMUX_INITMODE .equ VMUX_MODE0|VMUX_VKEY0 + .endif + +SCREEN .equ 0 ;START OF SCREEN MEMORY +SCRNE .equ 200000h ;END OF SCREEN+1 +SCRATCH .equ 1000000h ;START OF SCRATCH +;STCKST .equ 13FB3E0h ;TOP OF STACK +STCKST .equ 13F73E0h ;TOP OF STACK +CMOS .equ 1400000h ;START OF CMOS RAM +CMOSWE .equ CMOS+0ffff0h ;Write enable + + .if TUNIT +COLRAM .equ 1880000h + .elseif YUNIT +COLRAM .equ 1810000h ;Color ram + .else +COLRAM .equ 1800000h + .endif +CYCOLORS .equ COLRAM+3E0h ;COLORS 62 AND 63 (LAST TWO IN PAL!) + +CMAPSEL .equ 1a80080h ;COLOR MAP SELECT (0-15) + .if TUNIT2 +SWITCH .equ 1860000h ;I/O WIDGET BOARD +COINS .equ 1860030h +SWITCH2 .equ 1860010h +DIPSWITCH .equ 1860020h ;DIP SWITCHES +;WATCHDOG .equ 1d81070h ;old +WATCHDOG .equ 1860030h ;new (daughterboard) +WRMISC .equ 1860020h +COIN_COUNTERS .EQU 1860010H ;COIN COUNTER DRIVERS +SNDRSTBIT .equ 16 + .else +SWITCH .equ 1c00000h ;I/O WIDGET BOARD +COINS .equ 1c00010h +SWITCH2 .equ 1c00020h +DIPSWITCH .equ 1c00030h ;DIP SWITCHES + .endif + .if TUNIT2 +SOUND .equ 1680000h ;Auto strobe +SOUNDR .equ 1680000h ;Auto strobe (with wait state) +SOUNDIRQ .equ 1860040h ;* irq input +;B_SDAV .equ 11 ;sound data available bit # (active hi) +;B_SIRQ .equ 10 ;Irq bit # +B_SDAV .equ 10 ;sound data available bit # (active hi) +B_SIRQ .equ 11 ;Irq bit # +SOUNDBIT .equ 0ff00h ;No strobe needed +TALKPORT .equ 1860040h ;Port to find this line +B_WDOG .equ 8 ;(-) For watchdog triggered + .elseif TUNIT +SOUND .equ 1c01030h ;Auto strobe +SOUNDIRQ .equ 1c00050h ;* irq input +B_SIRQ .equ 3 ;Irq bit # +SOUNDBIT .equ 0ff00h ;No strobe needed + .else +SOUND .equ 1e00000h ;Sound I/O; B0-B7=Sound#, B8=Reset (-) +SOUNDIRQ .equ SWITCH+10H ;* irq input +B_SIRQ .equ 14 ;Irq bit # +SOUNDBIT .equ 0fd00h ;B9=Strobe (-) + .endif + + +PIC_COMMAND .equ 01600000h ;PIC Command Port +PIC_DATA .equ PIC_COMMAND ;PIC Data Port +CDI_BIT .equ 13 ;Coindoor Interlock Bit (COIN input) + + +SYSCTRL .equ 1b00000h ;System control latch + ;BIT 2 - LED select (1) + ;BIT 4 - AUTO-ERASE ENABLE(0) + ;BIT 5 - OBJECT PALETTE ENABLE(0) + ;BIT 6 - CMOS page (YUNIT) + ;BIT 7 - CMOS page + + + .if WWFUNIT +IROMPG0 .equ 0000h ;Image ROM Bank 0 +IROMPG1 .equ 0100h ;Image ROM Bank 1 +IROMPG2 .equ 0200h ;Image ROM Bank 2 +IROMPG3 .equ 0300h ;Image ROM Bank 3 +LEDON .equ 0400h ;Turn LED ON +PALENB .equ 0800h ;Enable Color Palette +WROMINTDIS .equ 1000h ;Disable Write to ROM Interrupt +WROMINTCLR .equ 2000h ;Clear the Write to ROM Interrupt + .endif + + +IROM .equ 2000000h ;IMAGE ROM +ROM .equ 7800000h ;PROGRAM ROM + +;System stuff +AUTOERAS .equ 10h +OBJPALET .equ 20h + .if DEBUG + .if WWFUNIT +SYSCINIT .equ 0A87fh ;LED OFF, IROM PAGE 0, PALETTE ON, WRROMINT ON, CLEAR INT +;SYSCINIT .equ 0987fh ;LED OFF, IROM PAGE 0, PALETTE ON, WRROMINT OFF, CLEAR INT + .else +SYSCINIT .equ 0ffb8h ;INITIAL SYSCTRL VALUE + .endif + .else + .if WWFUNIT +SYSCINIT .equ 0987fh ;LED OFF, IROM PAGE 0, PALETTE ON, WRROMINT ON + .else +SYSCINIT .equ 0fff8h ;INITIAL SYSCTRL VALUE + .endif + .endif + +WPIROM .equ 80h + +ERASECOL .equ 0 ;Screen erase color # +ERASELOC .equ COLRAM ;Screen erase color loc + +;DMA stuff +DMAREGS .equ 1a000c0h ;Bottom of dma registers for mmtm + +DMAOFFST .equ 1a00000h ; DMA offset +DMACTRL .equ 1a00010h ; DMA control. BIT 15: + ; 0=DMA IDLE (R), 1=DMA BUSY (R) + ; 0=STOP DMA (W*2), 1=START DMA (W) +DMAGO .equ DMACTRL ; FOR SYSCHECK +DMASAGL .equ 1a00020h ; *Data start (low 16 bits) +DMASAGH .equ 1a00030h ; *Data start (high 16 bits) +DMAHORIZ .equ 1a00040h ; Dest X +DMAVERT .equ 1a00050h ; Dest Y +DMAHSIZE .equ 1a00060h ; WIDTH +DMAVSIZE .equ 1a00070h ; HEIGHT +DMACMAP .equ 1a00080h ; Color map select +DMACONST .equ 1a00090h ; Constant color +DMASCALEX .equ 1a000a0h ; X scale 8:8 +DMASCALEY .equ 1a000b0h ; Y ^ +DMAWINDOW .equ 1a000c0h ; Window LR or TB +DMALT .equ 1a000c0h ; Window [ LEFT : TOP ] +DMARB .equ 1a000d0h ; Window [ RIGHT : BOTTOM ] +DMATEST .equ 1a000e0h ; RESERVED (TEST REGISTER) +DMACONF .equ 1a000f0h ; Config + + + +* LAYOUT OF DMA CONFIG REGISTER +DMAWIN .set 20h ; Bit 5 (0 = rt/lft, 1 = top/bot) +DMACF4 .SET 10H ; BIT 4 TIMING PARAMETER + +SECCHIP .equ 1c00060h ;LOCATION OF SECURITY CHIP JKM 2/13/90 + +;Bits for the dma control word +DMAWZ .equ 8001h ;WRITE ZERO DATA +DMAWNZ .equ 8002h ;WRITE NON-ZERO DATA +DMACZ .equ 8004h ;WRITE CONSTANT ON ZERO DATA +DMACNZ .equ 8008h ;WRITE CONSTANT ON NON-ZERO DATA +DMAWAL .equ 8003h ;WRITE BOTH ZERO & NON-ZERO DATA +DMACAL .equ 800ch ;WRITE CONSTANT ON BOTH ZERO & NON-ZERO DATA + +;IFLAGS bits +FLIPH_IFB .equ 14 +SCALE_IFB .equ 15 + +IPCOUNT .equ -10h ;multi-part block count +;ISIZE .equ 0 +ISIZEX .equ 0 +ISIZEY .equ 10h +IANIOFF .equ 20h +IANIOFFX .equ 20h +IANIOFFY .equ 30h +ISAG .equ 40h +ICTRL .equ 60h +ICMAP .equ 70h +ICPBZ .equ 70h ;multi-part block size + .if 0 +IANI2X .equ 90h +IANI2Y .equ 0a0h +IANI2Z .equ 0b0h +IFLAGS .equ 0c0h +IANI3X .equ 0d0h +IANI3Y .equ 0e0h +IANI3Z .equ 0f0h +IANI3ID .equ 100h +ICBZ .equ 110h ;single part/head part size + .else +IANI2X .equ 70h +IANI2Y .equ 080h +IANI2Z .equ 090h +IFLAGS .equ 0a0h +IANI3X .equ 0b0h +IANI3Y .equ 0c0h +IANI3Z .equ 0d0h +IANI3ID .equ 0e0h +ICBZ .equ 0f0h ;single part/head part size + .endif + +W .equ 0 +L .equ 1 + +*SOUND PROCESSOR EQUATES +NINT .equ 800H ;SOUND NON-INTERRUPTABLE +NINTEQ .equ 400H ;SOUND NON-INTERRUPTABLE BY EQUAL PRIORITY +CHANNEL .equ 0F000H +NOTIME .equ 4000H + +WDOGNUM .equ 1A2B3C4DH ;"SYSTEM INITIALIZED" MARKER + +*FRANIM FLAG MASKS +FLIPBITS equ 4000H +NEWPALET equ 2000H +DELTAXZ equ 1000H +DELTAY equ 800H +*ANIMATION SCRIPT FLAG BIT POSITIONS +BFLIPBIT equ 14 +BNEWPAL equ 13 +BDELTAXZ equ 12 +BDELTAY equ 11 + +*Palette allocator equates + + .if TUNIT +NUMPAL .equ 80 ;Max # pals +NMFPAL .equ 80 ;# foregnd pals +NMBPAL .equ 0 ;# backgnd pals + .else +NUMPAL .equ 16 ;Max # pals +NMFPAL .equ 16 ;# foregnd pals +NMBPAL .equ 0 ;# backgnd pals + .endif + +*struct PAL +PALID .equ 0 ;UHL *palette data +*endstruct + +PALRSIZ .equ 32 ;Size of pal allocation ram + +;Palette transfer ram +PLDCNT .equ 0 ;# colors +PALSRC .equ 10h ;* palette color data +PALDEST .equ 30h ;Destination palette|Start color +PALTSIZ .equ 40h ;Size of each cell +NUMPALT .equ 60 ;# of transfers allowed + +****************************************************************************** + +BIT0 equ 0001h +BIT1 equ 0002h +BIT2 equ 0004h +BIT3 equ 0008h +BIT4 equ 0010h +BIT5 equ 0020h +BIT6 equ 0040h +BIT7 equ 0080h +BIT8 equ 0100h +BIT9 equ 0200h +BIT10 equ 0400h +BIT11 equ 0800h +BIT12 equ 1000h +BIT13 equ 2000h +BIT14 equ 4000h +BIT15 equ 8000h + +****************************************************************************** + + + \ No newline at end of file diff --git a/TABLES.ASM b/TABLES.ASM new file mode 100755 index 0000000..e3c7aab --- /dev/null +++ b/TABLES.ASM @@ -0,0 +1,392 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/7/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "tables.asm" + .title "various data tables" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* ARGUMENTS: a0 = target area +* a11 = * target wrestler process +* a13 = * wrestler process +* +* TRASHES: a0,a1,a14 +* + SUBR set_target_offsets + + + move *a11(WRESTLERNUM),a14 + movi 5,a1 + mpyu a14,a1 + + add a0,a1 ; + target area + movi 3*16,a0 + mpyu a0,a1 ; * 3 WORDS + + move *a11(PLYRMODE),a0 + X32 a0 + addi #mode_table,a0 + move *a0,a0,L + add a0,a1 + + move *a1+,a0 + move a0,*a13(TGT_XOFF) + move *a1+,a0 + move a0,*a13(TGT_YOFF) + move *a1,a0 + move a0,*a13(TGT_ZOFF) + + rets + + +****************************************************************************** +* +* >a0=wrestler ptr, 1 + .ref und_finish2_move + .endif + .endif + .ref finish_completed + .ref p1pins,p2pins + .ref und_coffin_up + .ref close_the_door + .ref wres_mv_done + .ref dead_wrestler + .ref und_2_raise_dead_anim + .ref guy_up,guy_in + .ref BGND_UD1 + .ref KIL1C + .ref RNDRNG0 + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref und_4_block_anim + .ref start_run_anim + + .ref wres_slave_anim + .ref und_zip_anim + + .ref und_stand2_anim,und_stand8_anim + .ref und_stand4_anim,und_stand6_anim + .ref und_torso2_anim,und_torso8_anim + .ref und_torso4_anim,und_torso6_anim + + .ref und_2_to_4_turn_anim,und_8_to_6_turn_anim ;stand + .ref und_4_to_2_turn_anim,und_6_to_8_turn_anim + .ref und_4_to_6_turn_anim,und_6_to_4_turn_anim + .ref und_2_to_8_turn_anim,und_8_to_2_turn_anim + .ref und_4_to_8_turn_anim,und_6_to_2_turn_anim + .ref und_2_to_6_turn_anim,und_8_to_4_turn_anim + + .ref und_2_to_4_turn2_anim,und_8_to_6_turn2_anim ;torso + .ref und_4_to_2_turn2_anim,und_6_to_8_turn2_anim + .ref und_4_to_6_turn2_anim,und_6_to_4_turn2_anim + .ref und_2_to_8_turn2_anim,und_8_to_2_turn2_anim + .ref und_4_to_8_turn2_anim,und_6_to_2_turn2_anim + .ref und_2_to_6_turn2_anim,und_8_to_4_turn2_anim + + .ref und_walk1_f2_anim,und_walk2_f2_anim,und_walk4_f2_anim + .ref und_walk5_f2_anim,und_walk6_f2_anim,und_walk8_f2_anim + + .ref und_walk1_f4_anim,und_walk2_f4_anim,und_walk4_f4_anim + .ref und_walk5_f4_anim,und_walk6_f4_anim,und_walk8_f4_anim + + .ref und_run2_anim + + .ref und_2_punch_anim,und_4_punch_anim + .ref und_2_kick_anim,und_4_kick_anim + + .ref und_2_butt_anim,und_4_butt_anim + .ref und_2_butts_anim,und_4_butts_anim + .ref und_2_knee_anim,und_4_knee_anim + .ref und_4_bigboot_anim + + .ref und_head_hit2_anim,und_head_hit_dizzy_anim + .ref und_2_stomp_anim,und_4_stomp_anim + + .ref und_4_push_anim + .ref und_4_losebal_anim + .ref und_2_slap_anim,und_4_slap_anim + + .ref und_2_grabfling_anim,und_4_grabfling_anim + + .ref und_2_uppercut_anim,und_4_uppercut_anim + .ref und_2_hair_pickup_anim,und_4_hair_pickup_anim + + .ref und_4_pin2_anim,und_2_raise_arm_anim + .ref und_4_raise_arm_anim +; .ref und_ocrun_anim + .ref und_fall_back_anim + +; .ref und_summon_anim,und_summon2_anim + .ref und_getup_anim +; .ref und_4_graboh_anim + .ref und_heldoh_anim + + .ref und_2_super_kick_anim,und_4_super_kick_anim + .ref und_4_knee_fall_anim + .ref und_flying_kick_anim + + .ref und_2_lbowdrop_anim,und_4_lbowdrop_anim + .ref und_flying_butt_drop_anim,und_tbukl_butt_drop_anim + + .ref und_sliding_choke_anim + .ref und_tombstone_smash_anim + .ref und_chokeslam_anim + .ref und_pile_anim + .ref und_neckbreaker_anim + .ref und_2_snapmirror_anim,und_4_snapmirror_anim + .ref und_2_snapmirror2_anim,und_4_snapmirror2_anim + .ref und_climb_down_anim,und_climb_up_anim + .ref und_spirit_push_anim,und_spirit_pull_anim + .ref und_combo_kick_anim,und_combo_punch_anim + .ref und_3_head_hold2_anim + .ref und_3_head_hold_anim + .ref und_neckbreaker2_anim,und_neckbreaker3_anim + .ref und_4_knee_butts_anim + .ref und_3_head_held_stand_anim + .ref und_2_uppercut_anim,und_4_uppercut_anim + .ref und_choke_face_slam_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +und_secret_moves + +;These secret moves are triggered only after a move list seq has ended! You +;can't hold on the last button press and have it trigger! + +;Button held down moves need to be first entry + .long #button_hold + .long #grab_fling + .long #hip_toss + .long #grab_fling2 + .long #hip_toss2 + .long #neck_grab + .long #tomb_smash + .long 0 + +***************************************************************************** +* +* SPECIAL MOVE PROCESSES +* + + SUBR und_smove_table + + .long und_hdhold_neckbrk + .long und_hdhold_faceslam + .long und_hdhold_pile ;(tombstone) + .long und_spirit_pull + .long und_spirit_push + .long und_grab_toss_air + .long und_hdhold_combo1 + .long und_hdhold_combo2 +; .long und_hdhold_anti_combo + .long und_choke_slide + .long std_walk_fast + .long std_taunt + + .if NUM_TAKER_FINISHES + .long und_finish_move1 + .endif + .if NUM_TAKER_FINISHES > 1 + .long und_finish_move2 + .endif + .long 0 + +******************************************************************************* + +#tomb_smash + .word B_SKICK, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_tomb + +#scrt_tomb + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +; calla get_opp_plyrmode +; cmpi MODE_DEAD,a0 +; jrz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + CALLA FIND_AND_KILL_ENDLESS + movi und_tombstone_smash_anim,a0 + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + +******************************************************************************* + +#hip_toss +; .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_hiptoss + + .word B_PUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_hiptoss + +#scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #ck1 + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit + + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #out + +#doit + FACE24 und,snapmirror_anim + calla change_anim1a + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + WRSND W_TAKER,GRABFLING_T1,PUNCH_T2 + + rets +#ck1 + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + jrnz #doit + rets + +******************************************************************************* + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 30 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + move *a13(LAST_HEADHOLD),a14,L + move @PCNT,a0,L + sub a14,a0 + cmpi 2*60,a0 + jrge #ok2 + +;This head grab is too close (in terms of time) to most recent grab + .ref und_3_fake_hold_anim + movi und_3_fake_hold_anim,a0 + calla change_anim1a + rets + +#ok2 + move *a13(CLOSEST_XDIST),a1 + cmpi 85,a1 + jrgt #std_grab + + movi und_3_head_hold2_anim,a0 + calla change_anim1a + rets + +#std_grab + movi und_3_head_hold_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#button_hold + + move *a13(BUT_VAL_UP),a0 + btst PLAYER_PUNCH_BIT,a0 + jrz #no_punch + + move *a13(PLYRNUM),a0 + calla get_punch_dtime + cmpi 110,a0 ;> min? + jrlt #no_punch + + callr scrt_spirit + setc + rets + +#no_punch + clrc + rets + +scrt_spirit + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_HEADHOLD,a0 + jrz #out +; cmpi MODE_RUNNING,a0 +; jrz #out + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out +; cmpi MODE_DEAD,a0 +; jrz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrz #leapbrk + + movi und_neckbreaker2_anim,a0 + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + +#leapbrk +;Sliding neck breaker + movi und_neckbreaker3_anim,a0 + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + + +******************************************************************************* + +#grab_fling2 + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#hip_toss2 + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#scrt_grabfling2 + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrz #yes + rets + +******************************************************************************* + +#grab_fling +; .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_grabfling + + .word B_SPUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_grabfling + +#scrt_grabfling + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + FACE24 und,snapmirror_anim + calla change_anim1a + + clr a0 + move a0,*a13(ATTACH_PROC),L + SETMODE NORMAL + + WRSND W_TAKER,GRABFLING_T1,PUNCH_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_HEADHELD,a0 + jrz #ck2 + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out +#doit0 + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + +; move *a13(LAST_FLING_ATTEMPT),a14,L +; move @PCNT,a0,L +; sub a14,a0 +; cmpi 3*60,a0 +; jrge #ok2a +; +;;This head grab is too close (in terms of time) to most recent grab +; FACE24 und,slap_anim +; calla change_anim1a +; +; WRSND W_TAKER,SPUNCH_T1,SPUNCH_T2 +; rets +; +;#ok2a +; move @PCNT,a14,L ;use 32-bit PCNT! +; move a14,*a13(LAST_FLING_ATTEMPT),L + + FACE24 und,grabfling_anim + calla change_anim1a + + WRSND W_TAKER,GRABFLING_T1,PUNCH_T2 +#out + rets +#ck2 + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + jrnz #doit0 + rets + + .if NUM_TAKER_FINISHES + +#****************************************************************************** +* +* Shake world - shakes the world around for takers finish move +* + SUBRP shake_world + move @WORLDTLX,a8,L + move @WORLDTLY,a9,L +#sw_loop + movk 4,a0 + calla RNDRNG0 + movk 2,a11 + sub a0,a11 + sll 16,a11 + move a8,a10 + add a11,a10 + move a10,@WORLDTLX,L + + movk 4,a0 + calla RNDRNG0 + movk 2,a11 + sub a0,a11 + sll 16,a11 + move a9,a10 + add a11,a10 + move a10,@WORLDTLY,L + + calla BGND_UD1 + + SLEEPK 3 + jruc #sw_loop + + DIE + +#****************************************************************************** +* +* Adjusts the view to midpoint between taker and the coffin +* + SUBRP adjust_view + move @WORLDTLX,a14,L + + ; If we are positioned within 100 pixels to the left of the right + ; edge of the ring don't bother scrolling any further. + move a14,a0 + srl 16,a0 + cmpi 1322-100,a0 + jrge #av_exit + + ; Get the midpoint between taker and the right edge of ring + move *a8(OBJ_XPOS),a14,L + addi [1200,0],a14 + srl 1,a14 + + ; Get the difference between taker and the midpoint + move *a8(OBJ_XPOS),a0,L + sub a0,a14 + + ; Divide by 32 + sra 5,a14 + + ; Do the move + movi 32,a9 +#mv_loop + move @WORLDTLX,a0,L + add a14,a0 + move a0,@WORLDTLX,L + PUSHP a14 + SLEEPK 1 + calla BGND_UD1 + PULLP a14 + dsjs a9,#mv_loop + +#av_exit + ; Now start the world shakin' around + CREATE FIREWRK_PID,shake_world + + RETP + + +#****************************************************************************** + SUBRP und_finish_move1 + +#TIMEOUT .equ TSEC + + ; Set up the globals used to syncronize everythins + clr a14 + move a14,@in_finish_move + move a14,@close_the_door + move a14,@guy_up + move a14,@guy_in + + ; Now wait on the correct buttons -n- sticks +#reset + clr a11 + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + WAITSWITCH_DWN J_DOWN,0,#reset + WAITSWITCH_DWN B_PUNCH,J_ALL,#reset + + + ; Make sure the guy we are doin' this on is dead + PUSH a13 + move a8,a13 + calla get_opp_plyrmode + PULL a13 + cmpi MODE_DEAD,a0 + jrnz #reset + + ; Check to make sure this is my 2nd pin attempt + move @p1pins,a0 + move *a8(PLYR_SIDE),a14 + jrz #is_p1 + move @p2pins,a0 +#is_p1 + cmpi 2,a0 + jrlt #reset + + ; Don't allow the move if I've been turned into a drone + ; by the autopin goop + move *a8(PLYR_TYPE),a14 + jrnz #fi1_exit + + ; Don't allow the move if I'm outside the ring + move *a8(RING_TIME),a14 + jrn #fi1_exit + + ; Don't allow the move if I've already pinned the guy + move *a8(STATUS_FLAGS),a14 + btst B_DID_PIN,a14 + jrnz #fi1_exit + + ; Set up globals used for this animation + move *a8(WHOIHIT),a14,L + move a14,@dead_wrestler,L + + ; Don't allow move if dead guy is to right of center ring + 100 pix + move *a14(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER+100,a14 + jrgt #fi1_exit + + ; Don't allow move if taker is to right of center ring + 100 pix + move *a8(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER+100,a14 + jrgt #fi1_exit + + ; OK - we made it - tell all who care we are going to + ; do a finishing move. This also shuts down the scroller. + movk 1,a14 + move a14,@in_finish_move + + ; clear victim's DO_BUCKOFF bit and set his NO_BUCKOFF bit + move @dead_wrestler,a0,L + move *a0(STATUS_FLAGS),a14,L + andni M_DO_BUCKOFF,a14 + ori M_NO_BUCKOFF,a14 + move a14,*a0(STATUS_FLAGS),L + + ; Move the view to 1/2 way between taker and the coffin + JSRP adjust_view + + ; Let the dust settle before we start our animation + SLEEPK 15 + + ; Start the animation for the finish move + movi und_2_raise_dead_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + ; Wait here until finish move is complete +#fdone_wait + SLEEPK 5 + move @finish_completed,a14 + jrz #fdone_wait + + ; Tell everbody that cares that the finish move is done + clr a14 + move a14,@in_finish_move + + ; Kill off shaker process + movi FIREWRK_PID,a0 + calla KIL1C + +#fi1_exit + DIE + .endif + + + .if NUM_TAKER_FINISHES > 1 +#****************************************************************************** + SUBRP und_finish_move2 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_UP,0,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN B_SPUNCH,J_ALL,#reset + + movi und_finish2_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + +******************************************************************************* +#* +und_hdhold_neckbrk + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + +; move *a8(ANIBASE),a0,L +; cmpi und_sliding_choke_anim,a0 +; jrz #lp0 + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 1,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi und_neckbreaker_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + +;Use this bam grunt + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +und_hdhold_faceslam + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_CHOKEHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_CHOKEHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 1,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + +; movi und_neckbreaker_anim,a14 + movi und_choke_face_slam_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + +;Use this bam grunt + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +und_hdhold_pile + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + +; WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp + +; move *a8(ANIBASE),a0,L +; cmpi und_sliding_choke_anim,a0 +; jrz #lp0 + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;target WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movk 29,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;target WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 15,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + movi und_pile_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + +;Use this bam grunt + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +und_choke_slide + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + + WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp0 + + move *a8(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #lp0 + cmpi MODE_RUNNING,a0 + jrz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 + cmpi MODE_ONGROUND,a0 + jrz #lp0 + cmpi MODE_DEAD,a0 + jrz #lp0 + cmpi MODE_HEADHELD,a0 + jrz #lp0 + cmpi MODE_CHOKING,a0 + jrz #lp0 + + movi und_sliding_choke_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +und_spirit_push + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #lp0 + cmpi MODE_HEADHELD,a0 + jrz #lp0 + + clr a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 +; cmpi MODE_DEAD,a0 +; jrz #lp + cmpi MODE_CHOKING,a0 + jrz #lp + cmpi MODE_HEADHELD,a0 + jrz #lp +; cmpi MODE_ONGROUND,a0 +; jrz #lp + + movi und_spirit_push_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + clr a0 + move a0,*a8(RUN_TIME) + + SETMODE NORMAL + + SLEEP 3*60 + + jruc #lp + + +******************************************************************************* +#* +und_spirit_pull + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #lp0 + cmpi MODE_HEADHELD,a0 + jrz #lp0 + + clr a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + + WAITSWITCH_DWN J_AWAY,J_UP|J_DOWN,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 +; cmpi MODE_DEAD,a0 +; jrz #lp + cmpi MODE_CHOKING,a0 + jrz #lp + cmpi MODE_HEADHELD,a0 + jrz #lp +; cmpi MODE_ONGROUND,a0 +; jrz #lp + + movi und_spirit_pull_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + clr a0 + move a0,*a8(RUN_TIME) + + SETMODE NORMAL + + SLEEP 3*60 + + jruc #lp + +******************************************************************************* +#* +und_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jreq #lp0 + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 +;Don't do it when he is on ground + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 68h,a0 + jrgt #lp + + FACE24 und,snapmirror_anim + jruc #cont + +#doit2 FACE24 und,snapmirror2_anim +#cont + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_TAKER,HIPTOSS_T1,HIPTOSS_T2 + + clr a0 + move a0,*a8(ATTACH_PROC),L + + SETMODE NORMAL + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +und_hdhold_combo1 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp + + move *a8(ANIBASE),a0,L + cmpi und_sliding_choke_anim,a0 + jrz #lp0 + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi und_combo_punch_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +und_hdhold_combo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_KICK,J_ALL,#lp + + move *a8(ANIBASE),a0,L + cmpi und_sliding_choke_anim,a0 + jrz #lp0 + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi und_combo_kick_anim,A14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + SLEEPK 20 + + jruc #lp + +#****************************************************************************** +;und_hdhold_anti_combo +; +;#TIMEOUT .equ 80 +; +;#lp0 +; SLEEPK 1 +;#lp +;;Is my opponent in combo mode? +;; move *a8(IMMOBILIZE_TIME),a14 +;; jrz #lp0 +;; move *a8(CLOSEST_NUM),a0 +;; X32 a0 +;; addi process_ptrs,a0 +;; move *a0,a0,L +;; move *a0(COMBO_COUNT),a0 +;; jrz #lp0 +; +; clr a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +; movi #TIMEOUT,a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +;;Is my opponent in combo mode? +; move *a8(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(COMBO_COUNT),a0 +; jrz #lp0 +; +; move *a8(ANTI_COMBO_TIME),a0 ;Time stamp +; move @PCNT,a14 +; sub a0,a14 +; abs a14 +; cmpi 80,a14 +; jrge #lp0 +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +;;Combo breaker message! +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; clr a0 +; move a0,*a8(IMMOBILIZE_TIME) +; +; move *a8(WHOHITME),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) +; +; ;target WHOHITME +; SMRTTGT a8,WHOHITME +; +; CALLA FIND_AND_KILL_ENDLESS +; movi und_pile_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 +; +; SLEEPK 20 +; +; jruc #lp + +#***************************************************************************** + + SUBR taker_ani_init + + clr a0 + move a0,*a13(ATTIMG_CUR_FRAME),L + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi und_stand4_anim,a0 + calla change_anim1a + + movi und_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + CREATE TAUNT_PID,do_taunt + PULL a10 + + rets + +#p1 + movi und_stand2_anim,a0 + calla change_anim1a + + movi und_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* UNDERTAKER CONTROL CODE +* +* a13 = * taker process + + SUBR move_taker + + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + movi und_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 + .long mode_puppet2 ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + .long mode_puppet ;20 + .long mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + .long mode_choking ;25 + + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(I_WILL_DIE),a0 + jrz #nope + move *a13(IMMOBILIZE_TIME),a0 + jrnz #nope +;Player has died amidst a combo... +;Knock me down. + movi und_fall_back_anim,a0 + calla change_anim1a + +;Zero health bar + movi -10,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + SETMODE DEAD + + clr a0 + move a0,*a13(I_WILL_DIE) + + rets + +#nope +;Perhaps we need to interrupt any sequence when a wrstler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + + ;if closest is a zombie, skip pin section. + calla get_opp_process + move *a0(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #opp_not_dead + + ;all opponents are dead. Check for pins/raisearms + + ;if we're attached to someone, don't interrupt it. + move *a13(ATTACH_PROC),a1,L + jrz #no_attch + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jreq #no_pin_yet +#no_attch + + ;if a teammate has pinned, raise yer arm. + calla ck_teammate_pin + jrc #raisearm + + ;nobody has pinned. if we're outside or all our opponents are + ; outside, do a raisearm. + calla raisearm_check + jrc #raisearm + + ;we're inside with a pinnable opponent. any button pins. + move *a13(BUT_VAL_CUR),a0 + jrz #no_pin_yet + + ;we have a press -- make sure opponent is on the ground + calla can_pin + jrnc #opp_notgnd + + ;opponent is on the ground and close enough for anyone else + ; to pin. Taker is funny, tho, and if you're not real close + ; and BEHIND the guy in Z, he just does a raise arm instead. + + ;But he STILL sets the 'I did a pin flag' anyway. + move *a13(STATUS_FLAGS),a14 + ori M_DID_PIN,a14 + move a14,*a13(STATUS_FLAGS) + + ;And we also set all the PINNED/WHOIPINNED/WHOPINNED me stuff + calla hit_nearest + + move *a13(NEW_FACING_DIR),a0 + btst MOVE_DOWN_BIT,a0 + jrz #raisearm + + move *a13(CLOSEST_ZDIST),a0 + cmpi 40h,a0 + jrge #raisearm + + move *a13(CLOSEST_XDIST),a0 + cmpi 35,a0 + jrge #raisearm + + movi und_4_pin2_anim,a0 + calla change_anim1a + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#raisearm + FACE24 und,raise_arm_anim + calla change_anim1a + calla set_raisearm_bit + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#too_far_to_pin +#opp_notgnd +#opp_not_dead +#no_pin_yet + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #immobilized + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 ;maybe have to action tables? + jrz #nblk ;1 for down transitions + callr #block ;& 1 for current buttons + jrc #nblk + clr a0 + move a0,*a13(ATTACK_TYPE) + rets +#nblk + move *a13(BUT_VAL_CUR),a0 + andi 011111b,a0 + cmpi PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,a0 + jrz #punchkick + + move *a13(BUT_VAL_DOWN),a0 + 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(STICK_VAL_CUR),a0 + move a0,*a13(MOVE_DIR) + calla climb_turnbuckle + jrnc #no_climb + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets + +#immobilized + clr a14 + move a14,*a13(MOVE_DIR) +#no_climb + calla execute_walk + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + + +************ +#z + + + rets + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 headbutt +* dizzy " " +* normal > normal punch +* dizzy " " +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running hiptoss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 75, 45,#punch_hdbutt,#punch_punch + JJXM RUNNING, 75, 45,#punch_hdbutt,#punch_punch + JJXM BLOCK, 75, 45,#punch_hdbutt,#punch_punch + JJXM DIZZY, 75, 45,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 160,140,#punch_lbowdrop,#punch_punch + JJXM BOUNCING, 75, 45,#punch_hdbutt,#punch_punch + JJXM ONTURNBKL, 75, 45,#punch_hdbutt,#punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM INAIR, 75, 45,#punch_hdbutt,#punch_punch + JJXM ATTACHED, 75, 45,#punch_hdbutt,#punch_punch + JJXM DEAD, 160,140,#punch_lbowdrop,#punch_punch + JJXM OPPOVERHEAD, 75, 45,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 75, 45,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 75, 45,#punch_hdbutt,#punch_punch + JJXM MASTER, 75, 45,#punch_hdbutt,#punch_punch + JJXM SLAVE, 75, 45,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 75, 45,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 75, 45,#punch_hdbutt,#punch_punch + JJXM CHOKEHOLD, 75, 45,#punch_hdbutt,#punch_punch + JJXM PUPPET, 75, 45,#punch_hdbutt,#punch_punch + JJXM PUPPET2, 75, 45,#punch_hdbutt,#punch_punch + JJXM INAIR2, 75, 45,#punch_hdbutt,#punch_punch + JJXM_END + +#punch_rets + rets + +***** +#punch_punch +std_punch + + FACE24 und,punch_anim + calla change_anim1a + + WRSND W_TAKER,PUNCH_T1,PUNCH_T2 + + rets + +***** +#punch_hdbutt + + FACE24 und,butt_anim + calla change_anim1a + + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#punch_lbowdrop + + FACE24 und,lbowdrop_anim + calla change_anim1a + + WRSND W_TAKER,LBOWDROP_T1,LBOWDROP_T2 + + rets + +***** +#punch_hiptoss +;std_hiptoss + + rets + + +************ +#block ;2 + +std_block + move @blocking_off,a0 + jrnz #no_blocking + + RND_AWARD a13,BLOCKS_AWD + + movi und_4_block_anim,a0 + calla change_anim1 + + calla BLOCK_WOOSH + + clr a0 + move a0,*a13(BLOCK_TIME) + clrc + rets + +#no_blocking + setc + rets + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 120 120 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 95, 35,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 95, 35,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 95, 35,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 95, 35,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 160,140,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, 95, 35,#spunch_special,#spunch_slap ;1 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 95, 35,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 95, 35,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 160,140,#spunch_lbowdrop,std_punch ;9 + JJXM OPPOVERHEAD, 95, 35,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 95, 35,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 95, 35,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 95, 35,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 95, 35,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 95, 35,#spunch_special,#spunch_slap ;16 + + JJXM HEADHELD, do_pile +;PILE + JJXM CHOKEHOLD, 95, 35,#spunch_special,#spunch_slap ;16 + JJXM PUPPET, 95, 35,#spunch_special,#spunch_slap ;20 + JJXM PUPPET2, 95, 35,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 95, 35,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +#graboh ;8 +#spunch_slap +;jumping punch attack + FACE24 und,slap_anim + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + +***** +#spunch_special +;If stick is toward opponent, then do quick head hold + move *a13(STICK_VAL_CUR),a0 + btst MOVE_DOWN_BIT,a0 + jrnz #ck_up +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrz #cont + + move *a13(CLOSEST_XDIST),a1 + cmpi 70,a1 + jrgt #spunch_slap + +;#cont +; movi und_3_head_hold2_anim,a0 +; calla change_anim1a +; +; WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 +; rets +;#hdbutt + + FACE24 und,butts_anim + calla change_anim1 + + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + + rets +#ck_up +;Do uppercut + FACE24 und,uppercut_anim + calla change_anim1 + + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + rets + + +***** +#spunch_lbowdrop +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a2 + cmpi MODE_DEAD,a2 + jrz #no + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 und,hair_pickup_anim + calla change_anim1 + WRSND W_TAKER,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no FACE24 und,lbowdrop_anim + calla change_anim1 + WRSND W_TAKER,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 knee +* dizzy " " +* normal > normal kick +* dizzy " " +* +* onground < 120 120 stomp +* onground > normal kick +* +* running normal kick +* bouncing normal kick +* +* onturnbkl normal kick +* climbturnbkl normal kick +* + JJXM_INIT + JJXM NORMAL, 65, 92,#kick_knee,#kick_kick + JJXM RUNNING, 65, 92,#kick_knee,#kick_kick + JJXM INAIR, 65, 92,#kick_knee,#kick_kick + JJXM ATTACHED, 65, 92,#kick_knee,#kick_kick + JJXM ONGROUND, 160,140,#kick_stomp,#kick_kick + JJXM BOUNCING, 65, 92,#kick_knee,#kick_kick + JJXM ONTURNBKL, #kick_kick + JJXM BLOCK, 65, 92,#kick_knee,#kick_kick + JJXM DIZZY, 65, 92,#kick_knee,#kick_kick + JJXM DEAD, 160,140,#kick_stomp,#kick_kick + JJXM OPPOVERHEAD, 65, 92,#kick_knee,#kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM WAITANIM, 65, 92,#kick_knee,#kick_kick + JJXM GRAPPLE, 65, 92,#kick_knee,#kick_kick + JJXM MASTER, 65, 92,#kick_knee,#kick_kick + JJXM SLAVE, 65, 92,#kick_knee,#kick_kick + JJXM HEADHOLD, 65, 92,#kick_knee,#kick_kick + JJXM HEADHELD, 65, 92,#kick_knee,#kick_kick + JJXM CHOKEHOLD, 65, 92,#kick_knee,#kick_kick + JJXM PUPPET, 65, 92,#kick_knee,#kick_kick + JJXM PUPPET2, 65, 92,#kick_knee,#kick_kick + JJXM INAIR2, #kick_TB + JJXM_END + +***** +#kick_TB + + .ref und_kick_TB_anim + movi und_kick_TB_anim,a0 + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +***** +#kick_kick +std_kick + + FACE24 und,kick_anim + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +***** +#kick_flyingkick + + movi und_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_TAKER,FLYKICK_T1,FLYKICK_T2 + + rets + +***** +#kick_knee +std_knee + + FACE24 und,knee_anim + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +***** +#kick_stomp +attack_stomp + + FACE24 und,stomp_anim + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 60 close in super move +* dizzy " " +* normal > jumping kick move +* dizzy " " +* +* onground < 120 120 super stomp +* onground > normal kick +* +* running big boot +* bouncing big boot +* +* onturnbkl < 60 96 jumping kick move +* climbturnbkl " " +* onturnbkl > normal kick +* climbturnbkl " " +* + JJXM_INIT + JJXM NORMAL, 60, 60,#skick_special,#skick_kick ;0 + JJXM RUNNING, #skick_bigboot ;1 + JJXM INAIR, 60, 60,#skick_special,#skick_kick ;2 + JJXM ATTACHED, 60, 60,#skick_special,#skick_kick ;3 + JJXM ONGROUND, 160,140,#skick_stomp,std_kick ;4 + JJXM BOUNCING, #skick_bigboot ;5 + JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick ;6 + JJXM BLOCK, 60, 60,#skick_special,#skick_kick ;7 + JJXM DIZZY, 60, 60,#skick_special,#skick_kick ;8 + JJXM DEAD, 160,140,#skick_stomp,std_kick ;9 + JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick ;10 + JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick ;11 + JJXM WAITANIM, 60, 62,#skick_special,#skick_kick ;12 + JJXM GRAPPLE, 60, 62,#skick_special,#skick_kick ;13 + JJXM MASTER, 60, 62,#skick_special,#skick_kick ;14 + JJXM SLAVE, 60, 62,#skick_special,#skick_kick ;15 + JJXM HEADHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM HEADHELD, std_kick + JJXM CHOKEHOLD, 60, 62,#skick_special,#skick_kick ;16 + JJXM PUPPET, 60, 62,#skick_special,#skick_kick ;20 + JJXM PUPPET2, 60, 62,#skick_special,#skick_kick ;20 + JJXM INAIR2, #kick_TB + JJXM_END + +***** +#skick_kick + FACE24 und,super_kick_anim + calla change_anim1a + + WRSND W_TAKER,FLYKICK_T1,FLYKICK_T2 + rets + + +***** +#skick_special +;If stick is toward opponent, then do quick punches + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrz #cont2 + + FACE24 und,knee_anim + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +#cont2 + movi und_4_knee_fall_anim,a0 + calla change_anim1 + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + rets + +#skick_stomp + + FACE24 und,stomp_anim + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +***** +#skick_bigboot ;we can probably get away with just a #4 big boot + + movi und_4_bigboot_anim,a0 ;***** + calla change_anim1a + + WRSND W_TAKER,FLYKICK_T1,FLYKICK_T2 + + rets + + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ UND_XRUN +#ZDRIFT_VAL equ UND_ZDRIFT + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move @hyper_speed_on,a14 + sll a14,a0 + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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(STICK_VAL_CUR),a0 + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#no_interrupt + + move *a13(STICK_VAL_CUR),a0 + 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 + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 +#out_of_control + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + + +************ +#z + rets + +************ +#punch ;1 +#super_punch ;4 +#punchkick +#graboh +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying clothesline +* dizzy " +* +* onground < 176 176 butt-drop +* onground > nothing +* +* running flying clothesline +* bouncing flying clothesline +* +* onturnbkl flying clothesline +* climbturnbkl flying clothesline +* + JJXM_INIT + JJXM NORMAL, #punch_clothesline + JJXM BLOCK, #punch_clothesline + JJXM DIZZY, #punch_clothesline + JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_rets + JJXM RUNNING, #punch_clothesline + JJXM BOUNCING, #punch_clothesline + JJXM ONTURNBKL, #punch_clothesline + JJXM CLIMBTURNBKL, #punch_clothesline + JJXM INAIR, #punch_clothesline + JJXM ATTACHED, #punch_clothesline + JJXM DEAD, attack_bellyflop + JJXM OPPOVERHEAD, #punch_clothesline + JJXM WAITANIM, #punch_clothesline + JJXM GRAPPLE, #punch_clothesline + JJXM MASTER, #punch_clothesline + JJXM SLAVE, #punch_clothesline + JJXM HEADHOLD, #punch_clothesline + JJXM HEADHELD, #punch_clothesline + JJXM CHOKEHOLD, #punch_clothesline + JJXM PUPPET, #punch_clothesline + JJXM PUPPET2, #punch_clothesline + JJXM INAIR2, #punch_clothesline + JJXM_END + +#punch_rets + rets + +***** +#punch_clothesline + + ;don't do it if you're running away from your opponent. + move *a13(FACING_DIR),a0 + move *a13(NEW_FACING_DIR),a1 + and a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + jrz #z + + clr a0 + move a0,*a13(RUN_TIME) + + SETMODE NORMAL + + move *a13(CLOSEST_XDIST),a1 + cmpi 70,a1 + jrlt #hdbutt + + .ref und_2_run_slap_anim + .ref und_4_run_slap_anim + FACE24 und,run_slap_anim + calla change_anim1a + + WRSND W_TAKER,GRABHOLD_T1,GRABHOLD_T2 + + rets + +#hdbutt + + FACE24 und,butt_anim + calla change_anim1 + + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + + rets + +***** +#punch_bellyflop +attack_bellyflop + + movi und_flying_butt_drop_anim,a0 + calla change_anim1a + + WRSND W_TAKER,FLYKICK_T1,FLYKICK_T2 + + rets + +************ +#block ;2 + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************ +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal flying kick +* dizzy " +* +* onground < 176 176 butt-drop +* onground > nothing +* +* running flying kick +* bouncing flying kick +* +* onturnbkl flying kick +* climbturnbkl flying kick +* + JJXM_INIT + JJXM NORMAL, #kick_flyingkick + JJXM BLOCK, #kick_flyingkick + JJXM DIZZY, #kick_flyingkick + JJXM ONGROUND, attack_bellyflop + JJXM RUNNING, #kick_flyingkick + JJXM BOUNCING, #kick_flyingkick + JJXM ONTURNBKL, #kick_flyingkick + JJXM CLIMBTURNBKL, #kick_flyingkick + JJXM INAIR, #kick_flyingkick + JJXM ATTACHED, #kick_flyingkick + JJXM DEAD, attack_bellyflop + JJXM OPPOVERHEAD, #kick_flyingkick + JJXM WAITANIM, #kick_flyingkick + JJXM GRAPPLE, #kick_flyingkick + JJXM MASTER, #kick_flyingkick + JJXM SLAVE, #kick_flyingkick + JJXM HEADHOLD, #kick_flyingkick + JJXM HEADHELD, #kick_flyingkick + JJXM CHOKEHOLD, #kick_flyingkick + JJXM PUPPET, #kick_flyingkick + JJXM PUPPET2, #kick_flyingkick + JJXM INAIR2, #kick_flyingkick + JJXM_END + +#kick_rets + rets + +***** +#kick_flyingkick + + calla ck_ignore + jrc #z + + movi und_flying_kick_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_TAKER,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 + +#***************************************************************************** + +mode_onground ;4 + + 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 und_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 + +; ;check unint +; move *a13(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #no_interrupt + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #no_climbdown + + movi und_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + +#no_interrupt + rets + +#no_climbdown + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + +************ +#punch ;1 +#block ;2 +#super_punch ;4 +#kick ;8 +#super_kick ;16 +#graboh +#punchkick + + SETMODE INAIR + + movi und_tbukl_butt_drop_anim,a0 + calla change_anim1a + + WRSND W_TAKER,FLYKICK_T1,FLYKICK_T2 + + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + + move *a13(BLOCK_TIME),a0 + inc a0 + move a0,*a13(BLOCK_TIME) + cmpi 160,a0 + jrlt #no + + calla get_opp_plyrmode + cmpi MODE_BLOCK,a0 + jrnz #no + move *a13(CLOSEST_XDIST),a0 + cmpi 61h,a0 + jrge #no + cmpi 45,a0 + jrlt #no + move *a13(CLOSEST_ZDIST),a0 + cmpi 30,a0 + jrlt #punchblock + +#no + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #no_interrupt + + ;press. if block isn't down, let mode_normal handle it + move a0,a2 ;save a0 from ...val_down + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 + jrz #set_mode_normal + move a2,a0 ;restore a0 from ...val_down + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#set_mode_normal + SETMODE NORMAL + jruc mode_normal + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + movi und_4_push_anim,a0 + calla change_anim1a + + WRSND W_TAKER,PUSH_T1,PUSH_T2 + + rets + + +#***************************************************************************** +* taker with zero health + +mode_dizzy ;8 + +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +; calla clear_damage_log +; +; clr a0 +; move a0,*a13(STARS_FLAG) +; +; SETMODE NORMAL +; +;#still_going + 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 + + calla master_keep_attached ;keep slave attached to me + + rets + +#***************************************************************************** + +mode_slave ;15 + rets + +#***************************************************************************** + +mode_headhold ;16 + move *a13(ANIBASE),a0,L + cmpi und_sliding_choke_anim,a0 + jrnz #norm + move *a13(CUR_FRAME),a0,L + .ref U2LN2A + movi U2LN2A+FR6,a1 + move *a1,a1,L + cmp a1,a0 + jrz mode_chokehold + rets +#norm +;Bozo power move + .ref bozo_check + calla bozo_check + jrnc #fail + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + movi und_neckbreaker_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi und_pile_anim,a0 +#tag calla change_anim1a + + rets + +#fail + move *a13(WHOIHIT),a0,L + move *a0(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #exit + +; move *a13(ATTACH_PROC),a10,L +; jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + move *a13(OBJ_ZPOS),a14,L + subi [6,0],a14 + move a14,*a13(OBJ_ZPOS),L + + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + + +************ +#block +#graboh +#z ;0 + rets + +************ + +#punch ;1 +;If stick is toward opponent, then do quick punches + CALLA FIND_AND_KILL_ENDLESS + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag2 + movi und_4_knee_butts_anim,a0 + calla change_anim1a + rets + +#tag2 + .ref und_4_knee2_anim + movi und_4_knee2_anim,a0 + calla change_anim1a + rets + +************ +#super_punch ;4 +do_pile +;This flag is only set if taker has done repeated uppercuts! + + move *a13(USR_VAR2),a0 + jrz #upper + + CALLA FIND_AND_KILL_ENDLESS + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #z + + movi und_pile_anim,a0 + calla change_anim1a + rets + +#upper + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #z + +; SPCDMG D_UPRCUT/2,15 + + CALLA FIND_AND_KILL_ENDLESS + FACE24 und,uppercut_anim + calla change_anim1a + rets + + +#punchkick +#kick + CALLA FIND_AND_KILL_ENDLESS + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #knee + + movi und_4_knee2_anim,a0 + calla change_anim1a + rets + +#knee + movi und_4_knee2_anim,a0 + calla change_anim1a + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick knees +; move *a13(STICK_VAL_CUR),a0 +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrnz #kick +; +;;Quick knees +;; movi dnk_3_knees_to_head_anim,a0 +; movi und_4_knee_anim,a0 +; calla change_anim1a + + rets + +#***************************************************************************** +mode_puppet2 ;17 + +; ;check for the head-grab breaker +; move *a13(BUT_VAL_DOWN),a0 +; btst PLAYER_KICK_BIT,a0 +; jrz #out +; +; ;check the time - must do it within 20 ticks +; move *a13(HEAD_GRAB_TIME),a14 +; move @PCNT,a0 +; sub a14,a0 +; cmpi KICK_OUT,a0 +; jrgt #out +; +; move *a13(PLYR_TYPE),a14 +; cmpi PTYPE_DRONE,a14 +; jrz #out +; +; ;okay, waste 'im. - detach, setmode, immobilize, and launch the knee +; move *a13(ATTACH_PROC),a0,L +; clr a14 +; move a14,*a13(ATTACH_PROC),L +; move a14,*a0(ATTACH_PROC),L +; movi 15,a14 +; move a14,*a0(IMMOBILIZE_TIME) +; SETMODE NORMAL +; jruc std_knee +; +;#out + rets + +#***************************************************************************** +mode_headheld ;19 + move *a13(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + janz mode_choking + + +;Bozo reversal + calla bozo_check + jrnc #fail + + PUSH a8 + move a13,a8 + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + PULL a8 + + WRSND W_BAMBAM,GRABHOLD_T1,GRABHOLD_T2 + + movi und_neckbreaker_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi und_pile_anim,a0 +#tag calla change_anim1a + + rets +#fail + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + movi und_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_chokehold ;24 + + move *a13(ATTACH_PROC),a0,L + jrz #lost_him + move *a0(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #lost_him + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #no_interrupt + + move *a13(ATTACH_PROC),a1,L + movk 30,a14 + move a14,*a1(IMMOBILIZE_TIME) + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z ;0 +#block ;2 + rets + +************ +#punch ;1 +#punchkick + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + move *a13(STICK_VAL_CUR),a0 + btst MOVE_UP_BIT,a0 + jrz #reg + + CALLA FIND_AND_KILL_ENDLESS + + SETMODE HEADHOLD + + move *a13(WHOIHIT),a0,L + movi MODE_HEADHELD,a14 + move a14,*a0(PLYRMODE) + +;Make sure victim knows he is not in chokehold anymore + move *a0(ANIMODE),a14 + andni MODE_NOGRAVITY,a14 + move a14,*a0(ANIMODE) + + movi und_4_knee_butts_anim,a0 + calla change_anim1a + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + + rets +#reg + CALLA FIND_AND_KILL_ENDLESS + movi und_2_butt_anim,a0 + calla change_anim1a + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + + rets + +************ +#super_punch ;4 +#graboh + +;Check for uppercut + move *a13(STICK_VAL_CUR),a0 + btst MOVE_DOWN_BIT,a0 + jrz #punch + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + CALLA FIND_AND_KILL_ENDLESS + FACE24 und,uppercut_anim + calla change_anim1 + + WRSND W_TAKER,HDBUTT_T1,HDBUTT_T2 + rets + +#super_kick ;16 +;If stick is toward opponent, then do quick punches + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrnz #tag + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + CALLA FIND_AND_KILL_ENDLESS + movi und_2_knee_anim,a0 + calla change_anim1a + rets + +#kick ;8 +; move *a13(STICK_VAL_CUR),a0 +; btst PLAYER_DOWN_BIT,a0 +; jrnz #tag0 + + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + + CALLA FIND_AND_KILL_ENDLESS + movi und_2_knee_anim,a0 + calla change_anim1a + rets + +;#tag0 +; SETMODE NORMAL +; +; CALLA FIND_AND_KILL_ENDLESS +; +; movi und_choke_face_slam_anim,a0 +; calla change_anim1a +; +; WRSND W_TAKER,KICK_T1,KICK_T2 +; +; rets +#tag + SETMODE NORMAL + + CALLA FIND_AND_KILL_ENDLESS + movi und_chokeslam_anim,a0 + calla change_anim1a + + WRSND W_TAKER,KICK_T1,KICK_T2 + + rets + +************ + +#lost_him + CALLA FIND_AND_KILL_ENDLESS + clr a0 + move a0,*a13(ATTACH_PROC),L + + SETMODE NORMAL + movi MODE_NORMAL,a0 + move a0,*a13(ANIMODE) + + rets + + +#***************************************************************************** + SUBR mode_choking ;25 + + move *a13(ATTACH_PROC),a0,L + jrz #fall_out + move *a0(ATTACH_PROC),a0,L + cmp a13,a0 + jrne #fall_out + +; move *a13(GETUP_TIME),a0 +; jrz #fall_out + rets + + +#fall_out + clr a0 + move a0,*a13(ATTACH_PROC),L + + CALLA FIND_AND_KILL_ENDLESS + SETMODE NORMAL + movi MODE_NORMAL,a0 + move a0,*a13(ANIMODE) + + rets + + +#***************************************************************************** + +;#VEL equ 30000h ;38000h ;30000h +;#DVEL equ 21f0eh ;27978h ;21f0eh +;#VEL equ 38000h ;38000h ;30000h +;#DVEL equ 30000h ;27978h ;21f0eh +#VEL equ 3a000h ;38000h ;30000h +#DVEL equ 31000h ;27978h ;21f0eh + + + SUBR und_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 und_rotate_anims_table +; old = up right + .long und_stand2_anim ;new = up right + .long und_2_to_4_turn_anim ; = down right + .long und_2_to_6_turn_anim ; = down left + .long und_2_to_8_turn_anim ; = up left + +; old = down right + .long und_4_to_2_turn_anim ;new = up right + .long und_stand4_anim ; = down right + .long und_4_to_6_turn_anim ; = down left + .long und_4_to_8_turn_anim ; = up left + +; old = down left + .long und_6_to_2_turn_anim ;new = up right + .long und_6_to_4_turn_anim ; = down right + .long und_stand6_anim ; = down left + .long und_6_to_8_turn_anim ; = up left + +; old = up left + .long und_8_to_2_turn_anim ;new = up right + .long und_8_to_4_turn_anim ; = down right + .long und_8_to_6_turn_anim ; = down left + .long und_stand8_anim ; = up left + + + SUBR und_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long und_walk1_f2_anim ;1 (UP) + .long und_walk1_f2_anim ;2 (UP_RIGHT) + .long und_walk1_f4_anim ;3 (RIGHT) + .long und_walk1_f4_anim ;4 (DOWN_RIGHT) + .long und_walk1_f4_anim ;5 (DOWN) + .long und_walk1_f4_anim ;6 (DOWN_LEFT) + .long und_walk1_f2_anim ;7 (LEFT) + .long und_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk2_f2_anim ;2 (UP_RIGHT) + .long und_walk2_f2_anim ;3 (RIGHT) + .long und_walk2_f4_anim ;4 (DOWN_RIGHT) + .long und_walk8_f4_anim ;5 (DOWN) + .long und_walk8_f4_anim ;6 (DOWN_LEFT) + .long und_walk4_f2_anim ;7 (LEFT) + .long und_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk2_f2_anim ;2 (UP_RIGHT) + .long und_walk2_f2_anim ;3 (RIGHT) + .long und_walk4_f4_anim ;4 (DOWN_RIGHT) + .long und_walk4_f4_anim ;5 (DOWN) + .long und_walk8_f4_anim ;6 (DOWN_LEFT) + .long und_walk6_f2_anim ;7 (LEFT) + .long und_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk8_f2_anim ;2 (UP_RIGHT) + .long und_walk4_f4_anim ;3 (RIGHT) + .long und_walk4_f4_anim ;4 (DOWN_RIGHT) + .long und_walk2_f4_anim ;5 (DOWN) + .long und_walk6_f4_anim ;6 (DOWN_LEFT) + .long und_walk2_f2_anim ;7 (LEFT) + .long und_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long und_walk5_f2_anim ;1 (UP) + .long und_walk5_f2_anim ;2 (UP_RIGHT) + .long und_walk5_f4_anim ;3 (RIGHT) + .long und_walk5_f4_anim ;4 (DOWN_RIGHT) + .long und_walk5_f4_anim ;5 (DOWN) + .long und_walk5_f4_anim ;6 (DOWN_LEFT) + .long und_walk5_f2_anim ;7 (LEFT) + .long und_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk6_f2_anim ;2 (UP_RIGHT) + .long und_walk2_f2_anim ;3 (RIGHT) + .long und_walk6_f4_anim ;4 (DOWN_RIGHT) + .long und_walk2_f4_anim ;5 (DOWN) + .long und_walk4_f4_anim ;6 (DOWN_LEFT) + .long und_walk2_f2_anim ;7 (LEFT) + .long und_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk6_f2_anim ;2 (UP_RIGHT) + .long und_walk6_f2_anim ;3 (RIGHT) + .long und_walk8_f4_anim ;4 (DOWN_RIGHT) + .long und_walk4_f4_anim ;5 (DOWN) + .long und_walk4_f4_anim ;6 (DOWN_LEFT) + .long und_walk2_f2_anim ;7 (LEFT) + .long und_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long und_walk2_f2_anim ;1 (UP) + .long und_walk4_f2_anim ;2 (UP_RIGHT) + .long und_walk6_f2_anim ;3 (RIGHT) + .long und_walk8_f4_anim ;4 (DOWN_RIGHT) + .long und_walk6_f4_anim ;5 (DOWN) + .long und_walk2_f4_anim ;6 (DOWN_LEFT) + .long und_walk2_f2_anim ;7 (LEFT) + .long und_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR und_torso_anims_table +; old = up right + .long und_torso2_anim ;new = up right + .long und_2_to_4_turn2_anim ; = down right + .long und_2_to_6_turn2_anim ; = down left + .long und_2_to_8_turn2_anim ; = up left + +; old = down right + .long und_4_to_2_turn2_anim ;new = up right + .long und_torso4_anim ; = down right + .long und_4_to_6_turn2_anim ; = down left + .long und_4_to_8_turn2_anim ; = up left + +; old = down left + .long und_6_to_2_turn2_anim ;new = up right + .long und_6_to_4_turn2_anim ; = down right + .long und_torso6_anim ; = down left + .long und_6_to_8_turn2_anim ; = up left + +; old = up left + .long und_8_to_2_turn2_anim ;new = up right + .long und_8_to_4_turn2_anim ; = down right + .long und_8_to_6_turn2_anim ; = down left + .long und_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/TAKER.BAT b/TAKER.BAT new file mode 100755 index 0000000..4dfa1c5 --- /dev/null +++ b/TAKER.BAT @@ -0,0 +1,6 @@ +@echo off +@wwfld taker und_hit und_kik und_msc und_pnc und_wlk und_rjr und_mjt und_jms und_jake +@copy taker.ld1 + taker.ld2 taker.lod +@move taker.h ..\takerimg.h +@move taker.seq .. + diff --git a/TAKERIMG.ASM b/TAKERIMG.ASM new file mode 100755 index 0000000..1724704 --- /dev/null +++ b/TAKERIMG.ASM @@ -0,0 +1,19 @@ + .FILE "takerimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include takerimg.tbl + .include takerimg.h + +****************************************************************************** + + .even + .include "taker.seq" + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/TAKERIMG.H b/TAKERIMG.H new file mode 100755 index 0000000..4dfa3ed --- /dev/null +++ b/TAKERIMG.H @@ -0,0 +1,94 @@ + .global U3CP3B + .global U2AH3A + .global U4AH3A + .global U4AM4C + .global U2AM2A + .global U3AE4A + .global U4BK3C + .global U4LB4A + .global U3FD3B + .global U3GD2A + .global U3GD4A + .global U4KM3E + .global U2KM3B + .global U4BG3A + .global U3DC3A + .global U2KB3A + .global U4KB3A + .global U2NM3A + .global U4NM3A + .global U4BF3A + .global U4BF3Z + .global U4GF3A + .global U2CT2C + .global U4SB4A + .global U4PM3C + .global U4TI4C + .global U4FG3A + .global U3CR3A + .global U4GH3Z + .global U4UP3C + .global U2PL3A + .global U4PL3A + .global U4PS3A + .global U4BC3A + .global U2BC3A + .global U4JP4C + .global U4TW4A + .global U2TW2A + .global U2ST2C + .global U4ST4D + .global U4WL4A + .global U4WL2C + .global U2WL1A + .global U2WL8A + .global U4WL5A + .global U2WL2A + .global U1TT5A + .global U1TR5A + .global U4YR3B + .global U3RN3A + .global U4BO3Z + .global U3RS3A + .global U4FT3A + .global U3DD3A + .global U3DD3X + .global U3PG3A + .global U3ZT3A + .global U2LN2A + .global U2NS3X + .global U3SU3A + .global U3SU4A + .global U3SU2B + .global U3TN3B + .global U3DD3B + .global U3FH3A + .global U3FD3X + .global U3TBSM + .global U3ZS3B + .global U3AB3A + .global U3MS3B + .global U4WA4H + .global U4POGO + .global U4GH3A + .global U3BR3Z + .global U3MS3Z + .global U3CF3Q + .global U4LD4A + .global U4CO4B + .global U4GH3C + .global U3DU3B + .global U3PP3X + .global U3GP3X + .global U4BZ4A + .global U3PN5A + .global U5RV5A + .global U2MP2A + .global U4MP4A + .global U2JP2C + .global U4JP4D + .global U4JK4A + .global U3RR3Z + .global U4WA4B + .global U3CR3B + .global U4JD4A diff --git a/TAKERST.H b/TAKERST.H new file mode 100755 index 0000000..00bd968 --- /dev/null +++ b/TAKERST.H @@ -0,0 +1,278 @@ +; +; Story lines for story 1 of taker +; +; Compressed string "AFTER THE DUST SETTLED AND THE" +taker_story1_line1 + .byte 0e2h,059h,09bh,073h,050h,0a7h,066h,050h + .byte 0dah,074h,01dh,0d0h,066h,05dh,0b7h,066h + .byte 019h,088h,06fh,019h,0d4h,0a9h,009h,000h + .even + +; Compressed string "SMOKE CLEARED, THE UNDERTAKER" +taker_story1_line2 + .byte 0b4h,00bh,0b3h,066h,040h,0b6h,0a6h,038h + .byte 09bh,065h,013h,0d4h,0a9h,019h,0d8h,06fh + .byte 069h,0ceh,0b5h,0c8h,09ah,033h,000h + .even + +; Compressed string "STOOD ALONE IN THE SPOTLIGHT," +taker_story1_line3 + .byte 074h,00dh,0c3h,065h,020h,0b6h,0f0h,06bh + .byte 006h,0eah,01bh,0d4h,0a9h,019h,0d0h,031h + .byte 05ch,0b7h,02ah,09ah,0d6h,00dh,000h + .even + +; Compressed string "SILENT. HE APPROACHED HIS LAST" +taker_story1_line4 + .byte 0b4h,0dah,09ah,06fh,0fdh,004h,041h,06ah + .byte 006h,062h,01ch,0cfh,0b0h,048h,0a6h,066h + .byte 019h,0a4h,02ah,01dh,0b4h,022h,05dh,003h + .even + +; Compressed string "VICTIM SLOWLY, KNELT DOWN ON ONE" +taker_story1_line5 + .byte 0b7h,04ah,0d6h,0aah,01bh,0d0h,02dh,08ch + .byte 0b7h,07ah,013h,0b0h,0afh,0d9h,0d6h,041h + .byte 009h,0e3h,06fh,000h,0bfh,001h,0fch,09ah + .byte 000h + .even + +; Compressed string "KNEE AND STARED DEEPLY INTO HIS" +taker_story1_line6 + .byte 0ech,06bh,09ah,081h,0f8h,096h,001h,05dh + .byte 08bh,0b3h,059h,006h,0a5h,069h,0c6h,0adh + .byte 01eh,0a8h,06fh,00dh,007h,0a9h,04ah,003h + .even + +; Compressed string "EYES. IT WAS A STARE SO" +taker_story1_line7 + .byte 0a6h,06eh,0d2h,04fh,010h,0a8h,075h,080h + .byte 08bh,074h,020h,006h,074h,02dh,0ceh,066h + .byte 040h,0c3h,000h + .even + +; Compressed string "INTENSE, IT SEEMED TO GO PAST" +taker_story1_line8 + .byte 0eah,05bh,09bh,02fh,06dh,036h,081h,05ah + .byte 007h,0b4h,069h,0bah,066h,019h,0d4h,070h + .byte 080h,0c2h,041h,02ch,0d2h,035h,000h + .even + +; Compressed string "THE MAN'S EYES, PAST THE FLESH" +taker_story1_line9 + .byte 075h,06ah,006h,0aeh,0f8h,022h,074h,060h + .byte 0eah,026h,0ddh,004h,0b1h,048h,0d7h,041h + .byte 09dh,09ah,0c1h,0d9h,09ah,074h,00ah,000h + .even + +; Compressed string "ITSELF... STRAIGHT TO THE SOUL. " +taker_story1_line10 + .byte 06ah,04dh,09bh,0edh,0f9h,03ch,04fh,040h + .byte 0d7h,0b3h,0a8h,0a2h,069h,01dh,0d4h,070h + .byte 050h,0a7h,066h,040h,0c3h,076h,0fbh,004h + .byte 000h + .even + +; Compressed string "TAKER LOWERED HIS HEAD AND" +taker_story1_line11 + .byte 0b5h,0c8h,09ah,073h,0d0h,0c2h,0b8h,039h + .byte 09bh,065h,090h,0aah,074h,090h,09ah,062h + .byte 019h,088h,06fh,009h,000h + .even + +; Compressed string "COVERED THE MAN'S HEART WITH HIS" +taker_story1_line12 + .byte 024h,07ch,09bh,0b3h,059h,006h,075h,06ah + .byte 006h,0aeh,0f8h,022h,074h,090h,09ah,0e2h + .byte 05ch,007h,0b8h,05ah,0a7h,041h,0aah,0d2h + .byte 000h + .even + +; Compressed string "HAND. THE LIGHTS MYSTERIOUSLY" +taker_story1_line13 + .byte 0a9h,0f8h,096h,04fh,010h,0d4h,0a9h,019h + .byte 0b4h,02ah,09ah,0d6h,074h,0e0h,0eah,074h + .byte 06dh,0ceh,02ah,06ch,0d3h,0adh,00eh,000h + .even + +; Compressed string "WENT BLACK, AND ALL THAT COULD" +taker_story1_line14 + .byte 0b8h,0f9h,0d6h,0c1h,0d8h,08ah,024h,0dbh + .byte 004h,0e2h,05bh,006h,062h,0dbh,006h,075h + .byte 02ah,0d6h,001h,009h,0dbh,06dh,009h,000h + .even + +; Compressed string "BE SEEN THROUGH THE DARKNESS WAS" +taker_story1_line15 + .byte 0a3h,019h,0d0h,0a6h,0f9h,006h,075h,03ah + .byte 0c3h,036h,09ah,006h,075h,06ah,006h,0a5h + .byte 038h,0b3h,0afh,049h,0d3h,001h,02eh,0d2h + .byte 000h + .even + +; Compressed string "A MIST-LIKE SHAPE RISING UP FROM" +taker_story1_line16 + .byte 062h,0e0h,0aah,074h,0edh,0b4h,02ah,06bh + .byte 006h,074h,02ah,0c6h,066h,030h,0abh,0b4h + .byte 0fah,0a2h,081h,01dh,007h,0e7h,00ch,0bbh + .byte 000h + .even + +; Compressed string "THE BEATEN MAN AND DISSIPATING" +taker_story1_line17 + .byte 075h,06ah,006h,0a3h,029h,0d6h,0e6h,01bh + .byte 0b8h,0e2h,01bh,088h,06fh,019h,094h,02ah + .byte 04dh,0abh,0b1h,058h,0abh,02fh,00ah,000h + .even + +; Compressed string "INTO THE UNDERTAKER. WITHOUT ANY" +taker_story1_line18 + .byte 0eah,05bh,0c3h,041h,09dh,09ah,081h,0fdh + .byte 096h,0e6h,05ch,08bh,0ach,039h,03fh,001h + .byte 0aeh,0d6h,029h,06ch,0d7h,081h,0f8h,0eah + .byte 000h + .even + +; Compressed string "HESITATION OR REMORSE, HE DID" +taker_story1_line19 + .byte 0a9h,049h,0abh,0b5h,058h,0abh,0f0h,01bh + .byte 0c0h,073h,030h,09bh,02eh,03ch,0d3h,066h + .byte 013h,0a4h,066h,050h,0aah,025h,000h + .even + +; Compressed string "THIS SYSTEMATICALLY TO EACH OF" +taker_story1_line20 + .byte 075h,0aah,0d2h,001h,0adh,0d3h,0b5h,0e9h + .byte 08ah,0b5h,04ah,08ah,06dh,0abh,007h,035h + .byte 01ch,098h,022h,099h,006h,0f0h,009h,000h + .even + +; Compressed string "HIS FOES THAT EVENING, AS IF IN" +taker_story1_line21 + .byte 0a9h,04ah,007h,027h,06ch,0d2h,041h,09dh + .byte 08ah,075h,060h,0deh,0e6h,0abh,0beh,068h + .byte 013h,088h,074h,0a0h,09eh,081h,0fah,002h + .even + +; Compressed string "SOME HYPNOTIC TRANCE. IT'S A" +taker_story1_line22 + .byte 034h,0ech,09ah,041h,0aah,0c7h,02fh,05ch + .byte 0abh,064h,050h,0cfh,0e2h,04bh,09ah,04fh + .byte 010h,0a8h,035h,042h,007h,022h,000h + .even + +; Compressed string "SHAME, TOO, BECAUSE HE ACTUALLY" +taker_story1_line23 + .byte 074h,02ah,0bah,066h,013h,0d4h,030h,0dch + .byte 004h,0a3h,049h,08ah,036h,06dh,006h,0a9h + .byte 019h,088h,064h,06dh,08bh,06dh,0abh,003h + .even + +; Compressed string "LIKED SOME OF THOSE GUYS. IT'S" +taker_story1_line24 + .byte 0adh,0cah,09ah,065h,040h,0c3h,0aeh,019h + .byte 0c0h,067h,050h,0a7h,030h,06dh,006h,0a8h + .byte 0adh,0d3h,04fh,010h,0a8h,035h,042h,003h + .even + +; Compressed string "NOT SURPRISING THOUGH, AS NO ONE" +taker_story1_line25 + .byte 02fh,05ch,007h,0b4h,03dh,0c7h,0b3h,04ah + .byte 0abh,02fh,01ah,0d4h,029h,06ch,0a3h,069h + .byte 013h,088h,074h,0f0h,0c2h,001h,0fch,09ah + .byte 000h + .even + +; Compressed string "EVER COULD UNDERSTAND THE WAYS" +taker_story1_line26 + .byte 0e6h,06dh,0ceh,001h,009h,0dbh,06dh,019h + .byte 0d8h,06fh,069h,0ceh,074h,02dh,0beh,065h + .byte 050h,0a7h,066h,080h,08bh,03ah,00dh,000h + .even + +; Compressed string "OF THE UNDERTAKER, EXCEPT MAYBE" +taker_story1_line27 + .byte 0f0h,019h,0d4h,0a9h,019h,0d8h,06fh,069h + .byte 0ceh,0b5h,0c8h,09ah,073h,013h,004h,066h + .byte 04eh,09ah,071h,01dh,0b8h,0a2h,03eh,09ah + .byte 000h + .even + +; Compressed string "PAUL BEARER. AFTER ALL WAS DONE," +taker_story1_line28 + .byte 0b1h,068h,0b7h,0c1h,068h,08ah,0b3h,039h + .byte 03fh,081h,078h,0d6h,0e6h,01ch,088h,06dh + .byte 01bh,0e0h,022h,01dh,094h,0f0h,06bh,036h + .byte 000h + .even + +; Compressed string "THE UNDERTAKER DISSAPEARED INTO" +taker_story1_line29 + .byte 075h,06ah,006h,0f6h,05bh,09ah,073h,02dh + .byte 0b2h,0e6h,01ch,094h,02ah,04dh,08bh,0b1h + .byte 029h,0ceh,066h,019h,0a8h,06fh,00dh,003h + .even + +; Compressed string "THE BLACKNESS AND HEADED OFF TO" +taker_story1_line30 + .byte 075h,06ah,006h,063h,02bh,092h,0ech,06bh + .byte 0d2h,074h,020h,0beh,065h,090h,09ah,062h + .byte 069h,096h,001h,07ch,09eh,041h,00dh,003h + .even + +; Compressed string "DEATH VALLEY, WHERE HE MAY REST" +taker_story1_line31 + .byte 0a5h,029h,0d6h,069h,070h,08bh,06dh,06bh + .byte 0eah,04dh,080h,0a7h,0e6h,06ch,006h,0a9h + .byte 019h,0b8h,0a2h,01eh,0cch,026h,05dh,003h + .even + +; Compressed string "IN PEACE." +taker_story1_line32 + .byte 0eah,01bh,0c4h,0a6h,048h,09ah,00fh,000h + .even + +; +; Story line table for Story 1 of taker +; +taker_story_tbl1 + .long taker_story1_line1 + .long taker_story1_line2 + .long taker_story1_line3 + .long taker_story1_line4 + .long taker_story1_line5 + .long taker_story1_line6 + .long taker_story1_line7 + .long taker_story1_line8 + .long taker_story1_line9 + .long taker_story1_line10 + .long taker_story1_line11 + .long taker_story1_line12 + .long taker_story1_line13 + .long taker_story1_line14 + .long taker_story1_line15 + .long taker_story1_line16 + .long taker_story1_line17 + .long taker_story1_line18 + .long taker_story1_line19 + .long taker_story1_line20 + .long taker_story1_line21 + .long taker_story1_line22 + .long taker_story1_line23 + .long taker_story1_line24 + .long taker_story1_line25 + .long taker_story1_line26 + .long taker_story1_line27 + .long taker_story1_line28 + .long taker_story1_line29 + .long taker_story1_line30 + .long taker_story1_line31 + .long taker_story1_line32 + .long 0 + +; +; Table of stories for taker +; +taker_stories + .long taker_story_tbl1 + diff --git a/TEMPLATE.ASM b/TEMPLATE.ASM new file mode 100755 index 0000000..6dc8a14 --- /dev/null +++ b/TEMPLATE.ASM @@ -0,0 +1,978 @@ +************************************************************** +* +* 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 + \ No newline at end of file diff --git a/TEST.ASM b/TEST.ASM new file mode 100755 index 0000000..1eca192 --- /dev/null +++ b/TEST.ASM @@ -0,0 +1,3611 @@ +************************************************************** +* +* Software: ? +* Initiated: ? +* +* Modified: Shawn Liptak, 11/14/91 -Total carnage cleanup +* Shawn Liptak, 2/20/92 -Basketball +* GEORGE PETRO, 1/17/93 -NBA JAM +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 3/19/93 13:58 +************************************************************** + .file "test.asm" + .title "test program" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" + .include "display.equ" + .include "sys.equ" + .include "gsp.equ" + .include "imgtbl.glo" + .include "game.equ" + .include "link.equ" + .include "menu.equ" + .include "macros.h" + .include "dip.equ" + .include "fontsimg.glo" + .include "sound.h" + + +;in this module + + .def fudge_switches, fudge_switches2, fudge_switches_diag + .DEF DIAG,CHK_CMOS + .DEF GEN_MENU,B_MENU + .DEF TOP_BOX ;,WT_ADV +; .DEF WW_ADV + .DEF MAIN_RET,GMENULEV +; .DEF CK_DOOR + .DEF AREUSURE + .DEF F_TITLE + .DEF ST_STICK + .DEF GETSTICK + .DEF SUR_MESS + .DEF SURE_BOX + .DEF CPU_RET + .DEF GET_FAC + .DEF MENU_TOP + .DEF RED_BOX + .DEF BLNKHELP,H_SLAVE + .DEF DOBORDER + .DEF COL_INST + .DEF STD_BORD + .DEF DIAG_EX + .DEF WAIT_BUT + .DEF DIGSRT +; .DEF GET_ADV + .DEF SND_MADE + .DEF NO_CLEAR + .DEF LAST_BUT + .DEF G_BORDER + .DEF FORM_SWS +; .DEF LINKY + .DEF CKTEST, CKDIAG, DIAG_COLORS + +;in audit.asm + + .ref CMOS_VAL,L_MESS + .ref LM_SETUP,LM_FINIS + .ref FORM_ADC + .ref F_ADC_S + .ref GET_AUD + .ref FAC_SET + .ref CRED_P + .ref BAD_AUD + .ref CLR_AUD + .ref ADJ_PAGE + .ref COIN_PAG + .ref ROM_NAME + .ref STORE_AUDIT +* +* IN HSTD.ASM +* + .ref INIT_TAB + .ref VAL_TAB + .ref P_FORK + .ref RC_BYTEI + .ref RC_BYTE + .ref RC_WORD + .ref RC_LONG + .ref RC_LONGI + .ref WC_BYTE + .ref WC_BYTEI + .ref WC_WORD + .ref WC_WORDI + .ref WC_LONG + .ref WC_LONGI +* +* IN MENU.ASM +* + .ref MEN_MAIN,ANY_BUT,MEN_YN + .ref MESS_FAC + .ref GO_DIAG ;ROUTINE FOR DIAGNOSTIC MENU + .ref RTR_LEV,ROM_LEV + .ref FAC_STUF + .ref SCODE ;SYNTH CODE CURRENTLY BEING MADE + .ref DCODE ;DIG CODE CURRENTLY BEING MADE + +; IN ADJUST.ASM + + .ref DO_ADJH, CKDIP, MEN_ADJ + + +; IN ATTRACT.ASM + + .ref WIPEOUT + + +; OTHERS + +; .ref TWOPLAYERS ;0 = NO, 1 = YES 2 players + + .ref WARMSET + .ref QSNDRST + .ref FILLAREA + .ref STRNGLEN + + .ref osgfont_t + .ref RD15FONT,RD7FONT,STRCNRM,STRCNRM_1,GAMSTATE + .ref IRQSKYE,BLNKAREA,STRLNRM,CLR_SCRN + .ref WDOGDIS, READ_DIP, dpageflip_off, SWSET1, SWSET2 + + .ref PALFRAM, pal_set, pal_getf, DIAGP + + ;from DCSSOUND.ASM + .ref nosounds + + .ref _coin_addr + .ref _switch_addr + .ref _switch2_addr + +* MAIN_RET +* +* POSITIVE NUMBER HERE SAYS RETURN (UPWARD) TO MAIN MENU (GEN_MENU ONLY) +* NEGATIVE NUMBER HERE SAYS SETUP RESTORE AFTER RAM TEST. (GEN_MENU) + + .BSS MAIN_RET,16 ;FLAG SAYS RETURN TO MAIN MENU + .BSS GMENULEV,16 ;HOW DEEP INTO GEN_MENU WE ARE + .BSS SND_MADE,16 ;SOUND TEST FLAG + .BSS NO_CLEAR,16 ;FLAG TELLS GET_MENU NOT TO CLEAR! + .BSS LAST_BUT,32 + .BSS SPTEMP,32 ;STACK POINTER TEMP + + .def fswitches_cur,fswitches_last,fswitches_down + + .bss fswitches_cur,32 + .bss fswitches_last,32 + .bss fswitches_down,32 + + .globl _switch_map_mode + .bss _switch_map_mode,32 ; 0 = no switch mapping + ; 1 = map switches for menus + ; 2 = map switches for adjustments + ; 3 = Any button mapping mode + + .text + +;sounds + +************************************************************************** +* * +* CPU_RET * +* * +* THIS IS RETURN FROM CPU TEST. SINCE WE NEED TO TEST * +* RAM BEFORE ROM, OUR STATE IS ALSO SMASHED FROM ROM TEST. * +* * +************************************************************************** +CPU_RET: +; CALLR DIAG_STATE ;GET THE STATE RIGHT.....BUT DON'T MESS UP TILL BUTTON +; JSRP WAIT_BUT ;NOW WAIT FOR ANY BUTTON. + CALLR DIGSRT ;MAKE SURE WE'RE IN TEST MODE + + CLR A0 + MOVE A0,@GMENULEV ;INDICATE WE'RE AT LEVEL ZERO. + + MOVI RTR_LEV,A0 ;THIS IS THE LEVEL TO DIVE TO + NEG A0 ;NEGATE IT AS FLAG TO DIVE. + MOVE A0,@MAIN_RET ;INDICATE + JAUC DIAG_RESTART ;NOW START IT UP.... + + + +************************************************************************** +* * +* WAIT_BUT * +* * +* THIS IS CALLED ON RETURN FROM MANY OF THE "HARD" * +* DIAGNOSTIC TESTS TO HOLD CONTROL TILL ANY BUTTON IS * +* HIT. * +* * +************************************************************************** +WAIT_BUT: + CALLR FORM_SWS ;1ST STATE DOESN'T COUNT + +* RETURN CURRENT STATE IN A0..PREVIOUS STATE IN A1. + +WB1: + SLEEPK 1 + CALLR FORM_SWS + NOT A1 ;LAST = 0 AND NOW = 1 MEANS EDGE! + + AND A1,A0 ;1'S WHERE WE HAVE POSITIVE EDGE. + ANDI BUTTONS,A0 ;IS IT A BUTTON? + JRZ WB1 + + movi beep1_snd,a3 + calla SNDSND + + RETP + + +************************************************************************** +* * +* CKTEST * +* * +* CHECK TO SEE IF EITHER OF THE TEST BUTTONS IS CLOSED, * +* IF NOT, HEAD OUT TO WARMSET * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* NOTHING * +* * +************************************************************************** +CKTEST +; rets + PUSH A0 + CALLA READ_DIP + ANDI DPTEST,A0 + JRNZ CKRET +; MOVE @SWITCH,A0,L + move @_coin_addr,a0,L + move *a0,a0,W + sll 16,a0 + NOT A0 + ANDI DIAG_BITS,A0 + JAZ WARMSET ; WE BE OUTTA HERE! +CKRET + PULL A0 + RETS + + +************************************************************************** +* * +* CKDIAG * +* * +* CHECK TO SEE IF WE NEED TO GO OFF TO THE DIAGNOSTICS ROUTINES * +* * +* ENTRY * +* NOTHING * +* * +* EXIT * +* A0 0 = COOL, 1 = GO TO DIAGS * +* * +************************************************************************** +CKDIAG + CLR A0 + CALLA READ_DIP + ANDI DPTEST,A0 + JRNZ CKDGO +; MOVE @SWITCH,A0,L + move @_coin_addr,a0,L + move *a0,a0,W + sll 16,a0 + NOT A0 + ANDI DIAG_BITS,A0 + JRZ CKDRET +CKDGO + MOVK 1,A0 +CKDRET + MOVE A0,A0 + RETS + +************************************************************************** +* DIAG - THIS IS THE ENTRY TO THE MAIN DIAGNOSTIC MENU. + +DIAG + movi AUDSTAT,a0 + clr a1 + calla STORE_AUDIT + move @GAMSTATE,a0 + jan SUCIDE ;In diagnostics +; move @COINS,a0 ;Check coin switches + move @_coin_addr,a0,L + move *a0,a0 + btst CDI_BIT,a0 ;Coin door closed ? + jaz SUCIDE ;Yes - then diagnostic NOT allowed + movk 1,a0 + move a0,@_switch_map_mode,L + +DIAG_JUMP + CALLR DIGSRT ;MAKE SURE WE'RE IN TEST MODE +; JSRP WW_ADV ;HOLD UNTIL HE LETS GO! + + CLR A0 + MOVE A0,@MAIN_RET ;CLEAR THE FLOAT TO TOP FLAG. + MOVE A0,@GMENULEV ;INDICATE WE'RE AT LEVEL ZERO. + +DIAG_RESTART + MOVI MEN_MAIN,A8 + JSRP GEN_MENU ;PROCESS THIS MENU! + clr a0 + move a0,@_switch_map_mode,L + +; HE (FINALLY) PICKED EXIT....RETURN! + +DIAG_EX + SLEEPK 2 ;LET DMA EMPTY OUT IF NECESSARY + +; CALLA CMOS_VAL ;IF SETTINGS SMASHED....FIX EM. +; JAUC WARMSET + + + + +; SLEEP 2 + CALLA CLR_SCRN + CALLA CMOS_VAL ; VALIDATE THE CMOS + CALLA CKTEST + CALLA READ_DIP + ANDI DPTEST,A0 + MOVE A0,@SWSET2,L + JRZ DE2 + MOVI NOTCLOSEDDIP,A8 + JSRP L_MESS + jruc #out +DE2 +; MOVE @SWITCH,A0,L + move @_coin_addr,a0,L + move *a0,a0,W + sll 16,a0 + NOT A0 + ANDI DIAG_BITS,A0 + MOVE @SWSET2,A14,L + OR A0,A14 + MOVE A14,@SWSET2,L + MOVE A0,A0 + JRZ DE3 + MOVI NOTCLOSEDJAMMA,A8 + JSRP L_MESS + jruc #out +DE3 + JAUC WARMSET +#out + MOVI NOTCLOSEDWAIT,A8 + JSRP L_MESS + + CALLA fudge_switches ;get fudged switches in a0 + andi BUTTONS|START_BITS,a0 + MOVE A0,@SWSET1,L +DE4 + SLEEPK 1 ;APPEASE THE MAIN LOOP + CALLR CKTEST ;CHECK STATUS OF TEST SWITCH + + CALLA fudge_switches ;get fudged switches in a0 + MOVE @SWSET1,A1,L + andi BUTTONS|START_BITS,a0 + CMP A0,A1 + JRNZ DE5 + + + MOVE @SWSET2,A3,L + MOVE A3,A1 + CALLA READ_DIP + ANDI DPTEST,A0 + ANDI DPTEST,A1 + CMP A0,A1 + JRNE DIAG_EX + +; MOVE @SWITCH,A0,L ;GOTTA SEE IF TIME TO LEAVE + move @_coin_addr,a0,L + move *a0,a0,W + sll 16,a0 + NOT A0 + ANDI DIAG_BITS,A0 + ANDI DIAG_BITS,A3 + CMP A0,A3 + JRNE DIAG_EX + + JRUC DE4 + +DE5 + CALLR CKTEST ; ONE FINAL TIME ( STILL WRONG ) + JRUC DIAG_JUMP + + +NOTCLOSEDDIP + MESS_MAC RD7FONT,SPACING07,200,50,COLOR_RED,STRCNRM,0 + .STRING "DIPSWITCH TEST SELECT (SW1 # 1) CLOSED.",0,0 + .EVEN + +NOTCLOSEDJAMMA + MESS_MAC RD7FONT,SPACING07,200,70,COLOR_RED,STRCNRM,0 + .STRING "COIN DOOR TEST SWITCH CLOSED.",0,0 + .EVEN + +NOTCLOSEDWAIT + MESS_MAC RD7FONT,SPACING07,200,120,COLOR_RED,STRCNRM,0 + .STRING "PRESS ANY BUTTON TO RETURN TO TEST MODE OR",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,132,COLOR_RED,STRCNRM,0 + .STRING "OR",0,1 + .EVEN + MESS_MAC RD7FONT,SPACING07,200,144,COLOR_RED,STRCNRM,0 + .STRING "OPEN THE SWITCH(S) TO RETURN TO GAME.",0,0 + .EVEN + +************************************************************************** +* * +* GEN_MENU * +* * +* THIS IS A GENERAL MENU HANDLER. IT POSTS THE MENU * +* WITH SELECTION 1 AVAILABLE. AFTER A SELECTION IS * +* MADE, IF IT HAS A ROUTINE CODE OF ZERO, (EXIT) * +* IT RETURNS TO THE LEVEL ABOVE IT. ELSE, IT * +* JSRP'S THE NEW ROUTINE. WHEN THE NEW ROUTINE * +* RETURNS, WE RE-POST THE SAME MENU WITH THE * +* BAR ON THE FOLLOWING ENTRY. * +* * +* A8 = MENU DESCRIPTOR * +* * +************************************************************************** +* +* MENU ROM OFFSETS +* +MR_FONT EQU 0 +MR_TCAL EQU MR_FONT+LONG_SIZE +MR_TITLE EQU MR_TCAL+LONG_SIZE ;POINTER TO TITLE FOR TILE BOX (IF NEC) +MR_TCLR EQU MR_TITLE+LONG_SIZE ;COLOR OF TITLE +MR_WORDS EQU MR_TCLR+WORD_SIZE ;STREAM OF WORDS TO COPY TO PDATA STARTS HERE +MR_X EQU MR_WORDS +MR_Y EQU MR_X+WORD_SIZE +MR_DY EQU MR_Y+WORD_SIZE +MR_COL EQU MR_DY+WORD_SIZE +MR_HITE EQU MR_COL+WORD_SIZE +MR_BDY EQU MR_HITE+WORD_SIZE +MR_DX EQU MR_BDY+WORD_SIZE +MR_WID EQU MR_DX+WORD_SIZE + +GEN_MENU + MOVE @GMENULEV,A0 ;KICK LEVEL POINTER + INC A0 + MOVE A0,@GMENULEV + + MOVE A8,-*A12,L ;SAVE MENU PTR + movk 1,A8 ;START WITH "FIRST" ENTRY + MOVE A8,-*A12,W ;PUT MENU NUMBER AS A WORD + +* IF WE GET HERE AND MAIN_RET IS NOT ZERO, THE WE MUST +* RETURN TO LEVEL ABOVE US IF WE'RE NOT THE MAIN +* MENU. + + +GEN_LOOP + MOVE @MAIN_RET,A0 ;ARE WE IN "EXIT" MODE? + JRZ NO_EXIT ;NO + + JRN DIVE_TO_MONITOR ;WE'RE DIVING TO MONITOR PATTERNS. + + MOVE @GMENULEV,A0 ;CHECK LEVEL + subk 1,a0 ;are we at level 1 + jrne GEN_EXIT ;NOPE.....POP UP A LEVEL. + +* WE'RE AT LEVEL 1....CLEAR OUT THE FLAG THAT +* GOT US HERE. + +DIVE_COMPLETE + CLR A0 + MOVE A0,@MAIN_RET ;NOW WE MAY PROCEED! + +NO_EXIT + MOVE @NO_CLEAR,A0 ;INHIBIT CLEAR? + JRNZ SKIP_CLR + CLR B13 + CALLA CLR_SCRN ;CLEAR THE SCREEN + +SKIP_CLR + CLR A0 + MOVE A0,@NO_CLEAR ;AND RE-SET IT! + + MOVE *A12(WORD_SIZE),A8,L ;GET MENU DESCRIPTOR + JSRP MENU_TOP + JSRP RED_BOX ;PUT UP MAIN MENU INSTRUCTIONS + + MOVE *A12,A9 ;GET MENU NUMBER TO USE + JSRP B_MENU ;GET RESULT + +PHONEY_MENU_RET + + MOVE A10,A10 ;WAS IT ADVANCE? + JRZ NO_KICK ;NOPE....LEAVE WHERE HE CAME FROM + + INC A8 ;KICK INDEX BY 1 FOR NEXT TIME +NO_KICK + MOVE A8,*A12 ;AND LEAVE ON THE STACK + + MOVE A9,A9 ;NOW JSRP THE ROUTINE + JRZ GEN_EXIT ;NONE THERE....ITS "EXIT" + +* JSRP TO A9 + + MOVI GEN_LOOP,A7 + MOVE A7,-*A12,L ;PUSH RET ADDR + JUMP A9 + +GEN_EXIT + ADDI WORD_SIZE+LONG_SIZE,A12 ;POP THE ARGUMENTS + MOVE @GMENULEV,A0 ;KICK LEVEL POINTER + DEC A0 + MOVE A0,@GMENULEV + RETP + +************************************************************************** +* * +* DIVE_TO_MONITOR * +* * +* WE GET CONTROL HERE WHEN WE ARE KLUDGING THE RETURN * +* FROM "CPU" TEST (WHICH BLOWS AWAY RAM!) * +* * +************************************************************************** +DIVE_TO_MONITOR: + MOVE @GMENULEV,A0 ;CHECK LEVEL + CMPI 1,A0 ;ARE WE AT LEVEL 1 + JRNZ DTM1 ;NOPE....SET "MONITOR" LEVEL +* +* WE'RE AT LEVEL 1......."SELECT" THE DIAGNOSTIC MENU +* A8 = 1.....A9 = ROUTINE FOR DIAGNOSTIC MENU +* + MOVK 1,A8 + MOVI GO_DIAG,A9 ;ROUTINE FOR DIAGNOSTIC MENU + MOVK 1,A10 ;RETURN AS IF ADVANCE WAS PRESSED + JRUC PHONEY_MENU_RET ;WE'RE READY TO CALL DIAG MENU +* +* WE'RE IN DIAGNOSTIC MENU....NOW WE JUST NEED TO MAKE +* THE "CURRENT" SELECTION THE ONE AFTER CPU TEST +* (MONITOR PATTERNS) +* +DTM1: + MOVE @MAIN_RET,A8 ;FLAG IS OPPOSITE OF ENTRY NUMBER + NEG A8 ;THIS IS RETURN LEVEL! +* MOVI RTR_LEV,A8 ;START WITH "RETURN" ENTRY NUMBER + MOVE A8,*A12 ;PUT MENU NUMBER AS A WORD + JRUC DIVE_COMPLETE ;THIS COMPLETES THE DIVE! + +************************************************************************** +* +* FOR DOBORDER +* +* A4 = UPPER LEFT Y,X +* A5 = LOWER RIGHT Y,X +* A0 = Y,X WIDTH OF BORDER +* A9 = COLOR OF BORDER. + +************************************************************************** +* * +* TOP_BOX * +* * +* THIS DISPLAYS THE TEST BOX AT THE TOP. * +* * +* A2 POINTS AT THE STRING TO CENTER IN THE BOX. * +* A3 IS COLOR TO DO IT IN. * +* * +************************************************************************** +MENU_TOP: + MOVE *A8(MR_TITLE),A2,L ;GET TITLE INTO A2 + MOVE *A8(MR_TCLR),A3 ;AND COLOR INTO A3 + +TOP_BOX: + MOVE A8,-*A12,L ;PUSH MENU PTR +* +* FIRST MAKE THE BOX...IT BLACKS OUT THE REGION +* + CALLR SCR_BOX ;PUT UP THE TITLE BOX + + MOVI MESS_TITLE,A8 ;SET PARAMETERS + CALLA LM_SETUP ;PUT IT OUT. + + MOVE A2,A8 ;GET STRING IN THE CORRECT REGGIE +; MOVE A3,A6 ;MOVE COLOR TO COLOR REGGIE + + JSRP LM_FINIS ;AND PRINT IT! + + JSRP SCR_REV ;NOW ADD THE REV. + + MOVE *A12+,A8,L ;RESTORE THE MENU PTR + + RETP + +************************************************************************** +* * +* SCR_REV * +* * +* DISPLAY REV IN TITLE BOX. * +* * +************************************************************************** +SCR_REV: + MOVI MESS_REV,A8 ;GET READY FOR REV MESSAGE + CALLA LM_SETUP ;SETUP FOR REV MESSAGE + + MOVI ROM_NAME,A8 ;USE ROM COPY OF REV. + JSRP LM_FINIS ;FINISH PRINTING MESSAGE + RETP + +************************************************************************** +* * +* SCR_BOX * +* * +* THIS DISPLAYS THE TITLE BOX. * +* * +************************************************************************** +SCR_BOX: + MOVI TIT_ULX+(10000H*TIT_ULY),A4 ;UPPER LEFT + MOVI TIT_LRX+(10000H*TIT_LRY),A5 ;UPPER LEFT + MOVI COLOR_YELLOW,A9 + CALLR STD_BORD + RETS + +* THIS PRINTS THE "MOVE JOYSTICK" BOX. +* +* A8 = MENU DESCRIPTOR THAT WILL ACCOMPANY IT +* ON SCREEN. WE ADJUST THE BOX EDGES AND +* MESSAGE CENTER IN "X" ONLY TO CORRESPOND +* TO THE MENU BOX. + +RED_BOX: + MOVE A8,-*A12,L ;PUSH THE MENU PTR + + MOVI ROBO_RED,A9 + CALLR COL_INST ;THIS PRINTS BOX AND STASHES +* ;CENTER X AT *A13(PDATA),W + + MOVI MM_INST1,A8 ;POINT AT INSTRUCTIONS MESSAGE + JSRP C_PD_M + + MOVI MM_INST2,A8 ;POINT AT INSTRUCTIONS MESSAGE + JSRP C_PD_M + + MOVE *A12+,A8,L ;GET BACK MENU PTR. + RETP + +************************************************************************** +* * +* COL_INST * +* * +* THIS PRINTS OUT THE "CYAN" INSTRUCTION BOX * +* IN THE COLOR SPECIFIED BY A9. * +* * +************************************************************************** +COL_INST: +* +* WE NEED TO DETERMINE LEFT AND RIGHT X +* + CALLR STUFF_MENU_PROCESS ;MOVE DATA INTO PDATA AREA + CALLR MEN_NUMS ;GET THE NUMBERS FOR THIS MENU + MOVE A6,*A13(PDATA),W ;STASH THE X CENTER + ADDI 10000H*INST_ULY,A4 ;UPPER LEFT Y + ADDI 10000H*INST_LRY,A5 ;UPPER LEFT X + CALLR STD_BORD + RETS + +************************************************************************** +* * +* MEN_NUMS * +* * +* THIS IS CALLED TO GET SOME NUMBERS ASSOCIATED * +* WITH A MENU BOX. * +* * +* THIS RETURNS: * +* * +* A4 = LEFT X * +* A5 = RIGHT X * +* A6 = CENTER X * +* * +************************************************************************** +MEN_NUMS: + CALLR MENU_UL_A4_A5 ;LEFT X IN A4 + CALLR MENU_LR_A6_A5 ;RIGHT X IN A6 + MOVE A6,A5 ;COPY RIGHT X INTO A5 + ADD A4,A6 ;FIND CENTER + SRL 1,A6 ;A6 NOW HAS CENTER X (FOR LATER) + RETS + +************************************************************************** +* * +* C_PD_M * +* * +* THIS PRINTS A L_MESS MESSAGE PASSED IN A8, CENTERED * +* ON THE X STORED AT *A13(PDATA),W * +* * +************************************************************************** +C_PD_M: + CALLA LM_SETUP ;SETUP THE MESSAGE + MOVE *A13(PDATA),A3 ;GET THE X + movx a3,a9 ;Move X + JUMP A1 ;AND "CALL" THE ROUTINE + +************************************************************************** +* * +* DIGSRT * +* * +* THIS IS CALLED ON ENTRY TO DIAGNOSTICS. * +* * +************************************************************************** + +DIGSRT + CALLR DIAG_STATE + CALLA WIPEOUT ;INITIALIZE THE OBJECT LIST + + ;kill that damned announcer proc too. + movi VOICE_PID,a0 + clr a1 + not a1 + calla EXISTP + jrz #no_bleedin_announcer + calla KILL +#no_bleedin_announcer + CALLR DIAG_COLORS ;RESTART THE COLOR PROCESSES. +; JSRP QSNDRST ;kill any sounds in progress + calla nosounds + calla dpageflip_off + MOVK 1,A0 + MOVE A0,@DISPLAYON ;WE NEED TO SEE THE STUFF + + movi HEBLNKINIT,a0 + move a0,@HEBLNK + + jauc CLR_SCRN ;CLEAR THE SCREEN! + +DIAG_STATE + CLR A1 + CALLA KILALL ;KILL ABSOLUTELY EVERYONE! + + MOVI DIAG_PID,A1 ;SET OUR ID TO DIAGNOSTICS MAN + MOVE A1,*A13(PROCID) ;PASS OUR ID TO FORKED PROCESS + + movi INDIAG,a0 + move a0,@GAMSTATE ;PUT US IN TEST MODE! + rets + + + +NUM_DIAG_CYCLE_COLORS .EQU 4 +DIAG_CYCLE_COLOR_START .EQU 03CH + + .BSS DIAG_CRAM,NUM_DIAG_CYCLE_COLORS*16,1 ;RAM FOR TRANSFER + +************************************************************************** +* * +* DIAG_COLORS - PROCESS THAT CYCLE COLORS FOR THE DIAGNOSTIC MENUS. * +* * +************************************************************************** +DIAG_COLORS + MMTM SP,A0,A1,A7 + MOVI COLRPID,A0 + CLR A1 + MOVE A1,@IRQSKYE + move a1,@PALFRAM,L + CALLA KIL1C ;KILL ALL COLOR UPDATE PROCESSES + MOVI DIAGP,A0 ;CREATE DIAGNOSTICS PALLETTE + CALLA pal_getf + MOVI COLRPID,A0 + CLR A1 + NOT A1 + CALLA KILALL + CREATE COLRPID,PC_TRANSFER + CREATE COLRPID,LFLASH + CREATE COLRPID,RGB + CREATE COLRPID,BPR + CREATE COLRPID,DECAY + MMFM SP,A0,A1,A7 + RETS + +************************************************************************** +* * +* TABLE DRIVEN COLOR RAM PROCESSES * +* * +************************************************************************** +* 18000B0(11) - BPR +* 18000C0(12) - DECAY +* 18000D0(13) - LASER FLASH +* 18000E0(14) - RGB + +RGB CALLR TABDRIVE + .LONG RGBTAB,DIAG_CRAM+30H + .WORD 8 +RGBTAB .WORD 07C00H,001FH,>77A0,>741A,0FFFFH + +* +DECAY CALLR TABDRIVE + .LONG DCATAB,DIAG_CRAM+010H + .WORD 2 +DCATAB .WORD 001CH,001CH,011CH,021CH,031CH,039CH,239CH,2390H,2388H + .WORD 2380H,4300H,5280H,7180H,6180H,7080H,7000H,6000H,5000H + .WORD 4000H,3000H,2000H,1000H,0FFFFH +* +BPR CALLR TABDRIVE + .LONG BPRTAB,DIAG_CRAM + .WORD 1 +BPRTAB .WORD 001CH,101CH,201CH,301CH,401CH,501CH,601CH,701CH,7010H + .WORD 7010H,7008H,7008H,7000H,7000H,7008H,7008H,7010H,7010H + .WORD 701CH,701CH,601CH,501CH,401CH,301CH,201CH,101CH,0FFFFH + +************************************************************************** +* * +* LFLASH - PROCESS TO CREATE THE FAMOUS LASER FLASH COLOR * +* * +************************************************************************** +LFLASH MOVI 07FFFH,A0 + MOVE A0,@DIAG_CRAM+20H,W + SLEEPK 2 +LFLASH1 + MOVE @RAND,A0,W + ANDI 0000001FH,A0 + MOVI COLTAB,A1 + SLL 4,A0 + ADD A0,A1 + MOVE *A1,A1,W + MOVE A1,@DIAG_CRAM+020H,W + SLEEPK 6 + JRUC LFLASH + +COLTAB .WORD 0380H,1380H,2380H,3380H,4380H,5380H,6380H,7380H,7300H + .WORD 7280H,7200H,7180H,7080H,7008H,7008H,7010H,7010H,701CH + .WORD 701CH,601CH,501CH,409CH,309CH,209CH,219CH,029CH,039CH + .WORD 139CH,239CH,339CH,539CH,739CH,7390H,7380H,6380H,4380H + .WORD 0FFFFH + +************************************************************************** +* * +* THE TABLE DRIVEN PROCESS * +* * +************************************************************************** +TABDRIVE + MOVE *SP+,A0,L + MOVE *A0+,A11,L ;A11 = TABLE START + MOVE *A0+,A9,L ;A9 = LOCATION TO STUFF COLOR + MOVE *A0,A10,W ;A10 = SLEEP TIME +TABDRV1 + MOVE A11,A8 ;RESET TO START OF TABLE +TABDRV2 + MOVE *A8+,A0,W ;GET A COLOR + JRN TABDRV1 ;BR = END OF TABLE + MOVE A0,*A9,W + MOVE A10,A0 + MOVI TABDRV2,A7 + JAUC PRCLSP ;LOOP SLEEP + +************************************************************************** +* * +* PC_TRANSFER - PROCESS TO TRANSFER CYCLE COLORS TO THE COLOR * +* RAM EVERY TICK. * +* * +************************************************************************** +PC_TRANSFER + MOVI DIAG_CRAM,A0 + MOVI DIAG_CYCLE_COLOR_START,A1 + MOVI NUM_DIAG_CYCLE_COLORS,A2 + CALLA pal_set + SLOOP 1,PC_TRANSFER + +************************************************************************** +* * +* CHK_CMOS * +* * +* This is the routine that is called at power up. * +* * +* It checks to see if CMOS adjustments are in tact. * +* IF THE ADJUSTMENTS ARE BAD, OR SET FOR A DIFFERENT * +* GAME OR REVISION, we cause a factory setting to * +* occur. We then try and validate the all time * +* HSTD table. If this is bad we then zero audits. * +* If HSTD table is ok, then we leave audits alone. * +* * +************************************************************************** +CHK_CMOS + CALLR DIGSRT ;CLEAR OUT THE SCREEN...(MESSAGE WILL FOLLOW!) + CALLA CMOS_VAL + JRNZ FAC_TIME + MOVI MESS_BITCHIN,A2 ;POINT AT DATA + MOVI ROBO_WHITE,A3 + JSRP TOP_BOX + SLEEPK 18H + RETP +; JAUC WARMSET ;CMOS IS OK....RETURN! +* +* WE NEED TO FACTORY SET THIS THING (DUE TO BAD SETTINGS.) +* +FAC_TIME: + JSRP GET_FAC ;GET THE GAME TO FACTORY SETTINGS! +; JSRP WW_ADV ;WAIT WHILE ADVANCE IS PRESSED +; +; JSRP WT_ADV ;NOW WAIT TILL ADVANCE IS PRESSED +; + CALLA CLR_SCRN ;PRESSED....BLANK THE SCREEN AND + ;HOLD TILL HE LETS GO. +; +; JSRP WW_ADV ;HOLD CONTROL HERE TILL HE LETS GO + JAUC WARMSET ;CMOS IS OK....RETURN! +; JRUC DIAG_JUMP ;NOW INTO TEST MODE FOR ADV. BUTTON. + +************************************************************************** +* * +* GET_FAC * +* * +* THIS IS CALLED TO BRING THE GAME TO A FACTORY SETTINGS * +* STATE. IT WILL STORE THE FACTORY SETTINGS OR WAIT * +* UNTIL THE DOOR IS OPEN. IF IT CAN'T GET FACTORY SETTINGS * +* IT WILL PRINT A FAILURE MESSAGE. * +* * +************************************************************************** +GET_FAC + +FAC_LOOP + CALLA CLR_SCRN ;CLEAR SCREEN IN ANTICIPATION OF MESSAGE + clr a0 ;Full + CALLA FAC_SET + CALLA CMOS_VAL ;IS IT OK NOW? + JRZ CMOS_FIXED ;YEP....FINISH CLEANUP! + + MOVI MESS_FAIL,A8 ;POINT AT DATA + JSRP L_MESS ;DISPLAY LARRY MESSAGE + + JRUC WAIT_POINT ;WE'RE DEAD..ADVANCE TAKES US TO TEST MODE! + +CMOS_FIXED +* +* THIS IS WHERE WE ARE ONCE WE HAVE FACTORY SET.... +* MESSAGE WOULD GO HERE. +* + CALLR CENT_BOX ;PUT A BOX AROUND IT + + MOVI MESS_FAC,A8 ;POINT AT DATA + JSRP L_MESS ;DISPLAY LARRY MESSAGE + +* NOW.....CLEAR HIGH SCORE TABLE +* CLEAR OUT THE AUDITS. + + CALLA FAC_STUF ;DO REST OF FULL FACTORY STUFF! + +* AT THIS POINT WE HANG WAITING FOR THE ADVANCE SWITCH. + +WAIT_POINT + RETP ;NOW LET CALLER TAKE OVER. + +************************************************************************** +* * +* WT_ADV * +* * +* WAIT TILL ADVANCE. THIS HOLDS CONTROL UNTIL ADVANCE * +* BUTTON IS PRESSED. * +* * +************************************************************************** +;WT_ADV: +; SLEEPK 2 +; +;WT_A6: +; CALLR GET_ADV ;SCAN THE BUTTON +; JRNZ WT_ADV ;NOT PRESSED. +; RETP +; + +;************************************************************************** +;* * +;* WW_ADV * +;* * +;* WAIT WHILE ADVANCE. THIS HOLDS CONTROL WHILE ADVANCE * +;* BUTTON IS HELD (OR STUCK). * +;* * +;************************************************************************** +;WW_ADV: +; SLEEPK 2 +; CALLR GET_ADV +; JRZ WW_ADV +; RETP +; +;************************************************************************** +;* * +;* GET_ADV * +;* * +;* THIS GETS PHYSICAL STATE OF ADVANCE BUTTON. * +;* * +;* .EQ. PRESSED * +;* .NE. OPEN * +;* * +;************************************************************************** +;GET_ADV: +; MMTM SP,A0 +; MOVE @COINS,A0,W ;FETCH COIN SWITCHES (LOOKING FOR ADVANCE) +; ANDI ADV_BIT,A0 ;KEEP ADVANCE BIT. +; MMFM SP,A0 +; RETS +; +;************************************************************************** +;* * +;* CK_DOOR * +;* * +;* THIS IS CALLED TO SEE IF THE FRONT DOOR (MEMORY * +;* PROTECT SWITCH IS OPEN. * +;* * +;* .NE. OPEN (OK TO WRITE CMOS) * +;* .EQ. CLOSED (CAN'T WRITE CMOS) * +;* * +;************************************************************************** +;CK_DOOR: +; MMTM SP,A0 +; MOVE @COINS,A0,W ;FETCH COIN SWITCHES (LOOKING FOR ADVANCE) +; ANDI DOOR_BIT,A0 ;KEEP COIN DOOR MEMORY PROTECT. +; MMFM SP,A0 +; RETS +; +************************************************************************** +* * +* GET_MENU * +* * +* This routine is called (via JSRP) to display a menu on * +* screen and receive a selection from the operator. * +* * +* The menu descriptor is passed in A8. * +* * +* The selection number is returned in a8. (line 1 = 1) * +* The routine address is returned in a9. * +* A10 is returned non-zero if advance was the button used * +* * +* A menu (pointed to by A8) is defined as follows: * +* * +* FONT TO BE USED (LONG) * +* X FOR LEFT MARGIN (WORD) * +* Y FOR TOP LINE (WORD) * +* DY PER ENTRY (WORD) * +* TEXT_COLOR (WORD) * +* HEIGHT OF SELECTION BAR (WORD) * +* DX FROM TOP OF TEXT TO SEL. BAR (WORD) * +* * +* A9 POINTS AT ENTRY TO START WITH * +* * +* Then for each entry: * +* * +* TEXT POINTER (LONG) * +* ACTIVATION ROUTINE (LONG) * +* * +* The list is terminated by a zero. * +* * +* This routine forks a separate process to do the work * +* for it. Therefore the caller has full use of * +* the PDATA area. * +* * +************************************************************************** +* +* Equates for GET_MENU slave process. +* +MEN_OFF EQU PDATA ;WORD-OFFSET INTO MENU OF SELECTION +MEN_ROUT EQU MEN_OFF+WORD_SIZE ;LONG-ROUTINE FOR SELECTION +MEN_ROM EQU MEN_ROUT+LONG_SIZE ;LONG-POINTER TO ROM STRUCTURE +MEN_ULX EQU MEN_ROM+LONG_SIZE ;WORD-LEFT X (CENTER X WHEN CENTERING) +MEN_ULY EQU MEN_ULX+WORD_SIZE ;WORD-TOP Y +MEN_DY EQU MEN_ULY+WORD_SIZE ;WORD-Y UNITS PER ENTRY +MEN_COLR EQU MEN_DY+WORD_SIZE ;WORD-COLOR FOR ENTRIES +MEN_BAR EQU MEN_COLR+WORD_SIZE ;WORD-HEIGHT OF SELECTION BAR +MEN_BDY EQU MEN_BAR+WORD_SIZE ;WORD-DY FROM TOP OF TEXT TO TOP OF BAR. +MEN_BDX EQU MEN_BDY+WORD_SIZE ;WORD-DX FROM LEFT OF WORD TO LEFT OF BAR +MEN_BWID EQU MEN_BDX+WORD_SIZE ;WORD-WIDTH OF BAR +MEN_SCOL EQU MEN_BWID+WORD_SIZE ;WORD-COLOR OF SELECTED TEXT +MEN_TPTR EQU MEN_SCOL+WORD_SIZE ;LONG-POINTER TO BEGINNING OF TEXT ENTRIES. +MEN_ENTS EQU MEN_TPTR+LONG_SIZE ;WORD-NUMBER OF ENTRIES IN MENU +MEN_CUR EQU MEN_ENTS+WORD_SIZE ;WORD-CURRENT SELECTION (1ST IS 1) +MEN_WALK EQU MEN_CUR+WORD_SIZE ;WORD-NUMBER OF ENTRY WE'RE ON AS WE WALK +MEN_STIK EQU MEN_WALK+WORD_SIZE ;LONG-"STUCK" STATE OF SWITCHES +MEN_ACT EQU MEN_STIK+LONG_SIZE ;LONG-SWITCH WE'RE ACTING ON. (BIT) +MEN_TYPO EQU MEN_ACT+LONG_SIZE ;WORD-TYPOMATIC COUNTER +MEN_HITS EQU MEN_TYPO+WORD_SIZE ;WORD-CONSECUTIVE TYPOMATIC HITS +MEN_ADV EQU MEN_HITS+WORD_SIZE ;WORD-NON-ZERO IF ADVANCE WAS BUTTON USED + +WORD_ENTS EQU (MEN_TPTR-MEN_ULX)/WORD_SIZE ;NUMBER OF WORD ENTRIES + +B_MENU: + MOVI BD_SLAVE,A7 + JRUC GMJMP + +GET_MENU: + MOVI GM_SLAVE,A7 ;THIS IS ROUTINE +GMJMP: + MOVI MENU_PID,A1 ;THIS IS ID + CALLA GETPRC ;CREATE IT + + MOVE A0,A10 ;SAVE HIS POINTER + +GM1: + SLEEPK 2 + + MOVI MDUN_PID,A0 + MOVI 0FFFFH,A1 + CALLA EXISTP ;WAIT FOR ID TO CHANGE TO THIS! + + JRZ GM1 ;LOOP UNTIL IT EXISTS! + + MOVE *A10(MEN_OFF),A8 ;RETURN OFFSET OF SELECTION + MOVE *A10(MEN_ROUT),A9,L ;AND ROUTINE THAT WAS SELECTED. + MOVE *A10(MEN_ADV),A10 ;INDICATE WHETHER ADVANCE WAS USED + + MOVI MDUN_PID,A0 + MOVI 0FFFFH,A1 + CALLA KILALL ;KILL THE HANGING MENU GETTER! + RETP ;AND RETURN + + +************************************************************************** +* * +* GM_SLAVE * +* * +* This displays the menu.......moves the selection bar * +* and returns the selection information by stuffing * +* it in its process area and changing its ID to * +* MDUN_PID once selection is made. * +* * +* On entry....A8 points at the GET_MENU data structure. * +* A9 is which entry to start with selected. * +* * +************************************************************************** +BD_SLAVE + CALLR MENU_BORDER ;DRAW THE BORDER FOR SELCTIONS. + SLEEP 3 + +GM_SLAVE + JSRP ST_STICK ;TELL STICK(S) AND BUTTONS WE'RE STARTING. + + CALLR STUFF_MENU_PROCESS ;MOVE DATA INTO PDATA AREA + +* PLOT ENTIRE MENU +* +* DO_MENU_LINE WILL RETURN CARRY SET +* WHEN WE GET BEYOND THE END. + + MOVK 1,A0 ;SETUP FOR LINE 1. + +DO_ANOTHER_LINE + + MOVE A0,*A13(MEN_WALK),W ;WALK THROUGH. + + JSRP DO_MENU_LINE ;PUT OUT LINE IN A0. + MOVE *A13(MEN_WALK),A0,W ;GET BACK THE COUNTER + + INC A0 ;MOVE TO NEXT ENTRY. + MOVE *A13(MEN_ENTS),A1,W ;SEE IF WE'RE DONE. + CMP A1,A0 + JRLS DO_ANOTHER_LINE +* +* MAIN MENU PLOTTED......NOW LET THE DMA UN-LOAD BEFORE PLOTTING HELP +* + SLEEP 2 + CALLR PLOT_HELP ;PLOT HELP FOR 1ST IF NECESSARY + +* SLEEPK 2 ;NOW MAKE SURE THE HELP GETS PLOTTED +* +* NOW WE JUST WANT TO UPDATE BASED ON STICK...ACT +* ON BUTTONS! +* +* RESPONSES: UP....DOWN....BUTTON....NOTHING.... +* +* NOTHING = 0 +* UP = 1 +* DOWN = 2 +* BUTTON = 3 +* +* A0 = RESPONSE +* A1 = MEN_CUR VALUE. + +MENU_LOOP + SLEEPK 1 + calla READ_DIP ;Get the current dip switch bits + btst DPTEST_B,a0 + jrnz #dipon + +; move @COINS,a5 +; btst 4,a5 +; jrnz DIAG_EX ;Test switch off? +#dipon + MOVI MENU_TYPO,A5 + JSRP GETSTICK ;ASK THE STICK HANDLER....... + MOVE A0,A0 ;SEE WHAT GET_STICK RETURNED. + JRZ MENU_LOOP ;MENU...(PAUSE) NOTHING. + + MOVE *A13(MEN_CUR),A1,W ;GET CURRENT ENTRY...IN A1 + + cmpi 4,a0 + jrz menu_escape + + CMPI 3,A0 ;BUTTON? + JRZ MENU_BUTTON ;YEP....WE'RE OUT OF HERE. + + CMPI 2,A0 + JRZ MENU_DOWN ;ITS DOWN.... +* +* REQUEST TO GO UP....ARE WE AT #1 +* + CMPI 1,A1 ;WELL? + JRLS MENU_LOOP ;YEP....IGNORE + + JSRP UN_SELECT ;PUT BACK THE OLD "CURRENT ONE + MOVE *A13(MEN_CUR),A0,W ;GET CURRENT ENTRY + DEC A0 ;MAKE ONE LESS. + movi d_up_snd,a3 + JRUC JOIN_DOWN ;NOW PLOT THE NEW ONE. + +MENU_DOWN: + MOVE *A13(MEN_ENTS),A2,W ;GET NUMBER IN MENU + CMP A2,A1 ;ARE WE AT MAX + JRHS MENU_LOOP ;YEP...NO ACTION + + JSRP UN_SELECT ;PUT BACK THE OLD "CURRENT ONE + + MOVE *A13(MEN_CUR),A0,W ;GET CURRENT ENTRY + INC A0 ;MAKE THIS THE NEXT. + movi d_dn_snd,a3 + +JOIN_DOWN: + PUSHP a3 + MOVE A0,*A13(MEN_CUR),W ;PUT BACK + JSRP DO_MENU_LINE ;PUT OUT LINE IN A0. +* +* MAKE THE "DINK" SOUND HERE FOR ENTRY TO ENTRY MOVEMENT +* + CALLR PLOT_HELP ;PLOT HELP NEW ONE + SLEEPK 1 ;DELAY BEEP 1 FRAME + PULLP a3 + calla SNDSND + + JRUC MENU_LOOP ;AND WAIT FOR NEXT RESPONSE. +* +* CONTROL COMES HERE WHEN A BUTTON IS PRESSED +* +* The selection number is returned in a8. (line 1 = 1) +* The routine address is returned in a9. + +MENU_BUTTON: +* +* A0 HAS A 3. +* A2 HAS THE BUTTON BIT.....IS IT ADVANCE? +* + MOVE *A13(MEN_ROM),A0,L + CMPI MEN_ADJ,A0 ; SPECIAL CASE FOR MENU ADJ + JRNZ MBNOTADJ + CALLA CKDIP + JRNZ MBNOTADJ ; NOT USING DIP SWITCHES + MOVE *A13(MEN_CUR),A0,W ; GET THE SELECT ITEM + CMPI 2,A0 ; "STANDARD PRICING" + JRZ MBABORT + CMPI 3,A0 ; "CUSTOM PRICING" + JRZ MBABORT + CMPI 4,A0 ; "FREE PLAY" + JRNZ MBNOTADJ +MBABORT + + movi d_enter_snd,a3 + calla SNDSND + + JRUC MENU_LOOP +MBNOTADJ + CLR A0 ;NOT ADVANCE + +IS_ADV: + MOVE A0,*A13(MEN_ADV),W ;NON ZERO IF IT WAS ADVANCE + + JSRP BUTTON_STALL ;HIGHLIGHT SELECTION AND HANG ON BUTTON + + MOVE *A13(MEN_CUR),A0,W ;GET "CURRENT" ENTRY. + CALLR GET_MENU_DATA ;A1=CURRENT_OFFSET A2=TEXT A3=ROUTINE + MOVE A0,*A13(MEN_OFF),W ;STORE THE OFFSET (CHOICE NUM) + MOVE A3,*A13(MEN_ROUT),L ;AND THE ROUTINE POINTER + MOVI MDUN_PID,A0 + MOVE A0,*A13(PROCID),W ;CHANGE OUR ID. + +MENU_DONE: + SLEEPK 20 + JRUC MENU_DONE ;NOW HANG TILL DISPATCHER SEES ID. + +menu_escape: + movi d_escape_snd,a3 + calla SNDSND + clr a0 + move a0,*a13(MEN_ADV),W + JSRP BUTTON_STALL + move *a13(MEN_CUR),a0,W + callr GET_MENU_DATA + clr a0 + move a0,*a13(MEN_OFF),W + move a0,*a13(MEN_ROUT),L + movi MDUN_PID,a0 + move a0,*a13(PROCID),W + jruc MENU_DONE + +************************************************************************** +* * +* MENU UTILITIES * +* * +************************************************************************** +************************************************************************** +* * +* BUTTON_STALL * +* * +* THIS IS CALLED WHEN THE MENU GETS A BUTTON HIT. * +* A1 HAS THE BIT OF THE BUTTON. * +* * +* WE PAINT THE MENU SQUARE TO FEEDBACK THE HIT. * +* * +* THEN WE HANG ON THE BUTTON UNTIL ITS LET GO. * +* * +************************************************************************** +BUTTON_STALL: + MOVE A2,@LAST_BUT,L ;PUSH THE BUTTON STATE + + MOVE @SCODE,A0,W ;NO CASH FOR REPEAT SOUND CODES + MOVE @DCODE,A1,W + OR A0,A1 + JRNZ DONT_WAIT ;ITS A SOUND REPEAT....DON'T HOLD EITHER! + + movi d_enter_snd,a3 + calla SNDSND + + MOVE *A13(MEN_CUR),A0,W ;GET CURRENT SELECTION + MOVI COLOR_YELLOW,A1 + CALLR MENU_BAR ;CHANGE THE BAR COLOR. + + CALLR GET_MENU_DATA ;GET OUR TEXT POINTER BACK + MOVI ROBO_WHITE,A1 ;WHITE ON ORANGE DURING HOT MOMENT + JSRP MENU_TEXT ;AND WRITE INVERTED TEXT + + MOVE @LAST_BUT,A8,L ;GET BUTTON BACK + MOVI 08H,A9 ;MINIMUM TIME FOR BUTTON HIGHLITE + +; MOVI 2AH,A10 ;.5 SECONDS OF ADVANCE HOLD-DOWN +* ;WILL EXIT TEST MODE. +WAIT_FOR_RELEASE: +; CMPI ADV_HIGH,A8 ;IS IT ADVANCE BUTTON? +; JRNZ NOT_ADV ;NOPE.....NEVER MIND + +; DEC A10 ;1 LESS TIME UNIT +; JRZ DIAG_EX ;IF HE HOLDS ADVANCE...WE'RE GONE! + +;NOT_ADV: + SLEEPK 1 + + MOVE A9,A9 ;REDUCE FOR HELD TIME + JRZ WAIT_1 ;ZEROED OUT ALREADY. + DEC A9 + +WAIT_1: + CALLR FORM_SWS ;WAIT FOR THIS ONE TO GO TO ZERO + AND A8,A0 ;IS OUR BUTTON STILL DOWN? + JRNZ WAIT_FOR_RELEASE +* +* ITS RELEASED...NOW SHOW ORANGE BAR FOR MINIMUM TIME + + INC A9 ;MAKE SURE A9 HAS 1 OR MORE +WAIT_2: + SLEEPK 1 + DSJS A9,WAIT_2 + +DONT_WAIT: + MOVE *A13(MEN_CUR),A0,W ;GET CURRENT SELECTION + CLR A1 ;ERASE BAR + CALLR MENU_BAR ;CHANGE THE BAR COLOR. + + CALLR GET_MENU_DATA ;GET OUR TEXT POINTER BACK + MOVE *A13(MEN_COLR),A1,W ;RE-PLOT THE NORMAL TEXT + JSRP MENU_TEXT + + SLEEPK 2 ;NOW GIVE SOME BOUNCE PROTECTION. + + RETP + + .STRING "WWRREESSTTLLEEMMAANNIIAA CCOOPPYYRRIIGGHHTT 11999955 " + .STRING "MMIIDDWWAAYY MMAANNUUFFAACCTTUURRIINNGG CCOOMMPPAANNYY.. " + .STRING "AALLLL RRIIGGHHTTSS RREESSEERRVVEEDD.. " + .STRING "DDEESSIIGGNNEEDD BBYY:: MMAARRKK TTUURRMMEELLLL " + .STRING "SSAALL DDIIVVIITTAA JJAASSOONN SSKKIILLEESS " + .STRING "JJOOSSHH TTSSUUII JJAAKKEE SSIIMMPPSSOONN " + .STRING "EEUUGGEENNEE GGEEEERR TTOONNYY GGOOSSKKIIEE " + .STRING "MMIIKKEE LLYYNNCCHH JJAAMMIIEE RRIIVVEETTTT " + .STRING "SSHHAAWWNN LLIIPPTTAAKK " + .even + +************************************************************************** +* * +* STUFF_MENU_PROCESS * +* * +* THIS IS CALLED TO STUFF THE MENU ROM DATA INTO THE * +* CURRENT PROCESSES PDATA AREA. * +* * +************************************************************************** +STUFF_MENU_PROCESS: + MMTM SP,A0,A1,A2,A3,A8 + MOVE A13,A0 ;POINT IN PROCESS AREA + ADDI MEN_ROM,A0 ;THIS IS WHERE 1ST TIDBIT GOES + MOVE A8,*A0+,L ;STORE OUR BASE POINTER IN STRUCTURE + ADDI MR_WORDS,A8 ;MOVE TO WORD LIST + + MOVI WORD_ENTS,A2 ;NOW THIS MANY MORE WORDS. + +GMS1: + MOVE *A8+,A1 + MOVE A1,*A0+ + DSJS A2,GMS1 +* +* ALL THE MENU PARAMETERS ARE NOW IN THE PDATA AREA. +* A8 POINTS AT THE FIRST ITEM TO DISPLAY. +* + MOVE A8,*A13(MEN_TPTR),L ;STORE IN PROCESS AREA. +* +* NOW WE WANT TO FIND THE NUMBER OF ENTRIES IN THE MENU +* + CLR A0 ;START AT #1. +HOW_MANY: + INC A0 ;MOVE TO NEXT ENTRY. + CALLR GET_MENU_DATA ;GET THE PARAMETERS FOR THIS ENTRY + MOVE A2,A2 ;AND SEE IF A2=0 + JRNZ HOW_MANY ;ITS REAL.....PUT IT UP. + + DEC A0 ;PREVIOUS LINE WAS THE LAST. + MOVE A0,*A13(MEN_ENTS),W ;STUFF NUMBER IN MENU. + + MOVE A9,A9 ;DID BOZO PASS ZERO AS CURRENT? + JRZ USE_LAST + CMP A0,A9 ;MAKE SURE ITS NOT TOO HIGH + JRHI USE_LAST ;A9 IS TOO HIGH + MOVE A9,A0 ;USE THE ONE PAST + +USE_LAST: + MOVE A0,*A13(MEN_CUR),W ;MAKE ENTRY "1" CURRENT. + MMFM SP,A0,A1,A2,A3,A8 + RETS + +************************************************************************** +* * +* DO_MENU_LINE * +* * +* A0 HAS THE LINE TO DO. (1 THROUGH N). * +* PRINT TEXT NORMAL IF NOT "MEN_CUR". * +* PRINT INVERT BAR FOLLOWED BY BLACK TEXT IF * +* ITS THE CURRENT ENTRY. * +* * +************************************************************************** +DO_MENU_LINE: + CALLR GET_MENU_DATA ;GET "CURRENT" IN A1 + CMP A0,A1 ;IS IT "CURRENT" ENTRY? + JRZ DO_CURRENT_ENT ;YEP....DO INVERSE STUFF +* +* A0 HAS OFFSET (FOR POSITIONING) +* A2 HAS TEXT POINTER (FOR MESSAGE) +* A1 NEEDS COLOR FOR MESSAGE. +* + MOVE *A13(MEN_COLR),A1,W ;USE THE NORMAL ENTRY COLOR + JSRP MENU_TEXT ;PUT UP THE "TEXT" PORTION. + RETP ;AND RETURN + +DO_CURRENT_ENT: + MOVI ROBO_WHITE,A1 ;DO THE BAR IN WHITE (AT A0 HEIGHT) + CALLR MENU_BAR ;PUT IT UP (A0 PRESERVED) + + CALLR GET_MENU_DATA ;GET OUR TEXT POINTER BACK + MOVE *A13(MEN_SCOL),A1,W ;GET "SELECTED" COLOR + JSRP MENU_TEXT ;AND WRITE INVERTED TEXT + RETP ;THAT'S ALL FOLKS. + +************************************************************************** +* * +* UN_SELECT * +* * +* THIS IS CALLED TO "UN-SELECT" THE CURRENT ENTRY. * +* * +************************************************************************** +UN_SELECT: + MOVE *A13(MEN_CUR),A0,W ;POINT AT CURRENT ENTRY + CLR A1 ;USE BLACK FOR BACKGROUND + CALLR MENU_BAR ;THIS REMOVES THE BAR. + + CALLR GET_MENU_DATA ;NOW GET A2 TO TEXT POINTER + MOVE *A13(MEN_COLR),A1,W ;USE THE NORMAL ENTRY COLOR + JSRP MENU_TEXT ;PUT UP THE "TEXT" PORTION. + RETP ;AND RETURN + +************************************************************************** +* * +* MENU_BAR * +* * +* THIS IS CALLED TO PUT UP THE SELECTION BAR FOR * +* THE ENTRY IN A0, IN THE COLOR IN A1. * +* * +* THIS ROUTINE MUST PRESERVE A0. * +* * +************************************************************************** +* STRNGLEN - RETURNS THE LENGTH, IN PIXELS, OF A GIVEN STRING * +* A8 = PTR TO STRING * +* A10 = [Y,X] SPACING OF STRING * +* A11 = PTR TO FONT TABLE * +* RETURNS: * +* A7 = LENGTH OF STRING * +* Z BIT SET IF LENGTH IS ZERO * +* +* FOR FILLAREA +* +* A1 = +* A3 = DAG OF AREA [YPOS,XPOS] +* A4 = [Y,X] SIZE OF AREA +* +MENU_BAR: + MMTM SP,A0,A1,A3,A4,A5,A6,A7,A8 ;SAVE THE OFFSET + MMTM SP,A1 ;SAVE COLOR! + CALLR GET_MENU_DATA ;GET THE TEXT POINTER + CALLR STLEN_SETUP ;SETUP FOR STRLEN CALL. + CALLA STRNGLEN ;FIND WIDTH OF STRING. +* +* A7 HAS LENGTH OF STRING. +* +* WE NEED TO GET INTO A3 THE COORDINATES UF UPPER LEFT +* AND A4 THE LENGTH. +* +* IF WE'RE CENTERING, WE USE THE BAR WIDTH PARAMETER +* ALONG THE CENTER LINE. +* +* IF WE'RE LEFT JUSTIFIED, WE'LL LET THE BOX GO THE +* LENGTH OF THE TEXT FOR NOW. +* + MOVE *A13(MEN_ULX),A3,W ;LEFT X IN A3 +* +* IF WE'RE CENTERING....WE NEED TO MOVE THE "LEFT X" BACK HALF +* THE WIDTH OF THE STRING. +* + MOVE *A13(MEN_ROM),A6,L ;GET ROM POINTER + MOVE *A6(MR_TCAL),A6,L ;CHECK ROUTINE + CMPI STRCNRM,A6 + JRNZ NOT_CENTERING +* +* WE'RE CENTERING....CENTER X IS IN A3 +* + MOVE *A13(MEN_BWID),A7,W ;A7 IS THE REGISTER FOR BAR WIDTH + MOVE A7,A4 ;GET COPY IN A4 + SRL 1,A4 ;1/2 OF WIDTH COMES OFF OF CENTER + SUB A4,A3 ;A3 NOW HAS "LEFT X" + JRUC CENTERING ;A7 IS WIDTH...A3 IS X + +* +* LEFT JUSTIFIED....DO IT THE OLD WAY! +* +NOT_CENTERING: + MOVE *A13(MEN_BDX),A4,W ;GET EXTRA X UNITS FOR BAR + SUB A4,A3 + +* NOW ADD TWICE THE EXTRA X TO THE STRING LENGTH TO +* FORM THE BAR LENGTH. +* + SLL 1,A4 ;NOW DOUBLE THE EXCESS DX FOR BAR + ADD A4,A7 ;NOW A7 HAS WIDTH OF BAR + +CENTERING: + SUBI C_KLUDGE,A3 ;KLUDGE TO NULLIFY FINAL SPACE. + + CALLR GET_ENTRY_Y ;GET Y FOR ENTRY IN A5 + + MOVE *A13(MEN_BDY),A6,W ;GET BAR DY (NEGATIVE) + ADD A6,A5 ;ADJUST Y BY BAR DY + SLL 16,A5 ;SHIFT Y INTO POSITION + + ADD A5,A3 ;A3 NOW POINTS AT UPPER LEFT + + MOVE *A13(MEN_BAR),A4,W ;Y HEIGHT OF BAR + SLL 16,A4 ;IN POSITION + ADD A7,A4 ;A7 HAS X WIDTH OF BAR. + + MMFM SP,A1 ;NOW GET COLOR BACK! + SLL 16,A1 ;SHIFT COLOR TO HIGH HALF (PAL. 0) + CALLA FILLAREA ;FILL IT UP! + + MMFM SP,A0,A1,A3,A4,A5,A6,A7,A8 ;SAVE THE OFFSET + RETS + +************************************************************************** +* * +* MENU_TEXT * +* * +* THIS IS CALLED TO DISPLAY THE TEXT FOR AN ENTRY. * +* * +* A0 HAS OFFSET (FOR POSITIONING) * +* A1 HAS COLOR FOR MESSAGE. * +* A2 HAS TEXT POINTER (FOR MESSAGE) * +* * +* WE NEED TO SHIFT THE DATA FOR THE TEXT ROUTINE * +* AS FOLLOWS: * +* * +* A0 = SLEEP * +* A6 = COLOR * +* A8 = POINTER * +* A9 = ADDRESS * +* A10 = SPACING * +* A11 = FONT * +* * +************************************************************************** +MENU_TEXT: + CALLR GET_ENTRY_Y ;GET Y FOR ENTRY IN A5 + SLL 16,A5 ;SHIFT Y INTO POSITION + MOVE *A13(MEN_ULX),A9,W ;GET THE X + ADD A5,A9 ;A9 SET WITH SCREEN ADDRESS + + MOVE A1,A6 ;COLOR + CLR A0 ;NO SLEEP + + CALLR STLEN_SETUP + + MOVE *A13(MEN_ROM),A1,L + MOVE *A1(MR_TCAL),A1,L ;GET THE ROUTINE TO USE + JUMP A1 ;AND CALL IT! + +STLEN_SETUP: + MOVE A2,A8 ;TEXT POINTER + MOVI SPACING20,A10 ;SPACING + MOVE *A13(MEN_ROM),A11,L + MOVE *A11(MR_FONT),A11,L ;LOAD FONT + RETS + +************************************************************************** +* * +* MENU JOYSTICK HANDLING * +* * +************************************************************************** +ST_STICK: + CALLR FORM_SWS ;THIS LATCHES ANYONE ALREADY DOWN. + CLR A0 + MOVE A0,*A13(MEN_ACT),L ;SHOW THAT WE'RE "ACTING" ON NONE. + MOVE A0,*A13(MEN_TYPO),W ;CLEAR TYPOMATIC COUNTER. + MOVE A0,*A13(MEN_HITS),W ;CLEAR OUT "CONSECUTIVE HITS" + RETP +* +* GETSTICK......RETURN DEBOUNCED/TYPOMATIC FOR +* UP AND DOWN......OR EDGE OUT +* ANY BUTTON....(INCLUDING ADVANCE) +* +* RETURN A0= +* +* NOTHING = 0 +* UP = 1 +* DOWN = 2 +* BUTTON = 3 +* +* A2 = BUTTON BIT ON BUTTON HITS +* +UP_OR_DOWN EQU UP_BITS+DOWN_BITS +TYPO_COUNT EQU 4 +TYPO_STALL EQU 25 +MENU_TYPO EQU (TYPO_COUNT*10000H)+14 ;14 HITS FOR MENU TILL STUCK + +* +* TO USE THIS.......FIRST JSRP ST_START. +* THIS STICKS CLOSED SWITCHES AND +* INITIALIZES COUNTERS. +* +* DATA IS STORED IN YOUR PDATA +* AREA.....AT AREAS DETERMINED +* BY THE "MEN_" STRUCTURE. THESE +* LOCATIONS MUST BE AVAILABLE. +* +* A8-A11 ARE NOT TOUCHED. +* +* AFTER ST_START.....READ AS FOLLOWS. +* +* +* LOOP SLEEP 1 +* MOVI TYPO_PARMS,A5 +* JSRP GETSTICK +* +* +* +* +* JRUC LOOP +* +* +* INPUT A5-----TOP HALF IS TYPOMATIC RATE +* LOW HALF IS COUNT TILL STICK IS CALLED STUCK +* +GETSTICK: + MOVE A5,A6 + SRL 16,A5 ;TYPO RATE IN A5 + ANDI WORD_MASK,A6 ;STUCK HIT COUNT IN A6 + + CALLR FORM_SWS ;SEE WHAT THEY LOOK LIKE NOW. +* +* RETURN CURRENT STATE IN A0..PREVIOUS STATE IN A1. +* + NOT A1 ;LAST = 0 AND NOW = 1 MEANS EDGE! + + AND A1,A0 ;1'S WHERE WE HAVE POSITIVE EDGE. + MOVE A0,A4 ;KEEP NEW EDGE STATE IN A4! + + andi 00400000h,a0 + jrnz ESC_BUT + move a4,a0 + + ANDI BUTTONS|START_BITS,A0 ;BUTTON SAYS ACT....IGNORE STICK! + JRNZ TEST_BUTS ;NEW BUTTON......RETURN IT! +* +* NO BUTTON.....DO STICK TYPOMATIC STUFF! +* + MOVE *A13(MEN_ACT),A2,L ;IS THERE ONE TO WATCH? + JRZ NEW_SCAN ;NOPE....LOOK FOR NEW STUFF! +* +* WE HAVE ONE THAT'S DOWN THAT WE WANT TO WATCH. +* + CALLR FORM_SWS ;SEE WHAT THEY LOOK LIKE NOW. + AND A2,A0 ;IS IT STILL MADE? + JRZ GS_STICK_OPEN ;NOPE.......CLEAR OUT ITS STATE. +* +* ITS STILL MADE........DO TYPOMATIC. +* + MOVE *A13(MEN_TYPO),A1,W ;DECREMENT TYPOMATIC COUNTER + DEC A1 + MOVE A1,*A13(MEN_TYPO),W ;AND PUT BACK IN MEMORY + JRNZ GS_ZERO ;NOT TIME YET.....RETURN NOTHING +* +* WE HAVE A TYPOMATIC HIT.....WE NEED TO TURN SWITCH BIT (A0) +* INTO "UP" OR "DOWN" AND RE-LOAD TYPOMATIC COUNTER. +* +* + MOVE *A13(MEN_HITS),A1,W ;GET NUMBER OF HITS + INC A1 ;AFTER 15 TYPOS.....KILL TILL OPEN! + MOVE A1,*A13(MEN_HITS) ; + CMP A6,A1 ;TOO MANY HITS? + JRHS GS_GONE ;YEP....CALL THIS "STUCK" + MOVE A5,*A13(MEN_TYPO),W ;TYPOMATIC COUNTER RELOADED. + +RETURN_UP_DOWN: + MOVE A0,A1 ;GET THE BIT + MOVE A1,A2 ;MAKE A COPY + MOVK 1,A0 ;ASSUME UP + ANDI UP_BITS,A1 ;IS IT AN "UP" BIT + JRNZ GS_X ;YEP...RETURN UP. + MOVK 2,A0 ;ASSUME DOWN + ANDI DOWN_BITS,A2 ;IS IT A "DOWN" BIT + JRNZ GS_X ;YEP...RETURN "DOWN" +* +* NOT A TYPOMATIC CONDITION. +* + +GS_GONE: + CLR A0 ;CLEAR OUT CURRENT HIT. + MOVE A0,*A13(MEN_ACT),L ;INDICATE READY FOR NEXT HIT! + JRUC GS_X ;AND RETURN THIS ZERO (NOTHING!) +* +* STICK THAT WAS CLOSED OPENED......STOP BOUNCE UPWARD! +* +GS_STICK_OPEN: + SLEEPK 6 + JRUC GS_GONE ;NOW.....CLEAR OUT FOR NEXT HIT. +* +* CONTROL COMES HERE WHEN NO BUTTONS ARE PENDING. +* +NEW_SCAN: + MOVE A4,A0 ;LOOK AT THE NEW EDGES. + + ANDI UP_OR_DOWN,A0 ;IS IT UP OR DOWN? + JRZ GS_ZERO ;NO STICK....RETURN NO ACTION! + + CALLR FRST_BIT ;REDUCE TO ONE BIT. + MOVE A0,*A13(MEN_ACT),L ;STORE THIS BIT + + MOVI TYPO_STALL,A1 + MOVE A1,*A13(MEN_TYPO),W ;TYPOMATIC COUNTER SET FOR LONG STALL. + + CLR A1 + MOVE A1,*A13(MEN_HITS),W ;LOAD UP A BUNCH OF HITS + JRUC RETURN_UP_DOWN ;RETURN CORRECT CODE UP OR DOWN +* +* NOT UP OR DOWN......SEE IF ITS A BUTTON. +* +TEST_BUTS: +* +* ITS A BUTTON...ALL NEW BUTTON EDGES IN A0 +* + CALLR FRST_BIT ;USE 1 OF THEM. + + MOVE A0,A2 ;RETURN THE BIT. + + MOVI 3,A0 ;RETURN THAT ITS A BUTTON. + JRUC GS_X ;STUCK PROCESSING WILL BE AUTOMATIC. + +ESC_BUT + movi 4,a0 + jruc GS_X + +GS_ZERO: + CLR A0 ;RETURN NO SWITCH. +GS_X: + RETP + +************************************************************************** +* * +* FRST_BIT * +* * +* A0 HAS 1 OR MORE BITS SET....RETURN 1 OF THEM. * +* * +************************************************************************** +FRST_BIT: + MMTM SP,A1,A2 + MOVK 1,A1 ;SHIFT TILL WE FIND IT. +FB1: + MOVE A0,A2 + AND A1,A2 + JRNZ GOT_IT ;WE HAVE ON (IN A1) + SLL 1,A1 ;SHIFT IT + JRUC FB1 +GOT_IT: + MOVE A1,A0 ;RETURN THE BIT + MMFM SP,A1,A2 + RETS + +************************************************************************** +* * +* FORM_SWS * +* * +* GET THE SWITCHES....1=CLOSED.....AND SAVE * +* THIS SCAN AS "LAST STATE". RETURN: * +* * +* CURRENT STATE IN A0 * +* PREVIOUS STATE IN A1 * +* * +************************************************************************** +FORM_SWS: + callr fudge_switches + + move *a13(MEN_STIK),a1,L ;RETURN PREVIOUS STATE + move a0,*a13(MEN_STIK),L ;SAVE "STUCK" STATE. + rets + +************************************************************************** +fudge_switches + +; move @COINS,a0,W +; move @SWITCH,a1,W + move @_coin_addr,a0,L + move *a0,a0,W + move @_switch_addr,a1,L + move *a1,a1,W + sll 16,a0 + sll 16,a1 ;mask off top 16 + srl 16,a1 + or a1,a0 + move @_switch_map_mode,a1,L ; Are we mapping switches? + jrz _switch_mapping_done ; Nope - goto done + cmpi 2,a1 + jrgt _no_adjustment_mapping +_no_menu_mapping + move @_coin_addr,a1,L + move *a1,a1,W + sll 3,a1 + srl 15,a1 + ori 0fffffffeh,a1 + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + sll 4,a1 + srl 14,a1 + ori 0fffffffdh,a1 + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + ori 0ffffffefh,a1 + and a1,a0 + move @_switch_map_mode,a1,L + cmpi 1,a1 + jrz _switch_mapping_done + movi 00400000h,a1 + or a1,a0 ; No Service button in adjust mode + jruc _switch_mapping_done ; All done +_no_adjustment_mapping + cmpi 3,a1 ; Are we in any button mapping mode + jrnz _no_any_mapping ; Nope - go check other modes + move @_coin_addr,a1,L + move *a1,a1,W + sll 3,a1 ; Map Vol up/down onto action button + srl 9,a1 + ori 0ffffff9fh,a1 ; Buttons B and C + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + ori 0ffffffefh,a1 ; Button A + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + sll 9,a1 + srl 8,a1 + ori 0ffffff7fh,a1 ; Button D + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + sll 13,a1 + srl 3,a1 + ori 0ffffefffh,a1 + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + sll 10,a1 + srl 2,a1 + ori 0ffffdfffh,a1 + and a1,a0 + move @_coin_addr,a1,L + move *a1,a1,W + sll 5,a1 + ori 0ffff3fffh,a1 + and a1,a0 +_no_any_mapping +_switch_mapping_done + +; move @SWITCH,a0,L ;GET BOTH SWITCH WORDS + not a0 ;COMPLEMENT +; move @SWITCH2,a1 ;move action 5 buttons into low 32 bits + move @_switch2_addr,a1,L + move *a1,a1 + ori 0FFFF0000h,a1 + not a1 + +; andi 01111b,a1 ;make them buttons +; sll 4,a1 + + move a1,a14 + andi 0011b,a14 + sll 6,a14 + or a14,a1 + or a1,a0 + + rets + + +************************************************************************** +*SPECIAL DIAGNOSTIC VERSION OF fudge_switches +*USE FCALL WITH B6 AS THE RETURN REGISTER WHEN CALLING. +* +fudge_switches_diag +; move @SWITCH,a0,L ;GET BOTH SWITCH WORDS + move @_switch_addr,a0,L + move *a0,a0,W + move @_coin_addr,a1,L + move *a1,a1,W + sll 16,a1 + or a1,a0 + not a0 ;COMPLEMENT +; move @SWITCH+20h,a1 ;move action 5 buttons into low 32 bits + + move @_switch2_addr,a1,L + move *a1,a1 + not a1 + +; andi 01111b,a1 +; sll 4,a1 + + move a1,a14 + andi 0011b,a14 + sll 6,a14 + or a14,a1 + + or a1,a0 + + FRET B6 + +************************************************************************** +fudge_switches2 + + callr fudge_switches + move @fswitches_cur,a1,L + move a1,@fswitches_last,L + move a0,@fswitches_cur,L + xor a0,a1 ;bits that have changed + and a0,a1 ;down transitions only + move a1,@fswitches_down,L + + rets + +************************************************************************** +* * +* GET_MENU_DATA * +* * +* A0 IS OFFSET OF ENTRY OF INTEREST * +* * +* RETURN A1 = CURRENT OFFSET * +* A2 = TEXT POINTER * +* A3 = ROUTINE * +* * +************************************************************************** +GET_MENU_DATA: + MMTM SP,A0 ;DON'T ALTER A0 + + CALLR PM_ENTRY ;POINT A1 AT ENTRY + + MOVE *A1(MENU_TEXT_PTR),A2,L ;FETCH THE TEXT POINTER + MOVE *A1(MENU_ROUTINE),A3,L ;FETCH THE ROUTINE + MOVE *A13(MEN_CUR),A1,W ;RETURN CURRENT ENTRY IN A1 + MMFM SP,A0 ;DON'T ALTER A0 + RETS + +************************************************************************** +* * +* PM_ENTRY * +* * +* A0 = MENU ENTRY OF INTEREST * +* RETURN A1 -> POINTS AT FOR THIS * +* ENTRY. * +* * +************************************************************************** +PM_ENTRY: + MMTM SP,A0 + DEC A0 ;INDEX FROM ZERO + MOVI MENU_ENTRY_SIZE,A1 ;TIMES SIZE PER ENTRY + MPYU A0,A1 ;A1 CONTAINS OFFSET INTO TABLE + + MOVE *A13(MEN_TPTR),A0,L ;GET THE BASE OF THE MENU TEXT ENTRIES + ADD A0,A1 ;ADD TO OFFSET + MMFM SP,A0 + RETS + +************************************************************************** +* * +* PLOT_HELP * +* * +* THIS ROUTINE PLOTS (OR CLEARS) THE HELP AREA * +* FOR THE CURRENT ENTRY. * +* * +************************************************************************** +PLOT_HELP: + MOVE *A13(MEN_CUR),A0,W ;GET CURRENT ENTRY + CALLR PM_ENTRY ;A1 POINTS AT GROUP + MOVE *A1(MENU_HELP),A8,L ;GET HELP TABLE + CMPI NO_HELP,A8 ;NOT A "HELP" SITUATION? + JRZ NO_HELP_FOR_THIS_ONE + CMPI ADJ_HELP,A8 ;ADJUSTMENT HELP REQUESTED? + JAEQ DO_ADJH ;THEN DO IT IN ADJ MODULE! +; CMPI SND_HELP,A8 ;ARE WE IN SOUND TEST? +; JREQ DO_SHELP +; CMPI SND_PLAY,A8 +; JREQ DO_SPLAY + CALLR DO_HELP_MENU +NO_HELP_FOR_THIS_ONE: + RETS + +************************************************************************** +* * +* DO_SHELP * +* * +* THIS IS CALLED FOR EACH NON PLAYING ENTRY IN THE SOUND * +* TABLE MENU. IT CAUSES THE SOUND BOARD TO BE SHUT * +* UP AND THE BOTTOM LINE (WHERE TITLES APPEAR) * +* TO BE ERASED. * +* * +************************************************************************** +;DO_SHELP: +;; MOVE @SND_MADE,A0,W ;DID SOMEONE MAKE A SOUND? +;; JRZ DO_SH1 ;NOPE +;; CLR A0 +; MOVE A0,@SND_MADE,W ;CLEAR THIS AND RESET THE BOARD! +; MOVE A0,@SCODE,W +; MOVE A0,@DCODE,W +; CALLA QSNDRST ;kill any sounds in progress +;DO_SH1: +; CALLR BLNKSNAM ;BLANK OUT ANY WRITING! +; RETS +;* +;* A0 CONTAINS 3 FOR SYNTHESIZER...4 FOR DIGITIZER... +;* IF CORRESPONDING "CODE" BYTE IS NON ZERO, THEN DISPLAY +;* THE TEXTLINE THAT CORRESPONDS. ELSE BLANK OUT THE +;* AREA. +;* +;DO_SPLAY: +; CALLR BLNKSNAM ;BLANK OUT LAST MESSAGE +; CMPI 3,A0 ;SYNTHESIZER? +; JRZ CK_SYNT ;YEP. +;* +;* DIGITIZER. +;* +; MOVE @SCODE,A1,W ;HOLD INFO IF SYNTH WAS RUNNING +; CLR A0 +; MOVE A0,@SCODE,W ;CLEAR OUT SYNTH CODE +; MOVE @DCODE,A0 ;ANY CODE +; JRZ DO_SPQX ;NOTHING HERE.....SHUT UP SOUND SYS. +; +; MOVI DTABLE,A1 ;BASE OF POINTER TABLE FOR DIGITIZER +; JRUC DO_SP1 ;PRINT THE STRING. +; +; +;CK_SYNT: +; MOVE @DCODE,A1,W ;HOLD INFO IF DIGITIZER WAS RUNNING +; CLR A0 +; MOVE A0,@DCODE,W ;CLEAR OUT DIG CODE +; MOVE @SCODE,A0 ;ANY CODE +; JRZ DO_SPQX ;NOTHING HERE. +; +; MOVI STABLE,A1 ;BASE OF POINTER TABLE FOR DIGITIZER +; +;DO_SP1: +; CALLR MEN_NUMS ;A4 = LEFT X A5 = RIGHT X +; ADDI 10000H*SND_MESS_Y,A4 ;UPPER LEFT Y +; ADDI 10000H*(SND_MESS_Y+SND_BOX_H),A5 ;UPPER LEFT X +; MOVI ROBO_WHITE,A9 +; CALLR STD_BORD +; +; DEC A0 ;INDEX FROM 1. +; SLL 5,A0 +; ADD A0,A1 +; MOVE *A1,A2,L ;NOW WE HAVE THE MESSAGE +; +; MOVI SND_INST,A8 +; JSRP L_MESS ;PUT INSTRUCTION OUT. +; +; MOVI SND_SETUP,A8 +; CALLA LM_SETUP +; +; MOVE A2,A8 +; JSRP LM_FINIS ;DO THE DEED +; RETS ;AND RETURN +; +;DO_SPQX: +; MOVE A1,A1 ;OUR SELECTION ISN'T RUNNING...WAS OTHER? +; JRZ DO_SPX ;NOPE +; CALLA QSNDRST ;KILL SOUNDS IN PROGRESS +; CLR A0 +; MOVE A0,@SND_MADE,W ;NO RESET NECESSARY NOW +;DO_SPX: +; RETS +; +;************************************************************************** +;* * +;* BLNKSNAM * +;* * +;* CALLED TO BLANK OUT THE SOUND CODE NAME DURING * +;* SOUND TEST. * +;* * +;************************************************************************** +;* +;* A3 = POINTER +;* A4 = SIZE +;* +;BLNKSNAM: +; MOVI (SND_MESS_Y*10000H)+20H,A3 +; MOVI (SND_BOX_H*10000H)+1E0H,A4 +; JAUC BLNKAREA ;ITS BLANK! +; +************************************************************************** +* * +* GET_ENTRY_Y * +* * +* THIS RETURNS THE Y POSITIONS FOR THE ENTRY SPECIFIED * +* IN A0. * +* * +* A5 = Y VALUE IN UNITS. * +* * +************************************************************************** +GET_ENTRY_Y: + MMTM SP,A0,A1 + MOVE *A13(MEN_ULY),A5,W + MOVE *A13(MEN_DY),A1,W + DEC A0 + MPYU A0,A1 ;A1 HAS OFFSET PER ENTRY + ADD A1,A5 + MMFM SP,A0,A1 + RETS + +************************************************************************** +* * +* MENU_BORDER * +* * +* THIS IS CALLED TO PUT A BORDER AROUND THE MENU. * +* * +* A8 = MENU STRUCTURE * +* A9 = 1st item to activate as current * +* * +* BORDER IS DONE IN MENU TEXT COLOR * +* * +* THIS ASSUMES MENU IS IN THE CENTERING FORMAT * +* * +************************************************************************** +* +* 1ST WE NEED TO FIND UPPER LEFT. +* +* +* X = MENU_X - (BAR_WIDTH/2) - 2 (LESS BORDER WIDTH) +* Y = MENU_Y - BDY (LESS BORDER HEIGHT) +* +* LOWER RIGHT : +* +* X = MENU_X + (BAR_WIDTH/2) - 2 (PLUS BORDER WIDTH) +* Y = MENU_Y + (MENU_ENTRIES-1) * DY)) - BDY + BAR_HITE +* +* +MENU_BORDER: + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9 + CALLR STUFF_MENU_PROCESS ;MOVE DATA INTO PDATA AREA +* +* FIRST COMPUTE UPPER LEFT +* + CALLR MENU_UL_A4_A5 ;GET UPPER LEFT COORDINATES + SLL 16,A5 + ADD A5,A4 ;A4 POINTS TO UPPER LEFT. +* +* FORM LOWER RIGHT +* + CALLR MENU_LR_A6_A5 + SLL 16,A5 ;SHIFT A5 DOWN + ADD A6,A5 ;A5 POINTS AT LOWER RIGHT + + MOVE *A13(MEN_COLR),A9,W ;GET MENU TEXT COLOR + CALLR STD_BORD + + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9 + RETS + +************************************************************************** +* * +* MCSETUP * +* * +* RETURN: * +* A0 = CENTER OF MENU * +* A1 = 1/2 BAR WIDTH * +* A2 = Y FOR FIRST LINE OF TEXT OF MENU * +* A3 = DELTA Y (NEGATIVE TO GET FROM TEXT TO BAR. * +* * +************************************************************************** +MCSETUP: + MOVE *A13(MEN_ULX),A0,W ;UPPER LEFT X (ACTUALLY CENTER) + MOVE *A13(MEN_BWID),A1,W ;BAR_WIDTH + SRL 1,A1 ;ALL CALCS USE BAR_WIDTH/2 + MOVE *A13(MEN_ULY),A2,W ;UPPER LEFT Y + MOVE *A13(MEN_BDY),A3,W ;DELTA Y (NEGATIVE) + RETS + + +************************************************************************** +* * +* MENU_UL_A4_A5 * +* * +* RETURN WINDOW UPPER LEFT CORNER * +* * +* A4 = X * +* A5 = Y * +* * +************************************************************************** +MENU_UL_A4_A5: + MMTM SP,A0,A1,A2,A3 + CALLR MCSETUP ;STUFF THE REGGIES + MOVE A0,A4 ;FORM ULX + SUB A1,A4 + SUBI C_KLUDGE,A4 ;A4 HAS UPPER LEFT X + + MOVE A2,A5 + ADD A3,A5 ;A5 HAS UPPER LEFT Y + + SUBI MB_XWID+GAP,A4 ;NOW WE POINT AT UPPER LEFT FOR FRAME + SUBI MB_YWID+GAP,A5 + MMFM SP,A0,A1,A2,A3 + RETS + +************************************************************************** +* * +* MENU_LR_A6_A5 * +* * +* RETURN WINDOW LOWER RIGHT CORNER * +* * +* A6 = X * +* A5 = Y * +* * +************************************************************************** +MENU_LR_A6_A5: + MMTM SP,A0,A1,A2,A3 + CALLR MCSETUP ;STUFF THE REGGIES + + MOVE A0,A6 ;LOWER RIGHT X + ADD A1,A6 + SUBI C_KLUDGE,A6 ;THIS IS THE X + + MOVE *A13(MEN_ENTS),A0,W ;THIS IS LAST ENTRY + CALLR GET_ENTRY_Y ;A5 HAS THE Y FOR THE LAST ENTRY + ADD A3,A5 ;A5 NOW HAS TOP OF LAST BOX + MOVE *A13(MEN_BAR),A7,W ;HEIGHT OF BAR + ADD A7,A5 ;A5 NOW HAS LOWER RIGHT Y + + ADDI MB_YWID+GAP,A5 + ADDI MB_XWID+GAP,A6 ;THIS IS END OF BORDER + MMFM SP,A0,A1,A2,A3 + RETS + + +************************************************************************** +* * +* F_TITLE * +* * +* THIS IS CALLED TO FRAME A TITLE IN THE SAME WIDTH * +* AS THE MAIN TITLE. * +* * +* A0 = Y LEVEL OF 15 POINT TEXT * +* A9 = COLOR * +* * +************************************************************************** +F_TITLE: + MMTM SP,A4,A5,A0 + MOVE A0,A4 ;COPY Y + SUBI 12,A4 + SLL 16,A4 + ADDI TIT_ULX,A4 ;UPPER LEFT SET + + MOVE A0,A5 ;LOWER RIGHT + ADDI 27,A5 + SLL 16,A5 + ADDI TIT_LRX,A5 ;LOWER RIGHT SET + + CALLR STD_BORD + MMFM SP,A4,A5,A0 + RETS + +FIRST_BORDER_COLOR EQU 0E0E0H +LAST_BORDER_COLOR EQU 0EFEFH +************************************************************************** +* * +* G_BORDER * +* * +* THIS IS CALLED TO DO A "HSTD TABLE" TYPE CYCLING * +* BORDER. THIS ROUTINE GETS: * +* * +* A4 = UPPER LEFT Y,X * +* A5 = LOWER RIGHT Y,X * +* A6 = NUMBER OF SLICES GOING IN. * +* * +************************************************************************** +G_BORDER: + MMTM SP,A0,A1,A2,A3,A4,A5,A6 + MOVI 10001H,A0 ;1 BY 1 DIMENSION + + MOVI LAST_BORDER_COLOR,A9 ;USE LAST ONE 1ST +NEXT_RING: + CALLR DOBORDER ;DO THIS RING + + MOVI 10001H,A1 ;THIS IS 1 UNIT IN X AND Y + ADDXY A1,A4 + SUBXY A1,A5 + + SUBI 101H,A9 + CMPI FIRST_BORDER_COLOR,A9 + JRHS COLOK + MOVI LAST_BORDER_COLOR,A9 + +COLOK: + DSJS A6,NEXT_RING + MMFM SP,A0,A1,A2,A3,A4,A5,A6 + RETS + +************************************************************************** +* * +* DOBORDER * +* * +* THIS IS CALLED TO DRAW A BORDER FRAME. * +* * +* A4 = UPPER LEFT Y,X * +* A5 = LOWER RIGHT Y,X * +* A0 = Y,X WIDTH OF BORDER * +* A9 = COLOR OF BORDER. * +* * +* THIS ROUTINE *** CLEARS OUT ALL AREA INSIDE THE BORDER*** * +* AS A FUNCTION OF ITS OPERATION. * +* * +* THE BORDER IS DONE IN THE "ROBO" PALETTE * +* * +* IT IS ASSUMED THAT THE DISPLAY SYSTEM IS RUNNING! * +* * +************************************************************************** +* +* A1 = +* A3 = DAG OF AREA [YPOS,XPOS] +* A4 = [Y,X] SIZE OF AREA +* +DOBORDER: + MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9 + MOVE A9,A1 ;GET COLOR + SLL 16,A1 ;COLOR ON TOP..PALETTE 0 +* +* NOW WE NEED TO MAKE 4 BARS! +* + MOVE A0,A2 ;SEPARATE DELTA + ANDI SX_MASK,A0 + ANDI SY_MASK,A2 + + MOVE A4,A6 ;UPPER LEFTS HERE + MOVE A4,A7 + + MOVE A5,A8 ;LOWER RIGHTS HERE + MOVE A5,A9 + + ANDI SX_MASK,A6 ;LEFT X + ANDI SX_MASK,A8 ;RIGHT X + + ANDI SY_MASK,A7 ;TOP Y + ANDI SY_MASK,A9 ;BOTTOM Y + +* +* FIRST BAR GOES FROM ORIGINAL UL XY TO RIGHT X +* AND TOP Y+DELTA Y +* +* A3 IS ORIGINAL A4 PASSED. +* FORM DESTINATION IN A4 +* + MOVE A4,A3 + + MOVX A8,A4 + MOVY A7,A4 + ADDXY A2,A4 ;ADD THE DELTA + + CALLR DO_A_LINE ;DO THIS LINE +* +* GOING AROUND CLOCKWISE.....THIS ONE STARTS AT RIGHT X-DELTA +* AND TOP Y +* + MOVX A8,A3 + SUBXY A0,A3 + MOVY A7,A3 +* +* THIS IS THE NATURAL LOWER RIGHT CORNER +* + MOVX A8,A4 + MOVY A9,A4 + + CALLR DO_A_LINE +* +* NOW FOR BOTTOM LINE.....A4 IS STILL SET! +* + MOVX A6,A3 + MOVY A9,A3 + SUBXY A2,A3 + + CALLR DO_A_LINE +* +* LEFT WALL....FROM UPPER LEFT +* + MOVX A6,A3 + MOVY A7,A3 + + MOVX A6,A4 + ADDXY A0,A4 + MOVY A9,A4 + + CALLR DO_A_LINE + + MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9 + RETS + +DO_A_LINE: + MMTM SP,A4 + SUBXY A3,A4 ;FORM DISTANCE + CALLA FILLAREA ;AND DO THE FILL + MMFM SP,A4 + RETS + +STD_BORD: + MMTM SP,A0 + MOVI BORDER_SIZE,A0 + CALLA DOBORDER + MMFM SP,A0 + RETS +************************************************************************** +* * +* DO_HELP_MENU * +* * +* THIS IS CALLED TO DISPLAY A HELP MENU FOR THE CURRENT * +* MENU ENTRY. * +* * +* A HELP MENU IS DEFINED AS FOLLOWS: * +* * +* HM_JUST WORD 0=CENTER 1=LEFT * +* HM_COLOR WORD COLOR OF MENU * +* HM_ENTS WORD NUMBER OF LINES IN MENU * +* LONG LONG WORD POINTERS FOR EACH LINE! * +* * +* THE PROCESS AREA IS FILLED WITH THE CURRENT MENU * +* PARAMETERS. * +* * +* A8 = POINTER TO HELP MENU STRUCTURE ABOVE * +* * +************************************************************************** +DO_HELP_MENU: + CALLR BLNKHELP + + MOVE A8,A8 ;CHECK IF HELP MENU EXISTS. + JRZ DHMX ;NOPE JUST CLEARING WAS OUR JOB. + + MOVE *A13(MEN_CUR),A0,W ;THIS IS CURRENT ENTRY + MOVE A0,A11 ;PASS ENTRY NUMBER IN A11 + CALLR GET_ENTRY_Y ;A5 HAS THE Y FOR THE CURRENT ENTRY +* +* NOW WE NEED TO MOVE TO MAKE TOP ENTRY BOX LINE UP. +* + MOVE *A13(MEN_BDY),A10,W ;THIS IS NEGATIVE TO GIVE US BOX TOP + ADD A5,A10 ;NOW WE HAVE BOX TOP + + MOVE *A13(MEN_BAR),A5,W ;GET BAR HEIGHT + SRL 1,A5 ;FIND CENTER OF BAR + ADD A5,A10 ;NOW WE'RE AT BAR CENTER. + + MOVI H_SLAVE,A7 ;FORK OFF SO IT CAN USE PDATA! + CALLA P_FORK ;START UP ANOTHER W/ SAME ID TO FLASH! +DHMX RETS + +************************************************************************** +* * +* BLNKHELP * +* * +* THIS IS CALLED TO BLANK OUT THE HELP AREA. IT IS * +* USED BY BOTH THE "NORMAL" HELP PLOTTER AND IS * +* CALLED BY THE ADJUSTMENT HELP PROGRAM. * +* * +* THIS RETURNS THE LEFT X FOR THE HELP MENU IN A9 * +* * +************************************************************************** +BLNKHELP: + MMTM SP,A3,A4,A5,A6 + CALLR MENU_LR_A6_A5 ;GET RIGHT X OF MAIN MENU IN A6 + MOVE A6,A9 ;PASS TO HELP MENU SLAVE +* +* NOW BLANK OUT THE "HELP" REGION +* + MOVE A6,A3 ;UPPER LEFT X OF REGION TO BLANK OUT + ADDI INST_ULY*10000H,A3 ;THIS IS UPPER LEFT OF BLOCK + + MOVI TIT_LRX+(10000H*400),A4 ;COORDINATE OF LOWER RIGHT OF HELP AREA + SUBXY A3,A4 ;THIS IS SIZE OF REGION TO BLANK + CALLA BLNKAREA ;BLANK OUT THE HELP AREA + ADDI BOX_XGAP,A9 ;RETURN X FOR HELP MENUS + MMFM SP,A3,A4,A5,A6 + RETS + +************************************************************************** +* * +* H_SLAVE * +* * +* THIS IS A PROCESS CREATED TO PLOT THE HELP BOX. * +* IT DOES ITS PLOTTING THEN DIES. THIS ALLOWS IT * +* TO USE THE PDATA AREA WITHOUT DISTURBING THE CALLER. * +* * +* A8 = POINTER TO HELP BOX STRUCTURE * +* A9 = LEFT MARGIN FOR THE HELP BOX. * +* A10 = Y OF CENTER OF BOX ...HIGH HALF IS ZERO FOR Y CENTING * +* IF HIGH HALF IS NON-ZERO, THEN THIS IS TOP OF BOX * +* * +************************************************************************** +HM_JUST EQU 0 +HM_COLOR EQU HM_JUST+WORD_SIZE +HM_ENTS EQU HM_COLOR+WORD_SIZE +HM_DATA EQU HM_ENTS+WORD_SIZE ;ENTRY POINTERS + +HS_ROUT EQU PDATA ;LONG-TEXT ROUTINE +HS_X EQU HS_ROUT+LONG_SIZE ;WORD-X FOR TEXT ROUTINE +HS_Y EQU HS_X+WORD_SIZE ;WORD-CURRENT Y +HS_ENTS EQU HS_Y+WORD_SIZE ;WORD-ENTRIES LEFT TO DO +HS_COLOR EQU HS_ENTS+WORD_SIZE ;WORD-COLOR OF MENU +HS_PTR EQU HS_COLOR+WORD_SIZE ;LONG-CURRENT TEXT POINTER + +H_SLAVE: + SLEEPK 1 + +* +* A9 HAS RIGHT X OF MENU +* + MOVE A9,A1 ;PUT THIS X VALUE IN A1 + + MOVE *A8(HM_JUST),A0,W ;0 = CENTER 1=LEFT + JRZ HS_CENT ;CENTER....SETUP X ACCORDINGLY +* +* LEFT JUSTIFY....STORE ROUTINE +* + MOVI STRLNRM,A0 ;LEFT JUSTIFY ROUTIN +* +* NOW FORM X AS SOME MARGIN FROM WINDOW.... +* + ADDI MB_XWID+HELP_X_MARGIN,A1 ;ADD MARGIN TO FORM X FOR TEXT + JRUC CENTER_JOIN ;CONTINUE + +HS_CENT: + MOVI STRCNRM,A0 ;USE CENTERING ROUTINE +* +* A1 HAS LEFT X OF HELP BOX...FIND RIGHT X +* + ADDI TIT_LRX,A1 + SRL 1,A1 ;THIS IS CENTER X + +CENTER_JOIN: + MOVE A1,*A13(HS_X),W ;STORE X + MOVE A0,*A13(HS_ROUT),L ;STORE ROUTINE + + MOVE *A8(HM_ENTS),A1,W ;GET NUMBER OF ENTRIES + MOVE A1,*A13(HS_ENTS),W ;COUNT IT DOWN IN P-AREA + + MOVE *A8(HM_COLOR),A0,W ;GET COLOR + MOVE A0,*A13(HS_COLOR),W ;STASH IT + + ADDI HM_DATA,A8 ;POINT AT 1ST ENTRY + MOVE A8,*A13(HS_PTR),L ;NOW WE'RE READY. +* +* ALL PDATA AREA SET.....NOW WE NEED TO DRAW THE BORDER +* +* FOR DOBORDER +* +* A4 = UPPER LEFT Y,X +* A5 = LOWER RIGHT Y,X +* A0 = Y,X WIDTH OF BORDER +* A9 = COLOR OF BORDER. +* +* LOWER RIGHT X IS SUCH THAT IT LINES UP WITH TITLE BOX. +* THE Y IS A BIT TRICKIER......NUMBER OF ENTRIES IS +* SITTING IN A1 +* + MOVI HELP_DY,A5 ;DISTANCE PER ENTRY + MPYU A1,A5 ;DISTANCE FOR ALL ENTRIES + ADDI HELP_Y_MARGIN+(MB_YWID*2)+HELP_YLO_MARGIN,A5 +* +* A5 NOW CONTAINS FULL HEIGHT OF BOX +* +* NOW SEE IF WE'RE CENTERING ON A10 OR IF A10 IS THE TOP. +* + CALLR TOP_IN_A10 +* +* NOW FORM UPPER LEFT IN A4 +* + MOVE A10,A4 ;MOVE Y OVER + SLL 16,A4 ;MAKE ROOM FOR X + ADD A9,A4 ;PUT IN THE X...THIS IS UPPER LEFT! + + ADD A10,A5 ;ADD BASE TO OFFSET + SLL 16,A5 ;PUT IN Y POSITION + ADDI TIT_LRX,A5 ;ADD IN THE X FOR THE CORNER +* +* NOW ADJUST FROM TOP OF BOX TO POSITION OF +* 1ST ENTRY. +* + ADDI MB_YWID+HELP_Y_MARGIN,A10 ;Y OF 1ST ENTRY + MOVE A10,*A13(HS_Y),W ;PUT AWAY + + MOVE *A13(HS_COLOR),A9,W ;GET THE COLOR FOR DOBORDER + + CALLR STD_BORD +* +* NOW WE NEED TO WALK THROUGH AND PLOT THE HELP +* MENU ENTRIES. +* +* A0 = SLEEP +* A1 = ROUTINE +* A6 = COLOR +* A8 = POINTER +* A9 = ADDRESS +* A10 = SPACING +* A11 = FONT +* A14 = FLAGS +* +NEXT_HELP: + MOVE *A13(HS_PTR),A2,L ;GET OUR CURRENT POINTER + MOVE *A2+,A8,L ;GET THE CURRENT MESSAGE POINTER + MOVE A2,*A13(HS_PTR),L ;AND PUT POINTER BACK + + CLR A0 + MOVE *A13(HS_ROUT),A1,L ;ROUTINE IN A1 + MOVE *A13(HS_COLOR),A6,W ;STUFF COLOR + + MOVE *A13(HS_Y),A9,W ;GET Y + SLL 16,A9 ;SHIFT INTO PLACE + MOVE *A13(HS_X),A10,W + ADD A10,A9 ;A9 IS NOW POINTING AT SCREEN + + MOVI SPACING07,A10 ;SPACING + MOVI RD7FONT,A11 ;FONT IS BABY FONT + JSRP LM_FINIS ;PRINT IT OUT! + + MOVE *A13(HS_Y),A9,W ;GET THE Y + ADDI HELP_DY,A9 ;KICK IT + MOVE A9,*A13(HS_Y),W ;PUT IT BACK + + MOVE *A13(HS_ENTS),A0,W ;ENTRY COUNT + DEC A0 + MOVE A0,*A13(HS_ENTS),W ;PUT IT BACK + JRNZ NEXT_HELP + + JAUC SUCIDE ;OUR WORK IS DONE! + +************************************************************************** +* * +* TOP_IN_A10 * +* * +* THIS IS CALLED BY H_SLAVE TO GET THE UPPER LEFT * +* CORNER OF THE BOX IN A10. A10 HAS THE PASSED PARAMETER. * +* A5 HAS THE HEIGHT OF THE BOX. IF THE TOP HALF OF A10 * +* IS ZERO, THEN THEN WE WANT THE BOX CENTER AT THE * +* A10 LEVEL. IF THE TOP HALF OF A10 IS NON-ZERO THEN * +* A10 WAS PASSED AS THE TOP. * +* * +* RETURN A10 AS THE Y FOR THE TOP OF THE HELP BOX. * +* * +************************************************************************** +TOP_IN_A10: + MMTM SP,A5 + CMPI 0FFFFH,A10 ;IS THE TOP HALF ZERO? + JRHI TOP_IS_TOP ;TOP IS SET..RETURN + SRL 1,A5 ;TOP OF BOX IS HALF UP FROM MAIN MENU BAR CENTER + SUB A5,A10 ;NOW A10 HAS Y BASE OF BOX +TOP_IS_TOP: + MMFM SP,A5 + RETS + +************************************************************************** +* * +* AREUSURE * +* * +* THIS IS CALLED TO GET A CONFIRMATION FROM THE USER. * +* A8 = PROMPT...THIS WILL APPEAR ABOVE THE "ARE YOU SURE" * +* A9 = ROUTINE TO JSRP TO DO THE DESIRED ACTION * +* A10 = MESSAGE TO DISPLAY CONFIRMING COMPLETION * +* * +* RETURN A0=0 MEANS YES WAS CHOSEN. * +* A0 .NE. 0 MEANS NO * +* * +************************************************************************** +AREUSURE: + CALLA CLR_SCRN ;BLANK IT ALL OUT! + MOVE A9,*A13(PDATA),L ;SAVE ROUTINE + MOVE A10,-*A12,L ;AND CONFIRM MESSAGE + + CALLR SURE_BOX + + MOVE A8,A2 ;PUT MESSAGE TEXT IN SAFE PLACE + MOVI MESS_SURE,A8 ;SETUP FOR TITLE + CALLA LM_SETUP ;STUFF REGGIES + MOVE A2,A8 ;GET STRING IN THERE + JSRP LM_FINIS ;AND PRINT IT + + MOVI M_SURE,A8 ;NOW THE "ARE YOU SURE" PART + JSRP L_MESS ;PUT IT UP. + + MOVI MEN_YN,A8 ;PUT UP THE "YES/NO" SELECTOR. + MOVI 2,A9 ;CURSOR ON 2ND ENTRY (NO) + + JSRP B_MENU ;AND GET A RESPONSE. + CMPI 1,A8 ;WAS IT YES? + JRNZ SURE_X ;NOPE....GET OUT + + CALLA CLR_SCRN ;CLEAR THE SCREEN FIRST, SO ROUTINE CAN PLOT! + + MOVE *A13(PDATA),A0,L ;GET THE ROUTINE TO CALL + MOVI SURE_RET,A7 + MOVE A7,-*A12,L ;PUSH RETURN ADDRESS + JUMP A0 ;AND "JSRP" THE ROUTINE + +SURE_RET: + CALLR SURE_BOX ;BOX IT! + MOVE *A12+,A8,L + JSRP SUR_MESS ;PRINT THE MESSAGE + + JSRP ANY_BUT ;NOW RETRIEVE ANY BUTTON THEN RETURN + + CLR A0 ;RETURN SUCCESS + RETP + +SURE_X: + ADDI LONG_SIZE,A12 ;POP MESSAGE + MOVI 2,A0 ;RETURN FAILURE + RETP + +************************************************************************** +* * +* SUR_MESS * +* * +* THIS PRINTS MESSAGE IN A8 IN THE ARE U SURE BOX * +* CONFIRMATION SPOT. * +* * +************************************************************************** +SUR_MESS: + MOVE A8,-*A12,L + MOVI MESS_CONFIRM,A8 + CALLA LM_SETUP ;GET CONFIRMATION DATA READY. + MOVE *A12+,A8,L + JSRP LM_FINIS ;PRINT OUR PART + RETP + +SURE_BOX: + MOVI COLOR_YELLOW,A9 + MOVI 003D0025H,A4 + MOVI 00F6016AH,A5 + jruc STD_BORD ;BORDER-IZE THE WHOLE THING. + +CENT_BOX: + MOVI ROBO_RED,A9 +CBOX_COL: + MOVI 00450025H,A4 + MOVI 00B4016AH,A5 + jruc STD_BORD ;BORDER-IZE THE WHOLE THING. + +*----------------------------------------------------------------------------* +*----------------------------------------------------------------------------* +***************************** MESSAGES ********************************* +*----------------------------------------------------------------------------* +*----------------------------------------------------------------------------* + +INSTR_Y EQU INST_ULY+5 +INSTR_2Y EQU INSTR_Y+10 + +MM_INST1 + MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_Y,COLOR_BPR,STRCNRM,0 + .byte "SELECT WITH ANY STICK" + .BYTE 0 + .EVEN + +MM_INST2 + MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_2Y,COLOR_BPR,STRCNRM,0 + .byte "ACTIVATE WITH ANY BUTTON" + .BYTE 0 + .EVEN + +MESS_DOOR + MESS_MAC RD7FONT,SPACING20,200,128,ROBO_RED,STRCNRM,0 + .byte "INVALID GAME SETTINGS" + .BYTE 0,1 ;0 = END OF STRING...1 = MORE MESSAGES! + .EVEN +;MESS_OPEN +; MESS_MAC RD7FONT,SPACING20,200,160,ROBO_WHITE,STRCNRM,0 +; .byte "OPEN COIN DOOR TO" +; .BYTE 0,1 ;0 = END OF STRING...1 = MORE MESSAGES! +; .EVEN +;MESS_OPEN_2 +; MESS_MAC RD7FONT,SPACING20,200,179,ROBO_WHITE,STRCNRM,0 +; .byte "RESTORE FACTORY SETTINGS." +; .BYTE 0,0 +; .EVEN + +MESS_FAIL + MESS_MAC RD7FONT,SPACING20,200,112,ROBO_RED,STRCNRM,0 + .byte "INVALID GAME SETTINGS" + .BYTE 0,1 ;0 = END OF STRING...1 = MORE MESSAGES! + .EVEN + MESS_MAC RD7FONT,SPACING20,200,144,ROBO_WHITE,STRCNRM,0 + .byte "ATTEMPT TO RESTORE" + .BYTE 0,1 ;0 = END OF STRING...1 = MORE MESSAGES! + .EVEN + MESS_MAC RD7FONT,SPACING20,200,164,ROBO_WHITE,STRCNRM,0 + .byte "FACTORY SETTINGS HAS FAILED." + .BYTE 0,0 + .EVEN + +MESS_BITCHIN + .byte "ADJUSTMENTS OK",0 + .even + +MESS_TITLE + MESS_MAC RD15FONT,SPACING20,TM_X,TM_Y,ROBO_GREEN,STRCNRM,0 + +RV_Y EQU TM_Y+18 + +MESS_REV + MESS_MAC RD7FONT,SPACING20,TM_X,RV_Y,ROBO_YELLOW,STRCNRM,0 +* +* THIS IS SETUP FOR THE QUESTION BEING ASKED +* BY "ARE YOU SURE" +* +MESS_SURE + MESS_MAC RD15FONT,SPACING20,200,102,ROBO_LF,STRCNRM,0 +* +* THIS IS THE "ARE YOU SURE" PART. +* +M_SURE + MESS_MAC RD15FONT,SPACING20,200,128,ROBO_YELLOW,STRCNRM,0 + .byte "ARE YOU SURE?" + .BYTE 0,0 + .EVEN + +MESS_CONFIRM + MESS_MAC RD15FONT,SPACING20,200,115,COLOR_LF,STRCNRM,0 + + +************************************************************************** +* * +* OPERATOR MESSAGE ENTRY * +* * +************************************************************************** +OP_LINE_CHAR equ PDATA +OP_LINE_LINE equ PDATA+WORD_SIZE +OP_LETS equ OP_LINE_LINE+WORD_SIZE +OP_STIME equ OP_LETS+(30 * BYTE_SIZE) +OP_SVAL equ OP_STIME+WORD_SIZE + +LET_DIST_X equ 25 +LET_DIST_Y equ 24 +LET_BOX_CX equ 14 +LET_BOX_CY equ 2 +LET_BOX_WX equ 3 +LET_BOX_WY equ 1 +LET_START_Y1 equ 163 +LET_START_Y2 equ LET_START_Y1+LET_DIST_Y +LET_START_Y3 equ LET_START_Y2+LET_DIST_Y +LET_START_Y4 equ LET_START_Y3+LET_DIST_Y +LET_INST1 equ 55 +LET_START_X equ 22 +LET_LINE_MAX equ 3 +LET_CHAR_MAX equ 14 +LET_TEXT_GAP equ 12 +LET_TEXT1 equ 110 +LET_TEXT2 equ LET_TEXT1+LET_TEXT_GAP +LET_TEXT3 equ LET_TEXT2+LET_TEXT_GAP +OP_MAX_CHARS equ CMESS_CHARS-1 +FONT_T .equ osgfont_t + + + .bss BLINE ,16 + .bss BCHAR ,16 + + SUBR opmsg_main + + .if PRINTER + movk 1,a0 + calla PBADGUY + .endif + + calla CLR_SCRN + movi opmsg_s,a2 + movi ROBO_YELLOW,a3 + JSRP TOP_BOX ;KICK OUT TOP BOX + + movi OMINST1,a8 + JSRP print_multi + + SLEEPK 1 + + clr a8 ;Do 4 rows of letters + movk 30,a10 + callr OPPLOTLINE + + movk 1,a8 + movk 30,a10 + callr OPPLOTLINE + + movk 2,a8 + movk 30,a10 + callr OPPLOTLINE + + movk 3,a8 + movk 30,a10 + callr OPPLOTLINE + + clr a0 + move a0,@BLINE + move a0,@BCHAR + + clr a8 + move a8,*a13(OP_LINE_LINE) ;ON THE FIRST LINE + + callr OM_STARTLINE ;INITIALIZE ALL THE FLAGS FOR IT + + clr a10 + movk 1,a11 + callr BOXCHAR ;BOX INITIAL ONE + + movk 1,a11 + callr OMPLOTTEXT + + + clr a0 + move a0,*a13(OP_SVAL) + move a0,*a13(OP_STIME) + +DOLOOP ;>Loop for stick and things + SLEEPK 1 + + callr om_getstick ;Check out the player board + jrnz do1 ;switch closed? + move a0,*a13(OP_SVAL) ;Clear timer and direction + move a0,*a13(OP_STIME) + jruc DOLOOP +do1 + move *a13(OP_SVAL),A1 ;Get last direction + ANDK 7,a1 ;Mask off repeat bit + cmp a0,a1 + jrz do2 ;Still same thing? + move a0,*a13(OP_SVAL) + clr a1 + move a1,*a13(OP_STIME) ;Clear the timer + jruc DODONE ;Process initial hit +do2 + MOVE *A13(OP_SVAL),A1 ;SNAG THE REPEAT BIT + ANDI 80H,A1 + JRNZ DO3 ;BR = IN REPEAT MODE + MOVE *A13(OP_STIME),A0 ;GET TIMER + INC A0 + MOVE A0,*A13(OP_STIME) + CMPI 15,A0 + btst 4,a0 + JRLO DOLOOP ;GO BACK TO SLEEP + CLR A0 + MOVE A0,*A13(OP_STIME) ;CLEAR OUT THE TIMER + MOVE *A13(OP_SVAL),A1 + MOVE A1,A0 + ORI 80H,A1 ;PUT UPPER BIT ON + MOVE A1,*A13(OP_SVAL) ;SET DIRECTION WITH REPEAT ON + JRUC DODONE +DO3 + MOVE *A13(OP_STIME),A0 ;GET TIMER + INC A0 + MOVE A0,*A13(OP_STIME) + CMPI 5,A0 + JRLO DOLOOP ;GO BACK TO SLEEP + CLR A0 + MOVE A0,*A13(OP_STIME) ;CLEAR OUT THE TIMER + MOVE *A13(OP_SVAL),A0 + ANDK 7,a0 ;TURN OFF REPEAT BIT +DODONE + move *A13(OP_SVAL),a1 ;Get current entry + ANDK 7,a1 + move @BLINE,a8 + move @BCHAR,a10 + clr a11 + callr BOXCHAR ;UNHIGHLIGHT IT + + CMPI 1,A1 ;CHECK UP + JRNZ DOC1 + DEC A8 + JRUC DOPROC +DOC1 + CMPI 2,A1 + JRNZ DOC2 + INC A8 + JRUC DOPROC +DOC2 + CMPI 3,A1 + JRNZ DOC3 + DEC A10 + JRUC DOPROC +DOC3 + CMPI 4,A1 + JRNZ DOC4 + INC A10 + JRUC DOPROC +DOC4 + CMPI 5,A1 ; DRAW BUTTON + JRNZ DOCCLR ; WOOF WOOF + + movi select_snd1,a3 + calla SNDSND + + CALLR OMADDCHAR ; ADD THE CHAR IN A8/A10 + CMPI 0FFH,A8 ; CHECK TO SEE IF DONE WITH ALL + JRZ DOCEND + MOVE @BLINE,A8 + MOVE @BCHAR,A10 + MOVK 1,A11 + CALLR BOXCHAR ; TURN THE BOX BACK ON + JRUC DOLOOP +DOCCLR + cmpi 6,a1 ;Start button + jrne DOLOOP + + callr opmsg_clr +; clr a7 +; move a7,*a13(OP_LINE_LINE) +; move a7,*a13(OP_LETS),L +; callr OM_STORECMOS +; movk 1,a7 +; move a7,*a13(OP_LINE_LINE) +; callr OM_STORECMOS +; movk 2,a7 +; move a7,*a13(OP_LINE_LINE) +; callr OM_STORECMOS +; callr BLASTMESS + + jruc DOCCLEAR + +; +; CHECK A8 ( BLINE ) AND A10 ( BCHAR ) FOR BOUNDARY STUFF +; +DOPROC + movi cursor_snd4,a3 + calla SNDSND + move a8,a8 + jrge doc5 + clr a8 +doc5 + cmpi LET_LINE_MAX,a8 + jrle doc6 + movk LET_LINE_MAX,a8 +doc6 + move a10,a10 + jrge doc7 + movk LET_CHAR_MAX,a10 +doc7 + cmpi LET_CHAR_MAX,a10 + jrle doc8 + clr a10 +doc8 + move a8,@BLINE + move a10,@BCHAR + movk 1,a11 + callr BOXCHAR + jruc DOLOOP + + +******************************** +* HERE IS WHERE ONE COMES WHEN DONE ENTERING THE MESSAGE -- ALREADY +* STORED IN CMOS, TOO + +DOCEND + SLEEPK 2 ;GET EVERYBODY CAUGHT UP + CALLA CLR_SCRN ;CLEAR THE SCREEN + CALLR SURE_BOX + MOVI MESS_SUCCESS,A8 ;THIS IS SUCCESS MESSAGE +#sm JSRP SUR_MESS ;PRINT THE MESSAGE + jauc ANY_BUT ;NOW RETRIEVE ANY BUTTON THEN RETURN + +DOCCLEAR + SLEEPK 2 + CALLA CLR_SCRN + CALLR SURE_BOX + MOVI MESS_CLEARED,A8 + jruc #sm + + +MESS_SUCCESS + .byte "MESSAGE STORED",0 + .even + +MESS_CLEARED + .byte "MESSAGE CLEARED",0 + .even + +BLASTMESS: ;GUY ENTERED A WHOLE MESSAGE +; CALLA CMOSUNLOCK + calla ADJ_PAGE + clr a0 + movi VALID_CUSTOM,a7 + calla WC_WORD + calla F_ADC_S ;FIX UP THE CHECKSUM +; calla CMOSLOCK + rets + + +#******************************* +* Clear operator message +* Trashes scratch, A2 + + SUBR opmsg_clr + + calla ADJ_PAGE + + movi CUSTOM_MESSAGE,a7 + movk CMESS_LINES,a2 +#lp clr a0 + calla WC_BYTEI ;Write a null + addi CMESS_LINE_SIZE,a7 + dsj a2,#lp + + calla F_ADC_S ;Refresh checksum + jruc BLASTMESS + + + +******************************** +* Get joystick and buttons status +* >A0=Status (0-6) + +om_getstick + + PUSH a1 + +; move @SWITCH,a0,L + move @_switch_addr,a0,L + move *a0,a0,W + move @_coin_addr,a1,L + move *a1,a1,W + sll 16,a1 + sll 16,a0 + srl 16,a0 + or a1,a0 + not a0 + move a0,a1 + andi 0004007fh,a0 ;P1 draw/start/stick + andi 00207f00h,a1 ;P2 draw/start/stick + srl 8,a1 + or a1,a0 +; move @SWITCH+32,a1 + move @_switch2_addr,a1,L + move *a1,a1,W + not a1 + andi >7f,a1 ;P3 draw/stick + or a1,a0 + + btst 0,a0 ;U + jrz og2 + movk 1,a0 + jruc #x +og2 + btst 1,a0 ;D + jrz og3 + movk 2,a0 + jruc #x +og3 + btst 2,a0 ;L + jrz og4 + movk 3,a0 + jruc #x +og4 + btst 3,a0 ;R + jrz og5 + movk 4,a0 + jruc #x +og5 + movi >70,a1 + and a0,a1 + jrz og6 + movk 5,a0 + jruc #x +og6 + andi 0ffffff80h,a0 ;Any other bits are start buttons + jrz og7 + movk 6,a0 + jruc #x +og7 + clr a0 +#x + PULL a1 + move a0,a0 + rets + + +******************************** +* SETUP THINGS FOR A NEW LINE OF TEXT + +OM_STARTLINE + + PUSH A0 + CLR A0 + MOVE A0,*A13(OP_LETS) + MOVE A0,*A13(OP_LINE_CHAR) + PULL A0 + + RETS + +******************************** +* PLOT OUT A LINE OF TEXT ON THE SCREEN + +OMPLOTTEXT + + MMTM SP,A8,A10,A11 + + PUSH A11 + MOVI OMTSETUP,A8 + CALLA LM_SETUP + MOVE A13,A8 + ADDI OP_LETS,A8 + MOVE *A13(OP_LINE_LINE),A9,W + SLL 5,A9 + ADDI OMLOC,A9 + MOVE *A9,A9,L + SLL 16,A9 + MMTM SP,A3,A4,A9 + MOVE A9,A3 + SUBI 20000H,A3 + MOVI [LET_TEXT_GAP+2,394],A4 + CALLA BLNKAREA + MMFM SP,A3,A4,A9 + ADDI 200,A9 + JSRP LM_FINIS + + PULL A5 + MOVE A5,A5 ;FLAG FOR UNDERSCORE OR NOT + JRZ NOUNDER + movi ROBO_LASER,a6 + movi underscore_s,a8 + addk 5,a9 ;SHIFT THE LITTLE GUY OVER + JSRP LM_FINIS +NOUNDER + MMFM SP,A8,A10,A11 + RETS + + +#******************************* +* Add the character pointed to by a8/a10 +* A8 =Line +* A10=Char on line + +OMADDCHAR + PUSH a8,a10 + + sll 5,a8 + addi OLTAB,a8 ;+Base + move *a8,a8,L + sll 3,a10 + add a10,a8 ;char offset + movb *a8,a0 ;snag the char + cmpi '_',a0 + jrne #20 + + move *a13(OP_LINE_CHAR),a1 ;>Backspace + jrz #x + dec a1 + move a1,*a13(OP_LINE_CHAR) + move a1,a2 + clr a0 + jruc rubent + +#20 + cmpi '^',a0 + jrne #addchar + + clr a11 + callr OMPLOTTEXT ; GET RID OF THE FLASHING UNDERSCORE + clr a0 + move a0,@BLINE + move a0,@BCHAR + callr OM_STORECMOS ; WELL, BABY -- STORE IT + MOVE *A13(OP_LINE_LINE),A8 ; GRAB THE LINE + CMPI 2,A8 + JRHS OMADONE + INC A8 + MOVE A8,*A13(OP_LINE_LINE) ; ON THE FIRST LINE + CALLR OM_STARTLINE ; INITIALIZE ALL THE FLAGS FOR IT + MOVK 1,A11 + CALLR OMPLOTTEXT + jruc #x + +; HERE IS JUST ENTER A NORMAL CHARACTER -- +; +; A8 = LINE +; A10 = CHARACTER + +#addchar + + MOVE *A13(OP_LINE_CHAR),A1 + MOVE A1,A2 + CMPI OP_MAX_CHARS,A1 + JRHS OMACMAX + INC A1 + MOVE A1,*A13(OP_LINE_CHAR) +rubent + move a13,a8 + ADDI OP_LETS,A8 + SLL 3,A2 + ADD A2,A8 ;OFFSET INTO LOCAL STORAGE + MOVB A0,*A8 + ADDK 8,A8 + CLR A0 + MOVB A0,*A8 ;MAKE SURE ZERO TERMINATED + MOVK 1,A11 + CALLR OMPLOTTEXT +;OMACRET +#x MMFM SP,A8,A10 + RETS + +OMADONE ;COME HERE WHEN REALLY DONE +; CALLA CMOSUNLOCK + CALLA ADJ_PAGE ;GUY ENTERED A WHOLE MESSAGE + MOVI VALID_CUSTOM,A7 + MOVI VALID_VALUE,A0 + CALLA WC_WORD + CALLA F_ADC_S ;FIX UP THE CHECKSUM +; CALLA CMOSLOCK + MMFM SP,A8,A10 + MOVI 0FFH,A8 ;FLAG DONE WITH EVERYTHING + RETS + +OMACMAX + mmfm sp,a8,a10 + clr a11 + callr BOXCHAR + movk 3,a8 + movk 14,a10 + move a8,@BLINE + move a10,@BCHAR + rets + + +************************************************************************** +* STORE THE MESSAGE IN CMOS + +OM_STORECMOS +; CALLA CMOSUNLOCK + CALLA ADJ_PAGE ;POINT AT ADJUSTMENTS PAGE + MOVE *A13(OP_LINE_LINE),A7 + MOVI CMESS_LINE_SIZE,A6 + MPYU A6,A7 ;OFFSET ME, BABY + ADDI CUSTOM_MESSAGE,A7 ;A7 IS CMOS LOCATION + MOVE A13,A6 + ADDI OP_LETS,A6 ;A6 IS THE PROCESS BLOCK LOC + movk CMESS_CHARS-1,a5 ;CHARS/LINE + +cmos_loop + movb *a6,a0 ;fetch a character + andi BYTE_MASK,A0 + calla WC_BYTEI ;WRITE A BYTE + addk BYTE_SIZE,A6 ;POINT AT NEXT BYTE + dsj a5,cmos_loop + + clr a0 + calla WC_BYTEI ;Write a null + + calla F_ADC_S ;REFRESH CHECKSUM +; CALLA CMOSLOCK + + rets + +OMLOC .LONG LET_TEXT1, LET_TEXT2, LET_TEXT3 + + + +************************************************************************** +* BOXCHAR +* A8 =WHICH LINE (0-3) +* A10=CHARACTER ON LINE +* A11=COLOR TO USE ( 0 = BLACK, 1 = LASER FLASH ) + +BOXCHAR + MMTM SP,A1,A8,A10 + + MOVI LET_DIST_Y,A1 + MPYU A8,A1 ; DISTANCE + ADDI LET_START_Y1-LET_BOX_CY,A1 + SLL 16,A1 + MOVE A1,A4 + MOVI LET_DIST_X,A1 + MPYU A10,A1 + ADDI LET_START_X-LET_BOX_CX,A1 + MOVX A1,A4 ; UPPER LEFT IN A4 + MOVE A4,A5 + MOVI [LET_DIST_Y+LET_BOX_WY,LET_DIST_X+LET_BOX_WX],A0 + ADDXY A0,A5 ; LOWER RIGHT IN A5 + + MOVI [1,1],A0 ; BORDER HEIGHT,WIDTH + MOVI ROBO_BLACK,A9 ; DOBORDER IS RETARDED + MOVE A11,A11 + JRZ BC1 + MOVI ROBO_LF,A9 +BC1 + CALLR DOBORDER + + MOVE A11,A11 + JRNZ BC2 + MOVI 0FFH,A10 +BC2 + CALLR OPPLOTLINE + + MMFM SP,A1,A8,A10 + RETS + + +#******************************* +* Plot out a line of characters +* A8 =Table # +* A10=Which character to highlight + + .bss char_s ,16 + +OPPLOTLINE + + PUSH a8,a9,a10,a11 + + move a8,a9 + sll 5,a8 ;*32 + addi OLTAB,a8 + move *a8,a8,L + sll 4,a9 + addi OLYTAB,a9 + move *a9,a9 + + sll 16,a9 ;Get in the y position + addk LET_START_X,a9 +#lp + movb *a8,a0 ;GRAB CHAR NUMBER + move a0,a0 + jrz #x + movb a0,@char_s + PUSH a8 + PUSH a9 + PUSH a10 + PUSH a9 + movi REDPAL,a0 ;*Palette + move a10,a10 + jrnz opl1 + movi WHITEPAL,a0 +opl1 calla pal_getf + move a0,a5 + + movi OP_MESS,a8 + calla LM_SETUP + move a5,a6 ;Color + PULL a9 ;SET THE POSITION OF THE CHAR + movi char_s,a8 + JSRP LM_FINIS + + PULL a10 + dec a10 + PULL a9 + PULL a8 + addk 8,a8 + addi LET_DIST_X,a9 + jruc #lp + +#x PULL a8,a9,a10,a11 + rets + + +OP_MESS + MESS_MAC FONT_T,1,200,95,REDPAL,STRCNRM_1,0 +; .byte "%c",0 +; .long CHAROUT + .even + +OLTAB .long OL1TAB, OL2TAB, OL3TAB, OL4TAB +OLYTAB .word LET_START_Y1, LET_START_Y2, LET_START_Y3, LET_START_Y4 + +OL1TAB .byte "ABCDEFGHI123?!_",0 +OL2TAB .byte "JKLMNOPQR456()_",0 +OL3TAB .byte "STUVWXYZ 7890:_",0 +OL4TAB .byte "^_ #$&-./' _^",0 + +opmsg_s .byte "OPERATOR MESSAGE",0 + .even +OMINST1 + MESS_MAC RD7FONT,SPACING07,200,LET_INST1,ROBO_WHITE,STRCNRM,0 + .byte "USE PLAYER 1 OR 2 CONTROLS TO ENTER A MESSAGE",0,1 + .byte "OF UP TO 3 LINES OF 25 LETTERS PER LINE.",0,1 + .byte "SELECT end TO END EACH LINE.",0,1 + .byte "PRESS PLAYER 1 OR 2 START TO CLEAR OUT MESSAGE.",0,0 + .even + +OMTSETUP + MESS_MAC RD7FONT,SPACING07,200,LET_INST1,ROBO_BLUE,STRCNRM,0 + .even + +underscore_s .byte "-",0 + .even + + +#******************************* +* A8=*MESS_MAC + + SUBRP print_multi + + PUSH a2 + + move a8,a2 + calla LM_SETUP + move a9,a3 ;1st XY + +#lp PUSH a8 + move a2,a8 + calla LM_SETUP + PULL a8 + + move a3,a9 + + JSRP LM_FINIS + addi [12,0],a3 ;Next Y + + movb *a8,a0 + addk 8,a8 + move a0,a0 + jrnz #lp + + PULL a2 + RETP + + + +;Jamie, I think we need to keep this NBA message the same, or change +;the embedded code!?!?!???? + +**************************************************************** +* Secret embedded copyright notice + +ASCIIE .macro str + + .var i,c,e + .eval 1,i + .eval 1,e + .loop $symlen(str) + .asg :str(i):,c + .byte 0ffh & (':c:'+e) + .eval i+1,i + .eval e+7,e + .endloop + .byte 0ffh & :e: + + .endm + + .byte 1,2,4,8,16,32,64,128 ;ID + + ASCIIE "NBA-JAM-COPYRIGHT-1993-MIDWAY-MANUFACTURING-COMPANY" + ASCIIE "ALL-RIGHTS-RESERVED" + ASCIIE "PROGRAMMED-BY-SHAWN-LIPTAK-&-MARK-TURMELL-&-JAMIE-RIVETT" + + + + +**************************************************************** + + .end + \ No newline at end of file diff --git a/TEXT.ASM b/TEXT.ASM new file mode 100755 index 0000000..837b67b --- /dev/null +++ b/TEXT.ASM @@ -0,0 +1,118 @@ +************************************************************** +* +* Software: Mark Turmell +* Initiated: 4/13/89 +* +* Modified: Shawn Liptak, 2/19/92 -Started basketball +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 12/21/92 15:04 +************************************************************** + .file "text.asm" + .title "font tables" + .width 132 + .option b,d,l,t + .mnolist + + + .include "text.tbl" + .include "macros.h" + + .include "fontsimg.glo" + .include "miscimg.glo" + .include "imgtbl.glo" + .include "dummy.tbl" + + +****************************************************************************** +* EXTERNAL REFERENCES + + +****************************************************************************** + +;,RD19FONT + .def RD7FONT,RD15FONT,FONT7A,FON15A + + .def FON150,FON151,FON152,FON153,FON154,FON155,FON156,FON157 + .def FON158,FON159 + .def FON15X,FON15W,FON15V,FON15M,FONT7colon + + + + .text + +************************************************************************** +************************************************************************** +* Font tables starting at ASCII 33 +************************************************************************** + +;7 POINT FONT + +RD7FONT + .long FONT7excla,FONT7quote,FONT7pound,FONT7doll,FONT7percen,FONT7and + .long FONT7apost,FONT7parenl,FONT7parenr,FONT7ast,FONT7plus + .long FONT7comma,FONT7dash,FONT7period,FONT7forsp,FONT70,FONT71 + .long FONT72,FONT73,FONT74,FONT75,FONT76,FONT77,FONT78,FONT79 + .long FONT7colon,FONT7semicol,FONT7less,FONT7equal,FONT7more + .long FONT7quest,FONT7dash + .long FONT7A,FONT7B,FONT7C,FONT7D,FONT7E,FONT7F,FONT7G,FONT7H + .long FONT7I,FONT7J,FONT7K,FONT7L,FONT7M,FONT7N,FONT7O,FONT7P + .long FONT7Q,FONT7R,FONT7S,FONT7T,FONT7U,FONT7V,FONT7W,FONT7X + .long FONT7Y,FONT7Z + .long FONT7bracl,FONT7backsp,FONT7bracr,FONT7excla,FONT7line + .long FONT7apost + .long FONT7a,FONT7b,FONT7c,FONT7d,FONT7e,FONT7f,FONT7g,FONT7h + .long FONT7i,FONT7j,FONT7k,FONT7l,FONT7m,FONT7n,FONT7o,FONT7p + .long FONT7q,FONT7r,FONT7s,FONT7t,FONT7u,FONT7v,FONT7W,FONT7X + .long FONT7Y,FONT7Z + .long FONT7paren2l,FONT7break,FONT7paren2r + +RD15FONT + .long FON15excla,FON15quote,FON15poun,FON15doll,FON15perc,FON15and + .long FON15apos,FON15parenl,FON15parenr,FON15ast,FON15plus + .long FON15comma,FON15dash,FON15period,FON15forsp,FON150,FON151 + .long FON152,FON153,FON154,FON155,FON156,FON157,FON158,FON159 + .long FON15colon,FON15semicol,FON15less,FON15equal,FON15more + .long FON15quest,FON15dash +;WARPTXT + .long FON15A,FON15B,FON15C,FON15D,FON15E,FON15F,FON15G,FON15H + .long FON15I,FON15J,FON15K,FON15L,FON15M,FON15N,FON15O,FON15P + .long FON15Q,FON15R,FON15S,FON15T,FON15U,FON15V,FON15W,FON15X + .long FON15Y,FON15Z + .long FON15brackl,FON15backsp,FON15brackr,FON15carr,FON15line + .long FON15apos1 + .long FON15la,FON15lb,FON15lc,FON15ld,FON15le,FON15lf,FON15lg,FON15lh + .long FON15li,FON15lj,FON15lk,FON15ll,FON15lm,FON15ln,FON15lo,FON15lp + .long FON15lq,FON15lr,FON15ls,FON15lt,FON15lu,FON15lv,FON15lw,FON15lx + .long FON15ly,FON15lz + .long FON15paren2l,FON15break,FON15paren2r +;RD19FONT +; .long FON15excla,FON15quote,FON15poun,FON15doll,FON15perc,FON15and +; .long FON15apos,FON15parenl,FON15parenr,FON15ast,FON15plus +; .long FON15comma,FON15dash,FON15period,FON15forsp +; +;;,SMD16_0,SMD16_1 +;; .long SMD16_2,SMD16_3,SMD16_4,SMD16_5,SMD16_6,SMD16_7,SMD16_8,SMD16_9 +; +; .long FONT70,FONT71,FONT72,FONT73,FONT74,FONT75,FONT76,FONT77,FONT78 +; .long FONT79 +; +; .long FON15colon,FON15semicol,FON15less,FON15equal,FON15more +; .long FON15quest,FON15dash +; .long font19a,font19b,font19c,font19d,font19e,font19f,font19g,font19h +; .long font19i,font19j,font19k,font19l,font19m,font19n,font19o,font19p +; .long font19q,font19r,font19s,font19t,font19u,font19v,font19w,font19x +; .long font19y,font19z +; .long FON15brackl,FON15backsp,FON15brackr,FON15carr,FON15line +; .long FON15apos1 +; .long FON15la,FON15lb,FON15lc,FON15ld,FON15le,FON15lf,FON15lg,FON15lh +; .long FON15li,FON15lj,FON15lk,FON15ll,FON15lm,FON15ln,FON15lo,FON15lp +; .long FON15lq,FON15lr,FON15ls,FON15lt,FON15lu,FON15lv,FON15lw,FON15lx +; .long FON15ly,FON15lz +; .long FON15paren2l,FON15break,FON15paren2r + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/TMP.ASM b/TMP.ASM new file mode 100755 index 0000000..2b83c5b --- /dev/null +++ b/TMP.ASM @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/TMPDEBUG.H b/TMPDEBUG.H new file mode 100755 index 0000000..4e524de --- /dev/null +++ b/TMPDEBUG.H @@ -0,0 +1,82 @@ +;temp buckoff debugging stuff + +*STRUCT DBGEVENT +TSTMP .set 0 ;UHW PCNT timestamp +EVENT .set 20h ;UHW event type +DATA1 .set 30h ;UHL data #1 +DATA2 .set 50h ;UHL data #2 +DATA3 .set 70h ;UHL data #3 +*ENDSTRUCT +EVENTSIZ .set 90h + +;Event codes +BDE_DIES .equ 1 ;wrestler dies + ;DATA1 = wrestler process + ;DATA2 = wrestlernum + ;DATA3 = playernum +BDE_MAYBE_BUCK .equ 2 ;dead guy who can buckoff found + ;DATA1 = wrestler process + ;DATA2 = wrestlernum + ;DATA3 = playernum +BDE_DONE_BUCK .equ 3 ;successful buckoff + ;DATA1 = wrestler process + ;DATA2 = wrestlernum + ;DATA3 = playernum +BDE_ARW_START .equ 4 ;announce_rnd_winner starts + ;DATA1 = arw process + ;DATA2 = creator + ;DATA3 = loc of creation +BDE_ARW_DEXIST .equ 5 ;announce_rnd_winner dies on EXISTP call + ;DATA1 = arw process + ;DATA2 = creator + ;DATA3 = loc of creation +BDE_ARW_FLAGDIE .equ 6 ;announce_rnd_winner dies on flag test + ;DATA1 = arw process + ;DATA2 = creator + ;DATA3 = loc of creation +BDE_ARW_ATTEMPT .equ 7 ;ann_rnd_wnr finds a potential bucker and sleeps + ;DATA1 = arw process + ;DATA2 = creator + ;DATA3 = loc of creation +BDE_ARW_WAKEUP .equ 8 ;ann_rnd_wnr wakes up to look for buckoffs + ;DATA1 = arw process + ;DATA2 = creator + ;DATA3 = loc of creation +BDE_ARW_NOBUCK .equ 9 ;ann_rnd_wnr finds no buckers + ;DATA1 = arw process + ;DATA2 = creator + ;DATA3 = loc of creation +BDE_ARW_ENDRND .equ 10 ;ann_rnd_wnr goes off + ;DATA1 = arw process + ;DATA2 = creator + ;DATA3 = loc of creation +BDE_ALL_DEAD .equ 11 ;all-dead condition found by match_timer +BDE_ALL_ALIVE .equ 12 ;ann_rnd_wnr finds both teams alive and dies + ;DATA1 = arw process + ;DATA2 = creator + ;DATA3 = loc of creation + + +NUM_EVENTS .equ 50 + + .global event_data + .global event_ptr + +DBEVENT .macro ETYPE,D1,S1,D2,S2,D3,S3 + mmtm sp,a0,a14 + move @event_ptr,a0,L + move @PCNT,a14,L + move a14,*a0(TSTMP),L + movi :ETYPE:,a14 + move a14,*a0(EVENT) + move :D1:,*a0(DATA1),:S1: + move :D2:,*a0(DATA2),:S2: + move :D3:,*a0(DATA3),:S3: + addi EVENTSIZ,a0 + cmpi event_data+(EVENTSIZ*NUM_EVENTS),a0 + jrlt ok? + movi event_data,a0 +ok? move a0,@event_ptr,L + mmfm sp,a0,a14 + .endm + \ No newline at end of file diff --git a/TODISK.BAT b/TODISK.BAT new file mode 100755 index 0000000..6ec7176 --- /dev/null +++ b/TODISK.BAT @@ -0,0 +1,10 @@ +@cls +@pkzip -x*.obj -x*.lst -x*.tbl -x*.glo -x*.out temp.xyz *.* +@cls +@echo INSERT DISK INTO DRIVE B: +@pause +@echo copying zip file... +@copy temp.xyz b:\wwf.zip +@del temp.xyz +@echo ALL DONE... have a nice day :) + \ No newline at end of file diff --git a/TODO.DOC b/TODO.DOC new file mode 100755 index 0000000..d651da3 --- /dev/null +++ b/TODO.DOC @@ -0,0 +1,159 @@ +SHIT TO DO: 6/19/95 + +****************************************************************************** +JASON - Owns everything not owned by anyone else, the greedy bastard. +****************************************************************************** + +TEST - safe time while entering ring +TEST - second wind safety time + +DONE - shawn's hdhold suplex doesn't add to combo meter +DONE - doink's & razor's head grabs don't add to combo meter + +why the funny reaction on spin kicks? +somehow make robotron fit or abandon it (not NEARLY enough room) + +DONE - don't allow taunts if all opponents are dead. + +DONE?- more buckoff weirdness + +DONE - new hint - pin guys who can't buck off + +1 on 2, tossed guy out, went out after him, I walked toward rear of arena, + opponent logic wouldn't allow him to walk back to me, time ran out, + I won. Drone even climbed back into arena. + +DONE - 1 on 2, tossed guy out, killed him, I waited outside, never took damage + +do fake head grab if too fast +drones not aggressive outside of ring +rpt hdbutt needs to be reversible. + +interruptible credits +DONE - put operator message over top of bouncing balls +choose brighter pal/font for end game stories +reduce firework time - jazz up text +???? - add some white flashes to fireworks +effects on napalm miss +kick or punch to a flying opponent should fall back in place, not bounce off +bam bam hits inair off-ground opponent from tbukl leap, do fall back sans fire +DONE - don't allow pushing people out of flying kicks. +unique sound on second wind +no attack sounds if blocked +meter comes out after a fling +getting buzzed, someone interrupted it, I was left hanging +rzr z-float backwards on pin +bam fireball +Rzr blade toss - blades also? +dnk tornado +trashed combo image +Getup meter came out, didn't rise until a button was hit - flung/flykicked +8-on-1 did buckoff on right, message came out on left +look at all ;fix & TODO comments +some moves give high-risk message but didn't hit! +Drain from my meter into his on squeeze move - use taker pin art + +???? - still have opponent bnc off ropes from choke slide and drift up/over offscrn +???? - robotron sounds [can't do it unless we can link robotron in somehow] +???? - auto taunt after def play - block time? +???? - allow sharpshooter on dead guys +???? - fix that zero seconds crap + +****************************************************************************** +MARK - owns wrestlers (bam, doink, ???seq?, etc.) +****************************************************************************** + +use the pie +show hiptoss art not in close +bam combos against lex +doink hammer bug (?) +knock-down hits should hold longer (only when you've got one live opponent) +slow down recoil on punches +bam bam charge neckbreaker after hiptoss +fix spirits +drone yoko salts teammate bret, bret gets stuck in run frame +quicker run time whacks +yoko lost overhead victim +low gut flykick +2 butn pickups +graboh mvs on other combo +last super k,p - delay +chair code +dnk box pnch - slide mv - dnk negpal +Do doink boxing pnch slide - trail +Yoko bnc on grnd knock opponent down/perhaps float, energy shock wave - air2 +kick somebody out of ring +look into tb misses +fire wad plume for bam pin +bret eye gouge move floats +Add sweat at neckbreaks, etc. - lex elbow to face +Look through wake up addrs to see what looks out of place +Do hands from mat Taker move +Add bogus adam bmb, etc. audits, inc over time... text strings also +Repeated chokes +bret swirl mv from head hold too powerful +ball bnc +Smoke from turnbuckle moves (hits only) +Add other moves (knees, etc) to in close combos +Flip slam to taker - taker slides off ropes +Put in swirl/swirl speedy fly kick +Make spirits code/art cooler + +****************************************************************************** +MIKE - owns AWARD.ASM +****************************************************************************** + +Test combos + +IN PROGRESS - Taker coffin. + + +DONE - Try to free up more program space. NOTE - We gain about 16k by + turning OFF debug mode. + +DONE - end game dma lockup - NOTE - This was being caused by multiple + round winner announcement processes being started. As far as I know + Jason fixed that problem. + +DONE - end game pan around, faster fireworks, readable text, more text + +DONE - attract mode instructions - secret moves (go from bio page to a bio page + without text, instead put up three moves). NOTE - Need to finalize + tips for each wrestler. + +DONE - Fix some bullshit problem with some off brand watchdog chip gurnee + decided to use. What a cluster fuck!!!! + +DONE - AAMA Message crash bug from Belmont tape. See explanation in + attract.asm + +DONE - do a general hints in the attract mode on one page - tons of moves. flings, + hiptosses, big boots, flying kicks, etc. + +****************************************************************************** +SHAWN - owns DRONE.ASM +****************************************************************************** + +make the first drone a complete sissy +drones are too aggressive. on the low difficulty settings, the drones don't + win headholds, and they block poorly, which is good, but they still + constantly attack, kamikaze-style. On low settings, they should just stand + around and/or circle their opponent more. +drones don't appear to begin trying to buckoff until they get pinned. They + should start the instant they die. +rzr has a leaping rugslam now - TT KICK +drones - shouldn't jump off turnbuckle so often in multi matches +make drones easier - especially match one +won 5 against humans, then drone kicked my butt - rules? +fix undertaker not pinning - taker walks back and forth real fast trying to + look for a pin! +guys still walk into ropes for long time! +don't attack mode head hold humans - unless difficulty setting is hi! +Don't have drones do power moves unless human has. +Yoko should take advantage of salt throw +Drones should take advantage of missed buzzers, etc. +Have drones run back into ring +drones should NOT be able to mess with other drones when they are in the + middle of a puppet move +Drone Taker drops people from chokehold + \ No newline at end of file diff --git a/TP.ASM b/TP.ASM new file mode 100755 index 0000000..957f46a --- /dev/null +++ b/TP.ASM @@ -0,0 +1,53 @@ +#Bret + LWWW H2AH3A+FR1,79,-1,0 + LWWW H2AH3A+FR1,79,-1,0 + LWWW H3HB3A+FR3,79,-1,0 + LWWW H3HB3A+FR2,79,-1,0 + LWWW H3HB3A+FR1,80,-1,0 +#Razor + LWWW R3HB3A+FR3,77,-1,0 + LWWW R3HB3A+FR3,77,-1,0 + LWWW R3HB3A+FR3,77,-1,0 + LWWW R3HB3A+FR2,77,-1,0 + LWWW R3BF3A+FR1,68,-1,0 +#Taker + LWWW U4AM4C+FR2,93,-1,0 + LWWW U4AM4C+FR2,93,-1,0 + LWWW U4BF3A+FR2,93,-1,0 + LWWW U4BF3A+FR3,93,-1,0 + LWWW U4BF3Z+FR3,56h,-1,0 +#Yokozuna + LWWW Y3LB3A+FR2,83,-1,0 + LWWW Y3LB3A+FR2,83,-1,0 + LWWW Y3LB3A+FR2,83,-1,0 + LWWW Y3LB3A+FR9,83,-1,0 + LWWW Y3BF3A+FR1,4fh,-1,0 +#Shawn + LWWW S4AH3D+FR5,77,-1,0 + LWWW S4AH3D+FR5,77,-1,0 + LWWW S4AH3D+FR5,77,-1,0 + LWWW S4BF3A+FR2,77,-1,0 + LWWW S4BF3A+FR3,77,-1,0 +#BamBam + LWWW B4BF3A+FR1,87,-4,0 + LWWW B4BF3A+FR1,87,-4,0 + LWWW B4BF3A+FR1,87,-4,0 + LWWW B3HB3A+FR2,55h,-1,0 + LWWW B3BF3C+FR5,55h,0,0 +#Doink + LWWW D3AK3A+FR3,73,0,0 + LWWW D3AK3A+FR3,73,0,0 + LWWW D3AK3A+FR3,73,0,0 + LWWW D3AK3A+FR2,73,0,0 + LWWW D3BF3A+FR1,73,0,0 + +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,81,-1,0 + LWWW L4AH4B+FR3,81,-1,0 + LWWW L3BF3A+FR1,81,-1,1 + LWWW L3BF3A+FR2,81,-1,1 + LWWW L3BF3B+FR5,4fh,-1,0 + + \ No newline at end of file diff --git a/UNDSEQ1.ASM b/UNDSEQ1.ASM new file mode 100755 index 0000000..7c26e4f --- /dev/null +++ b/UNDSEQ1.ASM @@ -0,0 +1,653 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "undseq1.asm" + .title "Undertaker animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "takerimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + .ref SMALL_RUN + .REF MAYBE_BOUNCE_ROPE + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* STANDS + + SUBR und_zip_anim + WL 60*60,U2ST2C+FR5 + .word ANI_END ;<--- change on everyone else + + + SUBR und_stand2_anim + SUBR und_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 8,U2ST2C+FR1 + WL 8,U2ST2C+FR3 + WL 8,U2ST2C+FR5 + WL 8,U2ST2C+FR7 + WL 8,U2ST2C+FR9 + WL 8,U2ST2C+FR7 + WL 8,U2ST2C+FR5 + WL 8,U2ST2C+FR3 + .word ANI_REPEAT + + + SUBR und_stand4_anim + SUBR und_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 9,U4ST4D+FR1 + WL 9,U4ST4D+FR3 + WL 9,U4ST4D+FR5 + WL 9,U4ST4D+FR7 + WL 9,U4ST4D+FR9 + WL 9,U4ST4D+FR7 + WL 9,U4ST4D+FR5 + WL 9,U4ST4D+FR3 + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR und_torso2_anim + SUBR und_torso8_anim + + WL 4,U2TW2A+FR1 + WL 4,U2TW2A+FR2 + WL 4,U2TW2A+FR3 + WL 4,U2TW2A+FR4 + WL 4,U2TW2A+FR5 + WL 4,U2TW2A+FR4 + WL 4,U2TW2A+FR3 + WL 4,U2TW2A+FR2 + .word ANI_REPEAT + + + SUBR und_torso4_anim + SUBR und_torso6_anim + + WL 4,U4TW4A+FR1 + WL 4,U4TW4A+FR2 + WL 4,U4TW4A+FR3 + WL 4,U4TW4A+FR4 + WL 4,U4TW4A+FR5 + WL 4,U4TW4A+FR4 + WL 4,U4TW4A+FR3 + WL 4,U4TW4A+FR2 + .word ANI_REPEAT + +; SUBR und_holdoh_anim +; WL 999,D4TH4A01 +; .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR und_walk1_f2_anim + WL 3,U2WL1A+FR1 +; WL 2,U2WL1A+FR2 + WL 3,U2WL1A+FR3 +; WL 2,U2WL1A+FR4 + WL 3,U2WL1A+FR5 +; WL 2,U2WL1A+FR6 + WL 3,U2WL1A+FR7 +; WL 2,U2WL1A+FR8 + WL 3,U2WL1A+FR9 +; WL 2,U2WL1A+FR10 + WL 3,U2WL1A+FR11 +; WL 2,U2WL1A+FR12 + WL 3,U2WL1A+FR13 +; WL 2,U2WL1A+FR14 + WL 3,U2WL1A+FR15 +; WL 2,U2WL1A+FR16 + WL 3,U2WL1A+FR17 +; WL 2,U2WL1A+FR18 + .word ANI_REPEAT + + SUBR und_walk2_f2_anim + WL 3,U2WL2A+FR1 +; WL 2,U2WL2A+FR2 + WL 3,U2WL2A+FR3 +; WL 2,U2WL2A+FR4 + WL 3,U2WL2A+FR5 +; WL 2,U2WL2A+FR6 + WL 3,U2WL2A+FR7 +; WL 2,U2WL2A+FR8 + WL 3,U2WL2A+FR9 +; WL 2,U2WL2A+FR10 + WL 3,U2WL2A+FR11 +; WL 2,U2WL2A+FR12 + WL 3,U2WL2A+FR13 +; WL 2,U2WL2A+FR14 + WL 3,U2WL2A+FR15 +; WL 2,U2WL2A+FR16 + WL 3,U2WL2A+FR17 +; WL 2,U2WL2A+FR18 + WL 3,U2WL2A+FR19 +; WL 2,U2WL2A+FR20 + WL 3,U2WL2A+FR21 +; WL 2,U2WL2A+FR22 + WL 3,U2WL2A+FR23 +; WL 2,U2WL2A+FR24 + .word ANI_REPEAT + + SUBR und_walk4_f2_anim + WL 3,U2WL8A+FR1 +; WL 2,U2WL8A+FR2 + WL 3,U2WL8A+FR3 +; WL 2,U2WL8A+FR4 + WL 3,U2WL8A+FR5 +; WL 2,U2WL8A+FR6 + WL 3,U2WL8A+FR7 +; WL 2,U2WL8A+FR8 + WL 3,U2WL8A+FR9 +; WL 2,U2WL8A+FR10 + WL 3,U2WL8A+FR11 +; WL 2,U2WL8A+FR12 + WL 3,U2WL8A+FR13 +; WL 2,U2WL8A+FR14 + WL 3,U2WL8A+FR15 +; WL 2,U2WL8A+FR16 + WL 3,U2WL8A+FR17 +; WL 2,U2WL8A+FR18 + WL 3,U2WL8A+FR19 + .word ANI_REPEAT + + SUBR und_walk5_f2_anim +; WL 2,U2WL1A+FR18 + WL 3,U2WL1A+FR17 +; WL 2,U2WL1A+FR16 + WL 3,U2WL1A+FR15 +; WL 2,U2WL1A+FR14 + WL 3,U2WL1A+FR13 +; WL 2,U2WL1A+FR12 + WL 3,U2WL1A+FR11 +; WL 2,U2WL1A+FR10 + WL 3,U2WL1A+FR9 +; WL 2,U2WL1A+FR8 + WL 3,U2WL1A+FR7 +; WL 2,U2WL1A+FR6 + WL 3,U2WL1A+FR5 +; WL 2,U2WL1A+FR4 + WL 3,U2WL1A+FR3 +; WL 2,U2WL1A+FR2 + WL 3,U2WL1A+FR1 + .word ANI_REPEAT + + SUBR und_walk6_f2_anim +; WL 2,U2WL2A+FR24 + WL 3,U2WL2A+FR23 +; WL 2,U2WL2A+FR22 + WL 3,U2WL2A+FR21 +; WL 2,U2WL2A+FR20 + WL 3,U2WL2A+FR19 +; WL 2,U2WL2A+FR18 + WL 3,U2WL2A+FR17 +; WL 2,U2WL2A+FR16 + WL 3,U2WL2A+FR15 +; WL 2,U2WL2A+FR14 + WL 3,U2WL2A+FR13 +; WL 2,U2WL2A+FR12 + WL 3,U2WL2A+FR11 +; WL 2,U2WL2A+FR10 + WL 3,U2WL2A+FR9 +; WL 2,U2WL2A+FR8 + WL 3,U2WL2A+FR7 +; WL 2,U2WL2A+FR6 + WL 3,U2WL2A+FR5 +; WL 2,U2WL2A+FR4 + WL 3,U2WL2A+FR3 +; WL 2,U2WL2A+FR2 + WL 3,U2WL2A+FR1 + .word ANI_REPEAT + + + SUBR und_walk8_f2_anim + WL 3,U2WL8A+FR19 +; WL 2,U2WL8A+FR18 + WL 3,U2WL8A+FR17 +; WL 2,U2WL8A+FR16 + WL 3,U2WL8A+FR15 +; WL 2,U2WL8A+FR14 + WL 3,U2WL8A+FR13 +; WL 2,U2WL8A+FR12 + WL 3,U2WL8A+FR11 +; WL 2,U2WL8A+FR10 + WL 3,U2WL8A+FR9 +; WL 2,U2WL8A+FR8 + WL 3,U2WL8A+FR7 +; WL 2,U2WL8A+FR6 + WL 3,U2WL8A+FR5 +; WL 2,U2WL8A+FR4 + WL 3,U2WL8A+FR3 +; WL 2,U2WL8A+FR2 + WL 3,U2WL8A+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR und_walk1_f4_anim + +; WL 2,U4WL5A+FR20 + WL 3,U4WL5A+FR19 +; WL 2,U4WL5A+FR18 + WL 3,U4WL5A+FR17 +; WL 2,U4WL5A+FR16 + WL 3,U4WL5A+FR15 +; WL 2,U4WL5A+FR14 + WL 3,U4WL5A+FR13 +; WL 2,U4WL5A+FR12 + WL 3,U4WL5A+FR11 +; WL 2,U4WL5A+FR10 + WL 3,U4WL5A+FR9 +; WL 2,U4WL5A+FR8 + WL 3,U4WL5A+FR7 +; WL 2,U4WL5A+FR6 + WL 3,U4WL5A+FR5 +; WL 2,U4WL5A+FR4 + WL 3,U4WL5A+FR3 +; WL 2,U4WL5A+FR2 + WL 3,U4WL5A+FR1 + .word ANI_REPEAT + + SUBR und_walk2_f4_anim + WL 3,U4WL2C+FR1 +; WL 2,U4WL2C+FR2 + WL 3,U4WL2C+FR3 +; WL 2,U4WL2C+FR4 + WL 3,U4WL2C+FR5 +; WL 2,U4WL2C+FR6 + WL 3,U4WL2C+FR7 +; WL 2,U4WL2C+FR8 + WL 3,U4WL2C+FR9 +; WL 2,U4WL2C+FR10 + WL 3,U4WL2C+FR11 +; WL 2,U4WL2C+FR12 + WL 3,U4WL2C+FR13 +; WL 2,U4WL2C+FR14 + WL 3,U4WL2C+FR15 +; WL 2,U4WL2C+FR16 + WL 3,U4WL2C+FR17 +; WL 2,U4WL2C+FR18 + WL 3,U4WL2C+FR19 + .word ANI_REPEAT + + SUBR und_walk4_f4_anim + WL 3,U4WL4A+FR1 +; WL 2,U4WL4A+FR2 + WL 3,U4WL4A+FR3 +; WL 2,U4WL4A+FR4 + WL 3,U4WL4A+FR5 +; WL 2,U4WL4A+FR6 + WL 3,U4WL4A+FR7 +; WL 2,U4WL4A+FR8 + WL 3,U4WL4A+FR9 +; WL 2,U4WL4A+FR10 + WL 3,U4WL4A+FR11 +; WL 2,U4WL4A+FR12 + WL 3,U4WL4A+FR13 +; WL 2,U4WL4A+FR14 + WL 3,U4WL4A+FR15 +; WL 2,U4WL4A+FR16 + WL 3,U4WL4A+FR17 +; WL 2,U4WL4A+FR18 + WL 3,U4WL4A+FR19 +; WL 2,U4WL4A+FR20 + WL 3,U4WL4A+FR21 +; WL 2,U4WL4A+FR22 + WL 3,U4WL4A+FR23 +; WL 2,U4WL4A+FR24 + WL 3,U4WL4A+FR25 +; WL 2,U4WL4A+FR26 + .word ANI_REPEAT + + SUBR und_walk5_f4_anim + WL 3,U4WL5A+FR1 +; WL 2,U4WL5A+FR2 + WL 3,U4WL5A+FR3 +; WL 2,U4WL5A+FR4 + WL 3,U4WL5A+FR5 +; WL 2,U4WL5A+FR6 + WL 3,U4WL5A+FR7 +; WL 2,U4WL5A+FR8 + WL 3,U4WL5A+FR9 +; WL 2,U4WL5A+FR10 + WL 3,U4WL5A+FR11 +; WL 2,U4WL5A+FR12 + WL 3,U4WL5A+FR13 +; WL 2,U4WL5A+FR14 + WL 3,U4WL5A+FR15 +; WL 2,U4WL5A+FR16 + WL 3,U4WL5A+FR17 +; WL 2,U4WL5A+FR18 + WL 3,U4WL5A+FR19 +; WL 2,U4WL5A+FR20 + .word ANI_REPEAT + + SUBR und_walk6_f4_anim + + WL 3,U4WL2C+FR19 +; WL 2,U4WL2C+FR18 + WL 3,U4WL2C+FR17 +; WL 2,U4WL2C+FR16 + WL 3,U4WL2C+FR15 +; WL 2,U4WL2C+FR14 + WL 3,U4WL2C+FR13 +; WL 2,U4WL2C+FR12 + WL 3,U4WL2C+FR11 +; WL 2,U4WL2C+FR10 + WL 3,U4WL2C+FR9 +; WL 2,U4WL2C+FR8 + WL 3,U4WL2C+FR7 +; WL 2,U4WL2C+FR6 + WL 3,U4WL2C+FR5 +; WL 2,U4WL2C+FR4 + WL 3,U4WL2C+FR3 +; WL 2,U4WL2C+FR2 + WL 3,U4WL2C+FR1 + .word ANI_REPEAT + + SUBR und_walk8_f4_anim + +; WL 2,U4WL4A+FR26 + WL 3,U4WL4A+FR25 +; WL 2,U4WL4A+FR24 + WL 3,U4WL4A+FR23 +; WL 2,U4WL4A+FR22 + WL 3,U4WL4A+FR21 +; WL 2,U4WL4A+FR20 + WL 3,U4WL4A+FR19 +; WL 2,U4WL4A+FR18 + WL 3,U4WL4A+FR17 +; WL 2,U4WL4A+FR16 + WL 3,U4WL4A+FR15 +; WL 2,U4WL4A+FR14 + WL 3,U4WL4A+FR13 +; WL 2,U4WL4A+FR12 + WL 3,U4WL4A+FR11 +; WL 2,U4WL4A+FR10 + WL 3,U4WL4A+FR9 +; WL 2,U4WL4A+FR8 + WL 3,U4WL4A+FR7 +; WL 2,U4WL4A+FR6 + WL 3,U4WL4A+FR5 +; WL 2,U4WL4A+FR4 + WL 3,U4WL4A+FR3 +; WL 2,U4WL4A+FR2 + WL 3,U4WL4A+FR1 + .word ANI_REPEAT + + +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR und_2_to_4_turn_anim + SUBR und_8_to_6_turn_anim + + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TT5A+FR2 + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_2_turn_anim + SUBR und_6_to_8_turn_anim + + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TT5A+FR4 + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_6_turn_anim + SUBR und_6_to_4_turn_anim + + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TT5A+FR5 + .word ANI_XFLIP + WL 2,U1TT5A+FR5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_2_to_8_turn_anim + SUBR und_8_to_2_turn_anim + + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TT5A+FR1 + .word ANI_XFLIP + WL 2,U1TT5A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_8_turn_anim + SUBR und_6_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TT5A+FR5 + .word ANI_XFLIP + WL 2,U1TT5A+FR5 + WL 2,U1TT5A+FR4 + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_2_to_6_turn_anim + SUBR und_8_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TT5A+FR2 + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR4 + WL 2,U1TT5A+FR5 + .word ANI_XFLIP + WL 2,U1TT5A+FR5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + SUBR und_2_to_4_turn2_anim + SUBR und_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TR5A+FR2 + WL 2,U1TR5A+FR3 + .word ANI_SETFACING + WL 2,U1TR5A+FR3 + WL 2,U1TR5A+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_2_turn2_anim + SUBR und_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TR5A+FR4 + WL 2,U1TR5A+FR3 + .word ANI_SETFACING + WL 2,U1TR5A+FR3 + WL 2,U1TR5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_6_turn2_anim + SUBR und_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TR5A+FR5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,U1TR5A+FR5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_2_to_8_turn2_anim + SUBR und_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TR5A+FR1 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,U1TR5A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_to_8_turn2_anim + SUBR und_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TR5A+FR5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,U1TR5A+FR5 + WL 2,U1TR5A+FR4 + WL 2,U1TR5A+FR3 + WL 2,U1TR5A+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_2_to_6_turn2_anim + SUBR und_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 2,U1TR5A+FR2 + WL 2,U1TR5A+FR3 + WL 2,U1TR5A+FR4 + WL 2,U1TR5A+FR5 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + WL 2,U1TR5A+FR5 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* RUNNING IN #3 + + SUBR und_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL ANI_GOTO,#run2 + + SUBR und_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,16,71 ;mode,x,y,w,h +#lp1 + WL 4,U3RN3A+FR1 +#ocrun_start + WL 4,U3RN3A+FR2 + WL 4,U3RN3A+FR3 + WL ANI_CODE,SMALL_RUN + WL 4,U3RN3A+FR4 +#run2 + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + .word ANI_ATTACK_ON,AMODE_RUN,5,29,16,71 ;mode,x,y,w,h + WL 4,U3RN3A+FR5 + WL 4,U3RN3A+FR6 + WL 4,U3RN3A+FR7 + WL ANI_CODE,SMALL_RUN + WL 4,U3RN3A+FR8 + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR und_bounce_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_OVERLAP|MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + .ref fix_bnc_flip + WL ANI_CODE,fix_bnc_flip + WL ANI_CODE,MAYBE_BOUNCE_ROPE + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 2,U4BO3Z+FR1 + .word ANI_BOUNCEROPE,0 + WL 1,U4BO3Z+FR1 + + WL 2,U4BO3Z+FR2 + .word ANI_BOUNCEROPE,1 + WL ANI_CODE,SMALL_RUN + + WL 1,U4BO3Z+FR2 + + WL 2,U4BO3Z+FR3 + .word ANI_BOUNCEROPE,2 + WL 1,U4BO3Z+FR3 + + WL 2,U4BO3Z+FR4 + .word ANI_BOUNCEROPE,3 + WL 1,U4BO3Z+FR4 + + .word ANI_ZEROVELS + + WL 2,U4BO3Z+FR5 + .word ANI_BOUNCEROPE,4 + WL 1,U4BO3Z+FR5 + WL 3,U4BO3Z+FR6 + WL 2,U4BO3Z+FR7 + .word ANI_BOUNCEROPE,0 + WL 1,U4BO3Z+FR7 + WL 2,U4BO3Z+FR8 + .word ANI_BOUNCEROPE,-1 + WL ANI_CODE,SMALL_RUN + WL 1,U4BO3Z+FR8 + WL 3,U4BO3Z+FR9 + WL 3,U4BO3Z+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/UNDSEQ2.ASM b/UNDSEQ2.ASM new file mode 100755 index 0000000..7d4e420 --- /dev/null +++ b/UNDSEQ2.ASM @@ -0,0 +1,4699 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "undseq2.asm" + .title "Undertaker animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + + .include "takerimg.h" + .include "damage.equ" + .include "miscimg.glo" + .INCLUDE "SWEAT.EQU" + .include "miscimg.glo" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref DO_FLAME_HIT_SND,CREATE_URN2 + .ref DO_COMBO_MESS,DO_GRUNT,hit_nearest + .ref und_combo_tombstone_smash_anim + .ref und_combo_neckbreaker_anim + .ref und_combo_snapmirror_anim + .ref UNDNEG_P,set_tbukl_airmode + .ref free_toss_check,setup_freetoss + .ref und_combo_sliding_choke_anim + .ref DO_CROWD_CHEER,SET_DIR_FACE,HIT_THE_MAT,SMALL_BOUNCE + .ref CALL_MISSES,am_I_dizzy,am_I_dead,ckzpos + .ref start_run_anim,no_bk_xvel,check_xvel + .ref CALL_OTHER_AVERAGE,CALL_ANI_AVERAGE_MOVE,DO_WAIL,DO_BLOCKED + .ref set_tbukl_confine,start_run_flung,set_raisearm_bit + .ref check_raisearm_bit + .ref win_announce,create_impact2,create_impact4,create_impact5 + .ref create_impact_salt,und_3_head_held_anim,grnd_hit + .ref create_impact,choose_2or4,und_neckbreaker_anim + +UARMPN + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long UARMPN09 + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* #2 NORMAL PUNCH + + SUBR und_2_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2PL3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2PL3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2PL3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 2,U2PL3A+FR3 + WL 2,U2PL3A+FR4 + .word ANI_ATTACK_ON, AMODE_PUNCH,53,92,48,12 ;mode,x,y,w,h + WL 5,U2PL3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,30000h + WL 5,U2PL3A+FR5 +#no_hit + WL 2,U2PL3A+FR6 + WL 3,U2PL3A+FR7 + WL 2,U2PL3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 NORMAL PUNCH + + SUBR und_4_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4PL3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4PL3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4PL3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,6 + WL 2,U4PL3A+FR3 + WL 2,U4PL3A+FR4 + .word ANI_ATTACK_ON, AMODE_PUNCH,53,77,48,20 ;mode,x,y,w,h + WL 6,U4PL3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + + WL ANI_SET_YVEL,30000h + WL 5,U4PL3A+FR5 + +#no_hit2 + WL 2,U4PL3A+FR6 + WL 3,U4PL3A+FR7 + WL 2,U4PL3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_combo_punch_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SET_RPTCOUNT,3 ;5 times + .WORD ANI_CLEAR_COMBO + + WL 2,U4PL3A+FR2 + WL 2,U4PL3A+FR3 + WL 2,U4PL3A+FR4 + .word ANI_CLR_STATUS + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON, AMODE_PUNCH,53,32,48,42 ;mode,x,y,w,h + WL 2,U4PL3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit4c + .WORD ANI_INC_COMBO + + WL ANI_SET_YVEL,18000h + WL 2,U4PL3A+FR5 + WL 2,U4PL3A+FR6 + WL 2,U4PL3A+FR7 + WL 2,U4PL3A+FR8 + + WL 2,U4PL3A+FR2 + WL 2,U4PL3A+FR3 + WL 2,U4PL3A+FR4 + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_PUNCH,53,32,48,42 ;mode,x,y,w,h + WL 2,U4PL3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit4c + .WORD ANI_INC_COMBO + + WL ANI_SET_YVEL,18000h + WL 2,U4PL3A+FR5 + WL 2,U4PL3A+FR6 + WL 2,U4PL3A+FR7 + WL 2,U4PL3A+FR8 +#punch_loop + .word ANI_CLR_BUTCOUNT + + WL 2,U4PL3A+FR2 + WL 1,U4PL3A+FR3 + WL 2,U4PL3A+FR4 + .word ANI_ATTACK_ON, AMODE_PUNCH,53,32,48,42 ;mode,x,y,w,h + WL 3,U4PL3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit4c + .WORD ANI_INC_COMBO + + WL ANI_SET_YVEL,18000h + WL 2,U4PL3A+FR5 + WL 2,U4PL3A+FR6 + WL 1,U4PL3A+FR7 + WL 2,U4PL3A+FR8 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#punch_loop + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK3 + WL ANI_CHANGEANIM,und_combo_flying_kick_anim + +#NEXT_CHECK3 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHECK2 + .WORD ANI_INC_COMBO + WL ANI_CHANGEANIM,und_combo_snapmirror_anim + +#NEXT_CHECK2 + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#EXIT_MOVE + WL ANI_CHANGEANIM,und_combo_butt_anim + +#EXIT_MOVE + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit4c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,U2PL3A+FR6 + WL 3,U2PL3A+FR7 + WL 3,U2PL3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 UPPERCUT + + SUBR und_2_uppercut_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + +* #4 UPPERCUT + + SUBR und_4_uppercut_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 2,U4UP3C+FR1 + WL 2,U4UP3C+FR2 + WL 2,U4UP3C+FR3 + WL 2,U4UP3C+FR4 + .word ANI_ATTACK_ON, AMODE_UPRCUT,46,55,29,59 ;mode,x,y,w,h + WL 2,U4UP3C+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;Hit, spray some explosions +;Turn on explosion sound effect + WL ANI_CODE,create_impact4 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,DO_FLAME_HIT_SND + WL ANI_CODE,CALL_OTHER_AVERAGE + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL 10,U4UP3C+FR5 + +#no_hit2 + WL 20,U4UP3C+FR5 + .word ANI_OFFSET,0,0,-5 ;x,y,z + WL 3,U4UP3C+FR4 + WL 3,U4UP3C+FR3 + WL 3,U4UP3C+FR2 + WL 3,U4UP3C+FR1 + +; .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 20,U4UP3C+FR5 +#missed + WL ANI_CODE,CALL_MISSES + WL 5,U4UP3C+FR5 + WL 3,U4UP3C+FR4 + WL 3,U4UP3C+FR3 + WL 3,U4UP3C+FR2 + WL 3,U4UP3C+FR1 + +; .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_combo_uppercut_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 2,U4UP3C+FR1 + WL 2,U4UP3C+FR2 + WL 2,U4UP3C+FR3 + WL 2,U4UP3C+FR4 + .word ANI_ATTACK_ON, AMODE_UPRCUT,46,55,59,59 ;mode,x,y,w,h + WL 2,U4UP3C+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed_c + WL ANI_IFBLOCKED,#missedb_c ;Yes, I hit blocker + .word ANI_SET_ATTACH + WL ANI_CODE,SET_OPP_GRAV_LOW + WLLL ANI_SETOPPVELS,0000H,100000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO + WL ANI_CODE,create_impact4 + WL ANI_CODE,DO_FLAME_HIT_SND + WL ANI_CODE,HIT_THE_MAT + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit3 + WL 10,U4UP3C+FR5 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_DETACH + + WL 40,U4UP3C+FR5 + .word ANI_OFFSET,0,0,-5 ;x,y,z + WL 3,U4UP3C+FR4 + WL 3,U4UP3C+FR3 + WL 3,U4UP3C+FR2 + WL 3,U4UP3C+FR1 + WL ANI_CODE,SET_OPP_GRAV_NORM + .word ANI_SHADOWTRAIL,0 ;off + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit3 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 20,U4UP3C+FR5 + .word ANI_OFFSET,0,0,-5 ;x,y,z + WL 3,U4UP3C+FR4 + WL 3,U4UP3C+FR3 + WL 3,U4UP3C+FR2 + WL 3,U4UP3C+FR1 + +; .word ANI_FACEDOWN + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb_c + WL 20,U4UP3C+FR5 +#missed_c + WL ANI_CODE,CALL_MISSES + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 5,U4UP3C+FR5 + WL 3,U4UP3C+FR4 + WL 3,U4UP3C+FR3 + WL 3,U4UP3C+FR2 + WL 3,U4UP3C+FR1 + .word ANI_SHADOWTRAIL,0 ;off + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +SET_OPP_GRAV_NORM + MOVE *A13(WHOIHIT),A10,L + MOVI GRAVITY,A0 + MOVE A0,*A10(OBJ_GRAVITY),L + RETS + +SET_OPP_GRAV_LOW + MOVE *A13(WHOIHIT),A10,L + MOVI GRAVITY-1000H,A0 + MOVE A0,*A10(OBJ_GRAVITY),L + RETS + +#***************************************************************************** +* #4 SLAP + + SUBR und_combo_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLWW ANI_SHADOWTRAIL,UNDNEG_P,4,7 ;pal,rate,lifespan + + .word ANI_CLR_BUTCOUNT + WLW ANI_ATTCHIMAGE,#GLOVE+FR1,1 ;image, zoff (priority) + WL 4,U4WA4H+FR1 + + .word ANI_CLR_STATUS + WLW ANI_ATTCHIMAGE,#GLOVE+FR2,1 ;image, zoff (priority) + WL 2,U4WA4H+FR2 + WLW ANI_ATTCHIMAGE,#GLOVE+FR3,1 ;image, zoff (priority) + WL 2,U4WA4H+FR3 + WLW ANI_ATTCHIMAGE,#GLOVE+FR4,1 ;image, zoff (priority) + WL 2,U4WA4H+FR4 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,31,33,56,48 ;mode,x,y,w,h + WL 2,U4WA4H+FR4 + WLW ANI_ATTCHIMAGE,#GLOVE+FR5,1 ;image, zoff (priority) + WL 2,U4WA4H+FR5 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed4_c + WL ANI_IFBLOCKED,#missed4_c +;hit +;Fix!! Make spirits come from head! +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,10000H,28000h,0h ;x,y,z vels + WLW ANI_SET_XVEL,20000h,AM_FACE_REL + WL 1,U4WA4H+FR5 + .WORD ANI_INC_COMBO + WL ANI_CODE,create_impact + WL ANI_CODE,DO_FLAME_HIT_SND + WL ANI_CODE,HIT_THE_MAT + + WL ANI_SET_YVEL,30000h + + WL 2,U4WA4H+FR5 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR6,1 ;image, zoff (priority) + WL 2,U4WA4H+FR6 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR7,1 ;image, zoff (priority) + WL 2,U4WA4H+FR7 + WLW ANI_ATTCHIMAGE,#GLOVE+FR8,1 ;image, zoff (priority) + WL 2,U4WA4H+FR8 + WLW ANI_ATTCHIMAGE,#GLOVE+FR9,1 ;image, zoff (priority) + WL 2,U4WA4H+FR10 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_SET_RPTCOUNT,3 ;5 times +#cslap_loop + + .word ANI_CLR_BUTCOUNT + WLW ANI_ATTCHIMAGE,#GLOVE+FR1,1 ;image, zoff (priority) + WL 1,U4WA4H+FR1 + + .word ANI_CLR_STATUS + WLW ANI_ATTCHIMAGE,#GLOVE+FR2,1 ;image, zoff (priority) + WL 1,U4WA4H+FR2 + WLW ANI_ATTCHIMAGE,#GLOVE+FR3,1 ;image, zoff (priority) + WL 1,U4WA4H+FR3 + WLW ANI_ATTCHIMAGE,#GLOVE+FR4,1 ;image, zoff (priority) + WL 1,U4WA4H+FR4 + + .word ANI_ATTACK_ON, AMODE_HDBUTT,31,33,56,48 ;mode,x,y,w,h + WL 1,U4WA4H+FR4 + WLW ANI_ATTCHIMAGE,#GLOVE+FR5,1 ;image, zoff (priority) + WL 1,U4WA4H+FR5 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed4_c + WL ANI_IFBLOCKED,#missed4_c +;hit +;Fix!! Make spirits come from head! +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,10000H,28000h,0h ;x,y,z vels + WLW ANI_SET_XVEL,20000h,AM_FACE_REL + WL 1,U4WA4H+FR5 + .WORD ANI_INC_COMBO + WL ANI_CODE,create_impact + WL ANI_CODE,DO_FLAME_HIT_SND + WL ANI_CODE,HIT_THE_MAT + + WL ANI_SET_YVEL,14000h + + WL 1,U4WA4H+FR5 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR6,1 ;image, zoff (priority) + WL 1,U4WA4H+FR6 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR7,1 ;image, zoff (priority) + WL 1,U4WA4H+FR7 + WLW ANI_ATTCHIMAGE,#GLOVE+FR8,1 ;image, zoff (priority) + WL 1,U4WA4H+FR8 + WLW ANI_ATTCHIMAGE,#GLOVE+FR9,1 ;image, zoff (priority) + WL 1,U4WA4H+FR10 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#cslap_loop + WLW ANI_ATTCHIMAGE,0,0 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK2 + WL ANI_CHANGEANIM,und_combo_flying_kick_anim + +#NEXT_CHECK2 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECKA + WL ANI_CHANGEANIM,und_combo_snapmirror_anim + +#NEXT_CHECKA + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHECK + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL ANI_CHANGEANIM,und_combo_tombstone_smash_anim +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK3 + WL ANI_CHANGEANIM,und_combo_super_kick_anim + + +#NEXT_CHECK3 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed4_c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CODE,CALL_MISSES + WL 2,U4WA4H+FR5 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR6,1 ;image, zoff (priority) + WL 3,U4WA4H+FR6 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR7,1 ;image, zoff (priority) + WL 3,U4WA4H+FR7 + WLW ANI_ATTCHIMAGE,#GLOVE+FR8,1 ;image, zoff (priority) + WL 3,U4WA4H+FR8 + WLW ANI_ATTCHIMAGE,#GLOVE+FR9,1 ;image, zoff (priority) + WL 3,U4WA4H+FR10 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,0,0 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Leaping urn slam + + SUBR und_2_run_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR4 + + SUBR und_4_run_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,12 + + WLW ANI_ATTCHIMAGE,#GLOVE+FR1,1 ;image, zoff (priority) + WL 3,U4WA4H+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0bh,999,60h,55,90000h,TGT_HEAD,75,101,10 + WL ANI_CODE,no_bk_xvel + .word ANI_CLR_STATUS + WLW ANI_ATTCHIMAGE,#GLOVE+FR2,1 ;image, zoff (priority) + WL 6,U4WA4H+FR2 + WL ANI_GOTO,#tag + + SUBR und_2_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR4 + + SUBR und_4_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,12 + + WLW ANI_ATTCHIMAGE,#GLOVE+FR1,1 ;image, zoff (priority) + WL 3,U4WA4H+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0dh,999,58h,50,90000h,TGT_HEAD,75,101,10 + WL ANI_CODE,no_bk_xvel + + .word ANI_CLR_STATUS + WLW ANI_ATTCHIMAGE,#GLOVE+FR2,1 ;image, zoff (priority) + WL 8,U4WA4H+FR2 +#tag + WLW ANI_ATTCHIMAGE,#GLOVE+FR3,1 ;image, zoff (priority) + WL 3,U4WA4H+FR3 + WLW ANI_ATTCHIMAGE,#GLOVE+FR4,1 ;image, zoff (priority) + WL 1,U4WA4H+FR4 + + .word ANI_ATTACK_ON, AMODE_URN,31,63,56,38 ;mode,x,y,w,h + WL 2,U4WA4H+FR4 + WLW ANI_ATTCHIMAGE,#GLOVE+FR5,1 ;image, zoff (priority) + WL 3,U4WA4H+FR5 + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;hit + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_CODE,create_impact + WL ANI_CODE,DO_FLAME_HIT_SND +;Put in URN smash sound! + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,40000h +#no_hit2 +#missed + WL 2,U4WA4H+FR5 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR6,1 ;image, zoff (priority) + WL 3,U4WA4H+FR6 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR7,1 ;image, zoff (priority) + WL 3,U4WA4H+FR7 + + .ref spunch_delay + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none0 + WLW ANI_ATTCHIMAGE,0,0 + WL 4,U4WA4H+FR8 + .word ANI_WAITHITGND + WL 12,U4WA4H+FR8 + WL 3,U4WA4H+FR10 + .word ANI_ZEROVELS + WL ANI_GOTO,#hitx +#none0 + + WLW ANI_ATTCHIMAGE,#GLOVE+FR8,1 ;image, zoff (priority) + WL 3,U4WA4H+FR8 + WLW ANI_ATTCHIMAGE,#GLOVE+FR9,1 ;image, zoff (priority) + WL 3,U4WA4H+FR10 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,0,0 +#hitx + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 2,U4WA4H+FR5 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR6,1 ;image, zoff (priority) + WL 3,U4WA4H+FR6 + WL ANI_CODE,HIT_THE_MAT + WLW ANI_ATTCHIMAGE,#GLOVE+FR7,1 ;image, zoff (priority) + WL 3,U4WA4H+FR7 + + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none1 + WLW ANI_ATTCHIMAGE,0,0 + WL 4,U4WA4H+FR8 + .word ANI_WAITHITGND + WL 15,U4WA4H+FR8 + WL 3,U4WA4H+FR10 + .word ANI_ZEROVELS + WL ANI_GOTO,#hitx +#none1 + + WLW ANI_ATTCHIMAGE,#GLOVE+FR8,1 ;image, zoff (priority) + WL 3,U4WA4H+FR8 + WLW ANI_ATTCHIMAGE,#GLOVE+FR9,1 ;image, zoff (priority) + WL 3,U4WA4H+FR10 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,0,0 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#GLOVE + .long 0 + .long GLVHIT01 + .long GLVHIT02 + .long GLVHIT03 + .long GLVHIT04 + .long GLVHIT05 + .long GLVHIT06 + .long GLVHIT07 + .long GLVHIT08 + .long GLVHIT09 + +#************ +* +* #4 PUSH + + SUBR und_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_SETFLAG,M_PUSH + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUSH,12 + WL 3,U4PS3A+FR1 + WL 3,U4PS3A+FR2 + WL 3,U4PS3A+FR3 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ATTACK_ON, AMODE_PUSH,33,85,65,17 ;mode,x,y,w,h + WL 6,U4PS3A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-70000h,#no_hit ;range,vel,addr + WL 15,U4PS3A+FR5 +#no_hit + WL 3,U4PS3A+FR5 + WL ANI_IFSTATUS,#hit +;If missed on push, hold a little longer + WL 5,U4PS3A+FR5 +#hit + WL 3,U4PS3A+FR6 + WL 3,U4PS3A+FR7 + WL 3,U4PS3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR und_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,U2AH3A+FR3 + WL 15,U2AH3A+FR4 + WL 4,U2AH3A+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR und_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 4,U4AH3A+FR2 + WL 14,U4AH3A+FR3 + WL 4,U4AH3A+FR4 + WL 4,U4AH3A+FR5 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR und_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 4,U4AH3A+FR2 + WL 14,U4AH3A+FR3 + WL 4,U4AH3A+FR4 + WL 4,U4AH3A+FR5 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,und_dizzy_anim + .word ANI_END + +****************************************************************************** +* +* #4 LOSE BALANCE + + SUBR und_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WL 3,U4LB4A+FR1 + WL 3,U4LB4A+FR2 + WL 3,U4LB4A+FR3 + WL 3,U4LB4A+FR4 + WL 3,U4LB4A+FR5 + WL 3,U4LB4A+FR6 + WL 3,U4LB4A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 LOSE BALANCE - Go dizzy + + SUBR und_4_losebal_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_FRICTION,3000h + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,U4LB4A+FR1 + WL 3,U4LB4A+FR2 + WL 3,U4LB4A+FR3 + WL 3,U4LB4A+FR4 + WL 3,U4LB4A+FR5 + WL 3,U4LB4A+FR6 + WL 3,U4LB4A+FR1 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,und_dizzy_anim + .word ANI_END + +#***************************************************************************** +* +* #2 ELBOW DROP + +#yoff equ 40 + + SUBR und_2_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2JP2C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2JP2C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2JP2C+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 3,U2JP2C+FR2 + WL 3,U2JP2C+FR3 + + ;skip the leap if simply falling down will do. + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,29,-14,-40,25,36,50 + WL 1,U2JP2C+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#skip_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,160,140,90000h,TGT_USER,44,#yoff,-30 + WL ANI_GOTO,#do_leapat + +#skip_leapat + WL ANI_SET_YVEL,10000h ;3 +#do_leapat + .word ANI_OFFSET,0,#yoff,0 + WL 3,U2JP2C+FR4 + WL 3,U2JP2C+FR5 + WL 3,U2JP2C+FR6 + WL 3,U2JP2C+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,29,-14,-40,25,36,50 + WL 4,U2JP2C+FR8 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_9,2,2 + WL ANI_IFNOTSTATUS,#hit + + WL ANI_CODE,CALL_MISSES +#hit + .word ANI_DRAW_NAME,18 + WL 8,U2JP2C+FR9 + + ;getup + .word ANI_OFFSET,13,0,0 + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 3,U3GD2A+FR4 + WL 3,U3GD2A+FR5 + WL 3,U3GD2A+FR6 + WL 3,U3GD2A+FR7 +;Keep this frame in game... + WL 1,U3GD2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD2A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 ELBOW DROP + +#yoff equ 40 + + SUBR und_4_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4JP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4JP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4JP4D+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + WL 3,U4JP4D+FR2 + WL 3,U4JP4D+FR3 + + ;skip the leap if simply falling down will do. + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,3,-16,-10,27,35,50 + WL 1,U4JP4D+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#skip_leapat + +;#skip_leapat + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,160,140,90000h,TGT_USER,19,#yoff,60 + WL ANI_GOTO,#do_leapat + +#skip_leapat + WL ANI_SET_YVEL,10000h ;3 +#do_leapat + .word ANI_OFFSET,0,#yoff,0 + WL 3,U4JP4D+FR4 + WL 3,U4JP4D+FR5 + WL 3,U4JP4D+FR6 + WL 3,U4JP4D+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .WORD ANI_ADD_MOVE,MOVE_C_9,2,2 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,3,-16,-10,27,35,70 + WL 4,U4JP4D+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#hit + + WL ANI_CODE,CALL_MISSES +#hit + .word ANI_DRAW_NAME,18 + WL 8,U4JP4D+FR9 + + ;getup + .word ANI_OFFSET,19,0,0 + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 3,U3GD4A+FR5 + WL 3,U3GD4A+FR6 + WL 3,U3GD4A+FR7 + WL 1,U3GD4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD4A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 HEADBUTT + + SUBR und_2_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 2,U2BC3A+FR2 + WL 2,U2BC3A+FR3 + WL 2,U2BC3A+FR4 + WL 2,U2BC3A+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT,-8,73,73,46 ;mode,x,y,w,h + WL 3,U2BC3A+FR6 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,U2BC3A+FR7 +#no_hit + WL 5,U2BC3A+FR7 + WL 3,U2BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 HEADBUTT + + SUBR und_4_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4BC3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 2,U4BC3A+FR2 + WL 2,U4BC3A+FR3 + WL 2,U4BC3A+FR4 + WL 2,U4BC3A+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT,-8,73,73,46 ;mode,x,y,w,h + WL 3,U4BC3A+FR6 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + + WL ANI_SET_YVEL,38000h + WL 6,U4BC3A+FR7 +#no_hit2 + WL 5,U4BC3A+FR7 + WL 3,U4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_combo_butt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,40000h,AM_FACE_REL + + WLWW ANI_SHADOWTRAIL,UNDNEG_P,4,7 ;pal,rate,lifespan + + + WL 1,U4BC3A+FR1 + WL 2,U4BC3A+FR2 + WL 1,U4BC3A+FR3 + WL 2,U4BC3A+FR4 + WL 1,U4BC3A+FR5 + WLW ANI_SET_XVEL,0h,AM_FACE_REL + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HDBUTT,-8,53,73,56 ;mode,x,y,w,h + WL 2,U4BC3A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed_bc + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,000H,28000h,0h ;x,y,z vels + WL 1,U4BC3A+FR6 + + WL ANI_SET_YVEL,38000h + WL 2,U4BC3A+FR7 + WL 2,U4BC3A+FR7 + WL 2,U4BC3A+FR8 + + .word ANI_SET_RPTCOUNT,2 ;5 times +#butt_loop + .word ANI_CLR_BUTCOUNT + WL 1,U4BC3A+FR1 + WL 1,U4BC3A+FR2 + WL 1,U4BC3A+FR3 + WL 1,U4BC3A+FR4 + WL 2,U4BC3A+FR5 + WLW ANI_SET_XVEL,0h,AM_FACE_REL + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HDBUTT,-8,53,73,56 ;mode,x,y,w,h + WL 1,U4BC3A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed_bc + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,000H,28000h,0h ;x,y,z vels + WL 1,U4BC3A+FR6 + + WL ANI_SET_YVEL,18000h + WL 2,U4BC3A+FR7 + WL 1,U4BC3A+FR7 + WL 2,U4BC3A+FR8 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#butt_loop + + WL 2,U4BC3A+FR1 + WL 2,U4BC3A+FR2 + WL 2,U4BC3A+FR3 + WL 2,U4BC3A+FR4 + WL 2,U4BC3A+FR5 + WLW ANI_SET_XVEL,0h,AM_FACE_REL + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_HDBUTT,-8,53,73,56 ;mode,x,y,w,h + WL 2,U4BC3A+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed_bc + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,000H,28000h,0h ;x,y,z vels + WL 2,U4BC3A+FR6 + + WL ANI_SET_YVEL,38000h + WL 3,U4BC3A+FR7 + WL 2,U4BC3A+FR7 + WL 3,U4BC3A+FR8 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK3 + WL ANI_CHANGEANIM,und_combo_flying_kick_anim + +#NEXT_CHECK3 + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK2 + WL ANI_CHANGEANIM,und_combo_snapmirror_anim + +#NEXT_CHECK2 + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CHANGEANIM,und_combo_super_kick_anim +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#EXIT_MOVE + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL ANI_CHANGEANIM,und_combo_tombstone_smash_anim + +#EXIT_MOVE + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#missed_bc + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + WL 5,U4BC3A+FR7 + WL 3,U4BC3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEADBUTTS - In close + + SUBR und_2_butts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,3 ;5 times + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 +#rpt + .word ANI_CLR_BUTCOUNT + + WL 2,U2BC3A+FR1 + .word ANI_STARTATTACK,AT_HDBUTT,8 + WL 1,U2BC3A+FR2 + WL 2,U2BC3A+FR3 + WL 1,U2BC3A+FR4 + WL 2,U2BC3A+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT_STAY,-8,73,73,46 ;mode,x,y,w,h + WL 2,U2BC3A+FR6 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + + WL ANI_SET_YVEL,38000h + WL 6,U2BC3A+FR7 +#no_hit + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,250,2,0,100,0 ;%chance, tbl index, x,y,z off + .ref impact_sound + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex + .word ANI_DEC_RPTCOUNT + + WL 2,U2BC3A+FR7 + WL 2,U2BC3A+FR8 + + WL ANI_IF_RPTCOUNT,#rpt + WL ANI_CHANGEANIM,und_2_butt_anim + +#ex +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,40000h,38000h,0h ;x,y,z vels + + WL 3,U2BC3A+FR7 + WL 3,U2BC3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WLLL ANI_SETOPPVELS,50000h,18000h,0h ;x,y,z vels +; WL 6,U2BC3A+FR7 +#missed + WL 2,U2BC3A+FR7 + WL 2,U2BC3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#* +* #4 HEADBUTT + + SUBR und_4_butts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,3 ;5 times + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 +#rpt + .word ANI_CLR_BUTCOUNT + + WL 2,U4BC3A+FR1 + .word ANI_STARTATTACK,AT_HDBUTT,8 + WL 1,U4BC3A+FR2 + WL 2,U4BC3A+FR3 + WL 1,U4BC3A+FR4 + WL 2,U4BC3A+FR5 + .word ANI_ATTACK_ON, AMODE_HDBUTT_STAY,-8,73,73,46 ;mode,x,y,w,h + WL 2,U4BC3A+FR6 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + + WL ANI_SET_YVEL,38000h + WL 6,U4BC3A+FR7 +#no_hit2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,250,2,0,100,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex + .word ANI_DEC_RPTCOUNT + + WL 2,U4BC3A+FR7 + WL 2,U4BC3A+FR8 + + WL ANI_IF_RPTCOUNT,#rpt + WL ANI_CHANGEANIM,und_4_butt_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#ex +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,40000h,38000h,0h ;x,y,z vels + + WL 3,U4BC3A+FR7 + WL 3,U4BC3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WLLL ANI_SETOPPVELS,50000h,18000h,0h ;x,y,z vels +; WL 6,U4BC3A+FR7 +#missed + WL 3,U4BC3A+FR7 + WL 3,U4BC3A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK - Against TB attacks + + SUBR und_kick_TB_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_STARTATTACK,AT_LEAPING,12 + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WL 2,U2KM3B+FR1 + WL ANI_SET_YVEL,70000h + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WL 3,U2KM3B+FR2 + WL 3,U2KM3B+FR3 + .word ANI_ATTACK_ON, AMODE_SPINKICK,27,59,68,20 ;mode,x,y,w,h + WL 10,U2KM3B+FR4 + .word ANI_ATTACK_OFF + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 3,U2KM3B+FR5 + WL 2,U2KM3B+FR6 + WL 3,U2KM3B+FR7 + WL 2,U2KM3B+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 KICK + + SUBR und_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2KM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2KM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2KM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KICK,5 + WL 2,U2KM3B+FR2 + WL 2,U2KM3B+FR3 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,30000h + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 6,U2KM3B+FR4 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 10,U2KM3B+FR4 + +#no_hit + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL 2,U2KM3B+FR5 + WL 2,U2KM3B+FR6 + WL 2,U2KM3B+FR7 + WL 2,U2KM3B+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 KICK + + SUBR und_4_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4KM3E+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4KM3E+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4KM3E+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KICK,5 + WL 2,U4KM3E+FR2 + WL 2,U4KM3E+FR3 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,30000h + .word ANI_ATTACK_ON, AMODE_KICK,27,59,68,20 ;mode,x,y,w,h + WL 6,U4KM3E+FR4 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 10,U4KM3E+FR4 + +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL 2,U4KM3E+FR5 + WL 2,U4KM3E+FR6 + WL 2,U4KM3E+FR8 + WL 2,U4KM3E+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* + + SUBR und_combo_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + + WL 2,U4KM3E+FR1 + WL 2,U4KM3E+FR2 + WL 2,U4KM3E+FR3 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,20000h + .word ANI_CLR_STATUS + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON, AMODE_KICK,27,39,68,30 ;mode,x,y,w,h + WL 2,U4KM3E+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed_4c + .WORD ANI_INC_COMBO + WLLL ANI_SETOPPVELS,8000H,28000h,0h ;x,y,z vels + WLW ANI_SET_XVEL,18000h,AM_FACE_REL + WL ANI_SET_YVEL,18000h + WL 2,U4KM3E+FR4 + WL 2,U4KM3E+FR5 + WL 2,U4KM3E+FR6 + WL 2,U4KM3E+FR8 + + .word ANI_SET_RPTCOUNT,4 ;5 times + .WORD ANI_CLEAR_COMBO +#kick_loop + .word ANI_CLR_BUTCOUNT + WL 1,U4KM3E+FR1 + WL 2,U4KM3E+FR2 + WL 1,U4KM3E+FR3 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,20000h + .word ANI_CLR_STATUS + .word ANI_ATTACK_ON, AMODE_KICK,27,39,68,30 ;mode,x,y,w,h + WL 2,U4KM3E+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed_4c + .WORD ANI_INC_COMBO +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,8000H,28000h,0h ;x,y,z vels + WLW ANI_SET_XVEL,18000h,AM_FACE_REL + WL ANI_SET_YVEL,18000h + WL 1,U4KM3E+FR4 + WL 2,U4KM3E+FR5 + WL 1,U4KM3E+FR6 + WL 2,U4KM3E+FR8 + .word ANI_ZEROVELS + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#kick_loop + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK2 + WL ANI_CHANGEANIM,und_combo_flying_kick_anim + +#NEXT_CHECK2 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHECK + WL ANI_CHANGEANIM,und_combo_snapmirror_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NEXT_CHECK3 + WL ANI_CHANGEANIM,und_combo_slap_anim + +#NEXT_CHECK3 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed_4c + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL 3,U4KM3E+FR5 + WL 3,U4KM3E+FR6 + WL 3,U4KM3E+FR8 + WL 3,U4KM3E+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 SUPER KICK + + SUBR und_2_super_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,15 + WL 3,U2KB3A+FR1 + .word ANI_OFFSET,5,0,0 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,80,40,90000h,TGT_CHEST,64,0,20 + WL ANI_SET_YVEL,48000h + WL 4,U2KB3A+FR2 + WL 4,U2KB3A+FR3 + WL 4,U2KB3A+FR4 + + .word ANI_ATTACK_ON, AMODE_SUPER_KICK,19,60,68,27 ;mode,x,y,w,h + WL 2,U2KB3A+FR5 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;Hit +;Turn on spirits + WL ANI_CODE,create_impact2 + WL ANI_CODE,DO_FLAME_HIT_SND + .word ANI_ZERO_XZVELS + WL ANI_CODE,CALL_OTHER_AVERAGE + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,-28000h,AM_ABS + WL 9,U2KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 5,U2KB3A+FR6 + WL 5,U2KB3A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#no_hit2 + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WLW ANI_SET_ZVEL,-28000h,AM_ABS + WL ANI_SET_YVEL,20000h + WL 2,U2KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,U2KB3A+FR5 + WL 5,U2KB3A+FR6 + WL 5,U2KB3A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL ANI_CODE,CALL_MISSES +#missed + WL 3,U2KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,U2KB3A+FR5 + WL 5,U2KB3A+FR6 + WL 5,U2KB3A+FR7 + + .word ANI_FACEDOWN +; .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#* #4 SUPER KICK + + SUBR und_4_super_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,15 + + WL 3,U4KB3A+FR2 + .word ANI_OFFSET,5,0,0 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,999,80,40,90000h,TGT_CHEST,64,0,-20 + WL ANI_SET_YVEL,48000h + WL 4,U4KB3A+FR3 + WL 4,U4KB3A+FR4 + WL 4,U4KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_SUPER_KICK,8,48,74,33 ;mode,x,y,w,h + WL 2,U4KB3A+FR7 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;Hit +;Turn on spirits + WL ANI_CODE,create_impact2 + WL ANI_CODE,DO_FLAME_HIT_SND + .word ANI_ZERO_XZVELS + WL ANI_CODE,CALL_OTHER_AVERAGE + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WLW ANI_SET_ZVEL,28000h,AM_ABS + WL 9,U4KB3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,U4KB3A+FR7 + + WL 5,U4KB3A+FR8 +; WL 4,U4KB3A+FR9 + + .word ANI_FACEUP + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#no_hit2 + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + WLW ANI_SET_ZVEL,28000h,AM_ABS + WL ANI_SET_YVEL,20000h + WL 2,U4KB3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,U4KB3A+FR7 + WL 5,U4KB3A+FR8 +; WL 4,U4KB3A+FR9 + + .word ANI_FACEUP + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL ANI_CODE,CALL_MISSES +#missed + WL 5,U4KB3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,U4KB3A+FR7 + WL 5,U4KB3A+FR8 +; WL 4,U4KB3A+FR9 + + .word ANI_FACEUP +; .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR und_combo_super_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SET_RPTCOUNT,3 ;5 times +#skick_loop + .word ANI_CLR_BUTCOUNT + + WL 2,U2KB3A+FR1 + .word ANI_OFFSET,5,0,0 + WL ANI_SET_YVEL,18000h + WL 2,U2KB3A+FR2 + WL 2,U2KB3A+FR3 + WL 2,U2KB3A+FR4 + + .word ANI_ATTACK_ON, AMODE_KICK,19,46,68,27 ;mode,x,y,w,h + WL 2,U2KB3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed2_ac + WL ANI_IFBLOCKED,#missed2_bc +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,18000H,28000h,48000h ;x,y,z vels + WLW ANI_SET_XVEL,18000h,AM_FACE_REL + .WORD ANI_INC_COMBO + +;Hit + WL ANI_CODE,create_impact2 + WL ANI_CODE,DO_FLAME_HIT_SND + + WL ANI_SET_YVEL,0A000h + WLW ANI_SET_ZVEL,-18000h,AM_ABS + WL 4,U2KB3A+FR5 + WLLL ANI_SETOPPVELS,0000H,000h,48000h ;x,y,z vels + .word ANI_ZEROVELS + + WL 2,U2KB3A+FR6 + WL 2,U2KB3A+FR7 + WLLL ANI_SETOPPVELS,0000H,000h,000h ;x,y,z vels + +;start of 4 hit + + WL 2,U4KB3A+FR2 + .word ANI_OFFSET,5,0,0 + WL ANI_SET_YVEL,18000h + WL 2,U4KB3A+FR3 + WL 2,U4KB3A+FR4 + WL 2,U4KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,8,48,74,33 ;mode,x,y,w,h + WL 2,U4KB3A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed4_ac + WL ANI_IFBLOCKED,#missed4_bc +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,18000H,28000h,-48000h ;x,y,z vels + WLW ANI_SET_XVEL,18000h,AM_FACE_REL + .WORD ANI_INC_COMBO + +;Hit +;Turn on spirits + WL ANI_CODE,create_impact2 + WL ANI_CODE,DO_FLAME_HIT_SND + + WL ANI_SET_YVEL,0A000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL 4,U4KB3A+FR7 + WLLL ANI_SETOPPVELS,0000H,000h,-48000h ;x,y,z vels + .word ANI_ZEROVELS + + WL 2,U4KB3A+FR8 + WL 2,U4KB3A+FR8 + WLLL ANI_SETOPPVELS,0000H,000h,0h ;x,y,z vels + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#skick_loop + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#DO_NEXT_CHECK + WL ANI_CHANGEANIM,und_combo_neckbreaker_anim + +#DO_NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#DO_NEXT_CHECK2 + WL ANI_CHANGEANIM,und_combo_sliding_choke_anim + +#DO_NEXT_CHECK2 + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed4_ac + WL ANI_CODE,CALL_MISSES +#missed4_bc + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + WL 5,U4KB3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 5,U4KB3A+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed2_ac + WL ANI_CODE,CALL_MISSES +#missed2_bc + .word ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + WL 3,U2KB3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 5,U2KB3A+FR6 + WL 5,U2KB3A+FR7 + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR und_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2MP2A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2MP2A+FR2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,9,-1,-40,28,31,50 + WL 1,U2MP2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat + + WL ANI_SET_YVEL,14000h + WL ANI_GOTO,#common +#leapat + .word ANI_TARGET,TGT_HEAD,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,160,140,40000h,TGT_USER,19,0,-30 + WL ANI_CODE,no_bk_xvel +#common + WL 3,U2MP2A+FR3 + WL 1,U2MP2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_STOMP,9,-1,-40,28,31,50 + WL 1,U2MP2A+FR5 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFNOTSTATUS,#missed + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL ANI_GOTO,#hit +#missed + WL ANI_CODE,CALL_MISSES +#hit + WL 3,U2MP2A+FR5 + WL 2,U2MP2A+FR6 + WL 3,U2MP2A+FR7 + WL 2,U2MP2A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + + + SUBR und_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4MP4A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4MP4A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4MP4A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4MP4A+FR2 + + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,-21,-11,-10,42,33,50 + WL 1,U4MP4A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat + + WL ANI_SET_YVEL,14000h + WL ANI_GOTO,#common +#leapat + .word ANI_TARGET,TGT_HEAD,TGT_GROIN,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,160,140,40000h,TGT_USER,-13,0,30 + WL ANI_CODE,no_bk_xvel +#common + WL 3,U4MP4A+FR3 +;Frame was not loaded...So I took it out... +; WL 1,U4MP4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-21,-11,-10,42,33,50 + WL 1,U4MP4A+FR5 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFNOTSTATUS,#missed + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL ANI_GOTO,#hit +#missed + WL ANI_CODE,CALL_MISSES +#hit + WL 3,U4MP4A+FR5 + WL 2,U4MP4A+FR6 + WL 3,U4MP4A+FR7 + WL 2,U4MP4A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#*****************************************************************************] +* +* #3 FLYING BUTT-DROP + +#yoff equ 50 + + SUBR und_combo_flying_butt_drop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + WL 4,U4JK4A+FR3 + .word ANI_OFFSET,0,#yoff,0 + + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,200,150,90,90000h,TGT_USER,0,0,-10 + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_CODE,no_bk_xvel + WL 4,U4JK4A+FR4 + WL 4,U4JK4A+FR5 + WL 4,U4JK4A+FR6 + WL 4,U4JK4A+FR7 + .word ANI_ATTACK_ON,AMODE_BUTTSTOMP,-25,-7+5,55,23 + WWL ANI_WAITHITOPP,18,U4JK4A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFNOTSTATUS,#misscx + + ;bounce is automatic... + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + + WL 4,U4JK4A+FR10 + WL 4,U4JK4A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SHADOWTRAIL,0 ;off + + .word ANI_XFLIP + .word ANI_FACEUP + WL ANI_CHANGEANIM,und_getup2_anim + +#misscx ;missed + WL ANI_CODE,CALL_MISSES + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + WL 12,U4JK4A+FR10 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_XFLIP + .word ANI_FACEUP + WL ANI_CHANGEANIM,und_getup2_anim + + + SUBR und_flying_butt_drop_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + WL 3,U4JK4A+FR3 + .word ANI_OFFSET,0,#yoff,0 + + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,200,150,90,90000h,TGT_USER,0,0,-10 + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL ANI_CODE,no_bk_xvel + WL 4,U4JK4A+FR4 + WL 4,U4JK4A+FR5 + WL 4,U4JK4A+FR6 + WL 4,U4JK4A+FR7 + .word ANI_ATTACK_ON,AMODE_BUTTSTOMP,-25,-7+5,55,23 + WWL ANI_WAITHITOPP,18,U4JK4A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,HIT_THE_MAT + + .WORD ANI_ADD_MOVE,MOVE_C_2,2,2 + + WL ANI_IFNOTSTATUS,#miss + +#hit + ;bounce is automatic... + + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + WL 4,U4JK4A+FR10 + WL 4,U4JK4A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SHADOWTRAIL,0 ;off + + .word ANI_XFLIP + .word ANI_FACEUP + WL ANI_CHANGEANIM,und_getup2_anim + +#miss ;missed + WL ANI_CODE,CALL_MISSES + + .word ANI_SHADOWTRAIL,0 ;off + WL 12,U4JK4A+FR10 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_XFLIP + .word ANI_FACEUP + WL ANI_CHANGEANIM,und_getup2_anim + +#*****************************************************************************] +* +* TURNBUCKLE BUTT-DROP + +#yoff equ 50 + + SUBR und_tbukl_butt_drop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING + .word ANI_SET_WRESTLER_XFLIP + .word ANI_SCROLL_CTRL,SC_RESTORE + + .word ANI_STARTATTACK,AT_LEAPING,35 + +; WL 3,U4JK4A+FR1 +; WL 3,U4JK4A+FR2 + WL 3,U4JK4A+FR3 + .word ANI_OFFSET,0,#yoff,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 36,190,190,190,90000h,TGT_GROIN,0,0,-20 + LEAPATOPP 36,220,220,220,90000h,TGT_CHEST,0,0,-20 + +; .word ANI_SETPLYRMODE,MODE_INAIR2 + WL ANI_CODE,set_tbukl_airmode + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + +;Check x vel to make sure we aren't going to land on ropes! + WL ANI_CODE,check_xvel + + WL 3,U4JK4A+FR4 + WL 3,U4JK4A+FR5 + WL 3,U4JK4A+FR6 + WL 3,U4JK4A+FR7 + WL ANI_CODE,set_tbukl_confine + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-36,0,-30,110,38,60 + WWL ANI_IFOPPMODE,MODE_DEAD,#opp_onground + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-36,28,-30,110,38,60 +#opp_onground + WWL ANI_WAITHITOPP,32,U4JK4A+FR8 + .word ANI_ATTACK_OFF + + .word ANI_ZERO_XZVELS + .word ANI_SETPLYRMODE,MODE_INAIR + + .word ANI_SHAKER,50 + .word ANI_SHAKEALL,2 + WL ANI_CODE,HIT_THE_MAT + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + WL ANI_IFNOTSTATUS,#miss + +#hit + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + .word ANI_WAITHITGND + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,28000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_INAIR + WL 4,U4JK4A+FR10 + WL 4,U4JK4A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_XFLIP + .word ANI_FACEUP + WL ANI_CHANGEANIM,und_getup2_anim + + +#miss ;missed + WL ANI_CODE,CALL_MISSES + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL 2,U4JK4A+FR10 + WL ANI_CHANGEANIM,und_hitonground_xflip_anim + + +#***************************************************************************** +* +* #4 BIG BOOT + + SUBR und_4_bigboot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_BIGBOOT,8 + WL 3,U4BG3A+FR2 + WL 3,U4BG3A+FR3 + WL ANI_CODE,#clrcnt + .word ANI_ATTACK_ON, AMODE_BIGBOOT,30,89,68,20 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,15,U4BG3A+FR4 +#lp + .word ANI_STARTATTACK,AT_BIGBOOT,5 + WL 2,U4BG3A+FR4 + WL ANI_CODE,#holdup + WL ANI_IFSTATUS,#lp + + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_DRAW_NAME,27 +#missed + WL 3,U4BG3A+FR5 + WL 3,U4BG3A+FR6 + WL 3,U4BG3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#clrcnt +;We are re-using BUT_COUNT in the player process + clr a0 + move a0,*a13(BUT_COUNT) + + rets + +#holdup + move *a13(BUT_COUNT),a0 + inc a0 + move a0,*a13(BUT_COUNT) + +;Max time to hold up in air (*2 ticks) + cmpi 25,a0 + jrgt #button_up + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_SKICK_BIT,a0 ;still down? + jrz #button_up + +;Still holding... + + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#button_up + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* #2 KNEE + + SUBR und_2_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KICK,6 + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U2NM3A+FR3 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 12h,999,20h,20,90000h,TGT_CHEST,20,50,0 + WL 3,U2NM3A+FR4 + .word ANI_ATTACK_ON, AMODE_KNEE,8,31,46,32 ;mode,x,y,w,h + WL 3,U2NM3A+FR5 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + WL 1,U2NM3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont +#no_hit +; WL ANI_IFNOTSTATUS,#nodrft +; WLW ANI_SET_ZVEL,10000h,AM_ABS +;#nodrft + WL 0ch,U2NM3A+FR5 +; .word ANI_ZERO_XZVELS +; WL 1,U2NM3A+FR5 +; .word ANI_WAITHITGND +#cont + WL 3,U2NM3A+FR6 + WL 3,U2NM3A+FR7 + WL 3,U2NM3A+FR8 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 KNEE + + SUBR und_4_knee2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KICK,6 + + WL 2,U4NM3A+FR2 + WL ANI_GOTO,#cont2a + + SUBR und_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KICK,6 + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,U4NM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim +#cont2a + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12h,999,20h,20,90000h,TGT_CHEST,20,50,0 + WL 3,U4NM3A+FR3 + .word ANI_ATTACK_ON, AMODE_KNEE,8,31,46,32 ;mode,x,y,w,h +#cont0 WL 3,U4NM3A+FR4 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,-10000h,AM_ABS + WL 1,U4NM3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#cont2 +#no_hit2 + WL ANI_IFNOTSTATUS,#nodrft2 + WLW ANI_SET_ZVEL,-10000h,AM_ABS +#nodrft2 + WL 0ch,U4NM3A+FR4 + .word ANI_ZERO_XZVELS + WL 1,U4NM3A+FR4 + .word ANI_WAITHITGND +#cont2 + WL 3,U4NM3A+FR5 + WL 3,U4NM3A+FR6 + WL 3,U4NM3A+FR7 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_knee_fall_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_KICK,6 + WL 3,U4NM3A+FR2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12h,999,20h,20,90000h,TGT_CHEST,20,50,0 + WL 3,U4NM3A+FR3 + .word ANI_ATTACK_ON, AMODE_BIGKNEE,8,31,46,32 ;mode,x,y,w,h + WL ANI_GOTO,#cont0 + + SUBR und_4_knee_butts_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_CLR_BUTCOUNT + .word ANI_SETWORD,USR_VAR2,0 + + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + .word ANI_OFFSET,0,0,-10 ;x,y,z + + WL 2,U4NM3A+FR2 + WL 2,U4NM3A+FR3 + .word ANI_ATTACK_ON, AMODE_HEADKNEES,8,31,46,32 ;mode,x,y,w,h + WL 2,U4NM3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + +; .word ANI_SET_ATTACH +;Needs to be enough to keep opponent up off of ground to keep him in +;mode headheld! + WLLL ANI_SETOPPVELS,0000H,50000h,0h ;x,y,z vels + + WL 3,U4NM3A+FR4 + WL 3,U4NM3A+FR5 + WL 3,U4NM3A+FR6 + WL 3,U4NM3A+FR7 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit2 + +;Now try consecutive head butts + +; .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_ZERO_XZVELS +#rpt + .word ANI_CLR_BUTCOUNT + WL 2,U4BC3A+FR1 + WL 1,U4BC3A+FR2 + WL 2,U4BC3A+FR3 + WL 1,U4BC3A+FR4 + WL 2,U4BC3A+FR5 + .word ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_HDBUTT2,-8,53,73,66 ;mode,x,y,w,h + WL 2,U4BC3A+FR6 + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + WL ANI_IFNOTSTATUS,#missed0 + .word ANI_DEBRISAT,250,1,10,50,0 ;%chance, tbl index, x,y,z off + WL 1,U4BC3A+FR7 + WL 2,U4BC3A+FR8 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + + WLLL ANI_SETOPPVELS,0000H,30000h,0h ;x,y,z vels + .word ANI_SETWORD,USR_VAR2,1 + +;Now, 1 last butt, check skick + .word ANI_CLR_BUTCOUNT + WL 2,U4BC3A+FR1 + WL 2,U4BC3A+FR2 + WL 2,U4BC3A+FR3 + WL 2,U4BC3A+FR4 + WL 2,U4BC3A+FR5 + .word ANI_SOUND,43H + .word ANI_ATTACK_ON, AMODE_HDBUTT2,-8,53,73,66 ;mode,x,y,w,h + WL 2,U4BC3A+FR6 + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + WL ANI_IFNOTSTATUS,#missed0 + WLLL ANI_SETOPPVELS,0000H,50000h,0h ;x,y,z vels + WL 2,U4BC3A+FR7 + WL 2,U4BC3A+FR8 + +;Try reading other buttons here... + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#next1 + WL ANI_CODE,#reduce_dmg + WL ANI_CHANGEANIM,und_flying_kick2_anim +#next1 + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#exit0 + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL +;Let him drift down a bit + .word ANI_PAUSE,9 + WL ANI_CODE,#reduce_dmg + .ref und_4_snapmirror_anim + WL ANI_CHANGEANIM,und_4_snapmirror_anim + +#exit0 + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed0 + .word ANI_DETACH + WL 2,U4BC3A+FR7 + WL 2,U4BC3A+FR8 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#exit +#missed + .word ANI_DETACH + + WL 3,U4NM3A+FR4 + WL 3,U4NM3A+FR5 + WL 3,U4NM3A+FR6 + WL 3,U4NM3A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#exit2 + .word ANI_DETACH ;From just a knee! + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#reduce_dmg +;Neck breaker may take awhile + .ref PCNT + SPCDMG D_PUNCH,40 + rets + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR und_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + WL 2,U1TT5A+FR2 + WL 2,U1TT5A+FR3 + WL ANI_GOTO,#cont + + SUBR und_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,8 + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,50,20,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + WL 5,U4GF3A+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET_NOFLAIL,19,68,80,16 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,U4GF3A+FR2 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,2,U4GF3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedb + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;got him + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_CODE,DO_GRUNT + .ref CALL_SETUP + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,U4GF3A+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,5,U4GF3A+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,U4GF3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,U4GF3A+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,U4GF3A+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,U4GF3A+FR8,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 10,U4GF3A+FR8 + .word ANI_OFFSET,-10,0,0 ;x,y,z + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + .ref fling_delay + WL ANI_CODE,fling_delay + WL ANI_IFNOTSTATUS,#missed + WL 25,U4GF3A+FR4 +#missed + WL ANI_CODE,CALL_MISSES + WL 3,U4GF3A+FR4 + WL 3,U4GF3A+FR3 + WL 3,U4GF3A+FR2 + WL 3,U4GF3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + .ref H4YR3A,H3RN3A + .ref R4YR3A,R3RN3D + .ref D4YR3B,D3RN3B + .ref Y4YR3A,Y3RN3C + .ref S4YR3A,S3RN3A + .ref B4YR3A,B3RN3A + .ref L4YR3B,L3RN3B + +#Bret + LWWW H4YR3A+FR1,61,-4,1 + LWWW H4YR3A+FR2,54,-1,1 + LWWW H4YR3A+FR3,63,2,1 + LWWW H4YR3A+FR5,49,-1,1 + LWWW H3RN3A+FR1,-6,-10,0 + LWWW H3RN3A+FR2,4,-7,0 +#Razor + LWWW R4YR3A+FR1,48,6,0 + LWWW R4YR3A+FR2,37,9,0 + LWWW R4YR3A+FR3,33,6,0 + LWWW R4YR3A+FR4,9,-1,0 + LWWW R3RN3D+FR10,0,1,0 + LWWW R3RN3D+FR11,7,4,0 +#Taker + LWWW U4YR3B+FR2,40,9,0 + LWWW U4YR3B+FR3,51,5,0 + LWWW U4YR3B+FR4,32,6,0 + LWWW U4YR3B+FR5,-3,4,0 + LWWW U3RN3A+FR1,-8,2,0 + LWWW U3RN3A+FR2,-42,0,0 +#Yokozuna + LWWW Y4YR3A+FR1,63,-3,1 + LWWW Y4YR3A+FR4,34,-1,1 + LWWW Y4YR3A+FR5,29,6,1 + LWWW Y4YR3A+FR7,19,1,1 + LWWW Y3RN3C+FR7,29,4,0 + LWWW Y3RN3C+FR8,4,-1,0 +#Shawn + LWWW S4YR3A+FR2,36,-7,1 + LWWW S4YR3A+FR3,45,-13,1 + LWWW S4YR3A+FR5,28,2,1 + LWWW S4YR3A+FR6,8,-5,1 + LWWW S3RN3A+FR2,-3,-4,0 + LWWW S3RN3A+FR3,0,0,0 +#BamBam + LWWW B4YR3A+FR3,43,1,0 + LWWW B4YR3A+FR4,50,-2,0 + LWWW B4YR3A+FR5,63,3,0 + LWWW B4YR3A+FR7,10,-9,0 + LWWW B3RN3A+FR1,10,0,0 + LWWW B3RN3A+FR2,0,5,0 +#Doink + LWWW D4YR3B+FR1,61,-2,1 + LWWW D4YR3B+FR2,50,3,1 + LWWW D4YR3B+FR3,53,6,1 + LWWW D4YR3B+FR4,36,1,1 + LWWW D3RN3B+FR3,6,-1,0 + LWWW D3RN3B+FR4,-2,0,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,77,3,1 + LWWW L4YR3B+FR2,58,-1,1 + LWWW L4YR3B+FR3,47,6,1 + LWWW L4YR3B+FR4,5,-3,1 + LWWW L3RN3B+FR2,-1,4,0 + LWWW L3RN3B+FR3,17,-1,0 + + +#strt_run_tbl + + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR und_2_head_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,U2AH3A+FR3 + WL 3,U2AH3A+FR4 + WL 2,U2AH3A+FR5 + WL 2,U2AH3A+FR6 + WL 2,U2AH3A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 HEAD HIT + + SUBR und_4_head_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WL 3,U4AH3A+FR2 + WL 3,U4AH3A+FR3 + WL 2,U4AH3A+FR4 + WL 2,U4AH3A+FR5 + WL 2,U4AH3A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#************ +* +* #2 HEAD HIT - From spin kick & backhand slap + + SUBR und_2_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,U2AH3A+FR3 + WL 3,U2AH3A+FR4 + WL 1,U2AH3A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,U2AH3A+FR6 + WL 2,U2AH3A+FR7 + +;Try auto push here! + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 HEAD HIT - From spin kick & backhand slap + + SUBR und_4_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,U4AH3A+FR2 + WL 3,U4AH3A+FR3 + WL 1,U4AH3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,U4AH3A+FR5 + WL 2,U4AH3A+FR6 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR und_4_head_hit4_anim + +;From earslap + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL ANI_SET_YVEL,40000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 4,U4AH3A+FR4 + WL 4,U4AH3A+FR5 + WL 4,U4AH3A+FR6 + .word ANI_WAITHITGND + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* HEAD HIT2 (HANDS ON FACE) + + SUBR und_head_hit2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL ANI_SET_YVEL,28000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,U3AE4A+FR1 + WL 8,U3AE4A+FR2 + WL 3,U3AE4A+FR3 + WL 2,U3AE4A+FR4 + WL 3,U3AE4A+FR5 + WL 2,U3AE4A+FR6 + WL 3,U3AE4A+FR7 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,und_fall_back_anim + .word ANI_END + +#nodead + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_head_hit2s_anim +;Salt hits me in face + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL ANI_CODE,create_impact_salt + + WL 4,U3AE4A+FR1 + WL 10,U3AE4A+FR2 + WL 4,U3AE4A+FR3 + WL 4,U3AE4A+FR4 + WL 4,U3AE4A+FR5 + .word ANI_WAITHITGND + .word ANI_FRICTION,4000h + WL 40,U3AE4A+FR5 + .word ANI_ZEROVELS + WL 3,U3AE4A+FR6 + WL 3,U3AE4A+FR7 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* HEAD HIT2 (ENDS IN DIZZY) + + SUBR und_head_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL ANI_SET_YVEL,38000h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETPLYRMODE,MODE_DIZZY + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 4,U3AE4A+FR1 + WL 10,U3AE4A+FR2 + WL 4,U3AE4A+FR3 + WL 4,U3AE4A+FR4 + WL 4,U3AE4A+FR5 + WL 4,U3AE4A+FR6 + WL 4,U3AE4A+FR7 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,und_dizzy_anim + .word ANI_END + + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR und_2_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + .word ANI_DEBRIS,100,0,6,72,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,ckzpos + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 1,U2AM2A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U2AM2A+FR3 + WL 2,U2AM2A+FR4 + WL 3,U2AM2A+FR5 + WL 2,U2AM2A+FR6 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 BODY HIT + + SUBR und_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + + WL ANI_CODE,ckzpos + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,U4AM4C+FR2 + WL 1,U4AM4C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,U4AM4C+FR4 + WL 3,U4AM4C+FR5 + WL 2,U4AM4C+FR6 + + .word ANI_CHECKWORD,USR_VAR1 + WL ANI_IFNOTSTATUS,#reg + +;120 + WL 10,U4TI4C+FR1 + WL 10,U4TI4C+FR3 + WL 10,U4TI4C+FR5 + WL 10,U4TI4C+FR7 + WL 10,U4TI4C+FR5 + WL 10,U4TI4C+FR3 + +#reg + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #2 BODY HIT BY KNEE + + SUBR und_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,04000h,AM_ABS + + WL ANI_CODE,ckzpos + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 1,U2AM2A+FR2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U2AM2A+FR3 + WL 2,U2AM2A+FR4 + WL 3,U2AM2A+FR5 + WL 2,U2AM2A+FR6 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 BODY HIT BY KNEE + + SUBR und_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-04000h,AM_ABS + + WL ANI_CODE,ckzpos + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,U4AM4C+FR2 + WL 1,U4AM4C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,U4AM4C+FR4 + WL 3,U4AM4C+FR5 + WL 2,U4AM4C+FR6 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,78000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL ANI_CODE,ckzpos + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,U4AM4C+FR2 + WL 1,U4AM4C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U4AM4C+FR4 + WL 3,U4AM4C+FR5 + WL 3,U4AM4C+FR6 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,und_dizzy_anim + .word ANI_END + + SUBR und_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,U4AM4C+FR2 + WL 3,U4AM4C+FR3 + WL 3,U4AM4C+FR4 + WL 3,U4AM4C+FR5 + WL 3,U4AM4C+FR6 + + .word ANI_FACEDOWN + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,und_fall_back_anim + .word ANI_END + +#nodead + + WL ANI_CHANGEANIM,und_3_head_held_anim + + .word ANI_END + +* #4 BODY HIT - While I was dizzy + + SUBR und_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,48000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL ANI_CODE,ckzpos + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,U4AM4C+FR2 + WL 1,U4AM4C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U4AM4C+FR4 + WL 3,U4AM4C+FR5 + WL 3,U4AM4C+FR6 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,und_dizzy_anim + .word ANI_END + + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR und_hitonground_xflip_anim + .word ANI_XFLIP + ;fall through + + SUBR und_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPITUP_SWEAT,SWEAT_PER,0 + WL 1,U3CP3B+FR2 + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,39000h + WL 3,U3CP3B+FR2 + WL 3,U3CP3B+FR3 + WL 3,U3CP3B+FR4 + WL 3,U3CP3B+FR5 + WL 3,U3CP3B+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 3,U3CP3B+FR7 + + SUBR und_liedown_anim + WL 1,U3CP3B+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + SUBR und_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .WORD ANI_XFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + + WL 10,U3FH3A+FR2 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + + WL 3,U3CP3B+FR7 + WL 1,U3CP3B+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** +* +* FALL BACK + + SUBR und_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZERO_XZVELS + WL ANI_MIN_YVEL,60000h + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + + .word ANI_SCROLL_CTRL,UND_TBUKLY + + WL ANI_CODE,ckzpos + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WWL ANI_SETLONG,DEBRIS_X,[104,2] ;Y,X of head + WL 3,U3FD3B+FR1 + WWL ANI_SETLONG,DEBRIS_X,[104,-24] ;Y,X of head + WL 3,U3FD3B+FR2 + + .word ANI_OFFSET,0,53,0 ;x,y,z + + WWL ANI_SETLONG,DEBRIS_X,[50,-20] ;Y,X of head + WL 3,U3FD3B+FR3 + WWL ANI_SETLONG,DEBRIS_X,[43,-26] ;Y,X of head + WL 3,U3FD3B+FR4 + WWL ANI_SETLONG,DEBRIS_X,[32,-41] ;Y,X of head + WL 2,U3FD3B+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,[8,-51] ;Y,X of head + WL 2,U3FD3B+FR6 + .word ANI_BOUNCE,4 + WWL ANI_SETLONG,DEBRIS_X,[9,-53] ;Y,X of head + WL 2,U3FD3B+FR7 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SOUND,bounce_l1 + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + .word ANI_XFLIP + WL 3,U3CP3B+FR1 ;1st frame of roll + +;Now, also check to see if this made him dizzy + +;Stay on ground for awhile... Maybe this will be table driven + WL 3,U3CP3B+FR1 ;1st frame of roll +;#done + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** +* +* FALL BACK + +;From clothesline + + SUBR und_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL ANI_CODE,ckzpos + + .word ANI_XFLIP + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 3,U3FD3X+FR1 + WL 3,U3FD3X+FR2 + + .word ANI_OFFSET,0,49,0 ;x,y,z + + WL 3,U3FD3X+FR3 + WL 3,U3FD3X+FR4 + WL 3,U3FD3X+FR5 + WL 3,U3FD3X+FR6 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-40000h,AM_FACE_REL + + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 3,U3GP3X+FR1 + WL 3,U3GP3X+FR2 + WL 3,U3GP3X+FR3 + WL 3,U3GP3X+FR4 + WL 3,U3GP3X+FR5 + WL 3,U3GP3X+FR6 + WL ANI_CODE,HIT_THE_MAT + + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + + .word ANI_XFLIP + .word ANI_OFFSET,-20,0,0 ;x,y,z + WL 4,U3CF3Q+FR1 + WL 4,U3CF3Q+FR2 + WL 4,U3CF3Q+FR3 + WL 4,U3CF3Q+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + WL 12,U3GD2A+FR1 + + WL 3,U3GD2A+FR1 + WL 3,U3GD2A+FR2 + WL 3,U3GD2A+FR3 + WL 3,U3GD2A+FR4 + + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + + WL 3,U3GD2A+FR5 + WL 3,U3GD2A+FR6 + WL 3,U3GD2A+FR7 + WL 2,U3GD2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,U3GD2A+FR8 + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,65,17 + WL 1,U3SU2B+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,und_4_push_anim +#no_freetoss + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#getup_in_4 + WL 3,U3GD4A+FR5 + WL 3,U3GD4A+FR6 + WL 3,U3GD4A+FR7 + WL 2,U3GD4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,U3GD4A+FR8 + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,65,17 + WL 1,U3SU4A+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,und_4_push_anim +#no_freetoss2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* FALL FROM TURNBUCKLE + + SUBR und_fall_back_tbukl_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL 3,U3FD3B+FR1 + WL 3,U3FD3B+FR2 + + .word ANI_OFFSET,0,53,0 ;x,y,z + + WL 3,U3FD3B+FR3 + WL 3,U3FD3B+FR4 + WL 2,U3FD3B+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_DAMAGE,D_HITCONCRETE + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,35 +; .word ANI_FRICTION,3000h + + WL 2,U3FD3B+FR6 +; .word ANI_BOUNCE,4 + WL 2,U3FD3B+FR7 +; .word ANI_WAITHITGND +; WL ANI_CODE,SMALL_BOUNCE +; .word ANI_SOUND,bounce_l1 +; .word ANI_ZEROVELS + + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 3,U3CP3B+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + +#***************************************************************************** +* + + SUBR und_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; .word ANI_CLR_STARS +; .word ANI_CLR_DAMAGE + + WL 3,U3SU3A+FR2 + WL 2,U3SU3A+FR3 + WL 3,U3SU3A+FR4 + WL 2,U3SU3A+FR5 + WL 3,U3SU3A+FR6 + +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + + WL 2,U3SU2B+FR1 + WL 3,U3SU2B+FR2 + WL 2,U3SU2B+FR3 + WL 3,U3SU2B+FR4 + WL 2,U3SU2B+FR5 + WL 3,U3SU2B+FR6 + WL 1,U3SU2B+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,U3SU2B+FR7 + WL 3,U3SU2B+FR8 + + .word ANI_SAFE_TIME,50 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 2,U3SU3A+FR7 + WL 3,U3SU3A+FR8 + WL 2,U3SU4A+FR1 + WL 3,U3SU4A+FR2 + WL 2,U3SU4A+FR3 + WL 3,U3SU4A+FR4 + WL 2,U3SU4A+FR5 + WL 3,U3SU4A+FR6 + WL 2,U3SU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,U3SU4A+FR7 + WL 3,U3SU4A+FR8 + + .word ANI_SAFE_TIME,50 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* + + SUBR und_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; .word ANI_CLR_STARS +; .word ANI_CLR_DAMAGE + + WL 3,U3SU3A+FR1 + WL 2,U3SU3A+FR2 + WL 3,U3SU3A+FR3 + WL 2,U3SU3A+FR4 + WL 3,U3SU3A+FR5 + WL 2,U3SU3A+FR6 + + WL ANI_GOTO,#common + +;getup from seated position + + SUBR und_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +; .word ANI_CLR_STARS +; .word ANI_CLR_DAMAGE + +#common + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + + WL 3,U3SU2B+FR1 + WL 2,U3SU2B+FR2 + WL 3,U3SU2B+FR3 + WL 2,U3SU2B+FR4 + WL 3,U3SU2B+FR5 + WL 2,U3SU2B+FR6 + WL 2,U3SU2B+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,U3SU2B+FR7 + WL 2,U3SU2B+FR8 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,65,17 + WL 1,U3SU2B+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,und_4_push_anim +#no_freetoss + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 3,U3SU3A+FR7 + WL 2,U3SU3A+FR8 + WL 3,U3SU4A+FR1 + WL 2,U3SU4A+FR2 + WL 3,U3SU4A+FR3 + WL 2,U3SU4A+FR4 + WL 3,U3SU4A+FR5 + WL 2,U3SU4A+FR6 + WL 2,U3SU4A+FR7 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,U3SU4A+FR7 + WL 2,U3SU4A+FR8 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,65,17 + WL 1,U3SU4A+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,und_4_push_anim +#no_freetoss2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* DIZZY + + SUBR und_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + + WL 10,U4TI4C+FR1 + WL 10,U4TI4C+FR3 + WL 10,U4TI4C+FR5 + WL 10,U4TI4C+FR7 + WL 10,U4TI4C+FR5 + WL 10,U4TI4C+FR3 + + WL ANI_GOTO,#loop + + +#***************************************************************************** +* +* #4 BLOCK + + SUBR und_4_block_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZERO_XZVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING + .word ANI_SET_WRESTLER_XFLIP +;Rotate toward opponent if needed! + + .word ANI_SETPLYRMODE,MODE_BLOCK +; WL ANI_CODE,block_if_safe + WL 2,U4BK3C+FR1 + WL 1,U4BK3C+FR2 +; .word ANI_SETPLYRMODE,MODE_BLOCK + WL 1,U4BK3C+FR2 +#blk4 WL 2,U4BK3C+FR3 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT|MODE_FRICTION +; .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETFACING + WL 2,U4BK3C+FR2 + WL 2,U4BK3C+FR1 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR und_4_hitblock_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,5000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL 2,U4BK3C+FR5 + WL 2,U4BK3C+FR6 + WL ANI_GOTO,#blk4 + + SUBR und_4_hitblock2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_FRICTION,4000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL ANI_SET_YVEL,38000h + WL 3,U4BK3C+FR5 + WL 3,U4BK3C+FR6 + WL 3,U4BK3C+FR5 + WL 3,U4BK3C+FR6 + WL 3,U4BK3C+FR5 + WL 3,U4BK3C+FR6 + WL ANI_GOTO,#blk4 + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR und_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL + WL 8,U3FH3A+FR3 + WL 8,U3FH3A+FR4 +#cont WL 1,U3FH3A+FR5 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_OFFSET,48,0,0 + + .word ANI_DAMAGE,D_HIPTOSS +; .word ANI_SETWORD,DELAY_METER,0 +; .word ANI_GETUP,500 + + WL ANI_CHANGEANIM,und_hitonground_anim + + SUBR und_flyout2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL + WL ANI_GOTO,#cont + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + +;Jamie, taker needs to be above fallen opponent. His hand should +;end up laying across opponents chest area. Not below it! + + SUBR und_4_pin2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 5,U3PN5A+FR1 + WL 5,U3PN5A+FR2 + WL 5,U3PN5A+FR3 + WL 5,U3PN5A+FR4 + WL 5,U3PN5A+FR5 + WL 5,U3PN5A+FR6 + WL 5,U3PN5A+FR7 + WL 5,U3PN5A+FR8 + + WL ANI_CODE,create_impact5 + WL ANI_CODE,DO_FLAME_HIT_SND + +;Do a ground hit on opponent + WL ANI_CODE,hit_nearest + WL ANI_CODE,grnd_hit + WLW ANI_ATTCHIMAGE,UARMPN+FR9,1 ;image, zoff (priority) + + WL ANI_CODE,DO_CROWD_CHEER + + .word ANI_SHAKEALL,2 + +; .word ANI_SET_ATTACH +; .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + + WL 25,U3PN5A+FR9 + .word ANI_DEBRIS,1000,7,0,8,0 ;%chance, tbl index, x,y,z off + WL 5,U3PN5A+FR9 + WL ANI_CODE,win_announce + WL 35,U3PN5A+FR9 + + .word ANI_LOOP + + WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + WL 3,U3PN5A+FR11 + WL 3,U3PN5A+FR12 + +#cont2 +;Place spirits around Undertaker as he stands up! + + WL 3,U5RV5A+FR1 + WL 3,U5RV5A+FR2 + WL 3,U5RV5A+FR3 + WL 3,U5RV5A+FR4 + WL 3,U5RV5A+FR5 + +;Put urn into his hand + WL ANI_CODE,CREATE_URN2 + +#floop WL 1000,U5RV5A+FR6 + WL ANI_GOTO,#floop + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** +* RAISE ARM IN VICTORY FROM A STANCE + + SUBR und_2_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + + WL 2,U1TT5A+FR2 + WL 2,U1TT5A+FR3 + WL 2,U1TT5A+FR4 + WL ANI_GOTO,#cont + + SUBR und_4_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + +;Place spirits around Undertaker as he stands up! + +#cont WL 4,U5RV5A+FR1 + WL 4,U5RV5A+FR2 + WL 4,U5RV5A+FR3 + WL 4,U5RV5A+FR4 + WL 4,U5RV5A+FR5 + + .word ANI_SET_RPTCOUNT,-4 ;set count to rnd from 0 to 4 +#lp0 WL 55,U5RV5A+FR6 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#lp0 + + WL ANI_CODE,check_raisearm_bit + WL ANI_IFSTATUS,#wakeup + + ;don't wake up. +#floop1 WL 1000,U5RV5A+FR6 + WL ANI_GOTO,#floop1 + + ;5,4,2,1 leaves the sequence. +#wakeup WL 4,U5RV5A+FR5 + WL 4,U5RV5A+FR4 + WL 4,U5RV5A+FR3 + WL 4,U5RV5A+FR2 + WL 4,U5RV5A+FR1 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACEDOWN + .word ANI_END + +#***************************************************************************** + + SUBR und_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*11/255 ;inv multiply (0-255 -> 0-11) + + .long U3CP3B+FR1 ;0 + .long U3CR3A+FR12 ;1 + .long U3CR3A+FR11 ;2 + .long U3CR3A+FR10 ;3 + .long U3CR3A+FR9 ;4 + .long U3CR3A+FR8 ;5 + .long U3CR3A+FR7 ;6 + .long U3CR3A+FR6 ;7 + .long U3CR3A+FR5 ;8 + .long U3CR3A+FR4 ;9 + .long U3CR3A+FR3 ;10 + .long U3CR3A+FR2 ;11 + .long 0,0,0,0,0,0 + + +#***************************************************************************** +* +* #3 FLYING KICK + + SUBR und_flying_kick2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,U3DC3A+FR1 + .word ANI_STARTATTACK,AT_LEAPING,22 + WL 2,U3DC3A+FR2 + +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 14,999,155,65,90000h,TGT_HEAD,30,0,0 + .word ANI_STARTATTACK,AT_LEAPING,14 + WL ANI_CODE,no_bk_xvel + + WL 3,U3DC3A+FR3 + WL 3,U3DC3A+FR4 + + .word ANI_OFFSET,0,38,0 ;x,y,z + WL 6,U3DC3A+FR5 + WL ANI_GOTO,#cont + + SUBR und_flying_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,U3DC3A+FR1 + .word ANI_STARTATTACK,AT_LEAPING,22 + WL 2,U3DC3A+FR2 + +; ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 18,999,155,65,90000h,TGT_HEAD,40,90,0 + WL ANI_CODE,no_bk_xvel + .word ANI_SETPLYRMODE,MODE_INAIR + + WL 3,U3DC3A+FR3 + WL 3,U3DC3A+FR4 + + .word ANI_OFFSET,0,38,0 ;x,y,z + WL 6,U3DC3A+FR5 +#cont + + .word ANI_ATTACK_ON, AMODE_FLYKICK,37,21,57,44 ;mode,x,y,w,h + WL 3,U3DC3A+FR6 + .word ANI_ATTACK_OFF + WL 4,U3DC3A+FR6 + WL 4,U3DC3A+FR7 + + .WORD ANI_ADD_MOVE,MOVE_C_1,2,2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL 4,U3DC3A+FR8 + + WL ANI_IFSTATUS,#got +;Missed him + WL ANI_CODE,CALL_MISSES + .word ANI_BOUNCE,3 + .word ANI_SOUND,bounce_l1 + WL 3,U3DC3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + WL 3,U3DC3A+FR8 + +#got + WL 3,U3DC3A+FR8 +#cont2 + WL 3,U3DC3A+FR8 + + .word ANI_XFLIP + .word ANI_OFFSET,5,0,0 ;x,y,z + + WL 3,U3GD2A+FR1 + WL 3,U3GD2A+FR2 + WL 3,U3GD2A+FR3 + WL 3,U3GD2A+FR4 + + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + + WL 3,U3GD2A+FR5 + WL 3,U3GD2A+FR6 + WL 3,U3GD2A+FR7 + WL 1,U3GD2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD2A+FR8 + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,65,17 + WL 1,U3GD2A+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,und_4_push_anim +#no_freetoss + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#getup_in_4 + WL 3,U3GD4A+FR5 + WL 3,U3GD4A+FR6 + WL 3,U3GD4A+FR7 + WL 1,U3GD4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD4A+FR8 + .word ANI_SAFE_TIME,50 + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,65,17 + WL 1,U3GD4A+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,und_4_push_anim +#no_freetoss2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR und_combo_flying_kick_anim + + .word ANI_SHADOWTRAIL,0 ;off + WLW ANI_SET_XVEL,8000h,AM_FACE_REL + WL 3,U3DC3A+FR2 + WL ANI_SET_YVEL,64000h + WL 3,U3DC3A+FR3 + WL 4,U3DC3A+FR4 + + .word ANI_OFFSET,0,38,0 ;x,y,z + WL 7,U3DC3A+FR5 + + .word ANI_CLR_STATUS + + .word ANI_ATTACK_ON, AMODE_FLYKICK,37,0,57,54 ;mode,x,y,w,h + WL 3,U3DC3A+FR6 + .word ANI_ATTACK_OFF + WL 4,U3DC3A+FR6 + WL 4,U3DC3A+FR7 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL 4,U3DC3A+FR8 + + WL ANI_IFNOTSTATUS,#missc + .WORD ANI_INC_COMBO + WL ANI_GOTO,#gotc +#missc + WL ANI_CODE,CALL_MISSES + .word ANI_BOUNCE,3 + .word ANI_SOUND,bounce_l1 + WL 3,U3DC3A+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL 3,U3DC3A+FR8 + +#gotc + WL 3,U3DC3A+FR8 + WL 3,U3DC3A+FR8 + + .word ANI_XFLIP + .word ANI_OFFSET,5,0,0 ;x,y,z + + WL 3,U3GD2A+FR1 + WL 3,U3GD2A+FR2 + WL 3,U3GD2A+FR3 + WL 3,U3GD2A+FR4 + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,choose_2or4 + WL ANI_IFSTATUS,#getup_in_4c + + WL 3,U3GD2A+FR5 + WL 3,U3GD2A+FR6 + WL 3,U3GD2A+FR7 + WL 1,U3GD2A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD2A+FR8 + .word ANI_SAFE_TIME,15 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss1 + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,65,17 + WL 1,U3GD2A+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss1 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,und_4_push_anim +#no_freetoss1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#getup_in_4c + WL 3,U3GD4A+FR5 + WL 3,U3GD4A+FR6 + WL 3,U3GD4A+FR7 + WL 1,U3GD4A+FR8 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 2,U3GD4A+FR8 + .word ANI_SAFE_TIME,15 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss3 + .word ANI_ATTACK_ON,AMODE_HITCHECK,33,85,65,17 + WL 1,U3GD4A+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss3 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,und_4_push_anim +#no_freetoss3 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR und_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_GETUP,STAY_TIME + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,U3CP3B+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR und_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,20,20,0 ;x,y,z + WL 4,U3FH3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,STAY_TIME + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,U3FH3A+FR4 + .word ANI_OFFSET,23h,0,0 ;x,y,z + WL 3,U3CP3B+FR1 + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,U3CP3B+FR1 ;1st frame of roll + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim +; .word ANI_END + +#***************************************************************************** +* + + SUBR und_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + + WL 2,U3GD2A+FR7 + WL 2,U3GD2A+FR5 + WL 2,U3GD2A+FR3 + WL ANI_SET_YVEL,39000h + + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + WL 4,U3CP3B+FR1 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + +#***************************************************************************** + SUBR und_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + WLW ANI_SET_XVEL,5800h,AM_FACE_REL + + .word ANI_OFFSET,16,0,0 + WL 3,U3CR3B+FR1 + .word ANI_BENDROPE,5 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR2 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR3 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR4 + + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR5 + + .word ANI_ZEROVELS + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR6 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,U3CR3B+FR7 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR8 + .word ANI_OFFSET,5,0,0 ;***** + WL 3,U3CR3B+FR9 + WL 2,U3CR3B+FR10 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,0,-3,0 + + ;now jump off... +; WL 2,U4JD4A+FR1 ;D4FM4A+FR1 + WL 3,U4JD4A+FR2 + WL 2,U4JD4A+FR3 +; WL 3,U4JD4A+FR4 + + .word ANI_SET_IDIOT + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 3,U4JD4A+FR4 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS +; WL 3,U4JD4A+FR5 + WL 2,U4JD4A+FR6 +; WL 2,U4JD4A+FR7 + WL 4,U4JD4A+FR8 + + .word ANI_FACEDOWN + + .word ANI_CLEAR_CLIMB + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR und_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in +; WL 3,U4JD4A+FR1 + WL 2,U4JD4A+FR2 + WL 3,U4JD4A+FR3 +; WL 2,U4JD4A+FR4 + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,14h,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + + WL 2,U4JD4A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WLW ANI_SET_XVEL,3000h,AM_FACE_REL + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + +; WL 3,U4JD4A+FR5 + WL 2,U4JD4A+FR6 +; WL 2,U4JD4A+FR7 + WL 3,U4JD4A+FR8 + + ;climb through + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR1 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR2 + .word ANI_BENDROPE,5 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR3 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR4 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR5 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR6 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR7 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR8 + .word ANI_OFFSET,7,0,0 ;***** + WL 2,U3CR3B+FR9 + .word ANI_ZEROVELS + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,7,-3,0 + WL 2,U3CR3B+FR10 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets + +#***************************************************************************** + SUBR und_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + + WL 4,U3GD2A+FR7 + WL 4,U3GD2A+FR6 + WL 4,U3GD2A+FR5 + WL 4,U3GD2A+FR4 + WL 4,U3GD2A+FR3 + WL 4,U3GD2A+FR2 + WL 4,U3GD2A+FR1 + + ;roll over once + WLW ANI_SET_ZVEL,0a8000h,AM_ABS + + WL 3,U3CR3A+FR6 ;0 + WL 3,U3CR3A+FR5 ;1 + WL 3,U3CR3A+FR4 ;2 + WL 3,U3CR3A+FR3 ;3 + WL 3,U3CR3A+FR2 ;4 + WL 3,U3CP3B+FR1 ;5 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + + .word ANI_SET_IDIOT + ;climb through + .word ANI_XFLIP + .word ANI_OFFSET,0,-16,0 ;x,y,z + WL 3,U3DC3A+FR5 + .word ANI_OFFSET,0,-32,0 + WL 3,U3DC3A+FR4 + WL 3,U3DC3A+FR3 + .word ANI_XFLIP + + .word ANI_FACEUP + .word ANI_CLEAR_CLIMB + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + + +#***************************************************************************** + + SUBR und_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .WORD ANI_XFLIP + WL 3,U3DC3A+FR3 + WL 3,U3DC3A+FR4 + .word ANI_OFFSET,0,32,0 + WL 3,U3DC3A+FR5 + .WORD ANI_XFLIP + .word ANI_OFFSET,0,24,-60 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,U3CP3B+FR1 ;0 + WL 3,U3CR3A+FR2 ;1 + WL 3,U3CR3A+FR3 ;2 + WL 3,U3CR3A+FR4 ;3 + WL 3,U3CR3A+FR5 ;4 + WL 3,U3CR3A+FR6 ;5 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** + + SUBR und_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,U1TT5A+FR2 + WL 3,U1TT5A+FR3 +#dir4 + WL 4,U3GD2A+FR7 + WL 4,U3GD2A+FR6 + WL 4,U3GD2A+FR5 + WL 4,U3GD2A+FR4 + WL 4,U3GD2A+FR3 + WL 4,U3GD2A+FR2 + WL 4,U3GD2A+FR1 + + ;roll over once + WL ANI_CODE,#set_zvel2 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,U3CR3A+FR8 ;2 + WL 3,U3CR3A+FR9 ;3 + WL 3,U3CR3A+FR10 ;4 + WL 3,U3CR3A+FR11 ;4 + WL 3,U3CR3A+FR12 ;4 + + .word ANI_SET_IDIOT + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,U4JP4C+FR3 + WL 3,U4JP4C+FR2 + WL 3,U4JP4C+FR1 + + .word ANI_ZERO_XZVELS + .word ANI_CLEAR_CLIMB + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -5c000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR und_rollthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;roll over once + WLW ANI_SET_ZVEL,-5C000h,AM_ABS + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,U3CR3A+FR8 + WL 3,U3CR3A+FR9 + WL 3,U3CR3A+FR10 + WL 3,U3CR3A+FR11 + WL 3,U3CR3A+FR12 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + WL 3,U4JP4C+FR3 + WL 3,U4JP4C+FR2 + WL 3,U4JP4C+FR1 + + .word ANI_ZERO_XZVELS + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#***************************************************************************** + + SUBR und_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + WL 3,U4JP4C+FR1 + WL 3,U4JP4C+FR2 + WL 3,U4JP4C+FR3 + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,U3CR3A+FR11 ;0 + WL 3,U3CR3A+FR10 ;1 + WL 3,U3CR3A+FR9 ;2 + WL 3,U3CR3A+FR8 ;3 + + .word ANI_ZEROVELS + + ;get up + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + WL ANI_CHANGEANIM,und_getup_anim + + +#set_zvel2 + movi 52000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + + +#***************************************************************************** +* +* GET BUCKED OFF A PINNED OPPONENT + + SUBR und_buckoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WLW ANI_ATTCHIMAGE,0,0 + + WL 4,U3PN5A+FR9 + WL 4,U3PN5A+FR11 + WL 4,U3PN5A+FR12 + + WLW ANI_SET_XVEL,-60000h,AM_FACE_REL + WLW ANI_SET_ZVEL,-18000h,AM_ABS + .word ANI_FRICTION,3000h + WL 4,U4LB4A+FR1 + WL 4,U4LB4A+FR2 + WL 4,U4LB4A+FR3 + WL 4,U4LB4A+FR4 + WL 4,U4LB4A+FR5 + WL 4,U4LB4A+FR6 + WL 4,U4LB4A+FR2 + WL 4,U4LB4A+FR3 + .word ANI_ZEROVELS + WL 4,U4LB4A+FR4 + WL 4,U4LB4A+FR5 + WL 4,U4LB4A+FR6 + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/UNDSEQ3.ASM b/UNDSEQ3.ASM new file mode 100755 index 0000000..ac9ad15 --- /dev/null +++ b/UNDSEQ3.ASM @@ -0,0 +1,3619 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/17/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "undseq3.asm" + .title "Undertaker animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "display.equ" + + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" + .include "miscimg.glo" + + .include "damage.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref MOVE_NAME_ANNC,am_I_dead,ckzpos,make_norm +; .ref CHAIR_SWING + .ref no_bk_xvel,punch_dtime1,set_my_pal,set_position,face_inside + .ref set_skeleton_pal,set_xdrift,start_smoke,UNDNEG_P + .ref CALL_NASTY_MOVE,CALL_OTHER_AVERAGE,CALL_THROWN_OUT + .ref DO_CHOKE,MAKE_HIM_SCREAM,CALL_ANI_AVERAGE_MOVE,CALL_SETUP + .ref CALL_SPECIAL_MOVE,HIT_THE_MAT,SMALL_BOUNCE,clear_opp_counts + .ref DO_COMBO_MESS,D4SK4A,und_getup_anim,CALL_MISSES,DO_NONO + .ref DO_OTHERNONO,FIND_AND_KILL_ENDLESS,slaveanim_tbl,make_white + .ref und_faceup_getup_anim,tgt_tbukl,tbukl_flip,DO_GRUNT + + .ref und_combo_flying_butt_drop_anim,und_flyout_anim + .ref und_combo_uppercut_anim,und_stand4_anim,und_tombbits + .ref und_fall_back_anim,und_tombbits2 + + .ref bam_3_head_held_anim,bam_3_head_held_brk_anim + .ref bam_break_face2_anim,bam_break_face_anim + .ref bam_break_neck2_anim,bam_flyout_anim + + .ref dnk_3_head_held_anim,dnk_3_head_held_brk_anim + .ref dnk_break_face2_anim,dnk_break_face_anim + .ref dnk_break_neck2_anim,dnk_flyout_anim + + .ref hrt_3_head_held_anim,hrt_3_head_held_brk_anim + .ref hrt_break_face2_anim,hrt_break_face_anim + .ref hrt_break_neck2_anim,hrt_flyout_anim + + .ref lex_3_head_held_anim,lex_3_head_held_brk_anim + .ref lex_break_face2_anim,lex_break_face_anim + .ref lex_break_neck2_anim,lex_flyout_anim + + .ref rzr_3_head_held_anim,rzr_3_head_held_brk_anim + .ref rzr_break_face2_anim,rzr_break_face_anim + .ref rzr_break_neck2_anim,rzr_flyout_anim + + .ref shn_3_head_held_anim,shn_3_head_held_brk_anim + .ref shn_break_face2_anim,shn_break_face_anim + .ref shn_break_neck2_anim,shn_flyout_anim + + .ref yok_3_head_held_anim,yok_3_head_held_brk_anim + .ref yok_break_face2_anim,yok_break_face_anim + .ref yok_break_neck2_anim,yok_flyout_anim + + .ref hrt_slamnobounce_anim,rzr_slamnobounce_anim + .ref und_slamnobounce_anim,yok_slamnobounce_anim + .ref shn_slamnobounce_anim,bam_slamnobounce_anim + .ref dnk_slamnobounce_anim,lex_slamnobounce_anim + + .ref hrt_slambounce_anim + .ref rzr_slambounce_anim + .ref und_slambounce_anim + .ref yok_slambounce_anim + .ref shn_slambounce_anim + .ref bam_slambounce_anim + .ref dnk_slambounce_anim + .ref lex_slambounce_anim + + .ref hrt_slambounce2_anim + .ref rzr_slambounce2_anim + .ref und_slambounce2_anim + .ref yok_slambounce2_anim + .ref shn_slambounce2_anim + .ref bam_slambounce2_anim + .ref dnk_slambounce2_anim + .ref lex_slambounce2_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR und_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_OTHERNONO + +#loop + WL 4,U4PM3C+FR1 + WL 4,U4PM3C+FR2 + WL 4,U4PM3C+FR3 + WL 4,U4PM3C+FR4 + WL 4,U4PM3C+FR5 + WL 4,U4PM3C+FR6 + WL 4,U4PM3C+FR7 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 5,U4PM3C+FR6 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,U3MS3Z+FR5 + WL 4,U3MS3Z+FR4 + WL 4,U3MS3Z+FR3 + WL 4,U3MS3Z+FR2 + WL 4,U3MS3Z+FR1 + WL 4,U4GH3C+FR10 + .word ANI_WAITHITGND + WL 4,U2ST2C+FR1 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* TOMBSTONE SMASH ATTACK + + SUBR und_tombstone_smash_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,4 ;repeat max 3 times + +#cont + .word ANI_SOUND,0D0H ;morph snd + + WL 1,U3TBSM+FR1 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR1,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR2,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR3,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR4,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 +; WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR5,1 ;image, zoff (priority) +; WL 1,U3TBSM+FR2 + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 +#rpt_loop + .word ANI_CLR_BUTCOUNT + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR6,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR3 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR7,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR4 + + .word ANI_STARTATTACK,AT_LEAPING,9 + + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,80,50,90000h,TGT_HEAD,80,102,-10 + WL ANI_CODE,no_bk_xvel + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR8,-1 ;image, zoff (priority) + WL 3,U3TBSM+FR5 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR9,-1 ;image, zoff (priority) + WL 3,U3TBSM+FR6 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR10,-1 ;image, zoff (priority) + WL 3,U3TBSM+FR7 + + .word ANI_ATTACK_ON, AMODE_TOMB,54,95,50,31 ;mode,x,y,w,h + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR11,-1 ;image, zoff (priority) + WL 3,U3TBSM+FR8 + + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed_nancy_boy + WL ANI_IFBLOCKED,#missed_nancy_boy + + .word ANI_SOUND,0D1H ;Hit snd +;got him + .word ANI_SHAKER,25 + + WLWWWW ANI_CREATEPROC,und_tombbits,00h,0,0,0 ;addr,ID,w1,w2,w3 + WL ANI_CODE,MAKE_HIM_SCREAM + WL ANI_CODE,CALL_NASTY_MOVE + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#last_hit + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#last_hit + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR15,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR11 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + WL 5,U3TBSM+FR11 + + WL ANI_GOTO,#rpt_loop + +#last_hit + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR15,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR11 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL 5,U3TBSM+FR11 + + .word ANI_OFFSET,0,0,15 ;x,y,z + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR5,1 ;image, zoff (priority) + WL 2,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR4,1 ;image, zoff (priority) + WL 2,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR3,1 ;image, zoff (priority) + WL 2,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR2,1 ;image, zoff (priority) + WL 2,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR1,1 ;image, zoff (priority) + WL 2,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,0,0 + WL 2,U3TBSM+FR1 + + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed_nancy_boy + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + WL ANI_CODE,CALL_MISSES + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR12,-1 ;image, zoff (priority) + WL 2,U3TBSM+FR9 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR16,-1 ;image, zoff (priority) + + ;we missed before - one last chance + .word ANI_ATTACK_ON, AMODE_TOMB,54,5,50,31 ;mode,x,y,w,h + WL 1,U3TBSM+FR9 + .word ANI_ATTACK_OFF + + .word ANI_SHAKER,25 + + WLWWWW ANI_CREATEPROC,und_tombbits2,00h,0,0,0 ;addr,ID,w1,w2,w3 + + WL 2,U3TBSM+FR9 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR17,-1 ;image, zoff (priority) + WL 10,U3TBSM+FR9 + + WLW ANI_ATTCHIMAGE,0,0 + WL 1,U3TBSM+FR9 + + WL 3,U3TBSM+FR10 + WL 3,U3TBSM+FR11 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gothim ;once + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR11,-1 ;image, zoff (priority) + WL 3,U3TBSM+FR6 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR12,-1 ;image, zoff (priority) + WL 15,U3TBSM+FR7 + WLW ANI_ATTCHIMAGE,0,0 + + WL 2,U3TBSM+FR8 + WL 2,U3TBSM+FR9 + WL 2,U3TBSM+FR10 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#TOMBSTONE + .long 0 ;0 + .long TOMBFORM01 ;1 + .long TOMBFORM02 ;2 + .long TOMBFORM03 ;3 + .long TOMBFORM04 ;4 + .long TOMBSTN01 ;5 + .long TOMBSTN02 ;6 + .long TOMBSTN03 ;7 + .long TOMBSTN04 ;8 + .long TOMBSTN05 ;9 + .long TOMBSTN06 ;10 + .long TOMBSTN07 ;11 + .long TOMBSTN08 ;12 + .long TOMBSTN09 ;13 + .long TOMBSTN010 ;14 + .long TOMBSTN011 ;15 + .long TOMBSTN012 ;16 + .long TOMBSTN013 ;17 + + + SUBR und_combo_tombstone_smash_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 2,U3TBSM+FR1 + WL 1,U3TBSM+FR2 + + .word ANI_SOUND,0D0H + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR1,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_SET_XVEL,0h,AM_FACE_REL + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR2,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR3,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR4,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR5,1 ;image, zoff (priority) + WL 1,U3TBSM+FR2 + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + + .word ANI_SET_RPTCOUNT,4 ;repeat max 3 times +#rpt_loop_c + .word ANI_CLR_BUTCOUNT + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR6,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR3 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR7,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR4 + + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR8,-1 ;image, zoff (priority) + WL 2,U3TBSM+FR5 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR9,-1 ;image, zoff (priority) + WL 2,U3TBSM+FR6 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR10,-1 ;image, zoff (priority) + WL 2,U3TBSM+FR7 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_TOMB,34,45,60,51 ;mode,x,y,w,h + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR11,-1 ;image, zoff (priority) + WL 2,U3TBSM+FR8 + + .word ANI_ATTACK_OFF + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed_combo + WL ANI_IFBLOCKED,#missed_combo +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,000H,000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO + +;got him + .word ANI_SOUND,0D1H + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#last_hit_c + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#last_hit_c + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR15,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR11 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + WL 3,U3TBSM+FR11 + + WL ANI_GOTO,#rpt_loop_c + +#last_hit_c + WLWWWW ANI_CREATEPROC,und_tombbits,00h,0,0,0 ;addr,ID,w1,w2,w3 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR15,-1 ;image, zoff (priority) + WL 1,U3TBSM+FR11 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL 6,U3TBSM+FR11 + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR5,1 ;image, zoff (priority) + WL 3,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR4,1 ;image, zoff (priority) + WL 3,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR3,1 ;image, zoff (priority) + WL 3,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR2,1 ;image, zoff (priority) + WL 3,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR1,1 ;image, zoff (priority) + WL 3,U3TBSM+FR2 + WLW ANI_ATTCHIMAGE,0,0 + WL 1,U3TBSM+FR2 + WL 3,U3TBSM+FR1 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + + WL ANI_IF_RPTCOUNT,#EXIT_TOO_SOON + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK + WL ANI_CHANGEANIM,und_combo_tombstone_anim + +#NEXT_CHECK + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#EXIT_TOO_SOON + WL ANI_CHANGEANIM,und_combo_uppercut_anim + +#EXIT_TOO_SOON + + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_END + +#missed_combo + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CODE,CALL_MISSES + + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR12,-1 ;image, zoff (priority) + WL 2,U3TBSM+FR9 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR16,-1 ;image, zoff (priority) + + WL 1,U3TBSM+FR9 + + WLWWWW ANI_CREATEPROC,und_tombbits2,00h,0,0,0 ;addr,ID,w1,w2,w3 + + WL 2,U3TBSM+FR9 + WLW ANI_ATTCHIMAGE,#TOMBSTONE+FR17,-1 ;image, zoff (priority) + WL 10,U3TBSM+FR9 + + WLW ANI_ATTCHIMAGE,0,0 + WL 20,U3TBSM+FR9 + + WL 4,U3TBSM+FR10 + WL 4,U3TBSM+FR11 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* SLIDING CHOKE ATTACK + + SUBR und_combo_sliding_choke_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLWW ANI_SHADOWTRAIL,UNDNEG_P,4,7 ;pal,rate,lifespan + .WORD ANI_SOUND,0D2H + + WL 4,U2LN2A+FR1 + + WL 1,U2LN2A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET,7,83,55,24 ;mode,x,y,w,h + + ;max ticks,velocity,max z,tgt,xoff,yoff,zoff + WWLWWWWW ANI_SLIDEATOPP,30,060000h,80,TGT_HEAD,69,99,0 + + WWL ANI_WAITHITOPP,30,U2LN2A+FR2 + + WL ANI_IFSTATUS,#gothimc + +;missed - punish him! + + WL ANI_CODE,CALL_MISSES + .word ANI_FRICTION,4000h + WWL ANI_WAITHITOPP,10,U2LN2A+FR2 + WL ANI_IFSTATUS,#gothimc ;2nd chance to hit + WWL ANI_WAITHITOPP,25,U2LN2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#gothimc ;2nd chance to hit + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 25,U2LN2A+FR2 + WL 4,U2LN2A+FR1 + .word ANI_FACE,MOVE_RIGHT|MOVE_UP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#gothimc + .word ANI_INC_COMBO +; WL ANI_CODE,CALL_SETUP + .word ANI_SETPLYRMODE,MODE_CHOKEHOLD + .word ANI_ATTACK_OFF + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + + .word ANI_SETOPPMODE,MODE_GHOST ;can go through ground +; .word ANI_OPP_GETUP,-140 ;(neg means always set) + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_FRICTION,4000h + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,18,U2LN2A+FR2,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,U2LN2A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,U2LN2A+FR4,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,U2LN2A+FR5,#puppet_tbl,3 + + WWLLW ANI_SUPERSLAVE2,1,U2LN2A+FR6,#puppet_tbl,4 + + .word ANI_SETOPPFACING + + WL ANI_SLAVEANIM,#chokeanim_tbl + + .word ANI_FACE,MOVE_UP|MOVE_RIGHT + .word ANI_SETMODE,MODE_NORMAL|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +;start slam + WL ANI_SET_YVEL,48000h + .word ANI_SET_RPTCOUNT,4 ;5 times + +#slam_loop + .word ANI_CLR_BUTCOUNT + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,slaveanim_tbl + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR1,puppet_tbls,0 + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR2,puppet_tbls,1 + WLW ANI_SET_ZVEL,-60000h,AM_ABS + WL ANI_SET_YVEL,20000h + .word ANI_OFFSET,0,10,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR3,puppet_tbls,2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR4,puppet_tbls,3 + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR5,puppet_tbls,4 + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR6,puppet_tbls,5 + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_ATTACHZ,0,0,50 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR7,puppet_tbls,6 + + WL ANI_XFLIP_TBL,xflip_tbls + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NO_MORE + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#NO_MORE + + WL ANI_SLAVEANIM,SLAM_HIM + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_INC_COMBO + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_DAMAGEOPP,D_NECKSLAM,RD_NECKSLAM + +; .WORD ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,0a0000h,0000h ;x,y,z vels + + WL 14,U2NS3X+FR7 + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + + WL 4,U2NS3X+FR8 + WL 4,U2NS3X+FR9 + WL 4,U2NS3X+FR10 + + WL ANI_GOTO,#slam_loop +#NO_MORE + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_SLAVEANIM,slambounce_tbls + WLLL ANI_SETOPPVELS,0,40000h,30000h ;x,y,z vels + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_NECKSLAM,RD_NECKSLAM + + WL 22,U2NS3X+FR7 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 4,U2NS3X+FR8 + WL 4,U2NS3X+FR9 + WL 4,U2NS3X+FR10 + + .word ANI_DETACH + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +SLAM_HIM + .long hrt_slamnobounce_anim ;bret + .long rzr_slamnobounce_anim ;razor + .long und_slamnobounce_anim ;taker + .long yok_slamnobounce_anim ;yoko + .long shn_slamnobounce_anim ;shawn + .long bam_slamnobounce_anim ;bam + .long dnk_slamnobounce_anim ;doink + .long und_slamnobounce_anim ;spare + .long lex_slamnobounce_anim ;lex + + + SUBR und_sliding_choke_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,U2LN2A+FR1 + + WLWW ANI_SHADOWTRAIL,UNDNEG_P,3,12 ;pal,rate,lifespan + .WORD ANI_SOUND,0D2H + + .word ANI_STARTATTACK,AT_PUPPET,32 + WL 5,U2LN2A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET,7,83,48,24 ;mode,x,y,w,h + + ;max ticks,velocity,max z,tgt,xoff,yoff,zoff + WWLWWWWW ANI_SLIDEATOPP,27,06a000h,80,TGT_HEAD,69,99,0 + WWL ANI_WAITHITOPP,27,U2LN2A+FR2 + .word ANI_STARTATTACK,AT_PUPPET,0 + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + WL ANI_IFSTATUS,#gothim + +;missed - punish him! + + WL ANI_CODE,CALL_MISSES + .word ANI_FRICTION,4000h + WWL ANI_WAITHITOPP,10,U2LN2A+FR2 + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + WL ANI_IFSTATUS,#gothim ;2nd chance to hit + .word ANI_SHADOWTRAIL,0 ;off + WWL ANI_WAITHITOPP,25,U2LN2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + WL ANI_IFSTATUS,#gothim ;2nd chance to hit + WL 20,U2LN2A+FR2 + WL 3,U2LN2A+FR1 + .word ANI_FACE,MOVE_RIGHT|MOVE_UP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_ATTACK_OFF + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_ZEROVELS + WL 30,U2LN2A+FR2 + WL 3,U2LN2A+FR1 + .word ANI_FACE,MOVE_RIGHT|MOVE_UP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_END + + +#gothim + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_CODE,CALL_SETUP + .word ANI_SETWORD,USR_VAR2,0 + + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,head_grab_time + +; .word ANI_SETPLYRMODE,MODE_CHOKEHOLD +; .word ANI_SETPLYRMODE,MODE_HEADHOLD + .word ANI_ATTACK_OFF + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + + .word ANI_SETOPPMODE,MODE_GHOST ;can go through ground + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_FRICTION,4000h + +; attacker sequence + WL ANI_CODE,#set + .word ANI_SETPLYRMODE,MODE_HEADHOLD + .word ANI_SETOPP_PLYRMODE,MODE_HEADHELD + + WWLLW ANI_SUPERSLAVE2,15,U2LN2A+FR2,#puppet_tbl,0 + .word ANI_SHADOWTRAIL,0 ;off + WWLLW ANI_SUPERSLAVE2,3,U2LN2A+FR3,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,U2LN2A+FR4,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,U2LN2A+FR5,#puppet_tbl,3 + + WWLLW ANI_SUPERSLAVE2,1,U2LN2A+FR6,#puppet_tbl,4 + + .word ANI_SETOPPFACING + +; .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#chokeanim_tbl + .word ANI_ZEROVELS + + .word ANI_FACE,MOVE_UP|MOVE_RIGHT + .word ANI_SETMODE,MODE_NORMAL|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED +; .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_END + +#set + move *a13(WHOIHIT),a14,L + movi 8*60,a0 + move a0,*a14(DELAY_METER) + rets + + +#chokeanim_tbl + .long hrt_choking_anim ;bret + .long rzr_choking_anim ;razor + .long und_choking_anim ;taker + .long yok_choking_anim ;yoko + .long shn_choking_anim ;shawn + .long bam_choking_anim ;bam + .long dnk_choking_anim ;doink + .long und_choking_anim ;spare + .long lex_choking_anim ;lex + + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4TN4X+FR1,74,-4,0 + LWWW H4TN4X+FR2,62,3,0 + LWWW H4TN4X+FR3,48,11,0 + LWWW H4TN4X+FR4,38,14,0 + LWWW H4TN4X+FR5,31,13,0 + .long 0 +#Razor + LWWW R3TN3X+FR1,62,-2,0 + LWWW R3TN3X+FR2,44,6,0 + LWWW R3TN3X+FR3,49,12,0 + LWWW R3TN3X+FR4,42,14,0 + LWWW R3TN3X+FR5,36,12,0 + .long 0 +#Taker + LWWW U3TN3B+FR2,33,6,0 + LWWW U3TN3B+FR3,35,10,0 + LWWW U3TN3B+FR4,57,16,0 + LWWW U3TN3B+FR5,49,19,0 + LWWW U3TN3B+FR6,45,18,0 + .long 0 +#Yokozuna + LWWW Y3TN3Z+FR1,44,-8,0 + LWWW Y3TN3Z+FR2,42,-1,0 + LWWW Y3TN3Z+FR3,43,10,0 + LWWW Y3TN3Z+FR4,45,15,0 + LWWW Y3TN3Z+FR5,41,15,0 + .long 0 +#Shawn + LWWW S3TN3X+FR1,64,-3,0 + LWWW S3TN3X+FR2,60,3,0 + LWWW S3TN3X+FR3,50,10,0 + LWWW S3TN3X+FR4,40,14,0 + LWWW S3TN3X+FR5,30,11,0 + .long 0 +#BamBam + LWWW B4TN4X+FR1,63,-4,0 + LWWW B4TN4X+FR2,49,4,0 + LWWW B4TN4X+FR3,46,9,0 + LWWW B4TN4X+FR4,40,13,0 + LWWW B4TN4X+FR5,34,13,0 + .long 0 +#Doink + LWWW D3TN3A+FR2,61,-8,0 + LWWW D3TN3A+FR3,54,0,0 + LWWW D3TN3A+FR4,39,8,0 + LWWW D3TN3A+FR5,30,13,0 + LWWW D3TN3A+FR6,32,11,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3TN3X+FR1,67,-4,0 + LWWW L3TN3X+FR2,64,2,0 + LWWW L3TN3X+FR3,57,10,0 + LWWW L3TN3X+FR4,45,13,0 + LWWW L3TN3X+FR5,38,12,0 + .long 0 + + +#* +hrt_choking_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY +; .word ANI_SETPLYRMODE,MODE_CHOKING + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_CHOKE +#loop + WL 4, H4TN4X+FR4 + WL 4, H4TN4X+FR3 + WL 3, H4TN4X+FR4 + WL 7,H4TN4X+FR5 + WL 4, H4TN4X+FR4 + WL 8,H4TN4X+FR3 + WL 3, H4TN4X+FR4 + WL 3, H4TN4X+FR5 + WL 7,H4TN4X+FR4 + WL 5,H4TN4X+FR5 + WL ANI_CODE,inc_loop + WL ANI_IFNOTSTATUS,#loop + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WL ANI_CHANGEANIM,hrt_3_head_held_brk_anim +#* +rzr_choking_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_CHOKE +#loop + WL 4, R3TN3X+FR4 + WL 4, R3TN3X+FR5 + WL 4, R3TN3X+FR4 + WL 7,R3TN3X+FR3 + WL 4, R3TN3X+FR4 + WL 6,R3TN3X+FR5 + WL 4, R3TN3X+FR4 + WL 5,R3TN3X+FR5 + WL 5,R3TN3X+FR4 + WL 5,R3TN3X+FR5 + WL ANI_CODE,inc_loop + WL ANI_IFNOTSTATUS,#loop + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WL ANI_CHANGEANIM,rzr_3_head_held_brk_anim +#* +und_choking_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_CHOKE +#loop + WL 4, U3TN3B+FR5 + WL 3, U3TN3B+FR3 + WL 7,U3TN3B+FR2 + WL 3, U3TN3B+FR3 + WL 4, U3TN3B+FR5 + WL 6,U3TN3B+FR6 + WL 3, U3TN3B+FR5 + WL 4, U3TN3B+FR3 + WL 4,U3TN3B+FR2 + WL 3, U3TN3B+FR3 + WL 4, U3TN3B+FR5 + WL 3,U3TN3B+FR6 + WL ANI_CODE,inc_loop + WL ANI_IFNOTSTATUS,#loop + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WL ANI_CHANGEANIM,und_3_head_held_brk_anim +#* +yok_choking_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_CHOKE +#loop + WL 5, Y3TN3Z+FR5 + WL 5, Y3TN3Z+FR4 + WL 5, Y3TN3Z+FR3 + WL 5, Y3TN3Z+FR2 + WL 8,Y3TN3Z+FR1 + WL 5, Y3TN3Z+FR2 + WL 5, Y3TN3Z+FR3 + WL 5, Y3TN3Z+FR4 + WL 5,Y3TN3Z+FR5 + + WL ANI_CODE,inc_loop + WL ANI_IFNOTSTATUS,#loop + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WL ANI_CHANGEANIM,yok_3_head_held_brk_anim +#* +shn_choking_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_CHOKE +#loop + WL 4, S3TN3X+FR4 + WL 4, S3TN3X+FR3 + WL 4, S3TN3X+FR2 + WL 4, S3TN3X+FR3 + WL 8,S3TN3X+FR4 + WL 4, S3TN3X+FR3 + WL 8,S3TN3X+FR2 + WL 4, S3TN3X+FR3 + WL 8,S3TN3X+FR4 + WL ANI_CODE,inc_loop + WL ANI_IFNOTSTATUS,#loop + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WL ANI_CHANGEANIM,shn_3_head_held_brk_anim +#* +bam_choking_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_CHOKE +#loop + WL 4, B4TN4X+FR4 + WL 4, B4TN4X+FR5 + WL 8, B4TN4X+FR4 + WL 8, B4TN4X+FR5 + WL 10,B4TN4X+FR4 + WL 14,B4TN4X+FR5 + WL ANI_CODE,inc_loop + WL ANI_IFNOTSTATUS,#loop + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WL ANI_CHANGEANIM,bam_3_head_held_brk_anim +#* +dnk_choking_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_CHOKE +#loop + WL 4, D3TN3A+FR2 + WL 4, D3TN3A+FR3 + WL 4, D3TN3A+FR4 + WL 4, D3TN3A+FR6 + + WL 4, D3TN3A+FR2 + WL 4, D3TN3A+FR3 + WL 4, D3TN3A+FR4 + WL 4, D3TN3A+FR6 + + WL 4, D3TN3A+FR2 + WL 4, D3TN3A+FR3 + WL 4, D3TN3A+FR4 + WL 4, D3TN3A+FR6 + + WL ANI_CODE,inc_loop + WL ANI_IFNOTSTATUS,#loop + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WL ANI_CHANGEANIM,dnk_3_head_held_brk_anim +#* +lex_choking_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_CHOKE +#loop + WL 4, L3TN3X+FR4 + WL 5, L3TN3X+FR3 + WL 5, L3TN3X+FR4 + WL 4, L3TN3X+FR5 + WL 4, L3TN3X+FR4 + WL 8,L3TN3X+FR3 + WL 6, L3TN3X+FR4 + WL 12,L3TN3X+FR5 + WL ANI_CODE,inc_loop + WL ANI_IFNOTSTATUS,#loop + WL ANI_CODE,FIND_AND_KILL_ENDLESS + WL ANI_CHANGEANIM,lex_3_head_held_brk_anim + +;Loop 4 times, then break out! +inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 2,a0 + jrgt #breakout +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* SLAM DOWN FROM CHOKE HOLD (U_NKSL) + + SUBR und_chokeslam_anim + + .ref BAMFRE_P + WLWW ANI_SHADOWTRAIL,BAMFRE_P,3,12 ;pal,rate,lifespan + WL ANI_SET_YVEL,0b8000h + + .word ANI_DRAW_NAME,29 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_SCROLL_CTRL,230 + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,slaveanim_tbl + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR1,puppet_tbls,0 + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR2,puppet_tbls,1 +; WLW ANI_SET_ZVEL,-60000h,AM_ABS + WLW ANI_SET_ZVEL,10000h,AM_ABS + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR3,puppet_tbls,2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR4,puppet_tbls,3 + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR5,puppet_tbls,4 + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR6,puppet_tbls,5 + + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_ATTACHZ,0,0,50 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,2,U2NS3X+FR7,puppet_tbls,6 + + WL ANI_XFLIP_TBL,xflip_tbls + WL ANI_SLAVEANIM,slambounce_tbls + WLLL ANI_SETOPPVELS,0,40000h,30000h ;x,y,z vels + + .word ANI_DAMAGEOPP,D_NECKSLAM,RD_NECKSLAM + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + + .word ANI_SHADOWTRAIL,0 ;off + + WL 22,U2NS3X+FR7 + WL 4,U2NS3X+FR8 + WL 4,U2NS3X+FR9 + WL 4,U2NS3X+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +xflip_tbls + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 1 ;lex + +slambounce_tbls + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + + + +puppet_tbls + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3UC3X+FR1,37,18,1 + LWWW H3UC3X+FR2,20,27,1 + LWWW H3UC3X+FR3,13,23,1 + LWWW H3UC3X+FR4,9,33,1 + LWWW H3UC3X+FR5,18,40,1 + LWWW H3UC3X+FR5,28,11,1 + LWWW H2CP3A+FR8,19,-57,0 + .long 0 +#Razor + LWWW R3FD3B+FR1,35,18,1 + LWWW R3FD3B+FR2,25,22,1 + LWWW R3FD3B+FR3,23,23,1 + LWWW R3FD3B+FR4,16,31,1 + LWWW R3FD3B+FR5,17,29,1 + LWWW R3FD3B+FR5,28,-4,1 + LWWW R3GU2A+FR1,30,-52,0 + .long 0 +#Taker + LWWW U3FD3X+FR1,30,16,0 + LWWW U3FD3X+FR2,24,18,0 + LWWW U3FD3X+FR3,15,16,0 + LWWW U3FD3X+FR4,-2,32,0 + LWWW U3FD3X+FR5,4,50,0 + LWWW U3FD3X+FR5,13,17,0 + LWWW U3CP3B+FR1,13,-48,0 + .long 0 +#Yokozuna + LWWW Y3BO3C+FR4,19,18,0 + LWWW Y3FD3A+FR2,18,38,1 + LWWW Y3FD3A+FR3,21,28,1 + LWWW Y3FD3A+FR4,18,35,1 + LWWW Y3FD3A+FR5,22,38,1 + LWWW Y3FD3A+FR5,36,12,1 + LWWW Y3FD3A+FR7,32,-31,1 + .long 0 +#Shawn + LWWW S4LB3A+FR7,34,21,1 + LWWW S3UC3X+FR2,11,25,1 + LWWW S3UC3X+FR3,19,17,1 + LWWW S3UC3X+FR4,15,19,1 + LWWW S3UC3X+FR5,16,32,1 + LWWW S3UC3X+FR6,32,21,1 + LWWW S3OS3X+FR10,32,-49,0 + .long 0 +#BamBam + LWWW B4UC3B+FR1,22,21,1 + LWWW B4UC3B+FR2,22,20,1 + LWWW B4UC3B+FR3,22,10,1 + LWWW B4UC3B+FR4,18,20,1 + LWWW B4UC3B+FR5,20,33,1 + LWWW B4UC3B+FR5,31,3,1 + LWWW B3RL1A+FR1,30,-47,0 + .long 0 +#Doink + LWWW D3UC3A+FR1,30,16,1 + LWWW D3UC3A+FR3,13,37,1 + LWWW D3UC3A+FR4,14,29,1 + LWWW D3UC3A+FR5,9,33,1 + LWWW D3UC3A+FR6,15,20,1 + LWWW D3UC3A+FR7,23,14,1 + LWWW D3SA3A+FR9,17,-53,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3TN3X+FR5,38,12,1 + LWWW L3UC3X+FR1,17,19,1 + LWWW L3UC3X+FR2,24,15,1 + LWWW L3UC3X+FR3,23,6,1 + LWWW L3UC3X+FR4,19,39,1 + LWWW L3UC3X+FR5,23,59,1 + LWWW L3UC3X+FR5,36,19,1 + LWWW L3CP3X+FR1,34,-51,1 + .long 0 + +#***************************************************************************** +* +* SLAM DOWN FROM CHOKE HOLD (U_NKSL) + + SUBR und_choke_face_slam_anim + + WL ANI_SET_YVEL,48000h + + .word ANI_DRAW_NAME,20 + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_SET_RPTCOUNT,4 ;3 times + .word ANI_CLR_BUTCOUNT + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,slaveanim_tbl + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR1,#puppet_tbl,0 + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR2,#puppet_tbl,1 + WLW ANI_SET_ZVEL,-60000h,AM_ABS + + WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR3,#puppet_tbl,2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR4,#puppet_tbl,3 + WLWW ANI_SHADOWTRAIL,UNDNEG_P,3,12 ;pal,rate,lifespan + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR6,#puppet_tbl,5 + + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_ATTACHZ,0,0,10 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,2,U2NS3X+FR7,#puppet_tbl,6 + +;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_FACESLAM1,RD_FACESLAM1 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,3,#norepeat + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#slam_again + WL ANI_GOTO,#norepeat + +#slam_again + .word ANI_CLR_BUTCOUNT + +;Slam him again using detach/reattach if button pressed again! + WL ANI_SLAVEANIM,#faced2_tbl + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 3,U2NS3X+FR7 +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,0a0000h,0h ;x,y,z vels + WL 1,U2NS3X+FR7 + WL 4,U2NS3X+FR8 + +; WL 6,U2NS3X+FR6 +; WL 6,U2NS3X+FR5 + + WL 6,U2NS3X+FR9 + WL 6,U2NS3X+FR10 + +; WL 10,U2NS3X+FR3 + +;Reattach me to who I'm slamming + WL ANI_CODE,#reattach + +; .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_ATTACHZ,0,0,10 ;put opp in front of attacker + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_ZEROVELS + +; WWLLW ANI_SUPERSLAVE2,4,U2NS3X+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,7,U2NS3X+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,U2NS3X+FR6,#puppet_tbl,5 + +; WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_ATTACHZ,0,0,50 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,2,U2NS3X+FR7,#puppet_tbl,6 + +;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_FACESLAM2,RD_FACESLAM2 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,3,#norepeat + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#slam_again + +#norepeat + WL ANI_CODE,CALL_SPECIAL_MOVE + + WL ANI_SLAVEANIM,#faced_tbl + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + +; WLW ANI_SET_ZVEL,-10000h,AM_ABS +; .word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + + WL 3,U2NS3X+FR7 +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,0,40000h,0h ;x,y,z vels + WL 10,U2NS3X+FR7 + WL 4,U2NS3X+FR8 + WL 4,U2NS3X+FR9 + WL 4,U2NS3X+FR10 + .word ANI_SHADOWTRAIL,0 ;off + + .word ANI_DETACH + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#reattach + move *a13(WHOIHIT),a0,L + move a0,*a13(ATTACH_PROC),L + move a13,*a0(ATTACH_PROC),L + rets + +#faced2_tbl + .long hrt_break_face2_anim,rzr_break_face2_anim + .long und_break_face2_anim + .long yok_break_face2_anim + .long shn_break_face2_anim,bam_break_face2_anim + .long dnk_break_face2_anim,0,lex_break_face2_anim + +#faced_tbl + .long hrt_break_face_anim,rzr_break_face_anim + .long und_break_face_anim + .long yok_break_face_anim + .long shn_break_face_anim,bam_break_face_anim + .long dnk_break_face_anim,0,lex_break_face_anim + + +;#xflip_tbls +; .word 0 ;bret +; .word 0 ;razor +; .word 0 ;taker +; .word 0 ;yoko +; .word 0 ;shawn +; .word 0 ;bam +; .word 0 ;doink +; .word 0 ;spare +; .word 1 ;lex + + + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3FR3A+FR1,13,13,0 + LWWW H3MS3Z+FR2,12,16,0 + LWWW H3MS3Z+FR3,21,2,0 + LWWW H3MS3Z+FR4,11,9,0 + LWWW H3MS3Z+FR5,16,9,0 + LWWW H3MS3Z+FR5,24,-29,0 + LWWW H3MS3Z+FR6,16,-21,0 + .long 0 +#Razor + LWWW R3MS3Z+FR1,19,12,0 + LWWW R3MS3Z+FR2,20,15,0 + LWWW R3MS3Z+FR3,21,-3,0 + LWWW R3MS3Z+FR4,17,6,0 + LWWW R3MS3Z+FR5,24,4,0 + LWWW R3MS3Z+FR5,33,-40,0 + LWWW R3MS3Z+FR6,34,-40,0 + .long 0 +#Taker + LWWW U4AM4C+FR2,5,19,0 + LWWW U3MS3Z+FR1,9,32,0 + LWWW U3MS3Z+FR2,-5,19,0 + LWWW U3MS3Z+FR3,-13,10,0 + LWWW U3MS3Z+FR4,-2,10,0 + LWWW U3MS3Z+FR5,10,-33,0 + LWWW U3MS3Z+FR6,6,-25,0 + .long 0 +#Yokozuna + LWWW Y3MS3Z+FR1,22,15,0 + LWWW Y3MS3Z+FR2,21,30,0 + LWWW Y3MS3Z+FR3,14,11,0 + LWWW Y3MS3Z+FR4,3,14,0 + LWWW Y3MS3Z+FR5,7,9,0 + LWWW Y3MS3Z+FR5,14,-31,0 + LWWW Y3MS3Z+FR6,13,-36,0 + .long 0 +#Shawn + LWWW S3MS3Z+FR1,1,10,0 + LWWW S3MS3Z+FR2,0,18,0 + LWWW S3MS3Z+FR3,2,6,0 + LWWW S3MS3Z+FR4,2,12,0 + LWWW S3MS3Z+FR5,11,10,0 + LWWW S3MS3Z+FR5,24,-34,0 + LWWW S3MS3Z+FR6,34,-53,0 + .long 0 +#BamBam + LWWW B3MS3Z+FR1,14,15,0 + LWWW B3MS3Z+FR2,20,12,0 + LWWW B3MS3Z+FR3,22,-5,0 + LWWW B3MS3Z+FR4,18,9,0 + LWWW B3MS3Z+FR5,27,27,0 + LWWW B3MS3Z+FR6,40,-1,0 + LWWW B3RL1A+FR7,36,-49,0 + .long 0 +#Doink + LWWW D3GS3X+FR1,19,12,0 + LWWW D3GS3X+FR3,11,16,0 + LWWW D3GS3X+FR4,12,4,0 + LWWW D3GS3X+FR5,8,0,0 + LWWW D3GS3X+FR7,14,5,0 + LWWW D3GS3X+FR7,26,-35,0 + LWWW D3GS3X+FR8,23,-53,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3MS3Z+FR1,19,11,0 + LWWW L3MS3Z+FR2,11,15,0 + LWWW L3MS3Z+FR3,7,1,0 + LWWW L3MS3Z+FR4,3,2,0 + LWWW L3MS3Z+FR5,7,4,0 + LWWW L3MS3Z+FR6,19,-33,0 + LWWW L3TF3X+FR1,11,-51,0 + .long 0 + + +#***************************************************************************** +* +* TOMBSTONE (FROM HEAD HOLD) (U_TOMB) + + SUBR und_combo_tombstone_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ATTACK_ON, AMODE_PUPPET,32,15,45,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,U3PG3A+FR7 + .word ANI_ATTACK_OFF + + .word ANI_CLR_BUTCOUNT + +;Check to see if I have tried to pile drive Yokozuna! + + .word ANI_SOUND,82h ;Effort grunt + +;FIX!! Yoko check +; WL ANI_CODE,is_this_yoko +; WL ANI_IFSTATUS,#yoko_miss + +;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WL ANI_SET_YVEL,28000h + + WL ANI_SLAVEANIM,slaveanim_tbl + + WWLLW ANI_SUPERSLAVE2,5,U3PG3A+FR7,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,5,U3PG3A+FR8,#puppet_tbl,1 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR1,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR2,#puppet_tbl,3 + WWL ANI_SETLONG,OBJ_GRAVITY,09800h + WL ANI_SET_YVEL,0a0000h +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR3,#puppet_tbl,4 + .word ANI_OFFSET,0,32,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR4,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,10,U3ZT3A+FR5,#puppet_tbl,6 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + +;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR7,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR8,#puppet_tbl,8 + + WL ANI_CODE,CALL_SPECIAL_MOVE + + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#breakneck_tbl + WLLL ANI_SETOPPVELS,30000h,60000h,0 ;x,y,z vels + + .word ANI_DETACH + + .word ANI_IMMOBILIZE,80 + + .WORD ANI_OPP_GETUP,-100 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 12,U3ZT3A+FR8 + + WL 6,U3GD2A+FR5 + WL 6,U3GD2A+FR6 + WL 6,U3GD4A+FR7 + WL 6,U3GD4A+FR8 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NO_BUTT_DROP + .WORD ANI_INC_COMBO + WL ANI_CHANGEANIM,und_combo_flying_butt_drop_anim + +#NO_BUTT_DROP + .WORD ANI_OPP_GETUP,10 + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_END + + SUBR und_pile_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SCROLL_CTRL,UND_TBUKLY + + .word ANI_ATTACK_ON, AMODE_PUPPET,32,15,65,61 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,U3PG3A+FR7 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;Check to see if I have tried to pile drive Yokozuna! + + .word ANI_SOUND,82h ;Effort grunt + +;FIX!! Yoko check +; WL ANI_CODE,is_this_yoko +; WL ANI_IFSTATUS,#yoko_miss + +;got him + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_ADD_MOVE,MOVE_C_6,2,2 + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL ANI_SET_YVEL,28000h + +; WWL ANI_SETLONG,OBJ_GRAVITY,0c000h +; WL ANI_SET_YVEL,080000h + + WL ANI_SLAVEANIM,slaveanim_tbl + + WWLLW ANI_SUPERSLAVE2,5,U3PG3A+FR7,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,5,U3PG3A+FR8,#puppet_tbl,1 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR1,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR2,#puppet_tbl,3 + WWL ANI_SETLONG,OBJ_GRAVITY,09800h + WL ANI_SET_YVEL,0a0000h +;Float toward the center of ring! + WL ANI_CODE,set_xdrift + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR3,#puppet_tbl,4 + .word ANI_OFFSET,0,32,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR4,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,10,U3ZT3A+FR5,#puppet_tbl,6 + +;do message + .word ANI_DRAW_NAME,40 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + +;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR7,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,U3ZT3A+FR8,#puppet_tbl,8 + + WL ANI_CODE,CALL_SPECIAL_MOVE + + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#breakneck_tbl + WLLL ANI_SETOPPVELS,30000h,60000h,0 ;x,y,z vels + + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 12,U3ZT3A+FR8 + + WL 6,U3GD2A+FR5 + WL 6,U3GD2A+FR6 + WL 6,U3GD4A+FR7 + WL 6,U3GD4A+FR8 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL 12,U3PG3A+FR7 + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#xflip_tbl + .word 1 ;bret + .word 1 ;razor + .word 1 ;taker + .word 1 ;yoko + .word 1 ;shawn + .word 1 ;bam + .word 1 ;doink + .word 1 ;spare + .word 1 ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H3PP3X+FR1,21,-42,0 + LWWW H3PP3X+FR2,16,10,0 + LWWW H3PP3X+FR3,8,29,0 + LWWW H3PP3X+FR4,12,28,0 + LWWW H3PP3X+FR5,32,47,0 + LWWW H3PP3X+FR6,36,49,0 + LWWW H3PP3X+FR6,41,49,0 + LWWW H3PP3X+FR7,51,14,0 + LWWW H3PP3X+FR8,71,-3,0 + .long 0 +#Razor + LWWW R3GP3Z+FR1,20,-41,0 + LWWW R3GP3Z+FR2,24,-19,0 + LWWW R3GP3Z+FR3,16,14,0 + LWWW R3GP3Z+FR4,31,30,0 + LWWW R3GP3Z+FR5,41,45,0 + LWWW R3GP3Z+FR6,49,47,0 + LWWW R3GP3Z+FR6,54,47,0 + LWWW R3GP3Z+FR7,51,32,0 + LWWW R3GP3Z+FR8,70,-6,0 + .long 0 +#Taker + LWWW U3PP3X+FR1,19,-37,1 + LWWW U3PP3X+FR2,25,-16,1 + LWWW U3PP3X+FR3,11,-14,1 + LWWW U3PP3X+FR4,12,-3,1 + LWWW U3PP3X+FR5,35,33,1 + LWWW U3PP3X+FR6,44,56,1 + LWWW U3PP3X+FR6,49,56,1 + LWWW U3GP3X+FR1,54,8,1 + LWWW U3GP3X+FR2,81,-12,1 + .long 0 +#Yokozuna + LWWW Y3PP3Q+FR1,17,-37,0 + LWWW Y3PP3Q+FR2,22,-21,0 + LWWW Y3PP3Q+FR3,20,-17,0 + LWWW Y3PP3Q+FR4,29,-14,0 + LWWW Y3PP3Q+FR6,33,11,0 + LWWW Y3PP3Q+FR7,39,18,0 + LWWW Y3PP3Q+FR7,44,18,0 + LWWW Y3FD3N+FR2,50,13,0 + LWWW Y3FD3N+FR3,72,16,0 + .long 0 +#Shawn + LWWW S3GP3X+FR1,25,-41,0 + LWWW S3GP3X+FR2,24,-18,0 + LWWW S3GP3X+FR3,20,-5,0 + LWWW S3GP3X+FR4,26,23,0 + LWWW S3GP3X+FR5,38,35,0 + LWWW S3OS3X+FR8,50,29,1 + LWWW S3OS3X+FR8,55,29,1 + LWWW S3FD3X+FR2,60,21,0 + LWWW S3GP3X+FR6,79,-3,0 + .long 0 +#BamBam + LWWW B3PP3Q+FR1,19,-44,0 + LWWW B3PP3Q+FR2,25,-12,0 + LWWW B3PP3Q+FR3,24,5,0 + LWWW B3PP3Q+FR4,31,21,0 + LWWW B3PP3Q+FR5,43,39,0 + LWWW B3PP3Q+FR6,41,47,0 + LWWW B3PP3Q+FR6,46,47,0 + LWWW B3PP3Q+FR7,54,22,0 + LWWW B3FD3C+FR1,69,2,0 + .long 0 +#Doink + LWWW D3PD3Z+FR1,20,-49,1 + LWWW D3PD3Z+FR2,25,-17,1 + LWWW D3PD3Z+FR3,18,2,1 + LWWW D3PD3Z+FR4,20,31,1 + LWWW D3PD3Z+FR5,32,44,1 + LWWW D3PD3Z+FR6,51,36,1 + LWWW D3PD3Z+FR6,56,36,1 + LWWW D3PD3Z+FR8,60,4,1 + LWWW D3PD3Z+FR9,85,-12,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GP3Z+FR1,17,-42,0 + LWWW L3GP3Z+FR2,26,-20,0 + LWWW L3GP3Z+FR3,22,-13,0 + LWWW L3GP3Z+FR4,24,3,0 + LWWW L3GP3Z+FR5,38,18,0 + LWWW L3GP3Z+FR6,47,34,0 + LWWW L3GP3Z+FR6,52,34,0 + LWWW L3FH3A+FR6,51,17,0 + LWWW L3FD3B+FR1,75,-4,0 + .long 0 + + +#breakneck_tbl + .long hrt_break_neck2_anim ;0 + .long rzr_break_neck2_anim ;1 + .long und_break_neck2_anim ;2 + .long yok_break_neck2_anim ;3 + .long shn_break_neck2_anim ;4 + .long bam_break_neck2_anim ;5 + .long dnk_break_neck2_anim ;6 + .long lex_break_neck2_anim ;7 + .long lex_break_neck2_anim ;8 + + +#***************************************************************************** +* +* NECKBREAKER + + SUBR und_combo_neckbreaker_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLWW ANI_SHADOWTRAIL,UNDNEG_P,4,7 ;pal,rate,lifespan + +;Do this to setup attach_proc +;Also allow misses! + + .word ANI_OFFSET,15,0,0 ;x,y,z + .word ANI_ATTACK_ON, AMODE_PUPPET,32,15,45,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,U3DD3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedcx + WL ANI_IFBLOCKED,#missedcx + +;Check to see if I have tried to pile drive Yokozuna! + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST ;can go through ground + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_ADD_MOVE,MOVE_C_7,2,2 + + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + + WL ANI_SLAVEANIM,slaveanim_tbl + + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR5,#puppet_tbl,4 + + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,80000h + + WWLLW ANI_SUPERSLAVE2,6,U3DD3A+FR6,#puppet_tbl,5 + .word ANI_OFFSET,-5,45,0 ;x,y,z + + WWLLW ANI_SUPERSLAVE2,1,U3DD3A+FR7,#puppet_tbl,6 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + +;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_NECKBRKR,RD_NECKBRKR +; WL ANI_CODE,CALL_SPECIAL_MOVE + + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR9,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR10,#puppet_tbl,8 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,0,60000h,0 ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + + WL 8,U3SU3A+FR2 + WL ANI_CODE,#zero_butn + + .word ANI_SHADOWTRAIL,0 ;off + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CHANGEANIM,und_faceup_getup_anim + +#missedcx + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CODE,#zero_butn + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + + SUBR und_neckbreaker2_anim +;Button charge +;Standing no vel + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,5 + WL 2,U4GH3C+FR11 + .word ANI_ATTACK_ON, AMODE_PUPPET,0,20,50,36 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,22,U4GH3C+FR11 + WL 4,U4GH3C+FR11 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + + .word ANI_OFFSET,15,0,0 ;x,y,z + WL ANI_GOTO,#gothim + + SUBR und_neckbreaker3_anim +;Button charge released while running +;Sliding neck breaker + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLWW ANI_SHADOWTRAIL,UNDNEG_P,3,12 ;pal,rate,lifespan + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,70,70,40,90000h,TGT_CHEST,40,0,0 + WL ANI_CODE,no_bk_xvel + WL ANI_SET_YVEL,0000h + + .word ANI_STARTATTACK,AT_PUPPET,5 + + WL 2,U4GH3C+FR11 + .word ANI_ATTACK_ON, AMODE_PUPPET,0,15,50,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,12,U4GH3C+FR11 + .word ANI_ZERO_XZVELS + WL 4,U4GH3C+FR11 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + + .word ANI_OFFSET,15,0,0 ;x,y,z + WL ANI_GOTO,#gothim + + SUBR und_neckbreaker_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + +;Do this to setup attach_proc +;Also allow misses! + + .word ANI_OFFSET,15,0,0 ;x,y,z + .word ANI_ATTACK_ON, AMODE_PUPPET,32,15,45,41 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,U3DD3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missed + +;Check to see if I have tried to pile drive Yokozuna! +#gothim + .ref MAKE_HIM_SCREAM + WL ANI_CODE,MAKE_HIM_SCREAM + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST ;can go through ground + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_ADD_MOVE,MOVE_C_7,2,2 + + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + + WL ANI_SLAVEANIM,slaveanim_tbl + + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR5,#puppet_tbl,4 + + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,80000h + +;do message + + WWLLW ANI_SUPERSLAVE2,6,U3DD3A+FR6,#puppet_tbl,5 + .word ANI_OFFSET,-5,45,0 ;x,y,z + + WWLLW ANI_SUPERSLAVE2,1,U3DD3A+FR7,#puppet_tbl,6 + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + +;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,40 + .word ANI_DAMAGEOPP,D_NECKBRKR,RD_NECKBRKR + WL ANI_CODE,CALL_SPECIAL_MOVE + + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR9,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,4,U3DD3A+FR10,#puppet_tbl,8 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,0,60000h,0 ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + WL 8,U3SU3A+FR2 + WL ANI_CODE,#zero_butn + .word ANI_SHADOWTRAIL,0 ;off + WL ANI_CHANGEANIM,und_faceup_getup_anim + +#missedb + .word ANI_SHADOWTRAIL,0 ;off + WL 15,U4GH3C+FR11 +; WL 15,U3DD3A+FR1 +#missed + .word ANI_SHADOWTRAIL,0 ;off + WL 15,U4GH3C+FR11 +; WL 15,U3DD3A+FR1 + WL ANI_CODE,#zero_butn + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#zero_butn +;Force player to start holding his button down starting at the end +;of the current buzz sequence. + + move *a13(PLYRNUM),a0 + X16 a0 + addi punch_dtime1,a0 + clr a14 + move a14,*a0 + rets + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 1 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 1 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce2_anim ;bret + .long rzr_slambounce2_anim ;razor + .long und_slambounce2_anim ;taker + .long yok_slambounce2_anim ;yoko + .long shn_slambounce2_anim ;shawn + .long bam_slambounce2_anim ;bam + .long dnk_slambounce2_anim ;doink + .long und_slambounce2_anim ;spare + .long lex_slambounce2_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3DD3B+FR1,30,-37,1 + LWWW H3DD3B+FR2,40,-34,1 + LWWW H3DD3B+FR3,44,-21,1 + LWWW H3DD3B+FR4,51,-11,1 + LWWW H3UC3X+FR2,32,7,1 + LWWW H3UC3X+FR3,53,14,1 + LWWW H3UC3X+FR4,75,17,1 + LWWW H2CP3A+FR1,89,-12,0 + LWWW H3UC3Z+FR10,74,-2,1 + .long 0 +#Razor + LWWW R3DD3C+FR1,31,-36,1 + LWWW R3DD3C+FR2,37,-25,1 + LWWW R3DD3C+FR3,52,-13,1 + LWWW R3DD3C+FR6,60,-6,1 + LWWW R3DD3C+FR7,37,-7,1 + LWWW R3FD3B+FR4,62,21,1 + LWWW R3FD3B+FR5,77,29,1 + LWWW R3AM3D+FR2,90,-14,0 + LWWW R3AM3X+FR1,87,-16,1 + .long 0 +#Taker + LWWW U3DD3B+FR1,35,-35,1 + LWWW U3DD3B+FR2,37,-15,1 + LWWW U3DD3B+FR3,37,-9,1 + LWWW U3DD3B+FR4,46,-8,1 + LWWW U3DD3B+FR6,38,-4,1 + LWWW U3DD3B+FR7,61,3,1 + LWWW U3FD3X+FR4,60,18,0 + LWWW U3CP3B+FR3,77,0,0 + LWWW U3DD3X+FR9,79,-6,1 + .long 0 +#Yokozuna + LWWW Y4AM4A+FR4,44,-33,0 + LWWW Y4AM4A+FR3,43,-27,0 + LWWW Y3FD3B+FR2,44,-16,1 + LWWW Y3FD3B+FR3,47,-8,1 + LWWW Y3FD3B+FR4,39,15,1 + LWWW Y3FD3B+FR5,69,33,1 + LWWW Y3FD3A+FR4,78,34,1 + LWWW Y3CP3B+FR1,79,-12,0 + LWWW Y3FD3Z+FR7,80,5,1 + .long 0 +#Shawn + LWWW S3DD3B+FR1,35,-35,1 + LWWW S3DD3B+FR2,37,-23,1 + LWWW S3DD3B+FR3,39,-15,1 + LWWW S3DD3B+FR5,52,-10,1 + LWWW S3UC3X+FR2,32,4,1 + LWWW S3UC3X+FR4,66,9,1 + LWWW S3UC3X+FR5,84,28,1 + LWWW S3CP3B+FR2,87,-11,0 + LWWW S3UC3Z+FR8,90,0,1 + .long 0 +#BamBam + LWWW B3DD3D+FR1,41,-38,1 + LWWW B3DD3D+FR2,42,-23,1 + LWWW B3DD3D+FR3,44,0,1 + LWWW B3DD3D+FR4,51,17,1 + LWWW B3DD3D+FR5,41,31,1 + LWWW B3DD3D+FR6,67,39,1 + LWWW B4UC3B+FR3,82,12,1 + LWWW B3CP3B+FR2,90,19,0 + LWWW B4UC3Z+FR8,88,0,1 + .long 0 +#Doink + LWWW D3DD3C+FR1,38,-37,1 + LWWW D3DD3C+FR2,40,-26,1 + LWWW D3DD3C+FR3,37,1,1 + LWWW D3DD3C+FR4,42,15,1 + LWWW D3DD3C+FR5,31,23,1 + LWWW D3UC3A+FR3,56,21,1 + LWWW D3UC3A+FR5,75,21,1 + LWWW D3SA3A+FR4,78,-16,0 + LWWW D3SA3X+FR2,84,-18,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3DD3A+FR1,29,-40,1 + LWWW L3DD3A+FR2,31,-22,1 + LWWW L3DD3A+FR3,29,-21,1 + LWWW L3UC3X+FR2,49,-16,1 + LWWW L3UC3X+FR3,34,-9,1 + LWWW L3CP3X+FR2,64,-1,0 + LWWW L3CP3X+FR3,87,14,0 + LWWW L3CP3X+FR6,82,16,0 + LWWW L3UC3Z+FR10,74,1,1 + .long 0 + + +#***************************************************************************** +* +* SNAP MIRROR (whatever) + + SUBR und_2_snapmirror2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 1,U1TT5A+FR3 + WL 1,U1TT5A+FR4 + + SUBR und_4_snapmirror2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,60,60,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,U4FG3A+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET,13,26,64,58 ;mode,x,y,w,h + WL 2,U4FG3A+FR2 + WWL ANI_WAITHITOPP,5,U4FG3A+FR3 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_GOTO,#cont + + + + SUBR und_combo_snapmirror_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_STARTATTACK,AT_PUPPET,8 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,U4FG3A+FR1 + WL 2,U4FG3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET,12,59,73,59 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,3,U4FG3A+FR3 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,3,U4FG3A+FR3 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + WL ANI_IFNOTSTATUS,#missedcx + WL ANI_IFBLOCKED,#missedbcx + +;got him +; WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,DO_GRUNT + + .word ANI_OFFSET,0,0,-2 ;x,y,z + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WL ANI_CODE,SMALL_BOUNCE + WWLLW ANI_SUPERSLAVE2,10,U4FT3A+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,6,U4FT3A+FR4,#puppet_tbl,1 + WWWL ANI_IFROPE,RC_FRONT,XTOSSDIST_CLOSE,#throw_him_out + + WWLLW ANI_SUPERSLAVE2,4,U4FT3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U4FT3A+FR6,#puppet_tbl,3 + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,4,U4FT3A+FR7,#puppet_tbl,4 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_OPP_GETUP,300 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + .word ANI_CLROPPMODE,MODE_GHOST + WLLL ANI_SETOPPVELS,30000h,40000h,0 ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + + WL 5,U4FT3A+FR8 + .word ANI_XFLIP + WL 5,U4FT3A+FR9 + WL 5,U4FT3A+FR10 + WL 5,U4FT3A+FR11 + + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedbcx +#missedcx + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_CODE,CALL_MISSES + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SHADOWTRAIL,0 ;off + + WL 16,U4FG3A+FR3 + WL 4,U4FG3A+FR2 + WL 4,U4FG3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_outcx + WL ANI_CODE,CALL_THROWN_OUT + WLLL ANI_ATTACHVEL,0A0000h,90000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,release_table + + .word ANI_DETACH + WL 4,U4FT3A+FR5 + WL 50,U4FT3A+FR6 + WL 4,U4FT3A+FR7 + + .WORD ANI_INC_COMBO + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO +; WL ANI_CODE,HIT_THE_MAT +; .word ANI_SHAKEALL,2 +; .word ANI_SHAKER,35 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WL 5,U4FT3A+FR8 + .word ANI_XFLIP + WL 5,U4FT3A+FR9 + WL 5,U4FT3A+FR10 + WL 5,U4FT3A+FR11 + + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Hiptoss + + SUBR und_2_snapmirror_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + +; WL 2,U1TT5A+FR3 +; WL 2,U1TT5A+FR4 + + SUBR und_4_snapmirror_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,40,40,40,90000h,TGT_CHEST,40,0,0 + WL ANI_SET_YVEL,0000h + + WL 2,U4FG3A+FR1 + WL 2,U4FG3A+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET_TOSS,12,59,73,59 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,U4FG3A+FR3 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL 4,U4FG3A+FR3 +#cont + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#got_him + .WORD ANI_ADD_MOVE,MOVE_C_8,2,2 + .word ANI_DRAW_NAME,3 + + WL ANI_CODE,CALL_OTHER_AVERAGE + WL ANI_CODE,DO_GRUNT + + .word ANI_OFFSET,0,0,-2 ;x,y,z + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WL ANI_CODE,SMALL_BOUNCE + WWLLW ANI_SUPERSLAVE2,8,U4FT3A+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,5,U4FT3A+FR4,#puppet_tbl,1 + WWWL ANI_IFROPE,RC_FRONT,XTOSSDIST_CLOSE,#throw_him_out + + WWLLW ANI_SUPERSLAVE2,3,U4FT3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,U4FT3A+FR6,#puppet_tbl,3 + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,3,U4FT3A+FR7,#puppet_tbl,4 + + ;impact + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,35 + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + .word ANI_OPP_GETUP,300 + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + .word ANI_CLROPPMODE,MODE_GHOST + WLLL ANI_SETOPPVELS,30000h,40000h,0 ;x,y,z vels + + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + + WL 4,U4FT3A+FR8 + .word ANI_XFLIP + WL 4,U4FT3A+FR9 + WL 4,U4FT3A+FR10 + WL 4,U4FT3A+FR11 + + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedb +; .ref ck_hiptoss +; WL ANI_CODE,ck_hiptoss +; WL ANI_IFNOTSTATUS,#got_him + + WL 10,U4FG3A+FR3 +;Delay longer if 2nd hiptoss in quick succession! + .ref hiptoss_delay + WL ANI_CODE,hiptoss_delay + WL ANI_IFNOTSTATUS,#missed + WL 24,U4FG3A+FR3 +#missed + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_CODE,CALL_MISSES + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SHADOWTRAIL,0 ;off + + WL 2,U4FG3A+FR3 + WL 3,U4FG3A+FR2 + WL 3,U4FG3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WL ANI_CODE,CALL_THROWN_OUT + WLLL ANI_ATTACHVEL,0A0000h,90000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,release_table + .word ANI_DETACH + + WL 4,U4FT3A+FR5 + WL 4,U4FT3A+FR6 + WL 1,U4FT3A+FR7 + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,15 + WL 3,U4FT3A+FR7 + + WL 3,U4FT3A+FR8 + .word ANI_XFLIP + WL 3,U4FT3A+FR9 + WL 3,U4FT3A+FR10 + WL 3,U4FT3A+FR11 + + .word ANI_SHADOWTRAIL,0 ;off + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +release_table + ; X Y + .word 48,0 ;Bret + .word 48,16 ;Razor + .word 32,0 ;Taker + .word 24,0 ;Yokozuna + .word 16,0 ;Shawn + .word 32,16 ;BamBam + .word 32,16 ;Doink + .word 0,0 ;Adam + .word 24,8 ;Lex + +#flyout_tbl + .long hrt_flyout_anim + .long rzr_flyout_anim + .long und_flyout_anim + .long yok_flyout_anim + .long shn_flyout_anim + .long bam_flyout_anim + .long dnk_flyout_anim + .long 0 + .long lex_flyout_anim + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 1 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AM3A+FR1,63,-7,1 + LWWW H3FR3A+FR2,32,34,1 + LWWW H3FR3A+FR4,-32,41,1 + LWWW H3FR3A+FR5,-59,6,1 + LWWW H2CP3A+FR8,-147,-56,0 + .long 0 +#Razor + LWWW R3TD3A+FR1,52,-1,1 + LWWW R3TD3A+FR4,33,31,1 + LWWW R3TD3A+FR6,-17,39,1 + LWWW R3TD3A+FR8,-51,19,1 + LWWW R3GU2A+FR1,-143,-53,0 + .long 0 +#Taker + LWWW U4AM4C+FR4,55,-9,1 + LWWW U3FH3A+FR2,32,38,0 + LWWW U3FH3A+FR4,-34,49,0 + LWWW U3FH3A+FR5,-59,28,0 + LWWW U3CP3B+FR1,-152,-49,0 + .long 0 +#Yokozuna + LWWW Y3MS3Z+FR2,63,0,1 + LWWW Y3FL3W+FR4,39,53,1 + LWWW Y3FL3W+FR6,-36,61,1 + LWWW Y3FL3W+FR7,-58,22,1 + LWWW Y3FD3A+FR7,-117,-32,1 + .long 0 +#Shawn + LWWW S3OS3X+FR4,28,-4,0 + LWWW S3OS3X+FR6,23,66,0 + LWWW S3OS3X+FR8,-12,71,0 + LWWW S3OS3X+FR9,-58,34,0 + LWWW S3OS3X+FR10,-115,-44,0 + .long 0 +#BamBam + LWWW B4TD3B+FR3,41,-17,1 + LWWW B4TD3B+FR5,44,54,1 + LWWW B4TD3B+FR7,-29,67,1 + LWWW B4TD3B+FR8,-51,26,1 + LWWW B4TD3B+FR9,-111,-43,1 + .long 0 +#Doink + LWWW D3PM4C+FR2,45,-4,1 + LWWW D3OS3A+FR3,32,27,1 + LWWW D3OS3A+FR6,-21,42,1 + LWWW D3FD3E+FR2,-62,-8,1 + LWWW D3SA3A+FR2,-140,-53,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR2,66,-10,1 + LWWW L3FH3A+FR3,41,44,1 + LWWW L3FH3A+FR5,-22,34,1 + LWWW L3FH3A+FR6,-45,14,1 + LWWW L3CP3X+FR1,-146,-47,0 + .long 0 + + +#***************************************************************************** +* +* END OF NECK BROKEN SEQ. + + SUBR und_neckbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 1,U3CR3A+FR1 + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR und_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,UND_TBUKLY + + WL 3,U2CT2C+FR5 + WL 3,U2CT2C+FR6 + WL 3,U2CT2C+FR7 + WL 3,U2CT2C+FR8 + + WL ANI_CODE,tgt_tbukl + .word ANI_LEAPATPOS,25,200,10,6,0 ;#ticks,dist,xoff,yoff,zoff + + WL 25,U2CT2C+FR9 + + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SHAKECORNER + .word ANI_SCROLL_CTRL,SC_RESTORE + + +#lp + WL 5,U4SB4A+FR8 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR7 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR6 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR5 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR4 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR3 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR2 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR1 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR2 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR3 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR4 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR5 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR6 + WL ANI_CODE,tbukl_flip + WL 5,U4SB4A+FR7 + WL ANI_CODE,tbukl_flip + WL ANI_GOTO,#lp + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR und_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP | MODE_NOCONFINE + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL ANI_CODE,face_inside + + .word ANI_SHAKECORNER + + WL 3,U2CT2C+FR8 + + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + WLW ANI_SET_ZVEL,-10000h,AM_FACE_REL + WL ANI_SET_YVEL,20000h + + WL 1,U2CT2C+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,U2CT2C+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR und_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,U4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,U4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,U4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,U4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,U4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,U4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,U4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,U4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,U4ST4D+FR5 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,und_fall_back_anim + .word ANI_END + +#nodead + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. +; movi 1e1eh,a14 + movi 3f3fh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#***************************************************************************** + + SUBR und_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,U4BF3Z+FR5 + WL 4,U4BF3Z+FR7 + WL 4,U4BF3Z+FR9 + WL 4,U4BF3Z+FR10 + WL 4,U4BF3Z+FR1 + WL 4,U4BF3Z+FR2 + WL 4,U4BF3Z+FR3 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR und_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,U4BF3A+FR2 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,U2AH3A+FR3 + WL 3,U2AH3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,U2AH3A+FR5 + WL 3,U2AH3A+FR6 + WL 3,U2AH3A+FR7 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 2,a0 + jrgt #breakout +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR und_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,U4BF3Z+FR3 + WL 3,U1TT5A+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR und_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 3,U3GP3X+FR3 + .word ANI_OFFSET,-5,0,0 + WL 4,U3GP3X+FR4 + .word ANI_OFFSET,-8,0,0 + WL 4,U3GP3X+FR5 + .word ANI_OFFSET,-27,0,0 + WL 4,U3GP3X+FR6 + + .word ANI_XFLIP + + .word ANI_OFFSET,-22,0,0 ;x,y,z + + .word ANI_ZEROVELS + WL 4,U3CR3A+FR7 ;10 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + SUBR und_break_neck2_anim + .word ANI_SETSPEED,100h + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,60000h + WL ANI_CODE,ckzpos + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP + WL 5,U3GP3X+FR3 + WL 5,U3GP3X+FR4 + WL 5,U3GP3X+FR5 + WL 5,U3GP3X+FR6 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE +; .word ANI_SOUND,bounce_l1 + .word ANI_ZEROVELS + .word ANI_XFLIP + .word ANI_OFFSET,-22,0,0 ;x,y,z + + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 10,U3CR3A+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + SUBR und_break_neck3_anim + .word ANI_SETSPEED,100h + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,300,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,U4POGO+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + +; .word ANI_XFLIP + WL 4,U3GP3X+FR1 + WL 4,U3GP3X+FR2 + WL 4,U3GP3X+FR3 + WL 4,U3GP3X+FR4 + WL 4,U3GP3X+FR5 + WL 4,U3GP3X+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_XFLIP + .word ANI_OFFSET,-22,0,0 ;x,y,z + + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 10,U3CR3A+FR7 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + +****************************************************************************** + + SUBR und_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + +;Too many turns here! +;Fix!! +; WL 1,U1TT5A+FR2 + WL 1,U1TT5A+FR3 + WL 1,U1TT5A+FR4 + + SUBR und_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 3,U4GH3C+FR1 + + LEAPATOPP 7,999,80,80,30000h,TGT_HEAD,0,6,0 + WL 4,U4GH3C+FR2 + WL 3,U4GH3C+FR3 + .word ANI_ZERO_XZVELS + WL 3,U4GH3C+FR4 + WL 3,U4GH3C+FR5 + + .word ANI_ATTACK_ON, AMODE_PUPPET2,19,5,22,25 ;mode,x,y,w,h + WL 4,U4GH3C+FR6 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + +;got him + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,clear_opp_counts + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,98h ;neck break (5-7 ticks late) + WL ANI_CODE,CALL_SETUP + + WWLLW ANI_SUPERSLAVE2,3,U4GH3C+FR7,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,U4GH3C+FR8,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,U4GH3C+FR9,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,U4GH3C+FR10,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,U4GH3C+FR11,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,U4GH3C+FR11,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,U4GH3C+FR11 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,U4GH3C+FR6 + WL 2,U4GH3C+FR5 + WL 2,U4GH3C+FR4 + WL 2,U4GH3C+FR3 + WL 2,U4GH3C+FR2 + WL 2,U4GH3C+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,39,-42,0 + LWWW H3GU4A+FR2,48,-52,0 + LWWW H3GU4A+FR3,57,-51,0 + LWWW H3DU3A+FR3,50,-43,1 + LWWW H3DU3A+FR4,51,-36,1 + LWWW H3BF3A+FR1,50,-42,0 + .long 0 +#Razor + LWWW R3GU2A+FR3,43,-33,0 + LWWW R3GU4A+FR3,53,-50,0 + LWWW R3GU4A+FR5,58,-53,0 + LWWW R3DU3B+FR2,55,-47,1 + LWWW R3DU3B+FR4,54,-36,1 + LWWW R3BF3A+FR1,53,-44,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,44,-34,1 + LWWW U3DU3B+FR5,51,-43,1 + LWWW U3DU3B+FR6,53,-44,1 + LWWW U3DU3B+FR8,48,-35,1 + LWWW U3DU3B+FR10,50,-28,1 + LWWW U4BF3Z+FR5,51,-23,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,40,-28,0 + LWWW Y3GU2A+FR3,60,-36,0 + LWWW Y3GU2A+FR4,31,-48,0 + LWWW Y3GU2A+FR6,39,-53,0 + LWWW Y3GU2A+FR11,49,-37,0 + LWWW Y3BF3A+FR1,50,-32,0 + .long 0 +#Shawn + LWWW S3GU2A+FR1,39,-36,0 + LWWW S3GU4A+FR2,44,-48,0 + LWWW S3GU4A+FR4,51,-54,0 + LWWW S3GU4A+FR5,52,-44,0 + LWWW S3GU4A+FR7,47,-35,0 + LWWW S3BF3A+FR1,36,-43,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,47,-32,0 + LWWW B3GU4A+FR5,57,-48,0 + LWWW B3GU4A+FR7,53,-52,0 + LWWW B3GU4A+FR8,53,-48,0 + LWWW B3GU4A+FR10,53,-42,0 + LWWW B3BF3C+FR5,54,-35,0 + .long 0 +#Doink + LWWW D3GU4A+FR2,48,-37,0 + LWWW D3GU4A+FR4,51,-53,0 + LWWW D3GU4A+FR5,52,-42,0 + LWWW D3GU4A+FR6,50,-36,0 + LWWW D3GU4A+FR7,54,-39,0 + LWWW D3BF3A+FR2,50,-41,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GU4A+FR1,43,-36,0 + LWWW L3GU4A+FR2,59,-44,0 + LWWW L3DU3A+FR4,31,-48,1 + LWWW L3DU3A+FR6,35,-48,1 + LWWW L3DU3A+FR9,45,-38,1 + LWWW L3BF3B+FR5,47,-39,0 + .long 0 + +#****************************************************************************** + + SUBR und_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 4,U4CO4B+FR1 + WL 4,U4CO4B+FR2 + WL 15,U4CO4B+FR3 + WL 4,U4CO4B+FR4 + WL 4,U4CO4B+FR5 + WL 4,U4CO4B+FR6 + WL 4,U4CO4B+FR7 + WL 4,U4CO4B+FR8 + WL 4,U4CO4B+FR7 + WL 4,U4CO4B+FR6 + WL 4,U4CO4B+FR5 + WL 4,U4CO4B+FR4 + WL 15,U4CO4B+FR3 + + WL 4,U4CO4B+FR2 + WL 4,U4CO4B+FR1 + +; WL 4,U4CO4B+FR4 +; WL 4,U4CO4B+FR5 +; WL 4,U4CO4B+FR6 +; WL 4,U4CO4B+FR7 +; WL 4,U4CO4B+FR8 +; WL 4,U4CO4B+FR7 +; WL 4,U4CO4B+FR6 +; WL 4,U4CO4B+FR5 +; WL 4,U4CO4B+FR4 +; WL 4,U4CO4B+FR3 +; WL 4,U4CO4B+FR2 +; WL 4,U4CO4B+FR1 + +; .ref set_taunt_bit +; WL ANI_CODE,set_taunt_bit + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,und_stand4_anim + .word ANI_END + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR und_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 2,U3CF3Q+FR1 + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,80000h + WL 4,U3CF3Q+FR2 + WL 4,U3CF3Q+FR3 + WL 4,U3CF3Q+FR4 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL 3,U3CF3Q+FR1 + WL ANI_CHANGEANIM,und_getup_anim + + SUBR und_break_face3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL 3,U3MS3Z+FR3 + WL ANI_SET_YVEL,078000h + WL 100,U3MS3Z+FR3 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + +* Head slams into mat +;From head slam + + SUBR und_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 2,U3CF3Q+FR1 + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,40000h + WL 4,U3CF3Q+FR2 + WL 4,U3CF3Q+FR3 + WL 4,U3CF3Q+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 2,U3CF3Q+FR1 + WL 4,U3CF3Q+FR2 + WL 4,U3CF3Q+FR3 + WL 4,U3CF3Q+FR4 + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 2,U3CF3Q+FR1 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR und_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,U3BR3Z+FR3 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 25,U3BR3Z+FR3 + +; WL 4,U3BR3Z+FR4 + + .word ANI_XFLIP + WL 4,U3CP3B+FR2 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + WL 2,U3CP3B+FR2 + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 2,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + WL 4,U3CP3B+FR1 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 3,U3CP3B+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim +; .word ANI_END + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR und_3_fake_hold_anim +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 3,U4GH3A+FR1 + WL 3,U4GH3A+FR2 + WL 7,U4GH3A+FR3 + WL ANI_GOTO,#missed + + SUBR und_3_head_hold2_anim +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 3,U4GH3A+FR1 + WL 3,U4GH3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET_HDGRAB,40-15,80,37+15,23 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,7,U4GH3A+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + WL ANI_GOTO,#gothim + + SUBR und_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_LEAPING,6 + WL 3,U4GH3A+FR1 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 6,999,65,45,90000h,TGT_HEAD,56,105,0 + LEAPATOPP 9,999,40,45,90000h,TGT_HEAD,56,105,0 + + WL 3,U4GH3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET,40-15,80,37+15,23 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,U4GH3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +#gothim +;got him + .word ANI_SETWORD,USR_VAR2,0 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + .word ANI_CLR_BUTCOUNT + .ref head_grab_time + WL ANI_CODE,head_grab_time + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,U4GH3A+FR3,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,U4GH3A+FR3,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,4,U4GH3A+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,U4GH3A+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,U4GH3C+FR11,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,U4GH3C+FR11 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + WL 2,U4GH3A+FR3 + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + + WL 3,U4GH3A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,U4GH3A+FR2 + WL 3,U4GH3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +#missed + WL ANI_CODE,CALL_MISSES + + WL 5,U4GH3A+FR3 + .word ANI_ZERO_XZVELS + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,U4GH3A+FR3 + WL 3,U4GH3A+FR2 + WL 3,U4GH3A+FR1 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4AH3A+FR1,70,7,0 + LWWW H3HB3A+FR3,78,-4,0 + LWWW H3HB3A+FR2,68,-17,0 + LWWW H3BF3A+FR1,48,-42,0 + .long 0 +#Razor + LWWW R4AH4C+FR3,76,6,0 + LWWW R3HB3A+FR3,77,-5,0 + LWWW R3HB3A+FR2,73,-27,0 + LWWW R3BF3A+FR1,52,-44,0 + .long 0 +#Taker + LWWW U4AH3A+FR2,64,16,0 + LWWW U4BF3A+FR2,66,8,0 + LWWW U4BF3A+FR3,45,-13,0 + LWWW U4BF3Z+FR5,56,-23,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR2,82,-3,0 + LWWW Y4AM4A+FR1,88,-3,0 + LWWW Y4AM4A+FR2,79,-17,0 + LWWW Y3BF3A+FR1,55,-32,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,68,0,0 + LWWW S4AH3D+FR1,70,5,0 + LWWW S4BF3A+FR2,68,-15,0 + LWWW S3BF3A+FR1,36,-43,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,61,1,0 + LWWW B4BF3A+FR1,80,7,0 + LWWW B3HB3A+FR2,69,-30,0 + LWWW B3BF3C+FR5,51,-36,0 + .long 0 +#Doink + LWWW D3AH3B+FR1,59,3,0 + LWWW D3AK3A+FR3,59,6,0 + LWWW D3AK3A+FR2,72,-16,0 + LWWW D3BF3A+FR2,47,-42,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,62,-1,0 + LWWW L3BF3A+FR1,76,3,1 + LWWW L3BF3A+FR2,77,-21,1 + LWWW L3BF3B+FR5,53,-40,0 + .long 0 + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +;#***************************************************************************** +;* +;* CHAIR STUFF +; +; SUBR und_pkup_chair_anim +; +; .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +;#lp +; WL 4,U4WA4B+FR1 +; WL 4,U4WA4B+FR2 +; WL 4,U4WA4B+FR3 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,44,-10,1 ;image, x,y,zoff +; WL 4,U4WA4B+FR4 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,47,15,1 ;image, x,y,zoff +; WL 4,U4WA4B+FR5 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR2,53,65,1 ;image, x,y,zoff +; WL 4,U4WA4B+FR6 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,45,109,1 ;image, x,y,zoff +; WL 4,U4WA4B+FR7 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,16,139,1 ;image, x,y,zoff +; WL 4,U4WA4B+FR8 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,5,155,1 ;image, x,y,zoff +; WL 4,U4WA4B+FR9 +; +;; .word ANI_SINGLESTEP +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-33,146,1 ;image, x,y,zoff +; WL 4,U3TBSM+FR3 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR5,-29,123,1 ;image, x,y,zoff +; WL 4,U3TBSM+FR5 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-22,142,1 ;image, x,y,zoff +; WL 4,U3TBSM+FR6 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR7,11,151,1 ;image, x,y,zoff +; WL 4,U3TBSM+FR7 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,77,80,1 ;image, x,y,zoff +; WL 4,U3TBSM+FR8 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR10,63,35,1 ;image, x,y,zoff +; WL 4,U3TBSM+FR9 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,77,62,1 ;image, x,y,zoff +; WL 4,U3TBSM+FR10 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,62,114,1 ;image, x,y,zoff +; WL 4,U3TBSM+FR11 +; +;; .word ANI_SINGLESTEP +; WLW ANI_ATTCHIMAGE,0,0 +; +; WL ANI_GOTO,#lp +; +****************************************************************************** + + .end + \ No newline at end of file diff --git a/UNDSEQ4.ASM b/UNDSEQ4.ASM new file mode 100755 index 0000000..7ff983e --- /dev/null +++ b/UNDSEQ4.ASM @@ -0,0 +1,395 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 11/28/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "undseq4.asm" + .title "Undertaker animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "takerimg.h" + .include "damage.equ" + .INCLUDE "SWEAT.EQU" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref DO_SCREAM + .ref HIT_THE_MAT,SMALL_BOUNCE + .ref CALL_MISSES + .ref am_I_dizzy + .ref am_I_dead + .ref ckzpos +; .ref ck_dizzy + .ref start_run_anim + .ref und_getup_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR und_slamnobounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 1,U3CP3B+FR2 + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,U3CP3B+FR7 + + .word ANI_OFFSET,2,0,0 ;x,y,z + WL 10,U3CP3B+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + SUBR und_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + WL 1,U3CP3B+FR2 + WL ANI_SET_YVEL,040000h + .ref ckzpos + WL ANI_CODE,ckzpos + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL ANI_CODE,HIT_THE_MAT + + WL 2,U3CP3B+FR7 + + .word ANI_OFFSET,2,0,0 ;x,y,z + WL 10,U3CP3B+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + + SUBR und_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_FACE,MOVE_LEFT|MOVE_UP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_DEBRIS,300,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 1,U3DD3X+FR9 + WL ANI_CODE,ckzpos + WL 3,U3DD3X+FR9 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + WL 4,U3CP3B+FR2 + WL 4,U3CP3B+FR3 + WL 4,U3CP3B+FR4 + WL 4,U3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 3,U3CP3B+FR7 + + .word ANI_OFFSET,2,0,0 ;x,y,z + WL 10,U3CP3B+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** + + SUBR und_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYD_SWEAT,SWEAT_PER,0 + WL 5,U3FD3X+FR2 + .word ANI_OFFSET,0,49,0 ;x,y,z + WL 5,U3FD3X+FR3 + WL 5,U3FD3X+FR4 + WL 5,U3FD3X+FR5 + WL 1,U3FD3X+FR6 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,25 + + WL 3,U3GP3X+FR1 + WL 3,U3GP3X+FR2 + WL 3,U3GP3X+FR3 + WL 3,U3GP3X+FR4 + WL 3,U3GP3X+FR5 + WL 3,U3GP3X+FR6 + + .word ANI_ZERO_XZVELS + + .word ANI_XFLIP + WL ANI_CODE,HIT_THE_MAT + + WL 8,U3CR3A+FR7 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,und_getup_anim + +#***************************************************************************** +* +* SHOOT SPIRITS - Pull in opponent + + SUBR und_spirit_pull_anim + +;Drones will have to be alerted to the presence of projectiles +;and then check for them! + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SOUND,0ceH ;spirits + + .word ANI_STARTATTACK,AT_MSL,80 + + WL 2,U3MS3B+FR2 + WL 2,U3MS3B+FR3 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 2,U3MS3B+FR6 + + + WL 2,U3MS3B+FR7 + WL 2,U3MS3B+FR8 + WL ANI_CODE,#fireball + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + +; WL 1,U3MS3B+FR4 +; WL 2,U3MS3B+FR5 +;; WL ANI_CODE,#fireball +; WL 1,U3MS3B+FR6 +; WL 2,U3MS3B+FR7 +; WL 1,U3MS3B+FR8 +; WL 2,U3MS3B+FR9 +; WL 1,U3MS3B+FR10 +; WL 2,U3MS3B+FR11 +; +; WL 1,U3MS3B+FR4 +; WL 2,U3MS3B+FR5 +;; WL ANI_CODE,#fireball +; WL 1,U3MS3B+FR6 +; WL 2,U3MS3B+FR7 +; WL 1,U3MS3B+FR8 +; WL 2,U3MS3B+FR9 +; WL 1,U3MS3B+FR10 +; WL 2,U3MS3B+FR11 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 +; WL ANI_CODE,#fireball + +; .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable + + WL 1,U3MS3B+FR6 + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 +; WL 2,U3MS3B+FR9 +; WL 1,U3MS3B+FR10 +; WL 2,U3MS3B+FR11 + + WL 3,U3MS3B+FR8 + + .word ANI_OFFSET,-15,0,0 ;x,y,z + WL 2,U4FT3A+FR9 + WL 2,U4FT3A+FR10 + WL 2,U4FT3A+FR11 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#fireball + move a13,a11 + .ref und_spirit_pull + CREATE0 und_spirit_pull + rets + +#***************************************************************************** +* +* SHOOT SPIRITS - Push away opponent + + SUBR und_spirit_push_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SOUND,0ceH ;spirits + + .word ANI_STARTATTACK,AT_MSL,80 + + WL 2,U3MS3B+FR2 + WL 2,U3MS3B+FR3 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + + + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + WL 1,U3MS3B+FR6 + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 + WL 2,U3MS3B+FR9 + WL 1,U3MS3B+FR10 + WL 2,U3MS3B+FR11 + + WL 1,U3MS3B+FR4 + WL 2,U3MS3B+FR5 + WL ANI_CODE,#fireball + +; .word ANI_SETMODE,MODE_NOAUTOFLIP + + WL 1,U3MS3B+FR6 + WL 2,U3MS3B+FR7 + WL 1,U3MS3B+FR8 +; WL 2,U3MS3B+FR9 +; WL 1,U3MS3B+FR10 +; WL 2,U3MS3B+FR11 + + .word ANI_OFFSET,-15,0,0 ;x,y,z + WL 2,U4FT3A+FR9 + WL 2,U4FT3A+FR10 + WL 2,U4FT3A+FR11 + + .word ANI_FACEDOWN + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#fireball + move a13,a11 + .ref und_spirit_push + CREATE0 und_spirit_push + rets + +#***************************************************************************** + + SUBR und_arm_broken_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-38000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_HIT_REL + + WL ANI_CODE,DO_SCREAM + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,U4AH3A+FR3 + WL 4,U4AH3A+FR4 + WL 4,U4AH3A+FR5 + WL 4,U4AH3A+FR6 + + WL 1,U4ST4D+FR5 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref und_fall_back_anim + + WL ANI_CHANGEANIM,und_fall_back_anim + .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/UNUSED.DOC b/UNUSED.DOC new file mode 100755 index 0000000..dbe278f --- /dev/null +++ b/UNUSED.DOC @@ -0,0 +1,106 @@ +Unused images: + +attbars.img + ATTMTR_0 ATTMTR_1 ATTMTR_2 ATTMTR_3 + ATTMTR_4 ATTMTR_5 ATTMTR_6 ATTMTR_7 + ATTMTR_8 ATTMTR_9 + +awwftit.img + COUGHZ01 COUGHZ02 WSF10AND WSF10COL + WSF10DOL WSF10DSH WSF10NUM WSF10NUM + WSF10PCT WSF10PRL WSF10PRR WSF10QUE + WSF10SLS WSF14AND WSF14COL WSF14DOL + WSF14NUM WSF14PCT WSF14PRL WSF14PRR + WSF14QUE WSF14SLS WSF14_C chunk1 + chunk10 chunk2 chunk3 chunk4 + chunk5 chunk6 chunk7 chunk8 + chunk9 + +bigwwf.img + WGSF18AND WGSF18COM WGSF18DOL WGSF18EXC + WGSF18PCT WGSF18PER WGSF18QUE WGSF18SLS + WGSF18_0 WGSF18_1 WGSF18_2 WGSF18_3 + WGSF18_4 WGSF18_5 WGSF18_6 WGSF18_7 + WGSF18_8 WGSF18_9 WGSF18_A WGSF18_B + WGSF18_C WGSF18_D WGSF18_E WGSF18_F + WGSF18_G WGSF18_H WGSF18_I WGSF18_J + WGSF18_K WGSF18_L WGSF18_M WGSF18_N + WGSF18_O WGSF18_P WGSF18_Q WGSF18_R + WGSF18_S WGSF18_T WGSF18_U WGSF18_V + WGSF18_W WGSF18_X WGSF18_Y WGSF18_Z + WWFLOGO_a WWFLOGO_b + +crut2.img + CRUTPLT_G + +diagp.img + DIAGPIMG + +explode.img + SMOK1_01 SMOK1_02 SMOK1_03 SMOK1_04 + SMOK1_05 SMOK1_06 SMOK1_07 SMOK1_08 + SMOK1_09 SMOK1_10 SMOK1_11 SMOK1_12 + SMOKE02 SMOKEB02 + +fnt9.img + FNT9_PCT + +hitstuff.img + CNFETI01 CNFETI02 CNFETI03 CNFETI04 + CNFETI05 CNFETI06 PIE01 PIE02 + PIE03 PIE04 PINSHAD2 PINSHAD3 + PINSHAD4 PINSHAD5 SPIT1 SPIT2 + SPIT3 SPIT4 SWEAT1 SWEAT2 + SWEAT3 SWEAT4 SWEAT5 + +jamie.img + HAND01 HAND02 HANDL03 HANDL04 + HANDL05 HANDL06 HANDL07A HANDL07B + HANDR03 HANDR04 HANDR05 HANDR06 + HANDR07 HBRK01 HBRK02 HBRK03 + HBRK04 HBRK05 TOMBSTN07A TOMBSTN08A + TTOP01 TTOP02 TTOP03 TTOP04 + TTOP05 TTOP06 TTOP07 + +meters.img + wins_txt + +pwrbarsn.img + FYEL2RED + +sparks2.img + GLOW1_01 GLOW1_02 GLOW1_03 GLOW1_04 + GLOW1_05 GLOW1_06 GLOW1_07 GLOW1_08 + GLOW1_09 GLOW2_01 GLOW2_02 GLOW2_03 + GLOW2_04 GLOW2_05 GLOW2_06 GLOW2_07 + GLOW2_08 GLOW2_09 GLOW3_01 GLOW3_02 + GLOW3_03 GLOW3_04 GLOW3_05 GLOW3_06 + SPKD3_09 SPKR2_01 SPKR3_01 SPKR4_01 + +special.img + BAMFIREA1 BAMFIREA2 BAMFIREA3 BAMFIREA4 + BAMFIREA5 BAMFIREA6 BAMFIREB1 BAMFIREB2 + BAMFIREB3 BAMFIREB4 BAMFIREB5 BAMFIREB6 + FIREHIT01 FIREHIT02 FIREHIT03 FIREHIT04 + +trogf15.img + FON15CR FON15engPOUN FON15rquote + +wgsfnt14.img + WGSF14_E + +wgsfnt20.img + CHBRAK01 CHBRAK02 CHBRAK03 CHBRAK04 + CHBRAK05 CHBRAK06 CHBRAK07 CHBRAK08 + CHBRAK09 CHBRAK10 + +wgsfnt24.img + WGSF24AND WGSF24DOL WGSF24PCT WGSF24QUE + WGSF24SLS + +wwfselbk.img + ATTPL_G + +xplosion.img + CLD11 CLD1A CLDB1LGRY CLDB1WHT + \ No newline at end of file diff --git a/UNUSED1.DOC b/UNUSED1.DOC new file mode 100755 index 0000000..0ebc6ec --- /dev/null +++ b/UNUSED1.DOC @@ -0,0 +1,54 @@ +Unused images: + +From main.lod: +CRUT_LX CRUT_MP CRUT_QQ DAVEMSK1 +DAVEMSK2 DAVEMSK3 DAVEMSK4 DIAGPIMG +FLASH1 FLASH2 GEORGE1 GEORGE2 +GEORGE3 GEORGE4 JASONCRD1 JASONCRD2 +JASONCRD3 JASONCRD4 JASONCRD5 JOY1 +JOY2 JOY3 JOY4 JOY5 +MD16_AND MD16_COM MD16_DOT MD16_LBR +MD16_NUM MD16_PCT MD16_RBR MPMUG_A +MPMUG_B MPMUG_C MPMUG_D MPMUG_E +MPMUG_F MPMUG_G MPMUG_H RPBBDN06 +RPBBUP06 RPFBDN06 RPFBUP06 SDCRD1A +SDCRD1B SDCRD1C SDCRD2A SDCRD2B +SDCRD2C SDCRD3A SDCRD3B SDCRD3C +SDCRD4A SDCRD4B SDCRD4C SHERID1 +SHERID2 SHERID3 SHERID4 SHERID5 +TOBIAS1 TOBIAS2 TOBIAS3 TOBIAS4 +TONYCRD1 TONYCRD2 TONYCRD3 TONYCRD4 +TONYCRD5 VIDEOSET VOGEL1 VOGEL2 +VOGEL3 VOGEL4 WALLY1 WALLY2 +WALLY3 WALLY4 WALLY5 att_bar0 +att_bar1 att_bar10 att_bar2 att_bar3 +att_bar4 att_bar5 att_bar6 att_bar7 +att_bar8 att_bar9 wall2 + +From fonts.lod: +FON15CR FON15engPOUN FON15rquote InsrtSrt +InsrtTal StartSrt StartTal WINS +random_select + +From adam.lod: +A2BC3B08 A2HT3A01 A2HT3A02 A2HT3A03 +A2HT3A04 A2HT3A05 A2HT3A06 A2HT3A07 +A2HT3A08 A2PU3G01 A2PU3G02 A2PU3G03 +A2PU3G04 A2PU3G05 A2PU3G06 A2PU3G07 +A2PU3G08 A2SC1A01 A2SC1A02 A2SC1A03 +A2SC1A04 A2SC1A05 A2SC1A06 A2SC1A07 +A2SC1A08 A3CP3D01 A3CP3D02 A3CP3D03 +A3CP3D04 A3CP3D05 A3CP3D06 A3GD4A02 +A3GD4A03 A3GU2A01 A3GU2A02 A3GU2A03 +A3GU2A04 A3GU2A05 A3GU2A06 A3GU2A07 +A3GU2A08 A3PJ3B07 A4AH4C05 A4BC3A01 +A4BG3A02 A4KM3C04 A4KM3C10 A4MK3B01 +A4MK3B02 A4MK3B03 A4MK3B04 A4MK3B05 +A4MK3B06 A4MK3B07 A4MK3B08 A4MK3B09 +A4MK3B10 A4MK3B11 A4MP4B06 A4MP4B07 +A4OT3A01 A4OT3A02 A4OT3A03 A4OT3A04 +A4OT3A05 A4OT3A06 A4OT3A07 A4PU3B01 +A4PU3B02 A4PU3B03 A4PU3B04 A4PU3B05 +A4PU3B06 A4PU3B07 A4PU3B08 A4SC5B01 +A4SC5B02 A4SC5B03 A4SC5B04 A4SC5B05 +A4SC5B06 A4SC5B07 A4UT4Y01 \ No newline at end of file diff --git a/UNUSED2.DOC b/UNUSED2.DOC new file mode 100755 index 0000000..075a554 --- /dev/null +++ b/UNUSED2.DOC @@ -0,0 +1,69 @@ +Unused images: + +From ref.lod: +J1RT5Z01 J1RT5Z02 J1RT5Z03 J1RT5Z04 +J1RT5Z05 J1RT5Z06 J1RT5Z07 J1RT5Z08 +J1RT5Z09 J2HT8A01 J2HT8A02 J2HT8A03 +J2HT8A04 J2HT8A05 J2HT8A06 J2HT8A07 +J2WK2A01 J2WK2A02 J2WK2A03 J2WK2A04 +J2WK2A05 J2WK2A06 J2WK2A07 J2WK2A08 +J2WK2A09 J2WK2A10 J2WK2A11 J2WK2A12 +J2WL4A01 J2WL4A02 J2WL4A03 J2WL4A04 +J2WL4A05 J2WL4A06 J2WL4A07 J2WL4A08 +J2WL4A09 J2WL4A10 J2WL4A11 J2WL4A12 +J2WL4A13 J2WL4A14 J2WL4A15 J4FT4B01 +J4FT4B02 J4FT4B03 J4FT4B04 J4FT4B05 +J4FT4B06 J4FT4B07 J4FT4B08 J4FT4B09 +J4FT4B10 J4FT4B11 J4FT4B12 J4FT4B13 +J4ST4B01 J4ST4B02 J4ST4B03 J4ST4B04 +J4ST4B05 J4ST4B06 J4ST4B07 J4ST4B08 +J4WK4A01 J4WK4A02 J4WK4A03 J4WK4A04 +J4WK4A05 J4WK4A06 J4WK4A07 J4WK4A08 +J4WK4A09 J4WK4A10 J4WK4A11 J4WK4A12 +J4WL4A01 J4WL4A02 J4WL4A03 J4WL4A04 +J4WL4A05 J4WL4A06 J4WL4A07 J4WL4A08 +J4WL4A09 J4WL4A10 J4WL4A11 J4WL4A12 +J4WL5A01 J4WL5A02 J4WL5A03 J4WL5A04 +J4WL5A05 J4WL5A06 J4WL5A07 J4WL5A08 +J4WL5A09 J4WL5A10 J4WL5A11 J4WL5A12 +J4WL5A13 J4WL5A14 J8WL2A01 J8WL2A02 +J8WL2A03 J8WL2A04 J8WL2A05 J8WL2A06 +J8WL2A07 J8WL2A08 J8WL2A09 J8WL2A10 +J8WL2A11 J8WL2A12 J8WL2A13 J8WL2A14 + + +From razor.lod: +R2BG3A01 R2BG3A02 R2BG3A03 R2BG3A04 +R2BG3A05 R2BG3A06 R2BG3A07 R2BG3A08 +R2BG3A09 R2CT2E01 R2CT2E02 R2CT2E03 +R2CT2E04 R2CT2E05 R2CT2E06 R2CT2E07 +R2CT2E08 R2CT2E09 R2CT2E10 R2CT2E11 +R2PJ2B01 R2PJ2B02 R2PJ2B03 R2PJ2B04 +R2PJ2B05 R2PJ2B06 R2PJ2B07 R2PJ2B08 +R2PU3A03 R2UP3A01 R2UP3A02 R2UP3A03 +R2UP3A04 R3GU2A01 R3GU2A02 R3GU2A03 +R3GU2A04 R3GU2A05 R3GU4A01 R3GU4A02 +R3GU4A03 R3GU4A04 R3GU4A05 R3GU4A06 +R3GU4A07 R3GU4A08 R3GU4A09 R3GU4A10 +R3TD3A01 R3TD3A02 R3TD3A03 R3TD3A04 +R3TD3A05 R3TD3A06 R3TD3A07 R3TD3A08 +R3TD3A09 R3TD3A10 R4BG3A01 R4BG3A02 +R4BG3A03 R4BG3A04 R4BG3A05 R4BG3A06 +R4BG3A07 R4BG3A08 R4BG3A09 R4OT3A01 +R4OT3A02 R4OT3A03 R4OT3A04 R4OT3A05 +R4OT3A06 R4OT3A07 R4OT3A08 R4OT3A09 +R4PJ4C01 R4PJ4C02 R4PJ4C03 R4PJ4C04 +R4PJ4C05 R4PJ4C06 R4PJ4C07 R4PO4A01 +R4PO4A02 R4PO4A03 R4PO4A04 R4PO4A05 +R4PO4A06 R4PO4A07 R4PO4A08 R4PO4A09 +R4PU3A06 R4SB4A01 R4SB4A02 R4SB4A03 +R4SB4A04 R4SB4A05 R4SB4A06 R4SB4A07 +R4SB4A08 R4SB4A09 R4SB4A10 + +From doink.lod: +D2CR1A07 D2LB2B04 D2LB2B05 D3FD3C02 +D3FD3C04 D3FD3C05 D3FD3C07 D3FD3E01 +D3FD3E02 D3FD3E03 D3FD3E04 D3FD3E05 +D3FD3E06 D3FD3E07 D3FD3E08 D3FD3E09 +D3RL1B12 D4LB4B04 D4LB4B05 D4PJ4A05 +D4UP3B12 \ No newline at end of file diff --git a/UNZIP.ASM b/UNZIP.ASM new file mode 100755 index 0000000..fa1960b --- /dev/null +++ b/UNZIP.ASM @@ -0,0 +1,1101 @@ +************************************************************** +* +* Software: Warren Davis +* Initiated: 9/3/91 +* +* Modified: Shawn Liptak, 8/13/92 -Basketball +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 3/24/93 11:23 +************************************************************** + + .file "unzip.asm" + .title "pkzip unzipper" + .width 132 + .option b,d,l,t + .mnolist + + + .include "mproc.equ" ;Mproc equates + .include "display.equ" ;Display proc equates + .include "gsp.equ" ;Gsp asm equates + .include "sys.equ" + .include "macros.h" + + .include "fontsimg.glo" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref pal_getf + .ref get_all_buttons_cur + +****************************************************************************** + + +BPP .set 3 +RAMBUFSIZ .set (4*1024)*8 ; << BPP +;SCRN_ST .set (170*SCRN_PTCH)+(150*8) +;PXLS_PR_TIK .set 10000 + +PAGE1ADR .equ PAGE1YO*512*8 + +;CARYTEST .equ 0 ;1 for Cary's board testing +ERRORTEST .equ 0 ;1 for random pixel test +DEBUGPORT .equ >1d01010 + + + STRUCTPD + LONG PTEMP1 + LONG PIXPERFRM +; WORD FRAMENUM +; LONG CLIPSND +; WORD HOLDFADE ;Time to hold first frame +; WORD DEBUGCNT ;For TUNIT debugging + + +RamBuffer .usect "unzip",RAMBUFSIZ + + BSSX lengthtree ,256*32 + .bss disttree ,256*32 + .bss minptrtbl ,256*32 + + + .text + + +******************************** +* Show movies (test) (Process) + +; SUBR movie_test +; +; calla pal_clean +; +; movi 5*60,a1 ;Delay tv score panel +; move a1,*a0(PTIME) +; +; movi [9,0],a9 +; movi [>8c,0],a10 +; movi (24+83*512)*8,a11 ;XY +; +; move @last_score,a0,L +; cmpi scores,a0 +; jrz #tm1 +; +; movi [9+216,0],a9 +; movi [>8c,0],a10 +; movi >53780,a11 ;XY +; +;#tm1 callr show_edging ;Turn on clip borders +; +; SLEEPK 10 +; +; movi GRANT_F,a8 +; clr a9 +; +; move a11,a10 +; JSRP movie_run +; +; movi >2001,a0 +; calla obj_del1c +; +; movk 10,a1 ;Delay tv score panel +; move a1,*a0(PTIME) +; +; DIE + + +;******************************** +; +; SUBRP show_edging +; +; move a9,a0 +; move a10,a1 +; +; movi livet,a2 +; movi 19989,a3 ;z pos - Below buyin box +; movi DMAWNZ|M_NOCOLL|M_SCRNREL,a4 +; movi >2001,a5 +; clr a6 +; clr a7 +; calla BEGINOBJ2 +; +; move a9,a0 +; move a10,a1 +; movi liveb,a2 +; calla BEGINOBJ2 +; +; move a9,a0 +; move a10,a1 +; movi livel,a2 +; calla BEGINOBJ2 +; +; move a9,a0 +; move a10,a1 +; movi liver,a2 +; calla BEGINOBJ2 +; +; rets +; +; + +#******************************* +* Stop for error (DEBUG) + +; .if TUNITDB +; +; SUBRP movie_error +; +; PUSH a0,a1 +; pushst +; dint +; +; move @SYSCOPY,a0 +; +; .if WWFUNIT +; ori LEDON,a0 +; .else +; ori 4,a0 +; .endif +; +; move a0,@SYSCOPY +; move a0,@SYSCTRL +; +;#lp2 movi 20000,a1 +;#lp move a0,@ERASELOC +; addk 1,a0 +; dsj a1,#lp +; +; move @SWITCH+16,a1 +; move @_coin_addr,a1,L +; move *a1,a1,W +; not a1 +; andi >624,a1 +; jrz #lp2 +; +; move @SYSCOPY,a0 +; +; .if WWFUNIT +; xori LEDON,a0 +; .else +; xori 4,a0 +; .endif +; +; move a0,@SYSCOPY +; move a0,@SYSCTRL +; +; popst +; PULL a0,a1 +; rets +; +; .endif + +#******************************* +* Show movies in attract mode + +; SUBR movie_demo +; +; calla pal_clean +; +; movi GRANT_F,a8 +; clr a9 +; movi (100+50*512)*8,a10 ;XY +; JSRP movie_run +; +; movi PIPPEN_F,a8 +; clr a9 +;; movi (140+70*512)*8,a10 ;XY +; movi (100+70*512)*8,a10 ;XY +; JSRP movie_run +; +;; movi GRANT_F,a8 +;; movk 1,a9 +;; movi (100+50*512)*8,a10 ;XY +;; JSRP movie_run +;; +;; movi PIPPEN_F,a8 +;; movk 1,a9 +;; movi (140+70*512)*8,a10 ;XY +;; JSRP movie_run +; +;#x RETP + + +#******************************* +* Run movie footage (JSRP) +* A8=* compressed picture data +* A9=Mode (0=Normal, 1=x2) +* A10=Screen * for top left of picture +* Trashes scratch, A2-A11,B2-B10 + + SUBR movie_run + + addi SCRNXP*8,a10 ;+XPad offset + move @dpage,a14 + jrnz #p2 + addi PAGE1YO*512*8,a10 ;Start in page 1 if page 0 is being displayed +#p2 + + callr movie_waitdma + +; .if CARYTEST +; movk 1,a14 +; move a14,@DEBUGPORT +; .endif + + callr movie_parsehdr + jrnz #error + + move b3,a14 ;Height + subk 1,a14 + movi SCRN_PTCH,a1 + mpys a14,a1 + add a1,a10 ;* to bottom left + + callr movie_getpal + jrz #error + ;B4=strtpal + SLEEPK 2 ;wait for the pal xfer. NOTE: This + ; generally only takes 0-1 tick, but + ; we have to wait 2 to stay in synch. + movi blowline,b10 + move a9,a9 + jrz #mode0 + movi blowlinex2,b10 +#mode0 + + JSRP movie_unzip + +#x setf 16,1,0 + setf 32,0,1 + + RETP + +#error + clr a14 + move a14,@DEBUGPORT + + LOCKUP + jruc #x + + +#******************************* +* Wait for DMA activity to stop +* Trashes A14 + + SUBRP movie_waitdma + +#wtlp + move b13,b13 ;Wait for DMAQ empty + jrge #wtlp + move @DMACTRL,a14 + jrn #wtlp + + +; .if CARYTEST=0 +; +; movk 1,a14 +; move a14,@DEBUGPORT +; +;#dly movi 200,a14 ;Wait 400 cycles +; dsj a14,$ +; +; move @DMACTRL,a14 +; jrnn #x +; LOCKUP +; jruc #dly +; +; .endif + +#x rets + + +#******************************* +* Get a movie palette +* A7=# of colors +* A8=* to color data +* >A0=Color map allocated (0000-cfcf) +* Z set if no palette free +* Trashes scratch + + SUBRP movie_getpal + + move a8,a0 + subk 16,a0 ;Point to # colors + calla pal_getf + jrz #x + + move a7,a1 + sll 4,a1 ;*16 + add a1,a8 + + move a0,b4 + addk 1,a1 ;Clr Z + +#x rets + + + +#******************************* +* Get movie info +* A8=* to compressed data +*Rets: +* >A0=!0 if error (CC) +* >A4=# frames +* >A6/B9=X +* >A7=# colors in palette +* >B3=Y +* Trashes scratch + +movie_parsehdr + + move a8,a14 + movk 30,a0 ;# retries + +#rd move *a8+,a6 ;X size of frames + move *a8+,a1 ;Y size of frames + move *a8+,a4 ;# of frames + move *a8+,a7 ;# of colors + move a1,b3 + move a6,b9 +; cmpi 100,a6 ;X +; jrne #error + cmpi 400,a6 + jrgt #error +; cmpi 68,b3 ;Y +; jrne #error + cmpi 256,b3 + jrgt #error +; cmpi 5,a4 ;#frms +; jrlt #error +; cmpi 35,a4 +; jrgt #error +; cmpi 200,a7 ;#colors +; jrlt #error + cmpi 255,a7 + jrhi #error + + clr a0 + rets + +#error + movk 101b,a8 + move a8,@DEBUGPORT + + move a14,a8 + dsj a0,#rd + + addk 1,a0 + rets + + +******************************** +* GSP Decompression routine +* +* ASSUMPTIONS: 1) There is no literal table +* 2) the size of the sliding window is 4K +* +* Needs the following Data Tables: +* CompressedDataTable will contain the following once +* it is uncompressed: +* # frames (1 byte) +* # colors in palette (1 byte) +* X size of frame (1 byte) +* Y Size of frame (1 byte) +* variable length palette data +* data for each frame +* +* Needs the following RAM variables: +* LengthTree 256 long words +* DistanceTree 256 long words +* MinPtrTable 256 long words (used for sort) +* RamBuffer circular buffer +* Tree layout is as follows... +* low 16 bits = Code +* next 8 bits = Bit length +* +* B reg usage... +* B0 = Ptr to Length tree +* B1 = Ptr to Distance tree +* B3 = start of line +* B4 = start palette duped to fill 16 bits +* B5 = used for outputting pal bits to DMAPAL +* B6 = temp storage in ReadTree and UncompressTree +* B7 = constant mask for pxl palette split +* B8 = DMAPAL +* B9 = Master X storage + + + +#******************************* +* Uncompress a tree +* A7=* to tree table +* A8=* to compressed data +* >A0=!0 if error (CC) + +UncompressTree: + + PUSH a4,a5 + + move a7,a5 ;Save start of tree + + clr a4 + PUSH a8 + ;>Determine how many codes of each bit length + setf 8,0,0 + move *a8+,a0 ;# compressed bytes to describe tree - 1 + addk 1,a0 + movk >f,a3 ;Constant + clr a6 ;Total number of codes in tree +utr0 + move *a8+,a1 ;(# codes - 1 << 4) | bit lngth - 1 + add a1,a4 ;Chksum + move a1,a2 + srl 4,a2 + addk 1,a2 ;number of codes of this bit length + add a2,a6 ;adjust total + and a3,a1 + addk 1,a1 ;bit length + move a1,a11 + sll 16,a11 + movy a11,a1 ;duplicate bit length for sort +utr1 + move a1,*a7+,L + dsj a2,utr1 ;fill table + + dsj a0,utr0 ;a6 now contains size of tree + + + PULL a8 ;>Recalc chksum + clr a2 + move *a8+,a0 ;# compressed bytes to describe tree - 1 + addk 1,a0 +#chklp move *a8+,a1 + add a1,a2 + dsj a0,#chklp + + setf 16,1,0 + + cmp a2,a4 + jrne #error ;Chksums don't match? + + +* Sort Tree by increasing Bit Length. +* The translation index is placed in the upper byte +* of the long word. + + movi minptrtbl,a0 ; for placing translation ptrs + move a6,a9 ; outer loop count (# entries in tree table) + +* Outer loop, after each pass, we have found the next minimum + +utr2 + move a5,a7 ; restore start of tree + movi 06543h,a14 ; current minimum + move a6,b6 ; inner loop count + movi 07654h,a1 ; constant + +* Inner loop, go through all values in table and find min. +* When we find it, we set it to a high value so we don't detect +* it again. + +utr3 + move *a7,a2 ; look at next bit length + cmp a14,a2 ; is it less than the last minimum + jrge nonewmin + move a2,a14 ; if yes, save new minimum + move a7,a11 ; save pointer to minimum +nonewmin + addk 32,a7 ; point to next entry + dsj b6,utr3 + +; end of inner loop: min is in a14, ptr to min is in a7 + + move a1,*a11 ; set this minimum high. + move a11,*a0+,L ; place translation ptr in MinPtrTbl. + + dsjs a9,utr2 + + ;>Compute the codes + clr a11 ;Code + clr a1 ;CodeInc + clr a2 ;LastBitLength + move a6,a14 ;loop counter +utr4 + move *-a0,a7,L ;translated pointer + add a1,a11 + movb *a7(16),a3 ;bit length + cmp a3,a2 + jreq samebitlng + move a3,a2 ;set new LastBitLength + movk 16,a3 + sub a2,a3 ;16-LastBitLength + movk 1,a1 + sll a3,a1 ;CodeInc = 1 << (16-LastBitLength) +samebitlng + move a11,a5 ;copy of Code in a5 + movk 16,a9 ;reverse bit loop count +rvrsbts + sll 1,a5 ;Reverse bits of word + movy a5,a3 + srl 1,a3 + zext a5 + dsjs a9,rvrsbts + + move a3,*a7 ;store code with bits reversed + dsjs a14,utr4 + + clr a0 + +#x PULL a4,a5 + move a0,a0 + rets + + +#error + movk 1001b,a14 + move a14,@DEBUGPORT + + LOCKUP + movk 1,a0 ;Error! + jruc #x + + + +******************************** + +SetConstants: + movi lengthtree,b0 + movi disttree,b1 +SetConstX + movi RamBuffer+RAMBUFSIZ-1,a0 ;mask for rambuf ptr + movi RamBuffer,a6 ;used for negative wraparound + movi 0c0c0h,b7 ;for blowing words of + movi DMACMAP,b8 +; movi blowline,b10 + rets + + + +#******************************* +* Initialize and run unzip loop (JSRP) +* A4=# of frames +* A8=* compressed data table +* A10=Screen * for top left of picture +* B3=Y size +* B4=strt pal +* B9=X size + + SUBRP movie_unzip + + +; .if TUNITDB +; jruc #debugstrt +; .endif + + + movi lengthtree,b0 + movi disttree,b1 + + movk 10,a5 +#ltlp move b0,a7 ;Length Tree + move a8,b2 + callr UncompressTree + jrz #ltok ;OK? + move b2,a8 + dsj a5,#ltlp + jruc #error +#ltok + + movk 10,a5 +#dtlp move b1,a7 ;Distance Tree + move a8,b2 + callr UncompressTree + jrz #dtok ;OK? + move b2,a8 + dsj a5,#dtlp + jruc #error +#dtok + +; .if CARYTEST +; clr a14 +; move a14,@DEBUGPORT +; .endif + +#debugstrt + + ;Clear top 4K of buffer to take care of initial wraparound + + movi RamBuffer+RAMBUFSIZ,a1 ;End of buffer + movi 1024,a2 ;4K + clr a3 +clrbuf + move a3,*-a1,L + dsj a2,clrbuf + + ;Do some initializing + mpyu b9,b3 + move b3,a11 ;total # bytes in frame in a11 + move a11,*a13(PIXPERFRM),L + callr SetConstX + move a6,a9 ;Where to uncompress to + move a9,b3 ;first frame start + clr b5 ;pixel count for Stills only + + cmpi 1,a4 + jreq UncompressFrame ;1 frame? + +;---- + +#lp + mmtm a12,a4,a10 + + callr movie_waitdma + +; .if CARYTEST +; movk 10b,a14 +; move a14,@DEBUGPORT +; .endif + +; .if TUNITDB +; movi 50,a0 +;#dblp +; movi 80,a2 +;#dblp2 +; move a8,a9 +; addi GRANT_F2-GRANT_F,a9 +; movb *a8,a14 +; movb *a9,a1 +; move a14,@SCRATCH+13 +; move a1,@SCRATCH+16+15 +; cmp a1,a14 +; jreq #cmpok +;#dberr callr movie_error +; mmfm a12,a4,a10 +; RETP +;#cmpok +; move @DMACTRL,a1 +; move @DMACTRL,a1 +; move @DMACTRL,a1 +; move @SWITCH,a1,L +; move @SWITCH,a1,L +; move @SWITCH,a1,L +; move @_switch_addr,a1,L +; move *a1,a1,L +; move @_switch_addr,a1,L +; move *a1,a1,L +; move @_switch_addr,a1,L +; move *a1,a1,L +; movb *a9,a1 +; cmp a1,a14 +; jrne #dberr +; move @SCRATCH+13,a1 +; cmp a1,a14 +; jrne #dberr +; movb *a8,a14 +; move @SCRATCH+16+15,a1 +; cmp a1,a14 +; jrne #dberr +; +; movb a14,*a10 +; addk 8,a8 +; addk 8,a9 +; addk 8,a10 +; dsj a2,#dblp2 +; addi (512-80)*8,a10 +; dsj a0,#dblp +; +; jruc #skipuncomp +; .endif + + + JSRP UncompressFrame + + clr a0 + move a0,@DEBUGPORT +#skipuncomp + + movk 1,a0 ;1 tick sleep +; move *a13(FRAMENUM),a14 ;if 1st frame, check for hold +; jrz chk4hold +; subk 1,a14 +; jrne nonono +; +; move *a13(HOLDFADE),a14 ;on second frame, wait for hold time +; add a14,a0 +; jruc nonono +; +;chk4hold +; move *a13(HOLDFADE),a14 +; jrz nonono ; if need to hold, create fade process +; PUSH a8 +; move b4,a8 +;; CREATE0 HOLD_FADE_PROC +; PULL a8 +; movk 6,a0 ; sleep longer if we are fading pal +;nonono + + + movi swappg,a14 + jruc GoToSleep + + +swappg + + mmfm a12,a4,a10 + + xori PAGE1YO*512*8,a10 ;Flip * to other page + +; PUSH a0 + + setf 16,1,0 + + +; move *a13(FRAMENUM),a14 ;sound only on first frame +; jrnz no +; move *a13(CLIPSND),a0,L ;sound from sound table +; jrz no +; PUSH a14 +; calla snd_play1 +; PULL a14 +;no +; PULL a0 +; +; addk 1,a14 +; move a14,*a13(FRAMENUM) ;save next frame number + + move *a13(PIXPERFRM),a14,L ;number of pixels in a frame + add a14,a11 ;adjust by extra pixels done last time + +; cmpi 2,a4 +; jrne #nxtf +; movi blowlinelastfrm,b10 + +#nxtf + PUSH a0,a1,a2 + calla get_all_buttons_cur + PULL a0,a1,a2 + jrnz #abort + + + dsj a4,#lp ;Loop once for each frame + +#abort + callr movie_waitdma + ;>Copy visible frame to other page + move *a13(PIXPERFRM),a14,L ;# of pixels in a frame + + move b4,*b8 ;Set pallette + + move a10,a2 ;* screen + xori PAGE1YO*512*8,a2 ;Flip * to other page +#cpylp + move a2,a0 + move a10,a1 + + move b9,a5 ;X size + srl 1,a5 ;X/2 = loop counter +#cllp move *a0+,*a1+ + dsj a5,#cllp + + subi SCRN_PTCH,a2 + subi SCRN_PTCH,a10 + move b9,a0 + sub a0,a14 + jrgt #cpylp ;More pixels? + + +#x + RETP + + +#error LOCKUP + jruc #x + + +******************************** + + +GoToSleep + getst b2 + move a12,b6 + mmtm b6,b2,b3,b4,b5,b9,b10 + move b6,a12 + + setf 16,1,0 + setf 32,0,1 + move a14,*a13(PTEMP1),L + calla PRCSLP + + move a12,b6 + mmfm b6,b2,b3,b4,b5,b9,b10 + move b6,a12 + + callr SetConstants + move *a13(PTEMP1),a14,L + + putst b2 + exgpc a14 ;Return + + + +******************************** +* Uncompress a single frame +* A0=Address mask for circular buffer +* A8=* to compressed data +* A9=* to buffer for uncompressed bytes +* A11=How many to place before returning +* B0=*Length tree +* B1=*Distance tree +* +*Trashes: +* a1 = Distance +* a2 = ptr to leftover data if there is any +* a4 = Length +* +* ReadTree uses A2-A5,A7,A14,B6 +* Need to Preserve: B9-B10 + +UncompressFrame: + + setf 16,0,1 ;Field 1 = 16 bits no sign-ext + move b4,*b8,1 ;Set pallette + +UncFr0 + setf 1,0,0 + move *a8+,a14 ; if bit = 1, read 8 bits and copy +; .if ERRORTEST +; move @HCOUNT,a14 +; .endif + jrz decode_still + setf 8,0,0 + + move *a8+,*a9+ + and a0,a9 + + addk 1,b5 ; pixel count + subk 1,a11 +us1 + cmp b5,b9 ; have we filled a line yet? + jrgt us0 + + call b10 ; Blow Line Routine + +us0 + move a11,a11 + jrgt UncFr0 + + setf 16,1,0 + setf 32,0,1 + RETP + + +decode_still: ; if bit = 0, decode from trees + setf 6,0,0 + move *a8+,a1 ; lower 6 bits of distance + +; .if ERRORTEST +; move @HCOUNT,a1 +; .endif + + move b1,a5 ; Distance Tree in a5 + callr ReadTree ; Result in a7 + sll 6,a7 + or a7,a1 + inc a1 ; DISTANCE in a1 + sll BPP,a1 ; turn it into a pointer + + move b0,a5 ; Length Tree in a5 + callr ReadTree ; Result in a7 + + setf 8,0,0 + + cmpi 63,a7 + jrne notmaxs + move *a8+,a3 ; If length is 63, get next byte, and + +; .if ERRORTEST +; move @HCOUNT,a3 +; .endif + + add a3,a7 ; add it to the length +notmaxs + addk 2,a7 ; add MML, LENGTH in a7 + +; We now have Length and Distance, now determine where to copy from + + move a9,a2 ; copy of current position in a2 + sub a1,a2 ; initial attempt + and a0,a2 ; handle wraparound + or a6,a2 ;copy pointer is now in a2 + + sub a7,a11 ;Adjust total pixel count + move a7,b6 + add b6,b5 ;Adjust pixel counter for this line + +copys + move *a2+,*a9+ ;>Copy + and a0,a2 + and a0,a9 + dsj a7,copys + + jruc us1 + + +#******************************* +* Read compression tree +* A5=*Tree table +* A8=*Compressed data +* Field 1 = 16 bits +* >A7=Data +* +* Trashes: A2-A5,A14,B6 +* +* Must preserve: A0,A1,A6,A8-A11 + +ReadTree: + movk 1,a2 ; bits_read + setf 1,0,0 + move *a8+,a7 ; read a bit + rl 31,a7 ; rotate right one more bit + clr b6 ; result + jruc #strt +#lp + addk 1,b6 +#strt move *a5+,a3,1 ; Code in a3 + move *a5+,a4,1 ; Blngth in a4 + movk 32,a14 + sub a2,a14 + rl a14,a3 ; rotate right as many bits have been read +#lp2 + cmpxy a3,a7 + jrynz #lp + + cmp a2,a4 + jreq #x + move *a8+,a14 ; read a bit + or a14,a7 ; accumulate with other bits + inc a2 ; inc bits_read + rl 31,a7 ; rotate right one more bit + rl 31,a3 ; shift code for check of next bit + jruc #lp2 + +#x + move b6,a7 + rets ;Result returned in a7 + + + +#******************************* +* BlowLine is used during decompression of a Still Picture to blow out +* a single line of data. Since only a single line needs to be stored at +* once, the RamBuffer can be as small as 4K. +* A0=Address mask for circular buffer +* Field 1 = 16 bits +* Trashes A1-A2,A5 + + SUBRP blowline + +; setf 32,0,0 + + move a10,a2 ;* screen + + move b3,a1 ;Start of line + move b9,a5 ;X size + srl 2,a5 ;X/4 = loop counter + jrnc #by4 + move *a1+,*a2+,1 ;Copy 2 pixels + and a0,a1 +#by4 +#lp + move *a1+,*a2+,1 ;Copy 2 pixels + and a0,a1 + move *a1+,*a2+,1 ;Copy 2 pixels + and a0,a1 + dsj a5,#lp + + +endblowline + subi SCRN_PTCH,a10 + move a1,b3 ;save for next frame + sub b9,b5 ;readjust pixels for next line + cmp b9,b5 ;added 6/92. if there are enough pixels + jrge #nuther ;left to do another line, do it. + + rets + +#nuther + jruc blowline + + + +******************************** +* Same as BlowLine, but blows to both screens +* Trashes A1,A3-A5 + +;blowlinelastfrm +; +; move a10,a3 ; where on screen to put +; move a3,a4 +; xori PAGE1ADR,a4 +; move b3,a1 ; start of line +; move b9,a5 ; X size +; srl 1,a5 ; X/2 = loop counter +; +;spbl1 +; move *a1+,a14,1 ; write into both screens +; move a14,*a3+,1 +; move a14,*a4+,1 ; write into both screens +; and a0,a1 +; dsjs a5,spbl1 +; +; jruc endblowline + + + +#******************************* +* BlowLine is used during decompression of a Still Picture to blow out +* a single line of data. Since only a single line needs to be stored at +* once, the RamBuffer can be as small as 4K. +* A0=Address mask for circular buffer +* Field 1 = 16 bits + + SUBRP blowlinex2 + + + move a10,a2 ;* screen + move a10,a3 + addi SCRN_PTCH,a3 + + move b3,a1 ;start of line + move b9,a5 ;X size + + setf 8,0,0 +#lp + move *a1+,a14 ;Get 8 bits + move a14,a4 + sll 8,a4 + or a4,a14 + move a14,*a2+,1 ;16 bits + move a14,*a3+,1 + and a0,a1 + dsjs a5,#lp + + + subi SCRN_PTCH*2,a10 + move a1,b3 ; save for next frame + sub b9,b5 ; readjust pixels for next line + cmp b9,b5 ; added 6/92. if there are enough pixels + jrge #nuther ; left to do another line, do it. + + rets + +#nuther + jruc blowlinex2 + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/UNZIP.BAT b/UNZIP.BAT new file mode 100755 index 0000000..33cd463 --- /dev/null +++ b/UNZIP.BAT @@ -0,0 +1,34 @@ +@echo off +c: +cls + +echo. +echo. +choice /c:yn /tn,20 UNZIP CODE +if errorlevel 2 goto art +cd \video\wwf +pkunzip -o \video\wwf\zips\code + +:art +echo. +echo. +choice /c:yn /tn,20 UNZIP ART +if errorlevel 2 goto done +cd \video\wwf\img +pkunzip -o \video\wwf\zips\bam +pkunzip -o \video\wwf\zips\dnk +pkunzip -o \video\wwf\zips\hrt +pkunzip -o \video\wwf\zips\lex +pkunzip -o \video\wwf\zips\rzr +pkunzip -o \video\wwf\zips\shn +pkunzip -o \video\wwf\zips\und +pkunzip -o \video\wwf\zips\yok + +pkunzip -o \video\wwf\zips\art + +:done +echo. +echo done... + +cd \video\wwf + \ No newline at end of file diff --git a/UTIL.ASM b/UTIL.ASM new file mode 100755 index 0000000..928f468 --- /dev/null +++ b/UTIL.ASM @@ -0,0 +1,3085 @@ +************************************************************** +* +* Software: ? and Shawn Liptak +* Initiated: ? +* +* Modified: Shawn Liptak, 7/?/91 -Improved FLASHME, added FRANIMQ +* Shawn Liptak, 7/?/91 -New and improved random stuff +* Shawn Liptak, 9/13/91 -Fixed various junk (STRINGER) +* Shawn Liptak, 10/5/91 -Added DELTAY to FRANIMQ +* Shawn Liptak, 10/20/91 -Improved GETCPNT +* Shawn Liptak, 1/4/92 -QDMAN mods +* Shawn Liptak, 2/11/92 -Started basketball (cleanup) +* Shawn Liptak, 12/10/92 -Added security code +* Shawn Liptak, 3/16/93 -Fixed coin misses from wipeout +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +*.Last mod - 3/22/93 16:25 +************************************************************** + .file "util.asm" + .title "utility subroutines" + .width 132 + .option b,d,l,t + .mnolist + + .include "mproc.equ" + .include "display.equ" + .include "gsp.equ" + .include "sys.equ" + .include "game.equ" + .include "audit.equ" + .include "macros.h" + + +;utility subroutine equates + + .def SCRCLR + .def OBJOFF,OBJON + .def STRLNRM,STRCNRM,STRCNRMO,STRLNRMO,STRCNRMO_1,CYCLE_TABLE + .def STRCNRMO_2 + .def BLNKAREA + .def FRANIM,FRANIMQ + .def STRNGLEN + .def STRRNRM,FILLAREA + + .DEF SPECIAL_WIPEOUT + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref IGNORE_CHAR_WIDTH,debris_count,are_we_waiting_f + .ref SPECIAL_DISPLAY_INIT,switches_cur,dirqtimer,pal_set + .ref SYSCOPY,GET_ADJ,display_init,GAMSTATE,pal_find + .ref pal_getf,dpageflip,SOUNDSUP,IRQSKYE,PSTATUS,PALRAM + .ref switches_down,gndstat,pal_init,BAKBITS,WFLG,WSPEED + .ref COLRTEMP,ENDLESS_SOUND,get_but_val_cur,get_but_val_down + .ref get_stick_val_cur,get_stick_val_down + +****************************************************************************** + + + .def STRNGRAM,HEXTOASC,GETANIX,WRLD + .def COLCYC,CYCLE_TABLE,FLASHME + + + + BSSX RAND ,32 ;Last random # + .bss STRNGRAM ,20*16 + .bss WRLD ,16 + BSSX LOWZ ,16 + + + .text + + +******************************** +* Kill all background objects + +; SUBR KILBGND +; +; MMTM SP,A0,A2,A3,A4,A5 +; MOVI BAKLST,A2,L ;ACTIVE BACKGROUND OBJECTS LIST +; MOVE *A2,A0,L +; JREQ KILOBX ;BR=NO MORE OBJECTS ON LIST +;FREEB +; MOVE A2,A3 ;SAVE PREVIOUS +; MOVE *A2,A2,L ;GET NEXT BLOCK +; JREQ KILOBX ;BR=ALL DONE +; MOVE *A2,*A3,L ;LINK AROUND IN ACTIVE LIST +; MOVE @OFREE,A5,L ;LINK INTO FREE LIST AT START +; MOVE A5,*A2,L +; MOVE A2,@OFREE,L ;UPDATE FREE LIST POINTER +; MOVE A3,A2 +; JRUC FREEB ;KILL ALL OBJECTS ON BACKGROUND LIST +;KILOBX +; CALLR ZERO_BITS +; MOVE A0,@BAKLST,L +; MMFM SP,A0,A2,A3,A4,A5 +; RETS + +******************************** + + SUBR ZERO_BITS + + CLR A0 + MOVI 10000/16,A2 ;SIZE OF BAKBITS IN WORDS + MOVI BAKBITS,A1 +KILUP + MOVE A0,*A1+,W + DSJS A2,KILUP + RETS + + SUBR SPECIAL_WIPEOUT + CALLR WIPEOUT2 + JAUC SPECIAL_DISPLAY_INIT + +************************************************************************** +* Wipes the system clear of all other processes, objects +* and coordinates. It returns with display processor disabled +* color ram cleared, and the bit map wiped clean. + + SUBR WIPEOUT + + callr dirq_wait + + calla display_init + + pushst + dint + calla pal_init + POPST + + + SUBR WIPEOUT2 + +; callr security_chk ;Rets: A0=0 if OK! + + clr a0 + + move a0,@gndstat + move a0,@dtype + + move a0,@are_we_waiting_f + move a0,@IGNORE_CHAR_WIDTH + MOVE A0,@ENDLESS_SOUND + move a0,@debris_count + + move a0,@WFLG + movk OWSPD,a1 + move a1,@WSPEED + + move a0,a1 + calla KILALL ;Kill all processes + + callr ZERO_BITS + callr dpageflip_off + clr a0 + move a0,@SOUNDSUP ;Allow sounds + move a0,@IRQSKYE +; move a0,@DISPLAYON ;TURN THE DISPLAY PROCESSOR OFF + + pushst + dint + + move @SYSCOPY,a0 ;>Init sysctrl + + .if WWFUNIT + movi SYSCINIT,a1 + .else + srl 8,a0 + sll 8,a0 + movi SYSCINIT&>ff,a1 ;Don't touch 7seg LED + .endif + + or a1,a0 + move a0,@SYSCOPY + move a0,@SYSCTRL + + popst + + callr dirq_wait ;Now wait for vblank to zap color map + + + rets + +#******************************* +* Save display/process lists and variables of active game +* A13=*Process that stays running +* Trashes scratch, A2-A7 + + .bss sysstate_t ,16*50 ;Mem for state save + .bss svproc_p ,32 ;*Saved proc list + .bss pal_t ,32*NMFPAL ;Mem for pal save + +SSS .macro a + move @:a:,*a1+ + .endm +SSSL .macro a + move @:a:,*a1+,L + .endm + + SUBR system_savegame + + movi sysstate_t,a1 + + SSSL OBJLST + SSSL BAKLST + SSSL WORLDTLX + SSSL WORLDTLY + + SSS IRQSKYE + SSSL COLRTEMP + SSS dtype + SSS dpageflip + SSS gndstat + + SSS GAMSTATE + +; movi plyrproc_t,a2 +; movi plyrobj_t,a3 +; movi P1CTRL,a4 +; movk 4,b0 +;#lp move *a2+,*a1+,L +; move *a3+,*a1+,L +; move *a4+,*a1+ +; dsj b0,#lp + + + movi ACTIVE,a2 + movi svproc_p,a4 + jruc #prnxt + +#prlp cmp a13,a2 + jreq #prnxt ;Me? + + move *a2(PROCID),a14 + jrn #prnxt ;Indestructible? + + move *a2,*a3,L ;Unlink + move a2,*a4,L ;Add it to save list + move a2,a4 + move a3,a2 +#prnxt + move a2,a3 + move *a2,a2,L + jrnz #prlp + + clr a0 + move a0,*a3,L + move a0,*a4,L + + move a0,@OBJLST,L ;Null lists + move a0,@BAKLST,L + move a0,@gndstat + + callr ZERO_BITS + + + movi PALRAM,a0 ;>Save pal ptrs + movi pal_t,a1 + movi NMFPAL,b0 +#plp move *a0+,*a1+,L + dsj b0,#plp + + calla pal_init + + rets + + +;#******************************* +;* Restore state of system_savegame +;* A13=*Process +;* Trashes scratch, A2-A8 +; +;SRS .macro a +; move *a1+,a0 +; move a0,@:a: +; .endm +;SRSL .macro a +; move *a1+,a0,L +; move a0,@:a:,L +; .endm +; +; SUBR system_restoregame +; +; clr a0 +; move a0,@DISPLAYON +; +; clr a1 +; calla KILALL ;Kill all processes +; calla KILBGND ;Kill old background +; movi -1,a1 +; calla obj_delc ;Kill all objs +; +; calla pal_init +; +; movi pal_t,a3 ;>Restore pal ptrs +; movi PALRAM,a4 +; clr a5 +; movi NMFPAL,a7 +;#plp +; move *a3+,a0,L ;Get * pal +; move a0,*a4+,L +; jrz #nxtp +; move a5,a1 +; sll 8,a1 ;Pal offset +; move *a0+,a2 ;Get # colors in pal +; calla pal_set ;Setup pal transfer +;#nxtp addk 1,a5 +; cmpi NMFPAL/2,a7 +; jrne #skipslp +; PUSHP a3,a4,a5,a7 +; PULL a8 ;Get our rets addr so we can sleep +; SLEEPK 1 ;Split the transfer +; PUSH a8 +; PULLP a3,a4,a5,a7 +;#skipslp +; dsj a7,#plp +; +; +; movi sysstate_t,a1 +; +; SRSL OBJLST +; SRSL BAKLST +; SRSL WORLDTLX +; SRSL WORLDTLY +; +; SRS IRQSKYE +; SRSL COLRTEMP +; SRS dtype +; SRS dpageflip +; SRS gndstat +; +; SRS GAMSTATE +; +;; movi plyrproc_t,a2 +;; movi plyrobj_t,a3 +;; movi P1CTRL,a4 +;; movk 4,b0 +;;#lp move *a1+,*a2+,L +;; move *a1+,*a3+,L +;; move *a1+,*a4+ +;; dsj b0,#lp +; +; +; movi ACTIVE,a2 ;>Find end of list +;#prlp +; move a2,a3 +; move *a2,a2,L +; jrnz #prlp +; +; move @svproc_p,*a3+,L ;Link +; +; +; movk 1,a0 +; move a0,@DISPLAYON +; +; rets +; +; +; +;******************************** +;* Clear all world coordinates and scroll velocities +; +;; SUBRP world_clr +;; +;; clr a0 +;; move a0,@SCROLLX,L ;X SCROLL VALUE +;; move a0,@SCROLLY,L ;Y SCROLL VALUE +;; move a0,@WORLDTLX,L ;TOP LEFT X SCREEN COORD (WORLD) +;; move a0,@WORLDTLY,L ;TOP LEFT Y SCREEN COORD (WORLD) +;; move a0,@WORLDTL,L +; movi SCRNST,a0 +; move a0,@SCRNTL,L +; movi SCRNEND,a0 +; move a0,@SCRNLR,L +; rets + + +**************************************************************** +* +* Animation script code by SL +* +**************************************************************** + +******************************** +* Run an animation script (Process) + + + BSSX animscnt ,16 ;# anim scripts running + + STRUCTPD + APTR animslobj_p ;*Last obj created + LONG animsv ;Temp value + WORD animsbx ;Base X + WORD animsby ;Base Y + WORD animsfnum ;# FRANIMs running + APTR animslp_p ;*Loop point table pos +;Careful! + APTR animslp_t ;(*Loop point, Loop cnt)*5 + + .if 0 + SUBR anim_script ;A8=*Script + + clr a9 + + SUBRP anim_script2 ;A8=*Script, A9=Base Y:X + + move a9,*a13(animsbx),L ;Save XY + + move *a13(PROCID),a11 + subi ANIMPID,a11 + srl 8,a11 + sll 8,a11 ;A11=ID offset (0->300) + + clr a1 + move a1,*a13(animsfnum) + move a13,a1 + addi animslp_t,a1 + move a1,*a13(animslp_p),L + +anslp move *a8+,a1 ;Get command + + addi anims_t,a1 + move *a1,a1,L + jump a1 + + .long asEND +anims_t .long asNEW,asDEL,asDELM,asFRA + .long asANI,asHIDE,asSHOW,asPAL + .long asXY,asXYRNG,asYA,asXYV + .long asXYVA,asXYV0,asZ,asBXY + .long asSLP,asSLP1,asSLPR + .long asWAIT,asTXT + .long asTXTR,asTXTK,asLAB,asLABR + .long asDSJ,asDSJS1,asJMP,asJMPR,asJMPEQ + .long asJMPNE,asRUN,asRUNI,asCRE + .long asKIL,asASM,asSND,asSNDD + .long asADDW + .long asADDWO,asADDLO,asADLVO,asSVRL + .long asSVRLT,asSVL + + +asNEW ;>New objects + move *a8+,a9,L ;Get data + PUSH a8 +ans100 move *a9+,a2,L ;*Image + move *a9+,a0,L ;Get XY + move *a13(animsbx),a3,L + addxy a3,a0 ;Add base + clr a1 + movy a0,a1 + sll 16,a0 + move *a9+,a3 ;Z + move *a9+,a4 ;Flags + addi M_NOCOLL,a4 + move *a9+,a5 ;ID + addi CLSANIM,a5 + add a11,a5 ;+offset + clr a6 + clr a7 + calla BEGINOBJW + move *a9,a0 + cmpi -1000,a0 + jrne ans100 ;End? + move a8,*a13(animslobj_p),L ;Save * to last one + PULL a8 + jruc anslp + +asFRA ;>FRANIM + move a11,a6 ;Save a11 + move *a8+,a9,L ;Get data + move *a13(PROCID),a1 ;Inherit same ID+1 + addk 1,a1 + move *a8+,a10 ;OID + jrn ans250 ;No ID? + addi CLSANIM,a10 + add a11,a10 ;+offset + move *a8+,a11 ;#Loops + jrn ans220 + move *a13(animsfnum),a2 ;+1 FRANIM cnt + addk 1,a2 + move a2,*a13(animsfnum) +ans220 movi anims_franim,a7 + calla GETPRC + move a13,*a0(anfc_p),L + move a6,a11 + jruc anslp + +ans250 addk 16,a8 ;Skip #loops + move a8,a10 + move *a13(animslobj_p),a8,L ;Get * to last one + movi FRQDELDIE,a7 + calla GETPRC + move a10,a8 + jruc anslp + + +asSLP ;>SLEEP + move *a8+,a0 ;Get time + calla PRCSLP + jruc anslp + +asSLP1 ;>SLEEP 1 + movk 1,a0 + calla PRCSLP + jruc anslp + +asSLPR ;>Sleep random + move *a8+,a0 ;Get time + move *a8+,a1 + callr RNDRNG + calla PRCSLP + jruc anslp + +asWAIT ;>Wait on FRANIMs + SLEEPK 2 + move *a13(animsfnum),a1 + jrnz asWAIT + jruc anslp + +asXY ;>New XY rel to current pos + move *a8+,a1 ;Get ID + move *a8+,a2 + move *a8+,a4 + move *a8+,a5 +asxyhs ;Entry for HIDE/SHOW +asxyr addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L +ans720 callr obj_find + jrz anslp + move *a0(OXPOS),a6 ;New X + add a4,a6 + move a6,*a0(OXPOS) + move *a0(OYPOS),a6 ;New Y + add a5,a6 + move a6,*a0(OYPOS) + move *a0,a0,L + jrnz ans720 + jruc anslp + +asXYRNG ;>New XY rel to current pos in rndrng + move *a8+,a0 + move *a8+,a1 + callr RNDRNG + move a0,a4 + move *a8+,a0 + move *a8+,a1 + callr RNDRNG + move a0,a5 + move *a8+,a1 + jrn asxyr5 ;No ID? + move *a8+,a2 + jruc asxyr + +asxyr5 addk 16,a8 ;Skip mask + move *a13(animslobj_p),a0,L ;Get * to last one + move *a0(OXPOS),a6 ;New X + add a4,a6 + move a6,*a0(OXPOS) + move *a0(OYPOS),a6 ;New Y + add a5,a6 + move a6,*a0(OYPOS) + jruc anslp + +asYA ;>Set Y ani pt world relative + move *a8+,a1 + move *a8+,a2 ;Mask + move *a8+,a5 ; + sll 16,a5 + move @WORLDTLY,a0,L + add a0,a5 + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L +asya10 callr obj_find + jrz asya90 + + PUSH a1,a2 + move *a0(OIMG),a1,L + move *a0(OSIZE),a2,L + move *a0(OCTRL),a4 + calla GANIOF + move *a0(OXVAL),a3,L + add a6,a3 ;Old X + move a5,a2 ;New Y + calla GANISAG + PULL a1,a2 + + move *a0,a0,L + jrnz asya10 +asya90 jruc anslp + +asXYV ;>Set XYVel + move *a8+,a4,L + move *a8+,a5,L + move *a8+,a1 + move *a8+,a2 + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L +ans920 callr obj_find + jrz anslp + move *a0(OXVEL),a6,L + add a4,a6 + move a6,*a0(OXVEL),L + move *a0(OYVEL),a6,L + add a5,a6 + move a6,*a0(OYVEL),L + move *a0,a0,L + jrnz ans920 + jruc anslp + +asXYVA ;>Set XYVel absolute + move *a8+,a4,L + move *a8+,a5,L + move *a8+,a1 + move *a8+,a2 + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L +ans1020 callr obj_find + jrz anslp + move a4,*a0(OXVEL),L + move a5,*a0(OYVEL),L + move *a0,a0,L + jrnz ans1020 + jruc anslp + +asXYV0 ;>XYVel = 0 + move *a13(animslobj_p),a0,L ;Get * to last one + clr a1 + move a1,*a0(OXVEL),L + move a1,*a0(OYVEL),L + jruc anslp + +asZ ;>Set Z pos + move *a8+,a1 + move *a8+,a2 + move *a8+,a4 + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L +ans1120 callr obj_find + jrz anslp + move a4,*a0(OZPOS) + move *a0,a0,L + jrnz ans1120 + jruc anslp + +asLAB ;>Set label + move *a8+,a0 +anslab move *a13(animslp_p),a2,L + move a8,*a2+,L ;Save * + move a0,*a2+ + move a2,*a13(animslp_p) + jruc anslp + +asLABR ;>Set label randomly + move *a8+,a0 + move *a8+,a1 + callr RNDRNG + jruc anslab + +asDSJS1 ;>Sleep 1, dec and loop to label + SLEEPK 1 + +asDSJ ;>Decrement and loop to label + move *a13(animslp_p),a1,L + move -*a1,a2 + subk 1,a2 + move a2,*a1 + jrz ans1330 + move -*a1,a8,L ;Get *Loop + jruc anslp +ans1330 subk 32,a1 ;Del loop entry + move a1,*a13(animslp_p),L + jruc anslp + +asPAL ;>Set palette + move *a13(animsv),a0,L ;Get *Pal + calla pal_getf + move a0,a4 + move *a8+,a1 + jrn ans1450 + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L + clr a2 ;No mask +ans1420 callr obj_find + jrz anslp + move a4,*a0(OPAL) + move *a0,a0,L + jrnz ans1420 ;More? + jruc anslp + +ans1450 move *a13(animslobj_p),a0,L ;Get * to last obj + move a4,*a0(OPAL) + jruc anslp + +asANI ;>Do ANI on OID + move *a8+,a5,L + move *a8+,a1 ;OID + addi CLSANIM,a1 + add a11,a1 ;+offset + move @OBJLST,a0,L + clr a2 ;No mask +ans1620 callr obj_find + jrz anslp + move a8,a9 + move a1,a3 + move a5,a1 ;*Img + move a0,a8 ;*Obj + move *a8(OCTRL),a4 ;Same flags + calla ANI + move a3,a1 + move a8,a0 + move a9,a8 + move *a0,a0,L + jrnz ans1620 ;More? + jruc anslp + +asDEL ;>Delete obj + move *a8+,a0 + clr a1 +asdel5 addi CLSANIM,a0 + add a11,a0 ;+offset + calla obj_delc + jruc anslp + +asDELM ;>Delete obj with mask + move *a8+,a0 + move *a8+,a1 + jruc asdel5 + +asRUN ;>Run a new anim script + move *a8+,a0,L + move *a13(PROCID),a1 ;Inherit same ID +asrun5 move a8,a10 + move a0,a8 ;*Script + move *a13(animsbx),a9,L ;Get base XY + movi anim_script2,a7 + calla GETPRC + move a10,a8 + jruc anslp + +asRUNI ;>Run a new anim script with ID + move *a8+,a0,L + move *a8+,a1 + addi ANIMPID,a1 + add a11,a1 ;+offset + jruc asrun5 + +asCRE ;>Create a process + move *a8+,a7,L + move *a8+,a9,L ;Pass A9 to process + movi ANIMPID+>ff,a1 + add a11,a1 ;+offset + calla GETPRC + jruc anslp + +asKIL ;>Kill processes with mask + move *a8+,a0 + addi ANIMPID,a0 + add a11,a0 ;+offset + move *a8+,a1 + calla KILALLN + jruc anslp + +asJMP ;>Jump to new location + move *a8+,a8,L + jruc anslp + +asJMPR ;>Jump to new location if RND<# + move *a8+,a4,L + movi 999,a0 ;.1 % resolution + callr RNDRNG0 + move *a8+,a1 + cmp a1,a0 + jrhs anslp + move a4,a8 ;Do jmp + jruc anslp + +asJMPEQ ;>Jump to new location if = to mem + move *a8+,a0,L + move *a0,a0 ;Get value + move *a8+,a2,L + move *a8+,a1 + cmp a1,a0 + jrne anslp ;Not same? + move a2,a8 ;Do jmp + jruc anslp + +asJMPNE ;>Jump to new location if != to mem + move *a8+,a0,L + move *a0,a0 ;Get value + move *a8+,a2,L + move *a8+,a1 + cmp a1,a0 + jreq anslp ;Same? + move a2,a8 ;Do jmp + jruc anslp + +asSNDD ;>Do a snd call in demo + movk ADJMUSIC,a0 ;Get demo music ON/OFF + calla GET_ADJ + jrz asSND ;Do sounds? + addk 32,a8 + jruc anslp +asSND ;>Do a snd call + move *a8+,a0,L + calla snd_play1 + jruc anslp + +asASM ;>Inline code + exgpc a8 + jruc anslp + +asHIDE ;>Hide an OID (X+5000) + movi 5000,a4 +ashide2 move *a8+,a1 + clr a2 + clr a5 + jruc asxyhs + +asSHOW ;>Show an OID (X-5000) + movi -5000,a4 + jruc ashide2 + +asADDW ;>Add WORD to mem + move *a8+,a0,L + move *a8+,a1 + move *a0,a2 + add a1,a2 + move a2,*a0 + jruc anslp + +asADDWO ;>Add WORD to last obj+offset + move *a8+,a0 + move *a13(animslobj_p),a1,L ;Get * to last one + move *a8+,a2 ;Offset + add a2,a1 + move *a1,a2 + add a0,a2 + move a2,*a1 + jruc anslp + +asADDLO ;>Add LONG # to last obj+offset + move *a8+,a0,L + move *a13(animslobj_p),a1,L ;Get * to last one + move *a8+,a2 ;Offset + add a2,a1 + move *a1,a2,L + add a0,a2 + move a2,*a1,L + jruc anslp + +asADLVO ;>Add LONG value to last obj+offset + move *a8+,a0 + move *a13(animslobj_p),a1,L ;Get * to last one + add a0,a1 ;+Offset + move *a13(animsv),a0,L ;Get value + move *a1,a2,L + add a0,a2 + move a2,*a1,L + jruc anslp + +asSVRL ;>Set value to rnd long + move *a8+,a0,L + move *a8+,a1,L + callr RNDRNG + move a0,*a13(animsv),L + jruc anslp + +asSVRLT ;>Set value to rnd long from a table + move *a8+,a4,L + move *a4+,a0 ;#Table entries + subk 1,a0 + callr RNDRNG0 + sll 5,a0 ;*32 + add a0,a4 + move *a4,a0,L + move a0,*a13(animsv),L + jruc anslp + +asSVL ;>Set value to long + move *a8+,a0,L + move a0,*a13(animsv),L + jruc anslp + +asBXY ;>Add # to BaseXY + move *a8+,a0,L + move *a13(animsbx),a1,L + addxy a0,a1 + move a1,*a13(animsbx),L + jruc anslp + +asTXTR ;>Print rnd text from table + move *a8+,a4,L + move *a4+,a0 ;#Table entries + subk 1,a0 + callr RNDRNG0 + sll 5,a0 ;*32 + add a0,a4 + move *a4,a0,L + jruc astxt5 + +asTXT ;>Print text + move *a8+,a0,L +astxt5 +; calla prt0_xy + jruc anslp + + +asTXTK ;>Kill text + PUSHP a8 + callr ERASE_TXT +; movk 4,a11 ;Save A11! +; JSRP text_shrink ;Sleeps + PULLP a8 + jruc anslp + + +asEND SLEEPK 1 ;>Wait on FRANIMs before exit + move *a13(animsfnum),a1 + jrnz asEND + DIE + + .endif + + +******************************** +* Animation of a part (Process) + + STRUCTPD + APTR anfc_p ;*AnimScrpt process that made me, set by AS + APTR anfl ;*Franim list + + + SUBRP anims_franim ;A9=*FRAN list, A10=OID, A11=# Loops + + move @OBJLST,a8,L ;>Find object +anf100 move *a8(OID),a0 + cmp a10,a0 + jreq anf300 + move *a8,a8,L + jrnz anf100 + jruc anf700 ;No match! + +anf300 move a9,*a13(anfl),L +anf340 JSRP FRANIMQ + move *a13(anfl),a9,L ;Go to 1st + move a11,a11 + jrn anf340 ;-=Infinite + dsj a11,anf340 + +anf700 move a11,a11 + jrn anf800 + move *a13(anfc_p),a0,L ;Get *Creator + move *a0(animsfnum),a2 ;#Frans-1 + subk 1,a2 + move a2,*a0(animsfnum) +anf800 DIE + + + +******************************** +* Wait for animation processes to finish + + SUBR anim_wait + +anw10 SLEEPK 3 + move @animscnt,a1 + jrgt anw10 + RETP + + .if 0 + +******************************** +* Wait 50 and kill anim stuff (Process) + + SUBR anim_kilslp + + SLEEP 50 + callr anim_killall + DIE + +******************************** +* Kill all animation processes and objects + + SUBR anim_killall + + clr a0 + move a0,@animscnt + + movi ANIMPID,a0 ;>Kill processes + movi >3ff,a1 + calla KILALLN + + movi CLSANIM,a0 ;>Delete objs + movi >3ff,a1 + jauc obj_delc + + .endif + + +******************************** +* Find an object by OID +* A0=*1st obj +* A1=OID +* A2=!Mask +* >A0=*Obj or 0 (Z) +* Trashes A1,A3 + + SUBRP obj_find + + andn a2,a1 +of20 move *a0(OID),a3 + andn a2,a3 ;Remove bits + cmp a1,a3 + jreq of50 + move *a0,a0,L + jrnz of20 +of50 move a0,a0 ;A0=*Obj or 0 + rets ;Pass CC + + + + + + +#*************************************************************** +* Reset autoerase color for fixing scrn glitches +* Trashes scratch + + SUBR autoerase_set + + pushst + dint + callr dma_wait ;Wait on dma + + clr a0 + move a0,@DMACMAP + movi ERASECOL,a0 ;Color pair + movi 510*512*8,a1 ;Store to last 2 lines of bitmap + movi 512*8*2/16,b0 +#lp move a0,*a1+ + dsj b0,#lp + + popst + + rets + + +#******************************* +* Flash an image by making a constant color +* A8=*Image to flash +* A9=Color to flash with (Ex. 0202h,a9) + +FLASHME + + move *a8(OCONST),a0 + jrnz #x ;Flashing? + + move a9,*a8(OCONST) + setf 4,0,0 + movk M_CONNON,a0 ;Replace non-zero data with constant + move a0,*a8(OCTRL) ;Write 4 low bits + setf 16,1,0 + + SLEEPK 2 + + clr a0 + move a0,*a8(OCONST) ;Clr color + + setf 4,0,0 + movk M_WRNONZ,a0 + move a0,*a8(OCTRL) ;Write 4 low bits + setf 16,1,0 + +#x DIE + + .if 0 +#******************************* +* Flash an image by making a constant color +* A8=*Image to flash +* A9=Color to flash with *64K + +FLASHME + move *a8(OCONST),a10 + jrnz #x ;Flashing? + srl 16,a9 + move a9,*a8(OCONST) ;Set color + move *a8(OCTRL),a0 + movk 8,a1 + or a1,a0 ;Set constant + move a0,*a8(OCTRL) + SLEEPK 2 + clr a0 + move a0,*a8(OCONST) ;Clr color + move *a8(OCTRL),a0 + andi >fff5,a0 ;Clr constant & nonzero + addk 2,a0 ;Set nonzero + move a0,*a8(OCTRL) +#x DIE + .endif + +******************************** +*CHEAP COLOR CYCLER +*CYCLES ANY NUMBER OF COLORS +*A8=PALETTE NAME +*A9=RAM STORAGE AREA +*A10=MSW START COLOR, LSW END COLOR +*A11=SPEED, A11=NEGATIVE FOR REVERSE CYCLER + +COLCYC + SLEEPK 4 + MOVE A8,A0 + calla pal_find + JRZ COLCYC ;WAIT TILL IT SHOWS UP FOLKS... + + CLR A1 ;GET THE COLORS INTO RAM + MOVX A10,A1 ;GET END COLOR + SRL 16,A10 ;ADJUST START COLOR + SUB A10,A1 ;GET COUNT + MOVE A1,*A13(PDATA) ;SAVE COUNT + MOVE A1,A4 + SLL 4,A1 ;COUNT IN WORDS + MOVE A10,A5 + SLL 4,A5 ;OFFSET INTO PALETTE + ADD A8,A5 + ADDK 16,A5 ;SKIP PALETTE WORD COUNT + MOVE A9,A3 + MOVE A9,A6 + ADD A1,A6 + MOVE A6,A8 + +COLCYC1 MOVE *A5+,A7 ;TRANSFER IT TWICE + MOVE A7,*A3+ + MOVE A7,*A6+ + DSJS A4,COLCYC1 + + SRL 8,A0 + SLL 8,A0 + ADD A0,A10 ;COLRAM DESTINATION + +COLCYCB + MOVE A8,*A13(PDATA+>20),L ;SAVE RAM ADDRESS +COLCYCBL + MOVE A8,A0 ;GET SOURCE ADDRESS + MOVE A10,A1 ;GET DESTINATION CONSTANT + MOVE *A13(PDATA),A2,W ;GET COUNT + calla pal_set + SUBK 16,A8 + CMP A8,A9 + JRLO CCYCBSLP + MOVE *A13(PDATA+>20),A8,L ;GET SOURCE TABLE START +CCYCBSLP + MOVE A11,A0 ;GET SLEEP TIME + CALLA PRCSLP + JRUC COLCYCBL + + +#******************************* +* CYCLE A PAL WITH A FIXED ROM COLOR TABLE +* A8= [COLOR # TO START AT,# TO CYCLE] +* A9= PAL NAME TO CYCLE +* A10=TABLE TO CYCLE IT WITH +* A11=RATE OF CYCLE IN TICKS + +CYC0 SLEEP 60 + +CYCLE_TABLE + MOVE A9,A0 ;PAL NAME TO CYCLE + calla pal_find + jrz CYC0 + + SUBI 32,A14 + MOVE *A14,A1,L + PUSHP A14,A1 + + SRL 8,A0 + SLL 8,A0 + MOVY A8,A1 + SRL 16,A1 ;A1=COLOR # TO START WITH + MOVE A8,*A13(PDATA) ;PDATA WILL HAVE # TO CYCLE (CNT) + MOVE *A10,A2,W + MOVE A2,*A13(PDATA+16) ;VALUE IN TABLE TO STOP AT + MOVE A0,A8 ;A8=[PAL #,0] + ADD A1,A8 ;A8=[PAL #,COLOR TO START AT] + MOVE A10,A9 ;A10=ROM TABLE TO CYCLE WITH +#loop + PULLP A1,A14 + PUSHP A1,A14 + MOVE *A1,A0,L + CMP A0,A14 + JRNE KILL_US + move a8,a1 + MOVE A9,A0 ;A0=TABLE POSITION + MOVE *A13(PDATA),A2 ;A2=COLOR COUNT + calla pal_set ;do the transfer + MOVE A11,A0 + CALLA PRCSLP + ADDK >10,A9 + MOVE *A9,A0 + JRN RESTUFF + MOVE *A13(PDATA+16),A1 ;PDATA+16=ENTRY WE STOP AT + CMP A0,A1 + jrne #loop +RESTUFF MOVE A10,A9 ;REACHED END OF TABLE, RESTUFF + jruc #loop +KILL_US + DIE + + +**************************************************************** +* Converts a 32 bit hex # to a null terminated ascii string +* A8=# +* >A8=*String + +HEXTOASC + PUSH a1,a2,a9 + clr a1 + move a1,-*sp ;Push the null terminator + movk 10,a1 ;Divisor for decimal + move a8,a9 +hexta1 movk 3,a2 ;Comma count +hexta2 clr a8 + divu a1,a8 + addi '0',a9 ;Make the remainder ascii + move a9,-*sp ;Save here + move a8,a9 + jrz hexta3 ;Done? + dsj a2,hexta2 + movi ',',a2 + move a2,-*sp ;Stuff a comma + jruc hexta1 + +hexta3 movi STRNGRAM,a1 ;Store here for blow out + move a1,a8 +hexta4 move *sp+,a9 + movb a9,*a1 + addk 8,a1 + move a9,a9 + jrnz hexta4 + + PULL a1,a2,a9 + rets + + +******************************** +* Erase all text objects + + SUBR ERASE_TXT + + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + jauc obj_del1c + + +************************************************************************** +* +* STRINGER - OUTPUT A TEXT STRING, THIS IS A PROCESS! +* A0 = SLEEP TIME BETWEEN CHARACTERS +* A4 = DMA CONTROL +* A6 = COLOR (16 BITS) +* A8 = PTR TO STRING +* A9 = [Y,X] SCREEN ADDRESS OF STRING +* A10 = [Y,X] SPACING +* A11 = POINTER TO FONT TABLE +* A14 = FLAGS:JUSTIFY +* BIT 16 = 1 INSERT ON OBJECT LIST, 0 JUST QUEUE THE DMA +* JUSTIFY = 0 LEFT JUSTIFY +* 1 CENTER JUSTIFY +* 2 RIGHT JUSTIFY +* WRLD = ADJUST FOR WORLD COORDINATES +* LOWZ+20000=ZPOS +* +* RETURNS: +* A8 = POINTS TO NEXT BYTE AFTER STRING TERMINATOR +* A9 = NEXT CURSOR POSITION AFTER THE STRING +* NOTE: CALL WITH JSRP +* +************************************************************************** + +;LEFT JUSTIFY, NORMAL, NOT PUT ON THE OBJECT LIST +STRLNRM + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + clr a14 + jruc stringr1 + +;CENTER JUSTIFY, NORMAL, NOT ON THE OBJECT LIST +STRCNRM + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + movk 1,a14 + jruc stringr1 +;CENTER JUSTIFY, NORMAL, DMA, MULTIPLE COLORS + SUBR STRCNRM_1 + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMAWNZ|M_NOCOLL,a4 + movk 1,a14 + move a6,a5 + jruc stringr1_1 + +;RIGHT JUSTIFY, NORMAL, NOT PUT ON THE OBJECT LIST +STRRNRM + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + movk 2,a14 + jruc stringr1 + +;LEFT JUSTIFY, INVERTED, NOT ON THE OBJECT LIST +;STRLINV +; mmtm a12,a1,a2,a3,a4,a6,a14 +; MOVI DMACZ,A4 +; clr a14 +; jruc stringr1 + +;CENTER JUSTIFY, INVERTED, NOT ON THE OBJECT LIST +;STRCINV +; mmtm a12,a1,a2,a3,a4,a6,a14 +; MOVI DMACZ,A4 +; movk 1,a14 +; jruc stringr1 +; + +;LEFT JUSTIFY, NORMAL, OBJECT LIST +STRLNRMO + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + movi >10000,a14 + jruc stringr1 + +;CENTER JUSTIFY, NORMAL, OBJECT LIST +STRCNRMO + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + movi >10001,a14 + jruc stringr1 + +;CENTER JUSTIFY, NORMAL, OBJECT LIST, MULTIPLE COLORS! +STRCNRMO_1 + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMAWNZ|M_NOCOLL,a4 + movi >10001,a14 + move a6,a5 + jruc stringr1_1 + +;CENTER JUSTIFY, NORMAL, OBJECT LIST, CONSTANT NON-ZERO +STRCNRMO_2 + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMACNZ|M_NOCOLL,a4 + movi >10001,a14 + move a6,a5 + jruc stringr1_1 + +;LEFT JUSTIFY, NORMAL, OBJECT LIST, MULTIPLE COLORS! + SUBR STRLNRMO_1 + mmtm a12,a1,a2,a3,a4,a6,a14 + movi DMAWNZ|M_NOCOLL,a4 + movi >10000,a14 + move a6,a5 + jruc stringr1_1 + +STRINGER + mmtm a12,a1,a2,a3,a4,a6,a14 +stringr1 + move a6,a5 + sll 16,a5 ;Setup constant color in fixed palette +stringr1_1 + + clr a7 + movx a14,a7 + subk 1,a7 + jrn strr10 ;Normal left justify + jrz strrc + + callr STRNGLEN ;Right justify + jruc strra + +strrc callr STRNGLEN ;Center justify + srl 1,a7 ;STRNGLEN/2 + +strra subxy a7,a9 ;Adjust string starting position + jruc strr10 ;Start loop + + +strr1 addk 5,a9 ;Add a space +strr5 addxy a10,a9 ;Add spacing + +strr10 movb *a8,a1 ;Get a character + jrle strrx ;Done? + addk 8,a8 ;Next byte + + subk 32,a1 + jrle strr1 ;Space? + + ;Save sleep time +strr20 PUSH a0 + + subk 1,a1 ;>Calc table offset + sll 5,a1 ;*32 + add a11,a1 + move *a1,a1,L ;Get * image header + move *a1(ICTRL),a3 + + PUSH a1,a14 + + btst 16,a14 + jrz strrdma ;Only do DMA? + + move a1,a2 + + calla GETOBJ ;Create the character as an object + jrz strrdun ;No object? + + move a2,*a0(OIMG),L + move *a2(ISAG),*a0(OSAG),L + move a4,*a0(OFLAGS) ;FIX!!!!! + move a5,*a0(OPAL),L ;&CONST + movi 01000100h,a1 + move a1,*a0(OSCALE),L + + + move a4,a1 + andi >803f,a1 ;Kill mode bits + or a1,a3 + move a3,*a0(OCTRL),L ;&OFSET + + movi CLSNEUT|TYPTEXT|SUBTXT,a14 + move a14,*a0(OID) + + move @LOWZ,a14 + addi 20000,a14 + move a14,*a0(OZPOS) + + clr a2 + move a2,*a0(OXVEL),L + move a2,*a0(OYVEL),L + move a2,*a0(OZVEL),L + move a2,*a0(ODOFF),L + + movy a9,a2 ;Y + move a9,a3 + sll 16,a3 ;X + calla GANISAG + + move @WRLD,a2 + jrnz strr100 + calla obj_addworldxy ;Put us in the world + +strr100 calla INSOBJ + jruc strrdun + + +strrdma PUSH a3 ;>Simple DMA + move *a1,a2,L ;ISIZE + move *a1(ISAG),a3,L ;Get top left sag + calla GANIOF + move a5,a1 ;Constant:Palette + PULL a5 + PUSH a4 + andi >803f,a4 + or a4,a5 ;Offset:Control + move a3,a4 ;SAG + + move a9,a3 ;A3=Y:X + srl 16,a6 + movx a6,a7 + subxy a7,a3 ;Sub anioffset + + calla QDMAN + PULL a4 + move a1,a5 + +strrdun PULL a1,a14 + + move *a1,a1 ;Get ISIZEX + addxy a1,a9 ;Add X size + move *sp+,a0,L + jrz strr5 ;No sleep? + + mmtm a12,a0,a4,a5,a14 + calla PRCSLP + mmfm a12,a0,a4,a5,a14 + jruc strr5 + +strrx clr a1 + move a1,@LOWZ + addk 8,a8 ;Next byte + mmfm a12,a1,a2,a3,a4,a6,a14 + RETP + + +************************************************************************** +* STRNGLEN - RETURNS THE LENGTH, IN PIXELS, OF A GIVEN STRING +* A8 = PTR TO STRING +* A10 = [Y,X] SPACING OF STRING +* A11 = PTR TO FONT TABLE +* RETURNS: +* A7 = LENGTH OF STRING +* Z BIT SET IF LENGTH IS ZERO +************************************************************************** +STRNGLEN + PUSH a8,a14 + clr a7 ;A7=Length + jruc stl60 + +stl10 addk 8,a8 ;Point to next + subk 32,a14 + jrgt stl20 ;Good char? + addk 5,a7 ;Hard code a space + jruc stl40 + +stl20 subk 1,a14 + sll 5,a14 ;*32 + add a11,a14 ;A14=*Correct character header + move *a14,a14,L + move *a14,a14 ;Get ISIZEX + + addxy a14,a7 ;Add char length +stl40 addxy a10,a7 ;Add space length +stl60 movb *a8,a14 + jrgt stl10 ;Next character? + + PULL a8,a14 + zext a7 + rets + + + +************************************************************************** +* * +* OBJOFF - TURN AN OBJECT "OFF" I.E. SET DMA OUTPUT TO 0 * +* A0 = PTR TO OBJECT BLOCK * +* * +************************************************************************** +OBJOFF + PUSH A4 + MOVE *A0(OCTRL),A4 + SRL 4,A4 + SLL 4,A4 + MOVE A4,*A0(OCTRL) + move *sp+,a4,L + RETS + +************************************************************************** +* * +* OBJON - TURN AN OBJECT "ON" I.E. SET DMA OUTPUT TO WRITE <> 0 * +* A0 = PTR TO OBJECT BLOCK * +* * +************************************************************************** +OBJON + PUSH A4 + MOVE *A0(OCTRL),A4 + SRL 4,A4 + SLL 4,A4 + ADDK 2,A4 + MOVE A4,*A0(OCTRL) + move *sp+,a4,L + RETS + + +************************************************************************** +* * +* CLRPDATA - CLEAR THE PDATA AREA OF A PROCESS BLOCK * +* A13 = PTR TO PROCESS BLOCK * +* * +************************************************************************** +;CLRPDATA +; MMTM SP,A1,A6,A14 +; MOVE A13,A14 +; CLR A1 +; ADDI PDATA,A14 +; MOVI (PSDATA-PDATA)/16,A6 +;CLRSHL +; SRL 1,A6 +; JRNC CLRPDL +; MOVE A1,*A14+,W ;STUFF THE ODD WORD +;CLRPDL +; MOVE A1,*A14+,L +; DSJS A6,CLRPDL +; MMFM SP,A1,A6,A14 +; RETS +************************************************************************** +* * +* DFRMGRND - RETURNS THE DISTANCE FROM THE BOTTOM OF * +* AN OBJECT TO THE "GROUND." * +* A8 = OBJECT BLOCK * +* RETURN(S) * +* A1 = DISTANCE FROM GROUND (16 BITS) * +* STATUS BITS SET ACCORDING TO THE SIGN OF A1 * +* NOTE: MAX ACCEPTABLE Y = +32K, MIN ACCEPTABLE Y = -32K * +* * +************************************************************************** +;ZORIGIN EQU 200 ;Y COORDINATE OF THE Z ORIGIN +;DFRMGRND +; PUSH A2 +; MOVE *A8(OYPOS),A1,W +; MOVE *A8(OSIZEY),A2,W +; ADD A1,A2 ;A2 = BOTTOM Y +; MOVE *A8(OZPOS),A1,W +; SUB A2,A1 +; ADDI ZORIGIN,A1 +; MMFM SP,A2 +; RETS + +************************************************************************** +* * +* GET BOTTOM Y OF AN OBJECT * +* A8 = OBJECT BLOCK PTR * +* RETURN(S) * +* A1 = 16 BIT BOTTOM Y IN LSW * +* STATUS SET ACCORDING TO THE BOTTOM Y * +*NOTE: MAKE SURE OBLOCK IS INIT'D WITH GSAGOF BEFORE CALLING * +* * +************************************************************************** +;GETBOTY +; PUSH A2 +; MOVE *A8(OYPOS),A1,W ;GET Y POSITION +; MOVE *A8(OSIZEY),A2,W ;GET THE CURRENT SIZE +; ADD A2,A1 ;A1 = BOTTOM Y +; MMFM SP,A2 +; RETS + + +******************************** +* GETCPNT - Get the center xy position of an object +* A8=*Object +* >A0=Center Y:Center X + + SUBR GETCPNT + + move *a8(OYVAL),a1,L + move *a8(OXPOS),a0 + movx a0,a1 + move *a8(OSIZE),a0,L + srl 1,a0 ;/2 + andi >7fff7fff,a0 ;Clr bit 15 + addxy a1,a0 + rets + + +******************************** +*GETANIX - GET ANIMATION POINT X COORD +*CALLING PARMS: A8=OBJECT +*RETURNS A0=16 BIT WORLD COORD OF UPPER LEFT + +GETANIX + MMTM SP,A1,A2 + MOVE *A8(OIMG),A1,L + MOVE *A1(IANIOFF),A2 + MOVE *A8(OCTRL),A0 + BTST B_FLIPH,A0 + JRZ GETAX1 + MOVE *A1,A0 ;ISIZEX + SUB A2,A0 + DEC A0 + MOVE A0,A2 +GETAX1 MOVE *A8(OXPOS),A0 + ADD A2,A0 + MMFM SP,A1,A2 + RETS + + + +**************************************************************** +* Quickly produce a random # in range -X to +X +* A0=+X +* >A0=Random # (-A0 to +A0) (CC) +* Trashes scratch + + SUBR RNDRNGS + + move a0,a1 + neg a0 + + +******************************** +* Quickly produce a random # in a given range +* A0=Lower bound +* A1=Upper bound +* >A0=Random # (A0 to A1) (CC) +* Trashes scratch + + SUBR RNDRNG + + sub a0,a1 ;Normalize the range + addk 1,a1 + move a0,b0 + + move @RAND,a0,L + rl a0,a0 + move @HCOUNT,a14 + rl a14,a0 + add sp,a0 + move a0,@RAND,L + + mpyu a1,a0 + move b0,a1 + add a1,a0 + rets + + +******************************** +* Quickly produce a random # in range 0-X +* A0=X +* >A0=Random # (0 to A0) (No CC) +* Trashes scratch + + SUBR RNDRNG0 + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + addk 1,a0 + mpyu a1,a0 ;Condition codes not valid! + + rets + + +******************************** +* Random % routine +* A0=Probability of event (0-1000) (0=0%, 1000=100%) +* >A0=0-999 (CC) (jrls nope, jrhi happened) +* Trashes scratch + + SUBR RNDPER + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + move a0,a14 + movi 1000,a0 + mpyu a1,a0 ;0-999 + cmp a0,a14 + rets + + +************************************************************************** +* * +* FILLAREA - FILL A GIVEN SQUARE AREA ON THE SCREEN WITH A COLOR * +* A1 = [COLOR,PALETTE] * +* A3 = DAG OF AREA [YPOS,XPOS] * +* A4 = [Y,X] SIZE OF AREA * +* * +************************************************************************** +FILLAREA + PUSH a0,a1,a2,a4,a5,a14 + jruc areacon +************************************************************************** +* * +* BLNKAREA - BLANK A GIVEN SQUARE AREA ON THE SCREEN * +* A3 = DAG OF AREA [YPOS,XPOS] * +* A4 = [Y,X] SIZE OF AREA * +* * +************************************************************************** +BLNKAREA + PUSH a0,a1,a2,a4,a5,a14 + clr a1 ;constant 0:palette 0 +areacon + move a4,a2 + movi IROM,a4 ;Somewhere in image rom + movi DMACAL,a5 + calla QDMAN + PULL a0,a1,a2,a4,a5,a14 + rets + + +******************************** +* Wait till DIRQ +* Trashes A0-A1 + + SUBR dirq_wait + + move @dirqtimer,a0 +dirqwlp move @dirqtimer,a1 + cmp a0,a1 + jreq dirqwlp + rets + + +******************************** +* Wait on the DMA busy bit to clear +* Preserves A1 + + SUBRP dma_wait + +dwlp move @DMACTRL,b0 + jrn dwlp ;Busy? + rets + + +******************************** +* Wait for dma queue to empty, then wait for dma to finish +* the last one. Turn displayon off. + + SUBR dmaq_wait + + move @DISPLAYON,a1 + clr a0 + move a0,@DISPLAYON ;Display off + + move @DMACTRL,b0 + jrnn dqw20 +dqw10 move b13,b13 + jrge dqw10 +dqw20 callr dma_wait + move a1,@DISPLAYON + + rets + + +******************************** +* Turn page flipping and erasure off. Setup for page0 +* Trashes scratch + + SUBR dpageflip_off + + clr a0 + move a0,@dpageflip + not a0 + move a0,@dpage + movi -4,a0 ;Page0 + move a0,@DPYSTRT + + rets + +#******************************* +* Blank display by using HEBLNK +* Trashes scratch + + SUBRP display_blank + dint +#lp move @VCOUNT,a0 + cmpi EOSINT,a0 + jrlt #lp + move @HSBLNK,a0 ;Blank screen + move a0,@HEBLNK + eint + + rets + +#******************************* +* Unblank display by resetting HEBLNK +* Trashes scratch + + SUBRP display_unblank + + dint +#lp move @VCOUNT,a0 + cmpi EOSINT,a0 + jrlt #lp + movi HEBLNKINIT,a0 + move a0,@HEBLNK + eint + + rets + + +************************************************************************** +* * +* CRINIT - COLOR RAM INITIALIZATION, FIRST CLEAR ALL COLOR RAM, THEN * +* FILL WITH PALETTES. * +* * +************************************************************************** +CRINIT + MMTM SP,A0,A1,A2,A6 + MOVI COLRAM,A1 + CLR A0 + MOVI 10000H,A6,L +*CLEAR ALL COLOR PALETTES +CRINIT1 + MOVE A0,*A1+,L ;STUFF TWO WORDS AT A TIME + DSJS A6,CRINIT1 + + MMFM SP,A0,A1,A2,A6 + RETS + +************************************************************************** +* * +* CRLOAD - LOAD COLOR RAM FROM A ROM TABLE * +* A1 = START OF ROM TABLE * +* A2 = COLOR RAM START ADDRESS * +* A6 = PALETTE COUNT * +* * +************************************************************************** +CRLOAD + MMTM SP,A0,A1,A2 +CRLOAD1 + MOVE *A1+,A0,W ;GRAB FIRST COLOR FROM THIS TABLE + JRN CRLOAD4 ;BR = NULL PALETTE +CRLOAD3 + MOVE A0,*A2,W ;STUFF COLOR + MOVE *A1+,A0,W ;GRAB NEXT COLOR FROM THIS TABLE + JRN CRLOAD4 ;BR = NEXT PALETTE + ADDK 16,A2 ;INC THIS WAY SO WE DON'T OVERRUN PALETTES + JRUC CRLOAD3 + +CRLOAD4 + ADDI 1000H,A2 ;NEXT PALETTE + SRL 12,A2 + SLL 12,A2 ;MASK OFF LOW BULLSHIT + DSJ A6,CRLOAD1 + + MMFM SP,A0,A1,A2 + RETS + + +******************************** +* CLEAR THE SCREEN (Kill this, only used by diagnostics) +* only call with interrupts disabled and the dma shut down, otherwise +* use clr_scrn + +SCRCLR CLR A0 + + MMTM SP,A1,A2 + CLR A1 + MOVE A1,@CMAPSEL ;SELECT COLOR MAP 0 + MOVI SCREEN,A1 + MOVI (SCRNE-SCREEN)/32,A2 +SCRLP MOVE A0,*A1+,L + DSJS A2,SCRLP + + MMFM SP,A1,A2 + RETS + + + +******************************** +* Clear screen routine + + SUBR CLR_SCRN + + mmtm sp,a1,a2,a3 + move @DISPLAYON,a3 +; clr a1 +; move a1,@DISPLAYON + callr dmaq_wait ;wait on dma + clr a0 + move a0,@CMAPSEL ;Select color map 0 + movi SCREEN,a1,L + movi ((SCRNE-2000H)-SCREEN)/32,a2,L +clrlp move a0,*a1+,L + dsjs a2,clrlp + move a3,@DISPLAYON + mmfm sp,a1,a2,a3 + rets + + +******************************** +* Animation list processor (JSRP) +* A1=Mode: 0=Process current frame +* 1=Process to end of list +* 4=Process current frame, no sleep (time retrn'd in a0) +* A8=*Object +* A9=*Ani list +* Rets: +* C set if end of animation list was hit +* A9=* to next frame or end of list +* Trashes scratch +* +* Animation script format +* .long *Image header or 0 if end +* .word Sleep time <-- BITS 0 - 7 ARE THE SLEEP TIME +* <-- BITS 8 -15 ARE THE FLAGS: +* Bit # Flag +* ----- ---- +* 8-12 Unused +*BNEWPAL equ 13 13 New palette address is specified +*BFLIPBIT equ 14 14 New flip bits are specified +* Flag hierarchy: 15-8 +* Options should follow in this order + + +FRANIM + PUSHP a3,a4 + + cmpi ROM,a9 ;Check for bogus script pointer + jrlo franerr + + move a1,a3 ;A3=Mode + +franl move *a9+,a1,L + jrz frannd ;End? + + move *a8(OCTRL),a4 ;Current flags + move *a9+,a0 ;Sleep time + cmpi >100,a0 + jrlo fran2 ;Just sleep? + + PUSH a1,a2,a7 + + btst BFLIPBIT,a0 + jrz frannobi ;No flip? + move *a9+,a2 ;Get the new flip flags + andni (M_FLIPV|M_FLIPH),a4 ;Clear the current flip status + or a2,a4 ;Set flag bits + +frannobi + btst BNEWPAL,a0 + jrz frannopa ;No pal? + + move a0,a7 + move *a9+,a0,L ;Get *pal + calla pal_getf + jrz fran10 ;No palette available? + move a0,*a8(OPAL) ;Store new palette +fran10 + move a7,a0 +frannopa + PULL a1,a2,a7 + sll 32-8,a0 ;Kill special bits + srl 32-8,a0 + +fran2 + calla ANI ;Setup new animation + + cmpi 4,a3 + jreq fran3 ;One frame, no sleep? + + move a3,-*a12 + calla PRCSLP ;Sleep + move *a12+,a3 + jrnz franl ;Loop til end of list? + +fran3 + PULLP a3,a4 + clrc ;Clear end flag + RETP + +frannd + PULLP a3,a4 + setc ;Return with end flag set + RETP + + +franerr + .if DEBUG + LOCKUP + eint + .else + CALLERR 8,0 ;Bad franim list + .endif + jruc frannd + + +#*************************************************************** +* Animation list processor (Quick list version) (JSRP) +* A8=*Object +* A9=*FRANIM List +* Trashes A0-A4,A14,B0-B1 +* +* Script format +* .long *Image hdr or 0 if end +* .word Sleep time <-- BITS 0 - 7 ARE THE SLEEP TIME +* <-- BITS 8 -15 ARE THE FLAGS: +* BIT # FLAG +* ----- ---- +* 8-10,12 UNUSED +*BDELTAY equ 11 Word is added into YPOS +*BNEWPAL equ 13 New palette address is specified +*BFLIPBIT equ 14 New flip bits are specified +* Flag hierarchy: 15-8 Options should follow in this order + + +FRANIMQ + + cmpi ROM,a9 + jrhs frq80 ;Franim list OK? + + .if DEBUG + LOCKUP + eint + .else + CALLERR 8,0 ;Bad franim list + .endif + jruc #x + + +#lp move *a8(OCTRL),a4 ;Current flags + move *a9+,a0 ;Sleep time + cmpi >100,a0 + jrlo frq70 ;No special bits? + + btst BFLIPBIT,a0 ;New flip? + jrz frq40 + move *a9+,a2 ;Get the new flip flags + andni (M_FLIPV|M_FLIPH),a4 ;Clear the current flip status + or a2,a4 ;Set desired bits + +frq40 btst BNEWPAL,a0 ;New palette ? + jrz frq60 + + move a0,a2 + move a1,a3 + move *a9+,a0,L ;Get the palette address + calla pal_getf ;Get a color map assignment + jrz frq50 ;No palette available? + move a0,*a8(OPAL) ;Set new palette +frq50 move a2,a0 + move a3,a1 + +frq60 btst BDELTAY,a0 + jrz frq65 + move *a9+,a2 ;Get DY + move *a8(OYPOS),a3 + add a2,a3 + move a3,*a8(OYPOS) + +frq65 sll 32-8,a0 ;Kill special bits + srl 32-8,a0 + +frq70 calla ANI + calla PRCSLP ;Sleep + +frq80 move *a9+,a1,L ;Get frame + jrnz #lp + +#x RETP + + + +#***************************************************************************** +* Hardware security check code +* >A0=0 if OK +* Trashes scratch + +OFF .equ >7db0 +SEC .equ >1b14030-OFF +FAKEO .equ ->b00030+OFF + + SUBR security_chk + + PUSH a2,a3,a4 + clr a0 + movi 63,a3 +#lp move a3,a14 + callr #sc + or a2,a0 + subk 1,a3 + jrge #lp + PULL a2,a3,a4 + rets + +#sc + movi SEC+FAKEO,a1 + sll 15-5,a14 + add a14,a1 ;Add a bogus offset + subi FAKEO,a1 + move a14,*a1(OFF) ;Write 1 of 64 to sec + sub a14,a1 ;Sub offset so we read a different address + move *a1(OFF),a2 ;Read 1st sec value + sll 32-15,a2 + srl 32-6,a2 + sll 9,a2 ;Move to bits 9-14 + xor a14,a2 + sll 32-15,a2 ;Remove top bits + jrnz #x ;Bad value? + + add a14,a1 + srl 2+3,a14 + add a14,a1 + pushst + setf 6,0,0 + move *a1(OFF+9),a2 ;Read 2nd sec value + move a2,b1 + sll 24,b1 + getpc a4 + addi #sec_t-$,a4,W + add a4,a14 + move *a1(OFF+>19),a2 ;Read 3rd sec value + move a2,b0 + sll 16,b0 + or b0,b1 + move *a1(OFF+>29),a2 ;Read 4th sec value + move a2,b0 + sll 8,b0 + or b0,b1 + move *a1(OFF+>39),a2 ;Read 5th sec value + move a2,b0 + or b0,b1 + popst + move *a14+,a2,L + move b1,a1 + andi >3f3f3f3f,a1 + xor a1,a2 ;A2=0 if OK + +#x rets + + +#sec_t .long >21283b3b ;0 + .long >2439383b + .long >31283b3b + .long >302b3938 + .long >31283b3b + .long >302b3938 + .long >232f2f2f + .long >26383b3b + .long >21283b3b ;20 + .long >2439383b + .long >312a1224 + .long >302b1120 + .long >312a1224 + .long >302b1120 + .long >232d283b + .long >26383b3b + .long >2b3b3b3b ;40 + .long >2e2e2e2e + .long >39383b1b + .long >383b3b1b + .long >3b3b3b1b + .long >3a3a3a1a + .long >2b3b3b3b + .long >2e2e2e2e + .long >2b39383b ;60 + .long >2e2e2e2e + .long >393a1a18 + .long >383b1b1b + .long >3b3b1b1b + .long >3a3a1a18 + .long >2b39383b + .long >2e2e2e2e + .long >01202b3b ;80 + .long >0431283b + .long >11202b3b + .long >1021283b + .long >11202b3b + .long >1021283b + .long >03273b3b + .long >06302b39 + .long >09302b39 ;A0 + .long >0c232f2f + .long >19322e06 + .long >18312a12 + .long >19322e06 + .long >18312a12 + .long >0b31283b + .long >0e26383b + .long >03273b3b ;C0 + .long >06302b39 + .long >11202b3b + .long >1021283b + .long >13273938 + .long >12243938 + .long >03273b3b + .long >06302b39 + .long >0b31283b ;E0 + .long >0e26383b + .long >19322e06 + .long >18312a12 + .long >1b332f05 + .long >1a302b11 + .long >0b31283b + .long >0e26383b + .def secend +secend + + +#*************************************************************** +* Shake screen as if an earthquake is in effect (horizontally) +* A10 = # ticks to shake and power of shake +* Note: time to shake must be more than 6 ticks + + BSSX #SHK_ON,16 ;is a shake in progress? + BSSX #X_ADJ,32 ;current deviation from rest + + SUBR HORZ_SHAKER2 + + ;check for a valid a10 + move a10,a10 + jrn #done + jrz #done + + move @#SHK_ON,a0 + jrz #no_shake + + ;abort shake currently in progress + movi HZSHAKE_PID,a0 + calla KIL1C + move @#X_ADJ,a14 + move @WORLDTLX,a0,L + sub a14,a0 + move a0,@WORLDTLX,L + +#no_shake + ;set the 'in progress' flag + movk 1,a14 + move a14,@#SHK_ON + + ;create the shaker process + CREATE HZSHAKE_PID,#shaker + +#done + rets + +#shaker + ;a9 = index into sine table + ;a10 = time left + ;a11 = original time left + + ;initialize + movi #last_entry,a9 + move a10,a11 + +#loop + ;calculate the new offset + + ;get the cosine + move a9,a14 + X16 a14 + addi #sine_table,a14 + move *a14,a0,W + + ;get the exp (index is 64 - (64 * a10 / a11) + move a10,a1 + X64 a1 + divu a11,a1 + neg a1 + addi 64,a1 + X16 a1 + addi #exp_table,a1 + move *a1,a1,W + + ;multiply + mpys a0,a1 + + ;scale + sra 5,a1 + mpyu a11,a1 + + move a1,@#X_ADJ,L + + ;update the table pointer + dsj a9,#table_ok + movi #last_entry,a9 +#table_ok + + ;apply it + move @WORLDTLX,a14,L + add a14,a1 + move a1,@WORLDTLX,L + + ;nap + SLEEPK 1 + + ;undo it + move @#X_ADJ,a14,L + move @WORLDTLX,a1,L + sub a14,a1 + move a1,@WORLDTLX,L + + ;loop + dsj a10,#loop + + ;all done + clr a14 + move a14,@#SHK_ON + move a14,@#X_ADJ + DIE + +#sine_table ;deg + .word -601 ;324 + .word -973 ;288 + .word -973 ;252 + .word -601 ;216 + .word 0 ;180 + .word 602 ;144 + .word 974 ;108 + .word 974 ;72 + .word 602 ;36 + .word 0 ;0 +#last_entry equ 9 + + ;values of e^(-x) for values from 0 to 7, in 64 divisions + ; e.g. e^-1.5 is the 32nd entry + ; all values are multiplied by 1024 +#exp_table ;damps at speed 5 + .word 1024,945,873,807,745,688,636,587 + .word 542,501,463,427,395,364,337,311 + .word 287,265,245,226,209,193,178,165 + .word 152,140,130,120,110,102,94,87 + .word 80,74,68,63,58,54,50,46 + .word 42,39,36,33,31,28,26,24 + .word 22,20,19,17,16,15,14,13 + .word 12,11,10,9,8,8,7,6 + +#*************************************************************** +* Shake screen as if an earthquake is in effect +* A10 = # ticks to shake and power of shake +* Note: time to shake must be more than 6 ticks + + BSSX #SHK_ON,16 ;is a shake in progress? + BSSX #Y_ADJ,32 ;current deviation from rest + + SUBR SHAKER2 + + ;check for a valid a10 + move a10,a10 + jrn #done + jrz #done + + move @#SHK_ON,a0 + jrz #no_shake + + ;abort shake currently in progress + movi SHAKE_PID,a0 + calla KIL1C + move @#Y_ADJ,a14 + move @WORLDTLY,a0,L + sub a14,a0 + move a0,@WORLDTLY,L + +#no_shake + ;set the 'in progress' flag + movk 1,a14 + move a14,@#SHK_ON + + ;create the shaker process + CREATE SHAKE_PID,#shaker + +#done + rets + +#shaker + ;a9 = index into sine table + ;a10 = time left + ;a11 = original time left + + ;initialize + movi #last_entry,a9 + move a10,a11 + +#loop + ;calculate the new offset + + ;get the cosine + move a9,a14 + X16 a14 +; addi #cosine_table,a14 + addi #sine_table,a14 + move *a14,a0,W + + ;get the exp (index is 64 - (64 * a10 / a11) + move a10,a1 + X64 a1 + divu a11,a1 + neg a1 + addi 64,a1 + X16 a1 + addi #exp_table,a1 + move *a1,a1,W + + ;multiply + mpys a0,a1 + + ;scale + sra 5,a1 + mpyu a11,a1 + + move a1,@#Y_ADJ,L + + ;update the table pointer + dsj a9,#table_ok + movi #last_entry,a9 +#table_ok + + ;apply it + move @WORLDTLY,a14,L + add a14,a1 + move a1,@WORLDTLY,L + + ;nap + SLEEPK 1 + + ;undo it + move @#Y_ADJ,a14,L + move @WORLDTLY,a1,L + sub a14,a1 + move a1,@WORLDTLY,L + + ;loop + dsj a10,#loop + + ;all done + clr a14 + move a14,@#SHK_ON + move a14,@#Y_ADJ + DIE + + ;45-degree increments +;#cosine_table ;deg +; .word 724 ;315 +; .word 0 ;270 +;#sine_table ;deg +; .word -723 ;225 ;315 +; .word -1023 ;180 ;270 +; .word -723 ;135 ;225 +; .word 0 ;90 ;180 +; .word 724 ;45 ;135 +; .word 1024 ;0 ;90 +; .word 724 ;45 +; .word 0 ;0 +;#last_entry equ 7 + + ;36-degree increments +#cosine_table ;deg + .word 828 ;324 + .word 316 ;288 + .word -315 ;252 + .word -827 ;216 + .word -102 ;180 + .word -827 ;144 + .word -315 ;108 + .word 316 ;72 + .word 828 ;36 + .word 1024 ;0 + +#sine_table ;deg + .word -601 ;324 + .word -973 ;288 + .word -973 ;252 + .word -601 ;216 + .word 0 ;180 + .word 602 ;144 + .word 974 ;108 + .word 974 ;72 + .word 602 ;36 + .word 0 ;0 +#last_entry equ 9 + + ;30-degree increments +;#cosine_table ;deg +; .word 887 ;330 +; .word 512 ;300 +; .word 0 ;270 +;#sine_table ;deg +; .word -511 ;240 ;330 +; .word -886 ;210 ;300 +; .word -1023 ;180 ;270 +; .word -886 ;150 ;240 +; .word -511 ;120 ;210 +; .word 0 ;90 ;180 +; .word 512 ;60 ;150 +; .word 887 ;30 ;120 +; .word 1024 ;0 ;90 +; .word 887 ;60 +; .word 512 ;30 +; .word 0 ;0 +;#last_entry equ 11 + + ;values of e^(-x) for values from 0 to 7, in 64 divisions + ; e.g. e^-1.5 is the 32nd entry + ; all values are multiplied by 1024 +;#exp_table ;damps at speed 7 +; .word 1024,916,819,733,656,587,525,470 +; .word 420,376,337,301,269,241,216,193 +; .word 173,154,138,124,110,99,88,79 +; .word 71,63,56,50,45,40,36,32 +; .word 29,26,23,20,18,16,15,13 +; .word 12,10,9,8,7,6,6,5 +; .word 4,4,3,3,3,2,2,2 +; .word 2,1,1,1,1,1,1,0 + +;#exp_table ;damps at speed 6 +; .word 1024,930,846,769,699,636,578,525 +; .word 477,434,395,359,326,296,269,245 +; .word 223,202,184,167,152,138,125,114 +; .word 104,94,86,78,71,64,58,53 +; .word 48,44,40,36,33,30,27,24 +; .word 22,20,18,17,15,14,12,11 +; .word 10,9,8,7,7,6,5,5 +; .word 4,4,4,3,3,3,2,2 + +#exp_table ;damps at speed 5 + .word 1024,945,873,807,745,688,636,587 + .word 542,501,463,427,395,364,337,311 + .word 287,265,245,226,209,193,178,165 + .word 152,140,130,120,110,102,94,87 + .word 80,74,68,63,58,54,50,46 + .word 42,39,36,33,31,28,26,24 + .word 22,20,19,17,16,15,14,13 + .word 12,11,10,9,8,8,7,6 + +;#exp_table ;damps at speed 2 +; .word 1024,992,961,930,901,873,846,819 +; .word 794,769,745,722,699,677,656,636 +; .word 616,596,578,560,542,525,509,493 +; .word 477,463,448,434,420,407,395,382 +; .word 370,359,347,337,326,316,306,296 +; .word 287,278,269,261,253,245,237,230 +; .word 223,216,209,202,196,190,184,178 +; .word 173,167,162,157,152,147,143,138 + + +;original Shawn shaker + + .BSS AMP,16 + .BSS AMPCNT,16 + .BSS XSET,16 + .BSS YSET,16 + .BSS SHK_ON,16 + + SUBR SHAKER + + move @SHK_ON,a0 + jrnz #x + move a10,a11 + movk 2,a0 + move a0,@SHK_ON + divs a0,a11 + movk 6,a0 + move a0,@AMP + move a11,@AMPCNT + + CREATE0 shakelp +#x RETS + +;only shake vertically + +shakelp + .if 0 + move @AMP,a0 + calla RNDRNG0 + move a0,@XSET + move @AMP,a0 + calla RNDRNG0 + move a0,@YSET + move @HCOUNT,a14 + btst 0,a14 + jrz #shakey + + move @XSET,a1 + move @WORLDTLX,a0,L + sll 16,a1 + add a1,a0 + move a0,@WORLDTLX,L + SLEEPK 1 + move @XSET,a1 + move @WORLDTLX,a0,L + sll 16,a1 + sub a1,a0 + move a0,@WORLDTLX,L + jruc shakelp + .endif + +#shakey + move @AMP,a0 + calla RNDRNG0 + move a0,@YSET + + move @YSET,a1 + move @WORLDTLY,a0,L + sll 16,a1 + add a1,a0 + move a0,@WORLDTLY,L + SLEEPK 1 + move @YSET,a1 + move @WORLDTLY,a0,L + sll 16,a1 + sub a1,a0 + move a0,@WORLDTLY,L + move @AMPCNT,a2 + dec a2 + move a2,@AMPCNT + jrnz #ampok + move a11,@AMPCNT + move @AMP,a0 + cmpi 1,a0 + jrz #ampok + dec a0 + move a0,@AMP +#ampok + dsj a10,shakelp + move a10,@SHK_ON + + DIE + +#***************************************************************************** +* +* RETURN: a0 = start button bits +*----------------------------------------------------------------------------- + + SUBR get_all_starts_cur + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_start_cur + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_start_cur + or a0,a1 +#no_player2 + + move a1,a0 + rets + +#***************************************************************************** +* +* RETURN: a0 = start button bits +*----------------------------------------------------------------------------- + + SUBR get_all_starts_down + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_start_down + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_start_down + or a0,a1 +#no_player2 + + move a1,a0 + rets + +#***************************************************************************** +* +* RETURN: a0 = start bit +*----------------------------------------------------------------------------- + + SUBR get_start_cur + + sll 4,a0 ;x 16 bits + addi start_offs,a0 + move *a0,a0 + addi switches_cur,a0 + move *a0,a0 + andi 1,a0 + rets + +#***************************************************************************** +* +* RETURN: a0 = start bit +*----------------------------------------------------------------------------- + + SUBR get_start_down + + sll 4,a0 ;x 16 bits + addi start_offs,a0 + move *a0,a0 + addi switches_down,a0 + move *a0,a0 + andi 1,a0 + rets + + +start_offs .word 12h,15h + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_sticks_cur + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_stick_val_cur + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_stick_val_cur + or a0,a1 +#no_player2 + + move a1,a0 + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_sticks_cur2 + + clr a1 + + clr a0 ;player 1 + calla get_stick_val_cur + or a0,a1 + + movk 1,a0 ;player 2 + calla get_stick_val_cur + or a0,a1 + + move a1,a0 + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_sticks_down + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_stick_val_down + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_stick_val_down + or a0,a1 +#no_player2 + + move a1,a0 + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_sticks_down2 + + clr a1 + + clr a0 ;player 1 + calla get_stick_val_down + or a0,a1 + + movk 1,a0 + calla get_stick_val_down ;player 2 + or a0,a1 + + move a1,a0 + + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_buttons_cur + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_but_val_cur + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_but_val_cur + or a0,a1 +#no_player2 + + move a1,a0 + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_buttons_cur2 + + clr a1 + clr a0 ;player 1 + calla get_but_val_cur + or a0,a1 + movk 1,a0 ;player 2 + calla get_but_val_cur + or a0,a1 + move a1,a0 + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_buttons_down + + clr a1 + + move @PSTATUS,a2 + + btst 0,a2 + jrz #no_player1 + clr a0 ;player 1 + calla get_but_val_down + or a0,a1 +#no_player1 + + btst 1,a2 + jrz #no_player2 + movk 1,a0 ;player 2 + calla get_but_val_down + or a0,a1 +#no_player2 + + move a1,a0 + rets + + +#***************************************************************************** +* +* RETURN: a0 = joy switch bits +*----------------------------------------------------------------------------- + + SUBR get_all_buttons_down2 + + clr a1 + clr a0 ;player 1 + calla get_but_val_down + or a0,a1 + movk 1,a0 ;player 2 + calla get_but_val_down + or a0,a1 + move a1,a0 + rets + +#***************************************************************************** +* Get random # with mask +* A0=Mask +* >A0=Rnd # (Pass CC) +* Trashes scratch + + SUBRP rnd + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + and a1,a0 + rets + + +#***************************************************************************** +* Quickly produce a random # in range 0-X +* A0=X +* >A0=Random # (0 to A0) (No CC) +* Trashes scratch + + SUBR rndrng0 + + move @RAND,a1,L + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + addk 1,a0 + mpyu a1,a0 ;Condition codes not valid! + + rets + + + .if DEBUG + +#***************************************************************************** + + SUBR tint_on + + PUSH a0,a1 + movi 07fffh,a0 ;all bits on (5 bits RGB (white)) + movi COLRAM,a1 ;base address of colour ram + move a0,*a1 ;restore colour + PULL a0,a1 + rets + +#***************************************************************************** + + SUBR tint_off + + PUSH a0,a1 + clr a0 ;all bits off (black) + movi 8<<10+8<<5+8,a0 ;grey + movi COLRAM,a1 ;base address of colour ram + move a0,*a1 ;restore colour + PULL a0,a1 + rets + + .endif + + +#***************************************************************************** +* Change an objects image (Doesn't check VFLIP) +* A0=*New image +* A1=New flip flags & const +* A8=*Obj +* Trashes scratch + + SUBR civanic + + move *a8(OCTRL),a1,W + + SUBR civani + + cmpi ROM,a0 + jrlo #anierr + + ;set new anim points + move *a0(IANIOFFX),*a8(ODXOFF),W + move *a0(IANIOFFY),*a8(ODYOFF),W + + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + setf 5,0,0 + move *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 6,0,0 + move a1,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + +#x rets + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,2 + .endif + jruc #x + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/VERSIONS.DOC b/VERSIONS.DOC new file mode 100755 index 0000000..e57ad6d --- /dev/null +++ b/VERSIONS.DOC @@ -0,0 +1,16 @@ +2.01 Tues 6 Jun Initial release. + +2.02 Thurs 8 Jun Endgame stories added. + Fixed a bug that cut many combos short. + Buddy mode powerup didn't work. Fixed. + Various minor bug fixes. + +2.03 ??? Fixed a problem with a new watchdog part. + +3.00 Fri 23 Jun Test version only -- never released. + Attract AAMA transition crash bug fixed. + Various minor bug fixes. + Lots of gameplay tweaking. + +3.01 Tues 27 Jun Various tweaks and bug fixes. + Buy-in during fireworks bug fixed. diff --git a/WORST.ASM b/WORST.ASM new file mode 100755 index 0000000..3be7277 --- /dev/null +++ b/WORST.ASM @@ -0,0 +1,94 @@ +09330 display.obj (.text) +04570 main.obj (.text) +083c0 util.obj (.text) +03420 pal.obj (.text) +01990 mproc.obj (.text) +02290 bakgnd.obj (.text) +07240 bamimg.obj (.text) +06120 bretimg.obj (.text) +06d00 doinkimg.obj (.text) +069a0 leximg.obj (.text) +065e0 razorimg.obj (.text) +06c60 shawnimg.obj (.text) +06c00 takerimg.obj (.text) +06e20 yokoimg.obj (.text) +17260 wrestle.obj (.text) +0f1b0 wrestle2.obj (.text) +103c0 anim.obj (.text) +252a0 special.obj (.text) +02460 getup.obj (.text) +10f30 drone.obj (.text) +076a0 award.obj (.text) +16d80 dcssound.obj (.text) +008f0 patch.obj (.text) +01740 text.obj (.text) +144a0 attract.obj (.text) +01ca0 unzip.obj (.text) +0dae0 string.obj (.text) +200e0 square.obj (.text) +05a80 adjust.obj (.text) +0ae10 audit.obj (.text) +0e650 test.obj (.text) +1e890 diag.obj (.text) +17cc0 menu.obj (.text) +11780 hstd.obj (.text) +0ea20 select.obj (.text) +152d0 robo.obj (.text) +027e0 tables.obj (.text) +0f4e0 ropes.obj (.text) +17b10 lifebar.obj (.text) +0a6e0 coll2.obj (.text) +04a30 screen.obj (.text) +14cc0 progress.obj (.text) +09be0 react1.obj (.text) +02830 react2.obj (.text) +02710 react3.obj (.text) +03d00 react4.obj (.text) +04b90 react5.obj (.text) +00020 react6.obj (.text) +00050 react7.obj (.text) +016b0 react8.obj (.text) +01690 react9.obj (.text) +17040 bam.obj (.text) +154d0 bret.obj (.text) +1a7a0 doink.obj (.text) +14170 razor.obj (.text) +14f90 lex.obj (.text) +186a0 shawn.obj (.text) +17080 taker.obj (.text) +15840 yoko.obj (.text) +040e0 bamseq1.obj (.text) +23e70 bamseq2.obj (.text) +1ad80 bamseq3.obj (.text) +01040 bamseq4.obj (.text) +045e0 dnkseq1.obj (.text) +251c0 dnkseq2.obj (.text) +17810 dnkseq3.obj (.text) +00fe0 dnkseq4.obj (.text) +042a0 hrtseq1.obj (.text) +16a10 hrtseq2.obj (.text) +194a0 hrtseq3.obj (.text) +0db90 hrtseq4.obj (.text) +04a80 lexseq1.obj (.text) +167d0 lexseq2.obj (.text) +1bbd0 lexseq3.obj (.text) +06e20 lexseq4.obj (.text) +04780 rzrseq1.obj (.text) +16db0 rzrseq2.obj (.text) +1b9b0 rzrseq3.obj (.text) +09180 rzrseq4.obj (.text) +04360 shnseq1.obj (.text) +11610 shnseq2.obj (.text) +243a0 shnseq3.obj (.text) +0a750 shnseq4.obj (.text) +03650 undseq1.obj (.text) +1f220 undseq2.obj (.text) +1de70 undseq3.obj (.text) +020b0 undseq4.obj (.text) +039f0 yokseq1.obj (.text) +16490 yokseq2.obj (.text) +1fa50 yokseq3.obj (.text) +088c0 yokseq4.obj (.text) +03450 collis.obj (.text) +05ed0 crowd.obj (.text) + \ No newline at end of file diff --git a/WORST2.ASM b/WORST2.ASM new file mode 100755 index 0000000..8445c0c --- /dev/null +++ b/WORST2.ASM @@ -0,0 +1,38 @@ +103c0 anim.obj (.text) +10f30 drone.obj (.text) +11610 shnseq2.obj (.text) +11780 hstd.obj (.text) +14170 razor.obj (.text) +144a0 attract.obj (.text) +14cc0 progress.obj (.text) +14f90 lex.obj (.text) +152d0 robo.obj (.text) +154d0 bret.obj (.text) +15840 yoko.obj (.text) +16490 yokseq2.obj (.text) +167d0 lexseq2.obj (.text) +16a10 hrtseq2.obj (.text) +16d80 dcssound.obj (.text) +16db0 rzrseq2.obj (.text) +17040 bam.obj (.text) +17080 taker.obj (.text) +17260 wrestle.obj (.text) +17810 dnkseq3.obj (.text) +17b10 lifebar.obj (.text) +17cc0 menu.obj (.text) +186a0 shawn.obj (.text) +194a0 hrtseq3.obj (.text) +1a7a0 doink.obj (.text) +1ad80 bamseq3.obj (.text) +1b9b0 rzrseq3.obj (.text) +1bbd0 lexseq3.obj (.text) +1de70 undseq3.obj (.text) +1e890 diag.obj (.text) +1f220 undseq2.obj (.text) +1fa50 yokseq3.obj (.text) +200e0 square.obj (.text) +23e70 bamseq2.obj (.text) +243a0 shnseq3.obj (.text) +251c0 dnkseq2.obj (.text) +252a0 special.obj (.text) + \ No newline at end of file diff --git a/WRESPAL.ASM b/WRESPAL.ASM new file mode 100755 index 0000000..ae916e9 --- /dev/null +++ b/WRESPAL.ASM @@ -0,0 +1,780 @@ + .FILE "wrespal.asm" + .OPTION B,D,L,T + + .include "macros.h" + + .DATA + .even + + SUBR HRTPNK_P + + .word 64 + .word 00000h,07f9ah,07b16h,07ef3h,076b2h,06e90h,06e6fh,06670h + .word 06a4eh,0624eh,0662dh,05e2eh,0660bh,05e0ch,05debh,055edh + .word 051cah,05586h,04daah,04988h,04967h,04126h,03d25h,03904h + .word 034e4h,030a2h,02ca3h,02482h,02441h,01863h,01021h,00800h + .word 07fffh,077bdh,06f7bh,06739h,05ef7h,056b5h,04e73h,04631h + .word 03defh,035adh,02d6bh,02529h,01ce7h,014a5h,00c63h,00421h + .word 07f5fh,07edeh,07e5dh,079dah,07977h,07135h,06d13h,068f2h + .word 060b1h,05c90h,0586fh,0502dh,0480bh,0400ah,03406h,02c03h + + SUBR HRTBLU_P + .word 64 + .word 00000h,07f9ah,07b16h,07ef3h,076b2h,06e90h,06e6fh,06670h + .word 06a4eh,0624eh,0662dh,05e2eh,0660bh,05e0ch,05debh,055edh + .word 051cah,05586h,04daah,04988h,04967h,04126h,03d25h,03904h + .word 034e4h,030a2h,02ca3h,02482h,02441h,01863h,01021h,00800h + .word 07fffh,077bdh,06f7bh,06739h,05ef7h,056b5h,04e73h,04631h + .word 03defh,035adh,02d6bh,02529h,01ce7h,014a5h,00c63h,00421h + .word 02fbfh,02b3fh,02abeh,0263bh,025d8h,01d96h,01974h,01553h + .word 00d12h,008f1h,004d0h,0008eh,0006ch,0004bh,00027h,00024h + + SUBR HRTGRN_P + .word 64 + .word 00H,07F9AH,07B16H,07EF3H,076B2H,06E90H,06E6FH,06670H + .word 06A4EH,0624EH,0662DH,05E2EH,0660BH,05E0CH,05DEBH,055EDH + .word 051CAH,05586H,04DAAH,04988H,04967H,04126H,03D25H,03904H + .word 034E4H,030A2H,02CA3H,02482H,02441H,01863H,01021H,0800H + .word 07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04E73H,04631H + .word 03DEFH,035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + .word 06B7AH,05755H,04330H,02F2BH,01F07H,0EE3H,02C0H,0280H + .word 0260H,0220H,01E0H,01A0H,0180H,0140H,0100H,0E0H + + SUBR HRTPRP_P + .word 64 + .word 00H,07F9AH,07B16H,07EF3H,076B2H,06E90H,06E6FH,06670H + .word 06A4EH,0624EH,0662DH,05E2EH,0660BH,05E0CH,05DEBH,055EDH + .word 051CAH,05586H,04DAAH,04988H,04967H,04126H,03D25H,03904H + .word 034E4H,030A2H,02CA3H,02482H,02441H,01863H,01021H,0800H + .word 07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04E73H,04631H + .word 03DEFH,035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + .word 06F7BH,06ADBH,06A5BH,065BBH,0613BH,0609BH,05C3BH,05018H + .word 04816H,04013H,03410H,02C0EH,0240BH,01C08H,01006H,0803H + + SUBR RZRPRP_P + .word 64 + .word 00000h,07fdeh,04a50h,041edh,035cdh,02d8ch,01d07h,018e6h + .word 014c5h,010a4h,00c83h,00862h,00821h,00000h,07ffeh,07fdah + .word 07f98h,07f55h,07f54h,07f35h,07f12h,07ef3h,07ed0h,07ed1h + .word 07ad2h,07eafh,07e8eh,07290h,0766eh,0724eh,06a4eh,06e2dh + .word 0620ch,065eah,05debh,05dcah,059cah,055a8h,05188h,04d67h + .word 04125h,04502h,038e3h,03461h,02061h,01c20h,01000h,07fe8h + .word 07fa0h,07ee0h,065e0h,03d80h,0701ch,06419h,05415h,04812h + .word 04010h,0380eh,0340dh,0300ch,02c0bh,02409h,01c07h,01405h + + .if 0 + SUBR RZRGRN_P + .word 64 + .word 00000h,07fdeh,04a50h,041edh,035cdh,02d8ch,01d07h,018e6h + .word 014c5h,010a4h,00c83h,00862h,00821h,00000h,07ffeh,07fdah + .word 07f98h,07f55h,07f54h,07f35h,07f12h,07ef3h,07ed0h,07ed1h + .word 07ad2h,07eafh,07e8eh,07290h,0766eh,0724eh,06a4eh,06e2dh + .word 0620ch,065eah,05debh,05dcah,059cah,055a8h,05188h,04d67h + .word 04125h,04502h,038e3h,03461h,02061h,01c20h,01000h,07fe8h + .word 07fa0h,07ee0h,065e0h,03d80h,00785h,00323h,002a1h,00240h + .word 00200h,001c0h,001a0h,00180h,00160h,00120h,000e0h,000a0h + .endif + + SUBR RZRRED_P + .word 64 + .word 00H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 014C5H,010A4H,0C83H,0862H,0821H,00H,07FFEH,07FDAH + .word 07F98H,07F55H,07F54H,07F35H,07F12H,07EF3H,07ED0H,07ED1H + .word 07AD2H,07EAFH,07E8EH,07290H,0766EH,0724EH,06A4EH,06E2DH + .word 0620CH,065EAH,05DEBH,05DCAH,059CAH,055A8H,05188H,04D67H + .word 04125H,04502H,038E3H,03461H,02061H,01C20H,01000H,07FE8H + .word 07FA0H,07EE0H,065E0H,03D80H,07610H,0714AH,06CA5H,06C00H + .word 06000H,05400H,04800H,04000H,03400H,02800H,02000H,01400H + + SUBR RZRBLU_P + .word 64 + .word 00H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 014C5H,010A4H,0C83H,0862H,0821H,00H,07FFEH,07FDAH + .word 07F98H,07F55H,07F54H,07F35H,07F12H,07EF3H,07ED0H,07ED1H + .word 07AD2H,07EAFH,07E8EH,07290H,0766EH,0724EH,06A4EH,06E2DH + .word 0620CH,065EAH,05DEBH,05DCAH,059CAH,055A8H,05188H,04D67H + .word 04125H,04502H,038E3H,03461H,02061H,01C20H,01000H,07FE8H + .word 07FA0H,07EE0H,065E0H,03D80H,02E7EH,01E1DH,011BCH,095AH + .word 0119H,0D6H,093H,070H,04DH,02AH,027H,025H + + SUBR UNDNEG_P + .word 64 + .word 00000h,00000h,00421h,00842h,00c63h,014a5h,018c6h,01ce7h + .word 02529h,0294ah,0318ch,035adh,039ceh,04210h,04631h,04a52h + .word 05294h,056b5h,05ef7h,06318h,06739h,06f7bh,0739ch,00421h + .word 00842h,00c63h,014a5h,018c6h,01ce7h,02108h,0294ah,02d6bh + .word 0318ch,039ceh,03defh,04210h,04a52h,04e73h,05294h,05ad6h + .word 05ef7h,06318h,06b5ah,06f7bh,0739ch,07bdeh,00421h,00842h + .word 01084h,014a5h,01ce7h,02529h,0294ah,0318ch,035adh,03defh + .word 04210h,04a52h,05294h,056b5h,05ef7h,06318h,06b5ah,0739ch + + .if 0 + SUBR UNDPRP_P + .word 64 + .word 018d5h,07bbbh,07b77h,076f3h,06eb0h,0666fh,05e2dh,051ebh + .word 049cbh,045a9h,04167h,03947h,03d25h,03d03h,03105h,030e3h + .word 028c3h,02c80h,02081h,01861h,01840h,01420h,00c00h,07fffh + .word 06b39h,06717h,062f6h,05ad5h,05272h,04a51h,0420fh,03deeh + .word 039cdh,035ach,0318bh,0316ah,02949h,02107h,01ce6h,014c5h + .word 014a4h,00c83h,00862h,00841h,00441h,00420h,0781eh,0701ch + .word 0681ah,06419h,05c17h,05415h,05014h,04812h,04010h,0380eh + .word 0340dh,02c0bh,02409h,02008h,01806h,01004h,00c03h,00401h + .endif + + SUBR UNDBLK_P + .word 64 + .word 018d5h,07bbbh,07b77h,076f3h,06eb0h,0666fh,05e2dh,051ebh + .word 049cbh,045a9h,04167h,03947h,03d25h,03d03h,03105h,030e3h + .word 028c3h,02c80h,02081h,01861h,01840h,01420h,00c00h,07fffh + .word 06b39h,06717h,062f6h,05ad5h,05272h,04a51h,0420fh,03deeh + .word 039cdh,035ach,0318bh,0316ah,02949h,02107h,01ce6h,014c5h + .word 014a4h,00c83h,00862h,00841h,00441h,00420h,0739ch,06b5ah + .word 06318h,05ef7h,056b5h,05294h,04a52h,04631h,03defh,039ceh + .word 0318ch,0294ah,02529h,01ce7h,018c6h,01084h,00c63h,00421h + + SUBR UNDGRN_P + SUBR UNDBLU_P + .word 64 + .word 00H,07BBBH,07B77H,076F3H,06EB0H,0666FH,05E2DH,051EBH + .word 049CBH,045A9H,04167H,03947H,03D25H,03D03H,03105H,030E3H + .word 028C3H,02C80H,02081H,01861H,01840H,01420H,0C00H,07FFFH + .word 06B39H,06717H,062F6H,05AD5H,05272H,04A51H,0420FH,03DEEH + .word 039CDH,035ACH,0318BH,0316AH,02949H,02107H,01CE6H,014C5H + .word 014A4H,0C83H,0862H,0841H,0441H,0420H,0125FH,0E1FH + .word 09DFH,099FH,095FH,093DH,091BH,08F9H,095H,073H + .word 051H,02FH,02DH,0BH,09H,07H,06H,04H + + .if 0 + SUBR YOKRED_P + .word 64 + .word 00000h,07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04a52h + .word 04210h,039ceh,0318ch,0294ah,02108h,014a5h,00c63h,00421h + .word 00400h,07f9ah,07b14h,07ef1h,07acfh,076b0h,0768eh,06e4bh + .word 06a4dh,0622ch,0660bh,05a0ch,059eah,051a8h,05187h,04988h + .word 04966h,04124h,04102h,03904h,038e2h,030a1h,03480h,02881h + .word 02840h,02400h,01400h,07e91h,07daah,07905h,070c3h,06ce4h + .word 064a2h,06081h,05ca2h,05860h,05840h,05460h,05040h,04c60h + .word 04c40h,04420h,04000h,03c20h,03c00h,03400h,02c00h,02000h + .endif + + SUBR YOKPRP_P + .word 64 + .word 00000h,07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04a52h + .word 04210h,039ceh,0318ch,0294ah,02108h,014a5h,00c63h,00421h + .word 00400h,07f9ah,07b14h,07ef1h,07acfh,076b0h,0768eh,06e4bh + .word 06a4dh,0622ch,0660bh,05a0ch,059eah,051a8h,05187h,04988h + .word 04966h,04124h,04102h,03904h,038e2h,030a1h,03480h,02881h + .word 02840h,02400h,01400h,06e9bh,06dbbh,0691ah,060d8h,05cf7h + .word 054b5h,05094h,04cb3h,04872h,04852h,04471h,04050h,03c6fh + .word 03c4fh,0342dh,0300ch,02c2bh,02c0bh,02409h,01c07h,01004h + + SUBR YOKBLU_P + .word 64 + .word 00H,07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04A52H + .word 04210H,039CEH,0318CH,0294AH,02108H,014A5H,0C63H,0421H + .word 0400H,07F9AH,07B14H,07EF1H,07ACFH,076B0H,0768EH,06E4BH + .word 06A4DH,0622CH,0660BH,05A0CH,059EAH,051A8H,05187H,04988H + .word 04966H,04124H,04102H,03904H,038E2H,030A1H,03480H,02881H + .word 02840H,02400H,01400H,0267FH,01E3FH,015DFH,0D9FH,053FH + .word 0DFH,0BEH,0BDH,09BH,079H,077H,056H,054H + .word 032H,030H,0FH,0DH,0BH,09H,08H,06H + + SUBR YOKGRN_P + .word 64 + .word 00H,07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04A52H + .word 04210H,039CEH,0318CH,0294AH,02108H,014A5H,0C63H,0421H + .word 0400H,07F9AH,07B14H,07EF1H,07ACFH,076B0H,0768EH,06E4BH + .word 06A4DH,0622CH,0660BH,05A0CH,059EAH,051A8H,05187H,04988H + .word 04966H,04124H,04102H,03904H,038E2H,030A1H,03480H,02881H + .word 02840H,02400H,01400H,043B0H,0338CH,02789H,01B66H,0B62H + .word 0340H,0320H,02E0H,02C0H,02A0H,0280H,0240H,0220H + .word 0200H,01C0H,01C0H,01A0H,0160H,0140H,0120H,0E0H + + .if 0 + SUBR SHNRED_P + .word 63 + .word 018d5h,07fddh,07f98h,07f58h,07f34h,07ad1h,07ab0h,0768fh + .word 06e90h,06e6eh,06e4dh,0622ch,05e0ch,059eah,05dc9h,055cah + .word 051a8h,04d89h,04d87h,04567h,04925h,04124h,03925h,03d03h + .word 038e2h,038c1h,030e4h,030c3h,03480h,02460h,02420h,01c40h + .word 01400h,00400h,076d6h,0720fh,06dabh,07128h,070c5h,06c42h + .word 06800h,06400h,05800h,05000h,04800h,03800h,02800h,01800h + .word 07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04631h,03defh + .word 035adh,02d6bh,02529h,01ce7h,014a5h,00c63h,00421h + .endif + + SUBR SHNPRP_P + .word 63 + .word 018d5h,07fddh,07f98h,07f58h,07f34h,07ad1h,07ab0h,0768fh + .word 06e90h,06e6eh,06e4dh,0622ch,05e0ch,059eah,05dc9h,055cah + .word 051a8h,04d89h,04d87h,04567h,04925h,04124h,03925h,03d03h + .word 038e2h,038c1h,030e4h,030c3h,03480h,02460h,02420h,01c40h + .word 01400h,00400h,076d6h,07210h,06dabh,064b9h,05c77h,05816h + .word 05415h,04c13h,04410h,03c0eh,0340ch,02409h,01405h,00401h + .word 07fffh,0739ch,06b5ah,06318h,05ad6h,05294h,04631h,03defh + .word 035adh,02d6bh,02529h,01ce7h,014a5h,00c63h,00421h + + SUBR SHNBLU_P + .word 64 + .word 00H,07FDDH,07F98H,07F58H,07F34H,07AD1H,07AB0H,0768FH + .word 06E90H,06E6EH,06E4DH,0622CH,05E0CH,059EAH,05DC9H,055CAH + .word 051A8H,04D89H,04D87H,04567H,04925H,04124H,03925H,03D03H + .word 038E2H,038C1H,030E4H,030C3H,03480H,02460H,02420H,01C40H + .word 01400H,0400H,06B5FH,052BFH,03A1EH,0259EH,0113DH,0FDH + .word 0DAH,0D7H,0D4H,0B1H,0AEH,08BH,068H,045H + .word 07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04631H,03DEFH + .word 035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H,00H + + SUBR SHNGRN_P + .word 64 + .word 00H,07FDDH,07F98H,07F58H,07F34H,07AD1H,07AB0H,0768FH + .word 06E90H,06E6EH,06E4DH,0622CH,05E0CH,059EAH,05DC9H,055CAH + .word 051A8H,04D89H,04D87H,04567H,04925H,04124H,03925H,03D03H + .word 038E2H,038C1H,030E4H,030C3H,03480H,02460H,02420H,01C40H + .word 01400H,0400H,063B8H,04F93H,0378DH,02368H,01344H,0340H + .word 02E0H,0280H,0220H,01C0H,0160H,0120H,0C0H,060H + .word 07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04631H,03DEFH + .word 035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H,00H + + .if 0 + SUBR BAMBLU_P + .word 64 + .word 000e7h,07fffh,04a52h,04210h,039ceh,0318ch,02d6bh,02529h + .word 01ce7h,014a5h,00c63h,00842h,07d46h,07126h,06cc2h,06126h + .word 060c4h,06c41h,060a2h,05c41h,05083h,04c41h,03c20h,03020h + .word 01800h,077fah,0327eh,01996h,00d59h,01153h,00512h,000f1h + .word 000cfh,0006dh,07f79h,07f55h,07b13h,07ad1h,0728fh,0766dh + .word 06a4dh,0626bh,065e9h,059c9h,05187h,04d87h,05165h,04585h + .word 04901h,04103h,03903h,034c1h,02840h,01000h,07befh,07fc2h + .word 07f82h,07ee1h,07e60h,07dc0h,07d20h,064e0h,04ca0h,04080h + .endif + + SUBR BAMFRE_P + .word 64 + .word 00000h,07d60h,07de0h,07e60h,07ee0h,07f60h,07fe0h,07f40h + .word 07ec0h,07e20h,07da0h,07d00h,07d60h,07dc0h,07e20h,07e80h + .word 07ee0h,07f20h,07f80h,07fe0h,07fa0h,07f60h,07f40h,07f00h + .word 07ec0h,07e80h,07e60h,07e20h,07de0h,07da0h,07d60h,07d40h + .word 07d80h,07dc0h,07e20h,07e60h,07ec0h,07f00h,07f40h,07fa0h + .word 07fe0h,07f80h,07f20h,07ea0h,07e40h,07de0h,07d80h,07d20h + .word 07d60h,07dc0h,07e20h,07e80h,07ee0h,07f20h,07f80h,07fe0h + .word 07f80h,07f20h,07ec0h,07e80h,07e20h,07dc0h,07d60h,07d00h + + SUBR BAMYLW_P + .word 64 + .word 000e7h,07fffh,04a52h,04210h,039ceh,0318ch,02d6bh,02529h + .word 01ce7h,014a5h,00c63h,00842h,07d46h,07126h,06cc2h,06126h + .word 060c4h,06c41h,060a2h,05c41h,05083h,04c41h,03c20h,03020h + .word 01800h,077f6h,077f1h,07bd0h,07fa7h,07f82h,06b01h,05a60h + .word 045e0h,03560h,07f79h,07f55h,07b13h,07ad1h,0728fh,0766dh + .word 06a4dh,0626bh,065e9h,059c9h,05187h,04d87h,05165h,04585h + .word 04901h,04103h,03903h,034c1h,02840h,01000h,07befh,07fc2h + .word 07f82h,07ee1h,07e60h,07dc0h,07d20h,064e0h,04ca0h,04080h + + SUBR BAMPRP_P + .word 64 + .word 00H,07FFFH,04A52H,04210H,039CEH,0318CH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0842H,07D46H,07126H,06CC2H,06126H + .word 060C4H,06C41H,060A2H,05C41H,05083H,04C41H,03C20H,03020H + .word 01800H,077FAH,07DDFH,07C1FH,0701CH,06419H,05816H,04C13H + .word 04010H,0340DH,07F79H,07F55H,07B13H,07AD1H,0728FH,0766DH + .word 06A4DH,0626BH,065E9H,059C9H,05187H,04D87H,05165H,04585H + .word 04901H,04103H,03903H,034C1H,02840H,01000H,07BEFH,07FC2H + .word 07F82H,07EE1H,07E60H,07DC0H,07D20H,064E0H,04CA0H,04080H + + SUBR BAMRED_P + .word 64 + .word 00H,07FFFH,04A52H,04210H,039CEH,0318CH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0842H,07D46H,07126H,06CC2H,06126H + .word 060C4H,06C41H,060A2H,05C41H,05083H,04C41H,03C20H,03020H + .word 01800H,077FAH,07D6BH,07C00H,07000H,06400H,05400H,04800H + .word 03C00H,03000H,07F79H,07F55H,07B13H,07AD1H,0728FH,0766DH + .word 06A4DH,0626BH,065E9H,059C9H,05187H,04D87H,05165H,04585H + .word 04901H,04103H,03903H,034C1H,02840H,01000H,07BEFH,07FC2H + .word 07F82H,07EE1H,07E60H,07DC0H,07D20H,064E0H,04CA0H,04080H + + SUBR DNKPRP_P + .word 64 + .word 0318ch,07fffh,06f7bh,05ef7h,04e73h,03defh,02d6bh,02529h + .word 01ce7h,014a5h,00c63h,00421h,07febh,07fa5h,07b41h,06ec0h + .word 06260h,03effh,02abfh,01a7ch,00a39h,00217h,001f4h,001b2h + .word 00170h,0012eh,000ech,004abh,0046ah,00468h,07ef9h,07e55h + .word 07dd1h,07cc8h,07400h,06c00h,06400h,05c00h,05400h,04c00h + .word 04400h,03800h,03000h,02021h,07fbfh,0769dh,06d9bh,064b9h + .word 05c17h,05014h,04812h,04010h,0340dh,02c0bh,02409h,01806h + .word 01004h,0626eh,05a0eh,045a9h,04566h,03926h,01c83h,01841h + + .if 0 + SUBR DNKBLU_P + .word 64 + .word 00000h,07fffh,06f7bh,05ef7h,04e73h,03defh,02d6bh,02529h + .word 01ce7h,014a5h,00c63h,00421h,07febh,07fa5h,07b41h,06ec0h + .word 06260h,05f8fh,0536bh,04748h,03705h,02ae3h,01ec0h,01a80h + .word 01640h,01600h,011c1h,01181h,00d41h,00d01h,07ef9h,07e55h + .word 07dd1h,07cc8h,07400h,06c00h,06400h,05c00h,05400h,04c00h + .word 04400h,03800h,03000h,02021h,067bfh,03afeh,0227dh,001bbh + .word 00179h,00136h,000f4h,000d2h,0008fh,0006dh,0004bh,00028h + .word 00027h,0626eh,05a0eh,045a9h,04566h,03926h,01c83h,01841h + .endif + + SUBR DNKGRN_P + .word 64 + .word 00H,07FFFH,06F7BH,05EF7H,04E73H,03DEFH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0421H,07FEBH,07FA5H,07B41H,06EC0H + .word 06260H,05F8FH,0536BH,04748H,03705H,02AE3H,01EC0H,01A80H + .word 01640H,01600H,011C1H,01181H,0D41H,0D01H,07EF9H,07E55H + .word 07DD1H,07CC8H,07400H,06C00H,06400H,05C00H,05400H,04C00H + .word 04400H,03800H,03000H,02021H,05FB7H,03B8EH,01765H,0340H + .word 0300H,02C0H,0280H,0240H,0200H,01A0H,0160H,0120H + .word 0E0H,0626EH,05A0EH,045A9H,04566H,03926H,01C83H,01841H + + SUBR DNKGRY_P + .word 64 + .word 00H,07FFFH,06F7BH,05EF7H,04E73H,03DEFH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0421H,07FEBH,07FA5H,07B41H,06EC0H + .word 06260H,05F8FH,0536BH,04748H,03705H,02AE3H,01EC0H,01A80H + .word 01640H,01600H,011C1H,01181H,0D41H,0D01H,07EF9H,07E55H + .word 07DD1H,07CC8H,07400H,06C00H,06400H,05C00H,05400H,04C00H + .word 04400H,03800H,03000H,02021H,06318H,05AD6H,05294H,04A52H + .word 04210H,039CEH,0318CH,0294AH,02529H,01CE7H,014A5H,0C63H + .word 0421H,0626EH,05A0EH,045A9H,04566H,03926H,01C83H,01841H + + .if 0 + SUBR LEXWHT_P + .word 64 + .word 00000h,07fddh,07fbch,07f55h,07af4h,07ab2h,07ab0h,07a6eh + .word 06e4dh,0722ch,06a2dh,0660dh,05e0dh,061ebh,05dc9h,059a9h + .word 05189h,05167h,04546h,04103h,03d04h,03505h,02cc3h,02c81h + .word 02440h,01800h,00400h,0529ah,039dbh,0319ah,02955h,018d1h + .word 0084dh,0042ah,06d8ch,06d07h,06863h,04c42h,03863h,03800h + .word 02800h,07bdeh,0739ch,06739h,056b5h,04631h,02529h,014a5h + .word 00c63h,07fffh,077bdh,06f7bh,06739h,05ef7h,05ad6h,05294h + .word 04a52h,04210h,039ceh,0318ch,0294ah,02108h,018c6h,014a5h + .endif + + SUBR LEXPRP_P + .word 64 + .word 00H,07FDDH,07FBCH,07F55H,07AF4H,07AB2H,07AB0H,07A6EH + .word 06E4DH,0722CH,06A2DH,0660DH,05E0DH,061EBH,05DC9H,059A9H + .word 05189H,05167H,04546H,04103H,03D04H,03505H,02CC3H,02C82H + .word 02442H,01842H,0842H,0667AH,05D78H,058B6H,05415H,04411H + .word 0340DH,0280AH,06D8CH,06D07H,06863H,04C42H,03863H,03800H + .word 02800H,07BDEH,0739CH,06739H,056B5H,04631H,02529H,014A5H + .word 0C63H,07FFFH,07F9FH,07F1FH,07E9FH,0763DH,071DCH,0697AH + .word 06559H,05D57H,05555H,04D53H,04551H,04150H,0394EH,0314CH + + SUBR LEXYEL_P + .word 64 + .word 00H,07FDDH,07FBCH,07F55H,07AF4H,07AB2H,07AB0H,07A6EH + .word 06E4DH,0722CH,06A2DH,0660DH,05E0DH,061EBH,05DC9H,059A9H + .word 05189H,05167H,04546H,04103H,03D04H,03505H,02CC3H,02C81H + .word 02440H,01800H,0400H,07FF9H,07FF0H,07FA8H,07F20H,06E80H + .word 055E0H,03D40H,06D8CH,06D07H,06863H,04C42H,03863H,03800H + .word 02800H,07BDEH,0739CH,06739H,056B5H,04631H,02529H,014A5H + .word 0C63H,07FFFH,07FFBH,07FF6H,07FD2H,07F8DH,07F69H,07F24H + .word 07F02H,07EE2H,07662H,069C2H,05942H,04CE2H,03C62H,03042H + + SUBR LEXRED_P + .word 64 + .word 00H,07FDDH,07FBCH,07F55H,07AF4H,07AB2H,07AB0H,07A6EH + .word 06E4DH,0722CH,06A2DH,0660DH,05E0DH,061EBH,05DC9H,059A9H + .word 05189H,05167H,04546H,04103H,03D04H,03505H,02CC3H,02C81H + .word 02440H,01800H,0400H,07F18H,079EFH,074C6H,06C00H,05400H + .word 04000H,02800H,06D8CH,06D07H,06863H,04C42H,03863H,03800H + .word 02800H,07BDEH,0739CH,06739H,056B5H,04631H,02529H,014A5H + .word 0C63H,07FFFH,07F9CH,07F18H,07EB5H,07A52H,075EFH,071ADH + .word 06D4AH,06D08H,068A5H,06463H,06042H,04842H,03042H,01842H + + + + .IF 1 + + + + + +;SUBR LEXYEL_P +; .word 64 +; .word 00000h,07fddh,07fbch,07f55h,07af4h,07ab2h,07ab0h,07a6eh +; .word 06e4dh,0722ch,06a2dh,0660dh,05e0dh,061ebh,05dc9h,059a9h +; .word 05189h,05167h,04546h,04103h,03d04h,03505h,02cc3h,02c81h +; .word 02440h,01800h,00400h,0529ah,039dbh,0319ah,02955h,018d1h +; .word 0084dh,0042ah,06d8ch,06d07h,06863h,04c42h,03863h,03800h +; .word 02800h,07bdeh,0739ch,06739h,056b5h,04631h,02529h,014a5h +; .word 00c63h,07fa0h,07b40h,07300h,06ec0h,06680h,06240h,05a00h +; .word 055c0h,04da0h,04960h,04140h,03d00h,034e0h,030c0h,028a0h + +; SUBR LEXPRP_P +; .word 64 +; .word 0250eh,07bbch,07b9bh,07b34h,076d3h,07691h,0768fh,0764dh +; .word 06a2ch,06e0bh,0660ch,061ech,059ech,05dcah,059a8h,05588h +; .word 04d68h,04d46h,04125h,03ce2h,038e3h,030e4h,028a2h,02861h +; .word 02021h,01421h,00421h,0667ah,05d78h,058b6h,05415h,04411h +; .word 0340dh,0280ah,06d8ch,06d07h,06863h,04c42h,03863h,03800h +; .word 02800h,07bdeh,0739ch,06739h,056b5h,04631h,02529h,014a5h +; .word 00c63h,07fdfh,07f3fh,07abeh,0723ch,069dah,06579h,05d17h +; .word 058f6h,050f4h,048f2h,040f0h,038eeh,034edh,02cebh,024e9h + + + SUBR BAMGRN_P + .word 64 + .word 00H,07FFFH,04A52H,04210H,039CEH,0318CH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0842H,07D46H,07126H,06CC2H,06126H + .word 060C4H,06C41H,060A2H,05C41H,05083H,04C41H,03C20H,03020H + .word 01800H,077FAH,03E0H,0380H,0320H,02C0H,0240H,01E0H + .word 0180H,0120H,07F79H,07F55H,07B13H,07AD1H,0728FH,0766DH + .word 06A4DH,0626BH,065E9H,059C9H,05187H,04D87H,05165H,04585H + .word 04901H,04103H,03903H,034C1H,02840H,01000H,07BEFH,07FC2H + .word 07F82H,07EE1H,07E60H,07DC0H,07D20H,064E0H,04CA0H,04080H + + SUBR BAMPNK_P + .word 64 + .word 00H,07FFFH,04A52H,04210H,039CEH,0318CH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0842H,07D46H,07126H,06CC2H,06126H + .word 060C4H,06C41H,060A2H,05C41H,05083H,04C41H,03C20H,03020H + .word 01800H,077FAH,07D70H,07CF0H,07C71H,07C12H,07010H,0640DH + .word 0580BH,05009H,07F79H,07F55H,07B13H,07AD1H,0728FH,0766DH + .word 06A4DH,0626BH,065E9H,059C9H,05187H,04D87H,05165H,04585H + .word 04901H,04103H,03903H,034C1H,02840H,01000H,07BEFH,07FC2H + .word 07F82H,07EE1H,07E60H,07DC0H,07D20H,064E0H,04CA0H,04080H + + SUBR BAMORG_P + .word 64 + .word 00H,07FFFH,04A52H,04210H,039CEH,0318CH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0842H,07D46H,07126H,06CC2H,06126H + .word 060C4H,06C41H,060A2H,05C41H,05083H,04C41H,03C20H,03020H + .word 01800H,077FAH,07E80H,07E40H,07E20H,07DE0H,07180H,06940H + .word 05D00H,054C0H,07F79H,07F55H,07B13H,07AD1H,0728FH,0766DH + .word 06A4DH,0626BH,065E9H,059C9H,05187H,04D87H,05165H,04585H + .word 04901H,04103H,03903H,034C1H,02840H,01000H,07BEFH,07FC2H + .word 07F82H,07EE1H,07E60H,07DC0H,07D20H,064E0H,04CA0H,04080H + + + SUBR BAMGRY_P + .word 64 + .word 00H,07FFFH,04A52H,04210H,039CEH,0318CH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0842H,07D46H,07126H,06CC2H,06126H + .word 060C4H,06C41H,060A2H,05C41H,05083H,04C41H,03C20H,03020H + .word 01800H,077FAH,05EF7H,05294H,04A52H,03DEFH,035ADH,0294AH + .word 02108H,014A5H,07F79H,07F55H,07B13H,07AD1H,0728FH,0766DH + .word 06A4DH,0626BH,065E9H,059C9H,05187H,04D87H,05165H,04585H + .word 04901H,04103H,03903H,034C1H,02840H,01000H,07BEFH,07FC2H + .word 07F82H,07EE1H,07E60H,07DC0H,07D20H,064E0H,04CA0H,04080H + + SUBR DNKPNK_P + .word 64 + .word 00H,07FFFH,06F7BH,05EF7H,04E73H,03DEFH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0421H,07FEBH,07FA5H,07B41H,06EC0H + .word 06260H,05F8FH,0536BH,04748H,03705H,02AE3H,01EC0H,01A80H + .word 01640H,01600H,011C1H,01181H,0D41H,0D01H,07EF9H,07E55H + .word 07DD1H,07CC8H,07400H,06C00H,06400H,05C00H,05400H,04C00H + .word 04400H,03800H,03000H,02021H,07EDCH,07E19H,07D77H,07CB4H + .word 07C12H,07410H,06C0FH,0640EH,05C0CH,0540BH,04C0AH,04409H + .word 03C08H,0626EH,05A0EH,045A9H,04566H,03926H,01C83H,01841H + + SUBR DNKORG_P + .word 64 + .word 00H,07FFFH,06F7BH,05EF7H,04E73H,03DEFH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0421H,07FEBH,07FA5H,07B41H,06EC0H + .word 06260H,05F8FH,0536BH,04748H,03705H,02AE3H,01EC0H,01A80H + .word 01640H,01600H,011C1H,01181H,0D41H,0D01H,07EF9H,07E55H + .word 07DD1H,07CC8H,07400H,06C00H,06400H,05C00H,05400H,04C00H + .word 04400H,03800H,03000H,02021H,07F99H,07F12H,07EACH,07E45H + .word 07DE0H,071A0H,06960H,05D40H,05100H,048C0H,03CA0H,03080H + .word 02860H,0626EH,05A0EH,045A9H,04566H,03926H,01C83H,01841H + + SUBR DNKRED_P + .word 64 + .word 00H,07FFFH,06F7BH,05EF7H,04E73H,03DEFH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0421H,07FEBH,07FA5H,07B41H,06EC0H + .word 06260H,05F8FH,0536BH,04748H,03705H,02AE3H,01EC0H,01A80H + .word 01640H,01600H,011C1H,01181H,0D41H,0D01H,07EF9H,07E55H + .word 07DD1H,07CC8H,07400H,06C00H,06400H,05C00H,05400H,04C00H + .word 04400H,03800H,03000H,02021H,07ED6H,07A10H,0794AH,07484H + .word 07400H,06800H,05C00H,05000H,04400H,03800H,02C00H,02000H + .word 01400H,0626EH,05A0EH,045A9H,04566H,03926H,01C83H,01841H + + SUBR DNKYEL_P + .word 64 + .word 00H,07FFFH,06F7BH,05EF7H,04E73H,03DEFH,02D6BH,02529H + .word 01CE7H,014A5H,0C63H,0421H,07FEBH,07FA5H,07B41H,06EC0H + .word 06260H,05F8FH,0536BH,04748H,03705H,02AE3H,01EC0H,01A80H + .word 01640H,01600H,011C1H,01181H,0D41H,0D01H,07EF9H,07E55H + .word 07DD1H,07CC8H,07400H,06C00H,06400H,05C00H,05400H,04C00H + .word 04400H,03800H,03000H,02021H,07FF6H,07FEEH,07FC7H,07FA0H + .word 07740H,06EE0H,066A0H,05E60H,05600H,04DC0H,04580H,03D40H + .word 03520H,0626EH,05A0EH,045A9H,04566H,03926H,01C83H,01841H + + + SUBR HRTORG_P + .word 64 + .word 00H,07F9AH,07B16H,07EF3H,076B2H,06E90H,06E6FH,06670H + .word 06A4EH,0624EH,0662DH,05E2EH,0660BH,05E0CH,05DEBH,055EDH + .word 051CAH,05586H,04DAAH,04988H,04967H,04126H,03D25H,03904H + .word 034E4H,030A2H,02CA3H,02482H,02441H,01863H,01021H,0800H + .word 07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04E73H,04631H + .word 03DEFH,035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + .word 07F98H,07F33H,07EEFH,07EABH,07A67H,07A03H,079C0H,071A0H + .word 06980H,06560H,05D40H,05520H,04D00H,044E0H,03CC0H,038C0H + + + SUBR HRTRED_P + .word 64 + .word 00H,07F9AH,07B16H,07EF3H,076B2H,06E90H,06E6FH,06670H + .word 06A4EH,0624EH,0662DH,05E2EH,0660BH,05E0CH,05DEBH,055EDH + .word 051CAH,05586H,04DAAH,04988H,04967H,04126H,03D25H,03904H + .word 034E4H,030A2H,02CA3H,02482H,02441H,01863H,01021H,0800H + .word 07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04E73H,04631H + .word 03DEFH,035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + .word 07B9CH,07AF7H,07A52H,079CEH,0794AH,078A5H,07842H,06800H + .word 06000H,05800H,05000H,04800H,04000H,03800H,03000H,02800H + + SUBR HRTGRY_P + .word 64 + .word 00H,07F9AH,07B16H,07EF3H,076B2H,06E90H,06E6FH,06670H + .word 06A4EH,0624EH,0662DH,05E2EH,0660BH,05E0CH,05DEBH,055EDH + .word 051CAH,05586H,04DAAH,04988H,04967H,04126H,03D25H,03904H + .word 034E4H,030A2H,02CA3H,02482H,02441H,01863H,01021H,0800H + .word 07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04E73H,04631H + .word 03DEFH,035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + .word 06F7BH,06739H,06318H,05AD6H,05294H,04E73H,04631H,03DEFH + .word 035ADH,0318CH,0294AH,02108H,01CE7H,014A5H,0C63H,0842H + + SUBR HRTYEL_P + .word 64 + .word 00H,07F9AH,07B16H,07EF3H,076B2H,06E90H,06E6FH,06670H + .word 06A4EH,0624EH,0662DH,05E2EH,0660BH,05E0CH,05DEBH,055EDH + .word 051CAH,05586H,04DAAH,04988H,04967H,04126H,03D25H,03904H + .word 034E4H,030A2H,02CA3H,02482H,02441H,01863H,01021H,0800H + .word 07FFFH,077BDH,06F7BH,06739H,05EF7H,056B5H,04E73H,04631H + .word 03DEFH,035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H + .word 06F58H,06F54H,06F2FH,06F0BH,06EE6H,06EC2H,06EA0H,06A60H + .word 06220H,059E0H,055A0H,04D60H,04940H,04100H,03CC0H,034A0H + + SUBR LEXGRN_P + .word 64 + .word 00H,07FDDH,07FBCH,07F55H,07AF4H,07AB2H,07AB0H,07A6EH + .word 06E4DH,0722CH,06A2DH,0660DH,05E0DH,061EBH,05DC9H,059A9H + .word 05189H,05167H,04546H,04103H,03D04H,03505H,02CC3H,02C81H + .word 02440H,01800H,0400H,03F6FH,02709H,0EA3H,0240H,01E0H + .word 0180H,0140H,06D8CH,06D07H,06863H,04C42H,03863H,03800H + .word 02800H,07BDEH,0739CH,06739H,056B5H,04631H,02529H,014A5H + .word 0C63H,07BFEH,067F9H,053D4H,03F8FH,02F4BH,02328H,016E5H + .word 0EA3H,0E63H,0E23H,0DE3H,0DA3H,0D63H,0D23H,0D03H + + SUBR LEXPNK_P + .word 64 + .word 00H,07FDDH,07FBCH,07F55H,07AF4H,07AB2H,07AB0H,07A6EH + .word 06E4DH,0722CH,06A2DH,0660DH,05E0DH,061EBH,05DC9H,059A9H + .word 05189H,05167H,04546H,04103H,03D04H,03505H,02CC3H,02C81H + .word 02440H,01800H,0400H,07F9EH,07E5AH,07D37H,07C34H,06830H + .word 0502CH,03828H,06D8CH,06D07H,06863H,04C42H,03863H,03800H + .word 02800H,07BDEH,0739CH,06739H,056B5H,04631H,02529H,014A5H + .word 0C63H,07FFFH,07F9EH,07F3DH,07EDCH,07E7BH,07E19H,07DB8H + .word 07D57H,07CF5H,07C94H,07C52H,0684FH,0544CH,03C48H,02845H + + SUBR LEXORG_P + .word 64 + .word 00H,07FDDH,07FBCH,07F55H,07AF4H,07AB2H,07AB0H,07A6EH + .word 06E4DH,0722CH,06A2DH,0660DH,05E0DH,061EBH,05DC9H,059A9H + .word 05189H,05167H,04546H,04103H,03D04H,03505H,02CC3H,02C81H + .word 02440H,01800H,0400H,07FB9H,07F10H,07E68H,07E00H,06D80H + .word 05520H,03CC0H,06D8CH,06D07H,06863H,04C42H,03863H,03800H + .word 02800H,07BDEH,0739CH,06739H,056B5H,04631H,02529H,014A5H + .word 0C63H,07FFFH,07FDBH,07F98H,07F54H,07F30H,07EECH,07EA9H + .word 07E65H,07E22H,075E2H,069A2H,05962H,04D42H,03D02H,030C2H + + SUBR LEXGRY_P + .word 64 + .word 00H,07FDDH,07FBCH,07F55H,07AF4H,07AB2H,07AB0H,07A6EH + .word 06E4DH,0722CH,06A2DH,0660DH,05E0DH,061EBH,05DC9H,059A9H + .word 05189H,05167H,04546H,04103H,03D04H,03505H,02CC3H,02C81H + .word 02440H,01800H,0400H,0739CH,06318H,05294H,04210H,0318CH + .word 02108H,014A5H,06D8CH,06D07H,06863H,04C42H,03863H,03800H + .word 02800H,07BDEH,0739CH,06739H,056B5H,04631H,02529H,014A5H + .word 0C63H,07FFFH,077BDH,06F7BH,06739H,05EF7H,05AD6H,05294H + .word 04A52H,04210H,039CEH,0318CH,0294AH,02108H,018C6H,014A5H + + + SUBR RZRPNK_P + .word 64 + .word 00H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 014C5H,010A4H,0C83H,0862H,0821H,00H,07FFEH,07FDAH + .word 07F98H,07F55H,07F54H,07F35H,07F12H,07EF3H,07ED0H,07ED1H + .word 07AD2H,07EAFH,07E8EH,07290H,0766EH,0724EH,06A4EH,06E2DH + .word 0620CH,065EAH,05DEBH,05DCAH,059CAH,055A8H,05188H,04D67H + .word 04125H,04502H,038E3H,03461H,02061H,01C20H,01000H,07FE8H + .word 07FA0H,07EE0H,065E0H,03D80H,07E19H,07DB8H,07D77H,07915H + .word 074B3H,06871H,0604FH,0542DH,04C2BH,04409H,03808H,03006H + + SUBR RZRORG_P + .word 64 + .word 00H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 014C5H,010A4H,0C83H,0862H,0821H,00H,07FFEH,07FDAH + .word 07F98H,07F55H,07F54H,07F35H,07F12H,07EF3H,07ED0H,07ED1H + .word 07AD2H,07EAFH,07E8EH,07290H,0766EH,0724EH,06A4EH,06E2DH + .word 0620CH,065EAH,05DEBH,05DCAH,059CAH,055A8H,05188H,04D67H + .word 04125H,04502H,038E3H,03461H,02061H,01C20H,01000H,07FE8H + .word 07FA0H,07EE0H,065E0H,03D80H,07E44H,07DE0H,07DA0H,07980H + .word 06D40H,06120H,054E0H,04CC0H,040A0H,03480H,02C60H,02040H + + SUBR RZRGRY_P + .word 64 + .word 00H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 014C5H,010A4H,0C83H,0862H,0821H,00H,07FFEH,07FDAH + .word 07F98H,07F55H,07F54H,07F35H,07F12H,07EF3H,07ED0H,07ED1H + .word 07AD2H,07EAFH,07E8EH,07290H,0766EH,0724EH,06A4EH,06E2DH + .word 0620CH,065EAH,05DEBH,05DCAH,059CAH,055A8H,05188H,04D67H + .word 04125H,04502H,038E3H,03461H,02061H,01C20H,01000H,07FE8H + .word 07FA0H,07EE0H,065E0H,03D80H,05AD6H,04A52H,03DEFH,02D6BH + .word 01CE7H,018C6H,014A5H,01084H,0C63H,0842H,0421H,0421H + + SUBR RZRYEL_P + .word 64 + .word 00H,07FDEH,04A50H,041EDH,035CDH,02D8CH,01D07H,018E6H + .word 014C5H,010A4H,0C83H,0862H,0821H,00H,07FFEH,07FDAH + .word 07F98H,07F55H,07F54H,07F35H,07F12H,07EF3H,07ED0H,07ED1H + .word 07AD2H,07EAFH,07E8EH,07290H,0766EH,0724EH,06A4EH,06E2DH + .word 0620CH,065EAH,05DEBH,05DCAH,059CAH,055A8H,05188H,04D67H + .word 04125H,04502H,038E3H,03461H,02061H,01C20H,01000H,07FE8H + .word 07FA0H,07EE0H,065E0H,03D80H,07BA0H,07720H,076C0H,07260H + .word 07200H,06DC0H,06180H,05940H,04D00H,040E0H,038A0H,02C80H + + SUBR SHNPNK_P + .word 64 + .word 00H,07FDDH,07F98H,07F58H,07F34H,07AD1H,07AB0H,0768FH + .word 06E90H,06E6EH,06E4DH,0622CH,05E0CH,059EAH,05DC9H,055CAH + .word 051A8H,04D89H,04D87H,04567H,04925H,04124H,03925H,03D03H + .word 038E2H,038C1H,030E4H,030C3H,03480H,02460H,02420H,01C40H + .word 01400H,0400H,07F5DH,07E9BH,07DFAH,07D58H,07C97H,07C16H + .word 07414H,06812H,06010H,0580FH,04C0DH,0440BH,0380AH,03008H + .word 07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04631H,03DEFH + .word 035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H,00H + + SUBR SHNORG_P + .word 64 + .word 00H,07FDDH,07F98H,07F58H,07F34H,07AD1H,07AB0H,0768FH + .word 06E90H,06E6EH,06E4DH,0622CH,05E0CH,059EAH,05DC9H,055CAH + .word 051A8H,04D89H,04D87H,04567H,04925H,04124H,03925H,03D03H + .word 038E2H,038C1H,030E4H,030C3H,03480H,02460H,02420H,01C40H + .word 01400H,0400H,07EA8H,07E86H,07E64H,07E43H,07E01H,07DE0H + .word 075C0H,069A0H,06180H,05940H,04D20H,04500H,038E0H,030C0H + .word 07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04631H,03DEFH + .word 035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H,00H + + SUBR SHNGRY_P + .word 64 + .word 00H,07FDDH,07F98H,07F58H,07F34H,07AD1H,07AB0H,0768FH + .word 06E90H,06E6EH,06E4DH,0622CH,05E0CH,059EAH,05DC9H,055CAH + .word 051A8H,04D89H,04D87H,04567H,04925H,04124H,03925H,03D03H + .word 038E2H,038C1H,030E4H,030C3H,03480H,02460H,02420H,01C40H + .word 01400H,0400H,06318H,05AD6H,05294H,04A52H,04210H,039CEH + .word 035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H,00H + .word 07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04631H,03DEFH + .word 035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H,00H + + SUBR SHNYEL_P + .word 64 + .word 00H,07FDDH,07F98H,07F58H,07F34H,07AD1H,07AB0H,0768FH + .word 06E90H,06E6EH,06E4DH,0622CH,05E0CH,059EAH,05DC9H,055CAH + .word 051A8H,04D89H,04D87H,04567H,04925H,04124H,03925H,03D03H + .word 038E2H,038C1H,030E4H,030C3H,03480H,02460H,02420H,01C40H + .word 01400H,0400H,07FD8H,07FB3H,07F8EH,07F89H,07F84H,07F80H + .word 07300H,06AA0H,05E20H,055E0H,04980H,03D20H,034E0H,028A0H + .word 07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04631H,03DEFH + .word 035ADH,02D6BH,02529H,01CE7H,014A5H,0C63H,0421H,00H + + + SUBR UNDPNK_P + .word 64 + .word 00H,07BBBH,07B77H,076F3H,06EB0H,0666FH,05E2DH,051EBH + .word 049CBH,045A9H,04167H,03947H,03D25H,03D03H,03105H,030E3H + .word 028C3H,02C80H,02081H,01861H,01840H,01420H,0C00H,07FFFH + .word 06B39H,06717H,062F6H,05AD5H,05272H,04A51H,0420FH,03DEEH + .word 039CDH,035ACH,0318BH,0316AH,02949H,02107H,01CE6H,014C5H + .word 014A4H,0C83H,0862H,0841H,0441H,0420H,07E9DH,07E3CH + .word 07DFBH,07D9AH,07D5AH,07D19H,07CB8H,07C95H,07493H,05C0DH + .word 0540CH,04C0AH,04409H,03C08H,03406H,02C05H,02404H,01C03H + + SUBR UNDORG_P + .word 64 + .word 00H,07BBBH,07B77H,076F3H,06EB0H,0666FH,05E2DH,051EBH + .word 049CBH,045A9H,04167H,03947H,03D25H,03D03H,03105H,030E3H + .word 028C3H,02C80H,02081H,01861H,01840H,01420H,0C00H,07FFFH + .word 06B39H,06717H,062F6H,05AD5H,05272H,04A51H,0420FH,03DEEH + .word 039CDH,035ACH,0318BH,0316AH,02949H,02107H,01CE6H,014C5H + .word 014A4H,0C83H,0862H,0841H,0441H,0420H,07E65H,07E44H + .word 07E22H,07E21H,07E00H,07DE0H,075C0H,06DA0H,06980H,05920H + .word 05100H,048E0H,040C0H,038C0H,030A0H,02880H,02060H,01C40H + + SUBR UNDYEL_P + .word 64 + .word 00H,07BBBH,07B77H,076F3H,06EB0H,0666FH,05E2DH,051EBH + .word 049CBH,045A9H,04167H,03947H,03D25H,03D03H,03105H,030E3H + .word 028C3H,02C80H,02081H,01861H,01840H,01420H,0C00H,07FFFH + .word 06B39H,06717H,062F6H,05AD5H,05272H,04A51H,0420FH,03DEEH + .word 039CDH,035ACH,0318BH,0316AH,02949H,02107H,01CE6H,014C5H + .word 014A4H,0C83H,0862H,0841H,0441H,0420H,07FEBH,07FC8H + .word 07FA5H,07F82H,07F60H,07700H,06EC0H,06660H,05E20H,055C0H + .word 04D80H,04540H,03D20H,034E0H,02CA0H,02480H,01C60H,01440H + + SUBR UNDRED_P + .word 64 + .word 0318ch,07bbbh,07b77h,076f3h,06eb0h,0666fh,05e2dh,051ebh + .word 049cbh,045a9h,04167h,03947h,03d25h,03d03h,03105h,030e3h + .word 028c3h,02c80h,02081h,01861h,01840h,01420h,00c00h,07bddh + .word 06b39h,06717h,062f6h,05ad5h,05272h,04a51h,0420fh,03deeh + .word 039cdh,035ach,0318bh,0316ah,02949h,02107h,01ce6h,014c5h + .word 014a4h,00c83h,00862h,00841h,00441h,00420h,07cc6h,07cc6h + .word 07cc6h,078c6h,06ca5h,06084h,05863h,04c42h,04421h,03800h + .word 03000h,02c00h,02400h,02000h,01800h,01000h,00c00h,00400h + + SUBR YOKPNK_P + .word 64 + .word 00H,07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04A52H + .word 04210H,039CEH,0318CH,0294AH,02108H,014A5H,0C63H,0421H + .word 0400H,07F9AH,07B14H,07EF1H,07ACFH,076B0H,0768EH,06E4BH + .word 06A4DH,0622CH,0660BH,05A0CH,059EAH,051A8H,05187H,04988H + .word 04966H,04124H,04102H,03904H,038E2H,030A1H,03480H,02881H + .word 02840H,02400H,01400H,07EDCH,07E7BH,07E1AH,07DBAH,07D5AH + .word 07CFAH,078D8H,070B7H,06CB5H,06894H,06473H,05C71H,05850H + .word 0544FH,04C2DH,0482CH,0440BH,03C0AH,03809H,03408H,02C07H + + SUBR YOKORG_P + .word 64 + .word 00H,07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04A52H + .word 04210H,039CEH,0318CH,0294AH,02108H,014A5H,0C63H,0421H + .word 0400H,07F9AH,07B14H,07EF1H,07ACFH,076B0H,0768EH,06E4BH + .word 06A4DH,0622CH,0660BH,05A0CH,059EAH,051A8H,05187H,04988H + .word 04966H,04124H,04102H,03904H,038E2H,030A1H,03480H,02881H + .word 02840H,02400H,01400H,07F10H,07ECDH,07E89H,07E46H,07E22H + .word 07DE0H,079C0H,071A0H,06D80H,06560H,06140H,05920H,05500H + .word 04D00H,048E0H,040C0H,044C0H,03CC0H,038A0H,03480H,02C80H + + SUBR YOKGRY_P + .word 64 + .word 00H,07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04A52H + .word 04210H,039CEH,0318CH,0294AH,02108H,014A5H,0C63H,0421H + .word 0400H,07F9AH,07B14H,07EF1H,07ACFH,076B0H,0768EH,06E4BH + .word 06A4DH,0622CH,0660BH,05A0CH,059EAH,051A8H,05187H,04988H + .word 04966H,04124H,04102H,03904H,038E2H,030A1H,03480H,02881H + .word 02840H,02400H,01400H,05AD6H,05294H,04E73H,04A52H,04210H + .word 03DEFH,039CEH,0318CH,02D6BH,0294AH,02108H,01CE7H,018C6H + .word 014A5H,0C63H,01084H,0C63H,0421H,00H,00H,00H + + SUBR YOKYEL_P + .word 64 + .word 00H,07FFFH,0739CH,06B5AH,06318H,05AD6H,05294H,04A52H + .word 04210H,039CEH,0318CH,0294AH,02108H,014A5H,0C63H,0421H + .word 0400H,07F9AH,07B14H,07EF1H,07ACFH,076B0H,0768EH,06E4BH + .word 06A4DH,0622CH,0660BH,05A0CH,059EAH,051A8H,05187H,04988H + .word 04966H,04124H,04102H,03904H,038E2H,030A1H,03480H,02881H + .word 02840H,02400H,01400H,07B8FH,07B6CH,07B48H,07B45H,07B21H + .word 07B20H,076E0H,06EA0H,06A60H,06640H,05E00H,059C0H,051A0H + .word 04D60H,04940H,04100H,04500H,040E0H,038C0H,034A0H,02C80H + + .ENDIF +****************************************************************************** + + .end + \ No newline at end of file diff --git a/WRESTLE.ASM b/WRESTLE.ASM new file mode 100755 index 0000000..0598f7d --- /dev/null +++ b/WRESTLE.ASM @@ -0,0 +1,6706 @@ +************************************************************** +* +* Software: Jamie Rivett, Mark Turmell, Jason Skiles +* Initiated: 12/7/93 +* +* Modified: +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "wrestle.asm" + .title "wrestling game program" + .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 "wwfsec.equ" + .include "game.equ" + .include "audit.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "ring.equ" + .include "sound.equ" + .include "damage.equ" + + .include "newfont.tbl" + .include "imgtbl.glo" + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + +; .if DEBUG +; .include "dirdebug.tbl" +; +;ARROWS: +; .word 4 +; .word 00H,015H,07FFFH,02B5H +; .endif + + .if DEBUG + +SCRT_DEBUG equ 0 +DIR_DEBUG equ 0 +COL_DEBUG equ 1 + + .else + +SCRT_DEBUG equ 0 +DIR_DEBUG equ 0 +COL_DEBUG equ 0 + + .endif + +****************************************************************************** +* EXTERNAL REFERENCES + + .if DEBUG + .ref instant_death + .endif + + .ref ADD_VOICE,ARE_WE_IN_RING,AUD,AUD1,BAKMODS,BGND_UD1 + .ref CLEAR_SPEECH_REPEAT,CREATE_TEXT_LINE,CR_CONTP,CR_STRTP + .ref CURRENT_LADDER,D2ST2B03,DAM_MULT,DBV,DIAG,DONE_HOWARD + .ref DO_CROWD_CHEER,FIND_AND_KILL_ENDLESS,GAME_BEATEN + .ref GET_ADJ,GET_AUD,combo_audit_done,FINAL_PTR + .ref INIT_LADDER_TABLE,INIT_SKIRTS,INIT_TAB,IRQSKYE,KILL_AUD + .ref LCOIN,MATCH_TIMERS,NUM_OPPS,OPEN_PROGRESS_SCREEN + .ref POWERCMOS,POWERTST,P_CONT,P_START,RCOIN,READ_DIP + .ref RESETUP_PROGRESS,SERVICE,SET_LOWER_VOL,SHIFT_BARS_IN_Z + .ref SLAM_SW,SORT_OUT_WRESTLER_NUM,SPECIAL_WIPEOUT,STORE_AUDIT + .ref THIS_GAME_IS_BEATEN,VOLBTN_PRESS,WALK_SOUND,do_game_over + .ref WDOGRAM,rewire_monitor,XCOIN,DUMRETS,WHICH_SCREEN + .ref ZFLIP_POS_VAR,CREATE_TIMEOUT,CCOIN,CHANGE_SKIRTS,CKDIAG + .ref set_volume,KILL_ALL_CHANNELS,RESET_VOICE_QUEUE + .ref FINAL_BATTLE_LINEUP,RNDRNG0,change_wrestler,match_timer + .ref animate_wrestler,are_we_waiting_f,attract_mode + .ref bam_ani_init,bret_ani_init,change_anim1,change_anim1a + .ref change_anim2,check_collisions,ck_climb_in_bot,keep_onscreen + .ref ck_climb_in_side,ck_climb_in_top,ck_climb_out_bot + .ref ck_climb_out_side,ck_climb_out_top + .ref crowd_anim,dirqtimer,dma_meter,doink_ani_init,buyin_select + .ref dpageflip,drone_main,entered_inits,getup_meter + .ref index1,index2,init_all,init_life_data,init_special_objlist + .ref lex_ani_init,meters,move_bam,move_bret,move_doink,move_lex + .ref move_razor,move_shawn,move_taker,move_yoko,adjust_health + .ref overlap_collision,pal_getf,pin_speed_in_case,pregame_show + .ref print_string_C2,process_dispatch,razor_ani_init,choose_pal + .ref read_switches,rope,rope_command,select_screen,init_smoves + .ref set_collision_boxes,set_images,setup_message + .ref shawn_ani_init,snd_update,square_root,taker_ani_init + .ref triple_sound,wgsf24_ascii,wres_get_but_val_down + .ref wres_get_stick_val_down,wres_get_stick_val_up + .ref wrestler_audits,yoko_ani_init,mess_objid,pal_clean + .ref wrestler_veladd,announce_rnd_winner,scroll_world + .ref drone_change_back,is_final_match,audit_ud_flag + .ref ditch_getup_meter,message_flag,init_rnd_life_data + .ref p1rnd_award,p2rnd_award,p1mtch_award,p2mtch_award + .ref p1ws_award,p2ws_award,rst_awards,rst_winstreak_awards + .ref PERFECT_WINS,MUSIC_HAP,THIS_GAME_TIME,WINS_OBJ + .ref arm_winstreak_award,reset_dufus_msgs,clear_icon_total + .ref MESSAGE_FLAGS,FLASH_FLAG,royal_rumble,choose_buddies + .ref do_show_options,show_options,IKIL1C,is_a14_behind + .ref maybe_do_flashes,COMBO_FLASH_FLAG,loser_snd + .ref in_finish_move,buddy_mode_on,buddy_mode_checked + .ref copy_rom_string,concat_rom_string,setup_message + .ref copy_string,dec_to_asc,concat_string,message_buffer + .ref osgmd8_ascii,get_all_buttons_cur,_serial_number,_man_date + .ref InitPIC,RemapIO,SecFuncCheck + .ref rr_loss,postgame_audits + .ref wrestler_counter + .ref is_8_on_1,bncoff_gate,fall_back_tbl + .ref show_wrestler_end_story,do_fireworks + .ref p1pins,p2pins,finish_completed + + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + + + .def obj_look,ani_init,mainlp,PCMOSRET,ring_mod + + BSSX _coin_addr,32 + BSSX _switch_addr,32 + BSSX _switch2_addr,32 + BSSX _watchdog_addr,32 + BSSX _dipswitch_addr,32 + BSSX _sound_addr,32 + BSSX _soundirq_addr,32 + BSSX _coin_counter_addr,32 + +;uninitialized ram definitions + BSSX no_pin_check,16 + BSSX belt_ask ,16 + BSSX belt_type ,16 + + BSSX PSTATUS ,16 ;Player in game bits (0-3) + BSSX OLD_PSTATUS ,16 ;Previous games PSTATUS + BSSX PSTARTS ,16 ;Not documented. Pbltltlt. + + .if DEBUG + BSSX SLDEBUG ,16 ;Shawn's debug + BSSX slowmotion ,16 ;!0=Frames of delay for slow motion + .endif + + BSSX slowmo ,16 ;!0=Frames of delay for slow motion + + ;I changed PCNT to a 32-bit value instead of 16 'cuz I'm tired of + ; coding checks for the wraparound case, which happens every ten + ; minutes or so. Since it's always treated as an unsigned value + ; anyway, it's perfectly safe to continue using it as a word. - JS + .even + BSSX PCNT ,32 ;Main loop cnt + + BSSX swstack_p ,32 ;*Stack position + BSSX swstackbot ,16*64 ;Bottom of stack + BSSX swstacktop ,0 ;Top of stack + + BSSX COLRTEMP ,16*16 ;RAM COPY OF CYCLING COLORS + + BSSX GAMSTATE ,16 ;Game state: See game.equ + + BSSX HALT ,16 ;FREEZE ALL OBJECTS (NO VEL UPDATE) + BSSX NO_START ,16 ;FLAG 0=OKAY, 1=NOT RIGHT NOW. + + BSSX WSPEED ,16 + BSSX WFLG ,16 ;0=NOT ON, 1=YES IT IS ON + .bss WNDWFLG ,16 ;0=WINDOW SHOULD CLOSE, 1=NO WINDOW + .even + BSSX OBJPTR ,32 ;PNTR FOR WINDOW OBJECT + + + .bss PALTMP ,13*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM + + BSSX match_cnt, 16 + + BSSX debug_collis, 16 + + .even + BSSX DIAG0, 32 + BSSX DIAG1, 32 + + BSSX process_ptrs, 32*NUM_WRES ;long * number wrestlers +p2_process .equ process_ptrs+32 + .def p2_process + + .bss wres0_objs, 32*MAX_PIECES + .bss wres1_objs, 32*MAX_PIECES + .bss wres2_objs, 32*MAX_PIECES + .bss wres3_objs, 32*MAX_PIECES + .bss wres4_objs, 32*MAX_PIECES + .bss wres5_objs, 32*MAX_PIECES + .bss wres6_objs, 32*MAX_PIECES + .bss wres7_objs, 32*MAX_PIECES + + BSSX round_tickcount,16 + + + BSSX wrest_joystat, 32*16*NUM_WRES ;16 bit joyval: 16 bit count + + .bss fudge_x, 32 ;wrestler_x[-20h] + BSSX wrestler_x, 32*NUM_WRES ;long * number wrestlers + .bss fudge_y, 32 ;wrestler_y[-20h] + BSSX wrestler_y, 32*NUM_WRES ;long * " + .bss fudge_z, 32 ;wrestler_z[-20h] + BSSX wrestler_z, 32*NUM_WRES ;long * " + + ;This is the game clock at the top of the screen. It runs at various + ; speeds in the different modes, and can be adjusted by the operator. + ; It's not any kind of real time clock and shouldn't be used for + ; ANYTHING except displaying those two digits. + BSSX match_time, 16*3 ;frac, 1's, 10's + + BSSX match_over, 16 ;0=not over, !0=over + + ;This used to be incremented on the fly. Bogus, since we lose bog + ; frames that way and end up with an artificially low time. Instead, + ; compute this based on current PCNT and match_start_time at the + ; end of the match. + BSSX match_realtime, 16 ;actual seconds elapsed + + BSSX match_winner, 16 ;just like PSTATUS + + BSSX fight_debug, 16 + + BSSX p1winstreak, 16 ;player 1 winning streak + BSSX p2winstreak, 16 ;player 2 winning streak + BSSX p1winstreakd, 16 ;player 1 vs drones + BSSX p2winstreakd, 16 ;player 2 vs drones + + ;copy pXwinstreak to pXoldwinstreak immediately after any battle + ; ends, then clear pXwinstreak. + BSSX p1oldwinstreak, 16 ;player 1 dead winning streak + BSSX p2oldwinstreak, 16 ;player 2 dead winning streak + + BSSX current_round, 16 ;current round in match (1+) + BSSX p1rounds, 16 ;player 1 rounds won + BSSX p2rounds, 16 ;player 2 rounds won + + ;keep these in order and adjacent + .even + BSSX front_rproc, 32 ;front ropes proc + BSSX back_rproc, 32 ;back ropes proc + BSSX left_rproc, 32 ;left ropes proc + BSSX right_rproc, 32 ;right ropes proc + + BSSX total_matches, 16 ;matches since attract mode + BSSX no_debris, 16 ;Don't allow debris - it bogs + BSSX reduce_bog, 16 + BSSX allow_offscrn,16 ;Allow players offscrn on toss outs + + .bss bgnd_cntr,16 + BSSX any_hits,16 + BSSX robo_icon_trigger,16 + + .if DEBUG + BSSX stay_down, 16 ;flag - don't dec GETUP_TIME + .endif + + ;these three data are only for use in pin times. They don't count + ; time not spent actually fighting, and so we can't use them for + ; the game time audit. + BSSX round_start_time,32 ;PCNT at start of round + BSSX round_end_time,32 ;PCNT at end of round + + ;Set this at the beginning of a match, and subtract it from PCNT + ; at the end of the match. THIS is the clock we use for the game + ; time audits. It won't lose bog frames, and it isn't tied to that + ; silly game clock. + BSSX match_start_time,32 ;PCNT at start of match + .text + + .bss plyr_dmg_given,2*16 + BSSX wrestler_count,16 + BSSX wrestler_count_proc,32 + BSSX temp_music,16 + + BSSX annc_rnd_winner_done,16 + +vln_right_rope_r + .WORD RING_TOP_RIGHT,RING_TOP,RING_BOT_RIGHT,RING_BOT + .WORD RING_DEPTH,RING_RIGHT_WIDTH +vln_left_rope_r + .WORD RING_TOP_LEFT,RING_TOP,RING_BOT_LEFT,RING_BOT + .WORD RING_DEPTH,RING_LEFT_WIDTH +vln_right_matedge_r + .WORD MAT_TOP_RIGHT,MAT_TOP,MAT_BOT_RIGHT,MAT_BOT + .WORD MAT_DEPTH,MAT_RIGHT_WIDTH +vln_left_matedge_r + .WORD MAT_TOP_LEFT,MAT_TOP,MAT_BOT_LEFT,MAT_BOT + .WORD MAT_DEPTH,MAT_LEFT_WIDTH +vln_right_matedge2_r + .WORD MAT2_TOP_RIGHT,MAT2_TOP,MAT2_BOT_RIGHT,MAT2_BOT + .WORD MAT2_DEPTH,MAT2_RIGHT_WIDTH +vln_left_matedge2_r + .WORD MAT2_TOP_LEFT,MAT2_TOP,MAT2_BOT_LEFT,MAT2_BOT + .WORD MAT2_DEPTH,MAT2_LEFT_WIDTH +vln_right_fence_r + .WORD ARENA_TOP_RIGHT,ARENA_TOP,ARENA_BOT_RIGHT,ARENA_BOT + .WORD ARENA_DEPTH,ARENA_RIGHT_WIDTH +vln_left_fence_r + .WORD ARENA_TOP_LEFT,ARENA_TOP,ARENA_BOT_LEFT,ARENA_BOT + .WORD ARENA_DEPTH,ARENA_LEFT_WIDTH + + bssx vln_right_rope,((RING_DEPTH+10)*16)+64 + bssx vln_left_rope,((RING_DEPTH+10)*16)+64 + bssx vln_right_matedge,((MAT_DEPTH+10)*16)+64 + bssx vln_left_matedge,((MAT_DEPTH+10)*16)+64 + bssx vln_right_matedge2,((MAT2_DEPTH+10)*16)+64 + bssx vln_left_matedge2,((MAT2_DEPTH+10)*16)+64 + bssx vln_right_fence,((ARENA_DEPTH+10)*16)+64 + bssx vln_left_fence,((ARENA_DEPTH+10)*16)+64 + + .even +box_matedge + .long vln_left_matedge + .long vln_right_matedge + +box_matedge2 + .long vln_left_matedge2 + .long vln_right_matedge2 + + +**************************************************************** +* Reset entry point + + SUBR init_prog + + .if 0 + dint + setf 16,1,0 ;Field0 = Word sign extend + setf 32,0,1 ;Field1 = Long word + movi STCKST,sp ;Top of stack + + calla InitPIC + +; .if DEBUG +; move a0,@>1e00000 ;Clr FPGA rom protect +; .endif + + ;>Manual sound board reset +; Moved to PU DIAGS +; movi 0fe00h,a0 ;Hit reset bit +; move a0,@SOUND +; movi 100,a0 ;Wait for it to catch +; dsj a0,$ +; movi 0ff00h,a0 ;Let it go +; move a0,@SOUND + + move @WDOGRAM,a0,L + cmpi WDOGNUM,a0 + jrne initp50 ;Powerup? + + move @dirqtimer,a0 + cmpi 400,a0 + jrhs #lockup ;Main loop died? + + + .if TUNIT + move @TALKPORT,a0 ;Check if watchdog was real + btst B_WDOG,a0 ;Bit should be low if dog fired + jrnz initp50 ;No watchdog? + .endif + + movk AUD_LOCKUP,a0 ;watchdog + calla AUD1 + jruc #cont + +#lockup + + movi AUD_LOCKUP,a0 ;main loop lockup + calla AUD1 + +#cont + .if DEBUG + .else + CALLERR 11,0 ;Watch dog + .endif + + + movk AUDSTAT,a0 + calla GET_AUD ;0=AMode, 1=Game + move a1,a1 + jrz WARMSET ;Attract mode glitch? + +initp50 + calla READ_DIP ;skip if UJ2 bit 6 set + btst 6,a0 + jrnz #skip_powerst + jauc POWERTST ;board test etc... +#skip_powerst + + .else + dint ; Interrupts OFF + setf 16,1,0 ; word sign extend + setf 32,1,1 ; long word sign extend + movi STCKST,sp ; Setup the stack pointer + + clr a0 ; initial mode for VMUX chip + move a0,@VMUX_CONTROL,W ; initialize VMUX chip + + movi 00030h,a0 ; hit sound reset bit + move a0,@COIN_COUNTERS ; this is where reset bit is + movi 100,a0 ; wait for it to catch + dsjs a0,$ + movi 00020h,a0 ; let it go + move a0,@COIN_COUNTERS + + + move @SOUNDIRQ,a0 ; read watchdog status + btst 8,a0 ; Is this reset from a watchdog ? + jrnz initp50 ; br = no + +#lockup + + movk AUD_LOCKUP,a0 ; watchdog audit + calla AUD1 + +;04/01/95 - NOTE: It may look a little dumb to have two calls to InitPIC +;here instead of one above before the read for the watchdog status and it may +;be tempting to move the InitPIC call to before the watchdog status read BUT +;don't do it!!! The watchdog status MUST be read BEFORE the PIC is initialized +;or the status of the watchdog will be reset. + +initp50 + calla InitPIC ; Initialize the PIC and the I/O system + move a0,@WATCHDOG ; Kill the dog fer yucks + calla READ_DIP ; Read the dipswitches + btst 6,a0 ; Is the power test bypass switch on? + jrnz #skip_powerst ; br = yes + jauc POWERTST ; Go off and run the power up tests +#skip_powerst + calla InitPIC ; Reinitialize the PIC and I/O system + .endif + + +****************************************************************************** + + SUBR WARMSET + + dint + setf 16,1,0 ;Field0 = Word sign extend + setf 32,0,1 ;Field1 = Long word + movi STCKST,sp ;Top of stack + + calla InitPIC + +;This takes all day to run. leave it out until we ship. + .if DEBUG + .else + jauc POWERCMOS + .endif +PCMOSRET + + calla init_all ;Initialize hardware +; These are stored in these reggies to protect them + move b5,@_serial_number,L + move b6,@_man_date,L + calla SecFuncCheck ;Check to make sure security functions + ;have not been mucked with + calla INIT_TAB ;Reset todays high score table + + .if DEBUG + clr a14 + move a14,@fight_debug + move @_soundirq_addr,a14,L + move *a14,a14 + btst 8,a14 + jrnz #no_dog + LOCKUP +#no_dog + .endif + + calla CKDIAG + jrz main_go ;No diag switches closed? + + CREATE DIAG_PID,DIAG ;Fire off the diag process + jruc mainlp +main_go + CREATE AMODE_PID,attract_mode ;Start the attract mode + + ;fall through + +******************************** +* Main loop + +mainlp + calla process_dispatch + + move a13,a13 + jrz mainpok + + .if DEBUG + LOCKUP + eint + .else + CALLERR 10,0 + .endif + +mainpok + + move @RAND,a1,L ;>Randomize + rl a1,a1 + move @HCOUNT,a14 + rl a14,a1 + add sp,a1 + move a1,@RAND,L + + .if DEBUG + move @dma_meter,a14 + jrz #no_dmaline + .ref draw_dma_meter + calla draw_dma_meter +#no_dmaline + .endif + + +;isn't there a less obvious place +;that we can remap the IO ??? +; btst 5,a1 +; jrz _no_remap +; calla RemapIO +;_no_remap + + callr switch_unstack + calla snd_update ;Update the sound calls + + .if DEBUG + calla cputime_calcfree + .endif + + ;update all 32 bits of PCNT + move @PCNT,a0,L + addk 1,a0 + move a0,@PCNT,L + + jruc mainlp + + +#*************************************************************** +* Unstack switch queue + + + SUBRP switch_unstack + + +#lp move @swstack_p,a3,L + cmpi swstacktop,a3 ;Stack at start? + jreq #x ;Empty? + move @FREE,a0,L + jrz #x ;No processes left? + + move *a3+,a0 ;Get entry + move a3,@swstack_p,L ;Update stack + sll 32-5,a0 ;Max switch # 31 + srl 32-5-4,a0 ;*16 + move a0,a2 + add a0,a2 + add a0,a2 ;*3 + addi switch_t,a2 + move *a2+,a1 + jrz #lp ;No PID? + move *a2+,a7,L ;*Code + movi ACTIVE,a13 ;*Proc list + calla GETPRC + jruc #lp + +#x rets + + +switch_t ;(Process ID or 0, *Routine) ;Put in audit?? + + + .if TUNIT + WL 0,0 ;S0 + WL 0,0 ;S1 + WL 0,0 ;S2 + WL 0,0 ;S3 + WL 0,0 ;S4 + WL 0,0 ;S5 + WL 0,0 ;S6 + WL 0,0 ;S7 + WL 0,0 ;S8 + WL 0,0 ;S9 + WL 0,0 ;S10 + WL 0,0 ;S11 + WL 0,0 ;S12 + WL 0,0 ;S13 + WL 0,0 ;S14 + WL 0,0 ;S15 + + WL LC_PID,LCOIN ;S16 - LEFT COIN (1) + WL RC_PID,RCOIN ;S17 - RIGHT COIN (2) + WL PSWPID,plyr_strtb1 ;S18 - START 1 + WL SLAM_PID,SLAM_SW ;S19 - SLAM TILT + WL DIAG_PID,DIAG ;S20 - TEST + WL PSWPID,plyr_strtb2 ;S21 - START 2 + WL DIAG_PID,SERVICE ;S22 - SERVICE CREDIT + WL CC_PID,CCOIN ;S23 - CENTER COIN (3) + WL CC_PID,XCOIN ;S24 - COIN 4 + WL 0,0 ;S25 - START 3 + WL 0,0 ;S26 - START 4 + WL VOLBTN_PID,VOLBTN_PRESS ;S27 - VOLUME DOWN + WL VOLBTN_PID,VOLBTN_PRESS ;S28 - VOLUME UP + WL 0,0 ;S29 + WL 0,0 ;S30 + WL CC_PID,DBV ;S31 + + .else + + WL PSWPID,plyr_strtb4 ;S7 IO20 - START 4 + WL 0,0 ;S1 + WL 0,0 ;S2 + WL 0,0 ;S3 + WL 0,0 ;S4 + WL 0,0 ;S5 + WL 0,0 ;S6 + WL PSWPID,plyr_strtb3 ;S7 - START 3 + WL 0,0 ;S8 + WL 0,0 ;S9 + WL 0,0 ;S10 + WL 0,0 ;S11 + WL 0,0 ;S12 + WL 0,0 ;S13 + WL 0,0 ;S14 + WL CC_PID,XCOIN ;S15 - COIN 4 + + WL LC_PID,LCOIN ;S16 - LEFT COIN (1) + WL RC_PID,RCOIN ;S17 - RIGHT COIN (2) + WL PSWPID,plyr_strtb1 ;S18 - START 1 + WL SLAM_PID,SLAM_SW ;S19 - SLAM TILT + WL DIAG_PID,DIAG ;S20 - TEST + WL PSWPID,plyr_strtb2 ;S21 - START 2 + WL DIAG_PID,SERVICE ;S22 - SERVICE CREDIT + WL CC_PID,CCOIN ;S23 - CENTER COIN (3) + WL 0,0 ;S24 + WL 0,0 ;S25 + WL 0,0 ;S26 + WL 0,0 ;S27 + WL 0,0 ;S28 + WL 0,0 ;S29 + WL 0,0 ;S30 - Snd IRQ + WL 0,0 ;S31 + .endif + +are_we_waiting_for_inits + move a8,a0 + addi HI_INPUT_PID,a0 + clr a1 + not a1 + jauc EXISTP + +#*************************************************************** +* plyr_strtbx - Process player start button (Process) + + SUBR plyr_strtb1 + clr a8 ;A8=Player # + jruc #go + + SUBR plyr_strtb2 + movk 1,a8 + +#go + + move @GAMSTATE,a0 + jrn #die ;In diagnostics? + + cmpi INPARTY,a0 + jreq #die ;don't interrupt the win sequence + + move @PSTATUS,a14 + btst a8,a14 + jrnz #die ;Player already started? + +;New start. kill the player's score and win count + + PUSH a0 + MOVI process_ptrs,A2 + movi p1winstreak,a0 + movi p1winstreakd,a4 + movi entered_inits,a1 + movi MATCH_TIMERS,a3 + movi p1ws_award,a14 + move a8,a8 + jrz #rstp1scor + MOVI process_ptrs+020H,A2 + movi p2winstreak,a0 + movi p2winstreakd,a4 + movi entered_inits+030h,a1 + movi MATCH_TIMERS+020H,a3 + movi p2ws_award,a14 +#rstp1scor + calla rst_winstreak_awards ;reset player winstreak awards + PUSH a0 + clr a0 + move a8,a8 + jrz #do_dmsg_rst + movk 1,a0 +#do_dmsg_rst + calla reset_dufus_msgs + move a8,a0 + calla clear_icon_total + move a0,a8 + PULL a0 +; calla dufus_msgs_on + clr a14 +; move a14,@belt_ask + move a14,*a0,W ;wins + MOVE A14,*A1,L ;entered_inits + MOVE A14,*A2,L ;process_ptrs + MOVE A14,*A3,L ;MATCH_TIMERS + + move *a4,a0 + jrn #a4ok + move a14,*a4,W ;wins vs drones +#a4ok + + PULL a0 + + move @OLD_PSTATUS,a14 + btst a8,a14 + jrz #reg ;Player on buyin screen? +;On the buyin screen. + cmpi INSELECT,a0 + jreq #start_from_waitcont + LOCKUP + +#reg + + calla CR_STRTP ;not a continue. die on insuff $$ + jalo #die + + move @GAMSTATE,a0 + cmpi INAMODE,a0 + jreq #start_from_amode ;New start from amode? + + cmpi INGAMEOVER,a0 + jreq #start_from_gameover ;just like attract mode, really + + cmpi INSELECT,a0 + jreq #start_from_select + + cmpi INPREGAME,a0 + jreq #start_from_pregame + + cmpi INPREGAME2,a0 + jreq #start_from_midgame + + cmpi INGAME,a0 + jreq #start_from_midgame + + LOCKUP + + jruc #die ;cases we forgot... + +#start_from_midgame + + movi AUD_TOTSTARTS,a0 ;inc total starts audit + calla AUD1 + + calla P_START ;eat the creds + + CREATE NO_PID,game_interrupt ;create the game proc + + jruc #set_pstatus_and_die + +#start_from_waitcont + + callr are_we_waiting_for_inits + jrnz #die + + calla CR_CONTP ;enuff creds? + jalo #die + calla P_CONT ;eat the creds + + movi AUD_CONTTAKN,a0 ;inc continues taken audit + calla AUD1 + + + jruc #set_pstatus_and_die ;waitcont watches for PSTATUS + ; changes, so we don't need to + +#start_from_amode + + clr a0 + + move a0,@are_we_waiting_f + move a0,@OLD_PSTATUS + CALLA INIT_LADDER_TABLE + +#start_from_gameover + movk 25,a0 + move a0,@robo_icon_trigger + + movk 1,a0 + move a0,@no_pin_check + move a0,@belt_ask + + movi AUD_PRESTARTS,a0 ;inc attract mode starts audit + calla AUD1 + + movi AUD_TOTSTARTS,a0 ;inc total starts audit + calla AUD1 + + calla P_START ;eat the creds + + ;Reset the volume levels here + calla KILL_ALL_CHANNELS + calla RESET_VOICE_QUEUE + + movi ADJVOLUME,a0 + calla GET_ADJ + BADCHK a0,0,255,28 ;reg, lo, hi, val if bad + calla set_volume + +;If any button is pressed at the same time as the start button, +;then skip all select stuff. Otherwise, game acts as it will on location + + clr a0 + move a0,@match_cnt + + + .if DEBUG + move a0,@skip_select + move a0,@fight_debug + + .ref get_all_buttons_cur2 + calla get_all_buttons_cur2 + jrz #nobutn + + movk 1,a0 + move a0,@skip_select + move a0,@fight_debug + + .ref get_all_sticks_cur2 + calla get_all_sticks_cur2 + jrz #nobutn + + movi -1,a0 + move a0,@skip_select + +#nobutn + .endif + + + CREATE NO_PID,game_loop ;create the game proc + jruc #set_pstatus_and_die + + +#start_from_select + callr are_we_waiting_for_inits + jrnz #die + + movi AUD_TOTSTARTS,a0 ;creds have already been checked, + calla AUD1 ; so we know we have enough. + calla P_START + jruc #set_pstatus_and_die + + +#start_from_pregame + movi AUD_TOTSTARTS,a0 ;total starts + calla AUD1 + calla P_START ;eat creds + CREATE NO_PID,game_loop ;make a new game loop. This will + + clr a3 + calla SNDSND + + calla KILL_ALL_CHANNELS + calla RESET_VOICE_QUEUE + + movk 11,a3 ;Little rap ditty + calla SNDSND + + clr a0 + move a0,@are_we_waiting_f + jruc #set_pstatus_and_die ;kill the old one and drop back + ;into the select screen. + +#set_pstatus_and_die + movk 1,a0 ;set the player bit in PSTATUS + sll a8,a0 + move @PSTATUS,a14 + or a0,a14 + move a14,@PSTATUS + MOVE @PSTARTS,A14 + or a0,a14 + move a14,@PSTARTS + CLR A0 + MOVE A0,@THIS_GAME_TIME + movi 49h,a0 + calla triple_sound + + clr a0 + MOVE A0,@IRQSKYE + + movi AUD_WINSTREAK,A0 + calla KILL_AUD + movi AUD_PINSPEED,A0 + calla KILL_AUD + movi AUD_BEATEN,A0 + calla KILL_AUD + +#die DIE + + +#***************************************************************************** +* game loop +* + + STRUCTPD + LONG BLINK_PROC + + SUBRP game_interrupt + +;Someone has bought in during gameplay of a one player game! +;Print challenger comes message + + movk 1,a0 + move a0,@HALT + +;If a player buys in during a one player game. We must decrement pxcpu_ladder +;because we haven't defeated that cpu opponent yet! + + ;...but if the player has already lost, go ahead and dec. + MOVE @match_winner,a0 + jrz #decldr + + ;someone has won--figure out if it's our player. We can't look at + ; PSTATUS because the other player has now bought in and it's gonna + ; be 3. Instead, look at the process_ptrs. There'll be a non-zero + ; value one of the first two, and that's our player. + move @process_ptrs,a14,L + jrz #op2 +#op1 ;p1 is the human. test bit 0 of match_winner + btst 0,a0 + jrnz #nodecldr + + ;p1 lost. kill his PSTATUS bit. + movi 2,a14 + move a14,@PSTATUS + + jruc #decldr +#op2 ;p2 is the human. + btst 1,a0 + jrnz #nodecldr + + ;p2 lost. kill his PSTATUS bit. + movi 1,a14 + move a14,@PSTATUS + +#decldr MOVE @CURRENT_LADDER,A0,L + SUBI 020H,A0 + MOVE A0,@CURRENT_LADDER,L +#nodecldr + +;If match/rnd winner anouncement is on screen, kill it + movi ANNC_PID,a0 + clr a1 + not a1 + calla KILALL + + movi CYCPID,a0 + clr a1 + not a1 + calla KILALL + + movi CLSNEUT|TYPTEXT|SUBTXT,a0 + calla obj_del1c ;delete text/plates + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ;delete text/plates + +#nope + + movi LN1b_setup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a0,@mess_objid ;OBJ ID's for text + movi #str_game,a4 + calla print_string_C2 + + movi LN2b_setup,a2 + calla setup_message + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + move a0,@mess_objid ;OBJ ID's for text + movi #str_over,a4 + calla print_string_C2 + + calla pal_clean + + + + + movi ACTIVE,a3,L + +#lp move *a3,a3,L ;Get next + jrz #x ;End? + move *a3(PWAKE),a0,L + move *a3(PTIME),a14 ;Add sleep + addi 3*60,a14 + move a14,*a3(PTIME) + jruc #lp +#x + + CREATE SET_IMAGES_PID,DO_SET_IMAGES + .ref fade_down_half + movi #no_fade,a10 + CREATE FADE_PID,fade_down_half + + SLEEP 120 + + calla KILL_ALL_CHANNELS + calla RESET_VOICE_QUEUE + + movi ADJVOLUME,a0 + calla GET_ADJ + BADCHK a0,0,255,28 ;reg, lo, hi, val if bad + calla set_volume + + movk 1,a0 + move a0,@no_pin_check + movk 11,a3 ;Little rap ditty + calla SNDSND + + + SUBRP game_loop + + .if DEBUG + + movk 3,a0 ;2 humans + .ref skip_select + move @skip_select,a14 + jrz #noskp + jrp #nodrn + movk 2,a0 ;1 human 1 drone +#nodrn + move a0,@PSTATUS +#noskp + .endif + +; .if DEBUG +; ;don't allow this out in the field yet. +; JSRP robo_check +; .endif + + movk 1,a0 + move a0,@NUM_OPPS + + JSRP select_screen + clr a0 + move a0,@no_pin_check + +do_pregame + + ;clear match_winner + clr a14 + move a14,@match_winner + +; .ref robo_check +; +; JSRP robo_check ; RETURNS ONLY + movk INPREGAME,a14 ;set GAMSTATE + move a14,@GAMSTATE + movi PREGAME_PID,a14 ;set our PID + move a14,*a13(PROCID) + + move @match_cnt,a0 + inc a0 + move a0,@match_cnt + + move @PSTATUS,A0 + CMPI 3,A0 + JREQ NOT_FINISHED_GAME + + calla is_final_match + jrc finished_game + +NOT_FINISHED_GAME + movk 1,a14 + move a14,@do_show_options + JSRP pregame_show + +#game + movi INGAME,a14 ;set GAMSTATE + move a14,@GAMSTATE + movi GAME_PID,a14 ;set our PID + move a14,*a13(PROCID) + + clr a0 + move a0,@p1rounds + move a0,@p2rounds + move a0,@in_finish_move + + movk 1,a0 + move a0,@current_round + + ;set match_start_time + move @PCNT,a14,L + move a14,@match_start_time,L + + ;do the match + JSRP start_match + + ;inc the TOTAL GAMES audit + movi AUD_TOTALGAMES,A0 + CALLA AUD1 + +;The only time we return from start_match is when the match is over +;and the game must goto: + +;1. Buy-in screen for 1 or 2 player games +;2. Ladder screen for the next matchup +;3. Finale screens + + ;clear out howard speech flag so he can say it again on + ; new select screen. + CLR A0 + MOVE A0,@DONE_HOWARD + + ;set delay before allowing player to select a wrestler + movi 60,a0 + move a0,@are_we_waiting_f + + ;If that was a royal rumble, branch right now. The following code + ; assumes that PLYRNUMs match PLYR_SIDEs for human players. + move @royal_rumble,a14 + jrnz #finished_rumble + + ;Did a human player lose? + move @PSTATUS,a0 + move @match_winner,a1 + andn a1,a0 + jrnz #go_buyin + +;This player will keep on playing. +;Display ladder of progreesion which shows his next opponent. + + move @match_winner,a10 + dec a10 + JSRP pin_speed_in_case + jruc do_pregame + +#go_buyin +;Display 2 player buyin screen. +;Turn on appropriate messages for each player +;One guy lost, check if he achieved a high score. (Most wins) +;If so, allow him to enter initials just on his panel. + + ;if the loser had a win streak, do a random sound call. + calla loser_snd + + ;save old PSTATUS + move @PSTATUS,a0 + move a0,@OLD_PSTATUS + + ;did a human win? Check by ANDing match_winner with PSTATUS. + move @PSTATUS,a0 + move @match_winner,a1 + and a1,a0 + jrnz #human_won + + ;The cpu won + clr a0 + move a0,@match_winner + + ;decrement CURRENT_LADDER, because NEXT_IN_LADDER automatically + ; increments it. + move @CURRENT_LADDER,A0,L + subi 20h,a0 + move a0,@CURRENT_LADDER,L + +#human_won + ;use match_winner as our new PSTATUS. + move @match_winner,a0 + move a0,@PSTATUS + + calla is_final_match + jrc finished_game + + JSRP buyin_select + +;Clear the loser's wincount + movi p1winstreak,a1 + move @match_winner,a0 + + cmpi 1,a0 + jrnz #notp1 + movi p2winstreak,a1 + +#notp1 clr a14 + move a14,*a1 + + jruc do_pregame + +**** + +#finished_rumble + + ;save old PSTATUS +; move @PSTATUS,a14 +; move a14,@OLD_PSTATUS + + ;...no, DON'T save the old PSTATUS. For whatever reason, the + ;buyin/select stuff won't work with a PSTATUS of 0 and an + ;OLD_PSTATUS of 3. Evidently two people losing is too traumatic + ;an event for this rickety code to deal with. So we just pretend. + ;Maybe we fix this before we ship, maybe we don't. It works. + + ;create a set_images process to keep us animating while this + ; stuff is going on. + CREATE SET_IMAGES_PID,DO_SET_IMAGES + PUSHP a0 ;store set_images proc address + JSRP show_most_damage + + movk 1,a14 + move a14,@OLD_PSTATUS + + ;did the humans win? + move @p1winstreak,a0 + clr a14 + move a14,@p1winstreak + move a14,@p2winstreak + move a14,@p1oldwinstreak + move a14,@p2oldwinstreak + TEST a0 + jrz #rr_cpuwon + + ;create a set_images process to keep us animating while this + ; stuff is going on. + + ;set GAMSTATE to INPARTY--disallows buyins + movk INPARTY,a14 + move a14,@GAMSTATE + + JSRP do_fireworks + + PULLP a0 ;restore set_images proc address + calla KILL + + ;inc the 'human wins in rumble' audit + movi AUD_RRWINS,a0 + calla AUD1 + + JSRP GAME_BEATEN + + .if RR_AWARD = 1 + + ;zero entered_inits + clr a14 + move a14,@entered_inits,L + move a14,@entered_inits+20h,L + move a14,@entered_inits+40h,L + + jruc do_pregame + .endif + +#rr_cpuwon + + clr a14 + move a14,@PSTATUS + movk 3,a14 + move a14,@OLD_PSTATUS + move a14,@rr_loss + JSRP buyin_select + + ;clear royal_rumble + clr a14 + move a14,@rr_loss + move a14,@royal_rumble + + move @PSTATUS,a14 + jrnz do_pregame + + ;nobody bought in. drop to game over + jauc do_game_over +**** + +finished_game + ;player has won the entire game. + + ;set GAMSTATE to INPARTY--disallows buyins + movk INPARTY,a14 + move a14,@GAMSTATE + +;Audit total time for a 1 credit game + MOVI AUD_CREDLEN,A0 + MOVE @THIS_GAME_TIME,A1 + CALLA AUD + MOVI AUD_CREDLENNUM,A0 + CALLA AUD1 + CLR A0 + MOVE A0,@THIS_GAME_TIME + MOVE A0,@PSTARTS + + + ;create a set_images process to keep us animating while this + ; stuff is going on. + CREATE SET_IMAGES_PID,DO_SET_IMAGES + PUSHP a0 + JSRP do_fireworks + PULLP a0 + calla KILL + calla is_8_on_1 + jrnc #no_stories + JSRP show_wrestler_end_story +#no_stories + JSRP GAME_BEATEN + JSRP CREATE_TEXT_LINE + JAUC THIS_GAME_IS_BEATEN + +#buyin_mod + .long wwfselbkBMOD + .word -40,0 + .long 0 + +#no_fade + .long WGSF_Y_P,scorep,0 +LN1b_setup + JAM_STR wgsf24_ascii,12,0,200,77,WGSF_Y_P,0 +LN2b_setup + JAM_STR wgsf24_ascii,6,0,200,120,WGSF_Y_P,0 +#str_game + .byte "CHALLENGER",0 +#str_over + .byte "FOUND!",0 + .even + + +pprompt + .string "PLAYER ",0 + .even +ydid_prompt + .string " INFLICTED",0 + .even +pct_damage + .string "% OF THE TOTAL DAMAGE!!!",0 + .even +pprompt_setup + .ref osgemd_ascii +; JAM_STR osgmd8_ascii,10,0,200,140,SGMD8YEL,print_string_C2 + JAM_STR osgemd_ascii,10,0,200,140,BLUE,print_string_C2 + .even +pct_damage_setup +; JAM_STR osgmd8_ascii,10,0,200,155,SGMD8YEL,print_string_C2 + JAM_STR osgemd_ascii,10,0,200,163,BLUE,print_string_C2 + .even + .bss dmg_ram,16*64 + +#************************************************************************* +* + SUBRP show_most_damage + PUSHP a0,a1,a2,a4 + PUSHP a8,a9,a10,a11 + + clr a11 ; Clear out plyr damage totals + clr a1 ; Clear total damage done + move a11,@plyr_dmg_given,L + + movi process_ptrs,a8 ; Get process pointers +#find_damage_lp + move *a8+,a9,L ; Get player process pointer + jrz #find_done ; are we done ? - br = yes + move *a9(PLYR_TYPE),a10 ; Get the player type + jrnz #find_damage_lp ; Is this a drone - br = yes + move *a9(DAMAGE_GIVEN),a11 ; Get damage this player did + add a11,a1 ; Total the damage + move *a9(PLYRNUM),a10 ; Which player is this + sll 4,a10 ; Point to temp storage for this player + addi plyr_dmg_given,a10 + move a11,*a10 ; Store his damage + jruc #find_damage_lp ; Keep going +#find_done + movk 1,a11 ; Set player 1 + move @plyr_dmg_given,a8 ; Get player 1 damage + move @plyr_dmg_given+10h,a9 ; Get player 2 damage + cmp a8,a9 ; Player 1 did more damage ? + jrlt #p1_most ; br = yes + movk 2,a11 ; Set player 2 + move a9,a8 ; Set damage done +#p1_most + move a8,a9 ; Set up for conversion to % + movi 100,a10 ; Mult damage done by 100 + mpyu a10,a9 + divu a1,a9 ; Divide by total damage done + + movi pprompt_setup,a2 ; Show which player did most damage + calla setup_message + movi CLSDEAD,a4 + move a4,@mess_objid + move a11,a0 + movk 2,a1 + calla dec_to_asc + movi pprompt,a4 + calla copy_rom_string + calla concat_string + movi ydid_prompt,a4 + calla concat_rom_string + movi message_buffer,a4 + calla print_string_C2 + + movi pct_damage_setup,a2 ; Show how much damage he/she did + calla setup_message + movi CLSDEAD,a4 + move a4,@mess_objid + move a9,a0 + movi 100,a1 + calla dec_to_asc + calla copy_string + movi pct_damage,a4 + calla concat_rom_string + movi message_buffer,a4 + calla print_string_C2 + .ref hscore_colcyc + + calla hscore_colcyc + move a0,a8 + SLEEP TSEC ; Show for 1 second minimum + + movi TSEC*2,a9 ; Allow upto 2 more seconds +#wait_lp + SLEEPK 1 + calla get_all_buttons_cur + jrnz #sd_exit + dsjs a9,#wait_lp +#sd_exit + move a8,a0 + calla KILL + PULLP a8,a9,a10,a11 + PULLP a0,a1,a2,a4 + RETP + + +#***************************************************************************** +;Copy pXwinstreaks to pXoldwinstreaks, then +;increment winner's winstreak and clear loser's. + + SUBR increment_wincount + + ;save old streaks + move @p1winstreak,a14 + move a14,@p1oldwinstreak + move @p2winstreak,a14 + move a14,@p2oldwinstreak + + move @match_winner,a0 + move @PSTATUS,a14 + and a14,a0 + + ;inc/clear p1winstreak + move @p1winstreak,a1 + inc a1 + btst 0,a0 + jrnz #p1ok + clr a1 + +#p1ok PUSHP a2 + clr a2 + calla arm_winstreak_award + PULLP a2 + + move a1,@p1winstreak + move a1,a1 + jrnz #no_clr_p1_ws_awards + movi p1ws_award,a14 + calla rst_winstreak_awards +#no_clr_p1_ws_awards + +; ;inc/clear p1winstreakd (clear if lost, inc if won vs drones) +; btst 0,a0 +; jrz #clrp1d ;clr if we lost +; move @p1winstreakd,a1 +; move @PSTATUS,a14 +; btst 1,a14 +; jrz #incp1d ;inc if vs drone +; jruc #p1dset ;else no increment +; +;#incp1d inc a1 +; jruc #p1dset +;#clrp1d clr a1 +;#p1dset move a1,@p1winstreakd + + ;inc/clear p2winstreak + move @p2winstreak,a1 + inc a1 + btst 1,a0 + jrnz #p2ok + clr a1 +#p2ok PUSHP a2 + movk 1,a2 + calla arm_winstreak_award + PULLP a2 + move a1,@p2winstreak + move a1,a1 + jrnz #no_clr_p2_ws_awards + movi p2ws_award,a14 + calla rst_winstreak_awards +#no_clr_p2_ws_awards + +; ;inc/clear p2winstreakd (clear if lost, inc if won vs drones or +; ; value < 2. +; btst 1,a0 +; jrz #clrp2d ;clr if we lost +; move @p2winstreakd,a1 +; move @PSTATUS,a14 +; btst 0,a14 +; jrz #incp2d ;inc if vs drone +; jruc #p2dset ;else no increment +; +;#incp2d inc a1 +; jruc #p2dset +;#clrp2d clr a1 +;#p2dset move a1,@p2winstreakd + + ;adjust p1&p2winstreakd. three possibilities: + ; 1. 2p match. do nothing + ; 2. 1p match, player wins. inc his winstreak. + ; 3. 1p match, player loses. set both winstreaks to -1, unless + ; they're already negative, in which case we dec both. + + move @PSTATUS,a14 + cmpi 3,a14 + jreq #do_nothing + + move @match_winner,a0 + cmp a0,a14 + jrne #dec_both +; jruc #inc_one + +#inc_one + dec a0 + X16 a0 + addi p1winstreakd,a0 + move *a0,a14 + jrnn #ib_ok + clr a14 +#ib_ok inc a14 + move a14,*a0 + jruc #do_nothing + +#dec_both + move @p1winstreakd,a14 + jrn #db_ok + clr a14 +#db_ok dec a14 + move a14,@p1winstreakd + move a14,@p2winstreakd +; jruc #do_nothing + +#do_nothing + + rets + +#***************************************************************************** +* +* This is the master fight process. It's created once, and it doesn't end +* until the entire match is over. Between rounds, it's just suspended-- +* it doesn't actually die and get re-created. +* + + SUBR start_match + + ;skip some of this if we're in attract mode + move @PSTATUS,a14 + jrz #amode_battle + + move @total_matches,a14,W + inc a14 + move a14,@total_matches,W + CALLA SPECIAL_WIPEOUT + clr a14 ; Clear out stuff for finishing moves + move a14,@p1pins + move a14,@p2pins + move a14,@finish_completed + + movi p1mtch_award,a14 ; Reset the per match awards + calla rst_awards + movi p1rnd_award,a14 ; Reset the per round awards + calla rst_awards + +#amode_battle + + calla pal_clean + +**** ;routine display initialization + movk 1,a0 + move a0,@dpageflip + move a0,@HALT + +**** ;position the scroller + callr init_scroller + +**** ;If this is the final match, initialize FINAL_PTR. We can't do + ; it in NEXT_IN_LADDER because if we're speeding through the + ; rounds, that can happen while wrestler processes from the + ; previous round are still active and DEAD, so they gobble up + ; the first three slots and we end up with a 1v5 match. + calla is_final_match + jrnc #do_zf + movi FINAL_BATTLE_LINEUP+24,a14 + move a14,@FINAL_PTR,L + +**** ;World Y-position at which power bars toggle in z +#do_zf movi ZFLIP_POS,a0 + move a0,@ZFLIP_POS_VAR,L + +**** ;set up the ring. + movi ring_mod,a0 + move a0,@BAKMODS,L + calla BGND_UD1 + +**** ;init message_flag - clears 'already done' bits for move names + clr a0 + move a0,@message_flag,L + move a0,@MESSAGE_FLAGS,L ;clear which side has a message out + MOVE A0,@FLASH_FLAG ;clear out the 'doing flashes' flag + MOVE A0,@COMBO_FLASH_FLAG,L ;clear out combo flashing message + +**** ;kill off any perpetual yells that might be going on. + CALLA FIND_AND_KILL_ENDLESS + +**** ;create misc stuff like crowd, clocks, a wipe, and some debug stuff. + CREATE CROWD_PID,crowd_anim + CREATE TIMER_PID,match_timer + CREATE ZSHIFT_PID,SHIFT_BARS_IN_Z + CREATE FLASH_PID,maybe_do_flashes + clr a14 + move a14,@wrestler_count_proc,L + move @royal_rumble,a14 + jrnz #create_wcounter + calla is_8_on_1 + jrnc #no_wcounter +#create_wcounter + CREATE WCOUNT_PID,wrestler_counter + move a0,@wrestler_count_proc,L +#no_wcounter + + .if DIR_DEBUG + CREATE DIR_DEBUG_PID,dir_debug + .endif + + .if SCRT_DEBUG + CREATE SCRT_DEBUG_PID,scrt_debug + .endif + +**** ;create ropes + + movi ROPE_FRONT,a11 + CREATE ROPE_PID,rope + move a0,@front_rproc,L + + movi ROPE_BACK,a11 + CREATE ROPE_PID,rope + move a0,@back_rproc,L + + movi ROPE_LEFT,a11 + CREATE ROPE_PID,rope + move a0,@left_rproc,L + + movi ROPE_RIGHT,a11 + CREATE ROPE_PID,rope + move a0,@right_rproc,L + +**** ;initialize various other crap + clr a0 + move a0,@match_winner + MOVE A0,@DAM_MULT + MOVE A0,@combo_audit_done + move a0,@no_debris + move a0,@any_hits + MOVE A0,@PERFECT_WINS + MOVE A0,@MUSIC_HAP + MOVE A0,@WINS_OBJ,L + MOVE A0,@WINS_OBJ+20H,L + MOVE A0,@WINS_OBJ+40H,L + + .if DEBUG + move a0,@instant_death + .endif + +**** ;increment the battles started audit + movi AUD_VSHUMS,a0 + move @PSTATUS,a14 + JRZ NO_BATLES_AT_ALL + cmpi 03h,a14 + jreq #aud_vshumf + movi AUD_VSCPUS,a0 +#aud_vshumf + calla AUD1 +NO_BATLES_AT_ALL + + ;clear out the process_ptrs data + callr CLEAR_PROCESSES + +**** ;initialize the life and combo bars. + calla init_life_data + +**** ;create wrestler processes + + ;figure out if it's a 0-, 1-, or 2-player game, and branch. + MOVE @PSTATUS,A0 + jrz #0plyr + CMPI 3,A0 + JREQ #2plyr + +#1plyr ;1-player game + + ;create player process + movi PSIDE_PLYR1,a9 ;side on + clr a10 ;plyrnum + move @index1,a11 ;wrestlernum + + btst 0,A0 + jrnz #set + + movi PSIDE_PLYR2,a9 ;side on + movk 1,a10 ;plyrnum + move @index2,a11 ;wrestlernum + +#set movi PTYPE_PLAYER,a8 ;player type + SCREATE WMAIN_PID,wrestler_main + callr set_process_ptr2 + CREATE GETUP_PID,getup_meter + + +#ndrone ;create the drone processes + ;get the lineup for the coming battle + MOVE @CURRENT_LADDER,A4,L + MOVE *A4,A4,L ;battle lineup + + ;drone PLYRNUM's start at 2 + MOVK 2,A10 + move @NUM_OPPS,a3 + +#nxtdrn CALLA SORT_OUT_WRESTLER_NUM + +*jakeeee if you want a specific wrestler, put his number in A11 here ! + + movi PTYPE_DRONE,a8 ;player type + + ;set PLYR_SIDE for ENEMY drones--All these drones are bad guys. + ;In a 2v2 match, we can't use this code. + movi PSIDE_PLYR2,a9 + move @PSTATUS,a14 + btst 0,a14 ;plyr 1 human? + jrnz #pside_set + movi PSIDE_PLYR1,a9 +#pside_set + + .if DEBUG + move @skip_select,a0 + jrge #skp + movk 6,a11 ;make him a doink +#skp + .endif + + SCREATE WMAIN_PID,wrestler_main + callr set_process_ptr2 + CREATE GETUP_PID,getup_meter + SRL 8,A4 ;shift battle lineup + INC A10 ;inc PLYRNUM + dsj a3,#nxtdrn + + JRUC #wrestlers_created + +***** + +#0plyr ;0-player (attract mode) game + movi PTYPE_DRONE,a8 ;player type + movi PSIDE_PLYR1,a9 ;side on + movk 2,a10 ;wres num + move @index1,a11 ;wrestler + SCREATE WMAIN_PID,wrestler_main ;player 1 + callr set_process_ptr2 + CREATE GETUP_PID,getup_meter + + move @CURRENT_LADDER,a4,L + move *a4,a4,L + move @NUM_OPPS,a3 + movi PTYPE_DRONE,a8 + movi PSIDE_PLYR2,a9 +#nxt calla SORT_OUT_WRESTLER_NUM + srl 8,a4 ;shift battle lineup + inc a10 ;inc PLYRNUM + SCREATE WMAIN_PID,wrestler_main + callr set_process_ptr2 + CREATE GETUP_PID,getup_meter +#ngup dsj a3,#nxt + + jruc #wrestlers_created + +***** + +#2plyr ;2-player game + + movi PTYPE_PLAYER,a8 ;player type + move @PSTATUS,a0 + btst 0,a0 + jrnz #ok + movi PTYPE_DRONE,a8 ;player type +#ok movi PSIDE_PLYR1,a9 ;side on + clr a10 ;wres num + move @index1,a11 ;wrestler + SCREATE WMAIN_PID,wrestler_main ;player 1 + callr set_process_ptr2 + CREATE GETUP_PID,getup_meter + + movi PTYPE_PLAYER,a8 ;player type + move @PSTATUS,a0 + btst 1,a0 + jrnz #ok1 + movi PTYPE_DRONE,a8 ;player type +#ok1 movi PSIDE_PLYR2,a9 ;side on + + ;if we're in royal rumble mode, second guy is on first team + move @royal_rumble,a14 + sub a14,a9 + + movk 1,a10 ;wres num + move @index2,a11 ;wrestler + SCREATE WMAIN_PID,wrestler_main ;player 2 + callr set_process_ptr2 + CREATE GETUP_PID,getup_meter + + ;set the 'too late now to choose buddy mode' flag + movk 1,a14 + move a14,@buddy_mode_checked + + ;If they selected buddy mode, add a pair of drones. + ;WE HAVE TO COMPUTE buddy_mode_on OURSELVES, because + ; the code that normally does that kind of thing hasn't + ; gone off yet. + .ref p1powerup_request + .ref p2powerup_request + move @p1powerup_request,a8,L + move @p2powerup_request,a9,L + and a9,a8 + andi BUDDY_MODE,a8 + move a8,@buddy_mode_on + jrz #no_buddies + + calla choose_buddies + PUSH a0,a1 ;store the two wrestlernums + + movk PTYPE_DRONE,a8 + movi PSIDE_PLYR1,a9 + movk 2,a10 + PULL a11 ;get the first buddy + SCREATE WMAIN_PID,wrestler_main + callr set_process_ptr2 + + movk PTYPE_DRONE,a8 + movk PSIDE_PLYR2,a9 + movk 3,a10 + PULL a11 ;get the second buddy + SCREATE WMAIN_PID,wrestler_main + callr set_process_ptr2 + + jruc #wrestlers_created + +#no_buddies + + ;if we're in royal rumble mode, create the starting bad guys. + move @royal_rumble,a14 + jrz #wrestlers_created + + ;you never hit the progress screen in royal_rumble mode, so we've + ; got to set up some stuff by hand. + + .ref get_royal_lineup + + calla get_royal_lineup + movi FINAL_BATTLE_LINEUP,a0 + move *a0,a1,L + andi 0000FFFFh,a1 + ori 02000000h,a1 + + move @CURRENT_LADDER,a14,L + move a1,*a14,L + movk 2,a14 + move a14,@NUM_OPPS + + ;set FINAL_PTR to the next guy to fight. + addi 2*8,a0 + move a0,@FINAL_PTR,L + + jruc #ndrone + +#wrestlers_created + +**** ;create the rewire monitor - this has to be done AFTER all the + ; set_process_ptr2's have been called + CREATE REWIRE_PID,rewire_monitor + + ;play the battle music + + .if DEBUG + movi 40,a3 + move @skip_select,a14 + jrnz #marked_snd + .endif + + movk 16,a3 + move @royal_rumble,a14 + jrnz music_selected + calla is_8_on_1 + jrc music_selected + movk 25,a3 + move @hcount,a14 + srl 1,a14 + jrnc music_selected + movk 15,a3 +music_selected + move a3,@temp_music + + calla SNDSND + +#marked_snd + + ;SET CROWD VOLUME TO 100% OF MASTER VOLUME + MOVI 55ABH+5,A3 + CALLA SNDSND + MOVI 0FF00H,A3 + CALLA SNDSND + ;and the crowd + movi 2065,a3 + calla SNDSND + + CALLA CLEAR_SPEECH_REPEAT + + callr init_joystat + callr init_joy_dtime + + callr init_reduce_bog + + calla init_special_objlist + + clr a0 + move a0,@match_over + + CALLA RESETUP_PROGRESS + calla INIT_SKIRTS + + SLEEPK 1 + + calla BGND_UD1 + SLEEPK 1 + +; CREATE SKIRT_PID,CHANGE_SKIRTS + + ;if this is the first match after attract mode, cue vince. + move @total_matches,a14 + dec a14 + jrnz #no_vince_intro + CREATE SKIRT_PID,CHANGE_SKIRTS + move @PSTATUS,A0 + CMPI 3,A0 + JRNE #no_vince_intro + + movi 0E0h,a0 + calla ADD_VOICE + MOVI 01FAH,A0 + calla ADD_VOICE + JRUC INTRO_DONE + +#no_vince_intro + MOVK 5,A0 + CALLA RNDRNG0 + JRNZ INTRO_DONE + MOVI THIS_IS_FOR_THE_MARBLES,A0 + CALLA ADD_VOICE +INTRO_DONE + + calla BGND_UD1 + SLEEPK 2 + calla BGND_UD1 + + clr a8 ;left meter for player 0 + movk 1,a9 ;right meter for player 1 + move @PSTATUS,a0 + jrz drone_pointers + + move @royal_rumble,a14 + jrnz #rumble_pointers + + cmpi 3,a0 + jreq meter_pointers_set + + movk 2,a9 + srl 1,a0 + jrz meter_pointers_set + movk 1,a9 + movk 2,a8 + jruc meter_pointers_set + +#rumble_pointers + movk 2,a9 + jruc meter_pointers_set + +drone_pointers + movk 2,a8 + movk 3,a9 +meter_pointers_set + CREATE METER_PID,meters ;life/turbo/names + + movk 1,a0 + move a0,@DISPLAYON + + clr a0 + move a0,@IRQSKYE + + .if DEBUG +;FIX THAT DAM ANNOYING START UP DMA GLITCH !!!!!!! + move @skip_select,a0 + JRNZ DONT_OPEN_ANYTHING + .endif + + CREATE SET_IMAGES_PID,DO_SET_IMAGES + + PUSHP A0 + movk 18,a8 ;20 + movk 4,a9 ;6 + JSRP OPEN_PROGRESS_SCREEN +; movi PU_CHECK_PID,a0 +; calla IKIL1C + PULLP A0 + + CALLA KILL +DONT_OPEN_ANYTHING + MOVI DUMRETS,A0 + MOVE A0,@WHICH_SCREEN,L + + clr a1 + callr get_process_ptr +; clr a14 +;Don't allow meters for the first x seconds of round + movi 10*60,a14 + move a14,*a0(DELAY_METER) + + movk 1,a1 + callr get_process_ptr +;Don't allow meters for the first x seconds of round + movi 14*60,a14 + move a14,*a0(DELAY_METER) + + ;initialize the bgnd_cntr + movk 1,a14 + move a14,@bgnd_cntr + + ;initialize annc_rnd_winner_done + clr a14 + move a14,@annc_rnd_winner_done + +; CREATE0 show_options + +#loop calla check_collisions + callr final_confine + calla set_images + + ;BGND_UD1 every eight ticks. + move @bgnd_cntr,a2 + dsjs a2,#no_bg + + ;time to do it - but if there's a AUDIT_UD_PID process going, wait + ; until it dies. This could lead to a delay of up to three ticks. + inc a2 ;...so that if we skip, we try next tick. + + ;check this flag instead of using the extremely slow EXISTP + move @audit_ud_flag,a14 + jrnz #no_bg + + calla BGND_UD1 + movk 8,a2 +#no_bg move a2,@bgnd_cntr + + SLEEPK 1 + + calla read_switches + + move @match_over,a0 + jrz #not_over + + calla postgame_audits + + RETP + +#not_over + + calla scroll_world + + move @round_tickcount,a0 + inc a0 + move a0,@round_tickcount + + move @match_time,a0,L ;10's & 1's + jrnz #loop + + .if DEBUG + ;if we're in fight_debug mode, roll the clock around + move @fight_debug,a14 + jrnz #wraparound + .endif + + ;if we're in attract mode, roll the clock around + move @PSTATUS,a14 + jrnz #norm + +#wraparound + movi 00090009h,a14 + move a14,@match_time,L + jruc #not_over + +#norm + movk 1,a0 + move a0,@HALT + + +;Timer on the round expired + + clr a1 + callr get_process_ptr + + move a1,*a0(OBJ_XVEL),L + move a1,*a0(OBJ_YVEL),L + move a1,*a0(OBJ_ZVEL),L + movi -1,a1 + move a1,@MATCH_TIMERS,L + + movk 1,a1 + callr get_process_ptr + + clr a1 + move a1,*a0(OBJ_XVEL),L + move a1,*a0(OBJ_YVEL),L + move a1,*a0(OBJ_ZVEL),L + movi -1,a1 + move a1,@MATCH_TIMERS+32,L + + calla DO_CROWD_CHEER + + CREATE CYCPID,CREATE_TIMEOUT + + movi 55,a9 +#wait SLEEPK 1 + PUSH a9,a11 + calla set_images ;Make shadows shift... + PULL a9,a11 + dsjs a9,#wait + + CREATE ANNC_PID,announce_rnd_winner + .if DEBUG + move a13,*a0(PDATA),L ;#CREATOR (pdata) + movi $,a14 + move a14,*a0(PDATA+20h),L ;#ORIGIN + .endif + + movk 28,a9 +#wait1 SLEEPK 1 + PUSH a9,a11 + calla set_images ;Make shadows shift... + PULL a9,a11 + dsjs a9,#wait1 + +; move a11,a0 +; calla KILL + + movi CLSNEUT|TYPTEXT|SUBMES1,a0 + calla obj_del1c ;delete text/plates + +#wait2 SLEEPK 1 + calla set_images ;Make shadows shift... +; move @HALT,a0 + movi ANNC_PID,a0 + clr a1 + not a1 + calla EXISTP + jrnz #wait2 + + move @p1rounds,a0 + cmpi 2,a0 + jrz #end + move @p2rounds,a0 + cmpi 2,a0 + jrnz #not_end + +#end +;Match is over. + move a0,@match_over + +;Move match winning players match awards to winning players winstread awards, +;annunciate match awards for winning player, then clear get out + +#not_end + jruc #loop + +********** +;Is this duplicated effort? Jason, look into this... + SUBR DO_SET_IMAGES + CALLA set_images + SLOOP 1,DO_SET_IMAGES + +********** + + SUBR CLEAR_PROCESSES + + clr a0 + movi wres0_objs,a1 + movi NUM_WRES*MAX_PIECES,a2 +#clr_lp + move a0,*a1+,L + dsj a2,#clr_lp + + movi process_ptrs,a1 + movi NUM_WRES,a2 +#clr_ptr + move a0,*a1+,L + dsj a2,#clr_ptr + rets + +ring_mod + .long ringBMOD ;wrestling ring + .word 105,-450 ;x,y + .long 0 + +#***************************************************************************** +* +* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +* can probably get rid of this crap once scroller is finished +* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + SUBRP update_positions + + move *a13(PLYRNUM),a0 + X32 a0 + + move a0,a1 + addi wrestler_x,a1 + move *a13(OBJ_XPOS),a14,L + move a14,*a1,L + + move a0,a1 + addi wrestler_y,a1 +;;;; move *a13(OBJ_YPOS),a14,L + move *a13(GROUND_Y),a14 + sll 16,a14 + + jrnn #ok + + clr a14 +#ok move a14,*a1,L + + move a0,a1 + addi wrestler_z,a1 + move *a13(OBJ_ZPOS),a14,L + move a14,*a1,L + rets + +#***************************************************************************** +* +* a8 = player type (PLAYER, DRONE, REFEREE) +* a9 = player side (PLYR1, PLYR2, NONE) +* a10 = player number +* a11 = wrestler number + + + SUBRP wrestler_main + + move a8,*a13(PLYR_TYPE) + move a9,*a13(PLYR_SIDE) + move a10,*a13(PLYRNUM) + move a11,*a13(WRESTLERNUM) + + MOVE A10,A0 + CMPI 2,A0 + JRGE NO_POINT_ITS_A_DRONE + CLR A1 + SLL 5,A0 + ADDI MATCH_TIMERS,A0 + MOVE A1,*A0,L +NO_POINT_ITS_A_DRONE + + movi 112,a0 + move a0,*a13(OBJ_PRIORITY) + + callr reset_start + + calla choose_pal ;sets b0 + clr a1 ;y pos + movi D2ST2B03,a2 ;* image + movi 110,a3 ;z pos + movi DMAWNZ|M_3D,a4 ;DMA flags + move a4,*a13(OBJ_CONTROL) + movi CLSPLYR | TYPPLYR,a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + + movk MAX_PIECES,a9 +#nxt_obj + PUSH b0 + calla BEGINOBJP + PULL b0 + move a8,-*a10,L + dsj a9,#nxt_obj + + calla BEGINOBJP + move a8,*a13(ATTIMG_IMG),L + clr a0 + move a0,*a13(ATTIMG_CUR_FRAME),L + move a0,*a13(ATTIMG_LAST_FRAME),L + move a0,*a13(GETUP_TIME) + move a0,*a13(COMBO_COUNT) + move a0,*a13(COMBO_START) + move a0,*a13(OUTSIDE_ALONE) + move a0,*a13(SPECIAL_MOVE_ADDR),L + + move a0,*a13(LAST_HIT_TIME),L + move a0,*a13(LAST_FLING_ATTEMPT),L + move a0,*a13(HIT_GATE_TIME),L + move a0,*a13(LAST_HEADHOLD),L + move a0,*a13(LAST_FLING),L + move a0,*a13(LAST_SPUNCH),L + move a0,*a13(LAST_SKICK),L + move a0,*a13(CONSECUTIVE_HITS) + move a0,*a13(LAST_DAMAGE),L + move a0,*a13(DAMAGE_GIVEN) + movi 8*60,a0 + move a0,*a13(DELAY_METER) + + move *a8(OPAL),a0 + move a0,*a13(OBJ_PAL) + move a0,*a13(MY_PAL) + + movi shadow_p,a0 + calla pal_getf + move *a13(OBJ_BASE),a8,L + move *a8,a8,L ;1st object + move a0,*a8(OPAL) ;set palette for shadow + + movi MAT_Y,a0 + move a0,*a13(GROUND_Y) + + clr a0 + move a0,*a13(ATTACK_TIME) + move a0,*a13(INRING) + MOVE A0,*A13(COMBO_START) + MOVE A0,*A13(COMBO_COUNT) + + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_YVEL),L + move a0,*a13(OBJ_ZVEL),L + move a0,*a13(SHADTRAIL_PROC),L + move a0,*a13(I_WILL_DIE) + move a0,*a13(STATUS_FLAGS),L + + move a0,*a13(BUT_VAL_CUR) + move a0,*a13(BUT_VAL_DOWN) + move a0,*a13(BUT_VAL_UP) + move a0,*a13(STICK_VAL_CUR) + move a0,*a13(STICK_VAL_DOWN) + move a0,*a13(STICK_VAL_UP) + move a0,*a13(STICK_REL_CUR) + move a0,*a13(STICK_REL_NEW) + + +; calla clear_damage_log + callr ani_init ;start default animation + + move @PCNT,a14 + move a14,*a13(FOOT_PCNT),W ;init foot timer + + .if COL_DEBUG + move a13,a10 + CREATE CDEBUG_PID,collis_debug + move a13,a10 + CREATE CDEBUG_PID,collis_debug2 + .endif + + calla init_smoves + calla set_collision_boxes + + .ref drone_calcskill + calla drone_calcskill + +;#wait MOVE @VCOUNT,a0 +; andi 7,a0 +; jrnz #wait +; TINTON +; move @VCOUNT,a0 +; PUSH a0 + + +; move @VCOUNT,a0 +; PULL a1 +; sub a1,a0 +; TINTOFF + + SLEEPK 1 + + callr calc_closest + +#loop +;-----> calla animate_wrestler + + calla ARE_WE_IN_RING + + calla set_collision_boxes + + callr confine_wrestler + callr confine_wrestler_fix2 + + callr update_newfacing + + callr update_positions ;used by scroller (temp!) + + move *a13(PLYR_TYPE),a0 + jrz #hmn ;Human? + move *a13(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #zmb ;Zombie? + calla drone_main +#zmb +#hmn + +; TINTOFF + movk 1,a0 + move *a13(STATUS_FLAGS),a14 + btst B_KOD,a14 + jrz #slp + movi >7fff,a0 +#slp SLEEPR a0 +; TINTON + + MOVE *A13(RISK),A0 + JRZ NO_DECREMENT + DEC A0 + MOVE A0,*A13(RISK) + + andi 7fffh,a0 + jrnz NO_DECREMENT +;Turn off taunt high risk move bonus + move a0,*a13(RISK) + +NO_DECREMENT + + callr update_joystat + callr count_button_presses + + calla keep_onscreen + + calla wrestler_veladd ;<------- + callr wrestler_friction ;<------- + + calla animate_wrestler ;<------- + calla set_collision_boxes ;<------- + + callr confine_wrestler ;<--- temp fix! + callr confine_wrestler_fix1 + + callr calc_closest2 + + callr move_wrestler + +;----> calla wrestler_veladd +;----> callr wrestler_friction + + callr update_links + + calla set_collision_boxes + calla overlap_collision + + + move *a13(ANIMODE),a0 + btst MODE_KEEPATTACHED_BIT,a0 + jrz #no_attach + callr master_keep_attached +#no_attach + + + move *a13(ANIMODE),a0 + btst MODE_NOAUTOFLIP_BIT,a0 + jrnz #no_flip + move a13,a0 + callr set_wrestler_xflip +#no_flip + + callr update_joy_dtime + +; move *a13(BURNOUT_COUNT),a0 +; jrz #skp +; dec a0 +; move a0,*a13(BURNOUT_COUNT) +;#skp +;This is for delaying the reading of buttons just after regaining +;control from being flung. This will stop inadvertant moves from happening +;while the player is still whacking on his buttons + + move *a13(DELAY_BUTNS),a0 + jrz #skp2 + dec a0 + move a0,*a13(DELAY_BUTNS) +#skp2 +;This is for delaying collisions when a player gets up + + move *a13(SAFE_TIME),a0 + jrz #skp3 + dec a0 + move a0,*a13(SAFE_TIME) +#skp3 +;This is for delaying the reappearance of a getup meter + + move *a13(DELAY_METER),a0 + jrz #skp4 + dec a0 + move a0,*a13(DELAY_METER) +#skp4 +;This is for disallowing movement by wrestler + + move *a13(IMMOBILIZE_TIME),a0 + jrz #skp5 + dec a0 + move a0,*a13(IMMOBILIZE_TIME) +#skp5 +;This is for walking fast powerup + + move *a13(WALK_FAST),a0 + jrz #skp6 + jrn #skp6 + dec a0 + move a0,*a13(WALK_FAST) +#skp6 + move *a13(GETUP_TIME),a0 + jrz #loop + + move @match_time,a14,L + jrnz #notend +;Match timer ran out... + clr a0 + move a0,*a13(GETUP_TIME) + jruc #loop +#notend + move *a13(DELAY_METER),a14 + jrz #reg +;Don't want to allow getup time to be set this close to last time! + ;allow the meter to come right back if stay_down is set + .if DEBUG + move @stay_down,a14 + jrnz #reg + .endif + clr a0 + move a0,*a13(GETUP_TIME) + jrz #loop +#reg + + .if DEBUG +;If stay_down flag is set, don't decrement + move @stay_down,a14 + jrz #dec + inc a0 +#dec + .endif + dec a0 + + move a0,*a13(GETUP_TIME) + jrz #clr_dizzy + +#skip + +;NOTE: +;Drones will have to fill up their meter +;at a faster pace! + +;Allow players to whack buttons to speed +;up their recovery from getup_time. +;Remember, the wrestler's meter doesn't have to be visible for him +;to still have a getup time set! +;As long as getup_time has a value, he is stuck. + + ;get data on this and last ticks + move a13,a0 + calla wres_get_but_val_down + move a0,a2 + move a13,a0 + calla wres_get_stick_val_down + or a2,a0 + move *a13(STATUS_FLAGS),a1 + + move a1,a14 + andni M_PRESS_LAST,a14 + TEST a0 + jrz #set_flag + ori M_PRESS_LAST,a14 +#set_flag + move a14,*a13(STATUS_FLAGS) + + TEST a0 + jrnz #deduct_three + BTST B_PRESS_LAST,a1 + jrz #loop + +#deduct_three + move *a13(GETUP_TIME),a14 + subk 3,a14 + jrnn #ok + clr a14 +#ok + move a14,*a13(GETUP_TIME) + jrp #loop + + +#clr_dizzy + clr a0 + move a0,*a13(PLYR_DIZZY) + move a0,*a13(STARS_FLAG) ;Gets rid of them... + +;Delay button reads + movi 40,a0 + move a0,*a13(DELAY_BUTNS) + + jruc #loop + +#***************************************************************************** + + SUBR reset_for_round + +;Reset world and both wrestlers for the start +;of a new round - Called from lifebar. + + PUSH a13 + + clr a1 +#lp0 PUSH a1 + callr reset_wrestle + PULL a1 + inc a1 + cmpi NUM_WRES,a1 + jrlt #lp0 + + PULL a13 + + move @current_round,a0 + inc a0 + move a0,@current_round + + ;reset life data + calla init_rnd_life_data + + ;reset special move processes + callr reset_smoves + + ;reset match_time + movk 9,a0 + move a0,@match_time ;10's + movk 9,a0 + move a0,@match_time+10h ;1's + clr a0 + move a0,@match_time+20h ;fractional + + ;reset various other crap + clr a0 + move a0,@any_hits + + callr init_reduce_bog + +nobody_home + rets + +#***************************************************************************** + +reset_wrestle + callr get_process_ptr + move a0,a13 + jrz nobody_home + + calla drone_change_back + + clr a0 + move a0,*a13(PLYR_DIZZY_CNT) +;Don't allow meters for the first x seconds of round + movi 14*60,a0 + move a0,*a13(DELAY_METER) + + move *a13(PLYRNUM),a10 + +reset_start + + ;choose starting position - our index into the #teamX_starts table + ; is the number of teammates with PLYRNUM's lower than ours. (0-2) + move *a13(PLYR_SIDE),a0 + movi process_ptrs,a1 + clr a2 + +#loop0 move *a1+,a14,L + jrz #loop0 ;skip inactive + cmp a13,a14 + jreq #set0 ;hit self -> we're done + move *a14(PLYR_SIDE),a14 + cmp a14,a0 + jrne #loop0 + inc a2 ;lower PSTATUS, same PLYR_SIDE, so inc index + jruc #loop0 + +#set0 ;a2 is index. + X64 a2 + movi #team1_starts,a9 + TEST a0 ;team == 0? + jrz #add + movi #team2_starts,a9 +#add add a2,a9 + + move *a9+,a0 + sll 16,a0 ;x val + move a0,*a13(OBJ_XPOS),L + move *a9+,a0 + sll 16,a0 ;z val + move a0,*a13(OBJ_ZPOS),L + + clr a0 + move a0,*a13(OBJ_YPOS),L + + movi MAT_Y,a0 + move a0,*a13(GROUND_Y) + +;From veladd + move *a13(GROUND_Y),a2 + sll 16,a2 + move *a13(OBJ_YPOS),a0,L + sub a2,a0 ;- GROUND_Y + move *a13(OBJ_YVEL),a1,L + add a1,a0 + jrnn #yok + + clr a0 + move a0,*a13(OBJ_YVEL),L +#yok + add a2,a0 ;+ GROUND_Y + move a0,*a13(OBJ_YPOS),L + + move a10,a0 + X32 a0 + addi obj_look,a0 + move *a0,a0,L ;* start of objects + move a0,*a13(OBJ_BASE),L + move a0,a10 + addi 32*MAX_PIECES,a10 ;start at end to reverse priorities + + move *a9+,a0 + move a0,*a13(NEW_FACING_DIR) + move a0,*a13(FACING_DIR) + + clr a0 ;x pos + move a0,*a13(PLYRMODE) + move a0,*a13(PLYR_DIZZY) + move a0,*a13(ANIMODE) + move a0,*a13(ANIMODE2) + +; movi MAT_Y,a0 +; move a0,*a13(GROUND_Y) + + clr a0 +; move a0,*a13(BURNOUT_COUNT) + move a0,*a13(INRING) + + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_YVEL),L + move a0,*a13(OBJ_ZVEL),L + +; calla clear_damage_log + callr ani_init ;start default animation + + move @PCNT,a14 + move a14,*a13(FOOT_PCNT),W ;init foot timer + + rets + + ;X,Z,face_dir,unused for team 0 +#team1_starts + .word RING_X_CENTER-85,1127+93,9,0 ;first player on team + .word RING_X_CENTER-150,1127+170,9,0 ;second + .word RING_X_CENTER-20,1127+16,10,0 ;third + + ;X,Z,face_dir,unused for team 1 +#team2_starts + .word RING_X_CENTER+85,1103+93,6,0 ;first player on team + .word RING_X_CENTER+150,1103+170,5,0 ;second + .word RING_X_CENTER+20,1103+16,6,0 ;third + + +#***************************************************************************** + + SUBR reset_for_round2 + + PUSH a13 + + clr a14 + move a14,@annc_rnd_winner_done + +;un-canned for NUM_WRES wrestlers + + clr a1 +#lp1 PUSH a1 + callr reset_wrestle2 + PULL a1 + inc a1 + cmpi NUM_WRES,a1 + jrlt #lp1 + + PULL a13 + rets + +reset_wrestle2 + callr get_process_ptr + move a0,a13 + jrz nobody_home + + calla drone_change_back + + movk 30,a0 + move a0,*a13(IMMOBILIZE_TIME) + + ;Re-initialize these variables between rounds + clr a0 + move a0,*a13(PLYR_DIZZY_CNT) + move a0,*a13(GETUP_TIME) + move a0,*a13(AUTO_PIN_CNTDOWN) + move a0,*a13(SPECIAL_MOVE_ADDR),L + move a0,*a13(LAST_HIT_TIME),L + move a0,*a13(LAST_FLING_ATTEMPT),L + move a0,*a13(HIT_GATE_TIME),L + move a0,*a13(LAST_HEADHOLD),L + move a0,*a13(LAST_SPUNCH),L + move a0,*a13(LAST_SKICK),L + move a0,*a13(CONSECUTIVE_HITS) + move a0,*a13(LAST_FLING),L + move a0,*a13(LAST_HIPTOSS),L + move a0,*a13(LAST_DAMAGE),L + + ;clear STATUS_FLAGS, except for bits in SF_RESET_MASK, + ; which should be preserved between rounds. + move *a13(STATUS_FLAGS),a14,L + andi SF_RESET_MASK,a14 + move a14,*a13(STATUS_FLAGS),L + + ;set PTIME to 1, just in case they were KO'd last round. + movk 1,a14 + move a14,*a13(PTIME) + + move *a13(PLYRNUM),a10 + +reset_start2 + callr calc_closest + calla set_collision_boxes + callr confine_wrestler + callr update_positions ;used by scroller (temp!) + callr update_joystat + callr count_button_presses + calla wrestler_veladd ;<------- + callr wrestler_friction ;<------- + calla set_collision_boxes ;<------- + callr confine_wrestler ;<--- temp fix! + callr calc_closest + callr move_wrestler + callr ani_init + callr update_links + calla set_collision_boxes + calla overlap_collision + + move a13,a0 + callr set_wrestler_xflip + callr update_joy_dtime + calla drone_calcskill + + rets + + +#***************************************************************************** +* +* wrestler object blocks + +obj_look + .long wres0_objs ;0 + .long wres1_objs ;1 + .long wres2_objs ;2 + .long wres3_objs ;3 + .long wres4_objs ;4 + .long wres5_objs ;5 + .long wres6_objs ;6 + .long wres7_objs ;7 + + +#***************************************************************************** +* +* initializes animations for each wrestler +* +* a13 = * wrestler process + + SUBR ani_init + + + movi 100h,a0 + move a0,*a13(ANI_SPEED) ;normal speed animations + + clr a0 + move a0,*a13(I_WILL_DIE) + .ref hyper_speed_on + + move @hyper_speed_on,a14 + move a14,*a13(WALK_FAST) +; move a0,*a13(WALK_FAST) + + move a0,*a13(ATTIMG_CUR_FRAME),L + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #init_addr,a0 + move *a0,a0,L + call a0 + + rets + +#init_addr + .long bret_ani_init ;0 Bret Hart + .long razor_ani_init ;1 Razor Ramon + .long taker_ani_init ;2 Undertaker + .long yoko_ani_init ;3 Yokozuna + .long shawn_ani_init ;4 Shawn Michaels + .long bam_ani_init ;5 Bam Bam + .long doink_ani_init ;6 Doink + .long doink_ani_init ;7 spare + .long lex_ani_init ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** +* a13 = ptr to process +* a1 = player/drone number 0-? + +;old version - used by PROGRESS.ASM + + SUBR set_process_ptr + + PUSH a1 + X32 a1 + addi process_ptrs,a1 + move a13,*a1,L + PULL a1 + rets + +#***************************************************************************** +* a0 = ptr to process +* a9 = side (0 or 1) +* a10 = player/drone number 0-? +* a11 = WRESTLERNUM + +;new version - used here in WRESTLE.ASM because the new pal selector routine +; requires that process_ptrs are all set up before any of the wrestler +; processes actually wake up. set_process_ptr2 is called by the code that +; creates wrestler_main procs, not by wrestler_main itself. + +;it also sets PLYRNUM and WRESTLERNUM, 'cuz the pal thing needs those +; too. What a pain, eh? (And now PLYR_SIDE, too) + + SUBRP set_process_ptr2 + + PUSH a10 + X32 a10 + addi process_ptrs,a10 + move a0,*a10,L + PULL a10 + + move a9,*a0(PLYR_SIDE) + move a10,*a0(PLYRNUM) + move a11,*a0(WRESTLERNUM) + + rets + +#***************************************************************************** +* a1 = player/drone number 0-? +* returns ptr in a0 + + SUBR get_process_ptr + + PUSH a1 + X32 a1 + addi process_ptrs,a1 + move *a1,a0,L + PULL a1 + rets + +#***************************************************************************** +* +* a13 = * to wrestler process +* +* breaks links if both wrestlers not attached to each other +* + + SUBRP update_links + + move *a13(ATTACH_PROC),a1,L ;proc attached to + jrz #exit ;not attached + move *a1(ATTACH_PROC),a0,L + cmp a0,a13 ;pointing to each other? + jreq #exit ;ok + + clr a0 + move a0,*a13(ATTACH_PROC),L +#exit rets + +#***************************************************************************** +* + + SUBRP update_newfacing + + + callr get_opp_process ;closest opponent process + move a0,a10 + + movi MOVE_RIGHT,a0 + move *a13(OBJ_XPOS),a2,L + move *a10(OBJ_XPOS),a3,L + cmp a2,a3 ;a3-a2 + jrgt #right + movi MOVE_LEFT,a0 + +#right movi MOVE_DOWN,a1 + move *a13(OBJ_ZPOS),a2,L + move *a10(OBJ_ZPOS),a3,L + cmp a2,a3 ;a3-a2 + jrgt #down + movi MOVE_UP,a1 + +#down or a1,a0 + move a0,*a13(NEW_FACING_DIR) + + rets + +#***************************************************************************** +* +* sets x-flip based on facing direction +* +* a0 = * wrestler process + + + SUBR set_wrestler_xflip + + move *a0(FACING_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #right + + move *a0(OBJ_CONTROL),a14 + ori M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +#right move *a0(OBJ_CONTROL),a14 + andni M_FLIPH,a14 + move a14,*a0(OBJ_CONTROL) + + rets + +#***************************************************************************** +* +* confines wrestler in/out of ring +* and sets CAN_MOVE_DIR bits +* + + SUBRP confine_wrestler + + clr a7 ;can move in all directions + + move *a13(ANIMODE),a0 + btst MODE_NOCONFINE_BIT,a0 + jrnz #no_confine + + move *a13(PLYRMODE),a0 + cmpi MODE_ATTACHED,a0 + jreq #no_confine + + move *a13(INRING),a0 + jrnz #outring + + ;We're inside the ring + ;Check against the top ropes. + movi RING_TOP,a0 + move *a13(OBJ_ZPOSINT),a5 + cmp a0,a5 ;zpos - top + jrgt #zu_ok + jreq #no_u + + ;set Z to top of ring + move a0,*a13(Z_BOUND) + sll 16,a0 + move a0,*a13(OBJ_ZPOS),L + + ;climb out if allowed + calla ck_climb_out_top + +#no_u ;just inside - don't adjust, but don't go any further. + ori MOVE_UP,a7 ;can't move up + jruc #check_x + +#zu_ok ;Check aginst bottom ropes + movi RING_BOT,a0 ;zpos - bot + cmp a0,a5 + jrlt #zd_ok + jreq #no_d + + ;set Z to bottom of ring + move a0,*a13(Z_BOUND) + sll 16,a0 + move a0,*a13(OBJ_ZPOS),L + + ;climb out if allowed + calla ck_climb_out_bot + +#no_d ;just inside - don't adjust, but don't go any further. + ori MOVE_DOWN,a7 ;can't move down + jruc #check_x + +#zd_ok ;no z problems. zero Z_BOUND + clr a14 + move a14,*a13(Z_BOUND) + +#check_x + ;Check left edge of collision box against left rope + move *a13(OBJ_COLLX1),a5 + + ;first see if we're even in the ballpark. + movi vln_left_rope,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x2 + jrgt #xl_ok + + ;close enough for a more careful check... + callr calc_line_x + cmp a0,a5 ;xpos - a0 + jrgt #xl_ok + jreq #no_l + + + ;we're past the left rope. see if we're attached + move *a13(ATTACH_PROC),a14,L + jrz #not + + ;I'm attached, which means both me and my opponent are gonna get + ; moved. Figure the right amount, apply it to both of us, then + ; wobble the ropes and bounce both of us away. + + ;a0 is rope X, a5 is left edge of our collbox. Move us and our + ; opponent right (a0 - a5) pixels. + sub a5,a0 + move *a13(OBJ_XPOSINT),a14 + add a0,a14 + move a14,*a13(OBJ_XPOSINT) + + move *a13(ATTACH_PROC),a5,L + move *a5(OBJ_XPOSINT),a14 + add a0,a14 + move a14,*a5(OBJ_XPOSINT) + + ;If either I or my opponent has a nonzero X velocity other than + ; 40000h, give us both Xvel 40000h, Yvel 30000h. + + ;Skip the velocity crap if I'm on the ground. + move *a13(GROUND_Y),a0 + move *a13(OBJ_YPOSINT),a1 + cmp a0,a1 + jreq #no_l + + move *a13(OBJ_XVEL),a14,L + jrz #lr_check_opp + cmpi [4,0],a14 + jrne #lr_check_opp + jruc #lr_set_vels + +#lr_check_opp + move *a5(OBJ_XVEL),a14,L + jrz #no_l + cmpi [4,0],a14 + jrne #lr_set_vels + jruc #no_l + +#lr_set_vels + ;X vel + movi [4,0],a14 + move a14,*a13(OBJ_XVEL),L + move a14,*a5(OBJ_XVEL),L + + ;Y vel + ;Wait! Don't muck with the Y vels if they're already above 30000h. + move *a13(OBJ_YVEL),a14,L + cmpi 30000h,a14 + jrgt #nyv1 + move *a5(OBJ_YVEL),a14,L + cmpi 30000h,a14 + jrgt #nyv1 + movi [3,0],a14 + move a14,*a13(OBJ_YVEL),L + move a14,*a5(OBJ_YVEL),L + +#nyv1 ;...and wobble the ropes + PUSH a0,a5 + movi ROPE_LEFT,a0 + movk 1,a2 + movi ROPE_BOUNCEIO,a1 + calla rope_command + + movi 3ch,a0 + calla triple_sound + + PULL a0,a5 + + jruc #no_l + +#not + ;we're not attached + ;line me up flush against the left rope + move *a13(OBJ_XPOSINT),a14 + sub a5,a14 + add a14,a0 + move a0,*a13(X_BOUND) + sll 16,a0 + move a0,*a13(OBJ_XPOS),L + + move *a13(INRING),a0 + jrnz #no_l ;Am outside. + ;climb out the side if allowed + calla ck_climb_out_side + +;Has hit left rope +;Wobble ropes and bounce off of them upon first hit. + move *a13(MOVE_DIR),a0 + jrnz #no_l + + move *a13(OBJ_XVEL),a0,L + jrz #no_l + + ;Skip the velocity crap if I'm on the ground. + move *a13(GROUND_Y),a0 + move *a13(OBJ_YPOSINT),a1 + cmp a0,a1 + jreq #no_l + +;We also should check YPOS also. Ropes shouldn't wobble if +;not hit. + + move *a13(OBJ_XVEL),a0,L + movi [3,0001],a7 + move a7,*a13(OBJ_XVEL),L + andi >ffff,a0 + cmpi 1,a0 + jrz #no_l + +;This is the first time we have collided with ropes. +;Wobble them. + + movi ROPE_LEFT,a0 + movk 1,a2 + movi ROPE_BOUNCEIO,a1 + calla rope_command + + movi 3ch,a0 + calla triple_sound + +#no_l + ori MOVE_LEFT,a7 ;can't move left + jruc #done + +#xl_ok + ;Check right edge of collision box against right ropes + move *a13(OBJ_COLLX2),a5 + + ;first see if we're even in the ballpark. + movi vln_right_rope,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x1 + jrlt #xr_ok + + ;close enough for a more careful check... + callr calc_line_x + cmp a0,a5 ;xpos - a0 + jrlt #xr_ok + jreq #no_r + + + ;we're past the right rope. see if we're attached + move *a13(ATTACH_PROC),a14,L + jrz #not2 + + ;I'm attached, which means both me and my opponent are gonna get + ; moved. Figure the right amount, apply it to both of us, then + ; wobble the ropes and bounce both of us away. + + ;a0 is rope X, a5 is right edge of our collbox. Move us and our + ; opponent left (a5 - a0) pixels. + sub a0,a5 + move *a13(OBJ_XPOSINT),a14 + sub a5,a14 + move a14,*a13(OBJ_XPOSINT) + + move *a13(ATTACH_PROC),a0,L + move *a0(OBJ_XPOSINT),a14 + sub a5,a14 + move a14,*a0(OBJ_XPOSINT) + + ;If either I or my opponent has a nonzero X velocity other than + ; -40000h, give us both Xvel -40000h, Yvel 30000h. + + ;Skip the velocity crap if I'm on the ground. + move *a13(GROUND_Y),a0 + move *a13(OBJ_YPOSINT),a1 + cmp a0,a1 + jreq #no_r + + move *a13(OBJ_XVEL),a14,L + jrz #rr_check_opp + cmpi [-4,0],a14 + jrne #rr_check_opp + jruc #rr_set_vels + +#rr_check_opp + move *a13(ATTACH_PROC),a5,L + move *a5(OBJ_XVEL),a14,L + jrz #no_r + cmpi [-4,0],a14 + jrne #rr_set_vels + jruc #no_r + +#rr_set_vels + ;X vel + movi [-4,0],a14 + move a14,*a13(OBJ_XVEL),L + move *a13(ATTACH_PROC),a5,L + move a14,*a5(OBJ_XVEL),L + + ;Y vel + ;Wait! Don't muck with the Y vels if they're already above 30000h. + move *a13(OBJ_YVEL),a14,L + cmpi 30000h,a14 + jrgt #nyv2 + move *a5(OBJ_YVEL),a14,L + cmpi 30000h,a14 + jrgt #nyv2 + movi [3,0],a14 + move a14,*a13(OBJ_YVEL),L + move a14,*a5(OBJ_YVEL),L +#nyv2 + ;...and wobble the ropes + PUSH a0,a5 + movi ROPE_RIGHT,a0 + movk 1,a2 + movi ROPE_BOUNCEIO,a1 + calla rope_command + + movi 3ch,a0 + calla triple_sound + + PULL a0,a5 + + jruc #no_r + +#not2 + + move *a13(OBJ_XPOSINT),a14 + sub a14,a5 + sub a5,a0 + + move a0,*a13(X_BOUND) + sll 16,a0 + move a0,*a13(OBJ_XPOS),L + + move *a13(INRING),a0 + jrnz #no_r ;Am outside. + + calla ck_climb_out_side + +;Has hit right rope +;Wobble ropes and bounce off of them upon first hit. + move *a13(MOVE_DIR),a0 + jrnz #no_r + + move *a13(OBJ_XVEL),a0,L + jrz #no_r + + ;Skip the velocity crap if I'm on the ground. + move *a13(GROUND_Y),a0 + move *a13(OBJ_YPOSINT),a1 + cmp a0,a1 + jreq #no_r + +;We also should check YPOS also. Ropes shouldn't wobble if +;not hit. + + move *a13(OBJ_XVEL),a0,L + movi [-3,0001],a7 + move a7,*a13(OBJ_XVEL),L + andi >ffff,a0 + cmpi 1,a0 + jrz #no_r + +;This is the first time we have collided with ropes. +;Wobble them. + + movi ROPE_RIGHT,a0 + movk 1,a2 + movi ROPE_BOUNCEIO,a1 + calla rope_command + + movi 3ch,a0 + calla triple_sound + +#no_r + ori MOVE_RIGHT,a7 ;can't move right +#xr_ok +#done +#no_confine + move a7,*a13(CAN_MOVE_DIR) + rets + + + + ;We're outside the ring +#outring + movi ARENA_TOP,a0 + move *a13(OBJ_ZPOSINT),a5 + cmp a0,a5 ;zpos - top + jrgt #zu_ok2 + jreq #no_u2 + + move a0,*a13(Z_BOUND) + sll 16,a0 + move a0,*a13(OBJ_ZPOS),L +#no_u2 + ori MOVE_UP,a7 ;can't move up + jruc #check_x2 + +#zu_ok2 + movi ARENA_BOT,a0 ;zpos - bot + cmp a0,a5 + jrlt #zd_ok2 + jreq #no_d2 + + move a0,*a13(Z_BOUND) + sll 16,a0 + move a0,*a13(OBJ_ZPOS),L +#no_d2 + ori MOVE_DOWN,a7 ;can't move down +#zd_ok2 + +#check_x2 + move *a13(OBJ_COLLX1),a5 + movi vln_left_fence,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x2 + jrgt #xl_ok2 + callr calc_line_x + cmp a0,a5 ;xpos - a0 + jrgt #xl_ok2 + jreq #no_l2 + + ;must move right (a0-a5) pixels. If we're attached, move our + ; opponent too. + move a0,a1 + sub a5,a0 + + move *a13(OBJ_XPOSINT),a14 + add a0,a14 + move a14,*a13(OBJ_XPOSINT) + move a1,*a13(X_BOUND) + + move *a13(ATTACH_PROC),a5,L + jrz #no_l2 + + move *a5(OBJ_XPOSINT),a14 + add a0,a14 + move a14,*a5(OBJ_XPOSINT) + move a1,*a5(X_BOUND) +#no_l2 + ori MOVE_LEFT,a7 ;can't move left + jruc #cont_x + +#xl_ok2 + move *a13(OBJ_COLLX2),a5 + movi vln_right_fence,a6 + move *a6,a0 ;x1 + cmp a0,a5 ;xpos - x1 + jrlt #xr_ok2 + callr calc_line_x + cmp a0,a5 ;xpos - a0 + jrlt #xr_ok2 + jreq #no_r2 + + ;must move left (a5-a0) pixels. If we're attached, move our + ; opponent too. + sub a0,a5 + + move *a13(OBJ_XPOSINT),a14 + sub a5,a14 + move a14,*a13(OBJ_XPOSINT) + move a0,*a13(X_BOUND) + + move *a13(ATTACH_PROC),a1,L + jrz #no_r2 + move *a1(OBJ_XPOSINT),a14 + sub a5,a14 + move a14,*a1(OBJ_XPOSINT) + move a0,*a1(X_BOUND) +#no_r2 + ori MOVE_RIGHT,a7 ;can't move right +#xr_ok2 + +;now check for the mat/ring + +#cont_x + move *a13(OBJ_XPOSINT),a5 + cmpi RING_X_CENTER,a5 + jrgt #right_side +;left side + movi vln_left_matedge2,a6 + callr calc_line_x + jrz #done2 ;out of range + move *a13(OBJ_COLLX2),a8 + sub a0,a8 ;xpos - a0 =(xov) + jrn #done2 + + move *a13(OBJ_ZPOSINT),a4 + cmpi RING_Z_CENTER,a4 + jrgt #bot_left +;top left + move *a6(10h),a0 +;;; dec a4 + move a4,a9 + sub a0,a9 ;zpos - z1 =(zov) + cmp a8,a9 ;zov - xov + jrgt #no_r3 + + sub a9,a4 + move a4,*a13(Z_BOUND) + sll 16,a4 + move a4,*a13(OBJ_ZPOS),L + ori MOVE_DOWN,a7 ;can't move down + + calla ck_climb_in_top + + jruc #done2 + +#bot_left + move *a6(30h),a9 +;;; inc a4 + sub a4,a9 ;z2 - zpos =(zov) + cmp a8,a9 ;zov - xov + jrgt #no_r3 + add a9,a4 + move a4,*a13(Z_BOUND) + sll 16,a4 + move a4,*a13(OBJ_ZPOS),L + ori MOVE_UP,a7 ;can't move up + + calla ck_climb_in_bot + + jruc #done2 + +#no_r3 + ;we need to move a8 pixels to the left. if we're attached, move both + ; of us. + sub a8,a5 + move a5,*a13(X_BOUND) + sll 16,a5 + move a5,*a13(OBJ_XPOS),L + ori MOVE_RIGHT,a7 ;can't move right + + move *a13(ATTACH_PROC),a0,L + jrz #no_r3_att + move *a0(OBJ_XPOSINT),a14 + sub a8,a14 + move a14,*a0(OBJ_XPOSINT) +#no_r3_att + + calla ck_climb_in_side + + jruc #done2 + + +#right_side + movi vln_right_matedge2,a6 + callr calc_line_x + jrz #done2 ;out of range + move a0,a8 + move *a13(OBJ_COLLX1),a0 + sub a0,a8 ;a8 - xpos =(xov) + jrn #done2 + + move *a13(OBJ_ZPOSINT),a4 + cmpi RING_Z_CENTER,a4 + jrgt #bot_right +;top right + move *a6(10h),a0 +;;; dec a4 + move a4,a9 + sub a0,a9 ;zpos - z1 =(zov) + cmp a8,a9 ;zov - xov + jrgt #no_l3 + sub a9,a4 + move a4,*a13(Z_BOUND) + sll 16,a4 + move a4,*a13(OBJ_ZPOS),L + ori MOVE_DOWN,a7 ;can't move down + + calla ck_climb_in_top + + jruc #done2 + + +#bot_right + move *a6(30h),a9 +;;; inc a4 + sub a4,a9 ;z2 - zpos =(zov) + cmp a8,a9 ;zov - xov + jrgt #no_l3 + add a9,a4 + move a4,*a13(Z_BOUND) + sll 16,a4 + move a4,*a13(OBJ_ZPOS),L + ori MOVE_UP,a7 ;can't move up + + calla ck_climb_in_bot + + jruc #done2 + + +#no_l3 + ;we need to move a8 pixels to the right. if we're attached, move both + ; of us. + add a8,a5 + move a5,*a13(X_BOUND) + sll 16,a5 + move a5,*a13(OBJ_XPOS),L + ori MOVE_LEFT,a7 ;can't move down + + move *a13(ATTACH_PROC),a0,L + jrz #no_l3_att + move *a0(OBJ_XPOSINT),a14 + add a8,a14 + move a14,*a0(OBJ_XPOSINT) +#no_l3_att + + calla ck_climb_in_side + +#done2 + move a7,*a13(CAN_MOVE_DIR) + move *a13(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jreq #dead + cmpi MODE_RUNNING,a0 + jrne just_ignore_me + + movi [3,0],a2 + btst MOVE_LEFT_BIT,a7 + jrnz we_going_left + neg a2 + btst MOVE_RIGHT_BIT,a7 + jrz just_ignore_me +we_going_left + + ;we've hit a gate, and we're running. It's possible, however, that + ; we're right up against a gate and have just started running in the + ; opposite direction, in which case we shouldn't crash or anything. + ; blow this off if we're running AWAY from the gate we've hit + move *a13(CAN_MOVE_DIR),a0 + move *a13(FACING_DIR),a14 + and a14,a0 + andi MOVE_LEFT|MOVE_RIGHT,a0 + jrz just_ignore_me + + move a2,*a13(OBJ_XVEL),L + SETMODE NORMAL + movi [3,0],a0 + move a0,*a13(OBJ_YVEL),L + clr a0 + move a0,*a13(RUN_TIME) + + ;if we've hit the gate in the last three seconds, fall back instead. + move @PCNT,a14,L + move *a13(HIT_GATE_TIME),a0,L + sub a0,a14 + cmpi TSEC*3,a14 + jrge #bnc + FACETBL fall_back_tbl + jruc #bcanim + +#bnc FACE24TBL bncoff_gate +#bcanim calla change_anim1a + + ;crash sound + movi 0c5h,a0 + calla triple_sound + + ;set HIT_GATE_TIME + move @PCNT,a14,L + move a14,*a13(HIT_GATE_TIME),L + + ;take some damage + move *a13(PLYRNUM),a1 + movi -D_GATE_CRASH,a0 + clr a10 + calla adjust_health + + calla ditch_getup_meter + +just_ignore_me + rets + +#dead ;if we're a zombie, hitting the edge is our cue to transform + andi MOVE_LEFT|MOVE_RIGHT,a7 + jrz just_ignore_me + move *a13(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrz just_ignore_me + btst B_CAN_XFORM,a14 + jrz just_ignore_me + +#zombie_transform + movk 1,a0 + calla change_wrestler + rets + +#***************************************************************************** +* +* for whatever reason, confine_wrestler happens twice per tick. The problem +* is that if you bump into the ropes, the first time we execute c_w, your +* CAN_MOVE_DIR bits are set. But the second time, they're cleared since you +* aren't hitting the ropes anymore. This ugly little hack gets around this +* by saving your CAN_MOVE_DIR bits after the first call, and then ORing them +* with your CAN_MOVE_DIR bits after the second. + + SUBRP confine_wrestler_fix1 + + move *a13(CAN_MOVE_DIR),*a13(CAN_MOVE_TEMP) + rets + + SUBRP confine_wrestler_fix2 + move *a13(CAN_MOVE_DIR),a0 + move *a13(CAN_MOVE_TEMP),a1 + or a0,a1 + move a1,*a13(CAN_MOVE_DIR) + rets + +#***************************************************************************** +* + SUBRP wrestler_friction + + move *a13(ANIMODE),a0 + btst MODE_FRICTION_BIT,a0 + jrz #no_friction + + move *a13(OBJ_FRICTION),a0 + + move *a13(OBJ_XVEL),a1,L + jrz #no_friction + jrn #add + + sub a0,a1 + jrp #ok1 + clr a1 +#ok1 + move a1,*a13(OBJ_XVEL),L + rets + +#add + add a0,a1 + jrn #ok2 + clr a1 +#ok2 + move a1,*a13(OBJ_XVEL),L + + +#no_friction + rets + +#***************************************************************************** +* Change an objects image +* A0=*New image +* A1=New flip flags & const +* A8=*Obj +* Trashes scratch + + SUBR change_image + + + PUSH a2,a3 + + cmpi ROM,a0 + jrlo #anierr + + move a0,a2 + move a1,a3 + + move a2,*a8(OIMG),L + move *a2(0),*a8(OSIZE),L + move *a2(ISAG),*a8(OSAG),L + + + move *a2(IANIOFFX),*a8(ODXOFF) ;display x offset + move *a2(IANIOFFY),*a8(ODYOFF) ;display y offset + + + setf 5,0,0 + move *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 6,0,0 + move a3,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + +#x PULL a2,a3 + rets + +#anierr + .if DEBUG + LOCKUP + eint + .else + CALLERR 2,2 + .endif + jruc #x + + +#***************************************************************************** +* +* calls movement code base on wrestler number +* +* a13 = * wrestler process + + SUBRP move_wrestler + + move @HALT,a0 + jrnz #rets + + ;check to see if a special move watchdog proc has queued up an anim. + ; If one has, do that instead of calling move_xxx. + move *a13(SPECIAL_MOVE_ADDR),a0,L + jrz #no_special + + ;a special has been queued up. do it. + calla change_anim1a + clr a14 + move a14,*a13(SPECIAL_MOVE_ADDR),L + jruc #rets + +#no_special + + ;turn into a drone if it's time to auto-pin. + callr auto_pin_check + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #code_addr,a0 + move *a0,a0,L + call a0 + +#rets rets + +#code_addr + .long move_bret ;0 Bret Hart + .long move_razor ;1 Razor Ramon + .long move_taker ;2 Undertaker + .long move_yoko ;3 Yokozuna + .long move_shawn ;4 Shawn Michaels + .long move_bam ;5 Bam Bam + .long move_doink ;6 Doink + .long 0 ;7 spare + .long move_lex ;8 Lex Luger + + +#***************************************************************************** +* +* if all opponents are dead, wait four seconds, then wait for the +* unint bit to clear, then turn into a drone. +* + + SUBR auto_pin_check + move @in_finish_move,a14 ; Are we in a finishing move ? + jrnz #rets ; br = yes + move @finish_completed,a14 ; Did we do a finishing move ? + jrnz #rets ; br = yes + + move @royal_rumble,a14 + jrnz #rets + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #alive + + ;skip it if we've already pinned + move *a13(STATUS_FLAGS),a14 + btst B_DID_PIN,a14 + jrnz #rets + + callr get_opp_process + move *a0(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #alive + + .ref anyone_bucking + calla anyone_bucking + jrnz #rets + + ;all opponents are dead. increment AUTO_PIN_CNTDOWN and turn into + ; a drone if the total is >= TSEC*4. + move *a13(AUTO_PIN_CNTDOWN),a14 + inc a14 + move a14,*a13(AUTO_PIN_CNTDOWN) + cmpi TSEC*3,a14 + jrlt #rets + + move *a13(ANIMODE),a14 + btst MODE_UNINT_BIT,a14 + jrnz #rets + + ;become a drone + movi PTYPE_DRONE,a14 + move a14,*a13(PLYR_TYPE) + jruc #rets + +#alive ;Reset AUTO_PIN_CNTDOWN + clr a14 + move a14,*a13(AUTO_PIN_CNTDOWN) +#rets rets + +#***************************************************************************** + +; SUBRP realtime_clock +; +; clr a8 +; move a8,@match_realtime +; +;#loop SLEEP TSEC +; inc a8 +; move a8,@match_realtime +; jruc #loop + +****************************************************************************** + + ;!KEEP THIS ORDER! + BSSX up_dtime1, 16*NUM_WRES ;number of ticks stick held down + BSSX down_dtime1, 16*NUM_WRES + BSSX left_dtime1, 16*NUM_WRES + BSSX right_dtime1, 16*NUM_WRES + BSSX punch_dtime1, 16*NUM_WRES + BSSX block_dtime1, 16*NUM_WRES ;number of ticks button held down + BSSX powerp_dtime1, 16*NUM_WRES + BSSX kick_dtime1, 16*NUM_WRES + BSSX powerk_dtime1, 16*NUM_WRES + +#***************************************************************************** + + SUBRP init_joy_dtime + + clr a0 + + movi up_dtime1,a1 + movi 9*NUM_WRES,a2 +#lp1 + move a0,*a1+ + dsj a2,#lp1 + + rets + +#***************************************************************************** + + SUBR get_block_dtime + + X16 a0 + addi block_dtime1,a0 + move *a0,a0 + rets + +#***************************************************************************** + + SUBR get_powerp_dtime + + X16 a0 + addi powerp_dtime1,a0 + move *a0,a0 + rets + +#***************************************************************************** + + SUBR get_punch_dtime + + X16 a0 + addi punch_dtime1,a0 + move *a0,a0 + rets + +#***************************************************************************** + + SUBR get_kick_dtime + + X16 a0 + addi kick_dtime1,a0 + move *a0,a0 + rets + +#***************************************************************************** + + SUBR get_powerk_dtime + + X16 a0 + addi powerk_dtime1,a0 + move *a0,a0 + rets + + +#***************************************************************************** + + + SUBRP update_joy_dtime + + move *a13(PLYRNUM),a2 + callr #update_but + move *a13(PLYRNUM),a2 + callr #update_stick + + rets + +#update_stick +; move a13,a0 +; calla wres_get_stick_val_cur + move *a13(STICK_VAL_CUR),a0 + X16 a2 + addi up_dtime1,a2 + + movk 4,a3 +#loop1 + clr a1 + + srl 1,a0 + jrnc #clr1 + + move *a2,a1 + inc a1 +#clr1 + move a1,*a2 + + addi 16*NUM_WRES,a2 + dsj a3,#loop1 + + rets + +#update_but + move *a13(BUT_VAL_CUR),a0 + X16 a2 + addi punch_dtime1,a2 + + movk 5,a3 +#loop2 + clr a1 + + srl 1,a0 + jrnc #clr2 + + move *a2,a1 + inc a1 +#clr2 + move a1,*a2 + + addi 16*NUM_WRES,a2 + dsj a3,#loop2 + + rets + +#***************************************************************************** +* a13 = * current process +* calculates closest opponent and distances to him +* +* Well, not really the closest. We bias it lots of ways: +* +* ---> Will always choose live targets over dead ones. +* ---> Will always choose normal dead over zombies. +* ---> Biased distance (used for comparison but never stored) is doubled +* for targets in MODE_ONGROUND. +* ---> 25% reduction in biased distance for WHOIHIT +* ---> Biased distance tripled for targets with different INRING values. +* ---> Add double the Z difference to biased range (favors targets in +* your Z-lane. +* ---> 25% reduction in biased distance for previous closest +* ---> Will always pick live targets in front of a runner over targets behind +* him, IF they have the same INRING value. +* ---> If in combo mode, will always face WHOIHIT, unless WHOIHIT is dead. +* + + + ;biased distance to current champ. + .bss #biased_range,16 + +; first calculate the distance on the X-Z plane +; dxz = sqroot ( (x1-x2)^2 + (z1-z2)^2 ) +; total dist = sqroot ( DXZ^2 + (y1-y2)^2 ) + + + SUBRP calc_closest2 + + ;Always recalculate if our current closest is dead. + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #go + + ;Only proceed on every fourth tick. + move *a13(PLYRNUM),a0 + andi 3,a0 + move @PCNT,a1 + andi 3,a1 + cmp a0,a1 + jrnz #x + + + SUBRP calc_closest + + ;a11 is a flag. when set, this indicates that a live player + ; is the current closest. Any live player will be chosen over + ; a dead one. + ;a11 is the status of the closest guy. a positive value means the + ; current closest is alive. Zero means he's dead, and a negative + ; value means there isn't one or it's a zombie. + +#go move *a13(PLYR_TYPE),a0 + + move *a13(OBJ_XPOSINT),a4 + move *a13(OBJ_ZPOSINT),a5 + move *a13(OBJ_YPOSINT),a6 + + movi 7FFFh,a3 ;closest distance + move a3,@#biased_range + clr a11 + dec a11 ;initialize to none/zombie + movi process_ptrs,a2 + movi NUM_WRES,a1 + +#loop move *a2+,a10,L + jrz #inactive + cmp a13,a10 + jreq #skip_nopull ;skip self + + move *a13(PLYR_SIDE),a7 + move *a10(PLYR_SIDE),a8 + cmp a7,a8 + jreq #skip_nopull ;skip friendly + + PUSH a4,a6 + PUSH a1 + + move *a10(OBJ_XPOSINT),a7 + move *a10(OBJ_ZPOSINT),a8 + move *a10(OBJ_YPOSINT),a9 + + sub a4,a7 ;abs(delta x) + abs a7 + move a7,a1 + mpyu a1,a1 ;^2 + move a1,a0 + + sub a5,a8 ;abs(delta z) + abs a8 + move a8,a1 + mpyu a1,a1 ;^2 + add a1,a0 + + sub a6,a9 ;abs(delta y) + abs a9 + move a9,a1 + mpyu a1,a1 ;^2 + add a1,a0 + calla square_root ;sqroot of dxz^2 + dy^2 + + PULL a1 + + ;a0 is dist. compute biased dist in a4 + move a0,a4 + + ;ONGROUND penalty + move *a10(PLYRMODE),a14 + cmpi MODE_ONGROUND,a14 + jrne #bc1 + sll 1,a4 ;double it + +#bc1 ;WHOIHIT bonus + move *a13(WHOIHIT),a14,L + cmp a14,a10 + jrne #bc2 + move a4,a14 + srl 2,a14 + sub a14,a4 ;sub 25% + +#bc2 ;INRING penalty + move *a10(INRING),a14 + move *a13(INRING),a6 + cmp a6,a14 + jreq #bc3 + move a4,a14 + sll 1,a4 + add a14,a4 ;triple it + +#bc3 ;previous closest bonus + move *a13(CLOSEST_NUM),a14 + move *a10(PLYRNUM),a6 + cmp a14,a6 + jrne #bc4 + move a4,a14 + srl 2,a14 + sub a14,a4 ;sub 25% + +#bc4 ;zero biased dist to combo target + move *a13(COMBO_COUNT),a14 + jrz #bc5 + move *a13(WHOIHIT),a14,L + cmp a14,a10 + jrne #bc5 + clr a4 ;zero dist + +#bc5 ;Z penalty + move a8,a14 ;delta Z + sll 1,a14 + add a14,a4 ;add double the Z dist + + + ;skip this guy if: + ; a) we're running, + ; b) he's behind us, + ; c) our current closest is ahead of us, and + ; d) our current closest is inside the ring. + + ;we running? + move *a13(PLYRMODE),a14 + cmpi MODE_RUNNING,a14 + jrne #ab_ok + + ;have a useful current closest? + TEST a11 + jrn #ab_ok + + ;is this guy behind us? + move a10,a14 + calla is_a14_behind + jrnc #ab_ok + + ;is closest ahead of us? + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + calla is_a14_behind + jrc #ab_ok + + ;is closest inside the ring? + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + move *a14(INRING),a14 + jrnz #ab_ok + + ;we're running, this guy is behind us, and our current closest is + ; both inside the ring and ahead of us. Ignore this guy. + jruc #skip + +#ab_ok ;ahead/behind ok. + + ;three cases. zombie, dead, or alive. + move *a10(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrne #alive + move *a10(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrz #dead + ;fall through to zombie + +#zombie ;Only test this guy if a11 is negative. + TEST a11 + jrnn #skip + jruc #compare + +#dead ;If a11 is negative, take this guy. If it's zero, compare + TEST a11 + jrz #compare + jrnn #skip + clr a11 ;set a11 to dead + jruc #accept + +#alive ;If a11 is positive, compare, otherwise just take him. + TEST a11 + jrp #compare + movk 1,a11 ;set a11 to alive + jruc #accept + +#compare + move @#biased_range,a14 + cmp a14,a4 + jrle #accept + + ;too far. + jruc #skip + +#accept ;use the guy in a10 + + move a4,@#biased_range + move a0,a3 + move a3,*a13(CLOSEST_DIST) + move a7,*a13(CLOSEST_XDIST) + move a8,*a13(CLOSEST_ZDIST) + move a9,*a13(CLOSEST_YDIST) + + move *a10(PLYRNUM),a14 + move a14,*a13(CLOSEST_NUM) + +#skip + PULL a4,a6 +#inactive +#skip_nopull + dsj a1,#loop + +#x rets + +#***************************************************************************** +* +* if attached, updates position based on player attached to +* wrestler proc = *a13 +* +* RETURNS: Z=1 - not attached to anything +* Z=0 - attached and updated +* +* TRASHES: a0,a1,a2 + + SUBR master_keep_attached + + + move *a13(ATTACH_PROC),a10,L ;proc attached to me + jrz #not_attached + move *a10(ATTACH_PROC),a0,L + jrz #not_attached + +#still_attached + ;first, see if opponent is on the ground. + move *a10(OBJ_YPOS),a0,L + move *a10(GROUND_Y),a14 + sll 16,a14 + cmp a14,a0 + jrgt #opp_notgnd + + ;opponent is on ground. first, make sure he's not in MODE_GHOST + move *a10(ANIMODE),a14 + btst MODE_GHOST_BIT,a14 + jrnz #opp_notgnd + + ;calc new 'floor' + move *a10(OBJ_YPOS),a0,L + move *a13(ATTACH_YOFF),a14 + sll 16,a14 + sub a14,a0 + + ;a0 is our new floor. stay at or above + move *a13(OBJ_YPOS),a14,L + cmp a14,a0 + jrle #above_newfloor + + ;too low. climb + move a0,*a13(OBJ_YPOS),L + +#above_newfloor +#opp_notgnd + + clr a0 + move a0,*a10(OBJ_YVEL),L + + move *a13(OBJ_ZPOS),a0,L + move *a13(ATTACH_ZOFF),a1 + sll 16,a1 + add a1,a0 + move a0,*a10(OBJ_ZPOS),L + + move *a13(OBJ_YPOS),a0,L + move *a13(ATTACH_YOFF),a1 + sll 16,a1 + add a1,a0 + move a0,*a10(OBJ_YPOS),L + + move *a13(OBJ_XPOS),a0,L + move *a13(ATTACH_XOFF),a1 + sll 16,a1 + + move *a13(FACING_DIR),a2 + btst MOVE_RIGHT_BIT,a2 + jrnz #add + neg a1 +#add + add a1,a0 + move a0,*a10(OBJ_XPOS),L + + movk 1,a0 ;Z=0 + +#not_attached + rets + + +#***************************************************************************** +* +* if attached, updates position based on player attached to +* wrestler proc = *a13 +* +* RETURNS: Z=1 - not attached to anything +* Z=0 - attached and updated +* +* TRASHES: a0,a1,a2 + + + SUBR keep_attached + + + move *a13(ATTACH_PROC),a2,L ;proc attached to + jrz #not_attached + move *a2(ATTACH_PROC),a0,L + jrz #not_attached + +#still_attached + clr a0 + move a0,*a13(OBJ_YVEL),L + + move *a2(OBJ_ZPOS),a0,L + move *a2(ATTACH_ZOFF),a1 + sll 16,a1 + add a1,a0 + move a0,*a13(OBJ_ZPOS),L + + move *a2(OBJ_YPOS),a0,L + move *a2(ATTACH_YOFF),a1 + sll 16,a1 + add a1,a0 + move a0,*a13(OBJ_YPOS),L + + + move *a2(OBJ_XPOS),a0,L + move *a2(ATTACH_XOFF),a1 + sll 16,a1 + + move *a2(FACING_DIR),a2 + btst MOVE_RIGHT_BIT,a2 + jrnz #add + neg a1 +#add + add a1,a0 + move a0,*a13(OBJ_XPOS),L + + movk 1,a0 ;Z=0 + +#not_attached + rets + + +#***************************************************************************** +* +* RETURNS: a0 = * closest opponent process +* +* TRASHES: a0 + + SUBR get_opp_process + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + + rets + +#***************************************************************************** +* +* RETURNS: a0 = PLYRMODE of the closest opponent +* +* TRASHES: a0 + + SUBR get_opp_plyrmode + + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(PLYRMODE),a0 + + rets + +#***************************************************************************** +* +* ARGS: a0 = facing value (in binary form - 0,1,2,4,8) +* +* RETURNS: a0 = facing value (in linear form - 0,1,2,3 - 8) +* + + SUBR convert_facing + + X16 a0 + addi #convert_table,a0 + move *a0,a0 + rets + +#convert_table + .word 0 ;0 zip + .word 0 ;1 up + .word 4 ;2 down + .word 0 ;3 zip + .word 6 ;4 left + .word 7 ;5 up_left + .word 5 ;6 down_left + .word 0 ;7 zip + .word 2 ;8 right + .word 1 ;9 up_right + .word 3 ;10 down_right + .word 0 ;11 zip + .word 0 ;12 zip + .word 0 ;13 zip + .word 0 ;14 zip + .word 0 ;15 zip + +#***************************************************************************** + + SUBRP init_joystat + + clr a0 + + move a0,@round_tickcount + + movi wrest_joystat,a1 + movi 16*NUM_WRES,a2 +#clr_loop + move a0,*a1+,L + dsj a2,#clr_loop + + rets + +#***************************************************************************** +* +* count active wrestler processes. Clear reduce_bog if there's two, set if +* there's more + + SUBR init_reduce_bog + + movi process_ptrs,a0 + movi NUM_WRES,a1 + clr a2 +#lp move *a0+,a14,L + jrz #nxt + inc a2 ;got one. +#nxt dsj a1,#lp + + ;a2 is active wrestlers. sub 2 and stick it in reduce_bog + subk 2,a2 + move a2,@reduce_bog + rets + +#***************************************************************************** + + SUBRP update_joystat + + move @HALT,a0 + jrnz #exit + +; move a13,a0 +; calla wres_get_stick_val_cur + move *a13(STICK_VAL_CUR),a0 + movk 1100b,a8 ;mask out left & right + and a0,a8 + sll 10-2,a8 ;shift to bit 10 & 11 + + move *a13(FACING_DIR),a14 + btst MOVE_LEFT_BIT,a14 + jrz #no_flip + X16 a0 + addi #xflip_table,a0 + move *a0,a0 ;flipped based on facing +#no_flip + or a0,a8 ;real L/R | flipped joy dirs + + + move a13,a0 + calla wres_get_stick_val_up + move a0,a4 + move a13,a0 + calla wres_get_stick_val_down + or a4,a0 + jrz #no_stick + + move a8,a4 ;cur (flipped) stick vals + jrz #no_stick + + callr #insert + +#no_stick + + move a13,a0 + calla wres_get_but_val_down + move a0,a6 + jrz #no_button + X16 a6 + + movk 5,a5 ;5 button bits + movk 10000b,a7 ;1st bit << 4 (to skip 4 joy bits) +#bit_loop + move a6,a0 + and a7,a0 ;button down? + jrz #skip + move a0,a4 + or a8,a4 ;+ cur (flipped) stick vals + callr #insert ;only 1 button per entry +#skip + sll 1,a7 + dsj a5,#bit_loop + +#no_button + +#exit + rets + +#insert + move @round_tickcount,a0 + sll 16,a0 + or a0,a4 + + move *a13(PLYRNUM),a0 + sll 5+4,a0 ;PLYRNUM x32 x16 + + addi wrest_joystat + 32*15,a0 ;2nd last entry (after pre-dec) + move a0,a1 + addk 32,a1 ;last entry (after pre-dec) + + movk 15,a2 ;# entries - 1 +#move_loop + move -*a0,-*a1,L ;move each entry down + dsj a2,#move_loop ;1 position + + move a4,*a0,L ;time stamp : joy & buttons + rets + +#xflip_table ;convert to forward / away if facing left + .word 0 ;0 + .word J_UP ;1 + .word J_DOWN ;2 + .word 0 ;3 + .word J_TOWARD ;4 + .word J_UP_TOWARD ;5 + .word J_DOWN_TOWARD ;6 + .word 0 ;7 + .word J_AWAY ;8 + .word J_UP_AWAY ;9 + .word J_DOWN_AWAY ;10 + .word 0,0,0,0,0 ;11-15 + + +#***************************************************************************** + + SUBR clear_button_presses + + movk 5,a1 ;5 buttons + move a13,a2 + addi PUNCHB_COUNT,a2 + clr a0 +#loop + move a0,*a2+ + dsj a1,#loop + + rets + +#***************************************************************************** + + SUBR count_button_presses + + move a13,a0 + calla wres_get_but_val_down + move a0,a0 + jrz #exit + + movk 5,a1 ;5 bits + move a13,a2 + addi PUNCHB_COUNT,a2 +#loop + srl 1,a0 ;button-->Carry + jrnc #no_but + + move *a2,a14 + inc a14 + move a14,*a2 + +#no_but + addi 16,a2 + dsj a1,#loop + +#exit + rets + +; WORD PUNCHB_COUNT ;0 <------ +; WORD BLOCKB_COUNT ;1 keep | +; WORD SPUNCHB_COUN ;2 ordered| +; WORD KICK_COUNT ;3 | +; WORD SKICK_COUNT ;4 <------ + +#***************************************************************************** + + SUBR direction_test + + .if 0 + ;can put this in a mode + .ref direction_test + + move *a13(PLYRNUM),a8 + move *a13(CLOSEST_NUM),a9 + + CREATE 0,direction_test ;temp!!!!!!!!!!! + + movi 424000h,a0 + move a0,*a13(OBJ_YVEL),L + + SETMODE INAIR + rets + .endif + + +;a8 = PLYRNUM +;a9 = CLOSEST_NUM + + move a8,*a13(PLYRNUM) + move a9,*a13(CLOSEST_NUM) + + X32 a8 + addi process_ptrs,a8 + move *a8,a10,L + + X32 a9 + addi process_ptrs,a9 + move *a9,a11,L + + move *a10(OBJ_XPOS),*a13(OBJ_XPOS),L + move *a10(OBJ_YPOS),*a13(OBJ_YPOS),L + move *a10(OBJ_ZPOS),*a13(OBJ_ZPOS),L + + + + move *a10(OBJ_XPOS),a0,L + move *a11(OBJ_XPOS),a1,L + sub a0,a1 + movi TSEC,a0 + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_XVEL),L + + + move *a10(OBJ_ZPOS),a0,L + move *a11(OBJ_ZPOS),a1,L + sub a0,a1 + movi TSEC,a0 + divs a0,a1 ;a1 / a0 + move a1,*a13(OBJ_ZVEL),L + + + + clr a0 + move a0,*a13(OBJ_YVEL),L + +; move a0,*a13(OBJ_XVEL),L +; move a0,*a13(OBJ_ZVEL),L + + clr a0 ;x pos + clr a1 ;y pos + movi D2ST2B03,a2 ;* image + movk 20,a3 ;z pos + movi DMAWNZ|M_3D,a4 ;DMA flags + move a4,*a13(OBJ_CONTROL) + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + movi TSEC,a0 +#loop + PUSHP a0 + +;velocity add + move *a13(OBJ_XPOS),a0,L + move *a13(OBJ_XVEL),a1,L + add a1,a0 + move a0,*a13(OBJ_XPOS),L + + move *a13(OBJ_YPOS),a0,L + move *a13(OBJ_YVEL),a1,L + add a1,a0 + jrnn #yok + clr a0 +#yok + move a0,*a13(OBJ_YPOS),L + + move *a13(OBJ_ZPOS),a0,L + move *a13(OBJ_ZVEL),a1,L + add a1,a0 + move a0,*a13(OBJ_ZPOS),L + + + + + +;image plot + move *a13(OBJ_XPOS),a5,L ;x val + + movi Y_SCALE_MULTIPLIER,a0 + move *a13(OBJ_ZPOSINT),a1 + mpys a0,a1 + move a1,a6 ;y val + + move *a13(OBJ_CONTROL),a7 ;flip bits & pixel ops + + move a6,*a8(OYVAL),L ;keep updating YVAL to keep priorities + + move a5,*a8(OXVAL),L + move a6,*a8(OYVAL),L + + movi [20,0],a1 ;z pos + move a1,*a8(OZVAL),L + + setf 6,0,0 + move a7,*a8(OCTRL) ;Write 6 low bits + setf 16,1,0 + + + SLEEPK 1 + + PULLP a0 + dsj a0,#loop + + calla DELOBJA8 + + DIE + +#***************************************************************************** +* +* a11 = * secret move table +* a13 = * wrestler process + + SUBR check_secret_moves + + move *a13(IMMOBILIZE_TIME),a14 + jrnz #done + + move *a13(PLYRMODE),a14 + cmpi MODE_DIZZY,a14 + jreq #done + cmpi MODE_WAITANIM,a14 + jreq #done + +;No secret moves if getup time is set - out of control runs, etc. + move *a13(GETUP_TIME),a14 + jrnz #done + + move *a11+,a0,L ;button hold test code + call a0 + jrc #done + + move *a13(PLYRNUM),a10 + sll 5+4,a10 ;PLYRNUM x32 x16 + addi wrest_joystat,a10 + + ;only check if newest entry in queue is fresh + move *a10(10h),a0 ;time stamp + move @round_tickcount,a1 + cmp a0,a1 + jrne #done + + +#next_table + .align + move *a11+,a2,L + jrz #done + move a10,a9 + + movk 8,a3 ;only skip 8 masked entries + + ;the first entry in the queue requires a special check... + move *a2,a0 ;value + move *a2(10h),a1 ;mask + move *a9,a14,L + andi 0ffffh,a14 ;queue head + andn a1,a14 ;apply mask + + ;if the mask leaves nothing behind, then there's noise since the + ; final (trigger) move, so blow it off. + jrz #next_table + +#loop + move *a2+,a0 + jrn #match + move *a2+,a1 ;mask +#skip + + ;check for end of table (16 entries) + + move *a9+,a7,L + move a7,a8 + srl 16,a7 ;round tick count + andi 0ffffh,a8 ;joy+buttons + andn a1,a8 + dsjeq a3,#skip + + cmp a0,a8 + jreq #loop + +#failed + jruc #next_table + +#done + rets + +#match + ;skip it if we're a zombie + move *a13(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #done + + andi 07fffh,a0 ;clear out sign bit + move @round_tickcount,a1 + andi 0ffffh,a1 ;clear out sign extend + sub a7,a1 + cmp a0,a1 ;below count? + jrgt #failed + + move *a2,a0,L ;code to execute + jump a0 + +#***************************************************************************** +* +* sets animations for legs & torso based on facing & move direction +* + + SUBR change_walk_anim + + clr a0 + move a0,*a13(CONSECUTIVE_HITS) +;Fix walking speeds! +;Did I do a taunt to achieve high risk move bonus? + move *a13(RISK),a14 + btst 15,a14 + jrnz #taunted + clr a0 + move a0,*A13(RISK) +#taunted + move *a13(WALK_FAST),a0 + jrnz #fast + + callr get_opp_process + move *a0(PLYRMODE),a0 ;don't slow down if backing + cmpi MODE_ONGROUND,a0 ;away from a downed opponent + jrnz #notgrnd +#fast + movi 0cdh,a0 ;fast legs + jruc #go_spd + +#notgrnd + movi 100h,a0 ;normal speed + +#go_spd + move a0,*a13(ANI_SPEED) + move *a13(ANIMODE2),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(FACING_DIR),a0 + callr convert_facing ;(0-7) + srl 1,a0 ;only uses diagonals (0-3) + X4 a0 + move a0,a1 + + move *a13(NEW_FACING_DIR),a0 + callr convert_facing ;(0-7) + srl 1,a0 ;only uses diagonals (0-3) + add a1,a0 + X32 a0 + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #wres_torso_anims,a14 + move *a14,a14,L ;* torso anim table + add a14,a0 + + move *a0,a0,L + calla change_anim2 ;torso + +#no_interrupt + + move *a13(MOVE_DIR),a0 + callr convert_facing ;(0-7) + X8 a0 + move a0,a1 + + move *a13(FACING_DIR),a0 + callr convert_facing ;(0-7) + add a1,a0 + X32 a0 + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #wres_leg_anims,a14 + move *a14,a14,L ;* leg anim table + add a14,a0 + + move *a0,a0,L ;* new animation + calla change_anim1 ;legs + +#rets rets + + + .ref bam_torso_anims_table,bam_leg_anims_table + .ref dnk_torso_anims_table,dnk_leg_anims_table + .ref hrt_torso_anims_table,hrt_leg_anims_table + .ref lex_torso_anims_table,lex_leg_anims_table + .ref rzr_torso_anims_table,rzr_leg_anims_table + .ref shn_torso_anims_table,shn_leg_anims_table + .ref und_torso_anims_table,und_leg_anims_table + .ref yok_torso_anims_table,yok_leg_anims_table + +#wres_torso_anims + .long hrt_torso_anims_table ;0 Bret Hart + .long rzr_torso_anims_table ;1 Razor Ramon + .long und_torso_anims_table ;2 Undertaker + .long yok_torso_anims_table ;3 Yokozuna + .long shn_torso_anims_table ;4 Shawn Michaels + .long bam_torso_anims_table ;5 Bam Bam + .long dnk_torso_anims_table ;6 Doink + .long dnk_torso_anims_table ;7 spare + .long lex_torso_anims_table ;8 Lex Luger + .long 0 ;9 Referee + +#wres_leg_anims + .long hrt_leg_anims_table ;0 Bret Hart + .long rzr_leg_anims_table ;1 Razor Ramon + .long und_leg_anims_table ;2 Undertaker + .long yok_leg_anims_table ;3 Yokozuna + .long shn_leg_anims_table ;4 Shawn Michaels + .long bam_leg_anims_table ;5 Bam Bam + .long dnk_leg_anims_table ;6 Doink + .long dnk_leg_anims_table ;7 spare + .long lex_leg_anims_table ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** +* +* returns: A0 = rotation anim based on NEW_FACING_DIR & FACING_DIR +* +* goes into stance anim if already facing if NEW_FACING = FACING + + SUBR set_rotate_anim + + move *a13(FACING_DIR),a0 + calla convert_facing ;(0-7) + srl 1,a0 ;only uses diagonals (0-3) + X4 a0 + move a0,a1 + + move *a13(NEW_FACING_DIR),a0 + calla convert_facing ;(0-7) + srl 1,a0 ;only uses diagonals (0-3) + add a1,a0 + X32 a0 + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #wres_rotate_anims,a14 + move *a14,a14,L ;* rotate anim table + add a14,a0 + + move *a13(NEW_FACING_DIR),a14 + move a14,*a13(FACING_DIR) + + move *a0,a0,L +;;; calla change_anim1 + + rets + + + .ref bam_rotate_anims_table + .ref dnk_rotate_anims_table + .ref hrt_rotate_anims_table + .ref lex_rotate_anims_table + .ref rzr_rotate_anims_table + .ref shn_rotate_anims_table + .ref und_rotate_anims_table + .ref yok_rotate_anims_table + +#wres_rotate_anims + .long hrt_rotate_anims_table ;0 Bret Hart + .long rzr_rotate_anims_table ;1 Razor Ramon + .long und_rotate_anims_table ;2 Undertaker + .long yok_rotate_anims_table ;3 Yokozuna + .long shn_rotate_anims_table ;4 Shawn Michaels + .long bam_rotate_anims_table ;5 Bam Bam + .long dnk_rotate_anims_table ;6 Doink + .long dnk_rotate_anims_table ;7 spare + .long lex_rotate_anims_table ;8 Lex Luger + .long 0 ;9 Referee + + +#***************************************************************************** + + SUBR bounce_off_ropes + + + move *a13(INRING),a0 + jrnz #outside + + move *a13(WRESTLERNUM),a14 + X16 a14 + addi #bounce_xoffsets,a14 + move *a14,a14 + + + move *a13(MOVE_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #right +;#left + movi vln_left_rope,a6 + callr calc_line_x + sub a14,a0 + move *a13(OBJ_COLLX1),a1 + cmp a0,a1 ;a0-a1 + jrle #bounce + rets + +#right + movi vln_right_rope,a6 + callr calc_line_x + add a14,a0 + move *a13(OBJ_COLLX2),a1 + cmp a0,a1 ;a0-a1 + jrle #no_bounce + +#bounce +;;; move a0,*a13(OBJ_XPOSINT) + + + MOVE *A13(GETUP_TIME),A0 + JRNZ ALREADY_DONE_RISK_MESS + + move *a13(RISK),A0 + JRNZ ALREADY_DONE_RISK_MESS + +;Time to execute high-risk move! + MOVI 60,A0 + MOVE A0,*A13(RISK) + +ALREADY_DONE_RISK_MESS + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #bounce_anims,a14 + move *a14,a0,L ;* bounce anim + calla change_anim1a + SETMODE BOUNCING + +#no_bounce +#outside + rets + + + .ref bam_bounce_anim + .ref dnk_bounce_anim + .ref hrt_bounce_anim + .ref lex_bounce_anim + .ref rzr_bounce_anim + .ref shn_bounce_anim + .ref und_bounce_anim + .ref yok_bounce_anim + +#bounce_xoffsets + .word -20 ;0 Bret Hart + .word -20 ;1 Razor Ramon + .word -20 ;2 Undertaker + .word -20 ;3 Yokozuna + .word 0 ;4 Shawn Michaels + .word -30 ;5 Bam Bam + .word -20 ;6 Doink + .word -20 ;7 spare + .word -20 ;8 Lex Luger + .word 0 ;9 Referee + +#bounce_anims + .long hrt_bounce_anim ;0 Bret Hart + .long rzr_bounce_anim ;1 Razor Ramon + .long und_bounce_anim ;2 Undertaker + .long yok_bounce_anim ;3 Yokozuna + .long shn_bounce_anim ;4 Shawn Michaels + .long bam_bounce_anim ;5 Bam Bam + .long dnk_bounce_anim ;6 Doink + .long dnk_bounce_anim ;7 spare + .long lex_bounce_anim ;8 Lex Luger + .long dnk_bounce_anim ;9 Referee + +#***************************************************************************** + + SUBR execute_walk + + ;Do a step sound every 32 ticks if we're walking. (whether or not + ; INTURN bit is set) + move *a13(MOVE_DIR),a0 + JRZ NO_SOUND_CALL + MOVE @PCNT,A0 + ANDI 31,A0 + JRNZ NO_SOUND_CALL + CALLA WALK_SOUND +NO_SOUND_CALL + + ;if our INTURN bit is set, we're doing a turn and we shouldn't do + ; anything here -- treat it like UNINT. + + move *a13(ANIMODE),a14 + btst MODE_INTURN_BIT,a14 + jrnz #inturn + + move *a13(ANIMODE2),a14 + btst MODE_INTURN_BIT,a14 + jrnz #inturn + + clr a0 + move a0,*a13(ATTACK_TYPE) + + move *a13(MOVE_DIR),a0 + + X32 a0 + addi #walk_table,a0 + move *a0,a0,L + call a0 + +#rets rets + +#inturn move *a13(MOVE_DIR),a0 + jrnz #rets + + ;stick at rest - clear any velocity we might have lying around + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_ZVEL),L + + rets + +#walk_table + .long #zip ;0 + .long #up ;1 + .long #down ;2 + .long #zip ;3 + .long #left ;4 + .long #up_left ;5 + .long #down_left ;6 + .long #zip ;7 + .long #right ;8 + .long #up_right ;9 + .long #down_right ;10 + .long #zip ;11 + .long #zip ;12 + .long #zip ;13 + .long #zip ;14 + .long #zip ;15 + + +;All these routines set MOVE_DIR. However, the above code chooses the +; routine to execute based on MOVE_DIR, so they just end up stuffing the +; same value that's already there. Wuzzup wit' that? - JS + +************ +#zip ;(#0) +#do_stance + + clr a0 + move a0,*a13(MOVE_DIR) + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_ZVEL),L + + callr set_rotate_anim ;or stance + calla change_anim1 + rets + +************ +#up ;(#1) + + movk MOVE_UP,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + callr change_walk_anim + + rets + + +************ +#up_right ;(#2) + + move *a13(OBJ_CONTROL),a0 + andni M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + +; move *a13(CAN_MOVE_DIR),a0 +; btst MOVE_RIGHT_BIT,a0 +; jrnz #up +; btst MOVE_UP_BIT,a0 +; jrnz #right + + movk MOVE_UP_RIGHT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + callr change_walk_anim + rets + + +************ +#right ;(#3) + + move *a13(OBJ_CONTROL),a0 + andni M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + + movk MOVE_RIGHT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + callr change_walk_anim + rets + + +************ +#down_right ;(#4) + + move *a13(OBJ_CONTROL),a0 + andni M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + + move *a13(CAN_MOVE_DIR),a0 + btst MOVE_DOWN_BIT,a0 + jrnz #right + + movk MOVE_DOWN_RIGHT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + callr change_walk_anim + rets + + +************ +#down ;(#5) + + movk MOVE_DOWN,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + callr change_walk_anim + rets + + +************ +#down_left ;(#6) + + move *a13(OBJ_CONTROL),a0 + ori M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + + move *a13(CAN_MOVE_DIR),a0 + btst MOVE_DOWN_BIT,a0 + jrnz #left + + movk MOVE_DOWN_LEFT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + callr change_walk_anim + rets + + +************ +#left ;(#7) + + move *a13(OBJ_CONTROL),a0 + ori M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + + movk MOVE_LEFT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + callr change_walk_anim + rets + + +************ +#up_left ;(#8) + + move *a13(OBJ_CONTROL),a0 + ori M_FLIPH,a0 + move a0,*a13(OBJ_CONTROL) + +; move *a13(CAN_MOVE_DIR),a0 +; btst MOVE_LEFT_BIT,a0 +; jrnz #up +; btst MOVE_UP_BIT,a0 +; jrnz #left + + movk MOVE_UP_LEFT,a0 + move a0,*a13(MOVE_DIR) + + callr set_velocities + callr change_walk_anim + rets + +#***************************************************************************** +* +* sets X & Z velocites based on MOVE_DIR +* + +;MULT equ 256*75/100 ;25% reduction when moving backward + + +;MULT equ 256*100/100 ;0% reduction when moving backward +MULT equ 256*90/100 ;10% reduction when moving backward +GRND_MULT equ 256*150/100 ;50% addition when opponent is on ground + + + SUBRP set_velocities + + + move *a13(MOVE_DIR),a0 + callr convert_facing + X64 a0 + + move *a13(WRESTLERNUM),a2 + X32 a2 + addi #wres_velocity_tables,a2 + + move *a2,a2,L ;* velocity table + add a0,a2 + move *a2+,a1,L + + move *a13(WALK_FAST),a0 + jrnz #ongrnd + + callr get_opp_process + move *a0(PLYRMODE),a0 ;don't slow down if backing + cmpi MODE_ONGROUND,a0 ;away from a downed opponent + jreq #ongrnd + + cmpi MODE_DEAD,a0 ;away from a dead opponent + jreq #ongrnd + + move *a13(MOVE_DIR),a3 + move *a13(FACING_DIR),a4 + + move a3,a14 + or a4,a14 + andi MOVE_LEFT|MOVE_RIGHT,a14 + cmpi MOVE_LEFT|MOVE_RIGHT,a14 ;move opposite to facing? + jrne #not_back_x + + movi MULT,a0 + mpys a0,a1 + sra 8,a1 + jruc #not_back_x +#ongrnd + movi GRND_MULT,a0 + mpys a0,a1 + sra 8,a1 + +#not_back_x + move a1,*a13(OBJ_XVEL),L + + + move *a2,a1,L + move a3,a14 ;move_dir + or a4,a14 ;facing dir + andi MOVE_UP|MOVE_DOWN,a14 + cmpi MOVE_UP|MOVE_DOWN,a14 ;move opposite to facing? + jrne #not_back_y + + movi MULT,a0 + mpys a0,a1 + sra 8,a1 + +#not_back_y + move a1,*a13(OBJ_ZVEL),L + + rets + + + .ref bam_velocity_table + .ref dnk_velocity_table + .ref hrt_velocity_table + .ref lex_velocity_table + .ref rzr_velocity_table + .ref shn_velocity_table + .ref und_velocity_table + .ref yok_velocity_table + +#wres_velocity_tables + .long hrt_velocity_table ;0 Bret Hart + .long rzr_velocity_table ;1 Razor Ramon + .long und_velocity_table ;2 Undertaker + .long yok_velocity_table ;3 Yokozuna + .long shn_velocity_table ;4 Shawn Michaels + .long bam_velocity_table ;5 Bam Bam + .long dnk_velocity_table ;6 Doink + .long dnk_velocity_table ;7 spare + .long lex_velocity_table ;8 Lex Luger + .long 0 ;9 referee + + +;#***************************************************************************** +;* +;* RETURNS: a0 = boundary +;* +; SUBRP check_move_up +; +; move *a13(INRING),a0 +; jrnz #outring +; +; movi RING_TOP,a0 +; move *a13(OBJ_ZPOSINT),a1 +; cmp a0,a1 +; jrle #fail +; clrc +; rets +; +;#outring +; movi ARENA_TOP,a0 +; move *a13(OBJ_ZPOSINT),a1 +; cmp a0,a1 +; jrle #fail +; +; movi box_matedge2,a10 +; callr get_box_overlap +; move a1,a1 ;z overlap +; jrp #fail2 +; +; clrc +; rets +; +;#fail2 +; move *a13(OBJ_ZPOSINT),a0 +; dec a1 +; add a1,a0 +; +;#fail +; setc +; rets +; +;#***************************************************************************** +;* +;* RETURNS: a0 = boundary +;* +; SUBRP check_move_down +; +; move *a13(INRING),a0 +; jrnz #outring +; +; movi RING_BOT,a0 +; move *a13(OBJ_ZPOSINT),a1 +; cmp a0,a1 +; jrge #fail +; clrc +; rets +; +;#outring +; movi ARENA_BOT,a0 +; move *a13(OBJ_ZPOSINT),a1 +; cmp a0,a1 +; jrge #fail +; +; movi box_matedge2,a10 +; callr get_box_overlap +; move a1,a1 ;z overlap +; jrn #fail2 +; +; clrc +; rets +; +;#fail2 +; move *a13(OBJ_ZPOSINT),a0 +; inc a1 +; add a1,a0 +;#fail +; setc +; rets +; +;#***************************************************************************** +;* +;* RETURNS: a0 = boundary +;* +; SUBRP check_move_left +; +; move *a13(INRING),a0 +; jrnz #outring +; +; move *a13(OBJ_XPOSINT),a5 +; movi vln_left_rope,a6 +; move *a6,a0 ;x1 +; cmp a0,a5 ;xpos - x1 +; jrge #ok +; callr calc_line_x +; cmp a0,a5 ;xpos - a0 +; jrle #fail +;#ok +; clrc +; rets +; +;#outring +; move *a13(OBJ_XPOSINT),a5 +; movi vln_left_fence,a6 +; move *a6,a0 ;x1 +; cmp a0,a5 ;xpos - x1 +; jrge #ok2 +; callr calc_line_x +; jrz #outrange +; cmp a0,a5 ;xpos - a0 +; jrle #fail +;#outrange +;#ok2 +; movi box_matedge2,a10 +; callr get_box_overlap +; move a0,a0 ;x overlap +; jrp #fail2 +; +; clrc +; rets +; +;#fail2 +; move *a13(OBJ_XPOSINT),a1 +; dec a0 +; add a1,a0 +;#fail +; setc +; rets +; +;#***************************************************************************** +;* +;* RETURNS: a0 = boundary +;* +; SUBRP check_move_right +; +; move *a13(INRING),a0 +; jrnz #outring +; +; move *a13(OBJ_XPOSINT),a5 +; movi vln_right_rope,a6 +; move *a6,a0 ;x1 +; cmp a0,a5 ;xpos - x1 +; jrle #ok +; callr calc_line_x +; cmp a0,a5 ;xpos - a0 +; jrge #fail +;#ok +; clrc +; rets +; +;#outring +; move *a13(OBJ_XPOSINT),a5 +; movi vln_right_fence,a6 +; move *a6,a0 ;x1 +; cmp a0,a5 ;xpos - x1 +; jrle #ok2 +; callr calc_line_x +; jrz #outrange +; cmp a0,a5 ;xpos - a0 +; jrge #fail +;#ok2 +;#outrange +; movi box_matedge2,a10 +; callr get_box_overlap +; move a0,a0 ;x overlap +; jrn #fail2 +; +; clrc +; rets +; +;#fail2 +; move *a13(OBJ_XPOSINT),a1 +; inc a0 +; add a1,a0 +;#fail +; setc +; rets + +#***************************************************************************** +* +* ARGS: a10 = * box +* +* RETURNS: a0 = signed x offset (left overlap < 0 < right overlap) +* a1 = signed z offset (top overlap < 0 < bot overlap) + + SUBR get_box_overlap + + + move *a10(20h),a6,L + callr calc_line_x + move a0,a0 + jrz #outrange + PUSH a0 + + move *a10,a6,L + callr calc_line_x + move a0,a0 ;left + jrz #outrange + PULL a1 ;right + + move *a13(OBJ_XPOSINT),a4 + sub a4,a0 ;left-xpos + jrgt #outside + neg a0 + + sub a4,a1 ;right-xpos + jrlt #outside + + move *a13(OBJ_ZPOSINT),a2 + move a2,a3 + move *a6(10h),a4 ;z top + sub a4,a2 ;zpos-top + jrlt #outside + + move *a6(30h),a4 ;z bot + sub a4,a3 ;zpos-bot + jrgt #outside + neg a3 + + + + cmp a0,a1 ;right - left + jrlt #right_min + +;left_min + cmp a2,a0 ;left - top + jrgt #top_min + cmp a3,a0 ;left - bot + jrgt #bot_min + + neg a0 ;xoff + clr a1 ;zoff + rets + +#right_min + cmp a2,a1 ;right - top + jrgt #top_min + cmp a3,a1 ;right - bot + jrgt #bot_min + + move a1,a0 ;xoff + clr a1 ;zoff + rets + +#top_min + cmp a3,a2 ;top - bot + jrgt #bot_min + + neg a2 + move a2,a1 ;zoff + clr a0 ;xoff + rets + +#bot_min + cmp a2,a3 ;bot - top + jrgt #top_min + + move a3,a1 ;zoff + clr a0 ;xoff + rets + +#outside +#outrange + clr a0 + clr a1 + + rets + +#***************************************************************************** + + SUBR get_rope_x + + PUSH a6 + + movi vln_right_rope,a6 + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_CENTER,a0 + jrgt #right + movi vln_left_rope,a6 +#right + callr calc_line_x + PULL a6 + rets + + +#***************************************************************************** +* +* ARGUMENTS: a6 = * line table +* +* RETURNS: a0 = x-val of line at player ZPOS +* a0 = 0 if out of range in Z +* +* TRASHES: a0,a1 + + + SUBR calc_line_x + + move *a13(OBJ_ZPOSINT),a1 + + move *a6(30h),a0 ;z2 + cmp a0,a1 ;zpos - z2 + jrgt #outrange ;below + + move *a6(10h),a0 ;z1 + sub a0,a1 ;zpos - z1 + jrlt #outrange ;above + + X16 a1 + add a6,a1 + move *a1(40h),a0 ;skip 4 word header + rets +#outrange + clr a0 + rets + + SUBR set_up_line_tables + movi vln_right_rope_r,a1 + movi vln_right_rope,a0 + callr setup_each_right_table + movi vln_left_rope_r,a1 + movi vln_left_rope,a0 + callr setup_each_left_table + movi vln_right_matedge_r,a1 + movi vln_right_matedge,a0 + callr setup_each_right_table + movi vln_left_matedge_r,a1 + movi vln_left_matedge,a0 + callr setup_each_left_table + movi vln_right_matedge2_r,a1 + movi vln_right_matedge2,a0 + callr setup_each_right_table + movi vln_left_matedge2_r,a1 + movi vln_left_matedge2,a0 + callr setup_each_left_table + movi vln_right_fence_r,a1 + movi vln_right_fence,a0 + callr setup_each_right_table + movi vln_left_fence_r,a1 + movi vln_left_fence,a0 + +setup_each_left_table + move *a1(0),*a0+,L + move *a1(020h),*a0+,L + move *a1(040h),a2 + inc a2 + move *a1(050h),a3 + move *a1(0h),a4 + sll 16,a4 + move a2,a7 + sll 16,a3 + divs a7,a3 +#write_next_val_l + sub a3,a4 + move a4,a6 + srl 16,a6 + move a6,*a0+ + dsjs a2,#write_next_val_l + + rets + +setup_each_right_table + move *a1(0),*a0+,L + move *a1(020h),*a0+,L + move *a1(040h),a2 + inc a2 + move *a1(050h),a3 + move *a1(0h),a4 + sll 16,a3 + sll 16,a4 + move a2,a7 + divs a7,a3 +#write_next_val + add a3,a4 + move a4,a6 + srl 16,a6 + move a6,*a0+ + dsjs a2,#write_next_val + + rets + +#***************************************************************************** +* +* ARGUMENTS: a6 = * line table +* a1 = ZPOSINT +* +* RETURNS: a0 = x-val of line at input ZPOS +* a0 = 0 if out of range in Z +* +* TRASHES: a0,a1 + + + SUBR calc_line_pt + + move *a6(30h),a0 ;z2 + cmp a0,a1 ;zpos - z2 + jrgt #outrange ;below + + move *a6(10h),a0 ;z1 + sub a0,a1 ;zpos - z1 + jrlt #outrange ;above + + X16 a1 + add a6,a1 + move *a1(40h),a0 ;skip 4 word header + rets +#outrange + clr a0 + rets + +#***************************************************************************** + + SUBR wobble_ropes + +;Called from wrestler "GETTING HIT" sequences. +;Check to see if I'm up against the ropes. +;If so, wobble them. + + move *a13(INRING),a0 + jrnz #exit + + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_CENTER,a0 + jrlt #lft + + movi vln_right_rope,a6 + callr calc_line_x + movk ROPE_RIGHT,a2 + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;a1-a0 + jrge #wobble + jruc #exit + +#lft + movi vln_left_rope,a6 + callr calc_line_x + movk ROPE_LEFT,a2 + move *a13(OBJ_XPOSINT),a1 + cmp a0,a1 ;a1-a0 + jrle #wobble + jruc #exit + +#wobble + +;Wrestler has been knocked back into ropes +;Wobble them! + move a2,a0 + movk 1,a2 + movk ROPE_BOUNCEIO,a1 + calla rope_command + +#exit rets + +#***************************************************************************** +* +* If player is moving away from opponent, or standing still, tell the +* calling SEQUENCE to not leap at the opponent! +* +* This routine is used by all wrestlers. + + SUBR get_leap + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + + move *a13(OBJ_XVEL),a14,L + move *a13(OBJ_ZVEL),a0,L + or a14,a0 + jrz #novel ;Wrestler is standing still! + + +;Is wrestler backing away from opponent? + + move *a13(MOVE_DIR),a1 + move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrnz #novel + +;Will lunge toward opponent + rets + +#novel + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + + rets + +***************************************************************************** +* +* If player is moving away from opponent, or standing still, tell the +* calling routine to ignore button press +* + + SUBR ck_ignore + +;Is wrestler going away from opponent? + + move *a13(MOVE_DIR),a1 + move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrnz #novel2 + +;Will allow button press + clrc + rets + +#novel2 setc + rets + +mv_tbl .long 0,0,0,0,0,MOVE_RIGHT_BIT,MOVE_RIGHT_BIT + .long 0,0,MOVE_LEFT_BIT,MOVE_LEFT_BIT + +#***************************************************************************** +* +* If player is moving away from opponent, or standing still, tell the +* calling routine to ignore button press +* + + SUBR ck_ignore_a8 + +;Is wrestler going away from opponent? + + move *a8(MOVE_DIR),a1 + move *a8(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) + sll 5,a0 + addi mv_tbl,a0 + move *a0,a0,L + btst a0,a1 + jrnz #novel2 + +;Will allow button press + clrc + rets + +#novel2 setc + rets + + +#***************************************************************************** +* +* When we want all ropes to wobble (Butt drops, etc.) +* This routine is used by all wrestlers. + + SUBR shake_all_ropes + +; move @NUM_OPPS,A1 +; CMPI 2,A1 +; JRGE NO_SHAKING + + movi ROPE_BOUNCEUD,a1 + movk 2,a2 + + movi ROPE_FRONT,a0 + calla rope_command + + movk ROPE_BACK,a0 + calla rope_command + + movk ROPE_LEFT,a0 + calla rope_command + + movk ROPE_RIGHT,a0 + calla rope_command + +NO_SHAKING + rets + +#***************************************************************************** +* +* CALLED FROM WITHIN COLLISION ROUTINES +* +* makes wrestlers face each other & sets x_flip accordingly +* +* a13 = victim process +* a10 = attacker process + + SUBR face_each_other + + movk MOVE_RIGHT,a0 + move *a13(OBJ_XPOS),a2,L + move *a10(OBJ_XPOS),a3,L + cmp a2,a3 ;a3-a2 + jrgt #right + movk MOVE_LEFT,a0 +#right + movk MOVE_DOWN,a1 + move *a13(OBJ_ZPOS),a2,L + move *a10(OBJ_ZPOS),a3,L + cmp a2,a3 ;a3-a2 + jrgt #down + movk MOVE_UP,a1 +#down + or a1,a0 + move a0,*a13(NEW_FACING_DIR) + move a0,*a13(FACING_DIR) + + xori MOVE_UP|MOVE_DOWN|MOVE_LEFT|MOVE_RIGHT,a0 ;opposite + + move a0,*a10(NEW_FACING_DIR) + move a0,*a10(FACING_DIR) + + move a10,a0 + callr set_wrestler_xflip + + move a13,a0 + callr set_wrestler_xflip + + rets + +#***************************************************************************** +* +* Resets all special move processes by writing their SM_RESET_ADDRESSes +* to their PWAKEs, and setting their PTIMEs to 1. + + SUBR reset_smoves + + movi ACTIVE,a0 + movk 1,a1 +#lp0 move *a0,a0,L + jrz #done + move *a0(PROCID),a14 + cmpi SMOVE_PID,a14 + jrne #lp0 + + move *a0(SM_RESET_ADDRESS),*a0(PWAKE),L + move a1,*a0(PTIME) + jruc #lp0 + +#done rets + +#***************************************************************************** +* +* This is a final pass at confining the wrestlers and it's just about the +* last thing that happens every frame, certain to run after both wrestler +* processes. It calls confine_wrestler once for each attached wrestler. +* + + SUBRP final_confine + + movi NUM_WRES,a1 + movi process_ptrs,a2 + PUSH a13 +#loop + move *a2+,a13,L + jrz #inactive + + move *a13(ATTACH_PROC),a0,L + jrz #no_attach + + PUSH a1,a2 + calla set_collision_boxes + calla confine_wrestler + PULL a1,a2 + +#no_attach +#inactive + dsj a1,#loop + + PULL a13 + rets + + +#***************************************************************************** +* Temp routines + + .if DEBUG + + BSSX CPUAVG ,16 + BSSX CPULEFT ,16 + + + SUBRP cputime_calcfree + + move @dirqtimer,a0 + subk 1,a0 + jrle nobog + clr a0 + jruc gottime +nobog + move @vcount,a0 + subi EOSINT,a0 + jrnn skinccnt + addi 256,a0 +skinccnt + sll 2,a0 + neg a0 + addi 1024,a0 +gottime + move a0,@CPULEFT + + srl 4,a0 + move @CPUAVG,a1 + move a1,a2 + srl 4,a2 ;/16 + sub a2,a1 + add a0,a1 + move a1,@CPUAVG + + rets + + + .endif + + .if COL_DEBUG + +#***************************************************************************** +* highlights attack box +* a10 is ptr to wrestler process + + SUBR collis_debug + + + clr a0 ;x pos + clr a1 ;y pos + movi jmeter,a2 ;* image + movi >1601,a3 ;z pos + movi DMACAL|M_3D,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + clr a0 + move a0,*a8(ODXOFF) + move a0,*a8(ODYOFF) + + movi 0202h,a0 + move a0,*a8(OCONST) + +#loop + SLEEPK 1 + + movi 7f00h,a0 + move @debug_collis,a14 + cmpi 2,a14 + jrne #not_2 + movi 1400h,a0 +#not_2 + move a0,*a8(OZPOS) + + move @debug_collis,a0 + jrz #off + + move *a10(ANIMODE),a0 + btst MODE_CHECKHIT_BIT,a0 + jrnz #on + +#off + clr a0 + move a0,*a8(OXVAL),L + move a0,*a8(OYVAL),L + + move @slowmo,a0 + move a0,@slowmotion + + movk 16,a0 + move a0,*a8(OSIZEX) + move a0,*a8(OSIZEY) + + jruc #loop + + +#on + movk 30,a0 + clr a0 + + move @slowmo,a1 + jrz #skp + move a1,a0 +#skp + move a0,@slowmotion + + movi Y_SCALE_MULTIPLIER,a0 + move *a10(OBJ_ZPOSINT),a1 + mpys a0,a1 + move a1,a4 ;y val + srl 16,a4 + move *a10(OBJ_YPOSINT),a0 + sub a0,a4 + + move *a10(OBJ_ATTYOFF),a0 + sub a0,a4 + move *a10(OBJ_ATTHEIGHT),a0 + sub a0,a4 + sll 16,a4 + move a4,*a8(OYVAL),L + + move *a10(OBJ_ATTWIDTH),a0 + move a0,*a8(OSIZEX) + move *a10(OBJ_ATTHEIGHT),a0 + move a0,*a8(OSIZEY) + + move *a10(OBJ_ATTXOFF),a0 + move *a10(OBJ_XPOSINT),a4 + + ;check the same way the actual collision code does. + move *a10(OBJ_CONTROL),a14 + btst B_FLIPH,a14 + jrz #facing_right + +; move *a10(FACING_DIR),a14 +; btst PLAYER_RIGHT_BIT,a14 +; jrnz #facing_right + + neg a0 + move *a10(OBJ_ATTWIDTH),a14 + sub a14,a0 + +#facing_right + + add a0,a4 + sll 16,a4 + move a4,*a8(OXVAL),L + + + + jruc #loop + +;;; move a0,@debug_collis + + + +#***************************************************************************** +* highlights target box +* a10 is ptr to wrestler process + + SUBRP collis_debug2 + + clr a0 ;x pos + clr a1 ;y pos + movi jmeter,a2 ;* image + movi 7f00h,a0 ;199 + movi DMACAL|M_3D,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + clr a0 + move a0,*a8(ODXOFF) + move a0,*a8(ODYOFF) + + movi 0101h,a0 + move a0,*a8(OCONST) + +#loop + SLEEPK 1 + + movi >1600,a0 + move @debug_collis,a14 + cmpi 2,a14 + jrne #not_2 + movi 111,a0 +#not_2 + move a0,*a8(OZPOS) + + move @debug_collis,a0 + jrnz #on + + clr a0 + move a0,*a8(OXVAL),L + move a0,*a8(OYVAL),L + + movk 16,a0 + move a0,*a8(OSIZEX) + move a0,*a8(OSIZEY) + + jruc #loop + +#on + move *a10(OBJ_COLLX1),a0 + move a0,a1 + sll 16,a0 + move a0,*a8(OXVAL),L + + move *a10(OBJ_COLLX2),a2 + sub a1,a2 + move a2,*a8(OSIZEX) + + movi Y_SCALE_MULTIPLIER,a0 + move *a10(OBJ_ZPOSINT),a1 + mpys a0,a1 + srl 16,a1 + move *a10(OBJ_COLLY2),a0 + sub a0,a1 + sll 16,a1 + move a1,*a8(OYVAL),L + + move *a10(OBJ_COLLY2),a0 + move *a10(OBJ_COLLY1),a1 + sub a1,a0 + move a0,*a8(OSIZEY) + + jruc #loop + + .endif + +#***************************************************************************** + .if SCRT_DEBUG + + .bss imgptrs0, 32*16 + + SUBRP scrt_debug + + movk 16,a1 + movi imgptrs0,a2 + movi [10,0],a0 ;x pos +#init_loop + + PUSH a0,a1,a2 + + movi [238,0],a1 ;y pos + movi d_zip,a2 ;* image + movi 10000,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + + PULL a0,a1,a2 + move a8,*a2+,L + addi [16,0],a0 + dsj a1,#init_loop + +#loop + + + movi wrest_joystat,a1 + movi imgptrs0,a2 + movk 16,a3 + +#loop2 + move *a2+,a8,L + move *a1+,a5,L + move a5,a0 + + srl 4,a0 + andi 011111b,a0 + jrz #cont + X32 a0 + addi #button_imgs,a0 + move *a0,a0,L + jruc #cont2 + +#cont + move a5,a0 + andi 01111b,a0 + X32 a0 + addi #arrow_imgs,a0 + move *a0,a0,L + +#cont2 + + PUSH a1,a2,a3 + + callr #change_image + + PULL a1,a2,a3 + dsj a3,#loop2 + + SLEEPK 1 + + jruc #loop + + +#change_image + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFX),a1 + move a1,*a8(ODXOFF) ;display x offset + + move *a0(IANIOFFY),a1 + move a1,*a8(ODYOFF) ;display y offset + + setf 5,0,0 + move *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 16,1,0 + rets + +#arrow_imgs + .long d_zip ;0 + .long d_up ;1 + .long d_down ;2 + .long d_zip ;3 + .long d_left ;4 + .long d_upleft ;5 + .long d_downleft ;6 + .long d_zip ;7 + .long d_right ;8 + .long d_upright ;9 + .long d_downright ;10 + .long d_zip ;11 + .long d_zip ;12 + .long d_zip ;13 + .long d_zip ;14 + .long d_zip ;15 + + +#button_imgs + .long d_zip ;0 + .long d_block ;1 + .long d_grab ;2 + .long d_zip ;3 + .long d_punch ;4 + .long d_zip ;5 + .long d_zip ;6 + .long d_zip ;7 + .long d_kick ;8 + .long d_zip ;9 + .long d_zip ;10 + .long d_zip ;11 + .long d_zip ;12 + .long d_zip ;13 + .long d_zip ;14 + .long d_zip ;15 + .long d_turbo ;16 + + .endif + +#***************************************************************************** + .if DIR_DEBUG + + .bss imgptrs, 32*3 + .bss imgptrs2, 32*3 + + SUBRP dir_debug + + movi [10,0],a0 ;x pos + movi [25,0],a1 ;y pos + movi d_zip,a2 ;* image + movi 10000,a3 ;z pos + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + move a8,@imgptrs,L + + movi [10,0],a0 ;x pos + movi [25+15,0],a1 ;y pos + calla BEGINOBJ + move a8,@imgptrs+32,L + + movi [10,0],a0 ;x pos + movi [25+30,0],a1 ;y pos + calla BEGINOBJ + move a8,@imgptrs+64,L + + + movi [400-24,0],a0 ;x pos + movi [25,0],a1 ;y pos + calla BEGINOBJ + move a8,@imgptrs2,L + + movi [400-24,0],a0 ;x pos + movi [25+15,0],a1 ;y pos + calla BEGINOBJ + move a8,@imgptrs2+32,L + + movi [400-24,0],a0 ;x pos + movi [25+30,0],a1 ;y pos + calla BEGINOBJ + move a8,@imgptrs2+64,L + + + +#loop + clr a1 + callr get_process_ptr + + move a0,a10 + JRZ NO_ONE_HERE1 + + move *a10(MOVE_DIR),a0 + move @imgptrs,a8,L + callr #ud_arrow + + move *a10(NEW_FACING_DIR),a0 + move @imgptrs+32,a8,L + callr #ud_arrow + + move *a10(FACING_DIR),a0 + move @imgptrs+64,a8,L + callr #ud_arrow + +NO_ONE_HERE1 + movk 1,a1 + callr get_process_ptr + move a0,a10 + JRZ NO_ONE_HERE2 + + move *a10(MOVE_DIR),a0 + move @imgptrs2,a8,L + callr #ud_arrow + + move *a10(NEW_FACING_DIR),a0 + move @imgptrs2+32,a8,L + callr #ud_arrow + + move *a10(FACING_DIR),a0 + move @imgptrs2+64,a8,L + callr #ud_arrow + +NO_ONE_HERE2 + SLEEPK 1 + jruc #loop + + +#ud_arrow + move a0,a0 + jrnz #ok + movi d_zip,a0 + jruc #cont +#ok + callr convert_facing + X32 a0 + addi #arrow_imgs,a0 + move *a0,a0,L + +#cont + move a0,*a8(OIMG),L + move *a0(0),*a8(OSIZE),L + move *a0(ISAG),*a8(OSAG),L + + move *a0(IANIOFFX),a1 + move a1,*a8(ODXOFF) ;display x offset + + move *a0(IANIOFFY),a1 + move a1,*a8(ODYOFF) ;display y offset + + setf 5,0,0 + move *a0(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits + setf 16,1,0 + rets + + +#arrow_imgs + .long d_up + .long d_upright + .long d_right + .long d_downright + .long d_down + .long d_downleft + .long d_left + .long d_upleft + + .long d_punch + .long d_kick + .long d_block + .long d_grab + .long d_turbo + .long d_zip + + .endif + +#***************************************************************************** +* +* Initializes the scroller position + + SUBR init_scroller + + movi [RING_X_CENTER-200,0],a0 + move a0,@WORLDTLX,L + + ;use [ffe5,0] in 1v1 or 1v3, [ffe9,0] for 1v2 + movi [0ffe5h,0],a0 + move @NUM_OPPS,a14 + cmpi 2,a14 + jrne #sety + movi [0ffe9h,0],a0 +#sety move a0,@WORLDTLY,L + + rets + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/WRESTLE.CMD b/WRESTLE.CMD new file mode 100755 index 0000000..9038196 --- /dev/null +++ b/WRESTLE.CMD @@ -0,0 +1,152 @@ +/* Game linker command file */ +-e WARMSET /* entry point of program */ +-f 0xFFFF /* fill unspecified memory with value */ +-o d:\wrestle.out /* specify output file */ +-m d:\wrestle.map /* map file */ +-s /* Kill the symbol table */ +display.obj /*IMAGE HANDLER*/ +main.obj /*INITIALIZATION AND INTERRUPTS*/ +util.obj /*UTILITIES*/ +pal.obj /*PALETTE ROUTINES*/ +mproc.obj /*MULTI-TASKER*/ +bakgnd.obj /*BACKGROUND GENERATOR*/ +bgndtbl.obj /*BACKGROUND TABLES*/ +bgndpal.obj /*BACKGROUND PALETTES*/ +wrespal.obj + +imgpal.obj +ropeimg.obj +miscimg.obj + +bamimg.obj +bretimg.obj +doinkimg.obj +leximg.obj +razorimg.obj +shawnimg.obj +takerimg.obj +yokoimg.obj + +wrestle.obj /*FIRST GAME MODULE*/ +wrestle2.obj +anim.obj +special.obj +getup.obj +drone.obj +award.obj +dcssound.obj +patch.obj +text.obj +attract.obj +string.obj +square.obj +adjust.obj +audit.obj +test.obj +diag.obj +menu.obj +hstd.obj +select.obj +/* robo.obj +coll2.obj */ +tables.obj +ropes.obj +lifebar.obj +screen.obj +progress.obj +firework.obj +stories.obj + +react1.obj +react2.obj +react3.obj +react4.obj +react5.obj +react6.obj +react7.obj +react8.obj +react9.obj + +bam.obj +bret.obj +doink.obj +razor.obj +lex.obj +shawn.obj +taker.obj +yoko.obj + +bamseq1.obj +bamseq2.obj +bamseq3.obj +bamseq4.obj + +dnkseq1.obj +dnkseq2.obj +dnkseq3.obj +dnkseq4.obj + +hrtseq1.obj +hrtseq2.obj +hrtseq3.obj +hrtseq4.obj + +lexseq1.obj +lexseq2.obj +lexseq3.obj +lexseq4.obj + +rzrseq1.obj +rzrseq2.obj +rzrseq3.obj +rzrseq4.obj + +shnseq1.obj +shnseq2.obj +shnseq3.obj +shnseq4.obj + +undseq1.obj +undseq2.obj +undseq3.obj +undseq4.obj + +yokseq1.obj +yokseq2.obj +yokseq3.obj +yokseq4.obj + +finiseq.obj + +collis.obj +crowd.obj + + +MEMORY /* set up memory for sdb board */ +{ + SCRATCH : org = 0x01000000, len = 0x3F7300 + SCRATCH2 : org = 0x013F7300, len = 0x8D00 + ROM : org = 0xFF800000, len = 0x7FFC00 + TRAP31 : org = 0xFFFFFC00, len = 0x400 + IROM : org = 0x02000000, len = 0x400000 +} + +SECTIONS /* linker sections directive */ + { + VECTORS: {} > TRAP31 + GROUP: + { + unzip: {} + FIXED: {} + OFIXED: {} + .bss: {} + } > SCRATCH + + .text: {} > ROM + .data: {} > ROM + + } + + +/* END */ + \ No newline at end of file diff --git a/WRESTLE.TVS b/WRESTLE.TVS new file mode 100755 index 0000000..d2ece47 --- /dev/null +++ b/WRESTLE.TVS @@ -0,0 +1,56 @@ +.struct display.equ +.struct mproc.equ +.struct game.equ +.struct sys.equ + +.km !f1 \ @J"HOME"@K*ACTIVE\ PROC\ PLINK"CR" +.km !f2 \ @J"HOME"@K*OBJLST\ OBJ\ OLINK"CR" +.km !f3 \ @J"HOME"@KPALRAM\ PAL\ *"CR" +.km !f4 \ @J"HOME"@K*BAKLST\ OBJ\ OLINK"CR" + +;OLD BELOW +;.km !f1 @D*ACTIVE\ PROC\ PLINK"CR" +;.km !f2 @D*OBJLST\ OBJ\ OLINK"CR" +;.km !f2 \ @J"HOME"@K*OBJLST\ OBJ\ OLINK"CR" +;.km !f3 @DPALRAM\ PAL\ *"CR" + +;CORRECT TODD STUFF BELOW +;.km !f1 \ @J"HOME"@K*ANIOBJS\ ANIM\ AnimNxt"CR" +;.km !f2 \ @J"HOME"@K*OFREE\ OBJ\ OLINK"CR" +;.km !f6 \ @J"HOME"@K*ACTIVE\ PRC\ PLINK"CR" +;.km s @D"CR"S +;.km w @D"CR"W + +;**** display SOURCE when cursor on longword in struct or mem display **** +.km S @M"CR"S"CR" +;**** display WORDS when cursor on longword in struct or mem display **** +.km W @M"CR"W"CR" +; +.wp slowmo,UDW +.wp debug_collis,UDW +.wp DIAG0,SDL +.wp DIAG1,SDL +.wp SCRNLR,UHL +.wp SCRNTL,UHL +.wp CPULEFT,UDW +.wp CPUAVG,UDW +.wp PSTATUS,UHW +.wp WORLDTLX,UHL +.wp WORLDTLY,UHL +.wp PCNT,UHW +.wp switches_cur,UHL +.wp punch_dtime1,UDW +.wp grab_dtime1,UDW +.wp kick_dtime1,UDW +.wp block_dtime1,UDW +.wp turbo_dtime1,UDW +.wp punch_dtime2,UDW +.wp grab_dtime2,UDW +.wp kick_dtime2,UDW +.wp block_dtime2,UDW +.wp turbo_dtime2,UDW +.wp fight_debug,UDW +.wp skip_select,UDW +.wp process_ptrs,UHL +.wp process_ptrs+32,UHL + \ No newline at end of file diff --git a/WRESTLE2.ASM b/WRESTLE2.ASM new file mode 100755 index 0000000..ff13ca8 --- /dev/null +++ b/WRESTLE2.ASM @@ -0,0 +1,5022 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/20/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "wrestle2.asm" + .title "wrestling game program cont..." + .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 "audit.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "sound.equ" + .include "ring.equ" + + .include "imgtbl.glo" + .include "fontsimg.glo" + .include "bgndtbl.glo" + .include "miscimg.glo" + .include "jjxm.h" + + ;temp! - 314 + .if DEBUG + .include "tmpdebug.h" + .endif + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref PSTATUS,triple_sound,change_anim1a,set_rotate_anim + .ref get_rope_x,round_tickcount,get_process_ptr,NUM_OPPS + .ref PALFRAM,HALT,dma_bog,GAMSTATE,pal_getf,process_ptrs + .ref change_anim2a,announce_rnd_winner,GET_ADJ,pin_prompt + .ref change_image,match_time,is_final_match,is_8_on_1 + .ref ADD_VOICE,p1oldwinstreak,match_winner,RNDRNG0 + + .ref calc_line_x,PCNT,drone_meters_on,FINAL_PTR + .ref dnk_climbthru_side_anim,dnk_climbthru_bot_anim + .ref dnk_climbthru_top_anim,dnk_climbin_bot_anim + .ref dnk_climbin_top_anim,dnk_climbin_side_anim + .ref get_opp_process,adjust_health,init_wres_life_data + .ref HRTPNK_P,HRTBLU_P,UNDBLK_P,DNKPRP_P,YOKPRP_P + .ref LEXPRP_P,RZRPRP_P,BAMYLW_P,SHNPRP_P + + .ref wrestler_x,wrestler_y,wrestler_z,index1,index2 + + .ref dnk_climb_up_anim,shn_climb_up_anim,bam_climb_up_anim + .ref hrt_climb_up_anim,lex_climb_up_anim,und_climb_up_anim + .ref yok_climb_up_anim,rzr_climb_up_anim + + .ref bam_climbin_side_anim,bam_climbthru_side_anim + .ref bam_climbin_top_anim,bam_climbthru_top_anim + .ref bam_climbin_bot_anim,bam_climbthru_bot_anim + .ref und_climbin_side_anim,und_climbthru_side_anim + .ref und_climbin_top_anim,und_climbthru_top_anim + .ref und_climbin_bot_anim,und_climbthru_bot_anim + .ref rzr_climbin_side_anim,rzr_climbthru_side_anim + .ref rzr_climbin_top_anim,rzr_climbthru_top_anim + .ref rzr_climbin_bot_anim,rzr_climbthru_bot_anim + .ref hrt_climbin_side_anim,hrt_climbthru_side_anim + .ref hrt_climbin_top_anim,hrt_climbthru_top_anim + .ref hrt_climbin_bot_anim,hrt_climbthru_bot_anim + .ref yok_climbin_side_anim,yok_climbthru_side_anim + .ref yok_climbin_top_anim,yok_climbthru_top_anim + .ref yok_climbin_bot_anim,yok_climbthru_bot_anim + .ref lex_climbin_side_anim,lex_climbthru_side_anim + .ref lex_climbin_top_anim,lex_climbthru_top_anim + .ref lex_climbin_bot_anim,lex_climbthru_bot_anim + .ref shn_climbin_side_anim,shn_climbthru_side_anim + .ref shn_climbin_top_anim,shn_climbthru_top_anim + .ref shn_climbin_bot_anim,shn_climbthru_bot_anim + .ref switches_cur,switches_down,switches_up + .ref dufus_msg_off,get_rnd_wrestler,royal_rumble + .ref START_HI_FLASHES,wrestler_count,buddy_mode_on + .ref reduce_bog,player_pal_pref,crowd_process + .ref wrestler_count,wrestler_count_proc,get_opp_plyrmode + .ref THIS_GAME_TIME,STORE_AUDIT,GET_AUD,CURRENT_LADDER + .ref AUD,match_start_time,PSTARTS,match_realtime + .ref wrestler_audits,current_round,AUD1 + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +#****************************************************************************** +* +* a13 = * wrestler process +* a0 = stick_val_cur + + SUBR climb_turnbuckle + + 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+5,a0 ;give 'em 5 pixels of leeway + 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 + subk 5,a1 ;give 'em 5 + cmp a0,a1 ;a1-a0 + jrgt #no_climb + + movk 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 + addk 5,a1 ;give 'em 5 + cmp a0,a1 ;a1-a0 + jrlt #no_climb + + movk MOVE_UP_RIGHT,a3 ;face top right turnbuckle + cmp a3,a4 ;Make sure UP/RIGHT is pressed + jrne #no_climb + + +#climbit + +;If anybody is already on turnbuckles, ignore this + movi process_ptrs,a4 + movi NUM_WRES,a5 + +#loop move *a4+,a0,L + jrz #nxt ;skip inactive + + move *a0(PLYRMODE),a14 + cmpi MODE_ONTURNBKL,a14 + jrz #found_climber + cmpi MODE_CLIMBTURNBKL,a14 + jrz #found_climber + jruc #nxt + +#found_climber + ;check to see if we're trying to climb the one he's on + move *a13(OBJ_XPOSINT),a14 + move *a0(OBJ_XPOSINT),a10 + cmpi RING_X_CENTER,a14 + jrgt #ck_rt + + ;left tbukl + cmpi RING_X_CENTER,a10 + jrlt #no_climb + jruc #nxt + +#ck_rt ;right tbukl + cmpi RING_X_CENTER,a10 + jrgt #no_climb + +#nxt dsj a5,#loop + + + ;we're going to climb - because we allow 'near misses' to climb, + ; we may have to glitch the guy to the corner. do it here. + movi RING_TOP,a14 + move a14,*a13(OBJ_ZPOSINT) + + move *a13(WRESTLERNUM),a0 + X16 a0 + addi #face_turnbuckle,a0 + move *a0,a0 ;flip facing? + jrz #no_flip + xori MOVE_UP|MOVE_DOWN|MOVE_LEFT|MOVE_RIGHT,a3 ;opposite +#no_flip + move a3,*a13(NEW_FACING_DIR) + move *a13(FACING_DIR),a0 + cmp a0,a3 + jreq #climb + calla set_rotate_anim + calla change_anim1a + + movi #climb,a0 ;this routine gets executed + move a0,*a13(CODE_ADDR),L ;when the rotate anim + SETMODE WAITANIM ;finishes + + setc + rets + +#climb + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #climb_anims,a0 + move *a0,a0,L + calla change_anim1a + + SETMODE CLIMBTURNBKL + + setc + rets + +#not_top +#no_climb + clrc + rets + +;0 = face turnbuckle before climb +;1 = back to turnbuckle +#face_turnbuckle + .word 1 ;0 Bret Hart + .word 1 ;1 Razor Ramon + .word 1 ;2 Undertaker + .word 0 ;3 Yokozuna + .word 0 ;4 Shawn Michaels + .word 1 ;5 Bam Bam + .word 0 ;6 Doink + .word 0 ;7 Adam Bomb + .word 1 ;8 Lex Luger + .word 0 ;9 Referee + + +#climb_anims + .long hrt_climb_up_anim ;0 Bret Hart + .long rzr_climb_up_anim ;1 Razor Ramon + .long und_climb_up_anim ;2 Undertaker + .long yok_climb_up_anim ;3 Yokozuna + .long shn_climb_up_anim ;4 Shawn Michaels + .long bam_climb_up_anim ;5 Bam Bam + .long dnk_climb_up_anim ;6 Doink + .long dnk_climb_up_anim ;7 Adam Bomb + .long lex_climb_up_anim ;8 Lex Luger + .long dnk_climb_up_anim ;9 Referee + +#***************************************************************************** +* +* CLIMB-INS/OUTS +* + + SUBR ck_climb_out_bot + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #done + cmpi MODE_RUNNING,a14 + jreq #done + cmpi MODE_OPPOVERHEAD,a14 + jreq #done + +; calla get_opp_process +; move *a0(INRING),a0 +; jrz #done + callr any_opp_outside + jrnc #done + + ;Far enough away from posts? + move *a13(OBJ_XPOSINT),a0 + subi RING_X_CENTER,a0 + abs a0 + cmpi 10Dh,a0 + jrgt #done + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #done + + ;make sure we're at the bottom edge of the ring. + move *a13(OBJ_ZPOS),a0,L + cmpi [RING_BOT,0],a0 + jrne #done + + ;dummy check + callr idiot_check + jrc #climb + + ;button press + move *a13(BUT_VAL_CUR),a0 + move a0,a0 + jrz #done + +#climb move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbthru_bot_anims,a0 + move *a0,a0,L + calla change_anim1a + movk 2,a0 + move a0,*a13(CLIMBING_THRU) + +#done rets + + +#******** + SUBR ck_climb_in_top + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #done + cmpi MODE_DEAD,a14 + jreq #done + cmpi MODE_RUNNING,a14 + jreq #done + cmpi MODE_INAIR,a14 + jreq #done + cmpi MODE_INAIR2,a14 + jreq #done + cmpi MODE_OPPOVERHEAD,a14 + jreq #done + + move *a13(CLIMBING_THRU),a0 ;1=Climbing thru ropes flag + jrnz #done + + move *a13(OBJ_XPOSINT),a0 + subi RING_X_CENTER,a0 + abs a0 +;Far enough away from posts? + cmpi 0C0h,a0 ;48h + jrgt #done + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #done + + ;make sure we're at the top edge of the mat. + move *a13(OBJ_ZPOS),a0,L + cmpi [MAT_TOP-5,0],a0 + jrne #done + move *a13(MOVE_DIR),a0 + btst MOVE_DOWN_BIT,a0 + jrz #done + + callr idiot_check + jrc #climb + + move *a13(BUT_VAL_CUR),a0 + move a0,a0 + jrz #done + +#climb + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbin_top_anims,a0 + move *a0,a0,L + calla change_anim1a + movk 2,a0 + move a0,*a13(CLIMBING_THRU) + +#done rets + + +#******** + SUBR ck_climb_out_top + + ;roll right on through if we're a zombie. + move *a13(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #zombie + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #done + cmpi MODE_RUNNING,a14 + jreq #done + cmpi MODE_OPPOVERHEAD,a14 + jreq #done + +; calla get_opp_process +; move *a0(INRING),a0 +; jrz #done + callr any_opp_outside + jrnc #done + + ;Far enough away from posts? + move *a13(OBJ_XPOSINT),a0 + subi RING_X_CENTER,a0 + abs a0 + cmpi 0C0h,a0 + jrgt #done + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #done + + ;make sure we're at the top edge of the ring. + move *a13(OBJ_ZPOS),a0,L + cmpi [RING_TOP,0],a0 + jrne #done + + ;dummy check + callr idiot_check + jrc #climb + + ;button press + move *a13(BUT_VAL_CUR),a0 + move a0,a0 + jrz #done + +#climb move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbthru_top_anims,a0 + move *a0,a0,L + calla change_anim1a + movk 2,a0 + move a0,*a13(CLIMBING_THRU) + +#done rets + +#zombie move *a13(WRESTLERNUM),a0 + X32 a0 + addi rollthru_top_anims,a0 + move *a0,a0,L + + move *a13(ANIBASE),a14,L + cmp a0,a14 + jreq #skp ;skip if we're already doing it. + calla change_anim1a + movk 2,a0 + move a0,*a13(CLIMBING_THRU) +#skp rets + + +#******** + SUBR ck_climb_in_bot + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #done + cmpi MODE_DEAD,a14 + jreq #done + cmpi MODE_RUNNING,a14 + jreq #done + cmpi MODE_INAIR,a14 + jreq #done + cmpi MODE_INAIR2,a14 + jreq #done + cmpi MODE_OPPOVERHEAD,a14 + jreq #done + + move *a13(CLIMBING_THRU),a0 ;1=Climbing thru ropes flag + jrnz #done + + ;Far enough away from posts? + move *a13(OBJ_XPOSINT),a0 + subi RING_X_CENTER,a0 + abs a0 + cmpi 10Dh,a0 + jrgt #done + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #done + + ;make sure we're up against the bottom of the ring + move *a13(OBJ_ZPOS),a0,L + cmpi [MAT_BOT+5,0],a0 + jrne #done + + move *a13(MOVE_DIR),a0 + btst MOVE_UP_BIT,a0 + jrz #done + + ;dummy check + callr idiot_check + jrc #climb + + ;button press + move *a13(BUT_VAL_CUR),a0 + move a0,a0 + jrz #done + +#climb + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbin_bot_anims,a0 + move *a0,a0,L + calla change_anim1a + movk 2,a0 + move a0,*a13(CLIMBING_THRU) + +#done rets + +#******** + SUBR ck_climb_out_side + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #done + cmpi MODE_RUNNING,a14 + jreq #done + cmpi MODE_OPPOVERHEAD,a14 + jreq #done + +; calla get_opp_process +; move *a0(INRING),a1 +; jrz #done + callr any_opp_outside + jrnc #done + move *a0(CLIMBING_THRU),a0 + CMPI 1,A0 + JREQ #done + + ;Far enough away from posts? + move *a13(OBJ_ZPOSINT),a0 + subi RING_Z_CENTER,a0 + abs a0 + cmpi 48h,a0 + jrgt #done + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #done + + ;make sure we're up against one of the sides + calla get_rope_x + move a0,a4 + cmpi RING_X_CENTER,a0 + jrgt #rt + +#lf move *a13(STICK_VAL_CUR),a0 + btst MOVE_LEFT_BIT,a0 + jrz #done + + move a4,a0 + move *a13(OBJ_COLLX1),a1 + cmp a0,a1 + jrle #out_lf + jruc #done + +#rt move *a13(STICK_VAL_CUR),a0 + btst MOVE_RIGHT_BIT,a0 + jrz #done + + move a4,a0 + move *a13(OBJ_COLLX2),a1 + cmp a0,a1 + jrge #out_rt + jruc #done + +#out_lf movk MOVE_DOWN_LEFT,a2 + jruc #dummy + +#out_rt movk MOVE_DOWN_RIGHT,a2 + +#dummy ;dummy check + callr idiot_check + jrc #special_face + + ;button press + move *a13(BUT_VAL_CUR),a0 + move a0,a0 + jrz #done + +#face move *a13(FACING_DIR),a1 + cmp a2,a1 + jreq #climb + + move a2,*a13(NEW_FACING_DIR) + calla set_rotate_anim + calla change_anim1a + + movi #climb,a0 + move a0,*a13(CODE_ADDR),L + SETMODE WAITANIM + movk 1,a0 + move a0,*a13(CLIMBING_THRU) + rets + +#climb move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbthru_side_anims,a0 + move *a0,a0,L + calla change_anim1a + + SETMODE NORMAL + + movk 1,a0 + move a0,*a13(CLIMBING_THRU) +#done rets + +#special_face + move *a13(PLYRMODE),A1 + CMPI MODE_WAITANIM,a1 + JREQ #done + jruc #face + +#******** + SUBR ck_climb_in_side + + move *a13(PLYRMODE),a14 + cmpi MODE_ATTACHED,a14 + jreq #done + cmpi MODE_DEAD,a14 + jreq #done + cmpi MODE_OPPOVERHEAD,a14 + jreq #done + + move *a13(CLIMBING_THRU),a0 ;1=Climbing thru ropes flag + jrnz #done + +;Far enough away from posts? + move *a13(OBJ_ZPOSINT),a0 + subi RING_Z_CENTER,a0 + abs a0 + cmpi 0D8h,a0 + jrgt #done + + ;is he close enough to the ring? + move *a13(OBJ_XPOSINT),a0 + cmpi RING_X_CENTER,a0 + jrlt #on_left + + ;he's right of center + movk MOVE_LEFT_BIT,A2 + movi vln_right_matedge2,a6 + movk MOVE_DOWN_LEFT,a7 + move *a13(OBJ_COLLX1),a14 + jruc #d_set + +#on_left + ;he's left of center + movk MOVE_RIGHT_BIT,A2 + movi vln_left_matedge2,a6 + movk MOVE_DOWN_RIGHT,a7 + move *a13(OBJ_COLLX2),a14 + +#d_set + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrne no_special_check + + move *a13(GETUP_TIME),a0 + jrnz #done + + jruc running_back_in_here + +no_special_check + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #done + + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jreq #done + cmpi MODE_HEADHOLD,a0 + jreq #done + cmpi MODE_INAIR,a0 + jreq #done + cmpi MODE_INAIR2,a0 + jreq #done + +running_back_in_here + calla calc_line_x + sub a14,a0 + abs a0 + cmpi 10,a0 + jrgt #done + + move *a13(MOVE_DIR),a0 + btst A2,a0 + jrz #done + + ;idiot check + callr idiot_check + jrc #climb + + move *a13(PLYRMODE),a0 + cmpi MODE_RUNNING,a0 + jrz #climb + + ;button press + move *a13(BUT_VAL_CUR),a0 + move a0,a0 + jrz #done + +#climb ;he's within five pixels of his mat edge. face the ring + move *a13(FACING_DIR),a1 + cmp a7,a1 + jreq #jump_in + + move a7,*a13(NEW_FACING_DIR) + calla set_rotate_anim + calla change_anim1a + + movi #jump_in,a0 + move a0,*a13(CODE_ADDR),L + SETMODE WAITANIM + movk 1,a0 + move a0,*a13(CLIMBING_THRU) + rets + +#jump_in + move *a13(WRESTLERNUM),a0 + X32 a0 + addi climbin_side_anims,a0 + move *a0,a0,L + calla change_anim1a + + SETMODE NORMAL + movk 1,a0 + move a0,*a13(CLIMBING_THRU) + +#done rets + +climbthru_bot_anims + .long hrt_climbthru_bot_anim ;0 Bret Hart + .long rzr_climbthru_bot_anim ;1 Razor Ramon + .long und_climbthru_bot_anim ;2 Undertaker + .long yok_climbthru_bot_anim ;3 Yokozuna + .long shn_climbthru_bot_anim ;4 Shawn Michaels + .long bam_climbthru_bot_anim ;5 Bam Bam + .long dnk_climbthru_bot_anim ;6 Doink + .long dnk_climbthru_bot_anim ;7 Adam Bomb + .long lex_climbthru_bot_anim ;8 Lex Luger + .long dnk_climbthru_bot_anim ;9 Referee + +climbthru_top_anims + .long hrt_climbthru_top_anim ;0 Bret Hart + .long rzr_climbthru_top_anim ;1 Razor Ramon + .long und_climbthru_top_anim ;2 Undertaker + .long yok_climbthru_top_anim ;3 Yokozuna + .long shn_climbthru_top_anim ;4 Shawn Michaels + .long bam_climbthru_top_anim ;5 Bam Bam + .long dnk_climbthru_top_anim ;6 Doink + .long dnk_climbthru_top_anim ;7 Adam Bomb + .long lex_climbthru_top_anim ;8 Lex Luger + .long dnk_climbthru_top_anim ;9 Referee + +climbin_bot_anims + .long hrt_climbin_bot_anim ;0 Bret Hart + .long rzr_climbin_bot_anim ;1 Razor Ramon + .long und_climbin_bot_anim ;2 Undertaker + .long yok_climbin_bot_anim ;3 Yokozuna + .long shn_climbin_bot_anim ;4 Shawn Michaels + .long bam_climbin_bot_anim ;5 Bam Bam + .long dnk_climbin_bot_anim ;6 Doink + .long dnk_climbin_bot_anim ;7 Adam Bomb + .long lex_climbin_bot_anim ;8 Lex Luger + .long dnk_climbin_bot_anim ;9 Referee + +climbin_top_anims + .long hrt_climbin_top_anim ;0 Bret Hart + .long rzr_climbin_top_anim ;1 Razor Ramon + .long und_climbin_top_anim ;2 Undertaker + .long yok_climbin_top_anim ;3 Yokozuna + .long shn_climbin_top_anim ;4 Shawn Michaels + .long bam_climbin_top_anim ;5 Bam Bam + .long dnk_climbin_top_anim ;6 Doink + .long dnk_climbin_top_anim ;7 Adam Bomb + .long lex_climbin_top_anim ;8 Lex Luger + .long dnk_climbin_top_anim ;9 Referee + +climbthru_side_anims + .long hrt_climbthru_side_anim ;0 Bret Hart + .long rzr_climbthru_side_anim ;1 Razor Ramon + .long und_climbthru_side_anim ;2 Undertaker + .long yok_climbthru_side_anim ;3 Yokozuna + .long shn_climbthru_side_anim ;4 Shawn Michaels + .long bam_climbthru_side_anim ;5 Bam Bam + .long dnk_climbthru_side_anim ;6 Doink + .long dnk_climbthru_side_anim ;7 Adam Bomb + .long lex_climbthru_side_anim ;8 Lex Luger + .long dnk_climbthru_side_anim ;9 Referee + +climbin_side_anims + .long hrt_climbin_side_anim ;0 Bret Hart + .long rzr_climbin_side_anim ;1 Razor Ramon + .long und_climbin_side_anim ;2 Undertaker + .long yok_climbin_side_anim ;3 Yokozuna + .long shn_climbin_side_anim ;4 Shawn Michaels + .long bam_climbin_side_anim ;5 Bam Bam + .long dnk_climbin_side_anim ;6 Doink + .long dnk_climbin_side_anim ;7 Adam Bomb + .long lex_climbin_side_anim ;8 Lex Luger + .long dnk_climbin_side_anim ;9 Referee + +rollthru_top_anims + REFLONG hrt_rollthru_top_anim ;0 Bret Hart + REFLONG rzr_rollthru_top_anim ;1 Razor Ramon + REFLONG und_rollthru_top_anim ;2 Undertaker + REFLONG yok_rollthru_top_anim ;3 Yokozuna + REFLONG shn_rollthru_top_anim ;4 Shawn Michaels + REFLONG bam_rollthru_top_anim ;5 Bam Bam + REFLONG dnk_rollthru_top_anim ;6 Doink + .long 0 ;7 unused + REFLONG lex_rollthru_top_anim ;8 Lex Luger + + +#***************************************************************************** +* +* Updates CLIMB_START and CLIMB_LAST, and returns carry if it's time to +* climb. Note that we can't count on idiot_check being called only once +* per tick. As of this writing (28 Feb) it's at least two, and sometimes +* three. If CLIMB_LAST == PCNT, quit. If CLIMB_LAST == PCNT - 1, set +* CLIMB_LAST = PCNT, and compare CLIMB_LAST - CLIMB_START against +* IDIOT_COUNT. On GE, setc and return, else clrc and return. If CLIMB_LAST +* isn't PCNT or PCNT-1, set it and CLIMB_START to PCNT, clrc, and rets. +* + +#IDIOT_COUNT .equ 21 + + SUBRP idiot_check + + move *a13(CLIMB_LAST),a14 + move @PCNT,a0 + cmp a0,a14 + jreq #no + + inc a14 + cmp a0,a14 + jreq #cont + + ;new stick. + move a0,*a13(CLIMB_START) + move a0,*a13(CLIMB_LAST) +#no clrc + rets + +#cont move a0,*a13(CLIMB_LAST) + move *a13(CLIMB_START),a14 + sub a14,a0 + cmpi #IDIOT_COUNT,a0 + jrlt #no + + ;climb! + setc + rets + +;#***************************************************************************** +;* +;* a13 = wrestler process +; +; SUBR clear_damage_log +; +; move a13,a2 +; addi DAMAGE_HIST,a2 ;start of damage stucture +; +; clr a0 +; movk 20,a1 ;8 longs +;#clr_loop +; move a0,*a2+,L +; dsj a1,#clr_loop +; +; rets +; +; +;#***************************************************************************** +;* +;* a13 = wrestler process +;* a0 = damage amount (only if negative) +; +; SUBR log_damage +; +; move a0,a0 +; jrnn #not_damage +; +; PUSH a1,a2,a3 +; +; move a13,a1 +; move a13,a2 +; +; addi DAMAGE_HIST+19*32,a1 ;start at end of structure and +; addi DAMAGE_HIST+20*32,a2 ;move everything down 1 long +; +; movk 19,a3 +;#lp move -*a1,-*a2,L +; dsjs a3,#lp +; +; move a0,a1 ;damage amount +; neg a1 +; sll 16,a1 +; move @round_tickcount,a2 ;ticks since match started +; andi 0ffffh,a2 +; or a1,a2 +; move a2,*a13(DAMAGE_HIST),L +; +; PULL a1,a2,a3 +; +;#not_damage +; rets +; +; +;#***************************************************************************** +;* +;* ARGS: a13 = wrestler process +;* a0 = timespan (in ticks) +;* +;* RETURNS: a0 = damage total +;* +;* TRASHES: a1-a6,a14 +;* +; +; SUBR tally_damage +; +; move @round_tickcount,a4 ;ticks since match started +; clr a5 ;damage tally +; +; move a13,a1 +; addi DAMAGE_HIST,a1 ;start of damage stucture +; +; movk 20,a6 +;#loop +; move *a1+,a2 ;tick count +; jrz #exit ;can't have a 0 tick count +; move *a1+,a3 ;damage +; +; move a4,a14 +; sub a2,a14 +; cmp a0,a14 ;> timespan? +; jrgt #exit +; +; add a3,a5 +; dsj a6,#loop +; +;#exit +; move a5,a0 +; rets +; +#***************************************************************************** +* +* a10 = player number (0 to NUM_WRES-1) + +GETUP_SIZE equ 80 ;102 ;174 ;99 +MAX_TIME equ 6*TSEC +INV_MULT equ 256*GETUP_SIZE/MAX_TIME +ONSCR_X equ 173 +OFFSCR_X equ 221 + + STRUCTPD + LONG IPTR_FRAME + LONG IPTR_GREEN + WORD DISPLAY_VAL + + SUBR getup_meter + + ;HACK ALERT: In royal rumble mode, player 1 is on PLAYER 0's TEAM, + ; so this code is gonna want to put his getup meter on the left. + ; To get it over on the right where it belongs, we temporarily put + ; him on the other team. This shouldn't break anything. + + move @royal_rumble,a14 + jrz #norum + cmpi 1,a10 ;(plyrnum) + jrne #norum + movk 1,a9 ;act like plyr 1 is on team 1. +#norum + + move a10,a11 ;a11 is PLYRNUM + move a10,a1 + calla get_process_ptr + move a0,a10 ;a10 is our wrestler process + + SLEEPK 2 + + ;first off, figure out if this guy is even allowed to have a getup + ; meter. Humans always get them. A drone teammate of a human + ; doesn't get one. Otherwise, drones only get them if the GETUP + ; powerup is set and they're the only drone on their team. + + move *a10(PLYR_TYPE),a14 + cmpi PTYPE_PLAYER,a14 + jreq #yes ;humans get getup meters + + movk NUM_WRES,a0 + movi process_ptrs,a1 + move *a10(PLYR_SIDE),a2 ;we'll need that later anyway. +#lp0 move *a1+,a3,L + jrz #nxt0 ;skip inactive + cmp a3,a10 + jreq #nxt0 ;skip self + move *a3(PLYR_SIDE),a14 + cmp a14,a2 + jrne #nxt0 ;skip other team + move *a3(PLYR_TYPE),a14 + cmpi PTYPE_PLAYER,a14 + jreq #die ;we have a human teammate so we don't get one + jruc #nxt0 + +#die clr a14 + move a14,*a10(METER_PROC),L + DIE ;multi-drone team--no meters + +#nxt0 dsjs a0,#lp0 + + ;we got through the loop and found no teammates, so we're a lone + ; drone and we get a meter only if GETUP_POWER is set. +; move @GETUP_POWER,a14 + move @drone_meters_on,a14 + jrz #die ;no GETUP_POWER--no meter + + move @NUM_OPPS,a1 + cmpi 2,a1 + jrge #die + + +#yes clr a0 + move a0,*a13(DISPLAY_VAL) + + ;set our x-position based on PLYR_SIDE + movi [OFFSCR_X,0],a10 + move a9,a9 + jrnz #p2 + + dec a10 + neg a10 +#p2 + + movi RECVRBLK,a2 ;* image (green bar) + movi [109,0],a1 ;y pos + movi 1801h,a3 ;z pos + callr #begin_obj + move a8,*a13(IPTR_GREEN),L + movi RECVR_R,a2 ;* image (frame) + move a9,a9 + jrnz #p2_meter + movi RECVR_L,a2 ;* image (frame) +#p2_meter + movi [189,0],a1 ;y pos + movi 1800h,a3 ;z pos + callr #begin_obj + move a8,*a13(IPTR_FRAME),L + + move a11,a1 + calla get_process_ptr + move a0,a10 + + move a13,*a10(METER_PROC),L + + SUBR slide_offscr + +;Don't allow a meter to come out for awhile (unless flung) + movi 18*60,a0 ;13 + move a0,*a10(DELAY_METER) + + movk 10,a11 +#offscr_loop + move a11,a11 + jrz #update + dec a11 + jruc #cont +#update + movi [OFFSCR_X,0],a0 + callr #set_x + + move *a10(WHOHITME),A0,L + move *a0(COMBO_COUNT),A14 + jrnz #cont + move *a10(DELAY_METER),a14 + jrnz #cont + move *a10(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrz #cont +;If health meter is down low, don't have getup meter come out. +;Unless it was a fling! + move *a10(PLYRNUM),a1 + .ref get_health + calla get_health + cmpi 20,a0 + jrgt #norm + move *a10(GETUP_TIME),a14 + cmpi FLUNG_TIME,a14 + jrz #onscr + +#norm + move *a10(GETUP_TIME),a14 + jrnz #onscr + +#cont + SLEEPK 1 + jruc #offscr_loop + + +#onscr + move a14,a11 + + movi GETUP_SIZE,a0 + move a0,*a13(DISPLAY_VAL) + + MOVI 0BDH,A0 ;Meter announce sound + CALLA triple_sound + + movi 120,a6 + move *a10(GETUP_TIME),a5 + +#onscr_loop + + movi [ONSCR_X,0],a0 + callr #set_x + + move *a10(GETUP_TIME),a7 + + ;if a7 (current getup) is greater than a11 (starting getup), our + ; scale will be messed up. In this case, just move a7 into a11. + cmp a11,a7 + jrle #rescale + move a7,a11 + +#rescale + movi GETUP_SIZE,a0 + mpyu a0,a7 ;* GETUP_SIZE + divu a11,a7 ;/ INITIAL GETUP TIME + + move *a13(DISPLAY_VAL),a0 + cmp a0,a7 ;has getup been incremented? + jrle #ok1 + + move a7,a11 + movi GETUP_SIZE,a0 + mpyu a0,a7 ;* GETUP_SIZE + divu a11,a7 ;/ INITIAL GETUP TIME +#ok1 + .ref dufus_msg_on + + subk 1,a6 + jrnz #dont_bother + move *a10(GETUP_TIME),a0 + sub a0,a5 + cmpi 175,a5 + jrgt #dont_bother + PUSH a2,a7,a9 + movk 2,a9 + CREATE 4000h|AWARD_PID,dufus_msg_on + PULL a2,a7,a9 +#dont_bother + + PUSH a5,a6 + callr #update_meter + PULL a5,a6 + + move a7,a7 + jrz slide_offscr + + move *a10(PLYRMODE),a0 + cmpi MODE_DEAD,a0 + jrz slide_offscr + + PUSHP a5,a6 + SLEEPK 1 + PULLP a5,a6 + jruc #onscr_loop + + +********** + SUBRP #set_x + + move a9,a9 + jrnz #p22 + neg a0 +#p22 + addi [200-1,0],a0 ;center of screen + move a13,a14 + addi IPTR_FRAME,a14 + move *a14,a8,L + move *a8(OXVAL),a1,L + sub a1,a0 + sra 2,a0 + movk 3-1,a1 +#lp move *a14+,a8,L + move *a8(OXVAL),a2,L + add a0,a2 + move a2,*a8(OXVAL),L + dsj a1,#lp + rets + + +********** + SUBRP #begin_obj + + movi [200-1,0],a0 ;x pos + add a10,a0 + + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + clr a5 ;object ID + clr a6 ;x vel + clr a7 ;y vel + calla BEGINOBJ + rets + + +********** + SUBRP #update_meter + + move *a13(DISPLAY_VAL),a0 + add a0,a7 + srl 1,a7 + move a7,*a13(DISPLAY_VAL) + move a7,a1 + + neg a1 + addi GETUP_SIZE,a1 + jrp #ok + clr a1 +#ok movi GETUP_SIZE,a0 + cmp a0,a1 ;meter can't be taller + jrle #ok2 ;than GETUP_SIZE pixels + move a0,a1 +#ok2 move *a13(IPTR_GREEN),a8,L + + MOVI GETUP_SIZE,A2 + SUB A1,A2 + MOVE A2,*A8(OSIZEY) + MOVI RECVRBLK,A0 + MOVE *A0(ICTRL),A5 + SRL 12,A5 + MOVE A1,A3 + MPYU A5,A3 + MOVE *A0(ISIZEX),A5 + MPYU A5,A3 + MOVE *A0(ISAG),A0,L + ADD A3,A0 + MOVE A0,*A8(OSAG),L + + rets + +#***************************************************************************** +* +* makes your getup meter go away if you've got one out. + + SUBR ditch_getup_meter_a9 + PUSH a13 + move a9,a13 + callr ditch_getup_meter + PULL a13 + rets + + SUBR ditch_getup_meter + + move *a13(GETUP_TIME),a0 + jrz #cont + move *a13(PLYR_DIZZY),a0 + jrnz #cont + +;This guy has a getup meter on screen and is running out of control! +;Cause getup meter to slide off screen. + + move *a13(METER_PROC),a0,L + jrz #cont ;skip if we don't have a meter. + PUSH a8,a9,a10 + move *a0(PA8),a8,L + move *a0(PA9),a9,L + move *a0(PA10),a10,L + movi GETUP_PID,a1 + movi slide_offscr,a7 + calla XFERPROC + PULL a8,a9,a10 + +#cont rets + +#***************************************************************************** +* +* a0 = # ticks to add +* a13 = * wrestler process + + SUBR inc_getup_time + + PUSH a14 + move *a13(GETUP_TIME),a14 + cmpi 20,a14 + jrlt #exit + add a0,a14 + move a14,*a13(GETUP_TIME) +#exit + PULL a14 + rets + +#***************************************************************************** +* +* do rolls for any wrestler +* +* args : a13 = * wrestler process +* +* returns : Z=1 if didn't roll + + SUBR do_roll + + move *a13(OBJ_ZPOSINT),a0 + move *a13(Z_BOUND),a14 + jrz #reg + + sub a0,a14 + abs a14 ;<-new! + cmpi 6,a14 + jrle #no_roll +#reg + move *a13(STICK_VAL_CUR),a0 + andi MOVE_UP|MOVE_DOWN,a0 + jrz #no_roll + + move *a13(WRESTLERNUM),a14 + X32 a14 + addi #roll_table,a14 + move *a14,a14,L + + move *a14+,a1 ;roll speed + move *a14+,a2,L ;z velocity + + btst MOVE_DOWN_BIT,a0 + jrnz #down + neg a1 ;must be up + neg a2 +#down + move a2,*a13(OBJ_ZVEL),L + + move *a13(ROLL_POS),a0 + add a0,a1 + andi 0ffh,a1 + move a1,*a13(ROLL_POS) + move *a14+,a0,L ;inv multiplier + mpyu a0,a1 + srl 16,a1 ;/65536 + X32 a1 + add a1,a14 + move *a14,a0,L + .if DEBUG + jrnz #ok + LOCKUP +#ok + .endif + + move *a0,a0,L + .if DEBUG + jrnz #ok2 + LOCKUP +#ok2 + .endif + + move a0,*a13(CUR_FRAME),L + rets + + +#no_roll + clr a0 + move a0,*a13(OBJ_ZVEL),L + rets + + +#roll_table + REFLONG hrt_roll_frames ;0 Bret Hart + REFLONG rzr_roll_frames ;1 Razor Ramon + REFLONG und_roll_frames ;2 Undertaker + REFLONG yok_roll_frames ;3 Yokozuna + REFLONG shn_roll_frames ;4 Shawn Michaels + REFLONG bam_roll_frames ;5 Bam Bam + REFLONG dnk_roll_frames ;6 Doink + .long 0 ;7 unused + REFLONG lex_roll_frames ;8 Lex Luger + + +; +;#***************************************************************************** +; +; SUBR check_dizzy +; +; movi 4*TSEC,a0 +; calla tally_damage +; +;;Is this the right way to causes dizzies? +;;If one move is super powerful, we will tend to get dizzies when we don't want +;;them. Maybe it should be based on hits over time, not damage. +; +;;A combination of the two is needed here! 10/5/94 +; +;;We need less resolution on the damage that is recorded! +;;Perhaps 1-3? +; +;;We should allow this to happen only once per round! +; +; cmpi 65,a0 +; +; jrlt #no_dizzy +; +; jruc #no_dizzy +; +; +; calla clear_damage_log +; +;;Don't allow dizzies if your health meter is real low! +;;Killer Instinct sucks.... +; move *a13(PLYRNUM),a1 +; .ref get_health +; calla get_health +; cmpi 30,a0 +; jrlt #no_dizzy +; +;;Too many dizzies this round? +; move *a13(PLYR_DIZZY_CNT),a0 +; cmpi 1,a0 ;Max dizzies per round +; jrge #no_dizzy +; +; inc a0 +; move a0,*a13(PLYR_DIZZY_CNT) +; +; +; movk 1,a0 ;return TRUE +; move a0,*a13(PLYR_DIZZY) +; rets +; +;#no_dizzy +; clr a0 ;return FALSE +; rets + +#***************************************************************************** + + SUBR form_button_value + + ;Combine the val_cur of the block bit with the val_down of the rest. + + move *a13(BUT_VAL_CUR),a0 + andi PLAYER_BLOCK_VAL,a0 + move a0,a1 + move *a13(BUT_VAL_DOWN),a0 + or a1,a0 + rets + +; +;#***************************************************************************** +; +; SUBR start_whack +; +;;a10=plyr proc +;;Turn on whack button graphic, animate it for a bit +; +;frame_z .equ 202 +; +; movk 1,a0 +; move a0,*a10(WHACK_CNT) +; +; movi [0f6h,0],a1 +; movi [44h,0],a0 +; move *a10(PLYRNUM),a2 +; jrz #ok +; movi [401-44h,0],a0 +;#ok +; movi WHAK0001,a2 +; movi frame_z+2,a3 ;Z +; movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags +; movi OVRHED_PID,a5 +; clr a6 +; clr a7 +; calla BEGINOBJ +; move a8,a11 +; +; movi [0f6h,0],a1 +; movi [44h,0],a0 +; move *a10(PLYRNUM),a2 +; jrz #ok2 +; movi [401-44h,0],a0 +;#ok2 +; movi WKBUTT01,a2 +; movi frame_z+3,a3 ;Z +; movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags +; movi OVRHED_PID,a5 +; clr a6 +; clr a7 +; calla BEGINOBJ +; +;#start +; movi butn_l,a9 +; +;#lp move *a10(GETUP_TIME),a0 +; jrz #die +; +; move *a9+,a0,L +; jrz #start +; move *a8(OCTRL),a1 +; calla obj_aniq +;#noani +; SLEEPK 3 +; jruc #lp ;Going up? +; +;#die +; SLEEPK 10 +; +; move a11,a0 +; calla DELOBJ +; jauc DELOBJDIE +; +; +;butn_l +; .long WKBUTT01 +; .long WKBUTT02 +; .long WKBUTT03 +; .long WKBUTT02 +; ; .long 0 +#***************************************************************************** +* +* Gets the animation point of a multipart object. Find the highest x and y +* offset values among all the pieces. +* +* >a0 = object table pointer +* a0 = object table pointer +* 0E0E0000,a1 + movi [1,400],a2 + move @dma_bog,a3 + sll 16,a3 + clr a4 + movi DMACAL,a5 + calla QDMAN + rets + +#***************************************************************************** + + SUBR draw_cpu_meter + + movi DIAGP,a0 + calla pal_getf + move a0,a1 + ori >0D0D0000,a1 + movi [1,400],a2 + move @CPUAVG,a3 + sll 14,a3 + clr a4 + movi DMACAL,a5 + calla QDMAN + rets + + .endif + +#***************************************************************************** + + SUBR COLRPRC + movi COLRPID,a0 + calla KIL1C ;KILL ALL COLOR UPDATE PROCESSES + clr a0 + move a0,@PALFRAM,L +; movi scorep,a0 ;Score area palette + jauc pal_getf + + +#***************************************************************************** +* +* call this at the top of any anim sequence that requires that you be +* attached before you get there, like any of the pile-drivers, vertical +* suplexes, and so forth. This checks for a good link, and bitches up +* a storm if it doesn't find one. + + SUBR link_check + + .if DEBUG + move *a13(ATTACH_PROC),a14,L + jrnz #ok1 + + LOCKUP ;I'm not attached! + nop + +#ok1 move *a14(ATTACH_PROC),a14,L + jrnz #ok2 + LOCKUP ;I'm attached, but he's not attached to me! + nop + +#ok2 cmp a14,a13 + jreq #ok3 + LOCKUP ;We're both attached, but not to each other! + nop + + .endif +#ok3 rets + +#***************************************************************************** +* +* clears CLIMBING_THRU flag and sets SAFE_TIME to 1, which won't do you +* any good unless you're holding block. Call this at the end of any +* rope climb-through anim. + + SUBR clr_climb + + clr a0 + move a0,*a13(CLIMBING_THRU) ;1=Climbing thru ropes flag + + inc a0 + move a0,*a13(SAFE_TIME) + + rets + + +#***************************************************************************** +* +* returns carry set if one of a13's teammates has done a pin this round. +* +* trashes scratch + + SUBR ck_teammate_pin + + PUSH a2,a3 + + movk NUM_WRES,a0 + movi process_ptrs,a1 + move *a13(PLYR_SIDE),a2 + +#lp move *a1+,a3,L + jrz #nxt ;skip inactive + + cmp a3,a13 + jreq #nxt ;skip self + + move *a3(PLYR_SIDE),a14 + cmp a14,a2 + jrne #nxt ;skip enemies + + move *a3(STATUS_FLAGS),a14 + btst B_DID_PIN,a14 + jrz #nxt ;skip guys who didn't pin + + ;got a pinning teammate + PULL a2,a3 + setc + rets + +#nxt dsj a0,#lp + + ;no pinning teammates + PULL a2,a3 + clrc + rets + +#***************************************************************************** +* +* rummage through process_ptrs and decide which pal this wrestler should +* get. return pal ptr in b0 +* +* trashes a0,a1,a2,a3, and a14. + + SUBR choose_pal + + ;assign pals in PLYRNUM order. There's four in the table for + ; each wrestler. + + .if 1 + ; First check to see if there are 2 human players and they are + ; playing the same wrestler + move @PSTATUS,a14 ; Get status + cmpi 3,a14 ; Do we have 2 humans playing ? + jrnz #pp_go ; br = no + + ;if buddy mode, choose special pals + move @buddy_mode_on,a14 + jrnz #buddy_mode + + clr a2 + clr a14 + neg a14 + movi process_ptrs,a0 +#f_loop + move *a0+,a3,L + jrz #f_done + move *a3(PLYRNUM),a4 + jrnz #not_p1 + move *a3(WRESTLERNUM),a2 +#not_p1 + cmpi 1,a4 + jrnz #not_p2 + move *a3(WRESTLERNUM),a14 +#not_p2 + jruc #f_loop +#f_done + move a14,a14 ; Does player 2 exist ? + jrn #pp_go ; br = no + cmp a2,a14 ; Are player 1 and 2 same wrestler ? + jrnz #pp_go ; br = no (no need to adjust pals) + move @player_pal_pref,a0 ; Get player 1 palette preference + cmpi 7,a0 ; Is it last palette ? + jrnz #set_pal ; br = no + movk 2,a0 ; force a palette above what'll be used by drones +#set_pal + move a0,@player_pal_pref+10h ; Set player 2 palette +#pp_go + .endif + + ;count identical wrestlers with lower PLYRNUMs. + movi process_ptrs,a0 + clr a4 ; match count + move *a13(PLYRNUM),a2 ; Get player number + cmpi 2,a2 ; Are we human ? + jrge #not_player ; br = no + X16 a2 ; Get playre palette preference + addi player_pal_pref,a2 + move *a2,a4 ; Init the counter to preference +#not_player + move *a13(WRESTLERNUM),a1 + + ;loop from 0 to our PLYRNUM looking for matches, UNLESS we're a + ; drone doink, in which case we just check 0 and 1. + move *a13(PLYRNUM),a2 + jrz #end0 + cmpi 2,a2 ;first drone is okay too. + jrle #lp0 + cmpi W_DOINK,a1 + jrne #lp0 + movk 2,a2 +#lp0 move *a0+,a3,L + jrz #nxt0 ;skip inactive + move *a3(WRESTLERNUM),a14 + cmp a1,a14 + jrne #nxt0 + inc a4 ;got a match--inc count +#nxt0 dsj a2,#lp0 +#end0 andi 7,a4 + X32 a4 + X256 a1 + add a1,a4 + addi #wrestler_pal_table,a4 + move *a4,a14,L + move a14,b0 + rets + +#buddy_mode + move *a13(WRESTLERNUM),a0 + X64 a0 + move *a13(PLYR_SIDE),a14 + X32 a14 + add a14,a0 + addi #buddy_mode_pals,a0 + move *a0,a14,L + move a14,b0 + rets + +#wrestler_pal_table + ; pnch ppnch kick pkick + REFLONG HRTPNK_P,HRTBLU_P,HRTORG_P,HRTYEL_P,HRTRED_P,HRTGRN_P,HRTPRP_P,HRTGRY_P ;(Bret) + REFLONG RZRGRN_P,RZRPRP_P,RZRYEL_P,RZRORG_P,RZRPNK_P,RZRBLU_P,RZRRED_P,RZRGRY_P ;(Razor) + REFLONG UNDPRP_P,UNDBLK_P,UNDGRN_P,UNDORG_P,UNDPNK_P,UNDBLU_P,UNDYEL_P,UNDRED_P ;(Taker) + REFLONG YOKRED_P,YOKPRP_P,YOKYEL_P,YOKORG_P,YOKPNK_P,YOKBLU_P,YOKGRN_P,YOKGRY_P ;(Yoko) + REFLONG SHNRED_P,SHNPRP_P,SHNORG_P,SHNGRN_P,SHNPNK_P,SHNBLU_P,SHNYEL_P,SHNGRY_P ;(Shawn) + REFLONG BAMBLU_P,BAMYLW_P,BAMPRP_P,BAMORG_P,BAMPNK_P,BAMRED_P,BAMGRN_P,BAMGRY_P ;(Bam Bam) + REFLONG DNKBLU_P,DNKPRP_P,DNKORG_P,DNKRED_P,DNKPNK_P,DNKGRN_P,DNKYEL_P,DNKGRY_P ;(Doink) + .long 0,0,0,0,0,0,0,0 + REFLONG LEXWHT_P,LEXPRP_P,LEXRED_P,LEXYEL_P,LEXGRN_P,LEXPNK_P,LEXORG_P,LEXGRY_P ;(Lex) + +#buddy_mode_pals + .long HRTBLU_P,HRTRED_P + .long RZRBLU_P,RZRRED_P + .long UNDBLU_P,UNDRED_P + .long YOKBLU_P,YOKRED_P + .long SHNBLU_P,SHNRED_P + .long BAMBLU_P,BAMRED_P + .long DNKBLU_P,DNKRED_P + .long 0,0 + .long LEXPRP_P,LEXRED_P + +#***************************************************************************** +* Sets PLYR_TYPE to PTYPE_PLAYER if PLYRNUM < 2. +* +* >a13 = process * + + SUBR drone_change_back + + move *a13(PLYRNUM),a14 + cmpi 2,a14 + jrge #done ;don't check real drones + + ;don't bother checking if they're a drone or not. In either case, + ; turning them human again won't hurt. + movi PTYPE_PLAYER,a14 + move a14,*a13(PLYR_TYPE) +#done rets + + +#***************************************************************************** +* (called by animation system) +* + + SUBR start_run_flung + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETFACING ;so the offset works properly + WL ANI_CODE,#x_flip + .word ANI_OFFSET,20,0,0 + WL ANI_CODE,#ok2 + .word ANI_GETUP,FLUNG_TIME ;Flung time + .word ANI_END + + SUBR start_run_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP +;Is this a good idea? + .word ANI_DETACH + WL ANI_CODE,#setup_run + .word ANI_END + +#setup_run +; move a13,a0 +; calla wres_get_stick_val_cur + PUSH a1 +; movk 4,a1 + movk 1,a1 + calla dufus_msg_off + PULL a1 + move *a13(STICK_VAL_CUR),a0 + andi MOVE_LEFT+MOVE_RIGHT,a0 + jrnz #use_joy1 + + move *a13(FACING_DIR),a0 ;use facing + andi MOVE_LEFT+MOVE_RIGHT,a0 +#use_joy1 + move *a13(FACING_DIR),a1 + andi MOVE_LEFT+MOVE_RIGHT,a1 + cmp a0,a1 + jrz #ok1 + +;He wants to run in the opposite direction than he is facing +;Rotate him around first. + + move *a13(FACING_DIR),a1 + andi MOVE_UP+MOVE_DOWN,a1 + or a1,a0 + move a0,*a13(NEW_FACING_DIR) + move a0,*a13(FACING_DIR) + +; callr set_rotate_anim +; move a13,a2 ;a2 = * process +; calla change_anim_anim + +#ok1 +; movi #dorun,a0 ;this routine gets executed + jruc #dorun + jruc #contx +#ok2 +;Whenever you fling someone, a meter can & will appear + clr a0 + move a0,*a13(DELAY_METER) + movi #dorun_flung,a0 ;this routine gets executed +#contx + move a0,*a13(CODE_ADDR),L ;when the rotate anim + SETMODE WAITANIM ;finishes + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + clr a0 + move a0,*a13(OBJ_ZVEL),L + + rets + +#x_flip + move *a13(FACING_DIR),a14 + xori >0C,a14 + move a14,*a13(FACING_DIR) + rets + +#dorun + clr a0 + move a0,*a13(GETUP_TIME) ;in control + +#dorun_flung + clr a0 + move a0,*a13(USR_VAR1) ;with x-xel + move a0,*a13(RUN_TIME) + + +;Bogosity.. + move *a13(FACING_DIR),a0 ;use facing +;; move *a13(NEW_FACING_DIR),a0 ;use facing + +; move *a13(WHOHITME),a14,L +; move *a14(FACING_DIR),a0 +; andi MOVE_LEFT+MOVE_RIGHT,a0 +; xori 0ch,a0 + +#ok + 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 + + move *a13(WRESTLERNUM),a0 + X32 a0 + addi #run_anims,a0 + move *a0,a0,L ;run anim + calla change_anim1a + + SETMODE RUNNING + + movk 1,a0 + move a0,*a13(DELAY_BUTNS) + + rets + + .ref bam_run_anim + .ref dnk_run_anim + .ref hrt_run_anim + .ref lex_run_anim + .ref rzr_run_anim + .ref shn_run_anim + .ref und_run_anim + .ref yok_run_anim + +#run_anims + .long hrt_run_anim ;0 Bret Hart + .long rzr_run_anim ;1 Razor Ramon + .long und_run_anim ;2 Undertaker + .long yok_run_anim ;3 Yokozuna + .long shn_run_anim ;4 Shawn Michaels + .long bam_run_anim ;5 Bam Bam + .long dnk_run_anim ;6 Doink + .long dnk_run_anim ;7 spare + .long lex_run_anim ;8 Lex Luger + .long dnk_run_anim ;9 Referee + + +#***************************************************************************** + + SUBR flash_white + + movi [1111h,0000h],a1 ;[color,pal] + movi [256,400],a2 ;[Ysz,Xsz] + clr a3 ;[Ypos,Xpos] + clr a4 ;SAG + movi DMACAL,a5 ;[offset,ctrl] + calla QDMAN + rets + + SUBR flash_red + + movi [1b1bh,0000h],a1 ;[color,pal] + movi [256,400],a2 ;[Ysz,Xsz] + clr a3 ;[Ypos,Xpos] + clr a4 ;SAG + movi DMACAL,a5 ;[offset,ctrl] + calla QDMAN + rets + +#***************************************************************************** +* +* return carry set if wrestler a0 has any living teammates. (excluding self) +* +* trashes scratch + + SUBR ck_live_teammates + + PUSH a2,a3,a4 + + move *a0(PLYR_SIDE),a1 + movi process_ptrs,a2 + movk NUM_WRES,a3 +#lp move *a2+,a4,L + jrz #nxt ;skip inactive + cmp a4,a0 + jreq #nxt ;skip self + move *a4(PLYR_SIDE),a14 + cmp a14,a1 + jrne #nxt ;skip other team + move *a4(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #nxt ;skip dead + + ;found live teammate. + PULL a2,a3,a4 + setc + rets + +#nxt dsj a3,#lp + PULL a2,a3,a4 + clrc + rets + + + +#***************************************************************************** +* +* return carry set if wrestler a0 has any teammates, living or dead. +* +* trashes scratch + + SUBR ck_any_teammates + + PUSH a2,a3,a4 + + move *a0(PLYR_SIDE),a1 + movi process_ptrs,a2 + movk NUM_WRES,a3 +#lp move *a2+,a4,L + jrz #nxt ;skip inactive + cmp a4,a0 + jreq #nxt ;skip self + move *a4(PLYR_SIDE),a14 + cmp a14,a1 + jrne #nxt ;skip other team + + ;found a teammate. + PULL a2,a3,a4 + setc + rets + +#nxt dsj a3,#lp + PULL a2,a3,a4 + clrc + rets + + + +#***************************************************************************** +* +* set smart_attack bit and set smart_target to *a13(WHOIHIT). +* + + SUBR target_whoihit + + move *a13(STATUS_FLAGS),a14 + ori M_SMART_ATTACK,a14 + move a14,*a13(STATUS_FLAGS) + + move *a13(WHOIHIT),*a13(SMART_TARGET),L + rets + +#***************************************************************************** +* +* If all of a13's opponents are dead and !zombie, and a13 is either outside +* or all his opponents are outside, setc and rets. else clrc and rets. + + SUBR raisearm_check + + ;if a13 is human and this is a royal rumble, make sure @FINAL_PTR is + ;FFh. If it isn't, don't raise arm. + move @royal_rumble,a14 + jrz #hack_done + move *a13(PLYR_TYPE),a14 + jrnz #hack_done ;PLAYER=0 + move @FINAL_PTR,a14,L + move *a14,a14 + jrn #hack_done + jruc #clrc ;no good +#hack_done + + move *a13(PLYR_SIDE),a0 + + movk NUM_WRES,a1 + movi process_ptrs,a2 + clr a4 ;'is any opponent inside' flag. + +#lp move *a2+,a3,L + jrz #nxt ;skip inactive + + move *a3(PLYR_SIDE),a14 + cmp a14,a0 + jreq #nxt ;skip a13 and teammates + + move *a3(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrne #clrc ;opp dead? + + move *a3(STATUS_FLAGS),a14,L + btst B_ZOMBIE,a14 + jrnz #clrc ;zombie? + + move *a3(INRING),a3 + jrnz #nxt + + ;dead !zombie bad guy is inside. set a4 + inc a4 +#nxt dsj a1,#lp + + ;okay, all our opponents are dead and staying that way. now check + ; the inside/outside stuff. + move *a13(INRING),a14 + jrnz #setc ;am I outside? + + TEST a4 + jrnz #clrc ;is any opponent inside? + +#setc setc + rets + +#clrc clrc + rets + +#***************************************************************************** +* +* Set WHOIHIT to closest opponent. Call this after you do a LEAPAT in your +* pin. Since pins don't actually attack, we need to do this so that WHOIHIT +* is correct when we call grnd_hit. We can't use CLOSEST in grnd_hit, since +* it's possible to land closer to someone else than the guy you meant to pin. +* ONLY USE THIS IN PINS!!!!!!!!!!!!!! Cuz it also sets the PINNED bit. +* + + SUBR hit_nearest + + ;set WHOIHIT and victim WHOPINNEDME + move *a13(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move a0,*a13(WHOIHIT),L + move a13,*a0(WHOPINNEDME),L + + ;set victim's PINNED bit. + move *a0(STATUS_FLAGS),a14 + ori M_PINNED,a14 + move a14,*a0(STATUS_FLAGS) + + rets + +#***************************************************************************** +* +* Change into another wrestler and re-enter the battle. This should probably +* only be used in the king of the ring match. +* +* >a13 = pointer to process to change +* + + SUBR change_wrestler + +**** ;change wrestlernum + move *a13(NEW_WRESTLERNUM),*a13(WRESTLERNUM) + +**** ;make the new special move processes + callr init_smoves + +**** ;change palette + calla choose_pal + move b0,a0 + calla pal_getf + + move a0,*a13(OBJ_PAL) + move a0,*a13(MY_PAL) + movk MAX_PIECES-1,a9 + move *a13(OBJ_BASE),a1,L + addk 20h,a1 ;skip shadow +#nxt move *a1+,a8,L + move a0,*a8(OPAL) + dsj a9,#nxt + +**** ;re-initialize animation + movi MODE_NORMAL,a14 + move a14,*a13(PLYRMODE) + move *a13(WRESTLERNUM),a9 + X64 a9 + addi #init_anims,a9 + move *a9+,a0,L + calla change_anim1a + move *a9,a0,L + calla change_anim2a + +**** ;reset STATUS_FLAGS + clr a14 + move a14,*a13(STATUS_FLAGS),L + +**** ;reset life and combo data + calla init_wres_life_data + +**** ;clear I_WILL_DIE + clr a14 + move a14,*a13(I_WILL_DIE) + +**** ;set new position + movi #init_positions,a0 +#lp1 move *a0(#NXT),a14,W + jrn #usea0 ;if last entry, use by default. + + ;use current entry if: + ; X <= WORLDTLX-30 or + ; X >= WORLDTLX+400+30 + + move *a0(#XPOS),a1 + move @WORLDTLX,a14,L + sra 16,a14 + subk 30,a14 + cmp a14,a1 + jrle #usea0 + addi 460,a14 + cmp a14,a1 + jrge #usea0 + + +#nxt1 addi #SIZE,a0 + jruc #lp1 + +#usea0 move *a0(#XPOS),*a13(OBJ_XPOSINT) + move *a0(#ZPOS),*a13(OBJ_ZPOSINT) + move *a0(#YPOS),*a13(OBJ_YPOSINT) + move *a0(#YPOS),*a13(GROUND_Y) + move *a0(#INRING),*a13(INRING) + +**** ;clear old velocities + clr a14 + move a14,*a13(OBJ_XVEL),L + move a14,*a13(OBJ_YVEL),L + move a14,*a13(OBJ_ZVEL),L + + rets + + +#init_anims + REFLONG hrt_stand4_anim,hrt_torso4_anim + REFLONG rzr_stand4_anim,rzr_torso4_anim + REFLONG und_stand4_anim,und_torso4_anim + REFLONG yok_stand4_anim,yok_torso4_anim + REFLONG shn_stand4_anim,shn_torso4_anim + REFLONG bam_stand4_anim,bam_torso4_anim + REFLONG dnk_stand4_anim,dnk_torso4_anim + .long 0,0 + REFLONG lex_stand4_anim,lex_torso4_anim + + + ;possible starting positions. hunt until you find one that's + ; offscreen, then use it. If none of them are offscreen (should + ; never happen,) use the last entry in the table. + + STRUCT 0 + WORD #XPOS + WORD #ZPOS + WORD #YPOS + WORD #INRING + LABEL #SIZE + WORD #NXT ;first element of NEXT entry. check for -1. + + ;XPOSINT, ZPOSINT, YPOSINT/GROUND_Y, INRING +#init_positions + .word RING_X_CENTER,RING_Z_CENTER,MAT_Y,0 ;center + .word RING_TOP_LEFT,RING_Z_CENTER,MAT_Y,0 ;center left + .word RING_TOP_RIGHT,RING_Z_CENTER,MAT_Y,0 ;center right + .word RING_BOT_LEFT,RING_BOT,MAT_Y,0 ;bottom left + .word RING_BOT_RIGHT,RING_BOT,MAT_Y,0 ;bottom right + .word 024Fh,060Eh,0,1 ;outside left + .word 060Eh,04ABh,0,1 ;outside right + .word -1 + +#***************************************************************************** +* +* Kill all my special move processes. +* + + SUBR kill_smove_procs + + PUSH a2,a3 + + ;loop through the processes. Anything with a PID of SMOVE_PID, and + ; a PA8 that matches our a13 must go. + move @ACTIVE,a3,L +#lp0 move a3,a2 ;a2 = p->this + jrz #done0 + move *a2,a3,L ;a3 = p->next + move *a2(PROCID),a14 + cmpi SMOVE_PID,a14 + jrne #lp0 + move *a2(PA8),a14,L + cmp a14,a13 + jrne #lp0 + + ;match. kill this one + move a2,a0 + calla KILL + jruc #lp0 + +#done0 PULL a2,a3 + rets + +#***************************************************************************** +* +* Check to make sure your opponent is at rest and staying that way. Check +* to see if he's in the xxx_dead_anim. And make sure he's in range. +* Oh, and make sure there aren't any zombies either. +* + + SUBR can_pin + + ;no pin if there are any zombies or live wrestler on other team + movi process_ptrs,a0 + movk NUM_WRES,a1 + move *a13(PLYR_SIDE),a3 +#lp0 move *a0+,a2,L + jrz #nxt0 ;skip inactive + move *a2(PLYR_SIDE),a14 + cmp a14,a3 + jreq #nxt0 ;skip teammates + move *a2(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrne #clrc + move *a2(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #clrc +#nxt0 dsjs a1,#lp0 + + ;check range + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #clrc + move *a13(CLOSEST_ZDIST),a0 + cmpi 50h,a0 + jrgt #clrc + + calla get_opp_process + + move *a0(STATUS_FLAGS),a14 + btst B_PINABLE,a14 + jrz #clrc + +#setc ;just to be safe, set the PINNED bit on the guy + move *a0(STATUS_FLAGS),a14 + ori M_PINNED,a14 + move a14,*a0(STATUS_FLAGS) + + ;and set his WHOPINNEDME + move a13,*a0(WHOPINNEDME),L + + ;and zero his velocities + clr a14 + move a14,*a0(OBJ_XVEL),L + move a14,*a0(OBJ_YVEL),L + move a14,*a0(OBJ_ZVEL),L + + ;and set his PTIME to one and clear his KOD bit, 'cuz he's probably + ; been KO'd if he's a drone. + movk 1,a14 + move a14,*a0(PTIME) + move *a0(STATUS_FLAGS),a14 + andni M_KOD,a14 + move a14,*a0(STATUS_FLAGS) + + setc + rets + +#clrc clrc + rets + +#***************************************************************************** +* +* Dead wrestlers sit here. + + SUBR xxx_dead_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_SETPLYRMODE,MODE_DEAD + + WL ANI_CODE,#set_pinable_bit + + WL ANI_CODE,#ko_if_drone + + .word ANI_ROT ;just sit and do nothing + + + +***** +* KO my process if I'm a drone. + + SUBRP #ko_if_drone + + ;don't go to sleep if this is an 8-on-1 or 8-on-2 match, UNLESS + ; wrestler_count is 0, which means there's no hope of becoming + ; a zombie. + move @royal_rumble,a14 + jrnz #is8 + calla is_8_on_1 + jrnc #not8 +#is8 move @wrestler_count,a14 + jrnz #rets +#not8 + + move *a13(PLYR_TYPE),a14 + cmpi PTYPE_DRONE,a14 + jrne #rets + + ;don't KO if I've been pinned + move *a13(STATUS_FLAGS),a14 + btst B_PINNED,a14 + jrnz #rets + + ;don't KO if our NO_KO bit is set. + btst B_NO_KO,a14 + jrnz #rets + + ori M_KOD,a14 + move a14,*a13(STATUS_FLAGS) + +#rets rets + +***** +* set the PINABLE bit in STATUS_FLAGS + + SUBRP #set_pinable_bit + + move *a13(STATUS_FLAGS),a14 + ori M_PINABLE,a14 + move a14,*a13(STATUS_FLAGS) + rets + +#***************************************************************************** +* +* This gets called once each MATCH for every wrestler, not each round. +* It creates the set of 'watchdog' processes that look out for special +* moves that the usual method can't handle; specifically, stuff that +* involves charging up with a stick, detailed control over timing, or +* proximity to the bad guy. +* + + SUBR init_smoves + + move *a13(WRESTLERNUM),a2,W + X32 a2 + addi #special_moves,a2 + move *a2,a2,L + jrz #done + +#loop + move *a2+,a7,L + jrz #done + movi SMOVE_PID,a1 + move a13,a8 + calla GETPRC_INSERT + + ;store reset address + move *a0(PWAKE),*a0(SM_RESET_ADDRESS),L + jruc #loop + +#done + rets + + +#special_moves + REFLONG hrt_smove_table ;Bret + REFLONG rzr_smove_table ;Razor + REFLONG und_smove_table ;Taker + REFLONG yok_smove_table ;Yoko + REFLONG shn_smove_table ;Shawn + REFLONG bam_smove_table ;Bam Bam + REFLONG dnk_smove_table ;Doink + .long 0 ;spare + REFLONG lex_smove_table ;Lex + +#***************************************************************************** + + .bss #pin_timeout,16 ;pin idiot check cntdown + .bss #last_dead,16 ;PCNT last time we had a one-team + ; dead condition. + + SUBR match_timer + + movk 9,a0 + move a0,@match_time ;10's + move a0,@match_time+10h ;1's + clr a0 + move a0,@match_time+20h ;fractional + + callr #create_timer + + SLEEP TSEC*2 + + movk ADJSPEED,a0 ;game timer speed (1-5) + calla GET_ADJ + BADCHK a0,1,5,3 ;reg,lo,hi,val + X16 a0 ;x 16 bits + addi timer_table-10h,a0 + move *a0,a1 + + ;slow the clock to 1/3 speed if this is the royal rumble + move @royal_rumble,a14 + jrnz #isrum + + ;slow the clock (2/3 speed) if it's 1v3. + move @PSTATUS,a14 + jrz #nfin + cmpi 3,a14 + jreq #nfin + + move @NUM_OPPS,a14 + cmpi 3,a14 + jrne #nfin + +#isrum movi >AAAA,a14 + mpyu a14,a1 + srl 16,a1 + + ;slow it yet again (down to 1/3 speed) if this is the final battle, + calla is_final_match + jrc #isfin + move @royal_rumble,a14 + jrz #nfin +#isfin sra 1,a1 + +#nfin move a1,a10 + + ;initialize #last_dead + clr a14 + move a14,@#last_dead + + ;initialize #pin_timeout - we need to do this because one time in + ; 2^16, when we hit our first all-dead condition, PCNT will be 1, + ; and the code will think that this isn't a new condition and it + ; won't reset this value. Hey, it could happen. + movi 4*TSEC,a14 + move a14,@#pin_timeout + +#loop + SLEEPK 1 + + move @HALT,a0 + jrnz #loop + + move @match_time,a0,L + jrz #loop + + ;call #dec_timer and update_timer only if there's a live member + ; of every team. (for this purpose, zombies count as live members) + + callr get_live_bits + move a0,a3 + + cmpi 3,a3 + jrne #1tmded ;a team is completely dead + + callr #dec_timer + callr update_timer + + jruc #loop + +#1tmded ;one team is completely dead - wait five seconds, and if there's + ; no pin by then, award the round to the team that's sitting on + ; it's silly drone ass instead of pinning. + + ;check #last_dead to see if this is a new all-dead condition or + ; an old one. if it's a new one, we need to reset #pin_timeout. + move @PCNT,a14 + move @#last_dead,a0 + sub a0,a14 + dec a14 + jrz #old + + ;new dead condition. reset #pin_timeout. + ;temp! - 314 + .if DEBUG + DBEVENT BDE_ALL_DEAD,a13,L,a13,L,a13,L + .endif + + movi 5*TSEC,a14 + move a14,@#pin_timeout + + ;clear reduce_bog. if we're in 8-on-1 or 8-on-2 mode, clear this + ; only if the human team is dead, or the drones are dead and no + ; more are coming. + move @royal_rumble,a14 + jrnz #ck8_2 + calla is_8_on_1 + jrnc #crb + +#ck8_1 ;check the 8-on-1 case + move @PSTATUS,a14 + and a3,a14 ;a3 is bit of live team + jrz #crb ;on z, human team is dead + jruc #dtd ;else dead team is drones + +#ck8_2 ;check the 8-on-2 case + btst 0,a3 ;team 0 is always humans in 8 on 2 + jrz #crb ;on z, human team is dead + +#dtd ;dead team is drones + move @wrestler_count,a14 + cmpi 1,a14 + jrge #ncrb + +#crb clr a14 + move a14,@reduce_bog + + ;wake the crowd + move @crowd_process,a0,L + movk 1,a14 + move a14,*a0(PTIME) + + +#ncrb ;create the PIN HIM message process. + move a3,a9 + xori 3,a9 + srl 1,a9 ;a8 is dead team (0 or 1) + CREATE PINHIM_ANIM_PID,pin_prompt + +#old ;update #last_dead + move @PCNT,a14 + move a14,@#last_dead + + ;dec pin_timeout and call the round if time's up. + move @#pin_timeout,a14 + jrz #loop ;we've already called this round + dec a14 + jrz #end ;time's up - do it. + move a14,@#pin_timeout + jruc #loop + +#end + CREATE ANNC_PID,announce_rnd_winner + .if DEBUG + move a13,*a0(PDATA),L ;#CREATOR (pdata) + movi $,a14 + move a14,*a0(PDATA+20h),L ;#ORIGIN + .endif + + ;stuff a 0 in #pin_timeout so we'll know that there's no further + ; action to be taken on this all-dead condition. + clr a14 + move a14,@#pin_timeout + jruc #loop + + +******************** + +#create_timer + + ;set pal + movi WGFS_W_P,b0 + calla is_8_on_1 + jrnc #nfin2 + movi WGSF_Y_P,b0 + +#nfin2 movi [186,0],a0 ;x pos + movi [21,0],a1 ;y pos + movi WGSF20_9,a2 + movi 200,a3 ;z pos + movi DMAWNZ|M_3D|M_SCRNREL,a4 ;DMA flags + movi TYPTIMERDIGIT,a5 + clr a6 ;x vel + clr a7 ;y vel + PUSH b0 + calla BEGINOBJP + PULL b0 + move a8,*a13(PDATA+20h),L ;10's image pointer + + movi [200+2,0],a0 ;x pos + movi [21,0],a1 ;y pos + movi WGSF20_9,a2 + calla BEGINOBJP + move a8,*a13(PDATA),L ;1's image pointer + + rets + +******************** + +#dec_timer + move @match_time,a0,L + cmpi 090009h,a0 + jrne #no_reset_pal + movi WGFS_W_P,a0 + calla is_8_on_1 + jrnc #nfin3 + movi WGSF_Y_P,a0 + +#nfin3 calla pal_getf + move *a13(PDATA+20h),a8,L ;10's image pointer + move a0,*a8(OPAL) + move *a13(PDATA),a8,L ;10's image pointer + move a0,*a8(OPAL) + +#no_reset_pal + + move @match_time+20h,a0 ;fractional + sub a10,a0 + + move a0,@match_time+20h + jrnc #no_change + + move @match_time+10h,a0 ;1's + dec a0 + move a0,@match_time+10h + jrnc #no_borrow + + movk 9,a0 + move a0,@match_time+10h + + move @match_time,a0 ;10's + dec a0 + move a0,@match_time + + cmpi 0,a0 + + jrne #no_borrow + movi WGSF_R_P,a0 + calla pal_getf + move *a13(PDATA+20h),a8,L ;10's image pointer + move a0,*a8(OPAL) + move *a13(PDATA),a8,L ;10's image pointer + move a0,*a8(OPAL) + +#no_borrow + ;if time is less than 15, make noise + move @match_time,a0,L + move a0,a1 + sra 16,a0 + andi 0Fh,a1 + sla 4,a1 + or a1,a0 + cmpi 10h,a0 + jrgt #no_change + movk 10,a0 ;Time warning sound + calla triple_sound + +#no_change + rets + +timer_table + .asg 1500,BASETM ;2100 ;16 + + .word BASETM-BASETM*30/100 ;1 (slowest) ;76.6 seconds/round + .word BASETM-BASETM*15/100 ;2 (slower) + .word BASETM ;3 (default) ;53.6 seconds/round + .word BASETM+BASETM*15/100 ;4 (faster) + .word BASETM+BASETM*30/100 ;5 (fastest) ;41.2 seconds/round + + +******************** + + SUBR update_timer + + move @match_time,a0 ;10's + .if DEBUG + cmpi 10,a0 + jrlt #ok1 + + ;clock digit out of range! + LOCKUP +#ok1 + .endif + + X32 a0 + addi digit_tbl,a0 + move *a0,a0,L ;* image + move *a13(PDATA+20h),a8,L ;10's image pointer + move *a8(OCTRL),a1 ;DMA flags + calla change_image + + move @match_time+10h,a0 ;1's + .if DEBUG + cmpi 10,a0 + jrlt #ok2 + + ;clock digit out of range! + LOCKUP + .endif +#ok2 + + X32 a0 + addi digit_tbl,a0 + move *a0,a0,L ;* image + move *a13(PDATA),a8,L ;1's image pointer + move *a8(OCTRL),a1 ;DMA flags + calla change_image + + rets + +#********************************************** +* +* + + SUBR wrestler_counter + + movk 8,a9 ; Initial wrestler count + move a9,@wrestler_count ; Initialize the count + +;Turn on remaining word + movi [126h,0],a0 + clr a11 + move @PSTATUS,a14 + cmpi 3,a14 + jrz #no_adj + btst 1,a14 + jrz #no_adj + movi [11ah,0],a11 +#no_adj + sub a11,a0 + movi [32h,0],a1 + movi remaining,a2 +name_z equ 9 + movi name_z,a3 ;Z + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi TYPWCCOUNT,a5 ;Delete the last string + clr a6 + clr a7 + movi WSF_Y_P,b0 + calla BEGINOBJP + move a8,a10 + + movi [17eh,0],a0 + sub a11,a0 + movi [32h,0],a1 + movi WSF10_8,a2 + movi name_z,a3 ;Z + movi DMAWNZ|M_SCRNREL,a4 ;DMA flags + movi TYPWCCOUNT,a5 ;Delete the last string + clr a6 + clr a7 + movi WSF_Y_P,b0 + calla BEGINOBJP + +#wc_loop + SLEEP 07fffh ; Sleep until woken up + + move @wrestler_count,a14 ; Get current count + jrz #wc_exit ; Is it 0 ? - br = yes + cmp a9,a14 ; Has it changed from last time ? + jrz #wc_loop + move a14,a9 ; Save for reprint + + move @wrestler_count,a0 ; Get current count + X32 a0 + addi #digit10_tbl,a0 + move *a0,a0,L ;* image + move *a8(OCTRL),a1 ;DMA flags + calla change_image + + jruc #wc_loop ; Go redo it + +#wc_exit + clr a0 + move a0,@wrestler_count_proc,L + + calla DELOBJA8 + move a10,a8 + jauc DELOBJDIE + + +#digit10_tbl + .long WSF10_0 + .long WSF10_1 + .long WSF10_2 + .long WSF10_3 + .long WSF10_4 + .long WSF10_5 + .long WSF10_6 + .long WSF10_7 + .long WSF10_8 + .long WSF10_9 + + +digit_tbl + .long WGSF20_0,WGSF20_1,WGSF20_2,WGSF20_3,WGSF20_4 + .long WGSF20_5,WGSF20_6,WGSF20_7,WGSF20_8,WGSF20_9 + +#***************************************************************************** + + SUBR maybe_do_flashes +#top SLEEPK 5 + move @reduce_bog,a1 + jrnz #die + MOVE @WORLDTLY,A0,L + CMPI [>ff97,0],A0 + JRGT #top + CALLA START_HI_FLASHES + SLEEPK 30 + JRUC #top +#die DIE + +#***************************************************************************** +* +* sets our DID_RAISEARM bit. + + SUBR set_raisearm_bit + + move *a13(STATUS_FLAGS),a14,L + ori M_DID_RAISEARM,a14 + move a14,*a13(STATUS_FLAGS),L + + rets + + +#***************************************************************************** +* +* check our DID_RAISEARM bit--set MODE_STATUS bit if it's clear (ANI_CODE) + + SUBR check_raisearm_bit + + move *a13(STATUS_FLAGS),a14,L + btst B_DID_RAISEARM,a14 + jrz #set + +#clr move *a13(ANIMODE),a14 + andni MODE_STATUS,a14 + move a14,*a13(ANIMODE) + rets + +#set move *a13(ANIMODE),a14 + ori MODE_STATUS,a14 + move a14,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* choose buddies for buddy mode. return the wrestlernums in a0 and a1. + + SUBR choose_buddies + + ;prepare an exclusion mask + clr a7 + movk 1,a0 + move @index1,a14 + sll a14,a0 + or a0,a7 + + movk 1,a0 + move @index2,a14 + sll a14,a0 + or a0,a7 + + ;count excluded wrestlers + move a7,a14 + clr a8 + movk 8,a0 +#lp1 srl 1,a14 + jrnc #nxt1 + inc a8 +#nxt1 dsj a0,#lp1 + + ;get the first one + calla get_rnd_wrestler + PUSH a0 ;store first WRESTLERNUM + + ;now exclude him and get another one. + inc a8 ;inc exclusion count + movk 1,a14 + sll a0,a14 + or a14,a7 + calla get_rnd_wrestler + PULL a1 ;retrieve first WRESTLERNUM + + rets + +#***************************************************************************** +* +* Return carry set if wrestler *a14 is behind wrestler *a13, clear otherwise. +* +* trashes a14 (isn't allowed to trash a0 or a1!) + + SUBR is_a14_behind + + PUSH a1 + + move *a14(OBJ_XPOSINT),a1 + move *a13(OBJ_XPOSINT),a14 + sub a1,a14 + jrn #onrt + +#onlt ;opponent on my left + move *a13(FACING_DIR),a14 + btst MOVE_LEFT_BIT,a14 + jrz #behind +; jruc #ahead + +#ahead PULL a1 + clrc + rets + +#onrt ;opponent on my right + move *a13(FACING_DIR),a14 + btst MOVE_RIGHT_BIT,a14 + jrnz #ahead +; jruc #behind + +#behind PULL a1 + setc + rets + +#***************************************************************************** +* +* Call this when a match has just ended. Does an appropriate sound if +* someone's winning streak has just ended. + + SUBR loser_snd + + move @PSTATUS,a14 + cmpi 3,a14 + jrne #rets + + move @match_winner,a1 + NOT A1 + ANDI 3,A1 + DEC A1 + X16 A1 + + ADDI p1oldwinstreak,A1 + MOVE *A1,A1 + jrz #rets + MOVK 2,A0 + CALLA RNDRNG0 + SLL 4,A0 + ADDI #speech,A0 + MOVE *A0,A0 + CALLA ADD_VOICE +#rets rets + +#speech ;.word CONGRATULATIONS + .word SOMEHOW_I_DONT_THINK +; .word L_CONGRATS + .word L_BACK_TO_SANDBOX + .word ARE_YOU_TOUGH_ENOUGH + +; .WORD L_SIGN_YOUR_NAME +; .WORD THIS_IS_FOR_ALL +; .WORD SIGN_HERE_PLEASE + + +#***************************************************************************** +* + + SUBR postgame_audits + + ;battle over accounting. + + ;compute match_realtime + move @match_start_time,a14,L + move @PCNT,a1,L + sub a14,a1 + movi 55,a14 + divu a14,a1 + move a1,@match_realtime + + ;skip all this crap after a royal_rumble + move @royal_rumble,a14 + jrnz #rets + + ;increment AUD_VSHUMF or AUD_VSCPUF (and AUD_CPUWIN) + movi AUD_VSHUMF,a0 + move @PSTATUS,a14 + cmpi 03h,a14 + jreq #vshum + movi AUD_VSCPUF,a0 +#vshum calla AUD1 + + ;add to AUD_2PBTIME, AUD_CPUWINTIME, or AUD_CPULOSETIME + move @PSTATUS,a14 + cmpi 03h,a14 + jreq #2pbtime + + move @match_winner,a0 + and a0,a14 + jrnz #cpulosetime + jruc #cpuwintime + +#2pbtime + movi AUD_2PBTIME,a0 + jruc #addtime + +#cpuwintime + MOVE @PSTARTS,A0 + JRZ NO_UPDATE_ANYTHING + + MOVI AUD_CREDLEN,A0 + MOVE @THIS_GAME_TIME,A1 + CALLA AUD + MOVI AUD_CREDLENNUM,A0 + CALLA AUD1 + CLR A0 + MOVE A0,@THIS_GAME_TIME + MOVE A0,@PSTARTS + +NO_UPDATE_ANYTHING + movi AUD_CPUWIN,a0 + calla AUD1 + movi AUD_CPUWINTIME,a0 + jruc #addtime +#cpulosetime + movi AUD_CPULOSETIME,a0 + jruc #addtime + +#addtime + move @match_realtime,a1 + calla AUD + + ;update record speeds + move @PSTATUS,a14 + cmpi 03h,a14 + jreq #fast_2p + + move @match_winner,a0 + and a0,a14 + jrnz #fast_cpulose + jruc #fast_cpuwin + +#fast_2p + movi AUD_FASTHDH,a0 + calla GET_AUD + jrz #no_prior_hdh + move @match_realtime,a2 + cmp a1,a2 + jrge #recordspeed_done +#no_prior_hdh + movi AUD_FASTHDH,a0 + move @match_realtime,a1 + calla STORE_AUDIT + jruc #recordspeed_done + +#fast_cpulose + movi AUD_FASTHDC,a0 + calla GET_AUD + jrz #no_prior_hdc + move @match_realtime,a2 + cmp a1,a2 + jrge #recordspeed_done +#no_prior_hdc + movi AUD_FASTHDC,a0 + move @match_realtime,a1 + calla STORE_AUDIT + jruc #recordspeed_done + +#fast_cpuwin + movi AUD_FASTCDH,a0 + calla GET_AUD + jrz #no_prior_cdh + move @match_realtime,a2 + cmp a1,a2 + jrge #recordspeed_done +#no_prior_cdh + movi AUD_FASTCDH,a0 + move @match_realtime,a1 + calla STORE_AUDIT + +#recordspeed_done +;No speedy victories in 3 rnd matches! + move @current_round,a0 + cmpi 3,a0 + jrz #rets + + + ;increment the proper wrestler use thingies + + MOVE @PSTATUS,A0 + CMPI 3,A0 + JREQ #2pmatch + + ;it's a one-player match. + move @index1,a2 + CLR A1 + SRL 1,A0 + JRC AUDIT_THE_HUMAN + move @index2,a2 + MOVK 1,A1 + +AUDIT_THE_HUMAN + CALLR #audit_wrestler + + move @NUM_OPPS,a14 + cmpi 1,a14 + jrne #rets ;don't audit 1-vs-many matches + + ;audit the computer + move @CURRENT_LADDER,a0,L + move *a0,a2,L + sll 24,a2 + srl 24,a2 ;CPU wrestlernum in a2 + + ;convert 7 to 8. + cmpi 7,a2 + jrne #vok0 + inc a2 +#vok0 + + move @PSTATUS,a1 + xori 3,a1 + srl 1,a1 ;CPU side in a3 (!PSTATUS >> 1) + + callr #audit_wrestler + + rets + + +;human vs. human match +#2pmatch + ;player 1 + move @index1,a2 + CLR A1 + CALLR #audit_wrestler + + ;player 2 + move @index2,a2 + MOVK 1,A1 + CALLR #audit_wrestler + +#rets RETS + +****************** +* a2 = WRESTLERNUM +* a1 = PLYR_SIDE + + SUBRP #audit_wrestler + + TEST a2 + jrnn #ok + .if DEBUG + LOCKUP + .endif + rets +#ok + X64 a2 ;x 4 words + addi wrestler_audits,a2 + + move @PSTATUS,a0 + btst A1,a0 + jrnz #p1hum + addi 20h,a2 ;skip 2 words +#p1hum + move *a2+,a0,W ;increment uses + calla AUD1 + + move @match_winner,a0 + btst A1,a0 + jrz #p1_audited + move *a2+,a0,W ;increment wins + calla AUD1 + +#p1_audited + RETS + + +#**************************************************************************** +* +* Returns bits of teams with live members in a0. +* + + SUBR get_live_bits + + PUSH a1,a2,a3 + + movk NUM_WRES,a0 + movi process_ptrs,a1 + clr a3 + +#lp1 move *a1+,a2,L + jrz #nxt1 ;skip inactive + + move *a2(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jrne #live + + move *a2(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrz #nxt1 ;skip dead &! zombie + +#live ;live wrestler. flag his team + move *a2(PLYR_SIDE),a14 + jrnz #t2 + + ;member of team 1 + ori 01h,a3 + jruc #nxt1 + +#t2 ;member of team 2 + ori 02h,a3 + +#nxt1 dsj a0,#lp1 + move a3,a0 + PULL a1,a2,a3 + + rets + +#***************************************************************************** +* +* Returns carry set if any of a13's live opponents are outside the ring. +* Trashes a0, a1, a14 +* + + SUBRP any_opp_outside + + PUSH a3 + + movi process_ptrs,a0 + movi NUM_WRES,a1 + move *a13(PLYR_SIDE),a2 +#lp0 move *a0+,a3,L + jrz #nxt0 ;skip inactive + move *a3(PLYR_SIDE),a14 + cmp a14,a2 + jreq #nxt0 ;skip teammates + move *a3(PLYRMODE),a14 + cmpi MODE_DEAD,a14 + jreq #nxt0 ;skip dead guys + move *a3(INRING),a14 + jrnz #setc ;is outside? +#nxt0 dsj a1,#lp0 + + PULL a3 + clrc + rets + +#setc PULL a3 + setc + rets + +#***************************************************************************** +* +* Sets a13's PLYRMODE to INAIR2 if his nearest opponent is dead, INAIR +* otherwise. +* + + SUBR set_tbukl_airmode + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jreq #dead + movi MODE_INAIR2,a0 + jruc #go + +#dead movi MODE_INAIR,a0 +#go move a0,*a13(PLYRMODE) + rets + +#***************************************************************************** +* +* set MODE_STATUS bit if switches are AWAY & PUNCH. + + SUBR free_toss_check + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + + move *a13(CLOSEST_NUM),a14 + X32 a14 + addi process_ptrs,a14 + move *a14,a14,L + + move *a14(OBJ_ZPOS),a14,L + move *a13(OBJ_ZPOS),a1,L + sub a1,a14 + abs a14 + srl 16,a14 + cmpi 15,a14 + jrlt #set + + +; move *a13(STICK_REL_CUR),a14 +; btst MOVE_AWAY_BIT,a14 +; jrz #clr + + move *a13(BUT_VAL_CUR),a14 + cmpi PLAYER_BLOCK_VAL,a14 + jreq #set +;#clr + andni MODE_STATUS,a0 +#set + move a0,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* We're gonna do a free hiptoss. Do all the neccesary setup here. Set our +* PLYRMODE to normal, IMMOBILIZE the bad guy, clear velocities, etc. + + SUBR setup_freetoss + + ;mode normal + SETMODE NORMAL + + ;immobilize bad guy + move *a13(WHOIHIT),a0,L + movk 20,a14 + move a14,*a0(IMMOBILIZE_TIME) + + ;smart-target bad guy + SMRTTGT a13,WHOIHIT + + rets + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/WRESTLEX.DOC b/WRESTLEX.DOC new file mode 100755 index 0000000..01552a8 --- /dev/null +++ b/WRESTLEX.DOC @@ -0,0 +1,300 @@ +From ddsw1!news.kei.com!bloom-beacon.mit.edu!spool.mu.edu!uwm.edu!vixen.cso.uiuc.edu!usenet.ucs.indiana.edu!news.cs.indiana.edu!bodom@ugly.ucs.indiana.edu Mon May 15 16:04:16 1995 +Newsgroups: rec.games.video.arcade +Path: ddsw1!news.kei.com!bloom-beacon.mit.edu!spool.mu.edu!uwm.edu!vixen.cso.uiuc.edu!usenet.ucs.indiana.edu!news.cs.indiana.edu!bodom@ugly.ucs.indiana.edu +From: "brian odom" +Subject: WWF WRESTLEMANIA FAQ V1.0 IS HERE +Message-ID: <1995May15.111918.2629@news.cs.indiana.edu> +Organization: Computer Science, Indiana University +Date: Mon, 15 May 1995 11:19:12 -0500 +Lines: 289 + +i expect to get all the moves and the combo system down in the next couple +of weeks. until then, here is a the 1.0 faq i've written. +if i get something revolutionary, then i'll post a v1.5 faq. +until the v2.0 comes out in a couple weeks, you can have this. + +--> andy eddy, do ya want this?? + +------------------------------------------------------------------------------ +WORLD WRESTLING FEDERATION PRESENTS... W R E S T L E M A N I A + +This is my first attempt at a faq from scratch. Excuse me if i forget +the capital letters, because I'm not used to it. + +Remember this is a V1.0 faq, so I'm not putting all the fancy biographies +and overview crap in it until later. I'm just giving you the basics. + +*** I N T R O D U C T I O N *** + +there are 8 characters +1) Doink The Clown +2) Razor Ramon +3) Bam Bam Bigelow +4) Shawn Michaels +5) Yokozuna +6) The Undertaker +7) Lex Luger +8) Bret "The Hit-Man" Hart + +As of this writing, Bam Bam Bigelow seems to be the best character. Also, +if you want to be cheap, The Undertaker can be the cheapest of all. + +*** C O N T R O L S *** + + + p pp + + + d + + + k pk + + +p = punch +pp = power punch +d = defense (block) +k = kick +pk = power kick + +*** B A S I C M O V E S *** + +Every character can run. To run, move your joystick in the desired direction, +and hit punch and kick at the same time. The "big" characters have special +throws which are uncounterable and these are executed by pressing power punch +and power kick at the same time. To grab someone, you tap towards twice and +hit power punch. Obviously, hit punch makes you punch and so forth, so I +won't even bother mentioning obvious stuff like this. + +run: p+k +power grab: pp+pk (some characters) +grab: ff+pp +piledriver: dd+pk (after grab) +drop kick: run + power kick +body dive: run + power punch +weapon attack: back + power punch or power kick +reverse throw: ff+pp or spaz + +ok, that looks cleaner. + +*** V E R S I O N *** + +We just got the new chip here. I didn't get much of a chance to recognize +the differences between the chips, so forgive me if some of the stuff listed +here doesn't work on your machine. One way to easily tell if you have the +new chip is after both players select their fighter. If it asks you whether +or not you want head to head or cooperative mode, then you have the new chip. +In a nutshell, cooperative mode SUCKS. DO NOT PLAY COOPERATIVE MODE. It +sucks because both you and your opponent have to fight all 8 cpu guys (2 at +a time). Also, both of you collectively get only one bar of energy. Even +worse, you only get one round. What makes it suck really, REALLY hard is that +after your one bar is gone, both you and your opponent games are over. If +you do happen to beat all 8 cpu opponents, the game will flash "you are the +world wwf champions" and that "you beat the game -- game over". Once again, +co-op mode needs work. I suspect another chip upgrade to fix this. + +*** B U G S *** + +On the old chip, I was playing Shawn Michaels and I did a sweep leg throw +to kill the guy and the game froze up. It was a one-time bug, so I don't +know if this is consistent or not. Also, our prototype version had a vcr +in it and it recorded everything. After the tape got full, the game would +crash. I don't know if all prototypes have vcr's in them, and I thought +it was very weird seeing the arcade guy go into the machine and change tapes. +Another annoying "feature" is the infamous mk3 "glitch". When you join in, +there is practically no pause. They added a slight pause on the new chip +(THANK GOD). Even mk3 still doesn't have it yet. +Also, many special effects disappear when there are more than 2 "sprites" +on the screen at the same time. Examples can be seen with The Undertaker. +When you do his fire uppercut, the fire won't appear when there are more than +2 sprites on screen and neither do the bats appear after he pins you. + +*** R U M O R M I L L *** + +When playing this game, there are messages at the bottom of screen. Little +messages like 2-round sweep, fast finish, and skill level. Rumor has it +that after selecting your characters that this game may have nba jam style +codes. After selecting your character, try tapping a button 10 times or +something. It just seems like there are some secret codes, and if you know +midway, you know that there must be some easter eggs in there. + +*** T H R O W S *** + +I had some kid whining that I threw too much. F___ him. This is wrestling. +You are SUPPOSED to throw. End of story. Got that? + +There are 3 types of throws. + +type 1) FF+PP +This is the normal grab that everyone has. Tap forward twice and hitting +power punch will attempt to grab the opponent. Get the know your throwing +ranges!! This is important!! Grab from max range! It's the secret to how +I get a lot of throws off. hehehe + +type 2) PP+PK +Some big characters have power throws. These throws are unique for they hold +them up in the air, then slam them down. What makes these throws really +good, is that they are NOT counterable. You can't counter a power throw, +so a character who has a power throw is good. Yoko, Lex, and BamBam are +some characters who have power throws. + +type 3) ??? +whipback throw. Many times when you're repeating punching the the face of +some guy (using power punches), as they are reeling back you can execute +a throw in the middle of these punches and it will grab them and many times, +throw them out of the ring. It's an over the shoulder kind of throw. I +don't have the exact motions on this one, but Razor can do this one pretty +good. Also, this throw is quick and uncounterable. + +After grabbing your opponent, you have many options. I think every character +has a universal move. After grabbing them, hit DD+PK. This will do a +standard pile driver for every character I believe. Some characters have +other moves too (for example, quadruple throws!!). These will be listed +in the individual section. + +After grabbing the opponent, you have many options. One is a high risk move +and the other is simply taps. A high risk move is one that requires a double +tap. A fter grabbing someone, hit DD+PK (as I described above). This +will do a high risk move. You can also tap punch and kick and do a repeated +attack. They can STILL reverse while you're attacking with the repeated +punches. Beware. High risk moves to me, aren't very much of a high risk, +but oh well. + +*** R E V E R S I N G T H R O W S *** + +There are two main ways for reversing (breaking) throws. One is a "clean" +way and hit 2 times FF and PP. You may need to hit 3 times forward to +counter -- I don't really know what I do, but I need to investigate it +a little more. Yet another way (which I see a lot of newbies doing) is the +"spaz method". Just spaz on the joystick and buttons as if you're breaking +out of a dizzy. Many times, when you spaz, you'll do a double throw instead. +Weird. Needs to be investigated more. + +*** C O M B O S *** + +Do a lot of special moves (and throws) and your combo meter goes up. With +your combo meter lit, you can actually recover from a pin. You can't recover +from a pin if you don't have the combo lit up, so in many cases a pin is +quite optional. When your combo is lit, after doing a type 1 grab (FF+PP), +you can start a BIG combo. I've heard rumors of a 29 and a 33-hit by Razor +Ramon and I've seen 15 hitters from guys like Lex and Shawn. I, personally, +have only figured out 1 combo, so whenever I get the big combos down, I'll +add them in the next upgrade of the faq. I know a 20-hit with BamBam. +I'm not sure if all the motions are necessary, but this is what I do. +There are also pseudo combos. One example of this is Shawn Michael's 4-hit +leg whip combo. It's a true combo -- it just doesn't mention it. + +20-hit BamBam combo: +FF+PP (to grab) +FF+PP, DD+P (for 1 sec), DD+K (for 1 sec), DD+PK (for 1 sec), DD+PP +so you simply do the grab move, then hit FF+PP to activate the combo. +Then you keep hitting down, while tapping on the punch button, and hit +the buttons in a counterclockwise direction. This is one combo. It is +a mk3 style combo where you hit sequences of buttons. If you simply do +the FF+PP, it will do like about 8 hits. So the key is finding the +optimal sequence of buttons are activating the combo. Each character +activates their combos with different motions, I believe. I just know +BamBam's is FF+PP. You guys can take it from here. I believe, the DD's +aren't necessary, but I will do more testing come payday (this Friday +coming up or whenever my damn income tax refund comes back). + +*** C H A R A C T E R S *** (in alphabetical order) + +this section is far from complete!! remember this is a V1.0 faq! +??? = I don't know it +(!) = unconfirmed by me + +Bam Bam Bigelow +^^^^^^^^^^^^^^^ +special moves: + fist rush: (hold P for 3 seconds, then release) +throws: + power grab: PP+PK + quadruple slam: (grab), DD+PK, then PP repeatedly + +Bret Hart (I got to play this guy more. I only played him once. sorry. +^^^^^^^^^ +special moves: + charging roll: ??? +throws: + quadruple slam: (grab), HCT-P (!) + +Doink +^^^^^ +special moves: + big hands: HCT-P + handshake: (hold P for 3 seconds, then release) "put it there, pal!" + hammer: FF+PK +throws: + (grab), DD+PK (head throw) + (grab), FF+PP (piledriver) + +Lex Luger +^^^^^^^^^ +special moves: + ??? +throws: + power grab: PP+PK + +Razor Ramon +^^^^^^^^^^^ +special moves: + slice: B+PP +throws: + quadruple slam: (grab), DD+K (this looks painful!) i love this throw. + +Shawn Michaels +^^^^^^^^^^^^^^ +special moves: + leg throw: FF+PK + sweep throw: FF+K + quadruple kick: HCT+K (up close) +throws: + run + power kick (leg throw) + +The Undertaker +^^^^^^^^^^^^^^ +special moves: + warp: HCT+p + ghost throws: I think one of them is HCT+K + (play with the HCT and HCB's. the light ghost stuns them and the dark + ghosts take off damage) +throws: (he can be cheap!) + uppercut buster: D+PP (just 1 down -- tough as HELL to counter) + fire uppercut: (warp), D+PK (tough to pull that counterthrow) + +Yokozuna: +^^^^^^^^ +special moves: + salt throw: (hold P for 3 seconds) + belly rush: FF+P +throws: + power grab: PP+PK + head knocker: FF+P (close) + leg spin throw: (power grab), DD+PK (another cool throw) + +*** C O N C L U S I O N *** + +After extensive testing, this is probably the most balanced game out there. +BamBam looks strong, but he's slow. Doink appears weak, but he has better +quickness. Learn to use each fighters adv/disadv's. Personally, I thought +The Undertaker was quite weak, but with his quick throws, he may be one of +the best. No one character is inferior to any other this seems to be a +very promising game. Over here, more people play this than mk3!! Seriously! +The graphics are much cleaner and overall, this game rocks. I thought I +would never say that about a wrestling game. I love this game! + +Author: +Brian Odom (bodom@ugly.ucs.indiana.edu) +Testing buddy: +Mark Uncapher (muncaphe@iunhaw1.iun.indiana.edu) + + + + + + +-- +brian odom +http://www.cs.indiana.edu/hyplan/bodom.html + diff --git a/WWF.DOC b/WWF.DOC new file mode 100755 index 0000000..6f16ea9 --- /dev/null +++ b/WWF.DOC @@ -0,0 +1,241 @@ +From: osengbou@bert.eecs.uic.edu (Oudom Sengbounouvong) +Subject: Midway's Westlemania game - pretty cool +Date: 25 Apr 1995 05:33:03 GMT + +Well, went down to North Pier's Time-Out arcade when I heard that they +had the game there. That game is pretty cool. + +Graphics looks kinda like those crappy SNES/Gen. WWF games, except the +sprites are cooler. The sprites are small like NBA Jam. They should +have had NBA Jam style scaling, that would kick ass. All the characters +look like they are supposed to. + +The characters are as follow: Shawn Micheals, Doink the Clown, The +Undertaker, Lex Lugar, Bret the hitman Hart, Yokozuna, Bam Bam Bigalo, +and Razor Ramone. The controls are like this. + + o o o + \|/ (P) (PP) + o--0--o (B) + /|\ (K) (PK) + o o o + + - 8 direction P is punch + joystick PP is power punch + B is block + K is kick + PK is power kick + +Pressing Punch and Kick together makes them run. + + +The crowd are the designers - I recognize Turmell, Divita, and Groskie +(at least I thought it was them). + +Remember how in NBA Jam, basketball was taken to extremes like everyone +can go above the rim and shattering the backboard? Well, in +Wrestlemania, the wrestlers were taken to extremes by the wacky WWF +standards. It's pretty funny. +Shawn Micheals - has a bat that he uses as a move, does a Cammy like leg + grab. When he gets hit, hearts fall out of him. +Bam Bam - mister fire! His punch/kicks makes the attacking part of him + be on fire. His on the top rope jump causes the opponent to burn and Bam + Bam emerges from the mat like the liquid Terminator except he is on fire, + not liquid. He also has a fire-colored shadow neck breaker move. +Yokozuna - his slams look painful to the victim! Ouch! When he gets + knocked, food comes out or something. Looks like ham and fish and + stuff. He has his get on the ropes and crush you move and other cool + slams that shakes the ring. He throws salt and leave you open for a bit. +Lex Luger - his arms transform to metallic things because he is supposed + to have a mental plate in his arm. They just pushed that to extremes. + He has a back breaker and other cool slams. Dumbbells come out of him + when you hit him. +Bret Hart - has this eye gouge where huge eyesball fall out of the + opponent. It's funny. He has this excellent uppercut and new bash. + When he gets hit, hearts and his sunglasses fall off. +The Undertaker - he can shoot grey ghosts that makes you dizzy. He has + this shadow choke move. He also has this neck thrust that causes you to + fly up very high. He has this light sabre type stick that he hits you with. + Skull and bones fall off of him when hit. +Razor Ramon - his hands turn into blade-like as he chops you. He has his + finishing Razor's edge move. Cool slams. +Doink the clown - His hands turn big and he has a clown hammer as his + extremes. Don't remember other things. + +They use DCS sound compression and we get commentary from Vince McMahon +and Jerry 'the king' Lawer. The king is very annoying. After playing a +while, the voices are quite repetitive. Howard Finkle does the +introduction speech ("Welcome to Wrestlemania by Midway..."). +You can random select your character in the selection screen. Now, on +gameplay- +2-players - you fight against each other like a fighting game. Those who +play Slammasters know what to expect. It's best of three falls. You can +throw people out the ring and fight out there. There's one timer that +counts down from 99 seconds, I believe. There's your standard life meter +and a combo meter. When the combo meter is full, you can do a Killer +Instinct type(ULTRAAAAaaaa Comboooooo!!!!!) combo. There's bars that +appear to tell you how to do something and what you did. Some moves +causes 2x damage, etc. The slams I saw could be repeated over and over +again like Jax's slams. You can grab your opponent and do a special +slam. Your opponent if being grabbed can do a reversal move. The dash +moves are pretty effective. There are throws too, I believe. The block +button is cool as you can block all those cheap moves like throwing +salt. When you are on the mat, you need to tap your recover bar to get +back up so your opponent don't keep on stumping you. Unfortunately, +there aren't tag matches or fight for priority grappling like WrestleFest +by Technos Japan. You can't through your opponent to the ropes but you +can control your run - forward or back, bounce off the rope. About the +props that fall off you when you are hit - you know how in Mortal Kombat, +blood flies out? That's the same kind of thinking. Sweat flies out on +regular moves and cool props specific to the characters fly out on +stronger moves. To win each fall, your opponent's energy bar must be +empty and there is a prompt that tells you to pin him! and you basically +slam on them. No, there is no ref. to do pin counts, there aren't any +pin counts. It's crazy, yet cool. + +Vs. Computer - +You have a choice of fighting for the intercontinental championship or +WWF heavy weight championship. The people who played the computer just +played for the heavy weight championship. The catch is, you have to +fight two computer opponents at the same time!! The computers are pretty +stupid as you can beat on while the other just stands there. Once in a +while, he might attack you. You can get the computer to accidentally do +a move on his partner and it's hilarious! Don't know if there is a last +boss or not. + +Well, all in all, they seem to base it more to Capcom's Saturday Night +Slam Masters than Technos' WrestleFest. That and a Mortal Kombat/NBA Jam +twist. + + +-- + _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ + _/ Oudom Sengbounouvong _/ eMail: osengbou@eecs.uic.edu _/ + _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ + Kombat Web: http://icarus.uic.edu:80/~osengb1 + Arcade Games Tester: Street Fighter the Movie(SFM) + + +From: olsospe@elof.acc.iit.edu (Spencer K. Olson) +Subject: Re: Midway Wrestlemania game [_very_ new] +Date: 25 Apr 1995 06:22:12 GMT + + +Well, I have gotten several e-mail responses, on this subject, so I will +elucidate a bit. + +This game has been in production for a very long time indeed. The software +is (c) 1994. The release is scheduled for the summer, so as not to compete +with MK3. + +Effectively, it's a fighting game, only with wrestlers. Joystick moves +around the ring, and the characters don't jump much, except off the +turnbuckles and during running attacks. + +Punch Power Punch + Block +Kick Power Kick + +Basic button setup is as above. If you tap Punch+Kick at the same time, +your character will start to run. Advantages: additional attacks, which +tend to do more damage.. in addition, most attacks initiated after bouncing +off the ropes do double damage. Disadvantages: You cannot block while running. +Also, there is a small window when coming off the ropes when you cannot +stop running or initiate an attack. + +When doing most attacks, your character will tend to seek out his opponent, +making vertical alterations as needed. + +Basic moves everyone has: +Forward, Forward+Power Punch: Hair grab. Acts as a setup for further attacks, +and _cannot_ be blocked. However, your opponent can reverse a throw if you +are attempting to throw him! It's all a matter of speed and timing. + +Back, Back+Power Punch: Attempts to throw your opponent into the ropes. +Moving your joystick and tapping buttons can recover your motions faster if +this move is used on you.. + +Back, Back+Punch: A basic throw for all characters, usually a hip toss. This +can only be blocked if the joystick is down and away. + +Turnbuckle attacks: You can climb up on the turnbuckle by going to the upper +left or right corner and holding the joystick in the appropriate direction. +By hitting any button, you can attempt to come crashing down on your +opponent. This move is unblockable, and aimable... fortunately, it is also +easy to avoid. If you miss your opponent, you will take a bit of damage. + +Blood: There ain't none! In fact, we've told Mark and Sal that we don't really +want any... after all, you don't see blood in the WWF anymore... if you want +blood in wrestling, you watch the WCW, where they still use branding irons and +such on each other... The closest thing to blood is when Shawn Michaels does +his Arm-Breaker move, and some yellowish marrow-looking substance comes out.. +The guys arm gets pretty funky for a second or two, too... The characters do +sweat a lot, and spit up a lot.. Indeed, different characters have different +things popping from them.. Doink has bright balls and bowling pins, Undertaker +skulls and bones, Razor Ramone: razor blades and gold chains and, of course, +Yokozuna with hams, turkeys and fish... + +Geez, there's so much to this, I don't know how to go through it all... + +The Power Punches are funky, and still need tweaking... Razor slashes out with +a huge straight razor, Shawn Michaels takes a swing with a baseball bat, and +Bret Hart has a very Cageish uppercut... the range and recovery are being +fixed, however. + +The designers have stated that there are probably going to be finishing moves, +indeed one is already in there, sort of... Bret Hart can do his patented +'Sharp shooter' leg hold, but it doesn't actually do anything yet... + +Under the life bar, there is another bar, initially empty, which fills up +when you do certain types of moves. When it is full, you can do one 'Flashback' +combo, so nicknamed by the local players because it gives you KI flashbacks... +You grab your opponent's hair, and then usually do Forward, Forward+some +button. Then, by using other buttons, you can a long, painful combo.. usually, +you just tap the buttons in time, and in a clockwise or counter-clockwise +direction. + +Also, when grabbing your opponent's hair, you can do various throws, depending +on the character you are using. As stated before, your opponent can reverse +your throw by doing the motions for his throw. + +Some moves can be 'pogoed', which means that, by tapping a button repeatedly +after one occurance of the move, you can repeat it, usually up to a total +of four times... sometimes only the first activation builds up the meter, +sometimes all three or four. + +It is possible to be thrown over the ropes, or to be knocked off the +turnbuckle out of the ring... if your opponent does not join you, you will +slowly start losing health, although you do get a warning before it starts. +The designers have stated that they are already considering putting chairs +and such outside to use on each other, of course ;^) + +There are two vc. CPU modes: Intercontinental Championship, and Heavy Weight +Belt [which is apparently harder to get, since you only fight the USA +competitors instead of the whole world..? Just something that's always bugged +me for the longest time..] In the former, you get four matches of one-on-one, +followed by two matches of two-on-one, followed by a single match of three- +on-one, which I have never seen anyone complete, although this is probably +the end of that ladder... The Heavy Weight belt is much more fun and complex. +You have the same four-two-one ratio, but you start with two-on-one, and +progess up to a match where it is still three-on-one, but where you cannot +take a fall; supposed to be a Royal Rumble of sorts... + +Note that with more than one CPU opponent, the will occasionally attack each +other, especially if you keep both of them in a straight line to one side of +you... + +As stated before, this is all goofy enough so that it makes you laugh as hard +as real wrestling does at 2 in the morning... + +Final thought... Bret Hart has an Eye Rake move... where he rushes up and +attempts to claw at his opponent... if it succeeds, two or sometimes four +huge eyeballs pop out and roll off screen.. well, huge for eyeballs anyhow. + +Umm, I could give you an idea of what sorts of moves are available, if you +are curious, or if there are any more specific queries, I'd be happy to +relate them to you all... + +Spencer "signing off for now, and somewhat ill" Olson +olsospe@elof.acc.iit.edu +torgo@io.com diff --git a/WWF2.DOC b/WWF2.DOC new file mode 100755 index 0000000..318d0a3 --- /dev/null +++ b/WWF2.DOC @@ -0,0 +1,193 @@ +From: "brian odom" +Subject: Re: WWF Wrestling game is out! +Date: Tue, 9 May 1995 14:28:32 -0500 + +frodisman@aol.com (Frodisman) writes: + +>Hey folks! + +>I got to play the WWF game from Midway today. It looks a lot like MK3 in +>graphics. It has combos, MK style special moves and 2 on 1 and 3 on 1 +>matches. I didn't get to play it but a couple times. (I got slaughtered +>by some guy who was playin' all day) It looks like it's gonna be pretty +>good. I'll be playin' it! + +I LIKE THIS GAME!!! i had retired, but my friend mark dragged me back +to the arcade (thanx mark). anyways, i was disappointed with what was +out there, so i decided to try something new. if there's not a faq on this +game, i'm willing to start one. i'll post a skeleton faq here. i want +credit for a faq!!! this game actually has strategy (something that other +wrestling games seem to ignore). someone else can write some story lines +or whatever because the only wrestler i know of is hulk hogan and he isn't +in this game. i was kicking major ass once i got the hang of it. +DOINK RULES!!! + +wwf faq v0.9 (bodom) (not quite 1.0 just yet!) :P +------------------------------------------------------------------------------ +there is a defense button, but i use two different defenses. i use the run +as an offensive and a defensive weapon. you must learn this! when someone +knocks you down, you can run away to get in a position. a good move i use +is to run away, then quickly run towards and hit power kick. good surprise +move. + +there are 8 characters +1) doink +2) razor ramon +3) bam bam bigelow +4) shawn michaels +5) yokozuna +6) the undertaker +7) lex lugar +8) bret hart + +so far, there seems to be (at my arcade) 4 main characters people use. +the top 4 are +1) shawn michaels +2) the undertaker +3) doink +4) yokozuna + +as a beginner, i suggest playing yokozuna to start with. he's a solid +beginning character. bam bam is also a decent starting character. + +* CONTROLS * + + + p pp + + + d + + + k pk + + +p = punch +pp = power punch +d = defense (i still prefer to call it "block") +k = kick +pk = power kick + +* THROWS * + +i had some kid whining that i threw too much. fuck him. this is wrestling. +you are SUPPOSED to throw. end of story. learn defense and learn that run! +run is much better implemented than in mk3. run is easier for me to do than +to find that awkward run button on mk3, but this is my opinion (i keep hitting +low punch a lot when i want to run). + +throws are executed by tapping forward twice, then hitting pp (power punch). +your player will grab. i haven't tested out throwing ranges just yet, but i +like doink a lot. yoko and shawn are also great. + +after grabbing the opponent, you have many options. one is a high risk move +and the other is simply taps. a high risk move is one that requires a double +tap. after grabbing someone, tap down twice and hit pk (power kick). this +will do a high risk move (for all fighters i think, but i'm not sure yet). +you can also tap punch and kick and do a repeated attack. they can STILL +reverse while you're attacking with the repeated punches. beware. + +* BREAKING THROWS * + +to break a throw, hit forward 3 times, then hit pp. there may be many more, +but like i said, i only played it a few times, and didn't get much of a chance +to test much (well, i did cuz i was winning a lot, but anyways). this will +do a reversal. + +* COMBOS * + +i didn't figure out what it really does. with the combo lit up, you can +recover from a pin and only when it is lit. i'm sure that there is some +super move you can do when this is lit, but i didn't try to find any. +do enough special moves, and your combo meter goes up. + +* BUGS * + +you know this is a midway game because it suffers from the SAME THING as mk3. +after a playing joins it, there is NO pause. i got pissed when i kept +selecting razor ramon on accident. this sucks. midway please ditch this. + +* BASIC ATTACKS * + +like i said earlier, everyone has a basic throw attack and that's tap 2 forward +and pp. also, running attacks, followed by power moves do dive moves. any +button to a fallen opponent will pin him when it says pin him! keep in mind, +that run is p+k. use it, and use it wisely. back and power attacks many +times do spinning attacks. also, first attack of the round scores double +the damage!! makes a good opening strategy. do i risk it and do a high risk +super move or do i do something wimpy? beats the hell out of getting useless +points for first attack (ssf2). + +* CHARACTERS * + +i only got the chance to play 4 characters, so i will also go into detail on +those 4. doink is my favorite because he has good agility (useful for running +then hitting defense and then running again). + +all grabs are ff+pp unless specified otherwise. + +yokozuna: + +belly dive: ff+p +salt throw: ? +face punches: ff+p (close to opponent) this will grab them. good move for + beginners. +spin throw: grab, dd+pk + + +doink: + +hammer: ff+pk +big hands: ff+pp (?) +body slam: grab, dd+pk + + +the undertaker: + +light ghost throw: hcb+k you can block this for no damage. getting hit will + stun you momentarily. +dark ghost throw: {k}+hcb + (this means hold down kick, do the motion then release) + blocking this one takes damage and getting hit by it does + damage also. +warp move: hct+p +fire uppercut: warp move, dd+pk +big uppercut: grab, dd+pk (?) + + +shawn michaels: + +leg throw: ff+pk (good move) especially to counter undertakers projectiles +sweep throw: ff+k +rolling tackle: (?) +4-hit combo: shawn has a combo with 4 leg whips to the head. + this one guy was being a sore asshole and wouldn't tell me how + to do it, because he kept losing i guess. asswipe. + it's some move that involves kick. i may go test it sometime + soon. + +razor ramon: + +5-hit throw combo: pp, ff+pp + start whipping on that pp and while you're hitting them, + do the throw motion. it all flows. ouch! + +everyone else is invited to fill in the rest. + + +the hell with mk3 and killer instinct. wwf and bust-a-move are much better +games! there was a bigger crowd around wwf for awhile than was around mk3. +i like the "extra bass" sound effects. you can feel the pain when big +yokozuna sits one you. hams, turkeys, barbells, bowling pins, etc. flying +from people's bodies got annoying to me after awhile, but i adjusted. + +it'll be awhile before i go play again (i have to drive 30 miles across the +state line just to go play a decent arcade game. sheesh!) + + + + + +-- +brian odom +http://www.cs.indiana.edu/hyplan/bodom.html diff --git a/WWFMODES.DOC b/WWFMODES.DOC new file mode 100755 index 0000000..b4d80b2 Binary files /dev/null and b/WWFMODES.DOC differ diff --git a/WWFSEC.EQU b/WWFSEC.EQU new file mode 100755 index 0000000..0426471 --- /dev/null +++ b/WWFSEC.EQU @@ -0,0 +1,36 @@ +COINS_M1 .equ 01860090h +SWITCH_M1 .equ 01860040h +SWITCH2_M1 .equ 01860080h +WATCHDOG_M1 .equ 01860090h +DIPSWITCH_M1 .equ 01860010h +SOUND_M1 .equ 01680000h +SOUNDIRQ_M1 .equ 01860020h +COIN_COUNTERS_M1 .equ 01860080h + +COINS_M2 .equ 01860060h +SWITCH_M2 .equ 01860080h +SWITCH2_M2 .equ 01860020h +WATCHDOG_M2 .equ 01860060h +DIPSWITCH_M2 .equ 01860040h +SOUND_M2 .equ 01680000h +SOUNDIRQ_M2 .equ 01860010h +COIN_COUNTERS_M2 .equ 01860020h + +COINS_M3 .equ 018600a0h +SWITCH_M3 .equ 01860010h +SWITCH2_M3 .equ 01860080h +WATCHDOG_M3 .equ 018600a0h +DIPSWITCH_M3 .equ 01860020h +SOUND_M3 .equ 01680000h +SOUNDIRQ_M3 .equ 01860050h +COIN_COUNTERS_M3 .equ 01860080h + +COINS_M4 .equ 01860070h +SWITCH_M4 .equ 01860020h +SWITCH2_M4 .equ 01860040h +WATCHDOG_M4 .equ 01860070h +DIPSWITCH_M4 .equ 01860010h +SOUND_M4 .equ 01680000h +SOUNDIRQ_M4 .equ 01860080h +COIN_COUNTERS_M4 .equ 01860040h + \ No newline at end of file diff --git a/WWI.BAT b/WWI.BAT new file mode 100755 index 0000000..e01a6db --- /dev/null +++ b/WWI.BAT @@ -0,0 +1,2 @@ +c: +cd \video\wwf\img diff --git a/YOKO.ASM b/YOKO.ASM new file mode 100755 index 0000000..2315072 --- /dev/null +++ b/YOKO.ASM @@ -0,0 +1,2824 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "yoko.asm" + .title "Yokozuna specific game code" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "jjxm.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" + .include "damage.equ" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref change_anim1a,change_anim2a,bounce_off_ropes + .ref check_secret_moves,climb_turnbuckle,raisearm_check + .ref execute_walk,get_punch_dtime,get_opp_plyrmode + .ref keep_attached,change_anim1,mode_dead,round_award + .ref get_opp_process,ck_ignore,do_taunt,process_ptrs + .ref FIND_AND_KILL_ENDLESS,JUMP_ROPES,CHECK_COMBO_GO + .ref yok_combo_jabs_anim,yok_combo_kick_anim,set_raisearm_bit + .ref BLOCK_WOOSH,drone_change_back,ck_teammate_pin + .ref CLIMB_ROPES,ADD_IF_SILENT,master_keep_attached + .ref change_anim2,can_pin + .ref blocking_off,std_taunt,std_walk_fast + .ref hyper_speed_on + .ref in_finish_move + .ref p1rounds,p2rounds + .if NUM_YOKO_FINISHES + .ref yok_finish1_move + .if NUM_YOKO_FINISHES > 1 + .ref yok_finish2_move + .endif + .endif + +****************************************************************************** +* ANIMATION SEQUENCES + + .ref yok_2_jabs_anim + .ref yok_4_jabs_anim + .ref yok_4_uppercut_anim + .ref yok_2_slap2_anim + .ref yok_4_slap2_anim + .ref yok_2_superkick_anim + .ref yok_4_superkick_anim + .ref yok_2_grabfling_anim + .ref yok_4_grabfling_anim + + .ref DO_REVERSAL,PCNT + .ref DO_REVERSAL_MESS + + .ref yok_3_head_hold2_anim + .ref yok_3_head_hold_anim + .ref wres_slave_anim + .ref yok_zip_anim + .ref start_run_anim + + .ref yok_stand2_anim,yok_stand8_anim + .ref yok_scissor_anim + .ref yok_stand4_anim,yok_stand6_anim + .ref yok_torso2_anim,yok_torso8_anim + .ref yok_torso4_anim,yok_torso6_anim + + .ref yok_2_to_4_turn_anim,yok_8_to_6_turn_anim ;stand + .ref yok_4_to_2_turn_anim,yok_6_to_8_turn_anim + .ref yok_4_to_6_turn_anim,yok_6_to_4_turn_anim + .ref yok_2_to_8_turn_anim,yok_8_to_2_turn_anim + .ref yok_4_to_8_turn_anim,yok_6_to_2_turn_anim + .ref yok_2_to_6_turn_anim,yok_8_to_4_turn_anim + + .ref yok_2_to_4_turn2_anim,yok_8_to_6_turn2_anim ;torso + .ref yok_4_to_2_turn2_anim,yok_6_to_8_turn2_anim + .ref yok_4_to_6_turn2_anim,yok_6_to_4_turn2_anim + .ref yok_2_to_8_turn2_anim,yok_8_to_2_turn2_anim + .ref yok_4_to_8_turn2_anim,yok_6_to_2_turn2_anim + .ref yok_2_to_6_turn2_anim,yok_8_to_4_turn2_anim + + .ref yok_walk1_f2_anim,yok_walk2_f2_anim,yok_walk4_f2_anim + .ref yok_walk5_f2_anim,yok_walk6_f2_anim,yok_walk8_f2_anim + + .ref yok_walk1_f4_anim,yok_walk2_f4_anim,yok_walk4_f4_anim + .ref yok_walk5_f4_anim,yok_walk6_f4_anim,yok_walk8_f4_anim + + .ref yok_run2_anim + + .ref yok_climb_up_anim,yok_climb_down_anim + .ref yok_3_butt_drop_anim,yok_tbukl_buttdrop_anim + + .ref yok_2_punch_anim,yok_4_punch_anim +; .ref yok_2_push_anim + .ref yok_4_push_anim + .ref yok_2_lbowdrop_anim,yok_4_lbowdrop_anim + .ref yok_2_kick_anim,yok_4_kick_anim + .ref yok_2_stomp_anim,yok_4_stomp_anim + .ref yok_2_knee_anim,yok_4_knee_anim + .ref yok_2_gut_push_anim,yok_4_gut_push_anim + .ref yok_4_losebal_anim + + .ref yok_4_block_anim + + .ref yok_2_head_hit_anim,yok_4_head_hit_anim + .ref yok_2_body_hit_anim,yok_4_body_hit_anim + .ref yok_2_raise_arm_anim,yok_4_raise_arm_anim + .ref yok_2_pin_anim,yok_4_pin_anim + + .ref yok_graboh_anim + .ref yok_2_hiptoss_anim + .ref yok_4_hiptoss_anim + .ref yok_2_hiptoss2_anim + .ref yok_4_hiptoss2_anim + .ref yok_vsuplex_anim + + .ref yok_spinslam_anim + .ref yok_heldheadbutt_rpt_anim + +; .ref yok_pkup_chair_anim + .ref yok_2_hair_pickup_anim + .ref yok_4_salt_anim,yok_3_head_held_stand_anim + .ref yok_overhd_slam_anim,yok_2_run_slap_anim + .ref yok_4_hair_pickup_anim,yok_2_salt_anim + .ref yok_stndholdoh_anim,yok_4_run_slap_anim + .ref yok_fall_back_anim,yok_holdoh_anim + + .ref BONUS_MESS + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** + +yok_secret_moves + .long #charge_salt ;must have this one + .long #neck_grab + .long #grab_fling + .long #hip_toss + .long #grab_fling2 + .long #hip_toss2 + .long #scissors + .long #gut_push + .long #jabs + .long 0 + +****************************************************************************** +* +* SPECIAL MOVE PROCESSES - Secret moves +* +;a8=process of wrestler + + SUBR yok_smove_table + .long yok_hdhold_combo1 + .long yok_hdhold_scissor + .long yok_hdhold_suplex + .long yok_salt_throw + .long yok_grab_toss_air + .long yok_hdhold_combo2 +; .long yok_hdhold_anti_combo + .long std_walk_fast + .long std_taunt + + .if NUM_YOKO_FINISHES + .long yok_finish_move1 + .endif + .if NUM_YOKO_FINISHES > 1 + .long yok_finish_move2 + .endif + .long 0 + +****************************************************************************** +#scissors + .word B_SKICK, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_scis + +#scrt_scis + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #rets + move *a13(PLYRMODE),a0 + CMPI MODE_HEADHOLD,a0 + jrz #rets + +;no frankensteiner if opponent is on the ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jreq #rets + cmpi MODE_DEAD,a0 + jreq #rets + + ;don't do it if opponent is behind you + calla ck_ignore + jrc #rets + + CALLA FIND_AND_KILL_ENDLESS + movi yok_scissor_anim,a0 + calla change_anim1a + WRSND W_YOKO,GRABFLING_T1,GRABFLING_T2 +#rets rets + +******************************************************************************* + +#hip_toss +; .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_hiptoss + + .word B_PUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_hiptoss + +#scrt_hiptoss + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out +; cmpi MODE_BLOCK,a0 +; jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_INAIR,a0 + jrz #doit + cmpi MODE_INAIR2,a0 + jrz #doit + + move *a13(CLOSEST_DIST),a0 + cmpi 70h,a0 + jrgt #out + +#doit + FACE24 yok,hiptoss_anim + calla change_anim1a + + WRSND W_YOKO,HIPTOSS_T1,PUNCH_T2 + + rets + +******************************************************************************* + +#grab_fling2 + .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#hip_toss2 + .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN + .word 8000h | 10 ;max + .long #scrt_grabfling2 + +#scrt_grabfling2 + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrz #yes + rets + +******************************************************************************* + +#grab_fling +; .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN +; .word 8000h | 10 ;max +; .long #scrt_grabfling + + .word B_SPUNCH, J_ALL + .word J_AWAY, J_REAL_LR + .word J_AWAY, J_REAL_LR + .word 8000h | 32 ;max + .long #scrt_grabfling + +#scrt_grabfling + +;Make this miss, rotate to missed opponent, +;and stay rotated to flung opponent, also make +;this work from both angles! + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;If opponent is running, do a hip toss + calla get_opp_plyrmode + cmpi MODE_BOUNCING,a0 + jrz #yes + cmpi MODE_RUNNING,a0 + jrnz #nope +#yes + FACE24 yok,hiptoss_anim + calla change_anim1a + + WRSND W_YOKO,HIPTOSS_T1,PUNCH_T2 + rets + +#nope +;Don't fling when he is on ground + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_ONGROUND,a0 + jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + +; move *a13(LAST_FLING_ATTEMPT),a14,L +; move @PCNT,a0,L +; sub a14,a0 +; cmpi 3*60,a0 +; jrge #ok2 +; +;;This head grab is too close (in terms of time) to most recent grab +; FACE24 yok,slap2_anim +; calla change_anim1a +; +; WRSND W_YOKO,SPUNCH_T1,SPUNCH_T2 +; rets +; +;#ok2 +; move @PCNT,a14,L ;use 32-bit PCNT! +; move a14,*a13(LAST_FLING_ATTEMPT),L + + FACE24 yok,grabfling_anim + calla change_anim1a + + WRSND W_YOKO,GRABFLING_T1,PUNCH_T2 + rets + +******************************************************************************* + +#neck_grab + .word B_SPUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 30 ;max + .long #scrt_neck + +#scrt_neck + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + + move *a13(LAST_HEADHOLD),a14,L + move @PCNT,a0,L + sub a14,a0 + cmpi 2*60,a0 + jrge #ok2a + +;This head grab is too close (in terms of time) to most recent grab + .ref yok_3_fake_hold_anim + movi yok_3_fake_hold_anim,a0 + calla change_anim1a + rets + +#ok2a + move *a13(CLOSEST_XDIST),a1 + cmpi 80,a1 + jrgt #std_grab + + movi yok_3_head_hold2_anim,a0 + calla change_anim1a + rets + +#std_grab + movi yok_3_head_hold_anim,a0 + calla change_anim1a + rets + +******************************************************************************* + +#charge_salt + + move *a13(BUT_VAL_UP),a0 + btst PLAYER_PUNCH_BIT,a0 + jrz #no_punch + + move *a13(PLYRNUM),a0 + calla get_punch_dtime + cmpi 85,a0 ;> min? + jrlt #no_punch + + CALLA FIND_AND_KILL_ENDLESS + callr #scrt_salt + setc + rets + +#no_punch + clrc + rets + +#scrt_salt + move *a13(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrz #out + cmpi MODE_HEADHOLD,a0 + jrz #out + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ATTACHED,a0 + jrz #out +; cmpi MODE_ONGROUND,a0 +; jrz #out +; cmpi MODE_DEAD,a0 +; jrz #out + + FACE24 yok,salt_anim + calla change_anim1a + WRSND W_YOKO,HDBUTT_T1,HDBUTT_T2 + + clr a0 + move a0,*a13(RUN_TIME) + + SETMODE NORMAL + + rets + +******************************************************************************* + +#gut_push + .word B_PUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_TOWARD, J_REAL_LR + .word 8000h | 40 ;max + .long #scrt_gut_push + +#scrt_gut_push + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode + cmpi MODE_ONGROUND,a0 + jrz #out + cmpi MODE_DEAD,a0 + jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out +;Mode held overhead! + cmpi MODE_ATTACHED,a0 + jrz #out + + FACE24 yok,gut_push_anim + calla change_anim1a + WRSND W_YOKO,GRABTHROW_T1,GRABTHROW_T2 +#out + rets + + +******************************************************************************* + +#jabs + .word B_PUNCH, J_ALL + .word J_TOWARD, J_REAL_LR + .word J_DOWN_TOWARD, J_REAL_LR + .word J_DOWN, J_REAL_LR + .word 8000h | 50 ;max + .long #scrt_jabs + +#scrt_jabs + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #out + + move *a13(PLYRMODE),a0 + cmpi MODE_ONTURNBKL,a0 + jrz #out + +;Don't do it when he is on ground + calla get_opp_plyrmode +; cmpi MODE_ONGROUND,a0 +; jrz #out +; cmpi MODE_DEAD,a0 +; jrz #out + cmpi MODE_HEADHELD,a0 + jrz #out + + FACE24 yok,jabs_anim + calla change_anim1a + + WRSND W_YOKO,HDBUTT_T1,HDBUTT_T2 + + rets + + .if NUM_YOKO_FINISHES +#****************************************************************************** + SUBRP yok_finish_move1 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_DOWN,0,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset + WAITSWITCH_DWN B_PUNCH,J_ALL,#reset + + movi yok_finish1_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + + + .if NUM_YOKO_FINISHES > 1 +#****************************************************************************** + SUBRP yok_finish_move2 + +#TIMEOUT .equ TSEC + +#end_wait + SLEEP TSEC/4 + move @p1rounds,a0 ; Get player 1 rounds + move @p2rounds,a1 ; Get player 2 rounds + or a1,a0 ; Put em together + cmpi 2,a0 ; Anybody got 2? + jrlt #end_wait ; br = no + +#reset + clr a11 + move a11,@in_finish_move + SLEEPK 1 + WAITSWITCH_DWN J_UP,0,#reset + movi #TIMEOUT,a11 + move a11,@in_finish_move + WAITSWITCH_DWN J_UP,0,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN J_RIGHT,J_UP,#reset + WAITSWITCH_DWN B_SPUNCH,J_ALL,#reset + + movi yok_finish2_move,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + DIE + .endif + +#******************************************************************************* + +yok_grab_toss_air + +#TIMEOUT .equ 40 + +#lp0 + SLEEPK 1 +#lp + clr a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jreq #lp0 + +;Don't do it when he is on ground + SWAP a8,a13 + calla get_opp_plyrmode + SWAP a8,a13 +;Don't do it when he is on ground + cmpi MODE_ONGROUND,a0 + jrz #lp + cmpi MODE_DEAD,a0 + jrz #lp + cmpi MODE_INAIR,a0 + jrz #doit2 + cmpi MODE_INAIR2,a0 + jrz #doit2 + + move *a8(CLOSEST_NUM),a0 + X32 a0 + addi process_ptrs,a0 + move *a0,a0,L + move *a0(ATTACK_TYPE),a0 + cmpi AT_LEAPING,a0 + jrz #doit2 + + move *a8(CLOSEST_DIST),a0 + cmpi 6ch,a0 + jrgt #lp + + FACE24 yok,hiptoss_anim + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_YOKO,GRABFLING_T1,PUNCH_T2 + + SLEEPK 20 + jruc #lp + +#doit2 FACE24 yok,hiptoss2_anim + move a0,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_YOKO,GRABFLING_T1,PUNCH_T2 + + SLEEPK 20 + + jruc #lp + + +#******************************************************************************* +yok_hdhold_suplex + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp +; move *a8(GETUP_TIME),a0 +; jrnz #lp0 + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + +; WAITSWITCH_DWN J_UP,0,#lp + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + WAITSWITCH_DWN B_SKICK,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + +;Do reversal unless I have been immobilized! +;If not, set immobilize time for opponent and reverse + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movi 42,a10 + CREATE MESSAGE_PID,BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 30,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + + movi yok_vsuplex_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_YOKO,GRABFLING_T1,GRABFLING_T2 + + SLEEPK 20 + + jruc #lp + +#******************************************************************************* +yok_hdhold_scissor + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp +; move *a8(GETUP_TIME),a0 +; jrnz #lp0 + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + +; WAITSWITCH_DWN J_AWAY,0,#lp + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + move *a8(I_WILL_DIE),A14 + jrnz #lp0 + + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + + ;target WHOHITME -- don't hit anyone else + SMRTTGT a8,WHOHITME + + ;immobilize WHOHITME + move *a8(WHOHITME),a0,L + jruc #is_reversal + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + + movi 34,a10 + CREATE0 BONUS_MESS + + ;target WHOIHIT -- don't hit anyone else + SMRTTGT a8,WHOIHIT + + ;immobilize WHOIHIT + move *a8(WHOIHIT),a0,L + +#is_reversal + movk 32,a14 + move a14,*a0(IMMOBILIZE_TIME) + + CALLA FIND_AND_KILL_ENDLESS + movi yok_scissor_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_YOKO,GRABFLING_T1,GRABFLING_T2 + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +yok_hdhold_combo1 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi yok_combo_jabs_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_YOKO,UPRCUT_T1,UPRCUT_T2 + + SLEEPK 20 + + jruc #lp + +******************************************************************************* +#* +yok_hdhold_combo2 + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrnz #lp0 +; jrz #cont +; cmpi MODE_HEADHELD,a0 +; jrnz #lp0 +;#cont +;In combo mode? + calla CHECK_COMBO_GO + jrlt #lp0 + + clr a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + + movi #TIMEOUT,a11 + + WAITSWITCH_DWN J_TOWARD,0,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #slam + cmpi MODE_HEADHELD,a0 + jrnz #lp0 + +#slam + move *a8(IMMOBILIZE_TIME),a14 + jrnz #lp0 ;ignore + +;Start combo rules here +; move *a8(ATTACH_PROC),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) + + ;target WHOIHIT + SMRTTGT a8,WHOIHIT + + CALLA FIND_AND_KILL_ENDLESS + movi yok_combo_kick_anim,a14 + move a14,*a8(SPECIAL_MOVE_ADDR),L + + WRSND W_YOKO,UPRCUT_T1,UPRCUT_T2 + + SLEEPK 20 + + jruc #lp + +;#****************************************************************************** +;yok_hdhold_anti_combo +; +;#TIMEOUT .equ 80 +; +;#lp0 +; SLEEPK 1 +;#lp +;;Is my opponent in combo mode? +;; move *a8(IMMOBILIZE_TIME),a14 +;; jrz #lp0 +;; move *a8(CLOSEST_NUM),a0 +;; X32 a0 +;; addi process_ptrs,a0 +;; move *a0,a0,L +;; move *a0(COMBO_COUNT),a0 +;; jrz #lp0 +; +; clr a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +; movi #TIMEOUT,a11 +; +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp +; +;;Is my opponent in combo mode? +; move *a8(CLOSEST_NUM),a0 +; X32 a0 +; addi process_ptrs,a0 +; move *a0,a0,L +; move *a0(COMBO_COUNT),a0 +; jrz #lp0 +; +; move *a8(ANTI_COMBO_TIME),a0 ;Time stamp +; move @PCNT,a14 +; sub a0,a14 +; abs a14 +; cmpi 80,a14 +; jrge #lp0 +; move *a8(I_WILL_DIE),A14 +; jrnz #lp0 +; +;;Combo breaker message! +; CALLA DO_REVERSAL +; CALLA DO_REVERSAL_MESS +; +; clr a0 +; move a0,*a8(IMMOBILIZE_TIME) +; +; move *a8(WHOHITME),a14,L +; movk 15,a0 +; move a0,*a14(IMMOBILIZE_TIME) +; +; ;target WHOHITME +; SMRTTGT a8,WHOHITME +; +; CALLA FIND_AND_KILL_ENDLESS +; movi yok_vsuplex_anim,a14 +; move a14,*a8(SPECIAL_MOVE_ADDR),L +; +; WRSND W_YOKO,UPRCUT_T1,UPRCUT_T2 +; +; SLEEPK 20 +; +; jruc #lp + +#******************************************************************************* +yok_salt_throw + +#TIMEOUT .equ 60 + +#lp0 + SLEEPK 1 +#lp + move *a8(PLYRMODE),a0 + cmpi MODE_HEADHOLD,a0 + jrz #cont + cmpi MODE_HEADHELD,a0 + jrnz #lp0 +#cont + clr a11 + + WAITSWITCH_DWN J_DOWN,0,#lp + + movi #TIMEOUT,a11 + +; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp + WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#lp + WAITSWITCH_DWN B_PUNCH,J_ALL,#lp + + CALLA FIND_AND_KILL_ENDLESS + movi yok_4_salt_anim,a0 + move a0,*a8(SPECIAL_MOVE_ADDR),L + WRSND W_YOKO,LBOWDROP_T1,LBOWDROP_T2 + + SLEEP 120 + + jruc #lp + +#***************************************************************************** + + SUBR yoko_ani_init + + move *a13(FACING_DIR),a0 + btst PLAYER_RIGHT_BIT,a0 + jrnz #p1 +;Plyr 2 + movi yok_stand4_anim,a0 + calla change_anim1a + + movi yok_torso4_anim,a0 + calla change_anim2a + + PUSH a10 + move a13,a10 + + CREATE TAUNT_PID,do_taunt + PULL a10 + + rets + +#p1 + movi yok_stand2_anim,a0 + calla change_anim1a + + movi yok_torso2_anim,a0 + calla change_anim2a + + rets + + +#***************************************************************************** +* +* YOKOZUNA CONTROL CODE +* +* a13 = * yoko process + + SUBR move_yoko + + +; movi 100h,a0 ;temp fix! +; move a0,*a13(ANI_SPEED) + + movi yok_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 + .long mode_puppet2 ;17 + .long mode_normal ;18 + .long mode_headheld ;19 + REFLONG mode_puppet ;20 + REFLONG mode_inair2 ;21 + .long mode_normal ;22 + .long mode_normal ;23 + .long mode_chokehold ;24 + REFLONG mode_choking ;25 + + +#***************************************************************************** + +mode_normal + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(I_WILL_DIE),a0 + jrz #nope + move *a13(IMMOBILIZE_TIME),a0 + jrnz #nope +;Player has died amidst a combo... +;Knock me down. + movi yok_fall_back_anim,a0 + calla change_anim1a + +;Zero health bar + movi -10,a0 + move *a13(PLYRNUM),a1 + calla adjust_health + + SETMODE DEAD + + clr a0 + move a0,*a13(I_WILL_DIE) + + rets + +#nope +;Perhaps we need to interrupt any sequence when a wrestler has won? + + calla get_opp_plyrmode + cmpi MODE_DEAD,a0 + jrne #opp_not_dead + + ;if closest is a zombie, skip pin section. + calla get_opp_process + move *a0(STATUS_FLAGS),a14 + btst B_ZOMBIE,a14 + jrnz #opp_not_dead + + ;all opponents are dead. Check for pins/raisearms + + ;if we're attached to someone, don't interrupt it. + move *a13(ATTACH_PROC),a1,L + jrz #no_attch + move *a1(ATTACH_PROC),a2,L + cmp a2,a13 + jreq #no_pin_yet +#no_attch + + ;if a teammate has pinned, raise yer arm. + calla ck_teammate_pin + jrc #raisearm + + ;nobody has pinned. if we're outside or all our opponents are + ; outside, do a raisearm. + calla raisearm_check + jrc #raisearm + + ;we're inside with a pinnable opponent. any button pins. + move *a13(BUT_VAL_CUR),a0 + jrz #no_pin_yet + + ;we have a press -- make sure opponent is on the ground + calla can_pin + jrnc #opp_notgnd + + ;opponent is on the ground. pin him. + FACE24 yok,pin_anim + calla change_anim1a + + ;set the 'I did a pin' flag. + move *a13(STATUS_FLAGS),a14 + ori M_DID_PIN,a14 + move a14,*a13(STATUS_FLAGS) + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#raisearm + FACE24 yok,raise_arm_anim + calla change_anim1a + calla set_raisearm_bit + + ;if we're a temp drone for auto-pin purposes, turn back into + ; a normal player here. + calla drone_change_back + + rets + +#too_far_to_pin +#opp_notgnd +#opp_not_dead +#no_pin_yet + + move *a13(IMMOBILIZE_TIME),a0 + jrnz #immobilized + + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 ;maybe have to action tables? + jrz #nblk ;1 for down transitions + callr #block ;& 1 for current buttons + jrc #nblk + clr a0 + move a0,*a13(ATTACK_TYPE) + rets +#nblk + move *a13(BUT_VAL_CUR),a0 + andi 011111b,a0 + cmpi PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,a0 + jrz #punchkick + + move *a13(BUT_VAL_DOWN),a0 + 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(STICK_VAL_CUR),a0 + move a0,*a13(MOVE_DIR) + calla climb_turnbuckle + jrnc #no_climb + move *a13(WRESTLERNUM),A5 + MOVI CLIMB_ROPES,A2 + MOVI 1000,A0 + CALLA ADD_IF_SILENT + rets + +#immobilized + clr a14 + move a14,*a13(MOVE_DIR) +#no_climb + calla execute_walk + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + + rets + +************ +#graboh +;Both super buttons at the same time! + movi yok_graboh_anim,a0 + calla change_anim1a + WRSND W_YOKO,GRABHOLD_T1,GRABHOLD_T2 + rets + +************ +#punch ;1 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 62 95 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing normal punch +* +* onturnbkl < 60 60 punch +* onturnbkl > normal punch +* +* puppet|inair normal punch +* + + JJXM_INIT + JJXM NORMAL, 62, 95,#punch_hdbutt,#punch_punch + JJXM DIZZY, 62, 95,#punch_hdbutt,#punch_punch + JJXM BLOCK, 62, 95,#punch_hdbutt,#punch_punch + JJXM ONGROUND, 160,140,#punch_lbdrop,#punch_punch + JJXM RUNNING, 62, 95,#punch_hdbutt,#punch_punch + JJXM BOUNCING, 62, 95,#punch_hdbutt,#punch_punch + JJXM ONTURNBKL, #punch_punch + JJXM CLIMBTURNBKL, #punch_punch + JJXM PUPPET, 62, 95,#punch_hdbutt,#punch_punch + JJXM PUPPET2, 62, 95,#punch_hdbutt,#punch_punch + JJXM INAIR, 62, 95,#punch_hdbutt,#punch_punch + JJXM ATTACHED, 62, 95,#punch_hdbutt,#punch_punch + JJXM DEAD, 160,140,#punch_lbdrop,#punch_punch + JJXM OPPOVERHEAD, 62, 95,#punch_hdbutt,#punch_punch + JJXM WAITANIM, 62, 95,#punch_hdbutt,#punch_punch + JJXM GRAPPLE, 62, 95,#punch_hdbutt,#punch_punch + JJXM MASTER, 62, 95,#punch_hdbutt,#punch_punch + JJXM SLAVE, 62, 95,#punch_hdbutt,#punch_punch + JJXM HEADHOLD, 62, 95,#punch_hdbutt,#punch_punch + JJXM HEADHELD, 62, 95,#punch_hdbutt,#punch_punch + JJXM CHOKEHOLD, 62, 95,#punch_hdbutt,#punch_punch + JJXM INAIR2, 62, 95,#punch_hdbutt,#punch_punch + JJXM_END + +***** +#punch_punch +std_punch + + FACE24 yok,punch_anim + calla change_anim1a + + WRSND W_YOKO,PUNCH_T1,PUNCH_T2 + rets + +***** +#punch_hdbutt + +; move *a13(STICK_VAL_CUR),a0 +; move *a13(NEW_FACING_DIR),a1 +; andi 0ch,a1 +; cmp a0,a1 +; jrz #rpt +; +; movi yok_heldheadbutt_anim,a0 +; calla change_anim1a +; +; WRSND W_YOKO,HDBUTT_T1,HDBUTT_T2 +; rets +; +;#rpt + movi yok_heldheadbutt_rpt_anim,a0 + calla change_anim1a + + WRSND W_YOKO,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#punch_lbdrop + + FACE24 yok,lbowdrop_anim + calla change_anim1a + + WRSND W_YOKO,LBOWDROP_T1,LBOWDROP_T2 + rets + +************ +#block ;2 + + clr a0 + move a0,*a13(OBJ_XVEL),L + +std_block + move @blocking_off,a0 + jrnz #no_blocking + + RND_AWARD a13,BLOCKS_AWD + + movi yok_4_block_anim,a0 + calla change_anim1a + + calla BLOCK_WOOSH + + clr a0 + move a0,*a13(BLOCK_TIME) + clrc + rets + +#no_blocking + setc + rets + + +************ +#super_punch ;4 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 50 92 close in super move +* dizzy " " +* normal > jumping punch move +* dizzy " " +* +* onground < 120 120 super elbow drop +* onground > normal punch +* +* running hip toss +* bouncing nothing +* +* onturnbkl < 60 96 yank down +* onturnbkl > normal punch +* climbturnbkl normal punch +* + JJXM_INIT + JJXM NORMAL, 95, 45,#spunch_special,#spunch_slap ;0 + JJXM RUNNING, 95, 45,#spunch_special,#spunch_slap ;1 + JJXM INAIR, 95, 45,#spunch_special,#spunch_slap ;2 + JJXM ATTACHED, 95, 45,#spunch_special,#spunch_slap ;3 + JJXM ONGROUND, 160,140,#spunch_lbowdrop,std_punch ;4 + JJXM BOUNCING, 95, 45,#spunch_special,#spunch_slap ;0 + JJXM ONTURNBKL, #spunch_slap ;6 + JJXM BLOCK, 95, 45,#spunch_special,#spunch_slap ;7 + JJXM DIZZY, 95, 45,#spunch_special,#spunch_slap ;8 + JJXM DEAD, 160,140,#spunch_lbowdrop,std_punch ;4 + JJXM OPPOVERHEAD, 95, 45,#spunch_special,#spunch_slap ;10 + JJXM CLIMBTURNBKL, std_punch ;11 + JJXM WAITANIM, 95, 45,#spunch_special,#spunch_slap ;12 + JJXM GRAPPLE, 95, 45,#spunch_special,#spunch_slap ;13 + JJXM MASTER, 95, 45,#spunch_special,#spunch_slap ;14 + JJXM SLAVE, 95, 45,#spunch_special,#spunch_slap ;15 + JJXM HEADHOLD, 95, 45,#spunch_special,#spunch_slap ;16 + JJXM HEADHELD, 95, 45,#spunch_special,#spunch_slap ;19 + JJXM CHOKEHOLD, 95, 45,#spunch_special,#spunch_slap ;16 + JJXM PUPPET, 95, 45,#spunch_special,#spunch_slap ;20 + JJXM PUPPET2, 95, 45,#spunch_special,#spunch_slap ;20 + JJXM INAIR2, 95, 45,#spunch_special,#spunch_slap ;21 + JJXM_END + +#spunch_rets + rets + +***** +#spunch_slap + + FACE24 yok,slap2_anim + calla change_anim1a + + WRSND W_YOKO,PUNCH_T1,PUNCH_T2 + rets + +***** +#spunch_special +;If stick is toward opponent, then do quick head hold + move *a13(STICK_VAL_CUR),a0 + btst MOVE_DOWN_BIT,a0 + jrnz #ck_up + +; move *a13(CLOSEST_XDIST),a1 +; cmpi 60,a1 +; jrgt #spunch_slap +; +;#hdbutt +; movi yok_heldheadbutt_anim,a0 + + FACE24 yok,jabs_anim + calla change_anim1a + + WRSND W_YOKO,HDBUTT_T1,HDBUTT_T2 + rets + +#ck_up +;Check for uppercut + movi yok_4_uppercut_anim,a0 + calla change_anim1 + + WRSND W_YOKO,HDBUTT_T1,HDBUTT_T2 + rets + +***** +#spunch_lbowdrop +;If near opponents head, and facing down, do the hair grab! +;Allow hair grab from below! + +; move *a13(FACING_DIR),a14 +; btst MOVE_DOWN_BIT,a14 +; jrz #no + + move *a13(CLOSEST_NUM),a14 + X32 a14 + + addi process_ptrs,a14 + move *a14,a14,L + move *a14(PLYRMODE),a2 + cmpi MODE_DEAD,a2 + jrz #no + move *a13(OBJ_XPOS),a1,L + move *a14(OBJ_XPOS),a2,L + sub a2,a1 + abs a1 + srl 16,a1 + cmpi 20h,a1 ;28 + jrlt #no + +;At head or feet! + + move *a14(OBJ_CONTROL),a14 + andi M_FLIPH,a14 + move *a13(OBJ_CONTROL),a0 + andi M_FLIPH,a0 + cmp a0,a14 + jrz #no + +;At head! Do hair pickup. + + FACE24 yok,hair_pickup_anim + calla change_anim1 + WRSND W_YOKO,LBOWDROP_T1,LBOWDROP_T2 + rets + +#no + FACE24 yok,lbowdrop_anim + calla change_anim1 + WRSND W_YOKO,LBOWDROP_T1,LBOWDROP_T2 + rets + + +************ +#kick ;8 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 50 knee +* > normal kick +* +* onground < 120 120 stomp +* onground > normal kick +* +* running | +* bouncing big boot +* +* onturnbkl | normal kick +* climbturnbkl normal kick +* +* puppet|inair normal kick +* + + + JJXM_INIT + JJXM NORMAL, 60, 50,#kick_knee,#kick_kick + JJXM DIZZY, 60, 50,#kick_knee,#kick_kick + JJXM BLOCK, 60, 50,#kick_knee,#kick_kick + JJXM ONGROUND, 160,140,#kick_stomp,#kick_kick + JJXM RUNNING, 60, 50,#kick_knee,#kick_kick + JJXM BOUNCING, 60, 50,#kick_knee,#kick_kick + JJXM ONTURNBKL, #kick_kick + JJXM CLIMBTURNBKL, #kick_kick + JJXM PUPPET, #kick_kick + JJXM PUPPET2, #kick_kick + JJXM INAIR, 60, 50,#kick_knee,#kick_kick + JJXM ATTACHED, 60, 50,#kick_knee,#kick_kick + JJXM DEAD, 160,140,#kick_stomp,#kick_kick + JJXM OPPOVERHEAD, 60, 50,#kick_knee,#kick_kick + JJXM WAITANIM, 60, 50,#kick_knee,#kick_kick + JJXM GRAPPLE, 60, 50,#kick_knee,#kick_kick + JJXM MASTER, 60, 50,#kick_knee,#kick_kick + JJXM SLAVE, 60, 50,#kick_knee,#kick_kick + JJXM HEADHOLD, 60, 50,#kick_knee,#kick_kick + JJXM HEADHELD, 60, 50,#kick_knee,#kick_kick + JJXM CHOKEHOLD, 60, 50,#kick_knee,#kick_kick + JJXM INAIR2, #kick_TB + JJXM_END + +***** +#kick_TB + + .ref yok_graboh_TB_anim + movi yok_graboh_TB_anim,a0 + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +***** +#kick_kick + + FACE24 yok,kick_anim + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +***** +#kick_knee + + FACE24 yok,knee_anim + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +***** +#kick_stomp + + FACE24 yok,stomp_anim + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + + +************ +#punchkick ;9 + + movi start_run_anim,a0 + calla change_anim1a + + rets + + +************ +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 60 50 knee +* > normal kick +* +* onground < 120 120 stomp +* onground > normal kick +* +* running | +* bouncing big boot +* +* onturnbkl | normal kick +* climbturnbkl normal kick +* +* puppet|inair normal kick +* + + JJXM_INIT + JJXM NORMAL, 60, 50,#skick_knee,#skick_kick + JJXM DIZZY, 60, 50,#skick_knee,#skick_kick + JJXM BLOCK, 60, 50,#skick_knee,#skick_kick + JJXM ONGROUND, 160,140,#skick_stomp,#skick_kick + JJXM RUNNING, 60, 50,#skick_knee,#skick_kick + JJXM BOUNCING, 60, 50,#skick_knee,#skick_kick + JJXM ONTURNBKL, #skick_kick + JJXM CLIMBTURNBKL, #skick_kick + JJXM PUPPET, #skick_kick + JJXM PUPPET2, #skick_kick + JJXM INAIR, #skick_kick + JJXM ATTACHED, 60, 50,#skick_knee,#skick_kick + JJXM DEAD, 160,140,#skick_stomp,#skick_kick + JJXM OPPOVERHEAD, 60, 50,#skick_knee,#skick_kick + JJXM WAITANIM, 60, 50,#skick_knee,#skick_kick + JJXM GRAPPLE, 60, 50,#skick_knee,#skick_kick + JJXM MASTER, 60, 50,#skick_knee,#skick_kick + JJXM SLAVE, 60, 50,#skick_knee,#skick_kick + JJXM HEADHOLD, 60, 50,#skick_knee,#skick_kick + JJXM HEADHELD, 60, 50,#skick_knee,#skick_kick + JJXM CHOKEHOLD, 60, 50,#skick_knee,#skick_kick + JJXM INAIR2, #kick_TB + JJXM_END + +***** +;#skick_bigboot +; +; .ref yok_2_bigboot_anim +; .ref yok_4_bigboot_anim +; +; FACE24 yok,bigboot_anim +; calla change_anim1a +; +; WRSND W_YOKO,FLYKICK_T1,FLYKICK_T2 +; +; rets + +***** +#skick_kick + +;Jumping karate kick + FACE24 yok,superkick_anim + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +***** +#skick_knee + + FACE24 yok,knee_anim + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +***** +#skick_stomp + + FACE24 yok,stomp_anim + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +***** +#skick_scissor + movi yok_scissor_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_YOKO,GRABFLING_T1,GRABFLING_T2 + + rets + + +#***************************************************************************** +* +* RUNNING (if GETUP_TIME > 0 then player is out of control) +* + +#XRUN_VAL equ YOK_XRUN +#ZDRIFT_VAL equ YOK_ZDRIFT + +mode_running + + move *a13(RUN_TIME),a0 ;Used for flying kick + addk 1,a0 + move a0,*a13(RUN_TIME) + + move *a13(USR_VAR1),a0 + jrnz #no_vel + + calla bounce_off_ropes + + movi #XRUN_VAL,a0 + move *a13(MOVE_DIR),a14 + btst PLAYER_RIGHT_BIT,a14 + jrnz #pos + neg a0 +#pos + move @hyper_speed_on,a14 + sll a14,a0 + move a0,*a13(OBJ_XVEL),L + +#no_vel + + 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(STICK_VAL_CUR),a0 + move *a13(MOVE_DIR),a1 + or a0,a1 + andi MOVE_LEFT|MOVE_RIGHT,a1 + cmpi MOVE_LEFT|MOVE_RIGHT,a1 + jrne #continue_run + + ;braking with stick. abort run. + + SETMODE NORMAL + +#continue_run +#no_interrupt + + move *a13(STICK_VAL_CUR),a0 + 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 + +;Delay reading buttons after just getting out of an out of control run +;so a mistaken move isn't fired off + move *a13(DELAY_BUTNS),a0 + jrnz #out_of_control + + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 +#out_of_control + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + +************ +#punch ;1 +#super_punch ;4 +#punchkick +#graboh +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 62 95 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing normal punch +* +* onturnbkl < 60 60 punch +* onturnbkl > normal punch +* +* puppet|inair normal punch +* + + JJXM_INIT + JJXM NORMAL, #punch_clobber + JJXM DIZZY, #punch_clobber + JJXM BLOCK, #punch_clobber + JJXM ONGROUND, #punch_buttdrop + JJXM RUNNING, #punch_clobber + JJXM BOUNCING, #punch_clobber + JJXM ONTURNBKL, #punch_clobber + JJXM CLIMBTURNBKL, #punch_clobber + JJXM PUPPET, #punch_clobber + JJXM PUPPET2, #punch_clobber + JJXM INAIR, #punch_clobber + JJXM ATTACHED, #punch_clobber + JJXM DEAD, #punch_buttdrop + JJXM OPPOVERHEAD, #punch_clobber + JJXM WAITANIM, #punch_clobber + JJXM GRAPPLE, #punch_clobber + JJXM MASTER, #punch_clobber + JJXM SLAVE, #punch_clobber + JJXM HEADHOLD, #punch_clobber + JJXM HEADHELD, #punch_clobber + JJXM CHOKEHOLD, #punch_clobber + JJXM INAIR2, #punch_clobber + JJXM_END + + rets + +#punch_clobber + + calla ck_ignore + jrc #rets + + clr a0 + move a0,*a13(RUN_TIME) + + SETMODE NORMAL + + FACE24 yok,run_slap_anim + calla change_anim1a + + WRSND W_YOKO,PUNCH_T1,PUNCH_T2 + rets + + +***** +#punch_rets + rets + +***** +#punch_buttdrop + + movi yok_3_butt_drop_anim,a0 + calla change_anim1a + WRSND W_YOKO,GRABTHROW_T1,GRABTHROW_T2 + rets + + +************ +#block ;2 + + move *a13(OBJ_XVEL),a0,L + sra 1,a0 + move a0,*a13(OBJ_XVEL),L + SETMODE NORMAL + jruc std_block + +************** +#kick ;8 +#super_kick ;16 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* normal < 62 95 headbutt +* normal > normal punch +* +* onground < 120 120 elbow drop +* onground > normal punch +* +* running | +* bouncing normal punch +* +* onturnbkl < 60 60 punch +* onturnbkl > normal punch +* +* puppet|inair normal punch +* + + JJXM_INIT + JJXM NORMAL, #scissor + JJXM DIZZY, #scissor + JJXM BLOCK, #scissor + JJXM ONGROUND, #punch_buttdrop + JJXM RUNNING, #scissor + JJXM BOUNCING, #scissor + JJXM ONTURNBKL, #scissor + JJXM CLIMBTURNBKL, #scissor + JJXM PUPPET, #scissor + JJXM PUPPET2, #scissor + JJXM INAIR, #scissor + JJXM ATTACHED, #scissor + JJXM DEAD, #punch_buttdrop + JJXM OPPOVERHEAD, #scissor + JJXM WAITANIM, #scissor + JJXM GRAPPLE, #scissor + JJXM MASTER, #scissor + JJXM SLAVE, #scissor + JJXM HEADHOLD, #scissor + JJXM HEADHELD, #scissor + JJXM CHOKEHOLD, #scissor + JJXM INAIR2, #scissor + JJXM_END + + rets + +#scissor +;don't do it if opponent is behind you + calla ck_ignore + jrc #rets + + movi yok_scissor_anim,a0 + calla change_anim1a + + SETMODE INAIR + + WRSND W_YOKO,GRABHOLD_T1,GRABHOLD_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 + +#***************************************************************************** +mode_onground ;4 + + 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 yok_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 + +; ;check unint +; move *a13(ANIMODE),a14 +; btst MODE_UNINT_BIT,a14 +; jrnz #no_interrupt + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #no_climbdown + + movi yok_climb_down_anim,a0 + calla change_anim1a + + SETMODE CLIMBTURNBKL + +#no_interrupt + rets + +#no_climbdown + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #z + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + + move *a13(PLYRNUM),a5 + movi JUMP_ROPES,a2 + movi 1000,a0 + calla ADD_IF_SILENT + + rets + + +;For standing on top of turnbuckles + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +; .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 +#punchkick ;5 +#kick ;8 +#super_kick ;16 +#graboh ;20 + + SETMODE INAIR + + movi yok_tbukl_buttdrop_anim,a0 + calla change_anim1a + + WRSND W_YOKO,TURNDIVE_T1,TURNDIVE_T2 + + rets + +#***************************************************************************** +* blocking + +mode_block ;7 + + move *a13(BLOCK_TIME),a0 + inc a0 + move a0,*a13(BLOCK_TIME) + cmpi 160,a0 + jrlt #no + + calla get_opp_plyrmode + cmpi MODE_BLOCK,a0 + jrnz #no + move *a13(CLOSEST_XDIST),a0 + cmpi 61h,a0 + jrge #no + cmpi 45,a0 + jrlt #no + move *a13(CLOSEST_ZDIST),a0 + cmpi 30,a0 + jrlt #punchblock + +#no + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + jrz #no_interrupt + + ;press. if block isn't down, let mode_normal handle it + move a0,a2 ;save a0 from ...val_down + move *a13(BUT_VAL_CUR),a0 + btst PLAYER_BLOCK_BIT,a0 + jrz #set_mode_normal + move a2,a0 ;restore a0 from ...val_down + + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#set_mode_normal + SETMODE NORMAL + jruc mode_normal + +#action_table + .long #z,#punchblock,#z ;0-2 + .long #punchblock ;3 + .long #z,#z,#z,#z,#z,#z,#z ;4-10 + .long #z,#z,#z,#z,#z,#z,#z ;11-17 + .long #z,#z,#z,#z,#z,#z,#z ;18-24 + .long #z,#z,#z,#z,#z,#z,#z ;25-31 + +************ +#z + rets + +************ +#punchblock ;3 +* +* MODE DX DZ ACTION +* ---------------------------------------------------- +* all push +* + +;This push has no collisions set! + + SETMODE NORMAL + + movi yok_4_push_anim,a0 + calla change_anim1a + + WRSND W_YOKO,PUSH_T1,PUSH_T2 + + rets + +#***************************************************************************** +* + +mode_dizzy ;8 + +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +; calla clear_damage_log +; +; clr a0 +; move a0,*a13(STARS_FLAG) +; +; SETMODE NORMAL +; +;#still_going + 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 ;* remove this???? + btst MODE_UNINT_BIT,a0 ;* + jrnz #no_interrupt ;* + + clr a0 + move a0,*a13(ATTACH_PROC),L + + CALLA FIND_AND_KILL_ENDLESS + SETMODE NORMAL + + movi MODE_NORMAL,a0 + move a0,*a13(ANIMODE) + + rets + +#still_attached + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(FACING_DIR),a0 + andni MOVE_UP,a0 + ori MOVE_DOWN,a0 + move a0,*a13(FACING_DIR) + move a0,*a13(NEW_FACING_DIR) + + move *a13(STICK_VAL_CUR),a0 + jrz #stand + + move a0,*a13(MOVE_DIR) + calla execute_walk + + movi yok_holdoh_anim,a0 + calla change_anim2 + jruc #ck_butns +#stand + clr a0 + move a0,*a13(MOVE_DIR) + move a0,*a13(OBJ_XVEL),L + move a0,*a13(OBJ_ZVEL),L + + movi yok_stndholdoh_anim,a0 + calla change_anim1 + +#ck_butns + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#z + rets + +************ +#punch ;1 +#block ;2 +#kick ;8 +#super_kick ;16 +#punchkick +#graboh + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #slam + + movi yok_spinslam_anim,a0 + calla change_anim1a + + WRSND W_YOKO,HIPTOSS_T1,HIPTOSS_T2 + + rets +#slam +;Just slam him down + movi yok_overhd_slam_anim,a0 + calla change_anim1a + + WRSND W_YOKO,HIPTOSS_T1,HIPTOSS_T2 + + rets + +#super_punch ;4 + + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_UP_BIT,a0 + jrz #punch + + CALLA FIND_AND_KILL_ENDLESS + .ref yok_overhd_slam2_anim + movi yok_overhd_slam2_anim,a0 + calla change_anim1a + + WRSND W_YOKO,HIPTOSS_T1,HIPTOSS_T2 + + 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 +; +; +; move *a13(GETUP_TIME),a0 +; jrnz #still_going +; +;;now get move off +;;if opponents meter almost zero then break apart +; +; calla break_lockup +; rets +; +; +;#still_going +; calla lineup_grapple +; rets + + +#***************************************************************************** + +mode_master ;14 + + calla master_keep_attached ;keep slave attached to me + + rets + +#***************************************************************************** + +mode_slave ;15 + rets + +;Jason, finish all these moves from the head hold +#***************************************************************************** + +mode_headhold ;16 + +;Bozo power move + .ref bozo_check + calla bozo_check + jrnc #fail + + WRSND W_YOKO,GRABFLING_T1,GRABFLING_T2 + + movi yok_vsuplex_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi yok_scissor_anim,a0 +#tag calla change_anim1a + + rets + +#fail + move *a13(WHOIHIT),a0,L + move *a0(PLYRMODE),a0 + cmpi MODE_HEADHELD,a0 + jrnz #exit + +; move *a13(ATTACH_PROC),a10,L +; jrz #exit + + move *a13(ANIMODE),a0 + btst MODE_UNINT_BIT,a0 + jrnz #no_interrupt + + move *a13(BUT_VAL_DOWN),a0 + andi 011111b,a0 + X32 a0 + addi #action_table,a0 + move *a0,a0,L + call a0 + +#no_interrupt + rets + +#exit + move *a13(OBJ_ZPOS),a14,L + subi [6,0],a14 + move a14,*a13(OBJ_ZPOS),L + + movk MOVE_DOWN_RIGHT,a1 + move *a13(OBJ_CONTROL),a0 + btst B_FLIPH,a0 + jrz #right + movk MOVE_DOWN_LEFT,a1 +#right move a1,*a13(FACING_DIR) + move a1,*a13(NEW_FACING_DIR) + + SETMODE NORMAL + + rets + +#action_table + .long #z,#punch,#block,#block ;0-3 + .long #super_punch,#super_punch,#block,#block ;4-7 + .long #kick,#punchkick,#block,#block ;8-11 + .long #super_punch,#punchkick,#block,#block ;12-15 + .long #super_kick,#super_kick,#block,#block ;16-19 + .long #graboh,#graboh,#block,#block ;20-23 + .long #super_kick,#punchkick,#block,#block ;24-27 + .long #graboh,#graboh,#block,#block ;28-31 + +************ +#block +#graboh +#z ;0 + rets + +************ + +#punch ;1 +;If stick is toward opponent, then do quick punches + CALLA FIND_AND_KILL_ENDLESS + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #tag2 +; movi dnk_uppercuts_to_head_anim,a0 + .ref yok_4_knee2_anim + movi yok_4_knee2_anim,a0 + calla change_anim1a + + WRSND W_YOKO,KICK_T1,KICK_T2 + + rets + + +#tag2 +; movi dnk_uppercut_to_head_anim,a0 + movi yok_4_knee2_anim,a0 + calla change_anim1a + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +************ +#super_punch ;4 + +#upper + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #z + + CALLA FIND_AND_KILL_ENDLESS + + SPCDMG D_UPRCUT/2,15 + + movi yok_4_uppercut_anim,a0 + calla change_anim1a + WRSND W_YOKO,UPRCUT_T1,UPRCUT_T2 + rets + +#punchkick +#kick + CALLA FIND_AND_KILL_ENDLESS + move *a13(STICK_VAL_CUR),a0 + btst PLAYER_DOWN_BIT,a0 + jrz #knee + +; movi dnk_3_head_slam_anim,a0 + movi yok_4_knee2_anim,a0 + calla change_anim1a + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +#knee +std_4_knee + movi yok_4_knee2_anim,a0 + calla change_anim1a + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + +#super_kick ;16 + CALLA FIND_AND_KILL_ENDLESS +;If stick is toward opponent, then do quick knees + move *a13(STICK_VAL_CUR),a0 + move *a13(NEW_FACING_DIR),a1 + andi 0ch,a1 + cmp a0,a1 + jrnz #kick + +;Quick knees +; movi dnk_3_knees_to_head_anim,a0 + movi yok_4_knee2_anim,a0 + calla change_anim1a + WRSND W_YOKO,KICK_T1,KICK_T2 + rets + + +#***************************************************************************** +mode_puppet2 ;17 + +; ;check for the head-grab breaker +; move *a13(BUT_VAL_DOWN),a0 +; btst PLAYER_KICK_BIT,a0 +; jrz #out +; +; ;check the time - must do it within 20 ticks +; move *a13(HEAD_GRAB_TIME),a14 +; move @PCNT,a0 +; sub a14,a0 +; cmpi KICK_OUT,a0 +; jrgt #out +; +; move *a13(PLYR_TYPE),a14 +; cmpi PTYPE_DRONE,a14 +; jrz #out +; +; ;okay, waste 'im. - detach, setmode, immobilize, and launch the knee +; move *a13(ATTACH_PROC),a0,L +; clr a14 +; move a14,*a13(ATTACH_PROC),L +; move a14,*a0(ATTACH_PROC),L +; movi 15,a14 +; move a14,*a0(IMMOBILIZE_TIME) +; SETMODE NORMAL +; jruc std_4_knee +; +;#out + rets + +#***************************************************************************** + +mode_headheld ;19 + + move *a13(ANIMODE),a0 + btst MODE_NOGRAVITY_BIT,a0 + janz mode_choking + +;Bozo reversal + calla bozo_check + jrnc #fail + + PUSH a8 + move a13,a8 + CALLA DO_REVERSAL + CALLA DO_REVERSAL_MESS + PULL a8 + + WRSND W_YOKO,GRABFLING_T1,GRABFLING_T2 + + movi yok_vsuplex_anim,a0 + move @PCNT,a14 + btst 0,a14 + jrz #tag + movi yok_scissor_anim,a0 +#tag calla change_anim1a + + rets +#fail + +;He may have let me go by hitting his block butn! + move *a13(ATTACH_PROC),a0,L + jrnz #no_luck + +;Make sure this guy is on ground + move *a13(OBJ_YPOSINT),a0 + move *a13(GROUND_Y),a1 + cmp a1,a0 ;a0-a1 + jrgt #no_luck + +;hit_gnd + + movi yok_3_head_held_stand_anim,a0 + calla change_anim1a + +#no_luck + rets + +#***************************************************************************** +mode_chokehold ;24 + rets + +#***************************************************************************** + +;#VEL equ 30000h ;38000h ;30000h +;#DVEL equ 21f0eh ;27978h ;21f0eh +;#VEL equ 38000h ;38000h ;30000h +;#DVEL equ 30000h ;27978h ;21f0eh +#VEL equ 3a000h ;38000h ;30000h +#DVEL equ 31000h ;27978h ;21f0eh + + + SUBR yok_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 yok_rotate_anims_table +; old = up right + .long yok_stand2_anim ;new = up right + .long yok_2_to_4_turn_anim ; = down right + .long yok_2_to_6_turn_anim ; = down left + .long yok_2_to_8_turn_anim ; = up left + +; old = down right + .long yok_4_to_2_turn_anim ;new = up right + .long yok_stand4_anim ; = down right + .long yok_4_to_6_turn_anim ; = down left + .long yok_4_to_8_turn_anim ; = up left + +; old = down left + .long yok_6_to_2_turn_anim ;new = up right + .long yok_6_to_4_turn_anim ; = down right + .long yok_stand6_anim ; = down left + .long yok_6_to_8_turn_anim ; = up left + +; old = up left + .long yok_8_to_2_turn_anim ;new = up right + .long yok_8_to_4_turn_anim ; = down right + .long yok_8_to_6_turn_anim ; = down left + .long yok_stand8_anim ; = up left + + + SUBR yok_leg_anims_table +; MOVE +;(#1 - UP) FACING + .long yok_walk1_f2_anim ;1 (UP) + .long yok_walk1_f2_anim ;2 (UP_RIGHT) + .long yok_walk1_f4_anim ;3 (RIGHT) + .long yok_walk1_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk1_f4_anim ;5 (DOWN) + .long yok_walk1_f4_anim ;6 (DOWN_LEFT) + .long yok_walk1_f2_anim ;7 (LEFT) + .long yok_walk1_f2_anim ;8 (UP-LEFT) + +;(#2 - UP-RIGHT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk2_f2_anim ;2 (UP_RIGHT) + .long yok_walk2_f2_anim ;3 (RIGHT) + .long yok_walk2_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk8_f4_anim ;5 (DOWN) + .long yok_walk8_f4_anim ;6 (DOWN_LEFT) + .long yok_walk4_f2_anim ;7 (LEFT) + .long yok_walk4_f2_anim ;8 (UP-LEFT) + +;(#3 - RIGHT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk2_f2_anim ;2 (UP_RIGHT) + .long yok_walk2_f2_anim ;3 (RIGHT) + .long yok_walk4_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk4_f4_anim ;5 (DOWN) + .long yok_walk8_f4_anim ;6 (DOWN_LEFT) + .long yok_walk6_f2_anim ;7 (LEFT) + .long yok_walk6_f2_anim ;8 (UP-LEFT) + + +;(#4 - DOWN-RIGHT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk8_f2_anim ;2 (UP_RIGHT) + .long yok_walk4_f4_anim ;3 (RIGHT) + .long yok_walk4_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk2_f4_anim ;5 (DOWN) + .long yok_walk6_f4_anim ;6 (DOWN_LEFT) + .long yok_walk2_f2_anim ;7 (LEFT) + .long yok_walk6_f2_anim ;8 (UP-LEFT) + +;(#5 - DOWN) + .long yok_walk5_f2_anim ;1 (UP) + .long yok_walk5_f2_anim ;2 (UP_RIGHT) + .long yok_walk5_f4_anim ;3 (RIGHT) + .long yok_walk5_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk5_f4_anim ;5 (DOWN) + .long yok_walk5_f4_anim ;6 (DOWN_LEFT) + .long yok_walk5_f2_anim ;7 (LEFT) + .long yok_walk5_f2_anim ;8 (UP-LEFT) + +;(#6 - DOWN-LEFT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk6_f2_anim ;2 (UP_RIGHT) + .long yok_walk2_f2_anim ;3 (RIGHT) + .long yok_walk6_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk2_f4_anim ;5 (DOWN) + .long yok_walk4_f4_anim ;6 (DOWN_LEFT) + .long yok_walk2_f2_anim ;7 (LEFT) + .long yok_walk8_f2_anim ;8 (UP-LEFT) + +;(#7 - LEFT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk6_f2_anim ;2 (UP_RIGHT) + .long yok_walk6_f2_anim ;3 (RIGHT) + .long yok_walk8_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk4_f4_anim ;5 (DOWN) + .long yok_walk4_f4_anim ;6 (DOWN_LEFT) + .long yok_walk2_f2_anim ;7 (LEFT) + .long yok_walk2_f2_anim ;8 (UP-LEFT) + +;(#8 - UP-LEFT) + .long yok_walk2_f2_anim ;1 (UP) + .long yok_walk4_f2_anim ;2 (UP_RIGHT) + .long yok_walk6_f2_anim ;3 (RIGHT) + .long yok_walk8_f4_anim ;4 (DOWN_RIGHT) + .long yok_walk6_f4_anim ;5 (DOWN) + .long yok_walk2_f4_anim ;6 (DOWN_LEFT) + .long yok_walk2_f2_anim ;7 (LEFT) + .long yok_walk2_f2_anim ;8 (UP-LEFT) + + + SUBR yok_torso_anims_table +; old = up right + .long yok_torso2_anim ;new = up right + .long yok_2_to_4_turn2_anim ; = down right + .long yok_2_to_6_turn2_anim ; = down left + .long yok_2_to_8_turn2_anim ; = up left + +; old = down right + .long yok_4_to_2_turn2_anim ;new = up right + .long yok_torso4_anim ; = down right + .long yok_4_to_6_turn2_anim ; = down left + .long yok_4_to_8_turn2_anim ; = up left + +; old = down left + .long yok_6_to_2_turn2_anim ;new = up right + .long yok_6_to_4_turn2_anim ; = down right + .long yok_torso6_anim ; = down left + .long yok_6_to_8_turn2_anim ; = up left + +; old = up left + .long yok_8_to_2_turn2_anim ;new = up right + .long yok_8_to_4_turn2_anim ; = down right + .long yok_8_to_6_turn2_anim ; = down left + .long yok_torso8_anim ; = up left + + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/YOKO.BAT b/YOKO.BAT new file mode 100755 index 0000000..884942e --- /dev/null +++ b/YOKO.BAT @@ -0,0 +1,7 @@ +@echo off +@wwfld yoko yok_hit yok_kik yok_msc yok_pnc yok_wlk yok_mjt yok_jms yok_jake +@copy yoko.ld1 + yoko.ld2 yoko.lod +@move yoko.h ..\yokoimg.h +@move yoko.seq .. + + \ No newline at end of file diff --git a/YOKOIMG.ASM b/YOKOIMG.ASM new file mode 100755 index 0000000..6aff089 --- /dev/null +++ b/YOKOIMG.ASM @@ -0,0 +1,19 @@ + .FILE "yokoimg.asm" + .OPTION B,D,L,T + + .include imgtbl.glo + .DATA + .even + + .include yokoimg.tbl + .include yokoimg.h + +****************************************************************************** + + .even + .include "yoko.seq" + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/YOKOIMG.H b/YOKOIMG.H new file mode 100755 index 0000000..ed49b6c --- /dev/null +++ b/YOKOIMG.H @@ -0,0 +1,94 @@ + .global Y4AH4A + .global Y2AH2A + .global Y4AE4A + .global Y2AM2C + .global Y4AM4A + .global Y4BK3A + .global Y4PB3A + .global Y3CP3B + .global Y3FD3A + .global Y3GU2A + .global Y3GU4A + .global Y4KM3A + .global Y2KM3A + .global Y4NM3B + .global Y2NM3A + .global Y2KB3A + .global Y4KB3A + .global Y4GF3B + .global Y4TI4C + .global Y3BF3A + .global Y3RL1A + .global Y3MF3B + .global Y3LB3A + .global Y4PU4G + .global Y4JB3A + .global Y4PS3B + .global Y4PU4B + .global Y2PU2A + .global Y4UP3B + .global Y4PS3A + .global Y4WL4B + .global Y4WL2C + .global Y4WL5A + .global Y2WL1A + .global Y2WL2Z + .global Y2WL8C + .global Y1TT5Z + .global Y2ST2Z + .global Y4ST4Y + .global Y3BO3C + .global Y1TR5Z + .global Y4TW4X + .global Y2TW2X + .global Y3ZS3A + .global Y4SU4A + .global Y4SU4B + .global Y3JK3Z + .global Y3AB3A + .global Y4RP3A + .global Y4POGO + .global Y4GH3C + .global Y3PF3C + .global Y5GU4B + .global Y5GU4V + .global Y5RV5A + .global Y3BR3Z + .global Y3PP3Q + .global Y3FD3N + .global Y3FL3W + .global Y3MS3Z + .global Y3KF3B + .global Y4LD4A + .global Y4CO4D + .global Y4WS4A + .global Y3RN3C + .global Y4YR3A + .global Y4BZ4A + .global Y4MP4A + .global Y2MP2A + .global Y2PF2A + .global Y3PF3A + .global Y3JK3A + .global Y2CT2Z + .global Y2ZZ2X + .global Y3RR3Z + .global Y4WA4A + .global Y4CS4A + .global Y4CR3B + .global Y4JD4A + .global Y4CD3A + .global Y4CD3Z + .global Y4HT3Z + .global Y3GS3A + .global Y5JS5A + .global Y5JS5F + .global Y4OT3A + .global Y4OT3F + .global Y3RS3A + .global Y4PO4X + .global Y4LZ3A + .global Y3FD3B + .global Y3FD3Z + .global Y3TN3Z + .global Y4PO4Z diff --git a/YOKOST.H b/YOKOST.H new file mode 100755 index 0000000..3606119 --- /dev/null +++ b/YOKOST.H @@ -0,0 +1,197 @@ +; +; Story lines for story 1 of yoko +; +; Compressed string "WITH CONQUEST COMES HONOR FOR" +yoko_story1_line1 + .byte 0b8h,05ah,0a7h,001h,009h,0bfh,0b2h,06dh + .byte 0d2h,075h,040h,0c2h,0aeh,049h,007h,029h + .byte 0fch,0c2h,073h,070h,0c2h,033h,000h + .even + +; Compressed string "YOKO. HE HAS ACCOMPLISHED HIS" +yoko_story1_line2 + .byte 03ah,0cch,0c2h,04fh,010h,0a4h,066h,090h + .byte 08ah,074h,020h,092h,024h,0ech,0c6h,0adh + .byte 04ah,0a7h,066h,019h,0a4h,02ah,00dh,000h + .even + +; Compressed string "MISSION TO DEFEAT THE GREATEST OF" +yoko_story1_line3 + .byte 0aeh,04ah,0d3h,02ah,0fch,006h,035h,01ch + .byte 094h,0e6h,069h,08ah,075h,050h,0a7h,066h + .byte 080h,0ceh,0a6h,058h,09bh,074h,01dh,0c0h + .byte 027h,000h + .even + +; Compressed string "THE WORLD'S WRESTLERS, AND TO" +yoko_story1_line4 + .byte 075h,06ah,006h,038h,03ch,0b7h,025h,042h + .byte 007h,0f8h,06ch,0d2h,075h,06bh,0ceh,074h + .byte 013h,088h,06fh,019h,0d4h,030h,000h + .even + +; Compressed string "PROVE THAT HIS SUMO STYLE OF" +yoko_story1_line5 + .byte 0f1h,00ch,0dfh,066h,050h,0a7h,062h,01dh + .byte 0a4h,02ah,01dh,0d0h,0b6h,00bh,007h,074h + .byte 0adh,0b7h,066h,000h,09fh,000h + .even + +; Compressed string "WRESTLING IS SUPERIOR TO ALL" +yoko_story1_line6 + .byte 0f8h,06ch,0d2h,075h,0abh,0beh,068h,0a0h + .byte 0d2h,001h,06dh,0c7h,0e6h,0ach,0c2h,073h + .byte 050h,0c3h,081h,0d8h,0b6h,000h + .even + +; Compressed string "OTHERS. BY STRIPPING THE UNITED" +yoko_story1_line7 + .byte 070h,09dh,09ah,033h,0fdh,004h,0c1h,0a8h + .byte 007h,074h,03dh,0abh,071h,0ach,0beh,068h + .byte 050h,0a7h,066h,060h,0bfh,06ah,06dh,096h + .byte 000h + .even + +; Compressed string "STATES OF ITS CHAMPIONSHIP BELT" +yoko_story1_line8 + .byte 074h,02dh,0d6h,026h,01dh,0c0h,067h,0a0h + .byte 0d6h,074h,040h,0a6h,0a2h,01bh,0abh,0f0h + .byte 04bh,0a7h,06ah,01ch,08ch,066h,05bh,003h + .even + +; Compressed string "AND ITS DIGNITY, YOKOZUNA WILL BE" +yoko_story1_line9 + .byte 0e2h,05bh,006h,06ah,04dh,007h,0a5h,08ah + .byte 0beh,06ah,0adh,037h,081h,00eh,0b3h,0f0h + .byte 06eh,0bfh,062h,080h,0abh,06dh,01bh,08ch + .byte 026h,000h + .even + +; Compressed string "REVERED AS ONE OF HIS COUNTRY'S" +yoko_story1_line10 + .byte 0b3h,079h,09bh,0b3h,059h,006h,022h,01dh + .byte 0c0h,0afh,019h,0c0h,067h,090h,0aah,074h + .byte 040h,0c2h,0f6h,05bh,0cfh,03ah,042h,003h + .even + +; Compressed string "GREATEST CHAMPIONS. THE" +yoko_story1_line11 + .byte 0e8h,06ch,08ah,0b5h,049h,0d7h,001h,099h + .byte 08ah,06eh,0ach,0c2h,02fh,0fdh,004h,041h + .byte 09dh,09ah,000h + .even + +; Compressed string "CONSEQUENCES OF THIS VICTORY WILL" +yoko_story1_line12 + .byte 024h,0fch,0d2h,0a6h,06ch,09bh,02fh,069h + .byte 0d2h,001h,07ch,006h,075h,0aah,0d2h,0c1h + .byte 0adh,092h,035h,03ch,0ebh,001h,0aeh,0b6h + .byte 02dh,000h + .even + +; Compressed string "NO DOUBT BE THE UNDOING OF" +yoko_story1_line13 + .byte 02fh,01ch,094h,0b0h,03dh,0d6h,0c1h,068h + .byte 006h,075h,06ah,006h,0f6h,05bh,0c2h,0eah + .byte 08bh,006h,0f0h,009h,000h + .even + +; Compressed string "AMERICAN CULTURE AS WE KNOW IT:" +yoko_story1_line14 + .byte 0a2h,06bh,0ceh,02ah,029h,0beh,001h,069h + .byte 0b7h,0b5h,03dh,09bh,081h,048h,007h,0b8h + .byte 019h,0b0h,02fh,08ch,007h,06ah,0bdh,001h + .even + +; Compressed string "THERE WILL BE YEARS OF ADVERSITY." +yoko_story1_line15 + .byte 075h,06ah,0ceh,066h,080h,0abh,06dh,01bh + .byte 08ch,066h,0a0h,09bh,0e2h,04ch,007h,0f0h + .byte 019h,088h,0e5h,06dh,0ceh,0b4h,05ah,0ebh + .byte 00fh,000h + .even + +; Compressed string "AMERICAN PRODUCTIVITY WILL" +yoko_story1_line16 + .byte 0a2h,06bh,0ceh,02ah,029h,0beh,041h,03ch + .byte 0c3h,0a5h,04dh,0d6h,0eah,0adh,0d6h,07ah + .byte 080h,0abh,06dh,00bh,000h + .even + +; Compressed string "DISINTEGRATE. INDUSTRIES WILL" +yoko_story1_line17 + .byte 0a5h,04ah,0abh,06fh,06dh,0a2h,0b3h,058h + .byte 09bh,04fh,0a0h,0beh,0a5h,04dh,0d7h,0b3h + .byte 06ah,0d2h,001h,0aeh,0b6h,02dh,000h + .even + +; Compressed string "COLLAPSE. THE PEOPLE WILL WALLOW" +yoko_story1_line18 + .byte 024h,0dch,0b6h,062h,04ch,09bh,04fh,050h + .byte 0a7h,066h,010h,09bh,070h,0dch,09ah,001h + .byte 0aeh,0b6h,06dh,080h,08bh,06dh,00bh,0e3h + .byte 000h + .even + +; Compressed string "IN MINDLESS DEPRAVITY, MERE" +yoko_story1_line19 + .byte 0eah,01bh,0b8h,0eah,05bh,0b6h,026h,04dh + .byte 007h,0a5h,019h,0cfh,0e2h,0adh,0d6h,07ah + .byte 013h,0b8h,0e6h,06ch,002h + .even + +; Compressed string "SHADOWS OF THEIR FORMER SELVES." +yoko_story1_line20 + .byte 074h,02ah,096h,030h,04eh,007h,0f0h,019h + .byte 0d4h,0a9h,0a9h,0ceh,0c1h,009h,0cfh,0aeh + .byte 039h,007h,0b4h,0d9h,0deh,026h,0fdh,000h + .even + +; Compressed string "OH, WELL. IT WAS BOUND TO HAPPEN" +yoko_story1_line21 + .byte 070h,0dah,004h,0b8h,0d9h,0b6h,04fh,010h + .byte 0a8h,075h,080h,08bh,074h,030h,0c2h,0f6h + .byte 05bh,006h,035h,01ch,0a4h,062h,01ch,09bh + .byte 02fh,000h + .even + +; Compressed string "EVENTUALLY ANYWAY." +yoko_story1_line22 + .byte 0e6h,06dh,0beh,0b5h,02dh,0b6h,0adh,01eh + .byte 088h,0afh,08eh,08bh,0fah,003h,000h + .even + +; +; Story line table for Story 1 of yoko +; +yoko_story_tbl1 + .long yoko_story1_line1 + .long yoko_story1_line2 + .long yoko_story1_line3 + .long yoko_story1_line4 + .long yoko_story1_line5 + .long yoko_story1_line6 + .long yoko_story1_line7 + .long yoko_story1_line8 + .long yoko_story1_line9 + .long yoko_story1_line10 + .long yoko_story1_line11 + .long yoko_story1_line12 + .long yoko_story1_line13 + .long yoko_story1_line14 + .long yoko_story1_line15 + .long yoko_story1_line16 + .long yoko_story1_line17 + .long yoko_story1_line18 + .long yoko_story1_line19 + .long yoko_story1_line20 + .long yoko_story1_line21 + .long yoko_story1_line22 + .long 0 + +; +; Table of stories for yoko +; +yoko_stories + .long yoko_story_tbl1 + diff --git a/YOKSEQ.ASM b/YOKSEQ.ASM new file mode 100755 index 0000000..30ad49a --- /dev/null +++ b/YOKSEQ.ASM @@ -0,0 +1,2 @@ +4 + \ No newline at end of file diff --git a/YOKSEQ1.ASM b/YOKSEQ1.ASM new file mode 100755 index 0000000..898a421 --- /dev/null +++ b/YOKSEQ1.ASM @@ -0,0 +1,703 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "yokseq1.asm" + .title "Yokozuna animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "doinkimg.h" ;temp!!! + .include "yokoimg.h" + + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref SMALL_RUN + .REF MAYBE_BOUNCE_ROPE + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* STANDS + + SUBR yok_zip_anim + WL 60*60,Y2ST2Z+FR1 + .word 0 ;<--?????? + .word ANI_END + + + SUBR yok_stand2_anim + SUBR yok_stand8_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 5,Y2ST2Z+FR4 + WL 5,Y2ST2Z+FR5 + WL 5,Y2ST2Z+FR6 + WL 5,Y2ST2Z+FR6 + WL 5,Y2ST2Z+FR5 + WL 5,Y2ST2Z+FR4 + WL 5,Y2ST2Z+FR3 + WL 5,Y2ST2Z+FR2 + WL 5,Y2ST2Z+FR2 + WL 5,Y2ST2Z+FR3 + + .word ANI_REPEAT + + + SUBR yok_stand4_anim + SUBR yok_stand6_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 5,Y4ST4Y+FR4 + WL 5,Y4ST4Y+FR5 + WL 5,Y4ST4Y+FR6 + WL 5,Y4ST4Y+FR6 + WL 5,Y4ST4Y+FR5 + WL 5,Y4ST4Y+FR4 + WL 5,Y4ST4Y+FR3 + WL 5,Y4ST4Y+FR2 + WL 5,Y4ST4Y+FR2 + WL 5,Y4ST4Y+FR3 + + .word ANI_REPEAT + + +#***************************************************************************** +* +* WALKING TORSOS + + SUBR yok_torso2_anim + SUBR yok_torso8_anim + + WL 4,Y2TW2X+FR1 + WL 4,Y2TW2X+FR2 + WL 4,Y2TW2X+FR3 + WL 4,Y2TW2X+FR4 + WL 4,Y2TW2X+FR3 + WL 4,Y2TW2X+FR2 + .word ANI_REPEAT + + + SUBR yok_torso4_anim + SUBR yok_torso6_anim + + WL 4,Y4TW4X+FR1 + WL 4,Y4TW4X+FR2 + WL 4,Y4TW4X+FR3 + WL 4,Y4TW4X+FR4 + WL 4,Y4TW4X+FR3 + WL 4,Y4TW4X+FR2 + .word ANI_REPEAT + +#***************************************************************************** + + SUBR yok_holdoh_anim + WL 999,Y4PO4Z+FR1 + .word ANI_REPEAT + + SUBR yok_stndholdoh_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 999,Y4PO4X+FR8 + .word ANI_REPEAT + +#***************************************************************************** +* +* WALKS FACING #2 + + SUBR yok_walk1_f2_anim + WL 3,Y2WL1A+FR1 +; WL 2,Y2WL1A+FR2 + WL 3,Y2WL1A+FR3 +; WL 2,Y2WL1A+FR4 + WL 3,Y2WL1A+FR5 +; WL 2,Y2WL1A+FR6 + WL 3,Y2WL1A+FR7 +; WL 2,Y2WL1A+FR8 + WL 3,Y2WL1A+FR9 +; WL 2,Y2WL1A+FR10 + WL 3,Y2WL1A+FR11 +; WL 2,Y2WL1A+FR12 + WL 3,Y2WL1A+FR13 +; WL 2,Y2WL1A+FR14 + WL 3,Y2WL1A+FR15 +; WL 2,Y2WL1A+FR16 + WL 3,Y2WL1A+FR17 +; WL 2,Y2WL1A+FR18 + WL 3,Y2WL1A+FR19 +; WL 2,Y2WL1A+FR20 + WL 3,Y2WL1A+FR21 +; WL 2,Y2WL1A+FR22 + .word ANI_REPEAT + + SUBR yok_walk2_f2_anim + WL 3,Y2WL2Z+FR1 +; WL 2,Y2WL2Z+FR2 + WL 3,Y2WL2Z+FR3 +; WL 2,Y2WL2Z+FR4 + WL 3,Y2WL2Z+FR5 +; WL 2,Y2WL2Z+FR6 + WL 3,Y2WL2Z+FR7 +; WL 2,Y2WL2Z+FR8 + WL 3,Y2WL2Z+FR9 +; WL 2,Y2WL2Z+FR10 + WL 3,Y2WL2Z+FR11 +; WL 2,Y2WL2Z+FR12 + WL 3,Y2WL2Z+FR13 +; WL 2,Y2WL2Z+FR14 + WL 3,Y2WL2Z+FR15 +; WL 2,Y2WL2Z+FR16 + WL 3,Y2WL2Z+FR17 +; WL 2,Y2WL2Z+FR18 + WL 3,Y2WL2Z+FR19 +; WL 2,Y2WL2Z+FR20 + .word ANI_REPEAT + + SUBR yok_walk4_f2_anim + WL 3,Y2WL8C+FR1 +; WL 2,Y2WL8C+FR2 + WL 3,Y2WL8C+FR3 +; WL 2,Y2WL8C+FR4 + WL 3,Y2WL8C+FR5 +; WL 2,Y2WL8C+FR6 + WL 3,Y2WL8C+FR7 +; WL 2,Y2WL8C+FR8 + WL 3,Y2WL8C+FR9 +; WL 2,Y2WL8C+FR10 + WL 3,Y2WL8C+FR11 +; WL 2,Y2WL8C+FR12 + WL 3,Y2WL8C+FR13 +; WL 2,Y2WL8C+FR14 + WL 3,Y2WL8C+FR15 +; WL 2,Y2WL8C+FR16 + WL 3,Y2WL8C+FR17 +; WL 2,Y2WL8C+FR18 + WL 3,Y2WL8C+FR19 +; WL 2,Y2WL8C+FR20 + WL 3,Y2WL8C+FR21 +; WL 2,Y2WL8C+FR22 + .word ANI_REPEAT + + SUBR yok_walk5_f2_anim +; WL 2,Y2WL1A+FR22 + WL 3,Y2WL1A+FR21 +; WL 2,Y2WL1A+FR20 + WL 3,Y2WL1A+FR19 +; WL 2,Y2WL1A+FR18 + WL 3,Y2WL1A+FR17 +; WL 2,Y2WL1A+FR16 + WL 3,Y2WL1A+FR15 +; WL 2,Y2WL1A+FR14 + WL 3,Y2WL1A+FR13 +; WL 2,Y2WL1A+FR12 + WL 3,Y2WL1A+FR11 +; WL 2,Y2WL1A+FR10 + WL 3,Y2WL1A+FR9 +; WL 2,Y2WL1A+FR8 + WL 3,Y2WL1A+FR7 +; WL 2,Y2WL1A+FR6 + WL 3,Y2WL1A+FR5 +; WL 2,Y2WL1A+FR4 + WL 3,Y2WL1A+FR3 +; WL 2,Y2WL1A+FR2 + WL 3,Y2WL1A+FR1 + .word ANI_REPEAT + + SUBR yok_walk6_f2_anim +; WL 2,Y2WL2Z+FR20 + WL 3,Y2WL2Z+FR19 +; WL 2,Y2WL2Z+FR18 + WL 3,Y2WL2Z+FR17 +; WL 2,Y2WL2Z+FR16 + WL 3,Y2WL2Z+FR15 +; WL 2,Y2WL2Z+FR14 + WL 3,Y2WL2Z+FR13 +; WL 2,Y2WL2Z+FR12 + WL 3,Y2WL2Z+FR11 +; WL 2,Y2WL2Z+FR10 + WL 3,Y2WL2Z+FR9 +; WL 2,Y2WL2Z+FR8 + WL 3,Y2WL2Z+FR7 +; WL 2,Y2WL2Z+FR6 + WL 3,Y2WL2Z+FR5 +; WL 2,Y2WL2Z+FR4 + WL 3,Y2WL2Z+FR3 +; WL 2,Y2WL2Z+FR2 + WL 3,Y2WL2Z+FR1 + .word ANI_REPEAT + + + SUBR yok_walk8_f2_anim +; WL 2,Y2WL8C+FR22 + WL 3,Y2WL8C+FR21 +; WL 2,Y2WL8C+FR20 + WL 3,Y2WL8C+FR19 +; WL 2,Y2WL8C+FR18 + WL 3,Y2WL8C+FR17 +; WL 2,Y2WL8C+FR16 + WL 3,Y2WL8C+FR15 +; WL 2,Y2WL8C+FR14 + WL 3,Y2WL8C+FR13 +; WL 2,Y2WL8C+FR12 + WL 3,Y2WL8C+FR11 +; WL 2,Y2WL8C+FR10 + WL 3,Y2WL8C+FR9 +; WL 2,Y2WL8C+FR8 + WL 3,Y2WL8C+FR7 +; WL 2,Y2WL8C+FR6 + WL 3,Y2WL8C+FR5 +; WL 2,Y2WL8C+FR4 + WL 3,Y2WL8C+FR3 +; WL 2,Y2WL8C+FR2 + WL 3,Y2WL8C+FR1 + .word ANI_REPEAT + + + +#***************************************************************************** +* +* WALKS FACING #4 + + SUBR yok_walk1_f4_anim +; WL 2,Y4WL5A+FR24 + WL 3,Y4WL5A+FR23 +; WL 2,Y4WL5A+FR22 + WL 3,Y4WL5A+FR21 +; WL 2,Y4WL5A+FR20 + WL 3,Y4WL5A+FR19 +; WL 2,Y4WL5A+FR18 + WL 3,Y4WL5A+FR17 +; WL 2,Y4WL5A+FR16 + WL 3,Y4WL5A+FR15 +; WL 2,Y4WL5A+FR14 + WL 3,Y4WL5A+FR13 +; WL 2,Y4WL5A+FR12 + WL 3,Y4WL5A+FR11 +; WL 2,Y4WL5A+FR10 + WL 3,Y4WL5A+FR9 +; WL 2,Y4WL5A+FR8 + WL 3,Y4WL5A+FR7 +; WL 2,Y4WL5A+FR6 + WL 3,Y4WL5A+FR5 +; WL 2,Y4WL5A+FR4 + WL 3,Y4WL5A+FR3 +; WL 2,Y4WL5A+FR2 + WL 3,Y4WL5A+FR1 + .word ANI_REPEAT + + SUBR yok_walk2_f4_anim + WL 3,Y4WL2C+FR1 +; WL 2,Y4WL2C+FR2 + WL 3,Y4WL2C+FR3 +; WL 2,Y4WL2C+FR4 + WL 3,Y4WL2C+FR5 +; WL 2,Y4WL2C+FR6 + WL 3,Y4WL2C+FR7 +; WL 2,Y4WL2C+FR8 + WL 3,Y4WL2C+FR9 +; WL 2,Y4WL2C+FR10 + WL 3,Y4WL2C+FR11 +; WL 2,Y4WL2C+FR12 + WL 3,Y4WL2C+FR13 +; WL 2,Y4WL2C+FR14 + WL 3,Y4WL2C+FR15 +; WL 2,Y4WL2C+FR16 + WL 3,Y4WL2C+FR17 +; WL 2,Y4WL2C+FR18 + WL 3,Y4WL2C+FR19 +; WL 2,Y4WL2C+FR20 + .word ANI_REPEAT + + SUBR yok_walk4_f4_anim + WL 3,Y4WL4B+FR1 +; WL 2,Y4WL4B+FR2 + WL 3,Y4WL4B+FR3 +; WL 2,Y4WL4B+FR4 + WL 3,Y4WL4B+FR5 +; WL 2,Y4WL4B+FR6 + WL 3,Y4WL4B+FR7 +; WL 2,Y4WL4B+FR8 + WL 3,Y4WL4B+FR9 +; WL 2,Y4WL4B+FR10 + WL 3,Y4WL4B+FR11 +; WL 2,Y4WL4B+FR12 + WL 3,Y4WL4B+FR13 +; WL 2,Y4WL4B+FR14 + WL 3,Y4WL4B+FR15 +; WL 2,Y4WL4B+FR16 + WL 3,Y4WL4B+FR17 +; WL 2,Y4WL4B+FR18 + WL 3,Y4WL4B+FR19 +; WL 2,Y4WL4B+FR20 + WL 3,Y4WL4B+FR21 +; WL 2,Y4WL4B+FR22 + WL 3,Y4WL4B+FR23 +; WL 2,Y4WL4B+FR24 + .word ANI_REPEAT + + SUBR yok_walk5_f4_anim + WL 3,Y4WL5A+FR1 +; WL 2,Y4WL5A+FR2 + WL 3,Y4WL5A+FR3 +; WL 2,Y4WL5A+FR4 + WL 3,Y4WL5A+FR5 +; WL 2,Y4WL5A+FR6 + WL 3,Y4WL5A+FR7 +; WL 2,Y4WL5A+FR8 + WL 3,Y4WL5A+FR9 +; WL 2,Y4WL5A+FR10 + WL 3,Y4WL5A+FR11 +; WL 2,Y4WL5A+FR12 + WL 3,Y4WL5A+FR13 +; WL 2,Y4WL5A+FR14 + WL 3,Y4WL5A+FR15 +; WL 2,Y4WL5A+FR16 + WL 3,Y4WL5A+FR17 +; WL 2,Y4WL5A+FR18 + WL 3,Y4WL5A+FR19 +; WL 2,Y4WL5A+FR20 + WL 3,Y4WL5A+FR21 +; WL 2,Y4WL5A+FR22 + WL 3,Y4WL5A+FR23 +; WL 2,Y4WL5A+FR24 + .word ANI_REPEAT + + SUBR yok_walk6_f4_anim +; WL 2,Y4WL2C+FR20 + WL 3,Y4WL2C+FR19 +; WL 2,Y4WL2C+FR18 + WL 3,Y4WL2C+FR17 +; WL 2,Y4WL2C+FR16 + WL 3,Y4WL2C+FR15 +; WL 2,Y4WL2C+FR14 + WL 3,Y4WL2C+FR13 +; WL 2,Y4WL2C+FR12 + WL 3,Y4WL2C+FR11 +; WL 2,Y4WL2C+FR10 + WL 3,Y4WL2C+FR9 +; WL 2,Y4WL2C+FR8 + WL 3,Y4WL2C+FR7 +; WL 2,Y4WL2C+FR6 + WL 3,Y4WL2C+FR5 +; WL 2,Y4WL2C+FR4 + WL 3,Y4WL2C+FR3 +; WL 2,Y4WL2C+FR2 + WL 3,Y4WL2C+FR1 + .word ANI_REPEAT + + SUBR yok_walk8_f4_anim +; WL 2,Y4WL4B+FR24 + WL 3,Y4WL4B+FR23 +; WL 2,Y4WL4B+FR22 + WL 3,Y4WL4B+FR21 +; WL 2,Y4WL4B+FR20 + WL 3,Y4WL4B+FR19 +; WL 2,Y4WL4B+FR18 + WL 3,Y4WL4B+FR17 +; WL 2,Y4WL4B+FR16 + WL 3,Y4WL4B+FR15 +; WL 2,Y4WL4B+FR14 + WL 3,Y4WL4B+FR13 +; WL 2,Y4WL4B+FR12 + WL 3,Y4WL4B+FR11 +; WL 2,Y4WL4B+FR10 + WL 3,Y4WL4B+FR9 +; WL 2,Y4WL4B+FR8 + WL 3,Y4WL4B+FR7 +; WL 2,Y4WL4B+FR6 + WL 3,Y4WL4B+FR5 +; WL 2,Y4WL4B+FR4 + WL 3,Y4WL4B+FR3 +; WL 2,Y4WL4B+FR2 + WL 3,Y4WL4B+FR1 + .word ANI_REPEAT + +#***************************************************************************** +* +* TURNS (STANDS) + + SUBR yok_2_to_4_turn_anim + SUBR yok_8_to_6_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR3 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_2_turn_anim + SUBR yok_6_to_8_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TT5Z+FR3 + WL 3,Y1TT5Z+FR2 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_6_turn_anim + SUBR yok_6_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TT5Z+FR4 + .word ANI_XFLIP + WL 3,Y1TT5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_2_to_8_turn_anim + SUBR yok_8_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TT5Z+FR1 + .word ANI_XFLIP + WL 3,Y1TT5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_8_turn_anim + SUBR yok_6_to_2_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TT5Z+FR3 + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR1 + .word ANI_XFLIP + WL 3,Y1TT5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_2_to_6_turn_anim + SUBR yok_8_to_4_turn_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR3 + WL 3,Y1TT5Z+FR4 + .word ANI_XFLIP + WL 3,Y1TT5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* TURNS (TORSOS) + + + SUBR yok_2_to_4_turn2_anim + SUBR yok_8_to_6_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TR5Z+FR4 + .word ANI_SETFACING + WL 3,Y1TR5Z+FR5 + WL 3,Y1TR5Z+FR6 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_2_turn2_anim + SUBR yok_6_to_8_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TR5Z+FR6 + .word ANI_SETFACING + WL 3,Y1TR5Z+FR5 + WL 3,Y1TR5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_6_turn2_anim + SUBR yok_6_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TR5Z+FR9 + .word ANI_SETFACING + WL 3,Y1TR5Z+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_2_to_8_turn2_anim + SUBR yok_8_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TR5Z+FR1 + .word ANI_SETFACING + WL 3,Y1TR5Z+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_to_8_turn2_anim + SUBR yok_6_to_2_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TR5Z+FR9 + .word ANI_SETFACING + WL 3,Y1TR5Z+FR9 + WL 3,Y1TR5Z+FR8 + WL 3,Y1TR5Z+FR6 + .word ANI_SETFACING + WL 3,Y1TR5Z+FR5 + WL 3,Y1TR5Z+FR4 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_2_to_6_turn2_anim + SUBR yok_8_to_4_turn2_anim + .word ANI_SETMODE,MODE_INTURN|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + WL 3,Y1TR5Z+FR4 + .word ANI_SETFACING + WL 3,Y1TR5Z+FR5 + WL 3,Y1TR5Z+FR6 + WL 3,Y1TR5Z+FR8 + WL 3,Y1TR5Z+FR9 + .word ANI_SETFACING + WL 3,Y1TR5Z+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* RUNNING IN #3 + +;Jason, put in the correct (more angled) bounce off of ropes for Yoko. +;Also, make run better! Longer strides? Shake screen? Animate slower? + + SUBR yok_run2_anim + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +;I'm turning on an attack box for the entire run sequence. +;I never turn it off. + + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + WL ANI_GOTO,#run2 + + SUBR yok_run_anim + + .word ANI_SETMODE,MODE_UNINT ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + +#lp1 + WL 3,Y3RN3C+FR1 + WL 3,Y3RN3C+FR2 + WL 3,Y3RN3C+FR3 + WL 3,Y3RN3C+FR4 + WL 3,Y3RN3C+FR5 + + WL ANI_CODE,SMALL_RUN + WL ANI_SET_YVEL,14000h + .word ANI_SHAKER,15 +#run2 + .word ANI_SETMODE,MODE_NORMAL ;clear UNINT bit + .word ANI_ATTACK_ON,AMODE_RUN,-3,29,18h,71 ;mode,x,y,w,h + WL 3,Y3RN3C+FR6 + WL 3,Y3RN3C+FR7 + WL 3,Y3RN3C+FR8 + WL 3,Y3RN3C+FR9 + WL 3,Y3RN3C+FR10 + WL 3,Y3RN3C+FR11 + + WL ANI_CODE,SMALL_RUN + WL ANI_SET_YVEL,14000h + .word ANI_SHAKER,15 + + WL 3,Y3RN3C+FR12 + WL ANI_GOTO,#lp1 + + +#***************************************************************************** +* +* BOUNCE OFF ROPES + + SUBR yok_bounce_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_OVERLAP|MODE_NOAUTOFLIP| MODE_NOCONFINE ;uninterruptable + + .ref fix_bnc_flip + WL ANI_CODE,fix_bnc_flip + WL ANI_CODE,MAYBE_BOUNCE_ROPE + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL 3,Y3BO3C+FR1 + + WL 2,Y3BO3C+FR2 + .word ANI_BOUNCEROPE,0 + WL ANI_CODE,SMALL_RUN + WL 1,Y3BO3C+FR2 + + .word ANI_SHAKER,10 + + WL 2,Y3BO3C+FR3 + .word ANI_BOUNCEROPE,1 + WL 1,Y3BO3C+FR3 + + WL 3,Y3BO3C+FR4 + .word ANI_BOUNCEROPE,2 + WL 1,Y3BO3C+FR4 + + .word ANI_ZEROVELS + + WL 4,Y3BO3C+FR5 + .word ANI_BOUNCEROPE,3 + WL 1,Y3BO3C+FR5 + WL 5,Y3BO3C+FR6 + .word ANI_BOUNCEROPE,4 + WL 1,Y3BO3C+FR6 + WL 3,Y3BO3C+FR7 + .word ANI_BOUNCEROPE,0 + WL 1,Y3BO3C+FR7 + WL 2,Y3BO3C+FR8 + .word ANI_BOUNCEROPE,-1 + .word ANI_SHAKER,10 + + WL ANI_CODE,SMALL_RUN + WL 1,Y3BO3C+FR8 + WL 3,Y3BO3C+FR9 + WL 3,Y3BO3C+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** + + SUBR yok_frnk_recover_anim + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + WL 4,Y1TT5Z+FR3 + WL ANI_CHANGEANIM,yok_stand4_anim + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/YOKSEQ2.ASM b/YOKSEQ2.ASM new file mode 100755 index 0000000..72b5c37 --- /dev/null +++ b/YOKSEQ2.ASM @@ -0,0 +1,3115 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "yokseq2.asm" + .title "Yokozuna animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "yokoimg.h" + .include "ring.equ" + + .include "display.equ" + .include "ring.equ" + .include "damage.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + + ;BAM BAM + .ref B3RN3A,B4YR3A + + ;DOINK + .ref D3RN3B,D4YR3B + + ;BRET + .ref H3RN3A,H4YR3A + + ;LEX + .ref L3RN3B,L4YR3B + + ;RAZOR + .ref R3RN3D,R4YR3A + + ;SHAWN + .ref S3RN3A,S4YR3A + + ;TAKER + .ref U3RN3A + + ;YOKO + .ref yok_faceup_getup2_anim + .ref U4YR3B + + ;MISC + .ref get_opp_process,start_run_anim,CALL_MISSES,start_run_flung + .ref SET_DIR_FACE,HIT_THE_MAT,no_bk_xvel,DO_GRUNT + .ref check_xvel,set_tbukl_confine + .ref set_tbukl_airmode + .ref DO_CROWD_CHEER,hit_nearest,face_inside,set_raisearm_bit + .ref check_raisearm_bit + .ref CALL_OTHER_AVERAGE,CALL_ANI_AVERAGE_MOVE + .ref DO_COMBO_MESS,yok_combo_salt_anim + .ref yok_combo_heldheadbutt_rpt_anim + .ref yok_combo_hiptoss_anim + .ref MOVE_NAME_ANNC + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* NORMAL #2 PUNCH + + SUBR yok_2_punch_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2PU2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2PU2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2PU2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + .word ANI_STARTATTACK,AT_PUNCH,9 + WL 2,Y2PU2A+FR2 + WL 2,Y2PU2A+FR3 + WL 2,Y2PU2A+FR4 + + .word ANI_ATTACK_ON,AMODE_FLYKICK,50,90,42,12 + WL 3,Y2PU2A+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 3,Y2PU2A+FR5 +#no_hit + + WL 2,Y2PU2A+FR6 + WL 3,Y2PU2A+FR7 + WL 2,Y2PU2A+FR8 + WL 3,Y2PU2A+FR9 + WL 2,Y2PU2A+FR10 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #4 PUNCH + + SUBR yok_4_punch_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4PU4B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4PU4B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4PU4B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + .word ANI_STARTATTACK,AT_PUNCH,9 + WL 2,Y4PU4B+FR2 + WL 2,Y4PU4B+FR3 + WL 2,Y4PU4B+FR4 + + .word ANI_ATTACK_ON,AMODE_FLYKICK,42,77,36,19 + WL 3,Y4PU4B+FR5 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 3,Y4PU4B+FR5 +#no_hit2 + WL 2,Y4PU4B+FR6 + WL 3,Y4PU4B+FR7 + WL 2,Y4PU4B+FR8 + WL 3,Y4PU4B+FR9 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 PUSH + + SUBR yok_4_push_anim + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_SETFLAG,M_PUSH + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUSH,9 + WL 3,Y4PS3A+FR3 + WL 3,Y4PS3A+FR4 + WL 3,Y4PS3A+FR5 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ATTACK_ON, AMODE_PUSH,36,86,45,16 + WL 3,Y4PS3A+FR6 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,40h,-70000h,#no_hit ;range,vel,addr + WL 15,Y4PS3A+FR6 +#no_hit + WL 3,Y4PS3A+FR6 + WL ANI_IFSTATUS,#hit +;If missed on push, hold a little longer + WL 5,Y4PS3A+FR6 +#hit + WL 3,Y4PS3A+FR5 + WL 3,Y4PS3A+FR4 + WL 3,Y4PS3A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #2 ELBOW DROP + +#yoff equ 37 + + SUBR yok_2_lbowdrop_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2PF2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2PF2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2PF2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_LBDROP,7 + WL 4,Y2PF2A+FR2 + WL 3,Y2PF2A+FR3 + + ;skip the leap if simply falling down will do. + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,4,4,-40,34,31,50 + WL 1,Y2PF2A+FR3 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#skip_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,160,140,90000h,TGT_USER,21,0+#yoff,-30 + WL ANI_GOTO,#do_leapat + +#skip_leapat +; WL ANI_SET_YVEL,30000h +#do_leapat + WL 4,Y2PF2A+FR4 + .word ANI_OFFSET,0,#yoff,0 + WL 4,Y2PF2A+FR5 + WL 4,Y2PF2A+FR6 + WL 4,Y2PF2A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + .word ANI_ATTACK_ON_Z, AMODE_LBOWDROP,0,0,-40,42,39,50 + WL 4,Y2PF2A+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#hit + + WL ANI_CODE,CALL_MISSES +#hit + .word ANI_DRAW_NAME,18 + WL 12,Y2PF2A+FR9 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#***************************************************************************** +* +* #4 ELBOW DROP + +#yoff equ 34 + + SUBR yok_4_lbowdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y3PF3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y3PF3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y3PF3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_LBDROP,7 + WL 4,Y3PF3A+FR3 + WL 3,Y3PF3A+FR4 + + ;skip the leap if it's not needed. + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,14,4,-10,32,30,50 + WL 1,Y3PF3A+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#skip_leapat + + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 20,999,160,140,90000h,TGT_USER,33,0+#yoff,30 + WL ANI_GOTO,#do_leapat + +#skip_leapat +; WL ANI_SET_YVEL,30000h +#do_leapat + .word ANI_OFFSET,0,#yoff,0 + WL 4,Y3PF3A+FR5 + WL 4,Y3PF3A+FR6 + WL 4,Y3PF3A+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + .word ANI_ATTACK_ON_Z,AMODE_LBOWDROP,10,0,-10,40,38,50 + WL 4,Y3PF3A+FR8 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#hit + + WL ANI_CODE,CALL_MISSES +#hit + .word ANI_DRAW_NAME,18 + WL 12,Y3PF3A+FR9 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#***************************************************************************** +* +* COMBO KICK + + SUBR yok_combo_kick_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .WORD ANI_CLEAR_COMBO + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,Y2KM3A+FR1 + WL 1,Y4KM3A+FR2 + .word ANI_STARTATTACK,AT_KICK,6 + WL 1,Y4KM3A+FR2 + WL 2,Y4KM3A+FR3 + WL 2,Y4KM3A+FR4 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,30000h + + .word ANI_INC_COMBO + .word ANI_ATTACK_ON, AMODE_KICK,35,62,56,34 + WL 1,Y4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit_2 + WL ANI_IFBLOCKED,#no_hit_2 + .word ANI_INC_COMBO + WLLL ANI_SETOPPVELS,000H,10000h,0h ;x,y,z vels + WL 7,Y4KM3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + + WL 2,Y4KM3A+FR6 + WL 2,Y4KM3A+FR7 + WL 2,Y4KM3A+FR8 + WL 2,Y4KM3A+FR9 + WL 2,Y2KM3A+FR10 + WL 2,Y2KM3A+FR11 + + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times +#kick_loop + .word ANI_CLR_BUTCOUNT + + WL 1,Y2KM3A+FR1 + WL 1,Y4KM3A+FR2 + .word ANI_STARTATTACK,AT_KICK,6 + WL 1,Y4KM3A+FR2 + WL 1,Y4KM3A+FR3 + WL 1,Y4KM3A+FR4 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,10000h + + .word ANI_ATTACK_ON, AMODE_KICK,35,62,56,34 + WL 1,Y4KM3A+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_hit_2 + WL ANI_IFBLOCKED,#no_hit_2 +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,000H,10000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO + WL 2,Y4KM3A+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + + WL 1,Y4KM3A+FR5 + WL 1,Y4KM3A+FR6 + WL 1,Y4KM3A+FR7 + WL 1,Y4KM3A+FR8 + WL 1,Y4KM3A+FR9 + WL 1,Y2KM3A+FR10 + WL 1,Y2KM3A+FR11 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#kick_loop + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_KNEE + WL ANI_CHANGEANIM,yok_combo_knee_anim +#NO_KNEE + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NO_UPPER + WL ANI_CHANGEANIM,yok_combo_uppercut_anim +#NO_UPPER + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NO_HEADBUTT + WL ANI_CHANGEANIM,yok_combo_heldheadbutt_rpt_anim +#NO_HEADBUTT + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#no_hit_2 + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL 2,Y4KM3A+FR5 + WL 2,Y4KM3A+FR6 + WL 2,Y4KM3A+FR7 + WL 2,Y4KM3A+FR8 + WL 2,Y4KM3A+FR9 + WL 2,Y4KM3A+FR10 + WL 2,Y4KM3A+FR11 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* NORMAL #2 KICK + + SUBR yok_2_kick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + .word ANI_STARTATTACK,AT_KICK,6 + WL 1,Y4KM3A+FR2 + WL 2,Y4KM3A+FR3 + WL 2,Y4KM3A+FR4 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,30000h + + .word ANI_ATTACK_ON, AMODE_KICK,35,62,56,34 + WL 2,Y4KM3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 3,Y4KM3A+FR5 +#no_hit + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + + WL 2,Y4KM3A+FR5 + WL 2,Y4KM3A+FR6 + WL 2,Y4KM3A+FR7 + WL 2,Y4KM3A+FR8 + WL 2,Y4KM3A+FR9 + WL 2,Y2KM3A+FR10 + WL 2,Y2KM3A+FR11 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* NORMAL #4 KICK + + SUBR yok_4_kick_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4KM3A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4KM3A+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + .word ANI_STARTATTACK,AT_KICK,6 + WL 1,Y4KM3A+FR2 + WL 2,Y4KM3A+FR3 + WL 2,Y4KM3A+FR4 + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + WL ANI_SET_YVEL,30000h + + .word ANI_ATTACK_ON, AMODE_KICK,35,62,56,34 + WL 2,Y4KM3A+FR5 + .word ANI_ATTACK_OFF + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,30000h + WL 3,Y4KM3A+FR5 + +#no_hit + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_SHAKER,20 + .word ANI_SHAKEALL,1 + WL 2,Y4KM3A+FR5 + WL 2,Y4KM3A+FR6 + WL 2,Y4KM3A+FR7 + WL 2,Y4KM3A+FR8 + WL 2,Y4KM3A+FR9 + WL 2,Y4KM3A+FR10 + WL 2,Y4KM3A+FR11 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 STOMP ON FALLEN OPPONENT + + SUBR yok_2_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y2MP2A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_STOMP,3 + WL 2,Y2MP2A+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,4,-5,-40,38,43,50 + WL 1,Y2MP2A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL 2,Y2MP2A+FR3 + WL 3,Y2MP2A+FR4 + WL 2,Y2MP2A+FR5 + WL 3,Y2MP2A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,4,-5,-40,38,43,50 + WL 3,Y2MP2A+FR7 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL 3,Y2MP2A+FR8 + WL 3,Y2MP2A+FR9 + WL 3,Y2MP2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,160,140,90000h,TGT_USER,21,0,-40 + + .word ANI_STARTATTACK,AT_STOMP,15 + WL 3,Y2MP2A+FR3 + WL 3,Y2MP2A+FR4 + WL 3,Y2MP2A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WL 3,Y2MP2A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,4,-5,-40,38,43,50 + WL 3,Y2MP2A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 3,Y2MP2A+FR8 + WL 3,Y2MP2A+FR9 + WL 3,Y2MP2A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#***************************************************************************** +* +* #4 STOMP ON FALLEN OPPONENT + + SUBR yok_4_stomp_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4MP4A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4MP4A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4MP4A+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_STOMP,3 + WL 2,Y4MP4A+FR2 + + ;if we're going to miss, do a leapat + .word ANI_ATTACK_ON_Z,AMODE_HITCHECK,15,-7,-10,40,36,50 + WL 1,Y4MP4A+FR2 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#leapat_stomp + + WL 2,Y4MP4A+FR3 + WL 3,Y4MP4A+FR4 + WL 2,Y4MP4A+FR5 + WL 3,Y4MP4A+FR6 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,15,-7,-10,40,36,50 + WL 3,Y4MP4A+FR7 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFSTATUS,#hit + WL ANI_CODE,CALL_MISSES +#hit + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL 3,Y4MP4A+FR8 + WL 3,Y4MP4A+FR9 + WL 3,Y4MP4A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#leapat_stomp + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ;too far. leap at the chest. + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 16,999,160,140,90000h,TGT_USER,33,0,40 + + .word ANI_STARTATTACK,AT_STOMP,16 + WL 3,Y4MP4A+FR3 + WL 3,Y4MP4A+FR4 + WL 3,Y4MP4A+FR5 + WL 3,Y4MP4A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,15,-7,-10,40,36,50 + WL 3,Y4MP4A+FR7 + .word ANI_ATTACK_OFF + WL ANI_IFSTATUS,#leapat_hit + WL ANI_CODE,CALL_MISSES +#leapat_hit + WL 3,Y4MP4A+FR8 + WL 3,Y4MP4A+FR9 + WL 3,Y4MP4A+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #3 FLYING BUTT-DROP (ouch) + +#yoff equ 65 +****************************** + SUBR yok_combo_butt_drop_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + WL 2,Y3JK3A+FR1 + WL 2,Y3JK3A+FR2 + WL 2,Y3JK3A+FR3 + + ;take off + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,999,112,96,90000h,TGT_USER,0,0+#yoff,-10 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_STOMP,30 + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL 4,Y3JK3A+FR4 + .word ANI_OFFSET,0,#yoff,0 + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-22,-10-10,-30,54,36,50 + WWL ANI_WAITHITOPP,30,Y3JK3A+FR5 + .word ANI_ATTACK_OFF + + .word ANI_ZEROVELS + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WL ANI_CODE,HIT_THE_MAT + + WL ANI_IFNOTSTATUS,#missc + + ;bounce off the guy + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,1C000h,AM_ABS + + ;this part should take around 12 ticks + WL 4,Y3JK3A+FR6 + WL 1,Y3JK3A+FR5 + .word ANI_WAITHITGND + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,1 + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 4,Y3JK3A+FR6 + WL 4,Y3JK3A+FR7 + WL 4,Y3JK3A+FR8 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#missc + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + WL 16,Y3JK3A+FR6 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 4,Y3JK3A+FR7 + WL 4,Y3JK3A+FR8 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +****************************** + + SUBR yok_3_butt_drop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WL 2,Y3JK3A+FR1 + WL 2,Y3JK3A+FR2 + WL 2,Y3JK3A+FR3 + + ;take off + .word ANI_TARGET,TGT_CHEST,TGT_CHEST,ATM_CLOSEST + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,999,112,96,90000h,TGT_USER,0,0+#yoff,-10 + WL ANI_CODE,no_bk_xvel + .word ANI_STARTATTACK,AT_LEAPING,30 + + .word ANI_SETPLYRMODE,MODE_INAIR + + WL 4,Y3JK3A+FR4 + .word ANI_OFFSET,0,#yoff,0 + .word ANI_ATTACK_ON_Z,AMODE_BUTTSTOMP,-22,-10-10,-30,54,36,50 + WWL ANI_WAITHITOPP,30,Y3JK3A+FR5 + .word ANI_ATTACK_OFF + + .word ANI_ZEROVELS + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,2 + WL ANI_CODE,HIT_THE_MAT + + .WORD ANI_ADD_MOVE,MOVE_C_4,2,2 + WL ANI_IFNOTSTATUS,#miss + +#hit + WL ANI_CODE,create_bucket_salt + WWL ANI_SETLONG,DEBRIS_X,[2,1] ;Y,X of head + + WL ANI_CODE,CALL_OTHER_AVERAGE + ;bounce off the guy + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,1C000h,AM_ABS + + ;this part should take around 12 ticks + WL 4,Y3JK3A+FR6 + WWL ANI_SETLONG,DEBRIS_X,[2,8] ;Y,X of head + WL 1,Y3JK3A+FR5 + .word ANI_WAITHITGND + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + .word ANI_SHAKER,40 + .word ANI_SHAKEALL,1 + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 3,Y3JK3A+FR6 + WL 3,Y3JK3A+FR7 + WL 3,Y3JK3A+FR8 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#miss + WL ANI_CODE,CALL_MISSES + + WL ANI_SET_YVEL,40000h + + .word ANI_SHAKER,30 + .word ANI_SHAKEALL,1 + WL ANI_CODE,SMALL_BOUNCE + + WL 4,Y3JK3A+FR6 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + WL 6,Y3JK3A+FR6 + WL 3,Y3JK3A+FR7 + WL 3,Y3JK3A+FR8 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#***************************************************************************** +* +* #2 KNEE + + SUBR yok_2_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4NM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4NM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4NM3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + + .word ANI_STARTATTACK,AT_KNEE,6 + WL 1,Y4NM3B+FR2 + WL 2,Y4NM3B+FR3 + .word ANI_ATTACK_ON, AMODE_KNEE,34,58,26,32 + WL 3,Y4NM3B+FR4 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,10000h,AM_ABS + WL 3,Y4NM3B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,Y4NM3B+FR5 + WL 3,Y4NM3B+FR6 + WL 3,Y2NM3A+FR7 + + WL 3,Y2NM3A+FR8 + WL 3,Y2NM3A+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#no_hit + + WL 4,Y4NM3B+FR4 + WL 3,Y4NM3B+FR5 + WL 3,Y4NM3B+FR6 + WL 3,Y2NM3A+FR7 + + WL 3,Y2NM3A+FR8 + WL 3,Y2NM3A+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 KNEE +********************************************************************* + SUBR yok_combo_knee_anim +;Can also be down from head hold! + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 3,Y4NM3B+FR1 + .word ANI_STARTATTACK,AT_KNEE,6 + WL 3,Y4NM3B+FR2 + WL 3,Y4NM3B+FR3 + .word ANI_ATTACK_ON, AMODE_KNEE,34,28,66,52 + WL 3,Y4NM3B+FR4 + .word ANI_ATTACK_OFF + .WORD ANI_INC_COMBO + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit3c + .WORD ANI_INC_COMBO + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,-4000h,AM_ABS + WL 3,Y4NM3B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 3,Y4NM3B+FR5 + WL 3,Y4NM3B+FR6 + WL 3,Y4NM3B+FR7 + WL 3,Y4NM3B+FR8 + WL 3,Y4NM3B+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#no_hit3c + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 6,Y4NM3B+FR4 + WL 3,Y4NM3B+FR5 + WL 3,Y4NM3B+FR6 + WL 3,Y4NM3B+FR7 + WL 3,Y4NM3B+FR8 + WL 3,Y4NM3B+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +********************************************************************* + + SUBR yok_4_knee2_anim +;Done from head hold! + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 1,Y4NM3B+FR1 + WL ANI_GOTO,#tag + + SUBR yok_4_knee_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4NM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4NM3B+FR1 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim + WL 1,Y4NM3B+FR2 + WWL ANI_IFBUTTONS,PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,start_run_anim +#tag + .word ANI_STARTATTACK,AT_KNEE,6 + WL 1,Y4NM3B+FR2 + WL 2,Y4NM3B+FR3 + .word ANI_ATTACK_ON, AMODE_KNEE,34,58,26,32 + WL 3,Y4NM3B+FR4 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_3,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_SHAKER,30 + +#missedb +#missed + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit3 + WL ANI_SET_YVEL,60000h + WLW ANI_SET_ZVEL,-4000h,AM_ABS + WL 3,Y4NM3B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,Y4NM3B+FR5 + WL 3,Y4NM3B+FR6 + WL 3,Y4NM3B+FR7 + WL 3,Y4NM3B+FR8 + WL 3,Y4NM3B+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +#no_hit3 + + WL 4,Y4NM3B+FR4 + WL 3,Y4NM3B+FR5 + WL 3,Y4NM3B+FR6 + WL 3,Y4NM3B+FR7 + WL 3,Y4NM3B+FR8 + WL 3,Y4NM3B+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #2 SUPER KARATE KICK + + SUBR yok_2_superkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,Y1TT5Z+FR2 + +* #4 SUPER KARATE KICK + + SUBR yok_4_superkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,10 + WL 3,Y4KB3A+FR3 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,999,55,45,90000h,TGT_HEAD,64,82,10 + WL ANI_SET_YVEL,40000h + .word ANI_FRICTION,4000h + WL 4,Y4KB3A+FR4 + WL 4,Y4KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_SUPER_KICK,20,45,62,40 ;mode,x,y,w,h + WL 4,Y4KB3A+FR6 + WLW ANI_SET_ZVEL,0h,AM_ABS + WL 4,Y4KB3A+FR6 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_7,2,2 + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_SHAKER,30 + +;hit +; WL ANI_CODE,create_impact2 + + .word ANI_ZEROVELS + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,30000h + WL 7,Y4KB3A+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + +#no_hit2 + .word ANI_WAITHITGND + .word ANI_SHAKER,20 + + WL ANI_CODE,skick_delay + WL ANI_IFNOTSTATUS,#none0 + WL 15,Y4KB3A+FR6 +#none0 + + WL 3,Y4KB3A+FR7 + WL 3,Y4KB3A+FR8 + WL 3,Y4KB3A+FR9 + WL 3,Y4KB3A+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed +#missedb + + WL ANI_CODE,CALL_MISSES + WL 3,Y4KB3A+FR6 + .word ANI_WAITHITGND + + .ref skick_delay + WL ANI_CODE,skick_delay + WL ANI_IFNOTSTATUS,#none + WL 15,Y4KB3A+FR6 +#none + + WL 3,Y4KB3A+FR7 + WL 3,Y4KB3A+FR8 + WL 3,Y4KB3A+FR9 + WL 3,Y4KB3A+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_combo_superkick_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,10 + WL 3,Y4KB3A+FR3 + + WL 3,Y4KB3A+FR4 + WL 4,Y4KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,20,35,72,50 ;mode,x,y,w,h + WL 2,Y4KB3A+FR6 + WLW ANI_SET_ZVEL,0h,AM_ABS + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,000H,10000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO + WL 4,Y4KB3A+FR6 + + .word ANI_SHAKER,30 + + .word ANI_ZEROVELS + + .word ANI_SHAKER,20 + WL 3,Y4KB3A+FR7 + WL 3,Y4KB3A+FR8 + WL 3,Y4KB3A+FR9 + WL 3,Y4KB3A+FR10 + + .word ANI_FRICTION,4000h + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times + .word ANI_CLR_BUTCOUNT +#skick_loop + WL 1,Y4KB3A+FR4 + WL 2,Y4KB3A+FR5 + + .word ANI_ATTACK_ON, AMODE_KICK,20,35,72,50 ;mode,x,y,w,h + WL 2,Y4KB3A+FR6 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,000H,10000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO + + .word ANI_SHAKER,30 + + .word ANI_ZEROVELS + + .word ANI_SHAKER,20 + WL 2,Y4KB3A+FR7 + WL 1,Y4KB3A+FR8 + WL 2,Y4KB3A+FR9 + WL 1,Y4KB3A+FR10 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#skick_loop + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NO_KNEE + WL ANI_CHANGEANIM,yok_combo_knee_anim +#NO_KNEE + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NO_UPPER + WL ANI_CHANGEANIM,yok_combo_uppercut_anim +#NO_UPPER + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_GUT + WL ANI_CHANGEANIM,yok_combo_gut_push_anim +#NO_GUT + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NO_HIPTOSS + WL ANI_CHANGEANIM,yok_combo_hiptoss_anim +#NO_HIPTOSS + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedc +#missedbc + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + WL 3,Y4KB3A+FR6 + .word ANI_WAITHITGND + WL 3,Y4KB3A+FR7 + WL 3,Y4KB3A+FR8 + WL 3,Y4KB3A+FR9 + WL 3,Y4KB3A+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2,#4 GUT PUSH + + SUBR yok_2_gut_push_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,6 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + .word ANI_FRICTION,4800h + WLW ANI_SET_XVEL,0a8000h,AM_FACE_REL + WL 2,Y4PS3B+FR1 + WL 2,Y4PS3B+FR2 + WL 2,Y4PS3B+FR3 + .word ANI_ATTACK_ON, AMODE_GUTPUSH,-12,31,43,63 ;mode,x,y,w,h + WL 2,Y4PS3B+FR4 + WL 2,Y4PS3B+FR5 + WWL ANI_WAITHITOPP,9,Y4PS3B+FR6 + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + WL 9,Y4PS3B+FR6 + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#missedb + WL 3,Y4PS3B+FR6 + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 +; WL 3,Y4PS3B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#* + SUBR yok_4_gut_push_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_STARTATTACK,AT_PUNCH,6 + + .word ANI_FRICTION,4800h + WLW ANI_SET_XVEL,0a8000h,AM_FACE_REL + WL 2,Y4PS3B+FR1 + WL 2,Y4PS3B+FR2 + WL 2,Y4PS3B+FR3 + .word ANI_ATTACK_ON, AMODE_GUTPUSH,-12,31,43,63 ;mode,x,y,w,h + WL 2,Y4PS3B+FR4 + WL 2,Y4PS3B+FR5 + WL 9,Y4PS3B+FR6 + .word ANI_ATTACK_OFF + .word ANI_ZEROVELS + + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + WL 9,Y4PS3B+FR6 + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 + WL 3,Y4PS3B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#missedb + WL 3,Y4PS3B+FR6 + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 + WL 3,Y4PS3B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#* + SUBR yok_combo_gut_push_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_CLR_BUTCOUNT + + .word ANI_FRICTION,4800h + WLW ANI_SET_XVEL,98000h,AM_FACE_REL + .word ANI_ATTACK_ON, AMODE_GUTPUSH,-12,31,43,63 ;mode,x,y,w,h + .word ANI_IMMOBILIZE,60 + WL 3,Y4PS3B+FR1 + WL 3,Y4PS3B+FR2 + WL 3,Y4PS3B+FR3 + WL 3,Y4PS3B+FR4 + WL 3,Y4PS3B+FR5 + WL 10,Y4PS3B+FR6 + .word ANI_ATTACK_OFF + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker + .WORD ANI_INC_COMBO + .word ANI_IMMOBILIZE,60 + + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 + WL 3,Y4PS3B+FR10 + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NO_SALT + WL ANI_CHANGEANIM,yok_combo_salt_anim +#NO_SALT + + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#missedbc + .word ANI_IMMOBILIZE,1 + WL 15,Y4PS3B+FR6 + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 + WL 3,Y4PS3B+FR10 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* CLIMB UP TURNBUCKLES + + SUBR yok_climb_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,YOK_TBUKLY + + WL ANI_CODE,face_inside + + .word ANI_SHAKECORNER + + .word ANI_OFFSET,2,3,0 ;6,7,0, spread out over 3 + WL 3,Y2CT2Z+FR1 + .word ANI_OFFSET,2,2,0 + WL 3,Y2CT2Z+FR2 + .word ANI_OFFSET,2,2,0 + WL 2,Y2CT2Z+FR3 + WL 2,Y2CT2Z+FR4 + WL 2,Y2CT2Z+FR5 + WL 2,Y2CT2Z+FR6 + WL 2,Y2CT2Z+FR7 + WL 2,Y2CT2Z+FR8 + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONTURNBKL + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_SCROLL_CTRL,SC_RESTORE + +#repeat + WL 20,Y2CT2Z+FR8 + WL ANI_GOTO,#repeat + + +#***************************************************************************** +* +* CLIMB DOWN TURNBUCKLES + + SUBR yok_climb_down_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SCROLL_CTRL,SC_RESTORE + + WL ANI_CODE,face_inside + + .word ANI_SHAKECORNER + + WL 2,Y2CT2Z+FR8 + WL 2,Y2CT2Z+FR7 + WL 2,Y2CT2Z+FR6 + WL 2,Y2CT2Z+FR5 + WL 2,Y2CT2Z+FR4 + WL 2,Y2CT2Z+FR3 + .word ANI_OFFSET,-2,-2,0 + WL 3,Y2CT2Z+FR2 + .word ANI_OFFSET,-2,-2,0 + WL 3,Y2CT2Z+FR1 + .word ANI_OFFSET,-2,-3,0 + + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* BIG NASTY BUTT-DROP OFF THE TURNBUCKLE + + SUBR yok_tbukl_buttdrop_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOGRAVITY|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SCROLL_CTRL,SC_RESTORE + + .word ANI_OFFSET,-20,0,0 + WL 4,Y2ZZ2X+FR1 + .word ANI_OFFSET,0,60,0 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 36,190,190,190,90000h,TGT_CHEST,0,0,-30 + WL ANI_CODE,check_xvel + + .word ANI_STARTATTACK,AT_BUTTSTOMP,36 +; .word ANI_SETPLYRMODE,MODE_INAIR2 + WL ANI_CODE,set_tbukl_airmode + .word ANI_GRAVITY_ON + .word ANI_SHAKECORNER + + WL 4,Y2ZZ2X+FR2 + WL 4,Y2ZZ2X+FR3 + WL ANI_CODE,set_tbukl_confine + + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-36,0,-30,110,38,80 + WWL ANI_IFOPPMODE,MODE_ONGROUND,#opp_onground + WWL ANI_IFOPPMODE,MODE_DEAD,#opp_onground + .word ANI_ATTACK_ON_Z,AMODE_BSTOMP,-36,28,-30,110,38,80 +#opp_onground + WL 4,Y2ZZ2X+FR4 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_ZEROVELS + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFSTATUS,#hit + +;missed + WL ANI_CODE,CALL_MISSES +; WL ANI_CODE,tbukl_miss_damage + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,50 + .word ANI_SHAKEALL,2 + .word ANI_BOUNCE,6 + WL 4,Y2ZZ2X+FR5 + WL 4,Y2ZZ2X+FR4 + .word ANI_WAITHITGND + .word ANI_SHAKER,25 + WL ANI_CODE,HIT_THE_MAT + WL ANI_GOTO,#common + +#hit + WL ANI_CODE,CALL_ANI_AVERAGE_MOVE + WL ANI_CODE,HIT_THE_MAT + .word ANI_DRAW_NAME,13 + .word ANI_SHAKER,50 + .word ANI_SHAKEALL,3 + .word ANI_BOUNCE,6 + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL 4,Y2ZZ2X+FR5 + WL 4,Y2ZZ2X+FR4 + .word ANI_WAITHITGND +;TODO (JS) - put some kind of attack here. + .word ANI_ZEROVELS + .word ANI_IMMOBILIZE,30 + .word ANI_SHAKER,25 + WL ANI_CODE,HIT_THE_MAT + +#common + WL 4,Y2ZZ2X+FR5 + WL 4,Y2ZZ2X+FR6 + WL 12,Y2ZZ2X+FR7 + + .word ANI_XFLIP + + WL 4,Y3GU2A+FR3 + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + + +#***************************************************************************** +* +* GRAB & FLING OPPONENT (INTO A RUN) + + SUBR yok_2_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,10 + + WL 2,Y1TT5Z+FR2 + WL 2,Y1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR yok_4_grabfling_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_STARTATTACK,AT_PUPPET,8 + +#cont + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,50,40,40,90000h,TGT_CHEST,40,0,25 + WL ANI_SET_YVEL,0000h + + WL 5,Y4GF3B+FR2 + .word ANI_ATTACK_ON, AMODE_PUPPET_NOFLAIL,33,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,Y4GF3B+FR3 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,2,Y4GF3B+FR3 + .word ANI_ATTACK_OFF + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFNOTSTATUS,#missedb + WL ANI_IFBLOCKED,#missedb + +;got him + WL ANI_CODE,DO_GRUNT + .ref CALL_SETUP + WL ANI_CODE,CALL_SETUP + .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; attacker sequence + WWLLW ANI_SUPERSLAVE2,10,Y4GF3B+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,5,Y4GF3B+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y4GF3B+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,Y4GF3B+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,Y4GF3B+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,Y4GF3B+FR8,#puppet_tbl,5 + + WL ANI_SLAVEANIM,#strt_run_tbl + + .word ANI_CLROPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + WL 10,Y4GF3B+FR9 + .word ANI_OFFSET,-10,0,0 ;x,y,z + + .word ANI_SETFACING + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +#missedb + .ref fling_delay + WL ANI_CODE,fling_delay + WL ANI_IFNOTSTATUS,#missed + WL 25,Y4GF3B+FR3 +#missed + WL ANI_CODE,CALL_MISSES + WL 8,Y4GF3B+FR3 + WL 4,Y4GF3B+FR2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H4YR3A+FR1,50,1,1 + LWWW H4YR3A+FR2,51,0,1 + LWWW H4YR3A+FR3,45,-2,1 + LWWW H4YR3A+FR5,33,4,1 + LWWW H3RN3A+FR1,-6,6,0 + LWWW H3RN3A+FR2,6,13,0 +#Razor + LWWW R4YR3A+FR1,38,10,0 + LWWW R4YR3A+FR2,28,10,0 + LWWW R4YR3A+FR3,13,0,0 + LWWW R4YR3A+FR4,-4,4,0 + LWWW R3RN3D+FR10,-8,16,0 + LWWW R3RN3D+FR11,8,22,0 +#Taker + LWWW U4YR3B+FR2,35,11,0 + LWWW U4YR3B+FR3,42,6,0 + LWWW U4YR3B+FR4,32,10,0 + LWWW U4YR3B+FR5,19,14,0 + LWWW U3RN3A+FR2,-12,18,0 + LWWW U3RN3A+FR2,-20,22,0 +#Yokozuna + LWWW Y4YR3A+FR1,54,5,1 + LWWW Y4YR3A+FR4,37,4,1 + LWWW Y4YR3A+FR5,27,1,1 + LWWW Y4YR3A+FR7,-4,-3,1 + LWWW Y3RN3C+FR7,-5,16,0 + LWWW Y3RN3C+FR8,15,19,0 +#Shawn + LWWW S4YR3A+FR2,31,-1,1 + LWWW S4YR3A+FR3,50,-12,1 + LWWW S4YR3A+FR5,14,0,1 + LWWW S4YR3A+FR6,6,2,1 + LWWW S3RN3A+FR2,-6,14,0 + LWWW S3RN3A+FR3,7,19,0 +#BamBam + LWWW B4YR3A+FR3,44,6,0 + LWWW B4YR3A+FR4,50,-1,0 + LWWW B4YR3A+FR5,49,-2,0 + LWWW B4YR3A+FR7,-15,-1,0 + LWWW B3RN3A+FR1,-16,17,0 + LWWW B3RN3A+FR2,-5,23,0 +#Doink + LWWW D4YR3B+FR1,51,6,1 + LWWW D4YR3B+FR2,50,7,1 + LWWW D4YR3B+FR3,34,4,1 + LWWW D4YR3B+FR4,10,9,1 + LWWW D3RN3B+FR3,-1,18,0 + LWWW D3RN3B+FR4,1,23,0 +#Adam + .long 0 +#Lex + LWWW L4YR3B+FR1,53,8,1 + LWWW L4YR3B+FR2,40,0,1 + LWWW L4YR3B+FR3,15,0,1 + LWWW L4YR3B+FR4,-27,1,1 + LWWW L3RN3B+FR2,-4,16,0 + LWWW L3RN3B+FR3,17,18,0 + + +#strt_run_tbl + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + .long start_run_flung,start_run_flung,start_run_flung + + +#***************************************************************************** +* + + SUBR yok_knockdwn_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + .word ANI_XFLIP + + WL 2,Y3GU4A+FR13 + WL 2,Y3GU2A+FR12 + WL 2,Y3GU2A+FR7 + WL ANI_SET_YVEL,39000h + + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + WL 4,Y3CP3B+FR5 + WL 4,Y3CP3B+FR6 + WL 4,Y3CP3B+FR7 + WL 4,Y3CP3B+FR8 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .word ANI_SETPLYRMODE,MODE_DEAD + .word ANI_END + +#nodead + + WL 4,Y3RL1A+FR1 + .word ANI_WAITROLL + .ref yok_faceup_getup_anim + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#***************************************************************************** + SUBR yok_climbthru_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + WLW ANI_SET_XVEL,3000h,AM_FACE_REL + + WL 3,Y4CR3B+FR1 + .word ANI_OFFSET,5,0,0 + WL 3,Y4CR3B+FR2 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,8,0,0 ;***** + WL 3,Y4CR3B+FR3 + .word ANI_OFFSET,8,0,0 ;***** + WL 3,Y4CR3B+FR4 + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + + .word ANI_OFFSET,5,0,0 ;***** + WL 3,Y4CR3B+FR5 + .word ANI_OFFSET,7,0,0 ;***** + WL 3,Y4CR3B+FR6 + .word ANI_OFFSET,12,0,0 ;***** + WL 3,Y4CR3B+FR8 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,12,0,0 ;***** + WL 3,Y4CR3B+FR9 + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + .word ANI_OFFSET,10,0,0 ;***** + WL 3,Y4CR3B+FR10 + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,10,-3,0 + .word ANI_ZEROVELS + WL 3,Y4CR3B+FR11 + WL 3,Y4CR3B+FR12 + + ;now jump off... + WL 2,Y4JD4A+FR3 + + .word ANI_SET_IDIOT + WWL ANI_SETLONG,OBJ_GRAVITY,0F000h + WL ANI_SET_YVEL,60000h + + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + +; WL 3,Y4JD4A+FR5 + .word ANI_WAITHITGND + .word ANI_SHAKER,40 + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_ZEROVELS + WL 2,Y4JD4A+FR6 + WL 2,Y4JD4A+FR7 + WL 4,Y4JD4A+FR8 + + .word ANI_FACEDOWN + .word ANI_CLEAR_CLIMB + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#***************************************************************************** + + SUBR yok_climbin_side_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL ANI_CODE,SET_DIR_FACE + .word ANI_SETFACING + .WORD ANI_SET_WRESTLER_XFLIP + + ;jump in + WL 2,Y4JD4A+FR3 + + WWL ANI_SETLONG,OBJ_GRAVITY,0F000h + WL ANI_CODE,#set_trgt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + .word ANI_LEAPATPOS,14h,200,0,0,0 ;#ticks,dist,xoff,yoff,zoff + +; WL 3,Y4JD4A+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + + .word ANI_ROPE_Z,R_TOP,RZ_HIGH + .word ANI_ROPE_Z,R_MIDDLE,RZ_HIGH + .word ANI_ROPE_Z,R_BOTTOM,RZ_HIGH + + WL 3,Y4JD4A+FR6 + WL 2,Y4JD4A+FR7 + WL 2,Y4JD4A+FR8 + + WLW ANI_SET_XVEL,4000h,AM_FACE_REL + + ;climb through + WL 3,Y4CR3B+FR1 + .word ANI_OFFSET,10,0,0 ;***** + WL 2,Y4CR3B+FR2 + .word ANI_BENDROPE,2 + .word ANI_OFFSET,10,0,0 ;***** + WL 3,Y4CR3B+FR3 + .word ANI_OFFSET,10,0,0 ;***** + WL 2,Y4CR3B+FR4 + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + WL 3,Y4CR3B+FR5 + WL 2,Y4CR3B+FR6 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_OFFSET,10,0,0 ;***** + WL 3,Y4CR3B+FR8 + .word ANI_BENDROPE,3 + .word ANI_OFFSET,10,0,0 ;***** + WL 2,Y4CR3B+FR9 + .word ANI_OFFSET,10,0,0 ;***** + WL 3,Y4CR3B+FR10 + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + .word ANI_BENDROPE,-1 + .word ANI_OFFSET,6,0,0 + WL 2,Y4CR3B+FR11 + .word ANI_OFFSET,8,0,0 + WL 3,Y4CR3B+FR12 + .word ANI_ZEROVELS + + .word ANI_CLEAR_CLIMB + + ;done + + .word ANI_ROPE_Z,R_TOP,RZ_NORM + .word ANI_ROPE_Z,R_MIDDLE,RZ_NORM + .word ANI_ROPE_Z,R_BOTTOM,RZ_NORM + + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_trgt + movi RING_X_CENTER-0f8h-60,a0 ;Jump onto left side apron + move *a13(OBJ_XPOSINT),a14 + cmpi RING_X_CENTER,a14 + jrlt #onlft +;On right side + movi RING_X_CENTER+0f8h+60,a0 ;Jump onto right side apron +#onlft + move a0,*a13(TGT_XOFF) + + movi RING_Z_CENTER,a0 + move a0,*a13(TGT_ZOFF) + + movi MAT_Y,a0 + move a0,*a13(TGT_YOFF) + + rets + +#***************************************************************************** + SUBR yok_climbthru_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + +;Must rotate toward ropes! +;Do a different sequence + + ;lie down + WL ANI_CODE,#ckspin + WL ANI_IFSTATUS,#dir4 + +;Facing #2, spin first! + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR3 +#dir4 + WL 4,Y3GU2A+FR14 + WL 4,Y3GU2A+FR13 + WL 4,Y3GU2A+FR12 + WL 5,Y3GU2A+FR11 + WL 5,Y3GU2A+FR10 +; WL 4,Y3GU2A+FR9 + WL 5,Y3GU2A+FR8 + WL 5,Y3GU2A+FR7 + + ;roll over once + WLW ANI_SET_ZVEL,90000h,AM_ABS + + WL 3,Y3RL1A+FR6 + WL 3,Y3RL1A+FR7 + WL 3,Y3RL1A+FR8 + WL 3,Y3RL1A+FR9 + WL 3,Y3RL1A+FR10 + WL 3,Y3RL1A+FR1 + WL 3,Y3RL1A+FR2 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + + .word ANI_SET_IDIOT + ;climb through + .word ANI_OFFSET,0,-37h,0 ;x,y,z + .WORD ANI_XFLIP + WL 3,Y2KB3A+FR7 + WL 3,Y2KB3A+FR6 + WL 3,Y2KB3A+FR5 + .WORD ANI_XFLIP + + .word ANI_CLEAR_CLIMB + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ckspin + move *a13(FACING_DIR),a14 + btst 0,a14 + jrnz #faceup + + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + RETS +#faceup + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#***************************************************************************** + + SUBR yok_climbin_bot_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .word ANI_GRAVITY_OFF + .WORD ANI_XFLIP + WL 3,Y2KB3A+FR5 + WL 3,Y2KB3A+FR6 + WL 3,Y2KB3A+FR7 + .WORD ANI_XFLIP + .word ANI_OFFSET,0,37h,-60 + + ;roll + WLW ANI_SET_ZVEL,-70000h,AM_ABS + .word ANI_FRICTION,3000h + WL 3,Y3RL1A+FR1 + WL 3,Y3RL1A+FR10 + WL 3,Y3RL1A+FR9 + WL 3,Y3RL1A+FR8 + WL 3,Y3RL1A+FR7 + WL 3,Y3RL1A+FR6 + .word ANI_ZEROVELS + .word ANI_GRAVITY_ON + + ;get up + WL 4,Y3GU2A+FR7 + WL 4,Y3GU2A+FR8 +; WL 4,Y3GU2A+FR9 + WL 4,Y3GU2A+FR10 + WL 4,Y3GU2A+FR11 + WL 4,Y3GU2A+FR12 + WL 4,Y3GU2A+FR13 + WL 4,Y3GU2A+FR14 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .word ANI_FACEDOWN + .word ANI_ZEROVELS + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#***************************************************************************** + + SUBR yok_climbthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;lie down + WL ANI_CODE,#set_zvel1 + WL ANI_IFSTATUS,#dir4 +;Facing #2 + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR3 +#dir4 + WL 4,Y3GU2A+FR14 + WL 4,Y3GU2A+FR13 + WL 4,Y3GU2A+FR12 + WL 5,Y3GU2A+FR11 + WL 5,Y3GU2A+FR10 +; WL 4,Y3GU2A+FR9 + WL 5,Y3GU2A+FR8 + WL 5,Y3GU2A+FR7 + + ;roll over once + WL ANI_CODE,#set_zvel2 + WL 3,Y3RL1A+FR6 + WL 3,Y3RL1A+FR5 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,Y3RL1A+FR4 + WL 3,Y3RL1A+FR3 + WL 3,Y3RL1A+FR2 + + .word ANI_SET_IDIOT + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + .WORD ANI_XFLIP + WL 3,Y4KB3A+FR6 + WL 3,Y4KB3A+FR7 + WL 3,Y4KB3A+FR8 + .WORD ANI_XFLIP + + .word ANI_ZERO_XZVELS + + .word ANI_CLEAR_CLIMB + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#set_zvel1 + move *a13(FACING_DIR),a14 + btst 0,a14 + jrz #facedwn + move *a13(ANIMODE),a0 + ANDI 0FFFFH-MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#facedwn + move *a13(ANIMODE),a0 + ori MODE_STATUS,a0 + move a0,*a13(ANIMODE) + rets + +#set_zvel2 + movi -50000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#***************************************************************************** + + SUBR yok_rollthru_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;roll over once + WLW ANI_SET_ZVEL,-50000h,AM_ABS + WL 3,Y3RL1A+FR6 + WL 3,Y3RL1A+FR5 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOSHADOW|MODE_NOCOLLIS + WL 3,Y3RL1A+FR4 + WL 3,Y3RL1A+FR3 + WL 3,Y3RL1A+FR2 + + ;climb through + .word ANI_OFFSET,0,-61,0 + .word ANI_ZEROVELS + .word ANI_XFLIP + WL 3,Y4KB3A+FR6 + WL 3,Y4KB3A+FR7 + WL 3,Y4KB3A+FR8 + .word ANI_XFLIP + + .word ANI_ZERO_XZVELS + + .word ANI_CLEAR_CLIMB + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + +#***************************************************************************** + + SUBR yok_climbin_top_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + ;climb in + .WORD ANI_XFLIP + WL 3,Y4KB3A+FR8 + WL 3,Y4KB3A+FR7 + WL 3,Y4KB3A+FR6 + .WORD ANI_XFLIP + .word ANI_OFFSET,0,61,0 + + ;roll over + WL ANI_CODE,#set_zvel2 + WL 3,Y3RL1A+FR3 + WL 3,Y3RL1A+FR4 + WL 3,Y3RL1A+FR5 + WL 3,Y3RL1A+FR6 + + .word ANI_ZEROVELS + + ;get up + WL 4,Y3GU2A+FR7 + WL 4,Y3GU2A+FR8 +; WL 4,Y3GU2A+FR9 + WL 4,Y3GU2A+FR10 + WL 4,Y3GU2A+FR11 + WL 4,Y3GU2A+FR12 + WL 4,Y3GU2A+FR13 + WL 4,Y3GU2A+FR14 + +; WL ANI_CODE,clr_climb + .word ANI_CLEAR_CLIMB + + .WORD ANI_FACEDOWN + .word ANI_SETMODE,MODE_NOCONFINE + .word ANI_END + + +#set_zvel2 + movi 52000h,a0 + move a0,*a13(OBJ_ZVEL),L + rets + +#**************************************************************************** +* +* PIN OPPONENT AND RAISE ARM IN VICTORY + +;Need to have this guy walk toward fallen opponent so he +;can get closer! + +;This pin must be started only when opponent is on the ground! + + SUBR yok_2_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;Rotate! + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR3 + + SUBR yok_4_pin_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 4,Y3PF3C+FR1 + WL 4,Y3PF3C+FR2 + WL 4,Y3PF3C+FR3 + WL 4,Y3PF3C+FR4 + WL 4,Y3PF3C+FR5 + WL 4,Y3PF3C+FR6 + WL 4,Y3PF3C+FR7 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 30,999,80h,50h,90000h,TGT_CHEST|TGT_GROUND,0,57,-15 + WL ANI_CODE,hit_nearest + + WL 4,Y3PF3C+FR8 + .word ANI_OFFSET,0,34,0 ;x,y,z + WL 22,Y3PF3C+FR9 + WL ANI_CODE,#bucket_salt + + WWL ANI_SETLONG,DEBRIS_X,[5,-5] ;Y,X of head + + .word ANI_SHAKER,40 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,-25,76,20,50 ;mode,x,y,z,w,h,d + .word ANI_ZERO_XZVELS + WL 4,Y3PF3C+FR10 + WWL ANI_SETLONG,DEBRIS_X,[5,-15] ;Y,X of head + WL 4,Y3PF3C+FR11 + WWL ANI_SETLONG,DEBRIS_X,[5,5] ;Y,X of head + WL 4,Y3PF3C+FR12 + .word ANI_ATTACK_OFF + WL ANI_CODE,DO_CROWD_CHEER + .word ANI_BOUNCE,3 + WL 4,Y3PF3C+FR12 + .word ANI_WAITHITGND + + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + WL ANI_CODE,SMALL_BOUNCE + .word ANI_SHAKEALL,2 + .word ANI_ATTACK_ON_Z, AMODE_STOMP,-40,-8,-25,76,20,50 ;mode,x,y,z,w,h,d + WL 1,Y3PF3C+FR12 + .word ANI_ATTACK_OFF + WL ANI_SET_YVEL,30000h + + .ref HIT_THE_MAT,SMALL_BOUNCE + + WL 4,Y3PF3C+FR12 + .ref win_announce + WL ANI_CODE,win_announce +; WLW ANI_ATTCHIMAGE,0,0 ;Turn it off + WL 50,Y3PF3C+FR12 + + .word ANI_LOOP +;Do another ground hit on opponent + .ref grnd_hit + WL ANI_CODE,grnd_hit + + WL ANI_SET_YVEL,42000h + WLW ANI_SET_ZVEL,22000h,AM_ABS + WL 5,Y5GU4B+FR1 + WL 5,Y5GU4B+FR2 + WL 5,Y5GU4B+FR3 + WL 5,Y5GU4B+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 5,Y5GU4B+FR5 + WL 5,Y5GU4V+FR6 + WL 5,Y5GU4B+FR7 + WL 5,Y5GU4B+FR8 + + WL 7,Y5RV5A+FR1 + WL 7,Y5RV5A+FR2 + WL 7,Y5RV5A+FR3 + WL 7,Y5RV5A+FR4 + WL 7,Y5RV5A+FR5 + WL 7,Y5RV5A+FR6 + WL 7,Y5RV5A+FR7 + WL 7,Y5RV5A+FR8 + WL 40,Y5RV5A+FR9 + WL 7,Y5RV5A+FR10 + WL 7,Y5RV5A+FR11 +#hold WL 1000,Y5RV5A+FR12 + WL ANI_GOTO,#hold + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#bucket_salt + movi 100,a0 + .ref RNDPER + calla RNDPER + jrls #x + calla create_bucket_salt +#x rets + + +****************************************************************************** +* RAISE ARM IN VICTORY FROM A STANCE + + SUBR yok_2_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + + WL 3,Y1TT5Z+FR2 + WL 3,Y1TT5Z+FR3 + WL ANI_GOTO,#cont + + SUBR yok_4_raise_arm_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_CODE,DO_CROWD_CHEER + WL ANI_CODE,win_announce + +#cont WL 7,Y5RV5A+FR1 + WL 7,Y5RV5A+FR2 + WL 7,Y5RV5A+FR3 + WL 7,Y5RV5A+FR4 + WL 7,Y5RV5A+FR5 + WL 7,Y5RV5A+FR6 + WL 7,Y5RV5A+FR7 + WL 7,Y5RV5A+FR8 + WL 40,Y5RV5A+FR9 + WL 7,Y5RV5A+FR10 + WL 7,Y5RV5A+FR11 + + + .word ANI_SET_RPTCOUNT,-4 ;set count to rnd from 0 to 4 +#lp0 WL 55,Y5RV5A+FR12 + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#lp0 + + WL ANI_CODE,check_raisearm_bit + WL ANI_IFSTATUS,#wakeup + + ;don't wake up. +#floop WL 1000,Y5RV5A+FR12 + WL ANI_GOTO,#floop + +#wakeup + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_FACEDOWN + .word ANI_END + +#***************************************************************************** +* +* #4 UPPERCUT + +*********************************************************************** + SUBR yok_combo_uppercut_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 2,Y4UP3B+FR1 + WL 2,Y4UP3B+FR2 + WL 2,Y4UP3B+FR3 + WL 2,Y4UP3B+FR4 + .word ANI_ATTACK_ON, AMODE_UPRCUT,20,34,80,70 ;mode,x,y,w,h + WL 2,Y4UP3B+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker +;Got him +;Hit, spray some explosions + WL ANI_CODE,#set_zvel + .word ANI_SHAKER,35 + .word ANI_INC_COMBO + +;Turn on explosion sound effect + WL ANI_CODE,HIT_THE_MAT + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2c + WL 10,Y4UP3B+FR6 + +#no_hit2c + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 20,Y4UP3B+FR6 + WL 2,Y4UP3B+FR7 + WL 2,Y4UP3B+FR8 + WL 2,Y4UP3B+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +#missedbc + WL 20,Y4UP3B+FR6 +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 5,Y4UP3B+FR6 + WL 5,Y4UP3B+FR7 + WL 5,Y4UP3B+FR8 + WL 5,Y4UP3B+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +*********************************************************************** + SUBR yok_4_uppercut_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WLW ANI_SET_XVEL,10000h,AM_FACE_REL + .word ANI_STARTATTACK,AT_PUNCH,8 + WL 1,Y4UP3B+FR1 + WL 2,Y4UP3B+FR2 + WL 2,Y4UP3B+FR3 + WL 2,Y4UP3B+FR4 + .word ANI_ATTACK_ON, AMODE_UPRCUT,20,24,40,80 ;mode,x,y,w,h + WL 2,Y4UP3B+FR5 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;Got him +;Hit, spray some explosions + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,400,1,10,50,0 ;%chance, tbl index, x,y,z off + .word ANI_DETACH + WL ANI_CODE,CALL_OTHER_AVERAGE + WL ANI_CODE,impact_sound + + WL ANI_CODE,#set_zvel + .word ANI_SHAKER,35 + WL ANI_CODE,HIT_THE_MAT + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL 10,Y4UP3B+FR6 +#no_hit2 + WL 20,Y4UP3B+FR6 + WL 2,Y4UP3B+FR7 + WL 2,Y4UP3B+FR8 + WL 2,Y4UP3B+FR9 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#set_zvel + move *a13(WHOIHIT),a0,L + move *a0(OBJ_ZVEL),a14,L + jrnz #skip + movi 10000h,a14 + move a14,*a0(OBJ_ZVEL),L +#skip rets + +#missedb + WL 10,Y4UP3B+FR6 +#missed + WL 4,Y4UP3B+FR6 + WL 4,Y4UP3B+FR7 + WL 4,Y4UP3B+FR8 + WL 4,Y4UP3B+FR9 + +; .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #4 Jabs + + SUBR yok_2_jabs_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,17 + WL 1,Y1TT5Z+FR2 + WL 1,Y1TT5Z+FR3 + + SUBR yok_4_jabs_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,15 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times + +#rpt + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 5,999,4ah,50,90000h,TGT_HEAD,65,90,10 + WL ANI_CODE,no_bk_xvel + + WL ANI_SET_YVEL,10000h + + .word ANI_CLR_BUTCOUNT + WL 3,Y4JB3A+FR1 + WL 3,Y4JB3A+FR2 + .word ANI_ATTACK_ON, AMODE_PUNCH2,27,80,48,18 ;mode,x,y,w,h + .word ANI_ZERO_XZVELS + WL 2,Y4JB3A+FR3 + .word ANI_ATTACK_OFF + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,40000h + WL 3,Y4JB3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_GOTO,#missed +#no_hit2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_IMMOBILIZE,20 + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,200,2,0,100,0 ;%chance, tbl index, x,y,z off + .ref impact_sound + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,28000h,18000h,0h ;x,y,z vels + WL 2,Y4JB3A+FR4 + WL 2,Y4JB3A+FR5 + WL 2,Y4JB3A+FR6 + WL 2,Y4JB3A+FR7 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#ex +#goto .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rpt + +#ex2 + .word ANI_IMMOBILIZE,0 + WL 8,Y4JB3A+FR7 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#ex + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#ex2 + WL ANI_GOTO,#goto + +#missed + .word ANI_SHAKER,30 + WL ANI_CODE,HIT_THE_MAT +#missedb + .word ANI_IMMOBILIZE,0 + WL 2,Y4JB3A+FR4 + WL 2,Y4JB3A+FR5 + WL 2,Y4JB3A+FR6 + WL 2,Y4JB3A+FR7 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +********************************************************************************* + SUBR yok_combo_jabs_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .WORD ANI_CLEAR_COMBO + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,15 + + WL ANI_CODE,no_bk_xvel + + WL ANI_SET_YVEL,10000h + + WL 3,Y4JB3A+FR1 + WL 3,Y4JB3A+FR2 + .word ANI_ZERO_XZVELS + .WORD ANI_INC_COMBO + .word ANI_ATTACK_ON, AMODE_PUNCH2,27,50,68,38 ;mode,x,y,w,h + WL 1,Y4JB3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker + WLLL ANI_SETOPPVELS,0,10000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO + WL 2,Y4JB3A+FR3 + + .word ANI_IMMOBILIZE,25 + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,200,2,0,100,0 ;%chance, tbl index, x,y,z off + .ref impact_sound + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + + WL 2,Y4JB3A+FR4 + WL 3,Y4JB3A+FR5 + WL 2,Y4JB3A+FR6 + WL 2,Y4JB3A+FR7 + + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times +#rptc + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,no_bk_xvel + + WL ANI_SET_YVEL,10000h + + WL 1,Y4JB3A+FR1 + WL 2,Y4JB3A+FR2 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_ON, AMODE_PUNCH2,27,50,68,38 ;mode,x,y,w,h + WL 1,Y4JB3A+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker +; .word ANI_SET_ATTACH + WLLL ANI_SETOPPVELS,000H,10000h,0h ;x,y,z vels + .WORD ANI_INC_COMBO + WL 1,Y4JB3A+FR3 + + .word ANI_IMMOBILIZE,20 + + .word ANI_SET_ATTACH + .word ANI_DEBRISAT,200,2,0,100,0 ;%chance, tbl index, x,y,z off + .ref impact_sound + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DETACH + + WL 1,Y4JB3A+FR4 + WL 2,Y4JB3A+FR5 + WL 1,Y4JB3A+FR6 + WL 2,Y4JB3A+FR7 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#rptc + +#exc + .word ANI_IMMOBILIZE,0 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_KNEE + WL ANI_CHANGEANIM,yok_combo_knee_anim +#NO_KNEE + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NO_UPPER + WL ANI_CHANGEANIM,yok_combo_uppercut_anim +#NO_UPPER + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NO_KICK + WL ANI_CHANGEANIM,yok_combo_superkick_anim +#NO_KICK + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedbc + WL 5,Y4JB3A+FR4 +#missedc + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_SET_YVEL,40000h + WL 3,Y4JB3A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_IMMOBILIZE,0 + WL 3,Y4JB3A+FR4 + WL 3,Y4JB3A+FR5 + WL 3,Y4JB3A+FR6 + WL 8,Y4JB3A+FR7 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2,#4 Slap - Clobber down + + SUBR yok_2_run_slap_anim +;From a run + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,17 + + WL ANI_CODE,create_bucket_salt + + WWL ANI_SETLONG,DEBRIS_X,[76,-62] ;Y,X of head + WL 3,Y4PU4G+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0ch,999,7fh,55,90000h,TGT_HEAD,15,105,-35 + + WL ANI_GOTO,#cont + + SUBR yok_2_slap2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL ANI_CODE,create_bucket_salt + + .word ANI_STARTATTACK,AT_LEAPING,17 + WWL ANI_SETLONG,DEBRIS_X,[76,-62] ;Y,X of head + WL 1,Y1TT5Z+FR2 + WL 1,Y1TT5Z+FR3 + WL 3,Y4PU4G+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0dh,999,4fh,55,90000h,TGT_HEAD,65,105,-35 +#cont + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WWL ANI_SETLONG,DEBRIS_X,[107,-42] ;Y,X of head + WL 4,Y4PU4G+FR2 + WWL ANI_SETLONG,DEBRIS_X,[133,-8] ;Y,X of head + WL 4,Y4PU4G+FR3 + WWL ANI_SETLONG,DEBRIS_X,[129,50] ;Y,X of head + WL 4,Y4PU4G+FR4 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_BSTOMP2,22-10,66,47+20,30 ;mode,x,y,w,h + WWL ANI_SETLONG,DEBRIS_X,[75,79] ;Y,X of head + WL 3,Y4PU4G+FR5 + .word ANI_ATTACK_OFF + + .word ANI_OFFSET,0,0,20 + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker +;Got him + WL ANI_CODE,HIT_THE_MAT +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,55-11 + .word ANI_SHAKER,40 + + WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,Y4PU4G+FR6 + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,40000h + WWL ANI_SETLONG,DEBRIS_X,[28,28] ;Y,X of head + WL 3,Y4PU4G+FR7 +#no_hit2 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWL ANI_SETLONG,DEBRIS_X,[28,28] ;Y,X of head + WL 6,Y4PU4G+FR7 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + + .ref spunch_delay + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none + WL 15,Y4PU4G+FR7 +#none + + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed +#missedb + .word ANI_SHAKER,35 + WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,Y4PU4G+FR6 + WWL ANI_SETLONG,DEBRIS_X,[28,28] ;Y,X of head + WL 4,Y4PU4G+FR7 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none1 + WL 15,Y4PU4G+FR7 +#none1 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#* + + SUBR yok_4_run_slap_anim +;From a run + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .ref create_bucket_salt + WL ANI_CODE,create_bucket_salt + + .word ANI_STARTATTACK,AT_LEAPING,17 + + WWL ANI_SETLONG,DEBRIS_X,[76,-62] ;Y,X of head + WL 3,Y4PU4G+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0ch,999,7fh,55,90000h,TGT_HEAD,15,105,35 + + WL ANI_GOTO,#cont + + SUBR yok_4_slap2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL ANI_CODE,create_bucket_salt + + .word ANI_STARTATTACK,AT_LEAPING,15 + WWL ANI_SETLONG,DEBRIS_X,[76,-62] ;Y,X of head + WL 3,Y4PU4G+FR1 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 0dh,999,4fh,55,90000h,TGT_HEAD,65,105,35 + +#cont + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WWL ANI_SETLONG,DEBRIS_X,[107,-42] ;Y,X of head + WL 4,Y4PU4G+FR2 + WWL ANI_SETLONG,DEBRIS_X,[133,-8] ;Y,X of head + WL 4,Y4PU4G+FR3 + WWL ANI_SETLONG,DEBRIS_X,[129,50] ;Y,X of head + WL 4,Y4PU4G+FR4 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_BSTOMP2,22-10,66,47+20,30 ;mode,x,y,w,h + WWL ANI_SETLONG,DEBRIS_X,[75,79] ;Y,X of head + WL 3,Y4PU4G+FR5 + .word ANI_ATTACK_OFF + + .word ANI_OFFSET,0,0,-20 + + WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,Y4PU4G+FR6 + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + +;Got him + WL ANI_CODE,HIT_THE_MAT +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,55 + .word ANI_SHAKER,40 + + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2 + WL ANI_SET_YVEL,40000h + WWL ANI_SETLONG,DEBRIS_X,[28,28] ;Y,X of head + WL 4,Y4PU4G+FR7 +#no_hit2 + WWL ANI_SETLONG,DEBRIS_X,[28,28] ;Y,X of head + WL 4,Y4PU4G+FR7 + + WL ANI_GOTO,#poo + +#missed +#missedb + .word ANI_SHAKER,35 + WWL ANI_SETLONG,DEBRIS_X,[28,28] ;Y,X of head + WL 3,Y4PU4G+FR7 + +#poo + WL ANI_CODE,spunch_delay + WL ANI_IFNOTSTATUS,#none2 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 10,Y4PU4G+FR7 + WL 4,Y4PU4G+FR8 + WL 4,Y4PU4G+FR9 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#none2 + WWL ANI_SETLONG,DEBRIS_X,[46,44] ;Y,X of head + WL 3,Y4PU4G+FR8 + WWL ANI_SETLONG,DEBRIS_X,[72,42] ;Y,X of head + WL 3,Y4PU4G+FR9 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 4,Y4PS3B+FR10 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +****************************************************************************** + + SUBR yok_combo_slap_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SET_RPTCOUNT,3 ;rpt 2 times +#slap_loop + WL ANI_CODE,create_bucket_salt + + WLW ANI_SET_XVEL,0A000h,AM_FACE_REL + .word ANI_STARTATTACK,AT_LEAPING,15 + WWL ANI_SETLONG,DEBRIS_X,[76,-62] ;Y,X of head + WL 3,Y4PU4G+FR1 + + WWL ANI_SETLONG,DEBRIS_X,[107,-42] ;Y,X of head + WL 4,Y4PU4G+FR2 + WWL ANI_SETLONG,DEBRIS_X,[133,-8] ;Y,X of head + WL 4,Y4PU4G+FR3 + WWL ANI_SETLONG,DEBRIS_X,[129,50] ;Y,X of head + WL 4,Y4PU4G+FR4 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_BSTOMP2,22,36-36,57+20,70+36 ;mode,x,y,w,h + WWL ANI_SETLONG,DEBRIS_X,[75,79] ;Y,X of head + WL 4,Y4PU4G+FR5 + .word ANI_ATTACK_OFF + WLW ANI_SET_XVEL,00h,AM_FACE_REL + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker + .WORD ANI_INC_COMBO + +;Got him + WL ANI_CODE,HIT_THE_MAT +;Immobilize player for 30 ticks without meter on! + .word ANI_IMMOBILIZE,100 + WL ANI_CODE,#delay_whoihit + .word ANI_SHAKER,40 + + WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL ANI_SET_YVEL,40000h + WL 4,Y4PU4G+FR6 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 4,Y4PU4G+FR7 + WL 3,Y4PU4G+FR8 + WL 3,Y4PU4G+FR9 + WL 3,Y4PS3B+FR10 + + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#slap_loop + + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +#missedbc + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHAKER,35 + WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,Y4PU4G+FR6 + WWL ANI_SETLONG,DEBRIS_X,[28,28] ;Y,X of head + WL 30,Y4PU4G+FR7 + WWL ANI_SETLONG,DEBRIS_X,[46,44] ;Y,X of head + WL 3,Y4PU4G+FR8 + WWL ANI_SETLONG,DEBRIS_X,[72,42] ;Y,X of head + WL 3,Y4PU4G+FR9 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 4,Y4PS3B+FR10 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END +#missedc + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SHAKER,35 + WWL ANI_SETLONG,DEBRIS_X,[19,28] ;Y,X of head + WL 3,Y4PU4G+FR6 + WWL ANI_SETLONG,DEBRIS_X,[28,28] ;Y,X of head + WL 15,Y4PU4G+FR7 + WWL ANI_SETLONG,DEBRIS_X,[46,44] ;Y,X of head + WL 3,Y4PU4G+FR8 + WWL ANI_SETLONG,DEBRIS_X,[72,42] ;Y,X of head + WL 3,Y4PU4G+FR9 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + WL 4,Y4PS3B+FR10 + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBRP #delay_whoihit + + move *a13(WHOIHIT),a0,L + movi 55,a14 + move a14,*a0(DELAY_METER) + rets + +#***************************************************************************** +* +* GET BUCKED OFF A PINNED OPPONENT + + SUBR yok_buckoff_anim + + .ref set_buckoff_vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS + .word ANI_SETSPEED,100h + .word ANI_ZEROVELS + + WL 4,Y3PF3C+FR12 + WL 4,Y3PF3C+FR9 + WL 4,Y3PF3C+FR8 + WL ANI_CODE,set_buckoff_vels + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,Y3PF3C+FR6 + WL 4,Y3PF3C+FR5 + WL 4,Y3PF3C+FR4 + WL 4,Y3PF3C+FR3 + WL 4,Y3PF3C+FR2 + WL 4,Y3PF3C+FR1 + + .word ANI_FACEDOWN + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +*********************************************************************** + + .end + \ No newline at end of file diff --git a/YOKSEQ3.ASM b/YOKSEQ3.ASM new file mode 100755 index 0000000..50f84de --- /dev/null +++ b/YOKSEQ3.ASM @@ -0,0 +1,3636 @@ +************************************************************** +* +* Software: Jamie Rivett +* Initiated: 5/18/94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "yokseq3.asm" + .title "Yokozuna animation sequences" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + + .include "bretimg.h" + .include "razorimg.h" + .include "takerimg.h" + .include "yokoimg.h" + .include "shawnimg.h" + .include "bamimg.h" + .include "doinkimg.h" + .include "leximg.h" + + .include "display.equ" + .include "damage.equ" + +****************************************************************************** +* EXTERNAL REFERENCES + + .ref PCNT + + ;BRET + .ref hrt_3_head_held_anim + .ref H3GU4A,H3DU3A,H3BF3A + + ;BAM BAM + .ref bam_3_head_held_anim + .ref B3GU4A,B3BF3C + + ;DOINK + .ref dnk_3_head_held_anim + .ref D3HT3Z,D3BF3A,D4SK4A + + ;LEX + .ref lex_3_head_held_anim + .ref L3DU3A,L3BF3B + + ;RAZOR + .ref rzr_3_head_held_anim + .ref R3GU4A,R3DU3B,R3BF3A + + ;SHAWN + .ref shn_3_head_held_anim + .ref S3GU4A,S3BF3A + + ;TAKER + .ref und_3_head_held_anim + .ref U3DU3B,U4BF3Z + + ;YOKO + .ref yok_stand4_anim,yok_dizzy_anim + .ref Y3GU2A,Y3BF3A + + + ;MISC + .ref CALL_MISSES,set_position,set_skeleton_pal,am_I_dizzy + .ref start_smoke,set_my_pal,make_norm,DO_GRUNT,make_white + .ref DO_NONO,DO_OTHERNONO,FIND_AND_KILL_ENDLESS,SPIN_SWEAT + .ref slaveanim_tbl,target_whoihit,MOVE_NAME_ANNC + + .ref CALL_MISS_YOKO,DO_WAIL,CALL_SPECIAL_MOVE,CALL_NASTY_MOVE + .ref CALL_THROWN_OUT + .ref slaveanim_tbl,clear_opp_counts + + .ref hrt_slambounce_anim + .ref rzr_slambounce_anim + .ref und_slambounce_anim + .ref yok_slambounce_anim + .ref shn_slambounce_anim + .ref bam_slambounce_anim + .ref dnk_slambounce_anim + .ref und_slambounce_anim + .ref lex_slambounce_anim + .ref yok_combo_knee_anim + .ref DO_COMBO_MESS + .ref yok_combo_butt_drop_anim + .ref yok_combo_uppercut_anim + .ref yok_combo_gut_push_anim + .ref yok_combo_slap_anim + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + +#***************************************************************************** +* +* GET BUZZED FROM DOINK + + SUBR yok_get_buzz_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable +; .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +; .word ANI_XFLIP + .word ANI_GRAVITY_OFF + + WL ANI_CODE,set_position + + WL ANI_CODE,set_skeleton_pal + WL 2,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_white + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL ANI_CODE,make_white + WL 3,D4SK4A+FR1 + WL ANI_CODE,make_norm + WL ANI_CODE,set_my_pal + WL 3,Y4BZ4A+FR1 + + WL ANI_CODE,set_skeleton_pal + WL 3,D4SK4A+FR1 + WL ANI_CODE,set_my_pal + WL ANI_CODE,start_smoke + + .word ANI_DETACH + + .word ANI_GRAVITY_ON + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WLW ANI_SET_ZVEL,20000h,AM_ABS + WL ANI_CODE,#make_black + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,#make_black + WL 3,Y4BZ4A+FR1 + WL ANI_CODE,make_norm + WL 3,Y4BZ4A+FR1 + + .word ANI_WAITHITGND + .word ANI_XFLIP + .word ANI_FACEDOWN + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 1,Y4ST4Y+FR4 + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + .ref yok_fall_back_anim + + WL ANI_CHANGEANIM,yok_fall_back_anim +; .word ANI_END + +#nodead + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#make_black + +;This is a black color within the wrestler's pal. It is different for each +;wrestler. + movi 0f0fh,a14 + + move a14,*a13(OBJ_CONST) + move *a13(OBJ_CONTROL),a14 + andni 01111b,a14 + ori M_CONNON,a14 + move a14,*a13(OBJ_CONTROL) + rets + +#***************************************************************************** + + SUBR yok_3_head_held_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_HEADHELD + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + +#loop + WL 4,Y3BF3A+FR1 + WL 4,Y3BF3A+FR3 + WL 4,Y3BF3A+FR5 + WL 4,Y3BF3A+FR7 + WL 4,Y3BF3A+FR9 + WL 4,Y3BF3A+FR11 + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Continue into break... + + SUBR yok_3_head_held_brk_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL + WL ANI_SET_YVEL,40000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + WL 4,Y3LB3A+FR9 + .word ANI_DETACH + +;Standard #2 head hit from spin kick + WL 3,Y2AH2A+FR1 + WL 3,Y2AH2A+FR2 + WL 3,Y2AH2A+FR3 + WL 1,Y2AH2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 4,Y2AH2A+FR5 + WL 4,Y2AH2A+FR6 + WL 4,Y2AH2A+FR7 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +;He may have let me go by hitting his block butn! +;Handled in mode_headheld! +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + + SUBR yok_3_head_held_stand_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 4,Y3LB3A+FR9 + WL 3,Y1TT5Z+FR2 ;2.5 + .word ANI_DETACH + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + + +;#***************************************************************************** +;* +;* This one is special. If shawn tries a frankensteiner on yoko, it backfires +;* and he ends up falling off. To keep this smooth, we have to turn yoko into +;* the attacker. jump here. +;* +; +; SUBR yok_frnk_backfire_anim +; +; .word ANI_ZEROVELS +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED +; +; .word ANI_ATTACHZ,0,0,10 +; WL ANI_CODE,CALL_MISS_YOKO +; +; WWLLW ANI_SUPERSLAVE2,8,Y1TT5Z+FR2,#puppet_tbl,0 +; WWLLW ANI_SUPERSLAVE2,4,Y1TT5Z+FR2,#puppet_tbl,1 +; WWLLW ANI_SUPERSLAVE2,4,Y1TT5Z+FR2,#puppet_tbl,2 +; WWLLW ANI_SUPERSLAVE2,4,Y1TT5Z+FR2,#puppet_tbl,3 +; WWLLW ANI_SUPERSLAVE2,4,Y1TT5Z+FR2,#puppet_tbl,4 +; +; ;let go +;; .word ANI_OPP_GETUP,TSEC +; WL ANI_SLAVEANIM,#drop_table +; .word ANI_DETACH +; +; ;wind down +; WL 4,Y1TT5Z+FR3 +; .word ANI_SETMODE,MODE_NORMAL +; .word ANI_SETPLYRMODE,MODE_NORMAL +; .word ANI_END +; +;#puppet_tbl +; .long #Bret +; .long #Razor +; .long #Taker +; .long #Yokozuna +; .long #Shawn +; .long #BamBam +; .long #Doink +; .long #Adam +; .long #Lex +;#Shawn +; LWWW S3ZI3A+FR3,-5,30,0 +; LWWW S3ZI3A+FR4,1,31,0 +; LWWW S3ZI3A+FR5,2,15,0 +; LWWW S3ZI3A+FR6,0,20,0 +; LWWW S3ZI3A+FR7,-5,-12,0 +;#Bret +;#Razor +;#Taker +;#Yokozuna +;#BamBam +;#Doink +;#Adam +;#Lex +; .long 0 +; +;#drop_table +; .long 0,0,0,0 +; .long shn_frnk_backfire_anim,0,0,0,0 +; +#****************************************************************************** + + SUBR yok_2_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL 1,Y1TT5Z+FR2 + WL 1,Y1TT5Z+FR3 + + SUBR yok_4_hair_pickup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + WL 2,Y4WS4A+FR1 + + LEAPATOPP 7,999,80,80,30000h,TGT_HEAD,26,0,10 + WL 3,Y4WS4A+FR2 + WL 4,Y4WS4A+FR3 + .word ANI_ZERO_XZVELS + + .word ANI_ATTACK_ON, AMODE_PUPPET2,15,0,35,22 ;mode,x,y,w,h + WL 4,Y4WS4A+FR4 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_CLR_BUTCOUNT + WL ANI_CODE,clear_opp_counts + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + .word ANI_SOUND,98h ;neck break (5-7 ticks late) + + WWLLW ANI_SUPERSLAVE2,3,Y4WS4A+FR4,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,Y4WS4A+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,Y4WS4A+FR6,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,Y4WS4A+FR7,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,Y4WS4A+FR8,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,Y4GH3C+FR9,#puppet_tbl,5 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,Y4GH3C+FR9 + .word ANI_CLROPPMODE,MODE_GHOST + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + WL 20,Y4WS4A+FR4 + WL 3,Y4WS4A+FR3 + WL 3,Y4WS4A+FR2 + WL 3,Y4WS4A+FR1 + + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3GU4A+FR1,38,-46,0 + LWWW H3GU4A+FR3,59,-40,0 + LWWW H3DU3A+FR3,52,-31,1 + LWWW H3DU3A+FR4,57,-22,1 + LWWW H3DU3A+FR5,55,-32,1 + LWWW H3BF3A+FR1,61,-33,0 + .long 0 +#Razor + LWWW R3GU2A+FR3,41,-37,0 + LWWW R3GU4A+FR3,53,-33,0 + LWWW R3GU4A+FR5,53,-34,0 + LWWW R3DU3B+FR2,52,-36,1 + LWWW R3DU3B+FR4,56,-32,1 + LWWW R3BF3A+FR1,59,-34,0 + .long 0 +#Taker + LWWW U3DU3B+FR2,46,-38,1 + LWWW U3DU3B+FR5,53,-30,1 + LWWW U3DU3B+FR6,57,-28,1 + LWWW U3DU3B+FR8,47,-25,1 + LWWW U3DU3B+FR10,55,-24,1 + LWWW U4BF3Z+FR5,61,-14,0 + .long 0 +#Yokozuna + LWWW Y3GU2A+FR1,47,-32,0 + LWWW Y3GU2A+FR2,56,-25,0 + LWWW Y3GU2A+FR6,40,-32,0 + LWWW Y3GU2A+FR8,46,-30,0 + LWWW Y3GU2A+FR11,60,-29,0 + LWWW Y3BF3A+FR1,60,-23,0 + .long 0 +#Shawn + LWWW S3GU2A+FR1,47,-40,0 + LWWW S3GU4A+FR2,53,-32,0 + LWWW S3GU4A+FR4,55,-36,0 + LWWW S3GU4A+FR6,57,-24,0 + LWWW S3GU4A+FR7,59,-34,0 + LWWW S3BF3A+FR1,48,-34,0 + .long 0 +#BamBam + LWWW B3GU4A+FR3,46,-36,0 + LWWW B3GU4A+FR4,53,-34,0 + LWWW B3GU4A+FR5,59,-33,0 + LWWW B3GU4A+FR7,50,-31,0 + LWWW B3GU4A+FR10,49,-32,0 + LWWW B3BF3C+FR5,61,-27,0 + .long 0 +#Doink + LWWW D3GU4A+FR2,49,-43,0 + LWWW D3GU4A+FR4,49,-41,0 + LWWW D3GU4A+FR5,41,-27,0 + LWWW D3GU4A+FR6,47,-30,0 + LWWW D3GU4A+FR7,57,-42,0 + LWWW D3BF3A+FR2,56,-33,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GU4A+FR1,48,-40,0 + LWWW L3DU3A+FR4,33,-29,1 + LWWW L3DU3A+FR6,35,-31,1 + LWWW L3DU3A+FR7,41,-27,1 + LWWW L3DU3A+FR9,56,-34,1 + LWWW L3BF3B+FR5,56,-30,0 + .long 0 + + +#****************************************************************************** + + SUBR yok_4_taunt_anim + + .word ANI_SETMODE,MODE_UNINT + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 4,Y4CO4D+FR1 + WL 4,Y4CO4D+FR2 + + WL 4,Y4CO4D+FR3 + WL 4,Y4CO4D+FR4 + WL 4,Y4CO4D+FR5 + WL 4,Y4CO4D+FR6 + WL 4,Y4CO4D+FR7 + WL 4,Y4CO4D+FR8 + + WL 4,Y4CO4D+FR3 + WL 4,Y4CO4D+FR4 + WL 4,Y4CO4D+FR5 + WL 4,Y4CO4D+FR6 + WL 4,Y4CO4D+FR7 + WL 4,Y4CO4D+FR8 + + WL 4,Y4CO4D+FR1 + +; .ref set_taunt_bit +; WL ANI_CODE,set_taunt_bit + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + WL ANI_CHANGEANIM,yok_stand4_anim +; .word ANI_END + +#***************************************************************************** +* +* HELD OVERHEAD ANIMATION + + SUBR yok_heldoh_anim + + .word ANI_SETPLYRMODE,MODE_ATTACHED + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOGRAVITY + .word ANI_SETSPEED,100h + + .word ANI_SETWORD,USR_VAR1,0 ;loop count + WL ANI_CODE,DO_OTHERNONO + +#loop + + WL 4,Y3MF3B+FR1 + WL 4,Y3MF3B+FR2 + WL 4,Y3MF3B+FR3 + WL 4,Y3MF3B+FR4 + WL 4,Y3MF3B+FR5 + WL 4,Y3MF3B+FR6 + WL 4,Y3MF3B+FR7 + + WL ANI_CODE,#inc_loop + WL ANI_IFNOTSTATUS,#loop + +;Fall out of overhead hold by reversing thru pickup frames + .word ANI_DETACH + + + .word ANI_SETMODE,MODE_NORMAL|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_INAIR + WL ANI_CODE,FIND_AND_KILL_ENDLESS + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_XVEL,-40000h,AM_HIT_REL + WLW ANI_SET_ZVEL,10000h,AM_ABS + .word ANI_FRICTION,3000h + + WL 2,Y3MF3B+FR7 + .word ANI_OFFSET,-20,-50,0 ;x,y,z + WL 4,Y3MS3Z+FR4 + WL 4,Y3MS3Z+FR3 + WL 4,Y3MS3Z+FR2 + WL 4,Y3MS3Z+FR1 + .word ANI_WAITHITGND + WL 2,Y2ST2Z+FR4 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +;Loop 4 times, then break out! +#inc_loop + move *a13(USR_VAR1),a0 + inc a0 + move a0,*a13(USR_VAR1) + cmpi 3,a0 + jrgt #breakout + +; move *a13(ATTACH_PROC),a0,L +; jrz #breakout + + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#breakout + move *a13(ANIMODE),a1 + ori MODE_STATUS,a1 + move a1,*a13(ANIMODE) + rets + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK + + SUBR yok_break_neck2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + WLW ANI_SET_ZVEL,8000h,AM_ABS + .word ANI_SHAKER,50 + + .ref ckzpos + WL ANI_CODE,ckzpos + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP + WL 3,Y3FD3N+FR5 + WL 8,Y3FD3N+FR6 + WL 3,Y3FD3N+FR7 + WL 3,Y3FD3N+FR8 + .word ANI_WAITHITGND + .ref HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + + + .word ANI_OFFSET,-20,0,0 + + + + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,Y3KF3B+FR1 + WL 3,Y3KF3B+FR2 + WL 3,Y3KF3B+FR3 + WL 3,Y3KF3B+FR4 + WL 3,Y3KF3B+FR5 + WL 3,Y3KF3B+FR6 + + WL 3,Y3KF3B+FR6 + .word ANI_WAITROLL + .ref yok_faceup_getup_anim + + WL ANI_CHANGEANIM,yok_faceup_getup_anim +; .word ANI_END + + SUBR yok_break_neck3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + WL ANI_SET_YVEL,58000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + + .ref ckzpos + WL ANI_CODE,ckzpos + + .word ANI_DEBRIS,150,5,0,-5,0 ;%chance, tbl index, x,y,z off + + WL 15,Y4POGO+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + .word ANI_XFLIP + WL 3,Y3FD3N+FR4 + WL 3,Y3FD3N+FR5 + WL 8,Y3FD3N+FR6 + WL 3,Y3FD3N+FR7 + WL 3,Y3FD3N+FR8 + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_OFFSET,-20,0,0 + .word ANI_ZEROVELS + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,Y3KF3B+FR1 + WL 3,Y3KF3B+FR2 + WL 3,Y3KF3B+FR3 + WL 3,Y3KF3B+FR4 + WL 3,Y3KF3B+FR5 + WL 3,Y3KF3B+FR6 + + WL 3,Y3KF3B+FR6 + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,yok_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* THROWN FROM RING (shn_bslm, shn_frnk) + + SUBR yok_flyout_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WWL ANI_SETLONG,OBJ_GRAVITY,0f000h + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL + + + WL 6,Y3FL3W+FR4 + WL 6,Y3FL3W+FR5 +#cont WL 6,Y3FL3W+FR6 + WL 6,Y3FL3W+FR7 + .word ANI_WAITHITGND + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + + .word ANI_DAMAGE,D_HIPTOSS + +; .word ANI_SETWORD,DELAY_METER,0 +; .word ANI_GETUP,500 + + .word ANI_OFFSET,10,0,0 + WL 3,Y3FD3A+FR7 + .word ANI_XFLIP + .ref yok_hitonground_anim + WL ANI_CHANGEANIM,yok_hitonground_anim + + SUBR yok_flyout2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETSPEED,100h + + WWL ANI_SETLONG,OBJ_GRAVITY,0E000h + .word ANI_SET_IDIOT + WL ANI_CODE,DO_WAIL + WL ANI_GOTO,#cont + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM HIPTOSS + + SUBR yok_tossed_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + + .word ANI_XFLIP + + WL ANI_CODE,ckzpos + + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_SET_IDIOT + .word ANI_GETUP,STAY_TIME + WL ANI_CODE,HIT_THE_MAT + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_OFFSET,15,0,0 ;x,y,z + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + WL 4,Y3CP3B+FR5 + WL 4,Y3CP3B+FR6 + .word ANI_ZEROVELS + WL 4,Y3CP3B+FR7 + WL 4,Y3CP3B+FR8 + + .word ANI_WAITHITGND + .ref SMALL_BOUNCE + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim +; .word ANI_END + +;FIX!! Make throw out of ring if close to ropes +#***************************************************************************** +* +* FLIP/FALL FROM BAM BAM DUCK TOSS + + SUBR yok_tossed2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + WL ANI_CODE,ckzpos + + WLW ANI_SET_XVEL,60000h,AM_HIT_REL + WL ANI_SET_YVEL,30000h + .word ANI_OFFSET,-20,20,0 ;x,y,z + WL 4,Y3FL3W+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,30 + .word ANI_GETUP,STAY_TIME + .word ANI_DAMAGE,D_HIPTOSS + + WL 4,Y3FL3W+FR7 + WL 3,Y3FD3A+FR7 + + .word ANI_XFLIP + + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,50000h + .word ANI_OFFSET,15,0,0 ;x,y,z + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + WL 4,Y3CP3B+FR5 + WL 4,Y3CP3B+FR6 + .word ANI_ZEROVELS + WL 4,Y3CP3B+FR7 + WL 4,Y3CP3B+FR8 + + .word ANI_WAITHITGND + .ref SMALL_BOUNCE + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 1,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** + + .bss #opp_xvel,32 + + SUBR yok_3_fake_hold_anim +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 3,Y4GH3C+FR2 + WL 3,Y4GH3C+FR3 + + WL 7,Y4GH3C+FR4 + WL ANI_GOTO,#missed + + SUBR yok_3_head_hold2_anim +;Head hold when standing next to player +;No collisions possible + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + + .word ANI_STARTATTACK,AT_PUPPET,6 + WL 3,Y4GH3C+FR2 + WL 3,Y4GH3C+FR3 + + .word ANI_ATTACK_ON, AMODE_PUPPET_HDGRAB,40-40,80,37+60,23 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,7,Y4GH3C+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + WL ANI_GOTO,#gothim + + SUBR yok_3_head_hold_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + +;#4 grab to head hold + .word ANI_STARTATTACK,AT_PUPPET,6 + + WL 2,Y4GH3C+FR2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff +; LEAPATOPP 6,999,76,45,90000h,TGT_HEAD,46,105,0 + LEAPATOPP 9,999,40,45,90000h,TGT_HEAD,46,105,0 + WL 3,Y4GH3C+FR3 + + .word ANI_ATTACK_ON, AMODE_PUPPET,40-40,80,37+40,23 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,6,Y4GH3C+FR4 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb +#gothim +;got him + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_SETWORD,USR_VAR2,0 + + .word ANI_CLR_BUTCOUNT + .ref head_grab_time + WL ANI_CODE,head_grab_time + + .word ANI_ATTACHZ,0,0,-4 ;x & y don't matter. + WL ANI_CODE,DO_NONO + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,1,Y4GH3C+FR5,#puppet_tbl,0 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,Y4GH3C+FR5,#puppet_tbl,0 + + WWLLW ANI_SUPERSLAVE2,4,Y4GH3C+FR7,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y4GH3C+FR8,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,Y4GH3C+FR9,#puppet_tbl,3 + + .word ANI_SETPLYRMODE,MODE_HEADHOLD + WL ANI_SLAVEANIM,#headheld_tbl + + WL 1,Y4GH3C+FR9 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedb + .word ANI_ZEROVELS + WL ANI_SET_YVEL,30000h + + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,Y4GH3C+FR4 + WL 3,Y4GH3C+FR3 + WL 3,Y4GH3C+FR2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missed + WL ANI_CODE,CALL_MISSES + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,Y4GH3C+FR4 + WL 3,Y4GH3C+FR3 + WL 3,Y4GH3C+FR2 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + +#Bret + LWWW H4AH3A+FR1,56,5,0 + LWWW H3HB3A+FR3,60,0,0 + LWWW H3HB3A+FR2,59,-5,0 + LWWW H3BF3A+FR1,59,-33,0 + .long 0 +#Razor + LWWW R4AH4C+FR3,59,4,0 + LWWW R3HB3A+FR3,63,0,0 + LWWW R3HB3A+FR2,68,-15,0 + LWWW R3BF3A+FR1,66,-35,0 + .long 0 +#Taker + LWWW U4AH3A+FR2,51,14,0 + LWWW U4BF3A+FR2,57,12,0 + LWWW U4BF3A+FR3,38,-2,0 + LWWW U4BF3Z+FR5,62,-14,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR2,71,-5,0 + LWWW Y4AM4A+FR1,76,1,0 + LWWW Y4AM4A+FR2,73,-4,0 + LWWW Y3BF3A+FR1,65,-23,0 + .long 0 +#Shawn + LWWW S4AH3D+FR5,53,-4,0 + LWWW S4AH3D+FR1,51,6,0 + LWWW S4BF3A+FR2,62,-7,0 + LWWW S3BF3A+FR1,51,-34,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,48,-1,0 + LWWW B4BF3A+FR1,72,11,0 + LWWW B3HB3A+FR2,63,-18,0 + LWWW B3BF3C+FR5,63,-27,0 + .long 0 +#Doink + LWWW D3AH3B+FR1,51,1,0 + LWWW D3AK3A+FR3,51,10,0 + LWWW D3AK3A+FR2,65,-5,0 + LWWW D3BF3A+FR2,60,-33,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,50,-3,0 + LWWW L3BF3A+FR1,62,7,1 + LWWW L3BF3A+FR2,64,-8,1 + LWWW L3BF3B+FR5,60,-31,0 + .long 0 + + .ref rzr_3_head_held_anim + .ref bam_3_head_held_anim + .ref und_3_head_held_anim +; .ref yok_3_head_held_anim + .ref hrt_3_head_held_anim + .ref lex_3_head_held_anim + .ref shn_3_head_held_anim + +#headheld_tbl + .long hrt_3_head_held_anim + .long rzr_3_head_held_anim + .long und_3_head_held_anim + .long yok_3_head_held_anim + .long shn_3_head_held_anim + .long bam_3_head_held_anim + .long dnk_3_head_held_anim + .long 0 + .long lex_3_head_held_anim + +#***************************************************************************** +* +* VERTICAL SUPLEX + + SUBR yok_vsuplex_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + + ;make sure we're attached - needed for the reversal + .word ANI_ATTACK_ON,AMODE_PUPPET,10,48,56,36 + WWL ANI_WAITHITOPP,3,Y4SU4A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;got him + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_SOUND,82h ;Effort grunt + + .word ANI_ATTACHZ,0,0,-2 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; WL ANI_SLAVEANIM,slaveanim_tbl +; .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_SETOPPMODE,MODE_GHOST + + WWLLW ANI_SUPERSLAVE2,4,Y4SU4A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4A+FR2,#puppet_tbl,1 + + WL ANI_SET_YVEL,38000h + WWLLW ANI_SUPERSLAVE2,4,Y4SU4A+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4A+FR4,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,Y4SU4B+FR1,#puppet_tbl,4 + .word ANI_WAITHITGND + .word ANI_SHAKER,25 + WL ANI_CODE,HIT_THE_MAT + WWLLW ANI_SUPERSLAVE2,12,Y4SU4B+FR1,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,28,Y4SU4B+FR2,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,3,Y4SU4B+FR3,#puppet_tbl,6 +; .word ANI_OFFSET,0,45,0 ;x,y,z +; WL ANI_SET_YVEL,030000h +; WLW ANI_SET_XVEL,-30000h,AM_FACE_REL + WWLLW ANI_SUPERSLAVE2,3,Y4SU4B+FR4,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,3,Y4SU4B+FR5,#puppet_tbl,8 + WWLLW ANI_SUPERSLAVE2,3,Y4SU4B+FR6,#puppet_tbl,9 + +; WWLLW ANI_SUPERSLAVE2,3,Y4SU4B+FR7,#puppet_tbl,10 +; .word ANI_WAITHITGND + + .word ANI_ZEROVELS + + .word ANI_DRAW_NAME,42 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,45 + + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + WL ANI_CODE,CALL_SPECIAL_MOVE + + WWLLW ANI_SUPERSLAVE2,3,Y4SU4B+FR7,#puppet_tbl,10 + WWLLW ANI_SUPERSLAVE2,2,Y4SU4B+FR8,#puppet_tbl,11 + WWLLW ANI_SUPERSLAVE2,2,Y4SU4B+FR9,#puppet_tbl,12 + + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#breakneck_tbl + WL ANI_OPPOFFSET,#release_table + WLLL ANI_SETOPPVELS,-20000h,70000h,0 ;x,y,z vels + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_DETACH + + WL 15,Y4SU4B+FR10 + + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#release_table + ; X Y + .word -25,0 ;Bret + .word 0,0 ;Razor + .word 0,0 ;Taker + .word 0,0 ;Yokozuna + .word 0,0 ;Shawn + .word 0,0 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,0 ;Lex + +#xflip_tbl + .word 1 ;bret + .word 1 ;razor + .word 1 ;taker + .word 1 ;yoko + .word 1 ;shawn + .word 1 ;bam + .word 1 ;doink + .word 0 ;spare + .word 1 ;lex + + .ref hrt_break_neck2_anim + .ref rzr_break_neck2_anim + .ref und_break_neck2_anim + .ref shn_break_neck2_anim + .ref bam_break_neck2_anim + .ref dnk_break_neck2_anim + .ref lex_break_neck2_anim + +#breakneck_tbl + .long hrt_break_neck2_anim + .long rzr_break_neck2_anim + .long und_break_neck2_anim + .long yok_break_neck2_anim + .long shn_break_neck2_anim + .long bam_break_neck2_anim + .long dnk_break_neck2_anim + .long 0 + .long lex_break_neck2_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3PP3X+FR1,23,-30,0 + LWWW H3PP3X+FR2,20,16,0 + LWWW H3PP3X+FR4,21,38,0 + LWWW H3PP3X+FR5,22,53,0 + LWWW H3PP3X+FR6,16,63,0 + LWWW H3PP3X+FR6,15,63,0 + LWWW H3PP3X+FR6,13,64,0 + LWWW H3PP3X+FR6,9,70,0 + LWWW H3PP3X+FR6,10,68,0 + LWWW H3PP3X+FR6,2,73,0 + LWWW H3PP3X+FR6,-13,78,0 + LWWW H3PP3X+FR7,-42,14,0 + LWWW H3PP3X+FR8,-42,-7,0 + .long 0 +#Razor + LWWW R3GP3Z+FR1,22,-31,0 + LWWW R3GP3Z+FR2,27,-16,0 + LWWW R3GP3Z+FR4,34,38,0 + LWWW R3GP3Z+FR5,27,49,0 + LWWW R3GP3Z+FR5,30,56,0 + LWWW R3GP3Z+FR5,30,56,0 + LWWW R3GP3Z+FR6,26,58,0 + LWWW R3GP3Z+FR6,27,62,0 + LWWW R3GP3Z+FR6,27,61,0 + LWWW R3GP3Z+FR6,19,71,0 + LWWW R3GP3Z+FR6,6,77,0 + LWWW R3GP3Z+FR7,-33,25,0 + LWWW R3GP3Z+FR8,-34,-16,0 + .long 0 +#Taker + LWWW U3PP3X+FR1,30,-24,1 + LWWW U3PP3X+FR3,26,-7,1 + LWWW U3PP3X+FR4,19,7,1 + LWWW U3PP3X+FR5,25,38,1 + LWWW U3PP3X+FR6,30,68,1 + LWWW U3PP3X+FR6,29,68,1 + LWWW U3PP3X+FR6,25,71,1 + LWWW U3PP3X+FR6,26,77,1 + LWWW U3PP3X+FR6,24,76,1 + LWWW U3PP3X+FR6,15,82,1 + LWWW U3PP3X+FR6,-4,87,1 + LWWW U3GP3X+FR1,-33,8,1 + LWWW U3GP3X+FR2,-25,-18,1 + .long 0 +#Yokozuna + LWWW Y3PP3Q+FR1,24,-20,0 + LWWW Y3PP3Q+FR2,26,-9,0 + LWWW Y3PP3Q+FR3,27,-6,0 + LWWW Y3PP3Q+FR4,26,-1,0 + LWWW Y3PP3Q+FR6,22,28,0 + LWWW Y3PP3Q+FR7,21,34,0 + LWWW Y3PP3Q+FR7,15,41,0 + LWWW Y3PP3Q+FR7,12,47,0 + LWWW Y3PP3Q+FR7,13,44,0 + LWWW Y3PP3Q+FR7,3,52,0 + LWWW Y3PP3Q+FR7,-11,61,0 + LWWW Y3FD3N+FR3,-45,1,0 + LWWW Y3FD3N+FR4,-35,15,0 + .long 0 +#Shawn + LWWW S3GP3X+FR1,32,-28,0 + LWWW S3GP3X+FR2,29,-12,0 + LWWW S3GP3X+FR3,27,3,0 + LWWW S3GP3X+FR4,25,39,0 + LWWW S3GP3X+FR5,31,55,0 + LWWW S3GP3X+FR5,30,55,0 + LWWW S3OS3X+FR8,24,52,1 + LWWW S3OS3X+FR8,24,53,1 + LWWW S3OS3X+FR8,24,47,1 + LWWW S3OS3X+FR8,16,53,1 + LWWW S3OS3X+FR8,-2,58,1 + LWWW S3FD3X+FR2,-32,19,0 + LWWW S3GP3X+FR6,-29,-10,0 + .long 0 +#BamBam + LWWW B3PP3Q+FR1,24,-31,0 + LWWW B3PP3Q+FR2,27,-11,0 + LWWW B3PP3Q+FR3,31,6,0 + LWWW B3PP3Q+FR4,30,33,0 + LWWW B3PP3Q+FR5,30,57,0 + LWWW B3PP3Q+FR5,29,57,0 + LWWW B3PP3Q+FR6,14,65,0 + LWWW B3PP3Q+FR6,14,65,0 + LWWW B3PP3Q+FR6,10,61,0 + LWWW B3PP3Q+FR6,1,68,0 + LWWW B3PP3Q+FR6,-16,80,0 + LWWW B3PP3Q+FR7,-48,20,0 + LWWW B3FD3C+FR1,-49,-5,0 + .long 0 +#Doink + LWWW D3PD3Z+FR1,29,-38,1 + LWWW D3PD3Z+FR2,32,-9,1 + LWWW D3PD3Z+FR3,29,13,1 + LWWW D3PD3Z+FR5,19,55,1 + LWWW D3PD3Z+FR5,22,62,1 + LWWW D3PD3Z+FR5,21,62,1 + LWWW D3PD3Z+FR6,27,53,1 + LWWW D3PD3Z+FR6,28,58,1 + LWWW D3PD3Z+FR6,24,57,1 + LWWW D3PD3Z+FR6,14,62,1 + LWWW D3PD3Z+FR6,-2,65,1 + LWWW D3PD3Z+FR8,-36,2,1 + LWWW D3PD3Z+FR9,-30,-19,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3GP3Z+FR1,28,-28,0 + LWWW L3GP3Z+FR2,31,-10,0 + LWWW L3GP3Z+FR3,30,-5,0 + LWWW L3GP3Z+FR5,28,27,0 + LWWW L3GP3Z+FR6,28,50,0 + LWWW L3GP3Z+FR6,27,50,0 + LWWW L3GP3Z+FR6,22,54,0 + LWWW L3GP3Z+FR6,22,56,0 + LWWW L3GP3Z+FR6,22,50,0 + LWWW L3GP3Z+FR6,14,56,0 + LWWW L3GP3Z+FR6,0,64,0 + LWWW L3FH3A+FR6,-37,16,0 + LWWW L3FD3B+FR1,-29,-11,0 + .long 0 + + +#***************************************************************************** +* +* HIPTOSS + + SUBR yok_combo_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,8 + + .word ANI_SET_RPTCOUNT,3 +#slam_loop + .word ANI_CLR_BUTCOUNT + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 12,100,100,35,90000h,TGT_CHEST,39,73,0 + WL ANI_SET_YVEL,0h + + WL 3,Y4LZ3A+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET,0,44,80,52 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,Y4LZ3A+FR1 + .word ANI_ZERO_XZVELS + WWL ANI_WAITHITOPP,3,Y4LZ3A+FR1 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc +;got him + WL ANI_CODE,DO_GRUNT + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,2,Y4LZ3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,Y4LZ3A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,2,Y4LZ3A+FR3,#puppet_tbl,2 + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WWWL ANI_IFROPE,RC_FRONT,XTOSSDIST_CLOSE,#throw_him_outc + WWLLW ANI_SUPERSLAVE2,3,Y4LZ3A+FR4,#puppet_tbl,3 + .word ANI_OFFSET,0,50,0 ;x,y,z + WWLLW ANI_SUPERSLAVE2,2,Y4LZ3A+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,Y4LZ3A+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,Y4LZ3A+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,3,Y4LZ3A+FR8,#puppet_tbl,7 + WWLLW ANI_SUPERSLAVE2,2,Y4LZ3A+FR9,#puppet_tbl,8 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_OPP_GETUP,-30 + + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_CLROPPMODE,MODE_GHOST + WL ANI_SLAVEANIM,SLAM_HIM + WLLL ANI_SETOPPVELS,0,090000h,0000h ;x,y,z vels + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 4,Y4LZ3A+FR9 + .word ANI_XFLIP + + .ref yok_faceup_getup2_anim +; WL ANI_CHANGEANIM,yok_faceup_getup2_anim + + WL 2,Y3GU2A+FR4 +; WL 2,Y3GU2A+FR5 + WL 2,Y3GU2A+FR6 + WL 2,Y3GU2A+FR7 + WL 2,Y3GU2A+FR8 +; WL 2,Y3GU2A+FR9 + WL 2,Y3GU2A+FR10 + WL 2,Y3GU2A+FR11 + WL 2,Y3GU2A+FR12 + + WL 2,Y3GU4A+FR13 + WL 2,Y3GU4A+FR14 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,Y3GU4A+FR14 + + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_REPEAT + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#slam_loop + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NO_REPEAT + WL ANI_CHANGEANIM,yok_combo_spinslam_anim + +#NO_REPEAT + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedbc + WL 10,Y4LZ3A+FR1 +#missedc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_CODE,CALL_MISSES + WL 15,Y4LZ3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_outc + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#throw_him_out + + .ref hrt_slamnobounce_anim ;bret + .ref rzr_slamnobounce_anim ;razor + .ref und_slamnobounce_anim ;taker + .ref yok_slamnobounce_anim ;yoko + .ref shn_slamnobounce_anim ;shawn + .ref bam_slamnobounce_anim ;bam + .ref dnk_slamnobounce_anim ;doink + .ref und_slamnobounce_anim ;spare + .ref lex_slamnobounce_anim ;lex +SLAM_HIM + .long hrt_slamnobounce_anim ;bret + .long rzr_slamnobounce_anim ;razor + .long und_slamnobounce_anim ;taker + .long yok_slamnobounce_anim ;yoko + .long shn_slamnobounce_anim ;shawn + .long bam_slamnobounce_anim ;bam + .long dnk_slamnobounce_anim ;doink + .long und_slamnobounce_anim ;spare + .long lex_slamnobounce_anim ;lex + + +******************************************* + + SUBR yok_4_hiptoss2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,6 + +;Rotate into 2 dir +; WL 2,Y1TT5Z+FR3 +; WL 2,Y1TT5Z+FR2 + + SUBR yok_2_hiptoss2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .WORD ANI_ADD_MOVE,MOVE_C_1,2,2 + .word ANI_STARTATTACK,AT_PUPPET,3 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 7,65,60,40,90000h,TGT_CHEST,20,0,0 + WL ANI_SET_YVEL,0h + + WL 3,Y4LZ3A+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET_TOSS,33,36,44,48 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,8,Y4LZ3A+FR1 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + + WL ANI_GOTO,#cont + + SUBR yok_4_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,7 +;Rotate into 2 dir +; WL 2,Y1TT5Z+FR3 +; WL 2,Y1TT5Z+FR2 + + SUBR yok_2_hiptoss_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,10 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,50,30,40,90000h,TGT_CHEST,39,73,0 + WL ANI_SET_YVEL,0h + + WL 4,Y4LZ3A+FR1 + + .word ANI_ATTACK_ON, AMODE_PUPPET_TOSS,0,44,52-8,52 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,Y4LZ3A+FR1 + .word ANI_ZERO_XZVELS + .word ANI_ATTACK_OFF + WL 4,Y4LZ3A+FR1 + +#cont + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb +#got_him + WL ANI_CODE,DO_GRUNT + + .word ANI_DRAW_NAME,26 + WL ANI_CODE,CALL_SPECIAL_MOVE + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker +; .word ANI_ATTACHZ,0,0,10 ;x & y don't matter. + + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,2,Y4LZ3A+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR3,#puppet_tbl,2 + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + WWLLW ANI_SUPERSLAVE2,2,Y4LZ3A+FR4,#puppet_tbl,3 + WWWL ANI_IFROPE,RC_FRONT,XTOSSDIST_CLOSE,#throw_him_out + .word ANI_OFFSET,0,50,0 ;x,y,z +; WL ANI_SET_YVEL,02000h + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR5,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR6,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR7,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR8,#puppet_tbl,7 + +; .word ANI_WAITHITGND +; .word ANI_ZEROVELS + + WWLLW ANI_SUPERSLAVE2,4,Y4LZ3A+FR9,#puppet_tbl,8 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,60 + .word ANI_OPP_GETUP,300 + + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WL ANI_XFLIP_TBL,#xflip_tbl + .word ANI_CLROPPMODE,MODE_GHOST + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,20000h,40000h,00000h ;x,y,z vels + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 3,Y4LZ3A+FR9 + .word ANI_XFLIP + .ref yok_faceup_getup2_anim + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#missedb +; .ref ck_hiptoss +; WL ANI_CODE,ck_hiptoss +; WL ANI_IFNOTSTATUS,#got_him + + WL 10,Y4LZ3A+FR1 +;Delay longer if 2nd hiptoss in quick succession! + .ref hiptoss_delay + WL ANI_CODE,hiptoss_delay + WL ANI_IFNOTSTATUS,#missed + WL 24,Y4LZ3A+FR1 +#missed + WL ANI_CODE,CALL_MISSES + WL 8,Y4LZ3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WL ANI_CODE,CALL_THROWN_OUT + WLLL ANI_ATTACHVEL,080000h,90000h,0h ;x,y,z + WL ANI_SLAVEANIM,#flyout_tbl + WL ANI_OPPOFFSET,#release_table + .word ANI_DETACH + WL 3,Y4LZ3A+FR4 + .word ANI_OFFSET,0,50,0 ;x,y,z + WL ANI_SET_YVEL,02000h + WL 3,Y4LZ3A+FR5 + WL 3,Y4LZ3A+FR6 + WL 3,Y4LZ3A+FR7 + WL 3,Y4LZ3A+FR8 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,20 + + WL 3,Y4LZ3A+FR9 + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 3,Y4LZ3A+FR9 + + .word ANI_XFLIP + .ref yok_faceup_getup2_anim + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 1 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H2AH3A+FR5,37,5,0 + LWWW H3FR3A+FR1,16,-1,0 + LWWW H3MS3Z+FR1,-8,8,0 + LWWW H3PP3X+FR1,14,-15,1 + LWWW H3FR3A+FR2,40,2,1 + LWWW H3FR3A+FR3,29,28,1 + LWWW H3FR3A+FR4,16,37,1 + LWWW H3FR3A+FR5,-8,38,1 + LWWW H2CP3A+FR8,-115,-13,0 + .long 0 +#Razor + LWWW R4AM4B+FR2,39,6,0 + LWWW R3TD3A+FR1,15,17,0 + LWWW R3TD3A+FR3,-9,-6,0 + LWWW R3TD3A+FR4,9,-1,1 + LWWW R3TD3A+FR5,51,16,1 + LWWW R3TD3A+FR6,49,37,1 + LWWW R3TD3A+FR7,26,58,1 + LWWW R3TD3A+FR8,-1,59,1 + LWWW R3GU2A+FR1,-110,-9,0 + .long 0 +#Taker + LWWW U3AE4A+FR1,36,17,0 + LWWW U4AM4C+FR4,14,8,0 + LWWW U3FH3A+FR1,12,-13,1 + LWWW U3FH3A+FR2,16,3,0 + LWWW U3FH3A+FR3,41,17,0 + LWWW U3FH3A+FR4,32,40,0 + LWWW U3FH3A+FR5,10,60,0 + LWWW U3FH3A+FR5,-6,60,0 + LWWW U3CP3B+FR1,-120,-7,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR1,46,5,0 + LWWW Y3FL3W+FR1,16,16,0 + LWWW Y3FL3W+FR2,-5,1,0 + LWWW Y3FL3W+FR3,-1,3,1 + LWWW Y3FL3W+FR4,30,22,1 + LWWW Y3FL3W+FR5,28,36,1 + LWWW Y3FL3W+FR6,2,43,1 + LWWW Y3FL3W+FR7,-21,45,1 + LWWW Y3FD3A+FR7,-93,13,1 + .long 0 +#Shawn + LWWW S3OS3X+FR2,24,5,1 + LWWW S3OS3X+FR3,14,17,1 + LWWW S3OS3X+FR4,-13,-3,1 + LWWW S3OS3X+FR5,-3,-5,0 + LWWW S3OS3X+FR6,35,32,0 + LWWW S3OS3X+FR7,45,53,0 + LWWW S3OS3X+FR8,35,62,0 + LWWW S3OS3X+FR9,-14,59,0 + LWWW S3OS3X+FR10,-90,-2,0 + .long 0 +#BamBam + LWWW B4AM4A+FR2,38,13,0 + LWWW B4AM4A+FR3,22,15,0 + LWWW B4TD3B+FR3,-9,-1,0 + LWWW B4TD3B+FR4,18,-1,1 + LWWW B4TD3B+FR5,41,32,1 + LWWW B4TD3B+FR6,41,56,1 + LWWW B4TD3B+FR7,19,57,1 + LWWW B4TD3B+FR8,-6,57,1 + LWWW B4TD3B+FR9,-77,6,1 + .long 0 +#Doink + LWWW D3AH3B+FR2,21,-2,0 + LWWW D3PM4C+FR2,-6,18,0 + LWWW D3OS3A+FR1,2,0,0 + LWWW D3OS3A+FR2,10,-2,1 + LWWW D3OS3A+FR3,31,9,1 + LWWW D3OS3A+FR4,33,24,1 + LWWW D3OS3A+FR5,28,32,1 + LWWW D3OS3A+FR6,2,44,1 + LWWW D3SA3A+FR9,-112,-8,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AM4B+FR2,42,-1,0 + LWWW L3FH3A+FR1,7,11,0 + LWWW L3FH3A+FR2,-3,-13,0 + LWWW L3FH3A+FR3,12,4,1 + LWWW L3FH3A+FR4,45,18,1 + LWWW L3FH3A+FR5,41,28,1 + LWWW L3FH3A+FR6,21,50,1 + LWWW L3FH3A+FR6,3,48,1 + LWWW L3CP3B+FR1,-116,-9,0 + .long 0 + +#release_table + ; X Y + .word 0,38 ;Bret + .word 0,10 ;Razor + .word 0,10 ;Taker + .word 0,15 ;Yokozuna + .word 0,10 ;Shawn + .word 0,50 ;BamBam + .word 0,0 ;Doink + .word 0,0 ;Adam + .word 0,10 ;Lex + +#flyout_tbl + .REF hrt_flyout_anim + .REF rzr_flyout_anim + .REF und_flyout_anim + .REF shn_flyout_anim + .REF bam_flyout_anim + .REF dnk_flyout_anim + .REF lex_flyout_anim + + .long hrt_flyout_anim + .long rzr_flyout_anim + .long und_flyout_anim + .long yok_flyout_anim + .long shn_flyout_anim + .long bam_flyout_anim + .long dnk_flyout_anim + .long 0 + .long lex_flyout_anim + +#***************************************************************************** +* +* HELD HEADBUTT + +**************************************************************************** + SUBR yok_combo_heldheadbutt_rpt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_PUPPET,6 + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + WL 2,Y4CD3A+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET,33,36,64,48 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,Y4CD3A+FR2 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc ;Yes, I hit blocker + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,7,Y4CD3A+FR2,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,Y4CD3A+FR4,#puppet_tbl,1 + + .word ANI_SET_RPTCOUNT,4 +#loopc + WWLLW ANI_SUPERSLAVE2,3,Y4CD3A+FR7,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,1,Y4CD3A+FR8,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,1,Y4CD3A+FR9,#puppet_tbl,4 + + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#last_hitc + .word ANI_CLR_BUTCOUNT + + .word ANI_DEBRISAT,100,2,0,100,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DAMAGEOPP,D_HDBUTT2,RD_HDBUTT2 + .WORD ANI_INC_COMBO + WL 3,Y4CD3A+FR9 + WWLLW ANI_SUPERSLAVE2,2,Y4CD3Z+FR2,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,1,Y4CD3Z+FR1,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,2,Y4CD3A+FR8,#puppet_tbl,7 + WL ANI_GOTO,#loopc +#last_hitc + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,25 + .word ANI_DAMAGEOPP,D_HDBUTT,RD_HDBUTT + .word ANI_DEBRISAT,100,1,0,8,0 ;%chance,tbl index,x,y,z off + + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NO_KNEE + WL ANI_CHANGEANIM,yok_combo_knee_anim +#NO_KNEE + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NO_UPPER + WL ANI_CHANGEANIM,yok_combo_uppercut_anim +#NO_UPPER + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NO_HIPTOSS + WL ANI_CHANGEANIM,yok_combo_hiptoss_anim +#NO_HIPTOSS + WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NO_GUT + WL ANI_CHANGEANIM,yok_combo_gut_push_anim +#NO_GUT + WL ANI_SLAVEANIM,#head_hit2_tbl + WL 7,Y4CD3A+FR9 + WL 4,Y4CD3Z+FR1 + WL 5,Y4ST4Y+FR4 + + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#missedbc + WL 10,Y4CD3A+FR2 +#missedc + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL 10,Y4CD3A+FR2 + WL 4,Y4CD3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END +**************************************************************************** + + SUBR yok_heldheadbutt_rpt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_CLR_BUTCOUNT + + .word ANI_STARTATTACK,AT_PUPPET,2 + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + + WL 2,Y4CD3A+FR1 + .word ANI_ATTACK_ON, AMODE_PUPPET_NOFLAIL,33,56,44,18 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,4,Y4CD3A+FR2 + .word ANI_ATTACK_OFF + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + .word ANI_SETOPPMODE,MODE_GHOST + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,10,Y4CD3A+FR2,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y4CD3A+FR4,#puppet_tbl,1 + + .word ANI_SET_RPTCOUNT,4 +#loop + WWLLW ANI_SUPERSLAVE2,5,Y4CD3A+FR7,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,2,Y4CD3A+FR8,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,1,Y4CD3A+FR9,#puppet_tbl,4 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#last_hit + .word ANI_DEC_RPTCOUNT + WL ANI_IFNOT_RPTCOUNT,#last_hit + .word ANI_CLR_BUTCOUNT + + .word ANI_DEBRISAT,100,2,0,100,0 ;%chance, tbl index, x,y,z off + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,25 + .word ANI_DAMAGEOPP,D_HDBUTT2,RD_HDBUTT2 + WL 3,Y4CD3A+FR9 + WWLLW ANI_SUPERSLAVE2,2,Y4CD3Z+FR2,#puppet_tbl,5 + WWLLW ANI_SUPERSLAVE2,2,Y4CD3Z+FR1,#puppet_tbl,6 + WWLLW ANI_SUPERSLAVE2,2,Y4CD3A+FR8,#puppet_tbl,7 + WL ANI_GOTO,#loop + +#last_hit + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_CODE,impact_sound + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,25 + .word ANI_DAMAGEOPP,D_HDBUTT,RD_HDBUTT + .word ANI_DEBRISAT,100,1,0,8,0 ;%chance,tbl index,x,y,z off + +; .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + WL ANI_SLAVEANIM,#head_hit2_tbl + WLLL ANI_SETOPPVELS,30000h,60000h,10000h ;x,y,z vels + .word ANI_DETACH + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + + WL 7,Y4CD3A+FR9 + WL 4,Y4CD3Z+FR1 + WL 5,Y4ST4Y+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR impact_sound + + WRSNDX HDBUTT_L1,HDBUTT_L2 + + move *a13(ATTACH_PROC),a0,L + jrz #x + WRSNDX a0,RUGSLAM_YELL,RUGSLAM_IMPACT +#x rets + + +#missedb + WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit +#no_hit WLLL ANI_SETOPPVELS,60000h,18000h,0h ;x,y,z vels + WL 8,Y4CD3A+FR2 +#missed + WL 8,Y4CD3A+FR2 + WL 4,Y4CD3A+FR1 + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .ref hrt_fall_back_anim + .ref rzr_fall_back_anim + .ref und_fall_back_anim + .ref shn_fall_back_anim + .ref bam_fall_back_anim + .ref dnk_fall_back_anim + .ref lex_fall_back_anim + +;A fall down is cooler from this head butt + +#head_hit2_tbl + + .long hrt_fall_back_anim ;0 Bret Hart + .long rzr_fall_back_anim ;1 Razor Ramon + .long und_fall_back_anim ;2 Undertaker + .long yok_fall_back_anim ;3 Yokozuna + .long shn_fall_back_anim ;4 Shawn Michaels + .long bam_fall_back_anim ;5 Bam Bam + .long dnk_fall_back_anim ;6 Doink + .long 0 ;7 spare + .long lex_fall_back_anim ;8 Lex Luger + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4AH3A+FR4,38,-1,0 + LWWW H4AH3A+FR5,48,6,0 + LWWW H4AH3A+FR5,46,3,0 + LWWW H4AH3A+FR6,56,-3,0 + LWWW H4AH3A+FR1,56,6,0 + LWWW H4AH3A+FR2,48,11,0 + LWWW H4AH3A+FR3,63,6,0 + LWWW H4AH3A+FR4,54,-5,0 + .long 0 +#Razor + LWWW R4AH4C+FR5,39,2,0 + LWWW R4AH4C+FR6,48,5,0 + LWWW R4AH4C+FR7,46,5,0 + LWWW R4AH4C+FR8,55,2,0 + LWWW R4AH4C+FR3,54,3,0 + LWWW R4AH4C+FR4,46,9,0 + LWWW R4AH4C+FR5,61,4,0 + LWWW R4AH4C+FR6,54,-1,0 + .long 0 +#Taker + LWWW U4AH3A+FR2,28,19,0 + LWWW U4AH3A+FR4,31,16,0 + LWWW U4AH3A+FR5,40,7,0 + LWWW U4AH3A+FR6,48,-1,0 + LWWW U4AH3A+FR2,42,15,0 + LWWW U4AH3A+FR3,30,31,0 + LWWW U4AH3A+FR4,44,16,0 + LWWW U4AH3A+FR5,49,4,0 + .long 0 +#Yokozuna + LWWW Y4AH4A+FR4,30,-6,0 + LWWW Y4AH4A+FR5,40,1,0 + LWWW Y4AH4A+FR5,38,-2,0 + LWWW Y4AH4A+FR6,46,0,0 + LWWW Y4AH4A+FR1,57,-2,0 + LWWW Y4AH4A+FR2,47,6,0 + LWWW Y4AH4A+FR3,55,-7,0 + LWWW Y4AH4A+FR4,45,-10,0 + .long 0 +#Shawn + LWWW S4AH3D+FR2,42,-5,0 + LWWW S4AH3D+FR3,53,-6,0 + LWWW S4AH3D+FR5,53,-2,0 + LWWW S4AH3D+FR6,61,-2,0 + LWWW S4AH3D+FR1,53,-4,0 + LWWW S4AH3D+FR2,50,2,0 + LWWW S4AH3D+FR3,66,-6,0 + LWWW S4AH3D+FR4,60,-12,0 + .long 0 +#BamBam + LWWW B4AH4A+FR2,27,-4,0 + LWWW B4AH4A+FR3,36,-2,0 + LWWW B4AH4A+FR4,35,-4,0 + LWWW B4AH4A+FR5,45,-4,0 + LWWW B4AH4A+FR6,39,-3,0 + LWWW B4AH4A+FR1,36,11,0 + LWWW B4AH4A+FR2,49,-2,0 + LWWW B4AH4A+FR3,42,-8,0 + .long 0 +#Doink + LWWW D3AH3B+FR3,31,-7,0 + LWWW D3AH3B+FR5,42,1,0 + LWWW D3AH3B+FR5,40,-2,0 + LWWW D3AM3A+FR1,53,-13,0 + LWWW D3AH3B+FR1,38,1,0 + LWWW D3AH3B+FR2,34,0,0 + LWWW D3AH3B+FR3,53,-5,0 + LWWW D3AH3B+FR5,49,-5,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4A+FR3,38,-1,0 + LWWW L4AH4A+FR4,48,3,0 + LWWW L4AH4A+FR5,46,3,0 + LWWW L4AH4A+FR6,55,1,0 + LWWW L4AH4A+FR1,53,-2,0 + LWWW L4AH4A+FR2,42,6,0 + LWWW L4AH4A+FR3,60,1,0 + LWWW L4AH4A+FR4,54,-3,0 + .long 0 + +#***************************************************************************** +* +* SPIN & SLAM +*************************************************************** + +;do_next_bit +; .WORD ANI_PAUSE,22 +; WL ANI_CHANGEANIM,yok_combo_slap_anim + + SUBR yok_combo_spinslam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_IFOPP,W_DOINK,-1 + WL ANI_IFSTATUS,#NO_BUTTa ;do_next_bit + .word ANI_IFOPP,W_RAZOR,-1 + WL ANI_IFSTATUS,#NO_BUTTa ;do_next_bit + + .WORD ANI_SET_ATTACH + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WL ANI_SLAVEANIM,slaveanim_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_SETOPPMODE,MODE_GHOST + + .word ANI_SET_RPTCOUNT,3 +;*** start of spin sequence +#spin_loop + .word ANI_CLR_BUTCOUNT + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,0,2,0 + WWLLW ANI_SUPERSLAVE2,2,Y4HT3Z+FR1,#puppet_tbl,4 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,1,2,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5A+FR3,#puppet_tbl,5 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,2,1,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5A+FR2,#puppet_tbl,6 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,3,0,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5A+FR1,#puppet_tbl,7 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,4,0,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5F+FR2,#puppet_tbl,8 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,5,1,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5F+FR3,#puppet_tbl,9 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,6,2,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5F+FR4,#puppet_tbl,10 + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,7,2,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5F+FR5,#puppet_tbl,11 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,8,1,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5F+FR6,#puppet_tbl,12 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,9,0,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5A+FR6,#puppet_tbl,13 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,10,0,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5A+FR5,#puppet_tbl,14 +;*** end of spin sequence + .word ANI_DEC_RPTCOUNT + WL ANI_IF_RPTCOUNT,#spin_loop + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + WWLLW ANI_SUPERSLAVE2,2,Y5JS5A+FR4,#puppet_tbl,15 + WWLLW ANI_SUPERSLAVE2,2,Y3GS3A+FR2,#puppet_tbl,16 + WWLLW ANI_SUPERSLAVE2,2,Y3GS3A+FR3,#puppet_tbl,17 + + WWLLW ANI_SUPERSLAVE2,2,Y4OT3A+FR1,#puppet_tbl,18 + WWLLW ANI_SUPERSLAVE2,2,Y4OT3A+FR2,#puppet_tbl,19 + WWLLW ANI_SUPERSLAVE2,2,Y4OT3A+FR3,#puppet_tbl,20 + WWLLW ANI_SUPERSLAVE2,2,Y4OT3A+FR4,#puppet_tbl,21 + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR5,#puppet_tbl,22 + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR6,#puppet_tbl,23 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,45 + + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + .word ANI_INC_COMBO + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,SLAM_HIM + WLLL ANI_SETOPPVELS,0,090000h,0000h ;x,y,z vels + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 3,Y4OT3A+FR6 + WL 3,Y4OT3A+FR7 + WL 3,Y4OT3A+FR8 + + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + .word ANI_XFLIP + WL 1,Y4ST4Y+FR4 +; .word ANI_IMMOBILIZE,75 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NO_SLAP + WL ANI_CHANGEANIM,yok_combo_slap_anim +#NO_SLAP + + WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#NO_BUTT + WL ANI_CHANGEANIM,yok_combo_butt_drop_anim + +#NO_BUTT + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#NO_BUTTa + WL ANI_CODE,#set_immob + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#set_immob + PUSH a9 + move *a13(WHOIHIT),a9,L + CREATE0 #keep_ongrnd + PULL a9 + rets + +#keep_ongrnd + SLEEPK 10 +;Yoko will elbow drop this guy + movi 60,a0 + move a0,*a9(IMMOBILIZE_TIME) + DIE + +*************************************************************** + + SUBR yok_spinslam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_SETPLYRMODE,MODE_NORMAL + + .word ANI_ZEROVELS + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_SETSPEED,100h + + .word ANI_IFOPP,W_DOINK,-1 + WL ANI_IFSTATUS,yok_overhd_slam_anim + .word ANI_IFOPP,W_RAZOR,-1 + WL ANI_IFSTATUS,yok_overhd_slam_anim + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WL ANI_SLAVEANIM,slaveanim_tbl + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_SETOPPMODE,MODE_GHOST + + .ref MAKE_HIM_SCREAM + WL ANI_CODE,MAKE_HIM_SCREAM + + WWLLW ANI_SUPERSLAVE2,3,Y4OT3F+FR1,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,3,Y4OT3F+FR2,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,3,Y4OT3F+FR3,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,Y4OT3F+FR4,#puppet_tbl,3 + + WL ANI_CODE,CALL_SPECIAL_MOVE +;*** start of spin sequence + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,0,2,0 + WWLLW ANI_SUPERSLAVE2,2,Y4HT3Z+FR1,#puppet_tbl,4 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,1,2,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5A+FR3,#puppet_tbl,5 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,2,1,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5A+FR2,#puppet_tbl,6 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,3,0,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5A+FR1,#puppet_tbl,7 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,4,0,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5F+FR2,#puppet_tbl,8 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,5,1,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5F+FR3,#puppet_tbl,9 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,6,2,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5F+FR4,#puppet_tbl,10 + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,7,2,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5F+FR5,#puppet_tbl,11 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,8,1,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5F+FR6,#puppet_tbl,12 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,9,0,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5A+FR6,#puppet_tbl,13 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,10,0,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5A+FR5,#puppet_tbl,14 +;*** end of spin sequence +;*** start of spin sequence + WL ANI_CODE,MAKE_HIM_SCREAM + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,0,2,0 + WWLLW ANI_SUPERSLAVE2,2,Y4HT3Z+FR1,#puppet_tbl,4 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,1,1,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5A+FR3,#puppet_tbl,5 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,2,0,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5A+FR2,#puppet_tbl,6 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,3,0,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5A+FR1,#puppet_tbl,7 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,4,0,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5F+FR2,#puppet_tbl,8 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,5,1,0 + WWLLW ANI_SUPERSLAVE2,1,Y5JS5F+FR3,#puppet_tbl,9 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,6,2,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5F+FR4,#puppet_tbl,10 + + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,7,1,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5F+FR5,#puppet_tbl,11 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,8,1,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5F+FR6,#puppet_tbl,12 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,9,0,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5A+FR6,#puppet_tbl,13 + + WLWWWW ANI_CREATEPROC,SPIN_SWEAT,0,10,0,0 + WWLLW ANI_SUPERSLAVE2,2,Y5JS5A+FR5,#puppet_tbl,14 +;*** end of spin sequence + + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + WWLLW ANI_SUPERSLAVE2,2,Y5JS5A+FR4,#puppet_tbl,15 + WWLLW ANI_SUPERSLAVE2,2,Y3GS3A+FR2,#puppet_tbl,16 + WWLLW ANI_SUPERSLAVE2,2,Y3GS3A+FR3,#puppet_tbl,17 + +; WWWL ANI_IFNOTROPE,RC_FRONT,200,#no_flip2 +; .word ANI_XFLIP +; .word ANI_XFLIP_OPP +;#no_flip2 + + WWLLW ANI_SUPERSLAVE2,2,Y4OT3A+FR1,#puppet_tbl,18 + WWLLW ANI_SUPERSLAVE2,2,Y4OT3A+FR2,#puppet_tbl,19 + WWLLW ANI_SUPERSLAVE2,2,Y4OT3A+FR3,#puppet_tbl,20 + WWLLW ANI_SUPERSLAVE2,2,Y4OT3A+FR4,#puppet_tbl,21 + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR5,#puppet_tbl,22 + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR6,#puppet_tbl,23 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,45 + + .word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,-20000h,50000h,00000h ;x,y,z vels +; WL ANI_OPPOFFSET,#release_table + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 3,Y4OT3A+FR6 + WL 4,Y4OT3A+FR7 + WL 4,Y4OT3A+FR8 + + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + .word ANI_XFLIP + WL 1,Y4ST4Y+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_overhd_slam2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + WL ANI_SLAVEANIM,slaveanim_tbl + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + .word ANI_XFLIP + + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_SETOPPMODE,MODE_GHOST + + .word ANI_XFLIP_OPP + .WORD ANI_FACE_OPP,MOVE_RIGHT|MOVE_DOWN + + + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR1,#puppet_tbl,18 + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR2,#puppet_tbl,19 + WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_out + WL ANI_GOTO,#inherex + + SUBR yok_overhd_slam_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_ATTACHZ,0,0,-2 ;put opp behind attacker + WL ANI_SLAVEANIM,slaveanim_tbl + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + .word ANI_XFLIP + + .word ANI_SETOPP_PLYRMODE,MODE_NORMAL + .word ANI_SETOPPMODE,MODE_GHOST + + .word ANI_XFLIP_OPP + .WORD ANI_FACE_OPP,MOVE_RIGHT|MOVE_DOWN + + + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR1,#puppet_tbl,18 + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR2,#puppet_tbl,19 +; WWWL ANI_IFROPE,RC_BACK,XTOSSDIST_CLOSE,#throw_him_out +#inherex + + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR3,#puppet_tbl,20 + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR4,#puppet_tbl,21 + WWLLW ANI_SUPERSLAVE2,3,Y4OT3A+FR5,#puppet_tbl,22 + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WWLLW ANI_SUPERSLAVE2,1,Y4OT3A+FR6,#puppet_tbl,23 + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,45 + + .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#slambounce_tbl + WLLL ANI_SETOPPVELS,-20000h,50000h,20000h ;x,y,z vels +; WL ANI_OPPOFFSET,#release_table + .word ANI_DETACH + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 3,Y4OT3A+FR6 + WL 4,Y4OT3A+FR7 + WL 4,Y4OT3A+FR8 + + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + .word ANI_XFLIP + WL 1,Y4ST4Y+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#throw_him_out + WL ANI_CODE,CALL_THROWN_OUT + WLLL ANI_ATTACHVEL,-0A0000h,70000h,0h ;x,y,z + WL ANI_SLAVEANIM,flyout_tbl + WL ANI_OPPOFFSET,release_throw_table + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + .word ANI_DETACH + + WL 3,Y4OT3A+FR3 + WL 3,Y4OT3A+FR4 + WL 3,Y4OT3A+FR5 + WL 1,Y4OT3A+FR6 + + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 +; .word ANI_DAMAGEOPP,D_HIPTOSS,RD_HIPTOSS + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + WL 3,Y4OT3A+FR6 + WL 4,Y4OT3A+FR7 + WL 4,Y4OT3A+FR8 + .word ANI_FACE,MOVE_LEFT|MOVE_DOWN + .word ANI_XFLIP + WL 1,Y4ST4Y+FR4 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + .ref hrt_flyout_anim + .ref rzr_flyout_anim + .ref und_flyout_anim + .ref shn_flyout_anim + .ref bam_flyout_anim + .ref dnk_flyout_anim + .ref lex_flyout_anim + +release_throw_table + .word 0,0 + .word 0,0 + .word 0,0 + .word 0,0 + .word 0,0 + .word 0,0 + .word 0,0 + .word 0,0 + .word 0,0 + +flyout_tbl + .long hrt_flyout_anim + .long rzr_flyout_anim + .long und_flyout_anim + .long yok_flyout_anim + .long shn_flyout_anim + .long bam_flyout_anim + .long dnk_flyout_anim + .long 0 + .long lex_flyout_anim + + +;#release_table +; ; X Y +; .word 50,0 ;Bret +; .word 50,0 ;Razor +; .word 50,0 ;Taker +; .word 50,0 ;Yokozuna +; .word 50,0 ;Shawn +; .word 50,0 ;BamBam +; .word 50,0 ;Doink +; .word 50,0 ;Adam +; .word 50,0 ;Lex + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 1 ;bam + .word 1 ;doink + .word 0 ;spare + .word 0 ;lex + +#slambounce_tbl + .long hrt_slambounce_anim ;bret + .long rzr_slambounce_anim ;razor + .long und_slambounce_anim ;taker + .long yok_slambounce_anim ;yoko + .long shn_slambounce_anim ;shawn + .long bam_slambounce_anim ;bam + .long dnk_slambounce_anim ;doink + .long und_slambounce_anim ;spare + .long lex_slambounce_anim ;lex + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + +#Bret + LWWW H3RS3A+FR5,-21,10,0 + LWWW H3RS3A+FR6,-10,8,0 + LWWW H3RS3A+FR6,19,-18,1 + LWWW H3RS3A+FR5,35,-18,1 + LWWW H3RS3A+FR4,34,-29,1 + LWWW H3RS3A+FR3,26,-28,1 + LWWW H3RS3A+FR2,22,-26,1 + LWWW H3RS3A+FR1,9,-22,1 + LWWW H3RS3A+FR2,-14,-25,0 + LWWW H3RS3A+FR3,-42,-28,0 + LWWW H3RS3A+FR4,-89,-32,0 + LWWW H3RS3A+FR5,-83,-39,0 + LWWW H3RS3A+FR6,-58,-38,0 + LWWW H3RS3A+FR6,9,-37,1 + LWWW H3RS3A+FR5,25,-38,1 + LWWW H3RS3A+FR4,31,-32,1 + LWWW H3RS3A+FR6,49,-21,1 + LWWW H3FR3A+FR1,39,7,0 + LWWW H3FR3A+FR2,36,23,0 + LWWW H3FR3A+FR3,26,50,0 + LWWW H3FR3A+FR4,3,51,0 + LWWW H3FR3A+FR4,-23,39,0 + LWWW H3FR3A+FR5,-64,-11,0 + LWWW H2CP3A+FR8,-144,-64,1 + .long 0 +#Razor + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR4,21,21,0 + + LWWW R3TD3A+FR4,21,21,0 + LWWW R3TD3A+FR5,26,30,0 + LWWW R3TD3A+FR6,-1,27,0 + LWWW R3TD3A+FR7,-23,38,0 + LWWW R3HG3B+FR1,-63,-13,0 + LWWW R3GU2A+FR1,-144,-59,1 + .long 0 +#Taker + LWWW U3RS3A+FR5,-49,18,0 + LWWW U3RS3A+FR6,-40,12,0 + LWWW U3RS3A+FR6,21,-14,1 + LWWW U3RS3A+FR5,49,-18,1 + LWWW U3RS3A+FR4,28,-32,1 + LWWW U3RS3A+FR3,14,-32,1 + LWWW U3RS3A+FR2,17,-28,1 + LWWW U3RS3A+FR1,9,-25,1 + LWWW U3RS3A+FR2,-60,-27,0 + LWWW U3RS3A+FR3,-101,-32,0 + LWWW U3RS3A+FR4,-129,-34,0 + LWWW U3RS3A+FR5,-109,-36,0 + LWWW U3RS3A+FR6,-82,-42,0 + LWWW U3RS3A+FR6,12,-42,1 + LWWW U3RS3A+FR5,24,-36,1 + LWWW U3RS3A+FR4,24,-35,1 + LWWW U3RS3A+FR6,62,-23,1 + LWWW U3FH3A+FR1,39,-11,1 + LWWW U3FH3A+FR1,45,12,1 + LWWW U3FH3A+FR2,26,23,1 + LWWW U3FH3A+FR3,5,15,1 + LWWW U3FH3A+FR4,-23,21,1 + LWWW U3FH3A+FR5,-65,8,1 + LWWW U3CP3B+FR1,-150,-60,1 + .long 0 +#Yokozuna + LWWW Y3RS3A+FR5,-48,22,0 + LWWW Y3RS3A+FR6,-27,20,0 + LWWW Y3RS3A+FR6,14,-1,1 + LWWW Y3RS3A+FR5,33,-6,1 + LWWW Y3RS3A+FR4,33,-24,1 + LWWW Y3RS3A+FR3,9,-23,1 + LWWW Y3RS3A+FR2,-3,-16,1 + LWWW Y3RS3A+FR1,3,-14,1 + LWWW Y3RS3A+FR2,-56,-16,0 + LWWW Y3RS3A+FR3,-103,-22,0 + LWWW Y3RS3A+FR4,-114,-26,0 + LWWW Y3RS3A+FR5,-108,-31,0 + LWWW Y3RS3A+FR6,-71,-33,0 + LWWW Y3RS3A+FR6,-3,-33,1 + LWWW Y3RS3A+FR5,17,-31,1 + LWWW Y3RS3A+FR4,23,-27,1 + LWWW Y3RS3A+FR6,45,-17,1 + LWWW Y3FL3W+FR2,25,14,0 + LWWW Y3FL3W+FR3,17,27,0 + LWWW Y3FL3W+FR4,22,34,0 + LWWW Y3FL3W+FR5,8,27,0 + LWWW Y3FL3W+FR6,-20,35,0 + LWWW Y3FL3W+FR7,-60,3,0 + LWWW Y3FD3A+FR7,-107,-35,0 + .long 0 +#Shawn + LWWW S3RS3A+FR5,-31,25,0 + LWWW S3RS3A+FR6,-6,20,0 + LWWW S3RS3A+FR6,29,-4,1 + LWWW S3RS3A+FR5,43,-9,1 + LWWW S3RS3A+FR4,38,-28,1 + LWWW S3RS3A+FR3,21,-24,1 + LWWW S3RS3A+FR2,13,-17,1 + LWWW S3RS3A+FR1,9,-16,1 + LWWW S3RS3A+FR2,-63,-18,0 + LWWW S3RS3A+FR3,-71,-24,0 + LWWW S3RS3A+FR4,-108,-31,0 + LWWW S3RS3A+FR5,-91,-31,0 + LWWW S3RS3A+FR6,-48,-34,0 + LWWW S3RS3A+FR6,12,-34,1 + LWWW S3RS3A+FR5,26,-30,1 + LWWW S3RS3A+FR4,32,-31,1 + LWWW S3RS3A+FR6,60,-20,1 + LWWW S3OS3X+FR4,-1,12,1 + LWWW S3OS3X+FR5,-4,27,1 + LWWW S3OS3X+FR6,0,53,1 + LWWW S3OS3X+FR7,-10,48,1 + LWWW S3OS3X+FR8,-11,53,1 + LWWW S3OS3X+FR9,-72,22,1 + LWWW S3OS3X+FR10,-122,-57,1 + .long 0 +#BamBam + LWWW B3RS3B+FR5,-50,24,0 + LWWW B3RS3B+FR6,-42,16,0 + LWWW B3RS3B+FR6,22,-7,1 + LWWW B3RS3B+FR5,25,-10,1 + LWWW B3RS3B+FR4,28,-28,1 + LWWW B3RS3B+FR3,22,-30,1 + LWWW B3RS3B+FR2,8,-30,1 + LWWW B3RS3B+FR1,-18,-26,1 + LWWW B3RS3B+FR2,-79,-30,0 + LWWW B3RS3B+FR3,-96,-31,0 + LWWW B3RS3B+FR4,-115,-36,0 + LWWW B3RS3B+FR5,-121,-35,0 + LWWW B3RS3B+FR6,-87,-39,0 + LWWW B3RS3B+FR6,8,-38,1 + LWWW B3RS3B+FR5,20,-33,1 + LWWW B3RS3B+FR4,26,-33,1 + LWWW B3RS3B+FR6,53,-23,1 + LWWW B4TD3B+FR3,22,3,1 + LWWW B4TD3B+FR4,37,17,0 + LWWW B4TD3B+FR5,17,47,0 + LWWW B4TD3B+FR6,-6,51,0 + LWWW B4TD3B+FR7,-29,49,0 + LWWW B4TD3B+FR8,-60,14,0 + LWWW B4TD3B+FR9,-112,-42,0 + .long 0 +#Doink + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR3,12,23,0 + + LWWW D3OS3A+FR3,12,23,0 + LWWW D3OS3A+FR4,11,28,0 + LWWW D3OS3A+FR5,-3,20,0 + LWWW D3OS3A+FR6,-19,28,0 + LWWW D3UC3A+FR9,-65,-22,0 + LWWW D3SA3A+FR9,-133,-60,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3RS3A+FR5,-33,11,0 + LWWW L3RS3A+FR6,-28,10,0 + LWWW L3RS3A+FR6,16,-16,1 + LWWW L3RS3A+FR5,37,-10,1 + LWWW L3RS3A+FR4,32,-20,1 + LWWW L3RS3A+FR3,19,-14,1 + LWWW L3RS3A+FR2,-7,-9,1 + LWWW L3RS3A+FR1,-14,-7,1 + LWWW L3RS3A+FR2,-69,-9,0 + LWWW L3RS3A+FR3,-109,-12,0 + LWWW L3RS3A+FR4,-102,-23,0 + LWWW L3RS3A+FR5,-93,-31,0 + LWWW L3RS3A+FR6,-70,-35,0 + LWWW L3RS3A+FR6,-4,-35,1 + LWWW L3RS3A+FR5,19,-31,1 + LWWW L3RS3A+FR4,30,-23,1 + LWWW L3RS3A+FR6,42,-29,1 + LWWW L3FH3A+FR2,25,-7,0 + LWWW L3FH3A+FR2,32,14,0 + LWWW L3FH3A+FR3,30,28,0 + LWWW L3FH3A+FR4,14,23,0 + LWWW L3FH3A+FR5,-5,22,0 + LWWW L3FH3A+FR6,-51,-5,0 + LWWW L3CP3B+FR1,-136,-58,1 + .long 0 + + +#***************************************************************************** +* +* GRAB OPPONENT AND HOLD OVERHEAD + + SUBR yok_graboh_TB_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_SETPLYRMODE,MODE_INAIR2 + .word ANI_STARTATTACK,AT_PUPPET,7 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WL 2,Y4PO4X+FR1 + WL ANI_SET_YVEL,70000h + WLW ANI_SET_XVEL,-18000h,AM_FACE_REL + + WL 5,Y4PO4X+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,8,46,65,33 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,8,Y4PO4X+FR3 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + +;#gothim + WL ANI_SET_YVEL,-20000h + + .ref CALL_SETUP + WL ANI_CODE,CALL_SETUP + .word ANI_SOUND,82h ;Effort grunt + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + +; WWLLW ANI_SUPERSLAVE2,3,Y4PO4X+FR3,#puppet_tbl,0 +; WWLLW ANI_SUPERSLAVE2,3,Y4PO4X+FR4,#puppet_tbl,1 + + WWLLW ANI_SUPERSLAVE2,3,Y4PO4X+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,3,Y4PO4X+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,3,Y4PO4X+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,3,Y4PO4X+FR8,#puppet_tbl,5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,50 + + WL ANI_GOTO,#inhere + +***************************************************************************** +* +* GRAB OPPONENT AND HOLD OVERHEAD + + SUBR yok_graboh_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_PUPPET,7 + + WL 3,Y4PO4X+FR1 + + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + ; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff + LEAPATOPP 8,90,70,60,90000h,TGT_CHEST,71,64,0 + WL ANI_SET_YVEL,20000h + + WL 5,Y4PO4X+FR2 + + .word ANI_ATTACK_ON, AMODE_PUPPET,8,46,65,33 ;mode,x,y,w,h + WWL ANI_WAITHITOPP,5,Y4PO4X+FR2 + + .word ANI_ATTACK_OFF + + .word ANI_ZERO_XZVELS + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + +;#gothim + .ref CALL_SETUP + WL ANI_CODE,CALL_SETUP + .word ANI_SOUND,82h ;Effort grunt + .word ANI_ATTACHZ,0,0,2 ;put opp in front of attacker + WL ANI_CODE,DO_NONO + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR3,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR4,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR6,#puppet_tbl,3 + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR7,#puppet_tbl,4 + WWLLW ANI_SUPERSLAVE2,4,Y4PO4X+FR8,#puppet_tbl,5 + +#inhere + WL ANI_SLAVEANIM,#strt_flail_tbl + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_OPPOVERHEAD + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + +#missedb + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_NORMAL + WL 10,Y4PO4X+FR3 +#missed + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 10,Y4PO4X+FR3 + WL 3,Y4PO4X+FR2 + WL 3,Y4PO4X+FR1 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_END + + .ref hrt_heldoh_anim + .ref rzr_heldoh_anim + .ref und_heldoh_anim + .ref shn_heldoh_anim + .ref bam_heldoh_anim + .ref dnk_heldoh_anim + .ref lex_heldoh_anim + +#strt_flail_tbl + .long hrt_heldoh_anim + .long rzr_heldoh_anim + .long und_heldoh_anim + .long yok_heldoh_anim + .long shn_heldoh_anim + .long bam_heldoh_anim + .long dnk_heldoh_anim + .long 0 + .long lex_heldoh_anim + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex +#Bret + LWWW H4AM3A+FR1,60,10,0 + LWWW H3MS3Z+FR1,26,24,0 + LWWW H3MS3Z+FR2,31,27,0 + LWWW H3MS3Z+FR3,18,15,0 + LWWW H3MS3Z+FR4,-8,14,0 + LWWW H4MF4B+FR9,-20,19,0 + .long 0 +#Razor + LWWW R4AH4C+FR3,74,28,0 + LWWW R3MS3Z+FR1,47,11,0 + LWWW R3MS3Z+FR2,29,20,0 + LWWW R3MS3Z+FR3,10,9,0 + LWWW R3MS3Z+FR4,-11,12,0 + LWWW R4MF4B+FR9,-55,30,0 + .long 0 +#Taker + LWWW U4AH3A+FR5,64,28,0 + LWWW U4AM4C+FR1,43,22,0 + LWWW U3MS3Z+FR1,26,38,0 + LWWW U3MS3Z+FR2,-4,24,0 + LWWW U3MS3Z+FR3,-28,8,0 + LWWW U4PM3C+FR7,-38,26,0 + .long 0 +#Yokozuna + LWWW Y4AE4A+FR1,77,23,0 + LWWW Y3MS3Z+FR2,48,21,0 + LWWW Y3MS3Z+FR3,31,24,0 + LWWW Y3MS3Z+FR4,5,19,0 + LWWW Y3MS3Z+FR5,-22,20,0 + LWWW Y3MF3B+FR7,-31,23,0 + .long 0 +#Shawn + LWWW S4AH3D+FR1,70,20,0 + LWWW S3OS3X+FR3,43,17,1 + LWWW S3MS3Z+FR1,23,11,0 + LWWW S3MS3Z+FR3,-1,9,0 + LWWW S3MS3Z+FR5,-16,12,0 + LWWW S3MF3B+FR7,-34,22,0 + .long 0 +#BamBam + LWWW B4AH4A+FR1,68,22,0 + LWWW B3MS3Z+FR1,53,14,0 + LWWW B3MS3Z+FR2,35,19,0 + LWWW B3MS3Z+FR3,10,4,0 + LWWW B3MS3Z+FR4,-10,15,0 + LWWW B4MF4A+FR7,-49,37,0 + .long 0 +#Doink + LWWW D3AH3B+FR5,63,18,0 + LWWW D3GS3X+FR1,58,7,0 + LWWW D3GS3X+FR3,34,17,0 + LWWW D3GS3X+FR4,14,13,0 + LWWW D3GS3X+FR5,-7,3,0 + LWWW D4MF4A+FR9,-31,37,0 + .long 0 +#Adam + .long 0 +#Lex + LWWW L4AH4B+FR3,69,20,0 + LWWW L3MS3Z+FR1,51,15,0 + LWWW L3MS3Z+FR2,28,20,0 + LWWW L3MS3Z+FR3,3,6,0 + LWWW L3MS3Z+FR4,-17,0,0 + LWWW L3MF3B+FR7,-29,16,0 + .long 0 + +#***************************************************************************** +* +* YOKO SCISSOR CRUSH + + .bss #opp_xvel,32 + + SUBR yok_combo_scissor_anim +;From head hold combo move + + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,12 + .word ANI_CLR_BUTCOUNT + + WL 3,Y3JK3A+FR1 + WL 3,Y3JK3A+FR2 +;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel2c + .word ANI_DETACH +#no_hdrel2c + LEAPATOPP 10,200,200,45,90000h,TGT_GROIN,0,20,0 + .ref no_bk_xvel + WL ANI_CODE,no_bk_xvel + WL 3,Y3JK3A+FR3 + WL 3,Y3JK3A+FR4 + .word ANI_OFFSET,0,55,0 + + .word ANI_ATTACK_ON,AMODE_PUPPET,10-36,-20,56,33 ;mode,x,y,w,h + + WL ANI_CODE,#store_opp_xvel + WWL ANI_WAITHITOPP,17,Y3JK3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missedc + WL ANI_IFBLOCKED,#missedbc + + .word ANI_CLR_STATUS + .word ANI_INC_COMBO + +;hit +;Put in screams + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + + WL ANI_SET_YVEL,50000h + WL ANI_CODE,#merge_xvels + .word ANI_ATTACHZ,0,0,-10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + WWLLW ANI_SUPERSLAVE2,4,Y3JK3Z+FR5,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y3JK3Z+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y3JK3Z+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,Y3JK3Z+FR5,#puppet_tbl,3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + +;impact + WWLLW ANI_SUPERSLAVE2,4,Y3JK3A+FR6,#puppet_tbl,4 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,50 + .word ANI_DAMAGEOPP,D_SCISSOR,RD_SCISSOR + .word ANI_OPP_GETUP,300 + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#recover_tbl + .word ANI_DETACH + + .word ANI_IMMOBILIZE,25 + + .WORD ANI_INC_COMBO + .word ANI_BOUNCE,6 + + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-22,-10-10,-30,54,36,50 + WL 4,Y3JK3Z+FR5 + .word ANI_WAITHITGND + .word ANI_ATTACK_OFF + + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,35 + + ;skip this stuff if we missed + WL ANI_IFNOTSTATUS,#missed2nd + .word ANI_IMMOBILIZE,75 + .word ANI_OFFSET,0,0,25 ;x,y,z + .word ANI_OPP_GETUP,-100 +#missed2nd + + WL 2,Y3JK3A+FR6 + WL 2,Y3JK3A+FR7 + WL 2,Y3JK3A+FR8 + .word ANI_XFLIP + +#do_bounce_now + WL 2,Y3GU2A+FR4 +; WL 2,Y3GU2A+FR5 + WL 2,Y3GU2A+FR6 + WL 2,Y3GU2A+FR7 + WL 2,Y3GU2A+FR8 +; WL 2,Y3GU2A+FR9 + WL 2,Y3GU2A+FR10 + WL 2,Y3GU2A+FR11 + WL 2,Y3GU2A+FR12 + + WL 2,Y3GU4A+FR13 + WL 2,Y3GU4A+FR14 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,Y3GU4A+FR14 + + WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NO_REPEAT + WL ANI_CHANGEANIM,yok_combo_butt_drop_anim +#NO_REPEAT + .word ANI_OPP_GETUP,10 + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +#missedbc + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#missedb +#missedc + .WORD ANI_DETACH + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + WL ANI_GOTO,#missed + + +************************************ + + SUBR yok_scissor_anim + +;From head hold combo move + + .word ANI_SETPLYRMODE,MODE_INAIR + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_STARTATTACK,AT_LEAPING,12 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + + WL 3,Y3JK3A+FR1 + WL 3,Y3JK3A+FR2 +;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel2 + .word ANI_DETACH +#no_hdrel2 + LEAPATOPP 10,80,70,45,90000h,TGT_GROIN,0,20,0 + .ref no_bk_xvel + WL ANI_CODE,no_bk_xvel + WL 3,Y3JK3A+FR3 + WL 3,Y3JK3A+FR4 + .word ANI_OFFSET,0,55,0 + + .word ANI_ATTACK_ON,AMODE_PUPPET,10-36,-20,56,33 ;mode,x,y,w,h + + WL ANI_CODE,#store_opp_xvel + WWL ANI_WAITHITOPP,10,Y3JK3A+FR5 + .word ANI_ATTACK_OFF + + WL ANI_IFNOTSTATUS,#missed + WL ANI_IFBLOCKED,#missedb + + .word ANI_CLR_STATUS + +;hit +;Put in screams + WWL ANI_SETLONG,OBJ_GRAVITY,0c000h + + WL ANI_SET_YVEL,50000h + WL ANI_CODE,#merge_xvels + .word ANI_ATTACHZ,0,0,-10 ;x & y don't matter. + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED + WWLLW ANI_SUPERSLAVE2,4,Y3JK3Z+FR5,#puppet_tbl,0 + WWLLW ANI_SUPERSLAVE2,4,Y3JK3Z+FR5,#puppet_tbl,1 + WWLLW ANI_SUPERSLAVE2,4,Y3JK3Z+FR5,#puppet_tbl,2 + WWLLW ANI_SUPERSLAVE2,4,Y3JK3Z+FR5,#puppet_tbl,3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY + .word ANI_DRAW_NAME,34 + +;impact + .ref create_bucket_salt + WL ANI_CODE,create_bucket_salt + WWL ANI_SETLONG,DEBRIS_X,[2,1] ;Y,X of head + + WWLLW ANI_SUPERSLAVE2,4,Y3JK3A+FR6,#puppet_tbl,4 + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,50 + .word ANI_DAMAGEOPP,D_SCISSOR,RD_SCISSOR + .word ANI_OPP_GETUP,300 + WL ANI_CODE,CALL_SPECIAL_MOVE + WL ANI_XFLIP_TBL,#xflip_tbl + WL ANI_SLAVEANIM,#recover_tbl + .word ANI_DETACH + + .word ANI_IMMOBILIZE,35 + + WWL ANI_SETLONG,DEBRIS_X,[2,8] ;Y,X of head + .word ANI_BOUNCE,6 + WL 4,Y3JK3Z+FR5 + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,35 + + .word ANI_OFFSET,0,0,25 ;x,y,z + + WL ANI_CODE,target_whoihit + WL ANI_CODE,#stop_dmg + .word ANI_ATTACK_ON_Z,AMODE_STOMP,-22,-10-10,-30,54,36,50 + WL 1,Y3JK3A+FR6 + .word ANI_ATTACK_OFF + .word ANI_IMMOBILIZE,40 + WL ANI_IFNOTSTATUS,#miss_bounce +#miss_bounce + WL 2,Y3JK3A+FR6 + WL 3,Y3JK3A+FR7 + WL 3,Y3JK3A+FR8 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +#stop_dmg + SPCDMG 2,35 + rets + +#xflip_tbl + .word 0 ;bret + .word 0 ;razor + .word 0 ;taker + .word 0 ;yoko + .word 0 ;shawn + .word 0 ;bam + .word 0 ;doink + .word 0 ;spare + .word 0 ;lex + +#missedb +;we've hit a blocker. mistake. +;uh, for now just abort. + WLLL ANI_SETOPPVELS,70000h,40000h,0 ;x,y,z vels + .word ANI_SOUND,018h ;Hard hit + .word ANI_ZERO_XZVELS + + WL ANI_SET_YVEL,20000h + WLW ANI_SET_XVEL,20000h,AM_HIT_REL + + WL 17,Y3JK3Z+FR5 + WLLL ANI_SETOPPVELS,0000h,0000h,0 ;x,y,z vels + +#missed + .word ANI_DETACH + WL ANI_CODE,CALL_MISSES + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,45 + WL ANI_CODE,HIT_THE_MAT + .word ANI_BOUNCE,5 + WL 3,Y3JK3A+FR6 + WL 5,Y3JK3Z+FR5 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKER,35 + WL 4,Y3JK3A+FR6 + WL 4,Y3JK3A+FR7 + WL 4,Y3JK3A+FR8 + .word ANI_XFLIP + WL ANI_CHANGEANIM,yok_faceup_getup2_anim + +;new xvel is (attacker xvel + defender xvel)/4 +#merge_xvels + + move @#opp_xvel,a0,L + move *a13(OBJ_XVEL),a1,L + add a1,a0 + sra 2,a0 + move a0,*a13(OBJ_XVEL),L +#rets + rets + +;save opponent's x-velocity +#store_opp_xvel + move *a13(CLOSEST_NUM),a0 + X32 a0 + .ref process_ptrs + addi process_ptrs,a0 + move *a0,a0,L + move *a0(OBJ_XVEL),a0,L + move a0,@#opp_xvel,L + rets + +#puppet_tbl + .long #Bret + .long #Razor + .long #Taker + .long #Yokozuna + .long #Shawn + .long #BamBam + .long #Doink + .long #Adam + .long #Lex + + +#Bret + LWWW H3UC3X+FR1,8,-51,0 + LWWW H3UC3X+FR2,-34,-46,0 + LWWW H3UC3X+FR3,-52,-42,0 + LWWW H3UC3X+FR4,-49,-39,0 + LWWW H2CP3A+FR8,-68,-61,1 + .long 0 +#Razor + LWWW R3FD3B+FR1,2,-53,0 + LWWW R3FD3B+FR2,-32,-49,0 + LWWW R3FD3B+FR3,-46,-39,0 + LWWW R3FD3B+FR4,-56,-38,0 + LWWW R3AM3D+FR1,-69,-62,1 + .long 0 +#Taker + LWWW U3FD3X+FR1,8,-50,1 + LWWW U3FD3X+FR2,-10,-49,1 + LWWW U3FD3X+FR3,-29,-50,1 + LWWW U3FD3X+FR4,-39,-43,1 + LWWW U3FD3X+FR4,-39,-23,1 +; LWWW U3FD3X+FR6,-62,-16,1 + .long 0 +#Yokozuna + LWWW Y3FD3A+FR1,8,-55,0 + LWWW Y3FD3A+FR2,-35,-32,0 + LWWW Y3FD3A+FR3,-39,-35,0 + LWWW Y3FD3A+FR4,-44,-37,0 + LWWW Y3CP3B+FR1,-54,-47,1 + .long 0 +#Shawn + LWWW S3UC3X+FR1,6,-46,0 + LWWW S3UC3X+FR2,-19,-47,0 + LWWW S3UC3X+FR3,-31,-47,0 + LWWW S3UC3X+FR4,-40,-50,0 + LWWW S3CP3B+FR7,-62,-56,1 + .long 0 +#BamBam + LWWW B4UC3B+FR1,3,-48,0 + LWWW B4UC3B+FR2,-18,-50,0 + LWWW B4UC3B+FR3,-44,-52,0 + LWWW B4UC3B+FR4,-50,-53,0 + LWWW B3CP3B+FR7,-67,-45,1 + .long 0 +#Doink + LWWW D3UC3A+FR1,1,-48,0 + LWWW D3UC3A+FR3,-21,-38,0 + LWWW D3UC3A+FR4,-48,-37,0 + LWWW D3UC3A+FR5,-49,-40,0 + LWWW D3SA3A+FR9,-65,-53,1 + .long 0 +#Adam + .long 0 +#Lex + LWWW L3UC3X+FR1,13,-51,0 + LWWW L3UC3X+FR2,-4,-57,0 + LWWW L3UC3X+FR3,-37,-55,0 + LWWW L3CP3X+FR2,-55,-55,1 + LWWW L3CP3X+FR1,-69,-55,1 + .long 0 + +* +******** + + .ref hrt_hitonground_anim + .ref rzr_hitonground_anim + .ref und_hitonground_anim + .ref yok_hitonground_anim + .ref shn_hitonground_anim + .ref bam_hitonground_anim + .ref lex_hitonground_anim + .ref dnk_hitonground_anim + +#recover_tbl + .long hrt_hitonground_anim + .long rzr_hitonground_anim + .long und_hitonground_anim + .long yok_hitonground_anim + .long shn_hitonground_anim + .long bam_hitonground_anim + .long dnk_hitonground_anim + .long 0 + .long lex_hitonground_anim + +#***************************************************************************** +* +* YOKO SALT THROW + + SUBR yok_2_salt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 1,Y1TT5Z+FR2 + WL 1,Y1TT5Z+FR3 + + SUBR yok_4_salt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + WL 2,Y4RP3A+FR2 + WL 2,Y4RP3A+FR3 + WL 3,Y4RP3A+FR4 +;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel2 + .word ANI_DETACH +#no_hdrel2 + .word ANI_STARTATTACK,AT_MSL,40 + WL 3,Y4RP3A+FR5 + WL 3,Y4RP3A+FR6 + .word ANI_SETWORD,USR_VAR2,0 ;Flag for salt hit + + + WL ANI_CODE,#do_salt + WL 13,Y4RP3A+FR7 + .WORD ANI_ADD_MOVE,MOVE_C_5,2,2 + WL ANI_CODE,#salt_blocked + WL ANI_IFNOTSTATUS,#no + WL 20,Y4RP3A+FR7 +#no WL 3,Y3AB3A+FR1 + + WL ANI_CODE,CALL_NASTY_MOVE + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +************************************ + SUBR yok_combo_salt_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + .word ANI_CLR_BUTCOUNT + + WL 2,Y4RP3A+FR2 + WL 3,Y4RP3A+FR3 + WL 5,Y4RP3A+FR4 +;first, if we're holding his head, let him go. + WWL ANI_IFOPPMODE,~MODE_HEADHELD,#no_hdrel2c + .word ANI_DETACH +#no_hdrel2c + WL 3,Y4RP3A+FR5 + WL 3,Y4RP3A+FR6 + .word ANI_SETWORD,USR_VAR2,0 ;Flag for salt hit + WL ANI_CODE,#do_salt + WL 25,Y4RP3A+FR7 + WL ANI_CODE,#salt_blocked + WL ANI_IFNOTSTATUS,#noc + .WORD ANI_INC_COMBO + WL 40,Y4RP3A+FR7 +#noc WL 3,Y3AB3A+FR1 + + WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NO_SCISSORS + WL ANI_CHANGEANIM,yok_combo_scissor_anim + +#NO_SCISSORS + WL ANI_CODE,DO_COMBO_MESS + .WORD ANI_CLEAR_COMBO + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +************************************ + +#salt_blocked +;If yes, delay some more + move *a13(ANIMODE),a1 + andni MODE_STATUS,a1 + + move *a13(USR_VAR2),a0 + jrz #not_blocked + ori MODE_STATUS,a1 +#not_blocked + move a1,*a13(ANIMODE) + rets + +#do_salt + move a13,a11 + .ref yok_salt_spray + CREATE0 yok_salt_spray + + rets + + +;#***************************************************************************** +;* +;* CHAIR STUFF +; +; .ref CHAIR_SWING +; +; SUBR yok_pkup_chair_anim +; +; .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP +; .word ANI_ZEROVELS +; .word ANI_SETSPEED,100h +; +;#lp +; WL 4,Y4WA4A+FR1 +; WL 4,Y4WA4A+FR2 +; WL 4,Y4WA4A+FR3 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,40,-6,1 ;image, x,y,zoff +; WL 4,Y4WA4A+FR4 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,38,13,1 ;image, x,y,zoff +; WL 4,Y4WA4A+FR5 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,28,42,1 ;image, x,y,zoff +; WL 4,Y4WA4A+FR6 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR2,31,82,1 ;image, x,y,zoff +; WL 4,Y4WA4A+FR7 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,13,141,1 ;image, x,y,zoff +; WL 4,Y4WA4A+FR8 +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,18,153,1 ;image, x,y,zoff +; WL 4,Y4WA4A+FR9 +; +;; .word ANI_SINGLESTEP +; +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-28,143,1 ;image, x,y,zoff +; WL 4,Y4CS4A+FR2 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR5,-32,111,1 ;image, x,y,zoff +; WL 4,Y4CS4A+FR3 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,3,136,1 ;image, x,y,zoff +; WL 4,Y4CS4A+FR4 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,75,117,1 ;image, x,y,zoff +; WL 4,Y4CS4A+FR5 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,71,49,1 ;image, x,y,zoff +; WL 4,Y4CS4A+FR6 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR10,43,24,1 ;image, x,y,zoff +; WL 4,Y4CS4A+FR7 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,70,65,1 ;image, x,y,zoff +; WL 4,Y4CS4A+FR8 +; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,44,127,1 ;image, x,y,zoff +; WL 4,Y4CS4A+FR9 +; +;; .word ANI_SINGLESTEP +; WLW ANI_ATTCHIMAGE,0,0 +; +; WL ANI_GOTO,#lp +; + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/YOKSEQ4.ASM b/YOKSEQ4.ASM new file mode 100755 index 0000000..5fd2a32 --- /dev/null +++ b/YOKSEQ4.ASM @@ -0,0 +1,1398 @@ +************************************************************** +* +* Software: Jason Skiles +* Initiated: 26 Aug 94 +* +* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. +* +************************************************************** + + .file "yokseq4.asm" + .title "blocks, reactions to routine and special attacks" + .width 132 + .option b,d,l,t + .mnolist + + + .include "macros.h" + .include "mproc.equ" ;Mproc equates + .include "sys.equ" + .include "game.equ" + .include "plyr.equ" + .include "anim.equ" + .include "sound.h" + .include "yokoimg.h" + .include "display.equ" + .include "ring.equ" + .include "damage.equ" + .INCLUDE "SWEAT.EQU" + + +****************************************************************************** +* EXTERNAL REFERENCES + + ;YOKO + .ref yok_3_head_held_anim,yok_2_hiptoss_anim + + ;MISC + .ref HIT_THE_MAT,SMALL_BOUNCE,am_I_dead,ckzpos + .ref DO_BLOCKED,DO_SCREAM,free_toss_check,setup_freetoss + +****************************************************************************** +* SYMBOLS DEFINED IN THIS FILE + +****************************************************************************** +* EQUATES FOR THIS FILE + + +#***************************************************************************** +* +* #4 BLOCK + HITBLOCK + + SUBR yok_4_block_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + +; WL ANI_CODE,block_if_safe + .word ANI_SETPLYRMODE,MODE_BLOCK + WL 3,Y4BK3A+FR3 +; .word ANI_SETPLYRMODE,MODE_BLOCK + +#hold_block + WL 2,Y4BK3A+FR5 + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT|MODE_FRICTION +; .word ANI_ZERO_XZVELS + .word ANI_WAITRELEASE,PLAYER_BLOCK_BIT + .word ANI_SETMODE,MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETFACING + WL 3,Y4BK3A+FR3 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_hitblock_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,5000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL 2,Y4BK3A+FR6 + WL 2,Y4BK3A+FR5 + WL ANI_GOTO,#hold_block + + SUBR yok_4_hitblock2_anim + .word ANI_SETMODE,MODE_NOAUTOFLIP|MODE_UNINT + .word ANI_FRICTION,4000h + .word ANI_SETSPEED,100h + WL ANI_CODE,DO_BLOCKED + WL ANI_SET_YVEL,38000h + WL 3,Y4BK3A+FR6 + WL 3,Y4BK3A+FR5 + WL 3,Y4BK3A+FR6 + WL 3,Y4BK3A+FR5 + WL 3,Y4BK3A+FR6 + WL 3,Y4BK3A+FR5 + WL ANI_GOTO,#hold_block + + +#***************************************************************************** +* +* #4 LOSE BALANCE + +#FRICTION_VAL equ 3000h + + SUBR yok_4_losebal_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_FRICTION,#FRICTION_VAL + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,Y4PB3A+FR1 + WL 3,Y4PB3A+FR2 + WL 3,Y4PB3A+FR3 + WL 3,Y4PB3A+FR4 + WL 3,Y4PB3A+FR5 + WL 3,Y4PB3A+FR6 + WL 3,Y4PB3A+FR7 + WL 3,Y4PB3A+FR8 + WL 3,Y4PB3A+FR9 + + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#***************************************************************************** +* +* #2 HEAD HIT + + SUBR yok_2_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,Y2AH2A+FR2 + WL 3,Y2AH2A+FR3 + WL 3,Y2AH2A+FR4 + WL 3,Y2AH2A+FR5 + WL 3,Y2AH2A+FR6 + WL 3,Y2AH2A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT + + SUBR yok_4_head_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,Y4AH4A+FR2 + WL 3,Y4AH4A+FR3 + WL 3,Y4AH4A+FR4 + WL 3,Y4AH4A+FR5 + WL 3,Y4AH4A+FR6 + WL 3,Y4AH4A+FR7 + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF OPPONENT + + SUBR yok_2_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + +; WL 3,Y2AH2A+FR2 +; WL 15,Y2AH2A+FR3 +; WL 4,Y2AH2A+FR4 + + + WL 1,Y4PS3B+FR4 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 2,Y4PS3B+FR4 + WL 2,Y4PS3B+FR5 + WL 1,Y4PS3B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 20,Y4PS3B+FR6 + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF OPPONENT + + SUBR yok_4_bncoff_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + +; WL 3,Y4AH4A+FR2 +; WL 3,Y4AH4A+FR3 +; WL 14,Y4AH4A+FR4 +; WL 2,Y4AH4A+FR5 + + WL 1,Y4PS3B+FR4 + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,30000h,AM_FACE_REL + + WL 2,Y4PS3B+FR4 + WL 2,Y4PS3B+FR5 + WL 1,Y4PS3B+FR6 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 20,Y4PS3B+FR6 + WL 3,Y4PS3B+FR7 + WL 3,Y4PS3B+FR8 + WL 3,Y4PS3B+FR9 + WL 3,Y4PS3B+FR10 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** +* +* #2 RUNNING BOUNCE OFF OF GATE + + SUBR yok_2_bncoff_gate_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,Y2AH2A+FR2 + WL 15,Y2AH2A+FR3 + WL 4,Y2AH2A+FR4 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 RUNNING BOUNCE OFF OF GATE + + SUBR yok_4_bncoff_gate_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + WL 3,Y4AH4A+FR2 + WL 3,Y4AH4A+FR3 + WL 14,Y4AH4A+FR4 + WL 2,Y4AH4A+FR5 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + +* #4 RUNNING BOUNCE OFF OF OPPONENT + +;Bounce off but stay dizzy! + + SUBR yok_4_bncoff_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_SETSPEED,100h + .word ANI_FRICTION,3000h + + .word ANI_SETPLYRMODE,MODE_DIZZY + + WL 3,Y4AH4A+FR2 + WL 3,Y4AH4A+FR3 + WL 14,Y4AH4A+FR4 + WL 2,Y4AH4A+FR5 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,yok_dizzy_anim +; .word ANI_END + +#************ +* +* #4 HEAD HIT2 (hands on face) + + SUBR yok_2_head_hit2_anim + SUBR yok_4_head_hit2_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-50000h,AM_HIT_REL + .word ANI_FRICTION,3000h + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,Y4AE4A+FR1 + WL 3,Y4AE4A+FR2 + WL 3,Y4AE4A+FR3 + WL 2,Y4AE4A+FR4 + WL 3,Y4AE4A+FR5 + WL 2,Y4AE4A+FR6 + WL 3,Y4AE4A+FR7 + WL 2,Y4AE4A+FR8 + WL 3,Y4AE4A+FR9 + + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,yok_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_head_hit2s_anim +;Salt hits me in face + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .ref create_impact_salt + WL ANI_CODE,create_impact_salt + + WL 3,Y4AE4A+FR1 + WL 3,Y4AE4A+FR2 + WL 3,Y4AE4A+FR3 + WL 3,Y4AE4A+FR4 + WL 3,Y4AE4A+FR5 + .word ANI_WAITHITGND + .word ANI_FRICTION,4000h + WL 50,Y4AE4A+FR5 + .word ANI_ZEROVELS + WL 3,Y4AE4A+FR6 + WL 2,Y4AE4A+FR7 + WL 3,Y4AE4A+FR8 + WL 2,Y4AE4A+FR9 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #2 HEAD HIT - From spin kick + + SUBR yok_2_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,20000h,AM_HIT_REL + WL ANI_SET_YVEL,40000h + + WL 3,Y2AH2A+FR1 + .word ANI_DEBRIS,150,2,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,Y2AH2A+FR2 + WL 3,Y2AH2A+FR3 + WL 1,Y2AH2A+FR4 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,Y2AH2A+FR5 + WL 3,Y2AH2A+FR6 + WL 2,Y2AH2A+FR7 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT - From spin kick + + SUBR yok_4_head_hit3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLW ANI_SET_XVEL,-28000h,AM_HIT_REL + WLW ANI_SET_ZVEL,-20000h,AM_ABS + WL ANI_SET_YVEL,40000h + + WL 3,Y4AH4A+FR1 + .word ANI_DEBRIS,150,2,-21,100,0 ;%chance, tbl index, x,y,z off + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,Y4AH4A+FR2 + WL 3,Y4AH4A+FR3 + WL 1,Y4AH4A+FR4 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 2,Y4AH4A+FR5 + WL 3,Y4AH4A+FR6 + WL 2,Y4AH4A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_head_hit4_anim + +;From earslap + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + + WL 3,Y4AH4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 3,Y4AH4A+FR2 + WL 3,Y4AH4A+FR3 + WL 3,Y4AH4A+FR4 + + WL 2,Y4AH4A+FR5 + WL 3,Y4AH4A+FR6 + WL 2,Y4AH4A+FR7 + + .word ANI_FACEDOWN + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +#************ +* +* #4 HEAD HIT (ends in dizzy) + + SUBR yok_4_head_hit_dizzy_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_SETSPEED,100h + WLW ANI_SET_XVEL,-60000h,AM_HIT_REL + .word ANI_FRICTION,3000h + + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,150,3,-21,100,0 ;%chance, tbl index, x,y,z off + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYA_SWEAT,SWEAT_PER,0 + WL 4,Y4AE4A+FR1 + WL 4,Y4AE4A+FR2 + WL 4,Y4AE4A+FR3 + WL 4,Y4AE4A+FR4 + WL 4,Y4AE4A+FR5 + WL 4,Y4AE4A+FR6 + WL 4,Y4AE4A+FR7 + WL 4,Y4AE4A+FR8 + WL 4,Y4AE4A+FR9 + +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,yok_dizzy_anim + +#***************************************************************************** +* +* #2 BODY HIT + + SUBR yok_2_body_hit_anim + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 3,Y2AM2C+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,Y2AM2C+FR2 + WL 1,Y2AM2C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 2,Y2AM2C+FR4 + WL 3,Y2AM2C+FR5 + WL 2,Y2AM2C+FR6 + WL 3,Y2AM2C+FR7 + WL 2,Y2AM2C+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +* #4 BODY HIT + + SUBR yok_4_body_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 3,Y4AM4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,Y4AM4A+FR2 + WL 1,Y4AM4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,Y4AM4A+FR4 + WL 2,Y4AM4A+FR5 + WL 3,Y4AM4A+FR6 + WL 2,Y4AM4A+FR7 + WL 3,Y4AM4A+FR8 + .word ANI_CHECKWORD,USR_VAR1 + WL ANI_IFNOTSTATUS,#reg + + WL 10,Y4TI4C+FR4 + WL 10,Y4TI4C+FR5 + WL 10,Y4TI4C+FR6 + WL 10,Y4TI4C+FR7 + WL 10,Y4TI4C+FR8 + WL 10,Y4TI4C+FR7 + WL 10,Y4TI4C+FR6 + WL 10,Y4TI4C+FR5 + + WL 10,Y4TI4C+FR4 + WL 10,Y4TI4C+FR5 + WL 10,Y4TI4C+FR6 + WL 10,Y4TI4C+FR7 + WL 10,Y4TI4C+FR8 + +#reg + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_body_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,30000h + WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,Y4AM4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 4,Y4AM4A+FR2 + WL 1,Y4AM4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,Y4AM4A+FR4 + WL 4,Y4AM4A+FR5 + WL 4,Y4AM4A+FR6 + WL 4,Y4AM4A+FR7 + WL 4,Y4AM4A+FR8 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,yok_dizzy_anim +; .word ANI_END + +* #4 BODY HIT FROM KNEE + + SUBR yok_4_knee_hit_dizzy_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + .word ANI_SETPLYRMODE,MODE_DIZZY + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 4,Y4AM4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 4,Y4AM4A+FR2 + WL 1,Y4AM4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 4,Y4AM4A+FR4 + WL 4,Y4AM4A+FR5 + WL 4,Y4AM4A+FR6 + WL 4,Y4AM4A+FR7 + WL 4,Y4AM4A+FR8 + + .word ANI_FACEDOWN +; .word ANI_SETPLYRMODE,MODE_DIZZY + WL ANI_CHANGEANIM,yok_dizzy_anim +; .word ANI_END + + SUBR yok_2_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 3,Y2AM2C+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,Y2AM2C+FR2 + WL 1,Y2AM2C+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL 3,Y2AM2C+FR4 + WL 2,Y2AM2C+FR5 + WL 3,Y2AM2C+FR6 + WL 2,Y2AM2C+FR7 + WL 3,Y2AM2C+FR8 + + .word ANI_FACEUP + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_4_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,60000h + WLW ANI_SET_XVEL,-30000h,AM_HIT_REL + WLW ANI_SET_ZVEL,8000h,AM_ABS + + .word ANI_DEBRIS,150,0,-4,71,0 ;%chance, tbl index, x,y,z off + + WL 3,Y4AM4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,Y4AM4A+FR2 + WL 1,Y4AM4A+FR3 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,Y4AM4A+FR4 + WL 2,Y4AM4A+FR5 + WL 3,Y4AM4A+FR6 + WL 2,Y4AM4A+FR7 + WL 3,Y4AM4A+FR8 + + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + + SUBR yok_quick_knee_hit_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable + WL ANI_SET_YVEL,10000h + .word ANI_SETSPEED,100h + + .word ANI_OFFSET,0,0,2 ;x,y,z + + WL ANI_SET_YVEL,38000h +; WLW ANI_SET_XVEL,-20000h,AM_HIT_REL + + WL 4,Y4AM4A+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,COUGH_SWEAT,SWEAT_PER,0 + WL 3,Y4AM4A+FR2 + WL 3,Y4AM4A+FR3 + WL 3,Y4AM4A+FR2 + WL 3,Y4AM4A+FR4 + WL 3,Y4AM4A+FR5 + WL 3,Y4AM4A+FR6 + WL 3,Y4AM4A+FR7 + WL 3,Y4AM4A+FR8 + + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,yok_fall_back_anim +; .word ANI_END + +#nodead + + .word ANI_FACEDOWN + WL ANI_CHANGEANIM,yok_3_head_held_anim +; .word ANI_END + +****************************************************************************** +* +* #3 FALL DOWN + + SUBR yok_fall_back_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_NOCOLLIS +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .word ANI_SETSPEED,100h + .word ANI_ZERO_XZVELS + WL ANI_MIN_YVEL,58000h + WLW ANI_SET_ZVEL,10000h,AM_FACE_REL + + .word ANI_SCROLL_CTRL,YOK_TBUKLY + WL ANI_CODE,ckzpos + + WWL ANI_SETLONG,DEBRIS_X,[99,-20] ;Y,X of head + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 4,Y3FD3A+FR1 + WWL ANI_SETLONG,DEBRIS_X,[99,-32] ;Y,X of head + WL 4,Y3FD3A+FR2 + .word ANI_OFFSET,0,41,0 ;x,y,z + WWL ANI_SETLONG,DEBRIS_X,[49,-38] ;Y,X of head + WL 4,Y3FD3A+FR3 + WWL ANI_SETLONG,DEBRIS_X,[37,-49] ;Y,X of head + WL 4,Y3FD3A+FR4 + WWL ANI_SETLONG,DEBRIS_X,[26,-51] ;Y,X of head + WL 4,Y3FD3A+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,200,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + + .word ANI_FRICTION,3000h + + WWL ANI_SETLONG,DEBRIS_X,[9,-45] ;Y,X of head + WL 2,Y3FD3A+FR6 + .word ANI_BOUNCE,4 + WL 2,Y3FD3A+FR6 + WWL ANI_SETLONG,DEBRIS_X,[9,-45] ;Y,X of head + WL 2,Y3FD3A+FR7 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WWL ANI_SETLONG,DEBRIS_X,0 ;Y,X of head + +;Stay on ground for awhile... Maybe this will be table driven + .word ANI_XFLIP + WL 1,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim +; .word ANI_END + +****************************************************************************** +* +* #3 FALL DOWN + + SUBR yok_fall_back2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,10000h + WLW ANI_SET_ZVEL,18000h,AM_ABS + WL ANI_CODE,ckzpos + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYC_SWEAT,SWEAT_PER,0 + WL 4,Y3FD3A+FR1 + WL 4,Y3FD3A+FR2 + .word ANI_OFFSET,0,41,0 ;x,y,z + WL 4,Y3FD3A+FR3 + WL 4,Y3FD3A+FR4 + WL 4,Y3FD3A+FR5 + .word ANI_WAITHITGND + + .word ANI_DEBRIS,150,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,1 + .word ANI_SHAKER,50 + .word ANI_ZEROVELS + WLW ANI_SET_ZVEL,18000h,AM_ABS + WLW ANI_SET_XVEL,-20000h,AM_FACE_REL + + .word ANI_OFFSET,-20,0,0 ;x,y,z + + WL 3,Y3FD3N+FR1 + WL 3,Y3FD3N+FR2 + WL 3,Y3FD3N+FR3 + WL 3,Y3FD3N+FR4 + WL 3,Y3FD3N+FR5 + WL 3,Y3FD3N+FR6 + WL 3,Y3FD3N+FR7 + WL 3,Y3FD3N+FR8 + WL ANI_CODE,HIT_THE_MAT + + .word ANI_OFFSET,-20,0,0 ;x,y,z + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,Y3KF3B+FR1 + WL 3,Y3KF3B+FR2 + WL 3,Y3KF3B+FR3 + WL 3,Y3KF3B+FR4 + WL 3,Y3KF3B+FR5 + WL ANI_CODE,HIT_THE_MAT + WL 30,Y3KF3B+FR6 + + WL ANI_CHANGEANIM,yok_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* GETUPS + + SUBR yok_faceup_getup_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL 2,Y3GU2A+FR1 + WL 3,Y3GU2A+FR2 + WL 2,Y3GU2A+FR3 + WL ANI_GOTO,#common + + ;like above, but skip first three frames + SUBR yok_faceup_getup2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCOLLIS + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + +#common + WL 3,Y3GU2A+FR4 + WL 2,Y3GU2A+FR6 + WL 3,Y3GU2A+FR7 + WL 2,Y3GU2A+FR8 + WL 3,Y3GU2A+FR10 + WL 2,Y3GU2A+FR11 +; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + WL 3,Y3GU2A+FR12 + + WL ANI_CODE,#choose_2or4 + WL ANI_IFSTATUS,#getup_in_4 + +#getup_in_2 + + WL 3,Y3GU2A+FR13 + WL 2,Y3GU2A+FR14 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,Y3GU2A+FR14 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss + .word ANI_ATTACK_ON,AMODE_HITCHECK,0,44,52-8,52 + WL 1,Y3GU2A+FR14 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + WL ANI_CHANGEANIM,yok_4_push_anim +#no_freetoss + + .word ANI_FACEUP + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + + +#getup_in_4 + WL 3,Y3GU4A+FR13 + WL 2,Y3GU4A+FR14 + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + .word ANI_SET_WRESTLER_XFLIP + WL 1,Y3GU4A+FR14 + + .word ANI_SAFE_TIME,50 + + WL ANI_CODE,free_toss_check + WL ANI_IFNOTSTATUS,#no_freetoss2 + .word ANI_ATTACK_ON,AMODE_HITCHECK,0,44,52-8,52 + WL 1,Y3GU4A+FR14 + .word ANI_ATTACK_OFF + WL ANI_IFNOTSTATUS,#no_freetoss2 + + ;Opponent standing too close -- free toss + WL ANI_CODE,setup_freetoss + .ref yok_4_push_anim + WL ANI_CHANGEANIM,yok_4_push_anim +#no_freetoss2 + + .word ANI_FACEDOWN + + .word ANI_SETMODE,MODE_NORMAL + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_END + +***** +* set status bit for a getup in 4, clear for a 2. +#choose_2or4 + + move *a13(ANIMODE),a0 + andni MODE_STATUS,a0 + + move *a13(NEW_FACING_DIR),a14 + btst MOVE_UP_BIT,a14 + jrnz #choose_2 + ori MODE_STATUS,a0 +#choose_2 + move a0,*a13(ANIMODE) + rets + + +#***************************************************************************** +* +* DIZZY + + SUBR yok_dizzy_anim + + .word ANI_SETMODE,MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + .word ANI_START_DIZZY,0 ;0=Standing dizzy + .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN + +#loop + WL 10,Y4TI4C+FR4 + WL 10,Y4TI4C+FR5 + WL 10,Y4TI4C+FR6 + WL 10,Y4TI4C+FR7 + WL 10,Y4TI4C+FR8 + WL 10,Y4TI4C+FR7 + WL 10,Y4TI4C+FR6 + WL 10,Y4TI4C+FR5 + + WL ANI_GOTO,#loop + +#***************************************************************************** +* +* HITS ON GROUND + + SUBR yok_hitonground_xflip_anim + .word ANI_XFLIP + + SUBR yok_hitonground_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL 1,Y3CP3B+FR1 + WL ANI_SET_YVEL,34000h + + .word ANI_DEBRIS,50,1,0,8,0 ;%chance, tbl index, x,y,z off + WL 2,Y3CP3B+FR1 + + WL 2,Y3CP3B+FR1 + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPITUP_SWEAT,SWEAT_PER,0 + WL 2,Y3CP3B+FR2 + WL 2,Y3CP3B+FR3 + WL 2,Y3CP3B+FR4 + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 2,Y3CP3B+FR5 + WL 2,Y3CP3B+FR6 + WL 2,Y3CP3B+FR7 + WL 2,Y3CP3B+FR8 + SUBR yok_liedown_anim + WL 1,Y3RL1A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + + SUBR yok_up_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP + .WORD ANI_XFLIP + .word ANI_ZEROVELS + .word ANI_SETPLYRMODE,MODE_ONGROUND + .word ANI_SETSPEED,100h + WL 10,Y3FL3W+FR3 + + .word ANI_WAITHITGND + WL ANI_CODE,HIT_THE_MAT + .word ANI_ZEROVELS + WL 3,Y3CP3B+FR5 + WL 3,Y3CP3B+FR6 + WL 3,Y3CP3B+FR7 + WL 3,Y3CP3B+FR8 + WL 3,Y3RL1A+FR1 + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#***************************************************************************** +* +* Head slams into mat +;From head slam - repeated head slam + + SUBR yok_break_face2_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 2,Y3KF3B+FR1 ;Face down + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,80000h + WL 3,Y3KF3B+FR2 ;Face down + WL 3,Y3KF3B+FR3 ;Face down + WL 3,Y3KF3B+FR4 ;Face down + WL 3,Y3KF3B+FR5 ;Face down + WL 3,Y3KF3B+FR6 ;Face down + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL 3,Y3KF3B+FR1 ;Face down + WL ANI_CHANGEANIM,yok_faceup_getup_anim + + SUBR yok_break_face3_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_ZEROVELS + + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL 3,Y3MS3Z+FR4 + WL ANI_SET_YVEL,078000h + WL 100,Y3MS3Z+FR4 + .word ANI_WAITHITGND + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + + + +* Head slams into mat +;From head slam + + SUBR yok_break_face_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_ZEROVELS + + WL 2,Y3KF3B+FR1 ;Face down + .word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off + WL ANI_SET_YVEL,40000h + WL 1,Y3KF3B+FR1 ;Face down + WL 3,Y3KF3B+FR2 ;Face down + WL 3,Y3KF3B+FR3 ;Face down + WL 3,Y3KF3B+FR4 ;Face down + WL 3,Y3KF3B+FR5 ;Face down + WL 3,Y3KF3B+FR6 ;Face down + .word ANI_WAITHITGND + WL ANI_CODE,SMALL_BOUNCE + .word ANI_ZEROVELS + WL 3,Y3KF3B+FR2 ;Face down + WL 3,Y3KF3B+FR3 ;Face down + WL 3,Y3KF3B+FR4 ;Face down + WL 3,Y3KF3B+FR5 ;Face down + + .word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him! + WL 3,Y3KF3B+FR6 ;Face down + .word ANI_WAITROLL + + WL ANI_CHANGEANIM,yok_faceup_getup_anim +; .word ANI_END + + +#***************************************************************************** +* +* ROLL OVER AND BREAK YER STINKIN' NECK +* + + SUBR yok_break_neck_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + + .word ANI_SETFACING ;ANI_XFLIP <- not primary anim + + WL 9,Y3FD3N+FR4 + + ;pick an action, roll or fall back + WWWL ANI_IFROPE,RC_EITHER,100,#fall_back + + ;plenty o' room. roll over + .word ANI_OFFSET,-5,0,0 + WL 4,Y3FD3N+FR5 + .word ANI_OFFSET,-6,0,0 + WL 4,Y3FD3N+FR6 + .word ANI_OFFSET,-6,0,0 + WL 4,Y3FD3N+FR7 + .word ANI_OFFSET,-19,0,0 + WL 4,Y3FD3N+FR8 + + ;hit. stay + WL ANI_CODE,SMALL_BOUNCE + .word ANI_OFFSET,-39,0,0 + WL 3,Y3RL1A+FR6 + + .word ANI_FACEDOWN + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#fall_back + ;sans. no room. fall back + .word ANI_OFFSET,-2,0,0 + WL 6,Y3FD3N+FR3 + .word ANI_OFFSET,-2,0,0 + WL 6,Y3FD3N+FR2 + .word ANI_OFFSET,-3,0,0 + WL 6,Y3FD3N+FR1 + .word ANI_OFFSET,-27,0,0 + .word ANI_XFLIP + WL 6,Y3RL1A+FR1 ;10 + + .word ANI_FACEDOWN + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + + +#***************************************************************************** + + SUBR yok_roll_frames + + .word 7 ;speed + .long 50000h ;z velocity + .long 10000h*9/255 ;inv multiply (0-255 -> 0-9) + + .long Y3RL1A+FR1 ;0 + .long Y3RL1A+FR2 ;1 + .long Y3RL1A+FR3 ;2 + .long Y3RL1A+FR4 ;3 + .long Y3RL1A+FR5 ;4 + .long Y3RL1A+FR6 ;5 + .long Y3RL1A+FR7 ;6 + .long Y3RL1A+FR8 ;7 + .long Y3RL1A+FR9 ;8 + .long Y3RL1A+FR10 ;9 + .long 0,0,0,0,0,0,0 + + +#***************************************************************************** +* +* END OF BACK BROKEN SEQ. + + SUBR yok_backbroken_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h +; .word ANI_DETACH + + .word ANI_GRAVITY_OFF + WL 5,Y3BR3Z+FR1 + .word ANI_GRAVITY_ON + + WL ANI_SET_YVEL,070000h + WLW ANI_SET_ZVEL,20000h,AM_ABS + + WL 25,Y3BR3Z+FR1 + +; WL 4,Y3BR3Z+FR2 + .word ANI_XFLIP + WL 4,Y3CP3B+FR5 + + .word ANI_WAITHITGND + .word ANI_ZEROVELS + .word ANI_BOUNCE,2 + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + WL ANI_CODE,HIT_THE_MAT + + .word ANI_DEBRIS,150,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + WL 4,Y3CP3B+FR5 + WL 4,Y3CP3B+FR6 + WL 4,Y3CP3B+FR7 + WL 4,Y3CP3B+FR8 + WL 4,Y3RL1A+FR1 + + .word ANI_SETPLYRMODE,MODE_ONGROUND + +;No stars around head here... + + .word ANI_DETACH + + WL 3,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim +; .word ANI_END + +#***************************************************************************** +* +* GENERIC BOUNCE + + SUBR yok_slamnobounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + WL 1,Y3CP3B+FR1 + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,Y3CP3B+FR6 + WL 10,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + + SUBR yok_slambounce_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,040000h + + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,150,1,0,8,0 ;%chance, tbl index, x,y,z off + + WL 1,Y3CP3B+FR1 + .ref ckzpos + WL ANI_CODE,ckzpos + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + + WL 2,Y3CP3B+FR6 + WL 10,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + + SUBR yok_slambounce2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + .word ANI_XFLIP + .word ANI_SETPLYRMODE,MODE_ONGROUND + + .word ANI_DEBRIS,150,1,0,8,0 ;%chance, tbl index, x,y,z off + + + WL 1,Y3FD3Z+FR7 + WL ANI_CODE,ckzpos + WL 3,Y3FD3Z+FR7 + .word ANI_WAITHITGND + .word ANI_ZEROVELS + WL ANI_CODE,HIT_THE_MAT + .word ANI_XFLIP + WL ANI_SET_YVEL,030000h + + WL 4,Y3CP3B+FR1 + WL 4,Y3CP3B+FR2 + WL 4,Y3CP3B+FR3 + WL 4,Y3CP3B+FR4 + + .word ANI_WAITHITGND + .word ANI_ZERO_XZVELS + WL ANI_CODE,HIT_THE_MAT + + WL 2,Y3CP3B+FR6 + WL 10,Y3RL1A+FR1 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#***************************************************************************** + + SUBR yok_breakneck2_anim + + .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP + .word ANI_ZEROVELS + .word ANI_SETSPEED,100h + + WLWWWW ANI_CREATEPROC,CREATE_SWEAT,0,SPRAYD_SWEAT,SWEAT_PER,0 + WL 4,Y3FD3A+FR2 + .word ANI_OFFSET,0,41,0 ;x,y,z + WL 4,Y3FD3A+FR3 + WL 4,Y3FD3A+FR4 + WL 4,Y3FD3A+FR5 + + .word ANI_WAITHITGND + + WL ANI_CODE,HIT_THE_MAT + .word ANI_SHAKEALL,2 + .word ANI_SHAKER,50 + .word ANI_BOUNCE,3 + .word ANI_FRICTION,2000h + + WL 4,Y3FD3A+FR6 + WL 3,Y3FD3N+FR1 + WL 3,Y3FD3N+FR2 + WL 3,Y3FD3N+FR3 + WL 3,Y3FD3N+FR4 + WL 3,Y3FD3N+FR5 + WL 3,Y3FD3N+FR6 + WL 3,Y3FD3N+FR7 + WL 3,Y3FD3N+FR8 + + .word ANI_ZERO_XZVELS + .word ANI_SHAKER,20 + + WL ANI_CODE,HIT_THE_MAT + WL 8,Y3RL1A+FR6 + + .word ANI_WAITROLL + WL ANI_CHANGEANIM,yok_faceup_getup_anim + +#***************************************************************************** + + SUBR yok_arm_broken_anim + + .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP + .word ANI_SETPLYRMODE,MODE_NORMAL + .word ANI_SETSPEED,100h + + WL ANI_SET_YVEL,40000h + WLW ANI_SET_XVEL,-38000h,AM_HIT_REL + + WL ANI_CODE,DO_SCREAM + .word ANI_WAITHITGND + .word ANI_ZEROVELS + + WL 3,Y4AH4A+FR3 + WL 3,Y4AH4A+FR4 + WL 3,Y4AH4A+FR5 + WL 3,Y4AH4A+FR6 + + WL 1,Y4ST4Y+FR4 + .ref am_I_dead + WL ANI_CODE,am_I_dead +;If I'm dead, goto fall back + WL ANI_IFNOTSTATUS,#nodead + + WL ANI_CHANGEANIM,yok_fall_back_anim +; .word ANI_END + +#nodead + .word ANI_FACEDOWN + .word ANI_SETMODE,MODE_NORMAL + .word ANI_END + +****************************************************************************** + + .end + \ No newline at end of file diff --git a/ZIP.BAT b/ZIP.BAT new file mode 100755 index 0000000..b71172e --- /dev/null +++ b/ZIP.BAT @@ -0,0 +1,51 @@ +@echo off +c: +cd \video\wwf\zips +cls + +echo. +echo. +choice /c:yn /tn,20 ZIP CODE +if errorlevel 2 goto art +move /Y code.zip back +pkzip code \video\wwf\*.* -x*.obj -x*.lst -x*.out -x*.tbl -x*.map -x*.zip -x*.glo -x*.rst -x*.tvs + +:art +echo. +echo. +choice /c:yn /tn,20 ZIP ART +if errorlevel 2 goto done + +move /Y bam.zip back +pkzip bam \video\wwf\img\bam_???.img bam.lod -x*.~mg + +move /Y dnk.zip back +pkzip dnk \video\wwf\img\dnk_???.img doink.lod -x*.~mg + +move /Y hrt.zip back +pkzip hrt \video\wwf\img\hrt_???.img hrt.lod -x*.~mg + +move /Y lex.zip back +pkzip lex \video\wwf\img\lex_???.img lex.lod -x*.~mg + +move /Y rzr.zip back +pkzip rzr \video\wwf\img\rzr_???.img razor.lod -x*.~mg + +move /Y shn.zip back +pkzip shn \video\wwf\img\shn_???.img shawn.lod -x*.~mg + +move /Y und.zip back +pkzip und \video\wwf\img\und_???.img taker.lod -x*.~mg + +move /Y yok.zip back +pkzip yok \video\wwf\img\yok_???.img yoko.lod -x*.~mg + +move /Y art.zip back +pkzip art \video\wwf\img\*.* -x???_???.img -x*.irw -x*.out -x*.zip -x*.rst -x*.~mg + +:done +echo. +echo done... + +cd \video\wwf + \ No newline at end of file